# 金额转化为大写数字
# 1.场景介绍
在涉及金额结算的场景,为避免金额被篡改,会采用大写数字的方式进行记录。但是系统录入的时候,直接输入大写数字又不是很方便。本文将介绍如何将输入的金额转化为大写数字。
# 2.效果展示

# 3.实现思路
1.添加变量,将大写金额的默认值设置为此变量。
2.为价格输入框添加事件-属性值变化时。在属性值变化时,通过循环遍历的方式,将对应的金额数字转化为大写,并根据大写数字的格式添加单位。
# 4.操作步骤
本文以将单价的金额转化为大写数字为例,已建立好单价和金额两个输入框。
# 4.1 添加变量
进入表单-系统设置,在高级设置中添加变量v_upperPrice。

# 4.2 设置默认值
点击表单中的大写金额组件,将大写金额的默认值设置为v_upperPirce。

# 4.3 添加事件
点击表单中的单价组件,在高级中添加事件-属性值变化时,动作选择为代码块。

代码如下
//将输入金额转换为字符串
var s = value + '00'
//定义输出与格式转换
var strOutput = "",
strUnit = "仟佰拾亿仟佰拾万仟佰拾元角分";
//判断是否有小数,如果有,进行小数转换
var intPos = s.indexOf('.')
if(intPos >= 0){
s = s.substr(0,intPos) + s.substr(intPos + 1, 2)
}
strUnit = strUnit.substr(strUnit.length - s.length);
//循环将数字转化为大写数字
for (var i = 0; i < s.length; i++) {
strOutput += '零壹贰叁肆伍陆柒捌玖'.substr(s.substr(i, 1), 1) + strUnit.substr(i, 1);
}
//对大写数字格式规范化并赋值
this.v_upperPrice = strOutput.replace(/零角零分$/, '整').replace(/零[仟佰拾]/g, '零').replace(/零{2,}/g, '零').replace(/零([亿|万])/g, '$1').replace(/零+元/, '元').replace(/亿零{0,3}万/, '亿').replace(/^元/, "零元")