From 44794a8628997c0d979adb5bd6711cd848b3e397 Mon Sep 17 00:00:00 2001
From: dujinkim <dujin.kim@dtsolution.co.kr>
Date: Wed, 9 Jul 2025 06:27:10 +0000
Subject: (최겸) 기술영업 판교 미팅 이전 rfq-tech 삭제
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 lib/cbe-tech/table/cbe-table-columns.tsx | 241 -------------------------------
 1 file changed, 241 deletions(-)
 delete mode 100644 lib/cbe-tech/table/cbe-table-columns.tsx

(limited to 'lib/cbe-tech/table/cbe-table-columns.tsx')

diff --git a/lib/cbe-tech/table/cbe-table-columns.tsx b/lib/cbe-tech/table/cbe-table-columns.tsx
deleted file mode 100644
index 2da62ea8..00000000
--- a/lib/cbe-tech/table/cbe-table-columns.tsx
+++ /dev/null
@@ -1,241 +0,0 @@
-"use client"
-
-import * as React from "react"
-import { type DataTableRowAction } from "@/types/table"
-import { type ColumnDef } from "@tanstack/react-table"
-import { Download, Ellipsis, MessageSquare } from "lucide-react"
-import { toast } from "sonner"
-
-import { getErrorMessage } from "@/lib/handle-error"
-import { formatDate } from "@/lib/utils"
-import { Badge } from "@/components/ui/badge"
-import { Button } from "@/components/ui/button"
-import { Checkbox } from "@/components/ui/checkbox"
-import {
-  DropdownMenu,
-  DropdownMenuContent,
-  DropdownMenuRadioGroup,
-  DropdownMenuRadioItem,
-  DropdownMenuSub,
-  DropdownMenuSubContent,
-  DropdownMenuSubTrigger,
-  DropdownMenuTrigger,
-} from "@/components/ui/dropdown-menu"
-import { DataTableColumnHeaderSimple } from "@/components/data-table/data-table-column-simple-header"
-import { useRouter } from "next/navigation"
-
-import { VendorWithCbeFields,vendorCbeColumnsConfig } from "@/config/vendorCbeColumnsConfig"
-
-
-type NextRouter = ReturnType<typeof useRouter>
-
-interface GetColumnsProps {
-  setRowAction: React.Dispatch<
-    React.SetStateAction<DataTableRowAction<VendorWithCbeFields> | null>
-  >
-  router: NextRouter
-  openCommentSheet: (responseId: number) => void
-  openVendorContactsDialog: (vendorId: number, vendor: VendorWithCbeFields) => void // 수정된 시그니처
-
-}
-
-/**
- * tanstack table 컬럼 정의 (중첩 헤더 버전)
- */
-export function getColumns({
-  setRowAction,
-  router,
-  openCommentSheet,
-  openVendorContactsDialog
-}: GetColumnsProps): ColumnDef<VendorWithCbeFields>[] {
-  // ----------------------------------------------------------------
-  // 1) Select 컬럼 (체크박스)
-  // ----------------------------------------------------------------
-  const selectColumn: ColumnDef<VendorWithCbeFields> = {
-    id: "select",
-    header: ({ table }) => (
-      <Checkbox
-        checked={
-          table.getIsAllPageRowsSelected() ||
-          (table.getIsSomePageRowsSelected() && "indeterminate")
-        }
-        onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}
-        aria-label="Select all"
-        className="translate-y-0.5"
-      />
-    ),
-    cell: ({ row }) => (
-      <Checkbox
-        checked={row.getIsSelected()}
-        onCheckedChange={(value) => row.toggleSelected(!!value)}
-        aria-label="Select row"
-        className="translate-y-0.5"
-      />
-    ),
-    size: 40,
-    enableSorting: false,
-    enableHiding: false,
-  }
-
-  // ----------------------------------------------------------------
-  // 2) 그룹화(Nested) 컬럼 구성
-  // ----------------------------------------------------------------
-  const groupMap: Record<string, ColumnDef<VendorWithCbeFields>[]> = {}
-
-  vendorCbeColumnsConfig.forEach((cfg) => {
-    const groupName = cfg.group || "_noGroup"
-    if (!groupMap[groupName]) {
-      groupMap[groupName] = []
-    }
-
-    // childCol: ColumnDef<VendorWithTbeFields>
-    const childCol: ColumnDef<VendorWithCbeFields> = {
-      accessorKey: cfg.id,
-      enableResizing: true,
-      header: ({ column }) => (
-        <DataTableColumnHeaderSimple column={column} title={cfg.label} />
-      ),
-      meta: {
-        excelHeader: cfg.excelHeader,
-        group: cfg.group,
-        type: cfg.type,
-      },
-      // 셀 렌더링
-      cell: ({ row, getValue }) => {
-        // 1) 필드값 가져오기
-        const val = getValue()
-
-        if (cfg.id === "vendorName") {
-          const vendor = row.original;
-          const vendorId = vendor.vendorId;
-          
-          // 협력업체 이름을 클릭할 수 있는 버튼으로 렌더링
-          const handleVendorNameClick = () => {
-            if (vendorId) {
-              openVendorContactsDialog(vendorId, vendor); // vendor 전체 객체 전달
-            } else {
-              toast.error("협력업체 ID를 찾을 수 없습니다.");
-            }
-          };
-          
-          return (
-            <Button
-              variant="link"
-              className="p-0 h-auto text-left font-normal justify-start hover:underline"
-              onClick={handleVendorNameClick}
-            >
-              {val as string}
-            </Button>
-          );
-        }
-
-
-        if (cfg.id === "vendorStatus") {
-          const statusVal = row.original.vendorStatus
-          if (!statusVal) return null
-          // const Icon = getStatusIcon(statusVal)
-          return (
-            <Badge variant="outline">
-              {statusVal}
-            </Badge>
-          )
-        }
-
-
-        if (cfg.id === "responseStatus") {
-          const statusVal = row.original.responseStatus
-          if (!statusVal) return null
-          // const Icon = getStatusIcon(statusVal)
-          const variant = statusVal ==="INVITED"?"default" :statusVal ==="DECLINED"?"destructive":statusVal ==="ACCEPTED"?"secondary":"outline"
-          return (
-            <Badge variant={variant}>
-              {statusVal}
-            </Badge>
-          )
-        }
-
-        // 예) CBE Updated (날짜)
-        if (cfg.id === "respondedAt") {
-          const dateVal = val as Date | undefined
-          if (!dateVal) return null
-          return formatDate(dateVal)
-        }
-
-        // 그 외 필드는 기본 값 표시
-        return val ?? ""
-      },
-    }
-
-    groupMap[groupName].push(childCol)
-  })
-
-  // groupMap → nestedColumns
-  const nestedColumns: ColumnDef<VendorWithCbeFields>[] = []
-  Object.entries(groupMap).forEach(([groupName, colDefs]) => {
-    if (groupName === "_noGroup") {
-      nestedColumns.push(...colDefs)
-    } else {
-      nestedColumns.push({
-        id: groupName,
-        header: groupName,
-        columns: colDefs,
-      })
-    }
-  })
-
-// 댓글 칼럼
-const commentsColumn: ColumnDef<VendorWithCbeFields> = {
-  id: "comments",
-  header: ({ column }) => (
-    <DataTableColumnHeaderSimple column={column} title="Comments" />
-  ),
-  cell: ({ row }) => {
-    const vendor = row.original
-    const commCount = vendor.comments?.length ?? 0
-
-    function handleClick() {
-      // setRowAction() 로 type 설정
-      setRowAction({ row, type: "comments" })
-      // 필요하면 즉시 openCommentSheet() 직접 호출
-      openCommentSheet(vendor.responseId ?? 0)
-    }
-
-    return (
-      <Button
-        variant="ghost"
-        size="sm"
-        className="relative h-8 w-8 p-0 group"
-        onClick={handleClick}
-        aria-label={
-          commCount > 0 ? `View ${commCount} comments` : "No comments"
-        }
-      >
-        <MessageSquare className="h-4 w-4 text-muted-foreground group-hover:text-primary transition-colors" />
-        {commCount > 0 && (
-          <Badge
-            variant="secondary"
-            className="pointer-events-none absolute -top-1 -right-1 h-4 min-w-[1rem] p-0 text-[0.625rem] leading-none flex items-center justify-center"
-          >
-            {commCount}
-          </Badge>
-        )}
-        <span className="sr-only">
-          {commCount > 0 ? `${commCount} Comments` : "No Comments"}
-        </span>
-      </Button>
-    )
-  },
-  enableSorting: false,
-  minSize: 80,
-}
-// ----------------------------------------------------------------
-// 5) 최종 컬럼 배열 - Update to include the files column
-// ----------------------------------------------------------------
-return [
-  selectColumn,
-  ...nestedColumns,
-  commentsColumn,
-  // actionsColumn,
-]
-
-}
\ No newline at end of file
-- 
cgit v1.2.3

