浏览代码

冲突处理

Koishi 3 年之前
父节点
当前提交
4090d11c98
共有 81 个文件被更改,包括 13859 次插入7010 次删除
  1. 8 1
      src/App.vue
  2. 88 54
      src/api/api.js
  3. 1 1
      src/api/zmaxios.js
  4. 0 0
      src/assets/dataService/arcgis-mhs-line.json
  5. 0 0
      src/assets/dataService/arcgis-mhs.json
  6. 1 0
      src/assets/dataService/arcgis-nss-line.json
  7. 1502 0
      src/assets/dataService/arcgis-nss.json
  8. 81 0
      src/assets/dataService/arcgis-qs-line.json
  9. 1007 0
      src/assets/dataService/arcgis-qs.json
  10. 1 0
      src/assets/dataService/arcgis-sbq-line.json
  11. 1757 0
      src/assets/dataService/arcgis-sbq.json
  12. 1 0
      src/assets/dataService/arcgis-xs-line.json
  13. 887 0
      src/assets/dataService/arcgis-xs.json
  14. 3 2
      src/components/arcgis/MHS_FDC.vue
  15. 503 0
      src/components/arcgis/NSS_FDC.vue
  16. 444 0
      src/components/arcgis/QS_FDC.vue
  17. 502 0
      src/components/arcgis/SBQ_FDC.vue
  18. 502 0
      src/components/arcgis/XS_FDC.vue
  19. 0 1
      src/components/arcgis/arcgis.vue
  20. 3 1
      src/components/chart/bar/multiple-bar-chart.vue
  21. 1 1
      src/components/chart/combination/bar-line-chart.vue
  22. 23 11
      src/components/chart/combination/scatter-line-chart.vue
  23. 1 1
      src/components/coms/table/table-qc.vue
  24. 61 38
      src/components/other/healthReport/index.vue
  25. 25 2
      src/router/index.js
  26. 1 1
      src/views/Decision/Decision1.vue
  27. 8 1
      src/views/Decision/Decision3Db.vue
  28. 6 26
      src/views/HealthControl/Health0.vue
  29. 4 2
      src/views/HealthControl/Health10.vue
  30. 4 4
      src/views/HealthControl/Health6.vue
  31. 2 2
      src/views/HealthControl/HealthTab1.vue
  32. 1 0
      src/views/HealthControl/assess/assessindex.vue
  33. 3 1
      src/views/HealthControl/assess/selfEvaluate.vue
  34. 136 0
      src/views/HealthControl/zhpj/dayinfo.vue
  35. 424 0
      src/views/HealthControl/zhpj/jxpj.vue
  36. 441 0
      src/views/HealthControl/zhpj/yxpj.vue
  37. 130 20
      src/views/Home/Home.vue
  38. 1 1
      src/views/Home/components/coulometric-analysis.vue
  39. 49 42
      src/views/Home/components/map.vue
  40. 319 0
      src/views/Home/components/map/DWK_GDC.vue
  41. 313 0
      src/views/Home/components/map/MCH_GDC.vue
  42. 2 2
      src/views/Home/components/map/MHS_FDC.vue
  43. 2 2
      src/views/Home/components/map/NSS_FDC.vue
  44. 386 0
      src/views/Home/components/map/PL_GDC.vue
  45. 2 2
      src/views/Home/components/map/QS_FDC.vue
  46. 2 2
      src/views/Home/components/map/SBQ_FDC.vue
  47. 347 0
      src/views/Home/components/map/XH_GDC.vue
  48. 407 554
      src/views/Home/components/map/XS_FDC.vue
  49. 4 4
      src/views/Home/components/map/svg-map-nx.vue
  50. 1 0
      src/views/Home/components/power-plan.vue
  51. 25 25
      src/views/Home/components/power-review.vue
  52. 2 2
      src/views/Home/components/weather.vue
  53. 6 6
      src/views/MalfunctionWarning/MalfunctionWarning.vue
  54. 0 1
      src/views/MalfunctionWarning/components/trainingResults.vue
  55. 4 0
      src/views/NewPages/alarm-center-2.vue
  56. 3 3
      src/views/Others/index.vue
  57. 12 12
      src/views/SandTable/SandTable.vue
  58. 14 23
      src/views/Status/Status.vue
  59. 1 1
      src/views/Status/components/static.vue
  60. 1 1
      src/views/WindSite/components/boosterstation/hzj.vue
  61. 387 340
      src/views/WindSite/components/boosterstation/nss.vue
  62. 1899 5297
      src/views/WindSite/components/boosterstation/pl1.vue
  63. 8 7
      src/views/WindSite/pages/BoosterStation.vue
  64. 12 7
      src/views/WindSite/pages/Home/Home.vue
  65. 111 0
      src/views/WindSite/pages/Home/stationJson/HZJ_GDC.js
  66. 19 9
      src/views/WindSite/pages/Map.vue
  67. 31 18
      src/views/WindSite/pages/Tower.vue
  68. 49 13
      src/views/device/device.vue
  69. 18 0
      src/views/layout/Menu.vue
  70. 1 1
      src/views/nxfx/qxpclfx.vue
  71. 170 110
      src/views/performanceAnalysis/index.vue
  72. 33 23
      src/views/powerCurve/index.vue
  73. 2 1
      src/views/realSearch/index.vue
  74. 286 0
      src/views/sampleDatabase/abilityAnalysis/index.vue
  75. 2 1
      src/views/sampleDatabase/analysis/index.vue
  76. 52 55
      src/views/sampleDatabase/fault/index.vue
  77. 152 125
      src/views/singleAnalysis/index.vue
  78. 98 93
      src/views/singleAnalysis/znzhfx.vue
  79. 2 0
      src/views/totalPowerRank/index.vue
  80. 4 47
      src/views/warn/gfgj.vue
  81. 58 10
      src/views/windAnalysis/phdffx.vue

+ 8 - 1
src/App.vue

