Compare commits

...

10 Commits

Author SHA1 Message Date
6ffd924333 update .gitignore 2026-03-08 19:13:09 +07:00
fa5849fb6f feat: 添加直播间跳转功能,优化观众页面数据展示 2026-03-07 20:12:22 +07:00
537d598906 feat: 添加应用版本检查功能,优化用户体验 2026-03-07 19:07:55 +07:00
a11cde5a96 feat: 添加URL高亮功能,支持yxdim协议解析 2026-03-07 18:20:01 +07:00
047ea3a77a feat: 添加结束活动和直播记录详情功能,优化直播页面跳转 2026-03-07 15:19:23 +07:00
67495ea864 fix:修改图标和其他 2026-03-07 02:02:22 +07:00
bobobobo
d874620a83 QAQ 2026-02-12 20:55:35 +08:00
bobobobo
2f1b592772 QAQ 2026-02-12 20:25:35 +08:00
cbb
2191f46317 搜索:判断某个成员是不是禁言 2026-02-12 17:51:42 +08:00
bobobobo
a040b56c74 修复已知问题 2026-02-11 21:53:35 +08:00
63 changed files with 2119 additions and 1344 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

2
.env
View File

@@ -1,6 +1,6 @@
# API
# VITE_SYSTEM_URL = "http://s8e84fdb.natappfree.cc"
VITE_SYSTEM_URL = "https://dev.cqjcteach.cn/prod-api"
VITE_SYSTEM_URL = "https://dev.yxdim.com"
# 第三方客户 channelId
VITE_CHANNEL_ID = "7b81ec142eca42baa045820793b821bb"

View File

@@ -3,17 +3,28 @@
"configurations" : [
{
"customPlaygroundType" : "device",
"openVueDevtools" : false,
"playground" : "standard",
"type" : "uni-app:app-ios"
},
{
"customPlaygroundType" : "local",
"openVueDevtools" : false,
"playground" : "custom",
"type" : "uni-app:app-android"
},
{
"openVueDevtools" : true,
"type" : "uni-app:miniProgram"
},
{
"openVueDevtools" : true,
"type" : "uni-app:h5"
},
{
"customPlaygroundType" : "device",
"playground" : "custom",
"type" : "uni-app:app-ios_simulator"
}
]
}

259
App.vue
View File

@@ -1,136 +1,159 @@
<script setup>
// #ifdef APP-PLUS
import { setSdkLanguageFromSystem } from '@/uni_modules/tuikit-atomic-x/utils/setSdkLanguageFromSystem'
// import * as call from "@/uni_modules/RongCloud-CallWrapper/lib/index"
// #endif
// #ifdef H5
import * as RongIMLib from '@rongcloud/imlib-next';
import { installer as rtcInstaller } from '@rongcloud/plugin-rtc';
import { installer as callPlusInstaller } from '@rongcloud/plugin-call-plus';
// #endif
import { onLaunch, onShow, onHide } from '@dcloudio/uni-app'
import { reLaunch } from './utils/router'
import { useAuthUser } from './composables/useAuthUser'
import { useUserStore } from './stores/user'
import { TUIChatKit } from './TUIKit'
import { getIpBlack } from './api'
import {reasonDeal,errorDeal,imCode} from '@/utils/code.js'
import { navigateTo } from '@/utils/router'
// #ifdef APP-PLUS
import { setSdkLanguageFromSystem } from '@/uni_modules/tuikit-atomic-x/utils/setSdkLanguageFromSystem'
// import * as call from "@/uni_modules/RongCloud-CallWrapper/lib/index"
// #endif
// #ifdef H5
import * as RongIMLib from '@rongcloud/imlib-next'
import { installer as rtcInstaller } from '@rongcloud/plugin-rtc'
import { installer as callPlusInstaller } from '@rongcloud/plugin-call-plus'
// #endif
import { onLaunch, onShow, onHide } from '@dcloudio/uni-app'
import { reLaunch } from './utils/router'
import { useAuthUser } from './composables/useAuthUser'
import { useUserStore } from './stores/user'
import { TUIChatKit } from './TUIKit'
import { getIpBlack, getAppVersion } from './api'
import { reasonDeal, errorDeal, imCode } from '@/utils/code.js'
import { compareVersion } from '@/utils/util.js'
import { navigateTo } from '@/utils/router'
TUIChatKit.init()
TUIChatKit.init()
const { token, tencentUserSig } = useAuthUser()
const { loginTencentIM } = useUserStore()
/** 静默登录逻辑 */
const silentLogin = async (e) => {
if (token.value) {
loginTencentIM()
// reLaunch('/TUIKit/components/TUIConversation/index')
return
}
const { token, tencentUserSig } = useAuthUser()
const { loginTencentIM } = useUserStore()
/** 静默登录逻辑 */
const silentLogin = async e => {
if (token.value) {
loginTencentIM()
// reLaunch('/TUIKit/components/TUIConversation/index')
return
}
console.log(tencentUserSig, '=====222==')
if (e?.query?.invitationCode) {
reLaunch('/pages/login/phone-register/phone-register', {
invitationCode: e.query.invitationCode
})
} else {
// 没有token去登录页
reLaunch('/pages/login/login')
}
}
console.log(tencentUserSig, '=====222==')
if (e?.query?.invitationCode) {
reLaunch('/pages/login/phone-register/phone-register', {
invitationCode: e.query.invitationCode
})
} else {
// 没有token去登录页
reLaunch('/pages/login/login')
}
}
/** 初始化 H5 音视频通话 */
const iniCall = () => {
// IM 初始化
RongIMLib.init({
appkey: '<Your-Appkey>',
});
/** 初始化 H5 音视频通话 */
const iniCall = () => {
// IM 初始化
RongIMLib.init({
appkey: '<Your-Appkey>'
})
// RTC 初始化
const rtcClient = RongIMLib.installPlugin(rtcInstaller, {});
// RTC 初始化
const rtcClient = RongIMLib.installPlugin(rtcInstaller, {})
// CallPlus 初始化
const callPlusClient = RongIMLib.installPlugin(callPlusInstaller, {
rtcClient
});
// CallPlus 初始化
const callPlusClient = RongIMLib.installPlugin(callPlusInstaller, {
rtcClient
})
console.log('====1111111111=====', callPlusClient)
}
console.log('====1111111111=====', callPlusClient)
}
onLaunch(e => {
// #ifdef APP-PLUS
plus.runtime.getProperty(plus.runtime.appid, function (widgetInfo) {
getAppVersion().then(res => {
console.log('应用版本信息', res.data)
const lastVersion = res.data.version
const currentVersion = widgetInfo.version
if (compareVersion(currentVersion, lastVersion) < 0) {
// 当前版本低于最新版本,提示用户更新
console.log('当前版本低于最新版本,请更新应用')
const isForceUpdate = res.data.forceUpdate
const url = res.data.updateUrl
uni.showModal({
title: '更新提示',
content: res.data.updateMessage,
confirmText: '立即更新',
cancelText: '稍后再说',
showCancel: !isForceUpdate,
success: res => {
if (res.confirm) {
plus.runtime.openURL(url)
}
}
})
} else {
console.log('当前版本为最新版本')
}
})
})
// #endif
// return
console.log('App Launch111')
silentLogin(e)
onLaunch((e) => {
// return
console.log('App Launch111')
silentLogin(e)
// #ifdef APP-PLUS
setSdkLanguageFromSystem()
// onAllListeners()
// #endif
// #ifdef APP-PLUS
setSdkLanguageFromSystem()
// onAllListeners()
// #endif
// #ifdef H5
iniCall()
// #endif
})
// #ifdef H5
iniCall()
// #endif
onShow(() => {
console.log('App Show222')
})
})
onHide(async () => {
if (token.value) {
const show = await getIpBlack(false)
console.log(show.data.data, '======')
}
// #ifdef APP-PLUS
removeAllListeners()
// #endif
console.log('App Hide333')
})
onShow(() => {
console.log('App Show222')
})
onHide(async () => {
if (token.value) {
const show = await getIpBlack(false)
console.log(show.data.data, '======')
}
// #ifdef APP-PLUS
removeAllListeners()
// #endif
console.log('App Hide333')
})
function removeAllListeners(){
call.unInit();
//移除监听-接收到通话呼入
call.removeCallReceivedListener();
// 移除监听-开始呼叫通话的回调
call.removeCallOutgoingListener();
// 移除监听-通话已接通
call.removeCallReceivedListener();
// 移除监听-通话已结束
call.removeCallDisconnectedListener();
// 移除监听-对端用户正在振铃
call.removeRemoteUserRingingListener();
// 移除监听-对端用户加入了通话
call.removeRemoteUserJoinedListener();
// 移除监听-有用户被邀请加入通话
call.removeRemoteUserInvited();
// 移除监听-对端用户挂断
call.removeRemoteUserLeftListener();
// 移除监听-对端用户切换了媒体类型
call.removeRemoteUserMediaTypeChangedListener();
// 移除监听-通话出现错误的回调
call.removeErrorListener();
}
function removeAllListeners() {
call.unInit()
//移除监听-接收到通话呼入
call.removeCallReceivedListener()
// 移除监听-开始呼叫通话的回调
call.removeCallOutgoingListener()
// 移除监听-通话已接通
call.removeCallReceivedListener()
// 移除监听-通话已结束
call.removeCallDisconnectedListener()
// 移除监听-对端用户正在振铃
call.removeRemoteUserRingingListener()
// 移除监听-对端用户加入了通话
call.removeRemoteUserJoinedListener()
// 移除监听-有用户被邀请加入通话
call.removeRemoteUserInvited()
// 移除监听-对端用户挂断
call.removeRemoteUserLeftListener()
// 移除监听-对端用户切换了媒体类型
call.removeRemoteUserMediaTypeChangedListener()
// 移除监听-通话出现错误的回调
call.removeErrorListener()
}
</script>
<style lang="scss">
/*每个页面公共css */
@import './styles/global.scss';
/*每个页面公共css */
@import './styles/global.scss';
/* common css for page */
// uni-page-body,
// html,
// body,
// page {
// width: 100% !important;
// height: 100% !important;
// overflow: hidden;
// }
</style>
/* common css for page */
// uni-page-body,
// html,
// body,
// page {
// width: 100% !important;
// height: 100% !important;
// overflow: hidden;
// }
</style>

View File

@@ -17,6 +17,9 @@ unaipp多端im+会议+积分商城
<!-- show-loading-more-no-more-view 去除没有更多 -->
### UI 设计图地址
```https://lanhuapp.com/web/#/item/project/stage?pid=c8ab83e4-8e48-4e5b-87cc-620f9ce8512b&image_id=4236317e-0912-490c-91e1-6c816e7396af&tid=8050e376-3e33-43e8-bfdc-51ddb2c371b1```
### TUILiveKit 文档地址
```https://trtc.io/zh/document/60034?platform=ios&product=live```

View File

@@ -73,6 +73,7 @@
]"
:enableAt="featureConfig.InputMention"
:isMuted="false"
:groupID="groupID"
:muteText="TUITranslateService.t('TUIChat.您已被管理员禁言')"
:placeholder="TUITranslateService.t('TUIChat.请输入消息')"
:inputToolbarDisplayType="inputToolbarDisplayType"
@@ -361,8 +362,6 @@
)
currentConversationID.value = conversationID
}
</script>
<style scoped lang="scss" src="./style/index.scss"></style>

View File

