派生自 wuyushui/SewerAndRainNetwork

徐旺旺
2021-03-12 67c41dc766f73e14373d115f9655f668cf3afb84
新增统计与报警
7个文件已添加
1个文件已修改
644 ■■■■■ 已修改文件
src/assets/images/map-pages/icon/map/company.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/map-pages/icon/map/warn.png 补丁 | 查看 | 原始文档 | blame | 历史
src/components/plugin/DialogDrag.js 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/table/components/IndexStatistics.vue 262 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/table/components/Warn.vue 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/table/enterprise.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/MapTemplate.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/popup/Dialog.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/map-pages/icon/map/company.png
src/assets/images/map-pages/icon/map/warn.png
src/components/plugin/DialogDrag.js
New file
@@ -0,0 +1,49 @@
import Vue from 'vue'
// v-dialogDrag: 弹窗拖拽
Vue.directive('dialogDrag', {
  bind (el, binding, vnode, oldVnode) {
    const dialogHeaderEl = el.querySelector('.el-dialog__header')
    const dragDom = el.querySelector('.el-dialog')
    dialogHeaderEl.style.cursor = 'move'
    // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
    const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null)
    dialogHeaderEl.onmousedown = (e) => {
      // 鼠标按下,计算当前元素距离可视区的距离
      const disX = e.clientX - dialogHeaderEl.offsetLeft
      const disY = e.clientY - dialogHeaderEl.offsetTop
      // 获取到的值带px 正则匹配替换
      let styL, styT
      // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
      if (sty.left.includes('%')) {
        styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100)
        styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100)
      } else {
        styL = +sty.left.replace(/\px/g, '')
        styT = +sty.top.replace(/\px/g, '')
      }
      document.onmousemove = function (e) {
        // 通过事件委托,计算移动的距离
        const l = e.clientX - disX
        const t = e.clientY - disY
        // 移动当前元素
        dragDom.style.left = `${l + styL}px`
        dragDom.style.top = `${t + styT}px`
        // 将此时的位置传出去
        // binding.value({x:e.pageX,y:e.pageY})
      }
      document.onmouseup = function (e) {
        document.onmousemove = null
        document.onmouseup = null
      }
    }
  }
})
src/components/table/components/IndexStatistics.vue
New file
@@ -0,0 +1,262 @@
<template>
    <el-tabs>
        <el-tab-pane label="指标统计" name="first"><el-table
                :data="tableData"
                style="width: 100%">
            <el-table-column
                    prop="date"
                    label="序号"
                    width="150">
            </el-table-column>
            <el-table-column
                    prop="date"
                    label="单位名称"
                    width="150">
            </el-table-column>
            <el-table-column
                    prop="date"
                    label="工业取水量(m3)"
                    width="150">
            </el-table-column>
            <el-table-column
                    prop="date"
                    label="外排废水量(m3)"
                    width="150">
            </el-table-column>
            <el-table-column
                    prop="date"
                    label="工业废气排放量(m3)"
                    width="150">
            </el-table-column>
            <el-table-column label="COD(t)">
                    <el-table-column
                            prop="province"
                            label="累计产生量"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            prop="city"
                            label="当月产生量"
                            width="120">
                    </el-table-column>
            </el-table-column>
            <el-table-column label="氨氮(t)">
                <el-table-column
                        prop="province"
                        label="累计产生量"
                        width="120">
                </el-table-column>
                <el-table-column
                        prop="city"
                        label="当月产生量"
                        width="120">
                </el-table-column>
            </el-table-column>
            <el-table-column label="二氧化硫(t)">
                <el-table-column
                        prop="province"
                        label="累计产生量"
                        width="120">
                </el-table-column>
                <el-table-column
                        prop="city"
                        label="当月产生量"
                        width="120">
                </el-table-column>
            </el-table-column>
            <el-table-column label="氮氧化物(t)">
                <el-table-column
                        prop="province"
                        label="累计产生量"
                        width="120">
                </el-table-column>
                <el-table-column
                        prop="city"
                        label="当月产生量"
                        width="120">
                </el-table-column>
            </el-table-column>
            <el-table-column label="VOCs(t)">
                <el-table-column
                        prop="province"
                        label="累计产生量"
                        width="120">
                </el-table-column>
                <el-table-column
                        prop="city"
                        label="当月产生量"
                        width="120">
                </el-table-column>
            </el-table-column>
            <el-table-column label="固废(t)">
                <el-table-column
                        prop="province"
                        label="累计产生量"
                        width="120">
                </el-table-column>
                <el-table-column
                        prop="city"
                        label="当月产生量"
                        width="120">
                </el-table-column>
            </el-table-column>
        </el-table></el-tab-pane>
        <el-tab-pane label="企业排名" name="second"><el-table
                :data="tableData"
                style="width: 100%"
                max-height="250">
            <el-table-column
                    fixed
                    prop="date"
                    label="企业名称"
                    width="150">
            </el-table-column>
            <el-table-column
                    prop="name"
                    label="废水达标率"
                    width="120">
            </el-table-column>
            <el-table-column
                    prop="province"
                    label="名次"
                    width="120">
            </el-table-column>
            <el-table-column
                    prop="city"
                    label="废气达标率"
                    width="120">
            </el-table-column>
            <el-table-column
                    prop="address"
                    label="名次"
                    width="300">
            </el-table-column>
            <el-table-column
                    prop="zip"
                    label="传输率"
                    width="120">
            </el-table-column>
            <el-table-column
                    prop="zip"
                    label="名次"
                    width="120">
            </el-table-column>
            <el-table-column
                    prop="zip"
                    label="设备完好率"
                    width="120">
            </el-table-column>
            <el-table-column
                    prop="zip"
                    label="排名"
                    width="120">
            </el-table-column>
        </el-table></el-tab-pane>
        <el-tab-pane label="排放点排名" name="third"><el-table
                :data="tableData"
                style="width: 100%"
                max-height="250">
            <el-table-column
                    fixed
                    prop="date"
                    label="排放点名称"
                    width="150">
            </el-table-column>
            <el-table-column
                    prop="name"
                    label="排放类型"
                    width="120">
            </el-table-column>
            <el-table-column
                    prop="province"
                    label="达标率"
                    width="120">
            </el-table-column>
            <el-table-column
                    prop="city"
                    label="名次"
                    width="120">
            </el-table-column>
            <el-table-column
                    prop="address"
                    label="传输率"
                    width="300">
            </el-table-column>
            <el-table-column
                    prop="zip"
                    label="名次"
                    width="120">
            </el-table-column>
            <el-table-column
                    prop="zip"
                    label="设备完好率"
                    width="120">
            </el-table-column>
            <el-table-column
                    prop="zip"
                    label="名次"
                    width="120">
            </el-table-column>
        </el-table></el-tab-pane>
    </el-tabs>
