Browse Source

修分析图表

liujiejie 6 months ago
parent
commit
efc875aed3
42 changed files with 473 additions and 225 deletions
  1. BIN
      dist.zip
  2. BIN
      downLoadServer.zip
  3. 1 2
      downLoadServer/.env
  4. 0 0
      downLoadServer/node
  5. 1 1
      downLoadServer/package.json
  6. 4 3
      downLoadServer/src/server/server.js
  7. 6 1
      downLoadServer/src/server/utils/chartsCom/3DDrawingChart.js
  8. 1 0
      downLoadServer/src/server/utils/chartsCom/BarChart.js
  9. 1 0
      downLoadServer/src/server/utils/chartsCom/BoxLineCharts.js
  10. 1 0
      downLoadServer/src/server/utils/chartsCom/ColorbarInitTwoDmarkersChart.js
  11. 1 0
      downLoadServer/src/server/utils/chartsCom/FaultAll.js
  12. 1 0
      downLoadServer/src/server/utils/chartsCom/FaultUnit.js
  13. 1 0
      downLoadServer/src/server/utils/chartsCom/GeneratorTemperature.js
  14. 1 0
      downLoadServer/src/server/utils/chartsCom/HeatmapCharts.js
  15. 1 0
      downLoadServer/src/server/utils/chartsCom/PlotlyCharts.js
  16. 1 0
      downLoadServer/src/server/utils/chartsCom/PlotlyChartsFen.js
  17. 6 1
      downLoadServer/src/server/utils/chartsCom/Time3DChart.js
  18. 1 0
      downLoadServer/src/server/utils/chartsCom/TwoDMarkersChart.js
  19. 1 0
      downLoadServer/src/server/utils/chartsCom/TwoDMarkersChart1.js
  20. 1 0
      downLoadServer/src/server/utils/chartsCom/WindRoseChart.js
  21. 1 0
      downLoadServer/src/server/utils/chartsCom/YewErrorBarChart.js
  22. 1 0
      downLoadServer/src/server/utils/chartsCom/lineAndChildLine.js
  23. 1 0
      downLoadServer/src/server/utils/chartsCom/lineChartsFen.js
  24. 1 0
      downLoadServer/src/server/utils/chartsCom/powerMarkers2DCharts.js
  25. 1 0
      downLoadServer/src/server/utils/chartsCom/yawErrorBarSum.js
  26. 1 0
      downLoadServer/src/server/utils/chartsCom/yawErrorLine.js
  27. 0 1
      src/components/map/index.vue
  28. 3 2
      src/store/themes.js
  29. 6 2
      src/views/overview/components/fault_all/index.vue
  30. 8 3
      src/views/overview/components/fault_unit/index.vue
  31. 81 77
      src/views/overview/components/power_curve/index.vue
  32. 3 2
      src/views/overview/components/power_scatter_2D/index.vue
  33. 6 2
      src/views/overview/components/production_indicator_unit/index.vue
  34. 17 17
      src/views/overview/components/temperature_environment/index.vue
  35. 8 3
      src/views/overview/components/temperature_large_components_tem_deviation/index.vue
  36. 2 16
      src/views/overview/components/wind_speed_frequency/index.vue
  37. 61 56
      src/views/overview/components/yaw_error/index.vue
  38. 4 0
      src/views/performance/components/chartsCom/3DDrawingChart.vue
  39. 226 29
      src/views/performance/components/chartsCom/FaultUnit.vue
  40. 4 0
      src/views/performance/components/chartsCom/Time3DChart.vue
  41. 3 2
      src/views/performance/components/chartsCom/lineAndChildLine.vue
  42. 5 5
      vue.config.js

BIN
dist.zip


BIN
downLoadServer.zip


+ 1 - 2
downLoadServer/.env

@@ -1,10 +1,9 @@
-PLOTLY_USERNAME=your-username
-PLOTLY_API_KEY=your-api-key 
 API_BASE_URL=http://127.0.0.1:3000
 MINIO_ENDPOINT=192.168.50.233
 MINIO_PORT=6900
 MINIO_ACCESS_KEY=haH1vePq7unSp4TG1One
 MINIO_SECRET_KEY=idxO5SAjboUYERpDICgHgBoHX7bcYv355lMQANt6
+CHROME_PATH=/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
 #   nginx 配置 minio
 #   env MINIO_ENDPOINT=192.168.50.233;
 #   env MINIO_PORT=6900;

+ 0 - 0
downLoadServer/node


+ 1 - 1
downLoadServer/package.json

@@ -32,6 +32,6 @@
     "plotly.js-dist": "^2.34.0",
     "plotly.js-dist-min": "^2.34.0",
     "plotly.js-with-locales": "^1.31.2",
-    "puppeteer": "^22.6.0"
+    "puppeteer": "^19.11.1"
   }
 }

+ 4 - 3
downLoadServer/src/server/server.js

@@ -1,3 +1,6 @@
+import dotenv from "dotenv";
+// 加载 .env 文件中的环境变量
+dotenv.config();
 import express from "express";
 import { serverConfig } from "./config.js";
 import { logger } from "./middleware/logger.js";
@@ -6,7 +9,6 @@ import exampleRoutes from "./routes/exampleRoutes.js";
 import chartRoutes from "./routes/chartRoutes.js";
 import path from "path";
 import { fileURLToPath } from "url";
-import dotenv from "dotenv";
 // 引入 cors 模块
 import cors from "cors";
 
@@ -42,6 +44,5 @@ export const startServer = () => {
     );
   });
 };
