今天给客户做个报表,客户是意大利的人,要求饼图显示千分位和人民币符号,不要小数点,ecahrts默认满足不了要求只能自己写方法处理了,直接上代码
title: {
text: '产品销量占比',
left: 'center'
},
tooltip: {
trigger: 'item',
formatter:function (params) {
var data=params.data;
var val=parseInt(data.value);
return data.name+':¥'+vm.formatNum(val)+'('+params.percent+'%)'
}
},
legend: {
type: 'scroll',
orient: 'vertical',
right: 10,
top: 20,
bottom: 20,
data: [],
selected: true
},
series: [
{
name: '产品',
type: 'pie',
radius: '55%',
center: ['40%', '50%'],
label: {
normal: {
formatter: '{d}%'
}
},
data: [],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
用到的vm.formatNum代码如下
vm.formatNum=function(strNum) {
if(strNum.length <= 3) {
return strNum;
}
if(!/^(\+|-)?(\d+)(\.\d+)?$/.test(strNum)) {
return strNum;
}
var a = RegExp.$1,
b = RegExp.$2,
c = RegExp.$3;
var re = new RegExp();
re.compile("(\\d)(\\d{3})(,|$)");
while(re.test(b)) {
b = b.replace(re, "$1,$2$3");
}
return a + "" + b + "" + c;
}
注意:上面代码里面的data我是在外面赋值的,主要方法就是formatter对应的方法
下面是效果图