중수도 새로고침 안되는 오류 해결
iipbs_wr / build (push) Waiting to run

This commit is contained in:
truthwing
2025-06-19 16:23:37 +09:00
parent 8ab996b41f
commit 00a73dba98
4 changed files with 118 additions and 112 deletions
@@ -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<customRswtBdst>();
const [searchTxt, setSearchTxt] = useState<string>();
const [issNewReg, setIsNewReg] = useState<boolean>(false);
const [pageNation, setPageNation] = useState(1);
const [selectVal, setSelect] = useState<number>();
const [bdstTable, setbdstTable] = useState<customRswtBdst[]>();
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 (
<>
<ContentsDiv>
@@ -101,23 +101,23 @@ export default function Home() {
/>
</SearchFormLeft>
<SearchFormRight>
<div className="flex flex-row space-x-2">
<Button
size={"sm"}
className="mr-4 "
onClick={(e) => {
rswtBdstSearch(searchTxt || "",pageNation,'41');
}}
>
조회
</Button>
<Button
size={"sm"}
className="mr-4"
onClick={() => setIsNewReg(!issNewReg)}
>
신규등록
</Button>
<div className="flex flex-row space-x-2">
<Button
size={"sm"}
className="mr-4 "
onClick={(e) => {
rswtBdstSearch(searchTxt || "", pageNation, "41");
}}
>
조회
</Button>
<Button
size={"sm"}
className="mr-4"
onClick={() => setIsNewReg(!issNewReg)}
>
신규등록
</Button>
</div>
</SearchFormRight>
</SearchDiv>
@@ -133,10 +133,9 @@ export default function Home() {
pageSize={20}
total={10000}
headName={"건축물 목록"}
cellClick={cellClick}
cellClick={cellClick}
onPageChange={setPageNation}
>
</UiTable>
></UiTable>
</ListDiv>
</div>
<div className="col-span-2 max-h-full">
@@ -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{
@@ -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);
@@ -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 (
<div className="!mx-[1.6rem] !p-0r">
@@ -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));
}}
/>
</FormUi>
)}