From b880ec22f200103e345e37f399f592da2738eef6 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 24 Aug 2025 22:00:58 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E3=80=90ai=20=E5=A4=A7=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E3=80=91=E5=AF=B9=E8=AF=9D=E5=88=97=E8=A1=A8=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20attachment-urls=20=E5=8F=91=E9=80=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/file.ts | 18 +++++++++++++ .../index/components/message/MessageFiles.vue | 11 +------- .../index/components/message/MessageList.vue | 5 +++- src/views/ai/chat/index/index.vue | 27 +++++++++++++++---- 4 files changed, 45 insertions(+), 16 deletions(-) diff --git a/src/utils/file.ts b/src/utils/file.ts index c8bccbd30..e40651932 100644 --- a/src/utils/file.ts +++ b/src/utils/file.ts @@ -17,3 +17,21 @@ export const isImage = (filename: string): boolean => { const ext = filename.split('.').pop()?.toLowerCase() || '' return ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg'].includes(ext) } + +/** 格式化文件大小 */ +export const formatFileSize = (bytes: number): string => { + if (bytes === 0) return '0 B' + const k = 1024 + const sizes = ['B', 'KB', 'MB', 'GB'] + const i = Math.floor(Math.log(bytes) / Math.log(k)) + return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i] +} + +/** 获取文件图标 */ +export const getFileIcon = (filename: string): string => { + const ext = filename.split('.').pop()?.toLowerCase() || '' + if (isImage(ext)) { + return 'ep:picture' + } + return 'ep:document' +} diff --git a/src/views/ai/chat/index/components/message/MessageFiles.vue b/src/views/ai/chat/index/components/message/MessageFiles.vue index 9362c994b..3a9982430 100644 --- a/src/views/ai/chat/index/components/message/MessageFiles.vue +++ b/src/views/ai/chat/index/components/message/MessageFiles.vue @@ -23,7 +23,7 @@