[feat] map 처리로 columns editable 옵션 추가 및 코드 정리

This commit is contained in:
2026-01-02 11:18:36 +09:00
parent a542cdd87d
commit 36146c3fc4
15 changed files with 778 additions and 975 deletions
@@ -6,16 +6,19 @@ import ReviewOpinionButton from "@/components/button/ReviewOpinionButton";
import ReturnButton from "@/components/button/ReturnButton";
const PublicSewageFacilityRvw = () => {
const columns = [
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: '물리적' } },
@@ -23,6 +26,7 @@ const PublicSewageFacilityRvw = () => {
{ 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: '물리적' } },
@@ -76,6 +80,11 @@ const PublicSewageFacilityRvw = () => {
{ name: 'rmk', fieldName: '비고', header: { text: '비고' } },
];
const columns = rawColumns.map(col => ({
...col,
editable: false
}));
const columnLayout = [
{
name: 'groupA',
@@ -83,6 +92,8 @@ const PublicSewageFacilityRvw = () => {
header: { text: '행정구역' },
items: ['sido', 'sgg'],
},
'시설명(500m3/일이상/미만)',
'구분',
'소재지',
'시설용량(500m3/일이상/미만)',
{
@@ -169,22 +180,18 @@ const PublicSewageFacilityRvw = () => {
const approveFunc = () => {
console.log('approveFunc');
// 승인 로직
};
const saveFunc = () => {
console.log('submit');
// 저장 로직
};
const reviewOpinionFunc = () => {
console.log('reviewOpinionFunc');
// 검토의견 작성
};
const returnFunc = () => {
console.log('returnFunc');
// 반려
};
return (
@@ -1,5 +1,4 @@
import SearchForm from "@/components/module/SearchForm";
import DataGrid from "@/components/module/DataGrid";
import SaveButton from "@/components/button/SaveButton";
import ApproveButton from "@/components/button/ApproveButton";
@@ -7,9 +6,12 @@ import ReviewOpinionButton from "@/components/button/ReviewOpinionButton";
import ReturnButton from "@/components/button/ReturnButton";
const PumpingStationRvw = () => {
const columns = [
const rawColumns = [
// 행정구역
{ name: 'sido', fieldName: '시도', header: { text: '시도' } },
{ name: 'sgg', fieldName: '구군', header: { text: '구군' } },
// 기본 정보
{ name: '펌프장명', fieldName: '펌프장명', header: { text: '펌프장명' } },
{ name: '구분', fieldName: '구분', header: { text: '구분' } },
{ name: '처리장명', fieldName: '처리장명', header: { text: '처리장명' } },
@@ -17,46 +19,63 @@ const PumpingStationRvw = () => {
{ name: '위치', fieldName: '위치', header: { text: '위치' } },
{ name: '가동년월일 yyyy-mm-dd', fieldName: '가동년월일 yyyy-mm-dd', header: { text: '가동년월일 yyyy-mm-dd' } },
{ name: '계획배수면적(km2)', fieldName: '계획배수면적(km2)', header: { text: '계획배수면적(km2)' } },
// 계획배수량
{ name: '청천시(A)', fieldName: '청천시(A)', header: { text: '청천시(A)' } },
{ name: '우천시(B)', fieldName: '우천시(B)', header: { text: '우천시(B)' } },
{ name: '우수량(B-A)', fieldName: '우수량(B-A)', header: { text: '우수량(B-A)' } },
// 총양수량
{ name: '오수펌프_총양수량(m3/min)', fieldName: '오수펌프_총양수량(m3/min)', header: { text: '총양수량(m3/min)' } },
{ name: '우수펌프_총양수량(m3/min)', fieldName: '우수펌프_총양수량(m3/min)', header: { text: '총양수량(m3/min)' } },
//오수펌프(1)
// 오수펌프(1)
{ name: '오수펌프(1)구경(mm)', fieldName: '오수펌프(1)구경(mm)', header: { text: '구경(mm)' } },
{ name: '오수펌프(1)양수량(m3/min)', fieldName: '오수펌프(1)양수량(m3/min)', header: { text: '양수량(m3/min)' } },
{ name: '오수펌프(1)펌프대수', fieldName: '오수펌프(1)펌프대수', header: { text: '펌프대수' } },
{ name: '오수펌프(1)예비대수', fieldName: '오수펌프(1)예비대수', header: { text: '예비대수' } },
//오수펌프(2)
// 오수펌프(2)
{ name: '오수펌프(2)구경(mm)', fieldName: '오수펌프(2)구경(mm)', header: { text: '구경(mm)' } },
{ name: '오수펌프(2)양수량(m3/min)', fieldName: '오수펌프(2)양수량(m3/min)', header: { text: '양수량(m3/min)' } },
{ name: '오수펌프(2)펌프대수', fieldName: '오수펌프(2)펌프대수', header: { text: '펌프대수' } },
{ name: '오수펌프(2)예비대수', fieldName: '오수펌프(2)예비대수', header: { text: '예비대수' } },
//오수펌프(3)
// 오수펌프(3)
{ name: '오수펌프(3)구경(mm)', fieldName: '오수펌프(3)구경(mm)', header: { text: '구경(mm)' } },
{ name: '오수펌프(3)양수량(m3/min)', fieldName: '오수펌프(3)양수량(m3/min)', header: { text: '양수량(m3/min)' } },
{ name: '오수펌프(3)펌프대수', fieldName: '오수펌프(3)펌프대수', header: { text: '펌프대수' } },
{ name: '오수펌프(3)예비대수', fieldName: '오수펌프(3)예비대수', header: { text: '예비대수' } },
//우수펌프(1)
// 우수펌프(1)
{ name: '우수펌프(1)구경(mm)', fieldName: '우수펌프(1)구경(mm)', header: { text: '구경(mm)' } },
{ name: '우수펌프(1)양수량(m3/min)', fieldName: '우수펌프(1)양수량(m3/min)', header: { text: '양수량(m3/min)' } },
{ name: '우수펌프(1)펌프대수', fieldName: '우수펌프(1)펌프대수', header: { text: '펌프대수' } },
{ name: '우수펌프(1)예비대수', fieldName: '우수펌프(1)예비대수', header: { text: '예비대수' } },
//우수펌프(2)
// 우수펌프(2)
{ name: '우수펌프(2)구경(mm)', fieldName: '우수펌프(2)구경(mm)', header: { text: '구경(mm)' } },
{ name: '우수펌프(2)양수량(m3/min)', fieldName: '우수펌프(2)양수량(m3/min)', header: { text: '양수량(m3/min)' } },
{ name: '우수펌프(2)펌프대수', fieldName: '우수펌프(2)펌프대수', header: { text: '펌프대수' } },
{ name: '우수펌프(2)예비대수', fieldName: '우수펌프(2)예비대수', header: { text: '예비대수' } },
//우수펌프(3)
// 우수펌프(3)
{ name: '우수펌프(3)구경(mm)', fieldName: '우수펌프(3)구경(mm)', header: { text: '구경(mm)' } },
{ name: '우수펌프(3)양수량(m3/min)', fieldName: '우수펌프(3)양수량(m3/min)', header: { text: '양수량(m3/min)' } },
{ name: '우수펌프(3)펌프대수', fieldName: '우수펌프(3)펌프대수', header: { text: '펌프대수' } },
{ name: '우수펌프(3)예비대수', fieldName: '우수펌프(3)예비대수', header: { text: '예비대수' } },
// 운영 및 비고
{ name: '연간전력사용량(kWh/년)', fieldName: '연간전력사용량(kWh/년)', header: { text: '연간전력사용량(kWh/년)' } },
{ name: 'rmk', fieldName: '비고', header: { text: '비고' } },
];
const columns = rawColumns.map(col => ({
...col,
editable: false
}));
const columnLayout = [
{
name: 'groupA',
@@ -126,25 +145,10 @@ const PumpingStationRvw = () => {
'rmk',
];
const approveFunc = () => {
console.log('approveFunc');
// 승인 로직
};
const saveFunc = () => {
console.log('submit');
// 저장 로직
};
const reviewOpinionFunc = () => {
console.log('reviewOpinionFunc');
// 검토의견 작성
};
const returnFunc = () => {
console.log('returnFunc');
// 반려
};
const approveFunc = () => { console.log('approveFunc'); };
const saveFunc = () => { console.log('submit'); };
const reviewOpinionFunc = () => { console.log('reviewOpinionFunc'); };
const returnFunc = () => { console.log('returnFunc'); };
return (
<>
@@ -5,7 +5,7 @@ import ApproveButton from "@/components/button/ApproveButton";
import ReviewOpinionButton from "@/components/button/ReviewOpinionButton";
import ReturnButton from "@/components/button/ReturnButton";
import { SewageExcretaSlurgeInfoList } from "@/components/util/column/review/SewageExcretaSlurgeColumnRvw";
import { SewageExcretaSludgeInfoListRvw } from "@/components/util/column/review/SewageExcretaSlurgeColumnRvw";
const SewageExcretaSlurgeRvw = () => {
@@ -41,7 +41,7 @@ const SewageExcretaSlurgeRvw = () => {
<ReturnButton returnFunc={returnFunc} />
<SaveButton saveFunc={saveFunc} />
</div>
<TabDataGrid columnInfo={SewageExcretaSlurgeInfoList} isExcelImport={false} />
<TabDataGrid columnInfo={SewageExcretaSludgeInfoListRvw} isExcelImport={false} />
</>
);
};
@@ -5,7 +5,7 @@ import ApproveButton from "@/components/button/ApproveButton";
import ReviewOpinionButton from "@/components/button/ReviewOpinionButton";
import ReturnButton from "@/components/button/ReturnButton";
import { SewagePipeMaintainColumnInfoListRvw } from "@/components/util/column/review/SewagePipeMaintainColumnRvw";
import { SewagePipeMaintainColumnInfoList } from "@/components/util/column/review/SewagePipeMaintainColumnRvw";
const SewagePipeMaintainRvw = () => {
@@ -41,7 +41,7 @@ const SewagePipeMaintainRvw = () => {
<ReturnButton returnFunc={returnFunc} />
<SaveButton saveFunc={saveFunc} />
</div>
<TabDataGrid columnInfo={SewagePipeMaintainColumnInfoListRvw} isExcelImport={false} />
<TabDataGrid columnInfo={SewagePipeMaintainColumnInfoList} isExcelImport={false} />
</>
);
};
@@ -41,7 +41,7 @@ const SewagePipeRvw = () => {
<ReturnButton returnFunc={returnFunc} />
<SaveButton saveFunc={saveFunc} />
</div>
<TabDataGrid columnInfo={SewagePipeColumnInfoListRvw} />
<TabDataGrid columnInfo={SewagePipeColumnInfoListRvw} isExcelImport={false} />
</>
);
};
@@ -6,7 +6,7 @@ import ReviewOpinionButton from "@/components/button/ReviewOpinionButton";
import ReturnButton from "@/components/button/ReturnButton";
const StatsInputSatusRvw = () => {
const columns = [
const rawColumns = [
{ name: 'sido', fieldName: '시도', header: { text: '시도' } },
{ name: 'sgg', fieldName: '구군', header: { text: '구군' } },
@@ -89,6 +89,11 @@ const StatsInputSatusRvw = () => {
{ name: 'rmk', fieldName: '비고', header: { text: '비고' } },
];
const columns = rawColumns.map(col => ({
...col,
editable: false
}));
const columnLayout = [
{
name: 'groupA',
@@ -179,22 +184,18 @@ const StatsInputSatusRvw = () => {
const approveFunc = () => {
console.log('approveFunc');
// 승인 로직
};
const saveFunc = () => {
console.log('submit');
// 저장 로직
};
const reviewOpinionFunc = () => {
console.log('reviewOpinionFunc');
// 검토의견 작성
};
const returnFunc = () => {
console.log('returnFunc');
// 반려
};
return (
@@ -1,12 +1,14 @@
import type { GridView, DataColumn } from "@/components/type/DataGrid.type";
import { getFooterSummary } from "@/components/util/grid/footerSummary";
export const PrivateSewageFacilityInfoListRvw = [
const rawPrivateSewageList = [
{
tabKey: 'a',
tabLabel: '처리용량별 오수처리시설 현황',
rowStartNum: 3, // 3단 헤더 구조 반영
fixedColumns: 2, // 순번, 시도, 시군구, 행정코드, 구분까지 고정
rowStartNum: 3,
fixedColumns: 2,
columns: [
/* 1. 행정 및 기본 정보 (Band: Left) */
/* 1. 행정 및 기본 정보 */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
@@ -14,7 +16,7 @@ export const PrivateSewageFacilityInfoListRvw = [
/* 2. 총계 */
{ name: 'STTY_SM', fieldName: 'STTY_SM', header: { text: '총계' } },
/* 3. 하수처리구역 내 (단위: ㎥/일) */
/* 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' } },
@@ -24,7 +26,7 @@ export const PrivateSewageFacilityInfoListRvw = [
{ 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. 하수처리구역 외 (단위: ㎥/일) */
/* 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' } },
@@ -34,39 +36,22 @@ export const PrivateSewageFacilityInfoListRvw = [
{ 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. 기타 및 의견 */
/* 5. 비고 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'YR_GBN', 'STTY_SM',
{
name: 'addrGroup',
header: { text: '행정구역' },
items: ['SIDO', 'GUGUN'],
},
'YR_GBN',
'STTY_SM',
{
name: 'individualGroup',
header: { text: '오수처리시설' },
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: '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'
]
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']
}
]
},
@@ -74,117 +59,106 @@ export const PrivateSewageFacilityInfoListRvw = [
]
},
{
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)' } },
tabKey: 'b',
tabLabel: '정화조현황',
rowStartNum: 4,
fixedColumns: 1,
columns: [
/* 1. 행정 및 기본 정보 */
{ 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이상' } },
/* 2. 하수처리구역 내 - 총계 및 처리방식별 */
{ name: 'SPZI_SM', fieldName: 'SPZI_SM', header: { text: '총계\nA=(B+C)/2' } },
{ 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: '기타' } },
{ 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: '구분' } },
/* 3. 하수처리구역 내 - 처리용량별 */
{ 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이상' } },
/* 2. 관리지역 공고 현황 (하수도법 제34조의2) */
{ name: 'MGMT_AR', fieldName: 'MGMT_AR', header: { text: '공고지역\n(개소)' } },
{ name: 'APPN_SCOPE', fieldName: 'APPN_SCOPE', header: { text: '지정범위\n(㎢)' } },
/* 4. 비고 */
{ 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,
fixedColumns: 1,
columns: [
/* 1. 행정 및 기본 정보 */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
/* 3. 정화조 상세 */
{ name: 'WRRTN_CNT', fieldName: 'WRRTN_CNT', header: { text: '개소수' } },
{ name: 'WRRTN_CPC', fieldName: 'WRRTN_CPC', header: { text: '처리용량\n(인/일)' } },
/* 2. 관리지역 공고 현황 */
{ name: 'MGMT_AR', fieldName: 'MGMT_AR', header: { text: '공고지역\n(개소)' } },
{ name: 'APPN_SCOPE', fieldName: 'APPN_SCOPE', header: { text: '지정범위\n(㎢)' } },
/* 4. 오수시설 상세 */
{ name: 'STTY_CNT', fieldName: 'STTY_CNT', header: { text: '개소수' } },
{ name: 'STTY_CPC', fieldName: 'STTY_CPC', header: { text: '처리용량\n(㎥/일)' } },
/* 3. 정화조 상세 */
{ name: 'WRRTN_CNT', fieldName: 'WRRTN_CNT', header: { text: '개소수' } },
{ name: 'WRRTN_CPC', fieldName: 'WRRTN_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'
]
}
];
/* 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'
]
}
];
export const PrivateSewageFacilityInfoListRvw = rawPrivateSewageList.map(tab => ({
...tab,
columns: tab.columns.map(col => ({
...col,
editable: false
}))
}));
@@ -1,10 +1,12 @@
import type { GridView, DataColumn } from "@/components/type/DataGrid.type";
import { getFooterSummary } from "@/components/util/grid/footerSummary";
export const SewageExcretaRelatedInfoListRvw=[
const rawExcretaRelatedList = [
{
tabKey: 'a',
tabLabel: '공공기관 하수분야',
rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2")
fixedColumns: 2, // 순번, 시도, 시군구, 직제, 구분까지 고정
rowStartNum: 2,
fixedColumns: 2,
columns: [
/* 1. 행정 및 조직 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
@@ -26,9 +28,7 @@ export const SewageExcretaRelatedInfoListRvw=[
{ name: 'TCHNLGY_ETC', fieldName: 'TCHNLGY_ETC', header: { text: '기타' } },
/* 4. 기타 및 비고 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
@@ -40,162 +40,132 @@ export const SewageExcretaRelatedInfoListRvw=[
name: 'techJobGroup',
header: { text: '기술직' },
items: [
'TCHNLGY_JSSFC_SM',
'ENGRK_JSSFC',
'MCHN_JSSFC',
'ELCTY_JSSFC',
'CHMSTRY_JSSFC',
'ENVRN_JSSFC',
'TCHNLGY_ETC'
'TCHNLGY_JSSFC_SM', 'ENGRK_JSSFC', 'MCHN_JSSFC', 'ELCTY_JSSFC', 'CHMSTRY_JSSFC', 'ENVRN_JSSFC', 'TCHNLGY_ETC'
]
},
'RMK',
]
},{
tabKey: 'b',
tabLabel: '공공기관 분뇨분야',
rowStartNum: 2, // 2단 헤더 구조
fixedColumns: 1, // 순번, 시도, 시군구, 직제, 구분까지 고정
columns: [
/* 1. 행정 및 조직 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'OCGNZ', fieldName: 'OCGNZ', header: { text: '직제' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
},
{
tabKey: 'b',
tabLabel: '공공기관 분뇨분야',
rowStartNum: 2,
fixedColumns: 1,
columns: [
/* 1. 행정 및 조직 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'OCGNZ', fieldName: 'OCGNZ', header: { text: '직제' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
/* 2. 인력 총계 및 행정직 */
{ name: 'TOT_WTR_QRM', fieldName: 'TOT_WTR_QRM', header: { text: '직원총수' } },
{ name: 'ADMINIST_JSSFC', fieldName: 'ADMINIST_JSSFC', header: { text: '행정직' } },
/* 2. 인력 총계 및 행정직 */
{ name: 'TOT_WTR_QRM', fieldName: 'TOT_WTR_QRM', header: { text: '직원총수' } },
{ name: 'ADMINIST_JSSFC', fieldName: 'ADMINIST_JSSFC', header: { text: '행정직' } },
/* 3. 기술직 상세 (단위: 명) */
{ name: 'TCHNLGY_JSSFC_SM', fieldName: 'TCHNLGY_JSSFC_SM', header: { text: '계' } },
{ name: 'ENGRK_JSSFC', fieldName: 'ENGRK_JSSFC', header: { text: '토목' } },
{ name: 'MCHN_JSSFC', fieldName: 'MCHN_JSSFC', header: { text: '기계' } },
{ name: 'ELCTY_JSSFC', fieldName: 'ELCTY_JSSFC', header: { text: '전기' } },
{ name: 'CHMSTRY_JSSFC', fieldName: 'CHMSTRY_JSSFC', header: { text: '화공' } },
{ name: 'ENVRN_JSSFC', fieldName: 'ENVRN_JSSFC', header: { text: '환경' } },
{ name: 'TCHNLGY_ETC', fieldName: 'TCHNLGY_ETC', header: { text: '기타' } },
/* 3. 기술직 상세 (단위: 명) */
{ name: 'TCHNLGY_JSSFC_SM', fieldName: 'TCHNLGY_JSSFC_SM', header: { text: '계' } },
{ name: 'ENGRK_JSSFC', fieldName: 'ENGRK_JSSFC', header: { text: '토목' } },
{ name: 'MCHN_JSSFC', fieldName: 'MCHN_JSSFC', header: { text: '기계' } },
{ name: 'ELCTY_JSSFC', fieldName: 'ELCTY_JSSFC', header: { text: '전기' } },
{ name: 'CHMSTRY_JSSFC', fieldName: 'CHMSTRY_JSSFC', header: { text: '화공' } },
{ name: 'ENVRN_JSSFC', fieldName: 'ENVRN_JSSFC', header: { text: '환경' } },
{ name: 'TCHNLGY_ETC', fieldName: 'TCHNLGY_ETC', header: { text: '기타' } },
/* 4. 기타 및 비고 */
{ name: 'ETC', fieldName: 'ETC', header: { text: '기타' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'OCGNZ',
'YR_GBN',
'TOT_WTR_QRM',
'ADMINIST_JSSFC',
{
name: 'techJobGroup',
header: { text: '기술직' },
items: [
'TCHNLGY_JSSFC_SM',
'ENGRK_JSSFC',
'MCHN_JSSFC',
'ELCTY_JSSFC',
'CHMSTRY_JSSFC',
'ENVRN_JSSFC',
'TCHNLGY_ETC'
]
},
'ETC',
'RMK',
]
},
{
/* 4. 기타 및 비고 */
{ name: 'ETC', fieldName: 'ETC', header: { text: '기타' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'OCGNZ', 'YR_GBN', 'TOT_WTR_QRM', 'ADMINIST_JSSFC',
{
name: 'techJobGroup',
header: { text: '기술직' },
items: [
'TCHNLGY_JSSFC_SM', 'ENGRK_JSSFC', 'MCHN_JSSFC', 'ELCTY_JSSFC', 'CHMSTRY_JSSFC', 'ENVRN_JSSFC', 'TCHNLGY_ETC'
]
},
'ETC', 'RMK',
]
},
{
tabKey: 'c',
tabLabel: '분뇨수집·운반업',
rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2")
fixedColumns: 2, // 순번, 시도, 시군구, 구분까지 고정
rowStartNum: 2,
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: '구분' } },
/* 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: 'ECSCS_SM', fieldName: 'ECSCS_SM', header: { text: '업체수(개소)' } },
{ name: 'ECSCS_BSMN', fieldName: 'ECSCS_BSMN', header: { text: '종사인원(명)' } },
/* 2. 업체 및 인력 현황 */
{ name: 'ECSCS_SM', fieldName: 'ECSCS_SM', header: { text: '업체수(개소)' } },
{ name: 'ECSCS_BSMN', fieldName: 'ECSCS_BSMN', header: { text: '종사인원(명)' } },
/* 3. 시설(차량) 확보현황 (단위: 대수) */
{ name: 'VHCLE_SM', fieldName: 'VHCLE_SM', header: { text: '계' } },
{ name: 'THREE_BELOW', fieldName: 'THREE_BELOW', header: { text: '3톤이하' } },
{ name: 'FOUR_BELOW', fieldName: 'FOUR_BELOW', header: { text: '4.5톤이하' } },
{ name: 'EIGHT_BELOW', fieldName: 'EIGHT_BELOW', header: { text: '8톤이하' } },
{ name: 'ETC', fieldName: 'ETC', header: { text: '기타' } },
/* 3. 시설(차량) 확보현황 (단위: 대수) */
{ name: 'VHCLE_SM', fieldName: 'VHCLE_SM', header: { text: '계' } },
{ name: 'THREE_BELOW', fieldName: 'THREE_BELOW', header: { text: '3톤이하' } },
{ name: 'FOUR_BELOW', fieldName: 'FOUR_BELOW', header: { text: '4.5톤이하' } },
{ name: 'EIGHT_BELOW', fieldName: 'EIGHT_BELOW', header: { text: '8톤이하' } },
{ name: 'ETC', fieldName: 'ETC', header: { text: '기타' } },
/* 4. 실적 및 비고 */
{ name: 'COLCT_TRSP_ACMSLT', fieldName: 'COLCT_TRSP_ACMSLT', header: { text: '수집·운반실적\n(㎥/년)' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
/* 4. 실적 및 비고 */
{ name: 'COLCT_TRSP_ACMSLT', fieldName: 'COLCT_TRSP_ACMSLT', header: { text: '수집·운반실적\n(㎥/년)' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'YR_GBN',
'ECSCS_SM',
'ECSCS_BSMN',
{
name: 'vehicleGroup',
header: { text: '시설(차량) 확보현황(대수)' },
items: [
'VHCLE_SM',
'THREE_BELOW',
'FOUR_BELOW',
'EIGHT_BELOW',
'ETC'
]
},
'COLCT_TRSP_ACMSLT',
'RMK'
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'YR_GBN', 'ECSCS_SM', 'ECSCS_BSMN',
{
name: 'vehicleGroup',
header: { text: '시설(차량) 확보현황(대수)' },
items: ['VHCLE_SM', 'THREE_BELOW', 'FOUR_BELOW', 'EIGHT_BELOW', 'ETC']
},
'COLCT_TRSP_ACMSLT', 'RMK'
]
},
{
},
{
tabKey: 'd',
tabLabel: '개인하수처리관련업',
rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2")
fixedColumns: 2, // 순번, 시도, 시군구, 구분까지 고정
rowStartNum: 2,
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: '구분' } },
/* 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: 'CNSTRCT_ENTRPS', fieldName: 'CNSTRCT_ENTRPS', header: { text: '업소수' } },
{ name: 'CNSTRCT_BSMN', fieldName: 'CNSTRCT_BSMN', header: { text: '종사인원(명)' } },
/* 2. 개인하수처리시설 설계ㆍ시공업 */
{ name: 'CNSTRCT_ENTRPS', fieldName: 'CNSTRCT_ENTRPS', header: { text: '업소수' } },
{ name: 'CNSTRCT_BSMN', fieldName: 'CNSTRCT_BSMN', header: { text: '종사인원(명)' } },
/* 3. 개인하수처리시설 제조업 */
{ name: 'MNFCTUR_ENTRPS', fieldName: 'MNFCTUR_ENTRPS', header: { text: '업소수' } },
{ name: 'MNFCTUR_BSMN', fieldName: 'MNFCTUR_BSMN', header: { text: '종사인원(명)' } },
/* 3. 개인하수처리시설 제조업 */
{ name: 'MNFCTUR_ENTRPS', fieldName: 'MNFCTUR_ENTRPS', header: { text: '업소수' } },
{ name: 'MNFCTUR_BSMN', fieldName: 'MNFCTUR_BSMN', header: { text: '종사인원(명)' } },
/* 4. 개인하수처리시설 관리업 */
{ name: 'MGMT_ENTRPS', fieldName: 'MGMT_ENTRPS', header: { text: '업소수' } },
{ name: 'MGMT_BSMN', fieldName: 'MGMT_BSMN', header: { text: '종사인원(명)' } },
/* 4. 개인하수처리시설 관리업 */
{ name: 'MGMT_ENTRPS', fieldName: 'MGMT_ENTRPS', header: { text: '업소수' } },
{ name: 'MGMT_BSMN', fieldName: 'MGMT_BSMN', header: { text: '종사인원(명)' } },
/* 5. 기타 및 의견 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }
/* 5. 기타 및 비고 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'YR_GBN',
{
name: 'constructGroup',
header: { text: '개인하수처리시설 설계ㆍ시공업' },
items: ['CNSTRCT_ENTRPS', 'CNSTRCT_BSMN']
},
{
name: 'manufactureGroup',
header: { text: '개인하수처리시설 제조업' },
items: ['MNFCTUR_ENTRPS', 'MNFCTUR_BSMN']
},
{
name: 'managementGroup',
header: { text: '개인하수처리시설 관리업' },
items: ['MGMT_ENTRPS', 'MGMT_BSMN']
},
'RMK'
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'YR_GBN',
{ name: 'constructGroup', header: { text: '개인하수처리시설 설계ㆍ시공업' }, items: ['CNSTRCT_ENTRPS', 'CNSTRCT_BSMN'] },
{ name: 'manufactureGroup', header: { text: '개인하수처리시설 제조업' }, items: ['MNFCTUR_ENTRPS', 'MNFCTUR_BSMN'] },
{ name: 'managementGroup', header: { text: '개인하수처리시설 관리업' }, items: ['MGMT_ENTRPS', 'MGMT_BSMN'] },
'RMK'
]
}
];
}
];
export const SewageExcretaRelatedInfoListRvw = rawExcretaRelatedList.map(tab => ({
...tab,
columns: tab.columns.map(col => ({
...col,
editable: false
}))
}));
@@ -1,21 +1,31 @@
export const SewageExcretaSlurgeInfoList = [
import type { GridView, DataColumn } from "@/components/type/DataGrid.type";
import { getFooterSummary } from "@/components/util/grid/footerSummary";
const rawSludgeList = [
{
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합계(톤/년)' } },
/* 자체 찌꺼기 처리량(1차/2차) */
{ 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: '소각' } },
@@ -45,6 +55,8 @@ export const SewageExcretaSlurgeInfoList = [
{ 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: '소각' } },
@@ -53,21 +65,18 @@ export const SewageExcretaSlurgeInfoList = [
{ 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']
},
{ name: 'genAmntGroup', header: { text: '찌꺼기발생량(톤/년,탈수기준)' }, items: ['TOT_AMNT', 'P_AMNT', 'O_AMNT'] },
'OUT_FCT_NM', 'OUT_AMNT', 'DSP_MOIRAT', 'DSP_SM',
{
name: 'internalProcessGroup',
header: { text: '자체 찌꺼기 처리량(톤/년)' },
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'] },
@@ -77,16 +86,11 @@ export const SewageExcretaSlurgeInfoList = [
{ 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: 'compostGroup', header: { text: '퇴비화' }, items: ['I_1CH_COM_FCT'] }
]
},
{
name: 'externalProcessGroup',
header: { text: '외부(민간)위탁 처리량(톤/년)' },
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'
@@ -95,15 +99,15 @@ export const SewageExcretaSlurgeInfoList = [
{
tabKey: 'b',
tabLabel: '소화조 운영현황',
rowStartNum: 3, // 3단 헤더 구조 (소화조 운영현황 > 이용현황 > 항목)
rowStartNum: 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(㎥)' } },
@@ -111,44 +115,26 @@ export const SewageExcretaSlurgeInfoList = [
{ 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',
'BSC_FCT_NM', 'YR_GBN',
{
name: 'digesterMainGroup',
header: { text: '소화조 운영현황' },
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_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'
]
},
@@ -158,59 +144,43 @@ export const SewageExcretaSlurgeInfoList = [
{
tabKey: 'c',
tabLabel: '하수찌꺼기 처리시설 운영현황',
rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2")
rowStartNum: 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'
]
},
'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")
rowStartNum: 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: '육상매립' } },
@@ -218,37 +188,27 @@ export const SewageExcretaSlurgeInfoList = [
{ 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'
'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'
]
}
];
];
export const SewageExcretaSludgeInfoListRvw = rawSludgeList.map(tab => ({
...tab,
columns: tab.columns.map(col => ({
...col,
editable: false
}))
}));
@@ -1,11 +1,14 @@
const baseYear = new Date().getFullYear();
export const SewagePipeColumnInfoListRvw = [
import type { GridView, DataColumn } from "@/components/type/DataGrid.type";
import { getFooterSummary } from "@/components/util/grid/footerSummary";
const baseYear = new Date().getFullYear();
const rawList = [
{
tabKey: 'a',
tabLabel: '지역별 시설현황',
rowStartNum: 2, // Header가 4줄이므로 데이터 시작은 4행부터
fixedColumns: 1, // 순번, 시도, 시군구, 행정구역명, 행정코드까지 고정
rowStartNum: 2,
fixedColumns: 1,
columns: [
/* 기본 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
@@ -109,12 +112,11 @@ export const SewagePipeColumnInfoListRvw = [
'RMK'
]
},
// SewagePipeColumnInfoListRvw 배열에 두 번째 객체로 추가하시면 됩니다.
{
tabKey: 'b',
tabLabel: '시설별 설치현황',
rowStartNum: 5, // 4단 헤더 구조 반영
fixedColumns: 4, // 순번, 시도, 시군구, 행정구역명, 처리장코드, 처리장명, 용량, 구분까지 고정
rowStartNum: 5,
fixedColumns: 4,
columns: [
/* 기본 정보 및 처리장 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
@@ -203,16 +205,11 @@ export const SewagePipeColumnInfoListRvw = [
header: { text: '토실/토구(개소)' },
items: [
{
// '합류식' 그룹 생성
name: 'cmbnSiteGroup',
header: { text: '합류식' },
items: [
// '우수토실' 컬럼 (name이 'CMBN_SOILHOLE_SITE'인 컬럼의 헤더 텍스트를 '우수토실'로 매핑)
'CMBN_SOILHOLE_SITE'
]
items: ['CMBN_SOILHOLE_SITE']
},
{
// '분류식' 그룹
name: 'sepSiteGroup',
header: { text: '분류식' },
items: ['SPRT_SOILHOLE_SITE', 'SPRT_SOILSPLL_SITE']
@@ -237,18 +234,15 @@ export const SewagePipeColumnInfoListRvw = [
'RMK'
]
},
{
tabKey: 'c',
tabLabel: '관종별 현황',
rowStartNum: 2,
fixedColumns: 3, // 순번, 시도, 시군구, 행정구역명, 행정코드, 관종, 구분
fixedColumns: 3,
columns: [
/* 기본 정보 */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'SWRG_PIPE_NM', fieldName: 'SWRG_PIPE_NM', header: { text: '관종' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
@@ -257,10 +251,8 @@ export const SewagePipeColumnInfoListRvw = [
{ name: 'LAYING_EXTN_SUM', fieldName: 'LAYING_EXTN_SUM', header: { text: '매설연장(m)' } },
{ name: 'REMVL_EXTN_SUM', fieldName: 'REMVL_EXTN_SUM', header: { text: '철거연장(m)' } },
/* 연도별 데이터 세트 (30Y ~ 01Y 반복) */
// XML 로직에 따라 30Y부터 01Y까지 순차적으로 생성합니다.
...Array.from({ length: 30 }, (_, i) => {
const yNum = (30 - i).toString().padStart(2, '0'); // 30, 29, ..., 01
const yNum = (30 - i).toString().padStart(2, '0');
return [
{ name: `TOTAL_EXTN_${yNum}Y`, fieldName: `TOTAL_EXTN_${yNum}Y`, header: { text: '계' } },
{ name: `LAYING_EXTN_${yNum}Y`, fieldName: `LAYING_EXTN_${yNum}Y`, header: { text: '매설연장(m)' } },
@@ -273,13 +265,11 @@ export const SewagePipeColumnInfoListRvw = [
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{
name: 'addrGroup',
header: { text: '행정구역' },
items: ['SIDO', 'GUGUN'],
},
'SWRG_PIPE_NM',
'YR_GBN',
{
@@ -287,13 +277,9 @@ export const SewagePipeColumnInfoListRvw = [
header: { text: '총계' },
items: ['TOTAL_EXTN_SUM', 'LAYING_EXTN_SUM', 'REMVL_EXTN_SUM'],
},
/* 반복 루프 수정 */
...Array.from({ length: 30 }, (_, i) => {
const yrOffset = 29 - i; // 29, 28, 27... 순서
const yrOffset = 29 - i;
const yNum = (30 - i).toString().padStart(2, '0');
// [수정 포인트] 이미지(image_5444d1.png)처럼 무조건 "-XX년" 형식으로 표시
// 만약 29년 이전만 "XXXX년이전"으로 하고 싶다면 기존 로직 유지
const headerText = `-${yrOffset}년`;
return {
@@ -314,7 +300,7 @@ export const SewagePipeColumnInfoListRvw = [
tabKey: 'd',
tabLabel: '관경별 현황',
rowStartNum: 2,
fixedColumns: 3, // 순번, 시도, 구군, 읍면동, 행정코드, 관종, 구분까지 고정
fixedColumns: 3,
columns: [
/* 기본 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
@@ -329,7 +315,7 @@ export const SewagePipeColumnInfoListRvw = [
{ name: 'UNDER_200', fieldName: 'UNDER_200', header: { text: '200mm 미만' } },
{ name: 'OVER_200_UNDEV_300', fieldName: 'OVER_200_UNDEV_300', header: { text: '200mm이상~\n300mm미만' } },
{ name: 'OVER_300_UNDEV_500', fieldName: 'OVER_300_UNDEV_500', header: { text: '300mm이상~\n500mm미만' } },
{ name: 'OVER_500_UNDEV_800', fieldName: 'OVER_500_UNDEV_800', header: { text: '500mm이상~\n800mm미만' } }, // SQL상 OVER_500_UNDEV_500 오타 대응
{ name: 'OVER_500_UNDEV_800', fieldName: 'OVER_500_UNDEV_800', header: { text: '500mm이상~\n800mm미만' } },
{ name: 'OVER_800', fieldName: 'OVER_800', header: { text: '800mm 이상' } },
/* 사각형 및 기타 */
@@ -364,4 +350,12 @@ export const SewagePipeColumnInfoListRvw = [
'RMK',
]
}
]
];
export const SewagePipeColumnInfoListRvw = rawList.map(tab => ({
...tab,
columns: tab.columns.map(col => ({
...col,
editable: false
}))
}));
@@ -1,10 +1,9 @@
export const SewagePipeMaintainColumnInfoListRvw = [
const rawMaintainList = [
{
tabKey: 'a',
tabLabel: '개보수',
rowStartNum: 4, // XML의 rowspan="4" 반영
fixedColumns: 2, // 순번, 시도, 시군구, 행정코드, 구분까지 고정
rowStartNum: 4,
fixedColumns: 2,
columns: [
/* 1. 행정 및 기본 정보 */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
@@ -82,83 +81,91 @@ export const SewagePipeMaintainColumnInfoListRvw = [
]
},
{
tabKey: 'b',
tabLabel: '관로준설',
rowStartNum: 4, // XML의 rowspan="4" 및 4단 헤더 반영
fixedColumns: 3, // 순번, 시도, 시군구, 구분까지 고정
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: 'PIPL_FCLTY_EXTN', fieldName: 'PIPL_FCLTY_EXTN', header: { text: '하수관로\n총시설연장\n(m)' } },
tabKey: 'b',
tabLabel: '관로준설',
rowStartNum: 4,
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: 'PIPL_FCLTY_EXTN', fieldName: 'PIPL_FCLTY_EXTN', header: { text: '하수관로\n총시설연장\n(m)' } },
/* 3. 준설연장 및 개소수 */
{ name: 'DRDG_PIPE_SM', fieldName: 'DRDG_PIPE_SM', header: { text: '합계' } },
{ name: 'DRDG_CMBN_PIPE', fieldName: 'DRDG_CMBN_PIPE', header: { text: '합류식' } },
{ name: 'DRDG_RAINWTR_PIPE', fieldName: 'DRDG_RAINWTR_PIPE', header: { text: '우수' } },
{ name: 'DRDG_PLTWTR_PIPE', fieldName: 'DRDG_PLTWTR_PIPE', header: { text: '오수' } },
{ name: 'MNHLE_SITE', fieldName: 'MNHLE_SITE', header: { text: '맨홀\n(개소)' } },
{ name: 'PLTWTR_RCVR_SITE', fieldName: 'PLTWTR_RCVR_SITE', header: { text: '오·우수받이\n(개소)' } },
{ name: 'SOILSPLL_SOILHOLE_SITE', fieldName: 'SOILSPLL_SOILHOLE_SITE', header: { text: '토실·토구\n(개소)' } },
/* 3. 준설연장 및 개소수 */
{ name: 'DRDG_PIPE_SM', fieldName: 'DRDG_PIPE_SM', header: { text: '합계' } },
{ name: 'DRDG_CMBN_PIPE', fieldName: 'DRDG_CMBN_PIPE', header: { text: '합류식' } },
{ name: 'DRDG_RAINWTR_PIPE', fieldName: 'DRDG_RAINWTR_PIPE', header: { text: '우수' } },
{ name: 'DRDG_PLTWTR_PIPE', fieldName: 'DRDG_PLTWTR_PIPE', header: { text: '오수' } },
{ name: 'MNHLE_SITE', fieldName: 'MNHLE_SITE', header: { text: '맨홀\n(개소)' } },
{ name: 'PLTWTR_RCVR_SITE', fieldName: 'PLTWTR_RCVR_SITE', header: { text: '오·우수받이\n(개소)' } },
{ name: 'SOILSPLL_SOILHOLE_SITE', fieldName: 'SOILSPLL_SOILHOLE_SITE', header: { text: '토실·토구\n(개소)' } },
/* 4. 준설 계획 및 율 */
{ name: 'DRDG_TRGET_EXTN', fieldName: 'DRDG_TRGET_EXTN', header: { text: '준설 계획\n연장(m)' } },
{ name: 'DRDG_TRGET_RT', fieldName: 'DRDG_TRGET_RT', header: { text: '계획대비\n준설율\n(%)' } },
{ name: 'PIPL_FCLTY_RT', fieldName: 'PIPL_FCLTY_RT', header: { text: '준설계획\n연장대비\n준설율(%)' } },
/* 4. 준설 계획 및 율 */
{ name: 'DRDG_TRGET_EXTN', fieldName: 'DRDG_TRGET_EXTN', header: { text: '준설 계획\n연장(m)' } },
{ name: 'DRDG_TRGET_RT', fieldName: 'DRDG_TRGET_RT', header: { text: '계획대비\n준설율\n(%)' } },
{ name: 'PIPL_FCLTY_RT', fieldName: 'PIPL_FCLTY_RT', header: { text: '준설계획\n연장대비\n준설율(%)' } },
/* 5. 준설실적 */
{ name: 'DRDG_ACMSLT_AMOUNT', fieldName: 'DRDG_ACMSLT_AMOUNT', header: { text: '금액\n(백만원)' } },
{ name: 'DRDG_ACMSLT_QY', fieldName: 'DRDG_ACMSLT_QY', header: { text: '준설량\n(㎥)' } },
/* 5. 준설실적 */
{ name: 'DRDG_ACMSLT_AMOUNT', fieldName: 'DRDG_ACMSLT_AMOUNT', header: { text: '금액\n(백만원)' } },
{ name: 'DRDG_ACMSLT_QY', fieldName: 'DRDG_ACMSLT_QY', header: { text: '준설량\n(㎥)' } },
/* 6. 준설토사처리 */
{ name: 'DRDG_ACMSLT_UNTPC', fieldName: 'DRDG_ACMSLT_UNTPC', header: { text: '준설토\n처리비\n(백만원)' } },
{ name: 'DRDG_ETND_SM', fieldName: 'DRDG_ETND_SM', header: { text: '처리량 계\n(톤)' } },
{ name: 'RCLM', fieldName: 'RCLM', header: { text: '매립' } },
{ name: 'OCEAN_DPSL', fieldName: 'OCEAN_DPSL', header: { text: '해양투기' } },
{ name: 'RUSE', fieldName: 'RUSE', header: { text: '재활용' } },
{ name: 'ETC', fieldName: 'ETC', header: { text: '기타\n(소각, 고형화,\n시멘트원료 등)' } },
/* 6. 준설토사처리 */
{ name: 'DRDG_ACMSLT_UNTPC', fieldName: 'DRDG_ACMSLT_UNTPC', header: { text: '준설토\n처리비\n(백만원)' } },
{ name: 'DRDG_ETND_SM', fieldName: 'DRDG_ETND_SM', header: { text: '처리량 계\n(톤)' } },
{ name: 'RCLM', fieldName: 'RCLM', header: { text: '매립' } },
{ name: 'OCEAN_DPSL', fieldName: 'OCEAN_DPSL', header: { text: '해양투기' } },
{ name: 'RUSE', fieldName: 'RUSE', header: { text: '재활용' } },
{ name: 'ETC', fieldName: 'ETC', header: { text: '기타\n(소각, 고형화,\n시멘트원료 등)' } },
/* 7. 기타 및 의견 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{
name: 'addrGroup',
header: { text: '행정구역' },
items: ['SIDO', 'GUGUN'],
},
'YR_GBN',
'PIPL_FCLTY_EXTN',
{
name: 'drdgGroup',
header: { text: '준설연장 및 개소수' },
items: [
{
name: 'pipeLenGroup',
header: { text: '관로(m)' },
items: [
'DRDG_PIPE_SM', 'DRDG_CMBN_PIPE',
{ name: 'sepRepairGroup', header: { text: '분류식' }, items: ['DRDG_RAINWTR_PIPE', 'DRDG_PLTWTR_PIPE'] }
]
},
'MNHLE_SITE', 'PLTWTR_RCVR_SITE', 'SOILSPLL_SOILHOLE_SITE'
]
},
'DRDG_TRGET_EXTN', 'DRDG_TRGET_RT', 'PIPL_FCLTY_RT',
{
name: 'acmsltGroup',
header: { text: '준설실적' },
items: ['DRDG_ACMSLT_AMOUNT', 'DRDG_ACMSLT_QY']
},
{
name: 'processGroup',
header: { text: '준설토사처리' },
items: ['DRDG_ACMSLT_UNTPC', 'DRDG_ETND_SM', 'RCLM', 'OCEAN_DPSL', 'RUSE', 'ETC']
},
'RMK'
]
}
/* 7. 기타 및 의견 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{
name: 'addrGroup',
header: { text: '행정구역' },
items: ['SIDO', 'GUGUN'],
},
'YR_GBN',
'PIPL_FCLTY_EXTN',
{
name: 'drdgGroup',
header: { text: '준설연장 및 개소수' },
items: [
{
name: 'pipeLenGroup',
header: { text: '관로(m)' },
items: [
'DRDG_PIPE_SM', 'DRDG_CMBN_PIPE',
{ name: 'sepRepairGroup', header: { text: '분류식' }, items: ['DRDG_RAINWTR_PIPE', 'DRDG_PLTWTR_PIPE'] }
]
},
'MNHLE_SITE', 'PLTWTR_RCVR_SITE', 'SOILSPLL_SOILHOLE_SITE'
]
},
'DRDG_TRGET_EXTN', 'DRDG_TRGET_RT', 'PIPL_FCLTY_RT',
{
name: 'acmsltGroup',
header: { text: '준설실적' },
items: ['DRDG_ACMSLT_AMOUNT', 'DRDG_ACMSLT_QY']
},
{
name: 'processGroup',
header: { text: '준설토사처리' },
items: ['DRDG_ACMSLT_UNTPC', 'DRDG_ETND_SM', 'RCLM', 'OCEAN_DPSL', 'RUSE', 'ETC']
},
'RMK'
]
}
];
export const SewagePipeMaintainColumnInfoList = rawMaintainList.map(tab => ({
...tab,
columns: tab.columns.map(col => ({
...col,
editable: false
}))
}));
@@ -1,9 +1,13 @@
export const SewageReservoirPumpInfoListRvw = [{
import type { GridView, DataColumn } from "@/components/type/DataGrid.type";
import { getFooterSummary } from "@/components/util/grid/footerSummary";
const rawReservoirList = [
{
tabKey: 'a',
tabLabel: '하수저류시설',
rowStartNum: 3, // 3단 헤더 구조 (순번 rowspan="3")
fixedColumns: 2, // 순번, 시도, 시군구, 시설명까지 고정
rowStartNum: 3,
fixedColumns: 2,
columns: [
/* 1. 기본 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
@@ -24,17 +28,14 @@ export const SewageReservoirPumpInfoListRvw = [{
/* 3. 펌프시설 (공통/1/2/3) */
{ name: 'TOT_CPCTY', fieldName: 'TOT_CPCTY', header: { text: '총양수량\n(㎥/min)' } },
// 펌프1
{ name: 'PUMP_CALBR', fieldName: 'PUMP_CALBR', header: { text: '구경(mm)' } },
{ name: 'WP_CPCTY', fieldName: 'WP_CPCTY', header: { text: '대당 양수량' } },
{ name: 'PUMP_CO', fieldName: 'PUMP_CO', header: { text: '펌프대수' } },
{ name: 'PUMP_PREPAR_CO', fieldName: 'PUMP_PREPAR_CO', header: { text: '예비펌프대수' } },
// 펌프2
{ name: 'PUMP_CALBR2', fieldName: 'PUMP_CALBR2', header: { text: '구경(mm)' } },
{ name: 'WP_CPCTY2', fieldName: 'WP_CPCTY2', header: { text: '대당 양수량' } },
{ name: 'PUMP_CO2', fieldName: 'PUMP_CO2', header: { text: '펌프대수' } },
{ name: 'PUMP_PREPAR_CO2', fieldName: 'PUMP_PREPAR_CO2', header: { text: '예비펌프대수' } },
// 펌프3
{ name: 'PUMP_CALBR3', fieldName: 'PUMP_CALBR3', header: { text: '구경(mm)' } },
{ name: 'WP_CPCTY3', fieldName: 'WP_CPCTY3', header: { text: '대당 양수량' } },
{ name: 'PUMP_CO3', fieldName: 'PUMP_CO3', header: { text: '펌프대수' } },
@@ -62,8 +63,7 @@ export const SewageReservoirPumpInfoListRvw = [{
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'SWGE_STRGE_NM', 'ADDR', 'YR_GBN',
'RN_DT', 'PL_DSGN_FRQNC',
'SWGE_STRGE_NM', 'ADDR', 'YR_GBN', 'RN_DT', 'PL_DSGN_FRQNC',
{
name: 'purposeGroup',
header: { text: '설치목적(O,X로 표기, 중복체크 가능)' },
@@ -105,111 +105,91 @@ export const SewageReservoirPumpInfoListRvw = [{
]
},
{
tabKey: 'b',
tabLabel: '빗물펌프장',
rowStartNum: 3, // 3단 헤더 구조 (순번 rowspan="3")
fixedColumns: 2, // 순번, 시도, 시군구, 시설명까지 고정
columns: [
/* 1. 기본 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'SWGE_STRGE_NM', fieldName: 'SWGE_STRGE_NM', header: { text: '시설명' } },
{ name: 'ADDR', fieldName: 'ADDR', header: { text: '위치' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
tabKey: 'b',
tabLabel: '빗물펌프장',
rowStartNum: 3,
fixedColumns: 2,
columns: [
/* 1. 기본 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'SWGE_STRGE_NM', fieldName: 'SWGE_STRGE_NM', header: { text: '시설명' } },
{ name: 'ADDR', fieldName: 'ADDR', header: { text: '위치' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
/* 2. 시설 제원 */
{ name: 'FCT_KND', fieldName: 'FCT_KND', header: { text: '시설물종류' } },
{ name: 'RN_DT', fieldName: 'RN_DT', header: { text: '가동개시\n년월일' } },
{ name: 'PL_DSGN_FRQNC', fieldName: 'PL_DSGN_FRQNC', header: { text: '계획설계빈도' } },
{ name: 'DGR_AR', fieldName: 'DGR_AR', header: { text: '집수구역면적(㎢)' } },
/* 2. 시설 제원 */
{ name: 'FCT_KND', fieldName: 'FCT_KND', header: { text: '시설물종류' } },
{ name: 'RN_DT', fieldName: 'RN_DT', header: { text: '가동개시\n년월일' } },
{ name: 'PL_DSGN_FRQNC', fieldName: 'PL_DSGN_FRQNC', header: { text: '계획설계빈도' } },
{ name: 'DGR_AR', fieldName: 'DGR_AR', header: { text: '집수구역면적(㎢)' } },
/* 3. 유수지 및 흡수정 */
{ name: 'REV_FNNC', fieldName: 'REV_FNNC', header: { text: '유수지유무\n(유,무)' } },
{ name: 'REV_CPCTY', fieldName: 'REV_CPCTY', header: { text: '저류량(㎥)' } }, // 유수지 저류량
{ name: 'ABS_CPCTY', fieldName: 'ABS_CPCTY', header: { text: '저류량(㎥)' } }, // 흡수정 저류량
{ name: 'SWGE_SGBS_CPCTY', fieldName: 'SWGE_SGBS_CPCTY', header: { text: '시설용량(㎥)' } },
/* 3. 유수지 및 흡수정 */
{ name: 'REV_FNNC', fieldName: 'REV_FNNC', header: { text: '유수지유무\n(유,무)' } },
{ name: 'REV_CPCTY', fieldName: 'REV_CPCTY', header: { text: '저류량(㎥)' } },
{ name: 'ABS_CPCTY', fieldName: 'ABS_CPCTY', header: { text: '저류량(㎥)' } },
{ name: 'SWGE_SGBS_CPCTY', fieldName: 'SWGE_SGBS_CPCTY', header: { text: '시설용량(㎥)' } },
/* 4. 펌프시설 (공통/1/2/3) */
{ name: 'TOT_CPCTY', fieldName: 'TOT_CPCTY', header: { text: '총양수량\n(㎥/min)' } },
// 펌프1
{ name: 'PUMP_CALBR', fieldName: 'PUMP_CALBR', header: { text: '구경(mm)' } },
{ name: 'WP_CPCTY', fieldName: 'WP_CPCTY', header: { text: '대당 양수량' } },
{ name: 'PUMP_CO', fieldName: 'PUMP_CO', header: { text: '펌프대수' } },
{ name: 'PUMP_PREPAR_CO', fieldName: 'PUMP_PREPAR_CO', header: { text: '예비펌프대수' } },
// 펌프2
{ name: 'PUMP_CALBR2', fieldName: 'PUMP_CALBR2', header: { text: '구경(mm)' } },
{ name: 'WP_CPCTY2', fieldName: 'WP_CPCTY2', header: { text: '대당 양수량' } },
{ name: 'PUMP_CO2', fieldName: 'PUMP_CO2', header: { text: '펌프대수' } },
{ name: 'PUMP_PREPAR_CO2', fieldName: 'PUMP_PREPAR_CO2', header: { text: '예비펌프대수' } },
// 펌프3
{ name: 'PUMP_CALBR3', fieldName: 'PUMP_CALBR3', header: { text: '구경(mm)' } },
{ name: 'WP_CPCTY3', fieldName: 'WP_CPCTY3', header: { text: '대당 양수량' } },
{ name: 'PUMP_CO3', fieldName: 'PUMP_CO3', header: { text: '펌프대수' } },
{ name: 'PUMP_PREPAR_CO3', fieldName: 'PUMP_PREPAR_CO3', header: { text: '예비펌프대수' } },
/* 4. 펌프시설 (공통/1/2/3) */
{ name: 'TOT_CPCTY', fieldName: 'TOT_CPCTY', header: { text: '총양수량\n(㎥/min)' } },
{ name: 'PUMP_CALBR', fieldName: 'PUMP_CALBR', header: { text: '구경(mm)' } },
{ name: 'WP_CPCTY', fieldName: 'WP_CPCTY', header: { text: '대당 양수량' } },
{ name: 'PUMP_CO', fieldName: 'PUMP_CO', header: { text: '펌프대수' } },
{ name: 'PUMP_PREPAR_CO', fieldName: 'PUMP_PREPAR_CO', header: { text: '예비펌프대수' } },
{ name: 'PUMP_CALBR2', fieldName: 'PUMP_CALBR2', header: { text: '구경(mm)' } },
{ name: 'WP_CPCTY2', fieldName: 'WP_CPCTY2', header: { text: '대당 양수량' } },
{ name: 'PUMP_CO2', fieldName: 'PUMP_CO2', header: { text: '펌프대수' } },
{ name: 'PUMP_PREPAR_CO2', fieldName: 'PUMP_PREPAR_CO2', header: { text: '예비펌프대수' } },
{ name: 'PUMP_CALBR3', fieldName: 'PUMP_CALBR3', header: { text: '구경(mm)' } },
{ name: 'WP_CPCTY3', fieldName: 'WP_CPCTY3', header: { text: '대당 양수량' } },
{ name: 'PUMP_CO3', fieldName: 'PUMP_CO3', header: { text: '펌프대수' } },
{ name: 'PUMP_PREPAR_CO3', fieldName: 'PUMP_PREPAR_CO3', header: { text: '예비펌프대수' } },
/* 5. 부대시설 및 기타 */
{ name: 'FRE_FNNC', fieldName: 'FRE_FNNC', header: { text: '전처리시설' } },
{ name: 'DORZEQP_FNNC', fieldName: 'DORZEQP_FNNC', header: { text: '탈취설비' } },
{ name: 'SELF_ETRQ_FNNC', fieldName: 'SELF_ETRQ_FNNC', header: { text: '자가발전' } },
{ name: 'DIS_WAT', fieldName: 'DIS_WAT', header: { text: '방류수역' } },
/* 5. 부대시설 및 기타 */
{ name: 'FRE_FNNC', fieldName: 'FRE_FNNC', header: { text: '전처리시설' } },
{ name: 'DORZEQP_FNNC', fieldName: 'DORZEQP_FNNC', header: { text: '탈취설비' } },
{ name: 'SELF_ETRQ_FNNC', fieldName: 'SELF_ETRQ_FNNC', header: { text: '자가발전' } },
{ name: 'DIS_WAT', fieldName: 'DIS_WAT', header: { text: '방류수역' } },
/* 6. 최종처분량 및 방법 */
{ name: 'SDMT_TRE_CPCTY', fieldName: 'SDMT_TRE_CPCTY', header: { text: '침사(량)' } },
{ name: 'IPRT_TRE_CPCTY', fieldName: 'IPRT_TRE_CPCTY', header: { text: '협잡물(량)' } },
{ name: 'SDMT_TRE_MTH', fieldName: 'SDMT_TRE_MTH', header: { text: '침사(방법)' } },
{ name: 'IPRT_TRE_MTH', fieldName: 'IPRT_TRE_MTH', header: { text: '협잡물(방법)' } },
/* 6. 최종처분량 및 방법 */
{ name: 'SDMT_TRE_CPCTY', fieldName: 'SDMT_TRE_CPCTY', header: { text: '침사(량)' } },
{ name: 'IPRT_TRE_CPCTY', fieldName: 'IPRT_TRE_CPCTY', header: { text: '협잡물(량)' } },
{ name: 'SDMT_TRE_MTH', fieldName: 'SDMT_TRE_MTH', header: { text: '침사(방법)' } },
{ name: 'IPRT_TRE_MTH', fieldName: 'IPRT_TRE_MTH', header: { text: '협잡물(방법)' } },
/* 7. 운영실적 */
{ name: 'YRSTP_RN_DYN', fieldName: 'YRSTP_RN_DYN', header: { text: '가동일수' } },
{ name: 'DSPLCMNT_AMNT', fieldName: 'DSPLCMNT_AMNT', header: { text: '총배수량\n(㎥/년)' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'SWGE_STRGE_NM', 'ADDR', 'YR_GBN', 'FCT_KND', 'RN_DT', 'PL_DSGN_FRQNC', 'DGR_AR',
{
name: 'revGroup',
header: { text: '유수지' },
items: ['REV_FNNC', 'REV_CPCTY']
},
{
name: 'absGroup',
header: { text: '흡수정' },
items: ['ABS_CPCTY']
},
'SWGE_SGBS_CPCTY',
{
name: 'pumpMainGroup',
header: { text: '펌프시설' },
items: [
'TOT_CPCTY',
{ name: 'p1Group', header: { text: '펌프시설1' }, items: ['PUMP_CALBR', 'WP_CPCTY', 'PUMP_CO', 'PUMP_PREPAR_CO'] },
{ name: 'p2Group', header: { text: '펌프시설2' }, items: ['PUMP_CALBR2', 'WP_CPCTY2', 'PUMP_CO2', 'PUMP_PREPAR_CO2'] },
{ name: 'p3Group', header: { text: '펌프시설3' }, items: ['PUMP_CALBR3', 'WP_CPCTY3', 'PUMP_CO3', 'PUMP_PREPAR_CO3'] }
]
},
{
name: 'subFacGroup',
header: { text: '부대시설' },
items: ['FRE_FNNC', 'DORZEQP_FNNC', 'SELF_ETRQ_FNNC']
},
'DIS_WAT',
{
name: 'disposalAmtGroup',
header: { text: '최종처분량(ton/년)' },
items: ['SDMT_TRE_CPCTY', 'IPRT_TRE_CPCTY']
},
{
name: 'disposalMthGroup',
header: { text: '최종처분방법' },
items: ['SDMT_TRE_MTH', 'IPRT_TRE_MTH']
},
{
name: 'opGroup',
header: { text: '운영실적' },
items: ['YRSTP_RN_DYN', 'DSPLCMNT_AMNT']
},
'RMK'
]
}
];
/* 7. 운영실적 */
{ name: 'YRSTP_RN_DYN', fieldName: 'YRSTP_RN_DYN', header: { text: '가동일수' } },
{ name: 'DSPLCMNT_AMNT', fieldName: 'DSPLCMNT_AMNT', header: { text: '총배수량\n(㎥/년)' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'SWGE_STRGE_NM', 'ADDR', 'YR_GBN', 'FCT_KND', 'RN_DT', 'PL_DSGN_FRQNC', 'DGR_AR',
{ name: 'revGroup', header: { text: '유수지' }, items: ['REV_FNNC', 'REV_CPCTY'] },
{ name: 'absGroup', header: { text: '흡수정' }, items: ['ABS_CPCTY'] },
'SWGE_SGBS_CPCTY',
{
name: 'pumpMainGroup', header: { text: '펌프시설' },
items: [
'TOT_CPCTY',
{ name: 'p1Group', header: { text: '펌프시설1' }, items: ['PUMP_CALBR', 'WP_CPCTY', 'PUMP_CO', 'PUMP_PREPAR_CO'] },
{ name: 'p2Group', header: { text: '펌프시설2' }, items: ['PUMP_CALBR2', 'WP_CPCTY2', 'PUMP_CO2', 'PUMP_PREPAR_CO2'] },
{ name: 'p3Group', header: { text: '펌프시설3' }, items: ['PUMP_CALBR3', 'WP_CPCTY3', 'PUMP_CO3', 'PUMP_PREPAR_CO3'] }
]
},
{ name: 'subFacGroup', header: { text: '부대시설' }, items: ['FRE_FNNC', 'DORZEQP_FNNC', 'SELF_ETRQ_FNNC'] },
'DIS_WAT',
{ name: 'disposalAmtGroup', header: { text: '최종처분량(ton/년)' }, items: ['SDMT_TRE_CPCTY', 'IPRT_TRE_CPCTY'] },
{ name: 'disposalMthGroup', header: { text: '최종처분방법' }, items: ['SDMT_TRE_MTH', 'IPRT_TRE_MTH'] },
{ name: 'opGroup', header: { text: '운영실적' }, items: ['YRSTP_RN_DYN', 'DSPLCMNT_AMNT'] },
'RMK'
]
}
];
export const SewageReservoirPumpInfoListRvw = rawReservoirList.map(tab => ({
...tab,
columns: tab.columns.map(col => ({
...col,
editable: false
}))
}));
@@ -1,11 +1,14 @@
export const SewerageFinanceInfoListRvw= [
import type { GridView, DataColumn } from "@/components/type/DataGrid.type";
import { getFooterSummary } from "@/components/util/grid/footerSummary";
const rawFinanceList = [
{
tabKey: 'a',
tabLabel: '하수도재정 결산',
rowStartNum: 3, // 3단 헤더 구조 반영
fixedColumns: 1, // 순번, 시도, 시군구, 행정코드, 구분까지 고정
rowStartNum: 3,
fixedColumns: 1,
columns: [
/* 1. 기본 정보 (Band: Left) */
/* 1. 기본 정보 */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
@@ -24,35 +27,27 @@ export const SewerageFinanceInfoListRvw= [
/* 4. 용도별 사업비 (지출) */
{ name: 'PRPOS_WCT_SM', fieldName: 'PRPOS_WCT_SM', header: { text: '계' } },
// 처리장 상세
{ name: 'PRCPLT_SM', fieldName: 'PRCPLT_SM', header: { text: '소계' } },
{ name: 'PRCPLT_FCLTY', fieldName: 'PRCPLT_FCLTY', header: { text: '시설비' } },
{ name: 'PRCPLT_RPAIR', fieldName: 'PRCPLT_RPAIR', header: { text: '개보수비' } },
{ name: 'PRCPLT_ORPNS', fieldName: 'PRCPLT_ORPNS', header: { text: '운영\n유지비' } },
{ name: 'PRCPLT_ETC', fieldName: 'PRCPLT_ETC', header: { text: '기타' } },
// 하수관로 상세
{ name: 'SEWAGE_SM', fieldName: 'SEWAGE_SM', header: { text: '소계' } },
{ name: 'SEWAGE_FCLTY', fieldName: 'SEWAGE_FCLTY', header: { text: '시설비' } },
{ name: 'SEWAGE_RPAIR', fieldName: 'SEWAGE_RPAIR', header: { text: '개보수비' } },
{ name: 'SEWAGE_ORPNS', fieldName: 'SEWAGE_ORPNS', header: { text: '운영\n유지비' } },
{ name: 'SEWAGE_ETC', fieldName: 'SEWAGE_ETC', header: { text: '기타' } },
// 유수지 및 배수펌프장 상세
{ name: 'SWGE_STRGE_SM', fieldName: 'SWGE_STRGE_SM', header: { text: '소계' } },
{ name: 'SWGE_STRGE_FCLTY', fieldName: 'SWGE_STRGE_FCLTY', header: { text: '시설비' } },
{ name: 'SWGE_STRGE_RPAIR', fieldName: 'SWGE_STRGE_RPAIR', header: { text: '개보수비' } },
{ name: 'SWGE_STRGE_ORPNS', fieldName: 'SWGE_STRGE_ORPNS', header: { text: '운영\n유지비' } },
{ name: 'SWGE_STRGE_ETC', fieldName: 'SWGE_STRGE_ETC', header: { text: '기타' } },
// 기타 지출
{ name: 'ETC_SM', fieldName: 'ETC_SM', header: { text: '소계' } },
{ name: 'ACDNT_CYFD_AMOUNT', fieldName: 'ACDNT_CYFD_AMOUNT', header: { text: '사고\n이월액' } },
{ name: 'UNRCIV_AMOUNT', fieldName: 'UNRCIV_AMOUNT', header: { text: '미수납액' } },
{ name: 'ETC_AMOUNT', fieldName: 'ETC_AMOUNT', header: { text: '기타' } },
/* 5. 비고 및 의견 */
/* 5. 비고 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
@@ -82,220 +77,143 @@ export const SewerageFinanceInfoListRvw= [
]
},
{
tabKey: 'b',
tabLabel: '하수도 요금',
rowStartNum: 2, // 2단 헤더 구조 반영
fixedColumns: 1, // 순번, 시도, 시군구, 행정코드까지 고정
columns: [
/* 1. 행정 및 기본 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
/* 2. 요금 분석 데이터 */
{
name: 'FYER_LEVY_QY',
fieldName: 'FYER_LEVY_QY',
header: { text: '연간조정량\n(㎥)\n(A)' }
},
{
name: 'LEVY_AMOUNT',
fieldName: 'LEVY_AMOUNT',
header: { text: '하수도사용료수익\n(원)\n(B)' }
},
{
name: 'AVRG_UNTPC',
fieldName: 'AVRG_UNTPC',
header: { text: '㎥당요금(원/㎥)\nC=(B/A)' }
},
{
name: 'SMRIZE_PRMPC',
fieldName: 'SMRIZE_PRMPC',
header: { text: '총괄원가(원)\n(D)' }
},
{
name: 'SMRIZE_UNIT_PRMPC',
fieldName: 'SMRIZE_UNIT_PRMPC',
header: { text: '㎥당원가(원/㎥)\nE=(D/A)' }
},
{
name: 'RLTY_RT',
fieldName: 'RLTY_RT',
header: { text: '요금현실화율(%)\nF=(C/E*100)' }
},
tabKey: 'b',
tabLabel: '하수도 요금',
rowStartNum: 2,
fixedColumns: 1,
columns: [
/* 1. 행정 및 기본 정보 */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
/* 2. 요금 분석 데이터 */
{ name: 'FYER_LEVY_QY', fieldName: 'FYER_LEVY_QY', header: { text: '연간조정량\n(㎥)\n(A)' } },
{ name: 'LEVY_AMOUNT', fieldName: 'LEVY_AMOUNT', header: { text: '하수도사용료수익\n(원)\n(B)' } },
{ name: 'AVRG_UNTPC', fieldName: 'AVRG_UNTPC', header: { text: '㎥당요금(원/㎥)\nC=(B/A)' } },
{ name: 'SMRIZE_PRMPC', fieldName: 'SMRIZE_PRMPC', header: { text: '총괄원가(원)\n(D)' } },
{ name: 'SMRIZE_UNIT_PRMPC', fieldName: 'SMRIZE_UNIT_PRMPC', header: { text: '㎥당원가(원/㎥)\nE=(D/A)' } },
{ name: 'RLTY_RT', fieldName: 'RLTY_RT', header: { text: '요금현실화율(%)\nF=(C/E*100)' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'FYER_LEVY_QY', 'LEVY_AMOUNT', 'AVRG_UNTPC', 'SMRIZE_PRMPC', 'SMRIZE_UNIT_PRMPC', 'RLTY_RT', 'RMK'
]
},
{
tabKey: 'c',
tabLabel: '하수도 사용료',
rowStartNum: 2,
fixedColumns: 1,
columns: [
/* 1. 기본 정보 */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
/* 2. 데이터 필드 */
{ name: 'LEVY_AMOUNT', fieldName: 'LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'LEVY_QY', fieldName: 'LEVY_QY', header: { text: '부과량' } },
{ name: 'HOME_LEVY_AMOUNT', fieldName: 'HOME_LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'HOME_LEVY_QY', fieldName: 'HOME_LEVY_QY', header: { text: '부과량' } },
{ name: 'HOME_UNTPC', fieldName: 'HOME_UNTPC', header: { text: '단가' } },
{ name: 'JOB_LEVY_AMOUNT', fieldName: 'JOB_LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'JOB_LEVY_QY', fieldName: 'JOB_LEVY_QY', header: { text: '부과량' } },
{ name: 'JOB_UNTPC', fieldName: 'JOB_UNTPC', header: { text: '단가' } },
{ name: 'BSN_LEVY_AMOUNT', fieldName: 'BSN_LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'BSN_LEVY_QY', fieldName: 'BSN_LEVY_QY', header: { text: '부과량' } },
{ name: 'BSN_UNTPC', fieldName: 'BSN_UNTPC', header: { text: '단가' } },
{ name: 'BATHS1_LEVY_AMOUNT', fieldName: 'BATHS1_LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'BATHS1_LEVY_QY', fieldName: 'BATHS1_LEVY_QY', header: { text: '부과량' } },
{ name: 'BATHS1_UNTPC', fieldName: 'BATHS1_UNTPC', header: { text: '단가' } },
{ name: 'BATHS2_LEVY_AMOUNT', fieldName: 'BATHS2_LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'BATHS2_LEVY_QY', fieldName: 'BATHS2_LEVY_QY', header: { text: '부과량' } },
{ name: 'BATHS2_UNTPC', fieldName: 'BATHS2_UNTPC', header: { text: '단가' } },
{ name: 'INDUST_LEVY_AMOUNT', fieldName: 'INDUST_LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'INDUST_LEVY_QY', fieldName: 'INDUST_LEVY_QY', header: { text: '부과량' } },
{ name: 'INDUST_UNTPC', fieldName: 'INDUST_UNTPC', header: { text: '단가' } },
{ name: 'ETC_LEVY_AMOUNT', fieldName: 'ETC_LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'ETC_LEVY_QY', fieldName: 'ETC_LEVY_QY', header: { text: '부과량' } },
{ name: 'ETC_UNTPC', fieldName: 'ETC_UNTPC', header: { text: '단가' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
{
name: 'totalGroup', header: { text: '총계' },
items: [{ name: 'tAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['LEVY_AMOUNT'] }, { name: 'tQyUnit', header: { text: '부과량\n(천톤)' }, items: ['LEVY_QY'] }]
},
{
name: 'homeGroup', header: { text: '가 정 용' },
items: [{ name: 'hAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['HOME_LEVY_AMOUNT'] }, { name: 'hQyUnit', header: { text: '부과량\n(천톤)' }, items: ['HOME_LEVY_QY'] }, { name: 'hUntUnit', header: { text: '단가\n(원/톤)' }, items: ['HOME_UNTPC'] }]
},
{
name: 'jobGroup', header: { text: '업 무 용' },
items: [{ name: 'jAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['JOB_LEVY_AMOUNT'] }, { name: 'jQyUnit', header: { text: '부과량\n(천톤)' }, items: ['JOB_LEVY_QY'] }, { name: 'jUntUnit', header: { text: '단가\n(원/톤)' }, items: ['JOB_UNTPC'] }]
},
{
name: 'bsnGroup', header: { text: '영 업 용(일 반 용)' },
items: [{ name: 'bAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['BSN_LEVY_AMOUNT'] }, { name: 'bQyUnit', header: { text: '부과량\n(천톤)' }, items: ['BSN_LEVY_QY'] }, { name: 'bUntUnit', header: { text: '단가\n(원/톤)' }, items: ['BSN_UNTPC'] }]
},
{
name: 'bath1Group', header: { text: '욕 탕 1종(대중탕용)' },
items: [{ name: 'bt1AmtUnit', header: { text: '부과액\n(백만원)' }, items: ['BATHS1_LEVY_AMOUNT'] }, { name: 'bt1QyUnit', header: { text: '부과량\n(천톤)' }, items: ['BATHS1_LEVY_QY'] }, { name: 'bt1UntUnit', header: { text: '단가\n(원/톤)' }, items: ['BATHS1_UNTPC'] }]
},
{
name: 'bath2Group', header: { text: '욕 탕 2종' },
items: [{ name: 'bt2AmtUnit', header: { text: '부과액\n(백만원)' }, items: ['BATHS2_LEVY_AMOUNT'] }, { name: 'bt2QyUnit', header: { text: '부과량\n(천톤)' }, items: ['BATHS2_LEVY_QY'] }, { name: 'bt2UntUnit', header: { text: '단가\n(원/톤)' }, items: ['BATHS2_UNTPC'] }]
},
{
name: 'industGroup', header: { text: '산업용 및 공업용' },
items: [{ name: 'iAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['INDUST_LEVY_AMOUNT'] }, { name: 'iQyUnit', header: { text: '부과량\n(천톤)' }, items: ['INDUST_LEVY_QY'] }, { name: 'iUntUnit', header: { text: '단가\n(원/톤)' }, items: ['INDUST_UNTPC'] }]
},
{
name: 'etcGroup', header: { text: '기타' },
items: [{ name: 'eAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['ETC_LEVY_AMOUNT'] }, { name: 'eQyUnit', header: { text: '부과량\n(천톤)' }, items: ['ETC_LEVY_QY'] }, { name: 'eUntUnit', header: { text: '단가\n(원/톤)' }, items: ['ETC_UNTPC'] }]
},
'RMK'
]
},
{
tabKey: 'd',
tabLabel: '원인자부담금',
rowStartNum: 3,
fixedColumns: 2,
columns: [
/* 1. 기본 정보 */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
/* 3. 기타 및 의견 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }
],
columnLayout: [
{
name: 'addrGroup',
header: { text: '행정구역' },
items: ['SIDO', 'GUGUN'],
},
'FYER_LEVY_QY',
'LEVY_AMOUNT',
'AVRG_UNTPC',
'SMRIZE_PRMPC',
'SMRIZE_UNIT_PRMPC',
'RLTY_RT',
'RMK'
]
},
{
tabKey: 'c',
tabLabel: '하수도 사용료',
rowStartNum: 2,
fixedColumns: 1,
columns: [
/* 1. 기본 정보 */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
/* 2. 데이터 필드 */
{ name: 'LEVY_CO', fieldName: 'LEVY_CO', header: { text: '건수' } },
{ name: 'LEVY_AMOUNT', fieldName: 'LEVY_AMOUNT', header: { text: '금액(백만원)' } },
{ name: 'TRGET_LEV_STTUS_CO', fieldName: 'TRGET_LEV_STTUS_CO', header: { text: '건수' } },
{ name: 'TRGET_LEV_STTUS_AMOUNT', fieldName: 'TRGET_LEV_STTUS_AMOUNT', header: { text: '금액(백만원)' } },
{ name: 'DRNG_EQP_CO', fieldName: 'DRNG_EQP_CO', header: { text: '건수' } },
{ name: 'DRNG_EQP_AMOUNT', fieldName: 'DRNG_EQP_AMOUNT', header: { text: '금액(백만원)' } },
{ name: 'CNTRWK_CO', fieldName: 'CNTRWK_CO', header: { text: '건수' } },
{ name: 'CNTRWK_AMOUNT', fieldName: 'CNTRWK_AMOUNT', header: { text: '금액(백만원)' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'YR_GBN',
{ name: 'levyMainGroup', header: { text: '부과액' }, items: ['LEVY_CO', 'LEVY_AMOUNT'] },
{
name: 'collectGroup', header: { text: '대상별 징수현황' },
items: [
{ name: 'collectTotal', header: { text: '계' }, items: ['TRGET_LEV_STTUS_CO', 'TRGET_LEV_STTUS_AMOUNT'] },
{ name: 'contractorGroup', header: { text: '배수설비설치자\n(하수도법 제61조 제1항)' }, items: ['DRNG_EQP_CO', 'DRNG_EQP_AMOUNT'] },
{ name: 'otherGroup', header: { text: '타공사·타행위자\n(하수도법 제61조 제2항)' }, items: ['CNTRWK_CO', 'CNTRWK_AMOUNT'] }
]
},
'RMK'
]
}
];
/* 2. 데이터 필드 정의 (header 필수 포함) */
{ name: 'LEVY_AMOUNT', fieldName: 'LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'LEVY_QY', fieldName: 'LEVY_QY', header: { text: '부과량' } },
{ name: 'HOME_LEVY_AMOUNT', fieldName: 'HOME_LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'HOME_LEVY_QY', fieldName: 'HOME_LEVY_QY', header: { text: '부과량' } },
{ name: 'HOME_UNTPC', fieldName: 'HOME_UNTPC', header: { text: '단가' } },
{ name: 'JOB_LEVY_AMOUNT', fieldName: 'JOB_LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'JOB_LEVY_QY', fieldName: 'JOB_LEVY_QY', header: { text: '부과량' } },
{ name: 'JOB_UNTPC', fieldName: 'JOB_UNTPC', header: { text: '단가' } },
{ name: 'BSN_LEVY_AMOUNT', fieldName: 'BSN_LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'BSN_LEVY_QY', fieldName: 'BSN_LEVY_QY', header: { text: '부과량' } },
{ name: 'BSN_UNTPC', fieldName: 'BSN_UNTPC', header: { text: '단가' } },
{ name: 'BATHS1_LEVY_AMOUNT', fieldName: 'BATHS1_LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'BATHS1_LEVY_QY', fieldName: 'BATHS1_LEVY_QY', header: { text: '부과량' } },
{ name: 'BATHS1_UNTPC', fieldName: 'BATHS1_UNTPC', header: { text: '단가' } },
{ name: 'BATHS2_LEVY_AMOUNT', fieldName: 'BATHS2_LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'BATHS2_LEVY_QY', fieldName: 'BATHS2_LEVY_QY', header: { text: '부과량' } },
{ name: 'BATHS2_UNTPC', fieldName: 'BATHS2_UNTPC', header: { text: '단가' } },
{ name: 'INDUST_LEVY_AMOUNT', fieldName: 'INDUST_LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'INDUST_LEVY_QY', fieldName: 'INDUST_LEVY_QY', header: { text: '부과량' } },
{ name: 'INDUST_UNTPC', fieldName: 'INDUST_UNTPC', header: { text: '단가' } },
{ name: 'ETC_LEVY_AMOUNT', fieldName: 'ETC_LEVY_AMOUNT', header: { text: '부과액' } },
{ name: 'ETC_LEVY_QY', fieldName: 'ETC_LEVY_QY', header: { text: '부과량' } },
{ name: 'ETC_UNTPC', fieldName: 'ETC_UNTPC', header: { text: '단가' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
{
name: 'totalGroup', header: { text: '총계' },
items: [
{ name: 'tAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['LEVY_AMOUNT'] }, // fieldName 제거, items 사용
{ name: 'tQyUnit', header: { text: '부과량\n(천톤)' }, items: ['LEVY_QY'] }
]
},
{
name: 'homeGroup', header: { text: '가 정 용' },
items: [
{ name: 'hAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['HOME_LEVY_AMOUNT'] },
{ name: 'hQyUnit', header: { text: '부과량\n(천톤)' }, items: ['HOME_LEVY_QY'] },
{ name: 'hUntUnit', header: { text: '단가\n(원/톤)' }, items: ['HOME_UNTPC'] }
]
},
{
name: 'jobGroup', header: { text: '업 무 용' },
items: [
{ name: 'jAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['JOB_LEVY_AMOUNT'] },
{ name: 'jQyUnit', header: { text: '부과량\n(천톤)' }, items: ['JOB_LEVY_QY'] },
{ name: 'jUntUnit', header: { text: '단가\n(원/톤)' }, items: ['JOB_UNTPC'] }
]
},
{
name: 'bsnGroup', header: { text: '영 업 용(일 반 용)' },
items: [
{ name: 'bAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['BSN_LEVY_AMOUNT'] },
{ name: 'bQyUnit', header: { text: '부과량\n(천톤)' }, items: ['BSN_LEVY_QY'] },
{ name: 'bUntUnit', header: { text: '단가\n(원/톤)' }, items: ['BSN_UNTPC'] }
]
},
{
name: 'bath1Group', header: { text: '욕 탕 1종(대중탕용)' },
items: [
{ name: 'bt1AmtUnit', header: { text: '부과액\n(백만원)' }, items: ['BATHS1_LEVY_AMOUNT'] },
{ name: 'bt1QyUnit', header: { text: '부과량\n(천톤)' }, items: ['BATHS1_LEVY_QY'] },
{ name: 'bt1UntUnit', header: { text: '단가\n(원/톤)' }, items: ['BATHS1_UNTPC'] }
]
},
{
name: 'bath2Group', header: { text: '욕 탕 2종' },
items: [
{ name: 'bt2AmtUnit', header: { text: '부과액\n(백만원)' }, items: ['BATHS2_LEVY_AMOUNT'] },
{ name: 'bt2QyUnit', header: { text: '부과량\n(천톤)' }, items: ['BATHS2_LEVY_QY'] },
{ name: 'bt2UntUnit', header: { text: '단가\n(원/톤)' }, items: ['BATHS2_UNTPC'] }
]
},
{
name: 'industGroup', header: { text: '산업용 및 공업용' },
items: [
{ name: 'iAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['INDUST_LEVY_AMOUNT'] },
{ name: 'iQyUnit', header: { text: '부과량\n(천톤)' }, items: ['INDUST_LEVY_QY'] },
{ name: 'iUntUnit', header: { text: '단가\n(원/톤)' }, items: ['INDUST_UNTPC'] }
]
},
{
name: 'etcGroup', header: { text: '기타' },
items: [
{ name: 'eAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['ETC_LEVY_AMOUNT'] },
{ name: 'eQyUnit', header: { text: '부과량\n(천톤)' }, items: ['ETC_LEVY_QY'] },
{ name: 'eUntUnit', header: { text: '단가\n(원/톤)' }, items: ['ETC_UNTPC'] }
]
},
'RMK'
]
},
{
tabKey: 'd',
tabLabel: '원인자부담금',
rowStartNum: 3, // 이미지처럼 3단 헤더이므로 데이터는 3행부터 시작
fixedColumns: 2,
columns: [
/* 1. 기본 정보 (header 필수 포함) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
/* 2. 데이터 필드 정의 (최하단 3행에 표시될 텍스트) */
{ name: 'LEVY_CO', fieldName: 'LEVY_CO', header: { text: '건수' } },
{ name: 'LEVY_AMOUNT', fieldName: 'LEVY_AMOUNT', header: { text: '금액(백만원)' } },
{ name: 'TRGET_LEV_STTUS_CO', fieldName: 'TRGET_LEV_STTUS_CO', header: { text: '건수' } },
{ name: 'TRGET_LEV_STTUS_AMOUNT', fieldName: 'TRGET_LEV_STTUS_AMOUNT', header: { text: '금액(백만원)' } },
{ name: 'DRNG_EQP_CO', fieldName: 'DRNG_EQP_CO', header: { text: '건수' } },
{ name: 'DRNG_EQP_AMOUNT', fieldName: 'DRNG_EQP_AMOUNT', header: { text: '금액(백만원)' } },
{ name: 'CNTRWK_CO', fieldName: 'CNTRWK_CO', header: { text: '건수' } },
{ name: 'CNTRWK_AMOUNT', fieldName: 'CNTRWK_AMOUNT', header: { text: '금액(백만원)' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'YR_GBN',
{
name: 'levyMainGroup',
header: { text: '부과액' },
items: ['LEVY_CO', 'LEVY_AMOUNT'] // 1단(부과액) > 2단(건수, 금액)
},
{
name: 'collectGroup',
header: { text: '대상별 징수현황' },
items: [
{
name: 'collectTotal',
header: { text: '계' },
items: ['TRGET_LEV_STTUS_CO', 'TRGET_LEV_STTUS_AMOUNT']
},
{
name: 'contractorGroup',
header: { text: '배수설비설치자\n(하수도법 제61조 제1항)' },
items: ['DRNG_EQP_CO', 'DRNG_EQP_AMOUNT']
},
{
name: 'otherGroup',
header: { text: '타공사·타행위자\n(하수도법 제61조 제2항)' },
items: ['CNTRWK_CO', 'CNTRWK_AMOUNT']
}
]
},
'RMK'
]
}
];
export const SewerageFinanceInfoListRvw = rawFinanceList.map(tab => ({
...tab,
columns: tab.columns.map(col => ({
...col,
editable: false
}))
}));
@@ -1,8 +1,12 @@
export const SewerageServiceLevelInfoListRvw=[{
import type { GridView, DataColumn } from "@/components/type/DataGrid.type";
import { getFooterSummary } from "@/components/util/grid/footerSummary";
const rawServiceLevelList = [
{
tabKey: 'a',
tabLabel: '민원',
rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2")
fixedColumns: 2, // 순번, 시도, 시군구, 구분까지 고정
rowStartNum: 2,
fixedColumns: 2,
columns: [
/* 1. 기본 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
@@ -49,57 +53,65 @@ export const SewerageServiceLevelInfoListRvw=[{
]
},
{
tabKey: 'b',
tabLabel: '주민친화시설',
rowStartNum: 2, // 2단 헤더 구조
fixedColumns: 5, // 순번, 시도, 시군구, 처리장명, 시설용량, 구분까지 고정
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: '처리장명' } },
{ name: 'FCT_CPC', fieldName: 'FCT_CPC', header: { text: '시설용량\n(㎥/일)' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
tabKey: 'b',
tabLabel: '주민친화시설',
rowStartNum: 2,
fixedColumns: 5,
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: '처리장명' } },
{ name: 'FCT_CPC', fieldName: 'FCT_CPC', header: { text: '시설용량\n(㎥/일)' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
/* 2. 처리장 전체 면적 */
{ name: 'PRCPLT_AR', fieldName: 'PRCPLT_AR', header: { text: '처리장\n면적(㎡)' } },
/* 2. 처리장 전체 면적 */
{ name: 'PRCPLT_AR', fieldName: 'PRCPLT_AR', header: { text: '처리장\n면적(㎡)' } },
/* 3. 주민친화시설 면적 상세 (단위: ㎡) */
{ name: 'TOTAL_AR', fieldName: 'TOTAL_AR', header: { text: '총계' } },
{ name: 'RESTRM_AR', fieldName: 'RESTRM_AR', header: { text: '휴게시설' } },
{ name: 'CHILDPLAY_AR', fieldName: 'CHILDPLAY_AR', header: { text: '어린이놀이공간' } },
{ name: 'ALSFC_AR', fieldName: 'ALSFC_AR', header: { text: '체력단련시설' } },
{ name: 'PLGRND_AR', fieldName: 'PLGRND_AR', header: { text: '운동시설' } },
{ name: 'PRKPLCE_AR', fieldName: 'PRKPLCE_AR', header: { text: '주차장' } },
{ name: 'CTLSTT_AR', fieldName: 'CTLSTT_AR', header: { text: '교육 및\n문화시설' } },
{ name: 'NRPRK_AR', fieldName: 'NRPRK_AR', header: { text: '습지조성\n(생태공원)' } },
{ name: 'ETC_AR', fieldName: 'ETC_AR', header: { text: '기타' } },
/* 3. 주민친화시설 면적 상세 (단위: ㎡) */
{ name: 'TOTAL_AR', fieldName: 'TOTAL_AR', header: { text: '총계' } },
{ name: 'RESTRM_AR', fieldName: 'RESTRM_AR', header: { text: '휴게시설' } },
{ name: 'CHILDPLAY_AR', fieldName: 'CHILDPLAY_AR', header: { text: '어린이놀이공간' } },
{ name: 'ALSFC_AR', fieldName: 'ALSFC_AR', header: { text: '체력단련시설' } },
{ name: 'PLGRND_AR', fieldName: 'PLGRND_AR', header: { text: '운동시설' } },
{ name: 'PRKPLCE_AR', fieldName: 'PRKPLCE_AR', header: { text: '주차장' } },
{ name: 'CTLSTT_AR', fieldName: 'CTLSTT_AR', header: { text: '교육 및\n문화시설' } },
{ name: 'NRPRK_AR', fieldName: 'NRPRK_AR', header: { text: '습지조성\n(생태공원)' } },
{ name: 'ETC_AR', fieldName: 'ETC_AR', header: { text: '기타' } },
/* 4. 비고 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'BSC_FCT_NM',
'FCT_CPC',
'YR_GBN',
'PRCPLT_AR',
{
name: 'friendlyFacilityGroup',
header: { text: '주민친화시설 면적(㎡)' },
items: [
'TOTAL_AR',
'RESTRM_AR',
'CHILDPLAY_AR',
'ALSFC_AR',
'PLGRND_AR',
'PRKPLCE_AR',
'CTLSTT_AR',
'NRPRK_AR',
'ETC_AR'
]
},
'RMK'
]
}
];
/* 4. 비고 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'BSC_FCT_NM',
'FCT_CPC',
'YR_GBN',
'PRCPLT_AR',
{
name: 'friendlyFacilityGroup',
header: { text: '주민친화시설 면적(㎡)' },
items: [
'TOTAL_AR',
'RESTRM_AR',
'CHILDPLAY_AR',
'ALSFC_AR',
'PLGRND_AR',
'PRKPLCE_AR',
'CTLSTT_AR',
'NRPRK_AR',
'ETC_AR'
]
},
'RMK'
]
}
];
export const SewerageServiceLevelInfoListRvw = rawServiceLevelList.map(tab => ({
...tab,
columns: tab.columns.map(col => ({
...col,
editable: false
}))
}));
@@ -1,11 +1,14 @@
import type { GridView, DataColumn } from "@/components/type/DataGrid.type";
import { getFooterSummary } from "@/components/util/grid/footerSummary";
export const WaterReuseInfoList=[{
const rawWaterReuseList = [
{
tabKey: 'a',
tabLabel: '공공하수처리수 재이용',
rowStartNum: 4,
fixedColumns: 2,
columns: [
/* 1. 기본 및 행정 정보 */
/* 1. 기본 및 행정 정보 */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
@@ -26,7 +29,7 @@ export const WaterReuseInfoList=[{
{ name: 'RSWTR_PIPE', fieldName: 'RSWTR_PIPE', header: { text: '공급관로길이\n(km)' } },
{ name: 'RSWTR_PUMP', fieldName: 'RSWTR_PUMP', header: { text: '공급펌프\n(톤/일)' } },
/* 4. 재이용 실적 - 총계 및 장내용수 (단위: 천톤/년) */
/* 4. 재이용 실적 - 총계 및 장내용수 */
{ name: 'USE_AMNT_TOTAL', fieldName: 'USE_AMNT_TOTAL', header: { text: '총계' } },
{ name: 'USE_AMNT_D01', fieldName: 'USE_AMNT_D01', header: { text: '계' } },
{ name: 'USE_AMNT_S01', fieldName: 'USE_AMNT_S01', header: { text: '세척수' } },
@@ -37,7 +40,7 @@ export const WaterReuseInfoList=[{
{ name: 'USE_AMNT_S06', fieldName: 'USE_AMNT_S06', header: { text: '장내중수도' } },
{ name: 'USE_AMNT_S07', fieldName: 'USE_AMNT_S07', header: { text: '장내기타용수' } },
/* 5. 재이용 실적 - 장외용수 (단위: 천톤/년) */
/* 5. 재이용 실적 - 장외용수 */
{ name: 'USE_AMNT_D02', fieldName: 'USE_AMNT_D02', header: { text: '계' } },
{ name: 'USE_AMNT_S11', fieldName: 'USE_AMNT_S11', header: { text: '청소·화장실\n용수' } },
{ name: 'USE_AMNT_S12', fieldName: 'USE_AMNT_S12', header: { text: '세척·살수용수' } },
@@ -114,7 +117,7 @@ export const WaterReuseInfoList=[{
tabLabel: '중수도 현황',
rowStartNum: 2,
columns: [
/* 1. 기본 및 시설 위치 정보 (Band: Left) */
/* 1. 기본 및 시설 위치 정보 */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'BILD_NM', fieldName: 'BILD_NM', header: { text: '건축물명/\n개발사업명' } },
@@ -127,48 +130,37 @@ export const WaterReuseInfoList=[{
{ name: 'COMP_DT', fieldName: 'COMP_DT', header: { text: '설치완료일\nyyyy-mm-dd' } },
{ name: 'RN_DT', fieldName: 'RN_DT', header: { text: '가동개시일\nyyyy-mm-dd' } },
/* 3. 시설현황 (단위: ㎡, ㎥/일) */
/* 3. 시설현황 */
{ name: 'TOTAR', fieldName: 'TOTAR', header: { text: '건축연면적\n(㎡)' } },
{ name: 'PROC_CPCTY', fieldName: 'PROC_CPCTY', header: { text: '처리용량\n(㎥/일)' } },
/* 4. 이용 실적 및 운영 정보 (단위: ㎥/년, 백만원/년) */
/* 4. 이용 실적 및 운영 정보 */
{ name: 'WATER_USE_CPCTY', fieldName: 'WATER_USE_CPCTY', header: { text: '물 사용량\n(㎥/년)' } },
{ name: 'RUSWTR_USE_SM', fieldName: 'RUSWTR_USE_SM', header: { text: '중수도\n이용량\n(㎥/년)' } },
{ name: 'SUB_USE_CPCTY', fieldName: 'SUB_USE_CPCTY', header: { text: '대체수\n이용량\n(㎥/년)' } },
{ name: 'RUSWTR_PRPOS', fieldName: 'RUSWTR_PRPOS', header: { text: '중수도용도' } },
{ name: 'FYER_OPER_CT', fieldName: 'FYER_OPER_CT', header: { text: '연간운영비\n(백만원/년)' } },
/* 5. 비고 및 의견 */
/* 5. 비고 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'BILD_NM',
'ADDR',
'YR_GBN',
'BILD_TP',
'LAW_YN',
'COMP_DT',
'RN_DT',
'BILD_NM', 'ADDR', 'YR_GBN', 'BILD_TP', 'LAW_YN', 'COMP_DT', 'RN_DT',
{
name: 'fctStatusGroup',
header: { text: '시설현황' },
items: ['TOTAR', 'PROC_CPCTY']
},
'WATER_USE_CPCTY',
'RUSWTR_USE_SM',
'SUB_USE_CPCTY',
'RUSWTR_PRPOS',
'FYER_OPER_CT',
'RMK'
'WATER_USE_CPCTY', 'RUSWTR_USE_SM', 'SUB_USE_CPCTY', 'RUSWTR_PRPOS', 'FYER_OPER_CT', 'RMK'
]
},
{
},
{
tabKey: 'c',
tabLabel: '빗물이용시설 현황',
rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2")
rowStartNum: 2,
columns: [
/* 1. 기본 및 행정 정보 (Band: Left) */
/* 1. 기본 및 행정 정보 */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'RWR_REUSE_FCT_NM', fieldName: 'RWR_REUSE_FCT_NM', header: { text: '시설명' } },
@@ -183,7 +175,7 @@ export const WaterReuseInfoList=[{
{ name: 'CCM', fieldName: 'CCM', header: { text: '집수면 종류' } },
{ name: 'TRTFC_ENNC', fieldName: 'TRTFC_ENNC', header: { text: '여과등\n처리시설\n유무' } },
/* 3. 시설 운영 실적 (단위: ㎥, ㎥/년, 백만원/년) */
/* 3. 시설 운영 실적 */
{ name: 'SGBS_CPCTY', fieldName: 'SGBS_CPCTY', header: { text: '저류조 용량\n(㎥)' } },
{ name: 'FYER_USEQTY', fieldName: 'FYER_USEQTY', header: { text: '연간 이용량\n(㎥/년)' } },
{ name: 'RWR_PRCUSE_PRPPOS', fieldName: 'RWR_PRCUSE_PRPPOS', header: { text: '이용용도' } },
@@ -194,26 +186,13 @@ export const WaterReuseInfoList=[{
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'RWR_REUSE_FCT_NM',
'YR_GBN',
'BILD_TP',
'ADDR',
'LAW_YN',
'RN_DT',
'INSTL_CT',
'CCM',
'TRTFC_ENNC',
'SGBS_CPCTY',
'FYER_USEQTY',
'RWR_PRCUSE_PRPPOS',
'FYER_OPER_CT',
'RMK'
'RWR_REUSE_FCT_NM', 'YR_GBN', 'BILD_TP', 'ADDR', 'LAW_YN', 'RN_DT', 'INSTL_CT', 'CCM', 'TRTFC_ENNC', 'SGBS_CPCTY', 'FYER_USEQTY', 'RWR_PRCUSE_PRPPOS', 'FYER_OPER_CT', 'RMK'
]
},
{
},
{
tabKey: 'd',
tabLabel: '하ㆍ폐수처리수 재이용시설 시공업 등록현황',
rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2")
rowStartNum: 2,
columns: [
/* 1. 기본 및 행정 정보 */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
@@ -233,19 +212,13 @@ export const WaterReuseInfoList=[{
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'YR_GBN',
'CMPNM',
'RPRSNTV',
'ADDR',
'CMPN_RGSDE',
'RMK'
'YR_GBN', 'CMPNM', 'RPRSNTV', 'ADDR', 'CMPN_RGSDE', 'RMK'
]
},
{
},
{
tabKey: 'e',
tabLabel: '하ㆍ폐수처리수 재이용시설 시공업 인가현황',
rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2")
rowStartNum: 2,
columns: [
/* 1. 기본 및 행정 정보 */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
@@ -263,12 +236,15 @@ export const WaterReuseInfoList=[{
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'YR_GBN',
'CMPNM',
'RPRSNTV',
'ADDR',
'CMPN_RGSDE',
'RMK'
'YR_GBN', 'CMPNM', 'RPRSNTV', 'ADDR', 'CMPN_RGSDE', 'RMK'
]
}
];
}
];
export const WaterReuseInfoList = rawWaterReuseList.map(tab => ({
...tab,
columns: tab.columns.map(col => ({
...col,
editable: false
}))
}));