From 00a73dba98924f130d8d49840f1944a51668687a Mon Sep 17 00:00:00 2001 From: truthwing Date: Thu, 19 Jun 2025 16:23:37 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A4=91=EC=88=98=EB=8F=84=20=EC=83=88?= =?UTF-8?q?=EB=A1=9C=EA=B3=A0=EC=B9=A8=20=EC=95=88=EB=90=98=EB=8A=94=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ruseFcltMng/fcltReg/rswtReg/page.tsx | 85 +++++++------- .../ruseFcltMng/fcltReg/rainReg/index.tsx | 5 +- .../ruseFcltMng/fcltReg/rswtReg/index.tsx | 106 ++++++++++-------- .../ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx | 34 +++--- 4 files changed, 118 insertions(+), 112 deletions(-) diff --git a/apps/wr/app/ruseFcltMng/fcltReg/rswtReg/page.tsx b/apps/wr/app/ruseFcltMng/fcltReg/rswtReg/page.tsx index 534d3e340..2931690b9 100644 --- a/apps/wr/app/ruseFcltMng/fcltReg/rswtReg/page.tsx +++ b/apps/wr/app/ruseFcltMng/fcltReg/rswtReg/page.tsx @@ -1,5 +1,11 @@ "use client"; import { useWrStore } from "@/app/store"; +import type { chgBuilding } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; +import type { customRswtBdst } from "@/app/store/ruseFcltMng/fcltReg/rswtReg"; +import { tableData } from "@/components/lib/func/commom"; +import RswtrRegForm from "@/components/ui/form/fcltReg/rswtrReg/rswtrRegForm"; +import BdstChgModal from "@/components/ui/modal/fcltReg/bdstChgModal/bdstChgModal"; +import { BdstReg } from "@/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal"; import { ContentsDiv, ScrollArea, @@ -14,54 +20,49 @@ import { import ListDiv from "@common/business_components/ui/list_div"; import { Button } from "@common/components"; import { useEffect, useState } from "react"; -import type { customRswtBdst } from "@/app/store/ruseFcltMng/fcltReg/rswtReg"; -import { tableData } from "@/components/lib/func/commom"; -import RswtrRegForm from "@/components/ui/form/fcltReg/rswtrReg/rswtrRegForm"; -import BdstChgModal from "@/components/ui/modal/fcltReg/bdstChgModal/bdstChgModal"; -import type { chgBuilding } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; -import { makeFcltRegHead } from "../rainReg/TableHead"; -import { BdstReg } from "@/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal"; export default function Home() { - const { code, rswt, initRswt ,rswtBdstSearch,getRswtBdstData} = useWrStore((state) => state); + const { code, rswt, initRswt, rswtBdstSearch, getRswtBdstData } = useWrStore( + (state) => state + ); const [rswtForm, setRswtForm] = useState(); const [searchTxt, setSearchTxt] = useState(); const [issNewReg, setIsNewReg] = useState(false); const [pageNation, setPageNation] = useState(1); - + const [selectVal, setSelect] = useState(); const [bdstTable, setbdstTable] = useState(); const [bdstChgProps, setBdstChgProps] = useState<{ isOpen: boolean; chgBuilding: chgBuilding[]; }>({ isOpen: false, chgBuilding: [] }); const { rswtRes } = rswt; - useEffect(() => { if (!rswt.isInit) { - initRswt('41'); + initRswt("41"); } }, [rswt.isInit, initRswt]); useEffect(() => { if (code.sggCd.length > 0) { - const rswtData = tableData(rswtRes, { code }).map( - (item: customRswtBdst) => { - return { - ...item, - bdstChgYn: item.chgBuilding[0]?.bdstChgNm != null? "Y" : "N", - bdstUsgCd: item.reuseBuilding[0]?.bdstUsgCd - }; - } - ); - console.log(rswtData) + const rswtData = tableData(rswtRes, { code }).map( + (item: customRswtBdst) => { + return { + ...item, + bdstChgYn: item.chgBuilding[0]?.bdstChgNm != null ? "Y" : "N", + bdstUsgCd: item.reuseBuilding[0]?.bdstUsgCd, + }; + } + ); setbdstTable(rswtData); + setRswtForm(rswtRes[selectVal ?? 0]); } - }, [code, rswtRes]); + }, [code, rswtRes, selectVal]); const cellClick: (val: number | undefined, headId: string) => void = ( val, headId ) => { if ((bdstTable ?? []).length > 0 && val !== undefined) { { + setSelect(val); setRswtForm(rswtRes[val]); } } @@ -82,7 +83,6 @@ export default function Home() { getRswtBdstData(pageNation, "41"); }, [pageNation]); - return ( <> @@ -101,23 +101,23 @@ export default function Home() { /> -
- - +
+ +
@@ -133,10 +133,9 @@ export default function Home() { pageSize={20} total={10000} headName={"건축물 목록"} - cellClick={cellClick} + cellClick={cellClick} onPageChange={setPageNation} - > - + >
diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx index f4e06f8dd..d398b7f6e 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx @@ -1,7 +1,7 @@ +import type { TableUpperProps } from "@/app/store/common/type/header"; import { getFetch, postFectch, putFectch } from "@/components/lib/api"; import { z } from "zod"; import { makeMdfr, makeRstr } from "../bdstReg"; -import type { TableUpperProps } from "@/app/store/common/type/header"; export const TEST_UUID= '2d4b151d-1828-41e0-91d9-4cd28ea1cc7e' export const rainZod = z.object({ @@ -33,7 +33,7 @@ export const rainZod = z.object({ }), grntchBdstCertNo: z.string().default(""), grntchBdstCertGrd: z.string().default(""), - crgRdctYn: z.enum(["Y", "N"]).nullish(), // 안쓰는 값 + crgRdctYn: z.string().default("N").nullish(), /// 안쓰는 값 crgRdctBss: z.string().default("").nullish(), /// 안쓰는 값 crgRdctAmt: z.number().default(0), // 안쓰는 값 ruseFcltFlg: z.string().default(""), @@ -208,7 +208,6 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = ( }).then((chch: any) => { if(chch.ok) { alert("등록이 완료되었습니다."); - } }) }else{ diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx index fa219ce01..3c2504b9a 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx @@ -1,9 +1,9 @@ import { getFetch, postFectch, putFectch } from "@/components/lib/api"; import { upHeadList, type chgBuilding } from "../rainReg"; +import type { TableUpperProps } from "@/app/store/common/type/header"; import { z } from "zod"; import { makeMdfr, makeRstr } from "../bdstReg"; -import type { TableUpperProps } from "@/app/store/common/type/header"; export const rswtZod = z.object({ bdstInfoPk: z.number().nullish(), @@ -13,14 +13,14 @@ export const rswtZod = z.object({ bdstNm: z.string().default(""), frstArchPrmsnDt: z.date().default(() => new Date()), archChgPrmsnDt: z.coerce.date().nullish().default(null), - chBuildingYn :z.string().nullish(), + chBuildingYn: z.string().nullish(), archArea: z.number().default(0), archChgArea: z.number().default(0), rgtr: z.string().nullish().default(null), mdfr: z.string().nullish().default(null), - bdstUsgText: z.string().default(''), - cityText: z.string().default(''), - sggText: z.string().default(''), + bdstUsgText: z.string().default(""), + cityText: z.string().default(""), + sggText: z.string().default(""), reuseBuilding: z .array( @@ -45,7 +45,7 @@ export const rswtZod = z.object({ grntchBdstCertNo: z.string().default(""), grntchBdstCertGrd: z.string().default(""), - crgRdctYn: z.enum(["Y", "N"]), // 안쓰는 값 + crgRdctYn: z.string().default("N").nullish(), // 안쓰는 값 crgRdctBss: z.string().default("").nullish(), /// 안쓰는 값 crgRdctAmt: z.number().default(0), // 안쓰는 값 ruseFcltFlg: z.string().default(""), @@ -62,12 +62,12 @@ export const rswtZod = z.object({ orgwtKndCd: z.string().default(""), filtrTrtmfctCpct: z.number().default(0), filtrTrtmfctProcs: z.string().default(""), - filtrTrtmfctUsgCd: z.string().default(""), + filtrTrtmfctUsgCd: z.string().default("").nullish(), rswtrUsqty: z.number().default(0), altUswtrUtztnYn: z.enum(["Y", "N"]).nullish(), //안쓰는값 - altUswtrKndCd: z.string().default(""), //안쓰는값 + altUswtrKndCd: z.string().default("").nullish(), //안쓰는값 altUswtrUtztnQnt: z.number().default(0), //안쓰는값 - altUswtrIdntyMthdCd: z.string().default(""), //안쓰는값 + altUswtrIdntyMthdCd: z.string().default("").nullish(), //안쓰는값 rgtr: z.string().nullish().default(null), mdfr: z.string().nullish().default(null), }) @@ -102,11 +102,15 @@ export type rswtFacState = { }; }; type rswtFacSActions = { - initRswt: (code:string|number) => void; - rswtBdstUpdate: (data: customRswtBdst,code:string|number) => void; - getRswtBdstData:(pageNation:number, code:string|number) =>void; - rswtBdstSearch:(txt:string,pageNation:number, code:string|number) =>void; - rswtBdstReg: (data: customRswtBdst,code:string|number) => void; + initRswt: (code: string | number) => void; + rswtBdstUpdate: (data: customRswtBdst, code: string | number) => void; + getRswtBdstData: (pageNation: number, code: string | number) => void; + rswtBdstSearch: ( + txt: string, + pageNation: number, + code: string | number + ) => void; + rswtBdstReg: (data: customRswtBdst, code: string | number) => void; }; export type rswtFacType = rswtFacState & rswtFacSActions; @@ -119,42 +123,46 @@ export const rswtFacStateExport: rswtFacState = { }, }; -const initFetch = async (code:string|number) => { - const rswtRes = await getFetch( - "wr", - `/reuseFc/waterreuseFc/1/10/${code}`) - +const initFetch = async (code: string | number) => { + const rswtRes = await getFetch("wr", `/reuseFc/waterreuseFc/1/10/${code}`); return rswtRes; }; export const rswtFacActionsExport: (set: any) => rswtFacSActions = ( set: any ) => { return { - rswtBdstSearch: async(txt:string,pageNation:number,code:string|number) =>{ - try{ - - const rswtRes = await getFetch('wr' , `/reuseFc/waterreuseFc/${pageNation}/20/${code}` +(txt? `/${txt}`:'')) - set((state: rswtFacState) => { - return { - ...state, - rswt: { - ...state.rswt, - rswtRes: rswtRes, - isInit: false, - }, - }; - })} - catch(erTxt){ - console.log("error", erTxt) - } - }, + rswtBdstSearch: async ( + txt: string, + pageNation: number, + code: string | number + ) => { + try { + const rswtRes = await getFetch( + "wr", + `/reuseFc/waterreuseFc/${pageNation}/20/${code}` + + (txt ? `/${txt}` : "") + ); + set((state: rswtFacState) => { + return { + ...state, + rswt: { + ...state.rswt, + rswtRes: rswtRes, + isInit: false, + }, + }; + }); + } catch (erTxt) { + console.log("error", erTxt); + } + }, getRswtBdstData: async (pageNation: number, code: string | number) => { try { const rswtRes = await getFetch( "wr", `/reuseFc/waterreuseFc/${pageNation}/10/${code}` ); - console.log(pageNation) + console.log(pageNation); // 여기서 상태 업데이트 return set((state: rswtFacState) => ({ ...state, @@ -183,22 +191,22 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = ( console.log(error); } }, - rswtBdstUpdate: async (data: customRswtBdst, code:string|number) => { + rswtBdstUpdate: async (data: customRswtBdst, code: string | number) => { try { const chData = await makeMdfr(data); const res = await putFectch("/reuseFc/waterreuseFc", chData); if (res.ok) { alert("등록이 완료되었습니다."); + const rswtRes = await initFetch(code); + set((state: rswtFacState) => ({ + ...state, + rswt: { + ...state.rswt, + rswtRes: rswtRes, + isInit: false, + }, + })); } - const rswtRes = await initFetch(code); - set((state: rswtFacState) => ({ - ...state, - rain: { - ...state.rswt, - rswtRes: rswtRes, - isInit: false, - }, - })); } catch (errorUpdate) { alert( "업데이트 오류입니다. " + @@ -207,7 +215,7 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = ( } finally { } }, - rswtBdstReg: async (data: customRswtBdst,code:string|number) => { + rswtBdstReg: async (data: customRswtBdst, code: string | number) => { try { const chData = await makeRstr(data); const res = await postFectch("/reuseFc/waterreuseFc", chData); diff --git a/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx b/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx index 69beee989..f72e640e3 100644 --- a/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx @@ -1,5 +1,16 @@ "use client"; +import { useWrStore } from "@/app/store"; +import { selectClass } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; +import { + rswtZod, + type customRswtBdst, +} from "@/app/store/ruseFcltMng/fcltReg/rswtReg"; +import { formH1Class, formH2Class } from "@/components/lib/class/comClass"; +import { + formatCommaNumber, + handleCommaNumberChange, +} from "@/components/lib/func/commom"; import { DatePicker, Form, @@ -9,21 +20,10 @@ import { } from "@common/business_components/ui"; import { Button, Input } from "@common/components/ui"; import { zodResolver } from "@hookform/resolvers/zod"; +import { useEffect } from "react"; import { useForm } from "react-hook-form"; import { z } from "zod"; -import { useWrStore } from "@/app/store"; -import { selectClass } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; -import { - rswtZod, - type customRswtBdst, -} from "@/app/store/ruseFcltMng/fcltReg/rswtReg"; -import { useEffect } from "react"; import BdstReg from "../bdstReg/bdstReg"; -import { - formatCommaNumber, - handleCommaNumberChange, -} from "@/components/lib/func/commom"; -import { formH1Class, formH2Class } from "@/components/lib/class/comClass"; export default function RswtrRegForm({ rswtForm, @@ -81,9 +81,7 @@ export default function RswtrRegForm({ useEffect(() => { console.log("form errors:", form.formState.errors); }, [form.formState.errors]); - useEffect(() => { - console.log("filtrTrtmfctProcs ", filtrTrtmfctProcs); if (grntchBdstCertYn === "N") { form.setValue("reuseBuilding.0.grntchBdstCertYr", ""); form.setValue("reuseBuilding.0.grntchBdstCertNo", ""); @@ -91,11 +89,11 @@ export default function RswtrRegForm({ } else if (instlCstSprtYn === "N") { form.setValue("reuseBuilding.0.instlCstSprtAmt", 0); } - }, [grntchBdstCertYn, instlCstSprtYn, filtrTrtmfctProcs]); + }, [grntchBdstCertYn, instlCstSprtYn, filtrTrtmfctProcs, form]); useEffect(() => { if (rswtZod) form.reset(cleanRswtData(rswtForm)); - }, [rswtForm]); + }, [rswtForm, form]); return (
@@ -226,7 +224,9 @@ export default function RswtrRegForm({ placeholder="" type="number" value={field.value ?? 0} - onChange={(e)=>{field.onChange(Number(e.target.value))} } + onChange={(e) => { + field.onChange(Number(e.target.value)); + }} /> )}