From dd5ff0f7f8c83455a824b7ab129fc6012566e9cf Mon Sep 17 00:00:00 2001 From: ljpark Date: Mon, 6 Apr 2026 18:21:15 +0900 Subject: [PATCH] =?UTF-8?q?wr:=20=EC=A4=91=EC=88=98=EB=8F=84=EC=8B=9C?= =?UTF-8?q?=EC=84=A4=20=EC=A7=80=EB=8F=84=EC=A0=90=EA=B2=80=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20=EB=93=B1=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruseFcltMng/prfmncReg/chkgdnReg/page.tsx | 44 ++++++++++--------- .../prfmncReg/chkgdnReg/rswrtChkgdn/excel.tsx | 40 ++++++++--------- .../prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx | 32 +++++++------- 3 files changed, 61 insertions(+), 55 deletions(-) diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx index 363f07e82..3613603ad 100644 --- a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx +++ b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx @@ -1,4 +1,8 @@ -"use client"; +/** + * 재이용실적등록 > 지도점검결과등록 + */ + +"use client"; import { useWrStore } from "@/app/store"; import { btnClass } from "@/app/store/common/code"; @@ -43,25 +47,25 @@ import { useTranslation } from "react-i18next"; export default function Page() { const { - auth, - code, - rainChkgdn, - rswtChkgdn, - rainChkInit, - rainChkDetilUpdate, - rainChkDelete, - rainChkExcelDownload, - rainChkHeadChange, - rainChkNmSearch, - isRainSttn, - rswtChkgdnInit, - rswtChkNmSearch, - rswtChkPolInit, - rswtChkDetilsUpdate, - rswtChkDelete, - rswtrChkExcelDownload, - rswtChkHeadChange, - getLaeSeCdCheck + auth, // 사용자 권한 및 로그인 사용자 기준 정보 + code, // 공통 코드 및 지역 코드 정보 + rainChkgdn, // 빗물이용시설 지도점검 화면 상태 + rswtChkgdn, // 중수도시설 지도점검 화면 상태 + rainChkInit, // 빗물이용시설 지도점검 목록 초기 조회 + rainChkDetilUpdate, // 빗물이용시설 지도점검 상세 수정 저장 + rainChkDelete, // 빗물이용시설 지도점검 선택 건 삭제 + rainChkExcelDownload, // 빗물이용시설 지도점검 엑셀 양식/데이터 조회 + rainChkHeadChange, // 빗물이용시설 테이블 헤더 선택 상태 변경 + rainChkNmSearch, // 빗물이용시설명으로 목록 조회 + isRainSttn, // 빗물이용시설 상세/선택 상태 초기화 + rswtChkgdnInit, // 중수도시설 지도점검 목록 초기 조회 + rswtChkNmSearch, // 중수도시설명으로 목록 조회 + rswtChkPolInit, // 중수도 시설구분 변경 시 조회조건 초기화 + rswtChkDetilsUpdate, // 중수도시설 지도점검 상세 수정 저장 + rswtChkDelete, // 중수도시설 지도점검 선택 건 삭제 + rswtrChkExcelDownload, // 중수도시설 지도점검 엑셀 양식/데이터 조회 + rswtChkHeadChange, // 중수도시설 테이블 헤더 선택 상태 변경 + getLaeSeCdCheck // 사용자 관할 기관 코드 조회 } = useWrStore((state) => { return state; }); diff --git a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/excel.tsx b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/excel.tsx index fe2d87bc3..6826dcb87 100644 --- a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/excel.tsx +++ b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/excel.tsx @@ -13,6 +13,11 @@ import { } from "../rainChkgdn/excel"; import { codeToText, textToCode } from "@/components/lib/func/common"; +const normalizeExcelDateInput = (value: unknown) => { + if (value === undefined || value === null) return ""; + return String(value).replace(/[.\-\/\s]/g, ""); +}; + export const rswtMakeExcelSample = ( buildings: Buildingtype[], sidoCode: SelectDataType[], @@ -142,7 +147,7 @@ export const excelToRswtGuideData = ( const rswtChkgdData: rswtChkZodType[] = excelData .map((item: any) => { if (item["점검일"] !== undefined) { - const checkYmd = item["점검일"].replace(/\./g, ""); + const checkYmd = normalizeExcelDateInput(item["점검일"]); const makeGuidDetail = Array.from({ length: 12 }, (_, i) => { let month = `${i + 1}`; @@ -156,20 +161,18 @@ export const excelToRswtGuideData = ( ruseFcltUtztnQnt: rswtData !== "" ? rswtData : 0, }; }); - if (checkYmd.length > 7) { - return { - bdstRuseFcltSn: Number(item["NO"]), - operMngCd: textToCode(item["운영관리형태"], "rainRswtMng") ??item["운영관리형태"], - anlOperCst: parseCommaRawValue(item["연간운영비(원/년)"]), - prcsCpct: parseRawValue(item[`처리용량(m³)`]), - spwtPositn: item["채수지점"], - chckYmd: checkYmd, - utztnUsgCd: textToCode(item["이용용도"], "dmdUszCd")??item["이용용도"], - guideDetails: makeGuidDetail, - rgtr: TEST_UUID, - mdfr: TEST_UUID, - }; - } + return { + bdstRuseFcltSn: Number(item["NO"]), + operMngCd: textToCode(item["운영관리형태"], "rainRswtMng") ??item["운영관리형태"], + anlOperCst: parseCommaRawValue(item["연간운영비(원/년)"]), + prcsCpct: parseRawValue(item[`처리용량(m³)`]), + spwtPositn: item["채수지점"], + chckYmd: checkYmd, + utztnUsgCd: textToCode(item["이용용도"], "dmdUszCd")??item["이용용도"], + guideDetails: makeGuidDetail, + rgtr: TEST_UUID, + mdfr: TEST_UUID, + }; } }) .filter((el: any) => el !== undefined); @@ -186,11 +189,8 @@ export const excelToRswtPolution = (excelData: any) => { const rswtChkgdData: rswtChkZodType[] = excelData .map((item: any) => { if (item["점검일"] !== undefined) { - const checkYmd = item["점검일"].replace(/\./g, ""); - let vltnDt = item["과태료 부과일(위반일)"]; - if (vltnDt !== undefined) { - vltnDt = vltnDt.replace(/\./g, ""); - } + const checkYmd = normalizeExcelDateInput(item["점검일"]); + const vltnDt = normalizeExcelDateInput(item["과태료 부과일(위반일)"]); const makePoluttion = Array.from({ length: 4 }, (_, i) => { const quarter = `${i + 1}`; diff --git a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx index b480692f3..88b8fda0e 100644 --- a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx +++ b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/index.tsx @@ -41,19 +41,19 @@ export type rswtChkZodType = z.infer; export type rswtrChkDetailsZodType = z.infer; export type rswtChkgdnState = { rswtChkgdn: { - rswtChkHeadList: TableUpperProps[]; - rswtDetailHeadList: TableUpperProps[]; - - rswtHeadNm: chHeadType[]; - excelList: SheetParameter[]; - rswtChkRes: rswtChkZodType[]; - rswtChkPolGuide: rswtChkZodType[]; - rswtSplHeadNm:chHeadType[] - rswtRuseHeadNm:chHeadType[] - isInit: boolean; - isSttn: boolean; - isLoading:boolean; - rswtChkCount: number; + rswtChkHeadList: TableUpperProps[]; // 중수도 지도점검 메인 목록 헤더 + rswtDetailHeadList: TableUpperProps[]; // 중수도 지도점검 상세 목록 헤더 + + rswtHeadNm: chHeadType[]; // 메인 목록 다단 헤더명 + excelList: SheetParameter[]; // 엑셀 다운로드용 시트 데이터 + rswtChkRes: rswtChkZodType[]; // 중수도 지도점검 메인 목록 데이터 + rswtChkPolGuide: rswtChkZodType[]; // 선택한 지도점검 1건의 수질/대체수 상세 데이터 + rswtSplHeadNm:chHeadType[] // 공급량 관련 다단 헤더명 + rswtRuseHeadNm:chHeadType[] // 재이용량 관련 다단 헤더명 + isInit: boolean; // 초기 목록 조회 완료 여부 + isSttn: boolean; // 테이블 선택/상세 상태 제어 플래그 + isLoading:boolean; // 등록/업로드 등 비동기 처리 진행 여부 + rswtChkCount: number; // 메인 목록 전체 건수 }; }; @@ -242,12 +242,14 @@ export const rswtChkgdnActionsExport: (set: any) => rswtChkgdnActions = ( console.log(error); } }, + // 중수도 지도점검결과 upload rswtChkExceDataUpload: async (excelData: rswtChkZodType[],laeSeCd:string) => { const successMessage = "지도점검 등록이 완료되었습니다."; const failMessage = "지도점검 등록이 실패되었습니다."; + console.log(excelData); try { - set((state: rswtChkgdnType) => ( - { rswtChkgdn: { ...state.rswtChkgdn, isLoading: true } })); + set((state: rswtChkgdnType) => ( + { rswtChkgdn: { ...state.rswtChkgdn, isLoading: true } })); const res = await postFectch("/reuseChk/reuseWater", excelData); if (!res.ok) { return failMessage;