</template>
<script>
export default {
  data () {
    return {
      tableData: [{
        date: '2016-05-03',
        name: '王小虎',
        province: '上海',
        city: '普陀区',
        address: '上海市普陀区金沙江路 1518 弄',
        zip: 200333
      }, {
        date: '2016-05-02',
        name: '王小虎',
        province: '上海',
        city: '普陀区',
        address: '上海市普陀区金沙江路 1518 弄',
        zip: 200333
      }, {
        date: '2016-05-04',
        name: '王小虎',
        province: '上海',
        city: '普陀区',
        address: '上海市普陀区金沙江路 1518 弄',
        zip: 200333
      }, {
        date: '2016-05-01',
        name: '王小虎',
        province: '上海',
        city: '普陀区',
        address: '上海市普陀区金沙江路 1518 弄',
        zip: 200333
      }, {
        date: '2016-05-08',
        name: '王小虎',
        province: '上海',
        city: '普陀区',
        address: '上海市普陀区金沙江路 1518 弄',
        zip: 200333
      }, {
        date: '2016-05-06',
        name: '王小虎',
        province: '上海',
        city: '普陀区',
        address: '上海市普陀区金沙江路 1518 弄',
        zip: 200333
      }, {
        date: '2016-05-07',
        name: '王小虎',
        province: '上海',
        city: '普陀区',
        address: '上海市普陀区金沙江路 1518 弄',
        zip: 200333
      }]
    }
  }
}
</script>
src/components/table/components/Warn.vue
New file
@@ -0,0 +1,231 @@
<template>
    <el-tabs>
        <el-tab-pane label="实时统计" name="first">
            <el-table
                    :data="tableData"
                    style="width: 100%">
                <el-table-column
                        prop="date"
                        label="企业名称"
                        width="150">
                </el-table-column>
                <el-table-column label="废水(个)">
                    <el-table-column
                            prop="name"
                            label="预警"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            prop="name"
                            label="报警"
                            width="120">
                    </el-table-column>
                </el-table-column>
                <el-table-column label="废气(个)">
                    <el-table-column
                            prop="name"
                            label="预警"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            prop="name"
                            label="报警"
                            width="120">
                    </el-table-column>
                </el-table-column>
                <el-table-column label="固废(个)">
                    <el-table-column
                            prop="name"
                            label="预警"
                            width="120">
                    </el-table-column>
                </el-table-column>
                <el-table-column label="硫化氢(个)">
                    <el-table-column
                            prop="name"
                            label="预警"
                            width="120">
                    </el-table-column>
                </el-table-column>
                <el-table-column label="可燃气体(个)">
                    <el-table-column
                            prop="name"
                            label="预警"
                            width="120">
                    </el-table-column>
                </el-table-column>
            </el-table>
        </el-tab-pane>
        <el-tab-pane label="当月统计" name="second">
            <el-table
                    :data="tableData"
                    style="width: 100%">
                <el-table-column
                        prop="date"
                        label="企业名称"
                        width="150">
                </el-table-column>
                <el-table-column label="废水(个)">
                    <el-table-column
                            prop="name"
                            label="预警"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            prop="name"
                            label="报警"
                            width="120">
                    </el-table-column>
                </el-table-column>
                <el-table-column label="废气(个)">
                    <el-table-column
                            prop="name"
                            label="预警"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            prop="name"
                            label="报警"
                            width="120">
                    </el-table-column>
                </el-table-column>
                <el-table-column label="固废(个)">
                    <el-table-column
                            prop="name"
                            label="预警"
                            width="120">
                    </el-table-column>
                </el-table-column>
                <el-table-column label="硫化氢(个)">
                    <el-table-column
                            prop="name"
                            label="预警"
                            width="120">
                    </el-table-column>
                </el-table-column>
                <el-table-column label="可燃气体(个)">
                    <el-table-column
                            prop="name"
                            label="预警"
                            width="120">
                    </el-table-column>
                </el-table-column>
            </el-table>
        </el-tab-pane>
        <el-tab-pane label="上月统计" name="third">
            <el-table
                    :data="tableData"
                    style="width: 100%">
                <el-table-column
                        prop="date"
                        label="企业名称"
                        width="150">
                </el-table-column>
                <el-table-column label="废水(个)">
                    <el-table-column
                            prop="name"
                            label="预警"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            prop="name"
                            label="报警"
                            width="120">
                    </el-table-column>
                </el-table-column>
                <el-table-column label="废气(个)">
                    <el-table-column
                            prop="name"
                            label="预警"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            prop="name"
                            label="报警"
                            width="120">
                    </el-table-column>
                </el-table-column>
                <el-table-column label="固废(个)">
                    <el-table-column
                            prop="name"
                            label="预警"
                            width="120">
                    </el-table-column>
                </el-table-column>
                <el-table-column label="硫化氢(个)">
                    <el-table-column
                            prop="name"
                            label="预警"
                            width="120">
                    </el-table-column>
                </el-table-column>
                <el-table-column label="可燃气体(个)">
                    <el-table-column
                            prop="name"
                            label="预警"
                            width="120">
                    </el-table-column>
                </el-table-column>
            </el-table>
        </el-tab-pane>
    </el-tabs>
