/** 金额类字段默认最大小数位数 */ export const AMOUNT_DECIMAL_SCALE = 6 /** 金额(元)默认展示小数位数 */ export const MONEY_DECIMAL_SCALE = 2 /** * 格式化数字:最多保留 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) } /** el-table-column formatter:金额(元)列,最多保留 2 位小数 */ export function moneyAmountFormatter(row, column, cellValue) { return formatDecimal(cellValue, MONEY_DECIMAL_SCALE) } /** 计算后保留指定位小数 */ 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 = {}, scale = AMOUNT_DECIMAL_SCALE ) { const format = { ...extraFormat } fields.forEach(field => { format[field] = { decimalPlaces: scale } }) return format }