如何实现金额的大写

查看系统没看到如何实现 金额的大写转换
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;