"use client" import * as React from "react" import { ClientDataTable } from "@/components/client-data-table/data-table" import type { EnhancedVendorResponse } from "@/lib/b-rfq/service" import { DataTableAdvancedFilterField } from "@/types/table" import { DataTableRowAction, getColumns } from "./response-detail-columns" interface FinalRfqResponseTableProps { data: EnhancedVendorResponse[] // ✅ 헤더 정보를 props로 받기 statistics?: { total: number upToDate: number versionMismatch: number pending: number revisionRequested: number waived: number } showHeader?: boolean title?: string } /** * FinalRfqResponseTable: RFQ 응답 데이터를 표시하는 표 */ export function FinalRfqResponseTable({ data, statistics, showHeader = true, title = "첨부파일별 응답 현황" }: FinalRfqResponseTableProps) { const [rowAction, setRowAction] = React.useState | null>(null) const columns = React.useMemo( () => getColumns({ setRowAction }), [setRowAction] ) // 고급 필터 필드 정의 const advancedFilterFields: DataTableAdvancedFilterField[] = [ { id: "effectiveStatus", label: "상태", type: "select", options: [ { label: "미응답", value: "NOT_RESPONDED" }, { label: "최신", value: "UP_TO_DATE" }, { label: "업데이트 필요", value: "VERSION_MISMATCH" }, { label: "수정요청", value: "REVISION_REQUESTED" }, { label: "포기", value: "WAIVED" }, ], }, { id: "attachmentType", label: "첨부파일 분류", type: "text", }, { id: "serialNo", label: "시리얼 번호", type: "text", }, { id: "isVersionMatched", label: "버전 일치", type: "select", options: [ { label: "일치", value: "true" }, { label: "불일치", value: "false" }, ], }, { id: "hasMultipleRevisions", label: "다중 리비전", type: "select", options: [ { label: "있음", value: "true" }, { label: "없음", value: "false" }, ], }, ] if (data.length === 0) { return (
📄

응답할 첨부파일이 없습니다.

) } return ( // ✅ 상위 컨테이너 구조 단순화 및 너비 제한 해제 <> {/* 코멘트 범례 */}
코멘트 범례:
벤더 응답
내부 메모
수정 요청
발주처 리비전
{/* 데이터 테이블 - 컨테이너 제약 최소화 */} {showHeader && (
{statistics && (
전체 {statistics.total}개 최신 {statistics.upToDate}개 업데이트필요 {statistics.versionMismatch}개 미응답 {statistics.pending}개 {statistics.revisionRequested > 0 && ( 수정요청 {statistics.revisionRequested}개 )} {statistics.waived > 0 && ( 포기 {statistics.waived}개 )}
)}
)}
) }