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