From 03e84eab94659f61aaa512daa9385e82b9295f07 Mon Sep 17 00:00:00 2001 From: yinkang Date: Thu, 3 Jul 2025 15:52:49 +0800 Subject: [PATCH 1/4] =?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 481719a685ff752768069b33edd024505db6dbec Mon Sep 17 00:00:00 2001 From: wangyifeng <812766448@qq.com> Date: Fri, 4 Jul 2025 11:38:57 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E9=AB=98=E4=BA=AE=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=A2=9E=E5=8A=A0=E5=AF=8C=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=A4=84=E7=90=86=EF=BC=8C=E8=83=BD=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE=E6=98=BE=E7=A4=BA=E8=A1=A8=E6=83=85=E3=80=81=E6=8D=A2?= =?UTF-8?q?=E8=A1=8C=E7=AC=A6=E7=AD=89=EF=BC=9B=E8=A7=86=E9=A2=91=E7=B1=BB?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E8=83=BD=E7=9B=B4=E6=8E=A5=E5=9C=A8=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E8=AE=B0=E5=BD=95=E4=B8=AD=E6=9F=A5=E7=9C=8B=E5=B9=B6?= =?UTF-8?q?=E6=92=AD=E6=94=BE=EF=BC=9B=E5=A4=84=E7=90=86=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E6=A0=A1=E9=AA=8C=EF=BC=8C=E9=A2=84=E8=A7=88?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=89=8D=E5=85=88=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/search/highLightText.vue | 148 +++++++++++++++++--- src/components/search/searchByCondition.vue | 17 ++- src/components/search/searchItem.vue | 21 +-- src/utils/helper/form.js | 26 ++++ 4 files changed, 175 insertions(+), 37 deletions(-) diff --git a/src/components/search/highLightText.vue b/src/components/search/highLightText.vue index 2839885..98c8fef 100644 --- a/src/components/search/highLightText.vue +++ b/src/components/search/highLightText.vue @@ -1,70 +1,172 @@