feat: 完成P6-P8前端能力闭环(V3,D2,D3,B3)
这个提交包含在:
@@ -0,0 +1,62 @@
|
||||
import { apiRequestData } from "./http";
|
||||
|
||||
export async function triggerErpSync(reimbursementId: string, runNow = true) {
|
||||
return apiRequestData<{
|
||||
outboxId: string;
|
||||
status: string;
|
||||
duplicated: boolean;
|
||||
}>(`/api/integrations/erp/sync/${reimbursementId}?runNow=${runNow ? "1" : "0"}`, {
|
||||
method: "POST",
|
||||
body: JSON.stringify({}),
|
||||
});
|
||||
}
|
||||
|
||||
export async function importTravelOrders(payload: {
|
||||
orders: Array<{
|
||||
source: string;
|
||||
externalOrderNo: string;
|
||||
employeeId: string;
|
||||
linkedReimbursementId?: string;
|
||||
occurredAt?: string;
|
||||
amount?: number;
|
||||
currency?: string;
|
||||
}>;
|
||||
}) {
|
||||
return apiRequestData<{
|
||||
requested: number;
|
||||
imported: number;
|
||||
skipped: Array<{ source: string; externalOrderNo: string; reason: string }>;
|
||||
items: Array<{
|
||||
id: string;
|
||||
source: string;
|
||||
externalOrderNo: string;
|
||||
employeeId: string;
|
||||
linkedReimbursementId: string | null;
|
||||
}>;
|
||||
}>(`/api/travel/orders/import`, {
|
||||
method: "POST",
|
||||
body: JSON.stringify(payload),
|
||||
});
|
||||
}
|
||||
|
||||
export async function testNotificationChannel(payload: {
|
||||
channelType: string;
|
||||
name: string;
|
||||
}) {
|
||||
return apiRequestData<{
|
||||
channel: {
|
||||
id: string;
|
||||
channelType: string;
|
||||
name: string;
|
||||
enabled: boolean;
|
||||
};
|
||||
testResult: {
|
||||
ok: boolean;
|
||||
code: string;
|
||||
response?: Record<string, unknown>;
|
||||
};
|
||||
}>(`/api/notifications/channels/test`, {
|
||||
method: "POST",
|
||||
body: JSON.stringify(payload),
|
||||
});
|
||||
}
|
||||
在新工单中引用
屏蔽一个用户