소스 검색

新增传动比

rui.jiang 2 주 전
부모
커밋
3e50c3a5c9
40개의 변경된 파일989개의 추가작업 그리고 100개의 파일을 삭제
  1. 1 3
      downLoadServer/src/server/utils/chartsCom/3DDrawingChart.js
  2. 0 3
      downLoadServer/src/server/utils/chartsCom/BarChart.js
  3. 1 5
      downLoadServer/src/server/utils/chartsCom/BoxLineCharts.js
  4. 1 5
      downLoadServer/src/server/utils/chartsCom/BoxMarkersCharts.js
  5. 1 2
      downLoadServer/src/server/utils/chartsCom/GeneratorTemperature.js
  6. 1 2
      downLoadServer/src/server/utils/chartsCom/Time3DChart.js
  7. 2 2
      src/components/map/index.vue
  8. 0 1
      src/views/admin/cockpitManage/HD.vue
  9. 9 9
      src/views/home/components/MenuHD.vue
  10. 3 3
      src/views/overview/components/analysis_information/index.vue
  11. 4 2
      src/views/overview/components/data_integrity_minute/index.vue
  12. 2 1
      src/views/overview/components/data_integrity_second/index.vue
  13. 2 2
      src/views/overview/components/pitch_power/index.vue
  14. 2 2
      src/views/overview/components/power_scatter/index.vue
  15. 4 4
      src/views/overview/components/speed_power/index.vue
  16. 3 3
      src/views/overview/components/speed_torque/index.vue
  17. 3 3
      src/views/overview/components/wind_direction_frequency/index.vue
  18. 2 2
      src/views/overview/components/wind_speed_frequency/index.vue
  19. 22 13
      src/views/overview/index.vue
  20. 92 2
      src/views/performance/components/PlotlyCharts.vue
  21. 65 5
      src/views/performance/components/chartsCom/3DDrawingChart.vue
  22. 3 2
      src/views/performance/components/chartsCom/BarChart.vue
  23. 60 1
      src/views/performance/components/chartsCom/BoxLineCharts.vue
  24. 44 1
      src/views/performance/components/chartsCom/BoxMarkersCharts.vue
  25. 56 2
      src/views/performance/components/chartsCom/ColorbarInitTwoDmarkersChart.vue
  26. 47 2
      src/views/performance/components/chartsCom/FaultAll.vue
  27. 46 1
      src/views/performance/components/chartsCom/FaultUnit.vue
  28. 43 1
      src/views/performance/components/chartsCom/GeneratorTemperature.vue
  29. 43 0
      src/views/performance/components/chartsCom/HeatmapCharts.vue
  30. 42 3
      src/views/performance/components/chartsCom/Time3DChart.vue
  31. 40 2
      src/views/performance/components/chartsCom/TwoDMarkersChart.vue
  32. 42 2
      src/views/performance/components/chartsCom/TwoDMarkersChart1.vue
  33. 39 1
      src/views/performance/components/chartsCom/WindRoseChart.vue
  34. 45 1
      src/views/performance/components/chartsCom/YewErrorBarChart.vue
  35. 43 2
      src/views/performance/components/chartsCom/lineAndChildLine.vue
  36. 43 0
      src/views/performance/components/chartsCom/lineChartsFen.vue
  37. 42 2
      src/views/performance/components/chartsCom/powerMarkers2DCharts.vue
  38. 44 0
      src/views/performance/components/chartsCom/yawErrorBarSum.vue
  39. 45 1
      src/views/performance/components/chartsCom/yawErrorLine.vue
  40. 2 2
      vue.config.js

+ 1 - 3
downLoadServer/src/server/utils/chartsCom/3DDrawingChart.js

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2025-04-14 16:09:13
- * @LastEditTime: 2025-07-09 15:34:27
+ * @LastEditTime: 2025-07-10 14:00:17
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /downLoadServer/src/server/utils/chartsCom/3DDrawingChart.js
@@ -121,7 +121,6 @@ export const generate3DDrawingChart = async (data, bucketName, objectName) => {
               text: data.zaixs,
             },
           },