-// 加载 .env 文件中的环境变量
-dotenv.config();
+
 export default app;

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

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2025-04-14 16:09:13
- * @LastEditTime: 2025-05-29 15:30:40
+ * @LastEditTime: 2025-06-10 14:10:40
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /downLoadServer/src/server/utils/chartsCom/3DDrawingChart.js
@@ -37,6 +37,7 @@ export const generate3DDrawingChart = async (data, bucketName, objectName) => {
     // 创建浏览器实例
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
 
@@ -154,6 +155,10 @@ export const generate3DDrawingChart = async (data, bucketName, objectName) => {
         staticPlot: false,
         showlegend: true,
         legend: {
+          itemsizing: "constant", // ✅ 统一图例 marker 大小
+          font: {
+            size: 12,
+          },
           marker: {
             size: 10, // 图例中点的大小
           },

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

@@ -33,6 +33,7 @@ export const generateBarChart = async (data, bucketName, objectName) => {
     // 创建浏览器实例
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
 

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

@@ -43,6 +43,7 @@ export const generateBoxLineChart = async (data, bucketName, objectName) => {
     // 创建浏览器实例
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
 

+ 1 - 0
downLoadServer/src/server/utils/chartsCom/ColorbarInitTwoDmarkersChart.js

@@ -41,6 +41,7 @@ export const generateColorbarInitTwoDmarkersChart = async (
     // 创建浏览器实例
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
 

+ 1 - 0
downLoadServer/src/server/utils/chartsCom/FaultAll.js

@@ -118,6 +118,7 @@ export const getFaultAllCharts = async (
     // 使用 Puppeteer 生成图表的截图
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
     try {

+ 1 - 0
downLoadServer/src/server/utils/chartsCom/FaultUnit.js

@@ -118,6 +118,7 @@ export const getFaultUnitCharts = async (
     // 使用 Puppeteer 生成图表的截图
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
     try {

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

@@ -48,6 +48,7 @@ export const generateGeneratorTemperature = async (
     // 创建浏览器实例
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
 

+ 1 - 0
downLoadServer/src/server/utils/chartsCom/HeatmapCharts.js

@@ -39,6 +39,7 @@ export const generateHeatmapChart = async (data, bucketName, objectName) => {
     // 创建浏览器实例
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
 

+ 1 - 0
downLoadServer/src/server/utils/chartsCom/PlotlyCharts.js

@@ -102,6 +102,7 @@ export const generatePlotlyCharts = async (
 
     browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
 

+ 1 - 0
downLoadServer/src/server/utils/chartsCom/PlotlyChartsFen.js

@@ -46,6 +46,7 @@ export const generatePlotlyChartsFen = async (
     // 创建浏览器实例
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
 

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

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2025-04-14 17:49:33
- * @LastEditTime: 2025-05-21 15:11:06
+ * @LastEditTime: 2025-06-10 14:10:23
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/downLoadServer/src/server/utils/chartsCom/Time3DChart.js
@@ -41,6 +41,7 @@ export const generateTime3DChart = async (data, bucketName, objectName) => {
     // 创建浏览器实例
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: [
         "--no-sandbox",
         "--disable-setuid-sandbox",
@@ -167,6 +168,10 @@ export const generateTime3DChart = async (data, bucketName, objectName) => {
         staticPlot: false,
         showlegend: true,
         legend: {
+          itemsizing: "constant", // ✅ 统一图例 marker 大小
+          font: {
+            size: 12,
+          },
           marker: {
             size: 10, // 图例中点的大小
           },

+ 1 - 0
downLoadServer/src/server/utils/chartsCom/TwoDMarkersChart.js

@@ -41,6 +41,7 @@ export const generateTwoDMarkersChart = async (
     // 创建浏览器实例
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
 

+ 1 - 0
downLoadServer/src/server/utils/chartsCom/TwoDMarkersChart1.js

@@ -32,6 +32,7 @@ export const generateTwoDMarkersChart1 = async (
     // 创建浏览器实例
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
 

+ 1 - 0
downLoadServer/src/server/utils/chartsCom/WindRoseChart.js

@@ -124,6 +124,7 @@ export const getWindRoseChart = async (
     // 使用 Puppeteer 生成图表的截图
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
     try {

+ 1 - 0
downLoadServer/src/server/utils/chartsCom/YewErrorBarChart.js

@@ -119,6 +119,7 @@ export const getYewErrorBarChart = async (
     // 使用 Puppeteer 生成图表的截图
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
     try {

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

@@ -120,6 +120,7 @@ export const generateLineAndChildLine = async (
     // 创建浏览器实例
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
 

+ 1 - 0
downLoadServer/src/server/utils/chartsCom/lineChartsFen.js

@@ -38,6 +38,7 @@ export const generateLineChart = async (
     // 创建浏览器实例
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
 

+ 1 - 0
downLoadServer/src/server/utils/chartsCom/powerMarkers2DCharts.js

@@ -41,6 +41,7 @@ export const generatepowerMarkers2DCharts = async (
     // 创建浏览器实例
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
 

+ 1 - 0
downLoadServer/src/server/utils/chartsCom/yawErrorBarSum.js

@@ -105,6 +105,7 @@ export const getYawErrorBarSumCharts = async (
     // 使用 Puppeteer 生成图表的截图
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
     try {

+ 1 - 0
downLoadServer/src/server/utils/chartsCom/yawErrorLine.js

@@ -115,6 +115,7 @@ export const generateYawErrorLine = async (
     // 使用 Puppeteer 生成图表的截图
     const browser = await puppeteer.launch({
       headless: "new",
+      executablePath: `${process.env.CHROME_PATH}`, // 根据系统改路径
       args: ["--no-sandbox", "--disable-setuid-sandbox"],
     });
 

+ 0 - 1
src/components/map/index.vue

@@ -192,7 +192,6 @@ import icon05 from "../../assets/img/icon05.png";
 import icon06 from "../../assets/img/iconFJ.png";
 import defaultIcon from "../../assets/img/iconFJ.png";
 
-
 // import icon01 from "../../assets/img/icon01.png";
 // import icon02 from "../../assets/img/icon02.png";
 // import icon03 from "../../assets/img/icon03.png";

+ 3 - 2
src/store/themes.js

@@ -3,16 +3,17 @@ import { theme } from "tailwindcss/stubs/defaultConfig.stub";
 /*
  * @Author: your name
  * @Date: 2024-05-27 15:09:27
- * @LastEditTime: 2025-03-18 16:51:12
+ * @LastEditTime: 2025-06-10 10:57:45
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/store/themes.js
  */
+import { colorSchemes } from "@/views/overview/js/colors";
 export default {
   namespaced: true,
   state: {
     theme: localStorage.getItem("theme") || "green",
-    themeColor: [],
+    themeColor: [...colorSchemes[0].colors],
   },
   mutations: {
     setTheme(state, theme) {

+ 6 - 2
src/views/overview/components/fault_all/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-13 13:56:55
- * @LastEditTime: 2025-05-16 15:08:41
+ * @LastEditTime: 2025-06-10 11:42:55
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/fault_all/index.vue
@@ -33,7 +33,7 @@
           对全场机组各类故障的次数和时长进行统计
         </div>
       </el-alert>
-      <div v-if="zongFaultCsvData.length > 0">
+      <div class="chartsBox" v-if="zongFaultCsvData.length > 0">
         <FaultAll
           :faultTypes="
             zongFaultCsvData &&
@@ -444,6 +444,10 @@ export default {
     overflow: auto;
     padding: 20px;
     flex: 1;
+    .chartsBox {
+      height: 100%;
+      overflow-y: scroll;
+    }
     /* 滚动条整体样式 */
     &::-webkit-scrollbar {
       width: 6px; /* 滚动条宽度 */

+ 8 - 3
src/views/overview/components/fault_unit/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-13 13:56:12
- * @LastEditTime: 2025-03-14 18:57:21
+ * @LastEditTime: 2025-06-10 16:06:05
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/fault_unit/index.vue
@@ -32,7 +32,7 @@
           对各个机组故障的总次数和时长进行统计
         </div>
       </el-alert>
-      <div v-if="fenFaultCsvData.length > 0">
+      <div class="chartsBox" v-if="fenFaultCsvData.length > 0">
         <FaultUnit
           :faultTypes="
             fenFaultCsvData &&
@@ -54,12 +54,13 @@
         <template v-for="itemCsv in fenFaultCsvData">
           <el-table
             max-height="500"
+            :default-sort="{ prop: 'wind_turbine_name' }"
             :data="filteredFenData(itemCsv)"
             border
             style="width: 100%"
             align="center"
           >
-            <el-table-column prop="wind_turbine_name" label="风机名称">
+            <el-table-column prop="wind_turbine_name" label="风机名称" sortable>
             </el-table-column>
             <el-table-column prop="count" sortable label="故障次数(次)">
             </el-table-column>
@@ -439,6 +440,10 @@ export default {
     overflow: auto;
     padding: 20px;
     flex: 1;
+    .chartsBox {
+      height: 100%;
+      overflow-y: scroll;
+    }
     /* 滚动条整体样式 */
     &::-webkit-scrollbar {
       width: 6px; /* 滚动条宽度 */

+ 81 - 77
src/views/overview/components/power_curve/index.vue

@@ -24,25 +24,26 @@
         </div>
       </el-alert>
       <!-- 总图 -->
-      <div class="titleCharts">分析总图 :</div>
-      <div v-if="graphFilesData && graphFilesData.length > 0">
-        <template
-          v-for="(powerCurveDom, ind) in generalFilesData"
-          :style="{ marginTop: '50px' }"
-        >
-          <el-row class="charts">
-            <el-col :span="24" :key="ind + 'leftTable'">
-              <div class="leftTable">
-                <el-button
-                  size="small"
-                  @click="
-                    downLoadCsv(
-                      powerCurveDom && powerCurveDom.powerCurveTableData
-                    )
-                  "
-                  >导出功率曲线数据</el-button
-                >
-                <!-- <el-table
+      <div class="chartsBox">
+        <div class="titleCharts">分析总图 :</div>
+        <div v-if="graphFilesData && graphFilesData.length > 0">
+          <template
+            v-for="(powerCurveDom, ind) in generalFilesData"
+            :style="{ marginTop: '50px' }"
+          >
+            <el-row class="charts">
+              <el-col :span="24" :key="ind + 'leftTable'">
+                <div class="leftTable">
+                  <el-button
+                    size="small"
+                    @click="
+                      downLoadCsv(
+                        powerCurveDom && powerCurveDom.powerCurveTableData
+                      )
+                    "
+                    >导出功率曲线数据</el-button
+                  >
+                  <!-- <el-table
                   :data="powerCurveDom.powerCurveTableData"
                   border
                   max-height="500"
@@ -63,54 +64,54 @@
                   >
                   </el-table-column>
                 </el-table> -->
-              </div>
-            </el-col>
-            <el-col :span="24" :key="ind + 'rightTable'">
-              <div class="rightTable">
-                <PlotlyCharts
-                  :setUpImgData="setUpImgData"
-                  :lineMarkerData="powerCurveDom.chartsData"
-                  :comType="'generalDrawing'"
-                  :inds="`${new Date().getTime()}` + `zong${ind}`"
-                ></PlotlyCharts>
-              </div>
-            </el-col>
-          </el-row>
-        </template>
-      </div>
-      <el-empty v-else description="暂无总图"></el-empty>
-      <!-- 分图 -->
-      <div class="titleCharts">分析分图 :</div>
-      <template v-if="graphFilesData && graphFilesData.length > 0">
-        <div
-          class="graphFilesData"
-          v-for="(powerCurveDom, ind) in graphFilesData"
-        >
-          <el-row class="charts">
-            <el-col
-              v-if="
-                powerCurveDom && powerCurveDom.powerCurveTableData.length > 0
-              "
-              :key="ind + 'powerCurveDom' + 'rightTable'"
-              :span="24"
-            >
-              <div class="rightTable">
-                <PlotlyCharts
-                  :setUpImgData="setUpImgData"
-                  :lineMarkerData="powerCurveDom.chartsData"
-                  :comType="'graph'"
-                  :inds="`${new Date().getTime()}` + `fen${ind}`"
-                ></PlotlyCharts>
-              </div>
-            </el-col>
-            <el-col
-              :span="24"
-              :key="ind + 'powerCurveDom' + 'leftTable'"
-              v-if="
-                powerCurveDom && powerCurveDom.powerCurveTableData.length > 0
-              "
-            >
-              <!-- <div class="leftTable">
+                </div>
+              </el-col>
+              <el-col :span="24" :key="ind + 'rightTable'">
+                <div class="rightTable">
+                  <PlotlyCharts
+                    :setUpImgData="setUpImgData"
+                    :lineMarkerData="powerCurveDom.chartsData"
+                    :comType="'generalDrawing'"
+                    :inds="`${new Date().getTime()}` + `zong${ind}`"
+                  ></PlotlyCharts>
+                </div>
+              </el-col>
+            </el-row>
+          </template>
+        </div>
+        <el-empty v-else description="暂无总图"></el-empty>
+        <!-- 分图 -->
+        <div class="titleCharts">分析分图 :</div>
+        <template v-if="graphFilesData && graphFilesData.length > 0">
+          <div
+            class="graphFilesData"
+            v-for="(powerCurveDom, ind) in graphFilesData"
+          >
+            <el-row class="charts">
+              <el-col
+                v-if="
+                  powerCurveDom && powerCurveDom.powerCurveTableData.length > 0
+                "
+                :key="ind + 'powerCurveDom' + 'rightTable'"
+                :span="24"
+              >
+                <div class="rightTable">
+                  <PlotlyCharts
+                    :setUpImgData="setUpImgData"
+                    :lineMarkerData="powerCurveDom.chartsData"
+                    :comType="'graph'"
+                    :inds="`${new Date().getTime()}` + `fen${ind}`"
+                  ></PlotlyCharts>
+                </div>
+              </el-col>
+              <el-col
+                :span="24"
+                :key="ind + 'powerCurveDom' + 'leftTable'"
+                v-if="
+                  powerCurveDom && powerCurveDom.powerCurveTableData.length > 0
+                "
+              >
+                <!-- <div class="leftTable">
                 <el-table
                   :data="powerCurveDom && powerCurveDom.powerCurveTableData"
                   border
@@ -129,16 +130,16 @@
                   </el-table-column>
                 </el-table>
               </div> -->
-            </el-col>
-
-            <el-col v-else :span="24">
-              <el-empty description="暂无分图"></el-empty>
-            </el-col>
-          </el-row>
-        </div>
-      </template>
-      <el-empty v-else description="暂无分图"></el-empty>
+              </el-col>
 
+              <el-col v-else :span="24">
+                <el-empty description="暂无分图"></el-empty>
+              </el-col>
+            </el-row>
+          </div>
+        </template>
+        <el-empty v-else description="暂无分图"></el-empty>
+      </div>
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"
@@ -547,7 +548,10 @@ export default {
     overflow: auto;
     padding: 20px;
     flex: 1;
-
+    .chartsBox {
+      height: 100%;
+      overflow-y: scroll;
+    }
     /* 滚动条整体样式 */
     &::-webkit-scrollbar {
       width: 6px; /* 滚动条宽度 */

+ 3 - 2
src/views/overview/components/power_scatter_2D/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-09 18:10:35
- * @LastEditTime: 2025-04-11 16:50:32
+ * @LastEditTime: 2025-06-10 11:06:57
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/power_scatter_2D/index.vue
@@ -39,6 +39,7 @@
         keyField="fieldEngineCode"
         :itemSize="600"
         v-slot="{ item, index }"
+        v-if="diagramRelationsDatas && diagramRelationsDatas.length > 0"
       >
         <TwoDMarkersChart1
           :setUpImgData="setUpImgData"
@@ -48,7 +49,7 @@
           :fileAddr="item.fileAddr"
         ></TwoDMarkersChart1>
       </VirtualList>
-
+      <el-empty description="暂无分析记录" v-else></el-empty>
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"

+ 6 - 2
src/views/overview/components/production_indicator_unit/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-13 13:44:56
- * @LastEditTime: 2025-04-11 16:51:20
+ * @LastEditTime: 2025-06-10 11:25:46
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/production_indicator_unit/index.vue
@@ -31,7 +31,7 @@
           对风场及机组各项运行指标进行统计,包括应发电量、实发电量、风机能量利用率,有效风速小时数,利用小时等指标。
         </div>
       </el-alert>
-      <div v-if="productionIndicatorCsvData.length > 0">
+      <div v-if="productionIndicatorCsvData.length > 0" class="chartsBox">
         <template v-for="(itemCsv, itemind) in productionIndicatorCsvData">
           <el-table
             :key="'table' + itemind"
@@ -543,6 +543,10 @@ export default {
     overflow: auto;
     padding: 20px;
     flex: 1;
+    .chartsBox {
+      height: 100%;
+      overflow-y: scroll;
+    }
     /* 滚动条整体样式 */
     &::-webkit-scrollbar {
       width: 6px; /* 滚动条宽度 */

+ 17 - 17
src/views/overview/components/temperature_environment/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:09:46
- * @LastEditTime: 2025-06-06 16:31:24
+ * @LastEditTime: 2025-06-10 11:41:38
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_environment/index.vue
@@ -39,22 +39,18 @@
         分析总图 :
       </div>
       <el-empty description="暂无分图分析记录" v-else></el-empty>
-      <VirtualList
-        :list="[...generalFilesDatas]"
-        keyField="fileAddr"
-        :itemSize="500"
-        v-slot="{ item, index }"
-      >
-        <BarChart
-          :setUpImgData="setUpImgData"
-          :key="`${new Date().getTime()}` + item.batchCode + index"
-          :inds="`${new Date().getTime()}` + index + 'barChart'"
-          :ref="`${new Date().getTime()}` + item.batchCode"
-          :fileAddr="item.fileAddr"
-        >
-        </BarChart>
-      </VirtualList>
-
+      <div class="chartsBox">
+        <div v-for="(item, index) in generalFilesDatas">
+          <BarChart
+            :setUpImgData="setUpImgData"
+            :key="`${new Date().getTime()}` + item.batchCode + index"
+            :inds="`${new Date().getTime()}` + index + 'barChart'"
+            :ref="`${new Date().getTime()}` + item.batchCode"
+            :fileAddr="item.fileAddr"
+          >
+          </BarChart>
+        </div>
+      </div>
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"
@@ -337,6 +333,10 @@ export default {
     overflow: auto;
     padding: 20px;
     flex: 1;
+    .chartsBox {
+      height: 100%;
+      overflow-y: scroll;
+    }
     /* 滚动条整体样式 */
     &::-webkit-scrollbar {
       width: 6px; /* 滚动条宽度 */

+ 8 - 3
src/views/overview/components/temperature_large_components_tem_deviation/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-21 10:03:27
- * @LastEditTime: 2025-02-26 11:23:18
+ * @LastEditTime: 2025-06-10 11:37:14
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/temperature_large_components_tem_deviation/index.vue
@@ -51,7 +51,12 @@
         分析分图 :
       </div>
       <el-empty description="暂无分图分析记录" v-else></el-empty>
-      <div v-for="(item, index) in diagramRelationsDatas">
+      <VirtualList
+        :list="[...diagramRelationsDatas]"
+        keyField="fileAddr"
+        :itemSize="500"
+        v-slot="{ item, index }"
+      >
         <GeneratorTemperature
           :setUpImgData="setUpImgData"
           :key="item.fieldEngineCode + index"
@@ -61,7 +66,7 @@
           :fileAddr="item.fileAddr"
         >
         </GeneratorTemperature>
-      </div>
+      </VirtualList>
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"

+ 2 - 16
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-05-13 09:44:37
+ * @LastEditTime: 2025-06-10 11:06:34
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/wind_speed_frequency/index.vue
@@ -47,21 +47,7 @@
           :fileAddr="item.fileAddr"
         ></BarChart>
       </VirtualList>
-      <!-- <div
-        class="charts"
-        v-if="diagramRelationsDatas && diagramRelationsDatas.length > 0"
-      >
-        <template v-for="(itemChart, indChart) in diagramRelationsDatas">
-          <BarChart
-            :key="itemChart.fieldEngineCode + indChart"
-            :inds="indChart"
-            :ref="itemChart.fieldEngineCode"
-            :fileAddr="itemChart.fileAddr"
-          ></BarChart>
-        </template>
-      </div>
-     
-      -->
+
       <el-empty description="暂无分析记录" v-else></el-empty>
       <el-dialog
         v-if="isShowDescription"

+ 61 - 56
src/views/overview/components/yaw_error/index.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2025-01-10 09:24:14
- * @LastEditTime: 2025-03-21 14:42:04
+ * @LastEditTime: 2025-06-10 11:31:12
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/overview/components/yaw_error/index.vue
@@ -32,63 +32,64 @@
           静态偏航误差过大,导致风轮不能精准对风,会造成发电损失,例如10°的静态偏航误差导致2.6%的发电损失,且风速较低的风场往往出现更多的发电损失;此外静态偏航误差过大,不仅会影响机组的功率输出,还会引起叶片气动弹性波动,增加机组的额外载荷。因此,定期检测机组的静态偏航误差,并及时校正,对于改善机组发电性能和机组运行安全都有很重要的意义。
         </div>
       </el-alert>
-
-      <div class="titleCharts" v-if="zongFaultCsvData.length > 0">
-        分析总图 :
-      </div>
-      <div v-if="zongFaultCsvData.length > 0">
-        <yawErrorBarChart
-          :zongFaultCsvData="zongFaultCsvData"
-          :index="`${new Date().getTime()}`"
-        ></yawErrorBarChart>
-        <yawErrorBarSum
-          :zongFaultCsvData="zongFaultCsvData"
-          :index="`${new Date().getTime()}`"
-        ></yawErrorBarSum>
-        <template v-for="(itemCsv, indCsv) in zongFaultCsvData">
-          <el-table
-            :key="indCsv + 'indCsv'"
-            :data="filteredData(itemCsv)"
-            border
-            style="width: 100%"
-            max-height="500"
-            align="center"
-          >
-            <el-table-column prop="engine_name" label="风机名称">
-            </el-table-column>
-            <el-table-column prop="yaw_error1" label="静态偏航误差值(度)">
-            </el-table-column>
-            <el-table-column prop="powerloss" label="电量损失(%)">
-            </el-table-column>
-            <el-table-column align="right">
-              <template slot="header" slot-scope="scope">
-                <el-input
-                  v-model="search"
-                  size="mini"
-                  placeholder="输入风机名称关键字搜索"
-                />
-              </template>
-            </el-table-column>
-          </el-table>
-        </template>
-      </div>
-      <div class="titleCharts">分析分图 :</div>
-      <div v-if="fenFaultCsvData.length > 0">
-        <div v-for="(item, index) in fenFaultCsvData">
-          <yawErrorLine
-            :setUpImgData="setUpImgData"
-            :key="item.fieldEngineCode + index"
-            :index="`${new Date().getTime()}` + index"
-            :ref="item.fieldEngineCode"
-            :fileAddr="item.fileAddr"
-          >
-          </yawErrorLine>
+      <div class="chartsBox">
+        <div class="titleCharts" v-if="zongFaultCsvData.length > 0">
+          分析总图 :
+        </div>
+        <div v-if="zongFaultCsvData.length > 0">
+          <yawErrorBarChart
+            :zongFaultCsvData="zongFaultCsvData"
+            :index="`${new Date().getTime()}`"
+          ></yawErrorBarChart>
+          <yawErrorBarSum
+            :zongFaultCsvData="zongFaultCsvData"
+            :index="`${new Date().getTime()}`"
+          ></yawErrorBarSum>
+          <template v-for="(itemCsv, indCsv) in zongFaultCsvData">
+            <el-table
+              :key="indCsv + 'indCsv'"
+              :data="filteredData(itemCsv)"
+              border
+              style="width: 100%"
+              max-height="500"
+              align="center"
+            >
+              <el-table-column prop="engine_name" label="风机名称">
+              </el-table-column>
+              <el-table-column prop="yaw_error1" label="静态偏航误差值(度)">
+              </el-table-column>
+              <el-table-column prop="powerloss" label="电量损失(%)">
+              </el-table-column>
+              <el-table-column align="right">
+                <template slot="header" slot-scope="scope">
+                  <el-input
+                    v-model="search"
+                    size="mini"
+                    placeholder="输入风机名称关键字搜索"
+                  />
+                </template>
+              </el-table-column>
+            </el-table>
+          </template>
         </div>
+        <div class="titleCharts">分析分图 :</div>
+        <div v-if="fenFaultCsvData.length > 0">
+          <div v-for="(item, index) in fenFaultCsvData">
+            <yawErrorLine
+              :setUpImgData="setUpImgData"
+              :key="item.fieldEngineCode + index"
+              :index="`${new Date().getTime()}` + index"
+              :ref="item.fieldEngineCode"
+              :fileAddr="item.fileAddr"
+            >
+            </yawErrorLine>
+          </div>
+        </div>
+        <el-empty
+          description="暂无分析记录"
+          v-if="zongFaultCsvData.length === 0 && fenFaultCsvData.length === 0"
+        ></el-empty>
       </div>
-      <el-empty
-        description="暂无分析记录"
-        v-if="zongFaultCsvData.length === 0 && fenFaultCsvData.length === 0"
-      ></el-empty>
       <el-dialog
         v-if="isShowDescription"
         title="添加评论"
@@ -470,6 +471,10 @@ export default {
     overflow: auto;
     padding: 20px;
     flex: 1;
+    .chartsBox {
+      height: 100%;
+      overflow-y: scroll;
+    }
     /* 滚动条整体样式 */
     &::-webkit-scrollbar {
       width: 6px; /* 滚动条宽度 */

+ 4 - 0
src/views/performance/components/chartsCom/3DDrawingChart.vue

@@ -319,6 +319,10 @@ export default {
         staticPlot: false,
         showlegend: true,
         legend: {
+          itemsizing: "constant", // ✅ 统一图例 marker 大小
+          font: {
+            size: 12,
+          },
           marker: {
             size: 10, // 图例中点的大小
           },

+ 226 - 29
src/views/performance/components/chartsCom/FaultUnit.vue

@@ -1,4 +1,4 @@
-<template>
+<!-- <template>
   <div>
     <div ref="chart" style="width: 100%; height: 400px"></div>
   </div>
@@ -50,16 +50,16 @@ export default {
         hovertemplate: `机组:` + ` %{x} <br> ` + `故障次数:` + "%{y} 次<br>",
       };
 
-      // 故障时长的散点图数据(右侧 Y 轴)
-      const scatterFaultDurations = {
-        x: this.faultTypes.slice(0, 10),
-        y: this.faultDurations.slice(0, 10),
-        mode: "markers", // 散点图
-        marker: { color: "#1A295D", size: 10 }, // 红色散点
-        name: "故障时长",
-        yaxis: "y2", // 使用第二个 Y 轴(右侧)
-        hovertemplate: `机组:` + ` %{x} <br> ` + `故障时长:` + "%{y} 分钟<br>",
-      };
+      // // 故障时长的散点图数据(右侧 Y 轴)
+      // const scatterFaultDurations = {
+      //   x: this.faultTypes.slice(0, 10),
+      //   y: this.faultDurations.slice(0, 10),
+      //   mode: "markers", // 散点图
+      //   marker: { color: "#1A295D", size: 10 }, // 红色散点
+      //   name: "故障时长",
+      //   yaxis: "y2", // 使用第二个 Y 轴(右侧)
+      //   hovertemplate: `机组:` + ` %{x} <br> ` + `故障时长:` + "%{y} 分钟<br>",
+      // };
 
       // 布局配置,设置双 Y 轴
       const layout = {
@@ -94,20 +94,20 @@ export default {
           tickcolor: "rgb(255,255,255)",
           backgroundcolor: "#e5ecf6",
         },
-        yaxis2: {
-          title: "故障时长(秒)",
-          titlefont: { color: "#1A295D" },
-          tickfont: { color: "#1A295D" },
-          showgrid: false, // 隐藏 Y 轴网格线
-          overlaying: "y", // 在第一个 Y 轴上方绘制
-          side: "right", // 右侧的 Y 轴
-          position: 1, // 调整右侧轴的位置
-          showline: true,
+        // yaxis2: {
+        //   title: "故障时长(秒)",
+        //   titlefont: { color: "#1A295D" },
+        //   tickfont: { color: "#1A295D" },
+        //   showgrid: false, // 隐藏 Y 轴网格线
+        //   overlaying: "y", // 在第一个 Y 轴上方绘制
+        //   side: "right", // 右侧的 Y 轴
+        //   position: 1, // 调整右侧轴的位置
+        //   showline: true,
 
-          // tickvals: this.faultTypes.slice(0, 10), // 保证这里是字符串数组
-          // ticktext: this.faultTypes.slice(0, 10), // 确保 ticktext 使用相同的标签
-          linecolor: "#1A295D", // 设置右侧轴线颜色
-        },
+        //   // tickvals: this.faultTypes.slice(0, 10), // 保证这里是字符串数组
+        //   // ticktext: this.faultTypes.slice(0, 10), // 确保 ticktext 使用相同的标签
+        //   linecolor: "#1A295D", // 设置右侧轴线颜色
+        // },
         plot_bgcolor: "#e5ecf6",
         gridcolor: "#fff",
         bgcolor: "#e5ecf6", // 设置背景颜色
@@ -119,11 +119,7 @@ export default {
       };
 
       // 渲染图表
-      Plotly.newPlot(
-        this.$refs.chart,
-        [scatterFaultCounts, scatterFaultDurations],
-        layout
-      );
+      Plotly.newPlot(this.$refs.chart, [scatterFaultCounts], layout);
     },
   },
 };
@@ -131,4 +127,205 @@ export default {
 
 <style scoped>
 /* 你可以根据需要添加样式 */
+</style> -->
+
+<template>
+  <div>
+    <div ref="chart" style="width: 100%; height: 500px"></div>
+  </div>
+</template>
+
+<script>
+import Plotly from "plotly.js-dist";
+
+export default {
+  name: "faultAll",
+  props: {
+    faultTypes: {
+      type: Array,
+      default: () => [],
+    },
+    faultCounts: {
+      type: Array,
+      default: () => [],
+    },
+    faultDurations: {
+      type: Array,
+      default: () => [],
+    },
+  },
+  watch: {
+    faultCounts: {
+      deep: true,
+      handler() {
+        this.renderChart();
+      },
+    },
+  },
+  mounted() {
+    this.renderChart();
+  },
+  methods: {
+    // renderChart() {
+    //   // 步骤 1:归一化 faultCounts 用于 marker.size 显示
+    //   const rawSizes = this.faultCounts;
+    //   const minSize = 8; // 最小圆点大小
+    //   const maxSize = 30; // 最大圆点大小
+
+    //   const sizeRange = maxSize - minSize;
+    //   const minValue = Math.min(...rawSizes);
+    //   const maxValue = Math.max(...rawSizes);
+    //   const normalizedSizes = rawSizes.map((val) => {
+    //     if (maxValue === minValue) return (minSize + maxSize) / 2;
+    //     return ((val - minValue) / (maxValue - minValue)) * sizeRange + minSize;
+    //   });
+    //   console.log("durationHour", this.faultTypes);
+    //   // 步骤 2:生成每个散点(使用归一化后的 size)
+    //   const data = this.faultTypes.map((name, i) => {
+    //     const durationHour = this.faultDurations.map((s) => {
+    //       // console.log(s, "s");
+    //       return (s / 3600).toFixed(2);
+    //     });
+    //     const count = this.faultCounts[i];
+
+    //     return {
+    //       x: [name],
+    //       y: [durationHour[i]],
+    //       mode: "markers",
+    //       type: "scatter",
+    //       name: name,
+    //       marker: {
+    //         size: normalizedSizes[i],
+    //         sizemode: "area",
+    //         sizeref: 1,
+    //         sizemin: 4,
+    //         showscale: false,
+    //       },
+    //       hovertemplate: `机组: ${name}<br>故障时长: ${durationHour[i]} 小时<br>故障次数: ${count} 次<extra></extra>`,
+    //     };
+    //   });
+
+    //   const layout = {
+    //     title: {
+    //       text: "机组故障时长与故障次数分析",
+    //       font: { size: 16, weight: "bold" },
+    //     },
+    //     xaxis: {
+    //       title: "故障机组",
+    //       type: "category",
+    //       tickangle: 30,
+    //       tickfont: { size: 12 },
+    //       gridcolor: "rgb(255,255,255)", // 网格线颜色
+    //       tickcolor: "rgb(255,255,255)",
+    //       backgroundcolor: "#e5ecf6",
+    //       showbackground: true, // 显示背景
+    //     },
+    //     yaxis: {
+    //       title: "故障时长(小时)",
+    //       tickfont: { size: 12 },
+    //       gridcolor: "rgb(255,255,255)", // 网格线颜色
+    //       tickcolor: "rgb(255,255,255)",
+    //       backgroundcolor: "#e5ecf6",
+    //       showbackground: true, // 显示背景
+    //     },
+    //     plot_bgcolor: "#e5ecf6",
+    //     gridcolor: "#fff", // 设置网格线颜色
+    //     margin: { t: 80, b: 120 },
+    //     showlegend: true,
+    //     legendgroup: "same",
+    //     legend: {
+    //       itemsizing: "constant", // ✅ 统一图例 marker 大小
+    //       font: {
+    //         size: 12,
+    //       },
+    //     },
+    //   };
+
+    //   Plotly.newPlot(this.$refs.chart, data, layout);
+    // },
+    renderChart() {
+      // 步骤 1:预处理,将数据打包成对象数组以便排序
+      const combined = this.faultTypes.map((name, i) => ({
+        name,
+        count: this.faultCounts[i],
+        durationHour: (this.faultDurations[i] / 3600).toFixed(2),
+      }));
+
+      // 步骤 2:按 name 字符串排序
+      combined.sort((a, b) => a.name.localeCompare(b.name)); // 按字典序排序
+
+      // 步骤 3:归一化故障次数用于散点大小
+      const rawSizes = combined.map((d) => d.count);
+      const minSize = 8;
+      const maxSize = 30;
+      const sizeRange = maxSize - minSize;
+      const minValue = Math.min(...rawSizes);
+      const maxValue = Math.max(...rawSizes);
+      const normalizedSizes = rawSizes.map((val) => {
+        if (maxValue === minValue) return (minSize + maxSize) / 2;
+        return ((val - minValue) / (maxValue - minValue)) * sizeRange + minSize;
+      });
+
+      // 步骤 4:生成散点图数据
+      const data = combined.map((d, i) => ({
+        x: [d.name],
+        y: [d.durationHour],
+        mode: "markers",
+        type: "scatter",
+        name: d.name,
+        marker: {
+          size: normalizedSizes[i],
+          sizemode: "area",
+          sizeref: 1,
+          sizemin: 4,
+          showscale: false,
+        },
+        hovertemplate: `机组: ${d.name}<br>故障时长: ${d.durationHour} 小时<br>故障次数: ${d.count} 次<extra></extra>`,
+      }));
+
+      // 其他布局配置保持不变
+      const layout = {
+        title: {
+          text: "机组故障时长与故障次数分析",
+          font: { size: 16, weight: "bold" },
+        },
+        xaxis: {
+          title: "故障机组",
+          type: "category",
+          tickangle: 30,
+          tickfont: { size: 12 },
+          gridcolor: "rgb(255,255,255)",
+          tickcolor: "rgb(255,255,255)",
+          backgroundcolor: "#e5ecf6",
+          showbackground: true,
+        },
+        yaxis: {
+          title: "故障时长(小时)",
+          tickfont: { size: 12 },
+          gridcolor: "rgb(255,255,255)",
+          tickcolor: "rgb(255,255,255)",
+          backgroundcolor: "#e5ecf6",
+          showbackground: true,
+        },
+        plot_bgcolor: "#e5ecf6",
+        gridcolor: "#fff",
+        margin: { t: 80, b: 120 },
+        showlegend: true,
+        legendgroup: "same",
+        legend: {
+          itemsizing: "constant",
+          font: {
+            size: 12,
+          },
+        },
+      };
+
+      Plotly.newPlot(this.$refs.chart, data, layout);
+    },
+  },
+};
+</script>
+
+<style scoped>
+/* 可添加样式 */
 </style>

+ 4 - 0
src/views/performance/components/chartsCom/Time3DChart.vue

@@ -315,6 +315,10 @@ export default {
         staticPlot: false,
         showlegend: true,
         legend: {
+          itemsizing: "constant", // ✅ 统一图例 marker 大小
+          font: {
+            size: 12,
+          },
           marker: {
             size: 10,
           },

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

@@ -166,7 +166,9 @@ export default {
               "%{y} <br>",
           };
           if (this.chartData.yaixs === "概率密度函数") {
-            chartConfig.line.color = this.color1[12];
+            console.log(this.color1[5], this.colors[5], "this.color1");
+            chartConfig.line.color =
+              this.color1.length > 0 ? this.color1[7] : this.colors[7]; // 为每个机组分配不同的颜色
           }
           if (this.chartType === "line") {
             chartConfig.mode = "lines"; // 如果是折线图
@@ -178,7 +180,6 @@ export default {
 
           data.push(chartConfig);
         });
-      console.log(this.chartData, "图表title");
       const layout = {
         title: {
           text: this.chartData.title || this.chartData.data[0].title,

+ 5 - 5
vue.config.js

@@ -126,7 +126,6 @@ module.exports = {
         },
       },
 
-
       // 数据转换亮亮
       "/transDataWeb": {
         // target: "http://192.168.50.241:9000/trans_data_web",//生产
@@ -148,8 +147,8 @@ module.exports = {
       },
       //nodejs 数据库数据
       "/databaseApi": {
-        // target: "http://192.168.50.234:3000",
-        target: "http://106.120.102.238:58880",//这个代理会走两次代理转发
+        target: "http://192.168.50.234:3002",
+        // target: "http://106.120.102.238:58880", //这个代理会走两次代理转发
         changeOrigin: true,
         pathRewrite: {
           "^/databaseApi": "", // 去掉 /databaseApi 前缀
@@ -157,8 +156,9 @@ module.exports = {
       },
       //nodejs 数据库数据
       "/downLoadChart": {
-        target: "http://127.0.0.1:3000",
-        // target: "http://106.120.102.238:58880",
+        // target: "http://127.0.0.1:3000",
+        // target: "http://192.168.50.235:8999", //内网演示
+        target: "http://106.120.102.238:28999/downLoadChart", //外网演示
         changeOrigin: true,
         pathRewrite: {
           "^/downLoadChart": "", // 去掉 /downLoadChart 前缀