饼图自定义legend

描述:当前是关于Echarts图表中的 饼图 示例。
 
            let bgColor = '#fff';
let fontColor = "#333"
let scale = 1;
let title = '总数';
let echartData = [{
        name: "A类",
        value: "372",
        // unit: "元"
    },
    {
        name: "B类",
        value: "292",
        // unit: "元"
    },
    {
        name: "C类",
        value: "220",
        // unit: "元"
    },
    {
        name: "D类",
        value: "142",
        // unit: "元"
    }
];
let formatNumber = function(num) {
    let reg = /(?=(\B)(\d{3})+$)/g;
    return num.toString().replace(reg, ',');
}
let total = echartData.reduce((a, b) => {
    return a + b.value * 1
}, 0);
total = formatNumber(total);
option = {
    backgroundColor: bgColor,
    color: ['#0E7CE2', '#FF8352', '#E271DE', '#F8456B', '#00FFFF', '#4AEAB0'],
    tooltip: {
        trigger: 'item'
    },
    // title: {
    //     text: '{name|' + title + '}\n{val|' + total + '}',
    //     top: 'center',
    //     left: 'center',
    //     textStyle: {
    //         rich: {
    //             name: {
    //                 fontSize: 16 * scale,
    //                 fontWeight: 'normal',
    //                 color: fontColor,
    //                 padding: [10, 0]
    //             },
    //             val: {
    //                 fontSize: 32 * scale,
    //                 fontWeight: 'normal',
    //                 color: fontColor,
    //             }
    //         }
    //     }
    // },
    legend: {
        orient: 'vertical',
        icon: 'rect',
        x: '30',
        y: 'center',
        itemWidth: 12 * scale,
        itemHeight: 12 * scale,
        align: 'left',
        textStyle: {
            rich: {
                name: {
                    fontSize: 12 * scale
                },
                value: {
                    fontSize: 16 * scale,
                    padding: [0, 5, 0, 15]
                },
                unit: {
                    fontSize: 12 * scale
                }
            }
        },
        formatter: function(name) {
            let res = echartData.filter(v => v.name === name);
            res = res[0] || {};
            let unit = res.unit || '';
            return '{name|' + name + '}  {value|' + res.value + '}{unit|' + unit + '}'
        }
        // data: legendName
    },
    series: [{
        type: 'pie',
        radius: ['30%', '60%'],
        center: ['50%', '50%'],
        data: echartData,
        // itemStyle: {
        //     normal: {
        //         borderColor: bgColor,
        //         borderWidth: 1
        //     }
        // },
        labelLine: {
            normal: {
                length: 20,
                length2: 20
            }
        },
        label: {
            normal: {
                show: false,
                formatter: params => {
                    console.log(params)
                    return (
                        "{name| " +
                        params.name +
                        "}\n" +
                        "{value|" +
                        params.percent.toFixed(2) +
                        "}" +
                        "{unit|%}"
                    );
                },
                rich: {
                    name: {
                        fontSize: 12 * scale,
                        lineHeight: 12 * scale,
                        color: fontColor
                    },
                    value: {
                        fontSize: 16 * scale,
                        lineHeight: 16 * scale,
                        color: fontColor
                    },
                    unit: {
                        fontSize: 12 * scale,
                        lineHeight: 12 * scale,
                        color: fontColor,
                        padding: [0, 0, 5 * scale, 0]
                    }
                }
            }
        },
    }]
};