Browse Source

基于风机发电量全寿命周期管控的研究与应用项目中,发电能力分析系统,微观选址分析页面增加点击场站具备全选和反选功能;损失电量分析页面,增加理论发电量样式图例;首页修改月发电量功能,服务联调;72小时功率曲线增加实际功率;
基于风机发电量全寿命周期管控的研究与应用项目中,发电能力分析系统,微观选址分析页面,地图展示:将风机图标改为绿色小点,并需带风机编号同时支持缩放。

SunZehao 10 months ago
parent
commit
1305c0a8d1

+ 3 - 3
.env.development

@@ -12,13 +12,13 @@ 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://123.60.219.66:9002'
-VUE_APP_GENERAT_URL = 'http://192.168.2.126:9002'
+VUE_APP_GENERAT_URL = 'http://192.168.2.231:9002'
 # 智能报表
 # 智能报表
 # VUE_APP_REPORT_URL = 'http://123.60.219.66:9001'
 # VUE_APP_REPORT_URL = 'http://123.60.219.66:9001'
-VUE_APP_REPORT_URL = 'http://192.168.2.126:9001'
+VUE_APP_REPORT_URL = 'http://192.168.2.231:9001'
 # 功率预测
 # 功率预测
 # VUE_APP_BASE_URL = 'http://123.60.219.66:8086'
 # VUE_APP_BASE_URL = 'http://123.60.219.66:8086'
-VUE_APP_BASE_URL = 'http://192.168.2.126:8086'
+VUE_APP_BASE_URL = 'http://192.168.2.231:8086'
 
 
 # 百度地图KEY
 # 百度地图KEY
 VUE_APP_BAIDU_MAP_KEY = ''
 VUE_APP_BAIDU_MAP_KEY = ''

+ 8 - 8
.env.production

@@ -13,29 +13,29 @@ VUE_APP_TITLE = '页面标题'
 
 
 # 登录
 # 登录
 # VUE_APP_LOGIN_URL = 'http://123.60.219.66:48080'
 # 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://172.16.12.103:48080'
 # VUE_APP_LOGIN_URL = 'http://192.168.2.231:48080'
 # VUE_APP_LOGIN_URL = 'http://192.168.2.231:48080'
-VUE_APP_LOGIN_URL = 'http://127.0.0.1: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://123.60.219.66:9002'
-# VUE_APP_GENERAT_URL = 'http://172.16.12.103: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://192.168.2.231:9002'
-VUE_APP_GENERAT_URL = 'http://127.0.0.1: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://123.60.219.66:9001'
-# VUE_APP_REPORT_URL = 'http://172.16.12.103: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://192.168.2.231:9001'
-VUE_APP_REPORT_URL = 'http://127.0.0.1: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://123.60.219.66:8086'
-# VUE_APP_BASE_URL = 'http://172.16.12.103: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://192.168.2.231:8086'
-VUE_APP_BASE_URL = 'http://127.0.0.1:8086'
+# VUE_APP_BASE_URL = 'http://127.0.0.1:8086'
 
 
 # 百度地图KEY
 # 百度地图KEY
 VUE_APP_BAIDU_MAP_KEY = ''
 VUE_APP_BAIDU_MAP_KEY = ''

+ 1 - 0
package.json

@@ -9,6 +9,7 @@
   "dependencies": {
   "dependencies": {
     "@amap/amap-jsapi-loader": "^1.0.1",
     "@amap/amap-jsapi-loader": "^1.0.1",
     "@element-plus/icons-vue": "^2.0.10",
     "@element-plus/icons-vue": "^2.0.10",
+    "@panzhiyue/leaflet-canvaslabel": "^1.2.0",
     "axios": "^0.21.1",
     "axios": "^0.21.1",
     "core-js": "^3.8.3",
     "core-js": "^3.8.3",
     "dayjs": "^1.11.11",
     "dayjs": "^1.11.11",

BIN
src/assets/images/indexCom/dingwei.png


+ 8 - 1
src/components/commonHeaders.vue

@@ -183,8 +183,15 @@
             },
             },
             changeRoute(item) {
             changeRoute(item) {
                 window.sessionStorage.setItem('headerRoute', item.index)
                 window.sessionStorage.setItem('headerRoute', item.index)
+                let params = {}
+                if (item.index.indexOf('intelligentReport') > -1) {
+                    params = {
+                        name: 'xinzhuang'
+                    }
+                }
                 this.$router.push({
                 this.$router.push({
-                    path: item.index
+                    path: item.index,
+                    query: params
                 })
                 })
                 this.$emit('headerName', item.name)
                 this.$emit('headerName', item.name)
             },
             },

