/** * 通用格式化工具(asset 台账视图与告警页共用) */ // 日期:YYYY-MM-DD(兼容 ISO 字符串 / Date) export function fmtDate(value) { if (!value) return '-' const d = new Date(value) if (Number.isNaN(d.getTime())) return String(value) const pad = (n) => String(n).padStart(2, '0') return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}` } // 日期时间:YYYY-MM-DD HH:mm:ss export function fmtDateTime(value) { if (!value) return '-' const d = new Date(value) if (Number.isNaN(d.getTime())) return String(value) const pad = (n) => String(n).padStart(2, '0') return `${fmtDate(d)} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}` } // 文件大小(字节 → 可读单位) export function fmtFileSize(bytes) { if (bytes == null || bytes === '' || Number.isNaN(Number(bytes))) return '-' const n = Number(bytes) if (n < 1024) return `${n} B` if (n < 1024 * 1024) return `${(n / 1024).toFixed(1)} KB` if (n < 1024 * 1024 * 1024) return `${(n / 1024 / 1024).toFixed(1)} MB` return `${(n / 1024 / 1024 / 1024).toFixed(2)} GB` } // 是否已逾期(日期早于今天且非空) export function isOverdue(value) { if (!value) return false const d = new Date(value) if (Number.isNaN(d.getTime())) return false const today = new Date() today.setHours(0, 0, 0, 0) d.setHours(0, 0, 0, 0) return d.getTime() < today.getTime() }