diff --git a/apps/as/src/pages/instl-sncn/ui/cnfm-list-page.tsx b/apps/as/src/pages/instl-sncn/ui/cnfm-list-page.tsx
index 8b0bb9f38..0b126f54c 100644
--- a/apps/as/src/pages/instl-sncn/ui/cnfm-list-page.tsx
+++ b/apps/as/src/pages/instl-sncn/ui/cnfm-list-page.tsx
@@ -1,11 +1,12 @@
"use client";
-import { useMemo, useState } from "react";
+import { useEffect, useMemo, useState } from "react";
import { useRouter } from "next/navigation";
import { useQuery } from "@tanstack/react-query";
import { dayjs } from "@/shared/lib";
+import { useCodeList } from "@/entities/code";
import { InstlSncnApi, type InstlSncnMngSearchParams } from "@/entities/instl-sncn";
import "./cnfm-page.css";
@@ -65,6 +66,17 @@ function CnfmListPage() {
});
const [pageIndex, setPageIndex] = useState(0);
const [pageSize, setPageSize] = useState(10);
+ const [taskDialogOpen, setTaskDialogOpen] = useState(false);
+ const [selectedTaskSeComCd, setSelectedTaskSeComCd] = useState("");
+
+ const { data: fnrsCodeList = [] } = useCodeList("FNRS");
+
+ useEffect(() => {
+ if (!taskDialogOpen) return;
+ if (selectedTaskSeComCd) return;
+ if (fnrsCodeList.length === 0) return;
+ setSelectedTaskSeComCd(fnrsCodeList[0].lwpoCd);
+ }, [taskDialogOpen, selectedTaskSeComCd, fnrsCodeList]);
const query = useQuery({
queryKey: ["instl-sncn-list", search, pageIndex, pageSize],
@@ -91,6 +103,23 @@ function CnfmListPage() {
setSearch({ bizNm, taskSeComCd, sidoComCd, sggComCd });
};
+ const handleOpenTaskDialog = () => {
+ setSelectedTaskSeComCd((prev) => prev || fnrsCodeList[0]?.lwpoCd || "");
+ setTaskDialogOpen(true);
+ };
+
+ const handleConfirmTaskDialog = () => {
+ const selected = fnrsCodeList.find((item) => item.lwpoCd === selectedTaskSeComCd);
+ if (!selected) return;
+
+ const query = new URLSearchParams({
+ taskSeComCd: selected.lwpoCd,
+ taskSeComCdNm: selected.lwpoCdNm,
+ });
+ setTaskDialogOpen(false);
+ router.push(`/instl-sncn/register?${query.toString()}`);
+ };
+
return (
{/* 검색 영역 */}
@@ -160,7 +189,7 @@ function CnfmListPage() {
@@ -311,6 +340,58 @@ function CnfmListPage() {
+
+ {taskDialogOpen && (
+
+
+
+
업무구분 선택
+
+
+
+
+
+ {fnrsCodeList.map((item) => (
+
+ ))}
+
+
+
+
+
+
+
+
+
+ )}
);
}
diff --git a/apps/as/src/pages/instl-sncn/ui/cnfm-regist-page.tsx b/apps/as/src/pages/instl-sncn/ui/cnfm-regist-page.tsx
index 18e419d6f..9fbd1f552 100644
--- a/apps/as/src/pages/instl-sncn/ui/cnfm-regist-page.tsx
+++ b/apps/as/src/pages/instl-sncn/ui/cnfm-regist-page.tsx
@@ -1,7 +1,7 @@
"use client";
-import { useMemo, useState } from "react";
-import { useRouter } from "next/navigation";
+import { useEffect, useMemo, useState } from "react";
+import { useRouter, useSearchParams } from "next/navigation";
import { useQuery } from "@tanstack/react-query";
@@ -55,6 +55,14 @@ const ReadCell = ({ value }: { value: string | number }) => (
/* ------------------------------------------------------------------ */
function CnfmRegistPage() {
const router = useRouter();
+ const searchParams = useSearchParams();
+
+ const taskSeComCdNm = searchParams?.get("taskSeComCdNm") || "하수관로";
+ const [taskSeComCd, setTaskSeComCd] = useState("");
+
+ useEffect(() => {
+ setTaskSeComCd(searchParams?.get("taskSeComCd") || "");
+ }, [searchParams]);
/* ── 기본 정보 ── */
const [bzNm, setBzNm] = useState("");
@@ -181,11 +189,19 @@ function CnfmRegistPage() {
function handleSave() {
if (!fnValidation("SAVE")) return;
+ const payload = {
+ taskSeComCd,
+ };
+ void payload;
alert("저장(임시) API 연동 후 progrsSttus=SV 전송");
}
function handleSubmit() {
if (!fnValidation("PRESENTN")) return;
+ const payload = {
+ taskSeComCd,
+ };
+ void payload;
alert("제출 API 연동 후 progrsSttus=ST 전송");
}
@@ -292,7 +308,8 @@ function CnfmRegistPage() {
| 구분 |
- 하수관로
+ {taskSeComCdNm}
+
|
신청 지자체 |
|