Browse Source

Merge branch 'yx' of http://61.161.152.110:10101/r/electronic-map into yx

刘靖诗 3 years ago
parent
commit
85c594668f
82 changed files with 4368 additions and 3096 deletions
  1. BIN
      public/favicon.ico
  2. 7 1
      src/App.vue
  3. 11 0
      src/assets/icon/svg/menu/dbgl.svg
  4. 11 0
      src/assets/icon/svg/menu/dlyc.svg
  5. 11 0
      src/assets/icon/svg/menu/fjfx.svg
  6. 11 0
      src/assets/icon/svg/menu/jjyx.svg
  7. 11 0
      src/assets/icon/svg/menu/phb.svg
  8. 11 0
      src/assets/icon/svg/menu/qxfx.svg
  9. 11 0
      src/assets/icon/svg/menu/q健康.svg
  10. 13 0
      src/assets/icon/svg/menu/q实时监视.svg
  11. 12 0
      src/assets/icon/svg/menu/q曲线.svg
  12. 12 0
      src/assets/icon/svg/menu/q趋势.svg
  13. 11 0
      src/assets/icon/svg/menu/slgl.svg
  14. 11 0
      src/assets/icon/svg/menu/s升压站.svg
  15. 12 0
      src/assets/icon/svg/menu/s地图.svg
  16. 12 0
      src/assets/icon/svg/menu/s场站监视.svg
  17. 12 0
      src/assets/icon/svg/menu/s总貌.svg
  18. 16 0
      src/assets/icon/svg/menu/s指标列表.svg
  19. 11 0
      src/assets/icon/svg/menu/s测风塔.svg
  20. 13 0
      src/assets/icon/svg/menu/ztfx.svg
  21. 11 0
      src/assets/icon/svg/menu/专家知识.svg
  22. 11 0
      src/assets/icon/svg/menu/健康管理.svg
  23. 11 0
      src/assets/icon/svg/menu/全生命周期.svg
  24. 13 0
      src/assets/icon/svg/menu/原始数据查询.svg
  25. 12 0
      src/assets/icon/svg/menu/可靠性分析.svg
  26. 11 0
      src/assets/icon/svg/menu/安全管控.svg
  27. 12 0
      src/assets/icon/svg/menu/报表管理.svg
  28. 11 0
      src/assets/icon/svg/menu/报表首页.svg
  29. 12 0
      src/assets/icon/svg/menu/故障诊断.svg
  30. 11 0
      src/assets/icon/svg/menu/智慧检修.svg
  31. 11 0
      src/assets/icon/svg/menu/智能报表.svg
  32. 11 0
      src/assets/icon/svg/menu/沙盘.svg
  33. 11 0
      src/assets/icon/svg/menu/等级评估.svg
  34. 12 0
      src/assets/icon/svg/menu/统计分析.svg
  35. 12 0
      src/assets/icon/svg/menu/能效分析.svg
  36. 14 0
      src/assets/icon/svg/menu/自定制报表管理.svg
  37. 11 0
      src/assets/icon/svg/menu/预警记录.svg
  38. 14 0
      src/assets/icon/svg/menu/风光资源分析.svg
  39. BIN
      src/assets/userhead.jpg
  40. 12 3
      src/components/chart/line/multiple-line-chart.vue
  41. 789 784
      src/router/index.js
  42. 474 518
      src/views/Decision/Decision1.vue
  43. 47 24
      src/views/Decision/Decision1Mx.vue
  44. 8 1
      src/views/Decision/Decision3Db.vue
  45. 2 1
      src/views/Decision/Decision4.vue
  46. 21 105
      src/views/Decision/table.vue
  47. 66 16
      src/views/HealthControl/Health0.vue
  48. 1 1
      src/views/HealthControl/Health1.vue
  49. 4 4
      src/views/HealthControl/Health4.vue
  50. 29 27
      src/views/HealthControl/Health6.vue
  51. 0 8
      src/views/HealthControl/HealthMonth.vue
  52. 7 0
      src/views/HealthControl/HealthTab3.vue
  53. 28 5
      src/views/HealthControl/HealthTab4.vue
  54. 0 8
      src/views/HealthControl/HealthYear.vue
  55. 0 508
      src/views/HealthControl/fault-diagnosis.vue
  56. 130 0
      src/views/HealthControl/healthTab4History.vue
  57. 25 171
      src/views/HealthControl/infotrack2.vue
  58. 3 3
      src/views/LightMatrix1/LightMatrix1.vue
  59. 2 0
      src/views/NewPages/alarm-center-2.vue
  60. 1 1
      src/views/NewPages/dialogs.vue
  61. 17 6
      src/views/NewPages/forecast-system.vue
  62. 1 1
      src/views/NewPages/personnel.vue
  63. 4 1
      src/views/NewPages/znzhfx.vue
  64. 203 203
      src/views/WindSite/WindSite.vue
  65. 11 11
      src/views/WindSite/pages/Home/Home.vue
  66. 9 3
      src/views/WindSite/pages/Home/light-matrix.vue
  67. 2 1
      src/views/WindSite/pages/Map.vue
  68. 6 2
      src/views/WindSite/pages/Matrix.vue
  69. 171 120
      src/views/WindSite/pages/Tower.vue
  70. 1 1
      src/views/WindSite/pages/Tower/WindTower.vue
  71. 9 9
      src/views/layout/Header.vue
  72. 605 531
      src/views/layout/Menu.vue
  73. 621 0
      src/views/malfunctionRecall/components/fault-diagnosis.vue
  74. 2 3
      src/views/malfunctionRecall/index.vue
  75. 1 1
      src/views/malfunctionStatistics/index.vue
  76. 21 3
      src/views/singleAnalysis/index.vue
  77. 1 1
      src/views/warnStatistics/index.vue
  78. 582 0
      src/views/windAnalysis/phdffx.vue
  79. 9 5
      src/views/wtSaturability/tab1.vue
  80. 4 2
      src/views/wtSaturability/tab2.vue
  81. 4 2
      src/views/wtSaturability/tab3.vue
  82. 5 1
      vue.config.js

BIN
public/favicon.ico


+ 7 - 1
src/App.vue

@@ -201,6 +201,7 @@ export default {
       // 当前子系统
       root: "",
       isLogined: true,
+      memuCloseTimeout: null,
     };
   },
 
