文件
hyb-oa/client/src/api/approvalRules.ts
T

69 行
1.7 KiB
TypeScript

import { apiRequestData } from "./http";
export type ApprovalRoleCode =
| "employee"
| "manager"
| "ceo"
| "finance"
| "finance_mgr"
| "administration"
| "hr"
| "admin";
export type ApprovalRule = {
id: string;
name: string;
minAmount: string;
maxAmount: string | null;
level1Role: ApprovalRoleCode;
level2Role: ApprovalRoleCode | null;
level3Role: ApprovalRoleCode | null;
enabled: boolean;
priority: number;
createdAt: string | null;
updatedAt: string | null;
};
export type ApprovalRulesListResponse = {
enabled: boolean | null;
items: ApprovalRule[];
};
export async function fetchApprovalRules(params?: { enabled?: boolean }) {
const qs = new URLSearchParams();
if (params?.enabled != null) {
qs.set("enabled", params.enabled ? "true" : "false");
}
const query = qs.toString();
return apiRequestData<ApprovalRulesListResponse>(`/api/approval-rules${query ? `?${query}` : ""}`);
}
export type ApprovalRuleCreatePayload = {
name: string;
minAmount: string;
maxAmount: string | null;
level1Role: ApprovalRoleCode;
level2Role: ApprovalRoleCode | null;
level3Role: ApprovalRoleCode | null;
enabled?: boolean;
priority?: number;
};
export async function createApprovalRule(payload: ApprovalRuleCreatePayload) {
return apiRequestData<ApprovalRule>("/api/approval-rules", {
method: "POST",
body: JSON.stringify(payload),
});
}
export type ApprovalRulePatchPayload = Partial<ApprovalRuleCreatePayload>;
export async function patchApprovalRule(approvalRuleId: string, payload: ApprovalRulePatchPayload) {
return apiRequestData<ApprovalRule>(`/api/approval-rules/${approvalRuleId}`, {
method: "PATCH",
body: JSON.stringify(payload),
});
}