From 03e84eab94659f61aaa512daa9385e82b9295f07 Mon Sep 17 00:00:00 2001 From: yinkang Date: Thu, 3 Jul 2025 15:52:49 +0800 Subject: [PATCH] =?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' }); }