You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
4.6 KiB
177 lines
4.6 KiB
<template>
|
|
<div :id="idName" :style="{ height: height, width: width }" />
|
|
</template>
|
|
<script>
|
|
export default {
|
|
props: {
|
|
idName: { type: String, default: 'chart' },
|
|
width: { type: String, default: '100%' },
|
|
height: { type: String, default: '100%' },
|
|
chartData: { type: Array, default: () => [] },
|
|
desc: { type: String, default: '' }
|
|
},
|
|
data() {
|
|
return {
|
|
dataX: [],
|
|
dataY: [],
|
|
legend: [],
|
|
seriesList: [],
|
|
disabled: false,
|
|
color: ['#5721f0', '#ff5c00', '#e33283', '#00ffff', '#1c76fd', '#ff5c00', '#d357ff', '#89b277', '#ffe000']
|
|
}
|
|
},
|
|
watch: {
|
|
chartData: {
|
|
handler(val, olVal) {
|
|
this.initFun()
|
|
},
|
|
deep: true
|
|
}
|
|
},
|
|
mounted() {
|
|
this.initFun()
|
|
},
|
|
methods: {
|
|
initFun() {
|
|
if (this.chartData && this.chartData.length > 0) {
|
|
this.seriesList = []
|
|
this.dataX = []
|
|
this.dataY = []
|
|
this.legend = []
|
|
this.chartData.forEach((item, i) => {
|
|
this.legend.push(item.userName)
|
|
this.seriesList.push({
|
|
name: item.userName,
|
|
type: 'line',
|
|
stack: 'Total',
|
|
symbolSize: 8, // 设定实心点的大小
|
|
// 设置小圆点的颜色
|
|
itemStyle: {
|
|
color: this.color[i]
|
|
},
|
|
lineStyle: {
|
|
color: this.color[i]
|
|
},
|
|
// areaStyle: {
|
|
// color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 2, [{
|
|
// offset: 0,
|
|
// color: this.color[i]
|
|
// }, {
|
|
// offset: 1,
|
|
// color: 'transparent'
|
|
// }])
|
|
// },
|
|
emphasis: {
|
|
focus: 'series'
|
|
},
|
|
// endLabel: {
|
|
// show: true,
|
|
// color: '#fff',
|
|
// borderColor: 'none',
|
|
// formatter: function(params) {
|
|
// console.log(params)
|
|
// return params.seriesName + ':' + params.value
|
|
// }
|
|
// },
|
|
data: item.date.map(iten => iten.num)
|
|
})
|
|
})
|
|
// console.log(this.seriesList)
|
|
this.chartData[0].date.forEach(item => {
|
|
this.dataX.push(item.month)
|
|
})
|
|
}
|
|
this.$nextTick(() => {
|
|
this.visionFun()
|
|
})
|
|
},
|
|
visionFun() {
|
|
// 基于准备好的dom,初始化echarts实例
|
|
const historyEcharts = this.$echarts.init(document.getElementById(this.idName))
|
|
historyEcharts.setOption({
|
|
backgroundColor: 'transparent',
|
|
animationDuration: 3000,
|
|
tooltip: {
|
|
trigger: 'axis',
|
|
axisPointer: {
|
|
type: 'cross',
|
|
label: {
|
|
backgroundColor: '#6a7985'
|
|
}
|
|
}
|
|
},
|
|
legend: {
|
|
type: 'scroll',
|
|
data: this.legend,
|
|
icon: 'circle',
|
|
right: 0,
|
|
itemHeight: 9, // 设置icont图形大小
|
|
// 设置字体样式
|
|
textStyle: {
|
|
fontSize: 12,
|
|
color: '#fff',
|
|
padding: [0, 0, 0, -8] // 修改文字和图标距离
|
|
}
|
|
},
|
|
grid: {
|
|
left: '3%',
|
|
right: '8%',
|
|
bottom: '3%',
|
|
top: '18%',
|
|
containLabel: true
|
|
},
|
|
dataZoom: [
|
|
{
|
|
type: 'inside'
|
|
}
|
|
],
|
|
xAxis: [
|
|
{
|
|
type: 'category',
|
|
boundaryGap: false,
|
|
data: this.dataX,
|
|
axisLine: {
|
|
lineStyle: {
|
|
color: '#fff'
|
|
}
|
|
}
|
|
}
|
|
],
|
|
yAxis: [
|
|
{
|
|
type: 'value',
|
|
axisLine: {
|
|
show: false,
|
|
lineStyle: {
|
|
color: 'white'
|
|
}
|
|
},
|
|
offset: 10,
|
|
axisTick: {
|
|
show: false,
|
|
length: 9,
|
|
alignWithLabel: true,
|
|
lineStyle: {
|
|
color: '#7DFFFD'
|
|
}
|
|
},
|
|
splitLine: {
|
|
show: true,
|
|
lineStyle: {
|
|
type: 'dashed',
|
|
color: '#6b7284'
|
|
}
|
|
}
|
|
}
|
|
|
|
],
|
|
series: this.seriesList
|
|
})
|
|
window.addEventListener('resize', () => { historyEcharts.resize() })
|
|
}
|
|
}
|
|
}
|
|
|
|
</script>
|
|
<style style="scss" scoped>
|
|
</style>
|