diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/page.tsx index 75d718411..51b5c255a 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/page.tsx @@ -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); }} diff --git a/apps/wr/app/api/proxy/[...url]/route.ts b/apps/wr/app/api/proxy/[...url]/route.ts index e847e8ad2..d779aec83 100644 --- a/apps/wr/app/api/proxy/[...url]/route.ts +++ b/apps/wr/app/api/proxy/[...url]/route.ts @@ -75,7 +75,7 @@ async function handler( if (refreshToken) { response.cookies.set(REFRESH_TOKEN, refreshToken, { httpOnly: true, - sameSite: "strict", // 다른 사이트에서 들어오는 모든 요청에 대해 쿠키를 보내지 않는 가장 강력한 설정 + sameSite: "lax", // 다른 사이트에서 들어오는 모든 요청에 대해 쿠키를 보내지 않는 가장 강력한 설정 domain: getCookieDomain(), path: "/", }); diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/index.tsx index 6340f1082..887f437a7 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/index.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/index.tsx @@ -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; @@ -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: { diff --git a/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/index.tsx index 35a3fb3d7..f89320c45 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/index.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/index.tsx @@ -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, }, })); diff --git a/apps/wr/app/store/store.tsx b/apps/wr/app/store/store.tsx index 3024d1cb1..c90fc18bf 100644 --- a/apps/wr/app/store/store.tsx +++ b/apps/wr/app/store/store.tsx @@ -346,7 +346,7 @@ export const StoreZus = ( return { ...initState, ...comFcltSearchAction(set), - ...pubFacActionsExport(set), + ...pubFacActionsExport(set, get), ...rainFacActionsExport(set), ...rswtFacActionsExport(set), ...matDmdActionsExport(set), diff --git a/apps/wr/components/lib/func/common.tsx b/apps/wr/components/lib/func/common.tsx index 1d9d4a43e..7afeda993 100644 --- a/apps/wr/components/lib/func/common.tsx +++ b/apps/wr/components/lib/func/common.tsx @@ -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 = {