场馆运行--人员状态统计

描述:当前是关于Echarts图表中的 饼图 示例。
 
            var scaleData = [{
        'name': '正常',
        'value': 60
    },
    {
        'name': '请假',
        'value': 20
    },
    {
        'name': '缺勤',
        'value': 10
    },
    {
        'name': '打卡异常',
        'value': 2
    },
];

function getArrayName(array, key) {
    var key = key || "value";
    var res = [];
    if (array) {
        array.forEach(function(t) {
            res.push(t[key]);
        });
    }
    return res;
}

function getArrayValue(array, key) {
    var resObj = {};
    for (var i = 0; i < array.length; i++) {
        resObj[array[i][key]] = array[i];
    }
    return resObj;
}
var arrName = getArrayName(scaleData, "name");
var arrValue = getArrayValue(scaleData, "name");
var placeHolderStyle = {
    normal: {
        label: {
            show: false
        },
        labelLine: {
            show: false
        },
        color: 'rgba(0,0,0,0)',
        borderColor: 'transparent',
        borderWidth: 50,
        barBorderRadius: 50
    }
};
var data = [];
var color = ['rgb(53, 240, 255)', 'rgb(0, 182, 255)', 'rgb(0, 114, 255)', 'rgb(93, 61, 255)', ]
for (var i = 0; i < scaleData.length; i++) {
    data.push({
        value: scaleData[i].value,
        name: scaleData[i].name,
        itemStyle: {
            normal: {
                borderWidth: 10,
                shadowBlur: 0, //图形阴影
                borderColor: color[i],
                shadowColor: color[i]
            }
        }
    }, {
        value: 2,
        name: '',
        itemStyle: placeHolderStyle
    });
}
var seriesObj = [{
    name: '',
    type: 'pie',
    clockWise: true,
    radius: [195, 200],
    hoverAnimation: false,
    itemStyle: {
        normal: {
            label: {
                show: false,
                position: 'outside',
                color: 'red',
                formatter: function(params) {
                    var percent = 0;
                    var total = 0;
                    for (var i = 0; i < scaleData.length; i++) {
                        total += scaleData[i].value;
                    }
                    percent = ((params.value / total) * 100).toFixed(0);
                    if (params.name !== '') {
                        return params.name + '\n{white|' + '占比' + percent + '%}'; //设置label文字颜色
                    } else {
                        return '';
                    }
                },
                // rich: rich
            },
            labelLine: {
                length: 30,
                length2: 100,
                show: false,
                color: '#00ffff'
            }
        }
    },
    data: data
}];
option = {
    backgroundColor: '#000',
    title: {
        text: "设备运维人员",
        x: 'center',
        top: "23%",
        textStyle: {
            color: '#fff'
        }
    },
    color: color, //图例颜色
    tooltip: {
        show: true
    },
    legend: {
        show: true,
        orient: 'horizontal',
        align: 'left',
        // type:'scroll',//图例分页
        bottom: "10%",
        // left: 'center',
        icon: "circle",
        data: arrName,
        width: 300, //设置宽度可以产生换行
        itemGap: 25,
        formatter: function(name, value) {
            return "{title|" + name + "}   {values|" + (arrValue[name].value) + "}"

        },
        rich: {
            a: {
                width: 100,
            },
            b: {

            }
        },
        textStyle: {
            rich: {
                title: {
                    fontSize: 16,
                    lineHeight: 5,
                    color: "rgb(0, 204, 228)"
                },
                values: {
                    fontSize: 16,
                    lineHeight: 5,
                    color: "#fff"
                }
            }
        },
    },
    toolbox: {
        show: true
    },
    series: seriesObj
}