summaryrefslogtreecommitdiff
path: root/lib/techsales-rfq/table/detail-table/rfq-detail-column.tsx
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-05-29 10:25:22 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-05-29 10:25:22 +0000
commit3bdd648ad4cb863043db181291ddaebbc025965b (patch)
tree7197902b7eb6e442b2c62e1cb4e8e9e2553d4def /lib/techsales-rfq/table/detail-table/rfq-detail-column.tsx
parent0257350f55c00735cadbd5b507ef5cc9cd3adb10 (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.tsx70
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