diff --git a/apps/st/src/components/statistics/management/SeweragePenetrationRateMng.tsx b/apps/st/src/components/statistics/management/SeweragePenetrationRateMng.tsx
index 64d826f85..94601064f 100644
--- a/apps/st/src/components/statistics/management/SeweragePenetrationRateMng.tsx
+++ b/apps/st/src/components/statistics/management/SeweragePenetrationRateMng.tsx
@@ -4,143 +4,31 @@ 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 { 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');
// 제출 로직
};
const saveFunc = () => {
- console.log('submit');
+ console.log('save');
// 저장 로직
};
const getLastYearDataFunc = () => {
console.log('get last year data');
- // 지난연도 데이터 가져오기 로직
+ // 전년도 데이터 가져오기
};
const SubmitExceptionFunc = () => {
console.log('submit exception');
- // 예외 제출 로직
+ // 예외 제출 로직
};
return (
@@ -152,7 +40,12 @@ const SeweragePenetrationRateMng = () => {
-
+
>
);
};
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..d25b774aa
--- /dev/null
+++ b/apps/st/src/components/util/column/management/SeweragePenetrationRateMngColumn.ts
@@ -0,0 +1,173 @@
+import type { GridView, DataColumn } from "@/components/type/DataGrid.type";
+import { getFooterSummary } from "@/components/util/grid/footerSummary";
+
+// Footer 설정 생성 함수
+const createSumFooter = (format: string) => ({
+ expression: 'sum' as const,
+ numberFormat: format,
+ valueCallback: (grid: GridView, column: DataColumn) => {
+ return getFooterSummary(grid, column);
+ },
+});
+
+// 1. 정수형 : #,##0
+const footerInt = createSumFooter('#,##0');
+
+// 2. 소수점 3자리 : #,##0.000
+const footerDecimal3 = createSumFooter('#,##0.000');
+
+// 3. 소수점 1자리 : #,##0.0
+const footerDecimal1 = createSumFooter('#,##0.0');
+
+/**
+ * 하수도 통계 관리 > 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