Prechádzať zdrojové kódy

fix(editor): 修复新建报告上传文件功能

- 在 parseApi 中添加 upload 方法
- 新建报告对话框的上传功能现在会调用 /api/v1/parse/upload
- 上传的文件会触发后端解析
- 上传成功后自动关联到新建的报告
何文松 3 týždňov pred
rodič
commit
5516efae5c

+ 14 - 0
frontend/vue-demo/src/api/index.js

@@ -314,6 +314,20 @@ export const taskCenterApi = {
 // ==================== 解析 API ====================
 
 export const parseApi = {
+  // 上传文件并解析
+  upload(file, templateId = null) {
+    const formData = new FormData()
+    formData.append('file', file)
+    if (templateId) {
+      formData.append('templateId', templateId)
+    }
+    return api.post('/parse/upload', formData, {
+      headers: {
+        'Content-Type': 'multipart/form-data'
+      }
+    })
+  },
+
   // 启动文档解析
   startParse(documentId) {
     return api.post(`/parse/start/${documentId}`)

+ 8 - 4
frontend/vue-demo/src/views/Editor.vue

@@ -642,7 +642,7 @@ import {
 } from '@element-plus/icons-vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import { useTemplateStore } from '@/stores/template'
-import { documentApi, templateApi } from '@/api'
+import { documentApi, templateApi, parseApi } from '@/api'
 
 const router = useRouter()
 const route = useRoute()
@@ -903,11 +903,15 @@ async function handleConfirmCreateReport() {
     // 先创建报告
     const newReport = await templateApi.create({ name: newReportName.value.trim() })
     
-    // 如果是上传模式且有文件,上传文件
+    // 如果是上传模式且有文件,上传文件并触发解析
     if (newReportType.value === 'upload' && newReportFile.value) {
       try {
-        await sourceFileApi.upload(newReport.id, newReportFile.value)
-        ElMessage.success('报告创建成功,文件上传中...')
+        const uploadResult = await parseApi.upload(newReportFile.value, newReport.id)
+        ElMessage.success('报告创建成功,文件已上传并开始解析')
+        // 如果返回了文档ID,更新报告的关联
+        if (uploadResult && uploadResult.documentId) {
+          newReport.baseDocumentId = uploadResult.documentId
+        }
       } catch (uploadError) {
         console.error('文件上传失败:', uploadError)
         ElMessage.warning('报告已创建,但文件上传失败')