Step F9:费用管理(Finance)前端
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import { apiGet, apiPatch, apiPost } from "./axios";
|
||||
import type { AxiosResponse } from "axios";
|
||||
import type { ApiListResponse } from "../types/api";
|
||||
|
||||
export interface FinanceItem {
|
||||
id: string;
|
||||
study_id: string;
|
||||
site_id?: string | null;
|
||||
subject_id?: string | null;
|
||||
visit_id?: string | null;
|
||||
category: string;
|
||||
title: string;
|
||||
description?: string | null;
|
||||
currency: string;
|
||||
amount: number | string;
|
||||
occur_date: string;
|
||||
status: string;
|
||||
submitted_at?: string | null;
|
||||
approved_at?: string | null;
|
||||
rejected_at?: string | null;
|
||||
paid_at?: string | null;
|
||||
approver_id?: string | null;
|
||||
payer_id?: string | null;
|
||||
reject_reason?: string | null;
|
||||
created_by: string;
|
||||
created_at: string;
|
||||
updated_at?: string | null;
|
||||
}
|
||||
|
||||
export interface FinanceSummary {
|
||||
total_amount: number | string;
|
||||
approved_amount: number | string;
|
||||
paid_amount: number | string;
|
||||
submitted_amount?: number | string;
|
||||
count_total: number;
|
||||
count_paid: number;
|
||||
}
|
||||
|
||||
export const fetchFinanceItems = (
|
||||
studyId: string,
|
||||
params?: Record<string, any>
|
||||
): Promise<AxiosResponse<ApiListResponse<FinanceItem>>> =>
|
||||
apiGet(`/api/v1/studies/${studyId}/finance/items/`, { params });
|
||||
|
||||
export const fetchFinanceItem = (studyId: string, itemId: string) =>
|
||||
apiGet<FinanceItem>(`/api/v1/studies/${studyId}/finance/items/${itemId}`);
|
||||
|
||||
export const createFinanceItem = (studyId: string, payload: Record<string, any>) =>
|
||||
apiPost<FinanceItem>(`/api/v1/studies/${studyId}/finance/items`, payload);
|
||||
|
||||
export const updateFinanceItem = (studyId: string, itemId: string, payload: Record<string, any>) =>
|
||||
apiPatch<FinanceItem>(`/api/v1/studies/${studyId}/finance/items/${itemId}`, payload);
|
||||
|
||||
export const changeFinanceStatus = (
|
||||
studyId: string,
|
||||
itemId: string,
|
||||
payload: { status: string; reject_reason?: string }
|
||||
) => apiPost<FinanceItem>(`/api/v1/studies/${studyId}/finance/items/${itemId}/status`, payload);
|
||||
|
||||
export const fetchFinanceSummary = (studyId: string, params?: Record<string, any>) =>
|
||||
apiGet<FinanceSummary | ApiListResponse<FinanceSummary>>(
|
||||
`/api/v1/studies/${studyId}/finance/summary`,
|
||||
{ params }
|
||||
);
|
||||
Reference in New Issue
Block a user