import type { TagType } from '@/types/crud' export interface LabeledValue { label: string value: string } export const GENDER_OPTIONS: LabeledValue[] = [ { label: '男', value: 'M' }, { label: '女', value: 'F' }, ] export const INSURE_TYPE_OPTIONS: LabeledValue[] = [ { label: '职工医保', value: 'employee' }, { label: '居民医保', value: 'resident' }, ] export const INSURE_VERIFY_STATUS_OPTIONS: LabeledValue[] = [ { label: '已核验', value: 'verified' }, { label: '未核验', value: 'unverified' }, ] export const ASSESS_LEVEL_OPTIONS: LabeledValue[] = [ { label: '重度一级(最高级)', value: 'sev_1' }, { label: '重度二级', value: 'sev_2' }, { label: '重度三级', value: 'sev_3' }, ] export const CARE_LEVEL_OPTIONS: LabeledValue[] = [ { label: '一级护理(最高级)', value: 'care_1' }, { label: '二级护理', value: 'care_2' }, { label: '三级护理', value: 'care_3' }, ] /** 待遇状态十态(值唯一来源:后端 elder TREAT_STATUSES)。 */ export const TREAT_STATUS_OPTIONS: LabeledValue[] = [ { label: '待建档', value: 'pending_file' }, { label: '待起付', value: 'waiting_period' }, { label: '正常享受', value: 'active' }, { label: '住院暂停', value: 'hosp_pause' }, { label: '复评等待期', value: 'review_waiting' }, { label: '跨统筹区转移中', value: 'transferring' }, { label: '死亡', value: 'dead' }, { label: '长期异地居住', value: 'long_away' }, { label: '待遇到期', value: 'benefit_expired' }, { label: '已终止', value: 'terminated' }, ] export const TREAT_STATUS_TAG_MAP: Record = { pending_file: { label: '待建档', type: 'info' }, waiting_period: { label: '待起付', type: 'warning' }, active: { label: '正常享受', type: 'success' }, hosp_pause: { label: '住院暂停', type: 'warning' }, review_waiting: { label: '复评等待期', type: 'warning' }, transferring: { label: '跨统筹区转移中', type: 'info' }, dead: { label: '死亡', type: 'danger' }, long_away: { label: '长期异地居住', type: 'info' }, benefit_expired: { label: '待遇到期', type: 'danger' }, terminated: { label: '已终止', type: 'danger' }, } /** 按值取显示名,空值回退 '-'。 */ export function labelOf(options: LabeledValue[], value: unknown): string { if (value == null || value === '') return '-' return options.find((o) => o.value === value)?.label ?? String(value) } /** 毫秒时间戳/日期字符串 → YYYY-MM-DD(供展示)。 */ export function formatDate(value: unknown): string { if (value == null || value === '') return '-' const d = typeof value === 'number' ? new Date(value) : new Date(String(value)) if (Number.isNaN(d.getTime())) return '-' const pad = (n: number) => String(n).padStart(2, '0') return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}` } /** 毫秒时间戳/日期字符串 → YYYY-MM-DD HH:mm(供时间线展示)。 */ export function formatDateTime(value: unknown): string { if (value == null || value === '') return '-' const d = typeof value === 'number' ? new Date(value) : new Date(String(value)) if (Number.isNaN(d.getTime())) return '-' const pad = (n: number) => String(n).padStart(2, '0') return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}` }