查看系统没看到如何实现 金额的大写转换
1000 转成 壹仟
多加一个字段,通过工作流写一个JS函数去加工,完了给新加的字段赋值
工作流不是要在点击后 执行吗 或数据表新增或更新后执行吗 ,能不能实现在某个字段改变后执行呢
没有前端事件流之前不能,这比较个性化了,简道云宜搭都没支持的
好的 多谢回复
好的 我试试 谢谢
用 runjs 实现
const total = await ctx.getVar(‘ctx.formValues.f_hjje’) || 0;;
console.log(‘合计金额:’, total);
// 2. 数字转中文大写金额
function digitToChinese(money) {
if (money === null || money === ‘’ || isNaN(money)) return ‘零元整’;
money = Math.round(Number(money) * 100) / 100;
const cnNums = [‘零’, ‘壹’, ‘贰’, ‘叁’, ‘肆’, ‘伍’, ‘陆’, ‘柒’, ‘捌’, ‘玖’];
const cnIntRadice = [‘’, ‘拾’, ‘佰’, ‘仟’];
const cnIntUnits = [‘’, ‘万’, ‘亿’, ‘兆’];
const cnDecUnits = [‘角’, ‘分’];
let integer = Math.floor(money);
let decimal = Math.round((money - integer) * 100);
let chineseStr = ‘’;
if (integer === 0 && decimal === 0) return ‘零元整’;
// 整数部分
if (integer !== 0) {
let intStr = integer.toString();
let len = intStr.length;
let zeroCount = 0;
for (let i = 0; i < len; i++) {
let n = Number(intStr[i]);
let pos = len - i - 1;
let unitPos = Math.floor(pos / 4);
let radPos = pos % 4;
if (n === 0) {
zeroCount++;
} else {
if (zeroCount > 0) chineseStr += cnNums[0];
zeroCount = 0;
chineseStr += cnNums[n] + cnIntRadice[radPos];
}
if (radPos === 0 && zeroCount < 4) {
chineseStr += cnIntUnits[unitPos];
}
}
chineseStr += '元';
} else {
chineseStr += ‘零元’;
}
// 小数部分
if (decimal === 0) {
chineseStr += ‘整’;
} else {
let jiao = Math.floor(decimal / 10);
let fen = decimal % 10;
if (jiao !== 0) chineseStr += cnNums[jiao] + cnDecUnits[0];
if (fen !== 0) chineseStr += cnNums[fen] + cnDecUnits[1];
}
return chineseStr;
}
// 3. 转换并返回
const hjjeChinese = digitToChinese(total);
console.log(‘中文大写:’, hjjeChinese);
// 4. 赋值给 hjje 字段(如果你需要)
ctx.formValues.hjje = hjjeChinese;
return hjjeChinese;
