From f61e952d28cccd2147957317e383efdbc4b32e5d Mon Sep 17 00:00:00 2001 From: rsone001 Date: Fri, 9 Jan 2026 13:20:55 +0900 Subject: [PATCH] =?UTF-8?q?feat:=2011.=20=ED=95=98=EC=88=98=20=EB=B0=8F=20?= =?UTF-8?q?=EB=B6=84=EB=87=A8=EC=B0=8C=EA=BA=BC=EA=B8=B0(=EC=8A=AC?= =?UTF-8?q?=EB=9F=AC=EC=A7=80)=20=ED=99=94=EB=A9=B4=20=EA=B5=AC=ED=98=84?= =?UTF-8?q?=20=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 각 tab을 위한 columns, columnLayout 파일 생성 - tab 1. 찌꺼기(슬러지)처리 시설현황 구현 중 --- .../management/SewageExcretaSlurgeMng.tsx | 54 ++++- .../DigestorOperatingStatusMngColumn.ts | 4 + .../ExcretaSlurgeProcessingStatusMngColumn.ts | 4 + ...ewageSlurgeProcessingFacStatusMngColumn.ts | 4 + .../SlurgeProcessingFacStatusMngColumn.ts | 215 ++++++++++++++++++ 5 files changed, 279 insertions(+), 2 deletions(-) create mode 100644 apps/st/src/components/util/column/management/sewageExcretaSlurge/DigestorOperatingStatusMngColumn.ts create mode 100644 apps/st/src/components/util/column/management/sewageExcretaSlurge/ExcretaSlurgeProcessingStatusMngColumn.ts create mode 100644 apps/st/src/components/util/column/management/sewageExcretaSlurge/SewageSlurgeProcessingFacStatusMngColumn.ts create mode 100644 apps/st/src/components/util/column/management/sewageExcretaSlurge/SlurgeProcessingFacStatusMngColumn.ts diff --git a/apps/st/src/components/statistics/management/SewageExcretaSlurgeMng.tsx b/apps/st/src/components/statistics/management/SewageExcretaSlurgeMng.tsx index fc3ac670f..87bf941cf 100644 --- a/apps/st/src/components/statistics/management/SewageExcretaSlurgeMng.tsx +++ b/apps/st/src/components/statistics/management/SewageExcretaSlurgeMng.tsx @@ -1,12 +1,62 @@ +import { useState } from "react"; import SearchForm from "@/components/module/SearchForm"; +import TabDataGrid from "@/components/module/TabDataGrid"; +import SubmitButton from "@/components/button/SumitButton"; +import SaveButton from "@/components/button/SaveButton"; +import SubmitExceptionButton from "@/components/button/SubmitExceptionButton"; +import LastYearDataButton from "@/components/button/LastYearDataButton"; + +import {SlurgeProcessingFacStatusMngColumn } from "@/components/util/column/management/sewageExcretaSlurge/SlurgeProcessingFacStatusMngColumn"; +import { DigestorOperatingStatusMngColumn } from "@/components/util/column/management/sewageExcretaSlurge/DigestorOperatingStatusMngColumn"; +import { SewageSlurgeProcessingFacStatusMngColumn } from "@/components/util/column/management/sewageExcretaSlurge/SewageSlurgeProcessingFacStatusMngColumn"; +import { ExcretaSlurgeProcessingStatusMngColumn } from "@/components/util/column/management/sewageExcretaSlurge/ExcretaSlurgeProcessingStatusMngColumn"; + // 하수도 통계 관리 > 11. 하수 및 분뇨찌꺼기(슬러지)처리 const SewageExcretaSlurgeMng = () => { + const [rowDataMap, setRowDataMap] = useState[]>>(new Map()); + + // tab list + const SewageExcretaSlurgeMngList = [ + SlurgeProcessingFacStatusMngColumn + ]; + + const submitExceptionFunc = () => { + // TODO: 예외 제출 로직 구현 + console.log('예외 제출 로직 실행'); + }; + + const lastYearDataFunc = () => { + // TODO: 지난연도 데이터 가져오기 로직 구현 + console.log('지난연도 데이터 가져오기 로직 실행'); + }; + + const submitFunc = () => { + // TODO: 제출 로직 구현 + console.log('제출 로직 실행'); + }; + + const saveFunc = () => { + // TODO: 저장 로직 구현 + console.log('저장 로직 실행'); + }; + return ( <> - + + +
+ + + + +
+ + ); }; -export default SewageExcretaSlurgeMng; \ No newline at end of file +export default SewageExcretaSlurgeMng; + + diff --git a/apps/st/src/components/util/column/management/sewageExcretaSlurge/DigestorOperatingStatusMngColumn.ts b/apps/st/src/components/util/column/management/sewageExcretaSlurge/DigestorOperatingStatusMngColumn.ts new file mode 100644 index 000000000..4fc0f806f --- /dev/null +++ b/apps/st/src/components/util/column/management/sewageExcretaSlurge/DigestorOperatingStatusMngColumn.ts @@ -0,0 +1,4 @@ +import { footerDecimal2 } from "@/components/util/grid/footerSummary"; + +// 하수도 통계 관리 > 11.하수 및 분뇨찌꺼기(슬러지) 처리 > tab 2. 소화조 운영현황 +export const DigestorOperatingStatusMngColumn = {}; \ No newline at end of file diff --git a/apps/st/src/components/util/column/management/sewageExcretaSlurge/ExcretaSlurgeProcessingStatusMngColumn.ts b/apps/st/src/components/util/column/management/sewageExcretaSlurge/ExcretaSlurgeProcessingStatusMngColumn.ts new file mode 100644 index 000000000..3d2d22e09 --- /dev/null +++ b/apps/st/src/components/util/column/management/sewageExcretaSlurge/ExcretaSlurgeProcessingStatusMngColumn.ts @@ -0,0 +1,4 @@ +import { footerDecimal2 } from "@/components/util/grid/footerSummary"; + +// 하수도 통계 관리 > 11.하수 및 분뇨찌꺼기(슬러지) 처리 > tab 4. 분뇨찌꺼기(슬러지)처리 현황 +export const ExcretaSlurgeProcessingStatusMngColumn = {}; \ No newline at end of file diff --git a/apps/st/src/components/util/column/management/sewageExcretaSlurge/SewageSlurgeProcessingFacStatusMngColumn.ts b/apps/st/src/components/util/column/management/sewageExcretaSlurge/SewageSlurgeProcessingFacStatusMngColumn.ts new file mode 100644 index 000000000..8238604c5 --- /dev/null +++ b/apps/st/src/components/util/column/management/sewageExcretaSlurge/SewageSlurgeProcessingFacStatusMngColumn.ts @@ -0,0 +1,4 @@ +import { footerDecimal2 } from "@/components/util/grid/footerSummary"; + +// 하수도 통계 관리 > 11.하수 및 분뇨찌꺼기(슬러지) 처리 > tab 3. 하수찌꺼기 처리시설 운영현황 +export const SewageSlurgeProcessingFacStatusMngColumn = {} \ No newline at end of file diff --git a/apps/st/src/components/util/column/management/sewageExcretaSlurge/SlurgeProcessingFacStatusMngColumn.ts b/apps/st/src/components/util/column/management/sewageExcretaSlurge/SlurgeProcessingFacStatusMngColumn.ts new file mode 100644 index 000000000..381b6e818 --- /dev/null +++ b/apps/st/src/components/util/column/management/sewageExcretaSlurge/SlurgeProcessingFacStatusMngColumn.ts @@ -0,0 +1,215 @@ +import { footerDecimal1 } from "@/components/util/grid/footerSummary"; + +// 하수도 통계 관리 > 11. 하수 및 분뇨찌꺼기(슬러지)처리 > tab 1: 찌꺼기(슬러지)처리시설현황 +export const SlurgeProcessingFacStatusMngColumn = { + columns: [ + // 행정구역 + { name: 'SIDO_CD', fieldName: '시도', header: { text: '시도' }, editable: false }, + { name: 'ADST_CD', fieldName: '시군구', header: { text: '시군구' }, footer: { text: '합계' } }, + + // 하수처리장명 + { name: 'BSC_FCT_NM', fieldName: '하수처리장명', header: { text: '하수처리장명' }, }, + + // 찌꺼기발생량(톤/년, 탈수기준) + { name: 'TOT_AMNT', fieldName: '합계', header: { text: '합계' }, editable: false, footer: footerDecimal1 }, + { name: 'P_AMNT', fieldName: '자체', header: { text: '자체' }, footer: footerDecimal1 }, + { name: 'OUT_AMNT', fieldName: '외부유입량', header: { text: '외부유입량' }, footer: footerDecimal1 }, + + // 이송처리장 + { name: 'OUT_FCT_NM', fieldName: '이송처리장', header: { text: '이송처리장' } }, + + // 이송처리량 - 쿼리에 없음 + { name: 'a', fieldName: '이송처리량(m³/년)', header: { text: '이송처리량(m³/년)' }, footer: footerDecimal1 }, + + // 함수율 + { name: 'DSP_MOIRAT', fieldName: '함수율(%, 탈수기준)', header: { text: '함수율(%, 탈수기준)' }, footer: footerDecimal1 }, + + // 찌꺼기처리량합계 + { name: 'DSP_SM', fieldName: '찌꺼기처리량합계(톤/년)', header: { text: '찌꺼기처리량합계(톤/년)' }, editable: false, footer: footerDecimal1 }, + + // 자체 찌꺼기 처리량 > 자체찌꺼기처리량소계 + { name: 'DSP_SELF_SM', fieldName: '자체찌꺼기처리량소계', header: { text: '자체찌꺼기처리량소계' }, editable: false, footer: footerDecimal1 }, + + // 자체 찌꺼기 처리량 > 매립 + { name: 'O_DSP_RCLM', fieldName: '매립', header: { text: '매립' }, footer: footerDecimal1 }, + + // 자체 찌꺼기 처리량 > 소각(1차) + { name: 'O_DSP_INCNR', fieldName: '소각(1차)', header: { text: '소각(1차)' }, footer: footerDecimal1 }, + + // 자체 찌꺼기 처리량 > 소각 후 처리(2차) - 쿼리에 없음 + { name: 'b1', fieldName: '소계', header: { text: '소계' }, editable: false, footer: footerDecimal1 }, + { name: 'b2', fieldName: '매립', header: { text: '매립' }, footer: footerDecimal1 }, + { name: 'b3', fieldName: '제품원료', header: { text: '제품원료' }, footer: footerDecimal1 }, + { name: 'b4', fieldName: '복토재', header: { text: '복토재' }, footer: footerDecimal1 }, + { name: 'b5', fieldName: '시설(업체명)', header: { text: '시설(업체명)' } }, + + // 자체 찌꺼기 처리량 > 고화(1차) - 쿼리에 없음 + { name: 'c1', fieldName: '고화(1차)', header: { text: '고화(1차)' }, footer: footerDecimal1 }, + + // 자체 찌꺼기 처리량 > 고화 후 처리(2차) - 쿼리에 없음 + { name: 'c2', fieldName: '소계', header: { text: '소계' }, editable: false, footer: footerDecimal1 }, + { name: 'c3', fieldName: '매립', header: { text: '매립' }, footer: footerDecimal1 }, + { name: 'c4', fieldName: '복토재', header: { text: '복토재' }, footer: footerDecimal1 }, + { name: 'c5', fieldName: '시설(업체명)', header: { text: '시설(업체명)' } }, + + // 자체 찌꺼기 처리량 > 건조(1차) + { name: 'DSP_DESIC', fieldName: '건조(1차)', header: { text: '건조(1차)' }, footer: footerDecimal1 }, + + // 자체 찌꺼기 처리량 > 건조 후 처리(2차) - 쿼리에 없음 + { name: 'd1', fieldName: '소계', header: { text: '소계' }, editable: false, footer: footerDecimal1 }, + { name: 'd2', fieldName: '매립', header: { text: '매립' }, footer: footerDecimal1 }, + { name: 'd3', fieldName: '소각', header: { text: '소각' }, footer: footerDecimal1 }, + { name: 'd4', fieldName: '연료', header: { text: '연료' }, footer: footerDecimal1 }, + { name: 'd5', fieldName: '제품원료', header: { text: '제품원료' }, footer: footerDecimal1 }, + { name: 'd6', fieldName: '복토재', header: { text: '복토재' }, footer: footerDecimal1 }, + { name: 'd7', fieldName: '퇴비화', header: { text: '퇴비화' }, footer: footerDecimal1 }, + { name: 'd8', fieldName: '시설(업체명)', header: { text: '시설(업체명)' }, editable: true }, + + // 자체 찌꺼기 처리량 > 탄화(1차) - 쿼리에 없음 + { name: 'e1', fieldName: '탄화(1차)', header: { text: '탄화(1차)' }, footer: footerDecimal1 }, + + // 자체 찌꺼기 처리량 > 탄화 후 처리(2차) - 쿼리에 없음 + { name: 'e2', fieldName: '소계', header: { text: '소계' }, editable: false, footer: footerDecimal1 }, + { name: 'e3', fieldName: '소각', header: { text: '소각' }, footer: footerDecimal1 }, + { name: 'e4', fieldName: '연료', header: { text: '연료' }, footer: footerDecimal1 }, + { name: 'e5', fieldName: '시설(업체명)', header: { text: '시설(업체명)' } }, + + // 자체 찌꺼기 처리량 > 퇴비화 - 쿼리에 없음 + { name: 'f1', fieldName: '퇴비화', header: { text: '퇴비화' }, footer: footerDecimal1 }, + + // 자체 찌꺼기 처리량 > 퇴비화 > 시설(업체명) - 쿼리에 없음 + { name: 'f2', fieldName: '시설(업체명)', header: { text: '시설(업체명)' } }, + + // 외부위탁 처리량(톤/년) + { name: 'DSP_CONSIGNMENT', fieldName: '소계', header: { text: '소계' }, editable: false, footer: footerDecimal1 }, + { name: 'g1', fieldName: '매립', header: { text: '매립' }, footer: footerDecimal1 }, + { name: 'g2', fieldName: '소각', header: { text: '소각' }, footer: footerDecimal1 }, + { name: 'g3', fieldName: '연료', header: { text: '연료' }, footer: footerDecimal1 }, + { name: 'g4', fieldName: '제품원료', header: { text: '제품원료' }, footer: footerDecimal1 }, + { name: 'g5', fieldName: '복토재', header: { text: '복토재' }, footer: footerDecimal1 }, + { name: 'g6', fieldName: '퇴비화', header: { text: '퇴비화' }, footer: footerDecimal1 }, + { name: 'g7', fieldName: '시설(업체명)', header: { text: '시설(업체명)' } }, + + // 수도권광역위탁처리량 + { name: 'DSP_WIDE', fieldName: '수도권광역위탁처리량(톤/년)', header: { text: '수도권광역위탁처리량(톤/년)' }, footer: footerDecimal1 }, + + // 비고 + { name: 'RMK', fieldName: '비고', header: { text: '비고' } }, + + // Hidden: Check fields + { name: 'CHK_TOT_AMNT', fieldName: 'CHK_TOT_AMNT', header: { text: 'CHK_TOT_AMNT' }, visible: false }, + { name: 'CHK_P_AMNT', fieldName: 'CHK_P_AMNT', header: { text: 'CHK_P_AMNT' }, visible: false }, + { name: 'CHK_OUT_AMNT', fieldName: 'CHK_OUT_AMNT', header: { text: 'CHK_OUT_AMNT' }, visible: false }, + { name: 'CHK_DSP_MOIRAT', fieldName: 'CHK_DSP_MOIRAT', header: { text: 'CHK_DSP_MOIRAT' }, visible: false }, + { name: 'CHK_DSP_SM', fieldName: 'CHK_DSP_SM', header: { text: 'CHK_DSP_SM' }, visible: false }, + { name: 'CHK_DSP_SELF_SM', fieldName: 'CHK_DSP_SELF_SM', header: { text: 'CHK_DSP_SELF_SM' }, visible: false }, + { name: 'CHK_O_DSP_RCLM', fieldName: 'CHK_O_DSP_RCLM', header: { text: 'CHK_O_DSP_RCLM' }, visible: false }, + { name: 'CHK_O_DSP_INCNR', fieldName: 'CHK_O_DSP_INCNR', header: { text: 'CHK_O_DSP_INCNR' }, visible: false }, + { name: 'CHK_DSP_DESIC', fieldName: 'CHK_DSP_DESIC', header: { text: 'CHK_DSP_DESIC' }, visible: false }, + { name: 'CHK_DSP_CONSIGNMENT', fieldName: 'CHK_DSP_CONSIGNMENT', header: { text: 'CHK_DSP_CONSIGNMENT' }, visible: false }, + { name: 'CHK_DSP_WIDE', fieldName: 'CHK_DSP_WIDE', header: { text: 'CHK_DSP_WIDE' }, visible: false }, + { name: 'CHK_OUT_FCT_NM', fieldName: 'CHK_OUT_FCT_NM', header: { text: 'CHK_OUT_FCT_NM' }, visible: false }, + ], + + columnLayout: [ + { + name: 'group_admin', + header: { text: '행정구역' }, + items: ['SIDO_CD', 'ADST_CD'] + }, + 'BSC_FCT_NM', + { + name: 'group_occur_amount', + header: { text: '찌꺼기발생량(톤/년, 탈수기준)' }, + items: [ + 'TOT_AMNT', + 'P_AMNT', + 'OUT_AMNT' + ] + }, + 'OUT_FCT_NM', + 'a', + 'DSP_MOIRAT', + 'DSP_SM', + { + name: 'group_self_treatment', + header: { text: '자체 찌꺼기 처리량(톤/년)' }, + items: [ + 'DSP_SELF_SM', + 'O_DSP_RCLM', + 'O_DSP_INCNR', + { + name: 'group_incinerate_2nd', + header: { text: '소각 후 처리(2차)' }, + items: [ + 'b1', + 'b2', + 'b3', + 'b4', + 'b5' + ] + }, + 'c1', + { + name: 'group_solidify_2nd', + header: { text: '고화 후 처리(2차)' }, + items: [ + 'c2', + 'c3', + 'c4', + 'c5' + ] + }, + 'DSP_DESIC', + { + name: 'group_drying_2nd', + header: { text: '건조 후 처리(2차)' }, + items: [ + 'd1', + 'd2', + 'd3', + 'd4', + 'd5', + 'd6', + 'd7', + 'd8' + ] + }, + 'e1', + { + name: 'group_carbonize_2nd', + header: { text: '탄화 후 처리(2차)' }, + items: [ + 'e2', + 'e3', + 'e4', + 'e5' + ] + }, + 'f1', + 'f2' + ] + }, + { + name: 'group_external_treatment', + header: { text: '외부위탁 처리량(톤/년)' }, + items: [ + 'DSP_CONSIGNMENT', + 'g1', + 'g2', + 'g3', + 'g4', + 'g5', + 'g6', + 'g7' + ] + }, + 'DSP_WIDE', + 'RMK' + ], + + rowStartNum: 3, + fixedColumns: 2, + tabKey: 'slurgeProcessingFacStatusMng', + tabLabel: '찌꺼기(슬러지)처리시설현황' +}; \ No newline at end of file