diff --git a/frontend/auto-imports.d.ts b/frontend/auto-imports.d.ts index 87319db..2d82a80 100644 --- a/frontend/auto-imports.d.ts +++ b/frontend/auto-imports.d.ts @@ -3,6 +3,7 @@ // @ts-nocheck // noinspection JSUnusedGlobalSymbols // Generated by unplugin-auto-import +// biome-ignore lint: disable export {} declare global { const EffectScope: typeof import('vue')['EffectScope'] @@ -71,6 +72,6 @@ declare global { // for type re-export declare global { // @ts-ignore - export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue' + export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' import('vue') } diff --git a/frontend/src/components/chat/ChatMessage.vue b/frontend/src/components/chat/ChatMessage.vue index 23b14fd..3b36d95 100644 --- a/frontend/src/components/chat/ChatMessage.vue +++ b/frontend/src/components/chat/ChatMessage.vue @@ -45,7 +45,7 @@
@@ -57,14 +57,14 @@ />
- {{ item.message }} + {{ item.file_name }}
@@ -138,7 +139,7 @@ />
- {{ item.message }} + {{ item.file_name }}
@@ -191,7 +192,7 @@ diff --git a/frontend/src/stores/chat.ts b/frontend/src/stores/chat.ts index d978ce9..e7f8535 100644 --- a/frontend/src/stores/chat.ts +++ b/frontend/src/stores/chat.ts @@ -195,13 +195,18 @@ export const useChatStore = defineStore('chatStore', () => { const initChatList = async () => { console.log("收到消息被刷新了!!!!") const userSessionList = await db.getAll("workbenchSessionList"); + // 给userSessionList去一次重 + const uniqueUserSessionList = userSessionList.filter((item: any, index: number, self: any[]) => + index === self.findIndex((t: any) => t.chatId === item.chatId) + ); + // 确保groupList已加载 if (groupList.value.length > 0) { // 合并两个数组 - chatList.value = [...userSessionList, ...groupList.value]; + chatList.value = [...uniqueUserSessionList, ...groupList.value]; } else { // 如果groupList为空,只使用userSessionList - chatList.value = [...userSessionList]; + chatList.value = [...uniqueUserSessionList]; } }; @@ -318,29 +323,31 @@ export const useChatStore = defineStore('chatStore', () => { Message.content_type = 'file'; Message.userId = userInfo.value.id; Message.toUserId = targetChatId.value; - Message.message = "data/userData/1" + sendInfo.value[0]; + Message.message = sendInfo.value[0]; Message.to_groupid = targetGroupInfo.value?.group_id || ''; Message.userInfo = {}; } // 发送文件消息 - - console.log("token", config.userInfo.token) - const res = await fetchPost(config.userInfo.url + '/chat/send', JSON.stringify(Message)); console.log(res) if (!res.ok) { fileSendActive.value = false; return; } + const fileInfo = await res.json() // 封装成消息历史记录 const messageHistory = { ...Message, isMe: true, + file_path: Message.message, + file_name: Message.message.split('/').pop(), + file_size: fileInfo.data.file_info.size, + previewMessage: "[文件消息]", previewTimeFormat: formatTime(Date.now()), displayName: userInfo.value.nickname, chatId: Message.type === 'group' ? targetGroupInfo.value.chatId : targetUserInfo.value.chatId, - avatar: Message.type === 'group' ? targetUserInfo.value.avatar : '', + avatar: userInfo.value.avatar, createdAt: Date.now() }; @@ -669,6 +676,7 @@ export const useChatStore = defineStore('chatStore', () => { return } + console.log("data---------", data) // 添加消息记录 const addMessageHistory = { type: data.type, @@ -678,9 +686,12 @@ export const useChatStore = defineStore('chatStore', () => { toUserId: data.toUserId, chatId: data.toUserId, isMe: false, + file_path: data.message, + file_name: data.file_info.origin_name, + file_size: data.file_info.size, content_type: data.content_type, to_groupid: data.to_groupid, - previewMessage: data.message, + previewMessage: "", previewTimeFormat: formatTime(Date.now()), displayName: data.userInfo.nickname, avatar: data.userInfo.avatar, @@ -689,9 +700,12 @@ export const useChatStore = defineStore('chatStore', () => { if (data.content_type === 'image') { addMessageHistory.message = await getImageSrc(data.message) + addMessageHistory.previewMessage = "[图片消息]" } else if (data.content_type === 'text') { addMessageHistory.message = data.message + addMessageHistory.previewMessage = data.message } else if (data.content_type === 'file') { + addMessageHistory.previewMessage = "[文件消息]" addMessageHistory.message = data.message } @@ -994,6 +1008,9 @@ export const useChatStore = defineStore('chatStore', () => { type: data.type, chatId: data.to_groupid, isMe: false, + file_path: data.message, + file_name: data.file_info.origin_name, + file_size: data.file_info.size, previewTimeFormat: formatTime(Date.now()), displayName: data.userInfo.nickname, // 发送者昵称 avatar: data.userInfo.avatar, @@ -1046,10 +1063,10 @@ export const useChatStore = defineStore('chatStore', () => { // 从groupList中删除 groupList.value = groupList.value.filter((group: any) => group.group_id !== group_id) await db.deleteByField("workbenchGroupUserList", "group_id", group_id) - initChatList() targetGroupInfo.value = {} targetChatId.value = '' drawerVisible.value = false + initChatList() notifySuccess("退出群聊成功") } @@ -1070,12 +1087,17 @@ export const useChatStore = defineStore('chatStore', () => { imageMessage = '/' + imageMessage; } - const path = userInfo.value.url + "/chat/image/view?path=" + imageMessage; + const path = config.userInfo.url + "/chat/image/view?path=" + imageMessage; const response = await fetchGet(path); - if (!response.ok) { return ''; } + + // 检查返回的内容类型 + const contentType = response.headers.get("Content-Type"); + console.log("Content-Type:", contentType); + + const blob = await response.blob(); // 获取 Blob 对象 return new Promise((resolve) => { const reader = new FileReader();