물재이용 로그인한 사용자의 시군구 코드에 따른 코드값 변경 (시설물 등록 부분만 완료)

This commit is contained in:
leedj312
2025-09-16 15:25:08 +09:00
parent 5588eddbc5
commit 0bc87e2082
7 changed files with 139 additions and 93 deletions
@@ -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<customHtdflBdst[]>();
const [issNewReg, setIsNewReg] = useState<boolean>(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() {
>
조회
</Button>
<Button size={"sm"}
onClick={() => setIsNewReg(!issNewReg)}
disabled={regAuthrtYn === "N"}
<Button
size={"sm"}
onClick={() => setIsNewReg(!issNewReg)}
disabled={regAuthrtYn === "N"}
>
신규등록
</Button>
@@ -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<customRainBdst>();
const [issNewReg, setIsNewReg] = useState<boolean>(false);
const [pageNation, setPageNation] = useState(1);
const [bdstTable, setbdstTable] = useState<customRainBdst[]>();
const [searchTxt, setSearchTxt] = useState<string>();
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() {
</ListDiv>
</div>
<div className="col-span-2 ">
<ListDiv >
<ListDiv>
<ScrollArea className="h-[75vh]">
<RainRegForm
rainForm={rainForm ?? ({} as customRainBdst)}
@@ -1,6 +1,9 @@
"use client";
import { useWrStore } from "@/app/store";
import { rswtRegSize, type customRswtBdst } from "@/app/store/ruseFcltMng/fcltReg/rswtReg";
import {
rswtRegSize,
type customRswtBdst,
} from "@/app/store/ruseFcltMng/fcltReg/rswtReg";
import { tableData } from "@/components/lib/func/commom";
import RswtrRegForm from "@/components/ui/form/fcltReg/rswtrReg/rswtrRegForm";
import { BdstReg } from "@/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal";
@@ -12,18 +15,24 @@ 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, rswt, initRswt, rswtBdstSearch, getRswtBdstData } = useWrStore(
(state) => 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<customRswtBdst>();
const [searchTxt, setSearchTxt] = useState<string>();
@@ -32,14 +41,22 @@ export default function Home() {
const [selectVal, setSelect] = useState<number>();
const [bdstTable, setbdstTable] = useState<customRswtBdst[]>();
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);
}}
>
조회
+38 -10
View File
@@ -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<void>;
};
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);
}
},
};
@@ -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) {
@@ -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) {
+2 -2
View File
@@ -335,7 +335,7 @@ export const StoreZus = (
...dmMapState,
}
) => {
return createStore<WrStore>()((set) => {
return createStore<WrStore>()((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),