[feat] 06.공공 하수처리시설 단일 탭 column 분리

This commit is contained in:
2026-01-02 13:10:16 +09:00
parent 69820d8e4c
commit 28f841adc8
2 changed files with 149 additions and 174 deletions
@@ -1,183 +1,15 @@
import SearchForm from "@/components/module/SearchForm";
import DataGrid from "@/components/module/DataGrid";
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 TabDataGrid from "@/components/module/TabDataGrid";
import { PublicSewageFacilityInfoList } from "@/components/util/column/review/PublicSewageFacilityColumnRvw";
const PublicSewageFacilityRvw = () => {
const rawColumns = [
{ name: 'sido', fieldName: '시도', header: { text: '시도' } },
{ name: 'sgg', fieldName: '구군', header: { text: '구군' } },
{ name: '구분', fieldName: '구분', header: { text: '구분' } },
{ name: '소재지', fieldName: '소재지', header: { text: '소재지' } },
{ name: '시설명(500m3/일이상/미만)', fieldName: '시설명(500m3/일이상/미만)', header: { text: '시설명(500m3/일이상/미만)' } },
//시설용량
{ name: '시설용량(500m3/일이상/미만)', fieldName: '시설용량(500m3/일이상/미만)', header: { text: '시설용량(500m3/일이상/미만)' } },
{ name: '(시설용량)물리적', fieldName: '(시설용량)물리적', header: { text: '물리적' } },
{ name: '(시설용량)생물학적', fieldName: '(시설용량)생물학적', header: { text: '생물학적' } },
{ name: '(시설용량)고도', fieldName: '(시설용량)고도', header: { text: '고도' } },
//유입하수량
{ name: '유입하수량(500m3/일이상/미만)', fieldName: '유입하수량(500m3/일이상/미만)', header: { text: '유입하수량(500m3/일이상/미만)' } },
{ name: '(유입하수량)물리적', fieldName: '(유입하수량)물리적', header: { text: '물리적' } },
{ name: '(유입하수량)생물학적', fieldName: '(유입하수량)생물학적', header: { text: '생물학적' } },
{ name: '(유입하수량)고도', fieldName: '(유입하수량)고도', header: { text: '고도' } },
{ name: '오수펌프_총양수량(m3/min)', fieldName: '오수펌프_총양수량(m3/min)', header: { text: '총양수량(m3/min)' } },
{ name: '우수펌프_총양수량(m3/min)', fieldName: '우수펌프_총양수량(m3/min)', header: { text: '총양수량(m3/min)' } },
//방류량
{ name: '방류량(500m3/일이상/미만)', fieldName: '방류량(500m3/일이상/미만)', header: { text: '방류량(500m3/일이상/미만)' } },
{ name: '(방류량)물리적', fieldName: '(방류량)물리적', header: { text: '물리적' } },
{ name: '(방류량)생물학적', fieldName: '(방류량)생물학적', header: { text: '생물학적' } },
{ name: '(방류량)고도', fieldName: '(방류량)고도', header: { text: '고도' } },
{ name: '유입BOD', fieldName: '유입BOD', header: { text: '유입BOD' } },
{ name: '방류BOD', fieldName: '방류BOD', header: { text: '방류BOD' } },
{ name: '유입TOC', fieldName: '유입TOC', header: { text: '유입TOC' } },
{ name: '방류TOC', fieldName: '방류TOC', header: { text: '방류TOC' } },
{ name: '유입SS', fieldName: '유입SS', header: { text: '유입SS' } },
{ name: '방류SS', fieldName: '방류SS', header: { text: '방류SS' } },
{ name: '유입T-N', fieldName: '유입T-N', header: { text: '유입T-N' } },
{ name: '방류T-N', fieldName: '방류T-N', header: { text: '방류T-N' } },
{ name: '유입T-P', fieldName: '유입T-P', header: { text: '유입T-P' } },
{ name: '방류T-P', fieldName: '방류T-P', header: { text: '방류T-P' } },
{ name: '유입총대장균군수', fieldName: '유입총대장균군수', header: { text: '유입총대장균군수' } },
{ name: '방대총대장균군수', fieldName: '방대총대장균군수', header: { text: '방대총대장균군수' } },
{ name: '처리효율(%)', fieldName: '처리효율(%)', header: { text: '처리효율(%)' } },
{ name: '처리부하량(kgBOD/D)', fieldName: '처리부하량(kgBOD/D)', header: { text: '처리부하량(kgBOD/D)' } },
{ name: '처리방법', fieldName: '처리방법', header: { text: '처리방법' } },
{ name: '(연계처리량)분뇨', fieldName: '(연계처리량)분뇨', header: { text: '분뇨' } },
{ name: '(연계처리량)축산', fieldName: '(연계처리량)축산', header: { text: '축산' } },
{ name: '(연계처리량)침출수', fieldName: '(연계처리량)침출수', header: { text: '침출수' } },
{ name: '(연계처리량)기타', fieldName: '(연계처리량)기타', header: { text: '기타' } },
{ name: '전화번호', fieldName: '전화번호', header: { text: '전화번호' } },
{ name: '준공일', fieldName: '준공일', header: { text: '준공일' } },
{ name: '가동개시일', fieldName: '가동개시일', header: { text: '가동개시일' } },
{ name: '사업비(백만원)', fieldName: '사업비(백만원)', header: { text: '사업비(백만원)' } },
{ name: '방류수소독방법', fieldName: '방류수소독방법', header: { text: '방류수소독방법' } },
{ name: '수계', fieldName: '수계', header: { text: '수계' } },
{ name: '지류', fieldName: '지류', header: { text: '지류' } },
{ name: '세부단위구역', fieldName: '세부단위구역', header: { text: '세부단위구역' } },
{ name: '지역구분', fieldName: '지역구분', header: { text: '지역구분' } },
{ name: '명칭', fieldName: '명칭', header: { text: '명칭' } },
{ name: '목표수질(BOD)', fieldName: '목표수질(BOD)', header: { text: '목표수질(BOD)' } },
{ name: '에너지자립율(%)', fieldName: '에너지자립율(%)', header: { text: '에너지자립율(%)' } },
{ name: '에너지자체생산량(TOE)', fieldName: '에너지자체생산량(TOE)', header: { text: '에너지자체생산량(TOE)' } },
{ name: '계(TOE)', fieldName: '계(TOE)', header: { text: '계(TOE)' } },
{ name: '총전력사용량(KWh)', fieldName: '총전력사용량(KWh)', header: { text: '총전력사용량(KWh)' } },
{ name: '자체에너지사용량(TOE)', fieldName: '자체에너지사용량(TOE)', header: { text: '자체에너지사용량(TOE)' } },
{ name: '하수처리량당CO2배출량(KgCO2/m3)', fieldName: '하수처리량당CO2배출량(KgCO2/m3)', header: { text: '하수처리량당CO2배출량(KgCO2/m3)' } },
{ name: '운영주체(자체/공기업/민간대행)', fieldName: '운영주체(자체/공기업/민간대행)', header: { text: '운영주체(자체/공기업/민간대행)' } },
{ name: '위탁업체명', fieldName: '위탁업체명', header: { text: '위탁업체명' } },
{ name: '위탁비용(백만원/년)', fieldName: '위탁비용(백만원/년)', header: { text: '위탁비용(백만원/년)' } },
{ name: '위탁계약기간(yyyy-mm-dd~)', fieldName: '위탁계약기간(yyyy-mm-dd~)', header: { text: '위탁계약기간(yyyy-mm-dd~)' } },
{ name: '중심처리시설', fieldName: '중심처리시설', header: { text: '중심처리시설' } },
{ name: '직원총수(명)', fieldName: '직원총수(명)', header: { text: '직원총수(명)' } },
{ name: '안전사고건수(건,인/년)', fieldName: '안전사고건수(건,인/년)', header: { text: '안전사고건수(건,인/년)' } },
{ name: 'rmk', fieldName: '비고', header: { text: '비고' } },
];
const columns = rawColumns.map(col => ({
...col,
editable: false
}));
const columnLayout = [
{
name: 'groupA',
hideChildHeaders: false,
header: { text: '행정구역' },
items: ['sido', 'sgg'],
},
'시설명(500m3/일이상/미만)',
'구분',
'소재지',
'시설용량(500m3/일이상/미만)',
{
name: 'groupB',
hideChildHeaders: false,
header: { text: '(m3/일)' },
items: ['(시설용량)물리적', '(시설용량)생물학적', '(시설용량)고도'],
},
'유입하수량(500m3/일이상/미만)',
{
name: 'groupC',
hideChildHeaders: false,
header: { text: '(m3/일)' },
items: ['(유입하수량)물리적', '(유입하수량)생물학적', '(유입하수량)고도'],
},
'방류량(500m3/일이상/미만)',
{
name: 'groupD',
hideChildHeaders: false,
header: { text: '(m3/일)' },
items: ['(방류량)물리적', '(방류량)생물학적', '(방류량)고도'],
},
'유입BOD',
'방류BOD',
'유입TOC',
'방류TOC',
'유입SS',
'방류SS',
'유입T-N',
'방류T-N',
'유입T-P',
'방류T-P',
'유입총대장균군수',
'방대총대장균군수',
'처리효율(%)',
'처리부하량(kgBOD/D)',
'처리방법',
{
name: 'groupE',
hideChildHeaders: false,
header: { text: '연계처리량(m3/일)(500m3/일 이상/ 미만)' },
items: ['(연계처리량)분뇨', '(연계처리량)축산', '(연계처리량)침출수', '(연계처리량)기타'],
},
'전화번호',
'준공일',
'가동개시일',
'사업비(백만원)',
'방류수소독방법',
{
name: 'groupF',
hideChildHeaders: false,
header: { text: '방류수역' },
items: ['수계', '지류', '세부단위구역', '지역구분',
{
name: 'groupG',
hideChildHeaders: false,
header: { text: '중권역' },
items: ['명칭', '목표수질(BOD)'],
},
],
},
'에너지자립율(%)',
'에너지자체생산량(TOE)',
{
name: 'groupH',
hideChildHeaders: false,
header: { text: '연간 총 에너지 사용량(TOE)' },
items: ['계(TOE)', '총전력사용량(KWh)', '자체에너지사용량(TOE)'],
},
'하수처리량당CO2배출량(KgCO2/m3)',
'운영주체(자체/공기업/민간대행)',
{
name: 'groupI',
hideChildHeaders: false,
header: { text: '위탁현황' },
items: ['위탁업체명', '위탁비용(백만원/년)', '위탁계약기간(yyyy-mm-dd~)'],
},
'중심처리시설',
'직원총수(명)',
'안전사고건수(건,인/년)',
'rmk'
];
const approveFunc = () => {
console.log('approveFunc');
};
@@ -203,7 +35,7 @@ const PublicSewageFacilityRvw = () => {
<ReturnButton returnFunc={returnFunc} />
<SaveButton saveFunc={saveFunc} />
</div>
<DataGrid columnInfo={{ columns, columnLayout }} rowStartNum={2} isExcelImport={false} fixedColumns={3} />
<TabDataGrid columnInfo={PublicSewageFacilityInfoList} isExcelImport={false} />
</>
);
};
@@ -0,0 +1,143 @@
export const PublicSewageFacilityInfoList = [
{
tabKey: 'a',
tabLabel: '공공하수처리시설 현황',
rowStartNum: 3,
fixedColumns: 3,
columns: [
/* 1. 기본 정보 */
{ name: 'sido', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'sgg', fieldName: 'GUGUN', header: { text: '구군' } },
{ name: 'GBN', fieldName: 'GBN', header: { text: '구분' } },
{ name: 'ADDR', fieldName: 'ADDR', header: { text: '소재지' } },
{ name: 'FCT_NM_GROUP', fieldName: 'FCT_NM_GROUP', header: { text: '시설명(500m3/일이상/미만)' } },
/* 2. 시설용량 (m3/일) */
{ name: 'FCT_CPC_GROUP', fieldName: 'FCT_CPC_GROUP', header: { text: '시설용량(500m3/일이상/미만)' } },
{ name: 'FCT_CPC_PHY', fieldName: 'FCT_CPC_PHY', header: { text: '물리적' } },
{ name: 'FCT_CPC_BIO', fieldName: 'FCT_CPC_BIO', header: { text: '생물학적' } },
{ name: 'FCT_CPC_ADV', fieldName: 'FCT_CPC_ADV', header: { text: '고도' } },
/* 3. 유입하수량 (m3/일) */
{ name: 'IN_QTY_GROUP', fieldName: 'IN_QTY_GROUP', header: { text: '유입하수량(500m3/일이상/미만)' } },
{ name: 'IN_QTY_PHY', fieldName: 'IN_QTY_PHY', header: { text: '물리적' } },
{ name: 'IN_QTY_BIO', fieldName: 'IN_QTY_BIO', header: { text: '생물학적' } },
{ name: 'IN_QTY_ADV', fieldName: 'IN_QTY_ADV', header: { text: '고도' } },
/* 4. 방류량 (m3/일) */
{ name: 'OUT_QTY_GROUP', fieldName: 'OUT_QTY_GROUP', header: { text: '방류량(500m3/일이상/미만)' } },
{ name: 'OUT_QTY_PHY', fieldName: 'OUT_QTY_PHY', header: { text: '물리적' } },
{ name: 'OUT_QTY_BIO', fieldName: 'OUT_QTY_BIO', header: { text: '생물학적' } },
{ name: 'OUT_QTY_ADV', fieldName: 'OUT_QTY_ADV', header: { text: '고도' } },
/* 5. 수질 및 처리효율 */
{ name: 'IN_BOD', fieldName: 'IN_BOD', header: { text: '유입BOD' } },
{ name: 'OUT_BOD', fieldName: 'OUT_BOD', header: { text: '방류BOD' } },
{ name: 'IN_TOC', fieldName: 'IN_TOC', header: { text: '유입TOC' } },
{ name: 'OUT_TOC', fieldName: 'OUT_TOC', header: { text: '방류TOC' } },
{ name: 'IN_SS', fieldName: 'IN_SS', header: { text: '유입SS' } },
{ name: 'OUT_SS', fieldName: 'OUT_SS', header: { text: '방류SS' } },
{ name: 'IN_TN', fieldName: 'IN_TN', header: { text: '유입T-N' } },
{ name: 'OUT_TN', fieldName: 'OUT_TN', header: { text: '방류T-N' } },
{ name: 'IN_TP', fieldName: 'IN_TP', header: { text: '유입T-P' } },
{ name: 'OUT_TP', fieldName: 'OUT_TP', header: { text: '방류T-P' } },
{ name: 'IN_COLI', fieldName: 'IN_COLI', header: { text: '유입총대장균군수' } },
{ name: 'OUT_COLI', fieldName: 'OUT_COLI', header: { text: '방대총대장균군수' } },
{ name: 'TRT_EFF', fieldName: 'TRT_EFF', header: { text: '처리효율(%)' } },
{ name: 'TRT_LOD', fieldName: 'TRT_LOD', header: { text: '처리부하량(kgBOD/D)' } },
{ name: 'TRT_MTHD', fieldName: 'TRT_MTHD', header: { text: '처리방법' } },
/* 6. 연계처리량 */
{ name: 'LNK_EXC', fieldName: 'LNK_EXC', header: { text: '분뇨' } },
{ name: 'LNK_LVS', fieldName: 'LNK_LVS', header: { text: '축산' } },
{ name: 'LNK_LCH', fieldName: 'LNK_LCH', header: { text: '침출수' } },
{ name: 'LNK_ETC', fieldName: 'LNK_ETC', header: { text: '기타' } },
/* 7. 상세 시설 정보 */
{ name: 'TEL_NO', fieldName: 'TEL_NO', header: { text: '전화번호' } },
{ name: 'COMP_DT', fieldName: 'COMP_DT', header: { text: '준공일' } },
{ name: 'RN_DT', fieldName: 'RN_DT', header: { text: '가동개시일' } },
{ name: 'BSNS_CT', fieldName: 'BSNS_CT', header: { text: '사업비(백만원)' } },
{ name: 'DSCH_DSF_MTHD', fieldName: 'DSCH_DSF_MTHD', header: { text: '방류수소독방법' } },
/* 8. 방류수역 */
{ name: 'WTR_SYS', fieldName: 'WTR_SYS', header: { text: '수계' } },
{ name: 'STRM', fieldName: 'STRM', header: { text: '지류' } },
{ name: 'DET_UNIT_ZONE', fieldName: 'DET_UNIT_ZONE', header: { text: '세부단위구역' } },
{ name: 'RGN_GBN', fieldName: 'RGN_GBN', header: { text: '지역구분' } },
{ name: 'MID_ZONE_NM', fieldName: 'MID_ZONE_NM', header: { text: '명칭' } },
{ name: 'MID_ZONE_BOD', fieldName: 'MID_ZONE_BOD', header: { text: '목표수질(BOD)' } },
/* 9. 에너지 및 환경 */
{ name: 'ENG_SLF_RT', fieldName: 'ENG_SLF_RT', header: { text: '에너지자립율(%)' } },
{ name: 'ENG_SLF_QTY', fieldName: 'ENG_SLF_QTY', header: { text: '에너지자체생산량(TOE)' } },
{ name: 'ENG_TOT_SUM', fieldName: 'ENG_TOT_SUM', header: { text: '계(TOE)' } },
{ name: 'ENG_TOT_PWR', fieldName: 'ENG_TOT_PWR', header: { text: '총전력사용량(KWh)' } },
{ name: 'ENG_TOT_SLF', fieldName: 'ENG_TOT_SLF', header: { text: '자체에너지사용량(TOE)' } },
{ name: 'CO2_EMISS', fieldName: 'CO2_EMISS', header: { text: '하수처리량당CO2배출량(KgCO2/m3)' } },
/* 10. 운영 및 위탁 */
{ name: 'OPR_MBY', fieldName: 'OPR_MBY', header: { text: '운영주체' } },
{ name: 'ENTRPS_NM', fieldName: 'ENTRPS_NM', header: { text: '위탁업체명' } },
{ name: 'ENTRPS_CT', fieldName: 'ENTRPS_CT', header: { text: '위탁비용(백만원/년)' } },
{ name: 'ENTRPS_TERM', fieldName: 'ENTRPS_TERM', header: { text: '위탁계약기간' } },
{ name: 'CTR_TRT_FCT', fieldName: 'CTR_TRT_FCT', header: { text: '중심처리시설' } },
{ name: 'EMP_CNT', fieldName: 'EMP_CNT', header: { text: '직원총수(명)' } },
{ name: 'ACC_CNT', fieldName: 'ACC_CNT', header: { text: '안전사고건수' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'groupA', header: { text: '행정구역' }, items: ['sido', 'sgg'] },
'FCT_NM_GROUP', 'GBN', 'ADDR', 'FCT_CPC_GROUP',
{
name: 'groupB',
header: { text: '시설용량(㎥/일)' },
items: ['FCT_CPC_PHY', 'FCT_CPC_BIO', 'FCT_CPC_ADV'],
},
'IN_QTY_GROUP',
{
name: 'groupC',
header: { text: '유입하수량(㎥/일)' },
items: ['IN_QTY_PHY', 'IN_QTY_BIO', 'IN_QTY_ADV'],
},
'OUT_QTY_GROUP',
{
name: 'groupD',
header: { text: '방류량(㎥/일)' },
items: ['OUT_QTY_PHY', 'OUT_QTY_BIO', 'OUT_QTY_ADV'],
},
'IN_BOD', 'OUT_BOD', 'IN_TOC', 'OUT_TOC', 'IN_SS', 'OUT_SS', 'IN_TN', 'OUT_TN', 'IN_TP', 'OUT_TP', 'IN_COLI', 'OUT_COLI',
'TRT_EFF', 'TRT_LOD', 'TRT_MTHD',
{
name: 'groupE',
header: { text: '연계처리량(㎥/일)' },
items: ['LNK_EXC', 'LNK_LVS', 'LNK_LCH', 'LNK_ETC'],
},
'TEL_NO', 'COMP_DT', 'RN_DT', 'BSNS_CT', 'DSCH_DSF_MTHD',
{
name: 'groupF',
header: { text: '방류수역' },
items: ['WTR_SYS', 'STRM', 'DET_UNIT_ZONE', 'RGN_GBN',
{
name: 'groupG',
header: { text: '중권역' },
items: ['MID_ZONE_NM', 'MID_ZONE_BOD'],
},
],
},
'ENG_SLF_RT', 'ENG_SLF_QTY',
{
name: 'groupH',
header: { text: '연간 총 에너지 사용량(TOE)' },
items: ['ENG_TOT_SUM', 'ENG_TOT_PWR', 'ENG_TOT_SLF'],
},
'CO2_EMISS', 'OPR_MBY',
{
name: 'groupI',
header: { text: '위탁현황' },
items: ['ENTRPS_NM', 'ENTRPS_CT', 'ENTRPS_TERM'],
},
'CTR_TRT_FCT', 'EMP_CNT', 'ACC_CNT', 'RMK'
]
}
];