基地销售排行

描述:当前是关于Echarts图表中的 柱状图 示例。
 
            const dataSource = [
	{name:'基地5',value:580},
	{name:'基地1',value:536},
	{name:'基地2',value:500},
	{name:'基地3',value:350},
	{name:'基地4',value:300},
	{name:'基地8',value:280},
	{name:'基地6',value:240},
	{name:'基地7',value:200},
];
     let barWidth = 10 /* 进度条及进度条radius宽度 */,
        nameWidth = 60 /* 进度条名称宽度 */,
        unit = '人' /* 单位 */,
        attaData = [] /* 进度条数据 */,
        attaVal = [] /* 进度条数值 */,
        topName = [] /* 进度条名称 */,
        salvProMax = []; /* 背景条数据 */
     dataSource.forEach((it, i) => {
        // let itemStyle = {
        //     color: i > 3 ? attackSourcesColor[3] : attackSourcesColor[i],
        // };
        topName[i] = `${it.name}`;
        attaVal[i] = it.value;
        attaData[i] = {
            value: parseFloat(it.value).toFixed(2),
            // itemStyle: itemStyle,
        };
    });
    /* 该值无具体作用,取进度最大值 * 1.2 */
    salvProMax = Array(attaVal.length).fill(Math.max(...attaVal) * 1.2);
     const img3 =
        'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAkBJREFUOE+dlT1MU2EUhp/TNgVBibVKtEBM+OnCBizGxMRoMMbEgHK7IDEmRhYTB6NUJhMTQ8vioAMNDkYG0wsSVuqEMYoRjEMH5F8oRMVWK0Ot4GdaNBforbSe8bznPPd893vvuYJZaGE7P61NiDQBRwAXkAQWgbegBrGtD6HXpnJbQjJ42kQz4AeqTR9mJKdQ0kG/++nmOgOoKSu2ybsIN3cAbZUVftZqOtFlPSUYwIvvfZAnzED7eeTuMICXJ1sQ9Lwm216s0Oit6Rduh+2sFEwD5WbAK0dL6DrrTEuOIguBF3Han3w2K42w/0elcH26FVRftulC7S70d6sEXsXpOuOk4/hePI8/pnMZoVSb0DmtI7TkctyTVbsIXTqEdziKb+SrWcuAcGdmDji8E7DSYSN4rhRHoZWGhxFiiV9mLfNC92wCKPgXsKfRieYuxlFowTsSw/f6W7bypHB/Ng7s2WnClK5VFxM8dQDvyxi+cVNoUuidmwDcuQBTNdELFcx8X6NhaDnLkfvmU/4zvZTK3TZCJ0rxPF9hLJqkfp+dN6cPEphapX00mgkUBgR9oRXJbpueOgdaWdGGD+0Wnn1K4Bn9QixpdinSJgTDdopKsho711cBRLAkqja+5eFFDVHBPJpNTC0eGst1YzmMLPhBbvwfVHVzrCK9pQxgUFmpWLqHcDVP6AM+uK7h2b6+/lLGl86jVFdOC1bULerK+zcPkLmxU2o4bGfdoSE0o6gHyv40RRDGUAxijenUZv4CfgMYbrM+2nZyFAAAAABJRU5ErkJggg==';
     const img2 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAj9JREFUOE+dlUtoE1EUhr+TSWbswnYh4qu29IHBkF0X4kaXoqC22kSxBBTEjYJCq8Un6sJHglhQK3YjUkGb9GEXrsRNcaPiY1HEoEIfZlFw04Dam2RyJS2mNZ00jXd5zj/fOWfumX8Eh6MDPjO1ym7OIs0CW4H1QAr4ruGDS/SQ+cMYltinXOyfI4UBdXxzi9Y6DDQ6FVsQ+yrQaXV/HlyoywN1AEOt8V4DzpQAFabD1lT8nMSwc4k8cOaU9ya6bNgcXAiv6Ip35oGq3duq0bEyOyt4dxKwbsX7RV/2mepX5htQXQg0thzAvbNjLlxRif26j8zgJee6QsKqcNeLOt/YhpbHTipP+0vskR6yb/swth3D2NFBunsfOjFaZBgdEnWxMYbQupxxzStfsF9EsF/1FJMPiLraMAbUlgLKOj+eo8/IPL9A9v3TYvJxUdcbZgCrFNB98BGutX5SXU1LSVOiIvVJYOVSKpd3F+7dd7BHwthvHpQA3q6LA5uKqaSqBs+hYbJTo2QGQ6UGGRd1ty63f46XIqv9ePb2opOTpKN7SsFy+QFR92vbEOe1MQ9/BKsK1HQeptU06Sfbi8AlJDrqM1PJn46LvZyW5iuRMH97Gma/ZfWwJiBCtCxAgVhrgtaRiVjeHFRvTVjg9P9ANUSs0MSsS83bVxQjbW/sAk6UCb3nMSZPSrDAvv5CVF/1fhG5sRyD1chZKzjRv7CBRY6dS85elCQDLqFFo5tANsw9pBOCvMtqhkxdGZPg4l/AH13qwGT3cAHIAAAAAElFTkSuQmCC';
     const img1 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAh9JREFUOE+dlb1rU1EYxp/Ha9OWNtrCzS2NQsVKhjg41EXB3EwuNthg41L6HwgOUkudMqmNIiK4ZFMcirc1OIhTsbEuDlIcDIgptGCG3nszaERsoLySGGM+LucSz3jOc37n/TjnOYTHkOingKMPz5CcIXBOgDCAKsCvgGwJJBdyfrxk4XS1czs7J1xzJylABpBTXof9m2ORgkX97YkXrbomUFKiufb2bUBuqkFdMWV0Y/IWLR7UVppAxywsA+gR1oRnQvnoYhNoxz/OUsTqLbJ2tZApY+PMKmsNcEM/twEc7wRq4X4M35hA39QRSOUA5cSW4kyWdGfwJJ3YuzkQz7yUWngAA9NjCMR1HAoeRjnxXpkEyXm65rol4KxKOZI9C218EOXEphooWKNjvt4BMKEGnm8A1/3KvEvHzP0C0K8GxqGND6GceOUHrNI2V74DCKqUo9mLdaCbyCmBAlRpx558BhBRAy9BCwfhTq/41XCXtpm1IFA2ZTSbbACf+qW8Rif2aE5Az2tz9MFl9EUMMPinxFLZx/5GEZX7bzzBIpinRNM1Z/G82H7hdKyXvg0FJutv2TbvpCDyvEdAu5y8auSXrBZzSGdEsPA/UBL3Qvl03Vha7CulOXuRhwCu9QaVx6GxL9dpWe329Reyd2HhCsm7AHwMFkUIlozNzGprAF2OXe9mNB1w9UpKIEkAUwCONTaVAHwgmNPdoMVCuusL+A124bE/KrlV9gAAAABJRU5ErkJggg==';
     const img4 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAnFJREFUOE+t1c9rXGUUxvHPuTNJ2gamTbVWRe1C0YVSuhatrdiNf4F/gVYEEVG7Le6SiujGWveCuBcElZYqrovgwqIbFX+lJjaQpJNk5sh9550maSPWHxfezeXe7z3nPM95btjpOpcT/vCY8DgewW3YwDwuS5/b5wvPxfqNr8dNvDfyqIHnhWn8KgpkVQphjyzwO6QVHWe9Ehe3MjaBp7Ox27PC0/i+nmX0a3Xte11MYVo4JN0nfWTVe07HsH1gEzibJzVOGPq6VJWWsCxc2wZMuyqwJx3QeNjQJ07Fu5vAM3lMelm6hF+ERVy9DowyP1LXGMheaQZ3CkeEN70aF0IrwJIP8JN0GVcMLQhXpWUT+tYqcFLXuqky37RXx0ypMjyIu/U8E2bzhPACvizVtcC0oFNbHurbMCgVdnU0dYYDPWE/bi9V8ijeaYGvCwfxlayqthV2K3DSmn4FTulYM1lmuKGn2QY8jN/CXH6I7+pp5zevsWhgyS4rReUpRUF9TVH5mj06eoa15VGF97enBX6G8/ixtNyYt25RO9m0qmfNz7XCu8ogJoXd1vVMmDF0oLZ8D46HM/mxLPNrvfc/AOfyfeEH6dtqmX/W8liU9MCo5a2ijFX+T6Lcim2a6sOh7t/b5kZjtyoPLP57Y7d2mM3jwku4VLzYWNi2yzutXhTb7K8ePiK95VSc3wyHuWwj66lq8IXru/xXadPu8mhTDkufei3Obk+bNr6mvSg9eYvxda90qHh4xds3x9c4JefyCelkMe8oYH8vYTr6/DhgDxbTN861CbNzwG69O/oFHBOO4qEaAO0TV/CNdNE+F3b6BfwJwRsoBqR2D5QAAAAASUVORK5CYII='
     option = {
        backgroundColor:'#000',
        grid: [
           {
              left: 0,
              top: 40,
              right: 10,
              bottom: 40,
              containLabel: true,
           },
        ],
        xAxis: [
           {
              gridIndex: 0,
              type: 'value',
              axisLabel: { show: false },
              axisLine: { show: false },
              splitLine: { show: false },
              axisTick: { show: false },
           },
           {
              gridIndex: 0,
              type: 'value',
              max: 100,
              axisLabel: { show: false },
              axisLine: { show: false },
              splitLine: { show: false },
              axisTick: { show: false },
           },
        ],
        yAxis: [
           {
              gridIndex: 0,
              type: 'category',
              inverse: true,
              position: 'left',
              data: dataSource.map((item) => item.name),
              axisTick: { show: false },
              axisLine: { show: false },
              splitLine: { show: false },
              axisLabel: {
                 width: 80,
                 padding: [0, 0, 40, -20],
                 align: 'left',
                 formatter: (name, index) => {
                    const id = index + 1;
                    if (id < 4) {
                        return `{icon${id}|}`;
                     } else {
                        return `{count|${id}}`;
                     }
                 },
                 rich: {
                    icon1: {
                        width: 20,
                       height: 20,
                       align: 'center',
                       borderRadius: 50,
                       backgroundColor: {
                          image: img1,
                       },
                        
                    },
                    icon2: {
                       width: 20,
                       height: 20,
                       align: 'center',
                       borderRadius: 50,
                       backgroundColor: {
                          image: img2,
                       },
                    },
                    icon3: {
                       width: 20,
                       height: 20,
                       shadowColor: '#3374ba',
                       borderColor: '#3374ba',
                       borderWidth: 1,
                       borderRadius: 50,
                       align: 'center',
                       backgroundColor: {
                          image: img3,
                       },
                    },
                    count: {
                       padding: [2, 0, 0, 0],
                       width: 20,
                       height: 18,
                       color: '#fff',
                       align: 'center',
                       fontSize: 12,
                       fontFamily: 'DIN',
                       fontWeight: 500,
                       shadowColor: '#008AFF',
                       borderColor: '#008AFF',
                       borderRadius: 50,
                       borderWidth: 1,
                       backgroundColor: {
                        image: img4,
                     },
                    },
                    name: {
                       width: 80,
                       fontSize: 12,
                       align: 'left',
                       color: '#fff',
                       fontFamily: 'Source Han Sans CN',
                       fontWeight: 500,
                    },
                 },
              },
           },
           {
              gridIndex: 0,
              type: 'category',
              inverse: true,
              data: dataSource.map((item) => item.name),
              axisTick: { show: false },
              axisLine: { show: false },
              splitLine: { show: false },
              position: 'left',
              axisLabel: {
                 width: 80,
                 padding: [0, 0, 40, 40],
                 align: 'left',
                 formatter: (name, index) => {
                    return `{value|${name}}`;
                 },
                 rich: {
                    value: {
                       color: '#fff',
                       fontSize: 12,
                       fontWeight: 500,
                    },
                 },
              },
           },
           {
              gridIndex: 0,
              type: 'category',
              position: 'right',
              inverse: true,
              margin: 20,
              data: dataSource.map((item) => item.name),
              axisTick: { show: false },
              axisLine: { show: false },
              splitLine: { show: false },
              axisLabel: {
                 align: 'right',
                 padding: [0, 0, 50, -40],
                 formatter: (_, index) => {
                    return `{value|${dataSource[index].value}吨}`;
                 },
                 rich: {
                    value: {
                       color: '#fff',
                       fontSize: 12,
                       fontWeight: 500,
                    },
                 },
              },
           },
        ],
        series: [
           {
              z: 1,
              type: 'bar',
              xAxisIndex: 0,
              yAxisIndex: 0,
              barWidth: 10,
              data: dataSource.map((item) => item.value),
              silent: true,
              itemStyle: {
                 emphasis: {
                    barBorderRadius: [0, 20, 20, 0],
                 },
                 normal: {
                    // barBorderRadius: [0, 20, 20, 0],
                    barBorderRadius: [30, 30, 30, 30],
                    color: new echarts.graphic.LinearGradient(
                       0,
                       0,
                       1,
                       0,
                       [
                          {
                             offset: 0,
                             color: '#01A6EB', // 0% 处的颜色
                          },
                          {
                             offset: 1,
                             color: '#005CD8', // 100% 处的颜色
                          },
                       ],
                       false
                    ),
                 },
              },
           },
           {
              z: 3,
              name: '背景',
              type: 'bar',
              barWidth: 10,
              barGap: '-100%',
              data: salvProMax,
              itemStyle: {
                 normal: {
                    color: 'rgba(131, 132, 132, 0.1)',
                    barBorderRadius: [30, 30, 30, 30],
                    borderColor:'#004FBB'
                 },
              },
           },
        ],
     };