From 9ceed79cf32c896f8a998399bf1b296506b2cd4a Mon Sep 17 00:00:00 2001 From: dujinkim Date: Tue, 8 Apr 2025 03:08:19 +0000 Subject: 로그인 및 미들웨어 처리. 구조 변경 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/pq/client-pq-input-wrapper.tsx | 90 +++++++++++++++++++++++++++++++ components/pq/pq-review-detail.tsx | 9 ++-- 2 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 components/pq/client-pq-input-wrapper.tsx (limited to 'components/pq') diff --git a/components/pq/client-pq-input-wrapper.tsx b/components/pq/client-pq-input-wrapper.tsx new file mode 100644 index 00000000..89f0fa78 --- /dev/null +++ b/components/pq/client-pq-input-wrapper.tsx @@ -0,0 +1,90 @@ +"use client" + +import * as React from "react" +import { Shell } from "@/components/shell" +import { Skeleton } from "@/components/ui/skeleton" +import { PQInputTabs } from "@/components/pq/pq-input-tabs" +import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs" +import { PQGroupData, ProjectPQ } from "@/lib/pq/service" +import { useRouter, useSearchParams } from "next/navigation" + +interface ClientPQWrapperProps { + allPQData: PQGroupData[] + projectPQs: ProjectPQ[] + vendorId: number + rawSearchParams: { + projectId?: string + } +} + +export function ClientPQWrapper({ + allPQData, + projectPQs, + vendorId, + rawSearchParams +}: ClientPQWrapperProps) { + const searchParams = useSearchParams() + const projectIdParam = searchParams?.get('projectId') + + // 클라이언트 측에서 projectId 파싱 + const projectId = projectIdParam ? parseInt(projectIdParam, 10) : undefined + + // 현재 프로젝트 정보 찾기 + const currentProject = projectId + ? projectPQs.find(p => p.projectId === projectId) + : null + + // 필요한 경우 여기서 PQ 데이터를 필터링할 수 있음 + // 예: 모든 데이터를 가져왔는데 현재 projectId에 따라 필터링이 필요한 경우 + // const filteredPQData = projectId ? allPQData.filter(...) : allPQData; + + return ( + + {/* 헤더 - 프로젝트 정보 포함 */} +
+

+ Pre-Qualification Check Sheet + {currentProject && ( + + - {currentProject.projectCode} + + )} +

+

+ PQ에 적절한 응답을 제출하시기 바랍니다. +

+
+ + {/* 일반/프로젝트 PQ 선택 탭 */} + {projectPQs.length > 0 && ( +
+ + + + 일반 PQ + + + {projectPQs.map(project => ( + + + {project.projectCode} + + + ))} + + +
+ )} + + {/* PQ 입력 탭 */} + }> + + +
+ ) +} \ No newline at end of file diff --git a/components/pq/pq-review-detail.tsx b/components/pq/pq-review-detail.tsx index 18af02ed..e1bc5510 100644 --- a/components/pq/pq-review-detail.tsx +++ b/components/pq/pq-review-detail.tsx @@ -56,7 +56,9 @@ interface VendorPQAdminReviewProps { projectId?: number projectName?: string projectStatus?: string - loadData: () => Promise + // loadData: () => Promise + loadData: (vendorId: number, projectId?: number) => Promise + pqType: 'general' | 'project' } @@ -81,7 +83,8 @@ export default function VendorPQAdminReview({ const fetchData = async () => { setIsDataLoading(true) try { - const freshData = await loadData() + const freshData = await loadData(vendor.id, projectId) + setPqData(freshData) } catch (error) { console.error("Error loading PQ data:", error) @@ -98,7 +101,7 @@ export default function VendorPQAdminReview({ } else { setPqData(data) } - }, [data, loadData, toast]) + }, [data, loadData, vendor.id, projectId, toast]) // 다이얼로그 상태들 const [showRequestDialog, setShowRequestDialog] = React.useState(false) -- cgit v1.2.3