配置项如下
var data = [1440, 1440, 1440, 1440, 1440, 1440, 1440];
var data1 = []; //告警
var data2 = []; //消警
var dataOne = [];
var dataTwo = [];
var dataThree = [];
var dataFour = [];
var dataFive = [];
var dataSix = [];
var dataSeven = [];
getData();
option = {
title: {
text: '故障统计图',
left: 'center',
},
backgroundColor: '#fff',
tooltip: {
show: true,
type: 'axis',
formatter: function (params) {
console.log(params);
return params.name + '<br/>' + '告警时间:' + params.value + '</br>' + '消警时间:' ;
},
},
yAxis: {
show: true,
data: ['2021-10-01', '2021-10-02', '2021-10-03', '2021-10-04', '2021-10-05', '2021-10-06', '2021-10-07'],
},
xAxis: {
show: true,
// label: { //显示值的算法,有一定间距的显示
// show: true,
// color:'#8da5b2',
// formatter:(params)=>{
// return params.value[1]+'°C';
// }
// }
},
series: [
{
name: '',
type: 'bar',
tooltip: {
show: false,
},
z: 0, //图层值
barWidth: 1,
symbolOffset: [10, 12],
itemStyle: {
color: 'green',
},
data: data,
},
{
name: '异形柱状图',
type: 'pictorialBar', //异型柱状图
tooltip: {
show: false,
},
symbol: 'reat', //内部类型(方块,圆,svg,base64图片)
z: 1,
symbolSize: [5, 35], //size,单个symbol的大小
symbolOffset: [5, 0], //柱子的位置
symbolMargin: 3, //间隔
symbolRepeat: 'fixed', //是否重复symbol
symbolPosition: 'end',
itemStyle: {
color: 'red',
borderWidth: 12,
borderColor: '#fff', //边框颜色
},
data: data,
},
],
};
run();
function getData() {
for (let i = 1; i < 10; i++) {
let dataone = {
//全部告警
startTime: '2021-10-01' + ' ' + '0' + i + ':' + '0' + i + ':' + '0' + i,
endTime: '',
min: i * 60 + i,
};
let datatwo = {
//全部消警
startTime: '2021-10-02' + ' ' + '0' + i + ':' + '0' + i + ':' + '0' + i,
endTime: '2021-10-03' + ' ' + '0' + i + ':' + '0' + i + ':' + '0' + i,
min: i * 60 + i,
};
let datathree = {
//部分消警
startTime: '2021-10-03' + ' ' + '0' + i + ':' + '0' + i + ':' + '0' + i,
endTime: i > 6 ? '2021-10-04' + ' ' + '0' + i + ':' + '0' + i + ':' + '0' + i : '',
min: i * 60 + i,
};
if (i == 4) {
//1个告警,无消警
let datafour = {
startTime: '2021-10-04' + ' ' + '0' + i + ':' + '0' + i + ':' + '0' + i,
endTime: '',
min: i * 60 + i,
};
dataFour.push(datafour);
}
if (i == 5) {
//1个消警,无告警
let datafive = {
startTime: '2021-10-05' + ' ' + '0' + i + ':' + '0' + i + ':' + '0' + i,
endTime: '2021-10-06' + ' ' + '0' + i + ':' + '0' + i + ':' + '0' + i,
min: i * 60 + i,
};
dataFive.push(datafive);
}
if (i == 3 || i == 7) {
let dataseven = {
startTime: '2021-10-05' + ' ' + '0' + i + ':' + '0' + i + ':' + '0' + i,
endTime: '2021-10-06' + ' ' + '0' + i + ':' + '0' + i + ':' + '0' + i,
min: i * 60 + i,
};
dataSeven.push(dataseven);
}
dataOne.push(dataone);
dataTwo.push(datatwo);
dataThree.push(datathree);
// dataSix //无告警
}
}
function run() {
dataOne.forEach((item, index) => {
let warnValue = [
!item.endTime ? item.min : '',
dataTwo[index] && !dataTwo[index].endTime ? dataTwo[index].min : '',
dataThree[index] && !dataThree[index].endTime ? dataThree[index].min : '',
dataFour[index] && !dataFour[index].endTime ? dataFour[index].min : '',
dataFive[index] && !dataFive[index].endTime ? dataFive[index].min : '',
dataSix[index] && !dataSix[index].endTime ? dataSix[index].min : '',
dataSeven[index] && !dataSeven[index].endTime ? dataSeven[index].min : '',
];
let unwarnValue = [
item.endTime ? item.min : '',
dataTwo[index] && dataTwo[index].endTime ? dataTwo[index].min : '',
dataThree[index] && dataThree[index].endTime ? dataThree[index].min : '',
dataFour[index] && dataFour[index].endTime ? dataFour[index].min : '',
dataFive[index] && dataFive[index].endTime ? dataFive[index].min : '',
dataSix[index] && dataSix[index].endTime ? dataSix[index].min : '',
dataSeven[index] && dataSeven[index].endTime ? dataSeven[index].min : '',
];
let warnTime1 = [
!item.endTime ? item.startTime : '',
dataTwo[index] && !dataTwo[index].endTime ? dataTwo[index].startTime : '',
dataThree[index] && !dataThree[index].endTime ? dataThree[index].startTime : '',
dataFour[index] && !dataFour[index].endTime ? dataFour[index].startTime : '',
dataFive[index] && !dataFive[index].endTime ? dataFive[index].startTime : '',
dataSix[index] && !dataSix[index].endTime ? dataSix[index].startTime : '',
dataSeven[index] && !dataSeven[index].endTime ? dataSeven[index].startTime : '',
];
let warnTime2 = [
item.endTime ? item.startTime : '',
dataTwo[index] && dataTwo[index].endTime ? dataTwo[index].startTime : '',
dataThree[index] && dataThree[index].endTime ? dataThree[index].startTime : '',
dataFour[index] && dataFour[index].endTime ? dataFour[index].startTime : '',
dataFive[index] && dataFive[index].endTime ? dataFive[index].startTime : '',
dataSix[index] && dataSix[index].endTime ? dataSix[index].startTime : '',
dataSeven[index] && dataSeven[index].endTime ? dataSeven[index].startTime : '',
];
let unwarnTime = [
item.endTime ? item.endTime : '',
dataTwo[index] && dataTwo[index].endTime ? dataTwo[index].endTime : '',
dataThree[index] && dataThree[index].endTime ? dataThree[index].endTime : '',
dataFour[index] && dataFour[index].endTime ? dataFour[index].endTime : '',
dataFive[index] && dataFive[index].endTime ? dataFive[index].endTime : '',
dataSix[index] && dataSix[index].endTime ? dataSix[index].endTime : '',
dataSeven[index] && dataSeven[index].endTime ? dataSeven[index].endTime : '',
];
data1.push({
warn: warnValue,
time: warnTime1,
unTime: [],
});
data2.push({
unwarn: unwarnValue,
time: warnTime2,
unTime: unwarnTime,
});
});
console.log(data1,data2)
// 告警
echarts.util.each(data1, function (value, idx) {
option.series.push({
name: idx, //带有涟漪的散点图
type: 'effectScatter',
z: 3,
itemStyle: {
color: 'red',
opacity: 1,
borderWidth: 0,
},
data: value.warn,
});
});
// 消警
echarts.util.each(data2, function (value, idx) {
option.series.push({
name: idx, //带有涟漪的散点图
type: 'effectScatter',
z: 3,
itemStyle: {
color: '#333',
opacity: 1,
borderWidth: 0,
},
data: value.unwarn,
});
});
}