From 93b6b8868d409c7f6c9d9222b93750848caaedde Mon Sep 17 00:00:00 2001 From: dujinkim Date: Fri, 5 Dec 2025 03:28:04 +0000 Subject: (최겸) 구매 입찰 수정 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bidding/create/bidding-create-dialog.tsx | 51 +++++++++++++++------- 1 file changed, 36 insertions(+), 15 deletions(-) (limited to 'components/bidding/create/bidding-create-dialog.tsx') diff --git a/components/bidding/create/bidding-create-dialog.tsx b/components/bidding/create/bidding-create-dialog.tsx index b3972e11..af33f1f6 100644 --- a/components/bidding/create/bidding-create-dialog.tsx +++ b/components/bidding/create/bidding-create-dialog.tsx @@ -63,7 +63,7 @@ import { PurchaseGroupCodeSelector } from '@/components/common/selectors/purchas import { ProcurementManagerSelector } from '@/components/common/selectors/procurement-manager' import type { PurchaseGroupCodeWithUser } from '@/components/common/selectors/purchase-group-code/purchase-group-code-service' import type { ProcurementManagerWithUser } from '@/components/common/selectors/procurement-manager/procurement-manager-service' -import { createBidding } from '@/lib/bidding/service' +import { createBidding, getUserDetails } from '@/lib/bidding/service' import { useSession } from 'next-auth/react' import { useRouter } from 'next/navigation' @@ -97,13 +97,6 @@ export function BiddingCreateDialog({ form, onSuccess }: BiddingCreateDialogProp sparePartOptions: '', }) - // 구매요청자 정보 (현재 사용자) - // React.useEffect(() => { - // // 실제로는 현재 로그인한 사용자의 정보를 가져와야 함 - // // 임시로 기본값 설정 - // form.setValue('requesterName', '김두진') // 실제로는 API에서 가져와야 함 - // }, [form]) - const [shiAttachmentFiles, setShiAttachmentFiles] = React.useState([]) const [vendorAttachmentFiles, setVendorAttachmentFiles] = React.useState([]) @@ -164,13 +157,41 @@ export function BiddingCreateDialog({ form, onSuccess }: BiddingCreateDialogProp React.useEffect(() => { if (isOpen) { - if (userId && session?.user?.name) { - // 현재 사용자의 정보를 임시로 입찰담당자로 설정 - form.setValue('bidPicName', session.user.name) - form.setValue('bidPicId', userId) - // userCode는 현재 세션에 없으므로 이름으로 설정 (실제로는 API에서 가져와야 함) - // form.setValue('bidPicCode', session.user.name) + const initUser = async () => { + if (userId) { + try { + const user = await getUserDetails(userId) + if (user) { + // 현재 사용자의 정보를 입찰담당자로 설정 + form.setValue('bidPicName', user.name) + form.setValue('bidPicId', user.id) + form.setValue('bidPicCode', user.userCode || '') + + // 담당자 selector 상태 업데이트 + setSelectedBidPic({ + PURCHASE_GROUP_CODE: user.userCode || '', + DISPLAY_NAME: user.name, + EMPLOYEE_NUMBER: user.employeeNumber || '', + user: { + id: user.id, + name: user.name, + email: '', + employeeNumber: user.employeeNumber + } + } as any) + } + } catch (error) { + console.error('Failed to fetch user details:', error) + // 실패 시 세션 정보로 폴백 + if (session?.user?.name) { + form.setValue('bidPicName', session.user.name) + form.setValue('bidPicId', userId) + } + } + } } + initUser() + loadPaymentTerms() loadIncoterms() loadShippingPlaces() @@ -181,7 +202,7 @@ export function BiddingCreateDialog({ form, onSuccess }: BiddingCreateDialogProp form.setValue('biddingConditions.taxConditions', 'V1') } } - }, [isOpen, loadPaymentTerms, loadIncoterms, loadShippingPlaces, loadDestinationPlaces, form]) + }, [isOpen, userId, session, form, loadPaymentTerms, loadIncoterms, loadShippingPlaces, loadDestinationPlaces]) // SHI용 파일 첨부 핸들러 const handleShiFileUpload = (event: React.ChangeEvent) => { -- cgit v1.2.3