| | |
| | | <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> |
| | | <div class="content"> |
| | | <div v-for="filter in item.filters" :key="filter.code"> |
| | | <input type="checkbox" :value="filter.code" :checked="filter.checked" @change="swSubFilter(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> --> |
| | | </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() |
| | | }, |
| | | swSubFilter (item) { |
| | | // todo 还需要优化,在有多个需要子图层独立弹窗情况下无效 |
| | | toggle (serviceLayers) { |
| | | if (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 |
| | | console.log(item) |
| | | if (item.checked) { |
| | | window.layerFactory.show(item) |
| | | } else { |
| | | window.layerFactory.hide(item) |
| | | } |
| | | // window.serviceLayerHelper.loadLayers() |
| | | } |
| | | }, |
| | | watch: { |
| | | // 此处需要深度监听图层选中状态,使用computed无效 |
| | | '$store.state.map.serviceLayers.LayerSewersLine': { |
| | | handler: function (val) { |
| | | this.toggle(val) |
| | | }, |
| | | immediate: true, |
| | | deep: true |
| | | } |
| | | } |
| | | } |
| | |
| | | .inner-panel { |
| | | color: #90c8e0; |
| | | font-size: 13px; |
| | | |
| | | position: absolute; |
| | | left: 250px; |
| | | bottom: 10px; |
| | | left: 1.82167rem; |
| | | z-index: 1000; |
| | | height: 220px; |
| | | |
| | | top: 50px; |
| | | .filter-group { |
| | | display: flex; |
| | | flex-flow: row; |
| | | |
| | | .filter-item { |
| | | width: 120px; |
| | | width: 0.6rem; |
| | | height: 100%; |
| | | margin-right: 5px; |
| | | |
| | | .title { |
| | | height: '25px'; |
| | | height: 25px; |
| | | background-color: #091331; |
| | | border: 1px solid #10488c; |
| | | } |
| | |
| | | background-color: rgba(44, 62, 80, 0.6); |
| | | border: 1px solid #10488c; |
| | | max-height: 200px; |
| | | overflow-y: auto; |
| | | padding-bottom: 5px; |
| | | //overflow-y: hidden; |
| | | } |
| | | |
| | | ::-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; |
| | | } |
| | | // |
| | | //::-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; |
| | | //} |
| | | } |
| | | } |
| | | } |