-
           aspectratio: {
             x: 2.0000000000000018,
             y: 1.5454545454545465,
@@ -189,7 +188,6 @@ export const generate3DDrawingChart = async (data, bucketName, objectName) => {
         </body>
         </html>
         `;
-      // ... existing code ...
       // 设置页面内容
       await page.setContent(htmlContent, {
         waitUntil: "networkidle0",

+ 0 - 3
downLoadServer/src/server/utils/chartsCom/BarChart.js

@@ -12,9 +12,6 @@ import axios from "axios";
  */
 export const generateBarChart = async (data, bucketName, objectName) => {
   try {
-    // console.log("开始生成图表...");
-    // console.log("数据:", data);
-
     // 创建临时目录
     const tempDir = path.join(process.cwd(), "images");
     await fs.ensureDir(tempDir);

+ 1 - 5
downLoadServer/src/server/utils/chartsCom/BoxLineCharts.js

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2025-05-12 17:40:10
- * @LastEditTime: 2025-07-09 14:29:58
+ * @LastEditTime: 2025-07-10 13:57:37
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /downLoadServer/src/server/utils/chartsCom/BoxLineCharts.js
@@ -18,7 +18,6 @@ import axios from "axios";
  * @param {Object} data - 图表数据
  * @returns {Promise<String>} - 返回图片URL
  */
-// ... existing code ...
 
 export const generateBoxLineChart = async (data, bucketName, objectName) => {
   try {
@@ -87,7 +86,6 @@ export const generateBoxLineChart = async (data, bucketName, objectName) => {
           type: "scatter",
         };
       }
-
       // 准备布局配置
       const layout = {
         title: {
@@ -234,5 +232,3 @@ const isInDateRange = (timestamp) => {
   const date = new Date(timestamp);
   return date >= new Date(startDate) && date <= new Date(endDate);
 };
-
-// ... existing code ...

+ 1 - 5
downLoadServer/src/server/utils/chartsCom/BoxMarkersCharts.js

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2025-05-13 11:02:32
- * @LastEditTime: 2025-06-18 15:26:39
+ * @LastEditTime: 2025-07-10 13:59:24
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /downLoadServer/src/server/utils/chartsCom/BoxMarkersCharts.js
@@ -13,7 +13,6 @@ import FormData from "form-data";
 import { colorSchemes } from "../colors.js";
 import axios from "axios";
 
-// ... existing code ...
 // 判断时间戳是否在选择的日期范围内
 const isInDateRange = (timestamp) => {
   const [startDate, endDate] = [];
@@ -51,9 +50,6 @@ const filterData = (group) => {
 };
 
 // 绘制箱线图
-// ... existing code ...
-
-// 绘制箱线图
 export const generateBoxMarkersCharts = async (
   data,
   bucketName,

+ 1 - 2
downLoadServer/src/server/utils/chartsCom/GeneratorTemperature.js

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2025-05-13 14:33:50
- * @LastEditTime: 2025-07-09 14:30:52
+ * @LastEditTime: 2025-07-10 13:59:10
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /downLoadServer/src/server/utils/chartsCom/GeneratorTemperature.js
@@ -12,7 +12,6 @@ import path from "path";
 import FormData from "form-data";
 import { colorSchemes } from "../colors.js";
 import axios from "axios";
-// ... existing code ...
 
 export const generateGeneratorTemperature = async (
   data,

+ 1 - 2
downLoadServer/src/server/utils/chartsCom/Time3DChart.js

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2025-04-14 17:49:33
- * @LastEditTime: 2025-07-09 15:35:16
+ * @LastEditTime: 2025-07-10 13:58:59
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/downLoadServer/src/server/utils/chartsCom/Time3DChart.js
@@ -204,7 +204,6 @@ export const generateTime3DChart = async (data, bucketName, objectName) => {
         </body>
         </html>
         `;
-      // ... existing code ...
       // 设置页面内容
       await page.setContent(htmlContent, {
         waitUntil: "networkidle0",

+ 2 - 2
src/components/map/index.vue

@@ -257,9 +257,9 @@ export default {
       layers: [
         new TileLayer({
           source: new XYZ({
-            url: "http://106.120.102.238:18000/tiles/{z}/{x}/{y}.png", //外网
+            // url: "http://106.120.102.238:18000/tiles/{z}/{x}/{y}.png", //外网
             // url: "http://127.0.0.1:8010/tiles/{z}/{x}/{y}.png", //本地
-            // url: "http://192.168.50.235/tiles/{z}/{x}/{y}.png", //内网
+            url: "http://192.168.50.235/tiles/{z}/{x}/{y}.png", //内网
             // url: "http://10.96.137.5:9080/tiles/{z}/{x}/{y}.png", //大~#@唐
             // url: "http://192.168.0.1/tiles/{z}/{x}/{y}.png", //华电
             // url: "http://192.168.50.235/tiles/{z}/{x}/{y}.png", //中广核

+ 0 - 1
src/views/admin/cockpitManage/HD.vue

@@ -219,7 +219,6 @@ bottom-data {
   top: 30px;
   left: 10px;
 }
-
 @media screen and (max-width: 1650px) {
   .zuobian {
     width: 150px;

+ 9 - 9
src/views/home/components/MenuHD.vue

@@ -408,16 +408,16 @@ export default {
 }
 
 // 非华电公司放开这个注释下面的
-// .el-submenu__title * {
-//   font-size: 16px;
-// }
-// .el-menu-item * {
-//   font-size: 16px;
-// }
+.el-submenu__title * {
+  font-size: 16px;
+}
+.el-menu-item * {
+  font-size: 16px;
+}
 </style>
 
- <!-- /* 华电时的菜单打开这个 */ -->
- <style lang="scss">
+<!-- /* 华电时的菜单打开这个 */ -->
+<!-- <style lang="scss">
 .el-menu--popup {
   width: 100% !important;
   min-width: 120px !important;
@@ -434,4 +434,4 @@ export default {
 .el-menu-item * {
   font-size: 20px;
 }
-</style> 
+</style>  -->

+ 3 - 3
src/views/overview/components/analysis_information/index.vue

@@ -228,9 +228,9 @@ export default {
     },
   },
   mounted() {
-    if (this.$route.query.batchCode) {
-      this.initBatchCode = this.$route.query.batchCode;
-    }
+    // if (this.$route.query.batchCode) {
+    //   this.initBatchCode = this.$route.query.batchCode;
+    // }
     if (this.$route.query.fieldCode) {
       this.fieldInfo.fieldCode = this.$route.query.fieldCode;
     }

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

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 17:54:02
- * @LastEditTime: 2025-06-06 16:18:38
+ * @LastEditTime: 2025-07-10 11:32:36
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/data_integrity_minute/index.vue
@@ -133,7 +133,7 @@ export default {
       type: String,
     },
     batchCodeList: {
-      default: "",
+      default: [],
       type: Array,
     },
   },
@@ -299,6 +299,7 @@ export default {
       const index = this.batchCodeList.findIndex(
         (item) => item === this.initBatchCode
       );
+      // console.log(index, this.batchCodeList, "this.batchCodeList");
       if (index === this.batchCodeList.length - 1) {
         this.$message.warning("已经是最后一个分析结果了");
         return;
@@ -310,6 +311,7 @@ export default {
       const index = this.batchCodeList.findIndex(
         (item) => item === this.initBatchCode
       );
+      // console.log(index, this.batchCodeList, "this.batchCodeList");
       if (index === 0) {
         this.$message.warning("没有上一条了");
         return;

+ 2 - 1
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-04-11 16:48:29
+ * @LastEditTime: 2025-07-10 14:41:14
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/data_integrity_second/index.vue
@@ -43,6 +43,7 @@
         <div v-for="(item, index) in generalFilesDatas">
           <HeatmapCharts
             :key="`${new Date().getTime()}` + item.batchCode + index"
+            :inds="`${new Date().getTime()}` + item.batchCode + index"
             :index="`${new Date().getTime()}` + item.batchCode + index"
             :ref="`${new Date().getTime()}` + item.batchCode"
             :fileAddr="item.fileAddr"

+ 2 - 2
src/views/overview/components/pitch_power/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:09:41
- * @LastEditTime: 2025-07-07 10:12:47
+ * @LastEditTime: 2025-07-10 14:57:20
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/pitch_power/index.vue
@@ -57,7 +57,7 @@
           :setUpImgData="setUpImgData"
           v-if="getFileTypeFromUrl(item.fileAddr) === '3D'"
           :key="item.fieldEngineCode + 'Time3DChart'"
-          :index="index + 'fen'"
+          :index="`${new Date().getTime()}` + index + 'fen'"
           :ref="item.fieldEngineCode + 'Time3DChart'"
           :fileAddr="item.fileAddr"
         >

+ 2 - 2
src/views/overview/components/power_scatter/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:10:22
- * @LastEditTime: 2025-04-11 16:50:14
+ * @LastEditTime: 2025-07-10 14:55:37
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/power_scatter/index.vue
@@ -42,7 +42,7 @@
         <Time3DChart
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode"
-          :index="index + 'fen'"
+          :index="`${new Date().getTime()}` + index + 'fen'"
           :ref="item.fieldEngineCode"
           :fileAddr="item.fileAddr"
         >

+ 4 - 4
src/views/overview/components/speed_power/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:09:17
- * @LastEditTime: 2025-04-11 16:52:16
+ * @LastEditTime: 2025-07-10 15:00:05
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/speed_power/index.vue
@@ -45,7 +45,7 @@
           v-if="item.batchCode && !item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.batchCode + index"
-          :index="index + 'zong'"
+          :index="`${new Date().getTime()}` + index + 'zong'"
           :ref="item.batchCode + index"
           :fileAddr="item.fileAddr"
         >
@@ -55,7 +55,7 @@
             item.fieldEngineCode &&
             getFileTypeFromUrl(item.fileAddr) === 'speed_power'
           "
-          :index="index + 'powerMarkers2DCharts'"
+          :index="`${new Date().getTime()}` + index + 'powerMarkers2DCharts'"
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode + 'powerMarkers2DCharts'"
           :ref="item.fieldEngineCode"
@@ -68,7 +68,7 @@
           "
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode + 'Time3DChart'"
-          :index="index + 'fen'"
+          :index="`${new Date().getTime()}` + index + 'fen'"
           :ref="item.fieldEngineCode + 'Time3DChart'"
           :fileAddr="item.fileAddr"
         >

+ 3 - 3
src/views/overview/components/speed_torque/index.vue

@@ -36,7 +36,7 @@
           v-if="item.batchCode && !item.fieldEngineCode"
           :setUpImgData="setUpImgData"
           :key="item.batchCode + index"
-          :index="index + 'zong'"
+          :index="`${new Date().getTime()}` + index + 'zong'"
           :ref="item.batchCode + index"
           :fileAddr="item.fileAddr"
         >
@@ -47,7 +47,7 @@
             item.fieldEngineCode &&
             getFileTypeFromUrl(item.fileAddr) === 'speed_torque'
           "
-          :index="index + 'powerMarkers2DCharts'"
+          :index="`${new Date().getTime()}` + index + 'powerMarkers2DCharts'"
           :key="item.fieldEngineCode + 'powerMarkers2DCharts'"
           :ref="item.fieldEngineCode"
           :fileAddr="item.fileAddr"
@@ -58,7 +58,7 @@
             item.fieldEngineCode && getFileTypeFromUrl(item.fileAddr) === '3D'
           "
           :key="item.fieldEngineCode + 'Time3DChart'"
-          :index="index + 'fen'"
+          :index="`${new Date().getTime()}` + index + 'fen'"
           :ref="item.fieldEngineCode + 'Time3DChart'"
           :fileAddr="item.fileAddr"
         >

+ 3 - 3
src/views/overview/components/wind_direction_frequency/index.vue

@@ -1,8 +1,8 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:11:12
- * @LastEditTime: 2025-07-02 14:36:23
- * @LastEditors: milo-MacBook-Pro.local
+ * @LastEditTime: 2025-07-10 15:06:53
+ * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/wind_direction_frequency/index.vue
 -->
@@ -65,7 +65,7 @@
               <WindRoseChart
                 :setUpImgData="setUpImgData"
                 :key="item.fieldEngineCode + itemind"
-                :inds="itemind"
+                :inds="`${new Date().getTime()}` + itemind"
                 :ref="item.fieldEngineCode"
                 :fileAddr="item.fileAddr"
               ></WindRoseChart>

+ 2 - 2
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-07-04 16:23:04
+ * @LastEditTime: 2025-07-10 15:07:29
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/wind_speed_frequency/index.vue
@@ -42,7 +42,7 @@
         <BarChart
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode + index"
-          :inds="index + 'barChart'"
+          :inds="`${new Date().getTime()}` + index + 'barChart'"
           :ref="item.fieldEngineCode"
           :fileAddr="item.fileAddr"
         ></BarChart>

+ 22 - 13
src/views/overview/index.vue

@@ -217,12 +217,12 @@ export default {
     await Promise.all([this.getTreeData(), this.queryAllAnalysisType()]);
     // 初始化逻辑
   },
-  // mounted() {
-  //   if (this.$route.query.batchCode) {
-  //     this.initBatchCode = this.$route.query.batchCode;
-  //     // this.expandedKeys.push(formattedData[0]?.children[0]?.codeNumber);
-  //   }
-  // },
+  mounted() {
+    if (this.$route.query.batchCode) {
+      this.initBatchCode = this.$route.query.batchCode;
+      // this.expandedKeys.push(formattedData[0]?.children[0]?.codeNumber);
+    }
+  },
 
   methods: {
     setIsShow() {
@@ -254,6 +254,7 @@ export default {
         const res = await getAnalysisCodeInfo(); // API 请求
         if (res.code === 200) {
           this.loading = false;
+          this.batchCodeList = [];
           this.data = this.formatData(res.data); // 赋值树数据
         }
       } catch (err) {
@@ -273,11 +274,21 @@ export default {
               codeNumber: child.codeNumber,
               levelstate: "2",
               children: child.batchCodes
-                ? child.batchCodes.map((bc) => ({
-                    fieldOrCompanyName: bc.analysisName,
-                    codeNumber: bc.batchCode,
-                    levelstate: "3",
-                  }))
+                ? child.batchCodes.map((bc) => {
+                    if (this.initBatchCode === "") {
+                      this.initBatchCode = bc.batchCode; // 初始化选中的节点
+                    }
+                    this.batchCodeList.push(bc.batchCode);
+                    this.batchList.push({
+                      batchCode: bc.batchCode,
+                      batchName: bc.analysisName,
+                    });
+                    return {
+                      fieldOrCompanyName: bc.analysisName,
+                      codeNumber: bc.batchCode,
+                      levelstate: "3",
+                    };
+                  })
                 : [],
             }));
           }
@@ -368,14 +379,12 @@ export default {
     //   return data.fieldOrCompanyName.indexOf(value) !== -1;
     // },
     setInitBathCode(val) {
-      // this.initBatchCode = val;
       this.isShowComment = true;
       this.dialogInitBatchCode = val;
       const batchObj = this.batchList.find((item) =>
         item.batchCode === val ? item.batchName : ""
       );
       this.batchTitle = batchObj.batchName;
-      console.log(this.batchTitle, "this.batchTitle");
     },
     // 关闭上一条、下一条弹窗展示组件设置
     handleClose() {

+ 92 - 2
src/views/performance/components/PlotlyCharts.vue

@@ -257,7 +257,52 @@ export default {
       }
 
       // 绘制图表
-      Plotly.newPlot(`power-curve-plot${this.inds}`, data, layout);
+      Plotly.newPlot(`power-curve-plot${this.inds}`, data, layout, {
+        modeBarButtonsToRemove: [
+          "lasso2d", // 移除不需要的工具按钮
+          // 移除不需要的工具按钮
+          "lasso2d",
+          "sendDataToCloud",
+          "resetCameraLastSave3d",
+          "resetCameraDefault3d",
+          "resetCameraLastSave",
+          "sendDataToCloud",
+          "zoom2d", // 缩放按钮
+          "zoom3d",
+          "plotlylogo2D",
+          "plotlylogo3D",
+        ],
+        displaylogo: false,
+      }).then(function (gd) {
+        // 获取工具栏按钮
+        const toolbar = gd.querySelector(".modebar");
+        const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+        // 定义一个映射对象,方便修改按钮提示
+        const titleMap = {
+          "Download plot as a png": "保存图片",
+          Autoscale: "缩放",
+          Pan: "平移",
+          "Zoom out": "放大",
+          "Zoom in": "缩小",
+          "Box Select": "选择框操作",
+          "Lasso Select": "套索选择操作",
+          "Reset axes": "重置操作",
+          "Reset camera to default": "重置相机视角",
+          "Turntable rotation": "转台式旋转",
+          "Orbital rotation": "轨道式旋转",
+        };
+
+        // 遍历所有按钮,修改它们的 title
+        buttons.forEach(function (button) {
+          const dataTitle = button.getAttribute("data-title");
+
+          // 如果标题匹配,修改属性值
+          if (titleMap[dataTitle]) {
+            button.setAttribute("data-title", titleMap[dataTitle]);
+          }
+        });
+      });
     },
 
     //初始化分图
@@ -351,7 +396,52 @@ export default {
             `风速: %{x} m/s<br>合同功率: %{y} kW<br>` +
             `${this.powerCurveData.contractPowerCurve[0].enginName}<extra></extra>`, // 设置 hovertemplate
         });
-        Plotly.newPlot(`chart-${this.inds}`, data, layout);
+        Plotly.newPlot(`chart-${this.inds}`, data, layout, {
+          modeBarButtonsToRemove: [
+            "lasso2d", // 移除不需要的工具按钮
+            // 移除不需要的工具按钮
+            "lasso2d",
+            "sendDataToCloud",
+            "resetCameraLastSave3d",
+            "resetCameraDefault3d",
+            "resetCameraLastSave",
+            "sendDataToCloud",
+            "zoom2d", // 缩放按钮
+            "zoom3d",
+            "plotlylogo2D",
+            "plotlylogo3D",
+          ],
+          displaylogo: false,
+        }).then(function (gd) {
+          // 获取工具栏按钮
+          const toolbar = gd.querySelector(".modebar");
+          const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+          // 定义一个映射对象,方便修改按钮提示
+          const titleMap = {
+            "Download plot as a png": "保存图片",
+            Autoscale: "缩放",
+            Pan: "平移",
+            "Zoom out": "放大",
+            "Zoom in": "缩小",
+            "Box Select": "选择框操作",
+            "Lasso Select": "套索选择操作",
+            "Reset axes": "重置操作",
+            "Reset camera to default": "重置相机视角",
+            "Turntable rotation": "转台式旋转",
+            "Orbital rotation": "轨道式旋转",
+          };
+
+          // 遍历所有按钮,修改它们的 title
+          buttons.forEach(function (button) {
+            const dataTitle = button.getAttribute("data-title");
+
+            // 如果标题匹配,修改属性值
+            if (titleMap[dataTitle]) {
+              button.setAttribute("data-title", titleMap[dataTitle]);
+            }
+          });
+        });
       }
     },
     // 切换图表类型

+ 65 - 5
src/views/performance/components/chartsCom/3DDrawingChart.vue

@@ -339,12 +339,33 @@ export default {
             click: () => this.resetCamera(),
           },
         ],
+        responsive: true,
         modeBarButtonsToRemove: [
           "sendDataToCloud",
           // "autoScale2d",
-          "hoverClosest3d",
+          // "hoverClosest3d",
           "resetCameraLastSave3d",
           "resetCameraDefault3d",
+          "resetCameraLastSave",
+          "sendDataToCloud",
+          // "pan2d", // 平移按钮
+          "zoom2d", // 缩放按钮
+          // "zoom",
+          "zoom3d",
+          // "select2d", // 选择框
+          // "lasso2d", // 套索选择
+          // "resetScale2d", // 重置轴
+          // // "zoomIn", // 放大
+          // // "zoomOut", // 缩小
+          // "home", // 重置
+          // "toImage", // 导出为图片
+          // "hoverClosestCartesian", // 悬浮信息
+          // "zoomIn2d", // 缩放按钮(详细版本)
+          // "zoomOut2d", // 缩放按钮(详细版本)
+          // "autoScale2D",
+          "plotlylogo2D",
+          "plotlylogo3D",
+          // "Produced with Plotly.js(v2.35.2)", // 删除 Plotly logo
         ],
         displaylogo: false, // 可选:隐藏 Plotly logo
       };
@@ -372,15 +393,54 @@ export default {
 
       try {
         // 假设这里是 WebGL 的相关初始化代码
-        Plotly.react(`plotly-3d-chart-` + this.index, traces, layout).catch(
-          (err) => {
+        Plotly.react(
+          `plotly-3d-chart-` + this.index,
+          traces,
+          {
+            ...layout,
+            displaylogo: false,
+          },
+          {
+            ...config,
+          }
+        )
+          .then(function (gd) {
+            // 获取工具栏按钮
+            const toolbar = gd.querySelector(".modebar");
+            const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+            // 定义一个映射对象,方便修改按钮提示
+            const titleMap = {
+              "Download plot as a png": "保存图片",
+              Autoscale: "缩放",
+              Pan: "平移",
+              "Zoom out": "放大",
+              "Zoom in": "缩小",
+              "Box Select": "选择框操作",
+              "Lasso Select": "套索选择操作",
+              "Reset axes": "重置操作",
+              "Reset camera to default": "重置相机视角",
+              "Turntable rotation": "转台式旋转",
+              "Orbital rotation": "轨道式旋转",
+            };
+
+            // 遍历所有按钮,修改它们的 title
+            buttons.forEach(function (button) {
+              const dataTitle = button.getAttribute("data-title");
+
+              // 如果标题匹配,修改属性值
+              if (titleMap[dataTitle]) {
+                button.setAttribute("data-title", titleMap[dataTitle]);
+              }
+            });
+          })
+          .catch((err) => {
             console.error("WebGL 错误: ", err);
             // 你可以根据错误类型做更多处理
             if (err.message.includes("shaderSource")) {
               // alert("着色器编译失败!");
             }
-          }
-        );
+          });
         // 监听图表的 relayout 事件,获取并输出相机视角
         const plotElement = document.getElementById(
           `plotly-3d-chart-` + this.index

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

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2024-09-11 14:30:17
- * @LastEditTime: 2025-06-25 10:13:48
+ * @LastEditTime: 2025-07-10 10:38:19
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/BarChart.vue
@@ -214,8 +214,9 @@ export default {
 
         // [trace, normalRangeLine, normalRangeMaxLine],
         [trace],
-        { ...layout, displaylogo: false },
+        { ...layout },
         {
+          displaylogo: false,
           responsive: true,
           modeBarButtonsToRemove: [
             // "pan2d", // 平移按钮

+ 60 - 1
src/views/performance/components/chartsCom/BoxLineCharts.vue

@@ -247,7 +247,66 @@ export default {
       this.$nextTick(() => {
         const plotDiv = document.getElementById(`plotDivBox-${this.index}`);
         if (plotDiv) {
-          Plotly.newPlot(plotDiv, [trace, trace2], layout);
+          Plotly.newPlot(plotDiv, [trace, trace2], layout, {
+            responsive: true,
+            modeBarButtonsToRemove: [
+              "sendDataToCloud",
+              // "autoScale2d",
+              // "hoverClosest3d",
+              "resetCameraLastSave3d",
+              "resetCameraDefault3d",
+              "resetCameraLastSave",
+              "sendDataToCloud",
+              // "pan2d", // 平移按钮
+              "zoom2d", // 缩放按钮
+              // "zoom",
+              "zoom3d",
+              // "select2d", // 选择框
+              // "lasso2d", // 套索选择
+              // "resetScale2d", // 重置轴
+              // // "zoomIn", // 放大
+              // // "zoomOut", // 缩小
+              // "home", // 重置
+              // "toImage", // 导出为图片
+              // "hoverClosestCartesian", // 悬浮信息
+              // "zoomIn2d", // 缩放按钮(详细版本)
+              // "zoomOut2d", // 缩放按钮(详细版本)
+              // "autoScale2D",
+              "plotlylogo2D",
+              "plotlylogo3D",
+              // "Produced with Plotly.js(v2.35.2)", // 删除 Plotly logo
+            ],
+            displaylogo: false,
+          }).then(function (gd) {
+            // 获取工具栏按钮
+            const toolbar = gd.querySelector(".modebar");
+            const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+            // 定义一个映射对象,方便修改按钮提示
+            const titleMap = {
+              "Download plot as a png": "保存图片",
+              Autoscale: "缩放",
+              Pan: "平移",
+              "Zoom out": "放大",
+              "Zoom in": "缩小",
+              "Box Select": "选择框操作",
+              "Lasso Select": "套索选择操作",
+              "Reset axes": "重置操作",
+              "Reset camera to default": "重置相机视角",
+              "Turntable rotation": "转台式旋转",
+              "Orbital rotation": "轨道式旋转",
+            };
+
+            // 遍历所有按钮,修改它们的 title
+            buttons.forEach(function (button) {
+              const dataTitle = button.getAttribute("data-title");
+
+              // 如果标题匹配,修改属性值
+              if (titleMap[dataTitle]) {
+                button.setAttribute("data-title", titleMap[dataTitle]);
+              }
+            });
+          });
         }
       });
     },

+ 44 - 1
src/views/performance/components/chartsCom/BoxMarkersCharts.vue

@@ -205,7 +205,50 @@ export default {
         layout.yaxis.range = [yChartSetUp.min, yChartSetUp.max];
       }
 
-      Plotly.newPlot(chartContainer, [...traces, ...medianMarkers], layout);
+      Plotly.newPlot(chartContainer, [...traces, ...medianMarkers], layout, {
+        responsive: true,
+        modeBarButtonsToRemove: [
+          "sendDataToCloud",
+          "resetCameraLastSave3d",
+          "resetCameraDefault3d",
+          "resetCameraLastSave",
+          "sendDataToCloud",
+          "zoom2d", // 缩放按钮
+          "zoom3d",
+          "plotlylogo2D",
+          "plotlylogo3D",
+        ],
+        displaylogo: false,
+      }).then(function (gd) {
+        // 获取工具栏按钮
+        const toolbar = gd.querySelector(".modebar");
+        const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+        // 定义一个映射对象,方便修改按钮提示
+        const titleMap = {
+          "Download plot as a png": "保存图片",
+          Autoscale: "缩放",
+          Pan: "平移",
+          "Zoom out": "放大",
+          "Zoom in": "缩小",
+          "Box Select": "选择框操作",
+          "Lasso Select": "套索选择操作",
+          "Reset axes": "重置操作",
+          "Reset camera to default": "重置相机视角",
+          "Turntable rotation": "转台式旋转",
+          "Orbital rotation": "轨道式旋转",
+        };
+
+        // 遍历所有按钮,修改它们的 title
+        buttons.forEach(function (button) {
+          const dataTitle = button.getAttribute("data-title");
+
+          // 如果标题匹配,修改属性值
+          if (titleMap[dataTitle]) {
+            button.setAttribute("data-title", titleMap[dataTitle]);
+          }
+        });
+      });
     },
   },
 };

+ 56 - 2
src/views/performance/components/chartsCom/ColorbarInitTwoDmarkersChart.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-03-14 10:30:00
- * @LastEditTime: 2025-06-11 10:45:29
+ * @LastEditTime: 2025-07-10 10:56:09
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/colorbarInitTwoDmarkersChart.vue
@@ -388,9 +388,34 @@ export default {
         modeBarButtonsToRemove: [
           // 移除不需要的工具按钮
           "lasso2d",
+          "sendDataToCloud",
+          // "autoScale2d",
+          // "hoverClosest3d",
+          "resetCameraLastSave3d",
+          "resetCameraDefault3d",
+          "resetCameraLastSave",
+          "sendDataToCloud",
+          // "pan2d", // 平移按钮
+          "zoom2d", // 缩放按钮
+          // "zoom",
+          "zoom3d",
+          // "select2d", // 选择框
+          // "lasso2d", // 套索选择
+          // "resetScale2d", // 重置轴
+          // // "zoomIn", // 放大
+          // // "zoomOut", // 缩小
+          // "home", // 重置
+          // "toImage", // 导出为图片
+          // "hoverClosestCartesian", // 悬浮信息
+          // "zoomIn2d", // 缩放按钮(详细版本)
+          // "zoomOut2d", // 缩放按钮(详细版本)
+          // "autoScale2D",
+          "plotlylogo2D",
+          "plotlylogo3D",
         ],
         displaylogo: false,
         editable: true,
+        responsive: true,
         scrollZoom: false,
       };
       this.$nextTick(() => {
@@ -403,7 +428,36 @@ export default {
         ).then(() => {
           // 确保在图表加载完成后设置工具栏按钮
           const plotElement = this.$refs[`plotlyChart-${this.index}`];
-          Plotly.relayout(plotElement, layout); // 使用 relayout 来确保自定义按钮应用
+          Plotly.relayout(plotElement, layout).then(function (gd) {
+            // 获取工具栏按钮
+            const toolbar = gd.querySelector(".modebar");
+            const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+            // 定义一个映射对象,方便修改按钮提示
+            const titleMap = {
+              "Download plot as a png": "保存图片",
+              Autoscale: "缩放",
+              Pan: "平移",
+              "Zoom out": "放大",
+              "Zoom in": "缩小",
+              "Box Select": "选择框操作",
+              "Lasso Select": "套索选择操作",
+              "Reset axes": "重置操作",
+              "Reset camera to default": "重置相机视角",
+              "Turntable rotation": "转台式旋转",
+              "Orbital rotation": "轨道式旋转",
+            };
+
+            // 遍历所有按钮,修改它们的 title
+            buttons.forEach(function (button) {
+              const dataTitle = button.getAttribute("data-title");
+
+              // 如果标题匹配,修改属性值
+              if (titleMap[dataTitle]) {
+                button.setAttribute("data-title", titleMap[dataTitle]);
+              }
+            });
+          }); // 使用 relayout 来确保自定义按钮应用
         });
       });
     },

+ 47 - 2
src/views/performance/components/chartsCom/FaultAll.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-15 14:24:59
- * @LastEditTime: 2025-06-12 18:06:31
+ * @LastEditTime: 2025-07-10 11:01:20
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/FaultAll.vue
@@ -146,7 +146,52 @@ export default {
       };
 
       // 渲染图表
-      Plotly.newPlot(this.$refs.chart, [barTrace, lineTrace], layout);
+      Plotly.newPlot(this.$refs.chart, [barTrace, lineTrace], layout, {
+        modeBarButtonsToRemove: [
+          // 移除不需要的工具按钮
+          "lasso2d",
+          "sendDataToCloud",
+          "resetCameraLastSave3d",
+          "resetCameraDefault3d",
+          "resetCameraLastSave",
+          "sendDataToCloud",
+          "zoom2d", // 缩放按钮
+          "zoom3d",
+          "plotlylogo2D",
+          "plotlylogo3D",
+        ],
+        displaylogo: false,
+        responsive: true,
+      }).then(function (gd) {
+        // 获取工具栏按钮
+        const toolbar = gd.querySelector(".modebar");
+        const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+        // 定义一个映射对象,方便修改按钮提示
+        const titleMap = {
+          "Download plot as a png": "保存图片",
+          Autoscale: "缩放",
+          Pan: "平移",
+          "Zoom out": "放大",
+          "Zoom in": "缩小",
+          "Box Select": "选择框操作",
+          "Lasso Select": "套索选择操作",
+          "Reset axes": "重置操作",
+          "Reset camera to default": "重置相机视角",
+          "Turntable rotation": "转台式旋转",
+          "Orbital rotation": "轨道式旋转",
+        };
+
+        // 遍历所有按钮,修改它们的 title
+        buttons.forEach(function (button) {
+          const dataTitle = button.getAttribute("data-title");
+
+          // 如果标题匹配,修改属性值
+          if (titleMap[dataTitle]) {
+            button.setAttribute("data-title", titleMap[dataTitle]);
+          }
+        });
+      });
     },
   },
 };

+ 46 - 1
src/views/performance/components/chartsCom/FaultUnit.vue

@@ -112,7 +112,52 @@ export default {
         },
       };
 
-      Plotly.newPlot(this.$refs.chart, data, layout);
+      Plotly.newPlot(this.$refs.chart, data, layout, {
+        modeBarButtonsToRemove: [
+          // 移除不需要的工具按钮
+          "lasso2d",
+          "sendDataToCloud",
+          "resetCameraLastSave3d",
+          "resetCameraDefault3d",
+          "resetCameraLastSave",
+          "sendDataToCloud",
+          "zoom2d", // 缩放按钮
+          "zoom3d",
+          "plotlylogo2D",
+          "plotlylogo3D",
+        ],
+        displaylogo: false,
+        responsive: true,
+      }).then(function (gd) {
+        // 获取工具栏按钮
+        const toolbar = gd.querySelector(".modebar");
+        const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+        // 定义一个映射对象,方便修改按钮提示
+        const titleMap = {
+          "Download plot as a png": "保存图片",
+          Autoscale: "缩放",
+          Pan: "平移",
+          "Zoom out": "放大",
+          "Zoom in": "缩小",
+          "Box Select": "选择框操作",
+          "Lasso Select": "套索选择操作",
+          "Reset axes": "重置操作",
+          "Reset camera to default": "重置相机视角",
+          "Turntable rotation": "转台式旋转",
+          "Orbital rotation": "轨道式旋转",
+        };
+
+        // 遍历所有按钮,修改它们的 title
+        buttons.forEach(function (button) {
+          const dataTitle = button.getAttribute("data-title");
+
+          // 如果标题匹配,修改属性值
+          if (titleMap[dataTitle]) {
+            button.setAttribute("data-title", titleMap[dataTitle]);
+          }
+        });
+      });
     },
   },
 };

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

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-21 11:18:49
- * @LastEditTime: 2025-06-20 14:15:46
+ * @LastEditTime: 2025-07-10 11:02:51
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/GeneratorTemperature.vue
@@ -324,6 +324,48 @@ export default {
         // 使用 Plotly.react 来更新图表
         Plotly.react(`bar-chart${this.index}`, data, layout, {
           responsive: true,
+          modeBarButtonsToRemove: [
+            // 移除不需要的工具按钮
+            "lasso2d",
+            "sendDataToCloud",
+            "resetCameraLastSave3d",
+            "resetCameraDefault3d",
+            "resetCameraLastSave",
+            "sendDataToCloud",
+            "zoom2d", // 缩放按钮
+            "zoom3d",
+            "plotlylogo2D",
+            "plotlylogo3D",
+          ],
+          displaylogo: false,
+        }).then(function (gd) {
+          // 获取工具栏按钮
+          const toolbar = gd.querySelector(".modebar");
+          const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+          // 定义一个映射对象,方便修改按钮提示
+          const titleMap = {
+            "Download plot as a png": "保存图片",
+            Autoscale: "缩放",
+            Pan: "平移",
+            "Zoom out": "放大",
+            "Zoom in": "缩小",
+            "Box Select": "选择框操作",
+            "Lasso Select": "套索选择操作",
+            "Reset axes": "重置操作",
+            "Reset camera to default": "重置相机视角",
+            "Turntable rotation": "转台式旋转",
+            "Orbital rotation": "轨道式旋转",
+          };
+          // 遍历所有按钮,修改它们的 title
+          buttons.forEach(function (button) {
+            const dataTitle = button.getAttribute("data-title");
+
+            // 如果标题匹配,修改属性值
+            if (titleMap[dataTitle]) {
+              button.setAttribute("data-title", titleMap[dataTitle]);
+            }
+          });
         });
       });
     },

+ 43 - 0
src/views/performance/components/chartsCom/HeatmapCharts.vue

@@ -154,6 +154,49 @@ export default {
 
       Plotly.newPlot(`chart-${this.inds}`, [trace], layout, {
         responsive: true,
+        modeBarButtonsToRemove: [
+          // 移除不需要的工具按钮
+          "lasso2d",
+          "sendDataToCloud",
+          "resetCameraLastSave3d",
+          "resetCameraDefault3d",
+          "resetCameraLastSave",
+          "sendDataToCloud",
+          "zoom2d", // 缩放按钮
+          "zoom3d",
+          "plotlylogo2D",
+          "plotlylogo3D",
+        ],
+        displaylogo: false,
+      }).then(function (gd) {
+        // 获取工具栏按钮
+        const toolbar = gd.querySelector(".modebar");
+        const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+        // 定义一个映射对象,方便修改按钮提示
+        const titleMap = {
+          "Download plot as a png": "保存图片",
+          Autoscale: "缩放",
+          Pan: "平移",
+          "Zoom out": "放大",
+          "Zoom in": "缩小",
+          "Box Select": "选择框操作",
+          "Lasso Select": "套索选择操作",
+          "Reset axes": "重置操作",
+          "Reset camera to default": "重置相机视角",
+          "Turntable rotation": "转台式旋转",
+          "Orbital rotation": "轨道式旋转",
+        };
+
+        // 遍历所有按钮,修改它们的 title
+        buttons.forEach(function (button) {
+          const dataTitle = button.getAttribute("data-title");
+
+          // 如果标题匹配,修改属性值
+          if (titleMap[dataTitle]) {
+            button.setAttribute("data-title", titleMap[dataTitle]);
+          }
+        });
       });
     },
   },

+ 42 - 3
src/views/performance/components/chartsCom/Time3DChart.vue

@@ -344,11 +344,16 @@ export default {
         ],
         modeBarButtonsToRemove: [
           "sendDataToCloud",
-          // "autoScale2d",
-          "hoverClosest3d",
           "resetCameraLastSave3d",
           "resetCameraDefault3d",
+          "resetCameraLastSave",
+          "sendDataToCloud",
+          "zoom2d", // 缩放按钮
+          "zoom3d",
+          "plotlylogo2D",
+          "plotlylogo3D",
         ],
+        responsive: true,
         displaylogo: false, // 可选:隐藏 Plotly logo
       };
       // 获取x轴和y轴的设置
@@ -371,7 +376,41 @@ export default {
         layout.scene.zaxis.dtick = zChartSetUp.dtick;
         layout.scene.zaxis.range = [zChartSetUp.min, zChartSetUp.max];
       }
-      Plotly.newPlot(`plotly-3d-chart-` + this.index, traces, layout, config);
+      Plotly.newPlot(
+        `plotly-3d-chart-` + this.index,
+        traces,
+        layout,
+        config
+      ).then(function (gd) {
+        // 获取工具栏按钮
+        const toolbar = gd.querySelector(".modebar");
+        const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+        // 定义一个映射对象,方便修改按钮提示
+        const titleMap = {
+          "Download plot as a png": "保存图片",
+          Autoscale: "缩放",
+          Pan: "平移",
+          "Zoom out": "放大",
+          "Zoom in": "缩小",
+          "Box Select": "选择框操作",
+          "Lasso Select": "套索选择操作",
+          "Reset axes": "重置操作",
+          "Reset camera to default": "重置相机视角",
+          "Turntable rotation": "转台式旋转",
+          "Orbital rotation": "轨道式旋转",
+        };
+
+        // 遍历所有按钮,修改它们的 title
+        buttons.forEach(function (button) {
+          const dataTitle = button.getAttribute("data-title");
+
+          // 如果标题匹配,修改属性值
+          if (titleMap[dataTitle]) {
+            button.setAttribute("data-title", titleMap[dataTitle]);
+          }
+        });
+      });
       // 监听图表的 relayout 事件,获取并输出相机视角
       const plotElement = document.getElementById(
         `plotly-3d-chart-` + this.index

+ 40 - 2
src/views/performance/components/chartsCom/TwoDMarkersChart.vue

@@ -338,7 +338,6 @@ export default {
           showbackground: true, // 显示背景
         },
         showlegend: false,
-        // showlegend: true,
         plot_bgcolor: "#e5ecf6",
         gridcolor: "#fff", // 设置网格线颜色
       };
@@ -383,8 +382,18 @@ export default {
           },
         ],
         modeBarButtonsToRemove: [
+          "lasso2d", // 移除不需要的工具按钮
           // 移除不需要的工具按钮
           "lasso2d",
+          "sendDataToCloud",
+          "resetCameraLastSave3d",
+          "resetCameraDefault3d",
+          "resetCameraLastSave",
+          "sendDataToCloud",
+          "zoom2d", // 缩放按钮
+          "zoom3d",
+          "plotlylogo2D",
+          "plotlylogo3D",
         ],
         displaylogo: false,
         editable: true,
@@ -400,7 +409,36 @@ export default {
         ).then(() => {
           // 确保在图表加载完成后设置工具栏按钮
           const plotElement = this.$refs[`plotlyChart-${this.index}`];
-          Plotly.relayout(plotElement, layout); // 使用 relayout 来确保自定义按钮应用
+          Plotly.relayout(plotElement, layout).then(function (gd) {
+            // 获取工具栏按钮
+            const toolbar = gd.querySelector(".modebar");
+            const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+            // 定义一个映射对象,方便修改按钮提示
+            const titleMap = {
+              "Download plot as a png": "保存图片",
+              Autoscale: "缩放",
+              Pan: "平移",
+              "Zoom out": "放大",
+              "Zoom in": "缩小",
+              "Box Select": "选择框操作",
+              "Lasso Select": "套索选择操作",
+              "Reset axes": "重置操作",
+              "Reset camera to default": "重置相机视角",
+              "Turntable rotation": "转台式旋转",
+              "Orbital rotation": "轨道式旋转",
+            };
+
+            // 遍历所有按钮,修改它们的 title
+            buttons.forEach(function (button) {
+              const dataTitle = button.getAttribute("data-title");
+
+              // 如果标题匹配,修改属性值
+              if (titleMap[dataTitle]) {
+                button.setAttribute("data-title", titleMap[dataTitle]);
+              }
+            });
+          }); // 使用 relayout 来确保自定义按钮应用
         });
       });
     },

