From 17de93255772734b15cce7a0c680a40d2ec5878c Mon Sep 17 00:00:00 2001
From: zhangshuaibao <15731629597@163.com>
Date: 星期五, 09 四月 2021 09:43:43 +0800
Subject: [PATCH] echarts日数据折线图实现

---
 src/components/BaseNav/PublicBounced/GasComponents/PublicChart.vue |    7 
 src/components/BaseNav/PublicBounced/GasComponents/EChartsHour.vue |    4 
 src/components/BaseNav/PublicBounced/GasComponents/EChartsDate.vue |  449 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/components/BaseNav/PublicBounced/PublicBounced.vue             |    3 
 4 files changed, 457 insertions(+), 6 deletions(-)

diff --git a/src/components/BaseNav/PublicBounced/GasComponents/EChartsDate.vue b/src/components/BaseNav/PublicBounced/GasComponents/EChartsDate.vue
new file mode 100644
index 0000000..cf5bcb8
--- /dev/null
+++ b/src/components/BaseNav/PublicBounced/GasComponents/EChartsDate.vue
@@ -0,0 +1,449 @@
+<!--  灏忔椂鏁版嵁  -->
+<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-row>
+            <el-col :span="6"><div class="grid-content bg-purple">姘哀鍖栫墿 : 29.93 鏍囧噯 : 100</div></el-col>
+            <el-col :span="6"><div class="grid-content bg-purple">浜屾哀鍖栫~ : 17.34 鏍囧噯 : 50</div></el-col>
+            <el-col :span="6"><div class="grid-content bg-purple">鐑熷皹 : 6.93 鏍囧噯 : 30</div></el-col>
+            <el-col :span="6"><div class="grid-content bg-purple">搴熸皵娴侀噺 : 120343.18</div></el-col>
+<!--            <el-col :span="6"><div class="grid-content bg-purple"></div></el-col>-->
+          </el-row>
+        </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">-->
+<!--                    <el-form-item label="瀹℃壒浜�">-->
+<!--                        <el-input v-model="formInline.user" placeholder="瀹℃壒浜�"></el-input>-->
+<!--                    </el-form-item>-->
+<!--                    <div class="block">-->
+<!--                        <el-date-picker-->
+<!--                            size="'mini"-->
+<!--                                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>-->
+<!--              <input list="students">-->
+<!--              <datalist id="students">-->
+<!--                <option value="Lily">-->
+<!--                <option value="Lucy">-->
+<!--                <option value="Jim">-->
+<!--                <option value="Lily">-->
+<!--              </datalist>-->
+              <el-row type="flex" :gutter="20">
+                <el-col :span="14">
+<!--                  <el-row>-->
+<!--                    <el-col :span="12">-->
+<!--                      <el-row type="flex" justify="space-between">-->
+<!--                        <el-col class="pickerData">-->
+<!--                          寮�濮嬫椂闂�:-->
+<!--                          <el-date-picker-->
+<!--                              type="date">-->
+<!--                          </el-date-picker>-->
+<!--                        </el-col>-->
+<!--                      </el-row>-->
+<!--                    </el-col>-->
+<!--                    <el-col :span="12" type="flex">-->
+<!--                      <el-row type="flex" justify="center">-->
+<!--                        <el-col>-->
+<!--                          缁撴潫鏃堕棿:-->
+<!--                          <el-date-picker-->
+<!--                              type="date"-->
+<!--                          >-->
+<!--                          </el-date-picker>-->
+<!--                        </el-col>-->
+<!--                      </el-row>-->
+<!--                    </el-col>-->
+<!--                  </el-row>-->
+                </el-col>
+                <el-col :span="5">
+                  閲囨牱鐐规暟:
+                  <input list="source" id="ipt" class="echatsInput">
+                  <datalist id="source">
+                    <option value="0" />
+                    <option value="25" />
+                    <option value="50" />
+                    <option value="75" />
+                    <option value="100" />
+                  </datalist>
+<!--                  <div data-tap-disabled="true">-->
+<!--                    閲囨牱鐐规暟:-->
+<!--                    <select id="source">-->
+<!--                      <option value="1">0</option>-->
+<!--                      <option value="2">25</option>-->
+<!--                      <option value="3">50</option>-->
+<!--                      <option value="4">75</option>-->
+<!--                      <option value="5">100</option>-->
+<!--                    </select>-->
+<!--                  </div>-->
+                </el-col>
+                <el-col class="detailbtn" :span="2" @click="onSubmit">鏌ヨ</el-col>
+                <el-col :span="3">
+                  <div class="detailbtn" @click="dialogVisible = true" >鏄庣粏琛�</div>
+                  <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-col>
+              </el-row>
+            </div>
+            <div style="width:600px;height:200px;" id="echarts" ref="main">
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import PublicDetailedList from '@components/BaseNav/PublicBounced/GasComponents/PublicDetailedList'
+
+export default {
+  name: 'ECharts',
+  components: {
+    PublicDetailedList
+  },
+  data () {
+    return {
+      watchData: [],
+      dialogVisible: false,
+      myChar: null,
+      value: '',
+      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: '鎶樼嚎鍥惧爢鍙�'
+        },
+        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: '6%',
+          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: ['10%', '10%'],
+          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 dataDate = []
+      for (var i = 0; i < 24; i++) {
+        if (i === 0 || i === 23) {
+          dataDate.push(dataWatch[i].MonTimeStr.substring(0, 8))
+        }
+      }
+      for (var n = 0; n < dataWatch.length; n++) {
+        if (dataWatch[n].PoltmtrlName === 'COD') {
+          const valueData1 = []
+          valueData1.push(dataWatch[n].MonQty)
+        } else if (dataWatch[n].PoltmtrlName === '姘ㄦ爱') {
+          const valueData2 = []
+          valueData2.push(dataWatch[n].MonQty)
+          console.log(dataValue2)
+        } else if (dataWatch[n].PoltmtrlName === '搴熸按娴侀噺') {
+          const valueData3 = []
+          valueData3.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">
+.grid-content{
+  font-size: 8px!important;
+  background-color:#2e4967;
+  text-align: center;
+  margin: 0 2px 4px 2px;
+  border-radius: 2px;
+}
+.Infomation {
+  margin-left: 10px;
+  height: 0.2rem;
+}
+
+.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;
+}
+
+.form-echrts {
+  width: 100%;
+  height: 1rem;
+  border-top: 1px solid #396d83;
+  //margin: 10px 10px 10px 10px;
+  .from-search{
+    //display: flex;
+    //justify-content: space-between;
+    .pickerData{
+      display: flex;
+      justify-content: space-between;
+    }
+    /deep/.el-input__inner{
+      width: 40px!important;
+      height: 16px!important;
+      background-color: #2e4967;
+    }
+    .echatsInput{
+      color: #00ffff;
+      background-color: #2e4967;
+      border: none;
+      border-radius: 6px;
+      width: 40px;
+    }
+    .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;
+  }
+
+        .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>
diff --git a/src/components/BaseNav/PublicBounced/GasComponents/EChartsHour.vue b/src/components/BaseNav/PublicBounced/GasComponents/EChartsHour.vue
index 8370098..9ecea2e 100644
--- a/src/components/BaseNav/PublicBounced/GasComponents/EChartsHour.vue
+++ b/src/components/BaseNav/PublicBounced/GasComponents/EChartsHour.vue
@@ -117,7 +117,7 @@
                 </el-col>
               </el-row>
             </div>
-            <div style="width:100%;height:200px;" id="echarts" ref="main">
+            <div style="width:600px;height:200px;" id="echarts" ref="main">
             </div>
         </div>
     </div>
@@ -329,7 +329,7 @@
   mounted () {
     this.$nextTick(() => {
       this.drawChart()
-      const dataWatch = JSON.parse(JSON.stringify(this.$attrs.getQueryOnlineMonData))
+      const dataWatch = JSON.parse(JSON.stringify(this.$attrs.getQueryOnlineMonData)).reverse()
       console.log(dataWatch)
       var dataValue1 = []
       var dataValue2 = []
diff --git a/src/components/BaseNav/PublicBounced/GasComponents/PublicChart.vue b/src/components/BaseNav/PublicBounced/GasComponents/PublicChart.vue
index 09a7134..7a6739f 100644
--- a/src/components/BaseNav/PublicBounced/GasComponents/PublicChart.vue
+++ b/src/components/BaseNav/PublicBounced/GasComponents/PublicChart.vue
@@ -7,7 +7,7 @@
         <ul class="tab">
             <li @click='tabTaggle("ECharts")'>瀹炴椂鏁版嵁</li>
             <li @click='tabTaggle("EChartsHour")'>灏忔椂鏁版嵁</li>
-            <li @click='tabTaggle("ECharts")'>鏃ユ暟鎹�</li>
+            <li @click='tabTaggle("EChartsDate")'>鏃ユ暟鎹�</li>
             <li @click='tabTaggle("ECharts")'>浜哄伐鏁版嵁</li>
         </ul>
         <component :is="currentTab" v-bind="$attrs"></component>
@@ -16,11 +16,13 @@
 
 <script>
 import EChartsHour from './EChartsHour'
+import EChartsDate from './EChartsDate'
 
 export default {
   name: 'PublicChart',
   components: {
-    EChartsHour
+    EChartsHour,
+    EChartsDate
   },
   data () {
     return {
@@ -49,7 +51,6 @@
   margin-bottom: 13px;
   background-color: rgba(33, 41, 69, 0.9);
   border: 0.8px solid #396d83;
-  height: 1.5rem;
 }
 
 .border_corner {
diff --git a/src/components/BaseNav/PublicBounced/PublicBounced.vue b/src/components/BaseNav/PublicBounced/PublicBounced.vue
index 91ae6e2..4c186ce 100644
--- a/src/components/BaseNav/PublicBounced/PublicBounced.vue
+++ b/src/components/BaseNav/PublicBounced/PublicBounced.vue
@@ -14,7 +14,8 @@
           <public-chart v-else :getWasteGasDetails="getWasteGasDetails"
                         :value="value"
                         :getQueryOnlineMonData="getQueryOnlineMonData"
-                        :getWasteWaterMonitoringDetails="getWasteWaterMonitoringDetails"></public-chart>
+                        :getWasteWaterMonitoringDetails="getWasteWaterMonitoringDetails">
+          </public-chart>
         </div>
       </div>
       <div class="public-bounced-content-right">

--
Gitblit v1.8.0