Browse Source

功率曲线拟合接口调试完成,调整菜单权限,修改页面样式,修复数据出错bug

baiyanting 1 year ago
parent
commit
d7a67e118f
41 changed files with 2475 additions and 804 deletions
  1. 2 1
      .env.development
  2. 1 1
      .env.production
  3. 9 1
      src/App.vue
  4. 8 0
      src/api/monthlyPerformanceAnalysis.js
  5. 20 0
      src/api/powerAnalyse.js
  6. 1 0
      src/assets/icon/svg/dlbb.svg
  7. 0 5
      src/assets/styles/dialog.less
  8. 2 2
      src/assets/styles/el-override/el-table.less
  9. 25 20
      src/assets/styles/form.less
  10. 2 2
      src/assets/styles/table.less
  11. 0 1
      src/assets/styles/theme/light/light-jsc.css
  12. 1 1
      src/assets/styles/theme/light/light-jsc.less
  13. 8 0
      src/components/chart/powerEcharts.vue
  14. 3 1
      src/components/chart/radar/direction-radar-chart.vue
  15. 114 104
      src/router/index.js
  16. 5 0
      src/store/index.js
  17. 1 0
      src/tools/request.js
  18. 398 0
      src/views/HealthControl/energyEfficAnalyse/healthPowerCurve/components/current-scatter-chart.json
  19. 360 0
      src/views/HealthControl/energyEfficAnalyse/healthPowerCurve/components/current-scatter-chart.vue
  20. 262 0
      src/views/HealthControl/energyEfficAnalyse/healthPowerCurve/index copy.vue
  21. 678 152
      src/views/HealthControl/energyEfficAnalyse/healthPowerCurve/index.vue
  22. 7 6
      src/views/Home/components/map.vue
  23. 6 7
      src/views/economicsOperation/analyse/monthlyAnalysis/index.vue
  24. 41 28
      src/views/economicsOperation/analyse/monthlyAnalysis/reportDialog.vue
  25. 100 42
      src/views/economicsOperation/analyse/standAloneAnalyse/windDetailDialog.vue
  26. 1 1
      src/views/economicsOperation/benchmarkingManagement/compontent/bar-line-chart.vue
  27. 290 292
      src/views/economicsOperation/benchmarkingManagement/loseRate/index.vue
  28. 19 15
      src/views/economicsOperation/benchmarkingManagement/performanceRankingList/index.vue
  29. 4 4
      src/views/economicsOperation/efficiency/consumeEfficiency/index.vue
  30. 10 10
      src/views/economicsOperation/efficiency/restorationEfficiency/index.vue
  31. 9 9
      src/views/economicsOperation/efficiency/stateEfficiency/index.vue
  32. 1 1
      src/views/economicsOperation/homePage/components/barCharts.vue
  33. 6 6
      src/views/economicsOperation/homePage/components/pieChart.vue
  34. 2 2
      src/views/economicsOperation/powerCurve/powerLinefitting/index.vue
  35. 33 0
      src/views/electricReport/dmb/index.vue
  36. 11 0
      src/views/electricReport/index.vue
  37. 6 84
      src/views/layout/Header.vue
  38. 0 1
      src/views/stateMonitor/factoryMonitor/components/headerButton.vue
  39. 1 1
      src/views/stateMonitor/factoryMonitor/photovoltaic/lightBoosterStation/index.vue
  40. 1 1
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/index.vue
  41. 27 3
      src/views/stateMonitor/focus/syzDetails.vue

+ 2 - 1
.env.development

@@ -1,7 +1,8 @@
 
-# VUE_APP_API=http://192.168.1.100:6060
+VUE_APP_TEST=http://10.81.3.155:9002
 
 VUE_APP_API=http://10.81.3.153:6060
+# VUE_APP_API=http://192.168.1.106:6060
 
 
 VUE_APP_ADAPTERURL=http://10.81.3.155:8011

+ 1 - 1
.env.production

@@ -1,5 +1,5 @@
 VUE_APP_API=http://10.81.3.153:6060
-VUE_APP_API=http://10.81.3.153:6060
+VUE_APP_TEST=http://10.81.3.155:9002
 VUE_APP_ADAPTERURL=http://10.81.3.155:8011
 
 

+ 9 - 1
src/App.vue

@@ -106,7 +106,7 @@ import Header from "@/views/layout/Header.vue";
 import LoginPage from "./views/layout/login-page.vue";
 import sisView from "./views/sisView/index.vue";
 import { GetBoosterlist } from "@/api/factoryMonitor/index.js";
-
+import { getApiWeatherstation } from "@/api/monthlyPerformanceAnalysis";
 import SvgIcon from "@com/coms/icon/svg-icon.vue";
 import $ from "jquery";
 export default {
@@ -249,9 +249,16 @@ export default {
         }
       });
     },
+    // 获取测风塔
+    async getCftlist() {
+      const { data: datas } = await getApiWeatherstation();
+      console.log(datas);
+      this.$store.commit("changeCft", datas.data);
+    },
     login() {
       this.$store.commit("user/SET_LOGINSTATE", true);
       this.getBooster();
+      this.getCftlist();
       // websocket启动
       this.createWebSocket();
     },
@@ -335,6 +342,7 @@ export default {
     },
     // 接收到消息的回调
     getMessageCallback: function (msg) {
+      console.log(msg);
       if (Object.keys(msg) && msg.data == "ok") {
         // 心跳回复——心跳检测重置
         // 收到心跳检测回复就说明连接正常

+ 8 - 0
src/api/monthlyPerformanceAnalysis.js

@@ -48,6 +48,14 @@ export function getApiequipmentListByWp(params) {
     method: "GET",
   });
 }
+// 通过升压站获取风机列表
+export function getApiWeatherstation() {
+  return request({
+    baseURL: process.env.VUE_APP_API,
+    url: `weatherstation/queryall`,
+    method: "GET",
+  });
+}
 // ------------------------------------------------------单机性能分析---------------------------------------------------------------------
 // 获取单机性能总览------列表
 export function getApiwindturbinegoodnesslist(params) {

+ 20 - 0
src/api/powerAnalyse.js

@@ -0,0 +1,20 @@
+import request from "@/tools/request";
+
+//获取拟合id
+export function getPowerFittingId(data) {
+  return request({
+    baseURL: process.env.VUE_APP_TEST,
+    url: "new/power/fitting/data",
+    method: "post",
+    data,
+  });
+}
+
+//获取拟合id
+export function getPowerFittingChart(data) {
+  return request({
+    baseURL: process.env.VUE_APP_TEST,
+    url: `new/power/fitting/curve?id=${data.id}`,
+    method: "get",
+  });
+}

File diff suppressed because it is too large
+ 1 - 0
src/assets/icon/svg/dlbb.svg


+ 0 - 5
src/assets/styles/dialog.less

@@ -260,11 +260,6 @@
     background: none;
   }
 
-  .station .el-input-number__decrease,
-  .station .el-input-number__increase {
-    // top: 9px !important;
-  }
-
   .el-picker__poppe {
     z-index: 999;
   }

+ 2 - 2
src/assets/styles/el-override/el-table.less

@@ -68,7 +68,7 @@
     thead {
       color: @gray-l;
       font-weight: 500;
-      font-size: 16px;
+      font-size: 14px;
       border: 0px;
 
       th,
@@ -85,7 +85,7 @@
 
     .el-table__body {
       border: 0px;
-      font-size: 16px;
+      font-size: 14px;
     }
 
     &.el-table--striped .el-table__body tr.el-table__row--striped {

+ 25 - 20
src/assets/styles/form.less

@@ -324,7 +324,12 @@
   .el-date-picker__header-label {
     color: #fff;
   }
-
+  .el-month-table td.disabled .cell {
+    background-color: #787b7f;
+  }
+  .el-date-table td.disabled div {
+    background-color: #74777c;
+  }
   .el-input {
     .el-input__inner {
       background: fade(#536268, 20);
@@ -449,25 +454,25 @@
   }
 }
 
-.el-input-number {
-  .el-input {
-    .el-input__inner {
-      background: fade(#536268, 20);
-      border-color: fade(#536268, 20);
-      height: 33px;
-      line-height: 33px;
-      padding-left: 30px;
-      color: #ffffff;
-      font-size: 12px;
-      font-family: "SourceHanSans";
-
-      &::placeholder {
-        font-size: 12px;
-        color: #606769;
-      }
-    }
-  }
-}
+// .el-input-number {
+//   .el-input {
+//     .el-input__inner {
+//       background: fade(#536268, 20);
+//       border-color: fade(#536268, 20);
+//       height: 33px;
+//       line-height: 33px;
+//       padding-left: 30px;
+//       color: #ffffff;
+//       font-size: 12px;
+//       font-family: "SourceHanSans";
+
+//       &::placeholder {
+//         font-size: 12px;
+//         color: #606769;
+//       }
+//     }
+//   }
+// }
 
 .el-checkbox-group {
   .el-checkbox {

+ 2 - 2
src/assets/styles/table.less

@@ -26,7 +26,7 @@
         line-height: 30px;
         color: @titleGray;
         font-weight: 400;
-        font-size: 16px;
+        font-size: 14px;
         position: sticky;
         top: 0;
         cursor: pointer;
@@ -55,7 +55,7 @@
         padding: 4px;
         color: @rowGray;
         text-align: center;
-        font-size: 16px;
+        font-size: 14px;
         white-space: nowrap;
         overflow: hidden;
         text-overflow: ellipsis;

+ 0 - 1
src/assets/styles/theme/light/light-jsc.css

@@ -256,7 +256,6 @@
   transition: 0.25s;
 }
 #appBody.light .modal.el-dialog .el-dialog__title {
-  color: rgba(0, 0, 0, 0.75);
   transition: 0.25s;
 }
 #appBody.light .situation-body .value span:nth-child(2) {

+ 1 - 1
src/assets/styles/theme/light/light-jsc.less

@@ -377,7 +377,7 @@
   }
 
   .modal.el-dialog .el-dialog__title {
-    color: rgba(0, 0, 0, 0.75);
+    // color: rgba(0, 0, 0, 0.75);
     transition: @transition;
   }
 

+ 8 - 0
src/components/chart/powerEcharts.vue

@@ -271,6 +271,14 @@ export default {
         this.resize();
       });
     },
+    CurveValues: {
+      handler() {
+        this.$nextTick(() => {
+          this.getChart();
+          window.addEventListener("resize", this.resize);
+        });
+      },
+    },
   },
 };
 </script>

+ 3 - 1
src/components/chart/radar/direction-radar-chart.vue

@@ -173,7 +173,9 @@ export default {
             },
             data: [
               {
-                value: this.series.data.map((i) => i[0]),
+                value: this.series.data
+                  ? this.series.data.map((i) => i[0])
+                  : "",
                 name: "风向频率",
               },
             ],

+ 114 - 104
src/router/index.js

@@ -17,7 +17,7 @@ export const asyncRoutes = [
     meta: {
       title: "首页",
       icon: "",
-      permissions: ["jn_sy", "*:*:*"],
+      permissions: ["jn_sy"],
     },
   },
   //   {