+ 42 - 2
src/views/performance/components/chartsCom/TwoDMarkersChart1.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2024-09-11 14:32:12
- * @LastEditTime: 2025-07-08 10:13:08
+ * @LastEditTime: 2025-07-10 14:07:08
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/powerMarkers2DCharts.vue
@@ -350,6 +350,17 @@ export default {
         ],
         modeBarButtonsToRemove: [
           "lasso2d", // 移除不需要的工具按钮
+          // 移除不需要的工具按钮
+          "lasso2d",
+          "sendDataToCloud",
+          "resetCameraLastSave3d",
+          "resetCameraDefault3d",
+          "resetCameraLastSave",
+          "sendDataToCloud",
+          "zoom2d", // 缩放按钮
+          "zoom3d",
+          "plotlylogo2D",
+          "plotlylogo3D",
         ],
         displaylogo: false,
         editable: true,
@@ -370,7 +381,36 @@ export default {
         ).then(() => {
           // 确保图表加载完成后设置工具栏按钮
           const plotElement = this.$refs[`plotlyChart-${this.index}`];
-          Plotly.relayout(plotElement, layout); // 使用 relayout 来确保自定义按钮应用
+          Plotly.relayout(plotElement, layout).then(function (gd) {
+            // 获取工具栏按钮
+            const toolbar = gd.querySelector(".modebar");
+            const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+            // 定义一个映射对象,方便修改按钮提示
+            const titleMap = {
+              "Download plot as a png": "保存图片",
+              Autoscale: "缩放",
+              Pan: "平移",
+              "Zoom out": "放大",
+              "Zoom in": "缩小",
+              "Box Select": "选择框操作",
+              "Lasso Select": "套索选择操作",
+              "Reset axes": "重置操作",
+              "Reset camera to default": "重置相机视角",
+              "Turntable rotation": "转台式旋转",
+              "Orbital rotation": "轨道式旋转",
+            };
+
+            // 遍历所有按钮,修改它们的 title
+            buttons.forEach(function (button) {
+              const dataTitle = button.getAttribute("data-title");
+
+              // 如果标题匹配,修改属性值
+              if (titleMap[dataTitle]) {
+                button.setAttribute("data-title", titleMap[dataTitle]);
+              }
+            });
+          }); // 使用 relayout 来确保自定义按钮应用
         });
       });
     },

