"use client"; import { ColumnDef } from "@tanstack/react-table"; import { Checkbox } from "@/components/ui/checkbox"; import { DataTableColumnHeaderSimple } from "@/components/data-table/data-table-column-simple-header"; import Link from "next/link"; // 타입만 import type TechVendorPossibleItemsData = { id: number; vendorId: number; vendorCode: string | null; vendorName: string; techVendorType: string; itemCode: string; createdAt: Date; updatedAt: Date; }; import { format } from "date-fns"; import { ko } from "date-fns/locale"; import { Badge } from "@/components/ui/badge"; export function getColumns(): ColumnDef[] { return [ { id: "select", header: ({ table }) => ( table.toggleAllPageRowsSelected(!!value)} aria-label="모두 선택" className="translate-y-[2px]" /> ), cell: ({ row }) => ( row.toggleSelected(!!value)} aria-label="행 선택" className="translate-y-[2px]" /> ), enableSorting: false, enableHiding: false, }, { accessorKey: "itemCode", header: ({ column }) => ( ), cell: ({ row }) => { const itemCode = row.getValue("itemCode") as string; return
{itemCode}
; }, }, { accessorKey: "vendorCode", header: ({ column }) => ( ), cell: ({ row }) => { const vendorCode = row.getValue("vendorCode") as string; return
{vendorCode || "-"}
; }, }, { accessorKey: "vendorName", header: ({ column }) => ( ), cell: ({ row }) => { const vendorName = row.getValue("vendorName") as string; const vendorId = row.original.vendorId; return ( {vendorName} ); }, }, { accessorKey: "techVendorType", header: ({ column }) => ( ), cell: ({ row }) => { const techVendorType = row.getValue("techVendorType") as string; // JSON 배열인지 확인하고 파싱 let types: string[] = []; try { const parsed = JSON.parse(techVendorType || "[]"); types = Array.isArray(parsed) ? parsed : [techVendorType]; } catch { types = [techVendorType]; } return (
{types.map((type, index) => ( {type} ))}
); }, filterFn: (row, id, value) => { const techVendorType = row.getValue(id) as string; try { const parsed = JSON.parse(techVendorType || "[]"); const types = Array.isArray(parsed) ? parsed : [techVendorType]; return types.some(type => type.includes(value)); } catch { return techVendorType?.includes(value) || false; } }, }, { accessorKey: "createdAt", header: ({ column }) => ( ), cell: ({ row }) => { const createdAt = row.getValue("createdAt") as Date; return (
{format(createdAt, "yyyy-MM-dd HH:mm", { locale: ko })}
); }, }, ]; }