From 0bc87e2082ad1392f21bfac58a7b6be0f55a3feb Mon Sep 17 00:00:00 2001 From: leedj312 Date: Tue, 16 Sep 2025 15:25:08 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AC=BC=EC=9E=AC=EC=9D=B4=EC=9A=A9=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=ED=95=9C=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=9E=90=EC=9D=98=20=EC=8B=9C=EA=B5=B0=EA=B5=AC=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EA=B0=92=20=EB=B3=80=EA=B2=BD=20(=EC=8B=9C=EC=84=A4=EB=AC=BC?= =?UTF-8?q?=20=EB=93=B1=EB=A1=9D=20=EB=B6=80=EB=B6=84=EB=A7=8C=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruseFcltMng/fcltReg/htdflReg/page.tsx | 53 ++++++++++-------- .../ruseFcltMng/fcltReg/rainReg/page.tsx | 55 ++++++++++++------- .../ruseFcltMng/fcltReg/rswtReg/page.tsx | 45 ++++++++++----- apps/wr/app/store/common/auth/index.tsx | 48 ++++++++++++---- .../ruseFcltMng/fcltReg/rainReg/index.tsx | 20 ++----- .../ruseFcltMng/fcltReg/rswtReg/index.tsx | 7 --- apps/wr/app/store/store.tsx | 4 +- 7 files changed, 139 insertions(+), 93 deletions(-) diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx index b0b2e7182..c434f922d 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx @@ -13,16 +13,23 @@ import { SearchInput, Title, UiModal, - UiTable + UiTable, } from "@common/business_components"; import ListDiv from "@common/business_components/ui/list_div"; import { Button } from "@common/components"; -import { useEffect, useState } from "react"; +import { useEffect, useRef, useState } from "react"; import { Toaster } from "react-hot-toast"; export default function Home() { - const { auth,code, htdfl, initHtdflReg, getHtdflBdstData, htdflNmSearch } = - useWrStore((state) => state); + const { + auth, + code, + htdfl, + getLaeSeCdCheck, + initHtdflReg, + getHtdflBdstData, + htdflNmSearch, + } = useWrStore((state) => state); const [searchTxt, setSearchTxt] = useState(""); const [pageNation, setPageNation] = useState(1); @@ -30,15 +37,22 @@ export default function Home() { const [bdstTable, setbdstTable] = useState(); const [issNewReg, setIsNewReg] = useState(false); - - const { htdflRes ,htdflResCount} = htdfl; - const { regAuthrtYn, mdfcnAuthrtYn } = auth; + const { htdflRes, htdflResCount } = htdfl; + const { regAuthrtYn, mdfcnAuthrtYn, laeSeCd } = auth; + const useInitRef = useRef(false); useEffect(() => { - if (!htdfl.isInit) { - initHtdflReg("0"); + getLaeSeCdCheck(); + useInitRef.current = true; + }, []); + + useEffect(() => { + setIsNewReg(false); + if (useInitRef.current == true && laeSeCd !== undefined) { + initHtdflReg(laeSeCd); } - }, [htdfl.isInit, initHtdflReg]); + }, [useInitRef.current, laeSeCd]); + useEffect(() => { if (htdflRes && htdflRes.length > 0) { const htdflData = tableData(htdflRes, { code }).map( @@ -68,18 +82,8 @@ export default function Home() { setHtdflForm(htdflRes[val]); } } - // if (headId === "bdstChgYn" && val !== undefined) { - // if ( - // htdflRes[val]?.bdstInfoSn != null && - // htdflRes[val]?.chgBuilding?.length > 0 - // ) { - // bdstChgModal(htdflRes[val]?.chgBuilding as chgBuilding[]); - // } - // } }; - // const bdstChgModal = (chgBuilding: chgBuilding[]) => { - // setBdstChgProps({ isOpen: true, chgBuilding: chgBuilding }); - // }; + useEffect(() => { getHtdflBdstData(pageNation, "0"); }, [pageNation]); @@ -113,9 +117,10 @@ export default function Home() { > 조회 - diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx index f2d121887..629263c31 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx @@ -1,7 +1,10 @@ "use client"; import { useWrStore } from "@/app/store"; -import { rainRegSize, type customRainBdst } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; -import { formatArchArea, tableData } from "@/components/lib/func/commom"; +import { + rainRegSize, + type customRainBdst, +} from "@/app/store/ruseFcltMng/fcltReg/rainReg"; +import { formatArchArea, tableData } from "@/components/lib/func/commom"; import RainRegForm from "@/components/ui/form/fcltReg/rainReg/rainRegForm"; import { BdstReg } from "@/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal"; import { @@ -16,33 +19,43 @@ import { } from "@common/business_components"; import ListDiv from "@common/business_components/ui/list_div"; import { Button } from "@common/components"; -import { useEffect, useState } from "react"; -import { Toaster } from "react-hot-toast"; +import { useEffect, useRef, useState } from "react"; +import { Toaster } from "react-hot-toast"; export default function Home() { - const { auth, rain, code, initRain, rainSearch, getRainData } = useWrStore( - (state) => { - return state; - } - ); - - const { regAuthrtYn, mdfcnAuthrtYn } = auth; - + const { + auth, + rain, + code, + initRain, + rainSearch, + getRainData, + getLaeSeCdCheck, + } = useWrStore((state) => { + return state; + }); + const { regAuthrtYn, mdfcnAuthrtYn, laeSeCd } = auth; const { rainRes, rainResCount } = rain; + const useInitRef = useRef(false); const [rainForm, setRainForm] = useState(); const [issNewReg, setIsNewReg] = useState(false); const [pageNation, setPageNation] = useState(1); const [bdstTable, setbdstTable] = useState(); const [searchTxt, setSearchTxt] = useState(); + useEffect(() => { + getLaeSeCdCheck(); + useInitRef.current = true; + }, []); + useEffect(() => { setIsNewReg(false); - if (!rain.isInit) { - initRain("41"); + if (useInitRef.current == true && laeSeCd !== undefined) { + initRain(laeSeCd); } - }, [rain.isInit, initRain]); + }, [useInitRef.current, laeSeCd]); useEffect(() => { if (code.sggCd.length > 0) { @@ -51,9 +64,9 @@ export default function Home() { (item: customRainBdst) => { return { ...item, - archArea: formatArchArea(item?.archArea,1), + archArea: formatArchArea(item?.archArea, 1), bdstChgYn: item.chgBuilding[0]?.bdstChgNm != null ? "Y" : "N", - frstArchPrmsnDt:item?.frstArchPrmsnDt||'확인불가' + frstArchPrmsnDt: item?.frstArchPrmsnDt || "확인불가", }; } ); @@ -71,7 +84,7 @@ export default function Home() { }; useEffect(() => { - getRainData(pageNation, "41"); + getRainData(pageNation, laeSeCd); }, [pageNation]); return ( @@ -95,7 +108,7 @@ export default function Home() { className="" size={"sm"} onClick={() => { - rainSearch(searchTxt || "", 1, "41"); + rainSearch(searchTxt || "", 1, laeSeCd); //rainSearch(searchTxt || "", pageNation, "41"); }} > @@ -105,7 +118,7 @@ export default function Home() { size={"sm"} className="" onClick={() => { - setIsNewReg(!issNewReg); + setIsNewReg(!issNewReg); }} disabled={regAuthrtYn === "N"} > @@ -138,7 +151,7 @@ export default function Home() {
- + state - ); - const { regAuthrtYn, mdfcnAuthrtYn } = auth; + const { + auth, + code, + rswt, + initRswt, + rswtBdstSearch, + getRswtBdstData, + getLaeSeCdCheck, + } = useWrStore((state) => state); + const { regAuthrtYn, mdfcnAuthrtYn, laeSeCd } = auth; const [rswtForm, setRswtForm] = useState(); const [searchTxt, setSearchTxt] = useState(); @@ -32,14 +41,22 @@ export default function Home() { const [selectVal, setSelect] = useState(); const [bdstTable, setbdstTable] = useState(); const { rswtRes, rswtResCount } = rswt; + const useInitRef = useRef(false); + useEffect(() => { - if (!rswt.isInit) { - initRswt("41"); + getLaeSeCdCheck(); + useInitRef.current = true; + }, []); + + useEffect(() => { + setIsNewReg(false); + if (useInitRef.current == true && laeSeCd !== undefined) { + initRswt(laeSeCd); } - }, [rswt.isInit, initRswt]); + }, [useInitRef.current, laeSeCd]); + useEffect(() => { if (code.sggCd.length > 0) { - if (rswtRes?.length > 0) { const rswtData = tableData(rswtRes, { code })?.map( (item: customRswtBdst) => { @@ -63,7 +80,6 @@ export default function Home() { } } // }, [code, rswtRes, selectVal]); - }, [code, rswtRes]); useEffect(() => { if (rswtRes && rswtRes.length > 0) { @@ -79,11 +95,10 @@ export default function Home() { setSelect(val); } } - }; useEffect(() => { - getRswtBdstData(pageNation, "41"); + getRswtBdstData(pageNation,laeSeCd); }, [pageNation]); return ( @@ -107,7 +122,7 @@ export default function Home() { size={"sm"} className="" onClick={() => { - rswtBdstSearch(searchTxt || "", pageNation, "41"); + rswtBdstSearch(searchTxt || "", pageNation,laeSeCd); }} > 조회 diff --git a/apps/wr/app/store/common/auth/index.tsx b/apps/wr/app/store/common/auth/index.tsx index 21be6e01c..5e65f3b6a 100644 --- a/apps/wr/app/store/common/auth/index.tsx +++ b/apps/wr/app/store/common/auth/index.tsx @@ -1,4 +1,5 @@ -import { getFetchWithCount } from "@/components/lib/api"; +import { fetchType, getFetchWithCount } from "@/components/lib/api"; +import { getUserInfo } from "@common/components/api"; import toast from "react-hot-toast"; export type authState = { @@ -8,6 +9,7 @@ export type authState = { regAuthrtYn: string; mdfcnAuthrtYn: string; delAuthrtYn: string; + laeSeCd: string; }; }; @@ -20,26 +22,32 @@ export const authStateExport: authState = { regAuthrtYn: "Y", mdfcnAuthrtYn: "Y", delAuthrtYn: "Y", + laeSeCd: "", }, }; export type authActions = { getMenuAuthrts: (menuCd: number) => void; + getLaeSeCdCheck: () => Promise; }; -export const authActionsExport: (set: any) => authActions = (set: any) => { +export const authActionsExport: (set: any, get: any) => authActions = ( + set: any, + get: any +) => { return { getMenuAuthrts: async (menuCd: number) => { - try{ + try { + const response = await getFetchWithCount( + fetchType.LOCAL, - const response = await getFetchWithCount( 'LOCAL', - `/cms-service/api/v1/menu-authrts/pageinfo/${menuCd}` ); set((state: authState) => { return { ...state, auth: { + ...state.auth, mngAuthrtYn: response[0].mngAuthrtYn, inqAuthrtYn: response[0].mngAuthrtYn, regAuthrtYn: response[0].mngAuthrtYn, @@ -48,12 +56,32 @@ export const authActionsExport: (set: any) => authActions = (set: any) => { }, }; }); - - }catch(e){ - - toast.error('권한 정보를 가져오는 중 오류가 발생했습니다. 관리자에게 문의하세요.'); - console.error('Error fetching menu authorities:', e); + } catch (e) { + toast.error( + "권한 정보를 가져오는 중 오류가 발생했습니다. 관리자에게 문의하세요." + ); + console.error("Error fetching menu authorities:", e); + } + }, + getLaeSeCdCheck: async () => { + try { + const current = get().auth.laeSeCd; + if (current && current !== "") { + return; + } + const infoMe = await getUserInfo(); + const isLaeSeCd = + infoMe.laeSeCd.slice(0, 2) === "G3" ? infoMe.laeSeCd.slice(2) : "0"; + set((state: authState) => ({ + ...state, + auth: { + ...state.auth, + laeSeCd: isLaeSeCd, + }, + })); + } catch (e) { + console.error("laeSeCd check error", e); } }, }; diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx index b44f5f700..ff263783a 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx @@ -1,5 +1,5 @@ import type { TableUpperProps } from "@/app/store/common/type/header"; -import { getFetchWithCount, postFectch, putFectch } from "@/components/lib/api"; +import { fetchType, getFetchWithCount, postFectch, putFectch } from "@/components/lib/api"; import toast from "react-hot-toast"; import { z } from "zod"; import { makeMdfr, makeRstr } from "../bdstReg"; @@ -71,7 +71,6 @@ export const selectClass = "w-full h-full !text-xl"; export type rainFacState = { rain: { - isInit: boolean; upHeadList: TableUpperProps[]; rainRes: customRainBdst[]; rainResCount: number; @@ -80,7 +79,7 @@ export type rainFacState = { type rainFacSActions = { initRain: (code: string | number) => void; getRainData: (pageNation: number, code: string | number) => void; - rainSearch: (txt: string, pageNation: number, code: string | number) => void; + rainSearch: (txt: string, pageNation: number, code: string ) => void; rainBdstReg: (data: customRainBdst, code: string | number) => void; rainBdstUpdate: (data: customRainBdst, code: string | number) => void; @@ -90,7 +89,6 @@ export type rainFacType = rainFacState & rainFacSActions; export const rainFacStateExport: rainFacState = { rain: { - isInit: false, rainRes: rainRes, rainResCount: 1, upHeadList: upHeadList, @@ -98,8 +96,7 @@ export const rainFacStateExport: rainFacState = { }; const initFetch = async (code: string | number) => { - // const rainRes =await getFetch("wr", `/reuseFc/rainyInfoList/1/10/${code}`); - const rainRes = await getFetchWithCount("wr", `/reuseFc/rainyInfoList/1/${rainRegSize}/${code}`); + const rainRes = await getFetchWithCount(fetchType.WR, `/reuseFc/rainyInfoList/1/${rainRegSize}/${code}`); return rainRes; }; export const rainFacActionsExport: (set: any) => rainFacSActions = ( @@ -108,7 +105,7 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = ( return { getRainData: async (pageNation: number, code: string | number) => { try { - const rainRes = await getFetchWithCount("wr", `/reuseFc/rainyInfoList/${pageNation}/${rainRegSize}/${code}`); + const rainRes = await getFetchWithCount(fetchType.WR, `/reuseFc/rainyInfoList/${pageNation}/${rainRegSize}/${code}`); // 여기서 상태 업데이트 return set((state: rainFacState) => ({ @@ -117,7 +114,6 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = ( ...state.rain, rainRes: rainRes.data, rainResCount: rainRes.count, - isInit: false, }, })); @@ -138,18 +134,17 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = ( ...state.rain, rainRes: rainRes.data, rainResCount: rainRes.count, - isInit: false, }, })); } catch (error) { console.log("error", error); } }, - rainSearch: async (txt: string, pageNation: number) => { + rainSearch: async (txt: string, pageNation: number ,code:string) => { try { // const rainRes = await getFetch('wr' , `/reuseFc/rainyInfoList/${pageNation}/20/41` +(txt? `/${txt}`:'')) - const rainRes = await getFetchWithCount('wr', `/reuseFc/rainyInfoList/${pageNation}/${rainRegSize}/41` + (txt ? `/${txt}` : '')) + const rainRes = await getFetchWithCount(fetchType.WR, `/reuseFc/rainyInfoList/${pageNation}/${rainRegSize}/${code}` + (txt ? `/${txt}` : '')) console.log("rainRes", rainRes) set((state: rainFacState) => { return { @@ -157,7 +152,6 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = ( ...state.rain, rainRes: rainRes.data, rainResCount: rainRes.count, - isInit: false, }, }; }) @@ -201,7 +195,6 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = ( ...state.rain, rainRes: rainRes.data, rainResCount: rainRes.count, - isInit: false, }, })); } catch (e) { @@ -253,7 +246,6 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = ( ...state.rain, rainRes: rainRes.data, rainResCount: rainRes.count, - isInit: false, }, })); } catch (e) { diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx index 0a047141d..d324f3332 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx @@ -52,7 +52,6 @@ const rswtRes: customRswtBdst[] = []; export type rswtFacState = { rswt: { - isInit: boolean; upHeadList: TableUpperProps[]; rswtRes: customRswtBdst[]; rswtResCount: number; @@ -74,7 +73,6 @@ export type rswtFacType = rswtFacState & rswtFacSActions; export const rswtFacStateExport: rswtFacState = { rswt: { - isInit: false, upHeadList: upHeadList, rswtRes: rswtRes, rswtResCount: 1, @@ -107,7 +105,6 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = ( ...state.rswt, rswtRes: rswtRes.data, rswtResCount: rswtRes.count, - isInit: false, }, }; }); @@ -129,7 +126,6 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = ( ...state.rswt, rswtRes: rswtRes.data, rswtResCount: rswtRes.count, - isInit: false, }, })); } catch (e) { @@ -145,7 +141,6 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = ( ...state.rswt, rswtRes: rswtRes.data, rswtResCount: rswtRes.count, - isInit: false, }, })); } catch (error) { @@ -185,7 +180,6 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = ( ...state.rswt, rswtRes: rswtRes.data, rswtResCount: rswtRes.count, - isInit: false, }, })); @@ -231,7 +225,6 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = ( ...state.rswt, rswtRes: rswtRes.data, rswtResCount: rswtRes.count, - isInit: false, }, })); } catch (e) { diff --git a/apps/wr/app/store/store.tsx b/apps/wr/app/store/store.tsx index c5aa93a52..01d0b50b4 100644 --- a/apps/wr/app/store/store.tsx +++ b/apps/wr/app/store/store.tsx @@ -335,7 +335,7 @@ export const StoreZus = ( ...dmMapState, } ) => { - return createStore()((set) => { + return createStore()((set ,get) => { getSggCd(set); getCityCd(set); getRegionCd(set); @@ -371,7 +371,7 @@ export const StoreZus = ( ...ruseCaseActionsExport(set), ...rainStatActionsExport(set), ...rswtStatActionsExport(set), - ...authActionsExport(set), + ...authActionsExport(set,get), ...commonMapActionsExport(set), ...pbnMapActionsExport(set), ...rainMapActionsExport(set),