Bladeren bron

修分析图表

liujiejie 6 maanden geleden
bovenliggende
commit
d626c23ccd
23 gewijzigde bestanden met toevoegingen van 630 en 803 verwijderingen
  1. BIN
      downLoadServer/src/public/file/副本XXX风电场可靠性和能效双提升数据分析报告(模板).docx
  2. BIN
      downLoadServer/src/public/file/副本XXX风电场可靠性和能效双提升数据分析报告(模板)副.docx
  3. 6 6
      downLoadServer/src/server/controllers/chartController.js
  4. 1 1
      downLoadServer/src/server/utils/chartsCom/lineAndChildLine.js
  5. 18 1
      downLoadServer/src/server/utils/copyFileCsv.js
  6. 37 20
      src/views/overview/components/cp/index.vue
  7. 38 20
      src/views/overview/components/cp_windspeed/index.vue
  8. 5 2
      src/views/overview/components/data_integrity_minute/index.vue
  9. 9 34
      src/views/overview/components/temperature_environment/index.vue
  10. 37 19
      src/views/overview/components/temperature_large_components_Winding_tem/index.vue
  11. 37 20
      src/views/overview/components/temperature_large_components_adriven/index.vue
  12. 39 19
      src/views/overview/components/temperature_large_components_hig/index.vue
  13. 37 20
      src/views/overview/components/temperature_large_components_low/index.vue
  14. 38 19
      src/views/overview/components/temperature_large_components_mid/index.vue
  15. 39 19
      src/views/overview/components/temperature_large_components_min/index.vue
  16. 39 19
      src/views/overview/components/temperature_large_components_undriven/index.vue
  17. 32 17
      src/views/overview/components/tsr/index.vue
  18. 31 17
      src/views/overview/components/tsr_cp_power/index.vue
  19. 32 17
      src/views/overview/components/tsr_windspeed/index.vue
  20. 143 525
      src/views/performance/assetssMag.vue
  21. 7 3
      src/views/performance/components/chartsCom/BarChart.vue
  22. 2 2
      src/views/performance/components/chartsCom/lineAndChildLine.vue
  23. 3 3
      vue.config.js

BIN
downLoadServer/src/public/file/副本XXX风电场可靠性和能效双提升数据分析报告(模板).docx


BIN
downLoadServer/src/public/file/副本XXX风电场可靠性和能效双提升数据分析报告(模板)副.docx


+ 6 - 6
downLoadServer/src/server/controllers/chartController.js

@@ -60,7 +60,7 @@ const handleChartGeneration = async (
     } else {
       data = response.data;
     }
