zhangming 4 роки тому
батько
коміт
2e875e5cc1

+ 5 - 6
public/static/config/modeConfig.js

@@ -1,4 +1,3 @@
-
 // 本地联调开关
 const localTest = 0;
 
@@ -9,15 +8,15 @@ let baseURL = null;
 let websocketUrl = null;
 
 if (localTest) {
-  baseURL = "http://192.168.10.23:8082/" // 联机调试 - 石林
-  // baseURL = "http://10.155.32.33:9001/" // 联机调试 - 谢生杰
+    baseURL = "http://192.168.10.23:8082/" // 联机调试 - 石林
+        // baseURL = "http://10.155.32.33:9001/" // 联机调试 - 谢生杰
 } else {
-  baseURL = "http://10.155.32.4:8082/" // 正式环境
+    baseURL = "http://10.155.32.4:8082/" // 正式环境
 }
 
 websocketUrl = (baseURL.replace(/http:\/\/|https:\/\//g, "")) + "gyee-websocket";
 
 window.__MODE__ = {
-  baseURL,
-  websocketUrl
+    baseURL,
+    websocketUrl
 };

+ 3 - 3
src/components/chart/line/table-line-chart.vue

@@ -46,13 +46,13 @@ export default {
   },
   computed: {
     xdata() {
-      return this.list.map((t) => {
-        return t.text;
+      return this.list.map((t,index) => {
+        return t.text || index;
       });
     },
     values() {
       return this.list.map((t) => {
-        return t.value;
+        return t.value || t;
       });
     },
   },

+ 411 - 341
src/router/index.js

@@ -1,353 +1,423 @@
 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: '/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:'/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: '/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: '/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

Різницю між файлами не показано, бо вона завелика
+ 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>
 

+ 1 - 1
src/views/Status/Status.vue

@@ -7,7 +7,7 @@
     <div class="table-box">
       <ComTable :data="tableData"></ComTable>
     </div>
-  </div>
+  </div> 
 </template>
 
 <script>

+ 93 - 1
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">
@@ -759,4 +846,9 @@ export default {
     }
   }
 }
+
+.btn-group-tabs {
+        display: flex;
+        flex-direction: row;
+    }
 </style>

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

@@ -12,7 +12,7 @@
         <div v-if="menu.children" class="sub-menu-item">
           <div class="menu-icon svg-icon" :class="activeIndex == index ? 'svg-icon-green' : 'svg-icon-gray'">
             <SvgIcon :svgid="menu.icon"></SvgIcon>
-          </div>
+          </div> 
         </div>
       </li>
     </ul>
@@ -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",
+            },
           ],
         },
         {