Browse Source

隐藏首页光伏台数信息,更新风场升压站数据

baiyanting 1 year ago
parent
commit
4c0c59b61f
32 changed files with 108033 additions and 29461 deletions
  1. 4 4
      .env.development
  2. 108 100
      src/assets/styles/dialog.less
  3. 2 12
      src/components/qushi/qushiDialog.vue
  4. 32 0
      src/router/index.js
  5. 2 2
      src/views/Home/Home.vue
  6. 11 23
      src/views/Home/components/map.vue
  7. 309 0
      src/views/economicsOperation/efficiency/lsl/index.vue
  8. 264 0
      src/views/economicsOperation/efficiency/xtxl/index.vue
  9. 388 0
      src/views/economicsOperation/efficiency/zhl/index.vue
  10. 18 3
      src/views/layout/Menu.vue
  11. 1 1
      src/views/stateMonitor/Agc/Agc.vue
  12. 47 24
      src/views/stateMonitor/Agc/components/agc-panel.vue
  13. 5 1
      src/views/stateMonitor/DetailMatrix/detailMatrix.vue
  14. 8 15
      src/views/stateMonitor/Status/components/status-panel.vue
  15. 1 1
      src/views/stateMonitor/factoryMonitor/components/headerButton.vue
  16. 10 6
      src/views/stateMonitor/factoryMonitor/photovoltaic/lightMatrixMonitor/index.vue
  17. 30 8
      src/views/stateMonitor/factoryMonitor/photovoltaic/lighthome/index.vue
  18. 1680 1545
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/BHB.vue
  19. 2016 1584
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/BHBSQ.vue
  20. 2209 1572
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/DJY.vue
  21. 3111 2724
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/GJY.vue
  22. 3675 2839
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/HSM.vue
  23. 36247 57
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/MLJ.vue
  24. 2091 2011
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/NJL.vue
  25. 1664 918
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/PDL.vue
  26. 20079 273
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/PTZ.vue
  27. 2623 2035
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/XWT.vue
  28. 18346 1556
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/YF.vue
  29. 1719 1224
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/YLZ.vue
  30. 1207 931
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/YTY.vue
  31. 10118 9988
      src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/ZK.vue
  32. 8 4
      src/views/stateMonitor/factoryMonitor/windPowerPlant/matrixMonitor/index.vue

+ 4 - 4
.env.development

@@ -1,10 +1,10 @@
 # VUE_APP_API=http://10.81.3.155:8020
-VUE_APP_API=http://192.168.1.106:6060
-# VUE_APP_API=http://10.81.3.153:6060
+# VUE_APP_API=http://192.168.1.106:6060
+VUE_APP_API=http://10.81.3.153:6060
 
 # 经济运行 安全监视 
-VUE_APP_Matrix=http://192.168.1.106:6060
-# VUE_APP_Matrix=http://10.81.3.153:6060
+# VUE_APP_Matrix=http://192.168.1.106:6060
+VUE_APP_Matrix=http://10.81.3.153:6060
 
 
 VUE_APP_ADAPTERURL=http://10.81.3.155:8011

+ 108 - 100
src/assets/styles/dialog.less

@@ -165,73 +165,73 @@
     background: rgba(83, 89, 104, 0.1) !important;
   }
 
-  .elDatePicker .el-date-picker__time-header {
-    border-bottom: 1px solid #323b3c;
-  }
+  //   .elDatePicker .el-date-picker__time-header {
+  //     border-bottom: 1px solid #323b3c;
+  //   }
 
-  .elDatePicker .el-input__inner {
-    height: 26px !important;
-    line-height: 26px !important;
-  }
+  //   .elDatePicker .el-input__inner {
+  //     height: 26px !important;
+  //     line-height: 26px !important;
+  //   }
 
-  .elDatePicker .el-picker-panel {
-    border: 1px solid #094493 !important;
-    background: #090e19 !important;
-  }
+  //   .elDatePicker .el-picker-panel {
+  //     border: 1px solid #094493 !important;
+  //     background: #090e19 !important;
+  //   }
 
-  .elDatePicker .el-date-table th {
-    border-bottom: 1px solid #2a374f;
-  }
+  //   .elDatePicker .el-date-table th {
+  //     border-bottom: 1px solid #2a374f;
+  //   }
 
-  .elDatePicker .el-picker-panel .el-time-panel {
-    background: #141a25 !important;
-  }
+  //   .elDatePicker .el-picker-panel .el-time-panel {
+  //     background: #141a25 !important;
+  //   }
 
-  .elDatePicker .el-time-spinner__item.active:not(.disabled) {
-    color: #ffffff !important;
-  }
+  //   .elDatePicker .el-time-spinner__item.active:not(.disabled) {
+  //     color: #ffffff !important;
+  //   }
 
-  .elDatePicker .el-time-panel__footer {
-    background: #141a25 !important;
-    border-top: 1px solid #323b3c;
-  }
+  //   .elDatePicker .el-time-panel__footer {
+  //     background: #141a25 !important;
+  //     border-top: 1px solid #323b3c;
+  //   }
 
-  .elDatePicker .el-popper__arrow {
-    display: none;
-  }
+  //   .elDatePicker .el-popper__arrow {
+  //     display: none;
+  //   }
 
-  .elDatePicker .el-date-table td.next-month,
-  .elDatePicker .el-date-table td.prev-month {
-    color: #909399;
-  }
+  //   .elDatePicker .el-date-table td.next-month,
+  //   .elDatePicker .el-date-table td.prev-month {
+  //     color: #909399;
+  //   }
 
-  .elDatePicker .el-date-table td.current:not(.disabled) span {
-    background: #0046c7;
-  }
+  //   .elDatePicker .el-date-table td.current:not(.disabled) span {
+  //     background: #0046c7;
+  //   }
 
-  .elDatePicker .el-time-panel {
-    border: 1px solid #003277 !important;
-  }
+  //   .elDatePicker .el-time-panel {
+  //     border: 1px solid #003277 !important;
+  //   }
 
-  .elDatePicker .el-picker-panel__footer {
-    margin-top: -10px;
-    padding-bottom: 10px;
-    background: #090e19 !important;
-    border-top: 1px solid transparent;
-  }
+  //   .elDatePicker .el-picker-panel__footer {
+  //     margin-top: -10px;
+  //     padding-bottom: 10px;
+  //     background: #090e19 !important;
+  //     border-top: 1px solid transparent;
+  //   }
 
-  .elDatePicker .el-picker-panel .el-picker-panel__footer .el-button {
-    min-height: 22px !important;
-    width: 80px;
-    background-color: rgba(0, 70, 199, 0.2) !important;
-    color: #b3b3b3;
-    border-radius: 20px;
-    border-color: transparent;
-  }
+  //   .elDatePicker .el-picker-panel .el-picker-panel__footer .el-button {
+  //     min-height: 22px !important;
+  //     width: 80px;
+  //     background-color: rgba(0, 70, 199, 0.2) !important;
+  //     color: #b3b3b3;
+  //     border-radius: 20px;
+  //     border-color: transparent;
+  //   }
 
