From 0039429882f8434000a0f61d6995324f1589633a Mon Sep 17 00:00:00 2001 From: seatonwan9 <seatonwan9@163.com> Date: 星期日, 30 五月 2021 13:36:06 +0800 Subject: [PATCH] Merge branch 'develop' of http://xearth.cn:6600/r/wuyushui/SewerAndRainNetwork into develop --- public/assets/images/map-pages/title_bg2.png | 0 src/components/panel/RightSearchPanel.vue | 124 ++++-- src/components/base-page/enterprise-emergency/events-reported/ReportLocationSearch.vue | 174 ++++++-- src/conf/Topic.js | 4 src/components/helpers/MapManager.js | 5 src/views/popup/DynamicHeader/DynamicTable.vue | 43 ++ src/components/LayerController/modules/LcServiceLayer.vue | 44 ++ public/assets/images/map-pages/title_bg.png | 0 src/components/base-page/WasteWater/WasteWaterHoursChart.vue | 227 +++++++++-- src/components/base-page/WasteWater/WasteWaterIndex.vue | 21 src/components/base-page/enterprise-emergency/events-reported/ReportLocationPoint.vue | 40 + src/components/table/components/tabHandover.vue | 7 src/conf/Constants.js | 17 src/views/popup/DynamicHeader/TableColumn.vue | 24 + src/components/base-page/PublicDataStandard.vue | 13 src/components/base-page/enterprise-emergency/events-reported/ReportLocationSection.vue | 139 ++++-- src/components/base-page/WasteWater/WasteWaterDayChart.vue | 243 +++++++++--- src/components/base-page/enterprise-emergency/events-reported/EventsReported.vue | 4 src/components/panel/topicSearch/enterprise-emergency/EventQuery.vue | 2 src/App.vue | 6 20 files changed, 843 insertions(+), 294 deletions(-) diff --git a/public/assets/images/map-pages/title_bg.png b/public/assets/images/map-pages/title_bg.png new file mode 100644 index 0000000..0f0b6cd --- /dev/null +++ b/public/assets/images/map-pages/title_bg.png Binary files differ diff --git a/public/assets/images/map-pages/title_bg2.png b/public/assets/images/map-pages/title_bg2.png new file mode 100644 index 0000000..642a42f --- /dev/null +++ b/public/assets/images/map-pages/title_bg2.png Binary files differ diff --git a/src/App.vue b/src/App.vue index 6b056a7..a2535d8 100644 --- a/src/App.vue +++ b/src/App.vue @@ -29,5 +29,9 @@ -ms-overflow-style: none; font-size: 12px; } - +.popoverBoxStyle{ + border: 0.00521rem solid #00fff6; + box-shadow: 0 0 0.03rem #00fff6; + background-color: rgba(0, 16, 30, 0.7) !important; +} </style> diff --git a/src/components/LayerController/modules/LcServiceLayer.vue b/src/components/LayerController/modules/LcServiceLayer.vue index acb38a6..eb0472f 100644 --- a/src/components/LayerController/modules/LcServiceLayer.vue +++ b/src/components/LayerController/modules/LcServiceLayer.vue @@ -7,17 +7,17 @@ <i class="downUp el-icon-caret-bottom" @click="item.isShow=!item.isShow" :class="item.isShow?'':'active'" ></i><!-- el-icon-arrow-down --> <!-- 涓�绾у浘灞傞亶鍘� --> <div style="padding-left:25px;padding-top:10px;color:#fff;font-size: 16px;"> - <input type="checkbox" :class="item.type==1?'active':''" :name="'wmsLayer_'+item.code" :checked="item.checked" :value="item.code" @change="swAllLayers(item)"/>{{ item.name }} + <input type="checkbox" :class="{ 'active': item.type === 1 }" :name="'wmsLayer_'+item.code" :checked="item.checked" :value="item.code" @change="swAllLayers(item)"/>{{ item.name }} </div> <div class="layerbox-item" v-show="item.isShow" > <!-- 浜岀骇鍥惧眰閬嶅巻 --> <div class="basemap-layer-item" v-for="(itm,index2) in item.layers" :key="index2" :class="!itm.layers?'felxs':''" > - <input type="checkbox" :class="itm.type==1?'active':''" :name="'wmsSublayers_'+item.code+'_'+itm.code" :checked="itm.checked" :value="itm.code" @change="swAllLayers(itm)"/>{{ itm.name }} + <input type="checkbox" :class="{ 'active': itm.type === 1 }" :name="'wmsSublayers_'+item.code+'_'+itm.code" :checked="itm.checked" :value="itm.code" @change="swAllLayers(itm)"/>{{ itm.name }} <!-- 涓夌骇鍥惧眰閬嶅巻 --> <div class="layerbox-item-3" v-show="itm.layers"> <div class="basemap-layer-item" v-for="(layer,index3) in itm.layers" :key="index3"> <input type="checkbox" - :class="layer.type==1?'active':''" + :class="{ 'active': layer.type === 1 }" :name="'wmsSublayers_'+item.code+'_'+layer.code" :checked="layer.checked" :value="layer.code" @@ -36,7 +36,7 @@ <script> import LcServiceLayerFilter from '@components/LayerController/modules/LcServiceLayerFilter' -import bus from '@/eventBus' + export default { name: 'LcServiceLayer', components: { LcServiceLayerFilter }, @@ -68,6 +68,8 @@ } else { this.toggleLayer(item) } + /* <<<<<<< HEAD + bus.$emit('changeSearchBar', item) this.serviceLayers.forEach(function (item1, index1) { if (item1.layers) { item1.istrue = 0 @@ -112,6 +114,7 @@ // console.log(item1.layers.length, item1.istrue, item1.isfalse, item1.type) } }) +>>>>>>> de7390c66ef3e3fe316e804495a78d05a01f0160 */ // console.log(this.serviceLayers) }, swLayers (configs, checked) { @@ -126,6 +129,30 @@ } } }, + setLayerType (configs, checkedSum) { + if (configs) { + for (let i = 0, len = configs.length; i < len; ++i) { + const config = configs[i] + const checked = config.checked + if (config.layers) { + checkedSum = this.setLayerType(config.layers, checkedSum || 0) + if (checkedSum === config.layers.length) { + config.type = 2 + config.checked = true + } else if (checkedSum === 0) { + config.type = 0 + config.checked = false + } else { + config.type = 1 + } + checkedSum = 0 + continue + } + checkedSum = checkedSum + (checked ? 1 : 0) + } + return checkedSum + } + }, toggleLayer (itm) { if (itm.checked) { window.layerFactory.show(itm) @@ -134,6 +161,15 @@ } // this.updateWms() } + }, + watch: { + serviceLayers: { + handler: function (val) { + this.setLayerType(val, 0) + }, + immediate: true, + deep: true + } } } </script> diff --git a/src/components/base-page/PublicDataStandard.vue b/src/components/base-page/PublicDataStandard.vue index df75eaf..164801f 100644 --- a/src/components/base-page/PublicDataStandard.vue +++ b/src/components/base-page/PublicDataStandard.vue @@ -7,7 +7,7 @@ <!-- <span class="grid-content">搴熸皵娴侀噺 : <i style="color: #e8ee0b">120343.18</i></span>--> <span class="grid-content" v-for="item in dataStandard" :key="item.current.name">{{ item.current.name }} : <i style="color: #e8ee0b">{{ item.current.val }}</i> {{ - item.standard.name ? item.standard.name + ':' : '' + item.standard.name && item.current.name.indexOf('娴侀噺') === -1 ? item.standard.name + ':' : '' }} <i style="color: #fff">{{ item.standard.val }}</i></span> </div> </div> @@ -16,6 +16,11 @@ <script> export default { name: 'PublicDataStandard', + watch: { + dataStandard (val, oldVal) { + this.dataStandard = val + } + }, props: { dataStandard: { type: Array, @@ -31,12 +36,12 @@ .animation { .information { .grid-content { - padding: 0.02rem; - background-color: #2e4967; + padding: 0.03rem 0.08rem 0.03rem 0.08rem; text-align: center; border-radius: 0.02rem; line-height: 0.15rem; - margin: 0 0.05rem; + margin: 0 0.03rem; + box-shadow: 0 0 10px rgba(129,211,248,.35) inset; } } } diff --git a/src/components/base-page/WasteWater/WasteWaterDayChart.vue b/src/components/base-page/WasteWater/WasteWaterDayChart.vue index 1fcb2c9..8f0bce3 100644 --- a/src/components/base-page/WasteWater/WasteWaterDayChart.vue +++ b/src/components/base-page/WasteWater/WasteWaterDayChart.vue @@ -13,7 +13,14 @@ <el-option v-for="(item,index) in formData.regionList" :key="index" :label="item" :value="item"></el-option> </el-select> <el-button @click="querySearch()">鏌ヨ</el-button> - <el-button>鏄庣粏琛�</el-button> + <el-popover + placement="top" + width="100%" + popper-class="popoverBoxStyle" + trigger="click"> + <dynamic-table :tableData="tableData" :tableHeader="tableConfig" v-if="tableData"></dynamic-table> + <el-button slot="reference">鏄庣粏琛�</el-button> + </el-popover> </div> <div class="echarts-chart"> <div ref="echartsDay"></div> @@ -26,56 +33,19 @@ import dayjs from 'dayjs' import PublicDataStandard from '../PublicDataStandard' import mapApi from '@/api/mapApi' +import DynamicTable from '../../../views/popup/DynamicHeader/DynamicTable' // 澶氱骇琛ㄥご export default { name: 'WasteWaterDayChart', components: { - PublicDataStandard + PublicDataStandard, + DynamicTable }, data () { return { // tab鏍忎紶閫掓帴鏀舵暟鎹� - dataStandard: [ - { - current: { - name: '姘哀鍖栫墿', - val: 29.93 - }, - standard: { - name: '鏍囧噯', - val: 100 - } - }, - { - current: { - name: '浜屾哀鍖栫~', - val: 17.34 - }, - standard: { - name: '鏍囧噯', - val: 50 - } - }, - { - current: { - name: '鐑熷皹', - val: 6.93 - }, - standard: { - name: '鏍囧噯', - val: 30 - } - }, - { - current: { - name: '搴熸皵娴侀噺', - val: 120 - }, - standard: { - name: '', - val: null - } - }], + dataStandard: [], + tableData: null, formData: { region: '25', regionList: [25, 50, 75, 100], @@ -86,7 +56,98 @@ dataType: 1, jcdID: 1, bzz: null, - bzzList: [] + bzzList: [], + // 琛ㄥご鏁版嵁 + tableConfig: [ + { + id: 100, + label: '鎺掓斁鐐�', + prop: 'OnLineMonEmissPointName' + }, + { + id: 200, + label: '鐩戞祴鏃堕棿', + prop: 'MonTimeStr' + }, + { + id: 300, + label: 'COD', + prop: 'PoltmtrlName', + children: [ + { + id: 310, + label: '瀹炴祴鎺掓斁閲忥紙kg/h锛�', + prop: 'COD_EmissQty' + }, + { + id: 320, + label: '瀹炴祴娴撳害锛坢g/l锛�', + prop: 'COD_MonQty' + }, + { + id: 330, + label: '鏍囧噯鍊硷紙mg/l锛�', + prop: 'COD_StdValue' + } + ] + }, + { + id: 400, + label: '姘ㄦ爱', + prop: 'PoltmtrlName', + children: [ + { + id: 410, + label: '瀹炴祴鎺掓斁閲忥紙kg/h锛�', + prop: '姘ㄦ爱_EmissQty' + }, + { + id: 420, + label: '瀹炴祴娴撳害锛坢g/l锛�', + prop: '姘ㄦ爱_MonQty' + }, + { + id: 430, + label: '鏍囧噯鍊硷紙mg/l锛�', + prop: '姘ㄦ爱_StdValue' + } + ] + }, + { + id: 500, + label: 'PH', + prop: 'PoltmtrlName', + children: [ + { + id: 510, + label: '瀹炴祴鎺掓斁閲忥紙kg/h锛�', + prop: 'pH_EmissQty' + }, + { + id: 520, + label: '瀹炴祴娴撳害锛坢g/l锛�', + prop: 'pH_MonQty' + }, + { + id: 530, + label: '鏍囧噯鍊硷紙mg/l锛�', + prop: 'pH_StdValue' + } + ] + }, + { + id: 600, + label: '搴熸按娴侀噺', + prop: '', + children: [ + { + id: 610, + label: '瀹炴祴娴侀噺锛坢鲁/h锛�', + prop: '搴熸按娴侀噺_MonQty' + } + ] + } + ] } }, mounted () { @@ -104,7 +165,7 @@ poltMtrlId: '', emissTypeId: '', onLineMonEmissPointId: 23, - monItemId: 28, + monItemId: '28,31,35', // 鐩戞祴椤� COD銆佹皑姘�丳H beginTime: this.formData.timeStart, endTime: this.formData.timeEnd, dataType: this.dataType @@ -114,6 +175,8 @@ }, get24HourDate (res) { if (res.length > 0) { + this.dataStandard = [] + this.tableData = this.analysisResult(res) // 灏忔椂鏄庣粏琛ㄨВ鏋愮粨鏋� // 澶勭悊鏁版嵁寮�濮� const d = res const nameList = [] // 瀛樻斁鍥句緥 @@ -148,19 +211,44 @@ if (nameList.length === 0) { nameList.push(d[i].PoltmtrlName.trim()) dateList.push(strDate) - + this.dataStandard.push({ + current: { + name: d[i].PoltmtrlName.trim(), + val: '' + }, + standard: { + name: '鏍囧噯', + val: '' + } + }) bzh.push(d[i].StdValue) data = { name: d[i].PoltmtrlName.trim(), - data: [d[i].MonQty] + data: [] + } + if (d[i].MonQty !== null) { + data.data.push(d[i].MonQty) } dataList.push(data) } else if (nameList.indexOf(d[i].PoltmtrlName.trim()) < 0) { nameList.push(d[i].PoltmtrlName) bzh.push(d[i].StdValue) + this.dataStandard.push({ + current: { + name: d[i].PoltmtrlName.trim(), + val: '' + }, + standard: { + name: '鏍囧噯', + val: '' + } + }) data = { name: d[i].PoltmtrlName.trim(), - data: [d[i].MonQty] + data: [] + } + if (d[i].MonQty !== null) { + data.data.push(d[i].MonQty) } dataList.push(data) } else { @@ -169,7 +257,7 @@ } for (let j = 0; j < dataList.length; j++) { if (d[i].PoltmtrlName.trim() === dataList[j].name) { - dataList[j].data.push(d[i].MonQty) + if (d[i].MonQty !== null)dataList[j].data.push(d[i].MonQty) } } } @@ -265,7 +353,10 @@ } ydatas.push(ydata) } - + for (var t = 0; t < this.dataStandard.length; t++) { + this.dataStandard[t].current.val = ydatas[t].data[ydatas[t].data.length - 1].toFixed(2) + this.dataStandard[t].standard.val = ydatas[t].bzz + } const yname = '娴撳害(mg/l)' this.effChartShow(legend, xdata, ydatas, yname, this.jcdID, this.datatype) } @@ -273,7 +364,6 @@ effChartShow (legend, xdata, ydatas, yname, jcdID, datatype) { this.chart = this.$echarts.init(this.$refs.echartsDay) this.chart.clear() - // console.log(this.chart) this.chart.clear() let dataUnit = '' if (datatype === 1) { @@ -302,12 +392,14 @@ biaozhuiz = bzzList[i].bzhui } } - if (c.value[1] > biaozhuiz) { - return zdcbcolor - } else if (c.value[1] > biaozhuiz * 0.9) { - return '#FFA500' - } else { - return '#33c95f' + if (c.value) { + if (c.value[1] > biaozhuiz) { + return zdcbcolor + } else if (c.value[1] > biaozhuiz * 0.9) { + return '#FFA500' + } else { + return '#33c95f' + } } }, lineStyle: { // 鎶樼嚎鐨勯鑹� @@ -544,6 +636,43 @@ } this.chart.setOption(option) window.onresize = this.chart.resize + }, + analysisResult (result) { + // 澶勭悊琛ㄦ牸澶� + const json = {} + const arr = [] + // 澶勭悊琛ㄦ牸鍐呭 + const bodyDataList = [] + const dataMap = {} + for (let i = 0; i < result.length; i++) { + json[result[i].PoltmtrlName] = result[i].PoltmtrlName + const rgdata = result[i] + const timeTag = rgdata.MonTimeStr + if (!dataMap[timeTag]) { + dataMap[timeTag] = { MonTimeStr: '' + rgdata.MonTimeStr } + } + // 寰�鏁版嵁涓坊鍔犲睘鎬ф暟鎹� + const el = dataMap[timeTag] + el.OnLineMonEmissPointName = rgdata.OnLineMonEmissPointName + el[rgdata.PoltmtrlName + '_EmissQty'] = rgdata.EmissQty ? rgdata.EmissQty.toFixed(2) : '--' + el[rgdata.PoltmtrlName + '_MonQty'] = rgdata.MonQty ? rgdata.MonQty.toFixed(2) : '--' + el[rgdata.PoltmtrlName + '_StdValue'] = rgdata.StdValue ? rgdata.StdValue.toFixed(2) : '--' + } + let FSLLtemp = null + for (var key in json) { + if (key === '搴熸按娴侀噺' || key === '搴熸按') { + FSLLtemp = key + } else { + arr.push(key) + } + } + if (FSLLtemp != null) { + arr.push(FSLLtemp) + } + for (var p in dataMap) { + bodyDataList.push(dataMap[p]) + } + return bodyDataList } } } diff --git a/src/components/base-page/WasteWater/WasteWaterHoursChart.vue b/src/components/base-page/WasteWater/WasteWaterHoursChart.vue index 2acfe80..6cdefb1 100644 --- a/src/components/base-page/WasteWater/WasteWaterHoursChart.vue +++ b/src/components/base-page/WasteWater/WasteWaterHoursChart.vue @@ -13,7 +13,14 @@ <el-option v-for="(item,index) in formData.regionList" :key="index" :label="item" :value="item"></el-option> </el-select> <el-button @click="querySearch()">鏌ヨ</el-button> - <el-button>鏄庣粏琛�</el-button> + <el-popover + placement="top" + width="100%" + popper-class="popoverBoxStyle" + trigger="click"> + <dynamic-table :tableData="tableData" :tableHeader="tableConfig" v-if="tableData"></dynamic-table> + <el-button slot="reference">鏄庣粏琛�</el-button> + </el-popover> </div> <div class="echarts-chart"> <div ref="echartsHour"></div> @@ -26,56 +33,21 @@ import PublicDataStandard from '../PublicDataStandard' import dayjs from 'dayjs' import mapApi from '../../../api/mapApi' +import DynamicTable from '../../../views/popup/DynamicHeader/DynamicTable' // 澶氱骇琛ㄥご export default { name: 'WasteWaterHoursChart', components: { - PublicDataStandard + PublicDataStandard, + DynamicTable }, data () { return { // tab鏍忎紶閫掓帴鏀舵暟鎹� - dataStandard: [ - { - current: { - name: '姘哀鍖栫墿', - val: 29.93 - }, - standard: { - name: '鏍囧噯', - val: 100 - } - }, - { - current: { - name: '浜屾哀鍖栫~', - val: 17.34 - }, - standard: { - name: '鏍囧噯', - val: 50 - } - }, - { - current: { - name: '鐑熷皹', - val: 6.93 - }, - standard: { - name: '鏍囧噯', - val: 30 - } - }, - { - current: { - name: '搴熸皵娴侀噺', - val: 123 - }, - standard: { - name: '', - val: null - } - }], + dataStandard: [], + popUpName: '', + tableData: null, + mingxiBoxHtml: '', formData: { region: '25', regionList: [25, 50, 75, 100], @@ -87,7 +59,98 @@ dataType: 2, bzz: null, bzzList: [], - bz: '' + bz: '', + // 琛ㄥご鏁版嵁 + tableConfig: [ + { + id: 100, + label: '鎺掓斁鐐�', + prop: 'OnLineMonEmissPointName' + }, + { + id: 200, + label: '鐩戞祴鏃堕棿', + prop: 'MonTimeStr' + }, + { + id: 300, + label: 'COD', + prop: 'PoltmtrlName', + children: [ + { + id: 310, + label: '瀹炴祴鎺掓斁閲忥紙kg/h锛�', + prop: 'COD_EmissQty' + }, + { + id: 320, + label: '瀹炴祴娴撳害锛坢g/l锛�', + prop: 'COD_MonQty' + }, + { + id: 330, + label: '鏍囧噯鍊硷紙mg/l锛�', + prop: 'COD_StdValue' + } + ] + }, + { + id: 400, + label: '姘ㄦ爱', + prop: 'PoltmtrlName', + children: [ + { + id: 410, + label: '瀹炴祴鎺掓斁閲忥紙kg/h锛�', + prop: '姘ㄦ爱_EmissQty' + }, + { + id: 420, + label: '瀹炴祴娴撳害锛坢g/l锛�', + prop: '姘ㄦ爱_MonQty' + }, + { + id: 430, + label: '鏍囧噯鍊硷紙mg/l锛�', + prop: '姘ㄦ爱_StdValue' + } + ] + }, + { + id: 500, + label: 'PH', + prop: 'PoltmtrlName', + children: [ + { + id: 510, + label: '瀹炴祴鎺掓斁閲忥紙kg/h锛�', + prop: 'pH_EmissQty' + }, + { + id: 520, + label: '瀹炴祴娴撳害锛坢g/l锛�', + prop: 'pH_MonQty' + }, + { + id: 530, + label: '鏍囧噯鍊硷紙mg/l锛�', + prop: 'pH_StdValue' + } + ] + }, + { + id: 600, + label: '搴熸按娴侀噺', + prop: '', + children: [ + { + id: 610, + label: '瀹炴祴娴侀噺锛坢鲁/h锛�', + prop: '搴熸按娴侀噺_MonQty' + } + ] + } + ] } }, mounted () { @@ -105,18 +168,20 @@ poltMtrlId: '', emissTypeId: '', onLineMonEmissPointId: 23, - monItemId: 28, + monItemId: '28,31,35', // 鐩戞祴椤� COD銆佹皑姘�丳H beginTime: this.formData.startTime, endTime: this.formData.endTime, dataType: this.dataType } const result = (await mapApi.getQueryOnlineMonData(data)).Result.DataInfo - // console.log(result) + this.popUpName = result[0].OnLineMonEmissPointName this.get24HourDate(result) }, // 缁樺埗灏忔椂鏁版嵁鎶樼嚎鍥� get24HourDate (result) { if (result.length > 0) { + this.dataStandard = [] + this.tableData = this.analysisResult(result) // 灏忔椂鏄庣粏琛ㄨВ鏋愮粨鏋� const d = result const nameList = [] // 瀛樻斁鍥句緥 const dateList = [] // 瀛樻斁鏃堕棿 @@ -170,24 +235,43 @@ } } } - if (nameList.length === 0) { nameList.push(d[i].PoltmtrlName.trim()) + this.dataStandard.push({ + current: { + name: d[i].PoltmtrlName.trim(), + val: 29.93 + }, + standard: { + name: '鏍囧噯', + val: 100 + } + }) dateList.push(strDate) if ((d[i].PoltmtrlName === '搴熸按娴侀噺' || d[i].PoltmtrlName === '搴熸按') && d[i].MonQty < 0) { d[i].MonQty = 0 } - data.push(d[i].MonQty) + if (d[i].MonQty !== null)data.push(d[i].MonQty) bzh.push(d[i].StdValue) } else if (nameList.indexOf(d[i].PoltmtrlName.trim()) < 0) { nameList.push(d[i].PoltmtrlName) + this.dataStandard.push({ + current: { + name: d[i].PoltmtrlName.trim(), + val: 29.93 + }, + standard: { + name: '鏍囧噯', + val: 100 + } + }) bzh.push(d[i].StdValue) dataList.push(data) data = [] if ((d[i].PoltmtrlName === '搴熸按娴侀噺' || d[i].PoltmtrlName === '搴熸按') && d[i].MonQty < 0) { d[i].MonQty = 0 } - data.push(d[i].MonQty) + if (d[i].MonQty !== null)data.push(d[i].MonQty) } else if (i === d.length - 1) { if ((d[i].PoltmtrlName === '搴熸按娴侀噺' || d[i].PoltmtrlName === '搴熸按') && d[i].MonQty < 0) { d[i].MonQty = 0 @@ -202,10 +286,9 @@ if ((d[i].PoltmtrlName === '搴熸按娴侀噺' || d[i].PoltmtrlName === '搴熸按') && d[i].MonQty < 0) { d[i].MonQty = 0 } - data.push(d[i].MonQty) + if (d[i].MonQty !== null)data.push(d[i].MonQty) } } - const newList = [] for (let i = 0; i < dataList.length; i++) { @@ -291,7 +374,10 @@ // console.log(ydatas) const yname = '娴撳害(mg/l)' - + for (var t = 0; t < this.dataStandard.length; t++) { + this.dataStandard[t].current.val = ydatas[t].data[ydatas[t].data.length - 1].toFixed(2) + this.dataStandard[t].standard.val = ydatas[t].bzz + } this.effChartShow(legend, xdata, ydatas, yname, this.jcdID, this.datatype) } }, @@ -570,6 +656,43 @@ } this.chart.setOption(option) window.onresize = this.chart.resize + }, + analysisResult (result) { + // 澶勭悊琛ㄦ牸澶� + const json = {} + const arr = [] + // 澶勭悊琛ㄦ牸鍐呭 + const bodyDataList = [] + const dataMap = {} + for (let i = 0; i < result.length; i++) { + json[result[i].PoltmtrlName] = result[i].PoltmtrlName + const rgdata = result[i] + const timeTag = rgdata.MonTimeStr + if (!dataMap[timeTag]) { + dataMap[timeTag] = { MonTimeStr: '' + rgdata.MonTimeStr } + } + // 寰�鏁版嵁涓坊鍔犲睘鎬ф暟鎹� + const el = dataMap[timeTag] + el.OnLineMonEmissPointName = rgdata.OnLineMonEmissPointName + el[rgdata.PoltmtrlName + '_EmissQty'] = rgdata.EmissQty ? rgdata.EmissQty.toFixed(2) : '--' + el[rgdata.PoltmtrlName + '_MonQty'] = rgdata.MonQty ? rgdata.MonQty.toFixed(2) : '--' + el[rgdata.PoltmtrlName + '_StdValue'] = rgdata.StdValue ? rgdata.StdValue.toFixed(2) : '--' + } + let FSLLtemp = null + for (var key in json) { + if (key === '搴熸按娴侀噺' || key === '搴熸按') { + FSLLtemp = key + } else { + arr.push(key) + } + } + if (FSLLtemp != null) { + arr.push(FSLLtemp) + } + for (var p in dataMap) { + bodyDataList.push(dataMap[p]) + } + return bodyDataList } } } diff --git a/src/components/base-page/WasteWater/WasteWaterIndex.vue b/src/components/base-page/WasteWater/WasteWaterIndex.vue index 0e8c77a..d5c3167 100644 --- a/src/components/base-page/WasteWater/WasteWaterIndex.vue +++ b/src/components/base-page/WasteWater/WasteWaterIndex.vue @@ -84,26 +84,26 @@ display: flex; align-items: center; justify-content: space-between; - padding: 5px 0; + padding-left: 0.07rem; border-bottom: 1px #243a55 solid; - .navigation-left { display: flex; align-items: center; .uncheck { - margin: 0 10px; cursor: pointer; - padding: 5px; + margin-left: -0.05rem; + width: .8rem; + padding: 6px 0; /*border: 1px solid #2b87c8;*/ /*border-radius: 4px;*/ + background-position: 0 0; + background-repeat: no-repeat; + background-size: 100% 100%; + background-image: url("../../../../public/assets/images/map-pages/title_bg.png"); text-align: center; vertical-align: middle !important; color: #fff; - -webkit-transform: skew(30deg); - -moz-transform: skew(30deg); - -o-transform: skew(30deg); - transform: skew(15deg); } .default-uncheck { @@ -113,15 +113,13 @@ } .hover { - background-color: #0e539e; + background-image: url("../../../../public/assets/images/map-pages/title_bg2.png"); color: #ffffff; cursor: pointer; } .hover:hover { cursor: pointer; - padding: 5px; - border: 1px solid #5F9EA0; border-radius: 4px; text-align: center; color: #F0FFFF; @@ -129,7 +127,6 @@ } .navigation-left :hover { - background-color: #0e639e; color: #fff; cursor: pointer; } diff --git a/src/components/base-page/enterprise-emergency/events-reported/EventsReported.vue b/src/components/base-page/enterprise-emergency/events-reported/EventsReported.vue index 85d1972..71adc84 100644 --- a/src/components/base-page/enterprise-emergency/events-reported/EventsReported.vue +++ b/src/components/base-page/enterprise-emergency/events-reported/EventsReported.vue @@ -127,8 +127,8 @@ </el-form-item> </div> <el-form-item class="confirmCancel"> - <el-button type="primary" @click="submitForm('ruleForm')">纭</el-button> - <el-button @click="resetForm('ruleForm')">鍙栨秷</el-button> + <el-button type="primary" size="small" @click="submitForm('ruleForm')">纭</el-button> + <el-button size="small" @click="resetForm('ruleForm')">鍙栨秷</el-button> </el-form-item> </el-form> <el-dialog diff --git a/src/components/base-page/enterprise-emergency/events-reported/ReportLocationPoint.vue b/src/components/base-page/enterprise-emergency/events-reported/ReportLocationPoint.vue index 96388b5..58c1bc9 100644 --- a/src/components/base-page/enterprise-emergency/events-reported/ReportLocationPoint.vue +++ b/src/components/base-page/enterprise-emergency/events-reported/ReportLocationPoint.vue @@ -3,28 +3,42 @@ <el-row class="place-box"> <div class="place-left"> <el-form :model="LongLatPos" label-width="90px"> - <el-form-item label="缁忓害:"> - <el-input v-model="LongLatPos.longPos"></el-input> - </el-form-item> - <el-form-item label="绾害:"> - <el-input v-model="LongLatPos.latPos"></el-input> - </el-form-item> + <el-row style="display: flex;align-items: center"> + <el-form-item label="缁忓害:" style="display: inline-block"> + <el-col :span="20"> + <el-input v-model="LongLatPos.longPos"></el-input> + </el-col> + </el-form-item> + <el-col :span="4"> + <el-button type="primary" size="small" @click="mapPoints">鐐瑰嚮瀹氫綅</el-button> + </el-col> + </el-row> + <el-row style="display: flex;align-items: center"> + <el-form-item label="绾害:"> + <el-col :span="20"> + <el-input v-model="LongLatPos.latPos"></el-input> + </el-col> + </el-form-item> + <el-col :span="4"> + <el-button type="primary" size="small" @click="dataPoints">鏁版嵁瀹氫綅</el-button> + </el-col> + </el-row> </el-form> </div> - <div class="place-right"> - <el-button type="primary" size="small" @click="mapPoints">鐐瑰嚮瀹氫綅</el-button> - <el-button type="primary" size="small" @click="dataPoints">鏁版嵁瀹氫綅</el-button> - </div> + <!-- <div class="place-right">--> + <!-- <el-button type="primary" size="small" @click="mapPoints">鐐瑰嚮瀹氫綅</el-button>--> + <!-- <el-button type="primary" size="small" @click="dataPoints">鏁版嵁瀹氫綅</el-button>--> + <!-- </div>--> </el-row> <div class="place-bottom" style="text-align: right;margin: 5px"> - <el-button type="primary" @click="confirm">纭</el-button> + <el-button type="primary" @click="confirm" size="small">纭</el-button> </div> </div> </template> <script> import { pulseEffect } from '../../../../utils/utils' -import iconUrl from '../../../../../public/assets/images/map/loc.png' +import iconUrl from '../../../../../public/assets/images/map/marker-icon.png' import eventBus from '../../../../eventBus' export default { @@ -52,7 +66,7 @@ this.marker = window.L.marker(as, { icon: window.L.icon({ iconUrl: iconUrl, - iconSize: [30, 30], + iconSize: [25, 45], iconAnchor: [15, 15] }) }) diff --git a/src/components/base-page/enterprise-emergency/events-reported/ReportLocationSearch.vue b/src/components/base-page/enterprise-emergency/events-reported/ReportLocationSearch.vue index 709627b..fbd79d3 100644 --- a/src/components/base-page/enterprise-emergency/events-reported/ReportLocationSearch.vue +++ b/src/components/base-page/enterprise-emergency/events-reported/ReportLocationSearch.vue @@ -3,23 +3,45 @@ <el-row> <el-input type="text" v-model="clickLocation" clearable @change="focusLocation"></el-input> </el-row> - <el-scrollbar style="height:86.22px"> - <el-row v-for="(item,index) in searchList" :key="index" style="display: flex;align-items: center"> - <el-col :span="12"> - <span>{{ item.name }}</span> - </el-col> - <el-col :span="12"> - <el-button type="primary" size="mini" icon="el-icon-position" @click="locationMapClick(item)">瀹氫綅 - </el-button> - </el-col> - <!-- <el-pagination--> - <!-- layout="prev, pager, next"--> - <!-- :total="50">--> - <!-- </el-pagination>--> - </el-row> - </el-scrollbar> + <!-- <el-scrollbar style="height:250.34px">--> + <el-row v-for="(item,index) in searchList.slice((currentPage-1)*pageSize,currentPage*pageSize)" :key="index" + style="display: flex;align-items: center;margin: 0.1343rem 15px;text-align: left" + class="environmental-risk-list"> + <el-col :span="4"> + <img src="../../../../../public/assets/images/map/marker-icon.png" alt="" class="state" + style="background: none;margin: 0 15px"> + </el-col> + <el-col :span="12"> + <div class=search-list> + <!-- <h4 :class="activeNum===index?'hover':''" @click="handleLocation(index)">鍚嶇О锛�<h3 style="display: inline-block">{{ item.name }}</h3></h4>--> + <h3 :class="activeNum===index?'hover':''" @click="handleLocation(index)">鍚嶇О锛歿{ item.name }}</h3> + <p style="text-overflow: ellipsis;white-space: nowrap;overflow: hidden">鍦板潃锛�<span>{{ item.address }}</span> + <p>鐢佃瘽锛�<span>{{ item.phone }}</span></p> + </div> + </el-col> + <el-col :span="8" style="text-align: right"> + <el-button type="primary" size="mini" icon="el-icon-position" @click="locationMapClick(item,index)"> + 瀹氫綅 + </el-button> + </el-col> + </el-row> + <!-- </el-scrollbar>--> + <!-- <el-card class="footer-page" >--> + <div v-if="total > 10"> + <el-pagination + small + @current-change="handlePage" + :page-size=pageSize + :current-page.sync="currentPage" + layout="prev, pager, next" + :total=total + class="warnPagination" + > + </el-pagination> + </div> + <!-- </el-card>--> <el-row style="text-align: right"> - <el-button type="primary" @click="confirm">纭</el-button> + <el-button type="primary" size="small" @click="confirm">纭</el-button> </el-row> </div> </template> @@ -29,24 +51,34 @@ import { reportLocationSearch } from '../../../../api/request' import { pulseEffect } from '../../../../utils/utils' import eventBus from '../../../../eventBus' -import iconUrl from '../../../../../public/assets/images/map/loc.png' +import iconUrl from '../../../../../public/assets/images/map/marker-icon.png' export default { name: 'ReportLocationSearch', data () { return { + activeNum: -1, // 鐐瑰嚮瀹氫綅缁戝畾鏁版嵁 clickLocation: '', searchList: [], - marker: null + marker: null, + total: 0, + // 鍒嗛〉 榛樿灞曠ず + currentPage: 1, + // 鍒嗛〉 姣忛〉澶氬皯鏁版嵁 + pageSize: 3 } }, methods: { + handlePage (currentPage) { + // this.focusLocation() + this.currentPage = currentPage + }, + handleLocation (index) { + this.activeNum = index + }, // 鎼滅储瀹氫綅 focusLocation () { - // console.log(this.clickLocation) - // console.log(window.map.getZoom()) - // console.log(window.map.getBounds()) const getBoundsData = '' + window.map.getBounds()._southWest.lng + ',' + window.map.getBounds()._southWest.lat + ',' + window.map.getBounds()._northEast.lng + ',' + window.map.getBounds()._northEast.lat const data = { postStr: { @@ -60,45 +92,33 @@ }, type: 'query' } - // console.log(data) reportLocationSearch(data).then(res => { - // console.log(res) + console.log(res) this.searchList = res.pois - // console.log(this.searchList) - // const as = res.pois[0].lonlat.trim().split(' ') - // window.map.setView([as[1], as[0]], 17) - // pulseEffect([as[1], as[0]]) - // for (let i = 0; i < res.pois.length; i++) { - // const as = res.pois[i].lonlat.trim().split(' ') - // if (res.pois[i].name.indexOf(this.clickLocation) >= 0) { - // window.map.setView([as[1], as[0]], 17) - // pulseEffect([as[1], as[0]]) - // } - // } + this.total = res.pois.length }) - this.clickLocation = '' }, // 鐐瑰嚮瀹氫綅 - locationMapClick (val) { - console.log(val) + locationMapClick (val, index) { + this.activeNum = index + // console.log(val) const ps = val.lonlat.trim().split(' ') - // const htmls = '<div><ul><li>' + val.name + '</li> + <li>' + val.adress + '</li></ul></div>' + // const htmls = '<div><ul><li>' + val.name + '</li></ul></div>' // var myIcon = window.L.divIcon({ // html: htmls, // className: 'company-bindTooltip', // iconSize: 16 // }) - const htmls = '<div><ul><li>' + val.name + '</li> <br/> <li>' + val.address + '</li> <br/> <li>' + val.phone + '</li></ul></div>' this.marker = window.L.marker([ps[1], ps[0]], { icon: window.L.icon({ iconUrl: iconUrl, - iconSize: [30, 30], + iconSize: [25, 40], iconAnchor: [15, 15] }) // icon: myIcon }) - .bindTooltip(htmls, { - // permanent: 'true', + .bindTooltip(val.name, { + permanent: 'true', direction: 'bottom', offset: [0, 10], sticky: true, @@ -127,8 +147,27 @@ /* height: 10px;*/ /* max-height: 10px;*/ /*}*/ - .div-list-search { + .environmental-risk-list { + color: @color; + border-bottom: 1px solid rgba(0, 255, 246, 0.14); + h3 { + font-size: 0.1rem; + } + } + + /*<!--.environmental-risk-list:hover {-->*/ + /*<!-- color: @color-highlight;-->*/ + /*<!-- background: @background-color;-->*/ + /*<!--}-->*/ + .search-list { + h3:hover { + color: @color-highlight; + } + } + + .hover { + color: @color-highlight; } .click-location { @@ -144,4 +183,53 @@ margin: 15px auto; } } + + /deep/ + .warnPagination { + .btn-quicknext, .btn-quickprev { + color: #e4e8f1 !important; + background-color: transparent; + // border: 1px solid #25AECD; + border-left: 1px solid #25AECD; + border-bottom: 1px solid #25AECD; + border-top: 1px solid #25AECD; + color: #e4e8f1; + } + + .el-pager li { + color: #e4e8f1; + background: transparent; + // border: 1px solid #25AECD; + border-left: 1px solid #25AECD; + border-bottom: 1px solid #25AECD; + border-top: 1px solid #25AECD; + } + + .el-pager li.active { + border-color: #25AECD; + background-color: rgba(38, 222, 253, 0.3); + color: #e4e8f1; + } + + .el-pager li:hover { + border-color: #25AECD; + background-color: rgba(38, 222, 253, 0.3); + color: #34e0ff; + } + + .btn-prev { + background-color: transparent; + // border: 1px solid #25AECD; + border-left: 1px solid #25AECD; + border-bottom: 1px solid #25AECD; + border-top: 1px solid #25AECD; + color: #e4e8f1; + } + + .btn-next { + background-color: transparent; + border: 1px solid #25AECD; + color: #e4e8f1; + } + } </style> diff --git a/src/components/base-page/enterprise-emergency/events-reported/ReportLocationSection.vue b/src/components/base-page/enterprise-emergency/events-reported/ReportLocationSection.vue index b7e9d69..3e9cbff 100644 --- a/src/components/base-page/enterprise-emergency/events-reported/ReportLocationSection.vue +++ b/src/components/base-page/enterprise-emergency/events-reported/ReportLocationSection.vue @@ -1,6 +1,6 @@ <template> <div class="ReportLocationSection"> - <el-form :model="form" label-width="90px"> + <el-form :model="form" label-width="120px"> <el-row class="pipe-line-search"> <el-col :span="12"> <el-form-item label="绠$嚎鍚嶇О:"> @@ -17,14 +17,21 @@ </el-col> </el-row> <el-row> - <el-col :span="12"> + <el-col :span="24"> <el-form-item label="绠℃缂栫爜:"> <el-input v-model="form.sectionName" disabled></el-input> </el-form-item> </el-col> + </el-row> + <el-row> <el-col :span="12"> - <el-form-item label="闄勫睘璁炬柦:"> + <el-form-item label="闄勫睘璁炬柦鍚嶇О:"> <el-input v-model="form.affiliatedFacilities" disabled></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="闄勫睘璁炬柦缂栫爜:"> + <el-input v-model="form.affiliatedFacilitiesCode" disabled></el-input> </el-form-item> </el-col> </el-row> @@ -141,7 +148,7 @@ </el-card> </div> <el-row style="text-align: right;margin: 10px"> - <el-button type="primary" @click="confirm">纭</el-button> + <el-button type="primary" @click="confirm" size="small">纭</el-button> </el-row> </div> </template> @@ -160,7 +167,8 @@ form: { pipeName: '', sectionName: '', - affiliatedFacilities: '' + affiliatedFacilities: '', + affiliatedFacilitiesCode: '' }, // 绠$嚎鏌ヨ鏁版嵁鍒楄〃 tableList: [], @@ -196,57 +204,72 @@ this.tableList = res.features } this.wfsHelper = new WfsHelper() - this.form.pipeName = '' + // this.form.pipeName = '' this.form.sectionName = '' this.form.affiliatedFacilities = '' + this.form.affiliatedFacilitiesCode = '' }, // 鐐瑰嚮绠$嚎鍒楄〃 灞曠ず绠℃鍐呭 鍜岄檮灞炶鏂藉唴瀹� - async sectionShowClick (val) { - console.log(val) - // 濡傛灉 SectionAndAffFacTableJudge === true 鏄悳绱㈡暟鎹粨鏋滅殑鍒楄〃 鍙互杩涜 绠℃ 闄勫睘璁炬柦浜や簰 鐐瑰嚮瀹氫綅鏌ヨ缁撴灉 涓嶈繘琛岀偣鍑讳氦浜� + sectionShowClick (val) { + // console.log(val) + // this.SectionAndAffFacTableJudge = true if (this.SectionAndAffFacTableJudge === true) { - // 绠℃鏌ヨ - const sectionNameSearch = val.properties.pipename - this.tableListSection = [] - this.wfsHelper.clearFilter() - this.wfsHelper.setTypeName(['sewer:pipesegment']) - this.wfsHelper.addLike('pipename', sectionNameSearch) - this.wfsHelper.addEquals('pipename', '\'' + sectionNameSearch + '\'') - const res = await AjaxUtils.GetDataAsynByUrl(this.wfsHelper.getUrl(), {}) - // console.log(res) - if (res instanceof Object && Object.prototype.hasOwnProperty.call(res, 'features')) { - this.tableListSection = res.features - } - this.wfsHelper = new WfsHelper() - // 闄勫睘璁炬柦鏌ヨ - this.tableDataAffFac = [] - const AffFacSearch = val.properties.pipecode - console.log(AffFacSearch) - this.wfsHelper.clearFilter() - this.wfsHelper.setTypeName(['sewer:view_pipeline']) - this.wfsHelper.addLike('pipecode', AffFacSearch) - // this.wfsHelper.addEquals('type', '\'' + AffFacSearch + '\'') - const resAffFac = await AjaxUtils.GetDataAsynByUrl(this.wfsHelper.getUrl(), {}) - console.log(resAffFac) - if (resAffFac instanceof Object && Object.prototype.hasOwnProperty.call(resAffFac, 'features')) { - // for (let i = 0; i < resAffFac.features.length; i++) { - // // console.log(resAffFac.features[i]) - // this.tableDataAffFac.push(resAffFac.features[i].properties) - // } - this.tableDataAffFac = resAffFac.features - } - this.wfsHelper = new WfsHelper() + this.searchSection(val) + this.searchAffFacData(val) + } + }, + // 绠℃鏌ヨ + async searchSection (val) { + const sectionNameSearch = val.properties.pipename + this.tableListSection = [] + this.wfsHelper.clearFilter() + this.wfsHelper.setTypeName(['sewer:pipesegment']) + this.wfsHelper.addLike('pipename', sectionNameSearch) + this.wfsHelper.addEquals('pipename', '\'' + sectionNameSearch + '\'') + const res = await AjaxUtils.GetDataAsynByUrl(this.wfsHelper.getUrl(), {}) + // console.log(res) + if (res instanceof Object && Object.prototype.hasOwnProperty.call(res, 'features')) { + this.tableListSection = res.features + } + }, + // 闄勫睘璁炬柦鏌ヨ + async searchAffFacData (val) { + this.tableDataAffFac = [] + const AffFacSearch = val.properties.pipecode + this.wfsHelper.clearFilter() + this.wfsHelper.setTypeName(['sewer:view_pipeline']) + this.wfsHelper.addLike('pipecode', AffFacSearch) + // this.wfsHelper.addEquals('type', '\'' + AffFacSearch + '\'') + const resAffFac = await AjaxUtils.GetDataAsynByUrl(this.wfsHelper.getUrl(), {}) + console.log(resAffFac) + if (resAffFac instanceof Object && Object.prototype.hasOwnProperty.call(resAffFac, 'features')) { + this.tableDataAffFac = resAffFac.features + } + }, + // 鎼滅储鐨勫叕鍏辨柟娉曚紭鍖� + async publicSearch (searchVal, searchKeyword, searchTypeName, tableListData) { + tableListData = [] + this.wfsHelper = new WfsHelper() + this.wfsHelper.clearFilter() + this.wfsHelper.setTypeName(searchTypeName) + this.wfsHelper.addLike(searchKeyword, searchVal) + this.wfsHelper.addEquals(searchKeyword, '\'' + searchVal + '\'') + const res = await AjaxUtils.GetDataAsynByUrl(this.wfsHelper.getUrl(), {}) + // console.log(res) + if (res instanceof Object && Object.prototype.hasOwnProperty.call(res, 'features')) { + tableListData = res.features } }, // 鐐瑰嚮绠℃鍒楄〃 绠℃缂栫爜浼犻�� sectionCode (val) { // console.log(val) - this.form.sectionName = val.properties.pipecode + this.form.sectionName = val.properties.pipesegcode }, // 鐐瑰嚮闄勫睘璁炬柦鍒楄〃 绠℃缂栫爜浼犻�� affFacName (val) { - // console.log(val) + console.log(val) this.form.affiliatedFacilities = val.properties.name + this.form.affiliatedFacilitiesCode = val.properties.code }, // 瀹氫綅鍔熻兘 localAdr (val) { @@ -258,23 +281,27 @@ pipeClickLocation () { // 璁炬柦涓嶈繘琛� 绠$嚎琛ㄦ牸鏁版嵁鐨勭偣鍑讳氦浜� this.SectionAndAffFacTableJudge = false - // 鐐瑰嚮鑾峰彇鏁版嵁 - window.map.on('click', (e) => { - // 鐐瑰嚮鍦板浘鍏抽棴寮规 - window.mapManager.clickDialogSwitch = false - // 绠$嚎鐐瑰嚮鏁版嵁 - this.pipeData(e) - // 绠℃鐐瑰嚮鏁版嵁 - this.sectionData(e) - // 闄勫睘璁炬柦鏁版嵁 - this.affFacData(e) - // 鍏抽棴鐐瑰嚮浜嬩欢 - window.map.off('click') - }) + if (this.SectionAndAffFacTableJudge === false) { + // 鐐瑰嚮鑾峰彇鏁版嵁 + window.map.on('click', (e) => { + this.SectionAndAffFacTableJudge = false + // 鐐瑰嚮鍦板浘鍏抽棴寮规 + window.mapManager.clickDialogSwitch = false + // 绠$嚎鐐瑰嚮鏁版嵁 + this.pipeData(e) + // 绠℃鐐瑰嚮鏁版嵁 + this.sectionData(e) + // 闄勫睘璁炬柦鏁版嵁 + this.affFacData(e) + // 鍏抽棴鐐瑰嚮浜嬩欢 + window.map.off('click') + }) + } // 鏁版嵁 閲嶆柊鑾峰彇 杩涜缃┖ this.form.pipeName = '' this.form.sectionName = '' this.form.affiliatedFacilities = '' + this.form.affiliatedFacilitiesCode = '' this.tableList = [] this.tableListSection = [] this.tableDataAffFac = [] @@ -317,7 +344,7 @@ BBOX: window.map.getBounds().toBBoxString() }, defaultWmsParams) AjaxUtils.get4JsonDataByUrl(WMS_URL, wmsParams, (res) => { - console.log(res) + // console.log(res) for (let i = 0; i < res.data.features.length; i++) { dataList.push(res.data.features[i]) } diff --git a/src/components/helpers/MapManager.js b/src/components/helpers/MapManager.js index eae4b26..c3ec889 100644 --- a/src/components/helpers/MapManager.js +++ b/src/components/helpers/MapManager.js @@ -44,7 +44,7 @@ var point = this.map.latLngToContainerPoint(latlng, this.map.getZoom()) const wmsLayerService = window.layerFactory.wmsLayerService const layers = wmsLayerService.wmsLayerList.getLayers() - // const filters = wmsLayerService.wmsLayerList.getFilters() + const filters = wmsLayerService.wmsLayerList.getFilters() const wmsParams = Object.assign({ LAYERS: layers, QUERY_LAYERS: layers, @@ -54,6 +54,9 @@ Y: Math.round(point.y), BBOX: this.map.getBounds().toBBoxString() }, this.defaultWmsParams, params) + if (filters) { + wmsParams.CQL_FILTER = filters + } AjaxUtils.get4JsonDataByUrl(WMS_URL, wmsParams, (res) => { resolve(res.data) }) diff --git a/src/components/panel/RightSearchPanel.vue b/src/components/panel/RightSearchPanel.vue index 6df7286..e0b822c 100644 --- a/src/components/panel/RightSearchPanel.vue +++ b/src/components/panel/RightSearchPanel.vue @@ -12,7 +12,7 @@ </div> </li> </ul> --> - <ul v-for="item in topicList" :key="item.name" + <ul v-for="item in list" :key="item.name" :class="item.checked?'module-wrap map-btn-active':'module-wrap map-btn-unactive'" @click="()=>{selected(item)}" v-show="item.isShow"> <el-tooltip :popper-class="'map-tooltip'" effect="dark" :content="item.name" placement="left"> @@ -51,7 +51,7 @@ <script> import EnvRiskSearch from './topicSearch/EnvRiskSearch' import DischargeSearch from './topicSearch/DischargeSearch' -import { TopicList } from '../../conf/Topic' +import { topicList } from '../../conf/Topic' import GasWasteSearch from '@components/panel/topicSearch/GasWasteSearch' import WaterWasteSearch from '@components/panel/topicSearch/WaterWasteSearch' @@ -61,8 +61,6 @@ import PipeChangesSearch from '@components/panel/topicSearch/pipeChangesSearch.vue' import PipeInformationSearch from '@components/panel/topicSearch/pipeInformationSearch.vue' import EnterpriseEmergencySearch from './topicSearch/EnterpriseEmergencySearch' - -import bus from '@/eventBus' export default { name: 'MonitorPanel', @@ -78,7 +76,7 @@ return { isShow: true, topicMenu: [], - topicList: TopicList, + list: topicList, topicCheckedList: [], isPanelVisible: false, gcComp: SewersSearch, @@ -91,7 +89,11 @@ selectGroup: false } }, - computed: {}, + computed: { + serviceLayers () { + return this.$store.state.map.serviceLayers.LayerSewersLine + } + }, /* watch: { '$store.state.map.topic.topicCheckedList': function (newVal, oldVal) { console.log(oldVal) @@ -106,26 +108,46 @@ }) }) } - }, + }, */ methods: { handleClose (done) { console.log(done) }, setSearchPanelChange () { + // 鎼滅储闈㈡澘娌℃湁鏄剧ず鏃讹紝灏嗘墍鏈変富棰橀�夋嫨鐘舵�佽缃负false this.selectGroup = !this.selectGroup if (!this.selectGroup) { - this.topicList.forEach((itm) => { + this.list.forEach((itm) => { itm.checked = false }) } }, + unselected (val) { + // console.log(val) + this.selectGroup = true + this.list.forEach((itm) => { + if (itm.name === val.name) { + console.log(val.name) + itm.checked = false + itm.isShow = false + } + }) + }, selected (val) { // console.log(val) - this.title = val.name this.selectGroup = true - this.topicList.forEach((itm) => { - itm.checked = val.name === itm.name + this.list.forEach((itm) => { + if (itm.name === val.name) { + itm.isShow = true + itm.checked = true + } else { + itm.checked = false + } }) + this.setComp(val) + }, + setComp (val) { + this.title = val.name switch (val.name) { case '姹℃煋婧�': this.gcComp = DischargeSearch @@ -160,9 +182,6 @@ } }, handlePage (page) { - }, - handleGd () { - this.title = '绠¢亾淇℃伅鏌ヨ' }, toggleMonitorPanel () { this.isCollapse = !this.isCollapse @@ -204,37 +223,60 @@ // }) // } }, - defaultLastOne () { - let v = {} - this.topicList.forEach((item) => { - if (item.isShow) { - v = item + containsLayer (layer) { + if (layer) { + for (let i = 0; i < layer.length; i++) { + const lay = layer[i] + const checked = lay.checked + + for (let j = 0; j < this.list.length; j++) { + const topic = this.list[j] + if (lay.name === topic.name) { + if (lay.layers) { + const isChecked = this.isChecked(lay.layers) + if (isChecked) { + this.selected(topic) + } else { + this.unselected(topic) + } + } else if (checked) { + this.selected(topic) + } + break + } + } + this.containsLayer(lay.layers) } - }) - this.selected(v) + } + }, + isChecked (layers) { + for (let i = 0; i < layers.length; i++) { + const layer = layers[i] + const checked = layer.checked + if (checked) { + return true + } + if (layer.layers) { + return this.isChecked(layer.layers) + } + } + return false } }, mounted () { - const that = this - bus.$on('changeSearchBar', function (obj) { - that.gcComp = '' - that.topicList.forEach((item) => { - if (item.name === obj.name) { - if (obj.type > 0) { - item.isShow = true - } else { - item.isShow = false - } - // item.isShow = obj.checked - if (item.isShow) { - that.selected(item) - } else { - that.defaultLastOne() - } - } - }) - }) - // console.log(that.topicList) + /* bus.$on('changeSearchBar', (obj) => { + const topic = this.search(this.serviceLayers, obj) + console.log('====' + JSON.stringify(topic)) + }) */ + }, + watch: { + serviceLayers: { + handler: function (newVal, oldVal) { + this.containsLayer(newVal) + }, + immediate: true, + deep: true + } } } </script> diff --git a/src/components/panel/topicSearch/enterprise-emergency/EventQuery.vue b/src/components/panel/topicSearch/enterprise-emergency/EventQuery.vue index 860f6e1..c1b30ae 100644 --- a/src/components/panel/topicSearch/enterprise-emergency/EventQuery.vue +++ b/src/components/panel/topicSearch/enterprise-emergency/EventQuery.vue @@ -66,7 +66,7 @@ <i class="state"></i> <div> <h3> - <span @click="disposalfx">浠跺悕绉�:XXX浜嬩欢</span> + <span @click="disposalfx">浜嬩欢鍚嶇О:XXX浜嬩欢</span> <el-button class="rt btn00fff6" size="mini" style="margin-right: 0.04rem;" @click="startAnalysis"> <span>寮�濮嬪垎鏋�</span> diff --git a/src/components/table/components/tabHandover.vue b/src/components/table/components/tabHandover.vue index 43896f1..c3e087a 100644 --- a/src/components/table/components/tabHandover.vue +++ b/src/components/table/components/tabHandover.vue @@ -19,8 +19,7 @@ import EnvironmentalRisk from '@components/table/components/EnvironmentalRisk' import Pipeline from '@components/table/components/Pipeline' import CorporateEmergency from '@components/table/components/CorporateEmergency' - -import { TopicList } from '../../../conf/Topic' +import { topicList } from '../../../conf/Topic' export default { name: 'tabHandover', components: { @@ -37,8 +36,8 @@ return { titleProp: '', activeName: '姹℃煋婧�', - topicList: TopicList, // tab椤� - gcComp: PollutionSource // 榛樿鏄剧ず姹℃煋婧愬唴瀹� + topicList: topicList, // tab椤� + gcComp: PollutionSource } }, methods: { diff --git a/src/conf/Constants.js b/src/conf/Constants.js index 55b36c0..af7e312 100644 --- a/src/conf/Constants.js +++ b/src/conf/Constants.js @@ -65,7 +65,8 @@ emergencyesources: '搴旀�ョ墿璧�', firefightingunit: '娑堥槻鍗曚綅', unitareaboundary: '瑁呯疆鍖鸿竟鐣�', - sensitivetarget: '鏁忔劅鐩爣' + sensitivetarget: '鏁忔劅鐩爣', + chokevalve: '鎴祦闂�' } export const LAYERPROPS = { @@ -92,6 +93,7 @@ name: '绠$綉鍚嶇О', linenumtype: '绠$嚎绫诲瀷', pipename: '绠$嚎鍚嶇О', + subchaname: '鏀嚎鍚嶇О', mediumtype: '杈撻�佷粙璐�', length: '闀垮害(m)', startposname: '璧风偣浣嶇疆鍚嶇О', @@ -414,5 +416,18 @@ huncount: '甯歌浜哄彛鏁伴噺', structureoridsitearea: '鍗犲湴闈㈢Н', adminzonename: '琛屾斂闅跺睘' + }, + // 鎴祦闂� + chokevalve: { + closurename: '鍚嶇О', + closurecode: '缂栫爜', + pointnumber: '娴嬬偣缂栧彿', + mediumtype: '浠嬭川', + size: '灏哄(m)', + operatingtype: '鎺у埗鏂瑰紡', + telephone: '鑱旂郴鐢佃瘽', + resperson: '璐熻矗浜�', + startdate: '鎶曠敤鏃ユ湡', + operationalstatus: '杩愯鐘舵��' } } diff --git a/src/conf/Topic.js b/src/conf/Topic.js index ff80c53..7f566af 100644 --- a/src/conf/Topic.js +++ b/src/conf/Topic.js @@ -12,10 +12,10 @@ EnterpriseEmergencySearch: () => import('@components/panel/topicSearch/EnterpriseEmergencySearch.vue') } -export const TopicList = [{ +export const topicList = [{ name: '姹℃煋婧�', id: 1, - check: false, + checked: false, isShow: false, icon: 'iconwuranyuan', comp: '' diff --git a/src/views/popup/DynamicHeader/DynamicTable.vue b/src/views/popup/DynamicHeader/DynamicTable.vue new file mode 100644 index 0000000..a115ba1 --- /dev/null +++ b/src/views/popup/DynamicHeader/DynamicTable.vue @@ -0,0 +1,43 @@ +<template> + <el-table :data="tableData" border :height="height"> + <template v-for="item in tableHeader"> + <table-column v-if="item.children && item.children.length" :key="item.id" :coloumn-header="item"></table-column> + <el-table-column v-else :key="item.id" :label="item.label" :prop="item.prop" align="center"></el-table-column> + </template> + </el-table> +</template> + +<script> +import TableColumn from './TableColumn' +export default { + props: { + // 琛ㄦ牸鐨勬暟鎹� + tableData: { + type: Array, + required: true + }, + // 澶氱骇琛ㄥご鐨勬暟鎹� + tableHeader: { + type: Array, + required: true + }, + // 琛ㄦ牸鐨勯珮搴� + height: { + type: String, + default: '340' + } + }, + components: { + TableColumn + }, + watch: { + tableData (val, oldVal) { + this.tableData = val + } + } +} +</script> + +<style scoped> + +</style> diff --git a/src/views/popup/DynamicHeader/TableColumn.vue b/src/views/popup/DynamicHeader/TableColumn.vue new file mode 100644 index 0000000..be2ea78 --- /dev/null +++ b/src/views/popup/DynamicHeader/TableColumn.vue @@ -0,0 +1,24 @@ +<template> + <el-table-column :label="coloumnHeader.label" :prop="coloumnHeader.label" align="center"> + <template v-for="item in coloumnHeader.children"> + <tableColumn v-if="item.children && item.children.length" :key="item.id" :coloumn-header="item"></tableColumn> + <el-table-column v-else :key="item.name" :label="item.label" :prop="item.prop" align="center"></el-table-column> + </template> + </el-table-column> +</template> + +<script> +export default { + name: 'tableColumn', + props: { + coloumnHeader: { + type: Object, + required: true + } + } +} +</script> + +<style scoped> + +</style> -- Gitblit v1.8.0