From 4e3413484de5c30cc727266178bd6561f900bfdb Mon Sep 17 00:00:00 2001 From: RSONE001 Date: Wed, 29 Oct 2025 14:56:14 +0900 Subject: [PATCH 01/23] =?UTF-8?q?fix:=20=EC=97=B0=EA=B3=84=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20form=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/cs/src/pages/link/ui/link-form.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/cs/src/pages/link/ui/link-form.tsx b/apps/cs/src/pages/link/ui/link-form.tsx index 9447c0bb2..51d8c9f18 100644 --- a/apps/cs/src/pages/link/ui/link-form.tsx +++ b/apps/cs/src/pages/link/ui/link-form.tsx @@ -244,7 +244,9 @@ const LinkForm = ({ form, linkSn, updateLinkInfo, handleInsertLink, deleteLink, - 연계서버 IP + + {'link0007' === form.watch('link_clsf_cd') as string ? '연계 파일명 구분자' : '연계서버 IP'} + Date: Wed, 29 Oct 2025 15:14:17 +0900 Subject: [PATCH 02/23] =?UTF-8?q?uuid=20=EC=97=86=EC=9D=84=EC=8B=9C=20?= =?UTF-8?q?=EC=9E=84=EC=9D=98=20uuid=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business_components/src/ui/sdmInsertForm/index.tsx | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/common/business_components/src/ui/sdmInsertForm/index.tsx b/packages/common/business_components/src/ui/sdmInsertForm/index.tsx index 99697b4d6..1b9aed0a0 100644 --- a/packages/common/business_components/src/ui/sdmInsertForm/index.tsx +++ b/packages/common/business_components/src/ui/sdmInsertForm/index.tsx @@ -124,7 +124,7 @@ export default function SdmInsertForm({selectSidoData, selectSigunData, dataList // form 에러 체크 const formErrors = form.formState.errors; - const myUUID = getCookie('token-id'); + const myUUID = getCookie('token-id') ||'c475824c-0e82-4a06-a282-2b55a20df265'; if (Object.keys(formErrors).length > 0 ) { const errorMessage = Object.values(formErrors)[0]?.message || '입력값을 확인해주세요.'; @@ -132,10 +132,7 @@ export default function SdmInsertForm({selectSidoData, selectSigunData, dataList return; } - if(!myUUID){ - toast.error('사용자 정보가 올바르지 않습니다. 다시 로그인 해주세요.'); - return; - } + const dmdInfoId = data.dmdInfoId + (data.bznmTotNo || '0000'); const formData = { From 59592bf89b86074eca406921bb3a3f46114277da Mon Sep 17 00:00:00 2001 From: ljpark Date: Wed, 29 Oct 2025 17:31:06 +0900 Subject: [PATCH 03/23] =?UTF-8?q?=EB=AC=BC=EC=9E=AC=EC=9D=B4=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/dm/.env.production | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dm/.env.production b/apps/dm/.env.production index 23cde9181..5aeaa9c45 100644 --- a/apps/dm/.env.production +++ b/apps/dm/.env.production @@ -13,7 +13,7 @@ NEXT_PUBLIC_CS_SERVER_API_URL = http://apigateway.iipbs-was.svc.cluster.local:80 NEXT_PUBLIC_CS_TUS_UPLOAD = /attach-service/api/v1/tus/upload NEXT_PUBLIC_GEOSERVER_URL = http://172.29.143.87:8080/geoserver NEXT_PUBLIC_LX_GEOSERVER_URL = http://172.29.143.87:8080/geoserver_swl -NEXT_PUBLIC_WR_API_URL= http://apigateway.iipbs-was.svc.cluster.local:8000/reuse-service/api/v1 +NEXT_PUBLIC_WR_SERVER_API_URL = http://apigateway.iipbs-was.svc.cluster.local:8000/reuse-service/api/v1 NEXT_PUBLIC_SEWERAGE_API_URL = http://apigateway.iipbs-was.svc.cluster.local:8000/sewerage-service NEXT_PUBLIC_NGII_URL = http://172.29.143.87 NEXT_PUBLIC_NGII_PARAM = BDE2BEF39DAFEC293AB6730150F222AC&service=WMTS&request=GetTile&version=1.0.0&format=image/png&layer=korean_map&style=korean&tilematrixset=korean&tilematrix={z}&tilecol={y}&tilerow={x} From c701116167af2007d2716b94c4fa2373cc11d03b Mon Sep 17 00:00:00 2001 From: jsyang Date: Wed, 29 Oct 2025 17:43:45 +0900 Subject: [PATCH 04/23] =?UTF-8?q?=EC=A3=BC=EC=84=9D=EC=B6=94=EA=B0=80,=20?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EB=B8=94=20=ED=97=A4=EB=8D=94=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../(with-layout)/flowRate/modal/page.tsx | 23 ++++++++++++++++--- apps/fo/app/pages/(with-layout)/rdi/page.tsx | 3 ++- .../(with-layout)/underWaterInput/page.tsx | 9 ++++++-- apps/fo/app/store/flowRate/index.tsx | 5 ++-- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx b/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx index 30b97c945..42512f802 100644 --- a/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx +++ b/apps/fo/app/pages/(with-layout)/flowRate/modal/page.tsx @@ -25,6 +25,8 @@ const tabList = [ { value: 'tab_term_rain', label: '강우시' } ]; +const commentArray = "[미처리하수 추정량 산식 =[(강우시 일별유입유량*강우시 일별유입BOD)-(청천시 연평균유입유량*청천시 연평균유입BOD)]/강우시 일별유입BOD)]"; + export default function FlowRateModal(props: { fcltyName: string; facilityCd: string; searchYear: string }) { // 그리드 관련 const { Common, FlowRateModal, searchFlowRateModalList } = useFoStore((state) => state); @@ -192,12 +194,13 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st "연계처리량(m³/일)": CommaToNumber(item.sumFlow), "총인반류수량(m³/일)": CommaToNumber(item.returnAmnt), "방류량(m³/일)": CommaToNumber(item.efflAmnt), - /* "강우량(mm/일)": item.infoRnDay, */ + "미처리하수 추정량(m³/일)": CommaToNumber(item.noProcessInflAmnt), + "강우량(mm/일)": CommaToNumber(item.infoRnDay), }); }); } if (excelDownList && excelDownList.length > 0) { - downloadExcel({ data: JSON.parse(JSON.stringify(excelDownList)), fileName: props.searchYear+'년 '+props.fcltyName + ' 유량현황', sheetNameArray: [props.fcltyName + ' 유량현황'], headerRange: 'A1:G1' }); + downloadExcel({ data: JSON.parse(JSON.stringify(excelDownList)), fileName: props.searchYear+'년 '+props.fcltyName + ' 유량현황', sheetNameArray: [props.fcltyName + ' 유량현황'], headerRange: 'A1:H1' }); } else if (prevExcelListRef.current && prevExcelListRef.current.length > 0) { alert('다운받을 데이터가 없습니다.'); } @@ -233,6 +236,9 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st boldArray={[0,1,2]} /> +
+ +
@@ -257,6 +263,9 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st boldArray={[0,1,2]} /> +
+ +
@@ -281,6 +290,9 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st boldArray={[0,1,2]} /> +
+ +
@@ -305,6 +317,9 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st boldArray={[0,1,2]} /> +
+ +
@@ -319,7 +334,9 @@ export default function FlowRateModal(props: { fcltyName: string; facilityCd: st
{}} className="h-[370px]" boldArray={[0,1,2]}/>
- +
+ +
diff --git a/apps/fo/app/pages/(with-layout)/rdi/page.tsx b/apps/fo/app/pages/(with-layout)/rdi/page.tsx index c2109ad6a..72373f60f 100644 --- a/apps/fo/app/pages/(with-layout)/rdi/page.tsx +++ b/apps/fo/app/pages/(with-layout)/rdi/page.tsx @@ -14,6 +14,7 @@ import LoadingOverlay from "@common/business_components/ui/loadingBar"; import UnderComment from "@/app/components/common/UnderComment"; const commentArray = [ + "적정판단근거 = 하절기(6~8)월 강우일 중 BOD수질이 최저인 일자의 RDII추정량을 기준으로 판단", "강우시 총 추정유입량 = 청천시 유입하수량 + RDII 추정값", "주) 처리장 유입부에서 측정된 유량 및 수질조사 자료를 기준으로 산정된 결과임" ] @@ -202,7 +203,7 @@ export default function Rdi() { queryClick={chkVal} excelClick={excelDownload} initClick={resetVal} - ref={ref} isAdmin={false} /> + ref={ref} isAdmin={false} />
diff --git a/apps/fo/app/pages/(with-layout)/underWaterInput/page.tsx b/apps/fo/app/pages/(with-layout)/underWaterInput/page.tsx index 442c9467f..8ac105698 100644 --- a/apps/fo/app/pages/(with-layout)/underWaterInput/page.tsx +++ b/apps/fo/app/pages/(with-layout)/underWaterInput/page.tsx @@ -15,6 +15,12 @@ import { useCallback, useEffect, useRef, useState } from "react"; import UnderWaterInputModal from "./modal/page"; import type { UnderWaterProps } from "@/app/store/underWaterInput/types"; import LoadingOverlay from "@common/business_components/ui/loadingBar"; +import UnderComment from "@/app/components/common/UnderComment"; + +const commentArray = [ + "적정여부(=연간 지하수유입량/연평균 유입하수량*100)가 20%이하면 “적정”으로 표출, 그 이상은 “초과유입”으로 표출", + "지하수 유입량 = 하수처리장 청천시 실제유입량 - (물사용량 × 오수전환율)" +] export default function UnderWaterInput() { const {Common @@ -238,9 +244,8 @@ export default function UnderWaterInput() {
index !== undefined && cellClick(index)} headName={"지하수유입량 추정"} tableData={mainList} headlist={upheadList} pageSize={10} total={total} resetPageNo={resetPage} onPageChange={handlePageChange} widthFixed={true}/>
+
- ※적정여부 = 연간 지하수유입량/연평균 유입하수량*100

- ※지하수 유입량 = 하수처리장 청천시 실제유입량 - (물사용량 × 오수전환율)
{selectedRow !== null && ( diff --git a/apps/fo/app/store/flowRate/index.tsx b/apps/fo/app/store/flowRate/index.tsx index 05a41e556..ff406f7d4 100644 --- a/apps/fo/app/store/flowRate/index.tsx +++ b/apps/fo/app/store/flowRate/index.tsx @@ -59,7 +59,8 @@ export type modalExcelType = { "연계처리량(m³/일)": number | '', "총인반류수량(m³/일)": number | '', "방류량(m³/일)": number | '', - /* "강우량(mm/일)": number | string | '', */ + "미처리하수 추정량(m³/일)": number | '', + "강우량(mm/일)": number | string | '', } /** * (2) 모달 @@ -159,7 +160,7 @@ const upHeadListFlowRateModal:TableUpperProps[] = [ { id: "sumFlow", title: "연계처리량(m³/일)", align:"right"}, { id: "returnAmnt", title: "총인 반류수량(m³/일)", align:"right"}, { id: "efflAmnt", title: "방류량(m³/일)", align:"right"}, - { id: "noProcessInflAmnt", title: "미처리하수량(m³/일)", align:"right"}, + { id: "noProcessInflAmnt", title: "미처리하수 추정량(m³/일)", align:"right"}, { id: "infoRnDay", title: "강우량(mm/일)", align:"right"} ] From 0ac94449eaacdda01ada165cc879e3aa6b4540b2 Mon Sep 17 00:00:00 2001 From: ljpark Date: Wed, 29 Oct 2025 19:04:17 +0900 Subject: [PATCH 05/23] =?UTF-8?q?=EB=8C=80=EB=AF=BC=20=ED=9B=84=EB=B3=B4?= =?UTF-8?q?=EC=A7=80=EC=A1=B0=ED=9A=8C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/dm/app/(popup-layout)/map/service/map.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dm/app/(popup-layout)/map/service/map.ts b/apps/dm/app/(popup-layout)/map/service/map.ts index 7701288bb..00e3ab561 100644 --- a/apps/dm/app/(popup-layout)/map/service/map.ts +++ b/apps/dm/app/(popup-layout)/map/service/map.ts @@ -43,7 +43,7 @@ export const mapService = { return response.json(); }, getPbnstRuseFclts: async (ruseFcltPk:any) => { - const response = await fetch(`${DEV_URL_WR}/api/v1/reuseFc/pubFc/${ruseFcltPk}`, { + const response = await fetch(`${DEV_URL_WR}/reuseFc/pubFc/${ruseFcltPk}`, { method: 'GET', headers: { 'Accept': 'application/json', From d2dca757a7dc8a51a2fc7f5ff6cac48779991ff8 Mon Sep 17 00:00:00 2001 From: leedj312 Date: Wed, 29 Oct 2025 19:36:04 +0900 Subject: [PATCH 06/23] =?UTF-8?q?=EB=AC=BC=EC=9E=AC=EC=9D=B4=EC=9A=A9:=20?= =?UTF-8?q?=EC=A7=80=EB=8F=84=EC=A0=90=EA=B2=80=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../prfmncSttn/chkgdnSttn/page.tsx | 123 ++++++++++-------- .../prfmncReg/chkgdnReg/rainChkgdn/index.tsx | 7 +- .../prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx | 6 +- .../ui/modal/chkgd/chkgdExcel/chkgdExcel.tsx | 7 +- 4 files changed, 81 insertions(+), 62 deletions(-) diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx index 6b4eead42..fe1bd06de 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx @@ -1,12 +1,9 @@ "use client"; import { useWrStore } from "@/app/store"; -import { commonCd, rainPageSize } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn"; +import { rainPageSize } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn"; import { rswtPageSize } from "@/app/store/prfmncReg/chkgdnReg/rswrtChkgdn"; -import { - excelDownload, - yearOptions -} from "@/components/lib/func/commom"; +import { excelDownload, yearOptions } from "@/components/lib/func/commom"; import ChkgdModal from "@/components/ui/modal/chkgd/chkgdModal/chkgdModal"; import RainChkgdTable from "@/components/ui/table/chkgdTable/rainChkgd/rainChkgdTable"; import RswtChkgdTable from "@/components/ui/table/chkgdTable/rswtChkgd/rswtChkgdTable"; @@ -18,7 +15,7 @@ import { SearchInput, SelectBox, Title, - UiModal + UiModal, } from "@common/business_components/ui"; import ListDiv from "@common/business_components/ui/list_div"; import { Button, Label } from "@common/components/ui"; @@ -28,6 +25,7 @@ import { useTranslation } from "react-i18next"; export default function Page() { const { + auth, rainChkSttn, rswtChkSttn, rainChkSttnInit, @@ -41,6 +39,7 @@ export default function Page() { return state; }); + const { laeSeCd } = auth; const [selFcltDiv, setSelFcltDiv] = useState("RNB"); const [rainPageNation, setRainPageNation] = useState(1); const [rswtPageNation, setRswtPageNation] = useState(1); @@ -49,7 +48,9 @@ export default function Page() { open: false, data: {}, }); - const [searchYear, setSearchYear] = useState(String(new Date().getFullYear())); + const [searchYear, setSearchYear] = useState( + String(new Date().getFullYear()) + ); const cellClick = () => { if (searchYear) { if (selFcltDiv === "RNB") { @@ -58,11 +59,11 @@ export default function Page() { rainPageNation, rainPageSize, searchYear, - commonCd, + laeSeCd, fcltNm ); } else { - rainChkSttnInit(rainPageNation, rainPageSize, searchYear, commonCd); + rainChkSttnInit(rainPageNation, rainPageSize, searchYear, laeSeCd); } } else { if (fcltNm) { @@ -70,11 +71,11 @@ export default function Page() { rswtPageNation, rswtPageSize, searchYear, - commonCd, + laeSeCd, fcltNm ); } else { - rswtChkSttnInit(rswtPageNation, rswtPageSize, searchYear, commonCd); + rswtChkSttnInit(rswtPageNation, rswtPageSize, searchYear, laeSeCd); } } } @@ -84,15 +85,9 @@ export default function Page() { if (pageNo > 0) { setRainPageNation(pageNo); if (fcltNm) { - rainChkSttnNmSearch( - pageNo, - rainPageSize, - searchYear, - commonCd, - fcltNm - ); + rainChkSttnNmSearch(pageNo, rainPageSize, searchYear, laeSeCd, fcltNm); } else { - rainChkSttnInit(pageNo, rainPageSize, searchYear, commonCd); + rainChkSttnInit(pageNo, rainPageSize, searchYear, laeSeCd); } } }; @@ -101,38 +96,38 @@ export default function Page() { if (pageNo > 0) { setRswtPageNation(pageNo); if (fcltNm) { - rswtChkNmSttnSearch( - pageNo, - rainPageSize, - searchYear, - commonCd, - fcltNm - ); + rswtChkNmSttnSearch(pageNo, rainPageSize, searchYear, laeSeCd, fcltNm); } else { - rswtChkSttnInit(pageNo, rswtPageSize, searchYear, commonCd); + rswtChkSttnInit(pageNo, rswtPageSize, searchYear, laeSeCd); } } }; useEffect(() => { if (!rainChkSttn.isInit) { - isRainSttn(true) - rainChkSttnInit(1, rainPageSize, new Date().getFullYear().toString(), commonCd); + isRainSttn(true); + rainChkSttnInit( + 1, + rainPageSize, + new Date().getFullYear().toString(), + laeSeCd + ); setIsModal({ data: {}, open: false }); - } - }, [rainChkSttn.isInit, rainChkSttnInit, rainPageSize]); useEffect(() => { if (!rswtChkSttn.isInit) { setIsModal({ data: {}, open: false }); - rswtChkSttnInit(1, rswtPageSize, new Date().getFullYear().toString(), commonCd); - isRswtSttn(true) + rswtChkSttnInit( + 1, + rswtPageSize, + new Date().getFullYear().toString(), + laeSeCd + ); + isRswtSttn(true); } - }, [rswtChkSttn.isInit, rswtChkSttnInit, rswtPageSize]) - - + }, [rswtChkSttn.isInit, rswtChkSttnInit, rswtPageSize]); const handleClick = useCallback( (data: any) => { @@ -140,11 +135,14 @@ export default function Page() { }, [isModal] ); - const { t } = useTranslation('base'); + const { t } = useTranslation("base"); const excelDown = () => { if (rainChkSttn.sttnExcelList && selFcltDiv === "RNB") { - if (!rainChkSttn.sttnExcelList || rainChkSttn.sttnExcelList.length === 0) { - toast.error(t('excelDownErrMsg')); + if ( + !rainChkSttn.sttnExcelList || + rainChkSttn.sttnExcelList.length === 0 + ) { + toast.error(t("excelDownErrMsg")); return; } excelDownload( @@ -155,8 +153,11 @@ export default function Page() { 3 ); } else if (rswtChkSttn.sttnExcelList && selFcltDiv === "RST") { - if (!rswtChkSttn.sttnExcelList || rswtChkSttn.sttnExcelList.length === 0) { - toast.error(t('excelDownErrMsg')); + if ( + !rswtChkSttn.sttnExcelList || + rswtChkSttn.sttnExcelList.length === 0 + ) { + toast.error(t("excelDownErrMsg")); return; } excelDownload( @@ -167,7 +168,7 @@ export default function Page() { 3 ); } - } + }; return ( @@ -177,7 +178,9 @@ export default function Page() {
- +
- + { if (val === "RST") rswtChkPolInit(); - setSelFcltDiv(String(val)) - } - } + setSelFcltDiv(String(val)); + }} value={selFcltDiv ?? rainChkSttn.fcltDiv[0]?.val} />
@@ -227,7 +231,13 @@ export default function Page() { > 조회 - @@ -241,8 +251,8 @@ export default function Page() { {selFcltDiv === "RNB" ? ( { }} - detailUp={() => { }} + deleteData={() => {}} + detailUp={() => {}} handleClick={handleClick} rainChkData={rainChkSttn.rainChkRes} pageNation={rainPageNation} @@ -252,8 +262,8 @@ export default function Page() { /> ) : ( { }} - deleteRswtData={() => { }} + detaiRswtlUpdate={() => {}} + deleteRswtData={() => {}} handleRswtClick={handleClick} rswtChkData={rswtChkSttn.rswtChkRes} pageNation={rswtPageNation} @@ -271,7 +281,14 @@ export default function Page() { setIsModal({ open: !open, data: {} }); }} bodyClass={"w-[80vw] max-w-none"} - body={ { }} />} + body={ + {}} + /> + } >
diff --git a/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/index.tsx b/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/index.tsx index 1a0af3fad..9c36c4b57 100644 --- a/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/index.tsx +++ b/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/index.tsx @@ -25,7 +25,6 @@ import { } from "./headList"; export const rainPageSize = 5; -export const commonCd = "41"; export type rainChkZodType = z.infer; const fcltDiv = [ @@ -75,7 +74,7 @@ type rainChkgdnActions = { sggCode: SelectDataType[], sggCd:string ): Promise; - rainChkExcelDataUPload(excelData: rainChkZodType[] ,year :string) : Promise; + rainChkExcelDataUPload(excelData: rainChkZodType[] ,year :string,laeSeCd:string) : Promise; rainChkDelete(chkgdnSns: number[] ,year :string): Promise; rainChkHeadChange: (rainChkgdn: rainChkgdnState, isEdit: boolean) => void; rainChkNmSearch: ( @@ -168,7 +167,7 @@ export const rainChkgdnActionsExport: (set: any) => rainChkgdnActions = ( }, })); }, - rainChkExcelDataUPload: async (excelData: rainChkZodType[] ,year:string) => { + rainChkExcelDataUPload: async (excelData: rainChkZodType[] ,year:string,laeSeCd:string) => { set((state: rainChkgdnType) => ( { rainChkgdn: { ...state.rainChkgdn, isLoading: true } })); try { @@ -178,7 +177,7 @@ export const rainChkgdnActionsExport: (set: any) => rainChkgdnActions = ( 1, rainPageSize, year, - commonCd + laeSeCd ); set((state: rainChkgdnState) => ({ ...state, diff --git a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx index e9ebdab8d..cf2eca339 100644 --- a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx +++ b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx @@ -78,7 +78,7 @@ type rswtChkgdnActions = { sggCode: SelectDataType[], sggCd: string, ): Promise; - rswtChkExceDataUpload: (excelData: rswtChkZodType[]) => void; + rswtChkExceDataUpload: (excelData: rswtChkZodType[],laeSeCd:string) => void; rswtChkDelete: (chkgdnSns: number[] ,year:string) => void; rswtChkDetilsUpdate: (rswtChkDetails: rswtrChkDetailsZodType[] ,year:string) => void; rswtChkPolAndGuide: (chkgdnSn: number) => void; @@ -244,7 +244,7 @@ export const rswtChkgdnActionsExport: (set: any) => rswtChkgdnActions = ( console.log(error); } }, - rswtChkExceDataUpload: async (excelData: rswtChkZodType[]) => { + rswtChkExceDataUpload: async (excelData: rswtChkZodType[],laeSeCd:string) => { try { set((state: rswtChkgdnType) => ( { rswtChkgdn: { ...state.rswtChkgdn, isLoading: true } })); @@ -256,7 +256,7 @@ export const rswtChkgdnActionsExport: (set: any) => rswtChkgdnActions = ( }); } const currentYear = new Date().getFullYear().toString(); - const rswtChkRes = await initFetch(1, rswtPageSize, currentYear, "0"); + const rswtChkRes = await initFetch(1, rswtPageSize, currentYear, laeSeCd); return set((state: rswtChkgdnState) => ({ ...state, rswtChkgdn: { diff --git a/apps/wr/components/ui/modal/chkgd/chkgdExcel/chkgdExcel.tsx b/apps/wr/components/ui/modal/chkgd/chkgdExcel/chkgdExcel.tsx index 24a983dce..4b84491a2 100644 --- a/apps/wr/components/ui/modal/chkgd/chkgdExcel/chkgdExcel.tsx +++ b/apps/wr/components/ui/modal/chkgd/chkgdExcel/chkgdExcel.tsx @@ -36,6 +36,7 @@ export default function ChkgdExcel({ setYearChange: (year: string) => void; }) { const { + auth, rswtChkgdn, rainChkgdn, rainChkExcelDataUPload, @@ -51,6 +52,7 @@ export default function ChkgdExcel({ const [file, setFile] = useState(null); + const { laeSeCd } = auth; const clearFile = () => { if (fileInputRef.current) { fileInputRef.current.value = ""; // ✅ 파일 선택 비우기 @@ -202,7 +204,8 @@ export default function ChkgdExcel({ } else { rainChkExcelDataUPload( excelData as rainChkZodType[], - form.getValues("chckYr") + form.getValues("chckYr"), + laeSeCd ); setIsRegExcel(false); setYearChange(form.getValues("chckYr")); @@ -213,7 +216,7 @@ export default function ChkgdExcel({ return; } else { - rswtChkExceDataUpload(excelRswtData as rswtChkZodType[]); + rswtChkExceDataUpload(excelRswtData as rswtChkZodType[], laeSeCd); setIsRegExcel(false); setYearChange(form.getValues("chckYr")); } From 738489a34cb78780111714a8293d4d2dc72643ca Mon Sep 17 00:00:00 2001 From: swcho Date: Thu, 30 Oct 2025 10:42:20 +0900 Subject: [PATCH 07/23] =?UTF-8?q?chmod:=20SearchModal=20=ED=83=AD=20'?= =?UTF-8?q?=EC=9A=B4=EC=98=81=EC=A0=95=EB=B3=B4'=20->=20'=EC=9C=A0?= =?UTF-8?q?=EC=A7=80=EA=B4=80=EB=A6=AC=20=EC=A0=95=EB=B3=B4'=EB=A1=9C=20?= =?UTF-8?q?=EB=AA=85=EC=B9=AD=20=EC=88=98=EC=A0=95=20(=EA=B3=A0=EA=B0=9D?= =?UTF-8?q?=20=EC=9A=94=EC=B2=AD)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../map/searchModal/operationTab.tsx | 4 +-- .../map/searchModal/searchModal.tsx | 10 +++---- .../map/searchModal/useOperationTab.ts | 30 +++++++++---------- .../map/searchModal/useSearchModal.ts | 6 ++-- apps/sn/app/(with-base-layout)/layout.tsx | 2 +- .../(with-base-layout)/oper/floodPre/page.tsx | 2 +- .../(with-base-layout)/oper/oldPp/page.tsx | 2 +- apps/sn/app/store/useSearchModalStore.ts | 2 +- 8 files changed, 29 insertions(+), 29 deletions(-) diff --git a/apps/sn/app/(map-layout)/map/searchModal/operationTab.tsx b/apps/sn/app/(map-layout)/map/searchModal/operationTab.tsx index 13025e2ec..692551cbb 100644 --- a/apps/sn/app/(map-layout)/map/searchModal/operationTab.tsx +++ b/apps/sn/app/(map-layout)/map/searchModal/operationTab.tsx @@ -1,8 +1,8 @@ /** - * ➡️ 경로 : 하수관망도 메인 페이지 (오른쪽 돋보기 모양 클릭) - 검색 모달 창 내 운영정보 탭 + * ➡️ 경로 : 하수관망도 메인 페이지 (오른쪽 돋보기 모양 클릭) - 검색 모달 창 내 유지관리 정보 탭 * * 📄 Operation Tab - * Next.js App Router (app/) 기반 검색 모달 운영정보 탭 컴포넌트 + * Next.js App Router (app/) 기반 검색 모달 유지관리 정보 탭 컴포넌트 * * - 업무구분 선택 (보수 및 갱신, 점검 및 진단, 청소 및 준설) * - 사업명 입력 및 수행기간 범위 선택 diff --git a/apps/sn/app/(map-layout)/map/searchModal/searchModal.tsx b/apps/sn/app/(map-layout)/map/searchModal/searchModal.tsx index d2537663e..8da8911e5 100644 --- a/apps/sn/app/(map-layout)/map/searchModal/searchModal.tsx +++ b/apps/sn/app/(map-layout)/map/searchModal/searchModal.tsx @@ -4,9 +4,9 @@ * 📄 Search Modal * Next.js App Router (app/) 기반 검색 모달 컴포넌트 * - * - 탭 기반 검색 인터페이스 (기본정보, 운영정보, 보고서) + * - 탭 기반 검색 인터페이스 (기본정보, 유지관리 정보, 보고서) * - 테이블 데이터 표시 및 페이지네이션 기능 - * - 시설물 조회 결과 및 운영 사업 현황 표시 + * - 시설물 조회 결과 및 유지관리 사업 현황 표시 * - 엑셀 다운로드 및 지도에서 보기 기능 * - Zustand를 통한 검색 모달 상태 관리 * - 로딩 오버레이 및 선택 초기화 지원 @@ -72,7 +72,7 @@ const SearchModal: React.FC = () => { return []; } - if (activeTab === 'operation') return OPERATION_TABLE_HEADLIST; // 운영정보 + if (activeTab === 'operation') return OPERATION_TABLE_HEADLIST; // 유지관리 정보 return []; }, [activeTab, basicType, workType]); @@ -118,7 +118,7 @@ const SearchModal: React.FC = () => { onValueChange={(value: string) => setActiveTab(value)} /> {activeTab === 'basic' && ()} {/* 기본정보 탭 */} - {activeTab === 'operation' && ()} {/* 운영정보 탭 */} + {activeTab === 'operation' && ()} {/* 유지관리 정보 탭 */} {activeTab === 'report' && ()} {/* 하수도정비기본계획보고서 탭 */} @@ -153,7 +153,7 @@ const SearchModal: React.FC = () => { )} - {/* 운영정보 탭 */} + {/* 유지관리 정보 탭 */} {activeTab === 'operation' && ( <>
diff --git a/apps/sn/app/(map-layout)/map/searchModal/useOperationTab.ts b/apps/sn/app/(map-layout)/map/searchModal/useOperationTab.ts index a4df8ae92..669dd4cb5 100644 --- a/apps/sn/app/(map-layout)/map/searchModal/useOperationTab.ts +++ b/apps/sn/app/(map-layout)/map/searchModal/useOperationTab.ts @@ -1,6 +1,6 @@ /** * 📄 useOperationTab Hook - * 검색 모달 운영정보 탭 훅 + * 검색 모달 유지관리 정보 탭 훅 * * - 필터링된 사업 현황 데이터 조회 및 포맷팅 * - 사업 현황 테이블 셀 클릭 시 상세 결과표 조회 @@ -11,8 +11,8 @@ * - 데이터 매핑 및 코드 변환 (사업 유형, 용도, 재질 등) * * 🔗 사용 API - * - 운영정보 목록 조회: GET /api/v1/bizInfo (sewerage-service) - * - 운영정보(사업정보) 관련 시설 목록 조회: GET /api/v1/bizInfo/fclts (sewerage-service) + * - 유지관리 정보 목록 조회: GET /api/v1/bizInfo (sewerage-service) + * - 유지관리 정보(사업정보) 관련 시설 목록 조회: GET /api/v1/bizInfo/fclts (sewerage-service) */ import { downloadExcelWithKoreanHeaders } from '@common/business_components/ui'; import { MS_SWAGE_PPL_CODES, MS_SWAGE_PPL_USE_CODES } from '../components/common/table'; @@ -48,12 +48,12 @@ export default function useOperationTab() { } = useSearchModalStore(); const { BIZ_TY_CD } = useStore(); - const WORK_TYPES = [ // 운영정보 '구분' 선택 목록 + const WORK_TYPES = [ // 유지관리 정보 '구분' 선택 목록 { val: "['200', '201', '204']", text: "보수 및 갱신" }, { val: "['100']", text: "점검 및 진단" }, { val: "['203']", text: "청소 및 준설" }, ]; - const OPERATION_TABLE_HEADLIST = [ // 운영정보 - 사업 현황 + const OPERATION_TABLE_HEADLIST = [ // 유지관리 정보 - 사업 현황 { id: 'rowNumber', title: '일련번호' }, { id: "bizInfoNm", title: "사업명" }, { id: "flfmtBgngYmd", title: "수행시작일자" }, @@ -62,7 +62,7 @@ export default function useOperationTab() { { id: "bizTypeCd", title: "사업유형" }, { id: "bizAmt", title: "사업금액" }, ]; - const MAINTENANACE_TABLE_HEADLIST = [ // 운영정보 - 보수 및 갱신 결과표 + const MAINTENANACE_TABLE_HEADLIST = [ // 유지관리 정보 - 보수 및 갱신 결과표 { id: 'rowNumber', title: '일련번호' }, { id: "fcltMngNo", title: "관리번호" }, { id: "swtrmt_zone_nm", title: "처리구역" }, @@ -75,7 +75,7 @@ export default function useOperationTab() { { id: "instlYmd", title: "설치일자" }, // { id: "instlYmd", title: "사업구분" }, ]; - const CLEANING_TABLE_HEADLIST = [ // 운영정보 - 청소 및 준설 결과표 + const CLEANING_TABLE_HEADLIST = [ // 유지관리 정보 - 청소 및 준설 결과표 { id: 'rowNumber', title: '일련번호' }, { id: "fcltMngNo", title: "관리번호" }, { id: "swtrmt_zone_nm", title: "처리구역" }, @@ -87,7 +87,7 @@ export default function useOperationTab() { { id: "prlgVl", title: "연장(m)" }, { id: "instlYmd", title: "설치일자" }, ]; - const INSPECTION_TABLE_HEADLIST = [ // 운영정보 - 점검 및 진단 결과표 + const INSPECTION_TABLE_HEADLIST = [ // 유지관리 정보 - 점검 및 진단 결과표 { id: 'rowNumber', title: '일련번호' }, { id: "fcltMngNo", title: "관리번호" }, { id: "swtrmt_zone_nm", title: "처리구역" }, @@ -150,7 +150,7 @@ export default function useOperationTab() { setDetailTableCount(0); }; - // 운영정보 테이블 cellClick 핸들러 + // 유지관리 정보 테이블 cellClick 핸들러 const handleOperationCellClick = async (index?: number | undefined, headId?: String) => { setIsResetDetailPage(true); // 페이지를 1로 초기화 setIsResetDetailSelection(true); // 선택 초기화 @@ -188,7 +188,7 @@ export default function useOperationTab() { setDetailTableData(mappedData); setDetailTableCount(res.count || 0); } catch (error) { - console.error('운영정보 cellClick 에러:', error); + console.error('유지관리 정보 cellClick 에러:', error); } finally { setIsDetailLoading(false); setIsResetDetailPage(false); @@ -197,7 +197,7 @@ export default function useOperationTab() { } }; - // 운영정보 디테일 테이블 cellClick 핸들러 + // 유지관리 정보 디테일 테이블 cellClick 핸들러 const handleOperationResultCellClick = async (index?: number | undefined, headId?: String) => { if (typeof index === "number") { setIsLoading(true); @@ -212,7 +212,7 @@ export default function useOperationTab() { } }; - // 운영정보 디테일 테이블 페이지네이션 핸들러 + // 유지관리 정보 디테일 테이블 페이지네이션 핸들러 const handleOperationPageNation = async (index?: number | undefined) => { if (typeof index === "number") { setIsDetailLoading(true); @@ -241,14 +241,14 @@ export default function useOperationTab() { setDetailTableData(mappedData); setDetailTableCount(res.count || 0); } catch (error) { - console.error('운영정보 페이지네이션 에러:', error); + console.error('유지관리 정보 페이지네이션 에러:', error); } finally { setIsDetailLoading(false); } } }; - // 운영정보 Excel 다운로드 핸들러 추가 + // 유지관리 정보 Excel 다운로드 핸들러 추가 const operationExcelDownload = async () => { if (tableData.length === 0) { alert("다운로드 할 Excel 파일이 없습니다.\n조회 후 다시 시도해주세요."); @@ -342,7 +342,7 @@ export default function useOperationTab() { } }; - // 운영정보 결과표 Excel 다운로드 핸들러 추가 + // 유지관리 정보 결과표 Excel 다운로드 핸들러 추가 const operationResultExcelDownload = async () => { if (detailTableData.length === 0) { alert("다운로드 할 Excel 파일이 없습니다.\n조회 후 다시 시도해주세요."); diff --git a/apps/sn/app/(map-layout)/map/searchModal/useSearchModal.ts b/apps/sn/app/(map-layout)/map/searchModal/useSearchModal.ts index 770a8700d..eb00b5f19 100644 --- a/apps/sn/app/(map-layout)/map/searchModal/useSearchModal.ts +++ b/apps/sn/app/(map-layout)/map/searchModal/useSearchModal.ts @@ -2,7 +2,7 @@ * 📄 useSearchModal Hook * 검색 모달 훅 * - * - 탭 기반 검색 인터페이스 관리 (기본정보, 운영정보, 보고서) + * - 탭 기반 검색 인터페이스 관리 (기본정보, 유지관리 정보, 보고서) * - 필터링된 데이터 조회 및 포맷팅 * - 조회 버튼을 통한 데이터 검색 트리거 * - 여러 시설 보기 기능 @@ -10,7 +10,7 @@ * - 데이터 매핑 및 코드 변환 (사업 유형 등) * * 🔗 사용 API - * - 운영정보 목록 조회: GET /api/v1/bizInfo (sewerage-service) + * - 유지관리 정보 목록 조회: GET /api/v1/bizInfo (sewerage-service) */ import { getData } from "@/components/lib/api"; import { formatDisplayData } from '@/components/lib/utils/formatDisplayValue'; @@ -44,7 +44,7 @@ export default function useSearchModal() { const TABS = [ { val: "basic", text: "기본정보" }, - { val: "operation", text: "운영정보" }, + { val: "operation", text: "유지관리 정보" }, { val: "report", text: "하수도정비기본계획보고서" }, ]; diff --git a/apps/sn/app/(with-base-layout)/layout.tsx b/apps/sn/app/(with-base-layout)/layout.tsx index 228db9a79..346521d17 100644 --- a/apps/sn/app/(with-base-layout)/layout.tsx +++ b/apps/sn/app/(with-base-layout)/layout.tsx @@ -1,5 +1,5 @@ /** - * ➡️ 경로 : I/I분석, 운영정보 모든 페이지 + * ➡️ 경로 : I/I분석, 유지관리 정보 모든 페이지 * * 📄 With Base Layout * Next.js App Router (app/) 기반 분석 페이지 기본 레이아웃 컴포넌트 diff --git a/apps/sn/app/(with-base-layout)/oper/floodPre/page.tsx b/apps/sn/app/(with-base-layout)/oper/floodPre/page.tsx index 1a5999db6..ada56d443 100644 --- a/apps/sn/app/(with-base-layout)/oper/floodPre/page.tsx +++ b/apps/sn/app/(with-base-layout)/oper/floodPre/page.tsx @@ -1,5 +1,5 @@ /** - * ➡️ 경로 : 운영정보 - 도시침수예방사업 + * ➡️ 경로 : 유지관리 정보 - 도시침수예방사업 * * 📄 FloodPre Page * 침수예방 사업 정보 등록 및 조회 페이지 컴포넌트 diff --git a/apps/sn/app/(with-base-layout)/oper/oldPp/page.tsx b/apps/sn/app/(with-base-layout)/oper/oldPp/page.tsx index eee336a3b..6f26f70ec 100644 --- a/apps/sn/app/(with-base-layout)/oper/oldPp/page.tsx +++ b/apps/sn/app/(with-base-layout)/oper/oldPp/page.tsx @@ -1,5 +1,5 @@ /** - * ➡️ 경로 : 운영정보 - 노후 하수관로 정비사업 + * ➡️ 경로 : 유지관리 정보 - 노후 하수관로 정비사업 * * 📄 OldPp Page * 노후 하수관로 정비사업 추진현황 페이지 컴포넌트 diff --git a/apps/sn/app/store/useSearchModalStore.ts b/apps/sn/app/store/useSearchModalStore.ts index 4d8702a08..1a74844bf 100644 --- a/apps/sn/app/store/useSearchModalStore.ts +++ b/apps/sn/app/store/useSearchModalStore.ts @@ -3,7 +3,7 @@ * 검색 모달 Zustand 스토어 * * - 검색 모달 열기/닫기 및 탭 전환 상태 관리 - * - 기본정보 및 운영정보 탭 데이터 필터링 및 조회 + * - 기본정보 및 유지관리 정보 탭 데이터 필터링 및 조회 * - 테이블 데이터 및 페이지네이션 상태 관리 * - 지역(시도/시군구) 및 날짜 범위 필터링 기능 * - 로딩 상태 및 리셋 플래그 관리 From 960e5f7dd133f7d741b1f07f3c51282bc6c14f68 Mon Sep 17 00:00:00 2001 From: jsyang Date: Thu, 30 Oct 2025 11:03:14 +0900 Subject: [PATCH 08/23] =?UTF-8?q?=EC=9E=91=EC=97=85=20=EC=A7=84=ED=96=89?= =?UTF-8?q?=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/(with-layout)/processArea/page.tsx | 6 +- apps/fo/app/store/processArea/index.tsx | 64 +++++++++++++++---- apps/fo/app/store/processFacility/index.tsx | 23 +++++++ 3 files changed, 77 insertions(+), 16 deletions(-) diff --git a/apps/fo/app/pages/(with-layout)/processArea/page.tsx b/apps/fo/app/pages/(with-layout)/processArea/page.tsx index fc571c665..b9519a4e6 100644 --- a/apps/fo/app/pages/(with-layout)/processArea/page.tsx +++ b/apps/fo/app/pages/(with-layout)/processArea/page.tsx @@ -70,12 +70,10 @@ export default function ProcessArea() { unitWaterShedValue: '', middleRegionValue: '', envPartValue: '', - sidoText: '', - sigunText: '' }); - const searchProcessArea = useCallback(({ sidoText, sigunText}: ReturnType, pageNo: number, pageCnt:number=20) => { - searchProcessAreaList(pageNo, pageCnt, sidoText, sigunText, searchYearValue); + const searchProcessArea = useCallback(({ sidoValue, sigunValue, sidoText, sggText}: ReturnType, pageNo: number, pageCnt:number=20) => { + searchProcessAreaList(pageNo, pageCnt, sidoValue, sigunValue, searchYearValue); }, [searchProcessAreaList, searchYearValue]); // 조회 diff --git a/apps/fo/app/store/processArea/index.tsx b/apps/fo/app/store/processArea/index.tsx index 37b4d52f0..54b8258f7 100644 --- a/apps/fo/app/store/processArea/index.tsx +++ b/apps/fo/app/store/processArea/index.tsx @@ -2,6 +2,7 @@ import { postFetch } from "@/app/components/api"; import DataForm from "@/app/components/common/DataForm"; import { fetchPlanInfo } from "../common"; import type { TableUpperProps } from "../dashboard"; +import { fetchFacilityListArea } from "../processFacility"; export type { TableUpperProps }; /**==================================== * Store - 타입 @@ -261,16 +262,7 @@ const fetchProcessAreaList = async (pageNo : number, pageSize : number, ctpvNm : head.title = '기승인\n4단계'; } }); - const res = await fetchFacilityDetailInfo(item.swtrmtFcltCd); - const detailInfo = res.data.filter((item:ProcessAreaProps) => item.ruse === true); - return { - ...item, - sido: detailInfo.length > 0 ? detailInfo[0].sido||'' : '', - sigungo: detailInfo.length > 0 ? detailInfo[0].gugun||'' : '', - location: detailInfo.length > 0 ? detailInfo[0].addr||'' : '', - fctCpc: detailInfo.length > 0 ? detailInfo[0].fctCpc||'' : 0, - trtDstr: detailInfo.length > 0 ? detailInfo[0].trtDstr||'' : '', - }; + return item; }) ); const startIndex = (pageNo - 1) * pageSize; @@ -365,7 +357,7 @@ export const processAreaReducer:(set:SetStateFunction)=>ProcessAreaActions=(set: * @param pageNo : 페이지 번호 * @param pageSize : 페이지 크기 */ - searchProcessAreaList: async ( pageNo:number, pageSize:number, ctpvNm?:string, sggNm?:string, targetYear?:string) => { + searchProcessAreaList: async ( pageNo:number, pageSize:number, sidoValue?:string, sggValue?:string, ctpvNm?:string, sggNm?:string, targetYear?:string) => { set((state: ProcessAreaType) => ({ ...state, ProcessArea: { @@ -373,7 +365,55 @@ export const processAreaReducer:(set:SetStateFunction)=>ProcessAreaActions=(set: isLoading: true, }, })); - const res = await fetchProcessAreaList(pageNo, pageSize, ctpvNm, sggNm, targetYear, set); + //const res = await fetchProcessAreaList(pageNo, pageSize, ctpvNm, sggNm, targetYear, set); + const res = await fetchFacilityListArea(pageNo, pageSize, sidoValue, sggValue, targetYear); + set((state: ProcessAreaType) => ({ + ...state, + ProcessArea: { + ...state.ProcessArea, + processAreaList: res.data, + processAreaCount: res.count, + isInit: true, + }, + })); + + const fcltyList = res.data; + + for(let i=0; i 0){ + // 증설계획 + fcltyList[i].planSwageQntSumDt4 = fcltyRes[0].planSwageQntSumDt4; + fcltyList[i].planSwageQntSum = fcltyRes[0].planSwageQntSum; + fcltyList[i].planSwageQntSumDc1 = fcltyRes[0].planSwageQntSumDc1; + fcltyList[i].planSwageQntSumDc2 = fcltyRes[0].planSwageQntSumDc2; + fcltyList[i].planSwageQntSumDc3 = fcltyRes[0].planSwageQntSumDc3; + fcltyList[i].planSwageQntSumDc4 = fcltyRes[0].planSwageQntSumDc4; + // 처리인구 + fcltyList[i].swtrmtPpltnCntDt4 = fcltyRes[0].swtrmtPpltnCntDt4; + fcltyList[i].swtrmtPpltnCnt = fcltyRes[0].swtrmtPpltnCnt; + fcltyList[i].swtrmtPpltnCntDc1 = fcltyRes[0].swtrmtPpltnCntDc1; + fcltyList[i].swtrmtPpltnCntDc2 = fcltyRes[0].swtrmtPpltnCntDc2; + fcltyList[i].swtrmtPpltnCntDc3 = fcltyRes[0].swtrmtPpltnCntDc3; + fcltyList[i].swtrmtPpltnCntDc4 = fcltyRes[0].swtrmtPpltnCntDc4; + // 처리구역면적 + fcltyList[i].swtrmtZoneAreaDt4 = fcltyRes[0].swtrmtZoneAreaDt4; + fcltyList[i].swtrmtZoneArea = fcltyRes[0].swtrmtZoneArea; + fcltyList[i].swtrmtZoneAreaDc1 = fcltyRes[0].swtrmtZoneAreaDc1; + fcltyList[i].swtrmtZoneAreaDc2 = fcltyRes[0].swtrmtZoneAreaDc2; + fcltyList[i].swtrmtZoneAreaDc3 = fcltyRes[0].swtrmtZoneAreaDc3; + fcltyList[i].swtrmtZoneAreaDc4 = fcltyRes[0].swtrmtZoneAreaDc4; + // 계획연도 + fcltyList[i].planYrDt4 = fcltyRes[0].planYrDt4; + fcltyList[i].planYr = fcltyRes[0].planYr; + fcltyList[i].planYrDc1 = fcltyRes[0].planYrDc1; + fcltyList[i].planYrDc2 = fcltyRes[0].planYrDc2; + fcltyList[i].planYrDc3 = fcltyRes[0].planYrDc3; + fcltyList[i].planYrDc4 = fcltyRes[0].planYrDc4; + } + } + res.data.forEach((item:ProcessAreaProps) => { DataForm({ type: 'float1', column: 'fctCpc', item:item as unknown as Record}); }) diff --git a/apps/fo/app/store/processFacility/index.tsx b/apps/fo/app/store/processFacility/index.tsx index 5cdab43b6..216fad59a 100644 --- a/apps/fo/app/store/processFacility/index.tsx +++ b/apps/fo/app/store/processFacility/index.tsx @@ -431,6 +431,29 @@ export const fetchFacilityListInit = async (pageNo:number, pageSize:number, part } }; +// 시설정보 리스트 데이터 호출(구분 선택 후 시설명 있을 경우) 처리구역용. pageNo, pageSize, ctpvNm, sggNm, targetYear, +export const fetchFacilityListArea = async (pageNo:number, pageSize:number, ctpvNm?:string, sggNm?:string, targetYear?:string ): Promise<{data:any[], count:number}> => { + try { + console.log(pageNo, pageSize ,ctpvNm, sggNm, targetYear) + const tailStr = "/A"+ (ctpvNm?"/"+ctpvNm:"/0") + (sggNm?"/"+sggNm:"/0") + "/0/0" ; + console.log(tailStr); + const url = '/prcsFclt/info/'+pageNo+'/'+pageSize+tailStr; + const res = await getFetch('fo', url); + res.data.forEach((item: Record) => { + item.daddr = item.addr ? item.addr : ''; + item.sidoNm = item.sido ? item.sido : ''; + item.sigungo = item.gugun ? item.gugun : ''; + item.swtrmtFcltNm = item.bscFctNm ? item.bscFctNm : ''; + item.location = item.daddr ? item.daddr : ''; + item.trtDstr = item.trtDstr ? item.trtDstr : ''; + }); + + return res; + } catch (error) { + console.error('시설정보 데이터를 가져오는데 실패했습니다:', error); + return {data: [], count: 0}; + } +}; const fetchFacilityList = async (pageNo:number, pageSize:number, partValue?:string, nameCd?:string, fcltCpct?:string, oprtngSttsCd?:string, facilityPartValue?:string, facilityName?:string ): Promise<{data:facilityListProps[], count:number}> => { try { From 2a917e4e2d34aabce32c93d27a84365a2fe7c965 Mon Sep 17 00:00:00 2001 From: leedj312 Date: Thu, 30 Oct 2025 11:34:43 +0900 Subject: [PATCH 09/23] =?UTF-8?q?=EB=AC=BC=EC=9E=AC=EC=9D=B4=EC=9A=A9=20:?= =?UTF-8?q?=20=EC=8B=A4=EC=A0=81=20=EB=93=B1=EB=A1=9D=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=BD=94=EB=93=9C=EC=97=86=EC=9D=84=EC=8B=9C=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=EC=95=88=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruseFcltMng/prfmncReg/pbnstPrfmncReg/page.tsx | 3 ++- apps/wr/app/store/prfmncReg/pbnstPrfmncReg/index.tsx | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/pbnstPrfmncReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/pbnstPrfmncReg/page.tsx index bedb71815..75a2e6860 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/pbnstPrfmncReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/pbnstPrfmncReg/page.tsx @@ -209,8 +209,9 @@ export default function PrfmncPrfmncReg() { useEffect(() => { const year = new Date().getFullYear(); + if(laeSeCd === undefined || laeSeCd ==='') return; prfmncHasuInit(1, laeSeCd, String(year), prfPbnFclts); - }, [prfPbnFclts]); + }, [prfPbnFclts,laeSeCd]); useEffect(() => { if (prfmncRes && prfmncRes.length > 0) { diff --git a/apps/wr/app/store/prfmncReg/pbnstPrfmncReg/index.tsx b/apps/wr/app/store/prfmncReg/pbnstPrfmncReg/index.tsx index 6c2564655..3bcca799e 100644 --- a/apps/wr/app/store/prfmncReg/pbnstPrfmncReg/index.tsx +++ b/apps/wr/app/store/prfmncReg/pbnstPrfmncReg/index.tsx @@ -75,7 +75,6 @@ const hasuListFetch = async ( : fclt.slice(0, 5) === sggOrCity; }); } - let url = `/prcsFclt/ruseInfo/1/${filteredFclt.length + 1}/A/${sggOrCity}/0/1/SW`; if (searchTxt && searchTxt?.length > 0) { url += `/${searchTxt}`; @@ -121,7 +120,6 @@ export const pbnstPrfmncActionsExport: (set: any) => pbnstPrfmncActions = ( getPrfFmcRes: async () => { try { const pbnPrfRes = await getFetch(fetchType.WR, "/reuseFc/pubFc"); - console.log("pbnPrfRes ", pbnPrfRes); set((state: pbnstPrfmncState) => ({ ...state, prfmnc: { @@ -140,7 +138,6 @@ export const pbnstPrfmncActionsExport: (set: any) => pbnstPrfmncActions = ( prfPbnFclts: string[] ) => { try { - console.log("prfPbnFclts ", prfPbnFclts); const prfmncRes = await hasuListFetch( page, sggOrCity, From 3c6d10a5e3a0345e5b6d2b961723db1ae8a0236b Mon Sep 17 00:00:00 2001 From: jsyang Date: Thu, 30 Oct 2025 16:19:21 +0900 Subject: [PATCH 10/23] =?UTF-8?q?=EC=A4=91=EC=88=98=EB=8F=84=ED=86=B5?= =?UTF-8?q?=EA=B3=84,=20=EB=B9=97=EB=AC=BC=EC=8B=9C=EC=84=A4=20=ED=86=B5?= =?UTF-8?q?=EA=B3=84=20=EA=B1=B4=EC=88=98=20=EC=B6=94=EC=B6=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95(=EC=B6=94=ED=9B=84=EC=97=90=20=EA=B3=B5=ED=86=B5?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B0=94=EB=A1=9C=20=EB=B0=94=EB=9D=BC?= =?UTF-8?q?=EB=B3=BC=EC=88=98=EC=9E=88=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=ED=95=84=EC=9A=94=ED=95=A0=EB=93=AF=3F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wr/app/store/common/type/header.tsx | 1 + apps/wr/app/store/stats/rainStat/headList.tsx | 7 +++++++ apps/wr/app/store/stats/rainStat/index.tsx | 12 ++++++++---- apps/wr/app/store/stats/rswtStat/headList.tsx | 6 ++++++ apps/wr/app/store/stats/rswtStat/index.tsx | 3 +-- 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/apps/wr/app/store/common/type/header.tsx b/apps/wr/app/store/common/type/header.tsx index 29780ba03..75bf29433 100644 --- a/apps/wr/app/store/common/type/header.tsx +++ b/apps/wr/app/store/common/type/header.tsx @@ -24,5 +24,6 @@ export type TableUpperProps = { mergeCell?:boolean // 셀을 합칠경우 maxLength?:number readonly?:boolean + commonCode?:string // 공통코드 사용할경우 }; diff --git a/apps/wr/app/store/stats/rainStat/headList.tsx b/apps/wr/app/store/stats/rainStat/headList.tsx index 664e060c4..7601919d5 100644 --- a/apps/wr/app/store/stats/rainStat/headList.tsx +++ b/apps/wr/app/store/stats/rainStat/headList.tsx @@ -40,36 +40,43 @@ export const rainStatHeadListExport: TableUpperProps[] = [ { id: "lndwtr", title: "조경용수", + commonCode : "01", row:1, }, { id: "cleanToilUswtr", title: "청소화장실용수", + commonCode : "02", row:1, }, { id:"resn", title:"세척살수용수", + commonCode : "03", row:1, }, { id: "farmUswtr", title: "농업용수", + commonCode : "04", row:1, }, { id: "indstUswtr", title: "공업용수", + commonCode : "05", row:1, }, { id: "hydUswtr", title: "친수용수", + commonCode : "06", row:1, }, { id: "ithlEtcUswtr", title: "기타", + commonCode : "07", row:1, }, { diff --git a/apps/wr/app/store/stats/rainStat/index.tsx b/apps/wr/app/store/stats/rainStat/index.tsx index 80787ae43..90687a905 100644 --- a/apps/wr/app/store/stats/rainStat/index.tsx +++ b/apps/wr/app/store/stats/rainStat/index.tsx @@ -89,8 +89,6 @@ export const rainStatActionsExport = ( searchRainStatList: async (year: string, city: SelectDataType[]) => { const res = await fetchRainStatList(year); const cityArr: any[] = []; - - console.log('res ', res) res.filter((resFilter: RainStatProps) => city.some((cityCd) => @@ -116,14 +114,20 @@ export const rainStatActionsExport = ( obj.dtfcltCpct = item.dtfcltCpct; obj.wtrUsqty = item.wtrUsqty; obj.anlOperCst = item.anlOperCst; - + obj.lndwtr = 0; //조경용수 + obj.cleanToilUswtr = 0; //청소화장실용수 + obj.resn = 0; //세척살수용수 + obj.farmUswtr = 0; //농업용수 + obj.indstUswtr = 0; //공업용수 + obj.hydUswtr = 0; //친수용수 + obj.ithlEtcUswtr = 0; //기타 cityArr.push(obj); } if (item.guideStats && item.guideStats.length > 0) { item.guideStats.forEach((guide: GuideStatProps) => { rainStatHeadListExport.forEach((headItem: TableUpperProps) => { - if (headItem.title == guide.utztnUsgCd) { + if (headItem.commonCode == guide.utztnUsgCd) { if (!obj[headItem.id] || typeof obj[headItem.id] !== "number") obj[headItem.id] = 0; if (typeof obj[headItem.id] === "number") { diff --git a/apps/wr/app/store/stats/rswtStat/headList.tsx b/apps/wr/app/store/stats/rswtStat/headList.tsx index c0860fea7..47aeca57b 100644 --- a/apps/wr/app/store/stats/rswtStat/headList.tsx +++ b/apps/wr/app/store/stats/rswtStat/headList.tsx @@ -64,31 +64,37 @@ export const rswtStatHeadListExport :TableUpperProps[]=[ { id: "lndwtr", title: "조경용수", + commonCode: "01", row:1, }, { id: "cleanToilUswtr", title: "청소화장실용수", + commonCode : "02", row:1, }, { id: "farmUswtr", title: "농업용수", + commonCode : "04", row:1, }, { id: "indstUswtr", title: "공업용수", + commonCode : "05", row:1, }, { id: "hydUswtr", title: "친수용수", + commonCode : "06", row:1, }, { id: "ithlEtcUswtr", title: "기타", + commonCode : "07", row:1, }, { diff --git a/apps/wr/app/store/stats/rswtStat/index.tsx b/apps/wr/app/store/stats/rswtStat/index.tsx index bd9a9c8e0..fa183f1a2 100644 --- a/apps/wr/app/store/stats/rswtStat/index.tsx +++ b/apps/wr/app/store/stats/rswtStat/index.tsx @@ -118,10 +118,9 @@ export const rswtStatActionsExport: (set: any) => rswtStatActions = ( item.guideStats.forEach((guide: GuideStatProps) => { rswtStatHeadListExport.forEach((headItem: TableUpperProps) => { - if (headItem.title == guide.utztnUsgCd) { + if (headItem.commonCode == guide.utztnUsgCd) { if (!obj[headItem.id] || typeof obj[headItem.id] !== "number") obj[headItem.id] = 0; if (typeof obj[headItem.id] === "number") { - obj[headItem.id] += guide.ruseFcltUtztnQnt; } } From d3771d226be4ad158b3ecf5d1d062824eb614ce5 Mon Sep 17 00:00:00 2001 From: jsyang Date: Thu, 30 Oct 2025 18:40:38 +0900 Subject: [PATCH 11/23] =?UTF-8?q?=EC=9B=90=EB=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/(with-layout)/processArea/page.tsx | 2 +- apps/fo/app/store/processArea/index.tsx | 63 ++++--------------- apps/fo/app/store/processFacility/index.tsx | 24 ------- 3 files changed, 13 insertions(+), 76 deletions(-) diff --git a/apps/fo/app/pages/(with-layout)/processArea/page.tsx b/apps/fo/app/pages/(with-layout)/processArea/page.tsx index b9519a4e6..ed93a777a 100644 --- a/apps/fo/app/pages/(with-layout)/processArea/page.tsx +++ b/apps/fo/app/pages/(with-layout)/processArea/page.tsx @@ -72,7 +72,7 @@ export default function ProcessArea() { envPartValue: '', }); - const searchProcessArea = useCallback(({ sidoValue, sigunValue, sidoText, sggText}: ReturnType, pageNo: number, pageCnt:number=20) => { + const searchProcessArea = useCallback(({ sidoValue, sigunValue}: ReturnType, pageNo: number, pageCnt:number=20) => { searchProcessAreaList(pageNo, pageCnt, sidoValue, sigunValue, searchYearValue); }, [searchProcessAreaList, searchYearValue]); diff --git a/apps/fo/app/store/processArea/index.tsx b/apps/fo/app/store/processArea/index.tsx index 54b8258f7..f108e263e 100644 --- a/apps/fo/app/store/processArea/index.tsx +++ b/apps/fo/app/store/processArea/index.tsx @@ -262,7 +262,16 @@ const fetchProcessAreaList = async (pageNo : number, pageSize : number, ctpvNm : head.title = '기승인\n4단계'; } }); - return item; + const res = await fetchFacilityDetailInfo(item.swtrmtFcltCd); + const detailInfo = res.data.filter((item:ProcessAreaProps) => item.ruse === true); + return { + ...item, + sido: detailInfo.length > 0 ? detailInfo[0].sido||'' : '', + sigungo: detailInfo.length > 0 ? detailInfo[0].gugun||'' : '', + location: detailInfo.length > 0 ? detailInfo[0].addr||'' : '', + fctCpc: detailInfo.length > 0 ? detailInfo[0].fctCpc||'' : 0, + trtDstr: detailInfo.length > 0 ? detailInfo[0].trtDstr||'' : '', + }; }) ); const startIndex = (pageNo - 1) * pageSize; @@ -357,7 +366,7 @@ export const processAreaReducer:(set:SetStateFunction)=>ProcessAreaActions=(set: * @param pageNo : 페이지 번호 * @param pageSize : 페이지 크기 */ - searchProcessAreaList: async ( pageNo:number, pageSize:number, sidoValue?:string, sggValue?:string, ctpvNm?:string, sggNm?:string, targetYear?:string) => { + searchProcessAreaList: async ( pageNo:number, pageSize:number, ctpvNm?:string, sggNm?:string, targetYear?:string) => { set((state: ProcessAreaType) => ({ ...state, ProcessArea: { @@ -365,55 +374,7 @@ export const processAreaReducer:(set:SetStateFunction)=>ProcessAreaActions=(set: isLoading: true, }, })); - //const res = await fetchProcessAreaList(pageNo, pageSize, ctpvNm, sggNm, targetYear, set); - const res = await fetchFacilityListArea(pageNo, pageSize, sidoValue, sggValue, targetYear); - set((state: ProcessAreaType) => ({ - ...state, - ProcessArea: { - ...state.ProcessArea, - processAreaList: res.data, - processAreaCount: res.count, - isInit: true, - }, - })); - - const fcltyList = res.data; - - for(let i=0; i 0){ - // 증설계획 - fcltyList[i].planSwageQntSumDt4 = fcltyRes[0].planSwageQntSumDt4; - fcltyList[i].planSwageQntSum = fcltyRes[0].planSwageQntSum; - fcltyList[i].planSwageQntSumDc1 = fcltyRes[0].planSwageQntSumDc1; - fcltyList[i].planSwageQntSumDc2 = fcltyRes[0].planSwageQntSumDc2; - fcltyList[i].planSwageQntSumDc3 = fcltyRes[0].planSwageQntSumDc3; - fcltyList[i].planSwageQntSumDc4 = fcltyRes[0].planSwageQntSumDc4; - // 처리인구 - fcltyList[i].swtrmtPpltnCntDt4 = fcltyRes[0].swtrmtPpltnCntDt4; - fcltyList[i].swtrmtPpltnCnt = fcltyRes[0].swtrmtPpltnCnt; - fcltyList[i].swtrmtPpltnCntDc1 = fcltyRes[0].swtrmtPpltnCntDc1; - fcltyList[i].swtrmtPpltnCntDc2 = fcltyRes[0].swtrmtPpltnCntDc2; - fcltyList[i].swtrmtPpltnCntDc3 = fcltyRes[0].swtrmtPpltnCntDc3; - fcltyList[i].swtrmtPpltnCntDc4 = fcltyRes[0].swtrmtPpltnCntDc4; - // 처리구역면적 - fcltyList[i].swtrmtZoneAreaDt4 = fcltyRes[0].swtrmtZoneAreaDt4; - fcltyList[i].swtrmtZoneArea = fcltyRes[0].swtrmtZoneArea; - fcltyList[i].swtrmtZoneAreaDc1 = fcltyRes[0].swtrmtZoneAreaDc1; - fcltyList[i].swtrmtZoneAreaDc2 = fcltyRes[0].swtrmtZoneAreaDc2; - fcltyList[i].swtrmtZoneAreaDc3 = fcltyRes[0].swtrmtZoneAreaDc3; - fcltyList[i].swtrmtZoneAreaDc4 = fcltyRes[0].swtrmtZoneAreaDc4; - // 계획연도 - fcltyList[i].planYrDt4 = fcltyRes[0].planYrDt4; - fcltyList[i].planYr = fcltyRes[0].planYr; - fcltyList[i].planYrDc1 = fcltyRes[0].planYrDc1; - fcltyList[i].planYrDc2 = fcltyRes[0].planYrDc2; - fcltyList[i].planYrDc3 = fcltyRes[0].planYrDc3; - fcltyList[i].planYrDc4 = fcltyRes[0].planYrDc4; - } - } - + const res = await fetchProcessAreaList(pageNo, pageSize, ctpvNm, sggNm, targetYear, set); res.data.forEach((item:ProcessAreaProps) => { DataForm({ type: 'float1', column: 'fctCpc', item:item as unknown as Record}); }) diff --git a/apps/fo/app/store/processFacility/index.tsx b/apps/fo/app/store/processFacility/index.tsx index 216fad59a..f4184865d 100644 --- a/apps/fo/app/store/processFacility/index.tsx +++ b/apps/fo/app/store/processFacility/index.tsx @@ -431,30 +431,6 @@ export const fetchFacilityListInit = async (pageNo:number, pageSize:number, part } }; -// 시설정보 리스트 데이터 호출(구분 선택 후 시설명 있을 경우) 처리구역용. pageNo, pageSize, ctpvNm, sggNm, targetYear, -export const fetchFacilityListArea = async (pageNo:number, pageSize:number, ctpvNm?:string, sggNm?:string, targetYear?:string ): Promise<{data:any[], count:number}> => { - try { - console.log(pageNo, pageSize ,ctpvNm, sggNm, targetYear) - const tailStr = "/A"+ (ctpvNm?"/"+ctpvNm:"/0") + (sggNm?"/"+sggNm:"/0") + "/0/0" ; - console.log(tailStr); - const url = '/prcsFclt/info/'+pageNo+'/'+pageSize+tailStr; - const res = await getFetch('fo', url); - res.data.forEach((item: Record) => { - item.daddr = item.addr ? item.addr : ''; - item.sidoNm = item.sido ? item.sido : ''; - item.sigungo = item.gugun ? item.gugun : ''; - item.swtrmtFcltNm = item.bscFctNm ? item.bscFctNm : ''; - item.location = item.daddr ? item.daddr : ''; - item.trtDstr = item.trtDstr ? item.trtDstr : ''; - }); - - return res; - } catch (error) { - console.error('시설정보 데이터를 가져오는데 실패했습니다:', error); - return {data: [], count: 0}; - } -}; - const fetchFacilityList = async (pageNo:number, pageSize:number, partValue?:string, nameCd?:string, fcltCpct?:string, oprtngSttsCd?:string, facilityPartValue?:string, facilityName?:string ): Promise<{data:facilityListProps[], count:number}> => { try { const tailStr = partValue ? '/'+ (partValue==='G' ? 'A' : partValue) + '/' + nameCd + '/' + fcltCpct + '/' + oprtngSttsCd + '/' + facilityPartValue + (facilityName && facilityName !== '' ? '/' + facilityName : '') : ''; From 09289b162269e38471ac3e4c42db93094a1a4474 Mon Sep 17 00:00:00 2001 From: jsyang Date: Thu, 30 Oct 2025 19:05:08 +0900 Subject: [PATCH 12/23] =?UTF-8?q?=EC=B2=98=EB=A6=AC=EA=B5=AC=EC=97=AD?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=9B=90=EB=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/fo/app/pages/(with-layout)/processArea/page.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/fo/app/pages/(with-layout)/processArea/page.tsx b/apps/fo/app/pages/(with-layout)/processArea/page.tsx index ed93a777a..94be9bd0b 100644 --- a/apps/fo/app/pages/(with-layout)/processArea/page.tsx +++ b/apps/fo/app/pages/(with-layout)/processArea/page.tsx @@ -70,10 +70,12 @@ export default function ProcessArea() { unitWaterShedValue: '', middleRegionValue: '', envPartValue: '', + sidoText: '', + sigunText: '', }); - const searchProcessArea = useCallback(({ sidoValue, sigunValue}: ReturnType, pageNo: number, pageCnt:number=20) => { - searchProcessAreaList(pageNo, pageCnt, sidoValue, sigunValue, searchYearValue); + const searchProcessArea = useCallback(({ sidoText, sigunText}: ReturnType, pageNo: number, pageCnt:number=20) => { + searchProcessAreaList(pageNo, pageCnt, sidoText, sigunText, searchYearValue); }, [searchProcessAreaList, searchYearValue]); // 조회 From c1cc7e846ff18f75b86231cc4e0fde01ddd90291 Mon Sep 17 00:00:00 2001 From: ljpark Date: Fri, 31 Oct 2025 15:01:20 +0900 Subject: [PATCH 13/23] =?UTF-8?q?wr=20=ED=95=98=EC=88=98=EC=9E=AC=EC=9D=B4?= =?UTF-8?q?=EC=9A=A9=EC=8B=A4=EC=A0=81=EB=93=B1=EB=A1=9D=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20api=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wr/app/store/prfmncReg/pbnstPrfmncReg/index.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/apps/wr/app/store/prfmncReg/pbnstPrfmncReg/index.tsx b/apps/wr/app/store/prfmncReg/pbnstPrfmncReg/index.tsx index 3bcca799e..13429fbc7 100644 --- a/apps/wr/app/store/prfmncReg/pbnstPrfmncReg/index.tsx +++ b/apps/wr/app/store/prfmncReg/pbnstPrfmncReg/index.tsx @@ -1,3 +1,13 @@ +/** + * 재이용실적등록 > 하수재이용실적등록 + * + * 🔗 사용 API + * - 하수재이용시설 실적 조회: POST /api/v1/reuseFc/pubDetailList/{year}/{sggOrCity}/{page}/{pageSize} (reuse-service) + * - 하수재이용시설 실적 등록: POST /api/v1/reuseFc/pubFcPrf (reuse-service) + * - 공공재이용시설 목록 조회: POST /api/v1/prcsFclt/ruseInfo/{page}/{pageSize}/{type}/{sggOrCity}/{etc1}/{etc2}/{etc3} (server-service) + * - 공공재이용시설 목록 조회(이름검색): POST /api/v1/prcsFclt/ruseInfo/{page}/{pageSize}/{type}/{sggOrCity}/{searchTxt} (server-service) + * - 공공재이용시설 조회: GET /api/v1/reuseFc/pubFc (reuse-service) + **/ import { fetchType, getFetch, postFectch } from "@/components/lib/api"; import { pbnstPrfmncHeadListExport, monthHeadListExport } from "./headList"; import type { pubHasuType } from "../../ruseFcltMng/fcltReg/pbnstReg/type"; @@ -75,7 +85,8 @@ const hasuListFetch = async ( : fclt.slice(0, 5) === sggOrCity; }); } - let url = `/prcsFclt/ruseInfo/1/${filteredFclt.length + 1}/A/${sggOrCity}/0/1/SW`; + //let url = `/prcsFclt/ruseInfo/1/${filteredFclt.length + 1}/A/${sggOrCity}/0/1/SW`; + let url = `/prcsFclt/ruseInfo/1/${filteredFclt.length + 1}`; if (searchTxt && searchTxt?.length > 0) { url += `/${searchTxt}`; } From fd096f9d846f27999ba92ac7bef92946d020ca13 Mon Sep 17 00:00:00 2001 From: jsyang Date: Sat, 1 Nov 2025 01:41:32 +0900 Subject: [PATCH 14/23] =?UTF-8?q?1.=EC=9C=A0=EB=9F=89=ED=98=84=ED=99=A9,?= =?UTF-8?q?=20=EC=88=98=EC=A7=88=ED=98=84=ED=99=A9,=20rdii,=20=EA=B3=84?= =?UTF-8?q?=ED=9A=8D=ED=95=98=EC=88=98=EB=9F=89=20=EC=84=9C=EC=9A=B8?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=EC=A1=B0=EA=B1=B4=20=EC=B6=94=EA=B0=80=202.?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=EA=B5=AC=EC=97=AD=EC=A0=95=EB=B3=B4=20api?= =?UTF-8?q?=EC=8B=A0=EA=B7=9C=EC=B6=94=EA=B0=80=20(=ED=95=9C=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=8B=9C=EC=84=A4=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=EB=A1=9C=20api=20=ED=98=B8=EC=B6=9C?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../(with-layout)/facilityWaterQlty/page.tsx | 42 +++++++-------- .../app/pages/(with-layout)/flowRate/page.tsx | 42 +++++++++------ .../pages/(with-layout)/planSewage/page.tsx | 49 +++++++++++------- apps/fo/app/pages/(with-layout)/rdi/page.tsx | 34 +++++++------ apps/fo/app/store/flowRate/index.tsx | 1 - apps/fo/app/store/planSewage/index.tsx | 1 - apps/fo/app/store/processArea/index.tsx | 51 ++++++++++++------- .../src/ui/search_base_form/index.tsx | 18 +++++-- .../src/ui/search_form_left/index.tsx | 22 +++++--- 9 files changed, 160 insertions(+), 100 deletions(-) diff --git a/apps/fo/app/pages/(with-layout)/facilityWaterQlty/page.tsx b/apps/fo/app/pages/(with-layout)/facilityWaterQlty/page.tsx index a107dfd2a..cb4861971 100644 --- a/apps/fo/app/pages/(with-layout)/facilityWaterQlty/page.tsx +++ b/apps/fo/app/pages/(with-layout)/facilityWaterQlty/page.tsx @@ -48,7 +48,8 @@ export default function ProcessFacilitySearch() { } = FacilityWaterQltyMain; const mainList: FacilityWaterQltyProps[] = facilityWaterQltyList || []; - + const [initTrigger, setInitTrigger] = useState(false); + const [excelTrigger, setExcelTrigger] = useState(false); // 그리드 관련 const [resetPage, setResetPage] = useState(false); const searchInputRef = useRef(null); @@ -77,16 +78,15 @@ export default function ProcessFacilitySearch() { partStr = partValue break; default: - if(sidoValue !== '0') nameCd = sidoValue; + if(sidoValue !== '0') nameCd = ref.current.sidoValue!="0"?ref.current.sidoValue:sidoValue; if(sigunValue !== '0') nameCd = sigunValue; partStr = envPartValue !== '0' ? envPartValue:partValue; break; } - - if (partStr.length > 1 || fcltCpct !== '0' || operationValue!== '0' ||nameCd ||(fcltyName.trim() !== "" && fcltyName.trim() !== null)) { - searchFacilityWaterQltyList(pageNo, pageCnt, searchYearValue, partStr, nameCd || '0', fcltCpct, operationValue, fcltyName.trim() !== "" || fcltyName.trim() !== null ? fcltyName : undefined); - } else { + if(partStr ==='G'){ searchFacilityWaterQltyList(pageNo, pageCnt, searchYearValue); + }else{ + searchFacilityWaterQltyList(pageNo, pageCnt, searchYearValue, partStr, nameCd || '0', fcltCpct, operationValue, fcltyName.trim() !== "" || fcltyName.trim() !== null ? fcltyName : undefined); } }, [operationValue, fcltyName, searchFacilityWaterQltyList, searchYearValue, fcltCpct]); @@ -105,7 +105,8 @@ export default function ProcessFacilitySearch() { input.value = ""; } } - searchFacilityWaterQltyList(1, 10, selectSearchYear[0]?.val || "0"); + ref.current.sidoValue = "11"; + searchFcltyQltyList(ref.current, 1, 10); } // 셀 클릭 시 모달 표시 @@ -125,7 +126,7 @@ export default function ProcessFacilitySearch() { } const ref = useRef({ partValue: '', - sidoValue: '', + sidoValue: '11', sigunValue: '', regionValue: '', unitWaterShedValue: '', @@ -137,12 +138,17 @@ export default function ProcessFacilitySearch() { useEffect(() => { if (!isInit) { - initializeCommonData(); - searchFacilityWaterQltyList(1, 10, selectSearchYear[0]?.val || "0"); + if(!initTrigger){ + initializeCommonData(); + searchFcltyQltyList(ref.current, 1, 10); + setInitTrigger(true); + } } - }, [isInit, initializeCommonData, searchFacilityWaterQltyList, selectSearchYear]); + }, [isInit, initializeCommonData, searchFacilityWaterQltyList, searchFcltyQltyList, initTrigger]); useEffect(() => { + if(!excelTrigger) return; + if (excelList && excelList.length > 0) { downloadExcelFormat( { @@ -154,15 +160,8 @@ export default function ProcessFacilitySearch() { decimalArray3:[13,14,18,19] } ); - - /* downloadExcel({ - data: excelList as unknown as JSON[], - fileName: '시설별 수질현황', - sheetNameArray: ['시설별 수질현황'], - headerRange: 'A1:T1' - }); */ } - }, [excelList]); + }, [excelList, excelTrigger]); const chkVal = useCallback((returntype:ReturnType) => { setWidthSize(returntype.partValue=='A' ?"w-[120%]":"w-[130%]") @@ -171,6 +170,7 @@ export default function ProcessFacilitySearch() { }, [upHeadList1, upHeadList2, upHeadList3]); const excelDownload = useCallback(() => { + setExcelTrigger(true); searchFcltyQltyList(ref.current, 1, 10000); }, [searchFcltyQltyList]); @@ -202,12 +202,12 @@ export default function ProcessFacilitySearch() { queryClick={chkVal} excelClick={excelDownload} initClick={resetVal} - ref={ref} isAdmin={false} /> + ref={ref} isAdmin={false} initSidoValue={"11"}/>
- index !== undefined && cellClick(index)} headName={"시설별 수질현황"} tableData={mainList} headlist={upheadList} pageSize={10} total={total<10?facilityWaterQltyList.length:total} resetPageNo={resetPage} onPageChange={handlePageChange} widthFixed={true} /> + index !== undefined && cellClick(index)} headName={"시설별 수질현황"} tableData={mainList} headlist={upheadList} pageSize={10} total={total} resetPageNo={resetPage} onPageChange={handlePageChange} widthFixed={true} />
diff --git a/apps/fo/app/pages/(with-layout)/flowRate/page.tsx b/apps/fo/app/pages/(with-layout)/flowRate/page.tsx index 5b53f51a2..a7e0933eb 100644 --- a/apps/fo/app/pages/(with-layout)/flowRate/page.tsx +++ b/apps/fo/app/pages/(with-layout)/flowRate/page.tsx @@ -67,9 +67,12 @@ export default function ProcessFacilitySearch() { const [selectedRow, setSelectedRow] = useState(null); const [fcltyNm, setFcltyNm] = useState(""); const [fcltyCd, setFcltyCd] = useState(""); - + const [excelTrigger, setExcelTrigger] = useState(false); + const [initTrigger, setInitTrigger] = useState(false); + const searchFlowRate = useCallback(({ partValue, regionValue, unitWaterShedValue, middleRegionValue, envPartValue, sidoValue, sigunValue }: ReturnType, pageNo: number, pageCnt:number=20) => { - let nameCd, partStr + let nameCd, partStr; + switch (partValue) { case 'R': if (regionValue !== '0') { @@ -77,20 +80,20 @@ export default function ProcessFacilitySearch() { else if (middleRegionValue==='0') nameCd = unitWaterShedValue; else nameCd = middleRegionValue; } - partStr = partValue + partStr = partValue; break; default: - if(sidoValue !== '0') nameCd = sidoValue; + if(sidoValue !== '0') nameCd = ref.current.sidoValue!="0"?ref.current.sidoValue:sidoValue; if(sigunValue !== '0') nameCd = sigunValue; partStr = envPartValue !== '0' ? envPartValue:partValue; break; } - if (partStr.length > 1 || fcltCpct !== '0' || operationValue!== '0' ||nameCd ||(fcltyName.trim() !== "" && fcltyName.trim() !== null)) { - searchFlowRateList(pageNo, pageCnt, searchYearValue, partStr, nameCd || '0', fcltCpct, operationValue, fcltyName.trim() !== "" || fcltyName.trim() !== null ? fcltyName : undefined); - } else { + if(partStr==='G'){ searchFlowRateList(pageNo, pageCnt, searchYearValue); + }else{ + searchFlowRateList(pageNo, pageCnt, searchYearValue, partStr, nameCd || '0', fcltCpct, operationValue, fcltyName.trim() !== "" || fcltyName.trim() !== null ? fcltyName : undefined); } - }, [operationValue, fcltyName, searchFlowRateList, searchYearValue, fcltCpct]); + }, [searchFlowRateList, searchYearValue, fcltCpct, operationValue, fcltyName]); const resetVal = () => { setWidthSize("w-[120%]"); @@ -107,7 +110,8 @@ export default function ProcessFacilitySearch() { input.value = ""; } } - searchFlowRateList(1, 10, selectSearchYear[0]?.val || "0"); + ref.current.sidoValue = '11'; + searchFlowRate(ref.current,1, 10); } // 셀 클릭 시 모달 표시 @@ -133,23 +137,29 @@ export default function ProcessFacilitySearch() { // 시도 데이터 초기화 useEffect(() => { if(!isInit) { - initializeCommonData(); - searchFlowRateList(1, 10, selectSearchYear[0]?.val || "0"); + if(!initTrigger){ + initializeCommonData(); + searchFlowRate(ref.current, 1, 10); + setInitTrigger(true); + } + //searchFlowRateList(1, 10, selectSearchYear[0]?.val || "0"); } - }, [isInit, initializeCommonData, searchFlowRateList, selectSearchYear]); + }, [isInit, initializeCommonData, searchFlowRateList, selectSearchYear, searchFlowRate, initTrigger]); useEffect(() => { + if(!excelTrigger) return; + if (excelList && excelList.length > 0) { downloadExcelFormat({ data: JSON.parse(JSON.stringify(excelList)), fileName: '시설별 유량현황', sheetNameArray: ['시설별 유량현황'], headerRange: 'A1:O1', decimalArray0: [9,10,11,12,13,14] }); } else if (prevExcelListRef.current && prevExcelListRef.current.length > 0) { alert('다운받을 데이터가 없습니다.'); } prevExcelListRef.current = excelList; - }, [excelList]); + }, [excelList, excelTrigger]); const ref = useRef({ partValue: '', - sidoValue: '', + sidoValue: '11', sigunValue: '', regionValue: '', unitWaterShedValue: '', @@ -167,10 +177,10 @@ export default function ProcessFacilitySearch() { const excelDownload = useCallback(() => { searchFlowRate(ref.current, 1, 10000); + setExcelTrigger(true); }, [searchFlowRate]); const total = flowRateCount; - return ( @@ -193,7 +203,7 @@ export default function ProcessFacilitySearch() { queryClick={chkVal} excelClick={excelDownload} initClick={resetVal} - ref={ref} isAdmin={false}/> + ref={ref} isAdmin={false} initSidoValue={'11'}/> <ListDiv> <LoadingOverlay isLoading={isLoading} /> <div className="h-full w-full overflow-x-scroll"> diff --git a/apps/fo/app/pages/(with-layout)/planSewage/page.tsx b/apps/fo/app/pages/(with-layout)/planSewage/page.tsx index 1f1768af5..fa993715e 100644 --- a/apps/fo/app/pages/(with-layout)/planSewage/page.tsx +++ b/apps/fo/app/pages/(with-layout)/planSewage/page.tsx @@ -57,7 +57,7 @@ export default function PlanSewage() { const ref = useRef<ReturnType>({ partValue: '', - sidoValue: '', + sidoValue: '11', sigunValue: '', regionValue: '', unitWaterShedValue: '', @@ -86,7 +86,10 @@ export default function PlanSewage() { const [operationValue, setOperationValue] = useState<string>("0"); // 조회기간 const [searchYear, setSearchYear] = useState<string>(selectSearchYear[0]?.val || "0"); - + + const [initTrigger, setInitTrigger] = useState<boolean>(false); + + const [excelTrigger, setExcelTrigger] = useState<boolean>(false); /** * 페이지 함수 */ @@ -106,20 +109,13 @@ export default function PlanSewage() { input.value = ""; } } - searchPlanSewageList(1, 10, selectSearchYear[0]?.val || "0", ref.current.partValue); + ref.current.sidoValue='11'; + searchPlanSewage(ref.current, 1, 10); } - /** - * useEffect - */ useEffect(() => { - if (!isInit) { - initializeCommonData(); - searchPlanSewageList(1, 10, selectSearchYear[0]?.val || "0", ref.current.partValue); - } - }, [isInit, initializeCommonData, searchPlanSewageList, selectSearchYear]); + if(!excelTrigger) return; - useEffect(() => { if (excelList && excelList.length > 0) { downloadExcel({ data: excelList as unknown as JSON[], @@ -128,7 +124,7 @@ export default function PlanSewage() { headerRange: 'A1:M1' }); } - }, [excelList]); + }, [excelList, excelTrigger]); /** * 콜백함수 @@ -146,20 +142,34 @@ export default function PlanSewage() { partStr = partValue break; default: - if(sidoValue !== '0') nameCd = sidoValue; + if(sidoValue !== '0') nameCd = ref.current.sidoValue!="0"?ref.current.sidoValue:sidoValue; if(sigunValue !== '0') nameCd = sigunValue; partStr = envPartValue !== '0' ? envPartValue:partValue; break; } - if (partStr.length > 1 || fcltCpct !== '0' || operationValue!== '0' ||nameCd ||(fcltyName.trim() !== "" && fcltyName.trim() !== null)) { - searchPlanSewageList(pageNo, pageCnt, searchYear, partStr, nameCd || '0', fcltCpct, operationValue, fcltyName.trim() !== "" || fcltyName.trim() !== null ? fcltyName : undefined); - } else { - // G로 넘기면 데이터가 안떠서 환경청 전체로 넘기면 전체를 추출하기위해서... + + if(partStr === 'G'){ partValue = partValue==='G'?'A':partValue; searchPlanSewageList(pageNo, pageCnt, searchYear, partValue); } + else{ + searchPlanSewageList(pageNo, pageCnt, searchYear, partStr, nameCd || '0', fcltCpct, operationValue, fcltyName.trim() !== "" || fcltyName.trim() !== null ? fcltyName : undefined); + } }, [operationValue, fcltyName, searchPlanSewageList, searchYear, fcltCpct]); + /** + * useEffect + */ + useEffect(() => { + if (!isInit) { + if(!initTrigger){ + initializeCommonData(); + searchPlanSewage(ref.current, 1, 10); + setInitTrigger(true); + } + } + }, [isInit, initializeCommonData, searchPlanSewageList, selectSearchYear, initTrigger, searchPlanSewage]); + const chkVal = useCallback((returntype:ReturnType) => { setWidthSize(returntype.partValue=='A' ?"w-[120%]":"w-[130%]") setUpheadList(returntype.partValue == 'R' ? upHeadList2 : returntype.partValue == 'G'?upHeadList3:upHeadList1); @@ -169,6 +179,7 @@ export default function PlanSewage() { // 엑셀다운로드 const excelDownload = useCallback((searchReturn: ReturnType) => { searchPlanSewage(searchReturn, 1, 10000); + setExcelTrigger(true); }, [searchPlanSewage]); // 페이지 변경 @@ -201,7 +212,7 @@ export default function PlanSewage() { queryClick={chkVal} excelClick={excelDownload} initClick={resetVal} - ref={ref} isAdmin={false}/> + ref={ref} isAdmin={false} initSidoValue={"11"}/> <ListDiv> <LoadingOverlay isLoading={isLoading} /> <div className="h-full w-full overflow-x-scroll"> diff --git a/apps/fo/app/pages/(with-layout)/rdi/page.tsx b/apps/fo/app/pages/(with-layout)/rdi/page.tsx index 72373f60f..2657dc647 100644 --- a/apps/fo/app/pages/(with-layout)/rdi/page.tsx +++ b/apps/fo/app/pages/(with-layout)/rdi/page.tsx @@ -87,6 +87,7 @@ export default function Rdi() { // 엑셀 다운로드 트리거 const [isInitExcelDownload, setIsInitExcelDownload] = useState<boolean>(false); + const [initTrigger, setInitTrigger] = useState<boolean>(false); /** * 페이지 함수 */ @@ -107,19 +108,10 @@ export default function Rdi() { input.value = ""; } } - searchRdiList(1, 10, selectSearchYear[0]?.val || "0"); + ref.current.sidoValue = "11"; + searchRdi(ref.current, 1, 10); } - /** - * useEffect - */ - useEffect(() => { - if (!isInit) { - initializeCommonData(); - searchRdiList(1, 10, selectSearchYear[0]?.val || "0"); - } - }, [isInit, initializeCommonData, searchRdiList, selectSearchYear]); - useEffect(() => { if(!isInitExcelDownload) return ; if (excelList && excelList.length > 0) { @@ -153,13 +145,25 @@ export default function Rdi() { partStr = envPartValue !== '0' ? envPartValue:partValue; break; } - if (partStr.length > 1 || fcltCpct !== '0' || operationValue!== '0' ||nameCd ||(fcltyName.trim() !== "" && fcltyName.trim() !== null)) { - searchRdiList(pageNo, pageCnt, searchYear, partStr, nameCd || '0', fcltCpct, operationValue, fcltyName.trim() !== "" || fcltyName.trim() !== null ? fcltyName : undefined); - } else { + + if(partStr === 'G'){ searchRdiList(pageNo, pageCnt, searchYear); + }else{ + searchRdiList(pageNo, pageCnt, searchYear, partStr, nameCd || '0', fcltCpct, operationValue, fcltyName.trim() !== "" || fcltyName.trim() !== null ? fcltyName : undefined); + } }, [operationValue, fcltyName, searchRdiList, searchYear, fcltCpct]); + /** + * useEffect + */ + useEffect(() => { + if (!isInit) { + initializeCommonData(); + searchRdi(ref.current, 1, 10); + } + }, [isInit, initializeCommonData, searchRdiList, selectSearchYear, searchRdi]); + const chkVal = useCallback((returntype:ReturnType) => { setWidthSize(returntype.partValue=='A' ?"w-[130%]":"w-[150%]") setUpheadList(returntype.partValue == 'R' ? upHeadList2 : returntype.partValue == 'G'?upHeadList3:upHeadList1); @@ -203,7 +207,7 @@ export default function Rdi() { queryClick={chkVal} excelClick={excelDownload} initClick={resetVal} - ref={ref} isAdmin={false} /> + ref={ref} isAdmin={false} initSidoValue={"11"}/> <ListDiv> <LoadingOverlay isLoading={isLoading} /> <div className="h-full w-full overflow-x-scroll"> diff --git a/apps/fo/app/store/flowRate/index.tsx b/apps/fo/app/store/flowRate/index.tsx index ff406f7d4..66d639fb8 100644 --- a/apps/fo/app/store/flowRate/index.tsx +++ b/apps/fo/app/store/flowRate/index.tsx @@ -174,7 +174,6 @@ const fetchFlowRateList = async (pageNo: number, pageSize: number, searchYear: s try { const tailStr = partCd ? '/'+ partCd + '/' + nameCd + '/' + fcltCpct + '/' + operationValue + (fcltyNm && fcltyNm !== '' ? '/' + fcltyNm : '') : ''; const url = '/fclt/flow/' + pageNo + '/' + pageSize + '/' + searchYear + tailStr; - console.log(url); const res = await getFetch('fo', url); return { data: res.data, count: res.count } } catch (error) { diff --git a/apps/fo/app/store/planSewage/index.tsx b/apps/fo/app/store/planSewage/index.tsx index 80a4d66e7..44ab12440 100644 --- a/apps/fo/app/store/planSewage/index.tsx +++ b/apps/fo/app/store/planSewage/index.tsx @@ -96,7 +96,6 @@ const planSewageList:PlanSewageProps[] = [ const fetchPlanSewageList = async (pageNo: number, pageSize: number, searchYear: string, partCd?: string, nameCd?: string, fcltCpct?: string, operationValue?: string, fcltyNm?: string) => { const tailStr = partCd ? '/'+ partCd + '/' + (nameCd || '0') + '/' + (fcltCpct || '0') + '/' + (operationValue || '0') +'/0'+ (fcltyNm && fcltyNm !== '' ? '/' + fcltyNm : '') : ''; const url = '/prcsFclt/info/plan/' + pageNo + '/' + pageSize + '/' + searchYear + tailStr; - console.log(url); const res = await getFetch('fo', url); return { data: res.data, count: res.count } } diff --git a/apps/fo/app/store/processArea/index.tsx b/apps/fo/app/store/processArea/index.tsx index f108e263e..8a8b3075e 100644 --- a/apps/fo/app/store/processArea/index.tsx +++ b/apps/fo/app/store/processArea/index.tsx @@ -2,7 +2,6 @@ import { postFetch } from "@/app/components/api"; import DataForm from "@/app/components/common/DataForm"; import { fetchPlanInfo } from "../common"; import type { TableUpperProps } from "../dashboard"; -import { fetchFacilityListArea } from "../processFacility"; export type { TableUpperProps }; /**==================================== * Store - 타입 @@ -14,11 +13,12 @@ export type { TableUpperProps }; // 처리구역 리스트 export type ProcessAreaProps = { swtrmtFcltCd : string, - sido : string, - gugun : string, + ctpvNm?: string, + sggNm?: string, swtrmtFcltNm : string, location : string, fctCpc : number | '', + fcltCpctSum : number | '', ruse : boolean, planYrDt4 : string, planYr : string, @@ -130,8 +130,8 @@ const ProcessFacilityLabelArray:string[] = ['구분', '시도', '시군구','용 // 리스트 헤더(행정별) const upHeadList1:TableUpperProps[] = [ { id: "A", title: "행정구역", colSpan:2, rowSpan:2, row:0 }, - { id: "sido", title: "시도", upName:"upChangeRe", row:2, widthPercent:4 }, - { id: "sigungo", title: "시군구", upName:"upChangeRe", row:2, widthPercent:4 }, + { id: "ctpvNm", title: "시도", upName:"upChangeRe", row:2, widthPercent:4 }, + { id: "sggNm", title: "시군구", upName:"upChangeRe", row:2, widthPercent:4 }, { id: "swtrmtFcltNm", title: "시설명", rowSpan:3, row:0, widthPercent: 8 }, { id: "location", title: "주소", rowSpan:3, row:0 }, { id: "fctCpc", title: "시설용량(m³/일)", align:"right", rowSpan:3, row:0, widthPercent: 5 }, @@ -216,7 +216,7 @@ const gridListProcessAreaPlan:ProcessAreaPlanProps[] = [ * Store - API =====================================*/ // 시설 상세 정보 조회 API -const fetchFacilityDetailInfo = async (swtrmtFcltCd: string) => { +/* const fetchFacilityDetailInfo = async (swtrmtFcltCd: string) => { try { const tailUrl = '/1/5/A/0/0/0/SW'; const res = await postFetch('fo', '/prcsFclt/ruseInfo'+tailUrl, [swtrmtFcltCd]); @@ -225,10 +225,20 @@ const fetchFacilityDetailInfo = async (swtrmtFcltCd: string) => { console.error('시설정보 데이터를 가져오는데 실패했습니다:', error); return {data: [], count: 0}; } +}; */ + +const fetchFacilityDetailInfo = async (pageNo:number, pageSize:number, swtrmtFcltCd: string[]) : Promise<{data:any[], count:number}> => { + try { + const res = await postFetch('fo', '/prcsFclt/ruseInfo/'+pageNo+'/'+pageSize, swtrmtFcltCd); + return {data: res.data, count:res.count}; + } catch (error) { + console.error('시설정보 데이터를 가져오는데 실패했습니다:', error); + return {data:[], count:0}; + } }; // 시설정보 리스트 데이터 호출(구분 선택 후 시설명 있을 경우) -const fetchProcessAreaList = async (pageNo : number, pageSize : number, ctpvNm : string | undefined, sggNm : string | undefined, targetYear : string | undefined, set : (fn: (state: ProcessAreaType) => ProcessAreaType) => void): Promise<{data:ProcessAreaProps[], count:number}> => { +const fetchProcessAreaList = async (pageNo : number, pageSize : number, ctpvNm : string | undefined, sggNm : string | undefined, targetYear : string | undefined, set : (fn: (state: ProcessAreaType) => ProcessAreaType) => void): Promise<{data:any[], count:number}> => { try { const res = await fetchPlanInfo(targetYear, ctpvNm, sggNm, undefined); if(res && res.length > 0){ @@ -262,21 +272,27 @@ const fetchProcessAreaList = async (pageNo : number, pageSize : number, ctpvNm : head.title = '기승인\n4단계'; } }); - const res = await fetchFacilityDetailInfo(item.swtrmtFcltCd); - const detailInfo = res.data.filter((item:ProcessAreaProps) => item.ruse === true); - return { - ...item, - sido: detailInfo.length > 0 ? detailInfo[0].sido||'' : '', - sigungo: detailInfo.length > 0 ? detailInfo[0].gugun||'' : '', - location: detailInfo.length > 0 ? detailInfo[0].addr||'' : '', - fctCpc: detailInfo.length > 0 ? detailInfo[0].fctCpc||'' : 0, - trtDstr: detailInfo.length > 0 ? detailInfo[0].trtDstr||'' : '', - }; + return item; }) ); + const startIndex = (pageNo - 1) * pageSize; const endIndex = startIndex + pageSize; const paginatedData = enrichedData.slice(startIndex, endIndex); + + const fcltyCdList : string[]= []; + paginatedData.forEach(item => { + fcltyCdList.push(item.swtrmtFcltCd); + }) + + const detailFcltylist = await fetchFacilityDetailInfo(1, pageSize, fcltyCdList); + paginatedData.forEach(item => { + const filterdData = detailFcltylist.data.filter(fItem=>fItem.bscFctCd === item.swtrmtFcltCd)[0] || null; + item.fcltCpctSum = filterdData ? filterdData.fctCpc : ''; + item.location = filterdData ? filterdData.addr : ''; + item.ctpvNm = filterdData ? filterdData.sido : ''; + item.sggNm = filterdData ? filterdData.gugun : ''; + }); return {data: paginatedData, count: enrichedData.length}; }else{ return {data: [], count: 0}; @@ -376,6 +392,7 @@ export const processAreaReducer:(set:SetStateFunction)=>ProcessAreaActions=(set: })); const res = await fetchProcessAreaList(pageNo, pageSize, ctpvNm, sggNm, targetYear, set); res.data.forEach((item:ProcessAreaProps) => { + item.fctCpc = item.fcltCpctSum; DataForm({ type: 'float1', column: 'fctCpc', item:item as unknown as Record<string, unknown>}); }) const excelDownList: ExcelType[] = []; diff --git a/packages/common/business_components/src/ui/search_base_form/index.tsx b/packages/common/business_components/src/ui/search_base_form/index.tsx index f99963f14..82798db0b 100644 --- a/packages/common/business_components/src/ui/search_base_form/index.tsx +++ b/packages/common/business_components/src/ui/search_base_form/index.tsx @@ -25,6 +25,7 @@ type SearchBaseType = { leftClassName?: string; leftSelectClassName?: string; buttonOrder?: ("query" | "init" | "excel")[]; + initSidoValue?: string | ''; } export type ReturnType = { partValue: string; @@ -57,10 +58,11 @@ function SearchBaseForm ({ rightClassName, leftClassName, leftSelectClassName, - buttonOrder + buttonOrder, + initSidoValue='', }: SearchBaseType) { const [partValue, setPartValue] = useState<string>("A"); - const [sidoValue, setSidoValue] = useState<string>("0"); + const [sidoValue, setSidoValue] = useState<string>(initSidoValue?initSidoValue:"0"); const [sigunValue, setSigunValue] = useState<string>("0"); const [sidoText, setSidoText] = useState<string>(""); const [sigunText, setSigunText] = useState<string>(""); @@ -94,7 +96,7 @@ function SearchBaseForm ({ } }; const queryVal = () => { - console.log("조회버튼 클릭"); + console.log("조회버튼 클릭",); queryClick({ partValue: partValue, sidoValue: sidoValue, @@ -108,11 +110,18 @@ function SearchBaseForm ({ }); } const initVal = useCallback(() => { + if(initSidoValue){ + setSidoValue(initSidoValue); + } setResetTrigger(true); initClick(); - }, [setResetTrigger, initClick]); + }, [initSidoValue, setResetTrigger, initClick]); useEffect(() => { if (resetTrigger) { + if(initSidoValue!=""){ + setSidoValue(initSidoValue); + } + setResetTrigger(false); } }, [resetTrigger]); @@ -167,6 +176,7 @@ function SearchBaseForm ({ isAdmin={isAdmin} leftClassName={leftClassName} leftSelectClassName={leftSelectClassName} + initSidoValue={initSidoValue} > {leftChildren} </SearchFormLeft> diff --git a/packages/common/business_components/src/ui/search_form_left/index.tsx b/packages/common/business_components/src/ui/search_form_left/index.tsx index a989995ed..cfd12c5c4 100644 --- a/packages/common/business_components/src/ui/search_form_left/index.tsx +++ b/packages/common/business_components/src/ui/search_form_left/index.tsx @@ -3,6 +3,7 @@ import React, { useEffect, useState } from 'react'; import type { SelectDataType } from '../search_input_select'; import { SelectBox } from '../select'; +import { text } from 'stream/consumers'; /** * 검색 폼 왼쪽 컴포넌트 타입 @@ -46,6 +47,7 @@ type SearchFormLeftProps = { isAdmin?: boolean; leftClassName?: string; leftSelectClassName?: string; + initSidoValue?: string; } export type EnvPartSelectDataType = SelectDataType & { @@ -58,11 +60,11 @@ const selectPartData:SelectDataType[] = [ { text: "환경청별", val: 'G' }, ]; -function SearchFormLeft({ isShowPart = false, children, selectSidoData = [], selectSigunData = [], selectRegionData = [], selectUnitWaterShedData = [], selectMiddleRegionData = [], selectEnvPartData = [], setRtnPartValue, setRtnSidoValue, setRtnSidoText, setRtnSigunValue, setRtnSigunText, setRtnRegionValue, setRtnUnitWaterShedValue, setRtnMiddleRegionValue, setRtnEnvPartValue, setRtnEnvPartSidoValue, setRtnEnvPartSigunValue, resetTrigger = false, isAdmin = false, leftClassName, leftSelectClassName }: SearchFormLeftProps) { +function SearchFormLeft({ isShowPart = false, children, selectSidoData = [], selectSigunData = [], selectRegionData = [], selectUnitWaterShedData = [], selectMiddleRegionData = [], selectEnvPartData = [], setRtnPartValue, setRtnSidoValue, setRtnSidoText, setRtnSigunValue, setRtnSigunText, setRtnRegionValue, setRtnUnitWaterShedValue, setRtnMiddleRegionValue, setRtnEnvPartValue, setRtnEnvPartSidoValue, setRtnEnvPartSigunValue, resetTrigger = false, isAdmin = false, leftClassName, leftSelectClassName, initSidoValue }: SearchFormLeftProps) { /******************선택된 데이터******************/ const [partValue, setPartValue] = useState<string>('A'); //행정별 시도 시군구 - const [sidoValue, setSidoValue] = useState<string>('0'); + const [sidoValue, setSidoValue] = useState<string>(initSidoValue?initSidoValue : '0'); const [sigunValue, setSigunValue] = useState<string>('0'); const [sidoText, setSidoText] = useState<string>(''); const [sigunText, setSigunText] = useState<string>(''); @@ -85,6 +87,7 @@ function SearchFormLeft({ isShowPart = false, children, selectSidoData = [], sel const [filteredEnvPartSidoData, setFilteredEnvPartSidoData] = useState<EnvPartSelectDataType[]>([{ text: "전체", val: '0', adstDliStrCd:'' }]); const [filteredEnvPartSigunData, setFilteredEnvPartSigunData] = useState<SelectDataType[]>([{ text: "전체", val: '0' }]); + const [initTrigger, setInitTrigger] = useState<boolean>(false); // 시군구 세팅 const initializeSigunData = (sidoCd: string) => { if (sidoCd === '0') { @@ -99,7 +102,7 @@ function SearchFormLeft({ isShowPart = false, children, selectSidoData = [], sel setFilteredSigunData(newFilteredData); } } - + // 단위유역 세팅 const initializeUnitWaterShedData = (regionCd: string) => { if(regionCd === '0') { @@ -159,6 +162,7 @@ function SearchFormLeft({ isShowPart = false, children, selectSidoData = [], sel } const onSelectValue = (val: string, type: string) => { + setInitTrigger(true); let selectedSido; let selectedSigun; let selectedEnvPartSido; @@ -272,7 +276,7 @@ function SearchFormLeft({ isShowPart = false, children, selectSidoData = [], sel // 리셋 함수 const resetAllValues = () => { setPartValue('A'); - setSidoValue('0'); + setSidoValue(initSidoValue?initSidoValue:'0'); setSigunValue('0'); setRegionValue('0'); setUnitWaterShedValue('0'); @@ -287,7 +291,7 @@ function SearchFormLeft({ isShowPart = false, children, selectSidoData = [], sel setFilteredEnvPartSigunData([{ text: "전체", val: '0' }]); if (setRtnPartValue) setRtnPartValue('A'); - if (setRtnSidoValue) setRtnSidoValue('0'); + if (setRtnSidoValue) setRtnSidoValue(initSidoValue?initSidoValue:'0'); if (setRtnSigunValue) setRtnSigunValue('0'); if (setRtnRegionValue) setRtnRegionValue('0'); if (setRtnUnitWaterShedValue) setRtnUnitWaterShedValue('0'); @@ -304,6 +308,7 @@ function SearchFormLeft({ isShowPart = false, children, selectSidoData = [], sel // 리셋 후 트리거를 false로 설정 if (setRtnPartValue) { setRtnPartValue('A'); + setInitTrigger(false); } } }, [resetTrigger]); @@ -327,7 +332,12 @@ function SearchFormLeft({ isShowPart = false, children, selectSidoData = [], sel ) : ( <> <SelectBox className={leftSelectClassName?leftSelectClassName:`col-span-3`} label={'시도'} selectArray={selectSidoData} onSelectValue={(val) => onSelectValue(val.toString(), 'sido')} value={sidoValue} selectClass={undefined}/> - <SelectBox className={leftSelectClassName?leftSelectClassName:`col-span-3`} label={'시군구'} selectArray={filteredSigunData} onSelectValue={(val) => onSelectValue(val.toString(), 'sigun')} value={sigunValue} selectClass={undefined}/> + <SelectBox className={leftSelectClassName?leftSelectClassName:`col-span-3`} label={'시군구'} selectArray={initSidoValue&&!initTrigger?[ + { text: '전체', val: '0' }, + ...selectSigunData.filter( + (item) => String(item.val).slice(0, 2) === String(initSidoValue) + ), + ]:filteredSigunData} onSelectValue={(val) => onSelectValue(val.toString(), 'sigun')} value={sigunValue} selectClass={undefined}/> </> )} {children} From 618dd0c2dde315b94168feefbbfb7b772373aa62 Mon Sep 17 00:00:00 2001 From: jsyang <mind-one003@mind-one.co.kr> Date: Sat, 1 Nov 2025 11:01:29 +0900 Subject: [PATCH 15/23] =?UTF-8?q?=EB=B9=8C=EB=93=9C=EC=97=90=EB=9F=AC?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/business_components/src/ui/search_form_left/index.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/common/business_components/src/ui/search_form_left/index.tsx b/packages/common/business_components/src/ui/search_form_left/index.tsx index cfd12c5c4..04537ec5e 100644 --- a/packages/common/business_components/src/ui/search_form_left/index.tsx +++ b/packages/common/business_components/src/ui/search_form_left/index.tsx @@ -3,7 +3,6 @@ import React, { useEffect, useState } from 'react'; import type { SelectDataType } from '../search_input_select'; import { SelectBox } from '../select'; -import { text } from 'stream/consumers'; /** * 검색 폼 왼쪽 컴포넌트 타입 From db0aa001a1fab79e28911a4d8d07701685dfb6d8 Mon Sep 17 00:00:00 2001 From: jsyang <mind-one003@mind-one.co.kr> Date: Sat, 1 Nov 2025 11:07:28 +0900 Subject: [PATCH 16/23] =?UTF-8?q?initTrigger=20=EB=AF=B8=EC=9E=91=EC=84=B1?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/fo/app/pages/(with-layout)/rdi/page.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/fo/app/pages/(with-layout)/rdi/page.tsx b/apps/fo/app/pages/(with-layout)/rdi/page.tsx index 2657dc647..f581c0def 100644 --- a/apps/fo/app/pages/(with-layout)/rdi/page.tsx +++ b/apps/fo/app/pages/(with-layout)/rdi/page.tsx @@ -159,10 +159,13 @@ export default function Rdi() { */ useEffect(() => { if (!isInit) { - initializeCommonData(); - searchRdi(ref.current, 1, 10); + if(!initTrigger){ + initializeCommonData(); + searchRdi(ref.current, 1, 10); + setInitTrigger(true); + } } - }, [isInit, initializeCommonData, searchRdiList, selectSearchYear, searchRdi]); + }, [isInit, initializeCommonData, searchRdiList, selectSearchYear, searchRdi, initTrigger]); const chkVal = useCallback((returntype:ReturnType) => { setWidthSize(returntype.partValue=='A' ?"w-[130%]":"w-[150%]") From a156001d031da835165e3e7ab94758a5f87f98fe Mon Sep 17 00:00:00 2001 From: jsyang <mind-one003@mind-one.co.kr> Date: Sun, 2 Nov 2025 12:31:21 +0900 Subject: [PATCH 17/23] =?UTF-8?q?=EC=98=A4=EB=A5=98=EC=88=98=EC=A0=95-=20l?= =?UTF-8?q?abel=EC=9D=B4=20=EC=97=86=EB=8A=94=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=EB=A5=BC=20=EC=B0=A8=ED=8A=B8=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=EC=97=90=20=EB=84=A3=EC=96=B4=20max=EA=B0=92=EC=9D=84?= =?UTF-8?q?=20=EC=B6=94=EC=B6=9C=ED=95=98=EC=A7=80=20=EB=AA=BB=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/dm/app/(base-layout)/pages/wrStatus/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dm/app/(base-layout)/pages/wrStatus/page.tsx b/apps/dm/app/(base-layout)/pages/wrStatus/page.tsx index ce38a1226..baacfcd5f 100644 --- a/apps/dm/app/(base-layout)/pages/wrStatus/page.tsx +++ b/apps/dm/app/(base-layout)/pages/wrStatus/page.tsx @@ -367,7 +367,7 @@ export default function WrStatusPage() { <MainChart chartForm={chartOption.chartForm} chartConfig={chartOption.chartConfig} - chartData={chartOption.chartData} + chartData={chartOption.chartData.filter(item=>item.label!= '')} chartTitle={chartOption.chartTitle} chartClassName={chartOption.chartClassName} graphSize={chartOption.graphSize} From aa973f59a3e96acbe27fe875825484228d247439 Mon Sep 17 00:00:00 2001 From: dongsilove <ljparkmindone@gmail.com> Date: Sun, 2 Nov 2025 15:49:54 +0900 Subject: [PATCH 18/23] =?UTF-8?q?dm=20dashboard=20chart=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/dm/app/(base-layout)/pages/wrStatus/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dm/app/(base-layout)/pages/wrStatus/page.tsx b/apps/dm/app/(base-layout)/pages/wrStatus/page.tsx index baacfcd5f..e6b6da4d6 100644 --- a/apps/dm/app/(base-layout)/pages/wrStatus/page.tsx +++ b/apps/dm/app/(base-layout)/pages/wrStatus/page.tsx @@ -367,7 +367,7 @@ export default function WrStatusPage() { <MainChart chartForm={chartOption.chartForm} chartConfig={chartOption.chartConfig} - chartData={chartOption.chartData.filter(item=>item.label!= '')} + chartData={chartOption.chartData?.filter(item=>item.label!= '')} chartTitle={chartOption.chartTitle} chartClassName={chartOption.chartClassName} graphSize={chartOption.graphSize} From e111fab2417eb894d80328375028eb422247170b Mon Sep 17 00:00:00 2001 From: swcho <swcho@mind-one.co.kr> Date: Mon, 3 Nov 2025 14:54:43 +0900 Subject: [PATCH 19/23] =?UTF-8?q?fix:=20-=20=EB=B9=97=EB=AC=BC,=20?= =?UTF-8?q?=EC=A4=91=EC=88=98=EB=8F=84,=20=EC=98=A8=EB=B0=B0=EC=88=98=20?= =?UTF-8?q?=EC=8B=9C=EC=84=A4=EB=93=B1=EB=A1=9D=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=84=B8=EC=A2=85=ED=8A=B9=EB=B3=84=EC=9E=90?= =?UTF-8?q?=EC=B9=98=EC=8B=9C=20"=EC=A0=84=EC=B2=B4",=20"=EC=97=86?= =?UTF-8?q?=EC=9D=8C"=20=ED=91=9C=EC=8B=9C=20=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20-=20bdstReg=20=EC=8B=A0=EA=B7=9C=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=20=EC=8B=9C=20=EC=84=B8=EC=A2=85=ED=8A=B9?= =?UTF-8?q?=EB=B3=84=EC=9E=90=EC=B9=98=EC=8B=9C=20=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20-=20rainSearch=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruseFcltMng/fcltReg/htdflReg/page.tsx | 2 ++ .../ruseFcltMng/fcltReg/rainReg/page.tsx | 3 ++- .../ruseFcltMng/fcltReg/rswtReg/page.tsx | 2 ++ .../app/store/ruseFcltMng/fcltReg/rainReg/index.tsx | 1 - .../components/ui/form/fcltReg/bdstReg/bdstReg.tsx | 2 +- .../ui/modal/fcltReg/bdstRegModal/bdstRegModal.tsx | 13 +++++++++---- 6 files changed, 16 insertions(+), 7 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 03ddd5661..53c3e4403 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx @@ -66,6 +66,8 @@ export default function Home() { return { ...item, archArea: archArea, + cityText: item.ctpvCd === 0 ? "세종특별자치시" : (item as any).cityText, + sggText: (item as any).sggText === "없음" ? "-" : (item as any).sggText, }; } ); 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 880b3d8a7..45844a7b7 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx @@ -78,10 +78,11 @@ export default function Home() { archArea: formatArchArea(item?.archArea, 1), bdstChgYn: item.chgBuilding[0]?.bdstChgNm != null ? "Y" : "N", frstArchPrmsnDt: item?.frstArchPrmsnDt || "확인불가", + cityText: item.ctpvCd === 0 ? "세종특별자치시" : (item as any).cityText, + sggText: (item as any).sggText === "없음" ? "-" : (item as any).sggText, }; } ); - setbdstTable(rainData); } else { setbdstTable([]); diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx index 470d6e1d6..4dcf82d70 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx @@ -80,6 +80,8 @@ export default function Home() { archArea: archArea, bdstChgYn: item.chgBuilding[0]?.bdstChgNm != null ? "Y" : "N", bdstUsgCd: item.reuseBuilding[0]?.bdstUsgCd, + cityText: item.ctpvCd === 0 ? "세종특별자치시" : (item as any).cityText, + sggText: (item as any).sggText === "없음" ? "-" : (item as any).sggText, }; } ); diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx index cdaccf94f..1b92b025e 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx @@ -171,7 +171,6 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = ( `/reuseFc/rainyInfoList/${pageNation}/${rainRegSize}/${code}` + (txt ? `/${txt}` : "") ); - console.log("rainRes", rainRes); set((state: rainFacState) => { return { rain: { diff --git a/apps/wr/components/ui/form/fcltReg/bdstReg/bdstReg.tsx b/apps/wr/components/ui/form/fcltReg/bdstReg/bdstReg.tsx index 0445a3e2e..11ce1b6f4 100644 --- a/apps/wr/components/ui/form/fcltReg/bdstReg/bdstReg.tsx +++ b/apps/wr/components/ui/form/fcltReg/bdstReg/bdstReg.tsx @@ -77,7 +77,7 @@ export default function BdstReg({ form, type }: { form: any; type?: string }) { useEffect(() => { const city = String(userCtpvCd); - if (city && city === "0") { + if (city && (city === "0" || city === "50")) { setUserSggCd([{ text: "전체", val: "0" }]); form.setValue("sggCd", 0, { diff --git a/apps/wr/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal.tsx b/apps/wr/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal.tsx index fb2754050..9d349a6dd 100644 --- a/apps/wr/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal.tsx +++ b/apps/wr/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal.tsx @@ -122,10 +122,15 @@ export function BdstReg<T extends MoType>({ setUserSggCd([{ text: "전체", val: "0" }]); setObjSearch({ ...objSearch, sgg: "0" }); } else if (city.length === 2) { - const sgg = code.sggCd.filter((item) => item.val.slice(0, 2) === city); - //sgg.unshift({ text: "전체", val: "0" }); - setUserSggCd(sgg); - setObjSearch({ ...objSearch, sgg: Number(sgg[0]?.val) }); + if (city === "50") { + setUserSggCd([{ text: "전체", val: "0" }] as SelectDataType[]); + setObjSearch({ ...objSearch, sgg: "0" }); + } else { + const sgg = code.sggCd.filter((item) => item.val.slice(0, 2) === city); + //sgg.unshift({ text: "전체", val: "0" }); + setUserSggCd(sgg); + setObjSearch({ ...objSearch, sgg: Number(sgg[0]?.val) }); + } } }, [objSearch.city]); From d9a1e235fb0b318b63ff87915ec0cefe5ce3f826 Mon Sep 17 00:00:00 2001 From: swcho <swcho@mind-one.co.kr> Date: Mon, 3 Nov 2025 15:21:46 +0900 Subject: [PATCH 20/23] =?UTF-8?q?chmod:=20=EB=B9=97=EB=AC=BC,=20=EC=A4=91?= =?UTF-8?q?=EC=88=98=EB=8F=84,=20=EC=98=A8=EB=B0=B0=EC=88=98=20=EC=8B=9C?= =?UTF-8?q?=EC=84=A4=20=EB=93=B1=EB=A1=9D=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EC=8B=9C=EA=B5=B0=EA=B5=AC=20=ED=91=9C=EA=B8=B0=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20("-"=20->=20"=20")?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx | 2 +- apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx | 3 ++- apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx | 2 +- 3 files changed, 4 insertions(+), 3 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 53c3e4403..a95de0c0a 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx @@ -67,7 +67,7 @@ export default function Home() { ...item, archArea: archArea, cityText: item.ctpvCd === 0 ? "세종특별자치시" : (item as any).cityText, - sggText: (item as any).sggText === "없음" ? "-" : (item as any).sggText, + sggText: (item as any).sggText === "없음" ? " " : (item as any).sggText, }; } ); 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 45844a7b7..3f9e539bd 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx @@ -79,10 +79,11 @@ export default function Home() { bdstChgYn: item.chgBuilding[0]?.bdstChgNm != null ? "Y" : "N", frstArchPrmsnDt: item?.frstArchPrmsnDt || "확인불가", cityText: item.ctpvCd === 0 ? "세종특별자치시" : (item as any).cityText, - sggText: (item as any).sggText === "없음" ? "-" : (item as any).sggText, + sggText: (item as any).sggText === "없음" ? " " : (item as any).sggText, }; } ); + console.log("rainData", rainData); setbdstTable(rainData); } else { setbdstTable([]); diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx index 4dcf82d70..e86a448e4 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx @@ -81,7 +81,7 @@ export default function Home() { bdstChgYn: item.chgBuilding[0]?.bdstChgNm != null ? "Y" : "N", bdstUsgCd: item.reuseBuilding[0]?.bdstUsgCd, cityText: item.ctpvCd === 0 ? "세종특별자치시" : (item as any).cityText, - sggText: (item as any).sggText === "없음" ? "-" : (item as any).sggText, + sggText: (item as any).sggText === "없음" ? " " : (item as any).sggText, }; } ); From a1a21df3aea723b15a958b6b9077e34a70c4503b Mon Sep 17 00:00:00 2001 From: swcho <swcho@mind-one.co.kr> Date: Mon, 3 Nov 2025 15:24:18 +0900 Subject: [PATCH 21/23] =?UTF-8?q?chmod:=20=EB=B9=97=EB=AC=BC,=20=EC=A4=91?= =?UTF-8?q?=EC=88=98=EB=8F=84,=20=EC=98=A8=EB=B0=B0=EC=88=98=20=EC=8B=9C?= =?UTF-8?q?=EC=84=A4=20=EB=93=B1=EB=A1=9D=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EC=8B=9C=EA=B5=B0=EA=B5=AC=20=ED=91=9C=EA=B8=B0=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20("=20"=20->=20"-")?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx | 2 +- apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx | 2 +- apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx | 2 +- 3 files changed, 3 insertions(+), 3 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 a95de0c0a..53c3e4403 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx @@ -67,7 +67,7 @@ export default function Home() { ...item, archArea: archArea, cityText: item.ctpvCd === 0 ? "세종특별자치시" : (item as any).cityText, - sggText: (item as any).sggText === "없음" ? " " : (item as any).sggText, + sggText: (item as any).sggText === "없음" ? "-" : (item as any).sggText, }; } ); 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 3f9e539bd..0b74c9a0b 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx @@ -79,7 +79,7 @@ export default function Home() { bdstChgYn: item.chgBuilding[0]?.bdstChgNm != null ? "Y" : "N", frstArchPrmsnDt: item?.frstArchPrmsnDt || "확인불가", cityText: item.ctpvCd === 0 ? "세종특별자치시" : (item as any).cityText, - sggText: (item as any).sggText === "없음" ? " " : (item as any).sggText, + sggText: (item as any).sggText === "없음" ? "-" : (item as any).sggText, }; } ); diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx index e86a448e4..4dcf82d70 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx @@ -81,7 +81,7 @@ export default function Home() { bdstChgYn: item.chgBuilding[0]?.bdstChgNm != null ? "Y" : "N", bdstUsgCd: item.reuseBuilding[0]?.bdstUsgCd, cityText: item.ctpvCd === 0 ? "세종특별자치시" : (item as any).cityText, - sggText: (item as any).sggText === "없음" ? " " : (item as any).sggText, + sggText: (item as any).sggText === "없음" ? "-" : (item as any).sggText, }; } ); From 7371c16928d09579c62fdfac90d5130ad85f6085 Mon Sep 17 00:00:00 2001 From: jsyang <mind-one003@mind-one.co.kr> Date: Mon, 3 Nov 2025 17:43:12 +0900 Subject: [PATCH 22/23] =?UTF-8?q?=EB=8F=84=EC=8B=9C=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EA=B0=80=200=EC=9D=B8=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=ED=95=84=ED=84=B0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wr/app/store/stats/rainStat/index.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/wr/app/store/stats/rainStat/index.tsx b/apps/wr/app/store/stats/rainStat/index.tsx index 90687a905..d08db404d 100644 --- a/apps/wr/app/store/stats/rainStat/index.tsx +++ b/apps/wr/app/store/stats/rainStat/index.tsx @@ -92,7 +92,8 @@ export const rainStatActionsExport = ( res.filter((resFilter: RainStatProps) => city.some((cityCd) => - resFilter.ctpvCd?.trim() === cityCd.val.trim() + // 도시코드가 0인 데이터 필터링 + resFilter.ctpvCd?.trim() === cityCd.val.trim() && resFilter.ctpvCd.trim() != "0" ) ) .forEach((item: RainStatProps) => { From 17bf078de8bbf8648ff4f398e6def86caed8616d Mon Sep 17 00:00:00 2001 From: ljpark <ljparkmindone@gmail.com> Date: Tue, 4 Nov 2025 16:25:26 +0900 Subject: [PATCH 23/23] =?UTF-8?q?=EC=B9=A8=EC=9E=85=EC=88=98=20RDII=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=EC=A1=B0=ED=9A=8C=EC=8B=9C=20AUTH=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/sn/app/(with-base-layout)/ii/rdiiResult/page.tsx | 6 +++--- apps/sn/app/(with-base-layout)/ii/result/page.tsx | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/sn/app/(with-base-layout)/ii/rdiiResult/page.tsx b/apps/sn/app/(with-base-layout)/ii/rdiiResult/page.tsx index 52685aaf8..c791a3f12 100644 --- a/apps/sn/app/(with-base-layout)/ii/rdiiResult/page.tsx +++ b/apps/sn/app/(with-base-layout)/ii/rdiiResult/page.tsx @@ -18,7 +18,7 @@ * - RDII분석 삭제: DELETE /api/v1/rdiiAnls/{rainInfwtAnlsSn} (sewerage-service) */ 'use client' -import { deleteData, getData, useCookieAuth } from '@/components/lib/api' +import { deleteData, getData } from '@/components/lib/api' import { UiTable, downloadExcelWithKoreanHeaders } from '@common/business_components/ui' import { zodResolver } from '@hookform/resolvers/zod' import { useState, useEffect } from 'react' @@ -66,7 +66,7 @@ const tableColumn = [ ] const Result = () => { - const AUTH = useCookieAuth(); + //const AUTH = useCookieAuth(); const form = useForm<ResultFormValues>({ resolver: zodResolver(formSchema), @@ -133,7 +133,7 @@ const Result = () => { ctpvCd: ctpvCd !== '0' ? ctpvCd.trim() : null, sggCd: sggCd !== '0' ? sggCd : null, swtrmtFcltNm: formValues.swtrmtFcltNm?.trim() ? formValues.swtrmtFcltNm : null, - auth: AUTH, + //auth: AUTH, }; const queryParams = new URLSearchParams({ diff --git a/apps/sn/app/(with-base-layout)/ii/result/page.tsx b/apps/sn/app/(with-base-layout)/ii/result/page.tsx index 59ccf0b08..832809dcc 100644 --- a/apps/sn/app/(with-base-layout)/ii/result/page.tsx +++ b/apps/sn/app/(with-base-layout)/ii/result/page.tsx @@ -18,7 +18,7 @@ * - 침입수분석 삭제: DELETE /api/v1/inftwtAnls/{inftwtAnlsSn} (sewerage-service) */ 'use client' -import { deleteData, getData, useCookieAuth } from '@/components/lib/api' +import { deleteData, getData } from '@/components/lib/api' import { UiTable, downloadExcelWithKoreanHeaders } from '@common/business_components/ui' import { zodResolver } from '@hookform/resolvers/zod' import { useState, useEffect } from 'react' @@ -63,7 +63,7 @@ const tableColumn = [ ] const Result = () => { - const AUTH = useCookieAuth(); + //const AUTH = useCookieAuth(); const form = useForm<ResultFormValues>({ resolver: zodResolver(formSchema), @@ -127,7 +127,7 @@ const Result = () => { "ctpvCd": ctpvCd === '0' ? null : ctpvCd.trim(), "sggCd": sggCd === '0' ? null : sggCd, "swtrmtFcltNm": formValues.swtrmtFcltNm?.trim() ? formValues.swtrmtFcltNm : null, - "auth": AUTH, + //"auth": AUTH, }; const queryParams = new URLSearchParams({