[as instl] 업무 구분 선택 화면 추가

This commit is contained in:
2026-05-21 14:49:39 +09:00
parent d864cf73b9
commit 9673ee0ed2
4 changed files with 38 additions and 18 deletions
+5 -4
View File
@@ -1,6 +1,7 @@
export { InstlSncnApi } from "./api/instl-sncn-service";
export type {
InstlSncnMng,
InstlSncnMngSearchParams,
SpringPage,
export {
INSTL_SNCN_REGISTER_SELECTION_KEY,
type InstlSncnMng,
type InstlSncnMngSearchParams,
type SpringPage,
} from "./model/instl-sncn-interface";
@@ -1,3 +1,5 @@
export const INSTL_SNCN_REGISTER_SELECTION_KEY = "instlSncnRegisterSelection";
export interface SpringPage<T> {
content: T[];
totalElements: number;
@@ -7,7 +7,11 @@ 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 {
INSTL_SNCN_REGISTER_SELECTION_KEY,
InstlSncnApi,
type InstlSncnMngSearchParams,
} from "@/entities/instl-sncn";
import "./cnfm-page.css";
@@ -69,7 +73,7 @@ function CnfmListPage() {
const [taskDialogOpen, setTaskDialogOpen] = useState(false);
const [selectedTaskSeComCd, setSelectedTaskSeComCd] = useState("");
const { data: fnrsCodeList = [] } = useCodeList("FNRS");
const { data: fnrsCodeList = [] } = useCodeList("INSTL");
useEffect(() => {
if (!taskDialogOpen) return;
@@ -112,12 +116,15 @@ function CnfmListPage() {
const selected = fnrsCodeList.find((item) => item.lwpoCd === selectedTaskSeComCd);
if (!selected) return;
const query = new URLSearchParams({
taskSeComCd: selected.lwpoCd,
taskSeComCdNm: selected.lwpoCdNm,
});
sessionStorage.setItem(
INSTL_SNCN_REGISTER_SELECTION_KEY,
JSON.stringify({
taskSeComCd: selected.lwpoCd,
taskSeComCdNm: selected.lwpoCdNm,
}),
);
setTaskDialogOpen(false);
router.push(`/instl-sncn/register?${query.toString()}`);
router.push("/instl-sncn/register");
};
return (
@@ -1,12 +1,13 @@
"use client";
import { useEffect, useMemo, useState } from "react";
import { useRouter, useSearchParams } from "next/navigation";
import { useRouter } from "next/navigation";
import { useQuery } from "@tanstack/react-query";
import type { AcntgSeMngTreeDto } from "@/entities/acntg";
import { acntgService } from "@/entities/acntg";
import { INSTL_SNCN_REGISTER_SELECTION_KEY } from "@/entities/instl-sncn";
import { Button, Input } from "@common/components";
import "./cnfm-page.css";
@@ -55,14 +56,23 @@ const ReadCell = ({ value }: { value: string | number }) => (
/* ------------------------------------------------------------------ */
function CnfmRegistPage() {
const router = useRouter();
const searchParams = useSearchParams();
const taskSeComCdNm = searchParams?.get("taskSeComCdNm") || "하수관로";
const [taskSeComCd, setTaskSeComCd] = useState("");
const [taskSeComCdNm, setTaskSeComCdNm] = useState("재이용수");
const [taskSeComCd, setTaskSeComCd] = useState("RE");
useEffect(() => {
setTaskSeComCd(searchParams?.get("taskSeComCd") || "");
}, [searchParams]);
const raw = sessionStorage.getItem(INSTL_SNCN_REGISTER_SELECTION_KEY);
if (!raw) return;
try {
const parsed = JSON.parse(raw) as { taskSeComCd?: string; taskSeComCdNm?: string };
setTaskSeComCd(parsed.taskSeComCd || "RE");
setTaskSeComCdNm(parsed.taskSeComCdNm || "재이용수");
} catch {
// noop
} finally {
sessionStorage.removeItem(INSTL_SNCN_REGISTER_SELECTION_KEY);
}
}, []);
/* ── 기본 정보 ── */
const [bzNm, setBzNm] = useState("");