From b65f38f02e9bcc0b81b2a3c13ecdb089332bf665 Mon Sep 17 00:00:00 2001 From: Phoenix <64720302+Concur-max@users.noreply.github.com> Date: Tue, 20 May 2025 15:32:20 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=A3=B0=E6=98=8E=EF=BC=8C=E7=A7=BB=E9=99=A4SearchByCondition?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E6=94=AF=E6=8C=81=EF=BC=9B=E8=B0=83=E6=95=B4?= =?UTF-8?q?FileMessage.vue=E4=B8=AD=E7=9A=84=E6=96=87=E4=BB=B6=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E4=BA=8B=E4=BB=B6=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96SysGroupAdminMessage.vue=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=9B=E4=BF=AE=E5=A4=8Dauth.js=E4=B8=AD?= =?UTF-8?q?=E7=9A=84token=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components.d.ts | 1 - src/components/editor/Editor.vue | 1 - src/components/talk/message/FileMessage.vue | 13 ++++++++++++- .../talk/message/system/SysGroupAdminMessage.vue | 3 +-- src/utils/auth.js | 2 +- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/components.d.ts b/components.d.ts index e34b33b..3e9678b 100644 --- a/components.d.ts +++ b/components.d.ts @@ -67,7 +67,6 @@ declare module 'vue' { RevokeMessage: typeof import('./src/components/talk/message/RevokeMessage.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] - SearchByCondition: typeof import('./src/components/search/searchByCondition.vue')['default'] SearchItem: typeof import('./src/components/search/searchItem.vue')['default'] SearchList: typeof import('./src/components/search/searchList.vue')['default'] SysGroupAdminMessage: typeof import('./src/components/talk/message/system/SysGroupAdminMessage.vue')['default'] diff --git a/src/components/editor/Editor.vue b/src/components/editor/Editor.vue index 072badb..6750bae 100644 --- a/src/components/editor/Editor.vue +++ b/src/components/editor/Editor.vue @@ -577,7 +577,6 @@ function hideMentionDom() { * @param data 消息数据 */ function onSubscribeEdit(data: any) { - console.log('data', data) const quill = getQuill() if (!quill) return diff --git a/src/components/talk/message/FileMessage.vue b/src/components/talk/message/FileMessage.vue index ae2c62f..bb6ed7c 100644 --- a/src/components/talk/message/FileMessage.vue +++ b/src/components/talk/message/FileMessage.vue @@ -83,10 +83,21 @@ const circumference = computed(() => 2 * Math.PI * radius) const strokeDashoffset = computed(() => circumference.value * (1 - (props.extra.percentage || 0) / 100) ) + +// 处理文件点击事件 +const handleClick = () => { + console.log('props.extra', props.extra); + + window.open( + `http://localhost:5500/?url=${props.extra.path}`, + '_blank', + 'width=800,height=600,left=200,top=200,toolbar=no,menubar=no,scrollbars=yes,resizable=yes,location=no,status=no' + ); +} diff --git a/src/components/talk/message/TextMessage.vue b/src/components/talk/message/TextMessage.vue index 11561cf..49895dc 100644 --- a/src/components/talk/message/TextMessage.vue +++ b/src/components/talk/message/TextMessage.vue @@ -43,7 +43,7 @@ textContent = textReplaceEmoji(textContent) min-height: 30px; padding: 3px; color: var(--im-message-left-text-color); - background: var(--im-message-left-bg-color); + background: #F4F4FC; border-radius: 0px 10px 10px 10px; font-size: 14px; &.right { diff --git a/src/hooks/useSessionMenu.ts b/src/hooks/useSessionMenu.ts index 4e5d8b6..4a22416 100644 --- a/src/hooks/useSessionMenu.ts +++ b/src/hooks/useSessionMenu.ts @@ -1,17 +1,5 @@ import { reactive, nextTick, computed, h, inject } from 'vue' import { ISession } from '@/types/chat' -import { renderIcon } from '@/utils/util' -import { - ArrowUp, - ArrowDown, - Logout, - Delete, - Clear, - Remind, - CloseRemind, - EditTwo, - IdCard -} from '@icon-park/vue-next' import { ServeTopTalkList, ServeDeleteTalkList, ServeSetNotDisturb } from '@/api/chat' import { useDialogueStore, useTalkStore } from '@/store' import { ServeSecedeGroup } from '@/api/group' @@ -52,45 +40,45 @@ export function useSessionMenu() { if (item.talk_type == 1) { options.push({ - icon: renderIcon(IdCard), + label: '好友信息', key: 'info' }) options.push({ - icon: renderIcon(EditTwo), + label: '修改备注', key: 'remark' }) } options.push({ - icon: renderIcon(item.is_top ? ArrowDown : ArrowUp), + label: item.is_top ? '取消置顶' : '会话置顶', key: 'top' }) options.push({ - icon: renderIcon(item.is_disturb ? Remind : CloseRemind), + label: item.is_disturb ? '关闭免打扰' : '开启免打扰', key: 'disturb' }) options.push({ - icon: renderIcon(Clear), + label: '移除会话', key: 'remove' }) if (item.talk_type == 1) { options.push({ - icon: renderIcon(Delete), + label: '删除好友', key: 'delete_contact' }) } else { options.push({ - icon: renderIcon(Logout), + label: '退出群聊', key: 'signout_group' }) diff --git a/src/store/modules/talk.ts b/src/store/modules/talk.ts index bdd7dfb..c2feae8 100644 --- a/src/store/modules/talk.ts +++ b/src/store/modules/talk.ts @@ -93,6 +93,7 @@ export const useTalkStore = defineStore('talk', { resp.then(({ code, data }) => { if (code == 200) { + this.items = data.items.map((item: any) => { const value = formatTalkItem(item) @@ -104,7 +105,6 @@ export const useTalkStore = defineStore('talk', { if (value.is_robot == 1) { value.is_online = 1 } - return value }) diff --git a/src/views/message/inner/IndexSider.vue b/src/views/message/inner/IndexSider.vue index 1fde2e7..8b59aa4 100644 --- a/src/views/message/inner/IndexSider.vue +++ b/src/views/message/inner/IndexSider.vue @@ -229,15 +229,22 @@ const state = reactive({ }) const items = computed((): ISession[] => { - if (searchKeyword.value.length === 0) { - return talkStore.talkItems + let filtered = talkStore.talkItems + + if (searchKeyword.value.length > 0) { + filtered = filtered.filter((item: ISession) => { + let keyword = item.remark || item.name + return keyword.toLowerCase().indexOf(searchKeyword.value.toLowerCase()) != -1 + }) } - return talkStore.talkItems.filter((item: ISession) => { - let keyword = item.remark || item.name + // 置顶和非置顶分组 + const topItems = filtered + .filter(item => item.is_top === 1) + .sort((a, b) => new Date(b.updated_at).getTime() - new Date(a.updated_at).getTime()) + const normalItems = filtered.filter(item => item.is_top !== 1) - return keyword.toLowerCase().indexOf(searchKeyword.value.toLowerCase()) != -1 - }) + return [...topItems, ...normalItems] }) watch( () => talkStore, diff --git a/src/views/message/inner/TalkItem.vue b/src/views/message/inner/TalkItem.vue index fb11c5a..fca0330 100644 --- a/src/views/message/inner/TalkItem.vue +++ b/src/views/message/inner/TalkItem.vue @@ -19,7 +19,7 @@ const labelColor=[