From 36146c3fc4cb3f300474907d32709cbb7957847a Mon Sep 17 00:00:00 2001 From: rsone001 Date: Fri, 2 Jan 2026 11:18:36 +0900 Subject: [PATCH 01/11] =?UTF-8?q?[feat]=20=20map=20=EC=B2=98=EB=A6=AC?= =?UTF-8?q?=EB=A1=9C=20columns=20editable=20=EC=98=B5=EC=85=98=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B0=8F=20=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../review/PublicSewageFacilityRvw.tsx | 17 +- .../statistics/review/PumpingStationRvw.tsx | 58 +-- .../review/SewageExcretaSlurgeRvw.tsx | 4 +- .../review/SewagePipeMaintainRvw.tsx | 4 +- .../statistics/review/SewagePipeRvw.tsx | 2 +- .../statistics/review/StatsInputSatusRvw.tsx | 11 +- .../review/PrivateSewageFacilityColumnRvw.ts | 252 ++++++------ .../review/SewageExcretaRelatedColumnRvw.ts | 246 +++++------- .../review/SewageExcretaSlurgeColumnRvw.ts | 150 +++---- .../util/column/review/SewagePipeColumnRvw.ts | 54 ++- .../review/SewagePipeMaintainColumnRvw.ts | 163 ++++---- .../review/SewageReservoirPumpColumnRvw.ts | 200 +++++----- .../column/review/SewerageFinanceColumnRvw.ts | 374 +++++++----------- .../review/SewerageServiceLevelColumnRvw.ts | 120 +++--- .../util/column/review/WaterReuseColumnRvw.ts | 98 ++--- 15 files changed, 778 insertions(+), 975 deletions(-) diff --git a/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx b/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx index 0bc14802e..2ffc89764 100644 --- a/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx +++ b/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx @@ -6,16 +6,19 @@ import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import ReturnButton from "@/components/button/ReturnButton"; const PublicSewageFacilityRvw = () => { - const columns = [ + const rawColumns = [ { name: 'sido', fieldName: '시도', header: { text: '시도' } }, { name: 'sgg', fieldName: '구군', header: { text: '구군' } }, { name: '구분', fieldName: '구분', header: { text: '구분' } }, { name: '소재지', fieldName: '소재지', header: { text: '소재지' } }, + { name: '시설명(500m3/일이상/미만)', fieldName: '시설명(500m3/일이상/미만)', header: { text: '시설명(500m3/일이상/미만)' } }, + //시설용량 { name: '시설용량(500m3/일이상/미만)', fieldName: '시설용량(500m3/일이상/미만)', header: { text: '시설용량(500m3/일이상/미만)' } }, { name: '(시설용량)물리적', fieldName: '(시설용량)물리적', header: { text: '물리적' } }, { name: '(시설용량)생물학적', fieldName: '(시설용량)생물학적', header: { text: '생물학적' } }, { name: '(시설용량)고도', fieldName: '(시설용량)고도', header: { text: '고도' } }, + //유입하수량 { name: '유입하수량(500m3/일이상/미만)', fieldName: '유입하수량(500m3/일이상/미만)', header: { text: '유입하수량(500m3/일이상/미만)' } }, { name: '(유입하수량)물리적', fieldName: '(유입하수량)물리적', header: { text: '물리적' } }, @@ -23,6 +26,7 @@ const PublicSewageFacilityRvw = () => { { name: '(유입하수량)고도', fieldName: '(유입하수량)고도', header: { text: '고도' } }, { name: '오수펌프_총양수량(m3/min)', fieldName: '오수펌프_총양수량(m3/min)', header: { text: '총양수량(m3/min)' } }, { name: '우수펌프_총양수량(m3/min)', fieldName: '우수펌프_총양수량(m3/min)', header: { text: '총양수량(m3/min)' } }, + //방류량 { name: '방류량(500m3/일이상/미만)', fieldName: '방류량(500m3/일이상/미만)', header: { text: '방류량(500m3/일이상/미만)' } }, { name: '(방류량)물리적', fieldName: '(방류량)물리적', header: { text: '물리적' } }, @@ -76,6 +80,11 @@ const PublicSewageFacilityRvw = () => { { name: 'rmk', fieldName: '비고', header: { text: '비고' } }, ]; + const columns = rawColumns.map(col => ({ + ...col, + editable: false + })); + const columnLayout = [ { name: 'groupA', @@ -83,6 +92,8 @@ const PublicSewageFacilityRvw = () => { header: { text: '행정구역' }, items: ['sido', 'sgg'], }, + '시설명(500m3/일이상/미만)', + '구분', '소재지', '시설용량(500m3/일이상/미만)', { @@ -169,22 +180,18 @@ const PublicSewageFacilityRvw = () => { const approveFunc = () => { console.log('approveFunc'); - // 승인 로직 }; const saveFunc = () => { console.log('submit'); - // 저장 로직 }; const reviewOpinionFunc = () => { console.log('reviewOpinionFunc'); - // 검토의견 작성 }; const returnFunc = () => { console.log('returnFunc'); - // 반려 }; return ( diff --git a/apps/st/src/components/statistics/review/PumpingStationRvw.tsx b/apps/st/src/components/statistics/review/PumpingStationRvw.tsx index 1048ad40b..f33ef9396 100644 --- a/apps/st/src/components/statistics/review/PumpingStationRvw.tsx +++ b/apps/st/src/components/statistics/review/PumpingStationRvw.tsx @@ -1,5 +1,4 @@ import SearchForm from "@/components/module/SearchForm"; - import DataGrid from "@/components/module/DataGrid"; import SaveButton from "@/components/button/SaveButton"; import ApproveButton from "@/components/button/ApproveButton"; @@ -7,9 +6,12 @@ import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import ReturnButton from "@/components/button/ReturnButton"; const PumpingStationRvw = () => { - const columns = [ + const rawColumns = [ + // 행정구역 { name: 'sido', fieldName: '시도', header: { text: '시도' } }, { name: 'sgg', fieldName: '구군', header: { text: '구군' } }, + + // 기본 정보 { name: '펌프장명', fieldName: '펌프장명', header: { text: '펌프장명' } }, { name: '구분', fieldName: '구분', header: { text: '구분' } }, { name: '처리장명', fieldName: '처리장명', header: { text: '처리장명' } }, @@ -17,46 +19,63 @@ const PumpingStationRvw = () => { { name: '위치', fieldName: '위치', header: { text: '위치' } }, { name: '가동년월일 yyyy-mm-dd', fieldName: '가동년월일 yyyy-mm-dd', header: { text: '가동년월일 yyyy-mm-dd' } }, { name: '계획배수면적(km2)', fieldName: '계획배수면적(km2)', header: { text: '계획배수면적(km2)' } }, + + // 계획배수량 { name: '청천시(A)', fieldName: '청천시(A)', header: { text: '청천시(A)' } }, { name: '우천시(B)', fieldName: '우천시(B)', header: { text: '우천시(B)' } }, { name: '우수량(B-A)', fieldName: '우수량(B-A)', header: { text: '우수량(B-A)' } }, + + // 총양수량 { name: '오수펌프_총양수량(m3/min)', fieldName: '오수펌프_총양수량(m3/min)', header: { text: '총양수량(m3/min)' } }, { name: '우수펌프_총양수량(m3/min)', fieldName: '우수펌프_총양수량(m3/min)', header: { text: '총양수량(m3/min)' } }, - //오수펌프(1) + + // 오수펌프(1) { name: '오수펌프(1)구경(mm)', fieldName: '오수펌프(1)구경(mm)', header: { text: '구경(mm)' } }, { name: '오수펌프(1)양수량(m3/min)', fieldName: '오수펌프(1)양수량(m3/min)', header: { text: '양수량(m3/min)' } }, { name: '오수펌프(1)펌프대수', fieldName: '오수펌프(1)펌프대수', header: { text: '펌프대수' } }, { name: '오수펌프(1)예비대수', fieldName: '오수펌프(1)예비대수', header: { text: '예비대수' } }, - //오수펌프(2) + + // 오수펌프(2) { name: '오수펌프(2)구경(mm)', fieldName: '오수펌프(2)구경(mm)', header: { text: '구경(mm)' } }, { name: '오수펌프(2)양수량(m3/min)', fieldName: '오수펌프(2)양수량(m3/min)', header: { text: '양수량(m3/min)' } }, { name: '오수펌프(2)펌프대수', fieldName: '오수펌프(2)펌프대수', header: { text: '펌프대수' } }, { name: '오수펌프(2)예비대수', fieldName: '오수펌프(2)예비대수', header: { text: '예비대수' } }, - //오수펌프(3) + + // 오수펌프(3) { name: '오수펌프(3)구경(mm)', fieldName: '오수펌프(3)구경(mm)', header: { text: '구경(mm)' } }, { name: '오수펌프(3)양수량(m3/min)', fieldName: '오수펌프(3)양수량(m3/min)', header: { text: '양수량(m3/min)' } }, { name: '오수펌프(3)펌프대수', fieldName: '오수펌프(3)펌프대수', header: { text: '펌프대수' } }, { name: '오수펌프(3)예비대수', fieldName: '오수펌프(3)예비대수', header: { text: '예비대수' } }, - //우수펌프(1) + + // 우수펌프(1) { name: '우수펌프(1)구경(mm)', fieldName: '우수펌프(1)구경(mm)', header: { text: '구경(mm)' } }, { name: '우수펌프(1)양수량(m3/min)', fieldName: '우수펌프(1)양수량(m3/min)', header: { text: '양수량(m3/min)' } }, { name: '우수펌프(1)펌프대수', fieldName: '우수펌프(1)펌프대수', header: { text: '펌프대수' } }, { name: '우수펌프(1)예비대수', fieldName: '우수펌프(1)예비대수', header: { text: '예비대수' } }, - //우수펌프(2) + + // 우수펌프(2) { name: '우수펌프(2)구경(mm)', fieldName: '우수펌프(2)구경(mm)', header: { text: '구경(mm)' } }, { name: '우수펌프(2)양수량(m3/min)', fieldName: '우수펌프(2)양수량(m3/min)', header: { text: '양수량(m3/min)' } }, { name: '우수펌프(2)펌프대수', fieldName: '우수펌프(2)펌프대수', header: { text: '펌프대수' } }, { name: '우수펌프(2)예비대수', fieldName: '우수펌프(2)예비대수', header: { text: '예비대수' } }, - //우수펌프(3) + + // 우수펌프(3) { name: '우수펌프(3)구경(mm)', fieldName: '우수펌프(3)구경(mm)', header: { text: '구경(mm)' } }, { name: '우수펌프(3)양수량(m3/min)', fieldName: '우수펌프(3)양수량(m3/min)', header: { text: '양수량(m3/min)' } }, { name: '우수펌프(3)펌프대수', fieldName: '우수펌프(3)펌프대수', header: { text: '펌프대수' } }, { name: '우수펌프(3)예비대수', fieldName: '우수펌프(3)예비대수', header: { text: '예비대수' } }, + // 운영 및 비고 { name: '연간전력사용량(kWh/년)', fieldName: '연간전력사용량(kWh/년)', header: { text: '연간전력사용량(kWh/년)' } }, { name: 'rmk', fieldName: '비고', header: { text: '비고' } }, ]; + + const columns = rawColumns.map(col => ({ + ...col, + editable: false + })); + const columnLayout = [ { name: 'groupA', @@ -126,25 +145,10 @@ const PumpingStationRvw = () => { 'rmk', ]; - const approveFunc = () => { - console.log('approveFunc'); - // 승인 로직 - }; - - const saveFunc = () => { - console.log('submit'); - // 저장 로직 - }; - - const reviewOpinionFunc = () => { - console.log('reviewOpinionFunc'); - // 검토의견 작성 - }; - - const returnFunc = () => { - console.log('returnFunc'); - // 반려 - }; + const approveFunc = () => { console.log('approveFunc'); }; + const saveFunc = () => { console.log('submit'); }; + const reviewOpinionFunc = () => { console.log('reviewOpinionFunc'); }; + const returnFunc = () => { console.log('returnFunc'); }; return ( <> diff --git a/apps/st/src/components/statistics/review/SewageExcretaSlurgeRvw.tsx b/apps/st/src/components/statistics/review/SewageExcretaSlurgeRvw.tsx index 2433ba89f..6293feb21 100644 --- a/apps/st/src/components/statistics/review/SewageExcretaSlurgeRvw.tsx +++ b/apps/st/src/components/statistics/review/SewageExcretaSlurgeRvw.tsx @@ -5,7 +5,7 @@ import ApproveButton from "@/components/button/ApproveButton"; import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import ReturnButton from "@/components/button/ReturnButton"; -import { SewageExcretaSlurgeInfoList } from "@/components/util/column/review/SewageExcretaSlurgeColumnRvw"; +import { SewageExcretaSludgeInfoListRvw } from "@/components/util/column/review/SewageExcretaSlurgeColumnRvw"; const SewageExcretaSlurgeRvw = () => { @@ -41,7 +41,7 @@ const SewageExcretaSlurgeRvw = () => { - + ); }; diff --git a/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx b/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx index 74c2f6f7c..14cdae786 100644 --- a/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx +++ b/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx @@ -5,7 +5,7 @@ import ApproveButton from "@/components/button/ApproveButton"; import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import ReturnButton from "@/components/button/ReturnButton"; -import { SewagePipeMaintainColumnInfoListRvw } from "@/components/util/column/review/SewagePipeMaintainColumnRvw"; +import { SewagePipeMaintainColumnInfoList } from "@/components/util/column/review/SewagePipeMaintainColumnRvw"; const SewagePipeMaintainRvw = () => { @@ -41,7 +41,7 @@ const SewagePipeMaintainRvw = () => { - + ); }; diff --git a/apps/st/src/components/statistics/review/SewagePipeRvw.tsx b/apps/st/src/components/statistics/review/SewagePipeRvw.tsx index 634a21285..5f9c8d976 100644 --- a/apps/st/src/components/statistics/review/SewagePipeRvw.tsx +++ b/apps/st/src/components/statistics/review/SewagePipeRvw.tsx @@ -41,7 +41,7 @@ const SewagePipeRvw = () => { - + ); }; diff --git a/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx b/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx index 11684751d..7d4039d91 100644 --- a/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx +++ b/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx @@ -6,7 +6,7 @@ import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import ReturnButton from "@/components/button/ReturnButton"; const StatsInputSatusRvw = () => { - const columns = [ + const rawColumns = [ { name: 'sido', fieldName: '시도', header: { text: '시도' } }, { name: 'sgg', fieldName: '구군', header: { text: '구군' } }, @@ -89,6 +89,11 @@ const StatsInputSatusRvw = () => { { name: 'rmk', fieldName: '비고', header: { text: '비고' } }, ]; + const columns = rawColumns.map(col => ({ + ...col, + editable: false + })); + const columnLayout = [ { name: 'groupA', @@ -179,22 +184,18 @@ const StatsInputSatusRvw = () => { const approveFunc = () => { console.log('approveFunc'); - // 승인 로직 }; const saveFunc = () => { console.log('submit'); - // 저장 로직 }; const reviewOpinionFunc = () => { console.log('reviewOpinionFunc'); - // 검토의견 작성 }; const returnFunc = () => { console.log('returnFunc'); - // 반려 }; return ( diff --git a/apps/st/src/components/util/column/review/PrivateSewageFacilityColumnRvw.ts b/apps/st/src/components/util/column/review/PrivateSewageFacilityColumnRvw.ts index b83243be5..9e3d2c8ba 100644 --- a/apps/st/src/components/util/column/review/PrivateSewageFacilityColumnRvw.ts +++ b/apps/st/src/components/util/column/review/PrivateSewageFacilityColumnRvw.ts @@ -1,12 +1,14 @@ +import type { GridView, DataColumn } from "@/components/type/DataGrid.type"; +import { getFooterSummary } from "@/components/util/grid/footerSummary"; -export const PrivateSewageFacilityInfoListRvw = [ +const rawPrivateSewageList = [ { tabKey: 'a', tabLabel: '처리용량별 오수처리시설 현황', - rowStartNum: 3, // 3단 헤더 구조 반영 - fixedColumns: 2, // 순번, 시도, 시군구, 행정코드, 구분까지 고정 + rowStartNum: 3, + fixedColumns: 2, columns: [ - /* 1. 행정 및 기본 정보 (Band: Left) */ + /* 1. 행정 및 기본 정보 */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, @@ -14,7 +16,7 @@ export const PrivateSewageFacilityInfoListRvw = [ /* 2. 총계 */ { name: 'STTY_SM', fieldName: 'STTY_SM', header: { text: '총계' } }, - /* 3. 하수처리구역 내 (단위: ㎥/일) */ + /* 3. 하수처리구역 내 */ { name: 'STTY_ZONE_INNER_SM', fieldName: 'STTY_ZONE_INNER_SM', header: { text: '계' } }, { name: 'STTY_ZONE_INNER_2', fieldName: 'STTY_ZONE_INNER_2', header: { text: '2이하' } }, { name: 'STTY_ZONE_INNER_3', fieldName: 'STTY_ZONE_INNER_3', header: { text: '3~10' } }, @@ -24,7 +26,7 @@ export const PrivateSewageFacilityInfoListRvw = [ { name: 'STTY_ZONE_INNER_101', fieldName: 'STTY_ZONE_INNER_101', header: { text: '101~500' } }, { name: 'STTY_ZONE_INNER_501', fieldName: 'STTY_ZONE_INNER_501', header: { text: '501이상' } }, - /* 4. 하수처리구역 외 (단위: ㎥/일) */ + /* 4. 하수처리구역 외 */ { name: 'STTY_ZONE_OUTER_SM', fieldName: 'STTY_ZONE_OUTER_SM', header: { text: '계' } }, { name: 'STTY_ZONE_OUTER_2', fieldName: 'STTY_ZONE_OUTER_2', header: { text: '2이하' } }, { name: 'STTY_ZONE_OUTER_3', fieldName: 'STTY_ZONE_OUTER_3', header: { text: '3~10' } }, @@ -34,39 +36,22 @@ export const PrivateSewageFacilityInfoListRvw = [ { name: 'STTY_ZONE_OUTER_101', fieldName: 'STTY_ZONE_OUTER_101', header: { text: '101~500' } }, { name: 'STTY_ZONE_OUTER_501', fieldName: 'STTY_ZONE_OUTER_501', header: { text: '501이상' } }, - /* 5. 기타 및 의견 */ + /* 5. 비고 */ { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, ], columnLayout: [ + { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, + 'YR_GBN', 'STTY_SM', { - name: 'addrGroup', - header: { text: '행정구역' }, - items: ['SIDO', 'GUGUN'], - }, - - 'YR_GBN', - 'STTY_SM', - { - name: 'individualGroup', - header: { text: '오수처리시설' }, + name: 'individualGroup', header: { text: '오수처리시설' }, items: [ { - name: 'innerGroup', - header: { text: '하수처리구역 내(㎥/일)' }, - items: [ - 'STTY_ZONE_INNER_SM', 'STTY_ZONE_INNER_2', 'STTY_ZONE_INNER_3', - 'STTY_ZONE_INNER_11', 'STTY_ZONE_INNER_21', 'STTY_ZONE_INNER_51', - 'STTY_ZONE_INNER_101', 'STTY_ZONE_INNER_501' - ] + name: 'innerGroup', header: { text: '하수처리구역 내(㎥/일)' }, + items: ['STTY_ZONE_INNER_SM', 'STTY_ZONE_INNER_2', 'STTY_ZONE_INNER_3', 'STTY_ZONE_INNER_11', 'STTY_ZONE_INNER_21', 'STTY_ZONE_INNER_51', 'STTY_ZONE_INNER_101', 'STTY_ZONE_INNER_501'] }, { - name: 'outerGroup', - header: { text: '하수처리구역 외(㎥/일)' }, - items: [ - 'STTY_ZONE_OUTER_SM', 'STTY_ZONE_OUTER_2', 'STTY_ZONE_OUTER_3', - 'STTY_ZONE_OUTER_11', 'STTY_ZONE_OUTER_21', 'STTY_ZONE_OUTER_51', - 'STTY_ZONE_OUTER_101', 'STTY_ZONE_OUTER_501' - ] + name: 'outerGroup', header: { text: '하수처리구역 외(㎥/일)' }, + items: ['STTY_ZONE_OUTER_SM', 'STTY_ZONE_OUTER_2', 'STTY_ZONE_OUTER_3', 'STTY_ZONE_OUTER_11', 'STTY_ZONE_OUTER_21', 'STTY_ZONE_OUTER_51', 'STTY_ZONE_OUTER_101', 'STTY_ZONE_OUTER_501'] } ] }, @@ -74,117 +59,106 @@ export const PrivateSewageFacilityInfoListRvw = [ ] }, { - tabKey: 'b', - tabLabel: '정화조현황', - rowStartNum: 4, // XML의 4단 헤더 구조 반영 - fixedColumns: 1, // 순번, 시도, 시군구, 구분까지 고정 - columns: [ - /* 1. 행정 및 기본 정보 (Band: Left) */ - { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, - { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, - { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, - { name: 'TOT_FCLTY_CNT', fieldName: 'TOT_FCLTY_CNT', header: { text: '총 시설 수\n(A+D)' } }, + tabKey: 'b', + tabLabel: '정화조현황', + rowStartNum: 4, + fixedColumns: 1, + columns: [ + /* 1. 행정 및 기본 정보 */ + { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, + { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, + { name: 'TOT_FCLTY_CNT', fieldName: 'TOT_FCLTY_CNT', header: { text: '총 시설 수\n(A+D)' } }, - /* 2. 하수처리구역 내 (Inner) */ - { name: 'SPZI_SM', fieldName: 'SPZI_SM', header: { text: '총계\nA=(B+C)/2' } }, - // 처리방식별 (B) - { name: 'SPZI_NPFL', fieldName: 'SPZI_NPFL', header: { text: '자연유하' } }, - { name: 'SPZI_ENFCT_PUMP', fieldName: 'SPZI_ENFCT_PUMP', header: { text: '강제펌핑식' } }, - { name: 'SPZI_TFM', fieldName: 'SPZI_TFM', header: { text: '살수여상' } }, - { name: 'SPZI_ARTM', fieldName: 'SPZI_ARTM', header: { text: '폭기방법' } }, - { name: 'SPZI_CTARM', fieldName: 'SPZI_CTARM', header: { text: '접촉폭기' } }, - { name: 'SPZI_ETC', fieldName: 'SPZI_ETC', header: { text: '기타' } }, - // 처리용량별 (C) - { name: 'SPZI_PROC_CPC_SM', fieldName: 'SPZI_PROC_CPC_SM', header: { text: '계(C)' } }, - { name: 'SPZI_PROC_CPC_1', fieldName: 'SPZI_PROC_CPC_1', header: { text: '10인조 이하' } }, - { name: 'SPZI_PROC_CPC_2', fieldName: 'SPZI_PROC_CPC_2', header: { text: '11~20' } }, - { name: 'SPZI_PROC_CPC_3', fieldName: 'SPZI_PROC_CPC_3', header: { text: '21~30' } }, - { name: 'SPZI_PROC_CPC_4', fieldName: 'SPZI_PROC_CPC_4', header: { text: '31~50' } }, - { name: 'SPZI_PROC_CPC_5', fieldName: 'SPZI_PROC_CPC_5', header: { text: '51~199' } }, - { name: 'SPZI_PROC_CPC_6', fieldName: 'SPZI_PROC_CPC_6', header: { text: '200~499' } }, - { name: 'SPZI_PROC_CPC_7', fieldName: 'SPZI_PROC_CPC_7', header: { text: '500~999' } }, - { name: 'SPZI_PROC_CPC_8', fieldName: 'SPZI_PROC_CPC_8', header: { text: '1,000이상' } }, + /* 2. 하수처리구역 내 - 총계 및 처리방식별 */ + { name: 'SPZI_SM', fieldName: 'SPZI_SM', header: { text: '총계\nA=(B+C)/2' } }, + { name: 'SPZI_NPFL', fieldName: 'SPZI_NPFL', header: { text: '자연유하' } }, + { name: 'SPZI_ENFCT_PUMP', fieldName: 'SPZI_ENFCT_PUMP', header: { text: '강제펌핑식' } }, + { name: 'SPZI_TFM', fieldName: 'SPZI_TFM', header: { text: '살수여상' } }, + { name: 'SPZI_ARTM', fieldName: 'SPZI_ARTM', header: { text: '폭기방법' } }, + { name: 'SPZI_CTARM', fieldName: 'SPZI_CTARM', header: { text: '접촉폭기' } }, + { name: 'SPZI_ETC', fieldName: 'SPZI_ETC', header: { text: '기타' } }, - { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } } - ], - columnLayout: [ - { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - 'YR_GBN', 'TOT_FCLTY_CNT', - { - name: 'innerMainGroup', - header: { text: '하수처리구역 내' }, - items: [ - 'SPZI_SM', - { - name: 'innerMethodGroup', - header: { text: '처리방식별' }, - items: [ - { name: 'innerTankGroup', header: { text: '부패탱크' }, items: ['SPZI_NPFL', 'SPZI_ENFCT_PUMP'] }, - 'SPZI_TFM', 'SPZI_ARTM', 'SPZI_CTARM', 'SPZI_ETC' - ] - }, - { - name: 'innerCpcGroup', - header: { text: '처리용량별' }, - items: ['SPZI_PROC_CPC_SM', 'SPZI_PROC_CPC_1', 'SPZI_PROC_CPC_2', 'SPZI_PROC_CPC_3', 'SPZI_PROC_CPC_4', 'SPZI_PROC_CPC_5', 'SPZI_PROC_CPC_6', 'SPZI_PROC_CPC_7', 'SPZI_PROC_CPC_8'] - } - ] - }, - 'RMK' - ] -},{ - tabKey: 'c', - tabLabel: '개인하수도 관리지역 지정공고 현황', - rowStartNum: 3, // 3단 헤더 구조 반영 - fixedColumns: 1, // 순번, 시도, 시군구, 구분까지 고정 - columns: [ - /* 1. 행정 및 기본 정보 (Band: Left) */ - { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, - { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, - { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, + /* 3. 하수처리구역 내 - 처리용량별 */ + { name: 'SPZI_PROC_CPC_SM', fieldName: 'SPZI_PROC_CPC_SM', header: { text: '계(C)' } }, + { name: 'SPZI_PROC_CPC_1', fieldName: 'SPZI_PROC_CPC_1', header: { text: '10인조 이하' } }, + { name: 'SPZI_PROC_CPC_2', fieldName: 'SPZI_PROC_CPC_2', header: { text: '11~20' } }, + { name: 'SPZI_PROC_CPC_3', fieldName: 'SPZI_PROC_CPC_3', header: { text: '21~30' } }, + { name: 'SPZI_PROC_CPC_4', fieldName: 'SPZI_PROC_CPC_4', header: { text: '31~50' } }, + { name: 'SPZI_PROC_CPC_5', fieldName: 'SPZI_PROC_CPC_5', header: { text: '51~199' } }, + { name: 'SPZI_PROC_CPC_6', fieldName: 'SPZI_PROC_CPC_6', header: { text: '200~499' } }, + { name: 'SPZI_PROC_CPC_7', fieldName: 'SPZI_PROC_CPC_7', header: { text: '500~999' } }, + { name: 'SPZI_PROC_CPC_8', fieldName: 'SPZI_PROC_CPC_8', header: { text: '1,000이상' } }, - /* 2. 관리지역 공고 현황 (하수도법 제34조의2) */ - { name: 'MGMT_AR', fieldName: 'MGMT_AR', header: { text: '공고지역\n(개소)' } }, - { name: 'APPN_SCOPE', fieldName: 'APPN_SCOPE', header: { text: '지정범위\n(㎢)' } }, + /* 4. 비고 */ + { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } } + ], + columnLayout: [ + { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, + 'YR_GBN', 'TOT_FCLTY_CNT', + { + name: 'innerMainGroup', header: { text: '하수처리구역 내' }, + items: [ + 'SPZI_SM', + { + name: 'innerMethodGroup', header: { text: '처리방식별' }, + items: [{ name: 'innerTankGroup', header: { text: '부패탱크' }, items: ['SPZI_NPFL', 'SPZI_ENFCT_PUMP'] }, 'SPZI_TFM', 'SPZI_ARTM', 'SPZI_CTARM', 'SPZI_ETC'] + }, + { + name: 'innerCpcGroup', header: { text: '처리용량별' }, + items: ['SPZI_PROC_CPC_SM', 'SPZI_PROC_CPC_1', 'SPZI_PROC_CPC_2', 'SPZI_PROC_CPC_3', 'SPZI_PROC_CPC_4', 'SPZI_PROC_CPC_5', 'SPZI_PROC_CPC_6', 'SPZI_PROC_CPC_7', 'SPZI_PROC_CPC_8'] + } + ] + }, + 'RMK' + ] + }, + { + tabKey: 'c', + tabLabel: '개인하수도 관리지역 지정공고 현황', + rowStartNum: 3, + fixedColumns: 1, + columns: [ + /* 1. 행정 및 기본 정보 */ + { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, + { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, - /* 3. 정화조 상세 */ - { name: 'WRRTN_CNT', fieldName: 'WRRTN_CNT', header: { text: '개소수' } }, - { name: 'WRRTN_CPC', fieldName: 'WRRTN_CPC', header: { text: '처리용량\n(인/일)' } }, + /* 2. 관리지역 공고 현황 */ + { name: 'MGMT_AR', fieldName: 'MGMT_AR', header: { text: '공고지역\n(개소)' } }, + { name: 'APPN_SCOPE', fieldName: 'APPN_SCOPE', header: { text: '지정범위\n(㎢)' } }, - /* 4. 오수시설 상세 */ - { name: 'STTY_CNT', fieldName: 'STTY_CNT', header: { text: '개소수' } }, - { name: 'STTY_CPC', fieldName: 'STTY_CPC', header: { text: '처리용량\n(㎥/일)' } }, + /* 3. 정화조 상세 */ + { name: 'WRRTN_CNT', fieldName: 'WRRTN_CNT', header: { text: '개소수' } }, + { name: 'WRRTN_CPC', fieldName: 'WRRTN_CPC', header: { text: '처리용량\n(인/일)' } }, - /* 5. 기타 및 의견 */ - { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, - ], - columnLayout: [ - { - name: 'addrGroup', - header: { text: '행정구역' }, - items: ['SIDO', 'GUGUN'], - }, - 'YR_GBN', - { - name: 'mgmtMainGroup', - header: { text: '개인하수도관리지역공고현황\n(하수도법 제34조의2)' }, - items: [ - 'MGMT_AR', - 'APPN_SCOPE', - { - name: 'septictankGroup', - header: { text: '정화조' }, - items: ['WRRTN_CNT', 'WRRTN_CPC'] - }, - { - name: 'sewageFacGroup', - header: { text: '오수시설' }, - items: ['STTY_CNT', 'STTY_CPC'] - } - ] - }, - 'RMK' - ] -} - -]; \ No newline at end of file + /* 4. 오수시설 상세 */ + { name: 'STTY_CNT', fieldName: 'STTY_CNT', header: { text: '개소수' } }, + { name: 'STTY_CPC', fieldName: 'STTY_CPC', header: { text: '처리용량\n(㎥/일)' } }, + + /* 5. 비고 */ + { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, + ], + columnLayout: [ + { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, + 'YR_GBN', + { + name: 'mgmtMainGroup', header: { text: '개인하수도관리지역공고현황\n(하수도법 제34조의2)' }, + items: [ + 'MGMT_AR', 'APPN_SCOPE', + { name: 'septictankGroup', header: { text: '정화조' }, items: ['WRRTN_CNT', 'WRRTN_CPC'] }, + { name: 'sewageFacGroup', header: { text: '오수시설' }, items: ['STTY_CNT', 'STTY_CPC'] } + ] + }, + 'RMK' + ] + } +]; + +export const PrivateSewageFacilityInfoListRvw = rawPrivateSewageList.map(tab => ({ + ...tab, + columns: tab.columns.map(col => ({ + ...col, + editable: false + })) +})); \ No newline at end of file diff --git a/apps/st/src/components/util/column/review/SewageExcretaRelatedColumnRvw.ts b/apps/st/src/components/util/column/review/SewageExcretaRelatedColumnRvw.ts index c24a2a5b8..e9bcfac0d 100644 --- a/apps/st/src/components/util/column/review/SewageExcretaRelatedColumnRvw.ts +++ b/apps/st/src/components/util/column/review/SewageExcretaRelatedColumnRvw.ts @@ -1,10 +1,12 @@ +import type { GridView, DataColumn } from "@/components/type/DataGrid.type"; +import { getFooterSummary } from "@/components/util/grid/footerSummary"; -export const SewageExcretaRelatedInfoListRvw=[ +const rawExcretaRelatedList = [ { tabKey: 'a', tabLabel: '공공기관 하수분야', - rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2") - fixedColumns: 2, // 순번, 시도, 시군구, 직제, 구분까지 고정 + rowStartNum: 2, + fixedColumns: 2, columns: [ /* 1. 행정 및 조직 정보 (Band: Left) */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, @@ -26,9 +28,7 @@ export const SewageExcretaRelatedInfoListRvw=[ { name: 'TCHNLGY_ETC', fieldName: 'TCHNLGY_ETC', header: { text: '기타' } }, /* 4. 기타 및 비고 */ - { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, - ], columnLayout: [ { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, @@ -40,162 +40,132 @@ export const SewageExcretaRelatedInfoListRvw=[ name: 'techJobGroup', header: { text: '기술직' }, items: [ - 'TCHNLGY_JSSFC_SM', - 'ENGRK_JSSFC', - 'MCHN_JSSFC', - 'ELCTY_JSSFC', - 'CHMSTRY_JSSFC', - 'ENVRN_JSSFC', - 'TCHNLGY_ETC' + 'TCHNLGY_JSSFC_SM', 'ENGRK_JSSFC', 'MCHN_JSSFC', 'ELCTY_JSSFC', 'CHMSTRY_JSSFC', 'ENVRN_JSSFC', 'TCHNLGY_ETC' ] }, 'RMK', - ] - },{ - tabKey: 'b', - tabLabel: '공공기관 분뇨분야', - rowStartNum: 2, // 2단 헤더 구조 - fixedColumns: 1, // 순번, 시도, 시군구, 직제, 구분까지 고정 - columns: [ - /* 1. 행정 및 조직 정보 (Band: Left) */ - { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, - { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, - { name: 'OCGNZ', fieldName: 'OCGNZ', header: { text: '직제' } }, - { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, + }, + { + tabKey: 'b', + tabLabel: '공공기관 분뇨분야', + rowStartNum: 2, + fixedColumns: 1, + columns: [ + /* 1. 행정 및 조직 정보 (Band: Left) */ + { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, + { name: 'OCGNZ', fieldName: 'OCGNZ', header: { text: '직제' } }, + { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, - /* 2. 인력 총계 및 행정직 */ - { name: 'TOT_WTR_QRM', fieldName: 'TOT_WTR_QRM', header: { text: '직원총수' } }, - { name: 'ADMINIST_JSSFC', fieldName: 'ADMINIST_JSSFC', header: { text: '행정직' } }, + /* 2. 인력 총계 및 행정직 */ + { name: 'TOT_WTR_QRM', fieldName: 'TOT_WTR_QRM', header: { text: '직원총수' } }, + { name: 'ADMINIST_JSSFC', fieldName: 'ADMINIST_JSSFC', header: { text: '행정직' } }, - /* 3. 기술직 상세 (단위: 명) */ - { name: 'TCHNLGY_JSSFC_SM', fieldName: 'TCHNLGY_JSSFC_SM', header: { text: '계' } }, - { name: 'ENGRK_JSSFC', fieldName: 'ENGRK_JSSFC', header: { text: '토목' } }, - { name: 'MCHN_JSSFC', fieldName: 'MCHN_JSSFC', header: { text: '기계' } }, - { name: 'ELCTY_JSSFC', fieldName: 'ELCTY_JSSFC', header: { text: '전기' } }, - { name: 'CHMSTRY_JSSFC', fieldName: 'CHMSTRY_JSSFC', header: { text: '화공' } }, - { name: 'ENVRN_JSSFC', fieldName: 'ENVRN_JSSFC', header: { text: '환경' } }, - { name: 'TCHNLGY_ETC', fieldName: 'TCHNLGY_ETC', header: { text: '기타' } }, + /* 3. 기술직 상세 (단위: 명) */ + { name: 'TCHNLGY_JSSFC_SM', fieldName: 'TCHNLGY_JSSFC_SM', header: { text: '계' } }, + { name: 'ENGRK_JSSFC', fieldName: 'ENGRK_JSSFC', header: { text: '토목' } }, + { name: 'MCHN_JSSFC', fieldName: 'MCHN_JSSFC', header: { text: '기계' } }, + { name: 'ELCTY_JSSFC', fieldName: 'ELCTY_JSSFC', header: { text: '전기' } }, + { name: 'CHMSTRY_JSSFC', fieldName: 'CHMSTRY_JSSFC', header: { text: '화공' } }, + { name: 'ENVRN_JSSFC', fieldName: 'ENVRN_JSSFC', header: { text: '환경' } }, + { name: 'TCHNLGY_ETC', fieldName: 'TCHNLGY_ETC', header: { text: '기타' } }, - /* 4. 기타 및 비고 */ - { name: 'ETC', fieldName: 'ETC', header: { text: '기타' } }, - { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, - - ], - columnLayout: [ - { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - 'OCGNZ', - 'YR_GBN', - 'TOT_WTR_QRM', - 'ADMINIST_JSSFC', - { - name: 'techJobGroup', - header: { text: '기술직' }, - items: [ - 'TCHNLGY_JSSFC_SM', - 'ENGRK_JSSFC', - 'MCHN_JSSFC', - 'ELCTY_JSSFC', - 'CHMSTRY_JSSFC', - 'ENVRN_JSSFC', - 'TCHNLGY_ETC' - ] - }, - 'ETC', - 'RMK', - ] -}, -{ + /* 4. 기타 및 비고 */ + { name: 'ETC', fieldName: 'ETC', header: { text: '기타' } }, + { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, + ], + columnLayout: [ + { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, + 'OCGNZ', 'YR_GBN', 'TOT_WTR_QRM', 'ADMINIST_JSSFC', + { + name: 'techJobGroup', + header: { text: '기술직' }, + items: [ + 'TCHNLGY_JSSFC_SM', 'ENGRK_JSSFC', 'MCHN_JSSFC', 'ELCTY_JSSFC', 'CHMSTRY_JSSFC', 'ENVRN_JSSFC', 'TCHNLGY_ETC' + ] + }, + 'ETC', 'RMK', + ] + }, + { tabKey: 'c', tabLabel: '분뇨수집·운반업', - rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2") - fixedColumns: 2, // 순번, 시도, 시군구, 구분까지 고정 + rowStartNum: 2, + fixedColumns: 2, columns: [ - /* 1. 행정 및 기본 정보 (Band: Left) */ - { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, - { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, - { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, + /* 1. 행정 및 기본 정보 (Band: Left) */ + { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, + { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, - /* 2. 업체 및 인력 현황 */ - { name: 'ECSCS_SM', fieldName: 'ECSCS_SM', header: { text: '업체수(개소)' } }, - { name: 'ECSCS_BSMN', fieldName: 'ECSCS_BSMN', header: { text: '종사인원(명)' } }, + /* 2. 업체 및 인력 현황 */ + { name: 'ECSCS_SM', fieldName: 'ECSCS_SM', header: { text: '업체수(개소)' } }, + { name: 'ECSCS_BSMN', fieldName: 'ECSCS_BSMN', header: { text: '종사인원(명)' } }, - /* 3. 시설(차량) 확보현황 (단위: 대수) */ - { name: 'VHCLE_SM', fieldName: 'VHCLE_SM', header: { text: '계' } }, - { name: 'THREE_BELOW', fieldName: 'THREE_BELOW', header: { text: '3톤이하' } }, - { name: 'FOUR_BELOW', fieldName: 'FOUR_BELOW', header: { text: '4.5톤이하' } }, - { name: 'EIGHT_BELOW', fieldName: 'EIGHT_BELOW', header: { text: '8톤이하' } }, - { name: 'ETC', fieldName: 'ETC', header: { text: '기타' } }, + /* 3. 시설(차량) 확보현황 (단위: 대수) */ + { name: 'VHCLE_SM', fieldName: 'VHCLE_SM', header: { text: '계' } }, + { name: 'THREE_BELOW', fieldName: 'THREE_BELOW', header: { text: '3톤이하' } }, + { name: 'FOUR_BELOW', fieldName: 'FOUR_BELOW', header: { text: '4.5톤이하' } }, + { name: 'EIGHT_BELOW', fieldName: 'EIGHT_BELOW', header: { text: '8톤이하' } }, + { name: 'ETC', fieldName: 'ETC', header: { text: '기타' } }, - /* 4. 실적 및 비고 */ - { name: 'COLCT_TRSP_ACMSLT', fieldName: 'COLCT_TRSP_ACMSLT', header: { text: '수집·운반실적\n(㎥/년)' } }, - { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, + /* 4. 실적 및 비고 */ + { name: 'COLCT_TRSP_ACMSLT', fieldName: 'COLCT_TRSP_ACMSLT', header: { text: '수집·운반실적\n(㎥/년)' } }, + { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, ], columnLayout: [ - { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - 'YR_GBN', - 'ECSCS_SM', - 'ECSCS_BSMN', - { - name: 'vehicleGroup', - header: { text: '시설(차량) 확보현황(대수)' }, - items: [ - 'VHCLE_SM', - 'THREE_BELOW', - 'FOUR_BELOW', - 'EIGHT_BELOW', - 'ETC' - ] - }, - 'COLCT_TRSP_ACMSLT', - 'RMK' + { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, + 'YR_GBN', 'ECSCS_SM', 'ECSCS_BSMN', + { + name: 'vehicleGroup', + header: { text: '시설(차량) 확보현황(대수)' }, + items: ['VHCLE_SM', 'THREE_BELOW', 'FOUR_BELOW', 'EIGHT_BELOW', 'ETC'] + }, + 'COLCT_TRSP_ACMSLT', 'RMK' ] -}, -{ + }, + { tabKey: 'd', tabLabel: '개인하수처리관련업', - rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2") - fixedColumns: 2, // 순번, 시도, 시군구, 구분까지 고정 + rowStartNum: 2, + fixedColumns: 2, columns: [ - /* 1. 행정 및 기본 정보 (Band: Left) */ - { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, - { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, - { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, + /* 1. 행정 및 기본 정보 (Band: Left) */ + { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, + { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, - /* 2. 개인하수처리시설 설계ㆍ시공업 */ - { name: 'CNSTRCT_ENTRPS', fieldName: 'CNSTRCT_ENTRPS', header: { text: '업소수' } }, - { name: 'CNSTRCT_BSMN', fieldName: 'CNSTRCT_BSMN', header: { text: '종사인원(명)' } }, + /* 2. 개인하수처리시설 설계ㆍ시공업 */ + { name: 'CNSTRCT_ENTRPS', fieldName: 'CNSTRCT_ENTRPS', header: { text: '업소수' } }, + { name: 'CNSTRCT_BSMN', fieldName: 'CNSTRCT_BSMN', header: { text: '종사인원(명)' } }, - /* 3. 개인하수처리시설 제조업 */ - { name: 'MNFCTUR_ENTRPS', fieldName: 'MNFCTUR_ENTRPS', header: { text: '업소수' } }, - { name: 'MNFCTUR_BSMN', fieldName: 'MNFCTUR_BSMN', header: { text: '종사인원(명)' } }, + /* 3. 개인하수처리시설 제조업 */ + { name: 'MNFCTUR_ENTRPS', fieldName: 'MNFCTUR_ENTRPS', header: { text: '업소수' } }, + { name: 'MNFCTUR_BSMN', fieldName: 'MNFCTUR_BSMN', header: { text: '종사인원(명)' } }, - /* 4. 개인하수처리시설 관리업 */ - { name: 'MGMT_ENTRPS', fieldName: 'MGMT_ENTRPS', header: { text: '업소수' } }, - { name: 'MGMT_BSMN', fieldName: 'MGMT_BSMN', header: { text: '종사인원(명)' } }, + /* 4. 개인하수처리시설 관리업 */ + { name: 'MGMT_ENTRPS', fieldName: 'MGMT_ENTRPS', header: { text: '업소수' } }, + { name: 'MGMT_BSMN', fieldName: 'MGMT_BSMN', header: { text: '종사인원(명)' } }, - /* 5. 기타 및 의견 */ - { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } } + /* 5. 기타 및 비고 */ + { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } } ], columnLayout: [ - { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - 'YR_GBN', - { - name: 'constructGroup', - header: { text: '개인하수처리시설 설계ㆍ시공업' }, - items: ['CNSTRCT_ENTRPS', 'CNSTRCT_BSMN'] - }, - { - name: 'manufactureGroup', - header: { text: '개인하수처리시설 제조업' }, - items: ['MNFCTUR_ENTRPS', 'MNFCTUR_BSMN'] - }, - { - name: 'managementGroup', - header: { text: '개인하수처리시설 관리업' }, - items: ['MGMT_ENTRPS', 'MGMT_BSMN'] - }, - 'RMK' + { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, + 'YR_GBN', + { name: 'constructGroup', header: { text: '개인하수처리시설 설계ㆍ시공업' }, items: ['CNSTRCT_ENTRPS', 'CNSTRCT_BSMN'] }, + { name: 'manufactureGroup', header: { text: '개인하수처리시설 제조업' }, items: ['MNFCTUR_ENTRPS', 'MNFCTUR_BSMN'] }, + { name: 'managementGroup', header: { text: '개인하수처리시설 관리업' }, items: ['MGMT_ENTRPS', 'MGMT_BSMN'] }, + 'RMK' ] -} -]; \ No newline at end of file + } +]; + +export const SewageExcretaRelatedInfoListRvw = rawExcretaRelatedList.map(tab => ({ + ...tab, + columns: tab.columns.map(col => ({ + ...col, + editable: false + })) +})); \ No newline at end of file diff --git a/apps/st/src/components/util/column/review/SewageExcretaSlurgeColumnRvw.ts b/apps/st/src/components/util/column/review/SewageExcretaSlurgeColumnRvw.ts index 620f359c0..4cf62583e 100644 --- a/apps/st/src/components/util/column/review/SewageExcretaSlurgeColumnRvw.ts +++ b/apps/st/src/components/util/column/review/SewageExcretaSlurgeColumnRvw.ts @@ -1,21 +1,31 @@ -export const SewageExcretaSlurgeInfoList = [ +import type { GridView, DataColumn } from "@/components/type/DataGrid.type"; +import { getFooterSummary } from "@/components/util/grid/footerSummary"; + +const rawSludgeList = [ { tabKey: 'a', tabLabel: '찌꺼기 처리시설 현황', rowStartNum: 4, fixedColumns: 2, columns: [ + /* 기본 정보 */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, { name: 'BSC_FCT_NM', fieldName: 'BSC_FCT_NM', header: { text: '하수\n처리장명' } }, { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, + + /* 찌꺼기발생량 */ { name: 'TOT_AMNT', fieldName: 'TOT_AMNT', header: { text: '합계' } }, { name: 'P_AMNT', fieldName: 'P_AMNT', header: { text: '자체' } }, { name: 'O_AMNT', fieldName: 'O_AMNT', header: { text: '외부유입량' } }, + + /* 처리 정보 */ { name: 'OUT_FCT_NM', fieldName: 'OUT_FCT_NM', header: { text: '이송처리장' } }, { name: 'OUT_AMNT', fieldName: 'OUT_AMNT', header: { text: '이송처리량\n(㎥/년)' } }, { name: 'DSP_MOIRAT', fieldName: 'DSP_MOIRAT', header: { text: '함수율\n(%,\n탈수기준)' } }, { name: 'DSP_SM', fieldName: 'DSP_SM', header: { text: '찌꺼기\n처리량\n합계(톤/년)' } }, + + /* 자체 찌꺼기 처리량(1차/2차) */ { name: 'I_1CH_SM', fieldName: 'I_1CH_SM', header: { text: '자체찌꺼기\n처리량소계' } }, { name: 'I_1CH_REC', fieldName: 'I_1CH_REC', header: { text: '매립' } }, { name: 'I_1CH_INC', fieldName: 'I_1CH_INC', header: { text: '소각' } }, @@ -45,6 +55,8 @@ export const SewageExcretaSlurgeInfoList = [ { name: 'I_1CH_CAR_2CH_FCT', fieldName: 'I_1CH_CAR_2CH_FCT', header: { text: '시설(업체명)' } }, { name: 'I_1CH_COM', fieldName: 'I_1CH_COM', header: { text: '퇴비화' } }, { name: 'I_1CH_COM_FCT', fieldName: 'I_1CH_COM_FCT', header: { text: '시설(업체명)' } }, + + /* 외부위탁 처리량 */ { name: 'O_CON_SM', fieldName: 'O_CON_SM', header: { text: '소계' } }, { name: 'O_CON_REC', fieldName: 'O_CON_REC', header: { text: '매립' } }, { name: 'O_CON_INC', fieldName: 'O_CON_INC', header: { text: '소각' } }, @@ -53,21 +65,18 @@ export const SewageExcretaSlurgeInfoList = [ { name: 'O_CON_COV', fieldName: 'O_CON_COV', header: { text: '복토재' } }, { name: 'O_CON_COM', fieldName: 'O_CON_COM', header: { text: '퇴비화' } }, { name: 'O_CON_FCT_NM', fieldName: 'O_CON_FCT_NM', header: { text: '시설(업체명)' } }, + + /* 기타 */ { name: 'OM_1CH_SM', fieldName: 'OM_1CH_SM', header: { text: '수도권광역\n위탁처리량\n(톤/년)' } }, { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, ], columnLayout: [ { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, 'BSC_FCT_NM', 'YR_GBN', - { - name: 'genAmntGroup', - header: { text: '찌꺼기발생량(톤/년,탈수기준)' }, - items: ['TOT_AMNT', 'P_AMNT', 'O_AMNT'] - }, + { name: 'genAmntGroup', header: { text: '찌꺼기발생량(톤/년,탈수기준)' }, items: ['TOT_AMNT', 'P_AMNT', 'O_AMNT'] }, 'OUT_FCT_NM', 'OUT_AMNT', 'DSP_MOIRAT', 'DSP_SM', { - name: 'internalProcessGroup', - header: { text: '자체 찌꺼기 처리량(톤/년)' }, + name: 'internalProcessGroup', header: { text: '자체 찌꺼기 처리량(톤/년)' }, items: [ 'I_1CH_SM', 'I_1CH_REC', 'I_1CH_INC', { name: 'inc2ndGroup', header: { text: '소각 후 처리(2차)' }, items: ['I_1CH_INC_2CH_SM', 'I_1CH_INC_2CH_REC', 'I_1CH_INC_2CH_RAW', 'I_1CH_INC_2CH_COV', 'I_1CH_INC_2CH_FCT'] }, @@ -77,16 +86,11 @@ export const SewageExcretaSlurgeInfoList = [ { name: 'dry2ndGroup', header: { text: '건조 후 처리(2차)' }, items: ['I_1CH_DRY_2CH_SM', 'I_1CH_DRY_2CH_REC', 'I_1CH_DRY_2CH_INC', 'I_1CH_DRY_2CH_FUE', 'I_1CH_DRY_2CH_RAW', 'I_1CH_DRY_2CH_COV', 'I_1CH_DRY_2CH_COM', 'I_1CH_DRY_2CH_FCT'] }, 'I_1CH_CAR', { name: 'car2ndGroup', header: { text: '탄화 후 처리(2차)' }, items: ['I_1CH_CAR_2CH_SM', 'I_1CH_CAR_2CH_INC', 'I_1CH_CAR_2CH_FUE', 'I_1CH_CAR_2CH_FCT'] }, - { - name: 'compostGroup', - header: { text: '퇴비화' }, - items: ['I_1CH_COM_FCT'] // 중첩 없이 바로 컬럼 name을 넣어 2단으로 완성 - } + { name: 'compostGroup', header: { text: '퇴비화' }, items: ['I_1CH_COM_FCT'] } ] }, { - name: 'externalProcessGroup', - header: { text: '외부(민간)위탁 처리량(톤/년)' }, + name: 'externalProcessGroup', header: { text: '외부(민간)위탁 처리량(톤/년)' }, items: ['O_CON_SM', 'O_CON_REC', 'O_CON_INC', 'O_CON_FUE1', 'O_CON_RAW', 'O_CON_COV', 'O_CON_COM', 'O_CON_FCT_NM'] }, 'OM_1CH_SM', 'RMK' @@ -95,15 +99,15 @@ export const SewageExcretaSlurgeInfoList = [ { tabKey: 'b', tabLabel: '소화조 운영현황', - rowStartNum: 3, // 3단 헤더 구조 (소화조 운영현황 > 이용현황 > 항목) + rowStartNum: 3, columns: [ - /* 1. 기본 시설 정보 (Band: Left) */ + /* 기본 시설 정보 */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, { name: 'BSC_FCT_NM', fieldName: 'BSC_FCT_NM', header: { text: '하수\n처리장명' } }, { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, - - /* 2. 소화조 기본 운영 현황 */ + + /* 소화조 기본 현황 */ { name: 'DGSTR_FNNC', fieldName: 'DGSTR_FNNC', header: { text: '소화조 유/무\n(Y/N)선택' } }, { name: 'DGSTR_CPC', fieldName: 'DGSTR_CPC', header: { text: '설계\n용량\n(㎥)' } }, { name: 'DGSTR_OPR_CPC', fieldName: 'DGSTR_OPR_CPC', header: { text: '실제운전\n용량\n(㎥)' } }, @@ -111,44 +115,26 @@ export const SewageExcretaSlurgeInfoList = [ { name: 'DGSTR_TS', fieldName: 'DGSTR_TS', header: { text: '투입 TS 농도\n(%)' } }, { name: 'DGSTR_YRSTP_RN_DYN', fieldName: 'DGSTR_YRSTP_RN_DYN', header: { text: '가동일수\n(연간)' } }, { name: 'DGSTR_OCCUR_GAS', fieldName: 'DGSTR_OCCUR_GAS', header: { text: '발생가스량\n(㎥/일)' } }, - - /* 3. 소화가스 이용현황 상세 (단위: ㎥/일) */ + + /* 소화가스 이용현황 */ { name: 'DGSTR_SM', fieldName: 'DGSTR_SM', header: { text: '계' } }, { name: 'DGSTR_SLE', fieldName: 'DGSTR_SLE', header: { text: '판매' } }, { name: 'DGSTR_ELTGNR', fieldName: 'DGSTR_ELTGNR', header: { text: '발전' } }, { name: 'DGSTR_ONSLF', fieldName: 'DGSTR_ONSLF', header: { text: '자체활용' } }, { name: 'DGSTR_ETC', fieldName: 'DGSTR_ETC', header: { text: '기타(CNG등)' } }, - - /* 4. 잉여 가스 및 비고 */ + + /* 잉여 가스 */ { name: 'DGSTR_GAS', fieldName: 'DGSTR_GAS', header: { text: '잉여가스량\n(㎥/일)' } }, { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, ], columnLayout: [ { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - 'BSC_FCT_NM', - 'YR_GBN', + 'BSC_FCT_NM', 'YR_GBN', { - name: 'digesterMainGroup', - header: { text: '소화조 운영현황' }, + name: 'digesterMainGroup', header: { text: '소화조 운영현황' }, items: [ - 'DGSTR_FNNC', - 'DGSTR_CPC', - 'DGSTR_OPR_CPC', - 'DGSTR_IN', - 'DGSTR_TS', - 'DGSTR_YRSTP_RN_DYN', - 'DGSTR_OCCUR_GAS', - { - name: 'gasUsageGroup', - header: { text: '소화가스 이용현황(㎥/일)' }, - items: [ - 'DGSTR_SM', - 'DGSTR_SLE', - 'DGSTR_ELTGNR', - 'DGSTR_ONSLF', - 'DGSTR_ETC' - ] - }, + 'DGSTR_FNNC', 'DGSTR_CPC', 'DGSTR_OPR_CPC', 'DGSTR_IN', 'DGSTR_TS', 'DGSTR_YRSTP_RN_DYN', 'DGSTR_OCCUR_GAS', + { name: 'gasUsageGroup', header: { text: '소화가스 이용현황(㎥/일)' }, items: ['DGSTR_SM', 'DGSTR_SLE', 'DGSTR_ELTGNR', 'DGSTR_ONSLF', 'DGSTR_ETC'] }, 'DGSTR_GAS' ] }, @@ -158,59 +144,43 @@ export const SewageExcretaSlurgeInfoList = [ { tabKey: 'c', tabLabel: '하수찌꺼기 처리시설 운영현황', - rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2") + rowStartNum: 2, columns: [ - /* 1. 기본 시설 정보 (Band: Left) */ + /* 기본 시설 정보 */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, { name: 'SLG_FCT_NM', fieldName: 'SLG_FCT_NM', header: { text: '찌꺼기처리시설명' } }, { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, - - /* 2. 처리시설 운영현황 상세 */ + + /* 처리시설 운영현황 */ { name: 'TRT_METHOD', fieldName: 'TRT_METHOD', header: { text: '처리방식' } }, { name: 'SLG_FCT_CPC', fieldName: 'SLG_FCT_CPC', header: { text: '시설용량\n(톤/일)' } }, { name: 'OPR_CPC', fieldName: 'OPR_CPC', header: { text: '연간처리량\n(톤/년)' } }, { name: 'ODY_RN_TIME', fieldName: 'ODY_RN_TIME', header: { text: '일평균\n가동시간\n(1~24)' } }, { name: 'YRSTP_RN_DYN', fieldName: 'YRSTP_RN_DYN', header: { text: '연중 가동일\n(1~330)' } }, { name: 'OPR_RT', fieldName: 'OPR_RT', header: { text: '가동율' } }, - - /* 3. 비고 */ { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, ], columnLayout: [ { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - 'SLG_FCT_NM', - 'YR_GBN', - { - name: 'sludgeFctOprGroup', - header: { text: '처리시설 운영현황' }, - items: [ - 'TRT_METHOD', - 'SLG_FCT_CPC', - 'OPR_CPC', - 'ODY_RN_TIME', - 'YRSTP_RN_DYN', - 'OPR_RT' - ] - }, + 'SLG_FCT_NM', 'YR_GBN', + { name: 'sludgeFctOprGroup', header: { text: '처리시설 운영현황' }, items: ['TRT_METHOD', 'SLG_FCT_CPC', 'OPR_CPC', 'ODY_RN_TIME', 'YRSTP_RN_DYN', 'OPR_RT'] }, 'RMK' ] }, { tabKey: 'd', tabLabel: '분뇨찌꺼기 처리현황', - rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2") + rowStartNum: 2, columns: [ - /* 1. 기본 시설 정보 (Band: Left) */ + /* 기본 시설 정보 */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, { name: 'ECSCS_NM', fieldName: 'ECSCS_NM', header: { text: '분 뇨\n처리장명' } }, { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, - - /* 2. 발생량 지표 */ + + /* 발생 및 처분량 */ { name: 'OCTY', fieldName: 'OCTY', header: { text: '발생량\n(A)=(B)+(C)\n(㎥/년)' } }, - - /* 3. 처분량 상세 (단위: ㎥/년) */ { name: 'PROCESS_CPCTY_SM', fieldName: 'PROCESS_CPCTY_SM', header: { text: '계(B)' } }, { name: 'RUSE', fieldName: 'RUSE', header: { text: '재활용' } }, { name: 'LAND_RCLM', fieldName: 'LAND_RCLM', header: { text: '육상매립' } }, @@ -218,37 +188,27 @@ export const SewageExcretaSlurgeInfoList = [ { name: 'OCEAN_DPSL', fieldName: 'OCEAN_DPSL', header: { text: '해양투기' } }, { name: 'FUEL', fieldName: 'FUEL', header: { text: '연료화' } }, { name: 'ETC', fieldName: 'ETC', header: { text: '기타' } }, - - /* 4. 미처분량 및 연계 정보 */ + + /* 연계 정보 및 비고 */ { name: 'CYFD_CPCTY', fieldName: 'CYFD_CPCTY', header: { text: '미처분량\n(이월량)\n(C)\n(㎥/년)' } }, { name: 'OUT_BSC_FCT_NM', fieldName: 'OUT_BSC_FCT_NM', header: { text: '타시설\n연계여부' } }, - - /* 5. 비고 및 의견 */ { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, { name: 'CHCKER_OPINION', fieldName: 'CHCKER_OPINION', header: { text: '검토자의견' } }, { name: 'WRTER_OPINION', fieldName: 'WRTER_OPINION', header: { text: '사용자의견' } }, ], columnLayout: [ { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - 'ECSCS_NM', - 'YR_GBN', - 'OCTY', - { - name: 'disposalAmntGroup', - header: { text: '처 분 량(㎥/년)' }, - items: [ - 'PROCESS_CPCTY_SM', - 'RUSE', - 'LAND_RCLM', - 'INCNR', - 'OCEAN_DPSL', - 'FUEL', - 'ETC' - ] - }, - 'CYFD_CPCTY', - 'OUT_BSC_FCT_NM', - 'RMK' + 'ECSCS_NM', 'YR_GBN', 'OCTY', + { name: 'disposalAmntGroup', header: { text: '처 분 량(㎥/년)' }, items: ['PROCESS_CPCTY_SM', 'RUSE', 'LAND_RCLM', 'INCNR', 'OCEAN_DPSL', 'FUEL', 'ETC'] }, + 'CYFD_CPCTY', 'OUT_BSC_FCT_NM', 'RMK' ] } -]; \ No newline at end of file +]; + +export const SewageExcretaSludgeInfoListRvw = rawSludgeList.map(tab => ({ + ...tab, + columns: tab.columns.map(col => ({ + ...col, + editable: false + })) +})); \ No newline at end of file diff --git a/apps/st/src/components/util/column/review/SewagePipeColumnRvw.ts b/apps/st/src/components/util/column/review/SewagePipeColumnRvw.ts index ce8bab440..1158e32d3 100644 --- a/apps/st/src/components/util/column/review/SewagePipeColumnRvw.ts +++ b/apps/st/src/components/util/column/review/SewagePipeColumnRvw.ts @@ -1,11 +1,14 @@ -const baseYear = new Date().getFullYear(); -export const SewagePipeColumnInfoListRvw = [ +import type { GridView, DataColumn } from "@/components/type/DataGrid.type"; +import { getFooterSummary } from "@/components/util/grid/footerSummary"; +const baseYear = new Date().getFullYear(); + +const rawList = [ { tabKey: 'a', tabLabel: '지역별 시설현황', - rowStartNum: 2, // Header가 4줄이므로 데이터 시작은 4행부터 - fixedColumns: 1, // 순번, 시도, 시군구, 행정구역명, 행정코드까지 고정 + rowStartNum: 2, + fixedColumns: 1, columns: [ /* 기본 정보 (Band: Left) */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, @@ -109,12 +112,11 @@ export const SewagePipeColumnInfoListRvw = [ 'RMK' ] }, - // SewagePipeColumnInfoListRvw 배열에 두 번째 객체로 추가하시면 됩니다. { tabKey: 'b', tabLabel: '시설별 설치현황', - rowStartNum: 5, // 4단 헤더 구조 반영 - fixedColumns: 4, // 순번, 시도, 시군구, 행정구역명, 처리장코드, 처리장명, 용량, 구분까지 고정 + rowStartNum: 5, + fixedColumns: 4, columns: [ /* 기본 정보 및 처리장 정보 (Band: Left) */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, @@ -203,16 +205,11 @@ export const SewagePipeColumnInfoListRvw = [ header: { text: '토실/토구(개소)' }, items: [ { - // '합류식' 그룹 생성 name: 'cmbnSiteGroup', header: { text: '합류식' }, - items: [ - // '우수토실' 컬럼 (name이 'CMBN_SOILHOLE_SITE'인 컬럼의 헤더 텍스트를 '우수토실'로 매핑) - 'CMBN_SOILHOLE_SITE' - ] + items: ['CMBN_SOILHOLE_SITE'] }, { - // '분류식' 그룹 name: 'sepSiteGroup', header: { text: '분류식' }, items: ['SPRT_SOILHOLE_SITE', 'SPRT_SOILSPLL_SITE'] @@ -237,18 +234,15 @@ export const SewagePipeColumnInfoListRvw = [ 'RMK' ] }, - { tabKey: 'c', tabLabel: '관종별 현황', rowStartNum: 2, - fixedColumns: 3, // 순번, 시도, 시군구, 행정구역명, 행정코드, 관종, 구분 + fixedColumns: 3, columns: [ /* 기본 정보 */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, - - { name: 'SWRG_PIPE_NM', fieldName: 'SWRG_PIPE_NM', header: { text: '관종' } }, { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, @@ -257,10 +251,8 @@ export const SewagePipeColumnInfoListRvw = [ { name: 'LAYING_EXTN_SUM', fieldName: 'LAYING_EXTN_SUM', header: { text: '매설연장(m)' } }, { name: 'REMVL_EXTN_SUM', fieldName: 'REMVL_EXTN_SUM', header: { text: '철거연장(m)' } }, - /* 연도별 데이터 세트 (30Y ~ 01Y 반복) */ - // XML 로직에 따라 30Y부터 01Y까지 순차적으로 생성합니다. ...Array.from({ length: 30 }, (_, i) => { - const yNum = (30 - i).toString().padStart(2, '0'); // 30, 29, ..., 01 + const yNum = (30 - i).toString().padStart(2, '0'); return [ { name: `TOTAL_EXTN_${yNum}Y`, fieldName: `TOTAL_EXTN_${yNum}Y`, header: { text: '계' } }, { name: `LAYING_EXTN_${yNum}Y`, fieldName: `LAYING_EXTN_${yNum}Y`, header: { text: '매설연장(m)' } }, @@ -273,13 +265,11 @@ export const SewagePipeColumnInfoListRvw = [ { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, ], columnLayout: [ - { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'], }, - 'SWRG_PIPE_NM', 'YR_GBN', { @@ -287,13 +277,9 @@ export const SewagePipeColumnInfoListRvw = [ header: { text: '총계' }, items: ['TOTAL_EXTN_SUM', 'LAYING_EXTN_SUM', 'REMVL_EXTN_SUM'], }, - /* 반복 루프 수정 */ ...Array.from({ length: 30 }, (_, i) => { - const yrOffset = 29 - i; // 29, 28, 27... 순서 + const yrOffset = 29 - i; const yNum = (30 - i).toString().padStart(2, '0'); - - // [수정 포인트] 이미지(image_5444d1.png)처럼 무조건 "-XX년" 형식으로 표시 - // 만약 29년 이전만 "XXXX년이전"으로 하고 싶다면 기존 로직 유지 const headerText = `-${yrOffset}년`; return { @@ -314,7 +300,7 @@ export const SewagePipeColumnInfoListRvw = [ tabKey: 'd', tabLabel: '관경별 현황', rowStartNum: 2, - fixedColumns: 3, // 순번, 시도, 구군, 읍면동, 행정코드, 관종, 구분까지 고정 + fixedColumns: 3, columns: [ /* 기본 정보 (Band: Left) */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, @@ -329,7 +315,7 @@ export const SewagePipeColumnInfoListRvw = [ { name: 'UNDER_200', fieldName: 'UNDER_200', header: { text: '200mm 미만' } }, { name: 'OVER_200_UNDEV_300', fieldName: 'OVER_200_UNDEV_300', header: { text: '200mm이상~\n300mm미만' } }, { name: 'OVER_300_UNDEV_500', fieldName: 'OVER_300_UNDEV_500', header: { text: '300mm이상~\n500mm미만' } }, - { name: 'OVER_500_UNDEV_800', fieldName: 'OVER_500_UNDEV_800', header: { text: '500mm이상~\n800mm미만' } }, // SQL상 OVER_500_UNDEV_500 오타 대응 + { name: 'OVER_500_UNDEV_800', fieldName: 'OVER_500_UNDEV_800', header: { text: '500mm이상~\n800mm미만' } }, { name: 'OVER_800', fieldName: 'OVER_800', header: { text: '800mm 이상' } }, /* 사각형 및 기타 */ @@ -364,4 +350,12 @@ export const SewagePipeColumnInfoListRvw = [ 'RMK', ] } -] \ No newline at end of file +]; + +export const SewagePipeColumnInfoListRvw = rawList.map(tab => ({ + ...tab, + columns: tab.columns.map(col => ({ + ...col, + editable: false + })) +})); \ No newline at end of file diff --git a/apps/st/src/components/util/column/review/SewagePipeMaintainColumnRvw.ts b/apps/st/src/components/util/column/review/SewagePipeMaintainColumnRvw.ts index c933ebead..4cf6b7a37 100644 --- a/apps/st/src/components/util/column/review/SewagePipeMaintainColumnRvw.ts +++ b/apps/st/src/components/util/column/review/SewagePipeMaintainColumnRvw.ts @@ -1,10 +1,9 @@ - -export const SewagePipeMaintainColumnInfoListRvw = [ +const rawMaintainList = [ { tabKey: 'a', tabLabel: '개보수', - rowStartNum: 4, // XML의 rowspan="4" 반영 - fixedColumns: 2, // 순번, 시도, 시군구, 행정코드, 구분까지 고정 + rowStartNum: 4, + fixedColumns: 2, columns: [ /* 1. 행정 및 기본 정보 */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, @@ -82,83 +81,91 @@ export const SewagePipeMaintainColumnInfoListRvw = [ ] }, { - tabKey: 'b', - tabLabel: '관로준설', - rowStartNum: 4, // XML의 rowspan="4" 및 4단 헤더 반영 - fixedColumns: 3, // 순번, 시도, 시군구, 구분까지 고정 - columns: [ - /* 1. 행정 및 기본 정보 (Band: Left) */ - { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, - { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, - { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, - - /* 2. 시설 기본 정보 */ - { name: 'PIPL_FCLTY_EXTN', fieldName: 'PIPL_FCLTY_EXTN', header: { text: '하수관로\n총시설연장\n(m)' } }, + tabKey: 'b', + tabLabel: '관로준설', + rowStartNum: 4, + fixedColumns: 2, + columns: [ + /* 1. 행정 및 기본 정보 (Band: Left) */ + { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, + { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, + + /* 2. 시설 기본 정보 */ + { name: 'PIPL_FCLTY_EXTN', fieldName: 'PIPL_FCLTY_EXTN', header: { text: '하수관로\n총시설연장\n(m)' } }, - /* 3. 준설연장 및 개소수 */ - { name: 'DRDG_PIPE_SM', fieldName: 'DRDG_PIPE_SM', header: { text: '합계' } }, - { name: 'DRDG_CMBN_PIPE', fieldName: 'DRDG_CMBN_PIPE', header: { text: '합류식' } }, - { name: 'DRDG_RAINWTR_PIPE', fieldName: 'DRDG_RAINWTR_PIPE', header: { text: '우수' } }, - { name: 'DRDG_PLTWTR_PIPE', fieldName: 'DRDG_PLTWTR_PIPE', header: { text: '오수' } }, - { name: 'MNHLE_SITE', fieldName: 'MNHLE_SITE', header: { text: '맨홀\n(개소)' } }, - { name: 'PLTWTR_RCVR_SITE', fieldName: 'PLTWTR_RCVR_SITE', header: { text: '오·우수받이\n(개소)' } }, - { name: 'SOILSPLL_SOILHOLE_SITE', fieldName: 'SOILSPLL_SOILHOLE_SITE', header: { text: '토실·토구\n(개소)' } }, + /* 3. 준설연장 및 개소수 */ + { name: 'DRDG_PIPE_SM', fieldName: 'DRDG_PIPE_SM', header: { text: '합계' } }, + { name: 'DRDG_CMBN_PIPE', fieldName: 'DRDG_CMBN_PIPE', header: { text: '합류식' } }, + { name: 'DRDG_RAINWTR_PIPE', fieldName: 'DRDG_RAINWTR_PIPE', header: { text: '우수' } }, + { name: 'DRDG_PLTWTR_PIPE', fieldName: 'DRDG_PLTWTR_PIPE', header: { text: '오수' } }, + { name: 'MNHLE_SITE', fieldName: 'MNHLE_SITE', header: { text: '맨홀\n(개소)' } }, + { name: 'PLTWTR_RCVR_SITE', fieldName: 'PLTWTR_RCVR_SITE', header: { text: '오·우수받이\n(개소)' } }, + { name: 'SOILSPLL_SOILHOLE_SITE', fieldName: 'SOILSPLL_SOILHOLE_SITE', header: { text: '토실·토구\n(개소)' } }, - /* 4. 준설 계획 및 율 */ - { name: 'DRDG_TRGET_EXTN', fieldName: 'DRDG_TRGET_EXTN', header: { text: '준설 계획\n연장(m)' } }, - { name: 'DRDG_TRGET_RT', fieldName: 'DRDG_TRGET_RT', header: { text: '계획대비\n준설율\n(%)' } }, - { name: 'PIPL_FCLTY_RT', fieldName: 'PIPL_FCLTY_RT', header: { text: '준설계획\n연장대비\n준설율(%)' } }, + /* 4. 준설 계획 및 율 */ + { name: 'DRDG_TRGET_EXTN', fieldName: 'DRDG_TRGET_EXTN', header: { text: '준설 계획\n연장(m)' } }, + { name: 'DRDG_TRGET_RT', fieldName: 'DRDG_TRGET_RT', header: { text: '계획대비\n준설율\n(%)' } }, + { name: 'PIPL_FCLTY_RT', fieldName: 'PIPL_FCLTY_RT', header: { text: '준설계획\n연장대비\n준설율(%)' } }, - /* 5. 준설실적 */ - { name: 'DRDG_ACMSLT_AMOUNT', fieldName: 'DRDG_ACMSLT_AMOUNT', header: { text: '금액\n(백만원)' } }, - { name: 'DRDG_ACMSLT_QY', fieldName: 'DRDG_ACMSLT_QY', header: { text: '준설량\n(㎥)' } }, + /* 5. 준설실적 */ + { name: 'DRDG_ACMSLT_AMOUNT', fieldName: 'DRDG_ACMSLT_AMOUNT', header: { text: '금액\n(백만원)' } }, + { name: 'DRDG_ACMSLT_QY', fieldName: 'DRDG_ACMSLT_QY', header: { text: '준설량\n(㎥)' } }, - /* 6. 준설토사처리 */ - { name: 'DRDG_ACMSLT_UNTPC', fieldName: 'DRDG_ACMSLT_UNTPC', header: { text: '준설토\n처리비\n(백만원)' } }, - { name: 'DRDG_ETND_SM', fieldName: 'DRDG_ETND_SM', header: { text: '처리량 계\n(톤)' } }, - { name: 'RCLM', fieldName: 'RCLM', header: { text: '매립' } }, - { name: 'OCEAN_DPSL', fieldName: 'OCEAN_DPSL', header: { text: '해양투기' } }, - { name: 'RUSE', fieldName: 'RUSE', header: { text: '재활용' } }, - { name: 'ETC', fieldName: 'ETC', header: { text: '기타\n(소각, 고형화,\n시멘트원료 등)' } }, + /* 6. 준설토사처리 */ + { name: 'DRDG_ACMSLT_UNTPC', fieldName: 'DRDG_ACMSLT_UNTPC', header: { text: '준설토\n처리비\n(백만원)' } }, + { name: 'DRDG_ETND_SM', fieldName: 'DRDG_ETND_SM', header: { text: '처리량 계\n(톤)' } }, + { name: 'RCLM', fieldName: 'RCLM', header: { text: '매립' } }, + { name: 'OCEAN_DPSL', fieldName: 'OCEAN_DPSL', header: { text: '해양투기' } }, + { name: 'RUSE', fieldName: 'RUSE', header: { text: '재활용' } }, + { name: 'ETC', fieldName: 'ETC', header: { text: '기타\n(소각, 고형화,\n시멘트원료 등)' } }, - /* 7. 기타 및 의견 */ - { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, - ], - columnLayout: [ - { - name: 'addrGroup', - header: { text: '행정구역' }, - items: ['SIDO', 'GUGUN'], - }, - 'YR_GBN', - 'PIPL_FCLTY_EXTN', - { - name: 'drdgGroup', - header: { text: '준설연장 및 개소수' }, - items: [ - { - name: 'pipeLenGroup', - header: { text: '관로(m)' }, - items: [ - 'DRDG_PIPE_SM', 'DRDG_CMBN_PIPE', - { name: 'sepRepairGroup', header: { text: '분류식' }, items: ['DRDG_RAINWTR_PIPE', 'DRDG_PLTWTR_PIPE'] } - ] - }, - 'MNHLE_SITE', 'PLTWTR_RCVR_SITE', 'SOILSPLL_SOILHOLE_SITE' - ] - }, - 'DRDG_TRGET_EXTN', 'DRDG_TRGET_RT', 'PIPL_FCLTY_RT', - { - name: 'acmsltGroup', - header: { text: '준설실적' }, - items: ['DRDG_ACMSLT_AMOUNT', 'DRDG_ACMSLT_QY'] - }, - { - name: 'processGroup', - header: { text: '준설토사처리' }, - items: ['DRDG_ACMSLT_UNTPC', 'DRDG_ETND_SM', 'RCLM', 'OCEAN_DPSL', 'RUSE', 'ETC'] - }, - 'RMK' - ] -} + /* 7. 기타 및 의견 */ + { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, + ], + columnLayout: [ + { + name: 'addrGroup', + header: { text: '행정구역' }, + items: ['SIDO', 'GUGUN'], + }, + 'YR_GBN', + 'PIPL_FCLTY_EXTN', + { + name: 'drdgGroup', + header: { text: '준설연장 및 개소수' }, + items: [ + { + name: 'pipeLenGroup', + header: { text: '관로(m)' }, + items: [ + 'DRDG_PIPE_SM', 'DRDG_CMBN_PIPE', + { name: 'sepRepairGroup', header: { text: '분류식' }, items: ['DRDG_RAINWTR_PIPE', 'DRDG_PLTWTR_PIPE'] } + ] + }, + 'MNHLE_SITE', 'PLTWTR_RCVR_SITE', 'SOILSPLL_SOILHOLE_SITE' + ] + }, + 'DRDG_TRGET_EXTN', 'DRDG_TRGET_RT', 'PIPL_FCLTY_RT', + { + name: 'acmsltGroup', + header: { text: '준설실적' }, + items: ['DRDG_ACMSLT_AMOUNT', 'DRDG_ACMSLT_QY'] + }, + { + name: 'processGroup', + header: { text: '준설토사처리' }, + items: ['DRDG_ACMSLT_UNTPC', 'DRDG_ETND_SM', 'RCLM', 'OCEAN_DPSL', 'RUSE', 'ETC'] + }, + 'RMK' + ] + } ]; + +export const SewagePipeMaintainColumnInfoList = rawMaintainList.map(tab => ({ + ...tab, + columns: tab.columns.map(col => ({ + ...col, + editable: false + })) +})); \ No newline at end of file diff --git a/apps/st/src/components/util/column/review/SewageReservoirPumpColumnRvw.ts b/apps/st/src/components/util/column/review/SewageReservoirPumpColumnRvw.ts index d02ea10c7..66cc56fd7 100644 --- a/apps/st/src/components/util/column/review/SewageReservoirPumpColumnRvw.ts +++ b/apps/st/src/components/util/column/review/SewageReservoirPumpColumnRvw.ts @@ -1,9 +1,13 @@ -export const SewageReservoirPumpInfoListRvw = [{ +import type { GridView, DataColumn } from "@/components/type/DataGrid.type"; +import { getFooterSummary } from "@/components/util/grid/footerSummary"; + +const rawReservoirList = [ + { tabKey: 'a', tabLabel: '하수저류시설', - rowStartNum: 3, // 3단 헤더 구조 (순번 rowspan="3") - fixedColumns: 2, // 순번, 시도, 시군구, 시설명까지 고정 + rowStartNum: 3, + fixedColumns: 2, columns: [ /* 1. 기본 정보 (Band: Left) */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, @@ -24,17 +28,14 @@ export const SewageReservoirPumpInfoListRvw = [{ /* 3. 펌프시설 (공통/1/2/3) */ { name: 'TOT_CPCTY', fieldName: 'TOT_CPCTY', header: { text: '총양수량\n(㎥/min)' } }, - // 펌프1 { name: 'PUMP_CALBR', fieldName: 'PUMP_CALBR', header: { text: '구경(mm)' } }, { name: 'WP_CPCTY', fieldName: 'WP_CPCTY', header: { text: '대당 양수량' } }, { name: 'PUMP_CO', fieldName: 'PUMP_CO', header: { text: '펌프대수' } }, { name: 'PUMP_PREPAR_CO', fieldName: 'PUMP_PREPAR_CO', header: { text: '예비펌프대수' } }, - // 펌프2 { name: 'PUMP_CALBR2', fieldName: 'PUMP_CALBR2', header: { text: '구경(mm)' } }, { name: 'WP_CPCTY2', fieldName: 'WP_CPCTY2', header: { text: '대당 양수량' } }, { name: 'PUMP_CO2', fieldName: 'PUMP_CO2', header: { text: '펌프대수' } }, { name: 'PUMP_PREPAR_CO2', fieldName: 'PUMP_PREPAR_CO2', header: { text: '예비펌프대수' } }, - // 펌프3 { name: 'PUMP_CALBR3', fieldName: 'PUMP_CALBR3', header: { text: '구경(mm)' } }, { name: 'WP_CPCTY3', fieldName: 'WP_CPCTY3', header: { text: '대당 양수량' } }, { name: 'PUMP_CO3', fieldName: 'PUMP_CO3', header: { text: '펌프대수' } }, @@ -62,8 +63,7 @@ export const SewageReservoirPumpInfoListRvw = [{ ], columnLayout: [ { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - 'SWGE_STRGE_NM', 'ADDR', 'YR_GBN', - 'RN_DT', 'PL_DSGN_FRQNC', + 'SWGE_STRGE_NM', 'ADDR', 'YR_GBN', 'RN_DT', 'PL_DSGN_FRQNC', { name: 'purposeGroup', header: { text: '설치목적(O,X로 표기, 중복체크 가능)' }, @@ -105,111 +105,91 @@ export const SewageReservoirPumpInfoListRvw = [{ ] }, { - tabKey: 'b', - tabLabel: '빗물펌프장', - rowStartNum: 3, // 3단 헤더 구조 (순번 rowspan="3") - fixedColumns: 2, // 순번, 시도, 시군구, 시설명까지 고정 - columns: [ - /* 1. 기본 정보 (Band: Left) */ - { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, - { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, - { name: 'SWGE_STRGE_NM', fieldName: 'SWGE_STRGE_NM', header: { text: '시설명' } }, - { name: 'ADDR', fieldName: 'ADDR', header: { text: '위치' } }, - { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, + tabKey: 'b', + tabLabel: '빗물펌프장', + rowStartNum: 3, + fixedColumns: 2, + columns: [ + /* 1. 기본 정보 (Band: Left) */ + { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, + { name: 'SWGE_STRGE_NM', fieldName: 'SWGE_STRGE_NM', header: { text: '시설명' } }, + { name: 'ADDR', fieldName: 'ADDR', header: { text: '위치' } }, + { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, - /* 2. 시설 제원 */ - { name: 'FCT_KND', fieldName: 'FCT_KND', header: { text: '시설물종류' } }, - { name: 'RN_DT', fieldName: 'RN_DT', header: { text: '가동개시\n년월일' } }, - { name: 'PL_DSGN_FRQNC', fieldName: 'PL_DSGN_FRQNC', header: { text: '계획설계빈도' } }, - { name: 'DGR_AR', fieldName: 'DGR_AR', header: { text: '집수구역면적(㎢)' } }, + /* 2. 시설 제원 */ + { name: 'FCT_KND', fieldName: 'FCT_KND', header: { text: '시설물종류' } }, + { name: 'RN_DT', fieldName: 'RN_DT', header: { text: '가동개시\n년월일' } }, + { name: 'PL_DSGN_FRQNC', fieldName: 'PL_DSGN_FRQNC', header: { text: '계획설계빈도' } }, + { name: 'DGR_AR', fieldName: 'DGR_AR', header: { text: '집수구역면적(㎢)' } }, - /* 3. 유수지 및 흡수정 */ - { name: 'REV_FNNC', fieldName: 'REV_FNNC', header: { text: '유수지유무\n(유,무)' } }, - { name: 'REV_CPCTY', fieldName: 'REV_CPCTY', header: { text: '저류량(㎥)' } }, // 유수지 저류량 - { name: 'ABS_CPCTY', fieldName: 'ABS_CPCTY', header: { text: '저류량(㎥)' } }, // 흡수정 저류량 - { name: 'SWGE_SGBS_CPCTY', fieldName: 'SWGE_SGBS_CPCTY', header: { text: '시설용량(㎥)' } }, + /* 3. 유수지 및 흡수정 */ + { name: 'REV_FNNC', fieldName: 'REV_FNNC', header: { text: '유수지유무\n(유,무)' } }, + { name: 'REV_CPCTY', fieldName: 'REV_CPCTY', header: { text: '저류량(㎥)' } }, + { name: 'ABS_CPCTY', fieldName: 'ABS_CPCTY', header: { text: '저류량(㎥)' } }, + { name: 'SWGE_SGBS_CPCTY', fieldName: 'SWGE_SGBS_CPCTY', header: { text: '시설용량(㎥)' } }, - /* 4. 펌프시설 (공통/1/2/3) */ - { name: 'TOT_CPCTY', fieldName: 'TOT_CPCTY', header: { text: '총양수량\n(㎥/min)' } }, - // 펌프1 - { name: 'PUMP_CALBR', fieldName: 'PUMP_CALBR', header: { text: '구경(mm)' } }, - { name: 'WP_CPCTY', fieldName: 'WP_CPCTY', header: { text: '대당 양수량' } }, - { name: 'PUMP_CO', fieldName: 'PUMP_CO', header: { text: '펌프대수' } }, - { name: 'PUMP_PREPAR_CO', fieldName: 'PUMP_PREPAR_CO', header: { text: '예비펌프대수' } }, - // 펌프2 - { name: 'PUMP_CALBR2', fieldName: 'PUMP_CALBR2', header: { text: '구경(mm)' } }, - { name: 'WP_CPCTY2', fieldName: 'WP_CPCTY2', header: { text: '대당 양수량' } }, - { name: 'PUMP_CO2', fieldName: 'PUMP_CO2', header: { text: '펌프대수' } }, - { name: 'PUMP_PREPAR_CO2', fieldName: 'PUMP_PREPAR_CO2', header: { text: '예비펌프대수' } }, - // 펌프3 - { name: 'PUMP_CALBR3', fieldName: 'PUMP_CALBR3', header: { text: '구경(mm)' } }, - { name: 'WP_CPCTY3', fieldName: 'WP_CPCTY3', header: { text: '대당 양수량' } }, - { name: 'PUMP_CO3', fieldName: 'PUMP_CO3', header: { text: '펌프대수' } }, - { name: 'PUMP_PREPAR_CO3', fieldName: 'PUMP_PREPAR_CO3', header: { text: '예비펌프대수' } }, + /* 4. 펌프시설 (공통/1/2/3) */ + { name: 'TOT_CPCTY', fieldName: 'TOT_CPCTY', header: { text: '총양수량\n(㎥/min)' } }, + { name: 'PUMP_CALBR', fieldName: 'PUMP_CALBR', header: { text: '구경(mm)' } }, + { name: 'WP_CPCTY', fieldName: 'WP_CPCTY', header: { text: '대당 양수량' } }, + { name: 'PUMP_CO', fieldName: 'PUMP_CO', header: { text: '펌프대수' } }, + { name: 'PUMP_PREPAR_CO', fieldName: 'PUMP_PREPAR_CO', header: { text: '예비펌프대수' } }, + { name: 'PUMP_CALBR2', fieldName: 'PUMP_CALBR2', header: { text: '구경(mm)' } }, + { name: 'WP_CPCTY2', fieldName: 'WP_CPCTY2', header: { text: '대당 양수량' } }, + { name: 'PUMP_CO2', fieldName: 'PUMP_CO2', header: { text: '펌프대수' } }, + { name: 'PUMP_PREPAR_CO2', fieldName: 'PUMP_PREPAR_CO2', header: { text: '예비펌프대수' } }, + { name: 'PUMP_CALBR3', fieldName: 'PUMP_CALBR3', header: { text: '구경(mm)' } }, + { name: 'WP_CPCTY3', fieldName: 'WP_CPCTY3', header: { text: '대당 양수량' } }, + { name: 'PUMP_CO3', fieldName: 'PUMP_CO3', header: { text: '펌프대수' } }, + { name: 'PUMP_PREPAR_CO3', fieldName: 'PUMP_PREPAR_CO3', header: { text: '예비펌프대수' } }, - /* 5. 부대시설 및 기타 */ - { name: 'FRE_FNNC', fieldName: 'FRE_FNNC', header: { text: '전처리시설' } }, - { name: 'DORZEQP_FNNC', fieldName: 'DORZEQP_FNNC', header: { text: '탈취설비' } }, - { name: 'SELF_ETRQ_FNNC', fieldName: 'SELF_ETRQ_FNNC', header: { text: '자가발전' } }, - { name: 'DIS_WAT', fieldName: 'DIS_WAT', header: { text: '방류수역' } }, + /* 5. 부대시설 및 기타 */ + { name: 'FRE_FNNC', fieldName: 'FRE_FNNC', header: { text: '전처리시설' } }, + { name: 'DORZEQP_FNNC', fieldName: 'DORZEQP_FNNC', header: { text: '탈취설비' } }, + { name: 'SELF_ETRQ_FNNC', fieldName: 'SELF_ETRQ_FNNC', header: { text: '자가발전' } }, + { name: 'DIS_WAT', fieldName: 'DIS_WAT', header: { text: '방류수역' } }, - /* 6. 최종처분량 및 방법 */ - { name: 'SDMT_TRE_CPCTY', fieldName: 'SDMT_TRE_CPCTY', header: { text: '침사(량)' } }, - { name: 'IPRT_TRE_CPCTY', fieldName: 'IPRT_TRE_CPCTY', header: { text: '협잡물(량)' } }, - { name: 'SDMT_TRE_MTH', fieldName: 'SDMT_TRE_MTH', header: { text: '침사(방법)' } }, - { name: 'IPRT_TRE_MTH', fieldName: 'IPRT_TRE_MTH', header: { text: '협잡물(방법)' } }, + /* 6. 최종처분량 및 방법 */ + { name: 'SDMT_TRE_CPCTY', fieldName: 'SDMT_TRE_CPCTY', header: { text: '침사(량)' } }, + { name: 'IPRT_TRE_CPCTY', fieldName: 'IPRT_TRE_CPCTY', header: { text: '협잡물(량)' } }, + { name: 'SDMT_TRE_MTH', fieldName: 'SDMT_TRE_MTH', header: { text: '침사(방법)' } }, + { name: 'IPRT_TRE_MTH', fieldName: 'IPRT_TRE_MTH', header: { text: '협잡물(방법)' } }, - /* 7. 운영실적 */ - { name: 'YRSTP_RN_DYN', fieldName: 'YRSTP_RN_DYN', header: { text: '가동일수' } }, - { name: 'DSPLCMNT_AMNT', fieldName: 'DSPLCMNT_AMNT', header: { text: '총배수량\n(㎥/년)' } }, - { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, - ], - columnLayout: [ - { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - 'SWGE_STRGE_NM', 'ADDR', 'YR_GBN', 'FCT_KND', 'RN_DT', 'PL_DSGN_FRQNC', 'DGR_AR', - { - name: 'revGroup', - header: { text: '유수지' }, - items: ['REV_FNNC', 'REV_CPCTY'] - }, - { - name: 'absGroup', - header: { text: '흡수정' }, - items: ['ABS_CPCTY'] - }, - 'SWGE_SGBS_CPCTY', - { - name: 'pumpMainGroup', - header: { text: '펌프시설' }, - items: [ - 'TOT_CPCTY', - { name: 'p1Group', header: { text: '펌프시설1' }, items: ['PUMP_CALBR', 'WP_CPCTY', 'PUMP_CO', 'PUMP_PREPAR_CO'] }, - { name: 'p2Group', header: { text: '펌프시설2' }, items: ['PUMP_CALBR2', 'WP_CPCTY2', 'PUMP_CO2', 'PUMP_PREPAR_CO2'] }, - { name: 'p3Group', header: { text: '펌프시설3' }, items: ['PUMP_CALBR3', 'WP_CPCTY3', 'PUMP_CO3', 'PUMP_PREPAR_CO3'] } - ] - }, - { - name: 'subFacGroup', - header: { text: '부대시설' }, - items: ['FRE_FNNC', 'DORZEQP_FNNC', 'SELF_ETRQ_FNNC'] - }, - 'DIS_WAT', - { - name: 'disposalAmtGroup', - header: { text: '최종처분량(ton/년)' }, - items: ['SDMT_TRE_CPCTY', 'IPRT_TRE_CPCTY'] - }, - { - name: 'disposalMthGroup', - header: { text: '최종처분방법' }, - items: ['SDMT_TRE_MTH', 'IPRT_TRE_MTH'] - }, - { - name: 'opGroup', - header: { text: '운영실적' }, - items: ['YRSTP_RN_DYN', 'DSPLCMNT_AMNT'] - }, - 'RMK' - ] -} -]; \ No newline at end of file + /* 7. 운영실적 */ + { name: 'YRSTP_RN_DYN', fieldName: 'YRSTP_RN_DYN', header: { text: '가동일수' } }, + { name: 'DSPLCMNT_AMNT', fieldName: 'DSPLCMNT_AMNT', header: { text: '총배수량\n(㎥/년)' } }, + { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, + ], + columnLayout: [ + { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, + 'SWGE_STRGE_NM', 'ADDR', 'YR_GBN', 'FCT_KND', 'RN_DT', 'PL_DSGN_FRQNC', 'DGR_AR', + { name: 'revGroup', header: { text: '유수지' }, items: ['REV_FNNC', 'REV_CPCTY'] }, + { name: 'absGroup', header: { text: '흡수정' }, items: ['ABS_CPCTY'] }, + 'SWGE_SGBS_CPCTY', + { + name: 'pumpMainGroup', header: { text: '펌프시설' }, + items: [ + 'TOT_CPCTY', + { name: 'p1Group', header: { text: '펌프시설1' }, items: ['PUMP_CALBR', 'WP_CPCTY', 'PUMP_CO', 'PUMP_PREPAR_CO'] }, + { name: 'p2Group', header: { text: '펌프시설2' }, items: ['PUMP_CALBR2', 'WP_CPCTY2', 'PUMP_CO2', 'PUMP_PREPAR_CO2'] }, + { name: 'p3Group', header: { text: '펌프시설3' }, items: ['PUMP_CALBR3', 'WP_CPCTY3', 'PUMP_CO3', 'PUMP_PREPAR_CO3'] } + ] + }, + { name: 'subFacGroup', header: { text: '부대시설' }, items: ['FRE_FNNC', 'DORZEQP_FNNC', 'SELF_ETRQ_FNNC'] }, + 'DIS_WAT', + { name: 'disposalAmtGroup', header: { text: '최종처분량(ton/년)' }, items: ['SDMT_TRE_CPCTY', 'IPRT_TRE_CPCTY'] }, + { name: 'disposalMthGroup', header: { text: '최종처분방법' }, items: ['SDMT_TRE_MTH', 'IPRT_TRE_MTH'] }, + { name: 'opGroup', header: { text: '운영실적' }, items: ['YRSTP_RN_DYN', 'DSPLCMNT_AMNT'] }, + 'RMK' + ] + } +]; + +export const SewageReservoirPumpInfoListRvw = rawReservoirList.map(tab => ({ + ...tab, + columns: tab.columns.map(col => ({ + ...col, + editable: false + })) +})); \ No newline at end of file diff --git a/apps/st/src/components/util/column/review/SewerageFinanceColumnRvw.ts b/apps/st/src/components/util/column/review/SewerageFinanceColumnRvw.ts index c0beeae20..242c2169b 100644 --- a/apps/st/src/components/util/column/review/SewerageFinanceColumnRvw.ts +++ b/apps/st/src/components/util/column/review/SewerageFinanceColumnRvw.ts @@ -1,11 +1,14 @@ -export const SewerageFinanceInfoListRvw= [ +import type { GridView, DataColumn } from "@/components/type/DataGrid.type"; +import { getFooterSummary } from "@/components/util/grid/footerSummary"; + +const rawFinanceList = [ { tabKey: 'a', tabLabel: '하수도재정 결산', - rowStartNum: 3, // 3단 헤더 구조 반영 - fixedColumns: 1, // 순번, 시도, 시군구, 행정코드, 구분까지 고정 + rowStartNum: 3, + fixedColumns: 1, columns: [ - /* 1. 기본 정보 (Band: Left) */ + /* 1. 기본 정보 */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, @@ -24,35 +27,27 @@ export const SewerageFinanceInfoListRvw= [ /* 4. 용도별 사업비 (지출) */ { name: 'PRPOS_WCT_SM', fieldName: 'PRPOS_WCT_SM', header: { text: '계' } }, - - // 처리장 상세 { name: 'PRCPLT_SM', fieldName: 'PRCPLT_SM', header: { text: '소계' } }, { name: 'PRCPLT_FCLTY', fieldName: 'PRCPLT_FCLTY', header: { text: '시설비' } }, { name: 'PRCPLT_RPAIR', fieldName: 'PRCPLT_RPAIR', header: { text: '개보수비' } }, { name: 'PRCPLT_ORPNS', fieldName: 'PRCPLT_ORPNS', header: { text: '운영\n유지비' } }, { name: 'PRCPLT_ETC', fieldName: 'PRCPLT_ETC', header: { text: '기타' } }, - - // 하수관로 상세 { name: 'SEWAGE_SM', fieldName: 'SEWAGE_SM', header: { text: '소계' } }, { name: 'SEWAGE_FCLTY', fieldName: 'SEWAGE_FCLTY', header: { text: '시설비' } }, { name: 'SEWAGE_RPAIR', fieldName: 'SEWAGE_RPAIR', header: { text: '개보수비' } }, { name: 'SEWAGE_ORPNS', fieldName: 'SEWAGE_ORPNS', header: { text: '운영\n유지비' } }, { name: 'SEWAGE_ETC', fieldName: 'SEWAGE_ETC', header: { text: '기타' } }, - - // 유수지 및 배수펌프장 상세 { name: 'SWGE_STRGE_SM', fieldName: 'SWGE_STRGE_SM', header: { text: '소계' } }, { name: 'SWGE_STRGE_FCLTY', fieldName: 'SWGE_STRGE_FCLTY', header: { text: '시설비' } }, { name: 'SWGE_STRGE_RPAIR', fieldName: 'SWGE_STRGE_RPAIR', header: { text: '개보수비' } }, { name: 'SWGE_STRGE_ORPNS', fieldName: 'SWGE_STRGE_ORPNS', header: { text: '운영\n유지비' } }, { name: 'SWGE_STRGE_ETC', fieldName: 'SWGE_STRGE_ETC', header: { text: '기타' } }, - - // 기타 지출 { name: 'ETC_SM', fieldName: 'ETC_SM', header: { text: '소계' } }, { name: 'ACDNT_CYFD_AMOUNT', fieldName: 'ACDNT_CYFD_AMOUNT', header: { text: '사고\n이월액' } }, { name: 'UNRCIV_AMOUNT', fieldName: 'UNRCIV_AMOUNT', header: { text: '미수납액' } }, { name: 'ETC_AMOUNT', fieldName: 'ETC_AMOUNT', header: { text: '기타' } }, - /* 5. 비고 및 의견 */ + /* 5. 비고 */ { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, ], columnLayout: [ @@ -82,220 +77,143 @@ export const SewerageFinanceInfoListRvw= [ ] }, { - tabKey: 'b', - tabLabel: '하수도 요금', - rowStartNum: 2, // 2단 헤더 구조 반영 - fixedColumns: 1, // 순번, 시도, 시군구, 행정코드까지 고정 - columns: [ - /* 1. 행정 및 기본 정보 (Band: Left) */ - { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, - { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, - /* 2. 요금 분석 데이터 */ - { - name: 'FYER_LEVY_QY', - fieldName: 'FYER_LEVY_QY', - header: { text: '연간조정량\n(㎥)\n(A)' } - }, - { - name: 'LEVY_AMOUNT', - fieldName: 'LEVY_AMOUNT', - header: { text: '하수도사용료수익\n(원)\n(B)' } - }, - { - name: 'AVRG_UNTPC', - fieldName: 'AVRG_UNTPC', - header: { text: '㎥당요금(원/㎥)\nC=(B/A)' } - }, - { - name: 'SMRIZE_PRMPC', - fieldName: 'SMRIZE_PRMPC', - header: { text: '총괄원가(원)\n(D)' } - }, - { - name: 'SMRIZE_UNIT_PRMPC', - fieldName: 'SMRIZE_UNIT_PRMPC', - header: { text: '㎥당원가(원/㎥)\nE=(D/A)' } - }, - { - name: 'RLTY_RT', - fieldName: 'RLTY_RT', - header: { text: '요금현실화율(%)\nF=(C/E*100)' } - }, + tabKey: 'b', + tabLabel: '하수도 요금', + rowStartNum: 2, + fixedColumns: 1, + columns: [ + /* 1. 행정 및 기본 정보 */ + { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, + /* 2. 요금 분석 데이터 */ + { name: 'FYER_LEVY_QY', fieldName: 'FYER_LEVY_QY', header: { text: '연간조정량\n(㎥)\n(A)' } }, + { name: 'LEVY_AMOUNT', fieldName: 'LEVY_AMOUNT', header: { text: '하수도사용료수익\n(원)\n(B)' } }, + { name: 'AVRG_UNTPC', fieldName: 'AVRG_UNTPC', header: { text: '㎥당요금(원/㎥)\nC=(B/A)' } }, + { name: 'SMRIZE_PRMPC', fieldName: 'SMRIZE_PRMPC', header: { text: '총괄원가(원)\n(D)' } }, + { name: 'SMRIZE_UNIT_PRMPC', fieldName: 'SMRIZE_UNIT_PRMPC', header: { text: '㎥당원가(원/㎥)\nE=(D/A)' } }, + { name: 'RLTY_RT', fieldName: 'RLTY_RT', header: { text: '요금현실화율(%)\nF=(C/E*100)' } }, + { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } } + ], + columnLayout: [ + { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, + 'FYER_LEVY_QY', 'LEVY_AMOUNT', 'AVRG_UNTPC', 'SMRIZE_PRMPC', 'SMRIZE_UNIT_PRMPC', 'RLTY_RT', 'RMK' + ] + }, + { + tabKey: 'c', + tabLabel: '하수도 사용료', + rowStartNum: 2, + fixedColumns: 1, + columns: [ + /* 1. 기본 정보 */ + { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, + /* 2. 데이터 필드 */ + { name: 'LEVY_AMOUNT', fieldName: 'LEVY_AMOUNT', header: { text: '부과액' } }, + { name: 'LEVY_QY', fieldName: 'LEVY_QY', header: { text: '부과량' } }, + { name: 'HOME_LEVY_AMOUNT', fieldName: 'HOME_LEVY_AMOUNT', header: { text: '부과액' } }, + { name: 'HOME_LEVY_QY', fieldName: 'HOME_LEVY_QY', header: { text: '부과량' } }, + { name: 'HOME_UNTPC', fieldName: 'HOME_UNTPC', header: { text: '단가' } }, + { name: 'JOB_LEVY_AMOUNT', fieldName: 'JOB_LEVY_AMOUNT', header: { text: '부과액' } }, + { name: 'JOB_LEVY_QY', fieldName: 'JOB_LEVY_QY', header: { text: '부과량' } }, + { name: 'JOB_UNTPC', fieldName: 'JOB_UNTPC', header: { text: '단가' } }, + { name: 'BSN_LEVY_AMOUNT', fieldName: 'BSN_LEVY_AMOUNT', header: { text: '부과액' } }, + { name: 'BSN_LEVY_QY', fieldName: 'BSN_LEVY_QY', header: { text: '부과량' } }, + { name: 'BSN_UNTPC', fieldName: 'BSN_UNTPC', header: { text: '단가' } }, + { name: 'BATHS1_LEVY_AMOUNT', fieldName: 'BATHS1_LEVY_AMOUNT', header: { text: '부과액' } }, + { name: 'BATHS1_LEVY_QY', fieldName: 'BATHS1_LEVY_QY', header: { text: '부과량' } }, + { name: 'BATHS1_UNTPC', fieldName: 'BATHS1_UNTPC', header: { text: '단가' } }, + { name: 'BATHS2_LEVY_AMOUNT', fieldName: 'BATHS2_LEVY_AMOUNT', header: { text: '부과액' } }, + { name: 'BATHS2_LEVY_QY', fieldName: 'BATHS2_LEVY_QY', header: { text: '부과량' } }, + { name: 'BATHS2_UNTPC', fieldName: 'BATHS2_UNTPC', header: { text: '단가' } }, + { name: 'INDUST_LEVY_AMOUNT', fieldName: 'INDUST_LEVY_AMOUNT', header: { text: '부과액' } }, + { name: 'INDUST_LEVY_QY', fieldName: 'INDUST_LEVY_QY', header: { text: '부과량' } }, + { name: 'INDUST_UNTPC', fieldName: 'INDUST_UNTPC', header: { text: '단가' } }, + { name: 'ETC_LEVY_AMOUNT', fieldName: 'ETC_LEVY_AMOUNT', header: { text: '부과액' } }, + { name: 'ETC_LEVY_QY', fieldName: 'ETC_LEVY_QY', header: { text: '부과량' } }, + { name: 'ETC_UNTPC', fieldName: 'ETC_UNTPC', header: { text: '단가' } }, + { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, + ], + columnLayout: [ + { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, + { + name: 'totalGroup', header: { text: '총계' }, + items: [{ name: 'tAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['LEVY_AMOUNT'] }, { name: 'tQyUnit', header: { text: '부과량\n(천톤)' }, items: ['LEVY_QY'] }] + }, + { + name: 'homeGroup', header: { text: '가 정 용' }, + items: [{ name: 'hAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['HOME_LEVY_AMOUNT'] }, { name: 'hQyUnit', header: { text: '부과량\n(천톤)' }, items: ['HOME_LEVY_QY'] }, { name: 'hUntUnit', header: { text: '단가\n(원/톤)' }, items: ['HOME_UNTPC'] }] + }, + { + name: 'jobGroup', header: { text: '업 무 용' }, + items: [{ name: 'jAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['JOB_LEVY_AMOUNT'] }, { name: 'jQyUnit', header: { text: '부과량\n(천톤)' }, items: ['JOB_LEVY_QY'] }, { name: 'jUntUnit', header: { text: '단가\n(원/톤)' }, items: ['JOB_UNTPC'] }] + }, + { + name: 'bsnGroup', header: { text: '영 업 용(일 반 용)' }, + items: [{ name: 'bAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['BSN_LEVY_AMOUNT'] }, { name: 'bQyUnit', header: { text: '부과량\n(천톤)' }, items: ['BSN_LEVY_QY'] }, { name: 'bUntUnit', header: { text: '단가\n(원/톤)' }, items: ['BSN_UNTPC'] }] + }, + { + name: 'bath1Group', header: { text: '욕 탕 1종(대중탕용)' }, + items: [{ name: 'bt1AmtUnit', header: { text: '부과액\n(백만원)' }, items: ['BATHS1_LEVY_AMOUNT'] }, { name: 'bt1QyUnit', header: { text: '부과량\n(천톤)' }, items: ['BATHS1_LEVY_QY'] }, { name: 'bt1UntUnit', header: { text: '단가\n(원/톤)' }, items: ['BATHS1_UNTPC'] }] + }, + { + name: 'bath2Group', header: { text: '욕 탕 2종' }, + items: [{ name: 'bt2AmtUnit', header: { text: '부과액\n(백만원)' }, items: ['BATHS2_LEVY_AMOUNT'] }, { name: 'bt2QyUnit', header: { text: '부과량\n(천톤)' }, items: ['BATHS2_LEVY_QY'] }, { name: 'bt2UntUnit', header: { text: '단가\n(원/톤)' }, items: ['BATHS2_UNTPC'] }] + }, + { + name: 'industGroup', header: { text: '산업용 및 공업용' }, + items: [{ name: 'iAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['INDUST_LEVY_AMOUNT'] }, { name: 'iQyUnit', header: { text: '부과량\n(천톤)' }, items: ['INDUST_LEVY_QY'] }, { name: 'iUntUnit', header: { text: '단가\n(원/톤)' }, items: ['INDUST_UNTPC'] }] + }, + { + name: 'etcGroup', header: { text: '기타' }, + items: [{ name: 'eAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['ETC_LEVY_AMOUNT'] }, { name: 'eQyUnit', header: { text: '부과량\n(천톤)' }, items: ['ETC_LEVY_QY'] }, { name: 'eUntUnit', header: { text: '단가\n(원/톤)' }, items: ['ETC_UNTPC'] }] + }, + 'RMK' + ] + }, + { + tabKey: 'd', + tabLabel: '원인자부담금', + rowStartNum: 3, + fixedColumns: 2, + columns: [ + /* 1. 기본 정보 */ + { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, + { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, - /* 3. 기타 및 의견 */ - { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } } - ], - columnLayout: [ - { - name: 'addrGroup', - header: { text: '행정구역' }, - items: ['SIDO', 'GUGUN'], - }, - 'FYER_LEVY_QY', - 'LEVY_AMOUNT', - 'AVRG_UNTPC', - 'SMRIZE_PRMPC', - 'SMRIZE_UNIT_PRMPC', - 'RLTY_RT', - 'RMK' - ] -}, -{ - tabKey: 'c', - tabLabel: '하수도 사용료', - rowStartNum: 2, - fixedColumns: 1, - columns: [ - /* 1. 기본 정보 */ - { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, - { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, + /* 2. 데이터 필드 */ + { name: 'LEVY_CO', fieldName: 'LEVY_CO', header: { text: '건수' } }, + { name: 'LEVY_AMOUNT', fieldName: 'LEVY_AMOUNT', header: { text: '금액(백만원)' } }, + { name: 'TRGET_LEV_STTUS_CO', fieldName: 'TRGET_LEV_STTUS_CO', header: { text: '건수' } }, + { name: 'TRGET_LEV_STTUS_AMOUNT', fieldName: 'TRGET_LEV_STTUS_AMOUNT', header: { text: '금액(백만원)' } }, + { name: 'DRNG_EQP_CO', fieldName: 'DRNG_EQP_CO', header: { text: '건수' } }, + { name: 'DRNG_EQP_AMOUNT', fieldName: 'DRNG_EQP_AMOUNT', header: { text: '금액(백만원)' } }, + { name: 'CNTRWK_CO', fieldName: 'CNTRWK_CO', header: { text: '건수' } }, + { name: 'CNTRWK_AMOUNT', fieldName: 'CNTRWK_AMOUNT', header: { text: '금액(백만원)' } }, + { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, + ], + columnLayout: [ + { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, + 'YR_GBN', + { name: 'levyMainGroup', header: { text: '부과액' }, items: ['LEVY_CO', 'LEVY_AMOUNT'] }, + { + name: 'collectGroup', header: { text: '대상별 징수현황' }, + items: [ + { name: 'collectTotal', header: { text: '계' }, items: ['TRGET_LEV_STTUS_CO', 'TRGET_LEV_STTUS_AMOUNT'] }, + { name: 'contractorGroup', header: { text: '배수설비설치자\n(하수도법 제61조 제1항)' }, items: ['DRNG_EQP_CO', 'DRNG_EQP_AMOUNT'] }, + { name: 'otherGroup', header: { text: '타공사·타행위자\n(하수도법 제61조 제2항)' }, items: ['CNTRWK_CO', 'CNTRWK_AMOUNT'] } + ] + }, + 'RMK' + ] + } +]; - /* 2. 데이터 필드 정의 (header 필수 포함) */ - { name: 'LEVY_AMOUNT', fieldName: 'LEVY_AMOUNT', header: { text: '부과액' } }, - { name: 'LEVY_QY', fieldName: 'LEVY_QY', header: { text: '부과량' } }, - { name: 'HOME_LEVY_AMOUNT', fieldName: 'HOME_LEVY_AMOUNT', header: { text: '부과액' } }, - { name: 'HOME_LEVY_QY', fieldName: 'HOME_LEVY_QY', header: { text: '부과량' } }, - { name: 'HOME_UNTPC', fieldName: 'HOME_UNTPC', header: { text: '단가' } }, - { name: 'JOB_LEVY_AMOUNT', fieldName: 'JOB_LEVY_AMOUNT', header: { text: '부과액' } }, - { name: 'JOB_LEVY_QY', fieldName: 'JOB_LEVY_QY', header: { text: '부과량' } }, - { name: 'JOB_UNTPC', fieldName: 'JOB_UNTPC', header: { text: '단가' } }, - { name: 'BSN_LEVY_AMOUNT', fieldName: 'BSN_LEVY_AMOUNT', header: { text: '부과액' } }, - { name: 'BSN_LEVY_QY', fieldName: 'BSN_LEVY_QY', header: { text: '부과량' } }, - { name: 'BSN_UNTPC', fieldName: 'BSN_UNTPC', header: { text: '단가' } }, - { name: 'BATHS1_LEVY_AMOUNT', fieldName: 'BATHS1_LEVY_AMOUNT', header: { text: '부과액' } }, - { name: 'BATHS1_LEVY_QY', fieldName: 'BATHS1_LEVY_QY', header: { text: '부과량' } }, - { name: 'BATHS1_UNTPC', fieldName: 'BATHS1_UNTPC', header: { text: '단가' } }, - { name: 'BATHS2_LEVY_AMOUNT', fieldName: 'BATHS2_LEVY_AMOUNT', header: { text: '부과액' } }, - { name: 'BATHS2_LEVY_QY', fieldName: 'BATHS2_LEVY_QY', header: { text: '부과량' } }, - { name: 'BATHS2_UNTPC', fieldName: 'BATHS2_UNTPC', header: { text: '단가' } }, - { name: 'INDUST_LEVY_AMOUNT', fieldName: 'INDUST_LEVY_AMOUNT', header: { text: '부과액' } }, - { name: 'INDUST_LEVY_QY', fieldName: 'INDUST_LEVY_QY', header: { text: '부과량' } }, - { name: 'INDUST_UNTPC', fieldName: 'INDUST_UNTPC', header: { text: '단가' } }, - { name: 'ETC_LEVY_AMOUNT', fieldName: 'ETC_LEVY_AMOUNT', header: { text: '부과액' } }, - { name: 'ETC_LEVY_QY', fieldName: 'ETC_LEVY_QY', header: { text: '부과량' } }, - { name: 'ETC_UNTPC', fieldName: 'ETC_UNTPC', header: { text: '단가' } }, - { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, - ], - columnLayout: [ - { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - { - name: 'totalGroup', header: { text: '총계' }, - items: [ - { name: 'tAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['LEVY_AMOUNT'] }, // fieldName 제거, items 사용 - { name: 'tQyUnit', header: { text: '부과량\n(천톤)' }, items: ['LEVY_QY'] } - ] - }, - { - name: 'homeGroup', header: { text: '가 정 용' }, - items: [ - { name: 'hAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['HOME_LEVY_AMOUNT'] }, - { name: 'hQyUnit', header: { text: '부과량\n(천톤)' }, items: ['HOME_LEVY_QY'] }, - { name: 'hUntUnit', header: { text: '단가\n(원/톤)' }, items: ['HOME_UNTPC'] } - ] - }, - { - name: 'jobGroup', header: { text: '업 무 용' }, - items: [ - { name: 'jAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['JOB_LEVY_AMOUNT'] }, - { name: 'jQyUnit', header: { text: '부과량\n(천톤)' }, items: ['JOB_LEVY_QY'] }, - { name: 'jUntUnit', header: { text: '단가\n(원/톤)' }, items: ['JOB_UNTPC'] } - ] - }, - { - name: 'bsnGroup', header: { text: '영 업 용(일 반 용)' }, - items: [ - { name: 'bAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['BSN_LEVY_AMOUNT'] }, - { name: 'bQyUnit', header: { text: '부과량\n(천톤)' }, items: ['BSN_LEVY_QY'] }, - { name: 'bUntUnit', header: { text: '단가\n(원/톤)' }, items: ['BSN_UNTPC'] } - ] - }, - { - name: 'bath1Group', header: { text: '욕 탕 1종(대중탕용)' }, - items: [ - { name: 'bt1AmtUnit', header: { text: '부과액\n(백만원)' }, items: ['BATHS1_LEVY_AMOUNT'] }, - { name: 'bt1QyUnit', header: { text: '부과량\n(천톤)' }, items: ['BATHS1_LEVY_QY'] }, - { name: 'bt1UntUnit', header: { text: '단가\n(원/톤)' }, items: ['BATHS1_UNTPC'] } - ] - }, - { - name: 'bath2Group', header: { text: '욕 탕 2종' }, - items: [ - { name: 'bt2AmtUnit', header: { text: '부과액\n(백만원)' }, items: ['BATHS2_LEVY_AMOUNT'] }, - { name: 'bt2QyUnit', header: { text: '부과량\n(천톤)' }, items: ['BATHS2_LEVY_QY'] }, - { name: 'bt2UntUnit', header: { text: '단가\n(원/톤)' }, items: ['BATHS2_UNTPC'] } - ] - }, - { - name: 'industGroup', header: { text: '산업용 및 공업용' }, - items: [ - { name: 'iAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['INDUST_LEVY_AMOUNT'] }, - { name: 'iQyUnit', header: { text: '부과량\n(천톤)' }, items: ['INDUST_LEVY_QY'] }, - { name: 'iUntUnit', header: { text: '단가\n(원/톤)' }, items: ['INDUST_UNTPC'] } - ] - }, - { - name: 'etcGroup', header: { text: '기타' }, - items: [ - { name: 'eAmtUnit', header: { text: '부과액\n(백만원)' }, items: ['ETC_LEVY_AMOUNT'] }, - { name: 'eQyUnit', header: { text: '부과량\n(천톤)' }, items: ['ETC_LEVY_QY'] }, - { name: 'eUntUnit', header: { text: '단가\n(원/톤)' }, items: ['ETC_UNTPC'] } - ] - }, - 'RMK' - ] -}, -{ - tabKey: 'd', - tabLabel: '원인자부담금', - rowStartNum: 3, // 이미지처럼 3단 헤더이므로 데이터는 3행부터 시작 - fixedColumns: 2, - columns: [ - /* 1. 기본 정보 (header 필수 포함) */ - { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, - { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, - { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, - - /* 2. 데이터 필드 정의 (최하단 3행에 표시될 텍스트) */ - { name: 'LEVY_CO', fieldName: 'LEVY_CO', header: { text: '건수' } }, - { name: 'LEVY_AMOUNT', fieldName: 'LEVY_AMOUNT', header: { text: '금액(백만원)' } }, - { name: 'TRGET_LEV_STTUS_CO', fieldName: 'TRGET_LEV_STTUS_CO', header: { text: '건수' } }, - { name: 'TRGET_LEV_STTUS_AMOUNT', fieldName: 'TRGET_LEV_STTUS_AMOUNT', header: { text: '금액(백만원)' } }, - { name: 'DRNG_EQP_CO', fieldName: 'DRNG_EQP_CO', header: { text: '건수' } }, - { name: 'DRNG_EQP_AMOUNT', fieldName: 'DRNG_EQP_AMOUNT', header: { text: '금액(백만원)' } }, - { name: 'CNTRWK_CO', fieldName: 'CNTRWK_CO', header: { text: '건수' } }, - { name: 'CNTRWK_AMOUNT', fieldName: 'CNTRWK_AMOUNT', header: { text: '금액(백만원)' } }, - { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, - ], - columnLayout: [ - { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - 'YR_GBN', - { - name: 'levyMainGroup', - header: { text: '부과액' }, - items: ['LEVY_CO', 'LEVY_AMOUNT'] // 1단(부과액) > 2단(건수, 금액) - }, - { - name: 'collectGroup', - header: { text: '대상별 징수현황' }, - items: [ - { - name: 'collectTotal', - header: { text: '계' }, - items: ['TRGET_LEV_STTUS_CO', 'TRGET_LEV_STTUS_AMOUNT'] - }, - { - name: 'contractorGroup', - header: { text: '배수설비설치자\n(하수도법 제61조 제1항)' }, - items: ['DRNG_EQP_CO', 'DRNG_EQP_AMOUNT'] - }, - { - name: 'otherGroup', - header: { text: '타공사·타행위자\n(하수도법 제61조 제2항)' }, - items: ['CNTRWK_CO', 'CNTRWK_AMOUNT'] - } - ] - }, - 'RMK' - ] -} -]; \ No newline at end of file +export const SewerageFinanceInfoListRvw = rawFinanceList.map(tab => ({ + ...tab, + columns: tab.columns.map(col => ({ + ...col, + editable: false + })) +})); \ No newline at end of file diff --git a/apps/st/src/components/util/column/review/SewerageServiceLevelColumnRvw.ts b/apps/st/src/components/util/column/review/SewerageServiceLevelColumnRvw.ts index a3efcf9dc..b762c43f4 100644 --- a/apps/st/src/components/util/column/review/SewerageServiceLevelColumnRvw.ts +++ b/apps/st/src/components/util/column/review/SewerageServiceLevelColumnRvw.ts @@ -1,8 +1,12 @@ -export const SewerageServiceLevelInfoListRvw=[{ +import type { GridView, DataColumn } from "@/components/type/DataGrid.type"; +import { getFooterSummary } from "@/components/util/grid/footerSummary"; + +const rawServiceLevelList = [ + { tabKey: 'a', tabLabel: '민원', - rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2") - fixedColumns: 2, // 순번, 시도, 시군구, 구분까지 고정 + rowStartNum: 2, + fixedColumns: 2, columns: [ /* 1. 기본 정보 (Band: Left) */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, @@ -49,57 +53,65 @@ export const SewerageServiceLevelInfoListRvw=[{ ] }, { - tabKey: 'b', - tabLabel: '주민친화시설', - rowStartNum: 2, // 2단 헤더 구조 - fixedColumns: 5, // 순번, 시도, 시군구, 처리장명, 시설용량, 구분까지 고정 - columns: [ - /* 1. 기본 및 시설 정보 (Band: Left) */ - { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, - { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, - { name: 'BSC_FCT_NM', fieldName: 'BSC_FCT_NM', header: { text: '처리장명' } }, - { name: 'FCT_CPC', fieldName: 'FCT_CPC', header: { text: '시설용량\n(㎥/일)' } }, - { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, + tabKey: 'b', + tabLabel: '주민친화시설', + rowStartNum: 2, + fixedColumns: 5, + columns: [ + /* 1. 기본 및 시설 정보 (Band: Left) */ + { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, + { name: 'BSC_FCT_NM', fieldName: 'BSC_FCT_NM', header: { text: '처리장명' } }, + { name: 'FCT_CPC', fieldName: 'FCT_CPC', header: { text: '시설용량\n(㎥/일)' } }, + { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, - /* 2. 처리장 전체 면적 */ - { name: 'PRCPLT_AR', fieldName: 'PRCPLT_AR', header: { text: '처리장\n면적(㎡)' } }, + /* 2. 처리장 전체 면적 */ + { name: 'PRCPLT_AR', fieldName: 'PRCPLT_AR', header: { text: '처리장\n면적(㎡)' } }, - /* 3. 주민친화시설 면적 상세 (단위: ㎡) */ - { name: 'TOTAL_AR', fieldName: 'TOTAL_AR', header: { text: '총계' } }, - { name: 'RESTRM_AR', fieldName: 'RESTRM_AR', header: { text: '휴게시설' } }, - { name: 'CHILDPLAY_AR', fieldName: 'CHILDPLAY_AR', header: { text: '어린이놀이공간' } }, - { name: 'ALSFC_AR', fieldName: 'ALSFC_AR', header: { text: '체력단련시설' } }, - { name: 'PLGRND_AR', fieldName: 'PLGRND_AR', header: { text: '운동시설' } }, - { name: 'PRKPLCE_AR', fieldName: 'PRKPLCE_AR', header: { text: '주차장' } }, - { name: 'CTLSTT_AR', fieldName: 'CTLSTT_AR', header: { text: '교육 및\n문화시설' } }, - { name: 'NRPRK_AR', fieldName: 'NRPRK_AR', header: { text: '습지조성\n(생태공원)' } }, - { name: 'ETC_AR', fieldName: 'ETC_AR', header: { text: '기타' } }, + /* 3. 주민친화시설 면적 상세 (단위: ㎡) */ + { name: 'TOTAL_AR', fieldName: 'TOTAL_AR', header: { text: '총계' } }, + { name: 'RESTRM_AR', fieldName: 'RESTRM_AR', header: { text: '휴게시설' } }, + { name: 'CHILDPLAY_AR', fieldName: 'CHILDPLAY_AR', header: { text: '어린이놀이공간' } }, + { name: 'ALSFC_AR', fieldName: 'ALSFC_AR', header: { text: '체력단련시설' } }, + { name: 'PLGRND_AR', fieldName: 'PLGRND_AR', header: { text: '운동시설' } }, + { name: 'PRKPLCE_AR', fieldName: 'PRKPLCE_AR', header: { text: '주차장' } }, + { name: 'CTLSTT_AR', fieldName: 'CTLSTT_AR', header: { text: '교육 및\n문화시설' } }, + { name: 'NRPRK_AR', fieldName: 'NRPRK_AR', header: { text: '습지조성\n(생태공원)' } }, + { name: 'ETC_AR', fieldName: 'ETC_AR', header: { text: '기타' } }, - /* 4. 비고 */ - { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } } - ], - columnLayout: [ - { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - 'BSC_FCT_NM', - 'FCT_CPC', - 'YR_GBN', - 'PRCPLT_AR', - { - name: 'friendlyFacilityGroup', - header: { text: '주민친화시설 면적(㎡)' }, - items: [ - 'TOTAL_AR', - 'RESTRM_AR', - 'CHILDPLAY_AR', - 'ALSFC_AR', - 'PLGRND_AR', - 'PRKPLCE_AR', - 'CTLSTT_AR', - 'NRPRK_AR', - 'ETC_AR' - ] - }, - 'RMK' - ] -} -]; \ No newline at end of file + /* 4. 비고 */ + { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } } + ], + columnLayout: [ + { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, + 'BSC_FCT_NM', + 'FCT_CPC', + 'YR_GBN', + 'PRCPLT_AR', + { + name: 'friendlyFacilityGroup', + header: { text: '주민친화시설 면적(㎡)' }, + items: [ + 'TOTAL_AR', + 'RESTRM_AR', + 'CHILDPLAY_AR', + 'ALSFC_AR', + 'PLGRND_AR', + 'PRKPLCE_AR', + 'CTLSTT_AR', + 'NRPRK_AR', + 'ETC_AR' + ] + }, + 'RMK' + ] + } +]; + +export const SewerageServiceLevelInfoListRvw = rawServiceLevelList.map(tab => ({ + ...tab, + columns: tab.columns.map(col => ({ + ...col, + editable: false + })) +})); \ No newline at end of file diff --git a/apps/st/src/components/util/column/review/WaterReuseColumnRvw.ts b/apps/st/src/components/util/column/review/WaterReuseColumnRvw.ts index 7362ef0f3..0498dd9d6 100644 --- a/apps/st/src/components/util/column/review/WaterReuseColumnRvw.ts +++ b/apps/st/src/components/util/column/review/WaterReuseColumnRvw.ts @@ -1,11 +1,14 @@ +import type { GridView, DataColumn } from "@/components/type/DataGrid.type"; +import { getFooterSummary } from "@/components/util/grid/footerSummary"; -export const WaterReuseInfoList=[{ +const rawWaterReuseList = [ + { tabKey: 'a', tabLabel: '공공하수처리수 재이용', rowStartNum: 4, fixedColumns: 2, columns: [ - /* 1. 기본 및 행정 정보 */ + /* 1. 기본 및 행정 정보 */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, @@ -26,7 +29,7 @@ export const WaterReuseInfoList=[{ { name: 'RSWTR_PIPE', fieldName: 'RSWTR_PIPE', header: { text: '공급관로길이\n(km)' } }, { name: 'RSWTR_PUMP', fieldName: 'RSWTR_PUMP', header: { text: '공급펌프\n(톤/일)' } }, - /* 4. 재이용 실적 - 총계 및 장내용수 (단위: 천톤/년) */ + /* 4. 재이용 실적 - 총계 및 장내용수 */ { name: 'USE_AMNT_TOTAL', fieldName: 'USE_AMNT_TOTAL', header: { text: '총계' } }, { name: 'USE_AMNT_D01', fieldName: 'USE_AMNT_D01', header: { text: '계' } }, { name: 'USE_AMNT_S01', fieldName: 'USE_AMNT_S01', header: { text: '세척수' } }, @@ -37,7 +40,7 @@ export const WaterReuseInfoList=[{ { name: 'USE_AMNT_S06', fieldName: 'USE_AMNT_S06', header: { text: '장내중수도' } }, { name: 'USE_AMNT_S07', fieldName: 'USE_AMNT_S07', header: { text: '장내기타용수' } }, - /* 5. 재이용 실적 - 장외용수 (단위: 천톤/년) */ + /* 5. 재이용 실적 - 장외용수 */ { name: 'USE_AMNT_D02', fieldName: 'USE_AMNT_D02', header: { text: '계' } }, { name: 'USE_AMNT_S11', fieldName: 'USE_AMNT_S11', header: { text: '청소·화장실\n용수' } }, { name: 'USE_AMNT_S12', fieldName: 'USE_AMNT_S12', header: { text: '세척·살수용수' } }, @@ -114,7 +117,7 @@ export const WaterReuseInfoList=[{ tabLabel: '중수도 현황', rowStartNum: 2, columns: [ - /* 1. 기본 및 시설 위치 정보 (Band: Left) */ + /* 1. 기본 및 시설 위치 정보 */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, { name: 'BILD_NM', fieldName: 'BILD_NM', header: { text: '건축물명/\n개발사업명' } }, @@ -127,48 +130,37 @@ export const WaterReuseInfoList=[{ { name: 'COMP_DT', fieldName: 'COMP_DT', header: { text: '설치완료일\nyyyy-mm-dd' } }, { name: 'RN_DT', fieldName: 'RN_DT', header: { text: '가동개시일\nyyyy-mm-dd' } }, - /* 3. 시설현황 (단위: ㎡, ㎥/일) */ + /* 3. 시설현황 */ { name: 'TOTAR', fieldName: 'TOTAR', header: { text: '건축연면적\n(㎡)' } }, { name: 'PROC_CPCTY', fieldName: 'PROC_CPCTY', header: { text: '처리용량\n(㎥/일)' } }, - /* 4. 이용 실적 및 운영 정보 (단위: ㎥/년, 백만원/년) */ + /* 4. 이용 실적 및 운영 정보 */ { name: 'WATER_USE_CPCTY', fieldName: 'WATER_USE_CPCTY', header: { text: '물 사용량\n(㎥/년)' } }, { name: 'RUSWTR_USE_SM', fieldName: 'RUSWTR_USE_SM', header: { text: '중수도\n이용량\n(㎥/년)' } }, { name: 'SUB_USE_CPCTY', fieldName: 'SUB_USE_CPCTY', header: { text: '대체수\n이용량\n(㎥/년)' } }, { name: 'RUSWTR_PRPOS', fieldName: 'RUSWTR_PRPOS', header: { text: '중수도용도' } }, { name: 'FYER_OPER_CT', fieldName: 'FYER_OPER_CT', header: { text: '연간운영비\n(백만원/년)' } }, - /* 5. 비고 및 의견 */ + /* 5. 비고 */ { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } } ], columnLayout: [ { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - 'BILD_NM', - 'ADDR', - 'YR_GBN', - 'BILD_TP', - 'LAW_YN', - 'COMP_DT', - 'RN_DT', + 'BILD_NM', 'ADDR', 'YR_GBN', 'BILD_TP', 'LAW_YN', 'COMP_DT', 'RN_DT', { name: 'fctStatusGroup', header: { text: '시설현황' }, items: ['TOTAR', 'PROC_CPCTY'] }, - 'WATER_USE_CPCTY', - 'RUSWTR_USE_SM', - 'SUB_USE_CPCTY', - 'RUSWTR_PRPOS', - 'FYER_OPER_CT', - 'RMK' + 'WATER_USE_CPCTY', 'RUSWTR_USE_SM', 'SUB_USE_CPCTY', 'RUSWTR_PRPOS', 'FYER_OPER_CT', 'RMK' ] -}, -{ + }, + { tabKey: 'c', tabLabel: '빗물이용시설 현황', - rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2") + rowStartNum: 2, columns: [ - /* 1. 기본 및 행정 정보 (Band: Left) */ + /* 1. 기본 및 행정 정보 */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, { name: 'RWR_REUSE_FCT_NM', fieldName: 'RWR_REUSE_FCT_NM', header: { text: '시설명' } }, @@ -183,7 +175,7 @@ export const WaterReuseInfoList=[{ { name: 'CCM', fieldName: 'CCM', header: { text: '집수면 종류' } }, { name: 'TRTFC_ENNC', fieldName: 'TRTFC_ENNC', header: { text: '여과등\n처리시설\n유무' } }, - /* 3. 시설 운영 실적 (단위: ㎥, ㎥/년, 백만원/년) */ + /* 3. 시설 운영 실적 */ { name: 'SGBS_CPCTY', fieldName: 'SGBS_CPCTY', header: { text: '저류조 용량\n(㎥)' } }, { name: 'FYER_USEQTY', fieldName: 'FYER_USEQTY', header: { text: '연간 이용량\n(㎥/년)' } }, { name: 'RWR_PRCUSE_PRPPOS', fieldName: 'RWR_PRCUSE_PRPPOS', header: { text: '이용용도' } }, @@ -194,26 +186,13 @@ export const WaterReuseInfoList=[{ ], columnLayout: [ { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - 'RWR_REUSE_FCT_NM', - 'YR_GBN', - 'BILD_TP', - 'ADDR', - 'LAW_YN', - 'RN_DT', - 'INSTL_CT', - 'CCM', - 'TRTFC_ENNC', - 'SGBS_CPCTY', - 'FYER_USEQTY', - 'RWR_PRCUSE_PRPPOS', - 'FYER_OPER_CT', - 'RMK' + 'RWR_REUSE_FCT_NM', 'YR_GBN', 'BILD_TP', 'ADDR', 'LAW_YN', 'RN_DT', 'INSTL_CT', 'CCM', 'TRTFC_ENNC', 'SGBS_CPCTY', 'FYER_USEQTY', 'RWR_PRCUSE_PRPPOS', 'FYER_OPER_CT', 'RMK' ] -}, -{ + }, + { tabKey: 'd', tabLabel: '하ㆍ폐수처리수 재이용시설 시공업 등록현황', - rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2") + rowStartNum: 2, columns: [ /* 1. 기본 및 행정 정보 */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, @@ -233,19 +212,13 @@ export const WaterReuseInfoList=[{ ], columnLayout: [ { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - 'YR_GBN', - 'CMPNM', - 'RPRSNTV', - 'ADDR', - 'CMPN_RGSDE', - 'RMK' + 'YR_GBN', 'CMPNM', 'RPRSNTV', 'ADDR', 'CMPN_RGSDE', 'RMK' ] -}, -{ + }, + { tabKey: 'e', tabLabel: '하ㆍ폐수처리수 재이용시설 시공업 인가현황', - rowStartNum: 2, // 2단 헤더 구조 (순번 rowspan="2") - + rowStartNum: 2, columns: [ /* 1. 기본 및 행정 정보 */ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, @@ -263,12 +236,15 @@ export const WaterReuseInfoList=[{ ], columnLayout: [ { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, - 'YR_GBN', - 'CMPNM', - 'RPRSNTV', - 'ADDR', - 'CMPN_RGSDE', - 'RMK' + 'YR_GBN', 'CMPNM', 'RPRSNTV', 'ADDR', 'CMPN_RGSDE', 'RMK' ] -} -]; \ No newline at end of file + } +]; + +export const WaterReuseInfoList = rawWaterReuseList.map(tab => ({ + ...tab, + columns: tab.columns.map(col => ({ + ...col, + editable: false + })) +})); \ No newline at end of file From 69820d8e4c5cba9909bf6624fd01df17801267d0 Mon Sep 17 00:00:00 2001 From: rsone001 Date: Fri, 2 Jan 2026 11:26:27 +0900 Subject: [PATCH 02/11] =?UTF-8?q?[feat]=2007.=EB=B6=84=EB=87=A8=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=EC=8B=9C=EC=84=A4=20=EB=8B=A8=EC=9D=BC=20=ED=83=AD=20?= =?UTF-8?q?column=20=ED=8F=B4=EB=8D=94=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../review/ExcretaTreatmentFacilityRvw.tsx | 129 ++---------------- .../ExcretaTreatmentFacilityColumnRvw.ts | 88 ++++++++++++ 2 files changed, 97 insertions(+), 120 deletions(-) create mode 100644 apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts diff --git a/apps/st/src/components/statistics/review/ExcretaTreatmentFacilityRvw.tsx b/apps/st/src/components/statistics/review/ExcretaTreatmentFacilityRvw.tsx index d9086a940..71f41f254 100644 --- a/apps/st/src/components/statistics/review/ExcretaTreatmentFacilityRvw.tsx +++ b/apps/st/src/components/statistics/review/ExcretaTreatmentFacilityRvw.tsx @@ -1,141 +1,30 @@ import SearchForm from "@/components/module/SearchForm"; -import DataGrid from "@/components/module/DataGrid"; import SaveButton from "@/components/button/SaveButton"; import ApproveButton from "@/components/button/ApproveButton"; import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import ReturnButton from "@/components/button/ReturnButton"; +import TabDataGrid from "@/components/module/TabDataGrid"; +import { ExcretaTreatmentFacilityInfoList } from "@/components/util/column/review/ExcretaTreatmentFacilityColumnRvw"; + const ExcretaTreatmentFacilityRvw = () => { - const columns = [ - // 행정구역 - { name: 'sido', fieldName: '시도', header: { text: '시도' } }, - { name: 'sgg', fieldName: '구군', header: { text: '구군' } }, - // 기본 정보 - { name: '시설명', fieldName: '시설명', header: { text: '시설명' } }, - { name: '구분', fieldName: '구분', header: { text: '구분' } }, - { name: '소재지', fieldName: '소재지', header: { text: '소재지' } }, - { name: '전화번호', fieldName: '전화번호', header: { text: '전화번호' } }, - { name: '준공일', fieldName: '준공일', header: { text: '준공일' } }, - { name: '가동개시일', fieldName: '가동개시일', header: { text: '가동개시일' } }, - { name: '사업비(백만원)', fieldName: '사업비(백만원)', header: { text: '사업비(백만원)' } }, - { name: '시설용량(m3/일)', fieldName: '시설용량(m3/일)', header: { text: '시설용량(m3/일)' } }, - { name: '처리량(m3/일)', fieldName: '처리량(m3/일)', header: { text: '처리량(m3/일)' } }, - { name: '가동일수(일/년)', fieldName: '가동일수(일/년)', header: { text: '가동일수(일/년)' } }, - - // 처리 - { name: '처리공법', fieldName: '처리공법', header: { text: '처리공법' } }, - { name: '연계처리장명', fieldName: '연계처리장명', header: { text: '연계처리장명' } }, - { name: '연계처리량', fieldName: '연계처리량', header: { text: '연계처리량' } }, - - // 유입수질 - { name: 'BOD', fieldName: 'BOD', header: { text: 'BOD' } }, - { name: 'TOC', fieldName: 'TOC', header: { text: 'TOC' } }, - { name: 'SS', fieldName: 'SS', header: { text: 'SS' } }, - { name: 'T-N', fieldName: 'T-N', header: { text: 'T-N' } }, - { name: 'T-P', fieldName: 'T-P', header: { text: 'T-P' } }, - { name: '대장균군수', fieldName: '대장균군수', header: { text: '대장균군수' } }, - - // 방류수질 - { name: '방류수질BOD', fieldName: '방류수질BOD', header: { text: 'BOD' } }, - { name: '방류수질TOC', fieldName: '방류수질TOC', header: { text: 'TOC' } }, - { name: '방류수질SS', fieldName: '방류수질SS', header: { text: 'SS' } }, - { name: '방류수질T-N', fieldName: '방류수질T-N', header: { text: 'T-N' } }, - { name: '방류수질T-P', fieldName: '방류수질T-P', header: { text: 'T-P' } }, - { name: '방류수질대장균군수', fieldName: '방류수질대장균군수', header: { text: '방류수질대장균군수' } }, - - // 방류수역 - { name: '수계', fieldName: '수계', header: { text: '수계' } }, - { name: '지류', fieldName: '지류', header: { text: '지류' } }, - { name: '중권역', fieldName: '중권역', header: { text: '중권역' } }, - { name: '소권역', fieldName: '소권역', header: { text: '소권역' } }, - - // 운영 - { name: '운영주체(자체/공기업,민간위탁)', fieldName: '운영주체(자체/공기업,민간위탁)', header: { text: '운영주체(자체/공기업,민간위탁)' } }, - { name: '직원총수(명)', fieldName: '직원총수(명)', header: { text: '직원총수(명)' } }, - { name: '안전사고건수(건,인/년)', fieldName: '안전사고건수(건,인/년)', header: { text: '안전사고건수(건,인/년)' } }, - { name: 'rmk', fieldName: '비고', header: { text: '비고' } }, - ]; - - - - const columnLayout = [ - { - name: 'groupA', - hideChildHeaders: false, - header: { text: '행정구역' }, - items: ['sido', 'sgg'], - }, - '시설명', - '구분', - '소재지', - '전화번호', - '준공일', - '가동개시일', - '사업비(백만원)', - '시설용량(m3/일)', - '처리량(m3/일)', - '가동일수(일/년)', - '처리공법', - '연계처리장명', - '연계처리량', - { - name: 'groupB', - hideChildHeaders: false, - header: { text: '유입수질(mg/L,개/mL)' }, - items: ['BOD', 'TOC', 'SS', 'T-N', 'T-P', '대장균군수'], - }, - - { - name: 'groupC', - hideChildHeaders: false, - header: { text: '방류수질(mg/L,개/mL))' }, - items: ['방류수질BOD', '방류수질TOC', '방류수질SS', '방류수질T-N', '방류수질T-P', '방류수질대장균군수'], - }, - - { - name: 'groupD', - hideChildHeaders: false, - header: { text: '방류수역' }, - items: ['수계', '지류', '중권역', '소권역'], - }, - '운영주체(자체/공기업,민간위탁)', - '직원총수(명)', - '안전사고건수(건,인/년)', - 'rmk' - ]; - - const approveFunc = () => { - console.log('approveFunc'); - // 승인 로직 - }; - - const saveFunc = () => { - console.log('submit'); - // 저장 로직 - }; - - const reviewOpinionFunc = () => { - console.log('reviewOpinionFunc'); - // 검토의견 작성 - }; - - const returnFunc = () => { - console.log('returnFunc'); - // 반려 - }; + const approveFunc = () => console.log('approveFunc'); + const saveFunc = () => console.log('submit'); + const reviewOpinionFunc = () => console.log('reviewOpinionFunc'); + const returnFunc = () => console.log('returnFunc'); return ( <> - +
- + ); }; diff --git a/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts b/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts new file mode 100644 index 000000000..4f57b1207 --- /dev/null +++ b/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts @@ -0,0 +1,88 @@ +export const ExcretaTreatmentFacilityInfoList = [ + { + tabKey: 'a', + tabLabel: '분뇨 처리 시설 현황', + rowStartNum: 2, // 2단 헤더 구조 + fixedColumns: 3, // 순번, 시도, 구군까지 고정 + columns: [ + /* 1. 행정구역 */ + { name: 'sido', fieldName: 'SIDO', header: { text: '시도' } }, + { name: 'sgg', fieldName: 'GUGUN', header: { text: '구군' } }, + + /* 2. 기본 정보 */ + { name: 'FCT_NM', fieldName: 'FCT_NM', header: { text: '시설명' } }, + { name: 'GBN', fieldName: 'GBN', header: { text: '구분' } }, + { name: 'ADDR', fieldName: 'ADDR', header: { text: '소재지' } }, + { name: 'TEL_NO', fieldName: 'TEL_NO', header: { text: '전화번호' } }, + { name: 'COMP_DT', fieldName: 'COMP_DT', header: { text: '준공일' } }, + { name: 'RN_DT', fieldName: 'RN_DT', header: { text: '가동개시일' } }, + { name: 'BSNS_CT', fieldName: 'BSNS_CT', header: { text: '사업비(백만원)' } }, + { name: 'FCT_CPC', fieldName: 'FCT_CPC', header: { text: '시설용량(㎥/일)' } }, + { name: 'TPUT_AMNT', fieldName: 'TPUT_AMNT', header: { text: '처리량(㎥/일)' } }, + { name: 'RN_DYN', fieldName: 'RN_DYN', header: { text: '가동일수(일/년)' } }, + + /* 3. 처리 관련 */ + { name: 'TRT_MTHD', fieldName: 'TRT_MTHD', header: { text: '처리공법' } }, + { name: 'LNK_FCT_NM', fieldName: 'LNK_FCT_NM', header: { text: '연계처리장명' } }, + { name: 'LNK_TPUT_AMNT', fieldName: 'LNK_TPUT_AMNT', header: { text: '연계처리량' } }, + + /* 4. 유입수질 (mg/L, 개/mL) */ + { name: 'IN_BOD', fieldName: 'IN_BOD', header: { text: 'BOD' } }, + { name: 'IN_TOC', fieldName: 'IN_TOC', header: { text: 'TOC' } }, + { name: 'IN_SS', fieldName: 'IN_SS', header: { text: 'SS' } }, + { name: 'IN_TN', fieldName: 'IN_TN', header: { text: 'T-N' } }, + { name: 'IN_TP', fieldName: 'IN_TP', header: { text: 'T-P' } }, + { name: 'IN_COLI', fieldName: 'IN_COLI', header: { text: '대장균군수' } }, + + /* 5. 방류수질 (mg/L, 개/mL) */ + { name: 'OUT_BOD', fieldName: 'OUT_BOD', header: { text: 'BOD' } }, + { name: 'OUT_TOC', fieldName: 'OUT_TOC', header: { text: 'TOC' } }, + { name: 'OUT_SS', fieldName: 'OUT_SS', header: { text: 'SS' } }, + { name: 'OUT_TN', fieldName: 'OUT_TN', header: { text: 'T-N' } }, + { name: 'OUT_TP', fieldName: 'OUT_TP', header: { text: 'T-P' } }, + { name: 'OUT_COLI', fieldName: 'OUT_COLI', header: { text: '대장균군수' } }, + + /* 6. 방류수역 */ + { name: 'WTR_SYS', fieldName: 'WTR_SYS', header: { text: '수계' } }, + { name: 'STRM', fieldName: 'STRM', header: { text: '지류' } }, + { name: 'MID_ZONE', fieldName: 'MID_ZONE', header: { text: '중권역' } }, + { name: 'SML_ZONE', fieldName: 'SML_ZONE', header: { text: '소권역' } }, + + /* 7. 운영 현황 */ + { name: 'OPR_MBY', fieldName: 'OPR_MBY', header: { text: '운영주체' } }, + { name: 'EMP_CNT', fieldName: 'EMP_CNT', header: { text: '직원총수(명)' } }, + { name: 'ACC_CNT', fieldName: 'ACC_CNT', header: { text: '안전사고건수' } }, + { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, + ], + columnLayout: [ + { + name: 'groupA', + header: { text: '행정구역' }, + items: ['sido', 'sgg'] + }, + 'FCT_NM', 'GBN', 'ADDR', 'TEL_NO', 'COMP_DT', 'RN_DT', 'BSNS_CT', 'FCT_CPC', 'TPUT_AMNT', 'RN_DYN', + 'TRT_MTHD', 'LNK_FCT_NM', 'LNK_TPUT_AMNT', + { + name: 'groupB', + header: { text: '유입수질(mg/L,개/mL)' }, + items: ['IN_BOD', 'IN_TOC', 'IN_SS', 'IN_TN', 'IN_TP', 'IN_COLI'], + }, + { + name: 'groupC', + header: { text: '방류수질(mg/L,개/mL)' }, + items: ['OUT_BOD', 'OUT_TOC', 'OUT_SS', 'OUT_TN', 'OUT_TP', 'OUT_COLI'], + }, + { + name: 'groupD', + header: { text: '방류수역' }, + items: ['WTR_SYS', 'STRM', 'MID_ZONE', 'SML_ZONE'], + }, + { + name: 'groupE', + header: { text: '운영현황' }, + items: ['OPR_MBY', 'EMP_CNT', 'ACC_CNT'] + }, + 'RMK' + ] + } +]; \ No newline at end of file From 28f841adc8cf623d9b1346f5749fe63efc511997 Mon Sep 17 00:00:00 2001 From: rsone001 Date: Fri, 2 Jan 2026 13:10:16 +0900 Subject: [PATCH 03/11] =?UTF-8?q?[feat]=2006.=EA=B3=B5=EA=B3=B5=20?= =?UTF-8?q?=ED=95=98=EC=88=98=EC=B2=98=EB=A6=AC=EC=8B=9C=EC=84=A4=20?= =?UTF-8?q?=EB=8B=A8=EC=9D=BC=20=ED=83=AD=20column=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../review/PublicSewageFacilityRvw.tsx | 180 +----------------- .../review/PublicSewageFacilityColumnRvw.ts | 143 ++++++++++++++ 2 files changed, 149 insertions(+), 174 deletions(-) create mode 100644 apps/st/src/components/util/column/review/PublicSewageFacilityColumnRvw.ts diff --git a/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx b/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx index 2ffc89764..8c6adbcf7 100644 --- a/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx +++ b/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx @@ -1,183 +1,15 @@ import SearchForm from "@/components/module/SearchForm"; -import DataGrid from "@/components/module/DataGrid"; import SaveButton from "@/components/button/SaveButton"; import ApproveButton from "@/components/button/ApproveButton"; import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import ReturnButton from "@/components/button/ReturnButton"; +import TabDataGrid from "@/components/module/TabDataGrid"; + +import { PublicSewageFacilityInfoList } from "@/components/util/column/review/PublicSewageFacilityColumnRvw"; + const PublicSewageFacilityRvw = () => { - const rawColumns = [ - { name: 'sido', fieldName: '시도', header: { text: '시도' } }, - { name: 'sgg', fieldName: '구군', header: { text: '구군' } }, - { name: '구분', fieldName: '구분', header: { text: '구분' } }, - { name: '소재지', fieldName: '소재지', header: { text: '소재지' } }, - { name: '시설명(500m3/일이상/미만)', fieldName: '시설명(500m3/일이상/미만)', header: { text: '시설명(500m3/일이상/미만)' } }, - - //시설용량 - { name: '시설용량(500m3/일이상/미만)', fieldName: '시설용량(500m3/일이상/미만)', header: { text: '시설용량(500m3/일이상/미만)' } }, - { name: '(시설용량)물리적', fieldName: '(시설용량)물리적', header: { text: '물리적' } }, - { name: '(시설용량)생물학적', fieldName: '(시설용량)생물학적', header: { text: '생물학적' } }, - { name: '(시설용량)고도', fieldName: '(시설용량)고도', header: { text: '고도' } }, - - //유입하수량 - { name: '유입하수량(500m3/일이상/미만)', fieldName: '유입하수량(500m3/일이상/미만)', header: { text: '유입하수량(500m3/일이상/미만)' } }, - { name: '(유입하수량)물리적', fieldName: '(유입하수량)물리적', header: { text: '물리적' } }, - { name: '(유입하수량)생물학적', fieldName: '(유입하수량)생물학적', header: { text: '생물학적' } }, - { name: '(유입하수량)고도', fieldName: '(유입하수량)고도', header: { text: '고도' } }, - { name: '오수펌프_총양수량(m3/min)', fieldName: '오수펌프_총양수량(m3/min)', header: { text: '총양수량(m3/min)' } }, - { name: '우수펌프_총양수량(m3/min)', fieldName: '우수펌프_총양수량(m3/min)', header: { text: '총양수량(m3/min)' } }, - - //방류량 - { name: '방류량(500m3/일이상/미만)', fieldName: '방류량(500m3/일이상/미만)', header: { text: '방류량(500m3/일이상/미만)' } }, - { name: '(방류량)물리적', fieldName: '(방류량)물리적', header: { text: '물리적' } }, - { name: '(방류량)생물학적', fieldName: '(방류량)생물학적', header: { text: '생물학적' } }, - { name: '(방류량)고도', fieldName: '(방류량)고도', header: { text: '고도' } }, - - { name: '유입BOD', fieldName: '유입BOD', header: { text: '유입BOD' } }, - { name: '방류BOD', fieldName: '방류BOD', header: { text: '방류BOD' } }, - { name: '유입TOC', fieldName: '유입TOC', header: { text: '유입TOC' } }, - { name: '방류TOC', fieldName: '방류TOC', header: { text: '방류TOC' } }, - { name: '유입SS', fieldName: '유입SS', header: { text: '유입SS' } }, - { name: '방류SS', fieldName: '방류SS', header: { text: '방류SS' } }, - { name: '유입T-N', fieldName: '유입T-N', header: { text: '유입T-N' } }, - { name: '방류T-N', fieldName: '방류T-N', header: { text: '방류T-N' } }, - { name: '유입T-P', fieldName: '유입T-P', header: { text: '유입T-P' } }, - { name: '방류T-P', fieldName: '방류T-P', header: { text: '방류T-P' } }, - { name: '유입총대장균군수', fieldName: '유입총대장균군수', header: { text: '유입총대장균군수' } }, - { name: '방대총대장균군수', fieldName: '방대총대장균군수', header: { text: '방대총대장균군수' } }, - { name: '처리효율(%)', fieldName: '처리효율(%)', header: { text: '처리효율(%)' } }, - { name: '처리부하량(kgBOD/D)', fieldName: '처리부하량(kgBOD/D)', header: { text: '처리부하량(kgBOD/D)' } }, - { name: '처리방법', fieldName: '처리방법', header: { text: '처리방법' } }, - - { name: '(연계처리량)분뇨', fieldName: '(연계처리량)분뇨', header: { text: '분뇨' } }, - { name: '(연계처리량)축산', fieldName: '(연계처리량)축산', header: { text: '축산' } }, - { name: '(연계처리량)침출수', fieldName: '(연계처리량)침출수', header: { text: '침출수' } }, - { name: '(연계처리량)기타', fieldName: '(연계처리량)기타', header: { text: '기타' } }, - { name: '전화번호', fieldName: '전화번호', header: { text: '전화번호' } }, - { name: '준공일', fieldName: '준공일', header: { text: '준공일' } }, - { name: '가동개시일', fieldName: '가동개시일', header: { text: '가동개시일' } }, - { name: '사업비(백만원)', fieldName: '사업비(백만원)', header: { text: '사업비(백만원)' } }, - { name: '방류수소독방법', fieldName: '방류수소독방법', header: { text: '방류수소독방법' } }, - { name: '수계', fieldName: '수계', header: { text: '수계' } }, - { name: '지류', fieldName: '지류', header: { text: '지류' } }, - { name: '세부단위구역', fieldName: '세부단위구역', header: { text: '세부단위구역' } }, - { name: '지역구분', fieldName: '지역구분', header: { text: '지역구분' } }, - { name: '명칭', fieldName: '명칭', header: { text: '명칭' } }, - { name: '목표수질(BOD)', fieldName: '목표수질(BOD)', header: { text: '목표수질(BOD)' } }, - { name: '에너지자립율(%)', fieldName: '에너지자립율(%)', header: { text: '에너지자립율(%)' } }, - { name: '에너지자체생산량(TOE)', fieldName: '에너지자체생산량(TOE)', header: { text: '에너지자체생산량(TOE)' } }, - { name: '계(TOE)', fieldName: '계(TOE)', header: { text: '계(TOE)' } }, - { name: '총전력사용량(KWh)', fieldName: '총전력사용량(KWh)', header: { text: '총전력사용량(KWh)' } }, - { name: '자체에너지사용량(TOE)', fieldName: '자체에너지사용량(TOE)', header: { text: '자체에너지사용량(TOE)' } }, - { name: '하수처리량당CO2배출량(KgCO2/m3)', fieldName: '하수처리량당CO2배출량(KgCO2/m3)', header: { text: '하수처리량당CO2배출량(KgCO2/m3)' } }, - { name: '운영주체(자체/공기업/민간대행)', fieldName: '운영주체(자체/공기업/민간대행)', header: { text: '운영주체(자체/공기업/민간대행)' } }, - { name: '위탁업체명', fieldName: '위탁업체명', header: { text: '위탁업체명' } }, - { name: '위탁비용(백만원/년)', fieldName: '위탁비용(백만원/년)', header: { text: '위탁비용(백만원/년)' } }, - { name: '위탁계약기간(yyyy-mm-dd~)', fieldName: '위탁계약기간(yyyy-mm-dd~)', header: { text: '위탁계약기간(yyyy-mm-dd~)' } }, - { name: '중심처리시설', fieldName: '중심처리시설', header: { text: '중심처리시설' } }, - { name: '직원총수(명)', fieldName: '직원총수(명)', header: { text: '직원총수(명)' } }, - { name: '안전사고건수(건,인/년)', fieldName: '안전사고건수(건,인/년)', header: { text: '안전사고건수(건,인/년)' } }, - { name: 'rmk', fieldName: '비고', header: { text: '비고' } }, - ]; - - const columns = rawColumns.map(col => ({ - ...col, - editable: false - })); - - const columnLayout = [ - { - name: 'groupA', - hideChildHeaders: false, - header: { text: '행정구역' }, - items: ['sido', 'sgg'], - }, - '시설명(500m3/일이상/미만)', - '구분', - '소재지', - '시설용량(500m3/일이상/미만)', - { - name: 'groupB', - hideChildHeaders: false, - header: { text: '(m3/일)' }, - items: ['(시설용량)물리적', '(시설용량)생물학적', '(시설용량)고도'], - }, - '유입하수량(500m3/일이상/미만)', - { - name: 'groupC', - hideChildHeaders: false, - header: { text: '(m3/일)' }, - items: ['(유입하수량)물리적', '(유입하수량)생물학적', '(유입하수량)고도'], - }, - '방류량(500m3/일이상/미만)', - { - name: 'groupD', - hideChildHeaders: false, - header: { text: '(m3/일)' }, - items: ['(방류량)물리적', '(방류량)생물학적', '(방류량)고도'], - }, - - '유입BOD', - '방류BOD', - '유입TOC', - '방류TOC', - '유입SS', - '방류SS', - '유입T-N', - '방류T-N', - '유입T-P', - '방류T-P', - '유입총대장균군수', - '방대총대장균군수', - '처리효율(%)', - '처리부하량(kgBOD/D)', - '처리방법', - { - name: 'groupE', - hideChildHeaders: false, - header: { text: '연계처리량(m3/일)(500m3/일 이상/ 미만)' }, - items: ['(연계처리량)분뇨', '(연계처리량)축산', '(연계처리량)침출수', '(연계처리량)기타'], - }, - '전화번호', - '준공일', - '가동개시일', - '사업비(백만원)', - '방류수소독방법', - { - name: 'groupF', - hideChildHeaders: false, - header: { text: '방류수역' }, - items: ['수계', '지류', '세부단위구역', '지역구분', - { - name: 'groupG', - hideChildHeaders: false, - header: { text: '중권역' }, - items: ['명칭', '목표수질(BOD)'], - }, - ], - }, - '에너지자립율(%)', - '에너지자체생산량(TOE)', - { - name: 'groupH', - hideChildHeaders: false, - header: { text: '연간 총 에너지 사용량(TOE)' }, - items: ['계(TOE)', '총전력사용량(KWh)', '자체에너지사용량(TOE)'], - }, - '하수처리량당CO2배출량(KgCO2/m3)', - '운영주체(자체/공기업/민간대행)', - { - name: 'groupI', - hideChildHeaders: false, - header: { text: '위탁현황' }, - items: ['위탁업체명', '위탁비용(백만원/년)', '위탁계약기간(yyyy-mm-dd~)'], - }, - '중심처리시설', - '직원총수(명)', - '안전사고건수(건,인/년)', - 'rmk' - ]; - + const approveFunc = () => { console.log('approveFunc'); }; @@ -203,7 +35,7 @@ const PublicSewageFacilityRvw = () => { - + ); }; diff --git a/apps/st/src/components/util/column/review/PublicSewageFacilityColumnRvw.ts b/apps/st/src/components/util/column/review/PublicSewageFacilityColumnRvw.ts new file mode 100644 index 000000000..43b0a492c --- /dev/null +++ b/apps/st/src/components/util/column/review/PublicSewageFacilityColumnRvw.ts @@ -0,0 +1,143 @@ +export const PublicSewageFacilityInfoList = [ + { + tabKey: 'a', + tabLabel: '공공하수처리시설 현황', + rowStartNum: 3, + fixedColumns: 3, + columns: [ + /* 1. 기본 정보 */ + { name: 'sido', fieldName: 'SIDO', header: { text: '시도' } }, + { name: 'sgg', fieldName: 'GUGUN', header: { text: '구군' } }, + { name: 'GBN', fieldName: 'GBN', header: { text: '구분' } }, + { name: 'ADDR', fieldName: 'ADDR', header: { text: '소재지' } }, + { name: 'FCT_NM_GROUP', fieldName: 'FCT_NM_GROUP', header: { text: '시설명(500m3/일이상/미만)' } }, + + /* 2. 시설용량 (m3/일) */ + { name: 'FCT_CPC_GROUP', fieldName: 'FCT_CPC_GROUP', header: { text: '시설용량(500m3/일이상/미만)' } }, + { name: 'FCT_CPC_PHY', fieldName: 'FCT_CPC_PHY', header: { text: '물리적' } }, + { name: 'FCT_CPC_BIO', fieldName: 'FCT_CPC_BIO', header: { text: '생물학적' } }, + { name: 'FCT_CPC_ADV', fieldName: 'FCT_CPC_ADV', header: { text: '고도' } }, + + /* 3. 유입하수량 (m3/일) */ + { name: 'IN_QTY_GROUP', fieldName: 'IN_QTY_GROUP', header: { text: '유입하수량(500m3/일이상/미만)' } }, + { name: 'IN_QTY_PHY', fieldName: 'IN_QTY_PHY', header: { text: '물리적' } }, + { name: 'IN_QTY_BIO', fieldName: 'IN_QTY_BIO', header: { text: '생물학적' } }, + { name: 'IN_QTY_ADV', fieldName: 'IN_QTY_ADV', header: { text: '고도' } }, + + /* 4. 방류량 (m3/일) */ + { name: 'OUT_QTY_GROUP', fieldName: 'OUT_QTY_GROUP', header: { text: '방류량(500m3/일이상/미만)' } }, + { name: 'OUT_QTY_PHY', fieldName: 'OUT_QTY_PHY', header: { text: '물리적' } }, + { name: 'OUT_QTY_BIO', fieldName: 'OUT_QTY_BIO', header: { text: '생물학적' } }, + { name: 'OUT_QTY_ADV', fieldName: 'OUT_QTY_ADV', header: { text: '고도' } }, + + /* 5. 수질 및 처리효율 */ + { name: 'IN_BOD', fieldName: 'IN_BOD', header: { text: '유입BOD' } }, + { name: 'OUT_BOD', fieldName: 'OUT_BOD', header: { text: '방류BOD' } }, + { name: 'IN_TOC', fieldName: 'IN_TOC', header: { text: '유입TOC' } }, + { name: 'OUT_TOC', fieldName: 'OUT_TOC', header: { text: '방류TOC' } }, + { name: 'IN_SS', fieldName: 'IN_SS', header: { text: '유입SS' } }, + { name: 'OUT_SS', fieldName: 'OUT_SS', header: { text: '방류SS' } }, + { name: 'IN_TN', fieldName: 'IN_TN', header: { text: '유입T-N' } }, + { name: 'OUT_TN', fieldName: 'OUT_TN', header: { text: '방류T-N' } }, + { name: 'IN_TP', fieldName: 'IN_TP', header: { text: '유입T-P' } }, + { name: 'OUT_TP', fieldName: 'OUT_TP', header: { text: '방류T-P' } }, + { name: 'IN_COLI', fieldName: 'IN_COLI', header: { text: '유입총대장균군수' } }, + { name: 'OUT_COLI', fieldName: 'OUT_COLI', header: { text: '방대총대장균군수' } }, + { name: 'TRT_EFF', fieldName: 'TRT_EFF', header: { text: '처리효율(%)' } }, + { name: 'TRT_LOD', fieldName: 'TRT_LOD', header: { text: '처리부하량(kgBOD/D)' } }, + { name: 'TRT_MTHD', fieldName: 'TRT_MTHD', header: { text: '처리방법' } }, + + /* 6. 연계처리량 */ + { name: 'LNK_EXC', fieldName: 'LNK_EXC', header: { text: '분뇨' } }, + { name: 'LNK_LVS', fieldName: 'LNK_LVS', header: { text: '축산' } }, + { name: 'LNK_LCH', fieldName: 'LNK_LCH', header: { text: '침출수' } }, + { name: 'LNK_ETC', fieldName: 'LNK_ETC', header: { text: '기타' } }, + + /* 7. 상세 시설 정보 */ + { name: 'TEL_NO', fieldName: 'TEL_NO', header: { text: '전화번호' } }, + { name: 'COMP_DT', fieldName: 'COMP_DT', header: { text: '준공일' } }, + { name: 'RN_DT', fieldName: 'RN_DT', header: { text: '가동개시일' } }, + { name: 'BSNS_CT', fieldName: 'BSNS_CT', header: { text: '사업비(백만원)' } }, + { name: 'DSCH_DSF_MTHD', fieldName: 'DSCH_DSF_MTHD', header: { text: '방류수소독방법' } }, + + /* 8. 방류수역 */ + { name: 'WTR_SYS', fieldName: 'WTR_SYS', header: { text: '수계' } }, + { name: 'STRM', fieldName: 'STRM', header: { text: '지류' } }, + { name: 'DET_UNIT_ZONE', fieldName: 'DET_UNIT_ZONE', header: { text: '세부단위구역' } }, + { name: 'RGN_GBN', fieldName: 'RGN_GBN', header: { text: '지역구분' } }, + { name: 'MID_ZONE_NM', fieldName: 'MID_ZONE_NM', header: { text: '명칭' } }, + { name: 'MID_ZONE_BOD', fieldName: 'MID_ZONE_BOD', header: { text: '목표수질(BOD)' } }, + + /* 9. 에너지 및 환경 */ + { name: 'ENG_SLF_RT', fieldName: 'ENG_SLF_RT', header: { text: '에너지자립율(%)' } }, + { name: 'ENG_SLF_QTY', fieldName: 'ENG_SLF_QTY', header: { text: '에너지자체생산량(TOE)' } }, + { name: 'ENG_TOT_SUM', fieldName: 'ENG_TOT_SUM', header: { text: '계(TOE)' } }, + { name: 'ENG_TOT_PWR', fieldName: 'ENG_TOT_PWR', header: { text: '총전력사용량(KWh)' } }, + { name: 'ENG_TOT_SLF', fieldName: 'ENG_TOT_SLF', header: { text: '자체에너지사용량(TOE)' } }, + { name: 'CO2_EMISS', fieldName: 'CO2_EMISS', header: { text: '하수처리량당CO2배출량(KgCO2/m3)' } }, + + /* 10. 운영 및 위탁 */ + { name: 'OPR_MBY', fieldName: 'OPR_MBY', header: { text: '운영주체' } }, + { name: 'ENTRPS_NM', fieldName: 'ENTRPS_NM', header: { text: '위탁업체명' } }, + { name: 'ENTRPS_CT', fieldName: 'ENTRPS_CT', header: { text: '위탁비용(백만원/년)' } }, + { name: 'ENTRPS_TERM', fieldName: 'ENTRPS_TERM', header: { text: '위탁계약기간' } }, + { name: 'CTR_TRT_FCT', fieldName: 'CTR_TRT_FCT', header: { text: '중심처리시설' } }, + { name: 'EMP_CNT', fieldName: 'EMP_CNT', header: { text: '직원총수(명)' } }, + { name: 'ACC_CNT', fieldName: 'ACC_CNT', header: { text: '안전사고건수' } }, + { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, + ], + columnLayout: [ + { name: 'groupA', header: { text: '행정구역' }, items: ['sido', 'sgg'] }, + 'FCT_NM_GROUP', 'GBN', 'ADDR', 'FCT_CPC_GROUP', + { + name: 'groupB', + header: { text: '시설용량(㎥/일)' }, + items: ['FCT_CPC_PHY', 'FCT_CPC_BIO', 'FCT_CPC_ADV'], + }, + 'IN_QTY_GROUP', + { + name: 'groupC', + header: { text: '유입하수량(㎥/일)' }, + items: ['IN_QTY_PHY', 'IN_QTY_BIO', 'IN_QTY_ADV'], + }, + 'OUT_QTY_GROUP', + { + name: 'groupD', + header: { text: '방류량(㎥/일)' }, + items: ['OUT_QTY_PHY', 'OUT_QTY_BIO', 'OUT_QTY_ADV'], + }, + 'IN_BOD', 'OUT_BOD', 'IN_TOC', 'OUT_TOC', 'IN_SS', 'OUT_SS', 'IN_TN', 'OUT_TN', 'IN_TP', 'OUT_TP', 'IN_COLI', 'OUT_COLI', + 'TRT_EFF', 'TRT_LOD', 'TRT_MTHD', + { + name: 'groupE', + header: { text: '연계처리량(㎥/일)' }, + items: ['LNK_EXC', 'LNK_LVS', 'LNK_LCH', 'LNK_ETC'], + }, + 'TEL_NO', 'COMP_DT', 'RN_DT', 'BSNS_CT', 'DSCH_DSF_MTHD', + { + name: 'groupF', + header: { text: '방류수역' }, + items: ['WTR_SYS', 'STRM', 'DET_UNIT_ZONE', 'RGN_GBN', + { + name: 'groupG', + header: { text: '중권역' }, + items: ['MID_ZONE_NM', 'MID_ZONE_BOD'], + }, + ], + }, + 'ENG_SLF_RT', 'ENG_SLF_QTY', + { + name: 'groupH', + header: { text: '연간 총 에너지 사용량(TOE)' }, + items: ['ENG_TOT_SUM', 'ENG_TOT_PWR', 'ENG_TOT_SLF'], + }, + 'CO2_EMISS', 'OPR_MBY', + { + name: 'groupI', + header: { text: '위탁현황' }, + items: ['ENTRPS_NM', 'ENTRPS_CT', 'ENTRPS_TERM'], + }, + 'CTR_TRT_FCT', 'EMP_CNT', 'ACC_CNT', 'RMK' + ] + } +]; \ No newline at end of file From 877a548c6f81fb6a23c38b5caf05de251b7dc1d8 Mon Sep 17 00:00:00 2001 From: rsone001 Date: Fri, 2 Jan 2026 13:41:10 +0900 Subject: [PATCH 04/11] =?UTF-8?q?[feat]05.=20=ED=8E=8C=ED=94=84=EC=9E=A5?= =?UTF-8?q?=20=EB=8B=A8=EC=9D=BC=20=ED=83=AD=20column=ED=8F=B4=EB=8D=94=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../statistics/review/PumpingStationRvw.tsx | 145 +----------------- .../column/review/PumpingStationColumnRvw.ts | 101 ++++++++++++ 2 files changed, 106 insertions(+), 140 deletions(-) create mode 100644 apps/st/src/components/util/column/review/PumpingStationColumnRvw.ts diff --git a/apps/st/src/components/statistics/review/PumpingStationRvw.tsx b/apps/st/src/components/statistics/review/PumpingStationRvw.tsx index f33ef9396..c9438b174 100644 --- a/apps/st/src/components/statistics/review/PumpingStationRvw.tsx +++ b/apps/st/src/components/statistics/review/PumpingStationRvw.tsx @@ -1,149 +1,14 @@ import SearchForm from "@/components/module/SearchForm"; -import DataGrid from "@/components/module/DataGrid"; +import TabDataGrid from "@/components/module/TabDataGrid"; import SaveButton from "@/components/button/SaveButton"; import ApproveButton from "@/components/button/ApproveButton"; import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import ReturnButton from "@/components/button/ReturnButton"; +import { PumpingStationInfoList } from "@/components/util/column/review/PumpingStationColumnRvw"; + const PumpingStationRvw = () => { - const rawColumns = [ - // 행정구역 - { name: 'sido', fieldName: '시도', header: { text: '시도' } }, - { name: 'sgg', fieldName: '구군', header: { text: '구군' } }, - - // 기본 정보 - { name: '펌프장명', fieldName: '펌프장명', header: { text: '펌프장명' } }, - { name: '구분', fieldName: '구분', header: { text: '구분' } }, - { name: '처리장명', fieldName: '처리장명', header: { text: '처리장명' } }, - { name: '구분(합류식분류식)', fieldName: '구분(합류식분류식)', header: { text: '구분(합류식분류식)' } }, - { name: '위치', fieldName: '위치', header: { text: '위치' } }, - { name: '가동년월일 yyyy-mm-dd', fieldName: '가동년월일 yyyy-mm-dd', header: { text: '가동년월일 yyyy-mm-dd' } }, - { name: '계획배수면적(km2)', fieldName: '계획배수면적(km2)', header: { text: '계획배수면적(km2)' } }, - - // 계획배수량 - { name: '청천시(A)', fieldName: '청천시(A)', header: { text: '청천시(A)' } }, - { name: '우천시(B)', fieldName: '우천시(B)', header: { text: '우천시(B)' } }, - { name: '우수량(B-A)', fieldName: '우수량(B-A)', header: { text: '우수량(B-A)' } }, - - // 총양수량 - { name: '오수펌프_총양수량(m3/min)', fieldName: '오수펌프_총양수량(m3/min)', header: { text: '총양수량(m3/min)' } }, - { name: '우수펌프_총양수량(m3/min)', fieldName: '우수펌프_총양수량(m3/min)', header: { text: '총양수량(m3/min)' } }, - - // 오수펌프(1) - { name: '오수펌프(1)구경(mm)', fieldName: '오수펌프(1)구경(mm)', header: { text: '구경(mm)' } }, - { name: '오수펌프(1)양수량(m3/min)', fieldName: '오수펌프(1)양수량(m3/min)', header: { text: '양수량(m3/min)' } }, - { name: '오수펌프(1)펌프대수', fieldName: '오수펌프(1)펌프대수', header: { text: '펌프대수' } }, - { name: '오수펌프(1)예비대수', fieldName: '오수펌프(1)예비대수', header: { text: '예비대수' } }, - - // 오수펌프(2) - { name: '오수펌프(2)구경(mm)', fieldName: '오수펌프(2)구경(mm)', header: { text: '구경(mm)' } }, - { name: '오수펌프(2)양수량(m3/min)', fieldName: '오수펌프(2)양수량(m3/min)', header: { text: '양수량(m3/min)' } }, - { name: '오수펌프(2)펌프대수', fieldName: '오수펌프(2)펌프대수', header: { text: '펌프대수' } }, - { name: '오수펌프(2)예비대수', fieldName: '오수펌프(2)예비대수', header: { text: '예비대수' } }, - - // 오수펌프(3) - { name: '오수펌프(3)구경(mm)', fieldName: '오수펌프(3)구경(mm)', header: { text: '구경(mm)' } }, - { name: '오수펌프(3)양수량(m3/min)', fieldName: '오수펌프(3)양수량(m3/min)', header: { text: '양수량(m3/min)' } }, - { name: '오수펌프(3)펌프대수', fieldName: '오수펌프(3)펌프대수', header: { text: '펌프대수' } }, - { name: '오수펌프(3)예비대수', fieldName: '오수펌프(3)예비대수', header: { text: '예비대수' } }, - - // 우수펌프(1) - { name: '우수펌프(1)구경(mm)', fieldName: '우수펌프(1)구경(mm)', header: { text: '구경(mm)' } }, - { name: '우수펌프(1)양수량(m3/min)', fieldName: '우수펌프(1)양수량(m3/min)', header: { text: '양수량(m3/min)' } }, - { name: '우수펌프(1)펌프대수', fieldName: '우수펌프(1)펌프대수', header: { text: '펌프대수' } }, - { name: '우수펌프(1)예비대수', fieldName: '우수펌프(1)예비대수', header: { text: '예비대수' } }, - - // 우수펌프(2) - { name: '우수펌프(2)구경(mm)', fieldName: '우수펌프(2)구경(mm)', header: { text: '구경(mm)' } }, - { name: '우수펌프(2)양수량(m3/min)', fieldName: '우수펌프(2)양수량(m3/min)', header: { text: '양수량(m3/min)' } }, - { name: '우수펌프(2)펌프대수', fieldName: '우수펌프(2)펌프대수', header: { text: '펌프대수' } }, - { name: '우수펌프(2)예비대수', fieldName: '우수펌프(2)예비대수', header: { text: '예비대수' } }, - - // 우수펌프(3) - { name: '우수펌프(3)구경(mm)', fieldName: '우수펌프(3)구경(mm)', header: { text: '구경(mm)' } }, - { name: '우수펌프(3)양수량(m3/min)', fieldName: '우수펌프(3)양수량(m3/min)', header: { text: '양수량(m3/min)' } }, - { name: '우수펌프(3)펌프대수', fieldName: '우수펌프(3)펌프대수', header: { text: '펌프대수' } }, - { name: '우수펌프(3)예비대수', fieldName: '우수펌프(3)예비대수', header: { text: '예비대수' } }, - - // 운영 및 비고 - { name: '연간전력사용량(kWh/년)', fieldName: '연간전력사용량(kWh/년)', header: { text: '연간전력사용량(kWh/년)' } }, - { name: 'rmk', fieldName: '비고', header: { text: '비고' } }, - ]; - - - const columns = rawColumns.map(col => ({ - ...col, - editable: false - })); - - const columnLayout = [ - { - name: 'groupA', - hideChildHeaders: false, - header: { text: '행정구역' }, - items: ['sido', 'sgg'], - }, - '펌프장명', - '구분', - '처리장명', - '구분(합류식분류식)', - '위치', - '가동년월일 yyyy-mm-dd', - '계획배수면적(km2)', - { - name: 'groupB', - hideChildHeaders: false, - header: { text: '계획시간대최대배수량(m3/hr)' }, - items: ['청천시(A)', '우천시(B)', '우수량(B-A)'], - }, - { - name: 'groupC', - hideChildHeaders: false, - header: { text: '배수능력' }, - items: [ - '오수펌프_총양수량(m3/min)', - { - name: '오수펌프(1)', - hideChildHeaders: false, - header: { text: '오수펌프(1)' }, - items: ['오수펌프(1)구경(mm)', '오수펌프(1)양수량(m3/min)', '오수펌프(1)펌프대수', '오수펌프(1)예비대수'], - }, - { - name: '오수펌프(2)', - hideChildHeaders: false, - header: { text: '오수펌프(2)' }, - items: ['오수펌프(2)구경(mm)', '오수펌프(2)양수량(m3/min)', '오수펌프(2)펌프대수', '오수펌프(2)예비대수'], - }, - { - name: '오수펌프(3)', - hideChildHeaders: false, - header: { text: '오수펌프(3)' }, - items: ['오수펌프(3)구경(mm)', '오수펌프(3)양수량(m3/min)', '오수펌프(3)펌프대수', '오수펌프(3)예비대수'], - }, - '우수펌프_총양수량(m3/min)', - { - name: '우수펌프(1)', - hideChildHeaders: false, - header: { text: '우수펌프(1)' }, - items: ['우수펌프(1)구경(mm)', '우수펌프(1)양수량(m3/min)', '우수펌프(1)펌프대수', '우수펌프(1)예비대수'], - }, - { - name: '우수펌프(2)', - hideChildHeaders: false, - header: { text: '우수펌프(2)' }, - items: ['우수펌프(2)구경(mm)', '우수펌프(2)양수량(m3/min)', '우수펌프(2)펌프대수', '우수펌프(2)예비대수'], - }, - { - name: '우수펌프(3)', - hideChildHeaders: false, - header: { text: '우수펌프(3)' }, - items: ['우수펌프(3)구경(mm)', '우수펌프(3)양수량(m3/min)', '우수펌프(3)펌프대수', '우수펌프(3)예비대수'], - }, - ], - }, - '연간전력사용량(kWh/년)', - 'rmk', - ]; + const approveFunc = () => { console.log('approveFunc'); }; const saveFunc = () => { console.log('submit'); }; @@ -159,7 +24,7 @@ const PumpingStationRvw = () => { - + ); }; diff --git a/apps/st/src/components/util/column/review/PumpingStationColumnRvw.ts b/apps/st/src/components/util/column/review/PumpingStationColumnRvw.ts new file mode 100644 index 000000000..536d971aa --- /dev/null +++ b/apps/st/src/components/util/column/review/PumpingStationColumnRvw.ts @@ -0,0 +1,101 @@ +export const PumpingStationInfoList = [ + { + tabKey: 'a', + tabLabel: '펌프장 현황', + rowStartNum: 3, + fixedColumns: 3, + columns: [ + /* 1. 행정구역 및 기본정보 */ + { name: 'sido', fieldName: 'SIDO', header: { text: '시도' } }, + { name: 'sgg', fieldName: 'GUGUN', header: { text: '구군' } }, + { name: 'PUMP_NM', fieldName: 'PUMP_NM', header: { text: '펌프장명' } }, + { name: 'GBN', fieldName: 'GBN', header: { text: '구분' } }, + { name: 'TRT_FCT_NM', fieldName: 'TRT_FCT_NM', header: { text: '처리장명' } }, + { name: 'TYPE_GBN', fieldName: 'TYPE_GBN', header: { text: '구분(합류식분류식)' } }, + { name: 'ADDR', fieldName: 'ADDR', header: { text: '위치' } }, + { name: 'RN_DT', fieldName: 'RN_DT', header: { text: '가동년월일\nyyyy-mm-dd' } }, + { name: 'DSN_AR', fieldName: 'DSN_AR', header: { text: '계획배수면적\n(km2)' } }, + + /* 2. 계획배수량 (m3/hr) */ + { name: 'DSN_QTY_A', fieldName: 'DSN_QTY_A', header: { text: '청천시(A)' } }, + { name: 'DSN_QTY_B', fieldName: 'DSN_QTY_B', header: { text: '우천시(B)' } }, + { name: 'DSN_QTY_DIFF', fieldName: 'DSN_QTY_DIFF', header: { text: '우수량(B-A)' } }, + + /* 3. 총 양수량 (m3/min) */ + { name: 'TOT_PUMP_QTY_O', fieldName: 'TOT_PUMP_QTY_O', header: { text: '오수펌프\n총양수량' } }, + { name: 'TOT_PUMP_QTY_W', fieldName: 'TOT_PUMP_QTY_W', header: { text: '우수펌프\n총양수량' } }, + + /* 4. 오수펌프 상세 (1, 2, 3) */ + { name: 'PUMP_O1_D', fieldName: 'PUMP_O1_D', header: { text: '구경(mm)' } }, + { name: 'PUMP_O1_Q', fieldName: 'PUMP_O1_Q', header: { text: '양수량\n(m3/min)' } }, + { name: 'PUMP_O1_C', fieldName: 'PUMP_O1_C', header: { text: '펌프대수' } }, + { name: 'PUMP_O1_S', fieldName: 'PUMP_O1_S', header: { text: '예비대수' } }, + + { name: 'PUMP_O2_D', fieldName: 'PUMP_O2_D', header: { text: '구경(mm)' } }, + { name: 'PUMP_O2_Q', fieldName: 'PUMP_O2_Q', header: { text: '양수량\n(m3/min)' } }, + { name: 'PUMP_O2_C', fieldName: 'PUMP_O2_C', header: { text: '펌프대수' } }, + { name: 'PUMP_O2_S', fieldName: 'PUMP_O2_S', header: { text: '예비대수' } }, + + { name: 'PUMP_O3_D', fieldName: 'PUMP_O3_D', header: { text: '구경(mm)' } }, + { name: 'PUMP_O3_Q', fieldName: 'PUMP_O3_Q', header: { text: '양수량\n(m3/min)' } }, + { name: 'PUMP_O3_C', fieldName: 'PUMP_O3_C', header: { text: '펌프대수' } }, + { name: 'PUMP_O3_S', fieldName: 'PUMP_O3_S', header: { text: '예비대수' } }, + + /* 5. 우수펌프 상세 (1, 2, 3) */ + { name: 'PUMP_W1_D', fieldName: 'PUMP_W1_D', header: { text: '구경(mm)' } }, + { name: 'PUMP_W1_Q', fieldName: 'PUMP_W1_Q', header: { text: '양수량\n(m3/min)' } }, + { name: 'PUMP_W1_C', fieldName: 'PUMP_W1_C', header: { text: '펌프대수' } }, + { name: 'PUMP_W1_S', fieldName: 'PUMP_W1_S', header: { text: '예비대수' } }, + + { name: 'PUMP_W2_D', fieldName: 'PUMP_W2_D', header: { text: '구경(mm)' } }, + { name: 'PUMP_W2_Q', fieldName: 'PUMP_W2_Q', header: { text: '양수량\n(m3/min)' } }, + { name: 'PUMP_W2_C', fieldName: 'PUMP_W2_C', header: { text: '펌프대수' } }, + { name: 'PUMP_W2_S', fieldName: 'PUMP_W2_S', header: { text: '예비대수' } }, + + { name: 'PUMP_W3_D', fieldName: 'PUMP_W3_D', header: { text: '구경(mm)' } }, + { name: 'PUMP_W3_Q', fieldName: 'PUMP_W3_Q', header: { text: '양수량\n(m3/min)' } }, + { name: 'PUMP_W3_C', fieldName: 'PUMP_W3_C', header: { text: '펌프대수' } }, + { name: 'PUMP_W3_S', fieldName: 'PUMP_W3_S', header: { text: '예비대수' } }, + + /* 6. 운영 정보 */ + { name: 'PWR_USAGE', fieldName: 'PWR_USAGE', header: { text: '연간전력사용량\n(kWh/년)' } }, + { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, + ], + columnLayout: [ + { name: 'groupA', header: { text: '행정구역' }, items: ['sido', 'sgg'] }, + 'PUMP_NM', 'GBN', 'TRT_FCT_NM', 'TYPE_GBN', 'ADDR', 'RN_DT', 'DSN_AR', + { + name: 'groupB', + header: { text: '계획시간대최대배수량(m3/hr)' }, + items: ['DSN_QTY_A', 'DSN_QTY_B', 'DSN_QTY_DIFF'], + }, + { + name: 'groupC', + header: { text: '배수능력' }, + items: [ + 'TOT_PUMP_QTY_O', + { + name: 'pumpO_Detail', + header: { text: '오수펌프 상세' }, + items: [ + { name: 'O1', header: { text: '오수펌프(1)' }, items: ['PUMP_O1_D', 'PUMP_O1_Q', 'PUMP_O1_C', 'PUMP_O1_S'] }, + { name: 'O2', header: { text: '오수펌프(2)' }, items: ['PUMP_O2_D', 'PUMP_O2_Q', 'PUMP_O2_C', 'PUMP_O2_S'] }, + { name: 'O3', header: { text: '오수펌프(3)' }, items: ['PUMP_O3_D', 'PUMP_O3_Q', 'PUMP_O3_C', 'PUMP_O3_S'] } + ] + }, + 'TOT_PUMP_QTY_W', + { + name: 'pumpW_Detail', + header: { text: '우수펌프 상세' }, + items: [ + { name: 'W1', header: { text: '우수펌프(1)' }, items: ['PUMP_W1_D', 'PUMP_W1_Q', 'PUMP_W1_C', 'PUMP_W1_S'] }, + { name: 'W2', header: { text: '우수펌프(2)' }, items: ['PUMP_W2_D', 'PUMP_W2_Q', 'PUMP_W2_C', 'PUMP_W2_S'] }, + { name: 'W3', header: { text: '우수펌프(3)' }, items: ['PUMP_W3_D', 'PUMP_W3_Q', 'PUMP_W3_C', 'PUMP_W3_S'] } + ] + } + ], + }, + 'PWR_USAGE', 'RMK', + ] + } +]; \ No newline at end of file From 7abae345311503e7353524d0815c9405d739e212 Mon Sep 17 00:00:00 2001 From: rsone001 Date: Fri, 2 Jan 2026 13:53:01 +0900 Subject: [PATCH 05/11] =?UTF-8?q?[feat]=2001.=ED=95=98=EC=88=98=EB=8F=84?= =?UTF-8?q?=20=EB=B3=B4=EA=B8=89=EC=9C=A8=20=EB=8B=A8=EC=9D=BC=ED=83=AD=20?= =?UTF-8?q?column=20=ED=8F=B4=EB=8D=94=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../review/SeweragePenetrationRateRvw.tsx | 99 +------------------ .../SeweragePenetrationRateColumnRvw.ts | 95 ++++++++++++++++++ 2 files changed, 99 insertions(+), 95 deletions(-) create mode 100644 apps/st/src/components/util/column/review/SeweragePenetrationRateColumnRvw.ts diff --git a/apps/st/src/components/statistics/review/SeweragePenetrationRateRvw.tsx b/apps/st/src/components/statistics/review/SeweragePenetrationRateRvw.tsx index 3ae0cda0a..c90bd2415 100644 --- a/apps/st/src/components/statistics/review/SeweragePenetrationRateRvw.tsx +++ b/apps/st/src/components/statistics/review/SeweragePenetrationRateRvw.tsx @@ -1,105 +1,14 @@ import SearchForm from "@/components/module/SearchForm"; -import DataGrid from "@/components/module/DataGrid"; +import TabDataGrid from "@/components/module/TabDataGrid"; import SaveButton from "@/components/button/SaveButton"; import ApproveButton from "@/components/button/ApproveButton"; import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import ReturnButton from "@/components/button/ReturnButton"; +import { SeweragePenetrationRateInfoList } from "@/components/util/column/review/SeweragePenetrationRateColumnRvw"; + const SeweragePenetrationRateRvw = () => { - const columns = [ - { name: 'sido', fieldName: '시도', header: { text: '시도' } }, - { name: 'sgg', fieldName: '구군', header: { text: '구군' } }, - { name: '구분', fieldName: '구분', header: { text: '구분' } }, - { name: '수계', 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: '총인구' } }, - { 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: '계', fieldName: '계', header: { text: '계' } }, - //공공하수처리인구 - { name: '합계', fieldName: '합계', header: { text: '합계' } }, - { name: '1차처리', fieldName: '1차처리', header: { text: '1차처리' } }, - { name: '2차처리', fieldName: '2차처리', header: { text: '2차처리' } }, - { name: '3차처리', fieldName: '3차처리', header: { text: '3차처리' } }, - //폐수처리인구(명) - { name: '(폐수처리인구)합계', fieldName: '(폐수처리인구)합계', header: { text: '합계' } }, - { name: '(폐수처리인구)1차처리', fieldName: '(폐수처리인구)1차처리', header: { text: '1차처리' } }, - { name: '(폐수처리인구)2차처리', fieldName: '(폐수처리인구)2차처리', header: { text: '2차처리' } }, - { name: '(폐수처리인구)3차처리', fieldName: '(폐수처리인구)3차처리', header: { text: '3차처리' } }, - - { 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'], - }, - '구분', - '수계', - 'bstrm', - { - name: 'groupB', - hideChildHeaders: false, - header: { text: '수계영향권별분류류' }, - items: ['mdbsn', 'lgbsn', 'mdmbsn'], - }, - 'specl_cntrpln_ar', - 'popltn_sm', - 'ar_sm', - { - name: 'groupD', - hideChildHeaders: false, - header: { text: '하수처리구역내' }, - items: [ - '계', - { - name: 'pblswrgGroup', - hideChildHeaders: false, - header: { text: '공공하수처리인구(명)' }, - items: ['합계', '1차처리', '2차처리', '3차처리'], - }, - { - name: 'wstrGroup', - hideChildHeaders: false, - header: { text: '폐수처리인구(명)' }, - items: ['(폐수처리인구)합계', '(폐수처리인구)1차처리', '(폐수처리인구)2차처리', '(폐수처리인구)3차처리'], - }, - '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', - ]; const approveFunc = () => { console.log('approveFunc'); @@ -130,7 +39,7 @@ const SeweragePenetrationRateRvw = () => { - + ); }; diff --git a/apps/st/src/components/util/column/review/SeweragePenetrationRateColumnRvw.ts b/apps/st/src/components/util/column/review/SeweragePenetrationRateColumnRvw.ts new file mode 100644 index 000000000..d792174b7 --- /dev/null +++ b/apps/st/src/components/util/column/review/SeweragePenetrationRateColumnRvw.ts @@ -0,0 +1,95 @@ +export const SeweragePenetrationRateInfoList = [ + { + tabKey: 'a', + tabLabel: '하수도 보급률 현황', + rowStartNum: 3, // 수계영향권 및 처리구역 내/외 3단 헤더 구조 + fixedColumns: 2, // 순번, 시도, 구군까지 고정 + columns: [ + /* 1. 행정 및 수계 정보 */ + { name: 'sido', fieldName: 'SIDO', header: { text: '시도' }, editable: false }, + { name: 'sgg', fieldName: 'GUGUN', header: { text: '구군' }, editable: false }, + { name: 'GBN', fieldName: 'GBN', header: { text: '구분' }, editable: false }, + { name: 'WTR_SYS', fieldName: 'WTR_SYS', header: { text: '수계' }, editable: false }, + { name: 'bstrm', fieldName: 'BSTRM', header: { text: '지류' }, editable: false }, + { name: 'mdbsn', fieldName: 'MDBSN', header: { text: '세부단위유역' }, editable: false }, + { name: 'lgbsn', fieldName: 'LGBSN', header: { text: '중권역' }, editable: false }, + { name: 'mdmbsn', fieldName: 'MDMBSN', header: { text: '소권역' }, editable: false }, + { name: 'specl_cntrpln_ar', fieldName: 'SPECL_CNTRPLN_AR', header: { text: '특별대책지역' }, editable: false }, + + /* 2. 인구 및 면적 총계 */ + { name: 'popltn_sm', fieldName: 'POPLTN_SM', header: { text: '총인구(명)' }, editable: false }, + { name: 'ar_sm', fieldName: 'AR_SM', header: { text: '총면적(㎢)' }, editable: false }, + + /* 3. 하수처리구역 내 상세 */ + { name: 'inner_sm', fieldName: 'INNER_SM', header: { text: '계' }, editable: false }, + // 공공하수처리인구 + { name: 'pbl_sm', fieldName: 'PBL_SM', header: { text: '합계' }, editable: false }, + { name: 'pbl_1ch', fieldName: 'PBL_1CH', header: { text: '1차처리' }, editable: false }, + { name: 'pbl_2ch', fieldName: 'PBL_2CH', header: { text: '2차처리' }, editable: false }, + { name: 'pbl_3ch', fieldName: 'PBL_3CH', header: { text: '3차처리' }, editable: false }, + // 폐수처리인구 + { name: 'wstr_sm', fieldName: 'WSTR_SM', header: { text: '합계' }, editable: false }, + { name: 'wstr_1ch', fieldName: 'WSTR_1CH', header: { text: '1차처리' }, editable: false }, + { name: 'wstr_2ch', fieldName: 'WSTR_2CH', header: { text: '2차처리' }, editable: false }, + { name: 'wstr_3ch', fieldName: 'WSTR_3CH', header: { text: '3차처리' }, editable: false }, + + { name: 'not_conect_popltn', fieldName: 'NOT_CONECT_POPLTN', header: { text: '미접속인구' }, editable: false }, + { name: 'swge_proc_zone_inner_ar', fieldName: 'SWGE_PROC_ZONE_INNER_AR', header: { text: '면적(㎢)' }, editable: false }, + + /* 4. 하수처리구역 외 상세 */ + { name: 'swge_proc_zone_outer_sm', fieldName: 'SWGE_PROC_ZONE_OUTER_SM', header: { text: '계' }, editable: false }, + { name: 'town_unproc_popltn', fieldName: 'TOWN_UNPROC_POPLTN', header: { text: '미처리인구' }, editable: false }, + { name: 'town_swtt_popltn', fieldName: 'TOWN_SWTT_POPLTN', header: { text: '오수처리인구' }, editable: false }, + { name: 'town_wrrtn_popltn', fieldName: 'TOWN_WRRTN_POPLTN', header: { text: '정화조인구' }, editable: false }, + { name: 'swge_proc_zone_outer_ar', fieldName: 'SWGE_PROC_ZONE_OUTER_AR', header: { text: '면적(㎢)' }, editable: false }, + + /* 5. 보급율 및 지표 */ + { name: 'pblswrg_popltn_suprt', fieldName: 'PBLSWRG_POPLTN_SUPRT', header: { text: '공공하수처리구역\n인구보급율(%)' }, editable: false }, + { name: 'adtrt_popltn_suprt', fieldName: 'ADTRT_POPLTN_SUPRT', header: { text: '고도처리\n인구보급율(%)' }, editable: false }, + { name: 'swrg_instlrt', fieldName: 'SWRG_INSTLRT', header: { text: '하수도설치율(%)' }, editable: false }, + { name: 'rmk', fieldName: 'RMK', header: { text: '비고' }, editable: false }, + ], + columnLayout: [ + { name: 'groupA', header: { text: '행정구역' }, items: ['sido', 'sgg'] }, + 'GBN', + 'WTR_SYS', + 'bstrm', + { + name: 'groupB', + header: { text: '수계영향권별분류' }, + items: ['mdbsn', 'lgbsn', 'mdmbsn'], + }, + 'specl_cntrpln_ar', + 'popltn_sm', + 'ar_sm', + { + name: 'groupD', + header: { text: '하수처리구역내' }, + items: [ + 'inner_sm', + { + name: 'pblswrgGroup', + header: { text: '공공하수처리인구(명)' }, + items: ['pbl_sm', 'pbl_1ch', 'pbl_2ch', 'pbl_3ch'], + }, + { + name: 'wstrGroup', + header: { text: '폐수처리인구(명)' }, + items: ['wstr_sm', 'wstr_1ch', 'wstr_2ch', 'wstr_3ch'], + }, + 'not_conect_popltn', + 'swge_proc_zone_inner_ar' + ], + }, + { + name: 'groupE', + 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 From 25e41a356b719298d50e4f0f805eede9faebf151 Mon Sep 17 00:00:00 2001 From: rsone001 Date: Fri, 2 Jan 2026 14:10:33 +0900 Subject: [PATCH 06/11] =?UTF-8?q?[feat]01.=ED=86=B5=EA=B3=84=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=ED=98=84=ED=99=A9=20=EB=8B=A8=EC=9D=BC=ED=83=AD=20col?= =?UTF-8?q?umn=20=ED=8F=B4=EB=8D=94=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../statistics/review/StatsInputSatusRvw.tsx | 183 +----------------- .../column/review/StatsInputSatusColumnRvw.ts | 50 +++++ 2 files changed, 55 insertions(+), 178 deletions(-) create mode 100644 apps/st/src/components/util/column/review/StatsInputSatusColumnRvw.ts diff --git a/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx b/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx index 7d4039d91..5cb29539c 100644 --- a/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx +++ b/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx @@ -1,187 +1,14 @@ import SearchForm from "@/components/module/SearchForm"; -import DataGrid from "@/components/module/DataGrid"; +import TabDataGrid from "@/components/module/TabDataGrid"; import SaveButton from "@/components/button/SaveButton"; import ApproveButton from "@/components/button/ApproveButton"; import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import ReturnButton from "@/components/button/ReturnButton"; +import { StatsInputSatusInfoList } from "@/components/util/column/review/StatsInputSatusColumnRvw"; + const StatsInputSatusRvw = () => { - const rawColumns = [ - { name: 'sido', fieldName: '시도', header: { text: '시도' } }, - { name: 'sgg', fieldName: '구군', header: { text: '구군' } }, - - { name: '진행상태', fieldName: '진행상태', header: { text: '진행상태' } }, - //01번 - { name: '제출자01', fieldName: '제출자01', header: { text: '제출자' } }, - { name: '연락처01', fieldName: '연락처01', header: { text: '연락처' } }, - { name: '지자체진행상태01', fieldName: '지자체진행상태01', header: { text: '지자체진행상태' } }, - { name: '진행상태01', fieldName: '진행상태01', header: { text: '진행상태' } }, - //02번 - { name: '제출자02', fieldName: '제출자02', header: { text: '제출자' } }, - { name: '연락처02', fieldName: '연락처02', header: { text: '연락처' } }, - { name: '지자체진행상태02', fieldName: '지자체진행상태02', header: { text: '지자체진행상태' } }, - { name: '진행상태02', fieldName: '진행상태02', header: { text: '진행상태' } }, - // 03번 - { name: '제출자03', fieldName: '제출자03', header: { text: '제출자' } }, - { name: '연락처03', fieldName: '연락처03', header: { text: '연락처' } }, - { name: '지자체진행상태03', fieldName: '지자체진행상태03', header: { text: '지자체진행상태' } }, - { name: '진행상태03', fieldName: '진행상태03', header: { text: '진행상태' } }, - - // 04번 - { name: '제출자04', fieldName: '제출자04', header: { text: '제출자' } }, - { name: '연락처04', fieldName: '연락처04', header: { text: '연락처' } }, - { name: '지자체진행상태04', fieldName: '지자체진행상태04', header: { text: '지자체진행상태' } }, - { name: '진행상태04', fieldName: '진행상태04', header: { text: '진행상태' } }, - - // 05번 - { name: '제출자05', fieldName: '제출자05', header: { text: '제출자' } }, - { name: '연락처05', fieldName: '연락처05', header: { text: '연락처' } }, - { name: '지자체진행상태05', fieldName: '지자체진행상태05', header: { text: '지자체진행상태' } }, - { name: '진행상태05', fieldName: '진행상태05', header: { text: '진행상태' } }, - - // 06번 - { name: '제출자06', fieldName: '제출자06', header: { text: '제출자' } }, - { name: '연락처06', fieldName: '연락처06', header: { text: '연락처' } }, - { name: '지자체진행상태06', fieldName: '지자체진행상태06', header: { text: '지자체진행상태' } }, - { name: '진행상태06', fieldName: '진행상태06', header: { text: '진행상태' } }, - - // 07번 - { name: '제출자07', fieldName: '제출자07', header: { text: '제출자' } }, - { name: '연락처07', fieldName: '연락처07', header: { text: '연락처' } }, - { name: '지자체진행상태07', fieldName: '지자체진행상태07', header: { text: '지자체진행상태' } }, - { name: '진행상태07', fieldName: '진행상태07', header: { text: '진행상태' } }, - - // 08번 - { name: '제출자08', fieldName: '제출자08', header: { text: '제출자' } }, - { name: '연락처08', fieldName: '연락처08', header: { text: '연락처' } }, - { name: '지자체진행상태08', fieldName: '지자체진행상태08', header: { text: '지자체진행상태' } }, - { name: '진행상태08', fieldName: '진행상태08', header: { text: '진행상태' } }, - - // 09번 - { name: '제출자09', fieldName: '제출자09', header: { text: '제출자' } }, - { name: '연락처09', fieldName: '연락처09', header: { text: '연락처' } }, - { name: '지자체진행상태09', fieldName: '지자체진행상태09', header: { text: '지자체진행상태' } }, - { name: '진행상태09', fieldName: '진행상태09', header: { text: '진행상태' } }, - - // 10번 - { name: '제출자10', fieldName: '제출자10', header: { text: '제출자' } }, - { name: '연락처10', fieldName: '연락처10', header: { text: '연락처' } }, - { name: '지자체진행상태10', fieldName: '지자체진행상태10', header: { text: '지자체진행상태' } }, - { name: '진행상태10', fieldName: '진행상태10', header: { text: '진행상태' } }, - - // 11번 - { name: '제출자11', fieldName: '제출자11', header: { text: '제출자' } }, - { name: '연락처11', fieldName: '연락처11', header: { text: '연락처' } }, - { name: '지자체진행상태11', fieldName: '지자체진행상태11', header: { text: '지자체진행상태' } }, - { name: '진행상태11', fieldName: '진행상태11', header: { text: '진행상태' } }, - - // 12번 - { name: '제출자12', fieldName: '제출자12', header: { text: '제출자' } }, - { name: '연락처12', fieldName: '연락처12', header: { text: '연락처' } }, - { name: '지자체진행상태12', fieldName: '지자체진행상태12', header: { text: '지자체진행상태' } }, - { name: '진행상태12', fieldName: '진행상태12', header: { text: '진행상태' } }, - - // 13번 - { name: '제출자13', fieldName: '제출자13', header: { text: '제출자' } }, - { name: '연락처13', fieldName: '연락처13', header: { text: '연락처' } }, - { name: '지자체진행상태13', fieldName: '지자체진행상태13', header: { text: '지자체진행상태' } }, - { name: '진행상태13', fieldName: '진행상태13', header: { text: '진행상태' } }, - { name: 'rmk', fieldName: '비고', header: { text: '비고' } }, - ]; - - const columns = rawColumns.map(col => ({ - ...col, - editable: false - })); - - const columnLayout = [ - { - name: 'groupA', - hideChildHeaders: false, - header: { text: '행정구역' }, - items: ['sido', 'sgg'], - }, - '진행상태', - { - name: 'groupB', - hideChildHeaders: false, - header: { text: '01. 하수도 보급율' }, - items: ['제출자01', '연락처01', '지자체진행상태01', '진행상태01'], - }, - { - name: 'groupC', - hideChildHeaders: false, - header: { text: '02. 하수관로' }, - items: ['제출자02', '연락처02', '지자체진행상태02', '진행상태02'], - }, - { - name: 'groupD', - hideChildHeaders: false, - header: { text: '03. 하수관로유지관리' }, - items: ['제출자03', '연락처03', '지자체진행상태03', '진행상태03'], - }, - { - name: 'groupE', - hideChildHeaders: false, - header: { text: '04. 하수저류시설' }, - items: ['제출자04', '연락처04', '지자체진행상태04', '진행상태04'], - }, - { - name: 'groupF', - hideChildHeaders: false, - header: { text: '05. 펌프장' }, - items: ['제출자05', '연락처05', '지자체진행상태05', '진행상태05'], - }, - { - name: 'groupG', - hideChildHeaders: false, - header: { text: '06. 공공하수처리시설' }, - items: ['제출자06', '연락처06', '지자체진행상태06', '진행상태06'], - }, - { - name: 'groupH', - hideChildHeaders: false, - header: { text: '07. 분뇨처리시설' }, - items: ['제출자07', '연락처07', '지자체진행상태07', '진행상태07'], - }, - { - name: 'groupI', - hideChildHeaders: false, - header: { text: '08. 개인하수처리시설' }, - items: ['제출자08', '연락처08', '지자체진행상태08', '진행상태08'], - }, - { - name: 'groupJ', - hideChildHeaders: false, - header: { text: '09. 하수도재정' }, - items: ['제출자09', '연락처09', '지자체진행상태09', '진행상태09'], - }, - { - name: 'groupK', - hideChildHeaders: false, - header: { text: '10. 물재이용' }, - items: ['제출자10', '연락처10', '지자체진행상태10', '진행상태10'], - }, - { - name: 'groupL', - hideChildHeaders: false, - header: { text: '11. 하수및분뇨찌꺼기' }, - items: ['제출자11', '연락처11', '지자체진행상태11', '진행상태11'], - }, - { - name: 'groupM', - hideChildHeaders: false, - header: { text: '12. 하수및분뇨관련사업' }, - items: ['제출자12', '연락처12', '지자체진행상태12', '진행상태12'], - }, - { - name: 'groupN', - hideChildHeaders: false, - header: { text: '13. 하수도서비스수준' }, - items: ['제출자13', '연락처13', '지자체진행상태13', '진행상태13'], - } - ]; - + const approveFunc = () => { console.log('approveFunc'); }; @@ -207,7 +34,7 @@ const StatsInputSatusRvw = () => { - + ); } diff --git a/apps/st/src/components/util/column/review/StatsInputSatusColumnRvw.ts b/apps/st/src/components/util/column/review/StatsInputSatusColumnRvw.ts new file mode 100644 index 000000000..586cb30e7 --- /dev/null +++ b/apps/st/src/components/util/column/review/StatsInputSatusColumnRvw.ts @@ -0,0 +1,50 @@ +// 1. 원본 데이터 정의 (데이터 구조와 레이아웃 정의) +const rawStatsInputStatusList = [ + { + tabKey: 'a', + tabLabel: '통계 입력현황 검증', + rowStartNum: 2, + fixedColumns: 2, + columns: [ + { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, + { name: 'STATUS', fieldName: 'STATUS', header: { text: '진행상태' } }, + + ...[1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15].flatMap(num => { + const id = num.toString(); + return [ + { name: `LOCG_CHARGER_${id}`, fieldName: `LOCG_CHARGER_${id}`, header: { text: '제출자' } }, + { name: `LOCG_CTTPC_${id}`, fieldName: `LOCG_CTTPC_${id}`, header: { text: '연락처' } }, + { name: `LOCG_STATUS_NM_${id}`, fieldName: `LOCG_STATUS_NM_${id}`, header: { text: '지자체진행상태' } }, + { name: `STATUS_${id}`, fieldName: `STATUS_${id}`, header: { text: '진행상태' } } + ]; + }), + ], + columnLayout: [ + { name: 'addrGroup', header: { text: '구분' }, items: ['SIDO', 'GUGUN'] }, + 'STATUS', + { name: 'group01', header: { text: '01. 하수도보급율' }, items: ['LOCG_CHARGER_1', 'LOCG_CTTPC_1', 'LOCG_STATUS_NM_1', 'STATUS_1'] }, + { name: 'group02', header: { text: '02. 하수관로' }, items: ['LOCG_CHARGER_3', 'LOCG_CTTPC_3', 'LOCG_STATUS_NM_3', 'STATUS_3'] }, + { name: 'group03', header: { text: '03. 하수관로유지관리' }, items: ['LOCG_CHARGER_4', 'LOCG_CTTPC_4', 'LOCG_STATUS_NM_4', 'STATUS_4'] }, + { name: 'group04', header: { text: '04. 하수저류시설' }, items: ['LOCG_CHARGER_5', 'LOCG_CTTPC_5', 'LOCG_STATUS_NM_5', 'STATUS_5'] }, + { name: 'group05', header: { text: '05. 펌프장' }, items: ['LOCG_CHARGER_6', 'LOCG_CTTPC_6', 'LOCG_STATUS_NM_6', 'STATUS_6'] }, + { name: 'group06', header: { text: '06. 공공하수처리시설' }, items: ['LOCG_CHARGER_7', 'LOCG_CTTPC_7', 'LOCG_STATUS_NM_7', 'STATUS_7'] }, + { name: 'group07', header: { text: '07. 분뇨처리시설' }, items: ['LOCG_CHARGER_8', 'LOCG_CTTPC_8', 'LOCG_STATUS_NM_8', 'STATUS_8'] }, + { name: 'group08', header: { text: '08. 개인하수처리시설' }, items: ['LOCG_CHARGER_9', 'LOCG_CTTPC_9', 'LOCG_STATUS_NM_9', 'STATUS_9'] }, + { name: 'group09', header: { text: '09. 하수도재정' }, items: ['LOCG_CHARGER_10', 'LOCG_CTTPC_10', 'LOCG_STATUS_NM_10', 'STATUS_10'] }, + { name: 'group10', header: { text: '10. 물재이용' }, items: ['LOCG_CHARGER_11', 'LOCG_CTTPC_11', 'LOCG_STATUS_NM_11', 'STATUS_11'] }, + { name: 'group11', header: { text: '11. 하수및분뇨찌꺼기' }, items: ['LOCG_CHARGER_12', 'LOCG_CTTPC_12', 'LOCG_STATUS_NM_12', 'STATUS_12'] }, + { name: 'group12', header: { text: '12. 하수및분뇨관련사업' }, items: ['LOCG_CHARGER_13', 'LOCG_CTTPC_13', 'LOCG_STATUS_NM_13', 'STATUS_13'] }, + { name: 'group13', header: { text: '13. 하수도서비스수준' }, items: ['LOCG_CHARGER_15', 'LOCG_CTTPC_15', 'LOCG_STATUS_NM_15', 'STATUS_15'] } + ] + } +]; + + +export const StatsInputSatusInfoList = rawStatsInputStatusList.map(tab => ({ + ...tab, + columns: tab.columns.map(col => ({ + ...col, + editable: false + })) +})); \ No newline at end of file From 54e60d83a040d20c134853b3bc671f26a5f2839e Mon Sep 17 00:00:00 2001 From: rsone001 Date: Fri, 2 Jan 2026 14:29:58 +0900 Subject: [PATCH 07/11] =?UTF-8?q?[refactor]=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=A3=BC=EC=84=9D=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../util/column/review/ExcretaTreatmentFacilityColumnRvw.ts | 4 ++-- .../components/util/column/review/StatsInputSatusColumnRvw.ts | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts b/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts index 4f57b1207..bc0c57b1e 100644 --- a/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts +++ b/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts @@ -2,8 +2,8 @@ export const ExcretaTreatmentFacilityInfoList = [ { tabKey: 'a', tabLabel: '분뇨 처리 시설 현황', - rowStartNum: 2, // 2단 헤더 구조 - fixedColumns: 3, // 순번, 시도, 구군까지 고정 + rowStartNum: 2, + fixedColumns: 2, columns: [ /* 1. 행정구역 */ { name: 'sido', fieldName: 'SIDO', header: { text: '시도' } }, diff --git a/apps/st/src/components/util/column/review/StatsInputSatusColumnRvw.ts b/apps/st/src/components/util/column/review/StatsInputSatusColumnRvw.ts index 586cb30e7..32880ee7f 100644 --- a/apps/st/src/components/util/column/review/StatsInputSatusColumnRvw.ts +++ b/apps/st/src/components/util/column/review/StatsInputSatusColumnRvw.ts @@ -1,4 +1,4 @@ -// 1. 원본 데이터 정의 (데이터 구조와 레이아웃 정의) + const rawStatsInputStatusList = [ { tabKey: 'a', @@ -40,7 +40,6 @@ const rawStatsInputStatusList = [ } ]; - export const StatsInputSatusInfoList = rawStatsInputStatusList.map(tab => ({ ...tab, columns: tab.columns.map(col => ({ From f86301a771c42392c962b6e3c87b9d7f5ac685c3 Mon Sep 17 00:00:00 2001 From: rsone001 Date: Tue, 6 Jan 2026 10:59:21 +0900 Subject: [PATCH 08/11] =?UTF-8?q?[fix]07.=EB=B6=84=EB=87=A8=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=EC=8B=9C=EC=84=A4=20=ED=83=ADgrid->=EB=8B=A8=EC=9D=BC?= =?UTF-8?q?=20grid=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../review/ExcretaTreatmentFacilityRvw.tsx | 4 ++-- .../ExcretaTreatmentFacilityColumnRvw.ts | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/apps/st/src/components/statistics/review/ExcretaTreatmentFacilityRvw.tsx b/apps/st/src/components/statistics/review/ExcretaTreatmentFacilityRvw.tsx index 71f41f254..a2e39ca63 100644 --- a/apps/st/src/components/statistics/review/ExcretaTreatmentFacilityRvw.tsx +++ b/apps/st/src/components/statistics/review/ExcretaTreatmentFacilityRvw.tsx @@ -3,7 +3,7 @@ import SaveButton from "@/components/button/SaveButton"; import ApproveButton from "@/components/button/ApproveButton"; import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import ReturnButton from "@/components/button/ReturnButton"; -import TabDataGrid from "@/components/module/TabDataGrid"; +import DataGrid from "@/components/module/DataGrid"; import { ExcretaTreatmentFacilityInfoList } from "@/components/util/column/review/ExcretaTreatmentFacilityColumnRvw"; @@ -24,7 +24,7 @@ const ExcretaTreatmentFacilityRvw = () => { - + ); }; diff --git a/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts b/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts index bc0c57b1e..184cbc4fc 100644 --- a/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts +++ b/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts @@ -1,9 +1,5 @@ -export const ExcretaTreatmentFacilityInfoList = [ - { - tabKey: 'a', - tabLabel: '분뇨 처리 시설 현황', - rowStartNum: 2, - fixedColumns: 2, +export const rawExcretaTreatmentFacilityInfoList = { + columns: [ /* 1. 행정구역 */ { name: 'sido', fieldName: 'SIDO', header: { text: '시도' } }, @@ -84,5 +80,11 @@ export const ExcretaTreatmentFacilityInfoList = [ }, 'RMK' ] - } -]; \ No newline at end of file + }; +export const ExcretaTreatmentFacilityInfoList = { + ...rawExcretaTreatmentFacilityInfoList, + columns: rawExcretaTreatmentFacilityInfoList.columns.map(col => ({ + ...col, + editable: false + })) +}; \ No newline at end of file From 4b895ac5d42977f3dd02ee7d5cf43fb56a857d2a Mon Sep 17 00:00:00 2001 From: rsone001 Date: Tue, 6 Jan 2026 11:00:09 +0900 Subject: [PATCH 09/11] =?UTF-8?q?[fix]06.=EA=B3=B5=EA=B3=B5=ED=95=98?= =?UTF-8?q?=EC=88=98=EC=B2=98=EB=A6=AC=EC=8B=9C=EC=84=A4=20=ED=83=ADgrid->?= =?UTF-8?q?=EB=8B=A8=EC=9D=BC=20grid=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../review/PublicSewageFacilityRvw.tsx | 4 ++-- .../review/PublicSewageFacilityColumnRvw.ts | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx b/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx index 8c6adbcf7..4086dfa8f 100644 --- a/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx +++ b/apps/st/src/components/statistics/review/PublicSewageFacilityRvw.tsx @@ -4,7 +4,7 @@ import ApproveButton from "@/components/button/ApproveButton"; import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import ReturnButton from "@/components/button/ReturnButton"; -import TabDataGrid from "@/components/module/TabDataGrid"; +import DataGrid from "@/components/module/DataGrid"; import { PublicSewageFacilityInfoList } from "@/components/util/column/review/PublicSewageFacilityColumnRvw"; @@ -35,7 +35,7 @@ const PublicSewageFacilityRvw = () => { - + ); }; diff --git a/apps/st/src/components/util/column/review/PublicSewageFacilityColumnRvw.ts b/apps/st/src/components/util/column/review/PublicSewageFacilityColumnRvw.ts index 43b0a492c..6eb0d0ec3 100644 --- a/apps/st/src/components/util/column/review/PublicSewageFacilityColumnRvw.ts +++ b/apps/st/src/components/util/column/review/PublicSewageFacilityColumnRvw.ts @@ -1,9 +1,4 @@ -export const PublicSewageFacilityInfoList = [ - { - tabKey: 'a', - tabLabel: '공공하수처리시설 현황', - rowStartNum: 3, - fixedColumns: 3, +export const rawPublicSewageFacilityInfoList = { columns: [ /* 1. 기본 정보 */ { name: 'sido', fieldName: 'SIDO', header: { text: '시도' } }, @@ -139,5 +134,12 @@ export const PublicSewageFacilityInfoList = [ }, 'CTR_TRT_FCT', 'EMP_CNT', 'ACC_CNT', 'RMK' ] - } -]; \ No newline at end of file + }; + + export const PublicSewageFacilityInfoList = { + ...rawPublicSewageFacilityInfoList, + columns: rawPublicSewageFacilityInfoList.columns.map(col => ({ + ...col, + editable: false + })) +}; \ No newline at end of file From 1ad61e0fa5ac895d7209ab22e801d456c3e76dac Mon Sep 17 00:00:00 2001 From: rsone001 Date: Tue, 6 Jan 2026 11:00:41 +0900 Subject: [PATCH 10/11] =?UTF-8?q?[fix]05.=ED=8E=8C=ED=94=84=EC=9E=A5=20?= =?UTF-8?q?=ED=83=ADgrid->=EB=8B=A8=EC=9D=BC=20grid=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../statistics/review/PumpingStationRvw.tsx | 4 ++-- .../column/review/PumpingStationColumnRvw.ts | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/apps/st/src/components/statistics/review/PumpingStationRvw.tsx b/apps/st/src/components/statistics/review/PumpingStationRvw.tsx index c9438b174..a37c3535d 100644 --- a/apps/st/src/components/statistics/review/PumpingStationRvw.tsx +++ b/apps/st/src/components/statistics/review/PumpingStationRvw.tsx @@ -1,5 +1,5 @@ import SearchForm from "@/components/module/SearchForm"; -import TabDataGrid from "@/components/module/TabDataGrid"; +import DataGrid from "@/components/module/DataGrid"; import SaveButton from "@/components/button/SaveButton"; import ApproveButton from "@/components/button/ApproveButton"; import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; @@ -24,7 +24,7 @@ const PumpingStationRvw = () => { - + ); }; diff --git a/apps/st/src/components/util/column/review/PumpingStationColumnRvw.ts b/apps/st/src/components/util/column/review/PumpingStationColumnRvw.ts index 536d971aa..497aec1b0 100644 --- a/apps/st/src/components/util/column/review/PumpingStationColumnRvw.ts +++ b/apps/st/src/components/util/column/review/PumpingStationColumnRvw.ts @@ -1,9 +1,4 @@ -export const PumpingStationInfoList = [ - { - tabKey: 'a', - tabLabel: '펌프장 현황', - rowStartNum: 3, - fixedColumns: 3, +export const rawPumpingStationInfoList = { columns: [ /* 1. 행정구역 및 기본정보 */ { name: 'sido', fieldName: 'SIDO', header: { text: '시도' } }, @@ -97,5 +92,12 @@ export const PumpingStationInfoList = [ }, 'PWR_USAGE', 'RMK', ] - } -]; \ No newline at end of file + }; + +export const PumpingStationInfoList = { + ...rawPumpingStationInfoList, + columns: rawPumpingStationInfoList.columns.map(col => ({ + ...col, + editable: false + })) +}; \ No newline at end of file From 69a0dd47ffa6a00bbc432cca2f03f831ffe971d2 Mon Sep 17 00:00:00 2001 From: rsone001 Date: Tue, 6 Jan 2026 11:01:09 +0900 Subject: [PATCH 11/11] =?UTF-8?q?[fix]=2000.=20=ED=86=B5=EA=B3=84=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=ED=98=84=ED=99=A9=20=ED=83=ADgrid->=EB=8B=A8=EC=9D=BC?= =?UTF-8?q?=20grid=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../statistics/review/StatsInputSatusRvw.tsx | 4 ++-- .../column/review/StatsInputSatusColumnRvw.ts | 18 ++++++------------ 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx b/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx index 5cb29539c..f759767b5 100644 --- a/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx +++ b/apps/st/src/components/statistics/review/StatsInputSatusRvw.tsx @@ -1,5 +1,5 @@ import SearchForm from "@/components/module/SearchForm"; -import TabDataGrid from "@/components/module/TabDataGrid"; +import DataGrid from "@/components/module/DataGrid"; import SaveButton from "@/components/button/SaveButton"; import ApproveButton from "@/components/button/ApproveButton"; import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; @@ -34,7 +34,7 @@ const StatsInputSatusRvw = () => { - + ); } diff --git a/apps/st/src/components/util/column/review/StatsInputSatusColumnRvw.ts b/apps/st/src/components/util/column/review/StatsInputSatusColumnRvw.ts index 32880ee7f..45a824503 100644 --- a/apps/st/src/components/util/column/review/StatsInputSatusColumnRvw.ts +++ b/apps/st/src/components/util/column/review/StatsInputSatusColumnRvw.ts @@ -1,10 +1,5 @@ -const rawStatsInputStatusList = [ - { - tabKey: 'a', - tabLabel: '통계 입력현황 검증', - rowStartNum: 2, - fixedColumns: 2, +const rawStatsInputStatusList = { columns: [ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, @@ -37,13 +32,12 @@ const rawStatsInputStatusList = [ { name: 'group12', header: { text: '12. 하수및분뇨관련사업' }, items: ['LOCG_CHARGER_13', 'LOCG_CTTPC_13', 'LOCG_STATUS_NM_13', 'STATUS_13'] }, { name: 'group13', header: { text: '13. 하수도서비스수준' }, items: ['LOCG_CHARGER_15', 'LOCG_CTTPC_15', 'LOCG_STATUS_NM_15', 'STATUS_15'] } ] - } -]; + }; -export const StatsInputSatusInfoList = rawStatsInputStatusList.map(tab => ({ - ...tab, - columns: tab.columns.map(col => ({ +export const StatsInputSatusInfoList = { + ...rawStatsInputStatusList, + columns: rawStatsInputStatusList.columns.map(col => ({ ...col, editable: false })) -})); \ No newline at end of file +}; \ No newline at end of file