diff --git a/apps/wr/app/ruseFcltMng/fcltSttn/htdflSttn/page.tsx b/apps/wr/app/ruseFcltMng/fcltSttn/htdflSttn/page.tsx index a738b73cc..e43d5b04f 100644 --- a/apps/wr/app/ruseFcltMng/fcltSttn/htdflSttn/page.tsx +++ b/apps/wr/app/ruseFcltMng/fcltSttn/htdflSttn/page.tsx @@ -71,7 +71,7 @@ export default function HtdflSttn() { if (htdflSttn.excelList.length > 0) { if (htdflSttn.excelList.length === 0) return; const excelData = await tableData(htdflSttn.excelList, { code }); - const htdflExcel = excelHtdflSttnParsing(excelData); + const htdflExcel = excelHtdflSttnParsing(excelData, code.cityCd, code.sggCd); excelDownload( htdflExcel as [[]], "온배수시설 현황", @@ -91,7 +91,6 @@ export default function HtdflSttn() { useEffect(() => { if (htdflSttnRes.length > 0 && code.cityCd.length > 0) { - console.log("htdflSttnRes", htdflSttnRes); const data = tableData(htdflSttnRes, { code }); const chData = data .map((item: any) => ({ diff --git a/apps/wr/app/ruseFcltMng/fcltSttn/rainSttn/page.tsx b/apps/wr/app/ruseFcltMng/fcltSttn/rainSttn/page.tsx index 88b3c8649..631e24350 100644 --- a/apps/wr/app/ruseFcltMng/fcltSttn/rainSttn/page.tsx +++ b/apps/wr/app/ruseFcltMng/fcltSttn/rainSttn/page.tsx @@ -95,7 +95,7 @@ export default function RainSttn() { }, [code, rainSttnRes, rainSttn.rainSttHeadList]); useEffect(() => { - if (codeData != null) rainSttnSearch(pageNation, "20", codeData); + if (codeData != null) rainSttnSearch(pageNation, "20", codeData, code.cityCd, code.sggCd); }, [pageNation]); useEffect(() => { @@ -111,8 +111,8 @@ export default function RainSttn() { }, [rainSttn.excelList]); const excelClick = useCallback(() => { - if (codeData) rainSttnSearch(1, "10000", codeData); - }, [rainSttnSearch, codeData]); + if (codeData) rainSttnSearch(1, "10000", codeData, code.cityCd, code.sggCd); + }, [rainSttnSearch, codeData, code.cityCd, code.sggCd]); return ( <> @@ -146,7 +146,7 @@ export default function RainSttn() { } else { con = returnType.sidoValue; } - rainSttnSearch(1, "20", con); + rainSttnSearch(1, "20", con, code.cityCd, code.sggCd); }} excelClick={excelClick} initClick={function (): void { }} diff --git a/apps/wr/app/ruseFcltMng/fcltSttn/rswtSttn/page.tsx b/apps/wr/app/ruseFcltMng/fcltSttn/rswtSttn/page.tsx index 2cecd8e91..7a3444a9b 100644 --- a/apps/wr/app/ruseFcltMng/fcltSttn/rswtSttn/page.tsx +++ b/apps/wr/app/ruseFcltMng/fcltSttn/rswtSttn/page.tsx @@ -42,7 +42,6 @@ export default function RswtSttn() { const codeCityOrSgg = getCityOrSgg(ref); - const cellClick = (index: number | undefined, headId: string) => { if (headId !== 'chBuildingYn' && index !== undefined && bdstTable !== undefined) { @@ -57,7 +56,6 @@ export default function RswtSttn() { setBdstChgProps({ isOpen: true, chBuilding: bdstTable[index].chgBuilding }); } } - } useEffect(() => { @@ -100,13 +98,13 @@ export default function RswtSttn() { const excelClick = useCallback( (returnType: ReturnType) => { if (codeCityOrSgg) - rswtSttnSearch(1, "10000", codeCityOrSgg); + rswtSttnSearch(1, "10000", codeCityOrSgg, code.cityCd, code.sggCd); }, - [rswtSttnSearch, codeCityOrSgg] + [rswtSttnSearch, code.cityCd, code.sggCd, codeCityOrSgg] ); useEffect(() => { - if (codeCityOrSgg != null) rswtSttnSearch(pageNation, "20", codeCityOrSgg); + if (codeCityOrSgg != null) rswtSttnSearch(pageNation, "20", codeCityOrSgg, code.cityCd, code.sggCd); }, [pageNation]); return ( @@ -122,27 +120,24 @@ export default function RswtSttn() { selectUnitWaterShedData={code.lgbsnCd} selectMiddleRegionData={code.mdmbsnCd} selectEnvPartData={code.lclgvrnmntCd} - rightChildren={ - - } + rightChildren={} leftChildren={undefined} queryClick={function (returnType: ReturnType): void { // '{partValue: 'A', sidoValue: '0', sigunValue: '0', regionValue: '0', unitWaterShedValue: '0', …}' if (codeCityOrSgg) - rswtSttnSearch(1, "20", codeCityOrSgg); - }} + rswtSttnSearch(1, "20", codeCityOrSgg, code.cityCd, code.sggCd); + } } excelClick={excelClick} - initClick={function (): void { }} + initClick={function (): void { } } btnClass={btnClass} - ref={ref} - /> + ref={ref} isAdmin={false} />
diff --git a/apps/wr/app/ruseFcltMng/prfmncSttn/pbnstPrfmncSttn/page.tsx b/apps/wr/app/ruseFcltMng/prfmncSttn/pbnstPrfmncSttn/page.tsx index 95ce7d7d9..8064aa2bb 100644 --- a/apps/wr/app/ruseFcltMng/prfmncSttn/pbnstPrfmncSttn/page.tsx +++ b/apps/wr/app/ruseFcltMng/prfmncSttn/pbnstPrfmncSttn/page.tsx @@ -3,22 +3,28 @@ import { useWrStore } from "@/app/store"; import { btnClass } from "@/app/store/common/code"; import { initValInUsage, initValOutUsage, subTotalObj, totalObj, type FcPrfType, type PrfType } from "@/app/store/prfmncReg/pbnstPrfmncReg/type"; -import { yearOptions } from "@/components/lib/func/commom"; -import { InputTableBody } from "@/components/lib/func/TableData"; -import { ContentsDiv, Title, SearchBaseForm, SelectBox, SearchInput, UiTable, type ReturnType, MainChart, type ChartConfig, CHART_FORM, ScrollArea } from "@common/business_components"; -import DoughnutChart from "@common/business_components/ui/chart/DoughnutChart"; +import { excelPrfmncSttnParsing } from "@/app/store/prfmncSttn/pbnstPrfmncSttn/excel"; +import { excelDownload, yearOptions } from "@/components/lib/func/commom"; +import SearchInputText from "@/components/ui/searchInput/searchInput"; +import { CHART_FORM, ContentsDiv, MainChart, ScrollArea, SearchBaseForm, SearchInput, SelectBox, Title, UiTable, type ChartConfig, type ReturnType } from "@common/business_components"; import ListDiv from "@common/business_components/ui/list_div"; -import { Button, Label, Table, TableBody, TableHeader } from "@common/components/ui"; -import { useEffect, useRef, useState } from "react"; -import { headMakeprfmnc } from "../../prfmncReg/chkgdnReg/TableHead"; +import { Button, Label } from "@common/components/ui"; +import { useCallback, useEffect, useRef, useState } from "react"; import toast, { Toaster } from "react-hot-toast"; - - export default function PbnstPrfmncSttn() { - const { code, tableHeadMaker, pbnstPrfmncSttn, pbnstPrfmncInit, pbnstPrfmncSearch, prfmnc } = useWrStore((state) => state); + const { + code, + tableHeadMaker, + pbnstPrfmncSttn, + pbnstPrfmncInit, + pbnstPrfmncSearch, + prfmnc, + pbnstSttn, + pbnNmSearch + } = useWrStore((state) => state); const { monthHeadList } = prfmnc - const { pbnstPrfHeadList, pbnstPrfmncRes, prfmncRes, rawData, selectYearList } = pbnstPrfmncSttn; + const { pbnstPrfHeadList, prfmncRes, rawData, selectYearList } = pbnstPrfmncSttn; const [isChHead, setIsChHead] = useState(false); const [fromDate, setFromDate] = useState(String(new Date().getFullYear())); const [toDate, setToDate] = useState(String(new Date().getFullYear())); @@ -26,6 +32,18 @@ export default function PbnstPrfmncSttn() { const [bdstTable, setbdstTable] = useState(); const ref = useRef({} as ReturnType); const [swtrmtFcltNm, setSwtrmtFcltNm] = useState(); + const [pbnRuseNm, setPbnRuseNm] = useState(""); + const [excelData, setExcelData] = useState([]); + const excelClick = useCallback(() => { + excelDownload( + excelData, + "하수재이용실적 현황", + "sample_pbnstPrfmncSttn.xlsx", + "A1:N1", + 2 + ); + }, [excelData]); + const [chartConfig, setChartConfig] = useState({}); const [chartData, setChartData] = useState([]); const [dnInUsage, setDnInUsage] = useState([]); @@ -48,7 +66,6 @@ export default function PbnstPrfmncSttn() { chartData8: lineChartDataProps[]; chartData9: lineChartDataProps[]; }>(); - // const [lnInChartConfig, setLnInChartConfig] = useState({}); const [outLineData, setOutLineData] = useState<{ chartData1: lineChartDataProps[]; chartData2: lineChartDataProps[]; @@ -58,21 +75,18 @@ export default function PbnstPrfmncSttn() { chartData6: lineChartDataProps[]; }>(); - - type dnChartForm = { label: string, val: number, fill?: string }; type barChartForm = { label: string, "장내용수": number, "장외용수": number }; type lineChartDataProps = { label: string, val: number, color: string }; - const prfTableData = (prfList: PrfType[], year:string) => { + const prfTableData = (prfList: PrfType[], year: string) => { const inUsageData = structuredClone(initValInUsage); const outUsageData = structuredClone(initValOutUsage); const inSubtotal = structuredClone(subTotalObj); const outSubtotal = structuredClone(subTotalObj); - console.log(' prfList ', prfList) - const prfFilter = prfList?.filter((e) => e.ym.slice(0, 4) === year) + const prfFilter = prfList?.filter((e) => e.ym.slice(0, 4) === year) if (prfList && prfFilter.length > 0) { prfList?.forEach((prfItem) => { const month = Number(prfItem?.ym?.slice(4)); // "MM" @@ -119,71 +133,190 @@ export default function PbnstPrfmncSttn() { } const tableData = [...inUsageData, ...outUsageData, usageTotalObj]; setPrfData(tableData); - + setExcelData(excelPrfmncSttnParsing(prfData ?? [])) } else { setPrfData([]); } } + useEffect(() => { - let wshwtr = 0; - let coolUswtr = 0; - let cleanUswtr = 0; - let drwtUswtr = 0; - let dltnUswtr = 0; - let ithlRswtr = 0; - let ithlEtcUswtr = 0; - let cleanToilUswtr = 0; - let resn = 0; - let lndwtr = 0; - let hydUswtr = 0; - let ugwtChr = 0; - let farmUswtr = 0; - let rvrKeepUswtr = 0; - let indstUswtr = 0; + // 누적 변수 초기화 + let wshwtr = 0, + coolUswtr = 0, + cleanUswtr = 0, + drwtUswtr = 0, + dltnUswtr = 0, + ithlRswtr = 0, + ithlEtcUswtr = 0, + cleanToilUswtr = 0, + resn = 0; + + let lndwtr = 0, + hydUswtr = 0, + ugwtChr = 0, + farmUswtr = 0, + rvrKeepUswtr = 0, + indstUswtr = 0; + + let inUsageSum = 0, + outUsageSum = 0; + + let inUsageArr: number[] = [], + outUsageArr: number[] = []; + + // 라인차트용 데이터 + const wshwtrData: lineChartDataProps[] = [], + coolUswtrData: lineChartDataProps[] = [], + cleanUswtrData: lineChartDataProps[] = [], + drwtUswtrData: lineChartDataProps[] = [], + dltnUswtrData: lineChartDataProps[] = [], + ithlRswtrData: lineChartDataProps[] = [], + ithlEtcUswtrData: lineChartDataProps[] = [], + cleanToilUswtrData: lineChartDataProps[] = [], + resnData: lineChartDataProps[] = []; + const lndwtrData: lineChartDataProps[] = [], + hydUswtrData: lineChartDataProps[] = [], + ugwtChrData: lineChartDataProps[] = [], + farmUswtrData: lineChartDataProps[] = [], + rvrKeepUswtrData: lineChartDataProps[] = [], + indstUswtrData: lineChartDataProps[] = []; + + // 막대차트 데이터 + const barData: barChartForm[] = []; + + // 도넛차트 데이터 + const dnData: dnChartForm[] = []; + const dnInData: dnChartForm[] = []; + const dnOutData: dnChartForm[] = []; + if (rawData) { rawData.forEach((item) => { + // 실적 테이블 데이터 prfTableData(item.prfList, year); - item.prfList.filter((e) => e.ym.slice(0, 4) === year) .forEach((element) => { - - wshwtr += element.wshwtr; //세척수 - coolUswtr += element.coolUswtr; //냉각수 - cleanUswtr += element.cleanUswtr; //청소수 - drwtUswtr += element.drwtUswtr; //식수대 - dltnUswtr += element.dltnUswtr //희석용수 - ithlRswtr += element.ithlRswtr //중수도 - ithlEtcUswtr += element.ithlEtcUswtr //기타 - cleanToilUswtr += element.cleanToilUswtr //청소화장실용수 - resn += element.resn //세척살수용수 - lndwtr += element.lndwtr; //조경용수 - hydUswtr += element.hydUswtr; //친수용수 - ugwtChr += element.ugwtChr; //지하수충전 - farmUswtr += element.farmUswtr //농업용수 - rvrKeepUswtr += element.rvrKeepUswtr //하천등유지용수 - indstUswtr += element.indstUswtr //공업용수 + item.prfList.filter((e) => e.ym.slice(0, 4) === year).forEach((element) => { + // 누적 + wshwtr += element.wshwtr; + coolUswtr += element.coolUswtr; + cleanUswtr += element.cleanUswtr; + drwtUswtr += element.drwtUswtr; + dltnUswtr += element.dltnUswtr; + ithlRswtr += element.ithlRswtr; + ithlEtcUswtr += element.ithlEtcUswtr; + cleanToilUswtr += element.cleanToilUswtr; + resn += element.resn; + lndwtr += element.lndwtr; + hydUswtr += element.hydUswtr; + ugwtChr += element.ugwtChr; + farmUswtr += element.farmUswtr; + rvrKeepUswtr += element.rvrKeepUswtr; + indstUswtr += element.indstUswtr; + // 월별 합계 + inUsageSum = element.wshwtr + + element.coolUswtr + + element.cleanUswtr + + element.drwtUswtr + + element.dltnUswtr + + element.ithlRswtr + + element.ithlEtcUswtr + + element.cleanToilUswtr + + element.resn; + outUsageSum = element.lndwtr + + element.hydUswtr + + element.ugwtChr + + element.farmUswtr + + element.rvrKeepUswtr + + element.indstUswtr; + inUsageArr.push(inUsageSum); + outUsageArr.push(outUsageSum); + + // 막대차트 + const month = Number(element.ym.slice(4, 6)); + barData.push({ label: `${month}월`, "장내용수": inUsageSum, "장외용수": outUsageSum }); + + // 라인차트 + wshwtrData.push({ label: `${month}월`, val: element.wshwtr, color: "red" }); + coolUswtrData.push({ label: `${month}월`, val: element.coolUswtr, color: "orange" }); + cleanUswtrData.push({ label: `${month}월`, val: element.cleanUswtr, color: "yellow" }); + drwtUswtrData.push({ label: `${month}월`, val: element.drwtUswtr, color: "pink" }); + dltnUswtrData.push({ label: `${month}월`, val: element.dltnUswtr, color: "purple" }); + ithlRswtrData.push({ label: `${month}월`, val: element.ithlRswtr, color: "green" }); + ithlEtcUswtrData.push({ label: `${month}월`, val: element.ithlEtcUswtr, color: "blue" }); + cleanToilUswtrData.push({ label: `${month}월`, val: element.cleanToilUswtr, color: "magenta" }); + resnData.push({ label: `${month}월`, val: element.resn, color: "skyblue" }); + + lndwtrData.push({ label: `${month}월`, val: element.lndwtr, color: "red" }); + hydUswtrData.push({ label: `${month}월`, val: element.hydUswtr, color: "orange" }); + ugwtChrData.push({ label: `${month}월`, val: element.ugwtChr, color: "yellow" }); + farmUswtrData.push({ label: `${month}월`, val: element.farmUswtr, color: "green" }); + rvrKeepUswtrData.push({ label: `${month}월`, val: element.rvrKeepUswtr, color: "blue" }); + indstUswtrData.push({ label: `${month}월`, val: element.indstUswtr, color: "purple" }); }); - }) - const data: dnChartForm[] = [] - data?.push({ label: "세척수", val: wshwtr, fill: "red" }) - data?.push({ label: "냉각수", val: coolUswtr, fill: "orange" }) - data?.push({ label: "청소수", val: cleanUswtr, fill: "yellow" }) - data?.push({ label: "식수대", val: drwtUswtr, fill: "green" }) - data?.push({ label: "희석용수", val: dltnUswtr, fill: "skyblue" }) - data?.push({ label: "중수도", val: ithlRswtr, fill: "blue" }) - data?.push({ label: "기타", val: ithlEtcUswtr, fill: "purple" }) - data?.push({ label: "청소화장실용수", val: cleanToilUswtr, fill: "red" }) - data?.push({ label: "세척살수용수", val: resn, fill: "orange" }) - data?.push({ label: "조경용수", val: lndwtr, fill: "yellow" }) - data?.push({ label: "친수용수", val: hydUswtr, fill: "green" }) - data?.push({ label: "지하수충전", val: ugwtChr, fill: "skyblue" }) - data?.push({ label: "농업용수", val: farmUswtr, fill: "blue" }) - data?.push({ label: "하천등유지용수", val: rvrKeepUswtr, fill: "purple" }) - data?.push({ label: "공업용수", val: indstUswtr, fill: "black" }) - setChartData(data); - } - }, [rawData, year]) + }); + // 도넛차트 데이터 + dnData.push({ label: "세척수", val: wshwtr, fill: "red" }); + dnData.push({ label: "냉각수", val: coolUswtr, fill: "orange" }); + dnData.push({ label: "청소수", val: cleanUswtr, fill: "yellow" }); + dnData.push({ label: "식수대", val: drwtUswtr, fill: "green" }); + dnData.push({ label: "희석용수", val: dltnUswtr, fill: "skyblue" }); + dnData.push({ label: "중수도", val: ithlRswtr, fill: "blue" }); + dnData.push({ label: "기타", val: ithlEtcUswtr, fill: "purple" }); + dnData.push({ label: "청소화장실용수", val: cleanToilUswtr, fill: "red" }); + dnData.push({ label: "세척살수용수", val: resn, fill: "orange" }); + dnData.push({ label: "조경용수", val: lndwtr, fill: "yellow" }); + dnData.push({ label: "친수용수", val: hydUswtr, fill: "green" }); + dnData.push({ label: "지하수충전", val: ugwtChr, fill: "skyblue" }); + dnData.push({ label: "농업용수", val: farmUswtr, fill: "blue" }); + dnData.push({ label: "하천등유지용수", val: rvrKeepUswtr, fill: "purple" }); + dnData.push({ label: "공업용수", val: indstUswtr, fill: "black" }); + + // 장내용수 도넛 + dnInData.push({ label: "세척수", val: wshwtr, fill: "yellow" }); + dnInData.push({ label: "냉각수", val: coolUswtr, fill: "green" }); + dnInData.push({ label: "청소수", val: cleanUswtr, fill: "yellow" }); + dnInData.push({ label: "식수대", val: drwtUswtr, fill: "green" }); + dnInData.push({ label: "희석용수", val: dltnUswtr, fill: "yellow" }); + dnInData.push({ label: "중수도", val: ithlRswtr, fill: "green" }); + dnInData.push({ label: "기타", val: ithlEtcUswtr, fill: "yellow" }); + dnInData.push({ label: "청소화장실용수", val: cleanToilUswtr, fill: "green" }); + dnInData.push({ label: "세척살수용수", val: resn, fill: "yellow" }); + + // 장외용수 도넛 + dnOutData.push({ label: "조경용수", val: lndwtr, fill: "yellow" }); + dnOutData.push({ label: "친수용수", val: hydUswtr, fill: "black" }); + dnOutData.push({ label: "지하수충전", val: ugwtChr, fill: "yellow" }); + dnOutData.push({ label: "농업용수", val: farmUswtr, fill: "black" }); + dnOutData.push({ label: "하천등유지용수", val: rvrKeepUswtr, fill: "yellow" }); + dnOutData.push({ label: "공업용수", val: indstUswtr, fill: "black" }); + + // 라인차트 데이터 + setInLineData({ + chartData1: wshwtrData, + chartData2: coolUswtrData, + chartData3: cleanUswtrData, + chartData4: drwtUswtrData, + chartData5: dltnUswtrData, + chartData6: ithlRswtrData, + chartData7: ithlEtcUswtrData, + chartData8: cleanToilUswtrData, + chartData9: resnData + }); + setOutLineData({ + chartData1: lndwtrData, + chartData2: hydUswtrData, + chartData3: ugwtChrData, + chartData4: farmUswtrData, + chartData5: rvrKeepUswtrData, + chartData6: indstUswtrData, + }); + setBarData(barData); + setChartData(dnData); + setDnInUsage(dnInData); + setDnOutUsage(dnOutData); + } + }, [rawData, year]); useEffect(() => { const newChartConfig = chartData.reduce((config, element) => { @@ -196,46 +329,6 @@ export default function PbnstPrfmncSttn() { setChartConfig(newChartConfig); }, [chartData]); - // 장내용수 도넛차트 - useEffect(() => { - let wshwtr = 0; - let coolUswtr = 0; - let cleanUswtr = 0; - let drwtUswtr = 0; - let dltnUswtr = 0; - let ithlRswtr = 0; - let ithlEtcUswtr = 0; - let cleanToilUswtr = 0; - let resn = 0; - if (rawData) { - rawData.forEach((item) => { - item.prfList.filter((e) => e.ym.slice(0, 4) === year) .forEach((element) => { - - wshwtr += element.wshwtr; //세척수 - coolUswtr += element.coolUswtr; //냉각수 - cleanUswtr += element.cleanUswtr; //청소수 - drwtUswtr += element.drwtUswtr; //식수대 - dltnUswtr += element.dltnUswtr //희석용수 - ithlRswtr += element.ithlRswtr //중수도 - ithlEtcUswtr += element.ithlEtcUswtr //기타 - cleanToilUswtr += element.cleanToilUswtr //청소화장실용수 - resn += element.resn //세척살수용수 - }); - }) - const data: dnChartForm[] = [] - data?.push({ label: "세척수", val: wshwtr, fill: "yellow" }) - data?.push({ label: "냉각수", val: coolUswtr, fill: "green" }) - data?.push({ label: "청소수", val: cleanUswtr, fill: "yellow" }) - data?.push({ label: "식수대", val: drwtUswtr, fill: "green" }) - data?.push({ label: "희석용수", val: dltnUswtr, fill: "yellow" }) - data?.push({ label: "중수도", val: ithlRswtr, fill: "green" }) - data?.push({ label: "기타", val: ithlEtcUswtr, fill: "yellow" }) - data?.push({ label: "청소화장실용수", val: cleanToilUswtr, fill: "green" }) - data?.push({ label: "세척살수용수", val: resn, fill: "yellow" }) - setDnInUsage(data); - } - }, [rawData, year]) - useEffect(() => { const newChartConfig = dnInUsage.reduce((config, element) => { config[element.label] = { @@ -247,37 +340,6 @@ export default function PbnstPrfmncSttn() { setDnInChartConfig(newChartConfig); }, [dnInUsage]); - // 장외용수 도넛차트 - useEffect(() => { - let lndwtr = 0; - let hydUswtr = 0; - let ugwtChr = 0; - let farmUswtr = 0; - let rvrKeepUswtr = 0; - let indstUswtr = 0; - if (rawData) { - rawData.forEach((item) => { - item.prfList.filter((e) => e.ym.slice(0, 4) === year) .forEach((element) => { - lndwtr += element.lndwtr; //조경용수 - hydUswtr += element.hydUswtr; //친수용수 - ugwtChr += element.ugwtChr; //지하수충전 - farmUswtr += element.farmUswtr //농업용수 - rvrKeepUswtr += element.rvrKeepUswtr //하천등유지용수 - indstUswtr += element.indstUswtr //공업용수 - - }); - }) - const data: dnChartForm[] = [] - data?.push({ label: "조경용수", val: lndwtr, fill: "yellow" }) - data?.push({ label: "친수용수", val: hydUswtr, fill: "black" }) - data?.push({ label: "지하수충전", val: ugwtChr, fill: "yellow" }) - data?.push({ label: "농업용수", val: farmUswtr, fill: "black" }) - data?.push({ label: "하천등유지용수", val: rvrKeepUswtr, fill: "yellow" }) - data?.push({ label: "공업용수", val: indstUswtr, fill: "black" }) - setDnOutUsage(data); - } - }, [rawData, year]) - useEffect(() => { const newChartConfig = dnOutUsage.reduce((config, element) => { config[element.label] = { @@ -289,69 +351,6 @@ export default function PbnstPrfmncSttn() { setDnOutChartConfig(newChartConfig); }, [dnOutUsage]); - //월별 장내외 용수 총 실적 막대차트 - useEffect(() => { - let wshwtr = 0; - let coolUswtr = 0; - let cleanUswtr = 0; - let drwtUswtr = 0; - let dltnUswtr = 0; - let ithlRswtr = 0; - let ithlEtcUswtr = 0; - let cleanToilUswtr = 0; - let resn = 0; - let lndwtr = 0; - let hydUswtr = 0; - let ugwtChr = 0; - let farmUswtr = 0; - let rvrKeepUswtr = 0; - let indstUswtr = 0; - let inUsageSum = 0; - let outUsageSum = 0; - let inUsageArr = []; - let outUsageArr = []; - - - if (rawData) { - const data: barChartForm[] = [] - rawData.forEach((item) => { - item.prfList - .filter((e) => e.ym.slice(0, 4) === year) .forEach((element) => { - - wshwtr = element.wshwtr; //세척수 - coolUswtr = element.coolUswtr; //냉각수 - cleanUswtr = element.cleanUswtr; //청소수 - drwtUswtr = element.drwtUswtr; //식수대 - dltnUswtr = element.dltnUswtr //희석용수 - ithlRswtr = element.ithlRswtr //중수도 - ithlEtcUswtr = element.ithlEtcUswtr //기타 - cleanToilUswtr = element.cleanToilUswtr //청소화장실용수 - resn = element.resn //세척살수용수 - - lndwtr = element.lndwtr; //조경용수 - hydUswtr = element.hydUswtr; //친수용수 - ugwtChr = element.ugwtChr; //지하수충전 - farmUswtr = element.farmUswtr //농업용수 - rvrKeepUswtr = element.rvrKeepUswtr //하천등유지용수 - indstUswtr = element.indstUswtr //공업용수 - - inUsageSum = wshwtr + coolUswtr + cleanUswtr + drwtUswtr + dltnUswtr + ithlRswtr + ithlEtcUswtr + cleanToilUswtr + resn; - inUsageArr.push(inUsageSum) - outUsageSum = lndwtr + hydUswtr + ugwtChr + farmUswtr + rvrKeepUswtr + indstUswtr; - outUsageArr.push(outUsageSum) - - const month = Number(element.ym.slice(4, 6)) - data.push({ label: `${month}월`, "장내용수": inUsageSum, "장외용수": outUsageSum }) - - }, - ); - - }) - - setBarData(data); - } - }, [rawData, year]) - useEffect(() => { const newChartConfig = barData.reduce((config, element) => { config[element.label] = { @@ -363,51 +362,6 @@ export default function PbnstPrfmncSttn() { setBarChartConfig(newChartConfig); }, [barData]); - //월별 장내 용수 실적 라인차트 - useEffect(() => { - - if (rawData) { - const wshwtrData: lineChartDataProps[] = [] - const coolUswtrData: lineChartDataProps[] = [] - const cleanUswtrData: lineChartDataProps[] = [] - const drwtUswtrData: lineChartDataProps[] = [] - const dltnUswtrData: lineChartDataProps[] = [] - const ithlRswtrData: lineChartDataProps[] = [] - const ithlEtcUswtrData: lineChartDataProps[] = [] - const cleanToilUswtrData: lineChartDataProps[] = [] - const resnData: lineChartDataProps[] = [] - rawData.forEach((item) => { - item.prfList.filter((e) => e.ym.slice(0, 4) === year) .forEach((element) => { - const month = Number(element.ym.slice(4, 6)) - wshwtrData.push({ label: `${month}월`, val: element.wshwtr, color: "red" }) - coolUswtrData.push({ label: `${month}월`, val: element.coolUswtr, color: "red" }) - cleanUswtrData.push({ label: `${month}월`, val: element.cleanUswtr, color: "red" }) - drwtUswtrData.push({ label: `${month}월`, val: element.drwtUswtr, color: "red" }) - dltnUswtrData.push({ label: `${month}월`, val: element.dltnUswtr, color: "red" }) - ithlRswtrData.push({ label: `${month}월`, val: element.ithlRswtr, color: "red" }) - ithlEtcUswtrData.push({ label: `${month}월`, val: element.ithlEtcUswtr, color: "red" }) - cleanToilUswtrData.push({ label: `${month}월`, val: element.cleanToilUswtr, color: "red" }) - resnData.push({ label: `${month}월`, val: element.resn, color: "red" }) - - }, - ); - }) - const rtndata = { - chartData1: wshwtrData, - chartData2: coolUswtrData, - chartData3: cleanUswtrData, - chartData4: drwtUswtrData, - chartData5: dltnUswtrData, - chartData6: ithlRswtrData, - chartData7: ithlEtcUswtrData, - chartData8: cleanToilUswtrData, - chartData9: resnData - } - - setInLineData(rtndata) - } - }, [rawData, year]) - useEffect(() => { if (inLineData?.chartData1) { const newChartConfig = { @@ -452,37 +406,6 @@ export default function PbnstPrfmncSttn() { } }, [inLineData]); - //월별 장외 용수 실적 라인차트 - useEffect(() => { - if (rawData) { - const lndwtrData: lineChartDataProps[] = [] - const hydUswtrData: lineChartDataProps[] = [] - const ugwtChrData: lineChartDataProps[] = [] - const farmUswtrData: lineChartDataProps[] = [] - const rvrKeepUswtrData: lineChartDataProps[] = [] - const indstUswtrData: lineChartDataProps[] = [] - rawData.forEach((item) => { - item.prfList.filter((e) => e.ym.slice(0, 4) === year) .forEach((element) => { - const month = Number(element.ym.slice(4, 6)) - lndwtrData.push({ label: `${month}월`, val: element.lndwtr, color: "red" }) - hydUswtrData.push({ label: `${month}월`, val: element.hydUswtr, color: "red" }) - ugwtChrData.push({ label: `${month}월`, val: element.ugwtChr, color: "red" }) - farmUswtrData.push({ label: `${month}월`, val: element.farmUswtr, color: "red" }) - rvrKeepUswtrData.push({ label: `${month}월`, val: element.rvrKeepUswtr, color: "red" }) - indstUswtrData.push({ label: `${month}월`, val: element.indstUswtr, color: "red" }) - }, - ); - }) - setOutLineData({ - chartData1: lndwtrData, - chartData2: hydUswtrData, - chartData3: ugwtChrData, - chartData4: farmUswtrData, - chartData5: rvrKeepUswtrData, - chartData6: indstUswtrData, - }) - } - }, [rawData, year]) useEffect(() => { if (outLineData?.chartData1) { @@ -526,6 +449,16 @@ export default function PbnstPrfmncSttn() { setbdstTable(prfmncRes); }, [prfmncRes]); + const [searchYear, setSearchYear] = useState( + String(new Date().getFullYear()) + ); + + useEffect(() => { + if (pbnRuseNm.length > 1) + pbnNmSearch("1", "23", ref.current, pbnRuseNm, searchYear); + }, [pbnRuseNm]); + + return ( <> @@ -566,13 +499,17 @@ export default function PbnstPrfmncSttn() { value={toDate} onSelectValue={(val: string | number) => setToDate(String(val))} />
- { - setSwtrmtFcltNm(e); - }} /> + { + setPbnRuseNm(searchNm || ""); + }} + setRtnData={function (rtnData: any[]): void { + setbdstTable(rtnData); + }} + searchList={pbnstSttn.pbnstSearchData || []} + > { }} + excelClick={excelClick} initClick={function (): void { }} btnClass={btnClass} ref={ref} isAdmin={false} /> @@ -680,7 +617,7 @@ export default function PbnstPrfmncSttn() { - + ) } diff --git a/apps/wr/app/store/common/code/index.ts b/apps/wr/app/store/common/code/index.ts index 6caabcb5c..74001b27c 100644 --- a/apps/wr/app/store/common/code/index.ts +++ b/apps/wr/app/store/common/code/index.ts @@ -31,18 +31,18 @@ const bdstUsgCd: SelectDataType[] = [ { val: '16', text: "기타" }, ]; //빗물 집수면 종류 용도 -const rainFcltCd = [ - { val: "1", text: "지붕" }, - { val: "2", text: "건물옥상" }, - { val: "3", text: "골프장 연못" }, - { val: "4", text: "운동장 바닥" }, - { val: "5", text: "운동장 지붕" }, - { val: "6", text: "주차장" }, - { val: "7", text: "태양광패널" }, - { val: "8", text: "연못" }, - { val: "9", text: "기타" }, - { val: "10", text: "확인불가" }, -]; +// const rainFcltCd = [ +// { val: "1", text: "지붕" }, +// { val: "2", text: "건물옥상" }, +// { val: "3", text: "골프장 연못" }, +// { val: "4", text: "운동장 바닥" }, +// { val: "5", text: "운동장 지붕" }, +// { val: "6", text: "주차장" }, +// { val: "7", text: "태양광패널" }, +// { val: "8", text: "연못" }, +// { val: "9", text: "기타" }, +// { val: "10", text: "확인불가" }, +// ]; // 중수도 필수 원수종류 const rswtBdstType: SelectDataType[] = [ { text: "숙박업", val: "17" }, @@ -138,6 +138,19 @@ export const buildingType = { HTB:"HTB" } +const rainFcltCd = [ + { val: "지붕", text: "지붕" }, + { val: "건물옥상", text: "건물옥상" }, + { val: "골프장 연못", text: "골프장 연못" }, + { val: "운동장 바닥", text: "운동장 바닥" }, + { val: "운동장 지붕", text: "운동장 지붕" }, + { val: "주차장", text: "주차장" }, + { val: "태양광패널", text: "태양광패널" }, + { val: "연못", text: "연못" }, + { val: "기타", text: "기타" }, + { val: "확인불가", text: "확인불가" }, +]; + export type comCodeState = { code: { isInit: boolean; diff --git a/apps/wr/app/store/prfmncSttn/pbnstPrfmncSttn/excel.tsx b/apps/wr/app/store/prfmncSttn/pbnstPrfmncSttn/excel.tsx new file mode 100644 index 000000000..113a35289 --- /dev/null +++ b/apps/wr/app/store/prfmncSttn/pbnstPrfmncSttn/excel.tsx @@ -0,0 +1,24 @@ +export const excelPrfmncSttnParsing = ( + data: any[] +): string[][] => { + const excelExportData: string[][] = []; + data.forEach((item) => { + excelExportData.push([ + item.용수명, + item.total, + item["1월"], + item["2월"], + item["3월"], + item["4월"], + item["5월"], + item["6월"], + item["7월"], + item["8월"], + item["9월"], + item["10월"], + item["11월"], + item["12월"], + ]); + }); + return excelExportData; +}; \ No newline at end of file diff --git a/apps/wr/app/store/prfmncSttn/pbnstPrfmncSttn/index.tsx b/apps/wr/app/store/prfmncSttn/pbnstPrfmncSttn/index.tsx index e47301b48..d0e958785 100644 --- a/apps/wr/app/store/prfmncSttn/pbnstPrfmncSttn/index.tsx +++ b/apps/wr/app/store/prfmncSttn/pbnstPrfmncSttn/index.tsx @@ -86,7 +86,7 @@ export const pbnstPrfmncSttnActionsExport: (set: any) => pbnstPrfmncSttnActions yearHead[0].title = i + "년도" } yearHeader = [...yearHeader, ...yearHead] - selectList.push({text: i + "년도", val: String(i)} ) + selectList.push({ text: i + "년도", val: String(i) }) } set((state: pbnstPrfmncSttnState) => { return { @@ -142,7 +142,6 @@ export const pbnstPrfmncSttnActionsExport: (set: any) => pbnstPrfmncSttnActions bscFctCdList, `wr`, ) - let inUsageSum = 0; let outUsageSum = 0; let usageSum = 0; @@ -176,9 +175,6 @@ export const pbnstPrfmncSttnActionsExport: (set: any) => pbnstPrfmncSttnActions resData.push({ ...data, ...acc }) } }) - - - return set((state: pbnstPrfmncSttnState) => ({ ...state, pbnstPrfmncSttn: { diff --git a/apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/excel.tsx b/apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/excel.tsx index 671eacae8..591623911 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/excel.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/excel.tsx @@ -1,30 +1,34 @@ +import type { SelectDataType } from "@common/business_components/ui"; import type { customHtdflBdst } from "../../fcltReg/htdflReg"; -export const excelHtdflSttnParsing = (data: customHtdflBdst[]): string[][] => { +export const excelHtdflSttnParsing = ( + data: customHtdflBdst[], + sidoCode: SelectDataType[], + sggCode: SelectDataType[] +): string[][] => { const excelExportData: string[][] = []; data.forEach((item) => { excelExportData.push([ - String(item.cityText??""), - String(item.sggText??""), + sidoCode.find((sido) => sido.val === item.ctpvCd.toString())?.text ?? "", + sggCode.find((sgg) => sgg.val === item.sggCd.toString())?.text ?? "", item.bdstNm ?? "", item.daddr ?? "", String(item.frstArchPrmsnDt ?? ""), String(item.reuseBuilding?.[0]?.htdflObj.etgtType ?? ""), String(item.reuseBuilding?.[0]?.htdflObj.fclCpct ?? ""), // fix: added missing parenthesis - String(item.reuseBuilding?.[0]?.htdflObj.plwtYn ? "Y" :"N"), // fix: added missing parenthesis + String(item.reuseBuilding?.[0]?.htdflObj.plwtYn ? "Y" : "N"), // fix: added missing parenthesis String(item.reuseBuilding?.[0]?.htdflObj.orgwtWtritSpt ?? ""), // fix: added missing parenthesis String(item.reuseBuilding?.[0]?.htdflObj.wtritEntrcTp ?? ""), // fix: removed as it doesn't exist in the provided context String(item.reuseBuilding?.[0]?.htdflObj.orgwtOcrnProcs ?? ""), // fix: removed as it doesn't exist in the provided context - String( item.reuseBuilding?.[0]?.htdflObj?.amtgnr ?? ""), // fix: removed as it doesn't exist in the provided context + String(item.reuseBuilding?.[0]?.htdflObj?.amtgnr ?? ""), // fix: removed as it doesn't exist in the provided context String(item.reuseBuilding?.[0]?.htdflObj?.prcsProcsYn ?? ""), // fix: removed as it doesn't exist in the provided context - String( '컬럼확인'), // fix: removed as it doesn't exist in the provided context String(item.reuseBuilding?.[0]?.htdflObj?.prcsFcltCpct ?? ""), // fix: removed as it doesn't exist in the provided context String(item.reuseBuilding?.[0]?.htdflObj?.fmYn ?? ""), // fix: removed as it doesn't exist in the provided context String(item.reuseBuilding?.[0]?.htdflObj?.utztnCpct ?? ""), // fix: removed as it doesn't exist in the provided context String(item.reuseBuilding?.[0]?.htdflObj?.utztnUsg ?? ""), // fix: removed as it doesn't exist in the provided context String(item.reuseBuilding?.[0]?.htdflObj?.emsnExitTp ?? ""), // fix: removed as it doesn't exist in the provided context - ]); - }); - return excelExportData; + ]); + }); + return excelExportData; }; diff --git a/apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/headList.tsx b/apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/headList.tsx index 8de673f16..756c47b9b 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/headList.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltSttn/htdflSttn/headList.tsx @@ -70,13 +70,6 @@ export const htdflSttHeadListExport: z.infer = [ title: "처리공정여부", visible: true, }, - { - id: "prcsProcstest", - title: "처리공정여부??", - visible: true, - }, - - { id: "prcsFcltCpct", title: "처리시설용량(m³)", @@ -259,36 +252,15 @@ export const htdflSttNodeListExport: CommonTableProps[] = [ rowSpan: 2, colSpan: 1, }, - { - id: "prcsProcs", - title: "처리공정", - upName: "htdflMngInfo", - visible: true, - row: 2, - rowSpan: 1, - colSpan: 2, - }, { id: "prcsProcsYn", title: "처리공정여부", upName: "prcsProcs", visible: true, - row: 3, - rowSpan: 1, + row: 2, + rowSpan: 2, colSpan: 1, }, - - { - id: "prcsProcstest", - title: "처리공정여부??", - upName: "prcsProcs", - visible: true, - row: 3, - rowSpan: 1, - colSpan: 1, - }, - - { id: "prcsFcltCpct", title: "처리시설용량(m³)", diff --git a/apps/wr/app/store/ruseFcltMng/fcltSttn/rainSttn/excel.tsx b/apps/wr/app/store/ruseFcltMng/fcltSttn/rainSttn/excel.tsx index 8ae786488..13530a81f 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltSttn/rainSttn/excel.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltSttn/rainSttn/excel.tsx @@ -1,18 +1,23 @@ +import type { SelectDataType } from "@common/business_components/ui"; import type { customRainBdst } from "../../fcltReg/rainReg"; -export const excelRainSttnParsing = (data: customRainBdst[]): string[][] => { +export const excelRainSttnParsing = ( + data: customRainBdst[], + sidoCode: SelectDataType[], + sggCode: SelectDataType[] +): string[][] => { const excelExportData: string[][] = []; data.forEach((item) => { excelExportData.push([ - String(item.ctpvCd), - String(item.sggCd), + sidoCode.find((sido) => sido.val === item.ctpvCd.toString())?.text ?? "", + sggCode.find((sgg) => sgg.val === item.sggCd.toString())?.text ?? "", item.bdstNm ?? "", item.daddr ?? "", String(item.bdstInfoPk ?? ""), String(item.frstArchPrmsnDt ?? ""), String(item.archArea ?? ""), - String(item.chgBuilding.length>0 ? "Y" :"N"), + String(item.chgBuilding.length > 0 ? "Y" : "N"), String(item.reuseBuilding?.[0]?.lawTrgtYn ?? ""), String(item.reuseBuilding?.[0]?.instlCmptnDt ?? ""), String(item.reuseBuilding?.[0]?.instlCst ?? ""), @@ -28,8 +33,8 @@ export const excelRainSttnParsing = (data: customRainBdst[]): string[][] => { String(item.reuseBuilding?.[0]?.grntchBdstCertYr ?? ""), String(item.reuseBuilding?.[0]?.grntchBdstCertNo ?? ""), String(item.reuseBuilding?.[0]?.grntchBdstCertGrd ?? "") - ]); - }); - return excelExportData; + ]); + }); + return excelExportData; }; diff --git a/apps/wr/app/store/ruseFcltMng/fcltSttn/rainSttn/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltSttn/rainSttn/index.tsx index 853298d51..5aa54ee48 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltSttn/rainSttn/index.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltSttn/rainSttn/index.tsx @@ -13,6 +13,7 @@ import { } from "./headList"; import type { z } from "zod"; import type { CommonTableProps } from "@/app/store/common/type/header"; +import type { SelectDataType } from "@common/business_components/ui"; // 테이블 헤드 리스트 const rainSttHeadList = rainSttHeadListExport; @@ -101,7 +102,7 @@ export type rainSttnState = { }; type rainSttnActions = { rainSttnInit:(con:string) => void - rainSttnSearch: (page: number, total: string, con: string) => void; + rainSttnSearch: (page: number, total: string, con: string, sidoCode: SelectDataType[], sggCode: SelectDataType[]) => void; rainChSttnHead: ( headList: z.infer, ) => void; @@ -148,14 +149,16 @@ export const rainSttnActionsExport: (set: any) => rainSttnActions = ( console.log(e) } }, - rainSttnSearch: async (page: number, total: string, con: string) => { + rainSttnSearch: async (page: number, total: string, con: string, + sidoCode: SelectDataType[], + sggCode: SelectDataType[]) => { try { const rainSttnRes = await getFetch( fetchType.WR, `/reuseFc/rainyInfoList/${page}/${total}/${con}` ); if (Number(total) > 9000) { - const rainExcel = excelRainSttnParsing(rainSttnRes); + const rainExcel = excelRainSttnParsing(rainSttnRes, sidoCode, sggCode); set((state: rainSttnState) => { return { ...state, diff --git a/apps/wr/app/store/ruseFcltMng/fcltSttn/rswtSttn/excel.tsx b/apps/wr/app/store/ruseFcltMng/fcltSttn/rswtSttn/excel.tsx index 5c0ecf0b3..ac57a8016 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltSttn/rswtSttn/excel.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltSttn/rswtSttn/excel.tsx @@ -1,19 +1,25 @@ +import type { SelectDataType } from "@common/business_components/ui"; import type { customRswtBdst } from "../../fcltReg/rswtReg"; +import { useWrStore } from "@/app/store"; -export const excelRSwtSttnParsing = (data: customRswtBdst[]): string[][] => { +export const excelRSwtSttnParsing = ( + data: customRswtBdst[], + sidoCode: SelectDataType[], + sggCode: SelectDataType[] +): string[][] => { const excelExportData: string[][] = []; data.forEach((item) => { excelExportData.push([ - String(item.ctpvCd), - String(item.sggCd), + sidoCode.find((sido) => sido.val === item.ctpvCd.toString())?.text ?? "", + sggCode.find((sgg) => sgg.val === item.sggCd.toString())?.text ?? "", item.bdstNm ?? "", item.daddr ?? "", String(item.bdstUsgText ?? ""), String(item.frstArchPrmsnDt ?? ""), String(item.archArea ?? ""), String(item.reuseBuilding?.[0]?.rswtrObj.wtrUsqty ?? "0"), //물사용량 - String(item.chgBuilding.length>0 ? "Y" :"N"), //중축・개축・재축여부 + String(item.chgBuilding.length > 0 ? "Y" : "N"), //중축・개축・재축여부 String(item.reuseBuilding?.[0]?.lawTrgtYn ?? ""), //법적의무대상여부 String(item.reuseBuilding?.[0]?.rswtrObj.oblgTrgtWtrUsqty ?? ""), //의무대상물사용량 String(item.reuseBuilding?.[0]?.instlCmptnDt ?? ""), //설치완료일시 @@ -28,7 +34,7 @@ export const excelRSwtSttnParsing = (data: customRswtBdst[]): string[][] => { String(item.reuseBuilding?.[0]?.grntchBdstCertYr ?? ""), String(item.reuseBuilding?.[0]?.grntchBdstCertNo ?? ""), String(item.reuseBuilding?.[0]?.grntchBdstCertGrd ?? "") - ]); - }); - return excelExportData; + ]); + }); + return excelExportData; }; \ No newline at end of file diff --git a/apps/wr/app/store/ruseFcltMng/fcltSttn/rswtSttn/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltSttn/rswtSttn/index.tsx index 775e22e0c..301cd965e 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltSttn/rswtSttn/index.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltSttn/rswtSttn/index.tsx @@ -6,6 +6,7 @@ import { controlHeadView } from "../rainSttn"; import type { sttnHeadListType } from "../rainSttn/headList"; import { excelRSwtSttnParsing } from "./excel"; import { rswtSttHeadListExport, rswtSttNodeListExport } from "./headList"; +import type { SelectDataType } from "@common/business_components/ui"; @@ -26,11 +27,10 @@ export type rswtSttnState = { }; }; - - type rswtSttnActions = { rswtSttnInit: (con: string) => void; - rswtSttnSearch: (page: number, total: string, con: string) => void; + rswtSttnSearch: (page: number, total: string, con: string, sidoCode: SelectDataType[], + sggCode: SelectDataType[]) => void; rswtChSttnHead: ( headList: z.infer, ) => void; @@ -38,8 +38,6 @@ type rswtSttnActions = { export type rswtSttnType = rswtSttnState & rswtSttnActions; - - export const rswtSttnStateExport: rswtSttnState = { rswtSttn: { rswtSttHeadList: rswtSttHeadList, @@ -77,14 +75,16 @@ export const rswtSttnActionsExport: (set: any) => rswtSttnActions = ( console.log(e) } }, - rswtSttnSearch: async (page: number, total: string, con: string) => { + rswtSttnSearch: async (page: number, total: string, con: string, + sidoCode: SelectDataType[], + sggCode: SelectDataType[]) => { try { const rswtSttnRes = await getFetch( fetchType.WR, `/reuseFc/waterreuseFc/${page}/${total}/${con}` ); if (Number(total) > 9000) { - const rswtExcel = excelRSwtSttnParsing(rswtSttnRes); + const rswtExcel = excelRSwtSttnParsing(rswtSttnRes, sidoCode, sggCode); set((state: rswtSttnState) => { return { ...state, diff --git a/apps/wr/components/ui/form/fcltReg/htdflReg/htdflRegForm.tsx b/apps/wr/components/ui/form/fcltReg/htdflReg/htdflRegForm.tsx index 9f6869706..70e62eb7f 100644 --- a/apps/wr/components/ui/form/fcltReg/htdflReg/htdflRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/htdflReg/htdflRegForm.tsx @@ -27,9 +27,11 @@ import { formH1Class } from "@/components/lib/class/comClass"; export default function HtdflRegForm({ htdflForm, isModal, + readonly = false }: { htdflForm: customHtdflBdst; isModal: boolean; + readonly?: boolean; }) { const { code, htdflBdstUpdate, htdflBdstReg } = useWrStore((state) => state); @@ -42,9 +44,9 @@ export default function HtdflRegForm({ const onSubmit = (values: z.infer) => { if (isModal) { - htdflBdstReg(values,'41'); + htdflBdstReg(values, '41'); } else { - htdflBdstUpdate(values ,'41'); + htdflBdstUpdate(values, '41'); } }; @@ -84,520 +86,549 @@ export default function HtdflRegForm({ return (
-
- - {/*
*/} -
-
-

온배수 시설 정보

- -
-
- - {isModal && htdflForm != undefined ? : <>} - {isModal ? ( -

- 온배수 시설 정보{" "} -

- ) : ( - <> - )} - -
-
- ( - - - + + + {/*
*/} +
+
+

온배수 시설 정보

+ {!readonly && ( + )} - /> +
-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> -
-
- ( - - - - )} - /> -
-
-
-

- 온배수 시설 운영현황 -

-
+ {isModal && htdflForm != undefined ? : <>} + {isModal ? ( +

+ 온배수 시설 정보{" "} +

+ ) : ( + <> + )} -
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - /> - - )} - /> -
-
- ( - - - - )} - /> -
-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> -
-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> -
-
- ( - - - - )} - /> -
-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> -
-
- ( - - - - )} - /> -
-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> -
-
- ( - - - - )} - /> -
-
+
+
+ ( + + { + if (!readonly) field.onChange(e) + }} + readOnly={readonly} + /> + + )} + /> +
-
-

- 요구수질 -

-
- -
-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> +
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
+
+ ( + + { } : field.onChange} + value={field.value ?? code.yn[0]?.val} + readOnly={readonly} + /> + + )} + /> +
+
+
+

+ 온배수 시설 운영현황 +

-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> -
-
- -
-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> +
+
+ ( + + { + if (!readonly) field.onChange(Number(e.target.value)); + }} + readOnly={readonly} + /> + + )} + /> +
+
+ ( + + { + if (!readonly) field.onChange + }} + readOnly={readonly} + /> + + )} + /> +
+
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
+
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
+
+ ( + + { } : field.onChange} + value={field.value ?? code.yn[0]?.val} + readOnly={readonly} + /> + + )} + /> +
+
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
+
+ ( + + { } : field.onChange} + value={field.value ?? code.yn[0]?.val} + readOnly={readonly} + /> + + )} + /> +
+
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
+
+ ( + + { + if (!readonly) field.onChange + }} + readOnly={readonly} + /> + + )} + /> +
-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> -
-
- -
-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> +
+

