Files
workspace/code/fms/fms-vue/src/views/dashboard/fmsFormat.js
T
2026-08-27 17:32:05 +08:00

48 lines
1.5 KiB
JavaScript

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)
}
}