From 4af913e89b28f32a1ea168866f8dd38e2c6411fb Mon Sep 17 00:00:00 2001
From: 徐旺旺 <11530253@qq.com>
Date: 星期三, 21 四月 2021 16:58:25 +0800
Subject: [PATCH] Merge branch 'develop' of http://xearth.cn:6600/r/wuyushui/SewerAndRainNetwork into develop

---
 src/components/BaseNav/WasteGas/RealData.vue |  737 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 737 insertions(+), 0 deletions(-)

diff --git a/src/components/BaseNav/WasteGas/RealData.vue b/src/components/BaseNav/WasteGas/RealData.vue
new file mode 100644
index 0000000..b440dda
--- /dev/null
+++ b/src/components/BaseNav/WasteGas/RealData.vue
@@ -0,0 +1,737 @@
+<template>
+  <div id="Tab">
+    <PublicDataStandard :dataStandard="dataStandard"></PublicDataStandard>
+    <div class="form-echrts">
+      <div class="from-search">
+        <div class="pickerMon">
+          <div class="pickerData">
+            <span> 寮�濮嬫椂闂�:</span>
+            <span class="pickerTable">
+              <el-date-picker type="datetime" v-model="formInline.timeStart"></el-date-picker>
+            </span>
+          </div>
+          <div class="pickerData">
+            <span>缁撴潫鏃堕棿:</span>
+            <span class="pickerTable">
+              <el-date-picker type="datetime" v-model="formInline.timeEnd"></el-date-picker>
+            </span>
+          </div>
+        </div>
+        <div>
+          <span>閲囨牱鐐规暟:</span>
+          <el-select v-model="formInline.region" placeholder="50">
+            <el-option label="0" value="0"></el-option>
+            <el-option label="25" value="25"></el-option>
+            <el-option label="50" value="50"></el-option>
+            <el-option label="75" value="75"></el-option>
+            <el-option label="100" value="100"></el-option>
+          </el-select>
+        </div>
+        <div class="detailbtn" @click="querySearch">鏌ヨ</div>
+      </div>
+      <div style="width:5rem;height:1.5rem;" ref="echarts"></div>
+    </div>
+  </div>
+</template>
+
+<script>
+
+import PublicDataStandard from '@/components/BaseNav/PublicDataStandard'
+import mapApi from '@/api/mapApi'
+import 'dayjs/locale/es'
+import dayjs from 'dayjs'
+
+export default {
+  name: 'ECharts',
+  components: {
+    PublicDataStandard
+  },
+  data () {
+    return {
+      // tab鏍忎紶閫掓帴鏀舵暟鎹�
+      dataStandard: [
+        {
+          current: {
+            name: '姘哀鍖栫墿',
+            val: 29.93
+          },
+          standard: {
+            name: '鏍囧噯',
+            val: 100
+          }
+        },
+        {
+          current: {
+            name: '浜屾哀鍖栫~',
+            val: 17.34
+          },
+          standard: {
+            name: '鏍囧噯',
+            val: 50
+          }
+        },
+        {
+          current: {
+            name: '鐑熷皹',
+            val: 6.93
+          },
+          standard: {
+            name: '鏍囧噯',
+            val: 30
+          }
+        },
+        {
+          current: {
+            name: '搴熸皵娴侀噺',
+            val: 120
+          },
+          standard: {
+            name: '',
+            val: null
+          }
+        }],
+
+      // echarts鐨勬暟鎹缃�
+      myChart: null,
+
+      // 寮�濮� /缁撴潫 鏃堕棿 鍜岄噰鏍风偣鍊肩殑缁戝畾鍊兼暟鎹�
+      formInline: {
+        region: '',
+        timeEnd: '',
+        timeStart: ''
+      },
+
+      // 瀹炴椂鏁版嵁鍒楄〃
+      EXHRealTimeDataList: [],
+      bzz: null,
+      exhbzz: [],
+      exhbzzList: []
+    }
+  },
+  mounted () {
+    this.$nextTick(() => {
+      this.initEchartsData()
+    })
+  },
+  methods: {
+    // 鐐瑰嚮鏌ヨ鎸夐挳鍔熻兘
+    querySearch () {
+      // 鐢ㄤ簬鎺ュ彛鏁版嵁璇锋眰鐨勫弬鏁� 寮�濮�/缁撴潫鏃堕棿 || 鍙�夋嫨鏌ヨ鐨勫紑濮�/缁撴潫鏃堕棿
+      this.formInline.timeEnd = dayjs().format('YYYYMMDD HHmmss')
+      this.formInline.timeStart = dayjs().subtract(3, 'minute').format('YYYYMMDD HHmmss')
+      this.initEchartsData()
+    },
+    // 鍒濆鍖栨暟鎹幏鍙杄charts鐨刼ptions鏁版嵁
+    async initEchartsData () {
+      const data = {
+        $tagCodeList: 'TJIP45.y2h508CEMS01NOX,CTJIP45.y2h508CEMS01SO2,CTJIP45.y2h508CEMS01F,CTJIP45.y2h508CEMS01PM',
+        $startTime: this.formInline.timeEnd,
+        $endTime: this.formInline.timeStart,
+        $step: 15
+      }
+      const result = (await mapApi.DataItems(data)).data
+      console.log(result)
+      this.getRtdb15s(result)
+    },
+    // echarts鏁版嵁澶勭悊
+    getRtdb15s (res) {
+      if (res.length > 0) {
+        // 澶勭悊鏁版嵁寮�濮�
+        const d = res
+        const nameList = [] // 瀛樻斁鍥句緥
+
+        let data // 鏁版嵁绫诲瀷// let data={name:'',value:[now1.getFullYear(), now1.getMonth() + 1, now1.getDate().join('/'),value]}
+        let datalist // 瀛樻斁data鐨勬暟缁�
+        // let bzh = []
+        for (let i = 0; i < d.length; i++) {
+          if (d[i].ErrorMessage != null) {
+            continue
+          }
+          // const name = CFG.DATA_REALTIME_TAGCODETABLE[d[i].UnionTagCode].TagName
+          // 涓存椂name鏁版嵁
+          const nameListTemp = [
+            {
+              'TJIP45.y2h508CEMS01NOX': '姘哀鍖栫墿',
+              'TJIP45.y2h508CEMS01SO2': '鐑熷皹',
+              'TJIP45.y2h508CEMS01F': '浜屾哀鍖栫7',
+              'TJIP45.y2h508CEMS01PM': 'ph'
+              // 'TJIP45.lscl2tb552AI10710': '浜屾哀鍖栫⒊'
+            }
+          ]
+          const name = nameListTemp[0][d[i].UnionTagCode]
+
+          if (nameList.length === 0) {
+            nameList.push(name)
+            const newdate = new Date(d[i].ReadTime)
+            data = {
+              name: name,
+              value: [newdate, d[i].TagValue]
+            }
+            datalist = {
+              name: name,
+              data: [data]
+            }
+            this.EXHRealTimeDataList.push(datalist)
+          } else if (nameList.indexOf(name) < 0) {
+            nameList.push(name)
+            const newdate = new Date(d[i].ReadTime)
+            data = {
+              name: name,
+              value: [newdate, d[i].TagValue]
+            }
+            datalist = {
+              name: name,
+              data: [data]
+            }
+            this.EXHRealTimeDataList.push(datalist)
+          } else if (i === d.length - 1) {
+            if (nameList.indexOf(name) < 0) {
+              nameList.push(name)
+              const newdate = new Date(d[i].ReadTime)
+              data = {
+                name: name,
+                value: [newdate, d[i].TagValue]
+              }
+              datalist = {
+                name: name,
+                data: [data]
+              }
+              this.EXHRealTimeDataList.push(datalist)
+            } else {
+              const newdate = new Date(d[i].ReadTime)
+              data = {
+                name: name,
+                value: [newdate, d[i].TagValue]
+              }
+              for (let k = 0; k < this.EXHRealTimeDataList.length; k++) {
+                if (this.EXHRealTimeDataList[k].name === name) {
+                  this.EXHRealTimeDataList[k].data.push(data)
+                }
+              }
+            }
+          } else {
+            const newdate = new Date(d[i].ReadTime)
+            data = {
+              name: name,
+              value: [newdate, d[i].TagValue]
+            }
+            for (let k = 0; k < this.EXHRealTimeDataList.length; k++) {
+              if (this.EXHRealTimeDataList[k].name === name) {
+                this.EXHRealTimeDataList[k].data.push(data)
+              }
+            }
+          }
+        }
+        // console.log(this.EXHRealTimeDataList)
+
+        const divid = 'mychart_ss'
+        const title = name
+        const lengList = []
+        let objTemp
+
+        for (let l = 0; l < nameList.length; l++) {
+          let obj
+          let iconurl
+          if (nameList[l] === 'ph') {
+            iconurl = 'image://../assets/imgs/legend/WenDu.png'
+          } else if (nameList[l] === '姘哀鍖栫墿') {
+            iconurl = 'image://../assets/imgs/legend/NOX.png'
+          } else if (nameList[l] === '鐑熷皹') {
+            iconurl = 'image://../assets/imgs/legend/zongdan.png'
+          } else if (nameList[l] === '浜屾哀鍖栫7') {
+            iconurl = 'image://../assets/imgs/legend/YanChen.png'
+          } else if (nameList[l] === '浜屾哀鍖栫⒊') {
+            iconurl = 'image://../assets/imgs/legend/VOCs.png'
+          }
+
+          if (nameList[l] === '搴熸皵' || nameList[l] === '搴熸皵娴侀噺') { // 灏嗗簾姘旀祦閲忔帓鍒版暟缁勬渶鍚�
+            objTemp = {
+              name: nameList[l],
+              icon: iconurl,
+              textStyle: {
+                color: '#ccc'
+              },
+              itemWidth: 20,
+              itemHeight: 5
+            }
+          } else {
+            obj = {
+              name: nameList[l],
+              icon: iconurl,
+              textStyle: {
+                color: '#ccc'
+              },
+              itemWidth: 20,
+              itemHeight: 5
+            }
+            lengList.push(obj)
+          }
+        }
+        lengList.push(objTemp)
+
+        const legend = lengList
+        const ydatas = []
+
+        for (let j = 0; j < nameList.length; j++) {
+          let zdcbcolor, zxcolor
+          if (nameList[j] === 'ph') {
+            zdcbcolor = 'red'
+            zxcolor = '#f206ff'
+          } else if (nameList[j] === '鐑熷皹') {
+            zdcbcolor = 'red'
+            zxcolor = '#e0ffff'
+          } else if (nameList[j] === '姘哀鍖栫墿') {
+            zdcbcolor = 'red'
+            zxcolor = '#00B0F0'
+          } else if (nameList[j] === '浜屾哀鍖栫⒊') {
+            zdcbcolor = 'red'
+            zxcolor = '#9ACD32'
+          } else if (nameList[j] === '浜屾哀鍖栫7') {
+            zdcbcolor = 'red'
+            zxcolor = '#f48183'
+          }
+          let ydata
+          // 涓存椂鏁版嵁
+          const BBZMAPPING = [
+            {
+              COD: 35,
+              ph: 9,
+              鎬绘爱: 15,
+              鎬荤7: 0.3,
+              姘ㄦ爱: 3
+            }
+          ]
+          for (let m = 0; m < this.EXHRealTimeDataList.length; m++) {
+            let stdValue = null
+            if (this.EXHRealTimeDataList[m].name === nameList[j]) {
+              for (const i in this.BBZMAPPING) {
+                console.log(i)
+                stdValue = BBZMAPPING[this.EXHRealTimeDataList[m].name]
+              }
+
+              ydata = {
+                name: nameList[j],
+                data: this.EXHRealTimeDataList[m].data,
+                zdcbcolor: zdcbcolor,
+                zxcolor: zxcolor,
+                bzz: stdValue
+              }
+              this.exhbzz = {
+                name: nameList[j],
+                bzhui: stdValue
+              }
+              this.exhbzzList.push(this.exhbzz)
+              ydatas.push(ydata)
+            }
+          }
+        }
+
+        const yname = '娴撳害(mg/m鲁)'
+
+        this.DrawRealTimeDateChart(divid, title, legend, ydatas, yname)
+      }
+    },
+    // 鑾峰彇鏁版嵁鐢ㄤ簬echarts鍥捐〃缁樺埗
+    DrawRealTimeDateChart (id, title, legend, ydatas, yname) {
+      // console.log(ydatas)
+      this.myChart = this.$echarts.init(this.$refs.echarts)
+      const serLists = []
+      let dataUnit
+      for (let i = 0; i < ydatas.length; i++) {
+        const zdcbcolor = ydatas[i].zdcbcolor
+        const bz = ydatas[i].bzz
+        let obj
+        if (bz) {
+          obj = {
+            name: ydatas[i].name,
+            // symbol:'circle', // 鎶樼偣褰㈢姸
+            // symbolSize: 3,   //澶у皬
+            smooth: true, // 鐩寸嚎 锛宼rue 涓烘洸绾�
+            itemStyle: {
+              normal: {
+                color: function (c) { // 鏍规嵁value 鏄剧ず涓嶅悓鐨勬姌鐐归鑹�
+                  let biaozhuiz
+                  for (let i = 0; i < this.bzzList.length; i++) {
+                    if (this.bzzList[i].name === c.seriesName) {
+                      biaozhuiz = this.bzzList[i].bzhui
+                    }
+                  }
+                  if (c.value[1] > biaozhuiz) {
+                    return zdcbcolor
+                  } else if (c.value[1] > biaozhuiz * 0.9) {
+                    return '#FFA500'
+                  } else {
+                    return '#33c95f'
+                  }
+                },
+                lineStyle: { // 鎶樼嚎鐨勯鑹�
+                  color: ydatas[i].zxcolor,
+                  width: 2
+                },
+                // borderColor:'black',  //鎶樼偣杈规鐨勯鑹�
+                label: { // 鏄剧ず鍊�
+                  show: false
+                }
+              }
+
+            },
+            type: 'line',
+            data: ydatas[i].data,
+            markLine: { // 骞冲潎鍊� 锛� 鍜� 鎸囨爣涓婇檺
+              symbol: 'none',
+              data: [{
+                label: {
+                  normal: {
+                    position: 'end',
+                    formatter: ''// ydatas[i].name+'鏍囧噯鍊�' //+'{c}'
+                  }
+                },
+                name: '鏍囧噯鍊�',
+                yAxis: bz,
+                lineStyle: {
+                  color: ydatas[i].zxcolor,
+                  type: 'dashed',
+                  width: 2
+                }
+              }
+              ]
+            }
+          }
+        } else {
+          obj = {
+            name: ydatas[i].name,
+            // symbol:'circle', // 鎶樼偣褰㈢姸
+            // symbolSize: 3,   //澶у皬
+            smooth: true, // 鐩寸嚎 锛宼rue 涓烘洸绾�
+            yAxisIndex: 1,
+            itemStyle: {
+              normal: {
+                color: function (c) { // 鏍规嵁value 鏄剧ず涓嶅悓鐨勬姌鐐归鑹�
+                  return '#33c95f'
+                },
+                lineStyle: { // 鎶樼嚎鐨勯鑹�
+                  color: ydatas[i].zxcolor,
+                  width: 2
+                },
+                // borderColor:'black',  //鎶樼偣杈规鐨勯鑹�
+                label: { // 鏄剧ず鍊�
+                  show: false
+                }
+              }
+
+            },
+            type: 'line',
+            data: ydatas[i].data
+          }
+        }
+
+        if (ydatas[i].name === '搴熸皵娴侀噺' || ydatas[i].name === '搴熸皵') {
+          obj.yAxisIndex = 1
+        }
+        // 涓存椂
+        const datatype = 1
+        if (datatype === 1) {
+          dataUnit = '娴侀噺(m鲁/d)'
+        } else {
+          dataUnit = '娴侀噺(m鲁/h)'
+        }
+        serLists.push(obj)
+      }
+      const option = {
+        /*  title: {
+              text: title,
+          }, */
+        tooltip: { // 鎻愮ず妗�
+          trigger: 'axis',
+          axisPointer: {
+            type: 'cross',
+            label: {
+              color: '#1a4245'
+            }
+          },
+          formatter: function (params) {
+            let s = params[0].name + '<br />'
+            for (let i = 0; i < params.length; i++) {
+              // let name = params[i].name
+              // 鍥捐〃title鍚嶇О
+              const seriesName = params[i].seriesName
+              // 鍊�
+              const value = params[i].value[1]
+
+              // let valueFliter = formatter(value)
+              const valueFliter = parseFloat(value).toFixed(2)
+
+              let maker = params[i].marker
+              let colo = ''
+              switch (seriesName) {
+                case 'ph':
+                  colo = '#f206ff'
+                  break
+                case '姘哀鍖栫墿':
+                  colo = '#00B0F0'
+                  break
+                case '鐑熷皹':
+                  colo = '#e0ffff'
+                  break
+                case '浜屾哀鍖栫⒊':
+                  colo = '#9ACD32'
+                  break
+                case '浜屾哀鍖栫7':
+                  colo = '#f48183'
+                  break
+                default:
+                  colo = ''
+                  break
+              }
+              maker = '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:' + colo + ';"></span>'
+              s += maker + seriesName + ':' + valueFliter + '<br />'
+            }
+            return s
+          }
+        },
+        toolbox: {
+          show: false,
+          feature: {
+            saveAsImage: {}
+          }
+        },
+        grid: {
+          top: '20%',
+          bottom: '15%'
+        },
+        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: 'time',
+          boundaryGap: false,
+          axisLabel: { // x杞村叏閮ㄦ樉绀�
+            // rotate: 30,
+            margin: 6,
+            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) {
+            return parseInt(value.max + 30)
+          },
+          axisLabel: {
+            formatter: '{value}',
+            textStyle: {
+              color: '#fff'
+            }
+          },
+          axisPointer: {
+            snap: true
+          },
+          splitLine: {
+            show: false
+          }, // y杞� 缃戞牸绾夸笉鏄剧ず,
+          axisLine: {
+            lineStyle: {
+              color: '#FFFFFF',
+              width: 1// 杩欓噷鏄负浜嗙獊鍑烘樉绀哄姞涓婄殑
+            }
+          }
+        }, {
+          type: 'value',
+          name: dataUnit,
+          axisLabel: {
+            formatter: '{value}',
+            textStyle: {
+              color: '#fff'
+            }
+          },
+          axisPointer: {
+            snap: true
+          },
+          splitLine: {
+            show: false
+          }, // y杞� 缃戞牸绾夸笉鏄剧ず,
+          // inverse: true,
+          // nameLocation: 'start',
+          // max:500,
+          axisLine: {
+            lineStyle: {
+              color: '#FFFFFF',
+              width: 1// 杩欓噷鏄负浜嗙獊鍑烘樉绀哄姞涓婄殑
+            }
+          }
+        }],
+        series: serLists
+      }
+      this.myChart.setOption(option)
+    },
+    // 瀹氭椂鍣� 鏍规嵁鏃堕棿闂撮殧璇锋眰鏁版嵁
+    IntervalRealTimeDate (id, unionTagCodeList, BBZMAPPING) {
+      // const interValHander = setInterval(function () {
+      //   this.initEchartsData()
+      // console.log('闂撮殧璇锋眰鏁版嵁')
+      // }, 1500)
+      // console.log(interValHander)
+    }
+  }
+}
+</script>
+
+<style scoped lang="less">
+.grid-content {
+  font-size: 8px;
+  background-color: #2e4967;
+  text-align: center;
+  border-radius: 2px;
+  margin-right: 10px;
+  padding: 0 10px;
+
+  > i {
+    color: #ffffff;
+  }
+}
+
+.animation {
+  //width: 600px;
+  //height: 0.06rem;
+  .infomation {
+    padding: 5px 10px;
+  }
+}
+
+.form-echrts {
+  width: 100%;
+  border-top: 1px solid #396d83;
+  //margin: 10px 10px 10px 10px;
+  .from-search {
+    display: flex;
+    padding: 5px;
+
+    > div {
+      margin-left: 10px
+    }
+
+    .pickerMon {
+      display: flex;
+
+      > div:first-child {
+        margin-right: 10px;
+      }
+
+      .pickerData {
+        flex: 1;
+        display: flex;
+
+        > span {
+          line-height: 22px
+        }
+
+        .pickerTable {
+          margin-left: 3px;
+        }
+      }
+    }
+
+    /deep/ .el-date-editor--datetime {
+      width: 100%;
+    }
+
+    /deep/ .el-input__inner {
+      position: relative;
+      width: 140px;
+      background-color: #2e4967;
+      color: #fff;
+      font-size: 12px;
+      height: 24px;
+      padding: 0;
+      border-color: #00fff6;
+      text-align: center;
+      z-index: 9999;
+      //padding-left:20px ;
+      //padding: 0!important;
+    }
+
+    /deep/ .el-input__icon {
+      display: block;
+      width: 140px;
+      height: 22px;
+      line-height: 22px;
+      cursor: pointer;
+      font-size: 0;
+    }
+
+    .echatsInput {
+      color: #00ffff;
+      background-color: #2e4967;
+      border: none;
+      border-radius: 6px;
+      width: 80px;
+      height: 22px;
+    }
+
+    input::-webkit-calendar-picker-indicator {
+      opacity: 100;
+    }
+
+    .detailbtn {
+      background-color: #2e4967;
+      text-align: center;
+      padding: 0 7px;
+      line-height: 20px;
+      border-radius: 4px;
+      margin-right: 6px;
+    }
+
+  }
+
+  .el-dialog-div {
+    //height: 50vh!important;
+    overflow: auto;
+    //overflow: hidden;
+  }
+
+  #echarts {
+    margin: 0;
+    padding: 0;
+    //height: 3rem;
+    //border: 1px solid #396d83;
+    //margin: 10px 10px 10px 10px;
+  }
+}
+</style>

--
Gitblit v1.8.0