From 9cd476f875b661eca3eb5c4908ce0e744f48cbfe Mon Sep 17 00:00:00 2001
From: wangrui <zephyrs0894@163.com>
Date: 星期四, 24 十二月 2020 17:36:01 +0800
Subject: [PATCH] 配置过滤条件
---
src/store/index.js | 21 ++-
src/components/LayerController/modules/LcServiceLayerFilter.vue | 106 +++++++++++++++++
src/conf/MapConfig.js | 139 +++++++++++++++-------
src/views/MapTemplate.vue | 13 +
src/components/LayerController/modules/LcServiceLayer.vue | 36 ++++-
5 files changed, 251 insertions(+), 64 deletions(-)
diff --git a/src/components/LayerController/modules/LcServiceLayer.vue b/src/components/LayerController/modules/LcServiceLayer.vue
index d855b87..9f7892f 100644
--- a/src/components/LayerController/modules/LcServiceLayer.vue
+++ b/src/components/LayerController/modules/LcServiceLayer.vue
@@ -8,9 +8,9 @@
</div>
<div class="wms-panel">
<div v-for="item in serviceWmsLayerList" :key="item.code" class="layerbox">
- <div><input type="checkbox" name="wmsLayer" :value="item.code" @change="swAllLayers"/>{{item.name}}</div>
+ <div><input type="checkbox" :name="'wmsLayer_'+item.code" :checked="item.inLegend" :value="item.code" @change="swAllLayers(item)"/>{{item.name}} <span @click="swFilter(item)" class="btn-filter">杩囨护</span></div>
<div class="layerbox-item">
- <div class="basemap-layer-item" v-for="itm in item.layers" :key="itm.code"><input type="checkbox" name="wmsSublayers" :value="item.code" @change="swAllLayers"/>{{itm.sname}}</div>
+ <div class="basemap-layer-item" v-for="itm in item.layers" :key="itm.code"><input type="checkbox" :name="'wmsSublayers_'+item.code+'_'+itm.code" :checked="itm.checked" :value="itm.code" @change="swWmsLayer(itm)"/>{{itm.sname}}</div>
</div>
</div>
</div>
@@ -35,16 +35,21 @@
...mapState({
serviceLayerHelper: (state) => {
return state.serviceLayerHelper;
- },
+ }
}),
},
mounted() {
// console.log('03姝ラ锛�', this.helper)
},
methods: {
- ...mapMutations([]),
- swAllLayers(){
-
+ ...mapMutations(['setSelectedServiceLayer','toggleServiceLayerFilter']),
+ swAllLayers(item){
+ // eslint-disable-next-line no-debugger
+ item.inLegend = !item.inLegend
+ for(let i = 0, len = item.layers.length; i < len; ++i){
+ item.layers[i].checked = item.inLegend
+ }
+ this.updateWms()
},
swTileLayer(){
console.log('璇ILE鏂规硶鏈疄鐜帮紒')
@@ -52,8 +57,13 @@
swWmtsLayer(){
console.log('璇MTS鏂规硶鏈疄鐜帮紒')
},
- swWmsLayer(){
-
+ swWmsLayer(itm){
+ itm.checked = !itm.checked
+ this.updateWms()
+ },
+ swFilter(item){
+ this.$store.commit('setSelectedServiceLayer', item.code)
+ this.$store.commit('toggleServiceLayerFilter')
},
updateServiceLayerList(){
// eslint-disable-next-line no-debugger
@@ -79,6 +89,9 @@
this.serviceWmsLayerList.push(wmsCfg[i].config)
}
}
+ },
+ updateWms(){
+
}
},
watch: {
@@ -97,6 +110,9 @@
justify-content: center;
align-items: center;
+ .btn-filter{
+ cursor: pointer;
+ }
.wms-panel{
display:flex;
flex-flow: column;
@@ -107,7 +123,9 @@
.layerbox-item{
display:flex;
- flex-flow: row;
+ flex-flow: row wrap;
+ margin-left: 15px;
+ margin-top: 5px;
.basemap-layer-item{
width: 50%;
}
diff --git a/src/components/LayerController/modules/LcServiceLayerFilter.vue b/src/components/LayerController/modules/LcServiceLayerFilter.vue
new file mode 100644
index 0000000..c267079
--- /dev/null
+++ b/src/components/LayerController/modules/LcServiceLayerFilter.vue
@@ -0,0 +1,106 @@
+<template>
+ <div class="inner-panel">
+ <div class="filter-group">
+ <div v-for="item in filterConfig" :key="item.code" class="filter-item">
+ <div class="title"><input type="checkbox" :value="item.code">{{item.name}}</div>
+ <div class="content">
+ <div v-for="filter in item.filters" :key="filter.code">
+ <input type="checkbox" :value="filter.code"><label :title="filter.name">{{filter.sname}}</label>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import { mapState, mapMutations } from "vuex";
+export default {
+ name: "LcServiceLayerFilter",
+ components: {},
+ data() {
+ return {
+ filterConfig: [], // 闄勫睘瑕佺礌
+ };
+ },
+ computed: {
+ ...mapState({
+ serviceLayerHelper: (state) => {
+ return state.serviceLayerHelper
+ },
+ selectedServiceLayer: (state) => {
+ return state.selectedServiceLayer
+ },
+ }),
+ },
+ mounted() {
+
+ },
+ methods: {
+ ...mapMutations([]),
+ getFilterConfig(){
+ return this.filterConfig
+ }
+ },
+ watch: {
+ selectedServiceLayer(newVal){
+ this.filterConfig = this.serviceLayerHelper.getWMSConfig(newVal).filtersGroup
+ }
+ }
+};
+</script>
+
+<style scoped lang="less">
+.inner-panel {
+ color:#90c8e0;
+ font-size: 13px;
+
+ position: absolute;
+ left: 250px;
+ bottom: 10px;
+ z-index: 1000;
+ height: 220px;
+ width: 500px;
+
+ .filter-group{
+ display: flex;
+ flex-flow: row;
+
+ .filter-item{
+ width: 120px;
+ height: 100%;
+ margin-right: 5px;
+
+ .title{
+ height: '25px';
+ background-color: #091331;
+ border: 1px solid #10488c;
+ }
+ .content{
+ background-color: rgba(44,62,80, 0.6);
+ border: 1px solid #10488c;
+ max-height: 200px;
+ overflow-y: auto;
+ }
+
+ ::-webkit-scrollbar{
+ width: 7px;
+ height: 5px !important;
+ }
+ ::-webkit-scrollbar-thumb {
+ /*婊氬姩鏉¢噷闈㈠皬鏂瑰潡*/
+ border-radius: 10px;
+ box-shadow : inset 0 0 5px rgba(0, 0, 0, 0.2);
+ background : #0661AE;
+ border: 1px solid transparent;
+ }
+ ::-webkit-scrollbar-track {
+ /*婊氬姩鏉¢噷闈㈣建閬�*/
+ // box-shadow : inset 0 0 5px rgba(0, 0, 0, 0.2);
+ border-radius: 0px;
+ background : #0E3565;
+ }
+ }
+ }
+}
+</style>
diff --git a/src/conf/MapConfig.js b/src/conf/MapConfig.js
index 1eeab68..f7f7c82 100644
--- a/src/conf/MapConfig.js
+++ b/src/conf/MapConfig.js
@@ -233,60 +233,70 @@
code:'rainline',
name:'闆ㄦ按绾�',
sname:'闆ㄦ按',
+ checked: true, // 榛樿閫変腑鐘舵��
filter:{}
},
{
- code:'rainline',
+ code:'oilline',
name:'鍚补姹℃按绾�',
sname:'鍚补姹℃按',
+ checked: true, // 榛樿閫変腑鐘舵��
filter:{}
},
{
- code:'rainline',
+ code:'saltline',
name:'鍚洂姹℃按绾�',
sname:'鍚洂姹℃按',
+ checked: true, // 榛樿閫変腑鐘舵��
filter:{}
},
{
- code:'rainline',
+ code:'alkaliline',
name:'鍚⒈姹℃按绾�',
sname:'鍚⒈姹℃按',
+ checked: true, // 榛樿閫変腑鐘舵��
filter:{}
},
{
- code:'rainline',
+ code:'outlet',
name:'鎺掑彛',
sname:'鎺掑彛',
+ checked: true, // 榛樿閫変腑鐘舵��
filter:{}
},
{
- code:'rainline',
+ code:'accidentline',
name:'浜嬫晠姘寸嚎',
sname:'浜嬫晠姘�',
+ checked: true, // 榛樿閫変腑鐘舵��
filter:{}
},
{
- code:'rainline',
+ code:'loopline',
name:'寰幆姘寸嚎',
sname:'寰幆姘�',
+ checked: true, // 榛樿閫変腑鐘舵��
filter:{}
},
{
- code:'rainline',
+ code:'purifyline',
name:'鍑�鍖栨按绾�',
sname:'鍑�鍖栨按',
+ checked: true, // 榛樿閫変腑鐘舵��
filter:{}
},
{
- code:'rainline',
+ code:'lifeline',
name:'鐢熸椿姹℃按',
sname:'鐢熸椿姹℃按',
+ checked: true, // 榛樿閫変腑鐘舵��
filter:{}
},
{
- code:'rainline',
+ code:'areainfo',
name:'鍖哄煙淇℃伅',
sname:'鍖哄煙淇℃伅',
+ checked: true, // 榛樿閫変腑鐘舵��
filter:{}
},
],
@@ -298,49 +308,57 @@
{
code:'鍥涢��',
name:'鍥涢��',
- sname:'',
+ sname:'鍥涢��',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'涓夐��',
name:'涓夐��',
- sname:'',
+ sname:'涓夐��',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'绠℃灦(澧�)',
name:'绠℃灦(澧�)',
- sname:'',
+ sname:'绠℃灦',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'绠″粖(甯�)',
name:'绠″粖(甯�)',
- sname:'',
+ sname:'绠″粖',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'娴佸悜',
name:'娴佸悜',
- sname:'',
+ sname:'娴佸悜',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'绠$綉',
name:'绠$綉',
- sname:'',
+ sname:'绠$綉',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'闃�闂�',
name:'闃�闂�',
- sname:'',
+ sname:'闃�闂�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'寮ご',
name:'寮ご',
- sname:'',
+ sname:'寮ご',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
]
@@ -352,43 +370,50 @@
{
code:'绐ㄤ簳',
name:'绐ㄤ簳',
- sname:'',
+ sname:'绐ㄤ簳',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'闃茬伀鍫�',
name:'闃茬伀鍫�',
- sname:'',
+ sname:'闃茬伀鍫�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'闆ㄧ瀛�',
name:'闆ㄧ瀛�',
- sname:'',
+ sname:'闆ㄧ瀛�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'婧㈡祦鍫�',
name:'婧㈡祦鍫�',
- sname:'',
+ sname:'婧㈡祦鍫�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'鎴祦闂�',
name:'鎴祦闂�',
- sname:'',
+ sname:'鎴祦闂�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'闆嗘按姹�(缃�)',
name:'闆嗘按姹�(缃�)',
- sname:'',
+ sname:'闆嗘按姹�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'闅旀补姹�',
name:'闅旀补姹�',
- sname:'',
+ sname:'闅旀补姹�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
]
@@ -400,7 +425,8 @@
{
code:'鎺掓斁鍙�',
name:'鎺掓斁鍙�',
- sname:'',
+ sname:'鎺掓斁鍙�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
}
]
@@ -412,127 +438,148 @@
{
code:'绗笁鏂圭閬�',
name:'绗笁鏂圭閬�',
- sname:'',
+ sname:'绗笁鏂圭閬�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'娑堥槻鍗曚綅',
name:'娑堥槻鍗曚綅',
- sname:'',
+ sname:'娑堥槻鍗曚綅',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'搴旀�ョ墿璧�',
name:'搴旀�ョ墿璧�',
- sname:'',
+ sname:'搴旀�ョ墿璧�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'绀句細涓撲笟搴旀�ユ晳鎻撮槦浼�',
name:'绀句細涓撲笟搴旀�ユ晳鎻撮槦浼�',
- sname:'',
+ sname:'涓撲笟搴旀�ユ晳鎻�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'缁存姠淇槦浼�',
name:'缁存姠淇槦浼�',
- sname:'',
+ sname:'缁存姠淇槦浼�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'鍖婚櫌',
name:'鍖婚櫌',
- sname:'',
+ sname:'鍖婚櫌',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'鑷劧淇濇姢鍖�',
name:'鑷劧淇濇姢鍖�',
- sname:'',
+ sname:'鑷劧淇濇姢鍖�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'姘翠綋',
name:'姘翠綋',
- sname:'',
+ sname:'姘翠綋',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'鏁忔劅鐩爣',
name:'鏁忔劅鐩爣',
- sname:'',
+ sname:'鏁忔劅鐩爣',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'鐜鐩戞祴鍗曚綅',
name:'鐜鐩戞祴鍗曚綅',
- sname:'',
+ sname:'鐜鐩戞祴鍗曚綅',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'鐩戞祴鐐规薄鏌撶墿鎸囨爣淇℃伅',
name:'鐩戞祴鐐规薄鏌撶墿鎸囨爣淇℃伅',
- sname:'',
+ sname:'姹℃煋鐗╂寚鏍�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'鎺掓斁鍙e懆杈圭幆澧冩晱鎰熶俊鎭�',
name:'鎺掓斁鍙e懆杈圭幆澧冩晱鎰熶俊鎭�',
- sname:'',
+ sname:'鎺掓斁鍙e懆杈圭幆澧�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'娉�',
name:'娉�',
- sname:'',
+ sname:'娉�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'娑蹭綅璁�',
name:'娑蹭綅璁�',
- sname:'',
+ sname:'娑蹭綅璁�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'娴侀噺璁�',
name:'娴侀噺璁�',
- sname:'',
+ sname:'娴侀噺璁�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'瑙嗛鐩戞帶閰嶇疆',
name:'瑙嗛鐩戞帶閰嶇疆',
- sname:'',
+ sname:'瑙嗛鐩戞帶',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'鍦ㄧ嚎鐩戞祴璁惧閰嶇疆',
name:'鍦ㄧ嚎鐩戞祴璁惧閰嶇疆',
- sname:'',
+ sname:'鍦ㄧ嚎鐩戞祴',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'鍙噧姘斾綋鎶ヨ璁惧閰嶇疆',
name:'鍙噧姘斾綋鎶ヨ璁惧閰嶇疆',
- sname:'',
+ sname:'鍙噧姘斾綋鎶ヨ',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'H2S娴撳害鎶ヨ璁惧閰嶇疆',
name:'H2S娴撳害鎶ヨ璁惧閰嶇疆',
- sname:'',
+ sname:'H2S娴撳害鎶ヨ',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'绠$嚎鐐�',
name:'绠$嚎鐐�',
- sname:'',
+ sname:'绠$嚎鐐�',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
},
{
code:'绠℃',
name:'绠℃',
- sname:'',
+ sname:'绠℃',
+ checked: true, // 榛樿閫変腑鐘舵��
geom: GEOM_POINT
}
]
diff --git a/src/store/index.js b/src/store/index.js
index d5e9e1a..e174d05 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -15,13 +15,16 @@
serviceLayerHelper: {}, // 鏈嶅姟鍥惧眰鎺у埗鍣ㄥ疄鐜板姪鎵嬬▼搴�
vectoryLayerHelper: {}, // 鍔ㄦ�佸浘灞傛帶鍒跺櫒瀹炵幇鍔╂墜绋嬪簭
layerControllerVisible: { // 鍥惧眰鎺у埗闈㈡澘鐨勬樉绀虹姸鎬佲�衡��
- layerController: true, // 鐖哥埜鏍忕洰锛氭槸鍚︽樉绀哄浘灞傛帶鍒堕潰鏉�
- }
+ layerController: true, // 鐖哥埜鏍忕洰锛氭槸鍚︽樉绀哄浘灞傛帶鍒堕潰鏉�
+ },
+
+ showServiceLayerFilter: false, // Service鍥惧眰杩囨护鍣�
+ selectedServiceLayer: '', // 浣跨敤杩囨护鍣ㄦ椂锛岃鎵撳紑鐨刉MS鏈嶅姟鐨凜ODE
},
mutations: {
setMapObj(state, mObject) {
- state.L = mObject.L
- state.map = mObject.map
+ state.L = mObject.L
+ state.map = mObject.map
},
setBasemapHelper(state, layerHelper) {
state.basemapHelper = layerHelper
@@ -30,11 +33,17 @@
state.serviceLayerHelper = layerHelper
},
setVectorLayerHelper(state, layerHelper) {
- state.vectoryLayerHelper = layerHelper
+ state.vectoryLayerHelper = layerHelper
},
updateLayerControllerVisible(state, preset) {
- state.layerControllerVisible = preset
+ state.layerControllerVisible = preset
},
+ setSelectedServiceLayer(state, selectedServiceLayer){
+ state.selectedServiceLayer = selectedServiceLayer
+ },
+ toggleServiceLayerFilter(state){
+ state.showServiceLayerFilter = !state.showServiceLayerFilter
+ }
},
actions: {
//
diff --git a/src/views/MapTemplate.vue b/src/views/MapTemplate.vue
index 2c19186..8ba690c 100644
--- a/src/views/MapTemplate.vue
+++ b/src/views/MapTemplate.vue
@@ -6,6 +6,7 @@
<div class="barline"></div>
<lc-service-layer></lc-service-layer>
</sgis-layer-controller>
+ <lc-service-layer-filter v-show="showServiceLayerFilter"></lc-service-layer-filter>
<monitor-panel></monitor-panel>
</div>
</template>
@@ -17,18 +18,24 @@
import SgisLayerController from '@components/LayerController/LayerController'
import LcBasemap from '@components/LayerController/modules/LcBaseMap'
import LcServiceLayer from '@components/LayerController/modules/LcServiceLayer'
+import LcServiceLayerFilter from '@components/LayerController/modules/LcServiceLayerFilter'
import MonitorPanel from '@components/panel/MonitorPanel'
-import { mapMutations } from 'vuex'
+import { mapMutations, mapState } from 'vuex'
export default {
name: 'MapTemplate',
- components: {SgisLayerController, MonitorPanel, LcBasemap, LcServiceLayer},
+ components: {SgisLayerController, MonitorPanel, LcBasemap, LcServiceLayer, LcServiceLayerFilter},
data(){
return {
basemapHelper: {},
serviceLayerHelper: {},
vectorLayerHelper: {}
}
+ },
+ computed:{
+ ...mapState({
+ showServiceLayerFilter: state => state.showServiceLayerFilter
+ })
},
beforeMount(){
this.$nextTick(() => {
@@ -40,7 +47,7 @@
setMapObj: 'setMapObj',
setBasemapHelper: 'setBasemapHelper',
setServiceLayerHelper: 'setServiceLayerHelper',
- setVectorLayerHelper: 'setVectorLayerHelper',
+ setVectorLayerHelper: 'setVectorLayerHelper'
}),
init() {
const mapcontainer = this.$refs.rootmap
--
Gitblit v1.8.0