+ 39 - 1
src/views/performance/components/chartsCom/WindRoseChart.vue

@@ -184,7 +184,45 @@ export default {
         legend: { title: { text: axes.levelname } },
       };
 
-      Plotly.newPlot(`plotDiv-${this.inds}`, traces, layout);
+      Plotly.newPlot(`plotDiv-${this.inds}`, traces, layout, {
+        modeBarButtonsToRemove: [
+          // 移除不需要的工具按钮
+          "select2d", // 对应 "Box Select"
+          "lasso2d", // 对应 "Lasso Select"
+          "zoom2d", // 缩放按钮
+        ],
+        displaylogo: false,
+        responsive: true,
+      }).then(function (gd) {
+        // 获取工具栏按钮
+        const toolbar = gd.querySelector(".modebar");
+        const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+        // 定义一个映射对象,方便修改按钮提示
+        const titleMap = {
+          "Download plot as a png": "保存图片",
+          Autoscale: "缩放",
+          Pan: "平移",
+          "Zoom out": "放大",
+          "Zoom in": "缩小",
+          "Box Select": "选择框操作",
+          "Lasso Select": "套索选择操作",
+          "Reset axes": "重置操作",
+          "Reset camera to default": "重置相机视角",
+          "Turntable rotation": "转台式旋转",
+          "Orbital rotation": "轨道式旋转",
+        };
+
+        // 遍历所有按钮,修改它们的 title
+        buttons.forEach(function (button) {
+          const dataTitle = button.getAttribute("data-title");
+
+          // 如果标题匹配,修改属性值
+          if (titleMap[dataTitle]) {
+            button.setAttribute("data-title", titleMap[dataTitle]);
+          }
+        });
+      });
     },
   },
 };

