当月个人支出详情echarts 柱状配置项内容和展示

配置项如下
      
demo = [
  {
    "x": "支付宝支出",
    "y": 90000,
    "s":"个人爱好支出金额总数"
  },
  {
    "x": "支付宝支出",
    "y": 26000.00,
    "s":"日常用品支出金额总数"
  },
  {
    "x": "微信支出",
    "y":  50000.12,
    "s":"个人爱好支出金额总数"
  },
  {
    "x": "微信支出",
    "y":  18000,
    "s":"日常用品支出金额总数"
  },
  {
    "x": "现金支出",
    "y":  41000.00,
    "s":"个人爱好支出金额总数"
  },
  {
    "x": "现金支出",
    "y":  13000.00,
    "s":"日常用品支出金额总数"
  }
]

let data = _yAxisData();
option = {
    backgroundColor:"#001121",
    title: {
			text:'当月个人支出详情',
			textStyle: {
				color: '#fff'
			},
		
	},
	color:colors(),
	tooltip:{
        show: true,
        trigger: 'item'
	},
	grid:{
	    left:"10%",
	    top:"10%",
	},
	legend:{
		show:true,
 		type: 'scroll',
		icon: 'rect',
		left:'70%',
		top:"4%",
		width:'50%',
		itemWidth:20,
		itemHeight:20,
// 		data: getVal(),
		formatter: function(val){
			let str1 = val.substring(0,6);
			let str2 = val.substring(6,val.length);					
			return str1+'\n'+str2;
		},
		itemGap: 10,
		textStyle:{
			color:"rgba(255,255,255,0.8)",
			fontSize:14,
		}
	},
   xAxis: [{
		type: 'category',
		data: _xAxisData(),
		axisTick: {
			show:false,
		},
		axisLabel: {
			interval:0,
			rotate:0,
			fontSize: 12,
			formatter:function(prarms){
			     let str1 = prarms.split('\n')[0];
			     let str2 = prarms.split('\n')[1];
			     console.log(str1,str2);
			     return [`{a|${str1}}\n`,`{b|${str2}}`]
			},
			rich:{
				a:{
					color:'rgba(255,255,255,0.8)'
				},
				b:{
					color:'#f4b741'
				}
			}
		},
		axisLine: {
			show: false
		},
		
	}],
    yAxis: [{
		name: '(万元)',
		nameTextStyle:{
			color: "rgba(255,255,255,0.8)",
			fontSize: 12
		},
		type: 'value',
		axisLabel: {
			color: "rgba(255,255,255,0.8)",
			fontSize: 12
		},
		splitLine: {
			lineStyle: {
				// 使用深浅的间隔色
				color: ['#82909b', '#8b949d']
			}
		},
		axisLine: {
			show: false
		}
	}],
   series: [{
			name: '个人爱好支出金额总数',
			type: 'bar',
			barWidth: '30%',
			itemStyle: {
	            normal: {
	            	label: {
						show: true,
						position: 'top',
						color:'#fff',
						fontSize:12,
						formatter: function (params) {						
							let str = params.value +'';
							let val = _formatNum(str);
							return val
							
						}						
					},
	            }
	        },
			
			data: data[0]
		},
		{
			name: '日常用品支出金额总数',
			type: 'bar',
			barWidth: '30%',
			itemStyle: {
	            normal: {
	            	label: {
						show: true,
						position: 'top',
						color:'#fff',
						fontSize:12,
						formatter: function (params) {
							let str = params.value +'';
							let val = _formatNum(str);
							return val
						}
					},
	            }
	        },
			
			data:data[1]
		}
	]
};
// function getVal(){
// 	let xData = new Set(demo.map(item => item.s));
// 	let _data = [];
// 	if (this.dataset) {
// 		for (let x of xData) { // 遍历Set
// 			_data.push(x)
// 		}
// 	}
// 	return _data;
// }
function colors() {
		return [
			new this.echarts.graphic.LinearGradient(0, 0, 0, 1, [{
						offset: 0,
						color: '#91b9d7'
					}, // 0% 处的颜色 
					{
						offset: 1,
						color: '#5b90c6'
					} // 100% 处的颜色
				],
				false),
			new this.echarts.graphic.LinearGradient(0, 0, 0, 1, [{
						offset: 0,
						color: '#ddc094'
					}, // 0% 处的颜色
					{
						offset: 1,
						color: '#d5a770'
					} // 100% 处的颜色
				],
				false),
		];
}

function _xAxisData() {
	let xData = new Set(demo.map(item => item.x));
	let _data = [];
	let datay1=0,datay2=0,datay3=0;
	
	if (demo) {
		for (let x of xData) { // 遍历Set
			_data.push(x)
		}
		
		demo.map((item,i)=>{
			//console.log("case",_data)
			switch(item.x){
				case _data[0]:
					 datay1 += Number(item.y);					
				break;
				case _data[1]:
					 datay2 += Number(item.y);					
				break;
				case _data[2]:
					 datay3 += Number(item.y);				
				break;
				default:
				break;
				
			}
			
		})					
		
	}
	//console.log("ydata",datay1,datay2,datay3);
	let datay = [datay1,datay2,datay3];
	let dataAll = [];
	for(var i=0;i<_data.length;i++){
		var str = _data[i]+"\n(共"+_formatNum(datay[i]+'')+"万元)";
		dataAll.push(str);
	}
	//console.log("str",str)
	return dataAll
	
}

function _yAxisData() {
	var data1 = [],
		data2 = [];
	demo && demo.map(item => {
		if (item.s == '个人爱好支出金额总数') {
			data1.push(item.y)

		} else if (item.s == '日常用品支出金额总数') {
			data2.push(item.y)
		}
	})
	let _data=[];
	_data=[data1,data2]
	return _data
}
	
function  _formatNum(str){
	var newStr = "";
	var count = 0;
	 
	if(str.indexOf(".")==-1){
	    for(var i=str.length-1;i>=0;i--){
			if(count % 3 === 0 && count !== 0){
			   newStr = str.charAt(i) + "," + newStr;
			}else{
			   newStr = str.charAt(i) + newStr;
			}
			count++;
	    }
	   str = newStr+'.00'; //自动补小数点后两位
	   //str = newStr;
	   return str;
	}else{
	   for(var k = str.indexOf(".")-1;k>=0;k--){
			if(count % 3 === 0 && count !== 0){
			   newStr = str.charAt(k) + "," + newStr;
			}else{
			   newStr = str.charAt(k) + newStr; //逐个字符相接起来
			}
			count++;
	   }
	   str = newStr + (str + "00").substr((str + "00").indexOf("."),3);
	   return str
	}
}	
	
	
	
	
	
	
	
    
截图如下