Browse Source

Merge branch 'sl' of http://61.161.152.110:10101/r/electronic-map into mw2

mw_666 3 năm trước cách đây
mục cha
commit
e5bce23e5e

+ 3 - 3
src/components/chart/line/table-line-chart.vue

@@ -46,13 +46,13 @@ export default {
   },
   computed: {
     xdata() {
-      return this.list.map((t) => {
-        return t.text;
+      return this.list.map((t,index) => {
+        return t.text || index;
       });
     },
     values() {
       return this.list.map((t) => {
-        return t.value;
+        return t.value || t;
       });
     },
   },

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 781 - 774
src/router/index.js


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

@@ -89,6 +89,7 @@ export default {
     },
     // 跳转按钮
     onClickJump(item){
+      console.warn(item);
        this.$router.push({
         path: `/health/health0/${item.wpId}/${item.wtId}`
       });

+ 7 - 6
src/views/LightMatrix3/LightMatrix3.vue

@@ -81,22 +81,23 @@
                 <div class="card-right">
                   <div class="num">
                     <i class="svg-icon svg-icon-sm" :class="cItem.color != 'red' ? 'svg-icon-' + cItem.color : 'svg-icon-white'">
-                      <SvgIcon svgid="svg-W"></SvgIcon>
+                      <SvgIcon svgid="svg-P"></SvgIcon>
                     </i>
-                    <span>{{ cItem.gl }}</span>
+                    <span>{{ cItem.fs }}</span>
                   </div>
                   <div class="num">
                     <i class="svg-icon svg-icon-sm" :class="cItem.color != 'red' ? 'svg-icon-' + cItem.color : 'svg-icon-white'">
-                      <SvgIcon svgid="svg-R"></SvgIcon>
+                      <SvgIcon svgid="svg-W"></SvgIcon>
                     </i>
-                    <span>{{ cItem.fdjzs.toFixed(2) }}</span>
+                    <span>{{ cItem.gl }}</span>
                   </div>
                   <div class="num">
                     <i class="svg-icon svg-icon-sm" :class="cItem.color != 'red' ? 'svg-icon-' + cItem.color : 'svg-icon-white'">
-                      <SvgIcon svgid="svg-P"></SvgIcon>
+                      <SvgIcon svgid="svg-R"></SvgIcon>
                     </i>
-                    <span>{{ cItem.fs }}</span>
+                    <span>{{ cItem.fdjzs.toFixed(2) }}</span>
                   </div>
+             
                 </div>
               </div>
             </div>

+ 150 - 32
src/views/NewPages/forecast-system.vue

@@ -2,86 +2,91 @@
   <div class="forecast-system">
     <div class="action-bar mg-b-16">
       <div class="selections">
-        <div class="item" @click="tabSelect(0)" :class="{ active: tabIndex == 0 }">麻黄山</div>
+        <!-- <div class="item" @click="tabSelect(0)" :class="{ active: tabIndex == 0 }">麻黄山</div>
         <div class="item" @click="tabSelect(1)" :class="{ active: tabIndex == 1 }">牛首山</div>
         <div class="item" @click="tabSelect(2)" :class="{ active: tabIndex == 2 }">青山</div>
         <div class="item" @click="tabSelect(3)" :class="{ active: tabIndex == 3 }">石板泉</div>
-        <div class="item" @click="tabSelect(3)" :class="{ active: tabIndex == 4 }">香山</div>
+        <div class="item" @click="tabSelect(3)" :class="{ active: tabIndex == 4 }">香山</div> -->
+        <div class="item" v-for="(item) of wpList" :key="item" 
+          @click="tabSelect(item)" :class="{ active: wpId == item.id }">{{item.name}}</div>
+        
       </div>
     </div>
     <div class="page-body">
       <el-row class="mg-b-16">
         <el-col :span="5" class="fc-info">
           <div class="fc-item">
-            <div class="title">牛首山风场</div>
+            <div class="title">{{wpName}}</div>
             <div class="tags">
               <div class="tag">
                 <i class="svg-icon svg-icon-gray-l svg-icon-lg">
-                  <svg-icon :svgid="'svg-duoyun'" />
+                  <svg-icon :svgid="'svg-' + weatherInfo.tqtp"/>
                 </i>
               </div>
               <div class="tag">
-                <div class="tag-title">实时风速</div>
-                <div class="tag-value">12.34<span class="unit">m/s</span></div>
+                <div class="tag-title">风速</div>
+                <div class="tag-value">{{weatherInfo.fs}}<span class="unit">m/s</span></div>
               </div>
               <div class="tag">
-                <div class="tag-title">预测风速</div>
-                <div class="tag-value">12.34<span class="unit">m/s</span></div>
+                <div class="tag-title">风向</div>
+                <div class="tag-value">{{weatherInfo.fx}}<span class="unit"></span></div>
               </div>
               <div class="tag">
-                <div class="tag-title">健康度(优)</div>
-                <div class="tag-value">12.34<span class="unit">台</span></div>
+                <div class="tag-title">清晰度</div>
+                <div class="tag-value">{{weatherInfo.qxd}}<span class="unit"></span></div>
               </div>
               <div class="tag">
-                <div class="tag-title">健康度(良)</div>
-                <div class="tag-value">12.34<span class="unit">台</span></div>
+                <div class="tag-title">温度</div>
+                <div class="tag-value">{{weatherInfo.wd}}<span class="unit">℃</span></div>
               </div>
               <div class="tag">
-                <div class="tag-title">健康度(差)</div>
-                <div class="tag-value">12.34<span class="unit">台</span></div>
+                <div class="tag-title">大气压强</div>
+                <div class="tag-value">{{weatherInfo.dqyl}}<span class="unit">hPa</span></div>
               </div>
               <div class="tag">
-                <div class="tag-title">健康度(差)</div>
-                <div class="tag-value">12.34<span class="unit">台</span></div>
+                <div class="tag-title">湿度</div>
+                <div class="tag-value">{{weatherInfo.sd}}<span class="unit">%</span></div>
               </div>
               <div class="tag">
-                <div class="tag-title">健康度(差)</div>
-                <div class="tag-value">12.34<span class="unit">台</span></div>
+                <div class="tag-title">经度</div>
+                <div class="tag-value">{{weatherInfo.jingdu}}<span class="unit"></span></div>
               </div>
               <div class="tag">
-                <div class="tag-title">健康度(差)</div>
-                <div class="tag-value">12.34<span class="unit">台</span></div>
+                <div class="tag-title">纬度</div>
+                <div class="tag-value">{{weatherInfo.weidu}}<span class="unit"></span></div>
               </div>
               <div class="tag">
-                <div class="tag-title">健康度(差)</div>
-                <div class="tag-value">12.34<span class="unit">台</span></div>
+                <div class="tag-title">云量</div>
+                <div class="tag-value">{{weatherInfo.yunliang}}<span class="unit"></span></div>
               </div>
               <div class="tag">
-                <div class="tag-title">健康度(差)</div>
-                <div class="tag-value">12.34<span class="unit">台</span></div>
+                <div class="tag-title">日出时间</div>
+                <div class="tag-value">{{weatherInfo.richushijian}}<span class="unit"></span></div>
               </div>
               <div class="tag">
-                <div class="tag-title">健康度(差)</div>
-                <div class="tag-value">12.34<span class="unit">台</span></div>
+                <div class="tag-title">日落时间</div>
+                <div class="tag-value">{{weatherInfo.riluoshijian}}<span class="unit"></span></div>
               </div>
             </div>
           </div>
         </el-col>
         <el-col :span="19">
           <panel :title="'损失电量分析'">
-            <multiple-bar-line-chart :height="'310px'" />
+            <multiple-bar-line-chart :height="'310px'" 
+              :lineData="chart1Line" :barData="chart1Bar"
+              :units="['功率(万kW)','电量(万kWh)']"/>
           </panel>
         </el-col>
       </el-row>
       <el-row>
         <el-col :span="12">
           <panel :title="'超短期风功率预测'">
-            <arrow-line-chart :height="'310px'" />
+            <arrow-line-chart :height="'310px'" :list="chart2List" :units="['功率(万kW)','风速(m/s)']"/>
           </panel>
         </el-col>
         <el-col :span="12">
           <panel :title="'短期风功率预测'">
-            <arrow-line-chart :height="'310px'" />
+            <arrow-line-chart :height="'310px'" :list="chart3List" :units="['功率(万kW)','风速(m/s)']"/>
           </panel>
         </el-col>
       </el-row>
@@ -99,13 +104,126 @@ export default {
   setup() {},
   data() {
     return {
-      tabIndex: 0,
+      wpList:[],
+      wpId:"MHS_FDC",
+      wpName:"麻黄山风电场",
+      weatherInfo:{},
+      chart1Bar:[],
+      chart1Line:[],
+      chart2List:[],
+      chart3List:[],
+      timer:null,
     };
   },
   methods: {
-    tabSelect(tab) {
-      this.tabIndex = tab;
+    tabSelect(item) {
+      this.wpId = item["id"];
+      this.wpName = item["name"];
+      {
+        this.getData();
+        this.getChart1();
+        this.getChart3();
+      }
+    },
+    async getWp() {
+      const res = await this.API.requestData({
+        method: "GET",
+        subUrl: "powercompare/windfarmAllAjax"
+      });
+      if(res) {
+        this.wpList = res.data.data.filter(ele=>{
+          return ele.id.indexOf("_FDC")>-1;
+        });
+      }
+    },
+    async getData() {
+      const res = await this.API.requestData({
+        method: "POST",
+        subUrl: "weather/weatherInfo",
+        data:{wpId:this.wpId}
+      });
+      if(res) {
+        this.weatherInfo = res.data.data;
+      }
+    },
+    async getChart1() {
+      const res = await this.API.requestData({
+        method: "POST",
+        subUrl: "weather/powerChart",
+        data:{wpId:this.wpId}
+      });
+      if(res) {
+        const fdlValue = {title:"电量",yAxisIndex:0,value:[]};
+        const glValue = {title:"功率",yAxisIndex:1,value:[]};
+        const fsValue = {name:"风速",unit:"m/s",data:[]};
+        res.data.data.forEach(e => {
+          if(fdlValue.value.length == 0){
+            fdlValue.value.push({text: new Date(e.time).formatDate("hh:mm"),value: 0});
+          }else{
+            fdlValue.value.push({text: new Date(e.time).formatDate("hh:mm"),value: e.value1});
+          }
+          glValue.value.push({text: new Date(e.time).formatDate("hh:mm"),value: e.value2});
+          fsValue.data.push(e.value3);
+        });
+        this.chart1Bar = [fdlValue,glValue];
+        this.chart1Line = fsValue;
+      }
     },
+    async getChart3() {
+      const res = await this.API.requestData({
+        method: "POST",
+        subUrl: "weather/weatherChart",
+        data:{wpId:this.wpId}
+      });
+      if(res) {
+        // 短期预测功率
+        {
+          const ycglValue = {title:"预测功率",yAxisIndex:0,value:[]};
+          const sjglValue = {title:"实际功率",yAxisIndex:0,value:[]};
+          const fsValue = {title:"风速",yAxisIndex:1,value:[]};
+          let hour = new Date().getHours();
+          res.data.data.forEach(e => {
+            if(ycglValue.value.length<=(24+hour)) {
+              ycglValue.value.push({text: new Date(e.time).formatDate("hh:mm"),value: e.value7});
+              sjglValue.value.push({text: new Date(e.time).formatDate("hh:mm"),value: e.value2});
+              fsValue.value.push({text: new Date(e.time).formatDate("hh:mm"),value: e.value6});
+            }
+          });
+          this.chart3List = [ycglValue,sjglValue,fsValue];
+        }
+        // 超短期预测功率
+        const cdqGlValue = {title:"预测功率",yAxisIndex:0,value:[]};
+        const sjglValue = {title:"实际功率",yAxisIndex:0,value:[]};
+        const fsValue = {title:"风速",yAxisIndex:1,value:[]};
+        let hour = new Date().getHours();
+        res.data.data.forEach(e => {
+          if(cdqGlValue.value.length<=(4+hour)) {
+            cdqGlValue.value.push({text: new Date(e.time).formatDate("hh:mm"),value: e.value4});
+            sjglValue.value.push({text: new Date(e.time).formatDate("hh:mm"),value: e.value2});
+            fsValue.value.push({text: new Date(e.time).formatDate("hh:mm"),value: e.value6});
+          }
+        });
+        this.chart2List = [cdqGlValue,sjglValue,fsValue];
+      }
+    },
+  },
+  created() {
+    this.getWp();
+    let that = this;
+    that.$nextTick(() => {
+      that.getData();
+      that.getChart1()
+      that.getChart3();
+      that.timer = setInterval(() => {
+        that.getData();
+        that.getChart1()
+        that.getChart3();
+      }, 60000);
+    });
+  },
+  unmounted() {
+    clearInterval(this.timer);
+    this.timer = null;
   },
 };
 </script>

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

@@ -7,7 +7,7 @@
     <div class="table-box">
       <ComTable :data="tableData"></ComTable>
     </div>
-  </div>
+  </div> 
 </template>
 
 <script>

+ 45 - 47
src/views/layout/Header.vue

@@ -1,7 +1,11 @@
 <template>
   <div class="header-menu">
     <ul class="header-menu-list">
-      <li class="header-menu-item" v-for="(menu, index) of menus" :key="menu" @click="click(index, menu)" :class="{ active: activeIndex == index }">
+      <li class="header-menu-item"
+          v-for="(menu, index) of menus"
+          :key="menu"
+          @click="click(index, menu)"
+          :class="{ active: activeIndex == index }">
         {{ menu.text }}
       </li>
     </ul>
@@ -24,35 +28,23 @@ export default {
     return {
       menus: [
         {
-          id: "monitor",
-          text: "状态监视",
-          path: "/monitor/home",
-          isActive: true,
+          id: 'monitor',
+          text: '状态监视',
+          path: '/monitor/home',
+          isActive: true
         },
-
         {
-          id: "performanceAnalysis",
-          text: "增发分析",
-          path: "/performanceAnalysis",
-          isActive: false,
+          id: 'decision',
+          text: '经济运行',
+          path: '/decision/decision1',
+          isActive: false
         },
         {
-          id: "ztfx",
-          text: "降损分析",
-          path: "/new/ztfx",
-          isActive: false,
-        },
-         {
-          id: "realSearch",
-          text: "数据支撑",
-          path: "/realSearch",
-          isActive: false,
-        },
-        {
-          id: "health",
-          text: "健康管理",
-          path: "/health",
-          isActive: false,
+          id: 'health',
+          text: '智慧检修',
+          // path: '/sandtable',
+          path: '/health',
+          isActive: false
         },
         // {
         //   id: "decision",
@@ -61,10 +53,10 @@ export default {
         //   isActive: false,
         // },
         {
-          id: "personnel",
-          text: "安措管控",
-          path: "/new/personnel",
-          isActive: false,
+          id: 'personnel',
+          text: '安全管控',
+          path: '/new/personnel',
+          isActive: false
         },
         {
           id: "bdzcx",
@@ -72,8 +64,14 @@ export default {
           path: "/reportPandect",
           isActive: false,
         },
+        {
+          id: 'realSearch',
+          text: '其他',
+          path: '/realSearch',
+          isActive: false
+        }
       ],
-      activeIndex: 0,
+      activeIndex: 0
       // menusDropdown: [
       //   {
       //     text: "子菜单1",
@@ -89,39 +87,39 @@ export default {
       //   },
       // ],
       // dropdown: false,
-    };
+    }
   },
   methods: {
     click(index, data) {
-      this.activeIndex = index;
-      this.$router.push(data.path);
+      this.activeIndex = index
+      this.$router.push(data.path)
     },
     clickSubMenu(index, code) {
-      console.log(index, code);
+      console.log(index, code)
     },
     clickMenu() {
-      this.dropdown = !this.dropdown;
-    },
+      this.dropdown = !this.dropdown
+    }
   },
   computed: {
     activeClass(data) {
-      return data.isActive ? "active" : "";
-    },
+      return data.isActive ? 'active' : ''
+    }
   },
   watch: {
     $route: {
       handler: function(val, oldVal) {
         this.menus.some((t, index) => {
           if (val.path.includes(t.id)) {
-            this.activeIndex = index;
+            this.activeIndex = index
           }
-        });
+        })
       },
       //深度观察监听
-      deep: true,
-    },
-  },
-};
+      deep: true
+    }
+  }
+}
 </script>
 
 <style lang="less">
@@ -158,7 +156,7 @@ export default {
         transition: color 0.2s ease-in-out;
 
         &::after {
-          content: "";
+          content: '';
           position: absolute;
           width: 100%;
           height: 0.463vh;
@@ -215,7 +213,7 @@ export default {
         background-color: fade(@write, 5%);
 
         &::after {
-          content: "";
+          content: '';
           position: absolute;
           width: 100%;
           height: 0.463vh;

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 561 - 476
src/views/layout/Menu.vue


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

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

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

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

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

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