File diff suppressed because it is too large
+ 37 - 2
src/components/generatingCapacityComponent/table.vue


+ 74 - 3
src/views/generatingCapacity/dataAnalysis/posAnalysis/components/leafletMap.vue

@@ -5,6 +5,9 @@
 </template>
 </template>
 <script>
 <script>
     import httpRequest from '@/utils/request.js'
     import httpRequest from '@/utils/request.js'
+    import {
+        CanvasLabel
+    } from "@panzhiyue/leaflet-canvaslabel"
     import './leaflet.canvas-markers.js'
     import './leaflet.canvas-markers.js'
     export default {
     export default {
         props: {
         props: {
@@ -35,9 +38,8 @@
         },
         },
         watch: {
         watch: {
             ids(val) {
             ids(val) {
-
-
-                this.funStationPos(val)
+                // this.funStationPos(val)
+                this.funStationPosLabel(val)
             },
             },
         },
         },
         mounted() {
         mounted() {
@@ -45,7 +47,13 @@
         },
         },
         methods: {
         methods: {
             initMap() {
             initMap() {
+                //矢量文本标签渲染器
+                let canvasLabel = new L.CanvasLabel({
+                    collisionFlg: true,
+                    scale: 2
+                });
                 this.map = L.map("map", {
                 this.map = L.map("map", {
+                    renderer: canvasLabel,
                     // center: [40.02404009136253, 116.50641060224784], // 地图中心--北京
                     // center: [40.02404009136253, 116.50641060224784], // 地图中心--北京
                     // center: [38.44673272215545, 106.27624511718751], // 地图中心--银川
                     // center: [38.44673272215545, 106.27624511718751], // 地图中心--银川
                     // center: [108.953939, 34.266611], // 地图中心--陕西
                     // center: [108.953939, 34.266611], // 地图中心--陕西
@@ -147,6 +155,69 @@
                 }
                 }
             },
             },
 
 
+            async funStationPosLabel(ids) {
+                if (this.layers.length > 0) {
+                    for (var i = 0; i < this.layers.length; i++) {
+                        this.map.removeLayer(this.layers[i]);
+                    }
+                    this.layers = []
+                }
+                let res = null
+                if (ids.length > 0) {
+                    res = await httpRequest.get('/base/location', {
+                        params: {
+                            ids: this.ids.join(","),
+                        },
+                    })
+                } else {
+                    res = await httpRequest.get('/base/station', {
+                        params: {},
+                    })
+                }
+                if (res.code === 200) {
+                    if (res.data && res.data.length) {
+                        this.layers = []
+                        for (let i = 0; i < res.data.length; i++) {
+                            let item = res.data[i]
+
+                            let latlng = L.latLng(Number(item.latitude), Number(item.longitude));
+                            let c = L.circleMarker(latlng, {
+                                radius: 5,
+                                color: '#12e799',
+                                labelStyle: {
+                                    text: item.aname,
+                                    scale: 1,
+                                    rotation: 0,
+                                    offsetY: 15,
+                                    fillStyle: '#000',
+                                    zIndex: i
+                                },
+                                data: item
+                            }).bindTooltip(`
+                                <div class="tip-box-top">
+                                    <div class="item">${item.aname}</div>
+                                    <div class="item">经度:${item.latitude}°</div>
+                                    <div class="item">纬度:${item.longitude}°</div>
+                                    <div class="item">海拔高度:${item.altitude}m</div>
+                                </div>`).addTo(this.map);
+                            this.layers.push(c)
+
+                            let that = this
+                            c.on('mouseover', function onmouseover(e) {
+                                console.log('map', item)
+                                that.rightObj = item
+                            })
+
+                        }
+                        let center = this.map.getCenter()
+                        this.map.panTo([center.lat, center.lng], {
+                            animate: true
+                        })
+                        this.map.setView(this.layers[0].getLatLng(), 13);
+                    }
+                }
+            },
+
             setAreaLayer(jsonName, isBounds) {
             setAreaLayer(jsonName, isBounds) {
                 const wfAllGeoJson = require(`@/assets/${jsonName}.json`)
                 const wfAllGeoJson = require(`@/assets/${jsonName}.json`)
                 this.areaLayer = L.geoJSON(wfAllGeoJson, {
                 this.areaLayer = L.geoJSON(wfAllGeoJson, {

+ 19 - 3
src/views/generatingCapacity/dataAnalysis/posAnalysis/index.vue

@@ -6,7 +6,7 @@
             </div>
             </div>
             <div class="main">
             <div class="main">
                 <div class="treeDataMain">
                 <div class="treeDataMain">
-                    <tree-cop ref="treeCopRef" :data="treeData" @checkChange="funTreeCheckChange" :show-checkbox="false"
+                    <tree-cop ref="treeCopRef" :data="treeData" @checkChange="funTreeCheckChange" :show-checkbox="true"
                         :height="treeHeight" @currentChange="funCurrentChange" @refresh="funGetTree"></tree-cop>
                         :height="treeHeight" @currentChange="funCurrentChange" @refresh="funGetTree"></tree-cop>
                 </div>
                 </div>
                 <div class="excelDataMain">
                 <div class="excelDataMain">
@@ -265,8 +265,8 @@
                     ),
                     ),
                 };
                 };
             });
             });
-            excelCheckIds.value = current.childs.map((o) => o.id);
-            treeId.value = current.id || "";
+            // excelCheckIds.value = current.childs.map((o) => o.id);
+            // treeId.value = current.id || "";
 
 
             funSubmit();
             funSubmit();
         } else {
         } else {
@@ -282,6 +282,22 @@
         halfCheckedNodes,
         halfCheckedNodes,
         halfCheckedKeys,
         halfCheckedKeys,
     }) => {
     }) => {
+        funCurrentChange({
+            current,
+            currentNode: ''
+        })
+        const checkIds = []
+        if (checkedNodes.checkedNodes.length) {
+            let checkArr = checkedNodes.checkedNodes
+            checkArr.forEach(it => {
+                if (it.childs && it.childs.length) {
+                    it.childs.forEach(iv => {
+                        checkIds.push(iv.id)
+                    })
+                }
+            })
+        }
+        excelCheckIds.value = checkIds
         //tree change  -> excel change
         //tree change  -> excel change
         // funCurrentChange({ current, currentNode: '' })
         // funCurrentChange({ current, currentNode: '' })
         // const checkIds = []
         // const checkIds = []

+ 16 - 27
src/views/generatingCapacity/dataAnalysis/windAnalysis/components/barLineChart.vue

@@ -42,6 +42,7 @@
                             "限电损失",
                             "限电损失",
                             "受累损失",
                             "受累损失",
                             "性能损失",
                             "性能损失",
+                            "理论发电量"
                         ],
                         ],
                         data: [
                         data: [
                             [1320, 1302, 901, 634, 1390, 1330, 1320, 1000, 500],
                             [1320, 1302, 901, 634, 1390, 1330, 1320, 1000, 500],
@@ -110,27 +111,23 @@
                         show: this.showLegend,
                         show: this.showLegend,
                         data: this.bardata.legend,
                         data: this.bardata.legend,
                         right: 56,
                         right: 56,
-                        icon: "ract",
+                        // icon: "ract",
                         itemWidth: 8,
                         itemWidth: 8,
                         itemHeight: 8,
                         itemHeight: 8,
                         inactiveColor: this.themeName === "dark" ?
                         inactiveColor: this.themeName === "dark" ?
-                            partten.getColor("gray") :
-                            "#838383",
+                            partten.getColor("gray") : "#838383",
                         textStyle: {
                         textStyle: {
                             color: this.themeName === "dark" ?
                             color: this.themeName === "dark" ?
-                                partten.getColor("grayl") :
-                                "#838383",
+                                partten.getColor("grayl") : "#838383",
                             fontSize: 12,
                             fontSize: 12,
                         },
                         },
                     },
                     },
                     tooltip: {
                     tooltip: {
                         trigger: "axis",
                         trigger: "axis",
                         backgroundColor: true ?
                         backgroundColor: true ?
-                            "rgba(255,255,255,0.9)" :
-                            "rgba(255,255,255,0.9)",
+                            "rgba(255,255,255,0.9)" : "rgba(255,255,255,0.9)",
                         borderColor: this.themeName === "dark" ?
                         borderColor: this.themeName === "dark" ?
-                            partten.getColor("gray") :
-                            "#838383",
+                            partten.getColor("gray") : "#838383",
                         textStyle: {
                         textStyle: {
                             color: this.themeName === "dark" ? "#fff" : "#838383",
                             color: this.themeName === "dark" ? "#fff" : "#838383",
                             fontSize: util.vh(16),
                             fontSize: util.vh(16),
@@ -152,8 +149,7 @@
                             // handleIcon: "path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z",
                             // handleIcon: "path://M306.1,413c0,2.2-1.8,4-4,4h-59.8c-2.2,0-4-1.8-4-4V200.8c0-2.2,1.8-4,4-4h59.8c2.2,0,4,1.8,4,4V413z",
                             handleStyle: {
                             handleStyle: {
                                 color: this.themeName === "dark" ?
                                 color: this.themeName === "dark" ?
-                                    partten.getColor("green") :
-                                    partten.getColor("blue"),
+                                    partten.getColor("green") : partten.getColor("blue"),
                             },
                             },
                             moveHandleSize: 0,
                             moveHandleSize: 0,
                             // dataBackground: {
                             // dataBackground: {
@@ -175,12 +171,10 @@
                             fillerColor: "transparent",
                             fillerColor: "transparent",
                             textStyle: {
                             textStyle: {
                                 color: this.themeName === "dark" ?
                                 color: this.themeName === "dark" ?
-                                    partten.getColor("grayl") :
-                                    "#838383",
+                                    partten.getColor("grayl") : "#838383",
                             },
                             },
                             borderColor: this.themeName === "dark" ?
                             borderColor: this.themeName === "dark" ?
-                                partten.getColor("gray") :
-                                "#838383",
+                                partten.getColor("gray") : "#838383",
                             brushSelect: false,
                             brushSelect: false,
                         },
                         },
                     ],
                     ],