-  .elDatePicker .el-picker-panel .el-picker-panel__footer .el-button:last-of-type {
-    background: rgba(0, 70, 199, 0.4) !important;
-  }
+  //   .elDatePicker .el-picker-panel .el-picker-panel__footer .el-button:last-of-type {
+  //     background: rgba(0, 70, 199, 0.4) !important;
+  //   }
 
   .tables .el-input-number__increase,
   .tables .el-input-number__decrease {
@@ -273,51 +273,58 @@
     background: red !important;
   }
 
-  .el-popper .el-menu--popup {
-    min-width: 140px !important;
-    /*padding: 20px 0!important;*/
-  }
+  //   .el-popper .el-menu--popup {
+  //     min-width: 140px !important;
+  //     /*padding: 20px 0!important;*/
+  //   }
 
-  .el-popper .el-menu--popup .el-menu-item-group .el-menu-item {
-    height: 35px !important;
-    line-height: 35px !important;
-    font-size: 13px !important;
-  }
+  //   .el-popper .el-menu--popup .el-menu-item-group .el-menu-item {
+  //     height: 35px !important;
+  //     line-height: 35px !important;
+  //     font-size: 13px !important;
+  //   }
 
-  .el-popper .el-menu--popup .el-menu-item-group .router-link-active .el-menu-item {
-    background: linear-gradient(91deg, #1c99ff, transparent) !important;
-    color: #fff !important;
-  }
+  //   .el-popper
+  //     .el-menu--popup
+  //     .el-menu-item-group
+  //     .router-link-active
+  //     .el-menu-item {
+  //     background: linear-gradient(91deg, #1c99ff, transparent) !important;
+  //     color: #fff !important;
+  //   }
 
-  .el-popper.is-pure .el-menu-item:hover {
-    background: linear-gradient(91deg, #1c99ff, transparent) !important;
-    color: #fff !important;
-  }
+  //   .el-popper.is-pure .el-menu-item:hover {
+  //     background: linear-gradient(91deg, #1c99ff, transparent) !important;
+  //     color: #fff !important;
+  //   }
 
-  .el-popper.is-light {
-    color: #d1d1d1 !important;
-    background-color: rgb(0, 0, 0, 0.9) !important;
-    border-color: #555555 !important;
-    border-radius: unset;
-  }
+  //   .el-popper.is-light {
+  //     color: #d1d1d1 !important;
+  //     background-color: rgb(0, 0, 0, 0.9) !important;
+  //     border-color: #555555 !important;
+  //     border-radius: unset;
+  //   }
 
-  .el-popper.is-light .el-popper__arrow::before {
-    background-color: rgb(0, 0, 0, 0.8) !important;
-    /*border-left: 1px solid #555555 !important;*/
-    /*border-bottom: 1px solid #555555 !important;*/
-  }
+  //   .el-popper.is-light .el-popper__arrow::before {
+  //     background-color: rgb(0, 0, 0, 0.8) !important;
+  //     /*border-left: 1px solid #555555 !important;*/
+  //     /*border-bottom: 1px solid #555555 !important;*/
+  //   }
 
-  .el-popper.is-pure {
-    border-image: linear-gradient(180deg,
-        transparent,
-        #1a7ccd,
-        #1a7ccd,
-        transparent) 2 1;
-    border: 1px solid #002767;
-    background: linear-gradient(278deg, #002767, transparent) !important;
-    border-radius: 5px !important;
-    backdrop-filter: blur(5px);
-  }
+  //   .el-popper.is-pure {
+  //     border-image: linear-gradient(
+  //         180deg,
+  //         transparent,
+  //         #1a7ccd,
+  //         #1a7ccd,
+  //         transparent
+  //       )
+  //       2 1;
+  //     border: 1px solid #002767;
+  //     background: linear-gradient(278deg, #002767, transparent) !important;
+  //     border-radius: 5px !important;
+  //     backdrop-filter: blur(5px);
+  //   }
 
   .el-dialog {
     &:not(.cDialog) {
@@ -325,7 +332,6 @@
       border: 1px solid #003277;
       border-radius: 4px !important;
       box-shadow: 0 0 22px rgba(0, 70, 199, 0.2) inset !important;
-
     }
   }
 
@@ -561,7 +567,7 @@ background-color: rgba(30,90,163, .5);
     border-color: #959595 !important;
   }
 
-  .el-checkbox__input.is-checked+.el-checkbox__label {
+  .el-checkbox__input.is-checked + .el-checkbox__label {
     color: rgba(255, 255, 255, 1) !important;
   }
 
@@ -722,10 +728,12 @@ background-color: rgba(30,90,163, .5);
 
   .el-tabs__item.is-active {
     color: #1c99ff !important;
-    background: linear-gradient(0deg,
-        rgba(0, 70, 199, 0.8),
-        rgba(0, 70, 199, 0.2),
-        rgba(0, 70, 199, 0));
+    background: linear-gradient(
+      0deg,
+      rgba(0, 70, 199, 0.8),
+      rgba(0, 70, 199, 0.2),
+      rgba(0, 70, 199, 0)
+    );
   }
 
   .el-tabs__nav {
@@ -910,4 +918,4 @@ background-color: rgba(30,90,163, .5);
     background-color: fade(@red, 20);
     color: @red;
   }
-}
+}

+ 2 - 12
src/components/qushi/qushiDialog.vue

@@ -29,34 +29,24 @@
             <div class="qushi-form">
               <div class="station">
                 开始时间
-                <div
-                  class="search-input"
-                  style="margin-left: 5px; margin-right: 10px"
-                >
+                <div style="margin-left: 5px; margin-right: 10px">
                   <el-date-picker
                     v-model="starttime"
                     type="datetime"
                     placeholder="选择日期"
                     format="YYYY-MM-DD HH:mm:ss"
-                    class="datetime_picker"
-                    popper-class="elDatePicker"
                   >
                   </el-date-picker>
                 </div>
               </div>
               <div class="station">
                 结束时间
-                <div
-                  class="search-input"
-                  style="margin-left: 5px; margin-right: 10px"
-                >
+                <div style="margin-left: 5px; margin-right: 10px">
                   <el-date-picker
                     v-model="endtime"
                     type="datetime"
                     placeholder="选择日期"
                     format="YYYY-MM-DD HH:mm:ss"
-                    class="datetime_picker"
-                    popper-class="elDatePicker"
                   >
                   </el-date-picker>
                 </div>

+ 32 - 0
src/router/index.js

@@ -480,6 +480,38 @@ const routes = [
               icon: "",
             },
           },
