Browse Source

基于风机发电量全寿命周期管控的研究与应用项目中,功率预测系统根据UI调整(黑色版本与白色版本概要页面,全景功率页面,功率预测页面)

SunZehao 10 months ago
parent
commit
fe1caa0d8c
29 changed files with 4018 additions and 118 deletions
  1. 2 2
      .env.development
  2. 8 8
      .env.production
  3. 171 48
      src/App.vue
  4. 19 0
      src/assets/css/eleCss/el-input.less
  5. 48 0
      src/assets/css/eleCss/el-popperW.less
  6. 144 3
      src/assets/css/eleCss/el-treeB.less
  7. 152 0
      src/assets/css/eleCss/el-treeW.less
  8. BIN
      src/assets/images/headerCom/headerMenu.png
  9. 14 3
      src/components/commonHeaders.vue
  10. 4 1
      src/components/generatingCapacityComponent/table.vue
  11. 53 9
      src/components/generatingCapacityComponent/tree.vue
  12. 3159 0
      src/components/generatingCapacityComponent/treeJson.json
  13. 152 3
      src/components/generatingCapacityComponent/treeStyle.vue
  14. 10 0
      src/views/generatingCapacity/dataAnalysis/combine/index.vue
  15. 11 4
      src/views/generatingCapacity/dataAnalysis/hotAnalysis/components/current-scatter-chart.vue
  16. 4 2
      src/views/generatingCapacity/dataAnalysis/hotAnalysis/index.vue
  17. 10 0
      src/views/generatingCapacity/dataAnalysis/lineAnalysis/index.vue
  18. 1 0
      src/views/generatingCapacity/dataAnalysis/windAnalysis/index.vue
  19. 2 3
      src/views/generatingCapacity/dataFilter/process/index.vue
  20. 7 7
      src/views/powerPrediction/batteryDivinerPage.vue
  21. 11 3
      src/views/powerPrediction/homePageNoMap.vue
  22. 9 2
      src/views/powerPrediction/panoramicPower.vue
  23. 11 4
      src/views/powerPrediction/powerPredictionPage.vue
  24. 3 3
      src/views/powerPrediction/statisticalSummaryPage.vue
  25. 7 7
      src/views/powerPrediction/weatherPage.vue
  26. 2 2
      src/viewsCss/batteryDivinerPageLess.less
  27. 1 1
      src/viewsCss/panoramicPowerLess.less
  28. 1 1
      src/viewsCss/powerPredictionPageLess.less
  29. 2 2
      src/viewsCss/statisticalSummaryPageLess.less

+ 2 - 2
.env.development

@@ -12,10 +12,10 @@ VUE_APP_LOGIN_URL = 'http://192.168.2.231:48080'
 
 # 发电能力分析
 # VUE_APP_GENERAT_URL = 'http://123.60.219.66:9002'
-VUE_APP_GENERAT_URL = 'http://192.168.2.231:9002'
+VUE_APP_GENERAT_URL = 'http://192.168.2.231:8086'
 # 智能报表
 # VUE_APP_REPORT_URL = 'http://123.60.219.66:9001'
-VUE_APP_REPORT_URL = 'http://192.168.2.231:9001'
+VUE_APP_REPORT_URL = 'http://192.168.2.231:8086'
 # 功率预测
 # VUE_APP_BASE_URL = 'http://123.60.219.66:8086'
 VUE_APP_BASE_URL = 'http://192.168.2.126:8086'

+ 8 - 8
.env.production

@@ -14,28 +14,28 @@ VUE_APP_TITLE = '页面标题'
 # 登录
 # VUE_APP_LOGIN_URL = 'http://123.60.219.66:48080'
 # VUE_APP_LOGIN_URL = 'http://172.16.12.103:48080'
-VUE_APP_LOGIN_URL = 'http://192.168.2.231:48080'
-# VUE_APP_LOGIN_URL = 'http://localhost:48080'
+# VUE_APP_LOGIN_URL = 'http://192.168.2.231:48080'
+VUE_APP_LOGIN_URL = 'http://127.0.0.1:48080'
 
 # 生产环境/重写路径(公共路径)
 
 # 发电能力分析
 # VUE_APP_GENERAT_URL = 'http://123.60.219.66:9002'
 # VUE_APP_GENERAT_URL = 'http://172.16.12.103:9002'
-VUE_APP_GENERAT_URL = 'http://192.168.2.231:9002'
-# VUE_APP_GENERAT_URL = 'http://localhost:9002'
+# VUE_APP_GENERAT_URL = 'http://192.168.2.231:9002'
+VUE_APP_GENERAT_URL = 'http://127.0.0.1:9002'
 
 # 智能报表
 # VUE_APP_REPORT_URL = 'http://123.60.219.66:9001'
 # VUE_APP_REPORT_URL = 'http://172.16.12.103:9001'
-VUE_APP_REPORT_URL = 'http://192.168.2.231:9001'
-# VUE_APP_REPORT_URL = 'http://localhost:9001'
+# VUE_APP_REPORT_URL = 'http://192.168.2.231:9001'
+VUE_APP_REPORT_URL = 'http://127.0.0.1:9001'
 
 # 功率预测
 # VUE_APP_BASE_URL = 'http://123.60.219.66:8086'
 # VUE_APP_BASE_URL = 'http://172.16.12.103:8086'
-VUE_APP_BASE_URL = 'http://192.168.2.231:8086'
-# VUE_APP_BASE_URL = 'http://localhost:8086'
+# VUE_APP_BASE_URL = 'http://192.168.2.231:8086'
+VUE_APP_BASE_URL = 'http://127.0.0.1:8086'
 
 # 百度地图KEY
 VUE_APP_BAIDU_MAP_KEY = ''

+ 171 - 48
src/App.vue

@@ -8,44 +8,6 @@
 <template>
     <div class="windLife" :class="!swichTheme ? 'themeDark' : 'themeLight'">
         <common-header v-if="showHeader" @headerName="headerName" @swichFn="swichFn"></common-header>
