diff --git a/fe-admin/src/pages/system/ApprovalWorkflowsV2Page.tsx b/fe-admin/src/pages/system/ApprovalWorkflowsV2Page.tsx index 922e36e..211a868 100644 --- a/fe-admin/src/pages/system/ApprovalWorkflowsV2Page.tsx +++ b/fe-admin/src/pages/system/ApprovalWorkflowsV2Page.tsx @@ -60,6 +60,13 @@ type DefinitionDto = { description: string | null isActive: boolean isUserSelectable: boolean // Mig 25 — admin toggle cho user pick + // Mig 28 (S21 t4) — 6 advanced options per workflow version + allowReturnOneLevel: boolean + allowReturnOneStep: boolean + allowReturnToAssignee: boolean + allowReturnToDrafter: boolean // default true backward compat S17 + allowDrafterSkipToFinal: boolean + allowApproverEditDetails: boolean activatedAt: string | null createdAt: string steps: StepDto[] @@ -445,6 +452,15 @@ function Designer({ const [description, setDescription] = useState(cloneFrom?.description ?? '') const [steps, setSteps] = useState(initialSteps) + // Mig 28 (S21 t4) — 6 advanced options. Default clone từ cloneFrom (giữ + // config version trước) hoặc backward compat S17 (chỉ Drafter mode). + const [allowReturnOneLevel, setAllowReturnOneLevel] = useState(cloneFrom?.allowReturnOneLevel ?? false) + const [allowReturnOneStep, setAllowReturnOneStep] = useState(cloneFrom?.allowReturnOneStep ?? false) + const [allowReturnToAssignee, setAllowReturnToAssignee] = useState(cloneFrom?.allowReturnToAssignee ?? false) + const [allowReturnToDrafter, setAllowReturnToDrafter] = useState(cloneFrom?.allowReturnToDrafter ?? true) + const [allowDrafterSkipToFinal, setAllowDrafterSkipToFinal] = useState(cloneFrom?.allowDrafterSkipToFinal ?? false) + const [allowApproverEditDetails, setAllowApproverEditDetails] = useState(cloneFrom?.allowApproverEditDetails ?? false) + const usersList = useQuery({ queryKey: ['users-for-approver-v2'], queryFn: async () => @@ -503,6 +519,13 @@ function Designer({ approverUserId: e.approverUserId, })), })), + // Mig 28 (S21 t4) — 6 advanced options + allowReturnOneLevel, + allowReturnOneStep, + allowReturnToAssignee, + allowReturnToDrafter, + allowDrafterSkipToFinal, + allowApproverEditDetails, }) }, onSuccess: () => { @@ -561,6 +584,118 @@ function Designer({ + {/* Mig 28 (S21 t4) — Section Cấu hình nâng cao (F1+F2+F3 advanced options). + 6 checkbox per workflow: 4 mode Trả lại + 1 Skip CEO + 1 Approver edit. */} +
+ +

+ Bật/tắt mode duyệt mở rộng cho workflow này. Mặc định chỉ "Trả về Người soạn thảo" enabled + (tương thích quy trình cũ). Các mode khác opt-in để audit nghiêm. +

+ +
+
+
+ Mode Trả lại (Approver chọn khi nhấn ← Trả lại) +
+
+ + + + +
+
+ +
+
+ Drafter gửi duyệt (Workspace "Lưu & Gửi Duyệt") +
+ +
+ +
+
+ Approver chỉnh sửa phiếu +
+ +
+
+
+