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 пре 4 месеци
родитељ
комит
20bac8b3bd

+ 4 - 4
.env.development

@@ -11,21 +11,21 @@ VUE_APP_TITLE = '页面标题'
 # 马力军
 # VUE_APP_LOGIN_URL = 'http://192.168.2.45:48080'
 # 王波
-VUE_APP_LOGIN_URL = 'http://192.168.0.232:48080'
+VUE_APP_LOGIN_URL = 'http://192.168.2.232:48080'
 
 # 发电能力分析
 # VUE_APP_GENERAT_URL = 'http://192.168.0.102:9002'
 # 马力军
 # VUE_APP_GENERAT_URL = 'http://192.168.2.45:9002'
 # 王波
-VUE_APP_GENERAT_URL = 'http://192.168.0.101:9002'
+VUE_APP_GENERAT_URL = 'http://192.168.2.232:9002'
 
 # 智能报表
 # VUE_APP_REPORT_URL = 'http://192.168.0.102:9001'
 # 马力军
 # VUE_APP_REPORT_URL = 'http://192.168.2.45:9001'
 # 王波
-VUE_APP_REPORT_URL = 'http://192.168.0.101:9001'
+VUE_APP_REPORT_URL = 'http://192.168.2.232:9001'
 
 # 功率预测
 # 徐世利
@@ -33,7 +33,7 @@ VUE_APP_REPORT_URL = 'http://192.168.0.101:9001'
 # 马力军
 # VUE_APP_BASE_URL = 'http://192.168.2.45:8086'
 # 王波
-VUE_APP_BASE_URL = 'http://192.168.0.101:8086'
+VUE_APP_BASE_URL = 'http://192.168.2.232:8086'
 
 # 综合报警
 # VUE_APP_ALARM = 'http://10.127.7.241:6015'

+ 3 - 3
components.d.ts

