2023-09-20 13:58:14 +08:00
|
|
|
<!--
|
|
|
|
* @Author: zhp
|
|
|
|
* @Date: 2023-09-13 09:02:25
|
2023-11-11 20:49:31 +08:00
|
|
|
* @LastEditTime: 2023-11-10 10:48:09
|
2023-09-20 13:58:14 +08:00
|
|
|
* @LastEditors: DY
|
|
|
|
* @Description:
|
|
|
|
-->
|
|
|
|
<template>
|
|
|
|
<div>
|
|
|
|
<div style="margin: 20px">
|
2023-10-08 16:59:09 +08:00
|
|
|
<el-button v-for="(item, index) in buttonList" :key="index" :class="[item.actived ? 'activeButton': 'normalButton']" @click="changeChart(index)">{{ item.name }}</el-button>
|
2023-09-20 13:58:14 +08:00
|
|
|
</div>
|
2023-11-11 20:49:31 +08:00
|
|
|
<div id="chart" ref="chartDiv" :class="className" :style="{height:height,width:width}" />
|
2023-09-20 13:58:14 +08:00
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import * as echarts from 'echarts'
|
|
|
|
require('echarts/theme/macarons') // echarts theme
|
|
|
|
// import resize from './mixins/resize'
|
|
|
|
|
|
|
|
export default {
|
|
|
|
// mixins: [resize],
|
|
|
|
props: {
|
|
|
|
className: {
|
|
|
|
type: String,
|
|
|
|
default: 'chart'
|
|
|
|
},
|
|
|
|
width: {
|
|
|
|
type: String,
|
|
|
|
default: '100%'
|
|
|
|
},
|
|
|
|
height: {
|
|
|
|
type: String,
|
|
|
|
default: '350px'
|
|
|
|
},
|
|
|
|
// autoResize: {
|
|
|
|
// type: Boolean,
|
|
|
|
// default: true
|
|
|
|
// }
|
|
|
|
},
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
chart: null,
|
|
|
|
dataArray: [],
|
2023-10-08 16:59:09 +08:00
|
|
|
xDatas: [],
|
|
|
|
buttonList: []
|
2023-09-20 13:58:14 +08:00
|
|
|
}
|
|
|
|
},
|
|
|
|
mounted() {
|
2023-11-11 20:49:31 +08:00
|
|
|
// this.initChart()
|
2023-09-20 13:58:14 +08:00
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
changeChart(index) {
|
|
|
|
this.setOptions(this.xDatas, this.dataArray[index])
|
2023-10-08 16:59:09 +08:00
|
|
|
this.buttonList.forEach((item, s) => {
|
|
|
|
if (index === s) {
|
|
|
|
// item.actived = true
|
|
|
|
this.$nextTick(() =>{
|
|
|
|
// item.actived = true
|
|
|
|
this.$set(item, 'actived', true)
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
// item.actived = false
|
|
|
|
this.$nextTick(() =>{
|
|
|
|
// item.actived = false
|
|
|
|
this.$set(item, 'actived', false)
|
|
|
|
})
|
|
|
|
// this.$set(item, 'actived', false)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
console.log('看一下数22222据', this.dataArray)
|
2023-09-20 13:58:14 +08:00
|
|
|
},
|
|
|
|
initChart(xData, yData, lineName) {
|
|
|
|
this.dataArray = yData
|
2023-10-08 16:59:09 +08:00
|
|
|
this.buttonList = this.dataArray.map((item, index) => {
|
|
|
|
return {
|
|
|
|
'name': item.name,
|
|
|
|
'actived': index === 0 ? true : false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
console.log('看一下数据', this.dataArray)
|
2023-09-20 13:58:14 +08:00
|
|
|
this.xDatas = xData
|
|
|
|
this.chart = echarts.init(this.$refs.chartDiv, 'macarons')
|
2023-11-11 20:49:31 +08:00
|
|
|
// this.chart = echarts.init(document.getElementById('chart'), 'macarons')
|
|
|
|
// this.setOptions(xData, yData[0], lineName)
|
2023-09-20 13:58:14 +08:00
|
|
|
},
|
|
|
|
setOptions(xData, dataList, lineName) {
|
|
|
|
// let seriesData = []
|
|
|
|
// lineName.forEach((item,index) => {
|
|
|
|
// seriesData.push({
|
|
|
|
// name: item,
|
|
|
|
// data: yData[index],
|
|
|
|
// type: 'line',
|
|
|
|
// })
|
|
|
|
// })
|
|
|
|
this.chart.setOption({
|
|
|
|
xAxis: {
|
|
|
|
type: 'category',
|
|
|
|
data: xData
|
|
|
|
},
|
|
|
|
tooltip: {
|
|
|
|
trigger: 'axis'
|
|
|
|
},
|
|
|
|
legend: {
|
|
|
|
data:lineName
|
|
|
|
},
|
|
|
|
yAxis: {
|
|
|
|
type: 'value'
|
|
|
|
},
|
|
|
|
series: [
|
|
|
|
{
|
|
|
|
name: '设备CT',
|
|
|
|
data: dataList.eqData,
|
|
|
|
type: 'line',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: '产线CT',
|
|
|
|
data: dataList.plData,
|
|
|
|
type: 'line',
|
|
|
|
}
|
|
|
|
]
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
2023-10-08 16:59:09 +08:00
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
.activeButton {
|
|
|
|
background-color: rgb(93,159,255);
|
|
|
|
}
|
|
|
|
.normalButton {
|
|
|
|
background-color: none;
|
|
|
|
}
|
|
|
|
</style>
|