From 9c19f239c2b89dafb8681220244f5a7b2f8f0141 Mon Sep 17 00:00:00 2001 From: leedj312 Date: Mon, 18 Aug 2025 14:53:00 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=EA=B1=B4=EC=B6=95=EB=AC=BC=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EA=B2=80=EC=A6=9D=20=EC=86=8C=EC=8A=A4=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruseFcltMng/fcltReg/rainReg/page.tsx | 19 +++++------- .../ruseFcltMng/fcltReg/rswtReg/page.tsx | 6 ++-- apps/wr/app/store/common/code/basicCode.tsx | 29 +++++++++++++++++++ .../ruseFcltMng/fcltReg/rainReg/index.tsx | 8 ++--- .../ruseFcltMng/fcltReg/rainReg/type.tsx | 3 +- .../ruseFcltMng/fcltReg/rswtReg/index.tsx | 8 +++-- apps/wr/components/lib/func/commom.tsx | 26 ++++++++++++++++- .../ui/form/fcltReg/rainReg/rainRegForm.tsx | 22 ++++++-------- .../ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx | 19 ++++-------- .../fcltReg/bdstRegModal/bdstRegModal.tsx | 4 +-- 10 files changed, 92 insertions(+), 52 deletions(-) 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 e3daab9f9..f2d121887 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx @@ -1,7 +1,7 @@ "use client"; import { useWrStore } from "@/app/store"; -import { type customRainBdst } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; -import { formatCommaNumber, tableData } from "@/components/lib/func/commom"; +import { rainRegSize, type customRainBdst } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; +import { formatArchArea, tableData } from "@/components/lib/func/commom"; import RainRegForm from "@/components/ui/form/fcltReg/rainReg/rainRegForm"; import { BdstReg } from "@/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal"; import { @@ -49,14 +49,11 @@ export default function Home() { if (rainRes && rainRes.length > 0) { const rainData = tableData(rainRes, { code }).map( (item: customRainBdst) => { - const archArea = - item?.archArea.split(".")[0] !== "-1" - ? item?.archArea.split(".")[0] - : "확인불가"; return { ...item, - archArea: formatCommaNumber(archArea), + archArea: formatArchArea(item?.archArea,1), bdstChgYn: item.chgBuilding[0]?.bdstChgNm != null ? "Y" : "N", + frstArchPrmsnDt:item?.frstArchPrmsnDt||'확인불가' }; } ); @@ -129,7 +126,7 @@ export default function Home() { { @@ -140,9 +137,9 @@ export default function Home() { {/* */} -
- - +
+ +
- + { // const rainRes =await getFetch("wr", `/reuseFc/rainyInfoList/1/10/${code}`); - const rainRes = await getFetchWithCount("wr", `/reuseFc/rainyInfoList/1/11/${code}`); + const rainRes = await getFetchWithCount("wr", `/reuseFc/rainyInfoList/1/${rainRegSize}/${code}`); return rainRes; }; export const rainFacActionsExport: (set: any) => rainFacSActions = ( @@ -108,7 +108,7 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = ( return { getRainData: async (pageNation: number, code: string | number) => { try { - const rainRes = await getFetchWithCount("wr", `/reuseFc/rainyInfoList/${pageNation}/11/${code}`); + const rainRes = await getFetchWithCount("wr", `/reuseFc/rainyInfoList/${pageNation}/${rainRegSize}/${code}`); // 여기서 상태 업데이트 return set((state: rainFacState) => ({ @@ -149,7 +149,7 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = ( try { // const rainRes = await getFetch('wr' , `/reuseFc/rainyInfoList/${pageNation}/20/41` +(txt? `/${txt}`:'')) - const rainRes = await getFetchWithCount('wr', `/reuseFc/rainyInfoList/${pageNation}/11/41` + (txt ? `/${txt}` : '')) + const rainRes = await getFetchWithCount('wr', `/reuseFc/rainyInfoList/${pageNation}/${rainRegSize}/41` + (txt ? `/${txt}` : '')) console.log("rainRes", rainRes) set((state: rainFacState) => { return { diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/type.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/type.tsx index 7850fec93..011d29da4 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/type.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/type.tsx @@ -6,14 +6,13 @@ export const validationMessages = { requiredSelect: (field: string) => `${field}을(를) 선택해주세요.`, yearFormat: '4자리 연도만 입력하세요', }; - export const baseReuseBuildingSchema = z.object({ bdstRuseFcltSn: z.number().nullish(), bdstInfoSn: z.number().nullish(), instlCmptnDt: z.coerce.date().default(() => new Date()), instlCst: z .number() - .max(9_999_999, { message: "최대 9,999,999까지 입력 가능합니다." }) + .max(999_999_999_999, { message: "최대 1,000,000,000,000까지 입력 가능합니다." }) .nullish(), operMngCd: z.string().optional().default(""), anlOperCst: z.number().default(0), diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx index 21983d466..7ef9bf0d9 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx @@ -7,6 +7,8 @@ import { z } from "zod"; import { makeMdfr, makeRstr } from "../bdstReg"; import { baseReuseBuildingSchema, chgBuildingSchema, validationMessages } from "../rainReg/type"; + +export const rswtRegSize =15; const rswtrObjSchema = z.object({ bdstRuseFcltSn: z.number().nullish(), //wtrUsqty: z.number({ required_error: validationMessages.required("물사용량(m³)") }).positive({ message: validationMessages.required("물사용량(m³)") }), @@ -84,7 +86,7 @@ export const rswtFacStateExport: rswtFacState = { }; const initFetch = async (code: string | number) => { - const rswtRes = await getFetchWithCount("wr", `/reuseFc/waterreuseFc/1/11/${code}`); + const rswtRes = await getFetchWithCount("wr", `/reuseFc/waterreuseFc/1/${rswtRegSize}/${code}`); return rswtRes; }; export const rswtFacActionsExport: (set: any) => rswtFacSActions = ( @@ -99,7 +101,7 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = ( try { const rswtRes = await getFetchWithCount( "wr", - `/reuseFc/waterreuseFc/${pageNation}/11/${code}` + + `/reuseFc/waterreuseFc/${pageNation}/${rswtRegSize}/${code}` + (txt ? `/${txt}` : "") ); set((state: rswtFacState) => { @@ -121,7 +123,7 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = ( try { const rswtRes = await getFetchWithCount( "wr", - `/reuseFc/waterreuseFc/${pageNation}/11/${code}` + `/reuseFc/waterreuseFc/${pageNation}/${rswtRegSize}/${code}` ); console.log(pageNation); // 여기서 상태 업데이트 diff --git a/apps/wr/components/lib/func/commom.tsx b/apps/wr/components/lib/func/commom.tsx index ef4baa67b..042e74aa6 100644 --- a/apps/wr/components/lib/func/commom.tsx +++ b/apps/wr/components/lib/func/commom.tsx @@ -272,4 +272,28 @@ export const formatYyyymmdd = (val: string | undefined) => { } const m = moment(val); return m.isValid() ? m.format("YYYY-MM-DD") : val; -}; \ No newline at end of file +}; + +/** + * 문자열 숫자(콤마 포함 가능)를 반올림 처리해 반환. + * 숫자가 아닌 경우(예: "확인불가")는 원래 값을 그대로 반환. + * + * @param value 입력 문자열 + * @param digits 소수점 자릿수 (기본 0 = 정수 반올림) + */ +export const formatArchArea =(value: string, digits: number=0 ) => { + + // "확인불가" 등 숫자 아님 → 그대로 반환 + const cleaned = value.replace(/,/g, ""); + const num = parseFloat(cleaned); + + if (isNaN(num)) { + return value; + } + + // 반올림 (digits 자릿수까지) + const rounded = num.toFixed(digits); + + // 다시 천 단위 콤마 찍어서 반환 + return Number(rounded).toLocaleString(); +} \ No newline at end of file diff --git a/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx b/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx index 7c53cbe21..5083e24fc 100644 --- a/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx @@ -14,9 +14,9 @@ import { } from "@/components/lib/func/commom"; import { DatePicker, FormUi } from "@common/business_components"; import { Form, FormField, SelectBox } from "@common/business_components/ui"; -import { Button, Input, ScrollArea } from "@common/components/ui"; +import { Button, Input } from "@common/components/ui"; import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect, useState } from "react"; +import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { z } from "zod"; import BdstReg from "../bdstReg/bdstReg"; @@ -54,18 +54,12 @@ export default function RainRegForm({ "reuseBuilding.0.rainyObj.filtrTrtmfctYn", ]); - const [divStyle, setDivStyle] = useState("h-[53vh]"); + // const [divStyle, setDivStyle] = useState("h-[53vh]"); useEffect(() => { if(isMap=== true){ - setDivStyle("h-[100vh]") - }else if (isModal === true) { - setDivStyle("h-[53vh] max-h-[37vh]") - } else if (readonly === true) { - setDivStyle("h-[62vh]") - } else { - setDivStyle("h-[57vh]") + } - }, [isModal, readonly ,isMap]); + }, [isMap]); const cleanRainData = (raw: any): z.infer => { const buildings = @@ -94,6 +88,8 @@ export default function RainRegForm({ grntchBdstCertYn: item?.grntchBdstCertYn ?? "Y", rainyObj: { ...item?.rainyObj, + pntfColKnd:item.rainyObj?.pntfColKnd??'확인불가', + filtrTrtmfctPrs:item.rainyObj?.filtrTrtmfctPrs??'', filtrTrtmfctYn: item?.rainyObj?.filtrTrtmfctYn ?? "Y", }, })), @@ -180,7 +176,7 @@ export default function RainRegForm({ )}
- + {/* */} {isModal && rainForm != undefined ? : <>} {isModal ? (

@@ -614,7 +610,7 @@ export default function RainRegForm({

- + {/* */} diff --git a/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx b/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx index 0d1b47f4a..5ae5cd264 100644 --- a/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx @@ -19,9 +19,9 @@ import { FormUi, SelectBox, } from "@common/business_components/ui"; -import { Button, Input, ScrollArea } from "@common/components/ui"; +import { Button, Input } from "@common/components/ui"; import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect, useState } from "react"; +import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { z } from "zod"; import BdstAdd from "../bdstReg/bdstAdd"; @@ -46,18 +46,11 @@ export default function RswtrRegForm({ const { code, rswtBdstUpdate, rswtBdstReg } = useWrStore( (state) => state ); - const [divStyle, setDivStyle] = useState("h-[53vh]"); + // const [divStyle, setDivStyle] = useState("h-[53vh]"); useEffect(() => { if(isMap){ - setDivStyle("h-[100vh]") - }else if (isModal === true) { - setDivStyle("h-[53vh] max-h-[37vh]") - } else if (readonly === true) { - setDivStyle("h-[62vh]") - } else { - setDivStyle("h-[57vh]") } - }, [isModal, readonly ,isMap]); + }, [isMap]); // const defaultValues: z.infer = rswtZod.parse({}); const form = useForm>({ @@ -176,7 +169,7 @@ export default function RswtrRegForm({ )} - + {/* */} {isModal && rswtForm != undefined ? : <>} {isModal ? (

@@ -506,7 +499,7 @@ export default function RswtrRegForm({ - + {/* */} diff --git a/apps/wr/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal.tsx b/apps/wr/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal.tsx index d1de75ba1..31f9f2d16 100644 --- a/apps/wr/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal.tsx +++ b/apps/wr/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal.tsx @@ -196,7 +196,7 @@ export function BdstReg({
- {/* */} +
{moType === "RNB" ? ( ({ > )}
- {/*
*/} +
); From c8957ce0da3d14dc6df7ea0676c9c3ec22324ae5 Mon Sep 17 00:00:00 2001 From: leedj312 Date: Mon, 25 Aug 2025 14:31:16 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=EC=8B=9C=EC=84=A4=20=ED=98=84=ED=99=A9=20?= =?UTF-8?q?=EB=B0=8F=20=EA=B1=B4=EC=B6=95=EB=AC=BC=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../splyPopup/searchBar/searchBar.tsx | 9 +- .../ruseFcltMng/fcltSttn/htdflSttn/page.tsx | 11 +- .../ruseFcltMng/fcltSttn/rainSttn/page.tsx | 18 +- .../ruseFcltMng/fcltSttn/rswtSttn/page.tsx | 15 +- apps/wr/app/store/common/code/basicCode.tsx | 31 +-- apps/wr/app/store/common/code/index.ts | 184 ++++++++---------- .../ruseFcltMng/fcltSttn/htdflSttn/index.tsx | 12 +- .../ruseFcltMng/fcltSttn/rainSttn/index.tsx | 14 +- .../ruseFcltMng/fcltSttn/rswtSttn/index.tsx | 13 +- 9 files changed, 152 insertions(+), 155 deletions(-) diff --git a/apps/wr/app/(popUp-layout)/splyPopup/searchBar/searchBar.tsx b/apps/wr/app/(popUp-layout)/splyPopup/searchBar/searchBar.tsx index ce5c6d1ae..0f5430771 100644 --- a/apps/wr/app/(popUp-layout)/splyPopup/searchBar/searchBar.tsx +++ b/apps/wr/app/(popUp-layout)/splyPopup/searchBar/searchBar.tsx @@ -5,7 +5,7 @@ import { type SelectDataType, } from "@common/business_components/ui"; import { Button, Label } from "@common/components/ui"; -import { useCallback, useEffect, useState } from "react"; +import { useCallback, useState } from "react"; import SearchInputText from "../SearchInputText/SearchInputText"; export function SearchBar({ @@ -15,7 +15,7 @@ export function SearchBar({ setHasuPk: (hasuPk: any) => void; onApply: () => void; }) { - const { map, code, codeInit, findRuseFclt } = useWrStore( + const { map, code, findRuseFclt } = useWrStore( (state) => state ); const [sidoValue, setSidoValue] = useState(""); @@ -24,10 +24,7 @@ export function SearchBar({ { text: "전체", val: "0" }, ]); - useEffect(() => { - //codeInit(); - }, [codeInit]); - + const initializeSigunData = useCallback( (sidoCd: string) => { if (sidoCd === "0") { diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/htdflSttn/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/htdflSttn/page.tsx index 46528bcf7..beaa71569 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/htdflSttn/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/htdflSttn/page.tsx @@ -5,6 +5,7 @@ import { btnClass } from "@/app/store/common/code"; import type { customRainBdst } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; +import { htdflSttnSize } from "@/app/store/ruseFcltMng/fcltSttn/htdflSttn"; import { excelDownload, getCity, @@ -57,7 +58,7 @@ export default function HtdflSttn() { const [fcltNm, setFcltNm] = useState(""); useEffect(() => { - htdflSttnSearch(false, pageNation, "20", String(getConValue()), fcltNm, code.cityCd, code.sggCd); + htdflSttnSearch(false, pageNation, htdflSttnSize, String(getConValue()), fcltNm, code.cityCd, code.sggCd); isResetPage(false) }, [pageNation]); @@ -102,7 +103,7 @@ export default function HtdflSttn() { const excelClick = useCallback(() => { isDownloadTriggered.current = true; - htdflSttnSearch(true, 1, String(htdflSttnResCount), String(getConValue()), fcltNm, code.cityCd, code.sggCd); + htdflSttnSearch(true, 1, htdflSttnResCount, String(getConValue()), fcltNm, code.cityCd, code.sggCd); }, [htdflSttnSearch, objSearch, code.cityCd, code.sggCd, fcltNm, htdflSttnResCount]); useEffect(() => { @@ -124,7 +125,7 @@ export default function HtdflSttn() { useEffect(() => { if (!htdflSttn.isInit) { - initHtdfl(false, 1, "20", "0", fcltNm, code.cityCd, code.sggCd); + initHtdfl(false, 1, htdflSttnSize, "0", fcltNm, code.cityCd, code.sggCd); } }, [htdflSttn.isInit, initHtdfl]); @@ -185,7 +186,7 @@ export default function HtdflSttn() {