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> { const params: Record = { page: query.page, pageSize: query.pageSize } if (query.name) params.name = query.name if (query.treatStatus) params.treatStatus = query.treatStatus return http.get>('/elder', { params, signal }) } /** 建档。 */ export function createElder(data: ElderCreateData): Promise { return http.post('/elder', data) } /** 详情(admin/qc 身份证明文并留痕,其余掩码)。 */ export function getElder(id: string): Promise { return http.get(`/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 { return http.get(`/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) }