派生自 wuyushui/SewerAndRainNetwork

zhangshuaibao
2021-04-08 10b043568dbe047eface8e417bfc3716e7148fbc
src/components/BaseNav/PublicBounced/GasComponents/EChartsHour.vue
@@ -2,54 +2,48 @@
<template>
    <div id="Tab">
        <div class="infomation">
            <el-tag>氮氧化物 : 29.93 标准 : 100</el-tag>
            <el-tag>二氧化硫 : 17.34 标准 : 50</el-tag>
            <el-tag>烟尘 : 6.93 标准 : 30</el-tag>
            <el-tag>废气流量 : 120343.18</el-tag>
            <el-tag>氮氧化物:29.93 标准:100</el-tag>
            <el-tag>二氧化硫:17.34 标准:50</el-tag>
            <el-tag>烟尘:6.93 标准:30</el-tag>
            <el-tag>废气流量:120343.18</el-tag>
        </div>
        <div class="form-echrts">
            <!--    :title="this.$attrs.getWasteGasDetails[0].OnLineMonEmissPointName"      -->
<!--            <div class="from-search">-->
<!--                <el-form :inline="true" :model="formInline" class="demo-form-inline">-->
<!--&lt;!&ndash;                    <el-form-item label="审批人">&ndash;&gt;-->
<!--&lt;!&ndash;                        <el-input v-model="formInline.user" placeholder="审批人"></el-input>&ndash;&gt;-->
<!--&lt;!&ndash;                    </el-form-item>&ndash;&gt;-->
<!--                    <div class="block">-->
<!--                        <el-date-picker-->
<!--                                class="date"-->
<!--                                v-model="value"-->
<!--                                type="datetimerange"-->
<!--                                range-separator="至"-->
<!--                                start-placeholder="开始日期"-->
<!--                                end-placeholder="结束日期">-->
<!--                        </el-date-picker>-->
<!--                    </div>-->
<!--                    <el-form-item label="采样点数" class="text-size">-->
<!--                        <el-select v-model="formInline.region" placeholder="0">-->
<!--                            <el-option label="0" value="shanghai"></el-option>-->
<!--                            <el-option label="25" value="beijing"></el-option>-->
<!--                            <el-option label="50" value="beijing"></el-option>-->
<!--                            <el-option label="75" value="beijing"></el-option>-->
<!--                            <el-option label="100" value="beijing"></el-option>-->
<!--                        </el-select>-->
<!--                    </el-form-item>-->
<!--                    <el-form-item>-->
<!--                        <el-button type="primary" @click="onSubmit">查询</el-button>-->
<!--                    </el-form-item>-->
<!--                </el-form>-->
<!--                <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-->
<!--                >-->
<!--                    <div class="el-dialog-div" style="height: 500px">-->
<!--                        <public-detailed-list v-bind="$attrs"></public-detailed-list>-->
<!--                    </div>-->
<!--                </el-dialog>-->
<!--            </div>-->
            <div class="from-search">
                <el-form :inline="true" :model="formInline" class="demo-form-inline">
                    <el-date-picker
                            class="date"
                            v-model="value"
                            type="datetimerange"
                            range-separator="至"
                            start-placeholder="开始日期"
                            end-placeholder="结束日期">
                    </el-date-picker>
                    <el-form-item label="采样点数" class="text-size">
                        <el-select v-model="formInline.region" placeholder="0">
                            <el-option label="0" value="shanghai"></el-option>
                            <el-option label="25" value="beijing"></el-option>
                            <el-option label="50" value="beijing"></el-option>
                            <el-option label="75" value="beijing"></el-option>
                            <el-option label="100" value="beijing"></el-option>
                        </el-select>
                    </el-form-item>
                    <el-form-item>
                        <el-button type="primary" @click="onSubmit">查询</el-button>
                    </el-form-item>
                    <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
                    >
                        <div class="el-dialog-div" style="height: 500px">
                            <public-detailed-list v-bind="$attrs"></public-detailed-list>
                        </div>
                    </el-dialog>
                </el-form>
            </div>
            <div style="width:100%;height:1rem;margin-top:-0.1rem;position:absolute;" id="echarts" ref="main">
            </div>
        </div>
