import dayjs from 'dayjs' /** * 按 displayFormat 将原始值格式化为展示字符串,供数据层预格式化使用。 * 展示值直接写入行数据,表格走原生文本渲染,无 customCell 运行时开销。 * @param {*} value - 原始值 * @param {string|Function} format - 'money' | 'number' | 'percent' | 'date' | 'datetime' | 'time' | 自定义函数 * @returns {string} 格式化后的文本 */ export function formatCellValue(value, format) { if (value === null || value === undefined || value === '') return '' if (typeof format === 'function') return String(format(value)) switch (format) { case 'money': { const num = Number(value) if (!Number.isFinite(num)) return String(value) return ( '¥' + num.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2, }) ) } case 'number': { const num = Number(value) if (!Number.isFinite(num)) return String(value) return num.toLocaleString('zh-CN', { minimumFractionDigits: 0, maximumFractionDigits: 0, }) } case 'percent': { const num = Number(value) if (!Number.isFinite(num)) return String(value) return (num * 100).toFixed(1) + '%' } case 'date': return dayjs(value).format('YYYY-MM-DD') case 'datetime': return dayjs(value).format('YYYY-MM-DD HH:mm:ss') case 'time': return dayjs(value).format('HH:mm:ss') default: return String(value) } }