对应日期带不同颜色
配置项如下
let history = {
color: ['#33FF99','#33FF99','#ff3333','ffa033'],
targetDate:[{
"color": "#33FF99",
"levelCode": "10001",
"levelName": "优",
"targetDate": "2021-08-15"
}, {
"color": "#33FF99",
"levelCode": "10001",
"levelName": "优",
"targetDate": "2021-08-16"
}, {
"color": "#ff3333",
"levelCode": "10004",
"levelName": "差",
"targetDate": "2021-08-30"
}, {
"color": "#ffa033",
"levelCode": "10003",
"levelName": "中",
"targetDate": "2021-08-31"
}],
levelName: ['优','良','中','差']
};
let maxArr = [];
let month = new Date('2021-08').getMonth() + 1; //获取当前月
var year = new Date('2021-08').getFullYear(); //获取当前年
var datas = []; //新建日期数组
var dataLength = new Date(year, month).toJSON().substring(0, 10).split('-')[2]; //获取当前年月日期最大值
for (var i = 0; i < Number(dataLength); i++) {
let months = month >= 10 ? month : '0' + month;
let day = i + 1 >= 10 ? i + 1 : '0' + (i + 1);
datas.push({ date: year + '-' + months + '-' + day, total: 0, statu: history.levelName[i] ? history.levelName[i] : '优' }); //存入数组
}
let chartData = [];
let chartData1 = [];
let color = history.color;
datas.forEach((item, index) => {
if(history.targetDate.length>0){
history.targetDate.map((itm,index1)=>{
if(item.date == itm.targetDate){
maxArr.push(item.total);
chartData1.push({
name: item.statu,
value: [item.date, item.total],
symbolSize: 1,
label: {
show: true,
formatter: function (params) {
return '\n▂';
},
color: itm.color?itm.color : 'transparent',
fontSize: 18,
},
});
chartData.push({
name: item.statu,
value: [item.date, item.total],
});
}else {
maxArr.push(item.total);
chartData1.push({
name: item.statu,
value: [item.date, item.total],
symbolSize: 1,
label: {
show: true,
formatter: function (params) {
return '\n▂';
},
color: 'transparent',
fontSize: 18,
},
});
chartData.push({
name: item.statu,
value: [item.date, item.total],
});
}
})
}
else {
maxArr.push(item.total);
chartData1.push({
name: item.statu,
value: [item.date, item.total],
symbolSize: 1,
label: {
show: true,
formatter: function (params) {
return '\n▂';
},
color: 'transparent',
fontSize: 18,
},
});
chartData.push({
name: item.statu,
value: [item.date, item.total],
});
}
});
let thisMonth = '2021-08'; //当前月份
option = {
visualMap: {
min: 0,
max: 300,
inRange: {
color: ['rgb(9,5,27)'],
},
show: false,
},
calendar: {
cellSize: [48, 48],
left: 'center',
top: 'middle',
orient: 'vertical',
range: [thisMonth],
itemStyle: {
borderWidth: 0,
},
splitLine: {
show: false,
},
yearLabel: { show: false },
monthLabel: {
show: false,
},
dayLabel: {
show: false,
firstDay: 1,
margin: 10,
nameMap: 'cn',
},
},
series: [
{
type: 'scatter',
coordinateSystem: 'calendar',
symbolSize: 1,
label: {
normal: {
show: true,
formatter: function (params) {
var d = echarts.number.parseDate(params.value[0]);
return d.getDate();
},
textStyle: {
color: '#7FA1C5',
fontSize: 18,
fontWeight: 'bold'
},
},
},
data: chartData,
},
{
type: 'heatmap',
coordinateSystem: 'calendar',
data: chartData,
},
{
type: 'scatter',
coordinateSystem: 'calendar',
data: chartData1,
},
],
};