From 1f0e9a20cd76e21538b4ca77a3ed7ce2a979de90 Mon Sep 17 00:00:00 2001 From: 徐旺旺 <11530253@qq.com> Date: 星期日, 30 五月 2021 10:46:39 +0800 Subject: [PATCH] 上周忘记提交 --- src/components/panel/RightSearchPanel.vue | 124 ++++++++++++++++++++---------- src/conf/Topic.js | 4 src/components/table/components/tabHandover.vue | 4 src/conf/Constants.js | 17 ++++ src/components/helpers/MapManager.js | 5 + src/components/LayerController/modules/LcServiceLayer.vue | 85 +++++++++----------- 6 files changed, 145 insertions(+), 94 deletions(-) diff --git a/src/components/LayerController/modules/LcServiceLayer.vue b/src/components/LayerController/modules/LcServiceLayer.vue index ef7dc4d..866eb17 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" @@ -68,50 +68,8 @@ } else { this.toggleLayer(item) } - this.serviceLayers.forEach(function (item1, index1) { - if (item1.layers) { - item1.istrue = 0 - item1.isfalse = 0 - item1.layers.forEach(function (item2, index2) { - if (item2.layers) { - item2.istrue = 0 - item2.isfalse = 0 - item2.layers.forEach(function (item3, index3) { - if (item3.checked) { item2.istrue += 1 } else { item2.isfalse += 1 } - }) - // console.log(item2.layers.length, item2.istrue, item2.isfalse, item2.type) - if (item2.istrue === item2.layers.length) { - item2.type = 2 - item2.checked = true - } else if (item2.isfalse === item2.layers.length) { - item2.type = 0 - item2.checked = false - } else { - item2.type = 1 - } - if (item1.name === '涓撻鍥惧眰') { - bus.$emit('changeSearchBar', item2) - // console.log(item2, 'item2') - } - if (item2.checked) { item1.istrue += 1 } else { item1.isfalse += 1 } - } - }) - if (item1.istrue === item1.layers.length) { - item1.type = 2 // 鍏ㄩ�� - item1.checked = true - } else if (item1.isfalse === item1.layers.length) { - item1.type = 0 // 涓嶉�� - item1.checked = false - } else { - item1.type = 1 // 鍗婇�� - } - if (item1.name === '浼佷笟搴旀��') { - console.log(item1) - bus.$emit('changeSearchBar', item1) - } - // console.log(item1.layers.length, item1.istrue, item1.isfalse, item1.type) - } - }) + bus.$emit('changeSearchBar', item) + // console.log(this.serviceLayers) }, swLayers (configs, checked) { @@ -126,6 +84,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 +116,15 @@ } // this.updateWms() } + }, + watch: { + serviceLayers: { + handler: function (val) { + this.setLayerType(val, 0) + }, + immediate: true, + deep: true + } } } </script> 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 b8fa510..4ebfab1 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/table/components/tabHandover.vue b/src/components/table/components/tabHandover.vue index 1665928..e3c7641 100644 --- a/src/components/table/components/tabHandover.vue +++ b/src/components/table/components/tabHandover.vue @@ -17,7 +17,7 @@ import SolidWaste from '@components/table/components/WasteSolid' import AirQuality from '@components/table/components/AirQuality' -import { TopicList } from '../../../conf/Topic' +import { topicList } from '../../../conf/Topic' export default { name: 'tabHandover', @@ -32,7 +32,7 @@ return { titleProp: '', activeName: 'gcComp', - topicList: TopicList, + topicList: topicList, gcComp: AirQuality } }, diff --git a/src/conf/Constants.js b/src/conf/Constants.js index 5f41f64..412b059 100644 --- a/src/conf/Constants.js +++ b/src/conf/Constants.js @@ -61,7 +61,8 @@ emergencyesources: '搴旀�ョ墿璧�', firefightingunit: '娑堥槻鍗曚綅', unitareaboundary: '瑁呯疆鍖鸿竟鐣�', - sensitivetarget: '鏁忔劅鐩爣' + sensitivetarget: '鏁忔劅鐩爣', + chokevalve: '鎴祦闂�' } export const LAYERPROPS = { @@ -88,6 +89,7 @@ name: '绠$綉鍚嶇О', linenumtype: '绠$嚎绫诲瀷', pipename: '绠$嚎鍚嶇О', + subchaname: '鏀嚎鍚嶇О', mediumtype: '杈撻�佷粙璐�', length: '闀垮害(m)', startposname: '璧风偣浣嶇疆鍚嶇О', @@ -410,5 +412,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 8e4e0d7..8e77a2a 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: '' -- Gitblit v1.8.0