From 4c2d4c235bd80368e31cae9c375e9a585f6a6844 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Thu, 25 Sep 2025 03:28:27 +0000 Subject: (대표님) archiver 추가, 데이터룸구현 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/rfq-last/service.ts | 6 ++-- .../editor/quotation-items-table.tsx | 2 ++ .../editor/vendor-response-editor.tsx | 36 +++++++++++++--------- lib/rfq-last/vendor/rfq-vendor-table.tsx | 2 +- lib/rfq-last/vendor/vendor-detail-dialog.tsx | 10 ++++-- 5 files changed, 35 insertions(+), 21 deletions(-) (limited to 'lib/rfq-last') diff --git a/lib/rfq-last/service.ts b/lib/rfq-last/service.ts index 82f8837a..be8e13e6 100644 --- a/lib/rfq-last/service.ts +++ b/lib/rfq-last/service.ts @@ -357,6 +357,8 @@ export async function createGeneralRfqAction(input: CreateGeneralRfqInput) { // 5. 마감일 기본값 설정 (입력값 없으면 생성일 + 7일) const dueDate = input.dueDate || getDefaultDueDate(); + console.log(dueDate,"dueDate") + // 6. rfqsLast 테이블에 기본 정보 삽입 const [newRfq] = await tx .insert(rfqsLast) @@ -3798,8 +3800,8 @@ export async function updateRfqDueDate( } // 6. 각 vendor별로 이메일 발송 - const emailPromises = [] - + const emailPromises: Promise[] = [] + for (const detail of rfqDetailsData) { if (!detail.emailSentTo) continue diff --git a/lib/rfq-last/vendor-response/editor/quotation-items-table.tsx b/lib/rfq-last/vendor-response/editor/quotation-items-table.tsx index c9790880..4a8960ff 100644 --- a/lib/rfq-last/vendor-response/editor/quotation-items-table.tsx +++ b/lib/rfq-last/vendor-response/editor/quotation-items-table.tsx @@ -53,6 +53,8 @@ export default function QuotationItemsTable({ prItems }: QuotationItemsTableProp const currency = watch("vendorCurrency") || "USD" const quotationItems = watch("quotationItems") + + console.log(prItems,"prItems") // PR 아이템 정보를 quotationItems에 초기화 useEffect(() => { diff --git a/lib/rfq-last/vendor-response/editor/vendor-response-editor.tsx b/lib/rfq-last/vendor-response/editor/vendor-response-editor.tsx index 6da704cd..569546dd 100644 --- a/lib/rfq-last/vendor-response/editor/vendor-response-editor.tsx +++ b/lib/rfq-last/vendor-response/editor/vendor-response-editor.tsx @@ -19,6 +19,22 @@ import { Shield, FileText, CheckCircle, XCircle, Clock, Download, Eye, Save, Sen import { Progress } from "@/components/ui/progress" import { Alert, AlertDescription } from "@/components/ui/alert" + +const quotationItemSchema = z.object({ + rfqPrItemId: z.number(), + unitPrice: z.number().min(0), + totalPrice: z.number().min(0), + vendorDeliveryDate: z.date().optional().nullable(), + leadTime: z.number().optional(), + manufacturer: z.string().optional(), + manufacturerCountry: z.string().optional(), + modelNo: z.string().optional(), + technicalCompliance: z.boolean(), + alternativeProposal: z.string().optional(), + discountRate: z.number().optional(), + itemRemark: z.string().optional(), + deviationReason: z.string().optional(), +}).passthrough(); // ⬅️ 여기가 핵심: 정의 안 된 키도 유지 // 폼 스키마 정의 const vendorResponseSchema = z.object({ // 상업 조건 @@ -59,21 +75,7 @@ const vendorResponseSchema = z.object({ technicalProposal: z.string().optional(), // 견적 아이템 - quotationItems: z.array(z.object({ - rfqPrItemId: z.number(), - unitPrice: z.number().min(0), - totalPrice: z.number().min(0), - vendorDeliveryDate: z.date().optional().nullable(), - leadTime: z.number().optional(), - manufacturer: z.string().optional(), - manufacturerCountry: z.string().optional(), - modelNo: z.string().optional(), - technicalCompliance: z.boolean(), - alternativeProposal: z.string().optional(), - discountRate: z.number().optional(), - itemRemark: z.string().optional(), - deviationReason: z.string().optional(), - })) +quotationItems: z.array(quotationItemSchema), }) type VendorResponseFormData = z.infer @@ -104,6 +106,8 @@ export default function VendorResponseEditor({ const [attachments, setAttachments] = useState([]) const [uploadProgress, setUploadProgress] = useState(0) // 추가 + console.log(existingResponse,"existingResponse") + // Form 초기값 설정 const defaultValues: VendorResponseFormData = { @@ -175,6 +179,8 @@ export default function VendorResponseEditor({ } }, [errors]) + console.log(methods.getValues()) + const handleFormSubmit = (isSubmit: boolean = false) => { diff --git a/lib/rfq-last/vendor/rfq-vendor-table.tsx b/lib/rfq-last/vendor/rfq-vendor-table.tsx index 98d53f5d..ef906ed6 100644 --- a/lib/rfq-last/vendor/rfq-vendor-table.tsx +++ b/lib/rfq-last/vendor/rfq-vendor-table.tsx @@ -1206,7 +1206,7 @@ export function RfqVendorTable({