+          {
+            path: "xtxl",
+            component: () =>
+              import(
+                "@/views/economicsOperation/efficiency/xtxl"
+              ),
+            name: "restorationEfficiency",
+            meta: {
+              title: "系统效率",
+              icon: "",
+            },
+          },
+          {
+            path: "lsl",
+            component: () =>
+              import("@/views/economicsOperation/efficiency/lsl"),
+            name: "lsl",
+            meta: {
+              title: "离散率",
+              icon: "",
+            },
+          },
+          {
+            path: "zhl",
+            component: () =>
+              import("@/views/economicsOperation/efficiency/zhl"),
+            name: "zhl",
+            meta: {
+              title: "转换率",
+              icon: "",
+            },
+          },
         ],
       },
       {

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

@@ -388,7 +388,7 @@ export default {
     .grid-content {
       text-align: center;
       cursor: pointer;
-
+      font-size: 14px;
       .img {
         position: relative;
         width: 84px;
@@ -422,7 +422,7 @@ export default {
         p {
           position: absolute;
           left: 50%;
-          bottom: -36%;
+          bottom: -27%;
           white-space: nowrap;
           transform: translateX(-50%);
         }

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

@@ -451,7 +451,7 @@
                     <el-col :span="7"><span>MW</span></el-col>
                   </el-row>
                 </div>
-                <div class="item">
+                <!-- <div class="item">
                   <el-row>
                     <el-col :span="8"><span>集中式</span></el-col>
                     <el-col :span="9"
@@ -472,7 +472,7 @@
                     >
                     <el-col :span="7"><span>台</span></el-col>
                   </el-row>
-                </div>
+                </div> -->
               </div>
             </div>
           </div>
@@ -1110,28 +1110,16 @@
               </div>
             </div>
           </el-col>
-          <el-col v-show="tabShow == -1">
-            <div
-              class="grid-content"
-              @click="handleClick('FNLYL', '风能利用率', '%')"
-            >
-              <div class="img">
-                <img
-                  src="@/assets/imgs/pointer.png"
-                  :style="{ transform: guarantee }"
-                />
-                <div class="information">
-                  {{ (StationinformationData?.qt?.fnlyl).toFixed(2) }}
-                </div>
-                <div class="unit">%</div>
-                <p>风能利用率</p>
-              </div>
-            </div>
-          </el-col>
-          <el-col v-show="tabShow == -2">
+          <el-col v-show="tabShow == -1 || tabShow == -2">
             <div
               class="grid-content"
-              @click="handleClick('FNLYL', '光能利用率', '%')"
+              @click="
+                handleClick(
+                  'FNLYL',
+                  tabShow == -1 ? '风能利用率' : '光能利用率',
+                  '%'
+                )
+              "
             >
               <div class="img">
                 <img
@@ -1142,7 +1130,7 @@
                   {{ (StationinformationData?.qt?.fnlyl).toFixed(2) }}
                 </div>
                 <div class="unit">%</div>
-                <p>光能利用率</p>
+                <p>{{ tabShow == -1 ? "风能利用率" : "光能利用率" }}</p>
               </div>
             </div>
           </el-col>

+ 309 - 0
src/views/economicsOperation/efficiency/lsl/index.vue

@@ -0,0 +1,309 @@
+<template>
+  <div class="parcel-box">
+    <div class="title">
+      <el-select
+        size="mini"
+        v-model="company"
+        placeholder="请选择"
+        @change="getTableDate"
+      >
+        <el-option
+          v-for="item in companyOptions"
+          :key="item.id"
+          :label="item.aname"
+          :value="item.id"
+        >
+        </el-option>
+      </el-select>
+      <div class="station">
+        开始日期
+        <div class="search-input">
+          <el-date-picker
+            v-model="starTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="选择日期"
+            popper-class="date-select"
+          >
+          </el-date-picker>
+        </div>
+      </div>
+      <div class="station">
+        结束日期
+        <div class="search-input">
+          <el-date-picker
+            v-model="endTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="选择日期"
+            popper-class="date-select"
+          >
+          </el-date-picker>
+        </div>
+      </div>
+      <el-button round size="mini" class="searchColor" @click="getTableDate"
+        >搜索</el-button
+      >
+      <!-- <el-button round size="mini">导出</el-button> -->
+    </div>
+    <div class="data-bodys">
+      <div class="line clearfix">
+        <div class="leftContent left"><span>复位及时率</span></div>
+        <div class="rightContent right"></div>
+      </div>
+      <div class="economicTable">
+        <el-table
+          :data="tableData"
+          style="width: 100%"
+          size="mini"
+          stripe
+          height="85vh"
+        >
+          <el-table-column
+            align="center"
+            prop="unit"
+            label="风场"
+            width="200"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="five"
+            label="5分钟 / 复位次数"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="fives"
+            label="5分钟 / 复位率"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="ten"
+            label="10分钟 / 复位次数"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="tens"
+            label="10分钟 / 复位率"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="fifteen"
+            label="15分钟 / 复位次数"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="fifteens"
+            label="15分钟 / 复位率"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="twenty"
+            label="20分钟 / 复位次数"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="twentys"
+            label="20分钟 / 复位率"
+            sortable
+          ></el-table-column>
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import dayjs from "dayjs";
+import { companys, timelyRate } from "@/api/curveAnalyse";
+export default {
+  name: "curveAnalyse",
+  components: {},
+  data() {
+    return {
+      starTime: "",
+      endTime: "",
+      company: "",
+      companyOptions: [],
+      tableData: [],
+    };
+  },
+  watch: {},
+  filters: {},
+  computed: {},
+  created() {
+    let date = new Date();
+    date.setDate(1);
+    let month = parseInt(date.getMonth() + 1);
+    let day = date.getDate();
+    if (month < 10) {
+      month = "0" + month;
+    }
+    if (day < 10) {
+      day = "0" + day;
+    }
+    this.starTime = date.getFullYear() + "-" + month + "-" + day;
+    this.endTime = dayjs(new Date().getTime()).format("YYYY-MM-DD");
+    this.initialization();
+  },
+  methods: {
+    initialization() {
+      companys().then(({ data: res }) => {
+        this.companyOptions = res.data;
+        this.company = res.data[0].id;
+        this.getTableDate();
+      });
+    },
+    getTableDate() {
+      timelyRate({
+        companyId: this.company,
+        beginDate: this.starTime,
+        endDate: this.endTime,
+      }).then(({ data: res }) => {
+        if (res) {
+          let data = [];
+          res.data.forEach((item, index) => {
+            data[index] = {
+              unit: item.wpid,
+              five: item.wfz,
+              fives: item.wfzfwl,
+              ten: item.sfz,
+              tens: item.sfzfwl,
+              fifteen: item.swfz,
+              fifteens: item.swfzfwl,
+              twenty: item.esfz,
+              twentys: item.esfzfwl,
+              is_light: false,
+            };
+          });
+          this.tableData = data;
+        }
+      });
+    },
+  },
+  mounted() {},
+  beforeUnmount() {},
+};
+</script>
+
+<style lang="less" scoped>
+.title {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  margin-top: 10px;
+  padding-left: 20px;
+
+  .station {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    font-size: 14px;
+    font-family: Microsoft YaHei;
+    font-weight: 400;
+    color: #b3b3b3;
+    margin-left: 10px;
+  }
+
+  .search-input {
+    margin-left: 10px;
+  }
+
+  .but {
+    display: flex;
+    flex-direction: row;
+    align-content: center;
+    margin-left: 20px;
+  }
+
+  .buttons {
+    background-color: rgba(5, 187, 76, 0.2);
+    border: 1px solid #3b6c53;
+    color: #b3b3b3;
+    font-size: 14px;
+
+    &:hover {
+      background-color: rgba(5, 187, 76, 0.5);
+      color: #ffffff;
+    }
+  }
+}
+
+.data-bodys {
+  display: flex;
+  flex-direction: column;
+  background-color: rgba(0, 0, 0, 0.45);
+  border-radius: 5px;
+  padding: 5px;
+}
+
+.parcel-box {
+  padding: 0 20px;
+  box-sizing: border-box;
+
+  .line {
+    padding-bottom: 5px;
+    .leftContent {
+      width: 242px;
+      height: 41px;
+      line-height: 41px;
+      background: url("../../../../assets/imgs/title_left_bg.png");
+
+      span {
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #ffffff;
+        margin-left: 25px;
+      }
+    }
+
+    .rightContent {
+      width: 212px;
+      height: 28px;
+      margin-top: 13px;
+      background: url("../../../../assets/imgs/title_right_bg.png");
+    }
+  }
+}
+
+.clearfix::after {
+  content: "";
+  clear: both;
+  height: 0;
+  line-height: 0;
+  visibility: hidden;
+  display: block;
+}
+
+.clearfix {
+  zoom: 1;
+}
+
+.left {
+  float: left;
+}
+
+.right {
+  float: right;
+}
+
+.searchColor {
+  background-color: rgba(5, 187, 76, 0.2);
+  border: 1px solid #3b6c53;
+  color: #b3b3b3;
+  font-size: 14px;
+  margin-left: 10px;
+  &:hover {
+    background-color: rgba(5, 187, 76, 0.5);
+    color: #ffffff;
+  }
+}
+</style>

+ 264 - 0
src/views/economicsOperation/efficiency/xtxl/index.vue

@@ -0,0 +1,264 @@
+<template>
+  <div class="parcel-box">
+    <div class="title">
+      <el-select
+        size="mini"
+        v-model="company"
+        placeholder="请选择"
+        @change="getTableDate"
+      >
+        <el-option
+          v-for="item in companyOptions"
+          :key="item.id"
+          :label="item.aname"
+          :value="item.id"
+        >
+        </el-option>
+      </el-select>
+      <div class="station">
+        开始日期
+        <div class="search-input">
+          <el-date-picker
+            v-model="starTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="选择日期"
+            popper-class="date-select"
+          >
+          </el-date-picker>
+        </div>
+      </div>
+      <div class="station">
+        结束日期
+        <div class="search-input">
+          <el-date-picker
+            v-model="endTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="选择日期"
+            popper-class="date-select"
+          >
+          </el-date-picker>
+        </div>
+      </div>
+      <el-button round size="mini" class="searchColor" @click="getTableDate"
+        >搜索</el-button
+      >
+      <!-- <el-button round size="mini">导出</el-button> -->
+    </div>
+    <div class="data-bodys">
+      <div class="line clearfix">
+        <div class="leftContent left"><span>消缺及时率</span></div>
+        <div class="rightContent right"></div>
+      </div>
+      <div class="economicTable">
+        <el-table
+          :data="tableData"
+          style="width: 100%"
+          size="mini"
+          stripe
+          height="85vh"
+        >
+          <el-table-column
+            align="center"
+            prop="wpid"
+            label="风场"
+            width="200"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="gzCount"
+            label="故障次数"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="xqCount"
+            label="消缺及时次数"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="xqjsl"
+            label="消缺及时次数"
+            sortable
+          ></el-table-column>
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import dayjs from "dayjs";
+import { companys, eliminatRate } from "@/api/curveAnalyse";
+export default {
+  name: "curveAnalyse",
+  components: {},
+  data() {
+    return {
+      starTime: "",
+      endTime: "",
+      company: "",
+      companyOptions: [],
+      tableData: [],
+    };
+  },
+  watch: {},
+  filters: {},
+  computed: {},
+  created() {
+    let date = new Date();
+    date.setDate(1);
+    let month = parseInt(date.getMonth() + 1);
+    let day = date.getDate();
+    if (month < 10) {
+      month = "0" + month;
+    }
+    if (day < 10) {
+      day = "0" + day;
+    }
+    this.starTime = date.getFullYear() + "-" + month + "-" + day;
+    this.endTime = dayjs(new Date().getTime()).format("YYYY-MM-DD");
+    this.initialization();
+  },
+  methods: {
+    initialization() {
+      companys().then(({ data: res }) => {
+        this.companyOptions = res.data;
+        this.company = res.data[0].id;
+        this.getTableDate();
+      });
+    },
+    getTableDate() {
+      eliminatRate({
+        companyId: this.company,
+        beginDate: this.starTime,
+        endDate: this.endTime,
+      }).then(({ data: res }) => {
+        if (res) {
+          this.tableData = res.data;
+        }
+      });
+    },
+  },
+  mounted() {},
+  beforeUnmount() {},
+};
+</script>
+
+<style lang="less" scoped>
+.title {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  margin-top: 10px;
+  padding-left: 20px;
+
+  .station {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    font-size: 14px;
+    font-family: Microsoft YaHei;
+    font-weight: 400;
+    color: #b3b3b3;
+    margin-left: 10px;
+  }
+
+  .search-input {
+    margin-left: 10px;
+  }
+
+  .but {
+    display: flex;
+    flex-direction: row;
+    align-content: center;
+    margin-left: 20px;
+  }
+
+  .buttons {
+    background-color: rgba(5, 187, 76, 0.2);
+    border: 1px solid #3b6c53;
+    color: #b3b3b3;
+    font-size: 14px;
+
+    &:hover {
+      background-color: rgba(5, 187, 76, 0.5);
+      color: #ffffff;
+    }
+  }
+}
+
+.data-bodys {
+  display: flex;
+  flex-direction: column;
+  background-color: rgba(0, 0, 0, 0.45);
+  border-radius: 5px;
+  padding: 5px;
+}
+
+.parcel-box {
+  padding: 0 20px;
+  box-sizing: border-box;
+
+  .line {
+    padding-bottom: 5px;
+    .leftContent {
+      width: 242px;
+      height: 41px;
+      line-height: 41px;
+      background: url("../../../../assets/imgs/title_left_bg.png");
+
+      span {
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #ffffff;
+        margin-left: 25px;
+      }
+    }
+
+    .rightContent {
+      width: 212px;
+      height: 28px;
+      margin-top: 13px;
+      background: url("../../../../assets/imgs/title_right_bg.png");
+    }
+  }
+}
+
+.clearfix::after {
+  content: "";
+  clear: both;
+  height: 0;
+  line-height: 0;
+  visibility: hidden;
+  display: block;
+}
+
+.clearfix {
+  zoom: 1;
+}
+
+.left {
+  float: left;
+}
+
+.right {
+  float: right;
+}
+
+.searchColor {
+  background-color: rgba(5, 187, 76, 0.2);
+  border: 1px solid #3b6c53;
+  color: #b3b3b3;
+  font-size: 14px;
+  margin-left: 10px;
+  &:hover {
+    background-color: rgba(5, 187, 76, 0.5);
+    color: #ffffff;
+  }
+}
+</style>

+ 388 - 0
src/views/economicsOperation/efficiency/zhl/index.vue

@@ -0,0 +1,388 @@
+<template>
+  <div class="parcel-box">
+    <div class="title">
+      <el-select
+        size="mini"
+        v-model="company"
+        placeholder="请选择"
+        @change="getTableDate"
+      >
+        <el-option
+          v-for="item in companyOptions"
+          :key="item.id"
+          :label="item.aname"
+          :value="item.id"
+        >
+        </el-option>
+      </el-select>
+      <div class="station">
+        开始日期
+        <div class="search-input">
+          <el-date-picker
+            v-model="starTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="选择日期"
+            popper-class="date-select"
+          >
+          </el-date-picker>
+        </div>
+      </div>
+      <div class="station">
+        结束日期
+        <div class="search-input">
+          <el-date-picker
+            v-model="endTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="选择日期"
+            popper-class="date-select"
+          >
+          </el-date-picker>
+        </div>
+      </div>
+      <div class="date">
+        <div
+          class="day"
+          :class="current === '1' ? 'active' : ''"
+          @click="handleChange('1')"
+        >
+          小于3米风速
+        </div>
+        <div
+          class="mouth"
+          :class="current === '2' ? 'active' : ''"
+          @click="handleChange('2')"
+        >
+          大于3米风速
+        </div>
+        <div
+          class="year"
+          :class="current === '3' ? 'active' : ''"
+          @click="handleChange('3')"
+        >
+          大于4米风速
+        </div>
+      </div>
+      <el-button round size="mini" class="searchColor" @click="getTableDate"
+        >搜索</el-button
+      >
+      <!-- <el-button round size="mini">导出</el-button> -->
+    </div>
+    <div class="data-bodys">
+      <div class="line clearfix">
+        <div class="leftContent left"><span>状态转换率</span></div>
+        <div class="rightContent right"></div>
+      </div>
+      <div class="economicTable">
+        <el-table
+          :data="tableData"
+          style="width: 100%"
+          size="mini"
+          stripe
+          height="85vh"
+        >
+          <el-table-column
+            align="center"
+            prop="wpid"
+            label="风场"
+            width="200"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="wfz"
+            label="5分钟(次)"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="wfzfwl"
+            label="5分钟(率)"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="sfz"
+            label="10分钟(次)"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="sfzfwl"
+            label="10分钟(率)"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="swfz"
+            label="15分钟(次)"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="swfzfwl"
+            label="15分钟(率)"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="esfz"
+            label="20分钟(次)"
+            sortable
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="esfzfwl"
+            label="20分钟(率)"
+            sortable
+          ></el-table-column>
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import dayjs from "dayjs";
+import { companys, conversionRate } from "@/api/curveAnalyse";
+export default {
+  name: "curveAnalyse",
+  components: {},
+  data() {
+    return {
+      starTime: "",
+      endTime: "",
+      company: "",
+      companyOptions: [],
+      tableData: [],
+      current: "1",
+    };
+  },
+  filters: {},
+  computed: {},
+  created() {
+    let date = new Date();
+    date.setDate(1);
+    let month = parseInt(date.getMonth() + 1);
+    let day = date.getDate();
+    if (month < 10) {
+      month = "0" + month;
+    }
+    if (day < 10) {
+      day = "0" + day;
+    }
+    this.starTime = date.getFullYear() + "-" + month + "-" + day;
+    this.endTime = dayjs(new Date().getTime()).format("YYYY-MM-DD");
+    this.initialization();
+  },
+  methods: {
+    initialization() {
+      companys().then(({ data: res }) => {
+        this.companyOptions = res.data;
+        this.company = res.data[0].id;
+        this.getTableDate();
+      });
+    },
+    getTableDate() {
+      conversionRate({
+        companyId: this.company,
+        beginDate: this.starTime,
+        endDate: this.endTime,
+      }).then(({ data: res }) => {
+        if (res) {
+          const current = this.current;
+          if (current == "1") {
+            this.tableData = res.data.小于3米风速;
+          } else if (current == "2") {
+            this.tableData = res.data.大于3米风速;
+          } else {
+            this.tableData = res.data.大于4米风速;
+          }
+        }
+      });
+    },
+    handleChange(val) {
+      this.current = val;
+      this.getTableDate();
+    },
+  },
+  mounted() {},
+  beforeUnmount() {},
+};
+</script>
+
+<style lang="less" scoped>
+.title {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  margin-top: 10px;
+  padding-left: 20px;
+
+  .station {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    font-size: 14px;
+    font-family: Microsoft YaHei;
+    font-weight: 400;
+    color: #b3b3b3;
+    margin-left: 10px;
+  }
+
+  .search-input {
+    margin-left: 10px;
+  }
+
+  .but {
+    display: flex;
+    flex-direction: row;
+    align-content: center;
+    margin-left: 20px;
+  }
+
+  .buttons {
+    background-color: rgba(5, 187, 76, 0.2);
+    border: 1px solid #3b6c53;
+    color: #b3b3b3;
+    font-size: 14px;
+
+    &:hover {
+      background-color: rgba(5, 187, 76, 0.5);
+      color: #ffffff;
+    }
+  }
+}
+
+.data-bodys {
+  display: flex;
+  flex-direction: column;
+  background-color: rgba(0, 0, 0, 0.45);
+  border-radius: 5px;
+  padding: 5px;
+}
+
+.parcel-box {
+  padding: 0 20px;
+  box-sizing: border-box;
+
+  .line {
+    padding-bottom: 5px;
+
+    .leftContent {
+      width: 242px;
+      height: 41px;
+      line-height: 41px;
+      background: url("../../../../assets/imgs/title_left_bg.png");
+
+      span {
+        font-size: 16px;
+        font-family: Microsoft YaHei;
+        font-weight: 400;
+        color: #ffffff;
+        margin-left: 25px;
+      }
+    }
+
+    .rightContent {
+      width: 212px;
+      height: 28px;
+      margin-top: 13px;
+      background: url("../../../../assets/imgs/title_right_bg.png");
+    }
+  }
+}
+
+.clearfix::after {
+  content: "";
+  clear: both;
+  height: 0;
+  line-height: 0;
+  visibility: hidden;
+  display: block;
+}
+
+.clearfix {
+  zoom: 1;
+}
+
+.left {
+  float: left;
+}
+
+.right {
+  float: right;
+}
+
+.searchColor {
+  background-color: rgba(5, 187, 76, 0.2);
+  border: 1px solid #3b6c53;
+  color: #b3b3b3;
+  font-size: 14px;
+
+  &:hover {
+    background-color: rgba(5, 187, 76, 0.5);
+    color: #ffffff;
+  }
+}
+
+.date {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  font-size: 12px;
+  font-family: Microsoft YaHei;
+  font-weight: 400;
+  color: #b3b3b3;
+  margin: 0 15px;
+
+  .day {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    width: 100px;
+    height: 26px;
+    border: 1px solid #3b6c53;
+    border-radius: 11px 0px 0px 11px;
+    background: rgba(67, 81, 107, 0.2);
+
+    &.active {
+      background: rgba(5, 187, 76, 0.4);
+      color: #ffffff;
+    }
+  }
+
+  .mouth {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    width: 100px;
+    height: 26px;
+    border-top: 1px solid #3b6c53;
+    border-bottom: 1px solid #3b6c53;
+    background: rgba(67, 81, 107, 0.2);
+
+    &.active {
+      background: rgba(5, 187, 76, 0.4);
+      color: #ffffff;
+    }
+  }
+
+  .year {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    width: 100px;
+    height: 26px;
+    border: 1px solid #3b6c53;
+    border-radius: 0px 11px 11px 0px;
+    background: rgba(67, 81, 107, 0.2);
+
+    &.active {
+      background: rgba(5, 187, 76, 0.4);
+      color: #ffffff;
+    }
+  }
+}
+</style>

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

@@ -207,20 +207,35 @@ export default {
               path: "/economicsOperation/efficiency/restorationEfficiency",
               children: [
                 {
-                  text: "复位及时率",
+                  text: "复位及时率(风)",
                   icon: "svg-wind-site",
                   path: "/economicsOperation/efficiency/restorationEfficiency",
                 },
                 {
-                  text: "状态转换率",
+                  text: "状态转换率(风)",
                   icon: "svg-wind-site",
                   path: "/economicsOperation/efficiency/stateEfficiency",
                 },
                 {
-                  text: "消缺及时率",
+                  text: "消缺及时率(风)",
                   icon: "svg-wind-site",
                   path: "/economicsOperation/efficiency/consumeEfficiency",
                 },
+                // {
+                //   text: "系统效率",
+                //   icon: "svg-wind-site",
+                //   path: "/economicsOperation/efficiency/xtxl",
+                // },
+                // {
+                //   text: "离散率",
+                //   icon: "svg-wind-site",
+                //   path: "/economicsOperation/efficiency/lsl",
+                // },
+                // {
+                //   text: "转换率",
+                //   icon: "svg-wind-site",
+                //   path: "/economicsOperation/efficiency/zhl",
+                // },
               ],
             },
             {

+ 1 - 1
src/views/stateMonitor/Agc/Agc.vue

@@ -8,7 +8,7 @@
         style="box-sizing: border-box"
       >
         <el-col :span="5.6" v-for="data of datas" :key="data.id">
-          <AgcPanel :data="data"></AgcPanel>
+          <AgcPanel :obj="data"></AgcPanel>
         </el-col>
       </el-row>
     </el-scrollbar>

+ 47 - 24
src/views/stateMonitor/Agc/components/agc-panel.vue

@@ -3,12 +3,16 @@
     <div
       class="grid-content"
       style="width: 443px"
-      :class="{ activeError: data.agc009 == '1', visibe: data.add }"
+      :class="{
+        activeError: data?.agc009 == 1,
+        flash: data?.add,
+      }"
+      @click="handleMousenter"
     >
       <ul>
         <li class="agc_title">
           <p>
-            <span>{{ data.wpname || "---" }}</span>
+            <span>{{ data?.wpname || "---" }}</span>
             <i
               style="cursor: pointer"
               class="svg-icon svg-icon-sm svg-icon-green"
@@ -17,13 +21,13 @@
               <SvgIcon svgid="svg-line"></SvgIcon>
             </i>
           </p>
-          <p class="agc_name" :class="{ activeBaC: data.agc009 == '1' }"></p>
+          <p class="agc_name" :class="{ activeBaC: data?.agc009 == 1 }"></p>
         </li>
         <li class="agc_content">
           <div>
             <p>
               有功设定限值<span class="agc_val">{{
-                (data.agc002 / 1000).toFixed(2) || "--"
+                (data?.agc002 / 1000).toFixed(2) || "--"
               }}</span
               ><span class="agc_units">MW</span>
             </p>
@@ -32,23 +36,23 @@
               <span
                 class="agc_val agc_ch"
                 :class="{
-                  activeChao: Number(data.agc001) > Number(data.agc002),
-                  activeXiao: Number(data.agc001) < Number(data.agc002),
+                  activeChao: Number(data?.agc001) > Number(data?.agc002),
+                  activeXiao: Number(data?.agc001) < Number(data?.agc002),
                 }"
-                >{{ (data.agc001 / 1000).toFixed(2) || "--" }}</span
+                >{{ (data?.agc001 / 1000).toFixed(2) || "--" }}</span
               ><span class="agc_unit">MW</span>
             </p>
           </div>
           <div>
             <p>
               AGC可调上限<span class="agc_val">{{
-                (data.agc003 / 1000).toFixed(2) || "--"
+                (data?.agc003 / 1000).toFixed(2) || "--"
               }}</span
               ><span class="agc_units">MW</span>
             </p>
             <p>
               理论功率<span class="agc_val">{{
-                (data.agc010 / 1000).toFixed(2) || "--"
+                (data?.agc010 / 1000).toFixed(2) || "--"
               }}</span
               ><span class="agc_unit">MW</span>
             </p>
@@ -56,13 +60,13 @@
           <div>
             <p>
               AGC可调下限<span class="agc_val">{{
-                (data.agc004 / 1000).toFixed(2) || "--"
+                (data?.agc004 / 1000).toFixed(2) || "--"
               }}</span
               ><span class="agc_units">MW</span>
             </p>
             <p>
               预测功率<span class="agc_val">{{
-                (data.ycgl / 1000).toFixed(2) || "--"
+                (data?.ycgl / 1000).toFixed(2) || "--"
               }}</span
               ><span class="agc_unit">MW</span>
             </p>
@@ -71,28 +75,28 @@
         <li class="agc_footer">
           <!-- 1红其他绿 -->
           <div>
-            <img src="@assets/imgs/zhaung.png" v-if="data.agc006 == '1'" />
+            <img src="@assets/imgs/zhaung.png" v-if="data?.agc006 == 1" />
             <img src="@assets/imgs/zheng.png" v-else />
             <p>AGC投入</p>
           </div>
           <div>
-            <img src="@assets/imgs/zhaung.png" v-if="data.agc005 == '1'" />
+            <img src="@assets/imgs/zhaung.png" v-if="data?.agc005 == 1" />
             <img src="@assets/imgs/zheng.png" v-else />
             <p>AGC远方</p>
           </div>
           <div>
-            <img src="@assets/imgs/zhaung.png" v-if="data.agc008 == '1'" />
+            <img src="@assets/imgs/zhaung.png" v-if="data?.agc008 == 1" />
             <img src="@assets/imgs/zheng.png" v-else />
             <p>有功增闭锁</p>
           </div>
           <div>
-            <img src="@assets/imgs/zhaung.png" v-if="data.agc007 == '1'" />
+            <img src="@assets/imgs/zhaung.png" v-if="data?.agc007 == 1" />
             <img src="@assets/imgs/zheng.png" v-else />
             <p>有功减闭锁</p>
           </div>
         </li>
       </ul>
-      <qushi-dialog ref="child" ></qushi-dialog>
+      <qushi-dialog ref="child"></qushi-dialog>
     </div>
   </div>
 </template>
@@ -111,7 +115,7 @@ export default {
   },
   // 传入参数
   props: {
-    data: Object,
+    obj: Object,
   },
   // 数据
   data() {
@@ -139,8 +143,12 @@ export default {
           sts: "AGC010",
         },
       ],
+      data: {},
     };
   },
+  created() {
+    this.data = this.obj;
+  },
   // 函数
   methods: {
     deepClone,
@@ -151,6 +159,9 @@ export default {
       });
       this.$refs.child.openCurvDatas(y, 4, item.wpid);
     },
+    handleMousenter() {
+      this.data.add = false;
+    },
   },
 };
 </script>
