公共方法:
/** 小写金额转大写金额 */
dealBigMoney(n) {
if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)) { return '数据非法' }
let unit = '千百拾亿千百拾万千百拾元角分'; let str = ''
n += '00'
const p = n.indexOf('.')
if (p >= 0) {
n = n.substring(0, p) + n.substr(p + 1, 2)
unit = unit.substr(unit.length - n.length)
}
for (var i = 0; i < n.length; i++) { str += '零壹贰叁肆伍陆柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i) }
return str.replace(/零(仟|佰|拾|角)/g, '零').replace(/(零)+/g, '零').replace(/零(万|亿|元)/g, '$1').replace(/(亿)万|壹(拾)/g, '$1$2').replace(/^元零?|零分/g, '').replace(/元$/g, '元')
}
调用方法 注意这里需要是number类型,如果是后端返回的字符串,转化后,金额会非常离谱。
// 有两位小数的
row.capitalMoney = this.dealBigMoney(Number(row.money).toFixed(2))
row.capitalMoreMoney = this.dealBigMoney(row.moreMoney)