lining hace 3 años
padre
commit
6987b3294e
Se han modificado 48 ficheros con 8735 adiciones y 9195 borrados
  1. 3 1
      README.md
  2. 1 1
      src/api/zmaxios.js
  3. 1 0
      src/assets/dataService/arcgis-nss.json
  4. 502 0
      src/components/arcgis/NSS_FDC.vue
  5. 329 329
      src/components/chart/line/marker-line-chart.vue
  6. 425 432
      src/components/chart/line/multiple-y-line-chart-normal.vue
  7. 2 5
      src/components/coms/collapse/collapse-list.vue
  8. 70 70
      src/components/coms/wt-chooser/wt-chooser.vue
  9. 17 1
      src/router/index.js
  10. 315 315
      src/views/Agc/components/agc-panel.vue
  11. 8 1
      src/views/Decision/Decision3Db.vue
  12. 1 0
      src/views/HealthControl/Health0.vue
  13. 681 681
      src/views/HealthControl/Health10.vue
  14. 3 2
      src/views/HealthControl/HealthTab1.vue
  15. 0 1
      src/views/HealthControl/assess/selfEvaluate.vue
  16. 79 80
      src/views/HealthControl/healthLineChart.vue
  17. 298 298
      src/views/HealthControl/healthLineChart2.vue
  18. 136 0
      src/views/HealthControl/zhpj/dayinfo.vue
  19. 424 0
      src/views/HealthControl/zhpj/jxpj.vue
  20. 441 0
      src/views/HealthControl/zhpj/yxpj.vue
  21. 64 20
      src/views/Home/Home.vue
  22. 37 37
      src/views/Home/components/map.vue
  23. 319 0
      src/views/Home/components/map/DWK_GDC.vue
  24. 313 0
      src/views/Home/components/map/MCH_GDC.vue
  25. 386 0
      src/views/Home/components/map/PL_GDC.vue
  26. 347 0
      src/views/Home/components/map/XH_GDC.vue
  27. 407 554
      src/views/Home/components/map/XS_FDC.vue
  28. 4 4
      src/views/Home/components/map/svg-map-nx.vue
  29. 25 25
      src/views/Home/components/power-review.vue
  30. 0 1
      src/views/MalfunctionWarning/MalfunctionWarning.vue
  31. 3 3
      src/views/Others/index.vue
  32. 9 8
      src/views/Status/Status.vue
  33. 1 1
      src/views/Status/components/static.vue
  34. 231 231
      src/views/WindSite/WindSite.vue
  35. 3 3
      src/views/WindSite/components/boosterstation/BoosterStation.js
  36. 1 1
      src/views/WindSite/components/boosterstation/hzj.vue
  37. 387 340
      src/views/WindSite/components/boosterstation/nss.vue
  38. 1899 5297
      src/views/WindSite/components/boosterstation/pl1.vue
  39. 2 2
      src/views/WindSite/components/boosterstation/xs.vue
  40. 8 7
      src/views/WindSite/pages/BoosterStation.vue
  41. 7 3
      src/views/WindSite/pages/Home/Home.vue
  42. 286 286
      src/views/WindSite/pages/Info/Warning.vue
  43. 3 0
      src/views/WindSite/pages/Map.vue
  44. 31 18
      src/views/WindSite/pages/Tower.vue
  45. 11 1
      src/views/layout/Menu.vue
  46. 71 87
      src/views/malfunctionDiagnose/gzfl.vue
  47. 134 0
      src/views/malfunctionDiagnose/yjfl.vue
  48. 10 49
      src/views/warn/gfgj.vue

+ 3 - 1
README.md

