From 8dc47fc8057a718abfdeaf3c3cbc425c8af6ed70 Mon Sep 17 00:00:00 2001 From: jyha00 Date: Mon, 14 Jul 2025 10:19:00 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B9=97=EB=AC=BC/=EC=A4=91=EC=88=98=EB=8F=84/?= =?UTF-8?q?=EC=98=A8=EB=B0=B0=EC=88=98=20=EB=93=B1=EB=A1=9D=20=EC=8B=9C,?= =?UTF-8?q?=20=EC=A7=80=EB=8F=84=EC=A0=90=EA=B2=80=20=EB=93=B1=EB=A1=9D,?= =?UTF-8?q?=20=EC=82=AD=EC=A0=9C=20=EC=8B=9C,=20=EC=8B=A4=EC=A0=81=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D,=20=EC=82=AD=EC=A0=9C=20=EC=8B=9C=20confirm?= =?UTF-8?q?=20=EC=B0=BD=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruseFcltMng/prfmncReg/chkgdnReg/page.tsx | 13 +++- .../prfmncReg/pbnstPrfmncReg/page.tsx | 69 ++++++++++++------- .../ui/form/fcltReg/htdflReg/htdflRegForm.tsx | 27 +++++--- .../ui/form/fcltReg/rainReg/rainRegForm.tsx | 2 +- .../ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx | 2 +- apps/wr/public/locales/ko/message.json | 1 + 6 files changed, 76 insertions(+), 38 deletions(-) diff --git a/apps/wr/app/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx b/apps/wr/app/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx index ecd2fd0f6..cb3f2f9ef 100644 --- a/apps/wr/app/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx +++ b/apps/wr/app/ruseFcltMng/prfmncReg/chkgdnReg/page.tsx @@ -11,6 +11,7 @@ import { type rswtrChkDetailsZodType, } from "@/app/store/prfmncReg/chkgdnReg/rswrtChkgdn"; import { + confirmToast, excelArrayDownload, excelDownload, yearOptions, @@ -39,6 +40,7 @@ import { } from "@common/components/ui/tooltip"; import { useCallback, useEffect, useState } from "react"; import toast, { Toaster } from "react-hot-toast"; +import { useTranslation } from "react-i18next"; export default function Page() { const { @@ -201,12 +203,19 @@ export default function Page() { } }, [rainChkgdn.isSttn, rswtChkgdn.isSttn]); + const { t } = useTranslation('base'); const clickDelete = (data: number[], selFcltDiv: string) => { if (data.length > 0) { if (selFcltDiv === "RNB") { - rainChkDelete(data, searchYear); + const handleConfirm = async () => { + rainChkDelete(data, searchYear); + }; + confirmToast(t('isDeleteMsg'), handleConfirm); } else { - rswtChkDelete(data, searchYear); + const handleConfirm = async () => { + rswtChkDelete(data, searchYear); + }; + confirmToast(t('isDeleteMsg'), handleConfirm); } } }; diff --git a/apps/wr/app/ruseFcltMng/prfmncReg/pbnstPrfmncReg/page.tsx b/apps/wr/app/ruseFcltMng/prfmncReg/pbnstPrfmncReg/page.tsx index 5ea418634..b8d486a32 100644 --- a/apps/wr/app/ruseFcltMng/prfmncReg/pbnstPrfmncReg/page.tsx +++ b/apps/wr/app/ruseFcltMng/prfmncReg/pbnstPrfmncReg/page.tsx @@ -1,7 +1,7 @@ "use client"; import { useWrStore } from "@/app/store"; import type { pubHasuType } from "@/app/store/ruseFcltMng/fcltReg/pbnstReg/type"; -import { excelDownload, yearOptions } from "@/components/lib/func/commom"; +import { confirmToast, excelDownload, yearOptions } from "@/components/lib/func/commom"; import PbnPrfExcelModal from "@/components/ui/modal/chkgd/pbnPrfExcelModal/pbnPrfExcelModal"; import { ContentsDiv, @@ -37,12 +37,13 @@ import { type PrfType, } from "@/app/store/prfmncReg/pbnstPrfmncReg/type"; import { excelToPbnPrfData } from "@/app/store/prfmncReg/pbnstPrfmncReg/excel"; +import { useTranslation } from "react-i18next"; export default function prfmncPrfmncReg() { - const { code, prfmnc, prfmncHasuInit, prfmnRegData,prfmncHasuNmSearch } = useWrStore( + const { code, prfmnc, prfmncHasuInit, prfmnRegData, prfmncHasuNmSearch } = useWrStore( (state) => state ); - const { pbnstPrfmncHeadList, monthHeadList, prfmncRes,prfmncResCount } = prfmnc; + const { pbnstPrfmncHeadList, monthHeadList, prfmncRes, prfmncResCount } = prfmnc; const [bdstTable, setbdstTable] = useState(); const [searchTxt, setSearchTxt] = useState(); const [isExcelOpen, setIsExcelOPen] = useState<{ @@ -65,20 +66,40 @@ export default function prfmncPrfmncReg() { "A1:O1" ); }, [prfmnc.excelList]); + /* + const onSave = useCallback( + async() => { + if (pbnstRuseFcltPk) { + await prfmnRegData(pageNation,'41', + excelToPbnPrfData( + inputData as unknown as JSON[], + searchYear, + pbnstRuseFcltPk + ) as unknown as PrfType + ); + // cellClick(cellNum) + } + }, [inputData, searchYear, pbnstRuseFcltPk, pageNation,cellNum]);*/ - const onSave = useCallback( - async() => { - if (pbnstRuseFcltPk) { - await prfmnRegData(pageNation,'41', + const { t } = useTranslation('base'); + const onSave = useCallback(() => { + const handleConfirm = async () => { + if (!pbnstRuseFcltPk) return; + + prfmnRegData( + pageNation, + '41', excelToPbnPrfData( inputData as unknown as JSON[], searchYear, pbnstRuseFcltPk - ) as unknown as PrfType + ) as unknown as PrfType, + searchYear ); - // cellClick(cellNum) - } - }, [inputData, searchYear, pbnstRuseFcltPk, pageNation,cellNum]); + }; + + confirmToast(t('isUpdateMsg'), handleConfirm); + }, [inputData, searchYear, pbnstRuseFcltPk, pageNation, cellNum]); const cellClick = useCallback( (index: number | undefined) => { @@ -165,13 +186,13 @@ export default function prfmncPrfmncReg() { useEffect(() => { if (!prfmnc.isInit) { const year = new Date().getFullYear() - prfmncHasuInit(1, "41",String(year)); + prfmncHasuInit(1, "41", String(year)); } }, [prfmnc.isInit, prfmncHasuInit]); useEffect(() => { - if(prfmncRes&&prfmncRes.length>0){ + if (prfmncRes && prfmncRes.length > 0) { setbdstTable(prfmncRes); } @@ -224,14 +245,14 @@ export default function prfmncPrfmncReg() {
@@ -282,8 +303,8 @@ export default function prfmncPrfmncReg() { setCellNum(index ?? 0); }} onPageChange={ - (page) =>{ - prfmncHasuInit(page, "41",searchYear); + (page) => { + prfmncHasuInit(page, "41", searchYear); setPageNation(page) }} children={undefined} @@ -303,7 +324,7 @@ export default function prfmncPrfmncReg() { {headMakeprfmnc(monthHeadList, [])} - + {InputTableBody(inputData ?? [], monthHeadList, setInputData)} @@ -319,14 +340,14 @@ export default function prfmncPrfmncReg() { setIsExcelOPen={(open) => { setIsExcelOPen({ ...isExcelOpen, isModal: open }) }} - setModalExcelData={ async(excelData ) =>{ - await prfmnRegData(pageNation,'41', + setModalExcelData={async (excelData) => { + await prfmnRegData(pageNation, '41', excelData, searchYear ); // 데이터 저장 후 UI 업데이트는 useEffect가 감지하여 처리하므로 여기서는 호출하지 않습니다. } - } + } > } open={isExcelOpen.isModal} diff --git a/apps/wr/components/ui/form/fcltReg/htdflReg/htdflRegForm.tsx b/apps/wr/components/ui/form/fcltReg/htdflReg/htdflRegForm.tsx index 7e92301b8..85bb67044 100644 --- a/apps/wr/components/ui/form/fcltReg/htdflReg/htdflRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/htdflReg/htdflRegForm.tsx @@ -19,11 +19,13 @@ import { import { useEffect, useState } from "react"; import BdstReg from "../bdstReg/bdstReg"; import { + confirmToast, formatCommaNumber, handleCommaNumberChange, } from "@/components/lib/func/commom"; import { formH1Class } from "@/components/lib/class/comClass"; import toast from "react-hot-toast"; +import { useTranslation } from "react-i18next"; export default function HtdflRegForm({ htdflForm, @@ -48,20 +50,25 @@ export default function HtdflRegForm({ const bdstNm = form.watch("bdstNm"); const isPowerPlant = bdstNm?.includes("발전소"); - + const { t } = useTranslation('base'); const onSubmit = (values: z.infer) => { if (isModal) { const data = regCtpvCd ? regCtpvCd : regSggcd ? regSggcd : "noCd"; - if (data === "noCd") { toast.error("시도/시군구 코드를 선택해야합니다."); return; } - htdflBdstReg(values, data); - if (setIsModal) setIsModal(false); + const handleConfirm = async () => { + htdflBdstReg(values, data); + if (setIsModal) setIsModal(false); + }; + confirmToast(t('isInsertMsg'), handleConfirm); } else { + const handleConfirm = async () => { + htdflBdstUpdate(values, "0"); + }; + confirmToast(t('isUpdateMsg'), handleConfirm); - htdflBdstUpdate(values, "0"); } }; @@ -90,15 +97,15 @@ export default function HtdflRegForm({ }; }; const [divStyle, setDivStyle] = useState("h-[53vh]"); - useEffect(()=>{ - if(isModal===true){ + useEffect(() => { + if (isModal === true) { setDivStyle("h-[53vh] max-h-[37vh]") - }else if(readonly===true){ + } else if (readonly === true) { setDivStyle("h-[62vh]") - }else{ + } else { setDivStyle("h-[53vh]") } - },[isModal,readonly]); + }, [isModal, readonly]); useEffect(() => { console.log("form errors:", form.formState.errors); diff --git a/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx b/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx index 21a0923ea..a454f69c8 100644 --- a/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx @@ -146,7 +146,7 @@ export default function RainRegForm({ rainBdstReg(values, data); if (setIsModal) setIsModal(false); }; - confirmToast(t('isUpdateMsg'), handleConfirm); + confirmToast(t('isInsertMsg'), handleConfirm); } else { const handleConfirm = async () => { rainBdstUpdate(values, "41"); diff --git a/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx b/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx index cb661fee3..34765ae9a 100644 --- a/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx @@ -72,7 +72,7 @@ export default function RswtrRegForm({ rswtBdstReg(values, "41"); if (setIsModal) setIsModal(false); }; - confirmToast(t('isUpdateMsg'), handleConfirm); + confirmToast(t('isInsertMsg'), handleConfirm); } else { const handleConfirm = async () => { diff --git a/apps/wr/public/locales/ko/message.json b/apps/wr/public/locales/ko/message.json index d0e6ee02f..ee661980d 100644 --- a/apps/wr/public/locales/ko/message.json +++ b/apps/wr/public/locales/ko/message.json @@ -10,6 +10,7 @@ "fileDateErrMsg": "파일업로드 이전에 등록년도를 작성해주세요.", "isDeleteMsg": "선택한 정보를 삭제하시겠습니까?", "isUpdateMsg": "수정한 정보를 저장하시겠습니까?", + "isInsertMsg": "등록하시겠습니까?", "excelDownErrMsg": "다운로드할 데이터가 없습니다.", "alreadyInsertedErrMsg": "사업자번호 {{num}}(은)는 이미 등록되었습니다. 다시 등록해주세요.",