+ 요구수질 +

-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> -
-
+
+
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
-
-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> +
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> -
-
+
+
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
-
-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> +
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> -
-
+
+
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
-
-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> +
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
-
- ( - - { - handleCommaNumberChange(e, field.onChange); - }} - value={formatCommaNumber(field.value)} - /> - - )} - /> +
+
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
+ +
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
-
- - + +
+
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
+ +
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
+
+ +
+
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
+ +
+ ( + + { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} + value={formatCommaNumber(field.value)} + readOnly={readonly} + /> + + )} + /> +
+
+ +
); } diff --git a/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx b/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx index 3d6c5c238..08f2b073e 100644 --- a/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/rainReg/rainRegForm.tsx @@ -4,36 +4,36 @@ import { useWrStore } from "@/app/store"; import { rainZod, selectClass, - TEST_UUID, - type customRainBdst, + type customRainBdst } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; -import { DatePicker, FormUi } from "@common/business_components"; -import { Form, FormField, SelectBox } from "@common/business_components/ui"; -import { Button, Input } from "@common/components/ui"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useEffect, useState } from "react"; -import { useForm, useWatch, type UseFormReturn } from "react-hook-form"; -import { z } from "zod"; -import BdstReg from "../bdstReg/bdstReg"; +import { formH1Class, formH2Class } from "@/components/lib/class/comClass"; import { formatCommaNumber, handleCommaNumberChange, } from "@/components/lib/func/commom"; -import { formH1Class, formH2Class } from "@/components/lib/class/comClass"; +import { DatePicker, FormUi } from "@common/business_components"; +import { Form, FormField, SelectBox } from "@common/business_components/ui"; +import { Button, Input } from "@common/components/ui"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { z } from "zod"; +import BdstReg from "../bdstReg/bdstReg"; export default function RainRegForm({ rainForm, isModal, + readonly = false }: { rainForm: customRainBdst; isModal: boolean; + readonly?: boolean; }) { const { code, rainBdstReg, rainBdstUpdate, rain } = useWrStore( (state) => state ); const { rainFcltCd } = code; const defaultValues: z.infer = rainZod.parse({}); - const form = useForm>({ resolver: zodResolver(rainZod), defaultValues: defaultValues, @@ -60,8 +60,8 @@ export default function RainRegForm({ typeof item?.grntchBdstCertYr === "string" ? item?.grntchBdstCertYr : "", // null → "" - rainObj: { - ...item?.rainObj, + rainyObj: { + ...item?.rainyObj, }, })), }; @@ -84,10 +84,6 @@ export default function RainRegForm({ useEffect(() => { const subscription = form.watch((value) => { }); - - - console.log("Form initialized with default values:", form.getValues()); - return () => subscription.unsubscribe(); }, [form]); @@ -107,7 +103,6 @@ export default function RainRegForm({ if (rainZod) form.reset(cleanRainData(rainForm)); }, [rainForm]); - return (
@@ -117,9 +112,11 @@ export default function RainRegForm({

{isModal ? "건축물 운영정보" : "빗물이용시설 정보"}

- + {!readonly && ( + + )}
{isModal && rainForm != undefined ? : <>} @@ -152,6 +149,7 @@ export default function RainRegForm({ }} selectClass={"w-full"} + readOnly={readonly} /> )} @@ -169,9 +167,10 @@ export default function RainRegForm({ placeholder="1,000,000" type="text" onChange={(e) => { - handleCommaNumberChange(e, field.onChange); + if (!readonly) handleCommaNumberChange(e, field.onChange); }} value={formatCommaNumber(field.value)} + readOnly={readonly} /> )} @@ -198,8 +197,9 @@ export default function RainRegForm({ selectClass={selectClass} label={""} selectArray={rainFcltCd} - onSelectValue={field.onChange} + onSelectValue={readonly ? () => { } : field.onChange} value={field.value ?? rainFcltCd[0]?.val} + readOnly={readonly} /> )} @@ -216,9 +216,10 @@ export default function RainRegForm({ placeholder="1,000,000" type="text" onChange={(e) => { - handleCommaNumberChange(e, field.onChange); + if (!readonly) handleCommaNumberChange(e, field.onChange); }} value={formatCommaNumber(field.value)} + readOnly={readonly} /> )} @@ -241,8 +242,9 @@ export default function RainRegForm({ selectClass={selectClass} label={""} selectArray={code.yn} - onSelectValue={field.onChange} + onSelectValue={readonly ? () => { } : field.onChange} value={field.value ?? code.yn[0]?.val} + readOnly={readonly} /> )} @@ -259,7 +261,7 @@ export default function RainRegForm({ placeholder="1,000,000" type="text" onChange={(e) => { - handleCommaNumberChange(e, field.onChange); + if (!readonly) handleCommaNumberChange(e, field.onChange); }} value={formatCommaNumber(field.value)} readOnly={filtrTrtmfctYn !== "Y"} @@ -279,7 +281,9 @@ export default function RainRegForm({ placeholder="1,000,000" type="" value={field.value ?? ""} - onChange={field.onChange} + onChange={(e) => { + if (!readonly) handleCommaNumberChange(e, field.onChange); + }} readOnly={filtrTrtmfctYn !== "Y"} /> @@ -307,8 +311,9 @@ export default function RainRegForm({ selectClass={selectClass} label={""} selectArray={code.yn} - onSelectValue={field.onChange} + onSelectValue={readonly ? () => { } : field.onChange} value={field.value ?? code.yn[0]?.val} + readOnly={readonly} /> )} @@ -325,7 +330,7 @@ export default function RainRegForm({ placeholder="1,000,000" type="text" onChange={(e) => { - handleCommaNumberChange(e, field.onChange); + if (!readonly) handleCommaNumberChange(e, field.onChange); }} value={formatCommaNumber(field.value)} readOnly={instlCstSprtYn !== "Y"} @@ -351,7 +356,7 @@ export default function RainRegForm({ selectClass={selectClass} label={""} selectArray={code.yn} - onSelectValue={field.onChange} + onSelectValue={readonly ? () => { } : field.onChange} value={field.value ?? code.yn[0]?.val} /> @@ -369,7 +374,9 @@ export default function RainRegForm({ placeholder="2024" type="" value={field.value ?? ""} - onChange={field.onChange} + onChange={(e) => { + if (!readonly) field.onChange(e); + }} readOnly={grntchBdstCertYn !== "Y"} /> @@ -387,7 +394,9 @@ export default function RainRegForm({ placeholder="ab1234678" type="" value={field.value ?? ""} - onChange={field.onChange} + onChange={(e) => { + if (!readonly) field.onChange(e); + }} readOnly={grntchBdstCertYn !== "Y"} /> @@ -405,7 +414,9 @@ export default function RainRegForm({ placeholder="A" type="" value={field.value ?? ""} - onChange={field.onChange} + onChange={(e) => { + if (!readonly) field.onChange(e); + }} readOnly={grntchBdstCertYn !== "Y"} /> diff --git a/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx b/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx index f72e640e3..a4f29477a 100644 --- a/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/rswtrReg/rswtrRegForm.tsx @@ -28,9 +28,11 @@ import BdstReg from "../bdstReg/bdstReg"; export default function RswtrRegForm({ rswtForm, isModal, + readonly = false }: { rswtForm: customRswtBdst; isModal: boolean; + readonly?: boolean; }) { const { rswt, code, rswtBdstUpdate, rswtBdstReg } = useWrStore( (state) => state @@ -78,6 +80,10 @@ export default function RswtrRegForm({ }; }; + useEffect(()=>{ + console.log("rswtForm:", rswtForm) + }, [rswtForm]) + useEffect(() => { console.log("form errors:", form.formState.errors); }, [form.formState.errors]); @@ -105,13 +111,11 @@ export default function RswtrRegForm({

건축물 운영정보

- + {!readonly && ( + + )}
@@ -141,6 +145,7 @@ export default function RswtrRegForm({ onChange: (date) => field.onChange(date), }} selectClass={"w-full"} + readOnly={readonly} /> )} @@ -158,9 +163,10 @@ export default function RswtrRegForm({ placeholder="1,000,000" type="text" onChange={(e) => { - handleCommaNumberChange(e, field.onChange); + if (!readonly) handleCommaNumberChange(e, field.onChange); }} value={formatCommaNumber(field.value)} + readOnly={readonly} /> )} @@ -179,9 +185,10 @@ export default function RswtrRegForm({ placeholder="1,000,000" type="text" onChange={(e) => { - handleCommaNumberChange(e, field.onChange); + if (!readonly) handleCommaNumberChange(e, field.onChange); }} value={formatCommaNumber(field.value)} + readOnly={readonly} /> )} @@ -199,9 +206,10 @@ export default function RswtrRegForm({ placeholder="1,000,000" type="text" onChange={(e) => { - handleCommaNumberChange(e, field.onChange); + if (!readonly) handleCommaNumberChange(e, field.onChange); }} value={formatCommaNumber(field.value)} + readOnly={readonly} /> )} @@ -225,8 +233,9 @@ export default function RswtrRegForm({ type="number" value={field.value ?? 0} onChange={(e) => { - field.onChange(Number(e.target.value)); + if (!readonly) field.onChange(Number(e.target.value)); }} + readOnly={readonly} /> )} @@ -243,8 +252,9 @@ export default function RswtrRegForm({ label={""} selectClass={selectClass} selectArray={code.orgwtKndCd} - onSelectValue={field.onChange} + onSelectValue={readonly ? () => { } : field.onChange} value={field.value ?? code.orgwtKndCd[0]?.val} + readOnly={readonly} /> )} @@ -261,7 +271,10 @@ export default function RswtrRegForm({ placeholder="" type="" value={field.value ?? ""} - onChange={field.onChange} + onChange={(e) => { + if (!readonly) field.onChange + }} + readOnly={readonly} /> )} @@ -287,8 +300,9 @@ export default function RswtrRegForm({ selectClass={selectClass} label={""} selectArray={code.yn} - onSelectValue={field.onChange} + onSelectValue={readonly ? () => { } : field.onChange} value={field.value ?? code.yn[0]?.val} + readOnly={readonly} /> )} @@ -305,7 +319,7 @@ export default function RswtrRegForm({ placeholder="1,000,000" type="text" onChange={(e) => { - handleCommaNumberChange(e, field.onChange); + if (!readonly) handleCommaNumberChange(e, field.onChange); }} value={formatCommaNumber(field.value)} readOnly={instlCstSprtYn !== "Y"} @@ -331,8 +345,9 @@ export default function RswtrRegForm({ selectClass={selectClass} label={""} selectArray={code.yn} - onSelectValue={field.onChange} + onSelectValue={readonly ? () => { } : field.onChange} value={field.value ?? code.yn[0]?.val} + readOnly={readonly} /> )} @@ -350,7 +365,9 @@ export default function RswtrRegForm({ type="text" {...field} value={field.value ?? ""} - onChange={field.onChange} + onChange={(e) => { + if (!readonly) field.onChange(e) + }} readOnly={grntchBdstCertYn !== "Y"} /> @@ -368,7 +385,9 @@ export default function RswtrRegForm({ placeholder="ab1234678" type="" value={field.value ?? ""} - onChange={field.onChange} + onChange={(e) => { + if (!readonly) field.onChange(e) + }} readOnly={grntchBdstCertYn !== "Y"} /> @@ -386,7 +405,9 @@ export default function RswtrRegForm({ placeholder="A" type="" value={field.value ?? ""} - onChange={field.onChange} + onChange={(e) => { + if (!readonly) field.onChange(e) + }} readOnly={grntchBdstCertYn !== "Y"} /> diff --git a/apps/wr/components/ui/modal/sttn/sttnDetailModal/sttnDetailModal.tsx b/apps/wr/components/ui/modal/sttn/sttnDetailModal/sttnDetailModal.tsx index 0ebd03ae2..0f7dbf706 100644 --- a/apps/wr/components/ui/modal/sttn/sttnDetailModal/sttnDetailModal.tsx +++ b/apps/wr/components/ui/modal/sttn/sttnDetailModal/sttnDetailModal.tsx @@ -90,10 +90,10 @@ export default function SttnDetailModal({ : "온배수시설 상세정보"}> 0?"h-[80vh]":"h-[70vh]"} > {type === "RNB" ? ( - + ) : type === "RST" ? ( - - ) : ()} + + ) : ()} {detailData.data.length>0?