feat: 完成 F18 审批规则维护(API+前端)\n\n- 新增 /api/approval-rules 管理接口(system.settings)并写审计\n- 前端新增审批规则页与菜单入口(system.settings)\n- 更新 P5 蓝图 v3 中 F18 状态为 DONE

这个提交包含在:
2026-02-09 19:20:53 +08:00
父节点 38b66b01a6
当前提交 2c58061ec7
共修改 7 个文件,包含 892 行新增和 1 行删除
+68
查看文件
@@ -0,0 +1,68 @@
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),
});
}