Kaynağa Gözat

feat: bug处理

wangjunjun 3 yıl önce
ebeveyn
işleme
37f5967e16

+ 1 - 1
src/api/axios.js

@@ -9,7 +9,7 @@ axios.defaults.withCredentials = true;
  * @param {Object} options 详细配置项,使用方法与所有配置项说明如下:
 
   this.API.requestData({
-    isMust: true, // 请求是否携带 token ,默认为 true ,可缺省
+    isMust: true, // 请求是否携带 token ,默认为 true ,可缺省 
     showLoading: false, // 请求是否显示加载中遮罩层,默认 false ,可缺省
     method: "GET", // 请求方式,默认为 GET ,可缺省
     baseURL: "http://192.168.10.23:8082/", // 请求服务器地址 + 端口,可缺省

+ 29 - 27
src/components/chart/combination/area-bar-chart.vue

@@ -41,7 +41,7 @@ export default {
     },
     lineData: {
       type: Array,
-      default: () => [200, 350, 400, 500, 600, 700, 800, 900, 1200],
+      default: () => [[200, 350, 400, 500, 600, 700, 800, 900, 1200]],
     },
     areaData: {
       type: Array,
@@ -88,23 +88,23 @@ export default {
       default: () => ["#323E6F", "#1DA0D7", "#02BB4C", "#DB5520", "#EDB32F", "#EDEB2F"],
     },
   },
-  data() {
+  data () {
     return {
       id: "",
       chart: null,
     };
   },
   computed: {
-    legend() {
+    legend () {
       let data = this.bardata.legend;
       data.push(this.units[0]);
       return data;
     },
-    areaChartData() {
+    areaChartData () {
       let data = [];
       for (var i = 0; i < this.areaData.length; i++) {
         let item = this.areaData[i];
-        var color = partten.getColor(item.state);
+        var color = (item.color ? item.color : partten.getColor(item.state));
         data.push({
           name: item.name,
           value: [item.start, item.end, item.end - item.start],
@@ -120,7 +120,7 @@ export default {
     },
   },
   methods: {
-    renderItem(params, api) {
+    renderItem (params, api) {
       var start = api.coord([api.value(0)]);
       var end = api.coord([api.value(1)]);
       var height = api.size([0, 1])[1];
@@ -149,7 +149,7 @@ export default {
         }
       );
     },
-    initChart() {
+    initChart () {
       let that = this;
       let chart = echarts.init(this.$el);
 
@@ -203,7 +203,7 @@ export default {
             min: 0,
             axisLabel: {
               show: false,
-              formatter: function(val) {
+              formatter: function (val) {
                 return Math.max(0, val - 0) + " ms";
               },
             },
@@ -254,7 +254,7 @@ export default {
             },
           },
           {
-            data: [this.areaData[0].name],
+            data: [(this.areaData && this.areaData[0] && this.areaData[0].name || "")],
             axisLabel: { show: false },
           },
         ],
@@ -262,19 +262,21 @@ export default {
       };
 
       // line data
-      if (this.lineData.length > 0) {
-        option.series.push({
-          name: this.units[0],
-          type: "line",
-          data: this.lineData,
-          smooth: true, //平滑展示
-          yAxisIndex: 0,
-          lineStyle: {
-            color: partten.getColor("green"),
-          },
-          itemStyle: {
-            color: partten.getColor("green"),
-          },
+      if (this.lineData.length) {
+        this.lineData.forEach((ele, index) => {
+          option.series.push({
+            name: this.units[index] || this.units[0] || "",
+            type: "line",
+            data: ele,
+            smooth: true, //平滑展示
+            yAxisIndex: 0,
+            lineStyle: {
+              color: this.color[index]
+            },
+            itemStyle: {
+              color: this.color[index]
+            }
+          });
         });
       }
 
@@ -306,7 +308,7 @@ export default {
           },
           tooltip: {
             show: true,
-            formatter: function(params) {
+            formatter: function (params) {
               return params.marker + params.name + ": " + params.value[2] + "s";
             },
           },
@@ -320,7 +322,7 @@ export default {
 
       chart.setOption(option);
 
-      chart.on("click", function(e, p) {
+      chart.on("click", function (e, p) {
         if (e.seriesType == "custom") {
           that.$emit("areaClick", { data: e.data.exData });
         }
@@ -330,17 +332,17 @@ export default {
   emits: {
     areaClick: null,
   },
-  created() {
+  created () {
     this.id = "pie-chart-" + util.newGUID();
   },
-  mounted() {
+  mounted () {
     this.$nextTick(() => {
       this.$el.style.width = this.width;
       this.$el.style.height = this.height;
       this.initChart();
     });
   },
-  updated() {
+  updated () {
     this.$nextTick(() => {
       this.initChart();
     });

+ 34 - 34
src/components/chart/line/marker-line-chart.vue

@@ -160,40 +160,40 @@ export default {
               width: 1,
             },
           },
-          markPoint:
-            index == 0
-              ? {
-                  data: [
-                    {
-                      type: "average",
-                      name: "保证功率",
-                      symbolSize: 0,
-                      label: {
-                        offset: [0, -40],
-                        formatter: function(param) {
-                          return `{title|${param.name}}` + "\n" + `{value| ${param.value}${that.unit}}`;
-                        },
-                        backgroundColor: partten.getColor("green") + 33,
-                        borderColor: partten.getColor("green"),
-                        borderWidth: 0.5,
-                        borderRadius: 2,
-                        padding: 8,
-                        rich: {
-                          title: {
-                            color: partten.getColor("green"),
-                            fontSize: 12,
-                          },
-                          value: {
-                            color: "#fff",
-                            fontSize: 16,
-                            padding: [12, 0, 0, -4],
-                          },
-                        },
-                      },
-                    },
-                  ],
-                }
-              : {},
+          markPoint:{},
+            // index == 0
+            //   ? {
+            //       data: [
+            //         {
+            //           type: "average",
+            //           name: "保证功率",
+            //           symbolSize: 0,
+            //           label: {
+            //             offset: [0, -40],
+            //             formatter: function(param) {
+            //               return `{title|${param.name}}` + "\n" + `{value| ${param.value}${that.unit}}`;
+            //             },
+            //             backgroundColor: partten.getColor("green") + 33,
+            //             borderColor: partten.getColor("green"),
+            //             borderWidth: 0.5,
+            //             borderRadius: 2,
+            //             padding: 8,
+            //             rich: {
+            //               title: {
+            //                 color: partten.getColor("green"),
+            //                 fontSize: 12,
+            //               },
+            //               value: {
+            //                 color: "#fff",
+            //                 fontSize: 16,
+            //                 padding: [12, 0, 0, -4],
+            //               },
+            //             },
+            //           },
+            //         },
+            //       ],
+            //     }
+            //   : {},
           yAxisIndex: value.yAxisIndex,
           data: value.value.map((t) => {
             return t.value;

+ 479 - 400
src/router/index.js

@@ -1,412 +1,491 @@
 import { createRouter, createWebHashHistory } from 'vue-router'
 import Home from '../views/Home/Home.vue'
 
-const routes = [
-  {
-    path: '/',
-    redirect: '/monitor/home'
-  },
-  {
-    path: '/monitor/home', // 驾驶舱
-    name: 'Home',
-    component: Home,
-  },
-  {
-    path: '/monitor/about',
-    name: 'About',
-    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue'),
-  },
-  {
-    path: '/monitor/demo',
-    name: 'Demo',
-    component: () => import(/* webpackChunkName: "Demo" */ '../views/Demo.vue'),
-  },
-  {
-    path: '/monitor/status', // 状态监视
-    name: 'Status',
-    component: () => import(/* webpackChunkName: "status" */ '../views/Status/Status.vue'),
-  },
-  {
-    path: '/monitor/agc', // AGC 监视
-    name: 'Agc',
-    component: () => import(/* webpackChunkName: "agc" */ '../views/Agc/Agc.vue'),
-  },
-  {
-    path: '/monitor/windsite',
-    name: 'WindSite',
-    component: () => import(/* webpackChunkName: "windsite" */ '../views/WindSite/WindSite.vue'),
-    children: [{
-      path: 'home/:wpId',  // 场站监视
-      component: () => import(/* webpackChunkName: "windsitehome" */ '../views/WindSite/pages/Home/Home.vue'),
-    }, {
-      path: 'draughtfanlist/:wpId', // 风机列表
-      component: () => import(/* webpackChunkName: "windsitedraughtfanlist" */ '../views/WindSite/pages/DraughtFanList.vue'),
-    }, {
-      path: 'matrix/:wpId', // 风场矩阵
-      component: () => import(/* webpackChunkName: "windsitematrix" */ '../views/WindSite/pages/Matrix.vue'),
-    }, {
-      path: 'lightmatrix/:wpId',
-      component: () => import(/* webpackChunkName: "windsitelightmatrix" */ '../views/WindSite/pages/LightMatrix.vue'),
-    }, {
-      path: 'box/:wpId',
-      component: () => import(/* webpackChunkName: "windsitebox" */ '../views/WindSite/pages/Box.vue'),
-    }, {
-      path: 'info/:wpId/:wtId', // 单机状态监视
-      component: () => import(/* webpackChunkName: "info" */ '../views/WindSite/pages/Info/Info.vue'),
-    }, {
-      path: 'tower/:wpId', // 测风塔
-      component: () => import(/* webpackChunkName: "windsitetower" */ '../views/WindSite/pages/Tower.vue'),
-    }, {
-      path: 'inverter-info/:wpId',
-      component: () => import(/* webpackChunkName: "inverter-info" */ '../views/WindSite/pages/Inverter-Info.vue'),
+const routes = [{
+        path: '/',
+        redirect: '/monitor/home'
+    },
+    {
+        path: '/monitor/home', // 驾驶舱
+        name: 'Home',
+        component: Home,
+    },
+    {
+        path: '/monitor/about',
+        name: 'About',
+        component: () =>
+            import ( /* webpackChunkName: "about" */ '../views/About.vue'),
+    },
+    {
+        path: '/monitor/demo',
+        name: 'Demo',
+        component: () =>
+            import ( /* webpackChunkName: "Demo" */ '../views/Demo.vue'),
+    },
+    {
+        path: '/monitor/status', // 状态监视
+        name: 'Status',
+        component: () =>
+            import ( /* webpackChunkName: "status" */ '../views/Status/Status.vue'),
+    },
+    {
+        path: '/monitor/agc', // AGC 监视
+        name: 'Agc',
+        component: () =>
+            import ( /* webpackChunkName: "agc" */ '../views/Agc/Agc.vue'),
+    },
+    {
+        path: '/monitor/windsite',
+        name: 'WindSite',
+        component: () =>
+            import ( /* webpackChunkName: "windsite" */ '../views/WindSite/WindSite.vue'),
+        children: [{
+                path: 'home/:wpId', // 场站监视
+                component: () =>
+                    import ( /* webpackChunkName: "windsitehome" */ '../views/WindSite/pages/Home/Home.vue'),
+            }, {
+                path: 'draughtfanlist/:wpId', // 风机列表
+                component: () =>
+                    import ( /* webpackChunkName: "windsitedraughtfanlist" */ '../views/WindSite/pages/DraughtFanList.vue'),
+            }, {
+                path: 'matrix/:wpId', // 风场矩阵
+                component: () =>
+                    import ( /* webpackChunkName: "windsitematrix" */ '../views/WindSite/pages/Matrix.vue'),
+            }, {
+                path: 'lightmatrix/:wpId',
+                component: () =>
+                    import ( /* webpackChunkName: "windsitelightmatrix" */ '../views/WindSite/pages/LightMatrix.vue'),
+            }, {
+                path: 'box/:wpId',
+                component: () =>
+                    import ( /* webpackChunkName: "windsitebox" */ '../views/WindSite/pages/Box.vue'),
+            }, {
+                path: 'info/:wpId/:wtId', // 单机状态监视
+                component: () =>
+                    import ( /* webpackChunkName: "info" */ '../views/WindSite/pages/Info/Info.vue'),
+            }, {
+                path: 'tower/:wpId', // 测风塔
+                component: () =>
+                    import ( /* webpackChunkName: "windsitetower" */ '../views/WindSite/pages/Tower.vue'),
+            }, {
+                path: 'inverter-info/:wpId',
+                component: () =>
+                    import ( /* webpackChunkName: "inverter-info" */ '../views/WindSite/pages/Inverter-Info.vue'),
+            }, {
+                path: 'map/:wpId',
+                component: () =>
+                    import ( /* webpackChunkName: "windsitemap" */ '../views/WindSite/pages/Map.vue'),
+            }, {
+                path: 'map1/:wpId',
+                component: () =>
+                    import ( /* webpackChunkName: "windsitemap1" */ '../views/WindSite/pages/Map1.vue'),
+            },
+            {
+                path: 'boosterstation/:wpId', // 升压站
+                component: () =>
+                    import ( /* webpackChunkName: "boosterstation" */ '../views/WindSite/pages/BoosterStation.vue'),
+            },
+            {
+                path: "generalappearance/:wpId", // 总样貌
+                component: () =>
+                    import ( /* webpackChunkName: "generalappearance" */ "../views/WindSite/pages/GeneralAppearance.vue"),
+            },
+        ]
+    },
+    {
+        path: '/monitor/lightmatrix', // 光伏明细矩阵
+        name: 'LightMatrix',
+        component: () =>
+            import ( /* webpackChunkName: "lightmatrix" */ '../views/LightMatrix/LightMatrix.vue'),
+    },
+    {
+        path: '/monitor/lightmatrix1', // 基础矩阵
+        name: 'LightMatrix1',
+        component: () =>
+            import ( /* webpackChunkName: "lightmatrix1" */ '../views/LightMatrix1/LightMatrix1.vue'),
+    },
+    {
+        path: '/monitor/lightmatrix2', // 欠发矩阵
+        name: 'LightMatrix2',
+        component: () =>
+            import ( /* webpackChunkName: "lightmatrix2" */ '../views/LightMatrix2/LightMatrix2.vue'),
     }, {
-      path: 'map/:wpId',
-      component: () => import(/* webpackChunkName: "windsitemap" */ '../views/WindSite/pages/Map.vue'),
+        path: '/monitor/lightmatrix3', // 明细矩阵
+        name: 'LightMatrix3',
+        component: () =>
+            import ( /* webpackChunkName: "lightmatrix3" */ '../views/LightMatrix3/LightMatrix3.vue'),
     }, {
-      path: 'map1/:wpId',
-      component: () => import(/* webpackChunkName: "windsitemap1" */ '../views/WindSite/pages/Map1.vue'),
-    }, 
-    {
-      path: 'boosterstation/:wpId', // 升压站
-      component: () => import(/* webpackChunkName: "boosterstation" */ '../views/WindSite/pages/BoosterStation.vue'),
-    },
-    {
-      path: "generalappearance/:wpId", // 总样貌
-      component: () => import(/* webpackChunkName: "generalappearance" */ "../views/WindSite/pages/GeneralAppearance.vue"),
-    },
-  ]
-  },
-  {
-    path: '/monitor/lightmatrix', // 光伏明细矩阵
-    name: 'LightMatrix',
-    component: () => import(/* webpackChunkName: "lightmatrix" */ '../views/LightMatrix/LightMatrix.vue'),
-  },
-  {
-    path: '/monitor/lightmatrix1', // 基础矩阵
-    name: 'LightMatrix1',
-    component: () => import(/* webpackChunkName: "lightmatrix1" */ '../views/LightMatrix1/LightMatrix1.vue'),
-  },
-  {
-    path: '/monitor/lightmatrix2', // 欠发矩阵
-    name: 'LightMatrix2',
-    component: () => import(/* webpackChunkName: "lightmatrix2" */ '../views/LightMatrix2/LightMatrix2.vue'),
-  }, {
-    path: '/monitor/lightmatrix3', // 明细矩阵
-    name: 'LightMatrix3',
-    component: () => import(/* webpackChunkName: "lightmatrix3" */ '../views/LightMatrix3/LightMatrix3.vue'),
-  }, {
-    path: '/decision/decision1',//风机绩效榜
-    name: 'decision1',
-    component: () => import(/* webpackChunkName: "decision1" */ '../views/Decision/Decision1.vue'),
-  },
-  {
-    path: '/decision/decision1Mx',//风机绩效榜明细
-    name: 'decision1Mx',
-    component: () => import(/* webpackChunkName: "decision1Mx" */ '../views/Decision/Decision1Mx.vue'),
-  },
-  
-    {
-      path: '/decision/decision2',//五项损失率
-      name: 'decision2',
-      component: () => import(/* webpackChunkName: "decision2" */ '../views/Decision/Decision2.vue'),
-    },
-    {
-      path: '/decision/decision2Cndb',//场内对标
-      name: 'decision2Cndb',
-      component: () => import(/* webpackChunkName: "decision2Cndb" */ '../views/Decision/Decision2Cndb.vue'),
-    },
-    {
-      path: '/decision/decision2Cjdb',//场际对标
-      name: 'decision2Cjdb',
-      component: () => import(/* webpackChunkName: "decision2Cjdb" */ '../views/Decision/Decision2Cjdb.vue'),
-    },
-    {
-      path: '/decision/decision2Xmdb',//项目对标
-      name: 'decision2Xmdb',
-      component: () => import(/* webpackChunkName: "decision2Xmdb" */ '../views/Decision/Decision2Xmdb.vue'),
-    },
-    {
-      path: '/decision/decision2Xldb',//线路对标
-      name: 'decision2Xldb',
-      component: () => import(/* webpackChunkName: "decision2Xldb" */ '../views/Decision/Decision2Xldb.vue'),
-    },
-  {
-    path: '/decision/decision3',//性能对标
-    name: 'decision3',
-    component: () => import(/* webpackChunkName: "decision3" */ '../views/Decision/Decision3.vue'),
-  },
-  {
-    path: '/decision/decision4',//值际对标
-    name: 'decision4',
-    component: () => import(/* webpackChunkName: "decision4" */ '../views/Decision/Decision4.vue'),
-  },
-  {
-    path: '/decision/decision4czzl',//操作指令统计
-    name: 'decision4czzl',
-    component: () => import(/* webpackChunkName: "decision4czzl" */ '../views/Decision/Decision4Czzl.vue'),
-  },
-  {
-    path: '/health',
-    name: 'health',
-    component: () => import('../views/HealthControl/Health.vue'),
-  },
-  {
-    path: '/health/healthDay',//风机  日  信息量化评级管理
-    name: 'healthDay',
-    component: () => import('../views/HealthControl/HealthDay.vue'),
-  },
-  {
-    path: '/health/healthMonth',//风机  月  信息量化评级管理
-    name: 'healthMonth',
-    component: () => import('../views/HealthControl/HealthMonth.vue'),
-  },
-  {
-    path: '/health/healthYear',//风机  年  信息量化评级管理
-    name: 'healthYear',
-    component: () => import('../views/HealthControl/HealthYear.vue'),
-  },
-  {
-    path: '/health/health1',
-    name: 'health1',
-    component: () => import('../views/HealthControl/Health1.vue'),
-  },
-  {
-    path: '/health/health2', // 健康管理首页
-    name: 'health2',
-    component: () => import('../views/HealthControl/Health2.vue'),
-  },
-  {
-    path: '/health/health3/:wpId', // 场站健康管理
-    name: 'health3',
-    component: () => import('../views/HealthControl/Health3.vue'),
-  },
-  {
-    path: '/health/health4',
-    name: 'health4',
-    children: [{
-      path: "/health/health0/:wtId",
-      name: "health0",
-      component: () => import("../views/HealthControl/Health0.vue"),
-    },{
-      path: "/health/health10/:wtId",
-      name: "health10",
-      component: () => import(/* webpackChunkName: "health8" */ "../views/HealthControl/Health10.vue"),
-    },{
-      path: 'healthLineChart/:wtId', // 风机健康趋势
-      component: () => import(/* webpackChunkName: "healthLineChart" */ '../views/HealthControl/healthLineChart.vue'),
-    },
-    {
-      path: 'healthLineChart2/:wtId', // 健康趋势
-      component: () => import(/* webpackChunkName: "healthLineChart2" */ '../views/HealthControl/healthLineChart2.vue'),
-    }],
-    component: () => import('../views/HealthControl/Health4.vue'),
-  },
-  {
-    path: '/health/health5/',
-    name: 'health5',
-    component: () => import('../views/HealthControl/Health5.vue'),
-  },
-  {
-    path: '/health/health6', // 健康总览
-    name: 'health6',
-    component: () => import('../views/HealthControl/Health6.vue'),
-  },
-  {
-    path: '/cutAnalyse', // 切入切出分析
-    name: 'cutAnalyse',
-    component: () => import('../views/cutAnalyse/index.vue'),
-  },
-  {
-    path: '/cutAnalyse', // 切入切出分析
-    name: 'cutAnalyse',
-    component: () => import('../views/cutAnalyse/index.vue'),
-  },
-  {
-    path: '/wtSaturability', // 单机饱和度
-    name: 'wtSaturability',
-    component: () => import('../views/wtSaturability/index.vue'),
-  },
-  {
-    path: '/windAnalysis', // 风资源分析
-    name: 'windAnalysis',
-    component: () => import('../views/windAnalysis/index.vue'),
-  },
-  {
-    path: '/powerRank', // 发电效率排行
-    name: 'powerRank',
-    component: () => import('../views/powerRank/index.vue'),
-  },
-  {
-    path: '/totalPowerRank', // 总发电效率排行
-    name: 'totalPowerRank',
-    component: () => import('../views/totalPowerRank/index.vue'),
-  },
-  {
-    path: '/warningRank', // 报警排行
-    name: 'warningRank',
-    component: () => import('../views/warningRank/index.vue'),
-  },
-  {
-    path: '/realSearch', // 测点数据查询
-    name: 'realSearch',
-    component: () => import('../views/realSearch/index.vue'),
-  },
-  {
-    path: '/singleAnalysis', // 单机月度分析
-    name: 'singleAnalysis',
-    component: () => import('../views/singleAnalysis/index.vue'),
-  },
-  {
-    path: '/performanceAnalysis', // 单机性能分析
-    name: 'performanceAnalysis',
-    component: () => import('../views/performanceAnalysis/index.vue'),
-    // children: [{
-    //   path: "detail/:wpId",
-    //   name: "performanceAnalysisDetail",
-    //   component: () => import("../views/performanceAnalysis/detail/index.vue"),
-    // }]
-  },
-  {
-    path: '/historySearch', // 测点历史数据查询
-    name: 'historySearch',
-    component: () => import('../views/historySearch/index.vue'),
-  },
-  {
-    path: '/knowledge',   //故障知识列表
-    name: 'knowledge1',
-    component: () => import('../views/Knowledge/Knowledge1.vue'),
-  },  
-  {
-    path: '/knowledge2',  //安全措施知识
-    name: 'knowledge2',
-    component: () => import('../views/Knowledge/Knowledge2.vue'),
-  },
-  {
-    path: '/knowledge3',   //风险辨识知识
-    name: 'knowledge3',
-    component: () => import('../views/Knowledge/Knowledge3.vue'),
-  },
-  {
-    path: '/knowledge4',   //作业指导知识
-    name: 'knowledge4',
-    component: () => import('../views/Knowledge/Knowledge4.vue'),
-  },
-  {
-    path: '/knowledge5',   //特征参数
-    name: 'knowledge5',
-    component: () => import('../views/Knowledge/Knowledge5.vue'),
-  },
-  {
-    path: '/knowledge6',   //排查检修方案
-    name: 'knowledge6',
-    component: () => import('../views/Knowledge/Knowledge6.vue'),
-  },
-  {
-    path: '/knowledge7',   //预警知识
-    name: 'knowledge7',
-    component: () => import('../views/Knowledge/Knowledge7.vue'),
-  },
-  {
-    path: "/health/health8",
-    name: "health8",
-    component: () => import(/* webpackChunkName: "health8" */ "../views/HealthControl/Health8.vue"),
-  },
-  {
-    path: "/monitor/sandtable",
-    name: "sandtable",
-    component: () => import(/* webpackChunkName: "sandtable" */ "../views/SandTable/SandTable.vue"),
-  },
-  {
-    path: "/new/dj1",
-    name: "dj1",
-    component: () => import(/* webpackChunkName: "dj1" */ "../views/NewPages/dj1.vue"),
-  },
-  {
-    path: "/new/pf1",
-    name: "pf1",
-    component: () => import(/* webpackChunkName: "pf1" */ "../views/NewPages/power-forecast-1.vue"),
-  },
-  {
-    path: "/new/fs",
-    name: "fs",
-    component: () => import(/* webpackChunkName: "fs" */ "../views/NewPages/forecast-system.vue"),
-  },
-  {
-    path: '/new/ztfx',
-    name: 'ztfx',
-    component: () => import( /* webpackChunkName: "ztfx" */ '../views/NewPages/ztfx.vue'),
-  },
-  {
-    path: '/new/fdlyl',
-    name: 'fdlyl',
-    component: () => import( /* webpackChunkName: "ztfx" */ '../views/NewPages/fdlyl.vue'),
-  },
-  {
-    path: '/new/intelligentalarmcenter',
-    name: 'intelligentalarmcenter',
-    component: () => import( /* webpackChunkName: "intelligentalarmcenter" */ '../views/NewPages/intelligent-alarm-center.vue'),
-  },
-  {
-    path: '/new/personnel',
-    name: 'personnel',
-    component: () => import( /* webpackChunkName: "personnel" */ '../views/NewPages/personnel.vue'),
-  },
-  {
-    path: '/new/znzhfx',
-    name: 'znzhfx',
-    component: () => import( /* webpackChunkName: "ztfx" */ '../views/NewPages/znzhfx.vue'),
-  },
-  {
-    path: '/new/alarmcenter',
-    name: 'alarmcenter',
-    component: () => import( /* webpackChunkName: "personnel" */ '../views/NewPages/alarm-center.vue'),
-  },
-  {
-    path: '/new/knowledgebase',
-    name: 'knowledgebase',
-    component: () => import( /* webpackChunkName: "knowledgebase" */ '../views/NewPages/knowledge-base.vue'),
-  },
-  {
-    path: "/new/dj",
-    name: "dj",
-    component: () => import(/* webpackChunkName: "dj" */ "../views/NewPages/dj.vue"),
-  },
-  {
-    path: "/new/dj2",
-    name: "dj2",
-    component: () => import(/* webpackChunkName: "dj2" */ "../views/NewPages/dj2.vue"),
-  },
-  {
-    path: "/new/dialog",
-    name: "dialog",
-    component: () => import(/* webpackChunkName: "dj2" */ "../views/NewPages/dialogs.vue"),
-  },  // 三率管理/复位及时率
-  {
-    path:'/fwjsl',
-    name:'fwjsl',
-    component:()=> import('../views/Decision/slgl/fwjsl.vue')
-  },
-  // 三率管理/状态转换率
-  {
-    path:'/ztzhl',
-    name:'ztzhl',
-    component:()=> import('../views/Decision/slgl/ztzhl.vue')
-  },
-  // 三率管理/消缺及时率
-  {
-    path:'/xqjsl',
-    name:'xqjsl',
-    component:()=> import('../views/Decision/slgl/xqjsl.vue')
-  }
+        path: '/decision/decision1', //风机绩效榜
+        name: 'decision1',
+        component: () =>
+            import ( /* webpackChunkName: "decision1" */ '../views/Decision/Decision1.vue'),
+    },
+    {
+        path: '/decision/decision1Mx', //风机绩效榜明细
+        name: 'decision1Mx',
+        component: () =>
+            import ( /* webpackChunkName: "decision1Mx" */ '../views/Decision/Decision1Mx.vue'),
+    },
+
+    {
+        path: '/decision/decision2', //五项损失率
+        name: 'decision2',
+        component: () =>
+            import ( /* webpackChunkName: "decision2" */ '../views/Decision/Decision2.vue'),
+    },
+    {
+        path: '/decision/decision2Cndb', //场内对标
+        name: 'decision2Cndb',
+        component: () =>
+            import ( /* webpackChunkName: "decision2Cndb" */ '../views/Decision/Decision2Cndb.vue'),
+    },
+    {
+        path: '/decision/decision2Cjdb', //场际对标
+        name: 'decision2Cjdb',
+        component: () =>
+            import ( /* webpackChunkName: "decision2Cjdb" */ '../views/Decision/Decision2Cjdb.vue'),
+    },
+    {
+        path: '/decision/decision2Xmdb', //项目对标
+        name: 'decision2Xmdb',
+        component: () =>
+            import ( /* webpackChunkName: "decision2Xmdb" */ '../views/Decision/Decision2Xmdb.vue'),
+    },
+    {
+        path: '/decision/decision2Xldb', //线路对标
+        name: 'decision2Xldb',
+        component: () =>
+            import ( /* webpackChunkName: "decision2Xldb" */ '../views/Decision/Decision2Xldb.vue'),
+    },
+    {
+        path: '/decision/decision3', //性能对标
+        name: 'decision3',
+        component: () =>
+            import ( /* webpackChunkName: "decision3" */ '../views/Decision/Decision3.vue'),
+    },
+    {
+        path: '/decision/decision4', //值际对标
+        name: 'decision4',
+        component: () =>
+            import ( /* webpackChunkName: "decision4" */ '../views/Decision/Decision4.vue'),
+    },
+    {
+        path: '/decision/decision4czzl', //操作指令统计
+        name: 'decision4czzl',
+        component: () =>
+            import ( /* webpackChunkName: "decision4czzl" */ '../views/Decision/Decision4Czzl.vue'),
+    },
+    {
+        path: '/health',
+        name: 'health',
+        component: () =>
+            import ('../views/HealthControl/Health.vue'),
+    },
+    {
+        path: '/health/healthDay', //风机  日  信息量化评级管理
+        name: 'healthDay',
+        component: () =>
+            import ('../views/HealthControl/HealthDay.vue'),
+    },
+    {
+        path: '/health/healthMonth', //风机  月  信息量化评级管理
+        name: 'healthMonth',
+        component: () =>
+            import ('../views/HealthControl/HealthMonth.vue'),
+    },
+    {
+        path: '/health/healthYear', //风机  年  信息量化评级管理
+        name: 'healthYear',
+        component: () =>
+            import ('../views/HealthControl/HealthYear.vue'),
+    },
+    {
+        path: '/health/health1',
+        name: 'health1',
+        component: () =>
+            import ('../views/HealthControl/Health1.vue'),
+    },
+    {
+        path: '/health/health2', // 健康管理首页
+        name: 'health2',
+        component: () =>
+            import ('../views/HealthControl/Health2.vue'),
+    },
+    {
+        path: '/health/health3/:wpId', // 场站健康管理
+        name: 'health3',
+        component: () =>
+            import ('../views/HealthControl/Health3.vue'),
+    },
+    {
+        path: '/health/health4',
+        name: 'health4',
+        children: [{
+                path: "/health/health0/:wpId/:wtId",
+                name: "health0",
+                component: () =>
+                    import ("../views/HealthControl/Health0.vue"),
+            }, {
+                path: "/health/health10/:wtId",
+                name: "health10",
+                component: () =>
+                    import ( /* webpackChunkName: "health8" */ "../views/HealthControl/Health10.vue"),
+            }, {
+                path: 'healthLineChart/:wtId', // 风机健康趋势
+                component: () =>
+                    import ( /* webpackChunkName: "healthLineChart" */ '../views/HealthControl/healthLineChart.vue'),
+            },
+            {
+                path: 'healthLineChart2/:wtId', // 健康趋势
+                component: () =>
+                    import ( /* webpackChunkName: "healthLineChart2" */ '../views/HealthControl/healthLineChart2.vue'),
+            }
+        ],
+        component: () =>
+            import ('../views/HealthControl/Health4.vue'),
+    },
+    {
+        path: '/health/health5/',
+        name: 'health5',
+        component: () =>
+            import ('../views/HealthControl/Health5.vue'),
+    },
+    {
+        path: '/health/health6', // 健康总览
+        name: 'health6',
+        component: () =>
+            import ('../views/HealthControl/Health6.vue'),
+    },
+    {
+        path: '/cutAnalyse', // 切入切出分析
+        name: 'cutAnalyse',
+        component: () =>
+            import ('../views/cutAnalyse/index.vue'),
+    },
+    {
+        path: '/cutAnalyse', // 切入切出分析
+        name: 'cutAnalyse',
+        component: () =>
+            import ('../views/cutAnalyse/index.vue'),
+    },
+    {
+        path: '/wtSaturability', // 单机饱和度
+        name: 'wtSaturability',
+        component: () =>
+            import ('../views/wtSaturability/index.vue'),
+    },
+    {
+        path: '/windAnalysis', // 风资源分析
+        name: 'windAnalysis',
+        component: () =>
+            import ('../views/windAnalysis/index.vue'),
+    },
+    {
+        path: '/powerRank', // 发电效率排行
+        name: 'powerRank',
+        component: () =>
+            import ('../views/powerRank/index.vue'),
+    },
+    {
+        path: '/totalPowerRank', // 总发电效率排行
+        name: 'totalPowerRank',
+        component: () =>
+            import ('../views/totalPowerRank/index.vue'),
+    },
+    {
+        path: '/warningRank', // 报警排行
+        name: 'warningRank',
+        component: () =>
+            import ('../views/warningRank/index.vue'),
+    },
+    {
+        path: '/realSearch', // 测点数据查询
+        name: 'realSearch',
+        component: () =>
+            import ('../views/realSearch/index.vue'),
+    },
+    {
+        path: '/singleAnalysis', // 单机月度分析
+        name: 'singleAnalysis',
+        component: () =>
+            import ('../views/singleAnalysis/index.vue'),
+    },
+    // {
+    //   path: '/performanceAnalysis', // 单机性能分析
+    //   name: 'performanceAnalysis',
+    //   component: () => import('../views/performanceAnalysis/index.vue'),
+    //   children: [{
+    //     path: "detail/:wpId",
+    //     name: "performanceAnalysisDetail",
+    //     component: () => import("../views/performanceAnalysis/detail/index.vue"),
+    //   }]
+    // },
+    {
+        path: '/historySearch', // 测点历史数据查询
+        name: 'historySearch',
+        component: () =>
+            import ('../views/historySearch/index.vue'),
+    },
+    {
+        path: '/knowledge', //故障知识列表
+        name: 'knowledge1',
+        component: () =>
+            import ('../views/Knowledge/Knowledge1.vue'),
+    },
+    {
+        path: '/knowledge2', //安全措施知识
+        name: 'knowledge2',
+        component: () =>
+            import ('../views/Knowledge/Knowledge2.vue'),
+    },
+    {
+        path: '/knowledge3', //风险辨识知识
+        name: 'knowledge3',
+        component: () =>
+            import ('../views/Knowledge/Knowledge3.vue'),
+    },
+    {
+        path: '/knowledge4', //作业指导知识
+        name: 'knowledge4',
+        component: () =>
+            import ('../views/Knowledge/Knowledge4.vue'),
+    },
+    {
+        path: '/knowledge5', //特征参数
+        name: 'knowledge5',
+        component: () =>
+            import ('../views/Knowledge/Knowledge5.vue'),
+    },
+    {
+        path: '/knowledge6', //排查检修方案
+        name: 'knowledge6',
+        component: () =>
+            import ('../views/Knowledge/Knowledge6.vue'),
+    },
+    {
+        path: '/knowledge7', //预警知识
+        name: 'knowledge7',
+        component: () =>
+            import ('../views/Knowledge/Knowledge7.vue'),
+    },
+    {
+        path: "/health/health8",
+        name: "health8",
+        component: () =>
+            import ( /* webpackChunkName: "health8" */ "../views/HealthControl/Health8.vue"),
+    },
+    {
+        path: "/monitor/sandtable",
+        name: "sandtable",
+        component: () =>
+            import ( /* webpackChunkName: "sandtable" */ "../views/SandTable/SandTable.vue"),
+    },
+    {
+        path: "/performanceAnalysis", // 单机性能分析
+        name: "performanceAnalysis",
+        component: () =>
+            import ( /* webpackChunkName: "dj1" */ "../views/NewPages/dj1.vue"),
+    },
+    {
+        path: "/new/pf1",
+        name: "pf1",
+        component: () =>
+            import ( /* webpackChunkName: "pf1" */ "../views/NewPages/power-forecast-1.vue"),
+    },
+    {
+        path: "/new/fs",
+        name: "fs",
+        component: () =>
+            import ( /* webpackChunkName: "fs" */ "../views/NewPages/forecast-system.vue"),
+    },
+    {
+        path: '/new/ztfx',
+        name: 'ztfx',
+        component: () =>
+            import ( /* webpackChunkName: "ztfx" */ '../views/NewPages/ztfx.vue'),
+    },
+    {
+      path: '/new/fdlyl',
+      name: 'fdlyl',
+      component: () => import( /* webpackChunkName: "ztfx" */ '../views/NewPages/fdlyl.vue'),
+    },
+    {
+        path: '/new/intelligentalarmcenter',
+        name: 'intelligentalarmcenter',
+        component: () =>
+            import ( /* webpackChunkName: "intelligentalarmcenter" */ '../views/NewPages/intelligent-alarm-center.vue'),
+    },
+    {
+        path: '/new/personnel',
+        name: 'personnel',
+        component: () =>
+            import ( /* webpackChunkName: "personnel" */ '../views/NewPages/personnel.vue'),
+    },
+    {
+        path: '/new/znzhfx',
+        name: 'znzhfx',
+        component: () =>
+            import ( /* webpackChunkName: "ztfx" */ '../views/NewPages/znzhfx.vue'),
+    },
+    {
+        path: '/new/alarmcenter',
+        name: 'alarmcenter',
+        component: () =>
+            import ( /* webpackChunkName: "personnel" */ '../views/NewPages/alarm-center.vue'),
+    },
+    {
+        path: '/new/knowledgebase',
+        name: 'knowledgebase',
+        component: () =>
+            import ( /* webpackChunkName: "knowledgebase" */ '../views/NewPages/knowledge-base.vue'),
+    },
+    {
+        path: "/new/dj",
+        name: "dj",
+        component: () =>
+            import ( /* webpackChunkName: "dj" */ "../views/NewPages/dj.vue"),
+    },
+    {
+        path: "/new/dj2",
+        name: "dj2",
+        component: () =>
+            import ( /* webpackChunkName: "dj2" */ "../views/NewPages/dj2.vue"),
+    },
+    {
+        path: "/new/dialog",
+        name: "dialog",
+        component: () =>
+            import ( /* webpackChunkName: "dj2" */ "../views/NewPages/dialogs.vue"),
+    }, // 三率管理/复位及时率
+    {
+        path: '/fwjsl',
+        name: 'fwjsl',
+        component: () =>
+            import ('../views/Decision/slgl/fwjsl.vue')
+    },
+    // 三率管理/状态转换率
+    {
+        path: '/ztzhl',
+        name: 'ztzhl',
+        component: () =>
+            import ('../views/Decision/slgl/ztzhl.vue')
+    },
+    // 三率管理/消缺及时率
+    {
+        path: '/xqjsl',
+        name: 'xqjsl',
+        component: () =>
+            import ('../views/Decision/slgl/xqjsl.vue')
+    }
 ]
 const router = createRouter({
-  history: createWebHashHistory(),
-  base: '/zhfx/',
-  routes
+    history: createWebHashHistory(),
+    base: '/zhfx/',
+    routes
 })
 
 router.beforeEach((to, from, next) => {
-  next()
+    next()
 })
 
-export default router
+export default router

Dosya farkı çok büyük olduğundan ihmal edildi
+ 817 - 693
src/views/HealthControl/Health0.vue


+ 2 - 1
src/views/HealthControl/Health5.vue

@@ -89,8 +89,9 @@ export default {
     },
     // 跳转按钮
     onClickJump(item){
+      console.warn(item);
        this.$router.push({
-        path: `/health/health0/${item.wtId}`
+        path: `/health/health0/${item.wpId}/${item.wtId}`
       });
     }
   }

+ 87 - 44
src/views/HealthControl/Health8.vue

@@ -5,88 +5,100 @@
         <div class="query-item">
           <div class="lable">场站:</div>
           <div class="search-input">
-            <el-select v-model="value1" clearable placeholder="请选择" popper-class="select">
-              <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
+            <el-select
+              v-model="value1"
+              clearable
+              placeholder="请选择"
+              popper-class="select"
+              @change="searchWindTurbineHealthList"
+            >
+              <el-option
+                v-for="item in options"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              >
+              </el-option>
             </el-select>
           </div>
         </div>
       </div>
     </div>
     <div class="table">
-      <table style="width:100%;" border="0" cellspacing="0">
+      <table style="width: 100%" border="0" cellspacing="0">
         <thead>
           <tr>
-            <th rowspan="2" class="type1" style="width:50px;"></th>
-            <th rowspan="2" class="type1" style="width:105px;">风机编号</th>
-            <th rowspan="2" class="type1" style="width:105px;">风机型号</th>
-            <th rowspan="2" class="type1" style="width:350px;">置信度</th>
-            <th rowspan="2" class="type1" style="width:100px;">健康分数</th>
-            <th rowspan="2" class="type1" style="border: 2px solid #07140f;border-left: 0;">未来风机健康程度</th>
+            <th rowspan="2" class="type1" style="width: 50px"></th>
+            <th rowspan="2" class="type1" style="width: 105px">风机编号</th>
+            <th rowspan="2" class="type1" style="width: 105px">风机型号</th>
+            <th rowspan="2" class="type1" style="width: 350px">置信度</th>
+            <th rowspan="2" class="type1" style="width: 100px">健康分数</th>
+            <th
+              rowspan="2"
+              class="type1"
+              style="border: 2px solid #07140f; border-left: 0"
+            >
+              未来风机健康程度
+            </th>
             <th colspan="8">组件健康度</th>
           </tr>
           <tr>
-            <th style="width:100px;">齿轮箱</th>
-            <th style="width:100px;">发电机</th>
-            <th style="width:100px;">主轴</th>
-            <th style="width:100px;">变桨</th>
-            <th style="width:100px;">偏航</th>
-            <th style="width:100px;">机舱</th>
-            <th style="width:100px;">变频器</th>
-            <th style="width:100px;">主控</th>
+            <th style="width: 100px">齿轮箱</th>
+            <th style="width: 100px">发电机</th>
+            <th style="width: 100px">主轴</th>
+            <th style="width: 100px">变桨</th>
+            <th style="width: 100px">偏航</th>
+            <th style="width: 100px">机舱</th>
+            <th style="width: 100px">变频器</th>
+            <th style="width: 100px">主控</th>
           </tr>
         </thead>
       </table>
       <el-scrollbar>
-        <div style="height:calc(100vh - 174px);">
-          <table style="width:100%;" border="0" cellspacing="0">
+        <div style="height: calc(100vh - 174px)">
+          <table style="width: 100%" border="0" cellspacing="0">
             <tbody>
-              <tr v-for="index of 50" :key="index">
-                <td style="width:50px;">
-                  01
-                </td>
-                <td style="width:105px;">
-                  MG01_01
-                </td>
-                <td style="width:105px;">
-                  UP77
-                </td>
-                <td style="width:350px;">
+              <tr v-for="(item,index) in tableData" :key="index">
+                <td style="width: 50px">{{item.id}}</td>
+                <td style="width: 105px">{{item.wtname}}</td>
+                <td style="width: 105px">{{item.model}}</td>
+                <td style="width: 350px">
                   <div class="percent-item">
-                    80%
+                    {{item.zxd}}%
                     <div class="percent-bar" style="">
-                      <div class="percent-value" style="width:80%"></div>
+                      <div class="percent-value" :style="{'width':`${item.zxd}%`}"></div>
                     </div>
                   </div>
                 </td>
-                <td class="score" style="width:100px;">
-                  <div>100</div>
+                <td class="score" style="width: 100px">
+                  <div>{{item.score}}</div>
                 </td>
                 <td>
-                  <table-line-chart />
+                  <table-line-chart :list='item.futureHealth'/>
                 </td>
                 <td class="item">
-                  <div class="green">优</div>
+                  <div :class="[color(item.clx)]">{{item.clx}}</div>
                 </td>
                 <td class="item">
-                  <div class="purple">优</div>
+                  <div :class="[color(item.fdj)]">{{item.fdj}}</div>
                 </td>
                 <td class="item">
-                  <div class="orange">优</div>
+                  <div :class="[color(item.zz)]">{{item.zz}}</div>
                 </td>
                 <td class="item">
-                  <div class="red">优</div>
+                  <div :class="[color(item.bj)]">{{item.bj}}</div>
                 </td>
                 <td class="item">
-                  <div class="">优</div>
+                  <div :class="[color(item.ph)]">{{item.ph}}</div>
                 </td>
                 <td class="item">
-                  <div class="">优</div>
+                  <div :class="[color(item.jc)]">{{item.jc}}</div>
                 </td>
                 <td class="item">
-                  <div class="">优</div>
+                  <div :class="[color(item.bpq)]">{{item.bpq}}</div>
                 </td>
                 <td class="item">
-                  <div class="">优</div>
+                  <div :class="[color(item.zk)]">{{item.zk}}</div>
                 </td>
               </tr>
             </tbody>
@@ -127,9 +139,40 @@ export default {
         },
       ],
       value1: "",
+      tableData:'',
+      colorval:{
+        '优':'purple',
+        '良':'orange',
+        '差':'red',
+      }
     };
   },
-  created() {},
+  created() {
+    this.search();
+  },
+  methods: {
+    color(val){
+     return this.colorval[val]
+    },
+    async search() {
+      const {data} = await this.API.requestData({
+        subUrl: "powercompare/windfarmAjax",
+      });
+      this.options = data.data
+      this.value1 = data.data[0].id
+      this.searchWindTurbineHealthList()
+    },
+    async searchWindTurbineHealthList(){
+      const {data} = await this.API.requestData({
+        subUrl: "wtHealthList/windTurbineHealthList",
+        method: "POST", 
+        data:{
+          wpId : this.value1
+        }
+      });
+        this.tableData = data.data
+    }
+  },
 };
 </script>
 

+ 3 - 2
src/views/HealthControl/HealthTab3.vue

@@ -77,7 +77,7 @@
     </div>
     <div class="dialog-box">
       <el-dialog title="消缺跟踪" v-model="dialogVisible" width="950px" custom-class="modal" :close-on-click-modal="false">
-        <info-track :data="trackDate"/>
+        <info-track :formdata="trackDate"/>
       </el-dialog>   
     </div> 
   </div>
@@ -165,7 +165,6 @@ export default {
     },
     // 消缺跟踪
     onClickTrack(row){
-      this.dialogVisible = true
       this.requestTrack(row);
     },
     // 获取场站
@@ -239,6 +238,8 @@ export default {
         success(res) {
           if (res.code == 200) {
             that.trackDate = res.data
+            console.warn(that.trackDate);
+             that.dialogVisible = true
           }
         },
       });

+ 1 - 1
src/views/HealthControl/HealthTab4.vue

@@ -78,7 +78,7 @@
     </div>
     <div class="dialog-box">
       <el-dialog title="日信息对比" v-model="dialogVisible" width="1200px" custom-class="modal" :close-on-click-modal="false">
-        <info-history :data="trackDate"/>
+        <info-history :formdata="trackDate"/>
       </el-dialog>   
     </div> 
   </div>

+ 187 - 168
src/views/HealthControl/defect-elimination-tracking.vue

@@ -1,198 +1,217 @@
 <template>
-    <div class="defect-elimination-tracking" v-if="showMe">
-        <div class="defect-elimination-tracking-close">
-            <i class="el-icon el-icon-close" @click="close"></i>
+  <div class="defect-elimination-tracking" v-if="showMe">
+    <div class="defect-elimination-tracking-close">
+      <i class="el-icon el-icon-close" @click="close"></i>
+    </div>
+    <div class="header-tile-box">
+      <div class="header-tile-h">
+        <div class="header-box">
+          <img :src="header" class="header" />
+        </div>
+      </div>
+      <div class="header-tile">
+        <div class="info-form-box">
+          <div class="info-form">
+            <div class="info-form-label">检修人员:</div>
+            <div class="info-form-value">王义波</div>
+          </div>
+          <div class="info-form">
+            <div class="info-form-label">收缩血压:</div>
+            <div class="info-form-value">0</div>
+          </div>
+        </div>
+      </div>
+      <div class="header-tile">
+        <div class="info-form-box">
+          <div class="info-form">
+            <div class="info-form-label">工作时长:</div>
+            <div class="info-form-value">76.0分钟</div>
+          </div>
+          <div class="info-form">
+            <div class="info-form-label">舒张血压:</div>
+            <div class="info-form-value">0</div>
+          </div>
         </div>
-        <div class="header-tile-box">
-            <div class="header-tile-h">
-                <div class="header-box">
-                    <img :src="header" class="header" />
-                </div>
-            </div>
-            <div class="header-tile">
-                <div class="info-form-box">
-                    <div class="info-form">
-                        <div class="info-form-label">检修人员:</div>
-                        <div class="info-form-value">王义波</div>
-                    </div>
-                    <div class="info-form">
-                        <div class="info-form-label">收缩血压:</div>
-                        <div class="info-form-value">0</div>
-                    </div>
-                </div>
-            </div>
-            <div class="header-tile">
-                <div class="info-form-box">
-                    <div class="info-form">
-                        <div class="info-form-label">工作时长:</div>
-                        <div class="info-form-value">76.0分钟</div>
-                    </div>
-                    <div class="info-form">
-                        <div class="info-form-label">舒张血压:</div>
-                        <div class="info-form-value">0</div>
-                    </div>
-                </div>
-            </div>
-            <div class="header-tile">
-                <div class="info-form-box">
-                    <div class="info-form">
-                        <div class="info-form-label">工作强度:</div>
-                        <div class="info-form-value">高</div>
-                    </div>
-                    <div class="info-form">
-                        <div class="info-form-label">心跳频率:</div>
-                        <div class="info-form-value">0</div>
-                    </div>
-                </div>
-            </div>
-            <div class="header-tile">
-                <div class="info-form-box">
-                    <div class="info-form">
-                        <div class="info-form-label">疲劳度:</div>
-                        <div class="info-form-value">0</div>
-                    </div>
-                    <div class="info-form">
-                        <div class="info-form-label">血压:</div>
-                        <div class="info-form-value">0</div>
-                    </div>
-                </div>
-            </div>
+      </div>
+      <div class="header-tile">
+        <div class="info-form-box">
+          <div class="info-form">
+            <div class="info-form-label">工作强度:</div>
+            <div class="info-form-value">高</div>
+          </div>
+          <div class="info-form">
+            <div class="info-form-label">心跳频率:</div>
+            <div class="info-form-value">0</div>
+          </div>
         </div>
-        <div class="det-chart-title">检修人员健康情况</div>
-        <div class="det-chart-sub-title">工作期间检测值</div>
-        <normal-line-chart class="det-chart" height="21.296vh" :showLegend="true" />
-        <div class="det-chart-sub-title-big">专业技能:</div>
-        <div class="det-chart-sub-title">电力类,机电类</div>
+      </div>
+      <div class="header-tile">
+        <div class="info-form-box">
+          <div class="info-form">
+            <div class="info-form-label">疲劳度:</div>
+            <div class="info-form-value">0</div>
+          </div>
+          <div class="info-form">
+            <div class="info-form-label">血压:</div>
+            <div class="info-form-value">0</div>
+          </div>
+        </div>
+      </div>
     </div>
+    <div class="det-chart-title">检修人员健康情况</div>
+    <div class="det-chart-sub-title">工作期间检测值</div>
+    <normal-line-chart class="det-chart" height="21.296vh" :showLegend="true" />
+    <div class="det-chart-sub-title-big">专业技能:</div>
+    <div class="det-chart-sub-title">电力类,机电类</div>
+  </div>
 </template>
 
 <script>
 import NormalLineChart from "@com/chart/line/normal-line-chart.vue";
 export default {
-    components: {
-        NormalLineChart
+  components: {
+    NormalLineChart,
+  },
+  props: {
+    formdata: Object,
+  },
+  data() {
+    return {
+      showMe: false,
+      header: require("@assets/logo.png"),
+    };
+  },
+  created(){
+      this.search()
+      console.warn(this.formdata);
+  },
+  // 函数
+  methods: {
+    async search() {
+      const { data } = await this.API.requestData({
+        subUrl: "/recommen/findShbraceletList",
+        method: "POST", 
+        data:{
+          name : this.formdata.workleader,
+          beginDate : this.formdata.departuretime,
+          endDate : this.formdata.checktime,
+        }
+      });
+      console.warn(data);
     },
-    data() {
-        return {
-            showMe: false,
-            header: require("@assets/logo.png"),
-        };
+    show: function () {
+      this.showMe = true;
     },
-    // 函数
-    methods: {
-        show: function () {
-            this.showMe = true;
-        },
-        close: function () {
-            this.showMe = false;
-        },
+    close: function () {
+      this.showMe = false;
     },
+  },
 };
 </script>
 
 <style lang="less">
 .defect-elimination-tracking {
+  position: absolute;
+  width: 800px;
+  height: 460px;
+  top: calc(50% - 230px);
+  left: calc(50% - 400px);
+  background: rgba(18, 29, 28, 0.95);
+  border: 1px solid rgba(5, 187, 76, 0.5);
+  padding: 16px;
+  z-index: 999;
+  .defect-elimination-tracking-close {
     position: absolute;
-    width: 800px;
-    height: 460px;
-    top: calc(50% - 230px);
-    left: calc(50% - 400px);
-    background: rgba(18, 29, 28, 0.95);
-    border: 1px solid rgba(5, 187, 76, 0.5);
-    padding: 16px;
-
-    .defect-elimination-tracking-close {
-        position: absolute;
-        top: 16px;
-        right: 16px;
-        cursor: pointer;
-
-        i {
-            font-size: 16px;
-            color: #909399;
-        }
+    top: 16px;
+    right: 16px;
+    cursor: pointer;
 
-        &:hover {
-            i {
-                color: @green;
-            }
-        }
+    i {
+      font-size: 16px;
+      color: #909399;
     }
 
-    .header-tile-box {
-        display: flex;
+    &:hover {
+      i {
+        color: @green;
+      }
+    }
+  }
 
-        .header-tile-h {
-            width: 54px;
-
-            .header-box {
-                width: 54px;
-                height: 76px;
-                display: flex;
-                align-items: center;
-                justify-content: center;
-                background: #ffffff;
-
-                .header {
-                    width: 54px;
-                }
-            }
-        }
+  .header-tile-box {
+    display: flex;
 
-        .header-tile {
-            padding: 0 8px;
-            display: flex;
-            flex-direction: column;
-            justify-content: center;
-
-            .info-form-box {
-                .info-form {
-                    display: flex;
-
-                    .info-form-label {
-                        width: 80px;
-                        font-size: @fontsize-s;
-                        color: @gray-l;
-                        text-align: right;
-                    }
-
-                    .info-form-value {
-                        font-size: @fontsize-s;
-                        color: @white;
-                        line-height: 1.5;
-                        margin-left: 8px;
-                    }
-
-                    +.info-form {
-                        margin-top: 8px;
-                    }
-                }
-            }
-        }
-    }
-    
-    .det-chart {
-        width: 100%;
-        height: 21.296vh;
-    }
+    .header-tile-h {
+      width: 54px;
 
-    .det-chart-title {
-        text-align: center;
-        font-size: @fontsize;
-        color: @gray-l;
-        margin-top: 16px;
-    }
+      .header-box {
+        width: 54px;
+        height: 76px;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        background: #ffffff;
 
-    .det-chart-sub-title {
-        font-size: @fontsize-s;
-        color: @gray-l;
-        margin: 8px 0;
+        .header {
+          width: 54px;
+        }
+      }
     }
 
-    .det-chart-sub-title-big {
-        font-size: @fontsize;
-        color: @gray-l;
-        margin: 16px 0 8px 0;
+    .header-tile {
+      padding: 0 8px;
+      display: flex;
+      flex-direction: column;
+      justify-content: center;
+
+      .info-form-box {
+        .info-form {
+          display: flex;
+
+          .info-form-label {
+            width: 80px;
+            font-size: @fontsize-s;
+            color: @gray-l;
+            text-align: right;
+          }
+
+          .info-form-value {
+            font-size: @fontsize-s;
+            color: @white;
+            line-height: 1.5;
+            margin-left: 8px;
+          }
+
+          + .info-form {
+            margin-top: 8px;
+          }
+        }
+      }
     }
+  }
+
+  .det-chart {
+    width: 100%;
+    height: 21.296vh;
+  }
+
+  .det-chart-title {
+    text-align: center;
+    font-size: @fontsize;
+    color: @gray-l;
+    margin-top: 16px;
+  }
+
+  .det-chart-sub-title {
+    font-size: @fontsize-s;
+    color: @gray-l;
+    margin: 8px 0;
+  }
+
+  .det-chart-sub-title-big {
+    font-size: @fontsize;
+    color: @gray-l;
+    margin: 16px 0 8px 0;
+  }
 }
 </style>

+ 89 - 62
src/views/HealthControl/infotrack.vue

@@ -3,55 +3,15 @@
     <div class="form-info">
       <div class="work-flow">
         <div class="work-flow-line"></div>
-        <div class="work-flow-item">
+        <div :class="['work-flow-item', item.name == statu(form) ? 'active' : '']" v-for="(item, i) in svgarr" :key="i">
           <div class="work-flow-icon-item">
             <div class="work-flow-icon-o"></div>
             <div class="work-flow-icon-i"></div>
             <span class="svg-icon">
-              <SvgIcon svgid="svg-qx-warn"></SvgIcon>
+              <SvgIcon :svgid="item.svg"></SvgIcon>
             </span>
           </div>
-          <div class="work-flow-text">流程未启动</div>
-        </div>
-        <div class="work-flow-item">
-          <div class="work-flow-icon-item">
-            <div class="work-flow-icon-o"></div>
-            <div class="work-flow-icon-i"></div>
-            <span class="svg-icon">
-              <SvgIcon svgid="svg-qx-down"></SvgIcon>
-            </span>
-          </div>
-          <div class="work-flow-text">消缺单已下达</div>
-        </div>
-        <div class="work-flow-item">
-          <div class="work-flow-icon-item">
-            <div class="work-flow-icon-o"></div>
-            <div class="work-flow-icon-i"></div>
-            <span class="svg-icon">
-              <SvgIcon svgid="svg-qx-hour-hand"></SvgIcon>
-            </span>
-          </div>
-          <div class="work-flow-text">消缺单处理中</div>
-        </div>
-        <div class="work-flow-item active">
-          <div class="work-flow-icon-item">
-            <div class="work-flow-icon-o"></div>
-            <div class="work-flow-icon-i"></div>
-            <span class="svg-icon">
-              <SvgIcon svgid="svg-对"></SvgIcon>
-            </span>
-          </div>
-          <div class="work-flow-text">消缺完成</div>
-        </div>
-        <div class="work-flow-item">
-          <div class="work-flow-icon-item">
-            <div class="work-flow-icon-o"></div>
-            <div class="work-flow-icon-i"></div>
-            <span class="svg-icon">
-              <SvgIcon svgid="svg-qx-flag"></SvgIcon>
-            </span>
-          </div>
-          <div class="work-flow-text">消缺验收</div>
+          <div class="work-flow-text">{{ item.name }}</div>
         </div>
       </div>
       <div class="form-body">
@@ -67,10 +27,7 @@
             </el-col>
             <el-col :span="12">
               <el-form-item label="风机:">
-                <el-input
-                  v-model="form.wtId"
-                  placeholder="风机名称"
-                ></el-input>
+                <el-input v-model="form.wtId" placeholder="风机名称"></el-input>
               </el-form-item>
             </el-col>
           </el-row>
@@ -216,7 +173,7 @@
         </el-form>
       </div>
     </div>
-    <div class="tabs">
+    <!-- <div class="tabs">
       <div class="tab-box">
         <div
           class="tab-item"
@@ -234,18 +191,22 @@
           <span>{{ tab.text }}</span>
         </div>
       </div>
-    </div>
+    </div> -->
+    <defect-elimination-tracking ref="det" :show="false" :formdata='formdata'></defect-elimination-tracking>
   </div>
 </template>
 
 <script>
 import SvgIcon from "@com/coms/icon/svg-icon.vue";
+import { warn } from "@vue/runtime-core";
+
+import DefectEliminationTracking from "../HealthControl/defect-elimination-tracking.vue";  //手环监控
 export default {
   components: {
-    SvgIcon,
+    SvgIcon,DefectEliminationTracking
   },
   props: {
-    data: Object,
+    formdata: Object,
   },
   data() {
     return {
@@ -263,6 +224,29 @@ export default {
           text: "监控视频",
         },
       ],
+      svgarr: [
+        {
+          svg: "svg-qx-warn",
+          name: "流程未启动",
+        },
+        {
+          svg: "svg-qx-down",
+          name: "消缺单已下达",
+        },
+        {
+          svg: "svg-qx-hour-hand",
+          name: "消缺单处理中",
+        },
+        {
+          svg: "svg-对",
+          name: "消缺完成",
+        },
+        {
+          svg: "svg-qx-flag",
+          name: "消缺验收",
+        },
+      ],
+
       activeTab: 0,
       form: {
         wtId: "",
@@ -304,26 +288,69 @@ export default {
       },
     };
   },
-  mounted() {
-    this.$nextTick(() => {
-      this.form = this.data;
-    });
+  created() {
+     this.form = this.formdata;
+     console.warn(this.form);
+     console.warn(this.statu(this.form));
   },
   // 函数
   methods: {
+    showDet() {
+      this.$refs.det.show();
+    },
+    statu(data) {
+      if (null != data.checktime) {
+        return "消缺验收";
+      } else if (
+        "等待运行验收" == data.status ||
+        data.status == "集控中心修改检修时间" ||
+        null != data.repairedtime
+      ) {
+        return "消缺完成";
+      } else if (null != data.departuretime || null != data.arrivaltime) {
+        return "消缺单处理中";
+      } else if (
+        "风机工作票已批准" == data.status ||
+        data.status == "开风机工作票"
+      ) {
+        return "消缺单已下达";
+      } else if (null == data.status || data.status == "流程未启动" || data.status == "流程未启用") {
+        return "流程未启动";
+      }
+      else{
+        return "流程未启动";
+      }
+    },
     selectTab: function (index) {
       this.activeTab = index;
+      if(index == 1){
+        this.showDet()
+      }
     },
   },
   watch: {
     data(value) {
-      this.form = value;
-      this.form.tjss = value.tjss?new Date(value.tjss).formatDate("yyyy-MM-dd hh:mm:ss"):""
-      this.form.prodtdepttime = value.prodtdepttime?new Date(value.prodtdepttime).formatDate("yyyy-MM-dd hh:mm:ss"):""
-      this.form.departuretime = value.departuretime?new Date(value.departuretime).formatDate("yyyy-MM-dd hh:mm:ss"):""
-      this.form.arrivaltime = value.arrivaltime?new Date(value.arrivaltime).formatDate("yyyy-MM-dd hh:mm:ss"):""
-      this.form.repairedtime = value.repairedtime?new Date(value.repairedtime).formatDate("yyyy-MM-dd hh:mm:ss"):""
-      this.form.checktime = value.checktime?new Date(value.checktime).formatDate("yyyy-MM-dd hh:mm:ss"):"" 
+      // this.form = value;
+      // console.warn(this.statu(value));
+      // console.warn(this.form);
+      this.form.tjss = value.tjss
+        ? new Date(value.tjss).formatDate("yyyy-MM-dd hh:mm:ss")
+        : "";
+      this.form.prodtdepttime = value.prodtdepttime
+        ? new Date(value.prodtdepttime).formatDate("yyyy-MM-dd hh:mm:ss")
+        : "";
+      this.form.departuretime = value.departuretime
+        ? new Date(value.departuretime).formatDate("yyyy-MM-dd hh:mm:ss")
+        : "";
+      this.form.arrivaltime = value.arrivaltime
+        ? new Date(value.arrivaltime).formatDate("yyyy-MM-dd hh:mm:ss")
+        : "";
+      this.form.repairedtime = value.repairedtime
+        ? new Date(value.repairedtime).formatDate("yyyy-MM-dd hh:mm:ss")
+        : "";
+      this.form.checktime = value.checktime
+        ? new Date(value.checktime).formatDate("yyyy-MM-dd hh:mm:ss")
+        : "";
     },
   },
 };

+ 63 - 46
src/views/HealthControl/infotrack2.vue

@@ -1,57 +1,17 @@
 <template>
   <div class="track-info">
     <div class="form-info">
-      <div class="work-flow">
+       <div class="work-flow">
         <div class="work-flow-line"></div>
-        <div class="work-flow-item">
+        <div :class="['work-flow-item', item.name == statu(form) ? 'active' : '']" v-for="(item, i) in svgarr" :key="i">
           <div class="work-flow-icon-item">
             <div class="work-flow-icon-o"></div>
             <div class="work-flow-icon-i"></div>
             <span class="svg-icon">
-              <SvgIcon svgid="svg-qx-warn"></SvgIcon>
+              <SvgIcon :svgid="item.svg"></SvgIcon>
             </span>
           </div>
-          <div class="work-flow-text">流程未启动</div>
-        </div>
-        <div class="work-flow-item">
-          <div class="work-flow-icon-item">
-            <div class="work-flow-icon-o"></div>
-            <div class="work-flow-icon-i"></div>
-            <span class="svg-icon">
-              <SvgIcon svgid="svg-qx-down"></SvgIcon>
-            </span>
-          </div>
-          <div class="work-flow-text">消缺单已下达</div>
-        </div>
-        <div class="work-flow-item">
-          <div class="work-flow-icon-item">
-            <div class="work-flow-icon-o"></div>
-            <div class="work-flow-icon-i"></div>
-            <span class="svg-icon">
-              <SvgIcon svgid="svg-qx-hour-hand"></SvgIcon>
-            </span>
-          </div>
-          <div class="work-flow-text">消缺单处理中</div>
-        </div>
-        <div class="work-flow-item active">
-          <div class="work-flow-icon-item">
-            <div class="work-flow-icon-o"></div>
-            <div class="work-flow-icon-i"></div>
-            <span class="svg-icon">
-              <SvgIcon svgid="svg-对"></SvgIcon>
-            </span>
-          </div>
-          <div class="work-flow-text">消缺完成</div>
-        </div>
-        <div class="work-flow-item">
-          <div class="work-flow-icon-item">
-            <div class="work-flow-icon-o"></div>
-            <div class="work-flow-icon-i"></div>
-            <span class="svg-icon">
-              <SvgIcon svgid="svg-qx-flag"></SvgIcon>
-            </span>
-          </div>
-          <div class="work-flow-text">消缺验收</div>
+          <div class="work-flow-text">{{ item.name }}</div>
         </div>
       </div>
        <div class="form-body">
@@ -269,14 +229,16 @@
         </div>
       </div>
     </div>
+    <defect-elimination-tracking ref="det" :show="false" :formdata='formdata'></defect-elimination-tracking>
   </div>
 </template>
 
 <script>
 import SvgIcon from "@com/coms/icon/svg-icon.vue";
+import DefectEliminationTracking from "../HealthControl/defect-elimination-tracking.vue";  //手环监控
 export default {
   components: {
-    SvgIcon
+    SvgIcon,DefectEliminationTracking
   },
    props: {
     data: Object,
@@ -298,6 +260,28 @@ export default {
         },
       ],
       activeTab: 0,
+      svgarr: [
+        {
+          svg: "svg-qx-warn",
+          name: "流程未启动",
+        },
+        {
+          svg: "svg-qx-down",
+          name: "消缺单已下达",
+        },
+        {
+          svg: "svg-qx-hour-hand",
+          name: "消缺单处理中",
+        },
+        {
+          svg: "svg-对",
+          name: "消缺完成",
+        },
+        {
+          svg: "svg-qx-flag",
+          name: "消缺验收",
+        },
+      ],
       form: {
         wtId: "",
         wpId: "",
@@ -347,6 +331,11 @@ export default {
       },
     };
   },
+  created() {
+     this.form = this.formdata;
+     console.warn(this.form);
+     console.warn(this.statu(this.form));
+  },
   mounted() {
     this.$nextTick(() => {
       this.form = this.data;
@@ -354,13 +343,41 @@ export default {
   },
   // 函数
   methods: {
+    showDet() {
+      this.$refs.det.show();
+    },
+    statu(data) {
+      if (null != data.checktime) {
+        return "消缺验收";
+      } else if (
+        "等待运行验收" == data.status ||
+        data.status == "集控中心修改检修时间" ||
+        null != data.repairedtime
+      ) {
+        return "消缺完成";
+      } else if (null != data.departuretime || null != data.arrivaltime) {
+        return "消缺单处理中";
+      } else if (
+        "风机工作票已批准" == data.status ||
+        data.status == "开风机工作票"
+      ) {
+        return "消缺单已下达";
+      } else if (null == data.status || data.status == "流程未启动" || data.status == "流程未启用") {
+        return "流程未启动";
+      }
+      else{
+        return "流程未启动";
+      }
+    },
     selectTab: function (index) {
       this.activeTab = index;
+      if(index == 1){
+        this.showDet()
+      }
     },
   },
   watch: {
     data(value) {
-      this.form = value;
       this.form.tjss = value.tjss?new Date(value.tjss).formatDate("yyyy-MM-dd hh:mm:ss"):""
       this.form.prodtdepttime = value.prodtdepttime?new Date(value.prodtdepttime).formatDate("yyyy-MM-dd hh:mm:ss"):""
       this.form.departuretime = value.departuretime?new Date(value.departuretime).formatDate("yyyy-MM-dd hh:mm:ss"):""

+ 725 - 75
src/views/NewPages/dj1.vue

@@ -6,70 +6,151 @@
         <div class="item" @click="tabSelect(1)" :class="{ active: tabIndex == 1 }">风机日详细信息</div>
         <div class="item" @click="tabSelect(2)" :class="{ active: tabIndex == 2 }">风场玫瑰图</div>
         <div class="item" @click="tabSelect(3)" :class="{ active: tabIndex == 3 }">风机玫瑰图</div>
-        <div class="item" @click="tabSelect(3)" :class="{ active: tabIndex == 4 }">风机切入切出分析</div>
+        <div class="item" @click="tabSelect(4)" :class="{ active: tabIndex == 4 }">风机切入切出分析</div>
       </div>
       <div class="query mg-b-16">
         <div class="query-items">
           <div class="query-item">
             <div class="lable">风场:</div>
             <div class="search-input">
-              <el-select v-model="value1" clearable placeholder="请选择" popper-class="select">
-                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
+              <el-select v-model="wpId" clearable placeholder="请选择" popper-class="select" @change="getWtArray">
+                <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="value2" multiple placeholder="请选择" popper-class="select">
-                <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
+              <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>
           <div class="query-item">
             <div class="lable">日期:</div>
             <div class="search-input">
-              <el-date-picker v-model="value4" type="date" placeholder="选择日期" popper-class="date-select"> </el-date-picker>
+              <el-date-picker v-model="recorddate" type="date" value-format="YYYY-MM-DD" placeholder="选择日期"
+                popper-class="date-select">
+              </el-date-picker>
             </div>
           </div>
         </div>
         <div class="query-actions">
-          <button class="btn green">搜索</button>
+          <button class="btn green" @click="search">搜索</button>
         </div>
       </div>
     </div>
-    <!-- tab2 -->
+
+    <!-- tab1 -->
     <div v-if="tabIndex == 0" class="tab-1">
       <panel :title="'损失电量分析'" class="mg-b-16">
-        <area-bar-chart :height="'23.1481vh'" />
+        <area-bar-chart :height="'23.1481vh'" :bardata="{ legend: [] }" :lineData="lostChartData" :units="lostChartUnit"
+          :areaData="LostChartBgColorData" :showLegend="true" />
       </panel>
       <panel :title="'电量'" class="mg-b-16">
-        <multiple-bar-line-chart :height="'16.6667vh'" />
+        <multiple-bar-line-chart :height="'16.6667vh'" :barData="powerChartData" :lineData="powerChartLineData" :units="['(kWh)']" :showLegend="true" />
       </panel>
       <div class="table-info">
         <panel class="table-panel" :title="'当日报警记录'" :showLine="false">
-          <Table :data="tableData" :canScroll="true" :height="'32.5vh'" />
+          <Table :data="warnTableData" :canScroll="true" :height="'32.5vh'" />
         </panel>
-        <panel class="table-panel" :title="'当日报警记录'" :showLine="false">
-          <Table :data="tableData" :canScroll="true" :height="'32.5vh'" />
+        <panel class="table-panel" :title="'当日故障记录'" :showLine="false">
+          <Table :data="stopTableData" :canScroll="true" :height="'32.5vh'" />
         </panel>
-        <panel class="table-panel" :title="'当日报警记录'" :showLine="false">
-          <Table :data="tableData" :canScroll="true" :height="'32.5vh'" />
+        <panel class="table-panel" :title="'当日限电记录'" :showLine="false">
+          <Table :data="xdTableData" :canScroll="true" :height="'32.5vh'" />
         </panel>
       </div>
     </div>
+
     <!-- tab2 -->
     <div v-if="tabIndex == 1" class="tab-2">
       <el-row>
         <el-col :span="15">
           <panel :title="'功率曲线'" class="mg-b-16">
-            <marker-line-chart :height="'28vh'" />
+            <marker-line-chart :height="'28vh'" :list="powerLineChartData" :showLegend="true" />
           </panel>
           <panel :title="'日发电量信息'" class="mg-b-16 outline" :showLine="false">
             <div class="power-info">
-              <div class="info-item" v-for="index in 20" :key="index">
+              <div class="info-item">
+                <div class="text">发电量:</div>
+                <div class="value green">{{dayPowerInfo.c1}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">理论发电量:</div>
+                <div class="value green">{{dayPowerInfo.c4}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">平均功率:</div>
+                <div class="value green">{{dayPowerInfo.c7}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">平均风速:</div>
+                <div class="value green">{{dayPowerInfo.c10}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">拟合优度:</div>
+                <div class="value green">{{dayPowerInfo.c55}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">运行小时:</div>
+                <div class="value green">{{dayPowerInfo.c13}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">停机小时:</div>
+                <div class="value green">{{dayPowerInfo.c16}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">故障小时:</div>
+                <div class="value green">{{dayPowerInfo.c19}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">维护小时:</div>
+                <div class="value green">{{dayPowerInfo.c22}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">中断小时:</div>
+                <div class="value green">{{dayPowerInfo.c25}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">有效风时数:</div>
+                <div class="value green">{{dayPowerInfo.c28}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">损失电量:</div>
+                <div class="value green">{{dayPowerInfo.c31}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">报警次数:</div>
+                <div class="value green">{{dayPowerInfo.c34}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">停机次数:</div>
+                <div class="value green">{{dayPowerInfo.c37}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">不饱和次数:</div>
+                <div class="value green">{{dayPowerInfo.c40}}</div>
+              </div>
+              <div class="info-item">
                 <div class="text">设备可利用率:</div>
-                <div class="value green">115.01</div>
+                <div class="value green">{{dayPowerInfo.c43}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">实际/保证偏差率:</div>
+                <div class="value green">{{dayPowerInfo.c58}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">平均温度:</div>
+                <div class="value green">{{dayPowerInfo.c46}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">平均湿度:</div>
+                <div class="value green">{{dayPowerInfo.c49}}</div>
+              </div>
+              <div class="info-item">
+                <div class="text">平均压强:</div>
+                <div class="value green">{{dayPowerInfo.c52}}</div>
               </div>
             </div>
           </panel>
@@ -77,19 +158,79 @@
             <div class="month-info-left">
               <panel :title="'月发电量信息'" class="mg-b-16 outline" :showLine="false">
                 <div class="power-info month-3">
-                  <div class="info-item" v-for="index in 15" :key="index">
+                  <div class="info-item">
+                    <div class="text">月发电量:</div>
+                    <div class="value green">{{dayPowerInfo.c2}}</div>
+                  </div>
+                  <div class="info-item">
+                    <div class="text">月理论发电量:</div>
+                    <div class="value green">{{dayPowerInfo.c5}}</div>
+                  </div>
+                  <div class="info-item">
+                    <div class="text">月平均功率:</div>
+                    <div class="value green">{{dayPowerInfo.c8}}</div>
+                  </div>
+                  <div class="info-item">
+                    <div class="text">月平均风速:</div>
+                    <div class="value green">{{dayPowerInfo.c11}}</div>
+                  </div>
+                  <div class="info-item">
+                    <div class="text">月拟合优度:</div>
+                    <div class="value green">{{dayPowerInfo.c56}}</div>
+                  </div>
+                  <div class="info-item">
+                    <div class="text">月运行小时:</div>
+                    <div class="value green">{{dayPowerInfo.c14}}</div>
+                  </div>
+                  <div class="info-item">
+                    <div class="text">月停机小时:</div>
+                    <div class="value green">{{dayPowerInfo.c17}}</div>
+                  </div>
+                  <div class="info-item">
+                    <div class="text">月故障小时:</div>
+                    <div class="value green">{{dayPowerInfo.c20}}</div>
+                  </div>
+                  <div class="info-item">
+                    <div class="text">月维护小时:</div>
+                    <div class="value green">{{dayPowerInfo.c23}}</div>
+                  </div>
+                  <div class="info-item">
+                    <div class="text">月中断小时:</div>
+                    <div class="value green">{{dayPowerInfo.c26}}</div>
+                  </div>
+                  <div class="info-item">
+                    <div class="text">月有效风时数:</div>
+                    <div class="value green">{{dayPowerInfo.c29}}</div>
+                  </div>
+                  <div class="info-item">
+                    <div class="text">月报警次数:</div>
+                    <div class="value green">{{dayPowerInfo.c35}}</div>
+                  </div>
+                  <div class="info-item">
+                    <div class="text">月停机次数:</div>
+                    <div class="value green">{{dayPowerInfo.c38}}</div>
+                  </div>
+                  <div class="info-item">
                     <div class="text">月实际/保证:</div>
-                    <div class="value green">115.01</div>
+                    <div class="value green">{{dayPowerInfo.c59}}</div>
+                  </div>
+                  <div class="info-item">
+                    <div class="text">设备可利用率:</div>
+                    <div class="value green">{{dayPowerInfo.c44}}</div>
                   </div>
                 </div>
               </panel>
             </div>
             <div class="month-info-right">
-              <panel :title="'月发电量信息'" class="mg-b-16 outline" :showLine="false">
+              <panel :title="'发电量信息'" class="mg-b-16 outline" :showLine="false">
                 <div class="power-info month-2">
-                  <div class="info-item" v-for="index in 2" :key="index">
-                    <div class="text">月实际/保证:</div>
-                    <div class="value green">115.01</div>
+                  <div class="info-item">
+                    <div class="text">年发电量:</div>
+                    <div class="value green">{{dayPowerInfo.c3}}</div>
+                  </div>
+                  <div class="info-item">
+                    <div class="text">年拟合优度:</div>
+                    <div class="value green">{{dayPowerInfo.c57}}</div>
                   </div>
                 </div>
               </panel>
@@ -97,9 +238,9 @@
                 <div class="wind-info">
                   <div class="legend mg-r-16">
                     <span class="dot"></span>
-                    <span>静风频率为2</span>
+                    <span>{{jfplStr}}</span>
                   </div>
-                  <direction-radar-chart :width="'60%'" :height="'180px'" />
+                  <direction-radar-chart :width="'60%'" :height="'152px'" :value="windResourcesData" :showLegend="true" />
                 </div>
               </panel>
             </div>
@@ -107,18 +248,19 @@
         </el-col>
         <el-col :span="9">
           <panel class="table-panel outline mg-b-16" :title="'当日报警记录'" :showLine="false">
-            <Table :data="tableData" :canScroll="true" :height="'23vh'" />
+            <Table :data="warnTableData" :canScroll="true" :height="'23vh'" />
           </panel>
-          <panel class="table-panel outline mg-b-16" :title="'当日报警记录'" :showLine="false">
-            <Table :data="tableData" :canScroll="true" :height="'23vh'" />
+          <panel class="table-panel outline mg-b-16" :title="'当日故障记录'" :showLine="false">
+            <Table :data="stopTableData" :canScroll="true" :height="'23vh'" />
           </panel>
-          <panel class="table-panel outline" :title="'当日报警记录'" :showLine="false">
-            <Table :data="tableData" :canScroll="true" :height="'23vh'" />
+          <panel class="table-panel outline" :title="'当月报警排行'" :showLine="false">
+            <Table :data="monthWarnRecordData" :canScroll="true" :height="'23vh'" />
           </panel>
         </el-col>
       </el-row>
     </div>
 
+    <!-- tab3 -->
     <div v-if="tabIndex == 2" class="tab-3">
       <el-row>
         <el-col :span="8">
@@ -126,31 +268,31 @@
             <div class="wind-info">
               <div class="legend mg-r-16">
                 <span class="dot"></span>
-                <span>静风频率为2</span>
+                <span>{{rzdfsStr}}</span>
               </div>
-              <direction-radar-chart :width="'100%'" :height="'350px'" />
+              <direction-radar-chart :width="'100%'" :height="'350px'" :value="rzdfsData" />
             </div>
           </panel>
         </el-col>
         <el-col :span="8">
-          <panel :title="'最大风速'" class="radar-panel" :icon="'svg-wind-site'">
+          <panel :title="'最大风速'" class="radar-panel" :icon="'svg-wind-site'">
             <div class="wind-info">
               <div class="legend mg-r-16">
                 <span class="dot"></span>
-                <span>静风频率为2</span>
+                <span>{{yzdfsStr}}</span>
               </div>
-              <direction-radar-chart :width="'100%'" :height="'350px'" />
+              <direction-radar-chart :width="'100%'" :height="'350px'" :value="yzdfsData" />
             </div>
           </panel>
         </el-col>
         <el-col :span="8">
-          <panel :title="'最大风速'" class="radar-panel" :icon="'svg-wind-site'">
+          <panel :title="'最大风速'" class="radar-panel" :icon="'svg-wind-site'">
             <div class="wind-info">
               <div class="legend mg-r-16">
                 <span class="dot"></span>
-                <span>静风频率为2</span>
+                <span>{{nzdfsStr}}</span>
               </div>
-              <direction-radar-chart :width="'100%'" :height="'350px'" />
+              <direction-radar-chart :width="'100%'" :height="'350px'" :value="nzdfsData" />
             </div>
           </panel>
         </el-col>
@@ -192,6 +334,7 @@
       </el-row>
     </div>
 
+    <!-- tab4 -->
     <div v-if="tabIndex == 3" class="tab-4">
       <el-row>
         <el-col :span="8">
@@ -236,15 +379,15 @@ import AreaBarChart from "../../components/chart/combination/area-bar-chart.vue"
 import MultipleBarLineChart from "../../components/chart/combination/multiple-bar-line-chart.vue";
 import MarkerLineChart from "../../components/chart/line/marker-line-chart.vue";
 import DualPieChart from "../../components/chart/pie/dual-pie-chart.vue";
-import DirectionRadarChart from "../../components/chart/radar/direction-radar-chart.vue";
+import DirectionRadarChart from "@com/chart/radar/radar-chart.vue";
 import panel from "../../components/coms/panel/panel.vue";
 import Table from "../../components/coms/table/table.vue";
 export default {
   components: { panel, AreaBarChart, MultipleBarLineChart, Table, MarkerLineChart, DirectionRadarChart, DualPieChart },
-  setup() {},
-  data() {
+  setup () { },
+  data () {
     return {
-      tabIndex: 0,
+      tabIndex: 1,
       tableData: {
         column: [
           {
@@ -266,36 +409,177 @@ export default {
             is_light: false,
           },
         ],
-        data: [
+        data: []
+      },
+
+      wpArray: [],
+      wpId: "",
+      wtArray: [],
+      wtId: "",
+
+      recorddate: new Date((new Date().getTime() - 3600 * 1000 * 24)).formatDate("yyyy-MM-dd"),
+
+      lostChartData: [],
+      lostChartUnit: [],
+      LostChartBgColorData: [],
+
+      powerChartData: [{
+        title: "",
+        yAxisIndex: 0,
+        value: []
+      }],
+
+      powerChartLineData: {
+        name: "",
+        unit: "",
+        data: []
+      },
+
+      warnTableData: {
+        column: [
+          {
+            name: "风机",
+            field: "windturbineid",
+            is_num: false,
+            is_light: false,
+          },
           {
-            name: "MG01-01",
-            desc: "描述描述描述描述描述描述描述描述描述描述",
-            date: "2020-01-01",
+            name: "描述",
+            field: "warnDesc",
+            is_num: false,
+            is_light: false,
+          },
+          {
+            name: "报警时间",
+            field: "warningtime",
+            is_num: false,
+            is_light: false,
           },
         ],
+        data: []
       },
-      options: [
-        {
-          value: "选项1",
-          label: "黄金糕",
-        },
-        {
-          value: "选项2",
-          label: "双皮奶",
-        },
-        {
-          value: "选项3",
-          label: "蚵仔煎",
-        },
-        {
-          value: "选项4",
-          label: "龙须面",
-        },
-        {
-          value: "选项5",
-          label: "北京烤鸭",
-        },
-      ],
+
+      stopTableData: {
+        column: [
+          {
+            name: "风机",
+            field: "windTurbineId",
+            is_num: false,
+            is_light: false,
+          },
+          {
+            name: "停机时间",
+            field: "stopTime",
+            is_num: false,
+            is_light: false,
+          },
+          {
+            name: "恢复时间",
+            field: "starttime",
+            is_num: false,
+            is_light: false,
+          },
+        ],
+        data: []
+      },
+
+      xdTableData: {
+        column: [
+          {
+            name: "风机",
+            field: "windturbineid",
+            is_num: false,
+            is_light: false,
+          },
+          {
+            name: "停机时间",
+            field: "stoptime",
+            is_num: false,
+            is_light: false,
+          },
+          {
+            name: "恢复时间",
+            field: "starttime",
+            is_num: false,
+            is_light: false,
+          },
+          {
+            name: "损失电量",
+            field: "losspower",
+            is_num: false,
+            is_light: false,
+          },
+          {
+            name: "限电时长",
+            field: "stophours",
+            is_num: false,
+            is_light: false,
+          }
+        ],
+        data: []
+      },
+
+      powerLineChartData: [{
+        title: "",
+        value:[]
+      }],
+
+      dayPowerInfo:{},
+
+      monthWarnRecordData: {
+        column: [
+          {
+            name: "名字",
+            field: "name",
+            is_num: false,
+            is_light: false,
+          },
+          {
+            name: "次数",
+            field: "frequency",
+            is_num: true,
+            is_light: false,
+          }
+        ],
+        data: []
+      },
+
+      jfplStr:"",
+      windResourcesData: {
+        indicator: ["N0", "N1", "N2", "N3", "N4", "N5"],
+        data: [{
+            value: [44200, 14200, 20000, 35000, 50000, 38000],
+            name: ""
+          }]
+      },
+
+      rzdfsStr:"",
+      rzdfsData: {
+        indicator: ["N0", "N1", "N2", "N3", "N4", "N5"],
+        data: [{
+            value: [44200, 14200, 20000, 35000, 50000, 38000],
+            name: ""
+          }]
+      },
+
+      yzdfsStr:"",
+      yzdfsData: {
+        indicator: ["N0", "N1", "N2", "N3", "N4", "N5"],
+        data: [{
+            value: [44200, 14200, 20000, 35000, 50000, 38000],
+            name: ""
+          }]
+      },
+
+      nzdfsStr:"",
+      nzdfsData: {
+        indicator: ["N0", "N1", "N2", "N3", "N4", "N5"],
+        data: [{
+            value: [44200, 14200, 20000, 35000, 50000, 38000],
+            name: ""
+          }]
+      },
+
       value1: [],
       value2: [],
       value3: [],
@@ -304,15 +588,381 @@ export default {
     };
   },
   methods: {
-    tabSelect(state) {
-      this.tabIndex = state;
+    // 获取风场
+    getWpArray () {
+      let that = this;
+      that.API.requestData({
+        method: "GET",
+        subUrl: "powercompare/windfarmAjax",
+        success (res) {
+          that.wpArray = res.data;
+          that.wpId = res.data[0].id;
+          that.getWtArray(that.wpId, true);
+        }
+      });
     },
-  },
-  created() {
-    for (let i = 1; i < 50; i++) {
-      this.tableData.data.push(JSON.parse(JSON.stringify(this.tableData.data[0])));
+
+    // 获取风机
+    getWtArray (wpId, keepRequest) {
+      let that = this;
+      if (wpId) {
+        that.API.requestData({
+          method: "GET",
+          subUrl: "powercompare/windturbineAjax",
+          data: {
+            wpId
+          },
+          success (res) {
+            that.wtArray = res.data;
+            that.wtId = res.data[0].id;
+            if (keepRequest) {
+              that.search();
+            }
+          }
+        });
+      } else {
+        that.wtArray = [];
+        that.wtId = "";
+      }
+    },
+
+    // tab1 - 获取损失电量分析图表数据
+    getLostChartData () {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "goodness/findWtRealPowerChar",
+        data: {
+          wtId: that.wtId,
+          recorddate: that.recorddate
+        },
+        success (res) {
+          const keyArray = ["value1", "value2", "value3", "value4"];
+
+          let lostChartData = [[], [], [], []];
+          const lostChartUnit = ["实发功率", "保证功率", "风速", "状态"];
+
+
+          keyArray.forEach((key, keyIndex) => {
+            res.data.forEach(ele => {
+              lostChartData[keyIndex].push(ele[key]);
+            });
+          });
+          that.lostChartData = lostChartData;
+          that.lostChartUnit = lostChartUnit;
+          that.getLostChartBgColorData();
+        }
+      });
+    },
+
+    // tab1 - 获取损失电量分析图表背景颜色
+    getLostChartBgColorData () {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "goodness/getplotBands",
+        data: {
+          wtId: that.wtId,
+          recorddate: that.recorddate
+        },
+        success (res) {
+          let LostChartBgColorData = [];
+          res.data.forEach((pEle, pIndex) => {
+            LostChartBgColorData.push({
+              name: pEle[0].name,
+              start: (pIndex ? LostChartBgColorData[pIndex - 1].end : 0),
+              end: (pIndex ? LostChartBgColorData[pIndex - 1].end : 0) + ((new Date(pEle[0].time2).getTime() / 1000) - (new Date(pEle[0].time1).getTime() / 1000)),
+              color: pEle[0].itemStyle.color
+            });
+          });
+          that.LostChartBgColorData = LostChartBgColorData;
+        }
+      });
+    },
+
+    // tab1 - 获取电量图表数据
+    getPowerChartData () {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "goodness/findRealPowerCharBy24",
+        data: {
+          wtId: that.wtId,
+          recorddate: that.recorddate
+        },
+        success (res) {
+          const keyArray = ["value1", "value2", "value3", "value4", "value5"];
+
+          let powerChartData = [{
+            title: "scada发电量",
+            yAxisIndex: 0,
+            value: []
+          }, {
+            title: "维护损失",
+            yAxisIndex: 0,
+            value: []
+          }, {
+            title: "故障损失",
+            yAxisIndex: 0,
+            value: []
+          }, {
+            title: "限电损失",
+            yAxisIndex: 0,
+            value: []
+          }, {
+            title: "欠发损失",
+            yAxisIndex: 0,
+            value: []
+          }];
+
+          let powerChartLineData = {
+            name: "风速",
+            unit: "(m/s)",
+            data: []
+          }
+
+          keyArray.forEach((keyEle, keyIndex) => {
+            res.data.forEach(ele => {
+              powerChartData[keyIndex].value.push({
+                text: new Date(ele.time).formatDate("hh:mm"),
+                value: ele[keyEle]
+              });
+              powerChartLineData.data.push(ele.value6);
+            });
+          });
+          that.powerChartData = powerChartData;
+          that.powerChartLineData = powerChartLineData;
+        }
+      });
+    },
+
+    // tab1 - 获取当日报警数据
+    getWarnData () {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "goodness/bjjllist",
+        data: {
+          wtId: that.wtId,
+          recorddate: that.recorddate
+        },
+        success (res) {
+          res.data.list.forEach(ele => {
+            ele.warningtime = new Date(ele.warningtime).formatDate("yyyy-MM-dd hh:mm:ss")
+          });
+          that.warnTableData.data = res.data.list;
+        }
+      });
+    },
+
+    // tab1 - 获取当日故障数据
+    getStopData () {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "goodness/gzjllist",
+        data: {
+          wtId: that.wtId,
+          recorddate: that.recorddate
+        },
+        success (res) {
+          res.data.list.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 = res.data.list;
+        }
+      });
+    },
+
+    // tab1 - 获取当日限电数据
+    getXdData () {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "goodness/xdjllist",
+        data: {
+          wtId: that.wtId,
+          recorddate: that.recorddate
+        },
+        success (res) {
+          res.data.list.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 = res.data.list;
+        }
+      });
+    },
+
+    tabSelect (index) {
+      this.tabIndex = index;
+      this.search();
+    },
+
+    // tab2 - 获取日发电量信息
+    getDayPowerInfo () {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "goodness/wadAjax",
+        data: {
+          wtId: that.wtId,
+          recorddate: that.recorddate
+        },
+        success (res) {
+          that.dayPowerInfo = res.data;
+        }
+      });
+    },
+
+    // tab2 - 获取当月报警排行
+    getMonthWarnRecord () {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "goodness/bjphlist",
+        data: {
+          wtId: that.wtId,
+          recorddate: that.recorddate
+        },
+        success (res) {
+          that.monthWarnRecordData.data = res.data;
+        }
+      });
+    },
+
+    // tab2 - 获取当月报警排行
+    getPowerLineChartData () {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "goodness/glchat",
+        data: {
+          wtId: that.wtId,
+          recorddate: that.recorddate
+        },
+        success (res) {
+          const keyArray = ["value1", "value2", "value3"];
+
+          let powerLineChartData = [{
+            title: "实际拟合功率",
+            value:[]
+          },{
+            title: "最优拟合功率",
+            value:[]
+          },{
+            title: "保证功率",
+            value:[]
+          }];
+
+          keyArray.forEach((keyEle,keyIndex) =>{
+            res.data.forEach((ele,index)=>{
+              powerLineChartData[keyIndex].value.push({
+                text: (index + 1),
+                value: ele[keyEle]
+              });
+            });
+          });
+
+          that.powerLineChartData = powerLineChartData;
+        }
+      });
+    },
+
+    // tab2 - 获取当月报警排行
+    getWindResources  () {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "goodness/fjfzy",
+        data: {
+          wtId: that.wtId,
+          recorddate: that.recorddate
+        },
+        success (res) {
+          that.jfplStr=res.data.jfpl || "";
+
+          let windResourcesData = {
+            indicator: [],
+            data: [{
+              name: "",
+              value: []
+            }]
+          };
+
+          res.data.data.forEach((ele) => {
+            windResourcesData.indicator.push(ele.name);
+            windResourcesData.data[0].value.push(ele.data1);
+          });
+
+          that.windResourcesData = windResourcesData;
+        }
+      });
+    },
+
+    // tab3 - 获取玫瑰图
+    getMgt (subUrl, dataKey) {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl,
+        data: {
+          wpId: that.wpId,
+          recorddate: that.recorddate
+        },
+        success (res) {
+          that[dataKey + "Str"] = res.data.jfpl || "";
+
+          let mgtData = {
+            indicator: [],
+            data: [{
+              name: "",
+              value: []
+            }]
+          };
+
+          if(res.data.data){
+            res.data.data.forEach((ele) => {
+              mgtData.indicator.push(ele.name);
+              mgtData.data[0].value.push(ele.data1);
+            });
+          }
+
+          that[dataKey + "Data"] = mgtData;
+
+          console.log(dataKey,mgtData)
+        }
+      });
+    },
+
+
+    // 搜索
+    search () {
+      if (this.tabIndex === 0) {
+        this.getLostChartData();
+        this.getPowerChartData();
+        this.getWarnData();
+        this.getStopData();
+        this.getXdData();
+      } else if (this.tabIndex === 1) {
+        this.getWarnData();
+        this.getStopData();
+        this.getDayPowerInfo();
+        this.getMonthWarnRecord();
+        this.getPowerLineChartData();
+        this.getWindResources();
+      } else if (this.tabIndex === 2) {
+        this.getMgt("goodness/wprzdfs", "rzdfs");
+        this.getMgt("goodness/wpyzdfs", "yzdfs");
+        this.getMgt("goodness/wpnzdfs", "nzdfs");
+      }
     }
   },
+  created () {
+    this.getWpArray();
+  },
 };
 </script>
 

+ 5 - 2
src/views/NewPages/fdlyl.vue

@@ -365,20 +365,23 @@ export default {
             let monthsAll = []
             _this.GsList.map(item => {
               let objs = {}
+              let obj = {}
               monthsAll.push(item.month)
               if (item.month > 10) {
                 objs.text = item.month.toString()
+                obj.text = item.month.toString()
               } else {
                 item.text = '0'+ item.month
                 objs.text = item.text
+                obj.text = item.text
               }
               for (let key in item) {
                 if (key === 'current') {
                   objs.value = item.current
                   nowCureent.push(objs)
                 } else if (key === 'sameperiod'){
-                  objs.value = item.sameperiod
-                  sameCureent.push(objs)
+                  obj.value = item.sameperiod
+                  sameCureent.push(obj)
                 }
                 
               }

+ 4 - 4
src/views/NewPages/ztfx.vue

@@ -1549,22 +1549,22 @@
     <el-row :gutter="20" class="pie-chart-panel">
         <el-col :span="6">
             <panel title="当月理论平衡分析">
-              <dual-pie-chart height="27.296vh" :innerData=innerDataCurentsChart :outerData=innerDataCurentsChart />
+              <dual-pie-chart height="27.296vh" width="500px" :innerData=innerDataCurentsChart :outerData=innerDataCurentsChart />
             </panel>
           </el-col>
           <el-col :span="6">
             <panel title="同期理论平衡分析">
-              <dual-pie-chart height="27.296vh" :innerData=innerDataSameChart :outerData=innerDataSameChart />
+              <dual-pie-chart height="27.296vh" width="500px" :innerData=innerDataSameChart :outerData=innerDataSameChart />
             </panel>
           </el-col>
           <el-col :span="6">
             <panel title="当年理论平衡分析">
-              <dual-pie-chart height="27.296vh" :innerData=innerDataCurentsYearChart :outerData=innerDataCurentsYearChart />
+              <dual-pie-chart height="27.296vh" width="500px" :innerData=innerDataCurentsYearChart :outerData=innerDataCurentsYearChart />
             </panel>
           </el-col>
           <el-col :span="6">
             <panel title="年同期理论平衡分析">
-              <dual-pie-chart height="27.296vh" :innerData=innerDataSameYearChart :outerData=innerDataSameYearChart />
+              <dual-pie-chart height="27.296vh" width="500px" :innerData=innerDataSameYearChart :outerData=innerDataSameYearChart />
             </panel>
           </el-col>
       </el-row>

+ 94 - 2
src/views/WindSite/pages/Home/Home.vue

@@ -1,4 +1,12 @@
 <template>
+ <div class="btn-group-tabs">
+            <BtnGroup2
+                :btnGroups="btnGroupsss"
+                :rowIndex="rowIndex"
+                :index="selectIndex"
+                @select="select"
+            ></BtnGroup2>
+        </div>
   <div class="wind-site-home">
     <div class="mg-b-16">
       <btn-group-double :btnGroups="btnGroups" :rowIndex="0" :index="1" @select="select" />
@@ -242,11 +250,14 @@ import Panel3 from "../../../../components/coms/panel/panel3.vue";
 import LightMatrix from "./light-matrix.vue";
 import Station from "./Station.vue";
 import WindSiteWeather from "./wind-site-weather.vue";
+
+import BtnGroup2 from "@com/coms/btn/btn-group-double.vue";
+
 export default {
   // 名称
   name: "WindSiteHome",
   // 使用组件
-  components: { WindSiteWeather, Row, Col, Panel, DualPieChart, MultipleLineChart, Panel3, SvgIcon, HoverBarChart, MultipleBarChart, NormalLineChart, LightMatrix, BtnGroupDouble, Station },
+  components: { BtnGroup2, WindSiteWeather, Row, Col, Panel, DualPieChart, MultipleLineChart, Panel3, SvgIcon, HoverBarChart, MultipleBarChart, NormalLineChart, LightMatrix, BtnGroupDouble, Station },
   // 数据
   data() {
     return {
@@ -327,10 +338,76 @@ export default {
           },
         ],
       },
+       selectIndex:0,
+      rowIndex:0,
+      btnGroupsss: [
+                {
+                    icon: "svg-wind-site",
+                    btns: [],
+                },
+                {
+                    icon: "svg-photovoltaic",
+                    btns: [],
+                },
+            ],
     };
   },
   // 函数
   methods: {
+
+
+     getWp(){
+      let that = this;
+      that.API.requestData({
+        method: "GET",
+        subUrl: "powercompare/windfarmAllAjax",
+        success(res) {
+          console.warn(res);
+          let btnGroups = [{
+            icon: "svg-wind-site",
+            btns: []
+          },{
+            icon: "svg-photovoltaic",
+            btns: []
+          }];
+
+          res.data.forEach((ele,index)=>{
+            if(ele.id.indexOf("FDC") !== -1){
+              btnGroups[0].btns.push({
+                text:ele.name,
+                code:ele.id
+              });
+            }else{
+              btnGroups[1].btns.push({
+                text:ele.name,
+                code:ele.id
+              });
+            }
+          });
+
+          that.btnGroupsss=btnGroups;
+          that.renderBtnActiveIndex();
+
+        },
+      });
+    },
+
+    renderBtnActiveIndex(){
+      this.btnGroupsss.forEach((pEle,pIndex)=>{
+        pEle.btns.forEach((cEle,cIndex)=>{
+          if(cEle.code === this.wpId) {
+            this.rowIndex=pIndex;
+            this.selectIndex=cIndex;
+          }
+        });
+      });
+    },
+
+    select(res) {
+      this.$router.replace({
+        path: `/monitor/windsite/home/${res.code}`
+      });
+    },
     // 根据风机状态码返回对应 class
     getColor(fjzt) {
       switch (fjzt) {
@@ -620,6 +697,7 @@ export default {
     let that = this;
     that.wpId = that.$route.params.wpId;
     that.$nextTick(() => {
+    that.getWp();
       that.requestData(false);
       that.timmer = setInterval(() => {
         that.requestData(false);
@@ -638,7 +716,16 @@ export default {
     this.timmer = null;
     this.timmer2 = null;
   },
+  watch:{
+    "$route"(res){
+      console.warn('router变化');
+      this.wpId = res.params.wpId;
+      this.requestData(false);
+      this.renderBtnActiveIndex();
+    }
+  }
 };
+
 </script>
 
 <style lang="less">
@@ -738,7 +825,7 @@ export default {
 
         .value {
           font-size: 12px;
-          padding-right: 16px;
+          padding-right: 0.741vh;
         }
       }
 
@@ -759,4 +846,9 @@ export default {
     }
   }
 }
+
+.btn-group-tabs {
+        display: flex;
+        flex-direction: row;
+    }
 </style>

+ 2 - 2
src/views/WindSite/pages/Info/Base-Info.vue

@@ -14,8 +14,8 @@
       </div>
       <div class="wind-site-tag">
         <div class="tag-text">机型</div>
-        <div class="tag-value">{{ sourceMap.model }}</div>
-      </div>
+        <div class="tag-value">{{sourceMap.model}}</div>
+        </div>
       <div class="wind-site-tag">
         <div class="tag-text">告警时间</div>
         <div class="tag-value">{{ sourceMap.gxkmap && sourceMap.gxkmap.bjsj }}</div>

+ 58 - 59
src/views/cutAnalyse/index.vue

@@ -1,33 +1,32 @@
 <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">
-							<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-date-picker v-model="recorddate" type="date"
-							value-format="YYYY-MM-DD" 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 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">
+              <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-date-picker v-model="recorddate" type="date" value-format="YYYY-MM-DD" 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 class="df-table">
       <ComTable height="78vh" :data="tableData"></ComTable>
     </div>
-    <el-dialog title="切入切出风速整合历史" v-model="dialogShow" width="85%" top="10vh" custom-class="modal" :close-on-click-modal="true" @closed="dialogType = ''">
+    <el-dialog title="切入切出风速整合历史" v-model="dialogShow" width="85%" top="10vh" custom-class="modal"
+      :close-on-click-modal="true" @closed="dialogType = ''">
       <ComTable height="100vh" :data="tableHistoryData"></ComTable>
     </el-dialog>
   </div>
@@ -41,18 +40,18 @@ export default {
 
   // 使用组件
   components: {
-   ComTable
+    ComTable
   },
 
   // 数据
-  data() {
+  data () {
     const that = this;
     return {
-      isAsc:"asc",
-      wpArray:[],
-      wpId:"",
-      recorddate:new Date((new Date().getTime() - 3600 * 1000 * 24)).formatDate("yyyy-MM-dd"),
-      dialogShow:false,
+      isAsc: "asc",
+      wpArray: [],
+      wpId: "",
+      recorddate: new Date((new Date().getTime() - 3600 * 1000 * 24)).formatDate("yyyy-MM-dd"),
+      dialogShow: false,
       tableData: {
         column: [
           {
@@ -290,10 +289,10 @@ export default {
             field: "",
             is_num: false,
             is_light: false,
-            template() {
-								return "<el-button type='text' style='cursor: pointer;'>历史</el-button>";
-						},
-            click(e, row){
+            template () {
+              return "<el-button type='text' style='cursor: pointer;'>历史</el-button>";
+            },
+            click (e, row) {
               that.getOutputspeedHistoryList(row)
             }
           }
@@ -437,55 +436,55 @@ export default {
   // 函数
   methods: {
     // 请求服务
-    requestData() {
+    requestData () {
       let that = this;
       that.API.requestData({
         method: "GET",
         subUrl: "powercompare/windfarmAjax",
-        success(res) {
-          that.wpArray=res.data;
-          that.wpId=res.data[0].id;
+        success (res) {
+          that.wpArray = res.data;
+          that.wpId = res.data[0].id;
           that.getOutputSpeedList(that.wpId)
         }
       });
     },
 
-    getOutputSpeedList(wpId){
+    getOutputSpeedList (wpId) {
       let that = this;
-      if(!that.wpId || !that.recorddate){
+      if (!that.wpId || !that.recorddate) {
         that.BASE.showMsg({
-          msg:"场站与日期不可为空"
+          msg: "场站与日期不可为空"
         });
-      }else{
+      } else {
         that.API.requestData({
           method: "POST",
           subUrl: "outputspeed/outputSpeedlist",
-          data:{
+          data: {
             wpId,
-            isAsc:that.isAsc,
-            recorddate:that.recorddate
+            isAsc: that.isAsc,
+            recorddate: that.recorddate
           },
-          success(res) {
+          success (res) {
             that.tableData.data = res.data;
           }
         });
       }
-      
+
     },
 
-    getOutputspeedHistoryList (item){
+    getOutputspeedHistoryList (item) {
       let that = this;
       that.API.requestData({
         method: "POST",
         subUrl: "outputspeed/outputspeedhistorylist",
-        data:{
-          wpId:item.windpowerstationid,
-          wtId:item.windturbineid,
+        data: {
+          wpId: item.windpowerstationid,
+          wtId: item.windturbineid,
           beginDate: (new Date().formatDate("yyyy-MM") + '-01'),
           endDate: new Date().formatDate("yyyy-MM-dd")
         },
-        success(res) {
-          res.data.forEach(ele=>{
+        success (res) {
+          res.data.forEach(ele => {
             ele.time = new Date(ele.recorddate).formatDate("yyyy-MM-dd");
           });
           that.tableHistoryData.data = res.data;
@@ -494,18 +493,18 @@ export default {
       });
     },
 
-    search(){
+    search () {
       this.getOutputSpeedList(this.wpId);
     }
   },
 
-  created() {
+  created () {
     this.requestData();
   },
 
-  mounted() {},
+  mounted () { },
 
-  unmounted() {},
+  unmounted () { },
 };
 </script>
 
@@ -533,7 +532,7 @@ export default {
     margin-top: 1.481vh;
 
     &:before {
-      content: "";
+      content: '';
       width: 0.37vh;
       height: 0.37vh;
       background: @write;

+ 5 - 5
src/views/layout/Menu.vue

@@ -80,11 +80,11 @@ export default {
               icon: "svg-agc",
               path: "/monitor/agc",
             },
-            // {
-            //   text: "风场",
-            //   icon: "svg-wind-site",
-            //   path: "/monitor/windsite/home",
-            // },
+           {
+              text: "风场",
+              icon: "svg-wind-site",
+              path: "/monitor/windsite/home/MHS_FDC",
+            },
           ],
         },
         {

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

@@ -554,7 +554,7 @@ export default {
 
     // 页面跳转
     jumpUrl(item){
-      this.$router.push(`/performanceAnalysis/detail/${item.windtpowerstationid}`);
+      this.$router.push(`/new/dj1/${item.windtpowerstationid}`);
     }
   },
 

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

@@ -15,7 +15,7 @@
           </div>
         </div>
         <div class="query-item">
-          <div class="lable">描述:</div>
+          <div class="lable"></div>
           <div class="search-input">
             <el-checkbox v-model="form.autoReq" label="刷新" border @change="reReqAjax"></el-checkbox>
           </div>