示例:
<template>
<el-table
:data="tableData"
>
<el-table-column
property="money1"
label="示例1"
:formmat="handleFormat">
</el-table-column>
<el-table-column
property="money2"
label="示例2">
<template slot-scope="scope">
{{handleScopeFormat(scope.row.money2)}}
</template>
</el-table-column>
</el-table>
具体实现代码如下:
// 表格插槽内 - 保留两位小数并且添加千位分割符
handleScopeFormat(num,n=2,symbol) {
// 保证为number类型
num = Number(num)
if(typeof num!=='number')throw new TypeError('num参数应该是一个number类型');
if(n<0)throw new Error('参数n不应该小于0');
var hasDot=parseInt(num)!=num;//这里检测num是否为小数,true表示小数
var m=(n!=undefined&&n!=null)?n:1;
num=m==0?num.toFixed(m)+'.':hasDot?(n?num.toFixed(n):num):num.toFixed(m);
symbol=symbol||',';
num=num.toString().replace(/(\d)(?=(\d{3})+\.)/g,function(match, p1,p2) {
return p1 + symbol;
});
if(n==0||(!hasDot&&!n)){//如果n为0或者传入的num是整数并且没有指定整数的保留位数,则去掉前面操作中的小数位
num=num.substring(0,num.indexOf('.'));
}
return num;
},
// 表格行内 - 保留两位小数并且添加千位分割符
handleFormat(row, column) {
let num = Number(row[column["property"]]);
let n = 2;
let symbol = ",";
if(typeof num!=='number')throw new TypeError('num参数应该是一个number类型');
if(n<0)throw new Error('参数n不应该小于0');
var hasDot=parseInt(num)!=num;//这里检测num是否为小数,true表示小数
var m=(n!=undefined&&n!=null)?n:1;
num=m==0?num.toFixed(m)+'.':hasDot?(n?num.toFixed(n):num):num.toFixed(m);
symbol=symbol||',';
num=num.toString().replace(/(\d)(?=(\d{3})+\.)/g,function(match, p1,p2) {
return p1 + symbol;
});
if(n==0||(!hasDot&&!n)){//如果n为0或者传入的num是整数并且没有指定整数的保留位数,则去掉前面操作中的小数位
num=num.substring(0,num.indexOf('.'));
}
return num;
},
```