summaryrefslogtreecommitdiff
path: root/lib/b-rfq/vendor-response/response-detail-table.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/b-rfq/vendor-response/response-detail-table.tsx')
-rw-r--r--lib/b-rfq/vendor-response/response-detail-table.tsx161
1 files changed, 0 insertions, 161 deletions
diff --git a/lib/b-rfq/vendor-response/response-detail-table.tsx b/lib/b-rfq/vendor-response/response-detail-table.tsx
deleted file mode 100644
index 124d5241..00000000
--- a/lib/b-rfq/vendor-response/response-detail-table.tsx
+++ /dev/null
@@ -1,161 +0,0 @@
-"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<DataTableRowAction<EnhancedVendorResponse> | null>(null)
-
- const columns = React.useMemo(
- () => getColumns({ setRowAction }),
- [setRowAction]
- )
-
- // 고급 필터 필드 정의
- const advancedFilterFields: DataTableAdvancedFilterField<EnhancedVendorResponse>[] = [
- {
- 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 (
- <div className="border rounded-lg p-12 text-center">
- <div className="mx-auto mb-4 h-12 w-12 text-muted-foreground">
- 📄
- </div>
- <p className="text-muted-foreground">응답할 첨부파일이 없습니다.</p>
- </div>
- )
- }
-
- return (
- // ✅ 상위 컨테이너 구조 단순화 및 너비 제한 해제
-<>
- {/* 코멘트 범례 */}
- <div className="flex items-center gap-6 text-xs text-muted-foreground bg-muted/30 p-3 rounded-lg">
- <span className="font-medium">코멘트 범례:</span>
- <div className="flex items-center gap-1">
- <div className="w-2 h-2 rounded-full bg-blue-500"></div>
- <span>벤더 응답</span>
- </div>
- <div className="flex items-center gap-1">
- <div className="w-2 h-2 rounded-full bg-green-500"></div>
- <span>내부 메모</span>
- </div>
- <div className="flex items-center gap-1">
- <div className="w-2 h-2 rounded-full bg-red-500"></div>
- <span>수정 요청</span>
- </div>
- <div className="flex items-center gap-1">
- <div className="w-2 h-2 rounded-full bg-orange-500"></div>
- <span>발주처 리비전</span>
- </div>
- </div>
- <div style={{
- width: '100%',
- maxWidth: '100%',
- overflow: 'hidden',
- contain: 'layout'
- }}>
- {/* 데이터 테이블 - 컨테이너 제약 최소화 */}
- <ClientDataTable
- data={data}
- columns={columns}
- advancedFilterFields={advancedFilterFields}
- autoSizeColumns={true}
- compact={true}
- // ✅ RFQ 테이블에 맞는 컬럼 핀고정
- initialColumnPinning={{
- left: ["serialNo", "attachmentType"],
- right: ["actions"]
- }}
- >
- {showHeader && (
- <div className="flex items-center justify-between">
-
- {statistics && (
- <div className="flex items-center gap-4 text-sm text-muted-foreground">
- <span>전체 {statistics.total}개</span>
- <span className="text-green-600">최신 {statistics.upToDate}개</span>
- <span className="text-blue-600">업데이트필요 {statistics.versionMismatch}개</span>
- <span className="text-orange-600">미응답 {statistics.pending}개</span>
- {statistics.revisionRequested > 0 && (
- <span className="text-yellow-600">수정요청 {statistics.revisionRequested}개</span>
- )}
- {statistics.waived > 0 && (
- <span className="text-gray-600">포기 {statistics.waived}개</span>
- )}
- </div>
- )}
- </div>
- )}
- </ClientDataTable>
- </div>
- </>
- )
-}