rui.jiang 3 hónapja
szülő
commit
2ecf3bd9b4

+ 115 - 79
aa.html

@@ -1,96 +1,132 @@
 <!DOCTYPE html>
-<html lang="en">
+<html>
   <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>2D Scatter Plot with Time-based Colorbar</title>
-    <!-- 引入 Plotly.js -->
-    <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
+    <meta charset="utf-8" />
+    <title>3D Scatter Chart with ECharts-GL</title>
+    <!-- 引入 ECharts 和 ECharts-GL -->
+    <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.0/dist/echarts.min.js"></script>
+    <script src="https://cdn.jsdelivr.net/npm/echarts-gl@2.0.9/dist/echarts-gl.min.js"></script>
   </head>
   <body>
-    <div id="plotly-chart"></div>
+    <!-- 准备一个具备宽高的 DOM 容器 -->
+    <div id="main" style="width: 600px; height: 600px"></div>
 
     <script>
-      // 示例数据
-      const colorbarData = [
-        "2023-03",
-        "2023-03",
-        "2023-03",
-        "2023-03",
-        "2023-03",
-        "2023-03",
-        "2023-03",
-        "2023-03",
-        "2023-04",
-        "2023-04",
-        "2023-04",
-        "2023-04",
-        "2023-04",
-        "2023-04",
-        "2023-04",
-        "2023-04",
-        "2023-06",
-        "2023-06",
-      ];
+      // 初始化图表
+      const myChart = echarts.init(document.getElementById("main"));
 
-      const xData = [
-        4.2, 5.2, 4.04, 3.91, 3.69, 3.73, 4.31, 3.99, 3.75, 3.77, 3.49, 3.18,
-        2.77, 3, 3.52, 3.23, 3.09, 3.39,
-      ];
+      // 生成随机测试数据(100个点)
+      function generateRandomData(count) {
+        let data = [];
+        for (let i = 0; i < count; i++) {
+          data.push([
+            Math.random() * 10, // x
+            Math.random() * 10, // y
+            Math.random() * 10, // z
+            Math.random(), // 用于颜色映射的第四个维度(可选)
+          ]);
+        }
+        return data;
+      }
 
