From b43b1d92ef3d7e57b5df5cd72f75dc3a1c3f1c7a Mon Sep 17 00:00:00 2001 From: joonhoekim <26rote@gmail.com> Date: Thu, 27 Nov 2025 13:48:44 +0900 Subject: (김준회) swp 파일 개수 컬럼 삭제 (API에서 주지 않는 데이터), dolce rebuild 에서 상태값 수정, bulk upload MatchBatchFileDwg API 사용해 Edit 으로 보내도록 수정 (Category, status 하드코딩 값 넣어주도록 처리), 상세도면, 파일 추가시 확인 다이얼로그 추가 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../add-and-modify-detail-drawing-dialog.tsx | 415 ++++++++++++--------- 1 file changed, 244 insertions(+), 171 deletions(-) (limited to 'lib/dolce/dialogs/add-and-modify-detail-drawing-dialog.tsx') diff --git a/lib/dolce/dialogs/add-and-modify-detail-drawing-dialog.tsx b/lib/dolce/dialogs/add-and-modify-detail-drawing-dialog.tsx index 673d48d6..0253228b 100644 --- a/lib/dolce/dialogs/add-and-modify-detail-drawing-dialog.tsx +++ b/lib/dolce/dialogs/add-and-modify-detail-drawing-dialog.tsx @@ -72,6 +72,8 @@ export function AddAndModifyDetailDrawingDialog({ const [comment, setComment] = useState(""); const [isSubmitting, setIsSubmitting] = useState(false); + const [showConfirmation, setShowConfirmation] = useState(false); + // Edit 모드일 때 초기값 설정 useEffect(() => { if (mode === "edit" && detailDrawing && open) { @@ -155,9 +157,10 @@ export function AddAndModifyDetailDrawingDialog({ setRevisionError(""); setComment(""); clearFiles(); + setShowConfirmation(false); }; - // 제출 + // 제출 (확인 단계 포함) const handleSubmit = async () => { // 유효성 검사 if (!registerKind) { @@ -200,6 +203,12 @@ export function AddAndModifyDetailDrawingDialog({ return; } + // 확인 단계가 아니면 확인 단계로 이동 + if (!showConfirmation) { + setShowConfirmation(true); + return; + } + try { setIsSubmitting(true); @@ -212,7 +221,7 @@ export function AddAndModifyDetailDrawingDialog({ dwgList: [ { Mode: "ADD", - Status: "Submitted", + Status: "Standby", RegisterId: 0, ProjectNo: drawing.ProjectNo, Discipline: drawing.Discipline, @@ -329,8 +338,12 @@ export function AddAndModifyDetailDrawingDialog({ }; const handleCancel = () => { - resetForm(); - onOpenChange(false); + if (showConfirmation) { + setShowConfirmation(false); + } else { + resetForm(); + onOpenChange(false); + } }; // DrawingUsage가 변경되면 RegisterKind 초기화 @@ -355,219 +368,279 @@ export function AddAndModifyDetailDrawingDialog({ return ( - + - {mode === "edit" ? t("editDetailDialog.title") : t("addDetailDialog.title")} + {showConfirmation + ? t("addDetailDialog.confirmTitle", "확인") + : (mode === "edit" ? t("editDetailDialog.title") : t("addDetailDialog.title")) + } -
- {/* 도면 정보 표시 */} - {mode === "add" && drawing && ( + {showConfirmation ? ( +
-
{drawing.DrawingNo}
-
{drawing.DrawingName}
+ {t("addDetailDialog.confirmMessage", "아래 내용으로 제출하시겠습니까?")}
- )} - {mode === "edit" && detailDrawing && ( - - - -
{detailDrawing.DrawingNo} - Rev. {detailDrawing.DrawingRevNo}
-
{detailDrawing.DrawingName}
-
-
- )} +
+
+ +

+ {drawingUsageOptions.find(opt => opt.value === drawingUsage)?.label || drawingUsage} +

+
+
+ +

+ {registerKindOptions.find(opt => opt.value === registerKind)?.label || registerKind} +

+
+ {drawingUsage !== "CMT" && ( +
+ +

{revision}

+
+ )} +
+ +

{comment || "-"}

+
+
+ + {files.length > 0 && ( +
+ +
+ {isSubmitting ? ( + + ) : ( + files.map((file, index) => ( +
+ + {file.name} + + {(file.size / 1024 / 1024).toFixed(2)} MB + +
+ )) + )} +
+
+ )} +
+ ) : ( +
+ {/* 도면 정보 표시 */} + {mode === "add" && drawing && ( + + + +
{drawing.DrawingNo}
+
{drawing.DrawingName}
+
+
+ )} + + {mode === "edit" && detailDrawing && ( + + + +
{detailDrawing.DrawingNo} - Rev. {detailDrawing.DrawingRevNo}
+
{detailDrawing.DrawingName}
+
+
+ )} - {/* 도면용도 선택 (Add 모드에서만 표시) */} - {mode === "add" && ( + {/* 도면용도 선택 (Add 모드에서만 표시) */} + {mode === "add" && ( +
+ + +
+ )} + + {/* 등록종류 선택 */}
- - - + - {drawingUsageOptions.map((option) => ( + {registerKindOptions.map((option) => ( {option.label} ))} + {revisionRule && ( +

+ {t("addDetailDialog.revisionFormatPrefix")}{revisionRule} +

+ )}
- )} - - {/* 등록종류 선택 */} -
- - - {revisionRule && ( -

- {t("addDetailDialog.revisionFormatPrefix")}{revisionRule} -

+ + {/* Revision 입력 */} + {drawingUsage !== "CMT" && ( +
+ + handleRevisionChange(e.target.value)} + placeholder={t("addDetailDialog.revisionPlaceholder")} + disabled={!registerKind} + className={revisionError ? "border-red-500 focus-visible:ring-red-500" : ""} + /> + {revisionError && ( +

+ {revisionError} +

+ )} + {!revisionError && revision && ( +

+ {t("addDetailDialog.revisionValid")} +

+ )} +
)} -
- {/* Revision 입력 */} - {drawingUsage !== "CMT" && ( + {/* Comment 입력 */}
- - handleRevisionChange(e.target.value)} - placeholder={t("addDetailDialog.revisionPlaceholder")} - disabled={!registerKind} - className={revisionError ? "border-red-500 focus-visible:ring-red-500" : ""} + +