feat: 优化聊天附件拖拽上传提示

- 不支持格式改用轻量提示并展示支持范围

- 扩展拖拽区域并增加全区上传覆盖层

- 补充文档和图片格式校验测试
This commit is contained in:
2026-07-31 09:19:11 +08:00
parent 2267517fd8
commit 0b764b79de
7 changed files with 242 additions and 67 deletions

View File

@@ -14,7 +14,10 @@ import type {
import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue';
import { ChatTimeline } from '@easyflow/common-ui';
import {
CHAT_DOCUMENT_SUPPORTED_FORMATS,
ChatTimeline,
} from '@easyflow/common-ui';
import { BrushCleaning } from '@easyflow/icons';
import { copyTextToClipboard } from '@easyflow/utils';
@@ -26,6 +29,7 @@ import {
loadAgentChatImage,
} from '#/components/ai-chat/mediaApi';
import { useAgentComposerDraft } from '#/components/ai-chat/useAgentComposerDraft';
import { CHAT_IMAGE_SUPPORTED_FORMATS } from '#/components/ai-chat/useChatImageUploads';
import { approveAgentRun, rejectAgentRun } from '../api';
import { useAgentTryoutStream } from '../composables/useAgentTryoutStream';
@@ -214,12 +218,21 @@ async function handleAddImageFiles(files: File[]) {
return;
}
await composer.ensureSession();
const rejected = await composer.images.addFiles(files, {
agentId: String(props.agent.id),
mode: 'DRAFT',
sessionId: composer.sessionId.value,
});
if (rejected > 0) {
const { rejectedCount, unsupportedCount } = await composer.images.addFiles(
files,
{
agentId: String(props.agent.id),
mode: 'DRAFT',
sessionId: composer.sessionId.value,
},
);
if (unsupportedCount > 0) {
ElMessage.warning({
grouping: true,
message: `不支持该图片格式,支持:${CHAT_IMAGE_SUPPORTED_FORMATS}`,
});
}
if (rejectedCount > 0) {
ElMessage.warning('每次最多添加 5 张图片');
}
composer.scheduleSave();
@@ -231,12 +244,21 @@ async function handleAddDocumentFiles(files: File[]) {
return;
}
await composer.ensureSession();
const rejected = await composer.documents.addFiles(files, {
agentId: String(props.agent.id),
mode: 'DRAFT',
sessionId: composer.sessionId.value,
});
if (rejected > 0) {
const { rejectedCount, unsupportedCount } = await composer.documents.addFiles(
files,
{
agentId: String(props.agent.id),
mode: 'DRAFT',
sessionId: composer.sessionId.value,
},
);
if (unsupportedCount > 0) {
ElMessage.warning({
grouping: true,
message: `不支持该文件格式,支持:${CHAT_DOCUMENT_SUPPORTED_FORMATS}`,
});
}
if (rejectedCount > 0) {
ElMessage.warning('每轮最多添加 3 份文档');
}
composer.scheduleSave();