feat(clinical-web): 添加管理端与工作台 API 模块及类型定义
This commit is contained in:
@@ -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)
|
||||
}
|
||||
Reference in New Issue
Block a user