From aa1b309b26b72a7ce40efa2c7d013471607f34fd Mon Sep 17 00:00:00 2001 From: ljpark Date: Mon, 21 Sep 2026 14:45:50 +0900 Subject: [PATCH] =?UTF-8?q?wr:=20=EC=A4=91=EC=88=98=EB=8F=84=20=EB=8B=A8?= =?UTF-8?q?=EC=9C=84,=20=EB=AA=A8=EB=8B=AC=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?=EC=88=9C=EC=84=9C,=20=EC=8B=9C=EC=84=A4=EA=B5=AC=EB=B6=84=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/fo/.env.local | 6 +- apps/fo/app/store/common/index.tsx | 52 ++++++++++++------ apps/wr/.env.local | 12 ++-- .../ruseFcltMng/prfmncReg/chkgdnReg/page.tsx | 24 ++++---- .../prfmncSttn/chkgdnSttn/page.tsx | 13 +++-- .../chkgdnReg/rswrtChkgdn/headList.tsx | 2 +- .../chkgdnSttn/rswtChkgdnSttn/headList.tsx | 2 +- .../ui/modal/chkgd/chkgdModal/chkgdModal.tsx | 38 ++++++------- apps/wr/public/sample_rswtChkSttn.xlsx | Bin 10774 -> 5531 bytes 9 files changed, 87 insertions(+), 62 deletions(-) diff --git a/apps/fo/.env.local b/apps/fo/.env.local index 1d6e4893f..78fb4ed09 100644 --- a/apps/fo/.env.local +++ b/apps/fo/.env.local @@ -8,8 +8,10 @@ NEXT_PUBLIC_PROXY_HOST = http://localhost:3000 NEXT_PUBLIC_SUB_DOMAIN = http://localhost:13000 #NEXT_PUBLIC_CM_LOGIN_PAGE_URL = http://localhost:3001/auth/login SERVER_API_URL = http://con.mind-one.co.kr:11083/operation-service/api/v1 -FO_SERVER_API_URL = http://con.mind-one.co.kr:11083/operation-service/api/v1 -WR_SERVER_API_URL = http://con.mind-one.co.kr:11083/reuse-service/api/v1 +# FO_SERVER_API_URL = http://con.mind-one.co.kr:11083/operation-service/api/v1 +FO_SERVER_API_URL = http://localhost:3000/operation-service/api/v1 +# WR_SERVER_API_URL = http://con.mind-one.co.kr:11083/reuse-service/api/v1 +WR_SERVER_API_URL = http://localhost:3000/reuse-service/api/v1 CS_SERVER_API_URL = http://dev.onasys.co.kr:8000 NEXT_PUBLIC_GEOSERVER_URL = https://hasudo.geo.rsonesoft.com/geoserver NEXT_PUBLIC_LX_GEOSERVER_URL = http://con.mind-one.co.kr:11306/geoserver diff --git a/apps/fo/app/store/common/index.tsx b/apps/fo/app/store/common/index.tsx index f71550f1a..96ad8a63b 100644 --- a/apps/fo/app/store/common/index.tsx +++ b/apps/fo/app/store/common/index.tsx @@ -237,6 +237,26 @@ export const COD_YEAR = 2021; * STORE - API */ +/** API 선택 목록을 값 기준으로 정규화하고 프런트 표준 전체 항목을 한 번만 추가한다. */ +const normalizeSelectData = (items: SelectDataType[]): SelectDataType[] => { + const uniqueItems = new Map(); + + items.forEach((item) => { + const val = String(item.val ?? '').trim(); + if (!val || val === '0' || uniqueItems.has(val)) return; + + uniqueItems.set(val, { + ...item, + val, + }); + }); + + return [ + { text: '전체', val: '0' }, + ...uniqueItems.values(), + ]; +}; + // 처리시설 계획정보 호출 (알에스원) export const planInfoUrl = '/dc-service/api/v1/nowDmgMtncGnsvy'; @@ -263,13 +283,12 @@ const fetchSidoData = async (): Promise => { try { const res = await getFetch('fo', '/addr/city'); const data = res.data; - selectSidoData = [ - { text: "전체", val: '0' }, - ...data.map((item: sidoDataType) => ({ + selectSidoData = normalizeSelectData( + data.map((item: sidoDataType) => ({ text: item.sido || '', val: String(item.adstDstrCd) || '' - })) - ]; + })), + ); return selectSidoData; } catch (error) { console.error('시도 데이터를 가져오는데 실패했습니다:', error); @@ -282,14 +301,12 @@ const fetchSigunData = async (): Promise => { try { const res = await getFetch('fo', '/addr/sgg'); const data = res.data; - selectSigunData = [ - { text: "전체", val: '0' }, - ...data - .map((item: sigunDataType) => ({ - text: item.gugun || '', - val: String(item.adstDstrCd) || '' - })) - ]; + selectSigunData = normalizeSelectData( + data.map((item: sigunDataType) => ({ + text: item.gugun || '', + val: String(item.adstDstrCd) || '' + })), + ); return selectSigunData; } catch (error) { console.error('시군구 데이터를 가져오는데 실패했습니다:', error); @@ -302,13 +319,12 @@ const fetchRegionData = async (): Promise => { try { const res = await getFetch('fo', '/addr/sarea'); const data = res.data; - return [ - { text: "전체", val: '0' }, - ...data.map((item: regionDataType) => ({ + return normalizeSelectData( + data.map((item: regionDataType) => ({ text: item.rvbsn || '', val: String(item.rvbsnCd) || '' - })) - ]; + })), + ); } catch (error) { console.error('권역 데이터를 가져오는데 실패했습니다:', error); return selectRegionData; diff --git a/apps/wr/.env.local b/apps/wr/.env.local index b123d7cc4..999335951 100644 --- a/apps/wr/.env.local +++ b/apps/wr/.env.local @@ -7,16 +7,16 @@ NEXT_PUBLIC_REFRESH_TOKEN = refresh-token NEXT_PUBLIC_PROXY_HOST = http://localhost:3001 NEXT_PUBLIC_SUB_DOMAIN = http://localhost:13000 SERVER_API_URL = http://dev.onasys.co.kr:8000 -FO_SERVER_API_URL = http://con.mind-one.co.kr:11083/operation-service/api/v1 -# FO_SERVER_API_URL = http://localhost:8883/operation-service/api/v1 +# FO_SERVER_API_URL = http://con.mind-one.co.kr:11083/operation-service/api/v1 +FO_SERVER_API_URL = http://localhost:8883/operation-service/api/v1 CS_SERVER_API_URL = http://dev.onasys.co.kr:8000 NEXT_PUBLIC_CS_TUS_UPLOAD = /attach-service/api/v1/tus/upload NEXT_PUBLIC_GEOSERVER_URL = https://hasudo.geo.rsonesoft.com/geoserver NEXT_PUBLIC_LX_GEOSERVER_URL = http://con.mind-one.co.kr:11306/geoserver -WR_SERVER_API_URL = http://con.mind-one.co.kr:11083/reuse-service/api/v1 -# WR_SERVER_API_URL = http://localhost:8883/reuse-service/api/v1 -SEWERAGE_API_URL = http://con.mind-one.co.kr:11083/sewerage-service # 개발 서버 API -# SEWERAGE_API_URL=http://localhost:8883/sewerage-service +# WR_SERVER_API_URL = http://con.mind-one.co.kr:11083/reuse-service/api/v1 +WR_SERVER_API_URL = http://localhost:8883/reuse-service/api/v1 +# SEWERAGE_API_URL = http://con.mind-one.co.kr:11083/sewerage-service # 개발 서버 API +SEWERAGE_API_URL=http://localhost:8883/sewerage-service NEXT_PUBLIC_NGII_URL = https://map.ngii.go.kr NEXT_PUBLIC_NGII_PARAM = 04trYP9_xwLAfALjwZ-B8g&service=WMTS&request=GetTile&version=1.0.0&format=image/png&layer=korean_map&style=korean&tilematrixset=korean&tilematrix={z}&tilecol={x}&tilerow={y} # NEXT_PUBLIC_CM_LOGIN_PAGE_URL = http://dev.onasys.co.kr:3000/auth/login diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx index 6f3cb2d84..e894def1f 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx @@ -60,7 +60,7 @@ export default function Page() { isRainSttn, // 빗물이용시설 상세/선택 상태 초기화 rswtChkgdnInit, // 중수도시설 지도점검 목록 초기 조회 rswtChkNmSearch, // 중수도시설명으로 목록 조회 - rswtChkPolInit, // 중수도 시설구분 변경 시 조회조건 초기화 + rswtChkPolInit, // 중수도 시설구분 조회 시 상세 조회조건 초기화 rswtChkDetilsUpdate, // 중수도시설 지도점검 상세 수정 저장 rswtChkDelete, // 중수도시설 지도점검 선택 건 삭제 rswtrChkExcelDownload, // 중수도시설 지도점검 엑셀 양식/데이터 조회 @@ -80,6 +80,8 @@ export default function Page() { const [rswtPageNation, setRswtPageNation] = useState(1); const [fcltNm, setFcltNm] = useState(""); const [selFcltDiv, setSelFcltDiv] = useState("RNB"); + // 검색 조건에서 선택한 시설구분과 실제 조회·표시 중인 시설구분을 분리한다. + const [appliedFcltDiv, setAppliedFcltDiv] = useState("RNB"); const [isModal, setIsModal] = useState({ open: false, data: {}, @@ -107,7 +109,9 @@ export default function Page() { const cellClick = () => { - if (searchYear) + if (searchYear) { + if (selFcltDiv === "RST") rswtChkPolInit(); + setAppliedFcltDiv(selFcltDiv); if (selFcltDiv === "RNB") { // 빗물 if (fcltNm) { rainChkNmSearch( rainPageNation, rainPageSize, searchYear, laeSeCd, fcltNm ); @@ -123,6 +127,7 @@ export default function Page() { rswtChkgdnInit(rswtPageNation, rswtPageSize, searchYear, laeSeCd); } } + } }; const rainPageChange = (pageNo: number) => { @@ -176,13 +181,13 @@ export default function Page() { }, [rainChkgdn.excelList]); const excelClick = useCallback(() => { - if (selFcltDiv === "RNB") { + if (appliedFcltDiv === "RNB") { rainChkExcelDownload(code.cityCd, code.sggCd,laeSeCd); } else { rswtrChkExcelDownload(code.cityCd, code.sggCd,laeSeCd); } }, - [ rainChkExcelDownload, rswtrChkExcelDownload, code.cityCd, code.sggCd, selFcltDiv, laeSeCd ] + [ rainChkExcelDownload, rswtrChkExcelDownload, code.cityCd, code.sggCd, appliedFcltDiv, laeSeCd ] ); const handleClick = useCallback( @@ -274,7 +279,6 @@ export default function Page() { selectClass={""} selectArray={rainChkgdn.fcltDiv} onSelectValue={(val: string | number) => { - if (val === "RST") rswtChkPolInit(); setSelFcltDiv(String(val)); }} value={selFcltDiv ?? rainChkgdn.fcltDiv[0]?.val} @@ -306,7 +310,7 @@ export default function Page() {