ec-admin/src/pages/ltc/elder/constants.ts
liuyun 8975a7dd63 feat(c1): 服务对象列表/建档/详情/状态变更
- elder api 封装(RESTful /elder 六接口)+ 十态常量与日期格式化
- 列表页用 ty-crud(姓名/性别/护理等级/待遇状态/出生日期 + 姓名·状态筛选)
- 建档表单(身份证 18 位校验+出生日期带出、等级绑定评估结论副本联动校验)
- 详情弹窗(完整信息 + 十态状态变更 + 状态日志时间线)
- ty-crud 增 showCreate、ty-dialog 注入 dialog-id 以支持自定义建档与自关闭详情

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-10-14 18:56:14 +08:00

85 lines
3.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<string, { label: string; type: TagType }> = {
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())}`
}