Ver Fonte

修改合并 江

rui.jiang há 1 ano atrás
pai
commit
4b6eab1a29
51 ficheiros alterados com 1772 adições e 1005 exclusões
  1. 29 16
      src/views/overview/components/cp/index.vue
  2. 26 15
      src/views/overview/components/cp_trend/index.vue
  3. 29 16
      src/views/overview/components/cp_windspeed/index.vue
  4. 26 16
      src/views/overview/components/data_integrity_minute/index.vue
  5. 25 17
      src/views/overview/components/data_integrity_second/index.vue
  6. 30 23
      src/views/overview/components/fault_all/index.vue
  7. 30 23
      src/views/overview/components/fault_unit/index.vue
  8. 39 32
      src/views/overview/components/min_pitch/index.vue
  9. 21 14
      src/views/overview/components/pitch_generator_speed/index.vue
  10. 51 16
      src/views/overview/components/pitch_power/index.vue
  11. 26 15
      src/views/overview/components/pitch_tsr_cp/index.vue
  12. 12 4
      src/views/overview/components/power_curve/index.vue
  13. 26 15
      src/views/overview/components/power_scatter/index.vue
  14. 26 15
      src/views/overview/components/power_scatter_2D/index.vue
  15. 30 22
      src/views/overview/components/production_indicator_all/index.vue
  16. 30 22
      src/views/overview/components/production_indicator_unit/index.vue
  17. 26 16
      src/views/overview/components/rated_power_windspeed/index.vue
  18. 26 15
      src/views/overview/components/rated_windspeed/index.vue
  19. 30 19
      src/views/overview/components/speed_power/index.vue
  20. 36 28
      src/views/overview/components/speed_torque/index.vue
  21. 26 15
      src/views/overview/components/temperature_environment/index.vue
  22. 30 19
      src/views/overview/components/temperature_large_components_Winding_tem/index.vue
  23. 30 19
      src/views/overview/components/temperature_large_components_adriven/index.vue
  24. 34 23
      src/views/overview/components/temperature_large_components_hig/index.vue
  25. 34 23
      src/views/overview/components/temperature_large_components_low/index.vue
  26. 35 23
      src/views/overview/components/temperature_large_components_mid/index.vue
  27. 30 19
      src/views/overview/components/temperature_large_components_min/index.vue
  28. 30 15
      src/views/overview/components/temperature_large_components_tem_deviation/index.vue
  29. 34 23
      src/views/overview/components/temperature_large_components_undriven/index.vue
  30. 26 15
      src/views/overview/components/tsr/index.vue
  31. 26 15
      src/views/overview/components/tsr_cp_power/index.vue
  32. 26 15
      src/views/overview/components/tsr_cp_power_scatter/index.vue
  33. 26 15
      src/views/overview/components/tsr_trend/index.vue
  34. 26 15
      src/views/overview/components/tsr_windspeed/index.vue
  35. 44 34
      src/views/overview/components/wind_direction_frequency/index.vue
  36. 26 15
      src/views/overview/components/wind_speed/index.vue
  37. 26 15
      src/views/overview/components/wind_speed_frequency/index.vue
  38. 62 59
      src/views/overview/components/yaw_error/index.vue
  39. 26 15
      src/views/overview/components/yaw_error_density/index.vue
  40. 15 2
      src/views/performance/components/chartsCom/3DDrawingChart.vue
  41. 4 4
      src/views/performance/components/chartsCom/BoxLineCharts.vue
  42. 13 9
      src/views/performance/components/chartsCom/BoxMarkersCharts.vue
  43. 4 1
      src/views/performance/components/chartsCom/GeneratorTemperature.vue
  44. 45 181
      src/views/performance/components/chartsCom/HeatmapCharts.vue
  45. 28 9
      src/views/performance/components/chartsCom/NoColourBandTwoDMarkerChart.vue
  46. 12 0
      src/views/performance/components/chartsCom/TwoDMarkersChart.vue
  47. 13 9
      src/views/performance/components/chartsCom/WindRoseChart.vue
  48. 207 0
      src/views/performance/components/chartsCom/YewErrorBarChart.vue
  49. 25 17
      src/views/performance/components/chartsCom/lineAndChildLine.vue
  50. 37 22
      src/views/performance/components/chartsCom/powerMarkers2DCharts.vue
  51. 198 0
      src/views/performance/components/chartsCom/yawErrorLine.vue

+ 29 - 16
src/views/overview/components/cp/index.vue

@@ -1,8 +1,8 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:05:58
- * @LastEditTime: 2025-01-20 13:31:38
- * @LastEditors: bogon
+ * @LastEditTime: 2025-01-22 09:07:14
+ * @LastEditors: milo-MacBook-Pro.local
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/cp/index.vue
 -->
@@ -41,6 +41,7 @@
       >
         分析总图 :
       </div>
+      <el-empty description="暂无分析记录" v-else></el-empty>
       <div v-for="(item, index) in generalFilesDatas">
         <lineAndChildLine
           :key="item.batchCode + index"
@@ -56,6 +57,7 @@
       >
         分析分图 :
       </div>
+      <el-empty description="暂无分析记录" v-else></el-empty>
       <div v-for="(item, index) in diagramRelationsDatas">
         <lineChartsFen
           :key="item.fieldEngineCode + index"
@@ -67,7 +69,7 @@
         </lineChartsFen>
       </div>
 
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -78,7 +80,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -102,7 +104,11 @@ import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import lineAndChildLine from "@/views/performance/components/chartsCom/lineAndChildLine.vue";
 import lineChartsFen from "@/views/performance/components/chartsCom/lineChartsFen.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "cp",
