diff --git a/apps/st/src/components/statistics/management/SewagePipeMng.tsx b/apps/st/src/components/statistics/management/SewagePipeMng.tsx
index a6b368119..18c912702 100644
--- a/apps/st/src/components/statistics/management/SewagePipeMng.tsx
+++ b/apps/st/src/components/statistics/management/SewagePipeMng.tsx
@@ -1,29 +1,63 @@
import SearchForm from "@/components/module/SearchForm";
import TabDataGrid from "@/components/module/TabDataGrid";
-import ApproveButton from "@/components/button/ApproveButton";
-import RejectButton from "@/components/button/RejectButton"
+import SubmitButton from "@/components/button/SumitButton";
+import SaveButton from "@/components/button/SaveButton";
+import LastYearDataButton from "@/components/button/LastYearDataButton";
+import SubmitExceptionButton from "@/components/button/SubmitExceptionButton";
-import { SewagePipeMngColumnInfoList } from "@/components/util/column/management/SewagePipeMngColumn";
+import { RegionalFacilityColumn } from "@/components/util/column/management/sewagePipe/RegionalFacility";
+import { FacilityInstallColumn } from "@/components/util/column/management/sewagePipe/FacilityInstall";
+import { PipeTypeColumn } from "@/components/util/column/management/sewagePipe/PipeTypeStatus";
+import { PipeDiameterColumn } from "@/components/util/column/management/sewagePipe/PipeDiameterStatus";
+import { ManholeStatusColumn } from "@/components/util/column/management/sewagePipe/ManholeStatus";
+import {
+ AdminAreaConnectionColumn,
+ TreatmentPlantConnectionColumn
+} from "@/components/util/column/management/sewagePipe/ConnectionStatus";
// 하수도 통계 관리 > 02. 하수관로
const SewagePipeMng = () => {
- const approveFunc = () => {
- console.log('appoved');
- // 승인 요청 로직
+ // tab List
+ const SewagePipeMngColumnInfoList = [
+ RegionalFacilityColumn,
+ FacilityInstallColumn,
+ PipeTypeColumn,
+ PipeDiameterColumn,
+ ManholeStatusColumn,
+ // 일단 각 tab으로 구현
+ TreatmentPlantConnectionColumn,
+ AdminAreaConnectionColumn
+ ];
+
+ const submitFunc = () => {
+ console.log('submit');
+ // 제출 로직
};
- const rejectFunc = () => {
- console.log('reject');
- // 보완 요청 로직
+ const saveFunc = () => {
+ console.log('save');
+ // 저장 로직
+ };
+
+ const getLastYearDataFunc = () => {
+ console.log('get last year data');
+ // 전년도 데이터 가져오기
+ };
+
+ const SubmitExceptionFunc = () => {
+ console.log('submit exception');
+ // 예외 제출 로직
};
return (
<>
>
diff --git a/apps/st/src/components/statistics/management/SeweragePenetrationRateMng.tsx b/apps/st/src/components/statistics/management/SeweragePenetrationRateMng.tsx
index fb5881659..33a670a71 100644
--- a/apps/st/src/components/statistics/management/SeweragePenetrationRateMng.tsx
+++ b/apps/st/src/components/statistics/management/SeweragePenetrationRateMng.tsx
@@ -4,125 +4,13 @@ import SubmitButton from "@/components/button/SumitButton";
import SaveButton from "@/components/button/SaveButton";
import LastYearDataButton from "@/components/button/LastYearDataButton";
import SubmitExceptionButton from "@/components/button/SubmitExceptionButton";
-import type { GridView, DataColumn } from "@/components/type/DataGrid.type";
-import { getFooterSummary } from "@/components/util/grid/footerSummary";
+
import { useState } from "react";
+import { SeweragePenetrationRateMngColumnInfo } from "@/components/util/column/management/SeweragePenetrationRateMngColumn";
+
// 하수도 통계 관리 > 01. 하수도 보급률
const SeweragePenetrationRateMng = () => {
- const columns = [
- { name: 'sido', fieldName: '시도', header: { text: '시도' } },
- {
- name: 'sgg',
- fieldName: '구군',
- header: { text: '구군' },
- footer: {
- text: '합계'
- },
- },
- { name: 'rvbsn', fieldName: '수계', header: { text: '수계' } },
- { name: 'bstrm', fieldName: '지류', header: { text: '지류' } },
- { name: 'mdbsn', fieldName: '세부단위유역', header: { text: '세부단위유역' } },
- { name: 'lgbsn', fieldName: '중권역', header: { text: '중권역' } },
- { name: 'mdmbsn', fieldName: '소권역', header: { text: '소권역' } },
- { name: 'specl_cntrpln_ar', fieldName: '특별대책지역', header: { text: '특별대책지역' } },
- {
- name: 'total_popl',
- fieldName: '총인구',
- header: { text: '총인구' },
- footer: {
- expression: 'sum' as const,
- numberFormat: '#,##0',
- valueCallback: (grid: GridView, column: DataColumn) => {
- return getFooterSummary(grid, column);
- },
- },
- },
- { name: 'popl_sm', fieldName: '내국인', header: { text: '내국인' } },
- { name: 'frgnr_popl_sm', fieldName: '외국인', header: { text: '외국인' } },
- { name: 'area', fieldName: '행정참고자료면적(㎢)', header: { text: '행정참고자료면적(㎢)' } },
- { name: 'popltn_sm', fieldName: '총인구(명)', header: { text: '총인구(명)' } },
- { name: 'ar_sm', fieldName: '총면적(㎢)', header: { text: '총면적(㎢)' } },
- { name: 'swge_proc_zone_inner_sm', fieldName: '합계', header: { text: '합계' } },
- { name: 'pblswrg_popltn_sm', fieldName: '소계', header: { text: '소계' } },
- { name: 'pblswrg_prm_trt', fieldName: '물리적처리', header: { text: '물리적처리' } },
- { name: 'pblswrg_scd_trt', fieldName: '생물학적처리', header: { text: '생물학적처리' } },
- { name: 'pblswrg_tert_trt', fieldName: '고도처리', header: { text: '고도처리' } },
- { name: 'wstr_popltn_sm', fieldName: '소계', header: { text: '소계' } },
- { name: 'wstr_prm_trt', fieldName: '물리적처리', header: { text: '물리적처리' } },
- { name: 'wstr_scd_trt', fieldName: '생물학적처리', header: { text: '생물학적처리' } },
- { name: 'wstr_tert_trt', fieldName: '고도처리', header: { text: '고도처리' } },
- { name: 'not_conect_popltn', fieldName: '미접속인구', header: { text: '미접속인구' } },
- { name: 'swge_proc_zone_inner_ar', fieldName: '면적(㎢)', header: { text: '면적(㎢)' } },
- { name: 'swge_proc_zone_outer_sm', fieldName: '합계', header: { text: '합계' } },
- { name: 'town_unproc_popltn', fieldName: '미처리인구', header: { text: '미처리인구' } },
- { name: 'town_swtt_popltn', fieldName: '오수처리인구', header: { text: '오수처리인구' } },
- { name: 'town_wrrtn_popltn', fieldName: '정화조인구', header: { text: '정화조인구' } },
- { name: 'swge_proc_zone_outer_ar', fieldName: '면적(㎢)', header: { text: '면적(㎢)' } },
- { name: 'pblswrg_popltn_suprt', fieldName: '공공하수처리구역인구보급율(%)', header: { text: '공공하수처리구역인구보급율(%)' } },
- { name: 'adtrt_popltn_suprt', fieldName: '고도처리인구보급율(%)', header: { text: `고도처리인구보급율(%)` } },
- { name: 'swrg_instlrt', fieldName: '하수도설치율(%)', header: { text: '하수도설치율(%)' } },
- { name: 'rmk', fieldName: '비고', header: { text: '비고' } },
- ];
-
- const columnLayout = [
- {
- name: 'groupA',
- hideChildHeaders: false,
- header: { text: '행정구역' },
- items: ['sido', 'sgg'],
- },
- 'rvbsn',
- 'bstrm',
- {
- name: 'groupB',
- hideChildHeaders: false,
- header: { text: '수계영향권별분류류' },
- items: ['mdbsn', 'lgbsn', 'mdmbsn'],
- },
- 'specl_cntrpln_ar',
- {
- name: 'groupC',
- hideChildHeaders: false,
- header: { text: '행정참고자료인구' },
- items: ['total_popl', 'popl_sm', 'frgnr_popl_sm'],
- },
- 'area',
- 'popltn_sm',
- 'ar_sm',
- {
- name: 'groupD',
- hideChildHeaders: false,
- header: { text: '하수처리구역내' },
- items: [
- 'swge_proc_zone_inner_sm',
- {
- name: 'pblswrgGroup',
- hideChildHeaders: false,
- header: { text: '공공하수처리인구(명)' },
- items: ['pblswrg_popltn_sm', 'pblswrg_prm_trt', 'pblswrg_scd_trt', 'pblswrg_tert_trt'],
- },
- {
- name: 'wstrGroup',
- hideChildHeaders: false,
- header: { text: '폐수처리인구(명)' },
- items: ['wstr_popltn_sm', 'wstr_prm_trt', 'wstr_scd_trt', 'wstr_tert_trt'],
- },
- 'not_conect_popltn',
- 'swge_proc_zone_inner_ar'
- ],
- },
- {
- name: 'groupE',
- hideChildHeaders: false,
- header: { text: '하수처리구역외' },
- items: ['swge_proc_zone_outer_sm', 'town_swtt_popltn', 'town_unproc_popltn', 'town_wrrtn_popltn', 'swge_proc_zone_outer_ar'],
- },
- 'pblswrg_popltn_suprt',
- 'adtrt_popltn_suprt',
- 'swrg_instlrt',
- 'rmk',
- ];
const submitFunc = () => {
console.log('submit');
@@ -130,18 +18,18 @@ const SeweragePenetrationRateMng = () => {
};
const saveFunc = () => {
- console.log('submit');
+ console.log('save');
// 저장 로직
};
const getLastYearDataFunc = () => {
console.log('get last year data');
- // 지난연도 데이터 가져오기 로직
+ // 전년도 데이터 가져오기
};
const SubmitExceptionFunc = () => {
console.log('submit exception');
- // 예외 제출 로직
+ // 예외 제출 로직
};
const [rowData, setRowData] = useState[]>([]);
@@ -155,7 +43,14 @@ const SeweragePenetrationRateMng = () => {
-
+
>
);
};
diff --git a/apps/st/src/components/util/column/management/SewagePipeMngColumn.ts b/apps/st/src/components/util/column/management/SewagePipeMngColumn.ts
deleted file mode 100644
index 3eced67c4..000000000
--- a/apps/st/src/components/util/column/management/SewagePipeMngColumn.ts
+++ /dev/null
@@ -1,800 +0,0 @@
-/**
- * 하수도 통계 관리 > 2.하수관로
- * 5개 Tab: 컬럼 통합 관리
- */
-
-export const SewagePipeMngColumnInfoList = [
- // ========================================
- // Tab 1: 지역별 시설현황
- // ========================================
- {
- columns: [
- // 행정구역(고정)
- { name: 'sido', fieldName: '시도', header: { text: '시도' } },
- { name: 'sgg', fieldName: '시군구', header: { text: '시군구' } },
-
- // 기본 정보
- { name: 'targetYr', fieldName: '하수정비기본계획목표년도', header: { text: '하수정비기본계획목표년도' }},
- { name: 'piplImprnPlanExtn', fieldName: '총관로정비계획연장(m)', header: { text: '총관로정비계획연장(m)' }, editable: false },
- { name: 'piplPlanExtn', fieldName: '총계획연장(m)', header: { text: '총계획연장(m)' }, editable: false },
- { name: 'piplFcltyExtn', fieldName: '총시설연장(m)', header: { text: '총시설연장(m)' }, editable: false },
- { name: 'piplSupprt', fieldName: '하수관로보급률(%)', header: { text: '하수관로보급률(%)' }, editable: false },
-
- // 합류식(m)
- { name: 'cmbnPlanAr', fieldName: '관로정비계획면적(㎢)', header: { text: '관로정비계획면적(㎢)' } },
- { name: 'cmbnImprnPlanExtn', fieldName: '관로정비계획연장(m)', header: { text: '관로정비계획연장(m)' } },
- { name: 'cmbnPlanExtn', fieldName: '계획연장(m)', header: { text: '계획연장(m)' }, editable: false },
- { name: 'cmbnFcltyExtn', fieldName: '시설연장(m)', header: { text: '시설연장(m)' }, editable: false },
- { name: 'cmbnRctglExtn', fieldName: '사각형(m)', header: { text: '사각형(m)' } },
- { name: 'cmbnCicleExtn', fieldName: '원형(m)', header: { text: '원형(m)' } },
- { name: 'cmbnOpswrExtn', fieldName: '개거(m)', header: { text: '개거(m)' } },
- { name: 'cmbnSdgttrExtn', fieldName: '측구(m)', header: { text: '측구(m)' } },
-
- // 분류식(m) > 오수관로
- { name: 'pltwtrPlanAr', fieldName: '관로정비계획면적(㎢)', header: { text: '관로정비계획면적(㎢)' } },
- { name: 'pltwtrImprnPlanExtn', fieldName: '관로정비계획연장(m)', header: { text: '관로정비계획연장(m)' } },
- { name: 'pltwtrPlanExtn', fieldName: '계획연장(m)', header: { text: '계획연장(m)' }, editable: false },
- { name: 'pltwtrFlctyExtn', fieldName: '시설연장(m)', header: { text: '시설연장(m)' }, editable: false },
- { name: 'pltwtrSqreExtn', fieldName: '사각형(m)', header: { text: '사각형(m)' } },
- { name: 'pltwtrCiclExtn', fieldName: '원형(m)', header: { text: '원형(m)' } },
-
- // 분류식(m) > 우수관로
- { name: 'rainwtrPlanAr', fieldName: '관로정비계획면적(㎢)', header: { text: '관로정비계획면적(㎢)' } },
- { name: 'rainwtrImprnPlanExtn', fieldName: '관로정비계획연장(m)', header: { text: '관로정비계획연장(m)' } },
- { name: 'rainwtrPlanExtn', fieldName: '계획연장(m)', header: { text: '계획연장(m)' }, editable: false },
- { name: 'rainwtrFlctyExtn', fieldName: '시설연장(m)', header: { text: '시설연장(m)' }, editable: false },
- { name: 'rainwtrSqreExtn', fieldName: '사각형(m)', header: { text: '사각형(m)' } },
- { name: 'rainwtrCiclExtn', fieldName: '원형(m)', header: { text: '원형(m)' } },
- { name: 'rainwtrOpswrExtn', fieldName: '개거(m)', header: { text: '개거(m)' } },
- { name: 'rainwtrSdgttrExtn', fieldName: '측구(m)', header: { text: '측구(m)' } },
-
- // 맨홀 및 기타 시설
- { name: 'mnhleSite', fieldName: '합류식맨홀(개소)', header: { text: '합류식맨홀(개소)' } },
- { name: 'pltwtrMnhleSite', fieldName: '오수맨홀(개소)', header: { text: '오수맨홀(개소)' } },
- { name: 'rainwtrMnhleSite', fieldName: '우수맨홀(개소)', header: { text: '우수맨홀(개소)' } },
- { name: 'pltwtrRcvrSite', fieldName: '오수받이(개소)', header: { text: '오수받이(개소)' } },
- { name: 'rainwtrRcvrSite', fieldName: '빗물받이(개소)', header: { text: '빗물받이(개소)' } },
- { name: 'soilspllSite', fieldName: '우수토실(개소)', header: { text: '우수토실(개소)' } },
- { name: 'soilholeSite', fieldName: '우수토구(개소)', header: { text: '우수토구(개소)' } },
-
- // 하수도대장 전산화
- { name: 'sewerRegstrCmptExtn', fieldName: '하수도대장전산화연장(m)', header: { text: '하수도대장전산화연장(m)' } },
- { name: 'sewerRegstrCmptRt', fieldName: '하수도대장전산화율(%)', header: { text: '하수도대장전산화율(%)' }, editable: false },
-
- // 비고
- { name: 'rmk', fieldName: '비고', header: { text: '비고' } },
- ],
- columnLayout: [
- {
- name: 'adminArea',
- hideChildHeaders: false,
- header: { text: '행정구역' },
- items: ['sido', 'sgg'],
- },
- 'targetYr',
- 'piplImprnPlanExtn',
- 'piplPlanExtn',
- 'piplFcltyExtn',
- 'piplSupprt',
- {
- name: 'combined',
- hideChildHeaders: false,
- header: { text: '합류식(m)' },
- items: [
- 'cmbnPlanAr',
- 'cmbnImprnPlanExtn',
- 'cmbnPlanExtn',
- 'cmbnFcltyExtn',
- {
- name: 'cmbnCulvert',
- hideChildHeaders: false,
- header: { text: '암거' },
- items: ['cmbnRctglExtn', 'cmbnCicleExtn'],
- },
- 'cmbnOpswrExtn',
- 'cmbnSdgttrExtn',
- ],
- },
- {
- name: 'separated',
- hideChildHeaders: false,
- header: { text: '분류식(m)' },
- items: [
- {
- name: 'pollutedWater',
- hideChildHeaders: false,
- header: { text: '오수관로' },
- items: [
- 'pltwtrPlanAr',
- 'pltwtrImprnPlanExtn',
- 'pltwtrPlanExtn',
- 'pltwtrFlctyExtn',
- {
- name: 'pltwtrCulvert',
- hideChildHeaders: false,
- header: { text: '암거' },
- items: ['pltwtrSqreExtn', 'pltwtrCiclExtn'],
- },
- ],
- },
- {
- name: 'rainWater',
- hideChildHeaders: false,
- header: { text: '우수관로' },
- items: [
- 'rainwtrPlanAr',
- 'rainwtrImprnPlanExtn',
- 'rainwtrPlanExtn',
- 'rainwtrFlctyExtn',
- {
- name: 'rainwtrCulvert',
- hideChildHeaders: false,
- header: { text: '암거' },
- items: ['rainwtrSqreExtn', 'rainwtrCiclExtn'],
- },
- 'rainwtrOpswrExtn',
- 'rainwtrSdgttrExtn',
- ],
- },
- ],
- },
- 'mnhleSite',
- {
- name: 'separatedManhole',
- hideChildHeaders: false,
- header: { text: '분류식' },
- items: ['pltwtrMnhleSite', 'rainwtrMnhleSite'],
- },
- 'pltwtrRcvrSite',
- 'rainwtrRcvrSite',
- 'soilspllSite',
- 'soilholeSite',
- 'sewerRegstrCmptExtn',
- 'sewerRegstrCmptRt',
- 'rmk',
- ],
- rowStartNum: 4,
- fixedColumns: 1,
- tabKey: 'regionalFacilityStatus',
- tabLabel: '지역별 시설현황'
- },
-
- // ========================================
- // Tab 2: 시설별 설치현황
- // ========================================
- {
- columns: [
- // 행정구역
- { name: 'sido', fieldName: '시도', header: { text: '시도' } },
- { name: 'sgg', fieldName: '시군구', header: { text: '시군구' } },
-
- // 하수처리장 정보
- { name: 'bscFctNm', fieldName: '하수처리장명', header: { text: '하수처리장명' } },
- { name: 'fctCpc', fieldName: '하수처리시설용량(m³/일)', header: { text: '하수처리시설용량(m³/일)' } },
-
- // 처리구역면적(km²)
- { name: 'procZoneSm', fieldName: '합계', header: { text: '합계' }, editable: false },
- { name: 'cmbnProcZoneAr', fieldName: '합류식', header: { text: '합류식' } },
- { name: 'sprtProcZoneAr', fieldName: '분류식', header: { text: '분류식' } },
-
- // 분류식화율
- { name: 'sprtRt', fieldName: '분류식화율', header: { text: '분류식화율' }, editable: false },
-
- // 배수설비(개소)
- { name: 'drngEqpSm', fieldName: '합계', header: { text: '합계' }, editable: false },
- { name: 'cmbnDrngEqp', fieldName: '합류식', header: { text: '합류식' } },
- { name: 'sprtDrngEqpSm', fieldName: '소계', header: { text: '소계' }, editable: false },
- { name: 'sprtDrngEqpCnnc', fieldName: '연결', header: { text: '연결' } },
- { name: 'sprtDrngEqpDcnnc', fieldName: '미연결', header: { text: '미연결' } },
-
- // 하수관로 - 총시설연장
- { name: 'piplFcltyExtn', fieldName: '총시설연장(m)', header: { text: '총시설연장(m)' }, editable: false },
-
- // 차집/오수간선(m)
- { name: 'icgMnnSm', fieldName: '합계', header: { text: '합계' }, editable: false },
- { name: 'icgExtn', fieldName: '차집', header: { text: '차집' } },
- { name: 'mnnExtn', fieldName: '오수 간선', header: { text: '오수 간선' } },
-
- // 토실/토구(개소) - 합류식
- { name: 'cmbnSoilholeSite', fieldName: '우수토실', header: { text: '우수토실' } },
-
- // 토실/토구(개소) - 분류식
- { name: 'sprtSoilholeSite', fieldName: '우수토실', header: { text: '우수토실' } },
- { name: 'sprtSoilspllSite', fieldName: '우수토구', header: { text: '우수토구' } },
-
- // 지선(m)
- { name: 'brnchlnSm', fieldName: '합계', header: { text: '합계' }, editable: false },
- { name: 'cmbnBrnchlnExtn', fieldName: '합류식', header: { text: '합류식' } },
- { name: 'rainwtrBrnchlnExtn', fieldName: '우수', header: { text: '우수' } },
- { name: 'pltwtrBrnchlnExtn', fieldName: '오수', header: { text: '오수' } },
-
- // 비고
- { name: 'rmk', fieldName: '비고', header: { text: '비고' } },
- ],
- columnLayout: [
- {
- name: 'adminArea',
- hideChildHeaders: false,
- header: { text: '행정구역' },
- items: ['sido', 'sgg'],
- },
- 'bscFctNm',
- 'fctCpc',
- {
- name: 'procZone',
- hideChildHeaders: false,
- header: { text: '처리구역면적(km²)' },
- items: ['procZoneSm', 'cmbnProcZoneAr', 'sprtProcZoneAr'],
- },
- 'sprtRt',
- {
- name: 'drainEquip',
- hideChildHeaders: false,
- header: { text: '배수설비(개소)' },
- items: [
- 'drngEqpSm',
- 'cmbnDrngEqp',
- {
- name: 'sprtDrainEquip',
- hideChildHeaders: false,
- header: { text: '분류식' },
- items: ['sprtDrngEqpSm', 'sprtDrngEqpCnnc', 'sprtDrngEqpDcnnc'],
- },
- ],
- },
- {
- name: 'sewagePipe',
- hideChildHeaders: false,
- header: { text: '하수관로' },
- items: [
- 'piplFcltyExtn',
- {
- name: 'interceptor',
- hideChildHeaders: false,
- header: { text: '차집/오수간선(m)' },
- items: ['icgMnnSm', 'icgExtn', 'mnnExtn'],
- },
- {
- name: 'soilHole',
- hideChildHeaders: false,
- header: { text: '토실/토구(개소)' },
- items: [
- {
- name: 'cmbnSoilHole',
- hideChildHeaders: false,
- header: { text: '합류식' },
- items: ['cmbnSoilholeSite'],
- },
- {
- name: 'sprtSoilHole',
- hideChildHeaders: false,
- header: { text: '분류식' },
- items: ['sprtSoilholeSite', 'sprtSoilspllSite'],
- },
- ],
- },
- {
- name: 'branchLine',
- hideChildHeaders: false,
- header: { text: '지선(m)' },
- items: [
- 'brnchlnSm',
- 'cmbnBrnchlnExtn',
- {
- name: 'sprtBranchLine',
- hideChildHeaders: false,
- header: { text: '분류식' },
- items: ['rainwtrBrnchlnExtn', 'pltwtrBrnchlnExtn'],
- },
- ],
- },
- ],
- },
- 'rmk',
- ],
- rowStartNum: 4,
- fixedColumns: 3,
- tabKey: 'facilityInstallationStatus',
- tabLabel: '시설별 설치현황'
- },
-
- // ========================================
- // Tab 3: 관종별 현황
- // ========================================
- {
- columns: [
- // 행정구역
- { name: 'sido', fieldName: '시도', header: { text: '시도' } },
- { name: 'sgg', fieldName: '시군구', header: { text: '시군구' } },
-
- // 관종
- { name: 'swrgPipeCd', fieldName: '관종', header: { text: '관종' } },
-
- // 총계
- { name: 'totalSum', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'totalLayingExtn', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, editable: false },
- { name: 'totalRemvlExtn', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, editable: false },
-
- // 1996년 이전 (22Y)
- { name: 'totalExtn22y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn22y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn22y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 1996년 (01Y)
- { name: 'totalExtn01y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn01y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn01y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 1997년 (02Y)
- { name: 'totalExtn02y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn02y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn02y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 1998년 (03Y)
- { name: 'totalExtn03y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn03y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn03y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 1999년 (04Y)
- { name: 'totalExtn04y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn04y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn04y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2000년 (05Y)
- { name: 'totalExtn05y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn05y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn05y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2001년 (06Y)
- { name: 'totalExtn06y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn06y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn06y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2002년 (07Y)
- { name: 'totalExtn07y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn07y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn07y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2003년 (08Y)
- { name: 'totalExtn08y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn08y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn08y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2004년 (09Y)
- { name: 'totalExtn09y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn09y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn09y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2005년 (10Y)
- { name: 'totalExtn10y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn10y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn10y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2006년 (11Y)
- { name: 'totalExtn11y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn11y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn11y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2007년 (12Y)
- { name: 'totalExtn12y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn12y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn12y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2008년 (13Y)
- { name: 'totalExtn13y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn13y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn13y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2009년 (14Y)
- { name: 'totalExtn14y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn14y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn14y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2010년 (15Y)
- { name: 'totalExtn15y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn15y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn15y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2011년 (16Y)
- { name: 'totalExtn16y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn16y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn16y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2012년 (17Y)
- { name: 'totalExtn17y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn17y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn17y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2013년 (18Y)
- { name: 'totalExtn18y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn18y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn18y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2014년 (19Y)
- { name: 'totalExtn19y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn19y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn19y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2015년 (20Y)
- { name: 'totalExtn20y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn20y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn20y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2016년 (21Y)
- { name: 'totalExtn21y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn21y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn21y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2017년 (23Y)
- { name: 'totalExtn23y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn23y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn23y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2018년 (24Y)
- { name: 'totalExtn24y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn24y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn24y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2019년 (25Y)
- { name: 'totalExtn25y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn25y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn25y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2020년 (26Y)
- { name: 'totalExtn26y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn26y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn26y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2021년 (27Y)
- { name: 'totalExtn27y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn27y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn27y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2022년 (28Y)
- { name: 'totalExtn28y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn28y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn28y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2023년 (29Y)
- { name: 'totalExtn29y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn29y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn29y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2024년 (30Y)
- { name: 'totalExtn30y', fieldName: '계', header: { text: '계' }, editable: false },
- { name: 'layingExtn30y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
- { name: 'remvlExtn30y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
-
- // 2025년
- { name: 'layingExtn', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
-
- // 비고
- { name: 'rmk', fieldName: '비고', header: { text: '비고' } },
- ],
- columnLayout: [
- {
- name: 'adminArea',
- hideChildHeaders: false,
- header: { text: '행정구역' },
- items: ['sido', 'sgg'],
- },
- 'swrgPipeCd',
- {
- name: 'totalGroup',
- hideChildHeaders: false,
- header: { text: '총계' },
- items: ['totalSum', 'totalLayingExtn', 'totalRemvlExtn'],
- },
- {
- name: 'year1996Before',
- hideChildHeaders: false,
- header: { text: '1996년 이전' },
- items: ['totalExtn22y', 'layingExtn22y', 'remvlExtn22y'],
- },
- {
- name: 'year1996',
- hideChildHeaders: false,
- header: { text: '1996년' },
- items: ['totalExtn01y', 'layingExtn01y', 'remvlExtn01y'],
- },
- {
- name: 'year1997',
- hideChildHeaders: false,
- header: { text: '1997년' },
- items: ['totalExtn02y', 'layingExtn02y', 'remvlExtn02y'],
- },
- {
- name: 'year1998',
- hideChildHeaders: false,
- header: { text: '1998년' },
- items: ['totalExtn03y', 'layingExtn03y', 'remvlExtn03y'],
- },
- {
- name: 'year1999',
- hideChildHeaders: false,
- header: { text: '1999년' },
- items: ['totalExtn04y', 'layingExtn04y', 'remvlExtn04y'],
- },
- {
- name: 'year2000',
- hideChildHeaders: false,
- header: { text: '2000년' },
- items: ['totalExtn05y', 'layingExtn05y', 'remvlExtn05y'],
- },
- {
- name: 'year2001',
- hideChildHeaders: false,
- header: { text: '2001년' },
- items: ['totalExtn06y', 'layingExtn06y', 'remvlExtn06y'],
- },
- {
- name: 'year2002',
- hideChildHeaders: false,
- header: { text: '2002년' },
- items: ['totalExtn07y', 'layingExtn07y', 'remvlExtn07y'],
- },
- {
- name: 'year2003',
- hideChildHeaders: false,
- header: { text: '2003년' },
- items: ['totalExtn08y', 'layingExtn08y', 'remvlExtn08y'],
- },
- {
- name: 'year2004',
- hideChildHeaders: false,
- header: { text: '2004년' },
- items: ['totalExtn09y', 'layingExtn09y', 'remvlExtn09y'],
- },
- {
- name: 'year2005',
- hideChildHeaders: false,
- header: { text: '2005년' },
- items: ['totalExtn10y', 'layingExtn10y', 'remvlExtn10y'],
- },
- {
- name: 'year2006',
- hideChildHeaders: false,
- header: { text: '2006년' },
- items: ['totalExtn11y', 'layingExtn11y', 'remvlExtn11y'],
- },
- {
- name: 'year2007',
- hideChildHeaders: false,
- header: { text: '2007년' },
- items: ['totalExtn12y', 'layingExtn12y', 'remvlExtn12y'],
- },
- {
- name: 'year2008',
- hideChildHeaders: false,
- header: { text: '2008년' },
- items: ['totalExtn13y', 'layingExtn13y', 'remvlExtn13y'],
- },
- {
- name: 'year2009',
- hideChildHeaders: false,
- header: { text: '2009년' },
- items: ['totalExtn14y', 'layingExtn14y', 'remvlExtn14y'],
- },
- {
- name: 'year2010',
- hideChildHeaders: false,
- header: { text: '2010년' },
- items: ['totalExtn15y', 'layingExtn15y', 'remvlExtn15y'],
- },
- {
- name: 'year2011',
- hideChildHeaders: false,
- header: { text: '2011년' },
- items: ['totalExtn16y', 'layingExtn16y', 'remvlExtn16y'],
- },
- {
- name: 'year2012',
- hideChildHeaders: false,
- header: { text: '2012년' },
- items: ['totalExtn17y', 'layingExtn17y', 'remvlExtn17y'],
- },
- {
- name: 'year2013',
- hideChildHeaders: false,
- header: { text: '2013년' },
- items: ['totalExtn18y', 'layingExtn18y', 'remvlExtn18y'],
- },
- {
- name: 'year2014',
- hideChildHeaders: false,
- header: { text: '2014년' },
- items: ['totalExtn19y', 'layingExtn19y', 'remvlExtn19y'],
- },
- {
- name: 'year2015',
- hideChildHeaders: false,
- header: { text: '2015년' },
- items: ['totalExtn20y', 'layingExtn20y', 'remvlExtn20y'],
- },
- {
- name: 'year2016',
- hideChildHeaders: false,
- header: { text: '2016년' },
- items: ['totalExtn21y', 'layingExtn21y', 'remvlExtn21y'],
- },
- {
- name: 'year2017',
- hideChildHeaders: false,
- header: { text: '2017년' },
- items: ['totalExtn23y', 'layingExtn23y', 'remvlExtn23y'],
- },
- {
- name: 'year2018',
- hideChildHeaders: false,
- header: { text: '2018년' },
- items: ['totalExtn24y', 'layingExtn24y', 'remvlExtn24y'],
- },
- {
- name: 'year2019',
- hideChildHeaders: false,
- header: { text: '2019년' },
- items: ['totalExtn25y', 'layingExtn25y', 'remvlExtn25y'],
- },
- {
- name: 'year2020',
- hideChildHeaders: false,
- header: { text: '2020년' },
- items: ['totalExtn26y', 'layingExtn26y', 'remvlExtn26y'],
- },
- {
- name: 'year2021',
- hideChildHeaders: false,
- header: { text: '2021년' },
- items: ['totalExtn27y', 'layingExtn27y', 'remvlExtn27y'],
- },
- {
- name: 'year2022',
- hideChildHeaders: false,
- header: { text: '2022년' },
- items: ['totalExtn28y', 'layingExtn28y', 'remvlExtn28y'],
- },
- {
- name: 'year2023',
- hideChildHeaders: false,
- header: { text: '2023년' },
- items: ['totalExtn29y', 'layingExtn29y', 'remvlExtn29y'],
- },
- {
- name: 'year2024',
- hideChildHeaders: false,
- header: { text: '2024년' },
- items: ['totalExtn30y', 'layingExtn30y', 'remvlExtn30y'],
- },
- 'layingExtn',
- 'rmk',
- ],
- rowStartNum: 2,
- fixedColumns: 2,
- tabKey: 'pipeTypeStatus',
- tabLabel: '관종별 현황'
- },
-
- // ========================================
- // Tab 4: 관경별 현황
- // ========================================
- {
- columns: [
- // 행정구역
- { name: 'sido', fieldName: '시도', header: { text: '시도' } },
- { name: 'sgg', fieldName: '시군구', header: { text: '시군구' } },
-
- // 관종
- { name: 'swrgPipeCd', fieldName: '관종', header: { text: '관종' } },
-
- // 총계(m) - 계산
- { name: 'totalDiameter', fieldName: '총계(m)', header: { text: '총계(m)' }, editable: false },
-
- // 원형(m)
- { name: 'under200', fieldName: '200mm 미만', header: { text: '200mm 미만' } },
- { name: 'over200Undev300', fieldName: '200mm이상~300mm미만', header: { text: '200mm이상~300mm미만' } },
- { name: 'over300Undev500', fieldName: '300mm이상~500mm미만', header: { text: '300mm이상~500mm미만' } },
- { name: 'over500Undev500', fieldName: '500mm이상~800mm미만', header: { text: '500mm이상~800mm미만' } },
- { name: 'over800', fieldName: '800이상mm', header: { text: '800이상mm' } },
-
- // 사각형(m)
- { name: 'box', fieldName: '사각형(m)', header: { text: '사각형(m)' } },
-
- // 기타(측구 개거 등)
- { name: 'etc', fieldName: '기타(측구 개거 등)', header: { text: '기타(측구 개거 등)' } },
-
- // 비고
- { name: 'rmk', fieldName: '비고', header: { text: '비고' } },
- ],
- columnLayout: [
- {
- name: 'adminArea',
- hideChildHeaders: false,
- header: { text: '행정구역' },
- items: ['sido', 'sgg'],
- },
- 'swrgPipeCd',
- 'totalDiameter',
- {
- name: 'circular',
- hideChildHeaders: false,
- header: { text: '원형(m)' },
- items: [
- 'under200',
- 'over200Undev300',
- 'over300Undev500',
- 'over500Undev500',
- 'over800',
- ],
- },
- 'box',
- 'etc',
- 'rmk',
- ],
- rowStartNum: 2,
- fixedColumns: 1,
- tabKey: 'pipeDiameterStatus',
- tabLabel: '관경별 현황'
- },
-
- // ========================================
- // Tab 5: 시설별 현황관리
- // Tab 5-1: 행정구역별 연결 현황 (우측 그리드)
- // ========================================
- {
- columns: [
- // 행정구역
- { name: 'sido', fieldName: '시도', header: { text: '시도' } },
- { name: 'sgg', fieldName: '시군구', header: { text: '시군구' } },
- { name: 'adstDong', fieldName: '행정구역명', header: { text: '행정구역명' } },
-
- // 연결여부
- { name: 'iscan', fieldName: '연결여부', header: { text: '연결여부' } },
-
- // 연결하수처리장
- { name: 'bscFctNm', fieldName: '연결하수처리장', header: { text: '연결하수처리장' } },
- ],
- columnLayout: [
- {
- name: 'adminArea',
- hideChildHeaders: false,
- header: { text: '행정구역' },
- items: ['sido', 'sgg', 'adstDong'],
- },
- 'iscan',
- 'bscFctNm',
- ],
- rowStartNum: 2,
- fixedColumns: 1,
- tabKey: 'administrativeAreaConnection',
- tabLabel: '행정구역별 연결 현황'
- },
-
- // ========================================
- // Tab 5-2: 하수처리장별 연결 현황 (좌측 그리드)
- // ========================================
- {
- columns: [
- // 하수처리장 정보
- { name: 'bscFctNm', fieldName: '하수처리장명', header: { text: '하수처리장명' } },
- { name: 'fctCpc', fieldName: '용량', header: { text: '용량' } },
- { name: 'bscFctCd', fieldName: '하수처리장코드', header: { text: '하수처리장코드' } },
-
- // 연결여부
- { name: 'iscan', fieldName: '연결여부', header: { text: '연결여부' } },
-
- // 연결지역
- { name: 'nmlist', fieldName: '연결지역', header: { text: '연결지역' } },
- ],
- columnLayout: [
- 'bscFctNm',
- 'fctCpc',
- 'bscFctCd',
- 'iscan',
- 'nmlist',
- ],
- rowStartNum: 1,
- fixedColumns: 1,
- tabKey: 'treatmentPlantConnection',
- tabLabel: '하수처리장별 연결 현황'
- },
-];
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/management/SewerageFinanceMngColumn.ts b/apps/st/src/components/util/column/management/SewerageFinanceMngColumn.ts
index 4d1c3cfa4..ab598062f 100644
--- a/apps/st/src/components/util/column/management/SewerageFinanceMngColumn.ts
+++ b/apps/st/src/components/util/column/management/SewerageFinanceMngColumn.ts
@@ -56,7 +56,7 @@ export const SewerageFinanceMngInfoList = [
{ name: 'UNRCIV_AMOUNT', fieldName: '미수납액', header: { text: '미수납액' } },
{ name: 'ETC_AMOUNT', fieldName: '기타', header: { text: '기타' } },
- // 비고
+ // 비고 및 의견
{ name: 'RMK', fieldName: '비고', header: { text: '비고' } },
{ name: 'CHCKER_OPINION', fieldName: '검토자의견', header: { text: '검토자의견' } },
{ name: 'WRTER_OPINION', fieldName: '사용자의견', header: { text: '사용자의견' } },
@@ -65,37 +65,6 @@ export const SewerageFinanceMngInfoList = [
{ name: 'B_LEVY_AMOUNT', fieldName: 'B_LEVY_AMOUNT', header: { text: 'B_LEVY_AMOUNT' } },
{ name: 'C_LEVY_AMOUNT', fieldName: 'C_LEVY_AMOUNT', header: { text: 'C_LEVY_AMOUNT' } },
{ name: 'D_LEVY_AMOUNT', fieldName: 'D_LEVY_AMOUNT', header: { text: 'D_LEVY_AMOUNT' } },
-
- // 검증 필드
- { name: 'CHK_FNANC_WCT_SM', fieldName: 'CHK_FNANC_WCT_SM', header: { text: 'CHK_FNANC_WCT_SM' } },
- { name: 'CHK_NTNXPN', fieldName: 'CHK_NTNXPN', header: { text: 'CHK_NTNXPN' } },
- { name: 'CHK_LCLEXPNS', fieldName: 'CHK_LCLEXPNS', header: { text: 'CHK_LCLEXPNS' } },
- { name: 'CHK_LCLTY_CT', fieldName: 'CHK_LCLTY_CT', header: { text: 'CHK_LCLTY_CT' } },
- { name: 'CHK_SEWER_RNTFEE', fieldName: 'CHK_SEWER_RNTFEE', header: { text: 'CHK_SEWER_RNTFEE' } },
- { name: 'CHK_AMNTBRNCSR', fieldName: 'CHK_AMNTBRNCSR', header: { text: 'CHK_AMNTBRNCSR' } },
- { name: 'CHK_ETC_INCME', fieldName: 'CHK_ETC_INCME', header: { text: 'CHK_ETC_INCME' } },
- { name: 'CHK_CYFD_AMOUNT', fieldName: 'CHK_CYFD_AMOUNT', header: { text: 'CHK_CYFD_AMOUNT' } },
- { name: 'CHK_DEBT_AMOUNT', fieldName: 'CHK_DEBT_AMOUNT', header: { text: 'CHK_DEBT_AMOUNT' } },
- { name: 'CHK_PRPOS_WCT_SM', fieldName: 'CHK_PRPOS_WCT_SM', header: { text: 'CHK_PRPOS_WCT_SM' } },
- { name: 'CHK_PRCPLT_SM', fieldName: 'CHK_PRCPLT_SM', header: { text: 'CHK_PRCPLT_SM' } },
- { name: 'CHK_PRCPLT_FCLTY', fieldName: 'CHK_PRCPLT_FCLTY', header: { text: 'CHK_PRCPLT_FCLTY' } },
- { name: 'CHK_PRCPLT_RPAIR', fieldName: 'CHK_PRCPLT_RPAIR', header: { text: 'CHK_PRCPLT_RPAIR' } },
- { name: 'CHK_PRCPLT_ORPNS', fieldName: 'CHK_PRCPLT_ORPNS', header: { text: 'CHK_PRCPLT_ORPNS' } },
- { name: 'CHK_PRCPLT_ETC', fieldName: 'CHK_PRCPLT_ETC', header: { text: 'CHK_PRCPLT_ETC' } },
- { name: 'CHK_SEWAGE_SM', fieldName: 'CHK_SEWAGE_SM', header: { text: 'CHK_SEWAGE_SM' } },
- { name: 'CHK_SEWAGE_FCLTY', fieldName: 'CHK_SEWAGE_FCLTY', header: { text: 'CHK_SEWAGE_FCLTY' } },
- { name: 'CHK_SEWAGE_RPAIR', fieldName: 'CHK_SEWAGE_RPAIR', header: { text: 'CHK_SEWAGE_RPAIR' } },
- { name: 'CHK_SEWAGE_ORPNS', fieldName: 'CHK_SEWAGE_ORPNS', header: { text: 'CHK_SEWAGE_ORPNS' } },
- { name: 'CHK_SEWAGE_ETC', fieldName: 'CHK_SEWAGE_ETC', header: { text: 'CHK_SEWAGE_ETC' } },
- { name: 'CHK_SWGE_STRGE_SM', fieldName: 'CHK_SWGE_STRGE_SM', header: { text: 'CHK_SWGE_STRGE_SM' } },
- { name: 'CHK_SWGE_STRGE_FCLTY', fieldName: 'CHK_SWGE_STRGE_FCLTY', header: { text: 'CHK_SWGE_STRGE_FCLTY' } },
- { name: 'CHK_SWGE_STRGE_RPAIR', fieldName: 'CHK_SWGE_STRGE_RPAIR', header: { text: 'CHK_SWGE_STRGE_RPAIR' } },
- { name: 'CHK_SWGE_STRGE_ORPNS', fieldName: 'CHK_SWGE_STRGE_ORPNS', header: { text: 'CHK_SWGE_STRGE_ORPNS' } },
- { name: 'CHK_SWGE_STRGE_ETC', fieldName: 'CHK_SWGE_STRGE_ETC', header: { text: 'CHK_SWGE_STRGE_ETC' } },
- { name: 'CHK_ACDNT_CYFD_AMOUNT', fieldName: 'CHK_ACDNT_CYFD_AMOUNT', header: { text: 'CHK_ACDNT_CYFD_AMOUNT' } },
- { name: 'CHK_UNRCIV_AMOUNT', fieldName: 'CHK_UNRCIV_AMOUNT', header: { text: 'CHK_UNRCIV_AMOUNT' } },
- { name: 'CHK_ETC_AMOUNT', fieldName: 'CHK_ETC_AMOUNT', header: { text: 'CHK_ETC_AMOUNT' } },
- { name: 'CHK_ETC_SM', fieldName: 'CHK_ETC_SM', header: { text: 'CHK_ETC_SM' } },
],
columnLayout: [
{
@@ -178,4 +147,288 @@ export const SewerageFinanceMngInfoList = [
tabKey: 'SewerageFinanceMng_tab1',
tabLabel: '하수도재정 결산'
},
+ // ========================================
+ // Tab 2: 하수도 요금
+ // ========================================
+ {
+ columns: [
+ // 행정구역
+ { name: 'SIDO', fieldName: '시도', header: { text: '시도' } },
+ { name: 'GUGUN', fieldName: '시군구', header: { text: '시군구' } },
+
+ // 요금 현황
+ { name: 'FYER_LEVY_QY', fieldName: '연간조정량(m³)(A)', header: { text: '연간조정량(m³)(A)' } },
+ { name: 'LEVY_AMOUNT', fieldName: '하수도사용료수익(원)(B)', header: { text: '하수도사용료수익(원)(B)' } },
+ { name: 'AVRG_UNTPC', fieldName: 'm³당요금(원/m³) C=(B/A)', header: { text: 'm³당요금(원/m³) C=(B/A)' } },
+ { name: 'SMRIZE_PRMPC', fieldName: '총괄원가(원)(D)', header: { text: '총괄원가(원)(D)' } },
+ { name: 'SMRIZE_UNIT_PRMPC', fieldName: 'm³당원가(원/m³) E=(D/A)', header: { text: 'm³당원가(원/m³) E=(D/A)' } },
+ { name: 'RLTY_RT', fieldName: '요금현실화율(%) F=(C/E*100)', header: { text: '요금현실화율(%) F=(C/E*100)' } },
+
+ // 비고 및 의견
+ { name: 'RMK', fieldName: '비고', header: { text: '비고' } },
+ { name: 'CHCKER_OPINION', fieldName: '검토자의견', header: { text: '검토자의견' } },
+ { name: 'WRTER_OPINION', fieldName: '사용자의견', header: { text: '사용자의견' } },
+
+ // 참조 필드
+ { name: 'SEWER_RNTFEE', fieldName: 'SEWER_RNTFEE', header: { text: 'SEWER_RNTFEE' } },
+ { name: 'C_LEVY_AMOUNT', fieldName: 'C_LEVY_AMOUNT', header: { text: 'C_LEVY_AMOUNT' } },
+ ],
+ columnLayout: [
+ {
+ name: 'group_admin',
+ header: { text: '행정구역' },
+ items: ['SIDO', 'GUGUN']
+ },
+ 'FYER_LEVY_QY',
+ 'LEVY_AMOUNT',
+ 'AVRG_UNTPC',
+ 'SMRIZE_PRMPC',
+ 'SMRIZE_UNIT_PRMPC',
+ 'RLTY_RT',
+ 'RMK'
+ ],
+ rowStartNum: 2,
+ fixedColumns: 1,
+ tabKey: 'SewerageFinanceMng_tab2',
+ tabLabel: '하수도 요금'
+ },
+ // ========================================
+ // Tab 3: 하수도 사용료
+ // ========================================
+ {
+ columns: [
+ // 행정구역
+ { name: 'SIDO', fieldName: '시도', header: { text: '시도' } },
+ { name: 'GUGUN', fieldName: '시군구', header: { text: '시군구' } },
+
+ // 총계
+ { name: 'LEVY_AMOUNT', fieldName: '(백만원)', header: { text: '(백만원)' } },
+ { name: 'LEVY_QY', fieldName: '(천톤)', header: { text: '(천톤)' } },
+
+ // 가정용
+ { name: 'HOME_LEVY_AMOUNT', fieldName: '(백만원)', header: { text: '(백만원)' } },
+ { name: 'HOME_LEVY_QY', fieldName: '(천톤)', header: { text: '(천톤)' } },
+ { name: 'HOME_UNTPC', fieldName: '(원/톤)', header: { text: '(원/톤)' } },
+
+ // 업무용
+ { name: 'JOB_LEVY_AMOUNT', fieldName: '(백만원)', header: { text: '(백만원)' } },
+ { name: 'JOB_LEVY_QY', fieldName: '(천톤)', header: { text: '(천톤)' } },
+ { name: 'JOB_UNTPC', fieldName: '(원/톤)', header: { text: '(원/톤)' } },
+
+ // 영업용(일반용)
+ { name: 'BSN_LEVY_AMOUNT', fieldName: '(백만원)', header: { text: '(백만원)' } },
+ { name: 'BSN_LEVY_QY', fieldName: '(천톤)', header: { text: '(천톤)' } },
+ { name: 'BSN_UNTPC', fieldName: '(원/톤)', header: { text: '(원/톤)' } },
+
+ // 욕탕1종(대중탕용)
+ { name: 'BATHS1_LEVY_AMOUNT', fieldName: '(백만원)', header: { text: '(백만원)' } },
+ { name: 'BATHS1_LEVY_QY', fieldName: '(천톤)', header: { text: '(천톤)' } },
+ { name: 'BATHS1_UNTPC', fieldName: '(원/톤)', header: { text: '(원/톤)' } },
+
+ // 대중탕용 (별도 분류)
+ { name: 'PBBATH_LEVY_AMOUNT', fieldName: '(백만원)', header: { text: '(백만원)' } },
+ { name: 'PBBATH_LEVY_QY', fieldName: '(천톤)', header: { text: '(천톤)' } },
+ { name: 'PBBATH_UNTPC', fieldName: '(원/톤)', header: { text: '(원/톤)' } },
+
+ // 욕탕2종
+ { name: 'BATHS2_LEVY_AMOUNT', fieldName: '(백만원)', header: { text: '(백만원)' } },
+ { name: 'BATHS2_LEVY_QY', fieldName: '(천톤)', header: { text: '(천톤)' } },
+ { name: 'BATHS2_UNTPC', fieldName: '(원/톤)', header: { text: '(원/톤)' } },
+
+ // 산업용
+ { name: 'INDUST_LEVY_AMOUNT', fieldName: '(백만원)', header: { text: '(백만원)' } },
+ { name: 'INDUST_LEVY_QY', fieldName: '(천톤)', header: { text: '(천톤)' } },
+ { name: 'INDUST_UNTPC', fieldName: '(원/톤)', header: { text: '(원/톤)' } },
+
+ // 공업용
+ { name: 'INDPRP_LEVY_AMOUNT', fieldName: '(백만원)', header: { text: '(백만원)' } },
+ { name: 'INDPRP_LEVY_QY', fieldName: '(천톤)', header: { text: '(천톤)' } },
+ { name: 'INDPRP_UNTPC', fieldName: '(원/톤)', header: { text: '(원/톤)' } },
+
+ // 공공용
+ { name: 'PUBLIC_LEVY_AMOUNT', fieldName: '(백만원)', header: { text: '(백만원)' } },
+ { name: 'PUBLIC_LEVY_QY', fieldName: '(천톤)', header: { text: '(천톤)' } },
+ { name: 'PUBLIC_UNTPC', fieldName: '(원/톤)', header: { text: '(원/톤)' } },
+
+ // 일반용
+ { name: 'GNRL_LEVY_AMOUNT', fieldName: '(백만원)', header: { text: '(백만원)' } },
+ { name: 'GNRL_LEVY_QY', fieldName: '(천톤)', header: { text: '(천톤)' } },
+ { name: 'GNRL_UNTPC', fieldName: '(원/톤)', header: { text: '(원/톤)' } },
+
+ // 기타
+ { name: 'ETC_LEVY_AMOUNT', fieldName: '(백만원)', header: { text: '(백만원)' } },
+ { name: 'ETC_LEVY_QY', fieldName: '(천톤)', header: { text: '(천톤)' } },
+ { name: 'ETC_UNTPC', fieldName: '(원/톤)', header: { text: '(원/톤)' } },
+
+ // 비고 및 의견
+ { name: 'RMK', fieldName: '비고', header: { text: '비고' } },
+ { name: 'CHCKER_OPINION', fieldName: '검토자의견', header: { text: '검토자의견' } },
+ { name: 'WRTER_OPINION', fieldName: '사용자의견', header: { text: '사용자의견' } },
+
+ // 참조 필드
+ { name: 'SEWER_RNTFEE', fieldName: 'SEWER_RNTFEE', header: { text: 'SEWER_RNTFEE' } },
+ { name: 'B_LEVY_AMOUNT', fieldName: 'B_LEVY_AMOUNT', header: { text: 'B_LEVY_AMOUNT' } },
+ ],
+
+ columnLayout: [
+ {
+ name: 'group_admin',
+ header: { text: '행정구역' },
+ items: ['SIDO', 'GUGUN']
+ },
+ {
+ name: 'group_total',
+ header: { text: '총계' },
+ items: [
+ { name: 'total_amount', header: { text: '부과액' }, items: ['LEVY_AMOUNT'] },
+ { name: 'total_qty', header: { text: '부과량' }, items: ['LEVY_QY'] }
+ ]
+ },
+ {
+ name: 'group_home',
+ header: { text: '가 정 용' },
+ items: [
+ { name: 'home_amount', header: { text: '부과액' }, items: ['HOME_LEVY_AMOUNT'] },
+ { name: 'home_qty', header: { text: '부과량' }, items: ['HOME_LEVY_QY'] },
+ { name: 'home_price', header: { text: '단가' }, items: ['HOME_UNTPC'] }
+ ]
+ },
+ {
+ name: 'group_job',
+ header: { text: '업 무 용' },
+ items: [
+ { name: 'job_amount', header: { text: '부과액' }, items: ['JOB_LEVY_AMOUNT'] },
+ { name: 'job_qty', header: { text: '부과량' }, items: ['JOB_LEVY_QY'] },
+ { name: 'job_price', header: { text: '단가' }, items: ['JOB_UNTPC'] }
+ ]
+ },
+ {
+ name: 'group_business',
+ header: { text: '영 업 용(일 반 용)' },
+ items: [
+ { name: 'bsn_amount', header: { text: '부과액' }, items: ['BSN_LEVY_AMOUNT'] },
+ { name: 'bsn_qty', header: { text: '부과량' }, items: ['BSN_LEVY_QY'] },
+ { name: 'bsn_price', header: { text: '단가' }, items: ['BSN_UNTPC'] }
+ ]
+ },
+ {
+ name: 'group_baths1',
+ header: { text: '욕 탕 1종(대중탕용)' },
+ items: [
+ { name: 'baths1_amount', header: { text: '부과액' }, items: ['BATHS1_LEVY_AMOUNT'] },
+ { name: 'baths1_qty', header: { text: '부과량' }, items: ['BATHS1_LEVY_QY'] },
+ { name: 'baths1_price', header: { text: '단가' }, items: ['BATHS1_UNTPC'] }
+ ]
+ },
+ {
+ name: 'group_pbbath',
+ header: { text: '욕 탕 2종' },
+ items: [
+ { name: 'pbbath_amount', header: { text: '부과액' }, items: ['PBBATH_LEVY_AMOUNT'] },
+ { name: 'pbbath_qty', header: { text: '부과량' }, items: ['PBBATH_LEVY_QY'] },
+ { name: 'pbbath_price', header: { text: '단가' }, items: ['PBBATH_UNTPC'] }
+ ]
+ },
+ {
+ name: 'group_industry',
+ header: { text: '산업 및 공업용' },
+ items: [
+ { name: 'indust_amount', header: { text: '부과액' }, items: ['INDUST_LEVY_AMOUNT'] },
+ { name: 'indust_qty', header: { text: '부과량' }, items: ['INDUST_LEVY_QY'] },
+ { name: 'indust_price', header: { text: '단가' }, items: ['INDUST_UNTPC'] }
+ ]
+ },
+ {
+ name: 'group_etc',
+ header: { text: '기타' },
+ items: [
+ { name: 'etc_amount', header: { text: '부과액' }, items: ['ETC_LEVY_AMOUNT'] },
+ { name: 'etc_qty', header: { text: '부과량' }, items: ['ETC_LEVY_QY'] },
+ { name: 'etc_price', header: { text: '단가' }, items: ['ETC_UNTPC'] }
+ ]
+ },
+ 'RMK'
+ ],
+
+ rowStartNum: 3,
+ fixedColumns: 1,
+ tabKey: 'SewerageFinanceMng_tab3',
+ tabLabel: '하수도 사용료'
+ },
+
+ // ========================================
+ // Tab 4: 원인자 부담금
+ // ========================================
+ {
+ columns: [
+ // 행정구역
+ { name: 'SIDO', fieldName: '시도', header: { text: '시도' } },
+ { name: 'GUGUN', fieldName: '시군구', header: { text: '시군구' } },
+
+ // 부과액
+ { name: 'LEVY_CO', fieldName: '건수', header: { text: '건수' } },
+ { name: 'LEVY_AMOUNT', fieldName: '금액(백만원)', header: { text: '금액(백만원)' } },
+
+ // 대상별 징수현황 - 계
+ { name: 'TRGET_LEV_STTUS_CO', fieldName: '건수', header: { text: '건수' } },
+ { name: 'TRGET_LEV_STTUS_AMOUNT', fieldName: '금액(백만원)', header: { text: '금액(백만원)' } },
+
+ // 대상별 징수현황 - 배수설비설치자
+ { name: 'DRNG_EQP_CO', fieldName: '건수', header: { text: '건수' } },
+ { name: 'DRNG_EQP_AMOUNT', fieldName: '금액(백만원)', header: { text: '금액(백만원)' } },
+
+ // 대상별 징수현황 - 타공사·타행위자
+ { name: 'CNTRWK_CO', fieldName: '건수', header: { text: '건수' } },
+ { name: 'CNTRWK_AMOUNT', fieldName: '금액(백만원)', header: { text: '금액(백만원)' } },
+
+ // 비고 및 의견
+ { name: 'RMK', fieldName: '비고', header: { text: '비고' } },
+ { name: 'CHCKER_OPINION', fieldName: '검토자의견', header: { text: '검토자의견' } },
+ { name: 'WRTER_OPINION', fieldName: '사용자의견', header: { text: '사용자의견' } },
+
+ // 참조 필드
+ { name: 'AMNTBRNCSR', fieldName: 'AMNTBRNCSR', header: { text: 'AMNTBRNCSR' } },
+ ],
+
+ columnLayout: [
+ {
+ name: 'group_admin',
+ header: { text: '행정구역' },
+ items: ['SIDO', 'GUGUN']
+ },
+ {
+ name: 'group_assess',
+ header: { text: '부과액' },
+ items: ['LEVY_CO', 'LEVY_AMOUNT']
+ },
+ {
+ name: 'group_collection',
+ header: { text: '대상별 징수현황' },
+ items: [
+ {
+ name: 'coll_group_total',
+ header: { text: '계' },
+ items: ['TRGET_LEV_STTUS_CO', 'TRGET_LEV_STTUS_AMOUNT']
+ },
+ {
+ name: 'coll_group_inst',
+ header: { text: '배수설비설치자(하수도법 제61조 제1항)' },
+ items: ['DRNG_EQP_CO', 'DRNG_EQP_AMOUNT']
+ },
+ {
+ name: 'coll_group_otr',
+ header: { text: '타공사·타행위자(하수도법 제61조 제2항)' },
+ items: ['CNTRWK_CO', 'CNTRWK_AMOUNT']
+ }
+ ]
+ },
+ 'RMK'
+ ],
+
+ rowStartNum: 3,
+ fixedColumns: 1,
+ tabKey: 'SewerageFinanceMng_tab4',
+ tabLabel: '원인자 부담금'
+ },
+
];
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/management/SeweragePenetrationRateMngColumn.ts b/apps/st/src/components/util/column/management/SeweragePenetrationRateMngColumn.ts
new file mode 100644
index 000000000..b8d2c5684
--- /dev/null
+++ b/apps/st/src/components/util/column/management/SeweragePenetrationRateMngColumn.ts
@@ -0,0 +1,154 @@
+import { footerInt, footerDecimal1, footerDecimal3 } from "@/components/util/grid/footerSummary";
+
+/**
+ * 하수도 통계 관리 > 01. 하수도 보급률
+ * 단일 Tab
+ */
+export const SeweragePenetrationRateMngColumnInfo = {
+ columns: [
+ // [기본정보] 행정구역 - 수정 불가
+ { name: 'sido', fieldName: '시도', header: { text: '시도' }, editable: false },
+ {
+ name: 'sgg',
+ fieldName: '시군구',
+ header: { text: '시군구' },
+ footer: { text: '합계' },
+ editable: false
+ },
+
+ // [기본정보] 수계 및 권역 - 수정 불가
+ { name: 'rvbsn', fieldName: '수계', header: { text: '수계' }, editable: false },
+ { name: 'bstrm', fieldName: '지류', header: { text: '지류' }, editable: false },
+
+ // [기본정보] 수계영향권별분류 - 수정 불가
+ { name: 'mdbsn', fieldName: '세부단위유역', header: { text: '세부단위유역' }, editable: false },
+ { name: 'lgbsn', fieldName: '중권역', header: { text: '중권역' }, editable: false },
+ { name: 'mdmbsn', fieldName: '소권역', header: { text: '소권역' }, editable: false },
+
+ // [입력필드] 특별대책지역 - 수정 가능
+ { name: 'specl_cntrpln_ar', fieldName: '특별대책지역', header: { text: '특별대책지역' } },
+
+ // [참조정보] 행정참고자료인구 - 수정 불가
+ { name: 'total_popl', fieldName: '총인구', header: { text: '총인구' }, footer: footerInt, editable: false },
+ { name: 'popl_sm', fieldName: '내국인', header: { text: '내국인' }, footer: footerInt, editable: false },
+ { name: 'frgnr_popl_sm', fieldName: '외국인', header: { text: '외국인' }, footer: footerInt, editable: false },
+
+ // [참조정보] 행정참고자료면적 - 수정 불가
+ { name: 'area', fieldName: '행정참고자료면적(㎢)', header: { text: '행정참고자료면적(㎢)' }, footer: footerDecimal3, editable: false },
+
+ // [자동계산] 총인구 (Nexacro: expr 존재) - 수정 불가
+ { name: 'popltn_sm', fieldName: '총인구(명)', header: { text: '총인구(명)' }, footer: footerInt, editable: false },
+
+ // [입력필드] 총면적 (Nexacro: 입력 가능) - 수정 가능
+ { name: 'ar_sm', fieldName: '총면적(㎢)', header: { text: '총면적(㎢)' }, footer: footerDecimal3 },
+
+ // [자동계산] 하수처리구역 내 합계 - 수정 불가
+ { name: 'swge_proc_zone_inner_sm', fieldName: '합계', header: { text: '합계' }, footer: footerInt, editable: false },
+
+ // [자동계산] 공공하수 소계 - 수정 불가
+ { name: 'pblswrg_popltn_sm', fieldName: '소계', header: { text: '소계' }, footer: footerInt, editable: false },
+
+ // [입력필드] 공공하수 상세 - 수정 가능
+ { name: 'pblswrg_prm_trt', fieldName: '물리적처리', header: { text: '물리적처리' }, footer: footerInt },
+ { name: 'pblswrg_scd_trt', fieldName: '생물학적처리', header: { text: '생물학적처리' }, footer: footerInt },
+ { name: 'pblswrg_tert_trt', fieldName: '고도처리', header: { text: '고도처리' }, footer: footerInt },
+
+ // [자동계산] 폐수 소계 - 수정 불가
+ { name: 'wstr_popltn_sm', fieldName: '소계', header: { text: '소계' }, footer: footerInt, editable: false },
+
+ // [입력필드] 폐수 상세 - 수정 가능
+ { name: 'wstr_prm_trt', fieldName: '물리적처리', header: { text: '물리적처리' }, footer: footerInt },
+ { name: 'wstr_scd_trt', fieldName: '생물학적처리', header: { text: '생물학적처리' }, footer: footerInt },
+ { name: 'wstr_tert_trt', fieldName: '고도처리', header: { text: '고도처리' }, footer: footerInt },
+
+ // [입력필드] 미접속인구 - 수정 가능
+ { name: 'not_conect_popltn', fieldName: '미접속인구', header: { text: '미접속인구' }, footer: footerInt },
+
+ // [입력필드] 구역내 면적 - 수정 가능
+ { name: 'swge_proc_zone_inner_ar', fieldName: '면적(㎢)', header: { text: '면적(㎢)' }, footer: footerDecimal3 },
+
+ // [자동계산] 하수처리구역 외 합계 - 수정 불가
+ { name: 'swge_proc_zone_outer_sm', fieldName: '합계', header: { text: '합계' }, footer: footerInt, editable: false },
+
+ // [입력필드] 구역외 상세 - 수정 가능
+ { name: 'town_unproc_popltn', fieldName: '미처리인구', header: { text: '미처리인구' }, footer: footerInt },
+ { name: 'town_swtt_popltn', fieldName: '오수처리인구', header: { text: '오수처리인구' }, footer: footerInt },
+ { name: 'town_wrrtn_popltn', fieldName: '정화조인구', header: { text: '정화조인구' }, footer: footerInt },
+
+ // [입력필드] 구역외 면적 - 수정 가능
+ { name: 'swge_proc_zone_outer_ar', fieldName: '면적(㎢)', header: { text: '면적(㎢)' }, footer: footerDecimal3 },
+
+ // [자동계산] 비율 (수식) - 수정 불가
+ { name: 'pblswrg_popltn_suprt', fieldName: '공공하수처리구역인구보급율(%)', header: { text: '공공하수처리구역인구보급율(%)' }, footer: footerDecimal1, editable: false },
+ { name: 'adtrt_popltn_suprt', fieldName: '고도처리인구보급율(%)', header: { text: `고도처리인구보급율(%)` }, footer: footerDecimal1, editable: false },
+ { name: 'swrg_instlrt', fieldName: '하수도설치율(%)', header: { text: '하수도설치율(%)' }, footer: footerDecimal1, editable: false },
+
+ // [입력필드] 비고 - 수정 가능
+ { name: 'rmk', fieldName: '비고', header: { text: '비고' } },
+ ],
+
+ columnLayout: [
+ {
+ name: 'groupA',
+ hideChildHeaders: false,
+ header: { text: '행정구역' },
+ items: ['sido', 'sgg'],
+ },
+ 'rvbsn',
+ 'bstrm',
+ {
+ name: 'groupB',
+ hideChildHeaders: false,
+ header: { text: '수계영향권별분류' },
+ items: ['mdbsn', 'lgbsn', 'mdmbsn'],
+ },
+ 'specl_cntrpln_ar',
+ {
+ name: 'groupC',
+ hideChildHeaders: false,
+ header: { text: '행정참고자료인구' },
+ items: ['total_popl', 'popl_sm', 'frgnr_popl_sm'],
+ },
+ 'area',
+ 'popltn_sm',
+ 'ar_sm',
+ {
+ name: 'groupD',
+ hideChildHeaders: false,
+ header: { text: '하수처리구역내' },
+ items: [
+ 'swge_proc_zone_inner_sm',
+ {
+ name: 'pblswrgGroup',
+ hideChildHeaders: false,
+ header: { text: '공공하수처리인구(명)' },
+ items: ['pblswrg_popltn_sm', 'pblswrg_prm_trt', 'pblswrg_scd_trt', 'pblswrg_tert_trt'],
+ },
+ {
+ name: 'wstrGroup',
+ hideChildHeaders: false,
+ header: { text: '폐수처리인구(명)' },
+ items: ['wstr_popltn_sm', 'wstr_prm_trt', 'wstr_scd_trt', 'wstr_tert_trt'],
+ },
+ 'not_conect_popltn',
+ 'swge_proc_zone_inner_ar'
+ ],
+ },
+ {
+ name: 'groupE',
+ hideChildHeaders: false,
+ header: { text: '하수처리구역외' },
+ items: [
+ 'swge_proc_zone_outer_sm',
+ 'town_unproc_popltn',
+ 'town_swtt_popltn',
+ 'town_wrrtn_popltn',
+ 'swge_proc_zone_outer_ar'
+ ],
+ },
+ 'pblswrg_popltn_suprt',
+ 'adtrt_popltn_suprt',
+ 'swrg_instlrt',
+ 'rmk',
+ ]
+};
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/management/sewagePipe/ConnectionStatus.ts b/apps/st/src/components/util/column/management/sewagePipe/ConnectionStatus.ts
new file mode 100644
index 000000000..080fdf083
--- /dev/null
+++ b/apps/st/src/components/util/column/management/sewagePipe/ConnectionStatus.ts
@@ -0,0 +1,58 @@
+// 하수도 통계 관리 > 02.하수관로 > tab 6. 시설별 현황관리
+
+// Tab 6-1: 행정구역별 연결 현황 (우측 그리드)
+export const AdminAreaConnectionColumn = {
+ columns: [
+ // 행정구역
+ { name: 'sido', fieldName: '시도', header: { text: '시도' } },
+ { name: 'sgg', fieldName: '시군구', header: { text: '시군구' } },
+ { name: 'adstDong', fieldName: '행정구역명', header: { text: '행정구역명' } },
+
+ // 연결여부
+ { name: 'iscan', fieldName: '연결여부', header: { text: '연결여부' } },
+
+ // 연결하수처리장
+ { name: 'bscFctNm', fieldName: '연결하수처리장', header: { text: '연결하수처리장' } },
+ ],
+ columnLayout: [
+ {
+ name: 'adminArea',
+ hideChildHeaders: false,
+ header: { text: '행정구역' },
+ items: ['sido', 'sgg', 'adstDong'],
+ },
+ 'iscan',
+ 'bscFctNm',
+ ],
+ rowStartNum: 2,
+ fixedColumns: 1,
+ tabKey: 'administrativeAreaConnection',
+ tabLabel: '행정구역별 연결 현황'
+};
+
+// Tab 6-2: 하수처리장별 연결 현황 (좌측 그리드)
+export const TreatmentPlantConnectionColumn = {
+ columns: [
+ // 하수처리장 정보
+ { name: 'bscFctNm', fieldName: '하수처리장명', header: { text: '하수처리장명' } },
+ { name: 'fctCpc', fieldName: '용량', header: { text: '용량' } },
+ { name: 'bscFctCd', fieldName: '하수처리장코드', header: { text: '하수처리장코드' } },
+
+ // 연결여부
+ { name: 'iscan', fieldName: '연결여부', header: { text: '연결여부' } },
+
+ // 연결지역
+ { name: 'nmlist', fieldName: '연결지역', header: { text: '연결지역' } },
+ ],
+ columnLayout: [
+ 'bscFctNm',
+ 'fctCpc',
+ 'bscFctCd',
+ 'iscan',
+ 'nmlist',
+ ],
+ rowStartNum: 1,
+ fixedColumns: 1,
+ tabKey: 'treatmentPlantConnection',
+ tabLabel: '하수처리장별 연결 현황'
+};
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/management/sewagePipe/FacilityInstall.ts b/apps/st/src/components/util/column/management/sewagePipe/FacilityInstall.ts
new file mode 100644
index 000000000..9203f6014
--- /dev/null
+++ b/apps/st/src/components/util/column/management/sewagePipe/FacilityInstall.ts
@@ -0,0 +1,137 @@
+// 하수도 통계 관리 > 02.하수관로 > tab 2. 시설별 설치현황
+
+export const FacilityInstallColumn = {
+ columns: [
+ // 행정구역
+ { name: 'sido', fieldName: '시도', header: { text: '시도' } },
+ { name: 'sgg', fieldName: '시군구', header: { text: '시군구' } },
+
+ // 하수처리장 정보
+ { name: 'bscFctNm', fieldName: '하수처리장명', header: { text: '하수처리장명' } },
+ { name: 'fctCpc', fieldName: '하수처리시설용량(m³/일)', header: { text: '하수처리시설용량(m³/일)' } },
+
+ // 처리구역면적(km²)
+ { name: 'procZoneSm', fieldName: '합계', header: { text: '합계' }, editable: false },
+ { name: 'cmbnProcZoneAr', fieldName: '합류식', header: { text: '합류식' } },
+ { name: 'sprtProcZoneAr', fieldName: '분류식', header: { text: '분류식' } },
+
+ // 분류식화율
+ { name: 'sprtRt', fieldName: '분류식화율', header: { text: '분류식화율' }, editable: false },
+
+ // 배수설비(개소)
+ { name: 'drngEqpSm', fieldName: '합계', header: { text: '합계' }, editable: false },
+ { name: 'cmbnDrngEqp', fieldName: '합류식', header: { text: '합류식' } },
+ { name: 'sprtDrngEqpSm', fieldName: '소계', header: { text: '소계' }, editable: false },
+ { name: 'sprtDrngEqpCnnc', fieldName: '연결', header: { text: '연결' } },
+ { name: 'sprtDrngEqpDcnnc', fieldName: '미연결', header: { text: '미연결' } },
+
+ // 하수관로 - 총시설연장
+ { name: 'piplFcltyExtn', fieldName: '총시설연장(m)', header: { text: '총시설연장(m)' }, editable: false },
+
+ // 차집/오수간선(m)
+ { name: 'icgMnnSm', fieldName: '합계', header: { text: '합계' }, editable: false },
+ { name: 'icgExtn', fieldName: '차집', header: { text: '차집' } },
+ { name: 'mnnExtn', fieldName: '오수 간선', header: { text: '오수 간선' } },
+
+ // 토실/토구(개소) - 합류식
+ { name: 'cmbnSoilholeSite', fieldName: '우수토실', header: { text: '우수토실' } },
+
+ // 토실/토구(개소) - 분류식
+ { name: 'sprtSoilholeSite', fieldName: '우수토실', header: { text: '우수토실' } },
+ { name: 'sprtSoilspllSite', fieldName: '우수토구', header: { text: '우수토구' } },
+
+ // 지선(m)
+ { name: 'brnchlnSm', fieldName: '합계', header: { text: '합계' }, editable: false },
+ { name: 'cmbnBrnchlnExtn', fieldName: '합류식', header: { text: '합류식' } },
+ { name: 'rainwtrBrnchlnExtn', fieldName: '우수', header: { text: '우수' } },
+ { name: 'pltwtrBrnchlnExtn', fieldName: '오수', header: { text: '오수' } },
+
+ // 비고
+ { name: 'rmk', fieldName: '비고', header: { text: '비고' } },
+ ],
+ columnLayout: [
+ {
+ name: 'adminArea',
+ hideChildHeaders: false,
+ header: { text: '행정구역' },
+ items: ['sido', 'sgg'],
+ },
+ 'bscFctNm',
+ 'fctCpc',
+ {
+ name: 'procZone',
+ hideChildHeaders: false,
+ header: { text: '처리구역면적(km²)' },
+ items: ['procZoneSm', 'cmbnProcZoneAr', 'sprtProcZoneAr'],
+ },
+ 'sprtRt',
+ {
+ name: 'drainEquip',
+ hideChildHeaders: false,
+ header: { text: '배수설비(개소)' },
+ items: [
+ 'drngEqpSm',
+ 'cmbnDrngEqp',
+ {
+ name: 'sprtDrainEquip',
+ hideChildHeaders: false,
+ header: { text: '분류식' },
+ items: ['sprtDrngEqpSm', 'sprtDrngEqpCnnc', 'sprtDrngEqpDcnnc'],
+ },
+ ],
+ },
+ {
+ name: 'sewagePipe',
+ hideChildHeaders: false,
+ header: { text: '하수관로' },
+ items: [
+ 'piplFcltyExtn',
+ {
+ name: 'interceptor',
+ hideChildHeaders: false,
+ header: { text: '차집/오수간선(m)' },
+ items: ['icgMnnSm', 'icgExtn', 'mnnExtn'],
+ },
+ {
+ name: 'soilHole',
+ hideChildHeaders: false,
+ header: { text: '토실/토구(개소)' },
+ items: [
+ {
+ name: 'cmbnSoilHole',
+ hideChildHeaders: false,
+ header: { text: '합류식' },
+ items: ['cmbnSoilholeSite'],
+ },
+ {
+ name: 'sprtSoilHole',
+ hideChildHeaders: false,
+ header: { text: '분류식' },
+ items: ['sprtSoilholeSite', 'sprtSoilspllSite'],
+ },
+ ],
+ },
+ {
+ name: 'branchLine',
+ hideChildHeaders: false,
+ header: { text: '지선(m)' },
+ items: [
+ 'brnchlnSm',
+ 'cmbnBrnchlnExtn',
+ {
+ name: 'sprtBranchLine',
+ hideChildHeaders: false,
+ header: { text: '분류식' },
+ items: ['rainwtrBrnchlnExtn', 'pltwtrBrnchlnExtn'],
+ },
+ ],
+ },
+ ],
+ },
+ 'rmk',
+ ],
+ rowStartNum: 4,
+ fixedColumns: 3,
+ tabKey: 'facilityInstallationStatus',
+ tabLabel: '시설별 설치현황'
+};
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/management/sewagePipe/ManholeStatus.ts b/apps/st/src/components/util/column/management/sewagePipe/ManholeStatus.ts
new file mode 100644
index 000000000..2bbf508c9
--- /dev/null
+++ b/apps/st/src/components/util/column/management/sewagePipe/ManholeStatus.ts
@@ -0,0 +1,328 @@
+// 하수도 통계 관리 > 02.하수관로 > tab 5. 맨홀 현황
+
+export const ManholeStatusColumn = {
+ columns: [
+ // 행정구역
+ { name: 'a1', fieldName: '시도', header: { text: '시도' } },
+ { name: 'a2', fieldName: '시군구', header: { text: '시군구' } },
+
+ // 집중강우중점관리구역구분
+ { name: 'a3', fieldName: '집중강우중점관리구역구분', header: { text: '집중강우중점관리구역구분' } },
+
+ // 연도별총계 - 맨홀뚜껑 재질(개)
+ { name: 'b1', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'b2', fieldName: '주철', header: { text: '주철' }, editable: false },
+ { name: 'b3', fieldName: '주철(조화)', header: { text: '주철(조화)' }, editable: false },
+ { name: 'b4', fieldName: '콘크리트', header: { text: '콘크리트' }, editable: false },
+ { name: 'b5', fieldName: '기타', header: { text: '기타' }, editable: false },
+ // 연도별총계 - 추락방지시설설치맨홀(개)
+ { name: 'b6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' }, editable: false },
+
+ // 2015년 이전 - 맨홀뚜껑 재질(개)
+ { name: 'c1', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'c2', fieldName: '주철', header: { text: '주철' } },
+ { name: 'c3', fieldName: '주철(조화)', header: { text: '주철(조화)' } },
+ { name: 'c4', fieldName: '콘크리트', header: { text: '콘크리트' } },
+ { name: 'c5', fieldName: '기타', header: { text: '기타' } },
+ // 2015년 이전 - 추락방지시설설치맨홀(개)
+ { name: 'c6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' } },
+
+ // 2015년 - 맨홀뚜껑 재질(개)
+ { name: 'd1', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'd2', fieldName: '주철', header: { text: '주철' } },
+ { name: 'd3', fieldName: '주철(조화)', header: { text: '주철(조화)' } },
+ { name: 'd4', fieldName: '콘크리트', header: { text: '콘크리트' } },
+ { name: 'd5', fieldName: '기타', header: { text: '기타' } },
+ // 2015년 - 추락방지시설설치맨홀(개)
+ { name: 'd6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' } },
+
+ // 2016년 - 맨홀뚜껑 재질(개)
+ { name: 'e1', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'e2', fieldName: '주철', header: { text: '주철' } },
+ { name: 'e3', fieldName: '주철(조화)', header: { text: '주철(조화)' } },
+ { name: 'e4', fieldName: '콘크리트', header: { text: '콘크리트' } },
+ { name: 'e5', fieldName: '기타', header: { text: '기타' } },
+ // 2016년 - 추락방지시설설치맨홀(개)
+ { name: 'e6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' } },
+
+ // 2017년 - 맨홀뚜껑 재질(개)
+ { name: 'f1', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'f2', fieldName: '주철', header: { text: '주철' } },
+ { name: 'f3', fieldName: '주철(조화)', header: { text: '주철(조화)' } },
+ { name: 'f4', fieldName: '콘크리트', header: { text: '콘크리트' } },
+ { name: 'f5', fieldName: '기타', header: { text: '기타' } },
+ // 2017년 - 추락방지시설설치맨홀(개)
+ { name: 'f6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' } },
+
+ // 2018년 - 맨홀뚜껑 재질(개)
+ { name: 'g1', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'g2', fieldName: '주철', header: { text: '주철' } },
+ { name: 'g3', fieldName: '주철(조화)', header: { text: '주철(조화)' } },
+ { name: 'g4', fieldName: '콘크리트', header: { text: '콘크리트' } },
+ { name: 'g5', fieldName: '기타', header: { text: '기타' } },
+ // 2018년 - 추락방지시설설치맨홀(개)
+ { name: 'g6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' } },
+
+ // 2019년 - 맨홀뚜껑 재질(개)
+ { name: 'h1', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'h2', fieldName: '주철', header: { text: '주철' } },
+ { name: 'h3', fieldName: '주철(조화)', header: { text: '주철(조화)' } },
+ { name: 'h4', fieldName: '콘크리트', header: { text: '콘크리트' } },
+ { name: 'h5', fieldName: '기타', header: { text: '기타' } },
+ // 2019년 - 추락방지시설설치맨홀(개)
+ { name: 'h6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' } },
+
+ // 2020년 - 맨홀뚜껑 재질(개)
+ { name: 'i1', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'i2', fieldName: '주철', header: { text: '주철' } },
+ { name: 'i3', fieldName: '주철(조화)', header: { text: '주철(조화)' } },
+ { name: 'i4', fieldName: '콘크리트', header: { text: '콘크리트' } },
+ { name: 'i5', fieldName: '기타', header: { text: '기타' } },
+ // 2020년 - 추락방지시설설치맨홀(개)
+ { name: 'i6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' } },
+
+ // 2021년 - 맨홀뚜껑 재질(개)
+ { name: 'j1', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'j2', fieldName: '주철', header: { text: '주철' } },
+ { name: 'j3', fieldName: '주철(조화)', header: { text: '주철(조화)' } },
+ { name: 'j4', fieldName: '콘크리트', header: { text: '콘크리트' } },
+ { name: 'j5', fieldName: '기타', header: { text: '기타' } },
+ // 2021년 - 추락방지시설설치맨홀(개)
+ { name: 'j6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' } },
+
+ // 2022년 - 맨홀뚜껑 재질(개)
+ { name: 'k1', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'k2', fieldName: '주철', header: { text: '주철' } },
+ { name: 'k3', fieldName: '주철(조화)', header: { text: '주철(조화)' } },
+ { name: 'k4', fieldName: '콘크리트', header: { text: '콘크리트' } },
+ { name: 'k5', fieldName: '기타', header: { text: '기타' } },
+ // 2022년 - 추락방지시설설치맨홀(개)
+ { name: 'k6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' } },
+
+ // 2023년 - 맨홀뚜껑 재질(개)
+ { name: 'l1', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'l2', fieldName: '주철', header: { text: '주철' } },
+ { name: 'l3', fieldName: '주철(조화)', header: { text: '주철(조화)' } },
+ { name: 'l4', fieldName: '콘크리트', header: { text: '콘크리트' } },
+ { name: 'l5', fieldName: '기타', header: { text: '기타' } },
+ // 2023년 - 추락방지시설설치맨홀(개)
+ { name: 'l6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' } },
+
+ // 2024년 - 맨홀뚜껑 재질(개)
+ { name: 'm1', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'm2', fieldName: '주철', header: { text: '주철' } },
+ { name: 'm3', fieldName: '주철(조화)', header: { text: '주철(조화)' } },
+ { name: 'm4', fieldName: '콘크리트', header: { text: '콘크리트' } },
+ { name: 'm5', fieldName: '기타', header: { text: '기타' } },
+ // 2024년 - 추락방지시설설치맨홀(개)
+ { name: 'm6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' } },
+
+ // 2025년 - 맨홀뚜껑 재질(개)
+ { name: 'n1', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'n2', fieldName: '주철', header: { text: '주철' } },
+ { name: 'n3', fieldName: '주철(조화)', header: { text: '주철(조화)' } },
+ { name: 'n4', fieldName: '콘크리트', header: { text: '콘크리트' } },
+ { name: 'n5', fieldName: '기타', header: { text: '기타' } },
+ // 2025년 - 추락방지시설설치맨홀(개)
+ { name: 'n6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' } },
+
+ // 비고
+ { name: 'z1', fieldName: '비고', header: { text: '비고' } },
+ ],
+ columnLayout: [
+ {
+ name: 'adminArea',
+ hideChildHeaders: false,
+ header: { text: '행정구역' },
+ items: ['a1', 'a2'],
+ },
+ 'a3',
+ {
+ name: 'yearlyTotal',
+ hideChildHeaders: false,
+ header: { text: '연도별총계' },
+ items: [
+ {
+ name: 'yearlyTotalMaterial',
+ hideChildHeaders: false,
+ header: { text: '맨홀뚜껑 재질(개)' },
+ items: ['b1', 'b2', 'b3', 'b4', 'b5'],
+ },
+ 'b6',
+ ],
+ },
+ {
+ name: 'before2015',
+ hideChildHeaders: false,
+ header: { text: '2015년 이전' },
+ items: [
+ {
+ name: 'before2015Material',
+ hideChildHeaders: false,
+ header: { text: '맨홀뚜껑 재질(개)' },
+ items: ['c1', 'c2', 'c3', 'c4', 'c5'],
+ },
+ 'c6',
+ ],
+ },
+ {
+ name: 'year2015',
+ hideChildHeaders: false,
+ header: { text: '2015년' },
+ items: [
+ {
+ name: 'year2015Material',
+ hideChildHeaders: false,
+ header: { text: '맨홀뚜껑 재질(개)' },
+ items: ['d1', 'd2', 'd3', 'd4', 'd5'],
+ },
+ 'd6',
+ ],
+ },
+ {
+ name: 'year2016',
+ hideChildHeaders: false,
+ header: { text: '2016년' },
+ items: [
+ {
+ name: 'year2016Material',
+ hideChildHeaders: false,
+ header: { text: '맨홀뚜껑 재질(개)' },
+ items: ['e1', 'e2', 'e3', 'e4', 'e5'],
+ },
+ 'e6',
+ ],
+ },
+ {
+ name: 'year2017',
+ hideChildHeaders: false,
+ header: { text: '2017년' },
+ items: [
+ {
+ name: 'year2017Material',
+ hideChildHeaders: false,
+ header: { text: '맨홀뚜껑 재질(개)' },
+ items: ['f1', 'f2', 'f3', 'f4', 'f5'],
+ },
+ 'f6',
+ ],
+ },
+ {
+ name: 'year2018',
+ hideChildHeaders: false,
+ header: { text: '2018년' },
+ items: [
+ {
+ name: 'year2018Material',
+ hideChildHeaders: false,
+ header: { text: '맨홀뚜껑 재질(개)' },
+ items: ['g1', 'g2', 'g3', 'g4', 'g5'],
+ },
+ 'g6',
+ ],
+ },
+ {
+ name: 'year2019',
+ hideChildHeaders: false,
+ header: { text: '2019년' },
+ items: [
+ {
+ name: 'year2019Material',
+ hideChildHeaders: false,
+ header: { text: '맨홀뚜껑 재질(개)' },
+ items: ['h1', 'h2', 'h3', 'h4', 'h5'],
+ },
+ 'h6',
+ ],
+ },
+ {
+ name: 'year2020',
+ hideChildHeaders: false,
+ header: { text: '2020년' },
+ items: [
+ {
+ name: 'year2020Material',
+ hideChildHeaders: false,
+ header: { text: '맨홀뚜껑 재질(개)' },
+ items: ['i1', 'i2', 'i3', 'i4', 'i5'],
+ },
+ 'i6',
+ ],
+ },
+ {
+ name: 'year2021',
+ hideChildHeaders: false,
+ header: { text: '2021년' },
+ items: [
+ {
+ name: 'year2021Material',
+ hideChildHeaders: false,
+ header: { text: '맨홀뚜껑 재질(개)' },
+ items: ['j1', 'j2', 'j3', 'j4', 'j5'],
+ },
+ 'j6',
+ ],
+ },
+ {
+ name: 'year2022',
+ hideChildHeaders: false,
+ header: { text: '2022년' },
+ items: [
+ {
+ name: 'year2022Material',
+ hideChildHeaders: false,
+ header: { text: '맨홀뚜껑 재질(개)' },
+ items: ['k1', 'k2', 'k3', 'k4', 'k5'],
+ },
+ 'k6',
+ ],
+ },
+ {
+ name: 'year2023',
+ hideChildHeaders: false,
+ header: { text: '2023년' },
+ items: [
+ {
+ name: 'year2023Material',
+ hideChildHeaders: false,
+ header: { text: '맨홀뚜껑 재질(개)' },
+ items: ['l1', 'l2', 'l3', 'l4', 'l5'],
+ },
+ 'l6',
+ ],
+ },
+ {
+ name: 'year2024',
+ hideChildHeaders: false,
+ header: { text: '2024년' },
+ items: [
+ {
+ name: 'year2024Material',
+ hideChildHeaders: false,
+ header: { text: '맨홀뚜껑 재질(개)' },
+ items: ['m1', 'm2', 'm3', 'm4', 'm5'],
+ },
+ 'm6',
+ ],
+ },
+ {
+ name: 'year2025',
+ hideChildHeaders: false,
+ header: { text: '2025년' },
+ items: [
+ {
+ name: 'year2025Material',
+ hideChildHeaders: false,
+ header: { text: '맨홀뚜껑 재질(개)' },
+ items: ['n1', 'n2', 'n3', 'n4', 'n5'],
+ },
+ 'n6',
+ ],
+ },
+ 'z1',
+ ],
+ rowStartNum: 3,
+ fixedColumns: 2,
+ tabKey: 'manholeStatus',
+ tabLabel: '맨홀 현황'
+};
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/management/sewagePipe/PipeDiameterStatus.ts b/apps/st/src/components/util/column/management/sewagePipe/PipeDiameterStatus.ts
new file mode 100644
index 000000000..eb4ca8ee5
--- /dev/null
+++ b/apps/st/src/components/util/column/management/sewagePipe/PipeDiameterStatus.ts
@@ -0,0 +1,60 @@
+// 하수도 통계 관리 > 02.하수관로 > tab 4. 관경별 현황
+
+export const PipeDiameterColumn = {
+ columns: [
+ // 행정구역
+ { name: 'sido', fieldName: '시도', header: { text: '시도' } },
+ { name: 'sgg', fieldName: '시군구', header: { text: '시군구' } },
+
+ // 관종
+ { name: 'swrgPipeCd', fieldName: '관종', header: { text: '관종' } },
+
+ // 총계(m) - 계산
+ { name: 'totalDiameter', fieldName: '총계(m)', header: { text: '총계(m)' }, editable: false },
+
+ // 원형(m)
+ { name: 'under200', fieldName: '200mm 미만', header: { text: '200mm 미만' } },
+ { name: 'over200Undev300', fieldName: '200mm이상~300mm미만', header: { text: '200mm이상~300mm미만' } },
+ { name: 'over300Undev500', fieldName: '300mm이상~500mm미만', header: { text: '300mm이상~500mm미만' } },
+ { name: 'over500Undev500', fieldName: '500mm이상~800mm미만', header: { text: '500mm이상~800mm미만' } },
+ { name: 'over800', fieldName: '800이상mm', header: { text: '800이상mm' } },
+
+ // 사각형(m)
+ { name: 'box', fieldName: '사각형(m)', header: { text: '사각형(m)' } },
+
+ // 기타(측구 개거 등)
+ { name: 'etc', fieldName: '기타(측구 개거 등)', header: { text: '기타(측구 개거 등)' } },
+
+ // 비고
+ { name: 'rmk', fieldName: '비고', header: { text: '비고' } },
+ ],
+ columnLayout: [
+ {
+ name: 'adminArea',
+ hideChildHeaders: false,
+ header: { text: '행정구역' },
+ items: ['sido', 'sgg'],
+ },
+ 'swrgPipeCd',
+ 'totalDiameter',
+ {
+ name: 'circular',
+ hideChildHeaders: false,
+ header: { text: '원형(m)' },
+ items: [
+ 'under200',
+ 'over200Undev300',
+ 'over300Undev500',
+ 'over500Undev500',
+ 'over800',
+ ],
+ },
+ 'box',
+ 'etc',
+ 'rmk',
+ ],
+ rowStartNum: 2,
+ fixedColumns: 1,
+ tabKey: 'pipeDiameterStatus',
+ tabLabel: '관경별 현황'
+};
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/management/sewagePipe/PipeTypeStatus.ts b/apps/st/src/components/util/column/management/sewagePipe/PipeTypeStatus.ts
new file mode 100644
index 000000000..39035dd54
--- /dev/null
+++ b/apps/st/src/components/util/column/management/sewagePipe/PipeTypeStatus.ts
@@ -0,0 +1,374 @@
+// 하수도 통계 관리 > 02.하수관로 > tab 3. 관종별 현황
+
+export const PipeTypeColumn = {
+ columns: [
+ // 행정구역
+ { name: 'sido', fieldName: '시도', header: { text: '시도' } },
+ { name: 'sgg', fieldName: '시군구', header: { text: '시군구' } },
+
+ // 관종
+ { name: 'swrgPipeCd', fieldName: '관종', header: { text: '관종' } },
+
+ // 총계
+ { name: 'totalSum', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'totalLayingExtn', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, editable: false },
+ { name: 'totalRemvlExtn', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, editable: false },
+
+ // 1996년 이전 (22Y)
+ { name: 'totalExtn22y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn22y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn22y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 1996년 (01Y)
+ { name: 'totalExtn01y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn01y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn01y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 1997년 (02Y)
+ { name: 'totalExtn02y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn02y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn02y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 1998년 (03Y)
+ { name: 'totalExtn03y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn03y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn03y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 1999년 (04Y)
+ { name: 'totalExtn04y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn04y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn04y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2000년 (05Y)
+ { name: 'totalExtn05y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn05y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn05y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2001년 (06Y)
+ { name: 'totalExtn06y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn06y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn06y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2002년 (07Y)
+ { name: 'totalExtn07y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn07y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn07y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2003년 (08Y)
+ { name: 'totalExtn08y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn08y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn08y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2004년 (09Y)
+ { name: 'totalExtn09y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn09y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn09y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2005년 (10Y)
+ { name: 'totalExtn10y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn10y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn10y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2006년 (11Y)
+ { name: 'totalExtn11y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn11y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn11y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2007년 (12Y)
+ { name: 'totalExtn12y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn12y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn12y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2008년 (13Y)
+ { name: 'totalExtn13y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn13y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn13y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2009년 (14Y)
+ { name: 'totalExtn14y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn14y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn14y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2010년 (15Y)
+ { name: 'totalExtn15y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn15y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn15y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2011년 (16Y)
+ { name: 'totalExtn16y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn16y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn16y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2012년 (17Y)
+ { name: 'totalExtn17y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn17y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn17y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2013년 (18Y)
+ { name: 'totalExtn18y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn18y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn18y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2014년 (19Y)
+ { name: 'totalExtn19y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn19y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn19y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2015년 (20Y)
+ { name: 'totalExtn20y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn20y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn20y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2016년 (21Y)
+ { name: 'totalExtn21y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn21y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn21y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2017년 (23Y)
+ { name: 'totalExtn23y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn23y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn23y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2018년 (24Y)
+ { name: 'totalExtn24y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn24y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn24y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2019년 (25Y)
+ { name: 'totalExtn25y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn25y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn25y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2020년 (26Y)
+ { name: 'totalExtn26y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn26y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn26y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2021년 (27Y)
+ { name: 'totalExtn27y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn27y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn27y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2022년 (28Y)
+ { name: 'totalExtn28y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn28y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn28y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2023년 (29Y)
+ { name: 'totalExtn29y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn29y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn29y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2024년 (30Y)
+ { name: 'totalExtn30y', fieldName: '계', header: { text: '계' }, editable: false },
+ { name: 'layingExtn30y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+ { name: 'remvlExtn30y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' } },
+
+ // 2025년
+ { name: 'layingExtn', fieldName: '매설연장(m)', header: { text: '매설연장(m)' } },
+
+ // 비고
+ { name: 'rmk', fieldName: '비고', header: { text: '비고' } },
+ ],
+ columnLayout: [
+ {
+ name: 'adminArea',
+ hideChildHeaders: false,
+ header: { text: '행정구역' },
+ items: ['sido', 'sgg'],
+ },
+ 'swrgPipeCd',
+ {
+ name: 'totalGroup',
+ hideChildHeaders: false,
+ header: { text: '총계' },
+ items: ['totalSum', 'totalLayingExtn', 'totalRemvlExtn'],
+ },
+ {
+ name: 'year1996Before',
+ hideChildHeaders: false,
+ header: { text: '1996년 이전' },
+ items: ['totalExtn22y', 'layingExtn22y', 'remvlExtn22y'],
+ },
+ {
+ name: 'year1996',
+ hideChildHeaders: false,
+ header: { text: '1996년' },
+ items: ['totalExtn01y', 'layingExtn01y', 'remvlExtn01y'],
+ },
+ {
+ name: 'year1997',
+ hideChildHeaders: false,
+ header: { text: '1997년' },
+ items: ['totalExtn02y', 'layingExtn02y', 'remvlExtn02y'],
+ },
+ {
+ name: 'year1998',
+ hideChildHeaders: false,
+ header: { text: '1998년' },
+ items: ['totalExtn03y', 'layingExtn03y', 'remvlExtn03y'],
+ },
+ {
+ name: 'year1999',
+ hideChildHeaders: false,
+ header: { text: '1999년' },
+ items: ['totalExtn04y', 'layingExtn04y', 'remvlExtn04y'],
+ },
+ {
+ name: 'year2000',
+ hideChildHeaders: false,
+ header: { text: '2000년' },
+ items: ['totalExtn05y', 'layingExtn05y', 'remvlExtn05y'],
+ },
+ {
+ name: 'year2001',
+ hideChildHeaders: false,
+ header: { text: '2001년' },
+ items: ['totalExtn06y', 'layingExtn06y', 'remvlExtn06y'],
+ },
+ {
+ name: 'year2002',
+ hideChildHeaders: false,
+ header: { text: '2002년' },
+ items: ['totalExtn07y', 'layingExtn07y', 'remvlExtn07y'],
+ },
+ {
+ name: 'year2003',
+ hideChildHeaders: false,
+ header: { text: '2003년' },
+ items: ['totalExtn08y', 'layingExtn08y', 'remvlExtn08y'],
+ },
+ {
+ name: 'year2004',
+ hideChildHeaders: false,
+ header: { text: '2004년' },
+ items: ['totalExtn09y', 'layingExtn09y', 'remvlExtn09y'],
+ },
+ {
+ name: 'year2005',
+ hideChildHeaders: false,
+ header: { text: '2005년' },
+ items: ['totalExtn10y', 'layingExtn10y', 'remvlExtn10y'],
+ },
+ {
+ name: 'year2006',
+ hideChildHeaders: false,
+ header: { text: '2006년' },
+ items: ['totalExtn11y', 'layingExtn11y', 'remvlExtn11y'],
+ },
+ {
+ name: 'year2007',
+ hideChildHeaders: false,
+ header: { text: '2007년' },
+ items: ['totalExtn12y', 'layingExtn12y', 'remvlExtn12y'],
+ },
+ {
+ name: 'year2008',
+ hideChildHeaders: false,
+ header: { text: '2008년' },
+ items: ['totalExtn13y', 'layingExtn13y', 'remvlExtn13y'],
+ },
+ {
+ name: 'year2009',
+ hideChildHeaders: false,
+ header: { text: '2009년' },
+ items: ['totalExtn14y', 'layingExtn14y', 'remvlExtn14y'],
+ },
+ {
+ name: 'year2010',
+ hideChildHeaders: false,
+ header: { text: '2010년' },
+ items: ['totalExtn15y', 'layingExtn15y', 'remvlExtn15y'],
+ },
+ {
+ name: 'year2011',
+ hideChildHeaders: false,
+ header: { text: '2011년' },
+ items: ['totalExtn16y', 'layingExtn16y', 'remvlExtn16y'],
+ },
+ {
+ name: 'year2012',
+ hideChildHeaders: false,
+ header: { text: '2012년' },
+ items: ['totalExtn17y', 'layingExtn17y', 'remvlExtn17y'],
+ },
+ {
+ name: 'year2013',
+ hideChildHeaders: false,
+ header: { text: '2013년' },
+ items: ['totalExtn18y', 'layingExtn18y', 'remvlExtn18y'],
+ },
+ {
+ name: 'year2014',
+ hideChildHeaders: false,
+ header: { text: '2014년' },
+ items: ['totalExtn19y', 'layingExtn19y', 'remvlExtn19y'],
+ },
+ {
+ name: 'year2015',
+ hideChildHeaders: false,
+ header: { text: '2015년' },
+ items: ['totalExtn20y', 'layingExtn20y', 'remvlExtn20y'],
+ },
+ {
+ name: 'year2016',
+ hideChildHeaders: false,
+ header: { text: '2016년' },
+ items: ['totalExtn21y', 'layingExtn21y', 'remvlExtn21y'],
+ },
+ {
+ name: 'year2017',
+ hideChildHeaders: false,
+ header: { text: '2017년' },
+ items: ['totalExtn23y', 'layingExtn23y', 'remvlExtn23y'],
+ },
+ {
+ name: 'year2018',
+ hideChildHeaders: false,
+ header: { text: '2018년' },
+ items: ['totalExtn24y', 'layingExtn24y', 'remvlExtn24y'],
+ },
+ {
+ name: 'year2019',
+ hideChildHeaders: false,
+ header: { text: '2019년' },
+ items: ['totalExtn25y', 'layingExtn25y', 'remvlExtn25y'],
+ },
+ {
+ name: 'year2020',
+ hideChildHeaders: false,
+ header: { text: '2020년' },
+ items: ['totalExtn26y', 'layingExtn26y', 'remvlExtn26y'],
+ },
+ {
+ name: 'year2021',
+ hideChildHeaders: false,
+ header: { text: '2021년' },
+ items: ['totalExtn27y', 'layingExtn27y', 'remvlExtn27y'],
+ },
+ {
+ name: 'year2022',
+ hideChildHeaders: false,
+ header: { text: '2022년' },
+ items: ['totalExtn28y', 'layingExtn28y', 'remvlExtn28y'],
+ },
+ {
+ name: 'year2023',
+ hideChildHeaders: false,
+ header: { text: '2023년' },
+ items: ['totalExtn29y', 'layingExtn29y', 'remvlExtn29y'],
+ },
+ {
+ name: 'year2024',
+ hideChildHeaders: false,
+ header: { text: '2024년' },
+ items: ['totalExtn30y', 'layingExtn30y', 'remvlExtn30y'],
+ },
+ 'layingExtn',
+ 'rmk',
+ ],
+ rowStartNum: 2,
+ fixedColumns: 2,
+ tabKey: 'pipeTypeStatus',
+ tabLabel: '관종별 현황'
+ };
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/management/sewagePipe/RegionalFacility.ts b/apps/st/src/components/util/column/management/sewagePipe/RegionalFacility.ts
new file mode 100644
index 000000000..c9b7c2bf5
--- /dev/null
+++ b/apps/st/src/components/util/column/management/sewagePipe/RegionalFacility.ts
@@ -0,0 +1,153 @@
+// 하수도 통계 관리 > 02.하수관로 > tab 1. 지역별 시설현황
+
+export const RegionalFacilityColumn = {
+ columns: [
+ // 행정구역(고정)
+ { name: 'sido', fieldName: '시도', header: { text: '시도' } },
+ { name: 'sgg', fieldName: '시군구', header: { text: '시군구' }, footer: { text: '합계' } },
+
+ // 기본 정보
+ { name: 'targetYr', fieldName: '하수정비기본계획목표년도', header: { text: '하수정비기본계획목표년도' }},
+ { name: 'piplImprnPlanExtn', fieldName: '총관로정비계획연장(m)', header: { text: '총관로정비계획연장(m)' }, editable: false },
+ { name: 'piplPlanExtn', fieldName: '총계획연장(m)', header: { text: '총계획연장(m)' }, editable: false },
+ { name: 'piplFcltyExtn', fieldName: '총시설연장(m)', header: { text: '총시설연장(m)' }, editable: false },
+ { name: 'piplSupprt', fieldName: '하수관로보급률(%)', header: { text: '하수관로보급률(%)' }, editable: false },
+
+ // 합류식(m)
+ { name: 'cmbnPlanAr', fieldName: '관로정비계획면적(㎢)', header: { text: '관로정비계획면적(㎢)' } },
+ { name: 'cmbnImprnPlanExtn', fieldName: '관로정비계획연장(m)', header: { text: '관로정비계획연장(m)' } },
+ { name: 'cmbnPlanExtn', fieldName: '계획연장(m)', header: { text: '계획연장(m)' }, editable: false },
+ { name: 'cmbnFcltyExtn', fieldName: '시설연장(m)', header: { text: '시설연장(m)' }, editable: false },
+ { name: 'cmbnRctglExtn', fieldName: '사각형(m)', header: { text: '사각형(m)' } },
+ { name: 'cmbnCicleExtn', fieldName: '원형(m)', header: { text: '원형(m)' } },
+ { name: 'cmbnOpswrExtn', fieldName: '개거(m)', header: { text: '개거(m)' } },
+ { name: 'cmbnSdgttrExtn', fieldName: '측구(m)', header: { text: '측구(m)' } },
+
+ // 분류식(m) > 오수관로
+ { name: 'pltwtrPlanAr', fieldName: '관로정비계획면적(㎢)', header: { text: '관로정비계획면적(㎢)' } },
+ { name: 'pltwtrImprnPlanExtn', fieldName: '관로정비계획연장(m)', header: { text: '관로정비계획연장(m)' } },
+ { name: 'pltwtrPlanExtn', fieldName: '계획연장(m)', header: { text: '계획연장(m)' }, editable: false },
+ { name: 'pltwtrFlctyExtn', fieldName: '시설연장(m)', header: { text: '시설연장(m)' }, editable: false },
+ { name: 'pltwtrSqreExtn', fieldName: '사각형(m)', header: { text: '사각형(m)' } },
+ { name: 'pltwtrCiclExtn', fieldName: '원형(m)', header: { text: '원형(m)' } },
+
+ // 분류식(m) > 우수관로
+ { name: 'rainwtrPlanAr', fieldName: '관로정비계획면적(㎢)', header: { text: '관로정비계획면적(㎢)' } },
+ { name: 'rainwtrImprnPlanExtn', fieldName: '관로정비계획연장(m)', header: { text: '관로정비계획연장(m)' } },
+ { name: 'rainwtrPlanExtn', fieldName: '계획연장(m)', header: { text: '계획연장(m)' }, editable: false },
+ { name: 'rainwtrFlctyExtn', fieldName: '시설연장(m)', header: { text: '시설연장(m)' }, editable: false },
+ { name: 'rainwtrSqreExtn', fieldName: '사각형(m)', header: { text: '사각형(m)' } },
+ { name: 'rainwtrCiclExtn', fieldName: '원형(m)', header: { text: '원형(m)' } },
+ { name: 'rainwtrOpswrExtn', fieldName: '개거(m)', header: { text: '개거(m)' } },
+ { name: 'rainwtrSdgttrExtn', fieldName: '측구(m)', header: { text: '측구(m)' } },
+
+ // 맨홀 및 기타 시설
+ { name: 'mnhleSite', fieldName: '합류식맨홀(개소)', header: { text: '합류식맨홀(개소)' } },
+ { name: 'pltwtrMnhleSite', fieldName: '오수맨홀(개소)', header: { text: '오수맨홀(개소)' } },
+ { name: 'rainwtrMnhleSite', fieldName: '우수맨홀(개소)', header: { text: '우수맨홀(개소)' } },
+ { name: 'pltwtrRcvrSite', fieldName: '오수받이(개소)', header: { text: '오수받이(개소)' } },
+ { name: 'rainwtrRcvrSite', fieldName: '빗물받이(개소)', header: { text: '빗물받이(개소)' } },
+ { name: 'soilspllSite', fieldName: '우수토실(개소)', header: { text: '우수토실(개소)' } },
+ { name: 'soilholeSite', fieldName: '우수토구(개소)', header: { text: '우수토구(개소)' } },
+
+ // 하수도대장 전산화
+ { name: 'sewerRegstrCmptExtn', fieldName: '하수도대장전산화연장(m)', header: { text: '하수도대장전산화연장(m)' } },
+ { name: 'sewerRegstrCmptRt', fieldName: '하수도대장전산화율(%)', header: { text: '하수도대장전산화율(%)' }, editable: false },
+
+ // 비고
+ { name: 'rmk', fieldName: '비고', header: { text: '비고' } },
+ ],
+ columnLayout: [
+ {
+ name: 'adminArea',
+ hideChildHeaders: false,
+ header: { text: '행정구역' },
+ items: ['sido', 'sgg'],
+ },
+ 'targetYr',
+ 'piplImprnPlanExtn',
+ 'piplPlanExtn',
+ 'piplFcltyExtn',
+ 'piplSupprt',
+ {
+ name: 'combined',
+ hideChildHeaders: false,
+ header: { text: '합류식(m)' },
+ items: [
+ 'cmbnPlanAr',
+ 'cmbnImprnPlanExtn',
+ 'cmbnPlanExtn',
+ 'cmbnFcltyExtn',
+ {
+ name: 'cmbnCulvert',
+ hideChildHeaders: false,
+ header: { text: '암거' },
+ items: ['cmbnRctglExtn', 'cmbnCicleExtn'],
+ },
+ 'cmbnOpswrExtn',
+ 'cmbnSdgttrExtn',
+ ],
+ },
+ {
+ name: 'separated',
+ hideChildHeaders: false,
+ header: { text: '분류식(m)' },
+ items: [
+ {
+ name: 'pollutedWater',
+ hideChildHeaders: false,
+ header: { text: '오수관로' },
+ items: [
+ 'pltwtrPlanAr',
+ 'pltwtrImprnPlanExtn',
+ 'pltwtrPlanExtn',
+ 'pltwtrFlctyExtn',
+ {
+ name: 'pltwtrCulvert',
+ hideChildHeaders: false,
+ header: { text: '암거' },
+ items: ['pltwtrSqreExtn', 'pltwtrCiclExtn'],
+ },
+ ],
+ },
+ {
+ name: 'rainWater',
+ hideChildHeaders: false,
+ header: { text: '우수관로' },
+ items: [
+ 'rainwtrPlanAr',
+ 'rainwtrImprnPlanExtn',
+ 'rainwtrPlanExtn',
+ 'rainwtrFlctyExtn',
+ {
+ name: 'rainwtrCulvert',
+ hideChildHeaders: false,
+ header: { text: '암거' },
+ items: ['rainwtrSqreExtn', 'rainwtrCiclExtn'],
+ },
+ 'rainwtrOpswrExtn',
+ 'rainwtrSdgttrExtn',
+ ],
+ },
+ ],
+ },
+ 'mnhleSite',
+ {
+ name: 'separatedManhole',
+ hideChildHeaders: false,
+ header: { text: '분류식' },
+ items: ['pltwtrMnhleSite', 'rainwtrMnhleSite'],
+ },
+ 'pltwtrRcvrSite',
+ 'rainwtrRcvrSite',
+ 'soilspllSite',
+ 'soilholeSite',
+ 'sewerRegstrCmptExtn',
+ 'sewerRegstrCmptRt',
+ 'rmk',
+ ],
+ rowStartNum: 4,
+ fixedColumns: 1,
+ tabKey: 'regionalFacilityStatus',
+ tabLabel: '지역별 시설현황'
+};
\ No newline at end of file
diff --git a/apps/st/src/components/util/grid/footerSummary.ts b/apps/st/src/components/util/grid/footerSummary.ts
index 740a3fc7d..300752cd5 100644
--- a/apps/st/src/components/util/grid/footerSummary.ts
+++ b/apps/st/src/components/util/grid/footerSummary.ts
@@ -1,5 +1,6 @@
import type { GridView, DataColumn } from "@/components/type/DataGrid.type";
+// 그리드 푸터 합계 계산 함수 (계산 로직)
export const getFooterSummary = (grid: GridView, column: DataColumn) => {
// 데이터 소스에서 직접 합계 계산
const dataSource = grid.getDataSource();
@@ -8,6 +9,7 @@ export const getFooterSummary = (grid: GridView, column: DataColumn) => {
for (let i = 0; i < rowCount; i++) {
const cellValue = dataSource.getValue(i, column.fieldName);
+
// 문자열인 경우 숫자로 변환
const numericValue = typeof cellValue === 'string'
? Number(String(cellValue).replace(/,/g, ''))
@@ -19,4 +21,25 @@ export const getFooterSummary = (grid: GridView, column: DataColumn) => {
}
return sum;
-};
\ No newline at end of file
+};
+
+// Footer 설정 객체 생성 함수
+const createSumFooter = (format: string) => ({
+ expression: 'sum' as const,
+ numberFormat: format,
+ valueCallback: (grid: GridView, column: DataColumn) => {
+ return getFooterSummary(grid, column);
+ },
+});
+
+// 1. 정수형 : #,##0
+export const footerInt = createSumFooter('#,##0');
+
+// 2. 소수점 1자리 : #,##0.0
+export const footerDecimal1 = createSumFooter('#,##0.0');
+
+// 3. 소수점 2자리 : #,##0.00
+export const footerDecimal2 = createSumFooter('#,##0.00');
+
+// 4. 소수점 3자리 : #,##0.000
+export const footerDecimal3 = createSumFooter('#,##0.000');
\ No newline at end of file