diff --git a/src/utils/index.ts b/src/utils/index.ts index 2c2fbbd0..09e6f86d 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -116,6 +116,64 @@ export function toAnyString() { return str } +/** + * 根据支持的文件类型生成 accept 属性值 + * + * @param supportedFileTypes 支持的文件类型数组,如 ['PDF', 'DOC', 'DOCX'] + * @returns 用于文件上传组件 accept 属性的字符串 + */ +export const generateAcceptedFileTypes = (supportedFileTypes: string[]): string => { + const allowedExtensions = supportedFileTypes.map((ext) => ext.toLowerCase()) + const mimeTypes: string[] = [] + + // 添加常见的 MIME 类型映射 + if (allowedExtensions.includes('txt')) { + mimeTypes.push('text/plain') + } + if (allowedExtensions.includes('pdf')) { + mimeTypes.push('application/pdf') + } + if (allowedExtensions.includes('html') || allowedExtensions.includes('htm')) { + mimeTypes.push('text/html') + } + if (allowedExtensions.includes('csv')) { + mimeTypes.push('text/csv') + } + if (allowedExtensions.includes('xlsx') || allowedExtensions.includes('xls')) { + mimeTypes.push('application/vnd.ms-excel') + mimeTypes.push('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') + } + if (allowedExtensions.includes('docx') || allowedExtensions.includes('doc')) { + mimeTypes.push('application/msword') + mimeTypes.push('application/vnd.openxmlformats-officedocument.wordprocessingml.document') + } + if (allowedExtensions.includes('pptx') || allowedExtensions.includes('ppt')) { + mimeTypes.push('application/vnd.ms-powerpoint') + mimeTypes.push('application/vnd.openxmlformats-officedocument.presentationml.presentation') + } + if (allowedExtensions.includes('xml')) { + mimeTypes.push('application/xml') + mimeTypes.push('text/xml') + } + if (allowedExtensions.includes('md') || allowedExtensions.includes('markdown')) { + mimeTypes.push('text/markdown') + } + if (allowedExtensions.includes('epub')) { + mimeTypes.push('application/epub+zip') + } + if (allowedExtensions.includes('eml')) { + mimeTypes.push('message/rfc822') + } + if (allowedExtensions.includes('msg')) { + mimeTypes.push('application/vnd.ms-outlook') + } + + // 添加文件扩展名 + const extensions = allowedExtensions.map((ext) => `.${ext}`) + + return [...mimeTypes, ...extensions].join(',') +} + /** * 首字母大写 */ diff --git a/src/views/ai/knowledge/document/create/UploadStep.vue b/src/views/ai/knowledge/document/create/UploadStep.vue index 5d190f7a..53a5af44 100644 --- a/src/views/ai/knowledge/document/create/UploadStep.vue +++ b/src/views/ai/knowledge/document/create/UploadStep.vue @@ -1,93 +1,76 @@ - + diff --git a/src/views/ai/knowledge/document/create/index.vue b/src/views/ai/knowledge/document/create/index.vue index d8724048..3b57e458 100644 --- a/src/views/ai/knowledge/document/create/index.vue +++ b/src/views/ai/knowledge/document/create/index.vue @@ -90,12 +90,7 @@ const steps = [{ title: '上传文档' }, { title: '文档分段' }, { title: ' // 表单数据 const formData = ref({ id: undefined, - name: '', - knowledgeBaseId: undefined, - documentType: undefined, - content: '', - file: null, - segments: [], + list: [], // 用于存储上传的文件列表 status: 0 // 0: 草稿, 1: 处理中, 2: 已完成 })