diff --git a/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx b/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx index 23cdf5f07..634015c00 100644 --- a/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx +++ b/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx @@ -7,8 +7,10 @@ import ApproveButton from "@/components/button/ApproveButton"; import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import ReturnButton from "@/components/button/ReturnButton"; -import { SewagePipeMaintainColumnInfoList } from "@/components/util/column/review/SewagePipeMaintainColumnRvw"; +import { SewagePipeMaintainColumnInfoList } from "@/components/util/column/review/SewagePipeMaintainRvwColumn"; + +// 하수도 통계 관리 03. 하수관로 유지 관리 const SewagePipeMaintainRvw = () => { const [rowDataMap, setRowDataMap] = useState[]>>(new Map()); @@ -35,11 +37,13 @@ const SewagePipeMaintainRvw = () => { return ( <> -
- - - - +
+
+ + + + +
diff --git a/apps/st/src/components/util/column/review/SewagePipeMaintainColumnRvw.ts b/apps/st/src/components/util/column/review/SewagePipeMaintainColumnRvw.ts deleted file mode 100644 index 4cf6b7a37..000000000 --- a/apps/st/src/components/util/column/review/SewagePipeMaintainColumnRvw.ts +++ /dev/null @@ -1,171 +0,0 @@ -const rawMaintainList = [ - { - tabKey: 'a', - tabLabel: '개보수', - rowStartNum: 4, - fixedColumns: 2, - columns: [ - /* 1. 행정 및 기본 정보 */ - { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } }, - { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } }, - { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } }, - - /* 2. 전체보수 (단위: m) */ - { name: 'RPAIR_PIPE_SM', fieldName: 'RPAIR_PIPE_SM', header: { text: '계' } }, - { name: 'RPAIR_CMBN_PIPE', fieldName: 'RPAIR_CMBN_PIPE', header: { text: '합류식' } }, - { name: 'RPAIR_RAINWTR_PIPE', fieldName: 'RPAIR_RAINWTR_PIPE', header: { text: '우수' } }, - { name: 'RPAIR_PLTWTR_PIPE', fieldName: 'RPAIR_PLTWTR_PIPE', header: { text: '오수' } }, - - /* 3. 부분보수 (단위: 개소) */ - { name: 'RPAIR_PIPE_SM2', fieldName: 'RPAIR_PIPE_SM2', header: { text: '계' } }, - { name: 'RPAIR_CMBN_PIPE2', fieldName: 'RPAIR_CMBN_PIPE2', header: { text: '합류식' } }, - { name: 'RPAIR_RAINWTR_PIPE2', fieldName: 'RPAIR_RAINWTR_PIPE2', header: { text: '우수' } }, - { name: 'RPAIR_PLTWTR_PIPE2', fieldName: 'RPAIR_PLTWTR_PIPE2', header: { text: '오수' } }, - - /* 4. 부속시설 (개소) */ - { name: 'MNHLE_SITE', fieldName: 'MNHLE_SITE', header: { text: '합류식\n맨홀' } }, - { name: 'PLTWTR_MNHLE_SITE', fieldName: 'PLTWTR_MNHLE_SITE', header: { text: '오수맨홀' } }, - { name: 'RAINWTR_MNHLE_SITE', fieldName: 'RAINWTR_MNHLE_SITE', header: { text: '우수맨홀' } }, - { name: 'PLTWTR_RCVR_SITE', fieldName: 'PLTWTR_RCVR_SITE', header: { text: '오수받이(개소)' } }, - { name: 'RAINWTR_RCVR_SITE', fieldName: 'RAINWTR_RCVR_SITE', header: { text: '빗물받이(개소)' } }, - { name: 'SOILHOLE_SITE', fieldName: 'SOILHOLE_SITE', header: { text: '토실(개소)' } }, - { name: 'SOILSPLL_SITE', fieldName: 'SOILSPLL_SITE', header: { text: '토구(개소)' } }, - - /* 5. 조사량 및 비고 */ - { name: 'CCTV', fieldName: 'CCTV', header: { text: '수밀검사·\nCCTV조사량\n(m)' } }, - { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, - ], - columnLayout: [ - { - name: 'addrGroup', - header: { text: '행정구역' }, - items: ['SIDO', 'GUGUN'], - }, - 'YR_GBN', - { - name: 'mtcPipeGroup', - header: { text: '개·보수관로' }, - items: [ - { - name: 'totalRepairGroup', - header: { text: '전체보수(m)' }, - items: [ - 'RPAIR_PIPE_SM', - 'RPAIR_CMBN_PIPE', - { name: 'sepTotalGroup', header: { text: '분류식' }, items: ['RPAIR_RAINWTR_PIPE', 'RPAIR_PLTWTR_PIPE'] } - ] - }, - { - name: 'partRepairGroup', - header: { text: '부분보수(개소)' }, - items: [ - 'RPAIR_PIPE_SM2', - 'RPAIR_CMBN_PIPE2', - { name: 'sepPartGroup', header: { text: '분류식' }, items: ['RPAIR_RAINWTR_PIPE2', 'RPAIR_PLTWTR_PIPE2'] } - ] - } - ] - }, - 'MNHLE_SITE', - { - name: 'sepMnhleGroup', - header: { text: '분류식' }, - items: ['PLTWTR_MNHLE_SITE', 'RAINWTR_MNHLE_SITE'] - }, - 'PLTWTR_RCVR_SITE', - 'RAINWTR_RCVR_SITE', - 'SOILHOLE_SITE', - 'SOILSPLL_SITE', - 'CCTV', - 'RMK' - ] - }, - { - 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(개소)' } }, - - /* 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(㎥)' } }, - - /* 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' - ] - } -]; - -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/SewagePipeMaintainRvwColumn.ts b/apps/st/src/components/util/column/review/SewagePipeMaintainRvwColumn.ts new file mode 100644 index 000000000..28aa25ce5 --- /dev/null +++ b/apps/st/src/components/util/column/review/SewagePipeMaintainRvwColumn.ts @@ -0,0 +1,137 @@ +import { ValueType } from "realgrid"; + +// 하수도 통계 관리 03. 하수관로 유지 관리 +const rawMaintainList = [ + { + tabKey: 'a', + tabLabel: '개보수', + rowStartNum: 4, + fixedColumns: 2, + columns: [ + /* 1. 행정 및 기본 정보 */ + { name: 'SIDO', fieldName: '시도', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: '시군구', header: { text: '시군구' } }, + { name: 'YR_GBN', fieldName: '구분', header: { text: '구분' } }, + + /* 2. 전체보수 (단위: m) */ + { name: 'RPAIR_PIPE_SM', fieldName: '계(전체보수)', header: { text: '계' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'RPAIR_CMBN_PIPE', fieldName: '합류식(전체보수)', header: { text: '합류식' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'RPAIR_RAINWTR_PIPE', fieldName: '우수(전체보수)', header: { text: '우수' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'RPAIR_PLTWTR_PIPE', fieldName: '오수(전체보수)', header: { text: '오수' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + + /* 3. 부분보수 (단위: 개소) */ + { name: 'RPAIR_PIPE_SM2', fieldName: '계(부분보수)', header: { text: '계' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'RPAIR_CMBN_PIPE2', fieldName: '합류식(부분보수)', header: { text: '합류식' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'RPAIR_RAINWTR_PIPE2', fieldName: '우수(부분보수)', header: { text: '우수' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'RPAIR_PLTWTR_PIPE2', fieldName: '오수(부분보수)', header: { text: '오수' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + + /* 4. 부속시설 (개소) */ + { name: 'MNHLE_SITE', fieldName: '합류식 맨홀', header: { text: '합류식\n맨홀' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'PLTWTR_MNHLE_SITE', fieldName: '오수맨홀', header: { text: '오수맨홀' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'RAINWTR_MNHLE_SITE', fieldName: '우수맨홀', header: { text: '우수맨홀' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'PLTWTR_RCVR_SITE', fieldName: '오수받이(개소)', header: { text: '오수받이(개소)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'RAINWTR_RCVR_SITE', fieldName: '빗물받이(개소)', header: { text: '빗물받이(개소)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'SOILHOLE_SITE', fieldName: '토실(개소)', header: { text: '토실(개소)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'SOILSPLL_SITE', fieldName: '토구(개소)', header: { text: '토구(개소)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + + /* 5. 조사량 및 비고 */ + { name: 'CCTV', fieldName: '수밀검사·CCTV조사량(m)', header: { text: '수밀검사·\nCCTV조사량\n(m)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'RMK', fieldName: '비고', header: { text: '비고' } }, + ], + columnLayout: [ + { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, + 'YR_GBN', + { + name: 'mtcPipeGroup', header: { text: '개·보수관로' }, + items: [ + { + name: 'totalRepairGroup', header: { text: '전체보수(m)' }, + items: ['RPAIR_PIPE_SM', 'RPAIR_CMBN_PIPE', { name: 'sepTotalGroup', header: { text: '분류식' }, items: ['RPAIR_RAINWTR_PIPE', 'RPAIR_PLTWTR_PIPE'] }] + }, + { + name: 'partRepairGroup', header: { text: '부분보수(개소)' }, + items: ['RPAIR_PIPE_SM2', 'RPAIR_CMBN_PIPE2', { name: 'sepPartGroup', header: { text: '분류식' }, items: ['RPAIR_RAINWTR_PIPE2', 'RPAIR_PLTWTR_PIPE2'] }] + } + ] + }, + 'MNHLE_SITE', + { name: 'sepMnhleGroup', header: { text: '분류식' }, items: ['PLTWTR_MNHLE_SITE', 'RAINWTR_MNHLE_SITE'] }, + 'PLTWTR_RCVR_SITE', 'RAINWTR_RCVR_SITE', + { name: 'soilGroup', header: { text: '토실·토구(개소)' }, items: ['SOILHOLE_SITE', 'SOILSPLL_SITE'] }, + 'CCTV', 'RMK' + ] + }, + { + tabKey: 'b', + tabLabel: '관로준설', + rowStartNum: 4, + fixedColumns: 2, + columns: [ + /* 1. 행정 및 기본 정보 */ + { name: 'SIDO', fieldName: '시도', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: '시군구', header: { text: '시군구' } }, + { name: 'YR_GBN', fieldName: '구분', header: { text: '구분' } }, + + /* 2. 시설 기본 정보 */ + { name: 'PIPL_FCLTY_EXTN', fieldName: '하수관로 총시설연장(m)', header: { text: '하수관로\n총시설연장\n(m)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + + /* 3. 준설연장 및 개소수 */ + { name: 'DRDG_PIPE_SM', fieldName: '합계(준설)', header: { text: '합계' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'DRDG_CMBN_PIPE', fieldName: '합류식(준설)', header: { text: '합류식' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'DRDG_RAINWTR_PIPE', fieldName: '우수(준설)', header: { text: '우수' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'DRDG_PLTWTR_PIPE', fieldName: '오수(준설)', header: { text: '오수' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'MNHLE_SITE_DRDG', fieldName: '맨홀(개소)', header: { text: '맨홀\n(개소)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'PLTWTR_RCVR_SITE_DRDG', fieldName: '오·우수받이(개소)', header: { text: '오·우수받이\n(개소)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'SOILSPLL_SOILHOLE_SITE', fieldName: '토실·토구(개소)', header: { text: '토실·토구\n(개소)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + + /* 4. 준설 계획 및 율 */ + { name: 'DRDG_TRGET_EXTN', fieldName: '준설 계획 연장(m)', header: { text: '준설 계획\n연장(m)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'DRDG_TRGET_RT', fieldName: '계획대비 준설율(%)', header: { text: '계획대비\n준설율\n(%)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'PIPL_FCLTY_RT', fieldName: '준설계획 연장대비 준설율(%)', header: { text: '준설계획\n연장대비\n준설율(%)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + + /* 5. 준설실적 */ + { name: 'DRDG_ACMSLT_AMOUNT', fieldName: '금액(백만원)', header: { text: '금액\n(백만원)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'DRDG_ACMSLT_QY', fieldName: '준설량(㎥)', header: { text: '준설량\n(㎥)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + + /* 6. 준설토사처리 */ + { name: 'DRDG_ACMSLT_UNTPC', fieldName: '준설토 처리비(백만원)', header: { text: '준설토\n처리비\n(백만원)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'DRDG_ETND_SM', fieldName: '처리량 계(톤)', header: { text: '처리량 계\n(톤)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'RCLM', fieldName: '매립', header: { text: '매립' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'OCEAN_DPSL', fieldName: '해양투기', header: { text: '해양투기' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'RUSE', fieldName: '재활용', header: { text: '재활용' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'ETC', fieldName: '기타(준설)', header: { text: '기타\n(소각, 고형화,\n시멘트원료 등)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + + /* 7. 기타 및 의견 */ + { name: 'RMK_DRDG', fieldName: '비고(준설)', 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_DRDG', 'PLTWTR_RCVR_SITE_DRDG', '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_DRDG' + ] + } +]; + +export const SewagePipeMaintainColumnInfoList = rawMaintainList.map(tab => ({ + ...tab, + columns: tab.columns.map(col => ({ + ...col, + editable: false + })) +})); \ No newline at end of file