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
@@ -0,0 +1,60 @@
import { request } from '@/utils/request'
import type { DocumentListResponse, DocumentQuery, DocumentRecord } from './types'
const useMockData = import.meta.env.VITE_USE_MOCK !== 'false'
const mockRecords: DocumentRecord[] = [
{
id: 'doc-001',
name: '住院患者知情同意书',
category: '住院',
version: 'V2.1',
status: 'published',
updatedBy: '张文静',
updatedAt: '2026-08-26 17:20',
},
{
id: 'doc-002',
name: '急诊留观知情同意书',
category: '急诊',
version: 'V1.3',
status: 'published',
updatedBy: '张文静',
updatedAt: '2026-08-25 10:15',
},
]
export function getDocuments(query: DocumentQuery): Promise<DocumentListResponse> {
if (!useMockData) {
return request.get<DocumentListResponse>('/management/documents', {
params: query,
})
}
const keyword = query.keyword?.trim().toLowerCase()
const filteredRecords = mockRecords.filter((record) => {
const matchesKeyword = !keyword || record.name.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 getDocumentDetail(id: string): Promise<DocumentRecord | null> {
if (!useMockData) {
return request.get<DocumentRecord>('/management/documents/' + id)
}
return Promise.resolve(mockRecords.find((record) => record.id === id) ?? null)
}