"use client" import * as React from "react" import { format } from "date-fns" import { ko } from "date-fns/locale" import { Building2, User, Phone, Mail, FileText, Calendar } from "lucide-react" import { formatDate } from "../utils" import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { toast } from "sonner" interface VendorInfo { id: number siteVisitRequestId: number factoryName: string factoryLocation: string factoryAddress: string factoryPicName: string factoryPicPhone: string factoryPicEmail: string factoryDirections: string | null accessProcedure: string | null hasAttachments: boolean otherInfo: string | null submittedAt: Date submittedBy: number createdAt: Date updatedAt: Date } interface Attachment { id: number siteVisitRequestId: number vendorSiteVisitInfoId: number | null fileName: string originalFileName: string | null filePath: string fileSize: number | null mimeType: string | null createdAt: Date updatedAt: Date } interface VendorInfoViewDialogProps { isOpen: boolean onClose: () => void siteVisitRequestId: number | null } export function VendorInfoViewDialog({ isOpen, onClose, siteVisitRequestId, }: VendorInfoViewDialogProps) { const [data, setData] = React.useState(null) const [attachments, setAttachments] = React.useState([]) const [isLoading, setIsLoading] = React.useState(false) // 데이터 로드 React.useEffect(() => { if (isOpen && siteVisitRequestId) { loadVendorInfo() } }, [isOpen, siteVisitRequestId]) const loadVendorInfo = async () => { if (!siteVisitRequestId) return setIsLoading(true) try { const { getVendorSiteVisitInfoAction } = await import("./service") const result = await getVendorSiteVisitInfoAction(siteVisitRequestId) if (result.success && result.data) { setData(result.data.vendorInfo) setAttachments(result.data.attachments || []) } else { toast.error("협력업체 정보를 불러올 수 없습니다.") } } catch (error) { console.error("협력업체 정보 로드 오류:", error) toast.error("협력업체 정보를 불러오는 중 오류가 발생했습니다.") } finally { setIsLoading(false) } } return ( !open && onClose()}> 협력업체 방문실사 정보 협력업체가 입력한 방문실사 관련 정보를 확인할 수 있습니다. {isLoading ? (

협력업체 정보를 불러오는 중...

) : data ? (
{/* 협력업체 정보 */} 협력업체 공장 정보

공장 기본 정보

공장명: {data.factoryName}
공장위치: {data.factoryLocation}
공장주소: {data.factoryAddress}

공장 담당자 정보

{data.factoryPicName}
{data.factoryPicPhone}
{data.factoryPicEmail}
{data.factoryDirections && (

공장 가는 법

{data.factoryDirections}

)} {data.accessProcedure && (

공장 출입절차

{data.accessProcedure}

)}
{/* 첨부파일 */} {attachments.length > 0 && ( 협력업체 첨부파일 ({attachments.length}개)
{attachments.map((attachment) => (
{attachment.originalFileName} ({Math.round((attachment.fileSize || 0) / 1024)}KB)
))}
)} {/* 기타 정보 */} {data.otherInfo && ( 기타 정보

{data.otherInfo}

)} {/* 제출 정보 */} 제출 정보
제출일: {formatDate(data.submittedAt, "kr")}
첨부파일: {data.hasAttachments ? "있음" : "없음"}
) : (

협력업체가 아직 정보를 입력하지 않았습니다.

)}
) }