@@ -4,7 +4,7 @@
<MessageInputAudio
v-if="(isWeChat || isApp) && isRenderVoice"
:class="{
'message-input-wx-audio-open': displayType === 'audio',
'message-input-wx-audio-open': displayType === 'audio'
}"
:isEnableAudio="displayType === 'audio'"
@changeDisplayType="changeDisplayType"
@@ -49,192 +49,260 @@
/>
</div>
<div>
<MessageQuote
:style="{minWidth: 0}"
:displayType="displayType"
/>
<MessageQuote :style="{ minWidth: 0 }" :displayType="displayType" />
</div>
</div>
</template>
<script setup lang="ts">
import TUIChatEngine, {
TUIStore,
StoreName,
IMessageModel,
IConversationModel,
} from '@tencentcloud/chat-uikit-engine-lite';
import { ref, watch, onMounted, onUnmounted } from '../../../adapter-vue';
import MessageInputEditor from './message-input-editor.vue';
import MessageInputAt from './message-input-at/index.vue';
import MessageInputAudio from './message-input-audio.vue';
import MessageQuote from './message-input-quote/index.vue';
import Icon from '../../common/Icon.vue';
import faceIcon from '../../../assets/icon/face-uni.png';
import moreIcon from '../../../assets/icon/more-uni.png';
import { isPC, isH5, isWeChat, isApp } from '../../../utils/env';
import { sendTyping } from '../utils/sendMessage';
import { ToolbarDisplayType, InputDisplayType } from '../../../interface';
import TUIChatConfig from '../config';
import TUIChatEngine, {
TUIStore,
StoreName,
IMessageModel,
IConversationModel,
TUIGroupService
} from '@tencentcloud/chat-uikit-engine-lite'
import {
ref,
watch,
onMounted,
onUnmounted
} from '../../../adapter-vue'
import MessageInputEditor from './message-input-editor.vue'
import MessageInputAt from './message-input-at/index.vue'
import MessageInputAudio from './message-input-audio.vue'
import MessageQuote from './message-input-quote/index.vue'
import Icon from '../../common/Icon.vue'
import faceIcon from '../../../assets/icon/face-uni.png'
import moreIcon from '../../../assets/icon/more-uni.png'
import { isPC, isH5, isWeChat, isApp } from '../../../utils/env'
import { sendTyping } from '../utils/sendMessage'
import {
ToolbarDisplayType,
InputDisplayType
} from '../../../interface'
import TUIChatConfig from '../config'
import { useAuthUser } from '../../../../composables/useAuthUser'
import { useUI } from '../../../../utils/use-ui'
import { getGroupBanList } from '../../../../api'
interface IProps {
placeholder: string;
isMuted?: boolean;
muteText?: string;
enableInput?: boolean;
enableAt?: boolean;
enableTyping?: boolean;
replyOrReference?: Record<string, any>;
inputToolbarDisplayType: ToolbarDisplayType;
}
interface IEmits {
(e: 'changeToolbarDisplayType', displayType: ToolbarDisplayType): void;
}
const emits = defineEmits<IEmits>();
const props = withDefaults(defineProps<IProps>(), {
placeholder: 'this is placeholder',
replyOrReference: () => ({}),
isMuted: true,
muteText: '',
enableInput: true,
enableAt: true,
enableTyping: true,
inputToolbarDisplayType: 'none',
});
const editor = ref();
const messageInputAtRef = ref();
const currentConversation = ref<IConversationModel>();
const isGroup = ref<boolean>(false);
const displayType = ref<InputDisplayType>('editor');
const featureConfig = TUIChatConfig.getFeatureConfig();
const isRenderVoice = ref<boolean>(featureConfig.InputVoice);
const isRenderEmojiPicker = ref<boolean>(featureConfig.InputEmoji || featureConfig.InputStickers);
const isRenderMore = ref<boolean>(featureConfig.InputImage || featureConfig.InputVideo || featureConfig.InputEvaluation || featureConfig.InputQuickReplies);
onMounted(() => {
TUIStore.watch(StoreName.CONV, {
currentConversation: onCurrentConversationUpdated,
});
TUIStore.watch(StoreName.CHAT, {
quoteMessage: onQuoteMessageUpdated,
});
});
onUnmounted(() => {
TUIStore.unwatch(StoreName.CONV, {
currentConversation: onCurrentConversationUpdated,
});
TUIStore.unwatch(StoreName.CHAT, {
quoteMessage: onQuoteMessageUpdated,
});
});
watch(() => props.inputToolbarDisplayType, (newVal: ToolbarDisplayType) => {
if (newVal !== 'none') {
changeDisplayType('editor');
interface IProps {
placeholder: string
groupID?: string
isMuted?: boolean
muteText?: string
enableInput?: boolean
enableAt?: boolean
enableTyping?: boolean
replyOrReference?: Record<string, any>
inputToolbarDisplayType: ToolbarDisplayType
}
});
function changeDisplayType(display: InputDisplayType) {
displayType.value = display;
if (display === 'audio') {
emits('changeToolbarDisplayType', 'none');
interface IEmits {
(e: 'changeToolbarDisplayType', displayType: ToolbarDisplayType): void
}
}
function changeToolbarDisplayType(displayType: ToolbarDisplayType) {
emits('changeToolbarDisplayType', displayType);
}
const { showDialog } = useUI()
const { tencentUserSig } = useAuthUser()
const emits = defineEmits<IEmits>()
const props = withDefaults(defineProps<IProps>(), {
placeholder: 'this is placeholder',
replyOrReference: () => ({}),
isMuted: true,
groupID: '',
muteText: '',
enableInput: true,
enableAt: true,
enableTyping: true,
inputToolbarDisplayType: 'none'
})
const onTyping = (inputContentEmpty: boolean, inputBlur: boolean) => {
sendTyping(inputContentEmpty, inputBlur);
};
const editor = ref()
const messageInputAtRef = ref()
const currentConversation = ref<IConversationModel>()
const isGroup = ref<boolean>(false)
const displayType = ref<InputDisplayType>('editor')
const featureConfig = TUIChatConfig.getFeatureConfig()
const isRenderVoice = ref<boolean>(featureConfig.InputVoice)
const isRenderEmojiPicker = ref<boolean>(
featureConfig.InputEmoji || featureConfig.InputStickers
)
const isRenderMore = ref<boolean>(
featureConfig.InputImage ||
featureConfig.InputVideo ||
featureConfig.InputEvaluation ||
featureConfig.InputQuickReplies
)
const onAt = (show: boolean) => {
messageInputAtRef?.value?.toggleAtList(show);
};
onMounted(() => {
TUIStore.watch(StoreName.CONV, {
currentConversation: onCurrentConversationUpdated
})
const onFocus = () => {
emits('changeToolbarDisplayType', 'none');
};
TUIStore.watch(StoreName.CHAT, {
quoteMessage: onQuoteMessageUpdated
})
})
const insertEmoji = (emoji: any) => {
editor?.value?.addEmoji && editor?.value?.addEmoji(emoji);
};
onUnmounted(() => {
TUIStore.unwatch(StoreName.CONV, {
currentConversation: onCurrentConversationUpdated
})
const insertAt = (atInfo: any) => {
editor?.value?.insertAt && editor?.value?.insertAt(atInfo);
};
TUIStore.unwatch(StoreName.CHAT, {
quoteMessage: onQuoteMessageUpdated
})
})
const onAtListOpen = () => {
editor?.value?.blur && editor?.value?.blur();
};
watch(
() => props.inputToolbarDisplayType,
(newVal: ToolbarDisplayType) => {
if (newVal !== 'none') {
changeDisplayType('editor')
}
}
)
const reEdit = (content: any) => {
editor?.value?.resetEditor();
editor?.value?.setEditorContent(content);
};
function onCurrentConversationUpdated(conversation: IConversationModel) {
currentConversation.value = conversation;
isGroup.value = currentConversation.value?.type === TUIChatEngine.TYPES.CONV_GROUP;
}
function onQuoteMessageUpdated(options?: { message: IMessageModel; type: string }) {
// switch text input mode when there is a quote message
if (options?.message && options?.type === 'quote') {
changeDisplayType('editor');
function changeDisplayType(display: InputDisplayType) {
displayType.value = display
if (display === 'audio') {
emits('changeToolbarDisplayType', 'none')
}
}
}
defineExpose({
insertEmoji,
reEdit,
});
/** 禁言数据获取 */
const getMuteTime = async (displayType: ToolbarDisplayType) => {
TUIGroupService.getGroupProfile({
groupID: props.groupID
}).then(async res => {
// muteAllMembers
if (res.data.group.muteAllMembers) {
// 禁言了
showDialog('提示', '当前群组已全员禁言', false)
} else {
// emits('changeToolbarDisplayType', displayType)
// 判断某个成员是不是禁言
const list = await getGroupBanList(props.groupID)
const show = list.data.MutedAccountList.find(
(v: any) => v.Member_Account === tencentUserSig.value.userId
)
if (show?.Member_Account) {
showDialog('提示', '你被禁言了', false)
} else {
emits('changeToolbarDisplayType', displayType)
}
}
})
}
const changeToolbarDisplayType = async (
displayType: ToolbarDisplayType
) => {
if (props.groupID) {
const res = await TUIGroupService.getGroupMemberProfile({
groupID: props.groupID,
userIDList: [tencentUserSig.value.userId]
})
if (res.data.memberList[0].role === 'Member') {
getMuteTime(displayType)
} else {
emits('changeToolbarDisplayType', displayType)
}
return
}
emits('changeToolbarDisplayType', displayType)
}
const onTyping = (inputContentEmpty: boolean, inputBlur: boolean) => {
sendTyping(inputContentEmpty, inputBlur)
}
const onAt = (show: boolean) => {
messageInputAtRef?.value?.toggleAtList(show)
}
const onFocus = () => {
emits('changeToolbarDisplayType', 'none')
}
const insertEmoji = (emoji: any) => {
editor?.value?.addEmoji && editor?.value?.addEmoji(emoji)
}
const insertAt = (atInfo: any) => {
editor?.value?.insertAt && editor?.value?.insertAt(atInfo)
}
const onAtListOpen = () => {
editor?.value?.blur && editor?.value?.blur()
}
const reEdit = (content: any) => {
editor?.value?.resetEditor()
editor?.value?.setEditorContent(content)
}
function onCurrentConversationUpdated(
conversation: IConversationModel
) {
currentConversation.value = conversation
isGroup.value =
currentConversation.value?.type === TUIChatEngine.TYPES.CONV_GROUP
}
function onQuoteMessageUpdated(options?: {
message: IMessageModel
type: string
}) {
// switch text input mode when there is a quote message
if (options?.message && options?.type === 'quote') {
changeDisplayType('editor')
}
}
defineExpose({
insertEmoji,
reEdit
})
</script>
<style scoped lang="scss">
@import "../../../assets/styles/common";
@import '../../../assets/styles/common';
:not(not) {
display: flex;
flex-direction: column;
min-width: 0;
box-sizing: border-box;
}
.message-input {
position: relative;
display: flex;
flex-direction: column;
border: none;
overflow: hidden;
background: #ffffff;
&-h5 {
padding: 10px 10px 15px;
}
&-editor {
flex: 1;
:not(not) {
display: flex;
flex-direction: column;
min-width: 0;
box-sizing: border-box;
}
.icon {
margin-left: 3px;
.message-input {
position: relative;
display: flex;
flex-direction: column;
border: none;
overflow: hidden;
background: #ffffff;
&-h5 {
padding: 10px 10px 15px;
}
&-editor {
flex: 1;
display: flex;
}
.icon {
margin-left: 3px;
}
&-wx-audio-open {
flex: 1;
}
}
&-wx-audio-open {
flex: 1;
.audio-main-content-line {
display: flex;
flex-direction: row;
align-items: center;
}
}
.audio-main-content-line {
display: flex;
flex-direction: row;
align-items: center;
}
</style>

View File

@@ -47,6 +47,7 @@
:class="'message-li ' + item.flow"
>
<MessageTimestamp
v-if="!isExitGroup(item.getMessageContent()?.text)"
:currTime="item.time"
:prevTime="index > 0 ? messageList[index - 1].time : 0"
/>
@@ -94,6 +95,7 @@
v-if="item.type === TYPES.MSG_TEXT"
:content="item.getMessageContent()"
:messageItem="item"
:enableURLHighlight="true"
/>
<ProgressMessage
v-else-if="item.type === TYPES.MSG_IMAGE"
@@ -376,6 +378,17 @@
}
}
/** 更新用户群状态 */
const setUserAudioPlayed = async () => {
if (props.isGroup) {
const res = await TUIGroupService.getGroupMemberProfile({
groupID: props.groupID,
userIDList: [tencentUserSig.value.userId]
})
userType.value = res.data.memberList[0].role
}
}
onMounted(async () => {
// Retrieve the information about whether the audio has been played from localStorage
audioPlayedMapping.value =
@@ -401,13 +414,7 @@
isNotInGroup: boolean
*/
if (props.isGroup) {
const res = await TUIGroupService.getGroupMemberProfile({
groupID: props.groupID,
userIDList: [tencentUserSig.value.userId]
})
userType.value = res.data.memberList[0].role
}
setUserAudioPlayed()
})
onUnmounted(() => {
@@ -452,6 +459,7 @@
}
async function onMessageListUpdated(list: IMessageModel[]) {
setUserAudioPlayed()
observer?.disconnect()
messageList.value = list
.filter(message => !message.isDeleted)
@@ -914,6 +922,11 @@
audioPlayedMapping.value[messageID] = true
}
/** 是否包含【退出群组】文字 */
const isExitGroup = (str: string): boolean => {
return str?.includes('退出群组')
}
defineExpose({
oneByOneForwardMessage,
mergeForwardMessage,

View File

@@ -288,6 +288,7 @@
/** 点击跳转直播间 */
const onLive = () => {
// #ifdef APP-PLUS
uni.$liveID = goodsData.value.id
navigateTo('/pages/audience/index', {
liveID: goodsData.value.id
})

View File

@@ -56,21 +56,97 @@
url?: string
}
interface URLSegment {
type: string
text: string
url?: string
}
const props = withDefaults(defineProps<IProps>(), {
content: () => ({}),
messageItem: () => ({} as IMessageModel),
messageItem: () => ({}) as IMessageModel,
enableURLHighlight: false
})
const processedContent = ref<TextItem>([])
const processedContent = ref<TextItem[]>([])
const YXDIM_SCHEMA_REGEXP = /((https?|yxdim):\/\/[^\s]+)/g
function splitYxdimSchema(text: string): URLSegment[] {
if (!text) {
return []
}
const result: URLSegment[] = []
let lastIndex = 0
const matches = text.matchAll(YXDIM_SCHEMA_REGEXP)
for (const match of matches) {
const matchedText = match[0]
const startIndex = match.index ?? -1
if (startIndex < 0) {
continue
}
if (startIndex > lastIndex) {
result.push({
type: 'text',
text: text.slice(lastIndex, startIndex)
})
}
result.push({
type: 'url',
text: matchedText,
url: matchedText
})
lastIndex = startIndex + matchedText.length
}
if (!result.length) {
return [{ type: 'text', text }]
}
if (lastIndex < text.length) {
result.push({
type: 'text',
text: text.slice(lastIndex)
})
}
return result
}
function parseMessageTextWithLinks(text: string): URLSegment[] {
if (!parseTextAndValidateUrls) {
console.warn(
'parseTextAndValidateUrls not found. Please update @tencentcloud/universal-api to 2.3.7 or higher.'
)
return splitYxdimSchema(text)
}
const segments = parseTextAndValidateUrls(text)
if (!segments?.length) {
return splitYxdimSchema(text)
}
return segments
.map((segment: URLSegment) => {
if (segment.type !== 'text') {
return [segment]
}
return splitYxdimSchema(segment.text)
})
.flat()
}
watch(
() => props.messageItem,
(newValue: IMessageModel, oldValue: IMessageModel) => {
(newValue: IMessageModel, oldValue?: IMessageModel) => {
if (newValue?.ID === oldValue?.ID) {
return
}
console.log('messageItem=========', newValue)
if (props.enableURLHighlight) {
TUIReportService.reportFeature(208)
}
@@ -83,6 +159,7 @@
props.messageItem.ID
)?.getMessageContent()?.text
}
processedContent.value =
processedContent.value || props.content?.text
@@ -122,13 +199,8 @@
item.name === 'text' &&
item.text
) {
if (!parseTextAndValidateUrls) {
console.warn(
'parseTextAndValidateUrls not found. Please update @tencentcloud/universal-api to 2.3.7 or higher.'
)
return item
}
const segments = parseTextAndValidateUrls(item.text)
const segments = parseMessageTextWithLinks(item.text)
console.log('segments=========', segments)
if (segments.length) {
return segments.map(segment => ({
name: segment.type,
@@ -149,15 +221,31 @@
)
// Function to handle navigation
function navigateToUrl(url: string) {
function navigateToUrl(url?: string) {
if (url) {
if (/^https?:\/\//i.test(url)) {
TUIGlobal.open(url, '_blank')
return
}
if (/^yxdim:\/\//i.test(url)) {
if (isUniFrameWork) {
const appPath = url.replace(/^yxdim:\/\//i, '/')
TUIGlobal.navigateTo({
url: appPath
})
return
}
TUIGlobal.open(url, '_self')
return
}
if (isUniFrameWork) {
// Use UniApp navigation
TUIGlobal.navigateTo({
url: `/pages/views/webview?url=${url}` // Assuming you have a webview page to handle external URLs
url
})
} else {
// Use standard browser navigation
TUIGlobal.open(url, '_blank')
}
}

View File

@@ -1,10 +1,10 @@
<template>
<div class="message-tip">
<div v-if="!isExitGroup" class="message-tip">
<span>{{ tipContent }}</span>
</div>
</template>
<script lang="ts" setup>
<script setup>
import { computed } from '../../../../adapter-vue'
const props = defineProps({
content: {
@@ -19,6 +19,12 @@
}
return props.content?.text || props.content?.custom || ''
})
/** 是否包含【退出群组】文字 */
const isExitGroup = computed(() => {
const str = props?.content?.text
return str?.includes('退出群组')
})
</script>
<style lang="scss" scoped>
@import '../../../../assets/styles/common';

View File

@@ -58,7 +58,6 @@
import TUIChatConfig from '../../config'
import AiRobotManager from '../../aiRobotManager'
import { CHAT_MSG_CUSTOM_TYPE } from '../../../../constant'
// uni-app conditional compilation will not run the following code
// #ifndef APP || APP-PLUS || MP || H5
import CopyManager from '../../utils/copy'

View File

@@ -4,7 +4,8 @@ import TUIChatEngine, {
StoreName,
TUITranslateService,
IConversationModel,
SendMessageParams
SendMessageParams,
TUIGroupService
} from '@tencentcloud/chat-uikit-engine-lite'
import { Toast, TOAST_TYPE } from '../../common/Toast/index'
import { isEnabledMessageReadReceiptGlobal } from '../utils/utils'
@@ -13,6 +14,9 @@ import { enableSampleTaskStatus } from '../../../utils/enableSampleTaskStatus'
import OfflinePushInfoManager, {
IOfflinePushInfoCreateParams
} from '../offlinePushInfoManager/index'
import { useAuthUser } from '../../../../composables/useAuthUser'
import { useUI } from '../../../../utils/use-ui'
import { getGroupBanList } from '../../../../api'
export const sendMessageErrorCodeMap: Map<number, string> = new Map([
[3123, '文本包含本地审核拦截词'],
@@ -59,6 +63,8 @@ export const sendMessages = async (
messageList: ITipTapEditorContent[],
currentConversation: IConversationModel
) => {
const { tencentUserSig } = useAuthUser()
const { showDialog } = useUI()
// In case of messageJumping, the sent message is automatically cleared and returns to the bottom
if (TUIStore.getData(StoreName.CHAT, 'messageSource')) {
TUIStore.update(StoreName.CHAT, 'messageSource', undefined)
@@ -108,7 +114,51 @@ export const sendMessages = async (
} else {
try {
console.log('发送成功')
await TUIChatService.sendTextMessage(options, sendMessageOptions);
if (currentConversation?.groupProfile?.groupID) {
console.log(
'群发送==',
currentConversation?.groupProfile?.groupID
)
const res = await TUIGroupService.getGroupMemberProfile({
groupID: currentConversation?.groupProfile?.groupID,
userIDList: [tencentUserSig.value.userId]
})
if (res.data.memberList[0].role === 'Member') {
const g = await TUIGroupService.getGroupProfile({
groupID: currentConversation?.groupProfile?.groupID
})
if (g.data.group.muteAllMembers) {
showDialog('提示', '当前群组已全员禁言', false)
} else {
// 判断某个成员是不是禁言
const list = await getGroupBanList(
currentConversation?.groupProfile?.groupID
)
const show = list.data.MutedAccountList.find(
(v: any) =>
v.Member_Account === tencentUserSig.value.userId
)
if (show?.Member_Account) {
showDialog('提示', '你被禁言了', false)
} else {
await TUIChatService.sendTextMessage(
options,
sendMessageOptions
)
}
}
} else {
await TUIChatService.sendTextMessage(
options,
sendMessageOptions
)
}
return
}
await TUIChatService.sendTextMessage(
options,
sendMessageOptions
)
} catch (err) {
console.log('发送失败,对方不是你的好友')
}

View File

@@ -305,23 +305,31 @@
// }
getRandomGroup().then(async (id: any) => {
const res = await TUIGroupService.createGroup({
...options,
groupID: id.data,
avatar: groupAvatar.value
})
const { type } = res.data.group
if (type === TUIChatEngine.TYPES.GRP_AVCHATROOM) {
await TUIGroupService.joinGroup({
groupID: res.data.group.groupID,
applyMessage: ''
try {
const res = await TUIGroupService.createGroup({
...options,
groupID: id.data + '',
avatar: groupAvatar.value
})
const { type } = res.data.group
if (type === TUIChatEngine.TYPES.GRP_AVCHATROOM) {
await TUIGroupService.joinGroup({
groupID: res.data.group.groupID,
applyMessage: ''
})
}
handleCompleteCreate(res.data.group)
Toast({
message: TUITranslateService.t('TUIGroup.群组创建成功'),
type: TOAST_TYPE.SUCCESS
})
} catch (err) {
console.log('创建失败 = ', err)
Toast({
message: '创建失败',
type: TOAST_TYPE.ERROR
})
}
handleCompleteCreate(res.data.group)
Toast({
message: TUITranslateService.t('TUIGroup.群组创建成功'),
type: TOAST_TYPE.SUCCESS
})
})
} catch (err: any) {
if (err.code === 10025) {

View File

@@ -255,8 +255,10 @@
deleteImGroup,
quitImGroup
} from '../../../../api/tui-kit'
import { useAuthUser } from '../../../../composables/useAuthUser'
const { showLoading, hideLoading, showDialog } = useUI()
const { tencentUserSig } = useAuthUser()
const TUIGroupServer = Server.getInstance()
const TUIConstants = TUIGroupServer.constants
@@ -307,7 +309,7 @@
const delDialogShow = ref(false)
const groupMemberList = ref<IGroupMember[]>([])
const deletedUserList = ref([])
const currentGroup = ref<IGroupModel>()
const currentGroup = ref<any>()
const currentSelfRole = ref('')
const groupIDValue = ref<string>('')
const groupMemberOffset = ref<number | string>(0)
@@ -324,10 +326,20 @@
})
})
/** 更新用户群状态 */
const setUserAudioPlayed = async (group: any) => {
const res = await TUIGroupService.getGroupMemberProfile({
groupID: group.groupID,
userIDList: [tencentUserSig.value.userId]
})
currentGroup.value = group
currentGroup.value.selfInfo.role = res.data.memberList[0].role
}
TUIStore.watch(StoreName.GRP, {
currentGroup: (group: IGroupModel) => {
if (group) {
currentGroup.value = group
setUserAudioPlayed(group)
currentSelfRole.value = currentGroup.value?.selfInfo?.role
}
},
@@ -393,7 +405,11 @@
const isAdmin = computed(() => {
const userRole = currentGroup.value?.selfInfo?.role
return userRole === TUIChatEngine.TYPES.GRP_MBR_ROLE_OWNER
return [
TUIChatEngine.TYPES.GRP_MBR_ROLE_OWNER,
TUIChatEngine.TYPES.GRP_MBR_ROLE_ADMIN
].includes(userRole)
})
const isWorkGroup = computed(() => {
@@ -749,9 +765,8 @@
switch (transferType.value) {
case 'add':
try {
imMemberResponse = await TUIGroupService.getGroupMemberProfile(
options
)
imMemberResponse =
await TUIGroupService.getGroupMemberProfile(options)
transferList.value = transferList.value.filter(
(item: any) => item.userID !== imResponse.data[0]?.userID
)
@@ -777,9 +792,8 @@
break
case 'remove':
try {
imResponse = await TUIGroupService.getGroupMemberProfile(
options
)
imResponse =
await TUIGroupService.getGroupMemberProfile(options)
if (imResponse.data.memberList.length === 0) {
const message = TUITranslateService.t(
'TUIGroup.该用户不在群组内'

View File

@@ -1,7 +1,7 @@
<template>
<div class="admin-main">
<view class="admin-box">
<div class="admin-manage">
<div v-if="!isAdmin" class="admin-manage">
<div class="admin-manage-header">
{{ TUITranslateService.t(`TUIGroup.群管理员`) }}
</div>
@@ -112,11 +112,11 @@
</template>
<script lang="ts" setup>
import {
import TUIChatEngine, {
TUITranslateService,
IGroupModel
} from '@tencentcloud/chat-uikit-engine-lite'
import { watchEffect, ref } from '../../../adapter-vue'
import { watchEffect, ref, computed } from '../../../adapter-vue'
import Slider from '../../common/Slider/index.vue'
import Icon from '../../common/Icon.vue'
import plusSVG from '../../../assets/icon/plus.svg'
@@ -156,6 +156,13 @@
currentGroupAdmin.value = props.currentGroup
})
const isAdmin = computed(() => {
return (
props.currentGroup?.selfInfo?.role ===
TUIChatEngine.TYPES.GRP_MBR_ROLE_ADMIN
)
})
const emits = defineEmits([
'addAdmin',
'removeAdmin',
@@ -287,7 +294,7 @@
.admin-mute-all {
margin: 0 10px;
padding: 20rpx ;
padding: 20rpx;
border-bottom: 1px solid #e8e8e9;
display: flex;
flex-direction: row;

View File

@@ -187,3 +187,19 @@ export const banUser = data => {
method: 'post'
})
}
/** 群禁言列表 */
export const getGroupBanList = id => {
return http({
url: `/api/service/imGroup/muted/account/${id}`,
method: 'get'
})
}
/** 获取应用版本信息 */
export const getAppVersion = () => {
return uni.request({
url: 'https://s3.yxdim.com/app-version.json',
method: 'get'
})
}

View File

@@ -110,7 +110,9 @@ export const imAddLive = (data, method = 'post') => {
export const imDataStartLive = roomId => {
return http({
url: `/api/service/imLiveRoom/start/${roomId}`,
method: 'post'
method: 'post',
/** 错误是否返回上一页 */
isErrorBack: true
})
}
@@ -148,6 +150,14 @@ export const confirmLiveActivity = data => {
})
}
/** 结束活动 */
export const endLiveActivity = activityId => {
return http({
url: `/api/service/imLiveActivity/end/${activityId}`,
method: 'post'
})
}
/** 查询活动参与状态 */
export const getLiveActivityRecord = id => {
return http({
@@ -173,6 +183,14 @@ export const getLiveRecordDetail = id => {
})
}
/** 直播记录详情 */
export const getLIveRecordDetailByRoomId = roomId => {
return http({
url: `/api/service/imLiveRoom/room/${roomId}`,
method: 'get'
})
}
/** 生成直播ID */
export const getLiveId = () => {
return http({
@@ -180,3 +198,12 @@ export const getLiveId = () => {
method: 'get'
})
}
/** 直播间列表 */
export const getLiveRoomList = data => {
return http({
url: `/api/service/imLiveRoom/list/all`,
method: 'get',
data
})
}

7
app-version.json Normal file
View File

@@ -0,0 +1,7 @@
{
"version": "2.1.0",
"forceUpdate": true,
"updateMessage": "修复了一些问题并优化了性能",
"updateUrl": "https://store.yxdim.com/app/yxdIM",
"minSupportVersion": "0.0.1"
}

51
config.json Normal file
View File

@@ -0,0 +1,51 @@
{
//项目名字或项目绝对路径
"project": "/Users/seven/work/uniapp-im-shop",
//打包平台 默认值android 值有"android","ios" 如果要打多个逗号隔开打包平台
"platform": "android",
//是否使用自定义基座 默认值false true自定义基座 false自定义证书
"iscustom": false,
//打包方式是否为安心打包默认值false,true安心打包,false传统打包
"safemode": false,
//android打包参数
"android": {
//安卓包名
"packagename": "uni.app.UNID40A151",
//安卓打包类型 默认值0 0 使用自有证书 1 使用公共证书 2 使用老版证书 3 使用云端证书
"androidpacktype": "3",
//安卓使用自有证书自有打包证书参数
//安卓打包证书别名,自有证书打包填写的参数
"certalias": "",
//安卓打包证书文件路径,自有证书打包填写的参数
"certfile": "",
//安卓打包证书密码,自有证书打包填写的参数
"certpassword": "",
//安卓打包证书库密码HBuilderx4.41支持),自有证书打包填写的参数
"storePassword": "",
//安卓平台要打的渠道包 取值有"google","yyb","360","huawei","xiaomi","oppo","vivo",如果要打多个逗号隔开
"channels": ""
},
//ios打包参数
"ios": {
//ios appid
"bundle": "com.test.ios",
//ios打包支持的设备类型 默认值iPhone 值有"iPhone","iPad" 如果要打多个逗号隔开打包平台
"supporteddevice": "iPhone,iPad",
//iOS使用自定义证书打包的profile文件路径
"profile": "",
//iOS使用自定义证书打包的p12文件路径
"certfile": "",
//iOS使用自定义证书打包的证书密码
"certpassword": "123"
},
//是否混淆 true混淆 false关闭
"isconfusion": false,
//开屏广告 true打开 false关闭
"splashads": false,
//悬浮红包广告true打开 false关闭
"rpads": false,
//push广告 true打开 false关闭
"pushads": false,
//加入换量联盟 true加入 false不加入
"exchange": false
}

View File

@@ -1,9 +1,9 @@
{
"name" : "密谈IM",
"appid" : "__UNI__D40A151",
"description" : "",
"versionName" : "1.1.4",
"versionCode" : 113,
"name" : "益鑫达",
"appid" : "__UNI__44929DB",
"description" : "益鑫达",
"versionName" : "2.1.0",
"versionCode" : 120,
"transformPx" : false,
/* 5+App */
"app-plus" : {
@@ -57,7 +57,8 @@
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
],
"debuggable" : true
"debuggable" : true,
"schemes" : "yxdim"
},
/* ios */
"ios" : {
@@ -74,9 +75,9 @@
"splashscreen" : {
"androidStyle" : "default",
"android" : {
"hdpi" : "static/qidong.png",
"xhdpi" : "static/qidong.png",
"xxhdpi" : "static/qidong.png"
"hdpi" : "static/bootstrap.png",
"xhdpi" : "static/bootstrap.png",
"xxhdpi" : "static/bootstrap.png"
}
},
"icons" : {
@@ -111,36 +112,6 @@
}
}
}
},
"nativePlugins" : {
"RongCloud-Call" : {
"__plugin_info__" : {
"name" : "RCUniCall",
"description" : "融云实时音视频 SDK uni 原生插件",
"platforms" : "Android,iOS",
"url" : "https://ext.dcloud.net.cn/plugin?id=6372",
"android_package_name" : "uni.app.UNI9EFDC69WWCC",
"ios_bundle_id" : "",
"isCloud" : true,
"bought" : 1,
"pid" : "6372",
"parameters" : {}
}
},
"RongCloud-IM-V2" : {
"__plugin_info__" : {
"name" : "RCUniIMV2",
"description" : "融云即时通讯 SDK uni 原生插件V2",
"platforms" : "Android,iOS",
"url" : "https://ext.dcloud.net.cn/plugin?id=9227",
"android_package_name" : "uni.app.UNI9EFDC69WWCC",
"ios_bundle_id" : "",
"isCloud" : true,
"bought" : 1,
"pid" : "9227",
"parameters" : {}
}
}
}
},
"h5" : {
@@ -187,5 +158,6 @@
"enable" : false
},
"vueVersion" : "3",
"fallbackLocale" : "zh-Hans"
"fallbackLocale" : "zh-Hans",
"locale" : "zh-Hans"
}

284
package-lock.json generated
View File

@@ -60,6 +60,7 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@babel/core/-/core-7.29.0.tgz",
"integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/code-frame": "^7.29.0",
"@babel/generator": "^7.29.0",
@@ -391,7 +392,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@jridgewell/source-map/-/source-map-0.3.11.tgz",
"integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.5",
"@jridgewell/trace-mapping": "^0.3.25"
@@ -751,7 +751,8 @@
"version": "5.36.1",
"resolved": "https://registry.npmjs.org/@rongcloud/engine/-/engine-5.36.1.tgz",
"integrity": "sha512-BLRE0Koym4h+DGBN0B+9rmVIGNDRELt5NwfaVC+X6tyOJBhzRDvJiIWXzrlYB4GoRQHBF8thADuy8+vx5pTCFg==",
"license": "LGPL 2.1"
"license": "LGPL 2.1",
"peer": true
},
"node_modules/@rongcloud/imlib-next": {
"version": "5.36.1",
@@ -777,6 +778,7 @@
"resolved": "https://registry.npmjs.org/@rongcloud/plugin-rtc/-/plugin-rtc-5.36.0.tgz",
"integrity": "sha512-8tKKBdhNs4OXhu6ux7N+nqJqjXOhJriv4LZkmXDfth7RvF4UBhogx5bIEa1VpAj+3Cp0PamCEF6wvHbdPfgYIA==",
"license": "LGPL 2.1",
"peer": true,
"peerDependencies": {
"@rongcloud/engine": "~5.36.1"
}
@@ -821,6 +823,7 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@tencentcloud/chat-uikit-engine-lite/-/chat-uikit-engine-lite-1.0.4.tgz",
"integrity": "sha512-YfDuXDkUlz7V1RA6iAEO2PLBI/efz60TRwAVy/Vhlu7oqZOMlphra72J30N3n5WhxbsFfcfTShoqW3OwcatUQg==",
"license": "ISC",
"peer": true,
"dependencies": {
"@tencentcloud/lite-chat": "^1.6.3"
}
@@ -853,6 +856,7 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@vue/composition-api/-/composition-api-1.7.2.tgz",
"integrity": "sha512-M8jm9J/laYrYT02665HkZ5l2fWTK4dcVg3BsDHm/pfz+MjDYwX+9FUaZyGwEyXEDonQYRCo0H7aLgdklcIELjw==",
"license": "MIT",
"peer": true,
"peerDependencies": {
"vue": ">= 2.5 < 2.7"
}
@@ -904,14 +908,14 @@
"version": "1.6.8",
"resolved": "https://repo.huaweicloud.com/repository/npm/@tencentcloud/lite-chat/-/lite-chat-1.6.8.tgz",
"integrity": "sha512-oK1Qr1iA0vk8wqfFE9Nbmc2Ku+6CNZ6iFMFrG2qcvfOmtVS+xxuiUjPSWbBu2S7ig9hQgq5cV5DIOgXOyXF5EA==",
"license": "ISC"
"license": "ISC",
"peer": true
},
"node_modules/@tencentcloud/trtc-cloud-wx": {
"version": "1.0.8",
"resolved": "https://repo.huaweicloud.com/repository/npm/@tencentcloud/trtc-cloud-wx/-/trtc-cloud-wx-1.0.8.tgz",
"integrity": "sha512-72TYYt6XNTr9Y401qw23YODfhLC9AGniNqb9ACFTVGDtInApHn139kGhKeudgTYEdTObkG1JjUcdkfcknHGhSA==",
"license": "ISC",
"peer": true,
"dependencies": {
"eventemitter3": "^5.0.0",
"trtc-wx-sdk": "^1.1.14"
@@ -921,15 +925,13 @@
"version": "5.0.4",
"resolved": "https://repo.huaweicloud.com/repository/npm/eventemitter3/-/eventemitter3-5.0.4.tgz",
"integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/@tencentcloud/trtc-component-wx": {
"version": "1.0.6",
"resolved": "https://repo.huaweicloud.com/repository/npm/@tencentcloud/trtc-component-wx/-/trtc-component-wx-1.0.6.tgz",
"integrity": "sha512-3m2ZU3/upx3IJAhSPdElJ2AF1D7L/0JOXUpanYJbrtHlwTWDQ6BOc+p6HgsepE67ltpR7UcYF/BcVHEfpcObkA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@tencentcloud/trtc-cloud-wx": "^1.0.7"
}
@@ -939,6 +941,7 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@tencentcloud/tui-core-lite/-/tui-core-lite-1.0.0.tgz",
"integrity": "sha512-+nmOWQ415Kz6aYJDv4EIdnaLk69SPWscZqmIhQp9GhNGFVq4/u+gC/sWvGHEOICJncFjM4dUxBg9EFfzD78rGQ==",
"license": "ISC",
"peer": true,
"dependencies": {
"@tencentcloud/lite-chat": "^1.5.0"
}
@@ -948,6 +951,7 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@tencentcloud/tuiroom-engine-js/-/tuiroom-engine-js-3.6.2.tgz",
"integrity": "sha512-N2481ZWxh7mxYCOjVufRgoGjNrgsq6Or8Src5Z1zmMILFeO3LVQlNwjD9yw4Suc4f6jzm0qcmzBrXorZ0teY1A==",
"license": "ISC",
"peer": true,
"dependencies": {
"@tencentcloud/lite-chat": "^1.6.4",
"rtc-detect": "^0.0.5",
@@ -1000,6 +1004,7 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@tiptap/core/-/core-2.27.2.tgz",
"integrity": "sha512-ABL1N6eoxzDzC1bYvkMbvyexHacszsKdVPYqhl5GwHLOvpZcv9VE9QaKwDILTyz5voCA0lGcAAXZp+qnXOk5lQ==",
"license": "MIT",
"peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1341,6 +1346,7 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@tiptap/pm/-/pm-2.27.2.tgz",
"integrity": "sha512-kaEg7BfiJPDQMKbjVIzEPO3wlcA+pZb2tlcK9gPrdDnEFaec2QTF1sXz2ak2IIb2curvnIrQ4yrfHgLlVA72wA==",
"license": "MIT",
"peer": true,
"dependencies": {
"prosemirror-changeset": "^2.3.0",
"prosemirror-collab": "^1.3.1",
@@ -1404,6 +1410,7 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@tiptap/suggestion/-/suggestion-2.27.2.tgz",
"integrity": "sha512-dQyvCIg0hcAVeh4fCIVCxogvbp+bF+GpbUb8sNlgnGrmHXnapGxzkvrlHnvneXZxLk/j7CxmBPKJNnm4Pbx4zw==",
"license": "MIT",
"peer": true,
"funding": {
"type": "github",
"url": "https://github.com/sponsors/ueberdosis"
@@ -1433,36 +1440,33 @@
}
},
"node_modules/@trtc/call-engine-lite-js": {
"version": "3.5.4",
"resolved": "https://repo.huaweicloud.com/repository/npm/@trtc/call-engine-lite-js/-/call-engine-lite-js-3.5.4.tgz",
"integrity": "sha512-7CQOCKBEkmt0vgJnMBQtQIWxFVRg3hbukKjcQDVSrcoua2Igp9gwMpJ7N1+8+Qs3djnSS0w2DZfA40QjAJl+Rw==",
"version": "3.5.7",
"resolved": "https://registry.npmjs.org/@trtc/call-engine-lite-js/-/call-engine-lite-js-3.5.7.tgz",
"integrity": "sha512-7K2tsHl2j68LWyoYVRb7/lvpQMypVJ6NVh2M0yt28PAlG4f+i7ZJ4WSyV1wpv0i87JjYXXTo44Cq5DfSBQQPwg==",
"license": "ISC",
"peer": true,
"dependencies": {
"@tencentcloud/lite-chat": "^1.6.3",
"core-js": "^3.8.3",
"eventemitter3": "^4.0.7",
"rtc-detect": "^0.0.5",
"trtc-cloud-js-sdk": "2.10.11-beta.12",
"trtc-cloud-js-sdk": "2.10.15",
"tuikit-logger": "latest"
}
},
"node_modules/@trtc/call-engine-lite-js/node_modules/trtc-cloud-js-sdk": {
"version": "2.10.11-beta.12",
"resolved": "https://repo.huaweicloud.com/repository/npm/trtc-cloud-js-sdk/-/trtc-cloud-js-sdk-2.10.11-beta.12.tgz",
"integrity": "sha512-NdRY/4iMKIoGFN7oihA7f4x8O6CTJDZNigRb5EXTZUxN4APurkn+BPeMR5x6mwlmjfHE5bw3rqAHxif07mjB+Q==",
"version": "2.10.15",
"resolved": "https://registry.npmjs.org/trtc-cloud-js-sdk/-/trtc-cloud-js-sdk-2.10.15.tgz",
"integrity": "sha512-qjdLNnRFeRfrjr6MZVFLX+twbEc1JP8Nc//7tHdSmjwntX6qd3O12XGFMeLJbMUxZaFvODeUnSU/faqwTu7piA==",
"license": "ISC",
"peer": true,
"dependencies": {
"trtc-sdk-v5": "5.15.2"
"trtc-sdk-v5": "5.15.3-beta.12"
}
},
"node_modules/@trtc/call-engine-lite-js/node_modules/trtc-sdk-v5": {
"version": "5.15.2",
"resolved": "https://repo.huaweicloud.com/repository/npm/trtc-sdk-v5/-/trtc-sdk-v5-5.15.2.tgz",
"integrity": "sha512-wQDwyd/MJ51rNjNdvWvnroqonPOdFPxK7Op13379OIxKUZgC472S8CFK+NZBsQm37ED8gYC+MjvOVJHNvqqEvw==",
"version": "5.15.3-beta.12",
"resolved": "https://registry.npmjs.org/trtc-sdk-v5/-/trtc-sdk-v5-5.15.3-beta.12.tgz",
"integrity": "sha512-CE3mQTj7gB4RIiSGFT5x7GNfT1KP5VVu3C5A8V4Op4nxa4AzCtS4Y6TMuIHH8yGccuzcNLUXYOzov3wxdzvaFw==",
"license": "ISC",
"peer": true,
"dependencies": {
"webrtc-adapter": "^8.2.3"
}
@@ -1472,7 +1476,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@trtc/call-engine-lite-wx/-/call-engine-lite-wx-3.4.12.tgz",
"integrity": "sha512-owVbONKvILkncdyUpDWuhMqpIjYxNML0qxY988Sli933wZZgK1dzee2A8uW7jpFzfXQeUWYO5wiEQzS8jURcwQ==",
"license": "ISC",
"peer": true,
"dependencies": {
"@tencentcloud/lite-chat": "^1.5.0",
"@tencentcloud/trtc-component-wx": "^1.0.5",
@@ -1492,15 +1495,14 @@
}
},
"node_modules/@trtc/calls-uikit-vue2.6": {
"version": "4.4.2",
"resolved": "https://repo.huaweicloud.com/repository/npm/@trtc/calls-uikit-vue2.6/-/calls-uikit-vue2.6-4.4.2.tgz",
"integrity": "sha512-KDHFXQVFMAPCpb0aRrOHAh3LPA4tLlr/LhTMDxyUJbJN6CGhYRIlbDyQ0BHl/z7yHYNkTwXaHkahpCJCmnaPNQ==",
"version": "4.4.5",
"resolved": "https://registry.npmjs.org/@trtc/calls-uikit-vue2.6/-/calls-uikit-vue2.6-4.4.5.tgz",
"integrity": "sha512-Gt8P9ntmwowWNngcVvgRuIeORHVI3WQnvvDuSx78h3tPaEaVoYULoP2szlGoXZ07C9ZVV5kPVfWwajPvbYNL/Q==",
"license": "ISC",
"peer": true,
"dependencies": {
"@tencentcloud/lite-chat": "^1.6.3",
"@tencentcloud/tui-core-lite": "1.0.0",
"@trtc/call-engine-lite-js": "~3.5.0",
"@trtc/call-engine-lite-js": "~3.5.5",
"@trtc/call-engine-lite-wx": "~3.4.7",
"@vue/composition-api": "^1.7.2"
}
@@ -1510,7 +1512,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@vue/composition-api/-/composition-api-1.7.2.tgz",
"integrity": "sha512-M8jm9J/laYrYT02665HkZ5l2fWTK4dcVg3BsDHm/pfz+MjDYwX+9FUaZyGwEyXEDonQYRCo0H7aLgdklcIELjw==",
"license": "MIT",
"peer": true,
"peerDependencies": {
"vue": ">= 2.5 < 2.7"
}
@@ -1541,7 +1542,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@types/eslint/-/eslint-9.6.1.tgz",
"integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
"license": "MIT",
"peer": true,
"dependencies": {
"@types/estree": "*",
"@types/json-schema": "*"
@@ -1552,7 +1552,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
"integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
"license": "MIT",
"peer": true,
"dependencies": {
"@types/eslint": "*",
"@types/estree": "*"
@@ -1597,7 +1596,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@types/node/-/node-25.2.0.tgz",
"integrity": "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==",
"license": "MIT",
"peer": true,
"dependencies": {
"undici-types": "~7.16.0"
}
@@ -1648,7 +1646,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-sfc/-/compiler-sfc-3.5.27.tgz",
"integrity": "sha512-sHZu9QyDPeDmN/MRoshhggVOWE5WlGFStKFwu8G52swATgSny27hJRWteKDSUUzUH+wp+bmeNbhJnEAel/auUQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/parser": "^7.28.5",
"@vue/compiler-core": "3.5.27",
@@ -1666,7 +1663,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@vue/compiler-ssr/-/compiler-ssr-3.5.27.tgz",
"integrity": "sha512-Sj7h+JHt512fV1cTxKlYhg7qxBvack+BGncSpH+8vnN+KN95iPIcqB5rsbblX40XorP+ilO7VIKlkuu3Xq2vjw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.5.27",
"@vue/shared": "3.5.27"
@@ -1677,7 +1673,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@vue/reactivity/-/reactivity-3.5.27.tgz",
"integrity": "sha512-vvorxn2KXfJ0nBEnj4GYshSgsyMNFnIQah/wczXlsNXt+ijhugmW+PpJ2cNPe4V6jpnBcs0MhCODKllWG+nvoQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/shared": "3.5.27"
}
@@ -1718,7 +1713,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@vue/runtime-core/-/runtime-core-3.5.27.tgz",
"integrity": "sha512-fxVuX/fzgzeMPn/CLQecWeDIFNt3gQVhxM0rW02Tvp/YmZfXQgcTXlakq7IMutuZ/+Ogbn+K0oct9J3JZfyk3A==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/reactivity": "3.5.27",
"@vue/shared": "3.5.27"
@@ -1742,7 +1736,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@vue/server-renderer/-/server-renderer-3.5.27.tgz",
"integrity": "sha512-qOz/5thjeP1vAFc4+BY3Nr6wxyLhpeQgAE/8dDtKo6a6xdk+L4W46HDZgNmLOBUDEkFXV3G7pRiUqxjX0/2zWA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@vue/compiler-ssr": "3.5.27",
"@vue/shared": "3.5.27"
@@ -1800,7 +1793,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@webassemblyjs/ast/-/ast-1.14.1.tgz",
"integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/helper-numbers": "1.13.2",
"@webassemblyjs/helper-wasm-bytecode": "1.13.2"
@@ -1810,29 +1802,25 @@
"version": "1.13.2",
"resolved": "https://repo.huaweicloud.com/repository/npm/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz",
"integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-api-error": {
"version": "1.13.2",
"resolved": "https://repo.huaweicloud.com/repository/npm/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz",
"integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-buffer": {
"version": "1.14.1",
"resolved": "https://repo.huaweicloud.com/repository/npm/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz",
"integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-numbers": {
"version": "1.13.2",
"resolved": "https://repo.huaweicloud.com/repository/npm/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz",
"integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/floating-point-hex-parser": "1.13.2",
"@webassemblyjs/helper-api-error": "1.13.2",
@@ -1843,15 +1831,13 @@
"version": "1.13.2",
"resolved": "https://repo.huaweicloud.com/repository/npm/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz",
"integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/@webassemblyjs/helper-wasm-section": {
"version": "1.14.1",
"resolved": "https://repo.huaweicloud.com/repository/npm/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz",
"integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-buffer": "1.14.1",
@@ -1864,7 +1850,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz",
"integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@xtuc/ieee754": "^1.2.0"
}
@@ -1874,7 +1859,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@webassemblyjs/leb128/-/leb128-1.13.2.tgz",
"integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"@xtuc/long": "4.2.2"
}
@@ -1883,15 +1867,13 @@
"version": "1.13.2",
"resolved": "https://repo.huaweicloud.com/repository/npm/@webassemblyjs/utf8/-/utf8-1.13.2.tgz",
"integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/@webassemblyjs/wasm-edit": {
"version": "1.14.1",
"resolved": "https://repo.huaweicloud.com/repository/npm/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz",
"integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-buffer": "1.14.1",
@@ -1908,7 +1890,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz",
"integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==",
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-wasm-bytecode": "1.13.2",
@@ -1922,7 +1903,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz",
"integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-buffer": "1.14.1",
@@ -1935,7 +1915,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz",
"integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@webassemblyjs/helper-api-error": "1.13.2",
@@ -1950,7 +1929,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz",
"integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.14.1",
"@xtuc/long": "4.2.2"
@@ -1960,21 +1938,20 @@
"version": "1.2.0",
"resolved": "https://repo.huaweicloud.com/repository/npm/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
"integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
"license": "BSD-3-Clause",
"peer": true
"license": "BSD-3-Clause"
},
"node_modules/@xtuc/long": {
"version": "4.2.2",
"resolved": "https://repo.huaweicloud.com/repository/npm/@xtuc/long/-/long-4.2.2.tgz",
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"license": "Apache-2.0",
"peer": true
"license": "Apache-2.0"
},
"node_modules/acorn": {
"version": "8.15.0",
"resolved": "https://repo.huaweicloud.com/repository/npm/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT",
"peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -1987,7 +1964,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz",
"integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=10.13.0"
},
@@ -1999,14 +1975,14 @@
"version": "1.39.2",
"resolved": "https://repo.huaweicloud.com/repository/npm/aegis-mp-sdk/-/aegis-mp-sdk-1.39.2.tgz",
"integrity": "sha512-ca1X0Bb8x66adDpYlPddKzccgIPZR2Uyvj+shUfzs6s7MAQCJdhNCpCfZXECPCXRX/3rDOe68OlaDeddG9el0Q==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://repo.huaweicloud.com/repository/npm/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"version": "6.14.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
"integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
"license": "MIT",
"peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -2023,7 +1999,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/ajv-formats/-/ajv-formats-2.1.1.tgz",
"integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
"license": "MIT",
"peer": true,
"dependencies": {
"ajv": "^8.0.0"
},
@@ -2037,11 +2012,10 @@
}
},
"node_modules/ajv-formats/node_modules/ajv": {
"version": "8.17.1",
"resolved": "https://repo.huaweicloud.com/repository/npm/ajv/-/ajv-8.17.1.tgz",
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"version": "8.18.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
"integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"license": "MIT",
"peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -2057,8 +2031,7 @@
"version": "1.0.0",
"resolved": "https://repo.huaweicloud.com/repository/npm/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/ajv-keywords": {
"version": "3.5.2",
@@ -2094,13 +2067,13 @@
"license": "MIT"
},
"node_modules/axios": {
"version": "1.13.4",
"resolved": "https://repo.huaweicloud.com/repository/npm/axios/-/axios-1.13.4.tgz",
"integrity": "sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg==",
"version": "1.13.6",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz",
"integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.4",
"follow-redirects": "^1.15.11",
"form-data": "^4.0.5",
"proxy-from-env": "^1.1.0"
}
},
@@ -2165,6 +2138,7 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.9.0",
"caniuse-lite": "^1.0.30001759",
@@ -2183,8 +2157,7 @@
"version": "1.1.2",
"resolved": "https://repo.huaweicloud.com/repository/npm/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/call-bind-apply-helpers": {
"version": "1.0.2",
@@ -2248,7 +2221,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz",
"integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=6.0"
}
@@ -2289,8 +2261,7 @@
"version": "2.20.3",
"resolved": "https://repo.huaweicloud.com/repository/npm/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/convert-source-map": {
"version": "2.0.0",
@@ -2304,7 +2275,6 @@
"integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==",
"hasInstallScript": true,
"license": "MIT",
"peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
@@ -2329,8 +2299,7 @@
"version": "3.2.3",
"resolved": "https://repo.huaweicloud.com/repository/npm/csstype/-/csstype-3.2.3.tgz",
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/date-fns": {
"version": "4.1.0",
@@ -2438,7 +2407,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz",
"integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==",
"license": "MIT",
"peer": true,
"dependencies": {
"graceful-fs": "^4.2.4",
"tapable": "^2.2.0"
@@ -2481,8 +2449,7 @@
"version": "2.0.0",
"resolved": "https://repo.huaweicloud.com/repository/npm/es-module-lexer/-/es-module-lexer-2.0.0.tgz",
"integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/es-object-atoms": {
"version": "1.1.1",
@@ -2546,7 +2513,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/eslint-scope/-/eslint-scope-5.1.1.tgz",
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"license": "BSD-2-Clause",
"peer": true,
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
@@ -2560,7 +2526,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/esrecurse/-/esrecurse-4.3.0.tgz",
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"license": "BSD-2-Clause",
"peer": true,
"dependencies": {
"estraverse": "^5.2.0"
},
@@ -2573,7 +2538,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"license": "BSD-2-Clause",
"peer": true,
"engines": {
"node": ">=4.0"
}
@@ -2583,7 +2547,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/estraverse/-/estraverse-4.3.0.tgz",
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"license": "BSD-2-Clause",
"peer": true,
"engines": {
"node": ">=4.0"
}
@@ -2605,7 +2568,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/events/-/events-3.3.0.tgz",
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=0.8.x"
}
@@ -2636,8 +2598,7 @@
"url": "https://opencollective.com/fastify"
}
],
"license": "BSD-3-Clause",
"peer": true
"license": "BSD-3-Clause"
},
"node_modules/follow-redirects": {
"version": "1.15.11",
@@ -2734,8 +2695,7 @@
"version": "0.4.1",
"resolved": "https://repo.huaweicloud.com/repository/npm/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"license": "BSD-2-Clause",
"peer": true
"license": "BSD-2-Clause"
},
"node_modules/global": {
"version": "4.3.2",
@@ -2763,15 +2723,13 @@
"version": "4.2.11",
"resolved": "https://repo.huaweicloud.com/repository/npm/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"license": "ISC",
"peer": true
"license": "ISC"
},
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://repo.huaweicloud.com/repository/npm/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=8"
}
@@ -2910,7 +2868,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/jest-worker/-/jest-worker-27.5.1.tgz",
"integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
"license": "MIT",
"peer": true,
"dependencies": {
"@types/node": "*",
"merge-stream": "^2.0.0",
@@ -2948,8 +2905,7 @@
"version": "2.3.1",
"resolved": "https://repo.huaweicloud.com/repository/npm/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
@@ -2992,7 +2948,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/loader-runner/-/loader-runner-4.3.1.tgz",
"integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=6.11.5"
},
@@ -3034,9 +2989,9 @@
}
},
"node_modules/markdown-it": {
"version": "14.1.0",
"resolved": "https://repo.huaweicloud.com/repository/npm/markdown-it/-/markdown-it-14.1.0.tgz",
"integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
"version": "14.1.1",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz",
"integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==",
"license": "MIT",
"dependencies": {
"argparse": "^2.0.1",
@@ -3080,8 +3035,7 @@
"version": "2.0.0",
"resolved": "https://repo.huaweicloud.com/repository/npm/merge-stream/-/merge-stream-2.0.0.tgz",
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/mime-db": {
"version": "1.52.0",
@@ -3139,7 +3093,6 @@
}
],
"license": "MIT",
"peer": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -3230,7 +3183,6 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -3360,6 +3312,7 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/prosemirror-model/-/prosemirror-model-1.25.4.tgz",
"integrity": "sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==",
"license": "MIT",
"peer": true,
"dependencies": {
"orderedmap": "^2.0.0"
}
@@ -3389,6 +3342,7 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/prosemirror-state/-/prosemirror-state-1.4.4.tgz",
"integrity": "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==",
"license": "MIT",
"peer": true,
"dependencies": {
"prosemirror-model": "^1.0.0",
"prosemirror-transform": "^1.0.0",
@@ -3437,6 +3391,7 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/prosemirror-view/-/prosemirror-view-1.41.5.tgz",
"integrity": "sha512-UDQbIPnDrjE8tqUBbPmCOZgtd75htE6W3r0JCmY9bL6W1iemDM37MZEKC49d+tdQ0v/CKx4gjxLoLsfkD2NiZA==",
"license": "MIT",
"peer": true,
"dependencies": {
"prosemirror-model": "^1.20.0",
"prosemirror-state": "^1.0.0",
@@ -3481,16 +3436,6 @@
"node": ">=0.10.0"
}
},
"node_modules/randombytes": {
"version": "2.1.0",
"resolved": "https://repo.huaweicloud.com/repository/npm/randombytes/-/randombytes-2.1.0.tgz",
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"safe-buffer": "^5.1.0"
}
},
"node_modules/readdirp": {
"version": "4.1.2",
"resolved": "https://repo.huaweicloud.com/repository/npm/readdirp/-/readdirp-4.1.2.tgz",
@@ -3536,7 +3481,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -3562,27 +3506,6 @@
"individual": "^2.0.0"
}
},
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://repo.huaweicloud.com/repository/npm/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
],
"license": "MIT",
"peer": true
},
"node_modules/safe-json-parse": {
"version": "4.0.0",
"resolved": "https://repo.huaweicloud.com/repository/npm/safe-json-parse/-/safe-json-parse-4.0.0.tgz",
@@ -3596,6 +3519,7 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/sass/-/sass-1.97.3.tgz",
"integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==",
"license": "MIT",
"peer": true,
"dependencies": {
"chokidar": "^4.0.0",
"immutable": "^5.0.2",
@@ -3681,16 +3605,6 @@
"semver": "bin/semver.js"
}
},
"node_modules/serialize-javascript": {
"version": "6.0.2",
"resolved": "https://repo.huaweicloud.com/repository/npm/serialize-javascript/-/serialize-javascript-6.0.2.tgz",
"integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==",
"license": "BSD-3-Clause",
"peer": true,
"dependencies": {
"randombytes": "^2.1.0"
}
},
"node_modules/shallow-clone": {
"version": "3.0.1",
"resolved": "https://repo.huaweicloud.com/repository/npm/shallow-clone/-/shallow-clone-3.0.1.tgz",
@@ -3708,7 +3622,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"license": "BSD-3-Clause",
"peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -3727,7 +3640,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/source-map-support/-/source-map-support-0.5.21.tgz",
"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
"license": "MIT",
"peer": true,
"dependencies": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
@@ -3762,7 +3674,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/supports-color/-/supports-color-8.1.1.tgz",
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
"license": "MIT",
"peer": true,
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -3784,7 +3695,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/tapable/-/tapable-2.3.0.tgz",
"integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=6"
},
@@ -3820,7 +3730,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/terser/-/terser-5.46.0.tgz",
"integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==",
"license": "BSD-2-Clause",
"peer": true,
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
"acorn": "^8.15.0",
@@ -3835,16 +3744,14 @@
}
},
"node_modules/terser-webpack-plugin": {
"version": "5.3.16",
"resolved": "https://repo.huaweicloud.com/repository/npm/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz",
"integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==",
"version": "5.3.17",
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.17.tgz",
"integrity": "sha512-YR7PtUp6GMU91BgSJmlaX/rS2lGDbAF7D+Wtq7hRO+MiljNmodYvqslzCFiYVAgW+Qoaaia/QUIP4lGXufjdZw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.25",
"jest-worker": "^27.4.5",
"schema-utils": "^4.3.0",
"serialize-javascript": "^6.0.2",
"terser": "^5.31.1"
},
"engines": {
@@ -3870,9 +3777,9 @@
}
},
"node_modules/terser-webpack-plugin/node_modules/ajv": {
"version": "8.17.1",
"resolved": "https://repo.huaweicloud.com/repository/npm/ajv/-/ajv-8.17.1.tgz",
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"version": "8.18.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
"integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"license": "MIT",
"peer": true,
"dependencies": {
@@ -3891,7 +3798,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
"integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
"license": "MIT",
"peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3"
},
@@ -3903,15 +3809,13 @@
"version": "1.0.0",
"resolved": "https://repo.huaweicloud.com/repository/npm/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/terser-webpack-plugin/node_modules/schema-utils": {
"version": "4.3.3",
"resolved": "https://repo.huaweicloud.com/repository/npm/schema-utils/-/schema-utils-4.3.3.tgz",
"integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@types/json-schema": "^7.0.9",
"ajv": "^8.9.0",
@@ -3957,8 +3861,7 @@
"version": "1.1.14",
"resolved": "https://repo.huaweicloud.com/repository/npm/trtc-wx-sdk/-/trtc-wx-sdk-1.1.14.tgz",
"integrity": "sha512-QYV2j5pDlhbM0zykYq8OYaSpjyTn0/YbsK180iNwCLEA61m2KWm2wb1veRBVsTP9Lq0iqbSMU17cOW963vcraA==",
"license": "ISC",
"peer": true
"license": "ISC"
},
"node_modules/tslib": {
"version": "2.8.1",
@@ -4021,27 +3924,11 @@
}
}
},
"node_modules/tuikit-atomicx-vue3/node_modules/typescript": {
"version": "5.9.3",
"resolved": "https://repo.huaweicloud.com/repository/npm/typescript/-/typescript-5.9.3.tgz",
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"license": "Apache-2.0",
"optional": true,
"peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=14.17"
}
},
"node_modules/tuikit-logger": {
"version": "0.0.4-beta.1",
"resolved": "https://repo.huaweicloud.com/repository/npm/tuikit-logger/-/tuikit-logger-0.0.4-beta.1.tgz",
"integrity": "sha512-Ky83B1p88xakmfZ2f92cU0YxfolyxnQBv14tQpvnuHcMTnVR2Rjy8tityDGwF+pnxrAhJ7H7OPB/4rFdWVncIw==",
"license": "ISC",
"peer": true
"license": "ISC"
},
"node_modules/typescript": {
"version": "4.9.5",
@@ -4066,8 +3953,7 @@
"version": "7.16.0",
"resolved": "https://repo.huaweicloud.com/repository/npm/undici-types/-/undici-types-7.16.0.tgz",
"integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/unplugin": {
"version": "1.16.1",
@@ -4178,7 +4064,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/watchpack/-/watchpack-2.5.1.tgz",
"integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==",
"license": "MIT",
"peer": true,
"dependencies": {
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
@@ -4192,7 +4077,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/webpack/-/webpack-5.104.1.tgz",
"integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@types/eslint-scope": "^3.7.7",
"@types/estree": "^1.0.8",
@@ -4241,7 +4125,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/webpack-sources/-/webpack-sources-3.3.3.tgz",
"integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=10.13.0"
}
@@ -4253,9 +4136,9 @@
"license": "MIT"
},
"node_modules/webpack/node_modules/ajv": {
"version": "8.17.1",
"resolved": "https://repo.huaweicloud.com/repository/npm/ajv/-/ajv-8.17.1.tgz",
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"version": "8.18.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
"integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"license": "MIT",
"peer": true,
"dependencies": {
@@ -4274,7 +4157,6 @@
"resolved": "https://repo.huaweicloud.com/repository/npm/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
"integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
"license": "MIT",
"peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3"
},
@@ -4286,15 +4168,13 @@
"version": "1.0.0",
"resolved": "https://repo.huaweicloud.com/repository/npm/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/webpack/node_modules/schema-utils": {
"version": "4.3.3",
"resolved": "https://repo.huaweicloud.com/repository/npm/schema-utils/-/schema-utils-4.3.3.tgz",
"integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
"license": "MIT",
"peer": true,
"dependencies": {
"@types/json-schema": "^7.0.9",
"ajv": "^8.9.0",

View File

@@ -506,6 +506,13 @@
"navigationBarTitleText": "记录详情",
"navigationBarBackgroundColor": "#ffffff"
}
},
{
"path": "pages/discover/livelist/list",
"style": {
"navigationBarTitleText": "直播列表",
"navigationBarBackgroundColor": "#ffffff"
}
}
],
"globalStyle": {

View File

@@ -350,7 +350,7 @@
<view class="right-box">
<text>{{ friendInfo.nick || '未知名称' }}</text>
<text v-if="friendInfo?.cbType !== 'group'">
手机号: {{ friendInfo.userID }}
ID: {{ friendInfo.userID }}
</text>
<text v-if="friendInfo?.cbType !== 'group'">
个性签名: {{ friendInfo.selfSignature || '暂无个性签名' }}
@@ -513,7 +513,9 @@
display: flex;
flex-direction: column;
.title {
font-family: PingFang SC, PingFang SC;
font-family:
PingFang SC,
PingFang SC;
font-weight: 500;
font-size: 28rpx;
color: #333333;

View File

@@ -290,6 +290,7 @@
margin-top: 20rpx;
font-size: 28rpx;
text-align: right;
color: white;
}
}

View File

@@ -274,7 +274,8 @@
imAddLive,
imDataStartLive,
getLiveActivityDetail,
imDataEndLive
imDataEndLive,
endLiveActivity
} from '@/api/tui-kit'
import BeforeLivePanel from '../../components/BeforeLivePanel.nvue'
import LiveStatusInfoCard from '@/uni_modules/tuikit-atomic-x/components/LiveStatusInfoCard.nvue'
@@ -723,13 +724,25 @@
// 添加活动
const userAddActivity = () => {
getLiveActivityDetail(roomDataId.value).then(res => {
console.log("活动数据=======",res.data)
if (res?.data && res.data.status === 1) {
// status: 0-未开始 1-进行中 2-已结束 3-已取消
uni.showModal({
title: `提示`,
content: '您有一个活动正在进行中,请勿重复添加活动',
showCancel: false,
content: '您有一个活动正在进行中,是否提前结束?',
confirmText: '确定'
}).then(()=>{
endLiveActivity(res.data.activityId).then(res=>{
uni.showToast({
title: '结束成功',
icon: 'none'
})
}).catch(()=>{
uni.showToast({
title: '结束失败',
icon: 'none'
})
})
})
} else {
isShowActivity.value = true

View File

@@ -59,11 +59,11 @@
/>
</view>
<view class="participant-count">
<text v-if="topNUmber" class="count-text">
<text v-if="Number(topNUmber) > 0" class="count-text">
{{ Number(topNUmber) > 100 ? '99+' : topNUmber }}
</text>
<text v-else class="count-text">
{{ audienceList.length }}
{{ audienceNumber }}
</text>
</view>
</view>
@@ -216,7 +216,8 @@
import {
imDataEndLive,
getLiveActivityDetail,
getLiveActivityRecord
getLiveActivityRecord,
getLIveRecordDetailByRoomId
} from '@/api/tui-kit'
import { onLoad } from '@dcloudio/uni-app'
import {
@@ -267,6 +268,7 @@
addLiveSeatEventListener,
removeLiveSeatEventListener
} = useLiveSeatState(uni?.$liveID)
console.log("uniliveID",uni?.$liveID)
const { audienceList } = useLiveAudienceState(uni?.$liveID)
const { disconnect, connected, cancelApplication } = useCoGuestState(
uni?.$liveID
@@ -345,6 +347,7 @@
const coGuestSheetItems = ref(['取消连麦申请'])
const coGuestSheetTitle = ref('')
const topNUmber = ref('')
const audienceNumber = computed(()=>audienceList.value.length)
// 监听座位变化:当自身不在 seatList 时,将本地连麦状态重置为 IDLE
watch(
@@ -413,6 +416,10 @@
onLoad(options => {
console.warn('Live page onLoad = ', options)
liveID.value = options?.liveID
getLIveRecordDetailByRoomId(liveID.value).then(res=>{
console.log('初始化虚拟人数===========', res.data.virtualViewers)
topNUmber.value = res.data.virtualViewers
})
getLiveActivityDetail(liveID.value).then(res => {
if (res?.data && res.data.status === 1) {
// status: 0-未开始 1-进行中 2-已结束 3-已取消
@@ -738,7 +745,7 @@
disconnect({
liveID: uni?.$liveID
})
exitSheetItems.value = ['退2出直播间']
exitSheetItems.value = ['退出直播间']
exitSheetTitle.value = ''
uni.$localGuestStatus = 'IDLE'
return
@@ -751,18 +758,19 @@
leaveLive({
success: () => {
uni.$liveID = ''
uni.redirectTo({
url: `/pages/discover/livelist/index`,
delta: 1,
animationType: 'pop-out',
animationDuration: 300,
success: () => {
console.log('返回成功')
},
fail: err => {
console.error('返回失败', err)
}
})
uni.navigateBack()
// uni.redirectTo({
// url: `/pages/discover/livelist/list`,
// delta: 1,
// animationType: 'pop-out',
// animationDuration: 300,
// success: () => {
// console.log('返回成功')
// },
// fail: err => {
// console.error('返回失败', err)
// }
// })
}
})
}

View File

@@ -11,7 +11,7 @@
{ name: '公司介绍', icon: 'company' },
{ name: '朋友圈', icon: 'circle' },
{ name: '线上商城', icon: 'mall' },
{ name: '我的拼团伙伴', icon: 'team' },
{ name: '我的拼团订单', icon: 'team' },
{ name: '购买记录', icon: 'shopping' },
// { name: '项目入口', icon: 'project' },
{ name: '直播列表', icon: 'liveStream' }
@@ -51,16 +51,7 @@
return
}
if (item === 'liveStream') {
let url = ''
// #ifdef APP-PLUS
url = '/pages/discover/livelist/index'
// #endif
// #ifdef H5
url = '/pages/discover/livelist/h5-list'
// #endif
navigateTo(url)
return
navigateTo('/pages/discover/livelist/list')
}
}

View File

@@ -32,7 +32,8 @@
import { useAuthUser } from '../../../composables/useAuthUser'
import {
getLiveActivityDetail,
getLiveActivityRecord
getLiveActivityRecord,
getLIveRecordDetailByRoomId
} from '../../../api/tui-kit'
import { LIVE_BUSINESS } from '@/constants/live-keys'
@@ -71,6 +72,7 @@
/** 是否显示活动按钮 */
const isShowActivity = ref(false)
const shareDialog = ref(false)
const topNUmber = ref('')
const audienceListTitle = computed(
() => `在线人数 (${audienceList.value.length})`
@@ -137,6 +139,10 @@
currentLive.value?.liveOwner.userId
liveOwnerAvatar.value = currentLive.value?.liveOwner.avatarUrl
}
getLIveRecordDetailByRoomId(e.liveId).then(res => {
console.log('初始化虚拟人数===========', res.data.virtualViewers)
topNUmber.value = res.data.virtualViewers
})
const res = await getLiveActivityDetail(liveId)
// status: 0-未开始 1-进行中 2-已结束 3-已取消
console.log('活动数据============= ', currentLive.value)
@@ -249,7 +255,10 @@
:src="item.avatarUrl"
:size="24"
/>
<div class="audience-count">
<div v-if="topNUmber" class="audience-count">
{{ Number(topNUmber) > 100 ? '99+' : topNUmber }}
</div>
<div v-else class="audience-count">
<span>{{ audienceList.length }}</span>
</div>
</div>

View File

@@ -0,0 +1,114 @@
<script setup>
import { navigateTo } from '@/utils/router'
import { getLiveRoomList } from '../../../api/tui-kit'
import { ref } from 'vue'
const list = ref([])
const paging = ref(null)
const getList = async (pageNum, pageSize) => {
try {
const res = await getLiveRoomList({
pageNum,
pageSize
})
paging.value.complete(res.rows)
} catch (error) {
paging.value.complete(false)
}
}
const onGo = item => {
// #ifdef APP-PLUS
uni.$liveID = item.roomId
navigateTo('/pages/audience/index', { liveID: item.roomId,id: item.id })
// #endif
// #ifdef H5
navigateTo('/pages/discover/livelist/h5-live-player', {
liveId: item.roomId,
id: item.id
})
// #endif
}
</script>
<template>
<z-paging
ref="paging"
v-model="list"
:default-page-no="1"
:default-page-size="15"
safe-area-inset-bottom
use-safe-area-placeholder
:paging-style="{ 'background-color': '#f9f9f9' }"
@query="getList"
>
<view class="list-box">
<view
v-for="item in list"
:key="item.roomId"
class="live-box"
@click="onGo(item)"
>
<!-- 背景图 -->
<image
:src="item.coverUrl"
lazy-load
mode="aspectFill"
class="bg-box"
/>
<view class="title-box">
<view class="title-text">
<text>
{{ item.roomName }}
</text>
</view>
</view>
</view>
</view>
</z-paging>
</template>
<style lang="scss" scoped>
.list-box {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
padding: 0 20rpx;
.live-box {
width: 48%;
margin-top: 32rpx;
height: 420rpx;
border-radius: 20rpx;
overflow: hidden;
position: relative;
.bg-box {
width: 100%;
height: 100%;
}
.title-box {
position: absolute;
width: 100%;
left: 0;
bottom: 0;
padding: 16rpx 0;
background: rgba(88, 88, 88, 0.164);
display: flex;
align-items: center;
.title-text {
color: #fff;
padding: 0 10rpx 0 14rpx;
font-size: 26rpx;
text {
display: -webkit-box;
-webkit-line-clamp: 1; /* 显示3行 */
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
}
}
</style>

View File

@@ -242,14 +242,14 @@
.goods-spec {
font-size: 24rpx;
color: #999;
margin-top: 8rpx;
margin-top: 4rpx;
}
.goods-price-info {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 16rpx;
margin-top: 6rpx;
.goods-price {
font-size: 28rpx;

View File

@@ -62,12 +62,12 @@
// 跳转到订单详情
const goToDetail = item => {
let url = ''
if (item.orderType == 1) {
url = '/pages/discover/order/detail'
} else {
url = '/pages/shop-together/detail'
}
let url = '/pages/discover/order/detail'
// if (item.orderType == 1) {
// url = '/pages/discover/order/detail'
// } else {
// url = '/pages/shop-together/detail'
// }
navigateTo(url, { id: item.id })
}
@@ -204,9 +204,9 @@
mode="aspectFill"
/>
<view class="goods-info">
<text class="goods-name">{{ item.userName }}</text>
<text class="goods-name">{{ item.productName }}</text>
<text class="goods-spec">
{{ item.specText }}
规格{{ item.specText }}
</text>
<view class="goods-price-info">
<text class="goods-price">¥{{ item.unitPrice }}</text>

View File

@@ -78,7 +78,7 @@
const handleToLive = () => {
uni.redirectTo({
url: '/pages/discover/livelist/index',
url: '/pages/discover/livelist/list',
success() {
console.log('跳转成功');
},

View File

@@ -60,13 +60,13 @@
>
第三方客服
</button>
<button
<!-- <button
v-if="customerData?.imUserId"
class="btn"
@click="handleSwitchConversation"
>
APP客服
</button>
</button> -->
</view>
</view>
</template>

View File

@@ -6,6 +6,7 @@
import { formatNumberWithWan } from '../../utils'
import { getUserPayPwd } from '@/api/my-index'
import { useUserStore } from '../../stores/user'
import { ref } from 'vue'
const bottomList = [
{
@@ -51,7 +52,7 @@
}
]
const { getIntegral } = useUserStore()
const { getIntegral, refreshUserInfo } = useUserStore()
const { showDialog } = useUI()
const { userInfo, integralData } = useAuthUser()
@@ -72,6 +73,12 @@
}
}
const paging = ref(null)
const onRefresh = async () => {
await refreshUserInfo()
paging.value.complete()
}
onLoad(() => {
// 获取用户信息
console.log(userInfo.value, '===获取用户信息')
@@ -82,71 +89,31 @@
</script>
<template>
<view class="my-index">
<view
class="top-info"
@click="navigateTo('/pages/my-index/personal-center/index')"
>
<view class="left-box">
<image
v-if="userInfo?.avatar"
:src="userInfo?.avatar"
mode="aspectFill"
class="avatar"
></image>
<uni-icons v-else type="contact-filled" size="70"></uni-icons>
<view class="nickname">
<text class="name">{{ userInfo?.userName || '' }}</text>
<text class="name">ID:{{ userInfo?.userId || '' }}</text>
</view>
</view>
<image
src="/static/images/public/right-arrow.png"
mode="heightFix"
class="right-box"
></image>
</view>
<!-- 卡片列表 -->
<view class="card-list">
<view class="top-box">
<view class="left-name">
<text>账户积分</text>
<text>{{ formatNumberWithWan(integralData) }}</text>
</view>
<view class="right-btn">
<button
@click="
showDialog('提示', '联系客服或者联系上级分享人', false)
"
>
充值
</button>
<button @click="navigateTo('/pages/my-index/withdraw')">
提现
</button>
</view>
</view>
<!-- 入口列表 -->
<z-paging
ref="paging"
:paging-style="{ 'background-color': '#f9f9f9' }"
refresher-only
@onRefresh="onRefresh"
>
<view class="my-index">
<view
v-for="(item, index) in bottomList"
:key="index"
class="item-box"
@click="item.url && onGo(item)"
class="top-info"
@click="navigateTo('/pages/my-index/personal-center/index')"
>
<view class="item-name">
<uni-icons
v-if="item.icon === 'videocam'"
type="videocam"
size="64rpx"
color="#1b38b9"
></uni-icons>
<view class="left-box">
<image
v-else
:src="`/static/images/my-index/${item.icon}.png`"
mode="heightFix"
class="icon"
v-if="userInfo?.avatar"
:src="userInfo?.avatar"
mode="aspectFill"
class="avatar"
></image>
<text class="text-box">{{ item.name }}</text>
<uni-icons v-else type="contact-filled" size="70"></uni-icons>
<view class="nickname">
<text class="name">{{ userInfo?.userName || '' }}</text>
<text class="name">
ID: {{ userInfo?.invitationCode || '' }}
</text>
</view>
</view>
<image
src="/static/images/public/right-arrow.png"
@@ -154,8 +121,57 @@
class="right-box"
></image>
</view>
<!-- 卡片列表 -->
<view class="card-list">
<view class="top-box">
<view class="left-name">
<text>账户积分</text>
<text>{{ integralData }}</text>
</view>
<view class="right-btn">
<button
@click="
showDialog('提示', '联系客服或者联系上级分享人', false)
"
>
充值
</button>
<button @click="navigateTo('/pages/my-index/withdraw')">
提现
</button>
</view>
</view>
<!-- 入口列表 -->
<view
v-for="(item, index) in bottomList"
:key="index"
class="item-box"
@click="item.url && onGo(item)"
>
<view class="item-name">
<uni-icons
v-if="item.icon === 'videocam'"
type="videocam"
size="64rpx"
color="#1b38b9"
></uni-icons>
<image
v-else
:src="`/static/images/my-index/${item.icon}.png`"
mode="heightFix"
class="icon"
></image>
<text class="text-box">{{ item.name }}</text>
</view>
<image
src="/static/images/public/right-arrow.png"
mode="heightFix"
class="right-box"
></image>
</view>
</view>
</view>
</view>
</z-paging>
</template>
<style lang="scss" scoped>

View File

@@ -16,7 +16,7 @@
<uni-icons v-else type="contact-filled" size="60"></uni-icons>
<view class="right-box">
<text>{{ userInfo.userName }}</text>
<text>ID: {{ userInfo.userId }}</text>
<text>ID: {{ userInfo.invitationCode }}</text>
</view>
</view>
<view class="code-img">

View File

@@ -2,6 +2,8 @@
import { useUserStore } from '@/stores/user'
import { navigateTo } from '../../../utils/router'
import { useUI } from '../../../utils/use-ui'
import { getAppVersion } from '@/api'
import { compareVersion } from '@/utils/util.js'
const { showDialog, showToast } = useUI()
@@ -14,7 +16,11 @@
},
// { name: '聊天背景', value: '', url: '' },
// { name: '朋友圈设置', value: '', url: '' },
{ name: '消息通知', value: '', url: '/pages/my-index/set-up/message/index' }
{
name: '消息通知',
value: '',
url: '/pages/my-index/set-up/message/index'
}
// { name: '安全设置', value: '', url: '' },
// { name: '群发消息', value: '', url: '' },
// { name: '登录设备', value: '', url: '' }
@@ -29,6 +35,9 @@
value: '',
url: '/pages/my-index/set-up/feedback'
},
// #ifdef APP-PLUS
{ name: '检查更新', value: '3', url: '' },
// #endif
{ name: '关于我们', value: '', url: '/pages/discover/company' }
]
@@ -45,6 +54,35 @@
}
})
return
} else if (item.value === '3') {
plus.runtime.getProperty(plus.runtime.appid, function (widgetInfo) {
getAppVersion().then(res => {
console.log('应用版本信息', res.data)
const lastVersion = res.data.version
const currentVersion = widgetInfo.version
if (compareVersion(currentVersion, lastVersion) < 0) {
// 当前版本低于最新版本,提示用户更新
console.log('当前版本低于最新版本,请更新应用')
const url = res.data.updateUrl
const isForceUpdate = res.data.forceUpdate
uni.showModal({
title: '更新提示',
content: res.data.updateMessage,
confirmText: '立即更新',
cancelText: '稍后再说',
showCancel: !isForceUpdate,
success: res => {
if (res.confirm) {
plus.runtime.openURL(url)
}
}
})
} else {
showToast('当前已是最新版本', 'info')
}
})
})
return
}
item.url && navigateTo(item.url)
}
@@ -104,7 +142,9 @@
padding: 0 32rpx;
.item {
padding: 20rpx 0;
font-family: PingFang SC, PingFang SC;
font-family:
PingFang SC,
PingFang SC;
text-align: left;
font-style: normal;
text-transform: none;
@@ -135,7 +175,9 @@
height: 80rpx;
line-height: 80rpx;
background: #fff;
font-family: PingFang SC, PingFang SC;
font-family:
PingFang SC,
PingFang SC;
font-weight: 500;
font-size: 28rpx;
color: #eb1c26;

View File

@@ -54,48 +54,63 @@
onShow(() => {
getData()
})
const paging = ref(null)
const onRefresh = async () => {
await getData()
paging.value.complete()
}
</script>
<template>
<view class="wallet">
<!-- 顶部样式 -->
<view class="top-card">
<view class="left-box">
<text>我的资产</text>
<text>{{ formatNumberWithWan(integralData) }}</text>
<z-paging
ref="paging"
:paging-style="{ 'background-color': '#f9f9f9' }"
refresher-only
@onRefresh="onRefresh"
>
<view class="wallet">
<!-- 顶部样式 -->
<view class="top-card">
<view class="left-box">
<text>我的资产</text>
<text>{{ integralData }}</text>
</view>
<view class="right-box">
<button
@click="
showDialog('提示', '联系客服或者联系上级分享人', false)
"
>
充值
</button>
<button @click="navigateTo('/pages/my-index/withdraw')">
提现
</button>
</view>
</view>
<view class="right-box">
<button
@click="showDialog('提示', '联系客服或者联系上级分享人', false)"
>
充值
</button>
<button @click="navigateTo('/pages/my-index/withdraw')">
提现
</button>
</view>
</view>
<view
v-for="(item, index) in itemList"
:key="index"
class="public-card"
@click="
item.url &&
<view
v-for="(item, index) in itemList"
:key="index"
class="public-card"
@click="
item.url &&
navigateTo(
item.url,
item.key === '3' ? { type: item.isType ? 1 : 0 } : null
)
"
>
<view class="left-box">
<text>{{ item.title }}</text>
</view>
<view class="right-box">
<uni-icons type="right" size="16" color="#999999"></uni-icons>
"
>
<view class="left-box">
<text>{{ item.title }}</text>
</view>
<view class="right-box">
<uni-icons type="right" size="16" color="#999999"></uni-icons>
</view>
</view>
</view>
</view>
</z-paging>
</template>
<style lang="scss" scoped>
@@ -113,7 +128,9 @@
align-items: center;
justify-content: space-between;
position: relative;
font-family: PingFang SC, PingFang SC;
font-family:
PingFang SC,
PingFang SC;
font-style: normal;
text-transform: none;
&::after {
@@ -152,7 +169,9 @@
height: 64rpx;
line-height: 64rpx;
border-radius: 100rpx 100rpx 100rpx 100rpx;
font-family: PingFang SC, PingFang SC;
font-family:
PingFang SC,
PingFang SC;
font-weight: 500;
font-size: 28rpx;
color: #ffffff;

View File

@@ -21,7 +21,7 @@
{ name: '拼单获得', id: '1', state: '+', color: '#2ecc71' },
{ name: '消费', id: '2', state: '-', color: '#e74c3c' },
{ name: '退款', id: '3', state: '-', color: '#f39c12' },
{ name: '系统赠送', id: '4', state: '+', color: '#2ecc71' },
{ name: '推荐奖励', id: '4', state: '+', color: '#2ecc71' },
{ name: '系统扣除', id: '5', state: '-', color: '#e74c3c' },
{ name: '签到', id: '6', state: '+', color: '#2ecc71' },
{ name: '提现', id: '7', state: '-', color: '#e74c3c' },
@@ -77,7 +77,7 @@
{
name: '参与直播活动',
id: '17',
state: '-',
state: '+',
color: '#e74c3c'
},
{

View File

@@ -50,7 +50,7 @@
<uni-icons v-else type="contact-filled" size="64"></uni-icons>
<view class="name-box">
<text>{{ topUser.userName }}</text>
<text>ID:{{ topUser.userId }}</text>
<text>ID:{{ topUser.invitationCode }}</text>
</view>
</view>
<view class="right-box">
@@ -58,7 +58,11 @@
{{
viewData.status === 1
? viewData.commissionAmount
: (viewData.commissionRate / 100) * viewData.groupPrice
: Math.trunc(
(viewData.commissionRate / 100) *
viewData.groupPrice *
100
) / 100
}}
</text>
<text>积分</text>

View File

@@ -10,8 +10,13 @@
const qrcodeRef = ref(null)
const BASE_URL = computed(() => {
// #ifdef H5
const { origin } = window.location
return `${origin}/pages/mall/detail?productId=${productId.value}&groupId=${groupId.value}`
// #endif
// #ifdef APP-PLUS
return `yxdim://pages/mall/detail?productId=${productId.value}&groupId=${groupId.value}`
// #endif
})
// 复制文本通用函数
@@ -52,6 +57,13 @@
</view> -->
</view>
</view>
<!-- #ifdef APP-PLUS -->
<view class="copy-box">
<text class="link">拼单链接:{{ BASE_URL }}</text>
<button @click="copyText">复制</button>
</view>
<!-- #endif -->
<!-- 复制连接 -->
<!-- #ifdef H5 -->

BIN
static/.DS_Store vendored Normal file

Binary file not shown.

BIN
static/bootstrap.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
static/im-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 286 KiB

View File

@@ -5,12 +5,14 @@
"description": "RongCloud-CallWrapper",
"keywords": [
"RongCloud,call,rtc"
],
],
"repository": "",
"engines": {
"HBuilderX": "^3.1.0"
"HBuilderX": "^3.1.0",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
},
"dcloudext": {
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
@@ -28,51 +30,66 @@
"permissions": "无"
},
"npmurl": "",
"type": "sdk-js"
"type": "sdk-js",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y",
"alipay": "n"
"tcb": "",
"aliyun": "",
"alipay": "x"
},
"client": {
"Vue": {
"vue2": "y",
"vue3": "y"
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"App": {
"app-vue": "y",
"app-nvue": "y",
"app-harmony": "u",
"app-uvue": "u"
},
"H5-mobile": {
"Safari": "n",
"Android Browser": "n",
"微信浏览器(Android)": "n",
"QQ浏览器(Android)": "n"
},
"H5-pc": {
"Chrome": "n",
"IE": "n",
"Edge": "n",
"Firefox": "n",
"Safari": "n"
},
"小程序": {
"微信": "n",
"阿里": "n",
"百度": "n",
"字节跳动": "n",
"QQ": "n"
},
"快应用": {
"华为": "n",
"联盟": "n"
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}

View File

@@ -6,12 +6,14 @@
"keywords": [
"RongCloud",
"IM"
],
],
"repository": "",
"engines": {
"HBuilderX": "^3.1.0"
"HBuilderX": "^3.1.0",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
},
"dcloudext": {
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
@@ -29,51 +31,66 @@
"permissions": "无"
},
"npmurl": "",
"type": "sdk-js"
"type": "sdk-js",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y",
"alipay": "n"
"tcb": "",
"aliyun": "",
"alipay": "x"
},
"client": {
"Vue": {
"vue2": "y",
"vue3": "y"
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"App": {
"app-vue": "y",
"app-nvue": "y",
"app-harmony": "u",
"app-uvue": "u"
},
"H5-mobile": {
"Safari": "n",
"Android Browser": "n",
"微信浏览器(Android)": "n",
"QQ浏览器(Android)": "n"
},
"H5-pc": {
"Chrome": "n",
"IE": "n",
"Edge": "n",
"Firefox": "n",
"Safari": "n"
},
"小程序": {
"微信": "n",
"阿里": "n",
"百度": "n",
"字节跳动": "n",
"QQ": "n"
},
"快应用": {
"华为": "n",
"联盟": "n"
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}

View File

@@ -12,10 +12,12 @@
"推送",
"Android/iOS",
"谷歌FCM"
],
],
"repository": "",
"engines": {
"HBuilderX": "^3.6.8"
"HBuilderX": "^3.6.8",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
},
"dcloudext": {
"type": "uts",
@@ -35,54 +37,66 @@
"data": "腾讯云即时通信IM隐私保护指引: https://web.sdk.qcloud.com/document/Tencent-IM-Privacy-Protection-Guidelines.html\n移动推送隐私保护指引: https://privacy.qq.com/document/preview/8565a4a2d26e480187ed86b0cc81d727",
"permissions": "本地存储空间"
},
"npmurl": ""
"npmurl": "",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y",
"alipay": "y"
"tcb": "",
"aliyun": "",
"alipay": ""
},
"client": {
"Vue": {
"vue2": "y",
"vue3": "y"
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"App": {
"app-android": "y",
"app-ios": "y",
"app-harmony": "u"
},
"H5-mobile": {
"Safari": "u",
"Android Browser": "u",
"微信浏览器(Android)": "u",
"QQ浏览器(Android)": "u"
},
"H5-pc": {
"Chrome": "u",
"IE": "u",
"Edge": "u",
"Firefox": "u",
"Safari": "u"
},
"小程序": {
"微信": "u",
"阿里": "u",
"百度": "u",
"字节跳动": "u",
"QQ": "u",
"钉钉": "u",
"快手": "u",
"飞书": "u",
"京东": "u"
},
"快应用": {
"华为": "u",
"联盟": "u"
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}

View File

@@ -38,6 +38,7 @@ const onLiveSummaryStoreChanged = (eventName : string, res : string) : void => {
if (eventName === "summaryData") {
const data = JSON.parse(res);
summaryData.value = data;
console.log("直播统计数据更新", summaryData.value)
}
} catch (error) {
console.error("onLiveSummaryStoreChanged error:", error);

View File

@@ -9,15 +9,17 @@
"combox",
"组合框",
"select"
],
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": ""
"HBuilderX": "",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
@@ -35,54 +37,71 @@
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "component-vue"
"type": "component-vue",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"dependencies": [
"uni-scss",
"uni-icons"
],
"uni-scss",
"uni-icons"
],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y",
"alipay": "n"
"tcb": "",
"aliyun": "",
"alipay": "x"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "n"
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y"
},
"快应用": {
"华为": "u",
"联盟": "u"
},
"Vue": {
"vue2": "y",
"vue3": "y"
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}
}
}
}

View File

@@ -8,15 +8,17 @@
"uniui",
"countdown",
"倒计时"
],
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": ""
"HBuilderX": "",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
@@ -34,53 +36,70 @@
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "component-vue"
"type": "component-vue",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"dependencies": ["uni-scss"],
"dependencies": [
"uni-scss"
],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y",
"alipay": "n"
"tcb": "",
"aliyun": "",
"alipay": "x"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "y",
"app-harmony": "u",
"app-uvue": "u"
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y"
},
"快应用": {
"华为": "u",
"联盟": "u"
},
"Vue": {
"vue2": "y",
"vue3": "y"
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}
}
}
}

View File

@@ -9,15 +9,17 @@
"单选",
"多选",
"单选多选"
],
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": "^3.1.1"
"HBuilderX": "^3.1.1",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
@@ -35,53 +37,71 @@
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "component-vue"
"type": "component-vue",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"dependencies": ["uni-load-more","uni-scss"],
"dependencies": [
"uni-load-more",
"uni-scss"
],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y",
"alipay": "n"
"tcb": "",
"aliyun": "",
"alipay": "x"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "y",
"app-harmony": "u",
"app-uvue": "u"
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y"
},
"快应用": {
"华为": "u",
"联盟": "u"
},
"Vue": {
"vue2": "y",
"vue3": "y"
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}
}
}
}

View File

@@ -10,15 +10,17 @@
"级联",
"省市区",
""
],
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": ""
"HBuilderX": "",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
@@ -36,58 +38,72 @@
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "component-vue"
"type": "component-vue",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"dependencies": [
"uni-load-more",
"uni-icons",
"uni-scss"
"uni-icons",
"uni-scss"
],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y",
"alipay": "n"
"tcb": "",
"aliyun": "",
"alipay": "x"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "y",
"app-uvue": "y",
"app-harmony": "u"
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y",
"京东": "u"
},
"快应用": {
"华为": "u",
"联盟": "u"
},
"Vue": {
"vue2": "y",
"vue3": "y"
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}
}
}
}

View File

@@ -9,15 +9,17 @@
"校验",
"表单校验",
"表单验证"
],
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": ""
"HBuilderX": "",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
@@ -35,55 +37,71 @@
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "component-vue"
"type": "component-vue",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"dependencies": [
"uni-scss",
"uni-scss",
"uni-icons"
],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y",
"alipay": "n"
"tcb": "",
"aliyun": "",
"alipay": "x"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "y"
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y",
"京东": "u"
},
"快应用": {
"华为": "u",
"联盟": "u"
},
"Vue": {
"vue2": "y",
"vue3": "y"
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}
}
}
}