-        <!-- :class="!fixed ? 'menuBs' : ''" v-if="isShowMenu" -->
-        <!-- <div class="menu-body" @mouseenter="showMenu" v-if="isShowMenu" @mouseleave="hideMenu"> -->
-        <!-- <ul class="menu-list">
-                <li class="menu-item" v-for="(menu, index) in showMenuData" :key="index"
-                    @click="handleNodeClick(menu.index)">
-                    <router-link :to="menu.index" v-if="menu.children">
-                        <el-popover placement="right-end" :width="200" trigger="hover" effect="dark">
-                            <template #reference>
-                                <img :src="menu.img" alt="">
-                            </template>
-                            <div class="menuChildren">
-                                <p style="color: #e3a043">{{menu.name}}:</p>
-                                <p style="color: #cacaca;cursor: pointer;line-height: 50px;"
-                                    v-for="(it, index) in menu.children" :key="index"
-                                    @click="openReportDetail(it.index, it.nameEn)">{{it.name}}</p>
-                            </div>
-                        </el-popover>
-                    </router-link>
-                    <router-link :to="menu.index" v-else>
-                        <el-tooltip class="item" effect="dark" :content="menu.name" placement="right"
-                            :enterable="false">
-                            <img :src="menu.img" alt="">
-                        </el-tooltip>
-                    </router-link>
-                </li>
-                <el-icon v-if="fixed" style="width:25px;height:25px">
-                        <Lock />
-                    </el-icon>
-                    <el-icon v-else style="width:25px;height:25px">
-                        <Unlock />
-                    </el-icon>
-                <li class="lockpage" @click="handleClickFixed">
-                    <img :src="proJie" v-if="fixed" alt="">
-                    <img :src="proSuo" v-else alt="">
-                </li>
-            </ul> -->
-
-        <!-- </div> -->
         <div class="mainSty">
             <div class="elmenuSty" :style="!swichTheme ? 'background: #000;' : 'background: #123081;'"
                 v-if="isShowMenu">
@@ -58,23 +20,38 @@
                         <el-sub-menu :key="menu.index" :index="menu.index" v-if="menu.children"
                             :disabled="menu.index === '' ? true : false">
                             <template #title>
-                                <template v-if="menu.svg">
+                                <!-- <template v-if="menu.svg">
                                     <div v-html="menu.svg" style="display:flex"></div>
                                 </template>
-                                <span style="margin-left: 10px" class="chSpna">{{menu.name}}</span>
+                                <span style="margin-left: 10px" class="chSpna">{{menu.name}}</span> -->
+                                <div class="elGrounpTitleAll" v-if="!isCollapse">
+                                    <div v-html="menu.svg" class="svgSty"></div>
+                                    <span style="margin-left: 10px" class="chSpna">{{menu.name}}</span>
+                                </div>
+                                <div class="elGrounpTitle" v-else>
+                                    <div v-html="menu.svg" class="svgSty"></div>
+                                </div>
                             </template>
-                            <el-menu-item-group v-for="(menuitem, index) in menu.children" :key="index">
-                                <el-menu-item :index="menuitem.index">{{menuitem.name}}</el-menu-item>
+                            <el-menu-item-group v-for="(menuitem, index) in menu.children" :key="index"
+                                class="elsubMenu">
+                                <el-menu-item :index="menuitem.index" class="grounpItem">
+                                    <span class="grounpItemSty"></span>
+                                    <span class="grounpItemSpan">{{menuitem.name}}</span>
+                                </el-menu-item>
                             </el-menu-item-group>
                         </el-sub-menu>
-                        <el-menu-item :key="menu.index" :index="menu.index" :route="menu.index" v-else>
-                            <template v-if="menu.svg">
+                        <el-menu-item :key="menu.index" :index="menu.index" :route="menu.index" v-else
+                            class="noGrounpItem" :style="noGrounpItemFn(menu.index)">
+                            <div class="elMenuTitle elMenuTitleAll" v-if="!isCollapse">
+                                <div v-html="menu.svg" class="svgSty"></div>
+                                <p style="margin-left: 10px">{{menu.name}}</p>
+                            </div>
+                            <div class="elMenuTitle" v-else>
                                 <div v-html="menu.svg" style="display:flex"></div>
-                            </template>
-                            <img :src="menu.img" alt="" v-else>
-                            <template #title>
+                            </div>
+                            <!-- <template #title>
                                 <span style="margin-left: 10px">{{menu.name}}</span>
-                            </template>
+                            </template> -->
                         </el-menu-item>
                     </template>
                 </el-menu>
@@ -593,6 +570,17 @@
             isCollapseFn() {
                 this.isCollapse = !this.isCollapse
             },
+            noGrounpItemFn(path) {
+                let str = '66px'
+                if (!this.isCollapse) {
+                    if (path.indexOf('generatingCap') > -1) {
+                        str = 'width: 200px'
+                    } else if (path.indexOf('powerPrediction') > -1) {
+                        str = 'width: 150px'
+                    }
+                }
+                return str
+            },
             pagestyFn() {
                 let str = ''
                 if (this.isCollapse) {
@@ -803,6 +791,140 @@
                 .el-menu {
                     min-width: 66px;
                     border-right: transparent;
+
+                    .el-sub-menu {
+                        margin: 0 5px;
+
+                        .el-sub-menu__title {
+                            background: none;
+
+                            .elGrounpTitleAll {
+                                display: flex;
+                                height: 45px;
+                                line-height: 45px;
+                                position: relative;
+                                left: -5px;
+
+                                .svgSty {
+                                    line-height: 45px;
+                                    position: relative;
+                                    top: -10px;
+                                }
+                            }
+
+                            .elGrounpTitle {
+                                .svgSty {
+                                    line-height: 45px;
+                                    position: relative;
+                                    top: -10px;
+                                    left: -5px;
+                                }
+                            }
+
+                        }
+                    }
+
+                    .is-opened {
+
+                        .el-sub-menu__title {
+                            border-radius: 8px 8px 0 0;
+                            background: #001D53;
+
+                            .elMenuTitleAll {
+                                display: flex;
+                                position: relative;
+                                left: -5px;
+
+                                .svgSty {
+                                    line-height: 45px;
+                                    position: relative;
+                                    top: -10px;
+                                }
+                            }
+                        }
+
+                        .el-menu {
+                            border-radius: 0 0 8px 8px;
+                            padding: 10px 0 10px 0;
+                            background: #001D53;
+
+                            .elsubMenu {
+                                width: 180px;
+                                height: 30px;
+                                margin: 10px 0;
+                                position: relative;
+                                left: 50px;
+
+                                .grounpItem {
+                                    height: 30px;
+                                    position: relative;
+                                    top: -13px;
+
+                                    .grounpItemSty {
+                                        width: 7px;
+                                        height: 7px;
+                                        background: #B1B8CB;
+                                        border-radius: 50%;
+                                        position: relative;
+                                        left: -60px;
+                                    }
+
+                                    .grounpItemSpan {
+                                        position: relative;
+                                        left: -30px;
+                                    }
+                                }
+
+                                .is-active {
+                                    background: rgba(0, 70, 199, 0.4);
+                                    border: 1px solid #115FC8;
+
+                                    .grounpItemSty {
+                                        background: #1C99FF;
+                                        position: relative;
+                                        left: -61px;
+                                    }
+                                }
+                            }
+                        }
+                    }
+
+                    .noGrounpItem {
+                        // padding: 0px 20px;
+                        background: none;
+                        position: relative;
+                        // left: 5px;
+
+                        .elMenuTitleAll {
+                            display: flex;
+                            height: 45px;
+                            line-height: 45px;
+
+                            .svgSty {
+                                line-height: 45px;
+                                position: relative;
+                                top: -10px;
+                            }
+                        }
+
+                    }
+
+                    .is-active {
+
+                        .elMenuTitle {
+                            background: #001D53;
+                            border-radius: 8px;
+                            padding: 5px;
+                            position: relative;
+                            left: -5px;
+                        }
+
+                        .elMenuTitleAll {
+                            display: flex;
+                            width: 100%;
+                        }
+                    }
+
                 }
             }
 
@@ -822,6 +944,7 @@
 
 
     @import "./assets/css/main.css";
+    @import "./assets/css/eleCss/el-popperW.less";
     @import "./assets/css/eleCss/index.less";
 
     .themeDark {

+ 19 - 0
src/assets/css/eleCss/el-input.less

@@ -103,5 +103,24 @@
                 top: -1px;
             }
         }
