Bläddra i källkod

修改canvas-editor显示高度及添加文献处理结果预览

yangg 7 månader sedan
förälder
incheckning
291061d085

+ 2 - 2
.env.development

@@ -3,8 +3,8 @@ ENV = 'development'
 port = 8080
 # base api
 VUE_APP_BASE_AI_API='https://ylaiapi.raycos.com.cn'
-VUE_APP_BASE_API = 'http://183.195.216.54:8084'
-#192.168.66.208
+VUE_APP_BASE_API = 'http://192.168.66.163:8084'
+#192.168.66.187
 #朱:192.168.66.163
 #测试服务器:121.36.251.245
 #线上:183.195.216.54

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/index.html


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/css/app.8bb6fcaa.css


+ 1 - 1
dist/static/css/chunk-e08ed888.c0a04e79.css → dist/static/css/chunk-0c9d75e0.db2dda92.css

@@ -1 +1 @@
-.editor-area ::v-deep .cke_top{display:block}.project-input-container{padding:20px}.pagination-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.editor-area .cke_top{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:6px 8px!important}.editor-area .cke_top,.editor-area .cke_top .cke_toolgroup{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.editor-area .cke_top .cke_toolgroup{margin:0 2px;display:-webkit-box;display:-ms-flexbox;display:flex}.editor-area .cke_top .cke_toolbar{float:none!important;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cke_chrome{width:100%!important}.content-cell{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.content-cell .content-text{-webkit-box-flex:1;-ms-flex:1;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:430px}.custom-tooltip{min-width:200px!important;line-height:1.5;word-break:break-all;white-space:pre-wrap}.custom-tooltip .el-tooltip__popper{padding:10px!important;font-size:12px}
+.editor-area ::v-deep .cke_top{display:block}.project-input-container{padding:20px}.pagination-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.editor-area .cke_top{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:6px 8px!important}.editor-area .cke_top,.editor-area .cke_top .cke_toolgroup{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.editor-area .cke_top .cke_toolgroup{margin:0 2px;display:-webkit-box;display:-ms-flexbox;display:flex}.editor-area .cke_top .cke_toolbar{float:none!important;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cke_chrome{width:100%!important}.content-cell{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.content-cell .content-text{-webkit-box-flex:1;-ms-flex:1;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:430px}.custom-tooltip{min-width:200px!important;line-height:1.5;word-break:break-all;white-space:pre-wrap}.custom-tooltip .el-tooltip__popper{padding:10px!important;font-size:12px}::v-deep .el-dialog{margin-top:0!important}

+ 1 - 0
dist/static/css/chunk-199c449c.0157d636.css

@@ -0,0 +1 @@
+.gpu-list[data-v-78a78f32]{padding:20px}.filter-section[data-v-78a78f32]{margin-bottom:20px}.ml-15[data-v-78a78f32]{margin-left:15px}.pagination[data-v-78a78f32]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:15px}.progress-wrapper[data-v-78a78f32],.status-wrapper[data-v-78a78f32]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-transition:none!important;transition:none!important}.progress-wrapper[data-v-78a78f32]{padding:2px}.progress-wrapper[data-v-78a78f32] .el-progress{line-height:1;-webkit-transition:none!important;transition:none!important}.progress-wrapper[data-v-78a78f32] .el-progress .el-progress__text{font-size:12px!important;color:inherit;-webkit-transition:none!important;transition:none!important}.progress-wrapper[data-v-78a78f32] .el-progress .el-progress-circle{margin:0;-webkit-transition:none!important;transition:none!important}.progress-wrapper[data-v-78a78f32] .el-progress .el-progress-circle__path,.progress-wrapper[data-v-78a78f32] .el-progress .el-progress-circle__track,.progress-wrapper[data-v-78a78f32] .el-progress svg{-webkit-transition:none!important;transition:none!important}

+ 0 - 0
dist/static/css/chunk-038644fe.1d59ca2f.css → dist/static/css/chunk-1a853461.1d59ca2f.css


+ 0 - 1
dist/static/css/chunk-3429c79e.29a5f1a6.css

@@ -1 +0,0 @@
-.gpu-list[data-v-0476dc06]{padding:20px}.filter-section[data-v-0476dc06]{margin-bottom:20px}.ml-15[data-v-0476dc06]{margin-left:15px}.pagination[data-v-0476dc06]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:15px}.progress-wrapper[data-v-0476dc06],.status-wrapper[data-v-0476dc06]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-transition:none!important;transition:none!important}.progress-wrapper[data-v-0476dc06]{padding:2px}.progress-wrapper[data-v-0476dc06] .el-progress{line-height:1;-webkit-transition:none!important;transition:none!important}.progress-wrapper[data-v-0476dc06] .el-progress .el-progress__text{font-size:12px!important;color:inherit;-webkit-transition:none!important;transition:none!important}.progress-wrapper[data-v-0476dc06] .el-progress .el-progress-circle{margin:0;-webkit-transition:none!important;transition:none!important}.progress-wrapper[data-v-0476dc06] .el-progress .el-progress-circle__path,.progress-wrapper[data-v-0476dc06] .el-progress .el-progress-circle__track,.progress-wrapper[data-v-0476dc06] .el-progress svg{-webkit-transition:none!important;transition:none!important}

+ 1 - 0
dist/static/css/chunk-3ecbedba.45f99df9.css

@@ -0,0 +1 @@
+.midd-page[data-v-187ef2ab]{padding:20px}.el-icon-edit[data-v-187ef2ab]{font-size:14px;color:#409eff}[data-v-187ef2ab] .model-gen-1{background-color:#e6f3ff!important}[data-v-187ef2ab] .model-gen-1.el-table__cell{background-color:#e6f3ff!important;color:#333!important}[data-v-187ef2ab] .model-gen-2{background-color:#f0e6ff!important}[data-v-187ef2ab] .model-gen-2.el-table__cell{background-color:#f0e6ff!important;color:#333!important}.header[data-v-187ef2ab]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:15px 0}.h_left[data-v-187ef2ab],.header[data-v-187ef2ab]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.h_left p[data-v-187ef2ab]{margin-right:45px;margin-top:0}.search-container[data-v-187ef2ab]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.search-box[data-v-187ef2ab]{width:350px}.custom-search-input[data-v-187ef2ab] :deep(.el-input__inner){height:40px;line-height:40px;border-right:none;border-radius:4px 0 0 4px}.custom-search-input[data-v-187ef2ab] :deep(.el-input-group__append){padding:0;border:none;background-color:transparent}.custom-search-input[data-v-187ef2ab] :deep(.el-input-group__append .el-button){height:40px;padding:0 20px;border-radius:0 4px 4px 0;margin:0}.custom-search-input[data-v-187ef2ab] :deep(.el-input__inner:hover){border-color:#dcdfe6}.custom-search-input[data-v-187ef2ab] :deep(.el-input__inner:focus){border-color:#409eff}

+ 1 - 0
dist/static/css/chunk-4444d405.e9834231.css

@@ -0,0 +1 @@
+.information-container[data-v-44510f64]{padding:20px}.pagination-container[data-v-44510f64]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.content-cell[data-v-44510f64]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.content-cell .content-text[data-v-44510f64]{-webkit-box-flex:1;-ms-flex:1;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:430px}[data-v-44510f64] .el-dialog{margin-top:0!important}

+ 0 - 1
dist/static/css/chunk-4a670a7f.e09c1a2a.css

@@ -1 +0,0 @@
-.midd-page[data-v-779c8190]{padding:20px}.el-icon-edit[data-v-779c8190]{font-size:14px;color:#409eff}[data-v-779c8190] .model-gen-1{background-color:#e6f3ff!important}[data-v-779c8190] .model-gen-1.el-table__cell{background-color:#e6f3ff!important;color:#333!important}[data-v-779c8190] .model-gen-2{background-color:#f0e6ff!important}[data-v-779c8190] .model-gen-2.el-table__cell{background-color:#f0e6ff!important;color:#333!important}.header[data-v-779c8190]{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:15px 0}.h_left[data-v-779c8190],.header[data-v-779c8190]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.h_left p[data-v-779c8190]{margin-right:45px;margin-top:0}.search-container[data-v-779c8190]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.search-box[data-v-779c8190]{width:350px}.custom-search-input[data-v-779c8190] :deep(.el-input__inner){height:40px;line-height:40px;border-right:none;border-radius:4px 0 0 4px}.custom-search-input[data-v-779c8190] :deep(.el-input-group__append){padding:0;border:none;background-color:transparent}.custom-search-input[data-v-779c8190] :deep(.el-input-group__append .el-button){height:40px;padding:0 20px;border-radius:0 4px 4px 0;margin:0}.custom-search-input[data-v-779c8190] :deep(.el-input__inner:hover){border-color:#dcdfe6}.custom-search-input[data-v-779c8190] :deep(.el-input__inner:focus){border-color:#409eff}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/css/chunk-76f31e75.ebffb6ca.css


+ 0 - 1
dist/static/css/chunk-c0d178b4.1c50d5e8.css

@@ -1 +0,0 @@
-.information-container[data-v-12fd5726]{padding:20px}.pagination-container[data-v-12fd5726]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.content-cell[data-v-12fd5726]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.content-cell .content-text[data-v-12fd5726]{-webkit-box-flex:1;-ms-flex:1;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:430px}

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/app.7e7cce7c.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/app.e1256cff.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/chunk-0c9d75e0.4b858ba3.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/chunk-199c449c.3b51c376.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/chunk-1a853461.887c4a29.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/chunk-3429c79e.5ffbf1cb.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/chunk-3ecbedba.c2c4c65f.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/chunk-4444d405.f0a365c5.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/chunk-4a670a7f.4561d794.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/chunk-76f31e75.f214ea5f.js


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
dist/static/js/chunk-c0d178b4.600a5f90.js


+ 4 - 2
src/components/CanvasEditor/index.vue

@@ -2143,6 +2143,8 @@ export default {
 /*  @import url("./styles.scss");  */
 .canvas-editor-wrapper {
   position: relative;
+  height: 100%; // 添加固定高度
+  overflow: hidden; // 防止内容溢出
   .canvas-container {
     .footer {
       position: static;
@@ -2161,9 +2163,9 @@ export default {
       position: static;
       display: flex;
       flex-direction: column;
-      height: calc(100% - 90px); /* 减去header和footer的高度 */
+      height: 700px;//calc(100% - 90px); /* 减去header和footer的高度 */
       background-color: #f2f4f7;
-      overflow-y: auto; /* 仅让Main区域可滚动 */
+      overflow: auto; /* 仅让Main区域可滚动 */
       flex-grow: 1; /* 让Main区域占据剩余空间 */
     }
     @media (max-width: 1220px) {

+ 15 - 9
src/views/Information/index.vue

@@ -127,15 +127,17 @@
       :close-on-click-modal="false"
       width="80%"
     >
-      <CanvasEditor
-        ref="wordEditor"
-        :edit-mode="Modetype"
-        :html-data="htmlData"
-        :doc-json="docJson"
-        :key="keys"
-        @save="save"
-        @is-save="getSave"
-      ></CanvasEditor>
+      <div style="overflow: auto">
+        <CanvasEditor
+          ref="wordEditor"
+          :edit-mode="Modetype"
+          :html-data="htmlData"
+          :doc-json="docJson"
+          :key="keys"
+          @save="save"
+          @is-save="getSave"
+        ></CanvasEditor>
+      </div>
       <!--   </el-form-item>
         </el-form> -->
       <div slot="footer">
@@ -432,4 +434,8 @@ export default {
     max-width: 430px; // 可以根据需要调整最大宽度
   }
 }
+/* 添加以下样式 */
+::v-deep .el-dialog {
+  margin-top: 0 !important;
+}
 </style>

+ 24 - 10
src/views/middPage/index.vue

@@ -27,6 +27,7 @@
         </p>
       </div>
     </div>
+    <div><el-button @click="handlePreview">预览</el-button></div>
     <el-table :data="firstTableData" style="width: 100%">
       <el-table-column
         label="项目"
@@ -248,8 +249,8 @@
       title="配置模型"
       width="40%"
     >
-     <el-form :model="firstForm.configForm" label-width="120px">
-         <!-- <el-form-item label="模型1">
+      <el-form :model="firstForm.configForm" label-width="120px">
+        <!-- <el-form-item label="模型1">
           <el-select
             v-model="firstForm.configForm.model_a_config"
             placeholder="请选择应用"
@@ -525,14 +526,16 @@ export default {
   },
   computed: {
     firstTableData() {
-      return this.firstForm.tableData.filter((data) => {
-        return (
-          (!this.firstForm.activeFilters.workType.length ||
-            this.firstForm.activeFilters.workType.includes(data.workType)) &&
-          (!this.firstForm.activeFilters.project.length ||
-            this.firstForm.activeFilters.project.includes(data.project))
-        );
-      }).reverse();
+      return this.firstForm.tableData
+        .filter((data) => {
+          return (
+            (!this.firstForm.activeFilters.workType.length ||
+              this.firstForm.activeFilters.workType.includes(data.workType)) &&
+            (!this.firstForm.activeFilters.project.length ||
+              this.firstForm.activeFilters.project.includes(data.project))
+          );
+        })
+        .reverse();
     },
   },
   mounted() {
@@ -543,6 +546,15 @@ export default {
     this.updateProjectFilters();
   },
   methods: {
+    /* 预览 */
+    handlePreview(row) {
+      console.log(row);
+      let _this = this;
+      let a = document.createElement("a");
+      a.href = `#/infoList?id=${this.$route.query.id}&type=${this.$route.query.type.toLowerCase()}`; // 使用 hash
+      a.target = "_blank";
+      a.click();
+    },
     /* 说明编辑 */
     openDescriptionDialog(row) {
       this.descriptionDialogVisible = true;
@@ -587,12 +599,14 @@ export default {
         saveConfig(this.firstForm.configForm).then((res) => {
           if (res.status !== 200) return;
           this.firstForm.configVisible = false;
+          this.firstInit(); // 刷新列表数据
         });
       } else {
         updateConfig(this.firstForm.configForm).then((res) => {
           if (res.status !== 200) return;
           this.firstForm.configVisible = false;
           this.$message.success("修改成功!");
+          this.firstInit(); // 刷新列表数据
         });
       }
     },

+ 64 - 92
src/views/middPage/list.vue

@@ -235,66 +235,20 @@
           />
           <el-table-column prop="status" label="处理状态" width="100">
             <template #default="{ row }">
-              <!--   <el-tooltip
-                effect="dark"
-                placement="top"
-                :disabled="
-                  Number(row.processing_status) !== 1 &&
-                  Number(row.processing_status) !== 5 &&
-                  Number(row.processing_status) !== 4
-                "
-              >
-                <template #content>
-                  <div style="padding: 5px">
-                    <div style="margin-top: 5px; font-size: 12px">
-                      {{ row.progress_msg || "正在处理中..." }}
-                    </div>
-                  </div>
-                </template>
-                <div class="status-wrapper">
-                  <template v-if="Number(row.processing_status) === 1 || Number(row.processing_status) === 5">
-                    <div class="progress-wrapper">
-                      <el-progress
-                        type="circle"
-                        :percentage="Math.floor(row.progress) || 0"
-                        :width="35"
-                        :stroke-width="4"
-                        :format="percentFormat"
-                        
-                      ></el-progress>
-                    </div>
-                  </template>
-                  <template v-else>
-                    <el-tag :type="getStatusType(row.processing_status)">
-                      {{ getStatusText(row.processing_status) }}
-                    </el-tag>
-                  </template>
-                </div>
-              </el-tooltip> -->
               <el-tooltip
                 effect="dark"
                 placement="top"
-                :disabled="
-                  Number(row.processing_status) !== 1 &&
-                  Number(row.processing_status) !== 5 &&
-                  Number(row.processing_status) !== 4
-                "
+                :disabled="![1, 3, 5].includes(Number(row.processing_status))"
               >
                 <template #content>
                   <div style="padding: 5px">
                     <div style="margin-top: 5px; font-size: 12px">
-                      {{ row.progress_msg || "正在处理中..." }}
+                      {{ row.progress_msg || (row.processing_status === 3 ? "处理失败" : "正在处理中...") }}
                     </div>
                   </div>
                 </template>
                 <div class="status-wrapper">
-                  <template
-                    v-if="
-                      Number(row.processing_status) === 1 ||
-                      Number(row.processing_status) === 5
-                    "
-                  >
-                    <!-- 移除进度条,改为显示文本 -->
+                  <template v-if="[1, 5].includes(Number(row.processing_status))">
                     <el-tag type="warning">处理中</el-tag>
                   </template>
                   <template v-else>
@@ -517,7 +471,6 @@ export default {
         1: { text: "处理中", type: "warning" },
         2: { text: "处理完成", type: "success" },
         3: { text: "处理失败", type: "danger" },
-        4: { text: "处理失败", type: "danger" },
         5: { text: "待处理", type: "warning" },
       },
       multipleSelection: [], // 存储跨页选中的数据
@@ -1089,7 +1042,7 @@ export default {
       }
     },
 
-    // 修改 fetchGpuList 方法中的分页处理部分
+    // 修改 fetchGpuList 方法
     async fetchGpuList() {
       this.isLoading = true;
       try {
@@ -1100,52 +1053,42 @@ export default {
           tag_names: this.searchForm.id,
           create_time_start: this.searchForm.createTimeRange?.[0] || "",
           create_time_end: this.searchForm.createTimeRange?.[1] || "",
-          update_time_start: this.searchForm.updateTimeRange?.[0] || "", // 新增
-          update_time_end: this.searchForm.updateTimeRange?.[1] || "", // 新增
+          update_time_start: this.searchForm.updateTimeRange?.[0] || "",
+          update_time_end: this.searchForm.updateTimeRange?.[1] || "",
           processing_status: this.searchForm.processing_status || null,
         };
 
         const response = await axios.post(
           `${process.env.VUE_APP_BASE_API}/literature-data/search/`,
-          params,
-          {
-            headers: {
-              "Content-Type": "application/json",
-            },
-          }
+          params
         );
 
         if (response.status !== 200) return;
 
         // 更新数据和分页信息
         const { list, total, current_page, page_size } = response.data.data;
-        this.gpuList = list.map((item) => {
+        
+        // 处理列表数据
+        this.gpuList = list.map(item => {
           const nameParts = item.name.split(".");
-          const processedItem = {
+          return {
             ...item,
             name: nameParts[0],
             type: nameParts.length > 1 ? nameParts.pop() : "未知",
+            processing_status: Number(item.processing_status)
           };
+        });
 
-          // 检查处理状态,如果是处理中且没有设置轮询,则开始轮询
-          if (
-            processedItem.processing_status === 1 &&
-            !this.pollingTimers[processedItem.id]
-          ) {
-            this.startPolling(processedItem.id);
-          }
-          // 如果状态不是处理中,但存在轮询,则停止轮询
-          else if (
-            processedItem.processing_status !== 1 &&
-            this.pollingTimers[processedItem.id]
-          ) {
-            this.stopPolling(processedItem.id);
-          }
+        // 获取需要查询详细状态的文献ID(处理中和处理失败的)
+        const needStatusCheckIds = this.gpuList
+          .filter(item => [1, 3, 5].includes(Number(item.processing_status)))
+          .map(item => item.id);
 
-          return processedItem;
-        });
+        if (needStatusCheckIds.length > 0) {
+          await this.fetchBatchStatus(needStatusCheckIds);
+        }
 
-        // 确保这些值都是数字类型
+        // 更新分页信息
         this.total = parseInt(total);
         this.currentPage = parseInt(current_page);
         this.pageSize = parseInt(page_size);
@@ -1156,6 +1099,39 @@ export default {
         this.isLoading = false;
       }
     },
+
+    // 修改批量获取状态的方法
+    async fetchBatchStatus(ids) {
+      try {
+        const statusPromises = ids.map(id => literResult(id));
+        const responses = await Promise.allSettled(statusPromises);
+        
+        responses.forEach((response, index) => {
+          if (response.status === 'fulfilled' && response.value.status === 200) {
+            const id = ids[index];
+            const item = this.gpuList.find(item => item.id === id);
+            if (item) {
+              const literatureInfo = response.value.data.data.literature_info;
+              const status = Number(literatureInfo.processing_status);
+              
+              // 只更新处理中和处理失败的状态信息
+              if ([1, 3, 5].includes(status)) {
+                this.$set(item, "processing_status", status);
+                this.$set(item, "progress_msg", literatureInfo.status_description);
+
+                // 如果状态是处理中,启动轮询
+                if (status === 1 || status === 5) {
+                  this.startPolling(id);
+                }
+              }
+            }
+          }
+        });
+      } catch (error) {
+        console.error("批量获取状态失败:", error);
+      }
+    },
+
     // 新增:开始轮询
     startPolling(id) {
       if (this.pollingTimers[id]) return;
@@ -1166,20 +1142,13 @@ export default {
           if (response.status === 200) {
             const item = this.gpuList.find((item) => item.id === id);
             if (item) {
-              // 使用接口返回的状态数据
-              const newStatus = Number(
-                response.data.data.literature_info.processing_status
-              );
-
-            /*进度   const newProgress = Number(
-                response.data.data.progress_info.calculated_progress.percentage
-              ); */
-              const newProgressMsg =
-                response.data.data.literature_info.status_description;
+              // 获取状态信息
+              const literatureInfo = response.data.data.literature_info;
+              const newStatus = Number(literatureInfo.processing_status);
+              const newProgressMsg = literatureInfo.status_description;
 
               // 更新状态相关数据
               this.$set(item, "processing_status", newStatus);
-           /*    this.$set(item, "progress", newProgress); */
               this.$set(item, "progress_msg", newProgressMsg);
 
               // 根据状态处理结果
@@ -1188,9 +1157,11 @@ export default {
                 this.$message.success("处理成功");
                 this.stopPolling(id);
                 await this.fetchGpuList();
-              } else if (newStatus === 4) {
-                // 处理失败
-                this.$message.error(newProgressMsg || "处理失败");
+              } else if (newStatus === 3) {
+                // 处理失败 - 保存失败原因
+                const failureReason = literatureInfo.status_description || "处理失败";
+                this.$set(item, "progress_msg", failureReason);
+                this.$message.error(failureReason);
                 this.stopPolling(id);
               } else if (newStatus === 1 || newStatus === 5) {
                 // 继续轮询
@@ -1252,6 +1223,7 @@ export default {
             name: row.name,
             tag: JSON.stringify(row.tags),
             identifier: row.identifier,
+            type:row.type
           },
         });
         // 这里可以添加详情处理逻辑

+ 3 - 0
src/views/project/ProjectInput.vue

@@ -1717,4 +1717,7 @@ export default {
     font-size: 12px; // 设置字体大小
   }
 }
+::v-deep .el-dialog {
+  margin-top: 0 !important;
+}
 </style>

+ 30 - 32
src/views/project/components/dataList.vue

@@ -1058,8 +1058,8 @@ export default {
               const currentPageSelected = this.selectedPageIds.get(currentPage);
 
               this.templateList.forEach((row) => {
-                const shouldSelect =
-                  this.isAllSelected ||
+                const shouldSelect = 
+                  this.isAllSelected || 
                   (currentPageSelected && currentPageSelected.has(row.id)) ||
                   this.selectedTemplateIds.has(row.id);
 
@@ -1086,10 +1086,10 @@ export default {
         this.selectedPageIds.delete(currentPage);
       }
 
-      // 如果之前是全选状态,现在取消了某些选择
+      // 如果之前是全选状态现在取消了某些选择
       if (this.isAllSelected && selection.length < this.templateList.length) {
         this.isAllSelected = false;
-        // 保留其他页面的选择,仅更新当前页
+        // 保留其他页面的选择仅更新当前页
         const allSelectedIds = new Set();
         this.selectedPageIds.forEach((pageIds, page) => {
           if (page !== currentPage) {
@@ -1100,7 +1100,7 @@ export default {
         currentPageIds.forEach((id) => allSelectedIds.add(id));
         this.selectedTemplateIds = allSelectedIds;
       } else {
-        // 正常选择模式,直接更新选中状态
+        // 正常选择模式直接更新选中状态
         this.templateList.forEach((item) => {
           if (currentPageIds.includes(item.id)) {
             this.selectedTemplateIds.add(item.id);
@@ -1116,24 +1116,22 @@ export default {
       const currentPage = this.templateQueryForm.page;
 
       if (selection.length > 0) {
-        this.$confirm("是否选择所有页的模版?", "提示", {
-          confirmButtonText: "全部选择",
-          cancelButtonText: "仅选择当前页",
-          type: "info",
-        })
-          .then(() => {
-            // 选择所有页
-            this.selectAllPages();
-          })
-          .catch(() => {
-            // 仅选择当前页
-            this.selectCurrentPage(selection);
-            // 更新当前页的选择记录
-            this.selectedPageIds.set(
-              currentPage,
-              new Set(selection.map((item) => item.id))
-            );
-          });
+        this.$confirm('是否选择所有页的模版?', '提示', {
+          confirmButtonText: '全部选择',
+          cancelButtonText: '仅选择当前页',
+          type: 'info'
+        }).then(() => {
+          // 选择所有页
+          this.selectAllPages();
+        }).catch(() => {
+          // 仅选择当前页
+          this.selectCurrentPage(selection);
+          // 更新当前页的选择记录
+          this.selectedPageIds.set(
+            currentPage,
+            new Set(selection.map((item) => item.id))
+          );
+        });
       } else {
         // 取消全选
         this.isAllSelected = false;
@@ -1162,8 +1160,8 @@ export default {
 
         this.$message.success(`已选择全部 ${this.templateTotal} 条数据`);
       } catch (error) {
-        console.error("获取所有模版失败:", error);
-        this.$message.error("获取所有模版失败");
+        console.error('获取所有模版失败:', error);
+        this.$message.error('获取所有模版失败');
       }
     },
 
@@ -1184,7 +1182,7 @@ export default {
       const params = {
         ...this.templateQueryForm,
         page: 1,
-        pageSize,
+        pageSize
       };
 
       try {
@@ -1194,7 +1192,7 @@ export default {
         }
         return [];
       } catch (error) {
-        console.error("获取所有模版失败:", error);
+        console.error('获取所有模版失败:', error);
         return [];
       }
     },
@@ -1202,16 +1200,16 @@ export default {
     // 确认选择
     confirmTemplateSelection() {
       if (this.selectedTemplateIds.size === 0) {
-        this.$message.warning("请至少选择一个模版");
+        this.$message.warning('请至少选择一个模版');
         return;
       }
 
       relate({
         project_id: this.currentData.id,
-        doc_ids: JSON.stringify([...this.selectedTemplateIds]),
+        doc_ids: JSON.stringify([...this.selectedTemplateIds])
       }).then((res) => {
         if (res.status !== 200) return;
-        this.$message.success("模版关联成功");
+        this.$message.success('模版关联成功');
         this.closeTemplateDialog();
         this.search();
       });
@@ -1443,7 +1441,7 @@ export default {
         this.pageTotal = res.data.totalPage;
       } catch (err) {
         console.error("搜索失败:", err);
-        this.$message.error("获取项目列表失");
+        this.$message.error("获取项目列表失��");
       }
     },
     //修改分页
@@ -1461,7 +1459,7 @@ export default {
       getphases().then((res) => {
         this.currentPhaseList = res.data.options;
       });
-      /* 获取目前��态 */
+      /* 获取目前态 */
       getstatus().then((res) => {
         this.getstatusList = res.data.options;
       });

Vissa filer visades inte eftersom för många filer har ändrats