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