From faadb3a39e89b2cb7a00e81e3778f480f1f09998 Mon Sep 17 00:00:00 2001 From: chenyabin <Chenab123!> Date: 星期三, 14 四月 2021 17:38:27 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/develop' into develop --- src/components/BaseNav/PublicBounced/common/PublicTabs.vue | 2 src/components/panel/topicSearch/GasWasteSearch.vue | 15 +- src/conf/layers/LayerFsss.js | 2 src/assets/css/map/map-panel-style.less | 6 src/components/LayerController/service/LayerFactory.js | 52 +++++++- src/components/BaseNav/PublicBounced/common/PublicTable.vue | 16 ++ src/components/panel/topicSearch/SolidWasteSearch.vue | 97 +++++++++++---- src/components/panel/topicSearch/WaterWasteSearch.vue | 108 ++++++++++------- src/components/LayerController/logic/PipeLineAnimal.js | 28 ++++ src/conf/Constants.js | 3 src/components/LayerController/service/BusiLayerService.js | 3 src/components/panel/topicSearch/SewersSearch.vue | 16 +- src/components/helpers/WfsHelper.js | 10 + 13 files changed, 242 insertions(+), 116 deletions(-) diff --git a/src/assets/css/map/map-panel-style.less b/src/assets/css/map/map-panel-style.less index cf71c4b..2ed915f 100644 --- a/src/assets/css/map/map-panel-style.less +++ b/src/assets/css/map/map-panel-style.less @@ -393,6 +393,7 @@ } .el-table .cell, .el-table--border td:first-child .cell, .el-table--border th:first-child .cell { + text-align: center; } @@ -411,12 +412,9 @@ .el-table td, .el-table th.is-leaf { font-size: 0.08rem; } -.el-table td, .el-table th.is-leaf { - border-bottom: none; -} .el-table .warning-row { - background: #27304d; + background: #28304d; } .el-table .success-row { diff --git a/src/components/BaseNav/PublicBounced/common/PublicTable.vue b/src/components/BaseNav/PublicBounced/common/PublicTable.vue index 4b610e3..1515187 100644 --- a/src/components/BaseNav/PublicBounced/common/PublicTable.vue +++ b/src/components/BaseNav/PublicBounced/common/PublicTable.vue @@ -13,7 +13,7 @@ <span></span> <span></span> <div class="main-table"> - <el-table :data="listData" style="width: 100%" height="255px" :row-class-name="tableRowClassName"> + <el-table :data="listData" style="width: 100%" height="325px" :row-class-name="tableRowClassName"> <el-table-column v-for="(item, index) in listLabel" :key="index" :prop="item.prop" :label="item.label" :show-overflow-tooltip="true"></el-table-column> </el-table> @@ -62,7 +62,7 @@ }, mounted () { this.$nextTick(() => { - this.listData.push(this.displayContentTable[0], {}, {}) + this.listData.push(this.displayContentTable[0], {}, {}, {}, {}, {}, {}) }) }, methods: { @@ -100,8 +100,12 @@ // //border: 1px red solid; // } //} -/deep/ .el-table td, .el-table th.is-leaf { - border-bottom: none; +/deep/ .el-table td { + border-bottom: none !important; +} + +/deep/ .el-table th.is-leaf { + border-bottom: none !important; } /deep/ .el-table td { @@ -109,6 +113,10 @@ line-height: 45px !important; } +/deep/ .el-table tbody tr:hover > td { + background: none !important +} + .main { position: relative; background: rgba(33, 41, 69, 0.9); diff --git a/src/components/BaseNav/PublicBounced/common/PublicTabs.vue b/src/components/BaseNav/PublicBounced/common/PublicTabs.vue index a01b178..ba844dd 100644 --- a/src/components/BaseNav/PublicBounced/common/PublicTabs.vue +++ b/src/components/BaseNav/PublicBounced/common/PublicTabs.vue @@ -88,7 +88,7 @@ line-height: 0.09rem; padding: 0.03rem .5%; } - li:last-child { + .lastli { visibility: hidden } } diff --git a/src/components/LayerController/logic/PipeLineAnimal.js b/src/components/LayerController/logic/PipeLineAnimal.js new file mode 100644 index 0000000..585147b --- /dev/null +++ b/src/components/LayerController/logic/PipeLineAnimal.js @@ -0,0 +1,28 @@ +/** + * 绠$嚎鍔ㄧ敾鎺у埗閫昏緫 + */ +const layerPipeLines = require('../../../conf/layers/LayerPipeLines').LayerPipeLines + +module.exports = function () { + this.init = (layer, L) => { + console.log('sssssss') + const layers = layerPipeLines.layers + for (var i = 0; i < layers.length; i++) { + const config = layers[i] + const code = config.code + const layer = window.layerFactory.layers[code] + layer.setStyle({ + FILL: true, + WEIGHT: 3, + FILL_COLOR: '#73b2ff', + COLOR: '#73b2ff', + FILL_OPACITY: 0.2, + OPACITY: 1, + DASH_ARRAY: '4,4', + DASH_SPPED: -5, + ICON_SIZE: [10, 10] + }) + console.log(layer) + } + } +} diff --git a/src/components/LayerController/service/BusiLayerService.js b/src/components/LayerController/service/BusiLayerService.js index e8f8d03..0a8f958 100644 --- a/src/components/LayerController/service/BusiLayerService.js +++ b/src/components/LayerController/service/BusiLayerService.js @@ -13,9 +13,10 @@ init (layer) { // 寮曞叆 鍏宠仈鐨刯s锛屽湪constant.js涓牴鎹甤onfig閰嶇疆鐨刬d寰楀埌澶勭悊js const id = this.config.code + console.log(id) const file = logicMapper[id] if (!file) { - console.log('鎵句笉鍒伴�昏緫澶勭悊js!!!') + console.log('鎵句笉鍒伴�昏緫澶勭悊js!!!' + id) } else { var BusiLayer = require('../logic/' + file) var busiLayer = new BusiLayer() diff --git a/src/components/LayerController/service/LayerFactory.js b/src/components/LayerController/service/LayerFactory.js index 593b5fd..ae561e5 100644 --- a/src/components/LayerController/service/LayerFactory.js +++ b/src/components/LayerController/service/LayerFactory.js @@ -21,7 +21,7 @@ var checked = config.checked checked && this.load(config) - checked && this.toggleZoomByConfnig(config) + checked && this.toggleZoomByConfig(config) } } } @@ -43,14 +43,14 @@ var childLayer = config.childLayer layers && this.toggleZoomByLayer(layers) childLayer && this.toggleZoomByLayer(childLayer) - this.toggleZoomByConfnig(config) + this.toggleZoomByConfig(config) } } else { - this.toggleZoomByConfnig(layerConfig) + this.toggleZoomByConfig(layerConfig) } } - toggleZoomByConfnig (config) { + toggleZoomByConfig (config) { const zoom = this.map.getZoom() var checked = config.checked if (checked && config.minZoom) { @@ -112,25 +112,57 @@ } - flyByLayerId (layerId, bound) { - for (var k in this.layers) { + flyByLayerId (code, id) { + const layer = this.layers[code] + + if (layer.eachLayer) { + layer.eachLayer(function (layer) { + const layers = layer.getLayers() + for (var i = 0; i < layers.length; i++) { + const lay = layers[i] + const feature = lay.feature + lay.closePopup() + if (feature.id === id) { + lay.openPopup() + break + } + } + }) + } + /* for (var k in this.layers) { var layerGroup = this.layers[k] + layerGroup.eachLayer(function (layer) { + console.log(layer) + console.log(layer.getAttribution()) + }) var layers = layerGroup.getLayers() if (layers) { for (var m = 0; m < layers.length; m++) { var layer = layers[m] - console.log(layer.toGeoJSON()) - /* var feature = layer.feature + console.log(layer) + console.log(layer.getLayerId(val.id)) + /!* var feature = layer.feature if (feature.id === layerId) { this.map.flyToBounds(bound) return layer - } */ + } *!/ } } - } + } */ return null } + findLayerById (layer, id) { + const layers = layer.getLayers + if (layers) { + this.findLayerById(layer.getLayers(), id) + } else { + layer.eachLayer(function (layer) { + console.log(layer) + }) + } + } + /** * todo 杩欓噷鏃犳晥锛岃矊浼兼槸鍥犱负geojson鍔犺浇鍒板湴鍥句篃鏄釜layergroup * diff --git a/src/components/helpers/WfsHelper.js b/src/components/helpers/WfsHelper.js index b9cd594..20093e6 100644 --- a/src/components/helpers/WfsHelper.js +++ b/src/components/helpers/WfsHelper.js @@ -1,11 +1,11 @@ /** * 鍔犺浇WMS,鎷兼帴FILTER,LAYERS鍙傛暟绛� */ -import MapConfig from '../../conf/MapConfig' +import { PIPELINE_WFS } from '../../conf/Constants' function WfsHelper () { this.filters = [] this.typeNames = [] - this.url = MapConfig.PIPELINE_WFS + this.url = PIPELINE_WFS this.params = { REQUEST: 'getfeature', OUTPUTFORMAT: 'JSON', @@ -23,8 +23,10 @@ } this.addLike = (property, literal) => { - var filter = '<PropertyIsLike><PropertyName>' + property + '</PropertyName><Literal>*' + literal + '*</Literal></PropertyIsLike>' - this.filters.push(filter) + if (property && literal) { + var filter = '<PropertyIsLike><PropertyName>' + property + '</PropertyName><Literal>*' + literal + '*</Literal></PropertyIsLike>' + this.filters.push(filter) + } } /** diff --git a/src/components/panel/topicSearch/GasWasteSearch.vue b/src/components/panel/topicSearch/GasWasteSearch.vue index b390331..1e0ac3b 100644 --- a/src/components/panel/topicSearch/GasWasteSearch.vue +++ b/src/components/panel/topicSearch/GasWasteSearch.vue @@ -64,7 +64,7 @@ </el-form> </div> <el-scrollbar style="height:264px"> - <div class="environmental-risk-list" ><!-- v-for="(item,index) in list" :key="index" --> + <div class="environmental-risk-list" v-for="(item,index) in list" :key="index" @click="handleLocation(item)"><!-- --> <i class="state"></i> <div> <h3>###鐐煎寲閮�</h3> @@ -165,16 +165,15 @@ // const res = await AjaxUtils.GetDataAsynByUrl(wfsHelper.getUrl(), {}) const res = await mapApi.getWasteGas() console.log(res) - if (res.data instanceof Object && Object.prototype.hasOwnProperty.call(res.data, 'features')) { - this.list = res.data.features - } + this.list = res.Result.DataInfo + // if (res.data instanceof Object && Object.prototype.hasOwnProperty.call(res.data, 'features')) { + // this.list = res.data.features + // } }, handleLocation (val) { console.log(val) - const bound = this.L.geoJSON([val], {}).getBounds() - var layer = window.serviceLayerHelper.getByLayerId(val.id) - layer && layer.openPopup() - this.$store.state.map.map.flyToBounds(bound) + const pos = [val.Latitude, val.Longitude] + window.map.flyTo(pos, 17) } } } diff --git a/src/components/panel/topicSearch/SewersSearch.vue b/src/components/panel/topicSearch/SewersSearch.vue index f32abb2..712dc17 100644 --- a/src/components/panel/topicSearch/SewersSearch.vue +++ b/src/components/panel/topicSearch/SewersSearch.vue @@ -17,13 +17,13 @@ </el-select> </el-form-item> <el-form-item :label="form.pipelineType+'锛�'" size="mini"> - <el-select style="width: 100%" v-model="form.dataType" :popper-class="'select-down'"> + <el-select style="width: 100%" v-model="form.dataType" value-key="code" :popper-class="'select-down'"> <!-- @change="handleDataType"--> <el-option v-for="item in subItems" :key="item.code" :label="item.name" - :value="item.name"> + :value="item"> </el-option> </el-select> </el-form-item> @@ -37,13 +37,12 @@ <el-scrollbar style="height:380.44px;"> <div class="environmental-risk-list" v-for="(item,index) in list" :key="index"> <div @click="handleLocation(item)"> - <h3 class="B-TMD-table-list-title-y" - :class="['B-TMD-table-list-title-y-nam', { 'warning': item.vehicleStatus==='910003' }, { 'offline': item.vehicleStatus==='910001' }]"> + <h3 class="B-TMD-table-list-title-y"> {{ item.properties.pipename }}</h3> - <p v-for="itm in labelList" :key="itm.label"> + <!--<p v-for="itm in labelList" :key="itm.label"> <span>{{ itm.label }}锛�</span> <span :title="item.properties[itm.key] ">{{ item.properties[itm.key] }}</span> - </p> + </p>--> </div> </div> </el-scrollbar> @@ -126,7 +125,7 @@ async handleSearch () { var wfsHelper = new WfsHelper() // todo 鐜板湪绠$綉杩樻病鍖哄垎寮�绫诲瀷锛屽悗闈㈡敼 - wfsHelper.addTypeName('绠$綉') + wfsHelper.addTypeName(this.form.dataType.name) wfsHelper.addLike('name', this.form.keyword) // const _this = this const res = await AjaxUtils.GetDataAsynByUrl(wfsHelper.getUrl(), {}) @@ -136,10 +135,9 @@ } }, handleLocation (val) { - console.log(val) const bound = this.L.geoJSON([val], {}).getBounds() - // var layer = window.layerFactory.flyByLayerId(val.id, bound) window.map.flyToBounds(bound) + window.layerFactory.flyByLayerId(this.form.dataType.code, val.id) // layer && layer.openPopup() } } diff --git a/src/components/panel/topicSearch/SolidWasteSearch.vue b/src/components/panel/topicSearch/SolidWasteSearch.vue index 676551d..a974f81 100644 --- a/src/components/panel/topicSearch/SolidWasteSearch.vue +++ b/src/components/panel/topicSearch/SolidWasteSearch.vue @@ -15,7 +15,7 @@ </el-option> </el-select> </el-form-item> - <el-radio-group v-model="form.type" class="levelOfRisk"> + <el-radio-group v-model="form.transferData" class="levelOfRisk"> <el-radio v-for="(item,index) in levelOfRisk" :label="item.value" :key="index"> <span class="levelOfRisk-type">{{ item.name }}</span> </el-radio> @@ -43,6 +43,7 @@ <script> import mapApi from '@/api/mapApi' +import publicBounced from '@/components/BaseNav/PublicBounced/PublicBounced' export default { name: 'SolidWasteSearch', @@ -115,47 +116,87 @@ key: 'length' }] }], - levelOfRisk: [ - { - name: '鍏ㄩ儴', - value: '1' - }, - { - name: '姝e父', - value: '2' - }, - { - name: '棰勮', - value: '3' - } - ], form: { keyword: '鍥哄簾闈㈡澘鏁版嵁鏌ヨ', // 鏁版嵁鐨勪紶閫� - transferData: '' + transferData: 1 }, + levelOfRisk: [ + { + name: '鍏ㄩ儴', + value: 1 + }, + { + name: '姝e父', + value: 2 + }, + { + name: '棰勮', + value: 3 + } + ], // 鏁版嵁鎼滅储涔嬪悗锛屽瓨鍌ㄦ暟鎹殑 - searchDataDisplay: [] + searchDataDisplay: [], + searchDataDisplayName: '', + searchDataDisplayId: '' } }, methods: { - setBounced (val) { - const pos = [val.Latitude, val.Longitude] - window.map.flyTo(pos, 11) - }, - handlePipelineType (val) { - this.solidWasteTypeOptions.forEach(item => { - if (val === item.value) { - this.handleSearch(item.value) - } - }) - }, // 鐐瑰嚮鎼滅储瀹炵幇鏁版嵁鐨勬悳绱㈠睍绀� async handleSearch (data) { // console.log(this.form.keyword) const result = await mapApi.getSolidWaste(data) console.log(result) this.searchDataDisplay = result.Result.DataInfo + this.searchDataDisplayName = result.Result.DataInfo[0].Name + this.searchDataDisplayId = result.Result.DataInfo[0].StoragePlaceId + console.log(this.searchDataDisplayName) + }, + // 鏁版嵁灞曠ず,鐐瑰嚮杩涜寮规鍙婄偣鐨勫睍绀� + setBounced (val) { + const pos = [val.Latitude, val.Longitude] + window.map.flyTo(pos, 11) + const t1 = setTimeout(async () => { + const dataValue = { + StoragePlaceId: this.searchDataDisplayId + } + // console.log(e.layer.options.totransferData.Name) + // 寮规鏍囬 + const title = this.searchDataDisplayName + console.log(title) + // 鍩烘湰淇℃伅 tabs + const resultBasic = await mapApi.getSolidWasteBaseInfo(dataValue) + // 璇︾粏淇℃伅灞曠ず table + const resultDetailed = await mapApi.getSolidWasteDetail(dataValue) + + // 缁戝畾寮规瀹炰緥 + const PublicBounced = window.Vue.extend(publicBounced) + const instance = new PublicBounced().$mount() + document.body.appendChild(instance.$el) + // document.body.removeChild(instance.$el) + // 閫氳繃鏂规硶 鍚戠粦瀹氬脊妗嗕紶閫掓暟鎹� + instance.setData(title, resultBasic.Result.DataInfo, resultDetailed.Result.DataInfo, 'gufei') + // this.setPanTo(e.latlng, 300) + }, 3000) + console.log(t1) + // clearTimeout(t1) + }, + + // flayTo() 寮规鐨勫彲婊戝姩浜嬩欢 + setPanTo (pos, value) { + var position = pos + position = window.map.latLngToLayerPoint(position) + position.y += value + position = window.map.layerPointToLatLng(position) + window.map.flyTo(position) + }, + // select鐨刼ption鐨勬暟鎹�夋嫨 + handlePipelineType (val) { + this.solidWasteTypeOptions.forEach(item => { + if (val === item.value) { + this.handleSearch(item.value) + } + }) } } } diff --git a/src/components/panel/topicSearch/WaterWasteSearch.vue b/src/components/panel/topicSearch/WaterWasteSearch.vue index 11992d8..edad7fb 100644 --- a/src/components/panel/topicSearch/WaterWasteSearch.vue +++ b/src/components/panel/topicSearch/WaterWasteSearch.vue @@ -1,40 +1,44 @@ <template> - <div class="sewers-search" v-if="judgeVisible"> - <div class="panel-title">{{title}}</div> - <div class="search-panel "> - <el-form ref="form" :model="form" label-width="90px" class="search-form"> - <el-form-item v-for="(item,index) in solidWasteTypeOptions" :key="index" :label="item.label+'锛�'" size="mini" - class="search-panel-item"> - <el-select style="width: 100%" v-model="form.pipelineType" @change="handlePipelineType" - :popper-class="'select-down'"> - <el-option - v-for="item in solidWasteTypeOptions" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-radio-group v-model="form.type" class="levelOfRisk"> - <el-radio v-for="(item,index) in levelOfRisk" :label="item.value" :key="index"><span class="levelOfRisk-type">{{item.name}}</span></el-radio> - </el-radio-group> - <div class="rightButtonSearch"> - <el-input v-model="form.keyword" size="mini" placeholder="鍦ㄦ杈撳叆鍏抽敭瀛楁悳绱�"></el-input> - <el-button class="el-icon-search" @click="handleSearch"></el-button> - </div> - </el-form> + <div class="sewers-search" v-if="judgeVisible"> + <div class="panel-title">{{ title }}</div> + <div class="search-panel "> + <el-form ref="form" :model="form" label-width="90px" class="search-form"> + <el-form-item v-for="(item,index) in solidWasteTypeOptions" :key="index" :label="item.label+'锛�'" size="mini" + class="search-panel-item"> + <el-select style="width: 100%" v-model="form.pipelineType" @change="handlePipelineType" + :popper-class="'select-down'"> + <el-option + v-for="item in solidWasteTypeOptions" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-radio-group v-model="form.type" class="levelOfRisk"> + <el-radio v-for="(item,index) in levelOfRisk" :label="item.value" :key="index"><span class="levelOfRisk-type">{{ + item.name + }}</span> + </el-radio> + </el-radio-group> + <div class="rightButtonSearch"> + <el-input v-model="form.keyword" size="mini" placeholder="鍦ㄦ杈撳叆鍏抽敭瀛楁悳绱�"></el-input> + <el-button class="el-icon-search" @click="handleSearch"></el-button> </div> - <el-scrollbar style="height:264px"> - <div class="environmental-risk-list" v-for="(item,index) in searchDataDisplay" :key="index" ><!-- v-for="(item,index) in list" :key="index" --> - <i class="state"></i> - <div> - <h3>###鐐煎寲閮�</h3> - <p>鎵�灞為儴闂細<span>鐐煎寲閮�</span></p> - <p>椋庨櫓绾у埆锛�<span>涓夌骇</span></p> - </div> - </div> - </el-scrollbar> + </el-form> </div> + <el-scrollbar style="height:264px"> + <div class="environmental-risk-list" v-for="(item,index) in list" :key="index" @click="handleLocation(item)"> + <!-- v-for="(item,index) in list" :key="index" --> + <i class="state"></i> + <div> + <h3>###鐐煎寲閮�</h3> + <p>鎵�灞為儴闂細<span>鐐煎寲閮�</span></p> + <p>椋庨櫓绾у埆锛�<span>涓夌骇</span></p> + </div> + </div> + </el-scrollbar> + </div> </template> <script> @@ -47,12 +51,28 @@ data () { return { levelOfRisk: [ - { name: '鍏ㄩ儴', value: '1' }, - { name: '姝e父', value: '2' }, - { name: '瓒呮爣', value: '3' }, - { name: '寮傚父', value: '4' }, - { name: '鍋滀骇', value: '5' } + { + name: '鍏ㄩ儴', + value: '1' + }, + { + name: '姝e父', + value: '2' + }, + { + name: '瓒呮爣', + value: '3' + }, + { + name: '寮傚父', + value: '4' + }, + { + name: '鍋滀骇', + value: '5' + } ], + list: [], judgeVisible: true, solidWasteTypeOptions: [{ value: '1', @@ -144,15 +164,13 @@ // console.log(this.form.keyword) const result = await mapApi.getWasteWater() console.log(result) - this.searchDataDisplay = result.Result.DataInfo + this.list = result.Result.DataInfo this.total = result.Result.DataInfo.length }, handleLocation (val) { - // console.log(val) - const bound = this.L.geoJSON([val], {}).getBounds() - var layer = window.serviceLayerHelper.getByLayerId(val.id) - layer && layer.openPopup() - this.$store.state.map.map.flyToBounds(bound) + console.log(val) + const pos = [val.Latitude, val.Longitude] + window.map.flyTo(pos, 17) } } } diff --git a/src/conf/Constants.js b/src/conf/Constants.js index f78ac95..d4c087e 100644 --- a/src/conf/Constants.js +++ b/src/conf/Constants.js @@ -10,7 +10,8 @@ wasteGasPfk: 'WasteGas.js', wasteWaterPfk: 'WasteWater.js', wasteSolidCcd: 'SolidWaste.js', - sewersAreaGs: 'Company.js' + sewersAreaGs: 'Company.js', + pipesegment: 'PipeLineAnimal.js' } export const STYLES = { diff --git a/src/conf/layers/LayerFsss.js b/src/conf/layers/LayerFsss.js index 01a5615..4fb6a1d 100644 --- a/src/conf/layers/LayerFsss.js +++ b/src/conf/layers/LayerFsss.js @@ -54,7 +54,7 @@ code: 'pipesegment', name: '娴佸悜', sname: 'ywslx', - wfs: WFS_URL + '?TYPENAME=娴佸悜', + url: 'pipesegment', checked: false }, { -- Gitblit v1.8.0