From 480ff620ca6d8f32926366131037f0e4954f67b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sat, 21 Mar 2026 12:58:03 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[=EA=B3=B5=EC=A0=95=EA=B4=80=EB=A6=AC]?= =?UTF-8?q?=20=ED=92=88=EB=AA=A9=20=EC=A0=84=EC=B2=B4=20=EC=82=AD=EC=A0=9C?= =?UTF-8?q?=20=EB=B2=84=ED=8A=BC=20=EC=B6=94=EA=B0=80=20(=EB=93=B1?= =?UTF-8?q?=EB=A1=9D/=EC=88=98=EC=A0=95/=EC=83=81=EC=84=B8=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process-management/ProcessDetail.tsx | 23 +++++++++++++++++++ .../process-management/ProcessForm.tsx | 20 ++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/src/components/process-management/ProcessDetail.tsx b/src/components/process-management/ProcessDetail.tsx index e4f11a99..3b91dfeb 100644 --- a/src/components/process-management/ProcessDetail.tsx +++ b/src/components/process-management/ProcessDetail.tsx @@ -86,6 +86,18 @@ export function ProcessDetail({ process, onProcessUpdate }: ProcessDetailProps) } }; + // 품목 전체 삭제 + const handleRemoveAllItems = async () => { + if (!confirm(`등록된 품목 ${itemCount}개를 모두 삭제하시겠습니까?`)) return; + const result = await removeProcessItem(process.id, []); + if (result.success && result.data) { + toast.success('품목이 모두 제거되었습니다.'); + onProcessUpdate?.(result.data); + } else { + toast.error(result.error || '품목 전체 제거에 실패했습니다.'); + } + }; + const [isDuplicating, setIsDuplicating] = useState(false); // 공정 복제 @@ -278,6 +290,17 @@ export function ProcessDetail({ process, onProcessUpdate }: ProcessDetailProps) + {itemCount > 0 && ( + + )}

품목을 선택하면 이 공정으로 분류됩니다 diff --git a/src/components/process-management/ProcessForm.tsx b/src/components/process-management/ProcessForm.tsx index 12fb6a53..9b98d513 100644 --- a/src/components/process-management/ProcessForm.tsx +++ b/src/components/process-management/ProcessForm.tsx @@ -142,6 +142,14 @@ export function ProcessForm({ mode, initialData }: ProcessFormProps) { ); }, []); + // 품목 전체 삭제 + const handleRemoveAllItems = useCallback(() => { + if (!confirm(`등록된 품목 ${itemCount}개를 모두 삭제하시겠습니까?`)) return; + setClassificationRules((prev) => + prev.filter((rule) => rule.registrationType !== 'individual') + ); + }, [itemCount]); + // 부서 목록 + 문서양식 목록 로드 useEffect(() => { const loadInitialData = async () => { @@ -598,6 +606,18 @@ export function ProcessForm({ mode, initialData }: ProcessFormProps) { > 공정 품목 선택 + {itemCount > 0 && ( + + )}

품목을 선택하면 이 공정으로 분류됩니다