chenkun пре 1 месец
родитељ
комит
4a9103af32
2 измењених фајлова са 24 додато и 0 уклоњено
  1. 1 0
      src/api/document.ts
  2. 23 0
      src/views/documents/Index.vue

+ 1 - 0
src/api/document.ts

@@ -19,6 +19,7 @@ export interface DocumentItem {
   conversion_progress: number
   converted_file_name?: string
   converted_file_url?: string
+  json_url?: string
   conversion_error?: string
   error_message?: string // 兼容旧代码
   created_by?: string

+ 23 - 0
src/views/documents/Index.vue

@@ -135,6 +135,11 @@
                   <el-icon><Link /></el-icon> 下载转换后文件
                 </el-link>
               </div>
+              <div class="converted-file-name" v-if="scope.row.json_url">
+                <el-link type="success" :underline="false" @click="handleDownloadJson(scope.row)">
+                  <el-icon><Link /></el-icon> 下载转换后 JSON
+                </el-link>
+              </div>
             </div>
           </template>
         </el-table-column>
@@ -990,15 +995,33 @@ const handleDownloadConverted = (row: DocumentItem) => {
   }
 }
 
+const handleDownloadJson = (row: DocumentItem) => {
+  if (row.json_url) {
+    const filename = `${row.title}_转换后.json`
+    downloadFile(row.json_url, filename)
+  } else {
+    ElMessage.warning('该文档暂无转换后的 JSON 文件')
+  }
+}
+
 const handleConvert = async (row: DocumentItem) => {
   try {
+    // 乐观更新:重置进度
+    row.conversion_status = 1
+    row.conversion_progress = 0
+    row.conversion_error = null
+    
     const res = await documentApi.convert(row.id)
     if (res.code === 0) {
       ElMessage.success(res.message || '转换任务已启动')
       fetchDocuments()
+    } else {
+      // 失败了恢复状态
+      fetchDocuments()
     }
   } catch (error) {
     console.error('启动转换失败:', error)
+    fetchDocuments()
   }
 }