diff --git a/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx b/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx index 5a962fc0a..614a8f90e 100644 --- a/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx +++ b/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx @@ -364,6 +364,7 @@ export default function PublicReuseFaciltyInsert() { setIndexMng(index); }} indexMng={indexMng} + readonly={false} /> diff --git a/apps/wr/app/stats/rainStat/page.tsx b/apps/wr/app/stats/rainStat/page.tsx index 591ea5fdf..528f17cd4 100644 --- a/apps/wr/app/stats/rainStat/page.tsx +++ b/apps/wr/app/stats/rainStat/page.tsx @@ -31,7 +31,7 @@ export default function RainStat() { searchRainStatList(searchYear); }, [code.cityCd, code.sggCd, searchRainStatList]) - const excelDetailDownLoad=() =>{ + const excelDetailDownLoad = () => { const sidoList = new Set(); const sidoDataMap = new Map(); // 시도별 데이터를 저장할 Map const sidoDetailMap = new Map(); // 시도별 상세 데이터를 저장할 Map @@ -49,7 +49,7 @@ export default function RainStat() { sidoText = sido?.text || ''; sigunText = sigun?.text || ''; - + // 시도, 시군구 코드를 텍스트로 변환하여 데이터에 할당 if (item.length > 0) { item[0] = sidoText as unknown as RainStatProps; @@ -58,7 +58,7 @@ export default function RainStat() { item[1] = sigunText as unknown as RainStatProps; } if (item.length > 2) { - item[2] = sidoText+' '+sigunText as unknown as RainStatProps; + item[2] = sidoText + ' ' + sigunText as unknown as RainStatProps; } // 시도별 상세 데이터 수집 @@ -89,32 +89,32 @@ export default function RainStat() { const sidoData = sidoDataMap.get(sidoText)!; // 각 컬럼의 값을 합계에 더하기 (1번 인덱스부터 시작) for (let i = 1; i < item.length && i < sidoData.length; i++) { - if(i == 2){ + if (i == 2) { sidoData[i] = '합계'; - } else if(i == 3){ + } else if (i == 3) { // 해당 시도의 데이터 개수를 계산 - const sidoDataCount = rainDetailList.filter((data: unknown[]) => + const sidoDataCount = rainDetailList.filter((data: unknown[]) => Array.isArray(data) && data.length > 0 && String(data[0]) === sidoText ).length; sidoData[i] = sidoDataCount; - } else if( i == 4){ + } else if (i == 4) { sidoData[i] = ''; - } else if(i == 6){ + } else if (i == 6) { // 법정 대상 건축물 개수 (인덱스 6이 'Y'인 경우) - const bumCnt = rainDetailList.filter((data: unknown[]) => + const bumCnt = rainDetailList.filter((data: unknown[]) => Array.isArray(data) && data.length > 6 && String(data[0]) === sidoText ).filter((data: unknown[]) => String(data[6]) === '대상').length; sidoData[i] = bumCnt; - } else if(i==8){ + } else if (i == 8) { const value = Number(item[8]) || 0; sidoData[i] = (Number(sidoData[i]) + value) as string | number; - } else if(i==11){ + } else if (i == 11) { const value = Number(item[11]) || 0; sidoData[i] = (Number(sidoData[i]) + value) as string | number; - } else if(i==12){ + } else if (i == 12) { const value = Number(item[12]) || 0; sidoData[i] = (Number(sidoData[i]) + value) as string | number; - } else if(i==14){ + } else if (i == 14) { const value = Number(item[14]) || 0; sidoData[i] = (Number(sidoData[i]) + value) as string | number; } @@ -127,12 +127,12 @@ export default function RainStat() { // 시도별로 합계와 상세 데이터를 순서대로 배치 const summaryExcelData: (string | number)[][] = []; - + // 시도별로 순회하면서 합계와 상세 데이터를 추가 Array.from(sidoList).forEach((sidoText) => { const sidoSummary = sidoDataMap.get(sidoText); const sidoDetails = sidoDetailMap.get(sidoText) || []; - + if (sidoSummary) { // 시도 합계 데이터 추가 summaryExcelData.push(sidoSummary); @@ -147,14 +147,14 @@ export default function RainStat() { const sidoTotalSummary = [['전체', '', '합계', 0, '', '', 0, '', '', 0, 0, 0, 0, 0, 0, '', 0]]; sidoSummaryList.forEach((item: (string | number)[]) => { item.forEach((value: string | number, index: number) => { - if(typeof value === 'number') { + if (typeof value === 'number') { if (sidoTotalSummary[0] && index < sidoTotalSummary[0].length) { sidoTotalSummary[0][index] = Number(sidoTotalSummary[0][index]) + Number(value); } } }); }); - + // sidoSummaryList와 rainDetailList를 합쳐서 엑셀 데이터 생성 const excelData = [...sidoTotalSummary, ...sidoSummaryList, ...summaryExcelData]; @@ -175,28 +175,30 @@ export default function RainStat() { headerRange: "A1:M1" }) } - + useEffect(() => { const transExcel = Array.isArray(excelList) ? excelList : [excelList]; const excelData = tableData(transExcel, { code }); const tbData = Array.isArray(excelData) - ? excelData.map((item: RainStatProps) => { - return { - "시도": item.cityText, - "개소": item.tmp, - "설치비(백만원)": item.instlCst, - "저류조용량(m³/년)": item.dtfcltCpct, - "연간사용량(m³/년)": item.wtrUsqty, - "조경용수": item.lndwtr, - "청소화장실용수": item.cleanToilUswtr, - "세척살수용수": item.resn, - "농업용수": item.farmUswtr, - "공업용수": item.indstUswtr, - "친수용수": item.hydUswtr, - "기타": item.ithlEtcUswtr, - "연간운영비(백만원/년)": item.anlOperCst, - }; - }) + ? excelData + .filter((item: RainStatProps) => item.cityText !== '없음') + .map((item: RainStatProps) => { + return { + "시도": item.cityText, + "개소": item.tmp, + "설치비(백만원)": item.instlCst, + "저류조용량(m³/년)": item.dtfcltCpct, + "연간사용량(m³/년)": item.wtrUsqty, + "조경용수": item.lndwtr, + "청소화장실용수": item.cleanToilUswtr, + "세척살수용수": item.resn, + "농업용수": item.farmUswtr, + "공업용수": item.indstUswtr, + "친수용수": item.hydUswtr, + "기타": item.ithlEtcUswtr, + "연간운영비(백만원/년)": item.anlOperCst, + }; + }) : []; setExData(tbData); }, [code, excelList]) @@ -237,7 +239,7 @@ export default function RainStat() { />
-
diff --git a/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/buseWaterQulity/buseWaterQulity.tsx b/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/buseWaterQulity/buseWaterQulity.tsx index cba4c4c81..121957b8e 100644 --- a/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/buseWaterQulity/buseWaterQulity.tsx +++ b/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/buseWaterQulity/buseWaterQulity.tsx @@ -13,7 +13,7 @@ export function BuseWaterQulity({ sonClass, indexMng, indexBiz, - formType, + readonly, }: { form: UseFormReturn<{ items: PbnstRegArrrayType }>; h1Title: string; @@ -22,7 +22,7 @@ export function BuseWaterQulity({ sonClass: string; indexMng: number; indexBiz: number; - formType?: string; + readonly?: boolean; }) { const [frontPHdata, setFrontPHdata] = useState("0"); const [backPHdata, setBackPHdata] = useState("0"); @@ -131,7 +131,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={6} /> @@ -168,7 +168,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={6} /> {/* TODO: 총대장균군수 확인 필요*/} @@ -203,7 +203,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={6} /> @@ -237,7 +237,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={6} /> @@ -267,7 +267,7 @@ export function BuseWaterQulity({ field.onChange(String(e.target.value)); }} value={field.value ?? ""} - readOnly={formType === "sttn" ? true : false} + readOnly={readonly === "sttn" ? true : false} maxLength={txtSize} /> */} { field.onChange(val); }} @@ -310,7 +310,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={6} /> @@ -344,7 +344,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={6} /> @@ -379,7 +379,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={6} /> @@ -413,7 +413,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={7} /> @@ -448,7 +448,7 @@ export function BuseWaterQulity({ ? `${field.value}` : "" } - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={7} /> @@ -472,7 +472,7 @@ export function BuseWaterQulity({ isSetFrontPh(e.target.value) } value={frontPHdata ?? ""} - readOnly={formType === "sttn"} + readOnly={readonly} maxLength={3} /> ~ @@ -484,7 +484,7 @@ export function BuseWaterQulity({ isSetBackPh(e.target.value); }} value={backPHdata ?? ""} - readOnly={formType === "sttn"} + readOnly={readonly} maxLength={3} /> diff --git a/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx b/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx index ee3fe8363..f7355bfd9 100644 --- a/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx @@ -41,11 +41,13 @@ export function PbnstMngForm({ formType, indexMng, setIndexMng, + readonly }: { form: UseFormReturn<{ items: PbnstRegArrrayType }>; formType: string; indexMng: number; setIndexMng: (index: number) => void; + readonly:boolean }) { const { code, pbnst, fileDelete, fileDownLoad } = useWrStore( (state) => state @@ -293,7 +295,7 @@ export function PbnstMngForm({ field.onChange(String(e.target.value)); }} value={field.value ?? ""} - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} maxLength={txtSize} /> @@ -374,7 +376,7 @@ export function PbnstMngForm({ handleCommaNumberChange(e, field.onChange); }} value={formatCommaNumber(field.value)} - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} /> )} @@ -398,7 +400,7 @@ export function PbnstMngForm({ handleCommaNumberChange(e, field.onChange); }} value={formatCommaNumber(field.value)} - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} /> )} @@ -421,7 +423,7 @@ export function PbnstMngForm({ handleCommaNumberChange(e, field.onChange); }} value={formatCommaNumber(field.value)} - readOnly={formType === "sttn" ? true : false} + readOnly={readonly} /> )} diff --git a/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx b/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx index 8275e472b..c0cbdda30 100644 --- a/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx +++ b/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx @@ -99,6 +99,7 @@ export function PbnstRegModal({ formType={"reg"} indexMng={indexMng} setIndexMng={setIndexMng} + readonly={false} />
diff --git a/apps/wr/components/ui/modal/sttn/pbnstSttnModal/pbnstSttnModal.tsx b/apps/wr/components/ui/modal/sttn/pbnstSttnModal/pbnstSttnModal.tsx index 20a13dc31..b23a52056 100644 --- a/apps/wr/components/ui/modal/sttn/pbnstSttnModal/pbnstSttnModal.tsx +++ b/apps/wr/components/ui/modal/sttn/pbnstSttnModal/pbnstSttnModal.tsx @@ -35,7 +35,7 @@ import { useForm } from "react-hook-form"; import { z } from "zod"; export function PbnstSttnModal({ data, titleVisible }: { data: customPbnst; titleVisible?: boolean }) { - const { pbnstSttn, prfmnc , pbnstPrfmncSttn} = useWrStore((state) => state); + const { pbnstSttn, prfmnc, pbnstPrfmncSttn } = useWrStore((state) => state); const [fcltTab, setFcltTab] = useState("fclt"); const [ruseTab, setRuseTab] = useState("totalPrf"); const [ruseHeadList, setRuseHeadList] = useState([]); @@ -67,10 +67,10 @@ export function PbnstSttnModal({ data, titleVisible }: { data: customPbnst; titl cusrAlotm: item.cusrAlotm ?? "-", etc: item.etc ?? "-", totalMoney: - Number(item.addr) + Number(item.gvsbs) + Number(item.lcep) + - Number(item.cusrAlotm), + Number(item.cusrAlotm) + + (isNaN(Number(item.etc)) ? 0 : Number(item.etc)), instlAprvSncnDt: item.instlAprvSncnDt?.toISOString ?? "-", bizCmcnDay: item.bizCmcnDay?.toISOString ?? "-", rprcsFcltCpct: item.rprcsFcltCpct ?? "-", @@ -167,8 +167,8 @@ export function PbnstSttnModal({ data, titleVisible }: { data: customPbnst; titl const getTablePrfData = (prfList: PrfType[]) => { const inUsageData = structuredClone(initValInUsage); const outUsageData = structuredClone(initValOutUsage); - const inSubtotal = structuredClone(subTotalObj); - const outSubtotal = structuredClone(subTotalObj); + const inSubtotal = { ...structuredClone(subTotalObj), 구분: "장내용수" }; + const outSubtotal = { ...structuredClone(subTotalObj), 구분: "장외용수" }; if (prfList) { prfList?.forEach((prfItem) => { @@ -216,7 +216,9 @@ export function PbnstSttnModal({ data, titleVisible }: { data: customPbnst; titl (usageTotalObj as any)[key] = val; } const tableData = [...inUsageData, ...outUsageData, usageTotalObj]; - + console.log("inusageData", inUsageData) + console.log("outUsageData", outUsageData) + console.log("tableData", tableData) setPrfData({ inPrf: inUsageData, outPrf: outUsageData, @@ -264,6 +266,7 @@ export function PbnstSttnModal({ data, titleVisible }: { data: customPbnst; titl formType={"sttn"} indexMng={indexMng} setIndexMng={setIndexMng} + readonly={true} />
@@ -300,8 +303,8 @@ export function PbnstSttnModal({ data, titleVisible }: { data: customPbnst; titl }} > {fcltTab === "fclt" ? ( - - ) : undefined} + + ) : undefined} @@ -323,22 +326,22 @@ export function PbnstSttnModal({ data, titleVisible }: { data: customPbnst; titl {prfData && ( - -
-

- {"하수처리수재이용 실적(m³) 등록결과"} -

-
- - - {headMakeprfmnc(pbnstPrfmncSttn.monthSttnHeadList, [])} - - - {InputTableBody(prfData[ruseTab as keyof typeof prfData] || [], pbnstPrfmncSttn.monthSttnHeadList, setPrfData as any)} - -
-
-
+ +
+

+ {"하수처리수재이용 실적(m³) 등록결과"} +

+
+ + + {headMakeprfmnc(pbnstPrfmncSttn.monthSttnHeadList, [])} + + + {InputTableBody(prfData[ruseTab as keyof typeof prfData] || [], pbnstPrfmncSttn.monthSttnHeadList, setPrfData as any)} + +
+
+ )}
diff --git a/apps/wr/components/ui/modal/sttn/sttnDetailModal/coDatailModal.tsx b/apps/wr/components/ui/modal/sttn/sttnDetailModal/coDatailModal.tsx index 8ad5da057..1db650f09 100644 --- a/apps/wr/components/ui/modal/sttn/sttnDetailModal/coDatailModal.tsx +++ b/apps/wr/components/ui/modal/sttn/sttnDetailModal/coDatailModal.tsx @@ -421,11 +421,11 @@ export default function CoDetailModal({ { - field.onChange(e.target.value); + handleCommaNumberChange(e, field.onChange); }} - value={field.value ?? 0} + value={formatCommaNumber(field.value) ?? 0} min={0} readOnly={true} />