@@ -188,8 +182,7 @@
                         type: "category",
                         type: "category",
                         axisLabel: {
                         axisLabel: {
                             color: this.themeName === "dark" ?
                             color: this.themeName === "dark" ?
-                                partten.getColor("gray") :
-                                "#838383",
+                                partten.getColor("gray") : "#838383",
                         },
                         },
                         inverse: true,
                         inverse: true,
                         // minInterval: 10,
                         // minInterval: 10,
@@ -207,16 +200,14 @@
                             name: '万kWh',
                             name: '万kWh',
                             axisLabel: {
                             axisLabel: {
                                 color: this.themeName === "dark" ?
                                 color: this.themeName === "dark" ?
-                                    partten.getColor("gray") :
-                                    "#838383",
+                                    partten.getColor("gray") : "#838383",
                                 // formatter: "{value}万kWh",
                                 // formatter: "{value}万kWh",
                             },
                             },
                             axisLine: {
                             axisLine: {
                                 type: "dashed",
                                 type: "dashed",
                                 lineStyle: {
                                 lineStyle: {
                                     color: this.themeName === "dark" ?
                                     color: this.themeName === "dark" ?
-                                        partten.getColor("gray") :
-                                        "#838383",
+                                        partten.getColor("gray") : "#838383",
                                 },
                                 },
                                 width: 5,
                                 width: 5,
                             },
                             },
