From fe66bc4e881bac6f0aa8835a2d8bdbed9189201a Mon Sep 17 00:00:00 2001 From: JIeunhuh Date: Wed, 2 Jul 2025 11:22:40 +0900 Subject: [PATCH 1/9] =?UTF-8?q?=EC=9E=AC=EC=9D=B4=EC=9A=A9=EC=8B=9C?= =?UTF-8?q?=EC=84=A4=20=EC=83=81=EC=84=B8=EC=A0=95=EB=B3=B4=20=ED=8C=9D?= =?UTF-8?q?=EC=97=85=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=ED=91=9C=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wr/app/map/newWindowPopup.tsx | 34 +++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/apps/wr/app/map/newWindowPopup.tsx b/apps/wr/app/map/newWindowPopup.tsx index ebfcac1ca..a9f1f0326 100644 --- a/apps/wr/app/map/newWindowPopup.tsx +++ b/apps/wr/app/map/newWindowPopup.tsx @@ -67,6 +67,7 @@ const NewWindowPopup: React.FC = ({ } = useWrStore((state) => state); const [bdstTable, setBdstTable] = useState(); const [pageNation, setPageNation] = useState(1); + const [pbnstRuseFcltPk, setPbnstRuseFcltPk] = useState(''); const [pbnDetaileData, setPbnDetaileData] = useState<{ isModal: boolean; data: customPbnst; @@ -108,8 +109,7 @@ const NewWindowPopup: React.FC = ({ } // 2. RuseMngTable에 필요한 tableData를 생성합니다. (단일 행 데이터) - const tableData = [featureData]; - console.log("tableData", tableData); + // 선택된 피쳐 데이터 속성값 // 물재이용시설 cellClick 이벤트 (상세정보) const pbnstCellClick = (index: number | undefined) => { @@ -118,20 +118,35 @@ const NewWindowPopup: React.FC = ({ pbnstSttn.pbnstSttnRes && pbnstSttn.pbnstSttnRes[index] ) { - const pbnstRuseFcltPk = pbnstSttn.pbnstSttnRes[index].pbnstRuseFcltPk; - getPbnStnDetail(pbnstRuseFcltPk); + setPbnstRuseFcltPk(pbnstSttn.pbnstSttnRes[index].pbnstRuseFcltPk); + getPbnStnDetail(pbnstSttn.pbnstSttnRes[index].pbnstRuseFcltPk); } }; - useEffect(() => { - setBdstTable(pbnstSttn.pbnstSttnRes); - }, [pbnstSttn.pbnstSttnRes]); + // useEffect(() => { + // setBdstTable(pbnstSttn.pbnstSttnRes); + // }, [pbnstSttn.pbnstSttnRes]); useEffect(() => { - if (pbnstSttn.pbnstDetail.pbnstRuseFcltPk) setShowDetailView(true); + if (featureData) { + const selectedVal = featureData.getProperties(); + const featureCd = selectedVal?.swtrmt_fclt_cd + '1'; + + if (featureCd && featureCd !== pbnstRuseFcltPk) { + setPbnstRuseFcltPk(featureCd); // 현재 호출된 featureCd 저장 + getPbnStnDetail(featureCd); + } + } + }, [featureData]); + useEffect(() => { + if (pbnstSttn.pbnstDetail) { + setPbnDetaileData({ + isModal: true, + data: pbnstSttn.pbnstDetail, + }); + } }, [pbnstSttn.pbnstDetail]); - // 빗물재이용시설 cellClick 이벤트 (상세정보) const rainCellClick = (index: number | undefined, headId: string) => { if ( @@ -221,7 +236,6 @@ const NewWindowPopup: React.FC = ({ data={pbnDetaileData.data || ({} as customPbnst)} titleVisible={false} /> - ) : ( // 재이용시설 목록 From f2167e69a3789dd922bc115ef9c5a53df788546c Mon Sep 17 00:00:00 2001 From: JIeunhuh Date: Wed, 2 Jul 2025 14:25:28 +0900 Subject: [PATCH 2/9] =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=96=B4=20=ED=94=BC?= =?UTF-8?q?=EC=B2=98=20=EC=84=A0=ED=83=9D=20=EC=8B=9C=20=ED=95=B4=EB=8B=B9?= =?UTF-8?q?=20=EC=8B=9C=EC=84=A4=EC=9D=98=20=EC=9E=AC=EC=9D=B4=EC=9A=A9?= =?UTF-8?q?=EC=8B=9C=EC=84=A4=20=ED=8C=9D=EC=97=85=20=ED=83=AD=EB=B3=84?= =?UTF-8?q?=EB=A1=9C=20=EB=82=98=EC=98=A4=EB=8F=84=EB=A1=9D=20=EC=9E=91?= =?UTF-8?q?=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wr/app/map/newWindowPopup.tsx | 55 +++++++++++++++++------------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/apps/wr/app/map/newWindowPopup.tsx b/apps/wr/app/map/newWindowPopup.tsx index a9f1f0326..e6438656d 100644 --- a/apps/wr/app/map/newWindowPopup.tsx +++ b/apps/wr/app/map/newWindowPopup.tsx @@ -2,12 +2,11 @@ import { useWrStore } from "@/app/store"; import { btnClass } from "@/app/store/common/code"; import type { customPbnst } from "@/app/store/ruseFcltMng/fcltReg/pbnstReg/type"; import { excelDownload } from "@/components/lib/func/commom"; -import { Title, UiTable, UITab, ContentsDiv } from '@common/business_components'; +import { Title, UiTable, UITab } from '@common/business_components'; import { HeadMakeColSpan } from "@common/business_components/ui/table/HeadMakeColSpan"; import { Button } from "@common/components/ui"; import React, { useCallback, useState, useEffect } from 'react'; import NewWindowPortal from '@/app/map/newWindowPortal'; -import PbnstPrfmncSttnPopup from "@/app/map/pbnstPrfmncSttnPopup"; import { PbnstSttnModal } from "@/components/ui/modal/sttn/pbnstSttnModal/pbnstSttnModal"; import type { WaterReuseFacility } from "@/app/store/ruseFcltMng/fcltSttn/pbnstSttn/type"; import type { chgBuilding, customRainBdst } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; @@ -16,6 +15,7 @@ import RswtrPrfmncsSttnPopup from "@/app/map/rswtrPrfmncSttnPopup"; import type { customRswtBdst } from "@/app/store/ruseFcltMng/fcltReg/rswtReg"; import HtdflPrfmncSttnPopup from "@/app/map/htdflPrfmncSttnPopup"; import type { customHtdflBdst } from "@/app/store/ruseFcltMng/fcltReg/htdflReg"; +import { getFetch } from "@/components/lib/api"; interface NewWindowPopupProps { featureData: any; @@ -24,13 +24,6 @@ interface NewWindowPopupProps { onClose: () => void; } -// 탭 -const TABS = [ - { val: "0", text: "재이용시설1" }, - { val: "1", text: "재이용시설2" }, - { val: "2", text: "재이용시설n" }, -]; - // 데이터의 속성(key)을 사용자에게 보여줄 한글 이름으로 변환하기 위한 맵 // 실제 데이터에 맞게 이 부분을 확장해야 합니다. const propertyNameMap: { [key: string]: string } = { @@ -47,7 +40,8 @@ const NewWindowPopup: React.FC = ({ checkedLayersData = [], onClose }) => { - const [activeTab, setActiveTab] = useState(TABS[0]?.val ?? "0"); + const [tabData, setTabData] = useState<{ id: string; name: string; data: any }[]>([]); + const [activeTab, setActiveTab] = useState('0'); // swcho : useState의 true, false 값 변경하여 목록, 상태 테스트 하였음 const [showDetailView, setShowDetailView] = useState(true); // 상세정보 화면 표시 상태 추가 @@ -108,9 +102,6 @@ const NewWindowPopup: React.FC = ({ return null; } - // 2. RuseMngTable에 필요한 tableData를 생성합니다. (단일 행 데이터) - // 선택된 피쳐 데이터 속성값 - // 물재이용시설 cellClick 이벤트 (상세정보) const pbnstCellClick = (index: number | undefined) => { if ( @@ -127,17 +118,34 @@ const NewWindowPopup: React.FC = ({ // setBdstTable(pbnstSttn.pbnstSttnRes); // }, [pbnstSttn.pbnstSttnRes]); + // 재이용시설 조회 + const fetchpbnstDetail = async (featureCd: string) => { + try { + const response = await getFetch("wr", `/reuseFc/pubFc/${featureCd}`); + // 중복 데이터 추가 방지 + setTabData((prev) => { + if (prev.some((tab) => tab.id === featureCd)) { + return prev; // 이미 존재하는 탭이면 추가하지 않음 + } + console.log('탭 idx',prev, prev.length) + return [...prev, { id: featureCd, name: `재이용시설 ${prev.length + 1}`, data: response }]; + }); + } catch (error) { + console.error("Error fetching data:", error); + } + }; useEffect(() => { if (featureData) { const selectedVal = featureData.getProperties(); - const featureCd = selectedVal?.swtrmt_fclt_cd + '1'; - + const featureCd = selectedVal?.swtrmt_fclt_cd; if (featureCd && featureCd !== pbnstRuseFcltPk) { setPbnstRuseFcltPk(featureCd); // 현재 호출된 featureCd 저장 - getPbnStnDetail(featureCd); + setActiveTab(featureCd) + fetchpbnstDetail(featureCd); // 상세정보 가져오기 } } }, [featureData]); + useEffect(() => { if (pbnstSttn.pbnstDetail) { setPbnDetaileData({ @@ -198,7 +206,8 @@ const NewWindowPopup: React.FC = ({ const hasWaterTreatmentLayer = checkedLayersData.some(layer => layer.data?.lyrNm?.includes('하수처리') || layer.data?.lyrNm?.includes('재이용시설') ); - + const actTabData = tabData.find((tab) => tab.id === activeTab); + // swcho : true, false 값 변경하여 시설 변경하여 테스트하였음 // 재이용시설 const isPbnst = true; @@ -223,17 +232,17 @@ const NewWindowPopup: React.FC = ({
({ - value: tab.val, - label: tab.text, - onClick: () => setActiveTab(tab.val), + defaultValue={activeTab} + tabList={tabData.map((tab) => ({ + value: tab.id, + label: tab.name, + onClick: () => setActiveTab(tab.id), }))} children={undefined} />
From 1fd522e49bfc3b7100ef827ffc8128d0c63b5fe0 Mon Sep 17 00:00:00 2001 From: JIeunhuh Date: Wed, 2 Jul 2025 17:38:44 +0900 Subject: [PATCH 3/9] =?UTF-8?q?=EC=8B=9C=EC=84=A4=ED=98=84=ED=99=A9=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=20=EB=9D=84=EC=9A=B0=EB=8A=94=20=EC=9E=91?= =?UTF-8?q?=EC=97=85=20=EC=A7=84=ED=96=89=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wr/app/map/newWindowPopup.tsx | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/apps/wr/app/map/newWindowPopup.tsx b/apps/wr/app/map/newWindowPopup.tsx index e6438656d..dd2334e29 100644 --- a/apps/wr/app/map/newWindowPopup.tsx +++ b/apps/wr/app/map/newWindowPopup.tsx @@ -43,7 +43,7 @@ const NewWindowPopup: React.FC = ({ const [tabData, setTabData] = useState<{ id: string; name: string; data: any }[]>([]); const [activeTab, setActiveTab] = useState('0'); // swcho : useState의 true, false 값 변경하여 목록, 상태 테스트 하였음 - const [showDetailView, setShowDetailView] = useState(true); // 상세정보 화면 표시 상태 추가 + const [showDetailView, setShowDetailView] = useState(false); // 상세정보 화면 표시 상태 추가 // onClose 함수를 useCallback으로 메모이제이션 const memoizedOnClose = useCallback(() => { @@ -109,14 +109,33 @@ const NewWindowPopup: React.FC = ({ pbnstSttn.pbnstSttnRes && pbnstSttn.pbnstSttnRes[index] ) { + console.log(pbnstSttn.pbnstSttnRes[index]) setPbnstRuseFcltPk(pbnstSttn.pbnstSttnRes[index].pbnstRuseFcltPk); getPbnStnDetail(pbnstSttn.pbnstSttnRes[index].pbnstRuseFcltPk); + setShowDetailView(true); // 상세정보 화면 표시 상태 변경 } }; - // useEffect(() => { - // setBdstTable(pbnstSttn.pbnstSttnRes); - // }, [pbnstSttn.pbnstSttnRes]); + useEffect(() => { + if (!pbnstSttn.isInit) { + pbnSttnInit("1", "13",{ + partValue: "A", + sidoValue: "0", + sigunValue: "", + regionValue: "", + unitWaterShedValue: "", + middleRegionValue: "", + envPartValue: "", + sidoText: "", + sigunText: "" + }, String(new Date().getFullYear())); + } + }, [pbnstSttn.isInit, pbnSttnInit]); + + useEffect(() => { + setBdstTable(pbnstSttn.pbnstSttnRes); + }, [pbnstSttn.pbnstSttnRes]); + // 재이용시설 조회 const fetchpbnstDetail = async (featureCd: string) => { @@ -127,7 +146,6 @@ const NewWindowPopup: React.FC = ({ if (prev.some((tab) => tab.id === featureCd)) { return prev; // 이미 존재하는 탭이면 추가하지 않음 } - console.log('탭 idx',prev, prev.length) return [...prev, { id: featureCd, name: `재이용시설 ${prev.length + 1}`, data: response }]; }); } catch (error) { @@ -207,7 +225,7 @@ const NewWindowPopup: React.FC = ({ layer.data?.lyrNm?.includes('하수처리') || layer.data?.lyrNm?.includes('재이용시설') ); const actTabData = tabData.find((tab) => tab.id === activeTab); - + // swcho : true, false 값 변경하여 시설 변경하여 테스트하였음 // 재이용시설 const isPbnst = true; From 34a70ca21ac4752175c5384a2e3fc9c1c958878f Mon Sep 17 00:00:00 2001 From: JIeunhuh Date: Wed, 2 Jul 2025 18:10:24 +0900 Subject: [PATCH 4/9] =?UTF-8?q?settimeout=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/common/business_components/src/ui/map/Gis.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/common/business_components/src/ui/map/Gis.js b/packages/common/business_components/src/ui/map/Gis.js index 5ac98f27f..d0dde20d8 100644 --- a/packages/common/business_components/src/ui/map/Gis.js +++ b/packages/common/business_components/src/ui/map/Gis.js @@ -342,9 +342,11 @@ function Gis({ // 체크된 레이어 정보를 처리하는 함수 const handleCheckedLayersChange = useCallback((checkedIds, checkedNodesData) => { - setCheckedLayers(checkedIds); - setCheckedLayersData(checkedNodesData); - onCheckedLayersChange?.(checkedIds, checkedNodesData); + setTimeout(() => { + setCheckedLayers(checkedIds); + setCheckedLayersData(checkedNodesData); + onCheckedLayersChange?.(checkedIds, checkedNodesData); + }, 0); }, [onCheckedLayersChange]); return ( From 7641cb332f3c20d64433e678b4285791512a1141 Mon Sep 17 00:00:00 2001 From: JIeunhuh Date: Wed, 2 Jul 2025 18:47:01 +0900 Subject: [PATCH 5/9] =?UTF-8?q?=EC=9E=AC=EC=9D=B4=EC=9A=A9=EC=8B=9C?= =?UTF-8?q?=EC=84=A4=20=ED=8C=9D=EC=97=85=20=ED=99=94=EB=A9=B4=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=EA=B5=AC=ED=98=84=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wr/app/map/newWindowPopup.tsx | 49 +++++++++++++++--------------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/apps/wr/app/map/newWindowPopup.tsx b/apps/wr/app/map/newWindowPopup.tsx index dd2334e29..e14a4447d 100644 --- a/apps/wr/app/map/newWindowPopup.tsx +++ b/apps/wr/app/map/newWindowPopup.tsx @@ -109,9 +109,9 @@ const NewWindowPopup: React.FC = ({ pbnstSttn.pbnstSttnRes && pbnstSttn.pbnstSttnRes[index] ) { - console.log(pbnstSttn.pbnstSttnRes[index]) setPbnstRuseFcltPk(pbnstSttn.pbnstSttnRes[index].pbnstRuseFcltPk); - getPbnStnDetail(pbnstSttn.pbnstSttnRes[index].pbnstRuseFcltPk); + fetchpbnstDetail(pbnstSttn.pbnstSttnRes[index].pbnstRuseFcltPk) + setActiveTab(pbnstSttn.pbnstSttnRes[index].pbnstRuseFcltPk) setShowDetailView(true); // 상세정보 화면 표시 상태 변경 } }; @@ -136,33 +136,36 @@ const NewWindowPopup: React.FC = ({ setBdstTable(pbnstSttn.pbnstSttnRes); }, [pbnstSttn.pbnstSttnRes]); - +// 재이용시설 상세정보 + const setTabDataFunc = (res:any, pk:string) => { + setTabData((prev) => { + if (prev.some((tab) => tab.id === pk)) { + return prev; // 이미 존재하는 탭이면 추가하지 않음 + } + return [...prev, { id: pk, name: `재이용시설 ${prev.length + 1}`, data: res }]; + }); + } // 재이용시설 조회 const fetchpbnstDetail = async (featureCd: string) => { try { const response = await getFetch("wr", `/reuseFc/pubFc/${featureCd}`); // 중복 데이터 추가 방지 - setTabData((prev) => { - if (prev.some((tab) => tab.id === featureCd)) { - return prev; // 이미 존재하는 탭이면 추가하지 않음 - } - return [...prev, { id: featureCd, name: `재이용시설 ${prev.length + 1}`, data: response }]; - }); + setTabDataFunc(response, featureCd); } catch (error) { console.error("Error fetching data:", error); } }; - useEffect(() => { - if (featureData) { - const selectedVal = featureData.getProperties(); - const featureCd = selectedVal?.swtrmt_fclt_cd; - if (featureCd && featureCd !== pbnstRuseFcltPk) { - setPbnstRuseFcltPk(featureCd); // 현재 호출된 featureCd 저장 - setActiveTab(featureCd) - fetchpbnstDetail(featureCd); // 상세정보 가져오기 - } - } - }, [featureData]); + // useEffect(() => { + // if (featureData) { + // const selectedVal = featureData.getProperties(); + // const featureCd = selectedVal?.swtrmt_fclt_cd; + // if (featureCd && featureCd !== pbnstRuseFcltPk) { + // setPbnstRuseFcltPk(featureCd); // 현재 호출된 featureCd 저장 + // setActiveTab(featureCd) + // fetchpbnstDetail(featureCd); // 상세정보 가져오기 + // } + // } + // }, [featureData]); useEffect(() => { if (pbnstSttn.pbnstDetail) { @@ -225,7 +228,7 @@ const NewWindowPopup: React.FC = ({ layer.data?.lyrNm?.includes('하수처리') || layer.data?.lyrNm?.includes('재이용시설') ); const actTabData = tabData.find((tab) => tab.id === activeTab); - + console.log('tavbData',actTabData) // swcho : true, false 값 변경하여 시설 변경하여 테스트하였음 // 재이용시설 const isPbnst = true; @@ -235,8 +238,6 @@ const NewWindowPopup: React.FC = ({ const isRswt = false; // 온배수시설 const isHtdfl = false; - - return (
{/* 체크된 레이어가 없는 경우 (재이용시설 목록) */} @@ -260,7 +261,7 @@ const NewWindowPopup: React.FC = ({ />
From 915b6573579e3fcf3ad36859b1670cc5733cbd43 Mon Sep 17 00:00:00 2001 From: YangJinSoo94 Date: Thu, 3 Jul 2025 09:41:38 +0900 Subject: [PATCH 6/9] =?UTF-8?q?=EB=AC=BC=EC=9E=AC=EC=9D=B4=EC=9A=A9?= =?UTF-8?q?=EC=82=AC=EB=A1=80=EA=B4=80=EB=A6=AC=20=EC=96=91=EC=8B=9D?= =?UTF-8?q?=EC=97=90=20=EC=9E=91=EC=84=B1=EB=B0=A9=EB=B2=95=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wr/public/sample_ruseCaseMng.xlsx | Bin 19429 -> 20324 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/wr/public/sample_ruseCaseMng.xlsx b/apps/wr/public/sample_ruseCaseMng.xlsx index 3a88e0623e067d483927ce6dfdc452c2dbb2ee19..96027d557fe2cfc60d3de10c313c49d78f984591 100644 GIT binary patch delta 12615 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

3gpjr2qRgWMlti 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 LHo2<&Yxe&D6inE* delta 11787 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 Date: Thu, 3 Jul 2025 15:16:53 +0900 Subject: [PATCH 7/9] =?UTF-8?q?=EC=9E=AC=EC=9D=B4=EC=9A=A9=EC=8B=9C?= =?UTF-8?q?=EC=84=A4=20=ED=98=84=ED=99=A9=20=ED=8E=98=EC=9D=B4=EC=A7=95=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wr/app/map/newWindowPopup.tsx | 354 +++++++++++++++-------------- 1 file changed, 188 insertions(+), 166 deletions(-) diff --git a/apps/wr/app/map/newWindowPopup.tsx b/apps/wr/app/map/newWindowPopup.tsx index e14a4447d..777c3dcf2 100644 --- a/apps/wr/app/map/newWindowPopup.tsx +++ b/apps/wr/app/map/newWindowPopup.tsx @@ -130,7 +130,7 @@ const NewWindowPopup: React.FC = ({ sigunText: "" }, String(new Date().getFullYear())); } - }, [pbnstSttn.isInit, pbnSttnInit]); + }, [pbnstSttn.isInit]); useEffect(() => { setBdstTable(pbnstSttn.pbnstSttnRes); @@ -155,6 +155,26 @@ const NewWindowPopup: React.FC = ({ console.error("Error fetching data:", error); } }; + // 재이용시설 페이징처리 관련 함수 + const onPageChangeHandler = useCallback((page: number) => { + pbnstSttnSearch( + String(page), + String(13), + { + partValue: "A", + sidoValue: "0", + sigunValue: "", + regionValue: "", + unitWaterShedValue: "", + middleRegionValue: "", + envPartValue: "", + sidoText: "", + sigunText: "", + }, + "", + String(new Date().getFullYear()) + ); + }, []); // useEffect(() => { // if (featureData) { // const selectedVal = featureData.getProperties(); @@ -238,179 +258,181 @@ const NewWindowPopup: React.FC = ({ const isRswt = false; // 온배수시설 const isHtdfl = false; - return ( -

- {/* 체크된 레이어가 없는 경우 (재이용시설 목록) */} - {isPbnst && ( + if (isPbnst) { + if (showDetailView) { + // 재이용시설 상세 + return ( <> - {showDetailView ? ( - // 재이용시설 상세 - <> -
- - </div> - <div className="flex justify-between items-center mb-8"> - <UITab - defaultValue={activeTab} - tabList={tabData.map((tab) => ({ - value: tab.id, - label: tab.name, - onClick: () => setActiveTab(tab.id), - }))} - children={undefined} - /> - </div> - <PbnstSttnModal - data={actTabData?.data[0]|| ({} as customPbnst)} - titleVisible={false} - /> - </> - ) : ( - // 재이용시설 목록 - <> - <div className="flex justify-between items-center"> - <Title title='하수재이용시설 현황' /> - <div className="flex gap-2 mt-8"> - <Button className={btnClass} color="primary" onClick={excelClick}>엑셀다운로드</Button> - </div> - </div> - <UiTable - headName={[]} - tableData={bdstTable || []} - children={ - <HeadMakeColSpan upHeadList={pbnstSttn.pbnstSttNodeList} /> - } - headlist={pbnstSttn.pbnstSttHeadList} - pageSize={20} - total={100000} - cellClick={(index: number | undefined, headId: string) => { - pbnstCellClick(index); - }} - onPageChange={setPageNation} - /> - </> - )} + <div className="flex justify-between items-center mb-4"> + <Title title="하수재이용시설 상세정보" /> + </div> + <div className="flex justify-between items-center mb-8"> + <UITab + defaultValue={activeTab} + tabList={tabData.map((tab) => ({ + value: tab.id, + label: tab.name, + onClick: () => setActiveTab(tab.id), + }))} + children={undefined} + /> + </div> + <PbnstSttnModal + data={tabData.find((tab) => tab.id === activeTab)?.data[0] || ({} as customPbnst)} + titleVisible={false} + /> </> - )} - {/* 빗물이용시설 */} - {isRain && ( + ); + } else { + // 재이용시설 목록 + return ( <> - {showDetailView ? ( - // 빗물이용시설 상세 - <> - <div className="flex justify-between items-center mb-4"> - <Title title='빗물이용시설 상세정보' /> - </div> - <RainPrfmncSttnPopup rainForm={rainDetailModal.data as customRainBdst} isModal={false} /> - {/* TODO: 지도 점검 결과 현황 추가 할 것 */} - </> - ) : ( - // 빗물이용시설 목록 - <> - <div className="flex justify-between items-center"> - <Title title='빗물이용시설 현황' /> - <div className="flex gap-2 mt-8"> - <Button className={btnClass} color="primary" onClick={excelClick}>엑셀다운로드</Button> - </div> - </div> - <UiTable - headName={[]} - tableData={rainTable || []} - children={ - <HeadMakeColSpan upHeadList={rainSttn.rainSttNodeList} /> - } - headlist={rainSttn.rainSttHeadList} - pageSize={20} - total={100000} - cellClick={(index: number | undefined, headId: string) => { - rainCellClick(index ?? undefined, headId) - }} - onPageChange={setPageNation} - /> - </> - )} + <div className="flex justify-between items-center"> + <Title title="하수재이용시설 현황" /> + <div className="flex gap-2 mt-8"> + <Button className={btnClass} color="primary" onClick={excelClick}> + 엑셀다운로드 + </Button> + </div> + </div> + <UiTable + headName={[]} + tableData={bdstTable || []} + children={<HeadMakeColSpan upHeadList={pbnstSttn.pbnstSttNodeList} />} + headlist={pbnstSttn.pbnstSttHeadList} + pageSize={20} + total={100000} + cellClick={(index: number | undefined, headId: string) => { + pbnstCellClick(index); + }} + onPageChange={onPageChangeHandler} + /> </> - )} - {/* 중수도시설 */} - {isRswt && ( + ); + } + } + + if (isRain) { + if (showDetailView) { + // 빗물이용시설 상세 + return ( <> - {showDetailView ? ( - // 재이용시설 상세 - <> - <div className="flex justify-between items-center mb-4"> - <Title title='중수도시설 상세정보' /> - </div> - <RswtrPrfmncsSttnPopup rswtForm={rswtrDetailModal.data as customRswtBdst} isModal={false} /> - {/* TODO: 지도 점검 결과 현황 추가 할 것 */} - </> - ) : ( - // 재이용시설 목록 - <> - <div className="flex justify-between items-center"> - <Title title='중수도시설 현황' /> - <div className="flex gap-2 mt-8"> - <Button className={btnClass} color="primary" onClick={excelClick}>엑셀다운로드</Button> - </div> - </div> - <UiTable - headName={[]} - tableData={rswtrTable || []} - children={ - <HeadMakeColSpan upHeadList={rswtSttn.rswtSttNodeList} /> - } - headlist={rswtSttn.rswtSttHeadList} - pageSize={20} - total={100000} - cellClick={(index: number | undefined, headId: string) => { - rswtCellClick(index, headId); - }} - onPageChange={setPageNation} - /> - </> - )} + <div className="flex justify-between items-center mb-4"> + <Title title="빗물이용시설 상세정보" /> + </div> + <RainPrfmncSttnPopup rainForm={rainDetailModal.data as customRainBdst} isModal={false} /> </> - )} - {/* 온배수시설 */} - {isHtdfl && ( + ); + } else { + // 빗물이용시설 목록 + return ( <> - {showDetailView ? ( - // 재이용시설 상세 - <> - <div className="flex justify-between items-center mb-4"> - <Title title='온배수시설 상세정보' /> - </div> - {/* <HtdflPrfmncSttnPopup htdflForm={htdflDetailModal.data as customHtdflBdst} isModal={false} /> */} - <HtdflPrfmncSttnPopup htdflForm={htdflDetailModal.data as customHtdflBdst} isModal={false} /> - </> - ) : ( - // 재이용시설 목록 - <> - <div className="flex justify-between items-center"> - <Title title='온배수시설 현황' /> - <div className="flex gap-2 mt-8"> - <Button className={btnClass} color="primary" onClick={excelClick}>엑셀다운로드</Button> - </div> - </div> - <UiTable - headName={[]} - tableData={bdstTable || []} - children={ - <HeadMakeColSpan upHeadList={htdflSttn.htdflSttNodeList} /> - } - headlist={htdflSttn.htdflSttHeadList} - pageSize={20} - total={100000} - cellClick={(index: number | undefined, headId: string) => { - htdflCellClick(index ?? undefined, headId); - }} - onPageChange={setPageNation} - /> - </> - )} + <div className="flex justify-between items-center"> + <Title title="빗물이용시설 현황" /> + <div className="flex gap-2 mt-8"> + <Button className={btnClass} color="primary" onClick={excelClick}> + 엑셀다운로드 + </Button> + </div> + </div> + <UiTable + headName={[]} + tableData={rainTable || []} + children={<HeadMakeColSpan upHeadList={rainSttn.rainSttNodeList} />} + headlist={rainSttn.rainSttHeadList} + pageSize={20} + total={100000} + cellClick={(index: number | undefined, headId: string) => { + rainCellClick(index ?? undefined, headId); + }} + onPageChange={setPageNation} + /> </> - )} - </div> - ); + ); + } + } + + if (isRswt) { + if (showDetailView) { + // 중수도시설 상세 + return ( + <> + <div className="flex justify-between items-center mb-4"> + <Title title="중수도시설 상세정보" /> + </div> + <RswtrPrfmncsSttnPopup rswtForm={rswtrDetailModal.data as customRswtBdst} isModal={false} /> + </> + ); + } else { + // 중수도시설 목록 + return ( + <> + <div className="flex justify-between items-center"> + <Title title="중수도시설 현황" /> + <div className="flex gap-2 mt-8"> + <Button className={btnClass} color="primary" onClick={excelClick}> + 엑셀다운로드 + </Button> + </div> + </div> + <UiTable + headName={[]} + tableData={rswtrTable || []} + children={<HeadMakeColSpan upHeadList={rswtSttn.rswtSttNodeList} />} + headlist={rswtSttn.rswtSttHeadList} + pageSize={20} + total={100000} + cellClick={(index: number | undefined, headId: string) => { + rswtCellClick(index, headId); + }} + onPageChange={setPageNation} + /> + </> + ); + } + } + + if (isHtdfl) { + if (showDetailView) { + // 온배수시설 상세 + return ( + <> + <div className="flex justify-between items-center mb-4"> + <Title title="온배수시설 상세정보" /> + </div> + <HtdflPrfmncSttnPopup htdflForm={htdflDetailModal.data as customHtdflBdst} isModal={false} /> + </> + ); + } else { + // 온배수시설 목록 + return ( + <> + <div className="flex justify-between items-center"> + <Title title="온배수시설 현황" /> + <div className="flex gap-2 mt-8"> + <Button className={btnClass} color="primary" onClick={excelClick}> + 엑셀다운로드 + </Button> + </div> + </div> + <UiTable + headName={[]} + tableData={htdflTable || []} + children={<HeadMakeColSpan upHeadList={htdflSttn.htdflSttNodeList} />} + headlist={htdflSttn.htdflSttHeadList} + pageSize={20} + total={100000} + cellClick={(index: number | undefined, headId: string) => { + htdflCellClick(index ?? undefined, headId); + }} + onPageChange={setPageNation} + /> + </> + ); + } + } + + return null; // 조건에 맞는 콘텐츠가 없을 경우 }; return ( From 39977e449155c253e1715ac1db9f873ea89b311b Mon Sep 17 00:00:00 2001 From: JIeunhuh <entks301@naver.com> Date: Thu, 3 Jul 2025 18:03:24 +0900 Subject: [PATCH 8/9] =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../images/map/layericon/Layer_Select_BTN.png | Bin 0 -> 14434 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/wr/public/images/map/layericon/Layer_Select_BTN.png diff --git a/apps/wr/public/images/map/layericon/Layer_Select_BTN.png b/apps/wr/public/images/map/layericon/Layer_Select_BTN.png new file mode 100644 index 0000000000000000000000000000000000000000..1e810feafce85d43db278f048d541272f6d82253 GIT binary patch literal 14434 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 literal 0 HcmV?d00001 From f592ab31d86a86ce305ce8b4a65170340d03186a Mon Sep 17 00:00:00 2001 From: jyha00 <jyha@mind-one.co.kr> Date: Fri, 4 Jul 2025 13:10:23 +0900 Subject: [PATCH 9/9] =?UTF-8?q?=EC=A7=80=EB=8F=84=EC=A0=90=EA=B2=80?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=20=EB=B0=8F=20=ED=98=84=ED=99=A9=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=95=20=EC=88=98=EC=A0=95,?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruseFcltMng/prfmncReg/chkgdnReg/page.tsx | 5 +- .../prfmncSttn/chkgdnSttn/page.tsx | 40 ++++++++++--- .../prfmncReg/chkgdnReg/rainChkgdn/index.tsx | 5 +- .../prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx | 4 +- .../chkgdnSttn/rainChkgdnSttn/index.tsx | 58 +++++++++++-------- .../chkgdnSttn/rswtChkgdnSttn/index.tsx | 32 +++++----- .../ui/modal/chkgd/chkgdModal/chkgdModal.tsx | 21 ++++--- .../chkgdTable/rainChkgd/rainChkgdTable.tsx | 14 ++--- .../chkgdTable/rswtChkgd/rswtChkgdTable.tsx | 4 +- 9 files changed, 107 insertions(+), 76 deletions(-) diff --git a/apps/wr/app/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx b/apps/wr/app/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx index 033d3a23d..328bb8b88 100644 --- a/apps/wr/app/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx +++ b/apps/wr/app/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx @@ -315,7 +315,7 @@ export default function Page() { </Tooltip> </TooltipProvider> - + <Button size={"sm"} onClick={() => { @@ -344,7 +344,7 @@ export default function Page() { rainChkData={rainChkgdn.rainChk} pageNation={rainPageNation} onPageChange={rainPageChange} - /> + pageCount={rainChkgdn.rainChkCount} /> ) : ( <RswtChkgdTable detaiRswtlUpdate={setUpdateRSwtDetail} @@ -353,6 +353,7 @@ export default function Page() { rswtChkData={rswtChkgdn.rswtChkRes} pageNation={rswtPageNation} onPageChange={rswtPageChange} + pageCount={rswtChkgdn.rswtChkCount} /> )} </ListDiv> diff --git a/apps/wr/app/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx b/apps/wr/app/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx index 8960f468d..60040833b 100644 --- a/apps/wr/app/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx +++ b/apps/wr/app/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx @@ -1,6 +1,8 @@ "use client"; import { useWrStore } from "@/app/store"; +import { commonCd, rainPageSize } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn"; +import { rswtPageSize } from "@/app/store/prfmncReg/chkgdnReg/rswrtChkgdn"; import { excelDownload, yearOptions @@ -39,6 +41,8 @@ export default function Page() { }); const [selFcltDiv, setSelFcltDiv] = useState("RNB"); + const [rainPageNation, setRainPageNation] = useState(1); + const [rswtPageNation, setRswtPageNation] = useState(1); const [isModal, setIsModal] = useState({ open: false, data: {}, @@ -47,29 +51,43 @@ export default function Page() { const cellClick = () => { if (searchYear) { if (selFcltDiv === "RNB") { - rainChkSttnSearch(searchYear, "0"); + rainChkSttnSearch(rainPageNation, rainPageSize, searchYear, commonCd); } else { - rswtChkSttnSearch(searchYear, "0"); + rswtChkSttnSearch(rswtPageNation, rswtPageSize, searchYear, commonCd); } } }; + const rainPageChange = (pageNo: number) => { + if (pageNo > 0) { + setRainPageNation(pageNo); + rainChkSttnInit(pageNo, rainPageSize, searchYear, commonCd); + } + }; + + const rswtPageChange = (pageNo: number) => { + if (pageNo > 0) { + setRswtPageNation(pageNo); + rswtChkSttnInit(pageNo, rswtPageSize, searchYear, commonCd); + } + }; + useEffect(() => { if (!rainChkSttn.isInit) { isRainSttn(true) - rainChkSttnInit(new Date().getFullYear().toString(), "0"); + rainChkSttnInit(1, rainPageSize, new Date().getFullYear().toString(), commonCd); setIsModal({ data: {}, open: false }); } - }, [rainChkSttn.isInit, rainChkSttnInit]); + }, [rainChkSttn.isInit, rainChkSttnInit, rainPageSize]); useEffect(() => { - if (!rswtChkSttn.isInit) { setIsModal({ data: {}, open: false }); - rswtChkSttnInit(new Date().getFullYear().toString(), "0"); + rswtChkSttnInit(1, rswtPageSize, new Date().getFullYear().toString(), commonCd); isRswtSttn(true) } - }, [rswtChkSttn.isInit, rswtChkSttnInit]) + }, [rswtChkSttn.isInit, rswtChkSttnInit, rswtPageSize]) + const handleClick = useCallback( @@ -163,6 +181,9 @@ export default function Page() { detailUp={() => { }} handleClick={handleClick} rainChkData={rainChkSttn.rainChkRes} + pageNation={rainPageNation} + onPageChange={rainPageChange} + pageCount={rainChkSttn.rainChkCount} /> ) : ( <RswtChkgdTable @@ -170,6 +191,9 @@ export default function Page() { deleteRswtData={() => { }} handleRswtClick={handleClick} rswtChkData={rswtChkSttn.rswtChkRes} + pageNation={rswtPageNation} + onPageChange={rswtPageChange} + pageCount={rswtChkSttn.rswtChkCount} /> )} </ListDiv> @@ -181,7 +205,7 @@ export default function Page() { setIsModal({ open: !open, data: {} }); }} bodyClass={"w-[80vw] max-w-none"} - body={<ChkgdModal type={selFcltDiv} obj={isModal.data} />} + body={<ChkgdModal type={selFcltDiv} obj={isModal.data} setIsModal={() => { }} />} ></UiModal> <Toaster position="top-center" /> </ContentsDiv> diff --git a/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/index.tsx b/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/index.tsx index 63d2d1d03..36dd0a815 100644 --- a/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/index.tsx +++ b/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/index.tsx @@ -24,7 +24,7 @@ import { import type { TableUpperProps } from "@/app/store/common/type/header"; import toast from "react-hot-toast"; -export const rainPageSize = 10; +export const rainPageSize = 5; export const commonCd = "41"; export type rainChkZodType = z.infer<typeof rainChkZod>; @@ -132,7 +132,6 @@ const initFetch = async ( ) => { const currentYear = new Date().getFullYear().toString(); - console.log("cnt ", cnt); const rainRes = await getCountFetch( "wr", `/reuseChk/rainy` + @@ -142,7 +141,6 @@ const initFetch = async ( (sgg ? `/${sgg}` : "/0") ); - console.log(" rainRes ", rainRes); return rainRes; }; @@ -193,7 +191,6 @@ export const rainChkgdnActionsExport: (set: any) => rainChkgdnActions = ( toast.error("지도점검 등록이 실패되었습니다."); } } catch (error) { - console.log(error); toast.error("지도점검 등록이 실패되었습니다."); } finally { set((state: rainChkgdnType) => ({ rainChkgdn: { ...state.rainChkgdn, isLoading: false } })); diff --git a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx index d40c1190c..6e0a805b6 100644 --- a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx +++ b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx @@ -28,7 +28,7 @@ import { type chHeadType } from "../rainChkgdn/headList"; import type { TableUpperProps } from "@/app/store/common/type/header"; import toast from "react-hot-toast"; -export const rswtPageSize = 10; +export const rswtPageSize = 5; const rswtChkHeadList = rswtChkHeadListExport; const rswtDetailHeadList = rswtDetailHeadListExport; @@ -43,7 +43,6 @@ export type rswtChkgdnState = { rswtChkgdn: { rswtChkHeadList: TableUpperProps[]; rswtDetailHeadList: TableUpperProps[]; - rswtHeadNm: chHeadType[]; excelList: SheetParameter[]; rswtChkRes: rswtChkZodType[]; @@ -241,7 +240,6 @@ export const rswtChkgdnActionsExport: (set: any) => rswtChkgdnActions = ( try { set((state: rswtChkgdnType) => ( { rswtChkgdn: { ...state.rswtChkgdn, isLoading: true } })); - console.log('excelData ', excelData) const res = await postFectch("/reuseChk/reuseWater", excelData); if (res.ok) { ToastFormUi({ diff --git a/apps/wr/app/store/prfmncSttn/chkgdnSttn/rainChkgdnSttn/index.tsx b/apps/wr/app/store/prfmncSttn/chkgdnSttn/rainChkgdnSttn/index.tsx index bbbb3a61e..895f096ef 100644 --- a/apps/wr/app/store/prfmncSttn/chkgdnSttn/rainChkgdnSttn/index.tsx +++ b/apps/wr/app/store/prfmncSttn/chkgdnSttn/rainChkgdnSttn/index.tsx @@ -1,8 +1,8 @@ import type { rainChkZodType } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn"; -import { getFetch } from "@/components/lib/api"; +import { getCountFetch, getFetch } from "@/components/lib/api"; import type { SelectDataType } from "@common/business_components/ui"; import { rainChkgdnHeadSttnExport, ruseSttnHeadListExport, splSttnHeadListExport } from "./headList"; -import { rainMainHeadNmExport, type chHeadType } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList"; +import { rainMainHeadNmExport, type chHeadType } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList"; import { buildingExcelRainSttn } from "./excel"; import type { TableUpperProps } from "@/app/store/common/type/header"; @@ -24,20 +24,21 @@ export type rainChkSttnState = { rainChkRes: rainChkZodType[]; fcltDiv: SelectDataType[]; rainChkgdnHeadList: TableUpperProps[]; - rainHeadNm:chHeadType[]; + rainHeadNm: chHeadType[]; ruseHeadList: TableUpperProps[]; splHeadList: TableUpperProps[]; - sttnExcelList:[] + sttnExcelList: [] isInit: boolean; - isSttn:boolean; + isSttn: boolean; + rainChkCount: number; }; }; type rainChkSttnActions = { - rainChkSttnInit: (searchTxt: string, sggCd: string) => void; - rainChkSttnSearch: (searchTxt: string, sggCd: string) => void; - isRainSttn:(isSttn:boolean) => void; - getRainSttnExcel:(excelList:rainChkZodType[]) => void; + rainChkSttnInit: (pageNo: number, cnt: number, searchTxt: string, sggCd: string) => void; + rainChkSttnSearch: (pageNo: number, cnt: number, searchTxt: string, sggCd: string) => void; + isRainSttn: (isSttn: boolean) => void; + getRainSttnExcel: (excelList: rainChkZodType[]) => void; }; export type rainChkSttnType = rainChkSttnState & rainChkSttnActions; @@ -49,18 +50,23 @@ export const rainChkSttnStateExport: rainChkSttnState = { rainChkgdnHeadList: rainChkgdnHeadList, ruseHeadList: ruseHeadList, splHeadList: splHeadList, - rainHeadNm:rainHeadNm, + rainHeadNm: rainHeadNm, isInit: false, - sttnExcelList:[], - isSttn:false, + sttnExcelList: [], + isSttn: false, + rainChkCount: 1, }, }; -const initFetch = async (txt: string | undefined, sgg: string | undefined) => { +const initFetch = async (pageNo: number, cnt: number, txt: string | undefined, sgg: string | undefined) => { const currentYear = new Date().getFullYear().toString(); - const rainRes = await getFetch( + const rainRes = await getCountFetch( "wr", - `/reuseChk/rainy/` + (txt ? `${txt}` : currentYear) + (sgg ? `/${sgg}` : "/0") + `/reuseChk/rainy` + + (pageNo ? `/${pageNo}` : "/1") + + (cnt ? `/${cnt}` : "/5") + + (txt ? `/${txt}` : `/${currentYear}`) + + (sgg ? `/${sgg}` : "/0") ); return rainRes; }; @@ -68,48 +74,50 @@ export const rainChkSttnActionsExport: (set: any) => rainChkSttnActions = ( set: any ) => { return { - rainChkSttnInit: async (searchTxt: string, sggCd: string) => { + rainChkSttnInit: async (pageNo: number, cnt: number, searchTxt: string, sggCd: string) => { try { - const rainChkRes = await initFetch(searchTxt, sggCd); + const rainChkRes = await initFetch(pageNo, cnt, searchTxt, sggCd); return set((state: rainChkSttnState) => ({ ...state, rainChkSttn: { ...state.rainChkSttn, - rainChkRes:rainChkRes + rainChkRes: rainChkRes.data, + rainChkCount: rainChkRes.count, + isSttn: true }, })); } catch (error) { console.log(error); } }, - rainChkSttnSearch: async (searchTxt: string, sggCd: string) => { + rainChkSttnSearch: async (pageNo: number, cnt: number, searchTxt: string, sggCd: string) => { try { - const rainChkRes = await initFetch(searchTxt, sggCd); + const rainChkRes = await initFetch(pageNo, cnt, searchTxt, sggCd); return set((state: rainChkSttnState) => ({ ...state, rainChkSttn: { ...state.rainChkSttn, - rainChkRes:rainChkRes + rainChkRes: rainChkRes }, })); } catch (error) { console.log(error); } - },isRainSttn :(isSttn:boolean) =>{ + }, isRainSttn: (isSttn: boolean) => { try { return set((state: rainChkSttnState) => ({ ...state, rainChkSttn: { ...state.rainChkSttn, - isSttn:isSttn + isSttn: isSttn }, })); } catch (error) { console.log(error); } - },getRainSttnExcel: async (excelList:rainChkZodType[]) => { + }, getRainSttnExcel: async (excelList: rainChkZodType[]) => { try { const excelData = buildingExcelRainSttn(excelList) @@ -118,7 +126,7 @@ export const rainChkSttnActionsExport: (set: any) => rainChkSttnActions = ( ...state, rainChkSttn: { ...state.rainChkSttn, - sttnExcelList:excelData + sttnExcelList: excelData }, })); } catch (error) { diff --git a/apps/wr/app/store/prfmncSttn/chkgdnSttn/rswtChkgdnSttn/index.tsx b/apps/wr/app/store/prfmncSttn/chkgdnSttn/rswtChkgdnSttn/index.tsx index cd95ef1fc..519cd39b2 100644 --- a/apps/wr/app/store/prfmncSttn/chkgdnSttn/rswtChkgdnSttn/index.tsx +++ b/apps/wr/app/store/prfmncSttn/chkgdnSttn/rswtChkgdnSttn/index.tsx @@ -3,7 +3,7 @@ import { rswtChkSttnHeadListExport, rswtDetailSttnHeadListExport } from "./headL import type { TableUpperProps } from "@/app/store/common/type/header"; import type { chHeadType } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList"; import type { rswtChkZodType } from "@/app/store/prfmncReg/chkgdnReg/rswrtChkgdn"; -import { getFetch } from "@/components/lib/api"; +import { getCountFetch, getFetch } from "@/components/lib/api"; import { buildingExcelRswtSttn } from "./excel"; const rswtChkHeadList = rswtChkSttnHeadListExport; @@ -20,14 +20,15 @@ export type rswtChkSttnState = { rswtChkRes: rswtChkZodType[]; isInit: boolean; isSttn: boolean; + rswtChkCount: number; }; }; type rswtChkSttnActions = { - rswtChkSttnInit: (searchTxt: string, sggCd: string) => void; + rswtChkSttnInit: (pageNo: number, cnt: number, searchTxt: string, sggCd: string) => void; isRswtSttn: (isSttn: boolean) => void; getRswtSttnExcel: (excelList: rswtChkZodType[]) => void; - rswtChkSttnSearch: (searchTxt: string, sggCd: string) => void; + rswtChkSttnSearch: (pageNo: number, cnt: number, searchTxt: string, sggCd: string) => void; }; export type rswtChkSttnType = rswtChkSttnState & rswtChkSttnActions; @@ -41,15 +42,18 @@ export const rswtChkStateExport: rswtChkSttnState = { rswtChkRes: [], isInit: false, isSttn: false, + rswtChkCount: 1, }, }; -const initFetch = async (year: string | undefined, sgg: string | undefined) => { +const initFetch = async (pageNo: number, cnt: number, year: string | undefined, sgg: string | undefined) => { const currentYear = new Date().getFullYear().toString(); - const rswtChkRes = await getFetch( + const rswtChkRes = await getCountFetch( "wr", - `/reuseChk/reuseWater/` + - (year ? `${year}` : currentYear) + + `/reuseChk/reuseWater` + + (pageNo ? `/${pageNo}` : "/1") + + (cnt ? `/${cnt}` : "/20") + + (year ? `/${year}` : `/${currentYear}`) + (sgg ? `/${sgg}` : "/0") ); return rswtChkRes; @@ -60,14 +64,15 @@ export const rswtChkSttnActionsExport: (set: any) => rswtChkSttnActions = ( set: any ) => { return { - rswtChkSttnInit: async (searchTxt: string, sggCd: string) => { + rswtChkSttnInit: async (pageNo: number, cnt: number, searchTxt: string, sggCd: string) => { try { - const rswtChkRes = await initFetch(searchTxt, sggCd); + const rswtChkRes = await initFetch(pageNo, cnt, searchTxt, sggCd); return set((state: rswtChkSttnState) => ({ ...state, rswtChkSttn: { ...state.rswtChkSttn, - rswtChkRes: rswtChkRes, + rswtChkRes: rswtChkRes.data, + rswtChkCount: rswtChkRes.count, isInit: false, }, })); @@ -104,15 +109,16 @@ export const rswtChkSttnActionsExport: (set: any) => rswtChkSttnActions = ( console.log(error); } }, - rswtChkSttnSearch: async (searchTxt: string, sggCd: string) => { + rswtChkSttnSearch: async (pageNo: number, cnt: number, searchTxt: string, sggCd: string) => { try { - const rswtChkRes = await initFetch(searchTxt, sggCd); + const rswtChkRes = await initFetch(pageNo, cnt, searchTxt, sggCd); return set((state: rswtChkSttnState) => ({ ...state, rswtChkSttn: { ...state.rswtChkSttn, - rswtChkRes: rswtChkRes + rswtChkRes: rswtChkRes.data, + rswtChkCount: rswtChkRes.count, }, })); } catch (error) { diff --git a/apps/wr/components/ui/modal/chkgd/chkgdModal/chkgdModal.tsx b/apps/wr/components/ui/modal/chkgd/chkgdModal/chkgdModal.tsx index d62406e9f..515c74490 100644 --- a/apps/wr/components/ui/modal/chkgd/chkgdModal/chkgdModal.tsx +++ b/apps/wr/components/ui/modal/chkgd/chkgdModal/chkgdModal.tsx @@ -1,16 +1,14 @@ import { useWrStore } from "@/app/store"; -import { ScrollArea, Title } from "@common/business_components/ui"; -import { Button } from "@common/components/ui"; -import { useEffect, useState } from "react"; -import { headMakeprfmnc } from "@/app/ruseFcltMng/prfmncReg/chkgdnReg/TableHead"; -import { GuideDetailsTable } from "@/components/ui/table/chkgdTable/guideDetailTable/guideDetailTable"; +import type { TableUpperProps } from "@/app/store/common/type/header"; import type { splRuseWaterType } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList"; import type { rswtrPolutionsZode } from "@/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/headList"; +import { GuideDetailsTable } from "@/components/ui/table/chkgdTable/guideDetailTable/guideDetailTable"; +import { ScrollArea, Title } from "@common/business_components/ui"; +import { Button } from "@common/components/ui"; +import React, { useEffect, useState } from "react"; import type { z } from "zod"; -import React from "react"; -import type { TableUpperProps } from "@/app/store/common/type/header"; -export default function ChkgdModal({ type, obj ,setIsModal }: { type: string; obj: any , setIsModal:(open:boolean)=>void}) { +export default function ChkgdModal({ type, obj, setIsModal }: { type: string; obj: any, setIsModal: (open: boolean) => void }) { const { rainChkgdn, rswtChkgdn, @@ -253,7 +251,8 @@ export default function ChkgdModal({ type, obj ,setIsModal }: { type: string; ob </div> <div className="flex justify-between"> <h3 className="text-2xl font-bold text-gray-900 mt-2 ml-6"> - {`(${obj.bdstNm})`} + {type === "RNB" + ? `(${obj.bdstNm})` : `(${obj.building.bdstNm})`} </h3> {!rainChkSttn.isSttn ? ( <Button className="" onClick={allDataUpdate}> @@ -273,7 +272,7 @@ export default function ChkgdModal({ type, obj ,setIsModal }: { type: string; ob <GuideDetailsTable chgRes={guidData || []} headList={headList.splHeadList} - upheadList={type === "RNB"? rainChkgdn.rainSplHeadNm :rswtChkgdn.rswtSplHeadNm} + upheadList={type === "RNB" ? rainChkgdn.rainSplHeadNm : rswtChkgdn.rswtSplHeadNm} type={""} setChGuidData={(data) => { setChGuidData(data); @@ -287,7 +286,7 @@ export default function ChkgdModal({ type, obj ,setIsModal }: { type: string; ob <GuideDetailsTable chgRes={guidData || []} headList={headList.ruseHeadList} - upheadList={type === "RNB"? rainChkgdn.rainRuseHeadNm :rswtChkgdn.rswtRuseHeadNm} + upheadList={type === "RNB" ? rainChkgdn.rainRuseHeadNm : rswtChkgdn.rswtRuseHeadNm} type={""} setChGuidData={(data) => { setChGuidData(data); diff --git a/apps/wr/components/ui/table/chkgdTable/rainChkgd/rainChkgdTable.tsx b/apps/wr/components/ui/table/chkgdTable/rainChkgd/rainChkgdTable.tsx index c6daac3b6..687b27611 100644 --- a/apps/wr/components/ui/table/chkgdTable/rainChkgd/rainChkgdTable.tsx +++ b/apps/wr/components/ui/table/chkgdTable/rainChkgd/rainChkgdTable.tsx @@ -25,6 +25,7 @@ export default function RainChkgdTable({ rainChkData, pageNation, onPageChange, + pageCount, }: { detailUp: (data: rainChkZodType[]) => void; handleClick?: (data: any) => void; @@ -32,6 +33,7 @@ export default function RainChkgdTable({ rainChkData?: rainChkZodType[]; pageNation: number; onPageChange: (page: number) => void; + pageCount: number; }) { const { code, rainChkgdn, rainChkSttn, getRainSttnExcel } = useWrStore((state) => state); const [makeTableData, setMakeTableData] = useState<any[]>([]); @@ -74,7 +76,7 @@ export default function RainChkgdTable({ useEffect(() => { setSelectedIds([])// 셀렉트 초기화를 위한 작업 - if (rainChkData&&rainChkData.length>0) { + if (rainChkData && rainChkData.length > 0) { const rainChg = rainChkData?.map((item: any) => { const bud = tableData([item.building], { code }); @@ -86,7 +88,7 @@ export default function RainChkgdTable({ }); setMakeTableData(rainChkTableData(rainChg)); - }else{ + } else { setMakeTableData([]); } }, [rainChkData, code]); @@ -170,14 +172,8 @@ export default function RainChkgdTable({ }) } - }, [rainChkSttn.isSttn, rainChkgdn.rainChkgdnHeadList, rainChkSttn.rainChkgdnHeadList]); - - useEffect(() =>{ - console.log('rainChkgdn.count ', rainChkgdn.rainChkCount) - },[rainChkgdn.rainChkCount]) - return ( <> <LoadingOverlay isLoading={rainChkgdn.isLoading}></LoadingOverlay> @@ -202,7 +198,7 @@ export default function RainChkgdTable({ </TableBody> </Table> <UiPageNations - total={rainChkgdn.rainChkCount||20} + total={pageCount} cur={pageNation} pageSize={rainPageSize} onPageChange={onPageChange} diff --git a/apps/wr/components/ui/table/chkgdTable/rswtChkgd/rswtChkgdTable.tsx b/apps/wr/components/ui/table/chkgdTable/rswtChkgd/rswtChkgdTable.tsx index 5264dcdee..e71238706 100644 --- a/apps/wr/components/ui/table/chkgdTable/rswtChkgd/rswtChkgdTable.tsx +++ b/apps/wr/components/ui/table/chkgdTable/rswtChkgd/rswtChkgdTable.tsx @@ -25,6 +25,7 @@ export default function RswtChkgdTable({ rswtChkData, pageNation, onPageChange, + pageCount, }: { detaiRswtlUpdate: (data: rswtrChkDetailsZodType[]) => void; handleRswtClick?: (data: any) => void; @@ -32,6 +33,7 @@ export default function RswtChkgdTable({ rswtChkData: rswtChkZodType[]; pageNation: number; onPageChange: (page: number) => void; + pageCount: number; }) { const { code, rswtChkgdn, rswtChkSttn, rswtChkgdnInit, rswtChkPolAndGuide, getRswtSttnExcel } = useWrStore( (state) => state @@ -152,7 +154,7 @@ export default function RswtChkgdTable({ </TableBody> </Table> <UiPageNations - total={rswtChkgdn.rswtChkCount} + total={pageCount} cur={pageNation} pageSize={rswtPageSize} onPageChange={onPageChange}