하수재이용현황 수정
This commit is contained in:
@@ -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}
|
||||
/>
|
||||
</TabsContent>
|
||||
<TabsContent className="max-h-full" value="buse">
|
||||
|
||||
@@ -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<string>("fclt");
|
||||
const [ruseTab, setRuseTab] = useState<string>("inoutTotal");
|
||||
const [ruseBizData, setRuseBizData] = useState<{
|
||||
@@ -28,9 +38,22 @@ export function PbnstSttnModal({ data }: { data: customPbnst }) {
|
||||
}>();
|
||||
const [ruseHeadList, setRuseHeadList] = useState<TableUpperProps[]>([]);
|
||||
const [ruseTableData, setRuseTableData] = useState<TableUpperProps[]>([]);
|
||||
const [prfData , setPrfData] = useState<{inPrf: any[],outPrf: any[], totalPrf:any[] }> ()
|
||||
const [prfData, setPrfData] = useState<{
|
||||
inPrf: any[];
|
||||
outPrf: any[];
|
||||
totalPrf: any[];
|
||||
}>();
|
||||
const [indexMng, setIndexMng] = useState<number>(0);
|
||||
const [indexBiz, setIndexBiz] = useState<number>(0);
|
||||
const form = useForm<{
|
||||
items: z.infer<typeof pbnstRegZod>[];
|
||||
}>({
|
||||
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 (
|
||||
<>
|
||||
<div>
|
||||
<Title title={"하수재이용 시설 상세정보"} />
|
||||
<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>
|
||||
</>
|
||||
|
||||
Reference in New Issue
Block a user