View File

@@ -7,15 +7,17 @@
"uni-ui",
"uniui",
"数字输入框"
],
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": ""
"HBuilderX": "",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
@@ -33,49 +35,68 @@
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "component-vue"
"type": "component-vue",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"dependencies": ["uni-scss"],
"dependencies": [
"uni-scss"
],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y",
"alipay": "n"
"tcb": "",
"aliyun": "",
"alipay": "x"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "y"
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y"
},
"快应用": {
"华为": "u",
"联盟": "u"
},
"Vue": {
"vue2": "y",
"vue3": "y"
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}

View File

@@ -7,19 +7,17 @@
"uni-ui",
"uniui",
"评分"
],
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": ""
"HBuilderX": "",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"category": [
"前端组件",
"通用组件"
],
"sale": {
"regular": {
"price": "0.00"
@@ -36,53 +34,71 @@
"data": "无",
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "component-vue",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"dependencies": [
"uni-scss",
"uni-icons"
],
"uni-scss",
"uni-icons"
],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
"tcb": "",
"aliyun": ""
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "y"
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y"
},
"快应用": {
"华为": "u",
"联盟": "u"
},
"Vue": {
"vue2": "y",
"vue3": "y"
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}
}
}
}

View File

@@ -9,19 +9,17 @@
"栅格",
"布局",
"layout"
],
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": ""
"HBuilderX": "",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"category": [
"前端组件",
"通用组件"
],
"sale": {
"regular": {
"price": "0.00"
@@ -38,48 +36,68 @@
"data": "无",
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "component-vue",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"dependencies": ["uni-scss"],
"dependencies": [
"uni-scss"
],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
"tcb": "",
"aliyun": ""
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "y"
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y"
},
"快应用": {
"华为": "u",
"联盟": "u"
},
"Vue": {
"vue2": "y",
"vue3": "u"
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}

View File

@@ -7,16 +7,14 @@
"uni-scss",
"uni-ui",
"辅助样式"
],
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": "^3.1.0"
"HBuilderX": "^3.1.0",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
},
"dcloudext": {
"category": [
"JS SDK",
"通用 SDK"
],
"sale": {
"regular": {
"price": "0.00"
@@ -33,50 +31,68 @@
"data": "无",
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "sdk-js",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
"tcb": "",
"aliyun": ""
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "u"
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y"
},
"快应用": {
"华为": "n",
"联盟": "n"
},
"Vue": {
"vue2": "y",
"vue3": "y"
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}
}
}
}