@@ -68,9 +62,33 @@
    return {
      watchData: [],
      dialogVisible: false,
      dataDate: [],
      myChar: null,
      value: '',
      options: {
      formInline: {
        user: '',
        region: ''
      }
    }
  },
  methods: {
    onSubmit () {
      console.log('submit!')
    },
    drawChart: function () {
      window.onresize = function () {
        var h1 = document.documentElement.clientHeight// 获取屏幕的高度
        if (h1 > 700) {
          this.myChart.getDom().style.height = 3 + 'rem'
          this.myChart.getDom().style.width = 6 + 'rem'
        } else {
          this.myChart.getDom().style.height = 3 + 'rem'
          this.myChart.getDom().style.width = 6 + 'rem'
        }
        this.myChart.resize()
      }
    },
    initOptions: function (dataDate, dataValue1, dataValue2, dataValue3) {
      var options = {
        title: {
          // text: '折线图堆叠'
        },
@@ -88,25 +106,19 @@
          x: '200px',
          y: '30px',
          data: [{
            name: '氮氧化物',
            name: 'COD',
            textStyle: {
              color: '#00d0f9'
            }
          },
          {
            name: '二氧化硫',
            name: '氨氮',
            textStyle: {
              color: '#00d0f9'
            }
          },
          {
            name: '烟尘',
            textStyle: {
              color: '#00d0f9'
            }
          },
          {
            name: '废气流量',
            name: '废水流量',
            textStyle: {
              color: '#00d0f9'
            }
@@ -114,12 +126,11 @@
        },
        grid: {
          left: '3%',
          right: '1%',
          right: '6%',
          bottom: '3%',
          containLabel: true
        },
        toolbox: {
        },
        toolbox: {},
        // 图标缩放设置
        dataZoom: [{
          type: 'inside',
@@ -143,12 +154,13 @@
        xAxis: {
          type: 'category',
          boundaryGap: false,
          data: ['12:00:00', '13:00:00', '14:00:00', '15:00:00', '16:00:00', '17:00:00', '18:00:00'],
          data: dataDate,
          axisLabel: { // x轴全部显示
            rotate: 20,
            interval: 0,
            textStyle: {
              color: '#fff'
              color: '#fff',
              fontSize: 10
            }
          },
          splitLine: { // 网格垂直线为虚线
@@ -170,9 +182,31 @@
        // Y 轴的设置
        yAxis: [{
          type: 'value',
          // position: 'left', // 多 Y 轴使用
          // name: yname, // 后期图标Y轴显示单位
          position: 'left', // 多 Y 轴使用
          name: '浓度(mg/m³)',
          axisLabel: {
            formatter: '{value}',
            textStyle: {
              color: '#fff' // 坐标的字体颜色
            }
          },
          axisPointer: {
            snap: true // 自动吸附最近的点
          },
          splitLine: {
            show: false // y轴 网格线不显示
          },
          axisLine: {
            lineStyle: {
              color: '#ffffff', // 坐标轴的颜色
              width: 1
            }
          }
        },
        {
          type: 'value',
          position: 'right', // 多 Y 轴使用
          name: '流量(m³/h³)',
          axisLabel: {
            formatter: '{value}',
            textStyle: {
@@ -194,106 +228,105 @@
        }],
        series: [
          {
            name: '氮氧化物',
            name: 'COD',
            type: 'line',
            stack: '总量',
            data: [120, 132, 101, 134, 90, 230, 210]
            data: dataValue1,
            yAxisIndex: 0
          },
          {
            name: '二氧化硫',
            name: '氨氮',
            type: 'line',
            stack: '总量',
            data: [150, 232, 201, 154, 190, 330, 410]
            data: dataValue2,
            yAxisIndex: 0
          },
          {
            name: '烟尘',
            name: '废水流量',
            type: 'line',
            stack: '总量',
            data: [320, 332, 301, 334, 390, 330, 320]
          },
          {
            name: '废气流量',
            type: 'line',
            stack: '总量',
            data: [820, 932, 901, 934, 1290, 1330, 1320]
            data: dataValue3,
            yAxisIndex: 1
          }
        ]
      },
      formInline: {
        user: '',
        region: ''
      }
    }
  },
  methods: {
    onSubmit () {
      console.log('submit!')
    },
    drawChart: function () {
      const myChart = this.$echarts.init(this.$refs.main)
      myChart.setOption(this.options)
      window.onresize = function () {
        var h1 = document.documentElement.clientHeight// 获取屏幕的高度
        if (h1 > 700) {
          myChart.getDom().style.height = 3 + 'rem'
          myChart.getDom().style.width = 6 + 'rem'
        } else {
          myChart.getDom().style.height = 3 + 'rem'
          myChart.getDom().style.width = 6 + 'rem'
        }
        myChart.resize()
      }
      return options
    }
  },
  mounted () {
    this.$nextTick(() => {
      this.drawChart()
      const dataWatch = JSON.parse(JSON.stringify(this.$attrs.getWasteWaterMonitoring))
      // console.log(dataWatch)
      for (var i = 0; i < dataWatch.length; i++) {
        this.dataDate.push(dataWatch[i].MonTimeStr.substring(10, 17))
      const dataWatch = JSON.parse(JSON.stringify(this.$attrs.getQueryOnlineMonData))
      console.log(dataWatch)
      var dataValue1 = []
      var dataValue2 = []
      var dataValue3 = []
      var dataDate = []
      for (var i = 0; i < 24; i++) {
        dataDate.push(dataWatch[i].MonTimeStr.substring(9))
      }
      // console.log(this.dataDate)
      for (var n = 0; n < dataWatch.length; n++) {
        if (dataWatch[n].PoltmtrlName === 'COD') {
          dataValue1.push(dataWatch[n].MonQty)
        } else if (dataWatch[n].PoltmtrlName === '氨氮') {
          dataValue2.push(dataWatch[n].MonQty)
        } else if (dataWatch[n].PoltmtrlName === '废水流量') {
          dataValue3.push(dataWatch[n].MonQty)
        }
      }
      const opitons = this.initOptions(dataDate, dataValue1, dataValue2, dataValue3)
      this.myChart = this.$echarts.init(this.$refs.main)
      this.myChart.setOption(opitons)
    })
  }
}
</script>
<style scoped lang="less">
.Infomation {
  margin-left: 10px;
  height: 0.2rem;
}
    .infomation {
        height: 0.2rem;
        display: flex;
        justify-content: space-around;
        margin-bottom: 5px;
    }
.el-tag {
  height: 25px;
    width: 140px;
  line-height: 25px;
  margin-right: 10px;
  font-size: 10px;
  background-color: rgba(0, 255, 246, 0.14);
  color: #00d0f9;
  border: none;
  padding: 0 15px;
}
    .el-tag {
        height: 25px;
        line-height: 25px;
        background-color: rgba(0, 255, 246, 0.14);
        color: #00d0f9;
        border: none;
    }
.form-echrts {
  width: 100%;
  height: 1rem;
  border-top: 1px solid #396d83;
  //margin: 10px 10px 10px 10px;
  .el-dialog-div {
    //height: 50vh!important;
    overflow: auto;
    //overflow: hidden;
  }
    .form-echrts {
        height: 1rem;
        border-top: 1px solid #396d83;
  #echarts {
    margin: 0;
    padding: 0;
    //height: 3rem;
    //border: 1px solid #396d83;
    //margin: 10px 10px 10px 10px;
  }
}
        .el-dialog-div {
            //height: 50vh!important;
            overflow: auto;
            //overflow: hidden;
        }
        .from-search {
            background-color: red;
            .date{
                width: 200px;
                height: 30px;
                padding: 0;
                border: none;
                .el-icon-time{
                    line-height: 30px;
                }
            }
        }
        #echarts {
            margin: 0;
            padding: 0;
            //height: 3rem;
            //border: 1px solid #396d83;
            //margin: 10px 10px 10px 10px;
        }
    }
</style>