From 03e84eab94659f61aaa512daa9385e82b9295f07 Mon Sep 17 00:00:00 2001 From: yinkang Date: Thu, 3 Jul 2025 15:52:49 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/talk/ForwardRecord.vue | 47 +++++++++---------- src/event/talk.js | 6 +-- src/hooks/useSessionMenu.ts | 8 ++-- src/store/modules/uploads.ts | 2 +- .../message/inner/panel/PanelContent.vue | 17 ++++++- src/views/message/inner/panel/menu.ts | 9 ++-- 6 files changed, 52 insertions(+), 37 deletions(-) diff --git a/src/components/talk/ForwardRecord.vue b/src/components/talk/ForwardRecord.vue index ceeba60..a254f8f 100644 --- a/src/components/talk/ForwardRecord.vue +++ b/src/components/talk/ForwardRecord.vue @@ -15,7 +15,7 @@ const props = defineProps({ }, createdAt: { type: String, - required: false + required: false }, modalTitle: { type: String, @@ -50,13 +50,12 @@ const dropdown=ref({ options:[] as any, item:{} as ITalkRecord, }) -const onConvertText =async (data: ITalkRecord) => { +const onConvertText = async (data: ITalkRecord) => { data.is_convert_text = 1 - const res = await voiceToText({msgId:data.msg_id,voiceUrl:data.extra.url}) - if(res.code == 200){ + const res = await voiceToText({ msgId: data.msg_id, voiceUrl: data.extra.url }) + if (res.code == 200) { data.extra.content = res.data.convText - - } + }else data.is_convert_text = 0 } const onloseConvertText=(data: ITalkRecord)=>{ data.is_convert_text = 0 @@ -87,7 +86,7 @@ const onContextMenu = (e:any,item: ITalkRecord) => { }else{ dropdown.value.options=[{ label: '转文字', key: 'convertText' }] } - + dropdown.value.item=item } @@ -96,29 +95,29 @@ const onContextMenu = (e:any,item: ITalkRecord) => { diff --git a/src/event/talk.js b/src/event/talk.js index ef1629e..191f017 100644 --- a/src/event/talk.js +++ b/src/event/talk.js @@ -246,10 +246,10 @@ class Talk extends Base { updated_at: parseTime(new Date()) }) - if (this.talk_type == 1 && this.getAccountId() !== this.sender_id) { + if (this.getAccountId() !== this.sender_id) { ServeClearTalkUnreadNum({ - talk_type: 1, - receiver_id: this.sender_id + talk_type: this.talk_type, + receiver_id: this.talk_type == 1 ? this.sender_id : this.receiver_id }) } } diff --git a/src/hooks/useSessionMenu.ts b/src/hooks/useSessionMenu.ts index b8fd755..9acbdd0 100644 --- a/src/hooks/useSessionMenu.ts +++ b/src/hooks/useSessionMenu.ts @@ -77,11 +77,11 @@ export function useSessionMenu() { // key: 'delete_contact' // }) } else { - options.push({ + // options.push({ - label: '退出群聊', - key: 'signout_group' - }) + // label: '退出群聊', + // key: 'signout_group' + // }) } dropdown.options = [...options] diff --git a/src/store/modules/uploads.ts b/src/store/modules/uploads.ts index 5fa413d..6481fa0 100644 --- a/src/store/modules/uploads.ts +++ b/src/store/modules/uploads.ts @@ -150,7 +150,7 @@ export const useUploadsStore = defineStore('uploads', { } } catch (error) { console.error("初始化分片上传失败:", error); - message.error("初始化上传失败,请重试") + message.error("上传失败,请重试") this.handleUploadError(upload_id, clientUploadId) } }, diff --git a/src/views/message/inner/panel/PanelContent.vue b/src/views/message/inner/panel/PanelContent.vue index 3fc8b63..98c6b04 100644 --- a/src/views/message/inner/panel/PanelContent.vue +++ b/src/views/message/inner/panel/PanelContent.vue @@ -325,7 +325,7 @@ const onConvertText = async (data: ITalkRecord) => { const res = await voiceToText({ msgId: data.msg_id, voiceUrl: data.extra.url }) if (res.code == 200) { data.extra.content = res.data.convText - } + } else data.is_convert_text = 0 } const onloseConvertText = (data: ITalkRecord) => { data.is_convert_text = 0 @@ -354,6 +354,10 @@ const onRowClick = (item: ITalkRecord) => { if (!isOneMonthBefore(item.created_at.split(' ')[0])) { return useMessage.info('只支持转发近一个月内的消息') } + // 语音消息和群公告不支持转发 + if ([4, 13].includes(item.msg_type)) { + return useMessage.info('语音消息和群公告不支持转发') + } console.log('item.msg_type', item.msg_type) if (ForwardableMessageType.includes(item.msg_type)) { item.isCheck = !item.isCheck @@ -435,12 +439,15 @@ const retry = (item: any) => { confirmBox({ content: '确定重发吗' }).then(() => { + item.extra.percentage = 0 uploadsStore.retryCommonUpload(item.extra.upload_id) }) } const onContextMenuAvatar = (e: any, item: any) => { e.preventDefault() + // 单聊不需要@ + if (+props.talk_type === 1) return if (item.float !== 'right') { bus.emit(EditorConst.Mention, { id: item.user_id, @@ -940,7 +947,13 @@ const onCustomSkipBottomEvent = () => { -
+ + + +
{{ item.read_total_num > 0 ? '已读' : '未读' }} diff --git a/src/views/message/inner/panel/menu.ts b/src/views/message/inner/panel/menu.ts index c96ec6c..d31312e 100644 --- a/src/views/message/inner/panel/menu.ts +++ b/src/views/message/inner/panel/menu.ts @@ -71,11 +71,14 @@ export function useMenu() { dropdown.options.push({ label: '复制', key: 'copy' }) } - if (isOneMonthBefore(new Date(item.created_at.split(' ')[0]))) { - // 根据时间判断只有近一个月内的消息才能支持多选 + if (isOneMonthBefore(new Date(item.created_at.split(' ')[0])) && ![4,13].includes(item.msg_type)) { + // 根据时间判断只有近一个月内的消息才能支持多选 // 语音消息和群公告不支持转发 dropdown.options.push({ label: '多选', key: 'multiSelect' }) } - dropdown.options.push({ label: '引用', key: 'quote' }) + if (isOneMonthBefore(new Date(item.created_at.split(' ')[0]))) { + // 根据时间判断只有近一个月内的消息才能支持引用 + dropdown.options.push({ label: '引用', key: 'quote' }) + } if (canAddRevokeOption(uid, item, (dialogueStore.groupInfo as any).is_manager)) { dropdown.options.push({ label: '撤回', key: 'revoke' }); } From 429c30808b0967b4fb242dc4785dfa9bdb69eab8 Mon Sep 17 00:00:00 2001 From: yinkang Date: Mon, 7 Jul 2025 14:27:08 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/image/bofang1.png | Bin 0 -> 2053 bytes src/assets/image/yuyin1.png | Bin 0 -> 3377 bytes src/components/talk/message/AudioMessage.vue | 40 +++++++++++++++--- src/components/user/ContactModal.vue | 12 +++--- src/event/talk.js | 6 +++ .../message/inner/panel/PanelContent.vue | 2 +- src/views/message/inner/panel/PanelFooter.vue | 2 +- 7 files changed, 48 insertions(+), 14 deletions(-) create mode 100644 src/assets/image/bofang1.png create mode 100644 src/assets/image/yuyin1.png diff --git a/src/assets/image/bofang1.png b/src/assets/image/bofang1.png new file mode 100644 index 0000000000000000000000000000000000000000..f4954f87ea398adf72be18ae1ed7c81e68f8788e GIT binary patch literal 2053 zcmd6oYfuwc7={zv!iG+UB`6}Hbb&;SfXYP!XfR6+B*;ahLPQb8h$5FL=qOQ042psf zL%1k{pc1tTMuQ4oP_#w}hI)yLqTw=1k-#VlSg@eMU!3xujRA)W(W0r-Wuw84_*VGcAm7vZdvjn+0tvn;cs$$NS)UY`> zd^ZlWY~G-4G)LLeqQ~|ST&eL}5iP}GiF$>l9aF}d^V}^7g5|HKUV`xw=gNl#g$_)a z4gE9=M)*0|RgE@yNylZ5i?0~nA9rzGCye|jCC}!0OJDU@#YcvuY7V5diAox+R#BKT z`Ea&{O}|aTI z=id1j%oTWHVt|BlYgrU@`T@C!s^PUJ$c$U_X$0=EgN;|g`_@rVj5t_k+|@uM$f2+d zbA_)Ut^i$|+=E$f4?9U=?^)&6W6Y7n?gL`pnDtS|QxrC7CDl)6dR?_#lJ(nJlbH61 zLOD7~*ib>H5R`U)Kn!S>6w6W0rhF@G`aoSY!L6X$RFACYgn1><9 zG$P|eft;)+zBJyPb{W&7=0*uJ_=Gkx;tyL&C2`QIOwEm=sq%OM6`Fotu2P*@Y(Wj( zt2Ud|nUkaoOK3^kGCvUZMI>1pbk~AJg6wT^^Hkg@7GY=e z;3t~5r@Iv0ypb0%WT{>9{xP=mv)Rh~wc)9qrF%KWO}BXlYycG^jD0gr9n2!B1th1$ z;2EQR3%#tH(+|3~Q~(TTu(~i~QgXBtfXYcauFhN}oZ`-K`m%fiz_Mn1H~!(tndH{A zFZ%_)0=tDtUK7r(^)MXX5_ENHM6PXe-1Kn?&VfaJ40f@uU-P!D@O^ZrKJ`=lMbHwG z7Yp=)N@o|#$xwL`^s?-llZ8N4bEnTzyTVzZvcDh4*k?;g3?4wu1B5b9DgzFE4Xgco zu#x7{u9)O!k=^eC=4I}D@m0;}jk?(efDLNu6!o+ioyyxE^$E{aat@SO1_|>XS242k z0iBZbR1vEKO#rNn#9$ADdBEWTPim0&mkO~!f^L3BthQ%E>IHP15HFRVo@c!K~ zu5rK$&53rGf@;tsx0L3iCK)zq2VMW_-U)T)Joo&uBlTJw#hUi<_^jZD$$NN59FQO1 z?DvhF=ohkorfHdCWR9RX@2YjVC!WFHoo`F=<(QF9DNJs4+w2~<;nPF5Pv%yhDHT6=L^@pNGuR`65%;ElE?em?N1s2<{Bl120HQ}j-*@-bC1#IER?BgT2Nw*(-M-xcV^+% zG|H{nYFLLmf)XF(E+GN$lN{K4TAw*%b$v}~9`BTa91s%xCZZgAiU6@K5)WobFb8-) zAPdCB+6&MW?Fuv9&1-H{5EAm`bdW1QWdX5ogqeWBp3r+Y52V<_=oXMGL{}i@_zl1h z{|-3!?|`lQI$)XauMiOa+fSFS+T$e?@tOC7#As6QxhIpxQg+eK1S6<$hv=-5Ek;@5 zmq`|=Mn4?8m1P9cj3$;A;jqru$Z{tV$~Hebq=#U)!O!6lIXEm6cjxs~rtHe#)9y?N r=0eka=y*xv_1e&|u}uFzmaN4Ou-3ZiD@qT8|2mGt3SOY}T`l<&p9^=0 literal 0 HcmV?d00001 diff --git a/src/assets/image/yuyin1.png b/src/assets/image/yuyin1.png new file mode 100644 index 0000000000000000000000000000000000000000..821a8fec56ffe1d0f3b4e17b30f65a447e197597 GIT binary patch literal 3377 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'target') const onPlay = () => { if (state.isAudioPlay) { audioRef.value.pause() + state.isAudioPlay = false } else { audioRef.value.play() + state.isAudioPlay = true + onClickOutside(target, () => { + console.log('点击了外部区域') + audioRef.value.pause() // 关闭当前语音播放 + state.isAudioPlay = false + }) } - - state.isAudioPlay = !state.isAudioPlay } + const onPlayEnd = () => { state.isAudioPlay = false state.progress = 0 @@ -70,10 +84,18 @@ const formatTime = (value: number = 0) => { return `${Math.floor(value)}"` } +const right = props.data.float === 'right' @@ -217,9 +218,10 @@ if(newVal){ :groupType="item.group_type" :customStyle="{width:'42px',height:'42px'}">
-
+
{{ item.name }} - + + {{ `(${item.group_member_num})` }}
diff --git a/src/event/talk.js b/src/event/talk.js index 191f017..e7e7330 100644 --- a/src/event/talk.js +++ b/src/event/talk.js @@ -250,6 +250,12 @@ class Talk extends Base { ServeClearTalkUnreadNum({ talk_type: this.talk_type, receiver_id: this.talk_type == 1 ? this.sender_id : this.receiver_id + }).then(() => { + useTalkStore().updateItem({ + index_name: item.index_name, + unread_num: 0, + atsign_num: 0 + }) }) } } diff --git a/src/views/message/inner/panel/PanelContent.vue b/src/views/message/inner/panel/PanelContent.vue index 98c6b04..ebc797a 100644 --- a/src/views/message/inner/panel/PanelContent.vue +++ b/src/views/message/inner/panel/PanelContent.vue @@ -847,7 +847,7 @@ const onCustomSkipBottomEvent = () => { diff --git a/src/views/message/inner/panel/PanelFooter.vue b/src/views/message/inner/panel/PanelFooter.vue index 6ba23fa..e76a51f 100644 --- a/src/views/message/inner/panel/PanelFooter.vue +++ b/src/views/message/inner/panel/PanelFooter.vue @@ -65,7 +65,7 @@ const onSendMessage = (data = {}, callBack: any) => { if (code == 200) { callBack(true) } else { - window['$message'].warning(message || msg) + // window['$message'].warning(message || msg) } }) .catch(() => { From 13830d748b253f4b8c16d7d5752f8640d0583885 Mon Sep 17 00:00:00 2001 From: yinkang Date: Mon, 7 Jul 2025 15:05:26 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/talk/message/AudioMessage.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/talk/message/AudioMessage.vue b/src/components/talk/message/AudioMessage.vue index 17ae7de..66ecd6d 100644 --- a/src/components/talk/message/AudioMessage.vue +++ b/src/components/talk/message/AudioMessage.vue @@ -1,5 +1,5 @@