export function formatInboundNumber(value: number | null | undefined, maximumFractionDigits = 3) { if (value === null || value === undefined || !Number.isFinite(value)) return '-' return new Intl.NumberFormat('zh-CN', { maximumFractionDigits }).format(value) } export function formatInboundMeasure(value: number | null | undefined, unit: string, maximumFractionDigits = 3) { const formatted = formatInboundNumber(value, maximumFractionDigits) return formatted === '-' ? formatted : `${formatted} ${unit}` } export function formatInboundMoney(value: number | null | undefined, currency: string) { if (value === null || value === undefined || !Number.isFinite(value)) return '-' try { return new Intl.NumberFormat('zh-CN', { style: 'currency', currency, minimumFractionDigits: 2, maximumFractionDigits: 2, }).format(value) } catch { return `${currency} ${value.toFixed(2)}` } } export function formatInboundDateTime(value: string | null | undefined) { if (!value) return '-' const date = new Date(value) if (Number.isNaN(date.getTime())) return value return new Intl.DateTimeFormat('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', hour12: false, }).format(date) } export function getChargeModeLabel(value: 'KG' | 'CBM') { return value === 'KG' ? '按重量计费' : '按体积计费' } export function getTaxModeLabel(value: string) { if (value === 'TAX_INCLUDED') return '包税' if (value === 'TAX_EXCLUDED') return '不包税' return value || '-' } export function getRoundingModeLabel(value: string | null | undefined) { const labels: Record = { UP: '向上舍入', DOWN: '向下舍入', CEILING: '向上取整', FLOOR: '向下取整', HALF_UP: '四舍五入', HALF_DOWN: '五舍六入', HALF_EVEN: '银行家舍入', } return value ? labels[value] || value : '-' } export function formatConversionPrecision( conversionFactor: number | null | undefined, roundingScale: number | null | undefined, roundingMode: string | null | undefined, ) { if (conversionFactor === null || conversionFactor === undefined || roundingScale === null || roundingScale === undefined || !roundingMode) return '-' return `系数 ${formatInboundNumber(conversionFactor)} · 保留 ${roundingScale} 位 ${getRoundingModeLabel(roundingMode)}` }