派生自 wuyushui/SewerAndRainNetwork

zhangshuaibao
2021-04-07 aae66dc025761b18306b9271625748c26524e6a2
Merge branch 'develop' of http://xearth.cn:6600/r/wuyushui/SewerAndRainNetwork into develop

 Conflicts:
 src/components/BaseNav/PublicBounced/GasComponents/ECharts.vue
2个文件已添加
34个文件已修改
744 ■■■■ 已修改文件
public/assets/images/map/exhaust/fq_green_new.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/map/map-panel-style.less 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/BaseNav/PublicBounced/GasComponents/ECharts.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/BaseNav/PublicBounced/GasComponents/PublicChart.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/BaseNav/PublicBounced/GasComponents/PublicDetailedList.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/BaseNav/PublicBounced/GasComponents/PublicTable.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/BaseNav/PublicBounced/GasComponents/PublicTabs.vue 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/BaseNav/PublicBounced/GasComponents/PublicVideo.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/BaseNav/PublicBounced/PublicBounced.vue 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/BaseNav/SolidWaste/directive/dir.js 104 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/LayerController/LayerController.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/LayerController/logic/Company.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/LayerController/logic/SolidWaste.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/LayerController/logic/WasteGas.js 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/LayerController/logic/WasteWater.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/LayerController/modules/LcServiceLayer.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/LayerController/modules/LcServiceLayerFilter.vue 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/panel/LegendPanel.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/panel/RightSearchPanel.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/panel/ToolBoxPanel.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/panel/topicSearch/DischargeSearch.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/panel/topicSearch/EnvRiskSearch.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/panel/topicSearch/GasWasteSearch.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/panel/topicSearch/SewersSearch.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/plugin/PathDashFlow.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/table/enterprise.vue 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/table/summarySheets.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/conf/Constants.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/conf/LayerTopic.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/conf/MapConfig.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/conf/layers/LayerPollutionSources.js 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/conf/layers/LayerSewers.js 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/conf/layers/LayerWasteGas.js 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/conf/layers/LayerWasteSolid.js 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/conf/layers/LayerWasteWater.js 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/styles/theme-dark/el-ui/button.less 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/assets/images/map/exhaust/fq_green_new.png
src/assets/css/map/map-panel-style.less
@@ -301,6 +301,9 @@
.el-table .success-row {
  background: #30455f;
}
.el-table tbody tr:hover>td {
  background-color:#28304d !important;
}
/***********************************************动画效果************/
.transition{
  transition: all .5s;
@@ -337,4 +340,4 @@
    margin: 0 auto;
  }
}
}
src/components/BaseNav/PublicBounced/GasComponents/ECharts.vue
@@ -39,6 +39,7 @@
                <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
@@ -56,7 +57,6 @@
<script>
import PublicDetailedList from '@components/BaseNav/PublicBounced/GasComponents/PublicDetailedList'
export default {
  name: 'ECharts',
  components: {
@@ -115,7 +115,7 @@
        },
        grid: {
          left: '3%',
          right: '3%',
          right: '1%',
          bottom: '3%',
          // top: '1%',
          containLabel: true
src/components/BaseNav/PublicBounced/GasComponents/PublicChart.vue
@@ -32,6 +32,7 @@
  methods: {
    tabTaggle (taggleMenu) {
      this.currentTab = taggleMenu
      debugger
    }
  }
}
src/components/BaseNav/PublicBounced/GasComponents/PublicDetailedList.vue
@@ -37,10 +37,14 @@
    }
  },
  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)
    }
  }
}
src/components/BaseNav/PublicBounced/GasComponents/PublicTable.vue
@@ -10,8 +10,7 @@
        <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>
@@ -85,7 +84,8 @@
.win {
  position: relative;
  background-color: rgba(33, 41, 69, 0.9);
  min-height: 354px;
  //min-height: 354px;
  height: 208px;
}
.main {
@@ -94,7 +94,7 @@
  .main-table {
    width: 100%;
    min-height: 195px;
    //min-height: 195px;
    //border: 1px @color solid;
    video {
src/components/BaseNav/PublicBounced/GasComponents/PublicTabs.vue
@@ -53,7 +53,37 @@
  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 () {
@@ -144,7 +174,7 @@
  z-index: 999;
  position: absolute;
  width: 10px;
  //height: 10px;
  height: 10px;
  background: rgba(0, 0, 0, 0);
  border: 1px solid #47d5ea;
}
src/components/BaseNav/PublicBounced/GasComponents/PublicVideo.vue
@@ -26,15 +26,15 @@
.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;
    }
  //}
src/components/BaseNav/PublicBounced/PublicBounced.vue
@@ -1,27 +1,53 @@
<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>
@@ -55,6 +81,9 @@
    }
  },
  methods: {
    closePopup () {
      this.flag = false
    },
    setData (dataBasic, dataDetailed, value) {
      this.flag = true
      this.value = value
@@ -83,62 +112,62 @@
      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>
src/components/BaseNav/SolidWaste/directive/dir.js
@@ -1,59 +1,55 @@
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
src/components/LayerController/LayerController.vue
@@ -1,9 +1,12 @@
<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>
@@ -242,12 +245,13 @@
    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;
  }
}
src/components/LayerController/logic/Company.js
@@ -28,11 +28,11 @@
      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]
      })
