From 225bae08d32387394b8b47ba9b7a2b0dcdde8bd6 Mon Sep 17 00:00:00 2001 From: jyha00 Date: Tue, 22 Jul 2025 13:09:20 +0900 Subject: [PATCH 1/4] =?UTF-8?q?readOnly=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ruseFcltMng/fcltReg/pbnstReg/page.tsx | 1 + .../fcltReg/pbnstReg/buseReg/bugRegForm.tsx | 2 +- .../buseWaterQulity/buseWaterQulity.tsx | 30 +++++------ .../fcltReg/pbnstReg/mngReg/mngRegForm.tsx | 10 ++-- .../fcltReg/pbnstRegModal/pbnstRegModal.tsx | 1 + .../sttn/pbnstSttnModal/pbnstSttnModal.tsx | 51 ++++++++++--------- .../sttn/sttnDetailModal/coDatailModal.tsx | 6 +-- 7 files changed, 54 insertions(+), 47 deletions(-) diff --git a/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx b/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx index 5a962fc0a..614a8f90e 100644 --- a/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx +++ b/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx @@ -364,6 +364,7 @@ export default function PublicReuseFaciltyInsert() { setIndexMng(index); }} indexMng={indexMng} + readonly={false} /> diff --git a/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm.tsx b/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm.tsx index 85fdd0c0b..5c1edb471 100644 --- a/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm.tsx @@ -494,7 +494,7 @@ export function PbnstBuseForm({ sonClass="col-span-4" indexMng={indexMng} indexBiz={indexBiz} - formType={""} + readonly={false} /> diff --git a/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/buseWaterQulity/buseWaterQulity.tsx b/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/buseWaterQulity/buseWaterQulity.tsx index cba4c4c81..121957b8e 100644 --- a/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/buseWaterQulity/buseWaterQulity.tsx +++ b/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/buseWaterQulity/buseWaterQulity.tsx @@ -13,7 +13,7 @@ export function BuseWaterQulity({ sonClass, indexMng, indexBiz, - formType, + readonly, }: { form: UseFormReturn<{ items: PbnstRegArrrayType }>; h1Title: string; @@ -22,7 +22,7 @@ export function BuseWaterQulity({ sonClass: string; indexMng: number; indexBiz: number; - formType?: string; + readonly?: boolean; }) { const [frontPHdata, setFrontPHdata] = useState("0"); const [backPHdata, setBackPHdata] = useState("0"); @@ -131,7 +131,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={6} /> @@ -168,7 +168,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={6} /> {/* TODO: 총대장균군수 확인 필요*/} @@ -203,7 +203,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={6} /> @@ -237,7 +237,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={6} /> @@ -267,7 +267,7 @@ export function BuseWaterQulity({ field.onChange(String(e.target.value)); }} value={field.value ?? ""} - readOnly={formType === "sttn" ? true : false} + readOnly={readonly === "sttn" ? true : false} maxLength={txtSize} /> */} { field.onChange(val); }} @@ -310,7 +310,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={6} /> @@ -344,7 +344,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={6} /> @@ -379,7 +379,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={6} /> @@ -413,7 +413,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={7} /> @@ -448,7 +448,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={7} /> @@ -472,7 +472,7 @@ export function BuseWaterQulity({ isSetFrontPh(e.target.value) } value={frontPHdata ?? ""} - readOnly={formType === "sttn"} + readOnly={readonly} maxLength={3} /> ~ @@ -484,7 +484,7 @@ export function BuseWaterQulity({ isSetBackPh(e.target.value); }} value={backPHdata ?? ""} - readOnly={formType === "sttn"} + readOnly={readonly} maxLength={3} /> diff --git a/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx b/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx index ee3fe8363..f7355bfd9 100644 --- a/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx @@ -41,11 +41,13 @@ export function PbnstMngForm({ formType, indexMng, setIndexMng, + readonly }: { form: UseFormReturn<{ items: PbnstRegArrrayType }>; formType: string; indexMng: number; setIndexMng: (index: number) => void; + readonly:boolean }) { const { code, pbnst, fileDelete, fileDownLoad } = useWrStore( (state) => state @@ -293,7 +295,7 @@ export function PbnstMngForm({ field.onChange(String(e.target.value)); }} value={field.value ?? ""} - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={txtSize} /> @@ -374,7 +376,7 @@ export function PbnstMngForm({ handleCommaNumberChange(e, field.onChange); }} value={formatCommaNumber(field.value)} - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} /> )} @@ -398,7 +400,7 @@ export function PbnstMngForm({ handleCommaNumberChange(e, field.onChange); }} value={formatCommaNumber(field.value)} - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} /> )} @@ -421,7 +423,7 @@ export function PbnstMngForm({ handleCommaNumberChange(e, field.onChange); }} value={formatCommaNumber(field.value)} - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} /> )} diff --git a/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx b/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx index 8275e472b..c0cbdda30 100644 --- a/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx +++ b/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx @@ -99,6 +99,7 @@ export function PbnstRegModal({ formType={"reg"} indexMng={indexMng} setIndexMng={setIndexMng} + readonly={false} /> diff --git a/apps/wr/components/ui/modal/sttn/pbnstSttnModal/pbnstSttnModal.tsx b/apps/wr/components/ui/modal/sttn/pbnstSttnModal/pbnstSttnModal.tsx index 20a13dc31..b23a52056 100644 --- a/apps/wr/components/ui/modal/sttn/pbnstSttnModal/pbnstSttnModal.tsx +++ b/apps/wr/components/ui/modal/sttn/pbnstSttnModal/pbnstSttnModal.tsx @@ -35,7 +35,7 @@ import { useForm } from "react-hook-form"; import { z } from "zod"; export function PbnstSttnModal({ data, titleVisible }: { data: customPbnst; titleVisible?: boolean }) { - const { pbnstSttn, prfmnc , pbnstPrfmncSttn} = useWrStore((state) => state); + const { pbnstSttn, prfmnc, pbnstPrfmncSttn } = useWrStore((state) => state); const [fcltTab, setFcltTab] = useState("fclt"); const [ruseTab, setRuseTab] = useState("totalPrf"); const [ruseHeadList, setRuseHeadList] = useState([]); @@ -67,10 +67,10 @@ export function PbnstSttnModal({ data, titleVisible }: { data: customPbnst; titl cusrAlotm: item.cusrAlotm ?? "-", etc: item.etc ?? "-", totalMoney: - Number(item.addr) + Number(item.gvsbs) + Number(item.lcep) + - Number(item.cusrAlotm), + Number(item.cusrAlotm) + + (isNaN(Number(item.etc)) ? 0 : Number(item.etc)), instlAprvSncnDt: item.instlAprvSncnDt?.toISOString ?? "-", bizCmcnDay: item.bizCmcnDay?.toISOString ?? "-", rprcsFcltCpct: item.rprcsFcltCpct ?? "-", @@ -167,8 +167,8 @@ export function PbnstSttnModal({ data, titleVisible }: { data: customPbnst; titl const getTablePrfData = (prfList: PrfType[]) => { const inUsageData = structuredClone(initValInUsage); const outUsageData = structuredClone(initValOutUsage); - const inSubtotal = structuredClone(subTotalObj); - const outSubtotal = structuredClone(subTotalObj); + const inSubtotal = { ...structuredClone(subTotalObj), 구분: "장내용수" }; + const outSubtotal = { ...structuredClone(subTotalObj), 구분: "장외용수" }; if (prfList) { prfList?.forEach((prfItem) => { @@ -216,7 +216,9 @@ export function PbnstSttnModal({ data, titleVisible }: { data: customPbnst; titl (usageTotalObj as any)[key] = val; } const tableData = [...inUsageData, ...outUsageData, usageTotalObj]; - + console.log("inusageData", inUsageData) + console.log("outUsageData", outUsageData) + console.log("tableData", tableData) setPrfData({ inPrf: inUsageData, outPrf: outUsageData, @@ -264,6 +266,7 @@ export function PbnstSttnModal({ data, titleVisible }: { data: customPbnst; titl formType={"sttn"} indexMng={indexMng} setIndexMng={setIndexMng} + readonly={true} />
@@ -300,8 +303,8 @@ export function PbnstSttnModal({ data, titleVisible }: { data: customPbnst; titl }} > {fcltTab === "fclt" ? ( - - ) : undefined} + + ) : undefined} @@ -323,22 +326,22 @@ export function PbnstSttnModal({ data, titleVisible }: { data: customPbnst; titl {prfData && ( - -
-

- {"하수처리수재이용 실적(m³) 등록결과"} -

-
- - - {headMakeprfmnc(pbnstPrfmncSttn.monthSttnHeadList, [])} - - - {InputTableBody(prfData[ruseTab as keyof typeof prfData] || [], pbnstPrfmncSttn.monthSttnHeadList, setPrfData as any)} - -
-
-
+ +
+

+ {"하수처리수재이용 실적(m³) 등록결과"} +

+
+ + + {headMakeprfmnc(pbnstPrfmncSttn.monthSttnHeadList, [])} + + + {InputTableBody(prfData[ruseTab as keyof typeof prfData] || [], pbnstPrfmncSttn.monthSttnHeadList, setPrfData as any)} + +
+
+ )}
diff --git a/apps/wr/components/ui/modal/sttn/sttnDetailModal/coDatailModal.tsx b/apps/wr/components/ui/modal/sttn/sttnDetailModal/coDatailModal.tsx index 8ad5da057..1db650f09 100644 --- a/apps/wr/components/ui/modal/sttn/sttnDetailModal/coDatailModal.tsx +++ b/apps/wr/components/ui/modal/sttn/sttnDetailModal/coDatailModal.tsx @@ -421,11 +421,11 @@ export default function CoDetailModal({ { - field.onChange(e.target.value); + handleCommaNumberChange(e, field.onChange); }} - value={field.value ?? 0} + value={formatCommaNumber(field.value) ?? 0} min={0} readOnly={true} /> From 6102e0af6b03a2853a7e1e6851e4c5fb672c4b0a Mon Sep 17 00:00:00 2001 From: jyha00 Date: Tue, 22 Jul 2025 13:10:22 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=EC=A7=80=EB=8F=84=EC=A0=90=EA=B2=80=20?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EB=B8=94=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wr/components/lib/func/TableData.tsx | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/wr/components/lib/func/TableData.tsx b/apps/wr/components/lib/func/TableData.tsx index 63f1db2f6..8599fec01 100644 --- a/apps/wr/components/lib/func/TableData.tsx +++ b/apps/wr/components/lib/func/TableData.tsx @@ -142,7 +142,12 @@ export const chRowspanTable = ( ) : key === "order" ? ( ++order ) : ( - value + // value + (["anlOperCst", "dtfcltCpct", "prcsCpct"].includes(head.id)) ? ( + formatCommaNumber(value) + ) : ( + <>{value} + ) )} ); @@ -173,9 +178,9 @@ export const chRowspanTable = ( }} /> ) : ( - (head.id === "totalSplyUswtrUtztnQnt" || head.id === "totalRuseFcltUtztnQnt" || head.id === "splyUswtrUtztnQnt" || head.id === "ruseFcltUtztnQnt") ? ( - - {value} + (["totalSplyUswtrUtztnQnt", "totalRuseFcltUtztnQnt", "splyUswtrUtztnQnt", "ruseFcltUtztnQnt", "levyAmt"].includes(head.id)) ? ( + + {formatCommaNumber(value)} ) : ( <>{value} From a19c5c269ade6d269bee5bee45c854f62f08639e Mon Sep 17 00:00:00 2001 From: jyha00 Date: Tue, 22 Jul 2025 13:37:35 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=EC=A7=80=EB=8F=84=EC=A0=90=EA=B2=80=20?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EB=B8=94=20=EC=9E=AC=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chkgdnReg/rainChkgdn/headList.tsx | 2 +- apps/wr/components/lib/func/TableData.tsx | 53 ++++++++++++------- 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList.tsx b/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList.tsx index 29a2de0db..d216b88f6 100644 --- a/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList.tsx +++ b/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList.tsx @@ -195,7 +195,7 @@ export const rainChkgdnHeadListExport: TableUpperProps[] = [ title: "부과금액(천원)", upName: "feeHist", upSequnce: 3, - type: "number", + type: "text", edit: true, }, ]; diff --git a/apps/wr/components/lib/func/TableData.tsx b/apps/wr/components/lib/func/TableData.tsx index 8599fec01..24e6349a9 100644 --- a/apps/wr/components/lib/func/TableData.tsx +++ b/apps/wr/components/lib/func/TableData.tsx @@ -3,7 +3,7 @@ import type { TableUpperProps } from "@/app/store/common/type/header"; import type { rainChkZodType } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn"; import type { rswtChkZodType } from "@/app/store/prfmncReg/chkgdnReg/rswrtChkgdn"; import { Checkbox, Input, TableCell, TableRow } from "@common/components/ui"; -import { formatCommaNumber } from "./commom"; +import { formatCommaNumber, handleCommaNumberChange } from "./commom"; export const rainChkTableData = (chkData: rainChkZodType[]) => { // 1. chkgdnSn + utztnUsgCd 기준 누계 정보 만들기 @@ -161,22 +161,40 @@ export const chRowspanTable = ( onClick={() => handleCellClick(rowIndex, head.id)} > {head.edit === true ? ( - { - handleChange(rowIndex, head.id, e.target.value); - }} - value={value || ""} - disabled={!selectedIds.includes(row.chkgdnSn)} - maxLength={numSize} - //input type number일때 slice 처리 - onInput={(e: React.ChangeEvent) => { - if (head.type === 'number' && e.target.value.length > numSize) { - e.target.value = e.target.value.slice(0, numSize); - } - }} - /> + (["levyAmt", "anlOperCst", "dtfcltCpct", "prcsCpct"].includes(head.id)) ? ( + { + handleCommaNumberChange(e, val => + handleChange(rowIndex, head.id, val)) + }} + value={formatCommaNumber(value) || ""} + disabled={!selectedIds.includes(row.chkgdnSn)} + maxLength={numSize} + onInput={(e: React.ChangeEvent) => { + if (head.type === 'number' && e.target.value.length > numSize) { + e.target.value = e.target.value.slice(0, numSize); + } + }} + /> + ) : ( + { + handleChange(rowIndex, head.id, e.target.value); + }} + value={value || ""} + disabled={!selectedIds.includes(row.chkgdnSn)} + maxLength={numSize} + onInput={(e: React.ChangeEvent) => { + if (head.type === 'number' && e.target.value.length > numSize) { + e.target.value = e.target.value.slice(0, numSize); + } + }} + /> + ) ) : ( (["totalSplyUswtrUtztnQnt", "totalRuseFcltUtztnQnt", "splyUswtrUtztnQnt", "ruseFcltUtztnQnt", "levyAmt"].includes(head.id)) ? ( @@ -188,7 +206,6 @@ export const chRowspanTable = ( )} ); - })} ))) : ( From 03675aaa6062402fbb3772e97cd966c0f7abd890 Mon Sep 17 00:00:00 2001 From: jyha00 Date: Tue, 22 Jul 2025 14:36:09 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=EC=9E=AC=EC=9D=B4=EC=9A=A9=ED=86=B5?= =?UTF-8?q?=EA=B3=84=20=EC=97=91=EC=85=80=20=EB=8B=A4=EC=9A=B4=EB=A1=9C?= =?UTF-8?q?=EB=93=9C=EC=8B=9C=20=EC=8B=9C=EB=8F=84=EB=AA=85=20=EC=97=86?= =?UTF-8?q?=EC=9D=8C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wr/app/stats/rainStat/page.tsx | 76 +++++++++++++------------- apps/wr/app/stats/rswtStat/page.tsx | 84 +++++++++++++++-------------- 2 files changed, 82 insertions(+), 78 deletions(-) diff --git a/apps/wr/app/stats/rainStat/page.tsx b/apps/wr/app/stats/rainStat/page.tsx index 591ea5fdf..528f17cd4 100644 --- a/apps/wr/app/stats/rainStat/page.tsx +++ b/apps/wr/app/stats/rainStat/page.tsx @@ -31,7 +31,7 @@ export default function RainStat() { searchRainStatList(searchYear); }, [code.cityCd, code.sggCd, searchRainStatList]) - const excelDetailDownLoad=() =>{ + const excelDetailDownLoad = () => { const sidoList = new Set(); const sidoDataMap = new Map(); // 시도별 데이터를 저장할 Map const sidoDetailMap = new Map(); // 시도별 상세 데이터를 저장할 Map @@ -49,7 +49,7 @@ export default function RainStat() { sidoText = sido?.text || ''; sigunText = sigun?.text || ''; - + // 시도, 시군구 코드를 텍스트로 변환하여 데이터에 할당 if (item.length > 0) { item[0] = sidoText as unknown as RainStatProps; @@ -58,7 +58,7 @@ export default function RainStat() { item[1] = sigunText as unknown as RainStatProps; } if (item.length > 2) { - item[2] = sidoText+' '+sigunText as unknown as RainStatProps; + item[2] = sidoText + ' ' + sigunText as unknown as RainStatProps; } // 시도별 상세 데이터 수집 @@ -89,32 +89,32 @@ export default function RainStat() { const sidoData = sidoDataMap.get(sidoText)!; // 각 컬럼의 값을 합계에 더하기 (1번 인덱스부터 시작) for (let i = 1; i < item.length && i < sidoData.length; i++) { - if(i == 2){ + if (i == 2) { sidoData[i] = '합계'; - } else if(i == 3){ + } else if (i == 3) { // 해당 시도의 데이터 개수를 계산 - const sidoDataCount = rainDetailList.filter((data: unknown[]) => + const sidoDataCount = rainDetailList.filter((data: unknown[]) => Array.isArray(data) && data.length > 0 && String(data[0]) === sidoText ).length; sidoData[i] = sidoDataCount; - } else if( i == 4){ + } else if (i == 4) { sidoData[i] = ''; - } else if(i == 6){ + } else if (i == 6) { // 법정 대상 건축물 개수 (인덱스 6이 'Y'인 경우) - const bumCnt = rainDetailList.filter((data: unknown[]) => + const bumCnt = rainDetailList.filter((data: unknown[]) => Array.isArray(data) && data.length > 6 && String(data[0]) === sidoText ).filter((data: unknown[]) => String(data[6]) === '대상').length; sidoData[i] = bumCnt; - } else if(i==8){ + } else if (i == 8) { const value = Number(item[8]) || 0; sidoData[i] = (Number(sidoData[i]) + value) as string | number; - } else if(i==11){ + } else if (i == 11) { const value = Number(item[11]) || 0; sidoData[i] = (Number(sidoData[i]) + value) as string | number; - } else if(i==12){ + } else if (i == 12) { const value = Number(item[12]) || 0; sidoData[i] = (Number(sidoData[i]) + value) as string | number; - } else if(i==14){ + } else if (i == 14) { const value = Number(item[14]) || 0; sidoData[i] = (Number(sidoData[i]) + value) as string | number; } @@ -127,12 +127,12 @@ export default function RainStat() { // 시도별로 합계와 상세 데이터를 순서대로 배치 const summaryExcelData: (string | number)[][] = []; - + // 시도별로 순회하면서 합계와 상세 데이터를 추가 Array.from(sidoList).forEach((sidoText) => { const sidoSummary = sidoDataMap.get(sidoText); const sidoDetails = sidoDetailMap.get(sidoText) || []; - + if (sidoSummary) { // 시도 합계 데이터 추가 summaryExcelData.push(sidoSummary); @@ -147,14 +147,14 @@ export default function RainStat() { const sidoTotalSummary = [['전체', '', '합계', 0, '', '', 0, '', '', 0, 0, 0, 0, 0, 0, '', 0]]; sidoSummaryList.forEach((item: (string | number)[]) => { item.forEach((value: string | number, index: number) => { - if(typeof value === 'number') { + if (typeof value === 'number') { if (sidoTotalSummary[0] && index < sidoTotalSummary[0].length) { sidoTotalSummary[0][index] = Number(sidoTotalSummary[0][index]) + Number(value); } } }); }); - + // sidoSummaryList와 rainDetailList를 합쳐서 엑셀 데이터 생성 const excelData = [...sidoTotalSummary, ...sidoSummaryList, ...summaryExcelData]; @@ -175,28 +175,30 @@ export default function RainStat() { headerRange: "A1:M1" }) } - + useEffect(() => { const transExcel = Array.isArray(excelList) ? excelList : [excelList]; const excelData = tableData(transExcel, { code }); const tbData = Array.isArray(excelData) - ? excelData.map((item: RainStatProps) => { - return { - "시도": item.cityText, - "개소": item.tmp, - "설치비(백만원)": item.instlCst, - "저류조용량(m³/년)": item.dtfcltCpct, - "연간사용량(m³/년)": item.wtrUsqty, - "조경용수": item.lndwtr, - "청소화장실용수": item.cleanToilUswtr, - "세척살수용수": item.resn, - "농업용수": item.farmUswtr, - "공업용수": item.indstUswtr, - "친수용수": item.hydUswtr, - "기타": item.ithlEtcUswtr, - "연간운영비(백만원/년)": item.anlOperCst, - }; - }) + ? excelData + .filter((item: RainStatProps) => item.cityText !== '없음') + .map((item: RainStatProps) => { + return { + "시도": item.cityText, + "개소": item.tmp, + "설치비(백만원)": item.instlCst, + "저류조용량(m³/년)": item.dtfcltCpct, + "연간사용량(m³/년)": item.wtrUsqty, + "조경용수": item.lndwtr, + "청소화장실용수": item.cleanToilUswtr, + "세척살수용수": item.resn, + "농업용수": item.farmUswtr, + "공업용수": item.indstUswtr, + "친수용수": item.hydUswtr, + "기타": item.ithlEtcUswtr, + "연간운영비(백만원/년)": item.anlOperCst, + }; + }) : []; setExData(tbData); }, [code, excelList]) @@ -237,7 +239,7 @@ export default function RainStat() { />
-