@@ -140,6 +146,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -208,6 +215,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -224,18 +234,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 26 - 15
src/views/overview/components/cp_trend/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:06:09
- * @LastEditTime: 2025-01-20 13:32:08
+ * @LastEditTime: 2025-01-21 15:52:10
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/cp_trend/index.vue
@@ -47,7 +47,7 @@
           :fileAddr="item.fileAddr"
         ></BoxLineCharts>
       </VirtualList>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -58,7 +58,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row v-if="isShowDescription" type="flex" class="row-bg" justify="end">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -81,7 +81,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import BoxLineCharts from "@/views/performance/components/chartsCom/BoxLineCharts.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 import axios from "axios";
 export default {
   name: "cpTrend",
@@ -110,6 +114,7 @@ export default {
       form: {
         value2: "",
       },
+      isShowDescription: false,
       windEngineGroupList: [], //批次风机列表
       fieldEngineCodes: [], //选中风机
       comment: "",
@@ -192,6 +197,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -208,18 +216,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 29 - 16
src/views/overview/components/cp_windspeed/index.vue

@@ -1,8 +1,8 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:08:00
- * @LastEditTime: 2025-01-20 13:32:39
- * @LastEditors: bogon
+ * @LastEditTime: 2025-01-22 09:07:38
+ * @LastEditors: milo-MacBook-Pro.local
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/cp_windspeed/index.vue
 -->
@@ -41,6 +41,7 @@
       >
         分析总图 :
       </div>
+      <el-empty description="暂无分析记录" v-else></el-empty>
       <div v-for="(item, index) in generalFilesDatas">
         <lineAndChildLine
           :key="item.batchCode + index"
@@ -56,6 +57,7 @@
       >
         分析分图 :
       </div>
+      <el-empty description="暂无分析记录" v-else></el-empty>
       <div v-for="(item, index) in diagramRelationsDatas">
         <lineChartsFen
           :key="item.fieldEngineCode + index"
@@ -67,7 +69,7 @@
         </lineChartsFen>
       </div>
 
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -78,7 +80,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" v-if="isShowDescription" class="row-bg" justify="end">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -102,7 +104,11 @@ import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import lineAndChildLine from "@/views/performance/components/chartsCom/lineAndChildLine.vue";
 import lineChartsFen from "@/views/performance/components/chartsCom/lineChartsFen.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "cpWindspeed",
@@ -134,6 +140,7 @@ export default {
       },
       comment: "",
       options: [],
+      isShowDescription: false,
       windEngineGroupList: [], //批次风机列表
       fieldEngineCodes: [], //选中风机
       generalFilesDatas: [], //总图
@@ -208,6 +215,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -224,18 +234,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 26 - 16
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-01-20 15:55:21
+ * @LastEditTime: 2025-01-21 15:49:16
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/data_integrity_minute/index.vue
@@ -48,7 +48,7 @@
       </template>
       <el-empty description="暂无分析记录" v-else></el-empty>
 
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -59,7 +59,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -82,7 +82,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import HeatmapCharts from "@/views/performance/components/chartsCom/HeatmapCharts.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 export default {
   name: "DataIntegrityMinute",
   components: {
@@ -110,7 +114,7 @@ export default {
       form: {
         value2: "",
       },
-
+      isShowDescription: false,
       commentDescriptionVos: [], //评论列表
       windEngineGroupList: [], //批次风机列表
       fieldEngineCodes: [], //选中风机
@@ -193,6 +197,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -209,18 +216,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 25 - 17
src/views/overview/components/data_integrity_second/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 17:55:01
- * @LastEditTime: 2025-01-20 15:50:16
+ * @LastEditTime: 2025-01-21 15:50:37
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/data_integrity_second/index.vue
@@ -49,7 +49,7 @@
       </template>
       <el-empty description="暂无分析记录" v-else></el-empty>
 
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -60,7 +60,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row v-if="isShowDescription" type="flex" class="row-bg" justify="end">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -83,7 +83,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import HeatmapCharts from "@/views/performance/components/chartsCom/HeatmapCharts.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 export default {
   name: "DataIntegritySecond",
   components: {
@@ -111,7 +115,7 @@ export default {
       form: {
         value2: "",
       },
-
+      isShowDescription: false,
       commentDescriptionVos: [], //评论列表
       windEngineGroupList: [], //批次风机列表
       fieldEngineCodes: [], //选中风机
@@ -194,6 +198,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -210,18 +217,19 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
-        this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
+        // this.diagramRelationsDatas =
+        //   result.data &&
+        //   result.data[0] &&
+        //   result.data[0].diagramRelations.filter((item) =>
+        //     item.fileAddr.endsWith(".json")
+        //   );
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 30 - 23
src/views/overview/components/fault_all/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-13 13:56:55
- * @LastEditTime: 2025-01-17 15:09:56
+ * @LastEditTime: 2025-01-21 15:54:16
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/fault_all/index.vue
@@ -83,7 +83,7 @@
       </div>
       <el-empty description="暂无分析记录" v-else></el-empty>
       <el-tabs value="first">
-        <el-tab-pane label="意见描述" name="first">
+        <el-tab-pane label="意见描述" name="first" v-if="isShowDescription">
           <TinymceEditor
             ref="editor"
             v-model="comment"
@@ -93,7 +93,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row v-if="isShowDescription" type="flex" class="row-bg" justify="end">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -116,7 +116,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import FaultAll from "@/views/performance/components/chartsCom/FaultAll.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 import Papa from "papaparse";
 import axios from "axios";
 export default {
@@ -157,6 +161,7 @@ export default {
       fenFaultCsvData: [],
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   computed: {
@@ -300,6 +305,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -389,28 +397,27 @@ export default {
     overflow: auto;
     padding: 20px;
     flex: 1;
-      /* 滚动条整体样式 */
-  &::-webkit-scrollbar {
-    width: 6px; /* 滚动条宽度 */
-  }
-
-  /* 滚动条轨道 */
-  &::-webkit-scrollbar-track {
-    background: #f5f7fa;
-    border-radius: 3px;
-  }
+    /* 滚动条整体样式 */
+    &::-webkit-scrollbar {
+      width: 6px; /* 滚动条宽度 */
+    }
 
-  /* 滚动条滑块 */
-  &::-webkit-scrollbar-thumb {
-    background: #c0c4cc;
-    border-radius: 3px;
-  }
+    /* 滚动条轨道 */
+    &::-webkit-scrollbar-track {
+      background: #f5f7fa;
+      border-radius: 3px;
+    }
 
-  /* 滚动条滑块悬停时 */
-  &::-webkit-scrollbar-thumb:hover {
-    background: #909399;
-  }
+    /* 滚动条滑块 */
+    &::-webkit-scrollbar-thumb {
+      background: #c0c4cc;
+      border-radius: 3px;
+    }
 
+    /* 滚动条滑块悬停时 */
+    &::-webkit-scrollbar-thumb:hover {
+      background: #909399;
+    }
   }
 
   .right {

+ 30 - 23
src/views/overview/components/fault_unit/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-13 13:56:12
- * @LastEditTime: 2025-01-17 15:09:32
+ * @LastEditTime: 2025-01-21 15:54:53
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/fault_unit/index.vue
@@ -77,7 +77,7 @@
       </div>
       <el-empty description="暂无分析记录" v-else></el-empty>
       <el-tabs value="first">
-        <el-tab-pane label="意见描述" name="first">
+        <el-tab-pane label="意见描述" name="first" v-if="isShowDescription">
           <TinymceEditor
             ref="editor"
             v-model="comment"
@@ -87,7 +87,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -110,7 +110,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import FaultUnit from "@/views/performance/components/chartsCom/FaultUnit.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 import Papa from "papaparse";
 import axios from "axios";
 export default {
@@ -141,6 +145,7 @@ export default {
       form: {
         value2: "",
       },
+      isShowDescription: false,
       commentDescriptionVos: [], //评论列表
       windEngineGroupList: [], //批次风机列表
       fieldEngineCodes: [], //选中风机
@@ -288,6 +293,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -376,28 +384,27 @@ export default {
     overflow: auto;
     padding: 20px;
     flex: 1;
-      /* 滚动条整体样式 */
-  &::-webkit-scrollbar {
-    width: 6px; /* 滚动条宽度 */
-  }
-
-  /* 滚动条轨道 */
-  &::-webkit-scrollbar-track {
-    background: #f5f7fa;
-    border-radius: 3px;
-  }
+    /* 滚动条整体样式 */
+    &::-webkit-scrollbar {
+      width: 6px; /* 滚动条宽度 */
+    }
 
-  /* 滚动条滑块 */
-  &::-webkit-scrollbar-thumb {
-    background: #c0c4cc;
-    border-radius: 3px;
-  }
+    /* 滚动条轨道 */
+    &::-webkit-scrollbar-track {
+      background: #f5f7fa;
+      border-radius: 3px;
+    }
 
-  /* 滚动条滑块悬停时 */
-  &::-webkit-scrollbar-thumb:hover {
-    background: #909399;
-  }
+    /* 滚动条滑块 */
+    &::-webkit-scrollbar-thumb {
+      background: #c0c4cc;
+      border-radius: 3px;
+    }
 
+    /* 滚动条滑块悬停时 */
+    &::-webkit-scrollbar-thumb:hover {
+      background: #909399;
+    }
   }
 
   .right {

+ 39 - 32
src/views/overview/components/min_pitch/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:08:13
- * @LastEditTime: 2025-01-20 09:22:11
+ * @LastEditTime: 2025-01-21 15:56:02
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/min_pitch/index.vue
@@ -47,7 +47,7 @@
         ></TwoDMarkersChart>
       </VirtualList>
       <el-tabs value="first">
-        <el-tab-pane label="意见描述" name="first">
+        <el-tab-pane label="意见描述" name="first" v-if="isShowDescription">
           <TinymceEditor
             ref="editor"
             v-model="comment"
@@ -57,7 +57,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -121,6 +121,7 @@ export default {
       diagramRelationsDatas: [], //分图,
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -195,6 +196,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -211,18 +215,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }
@@ -284,27 +291,27 @@ export default {
     overflow: auto;
     padding: 20px;
     flex: 1;
-      /* 滚动条整体样式 */
-  &::-webkit-scrollbar {
-    width: 6px; /* 滚动条宽度 */
-  }
+    /* 滚动条整体样式 */
+    &::-webkit-scrollbar {
+      width: 6px; /* 滚动条宽度 */
+    }
 
-  /* 滚动条轨道 */
-  &::-webkit-scrollbar-track {
-    background: #f5f7fa;
-    border-radius: 3px;
-  }
+    /* 滚动条轨道 */
+    &::-webkit-scrollbar-track {
+      background: #f5f7fa;
+      border-radius: 3px;
+    }
 
-  /* 滚动条滑块 */
-  &::-webkit-scrollbar-thumb {
-    background: #c0c4cc;
-    border-radius: 3px;
-  }
+    /* 滚动条滑块 */
+    &::-webkit-scrollbar-thumb {
+      background: #c0c4cc;
+      border-radius: 3px;
+    }
 
-  /* 滚动条滑块悬停时 */
-  &::-webkit-scrollbar-thumb:hover {
-    background: #909399;
-  }
+    /* 滚动条滑块悬停时 */
+    &::-webkit-scrollbar-thumb:hover {
+      background: #909399;
+    }
   }
 
   .right {

+ 21 - 14
src/views/overview/components/pitch_generator_speed/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:09:25
- * @LastEditTime: 2025-01-20 13:35:52
+ * @LastEditTime: 2025-01-21 15:56:49
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/pitch_generator_speed/index.vue
@@ -46,7 +46,7 @@
           :fileAddr="item.fileAddr"
         ></TwoDMarkersChart>
       </VirtualList>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -57,7 +57,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -121,6 +121,7 @@ export default {
       diagramRelationsDatas: [], //分图,
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -195,6 +196,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -211,18 +215,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 51 - 16
src/views/overview/components/pitch_power/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:09:41
- * @LastEditTime: 2025-01-20 13:36:10
+ * @LastEditTime: 2025-01-21 15:57:52
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/pitch_power/index.vue
@@ -39,14 +39,30 @@
         :itemSize="452"
         v-slot="{ item, index }"
       >
-        <TwoDMarkersChart
+        <!-- <TwoDMarkersChart
           :key="item.fieldEngineCode"
           :index="index"
           :ref="item.fieldEngineCode"
           :fileAddr="item.fileAddr"
-        ></TwoDMarkersChart>
+        ></TwoDMarkersChart> -->
+        <TwoDMarkersChart
+          v-if="getFileTypeFromUrl(item.fileAddr) === 'pitch_power'"
+          :index="index + 'TwoDMarkersChart'"
+          :key="item.fieldEngineCode + 'TwoDMarkersChart'"
+          :ref="item.fieldEngineCode"
+          :fileAddr="item.fileAddr"
+        >
+        </TwoDMarkersChart>
+        <DDrawingChart
+          v-if="getFileTypeFromUrl(item.fileAddr) === '3D'"
+          :key="item.fieldEngineCode + 'DDrawingChart'"
+          :index="index + 'fen'"
+          :ref="item.fieldEngineCode + 'DDrawingChart'"
+          :fileAddr="item.fileAddr"
+        >
+        </DDrawingChart>
       </VirtualList>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -57,7 +73,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -80,6 +96,7 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import TwoDMarkersChart from "@/views/performance/components/chartsCom/TwoDMarkersChart.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
+import DDrawingChart from "@/views/performance/components/chartsCom/3DDrawingChart.vue";
 import {
   analysisDetail,
   queryAnalysisedEngine,
@@ -92,6 +109,7 @@ export default {
     DicCard,
     FilterChart,
     TwoDMarkersChart,
+    DDrawingChart,
     TinymceEditor,
   },
   props: {
@@ -121,6 +139,7 @@ export default {
       diagramRelationsDatas: [], //分图,
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -141,6 +160,16 @@ export default {
     }
   },
   methods: {
+    getFileTypeFromUrl(url) {
+      // 判断文件名或路径是否包含关键字
+      if (url.includes("3D")) {
+        return "3D"; // 如果 URL 中包含 "3D" 字符串,判断为 3D 类型
+      } else if (url.includes("pitch_power")) {
+        return "pitch_power"; // 如果 URL 中包含 "pitch_power" 字符串,判断为 pitch_power 类型
+      } else {
+        return "Unknown"; // 如果都不包含,返回 Unknown 或其他提示
+      }
+    },
     async handleComment() {
       try {
         await analysisCommentEdit({
@@ -195,6 +224,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -211,18 +243,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 26 - 15
src/views/overview/components/pitch_tsr_cp/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:09:55
- * @LastEditTime: 2025-01-20 13:36:42
+ * @LastEditTime: 2025-01-21 15:58:46
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/pitch_tsr_cp/index.vue
@@ -44,7 +44,7 @@
           :fileAddr="item.fileAddr"
         ></TwoDMarkersChart>
       </VirtualList>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -55,7 +55,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -78,7 +78,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import TwoDMarkersChart from "@/views/performance/components/chartsCom/TwoDMarkersChart.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "pitchTsrCp",
@@ -115,6 +119,7 @@ export default {
       diagramRelationsDatas: [], //分图,
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -189,6 +194,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -205,18 +213,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 12 - 4
src/views/overview/components/power_curve/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:10:08
- * @LastEditTime: 2025-01-20 13:37:35
+ * @LastEditTime: 2025-01-21 15:59:51
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/power_curve/index.vue
@@ -141,7 +141,7 @@
       <el-empty v-else description="暂无分图"></el-empty>
 
       <el-tabs value="first">
-        <el-tab-pane label="意见描述" name="first">
+        <el-tab-pane label="意见描述" name="first" v-if="isShowDescription">
           <TinymceEditor
             ref="editor"
             v-model="comment"
@@ -151,7 +151,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -173,7 +173,11 @@
 import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 import PlotlyCharts from "@/views/performance/components/PlotlyCharts.vue";
 import { downLoadCsvFile } from "@/utils/common";
 import { saveAs } from "file-saver";
@@ -215,6 +219,7 @@ export default {
       graphFilesData: [],
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -289,6 +294,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&

+ 26 - 15
src/views/overview/components/power_scatter/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:10:22
- * @LastEditTime: 2025-01-20 15:45:13
+ * @LastEditTime: 2025-01-21 16:00:46
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/power_scatter/index.vue
@@ -47,7 +47,7 @@
         </DDrawingChart>
       </VirtualList>
 
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -58,7 +58,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -81,7 +81,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import DDrawingChart from "@/views/performance/components/chartsCom/3DDrawingChart.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "powerScatter",
@@ -120,6 +124,7 @@ export default {
       requestRecord: [],
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -218,6 +223,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -234,18 +242,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 26 - 15
src/views/overview/components/power_scatter_2D/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:10:35
- * @LastEditTime: 2025-01-20 13:38:06
+ * @LastEditTime: 2025-01-21 16:01:46
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/power_scatter_2D/index.vue
@@ -54,7 +54,7 @@ export default {
         ></powerMarkers2DCharts>
       </VirtualList>
 
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -65,7 +65,7 @@ export default {
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -89,7 +89,11 @@ import powerMarkers2DCharts from "@/views/performance/components/chartsCom/power
 import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "windDirectionFrequency",
@@ -126,6 +130,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -209,6 +214,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -225,18 +233,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
         console.log(this.diagramRelationsDatas, "this.diagramRelationsDatas");
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);

+ 30 - 22
src/views/overview/components/production_indicator_all/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-13 13:45:50
- * @LastEditTime: 2025-01-17 15:42:52
+ * @LastEditTime: 2025-01-21 16:11:05
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/production_indicator_all/index.vue
@@ -90,7 +90,7 @@
         </template>
       </div>
       <el-empty description="暂无分析记录" v-else></el-empty>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -101,7 +101,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -124,7 +124,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import Rader from "@/views/performance/components/chartsCom/Radar.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 import Papa from "papaparse";
 import axios from "axios";
 export default {
@@ -165,6 +169,7 @@ export default {
       productionIndicatorCsvData: [],
       productionIndicatorCsvHeader: [],
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   computed: {
@@ -297,6 +302,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -389,27 +397,27 @@ export default {
     overflow: auto;
     padding: 20px;
     flex: 1;
-      /* 滚动条整体样式 */
-  &::-webkit-scrollbar {
-    width: 6px; /* 滚动条宽度 */
-  }
+    /* 滚动条整体样式 */
+    &::-webkit-scrollbar {
+      width: 6px; /* 滚动条宽度 */
+    }
 
-  /* 滚动条轨道 */
-  &::-webkit-scrollbar-track {
-    background: #f5f7fa;
-    border-radius: 3px;
-  }
+    /* 滚动条轨道 */
+    &::-webkit-scrollbar-track {
+      background: #f5f7fa;
+      border-radius: 3px;
+    }
 
-  /* 滚动条滑块 */
-  &::-webkit-scrollbar-thumb {
-    background: #c0c4cc;
-    border-radius: 3px;
-  }
+    /* 滚动条滑块 */
+    &::-webkit-scrollbar-thumb {
+      background: #c0c4cc;
+      border-radius: 3px;
+    }
 
-  /* 滚动条滑块悬停时 */
-  &::-webkit-scrollbar-thumb:hover {
-    background: #909399;
-  }
+    /* 滚动条滑块悬停时 */
+    &::-webkit-scrollbar-thumb:hover {
+      background: #909399;
+    }
   }
 
   .right {

+ 30 - 22
src/views/overview/components/production_indicator_unit/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-13 13:44:56
- * @LastEditTime: 2025-01-17 15:46:34
+ * @LastEditTime: 2025-01-21 16:11:13
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/production_indicator_unit/index.vue
@@ -88,7 +88,7 @@
         </template>
       </div>
       <el-empty description="暂无分析记录" v-else></el-empty>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -99,7 +99,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -122,7 +122,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
 import Rader from "@/views/performance/components/chartsCom/Radar.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 import Papa from "papaparse";
 import axios from "axios";
 export default {
@@ -163,6 +167,7 @@ export default {
       productionIndicatorCsvData: [],
       productionIndicatorCsvHeader: [],
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   computed: {
@@ -295,6 +300,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -386,27 +394,27 @@ export default {
     overflow: auto;
     padding: 20px;
     flex: 1;
-      /* 滚动条整体样式 */
-  &::-webkit-scrollbar {
-    width: 6px; /* 滚动条宽度 */
-  }
+    /* 滚动条整体样式 */
+    &::-webkit-scrollbar {
+      width: 6px; /* 滚动条宽度 */
+    }
 
-  /* 滚动条轨道 */
-  &::-webkit-scrollbar-track {
-    background: #f5f7fa;
-    border-radius: 3px;
-  }
+    /* 滚动条轨道 */
+    &::-webkit-scrollbar-track {
+      background: #f5f7fa;
+      border-radius: 3px;
+    }
 
-  /* 滚动条滑块 */
-  &::-webkit-scrollbar-thumb {
-    background: #c0c4cc;
-    border-radius: 3px;
-  }
+    /* 滚动条滑块 */
+    &::-webkit-scrollbar-thumb {
+      background: #c0c4cc;
+      border-radius: 3px;
+    }
 
-  /* 滚动条滑块悬停时 */
-  &::-webkit-scrollbar-thumb:hover {
-    background: #909399;
-  }
+    /* 滚动条滑块悬停时 */
+    &::-webkit-scrollbar-thumb:hover {
+      background: #909399;
+    }
   }
 
   .right {

+ 26 - 16
src/views/overview/components/rated_power_windspeed/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:10:47
- * @LastEditTime: 2025-01-20 17:52:54
+ * @LastEditTime: 2025-01-21 16:09:55
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/rated_power_windspeed/index.vue
@@ -46,7 +46,7 @@
         >
         </BoxLineCharts>
       </VirtualList>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -57,7 +57,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -80,7 +80,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import BoxLineCharts from "@/views/performance/components/chartsCom/BoxLineCharts.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "ratedPowerWindspeed",
@@ -118,6 +122,7 @@ export default {
       diagramRelationsDatas: [], //分图,
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -192,6 +197,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -208,19 +216,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 26 - 15
src/views/overview/components/rated_windspeed/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:08:56
- * @LastEditTime: 2025-01-20 17:30:51
+ * @LastEditTime: 2025-01-21 16:11:28
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/rated_windspeed/index.vue
@@ -47,7 +47,7 @@
         >
         </BarChart>
       </VirtualList>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -58,7 +58,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -81,7 +81,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import BarChart from "@/views/performance/components/chartsCom/BarChart.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "ratedWindspeed",
@@ -118,6 +122,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -186,6 +191,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -202,18 +210,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 30 - 19
src/views/overview/components/speed_power/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:09:17
- * @LastEditTime: 2025-01-20 17:16:59
+ * @LastEditTime: 2025-01-21 16:09:43
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/speed_power/index.vue
@@ -54,7 +54,7 @@
         v-slot="{ item, index }"
       >
         <TwoDMarkersChart
-          v-if="getFileTypeFromUrl(item.fileAddr) === 'speed_torque'"
+          v-if="getFileTypeFromUrl(item.fileAddr) === 'speed_power'"
           :index="index + 'TwoDMarkersChart'"
           :key="item.fieldEngineCode + 'TwoDMarkersChart'"
           :ref="item.fieldEngineCode"
@@ -71,7 +71,7 @@
         </DDrawingChart>
       </VirtualList>
 
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -82,7 +82,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -105,7 +105,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import DDrawingChart from "@/views/performance/components/chartsCom/3DDrawingChart.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 import TwoDMarkersChart from "@/views/performance/components/chartsCom/TwoDMarkersChart.vue";
 
 export default {
@@ -146,6 +150,7 @@ export default {
       requestRecord: [],
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -244,6 +249,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -260,12 +268,13 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         console.log(this.generalFilesDatas, "总图数据");
 
         if (result.data && result.data[0] && result.data[0].diagramRelations) {
@@ -273,18 +282,20 @@ export default {
           //   (item) => item.fileAddr.endsWith(".json")
           // );
           // this.diagramRelationsDatas2D = diagramRelationsDatas.filter(
-          //   (item) => this.getFileTypeFromUrl(item.fileAddr) === "speed_torque"
+          //   (item) => this.getFileTypeFromUrl(item.fileAddr) === "speed_power"
           // );
           // this.diagramRelationsDatas3D = diagramRelationsDatas.filter(
           //   (item) => this.getFileTypeFromUrl(item.fileAddr) === "3D"
           // );
         }
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }
@@ -293,8 +304,8 @@ export default {
       // 判断文件名或路径是否包含关键字
       if (url.includes("3D")) {
         return "3D"; // 如果 URL 中包含 "3D" 字符串,判断为 3D 类型
-      } else if (url.includes("speed_torque")) {
-        return "speed_torque"; // 如果 URL 中包含 "speed_torque" 字符串,判断为 speed_torque 类型
+      } else if (url.includes("speed_power")) {
+        return "speed_power"; // 如果 URL 中包含 "speed_power" 字符串,判断为 speed_power 类型
       } else {
         return "Unknown"; // 如果都不包含,返回 Unknown 或其他提示
       }

+ 36 - 28
src/views/overview/components/speed_torque/index.vue

@@ -51,26 +51,21 @@
       <!-- <div class="titleCharts">分析分图 :</div> -->
 
       <VirtualList
-        :list="diagramRelationsDatas2D"
+        :list="diagramRelationsDatas"
         keyField="fieldEngineCode"
         :itemSize="452"
         v-slot="{ item, index }"
       >
         <TwoDMarkersChart
+          v-if="getFileTypeFromUrl(item.fileAddr) === 'speed_torque'"
           :index="index + 'TwoDMarkersChart'"
           :key="item.fieldEngineCode + 'TwoDMarkersChart'"
           :ref="item.fieldEngineCode"
           :fileAddr="item.fileAddr"
         >
         </TwoDMarkersChart>
-      </VirtualList>
-      <VirtualList
-        :list="diagramRelationsDatas3D"
-        keyField="fieldEngineCode"
-        :itemSize="452"
-        v-slot="{ item, index }"
-      >
         <DDrawingChart
+          v-if="getFileTypeFromUrl(item.fileAddr) === '3D'"
           :key="item.fieldEngineCode + 'DDrawingChart'"
           :index="index + 'fen'"
           :ref="item.fieldEngineCode + 'DDrawingChart'"
@@ -79,7 +74,7 @@
         </DDrawingChart>
       </VirtualList>
 
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -90,7 +85,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -113,7 +108,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import DDrawingChart from "@/views/performance/components/chartsCom/3DDrawingChart.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 import TwoDMarkersChart from "@/views/performance/components/chartsCom/TwoDMarkersChart.vue";
 
 export default {
@@ -154,6 +153,7 @@ export default {
       requestRecord: [],
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
       diagramRelationsDatas2D: [],
       diagramRelationsDatas3D: [],
     };
@@ -254,6 +254,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -270,31 +273,36 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         console.log(this.generalFilesDatas, "总图数据");
 
         if (result.data && result.data[0] && result.data[0].diagramRelations) {
           const diagramRelationsDatas = result.data[0].diagramRelations.filter(
             (item) => item.fileAddr.endsWith(".json")
           );
-          this.diagramRelationsDatas2D = diagramRelationsDatas.filter(
-            (item) => this.getFileTypeFromUrl(item.fileAddr) === "speed_torque"
-          );
-          this.diagramRelationsDatas3D = diagramRelationsDatas.filter(
-            (item) => this.getFileTypeFromUrl(item.fileAddr) === "3D"
-          );
+          this.diagramRelationsDatas2D =
+            diagramRelationsDatas.filter(
+              (item) =>
+                this.getFileTypeFromUrl(item.fileAddr) === "speed_torque"
+            ) || [];
+          this.diagramRelationsDatas3D =
+            diagramRelationsDatas.filter(
+              (item) => this.getFileTypeFromUrl(item.fileAddr) === "3D"
+            ) || [];
         }
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 26 - 15
src/views/overview/components/temperature_environment/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:09:46
- * @LastEditTime: 2025-01-21 11:37:39
+ * @LastEditTime: 2025-01-21 16:09:31
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_environment/index.vue
@@ -78,7 +78,7 @@
         v-slot="{ item, index }"
       >
       </VirtualList> -->
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -89,7 +89,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -112,7 +112,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import BarChart from "@/views/performance/components/chartsCom/BarChart.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "temperatureEnvironment",
@@ -149,6 +153,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -217,6 +222,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -233,18 +241,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 30 - 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-01-21 11:15:12
+ * @LastEditTime: 2025-01-21 16:08:50
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_Winding_tem/index.vue
@@ -77,7 +77,7 @@
         >
         </lineChartsFen>
       </div>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -88,7 +88,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -112,7 +112,11 @@ import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import lineAndChildLine from "@/views/performance/components/chartsCom/lineAndChildLine.vue";
 import lineChartsFen from "@/views/performance/components/chartsCom/lineChartsFen.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "temperature_large_components_Winding_tem",
@@ -150,6 +154,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -221,6 +226,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -237,22 +245,25 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) =>
-              item.fileAddr.includes("generator_winding1_temperature")
-            ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes("generator_winding1_temperature")
+              )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) =>
-              item.fileAddr.includes("generator_winding1_temperature")
-            );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes("generator_winding1_temperature")
+              )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 30 - 19
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-01-21 11:16:05
+ * @LastEditTime: 2025-01-21 16:11:53
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_adriven/index.vue
@@ -78,7 +78,7 @@
         >
         </lineChartsFen>
       </div>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -89,7 +89,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -113,7 +113,11 @@ import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import lineAndChildLine from "@/views/performance/components/chartsCom/lineAndChildLine.vue";
 import lineChartsFen from "@/views/performance/components/chartsCom/lineChartsFen.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "temperature_large_components_adriven",
@@ -151,6 +155,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -222,6 +227,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -238,22 +246,25 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) =>
-              item.fileAddr.includes("generatordrive_end_bearing_temperature")
-            ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes("generatordrive_end_bearing_temperature")
+              )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) =>
-              item.fileAddr.includes("generatordrive_end_bearing_temperature")
-            );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes("generatordrive_end_bearing_temperature")
+              )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 34 - 23
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-01-21 11:15:56
+ * @LastEditTime: 2025-01-21 16:09:20
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_hig/index.vue
@@ -78,7 +78,7 @@
         >
         </lineChartsFen>
       </div>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -89,7 +89,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -113,7 +113,11 @@ import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import lineAndChildLine from "@/views/performance/components/chartsCom/lineAndChildLine.vue";
 import lineChartsFen from "@/views/performance/components/chartsCom/lineChartsFen.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "temperature_large_components_hig",
@@ -151,6 +155,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -222,6 +227,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -238,26 +246,29 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) =>
-              item.fileAddr.includes(
-                "gearbox_high_speed_shaft_bearing_temperature"
-              )
-            ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes(
+                  "gearbox_high_speed_shaft_bearing_temperature"
+                )
+              )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) =>
-              item.fileAddr.includes(
-                "gearbox_high_speed_shaft_bearing_temperature"
-              )
-            );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes(
+                  "gearbox_high_speed_shaft_bearing_temperature"
+                )
+              )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 34 - 23
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-01-21 11:15:49
+ * @LastEditTime: 2025-01-21 16:12:04
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_low/index.vue
@@ -78,7 +78,7 @@
         >
         </lineChartsFen>
       </div>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -89,7 +89,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -113,7 +113,11 @@ import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import lineAndChildLine from "@/views/performance/components/chartsCom/lineAndChildLine.vue";
 import lineChartsFen from "@/views/performance/components/chartsCom/lineChartsFen.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "temperature_large_components_low",
@@ -151,6 +155,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -222,6 +227,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -238,26 +246,29 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) =>
-              item.fileAddr.includes(
-                "gearbox_low_speed_shaft_bearing_temperature"
-              )
-            ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes(
+                  "gearbox_low_speed_shaft_bearing_temperature"
+                )
+              )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) =>
-              item.fileAddr.includes(
-                "gearbox_low_speed_shaft_bearing_temperature"
-              )
-            );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes(
+                  "gearbox_low_speed_shaft_bearing_temperature"
+                )
+              )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 35 - 23
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-01-21 11:15:42
+ * @LastEditTime: 2025-01-21 16:12:12
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_mid/index.vue
@@ -78,7 +78,7 @@
         >
         </lineChartsFen>
       </div>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -89,7 +89,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -113,7 +113,11 @@ import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import lineAndChildLine from "@/views/performance/components/chartsCom/lineAndChildLine.vue";
 import lineChartsFen from "@/views/performance/components/chartsCom/lineChartsFen.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "temperature_large_components_mid",
@@ -151,6 +155,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -222,6 +227,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -238,26 +246,30 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) =>
-              item.fileAddr.includes(
-                "gearboxmedium_speed_shaftbearing_temperature"
-              )
-            ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes(
+                  "gearboxmedium_speed_shaftbearing_temperature"
+                )
+              )) ||
+          []; //总图数据
+        console.log(this.generalFilesDatas, "this.generalFilesDatas");
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) =>
-              item.fileAddr.includes(
-                "gearboxmedium_speed_shaftbearing_temperature"
-              )
-            );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes(
+                  "gearboxmedium_speed_shaftbearing_temperature"
+                )
+              )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 30 - 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-01-21 11:15:35
+ * @LastEditTime: 2025-01-21 16:12:21
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_min/index.vue
@@ -78,7 +78,7 @@
         >
         </lineChartsFen>
       </div>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -89,7 +89,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -113,7 +113,11 @@ import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import lineAndChildLine from "@/views/performance/components/chartsCom/lineAndChildLine.vue";
 import lineChartsFen from "@/views/performance/components/chartsCom/lineChartsFen.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "temperature_large_components_min",
@@ -151,6 +155,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -222,6 +227,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -238,22 +246,25 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) =>
-              item.fileAddr.includes("main_bearing_temperature")
-            ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes("main_bearing_temperature")
+              )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) =>
-              item.fileAddr.includes("main_bearing_temperature")
-            );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes("main_bearing_temperature")
+              )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 30 - 15
src/views/overview/components/temperature_large_components_tem_deviation/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-21 10:03:27
- * @LastEditTime: 2025-01-21 11:20:16
+ * @LastEditTime: 2025-01-21 16:09:00
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_tem_deviation/index.vue
@@ -60,7 +60,7 @@
         >
         </GeneratorTemperature>
       </div>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -71,7 +71,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -95,7 +95,11 @@ import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import lineAndChildLine from "@/views/performance/components/chartsCom/lineAndChildLine.vue";
 import GeneratorTemperature from "@/views/performance/components/chartsCom/GeneratorTemperature.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "temperature_large_components_tem_deviation",
@@ -133,6 +137,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -204,6 +209,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -220,18 +228,25 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) => item.fileAddr.includes("GeneratorTemperature")); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes("GeneratorTemperature")
+              )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) => item.fileAddr.includes("GeneratorTemperature"));
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes("GeneratorTemperature")
+              )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 34 - 23
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-01-21 11:15:26
+ * @LastEditTime: 2025-01-21 16:12:36
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_undriven/index.vue
@@ -78,7 +78,7 @@
         >
         </lineChartsFen>
       </div>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -89,7 +89,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -113,7 +113,11 @@ import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import lineAndChildLine from "@/views/performance/components/chartsCom/lineAndChildLine.vue";
 import lineChartsFen from "@/views/performance/components/chartsCom/lineChartsFen.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "temperature_large_components_undriven",
@@ -151,6 +155,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -222,6 +227,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -238,26 +246,29 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) =>
-              item.fileAddr.includes(
-                "generatornon_drive_end_bearing_temperature"
-              )
-            ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes(
+                  "generatornon_drive_end_bearing_temperature"
+                )
+              )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations
-            .filter((item) => item.fileAddr.endsWith(".json"))
-            .filter((item) =>
-              item.fileAddr.includes(
-                "generatornon_drive_end_bearing_temperature"
-              )
-            );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations
+              .filter((item) => item.fileAddr.endsWith(".json"))
+              .filter((item) =>
+                item.fileAddr.includes(
+                  "generatornon_drive_end_bearing_temperature"
+                )
+              )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 26 - 15
src/views/overview/components/tsr/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:10:11
- * @LastEditTime: 2025-01-20 13:42:18
+ * @LastEditTime: 2025-01-21 16:12:47
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/tsr/index.vue
@@ -64,7 +64,7 @@
         </lineChartsFen>
       </div>
 
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -75,7 +75,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -99,7 +99,11 @@ import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import lineAndChildLine from "@/views/performance/components/chartsCom/lineAndChildLine.vue";
 import lineChartsFen from "@/views/performance/components/chartsCom/lineChartsFen.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "tsr",
