feat: 11. 하수 및 분뇨찌꺼기(슬러지) 화면 구현 중

- 각 tab을 위한 columns, columnLayout 파일 생성
- tab 1. 찌꺼기(슬러지)처리 시설현황 구현 중
This commit is contained in:
2026-01-09 13:20:55 +09:00
parent 1c7be567f4
commit f61e952d28
5 changed files with 279 additions and 2 deletions
@@ -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<Map<string, Record<string, string | number>[]>>(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 (
<>
<SearchForm userMenual={true} />
<SearchForm userMenual={true} fctName={true}/>
<div className="flex justify-end items-center gap-[0.6rem] m-[0.6rem]">
<SubmitExceptionButton SubmitExceptionFunc={submitExceptionFunc} />
<LastYearDataButton getLastYearDataFunc={lastYearDataFunc} />
<SubmitButton submitFunc={submitFunc} />
<SaveButton saveFunc={saveFunc} />
</div>
<TabDataGrid columnInfo={SewageExcretaSlurgeMngList} rowDataMap={rowDataMap} setRowDataMap={setRowDataMap} />
</>
);
};
export default SewageExcretaSlurgeMng;
export default SewageExcretaSlurgeMng;
@@ -0,0 +1,4 @@
import { footerDecimal2 } from "@/components/util/grid/footerSummary";
// 하수도 통계 관리 > 11.하수 및 분뇨찌꺼기(슬러지) 처리 > tab 2. 소화조 운영현황
export const DigestorOperatingStatusMngColumn = {};
@@ -0,0 +1,4 @@
import { footerDecimal2 } from "@/components/util/grid/footerSummary";
// 하수도 통계 관리 > 11.하수 및 분뇨찌꺼기(슬러지) 처리 > tab 4. 분뇨찌꺼기(슬러지)처리 현황
export const ExcretaSlurgeProcessingStatusMngColumn = {};
@@ -0,0 +1,4 @@
import { footerDecimal2 } from "@/components/util/grid/footerSummary";
// 하수도 통계 관리 > 11.하수 및 분뇨찌꺼기(슬러지) 처리 > tab 3. 하수찌꺼기 처리시설 운영현황
export const SewageSlurgeProcessingFacStatusMngColumn = {}
@@ -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: '찌꺼기(슬러지)처리시설현황'
};