diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-05-29 10:25:22 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-05-29 10:25:22 +0000 |
| commit | 3bdd648ad4cb863043db181291ddaebbc025965b (patch) | |
| tree | 7197902b7eb6e442b2c62e1cb4e8e9e2553d4def /lib/techsales-rfq/table/detail-table/rfq-detail-column.tsx | |
| parent | 0257350f55c00735cadbd5b507ef5cc9cd3adb10 (diff) | |
(김준회) 기술영업 조선 RFQ 변경 (셀 클릭 상세보기 및 Unread Message, Action Column 관련 변경사항 적용)
Diffstat (limited to 'lib/techsales-rfq/table/detail-table/rfq-detail-column.tsx')
| -rw-r--r-- | lib/techsales-rfq/table/detail-table/rfq-detail-column.tsx | 70 |
1 files changed, 40 insertions, 30 deletions
diff --git a/lib/techsales-rfq/table/detail-table/rfq-detail-column.tsx b/lib/techsales-rfq/table/detail-table/rfq-detail-column.tsx index cfae0bd7..7d5c359e 100644 --- a/lib/techsales-rfq/table/detail-table/rfq-detail-column.tsx +++ b/lib/techsales-rfq/table/detail-table/rfq-detail-column.tsx @@ -4,21 +4,20 @@ import * as React from "react" import type { ColumnDef, Row } from "@tanstack/react-table"; import { formatDate } from "@/lib/utils" import { DataTableColumnHeaderSimple } from "@/components/data-table/data-table-column-simple-header" +import { Checkbox } from "@/components/ui/checkbox"; +import { MessageCircle, MoreHorizontal, Trash2 } from "lucide-react"; +import { Button } from "@/components/ui/button"; +import { Badge } from "@/components/ui/badge"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; -import { Checkbox } from "@/components/ui/checkbox"; -import { Ellipsis, MessageCircle } from "lucide-react"; -import { Button } from "@/components/ui/button"; -import { Badge } from "@/components/ui/badge"; -import { useRouter } from "next/navigation"; export interface DataTableRowAction<TData> { row: Row<TData>; - type: "delete" | "communicate"; + type: "communicate" | "delete"; } // 벤더 견적 데이터 타입 정의 @@ -128,7 +127,28 @@ export function getRfqDetailColumns({ header: ({ column }) => ( <DataTableColumnHeaderSimple column={column} title="벤더명" /> ), - cell: ({ row }) => <div>{row.getValue("vendorName")}</div>, + cell: ({ row }) => { + const vendorName = row.getValue("vendorName") as string | null; + const vendorId = row.original.vendorId; + + if (!vendorName) return <div>-</div>; + + if (vendorId) { + return ( + <Button + variant="link" + className="p-0 h-auto font-normal text-left justify-start hover:underline" + onClick={() => { + window.open(`/ko/evcp/vendors/${vendorId}/info`, '_blank'); + }} + > + {vendorName} + </Button> + ); + } + + return <div>{vendorName}</div>; + }, meta: { excelHeader: "벤더명" }, @@ -233,13 +253,8 @@ export function getRfqDetailColumns({ cell: function Cell({ row }) { const vendorId = row.original.vendorId; const unreadCount = vendorId ? unreadMessages[vendorId] || 0 : 0; - const router = useRouter(); - - const handleViewDetails = () => { - if (vendorId) { - router.push(`/ko/evcp/vendors/${vendorId}/info`); - } - }; + const status = row.original.status; + const isDraft = status === "Draft"; return ( <div className="text-right flex items-center justify-end gap-1"> @@ -264,31 +279,26 @@ export function getRfqDetailColumns({ )} </div> - {/* 기존 드롭다운 메뉴 */} + {/* 컨텍스트 메뉴 */} <DropdownMenu> <DropdownMenuTrigger asChild> <Button variant="ghost" - className="flex h-8 w-8 p-0 data-[state=open]:bg-muted" + size="sm" + className="h-8 w-8 p-0" + title="더 많은 작업" > - <Ellipsis className="h-4 w-4" /> - <span className="sr-only">메뉴 열기</span> + <MoreHorizontal className="h-4 w-4" /> </Button> </DropdownMenuTrigger> - <DropdownMenuContent align="end" className="w-[160px]"> - <DropdownMenuItem - onClick={handleViewDetails} - disabled={!vendorId} - className="gap-2" - > - {/* <Eye className="h-4 w-4" /> */} - 벤더 상세정보 - </DropdownMenuItem> + <DropdownMenuContent align="end"> <DropdownMenuItem onClick={() => setRowAction({ row, type: "delete" })} - className="text-destructive focus:text-destructive" + disabled={!isDraft} + className={!isDraft ? "opacity-50 cursor-not-allowed" : "text-destructive focus:text-destructive"} > - 벤더 제거 + <Trash2 className="mr-2 h-4 w-4" /> + 벤더 삭제 </DropdownMenuItem> </DropdownMenuContent> </DropdownMenu> @@ -296,7 +306,7 @@ export function getRfqDetailColumns({ ); }, enableResizing: false, - size: 80, + size: 120, }, ]; }
\ No newline at end of file |
