创建一个carousel.ts文件
export function carouselFn(option: any,optionXAxisLength:any, myChart: any, t: any, endValue: any) {
option && myChart.setOption(option)
let kk = setInterval(() => {
if (option.dataZoom[0].endValue == optionXAxisLength) {
option.dataZoom[0].endValue = endValue
option.dataZoom[0].startValue = 0
} else {
option.dataZoom[0].endValue = option.dataZoom[0].endValue + 1
option.dataZoom[0].startValue = option.dataZoom[0].startValue + 1
}
option && myChart.setOption(option)
}, t)
myChart.on('mouseover', () => {
if (kk) clearInterval(kk)
})
myChart.on('mouseout', () => {
if (kk) clearInterval(kk)
kk = setInterval(() => {
if (option.dataZoom[0].endValue == optionXAxisLength) {
option.dataZoom[0].endValue = endValue
option.dataZoom[0].startValue = 0
} else {
option.dataZoom[0].endValue = option.dataZoom[0].endValue + 1
option.dataZoom[0].startValue = option.dataZoom[0].startValue + 1
}
option && myChart.setOption(option)
}, t)
})
}
使用
import { carouselFn } from '@/utils/echarts/carousel'
let endValue = 5
const option = {
title: { },
tooltip: {},
grid: {
left: 25,
right: 25,
bottom: 10,
top: 35,
containLabel: true
},
dataZoom: [
{
type: 'inside',
show: false,
xAxisIndex: [0],
startValue: 0,
endValue: endValue
}
],
xAxis: {
type: 'category',
data: xData,
},
yAxis: [
{
type: 'value',
axisTick: {
show: false
},
splitLine: {
show: true,
lineStyle: {
color: '#ffffff4D',
type: 'dotted',
width: 0.3
}
},
axisLabel: {
show: true,
textStyle: {
color: '#FFFFFFCC',
fontFamily: 'Alibaba Sans-Medium',
fontSize: 12
},
padding: [0, 0, 0, 0]
}
},
{
type: 'value',
axisTick: {
show: false
},
splitLine: {
show: true,
lineStyle: {
color: '#ffffff4D',
type: 'dotted',
width: 0.3
}
},
axisLabel: {
show: true,
textStyle: {
color: '#FFFFFFCC',
fontFamily: 'Alibaba Sans-Medium',
fontSize: 12
},
padding: [0, 0, 0, 0]
}
}
],
series: [
{
data: lineData,
type: 'line',
smooth: true,
yAxisIndex: 1
},
{
type: 'bar',
barWidth: 9,
z: 2,
label: {
show: false
},
data: data
},
{
name: '',
type: 'pictorialBar',
symbolSize: [8, 5],
symbolOffset: [0, -3],
z: 6,
symbolPosition: 'end',
data: data
},
{
name: '',
type: 'pictorialBar',
symbolSize: [8, 5],
symbolOffset: [0, -3],
z: 2,
symbolPosition: 'end',
data: fillArray
}
]
}
carouselFn(option,optionXAxisLength, barChart, 2000, endValue)