@@ -20,7 +20,7 @@ declare module 'vue' {
     CalculationModelConfiguration: typeof import('./src/components/powerPredictionComponent/configPage/calculationModelConfiguration.vue')['default']
     Card1: typeof import('./src/components/coms/cards/card-1.vue')['default']
     CheckTable: typeof import('./src/components/coms/table/check-table.vue')['default']
-    Col: typeof import('./src/components/coms/grid/col.vue')['default']
+    Col: typeof import('./src/components/homeComponent/grid/col.vue')['default']
     CollapseList: typeof import('./src/components/coms/collapse/collapse-list.vue')['default']
     CollectionLineManagement: typeof import('./src/components/powerPredictionComponent/configPage/stationFlode/collectionLineManagement.vue')['default']
     CommonHeaders: typeof import('./src/components/commonHeaders.vue')['default']
@@ -154,7 +154,7 @@ declare module 'vue' {
     RoleManagement: typeof import('./src/components/powerPredictionComponent/configPage/roleManagement.vue')['default']
     RouterLink: typeof import('vue-router')['RouterLink']
     RouterView: typeof import('vue-router')['RouterView']
-    Row: typeof import('./src/components/coms/grid/row.vue')['default']
+    Row: typeof import('./src/components/homeComponent/grid/row.vue')['default']
     SBQ: typeof import('./src/components/powerPredictionComponent/configPage/configDesignVue/SBQ.vue')['default']
     ScatterLineChart: typeof import('./src/components/chart/combination/scatter-line-chart.vue')['default']
     SimpleLineChart: typeof import('./src/components/chart/line/simple-line-chart.vue')['default']
@@ -166,7 +166,7 @@ declare module 'vue' {
     StrightLineChart: typeof import('./src/components/chart/line/stright-line-chart.vue')['default']
     SubmitBtn: typeof import('./src/components/generatingCapacityComponent/SubmitBtn.vue')['default']
     SvgDraw: typeof import('./src/components/coms/icon/svg-draw.vue')['default']
-    SvgIcon: typeof import('./src/components/coms/icon/svg-icon.vue')['default']
+    SvgIcon: typeof import('./src/components/powerPredictionComponent/svgIcon/index.vue')['default']
     SvgPageShow: typeof import('./src/components/powerPredictionComponent/powerControlSvg/svgPageShow.vue')['default']
     Tab: typeof import('./src/components/coms/tabs/tab.vue')['default']
     Table: typeof import('./src/components/generatingCapacityComponent/table.vue')['default']

BIN
src/assets/images/indexCom/fengji-1.png


BIN
src/assets/images/indexCom/fengji-2.png


BIN
src/assets/images/indexCom/run_Icon.gif


Разлика између датотеке није приказан због своје велике величине
+ 579 - 572
src/components/generatingCapacityComponent/kMap/index.vue


+ 2 - 2
src/components/generatingCapacityComponent/table.vue

@@ -1,6 +1,6 @@
 <template>
   <div
-    class="warn-table"
+    class="warn-table1"
     ref="tableRef"
     :style="{ height: typeof height === 'string' ? height : height + 'px' }"
   >
@@ -175,7 +175,7 @@ export default {
 };
 </script>
 <style lang="less">
-.warn-table {
+.warn-table1 {
   .tableData_tit {
     display: flex;
 

+ 0 - 1
src/components/generatingCapacityComponent/tree.vue

@@ -367,7 +367,6 @@ export default {
             //     })
             //     saveAs(blob)
             // }).catch((r) => {
-            //     console.error(r)
             // })
           });
           break;

+ 115 - 102
src/themeDark.less

@@ -25,23 +25,23 @@
 @jbs5: linear-gradient(to right, #f1880c, #ffd179);
 @jbs6: linear-gradient(to right, #ff293d, #ff9ea7);
 
-@green : #05bb4c;
-@gray : #606769;
-@gray-l : #B3BDC0;
+@green          : #05bb4c;
+@gray           : #606769;
+@gray-l         : #B3BDC0;
 @picker-bg-color: fade(rgb(3, 7, 19), 95);
 
-@primary-color : #2568c4;
-@border-color : transparent;
-@text-color : #fff;
+@primary-color    : #2568c4;
+@border-color     : transparent;
+@text-color       : #fff;
 @placeholder-color: #c0c4cc;
-@disabled-color : #c0c4cc;
-@disabled-bg : #000;
+@disabled-color   : #c0c4cc;
+@disabled-bg      : #000;
 
 .nsfStyle {
     #app {
 
         .themeDarkHome {
-            background: @mc1 !important;
+            background: @mc1  !important;
         }
 
         .themeDark {
@@ -52,11 +52,11 @@
 
                 .proMenu {
                     .defaultBacksty {
-                        color: @fc6 !important;
+                        color: @fc6  !important;
                     }
 
                     .changeBacksty {
-                        color: @fzs2 !important;
+                        color       : @fzs2  !important;
                         border-color: @mc3;
                     }
                 }
@@ -143,7 +143,7 @@
             // 首页点击地图风场后左侧的滑出窗口
             .infoBox {
                 .el-button {
-                    color: @fzs2 !important;
+                    color: @fzs2  !important;
                 }
 
                 p,
@@ -204,7 +204,7 @@
                 .excelDataMain,
                 .tableDataMain {
                     background: @mc2;
-                    padding: 10px 5px;
+                    padding   : 10px 5px;
 
                     .main {
                         background: #13171e;
@@ -216,7 +216,7 @@
 
 
             .scrollbar-demo-item {
-                background: rgba(83, 98, 104, .2);
+                background  : rgba(83, 98, 104, .2);
                 border-color: #1890ff;
             }
 
@@ -235,12 +235,12 @@
             // 基本样式
             .el-input__wrapper {
                 background-color: rgba(83, 98, 104, .2);
-                border-radius: 4px;
-                border: 1px solid @border-color;
+                border-radius   : 4px;
+                border          : 1px solid @border-color;
 
                 // 输入框
                 .el-input__inner {
-                    color: @text-color;
+                    color    : @text-color;
                     font-size: 14px;
 
                     &::placeholder {
@@ -256,7 +256,7 @@
                 // 聚焦状态
                 &.is-focus {
                     border-color: @primary-color;
-                    box-shadow: 0 0 0 2px fade(@primary-color, 20%);
+                    box-shadow  : 0 0 0 2px fade(@primary-color, 20%);
                 }
             }
 
@@ -264,7 +264,7 @@
             &.is-disabled {
                 .el-input__wrapper {
                     background-color: @disabled-bg;
-                    border-color: @border-color;
+                    border-color    : @border-color;
 
                     .el-input__inner {
                         color: @disabled-color;
@@ -297,8 +297,8 @@
             // 基本样式
             .el-select__wrapper {
                 background-color: rgba(83, 98, 104, .2);
-                border-radius: 4px;
-                border: 1px solid @border-color;
+                border-radius   : 4px;
+                border          : 1px solid @border-color;
 
                 .el-select__placeholder {
                     color: #fff;
@@ -312,7 +312,7 @@
                 // 聚焦状态
                 &.is-focus {
                     border-color: @primary-color;
-                    box-shadow: 0 0 0 2px fade(@primary-color, 20%);
+                    box-shadow  : 0 0 0 2px fade(@primary-color, 20%);
                 }
             }
 
@@ -320,7 +320,7 @@
             &.is-disabled {
                 .el-input__wrapper {
                     background-color: @disabled-bg;
-                    border-color: @border-color;
+                    border-color    : @border-color;
 
                     .el-input__inner {
                         color: @disabled-color;
@@ -330,7 +330,7 @@
 
             // 下拉箭头
             .el-select__caret {
-                color: @placeholder-color;
+                color    : @placeholder-color;
                 font-size: 14px;
 
                 &.is-reverse {
@@ -363,7 +363,7 @@
             background: #13171e;
 
             .topPsty {
-                color: #1c99ff;
+                color     : #1c99ff;
                 background: #1e2126;
             }
         }
@@ -385,7 +385,7 @@
     .el-table,
     .custom-table.el-table {
         background: rgb(3, 7, 19);
-        border: 0px; // 包裹表格父元素边框
+        border    : 0px; // 包裹表格父元素边框
 
         .el-table__row {
             background: transparent; // 表格底色,因表格上层有其他颜色遮挡所以视觉效果看起来仿佛是表格边框
@@ -415,17 +415,17 @@
             }
 
             &:hover td {
-                color: #67b9ff; // 表格基数行 hover 文字颜色
+                color           : #67b9ff; // 表格基数行 hover 文字颜色
                 background-color: rgb(3, 7, 19) !important; // 表格基数行 hover 背景颜色
             }
         }
 
         td {
-            border: 0px; // 表格内部除了最后一行底部以外的上下左右边框
-            padding: 0;
-            height: 37px;
+            border     : 0px; // 表格内部除了最后一行底部以外的上下左右边框
+            padding    : 0;
+            height     : 37px;
             line-height: 37px;
-            color: rgb(194, 225, 255);
+            color      : rgb(194, 225, 255);
 
             &.light,
             &.always-light {
@@ -434,14 +434,14 @@
         }
 
         th {
-            border: 0px;
-            padding: 0px;
-            height: 37px;
+            border     : 0px;
+            padding    : 0px;
+            height     : 37px;
             line-height: 37px;
             font-weight: normal;
-            text-align: center;
-            color: rgb(85, 113, 166);
-            cursor: pointer;
+            text-align : center;
+            color      : rgb(85, 113, 166);
+            cursor     : pointer;
 
             &.is-leaf {
                 border: 0px;
@@ -456,27 +456,27 @@
         th,
         tr {
             background-color: transparent;
-            border: 0px;
+            border          : 0px;
         }
 
         thead {
-            color: @gray-l;
+            color      : @gray-l;
             font-weight: 500;
-            font-size: 14px;
-            border: 0px;
+            font-size  : 14px;
+            border     : 0px;
 
             th,
             &.is-group th {
                 &.el-table__cell {
-                    background: rgb(19, 35, 71);
+                    background  : rgb(19, 35, 71);
                     border-color: transparent !important;
-                    color: #bcd2ff;
+                    color       : #bcd2ff;
                 }
             }
         }
 
         .el-table__body {
-            border: 0px; // 表格最外侧除右边以外边框
+            border   : 0px; // 表格最外侧除右边以外边框
             font-size: 14px;
         }
 
@@ -486,7 +486,7 @@
             }
 
             &:hover td {
-                color: #67b9ff;
+                color           : #67b9ff;
                 background-color: rgb(16, 25, 46) !important; // 表格偶数行 hover 背景颜色
             }
 
@@ -514,10 +514,12 @@
             color: #fff !important;
         }
 
+
+
         .el-table,
         .custom-table.el-table {
             background: rgb(3, 7, 19);
-            border: 1px solid rgba(33, 105, 195, 0.5) !important; // 包裹表格父元素边框
+            border    : 1px solid rgba(33, 105, 195, 0.5) !important; // 包裹表格父元素边框
 
             .el-table__row {
                 background: transparent; // 表格底色,因表格上层有其他颜色遮挡所以视觉效果看起来仿佛是表格边框
@@ -551,17 +553,17 @@
                 }
 
                 &:hover td {
-                    color: #67b9ff; // 表格基数行 hover 文字颜色
+                    color           : #67b9ff; // 表格基数行 hover 文字颜色
                     background-color: rgb(3, 7, 19) !important; // 表格基数行 hover 背景颜色
                 }
             }
 
             td {
-                border: 0px; // 表格内部除了最后一行底部以外的上下左右边框
-                padding: 0;
-                height: 37px;
+                border     : 0px; // 表格内部除了最后一行底部以外的上下左右边框
+                padding    : 0;
+                height     : 37px;
                 line-height: 37px;
-                color: rgb(194, 225, 255);
+                color      : rgb(194, 225, 255);
 
                 &.light,
                 &.always-light {
@@ -570,14 +572,14 @@
             }
 
             th {
-                border: 0px;
-                padding: 0px;
-                height: 37px;
+                border     : 0px;
+                padding    : 0px;
+                height     : 37px;
                 line-height: 37px;
                 font-weight: normal;
-                text-align: center;
-                color: rgb(85, 113, 166);
-                cursor: pointer;
+                text-align : center;
+                color      : rgb(85, 113, 166);
+                cursor     : pointer;
 
                 &.is-leaf {
                     border: 0px;
@@ -592,27 +594,27 @@
             th,
             tr {
                 background-color: transparent;
-                border: 0px;
+                border          : 0px;
             }
 
             thead {
-                color: @gray-l;
+                color      : @gray-l;
                 font-weight: 500;
-                font-size: 14px;
-                border: 0px;
+                font-size  : 14px;
+                border     : 0px;
 
                 th,
                 &.is-group th {
                     &.el-table__cell {
-                        background: rgb(19, 35, 71) !important;
+                        background  : rgb(19, 35, 71) !important;
                         border-color: transparent !important;
-                        color: #bcd2ff;
+                        color       : #bcd2ff;
                     }
                 }
             }
 
             .el-table__body {
-                border: 0px; // 表格最外侧除右边以外边框
+                border   : 0px; // 表格最外侧除右边以外边框
                 font-size: 14px;
             }
 
@@ -622,7 +624,7 @@
                 }
 
                 &:hover td {
-                    color: #67b9ff;
+                    color           : #67b9ff;
                     background-color: rgb(16, 25, 46) !important; // 表格偶数行 hover 背景颜色
                 }
 
@@ -660,6 +662,17 @@
         background: #1a1f2fcc;
     }
 
+    .el-table__footer-wrapper tfoot td.el-table__cell {
+        background: transparent;
+        color     : #c2e1ff;
+    }
+
+    .el-table__footer-wrapper tfoot tr:hover {
+        td.el-table__cell {
+            color: #67b9ff;
+        }
+    }
+
     // 去除表格顶、左、底部边框
     .el-table__border-left-patch,
     .el-table__inner-wrapper::after,
@@ -671,7 +684,7 @@
     .el-dialog.currentDialog,
     .el-dialog[custom-class="windLifeDialog"] {
         background: rgba(3, 7, 19, 0.95);
-        border: 1px solid rgba(33, 105, 195, 0.5);
+        border    : 1px solid rgba(33, 105, 195, 0.5);
         box-shadow: 0px 8px 17px 1px rgba(33, 105, 195, 0.3);
 
         .el-dialog__title {
@@ -708,20 +721,20 @@
 
     .el-select-dropdown__wrap {
         background-color: rgb(10, 23, 42);
-        border: 1px solid rgb(10, 23, 42);
-        border-radius: 4px;
-        box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+        border          : 1px solid rgb(10, 23, 42);
+        border-radius   : 4px;
+        box-shadow      : 0 2px 12px 0 rgba(0, 0, 0, 0.1);
 
         .el-select-dropdown__item {
-            font-size: 14px;
-            padding: 0 20px;
-            position: relative;
-            white-space: nowrap;
-            overflow: hidden;
+            font-size    : 14px;
+            padding      : 0 20px;
+            position     : relative;
+            white-space  : nowrap;
+            overflow     : hidden;
             text-overflow: ellipsis;
-            color: @text-color;
-            height: 34px;
-            line-height: 34px;
+            color        : @text-color;
+            height       : 34px;
+            line-height  : 34px;
 
             &.hover,
             &.is-hovering,
@@ -730,22 +743,22 @@
             }
 
             &.is-selected {
-                color: @fzs2;
+                color      : @fzs2;
                 font-weight: 400;
 
                 &:hover {
                     background: @fzs2;
-                    color: #fff;
+                    color     : #fff;
                 }
 
                 &.is-hovering {
                     background: @fzs2;
-                    color: #fff;
+                    color     : #fff;
                 }
             }
 
             &.is-disabled {
-                color: @disabled-color;
+                color : @disabled-color;
                 cursor: not-allowed;
             }
         }
@@ -753,19 +766,19 @@
 
     // 多选样式
     .el-select .el-select__selection.is-near {
-        position: absolute;
+        position   : absolute;
         line-height: normal;
         white-space: normal;
-        z-index: 1;
-        top: 50%;
-        transform: translateY(-50%);
-        display: flex;
+        z-index    : 1;
+        top        : 50%;
+        transform  : translateY(-50%);
+        display    : flex;
         align-items: center;
-        flex-wrap: wrap;
+        flex-wrap  : wrap;
 
         .el-tag {
             background: #000;
-            color: @text-color;
+            color     : @text-color;
         }
     }
 
@@ -778,7 +791,7 @@
 
             &.is-checked {
                 .el-radio__inner {
-                    background: @fzs2;
+                    background  : @fzs2;
                     border-color: @fzs2;
                 }
 
@@ -834,7 +847,7 @@
                     td.current:not(.disabled) {
                         .el-date-table-cell__text {
                             background: @fzs2;
-                            color: #fff;
+                            color     : #fff;
                         }
                     }
 
@@ -847,7 +860,7 @@
                 td.current:not(.disabled) {
                     .cell {
                         background: @fzs2;
-                        color: #fff;
+                        color     : #fff;
                     }
                 }
             }
@@ -865,7 +878,7 @@
 
                 &:hover {
                     background: @mc3;
-                    color: @fc1;
+                    color     : @fc1;
                 }
             }
 
@@ -873,7 +886,7 @@
 
         .el-input__wrapper {
             background-color: rgba(83, 98, 104, .2);
-            border: 1px solid @border-color;
+            border          : 1px solid @border-color;
 
             .el-input__inner {
                 color: #fff;
@@ -881,9 +894,9 @@
         }
 
         .el-time-panel {
-            border-color: #fff;
+            border-color    : #fff;
             background-color: rgb(3, 7, 19);
-            box-shadow: var(--el-box-shadow-light);
+            box-shadow      : var(--el-box-shadow-light);
         }
 
         .el-time-spinner__item {
@@ -919,7 +932,7 @@
         }
 
         .el-button.is-plain {
-            color: #67b9ff;
+            color       : #67b9ff;
             border-color: #67b9ff;
         }
     }
@@ -938,7 +951,7 @@
 
     .el-textarea__inner {
         background: rgba(83, 98, 104, .2);
-        color: @text-color;
+        color     : @text-color;
     }
 
     .el-tabs {
@@ -946,7 +959,7 @@
             color: #c2e1ff !important;
 
             &.is-active {
-                color: @fzs2 !important;
+                color: @fzs2  !important;
             }
         }
     }
@@ -961,7 +974,7 @@
             color: #c2e1ff !important;
 
             &.is-active {
-                color: @fzs2 !important;
+                color     : @fzs2  !important;
                 background: rgba(3, 7, 19, 0.95);
 
             }
@@ -982,7 +995,7 @@
         }
 
         .el-pager .number {
-            color: #fff;
+            color     : #fff;
             background: transparent;
 
             &:hover {
@@ -998,9 +1011,9 @@
     .point-popover {
         .el-popper__arrow {
             &:before {
-                border-color: var(--el-popover-border-color) !important;
+                border-color      : var(--el-popover-border-color) !important;
                 border-right-color: transparent !important;
-                border-top-color: transparent !important;
+                border-top-color  : transparent !important;
             }
         }
     }

+ 52 - 3
src/views/generatingCapacity/dataAnalysis/agcAnalysis/components/current-scatter-chart.vue

@@ -94,6 +94,11 @@ export default {
   },
   methods: {
     resize() {},
+
+    setMarkItem(markItem) {
+      this.markItem = markItem;
+    },
+
     initChart(markItem = {}) {
       const that = this;
       document.getElementById(this.id).removeAttribute("_echarts_instance_");
@@ -102,21 +107,65 @@ export default {
 
       this.$nextTick(() => {
         that.chartData.forEach((ele) => {
+          ele.emphasis = {
+            focus: "none", // 取消高亮
+            itemStyle: {
+              color: null, // 不改变颜色
+              borderColor: null, // 不改变边框颜色
+              borderWidth: 0, // 不改变边框宽度
+              shadowBlur: 0, // 不添加阴影
+              shadowColor: null, // 不改变阴影颜色
+              opacity: 1, // 不改变透明度
+            },
+          };
+          ele.silent = true;
           if (ele.name === "偏差上限") {
             ele.areaStyle = that.linearGradientColor[0];
+            ele.silent = true;
+            // ele.emphasis = {
+            //   focus: "none", // 取消高亮
+            //   itemStyle: {
+            //     color: null, // 不改变颜色
+            //     borderColor: null, // 不改变边框颜色
+            //     borderWidth: 0, // 不改变边框宽度
+            //     shadowBlur: 0, // 不添加阴影
+            //     shadowColor: null, // 不改变阴影颜色
+            //     opacity: 1, // 不改变透明度
+            //   },
+            // };
           } else if (ele.name === "偏差下限") {
             ele.areaStyle = that.linearGradientColor[1];
+            ele.silent = true;
+            // ele.emphasis = {
+            //   focus: "none", // 取消高亮
+            //   itemStyle: {
+            //     color: null, // 不改变颜色
+            //     borderColor: null, // 不改变边框颜色
+            //     borderWidth: 0, // 不改变边框宽度
+            //     shadowBlur: 0, // 不添加阴影
+            //     shadowColor: null, // 不改变阴影颜色
+            //     opacity: 1, // 不改变透明度
+            //   },
+            // };
           }
+
           if (ele.name === "实发有功" && markItem.res) {
             this.markItem = markItem;
             ele.markPoint = {
               symbolSize: 36,
               itemStyle: {
-                color: "#f60", // 特殊颜色
+                color: this.$store.state.theme ? "#eb4d4b" : "#ff7979", // 特殊颜色
               },
               emphasis: {
+                focus: "none", // 取消高亮
+                silent: true, // 禁用 markPoint 的所有鼠标事件
                 itemStyle: {
-                  color: "#fff",
+                  color: "#fff", // 不改变颜色
+                  borderColor: null, // 不改变边框颜色
+                  borderWidth: 0, // 不改变边框宽度
+                  shadowBlur: 0, // 不添加阴影
+                  shadowColor: null, // 不改变阴影颜色
+                  opacity: 1, // 不改变透明度
                 },
               },
               blur: {
@@ -446,7 +495,7 @@ export default {
     let myChart = echarts.init(document.getElementById(this.id));
     myChart.dispose();
     this.$nextTick(() => {
-      this.initChart();
+      this.initChart(this.markItem);
     });
   },
   unmounted() {

+ 9 - 16
src/views/generatingCapacity/dataAnalysis/angleAnalysis/components/current-scatter-chart.vue

@@ -139,26 +139,19 @@ export default {
                         </div>`;
       return str + str2;
     },
+
     changeColor() {
       if (this.$store.state.theme) {
-        this.color = [
-          "#67c23a",
-          "rgb(242.5, 208.5, 157.5)",
-          "#f56c6c",
-          "rgb(77, 119, 255)",
-          "rgb(116, 21, 219)",
-        ];
+        this.color = ["#22a6b3", "#be2edd", "#4834d4", "#6ab04c"];
       } else {
-        this.color = [
-          "#67c23a",
-          "rgb(242.5, 208.5, 157.5)",
-          "#f56c6c",
-          "rgb(77, 119, 255)",
-          "rgb(1, 191, 236)",
-        ];
+        this.color = ["#7ed6df", "#e056fd", "#686de0", "#badc58"];
       }
     },
 
+    setMarkItem(markItem) {
+      this.markItem = markItem;
+    },
+
     initChart(markItem = {}) {
       const that = this;
       const theme = sessionStorage.getItem("theme") === "true" ? true : false;
@@ -166,12 +159,12 @@ export default {
         ele.lineStyle = {
           color: that.color[index],
         };
-        if (ele.name === "叶片1" && markItem.yp1) {
+        if (ele.name === "叶片1" && markItem?.yp1 >= 0) {
           this.markItem = markItem;
           ele.markPoint = {
             symbolSize: 36,
             itemStyle: {
-              color: "#f60", // 特殊颜色
+              color: this.$store.state.theme ? "#eb4d4b" : "#ff7979", // 特殊颜色
             },
             emphasis: {
               itemStyle: {

+ 12 - 3
src/views/generatingCapacity/dataAnalysis/angleAnalysis/index.vue

@@ -30,9 +30,14 @@
         <div class="tableDataMain">
           <el-tabs v-model="activeTab">
             <el-tab-pane label="图表展示" name="1"> </el-tab-pane>
-            <el-tab-pane label="桨距角风速曲线" name="2"> </el-tab-pane>
+            <el-tab-pane label="桨距角风速曲线" name="2" v-if="false">
+            </el-tab-pane>
             <el-tab-pane label="表格数据" name="3"> </el-tab-pane>
-            <el-tab-pane :label="`异常测点 (${abnormalPoint.length}个)`" name="4"> </el-tab-pane>
+            <el-tab-pane
+              :label="`异常测点 (${abnormalPoint.length}个)`"
+              name="4"
+            >
+            </el-tab-pane>
             <div v-if="activeTab === '3'" :style="{ height: tableHeight }">
               <table-cop
                 class=""
@@ -65,7 +70,10 @@
                 @getSelected="funChartSelect"
               />
             </div>
-            <div v-if="activeTab === '2'" :style="{ height: tableHeight }">
+            <div
+              v-if="false && activeTab === '2'"
+              :style="{ height: tableHeight }"
+            >
               <!-- <div id="speedLine" style="width:100%;height:100%"></div> -->
               <bar-chart-cop
                 width="100%"
@@ -143,6 +151,7 @@ const currentNodeKey = ref("");
 
 import jsonData from "./components/data.json";
 const funExcelChange = async (obj) => {
+  chartRef.value.setMarkItem({});
   //点击excel项时
   funSubmit({
     ids: obj.id,

+ 2 - 2
src/views/generatingCapacity/dataAnalysis/hotAnalysis/index.vue

@@ -322,7 +322,7 @@ const funExcelChange = async (obj) => {
   chartExcelList.value = excelList.value.map((o) => {
     return {
       ...o,
-      name: o.windturbine,
+      name: o.name.split("_")[0],
     };
   }); // 选中excel当前项时, excel列表赋值给dialog 下拉框
   queryForm.checkIds = excelList.value.map((o) => o.id);
@@ -1170,7 +1170,7 @@ const initPageData = () => {
     chartExcelList.value = excelList.value.map((o) => {
       return {
         ...o,
-        name: o.windturbine,
+        name: o.name.split("_")[0],
       };
     }); // 选中excel当前项时, excel列表赋值给dialog 下拉框
     queryForm.checkIds = excelList.value.map((o) => o.id);

+ 22 - 10
src/views/generatingCapacity/dataAnalysis/posAnalysis/components/leafletMap.vue

@@ -32,6 +32,14 @@ export default {
       areaLayer: null,
       tilsUrl: "./static/kMapTiles/{z}/{x}/{y}.jpg",
       ciLayer: null,
+      viewCenterMap: {
+        GJNY_SXGS_ZZ_FDC_STA: { lng: 107.86058, lat: 37.37861 },
+        GJNY_SXGS_JSL_FDC_STA: { lng: 108.51853, lat: 37.45717 },
+        GJNY_SXGS_XZ_FDC_STA: { lng: 107.9109, lat: 37.46585 },
+        GJNY_SXGS_FSG_FDC_STA: { lng: 107.85678, lat: 37.41682 },
+        GJNY_SXGS_CSL_FDC_STA: { lng: 108.2031, lat: 37.2811 },
+        GJNY_SXGS_LJS_FDC_STA: { lng: 108.39083, lat: 37.485 },
+      },
     };
   },
   watch: {
@@ -91,8 +99,8 @@ export default {
         ],
       });
       // let name = L.tileLayer(
-      //     "http://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}",
-      // ).addTo(this.map)
+      //   "http://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}"
+      // ).addTo(this.map);
 
       let name = L.tileLayer(this.tilsUrl, {
         minZoom: 1,
@@ -119,6 +127,8 @@ export default {
       if (res.code === 200) {
         if (res.data && res.data.length) {
           this.layers = [];
+          const viewCenter =
+            this.viewCenterMap[res.data[0].windpowerstationId] || null;
           if (this.ciLayer !== null) {
             this.ciLayer.clearLayers();
             this.ciLayer = L.canvasIconLayer({}).addTo(this.map);
@@ -126,7 +136,8 @@ export default {
             this.ciLayer = L.canvasIconLayer({}).addTo(this.map);
           }
 
-          let iconUrl = require(`@/assets/images/indexCom/fengji.png`);
+          // let iconUrl = require(`@/assets/images/indexCom/fengji-1.png`);
+          let iconUrl = require(`@/assets/images/indexCom/run_Icon.gif`);
 
           for (let i = 0; i < res.data.length; i++) {
             let item = res.data[i];
@@ -160,20 +171,20 @@ export default {
               Number(item.latitude),
               Number(item.longitude)
             );
-            let c = L.circleMarker(latlng, {
+            let c1 = L.circleMarker(latlng, {
               radius: 5,
               color: "transparent",
               labelStyle: {
                 text: item.aname,
-                scale: 1,
+                scale: 1.2,
                 rotation: 0,
                 offsetY: 35,
-                fillStyle: "#000",
+                fillStyle: "#fff",
                 zIndex: i,
               },
               data: item,
             }).addTo(this.map);
-            this.layers.push(c);
+            this.layers.push(c1);
 
             this.ciLayer.addLayer(marker);
             this.layers.push(marker);
@@ -187,7 +198,7 @@ export default {
           this.map.panTo([center.lat, center.lng], {
             animate: true,
           });
-          this.map.setView(this.layers[0].getLatLng(), 13);
+          this.map.setView(viewCenter || this.layers[0].getLatLng(), 13);
         }
       }
     },
@@ -214,6 +225,8 @@ export default {
       if (res.code === 200) {
         if (res.data && res.data.length) {
           this.layers = [];
+          const viewCenter =
+            this.viewCenterMap[res.data[0].windpowerstationId] || null;
           for (let i = 0; i < res.data.length; i++) {
             let item = res.data[i];
 
@@ -248,7 +261,6 @@ export default {
 
             let that = this;
             c.on("mouseover", function onmouseover(e) {
-              console.log("map", item);
               that.rightObj = item;
             });
           }
@@ -256,7 +268,7 @@ export default {
           this.map.panTo([center.lat, center.lng], {
             animate: true,
           });
-          this.map.setView(this.layers[0].getLatLng(), 13);
+          this.map.setView(viewCenter || this.layers[0].getLatLng(), 13);
         }
       }
     },

+ 2 - 1
src/views/generatingCapacity/dataAnalysis/posAnalysis/index.vue

@@ -415,7 +415,7 @@
               />
             </div>
           </el-tab-pane>
-          <el-tab-pane label="桨距角风速曲线" name="2">
+          <el-tab-pane label="桨距角风速曲线" name="2" v-if="false">
             <div style="height: 600px">
               <!-- <div id="speedLine" style="width:100%;height:100%"></div> -->
               <bar-chart-cop
@@ -1202,6 +1202,7 @@ const funCombineGet = async (obj) => {
           yAxisIndex: 1,
         },
       ];
+      combineDialog.value = true;
     });
   }
 };

+ 32 - 9
src/views/generatingCapacity/dataAnalysis/rateAnalysis/components/chart.vue

@@ -59,6 +59,12 @@ const props = defineProps({
     type: String,
     default: "",
   },
+  count: {
+    type: Array,
+    default: () => {
+      return [];
+    },
+  },
 });
 
 /**定义option */
@@ -101,15 +107,31 @@ const option = computed({
       radar: radar,
       tooltip: {
         formatter: (params) => {
-          return params.componentSubType === "radar"
-            ? `${params.marker}${params.seriesName}`
-            : props.subtext !== "风速风向玫瑰图"
-            ? `${params.marker}${params.seriesName}m<br/>${
-                params.value > 1 ? "频次:" + params.value : ""
-              }`
-            : `${params.marker}${params.seriesName}<br/>${
-                "最大风速:" + params.value
-              }m/s`;
+          let str = "";
+          if (params.componentSubType === "radar") {
+            str = `${params.marker}${params.seriesName}`;
+          } else if (props.subtext !== "风速风向玫瑰图") {
+            const seriesIndex = params.seriesIndex;
+            const dataIndex = params.dataIndex;
+            const pc = props.count?.[seriesIndex]?.[dataIndex];
+            str = `${params.marker}${params.seriesName}m<br/>${
+              pc > 1 ? "频次:" + pc : ""
+            }`;
+          } else {
+            str = `${params.marker}${params.seriesName}<br/>${
+              "最大风速:" + params.value
+            }m/s`;
+          }
+          return str;
+          // return params.componentSubType === "radar"
+          //   ? `${params.marker}${params.seriesName}`
+          //   : props.subtext !== "风速风向玫瑰图"
+          //   ? `${params.marker}${params.seriesName}m<br/>${
+          //       params.value > 1 ? "频次:" + params.value : ""
+          //     }`
+          //   : `${params.marker}${params.seriesName}<br/>${
+          //       "最大风速:" + params.value
+          //     }m/s`;
         },
         confine: true,
       },
@@ -189,6 +211,7 @@ const init = () => {
     : "";
   chartIns.value = echartIns;
   echartIns.setOption(option.value);
+
   window.addEventListener("resize", () => {
     echartIns.resize();
   });

+ 118 - 4
src/views/generatingCapacity/dataAnalysis/rateAnalysis/index.vue

@@ -67,6 +67,7 @@
                   :subtext="item.subtext"
                   :title="item.title"
                   :series="item.series"
+                  :count="item.count || []"
                 >
                 </chart-cop>
               </el-col>
@@ -293,7 +294,7 @@ const funExcelChange = async (obj) => {
   chartExcelList.value = excelList.value.map((o) => {
     return {
       ...o,
-      name: o.windturbine,
+      name: o.name.split("_")[0],
     };
   }); // 选中excel当前项时, excel列表赋值给dialog 下拉框
   queryForm.checkIds = excelList.value.map((o) => o.id);
@@ -1171,7 +1172,7 @@ const initPageData = () => {
     chartExcelList.value = excelList.value.map((o) => {
       return {
         ...o,
-        name: o.windturbine,
+        name: o.name.split("_")[0],
       };
     }); // 选中excel当前项时, excel列表赋值给dialog 下拉框
     queryForm.checkIds = excelList.value.map((o) => o.id);
@@ -1229,6 +1230,56 @@ const initPageData = () => {
               name: "方位风速",
             },
       });
+      false &&
+        console.log(1111111111, {
+          id: chartId,
+          title: "",
+          subtext: "风速风向玫瑰图",
+          xAxis: {
+            type: "category",
+            boundaryGap: false,
+            data: [
+              "北",
+              "",
+              "东北",
+              "",
+              "东",
+              "",
+              "东南",
+              "",
+              "南",
+              "",
+              "西南",
+              "",
+              "西",
+              "",
+              "西北",
+            ],
+            splitLine: {
+              show: true,
+            },
+          },
+          isRadar: false,
+          series: chart.roses.length
+            ? chart.roses.map((o, index) => {
+                return {
+                  type: "bar",
+                  data: o,
+                  coordinateSystem: "polar",
+                  name: funText(index),
+                  stack: "a",
+                  emphasis: {
+                    focus: "series",
+                  },
+                };
+              })
+            : {
+                type: "bar",
+                data: chart.roses,
+                coordinateSystem: "polar",
+                name: "方位风速",
+              },
+        });
       chartId++;
       chartData.value.push({
         id: chartId,
@@ -1260,9 +1311,9 @@ const initPageData = () => {
             show: true,
           },
         },
-        series: chart.count.length
+        series: chart.roses.length
           ? [
-              ...chart.count.map((o, index) => {
+              ...chart.roses.map((o, index) => {
                 return {
                   type: "bar",
                   data: o,
@@ -1272,6 +1323,7 @@ const initPageData = () => {
                   emphasis: {
                     focus: "series",
                   },
+                  coordinateSystem: "polar",
                 };
               }),
               {
@@ -1288,7 +1340,69 @@ const initPageData = () => {
               },
             ]
           : [],
+        count: chart.count || [],
       });
+      false &&
+        console.log(2222222222, {
+          id: chartId,
+          title: "",
+          subtext: "风速风向频次玫瑰图",
+          isRadar: true,
+          xAxis: {
+            type: "category",
+            boundaryGap: false,
+            data: [
+              "北",
+              "",
+              "东北",
+              "",
+              "东",
+              "",
+              "东南",
+              "",
+              "南",
+              "",
+              "西南",
+              "",
+              "西",
+              "",
+              "西北",
+              "",
+            ],
+            splitLine: {
+              show: true,
+            },
+          },
+          series: chart.count.length
+            ? [
+                ...chart.count.map((o, index) => {
+                  return {
+                    type: "bar",
+                    data: o,
+                    coordinateSystem: "polar",
+                    name: funText(index),
+                    stack: "a",
+                    emphasis: {
+                      focus: "series",
+                    },
+                    coordinateSystem: "polar",
+                  };
+                }),
+                {
+                  type: "radar",
+                  tooltip: {
+                    trigger: "item",
+                  },
+                  name: "对风",
+                  data: [
+                    {
+                      value: chart.radar,
+                    },
+                  ],
+                },
+              ]
+            : [],
+        });
       chartId++;
       scatterSeries.value[0].data = chart.frequency.data.length
         ? chart.frequency.data.map((item) => {

+ 2 - 2
src/views/generatingCapacity/dataAnalysis/spaceAnalysis/index.vue

@@ -189,7 +189,7 @@ const funExcelChange = async (obj) => {
   chartExcelList.value = excelList.value.map((o) => {
     return {
       ...o,
-      name: o.windturbine,
+      name: o.name.split("_")[0],
     };
   }); // 选中excel当前项时, excel列表赋值给dialog 下拉框
   queryForm.checkIds = excelList.value.map((o) => o.id);
@@ -776,7 +776,7 @@ const initPageData = () => {
     chartExcelList.value = excelList.value.map((o) => {
       return {
         ...o,
-        name: o.windturbine,
+        name: o.name.split("_")[0],
       };
     }); // 选中excel当前项时, excel列表赋值给dialog 下拉框
     queryForm.checkIds = excelList.value.map((o) => o.id);

Разлика између датотеке није приказан због своје велике величине
+ 2067 - 739
src/views/home/component/data.json


+ 187 - 165
src/views/home/index.vue

@@ -7,14 +7,16 @@
       <div class="leftMain">
         <div style="height: 15px"></div>
         <!-- 天气预测 -->
-        <div class="weather cur" @click="showWeaterDialog">
+        <div class="weather">
           <div class="comHeader">
             <div class="headerLeft">
               <span class="gray"></span>
               <span class="blue"></span>
             </div>
             <div class="headerRight">
-              <span class="headerName">天气预测</span>
+              <span class="headerName cur" @click="showWeaterDialog"
+                >天气预测</span
+              >
               <span class="headerZs">
                 <span class="headerZsN"></span>
               </span>
@@ -69,54 +71,81 @@
             />
           </div>
         </div>
-        <!-- 设备台数 -->
+        <!-- 实时状态 -->
+        <div class="comHeader" style="margin-top: 10px">
+          <div class="headerLeft">
+            <span class="gray"></span>
+            <span class="blue"></span>
+          </div>
+          <div class="headerRight">
+            <span class="headerName">实时状态</span>
+            <span class="headerZs">
+              <span class="headerZsN"></span>
+            </span>
+          </div>
+        </div>
         <div class="emInfoBox">
           <div class="item">
-            <div class="t">
-              <div class="l">
-                <div class="imgBox">
-                  <img src="./fc.png" alt="" />
-                </div>
-                <span class="sum">{{ ztmap.zts }}</span>
-                <span class="unit">台</span>
-              </div>
-              <div class="r">
-                <span class="unit">场站</span>
-                <span class="num">{{ ztmap.czsum }}</span>
-                <span class="unit">个</span>
-              </div>
-              <span class="headerZs">
-                <span class="headerZsN"></span>
-              </span>
-            </div>
             <div class="b">
               <div class="info">
-                <span class="genre">运行</span>
-                <span class="yx">{{ ztmap.yxsum }}</span>
+                <span class="zj">总计</span>
+                <span
+                  :style="`color: #${$store.state.theme ? '000' : 'fff'}`"
+                  >{{ ztmap.zts }}</span
+                >
+              </div>
+              <div class="info">
+                <span class="yx">运行</span>
+                <span
+                  :style="`color: #${$store.state.theme ? '000' : 'fff'}`"
+                  >{{ ztmap.yxsum }}</span
+                >
               </div>
               <div class="info">
-                <span class="genre">检修</span>
-                <span class="jx">{{ ztmap.jxsum }}</span>
+                <span class="dj">待机</span>
+                <span
+                  :style="`color: #${$store.state.theme ? '000' : 'fff'}`"
+                  >{{ ztmap.tjsum }}</span
+                >
               </div>
               <div class="info">
-                <span class="genre">维护</span>
-                <span class="gz">{{ ztmap.whsum }}</span>
+                <span class="gz">故障</span>
+                <span
+                  :style="`color: #${$store.state.theme ? '000' : 'fff'}`"
+                  >{{ ztmap.whsum }}</span
+                >
               </div>
+            </div>
+          </div>
+          <div class="item">
+            <div class="b">
               <div class="info">
-                <span class="genre">离线</span>
-                <span class="lx">{{ ztmap.lxsum }}</span>
+                <span class="jx">检修</span>
+                <span
+                  :style="`color: #${$store.state.theme ? '000' : 'fff'}`"
+                  >{{ ztmap.jxsum }}</span
+                >
               </div>
               <div class="info">
-                <span class="genre">停机</span>
-                <span class="tj">{{ ztmap.tjsum }}</span>
+                <span class="xd">限电</span>
+                <span
+                  :style="`color: #${$store.state.theme ? '000' : 'fff'}`"
+                  >{{ ztmap.xdsum }}</span
+                >
               </div>
               <div class="info">
-                <span class="genre">待机</span>
-                <span class="dj">{{ ztmap.djsum }}</span>
+                <span class="sl">受累</span>
+                <span
+                  :style="`color: #${$store.state.theme ? '000' : 'fff'}`"
+                  >{{ ztmap.djsum }}</span
+                >
               </div>
               <div class="info">
-                <span class="genre">限电</span>
-                <span class="xd">{{ ztmap.xdsum }}</span>
+                <span class="lx">离线</span>
+                <span
+                  :style="`color: #${$store.state.theme ? '000' : 'fff'}`"
+                  >{{ ztmap.lxsum }}</span
+                >
               </div>
             </div>
           </div>
@@ -125,7 +154,7 @@
       <div class="map">
         <div
           class="infoBox"
-          :class="mainData && mainData !== '全数据' ? 'show' : ''"
+          :class="mainData && mainData !== '全数据' ? 'show' : ''"
         >
           <el-button
             style="color: #1850b3"
@@ -135,11 +164,11 @@
             @click="
               switchMainData({
                 wpId: 'GJNY_SXGS_DBXNY_ZGS0',
-                name: '全数据',
+                name: '全数据',
               })
             "
           >
-            全数据
+            全数据
           </el-button>
           <template v-if="mainData === '获取中...'">
             <p>
@@ -164,7 +193,7 @@
             :content="`当前首页展示数据为 ${mainData} 数据`"
             placement="bottom"
             v-if="
-              mainData && mainData !== '全数据' && mainData !== '获取中...'
+              mainData && mainData !== '全数据' && mainData !== '获取中...'
             "
           >
             <p>
@@ -450,7 +479,7 @@
           </div>
         </div>
         <!-- 计划电量 -->
-        <div class="powerPlan cur" @click="showJhdlDialog">
+        <div class="powerPlan">
           <div class="comHeader">
             <div class="headerLeft">
               <span class="gray"></span>
@@ -458,7 +487,9 @@
             </div>
             <div class="headerRight">
               <div class="headerNaAll">
-                <span class="headerNa">计划电量完成情况</span>
+                <span class="headerNa cur" @click="showJhdlDialog"
+                  >计划电量完成情况</span
+                >
                 <span class="headerNa2">单位:万kWh</span>
               </div>
               <span class="headerZs">
@@ -549,19 +580,21 @@
       </div>
     </div>
     <div class="footer">
-      <div class="hover72Power" @click="showStHourDialog">
+      <div class="hover72Power">
         <div
           id="hover72Powers"
           class="cur"
           style="width: 100%; height: 100%"
         ></div>
+        <div class="hidBtn" @click="showStHourDialog"></div>
       </div>
-      <div class="monthPower" @click="showYfdlDialog">
+      <div class="monthPower">
         <div
           id="monthPowers"
           class="cur"
           style="width: 100%; height: 100%"
         ></div>
+        <div class="hidBtn" @click="showYfdlDialog"></div>
       </div>
     </div>
     <el-dialog
@@ -857,6 +890,12 @@ export default {
       stHourDialogShow: false,
       day14Data: [],
       ztmap: {},
+      selectWp: {},
+      timeInterval: null,
+      timeDealy: 3,
+      isFirstLoad: true,
+      chart72Options: null,
+      chartMonthOptions: null,
     };
   },
 
@@ -919,7 +958,16 @@ export default {
   mounted() {
     this.swichTheme = JSON.parse(window.sessionStorage.getItem("theme"));
     this.getPowerLine();
-    this.getHomeData();
+    this.getHomeData(this.selectWp);
+    this.timeInterval = setInterval(() => {
+      this.getPowerLine();
+      this.getHomeData(this.selectWp);
+    }, this.timeDealy * 1000);
+  },
+
+  unmounted() {
+    clearInterval(this.timeInterval);
+    this.timeInterval = null;
   },
 
   methods: {
@@ -1014,10 +1062,11 @@ export default {
           yAxis: [
             {
               type: "value",
-              splitNumber: 3.5,
               splitLine: {
                 lineStyle: {
-                  color: ["#393F4D"],
+                  color: ["#ccc"],
+                  type: "dashed", // 修改为虚线
+                  opacity: 0.2,
                 },
               },
               name: "单位:万KWh",
@@ -1133,10 +1182,11 @@ export default {
           yAxis: [
             {
               type: "value",
-              splitNumber: 3,
               splitLine: {
                 lineStyle: {
                   color: ["#ccc"],
+                  type: "dashed", // 修改为虚线
+                  opacity: 0.2,
                 },
               },
               name: "单位:MW",
@@ -1148,10 +1198,11 @@ export default {
             },
             {
               type: "value",
-              splitNumber: 3,
               splitLine: {
                 lineStyle: {
                   color: ["#ccc"],
+                  type: "dashed", // 修改为虚线
+                  opacity: 0.2,
                 },
               },
               name: "单位:m/s",
@@ -1280,6 +1331,8 @@ export default {
                 splitLine: {
                   lineStyle: {
                     color: ["#ccc"],
+                    type: "dashed", // 修改为虚线
+                    opacity: 0.2,
                   },
                 },
                 name: "单位:万KWh",
@@ -1318,7 +1371,8 @@ export default {
       let that = this;
 
       if (wp?.wpId && wp?.name) {
-        that.mainData = wp.name === "全场数据" ? wp.name : "获取中...";
+        this.selectWp = wp;
+        that.mainData = wp.name === "全省数据" ? wp.name : "获取中...";
         this.wpId = wp.wpId;
       }
       // that.BASE.showLoading();
@@ -1349,9 +1403,9 @@ export default {
 
       return [
         "合计",
-        `${ fdl.toFixed(2) } 万kWh`,
-        `${ jhdl.toFixed(2) } 万kWh`,
-        `${ ((fdl / jhdl) * 100).toFixed(2) } %`,
+        `${fdl.toFixed(2)} 万kWh`,
+        `${jhdl.toFixed(2)} 万kWh`,
+        `${((fdl / jhdl) * 100).toFixed(2)} %`,
       ];
     },
 
@@ -1753,6 +1807,7 @@ export default {
             series[1].data.push(ele.bzgl);
           });
           let option = {
+            animation: this.isFirstLoad,
             title: {
               text: "利用小时",
               left: "10px",
@@ -1852,14 +1907,21 @@ export default {
 
         this.ztmap = res.data.ztmap || {};
       }
+      this.isFirstLoad = false;
     },
     getPowerBar(xAxis, series) {
       const theme = sessionStorage.getItem("theme") === "true" ? true : false;
+      let myChart;
+      let legendState = {};
+      if (this.chartMonthOptions?.getOption) {
+        legendState = this.chartMonthOptions?.getOption().legend[0].selected;
+      }
       let option = {
+        animation: this.isFirstLoad,
         title: {
           text: "月发电量",
-          left: "10px",
-          top: "20px",
+          left: "5px",
+          top: "5px",
           textStyle: {
             fontSize: "16",
             fontWeight: 400,
@@ -1877,18 +1939,19 @@ export default {
           left: "2%",
           right: "2%",
           bottom: "5%",
-          height: "90px",
+          height: "110px",
           containLabel: true,
         },
         legend: {
-          right: "20",
-          top: "20",
+          right: "5",
+          top: "5",
           itemWidth: 5,
           itemHeight: 5,
           data: ["日发电量", "上网电量", "预测电量"],
           textStyle: {
             color: theme ? "#1850B3" : "#fff",
           },
+          selected: legendState,
         },
         xAxis: [
           {
@@ -1911,6 +1974,8 @@ export default {
             splitLine: {
               lineStyle: {
                 color: ["#ccc"],
+                type: "dashed", // 修改为虚线
+                opacity: 0.2,
               },
             },
             name: "单位:万KWh",
@@ -1929,8 +1994,11 @@ export default {
       // 基于准备好的dom,初始化echarts实例
       let dom = document.getElementById("monthPowers");
       dom && dom.removeAttribute("_echarts_instance_");
-      let myChart = this.$echarts.init(dom);
+      myChart = this.$echarts.init(dom);
+      this.chartMonthOptions = myChart;
+
       myChart.setOption(option);
+
       window.addEventListener("resize", () => {
         myChart.resize();
       });
@@ -2452,11 +2520,17 @@ export default {
 
     getPowerLine(xAxis, series) {
       const theme = sessionStorage.getItem("theme") === "true" ? true : false;
+      let myChart;
+      let legendState = {};
+      if (this.chart72Options?.getOption) {
+        legendState = this.chart72Options.getOption().legend[0].selected;
+      }
       let option = {
+        animation: this.isFirstLoad,
         title: {
           text: "72小时功率曲线",
-          left: "10px",
-          top: "20px",
+          left: "5px",
+          top: "5px",
           textStyle: {
             fontSize: "16",
             fontWeight: 400,
@@ -2468,20 +2542,21 @@ export default {
         },
         color: ["#7981AF", "#1C99FF", "#E57F25", "#f25656"],
         legend: {
-          right: "20",
-          top: "20",
+          right: "5",
+          top: "5",
           itemWidth: 5,
           itemHeight: 5,
           data: ["平均风速", "应发功率", "实际功率", "预测功率"],
           textStyle: {
             color: theme ? "#1850B3" : "#fff",
           },
+          selected: legendState,
         },
         grid: {
           left: "2%",
           right: "2%",
           bottom: "5%",
-          height: "90px",
+          height: "110px",
           containLabel: true,
         },
         xAxis: {
@@ -2497,10 +2572,11 @@ export default {
         yAxis: [
           {
             type: "value",
-            splitNumber: 3,
             splitLine: {
               lineStyle: {
                 color: ["#ccc"],
+                type: "dashed", // 修改为虚线
+                opacity: 0.2,
               },
             },
             name: "单位:MW",
@@ -2512,10 +2588,11 @@ export default {
           },
           {
             type: "value",
-            splitNumber: 3,
             splitLine: {
               lineStyle: {
                 color: ["#ccc"],
+                type: "dashed", // 修改为虚线
+                opacity: 0.2,
               },
             },
             name: "单位:m/s",
@@ -2534,8 +2611,12 @@ export default {
       // 基于准备好的dom,初始化echarts实例
       let dom = document.getElementById("hover72Powers");
       dom && dom.removeAttribute("_echarts_instance_");
-      let myChart = this.$echarts.init(dom);
+
+      myChart = this.$echarts.init(dom);
+      this.chart72Options = myChart;
+
       myChart.setOption(option);
+
       window.addEventListener("resize", () => {
         myChart.resize();
       });
@@ -3435,16 +3516,32 @@ export default {
     width: calc(100% - 72px);
     height: 19vh;
 
+    .hover72Power,
     .monthPower {
       width: calc(50% - 10px);
       background: rgba(41, 45, 53, 0.4);
       border-radius: 6px;
+      position: relative;
+      .hidBtn {
+        position: absolute;
+        left: 5px;
+        top: 5px;
+        width: 0;
+        height: 24px;
+        cursor: pointer;
+      }
     }
 
     .hover72Power {
-      width: calc(50% - 10px);
-      background: rgba(41, 45, 53, 0.4);
-      border-radius: 6px;
+      .hidBtn {
+        width: 125px;
+      }
+    }
+
+    .monthPower {
+      .hidBtn {
+        width: 75px;
+      }
     }
   }
 }
@@ -3885,10 +3982,7 @@ export default {
   }
 
   .footer {
-    .monthPower {
-      background: rgba(255, 255, 255, 0.8);
-    }
-
+    .monthPower,
     .hover72Power {
       background: rgba(255, 255, 255, 0.8);
     }
@@ -3897,128 +3991,62 @@ export default {
 </style>
 <style lang="less" scoped>
 .emInfoBox {
-  padding: 10px;
+  padding: 0 5px;
   width: calc(100% - 20px);
-  // background: rgba(#040b17, 0.2);
   border-radius: 4px;
 
   .item {
     display: flex;
-    justify-content: flex-start;
+    justify-content: space-between;
     align-items: center;
     flex-wrap: wrap;
     width: 100%;
 
-    .t {
-      display: flex;
-      justify-content: space-between;
-      align-items: center;
-      width: 100%;
-      background: rgb(24, 80, 179);
-      position: relative;
-
-      .imgBox {
-        // background: rgba(24, 80, 179, 0.5);
-        border-radius: 4px;
-        padding: 2px;
-
-        img {
-          width: 20px;
-          height: 20px;
-          background-size: 100% 100%;
-          background-repeat: no-repeat;
-        }
-      }
-
-      .l,
-      .r {
-        display: flex;
-        justify-content: flex-start;
-        align-items: center;
-      }
-
-      .l {
-        margin-left: 4px;
-        .sum {
-          font-size: 16px;
-          // color: #1986e0;
-          color: #fff;
-          margin: 0 5px;
-        }
-      }
-
-      .r {
-        margin-right: 4px;
-        font-size: 12px;
-        .num {
-          // color: #1986e0;
-          color: #fff;
-          margin: 0 5px;
-        }
-      }
-
-      .headerZs {
-        display: inline-block;
-        position: absolute;
-        right: 0;
-        top: 22px;
-        width: 32px;
-        height: 6px;
-        background: #fff;
-
-        .headerZsN {
-          position: relative;
-          top: -8px;
-          left: 2px;
-          display: inline-block;
-          width: 30px;
-          height: 4px;
-          background: #4f70ec;
-        }
-      }
-    }
-
     .b {
       display: flex;
       justify-content: space-between;
       align-items: center;
       margin-top: 10px;
-      padding: 10px;
-      width: calc(100% - 20px);
+      width: calc(100% - 30px);
+      padding: 0 15px;
 
       .info {
         display: flex;
         flex-direction: column;
         justify-content: flex-start;
         align-items: center;
+        font-size: 14px;
+
+        .zj {
+          color: rgb(119, 128, 171);
+        }
 
         .yx {
-          color: #1c99ff;
+          color: rgb(5, 187, 76);
         }
 
-        .jx {
-          color: #f7870e;
+        .dj {
+          color: rgb(29, 153, 255);
         }
 
         .gz {
-          color: #ff5378;
+          color: rgb(186, 50, 55);
         }
 
-        .lx {
-          color: #666;
+        .jx {
+          color: rgb(225, 126, 35);
         }
 
-        .tj {
-          color: #6160ea;
+        .xd {
+          color: rgb(197, 49, 199);
         }
 
-        .dj {
-          color: #05bb4c;
+        .sl {
+          color: rgb(255, 255, 255);
         }
 
-        .xd {
-          // color: #fff950;
-          color: rgb(133, 142, 167);
+        .lx {
+          color: rgb(96, 103, 105);
         }
 
         & span:first-child {
@@ -4038,12 +4066,6 @@ export default {
       color: #76819b;
       margin-bottom: 4px;
     }
-
-    margin-bottom: 30px;
-
-    &:last-child {
-      margin-bottom: 0;
-    }
   }
 }
 .cChartBox {