@@ -1,4 +1,6 @@
-# electronic-map
+# 三区综合分析系统[sis_zhfx]
+
+* 注:需创建自己的 GIT 分支进行代码开发,开发完调试完毕后再自行合并至主干分支。
 
 ## 项目运行
 ```

+ 1 - 1
src/api/zmaxios.js

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

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 0
src/assets/dataService/arcgis-nss.json


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

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

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

@@ -1,329 +1,329 @@
-<template>
-  <div class="chart" :id="id"></div>
-</template>
-
-<script>
-import util from "@/helper/util.js";
-import partten from "@/helper/partten.js";
-import * as echarts from "echarts";
-
-export default {
-  name: "double-line-chart",
-  componentName: "double-line-chart",
-  props: {
-    isChartClick:{
-      type: Boolean,
-      default: false,
-    },
-    width: {
-      type: String,
-      default: "100%",
-    },
-    height: {
-      type: String,
-      default: "13.889vh",
-    },
-    // 传入数据
-    list: {
-      type: Array,
-      default: () => [
-        {
-          title: "绿线",
-          value: [
-            {
-              text: "",
-              value: 0,
-            },
-            {
-              text: "0:00",
-              value: 20,
-            },
-            {
-              text: "10:00",
-              value: 1,
-            },
-            {
-              text: "11:00",
-              value: 40,
-            },
-            {
-              text: "12:00",
-              value: 10,
-            },
-            {
-              text: "13:00",
-              value: 15,
-            },
-            {
-              text: "14:00",
-              value: 30,
-            },
-            {
-              text: "15:00",
-              value: 40,
-            },
-            {
-              text: "",
-              value: 10,
-            },
-          ],
-        },
-        {
-          title: "黄线",
-          value: [
-            {
-              text: "",
-              value: 0,
-            },
-            {
-              text: "0:00",
-              value: 40,
-            },
-            {
-              text: "10:00",
-              value: 20,
-            },
-            {
-              text: "11:00",
-              value: 20,
-            },
-            {
-              text: "12:00",
-              value: 10,
-            },
-            {
-              text: "13:00",
-              value: 40,
-            },
-            {
-              text: "14:00",
-              value: 50,
-            },
-            {
-              text: "15:00",
-              value: 40,
-            },
-            {
-              text: "",
-              value: 10,
-            },
-          ],
-        },
-      ],
-    },
-    // 单位
-    unit: {
-      type: String,
-      default: "MW",
-    },
-    showLegend: {
-      type: Boolean,
-      default: false,
-    },
-  },
-  data() {
-    return {
-      id: "",
-      chart: null,
-      color: ["#05bb4c", "#f8de5b", "#4b55ae", "#fa8c16"],
-    };
-  },
-  computed: {
-    colorValue() {
-      return partten.getColor(this.color);
-    },
-    datas() {
-      return this.list.map((t) => {
-        return t.value;
-      });
-    },
-    legend() {
-      return this.list.map((t) => {
-        return t.title;
-      });
-    },
-    xdata() {
-      return this.list[0].value.map((t) => {
-        return t.text;
-      });
-    },
-    series() {
-      let that = this;
-      let result = [];
-
-      this.list.forEach((value, index) => {
-        result.push({
-          name: value.title,
-          type: "line",
-          smooth: true,
-          showSymbol: false,
-          zlevel: index,
-          lineStyle: {
-            normal: {
-              color: this.color[index],
-              width: 1,
-            },
-          },
-          markPoint: {},
-          // index == 0
-          //   ? {
-          //       data: [
-          //         {
-          //           type: "average",
-          //           name: "保证功率",
-          //           symbolSize: 0,
-          //           label: {
-          //             offset: [0, -40],
-          //             formatter: function(param) {
-          //               return `{title|${param.name}}` + "\n" + `{value| ${param.value}${that.unit}}`;
-          //             },
-          //             backgroundColor: partten.getColor("green") + 33,
-          //             borderColor: partten.getColor("green"),
-          //             borderWidth: 0.5,
-          //             borderRadius: 2,
-          //             padding: 8,
-          //             rich: {
-          //               title: {
-          //                 color: partten.getColor("green"),
-          //                 fontSize: 12,
-          //               },
-          //               value: {
-          //                 color: "#fff",
-          //                 fontSize: 16,
-          //                 padding: [12, 0, 0, -4],
-          //               },
-          //             },
-          //           },
-          //         },
-          //       ],
-          //     }
-          //   : {},
-          yAxisIndex: value.yAxisIndex,
-          data: value.value.map((t) => {
-            return t.value;
-          }),
-        });
-      });
-
-      return result;
-    },
-    yAxis() {
-      let result = [];
-      result.push({
-        type: "value",
-        name: this.unit,
-        axisLabel: {
-          formatter: "{value}",
-          fontSize: util.vh(14),
-        },
-        boundaryGap: false,
-        //分格线
-        splitLine: {
-          show: true,
-          lineStyle: {
-            color: partten.getColor("gray"),
-            type: "dashed",
-          },
-        },
-      });
-      return result;
-    },
-  },
-  methods: {
-    resize() {},
-    initChart() {
-      let that = this;
-      const chart = echarts.init(this.$el);
-
-      let option = {
-        color: this.color,
-        tooltip: {
-          trigger: "axis",
-          backgroundColor: "rgba(0,0,0,0.4)",
-          borderColor: partten.getColor("gray"),
-          textStyle: {
-            color: "#fff",
-            fontSize: util.vh(16),
-          },
-        },
-        legend: {
-          show: this.showLegend,
-          data: this.legend,
-          right: 56,
-          icon: "circle",
-          itemWidth: 6,
-          inactiveColor: partten.getColor("gray"),
-          textStyle: {
-            color: partten.getColor("grayl"),
-            fontSize: 12,
-          },
-        },
-        grid: {
-          top: 16,
-          left: 32,
-          right: 8,
-          bottom: 24,
-        },
-        xAxis: [
-          {
-            type: "category",
-            boundaryGap: false,
-            axisLabel: {
-              formatter: "{value}",
-              textStyle: {
-                color: partten.getColor("gray"),
-                fontSize: util.vh(14),
-              },
-            },
-            data: this.xdata,
-          },
-        ],
-        yAxis: this.yAxis,
-        series: this.series,
-      };
-      chart.clear();
-      chart.setOption(option);
-      if(this.isChartClick){
-        chart.getZr().off("click");
-        chart.getZr().on("click", (params) => {
-          that.chartClick();
-        });
-      }
-      this.resize = function() {
-        chart.resize();
-      };
-
-      window.addEventListener("resize", this.resize);
-    },
-    chartClick(){
-      this.$emit("chartClick");
-    }
-  },
-  created() {
-    this.id = "pie-chart-" + util.newGUID();
-  },
-  mounted() {
-    this.$nextTick(() => {
-      this.$el.style.width = this.width;
-      this.$el.style.height = this.height;
-      this.initChart();
-    });
-  },
-  updated() {
-    this.$nextTick(() => {
-      this.initChart();
-    });
-  },
-  unmounted() {
-    window.removeEventListener("resize", this.resize);
-  },
-};
-</script>
-
-<style lang="less">
-.chart {
-  width: 100%;
-  height: 100%;
-  display: inline-block;
-}
-</style>
+<template>
+  <div class="chart" :id="id"></div>
+</template>
+
+<script>
+import util from "@/helper/util.js";
+import partten from "@/helper/partten.js";
+import * as echarts from "echarts";
+
+export default {
+  name: "double-line-chart",
+  componentName: "double-line-chart",
+  props: {
+    isChartClick:{
+      type: Boolean,
+      default: false,
+    },
+    width: {
+      type: String,
+      default: "100%",
+    },
+    height: {
+      type: String,
+      default: "13.889vh",
+    },
+    // 传入数据
+    list: {
+      type: Array,
+      default: () => [
+        {
+          title: "绿线",
+          value: [
+            {
+              text: "",
+              value: 0,
+            },
+            {
+              text: "0:00",
+              value: 20,
+            },
+            {
+              text: "10:00",
+              value: 1,
+            },
+            {
+              text: "11:00",
+              value: 40,
+            },
+            {
+              text: "12:00",
+              value: 10,
+            },
+            {
+              text: "13:00",
+              value: 15,
+            },
+            {
+              text: "14:00",
+              value: 30,
+            },
+            {
+              text: "15:00",
+              value: 40,
+            },
+            {
+              text: "",
+              value: 10,
+            },
+          ],
+        },
+        {
+          title: "黄线",
+          value: [
+            {
+              text: "",
+              value: 0,
+            },
+            {
+              text: "0:00",
+              value: 40,
+            },
+            {
+              text: "10:00",
+              value: 20,
+            },
+            {
+              text: "11:00",
+              value: 20,
+            },
+            {
+              text: "12:00",
+              value: 10,
+            },
+            {
+              text: "13:00",
+              value: 40,
+            },
+            {
+              text: "14:00",
+              value: 50,
+            },
+            {
+              text: "15:00",
+              value: 40,
+            },
+            {
+              text: "",
+              value: 10,
+            },
+          ],
+        },
+      ],
+    },
+    // 单位
+    unit: {
+      type: String,
+      default: "MW",
+    },
+    showLegend: {
+      type: Boolean,
+      default: false,
+    },
+  },
+  data() {
+    return {
+      id: "",
+      chart: null,
+      color: ["#05bb4c", "#f8de5b", "#4b55ae", "#fa8c16"],
+    };
+  },
+  computed: {
+    colorValue() {
+      return partten.getColor(this.color);
+    },
+    datas() {
+      return this.list.map((t) => {
+        return t.value;
+      });
+    },
+    legend() {
+      return this.list.map((t) => {
+        return t.title;
+      });
+    },
+    xdata() {
+      return this.list[0].value.map((t) => {
+        return t.text;
+      });
+    },
+    series() {
+      let that = this;
+      let result = [];
+
+      this.list.forEach((value, index) => {
+        result.push({
+          name: value.title,
+          type: "line",
+          smooth: true,
+          showSymbol: false,
+          zlevel: index,
+          lineStyle: {
+            normal: {
+              color: this.color[index],
+              width: 1,
+            },
+          },
+          markPoint: {},
+          // index == 0
+          //   ? {
+          //       data: [
+          //         {
+          //           type: "average",
+          //           name: "保证功率",
+          //           symbolSize: 0,
+          //           label: {
+          //             offset: [0, -40],
+          //             formatter: function(param) {
+          //               return `{title|${param.name}}` + "\n" + `{value| ${param.value}${that.unit}}`;
+          //             },
+          //             backgroundColor: partten.getColor("green") + 33,
+          //             borderColor: partten.getColor("green"),
+          //             borderWidth: 0.5,
+          //             borderRadius: 2,
+          //             padding: 8,
+          //             rich: {
+          //               title: {
+          //                 color: partten.getColor("green"),
+          //                 fontSize: 12,
+          //               },
+          //               value: {
+          //                 color: "#fff",
+          //                 fontSize: 16,
+          //                 padding: [12, 0, 0, -4],
+          //               },
+          //             },
+          //           },
+          //         },
+          //       ],
+          //     }
+          //   : {},
+          yAxisIndex: value.yAxisIndex,
+          data: value.value.map((t) => {
+            return t.value;
+          }),
+        });
+      });
+
+      return result;
+    },
+    yAxis() {
+      let result = [];
+      result.push({
+        type: "value",
+        name: this.unit,
+        axisLabel: {
+          formatter: "{value}",
+          fontSize: util.vh(14),
+        },
+        boundaryGap: false,
+        //分格线
+        splitLine: {
+          show: true,
+          lineStyle: {
+            color: partten.getColor("gray"),
+            type: "dashed",
+          },
+        },
+      });
+      return result;
+    },
+  },
+  methods: {
+    resize() {},
+    initChart() {
+      let that = this;
+      const chart = echarts.init(this.$el);
+
+      let option = {
+        color: this.color,
+        tooltip: {
+          trigger: "axis",
+          backgroundColor: "rgba(0,0,0,0.4)",
+          borderColor: partten.getColor("gray"),
+          textStyle: {
+            color: "#fff",
+            fontSize: util.vh(16),
+          },
+        },
+        legend: {
+          show: this.showLegend,
+          data: this.legend,
+          right: 56,
+          icon: "circle",
+          itemWidth: 6,
+          inactiveColor: partten.getColor("gray"),
+          textStyle: {
+            color: partten.getColor("grayl"),
+            fontSize: 12,
+          },
+        },
+        grid: {
+          top: 16,
+          left: 32,
+          right: 8,
+          bottom: 24,
+        },
+        xAxis: [
+          {
+            type: "category",
+            boundaryGap: false,
+            axisLabel: {
+              formatter: "{value}",
+              textStyle: {
+                color: partten.getColor("gray"),
+                fontSize: util.vh(14),
+              },
+            },
+            data: this.xdata,
+          },
+        ],
+        yAxis: this.yAxis,
+        series: this.series,
+      };
+      chart.clear();
+      chart.setOption(option);
+      if(this.isChartClick){
+        chart.getZr().off("click");
+        chart.getZr().on("click", (params) => {
+          that.chartClick();
+        });
+      }
+      this.resize = function() {
+        chart.resize();
+      };
+
+      window.addEventListener("resize", this.resize);
+    },
+    chartClick(){
+      this.$emit("chartClick");
+    }
+  },
+  created() {
+    this.id = "pie-chart-" + util.newGUID();
+  },
+  mounted() {
+    this.$nextTick(() => {
+      this.$el.style.width = this.width;
+      this.$el.style.height = this.height;
+      this.initChart();
+    });
+  },
+  updated() {
+    this.$nextTick(() => {
+      this.initChart();
+    });
+  },
+  unmounted() {
+    window.removeEventListener("resize", this.resize);
+  },
+};
+</script>
+
+<style lang="less">
+.chart {
+  width: 100%;
+  height: 100%;
+  display: inline-block;
+}
+</style>

+ 425 - 432
src/components/chart/line/multiple-y-line-chart-normal.vue

@@ -1,5 +1,5 @@
 <template>
-    <div class="chart" :id="id"></div>
+  <div class="chart" :id="id"></div>
 </template>
 
 <script>
@@ -8,460 +8,453 @@ import partten from "@/helper/partten.js";
 import * as echarts from "echarts";
 
 export default {
-    name: "multiple-y-line-chart-normal",
-    componentName: "multiple-y-line-chart-normal",
-    props: {
-        width: {
-            type: String,
-            default: "100%",
+  name: "multiple-y-line-chart-normal",
+  componentName: "multiple-y-line-chart-normal",
+  props: {
+    width: {
+      type: String,
+      default: "100%",
+    },
+    height: {
+      type: String,
+      default: "13.889vh",
+    },
+    // 数据
+    list: {
+      type: Array,
+      default: () => [
+        {
+          title: "机舱震动x方向",
+          yAxisIndex: 0,
+          value: [
+            {
+              text: "-0.003",
+              value: -0.003,
+            },
+            {
+              text: "-0.002",
+              value: -0.002,
+            },
+            {
+              text: "-0.003",
+              value: -0.006,
+            },
+            {
+              text: "-0.003",
+              value: -0.003,
+            },
+            {
+              text: "-0.002",
+              value: -0.002,
+            },
+            {
+              text: "-0.003",
+              value: -0.006,
+            },
+            {
+              text: "-0.003",
+              value: -0.003,
+            },
+            {
+              text: "-0.002",
+              value: -0.002,
+            },
+            {
+              text: "-0.003",
+              value: -0.006,
+            },
+          ],
         },
-        height: {
-            type: String,
-            default: "13.889vh",
+        {
+          title: "机舱震动y方向",
+          yAxisIndex: 1,
+          value: [
+            {
+              text: "-0.01",
+              value: -0.01,
+            },
+            {
+              text: "-0.005",
+              value: -0.005,
+            },
+            {
+              text: "-0.008",
+              value: -0.008,
+            },
+            {
+              text: "-0.01",
+              value: -0.01,
+            },
+            {
+              text: "-0.005",
+              value: -0.005,
+            },
+            {
+              text: "-0.008",
+              value: -0.008,
+            },
+            {
+              text: "-0.01",
+              value: -0.01,
+            },
+            {
+              text: "-0.005",
+              value: -0.005,
+            },
+            {
+              text: "-0.008",
+              value: -0.008,
+            },
+          ],
         },
-        // 数据
-        list: {
-            type: Array,
-            default: () => [
-                {
-                    title: "机舱震动x方向",
-                    yAxisIndex: 0,
-                    value: [
-                        {
-                            text: "-0.003",
-                            value: -0.003,
-                        },
-                        {
-                            text: "-0.002",
-                            value: -0.002,
-                        },
-                        {
-                            text: "-0.003",
-                            value: -0.006,
-                        },
-                        {
-                            text: "-0.003",
-                            value: -0.003,
-                        },
-                        {
-                            text: "-0.002",
-                            value: -0.002,
-                        },
-                        {
-                            text: "-0.003",
-                            value: -0.006,
-                        },
-                        {
-                            text: "-0.003",
-                            value: -0.003,
-                        },
-                        {
-                            text: "-0.002",
-                            value: -0.002,
-                        },
-                        {
-                            text: "-0.003",
-                            value: -0.006,
-                        },
-                    ],
-                },
-                {
-                    title: "机舱震动y方向",
-                    yAxisIndex: 1,
-                    value: [
-                        {
-                            text: "-0.01",
-                            value: -0.01,
-                        },
-                        {
-                            text: "-0.005",
-                            value: -0.005,
-                        },
-                        {
-                            text: "-0.008",
-                            value: -0.008,
-                        },
-                        {
-                            text: "-0.01",
-                            value: -0.01,
-                        },
-                        {
-                            text: "-0.005",
-                            value: -0.005,
-                        },
-                        {
-                            text: "-0.008",
-                            value: -0.008,
-                        },
-                        {
-                            text: "-0.01",
-                            value: -0.01,
-                        },
-                        {
-                            text: "-0.005",
-                            value: -0.005,
-                        },
-                        {
-                            text: "-0.008",
-                            value: -0.008,
-                        },
-                    ],
-                },
-                {
-                    title: "机舱震动最大偏移值",
-                    yAxisIndex: 2,
-                    value: [
-                        {
-                            text: "1",
-                            value: 1,
-                        },
-                        {
-                            text: "0.05",
-                            value: 0.05,
-                        },
-                        {
-                            text: "0.5",
-                            value: 0.5,
-                        },
-                        {
-                            text: "1",
-                            value: 1,
-                        },
-                        {
-                            text: "0.05",
-                            value: 0.05,
-                        },
-                        {
-                            text: "0.5",
-                            value: 0.5,
-                        },
-                        {
-                            text: "1",
-                            value: 1,
-                        },
-                        {
-                            text: "0.05",
-                            value: 0.05,
-                        },
-                        {
-                            text: "0.5",
-                            value: 0.5,
-                        },
-                    ],
-                },
-                {
-                    title: "风速1",
-                    yAxisIndex: 3,
-                    value: [
-                        {
-                            text: "1",
-                            value: 1,
-                        },
-                        {
-                            text: "5",
-                            value: 5,
-                        },
-                        {
-                            text: "3",
-                            value: 1,
-                        },
-                        {
-                            text: "1",
-                            value: 1,
-                        },
-                        {
-                            text: "5",
-                            value: 5,
-                        },
-                        {
-                            text: "3",
-                            value: 1,
-                        },
-                        {
-                            text: "1",
-                            value: 1,
-                        },
-                        {
-                            text: "5",
-                            value: 5,
-                        },
-                        {
-                            text: "3",
-                            value: 1,
-                        },
-                    ],
-                },
-                {
-                    title: "风速2",
-                    yAxisIndex: 4,
-                    value: [
-                        {
-                            text: "1",
-                            value: 1,
-                        },
-                        {
-                            text: "2",
-                            value: 2,
-                        },
-                        {
-                            text: "3",
-                            value: 1,
-                        },
-                        {
-                            text: "1",
-                            value: 1,
-                        },
-                        {
-                            text: "2",
-                            value: 2,
-                        },
-                        {
-                            text: "3",
-                            value: 1,
-                        },
-                        {
-                            text: "1",
-                            value: 1,
-                        },
-                        {
-                            text: "2",
-                            value: 2,
-                        },
-                        {
-                            text: "3",
-                            value: 1,
-                        },
-                    ],
-                },
-            ],
+        {
+          title: "机舱震动最大偏移值",
+          yAxisIndex: 2,
+          value: [
+            {
+              text: "1",
+              value: 1,
+            },
+            {
+              text: "0.05",
+              value: 0.05,
+            },
+            {
+              text: "0.5",
+              value: 0.5,
+            },
+            {
+              text: "1",
+              value: 1,
+            },
+            {
+              text: "0.05",
+              value: 0.05,
+            },
+            {
+              text: "0.5",
+              value: 0.5,
+            },
+            {
+              text: "1",
+              value: 1,
+            },
+            {
+              text: "0.05",
+              value: 0.05,
+            },
+            {
+              text: "0.5",
+              value: 0.5,
+            },
+          ],
         },
-        showLegend: {
-            type: Boolean,
-            default: false,
+        {
+          title: "风速1",
+          yAxisIndex: 3,
+          value: [
+            {
+              text: "1",
+              value: 1,
+            },
+            {
+              text: "5",
+              value: 5,
+            },
+            {
+              text: "3",
+              value: 1,
+            },
+            {
+              text: "1",
+              value: 1,
+            },
+            {
+              text: "5",
+              value: 5,
+            },
+            {
+              text: "3",
+              value: 1,
+            },
+            {
+              text: "1",
+              value: 1,
+            },
+            {
+              text: "5",
+              value: 5,
+            },
+            {
+              text: "3",
+              value: 1,
+            },
+          ],
         },
-        // 轴
-        yAxises: {
-            type: Array,
-            default: () => [
-                {
-                    name: '机舱震动x方向',
-                    min: -0.01,
-                    max: 0,
-                    unit: "",
-                    position: "left",
-                },
-                {
-                    name: '机舱震动y方向',
-                    min: -0.01,
-                    max: 0,
-                    unit: "",
-                    position: "right",
-                },
-                {
-                    name: '机舱震动最大偏移值',
-                    min: 0,
-                    max: 1,
-                    unit: "",
-                    position: "left",
-                },
-                {
-                    name: '风速1',
-                    min: 0,
-                    max: 10,
-                    unit: "",
-                    position: "right",
-                },
-                {
-                    name: '风速2',
-                    min: 0,
-                    max: 10,
-                    unit: "",
-                    position: "left",
-                },
-            ],
+        {
+          title: "风速2",
+          yAxisIndex: 4,
+          value: [
+            {
+              text: "1",
+              value: 1,
+            },
+            {
+              text: "2",
+              value: 2,
+            },
+            {
+              text: "3",
+              value: 1,
+            },
+            {
+              text: "1",
+              value: 1,
+            },
+            {
+              text: "2",
+              value: 2,
+            },
+            {
+              text: "3",
+              value: 1,
+            },
+            {
+              text: "1",
+              value: 1,
+            },
+            {
+              text: "2",
+              value: 2,
+            },
+            {
+              text: "3",
+              value: 1,
+            },
+          ],
         },
+      ],
     },
-    data() {
-        return {
-            id: "",
-            chart: null,
-            color: ["#323E6F", "#1DA0D7", "#05BB4C", "#EDB32F", "#DB5520"],
-        };
+    showLegend: {
+      type: Boolean,
+      default: false,
     },
-    computed: {
-        legend() {
-            return this.list.map((t) => {
-                return t.title;
-            });
+    // 轴
+    yAxises: {
+      type: Array,
+      default: () => [
+        {
+          name: "机舱震动x方向",
+          min: -0.01,
+          max: 0,
+          unit: "",
+          position: "left",
         },
-        xdata() {
-            console.log('this.list[0].value:',this.list)
-            return this.list[0]?.value.map((t) => {
-                return t.text;
-            });
+        {
+          name: "机舱震动y方向",
+          min: -0.01,
+          max: 0,
+          unit: "",
+          position: "right",
         },
-        yAxis() {
-            let result = [];
-            let p = {left: 0, right: 0};
-            this.yAxises.forEach((item, index) => {
-                console.log('yitem:',item)
-                result.push({
-                    type: "value",
-                    name: `${item.name}${item.unit}`,
-                    nameLocation: p[item.position] % 2 == 0 ? "end" : "start",
-                    nameGap: 10,
-                    min: item.min,
-                    max: item.max,
-                    position: item.position,
-                    offset: p[item.position] * 50,
-                    axisLabel: {
-                        formatter: "{value}",
-                        fontSize: 12,
-                    },
-                    //分格线
-                    splitLine: {
-                        lineStyle: {
-                            color: partten.getColor("gray"),
-                            type: "dashed",
-                        },
-                    },
-                    axisLine: {
-                      show: true,
-                    },
-                    axisTick: {
-                      show: true
-                    }
-                });
-                p[item.position]++;
-            });
-console.log('yResult:',result)
-            return result;
-            
+        {
+          name: "机舱震动最大偏移值",
+          min: 0,
+          max: 1,
+          unit: "",
+          position: "left",
         },
-        series() {
-            let result = [];
-           console.log('list:',this.list)
-            this.list.forEach((value, index) => {
-                console.log('seriesValue:',value)
-                console.log('seriesIndex:',index)
-                result.push({
-                    name: value.title,
-                    type: "line",
-                    smooth: true,
-                    zlevel: index,
-                    lineStyle: {
-                        normal: {
-                            color: this.color[index],
-                            width: 1,
-                        },
-                    },
-                    showSymbol: false,
-                    yAxisIndex: value.yAxisIndex,
-                    data: value.value.map((t) => {
-                        return t.value;
-                    }),
-                });
-            });
-
-            return result;
+        {
+          name: "风速1",
+          min: 0,
+          max: 10,
+          unit: "",
+          position: "right",
         },
-    },
-    methods: {
-        resize() {},
-        initChart() {
-            const chart = echarts.init(this.$el);
-
-            let option = this.option();
-            chart.clear();
-          
-            chart.setOption(option);
-            this.resize = function() {
-                chart.resize();
-            };
-
-            window.addEventListener("resize", this.resize);
-        },
-        option: function () {
-            return {
-                color: this.color,
-                tooltip: {
-                    trigger: "axis",
-                    backgroundColor: "rgba(0,0,0,0.4)",
-                    borderColor: partten.getColor("gray"),
-                    textStyle: {
-                        color: "#fff",
-                        fontSize: 12,
-                    },
-                },
-                legend: {
-                    show: this.showLegend,
-                    data: this.legend,
-                    top: 'top',
-                    icon: "circle",
-                    itemWidth: 6,
-                    inactiveColor: partten.getColor("gray"),
-                    textStyle: {
-                        color: partten.getColor("grayl"),
-                        fontSize: 12,
-                    },
-                },
-                grid: {
-                    top: 27,
-                    left: 16,
-                    right: 16,
-                    bottom: 0,
-                    containLabel: true,
-                },
-                xAxis: [
-                    {
-                        type: "category",
-                        boundaryGap: false,
-                        axisLabel: {
-                            formatter: "{value}",
-                            fontSize: 12,
-                            textStyle: {
-                                color: partten.getColor("gray"),
-                            },
-                        },
-                        data: this.xdata,
-                    },
-                ],
-                yAxis: this.yAxis,
-                series: this.series,
-            };
-        },
-        reload: function () {
-            const chart = echarts.getInstanceByDom(this.$el);
-            chart.clear();
-            let option = this.option();
-            chart.setOption(option);
+        {
+          name: "风速2",
+          min: 0,
+          max: 10,
+          unit: "",
+          position: "left",
         },
+      ],
+    },
+  },
+  data() {
+    return {
+      id: "",
+      chart: null,
+      color: ["#323E6F", "#1DA0D7", "#05BB4C", "#EDB32F", "#DB5520"],
+    };
+  },
+  computed: {
+    legend() {
+      return this.list.map((t) => {
+        return t && t.title;
+      });
     },
-    created() {
-        this.id = "pie-chart-" + util.newGUID();
+    xdata() {
+      return this.list[0]?.value.map((t) => {
+        return t.text;
+      });
     },
-    mounted() {
-        this.$nextTick(() => {
-            this.$el.style.width = this.width;
-            this.$el.style.height = this.height;
-            this.initChart();
+    yAxis() {
+      let result = [];
+      let p = { left: 0, right: 0 };
+      this.yAxises.forEach((item, index) => {
+        result.push({
+          type: "value",
+          name: `${item.name}${item.unit}`,
+          nameLocation: p[item.position] % 2 == 0 ? "end" : "start",
+          nameGap: 10,
+          min: item.min,
+          max: item.max,
+          position: item.position,
+          offset: p[item.position] * 50,
+          axisLabel: {
+            formatter: "{value}",
+            fontSize: 12,
+          },
+          //分格线
+          splitLine: {
+            lineStyle: {
+              color: partten.getColor("gray"),
+              type: "dashed",
+            },
+          },
+          axisLine: {
+            show: true,
+          },
+          axisTick: {
+            show: true,
+          },
         });
+        p[item.position]++;
+      });
+      return result;
     },
-    updated() {
-        this.$nextTick(() => {
-            this.initChart();
+    series() {
+      let result = [];
+      this.list.forEach((value, index) => {
+        result.push({
+          name: value.title,
+          type: "line",
+          smooth: true,
+          zlevel: index,
+          lineStyle: {
+            normal: {
+              color: this.color[index],
+              width: 1,
+            },
+          },
+          showSymbol: false,
+          yAxisIndex: value.yAxisIndex,
+          data: value.value.map((t) => {
+            return t.value;
+          }),
         });
+      });
+
+      return result;
+    },
+  },
+  methods: {
+    resize() {},
+    initChart() {
+      const chart = echarts.init(this.$el);
+
+      let option = this.option();
+      chart.clear();
+
+      chart.setOption(option);
+      this.resize = function () {
+        chart.resize();
+      };
+
+      window.addEventListener("resize", this.resize);
+    },
+    option: function () {
+      return {
+        color: this.color,
+        tooltip: {
+          trigger: "axis",
+          backgroundColor: "rgba(0,0,0,0.4)",
+          borderColor: partten.getColor("gray"),
+          textStyle: {
+            color: "#fff",
+            fontSize: 12,
+          },
+        },
+        legend: {
+          show: this.showLegend,
+          data: this.legend,
+          top: "top",
+          icon: "circle",
+          itemWidth: 6,
+          inactiveColor: partten.getColor("gray"),
+          textStyle: {
+            color: partten.getColor("grayl"),
+            fontSize: 12,
+          },
+        },
+        grid: {
+          top: 27,
+          left: 16,
+          right: 16,
+          bottom: 0,
+          containLabel: true,
+        },
+        xAxis: [
+          {
+            type: "category",
+            boundaryGap: false,
+            axisLabel: {
+              formatter: "{value}",
+              fontSize: 12,
+              textStyle: {
+                color: partten.getColor("gray"),
+              },
+            },
+            data: this.xdata,
+          },
+        ],
+        yAxis: this.yAxis,
+        series: this.series,
+      };
     },
-    unmounted() {
-        window.removeEventListener("resize", this.resize);
+    reload: function () {
+      const chart = echarts.getInstanceByDom(this.$el);
+      chart.clear();
+      let option = this.option();
+      chart.setOption(option);
     },
+  },
+  created() {
+    this.id = "pie-chart-" + util.newGUID();
+  },
+  mounted() {
+    this.$nextTick(() => {
+      this.$el.style.width = this.width;
+      this.$el.style.height = this.height;
+      this.initChart();
+    });
+  },
+  updated() {
+    this.$nextTick(() => {
+      this.initChart();
+    });
+  },
+  unmounted() {
+    window.removeEventListener("resize", this.resize);
+  },
 };
 </script>
 
 <style lang="less">
 .chart {
-    width: 100%;
-    height: 100%;
-    display: inline-block;
+  width: 100%;
+  height: 100%;
+  display: inline-block;
 }
 </style>

+ 2 - 5
src/components/coms/collapse/collapse-list.vue

@@ -2,7 +2,7 @@
   <el-scrollbar>
     <div class="com-collapse" :style="{ height: allowScroll ? scrollHeight : 'auto' }">
       <div class="collapse-box" v-for="(menu, i) in list" :key="menu" :class="{ active: menuIndex == i }">
-        <div class="box-text" @click="menuClick(menu,i)">
+        <div class="box-text" @click="menuClick(i)">
           {{ menu.text }}
         </div>
         <div class="collapse-items">
@@ -116,15 +116,12 @@ export default {
   },
   // 函数
   methods: {
-    menuClick (item,index) {
+    menuClick (index) {
       if (this.menuIndex == index) {
         this.menuIndex = -1;
       } else {
         this.menuIndex = index;
       }
-      if(index === 0){
-        this.$emit("click", item);
-      }
       this.itemIndex = -1;
     },
     itemClick (item, index) {

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

@@ -1,70 +1,70 @@
-<template>
-  <div class="query mg-b-8">
-    <div class="query-items">
-      <div class="query-item">
-        <div class="lable">风场:</div>
-        <div class="search-input">
-          <el-select v-model="wpId" clearable placeholder="请选择风场" popper-class="select" @change="getWtList">
-            <el-option v-for="item in wpList" :key="item.id" :label="item.name" :value="item.id">
-            </el-option>
-          </el-select>
-        </div>
-      </div>
-      <div class="query-item">
-        <div class="lable">风机:</div>
-        <div class="search-input">
-          <el-select v-model="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>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  // 传参
-  props: {
-    wpId: { type: String, default: "MHS_FDC" },
-    wtId: { type: String, default: "MG01_01" },
-  },
-  // 事件
-  emits: {
-  },
-  data() {
-    return {
-      wpList: [],
-      wtList: [],
-    };
-  },
-  created() {
-    this.getWpList();
-    this.getWtList();
-  },
-  methods: {
-    async getWpList() {
-      const { data } = await this.API.requestData({
-        subUrl: "powercompare/windfarmAjax",
-      });
-      this.wpList = data.data;
-    },
-    async getWtList() {
-      const { data } = await this.API.requestData({
-        subUrl: "powercompare/windturbineAjax",
-        data: {
-          wpId: this.wpId,
-        },
-      });
-      this.wtList = data.data;
-    },
-    wtChange() {
-      this.$emit("change", { wtId: this.wtId, wpId: this.wpId });
-    },
-  },
-};
-</script>
-
-<style lang="less">
-</style>
+<template>
+  <div class="query mg-b-8">
+    <div class="query-items">
+      <div class="query-item">
+        <div class="lable">风场:</div>
+        <div class="search-input">
+          <el-select v-model="wpId" clearable placeholder="请选择风场" popper-class="select" @change="getWtList">
+            <el-option v-for="item in wpList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </div>
+      </div>
+      <div class="query-item">
+        <div class="lable">风机:</div>
+        <div class="search-input">
+          <el-select v-model="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>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  // 传参
+  props: {
+    wpId: { type: String, default: "MHS_FDC" },
+    wtId: { type: String, default: "MG01_01" },
+  },
+  // 事件
+  emits: {
+  },
+  data() {
+    return {
+      wpList: [],
+      wtList: [],
+    };
+  },
+  created() {
+    this.getWpList();
+    this.getWtList();
+  },
+  methods: {
+    async getWpList() {
+      const { data } = await this.API.requestData({
+        subUrl: "powercompare/windfarmAjax",
+      });
+      this.wpList = data.data;
+    },
+    async getWtList() {
+      const { data } = await this.API.requestData({
+        subUrl: "powercompare/windturbineAjax",
+        data: {
+          wpId: this.wpId,
+        },
+      });
+      this.wtList = data.data;
+    },
+    wtChange() {
+      this.$emit("change", { wtId: this.wtId, wpId: this.wpId });
+    },
+  },
+};
+</script>
+
+<style lang="less">
+</style>

+ 17 - 1
src/router/index.js

@@ -151,7 +151,7 @@ const routes = [{
 },
 {
 	path: "/decision/zbtjfx", // 节能减排KPI
-	name: "decision1",
+	name: "zbtjfx",
 	component: () =>
 		import( /* webpackChunkName: "decision1" */ "../views/Decision/zbtjfx.vue"),
 },
@@ -395,6 +395,16 @@ const routes = [{
 	component: () => import("../views/HealthControl/assess/assessconfig.vue")
 },
 {
+	path: "/health/zhpj/yxpj",//运行评价
+	name: "yxpj",
+	component: () => import("../views/HealthControl/zhpj/yxpj.vue")
+},
+{
+	path: "/health/zhpj/jxpj",//检修评价
+	name: "jxpj",
+	component: () => import("../views/HealthControl/zhpj/jxpj.vue")
+},
+{
 	path: "/health/gzzd/malfunctionDiagnose", // 故障诊断
 	name: "malfunctionDiagnose",
 	component: () => import("../views/malfunctionDiagnose/index.vue")
@@ -412,6 +422,12 @@ const routes = [{
 		import( /* webpackChunkName: "malfunctionStatistics" */ "../views/malfunctionDiagnose/gzfl.vue"),
 },
 {
+	path: "/health/gzzd/yjfl", // 预警分类
+	name: "yjfl",
+	component: () =>
+		import( /* webpackChunkName: "malfunctionStatistics" */ "../views/malfunctionDiagnose/yjfl.vue"),
+},
+{
 	path: "/health/frist",
 	name: "health",
 	component: () =>

+ 315 - 315
src/views/Agc/components/agc-panel.vue

@@ -1,315 +1,315 @@
-<template>
-  <ComPanel v-if="data && data.jcxx" :title="data.jcxx.name || '---'" :icon="data.jcxx.icon" :subTitle="data.jcxx.ddmc || '---'" :color="data.jcxx.color">
-    <table class="panel-table">
-      <tbody>
-        <tr>
-          <td colspan="2">
-            <div class="data-item">
-              <span class="data-item-name">有功设定限值</span>
-              <span class="data-item-count">{{ data.jcxx.AGC002 }}</span>
-              <span class="data-item-unit">MW</span>
-            </div>
-          </td>
-          <td colspan="2">
-            <div class="data-item">
-              <span class="data-item-name">出线功率</span>
-              <span class="data-item-count">{{ data.jcxx.AGC001 }}</span>
-              <span class="data-item-unit">MW</span>
-            </div>
-          </td>
-        </tr>
-        <tr>
-          <td colspan="2">
-            <div class="data-item">
-              <span class="data-item-name">AGC可调上限</span>
-              <span class="data-item-count">{{ data.jcxx.AGC003 }}</span>
-              <span class="data-item-unit">MW</span>
-            </div>
-          </td>
-          <td colspan="2">
-            <div class="data-item">
-              <span class="data-item-name">理论功率</span>
-              <span class="data-item-count">{{ data.jcxx.ZZSGL }}</span>
-              <span class="data-item-unit">MW</span>
-            </div>
-          </td>
-        </tr>
-        <tr>
-          <td colspan="2">
-            <div class="data-item">
-              <span class="data-item-name">AGC可调下限</span>
-              <span class="data-item-count">{{ data.jcxx.AGC004 }}</span>
-              <span class="data-item-unit">MW</span>
-            </div>
-          </td>
-          <td colspan="2">
-            <div class="data-item">
-              <span class="data-item-name">预测功率</span>
-              <span class="data-item-count">{{ data.jcxx.ycgl || 0 }}</span>
-              <span class="data-item-unit">MW</span>
-            </div>
-          </td>
-        </tr>
-        <tr>
-          <td>
-            <div class="data-item">
-              <span class="data-item-name">AGC投入</span>
-              <i :class="'data-item-icon fa fa-chrome ' + (data.jcxx.AGC006 === 1 ? 'red' : 'green')"></i>
-            </div>
-          </td>
-          <td>
-            <div class="data-item">
-              <span class="data-item-name">AGC远方</span>
-              <i :class="'data-item-icon fa fa-chrome ' + (data.jcxx.AGC005 === 1 ? 'red' : 'green')"></i>
-            </div>
-          </td>
-          <td>
-            <div class="data-item">
-              <span class="data-item-name">有功增闭锁</span>
-              <i :class="'data-item-icon fa fa-chrome ' + (data.jcxx.AGC008 === 1 ? 'red' : 'green')"></i>
-            </div>
-          </td>
-          <td>
-            <div class="data-item">
-              <span class="data-item-name">有功减闭锁</span>
-              <i :class="'data-item-icon fa fa-chrome ' + (data.jcxx.AGC007 === 1 ? 'red' : 'green')"></i>
-            </div>
-          </td>
-        </tr>
-      </tbody>
-    </table>
-    <!-- 查看默认实例去除末尾参数 :list 即可 -->
-    <DoubleLineChart v-if="chartType === 'double'" height="13.889vh" :list="data.tb || chartData" @chartClick="chartClick($event)" :isChartClick="true"></DoubleLineChart>
-    <!-- <MultipleLineChart v-if="chartType === 'multiple'" height="13.889vh" :list="data.tb || chartData" :hoverType="'axis'"></MultipleLineChart> -->
-  	<el-dialog v-model="dialogVisible" width="70%" top="10vh" custom-class="modal"
-			:close-on-click-modal="true">
-      <DoubleLineChart height="70vh" :list="data.tb || chartData" ></DoubleLineChart>
-		</el-dialog>
-  </ComPanel>
-</template>
-
-<script>
-import ComPanel from "@com/coms/panel/panel2.vue";
-import DoubleLineChart from "@com/chart/line/marker-line-chart.vue";
-import MultipleLineChart from "@com/chart/line/multiple-line-chart.vue";
-export default {
-  // 名称
-  name: "AgcPanel",
-  // 使用组件
-  components: {
-    ComPanel,
-    DoubleLineChart,
-    MultipleLineChart,
-  },
-  // 传入参数
-  props: {
-    data: Object,
-    chartType: {
-      type: String,
-      default: "double",
-    },
-    chartData: {
-      type: Array,
-      default: [
-        {
-          title: "",
-          smooth: true,
-          value: [],
-        },
-      ],
-    },
-  },
-  // 自定义事件
-  emits: {},
-  // 数据
-  data() {
-    return {
-      dialogVisible:false,
-      list: [
-        {
-          title: "平均风速",
-          yAxisIndex: 1, // 使用单位
-          value: [
-            {
-              text: "1日",
-              value: 0,
-            },
-            {
-              text: "2日",
-              value: 1,
-            },
-            {
-              text: "3日",
-              value: 0,
-            },
-            {
-              text: "4日",
-              value: 1,
-            },
-            {
-              text: "5日",
-              value: 0,
-            },
-            {
-              text: "6日",
-              value: 1,
-            },
-            {
-              text: "7日",
-              value: 0,
-            },
-          ],
-        },
-        {
-          title: "应发功率",
-          yAxisIndex: 0,
-          value: [
-            {
-              text: "1日",
-              value: 4,
-            },
-            {
-              text: "2日",
-              value: 2,
-            },
-            {
-              text: "3日",
-              value: 4,
-            },
-            {
-              text: "4日",
-              value: 2,
-            },
-            {
-              text: "5日",
-              value: 4,
-            },
-            {
-              text: "6日",
-              value: 2,
-            },
-            {
-              text: "7日",
-              value: 4,
-            },
-          ],
-        },
-        {
-          title: "实际功率",
-          yAxisIndex: 0,
-          value: [
-            {
-              text: "1日",
-              value: 1,
-            },
-            {
-              text: "2日",
-              value: 3,
-            },
-            {
-              text: "3日",
-              value: 1,
-            },
-            {
-              text: "4日",
-              value: 3,
-            },
-            {
-              text: "5日",
-              value: 1,
-            },
-            {
-              text: "6日",
-              value: 3,
-            },
-            {
-              text: "7日",
-              value: 1,
-            },
-          ],
-        },
-      ],
-    };
-  },
-  // 函数
-  methods: {
-    chartClick(){
-      this.dialogVisible = true;
-    }
-  },
-  // 生命周期钩子
-  beforeCreate() {
-    // 创建前
-  },
-  created() {
-    // 创建后
-  },
-  beforeMount() {
-    // 渲染前
-  },
-  mounted() {
-    // 渲染后
-    this.list = this.data || [
-      {
-        title: "",
-        yAxisIndex: 1, // 使用单位
-        value: [],
-      },
-    ];
-  },
-  beforeUpdate() {
-    // 数据更新前
-  },
-  updated() {
-    // 数据更新后
-  },
-  watch: {
-    daya(res) {
-      this.list = res;
-    },
-  },
-};
-</script>
-
-<style lang="less">
-.panel-table {
-  width: 100%;
-
-  .data-item {
-    background-color: fade(@gray, 20);
-    padding: 0.278vh;
-    padding-left: 0.7407vh;
-    font-size: 1.204vh;
-    display: flex;
-    flex-direction: row;
-
-    .data-item-name {
-      color: @gray;
-    }
-
-    .data-item-count {
-      color: @green;
-      margin-left: auto;
-      margin-right: 0.556vh;
-    }
-
-    .data-item-unit {
-      color: @gray;
-    }
-
-    .data-item-icon {
-      margin: auto;
-      margin-right: 0;
-      font-size: @fontsize-s;
-    }
-  }
-}
-
-.green {
-  color: @green;
-}
-
-.red {
-  color: @red;
-}
-</style>
+<template>
+  <ComPanel v-if="data && data.jcxx" :title="data.jcxx.name || '---'" :icon="data.jcxx.icon" :subTitle="data.jcxx.ddmc || '---'" :color="data.jcxx.color">
+    <table class="panel-table">
+      <tbody>
+        <tr>
+          <td colspan="2">
+            <div class="data-item">
+              <span class="data-item-name">有功设定限值</span>
+              <span class="data-item-count">{{ data.jcxx.AGC002 }}</span>
+              <span class="data-item-unit">MW</span>
+            </div>
+          </td>
+          <td colspan="2">
+            <div class="data-item">
+              <span class="data-item-name">出线功率</span>
+              <span class="data-item-count">{{ data.jcxx.AGC001 }}</span>
+              <span class="data-item-unit">MW</span>
+            </div>
+          </td>
+        </tr>
+        <tr>
+          <td colspan="2">
+            <div class="data-item">
+              <span class="data-item-name">AGC可调上限</span>
+              <span class="data-item-count">{{ data.jcxx.AGC003 }}</span>
+              <span class="data-item-unit">MW</span>
+            </div>
+          </td>
+          <td colspan="2">
+            <div class="data-item">
+              <span class="data-item-name">理论功率</span>
+              <span class="data-item-count">{{ data.jcxx.ZZSGL }}</span>
+              <span class="data-item-unit">MW</span>
+            </div>
+          </td>
+        </tr>
+        <tr>
+          <td colspan="2">
+            <div class="data-item">
+              <span class="data-item-name">AGC可调下限</span>
+              <span class="data-item-count">{{ data.jcxx.AGC004 }}</span>
+              <span class="data-item-unit">MW</span>
+            </div>
+          </td>
+          <td colspan="2">
+            <div class="data-item">
+              <span class="data-item-name">预测功率</span>
+              <span class="data-item-count">{{ data.jcxx.ycgl || 0 }}</span>
+              <span class="data-item-unit">MW</span>
+            </div>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <div class="data-item">
+              <span class="data-item-name">AGC投入</span>
+              <i :class="'data-item-icon fa fa-chrome ' + (data.jcxx.AGC006 === 1 ? 'red' : 'green')"></i>
+            </div>
+          </td>
+          <td>
+            <div class="data-item">
+              <span class="data-item-name">AGC远方</span>
+              <i :class="'data-item-icon fa fa-chrome ' + (data.jcxx.AGC005 === 1 ? 'red' : 'green')"></i>
+            </div>
+          </td>
+          <td>
+            <div class="data-item">
+              <span class="data-item-name">有功增闭锁</span>
+              <i :class="'data-item-icon fa fa-chrome ' + (data.jcxx.AGC008 === 1 ? 'red' : 'green')"></i>
+            </div>
+          </td>
+          <td>
+            <div class="data-item">
+              <span class="data-item-name">有功减闭锁</span>
+              <i :class="'data-item-icon fa fa-chrome ' + (data.jcxx.AGC007 === 1 ? 'red' : 'green')"></i>
+            </div>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+    <!-- 查看默认实例去除末尾参数 :list 即可 -->
+    <DoubleLineChart v-if="chartType === 'double'" height="13.889vh" :list="data.tb || chartData" @chartClick="chartClick($event)" :isChartClick="true"></DoubleLineChart>
+    <!-- <MultipleLineChart v-if="chartType === 'multiple'" height="13.889vh" :list="data.tb || chartData" :hoverType="'axis'"></MultipleLineChart> -->
+  	<el-dialog v-model="dialogVisible" width="70%" top="10vh" custom-class="modal"
+			:close-on-click-modal="true">
+      <DoubleLineChart height="70vh" :list="data.tb || chartData" ></DoubleLineChart>
+		</el-dialog>
+  </ComPanel>
+</template>
+
+<script>
+import ComPanel from "@com/coms/panel/panel2.vue";
+import DoubleLineChart from "@com/chart/line/marker-line-chart.vue";
+import MultipleLineChart from "@com/chart/line/multiple-line-chart.vue";
+export default {
+  // 名称
+  name: "AgcPanel",
+  // 使用组件
+  components: {
+    ComPanel,
+    DoubleLineChart,
+    MultipleLineChart,
+  },
+  // 传入参数
+  props: {
+    data: Object,
+    chartType: {
+      type: String,
+      default: "double",
+    },
+    chartData: {
+      type: Array,
+      default: [
+        {
+          title: "",
+          smooth: true,
+          value: [],
+        },
+      ],
+    },
+  },
+  // 自定义事件
+  emits: {},
+  // 数据
+  data() {
+    return {
+      dialogVisible:false,
+      list: [
+        {
+          title: "平均风速",
+          yAxisIndex: 1, // 使用单位
+          value: [
+            {
+              text: "1日",
+              value: 0,
+            },
+            {
+              text: "2日",
+              value: 1,
+            },
+            {
+              text: "3日",
+              value: 0,
+            },
+            {
+              text: "4日",
+              value: 1,
+            },
+            {
+              text: "5日",
+              value: 0,
+            },
+            {
+              text: "6日",
+              value: 1,
+            },
+            {
+              text: "7日",
+              value: 0,
+            },
+          ],
+        },
+        {
+          title: "应发功率",
+          yAxisIndex: 0,
+          value: [
+            {
+              text: "1日",
+              value: 4,
+            },
+            {
+              text: "2日",
+              value: 2,
+            },
+            {
+              text: "3日",
+              value: 4,
+            },
+            {
+              text: "4日",
+              value: 2,
+            },
+            {
+              text: "5日",
+              value: 4,
+            },
+            {
+              text: "6日",
+              value: 2,
+            },
+            {
+              text: "7日",
+              value: 4,
+            },
+          ],
+        },
+        {
+          title: "实际功率",
+          yAxisIndex: 0,
+          value: [
+            {
+              text: "1日",
+              value: 1,
+            },
+            {
+              text: "2日",
+              value: 3,
+            },
+            {
+              text: "3日",
+              value: 1,
+            },
+            {
+              text: "4日",
+              value: 3,
+            },
+            {
+              text: "5日",
+              value: 1,
+            },
+            {
+              text: "6日",
+              value: 3,
+            },
+            {
+              text: "7日",
+              value: 1,
+            },
+          ],
+        },
+      ],
+    };
+  },
+  // 函数
+  methods: {
+    chartClick(){
+      this.dialogVisible = true;
+    }
+  },
+  // 生命周期钩子
+  beforeCreate() {
+    // 创建前
+  },
+  created() {
+    // 创建后
+  },
+  beforeMount() {
+    // 渲染前
+  },
+  mounted() {
+    // 渲染后
+    this.list = this.data || [
+      {
+        title: "",
+        yAxisIndex: 1, // 使用单位
+        value: [],
+      },
+    ];
+  },
+  beforeUpdate() {
+    // 数据更新前
+  },
+  updated() {
+    // 数据更新后
+  },
+  watch: {
+    daya(res) {
+      this.list = res;
+    },
+  },
+};
+</script>
+
+<style lang="less">
+.panel-table {
+  width: 100%;
+
+  .data-item {
+    background-color: fade(@gray, 20);
+    padding: 0.278vh;
+    padding-left: 0.7407vh;
+    font-size: 1.204vh;
+    display: flex;
+    flex-direction: row;
+
+    .data-item-name {
+      color: @gray;
+    }
+
+    .data-item-count {
+      color: @green;
+      margin-left: auto;
+      margin-right: 0.556vh;
+    }
+
+    .data-item-unit {
+      color: @gray;
+    }
+
+    .data-item-icon {
+      margin: auto;
+      margin-right: 0;
+      font-size: @fontsize-s;
+    }
+  }
+}
+
+.green {
+  color: @green;
+}
+
+.red {
+  color: @red;
+}
+</style>

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

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

+ 1 - 0
src/views/HealthControl/Health0.vue

@@ -789,6 +789,7 @@ export default {
              wtId : this.value2
         },
         success(res) {
+          console.log('findWtHealthInfo:',res)
           that.yxtableData.data = res.data.bjyxls;
           that.tableData2.data =  res.data.djpgls;
         },

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 681 - 681
src/views/HealthControl/Health10.vue


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

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

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

@@ -225,7 +225,6 @@ export default {
         success(res) {
           that.tableLoading = false;
           if (res.data.length) {
-            console.log(11111111111);
             const tableTargetName = {
               target001: "平均切入风速",
               target002: "平均达到额定风速",

+ 79 - 80
src/views/HealthControl/healthLineChart.vue

@@ -1,81 +1,80 @@
-<template>
-  <div class="pageBox">
-    <wt-chooser @change="switchWt" :wpId="wpId" :wtId="wtId"></wt-chooser>
-    <simple-line-chart :height="'100px'" v-for="(item, index) in chartData" :key="index" :title="item.title" :data="item.data" :color="item.color" :lineTitle="item.lineTitle" />
-  </div>
-</template>
-
-<script>
-import SimpleLineChart from "../../components/chart/line/simple-line-chart.vue";
-import WtChooser from "@com/coms/wt-chooser/wt-chooser.vue"
-export default {
-  setup() {},
-  components: { SimpleLineChart ,WtChooser},
-  data() {
-    return {
-      chartData:[]
-    };
-  },
-
-  created() {
-    this.wtId = this.$route.params.wtId;
-    this.wpId = this.$route.params.wpId;
-    this.requestData();
-  },
-  
-  methods:{
-    switchWt(data){
-      
-      this.$router.push(`/health/health4/healthLineChart/${data.wpId}/${data.wtId}`);
-      this.wtId = this.$route.params.wtId;
-      this.wpId = this.$route.params.wpId;
-      this.requestData();
-    },
-    requestData(){
-      let that=this;
-      that.API.requestData({
-        method: "POST",
-        subUrl: "healthsub/hsFjValueIndex",
-        data:{
-          wtId: that.wtId
-        },
-        success(res) {
-
-          const color=["green","yellow","purple","blue","orange"];
-          let chartData=[];
-          let lineTitle=[];
-
-          res.data.xData.forEach(ele=>{
-            lineTitle.push(new Date(ele).formatDate("hh:mm"));
-          });
-
-          res.data.datasets.forEach((ele,index)=>{
-            chartData.push({
-              title:ele.name,
-              data:ele.data,
-              color:color[index],
-              lineTitle
-            });
-          });
-          that.chartData=chartData;
-        },
-      });
-    }
-  }
-};
-</script>
-
-<style lang="less" scoped>
-.pageBox {
-  width: 100%;
-  height:calc(100% - 1.481vh * 2);
-  display: flex;
-  flex-direction: column;
-  justify-content: space-between;
-
-  .chart{
-    width: 100%;
-    height:25%;
-  }
-}
+<template>
+  <div class="pageBox">
+    <wt-chooser @change="switchWt" :wpId="wpId" :wtId="wtId"></wt-chooser>
+    <simple-line-chart :height="'100px'" v-for="(item, index) in chartData" :key="index" :title="item.title" :data="item.data" :color="item.color" :lineTitle="item.lineTitle" />
+  </div>
+</template>
+
+<script>
+import SimpleLineChart from "../../components/chart/line/simple-line-chart.vue";
+import WtChooser from "@com/coms/wt-chooser/wt-chooser.vue"
+export default {
+  setup() {},
+  components: { SimpleLineChart ,WtChooser},
+  data() {
+    return {
+      chartData:[]
+    };
+  },
+
+  created() {
+    this.wtId = this.$route.params.wtId;
+    this.wpId = this.$route.params.wpId;
+    this.requestData();
+  },
+  
+  methods:{
+    switchWt(data){
+      this.$router.push(`/health/health4/healthLineChart/${data.wpId}/${data.wtId}`);
+      this.wtId = this.$route.params.wtId;
+      this.wpId = this.$route.params.wpId;
+      this.requestData();
+    },
+    requestData(){
+      let that=this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "healthsub/hsFjValueIndex",
+        data:{
+          wtId: that.wtId
+        },
+        success(res) {
+
+          const color=["green","yellow","purple","blue","orange"];
+          let chartData=[];
+          let lineTitle=[];
+
+          res.data.xData.forEach(ele=>{
+            lineTitle.push(new Date(ele).formatDate("hh:mm"));
+          });
+
+          res.data.datasets.forEach((ele,index)=>{
+            chartData.push({
+              title:ele.name,
+              data:ele.data,
+              color:color[index],
+              lineTitle
+            });
+          });
+          that.chartData=chartData;
+        },
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+.pageBox {
+  width: 100%;
+  height:calc(100% - 1.481vh * 2);
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+
+  .chart{
+    width: 100%;
+    height:25%;
+  }
+}
 </style>

+ 298 - 298
src/views/HealthControl/healthLineChart2.vue

@@ -1,298 +1,298 @@
-<template>
-  <div class="health-7">
-    <wt-chooser @change="switchWt" :wpId="wpId" :wtId="wtId"></wt-chooser>
-    <div class="power-info mg-b-16">
-      <div class="info-tab">
-        <div
-          class="tab"
-          v-for="(item, index) in infoList"
-          :key="index"
-          :class="item.active ? 'active' : ''"
-          @click="onClickInfo(item)"
-        >
-          <i class="svg-icon svg-icon svg-icon-sm">
-            <svg-icon :svgid="item.svgid" />
-          </i>
-          <span> {{ item.title }} </span>
-        </div>
-        <div class="empty"></div>
-      </div>
-      <div class="info-chart">
-        <panel class="info-chart-panel" :title="'健康趋势'">
-          <vertival-bar-line-chart :height="'310px'" :bardata="bardata" :lineData="lineData"/>
-        </panel>
-      </div>
-    </div>
-    <div class="fc-info mg-b-16">
-      <panel :title="'健康走势图'" :showLine="false">
-        <normal-line-chart :height="'150px'" />
-      </panel>
-    </div>
-    <div class="data-list">
-      <Table :data="tableData" :canScroll="true" />
-    </div>
-  </div>
-</template>
-
-<script>
-import VertivalBarLineChart from "../../components/chart/combination/health-bar-line-chart.vue";
-import NormalLineChart from "../../components/chart/line/normal-line-chart.vue";
-import SvgIcon from "../../components/coms/icon/svg-icon.vue";
-import Panel from "../../components/coms/panel/panel.vue";
-import Table from "../../components/coms/table/table.vue";
-import WtChooser from "@com/coms/wt-chooser/wt-chooser.vue"
-export default {
-  setup() {},
-  components: { SvgIcon, Panel, VertivalBarLineChart, NormalLineChart, Table, WtChooser },
-  data() {
-    return {
-      infoList: [
-        // {title: '24小时健康趋势', svgid: 'svg-24-houre', active: false, type: 'houre'},
-        { title: "7日健康趋势", svgid: "svg-h-day", active: true, type: "day" },
-        { title: "30日健康趋势", svgid: "svg-h-month", active: false, type: "month"},
-      ],
-      tableData: {
-        column: [
-          { name: "部件名称",field: "name" },
-          { name: "MTBF(h)",field: "v1", is_num: true },
-          { name: "MTTR(h)",field: "v2", is_num: true },
-          { name: "损失电量(kw/h)",field: "v3",is_num: true },
-          { name: "当前状态",field: "v4",
-            template: function(data) {
-              if (data == 1) return "<div class='dot green'></div>";
-              else if (data == 2) return "<div class='dot purple'></div>";
-              else if (data == 3) return "<div class='dot yellow'></div>";
-              else if (data == 4) return "<div class='dot orange'></div>";
-            },
-          },
-        ],
-        data: [],
-      },
-      bardata: { area: [], legend: [], data: [] }, // 损失电量分析echart数值
-      lineData: [],
-      wtId: undefined,
-      wpId: undefined,
-      hisValue: {},  //健康走势图
-    };
-  },
-  created() {
-    this.init();
-  },
-  methods:{
-    init(){
-      this.wtId = this.$route.params.wtId;
-      this.wpId = this.$route.params.wpId;
-      this.requestCoulometry(2);
-      this.requestHisValue();
-      this.requestMttrrand();
-    },
-    switchWt(data){
-      this.$router.push(`/health/health4/healthLineChart2/${data.wpId}/${data.wtId}`);
-      this.init();
-    },
-     // 未确认缺陷按钮下的健康趋势选项
-    onClickInfo(item) {
-      this.infoList.forEach((element) => {
-        if (item.type == element.type) {
-          item.active = true;
-          switch (item.type) {
-            case "day":
-              this.requestCoulometry(2);
-              break;
-            case "month":
-              this.requestCoulometry(3);
-          }
-        } else {
-          element.active = false;
-        }
-      });
-    },
-    // 损失电量分析  type:1 表示24小时健康趋势,2 表示七天健康趋势 3 表示30天健康趋势
-    requestCoulometry(type) {
-      let that = this;
-      that.API.requestData({
-        method: "POST",
-        timeout: 8000,
-        subUrl: "recommen/findAllChartjz",
-        data: { wpId: 0, type: type },
-        success(res) {
-          if (res.code == 200) {
-            that.bardata.legend = ["优数量", "良数量", "差数量"];
-            that.lineData = res.data.lvchart;
-            that.bardata.area = res.data.datechart;
-            that.bardata.data[2] = res.data.cslchart;
-            that.bardata.data[1] = res.data.lslchart;
-            that.bardata.data[0] = res.data.yslchart;
-          }
-        },
-      });
-    },
-    //风机健康走势图
-    requestHisValue(){
-      let that = this;
-      that.API.requestData({
-        method: "POST",
-        subUrl: "healthsub/findWtHisValueForBj",
-        data: { wtId: that.wtId },
-        success(res) {
-          if(res.code == 200){
-            let data = res.data;
-            data.time = data.time.slice(0, 65)
-            that.hisValue = data
-          }
-        },
-      });
-    },
-    //部件健康情况
-    requestMttrrand(){
-      let that = this;
-      that.API.requestData({
-        method: "POST",
-        subUrl: "healthsub/getWtMttrandMtbfByBj",
-        data: { wtId: that.wtId },
-        success(res) {
-          if(res.code == 200){
-            let data = res.data;
-            that.tableData.data = [
-              {name:data.clx[1], v1:data.clx[4], v2:data.clx[5], v3:data.clx[6], v4:data.clx[0]},
-              {name:data.fdj[1], v1:data.fdj[4], v2:data.fdj[5], v3:data.fdj[6], v4:data.fdj[0]},
-              {name:data.bj[1], v1:data.bj[4], v2:data.bj[5], v3:data.bj[6], v4:data.bj[0]},
-              {name:data.zk[1], v1:data.zk[4], v2:data.zk[5], v3:data.zk[6], v4:data.zk[0]},
-              {name:data.zz[1], v1:data.zz[4], v2:data.zz[5], v3:data.zz[6], v4:data.zz[0]},
-              {name:data.ph[1], v1:data.ph[4], v2:data.ph[5], v3:data.ph[6], v4:data.ph[0]},
-              {name:data.jc[1], v1:data.jc[4], v2:data.jc[5], v3:data.jc[6], v4:data.jc[0]},
-              {name:data.bpq[1], v1:data.bpq[4], v2:data.bpq[5], v3:data.bpq[6], v4:data.bpq[0]},
-            ]
-          }
-        },
-      });
-    }
-  }
-};
-</script>
-
-<style lang="less">
-.health-7 {
-  // 电量健康情况
-  .power-info {
-    display: flex;
-    .info-tab {
-      flex: 0 0 156px;
-      display: flex;
-      flex-direction: column;
-      height: 350px;
-      margin-right: 1.4815vh;
-
-      .tab {
-        position: relative;
-        flex: 0 0 auto;
-        text-align: center;
-        line-height: 33px;
-        margin-right: 8px;
-        color: @gray-l;
-        font-size: 12px;
-        background: fade(@gray, 20);
-        border: 1px solid fade(@gray, 20);
-
-        display: flex;
-        align-items: center;
-
-        i {
-          margin: 0 1.4815vh;
-          svg use {
-            fill: @gray-l;
-          }
-        }
-
-        &:hover,
-        &.active {
-          background: fade(@green, 20);
-          border: 1px solid @green;
-          color: @green;
-          cursor: pointer;
-          i {
-            svg use {
-              fill: @green;
-            }
-          }
-        }
-
-        &.active::after {
-          box-sizing: content-box;
-          width: 0px;
-          height: 0px;
-          position: absolute;
-          right: -19px;
-          padding: 0;
-          border-bottom: 9px solid @green;
-          border-top: 9px solid transparent;
-          border-left: 9px solid transparent;
-          border-right: 9px solid transparent;
-          display: block;
-          content: "";
-          z-index: 10;
-          transform: rotate(90deg);
-        }
-
-        &.active::before {
-          box-sizing: content-box;
-          width: 0px;
-          height: 0px;
-          position: absolute;
-          right: -17px;
-          padding: 0;
-          border-bottom: 9px solid #063319;
-          border-top: 9px solid transparent;
-          border-left: 9px solid transparent;
-          border-right: 9px solid transparent;
-          display: block;
-          content: "";
-          z-index: 12;
-          transform: rotate(90deg);
-        }
-
-        & + .tab {
-          margin-top: 0.7407vh;
-        }
-
-        &:last-child {
-          text-align: center;
-          justify-content: center;
-        }
-      }
-
-      .empty {
-        flex: 1 0 auto;
-      }
-    }
-
-    .info-chart {
-      flex: 1 0 auto;
-    }
-  }
-
-  .data-list {
-    .dot {
-      width: 12px;
-      height: 12px;
-      margin: auto;
-
-      &.green {
-        background: @green;
-      }
-
-      &.purple {
-        background: @purple;
-      }
-
-      &.yellow {
-        background: @yellow;
-      }
-
-      &.orange {
-        background: @orange;
-      }
-    }
-  }
-}
-</style>
+<template>
+  <div class="health-7">
+    <wt-chooser @change="switchWt" :wpId="wpId" :wtId="wtId"></wt-chooser>
+    <div class="power-info mg-b-16">
+      <div class="info-tab">
+        <div
+          class="tab"
+          v-for="(item, index) in infoList"
+          :key="index"
+          :class="item.active ? 'active' : ''"
+          @click="onClickInfo(item)"
+        >
+          <i class="svg-icon svg-icon svg-icon-sm">
+            <svg-icon :svgid="item.svgid" />
+          </i>
+          <span> {{ item.title }} </span>
+        </div>
+        <div class="empty"></div>
+      </div>
+      <div class="info-chart">
+        <panel class="info-chart-panel" :title="'健康趋势'">
+          <vertival-bar-line-chart :height="'310px'" :bardata="bardata" :lineData="lineData"/>
+        </panel>
+      </div>
+    </div>
+    <div class="fc-info mg-b-16">
+      <panel :title="'健康走势图'" :showLine="false">
+        <normal-line-chart :height="'150px'" />
+      </panel>
+    </div>
+    <div class="data-list">
+      <Table :data="tableData" :canScroll="true" />
+    </div>
+  </div>
+</template>
+
+<script>
+import VertivalBarLineChart from "../../components/chart/combination/health-bar-line-chart.vue";
+import NormalLineChart from "../../components/chart/line/normal-line-chart.vue";
+import SvgIcon from "../../components/coms/icon/svg-icon.vue";
+import Panel from "../../components/coms/panel/panel.vue";
+import Table from "../../components/coms/table/table.vue";
+import WtChooser from "@com/coms/wt-chooser/wt-chooser.vue"
+export default {
+  setup() {},
+  components: { SvgIcon, Panel, VertivalBarLineChart, NormalLineChart, Table, WtChooser },
+  data() {
+    return {
+      infoList: [
+        // {title: '24小时健康趋势', svgid: 'svg-24-houre', active: false, type: 'houre'},
+        { title: "7日健康趋势", svgid: "svg-h-day", active: true, type: "day" },
+        { title: "30日健康趋势", svgid: "svg-h-month", active: false, type: "month"},
+      ],
+      tableData: {
+        column: [
+          { name: "部件名称",field: "name" },
+          { name: "MTBF(h)",field: "v1", is_num: true },
+          { name: "MTTR(h)",field: "v2", is_num: true },
+          { name: "损失电量(kw/h)",field: "v3",is_num: true },
+          { name: "当前状态",field: "v4",
+            template: function(data) {
+              if (data == 1) return "<div class='dot green'></div>";
+              else if (data == 2) return "<div class='dot purple'></div>";
+              else if (data == 3) return "<div class='dot yellow'></div>";
+              else if (data == 4) return "<div class='dot orange'></div>";
+            },
+          },
+        ],
+        data: [],
+      },
+      bardata: { area: [], legend: [], data: [] }, // 损失电量分析echart数值
+      lineData: [],
+      wtId: undefined,
+      wpId: undefined,
+      hisValue: {},  //健康走势图
+    };
+  },
+  created() {
+    this.init();
+  },
+  methods:{
+    init(){
+      this.wtId = this.$route.params.wtId;
+      this.wpId = this.$route.params.wpId;
+      this.requestCoulometry(2);
+      this.requestHisValue();
+      this.requestMttrrand();
+    },
+    switchWt(data){
+      this.$router.push(`/health/health4/healthLineChart2/${data.wpId}/${data.wtId}`);
+      this.init();
+    },
+     // 未确认缺陷按钮下的健康趋势选项
+    onClickInfo(item) {
+      this.infoList.forEach((element) => {
+        if (item.type == element.type) {
+          item.active = true;
+          switch (item.type) {
+            case "day":
+              this.requestCoulometry(2);
+              break;
+            case "month":
+              this.requestCoulometry(3);
+          }
+        } else {
+          element.active = false;
+        }
+      });
+    },
+    // 损失电量分析  type:1 表示24小时健康趋势,2 表示七天健康趋势 3 表示30天健康趋势
+    requestCoulometry(type) {
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        timeout: 8000,
+        subUrl: "recommen/findAllChartjz",
+        data: { wpId: 0, type: type },
+        success(res) {
+          if (res.code == 200) {
+            that.bardata.legend = ["优数量", "良数量", "差数量"];
+            that.lineData = res.data.lvchart;
+            that.bardata.area = res.data.datechart;
+            that.bardata.data[2] = res.data.cslchart;
+            that.bardata.data[1] = res.data.lslchart;
+            that.bardata.data[0] = res.data.yslchart;
+          }
+        },
+      });
+    },
+    //风机健康走势图
+    requestHisValue(){
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "healthsub/findWtHisValueForBj",
+        data: { wtId: that.wtId },
+        success(res) {
+          if(res.code == 200){
+            let data = res.data;
+            data.time = data.time.slice(0, 65)
+            that.hisValue = data
+          }
+        },
+      });
+    },
+    //部件健康情况
+    requestMttrrand(){
+      let that = this;
+      that.API.requestData({
+        method: "POST",
+        subUrl: "healthsub/getWtMttrandMtbfByBj",
+        data: { wtId: that.wtId },
+        success(res) {
+          if(res.code == 200){
+            let data = res.data;
+            that.tableData.data = [
+              {name:data.clx[1], v1:data.clx[4], v2:data.clx[5], v3:data.clx[6], v4:data.clx[0]},
+              {name:data.fdj[1], v1:data.fdj[4], v2:data.fdj[5], v3:data.fdj[6], v4:data.fdj[0]},
+              {name:data.bj[1], v1:data.bj[4], v2:data.bj[5], v3:data.bj[6], v4:data.bj[0]},
+              {name:data.zk[1], v1:data.zk[4], v2:data.zk[5], v3:data.zk[6], v4:data.zk[0]},
+              {name:data.zz[1], v1:data.zz[4], v2:data.zz[5], v3:data.zz[6], v4:data.zz[0]},
+              {name:data.ph[1], v1:data.ph[4], v2:data.ph[5], v3:data.ph[6], v4:data.ph[0]},
+              {name:data.jc[1], v1:data.jc[4], v2:data.jc[5], v3:data.jc[6], v4:data.jc[0]},
+              {name:data.bpq[1], v1:data.bpq[4], v2:data.bpq[5], v3:data.bpq[6], v4:data.bpq[0]},
+            ]
+          }
+        },
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less">
+.health-7 {
+  // 电量健康情况
+  .power-info {
+    display: flex;
+    .info-tab {
+      flex: 0 0 156px;
+      display: flex;
+      flex-direction: column;
+      height: 350px;
+      margin-right: 1.4815vh;
+
+      .tab {
+        position: relative;
+        flex: 0 0 auto;
+        text-align: center;
+        line-height: 33px;
+        margin-right: 8px;
+        color: @gray-l;
+        font-size: 12px;
+        background: fade(@gray, 20);
+        border: 1px solid fade(@gray, 20);
+
+        display: flex;
+        align-items: center;
+
+        i {
+          margin: 0 1.4815vh;
+          svg use {
+            fill: @gray-l;
+          }
+        }
+
+        &:hover,
+        &.active {
+          background: fade(@green, 20);
+          border: 1px solid @green;
+          color: @green;
+          cursor: pointer;
+          i {
+            svg use {
+              fill: @green;
+            }
+          }
+        }
+
+        &.active::after {
+          box-sizing: content-box;
+          width: 0px;
+          height: 0px;
+          position: absolute;
+          right: -19px;
+          padding: 0;
+          border-bottom: 9px solid @green;
+          border-top: 9px solid transparent;
+          border-left: 9px solid transparent;
+          border-right: 9px solid transparent;
+          display: block;
+          content: "";
+          z-index: 10;
+          transform: rotate(90deg);
+        }
+
+        &.active::before {
+          box-sizing: content-box;
+          width: 0px;
+          height: 0px;
+          position: absolute;
+          right: -17px;
+          padding: 0;
+          border-bottom: 9px solid #063319;
+          border-top: 9px solid transparent;
+          border-left: 9px solid transparent;
+          border-right: 9px solid transparent;
+          display: block;
+          content: "";
+          z-index: 12;
+          transform: rotate(90deg);
+        }
+
+        & + .tab {
+          margin-top: 0.7407vh;
+        }
+
+        &:last-child {
+          text-align: center;
+          justify-content: center;
+        }
+      }
+
+      .empty {
+        flex: 1 0 auto;
+      }
+    }
+
+    .info-chart {
+      flex: 1 0 auto;
+    }
+  }
+
+  .data-list {
+    .dot {
+      width: 12px;
+      height: 12px;
+      margin: auto;
+
+      &.green {
+        background: @green;
+      }
+
+      &.purple {
+        background: @purple;
+      }
+
+      &.yellow {
+        background: @yellow;
+      }
+
+      &.orange {
+        background: @orange;
+      }
+    }
+  }
+}
+</style>

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

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

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

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

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

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

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

@@ -174,7 +174,7 @@
               <table class="table-card">
                 <tr class="">
                   <td class="text gray">装机容量</td>
-                  <td class="value green">{{ Number(jczbmap.zjrl)}}</td>
+                  <td class="value green">{{ Number(jczbmap.zjrl) }}</td>
                   <td class="unit gray">MW</td>
                 </tr>
                 <tr class="">
@@ -187,7 +187,7 @@
                     {{ wpId === "0" ? "减排二氧化硫" : "年运行小时" }}
                   </td>
                   <td class="value green">
-                     <!-- {{ wpId === "0" ? jczbmap.jpeyhl  : gxkmap.nyxxs }} -->
+                    <!-- {{ wpId === "0" ? jczbmap.jpeyhl  : gxkmap.nyxxs }} -->
                     {{ wpId === "0" ? jczbmap.jpeyhl : gxkmap.nyxxs }}
                   </td>
                   <!-- <td class="unit gray">
@@ -203,7 +203,7 @@
                   </td>
                   <td class="value green">
                     <!-- {{ wpId === "0" ? jczbmap.jpeyht  : gxkmap.ndxkyss }} -->
-                     {{ wpId === "0" ? jczbmap.jpeyht : gxkmap.ndxkyss }}
+                    {{ wpId === "0" ? jczbmap.jpeyht : gxkmap.ndxkyss }}
                   </td>
                   <!-- <td class="unit gray">{{ wpId === "0" ? "万吨" : "%" }}</td> -->
                   <td class="unit gray">{{ wpId === "0" ? "吨" : "%" }}</td>
@@ -214,7 +214,7 @@
                   </td>
                   <td class="value green">
                     <!-- {{ wpId === "0" ? jczbmap.jys  : gxkmap.ngzxs }} -->
-                     {{ wpId === "0" ? jczbmap.jys : gxkmap.ngzxs }}
+                    {{ wpId === "0" ? jczbmap.jys : gxkmap.ngzxs }}
                   </td>
                   <!-- <td class="unit gray">
                     {{ wpId === "0" ? "万吨" : "小时" }}
@@ -229,7 +229,7 @@
                   </td>
                   <td class="value green">
                     <!-- {{ wpId === "0" ? jczbmap.jybm  : gxkmap.ndjxs }} -->
-                      {{ wpId === "0" ? jczbmap.jybm : gxkmap.ndjxs }}
+                    {{ wpId === "0" ? jczbmap.jybm : gxkmap.ndjxs }}
                   </td>
                   <!-- <td class="unit gray">
                     {{ wpId === "0" ? "万吨" : "小时" }}
@@ -791,15 +791,27 @@
       top="10vh"
       custom-class="modal"
       :close-on-click-modal="true"
-      @closed="dialogType = ''"
+      @closed="
+        (res) => {
+          dialogType = '';
+          powerLineChartData = null;
+        }
+      "
     >
       <Table :data="dialogData" v-if="dialogType === 'table'" />
       <multiple-y-line-chart-normal
         height="500px"
+        :list="powerLineChartData"
+        :yAxises="powerLineChartYAxises"
+        :showLegend="true"
+        v-if="dialogType === 'powerLineChart' && powerLineChartData"
+      />
+      <multiple-y-line-chart-normal
+        height="500px"
         :list="Powertrend"
         :yAxises="PowertrendYAxises"
         :showLegend="true"
-        v-if="dialogType === 'powerLineChart'"
+        v-if="dialogType === 'powerLineChart' && !powerLineChartData"
       />
       <multiple-bar-chart
         height="500px"
@@ -881,6 +893,7 @@ export default {
       tqmap: {},
       nowTime: "",
       planBtnName: "全部",
+      powerLineChartYAxises: [],
       powerLineChartData: [
         {
           title: "",
@@ -959,7 +972,6 @@ export default {
           wpId: that.wpId,
         },
         success(res) {
-          console.log("resWeather:", res);
           const keys = ["wd", "sd"];
           let weatherChart = [
             {
@@ -1005,7 +1017,6 @@ export default {
           id: that.wpId,
         },
         success(res) {
-          // console.log('basicData:',res)
           that.powerData = [
             {
               title: "风速",
@@ -1058,25 +1069,37 @@ export default {
               name: "当日预测电量",
               value: res.data.jczbmap.rycfdl,
               // total: res.data.jczbmap.rfdlsx,
-              total: res.data.jczbmap.rycfdl >= res.data.jczbmap.rfdl ? res.data.jczbmap.rycfdl + 100 : res.data.jczbmap.rfdl + 100,
+              total:
+                res.data.jczbmap.rycfdl >= res.data.jczbmap.rfdl
+                  ? res.data.jczbmap.rycfdl + 100
+                  : res.data.jczbmap.rfdl + 100,
             },
             {
               name: "实际发电量",
               value: res.data.jczbmap.rfdl,
               // total: res.data.jczbmap.rfdlsx,
-              total: res.data.jczbmap.rycfdl >= res.data.jczbmap.rfdl ? res.data.jczbmap.rycfdl + 100 : res.data.jczbmap.rfdl + 100,
+              total:
+                res.data.jczbmap.rycfdl >= res.data.jczbmap.rfdl
+                  ? res.data.jczbmap.rycfdl + 100
+                  : res.data.jczbmap.rfdl + 100,
             },
             {
               name: "当月预测电量",
               value: res.data.jczbmap.yycfdl,
               // total: res.data.jczbmap.yfdlsx,
-              total: res.data.jczbmap.yycfdl >= res.data.jczbmap.yfdl ? res.data.jczbmap.yycfdl + 200 : res.data.jczbmap.yfdl + 200,
+              total:
+                res.data.jczbmap.yycfdl >= res.data.jczbmap.yfdl
+                  ? res.data.jczbmap.yycfdl + 200
+                  : res.data.jczbmap.yfdl + 200,
             },
             {
               name: "实际发电量",
               value: res.data.jczbmap.yfdl,
               // total: res.data.jczbmap.yfdlsx,
-              total: res.data.jczbmap.yycfdl >= res.data.jczbmap.yfdl ? res.data.jczbmap.yycfdl + 200 : res.data.jczbmap.yfdl + 200,
+              total:
+                res.data.jczbmap.yycfdl >= res.data.jczbmap.yfdl
+                  ? res.data.jczbmap.yycfdl + 200
+                  : res.data.jczbmap.yfdl + 200,
             },
           ];
 
@@ -1101,7 +1124,6 @@ export default {
           id: that.wpId,
         },
         success(res) {
-          console.log("resCharts:", res);
           let rdlKey = ["value1", "value2", "value3", "speed"];
           let DayPower = {
             units: ["(万kWh)", "(m/s)"],
@@ -1213,7 +1235,6 @@ export default {
     openDialog(dialogTitle, subUrl, targetName, dialogType) {
       this.dialogTitle = dialogTitle;
       let that = this;
-      console.log("dialogSuburl:", subUrl);
       that.API.requestData({
         method: "POST",
         subUrl,
@@ -1222,7 +1243,6 @@ export default {
           targetName,
         },
         success(res) {
-          console.log("resDialog:", res);
           that.dialogShow = true;
           that.dialogData = res.data;
           that.dialogType = dialogType;
@@ -1253,7 +1273,6 @@ export default {
           wpId: that.wpId,
         },
         success(res) {
-          console.log("forecastBoxRes:", res);
           that.dialogData = res.data;
           that.dialogType = "table";
           that.dialogShow = true;
@@ -1263,17 +1282,42 @@ export default {
 
     // 显示功率复核图表
     showPowerChart(res) {
-      console.log("powerChartRes:", res);
       this.dialogTitle = res.dialogTitle;
       this.dialogType = res.dialogType;
 
-      this.powerLineChartData = res.data;
+      // this.powerLineChartData = res.data;
+      this.powerLineChartData = res.data.value;
+      if (res.dialogTitle === "风速详情") {
+        this.powerLineChartYAxises = [
+          {
+            min: 0,
+            name: "风速",
+            position: "left",
+            unit: "(m/s)",
+          },
+          {
+            min: 0,
+            name: "日照",
+            position: "right",
+            unit: "(w/㎡)",
+          },
+        ];
+      } else {
+        this.powerLineChartYAxises = [
+          {
+            min: 0,
+            name: "功率",
+            position: "left",
+            unit: "(万kWh)",
+          },
+        ];
+      }
+
       this.dialogShow = true;
     },
 
     // 显示计划电量完成情况图表
     showDoneChart(res) {
-      console.log("doneChartRes:", res);
       this.dialogTitle = res.dialogTitle;
       this.dialogType = res.dialogType;
 

+ 37 - 37
src/views/Home/components/map.vue

@@ -118,48 +118,34 @@
     </div>
     <div class="map-img">
       <!-- 宁夏地图总览 -->
-      <SvgMapNX
-        v-if="mapName === 'nx'"
-        :show="showType"
-        :data="sourceMap"
-        :xtData="xtMap"
-        @clickLabel="clickLabel"
-      ></SvgMapNX>
+      <SvgMapNX v-if="mapName === 'nx'" :show="showType" :data="sourceMap" :xtData="xtMap" @clickLabel="clickLabel" ></SvgMapNX>
+	  
       <!-- 麻黄山风电场 -->
-      <MHSFDC
-        v-if="mapName === 'MHS_FDC'"
-        :data="sourceMap"
-        @clickFj="clickFj"
-        @changePeriod="changePeriod"
-      ></MHSFDC>
+      <MHSFDC v-if="mapName === 'MHS_FDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></MHSFDC>
+	  
       <!-- 香山风电场 -->
-      <XSFDC
-        v-if="mapName === 'XS_FDC'"
-        :data="sourceMap"
-        @clickFj="clickFj"
-        @changePeriod="changePeriod"
-      ></XSFDC>
+      <XSFDC v-if="mapName === 'XS_FDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></XSFDC>
+	  
       <!-- 牛首山风电场 -->
-      <NSSFDC
-        v-if="mapName === 'NSS_FDC'"
-        :data="sourceMap"
-        @clickFj="clickFj"
-        @changePeriod="changePeriod"
-      ></NSSFDC>
+      <NSSFDC v-if="mapName === 'NSS_FDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></NSSFDC>
+	  
       <!-- 青山风电场 -->
-      <QSFDC
-        v-if="mapName === 'QS_FDC'"
-        :data="sourceMap"
-        @clickFj="clickFj"
-        @changePeriod="changePeriod"
-      ></QSFDC>
+      <QSFDC v-if="mapName === 'QS_FDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></QSFDC>
+	  
       <!-- 石板泉风电场 -->
-      <SBQFDC
-        v-if="mapName === 'SBQ_FDC'"
-        :data="sourceMap"
-        @clickFj="clickFj"
-        @changePeriod="changePeriod"
-      ></SBQFDC>
+      <SBQFDC v-if="mapName === 'SBQ_FDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></SBQFDC>
+	  
+	  <!-- 马场湖 -->
+	  <MCHGDC v-if="mapName === 'MCH_GDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></MCHGDC>
+	  
+	  <!-- 大武口 -->
+	  <DWKGDC v-if="mapName === 'DWK_GDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></DWKGDC>
+	  
+	  <!-- 平罗 -->
+	  <PLGDC v-if="mapName === 'PL_GDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></PLGDC>
+	  
+	  <!-- 宣和 -->
+	  <XHGDC v-if="mapName === 'XH_GDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod" ></XHGDC>
     </div>
   </div>
 </template>
@@ -179,6 +165,15 @@ import QSFDC from "./map/QS_FDC.vue";
 // 石板泉风电场
 import SBQFDC from "./map/SBQ_FDC.vue";
 
+// 马场湖
+import MCHGDC from "./map/MCH_GDC.vue";
+// 大武口
+import DWKGDC from "./map/DWK_GDC.vue";
+// 平罗
+import PLGDC from "./map/PL_GDC.vue";
+// 马场湖
+import XHGDC from "./map/XH_GDC.vue";
+
 import SvgIcon from "../../../components/coms/icon/svg-icon.vue";
 import compassIcon from "@/assets/icon/svg_fill/compass.svg";
 export default {
@@ -192,6 +187,10 @@ export default {
     NSSFDC,
     QSFDC,
     SBQFDC,
+	MCHGDC,
+	DWKGDC,
+	PLGDC,
+	XHGDC,
     SvgIcon,
   },
   props: {
@@ -304,6 +303,7 @@ export default {
       this.safeDay = res;
     },
     data(res) {
+		console.log(res)
       this.sourceMap = res;
     },
     xtData(res) {

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 319 - 0
src/views/Home/components/map/DWK_GDC.vue


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 313 - 0
src/views/Home/components/map/MCH_GDC.vue


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 386 - 0
src/views/Home/components/map/PL_GDC.vue


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 347 - 0
src/views/Home/components/map/XH_GDC.vue


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 407 - 554
src/views/Home/components/map/XS_FDC.vue


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

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

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

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

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

@@ -568,7 +568,6 @@ export default {
           ),
         },
         success(res) {
-          console.log(111111111111,res);
           if (res) {
             let arr = [];
             res.forEach((item, index) => {});

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

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

+ 9 - 8
src/views/Status/Status.vue

@@ -15,10 +15,9 @@
     <div class="table-box">
       <ComTable1 :data="tableData1"></ComTable1>
     </div>
-     <div class="table-box">
+    <div class="table-box">
       <ComTable1 :data="tableData2"></ComTable1>
     </div>
- 
   </div>
 </template>
 
@@ -26,7 +25,7 @@
 import StatusPanel from "./components/status-panel.vue";
 import StatusPanelStatic from "./components/static.vue";
 import ComTable from "@com/coms/table/table.vue";
-import ComTable1 from "./table.vue"
+import ComTable1 from "./table.vue";
 import util from "@/helper/util.js";
 
 import store from "@store/index.js";
@@ -48,7 +47,7 @@ export default {
       sourceMap: {}, // 核心数据
       datas: [],
       // wpId1: "",
-      wpId:"",
+      wpId: "",
       dwkGzqd: "",
       plGzqd: "",
       zhGzqd: "",
@@ -345,7 +344,7 @@ export default {
         ],
         data: [],
       },
-            tableData2: {
+      tableData2: {
         column: [
           {
             // name: "场站名称",
@@ -562,10 +561,12 @@ export default {
                     f3: ele.ycgl,
                     f4: "",
                     f5: "",
-                    is_light: !ele.zxzt_fjzt,
+                    // is_light: !ele.zxzt_fjzt,
+                    is_light: true,
                   },
                   {
-                    f1: "测风塔:",
+                    f1:
+                      ele.name.indexOf("风电场") !== -1 ? "测风塔:" : "气象站:",
                     // f2: "风速",
                     f2: ele.name.includes("风") ? "风速" : "光照强度",
                     // f3: (ele.cftfs || 0) + "m/s",
@@ -600,7 +601,7 @@ export default {
             let zj = sourceMap.vos.filter((ele) => {
               return ele.wpId.includes("0");
             });
-          data2.push(zj[0])
+            data2.push(zj[0]);
             fdcArr.push(fdhj[0]);
             //  console.log(fdcArr)
             fdcArr.forEach((ele) => {

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

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

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

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

+ 3 - 3
src/views/WindSite/components/boosterstation/BoosterStation.js

@@ -1330,9 +1330,9 @@ export class BoosterStation {
 			"sbquabkvzb1": { tag: "SBQXLDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0149" },
 			"sbqubckvzb1": { tag: "SBQXLDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0150" },
 			"sbquokvzb1": { tag: "SBQXLDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0151" },
-			"sbqpkwmx1": { tag: "SBQXLDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0076" },
-			"sbqqkvarmx1": { tag: "SBQXLDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0077" },
-			"sbqlaamx1": { tag: "SBQXLDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0073" },
+			"sbqpkwmx1": { tag: "SBQXLDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0089" },
+			"sbqqkvarmx1": { tag: "SBQXLDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0092" },
+			"sbqlaamx1": { tag: "SBQXLDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0093" },
 			"sbqdwmx1": { tag: "SBQXLDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0562" },
 			"sbquakvzb2": { tag: "SBQNWDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0218" },
 			"sbqubkvzb2": { tag: "SBQNWDQ.NX_GD_SBQF_DQ_P1_L1_001_AI0219" },

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

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

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 387 - 340
src/views/WindSite/components/boosterstation/nss.vue


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1899 - 5297
src/views/WindSite/components/boosterstation/pl1.vue


+ 2 - 2
src/views/WindSite/components/boosterstation/xs.vue

@@ -2143,7 +2143,7 @@
               font-family="'MicrosoftYaHei'"
               font-size="10.652"
             >
-              油面温度1(℃):
+              油面温度2(℃):
             </text>
           </g>
           <rect
@@ -10289,7 +10289,7 @@
               font-family="'MicrosoftYaHei'"
               font-size="10.652"
             >
-              油面温度1(℃):
+              油面温度2(℃):
             </text>
           </g>
           <rect

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

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

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

@@ -327,7 +327,7 @@
           </panel>
         </div>
         <div class="mg-l-16" style="flex: 1 1 auto" ref="lineChart">
-          <panel title="4小时功率曲线图" v-if="resCode.includes('FDC')">
+          <panel title="24小时功率曲线图" v-if="resCode.includes('FDC')">
             <multiple-line-chart
               height="18.519vh"
               v-if="Powertrend"
@@ -899,6 +899,7 @@ export default {
             });
           });
           that.dayLost = dayLost;
+          console.log(123123, res);
         },
       });
     },
@@ -1037,7 +1038,8 @@ export default {
     that.wpId = that.$route.params.wpId;
     that.paramsId = that.$route.params.wpId;
     that.resCode = that.$route.params.wpId;
-    that.stationChartData = require(`./stationJson/${that.$route.params.wpId}.js`).default;
+    that.stationChartData =
+      require(`./stationJson/${that.$route.params.wpId}.js`).default;
     that.$nextTick(() => {
       that.getWp();
       that.requestData(false);
@@ -1064,10 +1066,12 @@ export default {
   watch: {
     $route(res) {
       this.wpId = res.params.wpId;
-      this.stationChartData = require(`./stationJson/${this.$route.params.wpId}.js`).default;
+      this.stationChartData =
+        require(`./stationJson/${this.$route.params.wpId}.js`).default;
       if (res.params.wpId) {
         this.requestData(false);
         this.renderBtnActiveIndex();
+        this.requestLoss();
       }
     },
   },

+ 286 - 286
src/views/WindSite/pages/Info/Warning.vue

@@ -1,286 +1,286 @@
-<template>
-  <div class="wind-site-warning">
-    <div class="search pd-16 pd-b-8">
-      <el-row>
-        <div class="query">
-          <input class="search-input" name="query" v-model="query" />
-        </div>
-        <button class="btn search" @click="search">搜索</button>
-        <div class="empty"></div>
-        <button class="btn empty-btn" @click="reset">重置</button>
-      </el-row>
-      <el-row class="options">
-        <el-col class="option-item" :span="8" v-for="(option, index) in options" :key="option" @click="onOptionClick(option, index)" :class="{ active: option.isActive }">
-          <div class="count">{{ option.count }}</div>
-          <div class="text">{{ option.text }}</div>
-        </el-col>
-      </el-row>
-    </div>
-    <div class="warning-list">
-      <Table :data="warning" :canScroll="true" :height="'calc(100vh - 560px)'"/>
-    </div>
-  </div>
-</template>
-
-<script>
-import Table from "../../../../components/coms/table/table.vue";
-export default {
-  components: {
-    Table,
-  },
-  data() {
-    return {
-      query: "",
-      options: [],
-      ackupData: {},
-      warning: {
-        column: [
-          // {
-          //   name: "报警编号",
-          //   field: "Code",
-          //   is_num: true, // 是否为数字
-          // },
-          {
-            name: "PLC变量名",
-            field: "name",
-          },
-          {
-            name: "报警信息",
-            field: "value",
-          },
-          {
-            name: "报警状态",
-            field: "data1",
-            template: function(data) {
-              if (data === 1) return "<div class='error-state'></div>";
-              else return "正常";
-            },
-          },
-        ],
-        data: [],
-      },
-      activeArray: [],
-      isSearch: false,
-    };
-  },
-
-  props: {
-    data: {
-      type: Object,
-      default: () => {},
-    },
-  },
-
-  mounted() {
-    this.backupData = this.BASE.deepCopy(this.data);
-    this.riseData(this.data);
-  },
-
-  methods: {
-    onOptionClick(option, index) {
-      option.isActive = !option.isActive;
-      this.activeArray[index] = !this.activeArray[index];
-
-      let warningData = [];
-
-      this.activeArray.forEach((bool, index) => {
-        if (bool) {
-          this.options[index].vos.forEach((ele) => {
-            warningData.push(ele);
-          });
-        }
-      });
-
-      this.warning.data = warningData;
-      this.isSearch = false;
-      this.query = "";
-    },
-
-    // 格式化数据
-    riseData(data) {
-      let options = [];
-      let warningData = [];
-      let index = 0;
-
-      for (let key in data) {
-        data.index = index;
-
-        if (this.activeArray.length < index + 1) {
-          this.activeArray.push(!index ? true : false);
-        }
-
-        options.push({
-          id: data[key].id,
-          text: data[key].name,
-          vos: data[key].vos,
-          count: data[key].vos.length,
-          isActive: this.activeArray[index],
-        });
-
-        if (this.activeArray[index]) {
-          data[key].vos.forEach((ele) => {
-            warningData.push(ele);
-          });
-        }
-
-        index++;
-      }
-
-      this.options = options;
-      this.warning.data = warningData;
-
-      if (this.isSearch) {
-        this.search();
-      }
-    },
-
-    search() {
-      // 压器类总
-      this.isSearch = true;
-      if (this.query) {
-        let warningData = [];
-        this.BASE.deepCopy(this.warning.data).forEach((ele) => {
-          if (ele.name.indexOf(this.query) !== -1) {
-            warningData.push(ele);
-          }
-        });
-        this.warning.data = warningData;
-      } else {
-        this.riseData(this.data);
-      }
-    },
-
-    reset() {
-      for (let i = 0; i < this.activeArray.length; i++) {
-        this.activeArray[i] = false;
-      }
-
-      this.isSearch = false;
-      this.query = "";
-      let sourceMap = this.BASE.deepCopy(this.backupData);
-      this.riseData(sourceMap, true);
-    },
-  },
-
-  watch: {
-    data(res) {
-      this.backupData = this.BASE.deepCopy(res);
-      this.riseData(res);
-    },
-  },
-};
-</script>
-
-<style lang="less">
-.wind-site-warning {
-  border: 1px solid @darkgray;
-
-  .search {
-    .query {
-      height: 100%;
-      flex: 0 0 200px;
-      margin-right: 8px;
-
-      .search-input {
-        background: transparent;
-        border: 1px solid @darkgray;
-        padding: 0.741vh;
-        color: @gray;
-        outline: unset;
-        border-radius: 0%;
-        margin-right: 0.741vh;
-        height: 28px;
-        line-height: 28px;
-      }
-    }
-
-    button {
-      height: 100%;
-      flex: 0 0 auto;
-      background: transparent;
-      border: 1px solid @darkgray;
-      // padding: 0.741vh 1.481vh;
-      color: @gray;
-      font-size: 14px;
-      cursor: pointer;
-      height: 28px;
-      line-height: 28px;
-    }
-
-    .empty {
-      flex: auto;
-    }
-
-    .options {
-      margin-top: 8px;
-
-      .option-item {
-        display: flex;
-        color: @gray;
-        cursor: pointer;
-        font-size: 12px;
-        margin-bottom: 2px;
-
-        .count {
-          flex: 0 0 3.704vh;
-          text-align: center;
-          border: 1px solid @darkgray;
-          margin-right: 0.37vh;
-          height: 28px;
-          line-height: 28px;
-        }
-
-        .text {
-          flex: 1 0 auto;
-          border: 1px solid @darkgray;
-          height: 28px;
-          line-height: 28px;
-          padding: 0 8px;
-        }
-
-        & + .option-item {
-          padding-left: 0.741vh;
-        }
-
-        &:nth-child(3n + 1) {
-          padding-left: 0px;
-        }
-
-        &.purple {
-          .text,
-          .count {
-            border-color: @purple;
-            color: @purple;
-          }
-        }
-
-        &.active,
-        &:hover {
-          .text,
-          .count {
-            border-color: @green;
-            color: @green;
-          }
-        }
-      }
-    }
-  }
-
-  .warning-list {
-    height: 61.5vh;
-    .error-state {
-      width: 0.741vh;
-      height: 0.741vh;
-      border-radius: 50%;
-      background-color: @red;
-      margin: auto;
-    }
-
-    thead tr th {
-      padding: 0;
-      font-size: 12px;
-    }
-
-  }
-}
-</style>
+<template>
+  <div class="wind-site-warning">
+    <div class="search pd-16 pd-b-8">
+      <el-row>
+        <div class="query">
+          <input class="search-input" name="query" v-model="query" />
+        </div>
+        <button class="btn search" @click="search">搜索</button>
+        <div class="empty"></div>
+        <button class="btn empty-btn" @click="reset">重置</button>
+      </el-row>
+      <el-row class="options">
+        <el-col class="option-item" :span="8" v-for="(option, index) in options" :key="option" @click="onOptionClick(option, index)" :class="{ active: option.isActive }">
+          <div class="count">{{ option.count }}</div>
+          <div class="text">{{ option.text }}</div>
+        </el-col>
+      </el-row>
+    </div>
+    <div class="warning-list">
+      <Table :data="warning" :canScroll="true" :height="'calc(100vh - 560px)'"/>
+    </div>
+  </div>
+</template>
+
+<script>
+import Table from "../../../../components/coms/table/table.vue";
+export default {
+  components: {
+    Table,
+  },
+  data() {
+    return {
+      query: "",
+      options: [],
+      ackupData: {},
+      warning: {
+        column: [
+          // {
+          //   name: "报警编号",
+          //   field: "Code",
+          //   is_num: true, // 是否为数字
+          // },
+          {
+            name: "PLC变量名",
+            field: "name",
+          },
+          {
+            name: "报警信息",
+            field: "value",
+          },
+          {
+            name: "报警状态",
+            field: "data1",
+            template: function(data) {
+              if (data === 1) return "<div class='error-state'></div>";
+              else return "正常";
+            },
+          },
+        ],
+        data: [],
+      },
+      activeArray: [],
+      isSearch: false,
+    };
+  },
+
+  props: {
+    data: {
+      type: Object,
+      default: () => {},
+    },
+  },
+
+  mounted() {
+    this.backupData = this.BASE.deepCopy(this.data);
+    this.riseData(this.data);
+  },
+
+  methods: {
+    onOptionClick(option, index) {
+      option.isActive = !option.isActive;
+      this.activeArray[index] = !this.activeArray[index];
+
+      let warningData = [];
+
+      this.activeArray.forEach((bool, index) => {
+        if (bool) {
+          this.options[index].vos.forEach((ele) => {
+            warningData.push(ele);
+          });
+        }
+      });
+
+      this.warning.data = warningData;
+      this.isSearch = false;
+      this.query = "";
+    },
+
+    // 格式化数据
+    riseData(data) {
+      let options = [];
+      let warningData = [];
+      let index = 0;
+
+      for (let key in data) {
+        data.index = index;
+
+        if (this.activeArray.length < index + 1) {
+          this.activeArray.push(!index ? true : false);
+        }
+
+        options.push({
+          id: data[key].id,
+          text: data[key].name,
+          vos: data[key].vos,
+          count: data[key].vos.length,
+          isActive: this.activeArray[index],
+        });
+
+        if (this.activeArray[index]) {
+          data[key].vos.forEach((ele) => {
+            warningData.push(ele);
+          });
+        }
+
+        index++;
+      }
+
+      this.options = options;
+      this.warning.data = warningData;
+
+      if (this.isSearch) {
+        this.search();
+      }
+    },
+
+    search() {
+      // 压器类总
+      this.isSearch = true;
+      if (this.query) {
+        let warningData = [];
+        this.BASE.deepCopy(this.warning.data).forEach((ele) => {
+          if (ele.name.indexOf(this.query) !== -1) {
+            warningData.push(ele);
+          }
+        });
+        this.warning.data = warningData;
+      } else {
+        this.riseData(this.data);
+      }
+    },
+
+    reset() {
+      for (let i = 0; i < this.activeArray.length; i++) {
+        this.activeArray[i] = false;
+      }
+
+      this.isSearch = false;
+      this.query = "";
+      let sourceMap = this.BASE.deepCopy(this.backupData);
+      this.riseData(sourceMap, true);
+    },
+  },
+
+  watch: {
+    data(res) {
+      this.backupData = this.BASE.deepCopy(res);
+      this.riseData(res);
+    },
+  },
+};
+</script>
+
+<style lang="less">
+.wind-site-warning {
+  border: 1px solid @darkgray;
+
+  .search {
+    .query {
+      height: 100%;
+      flex: 0 0 200px;
+      margin-right: 8px;
+
+      .search-input {
+        background: transparent;
+        border: 1px solid @darkgray;
+        padding: 0.741vh;
+        color: @gray;
+        outline: unset;
+        border-radius: 0%;
+        margin-right: 0.741vh;
+        height: 28px;
+        line-height: 28px;
+      }
+    }
+
+    button {
+      height: 100%;
+      flex: 0 0 auto;
+      background: transparent;
+      border: 1px solid @darkgray;
+      // padding: 0.741vh 1.481vh;
+      color: @gray;
+      font-size: 14px;
+      cursor: pointer;
+      height: 28px;
+      line-height: 28px;
+    }
+
+    .empty {
+      flex: auto;
+    }
+
+    .options {
+      margin-top: 8px;
+
+      .option-item {
+        display: flex;
+        color: @gray;
+        cursor: pointer;
+        font-size: 12px;
+        margin-bottom: 2px;
+
+        .count {
+          flex: 0 0 3.704vh;
+          text-align: center;
+          border: 1px solid @darkgray;
+          margin-right: 0.37vh;
+          height: 28px;
+          line-height: 28px;
+        }
+
+        .text {
+          flex: 1 0 auto;
+          border: 1px solid @darkgray;
+          height: 28px;
+          line-height: 28px;
+          padding: 0 8px;
+        }
+
+        & + .option-item {
+          padding-left: 0.741vh;
+        }
+
+        &:nth-child(3n + 1) {
+          padding-left: 0px;
+        }
+
+        &.purple {
+          .text,
+          .count {
+            border-color: @purple;
+            color: @purple;
+          }
+        }
+
+        &.active,
+        &:hover {
+          .text,
+          .count {
+            border-color: @green;
+            color: @green;
+          }
+        }
+      }
+    }
+  }
+
+  .warning-list {
+    height: 61.5vh;
+    .error-state {
+      width: 0.741vh;
+      height: 0.741vh;
+      border-radius: 50%;
+      background-color: @red;
+      margin: auto;
+    }
+
+    thead tr th {
+      padding: 0;
+      font-size: 12px;
+    }
+
+  }
+}
+</style>

+ 3 - 0
src/views/WindSite/pages/Map.vue

@@ -53,6 +53,7 @@
     </div>
     <div class="panel-body">
       <MHSFDC wpId="MHS_FDC" v-if="wpId.indexOf('FDC') !== -1" />
+	  <NSSFDC wpId="NSS_FDC" v-if="wpId.indexOf('FDC') !== -1" />
       <PLGDC wpId="PL_GDC" v-if="wpId.indexOf('GDC') !== -1" />
       <div class="map-popup-panel" v-show="showPopup">
         <!-- <div class="map-popup-panel-header">
@@ -164,6 +165,7 @@
 import BtnGroup2 from "@com/coms/btn/btn-group-double.vue";
 // import SvgIcon from "@com/coms/icon/svg-icon.vue";
 import MHSFDC from "@com/arcgis/MHS_FDC.vue";
+import NSSFDC from "@com/arcgis/NSS_FDC.vue";
 import PLGDC from "@com/arcgis/PL_GDC.vue";
 import dataService from "@/helper/data.js";
 
@@ -174,6 +176,7 @@ export default {
   components: {
     BtnGroup2,
     MHSFDC,
+	  NSSFDC,
     PLGDC
   },
   // 数据

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

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

+ 11 - 1
src/views/layout/Menu.vue

@@ -414,6 +414,16 @@ export default {
                   icon: "svg-wind-site",
                   path: "/health/gzzd/malfunctionRecall",
                 },
+				{
+				  text: "故障分类",
+				  icon: "svg-wind-site",
+				  path: "/health/gzzd/gzfl",
+				},
+				{
+				  text: "预警分类",
+				  icon: "svg-wind-site",
+				  path: "/health/gzzd/yjfl",
+				},
               ],
             },
             {
@@ -988,7 +998,7 @@ export default {
                 },
                 {
                   text: "预警分析样本库",
-                  icon: "svg-matrix", 
+                  icon: "svg-matrix",
                   path: "/others/warning",
                 },
                 {

+ 71 - 87
src/views/malfunctionDiagnose/gzfl.vue

@@ -1,13 +1,34 @@
 <template>
 	<div>
+		<div class="action-bar">
+			<div class="query mg-b-16">
+				<div class="query-items">
+					<div class="query-item">
+						<div class="lable">风场:</div>
+						<div class="search-input">
+							<el-select v-model="wpvalue" clearable placeholder="请选择" popper-class="select">
+								<el-option v-for="item in ChangZhan" :key="item.id" :label="item.name" :value="item.id">
+								</el-option>
+							</el-select>
+						</div>
+					</div>
+					<div class="query-item">
+						<div class="lable">日期:</div>
+						<div class="search-input">
+							<el-date-picker v-model="myDate" type="date" placeholder="开始日期" popper-class="date-select"
+					   value-format="YYYY-MM-DD"></el-date-picker>
+						</div>
+					</div>
+				</div>
+				<div class="query-actions">
+					<button class="btn green" @click="searchData">搜索</button>
+				</div>
+			</div>
+		</div>
 		<el-row>
 			<el-col :span="14">
 				<panel :title="'日雷达图'" class="radar-panel" :icon="'svg-wind-site'">
 					<div class="wind-info">
-						<div class="legend mg-r-16">
-							<span class="dot"></span>
-							<span>{{ rzdfsStr }}</span>
-						</div>
 						<radar-chart :width="'100%'" :height="'729px'" :value="rzdfsData" />
 					</div>
 				</panel>
@@ -17,23 +38,15 @@
 					<el-col :span="24">
 						<panel :title="'月雷达图'" class="radar-panel" :icon="'svg-wind-site'">
 							<div class="wind-info">
-								<div class="legend mg-r-16">
-									<span class="dot"></span>
-									<span>{{ yzdfsStr }}</span>
-								</div>
 								<radar-chart :width="'100%'" :height="'350px'" :value="yzdfsData" />
 							</div>
 						</panel>
 					</el-col>
 				</el-row>
 				<el-row>
-				 <el-col :span="24">
+					<el-col :span="24">
 						<panel :title="'年雷达图'" class="radar-panel" :icon="'svg-wind-site'">
 							<div class="wind-info">
-								<div class="legend mg-r-16">
-									<span class="dot"></span>
-									<span>{{ nzdfsStr }}</span>
-								</div>
 								<radar-chart :width="'100%'" :height="'350px'" :value="nzdfsData" />
 							</div>
 						</panel>
@@ -54,93 +67,64 @@
 		},
 		data() {
 			return {
-				rzdfsStr: "",
-				yzdfsData: {
+				rzdfsData: {
 					indicator: ["N0", "N1", "N2", "N3", "N4", "N5"],
-				 data: [{
-						value: [44200, 14200, 20000, 35000, 50000, 38000],
-						name: "",
-					}, ],
+					data: [{value: [44200, 14200, 20000, 35000, 50000, 38000],name: "",}, ],
 				},
-				yzdfsStr: "",
 				yzdfsData: {
 					indicator: ["N0", "N1", "N2", "N3", "N4", "N5"],
-					data: [{
-						value: [44200, 14200, 20000, 35000, 50000, 38000],
-						name: "",
-					}, ],
+					data: [{value: [44200, 14200, 20000, 35000, 50000, 38000],name: "",}, ],
 				},
-
-				nzdfsStr: "",
 				nzdfsData: {
 					indicator: ["N0", "N1", "N2", "N3", "N4", "N5"],
-					data: [{
-						value: [44200, 14200, 20000, 35000, 50000, 38000],
-						name: "",
-					}, ],
+					data: [{value: [44200, 14200, 20000, 35000, 50000, 38000],name: "",}, ],
 				},
+				ChangZhan: [],
+				wpvalue: '',
+				myDate: ""
 			}
 		},
 		created() {
-var that = this;
-      that.API.requestData({
-        method: "GET",
-        baseURL: "http://192.168.10.25:8082/",
-        subUrl: "radar/gzfx?stId=MHS_FDC&endDate=2021-11-21&startDate=2021-11-22",
-        success(res) {
-          console.log(res)
-        },
-      });
+			var that = this;
+			that.API.requestData({
+				method: "GET",
+				baseURL: "http://10.155.32.4:9001/",
+				subUrl: "benchmarking/wplist",
+				success(res) {
+					that.ChangZhan = res.data;
+					that.wpvalue = res.data[0].id;
+					let end = new Date();
+					that.myDate = end.formatDate("yyyy-MM-dd");
+					that.searchData();
+				},
+			});
 		},
 		methods: {
-			// getMgt(subUrl, data, dataKey, logFlg) {
-			//   let that = this;
-			//   that.API.requestData({
-			//     method: "POST",
-			//     subUrl,
-			//     data,
-			//     success(res) {
-			//       that[dataKey.split("Data")[0] + "Str"] = res.data.jfpl || "";
-
-			//       let mgtData = {
-			//         indicator: [],
-			//         data: [
-			//           {
-			//             name: "",
-			//             value: [],
-			//           },
-			//         ],
-			//       };
-
-			//       if (res.data.data) {
-			//         mgtData.indicator = [
-			//           "北",
-			//           "北北西",
-			//           "北西",
-			//           "西北西",
-			//           "西",
-			//           "西南西",
-			//           "南西",
-			//           "南南西",
-			//           "南",
-			//           "南南东",
-			//           "东南",
-			//           "东南东",
-			//           "东",
-			//           "东北东",
-			//           "北东",
-			//           "北北东",
-			//         ];
-			//         res.data.data.forEach((ele) => {
-			//           // mgtData.indicator.push(ele.name);
-			//           mgtData.data[0].value.push(ele.data1);
-			//         });
-			//       }
-			//       mgtData.data[0].value.reverse();
-			//       that[dataKey] = mgtData;
-			//     },
-			//   });
-			// },
+			searchData(){
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "radar/gzfx",
+					data:{
+						stId:that.wpvalue,
+						Date:that.myDate
+					},
+					success(res) {
+						that.rzdfsData = {
+							indicator:Object.keys(res.data[0].year),
+							data:[{value:Object.values(res.data[0].year)}]
+						}
+						that.yzdfsData = {
+							indicator:Object.keys(res.data[1].month),
+							data:[{value:Object.values(res.data[1].month)}]
+						}
+						that.nzdfsData = {
+							indicator:Object.keys(res.data[2].day),
+							data:[{value:Object.values(res.data[2].day)}]
+						}
+					},
+				});
+			}
 		},
 
 	};

+ 134 - 0
src/views/malfunctionDiagnose/yjfl.vue

@@ -0,0 +1,134 @@
+<template>
+	<div>
+		<div class="action-bar">
+			<div class="query mg-b-16">
+				<div class="query-items">
+					<div class="query-item">
+						<div class="lable">风场:</div>
+						<div class="search-input">
+							<el-select v-model="wpvalue" clearable placeholder="请选择" popper-class="select">
+								<el-option v-for="item in ChangZhan" :key="item.id" :label="item.name" :value="item.id">
+								</el-option>
+							</el-select>
+						</div>
+					</div>
+					<div class="query-item">
+						<div class="lable">日期:</div>
+						<div class="search-input">
+							<el-date-picker v-model="myDate" type="date" placeholder="开始日期" popper-class="date-select"
+					   value-format="YYYY-MM-DD"></el-date-picker>
+						</div>
+					</div>
+				</div>
+				<div class="query-actions">
+					<button class="btn green" @click="searchData">搜索</button>
+				</div>
+			</div>
+		</div>
+		<el-row>
+			<el-col :span="14">
+				<panel :title="'日雷达图'" class="radar-panel" :icon="'svg-wind-site'">
+					<div class="wind-info">
+						<radar-chart :width="'100%'" :height="'729px'" :value="rzdfsData" />
+					</div>
+				</panel>
+			</el-col>
+			<el-col :span="10">
+				<el-row>
+					<el-col :span="24">
+						<panel :title="'月雷达图'" class="radar-panel" :icon="'svg-wind-site'">
+							<div class="wind-info">
+								<radar-chart :width="'100%'" :height="'350px'" :value="yzdfsData" />
+							</div>
+						</panel>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<panel :title="'年雷达图'" class="radar-panel" :icon="'svg-wind-site'">
+							<div class="wind-info">
+								<radar-chart :width="'100%'" :height="'350px'" :value="nzdfsData" />
+							</div>
+						</panel>
+					</el-col>
+				</el-row>
+			</el-col>
+		</el-row>
+	</div>
+</template>
+
+<script>
+	import panel from "@/components/coms/panel/panel.vue";
+	import RadarChart from "@/components/chart/radar/radar-chart.vue";
+	export default {
+		components: {
+			panel,
+			RadarChart
+		},
+		data() {
+			return {
+				rzdfsData: {
+					indicator: ["N0", "N1", "N2", "N3", "N4", "N5"],
+					data: [{value: [44200, 14200, 20000, 35000, 50000, 38000],name: "",}, ],
+				},
+				yzdfsData: {
+					indicator: ["N0", "N1", "N2", "N3", "N4", "N5"],
+					data: [{value: [44200, 14200, 20000, 35000, 50000, 38000],name: "",}, ],
+				},
+				nzdfsData: {
+					indicator: ["N0", "N1", "N2", "N3", "N4", "N5"],
+					data: [{value: [44200, 14200, 20000, 35000, 50000, 38000],name: "",}, ],
+				},
+				ChangZhan: [],
+				wpvalue: '',
+				myDate: ""
+			}
+		},
+		created() {
+			var that = this;
+			that.API.requestData({
+				method: "GET",
+				baseURL: "http://10.155.32.4:9001/",
+				subUrl: "benchmarking/wplist",
+				success(res) {
+					that.ChangZhan = res.data;
+					that.wpvalue = res.data[0].id;
+					let end = new Date();
+					that.myDate = end.formatDate("yyyy-MM-dd");
+					that.searchData();
+				},
+			});
+		},
+		methods: {
+			searchData(){
+				var that = this;
+				that.API.requestData({
+					method: "GET",
+					subUrl: "radar/yjfx",
+					data:{
+						stationid:that.wpvalue,
+						date:that.myDate
+					},
+					success(res) {
+						that.rzdfsData = {
+							indicator:Object.keys(res.data[0].year),
+							data:[{value:Object.values(res.data[0].year)}]
+						}
+						that.yzdfsData = {
+							indicator:Object.keys(res.data[1].month),
+							data:[{value:Object.values(res.data[1].month)}]
+						}
+						that.nzdfsData = {
+							indicator:Object.keys(res.data[2].day),
+							data:[{value:Object.values(res.data[2].day)}]
+						}
+					},
+				});
+			}
+		},
+
+	};
+</script>
+
+<style>
+</style>

+ 10 - 49
src/views/warn/gfgj.vue

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