From b75b1cd920efd61923f7b2dbc4c49987b7b0c4e1 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Thu, 20 Nov 2025 10:25:41 +0000 Subject: (최겸) 구매 입찰 수정 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../selectors/wbs-code/wbs-code-selector.tsx | 30 +++++++++++++++++++- .../wbs-code/wbs-code-single-selector.tsx | 33 ++++++++++++++++++++-- 2 files changed, 60 insertions(+), 3 deletions(-) (limited to 'components/common/selectors/wbs-code') diff --git a/components/common/selectors/wbs-code/wbs-code-selector.tsx b/components/common/selectors/wbs-code/wbs-code-selector.tsx index b701d090..aa5a6a64 100644 --- a/components/common/selectors/wbs-code/wbs-code-selector.tsx +++ b/components/common/selectors/wbs-code/wbs-code-selector.tsx @@ -15,7 +15,7 @@ import { useState, useCallback, useMemo, useTransition } from 'react' import { Button } from '@/components/ui/button' import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog' import { Input } from '@/components/ui/input' -import { Search, Check } from 'lucide-react' +import { Search, Check, X } from 'lucide-react' import { ColumnDef, flexRender, @@ -80,8 +80,20 @@ export function WbsCodeSelector({ // WBS 코드 선택 핸들러 const handleCodeSelect = useCallback(async (code: WbsCode) => { + // 이미 선택된 코드를 다시 선택하면 선택 해제 + if (selectedCode && selectedCode.PROJ_NO === code.PROJ_NO && selectedCode.WBS_ELMT === code.WBS_ELMT) { + onCodeSelect(undefined as any) // 선택 해제를 위해 undefined 전달 + setOpen(false) + return + } + onCodeSelect(code) setOpen(false) + }, [onCodeSelect, selectedCode]) + + // 선택 해제 핸들러 + const handleClearSelection = useCallback(() => { + onCodeSelect(undefined as any) // 선택 해제를 위해 undefined 전달 }, [onCodeSelect]) // 테이블 컬럼 정의 @@ -208,6 +220,17 @@ export function WbsCodeSelector({ [{selectedCode.PROJ_NO}] {selectedCode.WBS_ELMT} {selectedCode.WBS_ELMT_NM} + ) : ( {placeholder} @@ -273,6 +296,11 @@ export function WbsCodeSelector({ )} ))} + {selectedCode && selectedCode.PROJ_NO === row.original.PROJ_NO && selectedCode.WBS_ELMT === row.original.WBS_ELMT && ( + + (선택됨) + + )} )) ) : ( diff --git a/components/common/selectors/wbs-code/wbs-code-single-selector.tsx b/components/common/selectors/wbs-code/wbs-code-single-selector.tsx index 34cbc975..77a32afe 100644 --- a/components/common/selectors/wbs-code/wbs-code-single-selector.tsx +++ b/components/common/selectors/wbs-code/wbs-code-single-selector.tsx @@ -75,13 +75,25 @@ export function WbsCodeSingleSelector({ // WBS 코드 선택 핸들러 const handleCodeSelect = useCallback((code: WbsCode) => { + // 이미 선택된 코드를 다시 선택하면 선택 해제 + const currentSelected = showConfirmButtons ? tempSelectedCode : selectedCode + if (currentSelected && currentSelected.WBS_ELMT === code.WBS_ELMT && currentSelected.PROJ_NO === code.PROJ_NO) { + if (showConfirmButtons) { + setTempSelectedCode(undefined) + } else { + onCodeSelect(undefined as any) + onOpenChange(false) + } + return + } + if (showConfirmButtons) { setTempSelectedCode(code) } else { onCodeSelect(code) onOpenChange(false) } - }, [onCodeSelect, onOpenChange, showConfirmButtons]) + }, [onCodeSelect, onOpenChange, showConfirmButtons, selectedCode, tempSelectedCode]) // 확인 버튼 핸들러 const handleConfirm = useCallback(() => { @@ -237,7 +249,24 @@ export function WbsCodeSingleSelector({ {/* 현재 선택된 WBS 코드 표시 */} {currentSelectedCode && (
-
선택된 WBS 코드:
+
+ 선택된 WBS 코드: + +
[{currentSelectedCode.PROJ_NO}] {currentSelectedCode.WBS_ELMT} -- cgit v1.2.3