yudao-dev/src/views/core/analysis/balanceChart.vue

137 lines
3.1 KiB
Vue
Raw Normal View History

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>