diff --git a/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx b/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx index a899f8128..d7ecee90a 100644 --- a/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx +++ b/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx @@ -129,9 +129,7 @@ export function PbnstRegModal({ formType={"reg"} firstFcltData={pbnstBdstForm} indexMng={indexMng} - setIndexMng={function (index: number): void { - throw new Error("Function not implemented."); - }} + setIndexMng={setIndexMng} /> diff --git a/apps/wr/components/ui/modal/sttn/pbnstSttnModal/pbnstSttnModal.tsx b/apps/wr/components/ui/modal/sttn/pbnstSttnModal/pbnstSttnModal.tsx index 1704a481d..438ab439c 100644 --- a/apps/wr/components/ui/modal/sttn/pbnstSttnModal/pbnstSttnModal.tsx +++ b/apps/wr/components/ui/modal/sttn/pbnstSttnModal/pbnstSttnModal.tsx @@ -1,9 +1,17 @@ import { useWrStore } from "@/app/store"; import type { TableUpperProps } from "@/app/store/common/type/header"; -import { initValInUsage, initValOutUsage, subTotalObj, totalObj, type PrfType } from "@/app/store/prfmncReg/pbnstPrfmncReg/type"; -import type { - customPbnst, - fcBizType, +import { + initValInUsage, + initValOutUsage, + subTotalObj, + totalObj, + type PrfType, +} from "@/app/store/prfmncReg/pbnstPrfmncReg/type"; +import { + pbnstRegArrayZod, + pbnstRegZod, + type customPbnst, + type fcBizType, } from "@/app/store/ruseFcltMng/fcltReg/pbnstReg/type"; import { PbnstMngForm } from "@/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm"; import { ScrollArea, Title, UiTable } from "@common/business_components/ui"; @@ -15,11 +23,13 @@ import { Button, TabsContent, } from "@common/components/ui"; +import { zodResolver } from "@hookform/resolvers/zod"; import { useEffect, useState } from "react"; -import { set } from "react-hook-form"; +import { set, useForm } from "react-hook-form"; +import { z } from "zod"; export function PbnstSttnModal({ data }: { data: customPbnst }) { - const { code, pbnstSttn,prfmnc } = useWrStore((state) => state); + const { code, pbnstSttn, prfmnc } = useWrStore((state) => state); const [fcltTab, setFcltTab] = useState("fclt"); const [ruseTab, setRuseTab] = useState("inoutTotal"); const [ruseBizData, setRuseBizData] = useState<{ @@ -28,9 +38,22 @@ export function PbnstSttnModal({ data }: { data: customPbnst }) { }>(); const [ruseHeadList, setRuseHeadList] = useState([]); const [ruseTableData, setRuseTableData] = useState([]); - const [prfData , setPrfData] = useState<{inPrf: any[],outPrf: any[], totalPrf:any[] }> () + const [prfData, setPrfData] = useState<{ + inPrf: any[]; + outPrf: any[]; + totalPrf: any[]; + }>(); + const [indexMng, setIndexMng] = useState(0); + const [indexBiz, setIndexBiz] = useState(0); + const form = useForm<{ + items: z.infer[]; + }>({ + resolver: zodResolver(z.object({ items: pbnstRegArrayZod })), + defaultValues: { items: pbnstRegArrayZod.parse([]) }, + mode: "onChange", + }); - const {monthHeadList } = prfmnc; + const { monthHeadList } = prfmnc; useEffect(() => { let tableData; if (fcltTab === "fclt") { @@ -38,46 +61,46 @@ export function PbnstSttnModal({ data }: { data: customPbnst }) { return { cycl: item.cycl + "차", seCd: item.seCd, - gvsbs: item.gvsbs??'-', - lcep: item.lcep??'-', - cusrAlotm: item.cusrAlotm??'-', - etc: item.etc??'-', + gvsbs: item.gvsbs ?? "-", + lcep: item.lcep ?? "-", + cusrAlotm: item.cusrAlotm ?? "-", + etc: item.etc ?? "-", totalMoney: Number(item.addr) + Number(item.gvsbs) + Number(item.lcep) + Number(item.cusrAlotm), - instlAprvSncnDt: item.instlAprvSncnDt?.toISOString??'-', - bizCmcnDay: item.bizCmcnDay?.toISOString??'-', - rprcsFcltCpct: item.rprcsFcltCpct??'-', - rprcsMthdCd: item.rprcsMthdCd??'-', - majorPrcsMsrcCd: item.majorPrcsMsrcCd??'-', - inoutYn: item.inoutYn??'-', - addr: item.addr??'-', + instlAprvSncnDt: item.instlAprvSncnDt?.toISOString ?? "-", + bizCmcnDay: item.bizCmcnDay?.toISOString ?? "-", + rprcsFcltCpct: item.rprcsFcltCpct ?? "-", + rprcsMthdCd: item.rprcsMthdCd ?? "-", + majorPrcsMsrcCd: item.majorPrcsMsrcCd ?? "-", + inoutYn: item.inoutYn ?? "-", + addr: item.addr ?? "-", }; }); } else if (fcltTab === "sply") { tableData = data.fcBizs.flatMap((item: fcBizType) => { - return item?.fcOrgwts?.map((fcOrgwt) => { - return { - cycl: item.cycl + "차", - orgwtWtritQnt: fcOrgwt.orgwtWtritQnt, - tmsYn: fcOrgwt.tmsYn, - dschgFmYn: fcOrgwt.dschgFmYn, - dtlPstnExpln: fcOrgwt.dtlPstnExpln, - }; - }) + return item?.fcOrgwts?.map((fcOrgwt) => { + return { + cycl: item.cycl + "차", + orgwtWtritQnt: fcOrgwt.orgwtWtritQnt, + tmsYn: fcOrgwt.tmsYn, + dschgFmYn: fcOrgwt.dschgFmYn, + dtlPstnExpln: fcOrgwt.dtlPstnExpln, + }; + }); }); } else if (fcltTab === "ppi") { tableData = data.fcBizs?.flatMap((item: fcBizType) => { - return item?.pplInstls?.map((ppl) => { - return { - cycl: item.cycl + "차", - ppMqlt: ppl.ppMqlt, - pdmt: ppl.pdmt, - cpct: ppl.cpct, - }; - }) + return item?.pplInstls?.map((ppl) => { + return { + cycl: item.cycl + "차", + ppMqlt: ppl.ppMqlt, + pdmt: ppl.pdmt, + cpct: ppl.cpct, + }; + }); }); } else if (fcltTab === "guarantee") { tableData = data.fcBizs?.map((item: fcBizType) => { @@ -97,18 +120,20 @@ export function PbnstSttnModal({ data }: { data: customPbnst }) { }); } else if (fcltTab === "dmdCo") { tableData = data.fcBizs?.flatMap((item: fcBizType) => { + + console.log("item.fcDemands", item.fcDemands); return item?.fcDemands?.map((dmd) => { - return { - cycl: item.cycl + "차", - dmdCoNm: dmd.dmdCoNm, - daddr: dmd.daddr, - useUsgCd: dmd.useUsgCd, - splyBgngDay: dmd.splyBgngDay?.toISOString, - splyEndDay: dmd.splyEndDay?.toISOString, - splyCpct: dmd.splyCpct, - splyFmYn: dmd.splyFmYn, - }; - }) + return { + cycl: item.cycl + "차", + dmdCoNm: dmd.dmdCoNm, + daddr: dmd.daddr, + useUsgCd: dmd.useUsgCd, + splyBgngDay: dmd.splyBgngDay?.toISOString, + splyEndDay: dmd.splyEndDay?.toISOString, + splyCpct: dmd.splyCpct, + splyFmYn: dmd.splyFmYn, + }; + }); }); } console.log(tableData); @@ -137,85 +162,98 @@ export function PbnstSttnModal({ data }: { data: customPbnst }) { pbnstSttn.ruseDmdHeadList, ]); - const getTablePrfData = (prfList:PrfType[]) => { + const getTablePrfData = (prfList: PrfType[]) => { const inUsageData = [...initValInUsage]; const outUsageData = [...initValOutUsage]; const inSubtotal = subTotalObj; const outSubtotal = subTotalObj; - + if (prfList) { prfList?.forEach((prfItem) => { - const month = Number(prfItem?.ym?.slice(4)); // "MM" - const monthKey = `${month}월`; + const month = Number(prfItem?.ym?.slice(4)); // "MM" + const monthKey = `${month}월`; - inUsageData.forEach((inData: any) => { - const usageKey = inData.usage; - const value = (prfItem as any)[usageKey] ?? 0; + inUsageData.forEach((inData: any) => { + const usageKey = inData.usage; + const value = (prfItem as any)[usageKey] ?? 0; - inData[monthKey] = value; - inData.total += value; + inData[monthKey] = value; + inData.total += value; - if (inSubtotal && usageKey !== "subtotal") { - (inSubtotal as any)[monthKey] = - ((inSubtotal as any)[monthKey] ?? 0) + value; - inSubtotal.total += value; - } - }); + if (inSubtotal && usageKey !== "subtotal") { + (inSubtotal as any)[monthKey] = + ((inSubtotal as any)[monthKey] ?? 0) + value; + inSubtotal.total += value; + } + }); - outUsageData.forEach((outData: any) => { - const usageKey = outData.usage; - const value = (prfItem as any)[usageKey] ?? 0; + outUsageData.forEach((outData: any) => { + const usageKey = outData.usage; + const value = (prfItem as any)[usageKey] ?? 0; - outData[monthKey] = value; - outData.total += value; + outData[monthKey] = value; + outData.total += value; - if (usageKey !== "subtotal") { - (outSubtotal as any)[monthKey] = - ((outSubtotal as any)[monthKey] ?? 0) + value; - outSubtotal.total += value; - } - }); - }); - inUsageData.push(inSubtotal); - outUsageData.push(outSubtotal); - const usageTotalObj: { [key: string]: any } = totalObj; - for (const key in usageTotalObj) { - if (["usage", "gubun", "edit"].includes(key)) continue; - const val = - (Number((inSubtotal as any)[key]) || 0) + - (Number((outSubtotal as any)[key]) || 0); + if (usageKey !== "subtotal") { + (outSubtotal as any)[monthKey] = + ((outSubtotal as any)[monthKey] ?? 0) + value; + outSubtotal.total += value; + } + }); + }); + inUsageData.push(inSubtotal); + outUsageData.push(outSubtotal); + const usageTotalObj: { [key: string]: any } = totalObj; + for (const key in usageTotalObj) { + if (["usage", "gubun", "edit"].includes(key)) continue; + const val = + (Number((inSubtotal as any)[key]) || 0) + + (Number((outSubtotal as any)[key]) || 0); - (usageTotalObj as any)[key] = val; - } - const tableData = [...inUsageData, ...outUsageData, usageTotalObj]; + (usageTotalObj as any)[key] = val; + } + const tableData = [...inUsageData, ...outUsageData, usageTotalObj]; - setPrfData({ - inPrf: inUsageData, - outPrf: outUsageData, - totalPrf: tableData, - }); + setPrfData({ + inPrf: inUsageData, + outPrf: outUsageData, + totalPrf: tableData, + }); } + }; + useEffect(() => { + if (pbnstSttn.pbnstSttnRes && data) { + const prfList = pbnstSttn.pbnstSttnRes.find( + (item) => item.pbnstRuseFcltPk === data.pbnstRuseFcltPk + )?.prfList; - } - useEffect(() => { - - if(pbnstSttn.pbnstSttnRes&&data){ - const prfList = pbnstSttn.pbnstSttnRes.find((item) => item.pbnstRuseFcltPk=== data.pbnstRuseFcltPk )?.prfList - - if(prfList){ - getTablePrfData(prfList) + if (prfList) { + getTablePrfData(prfList); + } } - - } }, [pbnstSttn.pbnstSttnRes, data]); useEffect(() => {}, [ruseBizData?.head]); + + + useEffect(()=>{ + + if(data){ + form.reset({items:[data]}) + } + + },[data, form]) return ( <>
<ScrollArea className={"h-[70vh]"}> - <PbnstMngForm firstFcltData={data} formType={"sttn"} /> + <PbnstMngForm + form={form} + formType={"sttn"} + indexMng={indexMng} + setIndexMng={setIndexMng} + /> <Tabs defaultValue="mng" onValueChange={setFcltTab}> <TabsList className=""> <TabsTrigger className="!text-xl" value="fclt"> @@ -245,7 +283,11 @@ export function PbnstSttnModal({ data }: { data: customPbnst }) { onPageChange={function (page: number): void { throw new Error("Function not implemented."); }} - children={fcltTab==='fclt'?<HeadMakeColSpan upHeadList={pbnstSttn.ruseFcltNodeList} />:undefined} + children={ + fcltTab === "fclt" ? ( + <HeadMakeColSpan upHeadList={pbnstSttn.ruseFcltNodeList} /> + ) : undefined + } ></UiTable> </TabsContent> </Tabs> @@ -263,22 +305,21 @@ export function PbnstSttnModal({ data }: { data: customPbnst }) { </TabsTrigger> </TabsList> <TabsContent className="max-h-full" value={ruseTab}> - {prfData && ( - <UiTable - headName={undefined} - tableData={prfData[ruseTab as keyof typeof prfData] || []} - headlist={monthHeadList || []} - pageSize={0} - total={0} - cellClick={undefined} - onPageChange={function (page: number): void { - throw new Error("Function not implemented."); - }} - ></UiTable> - )} + {prfData && ( + <UiTable + headName={undefined} + tableData={prfData[ruseTab as keyof typeof prfData] || []} + headlist={monthHeadList || []} + pageSize={0} + total={0} + cellClick={undefined} + onPageChange={function (page: number): void { + throw new Error("Function not implemented."); + }} + ></UiTable> + )} </TabsContent> </Tabs> - </ScrollArea> </div> </>