/** 与 Web approvalModuleRegistry 一致 */ export const APPROVAL_MODULE_KEYS = { REGULAR: "regular", TRANSFER: "transfer", WORK_HANDOVER: "work_handover", LEAVE: "leave", OVERTIME: "overtime", }; export const APPROVAL_MODULE_REGISTRY = { [APPROVAL_MODULE_KEYS.REGULAR]: { label: "转正申请", approvalType: "regular", typeLabels: ["转正", "转正申请"], listFields: [ { label: "入职日期", prop: "entryDate" }, { label: "转正日期", prop: "regularDate" }, ], }, [APPROVAL_MODULE_KEYS.TRANSFER]: { label: "调岗申请", approvalType: "transfer", typeLabels: ["调岗", "调动", "调岗申请", "调动申请"], listFields: [ { label: "原岗位", prop: "fromPost" }, { label: "目标岗位", prop: "toPost" }, ], }, [APPROVAL_MODULE_KEYS.WORK_HANDOVER]: { label: "工作交接", approvalType: "work_handover", typeLabels: ["工作交接", "交接", "工作交接审批"], listFields: [ { label: "交接人", prop: "handoverTo" }, { label: "交接事项", prop: "handoverItems" }, ], }, [APPROVAL_MODULE_KEYS.LEAVE]: { label: "请假申请", approvalType: "leave", typeLabels: ["请假", "请假申请", "请假审批"], listFields: [ { label: "请假类型", prop: "leaveType" }, { label: "开始时间", prop: "startTime" }, { label: "结束时间", prop: "endTime" }, ], }, [APPROVAL_MODULE_KEYS.OVERTIME]: { label: "加班申请", approvalType: "overtime", typeLabels: ["加班", "加班申请", "加班审批"], listFields: [ { label: "加班日期", prop: "overtimeDate" }, { label: "时长(小时)", prop: "hours" }, ], }, }; export function getApprovalModuleConfig(moduleKey) { if (!moduleKey) return null; return APPROVAL_MODULE_REGISTRY[moduleKey] || null; } export function getModuleListBusinessType(moduleKey) { const cfg = getApprovalModuleConfig(moduleKey); if (!cfg) return ""; if (cfg.businessType != null && cfg.businessType !== "") return cfg.businessType; return cfg.approvalType || ""; } function matchBiz(a, b) { if (a == null || a === "" || b == null || b === "") return false; return a === b || a === Number(b) || Number(a) === b || String(a) === String(b); } export function resolveModuleBusinessType(moduleKey, typeOptions = []) { const cfg = getApprovalModuleConfig(moduleKey); if (!cfg) return null; if (cfg.businessType != null && cfg.businessType !== "") return cfg.businessType; const labels = [cfg.label, ...(cfg.typeLabels || [])].filter(Boolean); const hitByLabel = (typeOptions || []).find(opt => { const optLabel = String(opt?.name || opt?.label || "").trim(); if (!optLabel) return false; return labels.some( l => optLabel === l || optLabel.includes(l) || l.includes(optLabel) ); }); if (hitByLabel?.value != null && hitByLabel.value !== "") return hitByLabel.value; if (cfg.approvalType) { const hitByValue = (typeOptions || []).find( opt => matchBiz(opt?.value, cfg.approvalType) || matchBiz(opt?.code, cfg.approvalType) ); if (hitByValue?.value != null && hitByValue.value !== "") return hitByValue.value; } return cfg.approvalType || null; } export function getModuleMatchingBusinessTypes(moduleKey, typeOptions = []) { const cfg = getApprovalModuleConfig(moduleKey); if (!cfg) return []; const values = new Set(); const primary = resolveModuleBusinessType(moduleKey, typeOptions); if (primary != null && primary !== "") values.add(primary); if (cfg.approvalType) values.add(cfg.approvalType); const labels = [cfg.label, ...(cfg.typeLabels || [])].filter(Boolean); for (const opt of typeOptions || []) { const optLabel = String(opt?.name || opt?.label || "").trim(); if (!optLabel) continue; const matched = labels.some( l => optLabel === l || optLabel.includes(l) || l.includes(optLabel) ); if (matched && opt.value != null && opt.value !== "") { values.add(opt.value); } } return [...values]; } /** 列表页 moduleKey 与路由 pageKey 对照 */ export const PAGE_KEY_TO_MODULE = { "HrManage/regular-apply": APPROVAL_MODULE_KEYS.REGULAR, "HrManage/transfer-apply": APPROVAL_MODULE_KEYS.TRANSFER, "HrManage/work-handover": APPROVAL_MODULE_KEYS.WORK_HANDOVER, "AttendManage/leave-apply": APPROVAL_MODULE_KEYS.LEAVE, "AttendManage/overtime-apply": APPROVAL_MODULE_KEYS.OVERTIME, }; export function getModuleKeyFromPageKey(pageKey) { return PAGE_KEY_TO_MODULE[pageKey] || ""; }