| ¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | /** ä¸ Web approvalModuleRegistry ä¸è´ */ |
| | | export const APPROVAL_MODULE_KEYS = { |
| | | REGULAR: "regular", |
| | | TRANSFER: "transfer", |
| | | WORK_HANDOVER: "work_handover", |
| | | LEAVE: "leave", |
| | | OVERTIME: "overtime", |
| | | TRAVEL_REIMBURSE: "travel_reimburse", |
| | | COST_REIMBURSE: "cost_reimburse", |
| | | ENTERPRISE_NEWS: "enterprise_news", |
| | | }; |
| | | |
| | | /** 审æ¹å®ä¾ listPage businessTypeï¼ä¸å端约å®ä¸è´ï¼ */ |
| | | export const APPROVAL_BUSINESS_TYPE = { |
| | | [APPROVAL_MODULE_KEYS.REGULAR]: 10, |
| | | [APPROVAL_MODULE_KEYS.TRANSFER]: 11, |
| | | [APPROVAL_MODULE_KEYS.WORK_HANDOVER]: 13, |
| | | [APPROVAL_MODULE_KEYS.LEAVE]: 14, |
| | | [APPROVAL_MODULE_KEYS.OVERTIME]: 15, |
| | | [APPROVAL_MODULE_KEYS.TRAVEL_REIMBURSE]: 16, |
| | | [APPROVAL_MODULE_KEYS.COST_REIMBURSE]: 17, |
| | | [APPROVAL_MODULE_KEYS.ENTERPRISE_NEWS]: 18, |
| | | }; |
| | | |
| | | export const APPROVAL_MODULE_REGISTRY = { |
| | | [APPROVAL_MODULE_KEYS.REGULAR]: { |
| | | label: "转æ£ç³è¯·", |
| | | approvalType: "regular", |
| | | businessType: APPROVAL_BUSINESS_TYPE[APPROVAL_MODULE_KEYS.REGULAR], |
| | | typeLabels: ["转æ£", "转æ£ç³è¯·"], |
| | | listFields: [ |
| | | { label: "审æ¹åå·", prop: "instanceNo" }, |
| | | { label: "å
¥èæ¥æ", prop: "entryDate" }, |
| | | { label: "è½¬æ£æ¥æ", prop: "regularDate" }, |
| | | ], |
| | | }, |
| | | [APPROVAL_MODULE_KEYS.TRANSFER]: { |
| | | label: "è°å²ç³è¯·", |
| | | approvalType: "transfer", |
| | | businessType: APPROVAL_BUSINESS_TYPE[APPROVAL_MODULE_KEYS.TRANSFER], |
| | | typeLabels: ["è°å²", "è°å¨", "è°å²ç³è¯·", "è°å¨ç³è¯·"], |
| | | listFields: [ |
| | | { label: "审æ¹åå·", prop: "instanceNo" }, |
| | | { label: "åå²ä½", prop: "fromPost" }, |
| | | { label: "ç®æ å²ä½", prop: "toPost" }, |
| | | ], |
| | | }, |
| | | [APPROVAL_MODULE_KEYS.WORK_HANDOVER]: { |
| | | label: "å·¥ä½äº¤æ¥", |
| | | approvalType: "work_handover", |
| | | businessType: APPROVAL_BUSINESS_TYPE[APPROVAL_MODULE_KEYS.WORK_HANDOVER], |
| | | typeLabels: ["å·¥ä½äº¤æ¥", "交æ¥", "å·¥ä½äº¤æ¥å®¡æ¹"], |
| | | listFields: [ |
| | | { label: "审æ¹åå·", prop: "instanceNo" }, |
| | | { label: "交æ¥äºº", prop: "handoverTo" }, |
| | | { label: "交æ¥äºé¡¹", prop: "handoverItems" }, |
| | | ], |
| | | }, |
| | | [APPROVAL_MODULE_KEYS.LEAVE]: { |
| | | label: "请åç³è¯·", |
| | | approvalType: "leave", |
| | | businessType: APPROVAL_BUSINESS_TYPE[APPROVAL_MODULE_KEYS.LEAVE], |
| | | typeLabels: ["请å", "请åç³è¯·", "请å审æ¹"], |
| | | listFields: [ |
| | | { label: "审æ¹åå·", prop: "instanceNo" }, |
| | | { label: "请åç±»å", prop: "leaveType" }, |
| | | { label: "å¼å§æ¶é´", prop: "startTime" }, |
| | | { label: "ç»ææ¶é´", prop: "endTime" }, |
| | | ], |
| | | }, |
| | | [APPROVAL_MODULE_KEYS.OVERTIME]: { |
| | | label: "å çç³è¯·", |
| | | approvalType: "overtime", |
| | | businessType: APPROVAL_BUSINESS_TYPE[APPROVAL_MODULE_KEYS.OVERTIME], |
| | | typeLabels: ["å ç", "å çç³è¯·", "å ç审æ¹"], |
| | | listFields: [ |
| | | { label: "审æ¹åå·", prop: "instanceNo" }, |
| | | { label: "å çæ¥æ", prop: "overtimeDate" }, |
| | | { label: "æ¶é¿(å°æ¶)", prop: "hours" }, |
| | | ], |
| | | }, |
| | | [APPROVAL_MODULE_KEYS.TRAVEL_REIMBURSE]: { |
| | | label: "å·®æ
æ¥é", |
| | | approvalType: "travel_reimburse", |
| | | businessType: APPROVAL_BUSINESS_TYPE[APPROVAL_MODULE_KEYS.TRAVEL_REIMBURSE], |
| | | typeLabels: ["å·®æ
", "å·®æ
æ¥é", "åºå·®æ¥é"], |
| | | listFields: [], |
| | | }, |
| | | [APPROVAL_MODULE_KEYS.COST_REIMBURSE]: { |
| | | label: "è´¹ç¨æ¥é", |
| | | approvalType: "cost_reimburse", |
| | | businessType: APPROVAL_BUSINESS_TYPE[APPROVAL_MODULE_KEYS.COST_REIMBURSE], |
| | | typeLabels: ["è´¹ç¨", "è´¹ç¨æ¥é"], |
| | | listFields: [], |
| | | }, |
| | | [APPROVAL_MODULE_KEYS.ENTERPRISE_NEWS]: { |
| | | label: "ä¼ä¸æ°é»", |
| | | approvalType: "enterprise_news", |
| | | businessType: APPROVAL_BUSINESS_TYPE[APPROVAL_MODULE_KEYS.ENTERPRISE_NEWS], |
| | | typeLabels: ["ä¼ä¸æ°é»", "æ°é»", "æ°é»åå¸"], |
| | | listFields: [], |
| | | }, |
| | | }; |
| | | |
| | | 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 APPROVAL_BUSINESS_TYPE[moduleKey] ?? ""; |
| | | } |
| | | |
| | | 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; |
| | | |
| | | const fixed = getModuleListBusinessType(moduleKey); |
| | | if (fixed != null && fixed !== "") return fixed; |
| | | |
| | | 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 null; |
| | | } |
| | | |
| | | export function getModuleMatchingBusinessTypes(moduleKey, typeOptions = []) { |
| | | const cfg = getApprovalModuleConfig(moduleKey); |
| | | if (!cfg) return []; |
| | | |
| | | const fixed = getModuleListBusinessType(moduleKey); |
| | | if (fixed != null && fixed !== "") return [fixed]; |
| | | |
| | | const values = new Set(); |
| | | const primary = resolveModuleBusinessType(moduleKey, typeOptions); |
| | | if (primary != null && primary !== "") values.add(primary); |
| | | |
| | | 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]; |
| | | } |
| | | |
| | | 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, |
| | | "ReimburseManage/travel-reimburse": APPROVAL_MODULE_KEYS.TRAVEL_REIMBURSE, |
| | | "ReimburseManage/cost-reimburse": APPROVAL_MODULE_KEYS.COST_REIMBURSE, |
| | | "EnterpriseNews/news-manage": APPROVAL_MODULE_KEYS.ENTERPRISE_NEWS, |
| | | }; |
| | | |
| | | export function getModuleKeyFromPageKey(pageKey) { |
| | | return PAGE_KEY_TO_MODULE[pageKey] || ""; |
| | | } |