@@ -257,7 +248,7 @@
                     // bar data
                     // bar data
                     for (var i = 0; i < this.bardata.legend.length; i++) {
                     for (var i = 0; i < this.bardata.legend.length; i++) {
                         option.series.push({
                         option.series.push({
-                            name: this.bardata.legend[i],
+                            name: this.bardata.legend[i].name,
                             type: "bar",
                             type: "bar",
                             stack: "总量",
                             stack: "总量",
                             barWidth: 16,
                             barWidth: 16,
@@ -272,20 +263,18 @@
                 // line data
                 // line data
                 if (this.lineData.length > 0) {
                 if (this.lineData.length > 0) {
                     option.series.push({
                     option.series.push({
-                        name: this.lineName,
+                        name: "理论发电量",
                         type: "line",
                         type: "line",
                         data: this.lineData,
                         data: this.lineData,
                         smooth: false, //平滑展示
                         smooth: false, //平滑展示
                         xAxisIndex: 1,
                         xAxisIndex: 1,
                         lineStyle: {
                         lineStyle: {
                             color: this.themeName === "dark" ?
                             color: this.themeName === "dark" ?
-                                partten.getColor("green") :
-                                partten.getColor("blue"),
+                                partten.getColor("green") : partten.getColor("blue"),
                         },
                         },
                         itemStyle: {
                         itemStyle: {
                             color: this.themeName === "dark" ?
                             color: this.themeName === "dark" ?
-                                partten.getColor("green") :
-                                partten.getColor("blue"),
+                                partten.getColor("green") : partten.getColor("blue"),
                         },
                         },
                     });
                     });
                 }
                 }

+ 39 - 7
src/views/generatingCapacity/dataAnalysis/windAnalysis/index.vue

@@ -136,15 +136,47 @@
         const name = [],
         const name = [],
             data = [],
             data = [],
             llfdl = [],
             llfdl = [],
-            legend = [
-                "实际电量",
-                "计划检修损失",
-                "非计划检修损失",
-                "限电损失",
-                "受累损失",
-                "性能损失",
+            legend = [{
+                    name: "实际电量",
+                    icon: "rect"
+                },
+                {
+                    name: "计划检修损失",
+                    icon: "rect"
+                },
+                {
+                    name: "非计划检修损失",
+                    icon: "rect"
+                },
+                {
+                    name: "限电损失",
+                    icon: "rect"
+                },
+                {
+                    name: "受累损失",
+                    icon: "rect"
+                },
+                {
+                    name: "性能损失",
+                    icon: "rect"
+                },
+                {
+                    name: "理论发电量",
+                    icon: "circle"
+                }
             ],
             ],
+
+            // legend = [
+            //     "实际电量",
+            //     "计划检修损失",
+            //     "非计划检修损失",
+            //     "限电损失",
+            //     "受累损失",
+            //     "性能损失",
+            //     "理论发电量"
+            // ],
             data2 = []; //项目列表
             data2 = []; //项目列表
+
         // if (params.station) {
         // if (params.station) {
         // 	let arr = [];
         // 	let arr = [];
         // 	let hj = res.data.data.pop();
         // 	let hj = res.data.data.pop();

+ 14 - 14
src/views/home/index.vue

@@ -556,11 +556,10 @@
                             let seriesSW = []
                             let seriesSW = []
                             let seriesGW = []
                             let seriesGW = []
                             res.data.dllist.forEach(it => {
                             res.data.dllist.forEach(it => {
-                                let date = it.recordDate.substring(0, it.recordDate.indexOf(' '))
-                                xAxis.push(date)
-                                seriesRF.push(it.rfdldb / 10000)
-                                seriesSW.push(it.rswdldb / 10000)
-                                seriesGW.push(it.rgwgwdldb / 10000)
+                                xAxis.push(it.rq)
+                                seriesRF.push(it.yfdl)
+                                seriesSW.push(it.yswdl)
+                                seriesGW.push(it.ygwdl)
                             })
                             })
                             let series = [{
                             let series = [{
                                     name: '日发电量',
                                     name: '日发电量',
@@ -586,11 +585,13 @@
                             let xAxis = []
                             let xAxis = []
                             let seriesSpeed = []
                             let seriesSpeed = []
                             let seriesGl = []
                             let seriesGl = []
+                            let seriesSJ = []
                             res.data['72time'].forEach(it => {
                             res.data['72time'].forEach(it => {
                                 let date = it.time.substring(0, it.time.indexOf('T') + 3)
                                 let date = it.time.substring(0, it.time.indexOf('T') + 3)
                                 xAxis.push(date)
                                 xAxis.push(date)
                                 seriesSpeed.push(it.speed)
                                 seriesSpeed.push(it.speed)
                                 seriesGl.push(it.gl)
                                 seriesGl.push(it.gl)
+                                seriesSJ.push(it.sjgl)
                             })
                             })
                             let series = [{
                             let series = [{
                                     name: '平均风速',
                                     name: '平均风速',
@@ -605,11 +606,12 @@
                                     type: 'line',
                                     type: 'line',
                                     symbol: 'none'
                                     symbol: 'none'
                                 },
                                 },
-                                // {
-                                //     name: '实际功率',
-                                //     data: seriesGl,
-                                //     type: 'bar'
-                                // }
+                                {
+                                    name: '实际功率',
+                                    data: seriesSJ,
+                                    type: 'line',
+                                    symbol: 'none'
+                                }
                             ]
                             ]
                             that.getPowerLine(xAxis, series)
                             that.getPowerLine(xAxis, series)
                         }
                         }
@@ -695,15 +697,13 @@
                     tooltip: {
                     tooltip: {
                         trigger: 'axis'
                         trigger: 'axis'
                     },
                     },
-                    // color: ['#7981AF', '#1C99FF', '#E57F25'],
-                    color: ['#1C99FF', '#E57F25'],
+                    color: ['#7981AF', '#1C99FF', '#E57F25'],
                     legend: {
                     legend: {
                         right: '20',
                         right: '20',
                         top: '20',
                         top: '20',
                         itemWidth: 5,
                         itemWidth: 5,
                         itemHeight: 5,
                         itemHeight: 5,
-                        // data: ['平均风速', '应发功率', '实际功率']
-                        data: ['平均风速', '应发功率']
+                        data: ['平均风速', '应发功率', '实际功率']
                     },
                     },
                     grid: {
                     grid: {
                         left: '2%',
                         left: '2%',