-    console.log(data, "  data");
+    // console.log(data, "  data");
 
     // 验证数据格式
     if (
@@ -81,7 +81,7 @@ const handleChartGeneration = async (
       fieldInfo,
       ...Object.values(additionalParams)
     );
-    console.log(imageUrl, "imageUrl");
+    // console.log(imageUrl, "imageUrl");
     successResponse(
       res,
       {
@@ -288,7 +288,7 @@ const handleParsedResult = async (
     .filter((row) => Object.keys(row).length)
     .slice(0, result.data.length - 1);
 
-  console.log(data, "csv data 数据");
+  // console.log(data, "csv data 数据");
 
   try {
     let imageUrl = "";
@@ -313,7 +313,7 @@ const handleParsedResult = async (
           )
         );
         imageUrls.push(...results);
-        console.log(imageUrls, "img");
+        // console.log(imageUrls, "img");
       } else {
         imageUrl = await onParsed(
           data,
@@ -517,8 +517,8 @@ export const createCopyFileCsv = async (req, res) => {
     console.log("文件上传成功");
 
     // 4. 清理临时文件
-    await fs.unlink(tempFilePath).catch(console.error);
-    console.log("临时文件已清理");
+    // await fs.unlink(tempFilePath).catch(console.error);
+    // console.log("临时文件已清理");
 
     // 5. 返回成功响应
     res.json({

+ 1 - 1
downLoadServer/src/server/utils/chartsCom/lineAndChildLine.js

@@ -51,7 +51,7 @@ export const generateLineAndChildLine = async (
     // 准备布局配置
     const layout = {
       title: {
-        text: chartData.title,
+        text: chartData.title || chartData.data[0].title,
         font: {
           size: 16,
           weight: "bold",

+ 18 - 1
downLoadServer/src/server/utils/copyFileCsv.js

@@ -4,7 +4,9 @@ import PizZip from "pizzip";
 import Docxtemplater from "docxtemplater";
 import { fileURLToPath } from "url";
 import ImageModule from "docxtemplater-image-module-free";
+import { exec } from "child_process";
 import axios from "axios";
+import { pathToFileURL } from "url";
 import sizeOf from "image-size";
 
 const __filename = fileURLToPath(import.meta.url);
@@ -284,7 +286,7 @@ export const copyFileDocx = async (fieldInfo, chartsImages) => {
     // 保存生成的文档
     const buffer = doc.getZip().generate({ type: "nodebuffer" });
     await fs.writeFile(targetFilePath, buffer);
-
+    // const newFilePath = await updateTOCWithLibreOffice(targetFilePath);
     return {
       url: targetFilePath,
       message: `✅ 文档生成成功:${targetFilePath}`,
@@ -294,3 +296,18 @@ export const copyFileDocx = async (fieldInfo, chartsImages) => {
     throw error;
   }
 };
+export function updateTOCWithLibreOffice(docxPath) {
+  return new Promise((resolve, reject) => {
+    const fileUrl = pathToFileURL(docxPath).href;
+    const macroPath = `macro:///Standard.UpdateTOCModule.UpdateIndexes(\\"${fileUrl}\\")`;
+    const command = `soffice --headless "${macroPath}"`;
+
+    exec(command, (error, stdout, stderr) => {
+      if (error) {
+        reject(new Error(`宏执行失败: ${stderr || error.message}`));
+      } else {
+        resolve(docxPath); // 不附加 ✅ 文字,返回原始路径
+      }
+    });
+  });
+}

+ 37 - 20
src/views/overview/components/cp/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:05:58
- * @LastEditTime: 2025-03-21 14:38:49
+ * @LastEditTime: 2025-06-06 16:17:37
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/cp/index.vue
@@ -35,16 +35,25 @@
           Cp的分析也是监测风机性能的重要手段。如果Cp值出现异常下降,可能预示着机械故障、叶片磨损或其他维护需求。
         </div>
       </el-alert>
-
-      <div
-        class="titleCharts"
-        v-if="generalFilesDatas && generalFilesDatas.length > 0"
+      <VirtualList
+        :list="[...generalFilesDatas, ...diagramRelationsDatas]"
+        keyField="fileAddr"
+        :itemSize="500"
+        v-slot="{ item, index }"
       >
-        分析总图 :
-      </div>
-      <el-empty description="暂无分析记录" v-else></el-empty>
-      <div v-for="(item, index) in generalFilesDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            generalFilesDatas &&
+            generalFilesDatas.length > 0 &&
+            item.engineTypeCode &&
+            generalFilesDatas[0].engineTypeCode === item.engineTypeCode
+          "
+        >
+          分析总图 :
+        </div>
         <lineAndChildLine
+          v-if="item.batchCode && !item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="`${new Date().getTime()}` + item.batchCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -52,16 +61,19 @@
           :fileAddr="item.fileAddr"
         >
         </lineAndChildLine>
-      </div>
-      <div
-        class="titleCharts"
-        v-if="diagramRelationsDatas && diagramRelationsDatas.length > 0"
-      >
-        分析分图 :
-      </div>
-      <el-empty description="暂无分析记录" v-else></el-empty>
-      <div v-for="(item, index) in diagramRelationsDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            diagramRelationsDatas &&
+            diagramRelationsDatas.length > 0 &&
+            item.fieldEngineCode &&
+            diagramRelationsDatas[0].fieldEngineCode === item.fieldEngineCode
+          "
+        >
+          分析分图 :
+        </div>
         <lineChartsFen
+          v-if="item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="`${new Date().getTime()}` + item.fieldEngineCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -70,8 +82,13 @@
           :fileAddr="item.fileAddr"
         >
         </lineChartsFen>
-      </div>
-
+      </VirtualList>
+      <el-empty
+        description="暂无分析记录"
+        v-if="
+          generalFilesDatas.length === 0 && diagramRelationsDatas.length === 0
+        "
+      ></el-empty>
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"

+ 38 - 20
src/views/overview/components/cp_windspeed/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:08:00
- * @LastEditTime: 2025-03-21 14:39:04
+ * @LastEditTime: 2025-06-06 16:16:55
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/cp_windspeed/index.vue
@@ -35,16 +35,25 @@
           Cp的分析也是监测风机性能的重要手段。如果Cp值出现异常下降,可能预示着机械故障、叶片磨损或其他维护需求。
         </div>
       </el-alert>
-
-      <div
-        class="titleCharts"
-        v-if="generalFilesDatas && generalFilesDatas.length > 0"
+      <VirtualList
+        :list="[...generalFilesDatas, ...diagramRelationsDatas]"
+        keyField="fileAddr"
+        :itemSize="500"
+        v-slot="{ item, index }"
       >
-        分析总图 :
-      </div>
-      <el-empty description="暂无分析记录" v-else></el-empty>
-      <div v-for="(item, index) in generalFilesDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            generalFilesDatas &&
+            generalFilesDatas.length > 0 &&
+            item.engineTypeCode &&
+            generalFilesDatas[0].engineTypeCode === item.engineTypeCode
+          "
+        >
+          分析总图 :
+        </div>
         <lineAndChildLine
+          v-if="item.batchCode && !item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.batchCode + index"
           :index="`${new Date().getTime()}` + index + item.batchCode"
@@ -52,16 +61,20 @@
           :fileAddr="item.fileAddr"
         >
         </lineAndChildLine>
-      </div>
-      <div
-        class="titleCharts"
-        v-if="diagramRelationsDatas && diagramRelationsDatas.length > 0"
-      >
-        分析分图 :
-      </div>
-      <el-empty description="暂无分析记录" v-else></el-empty>
-      <div v-for="(item, index) in diagramRelationsDatas">
+
+        <div
+          class="titleCharts"
+          v-if="
+            diagramRelationsDatas &&
+            diagramRelationsDatas.length > 0 &&
+            item.fieldEngineCode &&
+            diagramRelationsDatas[0].fieldEngineCode === item.fieldEngineCode
+          "
+        >
+          分析分图 :
+        </div>
         <lineChartsFen
+          v-if="item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode + index"
           :index="`${new Date().getTime()}` + index + item.fieldEngineCode"
@@ -70,8 +83,13 @@
           :fileAddr="item.fileAddr"
         >
         </lineChartsFen>
-      </div>
-
+      </VirtualList>
+      <el-empty
+        description="暂无分析记录"
+        v-if="
+          generalFilesDatas.length === 0 && diagramRelationsDatas.length === 0
+        "
+      ></el-empty>
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"

+ 5 - 2
src/views/overview/components/data_integrity_minute/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 17:54:02
- * @LastEditTime: 2025-04-11 16:48:19
+ * @LastEditTime: 2025-06-06 16:18:38
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/data_integrity_minute/index.vue
@@ -48,7 +48,10 @@
           ></HeatmapCharts>
         </div>
       </template>
-      <el-empty description="暂无分析记录" v-else></el-empty>
+      <el-empty
+        description="暂无分析记录"
+        v-if="generalFilesDatas.length === 0"
+      ></el-empty>
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"

+ 9 - 34
src/views/overview/components/temperature_environment/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:09:46
- * @LastEditTime: 2025-02-26 11:21:52
+ * @LastEditTime: 2025-06-06 16:31:24
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_environment/index.vue
@@ -32,7 +32,6 @@
           将温度传感器的性能与绝对温度以及相对于风场其他传感器的变化进行比较,以检测机组环境温度传感器的性能。主要检查机组温度值的平均值,并比较每台机组的温度值和周围机组(10倍叶轮直径范围内)的温度均值,输出每台机组和其周围机组的温度差值,正常范围设定为±5℃。如下图所示。
         </div>
       </el-alert>
-
       <div
         class="titleCharts"
         v-if="generalFilesDatas && generalFilesDatas.length > 0"
@@ -40,7 +39,12 @@
         分析总图 :
       </div>
       <el-empty description="暂无分图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in generalFilesDatas">
+      <VirtualList
+        :list="[...generalFilesDatas]"
+        keyField="fileAddr"
+        :itemSize="500"
+        v-slot="{ item, index }"
+      >
         <BarChart
           :setUpImgData="setUpImgData"
           :key="`${new Date().getTime()}` + item.batchCode + index"
@@ -49,37 +53,8 @@
           :fileAddr="item.fileAddr"
         >
         </BarChart>
-      </div>
-      <!-- <VirtualList
-        :list="generalFilesDatas"
-        keyField="batchCode"
-        :itemSize="452"
-        v-slot="{ item, index }"
-      >
-      </VirtualList> -->
-      <!-- <div
-        class="titleCharts"
-        v-if="diagramRelationsDatas && diagramRelationsDatas.length > 0"
-      >
-        分析分图 :
-      </div>
-      <el-empty description="暂无分图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in diagramRelationsDatas">
-        <BarChart
-          :key="item.fieldEngineCode + index"
-          :inds="index"
-          :ref="item.fieldEngineCode"
-          :fileAddr="item.fileAddr"
-        >
-        </BarChart>
-      </div> -->
-      <!-- <VirtualList
-        :list="diagramRelationsDatas"
-        keyField="fieldEngineCode"
-        :itemSize="452"
-        v-slot="{ item, index }"
-      >
-      </VirtualList> -->
+      </VirtualList>
+
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"

+ 37 - 19
src/views/overview/components/temperature_large_components_Winding_tem/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-21 10:04:11
- * @LastEditTime: 2025-02-26 11:23:49
+ * @LastEditTime: 2025-06-06 17:06:39
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_Winding_tem/index.vue
@@ -44,16 +44,25 @@
           温度分析是实现预测性维护的关键。通过持续监测温度变化和趋势,可以预测何时部件可能会出现问题,从而在故障发生前进行维修或更换,减少意外停机。
         </div>
       </el-alert>
-
-      <div
-        class="titleCharts"
-        v-if="generalFilesDatas && generalFilesDatas.length > 0"
+      <VirtualList
+        :list="[...generalFilesDatas, ...diagramRelationsDatas]"
+        keyField="fileAddr"
+        :itemSize="500"
+        v-slot="{ item, index }"
       >
-        分析总图 :
-      </div>
-      <el-empty description="暂无总图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in generalFilesDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            generalFilesDatas &&
+            generalFilesDatas.length > 0 &&
+            item.engineTypeCode &&
+            generalFilesDatas[0].engineTypeCode === item.engineTypeCode
+          "
+        >
+          分析总图 :
+        </div>
         <lineAndChildLine
+          v-if="item.batchCode && !item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.batchCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -61,16 +70,19 @@
           :fileAddr="item.fileAddr"
         >
         </lineAndChildLine>
-      </div>
-      <div
-        class="titleCharts"
-        v-if="diagramRelationsDatas && diagramRelationsDatas.length > 0"
-      >
-        分析分图 :
-      </div>
-      <el-empty description="暂无分图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in diagramRelationsDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            diagramRelationsDatas &&
+            diagramRelationsDatas.length > 0 &&
+            item.fieldEngineCode &&
+            diagramRelationsDatas[0].fieldEngineCode === item.fieldEngineCode
+          "
+        >
+          分析分图 :
+        </div>
         <lineChartsFen
+          v-if="item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -79,7 +91,13 @@
           :fileAddr="item.fileAddr"
         >
         </lineChartsFen>
-      </div>
+      </VirtualList>
+      <el-empty
+        description="暂无分析记录"
+        v-if="
+          generalFilesDatas.length === 0 && diagramRelationsDatas.length === 0
+        "
+      ></el-empty>
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"

+ 37 - 20
src/views/overview/components/temperature_large_components_adriven/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-21 10:01:52
- * @LastEditTime: 2025-03-21 14:40:48
+ * @LastEditTime: 2025-06-06 16:41:12
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_adriven/index.vue
@@ -44,16 +44,25 @@
           温度分析是实现预测性维护的关键。通过持续监测温度变化和趋势,可以预测何时部件可能会出现问题,从而在故障发生前进行维修或更换,减少意外停机。
         </div>
       </el-alert>
-
-      <div
-        class="titleCharts"
-        v-if="generalFilesDatas && generalFilesDatas.length > 0"
+      <VirtualList
+        :list="[...generalFilesDatas, ...diagramRelationsDatas]"
+        keyField="fileAddr"
+        :itemSize="500"
+        v-slot="{ item, index }"
       >
-        分析总图 :
-      </div>
-      <el-empty description="暂无总图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in generalFilesDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            generalFilesDatas &&
+            generalFilesDatas.length > 0 &&
+            item.engineTypeCode &&
+            generalFilesDatas[0].engineTypeCode === item.engineTypeCode
+          "
+        >
+          分析总图 :
+        </div>
         <lineAndChildLine
+          v-if="item.batchCode && !item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.batchCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -61,17 +70,19 @@
           :fileAddr="item.fileAddr"
         >
         </lineAndChildLine>
-      </div>
-
-      <div
-        class="titleCharts"
-        v-if="diagramRelationsDatas && diagramRelationsDatas.length > 0"
-      >
-        分析分图 :
-      </div>
-      <el-empty description="暂无分图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in diagramRelationsDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            diagramRelationsDatas &&
+            diagramRelationsDatas.length > 0 &&
+            item.fieldEngineCode &&
+            diagramRelationsDatas[0].fieldEngineCode === item.fieldEngineCode
+          "
+        >
+          分析分图 :
+        </div>
         <lineChartsFen
+          v-if="item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -80,7 +91,13 @@
           :fileAddr="item.fileAddr"
         >
         </lineChartsFen>
-      </div>
+      </VirtualList>
+      <el-empty
+        description="暂无分析记录"
+        v-if="
+          generalFilesDatas.length === 0 && diagramRelationsDatas.length === 0
+        "
+      ></el-empty>
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"

+ 39 - 19
src/views/overview/components/temperature_large_components_hig/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-21 09:58:32
- * @LastEditTime: 2025-02-26 11:22:30
+ * @LastEditTime: 2025-06-06 16:44:37
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_hig/index.vue
@@ -44,16 +44,26 @@
           温度分析是实现预测性维护的关键。通过持续监测温度变化和趋势,可以预测何时部件可能会出现问题,从而在故障发生前进行维修或更换,减少意外停机。
         </div>
       </el-alert>
-
-      <div
-        class="titleCharts"
-        v-if="generalFilesDatas && generalFilesDatas.length > 0"
+      <VirtualList
+        :list="[...generalFilesDatas, ...diagramRelationsDatas]"
+        keyField="fileAddr"
+        :itemSize="500"
+        v-slot="{ item, index }"
       >
-        分析总图 :
-      </div>
-      <el-empty description="暂无总图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in generalFilesDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            generalFilesDatas &&
+            generalFilesDatas.length > 0 &&
+            item.engineTypeCode &&
+            generalFilesDatas[0].engineTypeCode === item.engineTypeCode
+          "
+        >
+          分析总图 :
+        </div>
+
         <lineAndChildLine
+          v-if="item.batchCode && !item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.batchCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -61,17 +71,21 @@
           :fileAddr="item.fileAddr"
         >
         </lineAndChildLine>
-      </div>
 
-      <div
-        class="titleCharts"
-        v-if="diagramRelationsDatas && diagramRelationsDatas.length > 0"
-      >
-        分析分图 :
-      </div>
-      <el-empty description="暂无分图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in diagramRelationsDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            diagramRelationsDatas &&
+            diagramRelationsDatas.length > 0 &&
+            item.fieldEngineCode &&
+            diagramRelationsDatas[0].fieldEngineCode === item.fieldEngineCode
+          "
+        >
+          分析分图 :
+        </div>
+
         <lineChartsFen
+          v-if="item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -80,7 +94,13 @@
           :fileAddr="item.fileAddr"
         >
         </lineChartsFen>
-      </div>
+      </VirtualList>
+      <el-empty
+        description="暂无分析记录"
+        v-if="
+          generalFilesDatas.length === 0 && diagramRelationsDatas.length === 0
+        "
+      ></el-empty>
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"

+ 37 - 20
src/views/overview/components/temperature_large_components_low/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-21 10:00:25
- * @LastEditTime: 2025-03-21 14:40:59
+ * @LastEditTime: 2025-06-06 16:47:28
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_low/index.vue
@@ -44,16 +44,25 @@
           温度分析是实现预测性维护的关键。通过持续监测温度变化和趋势,可以预测何时部件可能会出现问题,从而在故障发生前进行维修或更换,减少意外停机。
         </div>
       </el-alert>
-
-      <div
-        class="titleCharts"
-        v-if="generalFilesDatas && generalFilesDatas.length > 0"
+      <VirtualList
+        :list="[...generalFilesDatas, ...diagramRelationsDatas]"
+        keyField="fileAddr"
+        :itemSize="500"
+        v-slot="{ item, index }"
       >
-        分析总图 :
-      </div>
-      <el-empty description="暂无总图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in generalFilesDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            generalFilesDatas &&
+            generalFilesDatas.length > 0 &&
+            item.engineTypeCode &&
+            generalFilesDatas[0].engineTypeCode === item.engineTypeCode
+          "
+        >
+          分析总图 :
+        </div>
         <lineAndChildLine
+          v-if="item.batchCode && !item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.batchCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -61,17 +70,19 @@
           :fileAddr="item.fileAddr"
         >
         </lineAndChildLine>
-      </div>
-
-      <div
-        class="titleCharts"
-        v-if="diagramRelationsDatas && diagramRelationsDatas.length > 0"
-      >
-        分析分图 :
-      </div>
-      <el-empty description="暂无分图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in diagramRelationsDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            diagramRelationsDatas &&
+            diagramRelationsDatas.length > 0 &&
+            item.fieldEngineCode &&
+            diagramRelationsDatas[0].fieldEngineCode === item.fieldEngineCode
+          "
+        >
+          分析分图 :
+        </div>
         <lineChartsFen
+          v-if="item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -80,7 +91,13 @@
           :fileAddr="item.fileAddr"
         >
         </lineChartsFen>
-      </div>
+      </VirtualList>
+      <el-empty
+        description="暂无分析记录"
+        v-if="
+          generalFilesDatas.length === 0 && diagramRelationsDatas.length === 0
+        "
+      ></el-empty>
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"

+ 38 - 19
src/views/overview/components/temperature_large_components_mid/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-21 09:59:43
- * @LastEditTime: 2025-04-11 16:52:48
+ * @LastEditTime: 2025-06-06 16:51:03
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_mid/index.vue
@@ -44,16 +44,25 @@
           温度分析是实现预测性维护的关键。通过持续监测温度变化和趋势,可以预测何时部件可能会出现问题,从而在故障发生前进行维修或更换,减少意外停机。
         </div>
       </el-alert>
-
-      <div
-        class="titleCharts"
-        v-if="generalFilesDatas && generalFilesDatas.length > 0"
+      <VirtualList
+        :list="[...generalFilesDatas, ...diagramRelationsDatas]"
+        keyField="fileAddr"
+        :itemSize="500"
+        v-slot="{ item, index }"
       >
-        分析总图 :
-      </div>
-      <el-empty description="暂无总图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in generalFilesDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            generalFilesDatas &&
+            generalFilesDatas.length > 0 &&
+            item.engineTypeCode &&
+            generalFilesDatas[0].engineTypeCode === item.engineTypeCode
+          "
+        >
+          分析总图 :
+        </div>
         <lineAndChildLine
+          v-if="item.batchCode && !item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.batchCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -61,17 +70,21 @@
           :fileAddr="item.fileAddr"
         >
         </lineAndChildLine>
-      </div>
 
-      <div
-        class="titleCharts"
-        v-if="diagramRelationsDatas && diagramRelationsDatas.length > 0"
-      >
-        分析分图 :
-      </div>
-      <el-empty description="暂无分图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in diagramRelationsDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            diagramRelationsDatas &&
+            diagramRelationsDatas.length > 0 &&
+            item.fieldEngineCode &&
+            diagramRelationsDatas[0].fieldEngineCode === item.fieldEngineCode
+          "
+        >
+          分析分图 :
+        </div>
+
         <lineChartsFen
+          v-if="item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -80,7 +93,13 @@
           :fileAddr="item.fileAddr"
         >
         </lineChartsFen>
-      </div>
+      </VirtualList>
+      <el-empty
+        description="暂无分析记录"
+        v-if="
+          generalFilesDatas.length === 0 && diagramRelationsDatas.length === 0
+        "
+      ></el-empty>
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"

+ 39 - 19
src/views/overview/components/temperature_large_components_min/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-21 10:01:06
- * @LastEditTime: 2025-03-21 14:41:08
+ * @LastEditTime: 2025-06-06 16:56:38
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_min/index.vue
@@ -44,16 +44,26 @@
           温度分析是实现预测性维护的关键。通过持续监测温度变化和趋势,可以预测何时部件可能会出现问题,从而在故障发生前进行维修或更换,减少意外停机。
         </div>
       </el-alert>
-
-      <div
-        class="titleCharts"
-        v-if="generalFilesDatas && generalFilesDatas.length > 0"
+      <VirtualList
+        :list="[...generalFilesDatas, ...diagramRelationsDatas]"
+        keyField="fileAddr"
+        :itemSize="500"
+        v-slot="{ item, index }"
       >
-        分析总图 :
-      </div>
-      <el-empty description="暂无总图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in generalFilesDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            generalFilesDatas &&
+            generalFilesDatas.length > 0 &&
+            item.engineTypeCode &&
+            generalFilesDatas[0].engineTypeCode === item.engineTypeCode
+          "
+        >
+          分析总图 :
+        </div>
+
         <lineAndChildLine
+          v-if="item.batchCode && !item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.batchCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -61,17 +71,21 @@
           :fileAddr="item.fileAddr"
         >
         </lineAndChildLine>
-      </div>
 
-      <div
-        class="titleCharts"
-        v-if="diagramRelationsDatas && diagramRelationsDatas.length > 0"
-      >
-        分析分图 :
-      </div>
-      <el-empty description="暂无分图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in diagramRelationsDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            diagramRelationsDatas &&
+            diagramRelationsDatas.length > 0 &&
+            item.fieldEngineCode &&
+            diagramRelationsDatas[0].fieldEngineCode === item.fieldEngineCode
+          "
+        >
+          分析分图 :
+        </div>
+
         <lineChartsFen
+          v-if="item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -80,7 +94,13 @@
           :fileAddr="item.fileAddr"
         >
         </lineChartsFen>
-      </div>
+      </VirtualList>
+      <el-empty
+        description="暂无分析记录"
+        v-if="
+          generalFilesDatas.length === 0 && diagramRelationsDatas.length === 0
+        "
+      ></el-empty>
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"

+ 39 - 19
src/views/overview/components/temperature_large_components_undriven/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-21 10:02:36
- * @LastEditTime: 2025-03-21 14:41:17
+ * @LastEditTime: 2025-06-06 17:02:14
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_undriven/index.vue
@@ -44,16 +44,26 @@
           温度分析是实现预测性维护的关键。通过持续监测温度变化和趋势,可以预测何时部件可能会出现问题,从而在故障发生前进行维修或更换,减少意外停机。
         </div>
       </el-alert>
-
-      <div
-        class="titleCharts"
-        v-if="generalFilesDatas && generalFilesDatas.length > 0"
+      <VirtualList
+        :list="[...generalFilesDatas, ...diagramRelationsDatas]"
+        keyField="fileAddr"
+        :itemSize="500"
+        v-slot="{ item, index }"
       >
-        分析总图 :
-      </div>
-      <el-empty description="暂无总图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in generalFilesDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            generalFilesDatas &&
+            generalFilesDatas.length > 0 &&
+            item.engineTypeCode &&
+            generalFilesDatas[0].engineTypeCode === item.engineTypeCode
+          "
+        >
+          分析总图 :
+        </div>
+
         <lineAndChildLine
+          v-if="item.batchCode && !item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.batchCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -61,17 +71,21 @@
           :fileAddr="item.fileAddr"
         >
         </lineAndChildLine>
-      </div>
 
-      <div
-        class="titleCharts"
-        v-if="diagramRelationsDatas && diagramRelationsDatas.length > 0"
-      >
-        分析分图 :
-      </div>
-      <el-empty description="暂无分图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in diagramRelationsDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            diagramRelationsDatas &&
+            diagramRelationsDatas.length > 0 &&
+            item.fieldEngineCode &&
+            diagramRelationsDatas[0].fieldEngineCode === item.fieldEngineCode
+          "
+        >
+          分析分图 :
+        </div>
+
         <lineChartsFen
+          v-if="item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -80,7 +94,13 @@
           :fileAddr="item.fileAddr"
         >
         </lineChartsFen>
-      </div>
+      </VirtualList>
+      <el-empty
+        description="暂无分析记录"
+        v-if="
+          generalFilesDatas.length === 0 && diagramRelationsDatas.length === 0
+        "
+      ></el-empty>
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"

+ 32 - 17
src/views/overview/components/tsr/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:10:11
- * @LastEditTime: 2025-03-21 14:41:29
+ * @LastEditTime: 2025-06-06 17:10:03
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/tsr/index.vue
@@ -32,15 +32,25 @@
           叶尖速比的分析对于理解和优化风力发电机组的性能至关重要:叶尖速比直接影响风轮的空气动力学效率。一个合适的叶尖速比可以确保风轮以最高效率捕获风能。过高的叶尖速比可能会导致叶片承受过大的离心力和动态压力,从而增加机械负荷。通过监测和调整叶尖速比,可以防止过度磨损和损坏。
         </div>
       </el-alert>
-
-      <div
-        class="titleCharts"
-        v-if="generalFilesDatas && generalFilesDatas.length > 0"
+      <VirtualList
+        :list="[...generalFilesDatas, ...diagramRelationsDatas]"
+        keyField="fileAddr"
+        :itemSize="500"
+        v-slot="{ item, index }"
       >
-        分析总图 :
-      </div>
-      <div v-for="(item, index) in generalFilesDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            generalFilesDatas &&
+            generalFilesDatas.length > 0 &&
+            item.engineTypeCode &&
+            generalFilesDatas[0].engineTypeCode === item.engineTypeCode
+          "
+        >
+          分析总图 :
+        </div>
         <lineAndChildLine
+          v-if="item.batchCode && !item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.batchCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -48,15 +58,19 @@
           :fileAddr="item.fileAddr"
         >
         </lineAndChildLine>
-      </div>
-      <div
-        class="titleCharts"
-        v-if="diagramRelationsDatas && diagramRelationsDatas.length > 0"
-      >
-        分析分图 :
-      </div>
-      <div v-for="(item, index) in diagramRelationsDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            diagramRelationsDatas &&
+            diagramRelationsDatas.length > 0 &&
+            item.fieldEngineCode &&
+            diagramRelationsDatas[0].fieldEngineCode === item.fieldEngineCode
+          "
+        >
+          分析分图 :
+        </div>
         <lineChartsFen
+          v-if="item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -65,13 +79,14 @@
           :fileAddr="item.fileAddr"
         >
         </lineChartsFen>
-      </div>
+      </VirtualList>
       <el-empty
         description="暂无分析记录"
         v-if="
           generalFilesDatas.length === 0 && diagramRelationsDatas.length === 0
         "
       ></el-empty>
+
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"

+ 31 - 17
src/views/overview/components/tsr_cp_power/index.vue

@@ -1,12 +1,11 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:10:24
- * @LastEditTime: 2025-03-19 15:57:47
+ * @LastEditTime: 2025-06-06 16:03:20
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/tsr_cp_power/index.vue
 -->
-
 <template>
   <div class="type-variable">
     <!-- 叶尖速比-风能利用系数-功率分析 -->
@@ -34,14 +33,25 @@
         </div>
       </el-alert>
 
-      <div
-        class="titleCharts"
-        v-if="generalFilesDatas && generalFilesDatas.length > 0"
+      <VirtualList
+        :list="[...generalFilesDatas, ...diagramRelationsDatas]"
+        keyField="fileAddr"
+        :itemSize="500"
+        v-slot="{ item, index }"
       >
-        分析总图 :
-      </div>
-      <div v-for="(item, index) in generalFilesDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            generalFilesDatas &&
+            generalFilesDatas.length > 0 &&
+            item.engineTypeCode &&
+            generalFilesDatas[0].engineTypeCode === item.engineTypeCode
+          "
+        >
+          分析总图 :
+        </div>
         <lineAndChildLine
+          v-if="item.batchCode && !item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.batchCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -49,15 +59,19 @@
           :fileAddr="item.fileAddr"
         >
         </lineAndChildLine>
-      </div>
-      <div
-        class="titleCharts"
-        v-if="diagramRelationsDatas && diagramRelationsDatas.length > 0"
-      >
-        分析分图 :
-      </div>
-      <div v-for="(item, index) in diagramRelationsDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            diagramRelationsDatas &&
+            diagramRelationsDatas.length > 0 &&
+            item.fieldEngineCode &&
+            diagramRelationsDatas[0].fieldEngineCode === item.fieldEngineCode
+          "
+        >
+          分析分图 :
+        </div>
         <lineChartsFen
+          v-if="item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -66,7 +80,7 @@
           :fileAddr="item.fileAddr"
         >
         </lineChartsFen>
-      </div>
+      </VirtualList>
       <el-empty
         description="暂无分析记录"
         v-if="

+ 32 - 17
src/views/overview/components/tsr_windspeed/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:10:59
- * @LastEditTime: 2025-03-21 14:41:49
+ * @LastEditTime: 2025-06-06 16:06:26
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/tsr_windspeed/index.vue
@@ -32,15 +32,25 @@
           叶尖速比的分析对于理解和优化风力发电机组的性能至关重要:叶尖速比直接影响风轮的空气动力学效率。一个合适的叶尖速比可以确保风轮以最高效率捕获风能。过高的叶尖速比可能会导致叶片承受过大的离心力和动态压力,从而增加机械负荷。通过监测和调整叶尖速比,可以防止过度磨损和损坏。
         </div>
       </el-alert>
-
-      <div
-        class="titleCharts"
-        v-if="generalFilesDatas && generalFilesDatas.length > 0"
+      <VirtualList
+        :list="[...generalFilesDatas, ...diagramRelationsDatas]"
+        keyField="fileAddr"
+        :itemSize="500"
+        v-slot="{ item, index }"
       >
-        分析总图 :
-      </div>
-      <div v-for="(item, index) in generalFilesDatas">
+        <div
+          class="titleCharts"
+          v-if="
+            generalFilesDatas &&
+            generalFilesDatas.length > 0 &&
+            item.engineTypeCode &&
+            generalFilesDatas[0].engineTypeCode === item.engineTypeCode
+          "
+        >
+          分析总图 :
+        </div>
         <lineAndChildLine
+          v-if="item.batchCode && !item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.batchCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -48,15 +58,20 @@
           :fileAddr="item.fileAddr"
         >
         </lineAndChildLine>
-      </div>
-      <div
-        class="titleCharts"
-        v-if="diagramRelationsDatas && diagramRelationsDatas.length > 0"
-      >
-        分析分图 :
-      </div>
-      <div v-for="(item, index) in diagramRelationsDatas">
+
+        <div
+          class="titleCharts"
+          v-if="
+            diagramRelationsDatas &&
+            diagramRelationsDatas.length > 0 &&
+            item.fieldEngineCode &&
+            diagramRelationsDatas[0].fieldEngineCode === item.fieldEngineCode
+          "
+        >
+          分析分图 :
+        </div>
         <lineChartsFen
+          v-if="item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode + index"
           :index="`${new Date().getTime()}` + index"
@@ -65,7 +80,7 @@
           :fileAddr="item.fileAddr"
         >
         </lineChartsFen>
-      </div>
+      </VirtualList>
       <el-empty
         description="暂无分析记录"
         v-if="

+ 143 - 525
src/views/performance/assetssMag.vue

@@ -587,269 +587,7 @@ export default {
   },
   methods: {
     ...mapMutations("settings", ["setDownloadDisabled"]),
-    // async handleDownLoadChart(row) {
-    //   this.setDownloadDisabled(true);
-    //   this.$notify.warning("开始生成 Word 文档...");
-    //   await this.getAllAnalysis(row.batchCode);
-    //   await this.getFieldDetail(row.batchCode);
-    //   const limit = pLimit(5);
-    //   const tasks = [];
 
-    //   for (const itemAnalysis of this.allAnalysis) {
-    //     const filterAnalysis = allAnalysisType.find(
-    //       (itemType) => itemType.typeName === itemAnalysis.analysisTypeName
-    //     );
-    //     if (!filterAnalysis) continue;
-    //     const pushTask = (urlType, itemField, analysisType, sourceType) => {
-    //       //静态偏航误差 --通过allAnalysisType.js文件配置实现需求
-    //       if (Array.isArray(filterAnalysis.generalFiles.urlType)) {
-    //         filterAnalysis.generalFiles.urlType.map(
-    //           (itemUrlType, indUrlType) => {
-    //             tasks.push(
-    //               limit(async () => {
-    //                 await this.postChartData(
-    //                   itemUrlType,
-    //                   row,
-    //                   itemAnalysis,
-    //                   itemField,
-    //                   filterAnalysis,
-    //                   "generalFiles"
-    //                 );
-    //                 this.progress.current++;
-    //                 // 每完成 10% 提示一次(可调)
-    //                 const percent = Math.floor(
-    //                   (this.progress.current / this.progress.total) * 100
-    //                 );
-
-    //                 if (
-    //                   percent % 5 === 0 &&
-    //                   !this._shownPercents?.includes(percent)
-    //                 ) {
-    //                   this._shownPercents = this._shownPercents || [];
-    //                   this._shownPercents.push(percent);
-
-    //                   this.$notify.info(
-    //                     `📈 已完成 ${percent}%/${this.progress.current}张,共 ${this.progress.total} 张图表`
-    //                   );
-    //                 }
-    //               })
-    //             );
-    //           }
-    //         );
-    //       } else if (filterAnalysis.typeCode === "fault") {
-    //         if (itemField.fileAddr.includes("turbine_fault_result")) {
-    //           if (itemField.engineTypeCode === "turbine_fault_result") {
-    //             tasks.push(
-    //               limit(async () => {
-    //                 await this.postChartData(
-    //                   "faultUnitChart",
-    //                   row,
-    //                   itemAnalysis,
-    //                   itemField,
-    //                   filterAnalysis,
-    //                   "generalFiles"
-    //                 );
-    //                 this.progress.current++;
-    //                 // 每完成 10% 提示一次(可调)
-    //                 const percent = Math.floor(
-    //                   (this.progress.current / this.progress.total) * 100
-    //                 );
-
-    //                 if (
-    //                   percent % 5 === 0 &&
-    //                   !this._shownPercents?.includes(percent)
-    //                 ) {
-    //                   this._shownPercents = this._shownPercents || [];
-    //                   this._shownPercents.push(percent);
-
-    //                   this.$notify.info(
-    //                     `📈 已完成 ${percent}%/${this.progress.current}张,共 ${this.progress.total} 张图表`
-    //                   );
-    //                 }
-    //               })
-    //             );
-    //           }
-    //         } else {
-    //           if (itemField.engineTypeCode === "total_fault_result") {
-    //             tasks.push(
-    //               limit(async () => {
-    //                 await this.postChartData(
-    //                   "faultAllChart",
-    //                   row,
-    //                   itemAnalysis,
-    //                   itemField,
-    //                   filterAnalysis,
-    //                   "generalFiles"
-    //                 );
-    //                 this.progress.current++;
-    //                 // 每完成 10% 提示一次(可调)
-    //                 const percent = Math.floor(
-    //                   (this.progress.current / this.progress.total) * 100
-    //                 );
-
-    //                 if (
-    //                   percent % 5 === 0 &&
-    //                   !this._shownPercents?.includes(percent)
-    //                 ) {
-    //                   this._shownPercents = this._shownPercents || [];
-    //                   this._shownPercents.push(percent);
-
-    //                   this.$notify.info(
-    //                     `📈 已完成 ${percent}%/${this.progress.current}张,共 ${this.progress.total} 张图表`
-    //                   );
-    //                 }
-    //               })
-    //             );
-    //           }
-    //         }
-    //       } else if (filterAnalysis.typeCode === "production_indicator") {
-    //         //总图全场
-    //         if (
-    //           itemField.fileAddr.includes(
-    //             filterAnalysis.generalFiles.FileTypeFromUrl
-    //           )
-    //         ) {
-    //           tasks.push(
-    //             limit(() =>
-    //               this.postChartData(
-    //                 filterAnalysis.generalFiles.urlType,
-    //                 row,
-    //                 itemAnalysis,
-    //                 itemField,
-    //                 filterAnalysis,
-    //                 "generalFiles"
-    //               )
-    //             )
-    //           );
-    //         } else {
-    //           tasks.push(
-    //             limit(async () => {
-    //               await this.postChartData(
-    //                 "radarChart",
-    //                 row,
-    //                 itemAnalysis,
-    //                 itemField,
-    //                 filterAnalysis,
-    //                 "generalFiles"
-    //               );
-    //               this.progress.current++;
-    //               // 每完成 10% 提示一次(可调)
-    //               const percent = Math.floor(
-    //                 (this.progress.current / this.progress.total) * 100
-    //               );
-
-    //               if (
-    //                 percent % 5 === 0 &&
-    //                 !this._shownPercents?.includes(percent)
-    //               ) {
-    //                 this._shownPercents = this._shownPercents || [];
-    //                 this._shownPercents.push(percent);
-
-    //                 this.$notify.info(
-    //                   `📈 已完成 ${percent}%/${this.progress.current}张,共 ${this.progress.total} 张图表`
-    //                 );
-    //               }
-    //             })
-    //           );
-    //         }
-    //       } else {
-    //         tasks.push(
-    //           limit(async () => {
-    //             await this.postChartData(
-    //               urlType,
-    //               row,
-    //               itemAnalysis,
-    //               itemField,
-    //               filterAnalysis,
-    //               sourceType
-    //             );
-    //             this.progress.current++;
-    //             // 每完成 10% 提示一次(可调)
-    //             const percent = Math.floor(
-    //               (this.progress.current / this.progress.total) * 100
-    //             );
-
-    //             if (
-    //               percent % 5 === 0 &&
-    //               !this._shownPercents?.includes(percent)
-    //             ) {
-    //               this._shownPercents = this._shownPercents || [];
-    //               this._shownPercents.push(percent);
-
-    //               this.$notify.info(
-    //                 `📈 已完成 ${percent}%/${this.progress.current}张,共 ${this.progress.total} 张图表`
-    //               );
-    //             }
-    //           })
-    //         );
-    //       }
-    //     };
-    //     const processFiles = (source, sourceType) => {
-    //       const fileList = filterAnalysis.filterFileAddr
-    //         ? source
-    //             .filter((item) => item.fileAddr.endsWith(".json"))
-    //             .filter((item) =>
-    //               item.fileAddr.includes(filterAnalysis.filterFileAddr)
-    //             )
-    //         : source;
-    //       for (const itemField of fileList || []) {
-    //         // if (Array.isArray(filterAnalysis[sourceType]?.urlType)) {
-    //         //   filterAnalysis[sourceType].urlType.forEach((urlType) => {
-    //         //     pushTask(
-    //         //       urlType,
-    //         //       itemField,
-    //         //       filterAnalysis.typeName,
-    //         //       sourceType
-    //         //     );
-    //         //   });
-    //         // } else {
-    //         let urlType = filterAnalysis[sourceType]?.urlType;
-    //         if (sourceType === "diagramRelations" && Array.isArray(urlType)) {
-    //           const actualType = this.getFileTypeFromUrl(
-    //             itemField.fileAddr,
-    //             filterAnalysis.diagramRelations.FileTypeFromUrl
-    //           );
-    //           urlType =
-    //             actualType === filterAnalysis.diagramRelations.FileTypeFromUrl
-    //               ? urlType[0]
-    //               : urlType[1];
-    //         }
-
-    //         pushTask(urlType, itemField, filterAnalysis.typeName, sourceType);
-    //       }
-    //       // }
-    //     };
-    //     if (itemAnalysis.generalFiles) {
-    //       processFiles(itemAnalysis.generalFiles, "generalFiles");
-    //     }
-    //     if (itemAnalysis.diagramRelations) {
-    //       processFiles(itemAnalysis.diagramRelations, "diagramRelations");
-    //     }
-    //   }
-
-    //   this.progress.total = tasks.length;
-    //   this.progress.current = 0;
-    //   // console.log(`📝 总共要生成 ${this.progress.total} 张图表`);
-
-    //   await Promise.all(tasks);
-
-    //   this.$notify.success("✅ 图表全部生成完成,开始生成 Word 文档...");
-
-    //   const wordFilePath = await axios.post(
-    //     "/downLoadChart/chartServer/charts/CopyFileCsv",
-    //     {
-    //       fieldInfo: this.fieldInfo,
-    //       bucketName: "bucket-zhzn",
-    //       objectName: `charts/${row.fieldCode}/${row.batchCode}`,
-    //       ...this.fileDataList,
-    //     }
-    //   );
-
-    //   downloadDocx(wordFilePath.data.data.url, wordFilePath.data.data.fileName);
-
-    //   this.$notify.success("🎉 Word 文档生成并已下载!");
-    //   this.setDownloadDisabled(false);
-    // },
     async postChartData(
       urlType,
       row,
@@ -885,6 +623,18 @@ export default {
                 : urlType,
           }
         );
+        // 每完成 10% 提示一次(可调)
+        const percent = Math.floor(
+          (this.progress.current / this.progress.total) * 100
+        );
+        if (percent % 5 === 0 && !this._shownPercents?.includes(percent)) {
+          this._shownPercents = this._shownPercents || [];
+          this._shownPercents.push(percent);
+
+          this.$notify.info(
+            `📈 已完成 ${percent}%/${this.progress.current}张,共 ${this.progress.total} 张图表`
+          );
+        }
         let key = `zn-techcn-replace-tags-${filterAnalysis.typeDocxName}-${typeChart}`;
         if (urlType === "yawErrorBarSumChart") {
           key = `zn-techcn-replace-tags-${filterAnalysis.typeDocxName}-generalFiles2`;
@@ -902,7 +652,6 @@ export default {
           }
           this.fileDataList["rows"] = res?.data?.data?.data;
         }
-        //
         if (itemField.engineTypeCode === "total_fault_result") {
           if (!this.fileDataList["faultRows"]) {
             this.$set(this.fileDataList, "faultRows", []); // Vue 2 中响应式设置对象属性
@@ -933,68 +682,92 @@ export default {
       }
     },
     async handleDownLoadChart(row) {
+      this.fileDataList = {};
       this.setDownloadDisabled(true);
       this.$notify.warning("开始生成 Word 文档...");
-      await this.getAllAnalysis(row.batchCode);
-      await this.getFieldDetail(row.batchCode);
-      this.$message.info("开始生成word文档");
-      const limit = pLimit(5); // 限制同时并发的请求数量为 5
-      const tasks = [];
-      for (const itemAnalysis of this.allAnalysis) {
-        const filterAnalysis = allAnalysisType.filter(
-          (itemType) => itemType.typeName === itemAnalysis.analysisTypeName
-        )[0];
-        if (itemAnalysis.generalFiles) {
-          //这里过滤的是发电机温度的类型 在url 中是否能找到filterFileAddr
-          for (const itemField of filterAnalysis.filterFileAddr
-            ? itemAnalysis.generalFiles
-                .filter((item) => item.fileAddr.endsWith(".json"))
-                .filter((item) =>
-                  item.fileAddr.includes(filterAnalysis.filterFileAddr)
-                ) || []
-            : itemAnalysis.generalFiles) {
-            //静态偏航误差 --通过allAnalysisType.js文件配置实现需求
-            if (Array.isArray(filterAnalysis.generalFiles.urlType)) {
-              filterAnalysis.generalFiles.urlType.map(
-                (itemUrlType, indUrlType) => {
-                  tasks.push(
-                    limit(async () => {
-                      await this.postChartData(
-                        itemUrlType,
-                        row,
-                        itemAnalysis,
-                        itemField,
-                        filterAnalysis,
-                        "generalFiles"
-                      );
-                      this.progress.current++;
-                      // 每完成 10% 提示一次(可调)
-                      const percent = Math.floor(
-                        (this.progress.current / this.progress.total) * 100
-                      );
-
-                      if (
-                        percent % 5 === 0 &&
-                        !this._shownPercents?.includes(percent)
-                      ) {
-                        this._shownPercents = this._shownPercents || [];
-                        this._shownPercents.push(percent);
-
-                        this.$notify.info(
-                          `📈 已完成 ${percent}%/${this.progress.current}张,共 ${this.progress.total} 张图表`
+      try {
+        await this.getAllAnalysis(row.batchCode);
+        await this.getFieldDetail(row.batchCode);
+        this.$message.info("开始生成word文档");
+        const limit = pLimit(5); // 限制同时并发的请求数量为 5
+        const tasks = [];
+        for (const itemAnalysis of this.allAnalysis) {
+          const filterAnalysis = allAnalysisType.filter(
+            (itemType) => itemType.typeName === itemAnalysis.analysisTypeName
+          )[0];
+          if (itemAnalysis.generalFiles) {
+            //这里过滤的是发电机温度的类型 在url 中是否能找到filterFileAddr
+            for (const itemField of filterAnalysis.filterFileAddr
+              ? itemAnalysis.generalFiles
+                  .filter((item) => item.fileAddr.endsWith(".json"))
+                  .filter((item) =>
+                    item.fileAddr.includes(filterAnalysis.filterFileAddr)
+                  ) || []
+              : itemAnalysis.generalFiles) {
+              //静态偏航误差 --通过allAnalysisType.js文件配置实现需求
+              if (Array.isArray(filterAnalysis.generalFiles.urlType)) {
+                filterAnalysis.generalFiles.urlType.map(
+                  (itemUrlType, indUrlType) => {
+                    tasks.push(
+                      limit(async () => {
+                        await this.postChartData(
+                          itemUrlType,
+                          row,
+                          itemAnalysis,
+                          itemField,
+                          filterAnalysis,
+                          "generalFiles"
                         );
-                      }
-                    })
-                  );
+                        this.progress.current++;
+                      })
+                    );
+                  }
+                );
+              } else if (filterAnalysis.typeCode === "fault") {
+                if (itemField.fileAddr.includes("turbine_fault_result")) {
+                  if (itemField.engineTypeCode === "turbine_fault_result") {
+                    tasks.push(
+                      limit(async () => {
+                        await this.postChartData(
+                          "faultUnitChart",
+                          row,
+                          itemAnalysis,
+                          itemField,
+                          filterAnalysis,
+                          "generalFiles"
+                        );
+                        this.progress.current++;
+                      })
+                    );
+                  }
+                } else {
+                  if (itemField.engineTypeCode === "total_fault_result") {
+                    tasks.push(
+                      limit(async () => {
+                        await this.postChartData(
+                          "faultAllChart",
+                          row,
+                          itemAnalysis,
+                          itemField,
+                          filterAnalysis,
+                          "generalFiles"
+                        );
+                        this.progress.current++;
+                      })
+                    );
+                  }
                 }
-              );
-            } else if (filterAnalysis.typeCode === "fault") {
-              if (itemField.fileAddr.includes("turbine_fault_result")) {
-                if (itemField.engineTypeCode === "turbine_fault_result") {
+              } else if (filterAnalysis.typeCode === "production_indicator") {
+                //总图全场
+                if (
+                  itemField.fileAddr.includes(
+                    filterAnalysis.generalFiles.FileTypeFromUrl
+                  )
+                ) {
                   tasks.push(
                     limit(async () => {
                       await this.postChartData(
-                        "faultUnitChart",
+                        filterAnalysis.generalFiles.urlType,
                         row,
                         itemAnalysis,
                         itemField,
@@ -1003,30 +776,13 @@ export default {
                       );
                       this.progress.current++;
                       // 每完成 10% 提示一次(可调)
-                      const percent = Math.floor(
-                        (this.progress.current / this.progress.total) * 100
-                      );
-
-                      if (
-                        percent % 5 === 0 &&
-                        !this._shownPercents?.includes(percent)
-                      ) {
-                        this._shownPercents = this._shownPercents || [];
-                        this._shownPercents.push(percent);
-
-                        this.$notify.info(
-                          `📈 已完成 ${percent}%/${this.progress.current}张,共 ${this.progress.total} 张图表`
-                        );
-                      }
                     })
                   );
-                }
-              } else {
-                if (itemField.engineTypeCode === "total_fault_result") {
+                } else {
                   tasks.push(
                     limit(async () => {
                       await this.postChartData(
-                        "faultAllChart",
+                        "radarChart",
                         row,
                         itemAnalysis,
                         itemField,
@@ -1034,67 +790,14 @@ export default {
                         "generalFiles"
                       );
                       this.progress.current++;
-                      // 每完成 10% 提示一次(可调)
-                      const percent = Math.floor(
-                        (this.progress.current / this.progress.total) * 100
-                      );
-
-                      if (
-                        percent % 5 === 0 &&
-                        !this._shownPercents?.includes(percent)
-                      ) {
-                        this._shownPercents = this._shownPercents || [];
-                        this._shownPercents.push(percent);
-
-                        this.$notify.info(
-                          `📈 已完成 ${percent}%/${this.progress.current}张,共 ${this.progress.total} 张图表`
-                        );
-                      }
                     })
                   );
                 }
-              }
-            } else if (filterAnalysis.typeCode === "production_indicator") {
-              //总图全场
-              if (
-                itemField.fileAddr.includes(
-                  filterAnalysis.generalFiles.FileTypeFromUrl
-                )
-              ) {
-                tasks.push(
-                  limit(async () => {
-                    await this.postChartData(
-                      filterAnalysis.generalFiles.urlType,
-                      row,
-                      itemAnalysis,
-                      itemField,
-                      filterAnalysis,
-                      "generalFiles"
-                    );
-                    this.progress.current++;
-                    // 每完成 10% 提示一次(可调)
-                    const percent = Math.floor(
-                      (this.progress.current / this.progress.total) * 100
-                    );
-
-                    if (
-                      percent % 5 === 0 &&
-                      !this._shownPercents?.includes(percent)
-                    ) {
-                      this._shownPercents = this._shownPercents || [];
-                      this._shownPercents.push(percent);
-
-                      this.$notify.info(
-                        `📈 已完成 ${percent}%/${this.progress.current}张,共 ${this.progress.total} 张图表`
-                      );
-                    }
-                  })
-                );
               } else {
                 tasks.push(
                   limit(async () => {
                     await this.postChartData(
-                      "radarChart",
+                      filterAnalysis.generalFiles.urlType,
                       row,
                       itemAnalysis,
                       itemField,
@@ -1102,154 +805,75 @@ export default {
                       "generalFiles"
                     );
                     this.progress.current++;
-                    // 每完成 10% 提示一次(可调)
-                    const percent = Math.floor(
-                      (this.progress.current / this.progress.total) * 100
-                    );
-
-                    if (
-                      percent % 5 === 0 &&
-                      !this._shownPercents?.includes(percent)
-                    ) {
-                      this._shownPercents = this._shownPercents || [];
-                      this._shownPercents.push(percent);
-
-                      this.$notify.info(
-                        `📈 已完成 ${percent}%/${this.progress.current}张,共 ${this.progress.total} 张图表`
-                      );
-                    }
                   })
                 );
               }
-            } else {
+            }
+          }
+          if (itemAnalysis.diagramRelations) {
+            for (const itemField of filterAnalysis.filterFileAddr
+              ? itemAnalysis.diagramRelations
+                  .filter((item) => item.fileAddr.endsWith(".json"))
+                  .filter((item) =>
+                    item.fileAddr.includes(filterAnalysis.filterFileAddr)
+                  ) || []
+              : itemAnalysis.diagramRelations) {
+              const urlType = Array.isArray(
+                filterAnalysis.diagramRelations.urlType
+              )
+                ? this.getFileTypeFromUrl(
+                    itemField.fileAddr,
+                    filterAnalysis.diagramRelations.FileTypeFromUrl
+                  ) === filterAnalysis.diagramRelations.FileTypeFromUrl
+                  ? filterAnalysis.diagramRelations.urlType[0]
+                  : filterAnalysis.diagramRelations.urlType[1]
+                : filterAnalysis.diagramRelations.urlType;
               tasks.push(
                 limit(async () => {
                   await this.postChartData(
-                    filterAnalysis.generalFiles.urlType,
+                    urlType,
                     row,
                     itemAnalysis,
                     itemField,
                     filterAnalysis,
-                    "generalFiles"
+                    "diagramRelations"
                   );
                   this.progress.current++;
-                  // 每完成 10% 提示一次(可调)
-                  const percent = Math.floor(
-                    (this.progress.current / this.progress.total) * 100
-                  );
-
-                  if (
-                    percent % 5 === 0 &&
-                    !this._shownPercents?.includes(percent)
-                  ) {
-                    this._shownPercents = this._shownPercents || [];
-                    this._shownPercents.push(percent);
-
-                    this.$notify.info(
-                      `📈 已完成 ${percent}%/${this.progress.current}张,共 ${this.progress.total} 张图表`
-                    );
-                  }
                 })
               );
             }
           }
         }
-        if (itemAnalysis.diagramRelations) {
-          for (const itemField of filterAnalysis.filterFileAddr
-            ? itemAnalysis.diagramRelations
-                .filter((item) => item.fileAddr.endsWith(".json"))
-                .filter((item) =>
-                  item.fileAddr.includes(filterAnalysis.filterFileAddr)
-                ) || []
-            : itemAnalysis.diagramRelations) {
-            const urlType = Array.isArray(
-              filterAnalysis.diagramRelations.urlType
-            )
-              ? this.getFileTypeFromUrl(
-                  itemField.fileAddr,
-                  filterAnalysis.diagramRelations.FileTypeFromUrl
-                ) === filterAnalysis.diagramRelations.FileTypeFromUrl
-                ? filterAnalysis.diagramRelations.urlType[0]
-                : filterAnalysis.diagramRelations.urlType[1]
-              : filterAnalysis.diagramRelations.urlType;
-            // console.log("urlType", filterAnalysis.typeName, urlType);
-            tasks.push(
-              limit(async () => {
-                await this.postChartData(
-                  urlType,
-                  row,
-                  itemAnalysis,
-                  itemField,
-                  filterAnalysis,
-                  "diagramRelations"
-                );
-                this.progress.current++;
-                // 每完成 10% 提示一次(可调)
-                const percent = Math.floor(
-                  (this.progress.current / this.progress.total) * 100
-                );
+        this.progress.total = tasks.length;
+        await Promise.all(tasks);
 
-                if (
-                  percent % 5 === 0 &&
-                  !this._shownPercents?.includes(percent)
-                ) {
-                  this._shownPercents = this._shownPercents || [];
-                  this._shownPercents.push(percent);
-
-                  this.$notify.info(
-                    `📈 已完成 ${percent}%/${this.progress.current}张,共 ${this.progress.total} 张图表`
-                  );
-                }
-              })
-            );
+        const engineTypeList = await this.getEngineTypeList(
+          this.fieldInfo.engineMillTypes,
+          row.batchCode
+        );
+        this.$notify.success("✅ 图表全部生成完成,开始生成 Word 文档...");
+        const wordFilePath = await axios.post(
+          "/downLoadChart/chartServer/charts/CopyFileCsv",
+          {
+            fieldInfo: this.fieldInfo,
+            dataTime: `${this.analysisInfo.dataStartTime}-${this.analysisInfo.dataEndTime}`,
+            bucketName: "bucket-zhzn",
+            objectName: `charts/${row.fieldCode}/${row.batchCode}`,
+            engineTypeList: engineTypeList,
+            ...this.fileDataList,
           }
-        }
+        );
+        // //下载minio 文件
+        downloadDocx(
+          wordFilePath.data.data.url,
+          wordFilePath.data.data.fileName
+        );
+        this.$notify.success("🎉 Word 文档生成并已下载!");
+        this.setDownloadDisabled(false);
+      } catch (error) {
+        this.$notify.error("🎉 Word 文档生成并下载失败!");
+        this.setDownloadDisabled(false);
       }
-      await Promise.all(tasks);
-
-      const engineTypeList = await this.getEngineTypeList(
-        this.fieldInfo.engineMillTypes,
-        row.batchCode
-      );
-      console.log(engineTypeList, "engineTypeList");
-      this.$notify.success("✅ 图表全部生成完成,开始生成 Word 文档...");
-      const wordFilePath = await axios.post(
-        "/downLoadChart/chartServer/charts/CopyFileCsv",
-        {
-          fieldInfo: this.fieldInfo,
-          dataTime: `${this.analysisInfo.dataStartTime}-${this.analysisInfo.dataEndTime}`,
-          bucketName: "bucket-zhzn",
-          objectName: `charts/${row.fieldCode}/${row.batchCode}`,
-          // engineTypeList: [
-          //   {
-          //     machineTypeCode: "CCWE-1500/93.DF",
-          //     manufacturerName: "华创",
-          //     rotorDiameter: 93,
-          //     ratedWindSpeed: 11,
-          //     ratedCutInWindspeed: 3,
-          //     ratedCutOutWindspeed: 25,
-          //     ratedPower: 1500,
-          //     engineTypeCode: "aa",
-          //   },
-          //   {
-          //     machineTypeCode: "CCWE-1500/93.DF",
-          //     manufacturerName: "华创",
-          //     rotorDiameter: 93,
-          //     ratedWindSpeed: 11,
-          //     ratedCutInWindspeed: 3,
-          //     ratedCutOutWindspeed: 25,
-          //     ratedPower: 1700,
-          //     engineTypeCode: "bb",
-          //   },
-          // ],
-          engineTypeList: engineTypeList,
-          ...this.fileDataList,
-        }
-      );
-      // //下载minio 文件
-      downloadDocx(wordFilePath.data.data.url, wordFilePath.data.data.fileName);
-      this.$notify.success("🎉 Word 文档生成并已下载!");
-      this.setDownloadDisabled(false);
     },
     async getEngineTypeList(typeList, batchCode) {
       return await Promise.all(
@@ -1285,12 +909,6 @@ export default {
       return { ...res.data.list[0], ratedPower: filterMill[0].ratedCapacity };
     },
 
-    // millTypeCode
-    // :
-    // "WEM00018"
-    // ratedCapacity
-    // :
-    // 2000
     getFileTypeFromUrl(url, keyword) {
       return url.includes(keyword) ? keyword : "Unknown";
     },

+ 7 - 3
src/views/performance/components/chartsCom/BarChart.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2024-09-11 14:30:17
- * @LastEditTime: 2025-04-08 09:45:01
+ * @LastEditTime: 2025-06-06 16:28:29
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/BarChart.vue
@@ -82,6 +82,7 @@ export default {
       if (this.fileAddr !== "") {
         try {
           this.loading = true;
+          this.isError = false;
           this.cancelToken = axios.CancelToken.source();
           const resultChartsData = await axios.get(this.fileAddr, {
             cancelToken: this.cancelToken.token,
@@ -94,9 +95,12 @@ export default {
             this.loading = false;
           });
         } catch (error) {
-          console.error("Error loading data:", error);
+          if (axios.isCancel(error)) {
+            console.warn("请求被取消:", error.message);
+            return; // 不设置 isError
+          }
+          console.error("请求错误:", error);
           this.isError = true;
-          this.loading = false;
         }
       }
     },

+ 2 - 2
src/views/performance/components/chartsCom/lineAndChildLine.vue

@@ -178,10 +178,10 @@ export default {
 
           data.push(chartConfig);
         });
-
+      console.log(this.chartData, "图表title");
       const layout = {
         title: {
-          text: this.chartData.title,
+          text: this.chartData.title || this.chartData.data[0].title,
           font: {
             size: 16, // 设置标题字体大小(默认 16)
             weight: "bold",

+ 3 - 3
vue.config.js

@@ -66,8 +66,8 @@ module.exports = {
         // target: "http://192.168.5.4:16200", // 石月
         // target: "http://192.168.50.235:16200", // 内网
         // target: "http://192.168.5.15:16200",
-        // target: "http://192.168.50.235:16500", //演示环境
-        target: "http://106.120.102.238:26500", //外网演示环境
+        target: "http://192.168.50.235:16500", //演示环境
+        // target: "http://106.120.102.238:26500", //外网演示环境
         // target: "http://106.120.102.238:16700", // 外网16700  生产16600
         // target: "http://10.96.137.5",
         changeOrigin: true,
@@ -126,7 +126,7 @@ module.exports = {
       //自定义算法文佳
       "/sAlgorithm": {
         // target: "http://192.168.50.235:8666", // 目标地址
-        target: "http://106.120.102.238:58880",//这个代理会走两次代理转发
+        target: "http://106.120.102.238:58880", //这个代理会走两次代理转发
         changeOrigin: true,
         pathRewrite: {
           "^/sAlgorithm": "", // 如果后端需要 `/api` 前缀