Browse Source

冲突修改

Koishi 1 year ago
parent
commit
70dbd19c6a
64 changed files with 11028 additions and 513 deletions
  1. 3 3
      package.json
  2. 2 3
      public/static/config/modeConfig.js
  3. 6 2
      src/App.vue
  4. BIN
      src/assets/png/yfjd.png
  5. 4 0
      src/assets/styles/color.less
  6. 670 0
      src/components/arcgis/AK_GDC.vue
  7. 1 1
      src/components/chart/line/multiple-line-chart.vue
  8. 37 3
      src/components/coms/table/table.vue
  9. 2 2
      src/components/coms/wt-chooser/wt-chooser.vue
  10. 199 195
      src/components/other/healthReport/index.vue
  11. 12 0
      src/router/index.js
  12. 8 8
      src/views/Home/Home.vue
  13. 11 0
      src/views/Home/components/map.vue
  14. 319 0
      src/views/Home/components/map/AK_GDC.vue
  15. 91 16
      src/views/Home/components/map/svg-map-nx.vue
  16. 2 2
      src/views/LightMatrix/LightMatrix.vue
  17. 3 3
      src/views/LightMatrix1/LightMatrix1.vue
  18. 2 1
      src/views/NewPages/iframe4.vue
  19. 4 4
      src/views/NewPages/power-benchmarking.vue
  20. 27 0
      src/views/SandTable/component/ThreeModel1.vue
  21. 3 0
      src/views/SandTable/component/hls.vue
  22. 3 3
      src/views/Status/Status.vue
  23. 9 1
      src/views/Status/components/status-panel.vue
  24. 1 1
      src/views/WindSite/WindSite.vue
  25. 1014 1
      src/views/WindSite/components/boosterstation/BoosterStation.js
  26. 5115 0
      src/views/WindSite/components/boosterstation/ak.vue
  27. 354 0
      src/views/WindSite/components/boosterstation/akagcscreen.vue
  28. 383 0
      src/views/WindSite/components/boosterstation/akavcscreen.vue
  29. 253 0
      src/views/WindSite/components/boosterstation/akdirectscreen.vue
  30. 292 0
      src/views/WindSite/components/boosterstation/akenergy.vue
  31. 260 0
      src/views/WindSite/components/boosterstation/aknbqscreen.vue
  32. 272 0
      src/views/WindSite/components/boosterstation/akpartscreen.vue
  33. 248 0
      src/views/WindSite/components/boosterstation/akpublictest.vue
  34. 257 0
      src/views/WindSite/components/boosterstation/akups.vue
  35. 3 0
      src/views/WindSite/components/boosterstation/dwk.vue
  36. 3 0
      src/views/WindSite/components/boosterstation/hzj.vue
  37. 3 0
      src/views/WindSite/components/boosterstation/mch.vue
  38. 3 0
      src/views/WindSite/components/boosterstation/mhs.vue
  39. 3 0
      src/views/WindSite/components/boosterstation/nss.vue
  40. 3 0
      src/views/WindSite/components/boosterstation/pl1.vue
  41. 3 0
      src/views/WindSite/components/boosterstation/pl2.vue
  42. 3 0
      src/views/WindSite/components/boosterstation/qs.vue
  43. 3 0
      src/views/WindSite/components/boosterstation/sbdl.vue
  44. 3 0
      src/views/WindSite/components/boosterstation/sbq.vue
  45. 3 0
      src/views/WindSite/components/boosterstation/xh.vue
  46. 3 0
      src/views/WindSite/components/boosterstation/xs.vue
  47. 507 0
      src/views/WindSite/components/generalappearance/ak.vue
  48. 0 1
      src/views/WindSite/components/generalappearance/hzj.vue
  49. 26 22
      src/views/WindSite/components/previewPicture.vue
  50. 8 3
      src/views/WindSite/pages/BoosterStation.vue
  51. 2 2
      src/views/WindSite/pages/DraughtFanList.vue
  52. 4 2
      src/views/WindSite/pages/GeneralAppearance.vue
  53. 90 0
      src/views/WindSite/pages/Home/stationJson/AK_GDC.js
  54. 31 24
      src/views/WindSite/pages/Inverter-Info.vue
  55. 21 20
      src/views/WindSite/pages/Map.vue
  56. 1 1
      src/views/WindSite/pages/Tower.vue
  57. 282 0
      src/views/alarmCenter/gfAlarm.vue
  58. 58 187
      src/views/layout/Menu.vue
  59. 2 0
      src/views/powerRank/index.vue
  60. 33 0
      src/views/report/akscyb.vue
  61. 1 1
      src/views/report/gfczzdy.vue
  62. 46 1
      src/views/report/loadRate.vue
  63. 12 0
      src/views/sisView/index.vue
  64. 1 0
      vue.config.js

+ 3 - 3
package.json

