/**
* 顶部header
*/
Vue.component("safe-bar-chart", {
template: `
`,
props: {
height:{
type:Number
},
project:{
type: Array,
},
data:{
type: Array,
},
legend:{
type: Array,
},
color:{
type: Array,
},
unit:{
type:String
}
},
data() {
return {
option:{},
timer_tmp:undefined
}
},
mounted(){
this.init()
},
methods: {
init(){
this.getChartData()
},
//分类及工时情况
getChartData(){
var chChartBar = echarts.init(this.$refs.chart);
this.echartBar(chChartBar)
},
echartBar(myChart){
let newPromise = new Promise((resolve) => {
resolve()
})
//然后异步执行echarts的初始化函数
newPromise.then(() => {
var series = []
for (let i = 0; i 8){
var arr = this.project[i].split("");
arr.splice(8,0,"\n");
project.push(arr.join(""))
}else{
project.push(this.project[i])
}
}
this.option = {
tooltip: {
trigger: "axis",
axisPointer: {
// 坐标轴指示器,坐标轴触发有效
type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
},
},
grid: {
left: "2%",
right: "4%",
bottom: "5%",
top: "25%",
containLabel: true,
},
legend: {
data: this.legend,
center: 'center',
icon:'circle',
top: 12,
textStyle: {
color: "#c3dbfd",
fontSize:16
},
itemWidth: 15,
itemHeight: 15,
itemGap: 35
},
xAxis: {
type: "category",
data: project,
axisLine: {
//坐标轴轴线相关设置。数学上的x轴
show: true,
lineStyle: {
color: "#194e92",
type: "dashed",
},
},
axisTick: {
show: false
},
axisLabel: {
//坐标轴刻度标签的相关设置
textStyle: {
color: "#c5d9fc",
margin: 20,
fontSize:12
},
},
},
yAxis: {
name:unit,
type: "value",
axisLine: {
//坐标轴轴线相关设置。数学上的x轴
show: false,
lineStyle: {
color: "#c5d9fc",
type: "dashed",
},
},
axisTick: {
show: false
},
axisLabel: {
show: true,
//坐标轴刻度标签的相关设置
textStyle: {
color: "#c5d9fc",
margin: 20,
fontSize:12
},
},
splitLine: {
show: true,
lineStyle: {
color: "#0c233e",
type: "dashed",
},
},
},
dataZoom: [
{
xAxisIndex: 0,// 这里是从X轴的0刻度开始
show: false, // 是否显示滑动条,不影响使用
type: "slider", // 这个 dataZoom 组件是 slider 型 dataZoom 组件
startValue: 0, // 从头开始。
endValue: 2, // 一次性展示多少个。
},
],
series:series
};
myChart.setOption(this.option);
window.onresize = myChart.resize;
var timer_tmp = this.timer_tmp
if(timer_tmp){
clearInterval(timer_tmp);
}
var app = {
currentIndex: 0,
};
myChart.dispatchAction({
type: "highlight",
seriesIndex: 0,
dataIndex: app.currentIndex,
});
// 显示 tooltip
myChart.dispatchAction({
type: "showTip",
seriesIndex: 0,
dataIndex: app.currentIndex,
});
var dataX = this.project
var that = this
timer_tmp = setInterval(function () {
var dataLen = that.option.series[0].data.length;
if (that.option.dataZoom[0].endValue == dataX.length ) {
that.option.dataZoom[0].endValue = 3;
that.option.dataZoom[0].startValue = 0;
myChart.setOption(that.option);
// 取消之前高亮的图形
myChart.dispatchAction({
type: "downplay",
seriesIndex: 0,
dataIndex: app.currentIndex,
});
app.currentIndex = 0
// 高亮当前图形
myChart.dispatchAction({
type: "highlight",
seriesIndex: 0,
dataIndex: app.currentIndex,
});
// 显示 tooltip
myChart.dispatchAction({
type: "showTip",
seriesIndex: 0,
dataIndex: app.currentIndex,
});
} else {
that.option.dataZoom[0].endValue = that.option.dataZoom[0].endValue + 1;
that.option.dataZoom[0].startValue = that.option.dataZoom[0].startValue + 1;
myChart.setOption(that.option);
// 取消之前高亮的图形
myChart.dispatchAction({
type: "downplay",
seriesIndex: 0,
dataIndex: app.currentIndex,
});
app.currentIndex = (app.currentIndex + 1) % dataLen;
//console.log(app.currentIndex)
// 高亮当前图形
myChart.dispatchAction({
type: "highlight",
seriesIndex: 0,
dataIndex: app.currentIndex,
});
// 显示 tooltip
myChart.dispatchAction({
type: "showTip",
seriesIndex: 0,
dataIndex: app.currentIndex,
});
}
},3000)
})
},
},
watch:{
project: function (n,o) {
this.init()
}
}
})