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