Merge branch 'develop' of http://xearth.cn:6600/r/wuyushui/SewerAndRainNetwork into develop
Conflicts:
src/components/BaseNav/PublicBounced/GasComponents/ECharts.vue
| | |
| | | .el-table .success-row { |
| | | background: #30455f; |
| | | } |
| | | .el-table tbody tr:hover>td { |
| | | background-color:#28304d !important; |
| | | } |
| | | /***********************************************动画效果************/ |
| | | .transition{ |
| | | transition: all .5s; |
| | |
| | | margin: 0 auto; |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | <el-button size="mini" round @click="dialogVisible = true">明细表</el-button> |
| | | <el-dialog :visible.sync="dialogVisible" |
| | | :append-to-body="true" |
| | | :title="this.$attrs.value==='feiqi'?this.$attrs.getWasteGasDetails[0].OnLineMonEmissPointName:this.$attrs.getWasteWaterMonitoringDetails[0].OnLineMonEmissPointName" |
| | | width="68%" |
| | | center |
| | | v-dialogDrag |
| | |
| | | |
| | | <script> |
| | | import PublicDetailedList from '@components/BaseNav/PublicBounced/GasComponents/PublicDetailedList' |
| | | |
| | | export default { |
| | | name: 'ECharts', |
| | | components: { |
| | |
| | | }, |
| | | grid: { |
| | | left: '3%', |
| | | right: '3%', |
| | | right: '1%', |
| | | bottom: '3%', |
| | | // top: '1%', |
| | | containLabel: true |
| | |
| | | methods: { |
| | | tabTaggle (taggleMenu) { |
| | | this.currentTab = taggleMenu |
| | | debugger |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | }, |
| | | mounted () { |
| | | this.tableData = this.$attrs.getWasteGasDetails |
| | | // console.log(this.$attrs.getWasteGasDetails) |
| | | this.tableData = this.$attrs.getWasteWaterMonitoringDetails |
| | | console.log(this.$attrs.getWasteWaterMonitoringDetails) |
| | | console.log(this.$attrs.value) |
| | | if (this.$attrs.value === 'feiqi') { |
| | | this.tableData = this.$attrs.getWasteGasDetails |
| | | // console.log(this.$attrs.getWasteGasDetails) |
| | | } else if (this.$attrs.value === 'feishui') { |
| | | this.tableData = this.$attrs.getWasteWaterMonitoringDetails |
| | | // console.log(this.$attrs.getWasteWaterMonitoringDetails) |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | <el-table :data="listData" style="width: 100%" stripe='stripe' |
| | | :height="300" |
| | | tooltip-effect="dark" :row-class-name="tableRowClassName"> |
| | | <el-table-column v-for="(item, index) in listLabel" :key="index" :prop="item.prop" |
| | | :label="item.label"></el-table-column> |
| | | <el-table-column v-for="(item, index) in listLabel" :key="index" :prop="item.prop" :label="item.label"></el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | |
| | | .win { |
| | | position: relative; |
| | | background-color: rgba(33, 41, 69, 0.9); |
| | | min-height: 354px; |
| | | //min-height: 354px; |
| | | height: 208px; |
| | | } |
| | | |
| | | .main { |
| | |
| | | |
| | | .main-table { |
| | | width: 100%; |
| | | min-height: 195px; |
| | | //min-height: 195px; |
| | | //border: 1px @color solid; |
| | | |
| | | video { |
| | |
| | | props: ['displayContentTab', 'value', 'setWasteGasdata', 'setWasteWaterdata'], |
| | | data () { |
| | | return { |
| | | tabData: [] |
| | | tabData: [], |
| | | listLabel: [ |
| | | { |
| | | label: '序号', |
| | | prop: 'StoragePlaceId' |
| | | }, |
| | | { |
| | | label: '类别', |
| | | prop: 'StoragePlaceTypeName' |
| | | }, |
| | | { |
| | | label: '固废名称', |
| | | prop: 'StoragePlaceName' |
| | | }, |
| | | { |
| | | label: '代码', |
| | | prop: 'StorageZDMJ' |
| | | }, |
| | | { |
| | | label: '产生量(t)', |
| | | prop: 'StorageZCL' |
| | | }, |
| | | { |
| | | label: '贮存量(t)', |
| | | prop: 'StorageZCNL' |
| | | }, |
| | | { |
| | | label: '产生装置', |
| | | prop: 'StorageType' |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | mounted () { |
| | |
| | | z-index: 999; |
| | | position: absolute; |
| | | width: 10px; |
| | | //height: 10px; |
| | | height: 10px; |
| | | background: rgba(0, 0, 0, 0); |
| | | border: 1px solid #47d5ea; |
| | | } |
| | |
| | | .win { |
| | | position: relative; |
| | | background-color: rgba(33, 41, 69,0.9); |
| | | height: 300px; |
| | | } |
| | | .main { |
| | | border: 1px solid #396d83; |
| | | padding: 6px; |
| | | //.main-video { |
| | | height: 432px; |
| | | video { |
| | | width: 100%; |
| | | height: 432px; |
| | | height: 100%; |
| | | outline: none; |
| | | } |
| | | //} |
| | |
| | | <template> |
| | | <div class="public-bounced" v-draw v-if="flag"> |
| | | <div class="public-bounced-title"> |
| | | <span>{{ displayContentTitle }}</span> |
| | | <i class="el-icon-circle-close" @click="closePopup"></i> |
| | | </div> |
| | | <div class="public-bounced-content"> |
| | | <div class="public-bounced-content-left"> |
| | | <public-tabs :displayContentTab="displayContentTab" :value="value" |
| | | :setWasteGasdata="setWasteGasdata" :setWasteWaterdata="setWasteWaterdata"></public-tabs> |
| | | <div class="public-bounced-content-left-bottom"> |
| | | <public-table v-if="value === 'gufei'" |
| | | :displayContentTable="displayContentTable"></public-table> |
| | | <public-chart v-else :getWasteGasDetails="getWasteGasDetails" |
| | | :getWasteWaterMonitoringDetails="getWasteWaterMonitoringDetails" |
| | | :getWasteWaterMonitoring="getWasteWaterMonitoring"> |
| | | </public-chart> |
| | | </div> |
| | | </div> |
| | | <div class="public-bounced-content-right"> |
| | | <public-video></public-video> |
| | | </div> |
| | | </div> |
| | | <div class="public-bounced" v-drag v-if="flag"> |
| | | <div class="public-bounced-title"> |
| | | <span>{{ displayContentTitle }}</span> |
| | | <i class="el-icon-circle-close" @click="closePopup"></i> |
| | | </div> |
| | | <div class="public-bounced-content"> |
| | | <div class="public-bounced-content-left"> |
| | | <public-tabs :displayContentTab="displayContentTab" :value="value" |
| | | :setWasteGasdata="setWasteGasdata" :setWasteWaterdata="setWasteWaterdata"></public-tabs> |
| | | <div class="public-bounced-content-left-bottom"> |
| | | <public-table v-if="value === 'gufei'" |
| | | :displayContentTable="displayContentTable"></public-table> |
| | | <public-chart v-else :getWasteGasDetails="getWasteGasDetails" |
| | | :value="value" |
| | | :getWasteWaterMonitoring="getWasteWaterMonitoring" |
| | | :getWasteWaterMonitoringDetails="getWasteWaterMonitoringDetails |
| | | "></public-chart> |
| | | </div> |
| | | </div> |
| | | <div class="public-bounced-content-right"> |
| | | <public-video></public-video> |
| | | </div> |
| | | </div> |
| | | <!-- <el-dialog--> |
| | | <!-- :visible.sync="flag"--> |
| | | <!-- width="70%"--> |
| | | <!-- v-drag--> |
| | | <!-- :modal="false">--> |
| | | <!-- <div class="public-bounced-title">--> |
| | | <!-- <span>{{ displayContentTitle }}</span>--> |
| | | <!-- <i class="el-icon-circle-close" @click="closePopup"></i>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="public-bounced-content">--> |
| | | <!-- <div class="public-bounced-content-left">--> |
| | | <!-- <public-tabs :displayContentTab="displayContentTab" :value="value"--> |
| | | <!-- :setWasteGasdata="setWasteGasdata" :setWasteWaterdata="setWasteWaterdata"></public-tabs>--> |
| | | <!-- <div class="public-bounced-content-left-bottom">--> |
| | | <!-- <public-table v-if="value === 'gufei'"--> |
| | | <!-- :displayContentTable="displayContentTable"></public-table>--> |
| | | <!-- <public-chart v-else :getWasteGasDetails="getWasteGasDetails"--> |
| | | <!-- :getWasteWaterMonitoring="getWasteWaterMonitoring"></public-chart>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="public-bounced-content-right">--> |
| | | <!-- <public-video></public-video>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </el-dialog>--> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | closePopup () { |
| | | this.flag = false |
| | | }, |
| | | setData (dataBasic, dataDetailed, value) { |
| | | this.flag = true |
| | | this.value = value |
| | |
| | | this.displayContentTitle = dataWater.Name |
| | | this.flag = true |
| | | this.value = value |
| | | }, |
| | | closePopup () { |
| | | this.flag = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | .public-bounced { |
| | | width: 75%; |
| | | z-index: 999; |
| | | position: absolute; |
| | | bottom: 5%; |
| | | left: 15%; |
| | | background-color: #002432; |
| | | border: 1px #9fc5c8 solid; |
| | | .public-bounced { |
| | | width: 75%; |
| | | //height: 520px; |
| | | height: 40%; |
| | | z-index: 999; |
| | | position: absolute; |
| | | bottom: 5%; |
| | | left: 15%; |
| | | background-color: #002432; |
| | | border: 1px #9fc5c8 solid; |
| | | |
| | | .public-bounced-title { |
| | | border: 1px #a4c0d8 solid; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | padding: 5px 0; |
| | | .public-bounced-title { |
| | | border: 1px #a4c0d8 solid; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | padding: 5px 0; |
| | | |
| | | span { |
| | | color: #f4f7ff; |
| | | margin: 0 15px; |
| | | font-size: 14px; |
| | | } |
| | | |
| | | i { |
| | | color: white; |
| | | margin: 0 15px; |
| | | font-size: 22px; |
| | | } |
| | | } |
| | | |
| | | .public-bounced-content { |
| | | margin: 15px auto; |
| | | display: flex; |
| | | //align-items: center; |
| | | justify-content: space-around; |
| | | padding: 10px; |
| | | |
| | | .public-bounced-content-left { |
| | | flex: 3; |
| | | height: 100%; |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .public-bounced-content-right { |
| | | flex: 2; |
| | | //width: 48%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | span { |
| | | color: #f4f7ff; |
| | | margin: 0 15px; |
| | | font-size: 14px; |
| | | } |
| | | |
| | | i { |
| | | color: white; |
| | | margin: 0 15px; |
| | | font-size: 22px; |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | |
| | | .public-bounced-content { |
| | | margin: 15px 0; |
| | | display: flex; |
| | | //align-items: center; |
| | | justify-content: space-around; |
| | | padding: 10px; |
| | | |
| | | .public-bounced-content-left { |
| | | flex: 3; |
| | | height: 100%; |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .public-bounced-content-right { |
| | | flex: 2; |
| | | //width: 48%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | import Vue from 'vue' |
| | | |
| | | // 自定义元素实现弹框拖拽[重点] |
| | | Vue.directive('draw', { |
| | | // inserted: function (el, binding, vNode) { |
| | | // el.setAttribute('style', 'position: fixed; z-index: 9999') |
| | | // }, |
| | | bind: function (el, bindding, vNode) { |
| | | el.setAttribute('draggable', true) |
| | | let left, top, width, height |
| | | el._dragstart = function (event) { |
| | | event.stopPropagation() |
| | | left = event.clientX - el.offsetLeft |
| | | top = event.clientY - el.offsetTop |
| | | width = el.offsetWidth |
| | | height = el.offsetHeight |
| | | } |
| | | el._checkPosition = function () { // 防止被拖出边界 |
| | | const width = el.offsetWidth |
| | | const height = el.offsetHeight |
| | | let left = Math.min(el.offsetLeft, document.body.clientWidth - width) |
| | | left = Math.max(0, left) |
| | | let top = Math.min(el.offsetTop, document.body.clientHeight - height) |
| | | top = Math.max(0, top) |
| | | el.style.left = left + 'px' |
| | | el.style.top = top + 'px' |
| | | el.style.width = width + 'px' |
| | | el.style.height = height + 'px' |
| | | } |
| | | el._dragEnd = function (event) { |
| | | event.stopPropagation() |
| | | left = event.clientX - left |
| | | top = event.clientY - top |
| | | el.style.left = left + 'px' |
| | | el.style.top = top + 'px' |
| | | el.style.width = width + 'px' |
| | | el.style.height = height + 'px' |
| | | el._checkPosition() |
| | | } |
| | | el._documentAllowDraop = function (event) { |
| | | event.preventDefault() |
| | | } |
| | | document.body.addEventListener('dragover', el._documentAllowDraop) |
| | | el.addEventListener('dragstart', el._dragstart) |
| | | el.addEventListener('dragend', el._dragEnd) |
| | | window.addEventListener('resize', el._checkPosition) |
| | | // 使用Vue.directive()定义一个全局指令 |
| | | // 1.参数一:指令的名称,定义时指令前面不需要写v- |
| | | // 2.参数二:是一个对象,该对象中有相关的操作函数 |
| | | // 3.在调用的时候必须写v- |
| | | const drag = Vue.directive('drag', { |
| | | // 1.指令绑定到元素上回立刻执行bind函数,只执行一次 |
| | | // 2.每个函数中第一个参数永远是el,表示绑定指令的元素,el参数是原生js对象 |
| | | // 3.通过el.focus()是无法获取焦点的,因为只有插入DOM后才生效 |
| | | bind: function (el) { |
| | | el.style.cursor = 'move' // 鼠标样式变move样式 |
| | | }, |
| | | // inserted表示一个元素,插入到DOM中会执行inserted函数,只触发一次 |
| | | inserted: function (el) { |
| | | el.onmousedown = function (e) { |
| | | var distX = e.pageX - el.offsetLeft |
| | | var distY = e.pageY - el.offsetTop |
| | | // console.log('元素本身的高:' + el.clientHeight + ',元素本身的宽:' + el.clientWidth) |
| | | |
| | | unbind: function (el, bindding, vNode) { |
| | | document.body.removeEventListener('dragover', el._documentAllowDraop) |
| | | el.removeEventListener('dragstart', el._dragstart) |
| | | el.removeEventListener('dragend', el._dragEnd) |
| | | window.removeEventListener('resize', el._checkPosition) |
| | | delete el._documentAllowDraop |
| | | delete el._dragstart |
| | | delete el._dragEnd |
| | | delete el._checkPosition |
| | | if (e.preventDefault) { |
| | | e.preventDefault() |
| | | } else { |
| | | e.returnValue = false |
| | | } |
| | | // 解决快速拖动滞后问题 |
| | | |
| | | document.onmousemove = function (e) { |
| | | // 用鼠标的位置减去鼠标相对元素的位置,得到元素的位置 |
| | | let left = e.clientX - distX |
| | | let top = e.clientY - distY |
| | | |
| | | if (left <= 0) { |
| | | left = 5 // 设置成5是为了不离边缘太近 |
| | | } else if (left > document.documentElement.clientWidth - el.clientWidth) { |
| | | // document.documentElement.clientWidth 屏幕的可视宽度 |
| | | left = document.documentElement.clientWidth - el.clientWidth - 5 |
| | | } |
| | | if (top <= 0) { |
| | | top = 5 |
| | | } else if (top > document.documentElement.clientHeight - el.clientHeight) { |
| | | top = document.documentElement.clientHeight - el.clientHeight - 5 |
| | | } |
| | | el.style.left = left + 'px' |
| | | el.style.top = top + 'px' |
| | | } |
| | | document.onmouseup = function () { |
| | | document.onmousemove = document.onmouseup = null |
| | | } |
| | | } |
| | | }, |
| | | // 当VNode更新的时候会执行updated,可以触发多次 |
| | | updated: function (el) { |
| | | } |
| | | }) |
| | | export default drag |
| | |
| | | <template> |
| | | <div :class='["float-panel",layerControllerVisible ? "active" : ""]' > |
| | | <div @click="showPanel" class="iconBtn" :class='layerControllerVisible ? "active-button" : ""' v-show="!layerControllerVisible" style=" position: absolute;top:0;left: 0;"> |
| | | |
| | | <el-tooltip :popper-class="'map-tooltip'" effect="dark" content="图层" placement="left"> |
| | | <div @click="showPanel" class="iconBtn" :class='layerControllerVisible ? "active-button" : ""' v-show="!layerControllerVisible" style=" position: absolute;top:0;left: 0;"> |
| | | <img src="@assets/images/map-pages/icon/layer.png" alt="" class="icon"> |
| | | <!-- <span class="icon-name">图层</span>--> |
| | | </div> |
| | | <!-- <span class="icon-name">图层</span>--> |
| | | </div> |
| | | </el-tooltip> |
| | | <transition name="animationChange"> |
| | | <div :class="'legend-content map-background'" v-show="layerControllerVisible"> |
| | | <lc-service-layer></lc-service-layer> |
| | |
| | | position: absolute; |
| | | top:0; |
| | | right: -26px; |
| | | border-radius: 0.03rem 50% 50% 0.03rem; |
| | | } |
| | | .el-button--default:hover{ |
| | | background:@background-color; |
| | | } |
| | | .legend-content{ |
| | | width: 2.2rem; |
| | | width: 250px; |
| | | } |
| | | } |
| | | |
| | |
| | | const positionY = data[i].Longitude |
| | | |
| | | var iconUrl = companyImg |
| | | const marker = L.marker.magic([positionX, positionY], { |
| | | const marker = L.marker([positionX, positionY], { |
| | | icon: L.icon({ |
| | | iconUrl: iconUrl, |
| | | iconSize: [50, 50], |
| | | iconAnchor: [25, 25] |
| | | iconSize: [30, 30], |
| | | iconAnchor: [13, 5] |
| | | }), |
| | | test: data[i] |
| | | }) |
| | |
| | | totransferData: getSolidWasteData[i], |
| | | icon: L.icon({ |
| | | iconUrl: iconUrl, |
| | | iconSize: [50, 50], |
| | | iconAnchor: [25, 25] |
| | | iconSize: [20, 20] |
| | | }) |
| | | }) |
| | | layer.addLayer(marker) |
| | |
| | | // const AjaxUtils = require('../../../utils/AjaxUtils').default |
| | | |
| | | // 区分不同类型 使用不同img |
| | | const ImgBlue = '/assets/images/map/exhaust/fq_blue.png' |
| | | const ImgGray = '/assets/images/map/exhaust/fq_gray.png' |
| | | const ImagGreen = '/assets/images/map/exhaust/fq_green.png' |
| | | const ImagBright = '/assets/images/map/exhaust/fq_bright_green.png' |
| | | // const ImgBlue = '/assets/images/map/exhaust/fq_blue.png' |
| | | // const ImgGray = '/assets/images/map/exhaust/fq_gray.png' |
| | | const ImagGreen = '/assets/images/map/exhaust/fq_green_new.png' |
| | | // const ImagBright = '/assets/images/map/exhaust/fq_bright_green.png' |
| | | |
| | | const mapApi = require('../../../api/mapApi').default |
| | | const publicBounced = require('../../BaseNav/PublicBounced/PublicBounced').default |
| | |
| | | this.init = async (layer, L) => { |
| | | this.animalService = new AnimalService({ L: L, layer: layer }) |
| | | const res = await mapApi.getWasteGas() |
| | | // console.log(res) |
| | | const data = res.Result.DataInfo || {} |
| | | // console.log(data) |
| | | for (let i = 0; i < data.length; i++) { |
| | |
| | | // 定义类型 用来区分数据 |
| | | const ContrLevel = data[i].ContrLevel |
| | | var iconUrl = this.differentTypes(ContrLevel) |
| | | |
| | | const marker = L.marker.magic([positionX, positionY], { |
| | | // const marker = L.canvasMarker([positionX, positionY], { |
| | | // img: { |
| | | // // url: 'assets/images/map/marker-icon.png', |
| | | // url: iconUrl, |
| | | // size: STYLES.ICON_SIZE |
| | | // } |
| | | const marker = L.marker([positionX, positionY], { |
| | | test: data[i], |
| | | icon: L.icon({ |
| | | iconUrl: iconUrl, |
| | | iconSize: [50, 50], |
| | | iconAnchor: [25, 25] |
| | | iconSize: [20, 20] |
| | | }) |
| | | }) |
| | | layer.addLayer(marker) |
| | |
| | | // 不同类型图片加载 |
| | | this.differentTypes = (ContrLevel) => { |
| | | var effectOfChange |
| | | if (ContrLevel === 1) { |
| | | effectOfChange = ImgBlue |
| | | } else if (ContrLevel === 2) { |
| | | effectOfChange = ImagGreen |
| | | } else if (ContrLevel === 3) { |
| | | effectOfChange = ImagBright |
| | | } else { |
| | | effectOfChange = ImgGray |
| | | } |
| | | /* |
| | | if (ContrLevel === 1) { |
| | | effectOfChange = ImgBlue |
| | | } else if (ContrLevel === 2) { |
| | | */ |
| | | effectOfChange = ImagGreen |
| | | // } else if (ContrLevel === 3) { |
| | | // effectOfChange = ImagBright |
| | | // } else { |
| | | // effectOfChange = ImgGray |
| | | // } |
| | | return effectOfChange |
| | | } |
| | | this.setPanTo = (pos, value) => { |
| | |
| | | // 定义类型 用来区分数据的不同 |
| | | const testValue = data[i].ContrLevel |
| | | const iconUrl = this.differentTypes(testValue) |
| | | const marker = L.marker.magic([positionX, positionY], { |
| | | const marker = L.marker([positionX, positionY], { |
| | | test: data[i], |
| | | icon: L.icon({ |
| | | iconUrl: iconUrl, |
| | | iconSize: [50, 50], |
| | | iconAnchor: [25, 25] |
| | | iconSize: [20, 20] |
| | | }) |
| | | }) |
| | | layer.addLayer(marker) |
| | |
| | | <template> |
| | | <div class="inner-panel"> |
| | | <div class="title"> |
| | | 图层控制 |
| | | </div> |
| | | <div class="title"> 图层控制 </div> |
| | | <div class="wms-panel"> |
| | | <el-scrollbar class="wms-panel-scrollbar"> |
| | | <div v-for="item in serviceLayers" :key="item.code" class="layerbox"> |
| | |
| | | <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" |
| | |
| | | :title="filter.name">{{filter.name}}</label> |
| | | </div> |
| | | </div> |
| | | </el-scrollbar> |
| | | <!-- </el-scrollbar> --> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | }, |
| | | // 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) |
| | | } |
| | | } |
| | | }, |
| | |
| | | .inner-panel { |
| | | 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: rgba(44, 62, 80, 0.6); |
| | | border: 1px solid #10488c; |
| | | max-height: 200px; |
| | | padding-bottom: 5px; |
| | | //overflow-y: hidden; |
| | | } |
| | | |
| | |
| | | <template> |
| | | <div class="legend-panel"> |
| | | <transition name="fade"> |
| | | <div :class="'legend-content map-background'" v-show="legendControl"> |
| | | <div :class="'legend-content map-background'" v-show="isShow"> |
| | | <div class="legend-content-box" v-for="(item,index) in serviceLayers" :key="index"> |
| | | <p><span>{{ item.name }}</span></p> |
| | | <div class="map-under-line"></div> |
| | | <ul> |
| | | <li v-for="(ite,inde) in item.layers" :key="inde"> |
| | | <img :src='ite.legendImage' alt=''> |
| | | <li v-for="(ite,idx) in item.layers" :key="idx"> |
| | | <img :src="ite.legendImage===undefined?'../.././assets/images/map-pages/setting.png':ite.legendImage" alt=''> |
| | | <span>{{ ite.name }}</span> |
| | | </li> |
| | | </ul> |
| | |
| | | </div> |
| | | </transition> |
| | | <el-tooltip :popper-class="'map-tooltip'" effect="dark" content="图例" placement="left"> |
| | | <div :class="this.legendControl?'legend-btn map-btn-active':'legend-btn map-btn-unactive'" |
| | | <div :class="this.isShow?'legend-btn map-btn-active':'legend-btn map-btn-unactive'" |
| | | @click="legendChange()"> |
| | | <i class="el-icon-more-outline"></i> |
| | | </div> |
| | |
| | | data () { |
| | | return { |
| | | // 控制图例 内容的 显示/隐藏 |
| | | legendControl: false, |
| | | isShow: false, |
| | | serviceLayers: [LayerSoilGroundWater, LayerEnvRisk, LayerAirQuality, LayerWasteSolid, LayerWasteGas, LayerWasteWater, LayerArea, LayerPk, LayerPipeLines] |
| | | } |
| | | }, |
| | | methods: { |
| | | // 图标 控制内容的展示与隐藏 |
| | | legendChange () { |
| | | this.legendControl = !this.legendControl |
| | | this.isShow = !this.isShow |
| | | } |
| | | } |
| | | } |
| | |
| | | }, |
| | | selected (val) { |
| | | // console.log(val) |
| | | this.title = val.name + '(检索)' |
| | | this.title = val.name |
| | | this.topicList.forEach((itm) => { |
| | | itm.checked = val.name === itm.name |
| | | }) |
| | |
| | | padding: 15px 3px; |
| | | background: rgba(0, 16, 30, 0.7); |
| | | color: #C0C4CC; |
| | | border-radius:50% 0.03rem 0.03rem 50% ; |
| | | } |
| | | .el-button--default:hover{ |
| | | background: transparent; |
| | | border-color: #0f93a9; |
| | | background:@background-color; |
| | | } |
| | | |
| | | .el-form-item__label { |
| | |
| | | <template> |
| | | <div class="left-top-toolbox-panel"> |
| | | <div class="specific-tools"> |
| | | <el-button :class="selectGroup === true ?'active-button':''" class="el-button-choice" @click.enter.native="changeSelectMouse"> |
| | | <el-tooltip :popper-class="'map-tooltip'" effect="dark" content="工具" placement="left"> |
| | | <el-button :class="selectGroup === true ?'active-button':''" class="el-button-choice" @click.enter.native="changeSelectMouse"> |
| | | <img src="@assets/images/map-pages/icon/toolbox/Selecd/tool.png" alt="" class="icon" /> |
| | | <!--<span class="span-default">工具</span>--> |
| | | </el-button> |
| | | </el-button> |
| | | </el-tooltip> |
| | | <transition name="animationChange"> |
| | | <el-row v-show="selectGroup" class="specific-tools-group"> |
| | | <el-popover |
| | |
| | | .special-button { |
| | | width: 0.1362rem; |
| | | height: 0.2725rem; |
| | | color: @color-over; |
| | | color: #C0C4CC; |
| | | border-radius: 0.03rem 50% 50% 0.03rem; |
| | | } |
| | | .special-button:hover{ |
| | | color: #00fff6; |
| | | } |
| | | } |
| | | } |
| | |
| | | <template> |
| | | <div class="query-search" v-if="gdVisible"> |
| | | <div class="sewers-search" v-if="gdVisible"> |
| | | <div class="search-title">{{title}}</div> |
| | | <div class="search-panel "> |
| | | <el-form ref="form" :model="form" label-width="90px" class="search-form"> |
| | |
| | | <template> |
| | | <div class="query-search" v-if="gdVisible"> |
| | | <div class="sewers-search" v-if="gdVisible"> |
| | | <div class="search-title">{{title}}</div> |
| | | <div class="search-panel "> |
| | | <el-form ref="form" :model="form" label-width="90px" class="search-form"> |
| | |
| | | <template> |
| | | <div class="query-search" v-if="gdVisible"> |
| | | <div class="sewers-search" v-if="gdVisible"> |
| | | <div class="search-title">{{title}}</div> |
| | | <div class="search-panel "> |
| | | <el-form ref="form" :model="form" label-width="90px" class="search-form"> |
| | |
| | | wfsHelper.addLike(this.form.query.key, this.form.keyword) |
| | | // const _this = this |
| | | const res = await AjaxUtils.GetDataAsynByUrl(wfsHelper.getUrl(), {}) |
| | | if (res.data instanceof Object && Object.prototype.hasOwnProperty.call(res.data, 'features')) { |
| | | this.list = res.data.features |
| | | if (res instanceof Object && Object.prototype.hasOwnProperty.call(res, 'features')) { |
| | | this.list = res.features |
| | | } |
| | | }, |
| | | handleLocation (val) { |
| | |
| | | } |
| | | }, |
| | | _fillStroke: function (ctx, layer) { |
| | | // debugger |
| | | var options = layer.options |
| | | |
| | | if (options.fill) { |
| | |
| | | <template> |
| | | <div class="enterprise-panel"> |
| | | <div class="enterprise-function" @click="showWarnDialog()"> |
| | | <div :class='["iconBtn",warnVisible ? "active-button" : ""]'> |
| | | <img src="@/assets/images/map-pages/icon/map/warn.png" alt="" class="icon"> |
| | | <!--<span class="icon-name">预报警</span>--> |
| | | <!-- <el-tooltip :popper-class="'map-tooltip'" effect="dark" content="预报警" placement="left"> |
| | | <img src="@/assets/images/map-pages/icon/map/warn.png" alt="" width="26px" style="display: block;margin: auto"> |
| | | |
| | | </el-tooltip> --> |
| | | </div> |
| | | <el-tooltip :popper-class="'map-tooltip'" effect="dark" content="预报警" placement="left"> |
| | | <div :class='["iconBtn",warnVisible ? "active-button" : ""]'> |
| | | <img src="@/assets/images/map-pages/icon/map/warn.png" alt="" class="icon"> |
| | | <!--<span class="icon-name">预报警</span>--> |
| | | </div> |
| | | </el-tooltip> |
| | | </div> |
| | | <div class="enterprise-function" @click="showStatisDialog()"> |
| | | <div :class='["iconBtn",companyVisible ? "active-button" : ""]'> |
| | | <img src="@/assets/images/map-pages/icon/map/company.png" alt="" class="icon"> |
| | | <!-- <span class="icon-name">指标</span>--> |
| | | </div> |
| | | <el-tooltip :popper-class="'map-tooltip'" effect="dark" content="指标" placement="bottom"> |
| | | <div :class='["iconBtn",companyVisible ? "active-button" : ""]'> |
| | | <img src="@/assets/images/map-pages/icon/map/company.png" alt="" class="icon"> |
| | | <!-- <span class="icon-name">指标</span>--> |
| | | </div> |
| | | </el-tooltip> |
| | | </div> |
| | | <Dialog ref="warnDialog" title="企业预警报警分类统计" > |
| | | <warn></warn> |
| | |
| | | position: absolute; |
| | | right: 0.14583rem; |
| | | top:0.11979rem; |
| | | z-index: 9999; |
| | | .enterprise-function{ |
| | | float: left; |
| | | cursor: pointer; |
| | | } |
| | | z-index: 1000; |
| | | display: flex; |
| | | .enterprise-function:not(:first-child){ |
| | | margin-left: 0.05rem; |
| | | } |
| | |
| | | <template> |
| | | <div class="summary-sheets"> |
| | | <div :class='["iconBtn",summaryVisible ? "active-button" : ""]' @click="closeBtn"> |
| | | <img src="@assets/images/map-pages/icon/toolbox/table.png" alt="" class="icon"> |
| | | <!--<span class="icon-name">统计表</span>--> |
| | | </div> |
| | | <el-tooltip :popper-class="'map-tooltip'" effect="dark" content="统计表" placement="left"> |
| | | <div :class='["iconBtn",summaryVisible ? "active-button" : ""]' @click="closeBtn"> |
| | | <img src="@assets/images/map-pages/icon/toolbox/table.png" alt="" class="icon"> |
| | | <!--<span class="icon-name">统计表</span>--> |
| | | </div> |
| | | </el-tooltip> |
| | | <Dialog ref="summarySheets" title="企业指标分类统计"> |
| | | <tab-handover></tab-handover> |
| | | </Dialog > |
| | |
| | | } |
| | | |
| | | export const logicMapper = { |
| | | wasteGasJcd: 'WasteGas.js', |
| | | wasteWaterJcd: 'WasteWater.js', |
| | | solidWasteJcd: 'SolidWaste.js', |
| | | wasteGasPfk: 'WasteGas.js', |
| | | wasteWaterPfk: 'WasteWater.js', |
| | | wasteSolidCcd: 'SolidWaste.js', |
| | | sewersAreaGs: 'Company.js' |
| | | } |
| | | |
| | |
| | | /** |
| | | * 区域 |
| | | * 专题 |
| | | */ |
| | | import { LayerWasteWater } from './layers/LayerWasteWater' |
| | | import { LayerWasteGas } from './layers/LayerWasteGas' |
| | |
| | | import { LayerAirQuality } from './layers/LayerAirQuality' |
| | | import { LayerEnvRisk } from './layers/LayerEnvRisk' |
| | | import { LayerSoilGroundWater } from './layers/LayerSoilGroundWater' |
| | | import { LayerPollutionSources } from './layers/LayerPollutionSources' |
| | | |
| | | export const LayerTopic = { |
| | | code: 'sewersTopic', |
| | | name: '专题图层', |
| | | checked: true, |
| | | layers: [LayerWasteWater, LayerWasteGas, LayerWasteSolid, LayerAirQuality, LayerEnvRisk, LayerSoilGroundWater] |
| | | layers: [LayerPollutionSources, LayerWasteWater, LayerWasteGas, LayerWasteSolid, LayerAirQuality, LayerEnvRisk, LayerSoilGroundWater] |
| | | } |
| | |
| | | import { LayerSewersPoint } from './layers/LayerSewers' |
| | | import { LayerTopic } from './LayerTopic' |
| | | import { LayerPipeLine } from './LayerPipeLine' |
| | | import { LayerBasin } from './layers/LayerBasin' |
| | | |
| | | const curWwwPath = window.document.location.href |
| | | const pathname = window.document.location.pathname |
| | |
| | | IntranetBaseMaps: TDT.intranet, |
| | | InternetBaseMaps: TDT.internet, |
| | | Layers: { |
| | | LayerSewersLine: [LayerPipeLine, LayerTopic], |
| | | LayerSewersLine: [LayerBasin, LayerTopic, LayerPipeLine], |
| | | layerSewersPoint: LayerSewersPoint |
| | | } // 污雨水图层配置 |
| | | } |
New file |
| | |
| | | /** |
| | | * 污染源 |
| | | * @type {string} |
| | | */ |
| | | export const LayerPollutionSources = { |
| | | code: 'pollutionSources', |
| | | name: '污染源', |
| | | checked: true, |
| | | layers: [ |
| | | { |
| | | code: 'pollutionSourcesSczz', |
| | | name: '生产装置', |
| | | sname: '生产装置', // 表名 |
| | | checked: true, // 默认选中状态 |
| | | url: 'http://www.baidu.com', // 请求业务数据接口 |
| | | minZoom: 10 // 在指定级别显示 |
| | | }, |
| | | { |
| | | code: 'pollutionSourcesZlss', |
| | | name: '治理设施', |
| | | sname: '治理设施', // 表名 |
| | | checked: true, // 默认选中状态 |
| | | url: 'http://www.baidu.com', // 请求业务数据接口 |
| | | minZoom: 10 // 在指定级别显示 |
| | | }] |
| | | } |
| | |
| | | const APP_GIS_HOST_2 = 'http://xearth.cn:8088' |
| | | const WFS_URL = APP_GIS_HOST_2 + '/server/ogcserver/PipeLine/wfs' |
| | | // const APP_GIS_HOST_2 = 'http://localhost:3000' |
| | | // const APP_GIS_HOST_2 = 'http://192.168.31.226:8088' |
| | | export const LayerSewersLine = { |
| | | code: 'pipeline', |
| | | name: '管网数据', |
| | | type: 'geojson', |
| | | checked: true, |
| | | layers: [ |
| | | { |
| | | code: 'rainline', |
| | | name: '雨水线', |
| | | sname: '管网', // 表名 |
| | | checked: true, // 默认选中状态 |
| | | wfs: WFS_URL + '?TYPENAME=管网', |
| | | minZoom: 10, // 在指定级别显示 |
| | | childLayer: 'sewersFsss,sewersHbss' // 关联PointLayers |
| | | }, |
| | | { |
| | | code: 'oilline', |
| | | name: '含油污水线', |
| | | sname: '含油污水', |
| | | checked: true, // 默认选中状态 |
| | | wfs: WFS_URL + '?TYPENAME=含油污水', |
| | | minZoom: 10, |
| | | childLayer: 'sewersFsss,sewersHbss' // 关联PointLayers |
| | | }, |
| | | { |
| | | code: 'saltline', |
| | | name: '含盐污水线', |
| | | sname: '含盐污水', |
| | | checked: true, // 默认选中状态 |
| | | wfs: WFS_URL + '?TYPENAME=含盐污水', |
| | | minZoom: 10, |
| | | childLayer: 'sewersFsss,sewersHbss' // 关联PointLayers |
| | | }, |
| | | { |
| | | code: 'alkaliline', |
| | | name: '含碱污水线', |
| | | sname: '含碱污水', |
| | | checked: true, // 默认选中状态 |
| | | wfs: WFS_URL + '?TYPENAME=含碱污水', |
| | | minZoom: 10, |
| | | childLayer: 'sewersFsss,sewersHbss' // 关联PointLayers |
| | | }, |
| | | { |
| | | code: 'outlet', |
| | | name: '排口', |
| | | sname: '排口', |
| | | checked: true, // 默认选中状态 |
| | | wfs: WFS_URL + '?TYPENAME=排口', |
| | | minZoom: 10, |
| | | childLayer: 'pk' // 关联PointLayers |
| | | }, |
| | | { |
| | | code: 'accidentline', |
| | | name: '事故水线', |
| | | sname: '事故水', |
| | | checked: true, // 默认选中状态 |
| | | wfs: WFS_URL + '?TYPENAME=事故水', |
| | | minZoom: 10, |
| | | childLayer: 'sewersFsss,sewersHbss' // 关联PointLayers |
| | | }, |
| | | { |
| | | code: 'loopline', |
| | | name: '循环水线', |
| | | sname: '循环水', |
| | | checked: true, // 默认选中状态 |
| | | wfs: WFS_URL + '?TYPENAME=循环水', |
| | | minZoom: 10, |
| | | childLayer: 'sewersFsss,sewersHbss' // 关联PointLayers |
| | | }, |
| | | { |
| | | code: 'purifyline', |
| | | name: '净化水线', |
| | | sname: '净化水', |
| | | checked: true, // 默认选中状态 |
| | | wfs: WFS_URL + '?TYPENAME=净化水', |
| | | minZoom: 10, |
| | | childLayer: 'sewersFsss,sewersHbss' // 关联PointLayers |
| | | }, |
| | | { |
| | | code: 'lifeline', |
| | | name: '生活污水', |
| | | sname: '生活污水', |
| | | checked: true, // 默认选中状态 |
| | | wfs: WFS_URL + '?TYPENAME=生活污水', |
| | | minZoom: 10, |
| | | childLayer: 'sewersFsss,sewersHbss' // 关联PointLayers |
| | | }, |
| | | { |
| | | code: 'areainfo', |
| | | name: '区域信息', |
| | | sname: '区域信息', |
| | | checked: true, // 默认选中状态 |
| | | filter: {}, |
| | | minZoom: 10, |
| | | childLayer: 'qyxx' // 关联PointLayers |
| | | } |
| | | ] |
| | | } |
| | | |
| | | export const LayerSewersPoint = [ |
| | | { |
| | | code: 'sewersFsss', |
| | |
| | | checked: true, |
| | | layers: [ |
| | | { |
| | | code: 'wasteGasQy', |
| | | name: '企业', |
| | | sname: '企业', // 表名 |
| | | code: 'wasteGasPfk', |
| | | name: '排放口', |
| | | sname: '排放口', // 表名 |
| | | checked: true, // 默认选中状态 |
| | | url: 'http://www.baidu.com', // 请求业务数据接口 |
| | | minZoom: 10 // 在指定级别显示 |
| | | }, |
| | | { |
| | | code: 'wasteGasJcd', |
| | | name: '监测点', |
| | | sname: '监测点', |
| | | checked: true, // 默认选中状态 |
| | | url: 'http://www.baidu2.com', |
| | | minZoom: 10 |
| | | }, |
| | | { |
| | | code: 'wasteGasVocs', |
| | | name: 'VOCs', |
| | | sname: 'VOCs', |
| | | checked: true, // 默认选中状态 |
| | | url: '', |
| | | minZoom: 10 |
| | | }, |
| | | { |
| | | code: 'wasteGasKrq', |
| | |
| | | checked: true, // 默认选中状态 |
| | | url: '', |
| | | minZoom: 10 |
| | | }, |
| | | { |
| | | code: 'wasteGasVocs', |
| | | name: 'VOCs', |
| | | sname: 'VOCs', |
| | | checked: true, // 默认选中状态 |
| | | url: '', |
| | | minZoom: 10 |
| | | } |
| | | ] |
| | | } |
| | |
| | | */ |
| | | |
| | | export const LayerWasteSolid = { |
| | | code: 'solidWaste', |
| | | code: 'wasteSolid', |
| | | name: '固废', |
| | | checked: true, |
| | | layers: [ |
| | | { |
| | | code: 'solidWasteQy', |
| | | name: '企业', |
| | | sname: '企业', // 表名 |
| | | checked: true, // 默认选中状态 |
| | | url: 'http://www.baidu.com', // 请求业务数据接口 |
| | | minZoom: 10 // 在指定级别显示 |
| | | }, |
| | | { |
| | | code: 'solidWasteJcd', |
| | | name: '监测点', |
| | | sname: '监测点', |
| | | code: 'wasteSolidCcd', |
| | | name: '贮存点', |
| | | sname: '贮存点', |
| | | checked: true, // 默认选中状态 |
| | | url: 'http://www.baidu2.com', |
| | | minZoom: 10 |
| | |
| | | checked: true, |
| | | layers: [ |
| | | { |
| | | code: 'wasteWaterqy', |
| | | name: '企业', |
| | | sname: '企业', // 表名 |
| | | code: 'wasteWaterPfk', |
| | | name: '排放口', |
| | | sname: '排放口', // 表名 |
| | | checked: true, // 默认选中状态 |
| | | url: 'http://www.baidu.com', // 请求业务数据接口 |
| | | minZoom: 10 // 在指定级别显示 |
| | | }, |
| | | { |
| | | code: 'wasteWaterJcd', |
| | | name: '监测点', |
| | | sname: '监测点', |
| | | name: '流量', |
| | | sname: '流量', |
| | | checked: true, // 默认选中状态 |
| | | url: 'http://www.baidu2.com', |
| | | minZoom: 10, |
| | | childLayer: 'fsss,hbss' // 关联PointLayers |
| | | minZoom: 10 |
| | | }, |
| | | { |
| | | code: 'wasteWaterfk', |
| | | name: '排放口', |
| | | sname: '排放口', |
| | | name: '液位', |
| | | sname: '液位', |
| | | checked: true, // 默认选中状态 |
| | | url: '', |
| | | minZoom: 10, |
| | | childLayer: 'fsss,hbss' // 关联PointLayers |
| | | minZoom: 10 |
| | | } |
| | | ] |
| | | } |
| | |
| | | border: 1px solid @dark--primary-color; |
| | | } |
| | | .el-button--default:hover{ |
| | | background: transparent; |
| | | border-color: #0f93a9; |
| | | color: @dark--title-color; |
| | | background:@background-color; |
| | | } |
| | | .el-button--default:active{ |
| | | border-color: #0f93a9; |