From 6f22fc9ebc8d175041aa18cf0986592e57d03f63 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Thu, 3 Jul 2025 02:47:09 +0000 Subject: (최겸) 기술영업 벤더별 아이템 조회 기능 추가 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table/possible-items-data-table.tsx | 90 ++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 lib/tech-vendor-possible-items/table/possible-items-data-table.tsx (limited to 'lib/tech-vendor-possible-items/table/possible-items-data-table.tsx') diff --git a/lib/tech-vendor-possible-items/table/possible-items-data-table.tsx b/lib/tech-vendor-possible-items/table/possible-items-data-table.tsx new file mode 100644 index 00000000..5252684b --- /dev/null +++ b/lib/tech-vendor-possible-items/table/possible-items-data-table.tsx @@ -0,0 +1,90 @@ +"use client"; + +import * as React from "react"; + +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 { getColumns } from "./possible-items-table-columns"; +import { PossibleItemsTableToolbarActions } from "./possible-items-table-toolbar-actions"; + +// 타입만 import +type TechVendorPossibleItemsData = { + id: number; + vendorId: number; + vendorCode: string | null; + vendorName: string; + techVendorType: string; + itemCode: string; + createdAt: Date; + updatedAt: Date; +}; +import type { DataTableAdvancedFilterField } from "@/types/table"; + +interface PossibleItemsDataTableProps { + promises: Promise<[{ + data: TechVendorPossibleItemsData[]; + pageCount: number; + totalCount: number; + }, string[]]>; +} + +export function PossibleItemsDataTable({ promises }: PossibleItemsDataTableProps) { + const [{ data, pageCount }, vendorTypes] = React.use(promises); + + const columns = React.useMemo(() => getColumns(), []); + + const filterFields: DataTableAdvancedFilterField[] = [ + { + id: "vendorCode", + label: "벤더코드", + type: "text", + }, + { + id: "vendorName", + label: "벤더명", + type: "text", + }, + { + id: "itemCode", + label: "아이템코드", + type: "text", + }, + { + id: "techVendorType", + label: "벤더타입", + type: "multi-select", + options: Array.isArray(vendorTypes) ? vendorTypes.map((type: string) => ({ + label: type, + value: type, + count: 0, + })) : [], + }, + ]; + + const { table } = useDataTable({ + data, + columns, + pageCount, + filterFields, + enableAdvancedFilter: true, + initialState: { + sorting: [{ id: "createdAt", desc: true }], + pagination: { pageIndex: 0, pageSize: 10 }, + }, + getRowId: (originalRow) => String(originalRow.id), + shallow: false, + clearOnDefault: true, + }); + + return ( + <> + + + + + + + ); +} \ No newline at end of file -- cgit v1.2.3