Merge branch 'iipbs/sn/dev' of https://www.onasys.co.kr:3000/ONAANDALL/frontend into iipbs/sn/dev

This commit is contained in:
2026-02-23 10:01:57 +09:00
23 changed files with 188 additions and 647 deletions
@@ -1,6 +1,7 @@
"use client"; "use client";
import { useWrStore } from "@/app/store"; import { useWrStore } from "@/app/store";
import { btnClass } from "@/app/store/common/code";
import { usageProcData } from "@/app/store/matDmd/coMatRvw/headList"; import { usageProcData } from "@/app/store/matDmd/coMatRvw/headList";
import { import {
DmdCoReqSchema, DmdCoReqSchema,
@@ -148,9 +149,12 @@ export default function CoMatRvw() {
const getSelCity = (val: string | number) => { const getSelCity = (val: string | number) => {
const cityValue = String(val); // Ensure val is treated as a string const cityValue = String(val); // Ensure val is treated as a string
const data = getCity(cityValue, code.sggCd); const data =
cityValue === "0"
? [{ val: "0", text: "전체" }]
: getCity(cityValue, code.sggCd);
setSelectSgg(data); setSelectSgg(data);
setObjSearch({ city: cityValue, sgg: "" }); setObjSearch({ city: cityValue, sgg: "0" });
}; };
const getSgg = (val: string | number) => { const getSgg = (val: string | number) => {
@@ -191,6 +195,7 @@ export default function CoMatRvw() {
selectClass={""} selectClass={""}
selectArray={code.cityCd || []} selectArray={code.cityCd || []}
onSelectValue={getSelCity} onSelectValue={getSelCity}
value={objSearch.city}
/> />
<SelectBox <SelectBox
className="col-span-2 w-1/3 h-full text-2xl ml-4" className="col-span-2 w-1/3 h-full text-2xl ml-4"
@@ -198,6 +203,7 @@ export default function CoMatRvw() {
selectClass={""} selectClass={""}
selectArray={selectSgg || []} selectArray={selectSgg || []}
onSelectValue={getSgg} onSelectValue={getSgg}
value={objSearch.sgg}
/> />
<div className="col-span-7 w-full"> <div className="col-span-7 w-full">
<div className="flex flex-row items-center"> <div className="flex flex-row items-center">
@@ -241,7 +247,7 @@ export default function CoMatRvw() {
<div className="space-y"> <div className="space-y">
<div className="flex flex-row w-full justify-end space-x-2 mt-6"> <div className="flex flex-row w-full justify-end space-x-2 mt-6">
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
if (fromDate && toDate) { if (fromDate && toDate) {
const fromNum = Number(fromDate); const fromNum = Number(fromDate);
@@ -1,6 +1,7 @@
"use client"; "use client";
import { useWrStore } from "@/app/store"; import { useWrStore } from "@/app/store";
import { btnClass } from "@/app/store/common/code";
import { ruseUtzType } from "@/app/store/matDmd/ruseCaseMng/headList"; import { ruseUtzType } from "@/app/store/matDmd/ruseCaseMng/headList";
import { excelDownload, getCity } from "@/components/lib/func/commom"; import { excelDownload, getCity } from "@/components/lib/func/commom";
import RuseCaseMngExcel from "@/components/ui/modal/coMat/ruseCaseMng/ruseCaseMngExcelModal"; import RuseCaseMngExcel from "@/components/ui/modal/coMat/ruseCaseMng/ruseCaseMngExcelModal";
@@ -60,9 +61,13 @@ export default function RuseCaseMng() {
(item: { val: string; text: string }) => item.val === cityValue (item: { val: string; text: string }) => item.val === cityValue
)?.text; )?.text;
setSidoCd(cityText || ""); setSidoCd(cityText || "");
const data = getCity(cityValue, code.sggCd); const data =
cityValue === "0"
? [{ val: "0", text: "전체" }]
: getCity(cityValue, code.sggCd);
setSelectSgg(data); setSelectSgg(data);
setObjSearch({ city: cityValue, sgg: "" }); setSigunguCd("");
setObjSearch({ city: cityValue, sgg: "0" });
}; };
// 시군구 선택 // 시군구 선택
@@ -198,6 +203,7 @@ export default function RuseCaseMng() {
selectClass={""} selectClass={""}
selectArray={code.cityCd || []} selectArray={code.cityCd || []}
onSelectValue={getSelCity} onSelectValue={getSelCity}
value={objSearch.city}
/> />
<SelectBox <SelectBox
className="col-span-2 w-1/3 h-full text-2xl ml-4" className="col-span-2 w-1/3 h-full text-2xl ml-4"
@@ -205,6 +211,7 @@ export default function RuseCaseMng() {
selectClass={""} selectClass={""}
selectArray={selectSgg || []} selectArray={selectSgg || []}
onSelectValue={getSgg} onSelectValue={getSgg}
value={objSearch.sgg}
/> />
<SelectBox <SelectBox
className="col-span-2 w-1/3 h-full text-2xl ml-4" className="col-span-2 w-1/3 h-full text-2xl ml-4"
@@ -216,7 +223,7 @@ export default function RuseCaseMng() {
}} }}
value={selectUtz || ruseUtzType[0]?.val} value={selectUtz || ruseUtzType[0]?.val}
/> />
<Label className="w-28 text-xl ml-4 mr-6">{"수요처명"}</Label> <Label className="w-fit shrink-0 whitespace-nowrap self-center ml-4 mr-2">{"수요처명"}</Label>
<SearchInput <SearchInput
className={"col-span-2 w-1/3 text-2xl"} className={"col-span-2 w-1/3 text-2xl"}
label="" label=""
@@ -231,7 +238,7 @@ export default function RuseCaseMng() {
<div className="space-y"> <div className="space-y">
<div className="flex flex-row space-x-2"> <div className="flex flex-row space-x-2">
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
selectRuseCaseMng( selectRuseCaseMng(
false, false,
@@ -249,7 +256,7 @@ export default function RuseCaseMng() {
조회 조회
</Button> </Button>
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
setIsExcelOpen(true); setIsExcelOpen(true);
}} }}
@@ -257,7 +264,7 @@ export default function RuseCaseMng() {
엑셀등록 엑셀등록
</Button> </Button>
<Button <Button
size={"sm"} className={`${btnClass} green`}
onClick={() => { onClick={() => {
selectRuseCaseMng( selectRuseCaseMng(
true, true,
@@ -270,12 +277,11 @@ export default function RuseCaseMng() {
); );
// download() // download()
}} }}
className={"green"}
> >
다운로드 엑셀다운로드
</Button> </Button>
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
excelDownload( excelDownload(
[[]], [[]],
@@ -341,4 +347,3 @@ export default function RuseCaseMng() {
</> </>
); );
} }
@@ -1,6 +1,7 @@
"use client"; "use client";
import { useWrStore } from "@/app/store"; import { useWrStore } from "@/app/store";
import { btnClass } from "@/app/store/common/code";
import { type RvwHistTableType } from "@/app/store/matDmd/coMatRvw/type"; import { type RvwHistTableType } from "@/app/store/matDmd/coMatRvw/type";
import { import {
confirmToast, confirmToast,
@@ -61,7 +62,10 @@ export default function RuseRvwHstry() {
const getSelCity = (val: string | number) => { const getSelCity = (val: string | number) => {
const cityValue = String(val); // Ensure val is treated as a string const cityValue = String(val); // Ensure val is treated as a string
const data = getCity(cityValue, code.sggCd); const data =
cityValue === "0"
? [{ val: "0", text: "전체" }]
: getCity(cityValue, code.sggCd);
setSelectSgg(data); setSelectSgg(data);
setObjSearch({ city: cityValue, sgg: "0" }); setObjSearch({ city: cityValue, sgg: "0" });
}; };
@@ -239,6 +243,7 @@ export default function RuseRvwHstry() {
selectClass={""} selectClass={""}
selectArray={code.cityCd || []} selectArray={code.cityCd || []}
onSelectValue={getSelCity} onSelectValue={getSelCity}
value={objSearch.city}
> >
{""} {""}
</SelectBox> </SelectBox>
@@ -248,6 +253,7 @@ export default function RuseRvwHstry() {
selectClass={""} selectClass={""}
selectArray={selectSgg || []} selectArray={selectSgg || []}
onSelectValue={getSgg} onSelectValue={getSgg}
value={objSearch.sgg}
> >
{""} {""}
</SelectBox> </SelectBox>
@@ -299,14 +305,14 @@ export default function RuseRvwHstry() {
<div className="space-y"> <div className="space-y">
<div className="flex flex-row space-x-2"> <div className="flex flex-row space-x-2">
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
getButtonSearch(); getButtonSearch();
}} }}
> >
조회 조회
</Button> </Button>
<Button size={"sm"} onClick={confrirmToast} disabled={regAuthrtYn==='N'}> <Button className={btnClass} onClick={confrirmToast} disabled={regAuthrtYn==='N'}>
저장 저장
</Button> </Button>
</div> </div>
@@ -69,7 +69,10 @@ export default function CoSttn() {
const getSelCity = useCallback( const getSelCity = useCallback(
(val: string | number) => { (val: string | number) => {
const cityValue = String(val); const cityValue = String(val);
const data = getCity(cityValue, code.sggCd); const data =
cityValue === "0"
? [{ val: "0", text: "전체" }]
: getCity(cityValue, code.sggCd);
setSelectSgg(data); setSelectSgg(data);
// 시/도를 변경하면 시/군/구는 '전체'("0")로 초기화합니다. // 시/도를 변경하면 시/군/구는 '전체'("0")로 초기화합니다.
setObjSearch({ city: cityValue, sgg: "0" }); setObjSearch({ city: cityValue, sgg: "0" });
@@ -216,11 +219,10 @@ export default function CoSttn() {
</SearchFormLeft> </SearchFormLeft>
<SearchFormRight className="w-3/12 mx-5 flex flex-col items-center justify-center space-x-2 "> <SearchFormRight className="w-3/12 mx-5 flex flex-col items-center justify-center space-x-2 ">
<div className="flex flex-row space-x-2"> <div className="flex flex-row space-x-2">
<Button className="mt-2" size={"sm"} onClick={searchClick}> <Button className={`${btnClass} mt-2`} onClick={searchClick}>
조회 조회
</Button> </Button>
<Button <Button
size={"sm"}
className={btnClass} className={btnClass}
onClick={() => { onClick={() => {
setIsResetSelection(true); setIsResetSelection(true);
@@ -232,7 +234,6 @@ export default function CoSttn() {
등록 등록
</Button> </Button>
<Button <Button
size={"sm"}
className={btnClass} className={btnClass}
onClick={() => { onClick={() => {
/* 저장 로직 */ /* 저장 로직 */
@@ -250,14 +251,12 @@ export default function CoSttn() {
수정 수정
</Button> </Button>
<Button <Button
size={"sm"}
className={`${btnClass} green`} className={`${btnClass} green`}
onClick={excelClick} onClick={excelClick}
> >
다운로드 엑셀다운로드
</Button> </Button>
<Button <Button
size={"sm"}
className={`${btnClass}`} className={`${btnClass}`}
onClick={(initPassword)} onClick={(initPassword)}
> >
@@ -357,4 +356,3 @@ export default function CoSttn() {
</> </>
); );
} }
@@ -187,7 +187,7 @@ export default function DrgtSttn() {
}} }}
selectClass="ml-4 text-2xl" selectClass="ml-4 text-2xl"
/> />
<span className="ml-2 text-center">~</span> <span className="ml-2 text-center self-center">~</span>
<DateMonthPicker <DateMonthPicker
field={{ field={{
value: toDate ?? "", value: toDate ?? "",
@@ -212,7 +212,7 @@ export default function DrgtSttn() {
className="w-2/12 mx-5 flex flex-col items-center justify-center space-x-2 "> className="w-2/12 mx-5 flex flex-col items-center justify-center space-x-2 ">
<div className="flex flex-row space-x-2 items-center"> <div className="flex flex-row space-x-2 items-center">
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
let sidoText: string = ''; let sidoText: string = '';
let sggText: string | string[] = ''; let sggText: string | string[] = '';
@@ -247,14 +247,12 @@ export default function DrgtSttn() {
조회 조회
</Button> </Button>
<Button <Button
size={"sm"}
className={`${btnClass} green`} className={`${btnClass} green`}
onClick={excelClick} onClick={excelClick}
> >
다운로드 엑셀다운로드
</Button> </Button>
<Button <Button
size={"sm"}
className={btnClass} className={btnClass}
onClick={onViewMapClick} onClick={onViewMapClick}
> >
@@ -209,7 +209,7 @@ export default function LdrmntCoSttn() {
className="w-2/12 mx-5 flex flex-col items-center justify-center space-x-2 "> className="w-2/12 mx-5 flex flex-col items-center justify-center space-x-2 ">
<div className="flex flex-row space-x-2 items-center"> <div className="flex flex-row space-x-2 items-center">
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
ldrmntSearch(false, pageNation, '20', computeCityNm(), searchTxt || ""); ldrmntSearch(false, pageNation, '20', computeCityNm(), searchTxt || "");
isResetPage(true) isResetPage(true)
@@ -218,7 +218,6 @@ export default function LdrmntCoSttn() {
조회 조회
</Button> </Button>
<Button <Button
size={"sm"}
className={btnClass} className={btnClass}
onClick={() => { onClick={() => {
setIsExcelOpen({ isModal: true }); setIsExcelOpen({ isModal: true });
@@ -228,14 +227,12 @@ export default function LdrmntCoSttn() {
엑셀등록 엑셀등록
</Button> </Button>
<Button <Button
size={"sm"}
className={btnClass} className={btnClass}
onClick={() => excelDownloadClick()} onClick={() => excelDownloadClick()}
> >
다운로드 다운로드
</Button> </Button>
<Button <Button
size={"sm"}
className={`${btnClass} green`} className={`${btnClass} green`}
onClick={excelClick} onClick={excelClick}
> >
@@ -1,6 +1,7 @@
"use client"; "use client";
import { useWrStore } from "@/app/store"; import { useWrStore } from "@/app/store";
import { btnClass } from "@/app/store/common/code";
import type { customHtdflBdst } from "@/app/store/ruseFcltMng/fcltReg/htdflReg"; import type { customHtdflBdst } from "@/app/store/ruseFcltMng/fcltReg/htdflReg";
import { tableData } from "@/components/lib/func/commom"; import { tableData } from "@/components/lib/func/commom";
import HtdflRegForm from "@/components/ui/form/fcltReg/htdflReg/htdflRegForm"; import HtdflRegForm from "@/components/ui/form/fcltReg/htdflReg/htdflRegForm";
@@ -114,7 +115,7 @@ export default function Home() {
/> />
<div className="flex flex-row space-x-2 items-center"> <div className="flex flex-row space-x-2 items-center">
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
if (searchTxt && searchTxt.length > 0) { if (searchTxt && searchTxt.length > 0) {
htdflNmSearch(String(0), searchTxt); htdflNmSearch(String(0), searchTxt);
@@ -126,7 +127,7 @@ export default function Home() {
조회 조회
</Button> </Button>
<Button <Button
size={"sm"} className={btnClass}
onClick={() => setIsNewReg(!issNewReg)} onClick={() => setIsNewReg(!issNewReg)}
disabled={regAuthrtYn === "N"} disabled={regAuthrtYn === "N"}
> >
@@ -1,5 +1,6 @@
"use client"; "use client";
import { useWrStore } from "@/app/store"; import { useWrStore } from "@/app/store";
import { btnClass } from "@/app/store/common/code";
import { import {
rainRegSize, rainRegSize,
type customRainBdst, type customRainBdst,
@@ -126,8 +127,7 @@ export default function Home() {
/> />
<div className="flex flex-row space-x-2 items-center"> <div className="flex flex-row space-x-2 items-center">
<Button <Button
className="" className={btnClass}
size={"sm"}
onClick={() => { onClick={() => {
rainSearch(searchTxt || "", 1, laeSeCd); rainSearch(searchTxt || "", 1, laeSeCd);
//rainSearch(searchTxt || "", pageNation, "41"); //rainSearch(searchTxt || "", pageNation, "41");
@@ -136,8 +136,7 @@ export default function Home() {
조회 조회
</Button> </Button>
<Button <Button
size={"sm"} className={btnClass}
className=""
onClick={() => { onClick={() => {
setIsNewReg(!issNewReg); setIsNewReg(!issNewReg);
}} }}
@@ -1,5 +1,6 @@
"use client"; "use client";
import { useWrStore } from "@/app/store"; import { useWrStore } from "@/app/store";
import { btnClass } from "@/app/store/common/code";
import { import {
rswtRegSize, rswtRegSize,
type customRswtBdst, type customRswtBdst,
@@ -139,8 +140,7 @@ export default function Home() {
/> />
<div className="flex flex-row space-x-2 items-center"> <div className="flex flex-row space-x-2 items-center">
<Button <Button
size={"sm"} className={btnClass}
className=""
onClick={() => { onClick={() => {
rswtBdstSearch(searchTxt || "", pageNation,laeSeCd); rswtBdstSearch(searchTxt || "", pageNation,laeSeCd);
}} }}
@@ -148,8 +148,7 @@ export default function Home() {
조회 조회
</Button> </Button>
<Button <Button
size={"sm"} className={`${btnClass} mr-4`}
className="mr-4"
onClick={() => setIsNewReg(!issNewReg)} onClick={() => setIsNewReg(!issNewReg)}
disabled={regAuthrtYn === "N"} disabled={regAuthrtYn === "N"}
> >
@@ -183,7 +183,7 @@ export default function HtdflSttn() {
className="w-2/12 mx-5 flex flex-col items-center justify-center space-x-2 "> className="w-2/12 mx-5 flex flex-col items-center justify-center space-x-2 ">
<div className="flex flex-row space-x-2 items-center"> <div className="flex flex-row space-x-2 items-center">
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
htdflSttnSearch(false, 1,htdflSttnSize, String(getConValue()), fcltNm, code.cityCd, code.sggCd); htdflSttnSearch(false, 1,htdflSttnSize, String(getConValue()), fcltNm, code.cityCd, code.sggCd);
isResetPage(true) isResetPage(true)
@@ -192,14 +192,12 @@ export default function HtdflSttn() {
조회 조회
</Button> </Button>
<Button <Button
size={"sm"}
className={`${btnClass} green`} className={`${btnClass} green`}
onClick={excelClick} onClick={excelClick}
> >
다운로드 엑셀다운로드
</Button> </Button>
<Button <Button
size={"sm"}
className={btnClass} className={btnClass}
onClick={() => { onClick={() => {
setIsChHead(true); setIsChHead(true);
@@ -245,6 +243,7 @@ export default function HtdflSttn() {
...item, ...item,
visible: item.visible ?? false, visible: item.visible ?? false,
}))} }))}
onSaved={() => setIsChHead(false)}
/> />
} }
/> />
@@ -261,4 +260,3 @@ export default function HtdflSttn() {
</> </>
); );
} }
@@ -236,6 +236,7 @@ export default function PbnstSttn() {
...item, ...item,
visible: item.visible ?? false, visible: item.visible ?? false,
}))} }))}
onSaved={() => setIsChHead(false)}
/> />
} }
/> />
@@ -261,4 +262,3 @@ export default function PbnstSttn() {
</> </>
); );
} }
@@ -1,5 +1,5 @@
/** /**
* 빗물재이용시설 현황 * 빗물이용시설 현황
*/ */
"use client"; "use client";
import { useWrStore } from "@/app/store"; import { useWrStore } from "@/app/store";
@@ -160,7 +160,7 @@ export default function RainSttn() {
if (rainSttn.excelList.length > 0) { if (rainSttn.excelList.length > 0) {
excelDownload( excelDownload(
rainSttn.excelList, rainSttn.excelList,
"빗물재이용시설 현황", "빗물이용시설 현황",
"sample_rainSttn.xlsx", "sample_rainSttn.xlsx",
"A1:W3" "A1:W3"
); );
@@ -228,7 +228,7 @@ export default function RainSttn() {
<SearchFormRight className="w-2/12 mx-5 flex flex-col items-center justify-center space-x-2 "> <SearchFormRight className="w-2/12 mx-5 flex flex-col items-center justify-center space-x-2 ">
<div className="flex flex-row space-x-2 items-center"> <div className="flex flex-row space-x-2 items-center">
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
rainSttnSearch( rainSttnSearch(
false, false,
@@ -244,14 +244,12 @@ export default function RainSttn() {
조회 조회
</Button> </Button>
<Button <Button
size={"sm"}
className={`${btnClass} green`} className={`${btnClass} green`}
onClick={excelClick} onClick={excelClick}
> >
다운로드 엑셀다운로드
</Button> </Button>
<Button <Button
size={"sm"}
className={btnClass} className={btnClass}
onClick={() => { onClick={() => {
setIsChHead(true); setIsChHead(true);
@@ -286,9 +284,7 @@ export default function RainSttn() {
</div> </div>
<UiModal <UiModal
open={isChHead} open={isChHead}
onOpenChange={() => { onOpenChange={() => setIsChHead(!isChHead)}
setIsChHead(!isChHead);
}}
bodyClass={""} bodyClass={""}
body={ body={
<HeadChModal <HeadChModal
@@ -297,6 +293,7 @@ export default function RainSttn() {
...item, ...item,
visible: item.visible ?? false, visible: item.visible ?? false,
}))} }))}
onSaved={() => setIsChHead(false)}
/> />
} }
/> />
@@ -305,7 +302,7 @@ export default function RainSttn() {
onOpenChange={() => { onOpenChange={() => {
setDetailModal({ ...detailModal, isOpen: !detailModal.isOpen }); setDetailModal({ ...detailModal, isOpen: !detailModal.isOpen });
}} }}
bodyClass={"w-[40vw] max-w-none max-h-[calc(100%-70px)]"} bodyClass={"w-[40vw] max-w-none max-h-[calc(100%-70px)] overflow-y-auto"}
body={<SttnDetailModal type={"RNB"} formObj={detailModal.data} />} body={<SttnDetailModal type={"RNB"} formObj={detailModal.data} />}
/> />
</ContentsDiv> </ContentsDiv>
@@ -313,4 +310,3 @@ export default function RainSttn() {
</> </>
); );
} }
@@ -188,7 +188,7 @@ export default function RswtSttn() {
className="w-2/12 mx-5 flex flex-col items-center justify-center space-x-2 "> className="w-2/12 mx-5 flex flex-col items-center justify-center space-x-2 ">
<div className="flex flex-row space-x-2 items-center"> <div className="flex flex-row space-x-2 items-center">
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
rswtSttnSearch(false, 1, rswtSttnSize, String(getConValue()), fcltNm, code as unknown as Record<string, SelectDataType[]>); rswtSttnSearch(false, 1, rswtSttnSize, String(getConValue()), fcltNm, code as unknown as Record<string, SelectDataType[]>);
isResetPage(true) isResetPage(true)
@@ -197,14 +197,12 @@ export default function RswtSttn() {
조회 조회
</Button> </Button>
<Button <Button
size={"sm"}
className={`${btnClass} green`} className={`${btnClass} green`}
onClick={excelClick} onClick={excelClick}
> >
다운로드 엑셀다운로드
</Button> </Button>
<Button <Button
size={"sm"}
className={btnClass} className={btnClass}
onClick={() => { onClick={() => {
setIsChHead(true); setIsChHead(true);
@@ -248,6 +246,7 @@ export default function RswtSttn() {
visible: item.visible ?? false, visible: item.visible ?? false,
}))} }))}
type={"RST"} type={"RST"}
onSaved={() => setIsChHead(false)}
/> />
} }
/> />
@@ -265,4 +264,3 @@ export default function RswtSttn() {
</> </>
); );
} }
@@ -1,6 +1,7 @@
"use client"; "use client";
import { useWrStore } from "@/app/store"; import { useWrStore } from "@/app/store";
import { btnClass } from "@/app/store/common/code";
import { import {
rainPageSize, rainPageSize,
type rainChkZodType, type rainChkZodType,
@@ -273,7 +274,7 @@ export default function Page() {
<SearchDiv> <SearchDiv>
<SearchFormLeft> <SearchFormLeft>
<div className="col-span-2 flex flex-row space-x-2"> <div className="col-span-2 flex flex-row space-x-2">
<Label className="w-48 mt-2 text-xl text-gray-600"> <Label className="w-fit shrink-0 whitespace-nowrap self-center text-xl text-gray-600">
{"지도점검년도"} {"지도점검년도"}
</Label> </Label>
<SelectBox <SelectBox
@@ -288,7 +289,7 @@ export default function Page() {
/> />
</div> </div>
<div className="col-span-2 flex flex-row space-x-2"> <div className="col-span-2 flex flex-row space-x-2">
<Label className="w-28 mt-2 text-xl text-gray-600"> <Label className="w-fit shrink-0 whitespace-nowrap self-center text-xl text-gray-600 ">
{"시설구분"} {"시설구분"}
</Label> </Label>
<SelectBox <SelectBox
@@ -304,7 +305,7 @@ export default function Page() {
/> />
</div> </div>
<div className="col-span-2 flex flex-row space-x-2"> <div className="col-span-2 flex flex-row space-x-2">
<Label className="w-28 mt-2 text-xl text-gray-600"> <Label className="w-fit shrink-0 whitespace-nowrap self-center text-xl text-gray-600 ">
{"시설명"} {"시설명"}
</Label> </Label>
<SearchInput <SearchInput
@@ -315,11 +316,11 @@ export default function Page() {
/> />
</div> </div>
</SearchFormLeft> </SearchFormLeft>
<SearchFormRight className="w-2/12 mx-5 flex flex-col items-center justify-center space-x-2 "> <SearchFormRight className="w-3/12 mx-5 flex flex-col items-center justify-center space-x-2 ">
<div className="space-y"> <div className="space-y">
<div className="flex flex-row space-x-2"> <div className="flex flex-row space-x-2">
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
cellClick(); cellClick();
}} }}
@@ -327,7 +328,7 @@ export default function Page() {
조회 조회
</Button> </Button>
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
clickDelete(deleteIdx, selFcltDiv); clickDelete(deleteIdx, selFcltDiv);
}} }}
@@ -340,7 +341,7 @@ export default function Page() {
<Tooltip> <Tooltip>
<TooltipTrigger asChild> <TooltipTrigger asChild>
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
chkUpdateTable(selFcltDiv); chkUpdateTable(selFcltDiv);
}} }}
@@ -358,7 +359,7 @@ export default function Page() {
</TooltipProvider> </TooltipProvider>
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
setIsRegExcel(!isRegExcel); setIsRegExcel(!isRegExcel);
}} }}
@@ -366,7 +367,7 @@ export default function Page() {
> >
결과등록 결과등록
</Button> </Button>
<Button color="green" size={"sm"} onClick={excelClick}> <Button color="green" className={btnClass} onClick={excelClick}>
양식받기 양식받기
</Button> </Button>
</div> </div>
@@ -1,5 +1,6 @@
"use client"; "use client";
import { useWrStore } from "@/app/store"; import { useWrStore } from "@/app/store";
import { btnClass } from "@/app/store/common/code";
import { excelToPbnPrfData } from "@/app/store/prfmncReg/pbnstPrfmncReg/excel"; import { excelToPbnPrfData } from "@/app/store/prfmncReg/pbnstPrfmncReg/excel";
import { import {
initValInUsage, initValInUsage,
@@ -230,8 +231,8 @@ export default function PrfmncPrfmncReg() {
<div className="col-span-4"> <div className="col-span-4">
<SearchDiv> <SearchDiv>
<SearchFormLeft> <SearchFormLeft>
<div className="col-span-2 flex flex-row space-x-2"> <div className="col-span-3 flex flex-row space-x-2">
<Label className="w-48 mt-2 text-xl text-gray-600"> <Label className="w-fit shrink-0 whitespace-nowrap self-center text-xl text-gray-600 ">
{"실적등록년도"} {"실적등록년도"}
</Label> </Label>
<SelectBox <SelectBox
@@ -245,8 +246,8 @@ export default function PrfmncPrfmncReg() {
} }
/> />
</div> </div>
<div className="col-span-2 flex flex-row space-x-2"> <div className="col-span-3 flex flex-row space-x-2">
<Label className="w-28 mt-2 text-xl text-gray-600"> <Label className="w-fit shrink-0 whitespace-nowrap self-center text-xl text-gray-600">
{"시설명"} {"시설명"}
</Label> </Label>
<SearchInput <SearchInput
@@ -259,11 +260,11 @@ export default function PrfmncPrfmncReg() {
/> />
</div> </div>
</SearchFormLeft> </SearchFormLeft>
<SearchFormRight className="w-2/12 mx-5 flex flex-col items-center justify-center space-x-2 "> <SearchFormRight className="w-3/12 mx-5 flex flex-col items-center justify-center space-x-2 ">
<div className="space-y"> <div className="space-y">
<div className="flex flex-row space-x-2"> <div className="flex flex-row space-x-2">
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
setIsReset(true); setIsReset(true);
}} }}
@@ -271,7 +272,7 @@ export default function PrfmncPrfmncReg() {
조회 조회
</Button> </Button>
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
onSave(); onSave();
}} }}
@@ -280,7 +281,7 @@ export default function PrfmncPrfmncReg() {
저장 저장
</Button> </Button>
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
if (cellNum === undefined) { if (cellNum === undefined) {
toast.error("하수처리재이용시설을 선택해주세요."); toast.error("하수처리재이용시설을 선택해주세요.");
@@ -293,7 +294,7 @@ export default function PrfmncPrfmncReg() {
> >
파일등록 파일등록
</Button> </Button>
<Button color="green" size={"sm"} onClick={excelClick}> <Button color="green" className={btnClass} onClick={excelClick}>
양식받기 양식받기
</Button> </Button>
</div> </div>
@@ -1,6 +1,7 @@
"use client"; "use client";
import { useWrStore } from "@/app/store"; import { useWrStore } from "@/app/store";
import { btnClass } from "@/app/store/common/code";
import { rainPageSize } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn"; import { rainPageSize } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn";
import { rswtPageSize } from "@/app/store/prfmncReg/chkgdnReg/rswrtChkgdn"; import { rswtPageSize } from "@/app/store/prfmncReg/chkgdnReg/rswrtChkgdn";
import { excelDownload, yearOptions } from "@/components/lib/func/commom"; import { excelDownload, yearOptions } from "@/components/lib/func/commom";
@@ -222,7 +223,7 @@ export default function Page() {
<div className="space-y"> <div className="space-y">
<div className="flex flex-row space-x-2"> <div className="flex flex-row space-x-2">
<Button <Button
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
cellClick(); cellClick();
}} }}
@@ -231,12 +232,12 @@ export default function Page() {
</Button> </Button>
<Button <Button
color="green" color="green"
size={"sm"} className={btnClass}
onClick={() => { onClick={() => {
excelDown(); excelDown();
}} }}
> >
다운로드 엑셀다운로드
</Button> </Button>
</div> </div>
</div> </div>
@@ -292,4 +293,3 @@ export default function Page() {
</ContentsDiv> </ContentsDiv>
); );
} }
@@ -1,6 +1,7 @@
"use client"; "use client";
import { useWrStore } from "@/app/store"; import { useWrStore } from "@/app/store";
import { btnClass } from "@/app/store/common/code";
import type { RainStatProps } from "@/app/store/stats/rainStat"; import type { RainStatProps } from "@/app/store/stats/rainStat";
import { excelDownload, tableData, yearOptions } from "@/components/lib/func/commom"; import { excelDownload, tableData, yearOptions } from "@/components/lib/func/commom";
import { downloadExcel } from "@common/business_components"; import { downloadExcel } from "@common/business_components";
@@ -247,13 +248,13 @@ export default function RainStat() {
/> />
</div> </div>
<div className="flex flex-row space-x-2 items-center"> <div className="flex flex-row space-x-2 items-center">
<Button className="" size={"sm"} onClick={() => { searchRainStatList(searchYear ,code.cityCd); }}> <Button className={btnClass} onClick={() => { searchRainStatList(searchYear ,code.cityCd); }}>
조회 조회
</Button> </Button>
<Button className="" size={"sm"} onClick={() => excelClick()}> <Button className={btnClass} onClick={() => excelClick()}>
다운로드 다운로드
</Button> </Button>
<Button className="" size={"sm"} onClick={() => excelDetailDownLoad()}> <Button className={btnClass} onClick={() => excelDetailDownLoad()}>
전체통계다운로드 전체통계다운로드
</Button> </Button>
</div> </div>
@@ -1,5 +1,6 @@
"use client"; "use client";
import { useWrStore } from "@/app/store"; import { useWrStore } from "@/app/store";
import { btnClass } from "@/app/store/common/code";
import type { RswtStatProps } from "@/app/store/stats/rswtStat"; import type { RswtStatProps } from "@/app/store/stats/rswtStat";
import { excelDownload, tableData, yearOptions } from "@/components/lib/func/commom"; import { excelDownload, tableData, yearOptions } from "@/components/lib/func/commom";
import { import {
@@ -246,8 +247,7 @@ export default function RswtStat() {
</div> </div>
<div className="flex flex-row space-x-2 items-center"> <div className="flex flex-row space-x-2 items-center">
<Button <Button
className="" className={btnClass}
size="sm"
onClick={() => { onClick={() => {
searchRswtStatList(searchYear, code.cityCd,code.rswtBdstType) searchRswtStatList(searchYear, code.cityCd,code.rswtBdstType)
}} }}
@@ -255,15 +255,13 @@ export default function RswtStat() {
조회 조회
</Button> </Button>
<Button <Button
className="" className={btnClass}
size="sm"
onClick={excelClick} onClick={excelClick}
> >
다운로드 다운로드
</Button> </Button>
<Button <Button
className="" className={btnClass}
size="sm"
onClick={excelDetailDownLoad} onClick={excelDetailDownLoad}
> >
전체통계다운로드 전체통계다운로드
@@ -10,574 +10,107 @@ export const sttnHeadListType = z.array(
); );
export const rainSttHeadListExport: z.infer<typeof sttnHeadListType> = [ export const rainSttHeadListExport: z.infer<typeof sttnHeadListType> = [
{ { id: "cityText", title: "시도", visible: true, },
id: "cityText", { id: "sggText", title: "시군구", visible: true, },
title: "시도", { id: "bdstNm", title: "건축물명", visible: true, },
visible: true, { id: "daddr", title: "주소", visible: true, },
}, { id: "bdsgUsgText", title: "건축물용도", visible: true, },
{ { id: "frstArchPrmsnDt", title: "최초건축허가일시", visible: true, },
id: "sggText", { id: "archArea", title: "건축면적", visible: true, },
title: "시군구", { id: "chBuildingYn", title: "증축・개축・재축여부", visible: true, },
visible: true, { id: "lawTrgtYn", title: "법적의무대상여부", visible: true, },
}, { id: "instlCmptnDt", title: "설치완료일시", visible: true, },
{
id: "bdstNm",
title: "건축물명",
visible: true,
},
{
id: "daddr",
title: "주소",
visible: true,
},
{
id: "bdsgUsgText",
title: "건축물용도",
visible: true,
},
{
id: "frstArchPrmsnDt",
title: "최초건축허가일시",
visible: true,
},
{
id: "archArea",
title: "건축면적",
visible: true,
},
{
id: "chBuildingYn",
title: "증축・개축・재축여부",
visible: true,
},
{
id: "lawTrgtYn",
title: "법적의무대상여부",
visible: true,
},
{
id: "instlCmptnDt",
title: "설치완료일시",
visible: true,
},
{ { id: "instlCst", title: "설치비용", visible: true, },
id: "instlCst",
title: "설치비용",
visible: true,
},
{ { id: "pntfColKnd", title: "집수지점종류", visible: true, },
id: "pntfColKnd", { id: "pntfColArea", title: "집수지점면적", visible: true, },
title: "집수지점종류",
visible: true,
},
{
id: "pntfColArea",
title: "집수지점면적",
visible: true,
},
{ { id: "dtfcltCpct", title: "저류조용량", visible: true, },
id: "dtfcltCpct", { id: "filtrTrtmfctYn", title: "여과처리시설유무", visible: true, },
title: "저류조용량", { id: "filtrTrtmfctCpct", title: "여과처리시설용량", visible: true, },
visible: true, { id: "filtrTrtmfctPrs", title: "여과처리시설처리공정", visible: true, },
},
{
id: "filtrTrtmfctYn",
title: "여과처리시설유무",
visible: true,
},
{
id: "filtrTrtmfctCpct",
title: "여과처리시설용량",
visible: true,
},
{
id: "filtrTrtmfctPrs",
title: "여과처리시설처리공정",
visible: true,
},
{ { id: "instlCstSprtYn", title: "설치지원비용여부", visible: true, },
id: "instlCstSprtYn", { id: "instlCstSprtAmt", title: "설치지원비용", visible: true, },
title: "설치지원비용여부",
visible: true,
},
{
id: "instlCstSprtAmt",
title: "설치지원비용",
visible: true,
},
{ { id: "grntchBdstCertYn", title: "녹색건축물인증여부", visible: true, },
id: "grntchBdstCertYn", { id: "grntchBdstCertYr", title: "녹색건축물인증년도", visible: true, },
title: "녹색건축물인증여부", { id: "grntchBdstCertNo", title: "녹색건축물인증번호", visible: true, },
visible: true, { id: "grntchBdstCertGrdText", title: "녹색건축물인증등급", visible: true, },
},
{
id: "grntchBdstCertYr",
title: "녹색건축물인증년도",
visible: true,
},
{
id: "grntchBdstCertNo",
title: "녹색건축물인증번호",
visible: true,
},
{
id: "grntchBdstCertGrdText",
title: "녹색건축물인증등급",
visible: true,
},
]; ];
// id는 다확인해야함 // id는 다확인해야함
export const rainSttNodeListExport: CommonTableProps[] = [ export const rainSttNodeListExport: CommonTableProps[] = [
{ { id: "bdnstInfo", title: "건축물정보", visible: true, row: 1, rowSpan: 1, colSpan: 10, },
id: "bdnstInfo", { id: "rainFcltInfo", title: "빗물이용시설정보", visible: true, row: 1, rowSpan: 1, colSpan: 7, },
title: "건축물정보", { id: "insenInfo", title: "인센티브 정보", visible: true, row: 1, rowSpan: 1, colSpan: 6, },
visible: true, { id: "adminDiv", title: "행정구역", visible: true, row: 2, upName: "bdnstInfo", rowSpan: 1, colSpan: 2, },
row: 1,
rowSpan: 1,
colSpan: 10,
},
{
id: "rainFcltInfo",
title: "빗물이용시설정보",
visible: true,
row: 1,
rowSpan: 1,
colSpan: 7,
},
{
id: "insenInfo",
title: "인센티브 정보",
visible: true,
row: 1,
rowSpan: 1,
colSpan: 6,
},
{
id: "adminDiv",
title: "행정구역",
visible: true,
row: 2,
upName: "bdnstInfo",
rowSpan: 1,
colSpan: 2,
},
// 3번째줄 시작 // 3번째줄 시작
{ { id: "cityText", title: "시도", visible: true, upName: "adminDiv", row: 3, rowSpan: 1, colSpan: 1, },
id: "cityText", { id: "sggText", title: "시군구", visible: true, upName: "adminDiv", row: 3, rowSpan: 1, colSpan: 1, },
title: "시도",
visible: true,
upName: "adminDiv",
row: 3,
rowSpan: 1,
colSpan: 1,
},
{
id: "sggText",
title: "시군구",
visible: true,
upName: "adminDiv",
row: 3,
rowSpan: 1,
colSpan: 1,
},
// 2번째 줄 // 2번째 줄
// 1번째 줄 건축물정보 아래의 행으로 만들 헤더 // 1번째 줄 건축물정보 아래의 행으로 만들 헤더
{ { id: "bdstNm", title: "건축물명", visible: true, upName: "bdnstInfo", row: 2, rowSpan: 2, colSpan: 1, },
id: "bdstNm", { id: "daddr", title: "주소", visible: true, upName: "bdnstInfo", row: 2, rowSpan: 2, colSpan: 1, },
title: "건축물명", { id: "bdsgUsgText", title: "건축물용도", upName: "bdnstInfo", visible: true, row: 2, rowSpan: 2, colSpan: 1, },
visible: true, { id: "frstArchPrmsnDt", title: "최초건축허가일시", upName: "bdnstInfo", visible: true, row: 2, rowSpan: 2, colSpan: 1, },
upName: "bdnstInfo", { id: "archArea", title: "건축면적(m²)", upName: "bdnstInfo", visible: true, row: 2, rowSpan: 2, colSpan: 1, },
row: 2, { id: "chBuildingYn", title: "증축・개축・재축여부", upName: "bdnstInfo", visible: true, row: 2, rowSpan: 2, colSpan: 1, },
rowSpan: 2, { id: "lawTrgtYn", title: "법적의무대상여부", upName: "bdnstInfo", visible: true, row: 2, rowSpan: 2, colSpan: 1, },
colSpan: 1, { id: "instlCmptnDt", title: "설치완료일시", upName: "bdnstInfo", visible: true, row: 2, rowSpan: 2, colSpan: 1, },
},
{
id: "daddr",
title: "주소",
visible: true,
upName: "bdnstInfo",
row: 2,
rowSpan: 2,
colSpan: 1,
},
{
id: "bdsgUsgText",
title: "건축물용도",
upName: "bdnstInfo",
visible: true,
row: 2,
rowSpan: 2,
colSpan: 1,
},
{
id: "frstArchPrmsnDt",
title: "최초건축허가일시",
upName: "bdnstInfo",
visible: true,
row: 2,
rowSpan: 2,
colSpan: 1,
},
{
id: "archArea",
title: "건축면적(m²)",
upName: "bdnstInfo",
visible: true,
row: 2,
rowSpan: 2,
colSpan: 1,
},
{
id: "chBuildingYn",
title: "증축・개축・재축여부",
upName: "bdnstInfo",
visible: true,
row: 2,
rowSpan: 2,
colSpan: 1,
},
{
id: "lawTrgtYn",
title: "법적의무대상여부",
upName: "bdnstInfo",
visible: true,
row: 2,
rowSpan: 2,
colSpan: 1,
},
{
id: "instlCmptnDt",
title: "설치완료일시",
upName: "bdnstInfo",
visible: true,
row: 2,
rowSpan: 2,
colSpan: 1,
},
{ { id: "instlCst", title: "설치비용(원)", upName: "rainFcltInfo", visible: true, row: 2, rowSpan: 2, colSpan: 1, },
id: "instlCst",
title: "설치비용(원)",
upName: "rainFcltInfo",
visible: true,
row: 2,
rowSpan: 2,
colSpan: 1,
},
{ { id: "pntfCol", title: "집수면", upName: "rainFcltInfo", visible: true, row: 2, rowSpan: 1, colSpan: 2, },
id: "pntfCol",
title: "집수면",
upName: "rainFcltInfo",
visible: true,
row: 2,
rowSpan: 1,
colSpan: 2,
},
{ { id: "pntfColKnd", title: "종류", upName: "pntfCol", visible: true, row: 3, rowSpan: 1, colSpan: 1, },
id: "pntfColKnd", { id: "pntfColArea", title: "면적(m²)", upName: "pntfCol", visible: true, row: 3, rowSpan: 1, colSpan: 1, },
title: "종류",
upName: "pntfCol",
visible: true,
row: 3,
rowSpan: 1,
colSpan: 1,
},
{
id: "pntfColArea",
title: "면적(m²)",
upName: "pntfCol",
visible: true,
row: 3,
rowSpan: 1,
colSpan: 1,
},
{ { id: "dtfcltCpct", title: "저류조용량(m³)", upName: "rainFcltInfo", visible: true, row: 2, rowSpan: 2, colSpan: 1, },
id: "dtfcltCpct", { id: "filtrTrtmfctYn", title: "여과처리시설유무", upName: "filtrTrtmfct", visible: true, row: 3, rowSpan: 1, colSpan: 1, },
title: "저류조용량(m³)", { id: "filtrTrtmfctCpct", title: "여과처리시설용량(m³)", upName: "filtrTrtmfct", visible: true, row: 3, rowSpan: 1, colSpan: 1, },
upName: "rainFcltInfo", { id: "filtrTrtmfctPrs", title: "여과처리시설처리공정", upName: "filtrTrtmfct", visible: true, row: 3, rowSpan: 1, colSpan: 1, },
visible: true,
row: 2,
rowSpan: 2,
colSpan: 1,
},
{
id: "filtrTrtmfctYn",
title: "여과처리시설유무",
upName: "filtrTrtmfct",
visible: true,
row: 3,
rowSpan: 1,
colSpan: 1,
},
{
id: "filtrTrtmfctCpct",
title: "여과처리시설용량(m³)",
upName: "filtrTrtmfct",
visible: true,
row: 3,
rowSpan: 1,
colSpan: 1,
},
{
id: "filtrTrtmfctPrs",
title: "여과처리시설처리공정",
upName: "filtrTrtmfct",
visible: true,
row: 3,
rowSpan: 1,
colSpan: 1,
},
{ { id: "filtrTrtmfct", title: "여과등 처리시설", visible: true, upName: "rainFcltInfo", row: 2, rowSpan: 1, colSpan: 3, },
id: "filtrTrtmfct", { id: "instlCstSprtYn", title: "설치지원비용여부", upName: "instlCstSprt", visible: true, row: 3, rowSpan: 1, colSpan: 1, },
title: "여과등 처리시설", { id: "instlCstSprtAmt", title: "설치지원비용(원)", upName: "instlCstSprt", visible: true, row: 3, rowSpan: 1, colSpan: 1, },
visible: true,
upName: "rainFcltInfo",
row: 2,
rowSpan: 1,
colSpan: 3,
},
{
id: "instlCstSprtYn",
title: "설치지원비용여부",
upName: "instlCstSprt",
visible: true,
row: 3,
rowSpan: 1,
colSpan: 1,
},
{
id: "instlCstSprtAmt",
title: "설치지원비용(원)",
upName: "instlCstSprt",
visible: true,
row: 3,
rowSpan: 1,
colSpan: 1,
},
{ { id: "instlCstSprt", title: "설치비지원", upName: "insenInfo", visible: true, row: 2, rowSpan: 1, colSpan: 2, },
id: "instlCstSprt",
title: "설치비지원",
upName: "insenInfo",
visible: true,
row: 2,
rowSpan: 1,
colSpan: 2,
},
{ { id: "grntchBdstCertYn", title: "인증여부", upName: "grntchBdstCert", visible: true, row: 3, rowSpan: 1, colSpan: 1, },
id: "grntchBdstCertYn", { id: "grntchBdstCertYr", title: "인증년도", upName: "grntchBdstCert", visible: true, row: 3, rowSpan: 1, colSpan: 1, },
title: "인증여부", { id: "grntchBdstCertNo", title: "인증번호", upName: "grntchBdstCert", visible: true, row: 3, rowSpan: 1, colSpan: 1, },
upName: "grntchBdstCert", { id: "grntchBdstCertGrdText", title: "인증등급", upName: "grntchBdstCert", visible: true, row: 3, rowSpan: 1, colSpan: 1, },
visible: true, { id: "grntchBdstCert", title: "녹색건축물인증", upName: "insenInfo", visible: true, row: 2, rowSpan: 1, colSpan: 4, },
row: 3,
rowSpan: 1,
colSpan: 1,
},
{
id: "grntchBdstCertYr",
title: "인증년도",
upName: "grntchBdstCert",
visible: true,
row: 3,
rowSpan: 1,
colSpan: 1,
},
{
id: "grntchBdstCertNo",
title: "인증번호",
upName: "grntchBdstCert",
visible: true,
row: 3,
rowSpan: 1,
colSpan: 1,
},
{
id: "grntchBdstCertGrdText",
title: "인증등급",
upName: "grntchBdstCert",
visible: true,
row: 3,
rowSpan: 1,
colSpan: 1,
},
{
id: "grntchBdstCert",
title: "녹색건축물인증",
upName: "insenInfo",
visible: true,
row: 2,
rowSpan: 1,
colSpan: 4,
},
]; ];
export const rainSttnDetailNodeListExport:CommonTableProps[] = [ export const rainSttnDetailNodeListExport:CommonTableProps[] = [
{ id: "totalSplyUswtrUtztnQnt", { id: "totalSplyUswtrUtztnQnt", title: "연간보급수이용량(m³)", visible: true, row: 1, rowSpan: 2, colSpan: 1, },
title: "연간보급수이용량(m³)", { id: "totalRuseFcltUtztnQnt", title: "연간빗물이용량(m³)", visible: true, row: 1, rowSpan: 2, colSpan: 1 },
visible: true, { id: "useQulity", title: "이용수질(필요시)", visible: true, row: 1, rowSpan: 1, colSpan: 4 },
row: 1, { id: "ph", title: "pH", visible: true, row: 2, rowSpan: 1, colSpan: 1 },
rowSpan: 2, { id: "trbt", title: "탁도", visible: true, row: 2, rowSpan: 1, colSpan: 1 },
colSpan: 1, { id: "grssClfg", title: "총대장균군수", visible: true, row: 2, rowSpan: 1, colSpan: 1 },
}, { id: "etc", title: "기타", visible: true, row: 2, rowSpan: 1, colSpan: 1 },
{ id: "totalRuseFcltUtztnQnt", title: "연간빗물이용량(m³)", { id: "feeHistory", title: "과태료부과내역", visible: true, row: 1, rowSpan: 1, colSpan: 3 },
visible: true, { id: "vltnDt", title: "부과일(위반일)", visible: true, row: 2, rowSpan: 1, colSpan: 1 },
row: 1, { id: "vltnMttr", title: "위반사항", visible: true, row: 2, rowSpan: 1, colSpan: 1 },
rowSpan: 2, { id: "levyAmt", title: "부과금액(천원)", visible: true, row: 2, rowSpan: 1, colSpan: 1 },
colSpan: 1
},
{ id: "useQulity",
title: "이용수질(필요시)",
visible: true,
row: 1,
rowSpan: 1,
colSpan: 4
},
{ id: "ph", title: "pH",
visible: true,
row: 2,
rowSpan: 1,
colSpan: 1
},
{
id: "trbt",
title: "탁도",
visible: true,
row: 2,
rowSpan: 1,
colSpan: 1
},
{
id: "grssClfg",
title: "총대장균군수",
visible: true,
row: 2,
rowSpan: 1,
colSpan: 1
},
{
id: "etc",
title: "기타",
visible: true,
row: 2,
rowSpan: 1,
colSpan: 1
},
{ id: "feeHistory",
title: "과태료부과내역",
visible: true,
row: 1,
rowSpan: 1,
colSpan: 3
},
{
id: "vltnDt",
title: "부과일(위반일)",
visible: true,
row: 2,
rowSpan: 1,
colSpan: 1
},
{
id: "vltnMttr",
title: "위반사항",
visible: true,
row: 2,
rowSpan: 1,
colSpan: 1
},
{
id: "levyAmt",
title: "부과금액(천원)",
visible: true,
row: 2,
rowSpan: 1,
colSpan: 1
},
]; ];
export const rainSttnDetailHeadListExport:CommonTableProps[] = [ export const rainSttnDetailHeadListExport:CommonTableProps[] = [
{ id: "totalSplyUswtrUtztnQnt", { id: "totalSplyUswtrUtztnQnt", title: "연간보급수이용량(m³)", visible: true, row: 1, rowSpan: 1, colSpan: 1, },
title: "연간보급수이용량(m³)", { id: "totalRuseFcltUtztnQnt", title: "연간빗물이용량(m³)", visible: true, row: 1, rowSpan: 1, colSpan: 1 },
visible: true,
row: 1,
rowSpan: 1,
colSpan: 1,
},
{ id: "totalRuseFcltUtztnQnt", title: "연간빗물이용량(m³)",
visible: true,
row: 1,
rowSpan: 1,
colSpan: 1
},
{ id: "ph", title: "pH", { id: "ph", title: "pH", visible: true, row: 1, rowSpan: 1, colSpan: 1 },
visible: true, { id: "trbt", title: "탁도", visible: true, row: 1, rowSpan: 1, colSpan: 1 },
row: 1, { id: "grssClfg", title: "총대장균군수", visible: true, row: 1, rowSpan: 1, colSpan: 1 },
rowSpan: 1, { id: "etc", title: "기타", visible: true, row: 1, rowSpan: 1, colSpan: 1 },
colSpan: 1
},
{
id: "trbt",
title: "탁도",
visible: true,
row: 1,
rowSpan: 1,
colSpan: 1
},
{
id: "grssClfg",
title: "총대장균군수",
visible: true,
row: 1,
rowSpan: 1,
colSpan: 1
},
{
id: "etc",
title: "기타",
visible: true,
row: 1,
rowSpan: 1,
colSpan: 1
},
{ { id: "vltnDt", title: "부과일(위반일)", visible: true, row: 1, rowSpan: 1, colSpan: 1 },
id: "vltnDt", { id: "vltnMttr", title: "위반사항", visible: true, row: 1, rowSpan: 1, colSpan: 1 },
title: "부과일(위반일)", { id: "levyAmt", title: "부과금액(천원)", visible: true, row: 1, rowSpan: 1, colSpan: 1 },
visible: true,
row: 1,
rowSpan: 1,
colSpan: 1
},
{
id: "vltnMttr",
title: "위반사항",
visible: true,
row: 1,
rowSpan: 1,
colSpan: 1
},
{
id: "levyAmt",
title: "부과금액(천원)",
visible: true,
row: 1,
rowSpan: 1,
colSpan: 1
},
]; ];
@@ -222,10 +222,7 @@ export const rainSttnActionsExport: (set: any) => rainSttnActions = (
rainSttnChkSearch: async ( rainSttnChkSearch: async (
rusePk: string rusePk: string
) => { ) => {
const rainChkRes = await getFetch( const rainChkRes = await getFetch( fetchType.WR, `/reuseChk/rainy/${rusePk}` );
fetchType.WR,
`/reuseChk/rainy/${rusePk}`
);
return set((state: rainSttnState) => ({ return set((state: rainSttnState) => ({
rainSttn: { rainSttn: {
@@ -123,7 +123,7 @@ export function RainFacility({
if (rainMapExcelList.length > 0) { if (rainMapExcelList.length > 0) {
excelDownload( excelDownload(
rainMapExcelList, rainMapExcelList,
"빗물재이용시설 현황", "빗물이용시설 현황",
"sample_rainSttn.xlsx", "sample_rainSttn.xlsx",
"A1:W3" "A1:W3"
); );
@@ -7,7 +7,15 @@ import { useEffect } from "react";
import { useForm } from "react-hook-form"; import { useForm } from "react-hook-form";
import { z } from "zod"; import { z } from "zod";
export default function HeadChModal({ headList, type }: { headList: z.infer<typeof sttnHeadListType>, type: string }) { export default function HeadChModal({
headList,
type,
onSaved,
}: {
headList: z.infer<typeof sttnHeadListType>;
type: string;
onSaved?: () => void;
}) {
const { rainChSttnHead, rswtChSttnHead, htdflChSttnHead, pbnstChSttnHead } = useWrStore((state) => state); const { rainChSttnHead, rswtChSttnHead, htdflChSttnHead, pbnstChSttnHead } = useWrStore((state) => state);
@@ -44,11 +52,12 @@ export default function HeadChModal({ headList, type }: { headList: z.infer<type
} else if (type === 'PBN') { } else if (type === 'PBN') {
pbnstChSttnHead(valueList) pbnstChSttnHead(valueList)
} }
onSaved?.();
} }
return ( return (
<> <>
<div> <div className="max-h-[95vh] overflow-y-auto">
<Form {...form}> <Form {...form}>
<form onSubmit={form.handleSubmit(onSubmit)} className="space-y-6"> <form onSubmit={form.handleSubmit(onSubmit)} className="space-y-6">
@@ -79,7 +79,7 @@ export default function SttnDetailModal({
}, []); }, []);
return ( return (
<div> <div className="">
<Title <Title
title={ title={
type === "RNB" type === "RNB"