@@ -242,9 +243,14 @@ export default {
     },
     showMenu() {
       this.isShowMenu = true;
+      this.memuCloseTimeout && clearTimeout(this.memuCloseTimeout);
     },
     hideMenu() {
-      this.isShowMenu = false;
+      const that = this;
+      this.memuCloseTimeout = setTimeout(function(){
+        that.isShowMenu = false;
+      }, 500 )
+      
     },
     login(params) {
       if (params.username && params.password) this.isLogined = true;

File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/dbgl.svg


+ 11 - 0
src/assets/icon/svg/menu/dlyc.svg

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="150px" height="150px" viewBox="0 0 150 150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
+    <title>电量 (1)-01-01</title>
+    <desc>Created with Sketch.</desc>
+    <g id="页面1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="电量-(1)-01-01" fill="#2C2C2C" fill-rule="nonzero">
+            <path d="M75,0 C33.6,0 0,33.6 0,75 C0,116.4 33.6,150 75,150 C116.4,150 150,116.4 150,75 C150,33.6 116.4,0 75,0 Z M71.9,119 L78.4,85.8 L41.7,85.8 L78.3,31 L71.8,66.9 L108.3,66.9 L71.9,119 Z" id="形状"></path>
+        </g>
+    </g>
+</svg>

File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/fjfx.svg


+ 11 - 0
src/assets/icon/svg/menu/jjyx.svg

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="151px" height="136px" viewBox="0 0 151 136" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
+    <title>经济运行</title>
+    <desc>Created with Sketch.</desc>
+    <g id="页面1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="经济运行" fill="#2C2C2C" fill-rule="nonzero">
+            <path d="M142,0 C147,0 151,4.1 151,9 L151,9 L151,126.8 C151,131.8 146.9,135.8 142,135.8 L9,135.8 C4,135.8 0,131.7 0,126.8 L0,86.6 L35.3,56.9 L75.1,66 L102.5,44.2 L112.5,55 L128.1,10.2 L82.4,22.6 L92.2,33.2 L71.4,49.7 L31.3,40.5 L0,66.9 L0,9 C0,4 4.1,0 9,0 L9,0 L142,0 L142,0 Z M45.3,83 L30.3,83 L30.3,113.3 L45.4,113.3 L45.4,83 L45.3,83 Z M83,83 L68,83 L68,113.3 L83,113.3 L83,83 Z M120.8,68 L105.7,68 L105.7,113.3 L120.8,113.3 L120.8,68 Z" id="形状"></path>
+        </g>
+    </g>
+</svg>

File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/phb.svg


File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/qxfx.svg


File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/q健康.svg


+ 13 - 0
src/assets/icon/svg/menu/q实时监视.svg

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="175px" height="176px" viewBox="0 0 175 176" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
+    <title>实时监视</title>
+    <desc>Created with Sketch.</desc>
+    <g id="页面1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="实时监视" transform="translate(0.085938, 0.500000)" fill="#000000" fill-rule="nonzero">
+            <path d="M140.039062,0 L174.414062,59.55 L63.2390625,123.75 L28.8640625,64.2 L140.026563,0 L140.039062,0 Z M135.126563,18.3125 L47.1640625,69.0875 L68.1390625,105.4125 L156.101562,54.6375 L135.126563,18.3125 Z" id="形状"></path>
+            <path d="M0.0515625,80.8125 L48.9015625,73.0625 L66.0140625,102.6875 L34.4390625,140.375 L0.0640625,80.8125 L0.0515625,80.8125 Z M21.4015625,90.9875 L36.4640625,117.075 L49.7015625,101.275 L41.8890625,87.7375 L21.3890625,90.9875 L21.4015625,90.9875 Z M112.514062,88.6375 L112.514062,174.825 L100.014062,174.825 L100.014062,88.625 L112.514062,88.6375 Z" id="形状"></path>
+            <polygon id="路径" points="153.201562 162.325 153.201562 174.825 106.264062 174.825 106.264062 162.325"></polygon>
+        </g>
+    </g>
+</svg>

+ 12 - 0
src/assets/icon/svg/menu/q曲线.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="205px" height="200px" viewBox="0 0 205 200" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
+    <title>曲线</title>
+    <desc>Created with Sketch.</desc>
+    <g id="页面1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="曲线" fill="#2C2C2C" fill-rule="nonzero">
+            <path d="M196,191.3 L9,191.3 L196,191.3 Z M77,131.8 L83.6,126.1 L182,40.5 L77,131.8 L77,131.8 Z" id="形状"></path>
+            <polyline id="路径" points="0.4 121.7 0.4 0 17.8 0 17.8 107.7 37.6 91.7 47.5 83.4 77.9 119.6 182.9 28.4 194.3 41.5 76.1 144.1 67.7 134.4 67.7 134.4 66.7 133.2 64.7 130.9 64.7 130.9 45.3 107.7 17.8 130 17.8 182.6 204.8 182.6 204.8 200 0.4 200 0.4 126.6"></polyline>
+        </g>
+    </g>
+</svg>

File diff suppressed because it is too large
+ 12 - 0
src/assets/icon/svg/menu/q趋势.svg


+ 11 - 0
src/assets/icon/svg/menu/slgl.svg

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="166px" height="172px" viewBox="0 0 166 172" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
+    <title>三率</title>
+    <desc>Created with Sketch.</desc>
+    <g id="页面1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="三率" fill="#2C2C2C" fill-rule="nonzero">
+            <path d="M107.4,122.9 C93.9,122.9 82.9,133.9 82.9,147.4 C82.9,160.9 93.9,171.9 107.4,171.9 C120.9,171.9 131.9,160.9 131.9,147.4 C131.9,133.8 120.9,122.9 107.4,122.9 Z M35.3,84.2 C15.8,84.2 0,100 0,119.4 C0,138.9 15.8,154.7 35.3,154.7 C54.8,154.7 70.6,138.9 70.6,119.4 C70.6,100 54.8,84.2 35.3,84.2 Z M119.8,0 C94.4,0 73.9,20.6 73.9,45.9 C73.9,71.3 94.5,91.8 119.8,91.8 C145.2,91.8 165.700363,71.2 165.700363,45.9 C165.8,20.6 145.2,0 119.8,0 Z" id="形状"></path>
+        </g>
+    </g>
+</svg>

File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/s升压站.svg


File diff suppressed because it is too large
+ 12 - 0
src/assets/icon/svg/menu/s地图.svg


File diff suppressed because it is too large
+ 12 - 0
src/assets/icon/svg/menu/s场站监视.svg


File diff suppressed because it is too large
+ 12 - 0
src/assets/icon/svg/menu/s总貌.svg


+ 16 - 0
src/assets/icon/svg/menu/s指标列表.svg

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="176px" height="157px" viewBox="0 0 176 157" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
+    <title>指标列表</title>
+    <desc>Created with Sketch.</desc>
+    <g id="页面1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="指标列表" transform="translate(-0.148438, 0.210938)" fill="#2C2C2C" fill-rule="nonzero">
+            <path d="M0.5,68.8 L69.3,68.8 L69.3,0 L0.5,0 L0.5,68.8 Z M13,12.5 L56.8,12.5 L56.8,56.3 L13,56.3 L13,12.5 Z" id="形状"></path>
+            <path d="M0.5,156.2 L69.3,156.2 L69.3,87.4 L0.5,87.4 L0.5,156.2 Z M13,100 L56.8,100 L56.8,143.8 L13,143.8 L13,100 Z" id="形状"></path>
+            <rect id="矩形" x="84.7" y="6.2" width="90.8" height="12.5"></rect>
+            <rect id="矩形" x="84.7" y="50" width="90.8" height="12.5"></rect>
+            <rect id="矩形" x="84.7" y="93.8" width="90.8" height="12.5"></rect>
+            <rect id="矩形" x="84.7" y="137.5" width="90.8" height="12.5"></rect>
+        </g>
+    </g>
+</svg>

File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/s测风塔.svg


+ 13 - 0
src/assets/icon/svg/menu/ztfx.svg

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="180px" height="180px" viewBox="0 0 180 180" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
+    <title>专题 </title>
+    <desc>Created with Sketch.</desc>
+    <g id="页面1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="专题-" transform="translate(0.109375, -0.085938)" fill="#000000" fill-rule="nonzero">
+            <path d="M71.2239584,86.4192709 L7.5572916,54.4192709 C-2.4427084,49.4192709 -2.4427084,41.4192709 7.5572916,36.4192709 L71.2239584,4.08593745 C82.890625,-1.2473959 96.2239584,-1.2473959 107.890625,4.08593745 L171.890625,36.4192709 C181.890625,41.4192709 181.890625,49.4192709 171.890625,54.4192709 L107.890625,86.4192709 C96.2239584,91.4192709 82.890625,91.4192709 71.2239584,86.4192709 Z" id="路径"></path>
+            <path d="M171.890625,81.0859375 L153.223958,71.0859375 L107.890625,93.7526041 C96.2239584,99.0859375 82.890625,99.0859375 71.2239584,93.7526041 L26.5572916,71.4192709 L7.890625,81.4192709 C-2.109375,86.4192709 -2.109375,94.4192709 7.890625,99.4192709 L71.2239584,131.419271 C82.890625,136.752604 96.2239584,136.752604 107.890625,131.419271 L171.890625,99.0859375 C181.223958,94.0859375 181.223958,86.0859375 171.890625,81.0859375 Z" id="路径"></path>
+            <path d="M171.890625,126.085938 L153.223958,116.085938 L107.890625,138.419271 C96.2239584,143.752604 82.890625,143.752604 71.2239584,138.419271 L26.5572916,116.085938 L7.890625,126.085938 C-2.109375,131.085938 -2.109375,139.085938 7.890625,144.085938 L71.2239584,176.085938 C82.890625,181.419271 96.2239584,181.419271 107.890625,176.085938 L171.890625,143.752604 C181.223958,139.085938 181.223958,130.752604 171.890625,126.085938 L171.890625,126.085938 Z" id="路径"></path>
+        </g>
+    </g>
+</svg>

File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/专家知识.svg


File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/健康管理.svg


File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/全生命周期.svg


File diff suppressed because it is too large
+ 13 - 0
src/assets/icon/svg/menu/原始数据查询.svg


+ 12 - 0
src/assets/icon/svg/menu/可靠性分析.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="126px" height="110px" viewBox="0 0 126 110" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
+    <title>可靠性分析</title>
+    <desc>Created with Sketch.</desc>
+    <g id="页面1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.85">
+        <g id="可靠性分析" transform="translate(0.000000, -1.000000)" fill="#2347FA" fill-rule="nonzero">
+            <path d="M124.9,105.3 L65.7,2.7 C64.4,0.4 61.1,0.4 59.8,2.7 L0.5,105.3 C-0.8,107.6 0.8,110.4 3.5,110.4 L122,110.4 C124.6,110.4 126.2,107.6 124.9,105.3 Z M83.1,68.9 C83.1,80.1 74.2,89.1 63,89.3 C51.5,89.5 42.2,79.9 42.2,68.3 L42.2,68.1 C42.2,60.4 46.6,53.4 53.6,50.4 C68.7,43.8 83.1,54.7 83.1,68.9 C83.1,68.9 83.1,68.9 83.1,68.9 Z" id="形状"></path>
+            <polygon id="路径" points="59.6 71.9 54.5 66.8 52 69.4 59.6 77 73.4 63.3 70.8 60.7"></polygon>
+        </g>
+    </g>
+</svg>

File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/安全管控.svg


File diff suppressed because it is too large
+ 12 - 0
src/assets/icon/svg/menu/报表管理.svg


File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/报表首页.svg


File diff suppressed because it is too large
+ 12 - 0
src/assets/icon/svg/menu/故障诊断.svg


File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/智慧检修.svg


File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/智能报表.svg


File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/沙盘.svg


File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/等级评估.svg


+ 12 - 0
src/assets/icon/svg/menu/统计分析.svg

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="160px" height="160px" viewBox="0 0 160 160" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
+    <title>统计分析</title>
+    <desc>Created with Sketch.</desc>
+    <g id="页面1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="统计分析" transform="translate(0.000000, -0.156250)" fill="#2C2C2C" fill-rule="nonzero">
+            <path d="M75,10.15625 L75,87.74125 L149.955,87.74125 C148.59,127.97125 115.555,160.15625 75,160.15625 C33.58,160.15625 0,126.57625 0,85.15625 C0,43.73625 33.58,10.15625 75,10.15625 Z" id="路径"></path>
+            <path d="M85,0.15625 C126.42,0.15625 160,33.73625 160,75.15625 C160,76.02125 159.985,76.88625 159.955,77.74625 L85,77.74625 L85,0.15625 Z" id="路径"></path>
+        </g>
+    </g>
+</svg>

File diff suppressed because it is too large
+ 12 - 0
src/assets/icon/svg/menu/能效分析.svg


File diff suppressed because it is too large
+ 14 - 0
src/assets/icon/svg/menu/自定制报表管理.svg


File diff suppressed because it is too large
+ 11 - 0
src/assets/icon/svg/menu/预警记录.svg


+ 14 - 0
src/assets/icon/svg/menu/风光资源分析.svg

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="130px" height="134px" viewBox="0 0 130 134" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
+    <title>风光资源分析</title>
+    <desc>Created with Sketch.</desc>
+    <g id="页面1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="风光资源分析" fill="#B9B9B9" fill-rule="nonzero">
+            <path d="M125.4,76.4 L4.6,76.4 C2,76.4 0,79 0,82.1 C0,85.3 2.1,87.8 4.6,87.8 L125.4,87.8 C128,87.8 130,85.2 130,82.1 C130.1,78.9 128,76.4 125.4,76.4 Z" id="路径"></path>
+            <path d="M117.3,99.1 L12.7,99.1 C10.1,99.1 8.1,101.7 8.1,104.8 C8.1,108 10.2,110.5 12.7,110.5 L117.3,110.5 C119.9,110.5 121.9,107.9 121.9,104.8 C122,101.7 119.9,99.1 117.3,99.1 Z" id="路径"></path>
+            <path d="M99.2,121.9 L30.8,121.9 C28.2,121.9 26.2,124.5 26.2,127.6 C26.2,130.8 28.3,133.3 30.8,133.3 L99.2,133.3 C101.8,133.3 103.8,130.7 103.8,127.6 C103.9,124.4 101.8,121.9 99.2,121.9 Z" id="路径"></path>
+            <path d="M65,0 C29.1,0 0,29.1 0,65 L130,65 C130,29.1 100.9,0 65,0 Z" id="路径"></path>
+        </g>
+    </g>
+</svg>

BIN
src/assets/userhead.jpg


+ 12 - 3
src/components/chart/line/multiple-line-chart.vue

@@ -244,7 +244,10 @@ export default {
     xdata() {
       if (this.list.length > 0)
         return this.list[0].value.map((t) => {
-          return t.text;
+          console.log('list0:',this.list[0])
+          console.log('tvalue:',t.value)
+          // return t.text;
+          return t.value
         });
       return [];
     },
@@ -252,6 +255,7 @@ export default {
       let result = [];
 
       this.list.forEach((value, index) => {
+        console.log('list:',this.list)
         result.push({
           name: value.title,
           type: "line",
@@ -260,7 +264,8 @@ export default {
           zlevel: index,
           lineStyle: {
             normal: {
-              color: index != 0 ? partten.getColor("gray") : this.color[index],
+              // color: index != 0 ? partten.getColor("gray") : this.color[index],
+                color: partten.getColor("gray"), 
               width: 1,
             },
             emphasis: {
@@ -329,6 +334,7 @@ export default {
     },
     yAxis() {
       let result = [];
+      console.log('units:',this.units)
       this.units.forEach((value, index) => {
         result.push({
           type: "value",
@@ -350,8 +356,9 @@ export default {
           },
         });
       });
-
+      console.log('result:',result)
       return result;
+      
     },
   },
   methods: {
@@ -404,6 +411,7 @@ export default {
         },
         xAxis: [
           {
+            name:"(m/s)",
             type: "category",
             boundaryGap: false,
             axisLabel: {
@@ -422,6 +430,7 @@ export default {
         yAxis: this.yAxis,
         series: this.series,
       };
+      console.log('this:',this)
       chart.clear();
       chart && option && chart.setOption(option);
       this.resize = function() {

File diff suppressed because it is too large
+ 789 - 784
src/router/index.js


File diff suppressed because it is too large
+ 474 - 518
src/views/Decision/Decision1.vue


+ 47 - 24
src/views/Decision/Decision1Mx.vue

@@ -69,7 +69,7 @@
 				<el-row :type="'flex'" class="content">
 					<el-col :span="10" class="pd-r-8">
 						<toolbar-panel title="风机绩效榜明细" :showLine="false">
-							<bar-line-chart :height="'calc(100vh - 200px)'" :bardata="bardata" :lineData="lineData"
+							<bar-line-chart :height="'calc(100vh - 250px)'" :bardata="bardata" :lineData="lineData"
 								:color="barColor" lineName="理论发电量" />
 						</toolbar-panel>
 					</el-col>
@@ -82,7 +82,7 @@
 											<td>
 												{{tableDataEnd.index}}
 											</td>
-											<td>
+											<td style="width:150px">
 												{{tableDataEnd.name}}
 											</td>
 											<td>
@@ -173,6 +173,7 @@
 						{
 							name: "名称",
 							field: "name",
+							width: '150px',
 							is_num: false,
 							is_light: false,
 						},
@@ -302,7 +303,8 @@
 				value5: "",
 				barColor: [partten.getColor("purple"), partten.getColor("green"), partten.getColor("pink"), partten
 					.getColor("red"), partten.getColor("orange"), partten.getColor("grayl"), partten.getColor(
-					"yellow"), partten.getColor("gray"), partten.getColor("blue"), partten.getColor("cyan"), partten
+						"yellow"), partten.getColor("gray"), partten.getColor("blue"), partten.getColor("cyan"),
+					partten
 					.getColor("brown"), partten.getColor("mauve")
 				],
 				TypeClass: 1, //风场,项目,集电线路 的按钮颜色,默认第一个
@@ -493,33 +495,54 @@
 			mxClick() {
 				this.$router.push("/decision/decision1")
 			},
-			formatJson (filterVal, jsonData) {
-			  return jsonData.map(v => filterVal.map(j => v[j]));
+			formatJson(filterVal, jsonData) {
+				return jsonData.map(v => filterVal.map(j => v[j]));
 			},
-			exportExcel () {
-			  let that = this;
-			  const { export_json_to_excel } = require('@tools/excel/Export2Excel.js'); // 注意这个Export2Excel路径      
-			  let tHeader = []; // 上面设置Excel的表格第一行的标题       
-			  let filterVal = []; // 上面的index、nickName、name是tableData里对象的属性key值
-			
-			  that.tableData.column.forEach(ele => {
-			      tHeader.push(ele.name);
-			      filterVal.push(ele.field);
-			  });
-			
-			  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'); // 最后一个是表名字
+			exportExcel() {
+				let that = this;
+				const {
+					export_json_to_excel
+				} = require('@tools/excel/Export2Excel.js'); // 注意这个Export2Excel路径      
+				let tHeader = []; // 上面设置Excel的表格第一行的标题       
+				let filterVal = []; // 上面的index、nickName、name是tableData里对象的属性key值
+
+				that.tableData.column.forEach(ele => {
+					tHeader.push(ele.name);
+					filterVal.push(ele.field);
+				});
+
+				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'); // 最后一个是表名字
 			},
 		}
 	};
 </script>
 
 <style lang="less">
+	.contentMx::-webkit-scrollbar {
+		width: 200px;
+		height: 20px;
+	}
+
+	.contentMx::-webkit-scrollbar-track-piece {
+		background-color: rgba(255, 255, 255, 0.05);
+		-webkit-border-radius: 4px;
+	}
+
+	.contentMx::-webkit-scrollbar-thumb {
+		background-color: fade(@gray, 75);
+		-webkit-border-radius: 4px;
+		outline: none;
+		outline-offset: 0px;
+		border: none;
+	}
+
+
 	.decision-page-1 {
 		.com-panel .panel-title {
 			line-height: 3.4259vh;
@@ -557,7 +580,7 @@
 			overflow: auto;
 
 			tbody {
-				height: calc(100vh - 24.5vh);
+				height: calc(100vh - 31.5vh);
 			}
 
 			td {

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

@@ -153,7 +153,7 @@
 				value2: [],
 				value4: "",
 				fzyData: [],
-				list: [],
+				list: [{value: [{text: "",value: 0,}]}],
 				listName: [],
 				TypeClass:0,
 				ajaxArr:['daydjhxdbtop','monthdjhxdbtop','yeardjhxdbtop'],
@@ -241,6 +241,13 @@
 						let thisItem = [];
 						jfpl = data.pop(); //静风频率
 						fzy = data.pop(); //风资源
+						if(fzy['1'] == null){
+							that.BASE.showMsg({
+								msg:'此风机无数据',
+								type:'success'
+							});
+							return false;
+						}
 						data.forEach((ele, index) => {
 							for (let key in ele) {
 								if (key !== "name") {

+ 2 - 1
src/views/Decision/Decision4.vue

@@ -59,6 +59,7 @@
 						},
 						{
 							name: "值际",
+							width:"200px",
 							field: "dutyname",
 							is_num: false,
 							is_light: false,
@@ -97,7 +98,7 @@
 							name: "限电损失",
 							field: "rationingloss",
 							is_num: false,
-							is_light: true,
+							is_light: false,
 						},
 						{
 							name: "受累损失",

+ 21 - 105
src/views/Decision/table.vue

@@ -2,7 +2,7 @@
   <table class="com-table">
     <thead>
       <tr>
-        <th v-for="(col, index) of data.column" :key="index" :class="{ light: col.is_light }" :style="{ width: col.width , display : col.display }" @click="onSort(col)">
+        <th v-for="(col, index) of data.column" :key="index" :class="{ light: col.is_light }" :style="{ width: col.width }" @click="onSort(col)">
           {{ col.name }}
         </th>
       </tr>
@@ -13,18 +13,18 @@
           <td
             v-for="(col, i) of data.column"
             :key="i"
-            :style="{ width: col.width , display : col.display}"
+            :style="{ width: col.width ,cursor:col.cursor}"
             :class="{ light: hoverRow == row || hoverCol == col, num: col.is_num, 'always-light': col.is_light || row.is_light }"
             @mouseenter="hover(row, col)"
             @mouseleave="leave()"
           >
-            <component :is="col.type ? col.type : 'div'" v-bind="col.props" v-html="template(col, row[col.field])" @click="onClick(col, row)"> </component>
+            <component :is="col.type ? col.type : 'span'" v-bind="col.props" v-html="template(col, row[col.field])" @click="onClick(col, row)"> </component>
           </td>
         </tr>
 		<slot name="tr"></slot>
       </tbody>
     </el-scrollbar>
-    <el-pagination class="mg-t-8" v-if="pageable" @current-change="handleCurrentChange" :current-page="currentPage4" :page-size="pageSize" layout="total, prev, pager, next, jumper" :total="data.total"> </el-pagination>
+    <el-pagination class="mg-t-8" v-if="pageable" @current-change="handleCurrentChange" :current-page="currentPage" :page-size="pageSize" :total="data.total" v-bind="elPaggingProps"> </el-pagination>
   </table>
 </template>
 
@@ -71,6 +71,11 @@ export default {
       type: Boolean,
       default: true,
     },
+    // 列高亮
+    showColHover: {
+      type: Boolean,
+      default: false,
+    },
     canScroll: {
       type: Boolean,
       default: true,
@@ -83,6 +88,16 @@ export default {
       type: String,
       default: "",
     },
+    // 新增 支持 pagging 组件
+    elPaggingProps: {
+      type: Object,
+      default: () => {
+        return {
+          layout: "total, sizes, prev, pager, next, jumper",
+          // "page-sizes": [100, 200, 300, 400],
+        };
+      },
+    },
   },
   // 自定义事件
   emits: {
@@ -173,7 +188,7 @@ export default {
     hover(row, col) {
       if (this.showHover) {
         this.hoverRow = row;
-        this.hoverCol = col;
+        if (this.showColHover) this.hoverCol = col;
       }
     },
     leave() {
@@ -209,104 +224,5 @@ export default {
 </script>
 
 <style lang="less">
-@titleGray: #9ca5a8;
-@rowGray: #606769;
-@darkBack: #536268;
-.com-table {
-  width: 100%;
-  border-collapse: collapse;
-
-  thead {
-    tr {
-      display: table;
-      table-layout: fixed;
-      width: 100%;
-
-      th {
-        background-color: fade(@darkBack, 20%);
-        height: 30px;
-        line-height: 30px;
-        color: @titleGray;
-        font-weight: 400;
-        font-size: @fontsize-s;
-        position: sticky;
-        top: 0;
-        cursor: pointer;
-
-        &.light,
-        &.always-light {
-          color: @green;
-        }
-      }
-    }
-  }
-
-  tbody {
-    display: block;
-
-    tr {
-      display: table;
-      table-layout: fixed;
-      width: 100%;
-
-      &:nth-child(2n) {
-        background-color: fade(@rowGray, 20%);
-      }
-
-      td {
-        padding: 0.556vh 0;
-        color: @rowGray;
-        text-align: center;
-        font-size: @fontsize-s;
-        overflow: hidden; //隐藏文字
-        text-overflow: ellipsis; //显示 ...
-        white-space: nowrap; //不换行
-
-        &.light,
-        &.always-light {
-          color: @green !important;
-        }
-
-        &.num {
-          font-family: "Bicubik";
-          font-weight: 400;
-        }
-      }
-    }
-  }
-
-  .el-pagination {
-    color: @gray;
-    .el-pagination__total {
-      color: @gray;
-    }
-
-    button {
-      &.btn-next,
-      &.btn-prev {
-        background: center center no-repeat fade(@gray, 20);
-        color: @gray-l;
-      }
-      &:disabled {
-        color: @gray-l;
-        background-color: fade(@gray, 20);
-        cursor: not-allowed;
-      }
-    }
-
-    .el-pager li {
-      color: @gray-l;
-      background: fade(@gray, 20);
-      &.active {
-        color: @green;
-      }
-    }
-
-    .el-input__inner {
-      color: @gray-l;
-      background: fade(@gray, 20);
-      border: 1px solid fade(@gray, 20);
-    }
-  }
-}
 </style>
+

+ 66 - 16
src/views/HealthControl/Health0.vue

@@ -760,27 +760,77 @@ export default {
      this.searchWtHealthInfo()
     },
     async searchWtHealthInfo() {
-      const { data } = await this.API.requestData({
-        subUrl: "/healthsub//findWtHealthInfo",
-        showLoading: true,
+    //   const { data } = await this.API.requestData({
+    //     subUrl: "/healthsub//findWtHealthInfo",
+    //     showLoading: true,
+    //     method:'POST',
+    //     timeout: 30000, // 请求超时时间,默认 3s ,可缺省
+    //     data:{
+    //          wtId : this.value2
+    //     }
+    //   });
+    //  console.warn(data);
+    //  this.gztableData.data = data.data.gzls
+    //  this.yjtableData.data = data.data.yjls
+    //  this.yxtableData.data = data.data.bjyxls
+    //  this.tableData2.data =  data.data.djpgls
+    //  this.tableData11.data = data.data.wdls
+    //  this.tableData3.data = data.data.qxpcls
+    //  this.tableData4.data = data.data.jkls
+    //  this.partmap = data.data.partmap
+    //  this.stoptypemap = data.data.stoptypemap
+      this.search1();
+      this.search2();
+      this.search3();
+    },
+    search1(){
+      const that = this;
+      this.API.requestData({
+        subUrl: "healthsub/findWtHealthInfo1",
         method:'POST',
-        timeout: 30000, // 请求超时时间,默认 3s ,可缺省
+        timeout: 30000, 
         data:{
              wtId : this.value2
-        }
+        },
+        success(res) {
+          that.yjtableData.data = res.data.yjls;
+          that.partmap = res.data.partmap;
+          that.stoptypemap = res.data.stoptypemap;
+          that.gztableData.data = res.data.gzls;
+        },
+      });
+    },
+    search2(){
+      const that = this;
+      this.API.requestData({
+        subUrl: "healthsub/findWtHealthInfo2",
+        method:'POST',
+        timeout: 30000, 
+        data:{
+             wtId : this.value2
+        },
+        success(res) {
+          that.yxtableData.data = res.data.bjyxls;
+          that.tableData2.data =  res.data.djpgls;
+        },
+      });
+    },
+    search3(){
+      const that = this;
+      this.API.requestData({
+        subUrl: "healthsub/findWtHealthInfo3",
+        method:'POST',
+        timeout: 30000, 
+        data:{
+             wtId : this.value2
+        },
+        success(res) {
+          that.tableData3.data = res.data.qxpcls;
+          that.tableData11.data = res.data.wdls;
+          that.tableData4.data = res.data.jkls;
+        },
       });
-     console.warn(data);
-     this.gztableData.data = data.data.gzls
-     this.yjtableData.data = data.data.yjls
-     this.yxtableData.data = data.data.bjyxls
-     this.tableData2.data =  data.data.djpgls
-     this.tableData11.data = data.data.wdls
-     this.tableData3.data = data.data.qxpcls
-     this.tableData4.data = data.data.jkls
-     this.partmap = data.data.partmap
-     this.stoptypemap = data.data.stoptypemap
     },
-
     selectSvg: function (index) {
       this.activeIndex = index;
     },

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

@@ -222,7 +222,7 @@ import Dayinfo from "./dayinfo.vue";
 import Health2 from "./Health2.vue";
 import Track from "./track.vue";
 import RankingPop from "./ranking-pop.vue";
-import FaultDiagnosis from "./fault-diagnosis.vue";
+import FaultDiagnosis from "../malfunctionRecall/components/fault-diagnosis.vue";
 export default {
   setup() {},
   components: { SvgIcon, Panel, VertivalBarLineChart, Health2, Dayinfo, Track, RankingPop, FaultDiagnosis },

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

@@ -34,16 +34,16 @@ export default {
       wpId:"",
       wtId:"",
       menuDatas: [{
-        icon: "svg-agc",
+        icon: "svg-q实时监视",
         path: "/health/health0",
       },{
-        icon: "svg-agc",
+        icon: "svg-q健康",
         path: "/health/health10",
       },{
-        icon: "svg-agc",
+        icon: "svg-q趋势",
         path: "/health/health4/healthLineChart2",
       },{
-        icon: "svg-agc",
+        icon: "svg-q曲线",
         path: "/health/health4/healthLineChart",
       }]
     };

+ 29 - 27
src/views/HealthControl/Health6.vue

@@ -71,11 +71,11 @@
         <MultipleLineChart :list="statusData" :units="['']" :height="'250px'" />
       </panel>
       <div class="selections">
-        <div class="item" @click="changeStatus('1')" :class="{ active: status === '1' }">
-          <span>良好</span>
+        <div class="item" @click="changeStatus('1')" :class="{ green: status === '1' }">
+          良好
         </div>
-        <div class="item" @click="changeStatus('2')" :class="{ active: status === '2' }">
-          <span>注意</span>
+        <div class="item" @click="changeStatus('2')" :class="{ green: status === '2' }">
+          注意
         </div>
       </div>
     </div>
@@ -84,7 +84,7 @@
 
 <script>
 import BarLineChart from "../../components/chart/combination/bar-line-chart.vue";
-import MultipleLineChart from "../../components/chart/line/multiple-line-chart.vue";
+import MultipleLineChart from "../../components/chart/line/double-line-chart.vue";
 import DualPieChart from "../../components/chart/pie/dual-pie-chart.vue";
 import Col from "../../components/coms/grid/col.vue";
 import Row from "../../components/coms/grid/row.vue";
@@ -216,20 +216,19 @@ export default {
           let statusData = [];
 
           const time = res.data.time;
-
           for (let key in res.data) {
             if (key !== "name" && key !== "time") {
               let item = res.data[key];
-
+				
               let statusItem = {
                 title: res.data.name[0][key],
-                yAxisIndex: 0,
+				smooth:true,
                 value: [],
               };
 
               time.forEach((text, index) => {
                 statusItem.value.push({
-                  text: res.data.name[0][key],
+                  text: text,
                   value: item[index],
                 });
               });
@@ -268,27 +267,31 @@ export default {
       top: 0;
       width: 50%;
       justify-content: flex-end;
-
+color: @gray;
       .item {
-        flex: 0 0 80px;
-        text-align: center;
-        line-height: 33px;
-        margin-right: 8px;
-        color: @font-color;
-        font-size: @fontsize-s;
-        background: fade(@gray, 20);
-        border: 1px solid fade(@gray, 20);
-        display: flex;
-        justify-content: center;
-        align-items: center;
-        cursor: pointer;
-
+		  margin-right: 15px;
+		  cursor: pointer;
+        // flex: 0 0 80px;
+        // text-align: center;
+        // line-height: 33px;
+        // margin-right: 8px;
+        // color: @font-color;
+        // font-size: @fontsize-s;
+        // background: fade(@gray, 20);
+        // border: 1px solid fade(@gray, 20);
+        // display: flex;
+        // justify-content: center;
+        // align-items: center;
+        // cursor: pointer;
+		.green{
+			color: @green;
+		}
         &:hover,
         &.active {
-          background: fade(@green, 20);
-          border: 1px solid @green;
+          // background: fade(@green, 20);
+          // border: 1px solid @green;
           color: @green;
-          cursor: pointer;
+          // cursor: pointer;
 
           i svg use {
             fill: @green;
@@ -348,7 +351,6 @@ export default {
         display: flex;
         height: 32px;
         align-items: center;
-
         .dot {
           width: 8px;
           height: 8px;

+ 0 - 8
src/views/HealthControl/HealthMonth.vue

@@ -1,8 +0,0 @@
-<template>
-</template>
-
-<script>
-</script>
-
-<style>
-</style>

+ 7 - 0
src/views/HealthControl/HealthTab3.vue

@@ -104,20 +104,24 @@ export default {
           { 
             name: "场站",
             field: "wfname",
+			width:'150px',
             is_light: false
           },
           { 
             name: "风机编号",
             field: "wtid",
+			width:'150px',
             is_light: false
           },
           { 
             name: "任务开始时间",
+			width:'200px',
             field: "operationdate",
             is_light: false
           },
           { 
             name: "任务接受时间",
+			width:'200px',
             field: "departuretime",
             is_light: false
           },
@@ -128,16 +132,19 @@ export default {
           },
           { 
             name: "受否下单",
+			width:'100px',
             field: "ismain",
             is_light: false
           },
           { 
             name: "任务状态",
+			width:'150px',
             field: "status",
             is_light: false
           },
           {
             name: "操作",
+			width:'100px',
             field: "",
             is_num: false,
             is_light: false,

+ 28 - 5
src/views/HealthControl/HealthTab4.vue

@@ -84,23 +84,35 @@
         custom-class="modal"
         :close-on-click-modal="false"
       >
-        <info-history :formdata="trackDate" />
+        <info-history :formdata="trackDate"/>
       </el-dialog>
     </div>
+	<el-dialog
+	  title="消缺历史"
+	  v-model="history"
+	  width="1400px"
+	  height="800px"
+	  custom-class="modal"
+	  :close-on-click-modal="false"
+	>
+	<History :formdata="trackDate"/>
+	</el-dialog>
   </div>
 </template>
 
 <script>
 import InfoHistory from "./infotrack2.vue";
+import History from "./healthTab4History.vue";
 import ComTable from "@com/coms/table/table.vue";
 import SvgIcon from "../../components/coms/icon/svg-icon.vue";
 import { warn } from "@vue/runtime-core";
 
 export default {
-  components: { InfoHistory, ComTable, SvgIcon },
+  components: { InfoHistory, ComTable, SvgIcon ,History},
   data() {
     const that = this;
     return {
+	  history:false,
       stations: [], // 场站
       windturbines: [], // 风机
       station: "",
@@ -111,21 +123,25 @@ export default {
         column: [
           {
             name: "场站",
+			width:'120px',
             field: "wfname",
             is_light: false,
           },
           {
             name: "风机编号",
+			width:'100px',
             field: "wtid",
             is_light: false,
           },
           {
             name: "任务开始时间",
+			width:'150px',
             field: "operationdate",
             is_light: false,
           },
           {
             name: "任务接受时间",
+			width:'150px',
             field: "departuretime",
             is_light: false,
           },
@@ -141,14 +157,21 @@ export default {
           },
           {
             name: "操作",
+			width:'170px',
             field: "",
             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;' value='gz'>消缺跟踪</el-button>&nbsp;&nbsp;<el-button type='text' style='cursor: pointer;' value='ls'>消缺历史</el-button>";
             },
             click(e, row) {
-              that.onClickTrack(row);
+				if('gz' == event.target.getAttribute("value")){
+					that.onClickTrack(row);
+				}
+				if('ls' == event.target.getAttribute("value")){
+					that.requestTrack(row);
+					that.history = true;
+				}
             },
           },
         ],
@@ -170,6 +193,7 @@ export default {
     },
     // 消缺跟踪
     onClickTrack(row) {
+	  this.dialogVisible = true;
       this.requestTrack(row);
     },
     // 历史查询
@@ -255,7 +279,6 @@ export default {
         success(res) {
           if (res.code == 200) {
             that.trackDate = res.data;
-            that.dialogVisible = true;
           }
         },
       });

+ 0 - 8
src/views/HealthControl/HealthYear.vue

@@ -1,8 +0,0 @@
-<template>
-</template>
-
-<script>
-</script>
-
-<style>
-</style>

File diff suppressed because it is too large
+ 0 - 508
src/views/HealthControl/fault-diagnosis.vue


+ 130 - 0
src/views/HealthControl/healthTab4History.vue

@@ -0,0 +1,130 @@
+<template>
+	<div>
+		<div class="diamain">
+			<div class="left">
+				<el-tree :data="data" :props="defaultProps" node-key="id" :default-expand-all="true"
+					custom-class="modal" @node-click="handleNodeClick"></el-tree>
+			</div>
+			<div class="right">
+				<div class="table-box">
+					<ComTable :data="tableData" height="700px"></ComTable>
+				</div>
+			</div>
+		</div>
+	</div>
+</template>
+
+<script>
+	import ComTable from "@com/coms/table/table.vue";
+	export default {
+		components: {
+			ComTable
+		},
+		props: {
+			gridDatas: {},
+			chartDatas: {},
+			formdata: Object,
+		},
+		data() {
+			return {
+				form: {
+					wtId: "",
+					wpId: ""
+				},
+				tableData: {
+					column: [{
+							name: "消缺描述",
+							field: "xqms",
+							width:'400px',
+							is_light: false,
+						},
+						{
+							name: "消缺人员",
+							field: "xqry",
+							is_light: false,
+						},
+						{
+							name: "消缺时间",
+							field: "xqsj",
+							is_light: false,
+						},
+						{
+							name: "更换部件",
+							field: "ghbj",
+							is_light: false,
+						},
+						{
+							name: "更换原因",
+							field: "ghyy",
+							is_light: false,
+						},
+						{
+							name: "更换数量",
+							field: "ghsl",
+							is_light: false,
+						},
+					],
+					data: [],
+				},
+				data: [],
+				defaultProps: {
+					children: "children",
+					label: "label",
+				},
+			};
+		},
+		methods: {
+			async searchH() {
+				var that = this;
+				const {
+					data
+				} = await that.API.requestData({
+					method: "POST",
+					subUrl: "/recommen/findLocationTreeByWtId",
+					data: {
+						wtId: that.form.wtId,
+					},
+				});
+				that.dialogVisible = true;
+				that.data = data.data;
+				that.location = data.data[0].id;
+				that.searchTab();
+			},
+			async searchTab() {
+				var that = this;
+				const {
+					data
+				} = await that.API.requestData({
+					method: "POST",
+					subUrl: "/recommen/findWobugeqByLocation",
+					data: {
+						tablepar: {
+							pageNum: 1,
+							pageSize: 10,
+						},
+						location: that.location,
+					},
+				});
+				if(data.data && data.data[0] && data.data[0].xqsj){
+					data.data[0].xqsj = new Date(data.data[0].xqsj).formatDate("yyyy-MM-dd hh:mm:ss");
+				}
+				that.tableData.data = data.data;
+			},
+			handleNodeClick(data) {
+				this.location = data.id;
+			},
+		},
+		watch: {
+			formdata(res) {
+				if (res) {
+					this.form = this.formdata;
+					this.searchH();
+				}
+			}
+		}
+	};
+</script>
+
+<style lang="less">
+
+</style>

+ 25 - 171
src/views/HealthControl/infotrack2.vue

@@ -319,34 +319,6 @@
       :show="false"
       :formdata="formdata"
     ></defect-elimination-tracking>
-    <div class="dialog-box">
-      <el-dialog
-        title="消缺历史"
-        v-model="dialogVisible"
-        width="1200px"
-        height="800px"
-        custom-class="modal"
-        :close-on-click-modal="false"
-      >
-        <div class="diamain">
-          <div class="left">
-            <el-tree
-              :data="data"
-              :props="defaultProps"
-              node-key="id"
-              :default-expand-all="true"
-              custom-class="modal"
-              @node-click="handleNodeClick"
-            ></el-tree>
-          </div>
-          <div class="right">
-            <div class="table-box">
-              <ComTable :data="tableData" height="700px"></ComTable>
-            </div>
-          </div>
-        </div>
-      </el-dialog>
-    </div>
     <el-dialog
       title="查看监控视频"
       v-model="videoBoxShow"
@@ -400,103 +372,6 @@ export default {
       gisBoxShow: false,
       videoBoxShow: false,
       location: "",
-      tableData: {
-        column: [
-          {
-            name: "消缺描述",
-            field: "xqms",
-            is_light: false,
-          },
-          {
-            name: "消缺人员",
-            field: "xqry",
-            is_light: false,
-          },
-          {
-            name: "消缺时间",
-            field: "xqsj",
-            is_light: false,
-          },
-          {
-            name: "更换部件",
-            field: "ghbj",
-            is_light: false,
-          },
-          {
-            name: "更换原因",
-            field: "ghyy",
-            is_light: false,
-          },
-          {
-            name: "更换数量",
-            field: "ghsl",
-            is_light: false,
-          },
-        ],
-        data: [],
-      },
-      data: [
-        {
-          label: "一级 1",
-          children: [
-            {
-              label: "二级 1-1",
-              children: [
-                {
-                  label: "三级 1-1-1",
-                },
-              ],
-            },
-          ],
-        },
-        {
-          label: "一级 2",
-          children: [
-            {
-              label: "二级 2-1",
-              children: [
-                {
-                  label: "三级 2-1-1",
-                },
-              ],
-            },
-            {
-              label: "二级 2-2",
-              children: [
-                {
-                  label: "三级 2-2-1",
-                },
-              ],
-            },
-          ],
-        },
-        {
-          label: "一级 3",
-          children: [
-            {
-              label: "二级 3-1",
-              children: [
-                {
-                  label: "三级 3-1-1",
-                },
-              ],
-            },
-            {
-              label: "二级 3-2",
-              children: [
-                {
-                  label: "三级 3-2-1",
-                },
-              ],
-            },
-          ],
-        },
-      ],
-      defaultProps: {
-        children: "children",
-        label: "label",
-      },
-      dialogVisible: false,
       tabs: [
         {
           icon: "svg-gis",
@@ -510,10 +385,6 @@ export default {
           icon: "svg-jk",
           text: "监控视频",
         },
-        {
-          icon: "svg-jk",
-          text: "消缺历史",
-        },
       ],
       activeTab: 0,
       svgarr: [
@@ -575,14 +446,6 @@ export default {
       videoPlayer: null, // 视频播放实例
     };
   },
-  created() {
-    this.setData();
-  },
-
-  updated() {
-    this.setData();
-  },
-
   onmounted() {
     this.cancelPlay();
   },
@@ -610,10 +473,6 @@ export default {
         ? new Date(this.form.checktime).formatDate("yyyy-MM-dd hh:mm:ss")
         : null;
     },
-    handleNodeClick(data) {
-      this.location = data.id;
-      this.searchTab(data.id);
-    },
     DateformatDate(val) {
       return new Date(val).formatDate("yyyy-MM-dd hh:mm:ss");
     },
@@ -646,33 +505,6 @@ export default {
         return "流程未启动";
       }
     },
-    async searchH() {
-      const { data } = await this.API.requestData({
-        method: "POST",
-        subUrl: "/recommen/findLocationTreeByWtId",
-        data: {
-          wtId: this.form.wtId,
-        },
-      });
-      this.dialogVisible = true;
-      this.data = data.data;
-      this.location = data.data[0].id;
-      this.searchTab();
-    },
-    async searchTab() {
-      const { data } = await this.API.requestData({
-        method: "POST",
-        subUrl: "/recommen/findWobugeqByLocation",
-        data: {
-          tablepar: {
-            pageNum: 1,
-            pageSize: 10,
-          },
-          location: this.location,
-        },
-      });
-      this.tableData.data = data.data;
-    },
 
     showVideoBox() {
       this.videoBoxShow = true;
@@ -687,11 +519,33 @@ export default {
       } else if (index === 2) {
         this.showVideoBox();
       }
-      if (tab.text == "消缺历史") {
-        this.searchH();
-      }
     },
   },
+  watch: {
+  	formdata(res) {
+  		if (res) {
+  			this.form = this.formdata;
+  			this.form.tjss = this.form.tjss
+  			  ? new Date(this.form.tjss).formatDate("yyyy-MM-dd hh:mm:ss")
+  			  : null;
+  			this.form.prodtdepttime = this.form.prodtdepttime
+  			  ? new Date(this.form.prodtdepttime).formatDate("yyyy-MM-dd hh:mm:ss")
+  			  : null;
+  			this.form.departuretime = this.form.departuretime
+  			  ? new Date(this.form.departuretime).formatDate("yyyy-MM-dd hh:mm:ss")
+  			  : null;
+  			this.form.arrivaltime = this.form.arrivaltime
+  			  ? new Date(this.form.arrivaltime).formatDate("yyyy-MM-dd hh:mm:ss")
+  			  : null;
+  			this.form.repairedtime = this.form.repairedtime
+  			  ? new Date(this.form.repairedtime).formatDate("yyyy-MM-dd hh:mm:ss")
+  			  : null;
+  			this.form.checktime = this.form.checktime
+  			  ? new Date(this.form.checktime).formatDate("yyyy-MM-dd hh:mm:ss")
+  			  : null;
+  		}
+  	}
+  }
 };
 </script>
 

+ 3 - 3
src/views/LightMatrix1/LightMatrix1.vue

@@ -342,9 +342,9 @@ export default {
           path: `/monitor/windsite/info/${item.wpId}/${item.wtId}`,
         });
       } else {
-        // this.$router.push({
-        //   path: `/info/inverter-info/${item.wpId}/${item.wtId}`
-        // });
+        this.$router.push({
+          path: `windsite/inverter-info/${item.wpId}/${item.wtId}`
+        });
       }
     },
   },

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

@@ -174,6 +174,8 @@ export default {
         baseURL: "http://192.168.1.18:8075/",
         subUrl: "Stoptype/treeType",
       });
+
+      
       this.cascaderOptions = data.data;
       let arr = [];
       let columnObj = [

+ 1 - 1
src/views/NewPages/dialogs.vue

@@ -27,7 +27,7 @@
 <script>
 import Dayinfo from "../HealthControl/dayinfo.vue";
 import DefectEliminationTracking from "../HealthControl/defect-elimination-tracking.vue";
-import FaultDiagnosis from "../HealthControl/fault-diagnosis.vue";
+import FaultDiagnosis from "../malfunctionRecall/components/fault-diagnosis.vue";
 import RankingPop from "../HealthControl/ranking-pop.vue";
 import Track from "../HealthControl/track.vue";
 export default {

+ 17 - 6
src/views/NewPages/forecast-system.vue

@@ -72,21 +72,21 @@
         </el-col>
         <el-col :span="19">
           <panel :title="'损失电量分析'">
-            <multiple-bar-line-chart :height="'310px'" 
+            <multiple-bar-line-chart :height="'100%'" 
               :lineData="chart1Line" :barData="chart1Bar"
               :units="['功率(万kW)','电量(万kWh)']"/>
           </panel>
         </el-col>
       </el-row>
-      <el-row>
+      <el-row class="bottom-charts">
         <el-col :span="12">
           <panel :title="'超短期风功率预测'">
-            <arrow-line-chart :height="'310px'" :list="chart2List" :units="['功率(万kW)','风速(m/s)']"/>
+            <arrow-line-chart :height="'100%'"  :list="chart2List" :units="['功率(万kW)','风速(m/s)']"/>
           </panel>
         </el-col>
         <el-col :span="12">
           <panel :title="'短期风功率预测'">
-            <arrow-line-chart :height="'310px'" :list="chart3List" :units="['功率(万kW)','风速(m/s)']"/>
+            <arrow-line-chart :height="'100%'"  :list="chart3List" :units="['功率(万kW)','风速(m/s)']"/>
           </panel>
         </el-col>
       </el-row>
@@ -230,6 +230,16 @@ export default {
 
 <style lang="less">
 .forecast-system {
+  .com-panel{
+    .panel-body{
+      height: 43vh;
+    }
+  }
+  .bottom-charts{
+    .panel-body{
+      height: 35vh;
+    }
+  }
   .action-bar {
     .selections {
       flex: 1 0 auto;
@@ -281,7 +291,7 @@ export default {
           flex: 1 0 calc(100% / 3 - 8px);
           background: fade(@gray, 20);
           margin-bottom: 8px;
-
+          height: 10vh;
           .tag-title {
             font-size: 12px;
             color: @gray-l;
@@ -295,13 +305,14 @@ export default {
             font-size: 20px;
             color: @green;
             text-align: center;
-            padding: 12px 0;
+            padding: 3vh 0;
             .unit {
               position: absolute;
               color: @gray;
               font-size: 12px;
               bottom: 8px;
               right: 8px;
+              top: 40%;
             }
           }
 

+ 1 - 1
src/views/NewPages/personnel.vue

@@ -326,7 +326,7 @@ export default {
         const url = require(`@assets/person/${v}.jpg`);
         return url;
       } catch (error) {
-        return require("@assets/logo.png");
+        return require("@assets/userhead.jpg");
       }
     },
     clickBtn(btn, index) {

+ 4 - 1
src/views/NewPages/znzhfx.vue

@@ -4,7 +4,7 @@
       <el-row :gutter="20" class="table-panel">
         <el-col :span="24">
           <div class="back">
-            <button class="btn" type="button">
+            <button class="btn" type="button" @click="back">
               <span>返回</span>
             </button>
           </div>
@@ -507,6 +507,9 @@ export default {
       this.bar2data.data = arrwsdata;
       console.warn(this.bar2data);
     },
+	back(){
+		this.$router.go(-1);
+	}
   },
 };
 </script>

+ 203 - 203
src/views/WindSite/WindSite.vue

@@ -1,203 +1,203 @@
-<template>
-  <div class="wind-site">
-    <div class="page-common-body">
-      <div class="page-common-body-router">
-        <router-view />
-      </div>
-      <div class="page-common-body-menu">
-        <div class="page-common-body-menu-box">
-          <div class="page-common-body-menu-border left top"></div>
-          <div class="page-common-body-menu-border left bottom"></div>
-          <div class="page-common-body-menu-border right top"></div>
-          <div class="page-common-body-menu-border right bottom"></div>
-          <router-link v-for="(menuData, index) of menuDatas" :key="index" :to="menuData.path">
-            <div class="page-common-body-menu-item" @click="clickMenu(index)" :class="{ active: activeIndex == index }">
-              <span class="svg-icon" :class="activeIndex == index ? 'svg-icon-yellow' : 'svg-icon-green'">
-                <SvgIcon :svgid="menuData.icon"></SvgIcon>
-              </span>
-            </div>
-          </router-link>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import SvgIcon from "@com/coms/icon/svg-icon.vue";
-export default {
-  // 名称
-  name: "WindSite",
-  // 使用组件
-  components: {
-    SvgIcon,
-  },
-  // 数据
-  data() {
-    return {
-      activeIndex: 0,
-      menuDatas: [
-        {
-          icon: "svg-agc",
-          path: "/monitor/windsite/home",
-        },
-        {
-          icon: "svg-matrix",
-          path: "/monitor/windsite/draughtfanlist",
-        },
-        // {
-        //   icon: "svg-agc",
-        //   path: "/monitor/windsite/matrix",
-        // },
-        // {
-        //   icon: "svg-agc",
-        //   path: "/monitor/windsite/lightmatrix",
-        // },
-        // {
-        //   icon: "svg-intranet-involvement",
-        //   path: "/monitor/windsite/box",
-        // },
-        // {
-        //   icon: "svg-matrix",
-        //   path: "/monitor/windsite/info",
-        // },
-        {
-          icon: "svg-easy-compass",
-          path: "/monitor/windsite/tower",
-        },
-        // {
-        //   icon: "svg-easy-compass",
-        //   path: "/monitor/windsite/Inverter-Info",
-        // },
-        // {
-        //   icon: "svg-easy-compass",
-        //   path: "/monitor/windsite/map",
-        // },
-        // {
-        //   icon: "svg-easy-compass",
-        //   path: "/monitor/windsite/map1",
-        // },
-        {
-          icon: "svg-matrix",
-          path: "/monitor/windsite/matrix",
-        },
-        {
-          icon: "svg-matrix",
-          path: "/monitor/windsite/generalappearance",
-        },
-        {
-          icon: "svg-matrix",
-          path: "/monitor/windsite/boosterstation",
-        },
-        {
-          icon: "svg-matrix",
-          path: "/monitor/windsite/map",
-        },
-      ],
-    };
-  },
-  // 函数
-  methods: {
-    clickMenu: function(index) {
-      this.activeIndex = index;
-    },
-  },
-
-  created() {
-    this.menuDatas.forEach((ele) => {
-      ele.path = ele.path + "/" + this.$route.params.wpId;
-    });
-  },
-
-  mounted() {},
-};
-</script>
-
-<style lang="less" scoped>
-.wind-site {
-  .page-common-body {
-    display: flex;
-    flex-direction: row;
-    margin-top: 0.741vh;
-
-    .page-common-body-router {
-      overflow: auto;
-      overflow-x: hidden;
-      height: calc(100vh - 7.037vh);
-      flex: 1 1 auto;
-    }
-
-    .page-common-body-menu {
-      width: 7.407vh;
-      padding: 0 1.481vh 1.481vh 1.481vh;
-
-      .page-common-body-menu-box {
-        border: 0.093vh solid @darkgray;
-        background-color: fade(@darkgray, 30%);
-        padding: 2.222vh 0.185vh;
-        position: relative;
-
-        .page-common-body-menu-border {
-          position: absolute;
-          width: 0.37vh;
-          height: 0.37vh;
-          background-color: @write;
-          border-radius: 50%;
-
-          &.left {
-            left: -0.185vh;
-          }
-
-          &.right {
-            right: -0.185vh;
-          }
-
-          &.top {
-            top: -0.185vh;
-          }
-
-          &.bottom {
-            bottom: -0.185vh;
-          }
-        }
-
-        .page-common-body-menu-item {
-          border: 0.093vh solid fade(@green, 40%);
-          width: 3.889vh;
-          height: 3.889vh;
-          border-radius: 0.278vh;
-          margin-top: 0.741vh;
-          display: flex;
-          align-items: center;
-          justify-content: center;
-          cursor: pointer;
-
-          a {
-            line-height: 0;
-          }
-
-          // &:first-child {
-          //   margin-top: 0;
-          // }
-
-          &.active {
-            border-color: fade(@yellow, 40%);
-            position: relative;
-
-            &::after {
-              content: "";
-              width: calc(100% - 0.37vh);
-              height: calc(100% - 0.37vh);
-              position: absolute;
-              border: 0.093vh solid @yellow;
-              box-shadow: 0 0 0.37vh @yellow;
-              top: 0.093vh;
-              left: 0.093vh;
-            }
-          }
-        }
-      }
-    }
-  }
-}
-</style>
+<template>
+  <div class="wind-site">
+    <div class="page-common-body">
+      <div class="page-common-body-router">
+        <router-view />
+      </div>
+      <div class="page-common-body-menu">
+        <div class="page-common-body-menu-box">
+          <div class="page-common-body-menu-border left top"></div>
+          <div class="page-common-body-menu-border left bottom"></div>
+          <div class="page-common-body-menu-border right top"></div>
+          <div class="page-common-body-menu-border right bottom"></div>
+          <router-link v-for="(menuData, index) of menuDatas" :key="index" :to="menuData.path">
+            <div class="page-common-body-menu-item" @click="clickMenu(index)" :class="{ active: activeIndex == index }">
+              <span class="svg-icon" :class="activeIndex == index ? 'svg-icon-yellow' : 'svg-icon-green'">
+                <SvgIcon :svgid="menuData.icon"></SvgIcon>
+              </span>
+            </div>
+          </router-link>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import SvgIcon from "@com/coms/icon/svg-icon.vue";
+export default {
+  // 名称
+  name: "WindSite",
+  // 使用组件
+  components: {
+    SvgIcon,
+  },
+  // 数据
+  data() {
+    return {
+      activeIndex: 0,
+      menuDatas: [
+        {
+          icon: "svg-s场站监视",
+          path: "/monitor/windsite/home",
+        },
+        {
+          icon: "svg-s指标列表",
+          path: "/monitor/windsite/draughtfanlist",
+        },
+        // {
+        //   icon: "svg-agc",
+        //   path: "/monitor/windsite/matrix",
+        // },
+        // {
+        //   icon: "svg-agc",
+        //   path: "/monitor/windsite/lightmatrix",
+        // },
+        // {
+        //   icon: "svg-intranet-involvement",
+        //   path: "/monitor/windsite/box",
+        // },
+        // {
+        //   icon: "svg-matrix",
+        //   path: "/monitor/windsite/info",
+        // },
+        {
+          icon: "svg-s测风塔",
+          path: "/monitor/windsite/tower",
+        },
+        // {
+        //   icon: "svg-easy-compass",
+        //   path: "/monitor/windsite/Inverter-Info",
+        // },
+        // {
+        //   icon: "svg-easy-compass",
+        //   path: "/monitor/windsite/map",
+        // },
+        // {
+        //   icon: "svg-easy-compass",
+        //   path: "/monitor/windsite/map1",
+        // },
+        {
+          icon: "svg-matrix",
+          path: "/monitor/windsite/matrix",
+        },
+        {
+          icon: "svg-s总貌",
+          path: "/monitor/windsite/generalappearance",
+        },
+        {
+          icon: "svg-s升压站",
+          path: "/monitor/windsite/boosterstation",
+        },
+        {
+          icon: "svg-s地图",
+          path: "/monitor/windsite/map",
+        },
+      ],
+    };
+  },
+  // 函数
+  methods: {
+    clickMenu: function(index) {
+      this.activeIndex = index;
+    },
+  },
+
+  created() {
+    this.menuDatas.forEach((ele) => {
+      ele.path = ele.path + "/" + this.$route.params.wpId;
+    });
+  },
+
+  mounted() {},
+};
+</script>
+
+<style lang="less" scoped>
+.wind-site {
+  .page-common-body {
+    display: flex;
+    flex-direction: row;
+    margin-top: 0.741vh;
+
+    .page-common-body-router {
+      overflow: auto;
+      overflow-x: hidden;
+      height: calc(100vh - 7.037vh);
+      flex: 1 1 auto;
+    }
+
+    .page-common-body-menu {
+      width: 7.407vh;
+      padding: 0 1.481vh 1.481vh 1.481vh;
+
+      .page-common-body-menu-box {
+        border: 0.093vh solid @darkgray;
+        background-color: fade(@darkgray, 30%);
+        padding: 2.222vh 0.185vh;
+        position: relative;
+
+        .page-common-body-menu-border {
+          position: absolute;
+          width: 0.37vh;
+          height: 0.37vh;
+          background-color: @write;
+          border-radius: 50%;
+
+          &.left {
+            left: -0.185vh;
+          }
+
+          &.right {
+            right: -0.185vh;
+          }
+
+          &.top {
+            top: -0.185vh;
+          }
+
+          &.bottom {
+            bottom: -0.185vh;
+          }
+        }
+
+        .page-common-body-menu-item {
+          border: 0.093vh solid fade(@green, 40%);
+          width: 3.889vh;
+          height: 3.889vh;
+          border-radius: 0.278vh;
+          margin-top: 0.741vh;
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          cursor: pointer;
+
+          a {
+            line-height: 0;
+          }
+
+          // &:first-child {
+          //   margin-top: 0;
+          // }
+
+          &.active {
+            border-color: fade(@yellow, 40%);
+            position: relative;
+
+            &::after {
+              content: "";
+              width: calc(100% - 0.37vh);
+              height: calc(100% - 0.37vh);
+              position: absolute;
+              border: 0.093vh solid @yellow;
+              box-shadow: 0 0 0.37vh @yellow;
+              top: 0.093vh;
+              left: 0.093vh;
+            }
+          }
+        }
+      }
+    }
+  }
+}
+</style>

+ 11 - 11
src/views/WindSite/pages/Home/Home.vue

@@ -75,10 +75,10 @@
                   </span>
                 </div>
                 <div class="status ">
-                  <span class="svg-icon svg-icon-yellow">
+                  <span class="svg-icon svg-icon-pink">
                     <svg-icon svgid="svg-limit-power" style="margin:3px 0.3704vh -3px 0;" />
                   </span>
-                  <span class="text yellow">
+                  <span class="text pink">
                     限电
                   </span>
                 </div>
@@ -237,7 +237,7 @@
 <script>
 import HoverBarChart from "../../../../components/chart/bar/hover-bar-chart.vue";
 import MultipleBarChart from "../../../../components/chart/bar/multiple-bar-chart.vue";
-import MultipleLineChart from "../../../../components/chart/line/multiple-line-chart.vue";
+import MultipleLineChart from "../../../../components/chart/line/double-line-chart.vue";
 import NormalLineChart from "../../../../components/chart/line/normal-line-chart.vue";
 import DualPieChart from "../../../../components/chart/pie/dual-pie-chart.vue";
 import BtnGroupDouble from "../../../../components/coms/btn/btn-group-double.vue";
@@ -452,42 +452,42 @@ export default {
               value: [
                 {
                   title: "应发功率",
-                  yAxisIndex: 1, // 使用单位
+                  smooth: true, // 使用单位
                   value: [],
                 },
                 {
                   title: "实发功率",
-                  yAxisIndex: 1, // 使用单位
+                  smooth: true, // 使用单位
                   value: [],
                 },
                 {
                   title: "理论功率",
-                  yAxisIndex: 1, // 使用单位
+                  smooth: true, // 使用单位
                   value: [],
                 },
                 {
                   title: "预测功率",
-                  yAxisIndex: 1, // 使用单位
+                  smooth: true, // 使用单位
                   value: [],
                 },
                 {
                   title: "保证功率",
-                  yAxisIndex: 1, // 使用单位
+                  smooth: true, // 使用单位
                   value: [],
                 },
                 {
                   title: "平均风速",
-                  yAxisIndex: 1, // 使用单位
+                  smooth: true, // 使用单位
                   value: [],
                 },
                 {
                   title: "小时预测功率",
-                  yAxisIndex: 1, // 使用单位
+                  smooth: true, // 使用单位
                   value: [],
                 },
                 {
                   title: "最有功率律",
-                  yAxisIndex: 1, // 使用单位
+                  smooth: true, // 使用单位
                   value: [],
                 },
               ],

+ 9 - 3
src/views/WindSite/pages/Home/light-matrix.vue

@@ -53,9 +53,15 @@ export default {
 
     // 页面跳转
     jumpUrl(wpId, wtId){
-      this.$router.push({
-        path: `/monitor/windsite/info/${wpId}/${wtId}`
-      });
+	  if (wpId.indexOf("FDC") !== -1) {
+	    this.$router.push({
+	      path: `/monitor/windsite/info/${wpId}/${wtId}`
+	    });
+	  } else {
+	    this.$router.push({
+	      path: `../../windsite/inverter-info/${wpId}/${wtId}`
+	    });
+	  }
     }
   },
   // 生命周期钩子

+ 2 - 1
src/views/WindSite/pages/Map.vue

@@ -17,7 +17,7 @@
         <div class="sub-title-item">
           <img src="../../../assets/map/fan/black.png" />
           <span class="sub-title gray">接入台数</span>
-          <span class="sub-count font-num white">{{ wpnumMap.jrts }}</span>
+          <span class="sub-count font-num gray">{{ wpnumMap.djts + wpnumMap.yxts + wpnumMap.xdts +wpnumMap.gzts +wpnumMap.whts + wpnumMap.lxts}}</span>
         </div>
         <div class="sub-title-item">
           <img src="../../../assets/map/fan/green.png" />
@@ -285,6 +285,7 @@ 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];
           }

+ 6 - 2
src/views/WindSite/pages/Matrix.vue

@@ -23,9 +23,13 @@
             </div>
           </div>
           <div class="card-right">
+            <div class="num">{{ cItem.fs }} 
+				<block v-if='cItem.wpId.indexOf("FDC") !== -1'>m/s</block>
+				<block v-else>W/m²</block>
+			</div>
+			<div class="num" v-if='cItem.wpId.indexOf("FDC") == -1' style="height:0.25rem;"> </div>
             <div class="num">{{ cItem.gl }} kW</div>
-            <div class="num">{{ cItem.fs }} m/s</div>
-            <div class="num">{{ cItem.fdjzs }} rpm</div>
+            <div class="num" v-if='cItem.wpId.indexOf("FDC") !== -1'>{{ cItem.fdjzs }} rpm</div>
           </div>
         </div>
         <div class="card-percent">

+ 171 - 120
src/views/WindSite/pages/Tower.vue

@@ -1,4 +1,7 @@
 <template>
+  <div class="btn-group-tabs">
+      <BtnGroup2 :btnGroups="btnGroupsss" :rowIndex="rowIndex" :index="selectIndex" @select="select"></BtnGroup2>
+  </div>
   <div class="tower">
     <Wave></Wave>
     <Windmill class="windmill-1"></Windmill>
@@ -20,6 +23,7 @@
       :value="cftmap.FCCFTYQ || 0"
       height="9.722vh"
       width="9.722vh"
+      max="500"
     />
     <Panel class="panel-top" title="日资源玫瑰图" :bgBlur="true">
       <div class="direction-chart">
@@ -40,43 +44,17 @@
       </div>
     </Panel>
     <toolbar-panel class="rose-chart" title="功率曲线">
-      <template v-slot:tools>
-        <!--<div class="tools">
-                    <div class="tool-block">
-                        <div class="legend bg-green"></div>
-                        <div class="legend-text">应发功率</div>
-                    </div>
-                    <div class="tool-block">
-                        <div class="legend bg-purple"></div>
-                        <div class="legend-text">实际功率</div>
-                    </div>
-                    <div class="tool-block">
-                        <div class="legend bg-orange"></div>
-                        <div class="legend-text">理论功率</div>
-                    </div>
-                    <div class="tool-block">
-                        <div class="legend bg-yellow"></div>
-                        <div class="legend-text">预测功率4小时</div>
-                    </div>
-                    <div class="tool-block">
-                        <div class="legend bg-blue"></div>
-                        <div class="legend-text">保证功率</div>
-                    </div>
-                    <div class="tool-block">
-                        <div class="legend bg-pink"></div>
-                        <div class="legend-text">风速</div>
-                    </div>
-                </div>-->
-      </template>
-      <template v-slot:default>
-        <!-- 日发电量 -->
+      <!-- <template v-slot:tools>
+      </template> -->
+      <!-- <template v-slot:default> -->
         <multiple-line-chart
-          :list="Powertrend.value"
-          :units="Powertrend.units"
-          height="28vh"
+          height="220px"
+          :list="Powertrend"
+          :units="['(MW)']"
           :showLegend="true"
+          :hoverType="'axis'"
         />
-      </template>
+      <!-- </template> -->
     </toolbar-panel>
   </div>
 </template>
@@ -90,11 +68,13 @@ import MultipleLineChart from "@com/chart/line/normal-line-chart";
 import WindTower from "./Tower/WindTower.vue";
 import DashPieChart from "@com/chart/pie/dash-pie-chart.vue";
 import DirectionRadarChart from "@com/chart/radar/radar-chart.vue";
+import BtnGroup2 from "@com/coms/btn/btn-group-double.vue";
 export default {
   // 名称
   name: "Tower",
   // 使用组件
   components: {
+    BtnGroup2,
     Wave,
     Windmill,
     ToolbarPanel,
@@ -111,6 +91,9 @@ export default {
   // 数据
   data() {
     return {
+      btnGroupsss: [],
+      rowIndex:1,
+      selectIndex:1,
       timmer: null, // 计时器
       cftmap: {},
       glvos: [],
@@ -134,8 +117,7 @@ export default {
         ],
       },
       ymgtTitle: "",
-      // 日发电量
-      Powertrend: {
+      DayPower: {
         // 图表所用单位
         units: [""],
         value: [
@@ -146,132 +128,201 @@ export default {
           },
         ],
       },
+      // 72小时功率趋势图
+      Powertrend: [
+        {
+          title: "",
+          yAxisIndex: 0, // 使用单位
+          value: [],
+        },
+      ],
     };
   },
   // 函数
   methods: {
-    // 请求服务
-    requestData(showLoading) {
+    requestLine() {
       let that = this;
       that.API.requestData({
-        showLoading,
         method: "POST",
-        subUrl: "monitor/findCftInfo",
+        subUrl: "genreset/findPowerInfo",
+        timeout: 60000,
         data: {
-          wpId: that.wpId,
+          id: that.wpId,
         },
         success(res) {
-          let rmgtmap = {
-            indicator: [],
-            data: [
+
+          let rdlKey = ["value1", "value2", "value3", "speed"];
+          let DayPower = {
+            // 图表所用单位
+            units: ["(万kWh)", "(m/s)"],
+            value: [
               {
+                title: "发电量",
+                yAxisIndex: 0,
                 value: [],
-                name: "",
               },
-            ],
-          };
-
-          let ymgtmap = {
-            indicator: [],
-            data: [
               {
+                title: "上网电量",
+                yAxisIndex: 0,
+                value: [],
+              },
+              {
+                title: "购网电量",
+                yAxisIndex: 0,
+                value: [],
+              },
+              {
+                title: "实时风速",
+                yAxisIndex: 1,
                 value: [],
-                name: "",
               },
             ],
           };
 
-          res.data.rmgtmap.data.forEach((ele) => {
-            rmgtmap.indicator.push(ele.name);
-            rmgtmap.data[0].value.push(ele.data1);
-          });
-
-          res.data.ymgtmap.data.forEach((ele) => {
-            ymgtmap.indicator.push(ele.name);
-            ymgtmap.data[0].value.push(ele.data1);
-          });
-
-          that.rmgtmap = rmgtmap;
-          that.rmgtTitle = res.data.rmgtmap.jfpl;
-
-          that.ymgtmap = ymgtmap;
-          that.ymgtTitle = res.data.ymgtmap.jfpl;
-
-          let units = ["(万kw)", "(米/s)"];
-          let keyArray = [
+          let glKey = [
             "value1",
             "value2",
             "value3",
             "value4",
             "value5",
             "value6",
+            "value7",
+          ];
+          let Powertrend = [
+            {
+              title: "应发功率",
+              smooth: true,
+              value: [],
+            },
+            {
+              title: "实发功率",
+              smooth: true,
+              value: [],
+            },
+            {
+              title: "理论功率",
+              smooth: true,
+              value: [],
+            },
+            {
+              title: "4小时预测功率",
+              smooth: true,
+              value: [],
+            },
+            {
+              title: "保证功率",
+              smooth: true,
+              value: [],
+            },
+            {
+              title: "平均风速",
+              smooth: true,
+              value: [],
+            },
+            {
+              title: "24小时预测功率",
+              smooth: true,
+              value: [],
+            },
           ];
 
-          let Powertrend = {
-            units,
-            value: [
-              {
-                title: "应发功率",
-                yAxisIndex: 0, // 使用单位
-                value: [],
-              },
-              {
-                title: "实发功率",
-                yAxisIndex: 0, // 使用单位
-                value: [],
-              },
-              {
-                title: "理论功率",
-                yAxisIndex: 0, // 使用单位
-                value: [],
-              },
-              {
-                title: "预测功率",
-                yAxisIndex: 0, // 使用单位
-                value: [],
-              },
-              {
-                title: "保证功率",
-                yAxisIndex: 0, // 使用单位
-                value: [],
-              },
-              {
-                title: "保证功率",
-                yAxisIndex: 0, // 使用单位
-                value: [],
-              },
-              {
-                title: "平均风速",
-                yAxisIndex: 1, // 使用单位
-                value: [],
-              },
-            ],
-          };
+          rdlKey.forEach((keyEle, keyIndex) => {
+            res.data.rdlvos.forEach((cEle) => {
+              DayPower.value[keyIndex].value.push({
+                text: cEle.timestr,
+                value: cEle[keyEle],
+              });
+            });
+          });
 
-          keyArray.forEach((key, keyIndex) => {
-            res.data.glvos.forEach((ele) => {
-              Powertrend.value[keyIndex].value.push({
-                text: new Date(ele.time).formatDate("hh:mm"),
-                value: ele[key],
+          glKey.forEach((keyEle, keyIndex) => {
+            res.data.glvos.forEach((cEle) => {
+              Powertrend[keyIndex].value.push({
+                text: new Date(cEle.time).formatDate("hh:mm"),
+                value: cEle[keyEle],
               });
             });
           });
 
-          that.cftmap = res.data.cftmap;
+          that.DayPower = DayPower;
           that.Powertrend = Powertrend;
         },
       });
     },
+    requestData(showLoading) {
+      let that = this;
+      that.API.requestData({
+        showLoading,
+        method: "POST",
+        subUrl: "monitor/findCftInfo",
+        data: {
+          wpId: that.wpId,
+        },
+        success(res) {
+          that.cftmap = res.data.cftmap;
+        },
+      });
+    },
+    getWp () {
+      let that = this;
+      that.API.requestData({
+        method: "GET",
+        subUrl: "powercompare/windfarmAllAjax",
+        success (res) {
+          let btnGroups = [
+            {
+              icon: "svg-wind-site",
+              btns: [],
+            }
+          ];
+
+          res.data.forEach((ele, index) => {
+            if (ele.id.indexOf("FDC") !== -1) {
+              btnGroups[0].btns.push({
+                text: ele.name,
+                code: ele.id,
+              });
+            } 
+          });
+
+          that.btnGroupsss = btnGroups;
+          that.renderBtnActiveIndex();
+        },
+      });
+    },
+    renderBtnActiveIndex () {
+      this.btnGroupsss.forEach((pEle, pIndex) => {
+        pEle.btns.forEach((cEle, cIndex) => {
+          if (cEle.code === this.wpId) {
+            this.rowIndex = pIndex;
+            this.selectIndex = cIndex;
+          }
+        });
+      });
+    },
+
+    select (res) {
+      this.$router.replace({
+        path: `/monitor/windsite/tower/${res.code}`,
+      });
+      this.wpId = res.code;
+      this.renderBtnActiveIndex ();
+      this.requestData(false);
+      this.requestLine();
+    },
   },
 
   created() {
     let that = this;
     that.wpId = that.$route.params.wpId;
+    that.getWp();
     that.$nextTick(() => {
       that.requestData(false);
-      // that.timmer = setInterval(() => {
-      //   that.requestData(false);
-      // }, that.$store.state.websocketTimeSec);
+      that.requestLine();
+      that.timmer = setInterval(() => {
+        that.requestData(false);
+        that.requestLine();
+      }, 60 * 1000);
     });
   },
 
@@ -350,7 +401,7 @@ export default {
   .pie-left,
   .pie-right {
     position: fixed;
-    top: 8vh;
+    top: 11vh;
   }
 
   .pie-left {

+ 1 - 1
src/views/WindSite/pages/Tower/WindTower.vue

@@ -139,7 +139,7 @@ export default {
 .wind-tower {
   position: absolute;
   width: 64.352vh;
-  top: 0;
+  top: 10px;
   left: calc(50% - 31.759vh);
 
   #wind-tower-left {

+ 9 - 9
src/views/layout/Header.vue

@@ -29,21 +29,21 @@ export default {
       menus: [
         {
           id: 'monitor',
-          text: '状态监视',
+          text: '驾驶舱',
           path: '/monitor/home',
           isActive: true
         },
         {
           id: 'decision',
           text: '经济运行',
-          path: '/decision/decision1',
+          path: '/decision/pb',
           isActive: false
         },
         {
           id: 'health',
           text: '智慧检修',
           // path: '/sandtable',
-          path: '/health',
+          path: '/health/sandtable',
           isActive: false
         },
         // {
@@ -58,12 +58,12 @@ export default {
           path: '/new/personnel',
           isActive: false
         },
-        {
-          id: "bdzcx",
-          text: "智能报表",
-          path: "/reportPandect",
-          isActive: false,
-        },
+        // {
+        //   id: "znbb",
+        //   text: "智能报表",
+        //   path: "/znbb/reportPandect",
+        //   isActive: false,
+        // },
         {
           id: 'realSearch',
           text: '其他',

File diff suppressed because it is too large
+ 605 - 531
src/views/layout/Menu.vue


+ 621 - 0
src/views/malfunctionRecall/components/fault-diagnosis.vue

@@ -0,0 +1,621 @@
+<template>
+    <div class="fault-diagnosis-pop-up-window">
+        <div class="white font-md">查询条件</div>
+        <div class="query left mg-b-8">
+            <div class="query-items">
+                <div class="query-item">
+                    <div class="lable">风机:</div>
+                    <div class="search-input">
+                        <el-input v-model="value1" placeholder="SG01_53" class="placeholder-left" />
+                    </div>
+                </div>
+                <div class="query-item">
+                    <div class="lable">部件类型:</div>
+                    <div class="search-input">
+                        <el-select class="placeholder-left" v-model="value2" placeholder="风机" popper-class="select">
+                            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
+                        </el-select>
+                    </div>
+                </div>
+                <div class="query-item">
+                    <div class="lable">测点类型:</div>
+                    <div class="search-input">
+                        <el-select class="placeholder-left" v-model="value3" placeholder="所有测点" popper-class="select">
+                            <el-option v-for="item in pointype" :key="item.value" :label="item.label" :value="item.value"></el-option>
+                        </el-select>
+                    </div>
+                </div>
+            </div>
+            <div class="query-actions">
+                <button class="btn green"  @click="onClickSelect">重新选择</button>
+            </div>
+        </div>
+        <div class="white font-md mg-t-16">
+            <div>测点选择</div>
+            <div class="check-item">
+                <el-checkbox-group v-model="checkValue" text-color="#05bb4c" fill="#05bb4c" :max="5" @change="check">
+                    <template v-for="(items, i) in checkList" :key="i">
+                        <template v-for="(item, j) in items" :key="j">
+                            <el-checkbox class="cb-item" :label="item.uniformcode+'$'+item.name"> {{item.name}},值:{{item.value}}</el-checkbox>
+                        </template>
+                        <br>
+                    </template>
+                </el-checkbox-group>
+            </div>
+        </div>
+        <div class="time-axis-box">
+            <div class="time-axis-icon mg-r-16" @click="startAnimate">
+                <i :class="timeAxisIcon" class="green"></i>
+            </div>
+            <div class="time-axis-progress-box">
+                <div class="time-axis-progress" :style="'width: '+timeAxisProgress+'%;'"></div>
+                <div class="time-axis-progress-scale" v-for="index of 20" :key="index"></div>
+            </div>
+        </div>
+        <div class="white font-md mg-t-16">风机故障回溯</div>
+        <div class="fdp-sub-title font-sm">国电电力宁夏新能源集控系统</div>
+        <multiple-y-line-chart ref="chart" class="fdp-chart" height="32.407vh" :yAxises="yAxis" :list="lineData" :showLegend="true" />
+    </div>
+</template>
+
+<script>
+import MultipleYLineChart from "@com/chart/line/multiple-y-line-chart.vue";
+export default {
+    components: {MultipleYLineChart},
+    props:{
+        data: String,
+    },
+    data() {
+        return {
+            yAxis: [
+                {
+                    name: '机舱震动x方向',
+                    min: -0.01,
+                    max: 0,
+                    unit: "",
+                    position: "left",
+                },
+                {
+                    name: '机舱震动y方向',
+                    min: -0.01,
+                    max: 0,
+                    unit: "",
+                    position: "right",
+                },
+                {
+                    name: '机舱震动最大偏移值',
+                    min: 0,
+                    max: 1,
+                    unit: "",
+                    position: "left",
+                },
+                {
+                    name: '风速1',
+                    min: 0,
+                    max: 10,
+                    unit: "",
+                    position: "right",
+                },
+                {
+                    name: '风速2',
+                    min: 0,
+                    max: 10,
+                    unit: "",
+                    position: "left",
+                },
+            ],
+            lineData: [
+                {
+                    title: "机舱震动x方向",
+                    yAxisIndex: 0,
+                    value: [
+                        {
+                            text: "-0.003",
+                            value: -0.003,
+                        },
+                        {
+                            text: "-0.002",
+                            value: -0.002,
+                        },
+                        {
+                            text: "-0.003",
+                            value: -0.006,
+                        },
+                        {
+                            text: "-0.003",
+                            value: -0.003,
+                        },
+                        {
+                            text: "-0.002",
+                            value: -0.002,
+                        },
+                        {
+                            text: "-0.003",
+                            value: -0.006,
+                        },
+                        {
+                            text: "-0.003",
+                            value: -0.003,
+                        },
+                        {
+                            text: "-0.002",
+                            value: -0.002,
+                        },
+                        {
+                            text: "-0.003",
+                            value: -0.006,
+                        },
+                    ],
+                },
+                {
+                    title: "机舱震动y方向",
+                    yAxisIndex: 1,
+                    value: [
+                        {
+                            text: "-0.01",
+                            value: -0.01,
+                        },
+                        {
+                            text: "-0.005",
+                            value: -0.005,
+                        },
+                        {
+                            text: "-0.008",
+                            value: -0.008,
+                        },
+                        {
+                            text: "-0.01",
+                            value: -0.01,
+                        },
+                        {
+                            text: "-0.005",
+                            value: -0.005,
+                        },
+                        {
+                            text: "-0.008",
+                            value: -0.008,
+                        },
+                        {
+                            text: "-0.01",
+                            value: -0.01,
+                        },
+                        {
+                            text: "-0.005",
+                            value: -0.005,
+                        },
+                        {
+                            text: "-0.008",
+                            value: -0.008,
+                        },
+                    ],
+                },
+                {
+                    title: "机舱震动最大偏移值",
+                    yAxisIndex: 2,
+                    value: [
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "0.05",
+                            value: 0.05,
+                        },
+                        {
+                            text: "0.5",
+                            value: 0.5,
+                        },
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "0.05",
+                            value: 0.05,
+                        },
+                        {
+                            text: "0.5",
+                            value: 0.5,
+                        },
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "0.05",
+                            value: 0.05,
+                        },
+                        {
+                            text: "0.5",
+                            value: 0.5,
+                        },
+                    ],
+                },
+                {
+                    title: "风速1",
+                    yAxisIndex: 3,
+                    value: [
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "5",
+                            value: 5,
+                        },
+                        {
+                            text: "3",
+                            value: 1,
+                        },
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "5",
+                            value: 5,
+                        },
+                        {
+                            text: "3",
+                            value: 1,
+                        },
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "5",
+                            value: 5,
+                        },
+                        {
+                            text: "3",
+                            value: 1,
+                        },
+                    ],
+                },
+                {
+                    title: "风速2",
+                    yAxisIndex: 4,
+                    value: [
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "2",
+                            value: 2,
+                        },
+                        {
+                            text: "3",
+                            value: 1,
+                        },
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "2",
+                            value: 2,
+                        },
+                        {
+                            text: "3",
+                            value: 1,
+                        },
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "2",
+                            value: 2,
+                        },
+                        {
+                            text: "3",
+                            value: 1,
+                        },
+                    ],
+                },
+            ],
+            options: [
+                {
+                    value: "0",
+                    label: "风机",
+                },
+                {
+                    value: "1",
+                    label: "齿轮箱",
+                },
+                {
+                    value: "2",
+                    label: "发电机",
+                },
+                {
+                    value: "3",
+                    label: "变桨",
+                }
+            ],
+            pointype: [
+                {
+                    value: "0",
+                    label: "所有测点",
+                },
+                {
+                    value: "1",
+                    label: "遥测测点",
+                },
+                {
+                    value: "2",
+                    label: "遥信测点",
+                },
+                
+            ],
+            value1: "",
+            value2: "",
+            value3: "",
+            checkList: [],
+            checkValue: [],
+            timeAxisIcon: "el-icon-video-play", // el-icon-video-play el-icon-video-pause
+            timeAxisProgress: 0,
+            timeAxisAnimate: false,
+            animationFrameId: null,
+            start: 0,
+            end: 10,
+            temp: null,
+            temp1: null,
+            animationTime: 100, // 每次变化数据的大致时间间隔(具体会根据当前页面是否可见、CPU的负荷情况等上下浮动14~18ms)
+            animationData: {}, // 回显的数组
+            animationDataIndex: -1,
+            maxlength: 0,
+        };
+    },
+    created(){},
+    mounted() {
+        this.value1 = this.data.windTurbineId
+        this.value2 = this.options[0].value
+        this.value3 = this.pointype[0].value
+        this.requestPoint()
+    },
+    // 函数
+    methods: {
+        // 重新选择按钮
+        onClickSelect(){
+            this.requestPoint()
+        },
+        requestPoint(){
+            let that = this;
+            that.API.requestData({
+                method: "POST",
+                subUrl: "/fault/queryPointVos",
+                data: {
+                    wtId: that.value1,
+                    bjtype: that.value2,
+                    cdtype: that.value3
+                },
+                success(res) {
+                    if(res.code == 200){
+                        let points = "";
+                        let data = res.data;
+                        that.checkList = [];
+                        // 将数据分成4个一组
+                        var chunk = 4;
+                        for(var i = 0, j = data.length; i < j ;i+=chunk) {
+                            that.checkList.push(data.slice(i,i + chunk))
+                        }
+                        data.forEach(item => {points += item.uniformcode + ","})
+                        // 默认选择前5个
+                        if (that.checkList.length >= 2){
+                            that.checkValue = [
+                                that.checkList[0][0].uniformcode + "$" + that.checkList[0][0].name, 
+                                that.checkList[0][1].uniformcode + "$" + that.checkList[0][1].name,
+                                that.checkList[0][2].uniformcode + "$" + that.checkList[0][2].name,
+                                that.checkList[0][3].uniformcode + "$" + that.checkList[0][3].name,
+                                that.checkList[1][0].uniformcode + "$" + that.checkList[1][0].name]
+                        }else {
+                            data.forEach(item => {
+                                that.checkValue.push(item.uniformcode + "$" + item.name)
+                            })
+                        }   
+                        that.requestValue(points);
+                    }
+                },
+            }); 
+        },
+        requestValue(points){
+            let that = this;
+            that.API.requestData({
+                method: "POST",
+                subUrl: "/fault/getFaultPlayback",
+                timeout: 8000,
+                data: {
+                    wtId: that.value1,
+                    pointids: points,
+                    stopTime: new Date(that.data.stopTime).formatDate("yyyy-MM-dd hh:mm:ss")
+                },
+                success(res) {
+                    if(res.code == 200) {
+                        that.animationData = [];
+                        let data = res.data.datas
+                        // 取出最长的一个数值
+                        that.checkList.forEach((items) => {
+                            for (var i = 0; i < items.length; i++){
+                                items[i].value = data[items[i].uniformcode][0]
+                                if (items[i].uniformcode.length > that.maxlength){
+                                    that.maxlength = data[items[i].uniformcode].length;
+                                }
+                            }  
+                        })
+                        that.animationData = data;
+                    }
+                    that.initEchart();
+                },
+            }); 
+        },
+        startAnimate: function () {
+            if (this.timeAxisAnimate) {
+                this.timeAxisIcon = "el-icon-video-play";
+                if (this.animationFrameId) {
+                    window.cancelAnimationFrame(this.animationFrameId);
+                }
+            } else {
+                this.timeAxisIcon = "el-icon-video-pause";
+                this.animationFrameId = window.requestAnimationFrame(this.timeAxisAnimation);
+            }
+            this.timeAxisAnimate = !this.timeAxisAnimate;
+        },
+        endAnimate: function () {
+            this.timeAxisProgress = 0;
+            this.timeAxisIcon = "el-icon-video-play";
+            this.timeAxisAnimate = false;
+            this.start = 0;
+            this.end = 10;
+            this.$refs.chart.datazoom(this.start, this.end);
+            if (this.animationFrameId) {
+                window.cancelAnimationFrame(this.animationFrameId);
+            }
+            this.animationFrameId = null;
+            this.animationDataIndex = -1;
+        },
+        timeAxisAnimation: function () {
+            if (this.timeAxisAnimate) {
+                this.maxlength <= 100 ? this.maxlength = 100 : this.maxlength
+                const step = this.maxlength / 100;
+                this.timeAxisProgress += step;
+                this.animationDataIndex += 1;
+
+                if (this.animationDataIndex < this.maxlength) {
+                   this.checkList.forEach(items => {
+                       items.forEach(item => {
+                           if (this.animationDataIndex < this.animationData[item.uniformcode].length)
+                                item.value = this.animationData[item.uniformcode][this.animationDataIndex]
+                       })
+                   })
+                }
+
+                this.start += step;
+                this.end += step;
+                this.$refs.chart.datazoom(this.start, this.end);
+                if (this.timeAxisProgress < 100) {
+                    setTimeout(() => {
+                        this.animationFrameId = window.requestAnimationFrame(this.timeAxisAnimation);
+                    }, this.animationTime);
+                } else {
+                    this.endAnimate();
+                } 
+            }
+        },
+        check: function () {
+            this.initEchart();
+            if (this.temp) {
+                this.lineData.splice(4, 0, this.temp);
+                this.yAxis.splice(4, 0, this.temp1);
+                this.temp = null;
+                this.temp1 = null;
+            } else {
+                this.temp = this.lineData[4];
+                this.temp1 = this.yAxis[4];
+                this.lineData.splice(4, 1);
+                this.yAxis.splice(4, 1);
+            }
+            this.$refs.chart.reload();
+        },
+        initEchart(){
+            this.yAxis = [];
+            this.lineData = [];
+            this.checkValue.forEach((item, index) => {
+                let uniformcode = item.substring(0, item.indexOf("$"));
+                let name = item.substring(item.indexOf("$") + 1);
+                let obj = {
+                    name: name,
+                    unit: "",
+                }
+                if (index%2 == 0)
+                    obj.position = "left";
+                else
+                    obj.position = "right";
+                this.yAxis.push(obj);
+
+                let data = {
+                    title: name,
+                    yAxisIndex: index
+                }
+                let value = [];
+                this.animationData[uniformcode].forEach(ele => {
+                    let obj = {
+                        text: String(ele),
+                        value: ele
+                    }
+                    value.push(obj)
+                })
+                data.value = value
+
+                this.lineData.push(data);
+            })
+        },
+    },
+    watch: {
+        data(value){
+            this.value1 = value.windTurbineId
+            this.checkList = []
+        }
+    }
+};
+</script>
+
+<style lang="less">
+.fault-diagnosis-pop-up-window {
+    width: 100%;
+
+    .time-axis-box {
+        margin: 16px auto;
+        display: flex;
+        width: 256px;
+
+        .time-axis-icon {
+            font-size: 30px;
+            line-height: 1;
+            cursor: pointer;
+        }
+
+        .time-axis-progress-box {
+            width: 200px;
+            height: 30px;
+            display: flex;
+            position: relative;
+
+            .time-axis-progress {
+                position: absolute;
+                height: 100%;
+                left: 0;
+                top: 0;
+                background: fade(@green, 60);
+                transition: all .1s;
+            }
+
+            .time-axis-progress-scale {
+                width: 10px;
+                height: 100%;
+                border: 1px solid @green;
+
+                +.time-axis-progress-scale {
+                    border-left: none;
+                }
+            }
+        }
+    }
+
+    .fdp-sub-title {
+        color: #a8b2b5;
+        margin: 2px 0 16px 0;
+    }
+
+    .cb-item {
+        margin-top: 12px;
+        width: 240px;
+    }
+
+    .fdp-chart {
+        width: 100%;
+        height: 32.407vh;
+    }
+}
+</style>

+ 2 - 3
src/views/malfunctionRecall/index.vue

@@ -120,7 +120,7 @@
 
 <script>
 import ComTable from "@com/coms/table/table.vue";
-import FaultDiagnosis from "../HealthControl/fault-diagnosis.vue";
+import FaultDiagnosis from "./components/fault-diagnosis.vue";
 
 export default {
   components: { ComTable, FaultDiagnosis },
@@ -198,13 +198,11 @@ export default {
     };
   },
   created() {
-    // this.requestSafeList();
     this.value1 = new Date(new Date().getTime() - 3600 * 1000 * 24).formatDate(
       "yyyy-MM-dd"
     );
     this.value2 = this.getTime(2);
     this.getWp();
-    this.requestSafeList();
   },
   methods: {
     getTime(val) {
@@ -234,6 +232,7 @@ export default {
           that.wpId = res.data[0].id;
           that.wpName = res.data[0].wpName;
           that.getWt(that.wpId, reGetWp);
+          that.requestSafeList();
         },
       });
     },

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

@@ -23,7 +23,7 @@
       </div>
     </div>
     <div class="df-table curTable">
-      <el-table :data="tableData.data" height="78vh" max-height="78vh" stripe style="width: 100%" :border="true">
+      <el-table :data="tableData.data" height="88vh" max-height="88vh" stripe style="width: 100%" :border="true">
         <el-table-column :show-overflow-tooltip="true" prop="wtname" width="150px" label="风机"></el-table-column>
         <el-table-column :show-overflow-tooltip="true" :label="tableTitle">
           <el-table-column :show-overflow-tooltip="true" label="近一天">

+ 21 - 3
src/views/singleAnalysis/index.vue

@@ -26,7 +26,17 @@
 			</div>
 		</div>
     <div class="df-table">
-      <ComTable height="78vh" :data="tableData"></ComTable>
+      <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>
     </div>
     <el-dialog title="切入切出风速整合历史" v-model="dialogShow" width="85%" top="10vh" custom-class="modal" :close-on-click-modal="true" @closed="dialogType = ''">
       test
@@ -35,7 +45,7 @@
 </template>
 
 <script>
-import ComTable from "@com/coms/table/table.vue";
+import ComTable from "../Decision/table.vue";
 export default {
   // 名称
   name: "cutAnalyse",
@@ -54,11 +64,13 @@ export default {
       wpId:"",
       recorddate:new Date((new Date().getTime() - 3600 * 1000 * 24)).formatDate("yyyy-MM-dd"),
       dialogShow:false,
+	  tableDataEnd: [], //合计
       tableData: {
         column: [
           {
             name: "机组编号",
             field: "windturbineName",
+			cursor: 'pointer',
             is_num: false,
             is_light: false,
             sortable: true,
@@ -238,6 +250,8 @@ export default {
                 ele[key] = ele[key] || 0;
               }
             });
+			that.tableDataEnd = res.data[res.data.length - 1];
+			res.data.pop();
             that.tableData.data = res.data;
           }
         });
@@ -288,7 +302,11 @@ export default {
         }
       });
 
-      const list = that.tableData.data; //把要导出的数据tableData存到list 
+	  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'); // 最后一个是表名字
     },

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

@@ -23,7 +23,7 @@
       </div>
     </div>
     <div class="df-table curTable">
-      <el-table :data="tableData.data" height="78vh" max-height="78vh" stripe style="width: 100%" :border="true">
+      <el-table :data="tableData.data" height="88vh" max-height="88vh" stripe style="width: 100%" :border="true">
         <el-table-column :show-overflow-tooltip="true" prop="wtname" label="风机" width="150px"></el-table-column>
         <el-table-column :show-overflow-tooltip="true" :label="tableTitle">
           <el-table-column :show-overflow-tooltip="true" label="近一天">

+ 582 - 0
src/views/windAnalysis/phdffx.vue

@@ -0,0 +1,582 @@
+<template>
+  <div id="phdffx">
+    <div class="query mg-b-8">
+      <div class="query-items">
+        <div class="query-item">
+          <div class="lable">场站:</div>
+          <div class="search-input">
+            <el-select v-model="wpId" clearable placeholder="请选择" popper-class="select" @change="(wpId) => { 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>
+          </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>
+          </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>
+          </div>
+        </div>
+        <div class="query-actions">
+          <button class="btn green" @click="getCharts()">查询</button>
+        </div>
+      </div>
+    </div>
+    <div class="mg-b-16">
+      <panel :title="'偏航对风风速分析'" :showLine="false">
+        <!-- <LineChart :list="statusData" :units="['']" :height="'220px'" /> -->
+        <div class="chart" id="linechart1"></div>
+      </panel>
+    </div>
+    <div class="mg-b-16">
+      <panel :title="'偏航对风功率分析'" :showLine="false">
+        <div class="chart" id="linechart2"></div>
+      </panel>
+    </div>
+    <div class="mg-b-16">
+      <panel :title="'偏航对风分析'" :showLine="false">
+        <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">
+      <div class="chart" id="linechartDialog"></div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import LineChart from "../../components/chart/line/normal-line-chart.vue";
+import Panel from "../../components/coms/panel/panel.vue";
+import util from "@/helper/util.js";
+import partten from "@/helper/partten.js";
+import * as echarts from "echarts";
+export default {
+  name: "phdffx",
+  components: { LineChart, Panel },
+  data() {
+    return {
+      wpList: [],
+      wpId: "MHS_FDC",
+      wtList: [],
+      wtId: "MG01_01",
+      startDate: "",
+      endDate: "",
+      line1XData: [],
+      line2XData: [],
+      dialogShow: false,
+    };
+  },
+  created() {
+    this.getStations();
+    this.getTurbines();
+    let end = new Date();
+    let start = new Date();
+    start.setDate(1);
+    this.endDate = end.formatDate("yyyy-MM-dd");
+    this.startDate = start.formatDate("yyyy-MM-dd");
+
+    this.getCharts();
+  },
+  methods: {
+    // 场站
+    async getStations() {
+      const res = await this.API.requestData({
+        method: "GET",
+        baseURL: "http://10.155.32.4:9001/",
+        subUrl: "benchmarking/wplist",
+      });
+      this.wpList = res.data.data;
+      // this.wpId = res.data.data[0].id;
+    },
+    async getTurbines() {
+      const res = await this.API.requestData({
+        method: "GET",
+        subUrl: "powercompare/windturbineAjax",
+        data: { wpId: this.wpId },
+      });
+      this.wtList = res.data.data;
+      this.wtId = res.data.data[0].id;
+    },
+    getCharts() {
+      this.getChart1();
+      this.getChart2();
+      this.getChart3();
+    },
+    async getChart1() {
+      const res = await this.API.requestData({
+        method: "POST",
+        subUrl: "yaw/getPassRate",
+        data: {
+          wtId: this.wtId,
+          beginDate: this.startDate,
+          endDate: this.endDate,
+          type: 2,
+        },
+      });
+      if (res && res.data && res.data.data) {
+        const xData = [];
+        const lData = [];
+        res.data.data.forEach((e) => {
+          xData.push(e.speed);
+          lData.push(e.passrate);
+        });
+        this.line1XData = xData;
+        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(100),
+            bottom: util.vh(24),
+          },
+          xAxis: [
+            {
+              name: "风速(m/s)",
+              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("linechart1"));
+        chart.clear();
+        chart.setOption(option);
+        this.resize = function () {
+          chart.resize();
+        };
+        chart.getZr().off("click");
+        chart.getZr().on("click", (params) => {
+          const pointInPixel = [params.offsetX, params.offsetY];
+          if (chart.containPixel("grid", pointInPixel)) {
+            let xIndex = chart.convertFromPixel({ seriesIndex: 0 }, [
+              params.offsetX,
+              params.offsetY,
+            ])[0];
+            // 图标点击事件
+            this.showDetail("2", this.line1XData[xIndex]);
+          }
+        });
+        window.addEventListener("resize", this.resize);
+      }
+    },
+    async getChart2() {
+      const res = await this.API.requestData({
+        method: "POST",
+        subUrl: "yaw/getPassRate",
+        data: {
+          wtId: this.wtId,
+          beginDate: this.startDate,
+          endDate: this.endDate,
+          type: 1,
+        },
+      });
+      if (res && res.data && res.data.data) {
+        const xData = [];
+        const lData = [];
+        res.data.data.forEach((e) => {
+          xData.push(e.power);
+          lData.push(e.passrate);
+        });
+        this.line2XData = xData;
+        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(100),
+            bottom: util.vh(24),
+          },
+          xAxis: [
+            {
+              name: "功率(kW)",
+              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("linechart2"));
+        chart.clear();
+        chart.setOption(option);
+        this.resize = function () {
+          chart.resize();
+        };
+        chart.getZr().off("click");
+        chart.getZr().on("click", (params) => {
+          const pointInPixel = [params.offsetX, params.offsetY];
+          if (chart.containPixel("grid", pointInPixel)) {
+            let xIndex = chart.convertFromPixel({ seriesIndex: 0 }, [
+              params.offsetX,
+              params.offsetY,
+            ])[0];
+            this.showDetail("1", this.line2XData[xIndex] / 100);
+          }
+        });
+        window.addEventListener("resize", this.resize);
+      }
+    },
+    async getChart3() {
+      const res = await this.API.requestData({
+        method: "POST",
+        subUrl: "yaw/getTotalRanges",
+        data: {
+          wtId: this.wtId,
+          beginDate: this.startDate,
+          endDate: this.endDate,
+          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);
+      }
+    },
+    async showDetail(type, value) {
+      this.dialogShow = true;
+      const res = await this.API.requestData({
+        method: "POST",
+        subUrl: "yaw/getRanges",
+        data: {
+          wtId: this.wtId,
+          beginDate: this.startDate,
+          endDate: this.endDate,
+          type: type,
+          value: value,
+        },
+      });
+      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]);
+          }
+        }
+        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("linechartDialog"));
+        chart.clear();
+        chart.setOption(option);
+        this.resize = function () {
+          chart.resize();
+        };
+      }
+    },
+  },
+};
+</script>
+<style lang="less">
+#phdffx {
+  .chart {
+    width: 100%;
+    height: 220px;
+    display: block;
+    margin: auto;
+  }
+}
+</style>

+ 9 - 5
src/views/wtSaturability/tab1.vue

@@ -89,7 +89,8 @@ export default {
         yAxisIndex: 0,
         value: []
       }],
-      chartUnit: ["功率(MW)", "(m/s)"]
+      // chartUnit: ["功率(MW)", "(m/s)"]
+       chartUnit: ["功率(MW)"]
     };
   },
 
@@ -156,7 +157,7 @@ export default {
           wtId: that.wtId
         },
         success (res) {
-
+          console.log('chartData1:',res)
           const keyArray = [{
             key: "value1",
             title: "风速"
@@ -171,11 +172,14 @@ export default {
             title: "保证功率"
           }];
 
-          let chartData = [{
+          let chartData = [
+            {
             title: "风速",
-            yAxisIndex: 1,
+            // yAxisIndex: 1,
+             yAxisIndex: 0,
             value: []
-          }, {
+          },
+           {
             title: "实际拟合功率",
             yAxisIndex: 0,
             value: []

+ 4 - 2
src/views/wtSaturability/tab2.vue

@@ -139,7 +139,8 @@ export default {
         yAxisIndex: 0,
         value: []
       }],
-      chartUnit: ["功率(MW)", "(m/s)"]
+      // chartUnit: ["功率(MW)", "(m/s)"]
+       chartUnit: ["功率(MW)"]
     };
   },
 
@@ -227,7 +228,8 @@ export default {
 
           let chartData = [{
             title: "风速",
-            yAxisIndex: 1,
+            // yAxisIndex: 1,
+             yAxisIndex: 0,
             value: []
           }, {
             title: "实际拟合功率",

+ 4 - 2
src/views/wtSaturability/tab3.vue

@@ -139,7 +139,8 @@ export default {
         yAxisIndex: 0,
         value: []
       }],
-      chartUnit: ["功率(MW)", "(m/s)"]
+      // chartUnit: ["功率(MW)", "(m/s)"]
+       chartUnit: ["功率(MW)"]
     };
   },
 
@@ -225,7 +226,8 @@ export default {
 
           let chartData = [{
             title: "风速",
-            yAxisIndex: 1,
+            // yAxisIndex: 1,
+             yAxisIndex: 0,
             value: []
           }, {
             title: "实际拟合功率",

+ 5 - 1
vue.config.js

@@ -66,7 +66,11 @@ module.exports = {
   chainWebpack: (config) => {
 
     config.resolve.symlinks(true); // 修复热更新失效
-
+	config.plugin('html')
+	      .tap(args => {
+	        args[0].title = "智能综合分析系统";
+	        return args;
+	      })
     // 路径别名
     config.resolve.alias
       .set("@", resolve("src"))