+ 45 - 1
src/views/performance/components/chartsCom/YewErrorBarChart.vue

@@ -210,8 +210,52 @@ export default {
         layout,
         {
           responsive: true,
+          modeBarButtonsToRemove: [
+            "lasso2d", // 移除不需要的工具按钮
+            // 移除不需要的工具按钮
+            "lasso2d",
+            "sendDataToCloud",
+            "resetCameraLastSave3d",
+            "resetCameraDefault3d",
+            "resetCameraLastSave",
+            "sendDataToCloud",
+            "zoom2d", // 缩放按钮
+            "zoom3d",
+            "plotlylogo2D",
+            "plotlylogo3D",
+          ],
+          displaylogo: false,
         }
-      );
+      ).then(function (gd) {
+        // 获取工具栏按钮
+        const toolbar = gd.querySelector(".modebar");
+        const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+        // 定义一个映射对象,方便修改按钮提示
+        const titleMap = {
+          "Download plot as a png": "保存图片",
+          Autoscale: "缩放",
+          Pan: "平移",
+          "Zoom out": "放大",
+          "Zoom in": "缩小",
+          "Box Select": "选择框操作",
+          "Lasso Select": "套索选择操作",
+          "Reset axes": "重置操作",
+          "Reset camera to default": "重置相机视角",
+          "Turntable rotation": "转台式旋转",
+          "Orbital rotation": "轨道式旋转",
+        };
+
+        // 遍历所有按钮,修改它们的 title
+        buttons.forEach(function (button) {
+          const dataTitle = button.getAttribute("data-title");
+
+          // 如果标题匹配,修改属性值
+          if (titleMap[dataTitle]) {
+            button.setAttribute("data-title", titleMap[dataTitle]);
+          }
+        });
+      });
     },
     // 切换图表类型
     toggleChartType() {

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

@@ -244,13 +244,11 @@ export default {
       const getChartSetUp = (axisTitle) => {
         return this.setUpImgData.find((item) => item.text.includes(axisTitle));
       };
-
       const xChartSetUp = getChartSetUp(layout.xaxis.title);
       if (xChartSetUp) {
         layout.xaxis.dtick = xChartSetUp.dtick;
         layout.xaxis.range = [xChartSetUp.min, xChartSetUp.max];
       }
-
       const yChartSetUp = getChartSetUp(layout.yaxis.title);
       if (yChartSetUp) {
         layout.yaxis.dtick = yChartSetUp.dtick;
@@ -275,6 +273,49 @@ export default {
       // 使用 Plotly.react 来更新图表
       Plotly.react(`bar-chart${this.index}`, data, layout, {
         responsive: true,
+        modeBarButtonsToRemove: [
+          // 移除不需要的工具按钮
+          "lasso2d",
+          "sendDataToCloud",
+          "resetCameraLastSave3d",
+          "resetCameraDefault3d",
+          "resetCameraLastSave",
+          "sendDataToCloud",
+          "zoom2d", // 缩放按钮
+          "zoom3d",
+          "plotlylogo2D",
+          "plotlylogo3D",
+        ],
+        displaylogo: false,
+      }).then(function (gd) {
+        // 获取工具栏按钮
+        const toolbar = gd.querySelector(".modebar");
+        const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+        // 定义一个映射对象,方便修改按钮提示
+        const titleMap = {
+          "Download plot as a png": "保存图片",
+          Autoscale: "缩放",
+          Pan: "平移",
+          "Zoom out": "放大",
+          "Zoom in": "缩小",
+          "Box Select": "选择框操作",
+          "Lasso Select": "套索选择操作",
+          "Reset axes": "重置操作",
+          "Reset camera to default": "重置相机视角",
+          "Turntable rotation": "转台式旋转",
+          "Orbital rotation": "轨道式旋转",
+        };
+
+        // 遍历所有按钮,修改它们的 title
+        buttons.forEach(function (button) {
+          const dataTitle = button.getAttribute("data-title");
+
+          // 如果标题匹配,修改属性值
+          if (titleMap[dataTitle]) {
+            button.setAttribute("data-title", titleMap[dataTitle]);
+          }
+        });
       });
     },
 

+ 43 - 0
src/views/performance/components/chartsCom/lineChartsFen.vue

@@ -251,6 +251,49 @@ export default {
 
       Plotly.react(`line-chart-fen-${this.index}`, finalData, layout, {
         responsive: true,
+        modeBarButtonsToRemove: [
+          // 移除不需要的工具按钮
+          "lasso2d",
+          "sendDataToCloud",
+          "resetCameraLastSave3d",
+          "resetCameraDefault3d",
+          "resetCameraLastSave",
+          "sendDataToCloud",
+          "zoom2d", // 缩放按钮
+          "zoom3d",
+          "plotlylogo2D",
+          "plotlylogo3D",
+        ],
+        displaylogo: false,
+      }).then(function (gd) {
+        // 获取工具栏按钮
+        const toolbar = gd.querySelector(".modebar");
+        const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+        // 定义一个映射对象,方便修改按钮提示
+        const titleMap = {
+          "Download plot as a png": "保存图片",
+          Autoscale: "缩放",
+          Pan: "平移",
+          "Zoom out": "放大",
+          "Zoom in": "缩小",
+          "Box Select": "选择框操作",
+          "Lasso Select": "套索选择操作",
+          "Reset axes": "重置操作",
+          "Reset camera to default": "重置相机视角",
+          "Turntable rotation": "转台式旋转",
+          "Orbital rotation": "轨道式旋转",
+        };
+
+        // 遍历所有按钮,修改它们的 title
+        buttons.forEach(function (button) {
+          const dataTitle = button.getAttribute("data-title");
+
+          // 如果标题匹配,修改属性值
+          if (titleMap[dataTitle]) {
+            button.setAttribute("data-title", titleMap[dataTitle]);
+          }
+        });
       });
     },
     // 切换图表类型

+ 42 - 2
src/views/performance/components/chartsCom/powerMarkers2DCharts.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2024-09-11 14:32:12
- * @LastEditTime: 2025-07-08 16:42:29
+ * @LastEditTime: 2025-07-10 11:09:31
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/powerMarkers2DCharts.vue
@@ -360,6 +360,17 @@ export default {
         ],
         modeBarButtonsToRemove: [
           "lasso2d", // 移除不需要的工具按钮
+          // 移除不需要的工具按钮
+          "lasso2d",
+          "sendDataToCloud",
+          "resetCameraLastSave3d",
+          "resetCameraDefault3d",
+          "resetCameraLastSave",
+          "sendDataToCloud",
+          "zoom2d", // 缩放按钮
+          "zoom3d",
+          "plotlylogo2D",
+          "plotlylogo3D",
         ],
         displaylogo: false,
         editable: true,
@@ -380,7 +391,36 @@ export default {
         ).then(() => {
           // 确保图表加载完成后设置工具栏按钮
           const plotElement = this.$refs[`plotlyChart-${this.index}`];
-          Plotly.relayout(plotElement, layout); // 使用 relayout 来确保自定义按钮应用
+          Plotly.relayout(plotElement, layout).then(function (gd) {
+            // 获取工具栏按钮
+            const toolbar = gd.querySelector(".modebar");
+            const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+            // 定义一个映射对象,方便修改按钮提示
+            const titleMap = {
+              "Download plot as a png": "保存图片",
+              Autoscale: "缩放",
+              Pan: "平移",
+              "Zoom out": "放大",
+              "Zoom in": "缩小",
+              "Box Select": "选择框操作",
+              "Lasso Select": "套索选择操作",
+              "Reset axes": "重置操作",
+              "Reset camera to default": "重置相机视角",
+              "Turntable rotation": "转台式旋转",
+              "Orbital rotation": "轨道式旋转",
+            };
+
+            // 遍历所有按钮,修改它们的 title
+            buttons.forEach(function (button) {
+              const dataTitle = button.getAttribute("data-title");
+
+              // 如果标题匹配,修改属性值
+              if (titleMap[dataTitle]) {
+                button.setAttribute("data-title", titleMap[dataTitle]);
+              }
+            });
+          }); // 使用 relayout 来确保自定义按钮应用
         });
       });
     },

