diff --git a/src/views/sponeScreen/gisMF/cesiumMapLegend.js b/src/views/sponeScreen/gisMF/cesiumMapLegend.js index 38be617..293e7fb 100644 --- a/src/views/sponeScreen/gisMF/cesiumMapLegend.js +++ b/src/views/sponeScreen/gisMF/cesiumMapLegend.js @@ -6,14 +6,18 @@ import { oneMapFacilityPumpList } from '@/api/scada/pumpStationInformation'; import { haiMianfacilitySewagePage } from '@/api/scada/sewage'; import { waterloggingPointList, queryProjectStation } from '@/api/sponeScreen/syntherticData.js'; -import { getStationList } from '@/api/sponeScreen/syntherticData'; +import { realtimeRainfallStatistics } from '@/api/floodSys/oneMap.js'; import bus from '@/bus'; let YSBZ, WSBZ, HLBZ, WSCLC, waterLogingPoint, projectStation, ysArea, wsArea, hsArea, wscArea, rainStationData, rainStationArea; let legendDataList; export default class cesiumMapCommonLegend { //获取站点数据 static async getStationData() { - let results = await Promise.all([oneMapFacilityPumpList(), haiMianfacilitySewagePage(), getStationList()]); + let results = await Promise.all([ + oneMapFacilityPumpList(), + haiMianfacilitySewagePage(), + realtimeRainfallStatistics({ monitorTargetType: 'rainfall', orderBy: 'tt desc' }), + ]); let resRainwater = results[0]; let resWSCLC = results[1]; let rainStation = results[2]; @@ -21,7 +25,10 @@ let YSBZDataList = resRainwater.data.filter(data => data.pumpType == 'rain_water'); //雨水泵站 let WSBZDataList = resRainwater.data.filter(data => data.pumpType == 'sewage_water'); //污水泵站 let HLBZDataList = resRainwater.data.filter(data => data.pumpType == 'confluence'); //合流泵站 - let rainDataList = rainStation.data.filter(data => data.monitorTargetType == 'rainfall'); //雨量站 + let rainDataList = rainStation.data; //雨量站 + rainDataList.forEach(item => { + item.stName = item.stName + '/' + item.pn05 + 'mm'; + }); YSBZ = this.getGeojsonData(YSBZDataList); WSBZ = this.getGeojsonData(WSBZDataList); HLBZ = this.getGeojsonData(HLBZDataList); @@ -48,7 +55,7 @@ } //发送图例 legendDataList = this.legendData(); - bus.emit('legendDataList', legendDataList); + bus.emit('cesiumLegendDataList', legendDataList); } //汇水范围json static getPolygonGeojson(dataList) { diff --git a/src/views/sponeScreen/gisMF/cesiumMapLegend.js b/src/views/sponeScreen/gisMF/cesiumMapLegend.js index 38be617..293e7fb 100644 --- a/src/views/sponeScreen/gisMF/cesiumMapLegend.js +++ b/src/views/sponeScreen/gisMF/cesiumMapLegend.js @@ -6,14 +6,18 @@ import { oneMapFacilityPumpList } from '@/api/scada/pumpStationInformation'; import { haiMianfacilitySewagePage } from '@/api/scada/sewage'; import { waterloggingPointList, queryProjectStation } from '@/api/sponeScreen/syntherticData.js'; -import { getStationList } from '@/api/sponeScreen/syntherticData'; +import { realtimeRainfallStatistics } from '@/api/floodSys/oneMap.js'; import bus from '@/bus'; let YSBZ, WSBZ, HLBZ, WSCLC, waterLogingPoint, projectStation, ysArea, wsArea, hsArea, wscArea, rainStationData, rainStationArea; let legendDataList; export default class cesiumMapCommonLegend { //获取站点数据 static async getStationData() { - let results = await Promise.all([oneMapFacilityPumpList(), haiMianfacilitySewagePage(), getStationList()]); + let results = await Promise.all([ + oneMapFacilityPumpList(), + haiMianfacilitySewagePage(), + realtimeRainfallStatistics({ monitorTargetType: 'rainfall', orderBy: 'tt desc' }), + ]); let resRainwater = results[0]; let resWSCLC = results[1]; let rainStation = results[2]; @@ -21,7 +25,10 @@ let YSBZDataList = resRainwater.data.filter(data => data.pumpType == 'rain_water'); //雨水泵站 let WSBZDataList = resRainwater.data.filter(data => data.pumpType == 'sewage_water'); //污水泵站 let HLBZDataList = resRainwater.data.filter(data => data.pumpType == 'confluence'); //合流泵站 - let rainDataList = rainStation.data.filter(data => data.monitorTargetType == 'rainfall'); //雨量站 + let rainDataList = rainStation.data; //雨量站 + rainDataList.forEach(item => { + item.stName = item.stName + '/' + item.pn05 + 'mm'; + }); YSBZ = this.getGeojsonData(YSBZDataList); WSBZ = this.getGeojsonData(WSBZDataList); HLBZ = this.getGeojsonData(HLBZDataList); @@ -48,7 +55,7 @@ } //发送图例 legendDataList = this.legendData(); - bus.emit('legendDataList', legendDataList); + bus.emit('cesiumLegendDataList', legendDataList); } //汇水范围json static getPolygonGeojson(dataList) { diff --git a/src/views/sponeScreen/gisMF/legendKF.vue b/src/views/sponeScreen/gisMF/legendKF.vue index c58e808..8f2b794 100644 --- a/src/views/sponeScreen/gisMF/legendKF.vue +++ b/src/views/sponeScreen/gisMF/legendKF.vue @@ -41,11 +41,12 @@ import cesiumPaiShuiArea from './cesiumPaiShuiArea.js'; import newfiberVectorLayer from './newfiberVectorLayer.js'; import bus from '@/bus/index'; +import { realtimeRainfallStatistics } from '@/api/floodSys/oneMap.js'; const { proxy } = getCurrentInstance(); const legendList = ref([]); const showLegend = ref(false); - +const rainDataTimer = ref(null); //雨量站实时刷新 // 面板内容展开收起控制 const props = defineProps({ showLegend: { @@ -149,6 +150,24 @@ if (item.dataArea) { newfiberVectorLayer.addGeojsonPolygon(newfiberMap, item.dataArea, item.layername); } + if (item.layername == 'rainStation') { + //雨量站特殊处理,5分钟刷新 + let rainValue = 0; + rainDataTimer.value = setInterval(async () => { + rainValue += 1; + let res = await realtimeRainfallStatistics({ monitorTargetType: 'rainfall', orderBy: 'tt desc' }); + if (res && res.code == 200) { + let rainDataList = res.data; //雨量站 + rainDataList.forEach(element => { + element.stName = element.stName + '/' + element.pn05 + 'mm' + rainValue; + }); + item.data = cesiumMapCommonLegend.getGeojsonData(rainDataList); + newfiberMap.removeByIds([item.layername]); + newfiberVectorLayer.addGeojsonPoint(newfiberMap, item.data, getImageUrl(item.url, 'cesiumMap/legendIcon'), item.layername); + newfiberVectorLayer.addGeojsonPolygon(newfiberMap, item.dataArea, item.layername); + } + }, 300000); + } } if (item.layername == 'pipeLineFlow') { newfiberVectorLayer.addDynamicLine(item.data, item.layername); @@ -167,12 +186,15 @@ }); } newfiberMap.removeByIds([item.layername]); + if (rainDataTimer.value) { + clearInterval(rainDataTimer.value); + } } }; onMounted(() => { cesiumMapCommonLegend.getStationData(); nextTick(() => { - bus.on('legendDataList', legendDataList => { + bus.on('cesiumLegendDataList', legendDataList => { legendList.value = legendDataList; }); }); @@ -200,6 +222,12 @@ } }); }); +onBeforeUnmount(() => { + bus.off('cesiumLegendDataList'); + if (rainDataTimer.value) { + clearInterval(rainDataTimer.value); + } +});