</template>
<script>
export default {
  data () {
    return {
      tableData: [{
        date: '2016-05-03',
        name: '王小虎',
        province: '上海',
        city: '普陀区',
        address: '上海市普陀区金沙江路 1518 弄',
        zip: 200333
      }, {
        date: '2016-05-02',
        name: '王小虎',
        province: '上海',
        city: '普陀区',
        address: '上海市普陀区金沙江路 1518 弄',
        zip: 200333
      }, {
        date: '2016-05-04',
        name: '王小虎',
        province: '上海',
        city: '普陀区',
        address: '上海市普陀区金沙江路 1518 弄',
        zip: 200333
      }, {
        date: '2016-05-01',
        name: '王小虎',
        province: '上海',
        city: '普陀区',
        address: '上海市普陀区金沙江路 1518 弄',
        zip: 200333
      }, {
        date: '2016-05-08',
        name: '王小虎',
        province: '上海',
        city: '普陀区',
        address: '上海市普陀区金沙江路 1518 弄',
        zip: 200333
      }, {
        date: '2016-05-06',
        name: '王小虎',
        province: '上海',
        city: '普陀区',
        address: '上海市普陀区金沙江路 1518 弄',
        zip: 200333
      }, {
        date: '2016-05-07',
        name: '王小虎',
        province: '上海',
        city: '普陀区',
        address: '上海市普陀区金沙江路 1518 弄',
        zip: 200333
      }]
    }
  }
}
</script>
src/components/table/enterprise.vue
New file
@@ -0,0 +1,62 @@
<template>
    <div class="enterprise-panel">
        <div class="enterprise-function" @click="showWarnDialog()">
            <img src="@/assets/images/map-pages/icon/map/warn.png" alt="" width="32px">
        </div>
        <div class="enterprise-function" @click="showStatisDialog()">
            <img src="@/assets/images/map-pages/icon/map/company.png" alt="" width="32px">
        </div>
        <Dialog ref="warnDialog" title="企业预警报警分类统计">
            <warn></warn>
        </Dialog>
        <Dialog ref="indexStatisticsDialog" title="企业指标分类统计">
            <index-statistics></index-statistics>
        </Dialog>
    </div>
