From 047637f2325730e200a9eaa1544206357b9a9480 Mon Sep 17 00:00:00 2001 From: YANGDL <114714267@qq.com> Date: 星期一, 22 二月 2021 14:54:26 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/components/panel/RightSearchPanel.vue | 873 +++++++++++++++++++------------------ src/components/helpers/WmsHelper.js | 2 src/components/LayerController/modules/LcServiceLayerFilter.vue | 166 +++--- src/views/MapTemplate.vue | 78 +- src/components/helpers/ServiceLayerHelper.js | 76 ++ src/components/LayerController/modules/LcServiceLayer.vue | 163 ++---- src/Sgis.js | 5 src/store/modules/map.js | 4 8 files changed, 685 insertions(+), 682 deletions(-) diff --git a/src/Sgis.js b/src/Sgis.js index eec70ab..264422a 100644 --- a/src/Sgis.js +++ b/src/Sgis.js @@ -34,7 +34,7 @@ }) window.map = map - + initTileLayersHelper(map) return map } @@ -53,7 +53,8 @@ * @param L */ const initTileLayersHelper = (map) => { - return new ServiceLayerHelper({ map }) + var serviceLayerHelper = new ServiceLayerHelper({ map }) + return serviceLayerHelper } /** diff --git a/src/components/LayerController/modules/LcServiceLayer.vue b/src/components/LayerController/modules/LcServiceLayer.vue index dcf9fcd..cb9a7e8 100644 --- a/src/components/LayerController/modules/LcServiceLayer.vue +++ b/src/components/LayerController/modules/LcServiceLayer.vue @@ -1,57 +1,46 @@ <template> - <div class="inner-panel"> - <div class="tile-panel"> - <div v-for="item in serviceTileLayerList" :key="item.code"><input type="checkbox" :value="item.name" - @change="swTileLayer"/></div> - </div> - <div class="wmts-panel"> - <div v-for="item in serviceWmtsLayerList" :key="item.code"><input type="checkbox" :value="item.name" - @change="swWmtsLayer"/></div> - </div> - <div class="wms-panel"> - <div v-for="item in serviceWmsLayerList" :key="item.code" class="layerbox"> - <div><input type="checkbox" :name="'wmsLayer_'+item.code" :checked="item.checked" :value="item.code" - @change="swAllLayers(item)"/>{{ item.name }} <span @click="swFilter(item)" - class="btn-filter">杩囨护</span> + <div class="inner-panel"> + <div class="wms-panel"> + <div v-for="item in mapConfig.ServiceLayers" :key="item.code" class="layerbox"> + <div><input type="checkbox" :name="'wmsLayer_'+item.code" :checked="item.checked" :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_'+item.code+'_'+itm.code" + :checked="itm.checked" + :value="itm.code" + @change="swWmsLayer(itm)"/>{{ itm.sname }} + </div> + </div> + </div> </div> - <div class="layerbox-item"> - <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> + <lc-service-layer-filter v-if="layerFilterVisible" ref="serviceLayerFilter"></lc-service-layer-filter> </div> - </div> </template> <script> import WmsHelper from '../../helpers/WmsHelper' +import AjaxUtils from '@/utils/AjaxUtils' +import LcServiceLayerFilter from '@components/LayerController/modules/LcServiceLayerFilter' export default { name: 'LcServiceLayer', - components: {}, + components: { LcServiceLayerFilter }, data () { return { - selectedLineLayer: [], // 閫変腑鐨勭绾垮浘灞� - selectedSubsidiaryLayer: [], // 閫変腑鐨勯檮灞炶绱� - serviceTileLayerList: [], // Tile鍥惧眰鍒楄〃 - serviceWmtsLayerList: [], // Wmts鍥惧眰鍒楄〃 - serviceWmsLayerList: [] // 鍥惧眰鍒楄〃 + layerFilterVisible: false } }, computed: { - serviceLayerHelper () { - return this.$store.state.map.serviceLayerHelper - }, mapConfig () { - return this.$store.state.map.mapConfig + return this.$store.state.map.mapConfig.mapConfig } }, mounted () { // console.log('03姝ラ锛�', this.helper) + this.updateServiceLayerList() }, methods: { swAllLayers (item) { @@ -61,71 +50,34 @@ item.layers[i].checked = item.checked } this.updateWms() - - console.log(this.mapConfig) }, - swTileLayer () { - console.log('璇ILE鏂规硶鏈疄鐜帮紒') - }, - swWmtsLayer () { - console.log('璇MTS鏂规硶鏈疄鐜帮紒') + loadWfs () { + AjaxUtils.GetDataAsynByUrl('http://xearth.cn:6289/server/ogcserver/PipeLineTest/wfs?version=1.0.0&TYPENAME=pipeline&REQUEST=getfeature&OUTPUTFORMAT=json&maxFeatures=20000', {}, (res) => { + window.L.geoJSON(res).addTo(window.map) + }) }, swWmsLayer (itm) { - console.log('22222222') itm.checked = !itm.checked this.updateWms() }, swFilter (item) { - this.$store.commit('setSelectedServiceLayer', item.code) - this.$store.commit('toggleServiceLayerFilter') + this.layerFilterVisible = !this.layerFilterVisible }, updateServiceLayerList () { - // eslint-disable-next-line no-debugger - // debugger - const tileCfg = this.serviceLayerHelper.getTileLayers() - this.serviceTileLayerList = [] - for (let i = 0, len = tileCfg.length; i < len; ++i) { - if (tileCfg[i].config.inLegend) { - console.log(tileCfg[i]) - } - } - const wmtsCfg = this.serviceLayerHelper.getWmtsLayers() - this.serviceWmtsLayerList = [] - for (let i = 0, len = wmtsCfg.length; i < len; ++i) { - if (wmtsCfg[i].config.inLegend) { - console.log(wmtsCfg[i]) - } - } - const wmsCfg = this.serviceLayerHelper.getWmsLayers() - this.serviceWmsLayerList = [] - for (let i = 0, len = wmsCfg.length; i < len; ++i) { - if (wmsCfg[i].config.inLegend) { - this.serviceWmsLayerList.push(wmsCfg[i].config) - } - } + }, updateWms () { - console.log('------') var mapConfig = this.mapConfig var wmsHelper = new WmsHelper() wmsHelper.initMapConfig(mapConfig) var wmsLayersMap = wmsHelper.getWmsLayersMap() - // var filterURL = wmsHelper.getFilterURL() - console.log(wmsLayersMap) for (var k in wmsLayersMap) { var layers = wmsLayersMap[k] - var tileLayer = this.serviceLayerHelper.getTileLayer(k) + var tileLayer = window.serviceLayerHelper.getTileLayer(k) if (tileLayer) { tileLayer.setParams({ layers: layers.join(',') }, false) tileLayer.setUrl(tileLayer.config.url, false) } - } - } - }, - watch: { - serviceLayerHelper (newVal) { - if (newVal != null) { - this.updateServiceLayerList() } } } @@ -133,36 +85,37 @@ </script> <style scoped lang="less"> -.inner-panel { - display: flex; - justify-content: center; - align-items: center; - - .btn-filter { - cursor: pointer; - } - - .wms-panel { - display: flex; - flex-flow: column; - - .layerbox { - width: 100%; - display: flex; - flex-flow: column; - - .layerbox-item { + .inner-panel { display: flex; - flex-flow: row wrap; - margin-left: 15px; - margin-top: 5px; + justify-content: center; + align-items: center; - .basemap-layer-item { - width: 50%; + .btn-filter { + cursor: pointer; + color: #ffffff; } - } + + .wms-panel { + display: flex; + flex-flow: column; + + .layerbox { + width: 100%; + display: flex; + flex-flow: column; + + .layerbox-item { + display: flex; + flex-flow: row wrap; + margin-left: 15px; + margin-top: 5px; + + .basemap-layer-item { + width: 50%; + } + } + } + } } - } -} </style> diff --git a/src/components/LayerController/modules/LcServiceLayerFilter.vue b/src/components/LayerController/modules/LcServiceLayerFilter.vue index a185123..cd5fb45 100644 --- a/src/components/LayerController/modules/LcServiceLayerFilter.vue +++ b/src/components/LayerController/modules/LcServiceLayerFilter.vue @@ -1,20 +1,23 @@ <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" :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"><label :title="filter.name">{{filter.sname}}</label> - </div> - </div> - </div> - </div> - </div> + <div class="inner-panel"> + <div class="filter-group"> + <div v-for="item in pointLayers" :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"><label + :title="filter.name">{{filter.sname}}</label> + </div> + </div> + </div> + </div> + </div> </template> <script> -import { mapState, mapMutations } from 'vuex' +import { mapMutations } from 'vuex' import WmsHelper from '../../helpers/WmsHelper' export default { @@ -22,46 +25,44 @@ components: {}, data () { return { + visible: {}, filterConfig: [] // 闄勫睘瑕佺礌 } }, computed: { - ...mapState({ - serviceLayerHelper: (state) => { - return state.serviceLayerHelper - }, - selectedServiceLayer: (state) => { - return state.selectedServiceLayer - }, - serviceLayerFilters: (state) => { - return state.serviceLayerFilters - }, - mapConfig: (state) => { - return state.mapConfig - } - }) + mapConfig () { + return this.$store.state.map.mapConfig.mapConfig + }, + pointLayers () { + // 鏍规嵁绾垮浘灞傞�変腑鎯呭喌锛屾樉绀烘垨闅愯棌鐐瑰浘灞傞潰鏉� + var config = this.mapConfig + var checkedLayers = window.serviceLayerHelper.getCheckedLayers(config) + var pointLayers = config.PointLayers + 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([]), - getFilterConfig () { - return this.filterConfig - }, swAllSubFilter (item) { item.checked = !item.checked for (let i = 0, len = item.filters.length; i < len; ++i) { item.filters[i].checked = item.checked } - - console.log('------') var mapConfig = this.mapConfig var wmsHelper = new WmsHelper() wmsHelper.initMapConfig(mapConfig) var wmsLayersMap = wmsHelper.getWmsLayersMap() - // var filterURL = wmsHelper.getFilterURL() - console.log(wmsLayersMap) for (var k in wmsLayersMap) { var layers = wmsLayersMap[k] var tileLayer = this.serviceLayerHelper.getTileLayer(k) @@ -71,66 +72,63 @@ } } } - }, - watch: { - selectedServiceLayer (newVal) { - this.filterConfig = this.serviceLayerHelper.getWMSConfig(newVal).filtersGroup - } } } </script> <style scoped lang="less"> -.inner-panel { - color:#90c8e0; - font-size: 13px; + .inner-panel { + color: #90c8e0; + font-size: 13px; - position: absolute; - left: 250px; - bottom: 10px; - z-index: 1000; - height: 220px; - width: 500px; + position: absolute; + left: 250px; + bottom: 10px; + z-index: 1000; + height: 220px; - .filter-group{ - display: flex; - flex-flow: row; + .filter-group { + display: flex; + flex-flow: row; - .filter-item{ - width: 120px; - height: 100%; - margin-right: 5px; + .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; - } + .title { + height: '25px'; + background-color: #091331; + border: 1px solid #10488c; + } - ::-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; + .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/components/helpers/ServiceLayerHelper.js b/src/components/helpers/ServiceLayerHelper.js index c85d32b..2ff5042 100644 --- a/src/components/helpers/ServiceLayerHelper.js +++ b/src/components/helpers/ServiceLayerHelper.js @@ -7,16 +7,16 @@ constructor (options) { this.map = options.map this.L = window.L - this.tileLayersMap = new Map() - this.tileLayersWMSArray = [] + this.loadedLayersMap = new Map() this.tileLayerWmslayerGroup = this.L.layerGroup().addTo(this.map) - this.tileLayersWMTSArray = [] - this.tileLayersTileArray = [] + this.tileLayersWMTSArray = [] // 鍒濆鐨刉MTS闆� + this.tileLayersTileArray = [] // 鍒濆鐨凾ile闆� + this.tileLayersWMSArray = [] // 鍒濆鐨刉MS闆� this.mapConfig = {} } getTileLayer (code) { - return this.tileLayersMap.get(code) + return this.loadedLayersMap.get(code) } /** @@ -36,13 +36,25 @@ console.debug('ServiceLayerHelper鍔犺浇鍙傛暟锛�', mapConfig) for (let i = 0, len = mapConfig.mapConfig.ServiceLayers.length; i < len; ++i) { const opt = mapConfig.mapConfig.ServiceLayers[i] + this.setArray(opt) if (opt.type === 'wmts') { - this.loadWmtsLayer(opt, isAddToMap, mapConfig.mapConfig.ServiceLayers[i]) + opt.checked && this.loadWmtsLayer(opt, isAddToMap, mapConfig.mapConfig.ServiceLayers[i]) } else if (opt.type === 'wms') { - this.loadWmsLayer(opt, isAddToMap, mapConfig.mapConfig.ServiceLayers[i]) + opt.checked && this.loadWmsLayer(opt, isAddToMap, mapConfig.mapConfig.ServiceLayers[i]) } else if (opt.type === 'tile') { - this.loadTileLayer(opt, isAddToMap, mapConfig.mapConfig.ServiceLayers[i]) + opt.checked && this.loadTileLayer(opt, isAddToMap, mapConfig.mapConfig.ServiceLayers[i]) } + } + } + + setArray (opt) { + var type = opt.type + if (type === 'wmts') { + this.tileLayersWMTSArray.push(opt) + } else if (type === 'wms') { + this.tileLayersWMSArray.push(opt) + } else if (type === 'tile') { + this.tileLayersTileArray.push(opt) } } @@ -58,8 +70,7 @@ if (isAddToMap) { layer.addTo(this.map) } - this.tileLayersMap.set(options.code, layer) - this.tileLayersWMTSArray.push(layer) + this.loadedLayersMap.set(options.code, layer) } /** @@ -74,8 +85,7 @@ if (isAddToMap) { layer.addTo(this.tileLayerWmslayerGroup) } - this.tileLayersMap.set(options.code, layer) - this.tileLayersWMSArray.push(layer) + this.loadedLayersMap.set(options.code, layer) } /** @@ -98,8 +108,7 @@ if (isAddToMap) { layer.addTo(this.map) } - this.tileLayersMap.set(options.code, layer) - this.tileLayersTileArray.push(layer) + this.loadedLayersMap.set(options.code, layer) } /** @@ -107,8 +116,8 @@ * @param {*} name */ hideTileLayer (code) { - if (this.tileLayersMap) { - const tileLayer = this.tileLayersMap.get(code) + if (this.loadedLayersMap) { + const tileLayer = this.loadedLayersMap.get(code) this.map.removeLayer(tileLayer) } } @@ -118,10 +127,32 @@ * @param {*} name */ showTileLayer (code) { - if (this.tileLayersMap) { - const tileLayer = this.tileLayersMap.get(code) + if (this.loadedLayersMap) { + const tileLayer = this.loadedLayersMap.get(code) this.map.addLayer(tileLayer) } + } + + /** + * 寰楀埌閫変腑鐨勫浘灞傚垪琛� + * @param mapConfig + * @returns {[]} + */ + getCheckedLayers (mapConfig) { + var checkedLayers = [] + var serviceLayers = mapConfig.ServiceLayers + for (var i = 0; i < serviceLayers.length; i++) { + var serviceLayer = serviceLayers[i] + var layers = serviceLayer.layers + for (var j = 0; j < layers.length; j++) { + var layer = layers[j] + var checked = layer.checked + if (checked) { + checkedLayers.push(layer) + } + } + } + return checkedLayers } /** @@ -146,13 +177,20 @@ } /** + * 鏍规嵁绾跨殑閫夋嫨锛屽緱鍒扮偣鐨勫彲閫夋嫨鍥惧眰鏁版嵁 + */ + getFiltersGroup () { + + } + + /** * 閫氳繃code鏌ユ壘WMS鐨勬湇鍔¢厤缃� * @param {} code wms鏈嶅姟閰嶇疆鐨刢ode */ getWMSConfig (code) { const mc = this.mapConfig for (let i = 0, len = mc.mapConfig.ServiceLayers.length; i < len; ++i) { - if (code === mc.mapConfig.ServiceLayers[i].code && mc.mapConfig.ServiceLayers[i].type === 'wms') { + if (code === mc.mapConfig.ServiceLayers[i].code || mc.mapConfig.ServiceLayers[i].type === 'wms') { return mc.mapConfig.ServiceLayers[i] } } diff --git a/src/components/helpers/WmsHelper.js b/src/components/helpers/WmsHelper.js index 52f7a84..af18c6c 100644 --- a/src/components/helpers/WmsHelper.js +++ b/src/components/helpers/WmsHelper.js @@ -6,7 +6,7 @@ this.wmsLayersMap = {} this.initMapConfig = (mapConfig) => { - var serviceLayers = mapConfig.mapConfig.ServiceLayers + var serviceLayers = mapConfig.ServiceLayers for (var i = 0; i < serviceLayers.length; i++) { var service = serviceLayers[i] var checked = service.checked diff --git a/src/components/panel/RightSearchPanel.vue b/src/components/panel/RightSearchPanel.vue index 4a59e18..f0c186f 100644 --- a/src/components/panel/RightSearchPanel.vue +++ b/src/components/panel/RightSearchPanel.vue @@ -1,122 +1,123 @@ <template> - <div id="right-panel"> - <div class="panel-tab"> - <div class="btn-stretch" @click="toggleMonitorPanel"></div> - <div class="tab-gd" @click="handleGd" :class="{'B-TMT-tab-waybill-isActive': isWaybillHover}"></div> - <div class="tab-hb" @click="handleHb" :class="{'B-TMT-tab-route-isActive': isRouteHover}"></div> - <div class="tab-pk" @click="handlePk" :class="{'B-TMT-tab-route-isActive': isRouteHover}"></div> - </div> - <div class="right-control"> - <div class="el-message-box__header panel_header"> - <div class="el-message-box__title panel_title"><!----><span>{{ title }}</span> + <div id="right-panel"> + <div class="panel-tab"> + <div class="btn-stretch" @click="toggleMonitorPanel"></div> + <div class="tab-gd" @click="handleGd" :class="{'B-TMT-tab-waybill-isActive': isWaybillHover}"></div> + <div class="tab-hb" @click="handleHb" :class="{'B-TMT-tab-route-isActive': isRouteHover}"></div> + <div class="tab-pk" @click="handlePk" :class="{'B-TMT-tab-route-isActive': isRouteHover}"></div> </div> - </div> - <div class="el-message-box__content" style="padding:6px;font-size: 13px;"> - <div class="monitor1" v-if="gdVisible"> - <div> - <el-card class="search-panel"> - <el-form ref="form" :model="form" label-width="90px" class="search-form"> - <el-form-item label="绫诲瀷锛�"> - <el-select v-model="form.pipelineType" @change="handlePipelineType"> - <el-option - v-for="item in pipelineTypeOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="鏁版嵁绫诲瀷锛�"> - <el-select v-model="form.dataType"> - <el-option - v-for="item in dataTypeOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="妯$硦鎼滅储锛�"> - <el-input v-model="form.key" size="mini" - placeholder="鍦ㄦ杈撳叆鍏抽敭瀛�"></el-input> - </el-form-item> - <el-form-item> - <input type="button" class="btn-ok" @click="handleSearch" value="鏌ヨ"> - <input type="button" class="btn-reset" @click="handleSearch" value="閲嶇疆"> - </el-form-item> - </el-form> - </el-card> - <el-card class="search-result" style="height:271px;"> - <div class="B-TMD-table-list" v-for="(item,index) in list" :key="index"> - <div class="B-TMD-table-list-title"> - <div class="B-TMD-table-list-head"> - <div class="B-TMD-table-list-title-y" - :class="['B-TMD-table-list-title-y-nam', { 'warning': item.vehicleStatus==='910003' }, { 'offline': item.vehicleStatus==='910001' }]"> - <span>杩愬崟鍙凤細</span> - <span id="waybillNumber" class="B-TMD-table-list-title-y-num" - :title="item.transNo"> + <div class="right-control"> + <div class="el-message-box__header panel_header"> + <div class="el-message-box__title panel_title"><!----><span>{{ title }}</span> + </div> + </div> + <div class="el-message-box__content" style="padding:6px;font-size: 13px;"> + <div class="monitor1" v-if="gdVisible"> + <div> + <el-card class="search-panel"> + <el-form ref="form" :model="form" label-width="90px" class="search-form"> + <el-form-item label="绫诲瀷锛�"> + <el-select v-model="form.pipelineType" @change="handlePipelineType"> + <el-option + v-for="item in pipelineTypeOptions" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="鏁版嵁绫诲瀷锛�"> + <el-select v-model="form.dataType"> + <el-option + v-for="item in dataTypeOptions" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="妯$硦鎼滅储锛�"> + <el-input v-model="form.key" size="mini" + placeholder="鍦ㄦ杈撳叆鍏抽敭瀛�"></el-input> + </el-form-item> + <el-form-item> + <input type="button" class="btn-ok" @click="handleSearch" value="鏌ヨ"> + <input type="button" class="btn-reset" @click="handleSearch" value="閲嶇疆"> + </el-form-item> + </el-form> + </el-card> + <el-card class="search-result" style="height:271px;"> + <div class="B-TMD-table-list" v-for="(item,index) in list" :key="index"> + <div class="B-TMD-table-list-title"> + <div class="B-TMD-table-list-head"> + <div class="B-TMD-table-list-title-y" + :class="['B-TMD-table-list-title-y-nam', { 'warning': item.vehicleStatus==='910003' }, { 'offline': item.vehicleStatus==='910001' }]"> + <span>杩愬崟鍙凤細</span> + <span id="waybillNumber" class="B-TMD-table-list-title-y-num" + :title="item.transNo"> <span class="B-TMD-table-list-title-y-alarm">{{ item.transNo }}</span> </span> - </div> - <div class="B-TMD-table-list-title-c"> - 杞藉叿鍙凤細 - <span id="plateNumber_p"> + </div> + <div class="B-TMD-table-list-title-c"> + 杞藉叿鍙凤細 + <span id="plateNumber_p"> <span id="plateNumber_n"><a href="#">{{ item.vehicleNo }}</a></span> </span> - </div> - </div> - <div class="B-TMD-table-icons" style="float:right"> - <ul> - <li class="B-TMD-table-list-title-y-adress" - @click="handleLocation(item)"></li> - <li :class="[{'B-TMD-table-list-title-y-car': item.vehicleStatus ==='910002', 'B-TMD-table-list-title-y-car-offline': item.vehicleStatus ==='910001','B-TMD-table-list-title-y-car-warning': item.vehicleStatus==='910003' }]"></li> - </ul> - </div> - </div> - <div class="B-TMD-table-list-content"> - <div> - <span>鍙戣揣浼佷笟锛�</span> - <span id="b_twe_consignment" :title="item.outWarehouseName">{{ + </div> + </div> + <div class="B-TMD-table-icons" style="float:right"> + <ul> + <li class="B-TMD-table-list-title-y-adress" + @click="handleLocation(item)"></li> + <li :class="[{'B-TMD-table-list-title-y-car': item.vehicleStatus ==='910002', 'B-TMD-table-list-title-y-car-offline': item.vehicleStatus ==='910001','B-TMD-table-list-title-y-car-warning': item.vehicleStatus==='910003' }]"></li> + </ul> + </div> + </div> + <div class="B-TMD-table-list-content"> + <div> + <span>鍙戣揣浼佷笟锛�</span> + <span id="b_twe_consignment" :title="item.outWarehouseName">{{ item.outWarehouseName == null ? "鏆傛棤" : item.outWarehouseName }}</span> - </div> - <div> - <span>鎵� 杩� 鍟嗭細</span> - <span id="b_twe_loan" :title="item.carrierName">{{ item.carrierName }}</span> - </div> - <div><span>鏀惰揣浼佷笟锛�</span> <span - id="b_twe_loan1" :title="item.recvWarehouseName">{{ item.recvWarehouseName }}</span></div> - </div> - <div class="B-TMD-table-list-bottom"> - <div class="B-TMD-table-list-bottom-name"> - 璐х墿鍚嶇О锛�<span :title="item.materialName">{{ item.materialName }}</span></div> - </div> - </div> - </el-card> + </div> + <div> + <span>鎵� 杩� 鍟嗭細</span> + <span id="b_twe_loan" :title="item.carrierName">{{ item.carrierName }}</span> + </div> + <div><span>鏀惰揣浼佷笟锛�</span> <span + id="b_twe_loan1" :title="item.recvWarehouseName">{{ item.recvWarehouseName }}</span> + </div> + </div> + <div class="B-TMD-table-list-bottom"> + <div class="B-TMD-table-list-bottom-name"> + 璐х墿鍚嶇О锛�<span :title="item.materialName">{{ item.materialName }}</span></div> + </div> + </div> + </el-card> - <el-card class="footer-page" v-if="total > 10"> - <el-pagination - small - @current-change="handlePage" - :page-size=pageSize - layout="prev, pager, next" - :total=total - :current-page=current - class="warnPagination" - > - </el-pagination> - </el-card> - </div> + <el-card class="footer-page" v-if="total > 10"> + <el-pagination + small + @current-change="handlePage" + :page-size=pageSize + layout="prev, pager, next" + :total=total + :current-page=current + class="warnPagination" + > + </el-pagination> + </el-card> + </div> + </div> + <div class="monitor2" v-if="hbVisible"> + <env-protect-search></env-protect-search> + </div> + <div class="monitor2" v-if="pkVisible"> + <discharge-search></discharge-search> + </div> + </div> </div> - <div class="monitor2" v-if="hbVisible"> - <env-protect-search></env-protect-search> - </div> - <div class="monitor2" v-if="pkVisible"> - <discharge-search></discharge-search> - </div> - </div> </div> - </div> </template> <script> @@ -135,6 +136,7 @@ pkVisible: false, toggleMonitorStyle: 'right:0px', list: [], + total: 0, title: '绠¢亾淇℃伅鏌ヨ', pipelineTypeOptions: [{ value: '1', @@ -212,6 +214,9 @@ handleClose (done) { console.log(done) }, + handleSearch () { + + }, handlePipelineType (item) { console.log(item) if (item === '2') { @@ -272,370 +277,370 @@ </script> <style lang="less"> -#right-panel { - width: 322px; - height: 573px; - position: absolute; - right: 10px; - top: 10px; + #right-panel { + width: 322px; + height: 573px; + position: absolute; + right: 10px; + top: 10px; - .el-card__body { - padding: 7px; - } + .el-card__body { + padding: 7px; + } - .el-form-item__content { - color: rgb(52, 224, 255); - } + .el-form-item__content { + color: rgb(52, 224, 255); + } - .el-picker-panel { - background-color: #061e51 !important; - } + .el-picker-panel { + background-color: #061e51 !important; + } - .el-input__inner { - border-radius: 0 !important; - background-color: #061e51 !important; - border: solid 1px #0e639e !important; - } + .el-input__inner { + border-radius: 0 !important; + background-color: #061e51 !important; + border: solid 1px #0e639e !important; + } - .el-form-item__label { - color: rgb(52, 224, 255); - } + .el-form-item__label { + color: rgb(52, 224, 255); + } - .el-input__inner::placeholder { - color: #9a9494; - } + .el-input__inner::placeholder { + color: #9a9494; + } - /* 璋锋瓕 */ + /* 璋锋瓕 */ - .el-input__inner::-webkit-input-placeholder { - color: #9a9494; - } + .el-input__inner::-webkit-input-placeholder { + color: #9a9494; + } - /* 鐏嫄 */ + /* 鐏嫄 */ - .el-input__inner:-moz-placeholder { - color: #9a9494; - } + .el-input__inner:-moz-placeholder { + color: #9a9494; + } - /*ie*/ + /*ie*/ - .el-input__inner:-ms-input-placeholder { - color: #9a9494; - } + .el-input__inner:-ms-input-placeholder { + color: #9a9494; + } - .warning { - color: #dcc805; - } + .warning { + color: #dcc805; + } - #plateNumber_n a { - color: rgb(52, 224, 255); - } + #plateNumber_n a { + color: rgb(52, 224, 255); + } - .offline { - color: #9a9494; - } + .offline { + color: #9a9494; + } - .customInput { - width: 118px; - } + .customInput { + width: 118px; + } - .btn-ok { - margin-right: 10px; - width: 4rem; - background-color: #0B89B5; - color: white; - border: 0; - } + .btn-ok { + margin-right: 10px; + width: 4rem; + background-color: #0B89B5; + color: white; + border: 0; + } - .btn-reset { - margin-right: 10px; - width: 4rem; - background-color: orange; - color: white; - border: 0; - } + .btn-reset { + margin-right: 10px; + width: 4rem; + background-color: orange; + color: white; + border: 0; + } - .component-fade-enter-active, .component-fade-leave-active { - transition: opacity .5s ease; - } + .component-fade-enter-active, .component-fade-leave-active { + transition: opacity .5s ease; + } - .component-fade-enter, .component-fade-leave-to - /* .component-fade-leave-active for below version 2.1.8 */ { - opacity: 0; - } + .component-fade-enter, .component-fade-leave-to + /* .component-fade-leave-active for below version 2.1.8 */ { + opacity: 0; + } - .B-TMD-table-icons ul li { - float: left; - margin: 10px; - list-style: none; - } + .B-TMD-table-icons ul li { + float: left; + margin: 10px; + list-style: none; + } - .B-TMD-table-list { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } + .B-TMD-table-list { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } - .B-TMD-table-list-title { - width: 100%; - height: 50px; - } + .B-TMD-table-list-title { + width: 100%; + height: 50px; + } - .B-TMD-table-list-head { - width: 160px; - float: left; - padding-left: 5px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } + .B-TMD-table-list-head { + width: 160px; + float: left; + padding-left: 5px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } - .btn-stretch { - width: 15px; - height: 28px; - background: url('../../assets/images/map-pages/icon/icon.png') no-repeat -408px 0; - margin-left: 10px; - margin-top: 3px; - cursor: pointer; + .btn-stretch { + width: 15px; + height: 28px; + background: url('../../assets/images/map-pages/icon/icon.png') no-repeat -408px 0; + margin-left: 10px; + margin-top: 3px; + cursor: pointer; - transform: rotateY(180deg); - transform-origin: 50% 50%; - transition: transform 1s linear; - } + transform: rotateY(180deg); + transform-origin: 50% 50%; + transition: transform 1s linear; + } - .tab-gd { - width: 32px; - height: 30px; - background-color: #0B3B6D; - } + .tab-gd { + width: 32px; + height: 30px; + background-color: #0B3B6D; + } - .tab-hb { - width: 32px; - height: 30px; - background-color: #545454; - } + .tab-hb { + width: 32px; + height: 30px; + background-color: #545454; + } - .tab-pk { - width: 32px; - height: 30px; - background-color: #83a6c4; - } + .tab-pk { + width: 32px; + height: 30px; + background-color: #83a6c4; + } - .panel-tab { - position: absolute; - left: 0; - height: 120px; - top: 0; - width: 32px; - z-index: 500; - background: url('../../assets/images/map-pages/icon/caidan.png') no-repeat; - } + .panel-tab { + position: absolute; + left: 0; + height: 120px; + top: 0; + width: 32px; + z-index: 500; + background: url('../../assets/images/map-pages/icon/caidan.png') no-repeat; + } - .right-control { - width: 290px; - height: 573px; - position: absolute; - top: 0; - right: 0; - z-index: 999; - background: url('../../assets/images/map-pages/icon/bgc.png') no-repeat; - } + .right-control { + width: 290px; + height: 573px; + position: absolute; + top: 0; + right: 0; + z-index: 999; + background: url('../../assets/images/map-pages/icon/bgc.png') no-repeat; + } - .panel_searchTotal { - font-size: 12px; - float: right; - } + .panel_searchTotal { + font-size: 12px; + float: right; + } - .panel_header { - // background-color: #030D2E; - padding: 7px 15px 3px 20px; - } + .panel_header { + // background-color: #030D2E; + padding: 7px 15px 3px 20px; + } - .panel_title { - font-size: 12px; - margin: 0px; - padding: 0px; - color: #78c4ff; - font-weight: bold; - } + .panel_title { + font-size: 12px; + margin: 0px; + padding: 0px; + color: #78c4ff; + font-weight: bold; + } - .el-message-box__content { - background-color: transparent; - } + .el-message-box__content { + background-color: transparent; + } - .search-form .el-form-item { - margin: 0px; - } + .search-form .el-form-item { + margin: 0px; + } - .search-form .el-icon-search { - display: grid; - line-height: 30px; - font-size: 18px; - } + .search-form .el-icon-search { + display: grid; + line-height: 30px; + font-size: 18px; + } - .search-panel { - border: #07325B; - background-color: #07325B !important; - margin-top: 0px; + .search-panel { + border: #07325B; + background-color: #07325B !important; + margin-top: 0px; - .el-input__inner { - border-radius: 0px !important; - background-color: #061e51 !important; + .el-input__inner { + border-radius: 0px !important; + background-color: #061e51 !important; + } + } + + input::-webkit-input-placeholder { + color: #569ee1; + } + + input::-moz-placeholder { + color: #569ee1; + } + + input::-ms-input-placeholder { + color: #569ee1; + } + + input[type=text]:focus { + outline: 1px solid #17e4f6; + // box-shadow: 1px 0px 3px 0px #17e4f6; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + } + + .search-result { + margin: 5px 0px 0px 0px; + padding: 0px; + border: #051842; + height: 290px; + overflow-y: scroll; + background-color: transparent !important; + margin-bottom: -8px !important; + } + + .offline { + color: #64778B; + } + + .B-TMD-table-list { + margin-top: 10px; + text-align: left; + padding-left: 10px; + //color: #64778B; + color: #34e0ff; + width: 100%; + line-height: 25px; + background: url('../../assets/images/map-pages/icon/dd.png') no-repeat; + } + + .B-TMD-inp-button { + width: 46px; + height: 52px; + position: absolute; + bottom: 8px; + right: 16px; + background: url('../../assets/images/map-pages/icon/icon.png') no-repeat -481px 0; + cursor: pointer; + } + + .footer-page { + position: absolute; + background-color: transparent !important; + bottom: 10px !important; + margin-left: 0px; + border: none; + + .warnPagination { + .btn-quicknext, .btn-quickprev { + color: #e4e8f1 !important; + background-color: transparent; + // border: 1px solid #25AECD; + border-left: 1px solid #25AECD; + border-bottom: 1px solid #25AECD; + border-top: 1px solid #25AECD; + color: #e4e8f1; + } + + .el-pager li { + color: #e4e8f1; + background: transparent; + // border: 1px solid #25AECD; + border-left: 1px solid #25AECD; + border-bottom: 1px solid #25AECD; + border-top: 1px solid #25AECD; + } + + .el-pager li.active { + border-color: #25AECD; + background-color: rgba(38, 222, 253, 0.3); + color: #e4e8f1; + } + + .el-pager li:hover { + border-color: #25AECD; + background-color: rgba(38, 222, 253, 0.3); + color: #34e0ff; + } + + .btn-prev { + background-color: transparent; + // border: 1px solid #25AECD; + border-left: 1px solid #25AECD; + border-bottom: 1px solid #25AECD; + border-top: 1px solid #25AECD; + color: #e4e8f1; + } + + .btn-next { + background-color: transparent; + border: 1px solid #25AECD; + color: #e4e8f1; + } + } + } + + ::-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; + } + + .selectFrom { + color: #061e51; + border: 1px solid #061e51 !important; + background: #dcc805 !important; + + .el-select-dropdown__list { + background: #061e51 !important; + } + + .el-select-dropdown__item { + color: #949494; + background: #061e51 !important; + } + + .el-select-dropdown__item.hover, + .el-select-dropdown__item:hover { + color: #fff; + background: #061e51 !important; + } + + .popper__arrow { + background-color: #061e51 !important; + } + } } - } - - input::-webkit-input-placeholder { - color: #569ee1; - } - - input::-moz-placeholder { - color: #569ee1; - } - - input::-ms-input-placeholder { - color: #569ee1; - } - - input[type=text]:focus { - outline: 1px solid #17e4f6; - // box-shadow: 1px 0px 3px 0px #17e4f6; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - } - - .search-result { - margin: 5px 0px 0px 0px; - padding: 0px; - border: #051842; - height: 290px; - overflow-y: scroll; - background-color: transparent !important; - margin-bottom: -8px !important; - } - - .offline { - color: #64778B; - } - - .B-TMD-table-list { - margin-top: 10px; - text-align: left; - padding-left: 10px; - //color: #64778B; - color: #34e0ff; - width: 100%; - line-height: 25px; - background: url('../../assets/images/map-pages/icon/dd.png') no-repeat; - } - - .B-TMD-inp-button { - width: 46px; - height: 52px; - position: absolute; - bottom: 8px; - right: 16px; - background: url('../../assets/images/map-pages/icon/icon.png') no-repeat -481px 0; - cursor: pointer; - } - - .footer-page { - position: absolute; - background-color: transparent !important; - bottom: 10px !important; - margin-left: 0px; - border: none; - - .warnPagination { - .btn-quicknext, .btn-quickprev { - color: #e4e8f1 !important; - background-color: transparent; - // border: 1px solid #25AECD; - border-left: 1px solid #25AECD; - border-bottom: 1px solid #25AECD; - border-top: 1px solid #25AECD; - color: #e4e8f1; - } - - .el-pager li { - color: #e4e8f1; - background: transparent; - // border: 1px solid #25AECD; - border-left: 1px solid #25AECD; - border-bottom: 1px solid #25AECD; - border-top: 1px solid #25AECD; - } - - .el-pager li.active { - border-color: #25AECD; - background-color: rgba(38, 222, 253, 0.3); - color: #e4e8f1; - } - - .el-pager li:hover { - border-color: #25AECD; - background-color: rgba(38, 222, 253, 0.3); - color: #34e0ff; - } - - .btn-prev { - background-color: transparent; - // border: 1px solid #25AECD; - border-left: 1px solid #25AECD; - border-bottom: 1px solid #25AECD; - border-top: 1px solid #25AECD; - color: #e4e8f1; - } - - .btn-next { - background-color: transparent; - border: 1px solid #25AECD; - color: #e4e8f1; - } - } - } - - ::-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; - } - - .selectFrom { - color: #061e51; - border: 1px solid #061e51 !important; - background: #dcc805 !important; - - .el-select-dropdown__list { - background: #061e51 !important; - } - - .el-select-dropdown__item { - color: #949494; - background: #061e51 !important; - } - - .el-select-dropdown__item.hover, - .el-select-dropdown__item:hover { - color: #fff; - background: #061e51 !important; - } - - .popper__arrow { - background-color: #061e51 !important; - } - } -} </style> diff --git a/src/store/modules/map.js b/src/store/modules/map.js index a9d9fc5..2a1bff6 100644 --- a/src/store/modules/map.js +++ b/src/store/modules/map.js @@ -13,6 +13,7 @@ showServiceLayerFilter: false, // Service鍥惧眰杩囨护鍣� selectedServiceLayer: '', // 浣跨敤杩囨护鍣ㄦ椂锛岃鎵撳紑鐨刉MS鏈嶅姟鐨凜ODE serviceLayerFilters: {}, // 鏈嶅姟鍥惧眰鎺у埗杩囨护閰嶇疆 + checkedLayers: {}, // 閫変腑鍥惧眰瀵硅薄 mapConfig: mapConfig } const mutations = { @@ -22,6 +23,9 @@ setBasemapHelper (state, layerHelper) { state.basemapHelper = layerHelper }, + setCheckedLayers (state, checkedLayers) { + state.checkedLayers = checkedLayers + }, setServiceLayerHelper (state, layerHelper) { state.serviceLayerHelper = layerHelper }, diff --git a/src/views/MapTemplate.vue b/src/views/MapTemplate.vue index bde308c..6354a8c 100644 --- a/src/views/MapTemplate.vue +++ b/src/views/MapTemplate.vue @@ -1,18 +1,17 @@ <template> - <div class="full-screen"> - <popup ref="popup" @callPopup="callPopup"></popup> - <div id="map" ref="rootmap"> + <div class="full-screen"> + <popup ref="popup" @callPopup="callPopup"></popup> + <div id="map" ref="rootmap"> + </div> + <sgis-layer-controller :preset="'warningPreset'"> + <lc-basemap></lc-basemap> + <!-- <div class="barline"></div>--> + <lc-service-layer class="barline" v-if="lcServiceLayerVisible"></lc-service-layer> + </sgis-layer-controller> + <monitor-panel></monitor-panel> + <top-enterprise-panel></top-enterprise-panel> + <tool-box-panel></tool-box-panel> </div> - <sgis-layer-controller :preset="'warningPreset'"> - <lc-basemap></lc-basemap> - <!-- <div class="barline"></div>--> - <lc-service-layer class="barline"></lc-service-layer> - </sgis-layer-controller> - <lc-service-layer-filter v-show="showServiceLayerFilter" ref="serviceLayerFilter"></lc-service-layer-filter> - <monitor-panel></monitor-panel> - <top-enterprise-panel></top-enterprise-panel> - <tool-box-panel></tool-box-panel> - </div> </template> <script> @@ -22,11 +21,11 @@ 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/RightSearchPanel' import TopEnterprisePanel from '@components/panel/TopEnterprisePanel' import ToolBoxPanel from '@components/panel/ToolBoxPanel' import Popup from '@views/popup/Popup' + export default { name: 'MapTemplate', components: { @@ -36,21 +35,18 @@ MonitorPanel, LcBasemap, LcServiceLayer, - LcServiceLayerFilter, Popup }, data () { return { map: null, + lcServiceLayerVisible: false, basemapHelper: {}, serviceLayerHelper: {}, vectorLayerHelper: {} } }, computed: { - showServiceLayerFilter () { - return this.$store.state.map.showServiceLayerFilter - }, mapConfig () { return this.$store.state.map.mapConfig } @@ -62,10 +58,13 @@ }, methods: { saveMapStatus () { + window.serviceLayerHelper = this.serviceLayerHelper this.$store.commit('setMapObj', this.map) this.$store.commit('setBasemapHelper', this.basemapHelper) - this.$store.commit('setServiceLayerHelper', this.serviceLayerHelper) + // this.$store.commit('setServiceLayerHelper', this.serviceLayerHelper) this.$store.commit('setVectorLayerHelper', this.vectorLayerHelper) + + this.lcServiceLayerVisible = true }, init () { const mapcontainer = this.$refs.rootmap @@ -100,7 +99,12 @@ var marker = L.marker([32.2221, 118.7843], { icon: icon }).addTo(this.map) - .bindPopup(() => this.$refs.popup.$el, { className: 's-map-popup', minWidth: 300, closeButton: false, autoClose: false }) + .bindPopup(() => this.$refs.popup.$el, { + className: 's-map-popup', + minWidth: 300, + closeButton: false, + autoClose: false + }) .bindTooltip('瀛椾綋鍏夋檿鏁堟灉t.', { // permanent : true, offset: [0, 0], // 鍋忕Щ @@ -123,23 +127,23 @@ <style lang="less"> -.full-screen { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - position: absolute; + .full-screen { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + position: absolute; - #map { - height: 100%; - width: 100%; - } + #map { + height: 100%; + width: 100%; + } - .barline { - //width: 100%; - //height: 1px; - //background-color: #0661AE; - border-top: 1px solid #0661AE; - } -} + .barline { + //width: 100%; + //height: 1px; + //background-color: #0661AE; + border-top: 1px solid #0661AE; + } + } </style>> -- Gitblit v1.8.0