Merge commit '8b29d0288005b94e2c9206d7f40c3975efb4a485' into iipbs/wr/dev

This commit is contained in:
leedj312
2025-07-17 19:31:42 +09:00
12 changed files with 209 additions and 161 deletions
@@ -29,7 +29,7 @@ import {
import ListDiv from "@common/business_components/ui/list_div"; import ListDiv from "@common/business_components/ui/list_div";
import { Button } from "@common/components/ui"; import { Button } from "@common/components/ui";
import { useCallback, useEffect, useState } from "react"; import { useCallback, useEffect, useState } from "react";
import { Toaster } from "react-hot-toast"; import toast, { Toaster } from "react-hot-toast";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
export default function LdrmntCoSttn() { export default function LdrmntCoSttn() {
@@ -46,7 +46,6 @@ export default function LdrmntCoSttn() {
const [excelData, setExcelData] = useState<any[]>(); const [excelData, setExcelData] = useState<any[]>();
const [resetPage, isResetPage] = useState(false); const [resetPage, isResetPage] = useState(false);
const { t } = useTranslation('base'); const { t } = useTranslation('base');
// const [isExcelDownload, setIsExcelDownload] = useState(false);
const excelClick = useCallback(() => { const excelClick = useCallback(() => {
excelDownload( excelDownload(
@@ -81,20 +80,20 @@ export default function LdrmntCoSttn() {
const excelDownloadClick = useCallback(() => { const excelDownloadClick = useCallback(() => {
const cityNm = computeCityNm(); const cityNm = computeCityNm();
ldrmntSearch(true, 1, String(ldrmntResCount), cityNm, searchTxt || ""); ldrmntSearch(true, 1, String(ldrmntResCount), cityNm, searchTxt || "");
// setIsExcelDownload(true);
}, [objSearch, searchTxt, code, ldrmntSearch, computeCityNm, ldrmntResCount]); }, [objSearch, searchTxt, code, ldrmntSearch, computeCityNm, ldrmntResCount]);
useEffect(() => { useEffect(() => {
if (/*isExcelDownload &&*/ excelData && excelData.length > 0) { if (excelData && excelData.length > 0) {
downloadExcel({ downloadExcel({
data: excelData, data: excelData,
fileName: "잠재수요처 관리", fileName: "잠재수요처 관리",
sheetNameArray: ["Sheet1"], sheetNameArray: ["Sheet1"],
headerRange: "A1:F1" headerRange: "A1:F1"
}); });
// setIsExcelDownload(false); } else {
toast.error(t('excelDownErrMsg'));
} }
}, [excelData, /*isExcelDownload*/]); }, [excelData]);
const [isExcelOpen, setIsExcelOpen] = useState<{ const [isExcelOpen, setIsExcelOpen] = useState<{
isModal: boolean; isModal: boolean;
@@ -10,11 +10,10 @@ import {
ScrollArea, ScrollArea,
SearchDiv, SearchDiv,
SearchFormLeft, SearchFormLeft,
SearchFormRight,
SearchInput, SearchInput,
Title, Title,
UiModal, UiModal,
UiTable, UiTable
} from "@common/business_components"; } from "@common/business_components";
import ListDiv from "@common/business_components/ui/list_div"; import ListDiv from "@common/business_components/ui/list_div";
import { Button } from "@common/components"; import { Button } from "@common/components";
@@ -97,15 +96,13 @@ export default function Home() {
<SearchDiv> <SearchDiv>
<SearchFormLeft> <SearchFormLeft>
<SearchInput <SearchInput
className="col-span-3 my-7 !text-3xl" className="col-span-3 !text-3xl"
label="시설명" label="시설명"
textValue={searchTxt || ""} textValue={searchTxt || ""}
setText={(e) => { setText={(e) => {
setSearchTxt(e); setSearchTxt(e);
}} }}
/> />
</SearchFormLeft>
<SearchFormRight>
<div className="flex flex-row space-x-2 items-center"> <div className="flex flex-row space-x-2 items-center">
<Button <Button
size={"sm"} size={"sm"}
@@ -123,7 +120,9 @@ export default function Home() {
신규등록 신규등록
</Button> </Button>
</div> </div>
</SearchFormRight> </SearchFormLeft>
{/* <SearchFormRight>
</SearchFormRight> */}
</SearchDiv> </SearchDiv>
</div> </div>
</div> </div>
@@ -146,7 +145,7 @@ export default function Home() {
</div> </div>
<div className="col-span-2 max-h-full"> <div className="col-span-2 max-h-full">
<ListDiv> <ListDiv>
<ScrollArea className="h-[60vh]"> <ScrollArea className="h-[65vh]">
<HtdflRegForm <HtdflRegForm
htdflForm={htdflForm ?? ({} as customHtdflBdst)} htdflForm={htdflForm ?? ({} as customHtdflBdst)}
isModal={false} isModal={false}
@@ -271,7 +271,7 @@ export default function PublicReuseFaciltyInsert() {
<SearchDiv> <SearchDiv>
<SearchFormLeft> <SearchFormLeft>
<SearchInput <SearchInput
className={"col-span-3 my-7 !text-3xl"} className={"col-span-3 !text-3xl"}
label="시설명" label="시설명"
textValue={searchTxt || ""} textValue={searchTxt || ""}
setText={(e) => { setText={(e) => {
@@ -316,10 +316,10 @@ export default function PublicReuseFaciltyInsert() {
</div> </div>
</div> </div>
<div className="grid grid-cols-8 gap-4 h-full"> <div className="grid grid-cols-8 gap-4">
<div className="col-span-5 h-full min-h-0"> <div className="col-span-5 h-full min-h-0">
<ListDiv className="min-h-0"> <ListDiv className="min-h-0">
<ScrollArea className="h-[60vh]"> {/* <ScrollArea className="h-[60vh]"> */}
{" "} {" "}
{/* 높이 조정 */} {/* 높이 조정 */}
<UiTable <UiTable
@@ -332,10 +332,10 @@ export default function PublicReuseFaciltyInsert() {
onPageChange={setPageNation} onPageChange={setPageNation}
resetPageNo={resetPage} resetPageNo={resetPage}
/> />
</ScrollArea> {/* </ScrollArea> */}
</ListDiv> </ListDiv>
</div> </div>
<ListDiv className="col-span-3 pr-6 "> <ListDiv className="col-span-3 pr-6">
{formWatch && formWatch[0]?.pbnstRuseFcltId ? ( {formWatch && formWatch[0]?.pbnstRuseFcltId ? (
<Tabs defaultValue="mng" onValueChange={handleTabChange}> <Tabs defaultValue="mng" onValueChange={handleTabChange}>
<div className="flex justify-between items-center"> <div className="flex justify-between items-center">
@@ -86,7 +86,7 @@ export default function Home() {
<SearchDiv> <SearchDiv>
<SearchFormLeft> <SearchFormLeft>
<SearchInput <SearchInput
className={"col-span-3 my-7 !text-3xl"} className={"col-span-3 !text-3xl"}
label="건물명" label="건물명"
textValue={searchTxt || ""} textValue={searchTxt || ""}
setText={(e) => { setText={(e) => {
@@ -137,9 +137,9 @@ export default function Home() {
{/* </ScrollArea> */} {/* </ScrollArea> */}
</ListDiv> </ListDiv>
</div> </div>
<div className="col-span-2 max-h-full"> <div className="col-span-2 max-h-full">
<ListDiv className=""> <ListDiv className="">
<ScrollArea className="h-[60vh]"> <ScrollArea className="h-[65vh]">
<RainRegForm <RainRegForm
rainForm={rainForm ?? ({} as customRainBdst)} rainForm={rainForm ?? ({} as customRainBdst)}
isModal={false} isModal={false}
@@ -9,11 +9,10 @@ import {
ScrollArea, ScrollArea,
SearchDiv, SearchDiv,
SearchFormLeft, SearchFormLeft,
SearchFormRight,
SearchInput, SearchInput,
Title, Title,
UiModal, UiModal,
UiTable, UiTable
} from "@common/business_components"; } from "@common/business_components";
import ListDiv from "@common/business_components/ui/list_div"; import ListDiv from "@common/business_components/ui/list_div";
import { Button } from "@common/components"; import { Button } from "@common/components";
@@ -94,19 +93,17 @@ export default function Home() {
<SearchDiv> <SearchDiv>
<SearchFormLeft> <SearchFormLeft>
<SearchInput <SearchInput
className="col-span-3 my-7" className="col-span-3"
label="건물명" label="건물명"
textValue={searchTxt || ""} textValue={searchTxt || ""}
setText={(e) => { setText={(e) => {
setSearchTxt(e); setSearchTxt(e);
}} }}
/> />
</SearchFormLeft> <div className="flex flex-row space-x-2 items-center">
<SearchFormRight>
<div className="flex flex-row space-x-2">
<Button <Button
size={"sm"} size={"sm"}
className="mr-4 " className=""
onClick={() => { onClick={() => {
rswtBdstSearch(searchTxt || "", pageNation, "41"); rswtBdstSearch(searchTxt || "", pageNation, "41");
}} }}
@@ -121,7 +118,9 @@ export default function Home() {
신규등록 신규등록
</Button> </Button>
</div> </div>
</SearchFormRight> </SearchFormLeft>
{/* <SearchFormRight>
</SearchFormRight> */}
</SearchDiv> </SearchDiv>
</div> </div>
</div> </div>
@@ -137,12 +136,13 @@ export default function Home() {
headName={"건축물 목록"} headName={"건축물 목록"}
cellClick={cellClick} cellClick={cellClick}
onPageChange={setPageNation} onPageChange={setPageNation}
index={0}
></UiTable> ></UiTable>
</ListDiv> </ListDiv>
</div> </div>
<div className="col-span-2 max-h-full"> <div className="col-span-2 max-h-full">
<ListDiv> <ListDiv className="">
<ScrollArea className="h-[60vh]"> <ScrollArea className="h-[65vh]">
<RswtrRegForm <RswtrRegForm
rswtForm={rswtForm ?? ({} as customRswtBdst)} rswtForm={rswtForm ?? ({} as customRswtBdst)}
isModal={false} isModal={false}
@@ -118,7 +118,7 @@ export const htdflFacStateExport: htdflFacState = {
const initFetch = async (code: string) => { const initFetch = async (code: string) => {
let url = `/drain/facilityList/1/10` let url = `/drain/facilityList/1/11`
url+=`/${code}` url+=`/${code}`
@@ -134,7 +134,7 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
try { try {
const htdflRes = await getFetchWithCount( const htdflRes = await getFetchWithCount(
"wr", "wr",
`/drain/facilityList/${pageNation}/10/${code}` `/drain/facilityList/${pageNation}/11/${code}`
); );
return set((state: htdflFacState) => ({ return set((state: htdflFacState) => ({
...state, ...state,
@@ -176,7 +176,7 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
} }
const htdflRes = await getFetchWithCount( const htdflRes = await getFetchWithCount(
"wr", "wr",
`/drain/facilityList/1/10/${code}` `/drain/facilityList/1/11/${code}`
); );
set((state: htdflFacState) => ({ set((state: htdflFacState) => ({
...state, ...state,
@@ -219,7 +219,7 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
} }
},htdflNmSearch :async(code:string | number, fcltNm:string) =>{ },htdflNmSearch :async(code:string | number, fcltNm:string) =>{
try { try {
const htdflRes = await getFetchWithCount("wr", `/drain/facilityList/1/10/${code}/${fcltNm}`); const htdflRes = await getFetchWithCount("wr", `/drain/facilityList/1/11/${code}/${fcltNm}`);
set((state: htdflFacState) => { set((state: htdflFacState) => {
return { return {
...state, ...state,
@@ -105,7 +105,7 @@ const checkWrRegList = async () => {
const hasuListFetch = async (page: string, sggOrCity: string, searchTxt?:string) => { const hasuListFetch = async (page: string, sggOrCity: string, searchTxt?:string) => {
const checkWrRegListRes = await checkWrRegList(); const checkWrRegListRes = await checkWrRegList();
let url = `/prcsFclt/ruseInfo/${page ? page : 1}/10/A/${sggOrCity? sggOrCity : "11"}/0/1/SW`; let url = `/prcsFclt/ruseInfo/${page ? page : 1}/11/A/${sggOrCity? sggOrCity : "11"}/0/1/SW`;
const data = checkWrRegListRes.filter((item:string) => item !== "") const data = checkWrRegListRes.filter((item:string) => item !== "")
@@ -5,24 +5,24 @@ import { z } from "zod";
import { makeMdfr, makeRstr } from "../bdstReg"; import { makeMdfr, makeRstr } from "../bdstReg";
import { baseReuseBuildingSchema, chgBuildingSchema, validationMessages } from "./type"; import { baseReuseBuildingSchema, chgBuildingSchema, validationMessages } from "./type";
export const TEST_UUID= '2d4b151d-1828-41e0-91d9-4cd28ea1cc7e' export const TEST_UUID = '2d4b151d-1828-41e0-91d9-4cd28ea1cc7e'
const rainyObjSchema = z.object({ const rainyObjSchema = z.object({
bdstReuseFcltFk: z.number().nullish(), bdstReuseFcltFk: z.number().nullish(),
pntfColKnd: z.string().min(1, { message: validationMessages.requiredSelect("종류") }), pntfColKnd: z.string().min(1, { message: validationMessages.requiredSelect("종류") }),
pntfColArea: z.number().nullish() , pntfColArea: z.number().nullish(),
dtfcltCpct: z.number().default(0), dtfcltCpct: z.number().default(0),
filtrTrtmfctYn: z.string().default("Y"), filtrTrtmfctYn: z.string().default("Y"),
filtrTrtmfctCpct: z.number().nullish().default(0), filtrTrtmfctCpct: z.number().nullish().default(0),
filtrTrtmfctPrs: z.string().default(""), filtrTrtmfctPrs: z.string().default(""),
annRnwtQty: z.number().default(0), annRnwtQty: z.number().default(0),
oilqMeasMthd: z.string().default("").nullish(), oilqMeasMthd: z.string().default("").nullish(),
rgtr:z.string().nullish(), rgtr: z.string().nullish(),
mdfr:z.string().nullish(), mdfr: z.string().nullish(),
}); });
const rainBuildingSchema = baseReuseBuildingSchema.extend({ const rainBuildingSchema = baseReuseBuildingSchema.extend({
rainyObj: rainyObjSchema, rainyObj: rainyObjSchema,
}) })
@@ -36,21 +36,21 @@ export const rainZod = z.object({
archChgPrmsnDt: z.coerce.date().nullish().default(null), archChgPrmsnDt: z.coerce.date().nullish().default(null),
archArea: z.string().default(''), archArea: z.string().default(''),
archChgArea: z.number().default(0), archChgArea: z.number().default(0),
rgtr:z.string().nullish(), rgtr: z.string().nullish(),
mdfr:z.string().nullish(), mdfr: z.string().nullish(),
reuseBuilding: z.array(rainBuildingSchema).default([]), reuseBuilding: z.array(rainBuildingSchema).default([]),
chgBuilding: z.array(chgBuildingSchema).default([]) chgBuilding: z.array(chgBuildingSchema).default([])
}) })
export type chgBuilding={ export type chgBuilding = {
bdstInfoSn?: number|null, bdstInfoSn?: number | null,
archChgPrmsnDt?: Date, archChgPrmsnDt?: Date,
archChgArea?: string, archChgArea?: string,
bdstChgNm?: string bdstChgNm?: string
rgtr?:string|null; rgtr?: string | null;
mdfr?:string|null; mdfr?: string | null;
} }
export type customRainBdst = z.infer<typeof rainZod> export type customRainBdst = z.infer<typeof rainZod>
export const upHeadList: TableUpperProps[] = [ export const upHeadList: TableUpperProps[] = [
{ id: "cityText", title: "시도" }, { id: "cityText", title: "시도" },
@@ -74,16 +74,16 @@ export type rainFacState = {
isInit: boolean; isInit: boolean;
upHeadList: TableUpperProps[]; upHeadList: TableUpperProps[];
rainRes: customRainBdst[]; rainRes: customRainBdst[];
rainResCount:number; rainResCount: number;
}; };
}; };
type rainFacSActions = { type rainFacSActions = {
initRain: (code:string|number) => void; initRain: (code: string | number) => void;
getRainData:(pageNation:number, code:string|number) =>void; getRainData: (pageNation: number, code: string | number) => void;
rainSearch: (txt:string,pageNation:number,code:string|number) => void; rainSearch: (txt: string, pageNation: number, code: string | number) => void;
rainBdstReg: (data: customRainBdst, code:string|number) => void; rainBdstReg: (data: customRainBdst, code: string | number) => void;
rainBdstUpdate: (data: customRainBdst, code:string|number) => void; rainBdstUpdate: (data: customRainBdst, code: string | number) => void;
}; };
export type rainFacType = rainFacState & rainFacSActions; export type rainFacType = rainFacState & rainFacSActions;
@@ -92,42 +92,42 @@ export const rainFacStateExport: rainFacState = {
rain: { rain: {
isInit: false, isInit: false,
rainRes: rainRes, rainRes: rainRes,
rainResCount:1, rainResCount: 1,
upHeadList: upHeadList, upHeadList: upHeadList,
}, },
}; };
const initFetch = async (code:string|number) => { const initFetch = async (code: string | number) => {
// const rainRes =await getFetch("wr", `/reuseFc/rainyInfoList/1/10/${code}`); // const rainRes =await getFetch("wr", `/reuseFc/rainyInfoList/1/10/${code}`);
const rainRes =await getFetchWithCount("wr", `/reuseFc/rainyInfoList/1/10/${code}`); const rainRes = await getFetchWithCount("wr", `/reuseFc/rainyInfoList/1/11/${code}`);
return rainRes; return rainRes;
}; };
export const rainFacActionsExport: (set: any) => rainFacSActions = ( export const rainFacActionsExport: (set: any) => rainFacSActions = (
set: any set: any
) => { ) => {
return { return {
getRainData: async(pageNation:number, code:string|number) =>{ getRainData: async (pageNation: number, code: string | number) => {
try{ try {
const rainRes =await getFetchWithCount("wr", `/reuseFc/rainyInfoList/${pageNation}/10/${code}`); const rainRes = await getFetchWithCount("wr", `/reuseFc/rainyInfoList/${pageNation}/11/${code}`);
// 여기서 상태 업데이트
return set((state: rainFacState) => ({
...state,
rain: {
...state.rain,
rainRes: rainRes.data,
rainResCount:rainRes.count,
isInit: false,
},
}));
}catch(e){ // 여기서 상태 업데이트
console.log(e) return set((state: rainFacState) => ({
...state,
rain: {
...state.rain,
rainRes: rainRes.data,
rainResCount: rainRes.count,
isInit: false,
},
}));
} } catch (e) {
console.log(e)
}
}, },
initRain: async (code:string|number) => { initRain: async (code: string | number) => {
try { try {
// 파라이터 수정 통합관리자 =0, 시관리자=시코드, 시군구 관리자= 시군구 코드 를 세번째 파라미터로 지정 / 건축물 서치가 있을경우 4번째 파라미터로 던지기 즉 1/20/42(서울시)/영현빌딩 이런식으로) // 파라이터 수정 통합관리자 =0, 시관리자=시코드, 시군구 관리자= 시군구 코드 를 세번째 파라미터로 지정 / 건축물 서치가 있을경우 4번째 파라미터로 던지기 즉 1/20/42(서울시)/영현빌딩 이런식으로)
const rainRes = await initFetch(code); const rainRes = await initFetch(code);
@@ -137,60 +137,61 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = (
rain: { rain: {
...state.rain, ...state.rain,
rainRes: rainRes.data, rainRes: rainRes.data,
rainResCount:rainRes.count, rainResCount: rainRes.count,
isInit: false, isInit: false,
}, },
})); }));
} catch (error) { } catch (error) {
console.log("error", error); console.log("error", error);
} }
}, },
rainSearch: async(txt:string,pageNation:number) =>{ rainSearch: async (txt: string, pageNation: number) => {
try{ try {
// const rainRes = await getFetch('wr' , `/reuseFc/rainyInfoList/${pageNation}/20/41` +(txt? `/${txt}`:'')) // const rainRes = await getFetch('wr' , `/reuseFc/rainyInfoList/${pageNation}/20/41` +(txt? `/${txt}`:''))
const rainRes = await getFetchWithCount('wr' , `/reuseFc/rainyInfoList/${pageNation}/20/41` +(txt? `/${txt}`:'')) const rainRes = await getFetchWithCount('wr', `/reuseFc/rainyInfoList/${pageNation}/11/41` + (txt ? `/${txt}` : ''))
console.log("rainRes", rainRes) console.log("rainRes", rainRes)
set((state: rainFacState) => { set((state: rainFacState) => {
return { return {
rain: { rain: {
...state.rain, ...state.rain,
rainRes: rainRes.data, rainRes: rainRes.data,
rainResCount:rainRes.count, rainResCount: rainRes.count,
isInit: false, isInit: false,
}, },
}; };
})} })
catch(erTxt){ }
console.log("error", erTxt) catch (erTxt) {
} console.log("error", erTxt)
}, }
rainBdstReg: async (data: customRainBdst,code:string|number) => { },
rainBdstReg: async (data: customRainBdst, code: string | number) => {
try { try {
const test =await makeRstr(data); const test = await makeRstr(data);
const res = await postFectch("/reuseFc/rainyInfo", test); const res = await postFectch("/reuseFc/rainyInfo", test);
if(res.status===200){ if (res.status === 200) {
if(data.chgBuilding.length > 0){ if (data.chgBuilding.length > 0) {
const chPK = res?.data?.bdstInfoSn
const makeCh= res.data.chgBuilding.map((item: chgBuilding) =>
( {
...item,
bdstInfoSn: chPK,
})
);
const chch= await postFectch("/reuseFc/chgBuilding", makeCh);
if(chch.status ===200) { const chPK = res?.data?.bdstInfoSn
toast.success("건축물 등록이 완료되었습니다."); const makeCh = res.data.chgBuilding.map((item: chgBuilding) =>
}else{ ({
toast.error("건축물 증축/개축/중축 오류입니다."); ...item,
} bdstInfoSn: chPK,
}else{ })
);
const chch = await postFectch("/reuseFc/chgBuilding", makeCh);
if (chch.status === 200) {
toast.success("건축물 등록이 완료되었습니다.");
} else {
toast.error("건축물 증축/개축/중축 오류입니다.");
}
} else {
toast.success("건축물 등록이 완료되었습니다."); toast.success("건축물 등록이 완료되었습니다.");
} }
}else{ } else {
toast.error("건축물 등록이 완료되었습니다."); toast.error("건축물 등록이 완료되었습니다.");
} }
const rainRes = await initFetch(code); const rainRes = await initFetch(code);
@@ -199,7 +200,7 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = (
rain: { rain: {
...state.rain, ...state.rain,
rainRes: rainRes.data, rainRes: rainRes.data,
rainResCount:rainRes.count, rainResCount: rainRes.count,
isInit: false, isInit: false,
}, },
})); }));
@@ -209,21 +210,49 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = (
} finally { } finally {
} }
}, },
rainBdstUpdate: async (data: customRainBdst,code:string|number) => { rainBdstUpdate: async (data: customRainBdst, code: string | number) => {
try { try {
const chData =await makeMdfr(data); const chData = await makeMdfr(data);
const res = await putFectch("/reuseFc/rainyInfo", chData); const res = await putFectch("/reuseFc/rainyInfo", chData);
if(res.status === 200){ console.log("res", res)
toast.success("수정이 완료되었습니다."); console.log("data", data)
if (res.status === 200) {
if (data.chgBuilding.length > 0) {
const chPK = data?.bdstInfoSn;
console.log("chPK", chPK)
const makeCh = data.chgBuilding.map((item: chgBuilding) =>
({
...item,
bdstInfoSn: chPK,
})
);
console.log("makeCh", makeCh)
const chch = await postFectch("/reuseFc/chgBuilding", makeCh);
console.log("chch", chch)
if (chch.status === 200) {
toast.success("건축물 수정이 완료되었습니다.");
} else {
toast.error("건축물 증축/개축/중축 오류입니다.");
}
} else {
toast.success("건축물 수정이 완료되었습니다.");
}
} else {
toast.error("건축물 수정이 완료되었습니다.");
} }
// }
// toast.success("수정이 완료되었습니다.");
// }
const rainRes = await initFetch(code); const rainRes = await initFetch(code);
set((state: rainFacState) => ({ set((state: rainFacState) => ({
...state, ...state,
rain: { rain: {
...state.rain, ...state.rain,
rainRes: rainRes.data, rainRes: rainRes.data,
rainResCount:rainRes.count, rainResCount: rainRes.count,
isInit: false, isInit: false,
}, },
})); }));
@@ -233,5 +262,6 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = (
} finally { } finally {
} }
} }
}} }
}
@@ -7,7 +7,7 @@ import { z } from "zod";
import { makeMdfr, makeRstr } from "../bdstReg"; import { makeMdfr, makeRstr } from "../bdstReg";
import { baseReuseBuildingSchema, chgBuildingSchema, validationMessages } from "../rainReg/type"; import { baseReuseBuildingSchema, chgBuildingSchema, validationMessages } from "../rainReg/type";
const rswtrObjSchema = z.object({ const rswtrObjSchema = z.object({
bdstRuseFcltSn: z.number().nullish(), bdstRuseFcltSn: z.number().nullish(),
//wtrUsqty: z.number({ required_error: validationMessages.required("물사용량(m³)") }).positive({ message: validationMessages.required("물사용량(m³)") }), //wtrUsqty: z.number({ required_error: validationMessages.required("물사용량(m³)") }).positive({ message: validationMessages.required("물사용량(m³)") }),
//oblgTrgtWtrUsqty: z.number().nullish().default(0), //oblgTrgtWtrUsqty: z.number().nullish().default(0),
@@ -24,7 +24,7 @@ import { baseReuseBuildingSchema, chgBuildingSchema, validationMessages } from "
mdfr: z.string().nullish().default(null), mdfr: z.string().nullish().default(null),
}); });
const rswtBuildingSchema = baseReuseBuildingSchema.extend({ const rswtBuildingSchema = baseReuseBuildingSchema.extend({
rswtrObj: rswtrObjSchema, rswtrObj: rswtrObjSchema,
}) })
@@ -57,7 +57,7 @@ export type rswtFacState = {
isInit: boolean; isInit: boolean;
upHeadList: TableUpperProps[]; upHeadList: TableUpperProps[];
rswtRes: customRswtBdst[]; rswtRes: customRswtBdst[];
rswtResCount:number; rswtResCount: number;
}; };
}; };
type rswtFacSActions = { type rswtFacSActions = {
@@ -79,12 +79,12 @@ export const rswtFacStateExport: rswtFacState = {
isInit: false, isInit: false,
upHeadList: upHeadList, upHeadList: upHeadList,
rswtRes: rswtRes, rswtRes: rswtRes,
rswtResCount:1, rswtResCount: 1,
}, },
}; };
const initFetch = async (code: string | number) => { const initFetch = async (code: string | number) => {
const rswtRes = await getFetchWithCount("wr", `/reuseFc/waterreuseFc/1/10/${code}`); const rswtRes = await getFetchWithCount("wr", `/reuseFc/waterreuseFc/1/11/${code}`);
return rswtRes; return rswtRes;
}; };
export const rswtFacActionsExport: (set: any) => rswtFacSActions = ( export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
@@ -99,8 +99,8 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
try { try {
const rswtRes = await getFetchWithCount( const rswtRes = await getFetchWithCount(
"wr", "wr",
`/reuseFc/waterreuseFc/${pageNation}/10/${code}` + `/reuseFc/waterreuseFc/${pageNation}/11/${code}` +
(txt ? `/${txt}` : "") (txt ? `/${txt}` : "")
); );
set((state: rswtFacState) => { set((state: rswtFacState) => {
return { return {
@@ -108,7 +108,7 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
rswt: { rswt: {
...state.rswt, ...state.rswt,
rswtRes: rswtRes.data, rswtRes: rswtRes.data,
rswtResCount:rswtRes.count, rswtResCount: rswtRes.count,
isInit: false, isInit: false,
}, },
}; };
@@ -121,7 +121,7 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
try { try {
const rswtRes = await getFetchWithCount( const rswtRes = await getFetchWithCount(
"wr", "wr",
`/reuseFc/waterreuseFc/${pageNation}/10/${code}` `/reuseFc/waterreuseFc/${pageNation}/11/${code}`
); );
console.log(pageNation); console.log(pageNation);
// 여기서 상태 업데이트 // 여기서 상태 업데이트
@@ -130,7 +130,7 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
rswt: { rswt: {
...state.rswt, ...state.rswt,
rswtRes: rswtRes.data, rswtRes: rswtRes.data,
rswtResCount:rswtRes.count, rswtResCount: rswtRes.count,
isInit: false, isInit: false,
}, },
})); }));
@@ -146,7 +146,7 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
rswt: { rswt: {
...state.rswt, ...state.rswt,
rswtRes: rswtRes.data, rswtRes: rswtRes.data,
rswtResCount:rswtRes.count, rswtResCount: rswtRes.count,
isInit: false, isInit: false,
}, },
})); }));
@@ -158,21 +158,41 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
try { try {
const chData = await makeMdfr(data); const chData = await makeMdfr(data);
const res = await putFectch("/reuseFc/waterreuseFc", chData); const res = await putFectch("/reuseFc/waterreuseFc", chData);
if (res.status ===200) { if (res.status === 200) {
toast.success("중수도 건축물 수정이 완료되었습니다."); if (data.chgBuilding.length > 0) {
const rswtRes = await initFetch(code); const chPK = data?.bdstInfoSn;
set((state: rswtFacState) => ({ const makeCh = data.chgBuilding.map((item: chgBuilding) =>
...state, ({
rswt: { ...item,
...state.rswt, bdstInfoSn: chPK,
rswtRes: rswtRes.data, })
rswtResCount:rswtRes.count, );
isInit: false, const chch = await postFectch("/reuseFc/chgBuilding", makeCh);
},
})); if (chch.status === 200) {
toast.success("중수도 건축물 수정이 완료되었습니다.");
} else {
toast.error("중수도 건축물 증축/개축/중축 오류입니다.");
}
} else {
toast.success("중수도 건축물 수정이 완료되었습니다.");
}
} else {
toast.error("중수도 건축물 수정이 완료되었습니다.");
} }
const rswtRes = await initFetch(code);
set((state: rswtFacState) => ({
...state,
rswt: {
...state.rswt,
rswtRes: rswtRes.data,
rswtResCount: rswtRes.count,
isInit: false,
},
}));
} catch (errorUpdate) { } catch (errorUpdate) {
toast.error("중수도 건축물 수정 오류입니다. "); toast.error("중수도 건축물 수정 오류입니다.");
console.error(errorUpdate); console.error(errorUpdate);
} finally { } finally {
} }
@@ -181,29 +201,29 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
try { try {
const chData = await makeRstr(data); const chData = await makeRstr(data);
const res = await postFectch("/reuseFc/waterreuseFc", chData); const res = await postFectch("/reuseFc/waterreuseFc", chData);
if (res.status===200) { if (res.status === 200) {
if(data.chgBuilding.length>0 ){ if (data.chgBuilding.length > 0) {
const chPK = res?.data?.bdstInfoSn
const makeCh= res.data.chgBuilding.map((item: chgBuilding) =>
( {
...item,
bdstInfoSn: chPK,
})
);
const chch= await postFectch("/reuseFc/chgBuilding", makeCh);
if(chch.status ===200) { const chPK = res?.data?.bdstInfoSn
const makeCh = res.data.chgBuilding.map((item: chgBuilding) =>
({
...item,
bdstInfoSn: chPK,
})
);
const chch = await postFectch("/reuseFc/chgBuilding", makeCh);
console.log('chch.status' , chch.status) if (chch.status === 200) {
toast.success("건축물(중수도) 및 증축/개축/중축 등록이 완료되었습니다.");
}else{ console.log('chch.status', chch.status)
toast.error("건축물(중수도 증축/개축/중축 오류입니다."); toast.success("건축물(중수도) 및 증축/개축/중축 등록이 완료되었습니다.");
} } else {
toast.error("건축물(중수도 증축/개축/중축 오류입니다.");
}
} else { } else {
toast.success("건축물(중수도 등록이 완료되었습니다."); toast.success("건축물(중수도 등록이 완료되었습니다.");
} }
}else{ } else {
toast.error("건축물(중수도) 등록이 완료하였습니다."); toast.error("건축물(중수도) 등록이 완료하였습니다.");
} }
const rswtRes = await initFetch(code); const rswtRes = await initFetch(code);
@@ -212,7 +232,7 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
rain: { rain: {
...state.rswt, ...state.rswt,
rswtRes: rswtRes.data, rswtRes: rswtRes.data,
rswtResCount:rswtRes.count, rswtResCount: rswtRes.count,
isInit: false, isInit: false,
}, },
})); }));
@@ -104,7 +104,7 @@ export default function HtdflRegForm({
} else if (readonly === true) { } else if (readonly === true) {
setDivStyle("h-[62vh]") setDivStyle("h-[62vh]")
} else { } else {
setDivStyle("h-[53vh]") setDivStyle("h-[57vh]")
} }
}, [isModal, readonly]); }, [isModal, readonly]);
@@ -59,7 +59,7 @@ export default function RainRegForm({
} else if (readonly === true) { } else if (readonly === true) {
setDivStyle("h-[62vh]") setDivStyle("h-[62vh]")
} else { } else {
setDivStyle("h-[53vh]") setDivStyle("h-[57vh]")
} }
}, [isModal, readonly]); }, [isModal, readonly]);
@@ -50,7 +50,7 @@ export default function RswtrRegForm({
} else if (readonly === true) { } else if (readonly === true) {
setDivStyle("h-[62vh]") setDivStyle("h-[62vh]")
} else { } else {
setDivStyle("h-[53vh]") setDivStyle("h-[57vh]")
} }
}, [isModal, readonly]); }, [isModal, readonly]);
// const defaultValues: z.infer<typeof rswtZod> = rswtZod.parse({}); // const defaultValues: z.infer<typeof rswtZod> = rswtZod.parse({});