+
+        .el-input-number {
+
+            .el-input-number__decrease,
+            .el-input-number__increase {
+                line-height: 15px;
+                color: #fff;
+                background: #213c7f;
+
+            }
+
+            .el-input {
+                .el-input__wrapper {
+                    // background-color: #606266;
+                    background-color: transparent;
+                }
+
+            }
+        }
     }
 }

+ 48 - 0
src/assets/css/eleCss/el-popperW.less

@@ -0,0 +1,48 @@
+.el-popper {
+    .el-menu--vertical {
+        .el-menu {
+            border-radius: 0 0 8px 8px;
+            padding: 10px 0 10px 0;
+            background: #001D53;
+
+            .elsubMenu {
+                width: 136px;
+                height: 30px;
+                margin: 10px 0;
+                position: relative;
+                left: 45px;
+
+                .grounpItem {
+                    height: 30px;
+                    position: relative;
+                    top: -13px;
+
+                    .grounpItemSty {
+                        width: 7px;
+                        height: 7px;
+                        background: #B1B8CB;
+                        border-radius: 50%;
+                        position: relative;
+                        left: -40px;
+                    }
+
+                    .grounpItemSpan {
+                        position: relative;
+                        left: -15px;
+                    }
+                }
+
+                .is-active {
+                    background: rgba(0, 70, 199, 0.4);
+                    border: 1px solid #115FC8;
+
+                    .grounpItemSty {
+                        background: #1C99FF;
+                        position: relative;
+                        left: -41px;
+                    }
+                }
+            }
+        }
+    }
+}

+ 144 - 3
src/assets/css/eleCss/el-treeB.less