@@ -137,6 +141,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -205,6 +210,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -221,18 +229,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 26 - 15
src/views/overview/components/tsr_cp_power/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:10:24
- * @LastEditTime: 2025-01-21 10:26:44
+ * @LastEditTime: 2025-01-21 16:08:40
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/tsr_cp_power/index.vue
@@ -64,7 +64,7 @@
         >
         </lineChartsFen>
       </div>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -75,7 +75,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -99,7 +99,11 @@ import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import lineAndChildLine from "@/views/performance/components/chartsCom/lineAndChildLine.vue";
 import lineChartsFen from "@/views/performance/components/chartsCom/lineChartsFen.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "tsrCpPower",
@@ -137,6 +141,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -205,6 +210,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -221,18 +229,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 26 - 15
src/views/overview/components/tsr_cp_power_scatter/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:22:59
- * @LastEditTime: 2025-01-20 13:43:15
+ * @LastEditTime: 2025-01-21 16:12:58
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/index.vue
@@ -46,7 +46,7 @@
         >
         </NoColourBandTwoDMarkerChart>
       </VirtualList>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -57,7 +57,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -80,7 +80,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import NoColourBandTwoDMarkerChart from "@/views/performance/components/chartsCom/NoColourBandTwoDMarkerChart.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "tsr_cp_power_scatter",
