feat(clinical-web): 添加管理端与工作台 API 模块及类型定义

This commit is contained in:
yelan
2026-08-27 15:35:36 +08:00
parent c89cc6f95b
commit 24d8a9ece1
22 changed files with 797 additions and 17 deletions
+83
View File
@@ -0,0 +1,83 @@
import { request } from '@/utils/request'
import type { SigningTaskListResponse, SigningTaskQuery, SigningTaskRecord } from './types'
const useMockData = import.meta.env.VITE_USE_MOCK !== 'false'
const mockRecords: SigningTaskRecord[] = [
{
id: 'task-001',
patientName: '李某某',
visitNo: 'ZY20260827001',
documentName: '住院患者知情同意书',
department: '消化内科',
status: 'pending',
signerName: '李某某',
source: '电子病历',
expiresAt: '2026-08-28 09:30',
updatedAt: '2026-08-27 09:30',
},
{
id: 'task-002',
patientName: '王某某',
visitNo: 'JZ20260827018',
documentName: '急诊留观知情同意书',
department: '儿科急诊',
status: 'signed',
signerName: '王某某家属',
source: '工作台发起',
expiresAt: '2026-08-27 18:00',
updatedAt: '2026-08-27 09:12',
},
{
id: 'task-003',
patientName: '赵某某',
visitNo: 'ZY20260826027',
documentName: '内镜检查知情同意书',
department: '消化内科',
status: 'rejected',
signerName: '赵某某家属',
source: '电子病历',
expiresAt: '2026-08-27 16:00',
updatedAt: '2026-08-27 08:45',
},
]
export function getSigningTasks(query: SigningTaskQuery): Promise<SigningTaskListResponse> {
if (!useMockData) {
return request.get<SigningTaskListResponse>('/workbench/signing/tasks', {
params: query,
})
}
const keyword = query.keyword?.trim().toLowerCase()
const filteredRecords = mockRecords.filter((record) => {
const matchesKeyword =
!keyword ||
[record.patientName, record.visitNo, record.documentName]
.join(' ')
.toLowerCase()
.includes(keyword)
const matchesStatus = !query.status || query.status === 'all' || record.status === query.status
return matchesKeyword && matchesStatus
})
const page = Math.max(query.page, 1)
const pageSize = Math.max(query.pageSize, 1)
const start = (page - 1) * pageSize
return Promise.resolve({
records: filteredRecords.slice(start, start + pageSize),
total: filteredRecords.length,
page,
pageSize,
})
}
export function getSigningTaskDetail(id: string): Promise<SigningTaskRecord | null> {
if (!useMockData) {
return request.get<SigningTaskRecord>('/workbench/signing/tasks/' + id)
}
return Promise.resolve(mockRecords.find((record) => record.id === id) ?? null)
}