未知(继上次中断)

This commit is contained in:
Cheng Zhou
2026-02-04 10:52:34 +08:00
parent 8e258d21a7
commit 737f84bf54
99 changed files with 5497 additions and 2143 deletions
+17
View File
@@ -1,6 +1,17 @@
import { apiGet } from "./axios";
import type { ApiListResponse } from "../types/api";
import { VisitLostItem } from "../types/visits";
export interface CenterSummaryItem {
id: string;
name: string;
stage: string;
stage_status?: string;
actual_enrolled: number;
planned_enrolled: number;
}
export const fetchProgress = (studyId: string) =>
apiGet(`/api/v1/studies/${studyId}/dashboard/progress`);
@@ -9,3 +20,9 @@ export const fetchFinanceSummary = (studyId: string) =>
export const fetchOverdueAesCount = (studyId: string) =>
apiGet<ApiListResponse<any>>(`/api/v1/studies/${studyId}/aes/`, { params: { overdue: true, limit: 1 } });
export const fetchLostVisits = (studyId: string, params?: Record<string, any>) =>
apiGet<VisitLostItem[]>(`/api/v1/studies/${studyId}/dashboard/lost-visits`, { params });
export const fetchCenterSummary = (studyId: string) =>
apiGet<CenterSummaryItem[]>(`/api/v1/studies/${studyId}/dashboard/center-summary`);
+2 -17
View File
@@ -6,7 +6,6 @@ import type {
DocumentDetail,
DocumentSummary,
DocumentVersion,
WorkflowTemplate,
} from "../types/documents";
export const fetchDocuments = (params: Record<string, any>) =>
@@ -26,31 +25,17 @@ export const uploadDocumentVersion = (documentId: string, payload: FormData) =>
headers: { "Content-Type": "multipart/form-data" },
});
export const submitVersion = (versionId: string, payload: { template_id: string; comment?: string }) =>
apiPost<DocumentVersion>(`/api/v1/versions/${versionId}/submit`, payload);
export const approveVersion = (versionId: string, payload: { comment?: string }) =>
apiPost<DocumentVersion>(`/api/v1/versions/${versionId}/approve`, payload);
export const rejectVersion = (versionId: string, payload: { comment?: string }) =>
apiPost<DocumentVersion>(`/api/v1/versions/${versionId}/reject`, payload);
export const makeVersionEffective = (versionId: string) =>
apiPost<DocumentVersion>(`/api/v1/versions/${versionId}/make-effective`);
export const downloadDocumentVersion = (versionId: string) =>
apiGet<Blob>(`/api/v1/versions/${versionId}/download`, {
responseType: "blob",
});
export const listWorkflowTemplates = (params?: { trial_id?: string }) =>
apiGet<WorkflowTemplate[]>(`/api/v1/workflow-templates`, { params });
export const deleteDocumentVersion = (versionId: string) =>
apiDelete(`/api/v1/versions/${versionId}`);
export const listDistributions = (versionId: string) =>
apiGet<Distribution[]>(`/api/v1/versions/${versionId}/distributions`);
export const createDistributions = (versionId: string, payload: Record<string, any>) =>
apiPost<Distribution[]>(`/api/v1/versions/${versionId}/distributions`, payload);
export const createAcknowledgement = (distributionId: string, payload: { ack_type: string; evidence?: string }) =>
apiPost<Acknowledgement>(`/api/v1/distributions/${distributionId}/acknowledgements`, payload);
+5
View File
@@ -0,0 +1,5 @@
import { apiGet } from "./axios";
import type { NotificationItem } from "../types/notifications";
export const listNotifications = (studyId: string, params?: Record<string, any>) =>
apiGet<NotificationItem[]>(`/api/v1/studies/${studyId}/notifications`, { params });