View File

@@ -8,15 +8,17 @@
"uniui",
"搜索框",
"搜索栏"
],
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": ""
"HBuilderX": "",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
@@ -34,52 +36,69 @@
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "component-vue"
"type": "component-vue",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"dependencies": [
"uni-scss",
"uni-icons"
],
"uni-scss",
"uni-icons"
],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y",
"alipay": "n"
"tcb": "",
"aliyun": "",
"alipay": "x"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "y"
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y"
},
"快应用": {
"华为": "u",
"联盟": "u"
},
"Vue": {
"vue2": "y",
"vue3": "y"
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}

View File

@@ -9,19 +9,17 @@
"轮播图指示点",
"dot",
"swiper"
],
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": ""
"HBuilderX": "",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"category": [
"前端组件",
"通用组件"
],
"sale": {
"regular": {
"price": "0.00"
@@ -38,48 +36,68 @@
"data": "无",
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "component-vue",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"dependencies": ["uni-scss"],
"dependencies": [
"uni-scss"
],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
"tcb": "",
"aliyun": ""
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "y"
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y"
},
"快应用": {
"华为": "u",
"联盟": "u"
},
"Vue": {
"vue2": "y",
"vue3": "y"
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}

View File

@@ -5,10 +5,12 @@
"description": "支付密码弹窗",
"keywords": [
"支付,弹窗,密码"
],
],
"repository": "",
"engines": {
"HBuilderX": "^3.1.0"
"HBuilderX": "^3.1.0",
"uni-app": "^3.1.0",
"uni-app-x": "^3.1.0"
},
"dcloudext": {
"type": "component-vue",
@@ -28,54 +30,66 @@
"data": "插件不采集任何数据,一个支付密码的弹窗,内置忘记密码跳转功能,忘记密码页面需要自行修改",
"permissions": "无"
},
"npmurl": ""
"npmurl": "",
"darkmode": "-",
"i18n": "-",
"widescreen": "-"
},
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y",
"alipay": "y"
"tcb": "",
"aliyun": "",
"alipay": ""
},
"client": {
"Vue": {
"vue2": "y",
"vue3": "y"
"uni-app": {
"vue": {
"vue2": "-",
"vue3": "-"
},
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"vue": "-",
"nvue": "-",
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-",
"alipay": "-",
"toutiao": "-",
"baidu": "-",
"kuaishou": "-",
"jd": "-",
"harmony": "-",
"qq": "-",
"lark": "-"
},
"quickapp": {
"huawei": "-",
"union": "-"
}
},
"App": {
"app-vue": "y",
"app-nvue": "u",
"app-uvue": "u"
},
"H5-mobile": {
"Safari": "u",
"Android Browser": "y",
"微信浏览器(Android)": "u",
"QQ浏览器(Android)": "u"
},
"H5-pc": {
"Chrome": "y",
"IE": "u",
"Edge": "y",
"Firefox": "u",
"Safari": "u"
},
"小程序": {
"微信": "u",
"阿里": "u",
"百度": "u",
"字节跳动": "u",
"QQ": "u",
"钉钉": "u",
"快手": "u",
"飞书": "u",
"京东": "u"
},
"快应用": {
"华为": "u",
"联盟": "u"
"uni-app-x": {
"web": {
"safari": "-",
"chrome": "-"
},
"app": {
"android": "-",
"ios": "-",
"harmony": "-"
},
"mp": {
"weixin": "-"
}
}
}
}

