feat(P25-2/P25-3/P26-2/P28-1/P24-2/P29-3): 落地内部OA够用版前端入口与运营页面

关联 Issue: P25-2, P25-3, P25-4, P26-2, P26-4, P28-1, P28-2, P28-3, P28-4, P24-2, P29-3
这个提交包含在:
2026-03-21 18:03:48 +08:00
父节点 e39e41287e
当前提交 9905c1c79d
共修改 44 个文件,包含 2029 行新增和 169 行删除
+11
查看文件
@@ -1,4 +1,5 @@
import { apiRequestData } from "./http";
import type { PrecheckResponse, RiskFlag } from "./feeControl";
export type TravelRequestStatus = "draft" | "reviewing" | "approved" | "rejected";
export type TravelTripType = "domestic" | "international";
@@ -108,6 +109,7 @@ export type TravelRequestDetail = TravelRequestSummary & {
canWithdraw: boolean;
canManage: boolean;
};
riskFlags: RiskFlag[];
};
export type TravelRequestListResponse = {
@@ -160,6 +162,8 @@ export type TravelRequestSubmitResponse = {
reservedAmount?: string;
items?: Array<{ budgetPoolId: string; amount: string }>;
};
precheckDecision: "pass" | "warn" | "manual_review";
openedRiskFlagCount: number;
};
export type TravelRequestWithdrawResponse = {
@@ -209,6 +213,13 @@ export async function updateTravelRequest(travelRequestId: string, payload: Part
});
}
export async function precheckTravelRequest(travelRequestId: string) {
return apiRequestData<PrecheckResponse>(`/api/travel-requests/${travelRequestId}/precheck`, {
method: "POST",
body: JSON.stringify({}),
});
}
export async function submitTravelRequest(travelRequestId: string) {
return apiRequestData<TravelRequestSubmitResponse>(`/api/travel-requests/${travelRequestId}/submit`, {
method: "POST",