| | |
| | | <div class="title"><input type="checkbox" :value="item.code" :checked="item.checked" |
| | | @change="swAllSubFilter(item)">{{item.name}} |
| | | </div> |
| | | <el-scrollbar style="height:100%"> |
| | | <!-- <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 |
| | | @change="swAllSubFilter(filter)"><label |
| | | :title="filter.name">{{filter.name}}</label> |
| | | </div> |
| | | </div> |
| | | </el-scrollbar> |
| | | <!-- </el-scrollbar> --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { mapMutations } from 'vuex' |
| | | import { LayerSewersPoint } from '@src/conf/layers/LayerSewers' |
| | | |
| | | export default { |
| | | name: 'LcServiceLayerFilter', |
| | | components: { }, |
| | | data () { |
| | | return { |
| | | visible: {}, |
| | | layerSewersPoint: LayerSewersPoint, |
| | | layers: [], |
| | | filterConfig: [] // 附属要素 |
| | | } |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | ...mapMutations([]), |
| | | swAllSubFilter (item) { |
| | | // eslint-disable-next-line no-debugger |
| | | item.checked = !item.checked |
| | | // window.serviceLayerHelper.loadLayers() |
| | | this.toggleLayer(item) |
| | | this.swLayers(item.layers, item.checked) |
| | | }, |
| | | swLayers (layers, checked) { |
| | | if (layers) { |
| | | for (let i = 0, len = layers.length; i < len; ++i) { |
| | | var layer = layers[i] |
| | | layer.checked = checked |
| | | this.toggleLayer(layer) |
| | | if (layer.layers) { |
| | | this.swLayers(layer.layers, checked) |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | // 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 |
| | | 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.layers = [] |
| | | this.toggle(serviceLayer.layers) |
| | | } |
| | | break |
| | | } else { |
| | | this.toggle(serviceLayer.layers) |
| | | } |
| | | } |
| | | }, |
| | |
| | | } |
| | | } |
| | | }, |
| | | swSubFilter (url, item) { |
| | | item.checked = !item.checked |
| | | toggleLayer (item) { |
| | | if (item.checked) { |
| | | window.serviceLayerHelper.loadGeojsonLayer(url, item) |
| | | window.layerFactory.show(item) |
| | | } else { |
| | | window.serviceLayerHelper.removeLayer(item) |
| | | window.layerFactory.hide(item) |
| | | } |
| | | // window.serviceLayerHelper.loadLayers() |
| | | } |
| | |
| | | |
| | | <style scoped lang="less"> |
| | | .inner-panel { |
| | | width: 500px; |
| | | color: #90c8e0; |
| | | font-size: 13px; |
| | | |
| | | position: absolute; |
| | | left: 260px; |
| | | left: 1.82167rem; |
| | | z-index: 1000; |
| | | height: 220px; |
| | | top: 0; |
| | | |
| | | top: 50px; |
| | | .filter-group { |
| | | display: flex; |
| | | flex-flow: row; |
| | | |
| | | .filter-item { |
| | | width: 120px; |
| | | width: 0.6rem; |
| | | height: 100%; |
| | | margin-right: 5px; |
| | | |
| | | background-color: @background-color; |
| | | box-shadow: 0 0 0.03rem #00fff6; |
| | | border-radius: 0.03rem; |
| | | .title { |
| | | height: 25px; |
| | | background-color: #091331; |
| | | border: 1px solid #10488c; |
| | | border-bottom:1px solid @background-color-split; |
| | | padding: 5px 0; |
| | | background-color: @background-color; |
| | | } |
| | | |
| | | .content { |
| | | background-color: rgba(44, 62, 80, 0.6); |
| | | border: 1px solid #10488c; |
| | | max-height: 200px; |
| | | padding-bottom: 5px; |
| | | //overflow-y: hidden; |
| | | } |
| | | |
| | | // |
| | | input[type="checkbox"]{width:10px;height:10px;display: inline-block;text-align: center;vertical-align: middle; line-height: 10px;position: relative;} |
| | | input[type="checkbox"]::before{content: "";position: absolute;top: 0;left: 0;background: #fff;width: 100%;height: 100%;border: 1px solid #d9d9d9} |
| | | input[type="checkbox"]:checked::before{content: "\2713";background-color: @color-highlight;position: absolute;top: 0;left: 0;width:100%;border: 1px solid #fff700;color:@background-color;font-size: 10px;font-weight: bold;} |
| | | // |
| | | //::-webkit-scrollbar { |
| | | // width: 7px; |
| | | // height: 5px !important; |