-      const yData = [
-        310.18, 391.66, 286.01, 242.07, 244.45, 250.31, 302.12, 240.6, 251.22,
-        215.52, 135.86, 75.99, 10.25, 100.25, 310.25, 410.25, 190.25, 210.25,
-      ];
-
-      // 映射时间到数值:2023-03 -> 1, 2023-04 -> 2, 2023-06 -> 3
-      const timeMapping = {
-        "2023-03": 1,
-        "2023-04": 2,
-        "2023-06": 3,
-      };
-
-      // 将时间字符串映射为数字
-      const colorValues = colorbarData.map((date) => timeMapping[date]);
-
-      // 配置散点图的数据
-      const trace = {
-        x: xData, // 风速数据
-        y: yData, // 有功功率数据
-        mode: "markers", // 选择散点图
-        type: "scatter", // 散点图
-        text: colorbarData, // 鼠标悬停时显示的文本(时间)
-        hovertemplate:
-          "<b>时间: %{text}</b><br>" +
-          "风速: %{x} m/s<br>" +
-          "功率: %{y} kW<extra></extra>", // 鼠标悬停时显示的内容
-        marker: {
-          color: colorValues, // 使用数字化的时间数据来映射颜色
-          colorscale: "Viridis", // 颜色渐变
-          colorbar: {
-            title: "年月", // 色条标题
-            tickvals: [1, 2, 3], // 设置 colorbar 上的刻度
-            ticktext: ["2023-03", "2023-04", "2023-06"], // 设置刻度对应的时间标签
+      // 配置项
+      const option = {
+        // 启用 3D 坐标系
+        globe: {
+          environment: "auto",
+          backgroundColor: "#FFFFFF", // 设置背景为白色
+          baseTexture: null, // 移除默认的球体纹理(不显示黑色球体)
+        },
+        // 3D 坐标轴配置
+        xAxis3D: {
+          type: "value",
+          name: "X Axis",
+        },
+        yAxis3D: {
+          type: "value",
+          name: "Y Axis",
+        },
+        zAxis3D: {
+          type: "value",
+          name: "Z Axis",
+        },
+        // 3D 网格配置
+        grid3D: {
+          viewControl: {
+            autoRotate: true, // 自动旋转
+            autoRotateSpeed: 10, // 旋转速度(1-10)
+          },
+          axisPointer: {
+            show: true,
+            color: "#fff",
           },
-          size: 10, // 设置散点的大小
         },
-      };
-      // "风速: %{x}(m/s)<br>" +
-      //       "有功功率: %{y}(kw)<br>" +
-      //       "时间: %{marker.color:.2f}<extra></extra>", // 鼠标悬停时显示的内容
-      // 配置布局
-      const layout = {
-        title: "风速与有功功率的散点图",
-        xaxis: {
-          title: "风速 (m/s)", // X轴标题
+        // 数据集(使用随机生成的数据)
+        dataset: {
+          source: generateRandomData(100),
         },
-        yaxis: {
-          title: "有功功率 (kW)", // Y轴标题
+        // 系列配置
+        series: [
+          {
+            type: "scatter3D",
+            // 数据维度映射(x, y, z)
+            encode: {
+              x: 0,
+              y: 1,
+              z: 2,
+            },
+            // 点的大小
+            symbolSize: 8,
+            // 颜色配置(使用第四个维度)
+            itemStyle: {
+              color: function (params) {
+                // 使用第四个维度值映射到颜色
+                const value = params.value[3];
+                return echarts.color.modifyHSL(
+                  "#5A94DF",
+                  undefined,
+                  undefined,
+                  undefined,
+                  value * 0.5
+                );
+              },
+            },
+          },
+        ],
+        // 工具栏
+        toolbox: {
+          show: true,
+          feature: {
+            saveAsImage: {
+              show: true,
+              type: "png",
+            },
+            myTool: {
+              show: true,
+              title: "切换视角",
+              icon: "path://M432.45,595.444c0,2.177-4.661,6.82-11.305,6.82c-6.475,0-11.306-4.567-11.306-6.82s4.852-6.812,11.306-6.812C427.841,588.632,432.452,593.191,432.45,595.444L432.45,595.444z",
+              onclick: function () {
+                myChart.setOption({
+                  grid3D: {
+                    viewControl: {
+                      alpha: 45,
+                      beta: 30,
+                    },
+                  },
+                });
+              },
+            },
+          },
         },
       };
 
-      // 绘制图表
-      Plotly.newPlot("plotly-chart", [trace], layout);
+      // 应用配置
+      myChart.setOption(option);
+
+      // 窗口大小改变时自动调整图表
+      window.addEventListener("resize", function () {
+        myChart.resize();
+      });
     </script>
   </body>
 </html>

+ 3 - 0
src/components/virtual_list/index.vue

@@ -55,10 +55,13 @@ export default {
 
 .virtual-list {
   height: 100%;
+  display: flex;
+  flex-direction: column;
 }
 
 .scroller {
   height: 100%;
+  overflow: hidden;
 
   /* 隐藏垂直滚动条 */
   &::-webkit-scrollbar {

+ 0 - 11
src/views/overview/components/cp_trend/index.vue

@@ -1,12 +1,3 @@
-<!--
- * @Author: your name
- * @Date: 2025-01-09 18:06:09
- * @LastEditTime: 2025-02-14 16:25:02
- * @LastEditors: bogon
- * @Description: In User Settings Edit
- * @FilePath: /performance-test/src/views/overview/components/cp_trend/index.vue
--->
-
 <template>
   <div class="type-variable">
     <!-- 风能利用系数时序分析--只有分图不存在总图 -->
@@ -47,7 +38,6 @@
           :fileAddr="item.fileAddr"
         ></BoxMarkersCharts>
       </VirtualList>
-
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"
@@ -104,7 +94,6 @@ import {
   queryAnalysisedEngine,
   analysisCommentEdit,
 } from "@/api/performance";
-import axios from "axios";
 export default {
   name: "cpTrend",
   components: {

+ 8 - 9
src/views/overview/components/pitch_power/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:09:41
- * @LastEditTime: 2025-02-17 17:22:49
+ * @LastEditTime: 2025-02-20 15:38:29
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/pitch_power/index.vue
@@ -35,18 +35,17 @@
       <div class="titleCharts">分析分图 :</div>
       <VirtualList
         :list="diagramRelationsDatas"
-        keyField="fieldEngineCode"
+        keyField="fileAddr"
         :itemSize="600"
         v-slot="{ item, index }"
       >
-        <TwoDMarkersChart
+        <powerMarkers2DCharts
           v-if="getFileTypeFromUrl(item.fileAddr) === 'pitch_power'"
-          :index="index + 'TwoDMarkersChart'"
-          :key="item.fieldEngineCode + 'TwoDMarkersChart'"
+          :index="index + 'powerMarkers2DCharts'"
+          :key="item.fieldEngineCode + 'powerMarkers2DCharts'"
           :ref="item.fieldEngineCode"
           :fileAddr="item.fileAddr"
-        >
-        </TwoDMarkersChart>
+        ></powerMarkers2DCharts>
         <Time3DChart
           v-if="getFileTypeFromUrl(item.fileAddr) === '3D'"
           :key="item.fieldEngineCode + 'Time3DChart'"
@@ -105,7 +104,7 @@
 <script>
 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 powerMarkers2DCharts from "@/views/performance/components/chartsCom/powerMarkers2DCharts.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
 import Time3DChart from "@/views/performance/components/chartsCom/Time3DChart.vue";
 import {
@@ -119,7 +118,7 @@ export default {
   components: {
     DicCard,
     FilterChart,
-    TwoDMarkersChart,
+    powerMarkers2DCharts,
     Time3DChart,
     TinymceEditor,
   },

+ 2 - 2
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-02-12 16:41:43
+ * @LastEditTime: 2025-02-19 15:24:51
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/pitch_tsr_cp/index.vue
@@ -33,7 +33,7 @@
       </el-alert>
       <VirtualList
         :list="diagramRelationsDatas"
-        keyField="fieldEngineCode"
+        keyField="fileAddr"
         :itemSize="452"
         v-slot="{ item, index }"
       >

+ 12 - 10
src/views/overview/components/speed_power/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:09:17
- * @LastEditTime: 2025-02-12 17:19:11
+ * @LastEditTime: 2025-02-20 16:32:01
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/speed_power/index.vue
@@ -34,7 +34,7 @@
       <div class="titleCharts">分析总图 :</div>
       <VirtualList
         :list="generalFilesDatas"
-        keyField="batchCode"
+        keyField="fileAddr"
         :itemSize="600"
         v-slot="{ item, index }"
       >
@@ -49,18 +49,18 @@
       <div class="titleCharts">分析分图 :</div>
       <VirtualList
         :list="diagramRelationsDatas"
-        keyField="fieldEngineCode"
+        keyField="fileAddr"
         :itemSize="600"
         v-slot="{ item, index }"
       >
-        <TwoDMarkersChart
+        <powerMarkers2DCharts
           v-if="getFileTypeFromUrl(item.fileAddr) === 'speed_power'"
-          :index="index + 'TwoDMarkersChart'"
-          :key="item.fieldEngineCode + 'TwoDMarkersChart'"
+          :index="index + 'powerMarkers2DCharts'"
+          :key="item.fieldEngineCode + 'powerMarkers2DCharts'"
           :ref="item.fieldEngineCode"
           :fileAddr="item.fileAddr"
-        >
-        </TwoDMarkersChart>
+        ></powerMarkers2DCharts>
+
         <Time3DChart
           v-if="getFileTypeFromUrl(item.fileAddr) === '3D'"
           :key="item.fieldEngineCode + 'Time3DChart'"
@@ -120,15 +120,17 @@
 <script>
 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 Time3DChart from "@/views/performance/components/chartsCom/Time3DChart.vue";
 import {
   analysisDetail,
   queryAnalysisedEngine,
   analysisCommentEdit,
 } from "@/api/performance";
-import TwoDMarkersChart from "@/views/performance/components/chartsCom/TwoDMarkersChart.vue";
+import powerMarkers2DCharts from "@/views/performance/components/chartsCom/powerMarkers2DCharts.vue";
 
 export default {
   name: "speedPower",
@@ -138,7 +140,7 @@ export default {
     DDrawingChart,
     TinymceEditor,
     Time3DChart,
-    TwoDMarkersChart,
+    powerMarkers2DCharts,
   },
   props: {
     initBatchCode: {

+ 13 - 17
src/views/overview/components/speed_torque/index.vue

@@ -22,20 +22,9 @@
           在风力发电机组中,转速-功率散点图展示了风机发电机转速与风机产生的功率之间的关系。这种散点图能够揭示在不同转速速和操作条件下,发电机转速调整是如何影响风机的功率和转矩输出的。
         </div>
       </el-alert>
-      <!-- <div class="titleCharts">分析总图 :</div> -->
-      <!-- <div v-for="(item, index) in generalFilesDatas">
-        <DDrawingChart
-          :key="item.batchCode + index"
-          :index="index + 'zong'"
-          :ref="item.batchCode + index"
-          :fileAddr="item.fileAddr"
-        >
-        </DDrawingChart>
-      </div> -->
-
       <VirtualList
         :list="generalFilesDatas"
-        keyField="batchCode"
+        keyField="fileAddr"
         :itemSize="600"
         v-slot="{ item, index }"
       >
@@ -52,18 +41,25 @@
 
       <VirtualList
         :list="diagramRelationsDatas"
-        keyField="fieldEngineCode"
+        keyField="fileAddr"
         :itemSize="600"
         v-slot="{ item, index }"
       >
-        <TwoDMarkersChart
+        <powerMarkers2DCharts
+          v-if="getFileTypeFromUrl(item.fileAddr) === 'speed_torque'"
+          :index="index + 'powerMarkers2DCharts'"
+          :key="item.fieldEngineCode + 'powerMarkers2DCharts'"
+          :ref="item.fieldEngineCode"
+          :fileAddr="item.fileAddr"
+        ></powerMarkers2DCharts>
+        <!-- <TwoDMarkersChart
           v-if="getFileTypeFromUrl(item.fileAddr) === 'speed_torque'"
           :index="index + 'TwoDMarkersChart'"
           :key="item.fieldEngineCode + 'TwoDMarkersChart'"
           :ref="item.fieldEngineCode"
           :fileAddr="item.fileAddr"
         >
-        </TwoDMarkersChart>
+        </TwoDMarkersChart> -->
         <Time3DChart
           v-if="getFileTypeFromUrl(item.fileAddr) === '3D'"
           :key="item.fieldEngineCode + 'Time3DChart'"
@@ -131,7 +127,7 @@ import {
   queryAnalysisedEngine,
   analysisCommentEdit,
 } from "@/api/performance";
-import TwoDMarkersChart from "@/views/performance/components/chartsCom/TwoDMarkersChart.vue";
+import powerMarkers2DCharts from "@/views/performance/components/chartsCom/powerMarkers2DCharts.vue";
 
 export default {
   name: "speedTorque",
@@ -141,7 +137,7 @@ export default {
     DDrawingChart,
     Time3DChart,
     TinymceEditor,
-    TwoDMarkersChart,
+    powerMarkers2DCharts,
   },
   props: {
     initBatchCode: {

+ 27 - 24
src/views/overview/components/yaw_error_density/index.vue

@@ -1,11 +1,3 @@
-<!--
- * @Author: your name
- * @Date: 2025-01-10 09:26:12
- * @LastEditTime: 2025-02-17 17:21:45
- * @LastEditors: bogon
- * @Description: In User Settings Edit
- * @FilePath: /performance-test/src/views/overview/components/yaw_error_density/index.vue
--->
 <template>
   <div class="type-variable">
     <!-- 动态偏航误差分析--只有分图不存在总图 -->
@@ -32,19 +24,27 @@
       </el-alert>
       <VirtualList
         :list="diagramRelationsDatas"
-        keyField="fieldEngineCode"
-        :itemSize="452"
+        keyField="fileAddr"
+        :itemSize="500"
         v-slot="{ item, index }"
       >
-        <YawErrorDensityChart
-          :index="index + item.fieldEngineCode"
-          :key="item.fieldEngineCode"
+        <lineAndChildLine
+          v-if="getFileTypeFromUrl(item.fileAddr) === 'PDF-'"
+          :key="item.fieldEngineCode + index"
+          :index="`${new Date().getTime()}` + index + item.fieldEngineCode"
           :ref="item.fieldEngineCode"
           :fileAddr="item.fileAddr"
         >
-        </YawErrorDensityChart>
+        </lineAndChildLine>
+        <TwoDMarkersChart
+          v-else
+          :key="item.fieldEngineCode + index"
+          :ref="item.fieldEngineCode + index"
+          :index="index + item.fieldEngineCode"
+          :fileAddr="item.fileAddr"
+        >
+        </TwoDMarkersChart>
       </VirtualList>
-
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"
@@ -94,9 +94,9 @@
 <script>
 import DicCard from "@/views/overview/components/dicCard/index.vue";
 import FilterChart from "@/views/overview/components/filterChart/index.vue";
-
-import YawErrorDensityChart from "@/views/performance/components/chartsCom/YawErrorDensityChart.vue";
+import TwoDMarkersChart from "@/views/performance/components/chartsCom/TwoDMarkersChart.vue";
 import TinymceEditor from "@/components/Tinymce.vue";
+import lineAndChildLine from "@/views/performance/components/chartsCom/lineAndChildLine.vue";
 import {
   analysisDetail,
   queryAnalysisedEngine,
@@ -107,8 +107,9 @@ export default {
   components: {
     DicCard,
     FilterChart,
-    YawErrorDensityChart,
     TinymceEditor,
+    TwoDMarkersChart,
+    lineAndChildLine,
   },
   props: {
     initBatchCode: {
@@ -213,14 +214,8 @@ export default {
     // 合并后的函数,处理数据请求
     async fetchData() {
       try {
-        console.log(
-          this.initBatchCode,
-          this.analysisTypeCode,
-          "请求详情 分钟级"
-        );
         // 获取分析详情
         await this.getAnalysisDetail();
-
         // 获取风机列表
         await this.getWindEnfineList(this.initBatchCode, this.analysisTypeCode);
       } catch (err) {
@@ -320,6 +315,14 @@ export default {
       this.$emit("setInitBathCode", this.batchCodeList[index - 1]);
     },
     onClick() {},
+    getFileTypeFromUrl(url) {
+      // 判断文件名或路径是否包含关键字
+      if (url.includes("PDF-")) {
+        return "PDF-"; // 如果 URL 中包含 "3D" 字符串,判断为 3D 类型
+      } else {
+        return "Unknown"; // 如果都不包含,返回 Unknown 或其他提示
+      }
+    },
   },
 };
 </script>

+ 1 - 1
src/views/overview/index.vue

@@ -480,6 +480,6 @@ export default {
 }
 ::v-deep .el-dialog__body {
   overflow-y: scroll;
-  height: 95vh;
+  height: 80vh;
 }
 </style>

+ 17 - 6
src/views/performance/assetssMag.vue

@@ -104,7 +104,11 @@
               style="color: #f90"
               >分析中</span
             >
-            <span v-else-if="scope.row.errState == 1" style="color: #f00"
+            <span
+              v-else-if="
+                scope.row.errState == 1 && scope.row.analysisState == 30
+              "
+              style="color: #f00"
               >分析异常</span
             >
 
@@ -143,7 +147,7 @@
         </el-table-column>
         <el-table-column
           align="center"
-          label="待分析排位"
+          label="优先执行"
           prop="orderNum"
           min-width="200"
         >
@@ -317,11 +321,19 @@
             >
             <el-button
               v-if="scope.row.analysisState == 10"
-              @click="insertQueue(scope.row)"
+              @click="insertQueue(scope.row, 1)"
               type="text"
               size="small"
               >插队</el-button
             >
+            <el-button
+              v-if="scope.row.analysisState == 10"
+              @click="insertQueue(scope.row, 0)"
+              type="text"
+              size="small"
+              >取消插队</el-button
+            >
+
             <!-- <el-button
               @click="HandleOnOffAuto(scope.row)"
               type="text"
@@ -615,7 +627,7 @@ export default {
       }
     },
     //插队接口
-    async insertQueue(row) {
+    async insertQueue(row, index) {
       this.$confirm(`确认插队?`, "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
@@ -624,7 +636,7 @@ export default {
         .then(async () => {
           const formData = new FormData();
           formData.append("batchCode", row.batchCode);
-          formData.append("priority", 1);
+          formData.append("priority", index);
           const result = await editPriority(formData);
           console.log(result, "插队结果");
           if (result.code === 200) {
@@ -743,7 +755,6 @@ export default {
       }
       if (analysisState !== undefined) {
         this.formInline.analysisState = analysisState;
-        console.log(analysisState, "2");
       }
       if (errState !== undefined) {
         this.formInline.errState = errState;

+ 1 - 44
src/views/performance/components/PlotlyCharts.vue

@@ -95,50 +95,7 @@ export default {
             y: -0.2,
           },
         },
-        colors: [
-          "#636EFA",
-          "#EF553B",
-          "#00CC96",
-          "#AB63FA",
-          "#FFA15A",
-          "#19D3F3",
-          "#FF6692",
-          "#B6E880",
-          "#FF97FF",
-          "#FECB52",
-          "#636EFB",
-          "#EF553C",
-          "#00CC97",
-          "#AB63FB",
-          "#FFA15B",
-          "#19D3F4",
-          "#FF6693",
-          "#B6E881",
-          "#FF97FE",
-          "#FECB51",
-          "#1F77B4",
-          "#FF7F0E",
-          "#2CA02C",
-          "#D62728",
-          "#9467BD",
-          "#8C564B",
-          "#E377C2",
-          "#7F7F7F",
-          "#BCBD22",
-          "#17BECF",
-          "#1A55F2",
-          "#FF5733",
-          "#33FF57",
-          "#3375FF",
-          "#FF33A6",
-          "#57FF33",
-          "#3380FF",
-          "#FF8033",
-          "#57FF80",
-          "#8033FF",
-          "#FF3380",
-          "#FFD733",
-        ],
+        colors: [...colorSchemesLine[0].colors],
       },
       powerCurveData: {
         turbines: [],

+ 138 - 12
src/views/performance/components/chartsCom/3DDrawingChart.vue

@@ -57,16 +57,27 @@ export default {
         try {
           this.loading = true;
           this.cancelToken = axios.CancelToken.source();
-          console.log(this.fileAddr, "3D url");
+
           const resultChartsData = await axios.get(this.fileAddr, {
             cancelToken: this.cancelToken.token,
           });
-          console.log(
-            resultChartsData.data,
-            JSON.parse(resultChartsData.data),
-            "解析3D数据"
-          );
-          this.chartData = resultChartsData.data;
+          console.log(this.fileAddr, "解析3D数据");
+          if (typeof resultChartsData.data === "string") {
+            let dataString = resultChartsData.data;
+            // 如果数据字符串的开头和结尾可能有多余的字符(比如非法字符),可以进行清理
+            dataString = dataString.trim(); // 去除前后空格
+            // 如果数据包含了类似 "Infinity" 或其他无法解析的字符,替换它们
+            dataString = dataString.replace(/Infinity/g, '"Infinity"'); // 例如,将 "Infinity" 转换为字符串
+            try {
+              const parsedData = JSON.parse(dataString);
+              this.chartData = parsedData;
+            } catch (error) {
+              console.error("JSON 解析失败:", error);
+            }
+          } else {
+            this.chartData = resultChartsData.data;
+          }
+          // this.chartData = resultChartsData.data;
           this.renderChart();
           this.isError = false;
           this.loading = false;
@@ -76,9 +87,106 @@ export default {
         }
       }
     },
+    // renderChart() {
+    //   // 构造3D散点图数据
+
+    //   const trace = {
+    //     x: this.chartData.data[0].xData, // 发电机转速
+    //     y: this.chartData.data[0].yData, // 时间
+    //     z: this.chartData.data[0].zData, // 有功功率
+    //     mode: "markers", // 强制设置为markers,避免出现线条
+    //     type: "scatter3d", // 3D 散点图
+    //     marker: {
+    //       size: 2, // 点的大小
+    //       color: this.chartData.data[0].zData, // 根据 Z 数据设置颜色
+    //       colorscale: 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"],
+    //           ],
+    //     },
+    //     name: this.chartData.data[0].color, // 图例显示的名称,使用 color 数据
+    //     legendgroup: this.chartData.data[0].color, // 使用 color 数据作为图例组
+    //   };
+    //   const config = { scrollZoom: true };
+
+    //   const layout = {
+    //     title: this.chartData.data[0].title,
+    //     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, // X 轴比例
+    //         y: 3, // Y 轴比例
+    //         z: 1, // Z 轴比例(可根据需要调整)
+    //       },
+    //       plot_bgcolor: "#e5ecf6",
+    //       gridcolor: "#fff", // 设置网格线颜色
+    //       camera: {
+    //         center: {
+    //           x: 0, // 设置中心点
+    //           y: 0, // 设置中心点
+    //           z: 0, // 设置中心点
+    //         },
+    //         eye: {
+    //           x: 0, // 眼睛的位置
+    //           y: 0, // 眼睛的位置
+    //           z: 2.5, // 眼睛的位置
+    //         },
+    //         up: {
+    //           x: 0, // 设置上方向
+    //           y: 0, // 设置上方向
+    //           z: 1, // 设置上方向
+    //         },
+    //       },
+    //     },
+    //     margin: { t: 50, b: 50, l: 50, r: 50 }, // 图表边距
+    //     staticPlot: false,
+    //     legend: {
+    //       x: 0.8, // 图例的 X 位置
+    //       y: 0.9, // 图例的 Y 位置
+    //       title: {
+    //         text: this.chartData.yaixs, // 图例标题
+    //       },
+    //       bgcolor: "rgba(255, 255, 255, 0.7)", // 图例背景色
+    //       bordercolor: "black", // 图例边框颜色
+    //       borderwidth: 1, // 图例边框宽度
+    //     },
+    //   };
+    //   console.log(trace, "渲染图表3Ds");
+    //   Plotly.newPlot(`plotly-3d-chart-` + this.index, [trace], layout, config);
+    // },
     renderChart() {
       // 构造3D散点图数据
-
       const trace = {
         x: this.chartData.data[0].xData, // 发电机转速
         y: this.chartData.data[0].yData, // 时间
@@ -87,7 +195,7 @@ export default {
         type: "scatter3d", // 3D 散点图
         marker: {
           size: 2, // 点的大小
-          color: this.chartData.data[0].zData, // 根据 Z 数据设置颜色
+          color: this.chartData.data[0].zData, // 这里的 zData 用于决定每个点的颜色
           colorscale: this.color1
             ? [
                 [0, "#F9FDD2"], // 颜色从 this.color1 开始
@@ -102,9 +210,27 @@ export default {
                 [0.75, "#407DB3"],
                 [0.9, "#2E4C9A"],
                 [1, "#1B2973"],
-              ],
+              ], // 自定义颜色渐变
+          colorbar: {
+            title: this.chartData.yaixs, // 色带标题
+            // tickvals: [0, 0.5, 1], // 设置色带刻度值
+            // ticktext: ["低", "中", "高"], // 设置刻度文本
+            // tickmode: "array", // 使用数组模式
+            ticks: "outside", // 设置刻度显示方向
+            tickangle: 45, // 设置刻度文字角度
+          },
         },
+        name: "数据系列", // 图例名称
+        // legendgroup: "group1", // 图例组
+        hovertemplate:
+          `${this.chartData.xaixs}:` +
+          ` %{x} <br> ` +
+          `${this.chartData.yaixs}:` +
+          "%{y} <br>" +
+          `${this.chartData.zaixs}:` +
+          "%{z} <br>",
       };
+
       const config = { scrollZoom: true };
 
       const layout = {
@@ -134,7 +260,7 @@ export default {
           aspectratio: {
             x: 1, // X 轴比例
             y: 3, // Y 轴比例
-            z: 1, // Z 轴比例(可根据需要调整)
+            z: 1, // Z 轴比例
           },
           plot_bgcolor: "#e5ecf6",
           gridcolor: "#fff", // 设置网格线颜色
@@ -159,7 +285,7 @@ export default {
         margin: { t: 50, b: 50, l: 50, r: 50 }, // 图表边距
         staticPlot: false,
       };
-      console.log(trace, "渲染图表3Ds");
+
       Plotly.newPlot(`plotly-3d-chart-` + this.index, [trace], layout, config);
     },
   },

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

@@ -16,7 +16,7 @@
 
     <div
       v-loading="loading"
-      ref="plotlyChart"
+      :ref="`plotlyChart-${index}`"
       style="width: 100%; height: 450px"
     >
       <el-empty v-if="isError" description="请求失败"></el-empty>
@@ -116,7 +116,7 @@ export default {
 
     // 绘制箱线图
     drawBoxPlot() {
-      const chartContainer = this.$refs.plotlyChart;
+      const chartContainer = this.$refs[`plotlyChart-${this.index}`];
       const { data, xaixs, yaixs, analysisTypeCode } = this.chartData;
 
       // 过滤数据,根据选定的日期范围

+ 2 - 21
src/views/performance/components/chartsCom/GeneratorTemperature.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-21 11:18:49
- * @LastEditTime: 2025-02-18 15:42:40
+ * @LastEditTime: 2025-02-19 10:06:39
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/GeneratorTemperature.vue
@@ -77,25 +77,7 @@ export default {
 
       loading: false,
       isError: false,
-      colors: [
-        //   "#F96F4A",
-        "#F78F4F",
-        "#FCB06C",
-        "#FFC475",
-        // "#FFE286",
-        // "#FDF1A9",
-        // "#FBFFBE",
-        // "#EEF9A7",
-        // "#E4F39E",
-        // "#CFEE9E",
-        // "#A8DCA2",
-        "#85D0AE",
-        "#60C5A3",
-        "#52A3AE",
-        "#4FA4B5",
-        "#3586BF",
-        "#476CB9",
-      ],
+      colors: [...colorSchemesLine[0].colors],
       typeLine: ["solid", "dot", "dash", "longdash", "dashdot", "longdashdot"],
     };
   },
@@ -192,7 +174,6 @@ export default {
       this.chartType = this.chartType === "line" ? "bar" : "line"; // 切换图表类型
       this.drawChart(); // 重新绘制图表
     },
-
     // 更新图表颜色
     updateChartColor() {
       this.drawChart(); // 更新颜色后重新绘制图表

+ 27 - 8
src/views/performance/components/chartsCom/Time3DChart.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-22 18:50:27
- * @LastEditTime: 2025-01-23 09:32:49
+ * @LastEditTime: 2025-02-20 10:21:12
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/Time3DChart.vue
@@ -51,16 +51,24 @@ export default {
         try {
           this.loading = true;
           this.cancelToken = axios.CancelToken.source();
-          console.log(this.fileAddr, "3D url");
           const resultChartsData = await axios.get(this.fileAddr, {
             cancelToken: this.cancelToken.token,
           });
-          // console.log(
-          //   resultChartsData.data,
-          //   JSON.parse(resultChartsData.data),
-          //   "解析3D数据"
-          // );
-          this.chartData = resultChartsData.data;
+          if (typeof resultChartsData.data === "string") {
+            let dataString = resultChartsData.data;
+            // 如果数据字符串的开头和结尾可能有多余的字符(比如非法字符),可以进行清理
+            dataString = dataString.trim(); // 去除前后空格
+            // 如果数据包含了类似 "Infinity" 或其他无法解析的字符,替换它们
+            dataString = dataString.replace(/Infinity/g, '"Infinity"'); // 例如,将 "Infinity" 转换为字符串
+            try {
+              const parsedData = JSON.parse(dataString);
+              this.chartData = parsedData;
+            } catch (error) {
+              console.error("JSON 解析失败:", error);
+            }
+          } else {
+            this.chartData = resultChartsData.data;
+          }
           this.renderChart();
           this.isError = false;
           this.loading = false;
@@ -164,6 +172,17 @@ export default {
             },
           },
         },
+        legend: {
+          // 图例设置
+          x: 0.8, // 图例的 X 位置(相对于图表的右边)
+          y: 0.8, // 图例的 Y 位置(相对于图表的顶部)
+          title: {
+            text: "Data Series", // 图例的标题
+          },
+          bgcolor: "rgba(255, 255, 255, 0.7)", // 设置图例背景色
+          bordercolor: "black", // 设置图例的边框颜色
+          borderwidth: 1, // 设置图例的边框宽度
+        },
         margin: { t: 50, b: 50, l: 50, r: 50 }, // 图表边距
         staticPlot: false,
       };

+ 65 - 55
src/views/performance/components/chartsCom/TwoDMarkersChart.vue

@@ -1,60 +1,54 @@
 <template>
-  <div style="height: 452px">
+  <div style="width: 100%; height: 500px">
     <!-- 2D散点图 -->
-    <template>
-      <div style="display: flex; align-items: center; padding-top: 20px">
-        <div style="margin-right: 20px; display: flex; align-items: center">
-          <el-select
-            size="small"
-            v-model="color1"
-            @change="updateChartColor"
-            placeholder="选择配色方案"
-            style="width: 200px"
-          >
-            <el-option
-              v-for="(scheme, index) in colorSchemes"
-              :key="index"
-              :label="scheme.label"
-              :value="scheme.colors"
-              :style="getOptionStyle(scheme.colors)"
-            ></el-option>
-          </el-select>
-          <span style="margin-left: 10px">自定义颜色</span>
-        </div>
-        <!-- 图表类型切换按钮 -->
-        <div>
-          <el-button size="small" @click="setChartType('scatter')"
-            >散点图</el-button
-          >
-          <el-button size="small" @click="setChartType('line')"
-            >折线图</el-button
-          >
-        </div>
-      </div>
-      <!-- 点大小控制 -->
-      <div style="display: flex; align-items: center">
-        <!-- <span style="margin-right: 10px">点大小</span> -->
-        <el-slider
-          v-model="pointSize"
-          :min="3"
-          :max="15"
-          :step="1"
-          label="点的大小"
-          show-stops
-          style="width: 150px"
+    <div style="display: flex; align-items: center; padding-top: 20px">
+      <div style="margin-right: 20px; display: flex; align-items: center">
+        <el-select
+          size="small"
+          v-model="color1"
           @change="updateChartColor"
-        ></el-slider>
+          placeholder="选择配色方案"
+          style="width: 200px"
+        >
+          <el-option
+            v-for="(scheme, index) in colorSchemes"
+            :key="index"
+            :label="scheme.label"
+            :value="scheme.colors"
+            :style="getOptionStyle(scheme.colors)"
+          ></el-option>
+        </el-select>
+        <span style="margin-left: 10px">自定义颜色</span>
       </div>
-      <!-- <div v-loading="$parent.requestRecord[index] === 'start'"> -->
-      <div
-        v-loading="loading"
-        :ref="`plotlyChart-${index}`"
-        style="height: 400px"
-      >
-        <el-empty v-if="isError" description="请求失败"></el-empty>
+      <!-- 图表类型切换按钮 -->
+      <div>
+        <el-button size="small" @click="setChartType('scatter')"
+          >散点图</el-button
+        >
+        <el-button size="small" @click="setChartType('line')">折线图</el-button>
       </div>
-      <!-- </div> -->
-    </template>
+    </div>
+    <!-- 点大小控制 -->
+    <div style="display: flex; align-items: center">
+      <!-- <span style="margin-right: 10px">点大小</span> -->
+      <el-slider
+        v-model="pointSize"
+        :min="3"
+        :max="15"
+        :step="1"
+        label="点的大小"
+        show-stops
+        style="width: 150px"
+        @change="updateChartColor"
+      ></el-slider>
+    </div>
+    <div
+      v-loading="loading"
+      :ref="'plotlyChart-' + index"
+      style="width: 100%; height: 450px"
+    >
+      <el-empty v-if="isError" description="请求失败"></el-empty>
+    </div>
   </div>
 </template>
 
@@ -107,12 +101,24 @@ export default {
         try {
           this.loading = true;
           this.cancelToken = axios.CancelToken.source();
-          console.log(this.cancelToken);
           const resultChartsData = await axios.get(this.fileAddr, {
             cancelToken: this.cancelToken.token,
           });
-          console.log(resultChartsData);
-          this.chartData = resultChartsData.data;
+          if (typeof resultChartsData.data === "string") {
+            let dataString = resultChartsData.data;
+            // 如果数据字符串的开头和结尾可能有多余的字符(比如非法字符),可以进行清理
+            dataString = dataString.trim(); // 去除前后空格
+            // 如果数据包含了类似 "Infinity" 或其他无法解析的字符,替换它们
+            dataString = dataString.replace(/Infinity/g, '"Infinity"'); // 例如,将 "Infinity" 转换为字符串
+            try {
+              const parsedData = JSON.parse(dataString);
+              this.chartData = parsedData;
+            } catch (error) {
+              console.error("JSON 解析失败:", error);
+            }
+          } else {
+            this.chartData = resultChartsData.data;
+          }
           this.drawChart();
           this.isError = false;
           this.loading = false;
@@ -122,6 +128,10 @@ export default {
         }
       }
     },
+    // 清理非法字符(如换行符等)
+    cleanJsonString(jsonString) {
+      return jsonString.replace(/[\n\r\t]/g, "").replace(/,\s*([\]}])/g, "$1"); // 清理换行符等
+    },
     drawChart() {
       if (!this.$refs[`plotlyChart-${this.index}`]) {
         return false;

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

@@ -1,13 +1,13 @@
 <!--
  * @Author: your name
  * @Date: 2025-02-13 11:04:01
- * @LastEditTime: 2025-02-13 11:06:39
+ * @LastEditTime: 2025-02-19 10:13:21
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/YawErrorDensityChart.vue
 -->
 <template>
-  <div :ref="`plotlyChart-${index}`" style="width: 100%; height: 400px"></div>
+  <div :ref="`plotlyChart-${index}`" style="width: 100%; height: 450px"></div>
 </template>
 
 <script>

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

@@ -65,50 +65,7 @@ export default {
       colorSchemes: [...colorSchemesLine],
       loading: false,
       isError: false,
-      colors: [
-        "#636EFA",
-        "#EF553B",
-        "#00CC96",
-        "#AB63FA",
-        "#FFA15A",
-        "#19D3F3",
-        "#FF6692",
-        "#B6E880",
-        "#FF97FF",
-        "#FECB52",
-        "#636EFB",
-        "#EF553C",
-        "#00CC97",
-        "#AB63FB",
-        "#FFA15B",
-        "#19D3F4",
-        "#FF6693",
-        "#B6E881",
-        "#FF97FE",
-        "#FECB51",
-        "#1F77B4",
-        "#FF7F0E",
-        "#2CA02C",
-        "#D62728",
-        "#9467BD",
-        "#8C564B",
-        "#E377C2",
-        "#7F7F7F",
-        "#BCBD22",
-        "#17BECF",
-        "#1A55F2",
-        "#FF5733",
-        "#33FF57",
-        "#3375FF",
-        "#FF33A6",
-        "#57FF33",
-        "#3380FF",
-        "#FF8033",
-        "#57FF80",
-        "#8033FF",
-        "#FF3380",
-        "#FFD733",
-      ],
+      colors: [...colorSchemesLine[0].colors],
     };
   },
   mounted() {

+ 19 - 14
src/views/performance/components/chartsCom/powerMarkers2DCharts.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2024-09-11 14:32:12
- * @LastEditTime: 2025-02-17 16:55:46
+ * @LastEditTime: 2025-02-20 16:03:24
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/powerMarkers2DCharts.vue
@@ -138,7 +138,10 @@ export default {
         )[0]; // 线数据
 
       // 提取唯一时间标签,并计算 tickvals 和 ticktext
-      const uniqueTimeLabels = [...new Set(data.colorbar)]; // 从 colorbar 中提取唯一的时间标签
+      const uniqueTimeLabels = data.colorbar
+        ? [...new Set(data.colorbar)]
+        : [...new Set(data.color)]; // 从 colorbar 中提取唯一的时间标签
+      // console.log(data.colorbar, "data.colorbar 1");
       const tickvals = uniqueTimeLabels.map((label, index) => index + 1); // 根据时间标签生成 tickvals
       const ticktext = uniqueTimeLabels.map((dateStr) => {
         const date = new Date(dateStr);
@@ -154,7 +157,6 @@ export default {
       // 获取 yData 的最小值和最大值来做比例值的计算
       const minValue = Math.min(...tickvals);
       const maxValue = Math.max(...tickvals);
-      console.log(tickvals, ticktext, this.color1, "tickvals");
       // 计算比例值
       const colors = ticktext.map((item, ind) => {
         // 计算比例值(可以根据需要调整映射的数据范围)
@@ -164,9 +166,15 @@ export default {
           this.color1[ind], // 对应的颜色
         ];
       });
-      console.log(colors, "colors");
+
       // 将时间字符串映射为数字
-      const colorValues = data.colorbar.map((date, index) => timeMapping[date]);
+      let colorValues = [];
+      // data.colorbar.map((date, index) => timeMapping[date]);
+      if (data.colorbar) {
+        colorValues = data.colorbar.map((date, index) => timeMapping[date]);
+      } else {
+        colorValues = data.color.map((date, index) => timeMapping[date]);
+      }
 
       let scatterTrace = {}; // 用于存放散点图的 trace
       let lineTrace = {}; // 用于存放折线图的 trace
@@ -186,11 +194,7 @@ export default {
           marker: {
             color: colorValues, // 使用时间数据来映射颜色
             colorscale: this.color1
-              ? [
-                  ...colors,
-                  // [0, this.color1[0]], // 颜色从 this.color1 开始
-                  // [1, this.color1[this.color1.length - 1]], // 结束颜色为其他颜色
-                ]
+              ? [...colors]
               : [
                   [0, "#F9FDD2"],
                   [0.15, "#E9F6BD"],
@@ -211,10 +215,12 @@ export default {
             size: new Array(data.xData.length).fill(this.pointSize), // 点的大小
           },
           hovertemplate:
-            "风速: %{x}(m/s)<br>" +
-            "有功功率: %{y}(kw)<br>" +
+            `${this.chartData.xaixs}:` +
+            ` %{x} <br> ` +
+            `${this.chartData.yaixs}:` +
+            "%{y} <br>" +
             `时间: %{customdata}<extra></extra>`, // 在 hover 中显示格式化后的时间
-          customdata: data.colorbar, // 将格式化后的时间存入 customdata
+          customdata: data.colorbar || data.color, // 将格式化后的时间存入 customdata
         };
       }
       if (lineData) {
@@ -421,7 +427,6 @@ export default {
     },
     updateChartColor(color) {
       // 更新图表颜色
-      console.log(color, "this.color1");
       // this.color1 = color;
       this.drawChart();
     },

+ 5 - 19
src/views/performance/components/chartsCom/yawErrorLine.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-22 09:42:59
- * @LastEditTime: 2025-02-18 16:08:23
+ * @LastEditTime: 2025-02-19 10:04:48
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/chartsCom/yawErrorLine.vue
@@ -51,7 +51,7 @@ import { nextTick } from "vue"; // 导入 nextTick
 import Plotly from "plotly.js-dist";
 import axios from "axios";
 import { myMixin } from "@/mixins/chartRequestMixin"; // 假设你需要的 mixin
-import { colorSchemesLine } from "@/views/overview/js/colors";
+import { colorSchemes } from "@/views/overview/js/colors";
 export default {
   props: {
     fileAddr: {
@@ -72,24 +72,10 @@ export default {
       chartType: "line", // 默认图表类型是折线图
       color1: [], // 默认颜色
       // 配色方案列表(每个方案是一个颜色数组)
-      colorSchemes: [...colorSchemesLine],
+      colorSchemes: [...colorSchemes],
       loading: false,
       isError: false,
-      colors: [
-        "#DFEDC1",
-        "#DBEEBC",
-        "#A8D7BE",
-        "#8ECAC1",
-        "#77BDC2",
-        "#64ADC2",
-        "#559ABE",
-        "#4884B7",
-        "#406DAB",
-        "#3856A0",
-        "#314291",
-        "#28357A",
-        "#1A285E",
-      ],
+      colors: [...colorSchemes[0].colors],
     };
   },
   mounted() {
@@ -135,7 +121,7 @@ export default {
           const chartConfig = {
             x: turbine.xData, // X 数据
             y: turbine.yData, // Y 数据
-            name: turbine.engineName, // 使用机组名称
+            name: turbine.legend, // 使用机组名称
             line: {
               color:
                 this.color1.length > 0

+ 8 - 2
src/views/system/roleMag/components/dataAuth.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2024-06-11 09:36:36
- * @LastEditTime: 2024-07-09 15:38:47
+ * @LastEditTime: 2025-02-20 16:30:44
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /dashengmag/performance-test/src/views/system/roleMag/components/dataAuth.vue
@@ -87,4 +87,10 @@ export default {
 };
 </script>
 
-<style scoped lang="scss"></style>
+<style scoped lang="scss">
+.el-tree {
+  height: 300px;
+  overflow: hidden;
+  overflow-y: auto;
+}
+</style>

+ 7 - 1
src/views/system/roleMag/components/menuTree.vue

@@ -73,4 +73,10 @@ export default {
 };
 </script>
 
-<style scoped lang="scss"></style>
+<style scoped lang="scss">
+.el-tree {
+  height: 300px;
+  overflow: hidden;
+  overflow-y: auto;
+}
+</style>