@@ -540,4 +540,11 @@ body {
 .el-tree-node__label {
   font-size: 18px !important;
 }
-</style>
+<<<<<<< HEAD
+</style>
+=======
+.el-pagination.is-background .el-pager li:not(.disabled).active{
+  background-color: #05bb4c !important;
+}
+</style>
+>>>>>>> b1304280f10e412f55f384f411309a5c63f6d7ad

+ 88 - 54
src/api/api.js

@@ -3,25 +3,25 @@ import request from './zmaxios.js'
 
 //获取服务端公钥
 export const getPublickey = query => {
-        return request.get(`/info/publickey`);
+        return request.get(`info/publickey`);
     }
     // login
 export const loginRequest = params => {
-    return request.post("/user/login", params);
+    return request.post("user/login", params);
 };
 //register
 export const registerRequest = params => {
-    return request.post("/user/register", params);
+    return request.post("user/registers", params);
 };
 // ----------------------------------------user------------------------------------------------
 export const getUserList = () => {
-    return request.get(`/user/get`);
+    return request.get(`user/getall`);
 }
 export const editRequest = params => {
-    return request.post("/user/edit", params);
+    return request.post("user/edituser", params);
 };
 export const deleteUser = data => {
-        return request.delete(`/user/${data}`);
+        return request.delete(`user/${data}`);
     }
     // ----------------------------------------user------------------------------------------------
 
@@ -29,75 +29,109 @@ export const deleteUser = data => {
 //获取所有风场
 export const fetchStationList = () => {
     return request({
-        url: '/' + 'info/station',
+        url: '' + 'info/station',
         method: 'get'
     });
 };
 //根据风场id获取所有风机
 export const fetchWindturbineList = query => {
     return request({
-        url: '/' + 'info/windturbine',
+        url: '' + 'info/windturbine',
         method: 'get',
         params: {
             stationId: query
         }
     });
 };
-// ----------------------------------------基础数据- 设备管理------------------------------------------------
-//查询全部设备型号接口
+// ----------------------------------------安全生产- 报警记录------------------------------------------------
+//查询历史报警
+export const alarm_history = (params) => {
+        return request({
+            url: `alarm/history/page2`,
+            params: params
+        });
+    }
+    //查报警
+export const alarm_snap = (params) => {
+        return request({
+            url: `alarm/snap`,
+            params: params
+        });
+    }
+    // ----------------------------------------安全生产- 实时报警------------------------------------------------
+    //实时故障 最高级
+export const alarm_fault_recent = (params) => {
+        return request({
+            url: `fault/recent`,
+            params: params
+        });
+    }
+    //实时故障 第一次请求
+export const alarm_fault_top = (params) => {
+        return request({
+            url: `fault/snap/top`,
+            params: params
+        });
+    }
+    //底下的实时报警 
+export const alarm_snap_top = (params) => {
+        return request({
+            url: `alarm/snap/top`,
+            params: params
+        });
+    }
+    // ----------------------------------------基础数据- 设备管理------------------------------------------------
+    //查询全部设备型号接口
 export const device_list = () => {
-        return request.get(`/device/model/list`);
+        return request.get(`device/model/list`);
     }
     //获取结构tree
 export function tree(params) {
     return request({
-        url: '/device/structure/tree/windturbine',
+        url: 'device/structure/tree/windturbine',
         method: 'get',
     });
 }
 //根据结构获取测点
-export function point(params) {
-    return request({
-        url: `/device/metrics/windturbine/${params}`,
-        method: 'get',
-    });
+export function point(code, pagenum, pagesize) {
+    return request.get(`device/metrics/page?pagenum=${pagenum}&pagesize=${pagesize}&deviceId=windturbine&structureCode=${code}`);
 }
 //测点新增
 export function metrics(params) {
-    return request.post(`/device/metrics/single`, params);
+    return request.post(`device/metrics/single`, params);
 }
 //测点删除
 export function delmetrics(params) {
-    return request.delete(`/device/metrics/single/delete/${params}`);
+    return request.delete(`device/metrics/single/delete/${params}`);
 }
 
 //tree新增 添加一个设备结构节点
 export function treeAdd(params) {
-    return request.post(`/device/structure`, params);
+    return request.post(`device/structure`, params);
 }
 //tree删除 tree删除一个设备结构节点
 export function treeDel(params) {
-    return request.delete(`/device/structure/delete/${params}`);
+    return request.delete(`device/structure/delete/${params}`);
 }
 
 
 // 故障模式
 // get All
 export const faultmode_windturbine = () => {
-        return request.get(`/device/faultmode/windturbine`);
+        return request.get(`device/faultmode/windturbine`);
     }
     // 根据 structurecode get
 export const faultmode_structurecode = params => {
-        return request.get(`/device/faultmode/windturbine/${params}`);
+        return request.get(`device/faultmode/windturbine/${params}`);
     }
     // 根据 id delete
 export const faultmode_delete = params => {
-    return request.delete(`/device/faultmode/delete/${params}`);
+    return request.delete(`device/faultmode/delete/${params}`);
 }
 
 // 新增 修改
 export const faultmode_add_edit = data => {
-    return request.post(`/device/faultmode`, data);
+    return request.post(`device/faultmode`, data);
 }
 
 // ----------------------------------------end 基础数据- 风机管理------------------------------------------------
@@ -105,7 +139,7 @@ export const faultmode_add_edit = data => {
 
 // ---------------------------------------- 报警配置- 自定义预警------------------------------------------------
 export function custombj_fetchTableData(params) {
-    return request.get(`/alertrule2/page/`, {
+    return request.get(`alertrule2/page/`, {
         params: params
     });
 }
@@ -113,7 +147,7 @@ export function custombj_fetchTableData(params) {
 //根据场站编号,风机型号获取AI测点
 export const fetchAIPointList = (stationId, modelId) => {
     return request({
-        url: '/' + 'info/testing_point_ai',
+        url: '' + 'info/testing_point_ai',
         method: 'get',
         params: {
             stationId: stationId,
@@ -124,7 +158,7 @@ export const fetchAIPointList = (stationId, modelId) => {
 //根据场站编号,风机型号获取DI测点
 export const fetchDIPointList = (stationId, modelId) => {
     return request({
-        url: '/' + 'info/testing_point_di',
+        url: '' + 'info/testing_point_di',
         method: 'get',
         params: {
             stationId: stationId,
@@ -135,7 +169,7 @@ export const fetchDIPointList = (stationId, modelId) => {
 //根据场站编号,获取电气DI测点
 export const fetchElectricDIPointList = (stationId) => {
     return request({
-        url: '/' + 'info/electrical_point_di',
+        url: '' + 'info/electrical_point_di',
         method: 'get',
         params: {
             stationId: stationId
@@ -145,7 +179,7 @@ export const fetchElectricDIPointList = (stationId) => {
 //根据电气测点,获取测点信息
 export const fetchElectricDIPointByPointId = (pointId) => {
     return request({
-        url: '/' + 'info/electrical_point_di/byId',
+        url: '' + 'info/electrical_point_di/byId',
         method: 'get',
         params: {
             pointId: pointId
@@ -156,14 +190,14 @@ export const fetchElectricDIPointByPointId = (pointId) => {
 //获取风机关联部件列表
 export const fetchRelatePart = () => {
     return request({
-        url: '/' + 'info/windturbine_parts',
+        url: '' + 'info/windturbine_parts',
         method: 'get',
     });
 };
 //根据风场编号获取电气AI测点
 export const fetch_electrical_point_ai = (stationId) => {
     return request({
-        url: '/' + 'info/electrical_point_ai',
+        url: '' + 'info/electrical_point_ai',
         method: 'get',
         params: {
             stationId: stationId
@@ -173,7 +207,7 @@ export const fetch_electrical_point_ai = (stationId) => {
 //根据风场编号获取电气DI测点
 export const fetch_electrical_point_di = (stationId) => {
     return request({
-        url: '/' + 'info/electrical_point_di',
+        url: '' + 'info/electrical_point_di',
         method: 'get',
         params: {
             stationId: stationId
@@ -183,66 +217,66 @@ export const fetch_electrical_point_di = (stationId) => {
 //获取报警类型
 export const fetchWarningType = () => {
     return request({
-        url: '/' + 'info/warning_type',
+        url: '' + 'info/warning_type',
         method: 'get',
     });
 };
 //获取报警种类
 export const fetchWarningClassify = () => {
     return request({
-        url: '/' + 'info/warning_classify',
+        url: '' + 'info/warning_classify',
         method: 'get',
     });
 };
 export const custombj_batchImport = list => {
-    return Axrequestios.post('/' + "alertrule2/save-batch", list);
+    return Axrequestios.post('' + "alertrule2/save-batch", list);
 };
 export const custombj_postSave = form => {
-    return request.post('/' + "alertrule2/save", form)
+    return request.post('' + "alertrule2/save", form)
 };
 
 //******************************end****************************************//
 
 
-//******************************升压站报警************************************//
+//******************************升压站报警API************************************//
 
 export const scadabj_fetchTableData = query => {
     return request({
-        url: '/' + 'scadabj/page',
+        url: '' + 'scadabj/page',
         method: 'get',
         params: query,
         timeout: 20000,
     });
 };
 export const scadabj_postSave = objData => {
-    return request.post('/' + "scadabj/save", objData);
+    return request.post('' + "scadabj/save", objData);
 };
 export const scadabj_batchImport = list => {
-    return request.post('/' + "scadabj/save-batch", list);
+    return request.post('' + "scadabj/save-batch", list);
 };
 //********************************************end********************************//\
 
 
 
-//******************************风机报警************************************//
+//******************************风机报警API************************************//
 export const windturbinebj_fetchTableData = query => {
     return request({
-        url: '/' + 'warning2/page',
+        url: '' + 'warning2/page',
         method: 'get',
         params: query,
         timeout: 20000,
     });
 };
 export const windturbinebj_postSave = form => {
-    return Axios.post('/' + 'warning2/save', form);
+    return Axios.post('' + 'warning2/save', form);
 };
 export const windturbinebj_batchImport = list => {
-    return Axios.post('/' + "warning2/save-batch", list);
+    return Axios.post('' + "warning2/save-batch", list);
 };
 
 export const fetchLeaf = () => {
     return request({
-        url: '/' + 'warning2/page',
+        url: '' + 'warning2/page',
         method: 'get',
         params: {
             pagenum: 1,
@@ -256,7 +290,7 @@ export const fetchLeaf = () => {
 //根据风机型号获取DI测点统一编码相关数据 testingpointdi2
 export const getDIPointByModelId = query => {
     return request({
-        url: '/' + 'info/testing_point_di',
+        url: '' + 'info/testing_point_di',
         method: 'get',
         params: query
     });
@@ -265,25 +299,25 @@ export const getDIPointByModelId = query => {
 //******************************end*******************************************// 
 //******************************预警统计*******************************************//
 export const statistics_querymap = params => {
-    return request.get(`/alarm/count/querymap2`, { params: params })
-        // return request.get(`/alarm/count/querymap2?stationid=XS_FDC&datebegin=2021-10-12&dateend=2021-11-13`)
+    return request.get(`alarm/count/querymap2`, { params: params })
+        // return request.get(`alarm/count/querymap?stationid=XS_FDC&datebegin=2021-10-12&dateend=2021-11-13`)
 };
 export const statistics_querybyname = params => {
-    return request.get('/alarm/count/querybyname2', { params: params })
+    return request.get('alarm/count/querybyname2', { params: params })
 };
 export const statistics_lineandproject = params => {
-    return request.get('/alarm/count/lineandproject2', { params: params })
+    return request.get('alarm/count/lineandproject2', { params: params })
 };
 //******************************end*******************************************//
 
 //******************************预警分析*******************************************//
 export const warning_query_new = params => {
-    return request.get(`/alarm/count/query/new2`, { params: params })
+    return request.get(`alarm/count/query/new2`, { params: params })
 };
 export const warning_detail = params => {
-    return request.get('/analysis/detail', { params: params })
+    return request.get('analysis/detail', { params: params })
 };
 // export const statistics_lineandproject = params => {
-//     return request.get('/alarm/count/lineandproject2', { params: params })
+//     return request.get('alarm/count/lineandproject', { params: params })
 // };
 //******************************end*******************************************//

+ 1 - 1
src/api/zmaxios.js

@@ -3,7 +3,7 @@ import { ElMessage, ElMessageBox } from 'element-plus';
 
 // 配置新建一个 axios 实例
 const service = axios.create({
-    baseURL: 'http://192.168.1.14:8075',
+    baseURL: 'http://192.168.1.18:8075',
     timeout: 50000,
     headers: { 'Content-Type': 'application/json' },
 });

src/assets/dataService/arcgis-nx-fc1-line.json → src/assets/dataService/arcgis-mhs-line.json


src/assets/dataService/arcgis-nx-fc1.json → src/assets/dataService/arcgis-mhs.json


文件差异内容过多而无法显示
+ 1 - 0
src/assets/dataService/arcgis-nss-line.json


文件差异内容过多而无法显示
+ 1502 - 0
src/assets/dataService/arcgis-nss.json


+ 81 - 0
src/assets/dataService/arcgis-qs-line.json

@@ -0,0 +1,81 @@
+[{
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"paths": [
+			[107.217636108398, 37.5534917819943],
+			[107.231798171997, 37.5528113263644],
+			[107.236969470978, 37.5531430492601],
+			[107.230060100555, 37.5577912673456],
+			[107.224591076374, 37.5590223799266],
+			[107.224127054214, 37.5460702271695],
+			[107.232570648193, 37.540800261985],
+			[107.232785224915, 37.5394391127873],
+			[107.235864400864, 37.5409959251395],
+			[107.235864400864, 37.533288110023],
+			[107.233192920685, 37.5303868385901],
+			[107.209181785583, 37.5484073523692],
+			[107.205193340778, 37.5397134714219],
+			[107.208774089813, 37.5290765499824],
+			[107.215468883514, 37.5266601132254],
+			[107.219025492668, 37.5420125145689],
+			[107.218194007874, 37.5337560464588],
+			[107.223858833313, 37.5354405933172],
+			[107.227699756622, 37.5289404147812],
+			[107.237141132355, 37.5237415658803],
+			[107.225081920624, 37.5251795816112],
+			[107.21836566925, 37.5229502199563],
+			[107.201065421104, 37.5422209349572],
+			[107.201489210129, 37.5326159780052],
+			[107.205587625504, 37.5232650575122],
+			[107.211112976074, 37.5201932073065],
+			[107.209621667862, 37.5160574973166],
+			[107.205834388733, 37.5123811182352],
+			[107.203409671783, 37.5168574261816],
+			[107.198731899261, 37.5207207916834],
+			[107.199257612228, 37.508976902057],
+			[107.203677892685, 37.5070449403205],
+			[107.207164764404, 37.5046958798405],
+			[107.191742062569, 37.5510399861667],
+			[107.197715342045, 37.5495386732784],
+			[107.186712920666, 37.542729223053],
+			[107.19198346138, 37.5386734554438],
+			[107.18975186348, 37.5317992018309],
+			[107.194333076477, 37.5262006410413],
+			[107.190524339676, 37.5248307164361],
+			[107.193850278854, 37.5174190732396],
+			[107.194257974625, 37.5101939271718],
+			[107.192884683609, 37.5060406408998],
+			[107.187992334366, 37.5092492450648],
+			[107.163863182068, 37.5293998700896],
+			[107.164839506149, 37.5234862939188],
+			[107.169742584229, 37.5172829167653],
+			[107.176394462585, 37.520057055894],
+			[107.171856164932, 37.514849077877],
+			[107.168154716492, 37.5123811182352],
+			[107.17866897583, 37.5083981698663],
+			[107.175278663635, 37.5056065751042],
+			[107.179956436157, 37.5064917262093],
+			[107.182434797287, 37.5108066875511],
+			[107.185535430908, 37.5054533748091],
+			[107.195867300034, 37.5567855247009],
+			[107.187415659428, 37.5552779484629],
+			[107.187415659428, 37.5552779484629],
+			[107.17248916626, 37.5599366645357],
+			[107.168728709221, 37.5571682613454],
+			[107.16448277235, 37.5539532124332],
+			[107.165713906288, 37.5494004489002],
+			[107.171477973461, 37.5439818513075],
+			[107.177338600159, 37.5468443149692],
+			[107.165193557739, 37.5421656398089],
+			[107.168530225754, 37.5352193923647]
+		]
+	},
+	"symbol": null,
+	"attributes": {
+		"fc_code": "QS",
+		"width": 3
+	},
+	"popupTemplate": null
+}]

文件差异内容过多而无法显示
+ 1007 - 0
src/assets/dataService/arcgis-qs.json


文件差异内容过多而无法显示
+ 1 - 0
src/assets/dataService/arcgis-sbq-line.json


文件差异内容过多而无法显示
+ 1757 - 0
src/assets/dataService/arcgis-sbq.json


文件差异内容过多而无法显示
+ 1 - 0
src/assets/dataService/arcgis-xs-line.json


+ 887 - 0
src/assets/dataService/arcgis-xs.json

@@ -0,0 +1,887 @@
+[{
+        "geometry": {
+            "spatialReference": {
+                "wkid": 4326
+            },
+            "x": 105.2139616,
+            "y": 37.17630397
+        },
+        "symbol": null,
+        "attributes": {
+            "objectid": 1,
+            "fc_code": "fc01",
+            "code": "升压站",
+            "type": "升压站"
+        },
+        "popupTemplate": null
+    },{
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2139616,
+		"y": 37.17630397
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG01",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2186394,
+		"y": 37.17746656
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG02",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2209997,
+		"y": 37.18197998
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG03",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2246046,
+		"y": 37.18398015
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG04",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2170515,
+		"y": 37.16939645
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG05",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2227592,
+		"y": 37.17149955
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG06",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2188325,
+		"y": 37.17346581
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG07",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2284241,
+		"y": 37.17165343
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG08",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2288532,
+		"y": 37.17532943
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG09",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2307415,
+		"y": 37.17856075
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG10",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2354193,
+		"y": 37.18136453
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG11",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2213216,
+		"y": 37.16744719
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG12",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2199697,
+		"y": 37.1630697
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG13",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2188754,
+		"y": 37.15821314
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG14",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2351832,
+		"y": 37.16212919
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG15",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2419209,
+		"y": 37.16488228
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG16",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2455902,
+		"y": 37.16595955
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG17",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2475214,
+		"y": 37.16895189
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG18",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2521992,
+		"y": 37.16784046
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG19",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2424788,
+		"y": 37.16185559
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG20",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2399254,
+		"y": 37.15814473
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG21",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2384663,
+		"y": 37.15386932
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG22",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2489376,
+		"y": 37.16094927
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG23",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2476501,
+		"y": 37.15793952
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG24",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2444744,
+		"y": 37.15532299
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG25",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2115583,
+		"y": 37.17213218
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG26",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2099276,
+		"y": 37.17526105
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG27",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2087474,
+		"y": 37.18179192
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG28",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2079105,
+		"y": 37.18509134
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG29",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2108502,
+		"y": 37.18861284
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG30",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1989198,
+		"y": 37.1755517
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG31",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1991987,
+		"y": 37.18280057
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG32",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.198791,
+		"y": 37.18815129
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG33",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1958299,
+		"y": 37.1801849
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG34",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1887488,
+		"y": 37.18856156
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG35",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1947355,
+		"y": 37.17633817
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG36",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1866031,
+		"y": 37.17977459
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG37",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1873326,
+		"y": 37.1755688
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG38",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1796722,
+		"y": 37.17688527
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG39",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1824403,
+		"y": 37.18757008
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG40",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1773977,
+		"y": 37.18500586
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG41",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1714969,
+		"y": 37.18526229
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG42",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2116871,
+		"y": 37.16691711
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG43",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2104855,
+		"y": 37.1634288
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG44",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.207417,
+		"y": 37.16799435
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG45",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.201602,
+		"y": 37.16690001
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG46",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2053785,
+		"y": 37.15397194
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG47",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.2037477,
+		"y": 37.15821314
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG48",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1997781,
+		"y": 37.15963252
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG49",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1993275,
+		"y": 37.15679373
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG50",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.194757,
+		"y": 37.15879457
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG51",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1912808,
+		"y": 37.16060726
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG52",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1859164,
+		"y": 37.15607546
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG53",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1862597,
+		"y": 37.15226171
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG54",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1868176,
+		"y": 37.1622147
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG55",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1817322,
+		"y": 37.16525848
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG56",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1725054,
+		"y": 37.16621604
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG57",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}, {
+	"geometry": {
+		"spatialReference": {
+			"wkid": 4326
+		},
+		"x": 105.1694369,
+		"y": 37.1642838
+	},
+	"symbol": null,
+	"attributes": {
+		"code": "#XG58",
+		"fc_code": "XS",
+		"type": "风场"
+	},
+	"popupTemplate": null
+}]

+ 3 - 2
src/components/arcgis/MHS_FDC.vue

@@ -195,12 +195,13 @@ export default {
             that.wpnumMap = res.data.fczbmap.jczbmap;
             that.wpInfoMap = res.data.wxssmap;
             that.fjmap = res.data.fjmap[0];
+			that.when();
           }
         },
       });
     },
     when: function () {
-      let jsonObj = dataService.get("arcgis-nx-fc1");
+      let jsonObj = dataService.get("arcgis-mhs");
       this.fans = jsonObj;
       jsonObj.forEach((item) => {
         let obj = this.fjmap.find((t) => {
@@ -254,7 +255,7 @@ export default {
           false
         );
       });
-      let lineJsonObj = dataService.get("arcgis-nx-fc1-line");
+      let lineJsonObj = dataService.get("arcgis-mhs-line");
       this.$refs.arcgis.addFanByJson(jsonObj, lineJsonObj);
     },
     clickMap: function (info) {

+ 503 - 0
src/components/arcgis/NSS_FDC.vue

@@ -0,0 +1,503 @@
+<template>
+  <div style="width: 100%; height: 100%">
+    <arcgis
+      class="arcgis-layer"
+      @when="when"
+      ref="arcgis"
+      :data="arcgisData"
+      @clickMap="clickMap"
+    >
+      <template
+        v-for="(fan, index) of fans"
+        :key="index"
+        v-slot:[fan.attributes.code]
+      >
+        <svg
+          v-if="fan.attributes.code != '升压站'"
+          @click="clickFan(fan.attributes.code)"
+          class="can-click esri-component"
+          version="1.1"
+          xmlns="http://www.w3.org/2000/svg"
+          xmlns:xlink="http://www.w3.org/1999/xlink"
+          viewBox="0 0 200 240"
+          enable-background="new 0 0 200 240"
+          xml:space="preserve"
+          width="66"
+          height="66"
+        >
+          <!-- 底座 -->
+          <g>
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][2]"
+              d="M100.681,156.137c24.579,0,44.505,8.548,44.505,19.094
+                            c0,10.545-19.926,19.093-44.505,19.093c-24.577,0-42.878-8.548-42.878-19.093C57.803,164.685,76.104,156.137,100.681,156.137z"
+            />
+          </g>
+          <!-- 后面的脑袋 -->
+          <g>
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][0]"
+              d="M92.875,76.372l27.897-18.417c0,0,4.108-0.096,7.891,2.681
+                                c4.305,3.156,1.86,9.235,1.86,9.235l-24.374,23.292L92.875,76.372z"
+            />
+          </g>
+          <!-- 柱 -->
+          <g>
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][0]"
+              d="M92.152,175.229h18.689l-4.876-94.254H97.84L92.152,175.229z"
+            />
+          </g>
+          <!-- 风扇 -->
+          <g>
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][1]"
+              d="M109.007,85.525l-16.061,0.268l7.396-83.773L109.007,85.525z"
+            />
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][1]"
+              d="M95.219,75.597l8.265,13.771l-76.25,35.483L95.219,75.597z
+                            M99.108,89.634l7.795-14.04l68.854,48.291L99.108,89.634z"
+            />
+            <animateTransform
+              v-if="fan.attributes.rotate"
+              attributeName="transform"
+              attributeType="XML"
+              type="rotate"
+              from="0 100 82"
+              to="359 100 82"
+              :dur="fan.attributes.dur + 's'"
+              repeatCount="indefinite"
+            />
+          </g>
+          <!-- 前面的尖 -->
+          <g>
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][2]"
+              d="M92.863,72.903c0,0,13.912-0.343,17.098,4.352
+                            c2.984,4.397-2.58,15.473-2.58,15.473l-24.376,0.436L92.863,72.903z"
+            />
+          </g>
+          <!-- 文字 -->
+          <g>
+            <text
+              x="100"
+              y="240"
+              fill="#ffffff"
+              font-size="40"
+              text-anchor="middle"
+              alignment-baseline="baseline"
+            >
+              {{ fan.attributes.code }}
+            </text>
+          </g>
+        </svg>
+        <div v-if="fan.attributes.code == '升压站'">
+          <div class="syz-img">
+            <img :src="syzImg" />
+          </div>
+          <div class="white font-sm mr-t-8" style="text-align: center">
+            {{ fan.attributes.code }}
+          </div>
+        </div>
+      </template>
+    </arcgis>
+  </div>
+</template>
+
+<script>
+import arcgis from "./arcgis.vue";
+import dataService from "@/helper/data.js";
+
+export default {
+  // 名称
+  name: "Map",
+  // 使用组件
+  components: {
+    arcgis,
+  },
+  props: {
+    wpId: {
+      type: String,
+      default: "",
+    },
+  },
+  // 数据
+  data() {
+    return {
+      wpnumMap: {}, //风机监视数量
+      wpInfoMap: {}, //风机详情
+      fjmap: [], // 风机名
+      sourceId: "",
+      arcgisData: {
+        mode: "2D", // 模式 2D 3D
+        title: "宁夏地图", // 标题
+        center: [106.0231304, 37.76323706], // 初始中心点 106.230909, 38.487193
+        height: 654, // 3D地图初始相机高度
+        tilt: 65, // 俯视角
+        scale: 50000,
+        rotation: -45,
+        ox: -600,
+        oy: -50,
+      },
+      showPopup: false,
+      mapToolIndex: 0,
+      fans: [],
+      colors: {
+        0: ["#05bb4c", "#4ad476", "#9fedb2"],
+        1: ["#4b55ae", "#959dc7", "#d3d6e0"],
+        2: ["#BA3237", "#d4807d", "#eddad8"],
+        3: ["#606769", "#757575", "#AFAFAF"],
+        4: ["#e17e23", "#fabf78", "#ffebcc"],
+        5: ["#c531c7", "#e080dc", "#fadef7"],
+        6: ["#c531c7", "#e080dc", "#fadef7"],
+      },
+      syzImg: require("@assets/png/booster-station.png"),
+    };
+  },
+  created() {
+    let that = this;
+    that.sourceId = this.wpId;
+    that.$nextTick(() => {
+      that.requestData();
+    });
+  },
+  // 函数
+  methods: {
+    select(res) {
+      this.$router.replace({
+        path: `/monitor/windsite/map/${res.code}`,
+      });
+    },
+    // 风机状态监视
+    requestData() {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "monitor/findGeneralAppearance",
+        data: {
+          wpId: that.wpId,
+        },
+        success(res) {
+          if (res.code == 200) {
+            that.wpnumMap = res.data.fczbmap.jczbmap;
+            that.wpInfoMap = res.data.wxssmap;
+            that.fjmap = res.data.fjmap[0];
+			that.when();
+          }
+        },
+      });
+    },
+    when: function () {
+      let jsonObj = dataService.get("arcgis-nss");
+      this.fans = jsonObj;
+      jsonObj.forEach((item) => {
+        let obj = this.fjmap.find((t) => {
+          let wtid = t.wtId.replace("01_", "");
+          if (wtid == item.attributes.code) return t;
+        });
+        if (obj) {
+          item.attributes.state = String(obj.fjzt);
+        } else {
+          item.attributes.state = "4";
+        }
+        switch (item.attributes.state) {
+          case "0": //待机
+            item.attributes.rotate = false; // 转
+            item.attributes.dur = 8; // 转一圈时间
+            break;
+          case "1": //运行
+            item.attributes.rotate = true; // 转
+            item.attributes.dur = 2; // 转一圈时间
+            break;
+          case "2": //故障
+            item.attributes.rotate = false; // 不转
+            item.attributes.dur = 8;
+            break;
+          case "3": //中断
+            item.attributes.rotate = false; // 不转
+            item.attributes.dur = 8;
+            break;
+          case "4": //维护
+            item.attributes.rotate = false; // 不转
+            item.attributes.dur = 8;
+            break;
+          case "5": //限电
+            item.attributes.rotate = true; // 转
+            item.attributes.dur = 6;
+            break;
+          case "6": //停机
+            item.attributes.rotate = false; // 不转
+            item.attributes.dur = 8;
+            break;
+          default:
+            item.attributes.rotate = false;
+            item.attributes.dur = 8;
+            break;
+        }
+		console.log(item.geometry.x)
+        this.$refs.arcgis.addHtmlPoint(
+          [item.geometry.x, item.geometry.y],
+          item.attributes.code,
+          33,
+          50,
+          false
+        );
+      });
+      let lineJsonObj = dataService.get("arcgis-nss-line");
+      this.$refs.arcgis.addFanByJson(jsonObj, lineJsonObj);
+    },
+    clickMap: function (info) {
+      console.log(info);
+    },
+    clickFan: function (code) {
+      let wtId = code.replace("G", "G01_");
+      this.$router.push(`/monitor/windsite/info/${this.wpId}/${wtId}`);
+    },
+    popupBack: function () {
+      this.showPopup = false;
+    },
+    clickMapTool: function (index) {
+      //   this.mapToolIndex = index;
+      this.showPopup = !this.showPopup;
+    },
+  },
+  watch: {
+    wpId(res) {
+      this.sourceId = res;
+      if (res) {
+        this.requestData();
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+@titleHeight: 40px;
+
+.map-1 {
+  width: 100%;
+  height: calc(100vh - 90px);
+  display: flex;
+  flex-direction: column;
+
+  .btn-group-tabs {
+    display: flex;
+    flex-direction: row;
+  }
+
+  .can-click {
+    cursor: pointer;
+  }
+
+  .syz-img {
+    width: 65px;
+    height: 47px;
+
+    img {
+      width: 100%;
+      height: 100%;
+    }
+  }
+
+  .panel-title {
+    width: 100%;
+    background-color: fade(@darkgray, 40%);
+    margin-top: 16px;
+    padding: 6px;
+    display: flex;
+    align-items: center;
+
+    .panel-title-name {
+      color: @green;
+      display: flex;
+      align-items: center;
+      line-height: 0;
+      font-size: 0;
+
+      i,
+      span {
+        margin: 0 0 0 16px;
+        line-height: 0;
+        font-size: 13px;
+      }
+    }
+
+    .sub-title-item {
+      display: flex;
+      align-items: center;
+      margin-left: 16px;
+
+      .sub-title {
+        font-size: 13px;
+        margin-left: 6px;
+      }
+
+      .sub-count {
+        font-size: 13px;
+        font-weight: 500;
+      }
+
+      img {
+        height: 31px;
+      }
+    }
+  }
+
+  .panel-body {
+    flex-grow: 1;
+    background-color: fade(@darkgray, 20%);
+    padding: 8px;
+    overflow: auto;
+    position: relative;
+
+    .arcgis-layer {
+      z-index: 1;
+    }
+
+    .map-popup-panel {
+      width: 760px;
+      position: absolute;
+      left: 71px;
+      top: 22px;
+      z-index: 2;
+
+      .map-popup-panel-header {
+        width: 100%;
+        background: fade(#152221, 90%);
+        display: flex;
+
+        .map-popup-panel-title {
+          padding: 17px 24px;
+          font-size: @fontsize-s;
+          position: relative;
+
+          &::before,
+          &::after {
+            position: absolute;
+            width: calc(50% - 6px);
+            bottom: 0;
+            border-bottom: 2px solid @green;
+          }
+
+          &::before {
+            content: "";
+            left: 0;
+          }
+
+          &::after {
+            content: "";
+            right: 0;
+          }
+
+          span {
+            position: absolute;
+            width: 11.3px;
+            height: 11.3px;
+            border-left: 2px solid @green;
+            border-top: 2px solid @green;
+            left: calc(50% - 5.65px);
+            bottom: -3px;
+            transform: rotate(45deg);
+          }
+        }
+
+        .map-popup-panel-date {
+          flex-grow: 1;
+          padding: 17px 24px;
+          font-size: @fontsize-s;
+          text-align: right;
+          border-bottom: 2px solid @green;
+        }
+
+        .map-popup-panel-back {
+          margin-left: auto;
+          width: 54px;
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          position: relative;
+          cursor: pointer;
+
+          &::after {
+            content: "";
+            position: absolute;
+            left: 0;
+            height: 50%;
+            border-left: 1px solid @gray;
+            top: 25%;
+          }
+        }
+      }
+
+      .map-popup-panel-body {
+        background: fade(#152221, 75%);
+        border: 1px solid fade(@darkgray, 40);
+        border-top: 0px;
+
+        .table-form {
+          .text,
+          .unit {
+            font-weight: 400;
+          }
+
+          .unit {
+            min-width: auto;
+          }
+
+          .value,
+          .unit {
+            text-align: left;
+          }
+        }
+      }
+    }
+
+    .map-tool {
+      position: absolute;
+      right: 22px;
+      top: 22px;
+      z-index: 2;
+      background: #152221af;
+      padding: 18px 14px;
+
+      .m-btn {
+        width: 124px;
+        height: 44px;
+        background: #152221bf;
+        border: 1px solid #152221bf;
+        color: #ffffff;
+        transition: all 0.3s;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        cursor: pointer;
+
+        &:hover,
+        &.active {
+          background: #05bb4c33;
+          border: 1px solid #05bb4c;
+          color: #05bb4c;
+        }
+
+        + .m-btn {
+          margin-top: 16px;
+        }
+      }
+    }
+  }
+}
+</style>

+ 444 - 0
src/components/arcgis/QS_FDC.vue

@@ -0,0 +1,444 @@
+<template>
+	<div style="width: 100%; height: 100%">
+		<arcgis class="arcgis-layer" @when="when" ref="arcgis" :data="arcgisData" @clickMap="clickMap">
+			<template v-for="(fan, index) of fans" :key="index" v-slot:[fan.attributes.code]>
+				<svg v-if="fan.attributes.code != '升压站'" @click="clickFan(fan.attributes.code)"
+					class="can-click esri-component" version="1.1" xmlns="http://www.w3.org/2000/svg"
+					xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 200 240" enable-background="new 0 0 200 240"
+					xml:space="preserve" width="66" height="66">
+					<!-- 底座 -->
+					<g>
+						<path fill-rule="evenodd" clip-rule="evenodd" :fill="colors[fan.attributes.state][2]"
+							d="M100.681,156.137c24.579,0,44.505,8.548,44.505,19.094
+                            c0,10.545-19.926,19.093-44.505,19.093c-24.577,0-42.878-8.548-42.878-19.093C57.803,164.685,76.104,156.137,100.681,156.137z" />
+					</g>
+					<!-- 后面的脑袋 -->
+					<g>
+						<path fill-rule="evenodd" clip-rule="evenodd" :fill="colors[fan.attributes.state][0]" d="M92.875,76.372l27.897-18.417c0,0,4.108-0.096,7.891,2.681
+                                c4.305,3.156,1.86,9.235,1.86,9.235l-24.374,23.292L92.875,76.372z" />
+					</g>
+					<!-- 柱 -->
+					<g>
+						<path fill-rule="evenodd" clip-rule="evenodd" :fill="colors[fan.attributes.state][0]"
+							d="M92.152,175.229h18.689l-4.876-94.254H97.84L92.152,175.229z" />
+					</g>
+					<!-- 风扇 -->
+					<g>
+						<path fill-rule="evenodd" clip-rule="evenodd" :fill="colors[fan.attributes.state][1]"
+							d="M109.007,85.525l-16.061,0.268l7.396-83.773L109.007,85.525z" />
+						<path fill-rule="evenodd" clip-rule="evenodd" :fill="colors[fan.attributes.state][1]" d="M95.219,75.597l8.265,13.771l-76.25,35.483L95.219,75.597z
+                            M99.108,89.634l7.795-14.04l68.854,48.291L99.108,89.634z" />
+						<animateTransform v-if="fan.attributes.rotate" attributeName="transform" attributeType="XML"
+							type="rotate" from="0 100 82" to="359 100 82" :dur="fan.attributes.dur + 's'"
+							repeatCount="indefinite" />
+					</g>
+					<!-- 前面的尖 -->
+					<g>
+						<path fill-rule="evenodd" clip-rule="evenodd" :fill="colors[fan.attributes.state][2]" d="M92.863,72.903c0,0,13.912-0.343,17.098,4.352
+                            c2.984,4.397-2.58,15.473-2.58,15.473l-24.376,0.436L92.863,72.903z" />
+					</g>
+					<!-- 文字 -->
+					<g>
+						<text x="100" y="240" fill="#ffffff" font-size="40" text-anchor="middle"
+							alignment-baseline="baseline">
+							{{ fan.attributes.code }}
+						</text>
+					</g>
+				</svg>
+				<div v-if="fan.attributes.code == '升压站'">
+					<div class="syz-img">
+						<img :src="syzImg" />
+					</div>
+					<div class="white font-sm mr-t-8" style="text-align: center">
+						{{ fan.attributes.code }}
+					</div>
+				</div>
+			</template>
+		</arcgis>
+	</div>
+</template>
+
+<script>
+	import arcgis from "./arcgis.vue";
+	import dataService from "@/helper/data.js";
+
+	export default {
+		// 名称
+		name: "Map",
+		// 使用组件
+		components: {
+			arcgis,
+		},
+		props: {
+			wpId: {
+				type: String,
+				default: "",
+			},
+		},
+		// 数据
+		data() {
+			return {
+				wpnumMap: {}, //风机监视数量
+				wpInfoMap: {}, //风机详情
+				fjmap: [], // 风机名
+				sourceId: "",
+				arcgisData: {
+					mode: "2D", // 模式 2D 3D
+					title: "宁夏地图", // 标题
+					center: [107.217636108398, 37.5134917819943], // 初始中心点 106.230909, 38.487193
+					height: 654, // 3D地图初始相机高度
+					tilt: 65, // 俯视角
+					scale: 55000,
+					rotation: -45,
+					ox: -600,
+					oy: -50,
+				},
+				showPopup: false,
+				mapToolIndex: 0,
+				fans: [],
+				colors: {
+					0: ["#05bb4c", "#4ad476", "#9fedb2"],
+					1: ["#4b55ae", "#959dc7", "#d3d6e0"],
+					2: ["#BA3237", "#d4807d", "#eddad8"],
+					3: ["#606769", "#757575", "#AFAFAF"],
+					4: ["#e17e23", "#fabf78", "#ffebcc"],
+					5: ["#c531c7", "#e080dc", "#fadef7"],
+					6: ["#c531c7", "#e080dc", "#fadef7"],
+				},
+				syzImg: require("@assets/png/booster-station.png"),
+			};
+		},
+		created() {
+			let that = this;
+			that.sourceId = this.wpId;
+			that.$nextTick(() => {
+				that.requestData();
+			});
+		},
+		// 函数
+		methods: {
+			select(res) {
+				this.$router.replace({
+					path: `/monitor/windsite/map/${res.code}`,
+				});
+			},
+			// 风机状态监视
+			requestData() {
+				let that = this;
+				that.API.requestData({
+					method: "POST",
+					subUrl: "monitor/findGeneralAppearance",
+					data: {
+						wpId: that.wpId,
+					},
+					success(res) {
+						if (res.code == 200) {
+							that.wpnumMap = res.data.fczbmap.jczbmap;
+							that.wpInfoMap = res.data.wxssmap;
+							that.fjmap = res.data.fjmap[0];
+							that.when();
+						}
+					},
+				});
+			},
+			when: function() {
+				let jsonObj = dataService.get("arcgis-qs");
+				this.fans = jsonObj;
+				jsonObj.forEach((item) => {
+					let obj = this.fjmap.find((t) => {
+						let wtid = t.wtId.replace("01_", "");
+						if (wtid == item.attributes.code) return t;
+					});
+					if (obj) {
+						item.attributes.state = String(obj.fjzt);
+					} else {
+						item.attributes.state = "4";
+					}
+					switch (item.attributes.state) {
+						case "0": //待机
+							item.attributes.rotate = false; // 转
+							item.attributes.dur = 8; // 转一圈时间
+							break;
+						case "1": //运行
+							item.attributes.rotate = true; // 转
+							item.attributes.dur = 2; // 转一圈时间
+							break;
+						case "2": //故障
+							item.attributes.rotate = false; // 不转
+							item.attributes.dur = 8;
+							break;
+						case "3": //中断
+							item.attributes.rotate = false; // 不转
+							item.attributes.dur = 8;
+							break;
+						case "4": //维护
+							item.attributes.rotate = false; // 不转
+							item.attributes.dur = 8;
+							break;
+						case "5": //限电
+							item.attributes.rotate = true; // 转
+							item.attributes.dur = 6;
+							break;
+						case "6": //停机
+							item.attributes.rotate = false; // 不转
+							item.attributes.dur = 8;
+							break;
+						default:
+							item.attributes.rotate = false;
+							item.attributes.dur = 8;
+							break;
+					}
+					this.$refs.arcgis.addHtmlPoint(
+						[item.geometry.x, item.geometry.y],
+						item.attributes.code,
+						33,
+						50,
+						false
+					);
+				});
+				let lineJsonObj = dataService.get("arcgis-qs-line");
+				this.$refs.arcgis.addFanByJson(jsonObj, lineJsonObj);
+			},
+			clickMap: function(info) {
+				console.log(info);
+			},
+			clickFan: function(code) {
+				let wtId = code.replace("G", "G01_");
+				this.$router.push(`/monitor/windsite/info/${this.wpId}/${wtId}`);
+			},
+			popupBack: function() {
+				this.showPopup = false;
+			},
+			clickMapTool: function(index) {
+				//   this.mapToolIndex = index;
+				this.showPopup = !this.showPopup;
+			},
+		},
+		watch: {
+			wpId(res) {
+				this.sourceId = res;
+				if (res) {
+					this.requestData();
+				}
+			},
+		},
+	};
+</script>
+
+<style lang="less" scoped>
+	@titleHeight: 40px;
+
+	.map-1 {
+		width: 100%;
+		height: calc(100vh - 90px);
+		display: flex;
+		flex-direction: column;
+
+		.btn-group-tabs {
+			display: flex;
+			flex-direction: row;
+		}
+
+		.can-click {
+			cursor: pointer;
+		}
+
+		.syz-img {
+			width: 65px;
+			height: 47px;
+
+			img {
+				width: 100%;
+				height: 100%;
+			}
+		}
+
+		.panel-title {
+			width: 100%;
+			background-color: fade(@darkgray, 40%);
+			margin-top: 16px;
+			padding: 6px;
+			display: flex;
+			align-items: center;
+
+			.panel-title-name {
+				color: @green;
+				display: flex;
+				align-items: center;
+				line-height: 0;
+				font-size: 0;
+
+				i,
+				span {
+					margin: 0 0 0 16px;
+					line-height: 0;
+					font-size: 13px;
+				}
+			}
+
+			.sub-title-item {
+				display: flex;
+				align-items: center;
+				margin-left: 16px;
+
+				.sub-title {
+					font-size: 13px;
+					margin-left: 6px;
+				}
+
+				.sub-count {
+					font-size: 13px;
+					font-weight: 500;
+				}
+
+				img {
+					height: 31px;
+				}
+			}
+		}
+
+		.panel-body {
+			flex-grow: 1;
+			background-color: fade(@darkgray, 20%);
+			padding: 8px;
+			overflow: auto;
+			position: relative;
+
+			.arcgis-layer {
+				z-index: 1;
+			}
+
+			.map-popup-panel {
+				width: 760px;
+				position: absolute;
+				left: 71px;
+				top: 22px;
+				z-index: 2;
+
+				.map-popup-panel-header {
+					width: 100%;
+					background: fade(#152221, 90%);
+					display: flex;
+
+					.map-popup-panel-title {
+						padding: 17px 24px;
+						font-size: @fontsize-s;
+						position: relative;
+
+						&::before,
+						&::after {
+							position: absolute;
+							width: calc(50% - 6px);
+							bottom: 0;
+							border-bottom: 2px solid @green;
+						}
+
+						&::before {
+							content: "";
+							left: 0;
+						}
+
+						&::after {
+							content: "";
+							right: 0;
+						}
+
+						span {
+							position: absolute;
+							width: 11.3px;
+							height: 11.3px;
+							border-left: 2px solid @green;
+							border-top: 2px solid @green;
+							left: calc(50% - 5.65px);
+							bottom: -3px;
+							transform: rotate(45deg);
+						}
+					}
+
+					.map-popup-panel-date {
+						flex-grow: 1;
+						padding: 17px 24px;
+						font-size: @fontsize-s;
+						text-align: right;
+						border-bottom: 2px solid @green;
+					}
+
+					.map-popup-panel-back {
+						margin-left: auto;
+						width: 54px;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+						position: relative;
+						cursor: pointer;
+
+						&::after {
+							content: "";
+							position: absolute;
+							left: 0;
+							height: 50%;
+							border-left: 1px solid @gray;
+							top: 25%;
+						}
+					}
+				}
+
+				.map-popup-panel-body {
+					background: fade(#152221, 75%);
+					border: 1px solid fade(@darkgray, 40);
+					border-top: 0px;
+
+					.table-form {
+
+						.text,
+						.unit {
+							font-weight: 400;
+						}
+
+						.unit {
+							min-width: auto;
+						}
+
+						.value,
+						.unit {
+							text-align: left;
+						}
+					}
+				}
+			}
+
+			.map-tool {
+				position: absolute;
+				right: 22px;
+				top: 22px;
+				z-index: 2;
+				background: #152221af;
+				padding: 18px 14px;
+
+				.m-btn {
+					width: 124px;
+					height: 44px;
+					background: #152221bf;
+					border: 1px solid #152221bf;
+					color: #ffffff;
+					transition: all 0.3s;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					cursor: pointer;
+
+					&:hover,
+					&.active {
+						background: #05bb4c33;
+						border: 1px solid #05bb4c;
+						color: #05bb4c;
+					}
+
+					+.m-btn {
+						margin-top: 16px;
+					}
+				}
+			}
+		}
+	}
+</style>

+ 502 - 0
src/components/arcgis/SBQ_FDC.vue

@@ -0,0 +1,502 @@
+<template>
+  <div style="width: 100%; height: 100%">
+    <arcgis
+      class="arcgis-layer"
+      @when="when"
+      ref="arcgis"
+      :data="arcgisData"
+      @clickMap="clickMap"
+    >
+      <template
+        v-for="(fan, index) of fans"
+        :key="index"
+        v-slot:[fan.attributes.code]
+      >
+        <svg
+          v-if="fan.attributes.code != '升压站'"
+          @click="clickFan(fan.attributes.code)"
+          class="can-click esri-component"
+          version="1.1"
+          xmlns="http://www.w3.org/2000/svg"
+          xmlns:xlink="http://www.w3.org/1999/xlink"
+          viewBox="0 0 200 240"
+          enable-background="new 0 0 200 240"
+          xml:space="preserve"
+          width="66"
+          height="66"
+        >
+          <!-- 底座 -->
+          <g>
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][2]"
+              d="M100.681,156.137c24.579,0,44.505,8.548,44.505,19.094
+                            c0,10.545-19.926,19.093-44.505,19.093c-24.577,0-42.878-8.548-42.878-19.093C57.803,164.685,76.104,156.137,100.681,156.137z"
+            />
+          </g>
+          <!-- 后面的脑袋 -->
+          <g>
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][0]"
+              d="M92.875,76.372l27.897-18.417c0,0,4.108-0.096,7.891,2.681
+                                c4.305,3.156,1.86,9.235,1.86,9.235l-24.374,23.292L92.875,76.372z"
+            />
+          </g>
+          <!-- 柱 -->
+          <g>
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][0]"
+              d="M92.152,175.229h18.689l-4.876-94.254H97.84L92.152,175.229z"
+            />
+          </g>
+          <!-- 风扇 -->
+          <g>
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][1]"
+              d="M109.007,85.525l-16.061,0.268l7.396-83.773L109.007,85.525z"
+            />
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][1]"
+              d="M95.219,75.597l8.265,13.771l-76.25,35.483L95.219,75.597z
+                            M99.108,89.634l7.795-14.04l68.854,48.291L99.108,89.634z"
+            />
+            <animateTransform
+              v-if="fan.attributes.rotate"
+              attributeName="transform"
+              attributeType="XML"
+              type="rotate"
+              from="0 100 82"
+              to="359 100 82"
+              :dur="fan.attributes.dur + 's'"
+              repeatCount="indefinite"
+            />
+          </g>
+          <!-- 前面的尖 -->
+          <g>
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][2]"
+              d="M92.863,72.903c0,0,13.912-0.343,17.098,4.352
+                            c2.984,4.397-2.58,15.473-2.58,15.473l-24.376,0.436L92.863,72.903z"
+            />
+          </g>
+          <!-- 文字 -->
+          <g>
+            <text
+              x="100"
+              y="240"
+              fill="#ffffff"
+              font-size="40"
+              text-anchor="middle"
+              alignment-baseline="baseline"
+            >
+              {{ fan.attributes.code }}
+            </text>
+          </g>
+        </svg>
+        <div v-if="fan.attributes.code == '升压站'">
+          <div class="syz-img">
+            <img :src="syzImg" />
+          </div>
+          <div class="white font-sm mr-t-8" style="text-align: center">
+            {{ fan.attributes.code }}
+          </div>
+        </div>
+      </template>
+    </arcgis>
+  </div>
+</template>
+
+<script>
+import arcgis from "./arcgis.vue";
+import dataService from "@/helper/data.js";
+
+export default {
+  // 名称
+  name: "Map",
+  // 使用组件
+  components: {
+    arcgis,
+  },
+  props: {
+    wpId: {
+      type: String,
+      default: "",
+    },
+  },
+  // 数据
+  data() {
+    return {
+      wpnumMap: {}, //风机监视数量
+      wpInfoMap: {}, //风机详情
+      fjmap: [], // 风机名
+      sourceId: "",
+      arcgisData: {
+        mode: "2D", // 模式 2D 3D
+        title: "宁夏地图", // 标题
+        center: [106.4515667, 37.60171667], // 初始中心点 106.230909, 38.487193
+        height: 654, // 3D地图初始相机高度
+        tilt: 65, // 俯视角
+        scale: 120000,
+        rotation: -45,
+        ox: -600,
+        oy: -50,
+      },
+      showPopup: false,
+      mapToolIndex: 0,
+      fans: [],
+      colors: {
+        0: ["#05bb4c", "#4ad476", "#9fedb2"],
+        1: ["#4b55ae", "#959dc7", "#d3d6e0"],
+        2: ["#BA3237", "#d4807d", "#eddad8"],
+        3: ["#606769", "#757575", "#AFAFAF"],
+        4: ["#e17e23", "#fabf78", "#ffebcc"],
+        5: ["#c531c7", "#e080dc", "#fadef7"],
+        6: ["#c531c7", "#e080dc", "#fadef7"],
+      },
+      syzImg: require("@assets/png/booster-station.png"),
+    };
+  },
+  created() {
+    let that = this;
+    that.sourceId = this.wpId;
+    that.$nextTick(() => {
+      that.requestData();
+    });
+  },
+  // 函数
+  methods: {
+    select(res) {
+      this.$router.replace({
+        path: `/monitor/windsite/map/${res.code}`,
+      });
+    },
+    // 风机状态监视
+    requestData() {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "monitor/findGeneralAppearance",
+        data: {
+          wpId: that.wpId,
+        },
+        success(res) {
+          if (res.code == 200) {
+            that.wpnumMap = res.data.fczbmap.jczbmap;
+            that.wpInfoMap = res.data.wxssmap;
+            that.fjmap = res.data.fjmap[0];
+			that.when();
+          }
+        },
+      });
+    },
+    when: function () {
+      let jsonObj = dataService.get("arcgis-sbq");
+      this.fans = jsonObj;
+      jsonObj.forEach((item) => {
+        let obj = this.fjmap.find((t) => {
+          let wtid = t.wtId.replace("01_", "");
+          if (wtid == item.attributes.code) return t;
+        });
+        if (obj) {
+          item.attributes.state = String(obj.fjzt);
+        } else {
+          item.attributes.state = "4";
+        }
+        switch (item.attributes.state) {
+          case "0": //待机
+            item.attributes.rotate = false; // 转
+            item.attributes.dur = 8; // 转一圈时间
+            break;
+          case "1": //运行
+            item.attributes.rotate = true; // 转
+            item.attributes.dur = 2; // 转一圈时间
+            break;
+          case "2": //故障
+            item.attributes.rotate = false; // 不转
+            item.attributes.dur = 8;
+            break;
+          case "3": //中断
+            item.attributes.rotate = false; // 不转
+            item.attributes.dur = 8;
+            break;
+          case "4": //维护
+            item.attributes.rotate = false; // 不转
+            item.attributes.dur = 8;
+            break;
+          case "5": //限电
+            item.attributes.rotate = true; // 转
+            item.attributes.dur = 6;
+            break;
+          case "6": //停机
+            item.attributes.rotate = false; // 不转
+            item.attributes.dur = 8;
+            break;
+          default:
+            item.attributes.rotate = false;
+            item.attributes.dur = 8;
+            break;
+        }
+        this.$refs.arcgis.addHtmlPoint(
+          [item.geometry.x, item.geometry.y],
+          item.attributes.code,
+          33,
+          50,
+          false
+        );
+      });
+      let lineJsonObj = dataService.get("arcgis-sbq-line");
+      this.$refs.arcgis.addFanByJson(jsonObj, lineJsonObj);
+    },
+    clickMap: function (info) {
+      console.log(info);
+    },
+    clickFan: function (code) {
+      let wtId = code.replace("G", "G01_");
+      this.$router.push(`/monitor/windsite/info/${this.wpId}/${wtId}`);
+    },
+    popupBack: function () {
+      this.showPopup = false;
+    },
+    clickMapTool: function (index) {
+      //   this.mapToolIndex = index;
+      this.showPopup = !this.showPopup;
+    },
+  },
+  watch: {
+    wpId(res) {
+      this.sourceId = res;
+      if (res) {
+        this.requestData();
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+@titleHeight: 40px;
+
+.map-1 {
+  width: 100%;
+  height: calc(100vh - 90px);
+  display: flex;
+  flex-direction: column;
+
+  .btn-group-tabs {
+    display: flex;
+    flex-direction: row;
+  }
+
+  .can-click {
+    cursor: pointer;
+  }
+
+  .syz-img {
+    width: 65px;
+    height: 47px;
+
+    img {
+      width: 100%;
+      height: 100%;
+    }
+  }
+
+  .panel-title {
+    width: 100%;
+    background-color: fade(@darkgray, 40%);
+    margin-top: 16px;
+    padding: 6px;
+    display: flex;
+    align-items: center;
+
+    .panel-title-name {
+      color: @green;
+      display: flex;
+      align-items: center;
+      line-height: 0;
+      font-size: 0;
+
+      i,
+      span {
+        margin: 0 0 0 16px;
+        line-height: 0;
+        font-size: 13px;
+      }
+    }
+
+    .sub-title-item {
+      display: flex;
+      align-items: center;
+      margin-left: 16px;
+
+      .sub-title {
+        font-size: 13px;
+        margin-left: 6px;
+      }
+
+      .sub-count {
+        font-size: 13px;
+        font-weight: 500;
+      }
+
+      img {
+        height: 31px;
+      }
+    }
+  }
+
+  .panel-body {
+    flex-grow: 1;
+    background-color: fade(@darkgray, 20%);
+    padding: 8px;
+    overflow: auto;
+    position: relative;
+
+    .arcgis-layer {
+      z-index: 1;
+    }
+
+    .map-popup-panel {
+      width: 760px;
+      position: absolute;
+      left: 71px;
+      top: 22px;
+      z-index: 2;
+
+      .map-popup-panel-header {
+        width: 100%;
+        background: fade(#152221, 90%);
+        display: flex;
+
+        .map-popup-panel-title {
+          padding: 17px 24px;
+          font-size: @fontsize-s;
+          position: relative;
+
+          &::before,
+          &::after {
+            position: absolute;
+            width: calc(50% - 6px);
+            bottom: 0;
+            border-bottom: 2px solid @green;
+          }
+
+          &::before {
+            content: "";
+            left: 0;
+          }
+
+          &::after {
+            content: "";
+            right: 0;
+          }
+
+          span {
+            position: absolute;
+            width: 11.3px;
+            height: 11.3px;
+            border-left: 2px solid @green;
+            border-top: 2px solid @green;
+            left: calc(50% - 5.65px);
+            bottom: -3px;
+            transform: rotate(45deg);
+          }
+        }
+
+        .map-popup-panel-date {
+          flex-grow: 1;
+          padding: 17px 24px;
+          font-size: @fontsize-s;
+          text-align: right;
+          border-bottom: 2px solid @green;
+        }
+
+        .map-popup-panel-back {
+          margin-left: auto;
+          width: 54px;
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          position: relative;
+          cursor: pointer;
+
+          &::after {
+            content: "";
+            position: absolute;
+            left: 0;
+            height: 50%;
+            border-left: 1px solid @gray;
+            top: 25%;
+          }
+        }
+      }
+
+      .map-popup-panel-body {
+        background: fade(#152221, 75%);
+        border: 1px solid fade(@darkgray, 40);
+        border-top: 0px;
+
+        .table-form {
+          .text,
+          .unit {
+            font-weight: 400;
+          }
+
+          .unit {
+            min-width: auto;
+          }
+
+          .value,
+          .unit {
+            text-align: left;
+          }
+        }
+      }
+    }
+
+    .map-tool {
+      position: absolute;
+      right: 22px;
+      top: 22px;
+      z-index: 2;
+      background: #152221af;
+      padding: 18px 14px;
+
+      .m-btn {
+        width: 124px;
+        height: 44px;
+        background: #152221bf;
+        border: 1px solid #152221bf;
+        color: #ffffff;
+        transition: all 0.3s;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        cursor: pointer;
+
+        &:hover,
+        &.active {
+          background: #05bb4c33;
+          border: 1px solid #05bb4c;
+          color: #05bb4c;
+        }
+
+        + .m-btn {
+          margin-top: 16px;
+        }
+      }
+    }
+  }
+}
+</style>

+ 502 - 0
src/components/arcgis/XS_FDC.vue

@@ -0,0 +1,502 @@
+<template>
+  <div style="width: 100%; height: 100%">
+    <arcgis
+      class="arcgis-layer"
+      @when="when"
+      ref="arcgis"
+      :data="arcgisData"
+      @clickMap="clickMap"
+    >
+      <template
+        v-for="(fan, index) of fans"
+        :key="index"
+        v-slot:[fan.attributes.code]
+      >
+        <svg
+          v-if="fan.attributes.code != '升压站'"
+          @click="clickFan(fan.attributes.code)"
+          class="can-click esri-component"
+          version="1.1"
+          xmlns="http://www.w3.org/2000/svg"
+          xmlns:xlink="http://www.w3.org/1999/xlink"
+          viewBox="0 0 200 240"
+          enable-background="new 0 0 200 240"
+          xml:space="preserve"
+          width="66"
+          height="66"
+        >
+          <!-- 底座 -->
+          <g>
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][2]"
+              d="M100.681,156.137c24.579,0,44.505,8.548,44.505,19.094
+                            c0,10.545-19.926,19.093-44.505,19.093c-24.577,0-42.878-8.548-42.878-19.093C57.803,164.685,76.104,156.137,100.681,156.137z"
+            />
+          </g>
+          <!-- 后面的脑袋 -->
+          <g>
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][0]"
+              d="M92.875,76.372l27.897-18.417c0,0,4.108-0.096,7.891,2.681
+                                c4.305,3.156,1.86,9.235,1.86,9.235l-24.374,23.292L92.875,76.372z"
+            />
+          </g>
+          <!-- 柱 -->
+          <g>
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][0]"
+              d="M92.152,175.229h18.689l-4.876-94.254H97.84L92.152,175.229z"
+            />
+          </g>
+          <!-- 风扇 -->
+          <g>
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][1]"
+              d="M109.007,85.525l-16.061,0.268l7.396-83.773L109.007,85.525z"
+            />
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][1]"
+              d="M95.219,75.597l8.265,13.771l-76.25,35.483L95.219,75.597z
+                            M99.108,89.634l7.795-14.04l68.854,48.291L99.108,89.634z"
+            />
+            <animateTransform
+              v-if="fan.attributes.rotate"
+              attributeName="transform"
+              attributeType="XML"
+              type="rotate"
+              from="0 100 82"
+              to="359 100 82"
+              :dur="fan.attributes.dur + 's'"
+              repeatCount="indefinite"
+            />
+          </g>
+          <!-- 前面的尖 -->
+          <g>
+            <path
+              fill-rule="evenodd"
+              clip-rule="evenodd"
+              :fill="colors[fan.attributes.state][2]"
+              d="M92.863,72.903c0,0,13.912-0.343,17.098,4.352
+                            c2.984,4.397-2.58,15.473-2.58,15.473l-24.376,0.436L92.863,72.903z"
+            />
+          </g>
+          <!-- 文字 -->
+          <g>
+            <text
+              x="100"
+              y="240"
+              fill="#ffffff"
+              font-size="40"
+              text-anchor="middle"
+              alignment-baseline="baseline"
+            >
+              {{ fan.attributes.code }}
+            </text>
+          </g>
+        </svg>
+        <div v-if="fan.attributes.code == '升压站'">
+          <div class="syz-img">
+            <img :src="syzImg" />
+          </div>
+          <div class="white font-sm mr-t-8" style="text-align: center">
+            {{ fan.attributes.code }}
+          </div>
+        </div>
+      </template>
+    </arcgis>
+  </div>
+</template>
+
+<script>
+import arcgis from "./arcgis.vue";
+import dataService from "@/helper/data.js";
+
+export default {
+  // 名称
+  name: "Map",
+  // 使用组件
+  components: {
+    arcgis,
+  },
+  props: {
+    wpId: {
+      type: String,
+      default: "",
+    },
+  },
+  // 数据
+  data() {
+    return {
+      wpnumMap: {}, //风机监视数量
+      wpInfoMap: {}, //风机详情
+      fjmap: [], // 风机名
+      sourceId: "",
+      arcgisData: {
+        mode: "2D", // 模式 2D 3D
+        title: "宁夏地图", // 标题
+        center: [105.2139616, 37.15630397], // 初始中心点 106.230909, 38.487193
+        height: 654, // 3D地图初始相机高度
+        tilt: 65, // 俯视角
+        scale: 45000,
+        rotation: -45,
+        ox: -600,
+        oy: -50,
+      },
+      showPopup: false,
+      mapToolIndex: 0,
+      fans: [],
+      colors: {
+        0: ["#05bb4c", "#4ad476", "#9fedb2"],
+        1: ["#4b55ae", "#959dc7", "#d3d6e0"],
+        2: ["#BA3237", "#d4807d", "#eddad8"],
+        3: ["#606769", "#757575", "#AFAFAF"],
+        4: ["#e17e23", "#fabf78", "#ffebcc"],
+        5: ["#c531c7", "#e080dc", "#fadef7"],
+        6: ["#c531c7", "#e080dc", "#fadef7"],
+      },
+      syzImg: require("@assets/png/booster-station.png"),
+    };
+  },
+  created() {
+    let that = this;
+    that.sourceId = this.wpId;
+    that.$nextTick(() => {
+      that.requestData();
+    });
+  },
+  // 函数
+  methods: {
+    select(res) {
+      this.$router.replace({
+        path: `/monitor/windsite/map/${res.code}`,
+      });
+    },
+    // 风机状态监视
+    requestData() {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "monitor/findGeneralAppearance",
+        data: {
+          wpId: that.wpId,
+        },
+        success(res) {
+          if (res.code == 200) {
+            that.wpnumMap = res.data.fczbmap.jczbmap;
+            that.wpInfoMap = res.data.wxssmap;
+            that.fjmap = res.data.fjmap[0];
+			that.when();
+          }
+        },
+      });
+    },
+    when: function () {
+      let jsonObj = dataService.get("arcgis-xs");
+      this.fans = jsonObj;
+      jsonObj.forEach((item) => {
+        let obj = this.fjmap.find((t) => {
+          let wtid = t.wtId.replace("01_", "");
+          if (wtid == item.attributes.code) return t;
+        });
+        if (obj) {
+          item.attributes.state = String(obj.fjzt);
+        } else {
+          item.attributes.state = "4";
+        }
+        switch (item.attributes.state) {
+          case "0": //待机
+            item.attributes.rotate = false; // 转
+            item.attributes.dur = 8; // 转一圈时间
+            break;
+          case "1": //运行
+            item.attributes.rotate = true; // 转
+            item.attributes.dur = 2; // 转一圈时间
+            break;
+          case "2": //故障
+            item.attributes.rotate = false; // 不转
+            item.attributes.dur = 8;
+            break;
+          case "3": //中断
+            item.attributes.rotate = false; // 不转
+            item.attributes.dur = 8;
+            break;
+          case "4": //维护
+            item.attributes.rotate = false; // 不转
+            item.attributes.dur = 8;
+            break;
+          case "5": //限电
+            item.attributes.rotate = true; // 转
+            item.attributes.dur = 6;
+            break;
+          case "6": //停机
+            item.attributes.rotate = false; // 不转
+            item.attributes.dur = 8;
+            break;
+          default:
+            item.attributes.rotate = false;
+            item.attributes.dur = 8;
+            break;
+        }
+        this.$refs.arcgis.addHtmlPoint(
+          [item.geometry.x, item.geometry.y],
+          item.attributes.code,
+          33,
+          50,
+          false
+        );
+      });
+      let lineJsonObj = dataService.get("arcgis-xs-line");
+      this.$refs.arcgis.addFanByJson(jsonObj, lineJsonObj);
+    },
+    clickMap: function (info) {
+      console.log(info);
+    },
+    clickFan: function (code) {
+      let wtId = code.replace("G", "G01_");
+      this.$router.push(`/monitor/windsite/info/${this.wpId}/${wtId}`);
+    },
+    popupBack: function () {
+      this.showPopup = false;
+    },
+    clickMapTool: function (index) {
+      //   this.mapToolIndex = index;
+      this.showPopup = !this.showPopup;
+    },
+  },
+  watch: {
+    wpId(res) {
+      this.sourceId = res;
+      if (res) {
+        this.requestData();
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+@titleHeight: 40px;
+
+.map-1 {
+  width: 100%;
+  height: calc(100vh - 90px);
+  display: flex;
+  flex-direction: column;
+
+  .btn-group-tabs {
+    display: flex;
+    flex-direction: row;
+  }
+
+  .can-click {
+    cursor: pointer;
+  }
+
+  .syz-img {
+    width: 65px;
+    height: 47px;
+
+    img {
+      width: 100%;
+      height: 100%;
+    }
+  }
+
+  .panel-title {
+    width: 100%;
+    background-color: fade(@darkgray, 40%);
+    margin-top: 16px;
+    padding: 6px;
+    display: flex;
+    align-items: center;
+
+    .panel-title-name {
+      color: @green;
+      display: flex;
+      align-items: center;
+      line-height: 0;
+      font-size: 0;
+
+      i,
+      span {
+        margin: 0 0 0 16px;
+        line-height: 0;
+        font-size: 13px;
+      }
+    }
+
+    .sub-title-item {
+      display: flex;
+      align-items: center;
+      margin-left: 16px;
+
+      .sub-title {
+        font-size: 13px;
+        margin-left: 6px;
+      }
+
+      .sub-count {
+        font-size: 13px;
+        font-weight: 500;
+      }
+
+      img {
+        height: 31px;
+      }
+    }
+  }
+
+  .panel-body {
+    flex-grow: 1;
+    background-color: fade(@darkgray, 20%);
+    padding: 8px;
+    overflow: auto;
+    position: relative;
+
+    .arcgis-layer {
+      z-index: 1;
+    }
+
+    .map-popup-panel {
+      width: 760px;
+      position: absolute;
+      left: 71px;
+      top: 22px;
+      z-index: 2;
+
+      .map-popup-panel-header {
+        width: 100%;
+        background: fade(#152221, 90%);
+        display: flex;
+
+        .map-popup-panel-title {
+          padding: 17px 24px;
+          font-size: @fontsize-s;
+          position: relative;
+
+          &::before,
+          &::after {
+            position: absolute;
+            width: calc(50% - 6px);
+            bottom: 0;
+            border-bottom: 2px solid @green;
+          }
+
+          &::before {
+            content: "";
+            left: 0;
+          }
+
+          &::after {
+            content: "";
+            right: 0;
+          }
+
+          span {
+            position: absolute;
+            width: 11.3px;
+            height: 11.3px;
+            border-left: 2px solid @green;
+            border-top: 2px solid @green;
+            left: calc(50% - 5.65px);
+            bottom: -3px;
+            transform: rotate(45deg);
+          }
+        }
+
+        .map-popup-panel-date {
+          flex-grow: 1;
+          padding: 17px 24px;
+          font-size: @fontsize-s;
+          text-align: right;
+          border-bottom: 2px solid @green;
+        }
+
+        .map-popup-panel-back {
+          margin-left: auto;
+          width: 54px;
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          position: relative;
+          cursor: pointer;
+
+          &::after {
+            content: "";
+            position: absolute;
+            left: 0;
+            height: 50%;
+            border-left: 1px solid @gray;
+            top: 25%;
+          }
+        }
+      }
+
+      .map-popup-panel-body {
+        background: fade(#152221, 75%);
+        border: 1px solid fade(@darkgray, 40);
+        border-top: 0px;
+
+        .table-form {
+          .text,
+          .unit {
+            font-weight: 400;
+          }
+
+          .unit {
+            min-width: auto;
+          }
+
+          .value,
+          .unit {
+            text-align: left;
+          }
+        }
+      }
+    }
+
+    .map-tool {
+      position: absolute;
+      right: 22px;
+      top: 22px;
+      z-index: 2;
+      background: #152221af;
+      padding: 18px 14px;
+
+      .m-btn {
+        width: 124px;
+        height: 44px;
+        background: #152221bf;
+        border: 1px solid #152221bf;
+        color: #ffffff;
+        transition: all 0.3s;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        cursor: pointer;
+
+        &:hover,
+        &.active {
+          background: #05bb4c33;
+          border: 1px solid #05bb4c;
+          color: #05bb4c;
+        }
+
+        + .m-btn {
+          margin-top: 16px;
+        }
+      }
+    }
+  }
+}
+</style>

+ 0 - 1
src/components/arcgis/arcgis.vue

@@ -9,7 +9,6 @@
                 </div>
             </div>
         </teleport>
-        
     </div>
 </template>
 

+ 3 - 1
src/components/chart/bar/multiple-bar-chart.vue

@@ -280,7 +280,9 @@ export default {
     },
   },
   methods: {
-    resize() {},
+    resize() {
+      this.initChart();
+    },
     initChart() {
       let chart = echarts.init(this.$el);
 

+ 1 - 1
src/components/chart/combination/bar-line-chart.vue

@@ -77,7 +77,7 @@ export default {
     // 颜色
     color: {
       type: Array,
-      default: () => ["#323E6F", "#e17e23", "#ba3237#", "c531c7", "#ffffff", "#EDEB2F"],
+      default: () => ["#323E6F", "#e17e23", "#ba3237", "#c531c7", "#ffffff", "#EDEB2F"],
     },
     // 每页显示个数
     pageSize: {

+ 23 - 11
src/components/chart/combination/scatter-line-chart.vue

@@ -606,14 +606,24 @@ export default {
     },
     legend() {
       let result = [];
-      if (this.data && this.data.length > 0)
-        result.push(
-          this.data.map((t) => {
-            return t.title;
-          })
-        );
 
-      if (this.lineData && this.lineData.legends && this.lineData.legends.legends > 0) result.push(this.lineData.legends);
+      // if (this.data && this.data.length > 0)
+      //   result.push(
+      //     this.data.map((t) => {
+      //       return t.title;
+      //     })
+      //   );
+
+      // if (this.lineData && this.lineData.legends && this.lineData.legends.legends > 0) result.push(this.lineData.legends);
+
+      this.data.forEach((ele) => {
+        result.push(ele.title);
+      });
+
+      this.lineData.legends.forEach((ele) => {
+        result.push(ele);
+      });
+
       return result;
     },
   },
@@ -641,13 +651,15 @@ export default {
             fontSize: util.vh(16),
             color: "#fff",
           },
-          formatter: function(params) {
+          formatter(params) {
             if (params.componentType == "markLine") {
               return params.name + "<br />" + params.value;
             }
             var msg = params.seriesName + "<br />";
-            msg += params.marker + that.xTitle + ":" + params.value[0] + "<br />";
-            msg += params.marker + that.yTitle + ":" + params.value[1] + "<br />";
+            msg +=
+              params.marker + that.xTitle + ":" + params.value[0] + "<br />";
+            msg +=
+              params.marker + that.yTitle + ":" + params.value[1] + "<br />";
             return msg;
           },
           axisPointer: {
@@ -749,7 +761,7 @@ export default {
       chart.clear();
       chart.setOption(option);
 
-      this.resize = function() {
+      this.resize = function () {
         chart.resize();
       };
 

+ 1 - 1
src/components/coms/table/table-qc.vue

@@ -491,7 +491,7 @@ export default {
 
 <style lang="less">
 .chart {
-  width: 1000px;
+  width: 100%;
   height: 500px;
 }
 </style>

+ 61 - 38
src/components/other/healthReport/index.vue

@@ -98,9 +98,9 @@
               </p>
               <p>
                 统计期内故障发生{{
-                  Number(faultclass[0] ? faultclass[0].monthwarningnum : 0) +
-                  Number(faultclass[1] ? faultclass[1].monthwarningnum : 0) +
-                  Number(faultclass[2] ? faultclass[2].monthwarningnum : 0)
+                  Number(faultclass[0] ? faultclass[0].monthwarningnum : 48) +
+                  Number(faultclass[1] ? faultclass[1].monthwarningnum : 72) +
+                  Number(faultclass[2] ? faultclass[2].monthwarningnum : 96)
                 }}次
               </p>
               <p class="red" v-if="faultclass[0]">
@@ -138,10 +138,14 @@
           <el-form-item class="text-indent-2">
             统计周期内,曲线偏差率-5%,其中风速在3-5m/s区间曲线偏差率10%,风速在5-11m/s区间曲线偏差率为-8%,风速在11-25m/s区间曲线偏差率为3%,总体低于该型号机组平均值(3%)。
           </el-form-item>
-          <div class="logHead">功率曲线拟合</div>
-          <double-line-chart :height="'250px'" :list="glqxnh" />
-          <div class="logHead">曲线偏差率</div>
-          <normal-line-chart :list="qxpcls" />
+          <div v-if="healthreport.glqxnh">
+            <div class="logHead">功率曲线拟合</div>
+            <double-line-chart :height="'250px'" :list="glqxnh" />
+          </div>
+          <div v-if="healthreport.qxpcls">
+            <div class="logHead">曲线偏差率</div>
+            <normal-line-chart :list="qxpcls" />
+          </div>
         </el-form>
       </div>
 
@@ -173,27 +177,34 @@
               healthreport.descriptiondfpcl
             }};(如果需要查看在每一个功率等高线下偏航对风偏差角度信号在角度数值上的聚集程度,可参考能效分析中对风偏差分析模块)
           </el-form-item>
-          <div class="logHead">对风偏差率(频次)</div>
-          <DoubleLineChart
-            style="margin: 10px 0"
-            width="100%"
-            height="300px"
-            :list="dfpc.nipples"
-          />
-          <div class="logHead">对风偏差率(功率)</div>
-          <DoubleLineChart
-            style="margin: 10px 0"
-            width="100%"
-            height="300px"
-            :list="dfpc.dfpclpowers"
-          />
-          <div class="logHead">对风偏差率(风速)</div>
-          <DoubleLineChart
-            style="margin: 10px 0"
-            width="100%"
-            height="300px"
-            :list="dfpc.dfpclSpeeds"
-          />
+
+          <div v-if="healthreport.nipples">
+            <div class="logHead">对风偏差率(频次)</div>
+            <DoubleLineChart
+              style="margin: 10px 0"
+              width="100%"
+              height="300px"
+              :list="dfpc.nipples"
+            />
+          </div>
+          <div v-if="healthreport.dfpclpowers">
+            <div class="logHead">对风偏差率(功率)</div>
+            <DoubleLineChart
+              style="margin: 10px 0"
+              width="100%"
+              height="300px"
+              :list="dfpc.dfpclpowers"
+            />
+          </div>
+          <div v-if="healthreport.dfpclSpeeds">
+            <div class="logHead">对风偏差率(风速)</div>
+            <DoubleLineChart
+              style="margin: 10px 0"
+              width="100%"
+              height="300px"
+              :list="dfpc.dfpclSpeeds"
+            />
+          </div>
         </el-form>
       </div>
 
@@ -891,18 +902,24 @@
           <el-form-item class="imp fw"><b>推荐检修方案</b></el-form-item>
           <el-form-item class="imp fw text-indent-2">故障预测</el-form-item>
           <el-form-item class="text-indent-4"
-            >高频:{{ datas.highfrequency }}</el-form-item
+            >高频:{{
+              datas.highfrequency ? datas.highfrequency : "暂无数据"
+            }}</el-form-item
           >
           <el-form-item class="text-indent-4"
-            >中频:{{ datas.mediatefrequency }}</el-form-item
+            >中频:{{
+              datas.mediatefrequency ? datas.mediatefrequency : "暂无数据"
+            }}</el-form-item
           >
           <el-form-item class="m-b-10 text-indent-4"
             >低频:{{
-              datas.fowfrequency == "null" ? "暂无数据" : datas.fowfrequency
+              datas.fowfrequency ? datas.fowfrequency : "暂无数据"
             }}</el-form-item
           >
           <el-form-item class="text-indent-2"
-            >推荐检修理由:{{ datas.reason }}</el-form-item
+            >推荐检修理由:{{
+              datas.reason ? datas.reason : "暂无数据"
+            }}</el-form-item
           >
           <el-form-item class="text-indent-2"
             >推荐检修日期:{{
@@ -910,13 +927,19 @@
             }}</el-form-item
           >
           <el-form-item class="text-indent-2"
-            >推荐排查方法:{{ datas.troublemethods }}</el-form-item
+            >推荐排查方法:{{
+              datas.troublemethods ? datas.troublemethods : "暂无数据"
+            }}</el-form-item
           >
           <el-form-item class="text-indent-2"
-            >推荐处理方法:{{ datas.processingmethod }}</el-form-item
+            >推荐处理方法:{{
+              datas.processingmethod ? datas.processingmethod : "暂无数据"
+            }}</el-form-item
           >
           <el-form-item class="text-indent-2"
-            >推荐工具器:{{ datas.tools }}</el-form-item
+            >推荐工具器:{{
+              datas.tools ? datas.tools : "暂无数据"
+            }}</el-form-item
           >
           <el-form-item class="text-indent-2"
             >平均消缺时长:{{
@@ -1734,6 +1757,9 @@ export default {
 
     // 获取报告详情
     getReport(wtid, recorddate) {
+      if (wtid == undefined) {
+        return;
+      }
       let that = this;
       let reqData = this.params;
       that.API.requestData({
@@ -1796,7 +1822,6 @@ export default {
                 value: [],
               },
             ];
-            console.log(11111, res.data.healthreport.qxpcls);
             if (res.data.healthreport.qxpcls) {
               let qxpcl = res.data.healthreport.qxpcls.sort(
                 that.compare("date")
@@ -1813,7 +1838,6 @@ export default {
                   });
                 }
                 that.qxpcls = qxpcls;
-                console.log(11111, that.qxpcls);
               }
             }
 
@@ -2541,7 +2565,6 @@ export default {
   watch: {
     show(value) {
       this.dialogVisible = value;
-      // console.log(value)
       // if (value) {
       //   this.datas();
       // }

+ 25 - 2
src/router/index.js

@@ -151,7 +151,7 @@ const routes = [{
 },
 {
 	path: "/decision/zbtjfx", // 节能减排KPI
-	name: "decision1",
+	name: "zbtjfx",
 	component: () =>
 		import( /* webpackChunkName: "decision1" */ "../views/Decision/zbtjfx.vue"),
 },
@@ -395,6 +395,16 @@ const routes = [{
 	component: () => import("../views/HealthControl/assess/assessconfig.vue")
 },
 {
+	path: "/health/zhpj/yxpj",//运行评价
+	name: "yxpj",
+	component: () => import("../views/HealthControl/zhpj/yxpj.vue")
+},
+{
+	path: "/health/zhpj/jxpj",//检修评价
+	name: "jxpj",
+	component: () => import("../views/HealthControl/zhpj/jxpj.vue")
+},
+{
 	path: "/health/gzzd/malfunctionDiagnose", // 故障诊断
 	name: "malfunctionDiagnose",
 	component: () => import("../views/malfunctionDiagnose/index.vue")
@@ -459,7 +469,14 @@ const routes = [{
 		name: "health10",
 		component: () =>
 			import( /* webpackChunkName: "health8" */ "../views/HealthControl/Health10.vue"),
-	}, {
+	}, 
+	{
+		path: "healthLineChart/:wpId/:wtId", // 健康趋势
+		component: () =>
+			import( /* webpackChunkName: "healthLineChart2" */
+				"../views/HealthControl/healthLineChart.vue"),
+	},
+	{
 		path: "healthLineChart2/:wpId/:wtId", // 健康趋势
 		component: () =>
 			import( /* webpackChunkName: "healthLineChart2" */
@@ -827,6 +844,12 @@ const routes = [{
 	name: "knowledgeBase",
 	component: () => import("../views/sampleDatabase/knowledgeBase/index.vue")
 },
+//发电能力分析
+// {
+// 	path: "/others/abilityAnalysis",
+// 	name: "abilityAnalysis",
+// 	component: () => import("../views/sampleDatabase/abilityAnalysis/index.vue")
+// },
 //智能营销样本库
 {
 	path: "/others/market",

+ 1 - 1
src/views/Decision/Decision1.vue

@@ -94,7 +94,7 @@
           </div>
         </div>
       </div>
-      <div class="query-actions">
+      <div class="query-actions" style="margin-left:0px">
         <button class="btn green">搜索</button>
         <button class="btn" @click="mxClick()">明细信息</button>
         <button class="btn" @click="exportExcel()">导出</button>

+ 8 - 1
src/views/Decision/Decision3Db.vue

@@ -45,7 +45,7 @@
           </div>
         </div>
         <div class="query-item">
-          <div class="lable">开始日期:</div>
+          <div class="lable">日期:</div>
           <div class="search-input">
             <el-date-picker
               v-model="value4"
@@ -385,6 +385,7 @@ export default {
           date: that.value4,
         },
         success(res) {
+			console.log(res)
           var data = res.data;
 
           var arrName = [],
@@ -430,6 +431,7 @@ export default {
               value: arr,
             });
           }
+		  console.log(tempArray)
           that.list = tempArray;
         },
       });
@@ -452,6 +454,11 @@ export default {
       // 重置状态end
     },
   },
+  watch: {
+      value4(){
+          this.AjaxCommon();
+      }
+  }
 };
 </script>
 

+ 6 - 26
src/views/HealthControl/Health0.vue

@@ -199,7 +199,7 @@
         </el-row>
       </el-col>
     </el-row>
-    <health-report :show="reportshow" :params="reportparams" @closed="closed"/>
+    <health-report :show="reportshow" :params="reportparams" ref="eport" @closed="closed"/>
   </div>
 </template>
 
@@ -223,28 +223,7 @@ export default {
       reportshow: false, //是否显示健康报告
       reportparams: undefined,
       bsxImg: require("@assets/png/bsx.png"),
-      options: [
-        {
-          value: "选项1",
-          label: "黄金糕",
-        },
-        {
-          value: "选项2",
-          label: "双皮奶",
-        },
-        {
-          value: "选项3",
-          label: "蚵仔煎",
-        },
-        {
-          value: "选项4",
-          label: "龙须面",
-        },
-        {
-          value: "选项5",
-          label: "北京烤鸭",
-        },
-      ],
+      options: [],
       wtid:'',
       wpid:'',
       options1:[],
@@ -720,9 +699,11 @@ export default {
   methods: {
     // 查看健康报告
     onClickReport(){
-      console.warn('查看健康报告');
+		// console.log(this.value2,new Date(new Date()).formatDate("yyyy-MM-dd"))
+      
       this.reportshow = true
-      this.reportparams = {wtId: this.value2, recorddate: new Date(new Date()).formatDate("yyyy-MM-dd")}
+      // this.reportparams = {wtId: this.value2, recorddate: new Date(new Date()).formatDate("yyyy-MM-dd")}
+	  this.$refs.eport.getReport(this.value2,new Date(new Date()).formatDate("yyyy-MM-dd"));
     },
     // 关闭健康报告
     closed(){
@@ -810,7 +791,6 @@ export default {
              wtId : this.value2
         },
         success(res) {
-          console.log('findWtHealthInfo:',res)
           that.yxtableData.data = res.data.bjyxls;
           that.tableData2.data =  res.data.djpgls;
         },

+ 4 - 2
src/views/HealthControl/Health10.vue

@@ -92,7 +92,8 @@
     </div>
     <HealthReport
       :show="healthReportShow"
-      :params="{ wtId: this.wtId, recorddate: this.recorddate }"
+      :params="reportparams"
+	  ref="eport"
       @closed="
         (res) => {
           this.healthReportShow = false;
@@ -167,8 +168,9 @@ export default {
               return "<div style='border: 1px solid #182238;background: #303f6e;width: 70%;margin: 0 auto;color:#FFF;cursor: pointer;'>查看报告</div>";
             },
             click(e, row) {
-              that.recorddate = row.date;
+              // that.recorddate = row.date;
               that.healthReportShow = true;
+			  that.$refs.eport.getReport(that.wtId,row.date);
             },
           },
         ],

+ 4 - 4
src/views/HealthControl/Health6.vue

@@ -41,12 +41,12 @@
     <row :type="'flex'" class="mg-b-16">
       <Col :span="12">
         <panel :title="'报警统计图'" :showLine="false">
-          <dual-pie-chart :innerData="healPieData" :outerData="healPieData" :height="'250px'" />
+          <dual-pie-chart :innerData="healPieData" :outerData="healPieData" :height="'230px'" />
         </panel>
       </Col>
       <Col :span="12">
         <panel :title="'故障统计图'" :showLine="false">
-          <dual-pie-chart :innerData="stopPieData" :outerData="stopPieData" :height="'250px'" />
+          <dual-pie-chart :innerData="stopPieData" :outerData="stopPieData" :height="'230px'" />
         </panel>
       </Col>
       <!-- <Col :span="16">
@@ -63,12 +63,12 @@
     </row>
     <div class="mg-b-16">
       <panel :title="'健康状态占比'" :showLine="false">
-        <bar-line-chart :bardata="barData" :lineData="[]" :height="'250px'" :pageSize="6" />
+        <bar-line-chart :bardata="barData" :lineData="[]" :height="'230px'" :pageSize="6" />
       </panel>
     </div>
     <div class="mg-b-16 curStyle">
       <panel :title="'健康趋势'" :showLine="false">
-        <MultipleLineChart :list="statusData" :units="['']" :height="'250px'" />
+        <MultipleLineChart :list="statusData" :units="['']" :height="'230px'" />
       </panel>
       <div class="selections">
         <div class="item" @click="changeStatus('1')" :class="{ green: status === '1' }">

+ 2 - 2
src/views/HealthControl/HealthTab1.vue

@@ -150,9 +150,9 @@ export default {
       this.reportshow = true;
       this.reportparams = {
         wtId: item.wtid,
-        recorddate: new Date(item.createdate).formatDate("yyyy-MM-dd"),
+        recorddate: recorddate,
       };
-	  // this.$refs.eport.getReport(item.wtid,recorddate);
+	  this.$refs.eport.getReport(item.wtid,recorddate);
     },
     // 关闭健康报告
     closed() {

+ 1 - 0
src/views/HealthControl/assess/assessindex.vue

@@ -456,6 +456,7 @@ export default {
           this.shows = "y";
           this.dialogTitle = "年信息对比";
         }
+        this.getTable(this.date);
       });
     },
     // 场站

+ 3 - 1
src/views/HealthControl/assess/selfEvaluate.vue

@@ -341,6 +341,7 @@ export default {
                 for (let key in ele) {
                   if (key.indexOf("target") !== -1) {
                     ele["copyValue"] = ele[key]["value"];
+                    ele[key] = ele[key]["value"];
                   }
                 }
               });
@@ -351,7 +352,7 @@ export default {
                 if (key.indexOf("target") !== -1) {
                   tableData.column.push({
                     name: tableTargetName[key],
-                    field: "copyValue",
+                    field: key,
                     is_num: true,
                     is_light: false,
                     sortable: true,
@@ -388,6 +389,7 @@ export default {
           this.shows = "y";
           this.dialogTitle = "年信息对比";
         }
+        this.getTable(this.date);
       });
     },
     // 场站

+ 136 - 0
src/views/HealthControl/zhpj/dayinfo.vue

@@ -0,0 +1,136 @@
+<template>
+	<div class="health-day-info">
+		<div class="header">
+			<span class="herder-info" :width="800" v-for="item of gridDatas" :key="item">场站:{{ item.wpid }}</span>
+			<span class="herder-info">基础指标</span>
+		</div>
+		<div class="body">
+			<div class="left">
+				<table class="table-form">
+					<tr>
+						<td class="white" v-for="item of gridDatas" :key="item">
+							等级:{{ item.grade }}
+						</td>
+					</tr>
+					<tr>
+						<td class="white" v-for="item of gridDatas" :key="item">
+							综合排名:{{ item.zpm }}
+						</td>
+					</tr>
+				</table>
+
+				<div class="chart-body">
+					<normal-radar-chart :height="'500px'" :value="chartDatas" />
+				</div>
+			</div>
+			<div class="left">
+				<table class="table-form">
+					<tr>
+						<td class="white">指标</td>
+						<td class="white" v-for="item of gridDatas" :key="item">
+							{{ item.wpid }}
+						</td>
+						<td class="white" :colspan="gridDatas.length">排名</td>
+						<td class="white" colspan="2">评分</td>
+					</tr>
+					<tr v-for="item of column" :key="item">
+						<td class="white">{{ item.name }}</td>
+						<td class="white" v-for="row of gridDatas" :key="row">
+							{{ row[item.field] }}
+						</td>
+						<td class="white" v-for="row of gridDatas" :key="row">
+							{{ row[item.rank] }}
+						</td>
+						<td class="white" v-for="row of gridDatas" :key="row">
+							{{ row[item.score] ? row[item.score] : 0 }}
+						</td>
+					</tr>
+				</table>
+			</div>
+		</div>
+	</div>
+</template>
+
+<script>
+	import NormalRadarChart from "../../../components/chart/radar/normal-radar-chart.vue";
+	export default {
+		components: {
+			NormalRadarChart
+		},
+		props: {
+			gridDatas: {},
+			chartDatas: {},
+			column: []
+		},
+		data() {
+			return {
+				value: "",
+				radarValue: [{
+					indicator: [
+						"复位及时率(%)", "mttf", "缺陷下单及时率(%)", "缺陷验收及时率(%)", "设备利用小时", "限电损失率(%)", "性能损失率(%)",
+						"综合场用电量", "状态转换及时率(%)"
+					],
+					data: [{
+							value: [
+								44200, 14200, 20000, 35000, 50000, 38000, 44200, 14200, 20000,
+								35000,
+							],
+							name: "NAME1",
+						},
+						{
+							value: [
+								35000, 44200, 14200, 20000, 35000, 50000, 38000, 44200, 14200,
+								20000,
+							],
+							name: "NAME2",
+						},
+					],
+				}, ],
+			};
+		},
+	};
+</script>
+
+<style lang="less">
+	.health-day-info {
+		.header {
+			display: flex;
+			width: 100%;
+			height: 40px;
+			line-height: 40px;
+			background: fade(@gray, 60);
+			color: @white;
+
+			.herder-info {
+				flex: 1 0 25%;
+				text-align: center;
+				font-size: @fontsize-s;
+
+				&:last-child {
+					flex: 1 0 50%;
+				}
+			}
+		}
+
+		.body {
+			display: flex;
+
+			.left {
+				flex: 0 0 50%;
+
+				display: flex;
+				flex-direction: column;
+
+				.chart-body {
+					flex-grow: 1;
+					display: flex;
+					align-items: center;
+				}
+			}
+
+			.right {
+				flex: 0 0 50%;
+			}
+		}
+	}
+</style>

+ 424 - 0
src/views/HealthControl/zhpj/jxpj.vue

@@ -0,0 +1,424 @@
+<template>
+	<div>
+		<div class="query mg-b-8">
+			<div class="query-items">
+				<div class="query-item">
+					<div class="lable">年月:</div>
+					<div class="search-input">
+						<el-date-picker v-model="date" type="month" placeholder="选择年月" popper-class="date-select"
+							value-format="YYYY-MM"></el-date-picker>
+					</div>
+				</div>
+				<div class="query-actions">
+					<button class="btn green" @click="handleSubmit">查询</button>
+					<button class="btn green" @click="contrast">对比</button>
+				</div>
+			</div>
+		</div>
+		<div class="table-box">
+			<div class="title">运行评价</div>
+			<ComTable ref="curRef" :data="tableData" :pageSize="20" :pageable="false" height="73vh"
+				v-loading="tableLoading" element-loading-text="拼命加载中.." element-loading-background="rgba(0, 0, 0, 0.8)">
+			</ComTable>
+		</div>
+		<el-dialog title="运行评价对比" v-model="dialogVisible" width="70%" top="10vh" custom-class="modal">
+			<dayinfo :gridDatas="dialogData1" :chartDatas="dialogData2" :column='column' />
+		</el-dialog>
+	</div>
+</template>
+<script>
+	import ComTable from "@/components/coms/table/table-unpage.vue";
+	import Dayinfo from "./dayinfo.vue";
+
+	export default {
+		name: "gradeassessment",
+		components: {
+			ComTable,
+			Dayinfo
+		},
+		data() {
+			let that = this;
+			return {
+				dialogVisible: false,
+				date: "",
+				tableLoading: true,
+				dataIds: new Set(),
+				dialogData1: [],
+				dialogData2: [],
+				column: [],
+				indicator: ["风能利用率(%)","计划检修损失率(%)","非计划检修损失率(%)","缺陷下单及时率(%)","到达消缺地点及时率(%)","真实消缺及时率(%)","MTBF(小时)","MTTR(小时)"],
+				tableData: {
+					column: [{
+							name: "",
+							field: "fj",
+							is_num: false,
+							is_light: false,
+							sortable: false,
+							width: '70px',
+							template: () => {
+								return "<input class='check curCheckBox checkItem' type='CheckBox'/>";
+							},
+							click: function(event, data) {
+								if (event.target.checked == false) {
+									that.dataIds.delete(data.id);
+								}
+								if (event.target.checked) {
+									if (that.dataIds.size < 2) {
+										that.dataIds.add(data.id);
+									} else {
+										event.target.checked = false;
+									}
+								}
+							},
+						},
+						{
+							name: "场站",
+							field: "wpid",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "综合排名",
+							field: "zpm",
+							is_num: false,
+							is_light: false,
+							width: '100px',
+						},
+						{
+							name: "等级",
+							field: "grade",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+							width: '70px',
+						},
+						{
+							name: "风能利用率(%)",
+							field: "fnlyl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "计划检修损失率(%)",
+							field: "jhjxssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "非计划检修损失率(%)",
+							field: "fjhjxssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "缺陷单接单及时率(%)",
+							field: "qxdjdjsl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "到达消缺地点及时率(%)",
+							field: "ddxqddjsl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "真实消缺及时率(%)",
+							field: "zsxqjsl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "MTBF(小时)",
+							field: "mtbf",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "MTTR(小时)",
+							field: "mttr",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "操作",
+							field: "sjbz",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+							id: "id",
+							template: () => {
+								return "<el-button type='text' style='cursor: pointer;'>详情</el-button>";
+							},
+							click: function(event, data) {
+								that.contrast(that.dataIds.add(data.id))
+							},
+						},
+					],
+					data: [],
+				},
+			};
+		},
+		created() {
+			this.date = this.getDate();
+			this.getTable(this.date);
+		},
+		methods: {
+			clearCheckBox() {
+				this.$refs.curRef.clearCheckBox();
+				this.dataIds = new Set();
+			},
+			// 获取表格数据
+			getTable() {
+				let that = this;
+				that.tableLoading = true;
+				that.API.requestData({
+					timeout: 60000,
+					method: "GET",
+					baseURL: "http://10.155.32.4:8034",
+					subUrl: '/evaluation/maintenance',
+					data: {
+						month: that.date
+					},
+					success(res) {
+						that.tableLoading = false;
+						if (res.code === 200) {
+							var data = [];
+							res.data.forEach((item, index) => {
+								item["index"] = index;
+								data[index] = item;
+							});
+							that.tableData.data = data;
+						}
+					},
+					Error(res) {
+						console.log("tag", res);
+					},
+				});
+			},
+			// 查询
+			handleSubmit() {
+				this.clearCheckBox();
+				this.getTable(this.date);
+			},
+			// 日信息对比
+			contrast(one) {
+				var that = this;
+				if (that.dataIds.size == 2 || one) {
+					that.dialogVisible = true;
+					const tmpArr = Array.from(that.dataIds);
+					if (one) {
+						const data = {
+							gaid1: tmpArr[0]
+						};
+					} else {
+						const data = {
+							gaid1: tmpArr[0],
+							gaid2: tmpArr[1],
+						};
+					}
+					const dialogData1 = [];
+					that.tableData.data.forEach(ele => {
+						tmpArr.forEach(ele2 => {
+							if (ele.id == ele2) {
+								dialogData1.push(ele)
+							}
+						})
+					})
+					that.dialogData1 = dialogData1;
+					const chartData = [{
+						indicator: that.indicator,
+						data: [],
+					}];
+					const data1 = [],
+						data2 = [];
+					let column = [];
+					chartData[0].indicator.forEach(ele => {
+						that.tableData.column.forEach(ele2 => {
+							if (ele2.name == ele) {
+								column.push({
+									name: ele,
+									field: ele2.field,
+									rank: ele2.field + 'pm',
+									score: ele2.field + 'pf'
+								})
+								let data1Name = '',
+									data2Name = '';
+								dialogData1.forEach((ele3, index3) => {
+									if (index3 == 0) {
+										data1.push({
+											name: ele,
+											data1: ele3[ele2.field]
+										})
+										data1Name = ele3.wpid
+									}
+
+									if (that.dataIds.size == 2) {
+										if (index3 == 1) {
+											data2.push({
+												name: ele,
+												data1: ele3[ele2.field]
+											})
+											data2Name = ele3.wpid
+										}
+									}
+								})
+								data1.push({
+									name: data1Name
+								});
+								if (that.dataIds.size == 2) {
+									data2.push({
+										name: data2Name
+									});
+								}
+							}
+						})
+					})
+					that.column = column;
+					if (data1) {
+						chartData[0].data.push(that.getChartData(data1, chartData[0].indicator));
+					}
+					if (that.dataIds.size == 2) {
+						if (data2) {
+							chartData[0].data.push(that.getChartData(data2, chartData[0].indicator));
+						}
+					}
+					that.dialogData2 = chartData;
+				}
+				this.clearCheckBox();
+			},
+			getChartData(resData, indicator) {
+				const chartData = {};
+				const rowMap = {};
+				resData.forEach(function(rowData, index) {
+					rowMap[rowData["name"]] = rowData["data1"];
+				});
+				chartData["name"] = resData[resData.length - 1]["name"];
+				chartData["value"] = [];
+				indicator.forEach(ele => {
+					chartData["value"].push(rowMap[ele]);
+				})
+				return chartData;
+			},
+			// 获取日期
+			getDate() {
+				var date = new Date();
+				var year = date.getFullYear(),
+					month = date.getMonth() + 1,
+					day = date.getDate() - 1;
+				month >= 1 && month <= 9 ? (month = "0" + month) : "";
+				day >= 0 && day <= 9 ? (day = "0" + day) : "";
+				return year + "-" + month;
+			},
+		},
+	};
+</script>
+<style scoped>
+	.newsDiv {
+		color: rgba(255, 255, 255, 0.75);
+		background-color: rgba(255, 255, 255, 0.1);
+		margin-bottom: 8px;
+		line-height: 3.4259vh;
+		padding: 0 15px;
+	}
+
+	.newspan {
+		line-height: 30px;
+		cursor: pointer;
+		padding: 0 1vw;
+		margin: 0 2px;
+		color: #9ca5a8;
+		transition: color 0.2s ease-in-out;
+		position: relative;
+	}
+
+	.newspan:hover {
+		background: linear-gradient(to top,
+				rgba(5, 187, 76, 0.5),
+				rgba(5, 187, 76, 0));
+		color: white;
+		position: relative;
+	}
+
+	.newspan:hover::after {
+		content: "";
+		position: absolute;
+		width: 100%;
+		height: 0.463vh;
+		border: 0.093vh solid #05bb4c;
+		border-top: 0;
+		left: 0;
+		bottom: 0;
+		box-sizing: border-box;
+	}
+
+	.active {
+		background: linear-gradient(to top,
+				rgba(5, 187, 76, 0.5),
+				rgba(5, 187, 76, 0));
+		color: white;
+		position: relative;
+	}
+
+	.active::after {
+		content: "";
+		position: absolute;
+		width: 100%;
+		height: 0.463vh;
+		border: 0.093vh solid #05bb4c;
+		border-top: 0;
+		left: 0;
+		bottom: 0;
+		box-sizing: border-box;
+	}
+
+	.title {
+		background: rgba(255, 255, 255, 0.1);
+		margin-bottom: 8px;
+		padding: 1vh;
+	}
+</style>
+<style lang="less">
+	.decision-page-2 {
+		.content .project-table {
+			tbody {
+				height: calc(100vh - 24.5vh);
+			}
+		}
+
+		.project-table {
+			overflow: auto;
+
+			tbody {
+				height: 239px;
+			}
+
+			th,
+			td {
+				color: #b2bdc0;
+
+				&:nth-child(1) {
+					width: 50px;
+				}
+
+				&:nth-child(2) {
+					width: 50px;
+				}
+			}
+		}
+
+		.action {
+			text-decoration: underline;
+			color: @green;
+			cursor: pointer;
+		}
+	}
+</style>

+ 441 - 0
src/views/HealthControl/zhpj/yxpj.vue

@@ -0,0 +1,441 @@
+<template>
+	<div>
+		<div class="query mg-b-8">
+			<div class="query-items">
+				<div class="query-item">
+					<div class="lable">年月:</div>
+					<div class="search-input">
+						<el-date-picker v-model="date" type="month" placeholder="选择年月" popper-class="date-select"
+							value-format="YYYY-MM"></el-date-picker>
+					</div>
+				</div>
+				<div class="query-actions">
+					<button class="btn green" @click="handleSubmit">查询</button>
+					<button class="btn green" @click="contrast">对比</button>
+				</div>
+			</div>
+		</div>
+		<div class="table-box">
+			<div class="title">运行评价</div>
+			<ComTable ref="curRef" :data="tableData" :pageSize="20" :pageable="false" height="73vh"
+				v-loading="tableLoading" element-loading-text="拼命加载中.." element-loading-background="rgba(0, 0, 0, 0.8)">
+			</ComTable>
+		</div>
+		<el-dialog title="运行评价对比" v-model="dialogVisible" width="70%" top="10vh" custom-class="modal">
+			<dayinfo :gridDatas="dialogData1" :chartDatas="dialogData2" :column='column' />
+		</el-dialog>
+	</div>
+</template>
+<script>
+	import ComTable from "@/components/coms/table/table-unpage.vue";
+	import Dayinfo from "./dayinfo.vue";
+
+	export default {
+		name: "gradeassessment",
+		components: {
+			ComTable,
+			Dayinfo
+		},
+		data() {
+			let that = this;
+			return {
+				dialogVisible: false,
+				date: "",
+				tableLoading: true,
+				dataIds: new Set(),
+				dialogData1: [],
+				dialogData2: [],
+				column: [],
+				indicator: ["复位及时率(%)", "mttf", "缺陷下单及时率(%)", "缺陷验收及时率(%)", "设备利用小时", "限电损失率(%)","性能损失率(%)", "综合场用电量", "状态转换及时率(%)"],
+				tableData: {
+					column: [{
+							name: "",
+							field: "fj",
+							is_num: false,
+							is_light: false,
+							sortable: false,
+							width: '70px',
+							template: () => {
+								return "<input class='check curCheckBox checkItem' type='CheckBox'/>";
+							},
+							click: function(event, data) {
+								if (event.target.checked == false) {
+									that.dataIds.delete(data.id);
+								}
+								if (event.target.checked) {
+									if (that.dataIds.size < 2) {
+										that.dataIds.add(data.id);
+									} else {
+										event.target.checked = false;
+									}
+								}
+							},
+						},
+						{
+							name: "场站",
+						 field: "wpid",
+							is_num: false,
+							is_light: false,
+						},
+						{
+							name: "综合排名",
+							field: "zpm",
+							is_num: false,
+							is_light: false,
+							width: '100px',
+						},
+						{
+							name: "等级",
+							field: "grade",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+							width: '70px',
+						},
+						{
+						 name: "风能利用率(%)",
+							field: "fnlyl",
+						 is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "复位及时率(%)",
+							field: "fwjsl",
+							is_num: false,
+							is_light: false,
+						 sortable: true,
+						},
+						{
+							name: "mttf",
+							field: "mttf",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "平均小风切入风速",
+							field: "pjxfqrfs",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+
+						{
+							name: "缺陷下单及时率(%)",
+						 field: "qxxdjsl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "缺陷验收及时率(%)",
+							field: "qxysjsl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "设备利用小时",
+							field: "sblyxs",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "限电损失率(%)",
+							field: "xdssl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "性能损失率(%)",
+							field: "xnssl",
+							is_num: false,
+							is_light: false,
+						 sortable: true,
+						},
+						{
+							name: "综合场用电量",
+							field: "zhcydl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+							name: "状态转换及时率(%)",
+							field: "ztzhjsl",
+							is_num: false,
+							is_light: false,
+							sortable: true,
+						},
+						{
+						  name: "操作",
+						  field: "sjbz",
+						  is_num: false,
+						  is_light: false,
+						  sortable: true,
+						  id: "id",
+						  template: () => {
+						    return "<el-button type='text' style='cursor: pointer;'>详情</el-button>";
+						  },
+						  click: function (event, data) {
+							  that.contrast(that.dataIds.add(data.id))
+						  },
+						},
+					],
+					data: [],
+				},
+			};
+		},
+		created() {
+			this.date = this.getDate();
+			this.getTable(this.date);
+		},
+		methods: {
+			clearCheckBox() {
+				this.$refs.curRef.clearCheckBox();
+				this.dataIds = new Set();
+			},
+			// 获取表格数据
+			getTable() {
+				let that = this;
+				that.tableLoading = true;
+				that.API.requestData({
+					timeout: 60000,
+					method: "GET",
+					baseURL: "http://10.155.32.4:8034",
+					subUrl: '/evaluation/operation',
+					data: {
+						month: that.date
+					},
+					success(res) {
+						that.tableLoading = false;
+						if (res.code === 200) {
+							var data = [];
+							res.data.forEach((item, index) => {
+								item["index"] = index;
+								data[index] = item;
+							});
+							that.tableData.data = data;
+						}
+					},
+					Error(res) {
+						console.log("tag", res);
+					},
+				});
+			},
+			// 查询
+			handleSubmit() {
+				this.clearCheckBox();
+				this.getTable(this.date);
+			},
+			// 日信息对比
+			contrast(one) {
+				var that = this;
+				if (that.dataIds.size == 2 || one) {
+					that.dialogVisible = true;
+					const tmpArr = Array.from(that.dataIds);
+					if(one){
+						const data = {
+							gaid1: tmpArr[0]
+						};
+					}else{
+						const data = {
+							gaid1: tmpArr[0],
+							gaid2: tmpArr[1],
+						};
+					}
+					const dialogData1 = [];
+					that.tableData.data.forEach(ele => {
+						tmpArr.forEach(ele2 => {
+							if (ele.id == ele2) {
+								dialogData1.push(ele)
+							}
+						})
+					})
+					that.dialogData1 = dialogData1;
+					const chartData = [{
+						indicator: that.indicator,
+						data: [],
+					}];
+					const data1 = [],
+						data2 = [];
+					let column = [];
+					chartData[0].indicator.forEach(ele => {
+						that.tableData.column.forEach(ele2 => {
+							if (ele2.name == ele) {
+								column.push({
+									name: ele,
+									field: ele2.field,
+									rank: ele2.field + 'pm',
+									score: ele2.field + 'pf'
+								})
+								let data1Name = '',data2Name = '';
+								dialogData1.forEach((ele3, index3) => {
+									if (index3 == 0) {
+										data1.push({
+											name: ele,
+											data1: ele3[ele2.field]
+										})
+										data1Name = ele3.wpid
+									}
+									
+									if(that.dataIds.size == 2){
+										if (index3 == 1) {
+											data2.push({
+												name: ele,
+												data1: ele3[ele2.field]
+											})
+											data2Name = ele3.wpid
+										}
+									}
+								})
+								data1.push({name: data1Name});
+								if(that.dataIds.size == 2){
+									data2.push({name: data2Name});
+								}
+							}
+						})
+					})
+					that.column = column;
+					if (data1) {
+						chartData[0].data.push(that.getChartData(data1,chartData[0].indicator));
+					}
+					if(that.dataIds.size == 2){
+						if (data2) {
+							chartData[0].data.push(that.getChartData(data2,chartData[0].indicator));
+						}
+					}
+					that.dialogData2 = chartData;
+				}
+				this.clearCheckBox();
+			},
+			getChartData(resData,indicator) {
+				const chartData = {};
+				const rowMap = {};
+				resData.forEach(function(rowData, index) {
+					rowMap[rowData["name"]] = rowData["data1"];
+				});
+				chartData["name"] = resData[resData.length - 1]["name"];
+				chartData["value"] = [];
+				indicator.forEach(ele=>{
+					chartData["value"].push(rowMap[ele]);
+				})
+				return chartData;
+			},
+			// 获取日期
+			getDate() {
+				var date = new Date();
+				var year = date.getFullYear(),
+					month = date.getMonth() + 1,
+					day = date.getDate() - 1;
+				month >= 1 && month <= 9 ? (month = "0" + month) : "";
+				day >= 0 && day <= 9 ? (day = "0" + day) : "";
+				return year + "-" + month;
+			},
+		},
+	};
+</script>
+<style scoped>
+	.newsDiv {
+		color: rgba(255, 255, 255, 0.75);
+		background-color: rgba(255, 255, 255, 0.1);
+		margin-bottom: 8px;
+		line-height: 3.4259vh;
+		padding: 0 15px;
+	}
+
+	.newspan {
+		line-height: 30px;
+		cursor: pointer;
+		padding: 0 1vw;
+		margin: 0 2px;
+		color: #9ca5a8;
+		transition: color 0.2s ease-in-out;
+		position: relative;
+	}
+
+	.newspan:hover {
+		background: linear-gradient(to top,
+				rgba(5, 187, 76, 0.5),
+				rgba(5, 187, 76, 0));
+		color: white;
+		position: relative;
+	}
+
+	.newspan:hover::after {
+		content: "";
+		position: absolute;
+		width: 100%;
+		height: 0.463vh;
+		border: 0.093vh solid #05bb4c;
+		border-top: 0;
+		left: 0;
+		bottom: 0;
+		box-sizing: border-box;
+	}
+
+	.active {
+		background: linear-gradient(to top,
+				rgba(5, 187, 76, 0.5),
+				rgba(5, 187, 76, 0));
+		color: white;
+		position: relative;
+	}
+
+	.active::after {
+		content: "";
+		position: absolute;
+		width: 100%;
+		height: 0.463vh;
+		border: 0.093vh solid #05bb4c;
+		border-top: 0;
+		left: 0;
+		bottom: 0;
+		box-sizing: border-box;
+	}
+
+	.title {
+		background: rgba(255, 255, 255, 0.1);
+		margin-bottom: 8px;
+		padding: 1vh;
+	}
+</style>
+<style lang="less">
+	.decision-page-2 {
+		.content .project-table {
+			tbody {
+				height: calc(100vh - 24.5vh);
+			}
+		}
+
+		.project-table {
+			overflow: auto;
+
+			tbody {
+				height: 239px;
+			}
+
+			th,
+			td {
+				color: #b2bdc0;
+
+				&:nth-child(1) {
+					width: 50px;
+				}
+
+				&:nth-child(2) {
+					width: 50px;
+				}
+			}
+		}
+
+		.action {
+			text-decoration: underline;
+			color: @green;
+			cursor: pointer;
+		}
+	}
+</style>

+ 130 - 20
src/views/Home/Home.vue

@@ -47,6 +47,8 @@
           :data="fcmap"
           :xtData="xtmap"
           @mapClick="changeShowType"
+          @mapClicks="changeShowTypes"
+          @mapClickBack="changeShowBackType"
           @backStation="onBackStation"
         ></Map>
       </div>
@@ -153,6 +155,10 @@
                     {{ wpId === "0" ? "减排二氧化硫" : "年运行小时" }}
                   </td>
                   <td class="value green">
+<<<<<<< HEAD
+=======
+                    <!-- {{ wpId === "0" ? jczbmap.jpeyhl  : gxkmap.nyxxs }} -->
+>>>>>>> b1304280f10e412f55f384f411309a5c63f6d7ad
                     {{ wpId === "0" ? jczbmap.jpeyhl : gxkmap.nyxxs }}
                   </td>
                   <td class="unit gray">
@@ -161,9 +167,13 @@
                 </tr>
                 <tr class="">
                   <td class="text gray">
-                    {{ wpId === "0" ? "减排二氧化碳" : "年等效利用系数" }}
+                    {{ wpId === "0" ? "减排二氧化碳" : "年等效利用系数" }}
                   </td>
                   <td class="value green">
+<<<<<<< HEAD
+=======
+                    <!-- {{ wpId === "0" ? jczbmap.jpeyht  : gxkmap.ndxkyss }} -->
+>>>>>>> b1304280f10e412f55f384f411309a5c63f6d7ad
                     {{ wpId === "0" ? jczbmap.jpeyht : gxkmap.ndxkyss }}
                   </td>
                   <td class="unit gray">{{ wpId === "0" ? "吨" : "%" }}</td>
@@ -173,6 +183,10 @@
                     {{ wpId === "0" ? "节约用水" : "年故障小时" }}
                   </td>
                   <td class="value green">
+<<<<<<< HEAD
+=======
+                    <!-- {{ wpId === "0" ? jczbmap.jys  : gxkmap.ngzxs }} -->
+>>>>>>> b1304280f10e412f55f384f411309a5c63f6d7ad
                     {{ wpId === "0" ? jczbmap.jys : gxkmap.ngzxs }}
                   </td>
                   <td class="unit gray">
@@ -184,6 +198,10 @@
                     {{ wpId === "0" ? "节约标煤" : "年待机小时" }}
                   </td>
                   <td class="value green">
+<<<<<<< HEAD
+=======
+                    <!-- {{ wpId === "0" ? jczbmap.jybm  : gxkmap.ndjxs }} -->
+>>>>>>> b1304280f10e412f55f384f411309a5c63f6d7ad
                     {{ wpId === "0" ? jczbmap.jybm : gxkmap.ndjxs }}
                   </td>
                   <td class="unit gray">
@@ -743,15 +761,27 @@
       top="10vh"
       custom-class="modal"
       :close-on-click-modal="true"
-      @closed="dialogType = ''"
+      @closed="
+        (res) => {
+          dialogType = '';
+          powerLineChartData = null;
+        }
+      "
     >
       <Table :data="dialogData" v-if="dialogType === 'table'" />
       <multiple-y-line-chart-normal
         height="500px"
+        :list="powerLineChartData"
+        :yAxises="powerLineChartYAxises"
+        :showLegend="true"
+        v-if="dialogType === 'powerLineChart' && powerLineChartData"
+      />
+      <multiple-y-line-chart-normal
+        height="500px"
         :list="Powertrend"
         :yAxises="PowertrendYAxises"
         :showLegend="true"
-        v-if="dialogType === 'powerLineChart'"
+        v-if="dialogType === 'powerLineChart' && !powerLineChartData"
       />
       <multiple-bar-chart
         height="500px"
@@ -809,6 +839,8 @@ export default {
   },
   data() {
     return {
+      historyWpId: "",
+      historyPlanBtnName: "",
       timmer: null, // 计时器
       timmer2: null,
       timmer3: null,
@@ -835,6 +867,7 @@ export default {
       tqmap: {},
       nowTime: "",
       planBtnName: "全部",
+      powerLineChartYAxises: [],
       powerLineChartData: [
         {
           title: "",
@@ -913,7 +946,6 @@ export default {
           wpId: that.wpId,
         },
         success(res) {
-          console.log("resWeather:", res);
           const keys = ["wd", "sd"];
           let weatherChart = [
             {
@@ -961,9 +993,9 @@ export default {
         success(res) {
           that.powerData = [
             {
-              title: "风速",
+              title: that.wpId === '-2' ? "日照强度" : "风速",
               value: res.data.jczbmap.ssfs,
-              dialogTitle: "风速详情",
+              dialogTitle:  that.wpId === '-2' ? "日照强度详情" : "风速详情",
               subUrl: "genreset/findGLDetail",
               targetName: "ssfs",
               dialogType: "powerLineChart",
@@ -1066,7 +1098,6 @@ export default {
           id: that.wpId,
         },
         success(res) {
-          console.log("resCharts:", res);
           let rdlKey = ["value1", "value2", "value3", "speed"];
           let DayPower = {
             units: ["(万kWh)", "(m/s)"],
@@ -1129,7 +1160,12 @@ export default {
               value: [],
             },
             {
-              title: "平均风速",
+              title: that.wpId === '-2' ? "日照强度" : "平均风速",
+              smooth: true,
+              value: [],
+            },
+            {
+              title: "72小时预测功率",
               smooth: true,
               value: [],
             },
@@ -1161,24 +1197,73 @@ export default {
 
     // 点击地图展示类型
     changeShowType(wpId, planBtnName) {
-      this.wpName = planBtnName;
-      this.planBtnName = planBtnName;
+      if (
+        planBtnName === "电站" ||
+        planBtnName.indexOf("马场湖") !== -1 ||
+        planBtnName.indexOf("宣和") !== -1 ||
+        planBtnName.indexOf("大武口") !== -1 ||
+        planBtnName.indexOf("平罗") !== -1 ||
+        planBtnName.indexOf("海子井") !== -1
+      ) {
+        this.PowertrendYAxises = [
+          {
+            name: "功率",
+            min: 0,
+            max: null,
+            unit: "(万kWh)",
+            position: "left",
+          },
+          {
+            name: "日照",
+            min: 0,
+            max: 25,
+            unit: "(W/㎡)",
+            position: "right",
+          },
+        ];
+      } else {
+        this.PowertrendYAxises = [
+          {
+            name: "功率",
+            min: 0,
+            max: null,
+            unit: "(万kWh)",
+            position: "left",
+          },
+          {
+            name: "风速",
+            min: 0,
+            max: 25,
+            unit: "(m/s)",
+            position: "right",
+          },
+        ];
+      }
+      this.wpName = planBtnName ? planBtnName : this.wpName;
+      this.planBtnName = planBtnName ? planBtnName : this.planBtnName;
       this.jczbmap = {};
       clearInterval(this.timmer);
       this.timmer = null;
-      this.wpId = wpId;
+      this.wpId = wpId ? wpId : this.wpId;
+
       this.requestData(false);
       this.getCharts();
       this.timmer = setInterval(() => {
         this.requestData(false);
       }, this.$store.state.websocketTimeSec);
     },
-
+    changeShowTypes(wpId, planBtnName) {
+      this.historyWpId = wpId;
+      this.historyPlanBtnName = planBtnName;
+      this.changeShowType(wpId, planBtnName);
+    },
+    changeShowBackType() {
+      this.changeShowType(this.historyWpId, this.historyPlanBtnName);
+    },
     // 打开弹窗
     openDialog(dialogTitle, subUrl, targetName, dialogType) {
       this.dialogTitle = dialogTitle;
       let that = this;
-      console.log("dialogSuburl:", subUrl);
       that.API.requestData({
         method: "POST",
         subUrl,
@@ -1187,7 +1272,6 @@ export default {
           targetName,
         },
         success(res) {
-          console.log("resDialog:", res);
           that.dialogShow = true;
           that.dialogData = res.data;
           that.dialogType = dialogType;
@@ -1218,7 +1302,6 @@ export default {
           wpId: that.wpId,
         },
         success(res) {
-          console.log("forecastBoxRes:", res);
           that.dialogData = res.data;
           that.dialogType = "table";
           that.dialogShow = true;
@@ -1228,21 +1311,48 @@ export default {
 
     // 显示功率复核图表
     showPowerChart(res) {
-      console.log("powerChartRes:", res);
       this.dialogTitle = res.dialogTitle;
       this.dialogType = res.dialogType;
 
-      this.powerLineChartData = res.data;
+      // this.powerLineChartData = res.data;
+      this.powerLineChartData = res.data.value;
+      if (res.dialogTitle === "风速详情") {
+        this.powerLineChartYAxises = [
+          {
+            min: 0,
+            name: "风速",
+            position: "left",
+            unit: "(m/s)",
+          },
+          {
+            min: 0,
+            name: "日照",
+            position: "right",
+            unit: "(w/㎡)",
+          },
+        ];
+      } else {
+        this.powerLineChartYAxises = [
+          {
+            min: 0,
+            name: "功率",
+            position: "left",
+            unit: "(万kWh)",
+          },
+        ];
+      }
+
       this.dialogShow = true;
     },
 
     // 显示计划电量完成情况图表
     showDoneChart(res) {
-      console.log("doneChartRes:", res);
       this.dialogTitle = res.dialogTitle;
       this.dialogType = res.dialogType;
-
       this.doneLineChartData = res.data;
+      this.doneLineChartData.units[0] = this.doneLineChartData.units[0]
+        ? this.doneLineChartData.units[0]
+        : "(万KWh)";
       this.dialogShow = true;
     },
 
@@ -1313,7 +1423,7 @@ export default {
       td {
         border: 0.093vh solid fade(@gray, 20);
         line-height: 27px;
-        padding: 0 4px;
+        padding: 0 3px;
         &.text {
         }
 

+ 1 - 1
src/views/Home/components/coulometric-analysis.vue

@@ -26,7 +26,7 @@
         <div class="coulometric-info">
           <svg-icon svgid="svg-arrow-down" class="icon yellow" />
           <span class="title gray">避免故障</span>
-          <span class="value">{{ bmgz_ }}</span>
+          <span class="value">{{ bmgz_ }}</span>
         </div>
         <percent-card :value="jdl_" color="yellow" title="降低率" />
         <card-1

+ 49 - 42
src/views/Home/components/map.vue

@@ -28,7 +28,7 @@
     <div class="name-box" v-if="currentMode != 'NX'">
       <div class="name-box-title" @click="onBackStation">{{ currentTitle }}</div>
       <div class="name-box-period" v-show="currentPeriod != 'ZERO'">
-        <span class="name-box-period-label">期次:</span>
+        <span class="name-box-period-label">{{textType}}:</span>
         <span class="name-box-period-value"
           >{{ currentName }}{{ currentPeriod }}</span
         >
@@ -118,48 +118,34 @@
     </div>
     <div class="map-img">
       <!-- 宁夏地图总览 -->
-      <SvgMapNX
-        v-if="mapName === 'nx'"
-        :show="showType"
-        :data="sourceMap"
-        :xtData="xtMap"
-        @clickLabel="clickLabel"
-      ></SvgMapNX>
+      <SvgMapNX v-if="mapName === 'nx'" :show="showType" :data="sourceMap" :xtData="xtMap" @clickLabel="clickLabel" ></SvgMapNX>
+	  
       <!-- 麻黄山风电场 -->
-      <MHSFDC
-        v-if="mapName === 'MHS_FDC'"
-        :data="sourceMap"
-        @clickFj="clickFj"
-        @changePeriod="changePeriod"
-      ></MHSFDC>
+      <MHSFDC v-if="mapName === 'MHS_FDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></MHSFDC>
+	  
       <!-- 香山风电场 -->
-      <XSFDC
-        v-if="mapName === 'XS_FDC'"
-        :data="sourceMap"
-        @clickFj="clickFj"
-        @changePeriod="changePeriod"
-      ></XSFDC>
+      <XSFDC v-if="mapName === 'XS_FDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></XSFDC>
+	  
       <!-- 牛首山风电场 -->
-      <NSSFDC
-        v-if="mapName === 'NSS_FDC'"
-        :data="sourceMap"
-        @clickFj="clickFj"
-        @changePeriod="changePeriod"
-      ></NSSFDC>
+      <NSSFDC v-if="mapName === 'NSS_FDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></NSSFDC>
+	  
       <!-- 青山风电场 -->
-      <QSFDC
-        v-if="mapName === 'QS_FDC'"
-        :data="sourceMap"
-        @clickFj="clickFj"
-        @changePeriod="changePeriod"
-      ></QSFDC>
+      <QSFDC v-if="mapName === 'QS_FDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></QSFDC>
+	  
       <!-- 石板泉风电场 -->
-      <SBQFDC
-        v-if="mapName === 'SBQ_FDC'"
-        :data="sourceMap"
-        @clickFj="clickFj"
-        @changePeriod="changePeriod"
-      ></SBQFDC>
+      <SBQFDC v-if="mapName === 'SBQ_FDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></SBQFDC>
+	  
+	  <!-- 马场湖 -->
+	  <MCHGDC v-if="mapName === 'MCH_GDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></MCHGDC>
+	  
+	  <!-- 大武口 -->
+	  <DWKGDC v-if="mapName === 'DWK_GDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></DWKGDC>
+	  
+	  <!-- 平罗 -->
+	  <PLGDC v-if="mapName === 'PL_GDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></PLGDC>
+	  
+	  <!-- 宣和 -->
+	  <XHGDC v-if="mapName === 'XH_GDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></XHGDC>
     </div>
   </div>
 </template>
@@ -179,6 +165,15 @@ import QSFDC from "./map/QS_FDC.vue";
 // 石板泉风电场
 import SBQFDC from "./map/SBQ_FDC.vue";
 
+// 马场湖
+import MCHGDC from "./map/MCH_GDC.vue";
+// 大武口
+import DWKGDC from "./map/DWK_GDC.vue";
+// 平罗
+import PLGDC from "./map/PL_GDC.vue";
+// 马场湖
+import XHGDC from "./map/XH_GDC.vue";
+
 import SvgIcon from "../../../components/coms/icon/svg-icon.vue";
 import compassIcon from "@/assets/icon/svg_fill/compass.svg";
 export default {
@@ -192,6 +187,10 @@ export default {
     NSSFDC,
     QSFDC,
     SBQFDC,
+	MCHGDC,
+	DWKGDC,
+	PLGDC,
+	XHGDC,
     SvgIcon,
   },
   props: {
@@ -222,6 +221,7 @@ export default {
   // 数据
   data() {
     return {
+		textType:'期次',
       fcId: "",
       safeDay: "",
       showType: "all",
@@ -268,13 +268,13 @@ export default {
       let wpId = showType === "all" ? "0" : showType === "fc" ? "-1" : "-2";
       this.safeDay = "---";
       this.mapName = "nx";
-      this.$emit("mapClick", wpId, this.tabs[index].text);
+      this.$emit("mapClicks", wpId, this.tabs[index].text);
     },
     backMap(wpId, planBtnName) {
       this.currentMode = "NX";
       this.mapName = "nx";
       this.mapIndex = -1;
-      this.$emit("mapClick", wpId, planBtnName);
+      this.$emit("mapClickBack");
     },
     clickLabel(wpId, planBtnName) {
       this.mapName = wpId;
@@ -282,10 +282,17 @@ export default {
       this.mapIndex = 1;
       this.$emit("mapClick", wpId, planBtnName);
     },
-    clickFj(wpId, planBtnName) {
+    clickFj(wpId, planBtnName,textType) {
+		console.log(textType)
       this.$emit("mapClick", wpId, planBtnName);
     },
-    changePeriod: function (name, period) {
+    changePeriod: function (name, period,textType) {
+		console.log(textType)
+		if(textType){
+			this.textType = '期次'
+		}else{
+			this.textType = '线路'
+		}
       this.currentName = name;
       this.currentPeriod = period;
       this.currentMode = "SUB";

文件差异内容过多而无法显示
+ 319 - 0
src/views/Home/components/map/DWK_GDC.vue


文件差异内容过多而无法显示
+ 313 - 0
src/views/Home/components/map/MCH_GDC.vue


+ 2 - 2
src/views/Home/components/map/MHS_FDC.vue

@@ -320,7 +320,7 @@ export default {
     changeshowType(id, planBtnName) {
       this.activeId = id;
       this.$emit("clickFj", id, planBtnName);
-      this.$emit("changePeriod", "麻黄山", planBtnName.substring(planBtnName.length - 2));
+      this.$emit("changePeriod", "麻黄山", planBtnName.substring(planBtnName.length - 2),1);
     },
     clickFj(id, planBtnName) {
       this.$emit("clickFj", id, planBtnName);
@@ -353,7 +353,7 @@ export default {
           elsImage[index].style.display = "block";
           let period = this.getAttribute("data-period");
           let strs = period.split(",");
-          that.$emit("changePeriod", "麻黄山", strs[1].substring(strs[1].length - 2));
+          that.$emit("changePeriod", "麻黄山", strs[1].substring(strs[1].length - 2),1);
           that.changeshowType(strs[0], strs[1]);
           that.$emit("clickFj", strs[0], strs[1]);
           this.style.opacity = 0;

+ 2 - 2
src/views/Home/components/map/NSS_FDC.vue

@@ -495,7 +495,7 @@ export default {
     changeshowType(id, planBtnName) {
       this.activeId = id;
       this.$emit("clickFj", id, planBtnName);
-      this.$emit("changePeriod", "牛首山", planBtnName.substring(planBtnName.length - 2));
+      this.$emit("changePeriod", "牛首山", planBtnName.substring(planBtnName.length - 2),1);
     },
     clickFj(id, planBtnName) {
       this.$emit("clickFj", id, planBtnName);
@@ -531,7 +531,7 @@ export default {
           elsImage[index].style.display = "block";
           let period = this.getAttribute("data-period");
           let strs = period.split(",");
-          that.$emit("changePeriod", "牛首山", strs[1].substring(strs[1].length - 2));
+          that.$emit("changePeriod", "牛首山", strs[1].substring(strs[1].length - 2),1);
           that.changeshowType(strs[0], strs[1]);
           that.$emit("clickFj", strs[0], strs[1]);
           this.style.opacity = 0.2;

文件差异内容过多而无法显示
+ 386 - 0
src/views/Home/components/map/PL_GDC.vue


+ 2 - 2
src/views/Home/components/map/QS_FDC.vue

@@ -458,7 +458,7 @@ export default {
     changeshowType(id, planBtnName) {
       this.activeId = id;
       this.$emit("clickFj", id, planBtnName);
-      this.$emit("changePeriod", "青山", planBtnName.substring(planBtnName.length - 2));
+      this.$emit("changePeriod", "青山", planBtnName.substring(planBtnName.length - 2),1);
     },
     clickFj(id, planBtnName) {
       this.$emit("clickFj", id, planBtnName);
@@ -494,7 +494,7 @@ export default {
           elsImage[index].style.display = "block";
           let period = this.getAttribute("data-period");
           let strs = period.split(",");
-          that.$emit("changePeriod", "青山", strs[1].substring(strs[1].length - 2));
+          that.$emit("changePeriod", "青山", strs[1].substring(strs[1].length - 2),1);
           that.changeshowType(strs[0], strs[1]);
           that.$emit("clickFj", strs[0], strs[1]);
           this.style.opacity = 0.2;

+ 2 - 2
src/views/Home/components/map/SBQ_FDC.vue

@@ -578,7 +578,7 @@ export default {
     changeshowType(id, planBtnName) {
       this.activeId = id;
       this.$emit("clickFj", id, planBtnName);
-      this.$emit("changePeriod", "石板泉", planBtnName.substring(planBtnName.length - 2));
+      this.$emit("changePeriod", "石板泉", planBtnName.substring(planBtnName.length - 2),1);
     },
     clickFj(id, planBtnName) {
       this.$emit("clickFj", id, planBtnName);
@@ -614,7 +614,7 @@ export default {
           elsImage[index].style.display = "block";
           let period = this.getAttribute("data-period");
           let strs = period.split(",");
-          that.$emit("changePeriod", "石板泉", strs[1].substring(strs[1].length - 2));
+          that.$emit("changePeriod", "石板泉", strs[1].substring(strs[1].length - 2),1);
           that.changeshowType(strs[0], strs[1]);
           that.$emit("clickFj", strs[0], strs[1]);
           this.style.opacity = 0.2;

文件差异内容过多而无法显示
+ 347 - 0
src/views/Home/components/map/XH_GDC.vue


文件差异内容过多而无法显示
+ 407 - 554
src/views/Home/components/map/XS_FDC.vue


+ 4 - 4
src/views/Home/components/map/svg-map-nx.vue

@@ -206,7 +206,7 @@
           <g
             v-if="showType === 'all' || showType === 'gf'"
             class="item-label"
-            @click.stop="clickLabel('MCH_GDC', '马场湖光电')"
+            @click.stop="clickLabel('MCH_GDC', '马场湖光电')"
             @mouseover="mouseover(1)"
             @mouseout="mouseout"
           >
@@ -234,7 +234,7 @@
           <g
             v-if="showType === 'all' || showType === 'gf'"
             class="item-label"
-            @click.stop="clickLabel('XH_GDC', '宣和光电')"
+            @click.stop="clickLabel('XH_GDC', '宣和光电')"
             @mouseover="mouseover(2)"
             @mouseout="mouseout"
           >
@@ -297,7 +297,7 @@
           <g
             v-if="showType === 'all' || showType === 'gf'"
             class="item-label"
-            @click="clickLabel('DWK_GDC', '大武口电厂')"
+            @click="clickLabel('DWK_GDC', '大武口光电场')"
             @mouseover="mouseover(4)"
             @mouseout="mouseout"
           >
@@ -325,7 +325,7 @@
           <g
             v-if="showType === 'all' || showType === 'gf'"
             class="item-label"
-            @click="clickLabel('PL_GDC', '平罗光电')"
+            @click="clickLabel('PL_GDC', '平罗光电')"
             @mouseover="mouseover(5)"
             @mouseout="mouseout"
           >

+ 1 - 0
src/views/Home/components/power-plan.vue

@@ -119,6 +119,7 @@ export default {
 
     openDialog(dialogTitle, subUrl, dialogType) {
       let that = this;
+      
       that.API.requestData({
         method: "POST",
         subUrl,

+ 25 - 25
src/views/Home/components/power-review.vue

@@ -69,45 +69,45 @@ export default {
           targetName,
         },
         success(res) {
-          // let powerLineChartData = {
-          //   // 图表所用单位
-          //   units: [""],
-          //   value: [],
-          // };
-
-          // res.data.forEach((pEle, pIndex) => {
-          //   powerLineChartData.value.push({
-          //     title: pEle[0].name,
-          //     yAxisIndex: 0,
-          //     smooth: true,
-          //     value: [],
-          //   });
-
-          //   pEle.forEach((cEle) => {
-          //     powerLineChartData.value[pIndex].value.push({
-          //       text: new Date(cEle.time).formatDate("hh:mm:ss"),
-          //       value: cEle.value1,
-          //     });
-          //   });
-          // });
-
-          let powerLineChartData = [];
+          let powerLineChartData = {
+            // 图表所用单位
+            units: [""],
+            value: [],
+          };
 
           res.data.forEach((pEle, pIndex) => {
-            powerLineChartData.push({
+            powerLineChartData.value.push({
               title: pEle[0].name,
+              yAxisIndex: 0,
               smooth: true,
               value: [],
             });
 
             pEle.forEach((cEle) => {
-              powerLineChartData[pIndex].value.push({
+              powerLineChartData.value[pIndex].value.push({
                 text: new Date(cEle.time).formatDate("hh:mm:ss"),
                 value: cEle.value1,
               });
             });
           });
 
+          // let powerLineChartData = [];
+
+          // res.data.forEach((pEle, pIndex) => {
+          //   powerLineChartData.push({
+          //     title: pEle[0].name,
+          //     smooth: true,
+          //     value: [],
+          //   });
+
+          //   pEle.forEach((cEle) => {
+          //     powerLineChartData[pIndex].value.push({
+          //       text: new Date(cEle.time).formatDate("hh:mm:ss"),
+          //       value: cEle.value1,
+          //     });
+          //   });
+          // });
+
           that.$emit("chartClick", {
             dialogTitle,
             dialogType,

+ 2 - 2
src/views/Home/components/weather.vue

@@ -79,8 +79,8 @@ export default {
       visibility: "20KM", //能见度
       humidity: "75.0%", // 湿度
       pressure: "994kPa", // 气压
-      sunrise: "04:06", // 日出
-      sunset: "18:50", // 日落
+      sunrise: "08:10", // 日出
+      sunset: "17:39", // 日落
     };
   },
 

+ 6 - 6
src/views/MalfunctionWarning/MalfunctionWarning.vue

@@ -115,7 +115,7 @@
             style="width: 100%; margin-bottom: 10px"
           >
             <el-table-column
-              prop="id"
+              prop="idString"
               label="id"
               width="100"
               align="center"
@@ -623,7 +623,7 @@ export default {
     queryData() {
       let param = [];
       this.allData.forEach((item) => {
-        param.push(item.id);
+        param.push(item.idString);
       });
       let that = this;
       that.API.requestData({
@@ -635,10 +635,10 @@ export default {
         success(res) {
           if (res) {
             res.data.forEach((item) => {
-              that.allData.filter((val) => val.id === item.faultid)[0].labels =
+              that.allData.filter((val) => val.idString === item.faultid)[0].labels =
                 item.faultcode;
-              that.allData.filter((items) => items.id === item.faultid)[0].ids =
-                item.id;
+              that.allData.filter((items) => items.idString === item.faultid)[0].ids =
+                item.idString;
             });
           }
         },
@@ -908,7 +908,7 @@ export default {
       data.forEach((item) => {
         if (item.labels) {
           let obj = {
-            faultid: item.id,
+            faultid: item.idString,
             stationcn: item.stationName,
             windturbineid: item.objectId,
             faulttype: this.faultLists.filter(

+ 0 - 1
src/views/MalfunctionWarning/components/trainingResults.vue

@@ -272,7 +272,6 @@ export default {
       }
     },
     historyData(index, max) {
-      console.log(1111111111);
       let dataLsit = this.lableList.filter((item) => item.isShow === true);
       let that = this;
       that.API.requestData({

+ 4 - 0
src/views/NewPages/alarm-center-2.vue

@@ -156,6 +156,10 @@ export default {
     };
   },
   created () {
+    const myDate = new Date()
+    const year = myDate.getFullYear()
+    const mouth = `0${myDate.getMonth() + 1}`.slice(-2)
+    this.startdate = `${year}-${mouth}-01`
     this.search();
     this.searchTree();
   },

+ 3 - 3
src/views/Others/index.vue

@@ -232,9 +232,9 @@ export default {
         SBQ_FDC: "石板泉风电场",
         XS_FDC: "香山风电场",
         DWK_GDC: "大武口电站",
-        PL_GDC: "平罗光伏电站",
-        XH_GDC: "宣和光伏发电站",
-        MCH_GDC: "马场湖光发伏电站",
+        PL_GDC: "平罗电站",
+        XH_GDC: "宣和电站",
+        MCH_GDC: "马场湖电站",
         JSFW: "计算服务测点",
       },
       earlyAlarmData: {},

+ 12 - 12
src/views/SandTable/SandTable.vue

@@ -168,6 +168,7 @@
         class="stb-p"
         :data="riseNumber(gxkmap.bg_sbklyl)"
         dataColor="#05BB4C"
+        daysUnit="%"
         :days="gxkmap.ysbklyl"
         :data1Icon="
           gxkmap.hb_sbklyl < 0 ? 'svg-arrow-dpwn-1' : 'svg-arrow-up-1'
@@ -189,7 +190,7 @@
       <Ppanel
         title="MTBF"
         class="stb-p"
-        :data="riseNumber(gxkmap.bg_mtbf)"
+        :data="'0.1' || riseNumber(gxkmap.bg_mtbf)"
         dataColor="#05BB4C"
         :days="gxkmap.mtbf"
         :data1Icon="gxkmap.hb_mtbf < 0 ? 'svg-arrow-dpwn-1' : 'svg-arrow-up-1'"
@@ -208,7 +209,7 @@
       <Ppanel
         title="MTTR"
         class="stb-p"
-        :data="riseNumber(gxkmap.bg_mttr)"
+        :data="'0.1' || riseNumber(gxkmap.bg_mttr)"
         dataColor="#05BB4C"
         :days="gxkmap.mttr"
         :data1Icon="gxkmap.hb_mttr < 0 ? 'svg-arrow-dpwn-1' : 'svg-arrow-up-1'"
@@ -227,7 +228,7 @@
       <Ppanel
         title="MTTF"
         class="stb-p"
-        :data="riseNumber(gxkmap.bg_mttf)"
+        :data="'0.1' || riseNumber(gxkmap.bg_mttf)"
         dataColor="#05BB4C"
         :days="gxkmap.mttf"
         :data1Icon="gxkmap.hb_mttf < 0 ? 'svg-arrow-dpwn-1' : 'svg-arrow-up-1'"
@@ -468,11 +469,11 @@
       :destroy-on-close="true"
       :before-close="
         (done) => {
-          mainInfoDialogClass = 'modal animated a1 fadeOutUpBig';
+          mainInfoDialogClass = 'modal curModal animated a1 fadeOutUpBig';
           delaylyFn(450, done);
         }
       "
-      @closed="mainInfoDialogClass = 'modal animated a0 fadeInDown'"
+      @closed="mainInfoDialogClass = 'modal curModal animated a0 fadeInDown'"
     >
       <div v-for="(item, index) in mainInfo" :key="index">
         <el-divider content-position="center">{{ item.name }}</el-divider>
@@ -583,7 +584,7 @@ export default {
       ],
       videoDialogClass: "modal animated a1 bounceIn",
       tableDialogClass: "modal animated a1 fadeInLeftBig",
-      mainInfoDialogClass: "modal animated a0 fadeInDownBig",
+      mainInfoDialogClass: "modal curModal animated a0 fadeInDownBig",
       mainInfo: [],
       peopleClass: "",
       timeStr: "",
@@ -985,7 +986,6 @@ export default {
           windPowerStation: that.wpId,
         },
         success(res) {
-          console.log(123123, res);
           that.mainInfo = res.data;
           that.showMainInfoDialog = true;
         },
@@ -1272,6 +1272,11 @@ export default {
   }
 }
 
+#sandTable.sand-table .curModal .el-dialog__body {
+  max-height: 600px;
+  overflow-y: scroll;
+}
+
 .exchange {
   cursor: pointer;
 }
@@ -1381,11 +1386,6 @@ export default {
     background: #b3bdc0;
   }
 
-  #sandTable .el-dialog__body {
-    max-height: 600px;
-    overflow-y: scroll;
-  }
-
   animation-duration: 0;
   @keyframes dialog-fade-in {
     0% {

+ 14 - 23
src/views/Status/Status.vue

@@ -15,10 +15,9 @@
     <div class="table-box">
       <ComTable1 :data="tableData1"></ComTable1>
     </div>
-     <div class="table-box">
+    <div class="table-box">
       <ComTable1 :data="tableData2"></ComTable1>
     </div>
- 
   </div>
 </template>
 
@@ -26,7 +25,7 @@
 import StatusPanel from "./components/status-panel.vue";
 import StatusPanelStatic from "./components/static.vue";
 import ComTable from "@com/coms/table/table.vue";
-import ComTable1 from "./table.vue"
+import ComTable1 from "./table.vue";
 import util from "@/helper/util.js";
 
 import store from "@store/index.js";
@@ -48,7 +47,7 @@ export default {
       sourceMap: {}, // 核心数据
       datas: [],
       // wpId1: "",
-      wpId:"",
+      wpId: "",
       dwkGzqd: "",
       plGzqd: "",
       zhGzqd: "",
@@ -58,7 +57,7 @@ export default {
         column: [
           {
             name: "场站名称",
-            field: "wpName",
+            field: "address",
             unit: "",
             is_num: false,
             is_light: false,
@@ -176,7 +175,7 @@ export default {
             is_light: false,
           },
           {
-            name: "受损失电量",
+            name: "受损失电量",
             field: "slss",
             unit: "万kwh",
             is_num: true,
@@ -203,7 +202,7 @@ export default {
         column: [
           {
             // name: "场站名称",
-            field: "wpName",
+            field: "address",
             unit: "",
             is_num: false,
             is_light: false,
@@ -322,7 +321,7 @@ export default {
             is_light: false,
           },
           {
-            // name: "受损失电量",
+            // name: "受损失电量",
             field: "slss",
             unit: "万kwh",
             is_num: true,
@@ -345,7 +344,7 @@ export default {
         ],
         data: [],
       },
-            tableData2: {
+      tableData2: {
         column: [
           {
             // name: "场站名称",
@@ -468,7 +467,7 @@ export default {
             is_light: false,
           },
           {
-            // name: "受损失电量",
+            // name: "受损失电量",
             field: "slss",
             unit: "万kwh",
             is_num: true,
@@ -504,7 +503,6 @@ export default {
         subUrl: "monitor/monitor",
         success(res) {
           if (res.data) {
-            // console.log("resData:", res.data);
             let sourceMap = res.data;
             let datas = [];
             let data = [];
@@ -515,7 +513,6 @@ export default {
               that.wpId1 = sourceMap.vos.find((findEle) => {
                 return findEle.wpName === ele.name;
               }).wpId;
-              // console.log('wpid1:',that.wpId1)
               datas.push({
                 title: ele.name,
                 wpId: sourceMap.vos.find((findEle) => {
@@ -562,10 +559,12 @@ export default {
                     f3: ele.ycgl,
                     f4: "",
                     f5: "",
-                    is_light: !ele.zxzt_fjzt,
+                    // is_light: !ele.zxzt_fjzt,
+                    is_light: true,
                   },
                   {
-                    f1: "测风塔:",
+                    f1:
+                      ele.name.indexOf("风电场") !== -1 ? "测风塔:" : "气象站:",
                     // f2: "风速",
                     f2: ele.name.includes("风") ? "风速" : "光照强度",
                     // f3: (ele.cftfs || 0) + "m/s",
@@ -600,11 +599,9 @@ export default {
             let zj = sourceMap.vos.filter((ele) => {
               return ele.wpId.includes("0");
             });
-          data2.push(zj[0])
+            data2.push(zj[0]);
             fdcArr.push(fdhj[0]);
-            //  console.log(fdcArr)
             fdcArr.forEach((ele) => {
-              // console.log('vos:', sourceMap.vos)
               ele.row_span = [];
               ele.col_span = [];
               ele.is_light = false;
@@ -619,9 +616,7 @@ export default {
               return ele.wpId.includes("-2");
             });
             gdcArr.push(gdhj[0]);
-            //  console.log(gdcArr)
             gdcArr.forEach((ele) => {
-              // console.log('vos:', sourceMap.vos)
               ele.row_span = [];
               ele.col_span = [];
               ele.is_light = false;
@@ -629,7 +624,6 @@ export default {
             });
 
             // sourceMap.vos.forEach((ele) => {
-            //   // console.log('vos:', sourceMap.vos)
             //   ele.row_span = [];
             //   ele.col_span = [];
             //   ele.is_light = false;
@@ -637,7 +631,6 @@ export default {
             // });
 
             //  for(let i=0;i<sourceMap.vos.length;i++){
-            //     //  console.log('vos:',sourceMap.vos)
             //      data.push(sourceMap.vos[0],sourceMap.vos[1],sourceMap.vos[2],sourceMap.vos[3],sourceMap.vos[4],sourceMap.vos[5],sourceMap.vos[11])
             //      data1.push(sourceMap.vos[6],sourceMap.vos[7],sourceMap.vos[8],sourceMap.vos[9],sourceMap.vos[10],sourceMap.vos[11])
             //  }
@@ -645,8 +638,6 @@ export default {
             // //  that.unique(data1,sourceMap.vos.find((findEle) => {
             // //         return findEle.wpName === ele.name;
             // //       }).wpId);
-            //  console.log('vosData:',data);
-            // //  console.log('vosData1:',data1)
 
             that.sourceMap = sourceMap;
             that.datas = datas;

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

@@ -1,7 +1,7 @@
 <template>
   <div class="status-panel">
     <div class="pause" v-if="true">中断</div>
-    <ComPanel class="status-com-panel" :title="'海子井光伏电站'">
+    <ComPanel class="status-com-panel" :title="'海子井电站'">
       <div class="p-body">
         <div class="category-box">
           <div class="score">

+ 1 - 1
src/views/WindSite/components/boosterstation/hzj.vue

@@ -398,7 +398,7 @@
 								</g>
 								<g>
 									<rect x="237.573" y="303.046" fill="#5A5784" width="34.448" height="9.842"></rect>
-									<text transform="matrix(1 0 0 1 242.2554 309.9297)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="5.9439">光伏备</text>
+									<text transform="matrix(1 0 0 1 242.2554 309.9297)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="5.9439">光伏备</text>
 								</g>
 								<g>
 									<rect x="325.137" y="303.418" fill="#5A5784" width="34.447" height="9.842"></rect>

文件差异内容过多而无法显示
+ 387 - 340
src/views/WindSite/components/boosterstation/nss.vue


文件差异内容过多而无法显示
+ 1899 - 5297
src/views/WindSite/components/boosterstation/pl1.vue


+ 8 - 7
src/views/WindSite/pages/BoosterStation.vue

@@ -134,11 +134,19 @@ export default {
                 text: ele.name,
                 code: ele.id,
               });
+			  if(ele.id == 'QS_FDC'){
+				// 当点击为宋六时
+				btnGroup[0].btns.push({
+				  text: '宋堡第六风电场',
+				  code: 'QS3_FDC',
+				});
+			  }
             } else {
 				btnGroup[1].btns.push({
 				  text: ele.name,
 				  code: ele.id,
 				});
+				
 				if(ele.id == 'PL_GDC'){
 					btnGroup[1].btns.push({
 					  text: '平罗二期光伏电站',
@@ -147,13 +155,6 @@ export default {
 				}
             }
           });
-			
-			
-			// 当点击为宋六时
-			btnGroup[0].btns.push({
-			  text: '宋堡第六风电场',
-			  code: 'QS3_FDC',
-			});
           that.btnGroups = btnGroup;
           that.renderBtnActiveIndex();
         },

+ 12 - 7
src/views/WindSite/pages/Home/Home.vue

@@ -327,7 +327,7 @@
           </panel>
         </div>
         <div class="mg-l-16" style="flex: 1 1 auto" ref="lineChart">
-          <panel title="4小时功率曲线图" v-if="resCode.includes('FDC')">
+          <panel title="24小时功率曲线图" v-if="resCode.includes('FDC')">
             <multiple-line-chart
               height="18.519vh"
               v-if="Powertrend"
@@ -653,7 +653,7 @@ export default {
         case 4:
           return "orange";
         case 5:
-          return "purple";
+          return "pink";
         case 6:
           return "write";
       }
@@ -729,7 +729,7 @@ export default {
                   value: [],
                 },
                 {
-                  title: "最有功率律",
+                  title: "最优功率",
                   smooth: true, // 使用单位
                   value: [],
                 },
@@ -775,7 +775,7 @@ export default {
                   value: [],
                 },
                 {
-                  title: "最有功率律",
+                  title: "最优功率",
                   smooth: true, // 使用单位
                   value: [],
                 },
@@ -935,7 +935,7 @@ export default {
               value: [],
             },
             {
-              title: "风速",
+              title: that.resCode.indexOf("FDC") !== -1 ? "风速" : "日照",
               yAxisIndex: 0,
               value: [],
             },
@@ -1037,7 +1037,8 @@ export default {
     that.wpId = that.$route.params.wpId;
     that.paramsId = that.$route.params.wpId;
     that.resCode = that.$route.params.wpId;
-    that.stationChartData = require(`./stationJson/${that.$route.params.wpId}.js`).default;
+    that.stationChartData =
+      require(`./stationJson/${that.$route.params.wpId}.js`).default;
     that.$nextTick(() => {
       that.getWp();
       that.requestData(false);
@@ -1064,10 +1065,14 @@ export default {
   watch: {
     $route(res) {
       this.wpId = res.params.wpId;
-      this.stationChartData = require(`./stationJson/${this.$route.params.wpId}.js`).default;
+      this.stationChartData =
+        require(`./stationJson/${this.$route.params.wpId}.js`).default;
       if (res.params.wpId) {
         this.requestData(false);
         this.renderBtnActiveIndex();
+        this.requestLoss();
+        this.requestPower();
+        this.requestMonthPower();
       }
     },
   },

+ 111 - 0
src/views/WindSite/pages/Home/stationJson/HZJ_GDC.js

@@ -0,0 +1,111 @@
+export default [
+  {
+    id: "root",
+    name: "海子井光电场",
+    type: "img",
+    image: "stationimg",
+    x: 10,
+    y: 30,
+  },
+  //1号线路
+  {
+    id: "HZJ01_01",
+    type: "circle",
+    x: 120,
+    y: 60,
+    connects: ["root"],
+  },
+  {
+    id: "HZJ01_02",
+    type: "circle",
+    x: 160,
+    y: 60,
+    connects: ["HZJ01_01"],
+  },
+  {
+    id: "HZJ01_03",
+    type: "circle",
+    x: 200,
+    y: 60,
+    connects: ["HZJ01_02"],
+  },
+  {
+    id: "HZJ01_04",
+    type: "circle",
+    x: 240,
+    y: 60,
+    connects: ["HZJ01_03"],
+  },
+  {
+    id: "HZJ01_05",
+    type: "circle",
+    x: 280,
+    y: 60,
+    connects: ["HZJ01_04"],
+  },
+  {
+    id: "HZJ01_06",
+    type: "circle",
+    x: 320,
+    y: 60,
+    connects: ["HZJ01_05"],
+  },
+  {
+    id: "HZJ01_07",
+    type: "circle",
+    x: 360,
+    y: 60,
+    connects: ["HZJ01_06"],
+  },
+ //二号线路
+  {
+    id: "HZJ01_08",
+    type: "circle",
+    x: 120,
+    y: 120,
+    connects: ["root"],
+  },
+  {
+    id: "HZJ01_09",
+    type: "circle",
+    x: 160,
+    y: 120,
+    connects: ["HZJ01_08"],
+  },
+  {
+    id: "HZJ01_10",
+    type: "circle",
+    x: 200,
+    y: 120,
+    connects: ["HZJ01_09"],
+  },
+  {
+    id: "HZJ01_11",
+    type: "circle",
+    x: 240,
+    y: 120,
+    connects: ["HZJ01_10"],
+  },
+  {
+    id: "HZJ01_12",
+    type: "circle",
+    x: 280,
+    y: 120,
+    connects: ["HZJ01_11"],
+  },
+  {
+    id: "HZJ01_13",
+    type: "circle",
+    x: 320,
+    y: 120,
+    connects: ["HZJ01_12"],
+  },
+  {
+    id: "HZJ01_14",
+    type: "circle",
+    x: 360,
+    y: 120,
+    connects: ["HZJ01_13"],
+  },
+
+]

+ 19 - 9
src/views/WindSite/pages/Map.vue

@@ -10,10 +10,6 @@
     </div>
     <div class="panel-title">
       <div class="panel-title-name">
-        <!-- <span class="svg-icon svg-icon-green svg-icon-sm">
-          <SvgIcon svgid="svg-wind-site"></SvgIcon>
-        </span>
-        <span class="green">某某某风电场</span> -->
         <div class="sub-title-item">
           <img src="../../../assets/map/fan/black.png" />
           <span class="sub-title gray">接入台数</span>
@@ -46,13 +42,19 @@
         </div>
         <div class="sub-title-item">
           <img src="../../../assets/map/fan/black.png" />
-          <span class="sub-title gray">离线台数</span>
+          <span class="sub-title gray">离线台数{{wpId}}</span>
           <span class="sub-count font-num gray">{{ wpnumMap.lxts }}</span>
         </div>
       </div>
     </div>
     <div class="panel-body">
-      <MHSFDC wpId="MHS_FDC" v-if="wpId.indexOf('FDC') !== -1" />
+      <MHSFDC wpId="MHS_FDC" v-if="wpId.indexOf('MHS_FDC') !== -1" />
+	  <NSSFDC wpId="NSS_FDC" v-if="wpId.indexOf('NSS_FDC') !== -1" />
+	  <QSFDC wpId="QS_FDC" v-if="wpId.indexOf('QS_FDC') !== -1" />
+	  <SBQFDC wpId="SBQ_FDC" v-if="wpId.indexOf('SBQ_FDC') !== -1" />
+	  <XSFDC wpId="XS_FDC" v-if="wpId.indexOf('XS_FDC') !== -1" />
+	  
+	  
       <PLGDC wpId="PL_GDC" v-if="wpId.indexOf('GDC') !== -1" />
       <div class="map-popup-panel" v-show="showPopup">
         <!-- <div class="map-popup-panel-header">
@@ -164,6 +166,10 @@
 import BtnGroup2 from "@com/coms/btn/btn-group-double.vue";
 // import SvgIcon from "@com/coms/icon/svg-icon.vue";
 import MHSFDC from "@com/arcgis/MHS_FDC.vue";
+import NSSFDC from "@com/arcgis/NSS_FDC.vue";
+import QSFDC from "@com/arcgis/QS_FDC.vue";
+import SBQFDC from "@com/arcgis/SBQ_FDC.vue";
+import XSFDC from "@com/arcgis/XS_FDC.vue";
 import PLGDC from "@com/arcgis/PL_GDC.vue";
 import dataService from "@/helper/data.js";
 
@@ -174,6 +180,10 @@ export default {
   components: {
     BtnGroup2,
     MHSFDC,
+	NSSFDC,
+	QSFDC,
+	SBQFDC,
+	XSFDC,
     PLGDC
   },
   // 数据
@@ -285,7 +295,6 @@ export default {
         success(res) {
           if (res.code == 200) {
             that.wpnumMap = res.data.fczbmap.jczbmap;
-			  console.log(that.wpnumMap)
             that.wpInfoMap = res.data.wxssmap;
             that.fjmap = res.data.fjmap[0];
           }
@@ -303,7 +312,8 @@ export default {
       });
     },
     when: function () {
-      let jsonObj = dataService.get("arcgis-nx-fc1");
+		console.log(this.wpId.toLowerCase())
+      let jsonObj = dataService.get("arcgis-mhs");
       this.fans = jsonObj;
       jsonObj.forEach((item) => {
         let obj = this.fjmap.find((t) => {
@@ -357,7 +367,7 @@ export default {
           false
         );
       });
-      let lineJsonObj = dataService.get("arcgis-nx-fc1-line");
+      let lineJsonObj = dataService.get("arcgis-mhs-line");
       this.$refs.arcgis.addFanByJson(jsonObj, lineJsonObj);
     },
     clickMap: function (info) {

+ 31 - 18
src/views/WindSite/pages/Tower.vue

@@ -1,6 +1,11 @@
 <template>
   <div class="btn-group-tabs">
-      <BtnGroup2 :btnGroups="btnGroupsss" :rowIndex="rowIndex" :index="selectIndex" @select="select"></BtnGroup2>
+    <BtnGroup2
+      :btnGroups="btnGroupsss"
+      :rowIndex="rowIndex"
+      :index="selectIndex"
+      @select="select"
+    ></BtnGroup2>
   </div>
   <div class="tower">
     <Wave></Wave>
@@ -47,13 +52,13 @@
       <!-- <template v-slot:tools>
       </template> -->
       <!-- <template v-slot:default> -->
-        <multiple-line-chart
-          height="220px"
-          :list="Powertrend"
-          :units="['(MW)']"
-          :showLegend="true"
-          :hoverType="'axis'"
-        />
+      <multiple-line-chart
+        height="220px"
+        :list="Powertrend"
+        :units="['(MW)']"
+        :showLegend="true"
+        :hoverType="'axis'"
+      />
       <!-- </template> -->
     </toolbar-panel>
   </div>
@@ -92,8 +97,8 @@ export default {
   data() {
     return {
       btnGroupsss: [],
-      rowIndex:1,
-      selectIndex:1,
+      rowIndex: 1,
+      selectIndex: 1,
       timmer: null, // 计时器
       cftmap: {},
       glvos: [],
@@ -150,7 +155,6 @@ export default {
           id: that.wpId,
         },
         success(res) {
-
           let rdlKey = ["value1", "value2", "value3", "speed"];
           let DayPower = {
             // 图表所用单位
@@ -263,17 +267,17 @@ export default {
         },
       });
     },
-    getWp () {
+    getWp() {
       let that = this;
       that.API.requestData({
         method: "GET",
         subUrl: "powercompare/windfarmAllAjax",
-        success (res) {
+        success(res) {
           let btnGroups = [
             {
               icon: "svg-wind-site",
               btns: [],
-            }
+            },
           ];
 
           res.data.forEach((ele, index) => {
@@ -282,7 +286,7 @@ export default {
                 text: ele.name,
                 code: ele.id,
               });
-            } 
+            }
           });
 
           that.btnGroupsss = btnGroups;
@@ -290,7 +294,7 @@ export default {
         },
       });
     },
-    renderBtnActiveIndex () {
+    renderBtnActiveIndex() {
       this.btnGroupsss.forEach((pEle, pIndex) => {
         pEle.btns.forEach((cEle, cIndex) => {
           if (cEle.code === this.wpId) {
@@ -301,12 +305,12 @@ export default {
       });
     },
 
-    select (res) {
+    select(res) {
       this.$router.replace({
         path: `/monitor/windsite/tower/${res.code}`,
       });
       this.wpId = res.code;
-      this.renderBtnActiveIndex ();
+      this.renderBtnActiveIndex();
       this.requestData(false);
       this.requestLine();
     },
@@ -314,6 +318,15 @@ export default {
 
   created() {
     let that = this;
+    if (that.$route.params.wpId.indexOf("GDC") !== -1) {
+      that.$router.replace({
+        path: `/monitor/windsite/tower/MHS_FDC`,
+      });
+    } else {
+      that.$router.replace({
+        path: `/monitor/windsite/tower/${that.$route.params.wpId}`,
+      });
+    }
     that.wpId = that.$route.params.wpId;
     that.getWp();
     that.$nextTick(() => {

+ 49 - 13
src/views/device/device.vue

@@ -37,7 +37,7 @@
               新增
             </button>
             <el-input
-            style="width:180px;margin: 0 10px;"
+              style="width: 180px; margin: 0 10px"
               v-model="state.SearchVal"
               placeholder="筛选"
               :prefix-icon="Search"
@@ -88,7 +88,7 @@
             style="width: 100%"
             height="700"
           >
-            <el-table-column type="index" width="50" align="center"/>
+            <el-table-column type="index" width="50" align="center" />
             <el-table-column
               prop="metriccode"
               label="测点编码"
@@ -129,7 +129,11 @@
               </template>
             </el-table-column>
 
-            <el-table-column prop="unitname" label="单位" align="center"></el-table-column>
+            <el-table-column
+              prop="unitname"
+              label="单位"
+              align="center"
+            ></el-table-column>
             <el-table-column
               prop="categorydata"
               label="测点类型"
@@ -140,7 +144,11 @@
               label="物理类型"
               align="center"
             ></el-table-column>
-            <el-table-column prop="description" label="描述" align="center"></el-table-column>
+            <el-table-column
+              prop="description"
+              label="描述"
+              align="center"
+            ></el-table-column>
             <el-table-column label="操作" width="180" align="center">
               <template #default="scope">
                 <el-button
@@ -159,6 +167,17 @@
             </el-table-column>
           </el-table>
         </el-tab-pane>
+        <div class="pagination">
+          <el-pagination
+            background
+            layout="total, prev, pager, next"
+            hide-on-single-page
+            :current-page="query.page"
+            :page-size="query.limit"
+            :total="pageTotal"
+            @current-change="handlePageChange"
+          ></el-pagination>
+        </div>
         <el-tab-pane label="故障模式">
           <faultmode />
         </el-tab-pane>
@@ -529,13 +548,17 @@ provide(
 );
 //fifterSearch
 const fifterSearch = () => {
-  state.fifterSearchTableData = state.pointTableData.filter((e) => {
-    return (
-      e.name.includes(state.SearchVal) |
-      e.categorydata.includes(state.SearchVal) |
-      e.metriccode.includes(state.SearchVal)
-    );
-  });
+  if (state.SearchVal == "") {
+    return state.fifterSearchTableData = state.pointTableData;
+  } else {
+    state.fifterSearchTableData = state.pointTableData.filter((e) => {
+      return (
+        e.name.includes(state.SearchVal) |
+        e.categorydata.includes(state.SearchVal) |
+        e.metriccode.includes(state.SearchVal)
+      );
+    });
+  }
 };
 // tree click
 const handleNodeClick = (data) => {
@@ -687,9 +710,12 @@ const savedesc = async () => {
 ///// 基本信息
 // getPoint
 const getPoint = async (node) => {
-  const res = await point(node.code);
+  const res = await point(node.code, query.page, query.limit);
   console.warn(res);
-  state.pointTableData = res;
+  pageTotal.value = res.total;
+  state.pointTableData = res.records?.sort((a, b) => {
+    return a.id - b.id;
+  });
   fifterSearch();
 };
 // 递归解析基础数据
@@ -725,6 +751,16 @@ const export2Excel = () => {
   ];
   outExportExcel(tableHeader, tableKey, tableData, "测点导出excel");
 };
+const query = reactive({
+  page: 1,
+  limit: 15,
+});
+let pageTotal = ref(0);
+// 分页导航
+const handlePageChange = (val) => {
+  query.page = val;
+  getPoint(state.desc);
+};
 </script>
 <style lang="scss" scoped>
 .main {

+ 18 - 0
src/views/layout/Menu.vue

@@ -419,6 +419,7 @@ export default {
                   icon: "svg-wind-site",
                   path: "/health/gzzd/malfunctionRecall",
                 },
+<<<<<<< HEAD
                 {
                   text: "故障分类",
                   icon: "svg-wind-site",
@@ -429,6 +430,18 @@ export default {
                   icon: "svg-wind-site",
                   path: "/health/gzzd/yjfl",
                 },
+=======
+                // {
+                //   text: "故障分类",
+                //   icon: "svg-wind-site",
+                //   path: "/health/gzzd/gzfl",
+                // },
+                // {
+                //   text: "预警分类",
+                //   icon: "svg-wind-site",
+                //   path: "/health/gzzd/yjfl",
+                // },
+>>>>>>> b1304280f10e412f55f384f411309a5c63f6d7ad
               ],
             },
             {
@@ -1017,6 +1030,11 @@ export default {
                   path: "/others/knowledgeBase",
                 },
                 // {
+                //   text: "发电能力分析",
+                //   icon: "svg-matrix",
+                //   path: "/others/abilityAnalysis",
+                // },
+                // {
                 //   text: "风电营销样本库",
                 //   icon: "svg-matrix",
                 //   path: "/others/market",

+ 1 - 1
src/views/nxfx/qxpclfx.vue

@@ -244,7 +244,7 @@ export default {
       //时间戳处理,val=1是默认开始时间(当前月第一天),val=2是默认结束时间(今天)
       var date = new Date();
       var year = date.getFullYear(),
-        month = date.getMonth() + 1,
+        month = date.getMonth(),
         day = date.getDate() - 1;
       month >= 1 && month <= 9 ? (month = "0" + month) : "";
       day >= 0 && day <= 9 ? (day = "0" + day) : "";

+ 170 - 110
src/views/performanceAnalysis/index.vue

@@ -5,15 +5,31 @@
         <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
+              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
+              v-model="recorddate"
+              type="date"
+              value-format="YYYY-MM-DD"
+              placeholder="选择日期"
+              popper-class="date-select"
+            >
             </el-date-picker>
           </div>
         </div>
@@ -26,37 +42,77 @@
     <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 = ''"
+    >
       <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="wpId2" clearable placeholder="请选择" popper-class="select" @change="reGetWtArray">
-                <el-option v-for="item in wpArray" :key="item.id" :value="item.id" :label="item.name" />
+              <el-select
+                v-model="wpId2"
+                clearable
+                placeholder="请选择"
+                popper-class="select"
+                @change="reGetWtArray"
+              >
+                <el-option
+                  v-for="item in wpArray"
+                  :key="item.id"
+                  :value="item.id"
+                  :label="item.name"
+                />
               </el-select>
             </div>
           </div>
           <div class="query-item">
             <div class="lable">风机:</div>
             <div class="search-input">
-              <el-select v-model="wtId" clearable placeholder="请选择" popper-class="select">
-                <el-option v-for="item in wtArray" :key="item.id" :value="item.id" :label="item.name" />
+              <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="beginDate" type="date" value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
+              <el-date-picker
+                v-model="beginDate"
+                type="date"
+                value-format="YYYY-MM-DD"
+                placeholder="选择日期"
+                popper-class="date-select"
+              >
               </el-date-picker>
             </div>
           </div>
           <div class="query-item">
             <div class="lable">结束日期:</div>
             <div class="search-input">
-              <el-date-picker v-model="endDate" type="date" value-format="YYYY-MM-DD" placeholder="选择日期" popper-class="date-select">
+              <el-date-picker
+                v-model="endDate"
+                type="date"
+                value-format="YYYY-MM-DD"
+                placeholder="选择日期"
+                popper-class="date-select"
+              >
               </el-date-picker>
             </div>
           </div>
@@ -79,11 +135,11 @@ export default {
 
   // 使用组件
   components: {
-    ComTable
+    ComTable,
   },
 
   // 数据
-  data () {
+  data() {
     const that = this;
     return {
       isAsc: "asc",
@@ -92,7 +148,9 @@ export default {
       wpId: "",
       wtId: "",
       wpId2: "",
-      recorddate: new Date((new Date().getTime() - 3600 * 1000 * 24)).formatDate("yyyy-MM-dd"),
+      recorddate: new Date(new Date().getTime() - 3600 * 1000 * 24).formatDate(
+        "yyyy-MM-dd"
+      ),
       beginDate: "",
       endDate: "",
       dialogShow: false,
@@ -104,102 +162,102 @@ export default {
             field: "windturbineid",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "型号",
             field: "modelid",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日排行榜",
             field: "daytop",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日拟合优度(%)",
             field: "daygoodness",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日风速(m/s)",
             field: "dayspeed",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "月排行榜",
             field: "monthtop",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "月拟合优度(%)",
             field: "monthgoodness",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "月风速(m/s)",
             field: "monthspeed",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "年排行榜",
             field: "yeartop",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "年拟合优度(%)",
             field: "yeargoodness",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "年风速(m/s)",
             field: "yearspeed",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "操作",
             field: "",
             is_num: false,
             is_light: false,
-            template () {
+            template() {
               return "<el-button type='text' style='cursor: pointer;'>详情</el-button>";
             },
-            click (e, row) {
+            click(e, row) {
               that.jumpUrl(row);
-            }
+            },
           },
           {
             name: "操作",
             field: "",
             is_num: false,
             is_light: false,
-            template () {
+            template() {
               return "<el-button type='text' style='cursor: pointer;'>历史</el-button>";
             },
-            click (e, row) {
+            click(e, row) {
               that.getOutputspeedHistoryList(row);
-            }
-          }
+            },
+          },
         ],
         data: [],
       },
@@ -211,147 +269,147 @@ export default {
             field: "time",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "风机",
             field: "windturbineid",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日发电量",
             field: "c1",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日理论发电量",
             field: "c2",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日平均功率",
             field: "c3",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日运行小时",
             field: "c4",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日待机小时",
             field: "c5",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日故障小时",
             field: "c6",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日维护小时",
             field: "c7",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日终端小时",
             field: "c8",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日有效风时",
             field: "c9",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日损失电量",
             field: "c10",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日报警次数",
             field: "c11",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日停机次数",
             field: "c12",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日不饱和次数",
             field: "c13",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日设备可利用率",
             field: "c14",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日平均温度",
             field: "c15",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日平均湿度",
             field: "c16",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日平均压强",
             field: "c17",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日拟合优度",
             field: "c18",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "日实际/保证",
             field: "c19",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
         ],
         data: [],
@@ -362,24 +420,24 @@ export default {
   // 函数
   methods: {
     // 请求服务
-    requestData () {
+    requestData() {
       let that = this;
       that.API.requestData({
         method: "GET",
         subUrl: "powercompare/windfarmAjax",
-        success (res) {
+        success(res) {
           that.wpArray = res.data;
           that.wpId = res.data[0].id;
-          that.getOutputSpeedList(that.wpId)
-        }
+          that.getOutputSpeedList(that.wpId);
+        },
       });
     },
 
-    getOutputSpeedList (wpId) {
+    getOutputSpeedList(wpId) {
       let that = this;
       if (!that.wpId || !that.recorddate) {
         that.BASE.showMsg({
-          msg: "场站与日期不可为空"
+          msg: "场站与日期不可为空",
         });
       } else {
         that.API.requestData({
@@ -388,31 +446,30 @@ export default {
           data: {
             wpId,
             isAsc: that.isAsc,
-            recorddate: that.recorddate
+            recorddate: that.recorddate,
           },
-          success (res) {
+          success(res) {
             that.tableData.data = res.data.list;
-          }
+          },
         });
       }
-
     },
 
-    getOutputspeedHistoryList (item) {
+    getOutputspeedHistoryList(item) {
       let that = this;
 
       that.API.requestData({
         method: "GET",
         subUrl: "powercompare/windturbineAjax",
         data: {
-          wpId: item.windtpowerstationid
+          wpId: item.windtpowerstationid,
         },
-        success (res) {
+        success(res) {
           that.wtArray = res.data;
 
           that.wpId2 = item.windtpowerstationid;
           that.wtId = item.windturbineid;
-          that.beginDate = (new Date().formatDate("yyyy-MM") + '-01');
+          that.beginDate = new Date().formatDate("yyyy-MM") + "-01";
           that.endDate = new Date().formatDate("yyyy-MM-dd");
 
           that.API.requestData({
@@ -422,137 +479,140 @@ export default {
               wpId: that.wpId2,
               wtId: that.wtId,
               beginDate: that.beginDate,
-              endDate: that.endDate
+              endDate: that.endDate,
             },
-            success (res) {
-              res.data.forEach(ele => {
+            success(res) {
+              res.data.forEach((ele) => {
                 ele.time = new Date(ele.recorddate).formatDate("yyyy-MM-dd");
               });
               that.historyTableData.data = res.data;
               that.dialogShow = true;
-            }
+            },
           });
-        }
+        },
       });
     },
 
-    reGetWtArray () {
+    reGetWtArray() {
       let that = this;
       that.API.requestData({
         method: "GET",
         subUrl: "powercompare/windturbineAjax",
         data: {
-          wpId: that.wpId2
+          wpId: that.wpId2,
         },
-        success (res) {
+        success(res) {
           that.wtArray = res.data;
           that.wtId = res.data[0].id;
-        }
+        },
       });
     },
 
-    reGetHistoryTableData () {
+    reGetHistoryTableData() {
       let that = this;
       if (!that.wpId2) {
         that.BASE.showMgs({
-          msg: "场站不可为空"
+          msg: "场站不可为空",
         });
       } else if (!that.wtId) {
         that.BASE.showMgs({
-          msg: "风机不可为空"
+          msg: "风机不可为空",
         });
       } else if (!that.beginDate || !that.endDate) {
         that.BASE.showMgs({
-          msg: "开始日期与结束日期不可为空"
+          msg: "开始日期与结束日期不可为空",
         });
       } else {
         that.API.requestData({
           method: "POST",
           subUrl: "goodness/goodhistorylist",
+          showLoading: true,
           data: {
             wpId: that.wpId2,
             wtId: that.wtId,
             beginDate: that.beginDate,
-            endDate: that.endDate
+            endDate: that.endDate,
           },
-          success (res) {
-            res.data.forEach(ele => {
+          success(res) {
+            res.data.forEach((ele) => {
               ele.time = new Date(ele.recorddate).formatDate("yyyy-MM-dd");
             });
             that.historyTableData.data = res.data;
             that.dialogShow = true;
-          }
+          },
         });
       }
     },
 
-    search () {
+    search() {
       this.getOutputSpeedList(this.wpId);
     },
 
     // 外围表格导出excel
-    exportExcel () {
+    exportExcel() {
       let that = this;
-      const { export_json_to_excel } = require('@tools/excel/Export2Excel.js'); // 注意这个Export2Excel路径      
+      const { export_json_to_excel } = require("@tools/excel/Export2Excel.js"); // 注意这个Export2Excel路径
 
-      // const tHeader = ['点名', '描述']; // 上面设置Excel的表格第一行的标题       
-      // const filterVal = ['id', 'name']; // 上面的index、nickName、name是tableData里对象的属性key值   
+      // const tHeader = ['点名', '描述']; // 上面设置Excel的表格第一行的标题
+      // const filterVal = ['id', 'name']; // 上面的index、nickName、name是tableData里对象的属性key值
 
-      let tHeader = []; // 上面设置Excel的表格第一行的标题       
+      let tHeader = []; // 上面设置Excel的表格第一行的标题
       let filterVal = []; // 上面的index、nickName、name是tableData里对象的属性key值
 
-      that.tableData.column.forEach(ele => {
+      that.tableData.column.forEach((ele) => {
         if (ele.name !== "操作") {
           tHeader.push(ele.name);
           filterVal.push(ele.field);
         }
       });
 
-      const list = that.tableData.data; //把要导出的数据tableData存到list 
+      const list = that.tableData.data; //把要导出的数据tableData存到list
       const data = that.formatJson(filterVal, list);
-      export_json_to_excel(tHeader, data, '导出的Excel'); // 最后一个是表名字
+      export_json_to_excel(tHeader, data, "导出的Excel"); // 最后一个是表名字
     },
 
     // 弹窗表格导出excel
-    exportExcel2 () {
+    exportExcel2() {
       let that = this;
-      const { export_json_to_excel } = require('@tools/excel/Export2Excel.js'); // 注意这个Export2Excel路径      
+      const { export_json_to_excel } = require("@tools/excel/Export2Excel.js"); // 注意这个Export2Excel路径
 
-      // const tHeader = ['点名', '描述']; // 上面设置Excel的表格第一行的标题       
-      // const filterVal = ['id', 'name']; // 上面的index、nickName、name是tableData里对象的属性key值   
+      // const tHeader = ['点名', '描述']; // 上面设置Excel的表格第一行的标题
+      // const filterVal = ['id', 'name']; // 上面的index、nickName、name是tableData里对象的属性key值
 
-      let tHeader = []; // 上面设置Excel的表格第一行的标题       
+      let tHeader = []; // 上面设置Excel的表格第一行的标题
       let filterVal = []; // 上面的index、nickName、name是tableData里对象的属性key值
 
-      that.historyTableData.column.forEach(ele => {
+      that.historyTableData.column.forEach((ele) => {
         if (ele.name !== "操作") {
           tHeader.push(ele.name);
           filterVal.push(ele.field);
         }
       });
 
-      const list = that.historyTableData.data; //把要导出的数据tableData存到list 
+      const list = that.historyTableData.data; //把要导出的数据tableData存到list
       const data = that.formatJson(filterVal, list);
-      export_json_to_excel(tHeader, data, '导出的Excel'); // 最后一个是表名字
+      export_json_to_excel(tHeader, data, "导出的Excel"); // 最后一个是表名字
     },
 
-    formatJson (filterVal, jsonData) {
-      return jsonData.map(v => filterVal.map(j => v[j]));
+    formatJson(filterVal, jsonData) {
+      return jsonData.map((v) => filterVal.map((j) => v[j]));
     },
 
     // 页面跳转
-    jumpUrl (item) {
-      this.$router.push(`/decision/performanceAnalysis/detail/${item.windtpowerstationid}/${item.windturbineid}`);
-    }
+    jumpUrl(item) {
+      this.$router.push(
+        `/decision/performanceAnalysis/detail/${item.windtpowerstationid}/${item.windturbineid}`
+      );
+    },
   },
 
-  created () {
+  created() {
     this.requestData();
   },
 
-  mounted () { },
+  mounted() {},
 
-  unmounted () { },
+  unmounted() {},
 };
 </script>
 
@@ -580,7 +640,7 @@ export default {
     margin-top: 1.481vh;
 
     &:before {
-      content: '';
+      content: "";
       width: 0.37vh;
       height: 0.37vh;
       background: @write;

+ 33 - 23
src/views/powerCurve/index.vue

@@ -62,8 +62,9 @@
       </div>
     </div>
     <ScatterLineChart
-      xTitle="风速)m/s("
+      xTitle="风速(m/s)"
       yTitle="功率(kw)"
+      :showLegend="true"
       :height="'calc(100vh - 40px)'"
       :lineData="chartLineData"
       :data="chartData"
@@ -90,7 +91,7 @@ export default {
       wtArray: [],
       wpId: "",
       wtId: "",
-      recorddate: new Date(new Date().getTime() - 3600 * 1000 * 24).formatDate(
+      recorddate: "2021-09" || new Date(new Date().getTime() - 3600 * 1000 * 24).formatDate(
         "yyyy-MM"
       ),
       chartLineData: {
@@ -152,33 +153,42 @@ export default {
       that.API.requestData({
         method: "POST",
         subUrl: "scatter/scatterWtAjax",
+        showLoading: true,
         data: {
           wtId: that.wtId,
           year: that.recorddate.split("-")[0],
           month: that.recorddate.split("-")[1],
         },
         success(res) {
-          let chartLineData = {
-            xTitle: "风速",
-            yTitle: "功率",
-            legends: [],
-            data: [[], []],
-          };
-
-          res.data.line.forEach((ele) => {
-            chartLineData.data[0].push(ele[0]);
-            chartLineData.data[1].push(ele[1]);
-          });
-
-          let chartData = [
-            {
-              title: "功率曲线拟合",
-              value: res.data.scatter,
-            },
-          ];
-
-          that.chartLineData = chartLineData;
-          that.chartData = chartData;
+          if (res.data.line.length) {
+            let chartLineData = {
+              xTitle: "风速",
+              yTitle: "功率",
+              legends: [],
+              // data: [[], []],
+              data: [[]],
+            };
+
+            res.data.line.forEach((ele) => {
+              // chartLineData.data[0].push(ele[0]);
+              // chartLineData.data[1].push(ele[1]);
+              chartLineData.data[0].push(ele[1]);
+            });
+
+            let chartData = [
+              {
+                title: "功率曲线拟合",
+                value: res.data.scatter,
+              },
+            ];
+
+            that.chartLineData = chartLineData;
+            that.chartData = chartData;
+          } else {
+            that.BASE.showMsg({
+              msg: "所选日期区间暂无数据",
+            });
+          }
         },
       });
     },

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

@@ -309,7 +309,8 @@ export default {
             } else if (ele.windpowerstationid === 'MCH_GDC') {
               MCH_GDC.children.push(ele);
             } else {
-              JSFW.children.push(ele);
+              // JSFW.children.push(ele);
+              JSFW = ele;
             }
           });
           that.menus.push(JSFW, MHS_FDC, NSS_FDC, QS_FDC, SBQ_FDC, XS_FDC, DWK_GDC, PL_GDC, XH_GDC, MCH_GDC);

+ 286 - 0
src/views/sampleDatabase/abilityAnalysis/index.vue

@@ -0,0 +1,286 @@
+<template>
+  <div>
+    <el-row>
+      <el-col :span="6"> </el-col>
+      <el-col :span="18">
+        <div class="operation">
+          <div class="title">操作面板</div>
+          <div class="condition">
+            <div class="query">
+              <div class="lable">使用模板:</div>
+              <div class="search">
+                <el-select
+                  v-model="model"
+                  clearable
+                  placeholder="请选择"
+                  popper-class="select"
+                  style="width: 120px;"
+                >
+                  <el-option
+                    v-for="item in modelList"
+                    :key="item.value"
+                    :value="item.value"
+                    :label="item.label"
+                  />
+                </el-select>
+              </div>
+            </div>
+            <div class="query1">
+              <div class="lable">最大风速:</div>
+              <el-input size="middle" v-model="wind" clearable></el-input>
+            </div>
+            <div class="query1">
+              <div class="lable">最小风速:</div>
+              <el-input size="middle" v-model="wind" clearable></el-input>
+            </div>
+            <div class="query1">
+              <div class="lable">最大功率:</div>
+              <el-input size="middle" v-model="wind" clearable></el-input>
+            </div>
+            <div class="query1">
+              <div class="lable">最小功率:</div>
+              <el-input size="middle" v-model="wind" clearable></el-input>
+            </div>
+          </div>
+          <div class="condition">
+            <el-checkbox-group v-model="checkList">
+              <el-checkbox label="非并网"></el-checkbox>
+              <el-checkbox label="非合理值"></el-checkbox>
+              <el-checkbox label="并网后十分钟"></el-checkbox>
+              <el-checkbox label="停机前十分钟"></el-checkbox>
+              <el-checkbox label="功率曲线偏差"></el-checkbox>
+              <el-checkbox label="欠符合等级"></el-checkbox>
+            </el-checkbox-group>
+            <div class="level">
+              <el-select
+                v-model="level"
+                clearable
+                placeholder="请选择"
+                popper-class="select"
+                style="width: 80px"
+              >
+                <el-option
+                  v-for="item in levelList"
+                  :key="item.value"
+                  :value="item.value"
+                  :label="item.label"
+                />
+              </el-select>
+            </div>
+          </div>
+        </div>
+        <div>
+          <div class="chart" id="linechart3"></div>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+<script>
+import util from "@/helper/util.js";
+import partten from "@/helper/partten.js";
+import * as echarts from "echarts";
+export default {
+  data() {
+    return {
+      wind: "",
+      model: "进阶模板",
+      modelList: [
+        {
+          label: "进阶模板",
+          value: "0",
+        },
+      ],
+      checkList: [
+        "非并网",
+        "非合理值",
+        "并网后十分钟",
+        "停机前十分钟",
+        "功率曲线偏差",
+        "欠符合等级",
+      ],
+      level: "1级",
+      levelList: [
+        {
+          label: "1级",
+          value: "1",
+        },
+        {
+          label: "2级",
+          value: "2",
+        },
+      ],
+      wtId: "MG01_01",
+    };
+  },
+  created() {
+    this.$nextTick(() => {
+      this.getChart3();
+    });
+  },
+  methods: {
+    async getChart3() {
+      console.log(111111111);
+      const res = await this.API.requestData({
+        method: "POST",
+        subUrl: "yaw/getTotalRanges",
+        data: {
+          wtId: this.wtId,
+          beginDate: new Date(new Date().getTime() - 86400000).formatDate("yyyy-MM-dd"),
+          endDate: new Date().formatDate("yyyy-MM-dd"),
+          type: 1,
+        },
+      });
+      if (res && res.data && res.data.data) {
+        const xData = [];
+        const lData = [];
+        const dataMap = res.data.data;
+        for (let key in dataMap) {
+          let tmpKey = key.replace(/r/, "");
+          tmpKey = tmpKey.replace(/_/, "-");
+          if (tmpKey < 100) {
+            xData.push(tmpKey);
+            lData.push(dataMap[key]);
+          }
+        }
+        this.line3Data = lData;
+        let option = {
+          color: ["#05bb4c", "#4b55ae", "#fa8c16", "#f8de5b"],
+          tooltip: {
+            trigger: "axis",
+            backgroundColor: "rgba(0,0,0,0.4)",
+            borderColor: partten.getColor("gray"),
+            textStyle: {
+              color: "#fff",
+              fontSize: util.vh(16),
+            },
+          },
+          legend: {
+            show: false,
+            data: ["偏航次数"],
+            right: 56,
+            icon: "circle",
+            itemWidth: 6,
+            inactiveColor: "#606769",
+            textStyle: {
+              color: partten.getColor("grayl"),
+              fontSize: 12,
+            },
+          },
+          grid: {
+            top: util.vh(40),
+            left: util.vh(60),
+            right: util.vh(130),
+            bottom: util.vh(24),
+          },
+          xAxis: [
+            {
+              name: "对风偏差(度)",
+              type: "category",
+              boundaryGap: false,
+              axisLabel: {
+                formatter: "{value}",
+                fontSize: util.vh(14),
+                textStyle: {
+                  color: partten.getColor("gray"),
+                },
+              },
+              data: xData,
+            },
+          ],
+          yAxis: [
+            {
+              type: "value",
+              name: "数量",
+              axisLabel: {
+                formatter: "{value}",
+                fontSize: util.vh(14),
+              },
+              splitLine: {
+                lineStyle: {
+                  color: partten.getColor("gray") + 55,
+                  type: "dashed",
+                },
+              },
+            },
+          ],
+          series: [
+            {
+              name: "数量",
+              type: "line",
+              smooth: true,
+              zlevel: 0,
+              lineStyle: {
+                normal: {
+                  color: "#05bb4c",
+                  width: 1,
+                },
+              },
+              yAxisIndex: 0,
+              data: lData,
+            },
+          ],
+        };
+        const chart = echarts.init(document.getElementById("linechart3"));
+        chart.clear();
+        chart.setOption(option);
+        this.resize = function () {
+          chart.resize();
+        };
+        window.addEventListener("resize", this.resize);
+      }
+    },
+  },
+};
+</script>
+<style lang="less" scoped>
+.operation {
+  width: 95%;
+  border: 1px solid #ffffff;
+  margin-top: 20px;
+
+  .title {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    font-size: 20px;
+    margin-left: 10px;
+    width: 100px;
+    padding: 10px;
+    margin-top: -30px;
+    background-image: url("../../../assets/background.png");
+  }
+  .condition {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    margin-left: 20px;
+    margin-bottom: 10px;
+    .query {
+      display: flex;
+      flex-direction: row;
+      align-items: center;
+    }
+    .query1 {
+      width: 130px;
+      display: flex;
+      flex-direction: row;
+      align-items: center;
+      margin-left: 20px;
+
+      .lable {
+        width: 150px;
+      }
+    }
+    .level {
+      margin-left: 10px;
+    }
+  }
+}
+.chart {
+    width: 100%;
+    height: 220px;
+    display: block;
+    margin: auto;
+  }
+</style>

+ 2 - 1
src/views/sampleDatabase/analysis/index.vue

@@ -238,6 +238,7 @@ export default {
     },
     getData() {
       let that = this;
+      that.showData = [];
       this.API.requestData({
         method: "GET",
         subUrl: "http://192.168.1.18:9002/analyse/basic",
@@ -264,7 +265,7 @@ export default {
         let that = this;
         await this.API.requestData({
           method: "GET",
-          subUrl: "alarm/history/page2",
+          subUrl: "http://192.168.1.18:8075/alarm/history/page",
           data: {
             pagenum: 1,
             pagesize: 20000,

+ 52 - 55
src/views/sampleDatabase/fault/index.vue

@@ -2,7 +2,7 @@
 	<el-scrollbar height="92vh">
 		<div class="query mg-b-8">
 			<div class="query-items">
-				<div class="query-item" style="width: 200px;">
+				<div class="query-item" style="width: 220px;">
 					<div class="lable">场站:</div>
 					<div class="search-input">
 						<el-select v-model="station" placeholder="请选择" popper-class="select" @change="stationChange">
@@ -31,12 +31,16 @@
 						</el-select>
 					</div>
 				</div>
-				<div class="query-item" style="width: 180px;">
-					<div class="lable">型:</div>
+				<div class="query-item" style="width: 230px;">
+					<div class="lable">样本类型:</div>
 					<div class="search-input">
-						<el-select v-model="mx" collapse-tags clearable placeholder="请选择" popper-class="select">
-							<el-option key="1" value="list" label="原数据"></el-option>
-							<el-option key="2" value="alg" label="DB-SCAN"></el-option>
+						<el-select v-model="category" collapse-tags clearable placeholder="请选择" popper-class="select">
+							<el-option
+								v-for="item in categorys"
+								:key="item.value"
+								:value="item.value"
+								:label="item.label"
+							/>
 						</el-select>
 					</div>
 				</div>
@@ -51,14 +55,14 @@
 				<div class="query-actions">
 					<button class="btn" @click="list">查询</button>
 					<button class="btn" @click="query()">导入</button>
-					<button class="btn" @click="export">导出</button>
+					<button class="btn" @click="exportData()">导出</button>
 				</div>
 			</div>
 		</div>
 		<el-row :type="'flex'" class="content">
 			<ComTable :data="tableData" :pageSize="pageSize" @onPagging="onChangePage" height="84vh"
 				v-loading="tableLoading" element-loading-text="拼命加载中"
-				element-loading-background="rgba(0, 0, 0, 0.8)" v-if="mx=='list'"></ComTable>
+				element-loading-background="rgba(0, 0, 0, 0.8)" v-if="category=='0'"></ComTable>
 			<ComTable :data="tableData2" :pageSize="pageSize" @onPagging="onChangePage" height="84vh"
 				v-loading="tableLoading" element-loading-text="拼命加载中"
 				element-loading-background="rgba(0, 0, 0, 0.8)" v-else></ComTable>	
@@ -82,11 +86,15 @@
 			return {
 				active: true,
 				selectAll: true,
-				
 				pageIndex: 1,
 				pageSize: 20,
 				gzCgd: false, //传感点组件隐藏或显示
 				gzCgdData: [], //传感点参数
+				category: "0", //模型分类
+				categorys: [
+					{label: "检修样本", value: "0"},
+					{label: "DBSCAN样本", value: "1"},
+				],
 				st:'',
 				widgetArr: [],
 				ChangZhan: [],
@@ -94,7 +102,6 @@
 				fjxhArr: [],
 				widget: [],
 				model: [],
-				mx:'list',
 				time: [],
 				station: '',
 				tableData: {
@@ -312,7 +319,7 @@
 							if (res.code == 200) {
 								if(res.data.length){
 									that.gzCgdData = res.data;
-									if(that.mx == 'list'){
+									if(that.category == '0'){
 										that.st = Date.parse(new Date(row.tableTime.split(" - ")[0]));
 									}else{
 										that.st = Date.parse(new Date(row.faultTime));
@@ -390,48 +397,43 @@
 						widget: widget ? widget : that.widget,
 						station: station ? station : that.station,
 						model: that.model,
+						category: that.category,
 						st: that.time[0].valueOf(),
 						et: that.time[1].valueOf()
 					},
 					success(res) {
-						if (res.code == 200) {
-							if (res.data.length) {
-								let data = res.data;
-								if(that.mx == 'list'){
-									let k = 0;
-									for (var i = 0; i < data.length; i++) {
-											if(data[i].endtime != undefined){
-												k ++;
-												let obj = {
-													index: k,
-													tableTag: data[i].faulttype,
-													symptom: data[i].symptom,
-													tableModel: data[i].model,
-													tableTime: data[i].starttime + ' - ' + data[i].endtime,
-													tableManufacturer: data[i].manufacturer,
-													wtId: data[i].windturbineid,
-													widget:data[i].faultcode
-												};
-												that.tableData.data.push(obj);
-											}
-										}
-								}else{
-									that.tableData2.data = [];
-									let k = 0;
-									for (var i = 0; i < data.length; i++) {
-										if(data[i].endtime == undefined){
-											k ++;
-											let obj = {
-												index: k,
-												wtId: data[i].windturbineid,
-												faulttype: data[i].faulttype,
-												modelId: data[i].model,
-												faultTime: data[i].starttime,
-												widget:data[i].faultcode
-											};
-											that.tableData2.data.push(obj);
-										}
-									}
+						if (res.code == 200 && res.data.length) {
+							let data = res.data;
+							if(that.category == '0'){
+								let k = 0;
+								for (var i = 0; i < data.length; i++) {
+									k ++;
+									let obj = {
+										index: k,
+										tableTag: data[i].faulttype,
+										symptom: data[i].symptom,
+										tableModel: data[i].model,
+										tableTime: data[i].starttime + ' - ' + data[i].endtime,
+										tableManufacturer: data[i].manufacturer,
+										wtId: data[i].windturbineid,
+										widget:data[i].faultcode
+									};
+									that.tableData.data.push(obj);
+								}
+							}else{
+								that.tableData2.data = [];
+								let k = 0;
+								for (var j = 0; j < data.length; j++) {
+									k ++;
+									let obj = {
+										index: k,
+										wtId: data[j].windturbineid,
+										faulttype: data[j].faulttype,
+										modelId: data[j].model,
+										faultTime: data[j].starttime,
+										widget:data[j].faultcode
+									};
+									that.tableData2.data.push(obj);
 								}
 							}
 						}
@@ -441,7 +443,7 @@
 			formatJson(filterVal, jsonData) {
 				return jsonData.map(v => filterVal.map(j => v[j]));
 			},
-			export() {
+			exportData() {
 				let that = this;
 				const {export_json_to_excel} = require('@tools/excel/Export2Excel.js'); // 注意这个Export2Excel路径      
 				let tHeader = []; // 上面设置Excel的表格第一行的标题       
@@ -460,11 +462,6 @@
 		created() {
 			this.startAjax();
 		},
-		watch: {
-			mx(){
-				this.list();
-			}
-		},
 	};
 </script>
 

+ 152 - 125
src/views/singleAnalysis/index.vue

@@ -1,55 +1,75 @@
 <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>
-				<button class="btn green" @click="exportExcel">导出</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>
+        <button class="btn green" @click="exportExcel">导出</button>
+      </div>
+    </div>
     <div class="df-table">
       <ComTable height="78vh" :data="tableData">
-		  
-		  <template v-slot:tr v-if="tableData.data.length > 0">
-		  	<tr>
-		  		<td v-for="(item , index) in tableData.column" key="index">
-		  			{{tableDataEnd[item.field]}}
-		  		</td>
-		  	</tr>
-		  </template>
-		  
-	  </ComTable>
+        <template v-slot:tr v-if="tableData.data.length > 0">
+          <tr>
+            <td v-for="(item, index) in tableData.column" key="index">
+              {{ tableDataEnd[item.field] }}
+            </td>
+          </tr>
+        </template>
+      </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 = ''"
+    >
       test
     </el-dialog>
-      <el-dialog
-      :title="wtId+'号风机'+year+ '年'+ month+'月运行指标性能分析'"
+    <el-dialog
+      :title="wtId + '号风机' + year + '年' + month + '月运行指标性能分析'"
       v-model="dialogVisible"
       width="70%"
       top="10vh"
       custom-class="modal"
       :close-on-click-modal="false"
     >
-    <ZnzhFx :wtId=wtId :year=year :month=month />
+      <ZnzhFx :wtId="wtId" :year="year" :month="month" />
     </el-dialog>
   </div>
 </template>
@@ -63,148 +83,150 @@ export default {
 
   // 使用组件
   components: {
-   ComTable,
-   ZnzhFx
+    ComTable,
+    ZnzhFx,
   },
 
   // 数据
   data() {
     const that = this;
     return {
-      isAsc:"asc",
-      wpArray:[],
-      wpId:"",
-          dialogVisible: false,
-          wtId:"",
-          year:"",
-          month:"",
-      recorddate:new Date((new Date().getTime() - 3600 * 1000 * 24)).formatDate("yyyy-MM-dd"),
-      dialogShow:false,
-	  tableDataEnd: [], //合计
+      isAsc: "asc",
+      wpArray: [],
+      wpId: "",
+      dialogVisible: false,
+      wtId: "",
+      year: "",
+      month: "",
+      recorddate: new Date(new Date().getTime() - 3600 * 1000 * 24).formatDate(
+        "yyyy-MM-dd"
+      ),
+      dialogShow: false,
+      tableDataEnd: [], //合计
       tableData: {
         column: [
           {
             name: "机组编号",
             field: "windturbineName",
-			cursor: 'pointer',
+            cursor: "pointer",
             is_num: false,
             is_light: false,
             sortable: true,
-            click(e, row){
-              that.goznzhfx(row)
-            }
+            click(e, row) {
+              that.goznzhfx(row);
+            },
           },
           {
             name: "实际发电量(万千瓦时)",
             field: "fdl",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "理论发电量(万千瓦时)",
             field: "llfdl",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "设备利用小时数(小时)",
             field: "lyxs",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "设备可利用率(%)",
             field: "sbklyl",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "等效可用系数(%)",
             field: "tjxs",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "平均风速(m/s)",
             field: "fs",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "小风切入风速(m/s)",
             field: "xfqr",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "有效风时数(小时)",
             field: "yxfss",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "故障损失电量(万千瓦时)",
             field: "gzss",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "调度限电损失电量(万千瓦时)",
             field: "xdss",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "计划检修损失电量(万千瓦时)",
             field: "jxss",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "性能未达标损失电量(万千瓦时)",
             field: "xnss",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "受累损失电量(万千瓦时)",
             field: "slss",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "故障停用时间(小时)",
             field: "gzxs",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "检修停用时间(小时)",
             field: "jxxs",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           {
             name: "机组功率一致性系数(%)",
             field: "glyzxxs",
             is_num: false,
             is_light: false,
-            sortable: true
+            sortable: true,
           },
           // {
           //   name: "操作",
@@ -212,8 +234,8 @@ export default {
           //   is_num: false,
           //   is_light: false,
           //   template() {
-					// 			return "<el-button type='text' style='cursor: pointer;'>详情</el-button>";
-					// 	},
+          // 			return "<el-button type='text' style='cursor: pointer;'>详情</el-button>";
+          // 	},
           //   click(e, row){
           //     that.getOutputspeedHistoryList(row)
           //   }
@@ -226,14 +248,12 @@ export default {
 
   // 函数
   methods: {
-    goznzhfx(row){
+    goznzhfx(row) {
       let that = this;
-      that.wtId=row.windturbineid;
-      that.year=new Date(this.recorddate).formatDate("yyyy");
-      that.month=new Date(this.recorddate).formatDate("MM");
-      // console.log(that.wtId,'--',that.year,'---', that.month)
+      that.wtId = row.windturbineid;
+      that.year = new Date(this.recorddate).formatDate("yyyy");
+      that.month = new Date(this.recorddate).formatDate("MM");
       that.dialogVisible = true;
-      console.warn(row);
       // this.$router.push({path:`/decision/znzhfx/${row.windturbineid}/${new Date(this.recorddate).formatDate("yyyy")}/${new Date(this.recorddate).formatDate("MM")}`})
     },
     // 请求服务
@@ -243,98 +263,98 @@ export default {
         method: "GET",
         subUrl: "powercompare/windfarmAjax",
         success(res) {
-          that.wpArray=res.data;
-          that.wpId=res.data[0].id;
-          that.getOutputSpeedList(that.wpId)
-        }
+          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: "singleanalysis/singleanalysisMain",
-          data:{
+          showLoading: true,
+          data: {
             wpId,
-            isAsc:that.isAsc,
-            year:new Date(that.recorddate).getFullYear(),
-            month:(new Date(that.recorddate).getMonth() + 1)
+            isAsc: that.isAsc,
+            year: new Date(that.recorddate).getFullYear(),
+            month: new Date(that.recorddate).getMonth() + 1,
           },
           success(res) {
-            res.data.forEach(ele=>{
-              for(let key in ele){
+            res.data.forEach((ele) => {
+              for (let key in ele) {
                 ele[key] = ele[key] || 0;
               }
             });
-			that.tableDataEnd = res.data[res.data.length - 1];
-			res.data.pop();
+            that.tableDataEnd = res.data[res.data.length - 1];
+            res.data.pop();
             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,
-          beginDate: (new Date().formatDate("yyyy-MM") + '-01'),
-          endDate: new Date().formatDate("yyyy-MM-dd")
+        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=>{
+          res.data.forEach((ele) => {
             ele.time = new Date(ele.recorddate).formatDate("yyyy-MM-dd");
           });
           that.tableHistoryData.data = res.data;
           that.dialogShow = true;
-        }
+        },
       });
     },
 
-    search(){
+    search() {
       this.getOutputSpeedList(this.wpId);
     },
 
-        // 导出excel
-    exportExcel () {
+    // 导出excel
+    exportExcel() {
       let that = this;
-      const { export_json_to_excel } = require('@tools/excel/Export2Excel.js'); // 注意这个Export2Excel路径      
-      
-      // const tHeader = ['点名', '描述']; // 上面设置Excel的表格第一行的标题       
-      // const filterVal = ['id', 'name']; // 上面的index、nickName、name是tableData里对象的属性key值   
-      
-      let tHeader = []; // 上面设置Excel的表格第一行的标题       
+      const { export_json_to_excel } = require("@tools/excel/Export2Excel.js"); // 注意这个Export2Excel路径
+
+      // const tHeader = ['点名', '描述']; // 上面设置Excel的表格第一行的标题
+      // const filterVal = ['id', 'name']; // 上面的index、nickName、name是tableData里对象的属性key值
+
+      let tHeader = []; // 上面设置Excel的表格第一行的标题
       let filterVal = []; // 上面的index、nickName、name是tableData里对象的属性key值
 
-      that.tableData.column.forEach(ele=>{
-        if(ele.name !== "操作"){
+      that.tableData.column.forEach((ele) => {
+        if (ele.name !== "操作") {
           tHeader.push(ele.name);
           filterVal.push(ele.field);
         }
       });
 
-	  var list = [];
-	  that.tableData.data.forEach((i,index) =>{
-	  				  list.push(i);
-	  })
-	  list.push(that.tableDataEnd)
+      var list = [];
+      that.tableData.data.forEach((i, index) => {
+        list.push(i);
+      });
+      list.push(that.tableDataEnd);
       const data = that.formatJson(filterVal, list);
-      export_json_to_excel(tHeader, data, '导出的Excel'); // 最后一个是表名字
+      export_json_to_excel(tHeader, data, "导出的Excel"); // 最后一个是表名字
     },
 
-    formatJson (filterVal, jsonData) {
-      return jsonData.map(v => filterVal.map(j => v[j]));
+    formatJson(filterVal, jsonData) {
+      return jsonData.map((v) => filterVal.map((j) => v[j]));
     },
   },
 
@@ -368,10 +388,8 @@ export default {
     cursor: pointer;
     border: 0.093vh solid fade(@darkgray, 50%);
     position: relative;
-    overflow: auto;
     flex-grow: 1;
     margin-top: 1.481vh;
-  
 
     &:before {
       content: "";
@@ -389,3 +407,12 @@ export default {
   }
 }
 </style>
+<style lang="less">
+.draught-fan-list {
+  .el-dialog__body {
+    height: 600px;
+    max-height: 600px;
+    overflow-y: scroll;
+  }
+}
+</style>

+ 98 - 93
src/views/singleAnalysis/znzhfx.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="znzhfx">
-     <!-- <el-col :span="24">
+    <!-- <el-col :span="24">
           <div class="back">
             <button class="btn" type="button" @click="back">
               <span>返回</span>
@@ -11,88 +11,83 @@
             {{ wtId }}号风机{{ year }}年{{ month }}月运行指标性能分析
           </div>
         </el-col> -->
-    <el-scrollbar height="910px">
-      <el-row :gutter="20" class="table-panel">
-        <el-col :span="24">
-          <div class="back">
-            <button class="btn" type="button" @click="back">
-              <span>返回</span>
-            </button>
-             <button class="btn" type="button" @click="exportPDF">
-              导出
-            </button>
-          </div>
-          <div class="table-title">
-            {{ wtId }}号风机{{ year }}年{{ month }}月运行指标性能分析
-          </div>
-          <!-- <Table :data="tableData2" :canScroll="false" /> -->
-        </el-col>
-         <Table class="pdfDom" :data="tableData2" :canScroll="false" />
-      </el-row>
-      <div class="mg-b-16 anliz-des">
-        <div>
-          本月{{ wtId }}号风机风机设备利用小时数{{
-            tableVal.byzb && tableVal.byzb.lyxs
-          }}小时、同比{{
-            tableVal.tpzb && tableVal.tpzb.lyxs
-          }}小时,设备可利用率{{
-            tableVal.byzb && tableVal.byzb.sbklyl
-          }}%、同比{{ tableVal.tpzb && tableVal.tpzb.sbklyl }}}%,
-          等效可用系数{{ tableVal.byzb && tableVal.byzb.dxklyxs }}%、同比{{
-            tableVal.tpzb && tableVal.tpzb.dxklyxs
-          }}}%,静风频率达到{{ tableVal.byzb && tableVal.byzb.jfpl }}%、同比{{
-            tableVal.tpzb && tableVal.tpzb.jfpl
-          }}}%, 机组功率特性一致性系数达到{{
-            tableVal.byzb && tableVal.byzb.glyzxxs
-          }}%、同比{{ tableVal.tpzb && tableVal.tpzb.glyzxxs }}}%。
-          <br />
-          {{ wtId }}风机{{ year }}年{{ month }}月平均风速{{
-            tableVal.byzb && tableVal.byzb.fs
-          }}m/s、同比{{ tableVal.tpzb && tableVal.tpzb.fs }}m/s,
-          小风平均切入风速{{ tableVal.byzb && tableVal.byzb.xfqr }}m/s、同比{{
-            tableVal.tpzb && tableVal.tpzb.xfqr
-          }}m/s, 有效风时数{{
-            tableVal.byzb && tableVal.byzb.yxfss
-          }}小时、同比{{ tableVal.tpzb && tableVal.tpzb.yxfss }}小时,
-          实际发电电量{{ tableVal.byzb && tableVal.byzb.fdl }}万kwh、同比{{
-            tableVal.tpzb && tableVal.tpzb.fdl
-          }}万kwh,同比增长率{{ tableVal.tbzb && tableVal.tbzb.fdl }}%,
-          各项损失电量累计{{
-            tableVal.byzb && tableVal.byzb.llfdl - tableVal.byzb.fdl
-          }}万kwh、同比{{
-            tableVal.tpzb && tableVal.tpzb.llfdl - tableVal.tpzb.fdl
-          }}万kwh,同比增长率{{
-            tableVal.tbzb && tableVal.byzb.llfdl - tableVal.tbzb.fdl
-          }}%, 理论发电量{{
-            tableVal.byzb && tableVal.byzb.llfdl
-          }}万kwh,实际发电量与理论发电量相差{{
-            tableVal.tbzb && tableVal.tbzb.llfdl
-          }}万kwh。
-          <br />
-          本月静风频率
-          %,月累计静风时长0.00小时,月累计待机小时116.44小时,待机占比48.51%。
+    <el-row :gutter="20" class="table-panel">
+      <el-col :span="24">
+        <div class="back">
+          <button class="btn" type="button" @click="back">
+            <span>返回</span>
+          </button>
+          <button class="btn" type="button" @click="exportPDF">导出</button>
         </div>
+        <div class="table-title">
+          {{ wtId }}号风机{{ year }}年{{ month }}月运行指标性能分析
+        </div>
+        <!-- <Table :data="tableData2" :canScroll="false" /> -->
+      </el-col>
+      <Table class="pdfDom" :data="tableData2" :canScroll="false" />
+    </el-row>
+    <div class="mg-b-16 anliz-des">
+      <div>
+        本月{{ wtId }}号风机风机设备利用小时数{{
+          tableVal.byzb && tableVal.byzb.lyxs
+        }}小时、同比{{
+          tableVal.tpzb && tableVal.tpzb.lyxs
+        }}小时,设备可利用率{{ tableVal.byzb && tableVal.byzb.sbklyl }}%、同比{{
+          tableVal.tpzb && tableVal.tpzb.sbklyl
+        }}%, 等效可用系数{{ tableVal.byzb && tableVal.byzb.dxklyxs }}%、同比{{
+          tableVal.tpzb && tableVal.tpzb.dxklyxs
+        }}%,静风频率达到{{ tableVal.byzb && tableVal.byzb.jfpl }}%、同比{{
+          tableVal.tpzb && tableVal.tpzb.jfpl
+        }}%, 机组功率特性一致性系数达到{{
+          tableVal.byzb && tableVal.byzb.glyzxxs
+        }}%、同比{{ tableVal.tpzb && tableVal.tpzb.glyzxxs }}%。
+        <br />
+        {{ wtId }}风机{{ year }}年{{ month }}月平均风速{{
+          tableVal.byzb && tableVal.byzb.fs
+        }}m/s、同比{{ tableVal.tpzb && tableVal.tpzb.fs }}m/s,
+        小风平均切入风速{{ tableVal.byzb && tableVal.byzb.xfqr }}m/s、同比{{
+          tableVal.tpzb && tableVal.tpzb.xfqr
+        }}m/s, 有效风时数{{ tableVal.byzb && tableVal.byzb.yxfss }}小时、同比{{
+          tableVal.tpzb && tableVal.tpzb.yxfss
+        }}小时, 实际发电电量{{
+          tableVal.byzb && tableVal.byzb.fdl
+        }}万kwh、同比{{ tableVal.tpzb && tableVal.tpzb.fdl }}万kwh,同比增长率{{
+          tableVal.tbzb && tableVal.tbzb.fdl
+        }}%, 各项损失电量累计{{
+          tableVal.byzb && tableVal.byzb.llfdl - tableVal.byzb.fdl
+        }}万kwh、同比{{
+          tableVal.tpzb && tableVal.tpzb.llfdl - tableVal.tpzb.fdl
+        }}万kwh,同比增长率{{
+          tableVal.tbzb && tableVal.byzb.llfdl - tableVal.tbzb.fdl
+        }}%, 理论发电量{{
+          tableVal.byzb && tableVal.byzb.llfdl
+        }}万kwh,实际发电量与理论发电量相差{{
+          tableVal.tbzb && tableVal.tbzb.llfdl
+        }}万kwh。
+        <br />
+        本月静风频率
+        %,月累计静风时长0.00小时,月累计待机小时116.44小时,待机占比48.51%。
       </div>
-      <div class="mg-b-16">
-        <panel :title="'损失电量分析'" :showLine="true">
-          <multiple-bar-line-chart
-            :height="'21.296vh'"
-            :barData="bar1Data"
-            :lineData="lineData"
-          />
-        </panel>
-      </div>
-      <div class="mg-b-16">
-        <panel :title="'损失电量分析'" :showLine="true">
-          <vertival-bar-line-chart :height="'21.296vh'" :bardata="bar2data" />
-        </panel>
-      </div>
-      <div class="mg-b-16">
-        <panel :title="'损失电量分析'" :showLine="true" >
-          <double-line-chart :height="'21.296vh'" :list="list" />
-        </panel>
-      </div>
-    </el-scrollbar>
+    </div>
+    <div class="mg-b-16">
+      <panel :title="'损失电量分析'" :showLine="true">
+        <multiple-bar-line-chart
+          :height="'21.296vh'"
+          :barData="bar1Data"
+          :lineData="lineData"
+        />
+      </panel>
+    </div>
+    <div class="mg-b-16">
+      <panel :title="'损失电量分析'" :showLine="true">
+        <vertival-bar-line-chart :height="'21.296vh'" :bardata="bar2data" />
+      </panel>
+    </div>
+    <div class="mg-b-16">
+      <panel :title="'损失电量分析'" :showLine="true">
+        <double-line-chart :height="'21.296vh'" :list="list" />
+      </panel>
+    </div>
   </div>
 </template>
 
@@ -113,11 +108,11 @@ export default {
     MultipleBarLineChart,
     DoubleLineChart,
   },
-  props:{
+  props: {
     wtId: "",
-      year: "",
-      month: "",
-      // dialogVisible: false,
+    year: "",
+    month: "",
+    // dialogVisible: false,
   },
   data() {
     return {
@@ -394,15 +389,23 @@ export default {
   },
   methods: {
     //导出pdf
-       exportPDF (name) {
+    exportPDF(name) {
       this.BASE.showMsg({
         type: "success",
-        msg: "正在导出...请稍后..."
+        msg: "正在导出...请稍后...",
       });
-      Get_PDF.downloadPDF(document.querySelector('.pdfDom'), this.wtId +'号风机'+ this.year+'年'+ this.month +'月运行指标性能分析');
+      Get_PDF.downloadPDF(
+        document.querySelector(".pdfDom"),
+        this.wtId +
+          "号风机" +
+          this.year +
+          "年" +
+          this.month +
+          "月运行指标性能分析"
+      );
     },
     async search() {
-      console.log(this.wtId,'--',this.year,'---',this.month)
+      console.log(this.wtId, "--", this.year, "---", this.month);
       const { data } = await this.API.requestData({
         subUrl: "/singleanalysis/singleanalysisSub",
         method: "POST",
@@ -459,7 +462,7 @@ export default {
       console.warn(arr);
     },
     async searchChart() {
-       console.log(this.wtId,'--',this.year,'---', this.month)
+      console.log(this.wtId, "--", this.year, "---", this.month);
       const { data } = await this.API.requestData({
         subUrl: "/singleanalysis/singleanalysisChart",
         method: "POST",
@@ -539,9 +542,9 @@ export default {
       this.bar2data.data = arrwsdata;
       console.warn(this.bar2data);
     },
-	back(){
-		this.$router.go(-1);
-	}
+    back() {
+      this.$router.go(-1);
+    },
   },
 };
 </script>
@@ -549,6 +552,8 @@ export default {
 <style lang="less">
 .znzhfx {
   font-size: 12px;
+  height: 100%;
+  overflow-y: scroll;
   .anliz-des {
     font-size: 16px;
     color: #b3bdc0;

+ 2 - 0
src/views/totalPowerRank/index.vue

@@ -233,6 +233,7 @@ export default {
         that.API.requestData({
           method: "GET",
           subUrl: "leaderboard/totalPowerCapacityTopList",
+		  showLoading: true,
           data: {
             wpIps: that.wpId.length ? that.wpId.toString() : that.wpIps,
             isAsc: that.isAsc,
@@ -249,6 +250,7 @@ export default {
             res.data.forEach((ele) => {
               ele.beginDate = new Date(ele.beginDate).formatDate("yyyy-MM-dd");
               ele.endDate = new Date(ele.beginDate).formatDate("yyyy-MM-dd");
+			  ele.speed = ele.speed.toFixed(2);
             });
             res.data.sort((a, b) => {
               return b.power - a.power;

+ 4 - 47
src/views/warn/gfgj.vue

@@ -5,21 +5,12 @@
 				<div class="query-item">
 					<div class="lable">光伏:</div>
 					<div class="search-input">
-						<el-select v-model="wpId" clearable placeholder="请选择" popper-class="select" @change=" (wpId) => { Windturbines(); } ">
+						<el-select v-model="wpId" clearable placeholder="请选择" popper-class="select" >
 							<el-option v-for="item in ChangZhan" :key="item.id" :value="item.id" :label="item.name"></el-option>
 						</el-select>
 					</div>
 				</div>
 				<div class="query-item">
-					<div class="lable">机组:</div>
-					<div class="search-input">
-						<el-select v-model="wtId" placeholder="请选择" popper-class="select">
-							<el-option v-for="item in windturbines" :key="item.id" :label="item.name" :value="item.id">
-							</el-option>
-						</el-select>
-					</div>
-				</div>
-				<div class="query-item">
 				  <div class="lable">描述:</div>
 				  <div class="search-input">
 				    <el-input v-model="alarmDesc" placeholder="报警描述"></el-input>
@@ -66,8 +57,6 @@
 				waitAjax:true,//等待执行完了再加载table
 				ChangZhan: [],
 				wpId: "",
-				wtId: "",
-				windturbines: [],
 				alarmDesc: "",
 				startDate: "",
 				endDate: "",
@@ -80,36 +69,24 @@
 							field: "stationName",
 							is_num: false,
 							is_light: false,
-							id: "id",
-						},
-						{
-							name: "机组",
-							field: "windturbineName",
-							is_num: false,
-							is_light: false,
-							id: "id",
-						},
-
+						}, 
 						{
 							name: "报警时间",
 							field: "alertTime",
 							is_num: false,
 							is_light: false,
-							id: "id",
 						},
 						{
 							name: "报警描述",
 							field: "alertText",
 							is_num: false,
 							is_light: false,
-							id: "id",
 						},
 						{
 							name: "报警类别",
-							field: "category2",
+							field: "category1",
 							is_num: false,
 							is_light: false,
-							id: "id",
 						},
 						{
 							name: "报警等级",
@@ -117,7 +94,6 @@
 							is_num: false,
 							is_light: false,
 							sortable: true,
-							id: "id",
 						},
 					],
 					data: [],
@@ -142,7 +118,6 @@
 					success(res) {
 						that.ChangZhan = res.data;
 						that.wpId = res.data[0].id;
-						that.Windturbines(that.wpId)
 						if(that.waitAjax){
 							that.getTable();
 							that.waitAjax=false;
@@ -150,24 +125,6 @@
 					},
 				});
 			},
-			Windturbines(wpId) {
-				let that = this;
-				that.API.requestData({
-					method: "GET",
-					baseURL: "http://10.155.32.4:8082/",
-					subUrl: "powercompare/windturbineAjax",
-					data: {
-						wpId: wpId
-					},
-					success(res) {
-						that.windturbines = res.data;
-						that.windturbines.unshift({
-							id: "",
-							name: "请选择"
-						});
-					},
-				});
-			},
 			getTable() {
 				let that = this;
 				this.tableLoading = true;
@@ -182,7 +139,6 @@
 						starttime: this.startDate,
 						endtime: this.endDate,
 						keyword: this.alarmDesc,
-						windturbineid: this.wtId,
 						pagenum: this.pageIndex,
 						pagesize: this.pageSize,
 					},
@@ -192,6 +148,7 @@
 							let data = res.data.records;
 							data.forEach(ele=>{
 								ele.messageType = messageType[parseInt(ele.messageType) - 1];
+								ele.category1 == 'GF' ? ele.category1 = '光伏': ele.category1 = '升压站';
 							})
 							that.tableData.data = data;
 							that.tableData.total = res.data.total;

+ 58 - 10
src/views/windAnalysis/phdffx.vue

@@ -5,29 +5,65 @@
         <div class="query-item">
           <div class="lable">场站:</div>
           <div class="search-input">
-            <el-select v-model="wpId" clearable placeholder="请选择" popper-class="select" @change="(wpId) => { getTurbines() }">
-              <el-option v-for="item in wpList" :key="item.id" :value="item.id" :label="item.name"></el-option>
+            <el-select
+              v-model="wpId"
+              clearable
+              placeholder="请选择"
+              popper-class="select"
+              @change="
+                (wpId) => {
+                  getTurbines();
+                }
+              "
+            >
+              <el-option
+                v-for="item in wpList"
+                :key="item.id"
+                :value="item.id"
+                :label="item.name"
+              ></el-option>
             </el-select>
           </div>
         </div>
         <div class="query-item">
           <div class="lable">机组:</div>
           <div class="search-input">
-            <el-select v-model="wtId" placeholder="请选择" popper-class="select">
-              <el-option v-for="item in wtList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+            <el-select
+              v-model="wtId"
+              placeholder="请选择"
+              popper-class="select"
+            >
+              <el-option
+                v-for="item in wtList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              ></el-option>
             </el-select>
           </div>
         </div>
         <div class="query-item">
           <div class="lable">开始日期:</div>
           <div class="search-input">
-            <el-date-picker v-model="startDate" type="date" placeholder="开始日期" popper-class="date-select" value-format="YYYY-MM-DD"></el-date-picker>
+            <el-date-picker
+              v-model="startDate"
+              type="date"
+              placeholder="开始日期"
+              popper-class="date-select"
+              value-format="YYYY-MM-DD"
+            ></el-date-picker>
           </div>
         </div>
         <div class="query-item">
           <div class="lable">结束日期:</div>
           <div class="search-input">
-            <el-date-picker v-model="endDate" type="date" placeholder="开始日期" popper-class="date-select" value-format="YYYY-MM-DD"></el-date-picker>
+            <el-date-picker
+              v-model="endDate"
+              type="date"
+              placeholder="开始日期"
+              popper-class="date-select"
+              value-format="YYYY-MM-DD"
+            ></el-date-picker>
           </div>
         </div>
         <div class="query-actions">
@@ -51,7 +87,14 @@
         <div class="chart" id="linechart3"></div>
       </panel>
     </div>
-    <el-dialog :title="'偏航对风分析明细'" v-model="dialogShow" width="80%" top="10vh" custom-class="modal dBody" :close-on-click-modal="true">
+    <el-dialog
+      :title="'偏航对风分析明细'"
+      v-model="dialogShow"
+      width="80%"
+      top="10vh"
+      custom-class="modal dBody"
+      :close-on-click-modal="true"
+    >
       <div class="chart" id="linechartDialog"></div>
     </el-dialog>
   </div>
@@ -89,6 +132,9 @@ export default {
 
     this.getCharts();
   },
+  updated() {
+    this.getCharts();
+  },
   methods: {
     // 场站
     async getStations() {
@@ -110,9 +156,11 @@ export default {
       this.wtId = res.data.data[0].id;
     },
     getCharts() {
-      this.getChart1();
-      this.getChart2();
-      this.getChart3();
+      this.$nextTick(() => {
+        this.getChart1();
+        this.getChart2();
+        this.getChart3();
+      });
     },
     async getChart1() {
       const res = await this.API.requestData({