@@ -117,6 +121,7 @@ export default {
       diagramRelationsDatas: [], //分图,
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -191,6 +196,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -207,18 +215,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 26 - 15
src/views/overview/components/tsr_trend/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:10:39
- * @LastEditTime: 2025-01-20 13:43:40
+ * @LastEditTime: 2025-01-21 16:08:31
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/tsr_trend/index.vue
@@ -45,7 +45,7 @@
         >
         </BoxMarkersCharts>
       </VirtualList>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -56,7 +56,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -79,7 +79,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import BoxMarkersCharts from "@/views/performance/components/chartsCom/BoxMarkersCharts.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "tsrTrend",
@@ -117,6 +121,7 @@ export default {
       diagramRelationsDatas: [], //分图,
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -191,6 +196,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -207,18 +215,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 26 - 15
src/views/overview/components/tsr_windspeed/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:10:59
- * @LastEditTime: 2025-01-20 13:43:58
+ * @LastEditTime: 2025-01-21 16:13:10
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/tsr_windspeed/index.vue
@@ -64,7 +64,7 @@
         </lineChartsFen>
       </div>
 
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -75,7 +75,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -99,7 +99,11 @@ import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import lineAndChildLine from "@/views/performance/components/chartsCom/lineAndChildLine.vue";
 import lineChartsFen from "@/views/performance/components/chartsCom/lineChartsFen.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "tsrWindspeed",
@@ -137,6 +141,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -205,6 +210,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -221,18 +229,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 44 - 34
src/views/overview/components/wind_direction_frequency/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:11:12
- * @LastEditTime: 2025-01-20 09:23:19
+ * @LastEditTime: 2025-01-21 16:06:41
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/wind_direction_frequency/index.vue
@@ -45,7 +45,7 @@
         ></WindRoseChart>
       </VirtualList>
 
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -56,7 +56,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -80,7 +80,11 @@ import WindRoseChart from "@/views/performance/components/chartsCom/WindRoseChar
 import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "windDirectionFrequency",
@@ -117,6 +121,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -191,6 +196,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -207,18 +215,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }
@@ -279,28 +290,27 @@ export default {
     overflow: auto;
     padding: 20px;
     flex: 1;
-      /* 滚动条整体样式 */
-  &::-webkit-scrollbar {
-    width: 6px; /* 滚动条宽度 */
-  }
-
-  /* 滚动条轨道 */
-  &::-webkit-scrollbar-track {
-    background: #f5f7fa;
-    border-radius: 3px;
-  }
+    /* 滚动条整体样式 */
+    &::-webkit-scrollbar {
+      width: 6px; /* 滚动条宽度 */
+    }
 
-  /* 滚动条滑块 */
-  &::-webkit-scrollbar-thumb {
-    background: #c0c4cc;
-    border-radius: 3px;
-  }
+    /* 滚动条轨道 */
+    &::-webkit-scrollbar-track {
+      background: #f5f7fa;
+      border-radius: 3px;
+    }
 
-  /* 滚动条滑块悬停时 */
-  &::-webkit-scrollbar-thumb:hover {
-    background: #909399;
-  }
+    /* 滚动条滑块 */
+    &::-webkit-scrollbar-thumb {
+      background: #c0c4cc;
+      border-radius: 3px;
+    }
 
+    /* 滚动条滑块悬停时 */
+    &::-webkit-scrollbar-thumb:hover {
+      background: #909399;
+    }
   }
   .right {
     width: 250px;

+ 26 - 15
src/views/overview/components/wind_speed/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:11:23
- * @LastEditTime: 2025-01-20 17:31:50
+ * @LastEditTime: 2025-01-21 16:13:21
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/wind_spee/index.vue
@@ -46,7 +46,7 @@
           :fileAddr="item.fileAddr"
         ></BarChart>
       </VirtualList>
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -57,7 +57,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -80,7 +80,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import BarChart from "@/views/performance/components/chartsCom/BarChart.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "windSpee",
@@ -117,6 +121,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -185,6 +190,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -201,18 +209,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 26 - 15
src/views/overview/components/wind_speed_frequency/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:11:34
- * @LastEditTime: 2025-01-20 17:32:09
+ * @LastEditTime: 2025-01-21 16:07:00
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/wind_speed_frequency/index.vue
@@ -59,7 +59,7 @@
       </div>
       <el-empty description="暂无分析记录" v-else></el-empty> -->
 
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -70,7 +70,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row type="flex" class="row-bg" justify="end" v-if="isShowDescription">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -93,7 +93,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import BarChart from "@/views/performance/components/chartsCom/BarChart.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 
 export default {
   name: "windSpeedFrequency",
@@ -130,6 +134,7 @@ export default {
       diagramRelationsDatas: [], //分图
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -198,6 +203,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -214,18 +222,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 62 - 59
src/views/overview/components/yaw_error/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:24:14
- * @LastEditTime: 2025-01-17 16:58:03
+ * @LastEditTime: 2025-01-22 09:43:49
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/yaw_error/index.vue
@@ -31,28 +31,6 @@
           静态偏航误差过大,导致风轮不能精准对风,会造成发电损失,例如10°的静态偏航误差导致2.6%的发电损失,且风速较低的风场往往出现更多的发电损失;此外静态偏航误差过大,不仅会影响机组的功率输出,还会引起叶片气动弹性波动,增加机组的额外载荷。因此,定期检测机组的静态偏航误差,并及时校正,对于改善机组发电性能和机组运行安全都有很重要的意义。
         </div>
       </el-alert>
-      <div class="titleCharts">分析分图 :</div>
-      <div v-if="zongFaultCsvData.length > 0">
-        <FaultAll
-          :faultTypes="
-            zongFaultCsvData &&
-            zongFaultCsvData[0] &&
-            zongFaultCsvData[0].data.map((item) => item.engine_name)
-          "
-          :faultCounts="
-            zongFaultCsvData &&
-            zongFaultCsvData[0] &&
-            zongFaultCsvData[0].data.map((item) => item.count)
-          "
-          :faultDurations="
-            zongFaultCsvData &&
-            zongFaultCsvData[0] &&
-            zongFaultCsvData[0].data.map((item) => item.fault_time_sum)
-          "
-          :zongFaultCsvData="zongFaultCsvData"
-        ></FaultAll>
-      </div>
-      <el-empty description="暂无分析记录" v-else></el-empty>
 
       <div class="titleCharts">分析总图 :</div>
       <div v-if="zongFaultCsvData.length > 0">
@@ -82,8 +60,20 @@
         </template>
       </div>
       <el-empty description="暂无分析记录" v-else></el-empty>
-
-      <el-tabs value="first">
+      <div class="titleCharts">分析分图 :</div>
+      <div v-if="fenFaultCsvData.length > 0">
+        <div v-for="(item, index) in fenFaultCsvData">
+          <yawErrorLine
+            :key="item.fieldEngineCode + index"
+            :index="index"
+            :ref="item.fieldEngineCode"
+            :fileAddr="item.fileAddr"
+          >
+          </yawErrorLine>
+        </div>
+      </div>
+      <el-empty description="暂无分析记录" v-else></el-empty>
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -94,7 +84,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row v-if="isShowDescription" type="flex" class="row-bg" justify="end">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -117,7 +107,12 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import FaultAll from "@/views/performance/components/chartsCom/FaultAll.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import yawErrorLine from "@/views/performance/components/chartsCom/yawErrorLine.vue";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 import Papa from "papaparse";
 import axios from "axios";
 export default {
@@ -127,6 +122,7 @@ export default {
     FilterChart,
     FaultAll,
     TinymceEditor,
+    yawErrorLine,
   },
   props: {
     initBatchCode: {
@@ -158,6 +154,7 @@ export default {
       fenFaultCsvData: [],
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   computed: {
@@ -258,12 +255,12 @@ export default {
                     });
                   } else {
                     //分
-                    this.fenFaultCsvHeader.push(Object.keys(result.data[0]));
-                    this.fenFaultCsvData.push({
-                      data: result.data
-                        .filter((row) => Object.keys(row).length)
-                        .slice(0, result.data.length - 1),
-                    });
+                    // this.fenFaultCsvHeader.push(Object.keys(result.data[0]));
+                    // this.fenFaultCsvData.push({
+                    //   data: result.data
+                    //     .filter((row) => Object.keys(row).length)
+                    //     .slice(0, result.data.length - 1),
+                    // });
                   }
                 }
               },
@@ -301,6 +298,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes.join(","),
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -331,13 +331,17 @@ export default {
           this.zongFaultCsvData = [];
         }
         if (result.data && result.data[0] && result.data[0].diagramRelations) {
-          result.data[0].diagramRelations.map((item) => {
-            if (item.fileAddr) {
-              this.fenFaultCsvHeader = [];
-              this.fenFaultCsvData = [];
-              this.fetchCsvData("yaw_error", item.fileAddr);
-            }
-          });
+          this.fenFaultCsvData =
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            ) || [];
+          // result.data[0].diagramRelations.map((item) => {
+          //   if (item.fileAddr) {
+          //     this.fenFaultCsvHeader = [];
+          //     this.fenFaultCsvData = [];
+          //     this.fetchCsvData("yaw_error", item.fileAddr);
+          //   }
+          // });
         } else {
           this.fenFaultCsvHeader = [];
           this.fenFaultCsvData = [];
@@ -402,28 +406,27 @@ export default {
     overflow: auto;
     padding: 20px;
     flex: 1;
-      /* 滚动条整体样式 */
-  &::-webkit-scrollbar {
-    width: 6px; /* 滚动条宽度 */
-  }
-
-  /* 滚动条轨道 */
-  &::-webkit-scrollbar-track {
-    background: #f5f7fa;
-    border-radius: 3px;
-  }
+    /* 滚动条整体样式 */
+    &::-webkit-scrollbar {
+      width: 6px; /* 滚动条宽度 */
+    }
 
-  /* 滚动条滑块 */
-  &::-webkit-scrollbar-thumb {
-    background: #c0c4cc;
-    border-radius: 3px;
-  }
+    /* 滚动条轨道 */
+    &::-webkit-scrollbar-track {
+      background: #f5f7fa;
+      border-radius: 3px;
+    }
 
-  /* 滚动条滑块悬停时 */
-  &::-webkit-scrollbar-thumb:hover {
-    background: #909399;
-  }
+    /* 滚动条滑块 */
+    &::-webkit-scrollbar-thumb {
+      background: #c0c4cc;
+      border-radius: 3px;
+    }
 
+    /* 滚动条滑块悬停时 */
+    &::-webkit-scrollbar-thumb:hover {
+      background: #909399;
+    }
   }
 
   .right {

+ 26 - 15
src/views/overview/components/yaw_error_density/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:26:12
- * @LastEditTime: 2025-01-20 13:44:27
+ * @LastEditTime: 2025-01-21 16:07:35
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/yaw_error_density/index.vue
@@ -51,7 +51,7 @@
           </TwoDMarkersChart>
         </RecycleScroller>
       </div> -->
-      <el-tabs value="first">
+      <el-tabs value="first" v-if="isShowDescription">
         <el-tab-pane label="意见描述" name="first">
           <TinymceEditor
             ref="editor"
@@ -62,7 +62,7 @@
           </TinymceEditor>
         </el-tab-pane>
       </el-tabs>
-      <el-row type="flex" class="row-bg" justify="end">
+      <el-row v-if="isShowDescription" type="flex" class="row-bg" justify="end">
         <el-col :span="2" style="margin: 20px">
           <el-button type="primary" size="small" @click="handleComment"
             >提交评论</el-button
@@ -85,7 +85,11 @@ import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
 import TwoDMarkersChart from "@/views/performance/components/chartsCom/TwoDMarkersChart.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
-import { analysisDetail, queryAnalysisedEngine } from "@/api/performance";
+import {
+  analysisDetail,
+  queryAnalysisedEngine,
+  analysisCommentEdit,
+} from "@/api/performance";
 export default {
   name: "yaw_error_density",
   components: {
@@ -123,6 +127,7 @@ export default {
       requestRecord: [],
       commentDescriptionVos: [], //评论列表
       editableTabs: [],
+      isShowDescription: false,
     };
   },
   watch: {
@@ -197,6 +202,9 @@ export default {
               ? undefined
               : this.fieldEngineCodes,
         });
+        if (result.data.length > 0) {
+          this.isShowDescription = true;
+        }
         if (
           result.data &&
           result.data[0] &&
@@ -214,18 +222,21 @@ export default {
           this.commentDescriptionVos = result.data[0].commentDescriptionVos;
         }
         this.generalFilesDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].generalFiles &&
-          result.data[0].generalFiles.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          ); //总图数据
+          (result.data &&
+            result.data[0] &&
+            result.data[0].generalFiles &&
+            result.data[0].generalFiles.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          []; //总图数据
         this.diagramRelationsDatas =
-          result.data &&
-          result.data[0] &&
-          result.data[0].diagramRelations.filter((item) =>
-            item.fileAddr.endsWith(".json")
-          );
+          (result.data &&
+            result.data[0] &&
+            result.data[0].diagramRelations &&
+            result.data[0].diagramRelations.filter((item) =>
+              item.fileAddr.endsWith(".json")
+            )) ||
+          [];
       } catch (err) {
         console.error("Failed to fetch analysis details:", err);
       }

+ 15 - 2
src/views/performance/components/chartsCom/3DDrawingChart.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-17 19:04:52
- * @LastEditTime: 2025-01-20 16:27:38
+ * @LastEditTime: 2025-01-22 09:22:37
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/3DDrawingChart.vue
@@ -187,19 +187,32 @@ export default {
         scene: {
           xaxis: {
             title: this.chartData.xaixs, // X 轴标题
+            gridcolor: "rgb(255,255,255)", // 网格线颜色
+            tickcolor: "rgb(255,255,255)",
+            backgroundcolor: "#e5ecf6",
+            showbackground: true, // 显示背景
           },
           yaxis: {
             title: this.chartData.yaixs, // Y 轴标题
+            gridcolor: "rgb(255,255,255)", // 网格线颜色
+            tickcolor: "rgb(255,255,255)",
+            backgroundcolor: "#e5ecf6",
+            showbackground: true, // 显示背景
           },
           zaxis: {
             title: this.chartData.zaixs, // Z 轴标题
+            gridcolor: "rgb(255,255,255)", // 网格线颜色
+            tickcolor: "rgb(255,255,255)",
+            backgroundcolor: "#e5ecf6",
+            showbackground: true, // 显示背景
           },
           aspectratio: {
             x: 1.5, // X 轴比例
             y: 2, // Y 轴比例
             z: 2, // Z 轴比例(可根据需要调整)
           },
-
+          plot_bgcolor: "#e5ecf6",
+          gridcolor: "#fff", // 设置网格线颜色
           camera: {
             eye: {
               x: 2, // 眼睛的位置

+ 4 - 4
src/views/performance/components/chartsCom/BoxLineCharts.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2024-09-11 14:32:51
- * @LastEditTime: 2025-01-20 17:50:11
+ * @LastEditTime: 2025-01-21 19:04:09
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/BoxLineCharts.vue
@@ -161,7 +161,7 @@ export default {
     <div
       v-loading="loading"
       :id="`plotDivBox-${index}`"
-      style="width: 100%; height: 550px"
+      style="width: 100%; height: 450px"
     >
       <el-empty v-if="isError" description="请求失败"></el-empty>
     </div>
@@ -227,10 +227,10 @@ export default {
         },
 
         line: {
-          color: "#64ADC2", // 设置箱线图边框颜色
+          color: "#C7C7C7", // 设置箱线图边框颜色
         },
         boxpoints: "none", // 不显示散点
-        fillcolor: "#64adc28a", // 设置箱线图填充颜色,带透明度
+        fillcolor: "#E9E9E9", // 设置箱线图填充颜色,带透明度
         name: chartData.title, // 设置图例名称
       };
 

+ 13 - 9
src/views/performance/components/chartsCom/BoxMarkersCharts.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2024-09-11 14:36:31
- * @LastEditTime: 2025-01-16 17:55:25
+ * @LastEditTime: 2025-01-21 18:55:00
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/BoxMarkersCharts.vue
@@ -17,7 +17,11 @@
  -->
 <template>
   <div>
-    <div v-loading="loading" ref="plotlyChart" style="width: 100%; height: 600px">
+    <div
+      v-loading="loading"
+      ref="plotlyChart"
+      style="width: 100%; height: 450px"
+    >
       <el-empty v-if="isError" description="请求失败"></el-empty>
     </div>
   </div>
@@ -51,19 +55,19 @@ export default {
     async getData() {
       if (this.fileAddr !== "") {
         try {
-          this.loading=true
+          this.loading = true;
           this.cancelToken = axios.CancelToken.source();
-          console.log(this.cancelToken)
+          console.log(this.cancelToken);
           const resultChartsData = await axios.get(this.fileAddr, {
-            cancelToken: this.cancelToken.token
+            cancelToken: this.cancelToken.token,
           });
           this.chartData = resultChartsData.data;
           this.drawBoxPlot();
-          this.isError = false
-          this.loading = false
+          this.isError = false;
+          this.loading = false;
         } catch (error) {
-          this.isError = true
-          this.loading = false
+          this.isError = true;
+          this.loading = false;
         }
       }
     },

+ 4 - 1
src/views/performance/components/chartsCom/GeneratorTemperature.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-21 11:18:49
- * @LastEditTime: 2025-01-21 11:31:12
+ * @LastEditTime: 2025-01-21 15:40:55
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/GeneratorTemperature.vue
@@ -128,6 +128,9 @@ export default {
             dash: this.typeLine[index % this.colors.length],
             color: this.colors[index % this.colors.length], // 为每个机组分配不同的颜色
           },
+          marker: {
+            color: this.colors[index % this.colors.length], // 为每个机组分配不同的颜色
+          },
         };
 
         if (this.chartType === "line") {

+ 45 - 181
src/views/performance/components/chartsCom/HeatmapCharts.vue

@@ -3,11 +3,13 @@
     <div :id="`chart-${inds}`" style="width: 100%; height: 450px"></div>
   </div>
 </template>
+
 <script>
 import { nextTick } from "vue"; // 导入 nextTick
 import { allTypesDatas } from "@/utils/allTypesOfAnalysisData.js";
 import Plotly from "plotly.js-dist";
 import axios from "axios";
+
 export default {
   props: {
     inds: {
@@ -26,102 +28,17 @@ export default {
       chartData: {},
       initData: [
         {
-          z: [
-            [
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-            ],
-            [
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-            ],
-            [
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-            ],
-            [
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-            ],
-            [
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-            ],
-            [
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-            ],
-            [
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-            ],
-            [
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-            ],
-            [
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-            ],
-            [
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-            ],
-            [
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-            ],
-            [
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-              5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
-            ],
-          ],
-          x: [
-            "#01",
-            "#02",
-            "#03",
-            "#04",
-            "#05",
-            "#06",
-            "#07",
-            "#08",
-            "#09",
-            "#10",
-            "#11",
-            "#12",
-            "#13",
-            "#14",
-            "#15",
-            "#16",
-            "#17",
-            "#18",
-            "#19",
-            "#20",
-            "#21",
-          ],
-          y: [
-            "2023-01",
-            "2023-02",
-            "2023-03",
-            "2023-04",
-            "2023-05",
-            "2023-06",
-            "2023-07",
-            "2023-08",
-            "2023-09",
-            "2023-10",
-            "2023-11",
-            "2023-12",
-          ],
+          z: [],
+          x: [],
+          y: [],
           type: "heatmap",
-          colorscale: "Viridis", //分钟scads
           colorscale: [
-            [0, "#FCFED4"], // 0% - 50%,保持 "#FCFED4"
-            [0.5, "#FCFED4"], // 50%,结束 "#FCFED4"
-            [0.5, "#5BA8BF"], // 50%-85%,开始 "#C4E4B9"
-            [0.85, "#5BA8BF"], // 85%,结束 "#C4E4B9"
-            [0.85, "#18276E"], // 85%-100%,开始 "#5BA8BF"
-            [1, "#18276E"], // 100%,结束 "#5BA8BF"
+            [0, "#FCFED4"], // 0% - 50%
+            [0.5, "#FCFED4"], // 50%
+            [0.5, "#5BA8BF"], // 50% - 85%
+            [0.85, "#5BA8BF"], // 85%
+            [0.85, "#18276E"], // 85% - 100%
+            [1, "#18276E"], // 100%
           ],
           showscale: true, // 显示色带(可选)
           hoverongaps: false,
@@ -130,7 +47,6 @@ export default {
     };
   },
   mounted() {
-    this.getData();
     if (this.fileAddr) {
       this.getData();
     }
@@ -145,14 +61,14 @@ export default {
           const resultChartsData = await axios.get(this.fileAddr, {
             cancelToken: this.cancelToken.token,
           });
+          console.log(resultChartsData.data, "resultChartsData");
           this.chartData = resultChartsData.data;
-          this.initData[0].y = resultChartsData.data[0].xData;
-          this.initData[0].z = resultChartsData.data[0].yData;
-          // 使用 nextTick 来确保 DOM 渲染完成后绘制图表
+          this.initData[0].x = this.chartData.data[0].xData;
+          this.initData[0].y = this.chartData.data[0].yData;
+          this.initData[0].z = this.chartData.data[0].ZData;
+
           nextTick(() => {
             this.initcharts();
-            // this.isError = false;
-            // this.loading = false;
           });
         } catch (error) {
           console.error("Error loading data:", error);
@@ -161,102 +77,50 @@ export default {
         }
       }
     },
-    initcharts() {
-      const lineDatas = allTypesDatas.filter(
-        (item) =>
-          item.analysisTypeCode === "data_integrity_second" ||
-          item.analysisTypeCode === "data_integrity_minute"
-      )[0];
 
-      // 生成 annotations 数据
+    initcharts() {
+      // 使用统一的颜色范围
+      const trace = {
+        type: "heatmap",
+        x: this.initData[0].x,
+        y: this.initData[0].y,
+        z: this.initData[0].z,
+        colorscale: this.initData[0].colorscale, // 使用新的颜色范围
+        text: this.initData[0].z.map((row) =>
+          row.map((value) => value.toString())
+        ),
+        hoverinfo: "text", // Hover时显示文本
+        showscale: true, // 显示颜色条
+        texttemplate: "%{text}", // 在热图块上显示z值
+        xgap: 2, // 设置水平方向格子之间的间距
+        ygap: 2, // 设置垂直方向格子之间的间距
+      };
 
       const layout = {
-        ...lineDatas.lableConfig,
         showlegend: false,
-        shapes: this.createShapesBorder(
-          this.initData[0].y.length,
-          this.initData[0].x.length + 1,
-          1,
-          "white",
-          0
-        ),
-        // annotations: this.createAnnotations(this.initData[0].z),
-        margin: {
-          l: 100,
-          r: 100,
-          t: 100,
-          b: 100,
-        },
         autosize: true,
-        yaxis: {
-          type: "category",
-          tickvals: this.initData[0].y, // 确保 Y 轴的值和你的数据匹配
-          ticktext: this.initData[0].y,
-          showticks: false,
-          showgrid: true,
-        },
         xaxis: {
+          title: this.chartData.xaixs,
           tickvals: this.initData[0].x,
           ticktext: this.initData[0].x,
-          showticks: false,
-          showgrid: true,
+          tickmode: "array",
+        },
+        yaxis: {
+          tickmode: "array",
+          title: this.chartData.yaixs,
+          tickvals: this.initData[0].y,
+          ticktext: this.initData[0].y,
         },
-        plot_bgcolor: "white", // 背景颜色设置为白色,确保背景和网格线一致
+        plot_bgcolor: "white",
         gridcolor: "#d3d3d3", // 设置网格线颜色
       };
-      Plotly.newPlot(`chart-${this.inds}`, this.initData, layout, {
+
+      Plotly.newPlot(`chart-${this.inds}`, [trace], layout, {
         responsive: true,
       });
     },
-    // createAnnotations(zData) {
-    //   const annotations = [];
-    //   for (let row = 0; row < zData.length; row++) {
-    //     for (let col = 0; col < zData[row].length; col++) {
-    //       const x = this.initData[0].x[col];
-    //       const y = this.initData[0].y[row];
-    //       const value = zData[row][col];
-
-    //       // 打印 x, y, 和 value 检查是否为 NaN 或无效值
-    //       console.log(`x: ${x}, y: ${y}, value: ${value}`);
-
-    //       if (!isNaN(value)) {
-    //         annotations.push({
-    //           x: x,
-    //           y: y,
-    //           text: value.toString(),
-    //           showarrow: false,
-    //           font: {
-    //             size: 10,
-    //             color: "black",
-    //           },
-    //           align: "center",
-    //         });
-    //       }
-    //     }
-    //   }
-    //   return annotations;
-    // },
-
-    createShapesBorder(rows, cols, borderWidth, borderColor, offset) {
-      var shapes = [];
-      for (var row = 0; row < rows; row++) {
-        for (var col = 0; col < cols; col++) {
-          shapes.push({
-            type: "rect",
-            x0: col - 0.5 + offset,
-            x1: col + 0.5 + offset,
-            y0: row - 0.5 + offset,
-            y1: row + 0.5 + offset,
-            line: {
-              color: borderColor,
-              width: borderWidth,
-            },
-          });
-        }
-      }
-      return shapes;
-    },
   },
 };
 </script>
+
 <style scoped></style>

+ 28 - 9
src/views/performance/components/chartsCom/NoColourBandTwoDMarkerChart.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-17 17:22:04
- * @LastEditTime: 2025-01-17 17:23:46
+ * @LastEditTime: 2025-01-22 09:20:14
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/NoColourBandTwoDMarkerChart.vue
@@ -51,7 +51,7 @@ export default {
     },
     index: {
       type: Number,
-    }
+    },
   },
   data() {
     return {
@@ -70,19 +70,19 @@ export default {
     async getData() {
       if (this.fileAddr !== "") {
         try {
-          this.loading = true
+          this.loading = true;
           this.cancelToken = axios.CancelToken.source();
-          console.log(this.cancelToken)
+          console.log(this.cancelToken);
           const resultChartsData = await axios.get(this.fileAddr, {
-            cancelToken: this.cancelToken.token
+            cancelToken: this.cancelToken.token,
           });
           this.chartData = resultChartsData.data;
           this.drawChart();
-          this.isError = false
-          this.loading = false
+          this.isError = false;
+          this.loading = false;
         } catch (error) {
-          this.isError = true
-          this.loading = false
+          this.isError = true;
+          this.loading = false;
         }
       }
     },
@@ -153,11 +153,30 @@ export default {
         title: data.title,
         xaxis: {
           title: this.chartData.xaixs,
+          showline: false, // 隐藏x轴轴线
+          zeroline: false, // 隐藏零轴
+          gridcolor: "#fff", // 设置x轴网格线颜色
+          gridcolor: "rgb(255,255,255)", // 网格线颜色
+          tickcolor: "rgb(255,255,255)",
+          backgroundcolor: "#e5ecf6",
+          showbackground: true, // 显示背景
         },
         yaxis: {
+          showline: false, // 隐藏x轴轴线
+          zeroline: false, // 隐藏零轴
+          gridcolor: "#fff", // 设置x轴网格线颜色
           title: this.chartData.yaixs,
+          line: {
+            show: false,
+          },
+          gridcolor: "rgb(255,255,255)", // 网格线颜色
+          tickcolor: "rgb(255,255,255)",
+          backgroundcolor: "#e5ecf6",
+          showbackground: true, // 显示背景
         },
         showlegend: false,
+        plot_bgcolor: "#e5ecf6",
+        gridcolor: "#fff", // 设置网格线颜色
       };
       const config = {
         modeBarButtonsToAdd: [

+ 12 - 0
src/views/performance/components/chartsCom/TwoDMarkersChart.vue

@@ -170,11 +170,23 @@ export default {
         title: data.title,
         xaxis: {
           title: this.chartData.xaixs,
+          gridcolor: "rgb(255,255,255)", // 网格线颜色
+          tickcolor: "rgb(255,255,255)",
+          backgroundcolor: "#e5ecf6",
+          showbackground: true, // 显示背景
         },
         yaxis: {
           title: this.chartData.yaixs,
+          gridcolor: "rgb(255,255,255)", // 网格线颜色
+          tickcolor: "rgb(255,255,255)",
+          backgroundcolor: "#e5ecf6",
+          showbackground: true, // 显示背景
         },
         showlegend: false,
+        plot_bgcolor: "#e5ecf6",
+        gridcolor: "#fff", // 设置网格线颜色
+        // plot_bgcolor: "rad",
+        // gridcolor: "#d3d3d3", // 设置网格线颜色
       };
       const config = {
         modeBarButtonsToAdd: [

+ 13 - 9
src/views/performance/components/chartsCom/WindRoseChart.vue

@@ -1,6 +1,10 @@
 <template>
   <div>
-    <div v-loading="loading" :id="`plotDiv-${inds}`" style="width: 100%; height: 550px">
+    <div
+      v-loading="loading"
+      :id="`plotDiv-${inds}`"
+      style="width: 100%; height: 450px"
+    >
       <el-empty v-if="isError" description="请求失败"></el-empty>
     </div>
   </div>
@@ -47,20 +51,20 @@ export default {
     async getData() {
       if (this.fileAddr !== "") {
         try {
-          this.loading = true
+          this.loading = true;
           this.cancelToken = axios.CancelToken.source();
-          console.log(this.cancelToken)
+          console.log(this.cancelToken);
           const resultChartsData = await axios.get(this.fileAddr, {
-            cancelToken: this.cancelToken.token
+            cancelToken: this.cancelToken.token,
           });
-          console.log(resultChartsData)
+          console.log(resultChartsData);
           this.chartData = resultChartsData.data;
           this.renderChart();
-          this.isError = false
-          this.loading = false
+          this.isError = false;
+          this.loading = false;
         } catch (error) {
-          this.isError = true
-          this.loading = false
+          this.isError = true;
+          this.loading = false;
         }
       }
     },

+ 207 - 0
src/views/performance/components/chartsCom/YewErrorBarChart.vue

@@ -0,0 +1,207 @@
+<!--
+ * @Author: your name
+ * @Date: 2025-01-22 10:10:46
+ * @LastEditTime: 2025-01-22 10:12:02
+ * @LastEditors: bogon
+ * @Description: In User Settings Edit
+ * @FilePath: /performance-test/src/views/performance/components/chartsCom/YewErrorBarChart.vue
+-->
+<!--
+ * @Author: your name
+ * @Date: 2024-09-11 14:30:17
+ * @LastEditTime: 2025-01-20 17:31:39
+ * @LastEditors: bogon
+ * @Description: In User Settings Edit
+ * @FilePath: /performance-test/src/views/performance/components/chartsCom/BarChart.vue
+-->
+
+<template>
+  <div>
+    <!-- 图表控制面板 -->
+    <div style="display: flex; align-items: center">
+      <div style="margin-right: 20px; display: flex; align-items: center">
+        <el-color-picker
+          size="small"
+          v-model="color1"
+          show-alpha
+          @change="updateChartColor"
+        ></el-color-picker>
+        <span style="margin-left: 10px">自定义颜色</span>
+      </div>
+      <div>
+        <el-button size="small" @click="toggleChartType">
+          切换为{{ chartType === "bar" ? "折线图" : "柱状图" }}
+        </el-button>
+      </div>
+    </div>
+
+    <!-- 图表容器 -->
+    <div
+      v-loading="loading"
+      :id="`bar-chart${inds}`"
+      style="width: 100%; height: 400px"
+    >
+      <el-empty v-if="isError" description="请求失败"></el-empty>
+    </div>
+  </div>
+</template>
+
+<script>
+import { nextTick } from "vue"; // 导入 nextTick
+import Plotly from "plotly.js-dist";
+import axios from "axios";
+import { myMixin } from "@/mixins/chartRequestMixin";
+
+export default {
+  props: {
+    fileAddr: {
+      default: "",
+      type: String,
+    },
+    inds: {
+      type: String,
+      default() {
+        return 0;
+      },
+    },
+  },
+  mixins: [myMixin],
+  data() {
+    return {
+      chartData: {
+        analysisTypeCode: "",
+        engineCode: "",
+        engineTypeName: "",
+        xaixs: "",
+        yaixs: "",
+        data: [
+          // {
+          //   xData: ["2024-01-01", "2024-01-02", "2024-01-03", "2024-01-04", "2024-01-05"],
+          //   yData: [10, 20, 30, 40, 50],
+          //   title: "数据集1",
+          // },
+        ],
+      },
+      chartType: "bar", // 当前图表类型 ('bar' 或 'scatter')
+      color1: "#406DAB", // 默认颜色
+      // normalRangeMin: 5, // 最低范围
+      // normalRangeMax: 18, // 最高范围
+    };
+  },
+  mounted() {
+    nextTick(() => {
+      this.drawChart();
+      this.isError = false;
+      this.loading = false;
+    });
+  },
+  methods: {
+    // async getData() {
+    //   if (this.fileAddr !== "") {
+    //     try {
+    //       this.loading = true;
+    //       this.cancelToken = axios.CancelToken.source();
+    //       const resultChartsData = await axios.get(this.fileAddr, {
+    //         cancelToken: this.cancelToken.token,
+    //       });
+    //       this.chartData = resultChartsData.data;
+    //       // 使用 nextTick 来确保 DOM 渲染完成后绘制图表
+    //       nextTick(() => {
+    //         this.drawChart();
+    //         this.isError = false;
+    //         this.loading = false;
+    //       });
+    //     } catch (error) {
+    //       console.error("Error loading data:", error);
+    //       this.isError = true;
+    //       this.loading = false;
+    //     }
+    //   }
+    // },
+    // 绘制图表
+    drawChart() {
+      if (this.chartData.data.length === 0) return;
+      const chartDataset = this.chartData.data[0];
+      const trace = {
+        x: chartDataset.xData, // 横坐标数据
+        y: chartDataset.yData, // 纵坐标数据
+        type: this.chartType, // 当前图表类型 ('bar' 或 'scatter')
+        marker: {
+          color: this.color1, // 柱状图颜色
+        },
+        line: {
+          color: this.color1, // 折线图颜色
+        },
+        name: chartDataset.title || "数据", // 图例名称
+      };
+
+      // Normal Range Lines
+      const normalRangeLine = {
+        x: chartDataset.xData, // 横坐标数据
+        y: Array(chartDataset.xData.length).fill(this.normalRangeMin), // 最低值线
+        mode: "lines",
+        name: "LCL", // 图例名称(最低范围)
+        line: {
+          color: "red",
+          width: 2,
+          dash: "dash", // 虚线
+        },
+      };
+
+      const normalRangeMaxLine = {
+        x: chartDataset.xData, // 横坐标数据
+        y: Array(chartDataset.xData.length).fill(this.normalRangeMax), // 最高值线
+        mode: "lines",
+        name: "UCL", // 图例名称(最高范围)
+        line: {
+          color: "red",
+          width: 2,
+          dash: "dash", // 虚线
+        },
+      };
+
+      const layout = {
+        title: this.chartData.analysisTypeCode || "图表", // 图表标题
+        xaxis: {
+          title: this.chartData.xaixs || "X轴", // 横坐标标题
+        },
+        yaxis: {
+          title: this.chartData.yaixs || "Y轴", // 纵坐标标题
+        },
+        margin: {
+          l: 50,
+          r: 50,
+          t: 50,
+          b: 50,
+        },
+        autosize: true, // 开启自适应
+      };
+
+      // 渲染图表
+      Plotly.newPlot(
+        `bar-chart${this.inds}`,
+
+        // [trace, normalRangeLine, normalRangeMaxLine],
+        [trace],
+        layout,
+        {
+          responsive: true,
+        }
+      );
+    },
+    // 切换图表类型
+    toggleChartType() {
+      this.chartType = this.chartType === "bar" ? "scatter" : "bar";
+      this.drawChart();
+    },
+    // 更新图表颜色
+    updateChartColor() {
+      this.drawChart();
+    },
+  },
+};
+</script>
+
+<style scoped>
+/* 样式可以根据需求自定义 */
+</style>

+ 25 - 17
src/views/performance/components/chartsCom/lineAndChildLine.vue

@@ -88,7 +88,9 @@ export default {
           const resultChartsData = await axios.get(this.fileAddr, {
             cancelToken: this.cancelToken.token,
           });
+          console.log("resultChartsData.data", resultChartsData);
           this.chartData = resultChartsData.data;
+
           // 使用 nextTick 来确保 DOM 渲染完成后绘制图表
           nextTick(() => {
             this.drawChart();
@@ -105,25 +107,31 @@ export default {
     // 绘制图表
     drawChart() {
       const data = [];
-      this.chartData.data.forEach((turbine, index) => {
-        // 判断图表类型,根据类型调整绘制方式
-        const chartConfig = {
-          x: turbine.xData, // X 数据
-          y: turbine.yData, // Y 数据
-          name: turbine.engineName, // 使用机组名称
-          line: {
-            color: this.colors[index % this.colors.length], // 为每个机组分配不同的颜色
-          },
-        };
+      console.log(this.chartData, "this.chartData");
+      this.chartData &&
+        this.chartData.data &&
+        this.chartData.data.forEach((turbine, index) => {
+          // 判断图表类型,根据类型调整绘制方式
+          const chartConfig = {
+            x: turbine.xData, // X 数据
+            y: turbine.yData, // Y 数据
+            name: turbine.engineName, // 使用机组名称
+            line: {
+              color: this.colors[index % this.colors.length], // 为每个机组分配不同的颜色
+            },
+            marker: {
+              color: this.colors[index % this.colors.length], // 为每个机组分配不同的颜色
+            },
+          };
 
-        if (this.chartType === "line") {
-          chartConfig.mode = "lines"; // 如果是折线图
-        } else if (this.chartType === "bar") {
-          chartConfig.type = "bar"; // 如果是柱状图
-        }
+          if (this.chartType === "line") {
+            chartConfig.mode = "lines"; // 如果是折线图
+          } else if (this.chartType === "bar") {
+            chartConfig.type = "bar"; // 如果是柱状图
+          }
 
-        data.push(chartConfig);
-      });
+          data.push(chartConfig);
+        });
 
       const layout = {
         title: this.chartData.title,

+ 37 - 22
src/views/performance/components/chartsCom/powerMarkers2DCharts.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2024-09-11 14:32:12
- * @LastEditTime: 2025-01-17 12:31:47
+ * @LastEditTime: 2025-01-22 09:21:52
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/powerMarkers2DCharts.vue
@@ -147,7 +147,12 @@ export default {
     <template>
       <div style="display: flex; align-items: center; margin-top: 20px">
         <div style="margin-right: 20px; display: flex; align-items: center">
-          <el-color-picker size="small" v-model="color1" show-alpha @change="updateChartColor"></el-color-picker>
+          <el-color-picker
+            size="small"
+            v-model="color1"
+            show-alpha
+            @change="updateChartColor"
+          ></el-color-picker>
           <span style="margin-left: 10px">自定义颜色</span>
         </div>
       </div>
@@ -191,20 +196,20 @@ export default {
     async getData() {
       if (this.fileAddr !== "") {
         try {
-          this.loading = true
+          this.loading = true;
           this.cancelToken = axios.CancelToken.source();
-          console.log(this.cancelToken)
+          console.log(this.cancelToken);
           const resultChartsData = await axios.get(this.fileAddr, {
-            cancelToken: this.cancelToken.token
+            cancelToken: this.cancelToken.token,
           });
-          console.log(resultChartsData)
+          console.log(resultChartsData);
           this.chartData = resultChartsData.data;
           this.drawChart();
-          this.isError = false
-          this.loading = false
+          this.isError = false;
+          this.loading = false;
         } catch (error) {
-          this.isError = true
-          this.loading = false
+          this.isError = true;
+          this.loading = false;
         }
       }
     },
@@ -239,19 +244,19 @@ export default {
             color: data.yData, // 根据 yData 设置颜色
             colorscale: this.color1
               ? [
-                [0, "#F9FDD2"], // 颜色从 this.color1 开始
-                [1, this.color1], // 结束颜色为其他颜色
-              ]
+                  [0, "#F9FDD2"], // 颜色从 this.color1 开始
+                  [1, this.color1], // 结束颜色为其他颜色
+                ]
               : [
-                [0, "#F9FDD2"],
-                [0.15, "#E9F6BD"],
-                [0.3, "#C2E3B9"],
-                [0.45, "#8AC8BE"],
-                [0.6, "#5CA8BF"],
-                [0.75, "#407DB3"],
-                [0.9, "#2E4C9A"],
-                [1, "#1B2973"],
-              ],
+                  [0, "#F9FDD2"],
+                  [0.15, "#E9F6BD"],
+                  [0.3, "#C2E3B9"],
+                  [0.45, "#8AC8BE"],
+                  [0.6, "#5CA8BF"],
+                  [0.75, "#407DB3"],
+                  [0.9, "#2E4C9A"],
+                  [1, "#1B2973"],
+                ],
             colorbar: {
               title: data.colorbartitle, // 色标标题
             },
@@ -278,11 +283,21 @@ export default {
         title: data.title,
         xaxis: {
           title: this.chartData.xaixs,
+          gridcolor: "rgb(255,255,255)", // 网格线颜色
+          tickcolor: "rgb(255,255,255)",
+          backgroundcolor: "#e5ecf6",
+          showbackground: true, // 显示背景
         },
         yaxis: {
           title: this.chartData.yaixs,
+          gridcolor: "rgb(255,255,255)", // 网格线颜色
+          tickcolor: "rgb(255,255,255)",
+          backgroundcolor: "#e5ecf6",
+          showbackground: true, // 显示背景
         },
         showlegend: false,
+        plot_bgcolor: "#e5ecf6",
+        gridcolor: "#fff", // 设置网格线颜色
       };
 
       const config = {

+ 198 - 0
src/views/performance/components/chartsCom/yawErrorLine.vue

@@ -0,0 +1,198 @@
+<!--
+ * @Author: your name
+ * @Date: 2025-01-22 09:42:59
+ * @LastEditTime: 2025-01-22 09:59:53
+ * @LastEditors: milo-MacBook-Pro.local
+ * @Description: In User Settings Edit
+ * @FilePath: /performance-test/src/views/performance/components/chartsCom/yawErrorLine.vue
+-->
+<template>
+  <div>
+    <!-- 图表控制面板 总图-->
+    <div style="display: flex; align-items: center">
+      <div>
+        <el-button size="small" @click="toggleChartType">
+          切换为{{ chartType === "line" ? "柱状图" : "折线图" }}
+        </el-button>
+      </div>
+    </div>
+
+    <!-- 图表容器 -->
+    <div
+      v-loading="loading"
+      :id="`bar-chart${index}`"
+      style="width: 100%; height: 400px"
+    >
+      <el-empty v-if="isError" description="请求失败"></el-empty>
+    </div>
+  </div>
+</template>
+
+<script>
+import { nextTick } from "vue"; // 导入 nextTick
+import Plotly from "plotly.js-dist";
+import axios from "axios";
+import { myMixin } from "@/mixins/chartRequestMixin"; // 假设你需要的 mixin
+
+export default {
+  props: {
+    fileAddr: {
+      type: String,
+      default: "",
+    },
+    index: {
+      type: Number,
+      default() {
+        return 0;
+      },
+    },
+  },
+  mixins: [myMixin],
+  data() {
+    return {
+      chartData: {},
+      chartType: "line", // 默认图表类型是折线图
+      color1: "#406DAB", // 默认颜色
+      loading: false,
+      isError: false,
+      colors: [
+        "#DFEDC1",
+        "#DBEEBC",
+        "#A8D7BE",
+        "#8ECAC1",
+        "#77BDC2",
+        "#64ADC2",
+        "#559ABE",
+        "#4884B7",
+        "#406DAB",
+        "#3856A0",
+        "#314291",
+        "#28357A",
+        "#1A285E",
+      ],
+    };
+  },
+  mounted() {
+    if (this.fileAddr) {
+      this.getData();
+    }
+  },
+  methods: {
+    // 获取数据
+    async getData() {
+      if (this.fileAddr !== "") {
+        try {
+          this.loading = true;
+          this.cancelToken = axios.CancelToken.source();
+          const resultChartsData = await axios.get(this.fileAddr, {
+            cancelToken: this.cancelToken.token,
+          });
+          // 处理数据中的 NaN 值
+          const handleNaN = (key, value) => {
+            // 检查是否为 NaN,若是则返回 null,其他值保持不变
+            return typeof value === "number" && isNaN(value) ? null : value;
+          };
+
+          // 使用 JSON.stringify 和 replacer 来处理 NaN 值
+          this.chartData = JSON.parse(
+            JSON.stringify(resultChartsData.data, handleNaN)
+          );
+
+          // 使用 nextTick 来确保 DOM 渲染完成后绘制图表
+          nextTick(() => {
+            this.drawChart();
+            this.isError = false;
+            this.loading = false;
+          });
+        } catch (error) {
+          console.error("Error loading data:", error);
+          this.isError = true;
+          this.loading = false;
+        }
+      }
+    },
+    // 绘制图表
+    drawChart() {
+      const data = [];
+      console.log(this.chartData, "this.chartData");
+      this.chartData &&
+        this.chartData.data &&
+        this.chartData.data.forEach((turbine, index) => {
+          // 判断图表类型,根据类型调整绘制方式
+          const chartConfig = {
+            x: turbine.xData, // X 数据
+            y: turbine.yData, // Y 数据
+            name: turbine.engineName, // 使用机组名称
+            line: {
+              color: this.colors[index % this.colors.length], // 为每个机组分配不同的颜色
+            },
+            marker: {
+              color: this.colors[index % this.colors.length], // 为每个机组分配不同的颜色
+            },
+          };
+
+          if (this.chartType === "line") {
+            chartConfig.mode = "lines"; // 如果是折线图
+          } else if (this.chartType === "bar") {
+            chartConfig.type = "bar"; // 如果是柱状图
+          }
+
+          data.push(chartConfig);
+        });
+
+      const layout = {
+        title: this.chartData.title,
+        xaxis: {
+          title: this.chartData.xaixs || "X轴", // 横坐标标题
+        },
+        yaxis: {
+          title: this.chartData.yaixs || "Y轴", // 纵坐标标题
+        },
+        margin: {
+          l: 50,
+          r: 50,
+          t: 50,
+          b: 50,
+        },
+        autosize: true, // 开启自适应
+        barmode: this.chartType === "bar" ? "stack" : "group", // 如果是柱状图则启用堆叠
+      };
+      if (
+        this.chartData.contract_Cp_curve_yData &&
+        this.chartData.contract_Cp_curve_yData.length > 0
+      ) {
+        data.push({
+          x: this.chartData.contract_Cp_curve_xData,
+          y: this.chartData.contract_Cp_curve_yData,
+          mode: "lines+markers",
+          name: "合同功率曲线",
+          line: {
+            color: "red",
+            width: 1, // 设置线条的宽度为1
+          },
+          marker: { color: "red", size: 4 },
+        });
+      }
+      // 使用 Plotly.react 来更新图表
+      Plotly.react(`bar-chart${this.index}`, data, layout, {
+        responsive: true,
+      });
+    },
+
+    // 切换图表类型
+    toggleChartType() {
+      this.chartType = this.chartType === "line" ? "bar" : "line"; // 切换图表类型
+      this.drawChart(); // 重新绘制图表
+    },
+
+    // 更新图表颜色
+    updateChartColor() {
+      this.drawChart(); // 更新颜色后重新绘制图表
+    },
+  },
+};
+</script>
+
+<style scoped>
+/* 样式可以根据需求自定义 */
+</style>