@@ -1,8 +1,14 @@
 .el-tree {
     .el-tree-node {
+        // height: 32px;
+        line-height: 30px;
         background-color: #13171e;
 
         .el-tree-node__content {
+            height: 32px;
+            line-height: 32px;
+
+            background: none !important;
 
             .el-dropdown:hover {
                 color: #fff;
@@ -11,7 +17,9 @@
 
     }
 
-
+    .el-tree-node>.el-tree-node__children {
+        overflow: visible;
+    }
 
     .is-current {}
 
@@ -25,6 +33,139 @@
 
 }
 
-.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
-    background: #0046C7 !important;
+
+.elTreeSty {
+    .el-tree-node {
+        .el-tree-node__content {
+            .el-checkbox {
+                left: 14px;
+                width: 13px;
+                height: 13px;
+                background: #CBCCD1;
+                border: 1px solid #7C808C;
+                border-radius: 3px;
+
+                .el-checkbox__input {
+                    .el-checkbox__inner {
+                        background-color: #CBCCD1;
+                        border: #CBCCD1;
+                    }
+                }
+
+            }
+
+            .is-checked {
+                width: 13px;
+                height: 13px;
+                background: #5473E8;
+                border: 1px solid #5473E8;
+                border-radius: 3px;
+
+                .el-checkbox__input {
+                    .el-checkbox__inner {
+                        background-color: #5473E8;
+                        border: #5473E8;
+                    }
+                }
+            }
+
+            .dashedSty {
+                left: -27px;
+            }
+
+            .changenodeLabel,
+            .nodeLabel {
+                left: -3px;
+            }
+
+        }
+    }
+}
+
+.dashedSty {
+    width: 20px;
+    height: 30px;
+    position: relative;
+
+    .hasMore_shu {
+        position: absolute;
+        top: 0;
+        left: 5px;
+        display: inline-block;
+        width: 1px;
+        height: 30px;
+        border-left: 1px dashed #565D70;
+    }
+
+    .hasMore_heng {
+        width: 10px;
+        height: 1px;
+        position: absolute;
+        top: 17px;
+        left: 7px;
+        border-top: 1px dashed #565D70;
+    }
+}
+
+.radio {
+    position: relative;
+    // top: 10px;
+    width: 14px;
+    height: 14px;
+    background: #555657;
+    border-radius: 3px;
+    border: 1px solid #555657;
+    margin-right: 10px;
+}
+
+.changeradio {
+    position: relative;
+    top: 10px;
+    width: 15px;
+    height: 15px;
+    background: #1C99FF;
+    border-radius: 3px;
+    margin-right: 10px;
+
+    .el-icon {
+        position: absolute;
+        top: 4px;
+        left: 2px;
+        color: #fff;
+        width: 10px;
+        height: 8px;
+    }
+}
+
+.nodeLabel {
+    position: relative;
+    top: 2px;
+    font-family: Microsoft YaHei;
+    font-weight: 400;
+    font-size: 14px;
+    color: #C3C3C4;
+    line-height: 30px;
+    width: 100%;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    overflow: hidden;
+}
+
+.changenodeLabel {
+    position: relative;
+    top: 2px;
+    font-family: Microsoft YaHei;
+    font-weight: 400;
+    font-size: 14px;
+    color: #fff;
+    line-height: 30px;
+    padding: 0 10px 0 2px;
+    background: #0046C7;
+    box-shadow: 0px 0px 3px 0px rgba(83, 86, 94, 0.23);
+    border-radius: 5px;
+    border: 1px solid #0046C7;
+    width: 100%;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    overflow: hidden;
 }

+ 152 - 0
src/assets/css/eleCss/el-treeW.less

@@ -1,9 +1,161 @@
 .el-tree {
     .el-tree-node {
+        // height: 32px;
+        line-height: 32px;
         background: #E6E8F2;
+
+        .el-tree-node__content {
+            height: 32px;
+            line-height: 32px;
+
+            background: none !important;
+        }
+
     }
 
+    .el-tree-node>.el-tree-node__children {
+        overflow: visible;
+    }
+
+
+
     .el-tree__empty-block {
         background: #E6E8F2;
     }
+}
+
+.elTreeSty {
+    .el-tree-node {
+        .el-tree-node__content {
+            .el-checkbox {
+                left: 14px;
+                width: 13px;
+                height: 13px;
+                background: #CBCCD1;
+                border: 1px solid #7C808C;
+                border-radius: 3px;
+
+                .el-checkbox__input {
+                    .el-checkbox__inner {
+                        background-color: #CBCCD1;
+                        border: #CBCCD1;
+                    }
+                }
+
+            }
+
+            .is-checked {
+                width: 13px;
+                height: 13px;
+                background: #5473E8;
+                border: 1px solid #5473E8;
+                border-radius: 3px;
+
+                .el-checkbox__input {
+                    .el-checkbox__inner {
+                        background-color: #5473E8;
+                        border: #5473E8;
+                    }
+                }
+            }
+
+            .dashedSty {
+                left: -27px;
+            }
+
+            .changenodeLabel,
+            .nodeLabel {
+                left: -3px;
+            }
+
+        }
+    }
+}
+
+.dashedSty {
+    width: 20px;
+    height: 30px;
+    position: relative;
+
+    .hasMore_shu {
+        position: absolute;
+        top: 0;
+        left: 5px;
+        display: inline-block;
+        width: 1px;
+        height: 30px;
+        border-left: 1px dashed #565D70;
+    }
+
+    .hasMore_heng {
+        width: 10px;
+        height: 1px;
+        position: absolute;
+        top: 17px;
+        left: 7px;
+        border-top: 1px dashed #565D70;
+    }
+}
+
+.radio {
+    position: relative;
+    // top: 10px;
+    width: 14px;
+    height: 14px;
+    background: #CBCCD1;
+    border-radius: 3px;
+    border: 1px solid #7C808C;
+    margin-right: 10px;
+}
+
+.changeradio {
+    position: relative;
+    top: 10px;
+    width: 15px;
+    height: 15px;
+    background: #5473E8;
+    border-radius: 3px;
+    margin-right: 10px;
+
+    .el-icon {
+        position: absolute;
+        top: 4px;
+        left: 2px;
+        color: #fff;
+        width: 10px;
+        height: 8px;
+    }
+}
+
+.nodeLabel {
+    position: relative;
+    top: 2px;
+    font-family: Microsoft YaHei;
+    font-weight: 400;
+    font-size: 14px;
+    color: #121212;
+    line-height: 30px;
+    width: 100%;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    overflow: hidden;
+}
+
+.changenodeLabel {
+    position: relative;
+    top: 2px;
+    font-family: Microsoft YaHei;
+    font-weight: 400;
+    font-size: 14px;
+    color: #5473E8;
+    line-height: 30px;
+    padding: 0 10px 0 2px;
+    background: #FFFFFF;
+    box-shadow: 0px 0px 3px 0px rgba(83, 86, 94, 0.23);
+    border-radius: 5px;
+    border: 1px solid rgba(84, 115, 232, 0.3);
+    width: 100%;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    overflow: hidden;
 }

BIN
src/assets/images/headerCom/headerMenu.png


+ 14 - 3
src/components/commonHeaders.vue

@@ -8,7 +8,10 @@
                 <div class="proMenu">
                     <div class="proButton">
                         <div class="buttonItem" v-for="(item,index) in menuData" :key="index"
-                            :class="getColor(item.showBac)" @click="changeRoute(item)">{{item.name}}</div>
+                            :class="getColor(item.showBac)" @click="changeRoute(item)">
+                            <img :src="headerMenuImg" alt="" v-if="item.showBac">
+                            <span>{{item.name}}</span>
+                        </div>
                     </div>
                     <div class="proSet">
                         <div class="settingStop">
@@ -30,9 +33,9 @@
                                     <img :src="header_wendang" class="Settingitem downItem">
                                 </a>
                             </el-tooltip>
-                            <el-tooltip class="box-item" effect="light" content="系统设置">
+                            <!-- <el-tooltip class="box-item" effect="light" content="系统设置">
                                 <img :src="header_shezhi" class="Settingitem">
-                            </el-tooltip>
+                            </el-tooltip> -->
                             <el-tooltip class="box-item" effect="light" content="退出">
                                 <img :src="header_dianyuan" class="Settingitem rightIm" @click="backLogin">
                             </el-tooltip>
@@ -54,6 +57,7 @@
     import moon_B from '@/assets/images/headerCom/moon_B.png'
     import sun_B from '@/assets/images/headerCom/sun_B.png'
     import moon_W from '@/assets/images/headerCom/moon_W.png'
+    import headerMenuImg from '@/assets/images/headerCom/headerMenu.png'
     import {
         Sunny,
         Moon
@@ -74,6 +78,7 @@
                 sun_B: sun_B,
                 moon_B: moon_B,
                 moon_W: moon_W,
+                headerMenuImg: headerMenuImg,
                 header_wendang: header_wendang,
                 header_shezhi: header_shezhi,
                 header_dianyuan: header_dianyuan,
@@ -333,6 +338,12 @@
                         line-height: 52px;
                         font-size: 14px;
                         text-align: center;
+                        position: relative;
+
+                        img {
+                            position: absolute;
+                            left: 0;
+                        }
                     }
                 }
 

+ 4 - 1
src/components/generatingCapacityComponent/table.vue

@@ -89,7 +89,10 @@
             display: flex;
 
             p {
-                width: 15%;
+                width: 20%;
+                text-overflow: ellipsis;
+                white-space: nowrap;
+                overflow: hidden;
                 font-size: 16px;
                 font-weight: bold;
                 margin: 10px;

+ 53 - 9
src/components/generatingCapacityComponent/tree.vue

@@ -12,19 +12,29 @@
             </div>
             <!-- <div v-for="node in data" :key="node.id" class="treeMainMsg">
                 <span>{{node.label}}</span>
-                <tree-node :node="node.children" :data="data" :show-checkbox="showCheckbox">
+                <tree-node :node="node.children" :data="data" :show-checkbox="showCheckbox"
+                    :dropdownMenu="dropdownMenu">
                 </tree-node>
             </div> -->
-            <el-tree :data="data" :props="defaultProps" default-expand-all highlight-current
+            <el-tree :data="data" :props="defaultProps" default-expand-all highlight-current icon="none"
                 :filter-node-method="filterNode" ref="tree" @node-click="funCurrentChange" :show-checkbox="showCheckbox"
-                @check="funCheckChange" node-key="id" :expand-on-click-node="false" :current-node-key="''">
+                @check="funCheckChange" node-key="id" :expand-on-click-node="false" :current-node-key="''"
+                :class="showCheckbox?'elTreeSty':''">
                 <template #default="{ node, data }">
+                    <div class="dashedSty">
+                        <span class="hasMore_shu"
+                            :style="node.id !== node.parent.childNodes[node.parent.childNodes.length-1].id ? 'height: 30px' : 'height: 18px'"
+                            :styel="shuFn(node, data)"></span>
+                        <span class="hasMore_heng"></span>
+                    </div>
+
                     <el-dropdown ref="dropdown1" size="small" trigger="contextmenu" @command="funCommand"
-                        style="margin-right: 30px"
                         :class="!node.expanded || (node.isLeaf && !node.isCurrent) ? '' : 'eldropdownCla'">
-                        <span class="el-dropdown-link">
+
+                        <span class="el-dropdown-link" :class="node.isCurrent ? 'changenodeLabel' : 'nodeLabel'">
                             {{ node.label }}
                         </span>
+                        <span>{{ node.label }}</span>
                         <template #dropdown>
                             <el-dropdown-menu>
                                 <el-dropdown-item class="text-[#409EFF]" v-if="dropdownMenu.includes('save')"
@@ -54,6 +64,7 @@
     import tree_shuaxing from '@/assets/menuImg/tree_shuaxing.png'
     import nodata from '@/assets/images/noData.png'
     import TreeNode from './treeStyle.vue'
+    import treeJson from './treeJson.json'
     import {
         Search
     } from '@element-plus/icons-vue'
@@ -106,6 +117,8 @@
         },
         data() {
             return {
+                // treeJson: treeJson,
+                treeJsonArr: [],
                 filterText: '',
                 Search: Search,
                 nodata: nodata,
@@ -121,7 +134,31 @@
                 this.$refs.tree.filter(val);
             }
         },
+        mounted() {
+            // this.treeJsonFn()
+        },
         methods: {
+            treeJsonFn() {
+                this.treeJsonArr = this.funRepeatMap(this.treeJson.data)
+            },
+            funRepeatMap(arr, type = 'prepare') {
+                return arr.map(o => {
+                    if (o.children) {
+                        const findIndex = o.children.findIndex(p => !!p.type)
+                        if (findIndex !== -1) {
+                            o.childs = o.children
+                            o.children = []
+                        }
+                    }
+                    return {
+                        ...o,
+                        children: o.children ? this.funRepeatMap(o.children, type) : []
+                    }
+                })
+            },
+            shuFn(node, data) {
+                // debugger
+            },
             filterNode(value, data) {
                 if (!value) return true;
                 return data.label.indexOf(value) !== -1;
@@ -273,7 +310,7 @@
         },
     }
 </script>
-<style lang="less" scoped>
+<style lang="less">
     .treeData {
         overflow-y: auto;
 
@@ -304,6 +341,7 @@
         }
 
         .treeMain {
+
             .treeMainTit {
                 width: calc(100% - 10px);
                 height: 22px;
@@ -323,16 +361,20 @@
                 }
             }
 
+
+
             .el-tree {
-                background: #161f1e;
+                background: transparent;
                 color: #fff;
+                height: 100%;
 
                 .is-current {
                     width: 100%;
-                    height: 20px;
-                    background: #fff !important;
+                    background: none !important;
                 }
 
+
+
                 .el-tree__empty-block {
                     img {
                         margin-top: 20px;
@@ -346,6 +388,8 @@
                 }
 
             }
+
+
         }
 
     }