@@ -362,7 +373,24 @@ p {
     background: rgba(30, 37, 36, 0.45);
     border-radius: 8px;
     margin-bottom: 10px;
-
+    &.activeError {
+      box-shadow: 0 0 14px #f00 inset;
+    }
+    @keyframes twinkle {
+      from {
+        box-shadow: 0 0 14px #f00 inset;
+      }
+      50% {
+        box-shadow: 0 0 14px transparent inset;
+      }
+      to {
+        box-shadow: 0 0 14px #f00 inset;
+      }
+    }
+    &.flash {
+      animation: twinkle 1s;
+      animation-iteration-count: infinite;
+    }
     .agc_title {
       position: relative;
       padding: 11px 0 8px 16px;
@@ -384,12 +412,7 @@ p {
       }
 
       .activeBaC {
-        background: linear-gradient(
-          to right top,
-          rgba(5, 148, 60, 0),
-          rgba(251, 77, 0, 0),
-          rgba(251, 77, 0, 0.5)
-        );
+        background: transparent;
       }
 
       span {

+ 5 - 1
src/views/stateMonitor/DetailMatrix/detailMatrix.vue

@@ -91,7 +91,11 @@
           >
             <div class="percent">{{ item.num3 }}</div>
             <div class="nums">
-              {{ (sourceMap[item.key] / 10000).toFixed(2) }}
+              {{
+                sourceMap[item.key]
+                  ? (sourceMap[item.key] / 10000).toFixed(2)
+                  : 0
+              }}
             </div>
           </div>
         </div>

+ 8 - 15
src/views/stateMonitor/Status/components/status-panel.vue

@@ -46,9 +46,9 @@
             <div class="covers" v-if="data.qcjrzt && !data.agcjrzt"></div>
             <p>AGC:</p>
             <p class="val_tit">设定</p>
-            <p class="val_name sd_name">{{ data.agc002 }}</p>
+            <p class="val_name sd_name">{{ data.agc002.toFixed(2) }}</p>
             <p class="unit_name">出线</p>
-            <p class="unit_val sd_name">{{ data.agc001 }}</p>
+            <p class="unit_val sd_name">{{ data.agc001.toFixed(2) }}</p>
           </li>
 
           <li>
@@ -57,7 +57,7 @@
               <p>{{ (data.type == -1 ? "风功" : "光功") + "率:" }}</p>
               <p>{{ "风功率:" }}</p>
               <p class="val_tit">未来15分钟</p>
-              <p class="val_name grd_name">{{ data.ycgl }}</p>
+              <p class="val_name grd_name">{{ data.ycgl.toFixed(2) }}</p>
             </div>
             <p class="unit_name"></p>
             <p class="unit_val"></p>
@@ -67,20 +67,13 @@
             <p>
               {{ data.type == -1 ? "测风塔:" : "气象站:" }}
             </p>
-            <p class="val_tit">
-              风速
-            </p>
+            <p class="val_tit">风速</p>
             <p class="val_name">
-              {{
-                
-                   (data.qxzfs || 0) + "m/s"
-              }}
-            </p>
-            <p class="unit_name">
-              风向
+              {{ (data.qxzfs.toFixed(2) || 0) + "m/s" }}
             </p>
+            <p class="unit_name">风向</p>
             <p class="unit_val">
-              {{ (data.qxzfx || 0 ) + "°" }}
+              {{ (data.qxzfx.toFixed(2) || 0) + "°" }}
             </p>
           </li>
           <li>
@@ -88,7 +81,7 @@
             <p>电能量表:</p>
             <p class="val_tit"></p>
             <p class="val_name">
-              {{ data.swdl ? data.swdl + "万kWh" : "0万kWh" }}
+              {{ data.swdl ? data.swdl.toFixed(2) + "万kWh" : "0万kWh" }}
             </p>
             <p class="unit_name"></p>
             <p class="unit_val"></p>

+ 1 - 1
src/views/stateMonitor/factoryMonitor/components/headerButton.vue

@@ -38,7 +38,7 @@
       </div>
 
       <el-pagination
-        v-if="allPowerStation.length >= pageSize"
+        v-if="allPowerStation.length > pageSize"
         @size-change="handleSizeChange"
         @current-change="handleCurrentChange"
         :current-page="currentPage"

+ 10 - 6
src/views/stateMonitor/factoryMonitor/photovoltaic/lightMatrixMonitor/index.vue

@@ -90,9 +90,11 @@
               <div class="percent">{{ item.text }}</div>
               <div class="nums">
                 {{
-                  item.code == "speed"
-                    ? singleMatrixInfo[item.code]?.toFixed(2)
-                    : (singleMatrixInfo[item.code] / 1000)?.toFixed(2)
+                  singleMatrixInfo[item.code]
+                    ? item.code == "speed"
+                      ? singleMatrixInfo[item.code]?.toFixed(2)
+                      : (singleMatrixInfo[item.code] / 1000)?.toFixed(2)
+                    : 0
                 }}
               </div>
             </div>
@@ -228,7 +230,9 @@
                         ></i>
                         <div class="right-value">
                           {{
-                            val.speed ? Number(val.speed)?.toFixed(2) : "0.00"
+                            val.current
+                              ? Number(val.current)?.toFixed(2)
+                              : "0.00"
                           }}
                         </div>
                       </div>
@@ -245,8 +249,8 @@
                         ></i>
                         <div class="right-value">
                           {{
-                            val.transfer
-                              ? Number(val.transfer)?.toFixed(2)
+                            val.voltage
+                              ? Number(val.voltage)?.toFixed(2)
                               : "0.00"
                           }}
                         </div>

+ 30 - 8
src/views/stateMonitor/factoryMonitor/photovoltaic/lighthome/index.vue

@@ -202,7 +202,7 @@
                     :style="{ transform: windSpeedRota }"
                   />
                   <div class="information">
-                    {{ dataDeal(wpInfos.sspjfsgzd, 2) }}
+                    {{ dataDeal(wpInfos?.sspjfsgzd, 2) }}
                   </div>
                   <div class="unit">W/m²</div>
                 </div>
@@ -228,7 +228,7 @@
                     :style="{ transform: windLoad }"
                   />
                   <div class="information">
-                    {{ dataDeal(wpInfos.fhl, 2) }}
+                    {{ dataDeal(wpInfos?.fhl, 2) }}
                   </div>
                   <div class="unit">%</div>
                 </div>
@@ -349,7 +349,7 @@
             <div class="point point-right bottom"></div>
             <div>今日和昨日出力对比</div>
           </div>
-          <div v-if="showFlag" style="width: 100%">
+          <div v-if="showFlag" style="width: 100%; margin-top: 10px">
             <LineCharts
               class="charts-item"
               :list="contrastList"
@@ -368,16 +368,16 @@
 </template>
 
 <script>
-import headerButton from "../../components/headerButton";
+import headerButton from "@/views/stateMonitor/factoryMonitor/components/headerButton";
 import powerEcharts from "@/components/chart/powerEcharts.vue";
 import { GetWpInfos, GetWpHisdata } from "@/api/factoryMonitor/index.js";
 import { GetWpPoints, GetPointFitting } from "@/api/points/index.js";
 import dayjs from "dayjs";
-import PieChart from "../../windPowerPlant/components/pieChart";
-import BarCharts from "../../windPowerPlant/components/barCharts";
-import LineCharts from "../../windPowerPlant/components/lineCharts";
+import PieChart from "@/views/stateMonitor/factoryMonitor/windPowerPlant/components/pieChart";
+import BarCharts from "@/views/stateMonitor/factoryMonitor/windPowerPlant/components/barCharts";
+import LineCharts from "@/views/stateMonitor/factoryMonitor/windPowerPlant/components/lineCharts";
 export default {
-  name: "lighthome", //风电场站
+  name: "lighthome", //光伏场站
   components: {
     powerEcharts,
     PieChart,
@@ -714,6 +714,7 @@ export default {
     this.time2 = setInterval(() => {
       this.getPowerStationAssets();
       this.getLossValuesAnalyse(this.dates);
+      this.getBarValuesFDL();
     }, 1000 * 60 * 15);
   },
   methods: {
@@ -769,6 +770,13 @@ export default {
             SLSS: this.wpInfos.rslssdl,
             XDSS: this.wpInfos.rxdssdl,
             XNSS: this.wpInfos.rxnssdl,
+            SUM:
+              this.wpInfos.rfdl +
+              this.wpInfos.rgzssdl +
+              this.wpInfos.rwhssdl +
+              this.wpInfos.rslssdl +
+              this.wpInfos.rxdssdl +
+              this.wpInfos.rxnssdl,
           };
         } else if (date == "M") {
           this.lossPower = {
@@ -778,6 +786,13 @@ export default {
             SLSS: this.wpInfos.yslssdl,
             XDSS: this.wpInfos.yxdssdl,
             XNSS: this.wpInfos.yxnssdl,
+            SUM:
+              this.wpInfos.yfdl +
+              this.wpInfos.ygzssdl +
+              this.wpInfos.ywhssdl +
+              this.wpInfos.yslssdl +
+              this.wpInfos.yxdssdl +
+              this.wpInfos.yxnssdl,
           };
         } else if (date == "Y") {
           this.lossPower = {
@@ -787,6 +802,13 @@ export default {
             SLSS: this.wpInfos.nslssdl,
             XDSS: this.wpInfos.nxdssdl,
             XNSS: this.wpInfos.nxnssdl,
+            SUM:
+              this.wpInfos.nfdl +
+              this.wpInfos.ngzssdl +
+              this.wpInfos.nwhssdl +
+              this.wpInfos.nslssdl +
+              this.wpInfos.nxdssdl +
+              this.wpInfos.nxnssdl,
           };
         } else {
           this.lossPower = {};

File diff suppressed because it is too large
+ 1680 - 1545
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/BHB.vue


File diff suppressed because it is too large
+ 2016 - 1584
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/BHBSQ.vue


File diff suppressed because it is too large
+ 2209 - 1572
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/DJY.vue


File diff suppressed because it is too large
+ 3111 - 2724
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/GJY.vue


File diff suppressed because it is too large
+ 3675 - 2839
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/HSM.vue


File diff suppressed because it is too large
+ 36247 - 57
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/MLJ.vue


File diff suppressed because it is too large
+ 2091 - 2011
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/NJL.vue


File diff suppressed because it is too large
+ 1664 - 918
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/PDL.vue


File diff suppressed because it is too large
+ 20079 - 273
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/PTZ.vue


File diff suppressed because it is too large
+ 2623 - 2035
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/XWT.vue


File diff suppressed because it is too large
+ 18346 - 1556
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/YF.vue


File diff suppressed because it is too large
+ 1719 - 1224
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/YLZ.vue


File diff suppressed because it is too large
+ 1207 - 931
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/YTY.vue


File diff suppressed because it is too large
+ 10118 - 9988
src/views/stateMonitor/factoryMonitor/windPowerPlant/boosterStation/components/ZK.vue


+ 8 - 4
src/views/stateMonitor/factoryMonitor/windPowerPlant/matrixMonitor/index.vue

@@ -90,9 +90,11 @@
               <div class="percent">{{ item.text }}</div>
               <div class="nums">
                 {{
-                  item.code == "speed"
-                    ? singleMatrixInfo[item.code]?.toFixed(2)
-                    : (singleMatrixInfo[item.code] / 1000)?.toFixed(2)
+                  singleMatrixInfo[item.code]
+                    ? item.code == "speed"
+                      ? singleMatrixInfo[item.code]?.toFixed(2)
+                      : (singleMatrixInfo[item.code] / 1000)?.toFixed(2)
+                    : 0
                 }}
               </div>
             </div>
@@ -256,7 +258,9 @@
                   <div class="matrix-progress">
                     <div
                       class="progress-block"
-                      :style="{ width: (val.rate > 100 ? 100 : val.rate) + '%' }"
+                      :style="{
+                        width: (val.rate > 100 ? 100 : val.rate) + '%',
+                      }"
                       :class="
                         findUpColor(ratelist, parseInt(Number(val.ssqfzt)) + 1)
                       "