src/components/LayerController/logic/SolidWaste.js
@@ -39,8 +39,7 @@
        totransferData: getSolidWasteData[i],
        icon: L.icon({
          iconUrl: iconUrl,
          iconSize: [50, 50],
          iconAnchor: [25, 25]
          iconSize: [20, 20]
        })
      })
      layer.addLayer(marker)
src/components/LayerController/logic/WasteGas.js
@@ -5,10 +5,10 @@
// 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
@@ -20,6 +20,7 @@
  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++) {
@@ -29,13 +30,17 @@
      // 定义类型 用来区分数据
      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)
@@ -66,15 +71,17 @@
  // 不同类型图片加载
  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) => {
src/components/LayerController/logic/WasteWater.js
@@ -33,12 +33,11 @@
      // 定义类型 用来区分数据的不同
      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)
src/components/LayerController/modules/LcServiceLayer.vue
@@ -1,8 +1,6 @@
<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">
src/components/LayerController/modules/LcServiceLayerFilter.vue
@@ -5,7 +5,7 @@
                <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"
@@ -13,7 +13,7 @@
                                :title="filter.name">{{filter.name}}</label>
                        </div>
                    </div>
                </el-scrollbar>
                <!--  </el-scrollbar> -->
            </div>
        </div>
    </div>
@@ -50,18 +50,20 @@
    },
    // 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)
        }
      }
    },
@@ -101,19 +103,16 @@
    .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;
@@ -127,6 +126,7 @@
                    background-color: rgba(44, 62, 80, 0.6);
                    border: 1px solid #10488c;
                    max-height: 200px;
                    padding-bottom: 5px;
                    //overflow-y: hidden;
                }
src/components/panel/LegendPanel.vue
@@ -1,13 +1,13 @@
<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>
@@ -15,7 +15,7 @@
      </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>
@@ -38,14 +38,14 @@
  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
    }
  }
}
src/components/panel/RightSearchPanel.vue
@@ -102,7 +102,7 @@
    },
    selected (val) {
      // console.log(val)
      this.title = val.name + '(检索)'
      this.title = val.name
      this.topicList.forEach((itm) => {
        itm.checked = val.name === itm.name
      })
@@ -257,10 +257,10 @@
        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 {
src/components/panel/ToolBoxPanel.vue
@@ -1,10 +1,12 @@
<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
@@ -487,7 +489,11 @@
      .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;
      }
    }
  }
src/components/panel/topicSearch/DischargeSearch.vue
@@ -1,5 +1,5 @@
<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">
src/components/panel/topicSearch/EnvRiskSearch.vue
@@ -1,5 +1,5 @@
<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">
src/components/panel/topicSearch/GasWasteSearch.vue
@@ -1,5 +1,5 @@
<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">
src/components/panel/topicSearch/SewersSearch.vue
@@ -164,8 +164,8 @@
      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) {
src/components/plugin/PathDashFlow.js
@@ -71,6 +71,7 @@
    }
  },
  _fillStroke: function (ctx, layer) {
    // debugger
    var options = layer.options
    if (options.fill) {
src/components/table/enterprise.vue
@@ -1,20 +1,20 @@
<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>
@@ -76,11 +76,8 @@
    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;
    }
src/components/table/summarySheets.vue
@@ -1,9 +1,11 @@
<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 >
src/conf/Constants.js
@@ -5,9 +5,9 @@
}
export const logicMapper = {
  wasteGasJcd: 'WasteGas.js',
  wasteWaterJcd: 'WasteWater.js',
  solidWasteJcd: 'SolidWaste.js',
  wasteGasPfk: 'WasteGas.js',
  wasteWaterPfk: 'WasteWater.js',
  wasteSolidCcd: 'SolidWaste.js',
  sewersAreaGs: 'Company.js'
}
src/conf/LayerTopic.js
@@ -1,5 +1,5 @@
/**
 * 区域
 * 专题
 */
import { LayerWasteWater } from './layers/LayerWasteWater'
import { LayerWasteGas } from './layers/LayerWasteGas'
@@ -7,10 +7,11 @@
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]
}
src/conf/MapConfig.js
@@ -3,6 +3,7 @@
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
@@ -42,7 +43,7 @@
  IntranetBaseMaps: TDT.intranet,
  InternetBaseMaps: TDT.internet,
  Layers: {
    LayerSewersLine: [LayerPipeLine, LayerTopic],
    LayerSewersLine: [LayerBasin, LayerTopic, LayerPipeLine],
    layerSewersPoint: LayerSewersPoint
  } // 污雨水图层配置
}
src/conf/layers/LayerPollutionSources.js
New file
@@ -0,0 +1,26 @@
/**
 * 污染源
 * @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 // 在指定级别显示
    }]
}
src/conf/layers/LayerSewers.js
@@ -1,106 +1,4 @@
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',
src/conf/layers/LayerWasteGas.js
@@ -8,28 +8,12 @@
  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',
@@ -46,6 +30,14 @@
      checked: true, // 默认选中状态
      url: '',
      minZoom: 10
    },
    {
      code: 'wasteGasVocs',
      name: 'VOCs',
      sname: 'VOCs',
      checked: true, // 默认选中状态
      url: '',
      minZoom: 10
    }
  ]
}
src/conf/layers/LayerWasteSolid.js
@@ -4,22 +4,14 @@
 */
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
src/conf/layers/LayerWasteWater.js
@@ -8,30 +8,28 @@
  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
    }
  ]
}
src/styles/theme-dark/el-ui/button.less
@@ -47,9 +47,7 @@
  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;