File diff suppressed because it is too large
+ 3159 - 0
src/components/generatingCapacityComponent/treeJson.json


+ 152 - 3
src/components/generatingCapacityComponent/treeStyle.vue

@@ -13,8 +13,26 @@
                         </div>
                         <div class="radio" v-else @click.stop="funCheckChange(child, node)"></div>
                     </div>
-                    <span :class="child.showSpan ? 'changenodeLabel' : 'nodeLabel'"
-                        @click.stop="funCurrentChange(child, node)">{{child.label}}</span>
+                    <!-- <span :class="child.showSpan ? 'changenodeLabel' : 'nodeLabel'"
+                        @click.stop="funCurrentChange(child, node)">{{child.label}}</span> -->
+                    <el-dropdown ref="dropdown1" size="small" trigger="contextmenu" @command="funCommand"
+                        style="margin-right: 30px"
+                        :class="!node.expanded || (node.isLeaf && !node.isCurrent) ? '' : 'eldropdownCla'">
+                        <span :class="child.showSpan ? 'changenodeLabel' : 'nodeLabel'"
+                            @click.stop="funCurrentChange(child, node)">{{child.label}}</span>
+                        <template #dropdown>
+                            <el-dropdown-menu>
+                                <el-dropdown-item class="text-[#409EFF]" v-if="dropdownMenu.includes('save')"
+                                    :command="{ type: 'save', child, node }">保存</el-dropdown-item>
+                                <el-dropdown-item class="text-[#409EFF]"
+                                    v-if="child.childs && child.childs.length && dropdownMenu.includes('export')"
+                                    :command="{ type: 'export', child, node }">导出
+                                </el-dropdown-item>
+                                <el-dropdown-item class="text-[#F56C6C]" v-if="dropdownMenu.includes('delete')"
+                                    :command="{ type: 'delete', child, node }">删除</el-dropdown-item>
+                            </el-dropdown-menu>
+                        </template>
+                    </el-dropdown>
                 </div>
             </div>
             <tree-node :node="child.children" :data="node" v-if="child.children.length>0" :show-checkbox="showCheckbox">
@@ -46,6 +64,14 @@
                     return false;
                 },
             },
+            dropdownMenu: {
+                type: Array,
+                default: () => {
+                    return ['export',
+                        'delete',
+                    ];
+                },
+            },
         },
         data() {
             return {};
@@ -102,7 +128,122 @@
                     })
                 }
                 this.$parent.funCheckChange(current, current)