View File

@@ -1,4 +1,5 @@
import { useUserStore } from '../stores/user'
import { navigateBack } from './router'
import { getToken } from './storage'
const BASE_URL = import.meta.env.VITE_SYSTEM_URL
@@ -55,7 +56,11 @@ const request = options => {
resolve(response.data)
} else {
// 注意:这里也要 reject否则调用方无法感知失败
const err = handleError(response.data.code, response.data)
const err = handleError(
response.data.code,
response.data,
options?.isErrorBack
)
reject(err || response.data)
// handleError(response.data.code, response.data)
}
@@ -63,7 +68,11 @@ const request = options => {
// 状态码错误处理
// handleError(response.statusCode, response.data)
// reject(response)
const err = handleError(response.statusCode, response.data)
const err = handleError(
response.statusCode,
response.data,
options?.isErrorBack
)
reject(err || response)
}
},
@@ -91,8 +100,9 @@ const request = options => {
* 错误处理函数
* @param {Number} statusCode HTTP状态码
* @param {Object} data 响应数据
* @param {Boolean} isErrorBack 是否返回上一页
*/
const handleError = (statusCode, data) => {
const handleError = (statusCode, data, isErrorBack) => {
// 如果是 401 且正在处理中,直接返回(避免重复处理)
if (statusCode === 401) {
if (isHandling401) {
@@ -156,6 +166,9 @@ const handleError = (statusCode, data) => {
showCancel: false,
confirmText: '确定'
})
if (isErrorBack) {
navigateBack()
}
// uni.showToast({
// title: data.msg || '服务器内部错误',
// icon: 'none',

View File

@@ -1,3 +1,21 @@
export const formate = function(arr){
return JSON.parse('['+ arr.join(',') + ']');
export const formate = function (arr) {
return JSON.parse('[' + arr.join(',') + ']');
}
export function compareVersion(version1, version2) {
const v1Parts = version1.split(".").map(Number);
const v2Parts = version2.split(".").map(Number);
const maxLength = Math.max(v1Parts.length, v2Parts.length);
for (let i = 0; i < maxLength; i++) {
const v1Part = v1Parts[i] || 0;
const v2Part = v2Parts[i] || 0;
if (v1Part < v2Part)
return -1;
if (v1Part > v2Part)
return 1;
}
return 0;
}