@@ -44,7 +44,7 @@ export const asyncRoutes = [
     meta: {
       title: "全景监视",
       icon: "",
-      permissions: ["jn_stateMonitor", "*:*:*"],
+      permissions: ["jn_stateMonitor"],
     },
     children: [
       {
@@ -54,7 +54,7 @@ export const asyncRoutes = [
         meta: {
           title: "基础矩阵",
           icon: "svg-matrix",
-          permissions: ["jn_jcjz", "*:*:*"],
+          permissions: ["jn_jcjz"],
         },
       },
       {
@@ -64,7 +64,7 @@ export const asyncRoutes = [
         meta: {
           title: "明细矩阵",
           icon: "svg-mx-matrix",
-          permissions: ["jn_mxjz", "*:*:*"],
+          permissions: ["jn_mxjz"],
         },
       },
       {
@@ -74,7 +74,7 @@ export const asyncRoutes = [
         meta: {
           title: "升压站矩阵",
           icon: "svg-syz",
-          permissions: ["jn_mxjz", "*:*:*"],
+          permissions: ["jn_syzjz"],
         },
       },
       {
@@ -84,7 +84,7 @@ export const asyncRoutes = [
         meta: {
           title: "功率预测",
           icon: "svg-power-predict",
-          permissions: ["jn_mxjz", "*:*:*"],
+          permissions: ["jn_glyc"],
         },
       },
       {
@@ -97,7 +97,7 @@ export const asyncRoutes = [
         meta: {
           title: "综合指标",
           icon: "svg-自定制报表管理",
-          permissions: ["jn_zhzb", "*:*:*"],
+          permissions: ["jn_zhzb"],
         },
       },
       {
@@ -108,7 +108,7 @@ export const asyncRoutes = [
         meta: {
           title: "厂站监视",
           icon: "svg-single-station-surveillance",
-          permissions: ["jn_czjs", "*:*:*"],
+          permissions: ["jn_czjs"],
         },
         children: [
           {
@@ -120,7 +120,7 @@ export const asyncRoutes = [
             meta: {
               title: "风电场站",
               icon: "",
-              permissions: ["jn_fdcz", "*:*:*"],
+              permissions: ["jn_fdcz"],
             },
             children: [
               {
@@ -133,7 +133,7 @@ export const asyncRoutes = [
                 meta: {
                   title: "场站监视",
                   icon: "svg-station-surveillance",
-                  permissions: ["jn_fdcz_czjs", "*:*:*"],
+                  permissions: ["jn_fdcz_czjs"],
                 },
               },
               {
@@ -146,7 +146,7 @@ export const asyncRoutes = [
                 meta: {
                   title: "数据指标",
                   icon: "svg-s指标列表",
-                  permissions: ["jn_fdcz_sjzb", "*:*:*"],
+                  permissions: ["jn_fdcz_sjzb"],
                 },
               },
               {
@@ -159,7 +159,7 @@ export const asyncRoutes = [
                 meta: {
                   title: "矩阵监视",
                   icon: "svg-matrix",
-                  permissions: ["jn_fdcz_jzjs", "*:*:*"],
+                  permissions: ["jn_fdcz_jzjs"],
                 },
               },
               {
@@ -172,7 +172,7 @@ export const asyncRoutes = [
                 meta: {
                   title: "风机设备",
                   icon: "svg-wind-site",
-                  permissions: ["jn_fdcz_fjsb", "*:*:*"],
+                  permissions: ["jn_fdcz_fjsb"],
                 },
               },
               {
@@ -185,7 +185,7 @@ export const asyncRoutes = [
                 meta: {
                   title: "升压站",
                   icon: "svg-s升压站",
-                  permissions: ["jn_fdcz_syz", "*:*:*"],
+                  permissions: ["jn_fdcz_syz"],
                 },
               },
               {
@@ -197,7 +197,7 @@ export const asyncRoutes = [
                 name: "windPower",
                 meta: {
                   title: "测风塔",
-                  permissions: ["jn_fdcz_cft", "*:*:*"],
+                  permissions: ["jn_fdcz_cft"],
                   icon: "svg-s测风塔",
                 },
               },
@@ -210,7 +210,7 @@ export const asyncRoutes = [
                 name: "geomorphologicMap",
                 meta: {
                   title: "地貌图",
-                  permissions: ["jn_fdcz_dmt", "*:*:*"],
+                  permissions: ["jn_fdcz_dmt"],
                   icon: "svg-s地图",
                 },
               },
@@ -225,7 +225,7 @@ export const asyncRoutes = [
             meta: {
               title: "光伏场站",
               icon: "",
-              permissions: ["jn_gfcz", "*:*:*"],
+              permissions: ["jn_gfcz"],
             },
             children: [
               {
@@ -238,7 +238,7 @@ export const asyncRoutes = [
                 meta: {
                   title: "场站监视",
                   icon: "svg-station-surveillance",
-                  permissions: ["jn_gfcz_czjs", "*:*:*"],
+                  permissions: ["jn_gfcz_czjs"],
                 },
               },
               {
@@ -250,7 +250,7 @@ export const asyncRoutes = [
                 name: "lightDataTarget",
                 meta: {
                   title: "数据指标",
-                  permissions: ["jn_gfcz_sjzb", "*:*:*"],
+                  permissions: ["jn_gfcz_sjzb"],
                   icon: "svg-s指标列表",
                 },
               },
@@ -263,7 +263,7 @@ export const asyncRoutes = [
                 name: "lightMatrixMonitor",
                 meta: {
                   title: "矩阵监视",
-                  permissions: ["jn_gfcz_jzjs", "*:*:*"],
+                  permissions: ["jn_gfcz_jzjs"],
                   icon: "svg-matrix",
                 },
               },
@@ -276,7 +276,7 @@ export const asyncRoutes = [
                 name: "lightMatrix",
                 meta: {
                   title: "分类矩阵",
-                  permissions: ["jn_gfcz_fljz", "*:*:*"],
+                  permissions: ["jn_gfcz_fljz"],
                   icon: "svg-fljz",
                 },
               },
@@ -289,7 +289,7 @@ export const asyncRoutes = [
                 name: "photovoltaicFacility",
                 meta: {
                   title: "光伏设备",
-                  permissions: ["jn_gfcz_gfsb", "*:*:*"],
+                  permissions: ["jn_gfcz_gfsb"],
                   icon: "svg-photovoltaic",
                 },
               },
@@ -302,7 +302,7 @@ export const asyncRoutes = [
                 name: "lightBoosterStation",
                 meta: {
                   title: "升压站",
-                  permissions: ["jn_gfcz_syz", "*:*:*"],
+                  permissions: ["jn_gfcz_syz"],
                   icon: "svg-s升压站",
                 },
               },
@@ -315,7 +315,7 @@ export const asyncRoutes = [
                 name: "lightGeomorphologicMap",
                 meta: {
                   title: "地貌图",
-                  permissions: ["jn_gfcz_dmt", "*:*:*"],
+                  permissions: ["jn_gfcz_dmt"],
                   icon: "svg-s地图",
                 },
               },
@@ -326,25 +326,12 @@ export const asyncRoutes = [
       {
         path: "alarmCenter", // 报警列表
         name: "alarmCenter",
-        component: () => import("@/views/stateMonitor/alarmCenter"),
+        component: () => import("@/views/stateMonitor/alarmCenter/commonAlarm"),
         meta: {
-          title: "综合报警",
+          title: "报警列表",
           icon: "svg-alarm-center",
-          permissions: ["jn_alarm", "*:*:*"],
+          permissions: ["jn_alarm"],
         },
-        children: [
-          {
-            path: "commonAlarm", // 报警列表
-            name: "commonAlarm",
-            component: () =>
-              import("@/views/stateMonitor/alarmCenter/commonAlarm"),
-            meta: {
-              title: "报警列表",
-              icon: "",
-              permissions: ["jn_alarm_bjlb", "*:*:*"],
-            },
-          },
-        ],
       },
 
       /*{
@@ -354,7 +341,7 @@ export const asyncRoutes = [
         meta: {
           title: "AGC矩阵",
           icon: "svg-mx-matrix",
-          permissions: ["jn_mxjz", "*:*:*"],
+          permissions: ["jn_mxjz"],
         },
       }*/
     ],
@@ -370,7 +357,7 @@ export const asyncRoutes = [
     meta: {
       title: "经济运行",
       icon: "",
-      permissions: ["jn_economicsOperation", "*:*:*"],
+      permissions: ["jn_economicsOperation"],
     },
     children: [
       //   {
@@ -392,7 +379,7 @@ export const asyncRoutes = [
         meta: {
           title: "对标管理",
           icon: "svg-dbgl",
-          permissions: ["jn_dbgl", "*:*:*"],
+          permissions: ["jn_dbgl"],
         },
         children: [
           {
@@ -405,7 +392,7 @@ export const asyncRoutes = [
             meta: {
               title: "风机绩效榜",
               icon: "",
-              permissions: ["jn_dbgl_jxb", "*:*:*"],
+              permissions: ["jn_dbgl_jxb"],
             },
           },
           {
@@ -418,7 +405,7 @@ export const asyncRoutes = [
             meta: {
               title: "风机绩效榜明细",
               icon: "",
-              permissions: ["jn_dbgl_jxb", "*:*:*"],
+              permissions: ["jn_dbgl_jxb"],
             },
           },
           {
@@ -431,7 +418,7 @@ export const asyncRoutes = [
             meta: {
               title: "五项损失率",
               icon: "",
-              permissions: ["jn_dbgl_wxssl", "*:*:*"],
+              permissions: ["jn_dbgl_wxssl"],
             },
           },
           //   {
@@ -444,7 +431,7 @@ export const asyncRoutes = [
           //     meta: {
           //       title: "公司对标",
           //       icon: "",
-          //       permissions: ["jn_dbgl_gsdb", "*:*:*"],
+          //       permissions: ["jn_dbgl_gsdb"],
           //     },
           //   },
           {
@@ -457,7 +444,7 @@ export const asyncRoutes = [
             meta: {
               title: "场内对标",
               icon: "",
-              permissions: ["jn_dbgl_cndb", "*:*:*"],
+              permissions: ["jn_dbgl_cndb"],
             },
           },
           {
@@ -470,7 +457,7 @@ export const asyncRoutes = [
             meta: {
               title: "场际对标",
               icon: "",
-              permissions: ["jn_dbgl_cjdb", "*:*:*"],
+              permissions: ["jn_dbgl_cjdb"],
             },
           },
           //   {
@@ -495,7 +482,7 @@ export const asyncRoutes = [
             meta: {
               title: "项目对标",
               icon: "",
-              permissions: ["jn_dbgl_xmdb", "*:*:*"],
+              permissions: ["jn_dbgl_xmdb"],
             },
           },
           {
@@ -508,7 +495,7 @@ export const asyncRoutes = [
             meta: {
               title: "线路对标",
               icon: "",
-              permissions: ["jn_dbgl_xldb", "*:*:*"],
+              permissions: ["jn_dbgl_xldb"],
             },
           },
           //   {
@@ -534,7 +521,7 @@ export const asyncRoutes = [
         meta: {
           title: "三率",
           icon: "svg-slgl",
-          permissions: ["jn_slgl", "*:*:*"],
+          permissions: ["jn_slgl"],
         },
         children: [
           {
@@ -547,7 +534,7 @@ export const asyncRoutes = [
             meta: {
               title: "复位及时率",
               icon: "",
-              permissions: ["jn_slgl_fwjsl", "*:*:*"],
+              permissions: ["jn_slgl_fwjsl"],
             },
           },
           {
@@ -558,7 +545,7 @@ export const asyncRoutes = [
             meta: {
               title: "消缺及时率",
               icon: "",
-              permissions: ["jn_slgl_xqjsl", "*:*:*"],
+              permissions: ["jn_slgl_xqjsl"],
             },
           },
           {
@@ -569,7 +556,7 @@ export const asyncRoutes = [
             meta: {
               title: "状态转换率",
               icon: "",
-              permissions: ["jn_slgl_ztzhl", "*:*:*"],
+              permissions: ["jn_slgl_ztzhl"],
             },
           },
         ],
@@ -583,7 +570,7 @@ export const asyncRoutes = [
         meta: {
           title: "性能分析",
           icon: "svg-dimension-new",
-          permissions: ["jn_xnfx", "*:*:*"],
+          permissions: ["jn_xnfx"],
         },
         children: [
           {
@@ -594,7 +581,7 @@ export const asyncRoutes = [
             meta: {
               title: "单机性能分析",
               icon: "",
-              permissions: ["jn_xnfx_djxnfx", "*:*:*"],
+              permissions: ["jn_xnfx_djxnfx"],
             },
           },
           {
@@ -605,7 +592,7 @@ export const asyncRoutes = [
             meta: {
               title: "单机月度分析",
               icon: "",
-              permissions: ["jn_xnfx_djydfx", "*:*:*"],
+              permissions: ["jn_xnfx_djydfx"],
             },
           },
         ],
@@ -621,7 +608,7 @@ export const asyncRoutes = [
         meta: {
           title: "性能评估",
           icon: "svg-fjfx",
-          permissions: ["jn_xndjpg", "*:*:*"],
+          permissions: ["jn_xndjpg"],
         },
       },
       //功率曲线
@@ -633,7 +620,7 @@ export const asyncRoutes = [
         meta: {
           title: "功率曲线",
           icon: "svg-power-curve",
-          permissions: ["jn_glqx", "*:*:*"],
+          permissions: ["jn_glqx"],
         },
         children: [
           {
@@ -642,9 +629,9 @@ export const asyncRoutes = [
               import("@/views/economicsOperation/powerCurve/powerLinefitting"),
             name: "powerLinefitting",
             meta: {
-              title: "功率曲线拟合",
+              title: "功率曲线查询",
               icon: "",
-              permissions: ["jn_glqx_glqxnh", "*:*:*"],
+              permissions: ["jn_glqx_glqxnh"],
             },
           },
           {
@@ -657,7 +644,7 @@ export const asyncRoutes = [
             meta: {
               title: "切入切出分析",
               icon: "",
-              permissions: ["jn_glqx_qrqcfx", "*:*:*"],
+              permissions: ["jn_glqx_qrqcfx"],
             },
           },
         ],
@@ -671,7 +658,7 @@ export const asyncRoutes = [
         meta: {
           title: "专题分析",
           icon: "svg-ztfx",
-          permissions: ["jn_ztfx", "*:*:*"],
+          permissions: ["jn_ztfx"],
         },
         children: [
           {
@@ -684,7 +671,7 @@ export const asyncRoutes = [
             meta: {
               title: "综合分析",
               icon: "",
-              permissions: ["jn_ztfx_zhfx", "*:*:*"],
+              permissions: ["jn_ztfx_zhfx"],
             },
           },
           {
@@ -695,7 +682,7 @@ export const asyncRoutes = [
             meta: {
               title: "风能利用率",
               icon: "",
-              permissions: ["jn_ztfx_fnlyl", "*:*:*"],
+              permissions: ["jn_ztfx_fnlyl"],
             },
           },
           {
@@ -706,7 +693,7 @@ export const asyncRoutes = [
             meta: {
               title: "五项损失率",
               icon: "",
-              permissions: ["jn_ztfx_wxssl", "*:*:*"],
+              permissions: ["jn_ztfx_wxssl"],
             },
           },
           {
@@ -717,7 +704,7 @@ export const asyncRoutes = [
             meta: {
               title: "三率分析",
               icon: "",
-              permissions: ["jn_ztfx_fwjsl", "*:*:*"],
+              permissions: ["jn_ztfx_fwjsl"],
             },
           },
           {
@@ -728,7 +715,7 @@ export const asyncRoutes = [
             meta: {
               title: "可靠性分析",
               icon: "",
-              permissions: ["jn_ztfx_kkxfx", "*:*:*"],
+              permissions: ["jn_ztfx_kkxfx"],
             },
           },
           {
@@ -739,7 +726,7 @@ export const asyncRoutes = [
             meta: {
               title: "发电量分析",
               icon: "",
-              permissions: ["jn_ztfx_dlfx", "*:*:*"],
+              permissions: ["jn_ztfx_dlfx"],
             },
           },
         ],
@@ -753,7 +740,7 @@ export const asyncRoutes = [
         meta: {
           title: "功率预测分析",
           icon: "svg-yfdl",
-          permissions: ["jn_ztfx", "*:*:*"],
+          permissions: ["jn_glycfx"],
         },
       },
       //综合管控KPI
@@ -766,7 +753,7 @@ export const asyncRoutes = [
         meta: {
           title: "综合管控KPI",
           icon: "svg-zhgk",
-          permissions: ["jn_ztfx", "*:*:*"],
+          permissions: ["jn_zhgk"],
         },
         children: [
           {
@@ -779,7 +766,7 @@ export const asyncRoutes = [
             meta: {
               title: "运行KPI",
               icon: "",
-              permissions: ["jn_ztfx_zhfx", "*:*:*"],
+              permissions: ["jn_zhgk_yx"],
             },
           },
           {
@@ -792,7 +779,7 @@ export const asyncRoutes = [
             meta: {
               title: "检修KPI",
               icon: "",
-              permissions: ["jn_ztfx_zhfx", "*:*:*"],
+              permissions: ["jn_zhgk_jx"],
             },
           },
           {
@@ -805,7 +792,7 @@ export const asyncRoutes = [
             meta: {
               title: "场站管控KPI",
               icon: "",
-              permissions: ["jn_ztfx_zhfx", "*:*:*"],
+              permissions: ["jn_zhgk_czgk"],
             },
           },
         ],
@@ -873,7 +860,7 @@ export const asyncRoutes = [
     meta: {
       title: "智慧检修",
       icon: "",
-      permissions: ["jn_health", "*:*:*"],
+      permissions: ["jn_health"],
     },
     children: [
       {
@@ -884,7 +871,7 @@ export const asyncRoutes = [
         meta: {
           title: "健康管理",
           icon: "svg-健康管理",
-          permissions: ["jn_jkgl", "*:*:*"],
+          permissions: ["jn_jkgl"],
         },
         children: [
           {
@@ -895,7 +882,7 @@ export const asyncRoutes = [
             meta: {
               title: "健康推荐",
               icon: "",
-              permissions: ["jn_jkgl_jktj", "*:*:*"],
+              permissions: ["jn_jkgl_jktj"],
             },
           },
           {
@@ -908,7 +895,7 @@ export const asyncRoutes = [
             meta: {
               title: "健康首页",
               icon: "",
-              permissions: ["jn_jkgl_jksy", "*:*:*"],
+              permissions: ["jn_jkgl_jksy"],
             },
           },
 
@@ -922,7 +909,7 @@ export const asyncRoutes = [
             meta: {
               title: "健康总览",
               icon: "",
-              permissions: ["jn_jkgl_jkzl", "*:*:*"],
+              permissions: ["jn_jkgl_jkzl"],
             },
           },
           {
@@ -935,7 +922,7 @@ export const asyncRoutes = [
             meta: {
               title: "健康矩阵",
               icon: "",
-              permissions: ["jn_jkgl_jkjz", "*:*:*"],
+              permissions: ["jn_jkgl_jkjz"],
             },
           },
           {
@@ -948,7 +935,7 @@ export const asyncRoutes = [
             meta: {
               title: "健康列表",
               icon: "",
-              permissions: ["jn_jkgl_jklb", "*:*:*"],
+              permissions: ["jn_jkgl_jklb"],
             },
           },
           {
@@ -961,7 +948,7 @@ export const asyncRoutes = [
             meta: {
               title: "劣化状态分析",
               icon: "",
-              permissions: ["jn_jkgl_lhztfx", "*:*:*"],
+              permissions: ["jn_jkgl_lhztfx"],
             },
           },
         ],
@@ -975,7 +962,7 @@ export const asyncRoutes = [
         meta: {
           title: "能效分析",
           icon: "svg-能效分析",
-          permissions: ["jn_nxfx", "*:*:*"],
+          permissions: ["jn_nxfx"],
         },
         children: [
           {
@@ -988,7 +975,7 @@ export const asyncRoutes = [
             meta: {
               title: "功率曲线拟合",
               icon: "",
-              permissions: ["jn_nxfx_glqxnh", "*:*:*"],
+              permissions: ["jn_nxfx_glqxnh"],
             },
           },
           {
@@ -1001,7 +988,7 @@ export const asyncRoutes = [
             meta: {
               title: "曲线偏差率分析",
               icon: "",
-              permissions: ["jn_nxfx_qxpcl", "*:*:*"],
+              permissions: ["jn_nxfx_qxpcl"],
             },
           },
           {
@@ -1014,7 +1001,7 @@ export const asyncRoutes = [
             meta: {
               title: "单机饱和度",
               icon: "",
-              permissions: ["jn_nxfx_djbhd", "*:*:*"],
+              permissions: ["jn_nxfx_djbhd"],
             },
           },
           {
@@ -1027,7 +1014,7 @@ export const asyncRoutes = [
             meta: {
               title: "部件温度分析",
               icon: "",
-              permissions: ["jn_nxfx_bjwd", "*:*:*"],
+              permissions: ["jn_nxfx_bjwd"],
             },
           },
           {
@@ -1040,7 +1027,7 @@ export const asyncRoutes = [
             meta: {
               title: "预警评判分析",
               icon: "",
-              permissions: ["jn_nxfx_yjpp", "*:*:*"],
+              permissions: ["jn_nxfx_yjpp"],
             },
           },
           {
@@ -1053,7 +1040,7 @@ export const asyncRoutes = [
             meta: {
               title: "故障评判分析",
               icon: "",
-              permissions: ["jn_nxfx_gzpp", "*:*:*"],
+              permissions: ["jn_nxfx_gzpp"],
             },
           },
           {
@@ -1066,7 +1053,7 @@ export const asyncRoutes = [
             meta: {
               title: "部件功率分析",
               icon: "",
-              permissions: ["jn_nxfx_gzpp", "*:*:*"],
+              permissions: ["jn_nxfx_gzpp"],
             },
           },
         ],
@@ -1080,7 +1067,7 @@ export const asyncRoutes = [
         meta: {
           title: "健康详情",
           icon: "",
-          permissions: ["jn_jkgl", "*:*:*"],
+          permissions: ["jn_jkgl"],
         },
         children: [
           {
@@ -1091,7 +1078,7 @@ export const asyncRoutes = [
             meta: {
               title: "场站健康管理",
               icon: "",
-              permissions: ["jn_jkgl", "*:*:*"],
+              permissions: ["jn_jkgl"],
             },
           },
           {
@@ -1102,7 +1089,7 @@ export const asyncRoutes = [
             meta: {
               title: "设备健康详情",
               icon: "",
-              permissions: ["jn_jkgl", "*:*:*"],
+              permissions: ["jn_jkgl"],
             },
           },
           {
@@ -1113,7 +1100,7 @@ export const asyncRoutes = [
             meta: {
               title: "健康趋势",
               icon: "",
-              permissions: ["jn_jkgl", "*:*:*"],
+              permissions: ["jn_jkgl"],
             },
           },
           {
@@ -1124,7 +1111,7 @@ export const asyncRoutes = [
             meta: {
               title: "劣化状态分析曲线",
               icon: "",
-              permissions: ["jn_jkgl", "*:*:*"],
+              permissions: ["jn_jkgl"],
             },
           },
         ],
@@ -1139,7 +1126,7 @@ export const asyncRoutes = [
     meta: {
       title: "智能报表",
       icon: "",
-      permissions: ["jn_zhbb", "*:*:*"],
+      permissions: ["jn_zhbb"],
     },
     component: () => import("@/views/report"),
     children: [
@@ -1150,7 +1137,7 @@ export const asyncRoutes = [
         meta: {
           title: "自定制报表管理",
           icon: "svg-自定制报表管理",
-          permissions: ["jn_zdz", "*:*:*"],
+          permissions: ["jn_zdz"],
         },
         component: () => import("@/views/report/stationReport"),
         children: [
@@ -1161,7 +1148,7 @@ export const asyncRoutes = [
             meta: {
               title: "晋能清洁能源生产日报",
               icon: "",
-              permissions: ["jn_zdz_scrb", "*:*:*"],
+              permissions: ["jn_zdz_scrb"],
             },
           },
           {
@@ -1171,7 +1158,7 @@ export const asyncRoutes = [
             meta: {
               title: "晋能清洁能源风电日报",
               icon: "",
-              permissions: ["jn_zdz_fdxnyrb", "*:*:*"],
+              permissions: ["jn_zdz_fdxnyrb"],
             },
           },
           {
@@ -1181,7 +1168,7 @@ export const asyncRoutes = [
             meta: {
               title: "晋能清洁能源光伏日报",
               icon: "",
-              permissions: ["jn_zdz_gfxnyrb", "*:*:*"],
+              permissions: ["jn_zdz_gfxnyrb"],
             },
           },
           {
@@ -1191,7 +1178,7 @@ export const asyncRoutes = [
             meta: {
               title: "日报表",
               icon: "",
-              permissions: ["jn_zdz_rbb", "*:*:*"],
+              permissions: ["jn_zdz_rbb"],
             },
           },
 
@@ -1202,7 +1189,7 @@ export const asyncRoutes = [
             meta: {
               title: "风电场站自定义",
               icon: "",
-              permissions: ["jn_zdz_fdcz", "*:*:*"],
+              permissions: ["jn_zdz_fdcz"],
             },
           },
           {
@@ -1212,7 +1199,30 @@ export const asyncRoutes = [
             meta: {
               title: "风电项目自定义",
               icon: "",
-              permissions: ["jn_zdz_fdxm", "*:*:*"],
+              permissions: ["jn_zdz_fdxm"],
+            },
+          },
+        ],
+      },
+      {
+        path: "electricReport",
+        redirect: "electricReport/dmb",
+        name: "electricReport",
+        meta: {
+          title: "电量报表",
+          icon: "svg-dlbb",
+          permissions: ["jn_dlbb"],
+        },
+        component: () => import("@/views/electricReport/dmb"),
+        children: [
+          {
+            path: "dmb",
+            name: "dmb",
+            component: () => import("@/views/electricReport/dmb"),
+            meta: {
+              title: "底码表",
+              icon: "",
+              permissions: ["jn_dlbb_dmb"],
             },
           },
         ],

+ 5 - 0
src/store/index.js

@@ -15,6 +15,7 @@ const state = {
   moudleName: localStorage.getItem("ModuleName") || "",
   isFixed: JSON.parse(localStorage.getItem("isFixed")) || false,
   boosterList: JSON.parse(localStorage.getItem("boosterList")) || [],
+  cftList: JSON.parse(localStorage.getItem("cftList")) || [],
   boosterAlarm: JSON.parse(localStorage.getItem("boosterAlarm")) || 0,
   drawer: JSON.parse(localStorage.getItem("drawer")) || false,
   alarmList: JSON.parse(localStorage.getItem("alarmList")) || {},
@@ -45,6 +46,10 @@ const mutations = {
     state.boosterList = data;
     localStorage.setItem("boosterList", JSON.stringify(data));
   },
+  changeCft(state, data) {
+    state.cftList = data;
+    localStorage.setItem("cftList", JSON.stringify(data));
+  },
   changeBoosterAlarm(state, data) {
     state.boosterAlarm = data;
     localStorage.setItem("boosterAlarm", JSON.stringify(data));

+ 1 - 0
src/tools/request.js

@@ -62,6 +62,7 @@ service.interceptors.response.use(
         service.defaults.showLoading = false;
       }
       if (status === 200) {
+        console.log(response.data);
         return response.data;
       } else {
         return false;

+ 398 - 0
src/views/HealthControl/energyEfficAnalyse/healthPowerCurve/components/current-scatter-chart.json

@@ -0,0 +1,398 @@
+
+{
+	"color": [
+			"#1C99FF",
+			"#FF8700",
+			"#e6b600d9",
+			"#0098d9",
+			"#3D54BE",
+			"#005eaa",
+			"#cda819",
+			"#32a487"
+	],
+	"textStyle": {},
+	"title": {
+			"textStyle": {
+					"color": "#333333"
+			},
+			"subtextStyle": {
+					"color": "#aaaaaa"
+			}
+	},
+	"line": {
+			"itemStyle": {
+					"borderWidth": 1
+			},
+			"lineStyle": {
+					"width": 2
+			},
+			"symbolSize": 4,
+			"symbol": "emptyCircle",
+			"smooth": false
+	},
+	"radar": {
+			"itemStyle": {
+					"borderWidth": 1
+			},
+			"lineStyle": {
+					"width": 2
+			},
+			"symbolSize": 4,
+			"symbol": "emptyCircle",
+			"smooth": false
+	},
+	"bar": {
+			"itemStyle": {
+					"barBorderWidth": 0,
+					"barBorderColor": "#ccc"
+			}
+	},
+	"pie": {
+			"itemStyle": {
+					"borderWidth": 0,
+					"borderColor": "#ccc"
+			}
+	},
+	"scatter": {
+			"itemStyle": {
+					"borderWidth": 0,
+					"borderColor": "#ccc"
+			}
+	},
+	"boxplot": {
+			"itemStyle": {
+					"borderWidth": 0,
+					"borderColor": "#ccc"
+			}
+	},
+	"parallel": {
+			"itemStyle": {
+					"borderWidth": 0,
+					"borderColor": "#ccc"
+			}
+	},
+	"sankey": {
+			"itemStyle": {
+					"borderWidth": 0,
+					"borderColor": "#ccc"
+			}
+	},
+	"funnel": {
+			"itemStyle": {
+					"borderWidth": 0,
+					"borderColor": "#ccc"
+			}
+	},
+	"gauge": {
+			"itemStyle": {
+					"borderWidth": 0,
+					"borderColor": "#ccc"
+			}
+	},
+	"candlestick": {
+			"itemStyle": {
+					"color": "#c12e34",
+					"color0": "#2b821d",
+					"borderColor": "#c12e34",
+					"borderColor0": "#2b821d",
+					"borderWidth": 1
+			}
+	},
+	"graph": {
+			"itemStyle": {
+					"borderWidth": 0,
+					"borderColor": "#ccc"
+			},
+			"lineStyle": {
+					"width": 1,
+					"color": "#aaaaaa"
+			},
+			"symbolSize": 4,
+			"symbol": "emptyCircle",
+			"smooth": false,
+			"color": [
+					"#c12e34",
+					"#e6b600",
+					"#0098d9",
+					"#50ec39",
+					"#005eaa",
+					"#339ca8",
+					"#cda819",
+					"#32a487"
+			],
+			"label": {
+					"color": "#eeeeee"
+			}
+	},
+	"map": {
+			"itemStyle": {
+					"areaColor": "#ddd",
+					"borderColor": "#eee",
+					"borderWidth": 0.5
+			},
+			"label": {
+					"color": "#c12e34"
+			},
+			"emphasis": {
+					"itemStyle": {
+							"areaColor": "#e6b600",
+							"borderColor": "#ddd",
+							"borderWidth": 1
+					},
+					"label": {
+							"color": "#c12e34"
+					}
+			}
+	},
+	"geo": {
+			"itemStyle": {
+					"areaColor": "#ddd",
+					"borderColor": "#eee",
+					"borderWidth": 0.5
+			},
+			"label": {
+					"color": "#c12e34"
+			},
+			"emphasis": {
+					"itemStyle": {
+							"areaColor": "#e6b600",
+							"borderColor": "#ddd",
+							"borderWidth": 1
+					},
+					"label": {
+							"color": "#c12e34"
+					}
+			}
+	},
+	"categoryAxis": {
+			"axisLine": {
+					"show": true,
+					"lineStyle": {
+							"color": "#333"
+					}
+			},
+			"axisTick": {
+					"show": true,
+					"lineStyle": {
+							"color": "#333"
+					}
+			},
+			"axisLabel": {
+					"show": true,
+					"color": "#333"
+			},
+			"splitLine": {
+					"show": false,
+					"lineStyle": {
+							"color": [
+									"#ccc"
+							]
+					}
+			},
+			"splitArea": {
+					"show": false,
+					"areaStyle": {
+							"color": [
+									"rgba(250,250,250,0.3)",
+									"rgba(200,200,200,0.3)"
+							]
+					}
+			}
+	},
+	"valueAxis": {
+			"axisLine": {
+					"show": true,
+					"lineStyle": {
+							"color": "#838383"
+					}
+			},
+			"axisTick": {
+					"show": true,
+					"lineStyle": {
+							"color": "#838383"
+					}
+			},
+			"axisLabel": {
+					"show": true,
+					"color": "#838383"
+			},
+			"splitLine": {
+					"show": true,
+					"lineStyle": {
+							"color": [
+									"#ccc"
+							]
+					}
+			},
+			"splitArea": {
+					"show": false,
+					"areaStyle": {
+							"color": [
+									"rgba(250,250,250,0.3)",
+									"rgba(200,200,200,0.3)"
+							]
+					}
+			}
+	},
+	"logAxis": {
+			"axisLine": {
+					"show": true,
+					"lineStyle": {
+							"color": "#333"
+					}
+			},
+			"axisTick": {
+					"show": true,
+					"lineStyle": {
+							"color": "#333"
+					}
+			},
+			"axisLabel": {
+					"show": true,
+					"color": "#333"
+			},
+			"splitLine": {
+					"show": true,
+					"lineStyle": {
+							"color": [
+									"#ccc"
+							]
+					}
+			},
+			"splitArea": {
+					"show": false,
+					"areaStyle": {
+							"color": [
+									"rgba(250,250,250,0.3)",
+									"rgba(200,200,200,0.3)"
+							]
+					}
+			}
+	},
+	"timeAxis": {
+			"axisLine": {
+					"show": true,
+					"lineStyle": {
+							"color": "#333"
+					}
+			},
+			"axisTick": {
+					"show": true,
+					"lineStyle": {
+							"color": "#333"
+					}
+			},
+			"axisLabel": {
+					"show": true,
+					"color": "#333"
+			},
+			"splitLine": {
+					"show": true,
+					"lineStyle": {
+							"color": [
+									"#ccc"
+							]
+					}
+			},
+			"splitArea": {
+					"show": false,
+					"areaStyle": {
+							"color": [
+									"rgba(250,250,250,0.3)",
+									"rgba(200,200,200,0.3)"
+							]
+					}
+			}
+	},
+	"toolbox": {
+			"iconStyle": {
+					"borderColor": "#06467c"
+			},
+			"emphasis": {
+					"iconStyle": {
+							"borderColor": "#4187c2"
+					}
+			},
+			"textStyle": {
+				"color": "#838383"
+			}
+	},
+	"legend": {
+			"textStyle": {
+					"color": "#838383"
+			}
+	},
+	"tooltip": {
+			"axisPointer": {
+					"lineStyle": {
+							"color": "#cccccc",
+							"width": 1
+					},
+					"crossStyle": {
+							"color": "#cccccc",
+							"width": 1
+					}
+			}
+	},
+	"timeline": {
+			"lineStyle": {
+					"color": "#005eaa",
+					"width": 1
+			},
+			"itemStyle": {
+					"color": "#005eaa",
+					"borderWidth": 1
+			},
+			"controlStyle": {
+					"color": "#005eaa",
+					"borderColor": "#005eaa",
+					"borderWidth": 0.5
+			},
+			"checkpointStyle": {
+					"color": "#005eaa",
+					"borderColor": "#316bc2"
+			},
+			"label": {
+					"color": "#005eaa"
+			},
+			"emphasis": {
+					"itemStyle": {
+							"color": "#005eaa"
+					},
+					"controlStyle": {
+							"color": "#005eaa",
+							"borderColor": "#005eaa",
+							"borderWidth": 0.5
+					},
+					"label": {
+							"color": "#005eaa"
+					}
+			}
+	},
+	"visualMap": {
+			"color": [
+					"#1790cf",
+					"#a2d4e6"
+			]
+	},
+	"dataZoom": {
+			"backgroundColor": "rgba(47,69,84,0)",
+			"dataBackgroundColor": "rgba(47,69,84,0.3)",
+			"fillerColor": "rgba(167,183,204,0.4)",
+			"handleColor": "#a7b7cc",
+			"handleSize": "100%",
+			"textStyle": {
+					"color": "#333333"
+			}
+	},
+	"markPoint": {
+			"label": {
+					"color": "#eeeeee"
+			},
+			"emphasis": {
+					"label": {
+							"color": "#eeeeee"
+					}
+			}
+	}
+}

+ 360 - 0
src/views/HealthControl/energyEfficAnalyse/healthPowerCurve/components/current-scatter-chart.vue

@@ -0,0 +1,360 @@
+<template>
+  <div class="chart" :id="id"></div>
+</template>
+
+<script>
+import util from "@tools/util";
+import partten from "@/helper/partten";
+import * as echarts from "echarts";
+import chartTheme from "./current-scatter-chart.json";
+
+export default {
+  name: "currentScatterChart",
+  props: {
+    // 图表宽度
+    width: {
+      type: String,
+      default: "100%",
+    },
+    // 图表高度
+    height: {
+      type: String,
+      default: "350px",
+    },
+    // 图表主标题
+    chartTitle: {
+      type: String,
+      default: "自定义图表组件",
+    },
+    // X 轴配置项
+    xAxisData: {
+      type: Array,
+      default: () => {
+        return [];
+      },
+    },
+    // Y 轴配置项
+    yAxisData: {
+      type: Array,
+      default: () => {
+        return [];
+      },
+    },
+    dataSet: {
+      type: String,
+      default: "",
+    },
+    // 图表核心数据
+    seriesData: {
+      type: Array,
+      default: () => {
+        return [];
+      },
+    },
+    // 是否显示图表图例
+    showLegend: {
+      type: Boolean,
+      default: true,
+    },
+    // 是否默认采用笔刷模式
+    brushSelected: {
+      type: Boolean,
+      default: false,
+    },
+  },
+  data() {
+    return {
+      id: "",
+      chart: null,
+      color: [
+        "#05bb4c",
+        "#4b55ae",
+        "#fa8c16",
+        "#f8de5b",
+        "#1a93cf",
+        "#c531c7",
+        "#bd3338",
+      ],
+      theme: "dark",
+    };
+  },
+  computed: {
+    collapse() {
+      return this.$store.state.collapse;
+    },
+  },
+  watch: {
+    height() {
+      if (this.chart) {
+        this.chart.resize();
+      }
+    },
+    collapse(val) {
+      if (this.chart) {
+        setTimeout(() => {
+          this.chart.resize();
+        }, 300);
+      }
+    },
+  },
+  methods: {
+    resize() {},
+    initChart() {
+      const that = this;
+      echarts.registerTheme("chartTheme", chartTheme);
+      let myChart = echarts.init(
+        document.getElementById(this.id),
+        "chartTheme"
+      );
+      that.chart = myChart;
+      //指定图表的配置项和数据
+      const option = {
+        //标题
+        title: {
+          text: that.chartTitle,
+          right: 440,
+          top: 4,
+          textStyle: {
+            fontSize: 14,
+            color: that.theme === "dark" ? partten.getColor("grayl") : "#000",
+          },
+        },
+        // backgroundColor:
+        //   that.theme === "dark"
+        //     ? "rgba(0,0,0,0.4)"
+        //     : "rgba(255,255,255,0.5)",
+        //工具箱
+        color: [
+          "#3D54BE",
+          "rgb(255,0,0)",
+          "#a1a1a1",
+          "#0098d9",
+          "#FF8700",
+          "#005eaa",
+          "#cda819",
+          "#32a487",
+        ],
+        toolbox: {
+          show: true,
+          x: "right",
+          position: [10, 10],
+          // backgroundColor:'rgba(0,0,0,0.4)',
+          borderColor: partten.getColor("gray"),
+          textStyle: {
+            fontSize: util.vh(16),
+            color: partten.getColor("gray"),
+          },
+          iconStyle: {
+            borderColor: partten.getColor("gray"),
+          },
+          emphasis: {
+            iconStyle: {
+              borderColor: partten.getColor("gray"),
+            },
+          },
+        },
+        tooltip: {
+          trigger: "item",
+          axisPointer: {
+            type: "cross",
+          },
+          backgroundColor: "rgba(0,0,0,0.4)",
+          borderColor: partten.getColor("gray"),
+          textStyle: {
+            fontSize: util.vh(16),
+            color: "#fff",
+          },
+          formatter(params) {
+            return params.value?.x
+              ? `${params.seriesName}<br />风速:${params.value.x} m/s<br />功率:${params.value.y} kW`
+              : `${params.name}`;
+          },
+        },
+        brush: {
+          seriesIndex: [2, 3],
+          yAxisIndex: 0,
+          transformable: true,
+          throttleType: "debounce",
+          throttleDelay: 1000,
+          removeOnClick: true,
+          brushType: "polygon",
+          brushMode: "multiple",
+          brushStyle: {
+            borderWidth: 1,
+            borderColor: "#ff2424",
+          },
+        },
+        dataZoom: [
+          {
+            type: "inside", //图表下方的伸缩条
+            show: false, //是否显示
+            realtime: true, //拖动时,是否实时更新系列的视图
+            start: 0, //伸缩条开始位置(1-100),可以随时更改
+            end: 100, //伸缩条结束位置(1-100),可以随时更改
+          },
+          {
+            type: "slider", //图表下方的伸缩条
+            show: false, //是否显示
+            realtime: true, //拖动时,是否实时更新系列的视图
+            start: 0, //伸缩条开始位置(1-100),可以随时更改
+            end: 100, //伸缩条结束位置(1-100),可以随时更改
+          },
+        ],
+        textStyle: {
+          fontSize: 16,
+          color: that.theme === "dark" ? "#fff" : "#000",
+        },
+        //图例-每一条数据的名字
+        legend: {
+          show: that.showLegend,
+          data: ["拟合功率", "保证功率", "无用点", "有用点", "Cp值"],
+          right: "120",
+          top: "5",
+          // icon: "circle",
+          itemWidth: 6,
+          inactiveColor:
+            that.theme === "dark" ? partten.getColor("gray") : "#000",
+          textStyle: {
+            color: that.theme === "dark" ? partten.getColor("grayl") : "#000",
+            fontSize: 12,
+          },
+        },
+        grid: {
+          top: 48,
+          left: 40,
+          right: 45,
+          bottom: 24,
+          containLabel: true,
+        },
+        //x轴
+        xAxis: [
+          {
+            name: "m/s",
+            nameTextStyle: {
+              color: "#838383",
+            },
+            type: "value",
+            boundaryGap: false,
+            data: that.xAxisData || [],
+            min: 0,
+            max: 25,
+            interval: 1,
+            axisLabel: {
+              formatter: "{value}",
+            },
+            splitLine: {
+              show: false,
+            },
+            textStyle: {
+              color: that.theme === "dark" ? partten.getColor("gray") : "#000",
+            },
+          },
+        ],
+        //y轴没有显式设置,根据值自动生成y轴
+        yAxis: [
+          {
+            splitLine: { show: false },
+            position: "left",
+            min: 0,
+            name: "kW",
+            nameTextStyle: {
+              color: "#838383",
+            },
+          },
+          {
+            splitLine: { show: false },
+            position: "right",
+            min: 0,
+          },
+        ],
+        animation: true,
+        dataset: that.dataSet.length ? JSON.parse(that.dataSet) : [],
+        //数据-data是最终要显示的数据
+        series: that.seriesData,
+      };
+
+      that.resize = function () {
+        myChart.resize();
+      };
+
+      window.addEventListener("resize", that.resize);
+
+      myChart.setOption(option);
+      if (that.brushSelected) {
+        myChart.dispatchAction({
+          type: "takeGlobalCursor",
+          // 如果想变为“可刷选状态”,必须设置。不设置则会关闭“可刷选状态”。
+          key: "brush",
+          brushOption: {
+            seriesIndex: [2, 3],
+            yAxisIndex: 0,
+            transformable: true,
+            throttleType: "debounce",
+            throttleDelay: 1000,
+            removeOnClick: true,
+            brushType: "polygon",
+            brushMode: "multiple",
+            brushStyle: {
+              borderWidth: 1,
+              color: "rgba(255,36,36,0.2)",
+              borderColor: "#ff2424",
+            },
+          },
+        });
+      }
+      myChart.off("brushSelected");
+      myChart.on("brushSelected", (params) => {
+        that.$emit("getSelected", params.batch || []);
+      });
+      myChart.off("click");
+      myChart.on("click", (params) => {
+        // console.log(params)
+        if (params.componentType === "markArea") {
+          myChart.dispatchAction({
+            type: "brush",
+            areas: [
+              {
+                xAxisIndex: 0,
+                brushType: "lineX",
+                coordRange: [params.data.coord[0][0], params.data.coord[1][0]],
+              },
+            ],
+          });
+        }
+      });
+    },
+  },
+  created() {
+    this.id = "chart-" + util.newGUID();
+  },
+  mounted() {
+    // this.$nextTick(() => {
+    this.$el.style.width = this.width;
+    this.$el.style.height = this.height;
+    this.initChart();
+    if (this.chart) {
+      this.chart.resize();
+    }
+    // });
+  },
+  updated() {
+    // console.log('update')
+    let myChart = echarts.init(document.getElementById(this.id));
+    myChart.dispose();
+    this.$nextTick(() => {
+      this.initChart();
+    });
+  },
+  unmounted() {
+    window.removeEventListener("resize", this.resize);
+  },
+};
+</script>
+
+<style>
+.chart {
+  width: 100%;
+  height: 100%;
+  display: inline-block;
+}
+</style>

+ 262 - 0
src/views/HealthControl/energyEfficAnalyse/healthPowerCurve/index copy.vue

@@ -0,0 +1,262 @@
+<template>
+  <div class="draught-fan-list">
+    <div class="query mg-b-8">
+      <div class="query-items">
+        <div class="query-item">
+          <div class="lable">场站:</div>
+          <div class="search-input">
+            <el-select
+              v-model="wpId"
+              clearable
+              placeholder="请选择"
+              popper-class="select"
+              @change="
+                (wpId) => {
+                  getWt(wpId, true);
+                }
+              "
+            >
+              <el-option
+                v-for="item in wpArray"
+                :key="item.id"
+                :value="item.id"
+                :label="item.name"
+              />
+            </el-select>
+          </div>
+        </div>
+        <div class="query-item">
+          <div class="lable">风机:</div>
+          <div class="search-input">
+            <el-select
+              v-model="wtId"
+              clearable
+              placeholder="请选择"
+              popper-class="select"
+            >
+              <el-option
+                v-for="item in wtArray"
+                :key="item.id"
+                :value="item.id"
+                :label="item.nemCode"
+              />
+            </el-select>
+          </div>
+        </div>
+        <div class="query-item">
+          <div class="lable">日期:</div>
+          <div class="search-input">
+            <el-date-picker
+              v-model="recorddate"
+              type="month"
+              value-format="YYYY-MM"
+              placeholder="选择日期"
+              popper-class="date-select"
+            >
+            </el-date-picker>
+          </div>
+        </div>
+      </div>
+      <div class="query-actions">
+        <button class="btn green" @click="search">搜索</button>
+      </div>
+    </div>
+    <div style="height: calc(100% - 40px); padding-bottom: 10px">
+      <ScatterLineChart
+        xTitle="风速(m/s)"
+        yTitle="功率(kw)"
+        :showLegend="true"
+        height="100%"
+        :lineData="chartLineData"
+        :data="chartData"
+      />
+    </div>
+  </div>
+</template>
+
+<script>
+import ScatterLineChart from "@com/chart/combination/scatter-line-chart.vue";
+import api1 from "@api/economic/index.js";
+import api from "@api/wisdomOverhaul/energy/index.js";
+export default {
+  // 名称
+  name: "healthPowerCurve",
+
+  // 使用组件
+  components: {
+    ScatterLineChart,
+  },
+
+  // 数据
+  data() {
+    return {
+      isAsc: "asc",
+      wpArray: [],
+      wtArray: [],
+      wpId: "",
+      wtId: "",
+      recorddate: new Date(new Date().getTime() - 3600 * 1000 * 24).formatDate(
+        "yyyy-MM"
+      ),
+      chartLineData: {
+        xTitle: "风速",
+        yTitle: "功率",
+        legends: [],
+        data: [],
+      },
+      chartData: [
+        {
+          title: "",
+          value: [],
+        },
+      ],
+    };
+  },
+
+  // 函数
+  methods: {
+    // 获取风场
+    getWp(reGetWp) {
+      api1
+        .getWpList({
+          type: "-1",
+        })
+        .then((res) => {
+          if (res.data.code === 200) {
+            this.wpArray = res.data.data;
+            this.wpId = res.data.data[0].id;
+            this.getWt(this.wpId, reGetWp);
+          }
+        });
+    },
+
+    // 获取风机
+    getWt(wpid, reGetWp) {
+      if (wpid) {
+        api1
+          .getWtList({
+            wpId: wpid,
+          })
+          .then((res) => {
+            if (res.code === 200) {
+              this.wtArray = res.data;
+              this.wtId = res.data[0].id;
+              if (!reGetWp) {
+                this.getChartData();
+              }
+            }
+          });
+      }
+    },
+
+    // 获取图表数据
+    getChartData() {
+      this.BASE.showLoading();
+      api
+        .scatterScatterWtAjax({
+          wtId: this.wtId,
+          year: this.recorddate.split("-")[0],
+          month: this.recorddate.split("-")[1],
+        })
+        .then((res) => {
+          if (res.data.line.length || res.data.scatter.length) {
+            let chartLineData = {
+              xTitle: "风速",
+              yTitle: "功率",
+              legends: [],
+              // data: [[], []],
+              data: [[]],
+            };
+
+            res.data.line.forEach((ele) => {
+              // chartLineData.data[0].push(ele[0]);
+              // chartLineData.data[1].push(ele[1]);
+              chartLineData.data[0].push(ele[1]);
+            });
+
+            let scatter = [];
+            res.data?.scatter?.forEach((ele) => {
+              if (ele[0] < 30 && ele[1] < 3000) {
+                scatter.push(ele);
+              }
+            });
+
+            let chartData = [
+              {
+                title: "功率曲线拟合",
+                value: scatter,
+              },
+            ];
+
+            this.chartLineData = chartLineData;
+            this.chartData = chartData;
+          } else {
+            this.BASE.showMsg({
+              msg: "所选日期区间暂无数据",
+            });
+          }
+          this.BASE.closeLoading();
+        });
+    },
+
+    search() {
+      if (!this.wpId || !this.wtId) {
+        this.BASE.showMsg({
+          msg: "场站与风机为必选项",
+        });
+      } else {
+        this.getChartData();
+      }
+    },
+  },
+
+  created() {
+    this.getWp();
+  },
+
+  mounted() {},
+
+  unmounted() {},
+};
+</script>
+
+<style lang="less" scoped>
+.draught-fan-list {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  padding: 10px 20px;
+  .btn-group-tabs {
+    display: flex;
+    flex-direction: row;
+
+    .photovoltaic {
+      margin-left: 1.481vh;
+    }
+  }
+
+  .df-table {
+    border: 0.093vh solid fade(@darkgray, 50%);
+    position: relative;
+    overflow: auto;
+    flex-grow: 1;
+    margin-top: 1.481vh;
+    height: 30vh;
+
+    &:before {
+      content: "";
+      width: 0.37vh;
+      height: 0.37vh;
+      background: @write;
+      position: absolute;
+      left: 0.278vh;
+      top: 0.278vh;
+    }
+
+    tbody {
+      height: calc(100vh - 166px);
+    }
+  }
+}
+</style>

+ 678 - 152
src/views/HealthControl/energyEfficAnalyse/healthPowerCurve/index.vue

@@ -1,74 +1,246 @@
 <template>
   <div class="draught-fan-list">
-    <div class="query mg-b-8">
-      <div class="query-items">
-        <div class="query-item">
-          <div class="lable">场站:</div>
-          <div class="search-input">
-            <el-select
-              v-model="wpId"
-              clearable
-              placeholder="请选择"
-              popper-class="select"
-              @change="
-                (wpId) => {
-                  getWt(wpId, true);
-                }
-              "
-            >
-              <el-option
-                v-for="item in wpArray"
-                :key="item.id"
-                :value="item.id"
-                :label="item.name"
-              />
-            </el-select>
+    <div class="form-wrapper">
+      <div class="search mg-b-8">
+        <div class="search-items">
+          <div class="search-item">
+            <div class="lable">场站:</div>
+            <div class="search-content">
+              <el-select
+                v-model="station"
+                clearable
+                size="mini"
+                placeholder="请选择"
+                popper-class="select"
+                @change="
+                  (station) => {
+                    getWt(station, true);
+                  }
+                "
+              >
+                <el-option
+                  v-for="item in wpArray"
+                  :key="item.id"
+                  :value="item.id"
+                  :label="item.name"
+                />
+              </el-select>
+            </div>
           </div>
-        </div>
-        <div class="query-item">
-          <div class="lable">风机:</div>
-          <div class="search-input">
-            <el-select
-              v-model="wtId"
-              clearable
-              placeholder="请选择"
-              popper-class="select"
-            >
-              <el-option
-                v-for="item in wtArray"
-                :key="item.id"
-                :value="item.id"
-                :label="item.nemCode"
-              />
-            </el-select>
+          <div class="search-item">
+            <div class="lable">风机:</div>
+            <div class="search-content">
+              <el-select
+                v-model="wtIds"
+                clearable
+                size="mini"
+                :multiple="isMultiple"
+                collapse-tags
+                placeholder="请选择"
+                popper-class="select"
+              >
+                <el-option
+                  v-for="item in wtArray"
+                  :key="item.id"
+                  :value="item.id"
+                  :label="item.nemCode"
+                />
+              </el-select>
+            </div>
+          </div>
+          <div class="search-item">
+            <div class="lable">开始时间:</div>
+            <div class="search-content">
+              <el-date-picker
+                v-model="st"
+                type="date"
+                size="mini"
+                :disabled-date="disabledDate"
+                placeholder="选择日期"
+                popper-class="date-select"
+              >
+              </el-date-picker>
+            </div>
+          </div>
+          <div class="search-item">
+            <div class="lable">结束时间:</div>
+            <div class="search-content">
+              <el-date-picker
+                v-model="et"
+                type="date"
+                :disabled-date="disabledDate2"
+                size="mini"
+                placeholder="选择日期"
+                popper-class="date-select"
+              >
+              </el-date-picker>
+            </div>
+          </div>
+          <div class="search-item custom">
+            <div class="lable">等间隔:</div>
+            <div class="search-content" style="width: 530px">
+              <el-radio-group v-model="interval">
+                <el-radio
+                  v-for="item in radioList"
+                  :key="item.code"
+                  size="mini"
+                  :label="item.code"
+                  >{{ item.name }}</el-radio
+                >
+              </el-radio-group>
+            </div>
           </div>
         </div>
-        <div class="query-item">
-          <div class="lable">日期:</div>
-          <div class="search-input">
-            <el-date-picker
-              v-model="recorddate"
-              type="month"
-              value-format="YYYY-MM"
-              placeholder="选择日期"
-              popper-class="date-select"
-            >
-            </el-date-picker>
+      </div>
+      <div class="search mg-b-8">
+        <div class="search-items">
+          <div class="search-item">
+            <div class="lable">最大风速:</div>
+            <div class="search-content">
+              <el-input-number
+                v-model="maxs"
+                size="mini"
+                clearable
+                :min="mins + 1"
+                :max="25"
+                placeholder="请选择"
+                popper-class="select"
+              >
+              </el-input-number>
+            </div>
+          </div>
+          <div class="search-item">
+            <div class="lable">最小风速:</div>
+            <div class="search-content">
+              <el-input-number
+                v-model="mins"
+                size="mini"
+                clearable
+                :min="3"
+                :max="maxs - 1"
+                placeholder="请选择"
+                popper-class="select"
+              >
+              </el-input-number>
+            </div>
+          </div>
+          <div class="search-item">
+            <div class="lable">最大功率:</div>
+            <div class="search-content">
+              <el-input-number
+                v-model="maxp"
+                size="mini"
+                clearable
+                :min="minp + 1"
+                placeholder="请选择"
+                popper-class="select"
+              >
+              </el-input-number>
+            </div>
+          </div>
+          <div class="search-item">
+            <div class="lable">最小功率:</div>
+            <div class="search-content">
+              <el-input-number
+                v-model="minp"
+                size="mini"
+                :min="0"
+                clearable
+                placeholder="请选择"
+                popper-class="select"
+              >
+              </el-input-number>
+            </div>
+          </div>
+          <div class="search-item">
+            <div class="lable">多项式:</div>
+            <div class="search-content">
+              <el-select v-model="dimension" size="mini">
+                <el-option
+                  v-for="item in 10"
+                  :key="item"
+                  :value="item"
+                  :label="item"
+                />
+              </el-select>
+            </div>
+          </div>
+          <div class="search-item">
+            <div class="lable">拟合方式:</div>
+            <div class="search-content">
+              <el-select v-model="mode" size="mini">
+                <el-option
+                  v-for="item in selectList"
+                  :key="item.code"
+                  size="mini"
+                  :value="item.code"
+                  :label="item.name"
+                />
+              </el-select>
+            </div>
           </div>
         </div>
       </div>
-      <div class="query-actions">
-        <button class="btn green" @click="search">搜索</button>
+      <div class="search mg-b-8">
+        <div class="search-items">
+          <div class="search-item custom">
+            <div class="lable">筛选条件:</div>
+            <div class="search-content">
+              <el-checkbox-group v-model="checkedList" :min="1">
+                <el-checkbox
+                  v-for="item in checkList"
+                  :key="item.code"
+                  :label="item.code"
+                  >{{ item.name }}</el-checkbox
+                >
+              </el-checkbox-group>
+            </div>
+          </div>
+        </div>
+        <div class="search-actions">
+          <el-button size="mini" class="btn-search" @click="search"
+            >曲线拟合</el-button
+          >
+          <el-button
+            size="mini"
+            :class="{ 'btn-active': isChartArea }"
+            :disabled="!seriesData?.length"
+            @click="funChartArea"
+            >区域划分</el-button
+          >
+        </div>
       </div>
     </div>
-    <div style="height: calc(100% - 40px); padding-bottom: 10px">
-      <ScatterLineChart
+    <div style="height: calc(100% - 125px); padding-bottom: 10px">
+      <!-- <ScatterLineChart
         xTitle="风速(m/s)"
         yTitle="功率(kw)"
         :showLegend="true"
         height="100%"
         :lineData="chartLineData"
         :data="chartData"
+      /> -->
+      <CurrentScatterChart
+        ref="chartRef"
+        width="100%"
+        height="100%"
+        :chartTitle="
+          avgObj.title +
+          '&nbsp;&nbsp;' +
+          '平均Cp值:' +
+          avgObj.cpavg +
+          '; 静风频率:' +
+          avgObj.frequency +
+          '%; 曲线偏差率:' +
+          avgObj.pcratio +
+          '%'
+        "
+        :xAxisData="xAxisData"
+        :yAxisData="{ splitLine: { show: false } }"
+        :seriesData="seriesData"
+        :brushSelected="!isChartArea"
+        :showLegend="true"
+        :dataSet="dataSet"
       />
     </div>
   </div>
@@ -76,45 +248,98 @@
 
 <script>
 import ScatterLineChart from "@com/chart/combination/scatter-line-chart.vue";
+import CurrentScatterChart from "./components/current-scatter-chart.vue";
 import api1 from "@api/economic/index.js";
 import api from "@api/wisdomOverhaul/energy/index.js";
+import dayjs from "dayjs";
+import { getPowerFittingId, getPowerFittingChart } from "@/api/powerAnalyse.js";
 export default {
   // 名称
   name: "healthPowerCurve",
 
   // 使用组件
   components: {
-    ScatterLineChart,
+    // ScatterLineChart,
+    CurrentScatterChart,
   },
 
   // 数据
   data() {
     return {
+      checkList: [
+        { name: "非并网", code: "isfbw" },
+        { name: "非合理值", code: "isfhl" },
+        { name: "并网后十分钟", code: "isbw" },
+        { name: "停机前十分钟", code: "istj" },
+        { name: "功率曲线偏差", code: "isglpc" },
+      ],
+      selectList: [
+        { name: "单台拟合", code: 0 },
+        { name: "合并拟合", code: 1 },
+        // { name: "同名拟合", code: 2 },
+      ],
+
+      radioList: [
+        { name: "一秒钟", code: 1 },
+        { name: "一分钟", code: 60 },
+        { name: "十分钟", code: 600 },
+        { name: "十五分钟", code: 900 },
+      ],
       isAsc: "asc",
       wpArray: [],
       wtArray: [],
-      wpId: "",
-      wtId: "",
-      recorddate: new Date(new Date().getTime() - 3600 * 1000 * 24).formatDate(
-        "yyyy-MM"
-      ),
-      chartLineData: {
-        xTitle: "风速",
-        yTitle: "功率",
-        legends: [],
-        data: [],
+      station: "",
+      wtIds: "",
+      st: dayjs().add(-1, "month").startOf("day").format("YYYY-MM-DD HH:mm:ss"),
+      et: dayjs().startOf("day").format("YYYY-MM-DD HH:mm:ss"),
+      interval: 600,
+      maxs: 25,
+      mins: 3,
+      maxp: 2500,
+      minp: 0,
+      checkedList: ["isfbw", "isfhl", "isbw", "istj", "isglpc"],
+      dimension: 10,
+      mode: 0,
+      fittingId: "",
+      seriesData: [],
+      avgObj: {
+        //平均cpz等
+        title: "",
+        cpavg: "",
+        frequency: "",
+        pcratio: "",
       },
-      chartData: [
-        {
-          title: "",
-          value: [],
-        },
-      ],
+      markDot: {
+        //3-5 point点等
+        pcl5: null,
+        pcl10: null,
+        pcl12: null,
+        pcl25: null,
+      },
+      xAxisData: [],
+      dataSet: "",
+      isChartArea: false,
     };
   },
 
   // 函数
   methods: {
+    // 时间选择器第一个禁用
+    disabledDate(time) {
+      if (this.et) {
+        return time.getTime() > Date.parse(this.et);
+      } else {
+        return null;
+      }
+    },
+    // 时间选择器第二个禁用
+    disabledDate2(time) {
+      if (this.st) {
+        return time.getTime() < Date.parse(this.st);
+      } else {
+        return null;
+      }
+    },
     // 获取风场
     getWp(reGetWp) {
       api1
@@ -124,12 +349,11 @@ export default {
         .then((res) => {
           if (res.data.code === 200) {
             this.wpArray = res.data.data;
-            this.wpId = res.data.data[0].id;
-            this.getWt(this.wpId, reGetWp);
+            this.station = res.data.data[0].id;
+            this.getWt(this.station, reGetWp);
           }
         });
     },
-
     // 获取风机
     getWt(wpid, reGetWp) {
       if (wpid) {
@@ -140,72 +364,303 @@ export default {
           .then((res) => {
             if (res.code === 200) {
               this.wtArray = res.data;
-              this.wtId = res.data[0].id;
+              this.wtIds = this.isMultiple ? [res.data[0].id] : res.data[0].id;
               if (!reGetWp) {
-                this.getChartData();
+                this.search();
               }
             }
           });
       }
     },
-
-    // 获取图表数据
-    getChartData() {
+    //获取拟合id
+    getChartId() {
       this.BASE.showLoading();
-      api
-        .scatterScatterWtAjax({
-          wtId: this.wtId,
-          year: this.recorddate.split("-")[0],
-          month: this.recorddate.split("-")[1],
-        })
-        .then((res) => {
-          if (res.data.line.length || res.data.scatter.length) {
-            let chartLineData = {
-              xTitle: "风速",
-              yTitle: "功率",
-              legends: [],
-              // data: [[], []],
-              data: [[]],
-            };
-
-            res.data.line.forEach((ele) => {
-              // chartLineData.data[0].push(ele[0]);
-              // chartLineData.data[1].push(ele[1]);
-              chartLineData.data[0].push(ele[1]);
-            });
-
-            let scatter = [];
-            res.data?.scatter?.forEach((ele) => {
-              if (ele[0] < 30 && ele[1] < 3000) {
-                scatter.push(ele);
-              }
-            });
-
-            let chartData = [
-              {
-                title: "功率曲线拟合",
-                value: scatter,
-              },
-            ];
-
-            this.chartLineData = chartLineData;
-            this.chartData = chartData;
-          } else {
-            this.BASE.showMsg({
-              msg: "所选日期区间暂无数据",
-            });
+      let obj = {
+        isfbw: false,
+        isfhl: false,
+        isbw: false,
+        istj: false,
+        isglpc: false,
+      };
+      this.checkedList.length &&
+        this.checkedList.forEach((i) => {
+          for (let key in obj) {
+            if (key == i) {
+              obj[key] = true;
+            }
           }
-          this.BASE.closeLoading();
         });
+      let params = {
+        station: this.station,
+        wtIds: this.isMultiple ? this.wtIds.join(",") : this.wtIds,
+        st: dayjs(this.st).valueOf(),
+        et: dayjs(this.et).valueOf(),
+        interval: this.interval,
+        maxs: this.maxs,
+        mins: this.mins,
+        maxp: this.maxp,
+        minp: this.minp,
+        ...obj,
+        dimension: this.dimension,
+        mode: this.mode,
+      };
+      getPowerFittingId(params).then((res) => {
+        if (res.code == 200) {
+          this.fittingId = res.data.id;
+          this.getChartData();
+        } else {
+          this.BASE.closeLoading();
+          this.$message.error(res.msg);
+          this.clear();
+        }
+      });
     },
-
+    //清空数据
+    clear() {
+      this.fittingId = "";
+      this.seriesData = [];
+      this.avgObj = {
+        //平均cpz等
+        title: "",
+        cpavg: "",
+        frequency: "",
+        pcratio: "",
+      };
+      this.markDot = {
+        //3-5 point点等
+        pcl5: null,
+        pcl10: null,
+        pcl12: null,
+        pcl25: null,
+      };
+      this.xAxisData = [];
+      this.dataSet = "";
+    },
+    //是否区域划分
+    funChartArea() {
+      this.BASE.showLoading();
+      if (this.seriesData.length) {
+        if (!this.isChartArea) {
+          // 请求一下
+          this.seriesData[0] = {
+            ...this.seriesData[0],
+            markLine: {
+              symbol: "none",
+              label: {
+                show: false,
+              },
+              lineStyle: {
+                color: "rgba(96,174,255, 1)",
+              },
+              data: [
+                {
+                  xAxis: 3,
+                  valueIndex: 0,
+                },
+                {
+                  xAxis: 5,
+                  valueIndex: 0,
+                },
+                {
+                  xAxis: 10,
+                  valueIndex: 0,
+                },
+                {
+                  xAxis: 12,
+                  valueIndex: 0,
+                },
+                {
+                  xAxis: 25,
+                  valueIndex: 0,
+                },
+              ],
+            },
+            markArea: {
+              label: {
+                fontSize: 13,
+                color: "#ccc",
+                fontWeight: "normal",
+                fontFamily: "Arial",
+              },
+              itemStyle: {
+                color: "rgba(236,245,255, 0)",
+              },
+              emphasis: {
+                itemStyle: {
+                  color: "rgba(96,174,255, 0.5)",
+                },
+              },
+              data: [
+                [
+                  {
+                    name: `3~5m 偏差率: ${this.markDot.pcl5}%`,
+                    xAxis: 3,
+                  },
+                  {
+                    xAxis: 5,
+                  },
+                ],
+                [
+                  {
+                    name: `5~10m 偏差率: ${this.markDot.pcl10}%`,
+                    xAxis: 5,
+                  },
+                  {
+                    xAxis: 10,
+                  },
+                ],
+                [
+                  {
+                    name: `10~12m 偏差率: ${this.markDot.pcl12}%`,
+                    xAxis: 10,
+                  },
+                  {
+                    xAxis: 12,
+                  },
+                ],
+                [
+                  {
+                    name: `12~25m 偏差率: ${this.markDot.pcl25}%`,
+                    xAxis: 12,
+                  },
+                  {
+                    xAxis: 25,
+                  },
+                ],
+              ],
+            },
+          };
+          this.isChartArea = true;
+          this.BASE.closeLoading();
+        } else {
+          this.seriesData[0] = {
+            ...this.seriesData[0],
+            markLine: null,
+            markArea: null,
+          };
+          this.isChartArea = false;
+          this.BASE.closeLoading();
+        }
+      }
+    },
+    // 获取图表数据
+    getChartData() {
+      getPowerFittingChart({
+        id: this.fittingId,
+      }).then((res) => {
+        if (res.code == 200) {
+          let chartRes = {
+            scatterhs: [[]],
+            scatterls: [[]],
+            sjgl: [[]],
+            llgl: [[]],
+            cpz: [[]],
+          };
+          chartRes = res.data;
+          this.markDot.pcl5 = chartRes.obj.pc5ratio;
+          this.markDot.pcl10 = chartRes.obj.pc10ratio;
+          this.markDot.pcl12 = chartRes.obj.pc12ratio;
+          this.markDot.pcl25 = chartRes.obj.pc25ratio;
+          this.avgObj.title =
+            this.mode == 0
+              ? chartRes.obj.code
+              : chartRes.obj.path
+                  .substring(
+                    chartRes.obj.path.indexOf(chartRes.obj.station + "_") +
+                      (chartRes.obj.station + "_").length
+                  )
+                  .split("_")[0];
+          this.avgObj.cpavg = Number(chartRes.obj.cpavg).toFixed(2);
+          this.avgObj.frequency = Number(chartRes.obj.frequency).toFixed(2);
+          this.avgObj.pcratio = Number(chartRes.obj.pcratio).toFixed(2);
+          this.dataSet = JSON.stringify([
+            {
+              source: chartRes.wyd,
+            },
+            {
+              source: chartRes.yyd,
+            },
+          ]);
+          this.seriesData = [
+            {
+              name: "拟合功率",
+              type: "line",
+              symbol: "line", //设定为实心点
+              symbolSize: 0, //设定实心点的大小
+              smooth: true, //这个是把线变成曲线
+              data: chartRes.sjgl,
+              xAxisIndex: 0,
+            },
+            {
+              name: "保证功率",
+              type: "line",
+              symbol: "line", //设定为实心点
+              symbolSize: 0, //设定实心点的大小
+              smooth: true, //这个是把线变成曲线
+              data: chartRes.llgl,
+              xAxisIndex: 0,
+            },
+            {
+              type: "effectScatter",
+              showEffectOn: "emphasis",
+              rippleEffect: {
+                scale: 1,
+              },
+              name: "无用点",
+              symbolSize: (data) => {
+                return data.s ? (data.s > 10 ? 10 : data.s) : 4;
+              },
+              datasetIndex: 0,
+              encode: {
+                x: "x",
+                y: "y",
+              },
+              xAxisIndex: 0,
+              yAxisIndex: 0,
+            },
+            {
+              type: "effectScatter",
+              showEffectOn: "emphasis",
+              rippleEffect: {
+                scale: 1,
+              },
+              name: "有用点",
+              symbolSize: (data) => {
+                return data.s ? (data.s > 10 ? 10 : data.s) : 4;
+              },
+              datasetIndex: 1,
+              encode: {
+                x: "x",
+                y: "y",
+              },
+              xAxisIndex: 0,
+              yAxisIndex: 0,
+            },
+            {
+              name: "Cp值",
+              type: "line",
+              symbol: "line", //设定为实心点
+              symbolSize: 0, //设定实心点的大小
+              smooth: true, //这个是把线变成曲线
+              data: chartRes.cpz,
+              xAxisIndex: 0,
+              yAxisIndex: 1,
+            },
+          ];
+          this.$message.success(res.msg);
+        }
+        this.BASE.closeLoading();
+      });
+    },
+    //拟合按钮
     search() {
-      if (!this.wpId || !this.wtId) {
+      this.isChartArea = false;
+      if (!this.station || !this.wtIds || !this.wtIds.length) {
         this.BASE.showMsg({
           msg: "场站与风机为必选项",
         });
       } else {
-        this.getChartData();
+        this.getChartId();
       }
     },
   },
@@ -214,7 +669,22 @@ export default {
     this.getWp();
   },
 
-  mounted() {},
+  watch: {
+    mode(val) {
+      if (val == 0) {
+        this.isMultiple = false;
+        this.wtIds =
+          typeof this.wtIds == "string"
+            ? this.wtIds
+            : this.wtIds.length
+            ? this.wtIds[0]
+            : [];
+      } else {
+        this.isMultiple = true;
+        this.wtIds = [this.wtIds];
+      }
+    },
+  },
 
   unmounted() {},
 };
@@ -227,35 +697,91 @@ export default {
   display: flex;
   flex-direction: column;
   padding: 10px 20px;
-  .btn-group-tabs {
-    display: flex;
-    flex-direction: row;
-
-    .photovoltaic {
-      margin-left: 1.481vh;
+  .form-wrapper ::v-deep {
+    .el-checkbox__input {
+      display: block;
     }
-  }
+    .el-input-number {
+      width: 100%;
+      .el-input-number__decrease,
+      .el-input-number__increase {
+        background: rgba(67, 81, 107, 0.2) !important;
 
-  .df-table {
-    border: 0.093vh solid fade(@darkgray, 50%);
-    position: relative;
-    overflow: auto;
-    flex-grow: 1;
-    margin-top: 1.481vh;
-    height: 30vh;
-
-    &:before {
-      content: "";
-      width: 0.37vh;
-      height: 0.37vh;
-      background: @write;
-      position: absolute;
-      left: 0.278vh;
-      top: 0.278vh;
+        position: absolute;
+        z-index: 10;
+        border: 0;
+        // height: 33px;
+        // line-height: 33px;
+        &:hover {
+          color: #05be4c;
+        }
+      }
     }
+    .el-date-editor,
+    .el-select {
+      width: 100%;
+    }
+    .el-radio-group {
+      width: 100%;
+      display: flex;
+      .el-radio {
+        flex: 1;
+      }
+    }
+    .search {
+      display: flex;
+      align-items: center;
+      .search-items {
+        display: flex;
+        align-items: center;
+        .search-item {
+          width: 296px;
+          display: flex;
+          align-items: center;
+          margin-right: 10px;
+          .lable {
+            font-size: 14px;
+            font-family: Microsoft YaHei;
+            font-weight: 400;
+            color: #b3b3b3;
+            margin-right: 5px;
+            width: 65px;
+            white-space: nowrap;
+          }
+          .search-content {
+            flex: 1;
+          }
+          &:nth-last-child(1) {
+            margin-right: 0;
+          }
+        }
+        .custom {
+          width: auto;
+        }
+      }
+      .search-actions {
+        .el-button {
+          background-color: rgba(5, 187, 76, 0.3);
+          border: 1px solid #3b6c53;
+          color: #b3b3b3;
+          font-size: 14px;
+          border: none;
+          width: 108px;
+          min-height: 25px !important;
 
-    tbody {
-      height: calc(100vh - 166px);
+          &.btn-search:hover {
+            background-color: rgba(5, 187, 76, 0.6);
+            color: #ffffff;
+          }
+        }
+        .btn-active {
+          background-color: rgba(5, 187, 76, 0.6);
+          color: #ffffff;
+        }
+      }
+      &:nth-last-child(1) {
+        justify-content: space-between;
+      }
     }
   }
 }

+ 7 - 6
src/views/Home/components/map.vue

@@ -58,7 +58,7 @@
               </span>
               <span class="unit">MW</span>
             </div>
-            <div class="qy-rl" v-if="tabShow == 0">
+            <div class="gf-rl" v-if="tabShow == 0">
               <span class="text">光伏</span>
               <span class="font-num">{{
                 wpId.includes("GDC")
@@ -333,6 +333,7 @@
           height="220px"
           :unit="'MW'"
           :ratio="1000"
+          :id="'cut-power'"
           :orient="'horizontal'"
         />
       </div>
@@ -1079,8 +1080,7 @@
       <template #title>
         <div class="dialog-title">
           <div class="title">
-            {{ showName != "清洁能源实时功率详情" ? currentTitle : ""
-            }}{{ showName }}
+            {{ currentTitle != "全国" ? currentTitle : "" }}{{ showName }}
           </div>
         </div>
       </template>
@@ -1661,21 +1661,21 @@ export default {
               this.powerDataHome = [
                 {
                   title: "清洁能源",
-                  value: (data?.qt?.sjgl / 1000).toFixed(2),
+                  value: (data?.qt?.sjgl).toFixed(2),
                   dialogTitle: "清洁能源实时功率详情",
                   max: 3000,
                   unit: "MW",
                 },
                 {
                   title: "风电",
-                  value: (data?.qt?.fdsjgl / 1000).toFixed(2),
+                  value: (data?.qt?.fdsjgl).toFixed(2),
                   dialogTitle: "风电实时功率详情",
                   max: 3000,
                   unit: "MW",
                 },
                 {
                   title: "光伏",
-                  value: (data?.qt?.gfsjgl / 1000).toFixed(2),
+                  value: (data?.qt?.gfsjgl).toFixed(2),
                   dialogTitle: "光伏实时功率详情",
                   max: 3000,
                   unit: "MW",
@@ -1942,6 +1942,7 @@ export default {
             };
           });
           this.CurveValues = Powertrend.value;
+          console.log(this.CurveValues);
         }
       });
     },

+ 6 - 7
src/views/economicsOperation/analyse/monthlyAnalysis/index.vue

@@ -84,7 +84,7 @@
           ref="month_table"
           style="width: 100%"
         >
-          <el-table-column align="center" label="机组名称" width="170">
+          <el-table-column align="center" label="机组名称" width="60">
             <template #default="scope">
               <span
                 @click="reportDialogFn(scope.row)"
@@ -130,11 +130,11 @@
       custom-class="modal"
       :close-on-click-modal="false"
     >
-      <!-- <template #title>
-                <div class="dialogHeader">
-                    <span>{{ dialogTitle }}号风机{{ pickerTimerYear }}年{{ pickerTimerMonth }}月运行指标性能分析</span>
-                </div>
-            </template> -->
+      <template #title>
+        <div class="dialog-title">
+          <div class="title">运行指标性能分析报告</div>
+        </div>
+      </template>
       <div class="body" :style="pageHeight">
         <report-dialog ref="reportDia"></report-dialog>
       </div>
@@ -339,7 +339,6 @@ export default {
   padding: 0 30px;
   height: 100%;
   .monthMachine_title {
-    padding-left: 10px;
     .leftContent {
       width: 242px;
       height: 41px;

+ 41 - 28
src/views/economicsOperation/analyse/monthlyAnalysis/reportDialog.vue

@@ -114,12 +114,12 @@ export default {
       monthReportData: [],
       loading: false,
       tableHeader: [
-        { name: "指标名称", field: "name", width: "240" },
+        { name: "指标名称", field: "name", width: "270" },
         { name: "本月值", field: "byzb" },
         { name: "去年同期", field: "hqzb" },
-        { name: "同比增长率(%)", field: "hbzb" },
+        { name: "同比增长率(%)", field: "tbzb" },
         { name: "环比", field: "tqzb" },
-        { name: "环比端值(%)", field: "tbzb" },
+        { name: "环比增长率(%)", field: "hbzb" },
       ],
       tabrow: {
         fdl: "实际发电量(万千瓦时)",
@@ -448,7 +448,7 @@ export default {
         yAxis: [
           {
             type: "value",
-            name: "日发电量",
+            name: "日发电量(kWh)",
             // min: 0,
             // max: 250,
             // interval: 50,
@@ -457,21 +457,18 @@ export default {
             },
             axisLabel: {
               color: this.showWhite ? "#000" : "#fff",
-              formatter: "{value} 万(Kwh)",
+              formatter: "{value}",
             },
           },
           {
             type: "value",
-            name: "风速",
-            // min: 0,
-            // max: 25,
-            interval: 5,
+            name: "风速(m/s)",
             nameTextStyle: {
               color: this.showWhite ? "#000" : "#fff",
             },
             axisLabel: {
               color: this.showWhite ? "#000" : "#fff",
-              formatter: "{value}(m/s)",
+              formatter: "{value}",
             },
           },
         ],
@@ -479,12 +476,14 @@ export default {
           {
             name: "日发电量",
             type: "bar",
-            barWidth: 40,
+            barWidth: 25,
+            yAxisIndex: 0,
             data: barData,
           },
           {
             name: "风速",
             type: "line",
+            yAxisIndex: 1,
             data: lineData,
           },
         ],
@@ -516,35 +515,35 @@ export default {
           name: "限电损失电量",
           type: "bar",
           stack: "one",
-          barWidth: "10%",
+          barWidth: "25",
           data: res.ws.map((i) => i.xdss),
         },
         {
           name: "性能未达标损失电量",
           type: "bar",
           stack: "one",
-          barWidth: "10%",
+          barWidth: "25",
           data: res.ws.map((i) => i.xnss),
         },
         {
           name: "检修损失电量",
           type: "bar",
           stack: "one",
-          barWidth: "10%",
+          barWidth: "25",
           data: res.ws.map((i) => i.jxss),
         },
         {
           name: "故障损失电量",
           type: "bar",
           stack: "one",
-          barWidth: "10%",
+          barWidth: "25",
           data: res.ws.map((i) => i.gzss),
         },
         {
           name: "受累损失电量",
           type: "bar",
           stack: "one",
-          barWidth: "10%",
+          barWidth: "25",
           data: res.ws.map((i) => i.slss),
         },
       ];
@@ -556,14 +555,7 @@ export default {
     getFiveBarEchart(xAxis, lenged, series) {
       let option = {
         backgroundColor: this.showWhite ? "#fff" : "",
-        color: [
-          "#05bb4c",
-          "#4b55ae",
-          "#e17e23",
-          "#02BB4C",
-          "#EDB32F",
-          "#EDEB2F",
-        ],
+        color: ["#c531c7", "#05bb4c", "#e17e23", "#ba3237", "#000"],
         title: {
           text: "损失电量分析",
           textStyle: {
@@ -595,7 +587,7 @@ export default {
         yAxis: [
           {
             type: "value",
-            name: "",
+            name: "kWh",
             nameTextStyle: {
               color: this.showWhite ? "#000" : "#fff",
             },
@@ -658,6 +650,7 @@ export default {
         color: ["#05bb4c", "#4b55ae"],
         title: {
           text: "损失电量分析",
+          textAlign: "left",
           textStyle: {
             color: this.showWhite ? "#000" : "#fff",
           },
@@ -703,9 +696,17 @@ export default {
   margin-top: 10px;
 
   .buttons {
-    background-color: rgba(0, 70, 199, 1);
+    background-color: rgba(5, 187, 76, 1);
+    border: 1px solid #3b6c53;
     color: #fff;
     font-size: 14px;
+    border: none;
+    width: 108px;
+    min-height: 25px !important;
+    // &:hover {
+    //   background-color: rgba(5, 187, 76, 0.6);
+    //   color: #000;
+    // }
   }
 }
 
@@ -792,11 +793,18 @@ export default {
     margin: 10px;
     padding-bottom: 10px;
     background: rgba(255, 255, 255, 0.4);
-
+    .el-table th.el-table__cell {
+      border-right: 0px !important;
+    }
     .el-table__header-wrapper {
       .has-gutter {
         tr {
           color: #000;
+          th {
+            background: #9e9d9d;
+            color: #000;
+            font-weight: 700;
+          }
         }
       }
     }
@@ -804,7 +812,12 @@ export default {
     .el-table__body-wrapper {
       .el-table__body {
         tr {
-          color: #000;
+          td {
+            color: #000;
+          }
+          //   &.el-table__row--striped {
+          //     background: #464444;
+          //   }
         }
       }
     }

+ 100 - 42
src/views/economicsOperation/analyse/standAloneAnalyse/windDetailDialog.vue

@@ -21,7 +21,7 @@
           @click="tabSelect(2)"
           :class="{ active: tabIndex == 2 }"
         >
-          风场玫瑰图
+          测风塔玫瑰图
         </div>
         <div
           class="selections_btn"
@@ -41,6 +41,38 @@
       <div class="windDetailseach">
         <div class="query-items">
           <div class="query-item">
+            <div class="label">{{ tabIndex != 2 ? "风场:" : "测风塔:" }}</div>
+            <el-select
+              v-model="wpId"
+              clearable
+              placeholder="请选择"
+              @change="changeStationsVal"
+            >
+              <el-option
+                v-for="item in tabIndex != 2 ? wpArray : cftlist"
+                :key="item.id"
+                :value="item.id"
+                :label="item.name"
+              />
+            </el-select>
+          </div>
+          <div class="query-item" v-if="tabIndex != 2">
+            <div class="label">风机:</div>
+            <el-select
+              v-model="wtId"
+              clearable
+              placeholder="请选择"
+              popper-class="select"
+            >
+              <el-option
+                v-for="item in wtArray"
+                :key="item.id"
+                :value="item.id"
+                :label="item.name"
+              />
+            </el-select>
+          </div>
+          <!-- <div class="query-item">
             <div class="label">风场:</div>
             <el-select
               v-model="wpId"
@@ -71,7 +103,7 @@
                 :label="item.aname"
               />
             </el-select>
-          </div>
+          </div> -->
           <div class="query-item">
             <div class="label">日期:</div>
             <el-date-picker
@@ -792,13 +824,16 @@
       </el-row>
     </div>
     <el-dialog
-      title="区域详情查看"
       v-model="dialogShow"
       width="85%"
-      top="10vh"
-      custom-class="dialogShowmodal"
+      top="120px"
       :close-on-click-modal="true"
     >
+      <template #title>
+        <div class="dialog-title">
+          <div class="title">区域详情查看</div>
+        </div>
+      </template>
       <el-form ref="form" label-width="100px" inline>
         <el-form-item style="width: 32%" label="开始时间:">{{
           form.ks
@@ -856,6 +891,7 @@ import {
   getApiglchat,
   getApifjfzy,
   getApiequipmentList,
+  getApiWeatherstation,
   getApiComMGTWP,
   getApiComMGTWT,
   getApiComPie,
@@ -876,7 +912,7 @@ export default {
   props: {
     wpArray: {
       type: Array,
-      default: [],
+      default: () => [],
     },
   },
   data() {
@@ -908,7 +944,6 @@ export default {
       wpId: "",
       wtArray: [],
       wtId: "",
-
       recorddate: "",
 
       lostChartData: [
@@ -1125,8 +1160,16 @@ export default {
       dialogShow: false,
 
       form: {},
+      hisWpid: "",
+      hisSubid: "",
+      hisWtid: "",
     };
   },
+  computed: {
+    cftlist() {
+      return this.$store.state.cftList;
+    },
+  },
   methods: {
     init(row) {
       this.wpId = row.windtpowerstationId;
@@ -1139,8 +1182,14 @@ export default {
     // 切换风场
     changeStationsVal(val) {
       this.wpId = val;
-      this.getWindData();
+      if (this.tabIndex == 2) {
+        this.hisSubid = val;
+      } else {
+        this.getWindData();
+      }
     },
+
+ 
     // 获取风机
     async getWindData() {
       let params = {
@@ -1311,15 +1360,15 @@ export default {
         pageNum: "1",
         pageSize: "5",
       };
-      const { data: datas } = await getApibjjllist(params);
-      if (datas && datas.data && datas.data.records.length > 0) {
-        datas.data.records.forEach((ele) => {
-          ele.warningtime = new Date(ele.warningtime).formatDate(
-            "yyyy-MM-dd hh:mm:ss"
-          );
-        });
-        that.warnTableData.data = datas.data.records;
-      }
+    //   const { data: datas } = await getApibjjllist(params);
+    //   if (datas && datas.data && datas.data.records.length > 0) {
+    //     datas.data.records.forEach((ele) => {
+    //       ele.warningtime = new Date(ele.warningtime).formatDate(
+    //         "yyyy-MM-dd hh:mm:ss"
+    //       );
+    //     });
+    //     that.warnTableData.data = datas.data.records;
+    //   }
     },
     // tab1 - 获取当日故障数据
     async getStopData() {
@@ -1330,18 +1379,18 @@ export default {
         pageNum: "1",
         pageSize: "5",
       };
-      const { data: datas } = await getApigzjllist(params);
-      if (datas && datas.data && datas.data.records.length > 0) {
-        datas.data.records.forEach((ele) => {
-          ele.stopTime = new Date(ele.stopTime).formatDate(
-            "yyyy-MM-dd hh:mm:ss"
-          );
-          ele.starttime = ele.starttime
-            ? new Date(ele.starttime).formatDate("yyyy-MM-dd hh:mm:ss")
-            : "";
-        });
-        that.stopTableData.data = datas.data.records;
-      }
+    //   const { data: datas } = await getApigzjllist(params);
+    //   if (datas && datas.data && datas.data.records.length > 0) {
+    //     datas.data.records.forEach((ele) => {
+    //       ele.stopTime = new Date(ele.stopTime).formatDate(
+    //         "yyyy-MM-dd hh:mm:ss"
+    //       );
+    //       ele.starttime = ele.starttime
+    //         ? new Date(ele.starttime).formatDate("yyyy-MM-dd hh:mm:ss")
+    //         : "";
+    //     });
+    //     that.stopTableData.data = datas.data.records;
+    //   }
     },
     // tab1 - 获取当日限电数据
     async getXdData() {
@@ -1352,18 +1401,18 @@ export default {
         pageNum: "1",
         pageSize: "5",
       };
-      const { data: datas } = await getApixdjllist(params);
-      if (datas && datas.data && datas.data.records.length > 0) {
-        datas.data.records.forEach((ele) => {
-          ele.stopTime = new Date(ele.stopTime).formatDate(
-            "yyyy-MM-dd hh:mm:ss"
-          );
-          ele.starttime = ele.starttime
-            ? new Date(ele.starttime).formatDate("yyyy-MM-dd hh:mm:ss")
-            : "";
-        });
-        that.xdTableData.data = datas.data.records;
-      }
+    //   const { data: datas } = await getApixdjllist(params);
+    //   if (datas && datas.data && datas.data.records.length > 0) {
+    //     datas.data.records.forEach((ele) => {
+    //       ele.stopTime = new Date(ele.stopTime).formatDate(
+    //         "yyyy-MM-dd hh:mm:ss"
+    //       );
+    //       ele.starttime = ele.starttime
+    //         ? new Date(ele.starttime).formatDate("yyyy-MM-dd hh:mm:ss")
+    //         : "";
+    //     });
+    //     that.xdTableData.data = datas.data.records;
+    //   }
     },
     // tab2 ----------------------------------------
     // tab2 - 获取日发电量信息
@@ -1681,6 +1730,16 @@ export default {
     },
     // 切换tab
     tabSelect(index) {
+      if (this.tabIndex == 2) {
+        this.hisSubid = this.wpId;
+      } else {
+        this.hisWpid = this.wpId;
+      }
+      if (index == 2) {
+        this.wpId = this.hisSubid ? this.hisSubid : this.cftlist[0].id;
+      } else {
+        this.wpId = this.hisWpid ? this.hisWpid : this.wpArray[0].id;
+      }
       this.tabIndex = index;
       this.search();
     },
@@ -1976,6 +2035,5 @@ export default {
       padding: 16px;
     }
   }
-
 }
 </style>

+ 1 - 1
src/views/economicsOperation/benchmarkingManagement/compontent/bar-line-chart.vue

@@ -92,7 +92,7 @@ export default {
       let option = {
         color: this.color,
         grid: {
-          left: 40,
+          left: 18,
           right: 16,
           bottom: 16,
           top: 35,

+ 290 - 292
src/views/economicsOperation/benchmarkingManagement/loseRate/index.vue

@@ -149,299 +149,299 @@
         <!-- <el-button round size="mini" class="buttons">导出</el-button> -->
       </div>
     </div>
-      <div class="bodys" v-if="!displayDetail">
-        <div class="line">
-          <div class="leftContent"><span>五项损失率</span></div>
-        </div>
-        <div class="economicTable">
-          <el-table
-            :data="tableData"
-            ref="multipleTable"
-            size="mini"
-            height="100%"
-            :cell-style="{ padding: '4px' }"
-            :row-style="{ height: '0' }"
-            stripe
-            @selection-change="handleCurrentChange"
+    <div class="bodys" v-if="!displayDetail">
+      <div class="line">
+        <div class="leftContent"><span>五项损失率</span></div>
+      </div>
+      <div class="economicTable">
+        <el-table
+          :data="tableData"
+          ref="multipleTable"
+          size="mini"
+          height="100%"
+          :cell-style="{ padding: '4px' }"
+          :row-style="{ height: '0' }"
+          stripe
+          @selection-change="handleCurrentChange"
+        >
+          <el-table-column type="selection" width="60" align="center">
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="name"
+            label="名称"
+            show-overflow-tooltip
+            width="150"
+            sortable
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="zhpm"
+            label="综合排名"
+            show-overflow-tooltip
+            width="80"
+            sortable
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="fdlpm"
+            label="发电量排名"
+            show-overflow-tooltip
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="fdl"
+            label="发电量"
+            show-overflow-tooltip
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="gzssdlpm"
+            show-overflow-tooltip
+            label="故障损失排名"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            show-overflow-tooltip
+            prop="gzssdl"
+            label="故障损失"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="jxssdlpm"
+            show-overflow-tooltip
+            label="检修损失排名"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="jxssdl"
+            show-overflow-tooltip
+            label="检修损失"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="xnssdlpm"
+            show-overflow-tooltip
+            label="性能损失排名"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="xnssdl"
+            show-overflow-tooltip
+            label="性能损失"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="xdssdlpm"
+            show-overflow-tooltip
+            label="限电损失排名"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="xdssdl"
+            show-overflow-tooltip
+            label="限电损失"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            show-overflow-tooltip
+            prop="slssdlpm"
+            label="受累损失排名"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="slssdl"
+            show-overflow-tooltip
+            label="受累损失"
+            sortable
+            width="63"
           >
-            <el-table-column type="selection" width="60" align="center">
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="name"
-              label="名称"
-              show-overflow-tooltip
-              width="150"
-              sortable
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="zhpm"
-              label="综合排名"
-              show-overflow-tooltip
-              width="80"
-              sortable
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="fdlpm"
-              label="发电量排名"
-              show-overflow-tooltip
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="fdl"
-              label="发电量"
-              show-overflow-tooltip
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="gzssdlpm"
-              show-overflow-tooltip
-              label="故障损失排名"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              show-overflow-tooltip
-              prop="gzssdl"
-              label="故障损失"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="jxssdlpm"
-              show-overflow-tooltip
-              label="检修损失排名"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="jxssdl"
-              show-overflow-tooltip
-              label="检修损失"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="xnssdlpm"
-              show-overflow-tooltip
-              label="性能损失排名"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="xnssdl"
-              show-overflow-tooltip
-              label="性能损失"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="xdssdlpm"
-              show-overflow-tooltip
-              label="限电损失排名"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="xdssdl"
-              show-overflow-tooltip
-              label="限电损失"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              show-overflow-tooltip
-              prop="slssdlpm"
-              label="受累损失排名"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="slssdl"
-              show-overflow-tooltip
-              label="受累损失"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="fnlylpm"
-              show-overflow-tooltip
-              :label="(tabIndex === -1 ? '风能' : '光能') + '利用率排名'"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="fnlyl"
-              show-overflow-tooltip
-              :label="(tabIndex === -1 ? '风能' : '光能') + '利用率(%)'"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="gzsslpm"
-              show-overflow-tooltip
-              label="故障损失率排名"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="gzssl"
-              show-overflow-tooltip
-              label="故障损失率(%)"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="jxsslpm"
-              show-overflow-tooltip
-              label="检修损失率排名"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="jxssl"
-              show-overflow-tooltip
-              label="检修损失率(%)"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="qflpm"
-              show-overflow-tooltip
-              :label="'弃' + (tabIndex === -1 ? '风' : '光') + '率排名'"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="qfl"
-              show-overflow-tooltip
-              :label="'弃' + (tabIndex === -1 ? '风' : '光') + '率(%)'"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="xnsslpm"
-              show-overflow-tooltip
-              label="性能损失率排名"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="xnssl"
-              show-overflow-tooltip
-              label="性能损失率(%)"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              prop="slsslpm"
-              show-overflow-tooltip
-              label="受累损失率排名"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column
-              align="center"
-              show-overflow-tooltip
-              prop="slssl"
-              label="受累损失率(%)"
-              sortable
-              width="63"
-            >
-            </el-table-column>
-            <el-table-column align="center" prop="" label="操作">
-              <template v-slot="scope">
-                <span
-                  @click="goDetail(scope.row)"
-                  style="cursor: pointer; color: #05bb4c"
-                  >详情</span
-                >
-              </template>
-            </el-table-column>
-          </el-table>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="fnlylpm"
+            show-overflow-tooltip
+            :label="(tabIndex === -1 ? '风能' : '光能') + '利用率排名'"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="fnlyl"
+            show-overflow-tooltip
+            :label="(tabIndex === -1 ? '风能' : '光能') + '利用率(%)'"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="gzsslpm"
+            show-overflow-tooltip
+            label="故障损失率排名"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="gzssl"
+            show-overflow-tooltip
+            label="故障损失率(%)"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="jxsslpm"
+            show-overflow-tooltip
+            label="检修损失率排名"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="jxssl"
+            show-overflow-tooltip
+            label="检修损失率(%)"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="qflpm"
+            show-overflow-tooltip
+            :label="'弃' + (tabIndex === -1 ? '风' : '光') + '率排名'"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="qfl"
+            show-overflow-tooltip
+            :label="'弃' + (tabIndex === -1 ? '风' : '光') + '率(%)'"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="xnsslpm"
+            show-overflow-tooltip
+            label="性能损失率排名"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="xnssl"
+            show-overflow-tooltip
+            label="性能损失率(%)"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="slsslpm"
+            show-overflow-tooltip
+            label="受累损失率排名"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            show-overflow-tooltip
+            prop="slssl"
+            label="受累损失率(%)"
+            sortable
+            width="63"
+          >
+          </el-table-column>
+          <el-table-column align="center" prop="" label="操作">
+            <template v-slot="scope">
+              <span
+                @click="goDetail(scope.row)"
+                style="cursor: pointer; color: #05bb4c"
+                >详情</span
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+    </div>
+    <div class="echarts" v-if="!displayDetail">
+      <div class="pie-echarts">
+        <div class="chart-name">
+          <div class="point point-left bottom"></div>
+          <div class="point point-right bottom"></div>
+          损失电量分析
         </div>
+        <PieChart
+          :lossPower="lossPower"
+          width="100%"
+          height="calc(100% - 39px)"
+          :showLable="false"
+        ></PieChart>
       </div>
-      <div class="echarts" v-if="!displayDetail">
-        <div class="pie-echarts">
-          <div class="chart-name">
-            <div class="point point-left bottom"></div>
-            <div class="point point-right bottom"></div>
-            损失电量分析
-          </div>
-            <PieChart
-              :lossPower="lossPower"
-              width="100%"
-              height="100%"
-              :showLable="false"
-            ></PieChart>
-          </div>
-        <div class="bar-echarts">
-          <div class="chart-name">
-            <div class="point point-left bottom"></div>
-            <div class="point point-right bottom"></div>
-            五项损失
-          </div>
-            <BarCharts
-              :list="barList"
-              width="100%"
-              height="100%"
-              :showLegend="true"
-              :xdate="false"
-              :colorIndex="true"
-            ></BarCharts>
-          </div>
+      <div class="bar-echarts">
+        <div class="chart-name">
+          <div class="point point-left bottom"></div>
+          <div class="point point-right bottom"></div>
+          五项损失
         </div>
+        <BarCharts
+          :list="barList"
+          width="100%"
+          height="calc(100% - 39px)"
+          :showLegend="true"
+          :xdate="false"
+          :colorIndex="true"
+        ></BarCharts>
+      </div>
+    </div>
     <div
       v-if="displayDetail"
       style="height: calc(100% - 43px - 35px); padding-bottom: 10px"
@@ -1052,9 +1052,7 @@ export default {
       this.analyisDialog = analyis;
     },
   },
-  watch: {
-   
-  },
+  watch: {},
 };
 </script>
 

+ 19 - 15
src/views/economicsOperation/benchmarkingManagement/performanceRankingList/index.vue

@@ -144,7 +144,7 @@
             align="center"
             prop=""
             label=""
-            width="900"
+            width="850"
           ></el-table-column>
           <el-table-column
             v-for="item in tableHeader"
@@ -152,7 +152,9 @@
             align="center"
             :prop="item.code"
             :label="item.name"
-            width="140"
+            :width="
+              item.code == 'name' ? 148 : item.name.length == 2 ? 95 : 120
+            "
             show-overflow-tooltip
           >
             <template #header>
@@ -179,15 +181,17 @@
         </el-table>
       </div>
       <div class="left">
-        <bar-line-chart
-          v-if="showDisplay"
-          :height="height"
-          width="100%"
-          :bardata="bardata"
-          :lineData="lineData"
-          :color="barColor"
-          lineName="理论发电量"
-        />
+        <div :style="{ width: 'calc(100% - 130px)', height: height }">
+          <bar-line-chart
+            v-if="showDisplay"
+            height="100%"
+            width="100%"
+            :bardata="bardata"
+            :lineData="lineData"
+            :color="barColor"
+            lineName="理论发电量"
+          />
+        </div>
         <div class="lyl" :style="{ height: tableData.length * 39 + 'px' }">
           <div class="lyl-item" v-for="(item, index) in tableData" :key="index">
             {{ item.fnlly }}%
@@ -252,7 +256,6 @@ export default {
         { code: "name", name: "名称" },
         { code: "llfdl", name: "理论发电量", unit: "万kWh" },
         { code: "sjfdl", name: "实际发电量", unit: "万kWh" },
-        { code: "fnlly", name: "风能利用率", name1: "光能利用率", unit: "%" },
         {
           code: "speed",
           name: "风速",
@@ -264,6 +267,7 @@ export default {
         { code: "jhjx", name: "检修", unit: "万kWh" },
         { code: "sl", name: "受累", unit: "万kWh" },
         { code: "xn", name: "性能", unit: "万kWh" },
+        { code: "fnlly", name: "风能利用率", name1: "光能利用率", unit: "%" },
       ],
       tableData: [],
       showDisplay: true,
@@ -631,7 +635,7 @@ export default {
   position: relative;
 
   .left {
-    width: 45%;
+    width: 850px;
     height: 100%;
     position: absolute;
     left: 0;
@@ -650,7 +654,7 @@ export default {
       background-size: 1px 9px;
       margin-top: 45px;
       height: 100%;
-      right: -50px;
+      right: 0px;
     }
   }
 
@@ -728,7 +732,7 @@ export default {
   display: flex;
   flex-direction: column;
   align-items: center;
-  width: 70px;
+  width: 130px;
   font-size: 14px;
   font-family: Arial;
   font-weight: 400;

+ 4 - 4
src/views/economicsOperation/efficiency/consumeEfficiency/index.vue

@@ -70,19 +70,19 @@
           <el-table-column
             align="center"
             prop="gzCount"
-            label="故障次数"
+            label="故障次数(次)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="xqCount"
-            label="消缺及时次数"
+            label="消缺及时次数(次)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="xqjsl"
-            label="消缺及时率"
+            label="消缺及时率(%)"
             sortable
           ></el-table-column>
         </el-table>
@@ -209,7 +209,7 @@ export default {
         font-size: 16px;
         font-family: Microsoft YaHei;
         font-weight: 400;
-        color: #05BB4C;
+        color: #05bb4c;
         margin-left: 25px;
       }
     }

+ 10 - 10
src/views/economicsOperation/efficiency/restorationEfficiency/index.vue

@@ -70,49 +70,49 @@
           <el-table-column
             align="center"
             prop="five"
-            label="5分钟 / 复位次数"
+            label="5分钟 / 复位次数(次)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="fives"
-            label="5分钟 / 复位率"
+            label="5分钟 / 复位率(%)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="ten"
-            label="10分钟 / 复位次数"
+            label="10分钟 / 复位次数(次)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="tens"
-            label="10分钟 / 复位率"
+            label="10分钟 / 复位率(%)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="fifteen"
-            label="15分钟 / 复位次数"
+            label="15分钟 / 复位次数(次)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="fifteens"
-            label="15分钟 / 复位率"
+            label="15分钟 / 复位率(%)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="twenty"
-            label="20分钟 / 复位次数"
+            label="20分钟 / 复位次数(次)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="twentys"
-            label="20分钟 / 复位率"
+            label="20分钟 / 复位率(%)"
             sortable
           ></el-table-column>
         </el-table>
@@ -150,7 +150,7 @@ export default {
     if (day < 10) {
       day = "0" + day;
     }
-   this.starTime = dayjs().add(-1, "day").format("YYYY-MM-DD");
+    this.starTime = dayjs().add(-1, "day").format("YYYY-MM-DD");
     this.endTime = dayjs().format("YYYY-MM-DD");
     this.initialization();
   },
@@ -253,7 +253,7 @@ export default {
         font-size: 16px;
         font-family: Microsoft YaHei;
         font-weight: 400;
-        color: #05BB4C;
+        color: #05bb4c;
         margin-left: 25px;
       }
     }

+ 9 - 9
src/views/economicsOperation/efficiency/stateEfficiency/index.vue

@@ -93,49 +93,49 @@
           <el-table-column
             align="center"
             prop="wfz"
-            label="5分钟(次)"
+            label="5分钟 / 转换次数(次)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="wfzfwl"
-            label="5分钟(率)"
+            label="5分钟 / 转换率(%)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="sfz"
-            label="10分钟(次)"
+            label="10分钟 / 转换次数(次)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="sfzfwl"
-            label="10分钟(率)"
+            label="10分钟 / 转换率(%)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="swfz"
-            label="15分钟(次)"
+            label="15分钟 / 转换次数(次)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="swfzfwl"
-            label="15分钟(率)"
+            label="15分钟 / 转换率(%)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="esfz"
-            label="20分钟(次)"
+            label="20分钟 / 转换次数(次)"
             sortable
           ></el-table-column>
           <el-table-column
             align="center"
             prop="esfzfwl"
-            label="20分钟(率)"
+            label="20分钟 / 转换率(%)"
             sortable
           ></el-table-column>
         </el-table>
@@ -274,7 +274,7 @@ export default {
         font-size: 16px;
         font-family: Microsoft YaHei;
         font-weight: 400;
-        color: #05BB4C;
+        color: #05bb4c;
         margin-left: 25px;
       }
     }

+ 1 - 1
src/views/economicsOperation/homePage/components/barCharts.vue

@@ -371,7 +371,7 @@ export default {
           top: 40,
           left: 10,
           right: 15,
-          bottom: 25,
+          bottom: 10,
           containLabel: true,
         },
         xAxis: [

+ 6 - 6
src/views/economicsOperation/homePage/components/pieChart.vue

@@ -21,8 +21,8 @@ export default {
     },
     // 传入数据
     lossPower: {
-      type: Object,
-      default: [],
+      type: Array,
+      default: () => [],
     },
     // 单位
     unit: {
@@ -148,8 +148,8 @@ export default {
         legend: {
           type: "scroll",
           orient: "vertical",
-          right: 10,
-          bottom: 0,
+          right: '8%',
+          top: "middle",
           itemWidth: 8,
           itemHeight: 8,
           textStyle: {
@@ -167,7 +167,7 @@ export default {
         radar: [
           {
             indicator: [{ text: "" }],
-            center: ["40%", "50%"],
+            center: ["35%", "50%"],
             radius: [0, 79],
             startAngle: 60,
             splitNumber: 5,
@@ -208,7 +208,7 @@ export default {
             name: "",
             type: "pie",
             radius: [0, 80],
-            center: ["40%", "50%"],
+            center: ["35%", "50%"],
             roseType: "area",
             label: {
               normal: {

+ 2 - 2
src/views/economicsOperation/powerCurve/powerLinefitting/index.vue

@@ -102,7 +102,7 @@
       "
     >
       <div class="powerLinefitting_title clearfix">
-        <div class="leftContent floatLeft"><span>功率曲线拟合</span></div>
+        <div class="leftContent floatLeft"><span>功率曲线查询</span></div>
       </div>
 
       <div class="powerLinefitting_Table">
@@ -412,7 +412,7 @@ export default {
       utils.exportExcel(
         this.$refs["fitting_table"].$el,
         header,
-        "功率曲线拟合"
+        "功率曲线查询"
       );
     },
   },

+ 33 - 0
src/views/electricReport/dmb/index.vue

@@ -0,0 +1,33 @@
+<template>
+  <div style="height: 100%">
+    <iframe
+      :src="url"
+      width="100%"
+      height="100%"
+      frameborder="0"
+      scrolling="auto"
+    ></iframe>
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      url: "http://10.81.3.155:8083/bi/ebibase/showreport.do?resid=EANA$2$2$1$cf794177cf764f258f8105c6d3b03f3c$8d845c96594c422caf0bcd332e09ec0d&id=admin&pw=admin",
+    };
+  },
+};
+</script>
+<style lang="less" scope>
+@titleGray: #9ca5a8;
+@rowGray: #606769;
+@darkBack: #536268;
+.knowledge-2 {
+  .el-select {
+    width: 200px;
+  }
+  .el-input {
+    width: 200px;
+  }
+}
+</style>

+ 11 - 0
src/views/electricReport/index.vue

@@ -0,0 +1,11 @@
+<template>
+  <router-view />
+</template>
+
+<script>
+export default {
+  name: "electricReport", //电量报表
+};
+</script>
+
+<style></style>

+ 6 - 84
src/views/layout/Header.vue

@@ -45,7 +45,7 @@
           placement="bottom"
           popper-class="admin-set-tooltip"
         >
-          <i class="svg-icon svg-icon-sm svg-icon-white" @click="goToAdmin">
+          <i class="svg-icon svg-icon-white" @click="goToAdmin">
             <SvgIcon svgid="svg-admin-set"></SvgIcon>
           </i>
         </el-tooltip>
@@ -252,7 +252,7 @@ export default {
     // 跳转到管理系统
     goToAdmin() {
       let jiami = encrypt(getCookie("jiami")).replace(/\+/g, " ");
-     
+
       // let url = `http://192.168.1.104:80/#/check?username=${getCookie(
       let url = `http://10.81.3.127:8083/#/check?username=${getCookie(
         "username"
@@ -292,18 +292,15 @@ export default {
 <style lang="less" scoped>
 .header-menu {
   display: flex;
-  flex-direction: row;
   width: 100%;
   height: 100%;
   font-size: @fontsize;
-
+  justify-content: flex-end;
   .header-menu-list {
     margin: 0;
     padding: 0;
     list-style: none;
-    margin-left: auto;
     display: flex;
-    flex-direction: row;
     height: 100%;
 
     .header-menu-item {
@@ -327,8 +324,8 @@ export default {
           content: "";
           position: absolute;
           width: 100%;
-          height: 0.463vh;
-          border: 0.093vh solid @green;
+          height: 3px;
+          border: 1px solid @green;
           border-top: 0;
           left: 0;
           bottom: 0;
@@ -338,83 +335,8 @@ export default {
     }
   }
 
-  .header-menu-dropdown {
-    width: 11.111vh;
-    height: 100%;
-    margin: 0;
-    padding: 0;
-    list-style: none;
-
-    .header-menu-dropdown-title {
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      width: 100%;
-      height: 100%;
-      color: @gray;
-      cursor: pointer;
-
-      i {
-        margin: 0 10px;
-        transition: all 0.3s;
-      }
-    }
-
-    .header-menu-dropdown-list {
-      display: none;
-      margin: 0;
-      padding: 0;
-      list-style: none;
-      margin-left: auto;
-      position: absolute;
-
-      .header-menu-dropdown-item {
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        width: 11.111vh;
-        height: 3.704vh;
-        color: @gray;
-        cursor: pointer;
-        position: relative;
-        z-index: 1;
-        background-color: fade(@write, 5%);
-
-        &::after {
-          content: "";
-          position: absolute;
-          width: 100%;
-          height: 0.463vh;
-          border: 0.093vh solid @green;
-          border-top: 0;
-          left: 0;
-          bottom: 0;
-          box-sizing: border-box;
-        }
-
-        &:hover {
-          color: @write;
-          background-color: fade(@write, 10%);
-        }
-      }
-    }
-
-    &.dropdown {
-      .header-menu-dropdown-title {
-        .down {
-          transform: rotate(180deg);
-        }
-      }
-
-      .header-menu-dropdown-list {
-        display: flex;
-        flex-direction: column;
-      }
-    }
-  }
-
   .header-menu-user {
-    width: 140px;
+    width: 10%;
     height: 100%;
     margin: 0;
     padding: 0;

+ 0 - 1
src/views/stateMonitor/factoryMonitor/components/headerButton.vue

@@ -360,7 +360,6 @@ export default {
         let booster = this.boosterList.find(
           (i) => i.windpowerstationId == this.stationCode
         );
-        console.log(booster);
         this.$emit("alarm", booster && booster.id, booster && booster.name);
       }
       this.localWpinfo = {

+ 1 - 1
src/views/stateMonitor/factoryMonitor/photovoltaic/lightBoosterStation/index.vue

@@ -191,7 +191,7 @@ export default {
       this.sub = id;
       this.title = name;
       this.begin = dayjs()
-        .add(-2, "day")
+        // .add(-2, "day")
         .startOf("day")
         .format("YYYY-MM-DD HH:mm:ss");
       this.end = dayjs().format("YYYY-MM-DD HH:mm:ss");

+ 1 - 1
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/index.vue

@@ -179,7 +179,7 @@ export default {
       this.sub = id;
       this.title = name;
       this.begin = dayjs()
-        .add(-2, "day")
+        // .add(-2, "day")
         .startOf("day")
         .format("YYYY-MM-DD HH:mm:ss");
       this.end = dayjs().format("YYYY-MM-DD HH:mm:ss");

+ 27 - 3
src/views/stateMonitor/focus/syzDetails.vue

@@ -35,6 +35,7 @@
       <!-- 小五台-->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('XWT') != ''"
         :class="{ alarm: getAlarm('XWT') }"
         :style="getStyle(allHeight)"
         @dblclick="handleClick('XWT')"
@@ -48,6 +49,7 @@
       <!-- 败虎堡 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('BHB') != ''"
         :class="{ alarm: getAlarm('BHB') }"
         :style="getStyle(allHeight)"
         @dblclick="handleClick('BHB')"
@@ -61,6 +63,7 @@
       <!-- 禹丰 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('YF') != ''"
         :class="{ alarm: getAlarm('YF') }"
         :style="getStyle(allHeight)"
         @dblclick="handleClick('YF')"
@@ -74,6 +77,7 @@
       <!-- 败虎堡三期 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('BHB3') != ''"
         :class="{ alarm: getAlarm('BHB3') }"
         :style="getStyle(allHeight)"
         @dblclick="handleClick('BHB3')"
@@ -87,6 +91,7 @@
       <!-- 盘道梁 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('PDL') != ''"
         :class="{ alarm: getAlarm('PDL') }"
         :style="getStyle(allHeight)"
         @dblclick="handleClick('PDL')"
@@ -100,6 +105,7 @@
       <!-- 牛家岭 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('NJL') != ''"
         :class="{ alarm: getAlarm('NJL') }"
         :style="getStyle(allHeight)"
         @dblclick="handleClick('NJL')"
@@ -114,6 +120,7 @@
       <!-- 丁家窑 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('DJY') != ''"
         :class="{ alarm: getAlarm('DJY') }"
         :style="getStyle(allHeight)"
         @dblclick="handleClick('DJY')"
@@ -127,6 +134,7 @@
       <!-- 高家堰 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('GJY') != ''"
         :class="{ alarm: getAlarm('GJY') }"
         :style="getStyle(allHeight)"
         @dblclick="handleClick('GJY')"
@@ -141,6 +149,7 @@
       <!-- 平头镇 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('PTZ') != ''"
         :class="{ alarm: getAlarm('PTZ') }"
         :style="getStyle(allHeight)"
         @dblclick="handleClick('PTZ')"
@@ -155,6 +164,7 @@
       <!-- 红石峁 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('HSM') != ''"
         :class="{ alarm: getAlarm('HSM') }"
         :style="getStyle(allHeight)"
         @dblclick="handleClick('HSM')"
@@ -169,6 +179,7 @@
       <!-- 朱坑 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('ZK') != ''"
         :style="getStyle(allHeight)"
         :class="{ alarm: getAlarm('ZK') }"
         @dblclick="handleClick('ZK')"
@@ -182,6 +193,7 @@
       <!-- 羊头崖 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('YTY') != ''"
         :style="getStyle(allHeight)"
         :class="{ alarm: getAlarm('YTY') }"
         @dblclick="handleClick('YTY')"
@@ -195,6 +207,7 @@
       <!-- 尹灵芝 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('YLZ') != ''"
         :style="getStyle(allHeight)"
         :class="{ alarm: getAlarm('YLZ') }"
         @dblclick="handleClick('YLZ')"
@@ -208,7 +221,7 @@
 
       <!-- 米粮局 -->
       <!-- <div
-        class="showAllSvgMsg"
+        class="showAllSvgMsg" v-if="getStationName('')!=''"
         :style="getStyle(allHeight)"
         @dblclick="handleClick('MLJ')"
       >
@@ -232,6 +245,7 @@
       <!-- 右玉右卫 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('YY') != ''"
         :style="getStyle(allHeight)"
         :class="{ alarm: getAlarm('YY') }"
         @dblclick="handleClick('YY')"
@@ -246,6 +260,7 @@
       <!-- 平鲁阻虎 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('PL') != ''"
         :style="getStyle(allHeight)"
         :class="{ alarm: getAlarm('PL') }"
         @dblclick="handleClick('PL')"
@@ -259,6 +274,7 @@
       <!-- 应县晶辉 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('YX') != ''"
         :style="getStyle(allHeight)"
         :class="{ alarm: getAlarm('YX') }"
         @dblclick="handleClick('YX')"
@@ -272,6 +288,7 @@
       <!-- 天镇旭升 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('TZ') != ''"
         :style="getStyle(allHeight)"
         :class="{ alarm: getAlarm('TZ') }"
         @dblclick="handleClick('TZ')"
@@ -284,6 +301,7 @@
       <!-- 阳高蔚家堡 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('YG') != ''"
         :style="getStyle(allHeight)"
         :class="{ alarm: getAlarm('YG') }"
         @dblclick="handleClick('YG')"
@@ -297,6 +315,7 @@
       <!-- 方山孙家山 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('FS') != ''"
         :style="getStyle(allHeight)"
         :class="{ alarm: getAlarm('FS') }"
         @dblclick="handleClick('FS')"
@@ -311,6 +330,7 @@
       <!-- 山阴荣新 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('SY') != ''"
         :style="getStyle(allHeight)"
         :class="{ alarm: getAlarm('SY') }"
         @dblclick="handleClick('SY')"
@@ -325,6 +345,7 @@
       <!-- 怀仁初晨 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('HR') != ''"
         :style="getStyle(allHeight)"
         :class="{ alarm: getAlarm('HR') }"
         @dblclick="handleClick('HR')"
@@ -338,6 +359,7 @@
       <!-- 屯留吾元 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('TL') != ''"
         :style="getStyle(allHeight)"
         :class="{ alarm: getAlarm('TL') }"
         @dblclick="handleClick('TL')"
@@ -352,6 +374,7 @@
       <!-- 繁峙均然 -->
       <div
         class="showAllSvgMsg"
+        v-if="getStationName('JR') != ''"
         :style="getStyle(allHeight)"
         :class="{ alarm: getAlarm('JR') }"
         @dblclick="handleClick('JR')"
@@ -500,7 +523,7 @@ export default {
         if (type && type.length) {
           return ele[type];
         }
-        return ele?.name;
+        return ele?.name ? ele?.name : "";
       }
     },
     getStyle(type) {
@@ -619,7 +642,8 @@ export default {
   .showAllSvgMsg {
     // border: 3px solid #646464;
     background: url("~@/assets/imgs/syz-bg.png") no-repeat;
-    background-size: contain;
+    background-size: 100% 100%;
+    background-position: center;
     border-radius: 4px;
     margin-right: 15px;
     margin-bottom: 15px;