-            }
+            },
+            async funCommand({
+                type,
+                data,
+                node
+            }) {
+                switch (type) {
+                    case 'save':
+                        /**该保存功能目前暂用于风电场, combine页 */
+                        if (this.type !== 'wind') {
+                            return false
+                        }
+                        ElMessageBox.confirm("确认保存当前节点的拟合功率?", "保存", {
+                            confirmButtonText: "确认",
+                            cancelButtonText: "取消",
+                            type: "warning",
+                        }).then(async () => {
+                            let saveArr = [];
+                            const repeatArr = (arr, saveArr) => {
+                                for (const unit of arr) {
+                                    if (unit.childs.length) {
+                                        saveArr.push(...unit.childs.map((o) => o.id));
+                                    } else if (unit.children.length) {
+                                        repeatArr(unit.children, saveArr);
+                                    }
+                                }
+                            };
+                            if (data.childs.length) {
+                                saveArr = data.childs.map((o) => o.id);
+                            } else if (data.children.length) {
+                                repeatArr(data.children, saveArr);
+                            }
+                            let res = {
+                                code: 500
+                            }
+                            res = await httpRequest.get("/power/fitting/curve/save", {
+                                params: {
+                                    ids: saveArr.join(",")
+                                },
+                            }); //删除当前节点
+
+                            if (res.code === 200) {
+                                ElMessage.success(res.msg);
+                            }
+                        });
+                        break;
+                    case "export":
+                        ElMessageBox.confirm("确认导出当前节点的所有数据?", "导出", {
+                            confirmButtonText: "确认",
+                            cancelButtonText: "取消",
+                            type: "warning",
+                        }).then(() => {
+                            debugger
+
+                            const a = document.createElement("a");
+                            let childs = []
+                            childs = this.type === 'wind' ? data.childs.map((o) => o.id) : data.childs.map(
+                                (o) => o.path)
+                            const url = this.type === 'wind' ? '/data/option/download?ids=' :
+                                '/export/files?filename='
+                            a.href =
+                                // config.baseURL + url + childs.join(",");
+                                process.env.VUE_APP_GENERAT_URL + url + childs.join(",");
+                            a.download = "";
+                            a.target = '_blank'
+                            a.click();
+                        });
+                        break;
+                    case "delete":
+                        ElMessageBox.confirm("确认删除当前节点的所有数据?", "删除", {
+                            confirmButtonText: "确认",
+                            cancelButtonText: "取消",
+                            type: "warning",
+                        }).then(async () => {
+                            let deleteArr = [];
+                            const repeatArr = (arr, deleteArr) => {
+                                for (const unit of arr) {
+                                    if (unit.childs.length) {
+                                        deleteArr.push(...unit.childs.map((o) => this.type ===
+                                            'wind' ? o.id : o.path));
+                                    } else if (unit.children.length) {
+                                        repeatArr(unit.children, deleteArr);
+                                    }
+                                }
+                            };
+                            if (data.childs.length) {
+                                deleteArr = data.childs.map((o) => this.type === 'wind' ? o.id : o
+                                    .path);
+                            } else if (data.children.length) {
+                                repeatArr(data.children, deleteArr);
+                            }
+                            let res = {
+                                code: 500
+                            }
+                            if (this.type === 'wind') {
+                                res = await httpRequest.get("/data/option/delete", {
+                                    params: {
+                                        ids: deleteArr.join(",")
+                                    },
+                                }); //删除当前节点
+                            } else {
+                                res = await httpRequest.delete("/delete/files", {
+                                    data: {
+                                        filename: deleteArr.join(",")
+                                    },
+                                }); //删除当前节点
+                            }
+                            if (res.code === 200) {
+                                ElMessage.success(res.msg);
+                                this.$emit("refresh");
+                            }
+                        });
+
+                        break;
+                }
+            },
         }
     };
 </script>
@@ -148,6 +289,10 @@
             font-size: 14px;
             color: #121212;
             line-height: 30px;
+            width: 100%;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            overflow: hidden;
         }
 
         .changenodeLabel {
@@ -163,6 +308,10 @@
             box-shadow: 0px 0px 3px 0px rgba(83, 86, 94, 0.23);
             border-radius: 5px;
             border: 1px solid rgba(84, 115, 232, 0.3);
+            width: 100%;
+            text-overflow: ellipsis;
+            white-space: nowrap;
+            overflow: hidden;
         }
 
         img {

+ 10 - 0
src/views/generatingCapacity/dataAnalysis/combine/index.vue

@@ -362,6 +362,16 @@
                 }
             })
         }
+        // if (checkedNodes) {
+        //     let checkArr = [checkedNodes]
+        //     checkArr.forEach(it => {
+        //         if (it.childs && it.childs.length) {
+        //             it.childs.forEach(iv => {
+        //                 checkIds.push(iv.id)
+        //             })
+        //         }
+        //     })
+        // }
         excelCheckIds.value = checkIds
     }
 

+ 11 - 4
src/views/generatingCapacity/dataAnalysis/hotAnalysis/components/current-scatter-chart.vue

@@ -51,6 +51,12 @@
                     return [];
                 },
             },
