time轴,时间轴;计划时间,实际时间;

描述:当前是关于Echarts图表中的 柱状图 示例。
 
            let date_timestr = +new Date();  //任务开始的最小值我这里就用的目前时间
date_timestr = +new Date('2022/10/19');
let opacity_Data = [            //隐藏部分的;开始时间的 (几天几小时)
    1000 * 60 * 60 * 24 * 2,
    1000 * 60 * 60 * 24 * 4,
    1000 * 60 * 60 * 24 * 2,
    1000 * 60 * 60 * 24 * 10,
]
let high_Data = [               //高亮部分的;结束时间的
    1000 * 60 * 60 * 24 * 5,
    1000 * 60 * 60 * 24 * 10,
    1000 * 60 * 60 * 24 * 100,
    1000 * 60 * 60 * 24 * 50,
]

let opacity_Data2 = [
    1000 * 60 * 60 * 24 * 2,
    1000 * 60 * 60 * 24 * 4,
    1000 * 60 * 60 * 24 * 2,
    1000 * 60 * 60 * 24 * 10,
]
let high_Data2 = [
    1000 * 60 * 60 * 24 * 10,
    1000 * 60 * 60 * 24 * 7,
    1000 * 60 * 60 * 24 * 10,
    1000 * 60 * 60 * 24 * 55,
]
const formatterTime = (d) => {
    let d_ = new Date(d);
    return `${d_.getFullYear()}/${d_.getMonth() + 1}/${d_.getDate()} ${d_.getHours()}:${d_.getMinutes()}:${d_.getSeconds()}`
}
let option = {
    grid: {
        containLabel: true,
        right: '10%',
        left: '5%',
        bottom: '6%',
        top: '10%',
    },
    legend: {
        top: "5%",
        data: ['计划时间', '实际时间'],
        formatter: (v) => {
            return `{a1|${v}}\n{a2|number}`
        },
        selectedMode: false,        //这里禁止点击;需要的自己写事件使用filter动态setOption
        icon: 'circle',
        itemWidth: 14,
        itemHeight: 14,
        itemGap: 30,
        textStyle: {
            rich: {
                a1: {
                    padding: [10, 0, 0, 0],
                    fontSize: 12,
                    fontWeight: 600,
                },
                a2: {
                    fontSize: 12,
                    fontWeight: 600,
                }
            }
        }
    },
    tooltip: {
        trigger: 'axis',
        axisPointer: {
            // Use axis to trigger tooltip
            type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
        },
        formatter: function (ToolFormatterParam) {
            let labels = `<div>
                <b>${ToolFormatterParam[0].name}</b>
            </div>`;
            ToolFormatterParam.map((item) => {
                let isSeriesNameZero = item.seriesName.includes('0');
                if (!isSeriesNameZero) {
                    let startTime = ToolFormatterParam.filter((item2) => {
                        if (item2.seriesName.includes((item.seriesName + '0'))) {
                            return item2
                        }
                    })[0].value + date_timestr;
                    let endTime = null;
                    endTime = date_timestr + item.value;
                    let label_item = `<div>${item.seriesName}:${formatterTime(startTime)} 至 ${formatterTime(endTime)}</div>`
                    labels += label_item
                }
            })
            return labels;
        }
    },
    xAxis: {
        type: 'value',
        minInterval: 1000 * 60 * 60 * 24,       //最小轴线分割 一天的的值 如果是小时自行修改
        // 此处可
        // 最大的用于限制x多刻度线的一刻度值 这里8天一刻度;其它的都可以多了如果要细致到小时等等自行修改
        // 如果数据是天的且想要精确到一天甚至更小推荐添加滚动条
        maxInterval: 1000 * 60 * 60 * 24 * 8,   //最大轴线分割 一天的的值 如果是小时自行修改
        axisLabel: {
            fontSize: 12,
            fontWeight: 600,
            color: '#888',
            formatter: function (val, index) {
                let date_ = new Date(val + date_timestr);
                let label_ = `${date_.getFullYear()}/${date_.getMonth() + 1}/${date_.getDate()}`;
                return label_;
            },
            // maxInterval 的设置刻度较多旋转显示
            rotate: 20
        },
        splitLine: {
            show: true,
            lineStyle: {
                color: '#eee',
            },
        },
        axisLine: {
            show: false
        }
    },
    yAxis: {
        type: 'category',
        inverse: true,
        data: ['收购痛讯', '亿个小目标', '下一个小目标', '周游世界'],
        axisLabel: {
            color: '#333',
            fontSize: 12,
            fontWeight: 600
        },
        axisLine: {
            show: false,
        },
        axisTick: {
            show: false,
        },
    },
    // k = 0,1 隐藏的;k=1,2高亮的
    color: [
        '#fff',
        {
            type: 'linear',
            x: 0,
            y: 0,
            x2: 1,
            y2: 0,
            colorStops: [
                {
                    offset: 0,
                    color: '#4297FE', // 0% 处的颜色
                },
                {
                    offset: 1,
                    color: '#007BFF', // 0% 处的颜色
                },
            ],
            global: false, // 缺省为 false
        },
        '#fff',
        {
            type: 'linear',
            x: 0,
            y: 0,
            x2: 1,
            y2: 0,
            colorStops: [
                {
                    offset: 0,
                    color: '#5198FF', // 0% 处的颜色
                },
                {
                    offset: 1,
                    color: '#8BF8FE', // 0% 处的颜色
                },
            ],
            global: false, // 缺省为 false
        }
    ],
    series: [
        {
            //开始空白(隐藏部分需要在后面加0)tooltip formatter内有判断需要修改注意
            name: '计划时间0',
            type: 'bar',
            stack: 'total',
            label: {
                show: false
            },
            itemStyle: {
                opacity: 0,
            },
            emphasis: {
                focus: 'series'
            },
            barWidth: 24,
            barGap: '10%',
            data: opacity_Data
        },
        {
            name: '计划时间',
            type: 'bar',
            stack: 'total',
            label: {
                show: false
            },
            emphasis: {
                focus: 'series'
            },
            barWidth: 24,
            barGap: '10%',
            itemStyle: {
                borderRadius: [6, 20, 20, 6]
            },
            data: high_Data
        },


        {
            name: '实际时间0',
            type: 'bar',
            stack: 'total2',
            label: {
                show: false,
            },
            itemStyle: {
                opacity: 0
            },
            barWidth: 24,
            emphasis: {
                focus: 'series'
            },
            barGap: '10%',
            data: opacity_Data2
        },
        {
            name: '实际时间',
            type: 'bar',
            stack: 'total2',
            label: {
                show: false
            },
            emphasis: {
                focus: 'series'
            },
            barWidth: 24,
            barGap: '10%',
            itemStyle: {
                borderRadius: [6, 20, 20, 6]
            },
            data: high_Data2
        },
    ],
};