지도점검 작업중
iipbs_wr / build (push) Waiting to run

This commit is contained in:
leedj312
2025-06-26 10:07:59 +09:00
parent 60bc81b462
commit d9673adb94
2 changed files with 58 additions and 28 deletions
@@ -2,7 +2,10 @@
import { useWrStore } from "@/app/store";
import { type rainChkZodType } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn";
import type { rswtChkZodType, rswtrChkDetailsZodType } from "@/app/store/prfmncReg/chkgdnReg/rswrtChkgdn";
import type {
rswtChkZodType,
rswtrChkDetailsZodType,
} from "@/app/store/prfmncReg/chkgdnReg/rswrtChkgdn";
import {
excelArrayDownload,
excelDownload,
@@ -26,6 +29,7 @@ import ListDiv from "@common/business_components/ui/list_div";
import { Button, Label } from "@common/components/ui";
import { useCallback, useEffect, useState } from "react";
import { Toaster } from "react-hot-toast";
import { shallow } from "zustand/shallow";
//-----------------------
export default function Page() {
@@ -52,9 +56,9 @@ export default function Page() {
const [updateRainDetail, setUpdateRainDetail] = useState<rainChkZodType[]>(
[]
);
const [updateRswtDetail, setUpdateRSwtDetail] = useState<rswtrChkDetailsZodType[]>(
[]
);
const [updateRswtDetail, setUpdateRSwtDetail] = useState<
rswtrChkDetailsZodType[]
>([]);
const [deleteIdx, setDeleteIdx] = useState<number[]>([]);
const [selFcltDiv, setSelFcltDiv] = useState("RNB");
@@ -66,12 +70,14 @@ export default function Page() {
if (searchYear) rainChkInit(searchYear, "0");
};
const [searchYear, setSearchYear] = useState<string>(String(new Date().getFullYear()));
const [searchYear, setSearchYear] = useState<string>(
String(new Date().getFullYear())
);
useEffect(() => {
if (!rainChkgdn.isInit) {
rainChkInit(new Date().getFullYear().toString(), "0");
isRainSttn(false)
isRainSttn(false);
setIsModal({ data: {}, open: false });
setIsRegExcel(false);
}
@@ -84,13 +90,35 @@ export default function Page() {
}, [rainChkgdn.isInit, rainChkInit]);
useEffect(() => {
// data: any[][];
// headerNum: number;
// headerRange: string;
// sheetName: string;
// startCol?: string;
if (rswtChkgdn.excelList[0]?.data.length > 1) {
const SheetParameter = [
{
data: rswtChkgdn.excelList,
headerRange: "A1:AJ1",
headerNum: 1,
sheetName: "중수도_점검결과_이용량현황",
startCol: "A",
},
{
data: rswtChkgdn.excelList,
headerRange: "A1:BB",
headerNum: 1,
sheetName: "중수도_점검결과_수질",
startCol: "A",
},
];
if (rswtChkgdn.excelList[0]?.data.length > 1)
excelArrayDownload(
"중수도시설 지도점검",
"sample_rs_chk.xlsx",
rswtChkgdn.excelList
SheetParameter
);
}
}, [rswtChkgdn.excelList]);
useEffect(() => {
@@ -118,15 +146,14 @@ export default function Page() {
const handleClick = useCallback(
(data: any) => {
if (data) setIsModal({ open: !isModal.open, data: data });
},
[isModal]
);
useEffect(() => {
rainChkgdn.isSttn = false
rswtChkgdn.isSttn = false
rainChkgdn.isSttn = false;
rswtChkgdn.isSttn = false;
if (!rainChkgdn.isSttn && !rswtChkgdn.isSttn) {
rainChkHeadChange({ rainChkgdn }, true);
rswtChkHeadChange({ rswtChkgdn }, true);
@@ -138,20 +165,17 @@ export default function Page() {
if (selFcltDiv === "RNB") {
rainChkDelete(data);
} else {
rswtChkDelete(data)
rswtChkDelete(data);
}
}
};
const chkUpdateTable = (selFcltDiv: string) => {
if (selFcltDiv === "RNB") {
rainChkDetilUpdate(updateRainDetail)
rainChkDetilUpdate(updateRainDetail);
} else {
rswtChkDetilsUpdate(updateRswtDetail)
rswtChkDetilsUpdate(updateRswtDetail);
}
}
};
return (
<ContentsDiv>
@@ -161,7 +185,9 @@ export default function Page() {
<SearchDiv>
<SearchFormLeft>
<div className="col-span-2 flex flex-row space-x-2">
<Label className="w-48 mt-2 text-xl text-gray-600">{'지도점검년도'}</Label>
<Label className="w-48 mt-2 text-xl text-gray-600">
{"지도점검년도"}
</Label>
<SelectBox
className="w-full h-full text-2xl"
label=""
@@ -174,7 +200,9 @@ export default function Page() {
/>
</div>
<div className="col-span-2 flex flex-row space-x-2">
<Label className="w-28 mt-2 text-xl text-gray-600">{'시설구분'}</Label>
<Label className="w-28 mt-2 text-xl text-gray-600">
{"시설구분"}
</Label>
<SelectBox
className={"w-full h-full text-2xl"}
label={""}
@@ -187,8 +215,7 @@ export default function Page() {
/>
</div>
</SearchFormLeft>
<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="space-y">
<div className="flex flex-row space-x-2">
<Button
@@ -210,7 +237,7 @@ export default function Page() {
<Button
size={"sm"}
onClick={() => {
chkUpdateTable(selFcltDiv)
chkUpdateTable(selFcltDiv);
}}
>
저장
+8 -5
View File
@@ -4,6 +4,7 @@ import {
type SelectDataType,
type ReturnType,
filePickedBlobArray,
type SheetParameter,
} from "@common/business_components/ui";
import type { RefObject } from "react";
@@ -81,7 +82,7 @@ export const excelDownload = (
export const excelArrayDownload = (
fileNm: string,
sampleFile: string,
sheetArray: []
sheetArray:SheetParameter []
) => {
if (!sheetArray) return;
fetch(`/${sampleFile}`, {}).then(async (response) => {
@@ -110,7 +111,12 @@ export const formatCommaNumber = (
value: number | string | undefined | null
): string => {
if (value === undefined || value === null || value === "") return "";
return Number(value).toLocaleString();
const num = Number(value);
// 숫자로 변환할 수 없는 값이 들어올 경우 빈 문자열을 반환하여 예상치 못한 "NaN" 출력을 방지합니다.
if (isNaN(num)) {
return "";
}
return num.toLocaleString();
};
export const getCityOrSgg = (ref: RefObject<ReturnType>) => {
@@ -153,6 +159,3 @@ export const getdmdMatFlag = (flag: string|undefined) => {
}
return flagMat;
};