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

- tab 1. 찌꺼기(슬러지)처리 시설현황 columns, columnLayout 완성 (SlurgeProcessingFacStatusInpColumn.ts)
- tab 1 컬럼에서 DB 테이블과 mapping되지 않는 컬렴들은 임의로 생성
- tab 2. 소화조 운영현황 columns, columnLayout 완성 (DigestorOperatingStatusInpColumn.ts)
- tab 3. 하수찌꺼기 처리시설 운영현황 columns, columnLayout 완성 (SewageSlurgeProcessingFacStatusInpColumn.ts)
- tab 4. 분뇨찌꺼기(슬러지) 처리현황 columns, columnLayout 완성 (ExcretaSlurgeProcessingStatusInpColumn.ts)
- 하수 및 분뇨찌꺼기(슬러지)처리 컴포넌트 완성
This commit is contained in:
2026-01-09 14:42:03 +09:00
parent ece49f0ae2
commit eae2c15aaf
8 changed files with 252 additions and 21 deletions
@@ -6,10 +6,10 @@ import SaveButton from "@/components/button/SaveButton";
import SubmitExceptionButton from "@/components/button/SubmitExceptionButton";
import LastYearDataButton from "@/components/button/LastYearDataButton";
import { SlurgeProcessingFacStatusMngColumn } from "@/components/util/column/input/sewageExcretaSlurge/SlurgeProcessingFacStatusMngColumn";
import { DigestorOperatingStatusMngColumn } from "@/components/util/column/input/sewageExcretaSlurge/DigestorOperatingStatusMngColumn";
import { SewageSlurgeProcessingFacStatusMngColumn } from "@/components/util/column/input/sewageExcretaSlurge/SewageSlurgeProcessingFacStatusMngColumn";
import { ExcretaSlurgeProcessingStatusMngColumn } from "@/components/util/column/input/sewageExcretaSlurge/ExcretaSlurgeProcessingStatusMngColumn";
import { SlurgeProcessingFacStatusInpColumn } from "@/components/util/column/input/sewageExcretaSlurge/SlurgeProcessingFacStatusInpColumn";
import { DigestorOperatingStatusInpColumn } from "@/components/util/column/input/sewageExcretaSlurge/DigestorOperatingStatusInpColumn";
import { SewageSlurgeProcessingFacStatusInpColumn } from "@/components/util/column/input/sewageExcretaSlurge/SewageSlurgeProcessingFacStatusInpColumn";
import { ExcretaSlurgeProcessingStatusInpColumn } from "@/components/util/column/input/sewageExcretaSlurge/ExcretaSlurgeProcessingStatusInpColumn";
// 하수도 통계 관리 > 11. 하수 및 분뇨찌꺼기(슬러지)처리
@@ -17,8 +17,11 @@ const SewageExcretaSlurgeInp = () => {
const [rowDataMap, setRowDataMap] = useState<Map<string, Record<string, string | number>[]>>(new Map());
// tab list
const SewageExcretaSlurgeMngList = [
SlurgeProcessingFacStatusMngColumn
const SewageExcretaSlurgeInpTabList = [
SlurgeProcessingFacStatusInpColumn,
DigestorOperatingStatusInpColumn,
SewageSlurgeProcessingFacStatusInpColumn,
ExcretaSlurgeProcessingStatusInpColumn
];
const submitExceptionFunc = () => {
@@ -51,7 +54,7 @@ const SewageExcretaSlurgeInp = () => {
<SaveButton saveFunc={saveFunc} />
</div>
<TabDataGrid columnInfo={SewageExcretaSlurgeMngList} rowDataMap={rowDataMap} setRowDataMap={setRowDataMap} />
<TabDataGrid columnInfo={SewageExcretaSlurgeInpTabList} rowDataMap={rowDataMap} setRowDataMap={setRowDataMap} />
</>
);
};
@@ -0,0 +1,90 @@
import { footerDecimal1 } from "@/components/util/grid/footerSummary";
// 하수도 통계 관리 > 11. 하수 및 분뇨찌꺼기(슬러지)처리 > tab 2. 소화조 운영현황
export const DigestorOperatingStatusInpColumn = {
columns: [
// 행정구역
{ name: 'SIDO_CD', fieldName: '시도', header: { text: '시도' }, editable: false },
{ name: 'ADST_CD', fieldName: '시군구', header: { text: '시군구' }, editable: false },
// 하수처리장명
{ name: 'BSC_FCT_NM', fieldName: '하수처리장명', header: { text: '하수처리장명' }, editable: false, footer: { text: '합계' } },
// 소화조 운영현황
{ name: 'DGSTR_FNNC', fieldName: '소화조 유/무(Y/N)선택', header: { text: '소화조 유/무(Y/N)선택' } },
{ name: 'DGSTR_CPC', fieldName: '설계용량(m³)', header: { text: '설계용량(m³)' }, footer: footerDecimal1 },
{ name: 'DGSTR_OPR_CPC', fieldName: '실제운전용량(m³)', header: { text: '실제운전용량(m³)' }, footer: footerDecimal1 },
{ name: 'DGSTR_IN', fieldName: '투입량(m³/일)', header: { text: '투입량(m³/일)' }, footer: footerDecimal1 },
{ name: 'DGSTR_TS', fieldName: '투입 TS 농도(%)', header: { text: '투입 TS 농도(%)' }, footer: footerDecimal1 },
{ name: 'DGSTR_YRSTP_RN_DYN', fieldName: '가동일수(연간)', header: { text: '가동일수(연간)' }, footer: footerDecimal1 },
{ name: 'DGSTR_OCCUR_GAS', fieldName: '발생가스량(m³/일)', header: { text: '발생가스량(m³/일)' }, footer: footerDecimal1 },
// 소화조 운영현황 > 소화가스 이용현황(m³/일)
{ name: 'DGSTR_SM', fieldName: '계', header: { text: '계' }, footer: footerDecimal1, editable: false },
{ name: 'DGSTR_SLE', fieldName: '판매', header: { text: '판매' }, footer: footerDecimal1 },
{ name: 'DGSTR_ELTGNR', fieldName: '발전', header: { text: '발전' }, footer: footerDecimal1 },
{ name: 'DGSTR_ONSLF', fieldName: '자체활용', header: { text: '자체활용' }, footer: footerDecimal1 },
{ name: 'DGSTR_ETC', fieldName: '기타(CNG등)', header: { text: '기타(CNG등)' }, footer: footerDecimal1 },
// 소화조 운영현황 > 잉여가스량
{ name: 'DGSTR_GAS', fieldName: '잉여가스량(m³/일)', header: { text: '잉여가스량(m³/일)' }, footer: footerDecimal1 },
// 비고
{ name: 'DGSTR_RMK', fieldName: '비고', header: { text: '비고' } },
// Hidden: Check fields for change detection
{ name: 'CHK_DGSTR_FNNC', fieldName: 'CHK_DGSTR_FNNC', header: { text: 'CHK_DGSTR_FNNC' }, visible: false },
{ name: 'CHK_DGSTR_IN', fieldName: 'CHK_DGSTR_IN', header: { text: 'CHK_DGSTR_IN' }, visible: false },
{ name: 'CHK_DGSTR_TS', fieldName: 'CHK_DGSTR_TS', header: { text: 'CHK_DGSTR_TS' }, visible: false },
{ name: 'CHK_DGSTR_YRSTP_RN_DYN', fieldName: 'CHK_DGSTR_YRSTP_RN_DYN', header: { text: 'CHK_DGSTR_YRSTP_RN_DYN' }, visible: false },
{ name: 'CHK_DGSTR_OCCUR_GAS', fieldName: 'CHK_DGSTR_OCCUR_GAS', header: { text: 'CHK_DGSTR_OCCUR_GAS' }, visible: false },
{ name: 'CHK_DGSTR_CPC', fieldName: 'CHK_DGSTR_CPC', header: { text: 'CHK_DGSTR_CPC' }, visible: false },
{ name: 'CHK_DGSTR_OPR_CPC', fieldName: 'CHK_DGSTR_OPR_CPC', header: { text: 'CHK_DGSTR_OPR_CPC' }, visible: false },
{ name: 'CHK_DGSTR_SM', fieldName: 'CHK_DGSTR_SM', header: { text: 'CHK_DGSTR_SM' }, visible: false },
{ name: 'CHK_DGSTR_SLE', fieldName: 'CHK_DGSTR_SLE', header: { text: 'CHK_DGSTR_SLE' }, visible: false },
{ name: 'CHK_DGSTR_ELTGNR', fieldName: 'CHK_DGSTR_ELTGNR', header: { text: 'CHK_DGSTR_ELTGNR' }, visible: false },
{ name: 'CHK_DGSTR_ONSLF', fieldName: 'CHK_DGSTR_ONSLF', header: { text: 'CHK_DGSTR_ONSLF' }, visible: false },
{ name: 'CHK_DGSTR_ETC', fieldName: 'CHK_DGSTR_ETC', header: { text: 'CHK_DGSTR_ETC' }, visible: false },
{ name: 'CHK_DGSTR_GAS', fieldName: 'CHK_DGSTR_GAS', header: { text: 'CHK_DGSTR_GAS' }, visible: false },
],
columnLayout: [
{
name: 'group_admin',
header: { text: '행정구역' },
items: ['SIDO_CD', 'ADST_CD']
},
'BSC_FCT_NM',
{
name: 'group_digestor_operating',
header: { text: '소화조 운영현황' },
items: [
'DGSTR_FNNC',
'DGSTR_CPC',
'DGSTR_OPR_CPC',
'DGSTR_IN',
'DGSTR_TS',
'DGSTR_YRSTP_RN_DYN',
'DGSTR_OCCUR_GAS',
{
name: 'group_gas_usage',
header: { text: '소화가스 이용현황(m³/일)' },
items: [
'DGSTR_SM',
'DGSTR_SLE',
'DGSTR_ELTGNR',
'DGSTR_ONSLF',
'DGSTR_ETC'
]
},
'DGSTR_GAS'
]
},
'DGSTR_RMK'
],
rowStartNum: 3,
fixedColumns: 0,
tabKey: 'digestorOperatingStatusInp',
tabLabel: '소화조 운영현황'
};
@@ -1,4 +0,0 @@
import { footerDecimal2 } from "@/components/util/grid/footerSummary";
// 하수도 통계 관리 > 11.하수 및 분뇨찌꺼기(슬러지) 처리 > tab 2. 소화조 운영현황
export const DigestorOperatingStatusMngColumn = {};
@@ -0,0 +1,82 @@
import { footerDecimal1 } from "@/components/util/grid/footerSummary";
// 하수도 통계 관리 > 11.하수 및 분뇨찌꺼기(슬러지) 처리 > tab 4. 분뇨찌꺼기(슬러지)처리 현황
export const ExcretaSlurgeProcessingStatusInpColumn = {
columns: [
// 행정구역
{ name: 'SIDO_CD', fieldName: '시도', header: { text: '시도' }, editable: false },
{ name: 'ADST_CD', fieldName: '시군구', header: { text: '시군구' }, editable: false, footer: { text: '합계' } },
// 분뇨처리장명
{ name: 'ECSCS_NM', fieldName: '분 뇨 처리장명', header: { text: '분 뇨 처리장명' }, editable: false },
// 발생량
{ name: 'OCTY', fieldName: '발생량 (A)=(B)+(C)', header: { text: '발생량 (A)=(B)+(C)' }, editable: false, footer: footerDecimal1 },
// 처 분 량(톤/년)
{ name: 'PROCESS_CPCTY_SM', fieldName: '계(B)', header: { text: '계(B)' }, editable: false, footer: footerDecimal1 },
{ name: 'RUSE', fieldName: '재활용', header: { text: '재활용' }, footer: footerDecimal1 },
{ name: 'LAND_RCLM', fieldName: '육상매립', header: { text: '육상매립' }, footer: footerDecimal1 },
{ name: 'INCNR', fieldName: '소각', header: { text: '소각' }, footer: footerDecimal1 },
{ name: 'OCEAN_DPSL', fieldName: '해양투기', header: { text: '해양투기' }, footer: footerDecimal1 },
{ name: 'FUEL', fieldName: '연료화', header: { text: '연료화' }, footer: footerDecimal1 },
{ name: 'ETC', fieldName: '기타', header: { text: '기타' }, footer: footerDecimal1 },
// 미처분량(이월량)(C)
{ name: 'CYFD_CPCTY', fieldName: '미처분량(이월량)(C)', header: { text: '미처분량(이월량)(C)' }, footer: footerDecimal1 },
// 타시설연계여부
{ name: 'OUT_BSC_FCT_NM', fieldName: '타시설연계여부', header: { text: '타시설연계여부' } },
// 비고
{ name: 'RMK', fieldName: '비고', header: { text: '비고' } },
// Hidden: 의견
{ name: 'WRTER_OPINION', fieldName: '사용자의견', header: { text: '사용자의견' }, visible: false },
{ name: 'CHCKER_OPINION', fieldName: '검토자의견', header: { text: '검토자의견' }, visible: false },
// Hidden: Check fields for change detection
{ name: 'CHK_ECSCS_NM', fieldName: 'CHK_ECSCS_NM', header: { text: 'CHK_ECSCS_NM' }, visible: false },
{ name: 'CHK_OCTY', fieldName: 'CHK_OCTY', header: { text: 'CHK_OCTY' }, visible: false },
{ name: 'CHK_PROCESS_CPCTY_SM', fieldName: 'CHK_PROCESS_CPCTY_SM', header: { text: 'CHK_PROCESS_CPCTY_SM' }, visible: false },
{ name: 'CHK_RUSE', fieldName: 'CHK_RUSE', header: { text: 'CHK_RUSE' }, visible: false },
{ name: 'CHK_LAND_RCLM', fieldName: 'CHK_LAND_RCLM', header: { text: 'CHK_LAND_RCLM' }, visible: false },
{ name: 'CHK_INCNR', fieldName: 'CHK_INCNR', header: { text: 'CHK_INCNR' }, visible: false },
{ name: 'CHK_OCEAN_DPSL', fieldName: 'CHK_OCEAN_DPSL', header: { text: 'CHK_OCEAN_DPSL' }, visible: false },
{ name: 'CHK_FUEL', fieldName: 'CHK_FUEL', header: { text: 'CHK_FUEL' }, visible: false },
{ name: 'CHK_ETC', fieldName: 'CHK_ETC', header: { text: 'CHK_ETC' }, visible: false },
{ name: 'CHK_CYFD_CPCTY', fieldName: 'CHK_CYFD_CPCTY', header: { text: 'CHK_CYFD_CPCTY' }, visible: false },
{ name: 'CHK_OUT_BSC_FCT_NM', fieldName: 'CHK_OUT_BSC_FCT_NM', header: { text: 'CHK_OUT_BSC_FCT_NM' }, visible: false },
],
columnLayout: [
{
name: 'group_admin',
header: { text: '행정구역' },
items: ['SIDO_CD', 'ADST_CD']
},
'ECSCS_NM',
'OCTY',
{
name: 'group_process_amount',
header: { text: '처 분 량(톤/년)' },
items: [
'PROCESS_CPCTY_SM',
'RUSE',
'LAND_RCLM',
'INCNR',
'OCEAN_DPSL',
'FUEL',
'ETC'
]
},
'CYFD_CPCTY',
'OUT_BSC_FCT_NM',
'RMK'
],
rowStartNum: 2,
fixedColumns: 2,
tabKey: 'excretaSlurgeProcessingStatusInp',
tabLabel: '분뇨찌꺼기(슬러지)처리현황'
};
@@ -1,4 +0,0 @@
import { footerDecimal2 } from "@/components/util/grid/footerSummary";
// 하수도 통계 관리 > 11.하수 및 분뇨찌꺼기(슬러지) 처리 > tab 4. 분뇨찌꺼기(슬러지)처리 현황
export const ExcretaSlurgeProcessingStatusMngColumn = {};
@@ -0,0 +1,68 @@
import { footerInt, footerDecimal1 } from "@/components/util/grid/footerSummary";
// 하수도 통계 관리 > 11.하수 및 분뇨찌꺼기(슬러지) 처리 > tab 3. 하수찌꺼기 처리시설 운영현황
export const SewageSlurgeProcessingFacStatusInpColumn = {
columns: [
// 행정구역
{ name: 'SIDO_CD', fieldName: '시도', header: { text: '시도' }, editable: false },
{ name: 'ADST_CD', fieldName: '시군구', header: { text: '시군구' }, footer: { text: '합계' } },
// 찌꺼기처리시설명
{ name: 'SLG_FCT_NM', fieldName: '찌꺼기처리시설명', header: { text: '찌꺼기처리시설명' } },
// 처리시설 운영현황
{ name: 'TRT_METHOD', fieldName: '처리방식', header: { text: '처리방식' } },
{ name: 'SLG_FCT_CPC', fieldName: '시설용량(톤/일)', header: { text: '시설용량(톤/일)' }, footer: footerDecimal1 },
{ name: 'OPR_CPC', fieldName: '연간처리량(톤/년)', header: { text: '연간처리량(톤/년)' }, footer: footerDecimal1 },
{ name: 'ODY_RN_TIME', fieldName: '일평균가동시간(1~24)', header: { text: '일평균가동시간(1~24)' }, footer: footerInt },
{ name: 'YRSTP_RN_DYN', fieldName: '연중 가동일(1~330)', header: { text: '연중 가동일(1~330)' }, footer: footerInt },
{ name: 'OPR_RT', fieldName: '가동율(%)', header: { text: '가동율(%)' }, footer: footerDecimal1, editable: false },
// 비고
{ name: 'SLG_FCT_RMK', fieldName: '비고', header: { text: '비고' } },
// Hidden: 기본 정보
{ name: 'STPN_SEQ', fieldName: 'STPN_SEQ', header: { text: 'STPN_SEQ' }, visible: false },
{ name: 'BSC_FCT_NM', fieldName: 'BSC_FCT_NM', header: { text: 'BSC_FCT_NM' }, visible: false },
{ name: 'YR', fieldName: 'YR', header: { text: 'YR' }, visible: false },
{ name: 'ODR', fieldName: 'ODR', header: { text: 'ODR' }, visible: false },
{ name: 'BSNM_CD', fieldName: 'BSNM_CD', header: { text: 'BSNM_CD' }, visible: false },
{ name: 'BSC_FCT_CD', fieldName: 'BSC_FCT_CD', header: { text: 'BSC_FCT_CD' }, visible: false },
// Hidden: Check fields for change detection
{ name: 'CHK_SLG_FCT_NM', fieldName: 'CHK_SLG_FCT_NM', header: { text: 'CHK_SLG_FCT_NM' }, visible: false },
{ name: 'CHK_TRT_METHOD', fieldName: 'CHK_TRT_METHOD', header: { text: 'CHK_TRT_METHOD' }, visible: false },
{ name: 'CHK_SLG_FCT_CPC', fieldName: 'CHK_SLG_FCT_CPC', header: { text: 'CHK_SLG_FCT_CPC' }, visible: false },
{ name: 'CHK_OPR_CPC', fieldName: 'CHK_OPR_CPC', header: { text: 'CHK_OPR_CPC' }, visible: false },
{ name: 'CHK_ODY_RN_TIME', fieldName: 'CHK_ODY_RN_TIME', header: { text: 'CHK_ODY_RN_TIME' }, visible: false },
{ name: 'CHK_YRSTP_RN_DYN', fieldName: 'CHK_YRSTP_RN_DYN', header: { text: 'CHK_YRSTP_RN_DYN' }, visible: false },
{ name: 'CHK_OPR_RT', fieldName: 'CHK_OPR_RT', header: { text: 'CHK_OPR_RT' }, visible: false },
],
columnLayout: [
{
name: 'group_admin',
header: { text: '행정구역' },
items: ['SIDO_CD', 'ADST_CD']
},
'SLG_FCT_NM',
{
name: 'group_processing_fac_operating',
header: { text: '처리시설 운영현황' },
items: [
'TRT_METHOD',
'SLG_FCT_CPC',
'OPR_CPC',
'ODY_RN_TIME',
'YRSTP_RN_DYN',
'OPR_RT'
]
},
'SLG_FCT_RMK'
],
rowStartNum: 2,
fixedColumns: 1,
tabKey: 'sewageSlurgeProcessingFacStatusInp',
tabLabel: '하수찌꺼기 처리시설 운영현황'
};
@@ -1,4 +0,0 @@
import { footerDecimal2 } from "@/components/util/grid/footerSummary";
// 하수도 통계 관리 > 11.하수 및 분뇨찌꺼기(슬러지) 처리 > tab 3. 하수찌꺼기 처리시설 운영현황
export const SewageSlurgeProcessingFacStatusMngColumn = {}
@@ -1,7 +1,7 @@
import { footerDecimal1 } from "@/components/util/grid/footerSummary";
// 하수도 통계 관리 > 11. 하수 및 분뇨찌꺼기(슬러지)처리 > tab 1: 찌꺼기(슬러지)처리시설현황
export const SlurgeProcessingFacStatusMngColumn = {
export const SlurgeProcessingFacStatusInpColumn = {
columns: [
// 행정구역
{ name: 'SIDO_CD', fieldName: '시도', header: { text: '시도' }, editable: false },
@@ -210,6 +210,6 @@ export const SlurgeProcessingFacStatusMngColumn = {
rowStartNum: 3,
fixedColumns: 2,
tabKey: 'slurgeProcessingFacStatusMng',
tabKey: 'slurgeProcessingFacStatusInp',
tabLabel: '찌꺼기(슬러지)처리시설현황'
};