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