| | |
| | | <template> |
| | | <div class="inner-panel"> |
| | | <div class="filter-group"> |
| | | <div v-for="item in pointLayers" :key="item.code" class="filter-item"> |
| | | <div v-for="item in layers" :key="item.code" class="filter-item"> |
| | | <div class="title"><input type="checkbox" :value="item.code" :checked="item.checked" |
| | | @change="swAllSubFilter(item)">{{item.name}} |
| | | </div> |
| | | <el-scrollbar style="height:100%"> |
| | | <div class="content"> |
| | | <div v-for="filter in item.layers" :key="filter.code"> |
| | | <input type="checkbox" :value="filter.code" :checked="filter.checked" @change="swSubFilter(item.url,filter)"><label |
| | | :title="filter.name">{{filter.name}}</label> |
| | | <el-scrollbar style="height:100%"> |
| | | <div class="content"> |
| | | <div v-for="filter in item.layers" :key="filter.code"> |
| | | <input type="checkbox" :value="filter.code" :checked="filter.checked" |
| | | @change="swSubFilter(item.url,filter)"><label |
| | | :title="filter.name">{{filter.name}}</label> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-scrollbar> |
| | | </el-scrollbar> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | |
| | | <script> |
| | | import { mapMutations } from 'vuex' |
| | | import { LayerSewersPoint } from '@src/conf/layers/LayerSewers' |
| | | |
| | | export default { |
| | | name: 'LcServiceLayerFilter', |
| | | components: {}, |
| | | components: { }, |
| | | data () { |
| | | return { |
| | | visible: {}, |
| | | layerSewersPoint: LayerSewersPoint, |
| | | layers: [], |
| | | filterConfig: [] // 附属要素 |
| | | } |
| | | }, |
| | | computed: { |
| | | serviceLayers () { |
| | | return this.$store.state.map.serviceLayers.LayerSewersLine |
| | | }, |
| | | config () { |
| | | return this.$store.state.map.config |
| | | }, |
| | | pointLayers () { |
| | | // 根据线图层选中情况,显示或隐藏点图层面板 |
| | | var serviceLayers = this.config.mapConfig.Layers.LayerSewersLine // 一级图层 |
| | | var checkedLayers = window.serviceLayerHelper.getCheckedLayers(serviceLayers) |
| | | var pointLayers = this.config.mapConfig.Layers.layerSewersPoint // 二级图层 |
| | | return pointLayers.filter(function (layer) { |
| | | var code = layer.code |
| | | for (var i = 0; i < checkedLayers.length; i++) { |
| | | var checkedLayer = checkedLayers[i] |
| | | if (checkedLayer.childLayer.indexOf(code) >= 0) { |
| | | return checkedLayer |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | mounted () { |
| | | // this.filterConfig = window.serviceLayerHelper.getWMSConfig().filtersGroup |
| | | }, |
| | | methods: { |
| | | ...mapMutations([]), |
| | | swAllSubFilter (item) { |
| | | item.checked = !item.checked |
| | | console.log(item) |
| | | // window.serviceLayerHelper.loadLayers() |
| | | }, |
| | | // todo 还需要优化,在有多个需要子图层独立弹窗情况下无效 |
| | | toggle (serviceLayers) { |
| | | for (var i = 0; i < serviceLayers.length; i++) { |
| | | var serviceLayer = serviceLayers[i] |
| | | var childLayer = serviceLayer.childLayer |
| | | if (childLayer) { |
| | | if (this.checkChecked(serviceLayer.layers)) { |
| | | this.layers = childLayer |
| | | } else { |
| | | this.layers = [] |
| | | } |
| | | break |
| | | } else { |
| | | this.toggle(serviceLayer.layers) |
| | | } |
| | | } |
| | | }, |
| | | checkChecked (serviceLayers) { |
| | | for (var i = 0; i < serviceLayers.length; i++) { |
| | | var serviceLayer = serviceLayers[i] |
| | | var checked = serviceLayer.checked |
| | | if (checked) { |
| | | return true |
| | | } |
| | | } |
| | | }, |
| | | swSubFilter (url, item) { |
| | | item.checked = !item.checked |
| | |
| | | window.serviceLayerHelper.removeLayer(item) |
| | | } |
| | | // window.serviceLayerHelper.loadLayers() |
| | | } |
| | | }, |
| | | watch: { |
| | | // 此处需要深度监听图层选中状态,使用computed无效 |
| | | '$store.state.map.serviceLayers.LayerSewersLine': { |
| | | handler: function (val) { |
| | | this.toggle(val) |
| | | }, |
| | | immediate: true, |
| | | deep: true |
| | | } |
| | | } |
| | | } |
| | |
| | | max-height: 200px; |
| | | //overflow-y: hidden; |
| | | } |
| | | |
| | | // |
| | | //::-webkit-scrollbar { |
| | | // width: 7px; |