212 lines
4.4 KiB
Vue
212 lines
4.4 KiB
Vue
<!--能源使用情况-->
|
||
<template>
|
||
<div id="charts" ref="charts">
|
||
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import * as echarts from 'echarts'
|
||
import {EleResize} from '@/utils/esresize';
|
||
|
||
const lodash = require('lodash')
|
||
export default {
|
||
name: 'PeakEnergyUseChart',
|
||
props: {
|
||
dataSource: {
|
||
type: Array,
|
||
default: () => []
|
||
},
|
||
color: {
|
||
type: Array,
|
||
default: () => [
|
||
'#00F6FF',
|
||
'#007CFF',
|
||
'#FDBD00'
|
||
]
|
||
}
|
||
},
|
||
data() {
|
||
return {}
|
||
},
|
||
watch: {
|
||
dataSource: {
|
||
deep: true,
|
||
immediate: true,
|
||
handler(value) {
|
||
if (value.length) {
|
||
this.$nextTick(() => {
|
||
this.init()
|
||
})
|
||
}
|
||
}
|
||
}
|
||
},
|
||
mounted() {
|
||
this.$nextTick(() => {
|
||
this.init()
|
||
})
|
||
},
|
||
|
||
methods: {
|
||
init() {
|
||
let myCharts = echarts.init(this.$refs.charts)
|
||
let barCharts = this.$refs.charts
|
||
// 复制代码
|
||
|
||
let color = this.color;
|
||
|
||
let xAxisData = this.dataSource.map(item => item.name);
|
||
let yAxisData1 = this.dataSource.map(item => item.value1);
|
||
let yAxisData2 = this.dataSource.map(item => item.value2);
|
||
|
||
let option = {
|
||
color: color,
|
||
legend: {
|
||
top: 0,
|
||
right: 0,
|
||
itemWidth: 11,
|
||
itemHeight: 11,
|
||
icon: 'circle',
|
||
textStyle: {
|
||
color: '#B8D3F1',
|
||
fontSize: 12,
|
||
|
||
}
|
||
},
|
||
tooltip: {
|
||
trigger: 'axis',
|
||
},
|
||
grid: {
|
||
top: 50,
|
||
bottom: 10,
|
||
left: 20,
|
||
right: 20,
|
||
containLabel: true,
|
||
},
|
||
xAxis: [
|
||
{
|
||
type: 'category',
|
||
boundaryGap: true,
|
||
axisLabel: {
|
||
fontSize: 12,
|
||
color: '#B8D3F1'
|
||
},
|
||
axisLine: {
|
||
show: true,
|
||
lineStyle: {
|
||
color: 'rgba(176,215,255,0.40)',
|
||
},
|
||
},
|
||
axisTick: {
|
||
show: false
|
||
},
|
||
data: xAxisData,
|
||
},
|
||
],
|
||
yAxis: [
|
||
{
|
||
type: 'value',
|
||
position: 'left',
|
||
splitNumber: 5,
|
||
name: '单位:t',
|
||
axisLabel: {
|
||
fontSize: 12,
|
||
color: '#B8D3F1'
|
||
},
|
||
nameTextStyle: {
|
||
color: '#B8D3F1',
|
||
fontSize: 12,
|
||
lineHeight: 10,
|
||
},
|
||
// 分割线
|
||
splitLine: {
|
||
show: false,
|
||
lineStyle: {
|
||
color: 'rgba(176,215,255,0.40)',
|
||
type: 'dashed'
|
||
},
|
||
},
|
||
axisLine: {
|
||
show: false,
|
||
},
|
||
axisTick: {
|
||
show: false,
|
||
},
|
||
},
|
||
{
|
||
type: 'value',
|
||
position: 'right',
|
||
name: '单位:KWH',
|
||
splitNumber: 5,
|
||
axisLabel: {
|
||
fontSize: 12,
|
||
color: '#B8D3F1'
|
||
},
|
||
nameTextStyle: {
|
||
color: '#B8D3F1',
|
||
fontSize: 12,
|
||
lineHeight: 10,
|
||
},
|
||
// 分割线
|
||
splitLine: {
|
||
show: false,
|
||
lineStyle: {
|
||
color: 'rgba(176,215,255,0.40)',
|
||
type: 'dashed'
|
||
},
|
||
},
|
||
axisLine: {
|
||
show: false,
|
||
},
|
||
axisTick: {
|
||
show: false,
|
||
},
|
||
},
|
||
],
|
||
series: [
|
||
{
|
||
name: '用电',
|
||
type: 'line',
|
||
smooth: false,
|
||
zlevel: 3,
|
||
symbol: 'none', //数据交叉点样式
|
||
data: yAxisData1,
|
||
yAxisIndex: 0, // 通过这个判断左右
|
||
lineStyle: {
|
||
width: 3,
|
||
}
|
||
},
|
||
{
|
||
name: '用水',
|
||
type: 'line',
|
||
smooth: false,
|
||
zlevel: 3,
|
||
symbol: 'none', //数据交叉点样式 (实心点)
|
||
data: yAxisData2,
|
||
yAxisIndex: 1, // 通过这个判断左右
|
||
lineStyle: {
|
||
width: 3,
|
||
}
|
||
}
|
||
],
|
||
};
|
||
|
||
|
||
myCharts.setOption(option)
|
||
let listener = function () {
|
||
myCharts.resize()
|
||
}
|
||
EleResize.on(barCharts, listener)
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped lang="less">
|
||
#charts {
|
||
height: 100%;
|
||
width: 100%;
|
||
}
|
||
</style>
|