/** 金额类字段默认最大小数位数 */
|
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
|
}
|