import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Skeleton } from "@/components/ui/skeleton" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { RefreshCw, Download, MessageSquare, Clock, CheckCircle2, XCircle, AlertCircle } from "lucide-react" import { formatDate } from "@/lib/utils" interface VendorResponsesPanelProps { attachment: any responses: any[] isLoading: boolean onRefresh: () => void } export function VendorResponsesPanel({ attachment, responses, isLoading, onRefresh }: VendorResponsesPanelProps) { const getStatusIcon = (status: string) => { switch (status) { case 'RESPONDED': return case 'NOT_RESPONDED': return case 'WAIVED': return case 'REVISION_REQUESTED': return default: return } } const getStatusBadgeVariant = (status: string) => { switch (status) { case 'RESPONDED': return 'default' case 'NOT_RESPONDED': return 'secondary' case 'WAIVED': return 'outline' case 'REVISION_REQUESTED': return 'destructive' default: return 'secondary' } } if (isLoading) { return (
{Array.from({ length: 3 }).map((_, i) => ( ))}
) } return (
{/* 헤더 */}

벤더 응답 현황: {attachment.originalFileName}

{attachment.attachmentType} 시리얼: {attachment.serialNo} 등록: {formatDate(attachment.createdAt)} {attachment.responseStats && ( 응답률: {attachment.responseStats.responseRate}% )}
{/* 테이블 */} {responses.length === 0 ? (
이 문서에 대한 벤더 응답 정보가 없습니다.
) : (
벤더 국가 응답 상태 리비전 요청일 응답일 벤더 코멘트 액션 {responses.map((response) => (
{response.vendorName}
{response.vendorCode}
{response.vendorCountry}
{getStatusIcon(response.responseStatus)} {response.responseStatus}
현재: {response.currentRevision}
{response.respondedRevision && (
응답: {response.respondedRevision}
)}
{formatDate(response.requestedAt)} {response.respondedAt ? formatDate(response.respondedAt) : '-'} {response.vendorComment ? (
{response.vendorComment}
) : ( '-' )}
{response.responseStatus === 'RESPONDED' && ( )}
))}
)}
) }