[feat] 하수 및 분뇨 찌꺼기(슬러지) 처리 tab4개 추가

This commit is contained in:
yangsein
2025-12-29 10:52:43 +09:00
parent 8006a9ef09
commit b59ab18fa6
2 changed files with 304 additions and 0 deletions
@@ -0,0 +1,49 @@
import SearchForm from "@/components/module/SearchForm";
import TabDataGrid from "@/components/module/TabDataGrid";
import SaveButton from "@/components/button/SaveButton";
import ApproveButton from "@/components/button/ApproveButton";
import ReviewOpinionButton from "@/components/button/ReviewOpinionButton";
import ReturnButton from "@/components/button/ReturnButton";
import { SewageExcretaSlurgeInfoList } from "@/components/util/column/SewageExcretaSlurgeColumnRvw";
const SewageExcretaSlurgeRvw = () => {
const approveFunc = () => {
console.log('approveFunc');
// 승인 로직
};
const saveFunc = () => {
console.log('submit');
// 저장 로직
};
const reviewOpinionFunc = () => {
console.log('reviewOpinionFunc');
// 검토의견 작성
};
const returnFunc = () => {
console.log('returnFunc');
// 반려
};
return (
<>
<SearchForm userMenual={true} fctName={true} />
<div className="flex justify-end items-center gap-[0.6rem] m-[0.6rem]">
<ReviewOpinionButton reviewOpinionFunc={reviewOpinionFunc} />
<ApproveButton approveFunc={approveFunc} />
<ReturnButton returnFunc={returnFunc} />
<SaveButton saveFunc={saveFunc} />
</div>
<TabDataGrid columnInfo={SewageExcretaSlurgeInfoList} isExcelImport={false}/>
</>
);
};
export default SewageExcretaSlurgeRvw;
@@ -0,0 +1,255 @@
export const SewageExcretaSlurgeInfoList = [
{
tabKey: 'a',
tabLabel: '찌꺼기 처리시설 현황',
rowStartNum: 4,
fixedColumns: 2,
columns: [
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'BSC_FCT_NM', fieldName: 'BSC_FCT_NM', header: { text: '하수\n처리장명' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
{ name: 'TOT_AMNT', fieldName: 'TOT_AMNT', header: { text: '합계' } },
{ name: 'P_AMNT', fieldName: 'P_AMNT', header: { text: '자체' } },
{ name: 'O_AMNT', fieldName: 'O_AMNT', header: { text: '외부유입량' } },
{ name: 'OUT_FCT_NM', fieldName: 'OUT_FCT_NM', header: { text: '이송처리장' } },
{ name: 'OUT_AMNT', fieldName: 'OUT_AMNT', header: { text: '이송처리량\n(㎥/년)' } },
{ name: 'DSP_MOIRAT', fieldName: 'DSP_MOIRAT', header: { text: '함수율\n(%,\n탈수기준)' } },
{ name: 'DSP_SM', fieldName: 'DSP_SM', header: { text: '찌꺼기\n처리량\n합계(톤/년)' } },
{ name: 'I_1CH_SM', fieldName: 'I_1CH_SM', header: { text: '자체찌꺼기\n처리량소계' } },
{ name: 'I_1CH_REC', fieldName: 'I_1CH_REC', header: { text: '매립' } },
{ name: 'I_1CH_INC', fieldName: 'I_1CH_INC', header: { text: '소각' } },
{ name: 'I_1CH_INC_2CH_SM', fieldName: 'I_1CH_INC_2CH_SM', header: { text: '소계' } },
{ name: 'I_1CH_INC_2CH_REC', fieldName: 'I_1CH_INC_2CH_REC', header: { text: '매립' } },
{ name: 'I_1CH_INC_2CH_RAW', fieldName: 'I_1CH_INC_2CH_RAW', header: { text: '제품원료' } },
{ name: 'I_1CH_INC_2CH_COV', fieldName: 'I_1CH_INC_2CH_COV', header: { text: '복토재' } },
{ name: 'I_1CH_INC_2CH_FCT', fieldName: 'I_1CH_INC_2CH_FCT', header: { text: '시설(업체명)' } },
{ name: 'I_1CH_SOL', fieldName: 'I_1CH_SOL', header: { text: '고화' } },
{ name: 'I_1CH_SOL_2CH_SM', fieldName: 'I_1CH_SOL_2CH_SM', header: { text: '소계' } },
{ name: 'I_1CH_SOL_2CH_REC', fieldName: 'I_1CH_SOL_2CH_REC', header: { text: '매립' } },
{ name: 'I_1CH_SOL_2CH_COV', fieldName: 'I_1CH_SOL_2CH_COV', header: { text: '복토재' } },
{ name: 'I_1CH_SOL_2CH_FCT', fieldName: 'I_1CH_SOL_2CH_FCT', header: { text: '시설(업체명)' } },
{ name: 'I_1CH_DRY', fieldName: 'I_1CH_DRY', header: { text: '건조' } },
{ name: 'I_1CH_DRY_2CH_SM', fieldName: 'I_1CH_DRY_2CH_SM', header: { text: '소계' } },
{ name: 'I_1CH_DRY_2CH_REC', fieldName: 'I_1CH_DRY_2CH_REC', header: { text: '매립' } },
{ name: 'I_1CH_DRY_2CH_INC', fieldName: 'I_1CH_DRY_2CH_INC', header: { text: '소각' } },
{ name: 'I_1CH_DRY_2CH_FUE', fieldName: 'I_1CH_DRY_2CH_FUE', header: { text: '연료' } },
{ name: 'I_1CH_DRY_2CH_RAW', fieldName: 'I_1CH_DRY_2CH_RAW', header: { text: '제품원료' } },
{ name: 'I_1CH_DRY_2CH_COV', fieldName: 'I_1CH_DRY_2CH_COV', header: { text: '복토재' } },
{ name: 'I_1CH_DRY_2CH_COM', fieldName: 'I_1CH_DRY_2CH_COM', header: { text: '퇴비화' } },
{ name: 'I_1CH_DRY_2CH_FCT', fieldName: 'I_1CH_DRY_2CH_FCT', header: { text: '시설(업체명)' } },
{ name: 'I_1CH_CAR', fieldName: 'I_1CH_CAR', header: { text: '탄화' } },
{ name: 'I_1CH_CAR_2CH_SM', fieldName: 'I_1CH_CAR_2CH_SM', header: { text: '소계' } },
{ name: 'I_1CH_CAR_2CH_INC', fieldName: 'I_1CH_CAR_2CH_INC', header: { text: '소각' } },
{ name: 'I_1CH_CAR_2CH_FUE', fieldName: 'I_1CH_CAR_2CH_FUE', header: { text: '연료' } },
{ name: 'I_1CH_CAR_2CH_FCT', fieldName: 'I_1CH_CAR_2CH_FCT', header: { text: '시설(업체명)' } },
{ name: 'I_1CH_COM', fieldName: 'I_1CH_COM', header: { text: '퇴비화' } },
{ name: 'I_1CH_COM_FCT', fieldName: 'I_1CH_COM_FCT', header: { text: '시설(업체명)' } },
{ name: 'O_CON_SM', fieldName: 'O_CON_SM', header: { text: '소계' } },
{ name: 'O_CON_REC', fieldName: 'O_CON_REC', header: { text: '매립' } },
{ name: 'O_CON_INC', fieldName: 'O_CON_INC', header: { text: '소각' } },
{ name: 'O_CON_FUE1', fieldName: 'O_CON_FUE1', header: { text: '연료' } },
{ name: 'O_CON_RAW', fieldName: 'O_CON_RAW', header: { text: '제품원료' } },
{ name: 'O_CON_COV', fieldName: 'O_CON_COV', header: { text: '복토재' } },
{ name: 'O_CON_COM', fieldName: 'O_CON_COM', header: { text: '퇴비화' } },
{ name: 'O_CON_FCT_NM', fieldName: 'O_CON_FCT_NM', header: { text: '시설(업체명)' } },
{ name: 'OM_1CH_SM', fieldName: 'OM_1CH_SM', header: { text: '수도권광역\n위탁처리량\n(톤/년)' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'BSC_FCT_NM', 'YR_GBN',
{
name: 'genAmntGroup',
header: { text: '찌꺼기발생량(톤/년,탈수기준)' },
items: ['TOT_AMNT', 'P_AMNT', 'O_AMNT']
},
'OUT_FCT_NM', 'OUT_AMNT', 'DSP_MOIRAT', 'DSP_SM',
{
name: 'internalProcessGroup',
header: { text: '자체 찌꺼기 처리량(톤/년)' },
items: [
'I_1CH_SM', 'I_1CH_REC', 'I_1CH_INC',
{ name: 'inc2ndGroup', header: { text: '소각 후 처리(2차)' }, items: ['I_1CH_INC_2CH_SM', 'I_1CH_INC_2CH_REC', 'I_1CH_INC_2CH_RAW', 'I_1CH_INC_2CH_COV', 'I_1CH_INC_2CH_FCT'] },
'I_1CH_SOL',
{ name: 'sol2ndGroup', header: { text: '고화 후 처리(2차)' }, items: ['I_1CH_SOL_2CH_SM', 'I_1CH_SOL_2CH_REC', 'I_1CH_SOL_2CH_COV', 'I_1CH_SOL_2CH_FCT'] },
'I_1CH_DRY',
{ name: 'dry2ndGroup', header: { text: '건조 후 처리(2차)' }, items: ['I_1CH_DRY_2CH_SM', 'I_1CH_DRY_2CH_REC', 'I_1CH_DRY_2CH_INC', 'I_1CH_DRY_2CH_FUE', 'I_1CH_DRY_2CH_RAW', 'I_1CH_DRY_2CH_COV', 'I_1CH_DRY_2CH_COM', 'I_1CH_DRY_2CH_FCT'] },
'I_1CH_CAR',
{ name: 'car2ndGroup', header: { text: '탄화 후 처리(2차)' }, items: ['I_1CH_CAR_2CH_SM', 'I_1CH_CAR_2CH_INC', 'I_1CH_CAR_2CH_FUE', 'I_1CH_CAR_2CH_FCT'] },
{
name: 'compostGroup',
header: { text: '퇴비화' },
items: ['I_1CH_COM_FCT'] // 중첩 없이 바로 컬럼 name을 넣어 2단으로 완성
}
]
},
{
name: 'externalProcessGroup',
header: { text: '외부(민간)위탁 처리량(톤/년)' },
items: ['O_CON_SM', 'O_CON_REC', 'O_CON_INC', 'O_CON_FUE1', 'O_CON_RAW', 'O_CON_COV', 'O_CON_COM', 'O_CON_FCT_NM']
},
'OM_1CH_SM', 'RMK'
]
},
{
tabKey: 'b',
tabLabel: '소화조 운영현황',
rowStartNum: 3, // 3단 헤더 구조 (소화조 운영현황 > 이용현황 > 항목)
columns: [
/* 1. 기본 시설 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'BSC_FCT_NM', fieldName: 'BSC_FCT_NM', header: { text: '하수\n처리장명' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
/* 2. 소화조 기본 운영 현황 */
{ name: 'DGSTR_FNNC', fieldName: 'DGSTR_FNNC', header: { text: '소화조 유/무\n(Y/N)선택' } },
{ name: 'DGSTR_CPC', fieldName: 'DGSTR_CPC', header: { text: '설계\n용량\n(㎥)' } },
{ name: 'DGSTR_OPR_CPC', fieldName: 'DGSTR_OPR_CPC', header: { text: '실제운전\n용량\n(㎥)' } },
{ name: 'DGSTR_IN', fieldName: 'DGSTR_IN', header: { text: '투입량\n(㎥/일)' } },
{ name: 'DGSTR_TS', fieldName: 'DGSTR_TS', header: { text: '투입 TS 농도\n(%)' } },
{ name: 'DGSTR_YRSTP_RN_DYN', fieldName: 'DGSTR_YRSTP_RN_DYN', header: { text: '가동일수\n(연간)' } },
{ name: 'DGSTR_OCCUR_GAS', fieldName: 'DGSTR_OCCUR_GAS', header: { text: '발생가스량\n(㎥/일)' } },
/* 3. 소화가스 이용현황 상세 (단위: ㎥/일) */
{ name: 'DGSTR_SM', fieldName: 'DGSTR_SM', header: { text: '계' } },
{ name: 'DGSTR_SLE', fieldName: 'DGSTR_SLE', header: { text: '판매' } },
{ name: 'DGSTR_ELTGNR', fieldName: 'DGSTR_ELTGNR', header: { text: '발전' } },
{ name: 'DGSTR_ONSLF', fieldName: 'DGSTR_ONSLF', header: { text: '자체활용' } },
{ name: 'DGSTR_ETC', fieldName: 'DGSTR_ETC', header: { text: '기타(CNG등)' } },
/* 4. 잉여 가스 및 비고 */
{ name: 'DGSTR_GAS', fieldName: 'DGSTR_GAS', header: { text: '잉여가스량\n(㎥/일)' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'BSC_FCT_NM',
'YR_GBN',
{
name: 'digesterMainGroup',
header: { text: '소화조 운영현황' },
items: [
'DGSTR_FNNC',
'DGSTR_CPC',
'DGSTR_OPR_CPC',
'DGSTR_IN',
'DGSTR_TS',
'DGSTR_YRSTP_RN_DYN',
'DGSTR_OCCUR_GAS',
{
name: 'gasUsageGroup',
header: { text: '소화가스 이용현황(㎥/일)' },
items: [
'DGSTR_SM',
'DGSTR_SLE',
'DGSTR_ELTGNR',
'DGSTR_ONSLF',
'DGSTR_ETC'
]
},
'DGSTR_GAS'
]
},
'RMK'
]
},
{
tabKey: 'c',
tabLabel: '하수찌꺼기 처리시설 운영현황',
rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2")
columns: [
/* 1. 기본 시설 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'SLG_FCT_NM', fieldName: 'SLG_FCT_NM', header: { text: '찌꺼기처리시설명' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
/* 2. 처리시설 운영현황 상세 */
{ name: 'TRT_METHOD', fieldName: 'TRT_METHOD', header: { text: '처리방식' } },
{ name: 'SLG_FCT_CPC', fieldName: 'SLG_FCT_CPC', header: { text: '시설용량\n(톤/일)' } },
{ name: 'OPR_CPC', fieldName: 'OPR_CPC', header: { text: '연간처리량\n(톤/년)' } },
{ name: 'ODY_RN_TIME', fieldName: 'ODY_RN_TIME', header: { text: '일평균\n가동시간\n(1~24)' } },
{ name: 'YRSTP_RN_DYN', fieldName: 'YRSTP_RN_DYN', header: { text: '연중 가동일\n(1~330)' } },
{ name: 'OPR_RT', fieldName: 'OPR_RT', header: { text: '가동율' } },
/* 3. 비고 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'SLG_FCT_NM',
'YR_GBN',
{
name: 'sludgeFctOprGroup',
header: { text: '처리시설 운영현황' },
items: [
'TRT_METHOD',
'SLG_FCT_CPC',
'OPR_CPC',
'ODY_RN_TIME',
'YRSTP_RN_DYN',
'OPR_RT'
]
},
'RMK'
]
},
{
tabKey: 'd',
tabLabel: '분뇨찌꺼기 처리현황',
rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2")
columns: [
/* 1. 기본 시설 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'ECSCS_NM', fieldName: 'ECSCS_NM', header: { text: '분 뇨\n처리장명' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
/* 2. 발생량 지표 */
{ name: 'OCTY', fieldName: 'OCTY', header: { text: '발생량\n(A)=(B)+(C)\n(㎥/년)' } },
/* 3. 처분량 상세 (단위: ㎥/년) */
{ name: 'PROCESS_CPCTY_SM', fieldName: 'PROCESS_CPCTY_SM', header: { text: '계(B)' } },
{ name: 'RUSE', fieldName: 'RUSE', header: { text: '재활용' } },
{ name: 'LAND_RCLM', fieldName: 'LAND_RCLM', header: { text: '육상매립' } },
{ name: 'INCNR', fieldName: 'INCNR', header: { text: '소각' } },
{ name: 'OCEAN_DPSL', fieldName: 'OCEAN_DPSL', header: { text: '해양투기' } },
{ name: 'FUEL', fieldName: 'FUEL', header: { text: '연료화' } },
{ name: 'ETC', fieldName: 'ETC', header: { text: '기타' } },
/* 4. 미처분량 및 연계 정보 */
{ name: 'CYFD_CPCTY', fieldName: 'CYFD_CPCTY', header: { text: '미처분량\n(이월량)\n(C)\n(㎥/년)' } },
{ name: 'OUT_BSC_FCT_NM', fieldName: 'OUT_BSC_FCT_NM', header: { text: '타시설\n연계여부' } },
/* 5. 비고 및 의견 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
{ name: 'CHCKER_OPINION', fieldName: 'CHCKER_OPINION', header: { text: '검토자의견' } },
{ name: 'WRTER_OPINION', fieldName: 'WRTER_OPINION', header: { text: '사용자의견' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'ECSCS_NM',
'YR_GBN',
'OCTY',
{
name: 'disposalAmntGroup',
header: { text: '처 분 량(㎥/년)' },
items: [
'PROCESS_CPCTY_SM',
'RUSE',
'LAND_RCLM',
'INCNR',
'OCEAN_DPSL',
'FUEL',
'ETC'
]
},
'CYFD_CPCTY',
'OUT_BSC_FCT_NM',
'RMK'
]
}
];