派生自 wuyushui/SewerAndRainNetwork

wangqi
2021-04-12 3f42f9053cce923187f185c4c0db399749fce248
src/components/BaseNav/PublicBounced/GasComponents/EChartsHour.vue
@@ -15,7 +15,7 @@
                    <div class="pickerData">
                        <span> 开始时间:</span>
                        <span class="pickerTable">
                          <el-date-picker  type="datetime"   v-model="value1">
                          <el-date-picker  type="datetime"   v-model="formInline.timeStart">
                      </el-date-picker>
                      </span>
                    </div>
@@ -24,7 +24,7 @@
                        <span class="pickerTable">
                        <el-date-picker
                                type="datetime"
                                v-model="value2"
                                v-model="formInline.timeEnd"
                        >
                      </el-date-picker>
                      </span>
@@ -78,24 +78,448 @@
      myChar: null,
      value: '',
      formInline: {
        user: '',
        region: ''
        region: '',
        timeStart: '',
        timeEnd: ''
      },
      JsonCtarts: {
        id: 'mychart',
        title: '加热炉烟气',
        legend: [
          {
            icon: 'image://../assets/imgs/legend/NOX.png',
            itemHeight: 5,
            itemWidth: 20,
            textStyle: {
              color: '#CCC'
            },
            name: '氮氧化物'
          },
          {
            icon: 'image://../assets/imgs/legend/SO2.png',
            itemHeight: 5,
            itemWidth: 20,
            name: '二氧化硫',
            textStyle: {
              color: '#CCC'
            }
          },
          {
            icon: 'image://../assets/imgs/legend/YanChen.png',
            itemHeight: 5,
            itemWidth: 20,
            name: '烟尘',
            textStyle: { color: '#ccc' }
          },
          {
            icon: 'image://../assets/imgs/legend/WenDu.png',
            itemHeight: 5,
            itemWidth: 20,
            name: '温度',
            textStyle: { color: '#ccc' }
          },
          {
            icon: 'image://../assets/imgs/legend/VOCs.png',
            itemHeight: 5,
            itemWidth: 20,
            name: '废气流量',
            textStyle: { color: '#ccc' }
          }
        ],
        xdata: ['0时', '1时', '2时', '3时', '4时', '5时', '6时', '7时', '8时', '9时', '10时', '11时', '12时', '13时', '14时', '15时', '16时'],
        ydatas: [
          { name: '氮氧化物', data: ['34.44', '36.91', '37.65', '37.16', '38.03', '38.23', '37.21', '37.67', '37.97', '37.58', '36.61', '37.76', '37.27', '37.24', '35.86', 'NaN', 'NaN'], zdcbcolor: 'red', zxcolor: '#00B0F0', bzz: 50 },
          { name: '二氧化硫', data: ['4.98', '4.57', '4.19', '3.14', '3.80', '3.62', '3.33', '2.80', '3.13', '2.54', '3.08', '2.48', '1.97', '1.76', '0.82', 'NaN', 'NaN'], zdcbcolor: 'red', zxcolor: '#fff21c', bzz: 35 },
          { name: '废气流量', data: ['381907.22', '376474.19', '378572.31', '379369.44', '385225.72', '388657.56', '330667.31', '26560.98', '0.00', '0.00', '49567.43', '357837.31', '376972.66', '379693.50', '379982.22', 'NaN', 'NaN'], zdcbcolor: 'red', zxcolor: '#9ACD32', bzz: null },
          { name: '烟尘', data: ['4.02', '4.17', '4.31', '4.00', '4.45', '4.40', '4.40', '4.25', '4.26', '4.18', '4.58', '4.21', '3.96', '3.83', '3.78', 'NaN', 'NaN'], zdcbcolor: 'red', zxcolor: '#f48183', bzz: 10 },
          { name: '温度', data: ['46.55', '46.70', '46.47', '46.56', '46.57', '46.58', '46.56', '46.58', '46.69', '46.47', '46.58', '46.60', '46.54', '46.55', '46.60', 'NaN', 'NaN'], zdcbcolor: 'red', zxcolor: '#F206FF', bzz: null }
        ],
        yname: ' 浓度(mg/m³)',
        // id:'mychart',
        datatype: 2
      }
    }
  },
  methods: {
    onSubmit () {
      const date = [this.value1, this.value2, this.value]
      console.log(date)
      if (date) {
        var date1 = new Date(date)
        date1 = new Date(date1.getTime() - (8 * 3600000))
        console.log(date1)
        // var dateUtil = new DateUtil()
        // var datePkg = dateUtil.getTowDate(date1, "a", 24 * 3600000 - 1);
        // var datatype = 2;
      }
      console.log(1)
      // const date = [this.value1, this.value2, this.formInline.region]
      // this.CreateChart(this.JsonCtarts.id, this.JsonCtarts.title, this.JsonCtarts.legend, this.JsonCtarts.xdata, this.JsonCtarts.ydatas, this.JsonCtarts.yname, this.JsonCtarts.id, this.JsonCtarts.datatype)
      // console.log(date)
      // if (date) {
      //   var date1 = new Date(date)
      //   date1 = new Date(date1.getTime() - (8 * 3600000))
      //   console.log(date1)
      // var dateUtil = new DateUtil()
      // var datePkg = dateUtil.getTowDate(date1, "a", 24 * 3600000 - 1);
      // var datatype = 2;
    },
    // CreateChart: function (id, title, legend, xdata, ydatas, yname, jcdID, datatype) {
    //   this.myChart.clear()
    //   var dataUnit = ''
    //   if (datatype === 1) {
    //     dataUnit = '气量(m³/d)'
    //   } else {
    //     dataUnit = '气量(m³/h)'
    //   }
    //
    //   var serLists = []
    //   for (var j = 0; j < ydatas.length; j++) {
    //     var len = ydatas[j].data.length
    //     for (var k = 0; k < len; k++) {
    //       var it = ydatas[j].data[k]
    //       var it2 = parseFloat(it).toFixed(2)
    //       ydatas[j].data[k] = it2
    //     }
    //   }
    //
    //   for (var i = 0; i < ydatas.length; i++) {
    //     var zdcbcolor = ydatas[i].zdcbcolor
    //     var bzz = ydatas[i].bzz
    //     var obj
    //     if (bzz == null) {
    //       obj = {
    //         name: ydatas[i].name,
    //         symbol: 'circle', // 折点形状
    //         symbolSize: 10, // 大小
    //         smooth: false, // 直线 ,true 为曲线
    //         yAxisIndex: 1,
    //         itemStyle: {
    //           normal: {
    //             color: function (c) { // 根据value 显示不同的折点颜色
    //               /* var biaozhuiz
    //               for (var i = 0; i < exhbzzList.length; i++) {
    //                 if (exhbzzList[i].name == c.seriesName) {
    //                   biaozhuiz = exhbzzList[i].bzhui
    //                 }
    //               }
    //               if (c.value > 999999999999) {
    //                 return zdcbcolor
    //               } else {
    //                 return '#33c95f'
    //               } */
    //             },
    //             lineStyle: { // 折线的颜色
    //               color: ydatas[i].zxcolor,
    //               width: 5
    //             },
    //             borderColor: ydatas[i].zxcolor, // 折点边框的颜色
    //             label: { // 显示值
    //               show: false
    //             }
    //           }
    //         },
    //         type: 'line',
    //         data: ydatas[i].data
    //       }
    //     } else {
    //       obj = {
    //         name: ydatas[i].name,
    //         symbol: 'circle', // 折点形状
    //         symbolSize: 10, // 大小
    //         smooth: false, // 直线 ,true 为曲线
    //         itemStyle: {
    //           normal: {
    //             color: function (c) { // 根据value 显示不同的折点颜色
    //               var biaozhuiz
    //               for (var i = 0; i < exhbzzList.length; i++) {
    //                 if (exhbzzList[i].name == c.seriesName) {
    //                   biaozhuiz = exhbzzList[i].bzhui
    //                 }
    //               }
    //               if (c.value > biaozhuiz) {
    //                 return zdcbcolor
    //               } else if (c.value > biaozhuiz * 0.9) {
    //                 return '#FFA500'
    //               } else {
    //                 return '#33c95f'
    //               }
    //             },
    //             lineStyle: { // 折线的颜色
    //               color: ydatas[i].zxcolor,
    //               width: 5
    //             },
    //             borderColor: ydatas[i].zxcolor, // 折点边框的颜色
    //             label: { // 显示值
    //               show: false
    //             }
    //           }
    //         },
    //         type: 'line',
    //         data: ydatas[i].data,
    //         markLine: { // 平均值 , 和 指标上限
    //           symbol: 'none',
    //           data: [
    //             /* {
    //                  type: 'average',
    //                  name: '日平均值',
    //                  label: {
    //                      normal: {
    //                          position: 'end',  //显示位置
    //                          formatter:  ydatas[i].name+'\n日平均值'+'{c}' //显示样式
    //                      }
    //                  },
    //                  lineStyle:{   // 颜色
    //                      color: 'yellow',
    //                      type:'solid'
    //                  }
    //              }, */ {
    //               label: {
    //                 normal: {
    //                   position: 'end',
    //                   formatter: '' // ydatas[i].name+'标准值'//+'{c}'
    //                 }
    //               },
    //               name: '标准值',
    //               yAxis: bzz,
    //               lineStyle: {
    //                 color: ydatas[i].zxcolor,
    //                 type: 'dashed',
    //                 width: 2
    //               }
    //             }
    //           ]
    //         }
    //       }
    //     }
    //     serLists.push(obj)
    //   }
    //
    //   var option = {
    //     tooltip: { // 提示框
    //       trigger: 'axis',
    //       axisPointer: {
    //         type: 'cross',
    //         label: {
    //           color: '#1a4245'
    //         }
    //       },
    //       formatter: function (params) {
    //         var s = params[0].name + '<br/>'
    //         for (var i = 0; i < params.length; i++) {
    //           const name = params[i].name
    //           // 图表title名称
    //           var seriesName = params[i].seriesName
    //           // 值
    //           var value = params[i].value
    //           var valueFliter
    //           if (value === 'NaN') {
    //             valueFliter = ''
    //           } else {
    //             valueFliter = formatter(value)
    //           }
    //           var maker = params[i].marker
    //           if (seriesName === '二氧化硫') {
    //             maker = '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:#fff21c;"></span>'
    //           } else if (seriesName === '氮氧化物') {
    //             maker = '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:#00B0F0;"></span>'
    //           } else if (seriesName === '烟尘') {
    //             maker = '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:#f48183;"></span>'
    //           } else if (seriesName === '温度') {
    //             maker = '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:#F206FF;"></span>'
    //           } else {
    //             maker = '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:#4ec99c;"></span>'
    //           }
    //           s += maker + seriesName + ':' + valueFliter + '<br />'
    //         }
    //         return s
    //       }
    //     },
    //     toolbox: { // 打印等工具
    //       show: false,
    //       feature: {
    //         saveAsImage: {}
    //       }
    //     },
    //     grid: { // 网格
    //       top: '20%',
    //       left: '5%'
    //       // containLabel: true
    //     },
    //     legend: { // 图例
    //       data: legend
    //     },
    //     dataZoom: [{
    //       type: 'inside',
    //       start: 0,
    //       end: 100
    //     }, {
    //       start: 0,
    //       end: 100,
    //       show: false,
    //       handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
    //       handleSize: '80%',
    //       handleStyle: {
    //         color: '#fff',
    //         shadowBlur: 3,
    //         shadowColor: 'rgba(0, 0, 0, 0.6)',
    //         shadowOffsetX: 2,
    //         shadowOffsetY: 2
    //       }
    //     }],
    //     xAxis: { // x 轴设置
    //       type: 'category',
    //       boundaryGap: false,
    //       axisLabel: { // x轴全部显示
    //         rotate: 20,
    //         interval: 0,
    //         textStyle: {
    //           color: '#fff'
    //         }
    //       },
    //       splitLine: { // 网格垂直线为 虚线
    //         show: true,
    //         lineStyle: {
    //           type: 'dashed'
    //         }
    //       },
    //       axisTick: { // x 轴刻度显示
    //         show: false
    //       },
    //       axisLine: {
    //         lineStyle: {
    //           color: '#FFFFFF',
    //           width: 1// 这里是为了突出显示加上的
    //         }
    //       },
    //       data: xdata
    //     },
    //     yAxis: [{
    //       type: 'value',
    //       name: yname,
    //       /* max: function (value) {
    //         var max_val_list = [] // 所有显示折线的标准值
    //         // if(exhbzzList && exhbzzList.length>0){
    //         //   if (value.max != "-Infinity") {  // 获取所有监测指标的max值 2020/12/31
    //         //     valMax = parseInt(value.max + 5);
    //         //   }
    //         //   $.each(exhbzzList, function (index, item) {
    //         //     if (item.bzhui != null) {
    //         //       max_val_list.push(item.bzhui);
    //         //     }
    //         //   });
    //         // }
    //         max_val_list = max_val_list.sort(function (a, b) { return a - b }) // 排序
    //         var ma = value.max > max_val_list[max_val_list.length - 1] ? value.max + 5 : max_val_list[max_val_list.length - 1]
    //         return parseInt(ma)
    //       }, */
    //       axisLabel: {
    //         formatter: '{value}',
    //         textStyle: {
    //           color: '#fff'
    //         }
    //       },
    //       axisPointer: {
    //         snap: true
    //       },
    //       splitLine: {
    //         show: false
    //       }, // y轴 网格线不显示,
    //       axisLine: {
    //         lineStyle: {
    //           color: '#FFFFFF',
    //           width: 1// 这里是为了突出显示加上的
    //         }
    //       }
    //     }, {
    //       type: 'value',
    //       name: dataUnit,
    //       max: function (value) {
    //         var ma = value.max > 120 ? value.max : 120
    //         return parseInt(ma)
    //       },
    //       axisLabel: {
    //         formatter: '{value}',
    //         textStyle: {
    //           color: '#fff'
    //         }
    //       },
    //       axisPointer: {
    //         snap: true
    //       },
    //       splitLine: {
    //         show: false
    //       }, // y轴 网格线不显示,
    //       axisLine: {
    //         lineStyle: {
    //           color: '#FFFFFF',
    //           width: 1// 这里是为了突出显示加上的
    //         }
    //       }
    //     }],
    //     series: serLists
    //   }
    //   this.myChart.setOption(option)
    //
    //   this.myChart.on('legendselectchanged', function (params) {
    //     var StdVal = null
    //     var op = { yAxis: {} }
    //     const max_val_list = [] // 所有显示折线的标准值
    //     if (exhbzzList && exhbzzList.length > 0) {
    //       max_val_list.push(valMax) // 将监测指标的max值也放入数组 2020/12/31
    //       $.each(exhbzzList, function (index, item) {
    //         params.selected[item.name] ? max_val_list.push(item.bzhui) : ''
    //         if (item.name == params.name) {
    //           item.name == 'VOCs' ? StdVal = 20 : StdVal = item.bzhui
    //         }
    //       })
    //     }
    //     max_val_list = max_val_list.sort(function (a, b) { return a - b }) // 排序
    //     op.yAxis.max = function (value) {
    //       var ma = value.max < StdVal ? StdVal : Math.ceil(value.max)
    //       max_val_list ? ma = max_val_list[max_val_list.length - 1] : ''// 选择最大值
    //       return ma
    //     }
    //     this.myChart.setOption(op)
    //   })
    //
    //   /**
    //    * 解决myChart.on('click',function(){...})事件重复触发的问题
    //    * Date: 20200720
    //    */
    //   myChart.off('click')
    //
    //   /**
    //    *  图标点击事件
    //    *  20190426 add
    //    * */
    //   myChart.on('click', function (params) {
    //     // 获取当前时间,小时
    //     var nowHours = new Date().Format('hh')
    //     // 点击折线图折点对应的时间
    //     // 需要传的时间为
    //     var _date = null
    //     if (params.name.indexOf('时') != -1) {
    //       var hours = params.name.substring(0, params.name.indexOf('时'))
    //       if (parseInt(hours) < parseInt(nowHours)) {
    //         _date = new Date().Format('yyyy-MM-dd') + ' ' + hours + ':00:00'
    //       } else {
    //         var currentDate = new Date()
    //         // 24小时之前时间
    //         var stringDate = new Date(currentDate.getTime() - 24 * 60 * 60 * 1000).Format('yyyy-MM-dd')
    //         _date = stringDate + ' ' + hours + ':00:00'
    //       }
    //     } else if (params.name.indexOf('日') != -1) {
    //       var day = params.name.substring(0, params.name.indexOf('日') - 1)
    //       _date = new Date().Format('yyyy-MM') + '-' + day.trim()
    //     }
    //
    //     // todo 调接口 查凭证
    //     if (params.color != 'red') {
    //       var poltMtrlId
    //       var monItemId = 28
    //       for (var i = 0; i < wrwIDS.length; i++) {
    //         if (params.seriesName == wrwIDS[i].name) {
    //           poltMtrlId = wrwIDS[i].id
    //         }
    //       }
    //       getCBMX(jcdID, poltMtrlId, monItemId, _date, function (res) {
    //         createDivByMouse(res, params.event)
    //       })
    //     }
    //     // createDivByMouse("s",params.event);
    //   })
    // },
    drawChart: function () {
      window.onresize = function () {
        var h1 = document.documentElement.clientHeight// 获取屏幕的高度
@@ -108,218 +532,10 @@
        }
        this.myChart.resize()
      }
    },
    initOptions: function (dataDate, dataValue1, dataValue2, dataValue3) {
      var options = {
        title: {
          // text: '折线图堆叠'
        },
        color: ['#5470c6', '#91CC75', '#EE6666', '#FF0087'],
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'cross',
            label: {
              color: '#1a4245'
            }
          }
        },
        legend: {
          x: '200px',
          y: '30px',
          data: [{
            name: 'COD',
            textStyle: {
              color: '#00d0f9'
            }
          },
          {
            name: '氨氮',
            textStyle: {
              color: '#00d0f9'
            }
          },
          {
            name: '废水流量',
            textStyle: {
              color: '#00d0f9'
            }
          }]
        },
        grid: {
          left: '3%',
          right: '3%',
          bottom: '3%',
          containLabel: true
        },
        toolbox: {},
        // 图标缩放设置
        dataZoom: [{
          type: 'inside',
          start: 0,
          end: 100
        }, {
          start: 0,
          end: 100,
          show: false,
          // handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
          handleSize: '80%',
          handleStyle: {
            color: '#fff',
            shadowBlur: 3,
            shadowColor: 'rgba(0, 0, 0, 0.6)',
            shadowOffsetX: 2,
            shadowOffsetY: 2
          }
        }],
        // x轴的设置
        xAxis: {
          type: 'category',
          boundaryGap: false,
          data: dataDate,
          axisLabel: { // x轴全部显示
            rotate: 20,
            interval: 0,
            textStyle: {
              color: '#fff',
              fontSize: 10
            }
          },
          splitLine: { // 网格垂直线为虚线
            show: true,
            lineStyle: {
              type: 'dashed'
            }
          },
          axisTick: { // x 轴刻度显示
            show: false
          },
          axisLine: {
            lineStyle: {
              color: '#FFFFFF',
              width: 1 // 这里是为了突出显示加上的
            }
          }
        },
        // Y 轴的设置
        yAxis: [{
          type: 'value',
          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: {
              color: '#fff' // 坐标的字体颜色
            }
          },
          axisPointer: {
            snap: true // 自动吸附最近的点
          },
          splitLine: {
            show: false // y轴 网格线不显示
          },
          axisLine: {
            lineStyle: {
              color: '#ffffff', // 坐标轴的颜色
              width: 1
            }
          }
        }],
        series: [
          {
            name: 'COD',
            type: 'line',
            stack: '总量',
            data: dataValue1,
            yAxisIndex: 0
          },
          {
            name: '氨氮',
            type: 'line',
            stack: '总量',
            data: dataValue2,
            yAxisIndex: 0
          },
          {
            name: '废水流量',
            type: 'line',
            stack: '总量',
            data: dataValue3,
            yAxisIndex: 1
          }
        ]
      }
      return options
    }
  },
  mounted () {
    this.$nextTick(() => {
      this.drawChart()
      const dataWatch = JSON.parse(JSON.stringify(this.$attrs.getQueryOnlineMonData)).reverse()
      console.log(dataWatch)
      var dataValue1 = []
      var dataValue2 = []
      var dataValue3 = []
      var dataValue4 = []
      var dataDate = []
      for (var i = 0; i < 24; i++) {
        dataDate.push(dataWatch[i].MonTimeStr.substring(9))
      }
      for (var n = 0; n < dataWatch.length; n++) {
        if (this.$attrs.value === 'feishui') {
          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)
        } else if (this.$attrs.value === 'feiqi') {
          if (dataWatch[n].PoltmtrlName === '废气流量') {
            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)
          } else if (dataWatch[n].PoltmtrlName === '"氮氧化物"') {
            dataValue4.push(dataWatch[n].MonQty)
            const opitons = this.initOptions(dataDate, dataValue1, dataValue2, dataValue3, dataValue4)
            this.myChart = this.$echarts.init(this.$refs.main)
            this.myChart.setOption(opitons)
          }
        }
      }
      // const opitons = this.initOptions(dataDate, dataValue1, dataValue2, dataValue3)
      // this.myChart = this.$echarts.init(this.$refs.main)
      // this.myChart.setOption(opitons)
    })
  }
}
</script>