From c228a89c2834ee63b209bad608837c39643f350e Mon Sep 17 00:00:00 2001 From: dujinkim Date: Mon, 28 Jul 2025 11:44:16 +0000 Subject: (대표님) 의존성 docx 추가, basicContract API, gtc(계약일반조건), 벤더평가 esg 평가데이터 내보내기 개선, S-EDP 피드백 대응(CLS_ID, ITEM NO 등) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../status/gtc-documents-table-columns.tsx | 175 ++++++++------------- 1 file changed, 65 insertions(+), 110 deletions(-) (limited to 'lib/gtc-contract/status/gtc-documents-table-columns.tsx') diff --git a/lib/gtc-contract/status/gtc-documents-table-columns.tsx b/lib/gtc-contract/status/gtc-documents-table-columns.tsx index f6eb81d0..cd02a3e5 100644 --- a/lib/gtc-contract/status/gtc-documents-table-columns.tsx +++ b/lib/gtc-contract/status/gtc-documents-table-columns.tsx @@ -4,8 +4,9 @@ import * as React from "react" import { type DataTableRowAction } from "@/types/table" import { type ColumnDef } from "@tanstack/react-table" import { Ellipsis, Eye } from "lucide-react" +import type { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime" -import { formatDate, formatDateTime } from "@/lib/utils" +import { formatDate } from "@/lib/utils" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Checkbox } from "@/components/ui/checkbox" @@ -23,16 +24,11 @@ import { type GtcDocumentWithRelations } from "@/db/schema/gtc" interface GetColumnsProps { setRowAction: React.Dispatch | null>> + router: AppRouterInstance // ← 추가 } -/** - * GTC Documents 테이블 컬럼 정의 - */ +/** GTC Documents 테이블 컬럼 정의 (그룹 헤더 제거) */ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef[] { - - // ---------------------------------------------------------------- - // 1) select 컬럼 (체크박스) - // ---------------------------------------------------------------- const selectColumn: ColumnDef = { id: "select", header: ({ table }) => ( @@ -59,165 +55,145 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef enableHiding: false, } - // ---------------------------------------------------------------- - // 2) 기본 정보 그룹 - // ---------------------------------------------------------------- const basicInfoColumns: ColumnDef[] = [ { accessorKey: "type", header: ({ column }) => , cell: ({ row }) => { - const type = row.getValue("type") as string; + const type = row.getValue("type") as string return ( {type === "standard" ? "표준" : "프로젝트"} - ); + ) }, size: 100, enableResizing: true, - meta: { - excelHeader: "구분", - }, + meta: { excelHeader: "구분" }, }, { accessorKey: "project", header: ({ column }) => , cell: ({ row }) => { - const project = row.original.project; - if (!project) { - return -; - } + const project = row.original.project + if (!project) return - return (
{project.name} {project.code}
- ); + ) }, size: 200, enableResizing: true, - meta: { - excelHeader: "프로젝트", + meta: { excelHeader: "프로젝트" }, + }, + { + accessorKey: "title", + header: ({ column }) => , + cell: ({ row }) => { + const title = row.original.title + if (!title) return - + return ( +
+ {title} +
+ ) }, + size: 200, + enableResizing: true, + meta: { excelHeader: "GTC 제목" }, }, { accessorKey: "revision", header: ({ column }) => , cell: ({ row }) => { - const revision = row.getValue("revision") as number; - return v{revision}; + const revision = row.getValue("revision") as number + return v{revision} }, size: 80, enableResizing: true, - meta: { - excelHeader: "Rev.", - }, + meta: { excelHeader: "Rev." }, }, - ]; + ] - // ---------------------------------------------------------------- - // 3) 등록/수정 정보 그룹 - // ---------------------------------------------------------------- const auditColumns: ColumnDef[] = [ { accessorKey: "createdAt", header: ({ column }) => , cell: ({ row }) => { - const date = row.getValue("createdAt") as Date; - return date ? formatDate(date, "KR") : "-"; + const date = row.getValue("createdAt") as Date + return date ? formatDate(date, "KR") : "-" }, size: 120, enableResizing: true, - meta: { - excelHeader: "최초등록일", - }, + meta: { excelHeader: "최초등록일" }, }, { accessorKey: "createdBy", header: ({ column }) => , cell: ({ row }) => { - const createdBy = row.original.createdBy; - return createdBy ? ( - {createdBy.name} - ) : ( - - - ); + const createdBy = row.original.createdBy + return createdBy ? {createdBy.name} : - }, size: 120, enableResizing: true, - meta: { - excelHeader: "최초등록자", - }, + meta: { excelHeader: "최초등록자" }, }, { accessorKey: "updatedAt", header: ({ column }) => , cell: ({ row }) => { - const date = row.getValue("updatedAt") as Date; - return date ? formatDate(date, "KR") : "-"; + const date = row.getValue("updatedAt") as Date + return date ? formatDate(date, "KR") : "-" }, size: 120, enableResizing: true, - meta: { - excelHeader: "최종수정일", - }, + meta: { excelHeader: "최종수정일" }, }, { accessorKey: "updatedBy", header: ({ column }) => , cell: ({ row }) => { - const updatedBy = row.original.updatedBy; - return updatedBy ? ( - {updatedBy.name} - ) : ( - - - ); + const updatedBy = row.original.updatedBy + return updatedBy ? {updatedBy.name} : - }, size: 120, enableResizing: true, - meta: { - excelHeader: "최종수정자", - }, + meta: { excelHeader: "최종수정자" }, }, { accessorKey: "editReason", header: ({ column }) => , cell: ({ row }) => { - const reason = row.getValue("editReason") as string; + const reason = row.getValue("editReason") as string return reason ? ( {reason.length > 30 ? `${reason.substring(0, 30)}...` : reason} ) : ( - - ); + ) }, size: 200, enableResizing: true, - meta: { - excelHeader: "최종 편집사유", - }, + meta: { excelHeader: "최종 편집사유" }, }, - ]; + ] - // ---------------------------------------------------------------- - // 4) actions 컬럼 (Dropdown 메뉴) - // ---------------------------------------------------------------- const actionsColumn: ColumnDef = { id: "actions", enableHiding: false, - cell: function Cell({ row }) { - const [isUpdatePending, startUpdateTransition] = React.useTransition() - const gtcDocument = row.original; + cell: ({ row }) => { + const gtcDocument = row.original const handleViewDetails = () => { - router.push(`/evcp/gtc-documents/${gtcDocument.id}`); - }; + router.push(`/evcp/basic-contract-template/gtc/${gtcDocument.id}`) + } const handleCreateNewRevision = () => { - setRowAction({ row, type: "createRevision" }); - }; + setRowAction({ row, type: "createRevision" }) + } return ( @@ -227,32 +203,28 @@ export function getColumns({ setRowAction, router }: GetColumnsProps): ColumnDef variant="ghost" className="flex size-8 p-0 data-[state=open]:bg-muted" > -