+ 44 - 0
src/views/performance/components/chartsCom/yawErrorBarSum.vue

@@ -157,6 +157,50 @@ export default {
       // 渲染图表
       Plotly.newPlot(`bar-chart-sums` + this.index, [trace], layout, {
         responsive: true,
+        displaylogo: false,
+        modeBarButtonsToRemove: [
+          "lasso2d", // 移除不需要的工具按钮
+          // 移除不需要的工具按钮
+          "lasso2d",
+          "sendDataToCloud",
+          "resetCameraLastSave3d",
+          "resetCameraDefault3d",
+          "resetCameraLastSave",
+          "sendDataToCloud",
+          "zoom2d", // 缩放按钮
+          "zoom3d",
+          "plotlylogo2D",
+          "plotlylogo3D",
+        ],
+      }).then(function (gd) {
+        // 获取工具栏按钮
+        const toolbar = gd.querySelector(".modebar");
+        const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+        // 定义一个映射对象,方便修改按钮提示
+        const titleMap = {
+          "Download plot as a png": "保存图片",
+          Autoscale: "缩放",
+          Pan: "平移",
+          "Zoom out": "放大",
+          "Zoom in": "缩小",
+          "Box Select": "选择框操作",
+          "Lasso Select": "套索选择操作",
+          "Reset axes": "重置操作",
+          "Reset camera to default": "重置相机视角",
+          "Turntable rotation": "转台式旋转",
+          "Orbital rotation": "轨道式旋转",
+        };
+
+        // 遍历所有按钮,修改它们的 title
+        buttons.forEach(function (button) {
+          const dataTitle = button.getAttribute("data-title");
+
+          // 如果标题匹配,修改属性值
+          if (titleMap[dataTitle]) {
+            button.setAttribute("data-title", titleMap[dataTitle]);
+          }
+        });
       });
     },
     // 切换图表类型

