243 lines
8.2 KiB
Vue
243 lines
8.2 KiB
Vue
<template>
|
||
<div class="pd10" :style="`height:${vh}`" id="jzhylv">
|
||
<el-button
|
||
style="position: absolute; right: 10px; z-index: 20000"
|
||
type="text"
|
||
icon="el-icon-download"
|
||
title="生成图片"
|
||
@click="download"
|
||
>
|
||
下载
|
||
</el-button>
|
||
<div id="jzharmonicvoltage" ref="jzxbhylv"></div>
|
||
</div>
|
||
<!-- <div id="electriccurrent" style="'width:900px;height:500px"></div> -->
|
||
</template>
|
||
<script>
|
||
export default {
|
||
data() {
|
||
return {
|
||
echartsheight: undefined,
|
||
echartswidth: undefined,
|
||
zoom: '',
|
||
myChartes: '',
|
||
vh: null
|
||
}
|
||
},
|
||
created() {},
|
||
mounted() {
|
||
this.setHeight()
|
||
window.addEventListener('resize', this.setHeight)
|
||
|
||
this.resizeEchartjhylz()
|
||
|
||
//this.$nextTick(()=> {
|
||
this.electriccurrentdata()
|
||
// })
|
||
},
|
||
beforeDestroy() {
|
||
window.removeEventListener('resize', this.setHeight)
|
||
},
|
||
methods: {
|
||
setHeight() {
|
||
this.echartsheight = window.sessionStorage.getItem('appheight') - 200
|
||
this.vh = window.sessionStorage.getItem('appheight') - 246 + 'px'
|
||
if (this.myChartes !== '') {
|
||
this.myChartes.resize()
|
||
}
|
||
},
|
||
resizeEchartjhylz() {
|
||
var elementResizeDetectorMaker = require('element-resize-detector')
|
||
if (document.getElementById('jzhylv')) {
|
||
var erd = elementResizeDetectorMaker()
|
||
erd.listenTo(document.getElementById('jzhylv'), element => {
|
||
let domeId = document.getElementById('jzhylv')
|
||
let domeId2 = document.getElementById('jzharmonicvoltage')
|
||
domeId2.style.width = domeId.offsetWidth - 10 + 'px'
|
||
if (this.myChartes !== '') {
|
||
this.myChartes.resize()
|
||
}
|
||
})
|
||
}
|
||
},
|
||
download() {
|
||
// 转换成canvas
|
||
html2canvas(document.getElementById('hylv'), {
|
||
//backgroundColor: 'white',
|
||
background: '#fff',
|
||
scale: 1
|
||
}).then(function (canvas) {
|
||
// 创建a标签,实现下载
|
||
var creatIMg = document.createElement('a')
|
||
creatIMg.download = '谐波电压含有率.png' // 设置下载的文件名,
|
||
creatIMg.href = canvas.toDataURL() // 下载url
|
||
creatIMg.click()
|
||
creatIMg.remove() // 下载之后把创建的元素删除
|
||
})
|
||
},
|
||
random(min, max) {
|
||
return parseInt(Math.random() * (max - min) + min)
|
||
},
|
||
//电能质量图表
|
||
electriccurrentdata() {
|
||
const echarts = require('echarts')
|
||
var domID1 = document.getElementById('jzharmonicvoltage')
|
||
setTimeout(() => {
|
||
domID1.style.width = document.getElementById('jzhylv').offsetWidth - 10 + 'px'
|
||
domID1.style.height = window.sessionStorage.getItem('appheight') - 246 + 'px'
|
||
}, 0)
|
||
var myChartes = echarts.init(domID1)
|
||
this.myChartes = myChartes
|
||
myChartes.clear()
|
||
var xData = []
|
||
var yData = []
|
||
var yData1 = []
|
||
function random(min, max) {
|
||
return parseInt(Math.random() * (max - min) + min)
|
||
}
|
||
for (var i = 0; i < 50; i++) {
|
||
xData.push(i + '次')
|
||
}
|
||
for (var i = 0; i < xData.length; i++) {
|
||
let value = random(10, 100)
|
||
yData.push(value)
|
||
}
|
||
for (var i = 0; i < xData.length; i++) {
|
||
let value = random(10, 100)
|
||
yData1.push(value)
|
||
}
|
||
var option = {
|
||
//backgroundColor: '#fff',
|
||
tooltip: {
|
||
trigger: 'axis',
|
||
axisPointer: {
|
||
// 坐标轴指示器,坐标轴触发有效
|
||
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
|
||
}
|
||
},
|
||
grid: {
|
||
left: '10px',
|
||
right: '50px',
|
||
bottom: '40px',
|
||
top: '50px',
|
||
containLabel: true
|
||
},
|
||
legend: {
|
||
data: ['国标限值', '电流幅值'],
|
||
left: '20px',
|
||
top: 0,
|
||
textStyle: {
|
||
color: '#333'
|
||
}
|
||
//itemWidth: 10,
|
||
//itemHeight: 10,
|
||
},
|
||
xAxis: {
|
||
type: 'category',
|
||
name: '次数',
|
||
data: xData,
|
||
axisLine: {
|
||
show: true,
|
||
symbol: ['none', 'arrow'],
|
||
lineStyle: {
|
||
color: 'rgba(0,0,0,0.5)'
|
||
}
|
||
},
|
||
axisTick: {
|
||
show: true,
|
||
alignWithLabel: true
|
||
}
|
||
},
|
||
yAxis: {
|
||
type: 'value',
|
||
max: '100',
|
||
name: '单位:%',
|
||
nameTextStyle: {
|
||
// color: '#000',
|
||
fontSize: 12,
|
||
left: '0%'
|
||
},
|
||
position: 'left',
|
||
axisLine: {
|
||
show: true,
|
||
symbol: ['none', 'arrow'],
|
||
lineStyle: {
|
||
color: '#333'
|
||
}
|
||
},
|
||
splitLine: {
|
||
show: true,
|
||
lineStyle: {
|
||
color: '#f1f1f1'
|
||
}
|
||
},
|
||
axisLabel: {
|
||
color: '#999',
|
||
textStyle: {
|
||
fontSize: 12
|
||
}
|
||
},
|
||
axisTick: {
|
||
show: true,
|
||
alignWithLabel: true
|
||
}
|
||
},
|
||
dataZoom: [
|
||
{
|
||
type: 'inside',
|
||
height: 13,
|
||
start: 0,
|
||
bottom: '20px',
|
||
end: 100
|
||
},
|
||
{
|
||
start: 0,
|
||
height: 13,
|
||
bottom: '20px',
|
||
end: 100
|
||
}
|
||
],
|
||
series: [
|
||
{
|
||
name: '国标限值',
|
||
type: 'bar',
|
||
barWidth: '25%',
|
||
itemStyle: {
|
||
normal: {
|
||
color: '#00CC99',
|
||
barBorderRadius: [5, 5, 0, 0]
|
||
}
|
||
},
|
||
data: yData
|
||
},
|
||
{
|
||
name: '电流幅值',
|
||
type: 'bar',
|
||
barWidth: '25%',
|
||
itemStyle: {
|
||
normal: {
|
||
color: '#FF9900',
|
||
barBorderRadius: [12, 12, 0, 0]
|
||
}
|
||
},
|
||
data: yData1
|
||
}
|
||
]
|
||
}
|
||
myChartes.setOption(option)
|
||
window.echartsArr.push(myChartes)
|
||
let _this = this
|
||
_this.$erd.listenTo(_this.$refs.jzxbhylv, element => {
|
||
_this.$nextTick(() => {
|
||
domID1.style.width = document.getElementById('jzhylv').offsetWidth - 10 + 'px'
|
||
myChartes.resize()
|
||
})
|
||
})
|
||
setInterval(() => {
|
||
myChartes.resize()
|
||
}, 100)
|
||
}
|
||
}
|
||
}
|
||
</script>
|