+            maxMinData: {
+                type: Array,
+                default: () => {
+                    return [];
+                },
+            },
             // 是否显示图表图例
             showLegend: {
                 type: Boolean,
@@ -230,16 +236,17 @@
                     },
                     visualMap: [{
                         type: 'continuous',
-                        min: -40,
-                        max: 50,
+                        min: that.maxMinData[1],
+                        max: that.maxMinData[0],
                         dimension: 2,
                         orient: 'vertical',
                         right: 4,
                         top: 50,
                         itemHeight: 600,
-                        text: ['50', '-40'],
+                        // text: ['50', '-40'],
+                        text: [that.maxMinData[0], that.maxMinData[1]],
                         calculable: false,
-                        range: [-40, 50],
+                        range: [that.maxMinData[1], that.maxMinData[0]],
                         inRange: {
                             color: ['#000', 'rgb(75,11,106)', 'rgb(133,33,106)', 'rgb(176,49,92)',
                                 'rgb(210,70,69)', 'rgb(235,100,42)', 'rgb(247,126,21)',

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

@@ -52,8 +52,8 @@
                                         :chartTitle="avgObj.title+ '&nbsp;&nbsp;' +'平均Cp值:'+avgObj.cpavg+'; 静风频率:'+avgObj.frequency+'%; 曲线偏差率:'+avgObj.pcratio+'%'"
                                         :xAxisData="xAxisData" :yAxisData="{ splitLine: { show: false } }"
                                         :seriesData="seriesData" :showLegend="true" :brushSelected="false"
-                                        :theme="theme" :echartsTheme="echartsTheme" :dataSet="dataSet"
-                                        @getSelected="funhotChartSelect" />
+                                        :maxMinData="maxMinData" :theme="theme" :echartsTheme="echartsTheme"
+                                        :dataSet="dataSet" @getSelected="funhotChartSelect" />
                                 </div>
                             </el-tabs>
                         </div>
@@ -189,6 +189,7 @@
 
         if (chartResponse && chartResponse.code === 200) {
             chartRes = chartResponse.data
+            maxMinData.value = [chartRes.maxhjwd, chartRes.minhjwd]
             markDot.pcl5 = chartRes.obj.pc5ratio
             markDot.pcl10 = chartRes.obj.pc10ratio
             markDot.pcl12 = chartRes.obj.pc12ratio
@@ -555,6 +556,7 @@
     const xAxisData = ref([])
     const chartRef = ref() //chart 的ref
     const seriesData = ref([])
+    const maxMinData = ref([])
     const isChartArea = ref(false) // 用来控制图表是否区域划分
     const dataSet = ref('')
     const funhotChartSelect = async (batch) => {

+ 10 - 0
src/views/generatingCapacity/dataAnalysis/lineAnalysis/index.vue

@@ -204,6 +204,16 @@
                 }
             }
         }
+        // if (checkedNodes) {
+        //     let checkArr = [checkedNodes]
+        //     checkArr.forEach(it => {
+        //         if (it.childs && it.childs.length) {
+        //             it.childs.forEach(iv => {
+        //                 checkIds.push(iv.id)
+        //             })
+        //         }
+        //     })
+        // }
         excelCheckIds.value = checkIds
         funSubmit()
     }

+ 1 - 0
src/views/generatingCapacity/dataAnalysis/windAnalysis/index.vue

@@ -314,6 +314,7 @@
         const checkIds = []
         if (checkedNodes.checkedNodes.length) {
             let checkArr = checkedNodes.checkedNodes
+            debugger
             checkArr.forEach(it => {
                 if (it.childs && it.childs.length) {
                     it.childs.forEach(iv => {

+ 2 - 3
src/views/generatingCapacity/dataFilter/process/index.vue

@@ -156,10 +156,9 @@
             current,
             currentNode: ''
         })
-        debugger
         const checkIds = []
-        if (checkedNodes.length) {
-            let checkArr = checkedNodes
+        if (checkedNodes.checkedNodes.length) {
+            let checkArr = checkedNodes.checkedNodes
             checkArr.forEach(it => {
                 if (it.childs && it.childs.length) {
                     it.childs.forEach(iv => {

+ 7 - 7
src/views/powerPrediction/batteryDivinerPage.vue

@@ -227,33 +227,33 @@
         computed: {
             pageHeight() {
                 return {
-                    'height': document.documentElement.clientHeight - 140 + 'px'
+                    'height': document.documentElement.clientHeight - 110 + 'px'
                 }
             },
             chartStyle() {
-                let height = (document.documentElement.clientHeight - 150) / 3 + 'px'
+                let height = (document.documentElement.clientHeight - 120) / 3 + 'px'
                 return {
                     'width': '100%',
                     'height': height
                 }
             },
             chartStyle2() {
-                let heighttop = (document.documentElement.clientHeight - 150) / 3
-                let height = (document.documentElement.clientHeight - 180 - heighttop) + 'px'
+                let heighttop = (document.documentElement.clientHeight - 120) / 3
+                let height = (document.documentElement.clientHeight - 150 - heighttop) + 'px'
                 return {
                     'width': '100%',
                     'height': height
                 }
             },
             chartStyle3() {
-                let height = (document.documentElement.clientHeight - 240) / 3 + 'px'
+                let height = (document.documentElement.clientHeight - 210) / 3 + 'px'
                 return {
                     'width': '100%',
                     'height': height
                 }
             },
             chartStyle4() {
-                let height = (document.documentElement.clientHeight - 180) / 3 + 'px'
+                let height = (document.documentElement.clientHeight - 150) / 3 + 'px'
                 return {
                     'width': '100%',
                     'height': height
@@ -703,7 +703,7 @@
     .themeLight {
         .batterDiviner_wind {
             .windStstus {
-                background: linear-gradient(0deg, transparent, #373590);
+                // background: linear-gradient(0deg, transparent, #373590);
             }
         }
 

+ 11 - 3
src/views/powerPrediction/homePageNoMap.vue

@@ -34,8 +34,8 @@
                     </div>
                     <div class="styleData">
                         <span :class="windShow ? 'changeStyle' : 'defaultSty'" @click="getWindorSunDate('风速')">风速</span>
-                        <span :class="sunShow ? 'changeStyle' : 'defaultSty'"
-                            @click="getWindorSunDate('辐照度')">辐照度</span>
+                        <!-- <span :class="sunShow ? 'changeStyle' : 'defaultSty'"
+                            @click="getWindorSunDate('辐照度')">辐照度</span> -->
                     </div>
                     <div id="lineChart1" :style="lineChartStyle"></div>
                 </div>
@@ -179,6 +179,7 @@
             return {
                 statusTimer: '',
                 statusData: [],
+                statusDataW: [],
                 planFiveMin: '',
                 currentTime: '',
                 warningData: [],
@@ -795,6 +796,13 @@
                                     }
                                 }
                             })
+                            that.statusDataW.forEach(item => {
+                                for (let it in datas.data) {
+                                    if (item.nameEn === it) {
+                                        item.number = datas.data[it]
+                                    }
+                                }
+                            })
                             that.allStatus = datas.data
                         }
                     }
@@ -1342,7 +1350,7 @@
                     //     }
                     // },
                     legend: {
-                        right: '20',
+                        right: name !== 'lineChart1' ? '20' : '20%',
                         data: legend,
                         // show: name === 'lineChart' ? false : true
                         show: false

+ 9 - 2
src/views/powerPrediction/panoramicPower.vue

@@ -315,13 +315,13 @@
             pageHeight() {
                 return {
                     // 'width': '100%',
-                    'height': document.documentElement.clientHeight - 140 + 'px'
+                    'height': document.documentElement.clientHeight - 110 + 'px'
                 }
             },
             lineChartStyle() {
                 let heightChart = ''
                 // let pageHeight = document.documentElement.clientHeight-120-(Math.ceil(this.chartsData.length/3)*40)
-                let pageHeight = document.documentElement.clientHeight - 115 - (Math.ceil(this.chartsData.length / 3) *
+                let pageHeight = document.documentElement.clientHeight - 100 - (Math.ceil(this.chartsData.length / 3) *
                     40)
                 if (this.chartsData.length <= 3) {
                     heightChart = '350px'
@@ -374,6 +374,13 @@
                                     }
                                 }
                             })
+                            that.statusDataW.forEach(item => {
+                                for (let it in datas.data) {
+                                    if (item.nameEn === it) {
+                                        item.number = datas.data[it]
+                                    }
+                                }
+                            })
                             that.allStatus = datas.data
                         }
                     }

+ 11 - 4
src/views/powerPrediction/powerPredictionPage.vue

@@ -392,25 +392,25 @@
         computed: {
             pageHeight() {
                 return {
-                    'height': document.documentElement.clientHeight - 140 + 'px'
+                    'height': document.documentElement.clientHeight - 110 + 'px'
                 }
             },
             chartStyle() {
-                let height = (document.documentElement.clientHeight - 120 - 100) / 3 + 'px'
+                let height = (document.documentElement.clientHeight - 100 - 100) / 3 + 'px'
                 return {
                     'width': '100%',
                     'height': height
                 }
             },
             messageStyle() {
-                let height = (document.documentElement.clientHeight - 120 - 100) / 3 + 'px'
+                let height = (document.documentElement.clientHeight - 100 - 100) / 3 + 'px'
                 return {
                     'width': '96%',
                     'height': height
                 }
             },
             messageStylexc() {
-                let height = (document.documentElement.clientHeight - 120 - 60) / 3 * 2 + 'px'
+                let height = (document.documentElement.clientHeight - 100 - 60) / 3 * 2 + 'px'
                 return {
                     'width': '96%',
                     'height': height
@@ -505,6 +505,13 @@
                                     }
                                 }
                             })
+                            that.statusDataW.forEach(item => {
+                                for (let it in datas.data) {
+                                    if (item.nameEn === it) {
+                                        item.number = datas.data[it]
+                                    }
+                                }
+                            })
                         }
                         console.log(datas)
                     }

+ 3 - 3
src/views/powerPrediction/statisticalSummaryPage.vue

@@ -204,7 +204,7 @@
         computed: {
             pageHeight() {
                 return {
-                    'height': document.documentElement.clientHeight - 130 + 'px'
+                    'height': document.documentElement.clientHeight - 100 + 'px'
                 }
             },
             chartsHeight() {
@@ -215,7 +215,7 @@
                 }
             },
             pieHeight() {
-                let height = (document.documentElement.clientHeight - 310) / 2 + 'px'
+                let height = (document.documentElement.clientHeight - 270) / 2 + 'px'
                 return {
                     'width': '100%',
                     'height': height
@@ -706,7 +706,7 @@
     .themeLight {
         .statistical_wind {
             .windStstus {
-                background: linear-gradient(0deg, transparent, #373590);
+                // background: linear-gradient(0deg, transparent, #373590);
             }
 
 

+ 7 - 7
src/views/powerPrediction/weatherPage.vue

@@ -397,25 +397,25 @@
             },
             weatherMainHeight() {
                 return {
-                    'height': document.documentElement.clientHeight - 140 + 'px'
+                    'height': document.documentElement.clientHeight - 110 + 'px'
                 }
             },
             lineChartStyle() {
                 return {
                     'width': '93%',
-                    'height': (document.documentElement.clientHeight - 430) + 'px'
+                    'height': (document.documentElement.clientHeight - 400) + 'px'
                 }
             },
             lineLeftChartStyle() {
                 return {
                     'width': '93%',
-                    'height': (document.documentElement.clientHeight - 490) / 2 + 'px'
+                    'height': (document.documentElement.clientHeight - 460) / 2 + 'px'
                 }
             },
             linerightChartStyle() {
                 return {
                     'width': '95%',
-                    'height': (document.documentElement.clientHeight - 680) + 'px'
+                    'height': (document.documentElement.clientHeight - 650) + 'px'
                 }
             }
         },
@@ -1331,10 +1331,10 @@
                 display: flex;
                 justify-content: space-around;
                 align-items: center;
-                background: #3a35ae;
+                // background: #3a35ae;
                 // background: rgb(13, 104, 188);
                 margin: 0 10px;
-                border: 1px solid #7674d8;
+                // border: 1px solid #7674d8;
                 border-radius: 10px 10px 0 0;
                 border-bottom: none;
                 height: 40px;
@@ -1418,7 +1418,7 @@
             width: calc(100% - 20px);
             padding: 10px 0 10px 20px;
             // background: rgb(13, 104, 188);
-            border-radius: 10px;
+            // border-radius: 10px;
 
             .weatherOverview {
                 width: 50%;

+ 2 - 2
src/viewsCss/batteryDivinerPageLess.less

@@ -5,7 +5,7 @@
             justify-content: space-around;
             align-items: center;
             margin: 0 10px;
-            border: 1px solid #7674d8;
+            // border: 1px solid #7674d8;
             border-radius: 10px 10px 0 0;
             border-bottom: none;
             height: 40px;
@@ -70,7 +70,7 @@
     .lineMain {
         width: calc(100% - 20px);
         padding: 10px 0 10px 20px;
-        border-radius: 10px;
+        // border-radius: 10px;
 
         .lineStyle {
             width: 96%;

+ 1 - 1
src/viewsCss/panoramicPowerLess.less

@@ -74,7 +74,7 @@
     .lineMain {
         width: calc(100% - 20px);
         padding: 10px 0 10px 20px;
-        border-radius: 10px;
+        // border-radius: 10px;
 
         .lineStyle {
             width: 94%;

+ 1 - 1
src/viewsCss/powerPredictionPageLess.less

@@ -130,7 +130,7 @@
     .lineMain {
         width: calc(100% - 20px);
         padding: 10px 0 10px 20px;
-        border-radius: 10px;
+        // border-radius: 10px;
 
         .lineStyle {
             width: 98%;

+ 2 - 2
src/viewsCss/statisticalSummaryPageLess.less

@@ -5,7 +5,7 @@
             justify-content: space-around;
             align-items: center;
             margin: 0 10px;
-            border: 1px solid #7674d8;
+            // border: 1px solid #7674d8;
             border-radius: 10px 10px 0 0;
             border-bottom: none;
             height: 40px;
@@ -75,7 +75,7 @@
     .lineMain {
         width: calc(100% - 20px);
         padding: 10px;
-        border-radius: 10px;
+        // border-radius: 10px;
 
         .lineStyle1 {
             border-radius: 10px;