diff --git a/.env b/.env index 2d1b476..ce0e40e 100644 --- a/.env +++ b/.env @@ -1,6 +1,6 @@ # API -VITE_SYSTEM_URL = "http://w6972efb.natappfree.cc" -# VITE_SYSTEM_URL = "https://dev.cqjcteach.cn/prod-api" +# VITE_SYSTEM_URL = "http://w6972efb.natappfree.cc" +VITE_SYSTEM_URL = "https://dev.cqjcteach.cn/prod-api" # 第三方客户 channelId VITE_CHANNEL_ID = "7b81ec142eca42baa045820793b821bb" diff --git a/TUIKit/assets/icon/kai-unopened-envelope.svg b/TUIKit/assets/icon/kai-unopened-envelope.svg new file mode 100644 index 0000000..09210af --- /dev/null +++ b/TUIKit/assets/icon/kai-unopened-envelope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/TUIKit/components/TUIChat/message-list/index.vue b/TUIKit/components/TUIChat/message-list/index.vue index 234ddb0..dd20ff7 100644 --- a/TUIKit/components/TUIChat/message-list/index.vue +++ b/TUIKit/components/TUIChat/message-list/index.vue @@ -8,7 +8,7 @@ >
-
+
@@ -610,8 +611,9 @@ } const { showDialog } = useUI() + const customRefMessage = ref(null) /** 领取红包 */ - const onClaim = (item: IMessageModel) => { + const onClaim = (item: IMessageModel, index: number) => { const { conversationType, cloudCustomData, flow, payload } = item const data = JSON.parse(payload.data) // 群聊 @@ -641,21 +643,25 @@ const show = await showDialog('提示', '是否领取该红包?') if (show) { newMessage.in = true - + customRefMessage.value[index].updateClaimStatus(newMessage) item.modifyMessage({ cloudCustomData: JSON.stringify(newMessage) }) } } } else { + newMessage.out = true + customRefMessage.value[index].updateClaimStatus(newMessage) item.modifyMessage({ cloudCustomData: JSON.stringify(newMessage) }) - navigateTo('/pages/red-packet/details', { - id: data.id, - type: conversationType - }) + // .then(() => { + // navigateTo('/pages/red-packet/details', { + // id: data.id, + // type: conversationType + // }) + // }) } }) diff --git a/TUIKit/components/TUIChat/message-list/message-elements/message-custom.vue b/TUIKit/components/TUIChat/message-list/message-elements/message-custom.vue index e865164..1e37cdf 100644 --- a/TUIKit/components/TUIChat/message-list/message-elements/message-custom.vue +++ b/TUIKit/components/TUIChat/message-list/message-elements/message-custom.vue @@ -78,20 +78,25 @@ " > - + - + {{ customData.title }} - 积分红包{{ customData.isOpen }} + 积分红包 @@ -119,6 +124,7 @@ import Icon from '../../../common/Icon.vue' import star from '../../../../assets/icon/star-light.png' import unopenedEnvelope from '../../../../assets/icon/unopened-envelope.svg' + import kaiEnvelope from '../../../../assets/icon/kai-unopened-envelope.svg' interface Props { messageItem: IMessageModel @@ -145,6 +151,28 @@ businessID: '' }) + props.messageItem?.cloudCustomData && + JSON.parse(props.messageItem?.cloudCustomData) + // 红包领取状态 + const claimStatus = reactive({ + in: props.messageItem?.cloudCustomData + ? JSON.parse(props.messageItem?.cloudCustomData).in + : false, + out: props.messageItem?.cloudCustomData + ? JSON.parse(props.messageItem?.cloudCustomData).out + : false + }) + + /** 红包样式 */ + const isOpen = computed(() => claimStatus.in || claimStatus.out) + const isBackground = computed(() => { + if (props.messageItem.type === 'in') { + return claimStatus.in ? '#ffaf55' : '#f3901f' + } else { + return claimStatus.out ? '#ffaf55' : '#f3901f' + } + }) + watchEffect(() => { custom.value = props.content message.value = props.messageItem @@ -165,6 +193,16 @@ // console.log(customData.value) emits('claim') } + + // Vue3组件抛出方法 + defineExpose({ + // 修改领取红包后状态 + updateClaimStatus(data: any) { + // console.log('更新红包领取状态') + claimStatus.in = data.in + claimStatus.out = data.out + } + })