diff --git a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/headList.tsx b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/headList.tsx index a31b73ba3..7c809d7b7 100644 --- a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/headList.tsx +++ b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/headList.tsx @@ -53,25 +53,25 @@ const buildingZod = z.object({ }); export const rswtrPolutionsZode = z.object({ - utztnUsgCdText:z.string().nullish(), - chkgdnDtlFk: z.string().nullish(), - utztnUsgCd: z.string().nullish(), - node: z.string().nullish(), - grssClfgUswtr: z.number(), - combResdch: z.number(), - trbt: z.number(), - bod: z.number(), - smll: z.number(), - crmty: z.number(), - tph: z.number(), - tn: z.number(), - ph: z.number(), - clIonQnt: z.number(), - regDt: z.string().nullish(), - rgtr: z.string().nullish(), - mdfcnDt: z.string().nullish(), - mdfr: z.string().nullish(), - edit:z.boolean().nullish() + utztnUsgCdText:z.string().nullish(), // 이용용도 코드의 화면 표시용 한글명 + chkgdnDtlFk: z.string().nullish(), // 지도점검 상세 PK와 연결되는 FK + utztnUsgCd: z.string().nullish(), // 이용용도 코드 + node: z.string().nullish(), // 분기 구분값(1~4분기) + grssClfgUswtr: z.number(), // 총대장균군수 + combResdch: z.number(), // 결합잔류염소 + trbt: z.number(), // 탁도 + bod: z.number(), // BOD + smll: z.string(), // 냄새 + crmty: z.number(), // 색도 + tph: z.number(), // 총인(T-P) + tn: z.number(), // 총질소(T-N) + ph: z.number(), // 수소이온농도(pH) + clIonQnt: z.number(), // 염화물 + regDt: z.string().nullish(), // 등록일시 + rgtr: z.string().nullish(), // 등록자 + mdfcnDt: z.string().nullish(), // 수정일시 + mdfr: z.string().nullish(), // 수정자 + edit:z.boolean().nullish() // 화면에서 수정 가능 여부 }); export const rswtrDetailsZod = z.object({ diff --git a/apps/wr/app/store/prfmncSttn/chkgdnSttn/rainChkgdnSttn/index.tsx b/apps/wr/app/store/prfmncSttn/chkgdnSttn/rainChkgdnSttn/index.tsx index e99bdb7a8..7eb4f5396 100644 --- a/apps/wr/app/store/prfmncSttn/chkgdnSttn/rainChkgdnSttn/index.tsx +++ b/apps/wr/app/store/prfmncSttn/chkgdnSttn/rainChkgdnSttn/index.tsx @@ -43,16 +43,16 @@ export type rainChkSttnType = rainChkSttnState & rainChkSttnActions; export const rainChkSttnStateExport: rainChkSttnState = { rainChkSttn: { - rainChkRes: [], - fcltDiv: fcltDiv, - rainChkgdnHeadList: rainChkgdnHeadList, - ruseHeadList: ruseHeadList, - splHeadList: splHeadList, - rainHeadNm: rainHeadNm, - isInit: false, - sttnExcelList: [], - isSttn: false, - rainChkCount: 1, + rainChkRes: [], // 빗물이용시설 지도점검 현황 메인 목록 데이터 + fcltDiv: fcltDiv, // 시설 구분 RST 중수도시설, RNB 빗물이용시설 + rainChkgdnHeadList: rainChkgdnHeadList, // 메인 목록 테이블 헤더 정의 + ruseHeadList: ruseHeadList, // 연간 빗물이용량 상세 테이블 헤더 정의 + splHeadList: splHeadList, // 연간 대체수이용량 상세 테이블 헤더 정의 + rainHeadNm: rainHeadNm, // 메인 목록 다단 헤더명 정의 + isInit: false, // 현황 화면 초기 조회 완료 여부 + sttnExcelList: [], // 엑셀 다운로드용 가공 데이터 + isSttn: false, // 등록/현황 화면 구분 및 읽기 전용 제어 플래그 + rainChkCount: 1, // 메인 목록 전체 건수 }, }; diff --git a/apps/wr/components/lib/func/TableData.tsx b/apps/wr/components/lib/func/TableData.tsx index 3fe2129af..89d347c24 100644 --- a/apps/wr/components/lib/func/TableData.tsx +++ b/apps/wr/components/lib/func/TableData.tsx @@ -234,7 +234,7 @@ export const chRowspanTable = ( }} /> ) - ) : ["smll", "ph"].includes(head.id) && head.type === "text" ? ( + ) : ["smll"].includes(head.id) && head.type === "text" ? ( <>- ) : [ "totalSplyUswtrUtztnQnt", @@ -349,27 +349,24 @@ export const InputTableBody = ( return ( {headList.map((head, headIndex) => { - //냄새, ph면 계산 못하게 - 로 수정 - if (["smll", "ph"].includes(head.id)) { - return ( - - - - - ); - } - const isTextColumn = head.id === "구분" || head.id === "용수명"; + //냄새면 계산 못하게 - 로 수정 + // if (["smll"].includes(head.id)) { + // return ( + // + // - + // + // ); + // } + const isTextColumn = head.id === "구분" || head.id === "utztnUsgCdText"; const textAlignClass = isTextColumn ? "text-center" : "text-right"; // 총합계 행이면 "구분"에서 colSpan=2로 병합 - if ( - (data["구분"] === 0 || data["용수명"] === 0) && - head.id === "구분" - ) { + if ( (data["구분"] === 0 || data["용수명"] === 0) && head.id === "구분" ) { return ( -
+
{Number(data[head.id]) ? formatCommaNumber(data[head.id as keyof any]) : (data[head.id as keyof any] ?? "")} diff --git a/apps/wr/components/ui/modal/chkgd/chkgdModal/chkgdModal.tsx b/apps/wr/components/ui/modal/chkgd/chkgdModal/chkgdModal.tsx index 3496ed730..c5ba35e17 100644 --- a/apps/wr/components/ui/modal/chkgd/chkgdModal/chkgdModal.tsx +++ b/apps/wr/components/ui/modal/chkgd/chkgdModal/chkgdModal.tsx @@ -14,10 +14,10 @@ import React, { useEffect, useState } from "react"; import type { z } from "zod"; export default function ChkgdModal({ - type, - obj, - setIsModal, - readonly, + type, // 시설 구분값. "RNB"이면 빗물, 그 외는 중수도 상세 모달로 처리 + obj, // 목록에서 선택한 1건의 상세 데이터. 가이드/수질/과태료 정보 렌더링과 저장에 사용 + setIsModal, // 모달 열림 상태를 제어하는 함수. 저장 완료 시 false로 닫는다 + readonly, // 편집 가능 여부. true면 입력 가능, false면 조회 전용으로 렌더링 }: { type: string; obj: any; @@ -60,7 +60,7 @@ export default function ChkgdModal({ combResdch: 0, trbt: 0, bod: 0, - smll: 0, + smll: '-', crmty: 0, tph: 0, tn: 0, @@ -72,7 +72,7 @@ export default function ChkgdModal({ useEffect(() => { if (rainChkSttn.isSttn) { setHeadList({ - splHeadList: rainChkSttn.splHeadList, + splHeadList: rainChkSttn.splHeadList, // 연간 대체수이용량 헤더 정의 ruseHeadList: rainChkSttn.ruseHeadList, rswtDetailHeadList: type === "RNB" ? [] : rswtChkSttn.rswtDetailSttnHeadList, @@ -85,9 +85,12 @@ export default function ChkgdModal({ }); } }, [ + type, rainChkSttn.isSttn, rainChkgdn.splHeadList, + rainChkgdn.ruseHeadList, rainChkSttn.splHeadList, + rainChkSttn.ruseHeadList, rswtChkgdn.rswtDetailHeadList, rswtChkSttn.rswtDetailSttnHeadList, ]); @@ -159,12 +162,13 @@ export default function ChkgdModal({ if (onlyData.length === 0) return; const total = initStats(); + // 분기별 원본 수질 데이터를 모두 더해 평균 계산의 분모/분자를 만든다. onlyData.forEach((item) => { total.grssClfgUswtr += item.grssClfgUswtr; total.combResdch += item.combResdch; total.trbt += item.trbt; total.bod += item.bod; - total.smll += item.smll; + // 냄새(smll)는 수치 평균 대상이 아니라 누적하지 않는다. total.crmty += item.crmty; total.tph += item.tph; total.tn += item.tn; @@ -172,6 +176,7 @@ export default function ChkgdModal({ total.clIonQnt += item.clIonQnt; }); + // 누적 합계를 항목 개수로 나눠 화면에 표시할 평균 행을 만든다. const average = { utztnUsgCdText: "평균", edit: false, @@ -179,7 +184,7 @@ export default function ChkgdModal({ combResdch: (total.combResdch / onlyData.length).toFixed(1), trbt: (total.trbt / onlyData.length).toFixed(1), bod: (total.bod / onlyData.length).toFixed(1), - smll: (total.smll / onlyData.length).toFixed(1), + smll: '-', crmty: (total.crmty / onlyData.length).toFixed(1), tph: (total.tph / onlyData.length).toFixed(1), tn: (total.tn / onlyData.length).toFixed(1), diff --git a/apps/wr/components/ui/table/chkgdTable/rswtChkgd/rswtChkgdTable.tsx b/apps/wr/components/ui/table/chkgdTable/rswtChkgd/rswtChkgdTable.tsx index 46e0067cf..bac0e71a3 100644 --- a/apps/wr/components/ui/table/chkgdTable/rswtChkgd/rswtChkgdTable.tsx +++ b/apps/wr/components/ui/table/chkgdTable/rswtChkgd/rswtChkgdTable.tsx @@ -1,3 +1,6 @@ +/** + * 재이용실적등록 > 지도점검결과 등록 - 중수도 table 목록 + */ "use client"; import { headMakeprfmnc } from "@/app/(with-layout)/ruseFcltMng/prfmncReg/chkgdnReg/TableHead"; import { useWrStore } from "@/app/store";