/** 金额类字段默认最大小数位数 */ export const AMOUNT_DECIMAL_SCALE = 6 /** * 格式化数字:最多保留 scale 位小数,并去除末尾多余的 0 */ export function formatDecimal(value, scale = AMOUNT_DECIMAL_SCALE, fallback = '0') { if (value === null || value === undefined || value === '') { return fallback } const num = Number(value) if (Number.isNaN(num)) { return fallback } return parseFloat(num.toFixed(scale)).toString() } /** 带货币符号的金额展示 */ export function formatCurrency(value, scale = AMOUNT_DECIMAL_SCALE) { return `¥${formatDecimal(value, scale)}` } /** el-table-column formatter */ export function tableAmountFormatter(row, column, cellValue) { return formatDecimal(cellValue) } /** 计算后保留指定位小数 */ export function roundAmount(value, scale = AMOUNT_DECIMAL_SCALE) { if (value === null || value === undefined || value === '') { return 0 } const num = Number(value) if (Number.isNaN(num)) { return 0 } return parseFloat(num.toFixed(scale)) } /** 构建 summarizeTable 金额列格式配置 */ export function buildAmountSummaryFormat(fields, extraFormat = {}) { const format = { ...extraFormat } fields.forEach(field => { format[field] = { decimalPlaces: AMOUNT_DECIMAL_SCALE } }) return format }