- elder api 封装(RESTful /elder 六接口)+ 十态常量与日期格式化 - 列表页用 ty-crud(姓名/性别/护理等级/待遇状态/出生日期 + 姓名·状态筛选) - 建档表单(身份证 18 位校验+出生日期带出、等级绑定评估结论副本联动校验) - 详情弹窗(完整信息 + 十态状态变更 + 状态日志时间线) - ty-crud 增 showCreate、ty-dialog 注入 dialog-id 以支持自定义建档与自关闭详情 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
126 lines
3.5 KiB
TypeScript
126 lines
3.5 KiB
TypeScript
import { http } from '@/api/http'
|
||
import type { PageResult } from '@/types/crud'
|
||
|
||
/**
|
||
* 老人档案(elder)实体。字段字典锚点见 shared/data-model spec(ltc_elder)。
|
||
* - 日期字段(birthDate/benefitStart 等)后端经 TransformInterceptor 序列化为毫秒时间戳;
|
||
* - idCardNo 列表返回掩码、详情(admin/qc)返回明文;
|
||
* - assessEvidenceFile 为评估结论副本的 MinIO key。
|
||
*/
|
||
export interface Elder {
|
||
id: string
|
||
locCode?: string
|
||
name: string
|
||
gender: string
|
||
idCardNo: string
|
||
birthDate?: number
|
||
phone?: string | null
|
||
address?: string
|
||
guardianName?: string | null
|
||
guardianPhone?: string | null
|
||
insurNo?: string
|
||
insurType?: string
|
||
insurYears?: number | null
|
||
insurVerifyStatus?: string | null
|
||
insurVerifyDate?: number | null
|
||
assessLevel?: string | null
|
||
careLevel?: string | null
|
||
assessDate?: number | null
|
||
assessOrg?: string | null
|
||
assessEvidenceFile?: string | null
|
||
benefitStart?: number | null
|
||
benefitEnd?: number | null
|
||
treatStatus: string
|
||
statusSource?: string | null
|
||
statusChangeDate?: number | null
|
||
hospStart?: number | null
|
||
hospEnd?: number | null
|
||
note?: string | null
|
||
createdAt?: number
|
||
updatedAt?: number
|
||
}
|
||
|
||
export interface ElderListQuery {
|
||
page: number
|
||
pageSize: number
|
||
name?: string
|
||
treatStatus?: string
|
||
}
|
||
|
||
/** 建档入参(日期字段为 YYYY-MM-DD 字符串,与 staff 建档入参一致)。 */
|
||
export interface ElderCreateData {
|
||
locCode: string
|
||
name: string
|
||
gender: string
|
||
idCardNo: string
|
||
phone?: string
|
||
address: string
|
||
guardianName?: string
|
||
guardianPhone?: string
|
||
insurNo: string
|
||
insurType: string
|
||
insurYears?: number
|
||
insurVerifyStatus?: string
|
||
insurVerifyDate?: string
|
||
assessLevel?: string
|
||
careLevel?: string
|
||
assessDate?: string
|
||
assessOrg?: string
|
||
assessEvidenceFile?: string
|
||
benefitStart?: string
|
||
benefitEnd?: string
|
||
hospStart?: string
|
||
hospEnd?: string
|
||
note?: string
|
||
}
|
||
|
||
export interface ElderStatusLog {
|
||
id: string
|
||
elderId: string
|
||
fromStatus: string
|
||
toStatus: string
|
||
changeReason: string
|
||
source: string
|
||
operatorId: string
|
||
evidenceFile: string | null
|
||
changedAt: number
|
||
}
|
||
|
||
/** 老人分页列表(身份证服务端掩码)。 */
|
||
export function listElders(query: ElderListQuery, signal?: AbortSignal): Promise<PageResult<Elder>> {
|
||
const params: Record<string, unknown> = { page: query.page, pageSize: query.pageSize }
|
||
if (query.name) params.name = query.name
|
||
if (query.treatStatus) params.treatStatus = query.treatStatus
|
||
return http.get<PageResult<Elder>>('/elder', { params, signal })
|
||
}
|
||
|
||
/** 建档。 */
|
||
export function createElder(data: ElderCreateData): Promise<Elder> {
|
||
return http.post<Elder>('/elder', data)
|
||
}
|
||
|
||
/** 详情(admin/qc 身份证明文并留痕,其余掩码)。 */
|
||
export function getElder(id: string): Promise<Elder> {
|
||
return http.get<Elder>(`/elder/${id}`)
|
||
}
|
||
|
||
/** 变更待遇状态(changeReason 必填)。 */
|
||
export function changeElderStatus(
|
||
id: string,
|
||
data: { toStatus: string; changeReason: string },
|
||
): Promise<{ id: string; fromStatus: string; toStatus: string }> {
|
||
return http.post(`/elder/${id}/status`, data)
|
||
}
|
||
|
||
/** 状态变更历史(按时间倒序)。 */
|
||
export function getStatusLog(id: string): Promise<ElderStatusLog[]> {
|
||
return http.get<ElderStatusLog[]>(`/elder/${id}/status/log`)
|
||
}
|
||
|
||
/** 上传评估结论副本到 MinIO,返回 file key。 */
|
||
export function uploadEvidence(file: File): Promise<{ key: string }> {
|
||
const fd = new FormData()
|
||
fd.append('file', file)
|
||
return http.post<{ key: string }>('/elder/assess-evidence', fd)
|
||
}
|