summaryrefslogtreecommitdiff
path: root/components/pq/client-pq-input-wrapper.tsx
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-04-08 03:08:19 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-04-08 03:08:19 +0000
commit9ceed79cf32c896f8a998399bf1b296506b2cd4a (patch)
treef84750fa6cac954d5e31221fc47a54c655fc06a9 /components/pq/client-pq-input-wrapper.tsx
parent230ce796836c25df26c130dbcd616ef97d12b2ec (diff)
로그인 및 미들웨어 처리. 구조 변경
Diffstat (limited to 'components/pq/client-pq-input-wrapper.tsx')
-rw-r--r--components/pq/client-pq-input-wrapper.tsx90
1 files changed, 90 insertions, 0 deletions
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 (
+ <Shell className="gap-2">
+ {/* 헤더 - 프로젝트 정보 포함 */}
+ <div className="space-y-2">
+ <h2 className="text-2xl font-bold tracking-tight">
+ Pre-Qualification Check Sheet
+ {currentProject && (
+ <span className="ml-2 text-muted-foreground">
+ - {currentProject.projectCode}
+ </span>
+ )}
+ </h2>
+ <p className="text-muted-foreground">
+ PQ에 적절한 응답을 제출하시기 바랍니다.
+ </p>
+ </div>
+
+ {/* 일반/프로젝트 PQ 선택 탭 */}
+ {projectPQs.length > 0 && (
+ <div className="border-b">
+ <Tabs defaultValue={projectId ? `project-${projectId}` : "general"}>
+ <TabsList>
+ <TabsTrigger value="general" asChild>
+ <a href="/partners/pq">일반 PQ</a>
+ </TabsTrigger>
+
+ {projectPQs.map(project => (
+ <TabsTrigger key={project.projectId} value={`project-${project.projectId}`} asChild>
+ <a href={`/partners/pq?projectId=${project.projectId}`}>
+ {project.projectCode}
+ </a>
+ </TabsTrigger>
+ ))}
+ </TabsList>
+ </Tabs>
+ </div>
+ )}
+
+ {/* PQ 입력 탭 */}
+ <React.Suspense fallback={<Skeleton className="h-7 w-52" />}>
+ <PQInputTabs
+ data={allPQData}
+ vendorId={vendorId}
+ projectId={projectId}
+ projectData={currentProject}
+ />
+ </React.Suspense>
+ </Shell>
+ )
+} \ No newline at end of file