From 2a6fa899e3c9c511cc4ab724802c286af7c4cb8e Mon Sep 17 00:00:00 2001 From: rsone001 Date: Fri, 16 Jan 2026 11:41:27 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=2007.=EB=B6=84=EB=87=A8=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=EC=8B=9C=EC=84=AAvalueType,numberFormat=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80,=EC=BB=AC=EB=9F=BC=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../review/ExcretaTreatmentFacilityRvw.tsx | 24 ++-- .../ExcretaTreatmentFacilityColumnRvw.ts | 90 ------------- .../ExcretaTreatmentFacilityRvwColumn.ts | 118 ++++++++++++++++++ 3 files changed, 132 insertions(+), 100 deletions(-) delete mode 100644 apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts create mode 100644 apps/st/src/components/util/column/review/ExcretaTreatmentFacilityRvwColumn.ts diff --git a/apps/st/src/components/statistics/review/ExcretaTreatmentFacilityRvw.tsx b/apps/st/src/components/statistics/review/ExcretaTreatmentFacilityRvw.tsx index 6254390ea..a084dc78e 100644 --- a/apps/st/src/components/statistics/review/ExcretaTreatmentFacilityRvw.tsx +++ b/apps/st/src/components/statistics/review/ExcretaTreatmentFacilityRvw.tsx @@ -1,16 +1,18 @@ import { useState } from "react"; -import { DataGrid } from "@rsone/components"; +import { TabDataGrid } from "@rsone/components"; import SearchForm from "@/components/module/SearchForm"; import SaveButton from "@/components/button/SaveButton"; import ApproveButton from "@/components/button/ApproveButton"; import ReviewOpinionButton from "@/components/button/ReviewOpinionButton"; import ReturnButton from "@/components/button/ReturnButton"; -import { ExcretaTreatmentFacilityInfoList } from "@/components/util/column/review/ExcretaTreatmentFacilityColumnRvw"; +import { ExcretaTreatmentFacilityInfoList } from "@/components/util/column/review/ExcretaTreatmentFacilityRvwColumn"; +// 하수도 통계 관리 07.분뇨처리 시설 const ExcretaTreatmentFacilityRvw = () => { - const [rowData, setRowData] = useState[]>([]); + + const [rowDataMap, setRowDataMap] = useState[]>>(new Map()); const approveFunc = () => console.log('approveFunc'); const saveFunc = () => console.log('submit'); @@ -20,13 +22,15 @@ const ExcretaTreatmentFacilityRvw = () => { return ( <> -
- - - - -
- +
+
+ + + + +
+
+ ); }; diff --git a/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts b/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts deleted file mode 100644 index 184cbc4fc..000000000 --- a/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityColumnRvw.ts +++ /dev/null @@ -1,90 +0,0 @@ -export const rawExcretaTreatmentFacilityInfoList = { - - columns: [ - /* 1. 행정구역 */ - { name: 'sido', fieldName: 'SIDO', header: { text: '시도' } }, - { name: 'sgg', fieldName: 'GUGUN', header: { text: '구군' } }, - - /* 2. 기본 정보 */ - { name: 'FCT_NM', fieldName: 'FCT_NM', header: { text: '시설명' } }, - { name: 'GBN', fieldName: 'GBN', header: { text: '구분' } }, - { name: 'ADDR', fieldName: 'ADDR', header: { text: '소재지' } }, - { name: 'TEL_NO', fieldName: 'TEL_NO', header: { text: '전화번호' } }, - { name: 'COMP_DT', fieldName: 'COMP_DT', header: { text: '준공일' } }, - { name: 'RN_DT', fieldName: 'RN_DT', header: { text: '가동개시일' } }, - { name: 'BSNS_CT', fieldName: 'BSNS_CT', header: { text: '사업비(백만원)' } }, - { name: 'FCT_CPC', fieldName: 'FCT_CPC', header: { text: '시설용량(㎥/일)' } }, - { name: 'TPUT_AMNT', fieldName: 'TPUT_AMNT', header: { text: '처리량(㎥/일)' } }, - { name: 'RN_DYN', fieldName: 'RN_DYN', header: { text: '가동일수(일/년)' } }, - - /* 3. 처리 관련 */ - { name: 'TRT_MTHD', fieldName: 'TRT_MTHD', header: { text: '처리공법' } }, - { name: 'LNK_FCT_NM', fieldName: 'LNK_FCT_NM', header: { text: '연계처리장명' } }, - { name: 'LNK_TPUT_AMNT', fieldName: 'LNK_TPUT_AMNT', header: { text: '연계처리량' } }, - - /* 4. 유입수질 (mg/L, 개/mL) */ - { name: 'IN_BOD', fieldName: 'IN_BOD', header: { text: 'BOD' } }, - { name: 'IN_TOC', fieldName: 'IN_TOC', header: { text: 'TOC' } }, - { name: 'IN_SS', fieldName: 'IN_SS', header: { text: 'SS' } }, - { name: 'IN_TN', fieldName: 'IN_TN', header: { text: 'T-N' } }, - { name: 'IN_TP', fieldName: 'IN_TP', header: { text: 'T-P' } }, - { name: 'IN_COLI', fieldName: 'IN_COLI', header: { text: '대장균군수' } }, - - /* 5. 방류수질 (mg/L, 개/mL) */ - { name: 'OUT_BOD', fieldName: 'OUT_BOD', header: { text: 'BOD' } }, - { name: 'OUT_TOC', fieldName: 'OUT_TOC', header: { text: 'TOC' } }, - { name: 'OUT_SS', fieldName: 'OUT_SS', header: { text: 'SS' } }, - { name: 'OUT_TN', fieldName: 'OUT_TN', header: { text: 'T-N' } }, - { name: 'OUT_TP', fieldName: 'OUT_TP', header: { text: 'T-P' } }, - { name: 'OUT_COLI', fieldName: 'OUT_COLI', header: { text: '대장균군수' } }, - - /* 6. 방류수역 */ - { name: 'WTR_SYS', fieldName: 'WTR_SYS', header: { text: '수계' } }, - { name: 'STRM', fieldName: 'STRM', header: { text: '지류' } }, - { name: 'MID_ZONE', fieldName: 'MID_ZONE', header: { text: '중권역' } }, - { name: 'SML_ZONE', fieldName: 'SML_ZONE', header: { text: '소권역' } }, - - /* 7. 운영 현황 */ - { name: 'OPR_MBY', fieldName: 'OPR_MBY', header: { text: '운영주체' } }, - { name: 'EMP_CNT', fieldName: 'EMP_CNT', header: { text: '직원총수(명)' } }, - { name: 'ACC_CNT', fieldName: 'ACC_CNT', header: { text: '안전사고건수' } }, - { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }, - ], - columnLayout: [ - { - name: 'groupA', - header: { text: '행정구역' }, - items: ['sido', 'sgg'] - }, - 'FCT_NM', 'GBN', 'ADDR', 'TEL_NO', 'COMP_DT', 'RN_DT', 'BSNS_CT', 'FCT_CPC', 'TPUT_AMNT', 'RN_DYN', - 'TRT_MTHD', 'LNK_FCT_NM', 'LNK_TPUT_AMNT', - { - name: 'groupB', - header: { text: '유입수질(mg/L,개/mL)' }, - items: ['IN_BOD', 'IN_TOC', 'IN_SS', 'IN_TN', 'IN_TP', 'IN_COLI'], - }, - { - name: 'groupC', - header: { text: '방류수질(mg/L,개/mL)' }, - items: ['OUT_BOD', 'OUT_TOC', 'OUT_SS', 'OUT_TN', 'OUT_TP', 'OUT_COLI'], - }, - { - name: 'groupD', - header: { text: '방류수역' }, - items: ['WTR_SYS', 'STRM', 'MID_ZONE', 'SML_ZONE'], - }, - { - name: 'groupE', - header: { text: '운영현황' }, - items: ['OPR_MBY', 'EMP_CNT', 'ACC_CNT'] - }, - 'RMK' - ] - }; -export const ExcretaTreatmentFacilityInfoList = { - ...rawExcretaTreatmentFacilityInfoList, - columns: rawExcretaTreatmentFacilityInfoList.columns.map(col => ({ - ...col, - editable: false - })) -}; \ No newline at end of file diff --git a/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityRvwColumn.ts b/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityRvwColumn.ts new file mode 100644 index 000000000..3cf7f9343 --- /dev/null +++ b/apps/st/src/components/util/column/review/ExcretaTreatmentFacilityRvwColumn.ts @@ -0,0 +1,118 @@ +import { ValueType } from "realgrid"; + +// 하수도 통계 관리 07.분뇨처리 시설 +const rawServiceLevelList = [ + { + tabKey: 'a', + tabLabel: '민원', + rowStartNum: 2, + fixedColumns: 2, + columns: [ + /* 1. 기본 정보 */ + { name: 'SIDO', fieldName: '시도', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: '시군구', header: { text: '시군구' } }, + { name: 'YR_GBN', fieldName: '구분', header: { text: '구분' } }, + + /* 2. 하수처리 인구 */ + { name: 'POPLTN_SM', fieldName: '하수처리인구(명)', header: { text: '하수처리인구\n(명)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + + /* 3. 민원유형 (단위: 건) */ + { name: 'CVPL_CM', fieldName: '총계(민원)', header: { text: '총계' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'CVPL_DCWTR_QLTWTR', fieldName: '악취', header: { text: '악취' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'CVPL_BSML', fieldName: '하수관로', header: { text: '하수관로' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'CVPL_FIVW', fieldName: '배수설비', header: { text: '배수설비' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'CVPL_POLLUTN_ACDNT', fieldName: '맨홀', header: { text: '맨홀' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'CVPL_SSOS', fieldName: '정화조', header: { text: '정화조' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'CVPL_CHRGE', fieldName: '하수도요금', header: { text: '하수도요금' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'CVPL_ETC', fieldName: '기타(민원)', header: { text: '기타' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + + /* 4. 성과 지표 및 비고 */ + { name: 'STDR_POPLTN_PER_CVPL', fieldName: '기준인구당 민원건수(건/10,000명)', header: { text: '기준인구당\n민원건수\n(건/10,000명)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + { name: 'RMK', fieldName: '비고', header: { text: '비고' } } + ], + columnLayout: [ + { name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] }, + 'YR_GBN', + 'POPLTN_SM', + { + name: 'complaintTypeGroup', + header: { text: '민원유형(건)' }, + items: [ + 'CVPL_CM', + 'CVPL_DCWTR_QLTWTR', + 'CVPL_BSML', + 'CVPL_FIVW', + 'CVPL_POLLUTN_ACDNT', + 'CVPL_SSOS', + 'CVPL_CHRGE', + 'CVPL_ETC' + ] + }, + 'STDR_POPLTN_PER_CVPL', + 'RMK' + ] + }, + { + tabKey: 'b', + tabLabel: '주민친화시설', + rowStartNum: 2, + fixedColumns: 5, + columns: [ + /* 1. 기본 및 시설 정보 */ + { name: 'SIDO', fieldName: '시도', header: { text: '시도' } }, + { name: 'GUGUN', fieldName: '시군구', header: { text: '시군구' } }, + { name: 'BSC_FCT_NM', fieldName: '처리장명', header: { text: '처리장명' } }, + { name: 'FCT_CPC', fieldName: '시설용량(㎥/일)', header: { text: '시설용량\n(㎥/일)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'YR_GBN', fieldName: '구분', header: { text: '구분' } }, + + /* 2. 처리장 전체 면적 */ + { name: 'PRCPLT_AR', fieldName: '처리장 면적(㎡)', header: { text: '처리장\n면적(㎡)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0.0' }, + + /* 3. 주민친화시설 면적 상세 (단위: ㎡) */ + { name: 'TOTAL_AR', fieldName: '총계(시설)', header: { text: '총계' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'RESTRM_AR', fieldName: '휴게시설', header: { text: '휴게시설' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'CHILDPLAY_AR', fieldName: '어린이놀이공간', header: { text: '어린이놀이공간' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'ALSFC_AR', fieldName: '체력단련시설', header: { text: '체력단련시설' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'PLGRND_AR', fieldName: '운동시설', header: { text: '운동시설' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'PRKPLCE_AR', fieldName: '주차장', header: { text: '주차장' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'CTLSTT_AR', fieldName: '교육 및 문화시설', header: { text: '교육 및\n문화시설' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'NRPRK_AR', fieldName: '습지조성(생태공원)', header: { text: '습지조성\n(생태공원)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + { name: 'ETC_AR', fieldName: '기타(시설)', header: { text: '기타' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' }, + + /* 4. 비고 */ + { name: 'RMK', fieldName: '비고', 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 ExcretaTreatmentFacilityInfoList = rawServiceLevelList.map(tab => ({ + ...tab, + columns: tab.columns.map(col => ({ + ...col, + editable: false + })) +})); \ No newline at end of file