[feat]개인 하수처리시설 탭 3개 추가

This commit is contained in:
yangsein
2025-12-26 12:03:11 +09:00
parent deaf1b53ee
commit 35ae83034c
2 changed files with 239 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 { PrivateSewageFacilityInfoListRvw } from "@/components/util/column/PrivateSewageFacilityColumnRvw";
const PrivateSewageFacilityRvw = () => {
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={PrivateSewageFacilityInfoListRvw} isExcelImport={false}/>
</>
);
};
export default PrivateSewageFacilityRvw;
@@ -0,0 +1,190 @@
export const PrivateSewageFacilityInfoListRvw = [
{
tabKey: 'a',
tabLabel: '처리용량별 오수처리시설 현황',
rowStartNum: 3, // 3단 헤더 구조 반영
fixedColumns: 2, // 순번, 시도, 시군구, 행정코드, 구분까지 고정
columns: [
/* 1. 행정 및 기본 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
/* 2. 총계 */
{ name: 'STTY_SM', fieldName: 'STTY_SM', header: { text: '총계' } },
/* 3. 하수처리구역 내 (단위: ㎥/일) */
{ name: 'STTY_ZONE_INNER_SM', fieldName: 'STTY_ZONE_INNER_SM', header: { text: '계' } },
{ name: 'STTY_ZONE_INNER_2', fieldName: 'STTY_ZONE_INNER_2', header: { text: '2이하' } },
{ name: 'STTY_ZONE_INNER_3', fieldName: 'STTY_ZONE_INNER_3', header: { text: '3~10' } },
{ name: 'STTY_ZONE_INNER_11', fieldName: 'STTY_ZONE_INNER_11', header: { text: '11~20' } },
{ name: 'STTY_ZONE_INNER_21', fieldName: 'STTY_ZONE_INNER_21', header: { text: '21~50' } },
{ name: 'STTY_ZONE_INNER_51', fieldName: 'STTY_ZONE_INNER_51', header: { text: '51~100' } },
{ name: 'STTY_ZONE_INNER_101', fieldName: 'STTY_ZONE_INNER_101', header: { text: '101~500' } },
{ name: 'STTY_ZONE_INNER_501', fieldName: 'STTY_ZONE_INNER_501', header: { text: '501이상' } },
/* 4. 하수처리구역 외 (단위: ㎥/일) */
{ name: 'STTY_ZONE_OUTER_SM', fieldName: 'STTY_ZONE_OUTER_SM', header: { text: '계' } },
{ name: 'STTY_ZONE_OUTER_2', fieldName: 'STTY_ZONE_OUTER_2', header: { text: '2이하' } },
{ name: 'STTY_ZONE_OUTER_3', fieldName: 'STTY_ZONE_OUTER_3', header: { text: '3~10' } },
{ name: 'STTY_ZONE_OUTER_11', fieldName: 'STTY_ZONE_OUTER_11', header: { text: '11~20' } },
{ name: 'STTY_ZONE_OUTER_21', fieldName: 'STTY_ZONE_OUTER_21', header: { text: '21~50' } },
{ name: 'STTY_ZONE_OUTER_51', fieldName: 'STTY_ZONE_OUTER_51', header: { text: '51~100' } },
{ name: 'STTY_ZONE_OUTER_101', fieldName: 'STTY_ZONE_OUTER_101', header: { text: '101~500' } },
{ name: 'STTY_ZONE_OUTER_501', fieldName: 'STTY_ZONE_OUTER_501', header: { text: '501이상' } },
/* 5. 기타 및 의견 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{
name: 'addrGroup',
header: { text: '행정구역' },
items: ['SIDO', 'GUGUN'],
},
'YR_GBN',
'STTY_SM',
{
name: 'individualGroup',
header: { text: '오수처리시설' },
items: [
{
name: 'innerGroup',
header: { text: '하수처리구역 내(㎥/일)' },
items: [
'STTY_ZONE_INNER_SM', 'STTY_ZONE_INNER_2', 'STTY_ZONE_INNER_3',
'STTY_ZONE_INNER_11', 'STTY_ZONE_INNER_21', 'STTY_ZONE_INNER_51',
'STTY_ZONE_INNER_101', 'STTY_ZONE_INNER_501'
]
},
{
name: 'outerGroup',
header: { text: '하수처리구역 외(㎥/일)' },
items: [
'STTY_ZONE_OUTER_SM', 'STTY_ZONE_OUTER_2', 'STTY_ZONE_OUTER_3',
'STTY_ZONE_OUTER_11', 'STTY_ZONE_OUTER_21', 'STTY_ZONE_OUTER_51',
'STTY_ZONE_OUTER_101', 'STTY_ZONE_OUTER_501'
]
}
]
},
'RMK'
]
},
{
tabKey: 'b',
tabLabel: '정화조현황',
rowStartNum: 4, // XML의 4단 헤더 구조 반영
fixedColumns: 1, // 순번, 시도, 시군구, 구분까지 고정
columns: [
/* 1. 행정 및 기본 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
{ name: 'TOT_FCLTY_CNT', fieldName: 'TOT_FCLTY_CNT', header: { text: '총 시설 수\n(A+D)' } },
/* 2. 하수처리구역 내 (Inner) */
{ name: 'SPZI_SM', fieldName: 'SPZI_SM', header: { text: '총계\nA=(B+C)/2' } },
// 처리방식별 (B)
{ name: 'SPZI_NPFL', fieldName: 'SPZI_NPFL', header: { text: '자연유하' } },
{ name: 'SPZI_ENFCT_PUMP', fieldName: 'SPZI_ENFCT_PUMP', header: { text: '강제펌핑식' } },
{ name: 'SPZI_TFM', fieldName: 'SPZI_TFM', header: { text: '살수여상' } },
{ name: 'SPZI_ARTM', fieldName: 'SPZI_ARTM', header: { text: '폭기방법' } },
{ name: 'SPZI_CTARM', fieldName: 'SPZI_CTARM', header: { text: '접촉폭기' } },
{ name: 'SPZI_ETC', fieldName: 'SPZI_ETC', header: { text: '기타' } },
// 처리용량별 (C)
{ name: 'SPZI_PROC_CPC_SM', fieldName: 'SPZI_PROC_CPC_SM', header: { text: '계(C)' } },
{ name: 'SPZI_PROC_CPC_1', fieldName: 'SPZI_PROC_CPC_1', header: { text: '10인조 이하' } },
{ name: 'SPZI_PROC_CPC_2', fieldName: 'SPZI_PROC_CPC_2', header: { text: '11~20' } },
{ name: 'SPZI_PROC_CPC_3', fieldName: 'SPZI_PROC_CPC_3', header: { text: '21~30' } },
{ name: 'SPZI_PROC_CPC_4', fieldName: 'SPZI_PROC_CPC_4', header: { text: '31~50' } },
{ name: 'SPZI_PROC_CPC_5', fieldName: 'SPZI_PROC_CPC_5', header: { text: '51~199' } },
{ name: 'SPZI_PROC_CPC_6', fieldName: 'SPZI_PROC_CPC_6', header: { text: '200~499' } },
{ name: 'SPZI_PROC_CPC_7', fieldName: 'SPZI_PROC_CPC_7', header: { text: '500~999' } },
{ name: 'SPZI_PROC_CPC_8', fieldName: 'SPZI_PROC_CPC_8', header: { text: '1,000이상' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'YR_GBN', 'TOT_FCLTY_CNT',
{
name: 'innerMainGroup',
header: { text: '하수처리구역 내' },
items: [
'SPZI_SM',
{
name: 'innerMethodGroup',
header: { text: '처리방식별' },
items: [
{ name: 'innerTankGroup', header: { text: '부패탱크' }, items: ['SPZI_NPFL', 'SPZI_ENFCT_PUMP'] },
'SPZI_TFM', 'SPZI_ARTM', 'SPZI_CTARM', 'SPZI_ETC'
]
},
{
name: 'innerCpcGroup',
header: { text: '처리용량별' },
items: ['SPZI_PROC_CPC_SM', 'SPZI_PROC_CPC_1', 'SPZI_PROC_CPC_2', 'SPZI_PROC_CPC_3', 'SPZI_PROC_CPC_4', 'SPZI_PROC_CPC_5', 'SPZI_PROC_CPC_6', 'SPZI_PROC_CPC_7', 'SPZI_PROC_CPC_8']
}
]
},
'RMK'
]
},{
tabKey: 'c',
tabLabel: '개인하수도 관리지역 지정공고 현황',
rowStartNum: 3, // 3단 헤더 구조 반영
fixedColumns: 1, // 순번, 시도, 시군구, 구분까지 고정
columns: [
/* 1. 행정 및 기본 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
/* 2. 관리지역 공고 현황 (하수도법 제34조의2) */
{ name: 'MGMT_AR', fieldName: 'MGMT_AR', header: { text: '공고지역\n(개소)' } },
{ name: 'APPN_SCOPE', fieldName: 'APPN_SCOPE', header: { text: '지정범위\n(㎢)' } },
/* 3. 정화조 상세 */
{ name: 'WRRTN_CNT', fieldName: 'WRRTN_CNT', header: { text: '개소수' } },
{ name: 'WRRTN_CPC', fieldName: 'WRRTN_CPC', header: { text: '처리용량\n(인/일)' } },
/* 4. 오수시설 상세 */
{ name: 'STTY_CNT', fieldName: 'STTY_CNT', header: { text: '개소수' } },
{ name: 'STTY_CPC', fieldName: 'STTY_CPC', header: { text: '처리용량\n(㎥/일)' } },
/* 5. 기타 및 의견 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{
name: 'addrGroup',
header: { text: '행정구역' },
items: ['SIDO', 'GUGUN'],
},
'YR_GBN',
{
name: 'mgmtMainGroup',
header: { text: '개인하수도관리지역공고현황\n(하수도법 제34조의2)' },
items: [
'MGMT_AR',
'APPN_SCOPE',
{
name: 'septictankGroup',
header: { text: '정화조' },
items: ['WRRTN_CNT', 'WRRTN_CPC']
},
{
name: 'sewageFacGroup',
header: { text: '오수시설' },
items: ['STTY_CNT', 'STTY_CPC']
}
]
},
'RMK'
]
}
];