20260827173205
This commit is contained in:
1 parent
60cacfa8fb
commit
3824af0f12
38 files changed
+2398
-3552
No files matched your search
@@ -0,0 +1,48 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user