diff --git a/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx b/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx
index 0bc14802e..2ffc89764 100644
--- a/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx
+++ b/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx
@@ -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 (
diff --git a/apps/st/src/components/statistics/review/PumpingStationRvw.tsx b/apps/st/src/components/statistics/review/PumpingStationRvw.tsx
index 1048ad40b..f33ef9396 100644
--- a/apps/st/src/components/statistics/review/PumpingStationRvw.tsx
+++ b/apps/st/src/components/statistics/review/PumpingStationRvw.tsx
@@ -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 (
<>
diff --git a/apps/st/src/components/statistics/review/SewageExcretaSlurgeRvw.tsx b/apps/st/src/components/statistics/review/SewageExcretaSlurgeRvw.tsx
index 2433ba89f..6293feb21 100644
--- a/apps/st/src/components/statistics/review/SewageExcretaSlurgeRvw.tsx
+++ b/apps/st/src/components/statistics/review/SewageExcretaSlurgeRvw.tsx
@@ -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 = () => {
-
+
>
);
};
diff --git a/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx b/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx
index 74c2f6f7c..14cdae786 100644
--- a/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx
+++ b/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx
@@ -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 = () => {
-
+
>
);
};
diff --git a/apps/st/src/components/statistics/review/SewagePipeRvw.tsx b/apps/st/src/components/statistics/review/SewagePipeRvw.tsx
index 634a21285..5f9c8d976 100644
--- a/apps/st/src/components/statistics/review/SewagePipeRvw.tsx
+++ b/apps/st/src/components/statistics/review/SewagePipeRvw.tsx
@@ -41,7 +41,7 @@ const SewagePipeRvw = () => {
-
+
>
);
};
diff --git a/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx b/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx
index 11684751d..7d4039d91 100644
--- a/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx
+++ b/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx
@@ -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 (
diff --git a/apps/st/src/components/util/column/review/PrivateSewageFacilityColumnRvw.ts b/apps/st/src/components/util/column/review/PrivateSewageFacilityColumnRvw.ts
index b83243be5..9e3d2c8ba 100644
--- a/apps/st/src/components/util/column/review/PrivateSewageFacilityColumnRvw.ts
+++ b/apps/st/src/components/util/column/review/PrivateSewageFacilityColumnRvw.ts
@@ -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'
- ]
-}
-
-];
\ No newline at end of file
+ /* 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
+ }))
+}));
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/review/SewageExcretaRelatedColumnRvw.ts b/apps/st/src/components/util/column/review/SewageExcretaRelatedColumnRvw.ts
index c24a2a5b8..e9bcfac0d 100644
--- a/apps/st/src/components/util/column/review/SewageExcretaRelatedColumnRvw.ts
+++ b/apps/st/src/components/util/column/review/SewageExcretaRelatedColumnRvw.ts
@@ -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'
]
-}
-];
\ No newline at end of file
+ }
+];
+
+export const SewageExcretaRelatedInfoListRvw = rawExcretaRelatedList.map(tab => ({
+ ...tab,
+ columns: tab.columns.map(col => ({
+ ...col,
+ editable: false
+ }))
+}));
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/review/SewageExcretaSlurgeColumnRvw.ts b/apps/st/src/components/util/column/review/SewageExcretaSlurgeColumnRvw.ts
index 620f359c0..4cf62583e 100644
--- a/apps/st/src/components/util/column/review/SewageExcretaSlurgeColumnRvw.ts
+++ b/apps/st/src/components/util/column/review/SewageExcretaSlurgeColumnRvw.ts
@@ -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'
]
}
-];
\ No newline at end of file
+];
+
+export const SewageExcretaSludgeInfoListRvw = rawSludgeList.map(tab => ({
+ ...tab,
+ columns: tab.columns.map(col => ({
+ ...col,
+ editable: false
+ }))
+}));
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/review/SewagePipeColumnRvw.ts b/apps/st/src/components/util/column/review/SewagePipeColumnRvw.ts
index ce8bab440..1158e32d3 100644
--- a/apps/st/src/components/util/column/review/SewagePipeColumnRvw.ts
+++ b/apps/st/src/components/util/column/review/SewagePipeColumnRvw.ts
@@ -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',
]
}
-]
\ No newline at end of file
+];
+
+export const SewagePipeColumnInfoListRvw = rawList.map(tab => ({
+ ...tab,
+ columns: tab.columns.map(col => ({
+ ...col,
+ editable: false
+ }))
+}));
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/review/SewagePipeMaintainColumnRvw.ts b/apps/st/src/components/util/column/review/SewagePipeMaintainColumnRvw.ts
index c933ebead..4cf6b7a37 100644
--- a/apps/st/src/components/util/column/review/SewagePipeMaintainColumnRvw.ts
+++ b/apps/st/src/components/util/column/review/SewagePipeMaintainColumnRvw.ts
@@ -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
+ }))
+}));
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/review/SewageReservoirPumpColumnRvw.ts b/apps/st/src/components/util/column/review/SewageReservoirPumpColumnRvw.ts
index d02ea10c7..66cc56fd7 100644
--- a/apps/st/src/components/util/column/review/SewageReservoirPumpColumnRvw.ts
+++ b/apps/st/src/components/util/column/review/SewageReservoirPumpColumnRvw.ts
@@ -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'
- ]
-}
-];
\ No newline at end of file
+ /* 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
+ }))
+}));
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/review/SewerageFinanceColumnRvw.ts b/apps/st/src/components/util/column/review/SewerageFinanceColumnRvw.ts
index c0beeae20..242c2169b 100644
--- a/apps/st/src/components/util/column/review/SewerageFinanceColumnRvw.ts
+++ b/apps/st/src/components/util/column/review/SewerageFinanceColumnRvw.ts
@@ -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'
- ]
-}
-];
\ No newline at end of file
+export const SewerageFinanceInfoListRvw = rawFinanceList.map(tab => ({
+ ...tab,
+ columns: tab.columns.map(col => ({
+ ...col,
+ editable: false
+ }))
+}));
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/review/SewerageServiceLevelColumnRvw.ts b/apps/st/src/components/util/column/review/SewerageServiceLevelColumnRvw.ts
index a3efcf9dc..b762c43f4 100644
--- a/apps/st/src/components/util/column/review/SewerageServiceLevelColumnRvw.ts
+++ b/apps/st/src/components/util/column/review/SewerageServiceLevelColumnRvw.ts
@@ -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'
- ]
-}
-];
\ No newline at end of file
+ /* 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
+ }))
+}));
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/review/WaterReuseColumnRvw.ts b/apps/st/src/components/util/column/review/WaterReuseColumnRvw.ts
index 7362ef0f3..0498dd9d6 100644
--- a/apps/st/src/components/util/column/review/WaterReuseColumnRvw.ts
+++ b/apps/st/src/components/util/column/review/WaterReuseColumnRvw.ts
@@ -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'
]
-}
-];
\ No newline at end of file
+ }
+];
+
+export const WaterReuseInfoList = rawWaterReuseList.map(tab => ({
+ ...tab,
+ columns: tab.columns.map(col => ({
+ ...col,
+ editable: false
+ }))
+}));
\ No newline at end of file