summaryrefslogtreecommitdiff
path: root/lib/b-rfq/attachment/attachment-table.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/b-rfq/attachment/attachment-table.tsx')
-rw-r--r--lib/b-rfq/attachment/attachment-table.tsx190
1 files changed, 0 insertions, 190 deletions
diff --git a/lib/b-rfq/attachment/attachment-table.tsx b/lib/b-rfq/attachment/attachment-table.tsx
deleted file mode 100644
index 4c547000..00000000
--- a/lib/b-rfq/attachment/attachment-table.tsx
+++ /dev/null
@@ -1,190 +0,0 @@
-"use client"
-
-import * as React from "react"
-import { type DataTableAdvancedFilterField, type DataTableFilterField } from "@/types/table"
-import { useDataTable } from "@/hooks/use-data-table"
-import { DataTable } from "@/components/data-table/data-table"
-import { DataTableAdvancedToolbar } from "@/components/data-table/data-table-advanced-toolbar"
-import { VendorResponsesPanel } from "./vendor-responses-panel"
-import { Separator } from "@/components/ui/separator"
-import { FileText } from "lucide-react"
-import { getRfqAttachments, getVendorResponsesForAttachment } from "../service"
-import { getAttachmentColumns } from "./attachment-columns"
-import { RfqAttachmentsTableToolbarActions } from "./attachment-toolbar-action"
-
-interface RfqAttachmentsTableProps {
- promises: Promise<Awaited<ReturnType<typeof getRfqAttachments>>>
- rfqId: number
-}
-
-export function RfqAttachmentsTable({ promises, rfqId }: RfqAttachmentsTableProps) {
- const { data, pageCount } = React.use(promises)
-
- // 선택된 첨부파일과 벤더 응답 데이터
- const [selectedAttachment, setSelectedAttachment] = React.useState<any>(null)
- const [vendorResponses, setVendorResponses] = React.useState<any[]>([])
- const [isLoadingResponses, setIsLoadingResponses] = React.useState(false)
-
- const columns = React.useMemo(
- () => getAttachmentColumns({
- onSelectAttachment: setSelectedAttachment
- }),
- []
- )
-
- // 첨부파일 선택 시 벤더 응답 데이터 로드
- React.useEffect(() => {
- if (!selectedAttachment) {
- setVendorResponses([])
- return
- }
-
- const loadVendorResponses = async () => {
- setIsLoadingResponses(true)
- try {
- const responses = await getVendorResponsesForAttachment(
- selectedAttachment.id,
- 'INITIAL' // 또는 현재 RFQ 상태에 따라 결정
- )
- setVendorResponses(responses)
- } catch (error) {
- console.error('Failed to load vendor responses:', error)
- setVendorResponses([])
- } finally {
- setIsLoadingResponses(false)
- }
- }
-
- loadVendorResponses()
- }, [selectedAttachment])
-
- /**
- * 필터 필드 정의
- */
- const filterFields: DataTableFilterField<any>[] = [
- {
- id: "fileName",
- label: "파일명",
- placeholder: "파일명으로 검색...",
- },
- {
- id: "attachmentType",
- label: "문서 타입",
- options: [
- { label: "구매 문서", value: "구매", count: 0 },
- { label: "설계 문서", value: "설계", count: 0 },
- ],
- },
- {
- id: "fileType",
- label: "파일 형식",
- options: [
- { label: "PDF", value: "pdf", count: 0 },
- { label: "Excel", value: "xlsx", count: 0 },
- { label: "Word", value: "docx", count: 0 },
- { label: "기타", value: "기타", count: 0 },
- ],
- },
- ]
-
- /**
- * 고급 필터 필드
- */
- const advancedFilterFields: DataTableAdvancedFilterField<any>[] = [
- {
- id: "fileName",
- label: "파일명",
- type: "text",
- },
- {
- id: "originalFileName",
- label: "원본 파일명",
- type: "text",
- },
- {
- id: "serialNo",
- label: "시리얼 번호",
- type: "text",
- },
- {
- id: "description",
- label: "설명",
- type: "text",
- },
- {
- id: "attachmentType",
- label: "문서 타입",
- type: "multi-select",
- options: [
- { label: "구매 문서", value: "구매" },
- { label: "설계 문서", value: "설계" },
- ],
- },
- {
- id: "fileType",
- label: "파일 형식",
- type: "multi-select",
- options: [
- { label: "PDF", value: "pdf" },
- { label: "Excel", value: "xlsx" },
- { label: "Word", value: "docx" },
- { label: "기타", value: "기타" },
- ],
- },
- {
- id: "createdAt",
- label: "등록일",
- type: "date",
- },
- ]
-
- const { table } = useDataTable({
- data,
- columns,
- pageCount,
- filterFields,
- enableAdvancedFilter: true,
- initialState: {
- sorting: [{ id: "createdAt", desc: true }],
- columnPinning: { right: ["actions"] },
- },
- getRowId: (originalRow) => originalRow.id.toString(),
- shallow: false,
- clearOnDefault: true,
- })
-
- return (
- <div className="space-y-6">
- {/* 메인 테이블 */}
- <div className="h-full w-full">
- <DataTable table={table} className="h-full">
- <DataTableAdvancedToolbar
- table={table}
- filterFields={advancedFilterFields}
- shallow={false}
- >
- <RfqAttachmentsTableToolbarActions table={table} rfqId={rfqId} />
- </DataTableAdvancedToolbar>
- </DataTable>
- </div>
-
- {/* 벤더 응답 현황 패널 */}
- {selectedAttachment && (
- <>
- <Separator />
- <VendorResponsesPanel
- attachment={selectedAttachment}
- responses={vendorResponses}
- isLoading={isLoadingResponses}
- onRefresh={() => {
- // 새로고침 로직
- if (selectedAttachment) {
- setSelectedAttachment({ ...selectedAttachment })
- }
- }}
- />
- </>
- )}
- </div>
- )
-} \ No newline at end of file