feat: 完成 F18 审批规则维护(API+前端)\n\n- 新增 /api/approval-rules 管理接口(system.settings)并写审计\n- 前端新增审批规则页与菜单入口(system.settings)\n- 更新 P5 蓝图 v3 中 F18 状态为 DONE
这个提交包含在:
@@ -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),
|
||||
});
|
||||
}
|
||||
|
||||
在新工单中引用
屏蔽一个用户