summaryrefslogtreecommitdiff
path: root/components/tech-vendors
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-07-21 07:54:26 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-07-21 07:54:26 +0000
commit14f61e24947fb92dd71ec0a7196a6e815f8e66da (patch)
tree317c501d64662d05914330628f867467fba78132 /components/tech-vendors
parent194bd4bd7e6144d5c09c5e3f5476d254234dce72 (diff)
(최겸)기술영업 RFQ 담당자 초대, 요구사항 반영
Diffstat (limited to 'components/tech-vendors')
-rw-r--r--components/tech-vendors/tech-vendor-container.tsx30
-rw-r--r--components/tech-vendors/tech-vendor-items-container.tsx121
2 files changed, 15 insertions, 136 deletions
diff --git a/components/tech-vendors/tech-vendor-container.tsx b/components/tech-vendors/tech-vendor-container.tsx
index af5169b8..94536702 100644
--- a/components/tech-vendors/tech-vendor-container.tsx
+++ b/components/tech-vendors/tech-vendor-container.tsx
@@ -40,20 +40,20 @@ export function TechVendorContainer({
// URL에서 현재 선택된 벤더 타입 가져오기
const vendorType = searchParams.get("vendorType") || "all"
- // 선택한 벤더 타입에 해당하는 이름 찾기
- const selectedVendor = vendorTypes.find((vendor) => vendor.id === vendorType)?.name || "전체"
+ // // 선택한 벤더 타입에 해당하는 이름 찾기
+ // const selectedVendor = vendorTypes.find((vendor) => vendor.id === vendorType)?.name || "전체"
- // 벤더 타입 변경 핸들러
- const handleVendorTypeChange = React.useCallback((value: string) => {
- const params = new URLSearchParams(searchParams.toString())
- if (value === "all") {
- params.delete("vendorType")
- } else {
- params.set("vendorType", value)
- }
+ // // 벤더 타입 변경 핸들러
+ // const handleVendorTypeChange = React.useCallback((value: string) => {
+ // const params = new URLSearchParams(searchParams.toString())
+ // if (value === "all") {
+ // params.delete("vendorType")
+ // } else {
+ // params.set("vendorType", value)
+ // }
- router.push(`${pathname}?${params.toString()}`)
- }, [router, pathname, searchParams])
+ // router.push(`${pathname}?${params.toString()}`)
+ // }, [router, pathname, searchParams])
return (
<>
@@ -62,7 +62,7 @@ export function TechVendorContainer({
{/* 왼쪽: 타이틀 & 설명 */}
<div>
<div className="flex items-center gap-2">
- <h2 className="text-2xl font-bold tracking-tight">기술영업 벤더 관리</h2>
+ <h2 className="text-2xl font-bold tracking-tight">기술영업 벤더 리스트</h2>
<InformationButton pagePath="evcp/tech-vendors" />
</div>
{/* <p className="text-muted-foreground">
@@ -70,7 +70,7 @@ export function TechVendorContainer({
</p> */}
</div>
- {/* 오른쪽: 벤더 타입 드롭다운 */}
+ {/* 오른쪽: 벤더 타입 드롭다운
<DropdownMenu>
<DropdownMenuTrigger asChild>
<Button variant="outline" className="min-w-[150px]">
@@ -89,7 +89,7 @@ export function TechVendorContainer({
</DropdownMenuItem>
))}
</DropdownMenuContent>
- </DropdownMenu>
+ </DropdownMenu> */}
</div>
{/* 컨텐츠 영역 */}
diff --git a/components/tech-vendors/tech-vendor-items-container.tsx b/components/tech-vendors/tech-vendor-items-container.tsx
deleted file mode 100644
index 49a9d4ee..00000000
--- a/components/tech-vendors/tech-vendor-items-container.tsx
+++ /dev/null
@@ -1,121 +0,0 @@
-"use client"
-
-import * as React from "react"
-import { useRouter, usePathname, useSearchParams } from "next/navigation"
-import { ChevronDown } from "lucide-react"
-
-import { type TechVendor } from "@/db/schema/techVendors"
-
-import { Button } from "@/components/ui/button"
-import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuTrigger,
-} from "@/components/ui/dropdown-menu"
-import { TechVendorItemsTable } from "@/lib/tech-vendors/items-table/item-table"
-import { getVendorItemsByType } from "@/lib/tech-vendors/service"
-
-interface ItemType {
- id: string
- name: string
- vendorType: string
-}
-
-interface TechVendorItemsContainerProps {
- vendorId: number
- vendor: TechVendor
- itemTypes: ItemType[]
-}
-
-export function TechVendorItemsContainer({
- vendorId,
- vendor,
- itemTypes,
-}: TechVendorItemsContainerProps) {
- const router = useRouter()
- const pathname = usePathname()
- const searchParamsObj = useSearchParams()
-
- // useSearchParams를 메모이제이션하여 안정적인 참조 생성
- const currentSearchParams = React.useMemo(
- () => searchParamsObj || new URLSearchParams(),
- [searchParamsObj]
- )
-
- // URL에서 현재 선택된 아이템 타입 가져오기 (기본값은 첫 번째 타입)
- const itemType = currentSearchParams.get("type") || itemTypes[0]?.id || "ship"
-
- // 선택한 아이템 타입에 해당하는 정보 찾기
- const selectedItemType = itemTypes.find((item) => item.id === itemType) || itemTypes[0]
-
- // 아이템 타입 변경 핸들러
- const handleItemTypeChange = React.useCallback((value: string) => {
- const params = new URLSearchParams(currentSearchParams.toString())
- params.set("type", value)
-
- router.push(`${pathname}?${params.toString()}`)
- }, [router, pathname, currentSearchParams])
-
- // 현재 선택된 벤더 타입에 대한 아이템 데이터 가져오기
- const promises = React.useMemo(() => {
- if (selectedItemType) {
- return getVendorItemsByType(vendorId, selectedItemType.vendorType)
- }
- return Promise.resolve({ data: [] })
- }, [vendorId, selectedItemType])
-
- // 벤더 타입이 하나뿐인 경우 드롭다운 숨기기
- const showDropdown = itemTypes.length > 1
-
- return (
- <>
- {/* 상단 영역: 제목 왼쪽 / 아이템 타입 선택기 오른쪽 */}
- <div className="flex items-center justify-between">
- {/* 왼쪽: 타이틀 & 설명 */}
- <div>
- <h4 className="text-lg font-medium">자재 목록</h4>
- <p className="text-sm text-muted-foreground">
- {vendor.vendorName}의 공급 가능한 자재 목록입니다.
- </p>
- </div>
-
- {/* 오른쪽: 아이템 타입 드롭다운 (타입이 여러 개인 경우에만 표시) */}
- {showDropdown && (
- <DropdownMenu>
- <DropdownMenuTrigger asChild>
- <Button variant="outline" className="min-w-[150px]">
- {selectedItemType?.name || "타입 선택"}
- <ChevronDown className="ml-2 h-4 w-4" />
- </Button>
- </DropdownMenuTrigger>
- <DropdownMenuContent align="end" className="w-[200px]">
- {itemTypes.map((item) => (
- <DropdownMenuItem
- key={item.id}
- onClick={() => handleItemTypeChange(item.id)}
- className={item.id === itemType ? "bg-muted" : ""}
- >
- {item.name}
- </DropdownMenuItem>
- ))}
- </DropdownMenuContent>
- </DropdownMenu>
- )}
- </div>
-
- {/* 컨텐츠 영역 */}
- <section className="overflow-hidden">
- <div>
- {selectedItemType && (
- <TechVendorItemsTable
- promises={promises}
- vendorId={vendorId}
- vendorType={selectedItemType.vendorType}
- />
- )}
- </div>
- </section>
- </>
- )
-} \ No newline at end of file