"use client" import * as React from "react" import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, } from "@/components/ui/dialog" import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { Package, FileText, X } from "lucide-react" import { getTechSalesRfqItems } from "../service" interface RfqItem { id: number; rfqId: number; itemType: "SHIP" | "TOP" | "HULL"; itemCode: string; itemList: string; workType: string; shipTypes?: string; // 조선용 subItemList?: string; // 해양용 } interface RfqItemsViewDialogProps { open: boolean; onOpenChange: (open: boolean) => void; rfq: { id: number; rfqCode?: string | null; status?: string; description?: string; rfqType?: "SHIP" | "TOP" | "HULL" | null; } | null; } export function RfqItemsViewDialog({ open, onOpenChange, rfq, }: RfqItemsViewDialogProps) { const [items, setItems] = React.useState([]); const [loading, setLoading] = React.useState(false); console.log("RfqItemsViewDialog render:", { open, rfq }); React.useEffect(() => { console.log("RfqItemsViewDialog useEffect:", { open, rfqId: rfq?.id }); if (open && rfq?.id) { loadItems(); } }, [open, rfq?.id]); const loadItems = async () => { if (!rfq?.id) return; console.log("Loading items for RFQ:", rfq.id); setLoading(true); try { const result = await getTechSalesRfqItems(rfq.id); console.log("Items loaded:", result); if (result.data) { setItems(result.data); } } catch (error) { console.error("Failed to load items:", error); } finally { setLoading(false); } }; const getTypeLabel = (type: string) => { switch (type) { case "SHIP": return "조선"; case "TOP": return "해양TOP"; case "HULL": return "해양HULL"; default: return type; } }; const getTypeColor = (type: string) => { switch (type) { case "SHIP": return "bg-blue-100 text-blue-800"; case "TOP": return "bg-green-100 text-green-800"; case "HULL": return "bg-purple-100 text-purple-800"; default: return "bg-gray-100 text-gray-800"; } }; return ( RFQ 아이템 조회 {rfq?.rfqCode || `RFQ #${rfq?.id}`} RFQ에 등록된 아이템 목록을 확인할 수 있습니다.
{loading ? (

아이템을 불러오는 중...

) : items.length === 0 ? (

아이템이 없습니다

이 RFQ에 등록된 아이템이 없습니다.

) : ( <> {/* 헤더 행 (라벨) */}
No.
타입
자재 그룹
공종
자재명
선종/자재명(상세)
{/* 아이템 행들 */}
{items.map((item, index) => (
{index + 1}
{getTypeLabel(item.itemType)}
{item.itemCode}
{item.workType}
{item.itemList}
{item.itemType === 'SHIP' ? item.shipTypes : item.subItemList}
))}
총 {items.length}개 아이템
)}
) }