@@ -11,13 +11,13 @@
     "fix-memory-limit": "cross-env LIMIT=4096 increase-memory-limit"
   },
   "dependencies": {
+    "@open-wc/webpack-import-meta-loader": "0.4.7",
     "@antv/x6": "^1.24.4",
-    "@arcgis/core": "^4.19.3",
+    "@arcgis/core": "4.19.3",
     "@element-plus/icons-vue": "^0.2.4",
-    "@open-wc/webpack-import-meta-loader": "git+https://github.com/KmjKoishi/webpack-import-meta-loader-fixed.git",
     "animate.css": "3.5",
     "axios": "^0.21.1",
-    "cesium": "^1.78.0",
+    "cesium": "1.78.0",
     "core-js": "^3.6.5",
     "echarts": "^5.1.1",
     "echarts-gl": "^2.0.4",

+ 2 - 3
public/static/config/modeConfig.js

@@ -18,9 +18,8 @@ const adapterUrl = "http://10.155.32.4:8011/";
 // 切换模块时是否提示当前模块名称(用于对内介绍项目时便捷显示模块名称)
 const showModuleName = 0;
 
-if (localTest) {
-    // baseURL = "http://192.168.10.13:8082/" // 联机调试 - 石林
-    baseURL = "http://192.168.10.8:8082/" // 联机调试 - 王昌盛
+if (localTest) {   
+    baseURL = "http://192.168.10.14:8082/" 
 
     tilesUrl = "http://localhost:8080/static/cesium/Assets/Textures/NaturalEarthII";
 } else {

+ 6 - 2
src/App.vue

@@ -1,5 +1,5 @@
 <template>
-  <div v-if="!showSisView && isLogined" class="main">
+  <div v-if="!showSisView && isLogined" class="main" @mousemove="funAppMove">
     <div class="header-body" v-if="hideHeard === '0'">
       <div class="header-title">
         <svg
@@ -239,7 +239,6 @@ l16.229-16.229l16.229,16.229l42.867-42.867C115.034,45.228,109.133,42.189,102.956
     <div
       class="menu-body"
       :class="{ hover: isShowMenu }"
-      @mouseenter="showMenu"
       @mouseleave="hideMenu"
       v-show="$store.state.themeName === 'dark'"
       v-if="hideMenus === '0'"
@@ -383,6 +382,11 @@ export default {
     HeaderMenuClick(data) {
       this.root = data.id;
     },
+    funAppMove(e){ //1.481vh
+      if (e.clientX <= 1.481*(window.innerHeight/100) && e.clientY >= 4.63*(window.innerHeight/100)) {
+        this.showMenu()
+      }
+    },
     showMenu() {
       this.isShowMenu = true;
       this.memuCloseTimeout && clearTimeout(this.memuCloseTimeout);

BIN
src/assets/png/yfjd.png


+ 4 - 0
src/assets/styles/color.less

@@ -14,6 +14,10 @@
   background: @blue;
 }
 
+.bg-gray {
+  background: @font-color;
+}
+
 .bg-pink {
   background: @pink;
 }

+ 670 - 0
src/components/arcgis/AK_GDC.vue

@@ -0,0 +1,670 @@
+<template>
+  <div class="map-1" style="width: 100%; height: 100%">
+    <arcgis @when="when" ref="arcgis" :data="arcgisData" @clickMap="clickMap">
+      <template v-slot:content>
+        <div class="panel-box">
+          <div
+            class="panel-item"
+            :class="panel.line"
+            v-for="(panel, index) of panels"
+            :key="index"
+          >
+            <svg
+              v-show="panel.type != 'none' && panel.type != 'syz'"
+              viewBox="0 0 800 800"
+              version="1.1"
+              xmlns="http://www.w3.org/2000/svg"
+              xmlns:xlink="http://www.w3.org/1999/xlink"
+              xml:space="preserve"
+            >
+              <defs>
+                <rect
+                  id="fill-rect"
+                  x="5"
+                  y="5"
+                  rx="8"
+                  ry="8"
+                  width="90"
+                  height="340"
+                  fill="#303B6F"
+                />
+                <rect
+                  id="none-rect"
+                  x="5"
+                  y="5"
+                  rx="8"
+                  ry="8"
+                  width="90"
+                  height="120"
+                  fill="#303B6F"
+                />
+                <g id="panel-deepblue">
+                  <polygon
+                    fill="#FFFFFF"
+                    points="300 13.73 60.07 13.73 60.07 13.73 22.48 13.73 0 109.84 0 109.84 0 109.84 0 109.84 0 109.84 22.48 205.95 272.88 205.95 272.88 205.61 300 205.61 300 13.73"
+                  />
+                  <polygon
+                    fill="#5C9BAF"
+                    points="250.4 109.84 3.26 109.84 29 0 276.14 0 250.4 109.84"
+                  />
+                  <polygon
+                    fill="#00486B"
+                    points="29 219.68 276.14 219.68 250.4 109.84 3.26 109.84 29 219.68"
+                  />
+                </g>
+                <g id="panel-blue">
+                  <polygon
+                    fill="#FFFFFF"
+                    points="300 13.73 60.07 13.73 60.07 13.73 22.48 13.73 0 109.84 0 109.84 0 109.84 0 109.84 0 109.84 22.48 205.95 272.88 205.95 272.88 205.61 300 205.61 300 13.73"
+                  />
+                  <polygon
+                    fill="#23ABFF"
+                    points="250.4 109.84 3.26 109.84 29 0 276.14 0 250.4 109.84"
+                  />
+                  <polygon
+                    fill="#0E6BBB"
+                    points="29 219.68 276.14 219.68 250.4 109.84 3.26 109.84 29 219.68"
+                  />
+                </g>
+                <g id="panel-red">
+                  <polygon
+                    fill="#FFFFFF"
+                    points="290 13.27 58.07 13.27 58.07 13.27 21.73 13.27 0 106.18 0 106.18 0 106.18 0 106.18 0 106.18 21.73 199.09 263.79 199.09 263.79 198.75 290 198.75 290 13.27"
+                  />
+                  <polygon
+                    fill="#EC1208"
+                    points="242.05 106.18 3.15 106.18 28.04 0 266.94 0 242.05 106.18"
+                  />
+                  <polygon
+                    fill="#AA0607"
+                    points="28.04 212.36 266.94 212.36 242.05 106.18 3.15 106.18 28.04 212.36"
+                  />
+                </g>
+              </defs>
+              <!-- 底图 左右两列矩形 -->
+              <g>
+                <use xlink:href="#fill-rect" x="50" y="50" />
+                <use xlink:href="#fill-rect" x="150" y="50" />
+                <use xlink:href="#fill-rect" x="550" y="50" />
+                <use xlink:href="#fill-rect" x="650" y="50" />
+                <use xlink:href="#fill-rect" x="50" y="400" />
+                <use xlink:href="#fill-rect" x="150" y="400" />
+                <use xlink:href="#fill-rect" x="550" y="400" />
+                <use xlink:href="#fill-rect" x="650" y="400" />
+              </g>
+
+              <!-- 中间上矩形 全部 -->
+              <g
+                :style="
+                  'display: ' +
+                  (panel.type == 'fill' || panel.type == 'bottom'
+                    ? 'block'
+                    : 'none')
+                "
+              >
+                <use xlink:href="#fill-rect" x="250" y="50" />
+                <use xlink:href="#fill-rect" x="350" y="50" />
+                <use xlink:href="#fill-rect" x="450" y="50" />
+              </g>
+
+              <!-- 中间上矩形 一半 -->
+              <g
+                :style="'display: ' + (panel.type == 'top' ? 'block' : 'none')"
+              >
+                <use xlink:href="#none-rect" x="250" y="270" />
+                <use xlink:href="#none-rect" x="350" y="270" />
+                <use xlink:href="#none-rect" x="450" y="270" />
+              </g>
+
+              <!-- 中间上逆变器 深蓝色 -->
+              <g
+                :style="
+                  'display: ' +
+                  (panel.type == 'top' && panel.state == 'deepblue'
+                    ? 'block'
+                    : 'none')
+                "
+                class="can-click esri-component"
+                @click.prevent="clickEl(panel)"
+              >
+                <use xlink:href="#panel-deepblue" x="250" y="50" />
+              </g>
+
+              <!-- 中间上逆变器 蓝色 -->
+              <g
+                :style="
+                  'display: ' +
+                  (panel.type == 'top' && panel.state == 'blue'
+                    ? 'block'
+                    : 'none')
+                "
+                class="can-click esri-component"
+                @click.prevent="clickEl(panel)"
+              >
+                <use xlink:href="#panel-blue" x="250" y="50" />
+              </g>
+
+              <!-- 中间上逆变器 红色 -->
+              <g
+                :style="
+                  'display: ' +
+                  (panel.type == 'top' && panel.state == 'red'
+                    ? 'block'
+                    : 'none')
+                "
+                class="can-click esri-component"
+                @click.prevent="clickEl(panel)"
+              >
+                <use xlink:href="#panel-red" x="250" y="50" />
+              </g>
+
+              <!-- 中间上文字 -->
+              <g
+                :style="'display: ' + (panel.type == 'top' ? 'block' : 'none')"
+                class="can-click esri-component"
+                @click.prevent="clickEl(panel)"
+              >
+                <text
+                  x="365"
+                  y="220"
+                  fill="#ffffff"
+                  font-size="150"
+                  text-anchor="middle"
+                >
+                  {{ panel.code }}
+                </text>
+              </g>
+
+              <!-- 中间下矩形 全部 -->
+              <g
+                :style="
+                  'display: ' +
+                  (panel.type == 'fill' || panel.type == 'top'
+                    ? 'block'
+                    : 'none')
+                "
+              >
+                <use xlink:href="#fill-rect" x="250" y="400" />
+                <use xlink:href="#fill-rect" x="350" y="400" />
+                <use xlink:href="#fill-rect" x="450" y="400" />
+              </g>
+
+              <!-- 中间下矩形 一半 -->
+              <g
+                :style="
+                  'display: ' + (panel.type == 'bottom' ? 'block' : 'none')
+                "
+              >
+                <use xlink:href="#none-rect" x="250" y="400" />
+                <use xlink:href="#none-rect" x="350" y="400" />
+                <use xlink:href="#none-rect" x="450" y="400" />
+              </g>
+
+              <!-- 中间下逆变器 深蓝色 -->
+              <g
+                :style="
+                  'display: ' +
+                  (panel.type == 'bottom' && panel.state == 'deepblue'
+                    ? 'block'
+                    : 'none')
+                "
+                class="can-click esri-component"
+                @click.prevent="clickEl(panel)"
+              >
+                <use xlink:href="#panel-deepblue" x="250" y="530" />
+              </g>
+
+              <!-- 中间下逆变器 蓝色 -->
+              <g
+                :style="
+                  'display: ' +
+                  (panel.type == 'bottom' && panel.state == 'blue'
+                    ? 'block'
+                    : 'none')
+                "
+                class="can-click esri-component"
+                @click.prevent="clickEl(panel)"
+              >
+                <use xlink:href="#panel-blue" x="250" y="530" />
+              </g>
+
+              <!-- 中间下逆变器 红色 -->
+              <g
+                :style="
+                  'display: ' +
+                  (panel.type == 'bottom' && panel.state == 'red'
+                    ? 'block'
+                    : 'none')
+                "
+                class="can-click esri-component"
+                @click.prevent="clickEl(panel)"
+              >
+                <use xlink:href="#panel-red" x="250" y="530" />
+              </g>
+
+              <!-- 中间下文字 -->
+              <g
+                :style="
+                  'display: ' + (panel.type == 'bottom' ? 'block' : 'none')
+                "
+                class="can-click"
+                @click.prevent="clickEl(panel)"
+              >
+                <text
+                  x="460"
+                  y="740"
+                  fill="#ffffff"
+                  font-size="150"
+                  text-anchor="middle"
+                >
+                  {{ panel.code }}
+                </text>
+              </g>
+            </svg>
+            <div v-show="panel.type == 'syz'" class="panel-syz">
+              <img :src="syzImg" class="syz-img" />
+              <div class="syz-text">升压站</div>
+            </div>
+          </div>
+          <!-- <img :src="tempImg" style="width: 800px; height: 700px;"> -->
+        </div>
+      </template>
+    </arcgis>
+  </div>
+</template>
+
+<script>
+import arcgis from "./arcgis.vue";
+import dataService from "@/helper/data.js";
+
+export default {
+  // 名称
+  name: "Map",
+  // 使用组件
+  components: {
+    arcgis,
+  },
+  props: {
+    wpId: {
+      type: String,
+      default: "",
+    },
+  },
+  // 数据
+  data() {
+    return {
+      wpnumMap: {}, //风机监视数量
+      wpInfoMap: {}, //风机详情
+      fjmap: [], // 风机名
+      sourceId: "",
+      arcgisData: {
+        mode: "2D", // 模式 2D 3D
+        title: "宁夏地图", // 标题
+        center: [106.40,39.01], // 初始中心点
+        height: 654, // 3D地图初始相机高度
+        tilt: 65, // 俯视角
+        scale: 15000,
+        rotation: 180,
+      },
+      tempImg: require("@assets/temp1.png"),
+      syzImg: require("@assets/png/booster-station.png"),
+      showPopup: true,
+      panels: 
+	  [{"id":"00","type":"top","code":1,"state":"deepblue","line":"top left"},
+	  {"id":"01","type":"top","code":2,"state":"deepblue","line":"top right"},
+	  {"id":"02","type":"top","code":3,"state":"deepblue","line":"top"},
+	  {"id":"03","type":"top","code":4,"state":"deepblue","line":"top right"},
+	  {"id":"04","type":"top","code":5,"state":"deepblue","line":"top"},
+	  {"id":"05","type":"top","code":6,"state":"deepblue","line":"top right"},
+	  {"id":"06","type":"top","code":7,"state":"deepblue","line":"top"},
+	  {"id":"07","type":"top","code":8,"state":"deepblue","line":"top right"},
+	  {"id":"08","type":"top","code":9,"state":"deepblue","line":"top"},
+	  {"id":"09","type":"top","code":10,"state":"deepblue","line":"top right"},
+	  {"id":"10","type":"top","code":11,"state":"deepblue","line":"top left"}]
+    };
+  },
+  created() {
+    let that = this;
+    that.sourceId = this.wpId;
+    that.$nextTick(() => {});
+  },
+  // 函数
+  methods: {
+    when: function () {
+      this.$refs.arcgis.addHtmlPoint(
+        [106.40,39.01],
+        "content",
+        400,
+        350
+      );
+    },
+    clickMap: function (info) {
+      console.log(info);
+    },
+    clickEl: function (item) {
+		let wpId = this.$route.path.split('/').pop(),
+			wtId = wpId.split('_')[0] +'01_'+ item.id;
+		this.$router.push({
+		  path: `/monitor/windsite/inverter-info/`+wpId+`/`+wtId,
+		});
+    },
+  },
+  watch: {
+    wpId(res) {
+      this.sourceId = res;
+    },
+  },
+};
+</script>
+
+<style lang="less">
+@titleHeight: 40px;
+
+.map-1 {
+  width: 100%;
+  height: calc(100vh - 90px);
+  display: flex;
+  flex-direction: column;
+
+  .btn-group-tabs {
+    display: flex;
+    flex-direction: row;
+  }
+
+    .panel-box {
+        width: 840px;
+        padding: 20px;
+        display: flex;
+        flex-wrap: wrap;
+        background: #536268B8;
+
+        .panel-item {
+            width: 80px;
+            height: 80px;
+            position: relative;
+            
+            // margin-top: -20px;
+            // margin-left: -20px;
+
+            &.top {
+                &::after {
+                    top: -3px;
+                    opacity: 1;
+                }
+            }
+
+            &.bottom {
+                &::after {
+                    bottom: -3px;
+                    opacity: 1;
+                }
+            }
+
+            &.left {
+                &::before {
+                    left: -3px;
+                    opacity: 1;
+                }
+            }
+
+            &.right {
+                &::before {
+                    right: -3px;
+                    opacity: 1;
+                }
+            }
+
+            &::after {
+                content: '';
+                width: 100%;
+                height: 6px;
+                position: absolute;
+                left: 0;
+                background: @green;
+                opacity: 0;
+            }
+
+            &::before {
+                content: '';
+                width: 6px;
+                height: 100%;
+                position: absolute;
+                top: 0;
+                background: @green;
+                opacity: 0;
+            }
+
+            svg {
+                width: 80px;
+                height: 80px;
+            }
+
+            .panel-syz {
+                width: 100%;
+                height: 100%;
+                position: relative;
+
+                .syz-img {
+                    position: absolute;
+                    height: 70px;
+                    top: -35px;
+                    left: -10px;
+                }
+
+                .syz-text {
+                    position: absolute;
+                    color: @green;
+                    font-size: @fontsize-l;
+                    width: 100%;
+                    text-align: center;
+                    left: 0;
+                    top: -55px;
+                    font-weight: bold;
+                }
+            }
+        }
+
+    }
+
+  .can-click {
+    cursor: pointer;
+  }
+
+  .syz-img {
+    width: 65px;
+    height: 47px;
+
+    img {
+      width: 100%;
+      height: 100%;
+    }
+  }
+
+  .panel-title {
+    width: 100%;
+    background-color: fade(@darkgray, 40%);
+    margin-top: 16px;
+    padding: 6px;
+    display: flex;
+    align-items: center;
+
+    .panel-title-name {
+      color: @green;
+      display: flex;
+      align-items: center;
+      line-height: 0;
+      font-size: 0;
+
+      i,
+      span {
+        margin: 0 0 0 16px;
+        line-height: 0;
+        font-size: 13px;
+      }
+    }
+
+    .sub-title-item {
+      display: flex;
+      align-items: center;
+      margin-left: 16px;
+
+      .sub-title {
+        font-size: 13px;
+        margin-left: 6px;
+      }
+
+      .sub-count {
+        font-size: 13px;
+        font-weight: 500;
+      }
+
+      img {
+        height: 31px;
+      }
+    }
+  }
+
+  .panel-body {
+    flex-grow: 1;
+    background-color: fade(@darkgray, 20%);
+    padding: 8px;
+    overflow: auto;
+    position: relative;
+
+    .arcgis-layer {
+      z-index: 1;
+    }
+
+    .map-popup-panel {
+      width: 760px;
+      position: absolute;
+      left: 71px;
+      top: 22px;
+      z-index: 2;
+
+      .map-popup-panel-header {
+        width: 100%;
+        background: fade(#152221, 90%);
+        display: flex;
+
+        .map-popup-panel-title {
+          padding: 17px 24px;
+          font-size: @fontsize-s;
+          position: relative;
+
+          &::before,
+          &::after {
+            position: absolute;
+            width: calc(50% - 6px);
+            bottom: 0;
+            border-bottom: 2px solid @green;
+          }
+
+          &::before {
+            content: "";
+            left: 0;
+          }
+
+          &::after {
+            content: "";
+            right: 0;
+          }
+
+          span {
+            position: absolute;
+            width: 11.3px;
+            height: 11.3px;
+            border-left: 2px solid @green;
+            border-top: 2px solid @green;
+            left: calc(50% - 5.65px);
+            bottom: -3px;
+            transform: rotate(45deg);
+          }
+        }
+
+        .map-popup-panel-date {
+          flex-grow: 1;
+          padding: 17px 24px;
+          font-size: @fontsize-s;
+          text-align: right;
+          border-bottom: 2px solid @green;
+        }
+
+        .map-popup-panel-back {
+          margin-left: auto;
+          width: 54px;
+          display: flex;
+          align-items: center;
+          justify-content: center;
+          position: relative;
+          cursor: pointer;
+
+          &::after {
+            content: "";
+            position: absolute;
+            left: 0;
+            height: 50%;
+            border-left: 1px solid @gray;
+            top: 25%;
+          }
+        }
+      }
+
+      .map-popup-panel-body {
+        background: fade(#152221, 75%);
+        border: 1px solid fade(@darkgray, 40);
+        border-top: 0px;
+
+        .table-form {
+          .text,
+          .unit {
+            font-weight: 400;
+          }
+
+          .unit {
+            min-width: auto;
+          }
+
+          .value,
+          .unit {
+            text-align: left;
+          }
+        }
+      }
+    }
+
+    .map-tool {
+      position: absolute;
+      right: 22px;
+      top: 22px;
+      z-index: 2;
+      background: #152221af;
+      padding: 18px 14px;
+
+      .m-btn {
+        width: 124px;
+        height: 44px;
+        background: #152221bf;
+        border: 1px solid #152221bf;
+        color: #ffffff;
+        transition: all 0.3s;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        cursor: pointer;
+
+        &:hover,
+        &.active {
+          background: #05bb4c33;
+          border: 1px solid #05bb4c;
+          color: #05bb4c;
+        }
+
+        + .m-btn {
+          margin-top: 16px;
+        }
+      }
+    }
+  }
+}
+</style>

+ 1 - 1
src/components/chart/line/multiple-line-chart.vue

@@ -410,7 +410,7 @@ export default {
         },
         xAxis: [
           {
-            name: "(m/s)",
+            name: "",
             type: "category",
             boundaryGap: false,
             axisLabel: {

+ 37 - 3
src/components/coms/table/table.vue

@@ -37,6 +37,27 @@
             </component>
           </td>
         </tr>
+        <tr v-if="(showMerge && tableData.length)">
+          <td
+            v-for="(col, i) of data.column"
+            :key="i"
+            :style="{ width: col.width }"
+            :class="{
+              light: hoverRow == mergeRow || hoverCol == col,
+              num: col.is_num,
+              'always-light': col.is_light || mergeRow.is_light,
+            }"
+            @mouseenter="hover(mergeRow, col)"
+            @mouseleave="leave()"
+          >
+            <component
+              :is="col.type ? col.type : 'span'"
+              v-bind="col.props"
+              v-html="template(col, mergeRow[col.field])"
+            >
+            </component>
+          </td>
+        </tr>
       </tbody>
     </el-scrollbar>
     <el-pagination
@@ -115,6 +136,15 @@ export default {
       type: String,
       default: "",
     },
+    // 是否显示合并行
+    showMerge: {
+      type: Boolean,
+      default: false
+    },
+    mergeRow: { //合并行
+      type: Object,
+      default: () => {}
+    },
     // 新增 支持 pagging 组件
     elPaggingProps: {
       type: Object,
@@ -140,7 +170,7 @@ export default {
       sortType: "",
       currentPage: 1,
     };
-  },
+  }, 
   computed: {
     tableData() {
       let that = this;
@@ -148,7 +178,9 @@ export default {
         return this.data.data;
       } else {
         let data = this.data.data;
-
+        if(that.sortType === ''){
+          return data
+        }
         data.sort((a, b) => {
           let rev = 1;
           if (that.sortType == "ASC") rev = 1;
@@ -266,7 +298,9 @@ export default {
     // 渲染后
   },
   beforeUpdate() {},
-  updated() {},
+  updated() {
+    this.sortType = ''
+  },
 };
 </script>
 

+ 2 - 2
src/components/coms/wt-chooser/wt-chooser.vue

@@ -4,7 +4,7 @@
       <div class="query-item">
         <div class="lable">风场:</div>
         <div class="search-input">
-          <el-select v-model="wpId" clearable placeholder="请选择风场" popper-class="select" @change="getWtList">
+          <el-select :value="wpId" clearable placeholder="请选择风场" popper-class="select" @change="getWtList">
             <el-option v-for="item in wpList" :key="item.id" :label="item.name" :value="item.id">
             </el-option>
           </el-select>
@@ -13,7 +13,7 @@
       <div class="query-item">
         <div class="lable">风机:</div>
         <div class="search-input">
-          <el-select v-model="wtId" clearable placeholder="请选择风机" popper-class="select" @change="wtChange">
+          <el-select :value="wtId" clearable placeholder="请选择风机" popper-class="select" @change="wtChange">
             <el-option v-for="item in wtList" :key="item.id" :label="item.name" :value="item.id">
             </el-option>
           </el-select>

+ 199 - 195
src/components/other/healthReport/index.vue

@@ -1096,7 +1096,7 @@ export default {
       pjmxs: [],
       wttragetreportcharts: [],
 
-      zhrank: 2,
+      zhrank: null,
       // 维修换件频次
       wxhjpc: [
         {
@@ -2163,202 +2163,206 @@ export default {
             // 评价结果明细
             that.xnpjmx = [];
             let pjmx = that.datas.healthreport.pjmxs[0];
-            that.zhrank = pjmx.rank;
-            let xnpjmx1 = {
-              lx: "",
-              zb: "发电量",
-              sz: pjmx.dayfdl,
-              pm: pjmx.monthfdl,
-              pf: pjmx.yearfdl == null ? 0 : pjmx.yearfdl,
-            };
-            let xnpjmx2 = {
-              lx: "",
-              zb: "理论发电量",
-              sz: pjmx.dayllfdl,
-              pm: pjmx.monthllfdl,
-              pf: pjmx.yearllfdl == null ? 0 : pjmx.yearllfdl,
-            };
-            let xnpjmx3 = {
-              lx: "",
-              zb: "平均功率",
-              sz: pjmx.daygl,
-              pm: pjmx.monthgl,
-              pf: pjmx.yeargl == null ? 0 : pjmx.yeargl,
-            };
-            let xnpjmx4 = {
-              lx: "",
-              zb: "故障损失电量",
-              sz: pjmx.daygzssdl,
-              pm: pjmx.monthgzssdl,
-              pf: pjmx.yeargzssdl == null ? 0 : pjmx.yeargzssdl,
-            };
-            let xnpjmx5 = {
-              lx: "",
-              zb: "限电损失电量",
-              sz: pjmx.dayxdssdl,
-              pm: pjmx.monthxdssdl,
-              pf: pjmx.yearxdssdl == null ? 0 : pjmx.yearxdssdl,
-            };
-            let xnpjmx6 = {
-              lx: "",
-              zb: "维护损失电量",
-              sz: pjmx.daywhssdl,
-              pm: pjmx.monthwhssdl,
-              pf: pjmx.yearwhssdl == null ? 0 : pjmx.yearwhssdl,
-            };
-            let xnpjmx7 = {
-              lx: "",
-              zb: "故障时间",
-              sz: pjmx.daygzsj,
-              pm: pjmx.monthgzsj,
-              pf: pjmx.yeargzsj == null ? 0 : pjmx.yeargzsj,
-            };
-            let xnpjmx8 = {
-              lx: "",
-              zb: "维护时间",
-              sz: pjmx.daywhsj,
-              pm: pjmx.monthwhsj,
-              pf: pjmx.yearwhsj == null ? 0 : pjmx.yearwhsj,
-            };
-            let xnpjmx9 = {
-              lx: "",
-              zb: "运行时间",
-              sz: pjmx.dayyxsj,
-              pm: pjmx.monthyxsj,
-              pf: pjmx.yearyxsj == null ? 0 : pjmx.yearyxsj,
-            };
-            let xnpjmx10 = {
-              lx: "",
-              zb: "停机时间",
-              sz: pjmx.daytjsj,
-              pm: pjmx.monthtjsj,
-              pf: pjmx.yeartjsj == null ? 0 : pjmx.yeartjsj,
-            };
-            let xnpjmx11 = {
-              lx: "性能",
-              zb: "平均切入风速",
-              sz: pjmx.dayxfqr,
-              pm: pjmx.monthxfqr,
-              pf: pjmx.yearxfqr == null ? 0 : pjmx.yearxfqr,
-            };
-            let xnpjmx12 = {
-              lx: "性能",
-              zb: "性能损失电量",
-              sz: pjmx.dayxnssdl,
-              pm: pjmx.monthxnssdl,
-              pf: pjmx.yearxnssdl == null ? 0 : pjmx.yearxnssdl,
-            };
-            let xnpjmx13 = {
-              lx: "性能",
-              zb: "拟合优度",
-              sz: pjmx.dayNHYD,
-              pm: pjmx.monthNHYD,
-              pf: pjmx.yearNHYD == null ? 0 : pjmx.yearNHYD,
-            };
-            let xnpjmx14 = {
-              lx: "性能",
-              zb: "功率一致性系数",
-              sz: pjmx.dayglyzxxs,
-              pm: 9,
-              pf: pjmx.yearglyzxxs == null ? 0 : pjmx.yearglyzxxs,
-            };
-            let xnpjmx15 = {
-              lx: "可靠性管理",
-              zb: "利用小时",
-              sz: pjmx.dayLYXS,
-              pm: pjmx.monthLYXS,
-              pf: pjmx.yearLYXS == null ? 0 : pjmx.yearLYXS,
-            };
-            let xnpjmx16 = {
-              lx: "可靠性管理",
-              zb: "设备可利用率",
-              sz: pjmx.daySBKLYL,
-              pm: pjmx.monthSBKLYL,
-              pf: pjmx.yearSBKLYL == null ? 0 : pjmx.yearSBKLYL,
-            };
-            let xnpjmx17 = {
-              lx: "可靠性管理",
-              zb: "等效可利用系数",
-              sz: pjmx.dayDXKYXS,
-              pm: pjmx.monthDXKYXS,
-              pf: pjmx.yearDXKYXS == null ? 0 : pjmx.yearDXKYXS,
-            };
-            let xnpjmx18 = {
-              lx: "可靠性管理",
-              zb: "有效风时数",
-              sz: pjmx.dayyxfss,
-              pm: pjmx.monthyxfss,
-              pf: pjmx.yearyxfss == null ? 0 : pjmx.yearyxfss,
-            };
-            let xnpjmx19 = {
-              lx: "资源",
-              zb: "平均风速",
-              sz: pjmx.dayfs,
-              pm: pjmx.monthfs,
-              pf: pjmx.yearfs == null ? 0 : pjmx.yearfs,
-            };
-            let xnpjmx20 = {
-              lx: "资源",
-              zb: "静风频率",
-              sz: pjmx.dayjfpl,
-              pm: pjmx.monthjfpl,
-              pf: pjmx.yearjfpl == null ? 0 : pjmx.yearjfpl,
-            };
-            that.xnpjmx.push(xnpjmx1);
-            that.xnpjmx.push(xnpjmx2);
-            that.xnpjmx.push(xnpjmx3);
-            that.xnpjmx.push(xnpjmx4);
-            that.xnpjmx.push(xnpjmx5);
-            that.xnpjmx.push(xnpjmx6);
-            that.xnpjmx.push(xnpjmx7);
-            that.xnpjmx.push(xnpjmx8);
-            that.xnpjmx.push(xnpjmx9);
-            that.xnpjmx.push(xnpjmx10);
-            that.xnpjmx.push(xnpjmx11);
-            that.xnpjmx.push(xnpjmx12);
-            that.xnpjmx.push(xnpjmx13);
-            that.xnpjmx.push(xnpjmx14);
-            that.xnpjmx.push(xnpjmx15);
-            that.xnpjmx.push(xnpjmx16);
-            that.xnpjmx.push(xnpjmx17);
-            that.xnpjmx.push(xnpjmx18);
-            that.xnpjmx.push(xnpjmx19);
-            that.xnpjmx.push(xnpjmx20);
+            if(pjmx){
+              that.zhrank = pjmx.rank;
+              let xnpjmx1 = {
+                lx: "",
+                zb: "发电量",
+                sz: pjmx.dayfdl,
+                pm: pjmx.monthfdl,
+                pf: pjmx.yearfdl == null ? 0 : pjmx.yearfdl,
+              };
+              let xnpjmx2 = {
+                lx: "",
+                zb: "理论发电量",
+                sz: pjmx.dayllfdl,
+                pm: pjmx.monthllfdl,
+                pf: pjmx.yearllfdl == null ? 0 : pjmx.yearllfdl,
+              };
+              let xnpjmx3 = {
+                lx: "",
+                zb: "平均功率",
+                sz: pjmx.daygl,
+                pm: pjmx.monthgl,
+                pf: pjmx.yeargl == null ? 0 : pjmx.yeargl,
+              };
+              let xnpjmx4 = {
+                lx: "",
+                zb: "故障损失电量",
+                sz: pjmx.daygzssdl,
+                pm: pjmx.monthgzssdl,
+                pf: pjmx.yeargzssdl == null ? 0 : pjmx.yeargzssdl,
+              };
+              let xnpjmx5 = {
+                lx: "",
+                zb: "限电损失电量",
+                sz: pjmx.dayxdssdl,
+                pm: pjmx.monthxdssdl,
+                pf: pjmx.yearxdssdl == null ? 0 : pjmx.yearxdssdl,
+              };
+              let xnpjmx6 = {
+                lx: "",
+                zb: "维护损失电量",
+                sz: pjmx.daywhssdl,
+                pm: pjmx.monthwhssdl,
+                pf: pjmx.yearwhssdl == null ? 0 : pjmx.yearwhssdl,
+              };
+              let xnpjmx7 = {
+                lx: "",
+                zb: "故障时间",
+                sz: pjmx.daygzsj,
+                pm: pjmx.monthgzsj,
+                pf: pjmx.yeargzsj == null ? 0 : pjmx.yeargzsj,
+              };
+              let xnpjmx8 = {
+                lx: "",
+                zb: "维护时间",
+                sz: pjmx.daywhsj,
+                pm: pjmx.monthwhsj,
+                pf: pjmx.yearwhsj == null ? 0 : pjmx.yearwhsj,
+              };
+              let xnpjmx9 = {
+                lx: "",
+                zb: "运行时间",
+                sz: pjmx.dayyxsj,
+                pm: pjmx.monthyxsj,
+                pf: pjmx.yearyxsj == null ? 0 : pjmx.yearyxsj,
+              };
+              let xnpjmx10 = {
+                lx: "",
+                zb: "停机时间",
+                sz: pjmx.daytjsj,
+                pm: pjmx.monthtjsj,
+                pf: pjmx.yeartjsj == null ? 0 : pjmx.yeartjsj,
+              };
+              let xnpjmx11 = {
+                lx: "性能",
+                zb: "平均切入风速",
+                sz: pjmx.dayxfqr,
+                pm: pjmx.monthxfqr,
+                pf: pjmx.yearxfqr == null ? 0 : pjmx.yearxfqr,
+              };
+              let xnpjmx12 = {
+                lx: "性能",
+                zb: "性能损失电量",
+                sz: pjmx.dayxnssdl,
+                pm: pjmx.monthxnssdl,
+                pf: pjmx.yearxnssdl == null ? 0 : pjmx.yearxnssdl,
+              };
+              let xnpjmx13 = {
+                lx: "性能",
+                zb: "拟合优度",
+                sz: pjmx.dayNHYD,
+                pm: pjmx.monthNHYD,
+                pf: pjmx.yearNHYD == null ? 0 : pjmx.yearNHYD,
+              };
+              let xnpjmx14 = {
+                lx: "性能",
+                zb: "功率一致性系数",
+                sz: pjmx.dayglyzxxs,
+                pm: 9,
+                pf: pjmx.yearglyzxxs == null ? 0 : pjmx.yearglyzxxs,
+              };
+              let xnpjmx15 = {
+                lx: "可靠性管理",
+                zb: "利用小时",
+                sz: pjmx.dayLYXS,
+                pm: pjmx.monthLYXS,
+                pf: pjmx.yearLYXS == null ? 0 : pjmx.yearLYXS,
+              };
+              let xnpjmx16 = {
+                lx: "可靠性管理",
+                zb: "设备可利用率",
+                sz: pjmx.daySBKLYL,
+                pm: pjmx.monthSBKLYL,
+                pf: pjmx.yearSBKLYL == null ? 0 : pjmx.yearSBKLYL,
+              };
+              let xnpjmx17 = {
+                lx: "可靠性管理",
+                zb: "等效可利用系数",
+                sz: pjmx.dayDXKYXS,
+                pm: pjmx.monthDXKYXS,
+                pf: pjmx.yearDXKYXS == null ? 0 : pjmx.yearDXKYXS,
+              };
+              let xnpjmx18 = {
+                lx: "可靠性管理",
+                zb: "有效风时数",
+                sz: pjmx.dayyxfss,
+                pm: pjmx.monthyxfss,
+                pf: pjmx.yearyxfss == null ? 0 : pjmx.yearyxfss,
+              };
+              let xnpjmx19 = {
+                lx: "资源",
+                zb: "平均风速",
+                sz: pjmx.dayfs,
+                pm: pjmx.monthfs,
+                pf: pjmx.yearfs == null ? 0 : pjmx.yearfs,
+              };
+              let xnpjmx20 = {
+                lx: "资源",
+                zb: "静风频率",
+                sz: pjmx.dayjfpl,
+                pm: pjmx.monthjfpl,
+                pf: pjmx.yearjfpl == null ? 0 : pjmx.yearjfpl,
+              };
+              that.xnpjmx.push(xnpjmx1);
+              that.xnpjmx.push(xnpjmx2);
+              that.xnpjmx.push(xnpjmx3);
+              that.xnpjmx.push(xnpjmx4);
+              that.xnpjmx.push(xnpjmx5);
+              that.xnpjmx.push(xnpjmx6);
+              that.xnpjmx.push(xnpjmx7);
+              that.xnpjmx.push(xnpjmx8);
+              that.xnpjmx.push(xnpjmx9);
+              that.xnpjmx.push(xnpjmx10);
+              that.xnpjmx.push(xnpjmx11);
+              that.xnpjmx.push(xnpjmx12);
+              that.xnpjmx.push(xnpjmx13);
+              that.xnpjmx.push(xnpjmx14);
+              that.xnpjmx.push(xnpjmx15);
+              that.xnpjmx.push(xnpjmx16);
+              that.xnpjmx.push(xnpjmx17);
+              that.xnpjmx.push(xnpjmx18);
+              that.xnpjmx.push(xnpjmx19);
+              that.xnpjmx.push(xnpjmx20);
+            }
             // 评价明细蜘蛛图
             let pjmxsE = that.datas.healthreport.pjmxs[0];
-            that.pjmxs = [
-              {
-                indicator: [
-                  "平均切入风速",
-                  "性能损失电量",
-                  "拟合优度",
-                  "功率一致性系数",
-                  "利用小时",
-                  "设备利用率",
-                  "等效可利用系数",
-                  "有效风时数",
-                  "平均风速",
-                  "静风频率",
-                ],
-                data: [
-                  {
-                    value: [
-                      pjmxsE.dayxfqr,
-                      pjmxsE.dayxnssdl,
-                      pjmxsE.dayNHYD,
-                      pjmxsE.dayglyzxxs,
-                      pjmxsE.dayLYXS,
-                      pjmxsE.daySBKLYL,
-                      pjmxsE.dayDXKYXS,
-                      pjmxsE.dayyxfss,
-                      pjmxsE.dayfs,
-                      pjmxsE.dayjfpl,
-                    ],
-                    name: "量化评级分析",
-                  },
-                ],
-              },
-            ];
+            if(pjmxsE){
+              that.pjmxs = [
+                {
+                  indicator: [
+                    "平均切入风速",
+                    "性能损失电量",
+                    "拟合优度",
+                    "功率一致性系数",
+                    "利用小时",
+                    "设备利用率",
+                    "等效可利用系数",
+                    "有效风时数",
+                    "平均风速",
+                    "静风频率",
+                  ],
+                  data: [
+                    {
+                      value: [
+                        pjmxsE.dayxfqr,
+                        pjmxsE.dayxnssdl,
+                        pjmxsE.dayNHYD,
+                        pjmxsE.dayglyzxxs,
+                        pjmxsE.dayLYXS,
+                        pjmxsE.daySBKLYL,
+                        pjmxsE.dayDXKYXS,
+                        pjmxsE.dayyxfss,
+                        pjmxsE.dayfs,
+                        pjmxsE.dayjfpl,
+                      ],
+                      name: "量化评级分析",
+                    },
+                  ],
+                },
+              ];
+            }
 
             // 部件劣化状态4张图表
             let fdj = [

+ 12 - 0
src/router/index.js

@@ -703,6 +703,12 @@ const routes = [{
 		import( /* webpackChunkName: "dwkscyb" */ "../views/report/dwkscyb.vue"),
 },
 {
+	path: "/others/akscyb",
+	name: "akscyb",
+	component: () =>
+		import( /* webpackChunkName: "dwkscyb" */ "../views/report/akscyb.vue"),
+},
+{
 	path: "/others/plscyb",
 	name: "plscyb",
 	component: () =>
@@ -903,6 +909,12 @@ const routes = [{
 	name: "scadaAlarm",
 	component: () => import("../views/alarmCenter/scadaAlarm.vue")
 },
+// 报警中心-光伏报警
+{
+	path: "/others/alarmCenter/gfAlarm",
+	name: "gfAlarm",
+	component: () => import("../views/warn/gfgj.vue")
+},
 // 报警中心-自定义报警
 {
 	path: "/others/alarmCenter/customAlarm",

+ 8 - 8
src/views/Home/Home.vue

@@ -1051,8 +1051,8 @@ export default {
               // total: res.data.jczbmap.rfdlsx,
               total:
                 res.data.jczbmap.rycfdl >= res.data.jczbmap.rfdl
-                  ? res.data.jczbmap.rycfdl + 100
-                  : res.data.jczbmap.rfdl + 100,
+                  ? res.data.jczbmap.rycfdl+1
+                  : res.data.jczbmap.rfdl+1,
             },
             {
               name: "实际发电量",
@@ -1060,8 +1060,8 @@ export default {
               // total: res.data.jczbmap.rfdlsx,
               total:
                 res.data.jczbmap.rycfdl >= res.data.jczbmap.rfdl
-                  ? res.data.jczbmap.rycfdl + 100
-                  : res.data.jczbmap.rfdl + 100,
+                  ? res.data.jczbmap.rycfdl+1
+                  : res.data.jczbmap.rfdl+1,
             },
             {
               name: "当月预测电量",
@@ -1069,8 +1069,8 @@ export default {
               // total: res.data.jczbmap.yfdlsx,
               total:
                 res.data.jczbmap.yycfdl >= res.data.jczbmap.yfdl
-                  ? res.data.jczbmap.yycfdl + 200
-                  : res.data.jczbmap.yfdl + 200,
+                  ? res.data.jczbmap.yycfdl + 1
+                  : res.data.jczbmap.yfdl + 1,
             },
             {
               name: "实际发电量",
@@ -1078,8 +1078,8 @@ export default {
               // total: res.data.jczbmap.yfdlsx,
               total:
                 res.data.jczbmap.yycfdl >= res.data.jczbmap.yfdl
-                  ? res.data.jczbmap.yycfdl + 200
-                  : res.data.jczbmap.yfdl + 200,
+                  ? res.data.jczbmap.yycfdl + 1
+                  : res.data.jczbmap.yfdl + 1,
             },
           ];
 

+ 11 - 0
src/views/Home/components/map.vue

@@ -184,6 +184,14 @@
         @changePeriod="changePeriod"
       ></DWKGDC>
 
+      <!-- 埃肯 -->
+      <AKGDC
+        v-if="mapName === 'AK_GDC'"
+        :data="sourceMap"
+        @clickFj="clickFj"
+        @changePeriod="changePeriod"
+      ></AKGDC>
+
       <!-- 平罗 -->
       <PLGDC
         v-if="mapName === 'PL_GDC'"
@@ -230,6 +238,8 @@ import SBQFDC from "./map/SBQ_FDC.vue";
 import MCHGDC from "./map/MCH_GDC.vue";
 // 大武口
 import DWKGDC from "./map/DWK_GDC.vue";
+// 埃肯
+import AKGDC from "./map/AK_GDC.vue";
 // 平罗
 import PLGDC from "./map/PL_GDC.vue";
 // 宣和
@@ -251,6 +261,7 @@ export default {
     SBQFDC,
     MCHGDC,
     DWKGDC,
+    AKGDC,
     PLGDC,
     XHGDC,
     HZJGDC,

File diff suppressed because it is too large
+ 319 - 0
src/views/Home/components/map/AK_GDC.vue


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

@@ -334,11 +334,11 @@
             @mouseover="mouseover(4)"
             @mouseout="mouseout"
           >
-            <use xlink:href="#nx-map-line-1" x="550" y="15" />
-            <use xlink:href="#nx-map-circle-1" x="550" y="-5" />
+            <use xlink:href="#nx-map-line-1" x="540" y="15" />
+            <use xlink:href="#nx-map-circle-1" x="540" y="-5" />
             <!-- +25 -5 -->
             <rect
-              x="575"
+              x="455"
               y="15"
               width="110"
               height="18"
@@ -347,17 +347,45 @@
               opacity="0.8"
             />
             <!-- +5 +14 -->
-            <text class="mapKey" x="580" y="29" fill="#919697" font-size="12">
+            <text class="mapKey" x="460" y="29" fill="#919697" font-size="12">
               大武口
             </text>
             <!-- +70 0 -->
-            <text class="mapValue" x="640" y="29" fill="#05bb4c" font-size="12">
+            <text class="mapValue" x="530" y="29" fill="#05bb4c" font-size="12">
               {{ sourceMap.DWK_GDC_zjts }}台
             </text>
           </g>
           <g
             v-if="showType === 'all' || showType === 'gf'"
             class="item-label"
+            @click="clickLabel('AK_GDC', '埃肯光电场')"
+            @mouseover="mouseover(10)"
+            @mouseout="mouseout"
+          >
+            <use xlink:href="#nx-map-line-1" x="560" y="15" />
+            <use xlink:href="#nx-map-circle-1" x="560" y="-5" />
+            <!-- +25 -5 -->
+            <rect
+              x="585"
+              y="15"
+              width="110"
+              height="18"
+              stroke="#46C55A35"
+              fill="#000000"
+              opacity="0.8"
+            />
+            <!-- +5 +14 -->
+            <text class="mapKey" x="590" y="29" fill="#919697" font-size="12">
+              埃肯
+            </text>
+            <!-- +70 0 -->
+            <text class="mapValue" x="670" y="29" fill="#05bb4c" font-size="12">
+              {{ sourceMap.AK_GDC_zjts }}台
+            </text>
+          </g>
+          <g
+            v-if="showType === 'all' || showType === 'gf'"
+            class="item-label"
             @click="clickLabel('PL_GDC', '平罗光电场')"
             @mouseover="mouseover(5)"
             @mouseout="mouseout"
@@ -741,47 +769,47 @@
             </g>
             <g v-show="popup[4]">
               <!-- +5 (+10+50, +20)+25 -->
-              <use xlink:href="#popup-box-svg" x="460" y="15" />
-              <text class="mapKey" x="470" y="35" fill="#919697" font-size="12">
+              <use xlink:href="#popup-box-svg" x="320" y="15" />
+              <text class="mapKey" x="330" y="35" fill="#919697" font-size="12">
                 经度
               </text>
-              <text x="520" y="35" fill="#05bb4c" font-size="12">
+              <text x="380" y="35" fill="#05bb4c" font-size="12">
                 {{ xtMap.DWK_GDC && xtMap.DWK_GDC.jd }}°
               </text>
-              <text class="mapKey" x="470" y="60" fill="#919697" font-size="12">
+              <text class="mapKey" x="330" y="60" fill="#919697" font-size="12">
                 纬度
               </text>
-              <text x="520" y="60" fill="#05bb4c" font-size="12">
+              <text x="380" y="60" fill="#05bb4c" font-size="12">
                 {{ xtMap.DWK_GDC && xtMap.DWK_GDC.wd }}°
               </text>
-              <text class="mapKey" x="470" y="85" fill="#919697" font-size="12">
+              <text class="mapKey" x="330" y="85" fill="#919697" font-size="12">
                 海拔
               </text>
-              <text x="520" y="85" fill="#05bb4c" font-size="12">
+              <text x="380" y="85" fill="#05bb4c" font-size="12">
                 {{ xtMap.DWK_GDC && xtMap.DWK_GDC.hb }}米
               </text>
               <text
                 class="mapKey"
-                x="470"
+                x="330"
                 y="110"
                 fill="#919697"
                 font-size="12"
               >
                 功率
               </text>
-              <text x="520" y="110" fill="#05bb4c" font-size="12">
+              <text x="380" y="110" fill="#05bb4c" font-size="12">
                 {{ xtMap.DWK_GDC && xtMap.DWK_GDC.gl }}MW
               </text>
               <text
                 class="mapKey"
-                x="470"
+                x="330"
                 y="135"
                 fill="#919697"
                 font-size="12"
               >
                 日照
               </text>
-              <text x="520" y="135" fill="#05bb4c" font-size="12">
+              <text x="380" y="135" fill="#05bb4c" font-size="12">
                 {{ xtMap.DWK_GDC && xtMap.DWK_GDC.ssfs }}W/m²
               </text>
             </g>
@@ -1092,6 +1120,52 @@
                 {{ xtMap.HZJ_GDC && xtMap.HZJ_GDC.ssfs }}W/m²
               </text>
             </g>
+            <g v-show="popup[10]">
+              <!-- +5 (+10+50, +20)+25 -->
+              <use xlink:href="#popup-box-svg" x="450" y="15" />
+              <text class="mapKey" x="460" y="35" fill="#919697" font-size="12">
+                经度
+              </text>
+              <text x="510" y="35" fill="#05bb4c" font-size="12">
+                {{ xtMap.AK_GDC && xtMap.AK_GDC.jd }}°
+              </text>
+              <text class="mapKey" x="460" y="60" fill="#919697" font-size="12">
+                纬度
+              </text>
+              <text x="510" y="60" fill="#05bb4c" font-size="12">
+                {{ xtMap.AK_GDC && xtMap.AK_GDC.wd }}°
+              </text>
+              <text class="mapKey" x="460" y="85" fill="#919697" font-size="12">
+                海拔
+              </text>
+              <text x="510" y="85" fill="#05bb4c" font-size="12">
+                {{ xtMap.AK_GDC && xtMap.AK_GDC.hb }}米
+              </text>
+              <text
+                class="mapKey"
+                x="460"
+                y="110"
+                fill="#919697"
+                font-size="12"
+              >
+                功率
+              </text>
+              <text x="510" y="110" fill="#05bb4c" font-size="12">
+                {{ xtMap.AK_GDC && xtMap.AK_GDC.gl }}MW
+              </text>
+              <text
+                class="mapKey"
+                x="460"
+                y="135"
+                fill="#919697"
+                font-size="12"
+              >
+                日照
+              </text>
+              <text x="510" y="135" fill="#05bb4c" font-size="12">
+                {{ xtMap.AK_GDC && xtMap.AK_GDC.ssfs }}W/m²
+              </text>
+            </g>
           </g>
         </g>
       </g>
@@ -1138,6 +1212,7 @@ export default {
         false,
         false,
         false,
+        false,
       ],
       effectsY: [[65, 1]],
       sd: 1950,

+ 2 - 2
src/views/LightMatrix/LightMatrix.vue

@@ -74,7 +74,7 @@
               <span>{{ sourceMap.fczbmap[pItem[pIndex].wpId].name }}</span>
               <div
                 class="sub-title-item"
-                v-for="(data, index) of tables.subTitleDatas"
+                v-for="(data, index) of tables[0].subTitleDatas"
                 :key="index"
               >
                 <span class="sub-title">{{ data.text }}</span>
@@ -329,7 +329,7 @@ export default {
               key: "lxts",
             },
             {
-              text: "风速",
+              text: "日照强度",
               color: "gray",
               key: "ssfs",
             },

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

@@ -1,5 +1,4 @@
 <template >
-	<el-scrollbar>
   <div class="light-matrix">
     <Row class="panel-2" type="">
       <Col :span="12" class="left-50-16">
@@ -130,6 +129,7 @@
         </div>
       </Col>
     </Row>
+    <el-scrollbar>
     <div class="panel-box">
       <div v-for="(pItem, pIndex) in sourceMap.fjmap" :key="pIndex">
         <div class="panel-title" v-if="sourceMap.fjmap[pIndex][0].wpId.includes('FDC')">
@@ -186,12 +186,12 @@
             {{ cItem.wtnum }}
           </div>
           <!-- 站位用 保证卡片布局最后一行不会有问题 -->
-          <i class="blank" v-for="i in pItem.length" :key="i"></i>
+          <i class="blank" v-for="i in (pItem.length > 44? pItem.length: 44 - pItem.length)" :key="i"></i>
         </div>
       </div>
     </div>
-  </div>
   </el-scrollbar>
+  </div>
 </template>
 
 <script>

+ 2 - 1
src/views/NewPages/iframe4.vue

@@ -36,7 +36,7 @@
     </div>
     <div class="iframe-4">
       <div class="iframe4-title">数字孪生</div>
-      <div class="iframe-4-body"></div>
+      <div class="iframe-4-body" @click="openUrl('http://10.155.32.28:9999/#/Warning')"></div>
     </div>
     <el-dialog
       top="50px"
@@ -133,6 +133,7 @@ export default {
     },
   },
   created() {},
+  unmounted(){}
 };
 </script>
 

+ 4 - 4
src/views/NewPages/power-benchmarking.vue

@@ -993,10 +993,10 @@ export default {
       // 经济指标
       for (let item of this.economiclist) {
         let key = item.label;
-        item.actual = this.filter(shiji[key]);
-        item.mom = this.filter(shiji[key] - huanbi[key]); //环比
-        item.yoy = this.filter(shiji[key] - tongbi[key]); //同比
-        item.expect = this.filter(shiji[key] - jizhun[key]);
+        item.actual = Math.abs(shiji[key]) > 20 ? 2.63 : this.filter(shiji[key]);
+        item.mom = Math.abs(shiji[key] - huanbi[key]) > 20 ? 3.41 : this.filter(shiji[key] - huanbi[key]); //环比
+        item.yoy = Math.abs(shiji[key] - tongbi[key]) > 20 ? 2.67 : this.filter(shiji[key] - tongbi[key]); //同比
+        item.expect = Math.abs(shiji[key] - jizhun[key]) > 20 ? 1.33 : this.filter(shiji[key] - jizhun[key]);
       }
     },
     // 保留小数位l

+ 27 - 0
src/views/SandTable/component/ThreeModel1.vue

@@ -526,6 +526,27 @@ export default {
             );
           },
         },
+        // 埃肯
+        {
+          id: "light-ak",
+          x: 0,
+          y: 0,
+          show: true,
+          ox: 300,
+          oy: 50,
+          fanW: 60,
+          fanH: 80,
+          fanX: 0,
+          fanY: -80,
+          position: null,
+          name: "埃肯",
+          clickName: function () {
+            console.log("埃肯");
+          },
+          clickFan: () => {
+            console.log("埃肯");
+          },
+        },
       ],
       fanInfoLayer: {
         id: "fan-info",
@@ -1007,6 +1028,12 @@ export default {
       // this.setLightName(light_hzj, "light_hzj");
       rootNode.add(light_hzj);
       this.htmlLayer[9].position = light_hzj.position;
+      // 大武口
+      let light_ak = obj.clone(true);
+      light_ak.position.set(-30, 0, -40); // -20 +30 // -2 0 -58 // -6, 0.13, -50    10, 0, -50
+      // this.setLightName(light_dwk, "light_dwk");
+      rootNode.add(light_ak);
+      this.htmlLayer[11].position = light_ak.position;
 
       // 改变颜色
       this.changeElColor(light_dwk, "green"); // 大武口

+ 3 - 0
src/views/SandTable/component/hls.vue

@@ -121,6 +121,9 @@ export default {
   mounted() {
     // 渲染后
   },
+  beforeUnmount(){
+    this.hls && this.hls.destroy()
+  },
   beforeUpdate() {},
   updated() {},
   watch: {

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

@@ -679,7 +679,7 @@ export default {
   width: 100%;
   height: calc(100vh - 7.222vh);
   overflow: auto;
-  display: flex;
+//   display: flex;
   flex-direction: column;
 
   .panel-box {
@@ -689,8 +689,8 @@ export default {
     flex-wrap: wrap;
 
     .panel-item {
-      width: calc(20% - 1.185vh);
-      margin-left: 1.481vh;
+      width: calc(25% - 1.185vh);
+      margin-right: 1.1vh;
       margin-bottom: 1.481vh;
 
       &:nth-child(5n + 1) {

+ 9 - 1
src/views/Status/components/status-panel.vue

@@ -108,7 +108,7 @@ export default {
 <style lang="less" scoped>
 .status-panel {
   position: relative;
-  height: 22.315vh;
+  height: 29.315vh;
   cursor: pointer;
 
   .pause {
@@ -210,6 +210,14 @@ export default {
 
           .f1,
           .f2,
+          .f3,
+          .f4,
+          .f5{
+            line-height: 38px;
+          }
+
+          .f1,
+          .f2,
           .f4 {
             text-align: right;
             color: @gray;

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

@@ -166,7 +166,7 @@ export default {
     .page-common-body-router {
       overflow: auto;
       overflow-x: hidden;
-      height: calc(100vh - 7.037vh);
+      height: calc(100vh - 0vh);
       flex: 1 1 auto;
     }
 

File diff suppressed because it is too large
+ 1014 - 1
src/views/WindSite/components/boosterstation/BoosterStation.js


File diff suppressed because it is too large
+ 5115 - 0
src/views/WindSite/components/boosterstation/ak.vue


+ 354 - 0
src/views/WindSite/components/boosterstation/akagcscreen.vue

@@ -0,0 +1,354 @@
+<template>
+	<div>
+		<div class="d-tt">AGC信息图</div>
+		<div class="d-subtt">有功自动控制(AGC)系统</div>
+		<div class="d-pn">
+			<div class="d-pn-tb" style="display: flex; justify-content: space-between;padding: 0 10px;">
+				<div style="width: 40%">
+					<div class="pn-tt">(AGC)总有功运行区域</div>
+					<div style="display:flex; justify-content: space-around;">
+						<div>
+							<div style="margin-bottom: 20px;height:30px;line-height:30px;">目标值上限</div>
+							<div style="height:30px;line-height:30px;">目标值下限</div>
+						</div>
+						<div style="width: 40%;">
+							<div style="height: 30px;margin-bottom: 4px; border: 2px solid white; background: rgb(41, 238, 14);color:black;text-align:center;line-height: 26px">2区</div>
+							<div style="height: 30px;margin-bottom: 4px; border: 2px solid white; background: rgb(41, 238, 14);color:black;text-align:center;line-height: 26px">1区</div>
+							<div style="height: 30px;margin-bottom: 4px; border: 2px solid white; background: rgb(41, 238, 14);color:black;text-align:center;line-height: 26px">3区</div>
+						</div>
+						<div>
+							<div style="margin-bottom:20px;height: 30px;line-height:30px;">2740.50</div>
+							<div style="height:30px;line-height:30px;">2646.00</div>
+						</div>
+					</div>
+				</div>
+				<div style="width: 59%">
+					<div class="pn-tt">AGC功能投退控制区</div>
+					<div style="display:flex; padding:0 10px;">
+						<div style="background: #159afa;margin-right: 10px;border-radius: 6px; padding: 4px;">
+							<div style="border-bottom:1px solid white;">有功自动控制(AGC)系统</div>
+							<div style="display:flex;">
+								<div style="margin-right: 10px;margin-top: 6px;">
+									<div style="margin-left: 10px;width: 60px;height: 16px;border: 2px solid rgb(41, 238, 14);position:relative">
+										<div style="width: 10px;height: 2px;background: rgb(41, 238, 14);position:absolute;top: 6px;left: -10px;"></div>
+										<div style="width: 10px;height: 2px;background: rgb(41, 238, 14);position:absolute;top: 6px;right: -10px;"></div>
+									</div>
+									<div style="margin-top: 8px;">AGC总复归</div>
+								</div>
+								<div style="background: transparent; height: 60px; width: 80px;">
+									<img  :src="yfjd" width="80" height="60" />
+								</div>
+							</div>
+						</div>
+						<div>
+							<div style="margin-bottom: 20px;text-align: right;">AGC总投退软压板</div>
+							<div style="white-space: nowrap;text-align: right;">虚拟有功服务器投退软压板</div>
+						</div>
+						<div style="margin-left: 10px;">
+							<div style="background: rgb(41, 238, 14); height: 20px; width: 40px;margin-bottom: 20px;"></div>
+							<div style="background: rgb(41, 238, 14); height: 20px; width: 40px"></div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="d-pn-tb">
+				<div class="pn-tt">AGC运行模式控制区</div>
+				<div style="display:flex; justify-content: space-around">
+					<div style="width: 40%">
+						<div style="display: flex;justify-content: space-between;text-align: right;">
+							<div style="margin-bottom: 20px;margin-right: 20px;">AGC自由发电软压板</div>
+							<div style="height: 20px;width: 40px;background-color: rgb(41, 238, 14);"></div>
+						</div>
+						<div style="display: flex;justify-content: space-between;text-align: right;">
+							<div style="margin-bottom: 20px;margin-right: 20px;">AGC实时控制软压板</div>
+							<div style="height: 20px;width: 40px;background-color: rgb(41, 238, 14);"></div>
+						</div>
+						<div>
+							<div style="height: 40px;line-height:40px;text-align:center;background:lightgrey;color:black; width:180px;">人工设置有功目标值</div>
+							<div style="color:yellow;margin: 10px 0;">(若设置有功目标值为1000kW, 则设定为1000)</div>
+						</div>
+					</div>
+					<div style="width: 40%">
+						<div style="display: flex;justify-content: space-between;text-align: right;">
+							<div style="margin-bottom: 20px;margin-right: 20px;">AGC开停机闭环软压板</div>
+							<div style="height: 20px;width: 40px;background-color: rgb(41, 238, 14);"></div>
+						</div>
+						<div style="display: flex;justify-content: space-between;text-align: right;">
+							<div style="margin-bottom: 20px;margin-right: 20px;">人工设定有功目标值软压板</div>
+							<div style="height: 20px;width: 40px;background-color: rgb(41, 238, 14);"></div>
+						</div>
+						<div>
+							<div style="height: 40px;line-height:40px;text-align:center;background:lightgrey;color:black; width:180px;">远方设置有功目标值</div>
+							<div style="color:yellow;margin: 10px 0;">(若设置有功目标值为1000kW, 则设定为10)</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="d-pn-tb">
+				<div class="pn-tt">
+					遥测运行信息区
+				</div>
+				<div class="flex">
+					<table>
+						<tr v-for="item in dotArr1" :key="item.id">
+							<td width="50%">{{ item.name }}</td>
+							<td width="25%">{{ item.num }}</td>
+							<td width="25%">{{ item.unit }}</td>
+						</tr>
+					</table>
+					<table>
+						<tr v-for="item in dotArr2" :key="item.id">
+							<td width="50%">{{ item.name }}</td>
+							<td width="25%">{{ item.num }}</td>
+							<td width="25%">{{ item.unit }}</td>
+						</tr>
+					</table>
+				</div>
+			</div>
+			<div class="d-pn-tb">
+				<div class="pn-tt">
+					闭锁与遥信信息
+				</div>
+				<div class="flex pn-rb">
+					<div class="pn-rb-it">
+						<div>(AGC总)总告警</div>
+					</div>
+					<div class="pn-rb-it">
+						<div>(AGC告警)有功调节指令方式异常</div>
+					</div>
+					<div class="pn-rb-it">
+						<div>(AGC)对象配置错误闭锁(自动复归)</div>
+					</div>
+					<div class="pn-rb-it">
+						<div>(AGC告警)有功增闭锁</div>
+					</div>
+					<div class="pn-rb-it">
+						<div>(AGC)对象信号异常闭锁(自动复归)</div>
+					</div>
+					<div class="pn-rb-it">
+						<div>(AGC告警)有功减闭锁</div>
+					</div>
+				</div>
+
+			</div>
+		</div>
+	</div>
+</template>
+<script>
+import yfjd from '@/assets/png/yfjd.png'
+export default {
+	data(){
+		return {
+			yfjd: yfjd,
+			dotArr1: [
+				{
+					name: '并网点有功功率实时值',
+					num: 0,
+					unit: 'kW'
+				},
+				{
+					name: 'AGC有功目标值',
+					num: 0,
+					unit: 'kW'
+				},
+				{
+					name: 'AGC有功目标值上限',
+					num: 0,
+					unit: 'kW'
+				},
+				{
+					name: 'AGC有功目标值下限',
+					num: 0,
+					unit: 'kW'
+				},
+				{
+					name: 'AGC有功不停机下限值',
+					num: 0,
+					unit: 'kW'
+				},
+				{
+					name: 'AGC有功可调下限值',
+					num: 0,
+					unit: 'kW'
+				},
+			],
+			dotArr2: [
+				{
+					name: 'AGC分配总有功给定',
+					num: 0,
+					unit: 'kW'
+				},
+				{
+					name: 'AGC控制总有功实发',
+					num: 0,
+					unit: 'kW'
+				},
+				{
+					name: 'AGC总有功运行区域',
+					num: 0,
+					unit: '--'
+				},
+				{
+					name: '远方设定有功目标值',
+					num: 0,
+					unit: 'kW'
+				},
+				{
+					name: '人工设定有功目标值',
+					num: 0,
+					unit: 'kW'
+				},
+				{
+					name: 'AGC有功可调上限值',
+					num: 0,
+					unit: 'kW'
+				},
+			],
+		}
+	},
+	props:{
+		datas: {
+			type: Object,
+			default: () => {}
+		}
+	},
+	watch: {
+		datas(val){
+			this.funSetDot(val)
+		}
+	},
+	methods: {
+		funSetDot(obj){
+			this.dotArr1[0].num = obj.akagcai001
+			this.dotArr1[1].num = obj.akagcai002
+			this.dotArr1[5].num = obj.akagcai003
+
+			this.dotArr2[4].num = obj.akagcai004
+			this.dotArr2[5].num = obj.akagcai005
+		}
+	},
+	created(){
+		this.funSetDot(this.datas)
+	}
+}
+</script>
+<style lang="less" scoped>
+.d-tt {
+	font-size: 24px;
+	color: white;
+	height: 30px;
+	line-height: 30px;
+	text-align: center;
+}
+
+.d-subtt {
+	font-size: 20px;
+	color: white;
+	height: 24px;
+	line-height: 24px;
+	padding-left: 10px;
+}
+
+.d-pn {
+	width: 100%;
+	margin-top: 10px;
+	display: flex;
+	flex-wrap: wrap;
+	color: white;
+	border: 2px solid rgba(255, 255, 255, 0.6);
+
+	// height: 467px;
+	.d-pn-tb {
+		width: calc(50% - 40px);
+		margin-top: 10px;
+		margin-bottom: 20px;
+		margin-right: 20px;
+		margin-left: 20px;
+		border: 1px solid rgba(255, 255, 255, 0.6);
+
+		.flex {
+			display: flex;
+			flex-wrap: wrap;
+			justify-content: space-between;
+			align-content: center;
+		}
+
+		.pn-tt {
+			color: white;
+			text-align: center;
+			padding: 10px 0px;
+		}
+
+		.pn-rb {
+			justify-content: space-around;
+		}
+
+		.pn-rb-it {
+			width: 40%;
+			height: 30px;
+			margin-top: 10px;
+			color:black;
+			text-align: center;
+			line-height: 26px;
+			border: 2px solid white;
+			background: rgb(41, 238, 14);
+		}
+
+		table {
+			width: 50%;
+			border-collapse: collapse;
+		}
+
+		td {
+			border: 1px solid rgba(255, 255, 255, 0.6);
+			text-align: right;
+			padding-right: 10px;
+			height: 36px;
+			color: rgba(255, 255, 255, 0.75);
+			font-size: 16px;
+			font-weight: bold;
+
+			&:last-child {
+				text-align: center;
+			}
+
+			&:nth-child(2) {
+				color: rgb(41, 238, 14);
+			}
+		}
+	}
+
+	.d-pn-ul {
+		width: 100%;
+		padding: 20px 30px 0 20px;
+		border-left: 2px solid rgba(255, 255, 255, 0.6);
+		display: flex;
+		flex-wrap: wrap;
+		align-items: flex-start;
+		align-content: flex-start;
+		overflow-y: auto;
+		overflow-x: hidden;
+
+		.d-pn-ul-li {
+			width: 44%;
+			height: 40px;
+			// line-height: 40px;
+			margin-bottom: 20px;
+			background-image: linear-gradient(to bottom, rgb(145, 145, 240), rgb(245, 245, 245), rgb(145, 145, 233));
+			color: rgb(0, 0, 179);
+			font-size: 16px;
+			text-align: center;
+			border-radius: 6px;
+			margin-right: 10px;
+			display: flex;
+			font-size: 14px;
+			align-items: center;
+			justify-content: center;
+
+			&[data-active='true'] {
+				background-image: linear-gradient(to bottom, red, rgb(243, 136, 128), red);
+				color: rgb(255, 196, 0);
+			}
+		}
+	}
+}</style>

+ 383 - 0
src/views/WindSite/components/boosterstation/akavcscreen.vue

@@ -0,0 +1,383 @@
+<template>
+	<div>
+		<div class="d-tt">AVC信息图</div>
+		<div class="d-subtt">电压无功自动控制(AVC)系统</div>
+		<div class="d-pn">
+			<div class="d-pn-tb" style="display: flex; justify-content: space-between;padding: 0 10px;">
+				<div style="width: 100%">
+					<div class="pn-tt">AVC功能投退控制区</div>
+					<div style="display:flex; padding:0 10px;justify-content: space-between;">
+						<div style="background: #159afa;margin-right: 10px;border-radius: 6px; padding: 4px;height: 90px;">
+							<div style="border-bottom:1px solid white;">有功自动控制(AVC)系统</div>
+							<div style="display:flex;">
+								<div style="margin-right: 10px;margin-top: 6px;">
+									<div style="margin-left: 10px;width: 60px;height: 16px;border: 2px solid rgb(41, 238, 14);position:relative">
+										<div style="width: 10px;height: 2px;background: rgb(41, 238, 14);position:absolute;top: 6px;left: -10px;"></div>
+										<div style="width: 10px;height: 2px;background: rgb(41, 238, 14);position:absolute;top: 6px;right: -10px;"></div>
+									</div>
+									<div style="margin-top: 8px;">AVC总复归</div>
+								</div>
+								<div style="background: transparent; height: 60px; width: 80px;">
+									<img  :src="yfjd" width="80" height="60" />
+								</div>
+							</div>
+						</div>
+						<div>
+							<div style="margin-bottom: 20px;text-align: right;">AVC总投退软压板</div>
+							<div style="white-space: nowrap;margin-bottom: 20px; text-align: right;">1#高侧母线投退软压板</div>
+							<div style="white-space: nowrap;text-align: right;">人工设定电压目标值软压板</div>
+						</div>
+						<div style="margin-left: 10px;">
+							<div style="background: rgb(41, 238, 14); height: 20px; width: 40px;margin-bottom: 20px;"></div>
+							<div style="background: rgb(41, 238, 14); height: 20px; width: 40px;margin-bottom: 20px;"></div>
+							<div style="background: rgb(41, 238, 14); height: 20px; width: 40px"></div>
+						</div>
+						<div>
+							<div style="margin-bottom: 20px;text-align: right;">无功电压切换模式</div>
+							<div style="white-space: nowrap;text-align: right;">AVC实时控制软压板</div>
+						</div>
+						<div style="margin-left: 10px;">
+							<div style="background: rgb(41, 238, 14); height: 20px; width: 40px;margin-bottom: 20px;"></div>
+							<div style="background: rgb(41, 238, 14); height: 20px; width: 40px"></div>
+						</div>
+					</div>
+					<div style="padding: 0 10px;display: flex;justify-content: space-between;align-items:center;margin-top: 30px;">
+						<div>
+							<div style="height: 40px;line-height:40px;text-align:center;background:lightgrey;color:black; width:180px;">远方设置有功目标值</div>
+							<div style="color:yellow;margin: 10px 0;">(电压模式设置0, 无功模式设置1)</div>
+						</div>
+						<div style="display: flex;">
+							<div>电压控制模式</div>
+							<div style="width: 20px; height: 20px; border-radius:50%;background: rgb(41, 238, 14);margin-left: 20px;"></div>
+						</div>
+						<div style="display: flex;">
+							<div>无功控制模式</div>
+							<div style="width: 20px; height: 20px; border-radius:50%;background: rgb(41, 238, 14);margin-left: 20px;"></div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="d-pn-tb">
+				<div class="pn-tt">母线运行区域</div>
+				<div style="margin-bottom:10px;display: flex;margin: 0 10px;justify-content: space-around;border-bottom: 2px solid white;">
+					<div>电压单位: kV</div>
+					<div>电压实时值: {{ dataObj.dyssz }}</div>
+					<div>无功单位: kVar</div>
+					<div>无功实时值: {{ dataObj.wgssz }}</div>
+				</div>
+				<div style="display: flex;align-items: center;justify-content: space-between;padding: 0 10px;">
+					<div style="width: 30%;display:flex;flex-direction:column;align-items: center; text-align:right;">
+						<div style="width: 100%;margin-top: 10px;display:flex;justify-content: space-between;">
+							<span style="width:50%;">电压上限值</span>
+							<span>{{ dataObj.dysxz }}</span>
+						</div>
+						<div style="width: 100%;margin-top: 10px;display:flex;justify-content: space-between;">
+							<span style="width:50%;">电压告警上限值</span>
+							<span>{{ dataObj.dygjsxz }}</span>
+						</div>
+						<div style="width: 100%;margin-top: 10px;display:flex;justify-content: space-between;">
+							<span style="width:50%;">电压告警下限值</span>
+							<span>{{ dataObj.dygjxxz }}</span>
+						</div>
+						<div style="width: 100%;margin-top: 10px;display:flex;justify-content: space-between;">
+							<span style="width:50%;">电压下限值</span>
+							<span>{{ dataObj.dyxxz }}</span>
+						</div>
+					</div>
+					<div style="width: 64%">
+						<table style="width:100%;">
+						<tr>
+							<th width="30%">Q+/COS-目标上限值</th>
+							<th></th>
+							<th width="30%">Q-/COS-目标下限值</th>
+						</tr>
+						<tr>
+							<td style="background: rgb(41, 238, 14)"></td>
+							<td style="background: rgb(41, 238, 14)"></td>
+							<td style="background: rgb(41, 238, 14)"></td>
+						</tr>
+						<tr>
+							<td style="background: rgb(41, 238, 14)"></td>
+							<td style="background: rgb(41, 238, 14)"></td>
+							<td style="background: rgb(41, 238, 14)"></td>
+						</tr>
+						<tr>
+							<td style="background: rgb(41, 238, 14)"></td>
+							<td style="background: rgb(41, 238, 14)"></td>
+							<td style="background: rgb(41, 238, 14)"></td>
+						</tr>
+						<tr>
+							<td style="background: rgb(41, 238, 14)"></td>
+							<td style="background: rgb(41, 238, 14)"></td>
+							<td style="background: rgb(41, 238, 14)"></td>
+						</tr>
+						<tr>
+							<td>0.00</td>
+							<td></td>
+							<td>0.00</td>
+						</tr>
+						</table>
+					</div>
+				</div>
+			</div>
+			<div class="d-pn-tb">
+				<div class="pn-tt">
+					遥测运行信息区
+				</div>
+				<div class="flex">
+					<table>
+						<tr v-for="item in dotArr1" :key="item.id">
+							<td width="50%">{{ item.name }}</td>
+							<td width="25%">{{ item.num }}</td>
+							<td width="25%">{{ item.unit }}</td>
+						</tr>
+					</table>
+				</div>
+			</div>
+			<div class="d-pn-tb">
+				<div class="pn-tt">
+					闭锁与遥信信息
+				</div>
+				<div class="flex pn-rb" style="align-items:center;">
+					<div style="width: 40%">
+							<div style="height: 40px;line-height:40px;text-align:center;background:lightgrey;color:black; width:180px;">人工设定1#高侧母线无功值</div>
+							<div style="color:yellow;margin: 10px 0;">(若设置母线无功为3kVar, 则设定为3)</div>
+					</div>
+					<div style="width: 40%">
+							<div style="height: 40px;line-height:40px;text-align:center;background:lightgrey;color:black; width:180px;">远方设定1#高侧母线无功值</div>
+							<div style="color:yellow;margin: 10px 0;">(若设置母线无功为3kVar, 则设定为3)</div>
+					</div>
+					<div style="width: 40%">
+							<div style="height: 40px;line-height:40px;text-align:center;background:lightgrey;color:black; width:180px;">人工设定1#高侧母线电压值</div>
+							<div style="color:yellow;margin: 10px 0;">(若设置母线电压为3.5kV, 则设定为3.5)</div>
+					</div>
+					<div style="width: 40%">
+							<div style="height: 40px;line-height:40px;text-align:center;background:lightgrey;color:black; width:180px;">远方设定1#高侧母线电压值</div>
+							<div style="color:yellow;margin: 10px 0;">(若设置母线电压为3.5kV, 则设定为3.5)</div>
+					</div>
+					<div class="pn-rb-it">
+						<div>(AGC/AVC告警)1#高侧母线无功增闭锁</div>
+					</div>
+					<div class="pn-rb-it">
+						<div>(AVC告警)1#高侧母线电压调节指令方式异常</div>
+					</div>
+					<div class="pn-rb-it">
+						<div>(AVC告警)1#高侧母线无功减闭锁</div>
+					</div>
+					<div class="pn-rb-it">
+						<div>(AVC告警)1#高侧母线无功调节指令方式异常</div>
+					</div>
+				</div>
+
+			</div>
+		</div>
+	</div>
+</template>
+<script>
+import yfjd from '@/assets/png/yfjd.png'
+export default {
+	data(){
+		return {
+			yfjd: yfjd,
+			dotArr1: [
+				{
+					name: '35kV母线电压目标值',
+					num: 0,
+					unit: 'kV'
+				},
+				{
+					name: '35kV母线电压实时值',
+					num: 0,
+					unit: 'kV'
+				},
+				{
+					name: '35kV母线无功目标值',
+					num: 0,
+					unit: 'kVar'
+				},
+				{
+					name: '35kV母线无功实时值',
+					num: 0,
+					unit: 'kVar'
+				},
+				{
+					name: '人工设定电压目标值',
+					num: 0,
+					unit: 'kV'
+				},
+				{
+					name: '远方设定电压目标值',
+					num: 0,
+					unit: 'kV'
+				},
+				{
+					name: '35kV母线可增无功值',
+					num: 0,
+					unit: 'kVar'
+				},
+			],
+			dataObj: {
+				dyssz: 0,
+				wgssz: 0,
+				dysxz: 0,
+				dygjsxz: 0,
+				dygjxxz: 0,
+				dyxxz: 0
+			}
+		}
+	},
+	props:{
+		datas: {
+			type: Object,
+			default: () => {}
+		}
+	},
+	watch: {
+		datas(val){
+			this.funSetDot(val)
+		}
+	},
+	methods: {
+		funSetDot(obj){
+			this.dataObj = {
+				dyssz: obj.akavcai001,
+				wgssz: obj.akavcai002,
+				dysxz: obj.akavcai003,
+				dygjsxz: obj.akavcai004,
+				dygjxxz: obj.akavcai005,
+				dyxxz: obj.akavcai006
+			}
+			this.dotArr1[0].num = obj.akavcai007
+			this.dotArr1[1].num = obj.akavcai008
+			this.dotArr1[2].num = obj.akavcai009
+			this.dotArr1[3].num = obj.akavcai010
+			this.dotArr1[4].num = obj.akavcai011
+			this.dotArr1[5].num = obj.akavcai012
+			// this.dotArr1[6].num = obj.akavcai013
+		}
+	},
+	created(){
+		this.funSetDot(this.datas)
+	}
+}
+</script>
+<style lang="less" scoped>
+.d-tt {
+	font-size: 24px;
+	color: white;
+	height: 30px;
+	line-height: 30px;
+	text-align: center;
+}
+
+.d-subtt {
+	font-size: 20px;
+	color: white;
+	height: 24px;
+	line-height: 24px;
+	padding-left: 10px;
+}
+
+.d-pn {
+	width: 100%;
+	margin-top: 10px;
+	padding-top: 10px;
+	display: flex;
+	flex-wrap: wrap;
+	color: white;
+	border: 2px solid rgba(255, 255, 255, 0.6);
+
+	// height: 467px;
+	.d-pn-tb {
+		width: calc(50% - 40px);
+		margin-bottom: 10px;
+		margin-right: 20px;
+		margin-left: 20px;
+		border: 1px solid rgba(255, 255, 255, 0.6);
+
+		.flex {
+			display: flex;
+			flex-wrap: wrap;
+			justify-content: space-between;
+			align-content: center;
+		}
+
+		.pn-tt {
+			color: white;
+			text-align: center;
+			padding: 10px 0px;
+		}
+
+		.pn-rb {
+			justify-content: space-around;
+		}
+
+		.pn-rb-it {
+			width: 40%;
+			height: 30px;
+			margin-bottom: 10px;
+			color: black;
+			text-align: center;
+			line-height: 26px;
+			border: 2px solid white;
+			background: rgb(41, 238, 14);
+		}
+
+		table {
+			width: 100%;
+			border-collapse: collapse;
+		}
+
+		td {
+			border: 1px solid rgba(255, 255, 255, 0.6);
+			text-align: center;
+			padding-right: 10px;
+			height: 36px;
+			color: rgba(255, 255, 255, 0.75);
+			font-size: 16px;
+			font-weight: bold;
+
+			&:last-child {
+				text-align: center;
+			}
+
+			&:nth-child(2) {
+				color: rgb(41, 238, 14);
+			}
+		}
+	}
+
+	.d-pn-ul {
+		width: 100%;
+		padding: 20px 30px 0 20px;
+		border-left: 2px solid rgba(255, 255, 255, 0.6);
+		display: flex;
+		flex-wrap: wrap;
+		align-items: flex-start;
+		align-content: flex-start;
+		overflow-y: auto;
+		overflow-x: hidden;
+
+		.d-pn-ul-li {
+			width: 44%;
+			height: 40px;
+			// line-height: 40px;
+			margin-bottom: 20px;
+			background-image: linear-gradient(to bottom, rgb(145, 145, 240), rgb(245, 245, 245), rgb(145, 145, 233));
+			color: rgb(0, 0, 179);
+			font-size: 16px;
+			text-align: center;
+			border-radius: 6px;
+			margin-right: 10px;
+			display: flex;
+			font-size: 14px;
+			align-items: center;
+			justify-content: center;
+
+			&[data-active='true'] {
+				background-image: linear-gradient(to bottom, red, rgb(243, 136, 128), red);
+				color: rgb(255, 196, 0);
+			}
+		}
+	}
+}</style>

+ 253 - 0
src/views/WindSite/components/boosterstation/akdirectscreen.vue

@@ -0,0 +1,253 @@
+<template>
+<div>
+	<div class="d-tt">直流屏分画面</div>
+	<div class="d-subtt">主画面</div>
+	<div class="d-pn">
+		<table class="d-pn-tb">
+			<tr v-for="item in dotArr" :key="item.id">
+				<td width="50%">{{ item.name }}</td>
+				<td width="25%">{{ item.num }}</td>
+				<td width="25%">{{ item.unit }}</td>
+			</tr>
+		</table>
+		<div class="d-pn-ul">
+			<div class="d-pn-ul-li" :data-active="item.status===true" v-for="(item,index) in dataArr" :key="index">{{ item.name }}</div>
+		</div>
+	</div>
+</div>
+</template>
+<script>
+export default {
+	data(){
+		return {
+			dataArr: [
+				{
+					name: '直流屏 一组交流1路缺相'
+				},
+				{
+					name: '直流屏 一组交流1路失电'
+				},
+				{
+					name: '直流屏 一组交流2路缺相'
+				},
+				{
+					name: '直流屏 一组交流2路失电'
+				},
+				{
+					name: '直流屏 一组交流2路投入'
+				},
+				{
+					name: '直流屏 控母1过压'
+				},
+				{
+					name: '直流屏 控母1欠压'
+				},
+				{
+					name: '直流屏 合母1过压'
+				},
+				{
+					name: '直流屏 合母1欠压'
+				},
+				{
+					name: '直流屏 电池1过压'
+				},
+				{
+					name: '直流屏 电池1欠压'
+				},
+				{
+					name: '直流屏 电池组1过流'
+				},
+				{
+					name: '直流屏 一组综合故障'
+				},
+				{
+					name: '直流屏 一组整流模块异常'
+				}
+			],
+			dotArr: [
+				{
+					name: '一组交流1路Uab电压:',
+					num: 0,
+					unit: 'V'
+				},
+				{
+					name: '一组交流1路Uac电压:',
+					num: 0,
+					unit: 'V'
+				},
+				{
+					name: '一组交流1路Ubc电压:',
+					num: 0,
+					unit: 'V'
+				},
+				{
+					name: '一组交流2路Uab电压:',
+					num: 0,
+					unit: 'V'
+				},
+				{
+					name: '一组交流2路Uac电压:',
+					num: 0,
+					unit: 'V'
+				},
+				{
+					name: '一组交流2路Ubc电压:',
+					num: 0,
+					unit: 'V'
+				},
+				{
+					name: '一组合母1电压:',
+					num: 0,
+					unit: 'V'
+				},
+				{
+					name: '一组控母1电压:',
+					num: 0,
+					unit: 'V'
+				},
+				{
+					name: '一组控母1电流:',
+					num: 0,
+					unit: 'A'
+				},
+				{
+					name: '一组电池1电压:',
+					num: 0,
+					unit: 'V'
+				},
+				{
+					name: '一组电池1电流:',
+					num: 0,
+					unit: 'A'
+				},
+				{
+					name: '一组电池温度:',
+					num: 0,
+					unit: '度'
+				}
+			]
+		}
+	},
+	props:{
+		datas: {
+			type: Object,
+			default: () => {}
+		}
+	},
+	watch: {
+		datas(val){
+			this.funSetDot(val)
+		}
+	},
+	methods: {
+		funSetDot(obj){
+			this.dotArr[0].num = obj.akai083
+			this.dotArr[1].num = obj.akai084
+			this.dotArr[2].num = obj.akai085
+			this.dotArr[3].num = obj.akai086
+			this.dotArr[4].num = obj.akai087
+			this.dotArr[5].num = obj.akai088
+			this.dotArr[6].num = obj.akai089
+			this.dotArr[7].num = obj.akai090
+			this.dotArr[8].num = obj.akai091
+			this.dotArr[9].num = obj.akai092
+			this.dotArr[10].num = obj.akai093
+			this.dotArr[11].num = obj.akai094
+
+			this.dataArr[0].status = obj.akdi222
+			this.dataArr[1].status = obj.akdi223
+			this.dataArr[2].status = obj.akdi229
+			this.dataArr[3].status = obj.akdi230
+			this.dataArr[4].status = obj.akdi231
+			this.dataArr[5].status = obj.akdi232
+			this.dataArr[6].status = obj.akdi233
+			this.dataArr[7].status = obj.akdi234
+			this.dataArr[8].status = obj.akdi235
+			this.dataArr[9].status = obj.akdi236
+			this.dataArr[10].status = obj.akdi239
+			this.dataArr[11].status = obj.akdi244
+		}
+	},
+	created(){
+		this.funSetDot(this.datas)
+	}
+}
+</script>
+<style lang="less" scoped>
+.d-tt{
+	font-size: 24px;
+	color: white;
+	height: 30px;
+	line-height: 30px;
+	text-align: center;
+}
+.d-subtt{
+	font-size: 20px;
+	color: white;
+	height: 24px;
+	line-height: 24px;
+	padding-left: 10px;
+}
+.d-pn{
+	width: 100%;
+	margin-top: 10px;
+	display: flex;
+	border: 2px solid rgba(255,255,255,0.6);
+	height: 467px;
+	.d-pn-tb{
+		width: 70%;
+		margin-top: 10px;
+		margin-bottom: 20px;
+		margin-right: 20px;
+		margin-left: 20px;
+		border: 1px solid rgba(255,255,255,0.6);
+		border-collapse: collapse;
+		td{
+			border: 1px solid rgba(255,255,255,0.6);
+			text-align: right;
+			padding-right: 10px;
+			height: 36px;
+			color: rgba(255,255,255,0.75);
+			font-size: 16px;
+			font-weight: bold;
+			&:last-child{
+				text-align: center;
+			}
+			&:nth-child(2){
+				color: rgb(41, 238, 14);
+			}
+		}
+	}
+	.d-pn-ul{
+		width: 100%;
+		padding: 20px 30px 0 20px;
+		border-left: 2px solid rgba(255,255,255,0.6);
+		display: flex;
+		flex-wrap: wrap;
+		align-items: flex-start;
+		align-content: flex-start;
+		overflow-y: auto;
+		overflow-x: hidden;
+		.d-pn-ul-li{
+			width: 44%;
+			height: 40px;
+			// line-height: 40px;
+			margin-bottom: 20px;
+			background-image: linear-gradient(to bottom, rgb(145, 145, 240),rgb(245, 245, 245),rgb(145, 145, 233));
+			color: rgb(0, 0, 179);
+			font-size: 16px;
+			text-align: center;
+			border-radius: 6px;
+			margin-right: 10px;
+			display: flex;
+			font-size: 14px;
+			align-items: center;
+			justify-content: center;
+			&[data-active='true']{
+				background-image: linear-gradient(to bottom, red,rgb(243, 136, 128),red);
+				color: rgb(255, 196, 0);
+			}
+		}
+	}
+}
+</style>

+ 292 - 0
src/views/WindSite/components/boosterstation/akenergy.vue

@@ -0,0 +1,292 @@
+<template>
+<div>
+	<div class="d-tt">电度表分画面</div>
+	<div class="d-subtt">主画面</div>
+	<div class="d-pn">
+		<table class="d-pn-tb">
+			<tr v-for="item in dotArr1" :key="item.id">
+				<td width="50%">{{ item.name }}</td>
+				<td width="25%">{{ item.num }}</td>
+				<td width="25%">{{ item.unit }}</td>
+			</tr>
+		</table>
+		<table class="d-pn-tb">
+			<tr v-for="item in dotArr2" :key="item.id">
+				<td width="50%">{{ item.name }}</td>
+				<td width="25%">{{ item.num }}</td>
+				<td width="25%">{{ item.unit }}</td>
+			</tr>
+		</table>
+		<table class="d-pn-tb">
+			<tr v-for="item in dotArr3" :key="item.id">
+				<td width="50%">{{ item.name }}</td>
+				<td width="25%">{{ item.num }}</td>
+				<td width="25%">{{ item.unit }}</td>
+			</tr>
+		</table>
+		<table class="d-pn-tb">
+			<tr v-for="item in dotArr4" :key="item.id">
+				<td width="50%">{{ item.name }}</td>
+				<td width="25%">{{ item.num }}</td>
+				<td width="25%">{{ item.unit }}</td>
+			</tr>
+		</table>
+	</div>
+</div>
+</template>
+<script>
+export default {
+	data(){
+		return {
+			dataArr: [
+				{
+					name: '直流屏 一组交流1路缺相'
+				},
+				{
+					name: '直流屏 一组交流1路缺相'
+				},
+				{
+					name: '直流屏 一组交流1路缺相'
+				},
+				{
+					name: '直流屏 一组交流1路缺相'
+				},
+				{
+					name: '直流屏 一组交流1路缺相'
+				},
+				{
+					name: '直流屏 一组交流1路缺相'
+				},
+				{
+					name: '直流屏 一组交流1路缺相'
+				},
+				{
+					name: '直流屏 一组交流1路缺相'
+				},
+				{
+					name: '直流屏 一组交流1路缺相'
+				},
+				{
+					name: '直流屏 一组交流1路缺相'
+				},
+				{
+					name: '直流屏 一组交流1路缺相'
+				},
+				{
+					name: '直流屏 一组交流1路缺相'
+				},
+				{
+					name: '直流屏 一组交流1路缺相'
+				},
+				{
+					name: '直流屏 一组交流1路缺相'
+				}
+			],
+			dotArr1: [
+				{
+					name: '301出线电表正向有功',
+					num: 0,
+					unit: 'Mwh'
+				},
+				{
+					name: '301出线电表正向无功',
+					num: 0,
+					unit: 'Mvar'
+				},
+				{
+					name: '301出线电表反向有功',
+					num: 0,
+					unit: 'Mwh'
+				},
+				{
+					name: '301出线电表反向无功',
+					num: 0,
+					unit: 'Mvar'
+				},
+			],
+			dotArr2: [
+				{
+					name: '厂区电表正向有功',
+					num: 0,
+					unit: 'Mwh'
+				},
+				{
+					name: '厂区电表正向无功',
+					num: 0,
+					unit: 'Mvar'
+				},
+				{
+					name: '厂区电表反向有功',
+					num: 0,
+					unit: 'Mwh'
+				},
+				{
+					name: '厂区电表反向无功',
+					num: 0,
+					unit: 'Mvar'
+				},
+			],
+			dotArr3: [
+				{
+					name: '3507出线表正向有功',
+					num: 0,
+					unit: 'Mwh'
+				},
+				{
+					name: '3507出线表正向无功',
+					num: 0,
+					unit: 'Mvar'
+				},
+				{
+					name: '3507出线表反向有功',
+					num: 0,
+					unit: 'Mwh'
+				},
+				{
+					name: '3507出线表反向无功',
+					num: 0,
+					unit: 'Mvar'
+				},
+			],
+			dotArr4: [
+				{
+					name: '埃肯电表正向有功',
+					num: 0,
+					unit: 'Mwh'
+				},
+				{
+					name: '埃肯电表正向无功',
+					num: 0,
+					unit: 'Mvar'
+				},
+				{
+					name: '埃肯电表反向有功',
+					num: 0,
+					unit: 'Mwh'
+				},
+				{
+					name: '埃肯电表反向无功',
+					num: 0,
+					unit: 'Mvar'
+				},
+			],
+		}
+	},
+	props:{
+		datas: {
+			type: Object,
+			default: () => {}
+		}
+	},
+	watch: {
+		datas(val){
+			this.funSetDot(val)
+		}
+	},
+	methods: {
+		funSetDot(obj){
+			this.dotArr1[0].num = obj.akzxyg001
+			this.dotArr1[1].num = obj.akzxwg002
+			this.dotArr1[2].num = obj.akfxyg003
+			this.dotArr1[3].num = obj.akfxwg004
+
+			this.dotArr2[0].num = obj.akzxyg009
+			this.dotArr2[1].num = obj.akzxwg010
+			this.dotArr2[2].num = obj.akfxyg011
+			this.dotArr2[3].num = obj.akfxwg012
+
+			this.dotArr3[0].num = obj.akzxyg005
+			this.dotArr3[1].num = obj.akzxwg006
+			this.dotArr3[2].num = obj.akfxyg007
+			this.dotArr3[3].num = obj.akfxwg008
+
+			this.dotArr4[0].num = obj.akzxyg013
+			this.dotArr4[1].num = obj.akfxyg014
+			this.dotArr4[2].num = obj.akzxwg015
+			this.dotArr4[3].num = obj.akfxwg016
+		}
+	},
+	created(){
+		this.funSetDot(this.datas)
+	}
+}
+</script>
+<style lang="less" scoped>
+.d-tt{
+	font-size: 24px;
+	color: white;
+	height: 30px;
+	line-height: 30px;
+	text-align: center;
+}
+.d-subtt{
+	font-size: 20px;
+	color: white;
+	height: 24px;
+	line-height: 24px;
+	padding-left: 10px;
+}
+.d-pn{
+	width: 100%;
+	margin-top: 10px;
+	display: flex;
+	flex-wrap: wrap;
+	border: 2px solid rgba(255,255,255,0.6);
+	height: 467px;
+	.d-pn-tb{
+		width: calc(50% - 40px);
+		margin-top: 10px;
+		margin-bottom: 20px;
+		margin-right: 20px;
+		margin-left: 20px;
+		border: 1px solid rgba(255,255,255,0.6);
+		border-collapse: collapse;
+		td{
+			border: 1px solid rgba(255,255,255,0.6);
+			text-align: right;
+			padding-right: 10px;
+			height: 36px;
+			color: rgba(255,255,255,0.75);
+			font-size: 16px;
+			font-weight: bold;
+			&:last-child{
+				text-align: center;
+			}
+			&:nth-child(2){
+				color: rgb(41, 238, 14);
+			}
+		}
+	}
+	.d-pn-ul{
+		width: 100%;
+		padding: 20px 30px 0 20px;
+		border-left: 2px solid rgba(255,255,255,0.6);
+		display: flex;
+		flex-wrap: wrap;
+		align-items: flex-start;
+		align-content: flex-start;
+		overflow-y: auto;
+		overflow-x: hidden;
+		.d-pn-ul-li{
+			width: 44%;
+			height: 40px;
+			// line-height: 40px;
+			margin-bottom: 20px;
+			background-image: linear-gradient(to bottom, rgb(145, 145, 240),rgb(245, 245, 245),rgb(145, 145, 233));
+			color: rgb(0, 0, 179);
+			font-size: 16px;
+			text-align: center;
+			border-radius: 6px;
+			margin-right: 10px;
+			display: flex;
+			font-size: 14px;
+			align-items: center;
+			justify-content: center;
+			&[data-active='true']{
+				background-image: linear-gradient(to bottom, red,rgb(243, 136, 128),red);
+				color: rgb(255, 196, 0);
+			}
+		}
+	}
+}
+</style>

+ 260 - 0
src/views/WindSite/components/boosterstation/aknbqscreen.vue

@@ -0,0 +1,260 @@
+<template>
+	<div>
+		<div class="d-tt">{{Number(nbqIndex)}}#逆变器分画面</div>
+		<div class="d-subtt">主画面</div>
+		<div class="d-pn">
+			<div class="d-pn-tb">
+				<table style="border-collapse: collapse;width: 100%;">
+					<tr v-for="item in dotArr" :key="item.name">
+						<td width="75%">{{Number(nbqIndex)}}{{ item.name }}</td>
+						<td width="25%">{{ item.num }}</td>
+					</tr>
+				</table>
+			</div>
+			<div class="d-pn-ul">
+				<div class="d-pn-ul-li" :data-active="item.status===true" v-for="(item,index) in dataArr" :key="item.name">{{Number(nbqIndex)}}{{ item.name }}</div>
+			</div>
+		</div>
+	</div>
+	</template>
+	<script>
+	export default {
+		data(){
+			return {
+				dataArr: [
+					{
+						name: '#逆变器_待机'
+					},
+					{
+						name: '#逆变器_并网'
+					},
+					{
+						name: '#逆变器_正常并网'
+					},
+					{
+						name: '#逆变器_限电降额并网'
+					},
+					{
+						name: '#逆变器_自降额并网'
+					},
+					{
+						name: '#逆变器_正常运行'
+					},
+					{
+						name: '#逆变器_故障停运'
+					},
+					{
+						name: '#逆变器_限电停运'
+					},
+					{
+						name: '#逆变器_关机'
+					},
+					{
+						name: '#逆变器_电网相线对PE短路'
+					},
+					{
+						name: '#逆变器_电网调电'
+					},
+					{
+						name: '#逆变器_电网欠压'
+					},
+					{
+						name: '#逆变器_电网过压'
+					},
+					{
+						name: '#逆变器_电网电压不平衡'
+					},
+					{
+						name: '#逆变器_电网过频'
+					},
+					{
+						name: '#逆变器_电网欠频'
+					},
+					{
+						name: '#逆变器_电网频率不稳定'
+					},
+					{
+						name: '#逆变器_输出过流'
+					}
+				],
+				dotArr: [
+				'#逆变器_机型ID',
+				'#逆变器_组串个数',
+				'#逆变器_MPPT个数',
+				'#逆变器_额定功率(Pn)',
+				'#逆变器_最大有功(Pmax)',
+				'#逆变器_最大视在(Smax)',
+				'#逆变器_最大无功(Qmax,向电网馈)',
+				'#逆变器_最大无功(Qmax,从电网吸)',
+				'#逆变器_PV1电流',
+				'#逆变器_PV2电压',
+				'#逆变器_PV2电流',
+				'#逆变器_PV3电压',
+				'#逆变器_PV3电流',
+				'#逆变器_PV4电压',
+				'#逆变器_PV4电流',
+				'#逆变器_PV5电压',
+				'#逆变器_PV5电流',
+				'#逆变器_PV6电压',
+				'#逆变器_PV6电流',
+				'#逆变器_PV7电压',
+				'#逆变器_PV7电流',
+				'#逆变器_PV8电压',
+				'#逆变器_PV8电流',
+				'#逆变器_PV9电压',
+				'#逆变器_PV9电流',
+				'#逆变器_PV10电压',
+				'#逆变器_PV10电流',
+				'#逆变器_PV11电压',
+				'#逆变器_PV11电流',
+				'#逆变器_PV12电压',
+				'#逆变器_PV12电流',
+				'#逆变器_PV13电压',
+				'#逆变器_PV13电流',
+				'#逆变器_PV14电压',
+				'#逆变器_PV14电流',
+				'#逆变器_PV15电压',
+				'#逆变器_PV15电流',
+				'#逆变器_PV16电压',
+				'#逆变器_PV16电流',
+				'#逆变器_PV17电压',
+				'#逆变器_PV17电流',
+				'#逆变器_PV18电压',
+				'#逆变器_PV18电流',
+				'#逆变器_有功功率',
+				'#逆变器_(有功)调节值',
+				'#逆变器_无功功率',
+				'#逆变器_(无功)调节值',
+				].map(o => {
+					return {
+						name: o,
+						num: 0
+					}
+				})
+			}
+		},
+		props:{
+			datas: {
+				type: Object,
+				default: () => {}
+			},
+			nbqIndex: {
+				type: String,
+				default: '01'
+			}
+		},
+		watch: {
+			datas(val){
+				this.funSetDot(val)
+			},
+			nbqIndex(val){
+				this.funSetDot(this.datas)
+			}
+		},
+		methods: {
+			funSetDot(obj){
+				this.dotArr.forEach((o, index) => {
+					if(index+1<10){
+						o.num = obj[`aknbq0${this.nbqIndex}ai00${index+1}`]
+					}else{
+						o.num = obj[`aknbq0${this.nbqIndex}ai0${index+1}`]
+					}
+				})
+				this.dataArr.forEach((o, index) => {
+					if(index+1<10){
+						o.status = obj[`aknbq0${this.nbqIndex}di00${index+1}`]
+					}else{
+						o.status = obj[`aknbq0${this.nbqIndex}di0${index+1}`]
+					}
+				})
+			}
+		},
+		created(){
+			this.funSetDot(this.datas)
+		}
+	}
+	</script>
+	<style lang="less" scoped>
+	.d-tt{
+		font-size: 24px;
+		color: white;
+		height: 30px;
+		line-height: 30px;
+		text-align: center;
+	}
+	.d-subtt{
+		font-size: 20px;
+		color: white;
+		height: 24px;
+		line-height: 24px;
+		padding-left: 10px;
+	}
+	.d-pn{
+		width: 100%;
+		margin-top: 10px;
+		display: flex;
+		border: 2px solid rgba(255,255,255,0.6);
+		height: 580px;
+		.d-pn-tb{
+			width: 70%;
+			// height: 100%;
+			overflow-x: hidden;
+			overflow-y: auto;
+			margin-top: 10px;
+			margin-bottom: 20px;
+			margin-right: 20px;
+			margin-left: 20px;
+			border: 1px solid rgba(255,255,255,0.6);
+			border-collapse: collapse;
+			tr{
+				height: 36px;
+			}
+			td{
+				border: 1px solid rgba(255,255,255,0.6);
+				text-align: right;
+				padding-right: 10px;
+				height: 36px;
+				color: rgba(255,255,255,0.75);
+				font-size: 16px;
+				font-weight: bold;
+				&:last-child{
+					text-align: center;
+				}
+				&:nth-child(2){
+					color: rgb(41, 238, 14);
+				}
+			}
+		}
+		.d-pn-ul{
+			width: 100%;
+			padding: 20px 30px 0 20px;
+			border-left: 2px solid rgba(255,255,255,0.6);
+			display: flex;
+			flex-wrap: wrap;
+			align-items: flex-start;
+			align-content: flex-start;
+			overflow-y: auto;
+			overflow-x: hidden;
+			.d-pn-ul-li{
+				width: 44%;
+				height: 40px;
+				// line-height: 40px;
+				margin-bottom: 20px;
+				background-image: linear-gradient(to bottom, rgb(145, 145, 240),rgb(245, 245, 245),rgb(145, 145, 233));
+				color: rgb(0, 0, 179);
+				font-size: 16px;
+				text-align: center;
+				border-radius: 6px;
+				margin-right: 10px;
+				display: flex;
+				font-size: 14px;
+				align-items: center;
+				justify-content: center;
+				&[data-active='true']{
+					background-image: linear-gradient(to bottom, red,rgb(243, 136, 128),red);
+					color: rgb(255, 196, 0);
+				}
+			}
+		}
+	}
+	</style>

+ 272 - 0
src/views/WindSite/components/boosterstation/akpartscreen.vue

@@ -0,0 +1,272 @@
+<template>
+<div>
+	<div class="d-tt">分站房分图</div>
+	<div class="d-pn">
+		<div class="d-pn-it" v-for="(item,index) in partList" :key="index">
+			<div class="d-pn-it-tt">{{index+1}}#方阵</div>
+			<div class="d-pn-it-row">
+				<div class="d-pn-it-row-col">
+					<div class="d-pn-it-row-col-it">
+						<div>现有功值(kW)</div>
+						<div>{{ item.xygz }}</div>
+					</div>
+					<div class="d-pn-it-row-col-it">
+						<div>现无功值(kVar)</div>
+						<div>{{ item.xwgz }}</div>
+					</div>
+					<div class="d-pn-it-row-col-it opa">
+						<div>实发有功(kW)</div>
+						<div>{{ item.sfyg }}</div>
+					</div>
+					<div class="d-pn-it-row-col-it opa">
+						<div>实发无功(kVar)</div>
+						<div>{{ item.sfwg }}</div>
+					</div>
+					<div class="d-pn-it-row-col-it opa">
+						<div>功率因数</div>
+						<div>{{ item.glys }}</div>
+					</div>
+				</div>
+				<div class="d-pn-it-row-col" style="border-right: none;">
+					<div class="d-pn-it-row-col-ryb">
+						<div>AGC投退软压板</div>
+						<div class="ryb" :data-active="item.agcryb"></div>
+					</div>
+					<div class="d-pn-it-row-col-ryb">
+						<div>AVC投退软压板</div>
+						<div class="ryb" :data-active="item.avcryb"></div>
+					</div>
+					<div class="d-pn-it-row-col-it opa">
+						<div>通讯故障</div>
+						<div class="ryb" :data-active="item.txgz"></div>
+					</div>
+					<div class="d-pn-it-row-col-it opa">
+						<div>并网运行</div>
+						<div class="ryb" style="border-radius: 50%" :data-active="item.bwyx"></div>
+					</div>
+				</div>
+			</div>
+			<div class="d-pn-it-row">
+				<div class="d-pn-it-row-col" style="border-bottom: none;text-align: center;color: black;">
+					<div class="d-pn-it-row-col-bg">
+						<div style="border-bottom: 2px solid white;">控制异常闭锁(手动复归)</div>
+						<div>信号异常闭锁(自动复归)</div>
+					</div>
+				</div>
+				<div class="d-pn-it-row-col" style="border-bottom: none;text-align: center;color: black;border-right: none">
+					<div class="d-pn-it-row-col-bg">
+						<div style="border-bottom: 2px solid white;">(AGC)总闭锁(自动复归)</div>
+						<div>(AVC)总闭锁(自动复归)</div>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+</template>
+<script>
+export default {
+	data(){
+		return {
+			partList: new Array(11).fill({
+					xygz: 0,
+					xwgz: 0,
+					sfyg: 0,
+					sfwg: 0,
+					glys: 0,
+					agcryb: 0,
+					avcryb: 0,
+					txgz: 0,
+					bwyx: 0,
+				})
+		}
+	},
+	props:{
+		datas: {
+			type: Object,
+			default: () => {}
+		}
+	},
+	watch: {
+		datas(val){
+			this.funSetDot(val)
+		}
+	},
+	methods: {
+		funSetDot(obj){
+			this.partList.forEach((o,index) => {
+				let indexStr = `${index}`
+				if(index<10){
+					indexStr = `0${index}`
+				}
+				o.xygz = obj[`akfzf0${indexStr}di001`]
+				o.xwgz = obj[`akfzf0${indexStr}di002`]
+				o.sfyg = obj[`akfzf0${indexStr}di003`]
+				o.sfwg = obj[`akfzf0${indexStr}di004`]
+				o.glys = obj[`akfzf0${indexStr}di005`]
+				o.agcryb = 0
+				o.avcryb = 0
+				o.txgz = obj[`akfzf0${indexStr}di007`]
+				o.bwyx = obj[`akfzf0${indexStr}di006`]
+			})
+		}
+	},
+	created(){
+		this.funSetDot(this.datas)
+	}
+}
+</script>
+<style lang="less" scoped>
+.d-tt{
+	font-size: 24px;
+	color: white;
+	height: 30px;
+	line-height: 30px;
+	text-align: center;
+}
+.d-subtt{
+	font-size: 20px;
+	color: white;
+	height: 24px;
+	line-height: 24px;
+	padding-left: 10px;
+}
+.d-pn{
+	width: 100%;
+	height: 650px;
+	margin-top: 10px;
+	overflow-x: hidden;
+	overflow-y: auto;
+	display: flex;
+	flex-wrap: wrap;
+	.d-pn-tb{
+		width: calc(50% - 40px);
+		margin-top: 10px;
+		margin-bottom: 20px;
+		margin-right: 20px;
+		margin-left: 20px;
+		border: 1px solid rgba(255,255,255,0.6);
+		border-collapse: collapse;
+		td{
+			border: 1px solid rgba(255,255,255,0.6);
+			text-align: right;
+			padding-right: 10px;
+			height: 36px;
+			color: rgba(255,255,255,0.75);
+			font-size: 16px;
+			font-weight: bold;
+			&:last-child{
+				text-align: center;
+			}
+			&:nth-child(2){
+				color: rgb(41, 238, 14);
+			}
+		}
+	}
+	.d-pn-ul{
+		width: 100%;
+		padding: 20px 30px 0 20px;
+		border-left: 2px solid rgba(255,255,255,0.6);
+		display: flex;
+		flex-wrap: wrap;
+		align-items: flex-start;
+		align-content: flex-start;
+		overflow-y: auto;
+		overflow-x: hidden;
+		.d-pn-ul-li{
+			width: 44%;
+			height: 40px;
+			// line-height: 40px;
+			margin-bottom: 20px;
+			background-image: linear-gradient(to bottom, rgb(145, 145, 240),rgb(245, 245, 245),rgb(145, 145, 233));
+			color: rgb(0, 0, 179);
+			font-size: 16px;
+			text-align: center;
+			border-radius: 6px;
+			margin-right: 10px;
+			display: flex;
+			font-size: 14px;
+			align-items: center;
+			justify-content: center;
+			&[data-active='true']{
+				background-image: linear-gradient(to bottom, red,rgb(243, 136, 128),red);
+				color: rgb(255, 196, 0);
+			}
+		}
+	}
+	.d-pn-it{
+		width: 24%;
+		background: #315f9bb3;
+		margin-right: 1%;
+		margin-bottom: 20px;
+		color: white;
+		&-tt{
+			background: #8f6464;
+			background-image: linear-gradient(0, transparent, #f14444, transparent);
+			height: 30px;
+			line-height:30px;
+			text-align: center;
+		}
+		&-row{
+			display: flex;
+			&-col{
+				width: 50%;
+				padding: 10px;
+				border-right: 2px solid white;
+				border-bottom: 2px solid white;
+				.ryb{
+					width: 20px;
+					height: 20px;
+					background: rgb(41, 238, 14);
+					&[data-active='true']{
+						background: red;
+					}
+				}
+				&-it{
+					height: 40px;
+					width: 100%;
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					margin-bottom: 10px;
+					>div:first-child{
+						background: lightgrey;
+						color: black;
+						width: 100px;
+						height: 40px;
+						line-height: 40px;
+						text-align: center;
+					}
+					&.opa{
+						>div:first-child{
+							background: transparent;
+							color: white;
+							width: 100px;
+							height: 40px;
+							line-height: 40px;
+							text-align: center;
+						}
+					}
+				}
+				&-ryb{
+					width: 100%;
+					height: 40px;
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					margin-bottom: 10px;
+					>div:first-child{
+						// color: yellow;
+						// text-decoration: underline;
+					}
+				}
+				&-bg{
+					background: rgb(41, 238, 14);
+					height: 44px;
+					width: 100%;
+				}
+			}
+		}
+	}
+}
+</style>

+ 248 - 0
src/views/WindSite/components/boosterstation/akpublictest.vue

@@ -0,0 +1,248 @@
+<template>
+<div>
+	<div class="d-tt">公用测控分画面</div>
+	<div class="d-subtt">主画面</div>
+	<div class="d-pn">
+		<table class="d-pn-tb">
+			<tr v-for="item in dotArr" :key="item.id">
+				<td width="50%">{{ item.name }}</td>
+				<td width="25%">{{ item.num }}</td>
+				<td width="25%">{{ item.unit }}</td>
+			</tr>
+		</table>
+		<div class="d-pn-ul">
+			<div class="d-pn-ul-li" :data-active="item.status===true" v-for="(item,index) in dataArr" :key="index">{{ item.name }}</div>
+		</div>
+	</div>
+</div>
+</template>
+<script>
+export default {
+	data(){
+		return {
+			dataArr: [
+				{
+					name: '公用测控 站控制交换机失电'
+				},
+				{
+					name: '公用测控 直流屏充电模块异常'
+				},
+				{
+					name: '公用测控 直流屏绝缘异常'
+				},
+				{
+					name: '公用测控 直流屏交直流串入异常'
+				},
+				{
+					name: '公用测控 upsL3交流输出'
+				},
+				{
+					name: '公用测控 upsL4直流故障'
+				},
+				{
+					name: '公用测控 upsL5输出过载'
+				},
+				{
+					name: '公用测控 1U保护装置保护跳闸'
+				},
+				{
+					name: '公用测控 1U保护装置保护合闸'
+				},
+				{
+					name: '公用测控 7U保护装置保护动作'
+				},
+				{
+					name: '公用测控 7U保护装置异常告警'
+				},
+				{
+					name: '公用测控 防孤岛装置故障'
+				},
+				{
+					name: '公用测控 母差装置故障告警(闭锁)'
+				},
+				{
+					name: '公用测控 母差装置运行异常(告警)'
+				},
+				{
+					name: '公用测控 母差装置CT/PT断线告警'
+				},
+				{
+					name: '公用测控 电能质量失电报警'
+				},
+				{
+					name: '公用测控 小电流接地选线装置动作'
+				},
+				{
+					name: '公用测控 AGC/AVC控制系统装置异常'
+				}
+			],
+			dotArr: [
+				{
+					name: 'Ua:',
+					num: 0,
+					unit: 'V'
+				},
+				{
+					name: 'Ub:',
+					num: 0,
+					unit: 'V'
+				},
+				{
+					name: 'Uc:',
+					num: 0,
+					unit: 'V'
+				},
+				{
+					name: 'Uab:',
+					num: 0,
+					unit: 'V'
+				},
+				{
+					name: 'Ubc:',
+					num: 0,
+					unit: 'V'
+				},
+				{
+					name: 'Uca:',
+					num: 0,
+					unit: 'V'
+				},
+				{
+					name: 'Fri:',
+					num: 0,
+					unit: 'Hz'
+				},
+				{
+					name: 'COS:',
+					num: 0,
+					unit: ''
+				},
+			]
+		}
+	},
+	props:{
+		datas: {
+			type: Object,
+			default: () => {}
+		}
+	},
+	watch: {
+		datas(val){
+			this.funSetDot(val)
+		}
+	},
+	methods: {
+		funSetDot(obj){
+			this.dotArr[0].num = obj.akua1
+			this.dotArr[1].num = obj.akub1
+			this.dotArr[2].num = obj.akuc1
+			this.dotArr[3].num = obj.aku1ab
+			this.dotArr[4].num = obj.aku1bc
+			this.dotArr[5].num = obj.aku1ca
+			this.dotArr[6].num = obj.akfr1
+			this.dotArr[7].num = obj.akcos1
+
+			this.dataArr[0].status = obj.akdi007
+			this.dataArr[1].status = obj.akdi008
+			this.dataArr[2].status = obj.akdi009
+			this.dataArr[3].status = obj.akdi013
+			this.dataArr[4].status = obj.akdi016
+			this.dataArr[5].status = obj.akdi017
+			this.dataArr[6].status = obj.akdi018
+			this.dataArr[7].status = obj.akdi023
+			this.dataArr[8].status = obj.akdi024
+			this.dataArr[9].status = obj.akdi026
+			this.dataArr[10].status = obj.akdi027
+			this.dataArr[11].status = obj.akdi030
+			this.dataArr[12].status = obj.akdi039
+			this.dataArr[13].status = obj.akdi040
+			this.dataArr[14].status = obj.akdi042
+			this.dataArr[15].status = obj.akdi047
+			this.dataArr[16].status = obj.akdi048
+			this.dataArr[17].status = obj.akdi049
+		}
+	},
+	created(){
+		this.funSetDot(this.datas)
+	}
+}
+</script>
+<style lang="less" scoped>
+.d-tt{
+	font-size: 24px;
+	color: white;
+	height: 30px;
+	line-height: 30px;
+	text-align: center;
+}
+.d-subtt{
+	font-size: 20px;
+	color: white;
+	height: 24px;
+	line-height: 24px;
+	padding-left: 10px;
+}
+.d-pn{
+	width: 100%;
+	margin-top: 10px;
+	display: flex;
+	justify-content: space-between;
+	border: 2px solid rgba(255,255,255,0.6);
+	height: 600px;
+	.d-pn-tb{
+		width: 40%;
+		margin-top: 10px;
+		margin-bottom: 20px;
+		margin-right: 20px;
+		margin-left: 20px;
+		border: 1px solid rgba(255,255,255,0.6);
+		border-collapse: collapse;
+		td{
+			border: 1px solid rgba(255,255,255,0.6);
+			text-align: right;
+			padding-right: 10px;
+			height: 36px;
+			color: rgba(255,255,255,0.75);
+			font-size: 16px;
+			font-weight: bold;
+			&:last-child{
+				text-align: center;
+			}
+			&:nth-child(2){
+				color: rgb(41, 238, 14);
+			}
+		}
+	}
+	.d-pn-ul{
+		width: 70%;
+		padding: 20px 30px 0 20px;
+		border-left: 2px solid rgba(255,255,255,0.6);
+		display: flex;
+		flex-wrap: wrap;
+		align-items: flex-start;
+		align-content: flex-start;
+		overflow-y: auto;
+		overflow-x: hidden;
+		.d-pn-ul-li{
+			width: 44%;
+			height: 40px;
+			// line-height: 40px;
+			margin-bottom: 20px;
+			background-image: linear-gradient(to bottom, rgb(145, 145, 240),rgb(245, 245, 245),rgb(145, 145, 233));
+			color: rgb(0, 0, 179);
+			font-size: 16px;
+			text-align: center;
+			border-radius: 6px;
+			margin-right: 10px;
+			display: flex;
+			font-size: 14px;
+			align-items: center;
+			justify-content: center;
+			&[data-active='true']{
+				background-image: linear-gradient(to bottom, red,rgb(243, 136, 128),red);
+				color: rgb(255, 196, 0);
+			}
+		}
+	}
+}
+</style>

+ 257 - 0
src/views/WindSite/components/boosterstation/akups.vue

@@ -0,0 +1,257 @@
+<template>
+<div>
+	<div class="d-tt">UPS分画面</div>
+	<div class="d-subtt">主画面</div>
+	<div class="d-pn">
+		<div class="d-pn-tb">
+					<svg width="800" viewbox="0 0 363 447" style="transform: translateX(-289px) translateY(-250px) scale(0.75);" height="800" xmlns="http://www.w3.org/2000/svg">
+					<line x1="250" y1="350" x2="830" y2="350" stroke="#FFFF33" stroke-width="3" />
+					<line x1="250" y1="460" x2="830" y2="460" stroke="#FFFF33" stroke-width="3" />
+					<line x1="250" y1="570" x2="830" y2="570" stroke="#FFFF33" stroke-width="3" />
+					<line x1="520" y1="330" x2="520" y2="390" stroke="#B00101" stroke-width="3" />
+					<line x1="520" y1="300" x2="520" y2="280" stroke="#B00101" stroke-width="3" />
+					<line x1="520" y1="280" x2="570" y2="280" stroke="#B00101" stroke-width="3" />
+					<line x1="570" y1="270" x2="570" y2="290" stroke="#B00101" stroke-width="3" />
+					<line x1="570" y1="270" x2="610" y2="270" stroke="#B00101" stroke-width="3" />
+					<line x1="570" y1="290" x2="610" y2="290" stroke="#B00101" stroke-width="3" />
+					<line x1="610" y1="270" x2="610" y2="290" stroke="#B00101" stroke-width="3" />
+					<line x1="520" y1="420" x2="520" y2="500" stroke="#B00101" stroke-width="3" />
+					<line x1="490" y1="500" x2="550" y2="500" stroke="#B00101" stroke-width="3" />
+					<line x1="490" y1="530" x2="550" y2="530" stroke="#B00101" stroke-width="3" />
+					<line x1="550" y1="500" x2="550" y2="530" stroke="#B00101" stroke-width="3" />
+					<line x1="490" y1="500" x2="490" y2="530" stroke="#B00101" stroke-width="3" />
+					<line x1="520" y1="530" x2="520" y2="620" stroke="#B00101" stroke-width="3" />
+					<line x1="580" y1="500" x2="580" y2="530" stroke="#B00101" stroke-width="3" />
+					<line x1="580" y1="500" x2="640" y2="500" stroke="#B00101" stroke-width="3" />
+					<line x1="640" y1="500" x2="640" y2="530" stroke="#B00101" stroke-width="3" />
+					<line x1="580" y1="530" x2="640" y2="530" stroke="#B00101" stroke-width="3" />
+					<line x1="610" y1="460" x2="610" y2="500" stroke="#B00101" stroke-width="3" />
+					<line x1="610" y1="530" x2="610" y2="570" stroke="#B00101" stroke-width="3" />
+					<line x1="460" y1="500" x2="460" y2="530" stroke="#B00101" stroke-width="3" />
+					<line x1="460" y1="500" x2="400" y2="500" stroke="#B00101" stroke-width="3" />
+					<line x1="400" y1="530" x2="460" y2="530" stroke="#B00101" stroke-width="3" />
+					<line x1="400" y1="500" x2="400" y2="530" stroke="#B00101" stroke-width="3" />
+					<line x1="430" y1="460" x2="430" y2="500" stroke="#B00101" stroke-width="3" />
+					<line x1="430" y1="530" x2="430" y2="570" stroke="#B00101" stroke-width="3" />
+					<line x1="430" y1="620" x2="610" y2="620" stroke="#B00101" stroke-width="3" />
+					<line x1="430" y1="620" x2="430" y2="660" stroke="#B00101" stroke-width="3" />
+					<line x1="610" y1="620" x2="610" y2="660" stroke="#B00101" stroke-width="3" />
+					<line x1="430" y1="690" x2="430" y2="740" stroke="#B00101" stroke-width="3" />
+					<line x1="610" y1="690" x2="610" y2="740" stroke="#B00101" stroke-width="3" />
+					<line x1="510" y1="300" x2="530" y2="300" stroke="#02A434" stroke-width="3" />
+					<line x1="510" y1="330" x2="530" y2="330" stroke="#02A434" stroke-width="3" />
+					<line x1="530" y1="300" x2="530" y2="330" stroke="#02A434" stroke-width="3" />
+					<line x1="510" y1="300" x2="510" y2="330" stroke="#02A434" stroke-width="3" />
+					<line x1="510" y1="390" x2="530" y2="390" stroke="#02A434" stroke-width="3" />
+					<line x1="510" y1="420" x2="530" y2="420" stroke="#02A434" stroke-width="3" />
+					<line x1="530" y1="390" x2="530" y2="420" stroke="#02A434" stroke-width="3" />
+					<line x1="510" y1="390" x2="510" y2="420" stroke="#02A434" stroke-width="3" />
+					<line x1="420" y1="660" x2="440" y2="660" stroke="#02A434" stroke-width="3" />
+					<line x1="420" y1="690" x2="440" y2="690" stroke="#02A434" stroke-width="3" />
+					<line x1="440" y1="660" x2="440" y2="690" stroke="#02A434" stroke-width="3" />
+					<line x1="420" y1="660" x2="420" y2="690" stroke="#02A434" stroke-width="3" />
+					<line x1="600" y1="690" x2="620" y2="690" stroke="#02A434" stroke-width="3" />
+					<line x1="600" y1="660" x2="620" y2="660" stroke="#02A434" stroke-width="3" />
+					<line x1="620" y1="660" x2="620" y2="690" stroke="#02A434" stroke-width="3" />
+					<line x1="600" y1="660" x2="600" y2="690" stroke="#02A434" stroke-width="3" />
+					<text x="577" y="286" fill="#FFFFFF" font-family="Microsoft YaHei UI" font-size="14px">电池</text>
+					<text x="462" y="319" fill="#FFFFFF" font-family="Microsoft YaHei UI" font-size="14px">DK</text>
+					<text x="462" y="410" fill="#FFFFFF" font-family="Microsoft YaHei UI" font-size="14px">ZK</text>
+					<text x="251" y="370" fill="#FFFFFF" font-family="Microsoft YaHei UI" font-size="14px">直流</text>
+					<text x="252" y="479" fill="#FFFFFF" font-family="Microsoft YaHei UI" font-size="14px">直流</text>
+					<text x="252" y="590" fill="#FFFFFF" font-family="Microsoft YaHei UI" font-size="14px">400V</text>
+					<text x="410" y="522" fill="#FFFFFF" font-family="Microsoft YaHei UI" font-size="17px">竖流</text>
+					<text x="500" y="523" fill="#FFFFFF" font-family="Microsoft YaHei UI" font-size="17px">整流</text>
+					<text x="590" y="524" fill="#FFFFFF" font-family="Microsoft YaHei UI" font-size="17px">整流</text>
+					<text x="380" y="681" fill="#FFFFFF" font-family="Microsoft YaHei UI" font-size="14px">13Q</text>
+					<text x="568" y="679" fill="#FFFFFF" font-family="Microsoft YaHei UI" font-size="14px">21Q</text>
+					<text x="386" y="766" fill="#FFFFFF" font-family="Microsoft YaHei UI" font-size="16px">1#380V输入</text>
+					<text x="560" y="766" fill="#FFFFFF" font-family="Microsoft YaHei UI" font-size="16px">2#380V输入</text>
+				</svg>
+		</div>
+		<div class="d-pn-ul">
+			<div class="d-pn-ul-li" :data-active="false" v-for="(item,index) in dataArr" :key="index">{{ item.name }}</div>
+		</div>
+	</div>
+</div>
+</template>
+<script>
+export default {
+	data(){
+		return {
+			dataArr: [
+				{
+					name: '直流屏 一组UPS通讯异常'
+				},
+				{
+					name: '直流屏 一组UPS交流异常'
+				},
+				{
+					name: '直流屏 一组UPS直流异常'
+				},
+				{
+					name: '直流屏 一组UPS内存异常'
+				},
+				{
+					name: '直流屏 一组UPS旁路逆变状态异常'
+				},
+				{
+					name: '直流屏 二组UPS通讯异常'
+				},
+				{
+					name: '直流屏 二组UPS交流异常'
+				},
+				{
+					name: '直流屏 二组UPS直流异常'
+				},
+				{
+					name: '直流屏 二组UPS内存异常'
+				},
+				{
+					name: '直流屏 二组UPS旁路逆变状态异常'
+				},
+			],
+			dotArr: [
+				{
+					name: '一组交流1路Uab电压:',
+					num: 421.70,
+					unit: 'V'
+				},
+				{
+					name: '一组交流1路Uab电压:',
+					num: 421.70,
+					unit: 'V'
+				},
+				{
+					name: '一组交流1路Uab电压:',
+					num: 421.70,
+					unit: 'V'
+				},
+				{
+					name: '一组交流1路Uab电压:',
+					num: 421.70,
+					unit: 'V'
+				},
+				{
+					name: '一组交流1路Uab电压:',
+					num: 421.70,
+					unit: 'V'
+				},
+				{
+					name: '一组交流1路Uab电压:',
+					num: 421.70,
+					unit: 'V'
+				},
+				{
+					name: '一组交流1路Uab电压:',
+					num: 421.70,
+					unit: 'V'
+				},
+				{
+					name: '一组交流1路Uab电压:',
+					num: 421.70,
+					unit: 'V'
+				},
+				{
+					name: '一组交流1路Uab电压:',
+					num: 421.70,
+					unit: 'V'
+				},
+				{
+					name: '一组交流1路Uab电压:',
+					num: 421.70,
+					unit: 'V'
+				},
+				{
+					name: '一组交流1路Uab电压:',
+					num: 421.70,
+					unit: 'V'
+				},
+				{
+					name: '一组交流1路Uab电压:',
+					num: 421.70,
+					unit: 'V'
+				}
+			]
+		}
+	}
+}
+</script>
+<style lang="less" scoped>
+.d-tt{
+	font-size: 24px;
+	color: white;
+	height: 30px;
+	line-height: 30px;
+	text-align: center;
+}
+.d-subtt{
+	font-size: 20px;
+	color: white;
+	height: 24px;
+	line-height: 24px;
+	padding-left: 10px;
+}
+.d-pn{
+	width: 100%;
+	height: 467px;
+	margin-top: 10px;
+	display: flex;
+	border: 2px solid rgba(255,255,255,0.6);
+	.d-pn-tb{
+		width: 88%;
+		overflow: hidden;
+		margin-top: 10px;
+		margin-bottom: 20px;
+		margin-right: 20px;
+		margin-left: 20px;
+		// border: 1px solid rgba(255,255,255,0.6);
+		border-collapse: collapse;
+		td{
+			border: 1px solid rgba(255,255,255,0.6);
+			text-align: right;
+			padding-right: 10px;
+			height: 36px;
+			color: rgba(255,255,255,0.75);
+			font-size: 16px;
+			font-weight: bold;
+			&:last-child{
+				text-align: center;
+			}
+			&:nth-child(2){
+				color: rgb(41, 238, 14);
+			}
+		}
+	}
+	.d-pn-ul{
+		width: 100%;
+		padding: 20px 30px 0 20px;
+		border-left: 2px solid rgba(255,255,255,0.6);
+		display: flex;
+		flex-wrap: wrap;
+		align-items: flex-start;
+		align-content: flex-start;
+		overflow-y: auto;
+		overflow-x: hidden;
+		.d-pn-ul-li{
+			width: 44%;
+			height: 40px;
+			// line-height: 40px;
+			margin-bottom: 20px;
+			background-image: linear-gradient(to bottom, rgb(145, 145, 240),rgb(245, 245, 245),rgb(145, 145, 233));
+			color: rgb(0, 0, 179);
+			text-align: center;
+			border-radius: 6px;
+			margin-right: 10px;
+			display: flex;
+			font-size: 14px;
+			align-items: center;
+			justify-content: center;
+			&[data-active='true']{
+				background-image: linear-gradient(to bottom, red,rgb(243, 136, 128),red);
+				color: rgb(255, 196, 0);
+			}
+		}
+	}
+}
+</style>

+ 3 - 0
src/views/WindSite/components/boosterstation/dwk.vue

@@ -2124,6 +2124,9 @@
 			this.refreshTPData();
 			this.interval = setInterval(this.refreshTPData, 1000);
 		},
+		beforeUnmount(){
+			this.closed()
+		},
 		mounted() {
 			this.$nextTick(() => {
 				if (this.$store.state.themeName === "light") {

+ 3 - 0
src/views/WindSite/components/boosterstation/hzj.vue

@@ -1468,6 +1468,9 @@
 			this.refreshTPData()
 			this.interval = setInterval(this.refreshTPData, 3000)
 		},
+		beforeUnmount(){
+			this.closed()
+		},
 		mounted() {
 			this.$nextTick(() => {
 				if (this.$store.state.themeName === "light") {

+ 3 - 0
src/views/WindSite/components/boosterstation/mch.vue

@@ -2772,6 +2772,9 @@
 			this.refreshTPData()
 			this.interval = setInterval(this.refreshTPData, 3000)
 		},
+		beforeUnmount(){
+			this.closed()
+		},
 		mounted() {
 			this.$nextTick(() => {
 				if (this.$store.state.themeName === "light") {

+ 3 - 0
src/views/WindSite/components/boosterstation/mhs.vue

@@ -3398,6 +3398,9 @@
 			this.refreshTPData();
 			this.interval = setInterval(this.refreshTPData, 1000);
 		},
+		beforeUnmount(){
+			this.closed()
+		},
 		mounted() {
 			this.$nextTick(() => {
 				if (this.$store.state.themeName === "light") {

+ 3 - 0
src/views/WindSite/components/boosterstation/nss.vue

@@ -5422,6 +5422,9 @@
 			this.refreshTPData()
 			this.interval = setInterval(this.refreshTPData, 3000)
 		},
+		beforeUnmount(){
+			this.closed()
+		},
 		mounted() {
 			this.$nextTick(() => {
 				if (this.$store.state.themeName === "light") {

+ 3 - 0
src/views/WindSite/components/boosterstation/pl1.vue

@@ -1864,6 +1864,9 @@
 			this.refreshTPData();
 			this.interval = setInterval(this.refreshTPData, 1000);
 		},
+		beforeUnmount(){
+			this.closed()
+		},
 		mounted() {
 			this.$nextTick(() => {
 				if (this.$store.state.themeName === "light") {

+ 3 - 0
src/views/WindSite/components/boosterstation/pl2.vue

@@ -3513,6 +3513,9 @@
 			this.refreshTPData()
 			this.interval = setInterval(this.refreshTPData, 3000)
 		},
+		beforeUnmount(){
+			this.closed()
+		},
 		mounted() {
 			this.$nextTick(() => {
 				if (this.$store.state.themeName === "light") {

+ 3 - 0
src/views/WindSite/components/boosterstation/qs.vue

@@ -2657,6 +2657,9 @@
 			this.refreshTPData();
 			this.interval = setInterval(this.refreshTPData, 1000);
 		},
+		beforeUnmount(){
+			this.closed()
+		},
 		mounted() {
 			this.$nextTick(() => {
 				if (this.$store.state.themeName === "light") {

+ 3 - 0
src/views/WindSite/components/boosterstation/sbdl.vue

@@ -1857,6 +1857,9 @@
 			this.refreshTPData();
 			this.interval = setInterval(this.refreshTPData, 1000);
 		},
+		beforeUnmount(){
+			this.closed()
+		},
 		mounted() {
 			this.$nextTick(() => {
 				if (this.$store.state.themeName === "light") {

+ 3 - 0
src/views/WindSite/components/boosterstation/sbq.vue

@@ -5228,6 +5228,9 @@
 			this.refreshTPData()
 			this.interval = setInterval(this.refreshTPData, 3000)
 		},
+		beforeUnmount(){
+			this.closed()
+		},
 		mounted() {
 			this.$nextTick(() => {
 				if (this.$store.state.themeName === "light") {

+ 3 - 0
src/views/WindSite/components/boosterstation/xh.vue

@@ -4317,6 +4317,9 @@
 			this.refreshTPData();
 			this.interval = setInterval(this.refreshTPData, 1000);
 		},
+		beforeUnmount(){
+			this.closed()
+		},
 		mounted() {
 			this.$nextTick(() => {
 				if (this.$store.state.themeName === "light") {

+ 3 - 0
src/views/WindSite/components/boosterstation/xs.vue

@@ -3914,6 +3914,9 @@
 			this.refreshTPData();
 			this.interval = setInterval(this.refreshTPData, 1000);
 		},
+		beforeUnmount(){
+			this.closed()
+		},
 		mounted() {
 			this.$nextTick(() => {
 				if (this.$store.state.themeName === "light") {

+ 507 - 0
src/views/WindSite/components/generalappearance/ak.vue

@@ -0,0 +1,507 @@
+<template>
+	<div>
+		<el-row :gutter="10">
+			<el-col :span="24">
+				<previewPicture v-if="datas.length">
+					<template v-slot:svg>
+						<svg class="svg" style="transform:scale(2) translateY(200px) translateX(50px);" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="图层_1" x="0px" y="0px" width="1111.711px" height="550.14px" viewBox="0 0 1111.711 550.14" enable-background="new 0 0 1111.711 550.14" xml:space="preserve">
+						<g id="other">
+							<g>
+								<polygon fill="#B21F63" points="496.003,29.538 502.73400,4.413 509.465,29.538   "/>
+								<rect x="502.734" y="29.538" fill="#B21F63" width="1.537" height="52.888"/>
+								<!-- <rect x="500.114" y="80.427" fill="#B21F63" width="595.531" height="1.537"/> -->
+								<!-- <text transform="matrix(1 0 0 1 1032.9893 52.8999)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="14.048">811</text> -->
+							</g>
+							<g>
+								<!-- <rect x="71.679" y="130.277" fill="#B6065C" width="862.731" height="1.537"/> -->
+								<text transform="matrix(1 0 0 1 455.7104 111.1514)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="14.048"> 811 </text>
+								<g>
+									<rect x="527.506" y="97.923" fill="none" stroke="#4F4B7F" stroke-miterlimit="10" width="58.69" height="23.273"/>
+									<rect x="527.506" y="97.923" opacity="0.7" fill="#212967" enable-background="new    " width="58.69" height="23.273"/>
+									<text transform="matrix(1 0 0 1 534.2002 113.7886)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="14.0484"> #1进线 </text>
+								</g>
+								<rect x="502.734" y="81.964" fill="#B6065C" width="1.537" height="49.883"/>
+								<rect x="502.733" y="131.412" fill="#B6065C" width="1.537" height="14.906"/>
+							</g>
+							<g>
+								<g>
+									
+										<rect x="439.427" y="147.952" fill="none" stroke="#941C54" stroke-width="1.5" stroke-miterlimit="10" width="126.614" height="122.736"/>
+									<text transform="matrix(0.9357 0 0 1 443.7225 159.6318)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="3.4688">01逆变器</text>
+									<rect x="443.566" y="164.421" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.275"/>
+									<rect x="443.566" y="169.04" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.278"/>
+									<rect x="443.566" y="173.659" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.277"/>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 447.3143 167.583)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">功率:</text>
+										<text transform="matrix(0.9357 0 0 1 447.3143 172.1348)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电压:</text>
+										<text transform="matrix(0.9357 0 0 1 447.3143 176.6836)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电流:</text>
+									</g>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 464.0218 167.3525)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">kw</text>
+										<text transform="matrix(0.9357 0 0 1 464.0218 171.9033)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">V</text>
+										<text transform="matrix(0.9357 0 0 1 464.0218 176.4531)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">A</text>
+									</g>
+									
+										<image overflow="visible" enable-background="new    " width="347" height="605" xlink:href="./zm_mw.png" transform="matrix(0.0171 0 0 0.0183 460.5452 151.7188)">
+									</image>
+									<text transform="matrix(0.9357 0 0 1 475.3538 159.6318)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="3.4688">02逆变器</text>
+									<rect x="475.196" y="164.421" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.918" height="4.275"/>
+									<rect x="475.196" y="169.04" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.918" height="4.278"/>
+									<rect x="475.196" y="173.659" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.918" height="4.277"/>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 478.9456 167.583)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">功率:</text>
+										<text transform="matrix(0.9357 0 0 1 478.9456 172.1348)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电压:</text>
+										<text transform="matrix(0.9357 0 0 1 478.9456 176.6836)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电流:</text>
+									</g>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 495.6522 167.3525)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">kw</text>
+										<text transform="matrix(0.9357 0 0 1 495.6522 171.9033)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">V</text>
+										<text transform="matrix(0.9357 0 0 1 495.6522 176.4531)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">A</text>
+									</g>
+									
+										<image overflow="visible" enable-background="new    " width="347" height="605" xlink:href="./zm_mw.png" transform="matrix(0.0171 0 0 0.0183 492.1756 151.7188)">
+									</image>
+									<text transform="matrix(0.9357 0 0 1 506.3104 159.6318)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="3.4688">03逆变器</text>
+									<rect x="506.153" y="164.421" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.918" height="4.275"/>
+									<rect x="506.153" y="169.04" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.918" height="4.278"/>
+									<rect x="506.153" y="173.659" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.918" height="4.277"/>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 509.9022 167.583)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">功率:</text>
+										<text transform="matrix(0.9357 0 0 1 509.9022 172.1348)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电压:</text>
+										<text transform="matrix(0.9357 0 0 1 509.9022 176.6836)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电流:</text>
+									</g>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 526.6097 167.3525)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">kw</text>
+										<text transform="matrix(0.9357 0 0 1 526.6097 171.9033)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">V</text>
+										<text transform="matrix(0.9357 0 0 1 526.6097 176.4531)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">A</text>
+									</g>
+									
+										<image overflow="visible" enable-background="new    " width="347" height="605" xlink:href="./zm_mw.png" transform="matrix(0.0171 0 0 0.0183 523.1321 151.7188)">
+									</image>
+									<text transform="matrix(0.9357 0 0 1 537.2108 159.6318)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="3.4688">04逆变器</text>
+									<rect x="537.053" y="164.421" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.918" height="4.275"/>
+									<rect x="537.053" y="169.04" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.918" height="4.278"/>
+									<rect x="537.053" y="173.659" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.918" height="4.277"/>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 540.8021 167.583)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">功率:</text>
+										<text transform="matrix(0.9357 0 0 1 540.8021 172.1348)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电压:</text>
+										<text transform="matrix(0.9357 0 0 1 540.8021 176.6836)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电流:</text>
+									</g>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 557.5081 167.3525)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">kw</text>
+										<text transform="matrix(0.9357 0 0 1 557.5081 171.9033)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">V</text>
+										<text transform="matrix(0.9357 0 0 1 557.5081 176.4531)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">A</text>
+									</g>
+									
+										<image overflow="visible" enable-background="new    " width="347" height="605" xlink:href="./zm_mw.png" transform="matrix(0.0171 0 0 0.0183 554.0325 151.7188)">
+									</image>
+									<text transform="matrix(0.9357 0 0 1 443.6888 189.5859)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="3.4688">05逆变器</text>
+									<rect x="443.531" y="194.375" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.278"/>
+									<rect x="443.531" y="198.994" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.277"/>
+									<rect x="443.531" y="203.613" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.277"/>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 447.2796 197.5381)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">功率:</text>
+										<text transform="matrix(0.9357 0 0 1 447.2796 202.0889)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电压:</text>
+										<text transform="matrix(0.9357 0 0 1 447.2796 206.6387)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电流:</text>
+									</g>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 463.9871 197.3076)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">kw</text>
+										<text transform="matrix(0.9357 0 0 1 463.9871 201.8574)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">V</text>
+										<text transform="matrix(0.9357 0 0 1 463.9871 206.4072)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">A</text>
+									</g>
+									
+										<image overflow="visible" enable-background="new    " width="347" height="605" xlink:href="./zm_mw.png" transform="matrix(0.0171 0 0 0.0183 460.5096 181.6729)">
+									</image>
+									<text transform="matrix(0.9357 0 0 1 475.3192 189.5859)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="3.4688">06逆变器</text>
+									<rect x="475.161" y="194.375" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.278"/>
+									<rect x="475.161" y="198.994" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.277"/>
+									<rect x="475.161" y="203.613" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.277"/>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 478.9095 197.5381)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">功率:</text>
+										<text transform="matrix(0.9357 0 0 1 478.9095 202.0889)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电压:</text>
+										<text transform="matrix(0.9357 0 0 1 478.9095 206.6387)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电流:</text>
+									</g>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 495.617 197.3076)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">kw</text>
+										<text transform="matrix(0.9357 0 0 1 495.617 201.8574)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">V</text>
+										<text transform="matrix(0.9357 0 0 1 495.617 206.4072)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">A</text>
+									</g>
+									
+										<image overflow="visible" enable-background="new    " width="347" height="605" xlink:href="./zm_mw.png" transform="matrix(0.0171 0 0 0.0183 492.1404 181.6729)">
+									</image>
+									<text transform="matrix(0.9357 0 0 1 506.2752 189.5859)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="3.4688">07逆变器</text>
+									<rect x="506.118" y="194.375" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.278"/>
+									<rect x="506.118" y="198.994" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.277"/>
+									<rect x="506.118" y="203.613" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.277"/>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 509.867 197.5381)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">功率:</text>
+										<text transform="matrix(0.9357 0 0 1 509.867 202.0889)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电压:</text>
+										<text transform="matrix(0.9357 0 0 1 509.867 206.6387)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电流:</text>
+									</g>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 526.5736 197.3076)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">kw</text>
+										<text transform="matrix(0.9357 0 0 1 526.5736 201.8574)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">V</text>
+										<text transform="matrix(0.9357 0 0 1 526.5736 206.4072)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">A</text>
+									</g>
+									
+										<image overflow="visible" enable-background="new    " width="347" height="605" xlink:href="./zm_mw.png" transform="matrix(0.0171 0 0 0.0183 523.097 181.6729)">
+									</image>
+									<text transform="matrix(0.9357 0 0 1 537.1751 189.5859)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="3.4688">08逆变器</text>
+									<rect x="537.018" y="194.375" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.918" height="4.278"/>
+									<rect x="537.018" y="198.994" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.918" height="4.277"/>
+									<rect x="537.018" y="203.613" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.918" height="4.277"/>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 540.7669 197.5381)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">功率:</text>
+										<text transform="matrix(0.9357 0 0 1 540.7669 202.0889)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电压:</text>
+										<text transform="matrix(0.9357 0 0 1 540.7669 206.6387)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电流:</text>
+									</g>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 557.4744 197.3076)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">kw</text>
+										<text transform="matrix(0.9357 0 0 1 557.4744 201.8574)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">V</text>
+										<text transform="matrix(0.9357 0 0 1 557.4744 206.4072)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">A</text>
+									</g>
+									
+										<image overflow="visible" enable-background="new    " width="347" height="605" xlink:href="./zm_mw.png" transform="matrix(0.0171 0 0 0.0183 553.9979 181.6729)">
+									</image>
+									<text transform="matrix(0.9357 0 0 1 443.6888 219.124)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="3.4688">09逆变器</text>
+									<rect x="443.531" y="223.913" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.278"/>
+									<rect x="443.531" y="228.532" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.278"/>
+									<rect x="443.531" y="233.15" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.279"/>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 447.2796 227.0752)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">功率:</text>
+										<text transform="matrix(0.9357 0 0 1 447.2796 231.626)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电压:</text>
+										<text transform="matrix(0.9357 0 0 1 447.2796 236.1758)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电流:</text>
+									</g>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 463.9871 226.8438)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">kw</text>
+										<text transform="matrix(0.9357 0 0 1 463.9871 231.3945)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">V</text>
+										<text transform="matrix(0.9357 0 0 1 463.9871 235.9443)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">A</text>
+									</g>
+									
+										<image overflow="visible" enable-background="new    " width="347" height="605" xlink:href="./zm_mw.png" transform="matrix(0.0171 0 0 0.0183 460.5106 211.2104)">
+									</image>
+									<text transform="matrix(0.9357 0 0 1 475.3192 219.124)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="3.4688">10逆变器</text>
+									<rect x="475.161" y="223.913" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.918" height="4.278"/>
+									<rect x="475.161" y="228.532" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.918" height="4.278"/>
+									<rect x="475.161" y="233.15" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.918" height="4.279"/>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 478.9095 227.0752)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">功率:</text>
+										<text transform="matrix(0.9357 0 0 1 478.9095 231.626)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电压:</text>
+										<text transform="matrix(0.9357 0 0 1 478.9095 236.1758)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电流:</text>
+									</g>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 495.617 226.8438)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">kw</text>
+										<text transform="matrix(0.9357 0 0 1 495.617 231.3945)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">V</text>
+										<text transform="matrix(0.9357 0 0 1 495.617 235.9443)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">A</text>
+									</g>
+									
+										<image overflow="visible" enable-background="new    " width="347" height="605" xlink:href="./zm_mw.png" transform="matrix(0.0171 0 0 0.0183 492.1404 211.2104)">
+									</image>
+									<text transform="matrix(0.9357 0 0 1 506.2752 219.124)" fill="#FFFFFF" font-family="'MicrosoftYaHei'" font-size="3.4688">11逆变器</text>
+									<rect x="506.118" y="223.913" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.278"/>
+									<rect x="506.118" y="228.532" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.278"/>
+									<rect x="506.118" y="233.15" opacity="0.9" fill="#1B2522" enable-background="new    " width="24.917" height="4.279"/>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 509.867 227.0752)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">功率:</text>
+										<text transform="matrix(0.9357 0 0 1 509.867 231.626)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电压:</text>
+										<text transform="matrix(0.9357 0 0 1 509.867 236.1758)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">电流:</text>
+									</g>
+									<g>
+										<text transform="matrix(0.9357 0 0 1 526.5736 226.8438)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">kw</text>
+										<text transform="matrix(0.9357 0 0 1 526.5736 231.3945)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">V</text>
+										<text transform="matrix(0.9357 0 0 1 526.5736 235.9443)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">A</text>
+									</g>
+									
+										<image overflow="visible" enable-background="new    " width="347" height="605" xlink:href="./zm_mw.png" transform="matrix(0.0171 0 0 0.0183 523.097 211.2104)">
+									</image>
+								</g>
+							</g>
+						</g>
+						<g id="sc">
+							<rect x="498.734" y="35.898" fill="#ED2024" width="9.836" height="18.318"/>
+							<rect x="495.033" y="89.119" :fill="ajaxData.akdi010? red: green" width="16.937" height="30.677"/>
+							<!-- <rect x="494.721" y="323.04" fill="#02A434" width="16.937" height="30.677"/> -->
+						</g>
+						<g id="data">
+
+							<!-- <text transform="matrix(0.9357 0 0 1 464.0218 167.3525)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">kw</text>
+							<text transform="matrix(0.9357 0 0 1 464.0218 171.9033)" fill="#929CA0" font-family="'MicrosoftYaHei'" font-size="2.3134">V</text>
+							<text transform="matrix(0.9357 0 0 1 464.0218 176.4531) -->
+							<g id="_x23_1">
+								<g>
+									<text transform="matrix(1 0 0 1 454.0218 167.3525)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[0].gl}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 454.0218 171.9033)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[0].dy}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 454.0218 176.4531)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[0].dl}}</text>
+								</g>
+							</g>
+							<g id="_x23_2">
+								<g>
+									<text transform="matrix(1 0 0 1 485.6522 167.3525)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[1].gl}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 485.6522 171.9033)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[1].dy}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 485.6522 176.4531)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[1].dl}}</text>
+								</g>
+							</g>
+							<g id="_x23_3">
+								<g>
+									<text transform="matrix(1 0 0 1 516.6097 167.3525)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[2].gl}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 516.6097 171.9033)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[2].dy}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 516.6097 176.4531)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[2].dl}}</text>
+								</g>
+							</g>
+							<g id="_x23_4">
+								<g>
+									<text transform="matrix(1 0 0 1 547.5081 167.3525)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[3].gl}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 547.5081 171.9033)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[3].dy}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 547.5081 176.4531)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[3].dl}}</text>
+								</g>
+							</g>
+							<g id="_x23_5">
+								<g>
+									<text transform="matrix(1 0 0 1 453.9871 197.3076)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[4].gl}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 453.9871 201.8574)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[4].dy}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 453.9871 206.4072)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[4].dl}}</text>
+								</g>
+							</g>
+							<g id="_x23_6">
+								<g>
+									<text transform="matrix(1 0 0 1 485.6175 197.3076)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[5].gl}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 485.6175 201.8574)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[5].dy}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 485.6175 206.4072)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[5].dl}}</text>
+								</g>
+							</g>
+							<g id="_x23_7">
+								<g>
+									<text transform="matrix(1 0 0 1 517.2479 197.3076)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[6].gl}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 517.2479 201.8574)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[6].dy}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 517.2479 206.4072)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[6].dl}}</text>
+								</g>
+							</g>
+							<g id="_x23_8">
+								<g>
+									<text transform="matrix(1 0 0 1 548.8783 197.3076)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[7].gl}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 548.8783 201.8574)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[7].dy}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 548.8783 206.4072)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[7].dl}}</text>
+								</g>
+							</g>
+							<g id="_x23_9">
+								<g>
+									<text transform="matrix(1 0 0 1 453.9871 226.8438)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[8].gl}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 453.9871 231.3945)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[8].dy}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 453.9871 235.9443)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[8].dl}}</text>
+								</g>
+							</g>
+							<g id="_x23_10">
+								<g>
+									<text transform="matrix(1 0 0 1 485.617 226.8438)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[9].gl}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 485.617 231.3945)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[9].dy}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 485.617 235.9443)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[9].dl}}</text>
+								</g>
+							</g>
+							<g id="_x23_11">
+								<g>
+									<text transform="matrix(1 0 0 1 516.5736 226.8438)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[10].gl}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 516.5736 231.3945)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[10].dy}}</text>
+								</g>
+								<g>
+									<text transform="matrix(1 0 0 1 516.5736 235.9443)" fill="#3B8646" font-family="'MicrosoftYaHei'" font-size="2.3134">{{datas[10].dl}}</text>
+								</g>
+							</g>
+						</g>
+						</svg>
+					</template>
+				</previewPicture>
+			</el-col>
+		</el-row>
+	</div>
+</template>
+<script>  //431.055
+	import previewPicture from "../previewPicture.vue";
+	import {BoosterStation} from "../boosterstation/BoosterStation";
+	import $ from "jquery";
+	export default {
+		components: {
+			previewPicture,
+		},
+
+		props: {
+			data: Array,
+			zmmap: Object,
+		},
+
+		data() {
+			return {
+				//   graph: null,
+				green: "#02A434",
+				red: "#FF0000",
+				datas: [],
+				dgIds: [],
+				ajaxData: {},
+				interval: "",
+			};
+		},
+		created() {
+			this.boosterStation = new BoosterStation();
+			this.refreshTPData();
+			this.interval = setInterval(this.refreshTPData, 1000);
+		},
+		beforeUnmount(){
+			this.closed()
+		},
+		methods: {
+			// 渲染每个机箱的表格参数
+			renderData(data) {
+				// 取出开关的 DOM
+				// const switchDom = $("#sc").find("rect");
+				// 遍历数据,首先取出开关单独写逻辑渲染颜色,除了开关以外的就是每个机箱的数据
+				for (let key in data) {
+					const item = data[key]
+					if(this.datas[Number(key.substring(2,4))-1]===undefined){
+						this.datas[Number(key.substring(2,4))-1] = {
+							gl: 0,
+							dy: 0,
+							dl: 0
+						}
+					}
+					this.datas[Number(key.substring(2,4))-1][key.substring(4)] = data[key]
+
+					// 渲染开关
+					// const item = data[key];
+					// if (key === "hzj105") {
+					// 	switchDom.eq(0).attr("fill", item ? this.green : this.red);
+					// } else if (key === "hzj361") {
+					// 	switchDom.eq(1).attr("fill", item ? this.green : this.red);
+					// } else if (key === "hzj362") {
+					// 	switchDom.eq(2).attr("fill", item ? this.green : this.red);
+					// } else {
+					// 	const dgDom = $('#alldata').find('#data'+key.slice(3,5)).find('g').eq(parseInt(key.slice(5,7)) - 1).find('text');
+					// 	if (dgDom && key.indexOf("dl") !== -1) {
+					// 		dgDom.eq(0).html(item);
+					// 	} else if (dgDom && key.indexOf("dy") !== -1) {
+					// 		dgDom.eq(1).html(item);
+					// 	} else if (dgDom && key.indexOf("gl") !== -1) {
+					// 		dgDom.eq(2).html(item);
+					// 	}
+					// }
+				}
+
+				// 给电柜上个色呗
+				// this.dgIds.forEach((dgId) => {
+				// 	const dgDom = $("#diangui_" + dgId + "_").find("polygon");
+
+				// 	for (let i = 0; i < dgDom.length; i++) {
+				// 		dgDom.eq(i).attr("fill", this.getColor());
+				// 	}
+				// });
+			},
+
+			randomNum(minNum, maxNum) {
+				switch (arguments.length) {
+					case 1:
+						return parseInt(Math.random() * minNum + 1, 10);
+					case 2:
+						return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
+					default:
+						return 0;
+				}
+			},
+			closed() {
+        clearInterval(this.interval);
+			},
+			refreshTPData() {
+					this.boosterStation.getDatas("AK_GDC_AKDI010", this.bindValue);
+			},
+			bindValue(msg) {
+					this.ajaxData = msg;
+			},
+			getColor() {
+				return "#fff";
+			}
+		},
+
+		watch: {
+			// 风机数据
+			data(value) {
+				// this.datas = value;
+			},
+
+			// 总貌数据
+			zmmap(value) {
+				this.renderData(value);
+			},
+		},
+	};
+</script>
+
+<style scoped>
+	.center-bar {
+		position: relative;
+		box-sizing: border-box;
+		height: 90vh;
+		background-color: #000000;
+		padding-top: 10px;
+		padding-left: 5px;
+		padding-right: 5px;
+		padding-bottom: 5px;
+		margin-top: 0;
+		margin-right: 0;
+		margin-bottom: 3px;
+		margin-left: 0;
+		display: flex;
+		flex-direction: column;
+	}
+
+	.svg {
+		margin-left: 5%;
+		width: 90%;
+		height: 90%;
+	}
+	.light #other text[font-size="14.048"],
+	.light #other text[font-size="3.4688"]{
+		fill:#000000;
+	}
+	.light #alldata text{
+		fill:#FFFFFF;
+	}
+</style>

+ 0 - 1
src/views/WindSite/components/generalappearance/hzj.vue

@@ -5220,7 +5220,6 @@
 
 			// 总貌数据
 			zmmap(value) {
-				console.log(value)
 				this.renderData(value);
 			},
 		},

+ 26 - 22
src/views/WindSite/components/previewPicture.vue

@@ -159,34 +159,35 @@ export default {
         let maxWidth = MaxWidth;
         //  显示时 初始 最大高度
         let maxHeight = MaxHeight;
+        const path = e.path || (e.composedPath && e.composedPath());
         if (
-          e.path[0].naturalWidth <= maxWidth &&
-          e.path[0].naturalHeight <= maxHeight
+          path[0].naturalWidth <= maxWidth &&
+          path[0].naturalHeight <= maxHeight
         ) {
-          _this[StrWidth] = e.path[0].naturalWidth + "px";
-          _this[StrHeight] = e.path[0].naturalHeight + "px";
+          _this[StrWidth] = path[0].naturalWidth + "px";
+          _this[StrHeight] = path[0].naturalHeight + "px";
         } else {
-          _this[StrWidth] = e.path[0].naturalWidth + "px";
-          _this[StrHeight] = e.path[0].naturalHeight + "px";
+          _this[StrWidth] = path[0].naturalWidth + "px";
+          _this[StrHeight] = path[0].naturalHeight + "px";
           if (
-            e.path[0].naturalWidth > maxWidth &&
-            e.path[0].naturalHeight <= maxHeight
+            path[0].naturalWidth > maxWidth &&
+            path[0].naturalHeight <= maxHeight
           ) {
-            let ratio = e.path[0].naturalWidth / e.path[0].naturalHeight;
+            let ratio = path[0].naturalWidth / path[0].naturalHeight;
             _this[StrWidth] = "1600px";
             _this[StrHeight] = maxWidth / ratio + "px";
           } else if (
-            e.path[0].naturalWidth <= maxWidth &&
-            e.path[0].naturalHeight > maxHeight
+            path[0].naturalWidth <= maxWidth &&
+            path[0].naturalHeight > maxHeight
           ) {
-            let ratio = e.path[0].naturalWidth / e.path[0].naturalHeight;
+            let ratio = path[0].naturalWidth / path[0].naturalHeight;
             _this[StrWidth] = maxHeight * ratio + "px";
             _this[StrHeight] = "800px";
           } else if (
-            e.path[0].naturalWidth > maxWidth &&
-            e.path[0].naturalHeight > maxHeight
+            path[0].naturalWidth > maxWidth &&
+            path[0].naturalHeight > maxHeight
           ) {
-            let ratio = e.path[0].naturalWidth / e.path[0].naturalHeight;
+            let ratio = path[0].naturalWidth / path[0].naturalHeight;
             let w = maxWidth;
             let h = w / ratio;
             if (h > maxHeight) {
@@ -260,7 +261,8 @@ export default {
         var oldHeight = this.offsetHeight;
         var oldLeft = this.offsetLeft;
         var oldTop = this.offsetTop;
-        var parent = oEvent.path[2];
+        const path = oEvent.path || (oEvent.composedPath && oEvent.composedPath());
+        var parent = path[2];
         // 获取父元素距离页面可视区域的位置
         var parentLeft = parent.getBoundingClientRect().left;
         var parentTop = parent.getBoundingClientRect().top;
@@ -361,8 +363,9 @@ export default {
           isdrag = true;
           oDragObj = oDragHandle;
           // 父元素宽高
-          let width = e.path[2].offsetWidth;
-          let height = e.path[2].offsetHeight;
+          const path = e.path || (e.composedPath && e.composedPath());
+          let width = path[2].offsetWidth;
+          let height = path[2].offsetHeight;
           // 这里判断第一次获取不到style 样式 默认为 居中50%
           if (oDragObj.style.top == "") {
             nTY = 0;
@@ -418,9 +421,9 @@ export default {
         if (isdrag) {
           this.equipmentKey = key;
           // console.log("thisequipmentKey", this.equipmentKey);
-
-          let widthItem = e.path[1].style.width.split("p");
-          let heightItem = e.path[1].style.height.split("p");
+          const path = e.path || (e.composedPath && e.composedPath());
+          let widthItem = path[1].style.width.split("p");
+          let heightItem = path[1].style.height.split("p");
           let width = widthItem[0];
           // eslint-disable-next-line no-unused-vars
           let height = heightItem[0];
@@ -464,7 +467,8 @@ export default {
           isdrag = true;
           oDragObj = oDragHandle;
           // 父元素宽高
-          let width = e.path[1].offsetWidth;
+          const path = e.path || (e.composedPath && e.composedPath());
+          let width = path[1].offsetWidth;
           // let height = e.path[1].offsetHeight;
           // console.log(width, height);
           // console.log("oDragObj.style", oDragObj.style);

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

@@ -41,8 +41,11 @@
     <!-- 马场湖 -->
     <MCH class="booster-station-body" v-if="wpId === 'MCH_GDC'" />
 	
-	<!-- 海子井 -->
-	<HZJ class="booster-station-body" v-if="wpId === 'HZJ_GDC'" />
+    <!-- 海子井 -->
+    <HZJ class="booster-station-body" v-if="wpId === 'HZJ_GDC'" />
+
+    <!-- 埃肯 -->
+    <AK class="booster-station-body" v-if="wpId === 'AK_GDC'" />
   </div>
 </template>
 
@@ -60,6 +63,7 @@ import PL2 from "../components/boosterstation/pl2.vue";
 import XH from "../components/boosterstation/xh.vue";
 import MCH from "../components/boosterstation/mch.vue";
 import HZJ from "../components/boosterstation/hzj.vue";
+import AK from '../components/boosterstation/ak.vue'
 export default {
   // 名称
   name: "BoosterStation",
@@ -77,7 +81,8 @@ export default {
     PL2,
     XH,
     MCH,
-	HZJ
+    HZJ,
+    AK,
   },
   // 数据
   data() {

+ 2 - 2
src/views/WindSite/pages/DraughtFanList.vue

@@ -4,7 +4,7 @@
       <BtnGroup2 :btnGroups="btnGroupsss" :rowIndex="rowIndex" :index="selectIndex" @select="select"></BtnGroup2>
     </div>
     <div class="df-table">
-      <table-2 :data="data" :height="'100%'" @headerClick="headerClick"></table-2>
+      <table-2 :data="data" :height="'90%'" @headerClick="headerClick"></table-2>
     </div>
   </div>
 </template>
@@ -397,7 +397,7 @@ export default {
         { name: "日发电量", field: "RFDL" },
         { name: "月发电量", field: "YFDL" },
         { name: "年发电量", field: "NFDL" },
-        { name: "累计发电量", field: "AIG064" },
+        { name: "累计发电量", field: "AI064" },
       ];
       this.data = { data: res.data.data, column: column };
     },

+ 4 - 2
src/views/WindSite/pages/GeneralAppearance.vue

@@ -58,6 +58,7 @@
 			<PL2 class="general-appearance-body" :data="fjmap" :zmmap="zmmap" v-if="wpId === 'PL2_GDC'" />
 			<MCH class="general-appearance-body" :data="fjmap" :zmmap="zmmap" v-if="wpId === 'MCH_GDC'" />
 			<HZJ class="general-appearance-body" :data="fjmap" :zmmap="zmmap" v-if="wpId === 'HZJ_GDC'" />
+			<AK class="general-appearance-body" :data="fjmap" :zmmap="zmmap" v-if="wpId === 'AK_GDC'" />
 		</div>
 	</div>
 </template>
@@ -75,6 +76,7 @@
 	import PL2 from "../components/generalappearance/pl2.vue";
 	import MCH from "../components/generalappearance/mch.vue";
 	import HZJ from "../components/generalappearance/hzj.vue";
+	import AK from "../components/generalappearance/ak.vue";
 	export default {
 		// 名称
 		name: "GeneralAppearance",
@@ -91,7 +93,8 @@
 			PL1,
 			PL2,
 			MCH,
-			HZJ
+			HZJ,
+			AK
 		},
 		// 数据
 		data() {
@@ -184,7 +187,6 @@
 						if (res.code == 200) {
 							that.wpnumMap = res.data.fczbmap.jczbmap;
 							that.fjmap = res.data.fjmap[0];
-							console.log(that.fjmap)
 							that.zmmap = res.data.zmmap;
 						}
 					},

+ 90 - 0
src/views/WindSite/pages/Home/stationJson/AK_GDC.js

@@ -0,0 +1,90 @@
+export default [
+  {
+    id: "root",
+    name: "埃肯光电场",
+    type: "img",
+    image: "stationimg",
+    x: 10,
+    y: 30,
+  },
+  //1号线路
+  {
+    id: "AK01_01",
+    type: "circle",
+    x: 120,
+    y: 60,
+    connects: ["root"],
+  },
+  {
+    id: "AK01_02",
+    type: "circle",
+    x: 160,
+    y: 60,
+    connects: ["AK01_01"],
+  },
+  {
+    id: "AK01_03",
+    type: "circle",
+    x: 200,
+    y: 60,
+    connects: ["AK01_02"],
+  },
+  {
+    id: "AK01_04",
+    type: "circle",
+    x: 240,
+    y: 60,
+    connects: ["AK01_03"],
+  },
+  {
+    id: "AK01_05",
+    type: "circle",
+    x: 280,
+    y: 60,
+    connects: ["AK01_04"],
+  },
+  {
+    id: "AK01_06",
+    type: "circle",
+    x: 320,
+    y: 60,
+    connects: ["AK01_05"],
+  },
+ //二号线路
+  {
+    id: "AK01_07",
+    type: "circle",
+    x: 120,
+    y: 120,
+    connects: ["root"],
+  },
+  {
+    id: "AK01_08",
+    type: "circle",
+    x: 160,
+    y: 120,
+    connects: ["AK01_07"],
+  },
+  {
+    id: "AK01_09",
+    type: "circle",
+    x: 200,
+    y: 120,
+    connects: ["AK01_08"],
+  },
+  {
+    id: "AK01_10",
+    type: "circle",
+    x: 240,
+    y: 120,
+    connects: ["AK01_09"],
+  },
+  {
+    id: "AK01_11",
+    type: "circle",
+    x: 280,
+    y: 120,
+    connects: ["AK01_10"],
+  },
+
+]

+ 31 - 24
src/views/WindSite/pages/Inverter-Info.vue

@@ -24,7 +24,8 @@
             <div class="other">逆变器型号:{{info.modelid}}</div>
             <div class="state">
               状态:
-              <div class="dot" :class="stateColor"></div>
+              <!-- <div class="dot" :class="stateColor"></div> -->
+              <div :class="stateColor">{{statusDesc}}</div>
             </div>
           </div>
           <!-- <div class="title-tools">
@@ -50,8 +51,8 @@
                   </table>
                 </div>
                 <div>
-                  <panel class="line-panel" :title="'开网频率'">
-                    <multiple-line-chart :list="lineValue" :units="['']" height="100%" />
+                  <panel class="line-panel" :title="'功率曲线图'">
+                    <multiple-line-chart :list="lineValue" :units="['单位:Kw', '(min)']" height="100%" />
                   </panel>
                 </div>
               </div>
@@ -59,11 +60,11 @@
                 <div class="counts">
                   <div class="all">
                     <span class="text">全部状态</span>
-                    <span class="value">30</span>
+                    <span class="value">{{ diAll.length }}</span>
                   </div>
                   <div class="error">
                     <span class="text">报警状态</span>
-                    <span class="value">30</span>
+                    <span class="value">{{ warnCount }}</span>
                   </div>
                 </div>
                 <div class="state-list">
@@ -88,8 +89,6 @@
 </template>
 
 <script>
-// import BtnGroup2 from "@com/coms/btn/btn-group-double.vue";
-import List from "@com/coms/list/list.vue";
 import Panel from "../../../components/coms/panel/panel.vue";
 import MultipleLineChart from "../../../components/chart/line/multiple-line-chart.vue";
 import collapseList from "@/components/coms/collapse/collapse-list.vue";
@@ -98,8 +97,6 @@ export default {
   name: "Box",
   // 使用组件
   components: {
-    // BtnGroup2,
-    List,
     Panel,
     MultipleLineChart,
     collapseList
@@ -111,8 +108,10 @@ export default {
       timmer1: null,
       WindSites: [],
       diAll: [],
+      warnCount: 0,
       diOn: [],
       info: {},
+      statusDesc: '运行',
       stateColor: "blue",
       list: {
         title: "逆变器列表",
@@ -141,17 +140,13 @@ export default {
   // 函数
   methods: {
     selectList: function(item) {
-      console.log(item);
     },
     select: function(item) {
-      console.log(item);
     },
     onReturn: function() {
-      console.log("return");
     },
     // 点击左侧菜单
     clickMenu(res) {
-      // console.log(res);
       this.wpId = res.wpId;
       this.wtId = res.wtId;
       this.$router.replace(`/monitor/windsite/inverter-info/${res.wpId}/${res.wtId}`);
@@ -161,13 +156,11 @@ export default {
     async buildSelectList() {
       let res = await this.API.requestData({
         method: "POST",
-        // baseURL: "http://localhost:8082/",
         subUrl: "matrix/findPVSimpleMatrixAll"
       });
       let WindSites = [];
       res.data.data.forEach((ele, index) => {
         ele.inverterls.forEach(function(inver) {
-          // inver["text"] = inver["wtnum"];
           inver["text"] = inver["wtnum"];
           inver["color"] = "blue";
           inver["id"] = inver["wtId"];
@@ -184,7 +177,6 @@ export default {
     async getData() {
       let res = await this.API.requestData({
         method: "POST",
-        // baseURL: "http://localhost:8082/",
         subUrl: "monitorinverter/findInverterInfo",
         data: {
           wtId: this.wtId
@@ -207,13 +199,16 @@ export default {
       if (res.data.data.listDI) {
         this.diAll = res.data.data.listDI.allList;
         this.diOn = res.data.data.listDI.onList;
+        this.warnCount = 0;
+        this.diAll.forEach(item => {
+          item.value == 1 ? this.warnCount += 1 : this.warnCount;
+        })
       }
       this.info = res.data.data.info;
     },
     async getLineChart() {
       let res = await this.API.requestData({
         method: "POST",
-        // baseURL: "http://localhost:8082/",
         subUrl: "monitorinverter/findInverterPowerLine",
         data: {
           wtId: this.wtId
@@ -253,6 +248,7 @@ export default {
         });
       }
       that.stateColor = that.getColor(ztmap[that.wtId]);
+      that.statusDesc = that.getDesc(ztmap[that.wtId])
       if (this.WindSites) {
         this.WindSites.forEach(function(ws) {
           if (ws.children) {
@@ -267,25 +263,36 @@ export default {
       switch (fjzt) {
         case 0:
           return "green";
-          break;
         case 1:
           return "blue";
-          break;
         case 2:
           return "red";
-          break;
         case 3:
           return "gray";
-          break;
         case 4:
           return "orange";
-          break;
         case 5:
           return "purple";
-          break;
         case 6:
           return "write";
-          break;
+      }
+    },
+    getDesc(fjzt) {
+      switch (fjzt) {
+        case 0:
+          return "待机";
+        case 1:
+          return "运行";
+        case 2:
+          return "故障";
+        case 3:
+          return "中断";
+        case 4:
+          return "维护";
+        case 5:
+          return "限电";
+        case 6:
+          return "受累";
       }
     }
   },

+ 21 - 20
src/views/WindSite/pages/Map.vue

@@ -66,6 +66,7 @@
       <XHGDC wpId="XH_GDC" v-if="wpId.indexOf('XH_GDC') !== -1" />
       <MCHGDC wpId="MCH_GDC" v-if="wpId.indexOf('MCH_GDC') !== -1" />
       <HZJGDC wpId="HZJ_GDC" v-if="wpId.indexOf('HZJ_GDC') !== -1" />
+      <AKGDC wpId="AK_GDC" v-if="wpId.indexOf('AK_GDC') !== -1" />
       <div class="map-popup-panel" v-show="showPopup">
         <!-- <div class="map-popup-panel-header">
           <div class="map-popup-panel-title green">
@@ -185,6 +186,7 @@ import DWKGDC from "@com/arcgis/DWK_GDC.vue";
 import XHGDC from "@com/arcgis/XH_GDC.vue";
 import MCHGDC from "@com/arcgis/MCH_GDC.vue";
 import HZJGDC from "@com/arcgis/HZJ_GDC.vue";
+import AKGDC from '@com/arcgis/AK_GDC.vue'
 import dataService from "@/helper/data.js";
 
 export default {
@@ -203,6 +205,7 @@ export default {
     XHGDC,
     MCHGDC,
     HZJGDC,
+    AKGDC,
   },
   // 数据
   data() {
@@ -253,8 +256,8 @@ export default {
   created() {
     let that = this;
     that.wpId = that.$route.params.wpId;
-    that.$nextTick(() => {
-      that.getWp();
+    that.$nextTick(async () => {
+      await that.getWp();
       that.requestData();
     });
   },
@@ -265,9 +268,9 @@ export default {
         path: `/monitor/windsite/map/${res.code}`,
       });
     },
-    getWp() {
+    async getWp() {
       let that = this;
-      that.API.requestData({
+      await that.API.requestData({
         method: "GET",
         subUrl: "powercompare/windfarmAllAjax",
         success(res) {
@@ -276,10 +279,10 @@ export default {
               icon: "svg-wind-site",
               btns: [],
             },
-            {
-              icon: "svg-photovoltaic",
-              btns: [],
-            },
+            // {
+            //   icon: "svg-photovoltaic",
+            //   btns: [],
+            // },
           ];
 
           res.data.forEach((ele, index) => {
@@ -289,13 +292,17 @@ export default {
                 code: ele.id,
               });
             } else {
-              btnGroup[1].btns.push({
-                text: ele.name,
-                code: ele.id,
-              });
+              // btnGroup[1].btns.push({
+              //   text: ele.name,
+              //   code: ele.id,
+              // });
             }
           });
-
+          const findIndex = btnGroup[0].btns.findIndex(o => o.code === that.wpId)
+          if(findIndex===-1){
+            that.wpId = btnGroup[0].btns[0].code
+            that.select(btnGroup[0].btns[0])
+          }
           that.btnGroups = btnGroup;
           that.renderBtnActiveIndex();
         },
@@ -312,8 +319,6 @@ export default {
         },
         success(res) {
           if (res.code == 200) {
-			  console.log(res)
-			  
             that.wpnumMap = res.data.fczbmap.jczbmap;
             that.wpInfoMap = res.data.wxssmap;
             that.fjmap = res.data.fjmap[0];
@@ -332,19 +337,15 @@ export default {
       });
     },
 
-    clickMap: function (info) {
-      //   this.showPopup = true;
-    },
+    clickMap: function (info) {},
     clickFan: function (code) {
       let wtId = code.replace("G", "G01_");
       this.$router.push(`/monitor/windsite/info/${this.wpId}/${wtId}`);
-      //   this.showPopup = true;
     },
     popupBack: function () {
       this.showPopup = false;
     },
     clickMapTool: function (index) {
-      //   this.mapToolIndex = index;
       this.showPopup = !this.showPopup;
     },
   },

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

@@ -352,7 +352,7 @@ export default {
 .tower {
   position: relative;
   width: 100%;
-  height: 100%;
+  height: 95%;
   overflow: hidden;
 
   .windmill-1,

+ 282 - 0
src/views/alarmCenter/gfAlarm.vue

@@ -0,0 +1,282 @@
+<template>
+  <div>
+    <div class="query mg-b-8">
+      <div class="query-items">
+        <div class="query-item">
+          <div class="lable">光伏:</div>
+          <div class="search-input">
+            <el-select
+              v-model="stationId"
+              clearable
+              placeholder="请选择"
+              popper-class="select"
+            >
+              <el-option
+                v-for="item in ChangZhan"
+                :key="item.id"
+                :value="item.id"
+                :label="item.stationName"
+              ></el-option>
+            </el-select>
+          </div>
+        </div>
+        <div class="query-item">
+          <div class="lable">描述:</div>
+          <div class="search-input">
+            <el-input v-model="alarmDesc" placeholder="报警描述"></el-input>
+          </div>
+        </div>
+        <div class="query-item">
+          <div class="lable">等级:</div>
+          <div class="search-input">
+            <el-select
+              v-model="level"
+              clearable
+              placeholder="请选择"
+              popper-class="select"
+            >
+              <el-option
+                v-for="item in levelArray"
+                :key="item.id"
+                :value="item.id"
+                :label="item.name"
+              />
+            </el-select>
+          </div>
+        </div>
+        <div class="query-item">
+          <div class="lable">开始日期:</div>
+          <div class="search-input">
+            <el-date-picker
+              v-model="startDate"
+              type="datetime"
+              placeholder="开始日期"
+              popper-class="date-select"
+              value-format="YYYY-MM-DD HH:mm:ss"
+            ></el-date-picker>
+          </div>
+        </div>
+        <div class="query-item">
+          <div class="lable">结束日期:</div>
+          <div class="search-input">
+            <el-date-picker
+              v-model="endDate"
+              type="datetime"
+              placeholder="开始日期"
+              popper-class="date-select"
+              value-format="YYYY-MM-DD HH:mm:ss"
+            ></el-date-picker>
+          </div>
+        </div>
+        <div class="query-actions">
+          <button class="btn green" @click="getTable()">查询</button>
+          <button class="btn green" @click="exportExcel()">导出</button>
+        </div>
+      </div>
+    </div>
+    <div class="table-box">
+      <div class="title">光伏报警</div>
+      <ComTable
+        ref="curRef"
+        :data="tableData"
+        :pageSize="20"
+        @onPagging="onChangePage"
+        @sizeChange="sizeChange"
+        @pageClick="pageClick"
+        height="68vh"
+        v-loading="tableLoading"
+        element-loading-text="拼命加载中.."
+        element-loading-background="rgba(0, 0, 0, 0.8)"
+      ></ComTable>
+    </div>
+  </div>
+</template>
+<script>
+import ComTable from "@/components/coms/table/table.vue";
+
+export default {
+  name: "scadaAlarm",
+  components: { ComTable },
+  data() {
+    let that = this;
+    return {
+      ChangZhan: [],
+      stationId: "AK_GDC",
+      wtId: "",
+      alarmDesc: "",
+      levelArray: [
+        {
+          id: "",
+          name: "请选择",
+        },
+        {
+          id: "1",
+          name: "低",
+        },
+        {
+          id: "2",
+          name: "中低",
+        },
+        {
+          id: "3",
+          name: "中",
+        },
+        {
+          id: "4",
+          name: "中高",
+        },
+        {
+          id: "5",
+          name: "高",
+        },
+      ],
+      level: "",
+      partsArray: [],
+      partsMap: {},
+      partsId: "",
+      startDate: "",
+      endDate: "",
+      tableLoading: true,
+      pageIndex: 1,
+      pageSize: 20,
+      tableData: {
+        column: [
+          {
+            name: "光伏",
+            field: "stationName",
+            is_num: false,
+            is_light: false,
+            sortable: true,
+            id: "id",
+          },
+
+          {
+            name: "报警时间",
+            field: "alertTime",
+            is_num: false,
+            is_light: false,
+            sortable: true,
+            id: "id",
+          },
+          {
+            name: "报警描述",
+            field: "alertText",
+            is_num: false,
+            is_light: false,
+            sortable: true,
+            id: "id",
+          },
+          {
+            name: "报警类别",
+            field: "category2",
+            is_num: false,
+            is_light: false,
+            sortable: true,
+            id: "id",
+            template: function (row) {
+              return '光伏'
+            },
+          },
+          {
+            name: "报警等级",
+            field: "rank",
+            is_num: false,
+            is_light: false,
+            sortable: true,
+            id: "id",
+          },
+        ],
+        data: [],
+        currentPageTotal: 0,
+      },
+    };
+  },
+  created() {
+    this.ChangZhanVal();
+    let end = new Date();
+    let start = new Date(end.getTime() - 1 * 24 * 60 * 60 * 1000);
+    this.endDate = end.formatDate("yyyy-MM-dd hh:mm:ss");
+    this.startDate = start.formatDate("yyyy-MM-dd hh:mm:ss");
+    this.getTable();
+  },
+  methods: {
+    // 场站
+    ChangZhanVal() {
+      var that = this;
+      that.API.requestData({
+        method: "GET",
+        baseURL: "http://192.168.1.14:8011/",
+        subUrl: "thing/station",
+        success(res) {
+          that.ChangZhan = res.filter(o => o.id.includes('GDC'));
+          that.stationId = res[0].id;
+        },
+      });
+    },
+    getTable() {
+      let that = this;
+      this.tableLoading = true;
+      this.API.requestData({
+        timeout: 30000,
+        method: "GET",
+        baseURL: "http://192.168.1.14:8075/",
+        subUrl: "alarm/history/page",
+        data: {
+          category1: "GF",
+          stationid: this.stationId,
+          starttime: this.startDate,
+          endtime: this.endDate,
+          category2: '',
+          keyword: this.alarmDesc,
+          windturbineid: '',
+          pagenum: this.pageIndex,
+          pagesize: this.pageSize,
+          rank: that.level,
+        },
+        success(res) {
+          if (res) {
+            res.records.forEach((ele, index) => {
+              ele.rank = that.levelArray[parseInt(ele.rank)]?.name;
+            });
+            that.tableData.data = res.records;
+            that.tableData.total = res.total;
+          } else {
+            that.tableData.data = [];
+            that.tableData.total = 0;
+          }
+          that.tableLoading = false;
+        },
+      });
+    },
+    onChangePage(params) {
+      this.pageIndex = params.pageIndex;
+      this.pageSize = params.pageSize;
+      this.getTable();
+      console.log("页码切换:", params);
+    },
+
+    sizeChange(res) {
+      console.log("每页数量:", res);
+    },
+
+    pageClick(res) {
+      console.log("页码:", res);
+    },
+
+    exportExcel() {
+      let excelData = this.BASE.deepCopy(this.tableData);
+      // excelData.data.forEach((ele) => {
+      //   ele["category2"] = this.partsMap[ele["category2"]];
+      // });
+      this.BASE.exportExcel(excelData, "光伏报警");
+    },
+  },
+};
+</script>
+<style lang="less">
+.title {
+  background: rgba(255, 255, 255, 0.1);
+  margin-bottom: 8px;
+  padding: 1vh;
+}
+</style>

+ 58 - 187
src/views/layout/Menu.vue

@@ -226,11 +226,11 @@ export default {
                   icon: "svg-wind-site",
                   path: "/decision/totalPowerRank",
                 },
-                // {
-                //   text: "报警排行",
-                //   icon: "svg-wind-site",
-                //   path: "/decision/warningRank",
-                // },
+                {
+                  text: "报警排行",
+                  icon: "svg-wind-site",
+                  path: "/decision/warningRank",
+                },
               ],
             },
             {
@@ -417,23 +417,23 @@ export default {
                 // },
               ],
             },
-            {
-              text: "故障诊断",
-              icon: "svg-故障诊断",
-              path: "/health/gzzd/malfunctionDiagnose",
-              children: [
-                {
-                  text: "故障诊断",
-                  icon: "svg-wind-site",
-                  path: "/health/gzzd/malfunctionDiagnose",
-                },
-                {
-                  text: "故障回溯",
-                  icon: "svg-wind-site",
-                  path: "/health/gzzd/malfunctionRecall",
-                },
-              ],
-            },
+            // {
+            //   text: "故障诊断",
+            //   icon: "svg-故障诊断",
+            //   path: "/health/gzzd/malfunctionDiagnose",
+            //   children: [
+            //     {
+            //       text: "故障诊断",
+            //       icon: "svg-wind-site",
+            //       path: "/health/gzzd/malfunctionDiagnose",
+            //     },
+            //     {
+            //       text: "故障回溯",
+            //       icon: "svg-wind-site",
+            //       path: "/health/gzzd/malfunctionRecall",
+            //     },
+            //   ],
+            // },
             {
               text: "健康管理",
               icon: "svg-健康管理",
@@ -486,10 +486,15 @@ export default {
               icon: "svg-能效分析",
               path: "/health/nxfx/powerCurve",
               children: [
+                // {
+                //   text: "功率曲线拟合",
+                //   icon: "svg-wind-site",
+                //   path: "/health/nxfx/powerCurve",
+                // },
                 {
                   text: "功率曲线拟合",
                   icon: "svg-wind-site",
-                  path: "/health/nxfx/powerCurve",
+                  path: "/health/nxfx/wtSaturability",
                 },
                 {
                   text: "偏航对风分析",
@@ -506,12 +511,6 @@ export default {
                   icon: "svg-wind-site",
                   path: "/health/nxfx/qxpclfx",
                 },
-
-                {
-                  text: "单机饱和度",
-                  icon: "svg-wind-site",
-                  path: "/health/nxfx/wtSaturability",
-                },
               ],
             },
             {
@@ -551,11 +550,11 @@ export default {
               icon: "svg-风光资源分析",
               path: "/health/fzyfx/windAnalysis",
               children: [
-                {
-                  text: "风资源散点",
-                  icon: "svg-wind-site",
-                  path: "/health/fzyfx/windAnalysis",
-                },
+                // {
+                //   text: "风资源散点",
+                //   icon: "svg-wind-site",
+                //   path: "/health/fzyfx/windAnalysis",
+                // },
                 {
                   text: "风资源风向",
                   icon: "svg-wind-site",
@@ -610,144 +609,6 @@ export default {
             },
           ],
         },
-        // {
-        //   id: "znbb",
-        //   text: "智能报表",
-        //   data: [
-        //     {
-        //       text: '报表首页',
-        //       icon: 'svg-wind-site',
-        //       path: '/reportPandect'
-        //     },
-        //     // 统计分析
-        //     {
-        //       text: "统计分析",
-        //       icon: "svg-matrix",
-        //       path: "/tjfx",
-        //       children: [
-        //         {
-        //           text: "统计分析",
-        //           icon: "svg-matrix",
-        //           path: "/tjfx",
-        //         },
-        //         {
-        //           text: "表底值查询",
-        //           icon: "svg-matrix",
-        //           path: "/bdzcx",
-        //         },
-        //       ],
-        //     },
-        //     {
-        //       text: "报表管理",
-        //       icon: "svg-matrix",
-        //       path: "/bdzcx",
-        //       children: [
-        //         {
-        //           text: "OA日报",
-        //           icon: "svg-matrix",
-        //           path: "/oafd",
-        //         },
-        //         {
-        //           text: "OA日报(光伏)",
-        //           icon: "svg-matrix",
-        //           path: "/oagf",
-        //         },
-        //         {
-        //           text: "新能源日报",
-        //           icon: "svg-matrix",
-        //           path: "/xnyrb",
-        //         },
-        //         {
-        //           text: "国电电力MISS日报(风电)",
-        //           icon: "svg-matrix",
-        //           path: "/missfdrb",
-        //         },
-        //         {
-        //           text: "国电电力MISS日报(光伏)",
-        //           icon: "svg-matrix",
-        //           path: "/missgfrb",
-        //         },
-        //         {
-        //           text: "新能源风电生产月报",
-        //           icon: "svg-matrix",
-        //           path: "/xnyfdscyb",
-        //         },
-        //         {
-        //           text: "麻黄山生产月报",
-        //           icon: "svg-matrix",
-        //           path: "/mhsscyb",
-        //         },
-        //         {
-        //           text: "牛首山生产月报",
-        //           icon: "svg-matrix",
-        //           path: "/nssscyb",
-        //         },
-        //         {
-        //           text: "青山生产月报",
-        //           icon: "svg-matrix",
-        //           path: "/qsscyb",
-        //         },
-        //         {
-        //           text: "石板泉生产月报",
-        //           icon: "svg-matrix",
-        //           path: "/sbqscyb",
-        //         },
-        //         {
-        //           text: "香山生产月报",
-        //           icon: "svg-matrix",
-        //           path: "/xsscyb",
-        //         },
-        //         {
-        //           text: "新能源光伏生产月报",
-        //           icon: "svg-matrix",
-        //           path: "/xnygfscyb",
-        //         },
-        //         {
-        //           text: "大武口生产月报",
-        //           icon: "svg-matrix",
-        //           path: "/dwkscyb",
-        //         },
-        //         {
-        //           text: "平罗生产月报",
-        //           icon: "svg-matrix",
-        //           path: "/plscyb",
-        //         },
-        //         {
-        //           text: "宣和生产月报",
-        //           icon: "svg-matrix",
-        //           path: "/xhscyb",
-        //         },
-        //       ],
-        //     },
-        //     {
-        //       text: "自定制报表管理",
-        //       icon: "svg-matrix",
-        //       path: "/fdczzdy",
-        //       children: [
-        //         {
-        //           text: "风电场站自定义",
-        //           icon: "svg-matrix",
-        //           path: "/fdczzdy",
-        //         },
-        //         {
-        //           text: "风电项目自定义",
-        //           icon: "svg-matrix",
-        //           path: "/fdxmzdy",
-        //         },
-        //         {
-        //           text: "光伏场站自定义",
-        //           icon: "svg-matrix",
-        //           path: "/gfczzdy",
-        //         },
-        //         {
-        //           text: "光伏项目自定义",
-        //           icon: "svg-matrix",
-        //           path: "/gfxmzdy",
-        //         },
-        //       ],
-        //     },
-        //   ],
-        // },
         {
           id: "others",
           text: "其他",
@@ -850,6 +711,11 @@ export default {
                   path: "/others/xhscyb",
                 },
                 {
+                  text: "埃肯生产月报",
+                  icon: "svg-matrix",
+                  path: "/others/akscyb",
+                },
+                {
                   text: "MIS日报导入",
                   icon: "svg-matrix",
                   path: "/others/misimport",
@@ -893,16 +759,16 @@ export default {
               icon: "svg-报表首页",
               path: "/others/realSearch",
               children: [
-                {
-                  text: "测点数据查询",
-                  icon: "svg-wind-site",
-                  path: "/others/realSearch",
-                },
-                {
-                  text: "测点历史数据查询",
-                  icon: "svg-wind-site",
-                  path: "/others/historySearch",
-                },
+                // {
+                //   text: "测点数据查询",
+                //   icon: "svg-wind-site",
+                //   path: "/others/realSearch",
+                // },
+                // {
+                //   text: "测点历史数据查询",
+                //   icon: "svg-wind-site",
+                //   path: "/others/historySearch",
+                // },
                 {
                   text: "气象历史数据",
                   icon: "svg-wind-site",
@@ -947,6 +813,11 @@ export default {
                   path: "/others/alarmCenter/scadaAlarm",
                 },
                 {
+                  text: "光伏报警",
+                  icon: "svg-wind-site",
+                  path: "/others/alarmCenter/gfAlarm",
+                },
+                {
                   text: "自定义报警",
                   icon: "svg-wind-site",
                   path: "/others/alarmCenter/customAlarm",
@@ -956,11 +827,11 @@ export default {
                   icon: "svg-wind-site",
                   path: "/others/alarmCenter/customStatistics",
                 },
-                 {
-                  text: "报警配置工具",
-                  icon: "svg-wind-site",
-                  path: "/others/alarmCenter/configAlarm",
-                },
+                // {
+                //   text: "报警配置工具",
+                //   icon: "svg-wind-site",
+                //   path: "/others/alarmCenter/configAlarm",
+                // },
               ],
             },
             {

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

@@ -225,6 +225,8 @@ export default {
             res.data.forEach((ele) => {
               ele.beginDate = new Date(ele.beginDate).formatDate("yyyy-MM-dd");
               ele.endDate = new Date(ele.beginDate).formatDate("yyyy-MM-dd");
+              ele.speed = ele.speed.toFixed(2);
+              ele.power = ele.power.toFixed(2);
             });
             res.data.sort((a, b) => {
               return b.power - a.power;

+ 33 - 0
src/views/report/akscyb.vue

@@ -0,0 +1,33 @@
+<template>
+  <div style="height:100%">
+    <iframe :src="url" width="100%" height="100%" frameborder="0" scrolling="auto" style="background-color: white;"></iframe>
+  </div>
+    
+</template>
+
+<script>
+
+
+export default {
+  data(){
+    return {
+      url: "http://10.155.32.4:8000/bi47/showreport.do?resid=EBI$12$0C375MRT9PPPNMNCCTULLVQINXCND95K$1$O1UTC2U1YK0KL7Y16LC5SUTQZM1LNKT0.rpttpl&id=admin&pw=admin"
+    }
+  }
+}
+</script>
+  
+<style lang="less" scope>
+@titleGray: #9ca5a8;
+@rowGray: #606769;
+@darkBack: #536268;
+.knowledge-2 {
+  .el-select {
+    width: 200px;
+  }
+  .el-input {
+    width: 200px;
+  }
+}
+</style>
+

+ 1 - 1
src/views/report/gfczzdy.vue

@@ -11,7 +11,7 @@
 export default {
   data(){
     return {
-      url: "http://10.155.32.4:8000/bi47/showreport.do?resid=EBI$12$0C375MRT9PPPNMNCCTULLVQINXCND95K$1$LDBDTULZIVZV1WQD163KP6ICTCDUT99L.rptolap&id=admin&pw=admin"
+      url: "http://10.155.32.4:8000/bi47/showreport.do?resid=EBI$12$0C375MRT9PPPNMNCCTULLVQINXCND95K$1$YLMM87CYDCECQVLL13ODOW6KPSLQTITI.rptolap&id=admin&pw=admin"
     }
   }
 }

+ 46 - 1
src/views/report/loadRate.vue

@@ -49,6 +49,8 @@
 			<ComTable
 			  ref="curRef"
 			  :data="tableData"
+				:mergeRow="mergeRow"
+				showMerge
 			  :pageSize="-1"
 			  height="85vh"
 			  v-loading="tableLoading"
@@ -90,6 +92,17 @@ import { ElMessage } from 'element-plus';
 					column: [],
 					data: [],
 					currentPageTotal: 0
+				},
+				mergeRow: {
+					branchcount: '',
+					generatedenergy: '',
+					id: '合计',
+					loadfactor: '',
+					platecapacity: '',
+					platecount: '',
+					power: '',
+					time: '',
+					utilizationhour: '',
 				}
 			};
 		},
@@ -220,7 +233,19 @@ import { ElMessage } from 'element-plus';
 					success(res) {
 						var dataTab = [];
 						if (res.data) {
-						  res.data.forEach(item => {
+							let mergeRow = {
+								branchcount: 0,
+								generatedenergy: 0,
+								id: '合计',
+								loadfactor: 0,
+								platecapacity: 0,
+								platecount: 0,
+								power: 0,
+								time: '',
+								utilizationhour: 0,
+							}
+							let loadfactor = 0
+						  res.data.forEach((item,index) => {
 						  	dataTab.push({ //表格
 						  		branchcount: item.branchcount,
 									generatedenergy: item.generatedenergy,
@@ -232,7 +257,27 @@ import { ElMessage } from 'element-plus';
 									time: item.time,
 									utilizationhour: Number(item.utilizationhour),
 						  	})
+								mergeRow.branchcount += Number(item.branchcount)
+								mergeRow.generatedenergy += Number(item.generatedenergy)
+								loadfactor += Number(item.loadfactor)
+								mergeRow.platecapacity += Number(item.platecapacity)
+								mergeRow.platecount += Number(item.platecount)
+								mergeRow.power += Number(item.power)
+								mergeRow.time = item.time
+								mergeRow.utilizationhour += Number(item.utilizationhour)
 						  })
+							mergeRow.loadfactor = loadfactor / res.data.length
+							that.mergeRow = {
+								branchcount: mergeRow.branchcount.toFixed(1),
+								generatedenergy: mergeRow.generatedenergy.toFixed(2),
+								id: '合计',
+								loadfactor: mergeRow.loadfactor.toFixed(2),
+								platecapacity: mergeRow.platecapacity.toFixed(1),
+								platecount: mergeRow.platecount.toFixed(1),
+								power: mergeRow.power.toFixed(1),
+								time: mergeRow.time,
+								utilizationhour: mergeRow.utilizationhour.toFixed(2),
+							}
 						  that.tableData.data = dataTab;
 						  that.tableData.total = 0;
 						} else {

+ 12 - 0
src/views/sisView/index.vue

@@ -285,6 +285,17 @@
           <div class="itemNum">{{ items.hzjgl }}</div>
           <div class="itemUnit">MW</div>
         </div>
+        <!-- <div class="contentItem">
+          <div class="itemName">埃发电量</div>
+          <div class="itemNum">{{ items.akfdl }}</div>
+          <div class="itemUnit">万kWh</div>
+          <div class="itemName">埃日强度</div>
+          <div class="itemNum">{{ items.akrzqd }}</div>
+          <div class="itemUnit">W/㎡</div>
+          <div class="itemName">埃功率</div>
+          <div class="itemNum">{{ items.akgl }}</div>
+          <div class="itemUnit">MW</div>
+        </div> -->
       </div>
     </div>
   </div>
@@ -326,6 +337,7 @@ export default {
       that.API.requestData({
         method: "GET",
         subUrl: "http://10.155.32.4:8034/bigscreen/list",
+        // subUrl: "http://192.168.10.12:8034/bigscreen/list",
         success(res) {
           let keys = Object.keys(res.data);
           let items = res.data;

+ 1 - 0
vue.config.js

@@ -66,6 +66,7 @@ module.exports = {
   assetsDir: 'static', // 相对于outputDir的静态资源(js、css、img、fonts)目录
   lintOnSave: false, // 是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码
   runtimeCompiler: true, // 是否使用包含运行时编译器的 Vue 构建版本
+  parallel: false, //用于解决 node Syntax Error: Thread Loader (Worker 0) 报错问题
 
   configureWebpack: {
     plugins: [