</template>
<script>
import Dialog from '../../views/popup/Dialog'
import Warn from './components/Warn'
import IndexStatistics from './components/IndexStatistics'
export default {
  name: 'Enterprise',
  components: {
    Dialog,
    Warn,
    IndexStatistics
  },
  data () {
    return {
      comp: Warn
    }
  },
  methods: {
    // 图标 控制内容的展示与隐藏
    show () {
      this.legendControl = !this.legendControl
    },
    showWarnDialog () {
      this.$refs.warnDialog.show()
    },
    showStatisDialog () {
      this.$refs.indexStatisticsDialog.show()
    }
  }
}
</script>
<style lang="less" scoped>
.enterprise-panel{
    position: absolute;
    right: 5px;
    top:5px;
    z-index: 9999;
    .enterprise-function{
        width: 40px;
        float: left;
        cursor: pointer;
    }
}
</style>
src/views/MapTemplate.vue
@@ -13,6 +13,7 @@
    <tool-box-panel ref="toolBox"></tool-box-panel>
    <menu-special></menu-special>
    <legend-panel></legend-panel>
    <enterprise></enterprise>
  </div>
</template>
@@ -29,10 +30,12 @@
import Popup from '@views/popup/Popup'
import MenuSpecial from '@components/panel/MenuTopic'
import LegendPanel from '@components/panel/LegendPanel'
import Enterprise from '../components/table/enterprise'
export default {
  name: 'MapTemplate',
  components: {
    Enterprise,
    LegendPanel,
    MenuSpecial,
    ToolBoxPanel,
src/views/popup/Dialog.vue
New file
@@ -0,0 +1,37 @@
<template>
    <el-dialog
            :title="title"
            :visible.sync="centerDialogVisible"
            width="30%"
            :modal="false"
            center>
        <slot></slot>
    </el-dialog>
</template>
<script>
// import '@/assets/css/map/map-popup.scss'
export default {
  name: 'Dialog',
  props: {
    title: {
      type: String,
      default: '标题'
    }
  },
  data () {
    return {
      centerDialogVisible: false
    }
  },
  methods: {
    show () {
      this.centerDialogVisible = true
    }
  }
}
</script>
<style lang="less">
</style>