+ 45 - 1
src/views/performance/components/chartsCom/yawErrorLine.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-22 09:42:59
- * @LastEditTime: 2025-06-11 10:55:18
+ * @LastEditTime: 2025-07-10 14:10:26
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/yawErrorLine.vue
@@ -235,6 +235,50 @@ export default {
       // 使用 Plotly.react 来更新图表
       Plotly.react(`bar-chart${this.index}`, data, layout, {
         responsive: true,
+        modeBarButtonsToRemove: [
+          "lasso2d", // 移除不需要的工具按钮
+          // 移除不需要的工具按钮
+          "lasso2d",
+          "sendDataToCloud",
+          "resetCameraLastSave3d",
+          "resetCameraDefault3d",
+          "resetCameraLastSave",
+          "sendDataToCloud",
+          "zoom2d", // 缩放按钮
+          "zoom3d",
+          "plotlylogo2D",
+          "plotlylogo3D",
+        ],
+        displaylogo: false,
+      }).then(function (gd) {
+        // 获取工具栏按钮
+        const toolbar = gd.querySelector(".modebar");
+        const buttons = toolbar.querySelectorAll(".modebar-btn");
+
+        // 定义一个映射对象,方便修改按钮提示
+        const titleMap = {
+          "Download plot as a png": "保存图片",
+          Autoscale: "缩放",
+          Pan: "平移",
+          "Zoom out": "放大",
+          "Zoom in": "缩小",
+          "Box Select": "选择框操作",
+          "Lasso Select": "套索选择操作",
+          "Reset axes": "重置操作",
+          "Reset camera to default": "重置相机视角",
+          "Turntable rotation": "转台式旋转",
+          "Orbital rotation": "轨道式旋转",
+        };
+
+        // 遍历所有按钮,修改它们的 title
+        buttons.forEach(function (button) {
+          const dataTitle = button.getAttribute("data-title");
+
+          // 如果标题匹配,修改属性值
+          if (titleMap[dataTitle]) {
+            button.setAttribute("data-title", titleMap[dataTitle]);
+          }
+        });
       });
     },
 

+ 2 - 2
vue.config.js

@@ -66,8 +66,8 @@ module.exports = {
         // target: "http://192.168.5.4:16200", // 石月
         // target: "http://192.168.50.235:16200", // 内网
         // target: "http://192.168.5.15:16200",
-        // target: "http://192.168.50.235:16500", //演示环境
-        target: "http://106.120.102.238:26500", //外网演示环境
+        target: "http://192.168.50.235:16500", //演示环境
+        // target: "http://106.120.102.238:26500", //外网演示环境
         // target: "http://106.120.102.238:16700", // 外网16700  生产16600
         // target: "http://10.96.137.5",
         changeOrigin: true,