From 7c95c1ad8c0d8b4d74fa109020d9bec032049485 Mon Sep 17 00:00:00 2001 From: jyha00 Date: Wed, 25 Jun 2025 18:32:24 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A7=80=EB=8F=84=EC=A0=90=EA=B2=80=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=EB=93=B1=EB=A1=9D=20=EB=AA=A8=EB=8B=AC=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95,=20=EC=84=A0=ED=83=9D=EB=90=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EC=9D=80=20=EA=B0=92=20disabled=EB=A1=9C?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruseFcltMng/prfmncReg/chkgdnReg/page.tsx | 9 +- .../prfmncReg/chkgdnReg/rainChkgdn/excel.tsx | 186 +++++++++--------- .../prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx | 12 ++ apps/wr/components/lib/func/TableData.tsx | 3 +- .../chkgdTable/rswtChkgd/rswtChkgdTable.tsx | 2 +- 5 files changed, 113 insertions(+), 99 deletions(-) diff --git a/apps/wr/app/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx b/apps/wr/app/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx index 3517adfc3..0468cfd3b 100644 --- a/apps/wr/app/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx +++ b/apps/wr/app/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx @@ -41,6 +41,7 @@ export default function Page() { isRainSttn, rswtChkgdnInit, + rswtChkPolInit, rswtChkDetilsUpdate, rswtChkDelete, rswtrChkExcelDownload, @@ -85,7 +86,6 @@ export default function Page() { }, [rainChkgdn.isInit, rainChkInit]); useEffect(() => { - if (rswtChkgdn.excelList[0]?.data.length > 1) excelArrayDownload( "중수도시설 지도점검", @@ -119,7 +119,6 @@ export default function Page() { const handleClick = useCallback( (data: any) => { - if (data) setIsModal({ open: !isModal.open, data: data }); }, [isModal] @@ -181,8 +180,10 @@ export default function Page() { label={""} selectClass={""} selectArray={rainChkgdn.fcltDiv} - onSelectValue={(val: string | number) => - setSelFcltDiv(String(val)) + onSelectValue={(val: string | number) =>{ + if(val === "RST") rswtChkPolInit(); + setSelFcltDiv(String(val)) + } } value={selFcltDiv ?? rainChkgdn.fcltDiv[0]?.val} /> diff --git a/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/excel.tsx b/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/excel.tsx index ed23740d0..5754c02fc 100644 --- a/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/excel.tsx +++ b/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/excel.tsx @@ -32,106 +32,106 @@ export const buildingToExcelType = ( sggCdoe: SelectDataType[], ) => { const excelData: string[][] = []; - buildings.forEach((building) => { - useTypes.forEach((useType) => { - excelData.push([ - building.bdstInfoPk.toString(), - sidoCode.find((sido) => sido.val === building.ctpvCd.toString()) - ?.text || "", - sggCdoe.find((sido) => sido.val === building.sggCd.toString()) - ?.text || "", - building.daddr, - building.bdstNm, - "", - "", - "", - "", - useType, - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - ]); - }); + buildings.forEach((building) => { + useTypes.forEach((useType) => { + excelData.push([ + building.bdstInfoPk.toString(), + sidoCode.find((sido) => sido.val === building.ctpvCd.toString()) + ?.text || "", + sggCdoe.find((sido) => sido.val === building.sggCd.toString()) + ?.text || "", + building.daddr, + building.bdstNm, + "", + "", + "", + "", + useType, + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + ]); }); - return excelData; - + }); + return excelData; + }; export const excelToRainChkData = (excelData: any, year: string) => { const rainChkgdData: rainChkZodType[] = excelData.map((item: any) => { if (item["점검일"] !== undefined) { - const checkYmd = item["점검일"].replace(/\./g, "") - let vltnDt = item["과태료 부과일(위반일)"] - if (vltnDt !== undefined) { - vltnDt = vltnDt .replace(/\./g, "") - } - const makeGuidDetail = Array.from({ length: 12 }, (_, i) => { - let month = `${i + 1}`; - const splyData = item[`보급_${month}월`]; - const ruseData = item[`빗물_${month}월`]; - if (month.length < 2) month = "0" + month; - return { - utztnUsgCd: item["이용용도"], - ym: year + month, - chckYmd: checkYmd, - splyUswtrUtztnQnt: splyData !== undefined ? splyData : 0, - ruseFcltUtztnQnt: ruseData !== undefined ? ruseData : 0, - flg: "RNB", - }; - }); - - return { - - bdstRuseFcltFk: Number(item["NO"]), - chckYmd: checkYmd, - spwtPositn: item["유량측정방법"], - rgtr: TEST_UUID, - oilqMeasMthd: item["운영관리형태"], - anlOperCst: Number(item["연간운영비(원/년)"]) ?? 0, - operMngCd: item["유량측정방법"], - guideDetails: makeGuidDetail, - rainyDetails: [ - { + const checkYmd = item["점검일"].replace(/\./g, "") + let vltnDt = item["과태료 부과일(위반일)"] + if (vltnDt !== undefined) { + vltnDt = vltnDt ? vltnDt.replace(/\./g, "") : ""; + } + const makeGuidDetail = Array.from({ length: 12 }, (_, i) => { + let month = `${i + 1}`; + const splyData = item[`보급_${month}월`]; + const ruseData = item[`빗물_${month}월`]; + if (month.length < 2) month = "0" + month; + return { utztnUsgCd: item["이용용도"], - ph: Number(item["PH"]) ?? 0, - trbt: Number(item["탁도"]) ?? 0, - grssClfg: Number(item["총대장균군수"]) ?? 0, - etc: item["기타"] ?? "", // 필드 누락 방지 - vltnDt: vltnDt, - vltnMttr: item["위반사항"], - levyAmt: Number(item["과태료부과금액(천원)"]) ?? 0, - rgtr: TEST_UUID, - }, - ], - }; - } + ym: year + month, + chckYmd: checkYmd, + splyUswtrUtztnQnt: Number(splyData ?? 0), + ruseFcltUtztnQnt: Number(ruseData ?? 0), + flg: "RNB", + }; + }); + + return { + + bdstRuseFcltFk: Number(item["NO"]), + chckYmd: checkYmd, + spwtPositn: item["유량측정방법"] ?? "", + rgtr: TEST_UUID, + oilqMeasMthd: item["운영관리형태"] ?? "", + anlOperCst: Number(item["연간운영비(원/년)"]) ?? 0, + operMngCd: item["유량측정방법"] ?? "", + guideDetails: makeGuidDetail, + rainyDetails: [ + { + utztnUsgCd: item["이용용도"] ?? "", + ph: Number(item["PH"] ?? 0), + trbt: Number(item["탁도"] ?? 0), + grssClfg: Number(item["총대장균군수"] ?? 0), + etc: item["기타"] ?? "", // 필드 누락 방지 + vltnDt: vltnDt ?? "", + vltnMttr: item["위반사항"] ?? "", + levyAmt: Number(item["과태료부과금액(천원)"] ?? 0), + rgtr: TEST_UUID, + }, + ], + }; + } }).filter((el: any) => el !== undefined); return rainChkgdData; }; diff --git a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx index c6737b31e..8b7c5f91d 100644 --- a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx +++ b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx @@ -55,6 +55,7 @@ type rswtChkgdnActions = { rswtChkDelete: (chkgdnPks: number[]) => void; rswtChkDetilsUpdate: (rswtChkDetails: rswtrChkDetailsZodType[]) => void; rswtChkPolAndGuide: (chkGdnPk: number) => void; + rswtChkPolInit: () => void; rwstPolAndGuideUpdate: (rswtChk: rswtChkZodType[]) => void; rswtChkHeadChange: (rswtChkgdn: rswtChkgdnState, isEdit: boolean) => void; }; @@ -237,6 +238,17 @@ export const rswtChkgdnActionsExport: (set: any) => rswtChkgdnActions = ( })); } catch (error) {} }, + rswtChkPolInit: () => { + try { + return set((state: rswtChkgdnState) => ({ + ...state, + rswtChkgdn: { + ...state.rswtChkgdn, + rswtChkPolGuide: undefined, + }, + })); + } catch (error) {} + }, rwstPolAndGuideUpdate: async (rswtChk: rswtChkZodType[]) => { try { const chData = await makeMdfrChk(rswtChk); diff --git a/apps/wr/components/lib/func/TableData.tsx b/apps/wr/components/lib/func/TableData.tsx index c21a7e70a..dbb3aa7a6 100644 --- a/apps/wr/components/lib/func/TableData.tsx +++ b/apps/wr/components/lib/func/TableData.tsx @@ -152,7 +152,8 @@ export const chRowspanTable = ( onChange={(e) => { handleChange(rowIndex, head.id, e.target.value); }} - value={value} + value={value ?? ""} + disabled={!selectedIds.includes(row.chkgdnPk)} /> ) : ( (head.id === "totalSplyUswtrUtztnQnt" || head.id === "totalRuseFcltUtztnQnt" || head.id === "splyUswtrUtztnQnt" || head.id === "ruseFcltUtztnQnt") ? ( diff --git a/apps/wr/components/ui/table/chkgdTable/rswtChkgd/rswtChkgdTable.tsx b/apps/wr/components/ui/table/chkgdTable/rswtChkgd/rswtChkgdTable.tsx index 20db75f50..da6cacc9a 100644 --- a/apps/wr/components/ui/table/chkgdTable/rswtChkgd/rswtChkgdTable.tsx +++ b/apps/wr/components/ui/table/chkgdTable/rswtChkgd/rswtChkgdTable.tsx @@ -62,7 +62,7 @@ export default function RswtChkgdTable({ [makeTableData, handleRswtClick] ); useEffect(() => { - if (rswtChkgdn.rswtChkPolGuide.length > 0) + if (rswtChkgdn.rswtChkPolGuide?.length > 0) handleRswtClick(rswtChkgdn.rswtChkPolGuide[0]); }, [rswtChkgdn.rswtChkPolGuide]);