From 3444a03f31fd68acba462b1fab79093f2f781bd5 Mon Sep 17 00:00:00 2001 From: JIeunhuh Date: Wed, 9 Jul 2025 17:39:14 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8B=9C=EC=84=A4=EB=B3=84=20=ED=8C=9D?= =?UTF-8?q?=EC=97=85=20=EC=83=81=EC=84=B8=20=EB=82=B4=EC=9A=A9=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wr/app/map/newWindowPopup.tsx | 96 +++++++++---------- .../ui/form/fcltReg/htdflReg/htdflRegForm.tsx | 2 +- .../ui/form/fcltReg/rainReg/rainRegForm.tsx | 2 +- .../ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx | 2 +- .../sttn/sttnDetailModal/sttnDetailModal.tsx | 5 +- 5 files changed, 52 insertions(+), 55 deletions(-) diff --git a/apps/wr/app/map/newWindowPopup.tsx b/apps/wr/app/map/newWindowPopup.tsx index c46276e15..e98c84aea 100644 --- a/apps/wr/app/map/newWindowPopup.tsx +++ b/apps/wr/app/map/newWindowPopup.tsx @@ -75,7 +75,7 @@ const NewWindowPopup: React.FC = ({ const { rainSttn, rainSttnSearch, rainSttnInit } = useWrStore( (state) => state ); - const { rainSttnRes } = rainSttn; + let { rainSttnRes } = rainSttn; const [rainTable, setRainTable] = useState(); const [rainBdstChgProps, setRainBdstChgProps] = useState<{ isOpen: boolean; @@ -88,7 +88,7 @@ const NewWindowPopup: React.FC = ({ const { rswtSttn, rswtSttnSearch, rswtSttnInit } = useWrStore( (state) => state ); - const { rswtSttnRes } = rswtSttn; + let { rswtSttnRes } = rswtSttn; const [rswtrTable, setRswtrTable] = useState(); const [rswtrDetailModal, setRswtrDetailModal] = useState<{ isOpen: boolean, data: customRswtBdst | undefined }>({ data: undefined, isOpen: false }); const [rswtrBdstChgProps, setRswtrBdstChgProps] = useState<{ @@ -99,7 +99,7 @@ const NewWindowPopup: React.FC = ({ // 온배수시설 변수 const { htdflSttn, htdflSttnSearch, initHtdfl } = useWrStore((state) => state); - const { htdflSttnRes } = htdflSttn; + let { htdflSttnRes } = htdflSttn; const [htdflTable, setHtdflTable] = useState(); const [htdflDetailModal, setHtdflDetailModal] = useState<{ isOpen: boolean, data: customHtdflBdst | undefined }>({ data: undefined, isOpen: false }); const [bdstChgProps, setBdstChgProps] = useState<{ isOpen: boolean, chBuilding: chgBuilding[] }>({ isOpen: false, chBuilding: [] }); @@ -113,7 +113,7 @@ const NewWindowPopup: React.FC = ({ } = useWrStore((state) => state); let { pubFacHeadList, pbnstHasuRes, pbnstRes } = pbnst; const [isRuseReg, setIsRuseReg] = useState<{ - data:any | undefined; + data: any | undefined; }>({ data: undefined }); const [hasuTable, setHasuTable] = useState(); const [hasuPage, setHasuPage] = useState(1); @@ -131,31 +131,17 @@ const NewWindowPopup: React.FC = ({ setActiveTab(featureCd) fetchpbnstDetail(featureCd); // 상세정보 } - else if (layerId == '빗물이용시설') { - featureCd = selectedVal?.bdst_nm; - setFcltPk(featureCd) - rainSttnSearch(1, '20', '', featureCd, code.cityCd, code.sggCd); - setRainDetailModal({ isOpen: true, data: rainSttn.rainSttnRes[0] }); - } - else if (layerId == '중수도시설') { - featureCd = selectedVal?.bdst_nm; - setFcltPk(featureCd) - rswtSttnSearch(true,1, '20', '', featureCd, code.cityCd, code.sggCd); - setRswtrDetailModal({ isOpen: true, data: rswtSttnRes[0] }); - } - else if (layerId == '온배수시설') { - featureCd = selectedVal?.bdst_nm; - setFcltPk(featureCd) - htdflSttnSearch(true,1, '20', '', featureCd, code.cityCd, code.sggCd); - setHtdflDetailModal({ isOpen: true, data: htdflSttnRes[0] }); - } else if (layerId == '하수처리시설') { featureCd = selectedVal?.swtrmt_fclt_nm; setFcltPk(featureCd); // 현재 호출된 featureCd 저장 - fetchHasuDetail(featureCd,selectedVal?.swtrmt_fclt_cd); - }; + fetchHasuDetail(featureCd, selectedVal?.swtrmt_fclt_cd); + } + else{ + featureCd = selectedVal?.bdst_nm; + setFcltPk(featureCd) + detainSttn(featureCd,layerId) + } setViewMode("detail") - } } else if (layerId === null && seletectedLayerNm) { setViewMode("list") } }, [featureData]); @@ -170,10 +156,7 @@ const NewWindowPopup: React.FC = ({ pbnstSttn.pbnstSttnRes[index] ) { setFcltPk(pbnstSttn.pbnstSttnRes[index].pbnstRuseFcltPk); - // fetchpbnstDetail(pbnstSttn.pbnstSttnRes[index].pbnstRuseFcltPk) onFeatureSelect(pbnstSttn.pbnstSttnRes[index]); - // setActiveTab(pbnstSttn.pbnstSttnRes[index].pbnstRuseFcltPk) - // setViewMode("detail") onClose() } }; @@ -281,6 +264,24 @@ const NewWindowPopup: React.FC = ({ setRainBdstChgProps({ isOpen: true, chBuilding: rainTable[index].chgBuilding }); } } + const detainSttn = async (featureCd: string, layerNm: string) => { + if (layerNm == '빗물이용시설') { + const res = await getFetch(fetchType.WR, `/reuseFc/rainyInfoList/1/20/0/${featureCd}`) + rainSttnRes = res + setRainDetailModal({ isOpen: true, data: rainSttnRes[0] }); + } + else if(layerNm == '중수도시설'){ + const res = await getFetch(fetchType.WR,`/reuseFc/waterreuseFc/1/20/0/${featureCd}`) + rswtSttnRes = res + console.log('중수도', res, featureCd) + setRswtrDetailModal({isOpen:true,data:rswtSttnRes[0]}) + } + else{ + const res = await getFetch(fetchType.WR, `/drain/facilityList/1/20/0/${featureCd}`) + htdflSttnRes = res + setHtdflDetailModal({ isOpen: true, data: htdflSttnRes[0] }); + } + } useEffect(() => { if (!rainSttn.isInit) { @@ -340,8 +341,7 @@ const NewWindowPopup: React.FC = ({ } useEffect(() => { if (!rswtSttn.isInit) { - rswtSttnInit(false,1, "20", "0", '', code.cityCd, code.sggCd); - console.log('rswtSttnInit', rswtSttnRes); + rswtSttnInit(false, 1, "20", "0", '', code.cityCd, code.sggCd); } }, [rswtSttn.isInit, rswtSttnInit]); @@ -363,7 +363,7 @@ const NewWindowPopup: React.FC = ({ (item: customRswtBdst) => item.reuseBuilding[0]?.rswtrObj !== undefined ); - setRswtrTable(chData); + setRswtrTable(chData); }, [code, rswtSttnRes]); // 엑셀 관련 const rswtSttnExcelDownload = useCallback(() => { @@ -379,7 +379,7 @@ const NewWindowPopup: React.FC = ({ }, [rswtSttn.excelList]) useEffect(() => { - rswtSttnSearch(false,rswtrPage, "20", '', '', code.cityCd, code.sggCd); + rswtSttnSearch(false, rswtrPage, "20", '', '', code.cityCd, code.sggCd); }, [rswtrPage]); ///////////////////////////////////////////// 중수도 시설 ////////////////////////////////////////////////// @@ -387,8 +387,6 @@ const NewWindowPopup: React.FC = ({ // 온배수시설 cellClick 이벤트 (상세정보) const htdflCellClick = (index: number | undefined, headId: string) => { if (index !== undefined && htdflTable !== undefined) { - // setHtdflDetailModal({ isOpen: true, data: htdflTable[index] }); - // setViewMode('detail') onFeatureSelect(htdflTable[index]); onClose(); } @@ -413,7 +411,7 @@ const NewWindowPopup: React.FC = ({ }, [code, htdflSttnRes, htdflSttn.htdflSttHeadList]); useEffect(() => { - htdflSttnSearch(true,htdflPage, "20", '', '', code.cityCd, code.sggCd); + htdflSttnSearch(true, htdflPage, "20", '', '', code.cityCd, code.sggCd); }, [htdflPage]); ///////////////////////////////////////////// 온배수 시설 ////////////////////////////////////////////////// @@ -431,19 +429,19 @@ const NewWindowPopup: React.FC = ({ useEffect(() => { pubHasuInit(String(hasuPage), "0"); }, [hasuPage]); - const fetchHasuDetail = async (featureCd: string,data:string) => { + const fetchHasuDetail = async (featureCd: string, data: string) => { try { - const rainRes = await postFectch(`/prcsFclt/ruseInfo/1/10/A/0/0/1/SW/${featureCd}`,[data],fetchType.COMMON); - const hasuList = rainRes.data.map((item: any) => { - return { - ...item, - fctCpc: Number(item.fctCpc) || 0, - ruse: item.ruse === false ? "N" : "Y", - }; - }); - pbnstHasuRes = hasuList - if(pbnstHasuRes.length >0)setIsRuseReg({ data:[pbnstHasuRes[0]] }); - + const rainRes = await postFectch(`/prcsFclt/ruseInfo/1/10/A/0/0/1/SW/${featureCd}`, [data], fetchType.COMMON); + const hasuList = rainRes.data.map((item: any) => { + return { + ...item, + fctCpc: Number(item.fctCpc) || 0, + ruse: item.ruse === false ? "N" : "Y", + }; + }); + pbnstHasuRes = hasuList + if (pbnstHasuRes.length > 0) setIsRuseReg({ data: [pbnstHasuRes[0]] }); + } catch (error) { console.error("Error fetching data:", error); } @@ -454,7 +452,7 @@ const NewWindowPopup: React.FC = ({ onClose(); } }; -///////////////////////////////////////////// 하수처리 시설 ////////////////////////////////////////////////// + ///////////////////////////////////////////// 하수처리 시설 ////////////////////////////////////////////////// // 체크된 레이어에 따른 조건부 컴포넌트 렌더링 함수 const renderConditionalContent = () => { @@ -502,7 +500,7 @@ const NewWindowPopup: React.FC = ({ {/* 높이 조정 */} */}

- {readonly && `(${htdflForm.bdstNm})`} + {readonly && `(${htdflForm?.bdstNm})`}

diff --git a/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx b/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx index da8011efd..d3ca1c881 100644 --- a/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx @@ -144,7 +144,7 @@ export default function RainRegForm({

- {readonly && `(${rainForm.bdstNm})`} + {readonly && `(${rainForm?.bdstNm})`}

diff --git a/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx b/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx index 3c8af831d..ab97cf99a 100644 --- a/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx @@ -134,7 +134,7 @@ export default function RswtrRegForm({ {/*
*/}

- {readonly && `(${rswtForm.bdstNm})`} + {readonly && `(${rswtForm?.bdstNm})`}

diff --git a/apps/wr/components/ui/modal/sttn/sttnDetailModal/sttnDetailModal.tsx b/apps/wr/components/ui/modal/sttn/sttnDetailModal/sttnDetailModal.tsx index 0f7dbf706..4f6deee51 100644 --- a/apps/wr/components/ui/modal/sttn/sttnDetailModal/sttnDetailModal.tsx +++ b/apps/wr/components/ui/modal/sttn/sttnDetailModal/sttnDetailModal.tsx @@ -30,7 +30,7 @@ export default function SttnDetailModal({ }); useEffect(() => { - if (type === "RNB" && formObj.reuseBuilding[0]) { + if (type === "RNB" && formObj?.reuseBuilding[0]) { rainSttnChkSearch(formObj.reuseBuilding[0].bdstRuseFcltPk); } else if (type === "RST") { @@ -41,7 +41,7 @@ export default function SttnDetailModal({ useEffect(() => { if ( type === "RNB" && - formObj.reuseBuilding[0] && + formObj?.reuseBuilding[0] && rainSttn.rainChkRes?.bdstRuseFcltFk ) { const tableTotalData = rainChkTableData([rainSttn.rainChkRes]); @@ -79,7 +79,6 @@ export default function SttnDetailModal({ useEffect(() =>{ setDetailData({data:[] , head:[], node:[]}) - },[]) return (