wr: 하수재이용시설등록 수정

This commit is contained in:
2026-06-05 16:15:46 +09:00
parent 54d3a35b38
commit 3fee2a781f
6 changed files with 65 additions and 40 deletions
@@ -31,7 +31,6 @@ import { btnClass } from "@/app/store/common/code";
import { Tabs, TabsList, TabsTrigger, TabsContent } from "@common/components";
import { useCallback, useEffect, useRef, useState } from "react";
import ListDiv from "@common/business_components/ui/list_div";
import { tableData } from "@/components/lib/func/common";
import type {
customPbnst,
fcBizType,
@@ -56,7 +55,6 @@ import { useAlertStore } from "@/src/shared/lib";
export default function PublicReuseFaciltyInsert() {
const {
auth,
code,
pbnst,
pubHasuInit,
pbnstInsert,
@@ -112,11 +110,11 @@ export default function PublicReuseFaciltyInsert() {
useInitRef.current = true;
}, []);
useEffect(() => {
if (useInitRef.current == true && laeSeCd !== undefined) {
pubHasuInit("1", laeSeCd); //page: string, sggOrCity: string
}
}, [useInitRef.current, laeSeCd]);
// useEffect(() => {
// if (useInitRef.current == true && laeSeCd !== undefined) {
// pubHasuInit(1, laeSeCd);
// }
// }, [useInitRef.current, laeSeCd]);
const onSubmit = async (valuse: { items: PbnstRegArrrayType }) => {
const data = writeRgtrAndMdfr(valuse.items);
@@ -156,7 +154,7 @@ export default function PublicReuseFaciltyInsert() {
message += "하수재이용 시설 사업 ";
}
alert(message + "오류 입니다 ");
pubHasuInit("1", laeSeCd);
pubHasuInit(1, laeSeCd);
}
};
if (await confirm(t("isUpdatetMsg"))) {
@@ -233,10 +231,12 @@ export default function PublicReuseFaciltyInsert() {
}, [items]);
useEffect(() => {
if (code.sggCd.length && pbnstHasuRes.length > 0) {
setbdstTable(tableData(pbnstHasuRes, { code }));
if (pbnstHasuRes.length > 0) {
setbdstTable(pbnstHasuRes);
} else {
setbdstTable([]);
}
}, [code, pbnstHasuRes]);
}, [pbnstHasuRes]);
const cellClick = (val: number | undefined) => {
if (val === undefined) return;
@@ -288,7 +288,8 @@ export default function PublicReuseFaciltyInsert() {
}, [pbnstRes, append, selectRow]);
useEffect(() => {
pubHasuInit(String(pageNation), laeSeCd); // 해당 지자체의 하수처리시설 조회
if (laeSeCd === undefined) return;
pubHasuInit(pageNation, laeSeCd); // 해당 지자체의 하수처리시설 조회
isResetPage(false);
setSelectRow(undefined);
setSelectedRowIndex(-1);
@@ -316,9 +317,9 @@ export default function PublicReuseFaciltyInsert() {
// size={"sm"}
onClick={() => {
if (searchTxt && searchTxt?.length > 0) {
pubHasuSearch(String(pageNation), laeSeCd, searchTxt);
pubHasuSearch(pageNation, laeSeCd, searchTxt);
} else {
pubHasuInit(String(pageNation), laeSeCd);
pubHasuInit(pageNation, laeSeCd);
}
isResetPage(true);
}}
+1 -1
View File
@@ -75,7 +75,7 @@ async function handler(
if (refreshToken) {
response.cookies.set(REFRESH_TOKEN, refreshToken, {
httpOnly: true,
sameSite: "strict", // 다른 사이트에서 들어오는 모든 요청에 대해 쿠키를 보내지 않는 가장 강력한 설정
sameSite: "lax", // 다른 사이트에서 들어오는 모든 요청에 대해 쿠키를 보내지 않는 가장 강력한 설정
domain: getCookieDomain(),
path: "/",
});
@@ -5,6 +5,7 @@ import {
getFetch,
postFectch,
putFectch,
getFetchWithCount
} from "@/components/lib/api";
import { DEFAULT_LIST_SIZE, SITE_ID } from "@/src/shared/config";
import type { chHeadType } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList";
@@ -61,10 +62,11 @@ export type pubFacState = {
dmdComList: any[];
apiMessage: string;
pbnstHasuResCount: number;
fclts: any[] | null;
};
};
type pubFacActions = {
pubHasuInit: (page: string, sggOrCity: string) => void;
pubHasuInit: (page: number, sggOrCity: string) => void;
pbnstRegClick: (pubHasuRes: pubHasuType) => void;
//pbnstReg: (txt: string | undefined) => void;
pbnstInsert(pbnstRes: customPbnst): Promise<string>;
@@ -73,7 +75,7 @@ type pubFacActions = {
fileDownLoadName: (atflCd: string, fileName: string) => void;
pbnstRuseFcltUpdate: (ruseRes: customPbnst[]) => void;
pbnstRuseBizUpdate: (ruseRes: fcBizType[]) => void;
pubHasuSearch: (page: string, sggOrCity: string, searchTxt: string) => void;
pubHasuSearch: (page: number, sggOrCity: string, searchTxt: string) => void;
getFcOrgwts: (fcltPkList: string[], size: number) => void;
};
export type pubFacType = pubFacState & pubFacActions;
@@ -98,38 +100,59 @@ export const pubFacStateExport: pubFacState = {
dmdComList: [],
apiMessage: "",
pbnstHasuResCount: 1,
fclts: null,
},
};
// 재사용시설에 대한 정보 조회
export const checkWrRegList = async () => {
export const checkWrRegList = async (get: any, set: any) => {
const { pbnst } = get();
if (Array.isArray(pbnst.fclts)) {
return pbnst.fclts;
}
const wrRegList = await getFetch("wr", `/reuseFc/pubFc`);
return wrRegList;
const fclts = Array.isArray(wrRegList) ? wrRegList : [];
set((state: pubFacState) => ({
...state,
pbnst: {
...state.pbnst,
fclts,
},
}));
return fclts;
};
// 하수처리시설 정보 조회
const hasuListFetch = async (
page: string,
get: any,
set: any,
page: number = 1,
sggOrCity: string, // 해당 지자체의 하수처리시설 조회
searchTxt?: string
) => {
const checkWrRegListRes = await checkWrRegList(); // 재사용시설에 대한 정보 조회
const wrData = await checkWrRegList(get, set); // 재사용시설에 대한 정보 조회
const wrBscFctCdSet = new Set(
wrData
.map((wrItem: any) => (typeof wrItem === "string" ? wrItem.trim() : ""))
);
let url = `/prcsFclt/ruseInfo/${page ? page : 1}/${DEFAULT_LIST_SIZE}/A/${sggOrCity ? sggOrCity : "11"}/0/1/SW`;
const data = checkWrRegListRes.filter((item: string) => item !== "");
if (searchTxt) {
url = url + `/${searchTxt}`;
let url = `/prcsFclt/ruseInfo/reg/${page}/${DEFAULT_LIST_SIZE}/A/${sggOrCity ? sggOrCity : "0"}/0/1/SW`;
if (searchTxt?.trim()) {
url += `?swtrmtFcltNm=${encodeURIComponent(searchTxt.trim())}`;
}
const rainRes = await postFectch(url, data, fetchType.COMMON); // fo
const fcltRes = await getFetchWithCount(fetchType.COMMON, url); // fo
const hasuList = rainRes.data.map((item: any) => {
const hasuList = fcltRes.data.map((item: any) => {
return {
...item,
fctCpc: Number(item.fctCpc) || 0,
ruse: item.ruse === false ? "N" : "Y",
ruse: item?.bscFctCd && wrBscFctCdSet.has(item.bscFctCd) ? "Y" : "N",
};
});
return { data: hasuList, count: rainRes.count };
return { data: hasuList, count: fcltRes.count };
};
const initFetch = async (ruseFcltPk: string | undefined) => {
@@ -172,12 +195,12 @@ export const writeRgtrAndMdfr = (data: customPbnst[]) => {
return data;
};
export const pubFacActionsExport: (set: any) => pubFacActions = (set: any) => {
export const pubFacActionsExport: (set: any, get: any) => pubFacActions = (set: any, get: any) => {
return {
// 하수처리시설을 조회한다(운영실태)
pubHasuInit: async (page: string, sggOrCity: string) => {
pubHasuInit: async (page: number, sggOrCity: string) => {
try {
const pbnstHasuRes = await hasuListFetch(page, sggOrCity); // /prcsFclt/ruseInfo
const pbnstHasuRes = await hasuListFetch(get, set, page, sggOrCity); // /prcsFclt/ruseInfo
return set((state: pubFacState) => ({
...state,
pbnst: {
@@ -192,12 +215,12 @@ export const pubFacActionsExport: (set: any) => pubFacActions = (set: any) => {
},
// 하수처리시설을 조회한다(운영실태) (처리시설명 포함)
pubHasuSearch: async (
page: string,
page: number,
sggOrCity: string,
searchTxt: string
) => {
try {
const pbnstHasuRes = await hasuListFetch(page, sggOrCity, searchTxt);
const pbnstHasuRes = await hasuListFetch(get, set, page, sggOrCity, searchTxt);
return set((state: pubFacState) => ({
...state,
pbnst: {
@@ -47,7 +47,7 @@ export type pbnstSttnState = {
pbnstSttnResCount: number;
excelList: [];
fclts: string[];
isInit: boolean;
isInit: boolean; // wr 하수재이용시설 조회했는지 점검
};
};
@@ -254,6 +254,7 @@ export const pbnstSttnActionsExport: (set: any) => pbnstSttnActions = (
return set((state: pbnstSttnState) => ({
pbnstSttn: {
...state.pbnstSttn,
isInit: true, // wr 하수재이용시설을 조회 여부??
fclts: fclts,
},
}));
+1 -1
View File
@@ -346,7 +346,7 @@ export const StoreZus = (
return {
...initState,
...comFcltSearchAction(set),
...pubFacActionsExport(set),
...pubFacActionsExport(set, get),
...rainFacActionsExport(set),
...rswtFacActionsExport(set),
...matDmdActionsExport(set),
+3 -3
View File
@@ -66,9 +66,9 @@ export const tableData = (data: any, code: comCodeState) => {
...item,
sggText: sggText ?? "없음",
cityText: cityText ?? "없음",
bdsgUsgText: bdsgUsgText,
lawTrgtYn: lawTrgtYn,
grntchBdstCertGrdText: grntchBdstCertGrdText,
bdsgUsgText: bdsgUsgText, // 건물용도명
lawTrgtYn: lawTrgtYn, // 법정대상 여부
grntchBdstCertGrdText: grntchBdstCertGrdText, // 녹색건축인증등급명
};
} else {
returnData = {