feat: 13. 하수도서비스 수준 화면 구현
- 각 tab별로 columns, columnLayout 분리 - tab 1. 민원 (ComplaintInpColumn.ts) - tab 2. 주민친화시설 (ResidentFriendlyFacilityInpColumn.ts) - 하수도서비스 수준 Component 완성
This commit is contained in:
@@ -1,10 +1,54 @@
|
||||
import SearchForm from "../../module/SearchForm";
|
||||
import { useState } from "react";
|
||||
import SearchForm from "@/components/module/SearchForm";
|
||||
import { TabDataGrid } from '@rsone/components';
|
||||
import SubmitButton from "@/components/button/SumitButton";
|
||||
import SaveButton from "@/components/button/SaveButton";
|
||||
import LastYearDataButton from "@/components/button/LastYearDataButton";
|
||||
import SubmitExceptionButton from "@/components/button/SubmitExceptionButton";
|
||||
|
||||
import { ComplaintInpColumn } from "@/components/util/column/input/sewerageServiceLevel/ComplaintInpColumn";
|
||||
import { ResidentFriendlyFacilityInpColumn } from "@/components/util/column/input/sewerageServiceLevel/ResidentFriendlyFacilityInpColumn";
|
||||
|
||||
// 하수도 통계 관리 > 13. 하수도 서비스 수준
|
||||
const SewerageServiceLevelInp = () => {
|
||||
const [rowDataMap, setRowDataMap] = useState<Map<string, Record<string, string | number>[]>>(new Map());
|
||||
|
||||
// tab List
|
||||
const SewerageServiceLevelInpTabList = [
|
||||
ComplaintInpColumn,
|
||||
ResidentFriendlyFacilityInpColumn
|
||||
];
|
||||
|
||||
const submitExceptionFunc = () => {
|
||||
console.log('submit exception');
|
||||
// 예외 제출 로직
|
||||
};
|
||||
|
||||
const getLastYearDataFunc = () => {
|
||||
console.log('get last year data');
|
||||
// 지난연도 데이터 가져오기 로직
|
||||
};
|
||||
|
||||
const submitFunc = () => {
|
||||
console.log('submit');
|
||||
// 제출 로직
|
||||
};
|
||||
|
||||
const saveFunc = () => {
|
||||
console.log('save');
|
||||
// 저장 로직
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<SearchForm userMenual={true} />
|
||||
<div className="flex justify-end items-center gap-[0.6rem] m-[0.6rem]">
|
||||
<SubmitExceptionButton SubmitExceptionFunc={submitExceptionFunc} />
|
||||
<LastYearDataButton getLastYearDataFunc={getLastYearDataFunc} />
|
||||
<SubmitButton submitFunc={submitFunc} />
|
||||
<SaveButton saveFunc={saveFunc} />
|
||||
</div>
|
||||
<TabDataGrid columnInfo={SewerageServiceLevelInpTabList} rowDataMap={rowDataMap} setRowDataMap={setRowDataMap} />
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
import { footerInt, footerDecimal1 } from "@/components/util/grid/footerSummary";
|
||||
|
||||
// 하수도 통계 관리 > 13. 하수도 서비스 수준 > tab 1: 민원
|
||||
export const ComplaintInpColumn = {
|
||||
columns: [
|
||||
// 행정구역
|
||||
{ name: 'SIDO', fieldName: '시도', header: { text: '시도' }, editable: false },
|
||||
{ name: 'GUGUN', fieldName: '시군구', header: { text: '시군구' }, editable: false, footer: { text: '합계' } },
|
||||
|
||||
// 행정코드 (hidden)
|
||||
{ name: 'ADST_CD', fieldName: '행정구역코드', header: { text: '행정구역코드' }, visible: false },
|
||||
{ name: 'ADST_DONG', fieldName: '행정구역명', header: { text: '행정구역명' }, visible: false },
|
||||
|
||||
// 하수처리인구(명)
|
||||
{ name: 'SWGE_PROC_POPLTN', fieldName: '하수처리인구(명)', header: { text: '하수처리인구(명)' }, editable: false, footer: footerInt },
|
||||
|
||||
// 민원유형(건)
|
||||
{ name: 'CVPL_CM', fieldName: '총계', header: { text: '총계' }, editable: false, footer: footerInt },
|
||||
{ name: 'CVPL_BSML', fieldName: '악취', header: { text: '악취' }, footer: footerInt },
|
||||
{ name: 'CVPL_DCWTR_QLTWTR', fieldName: '하수관로', header: { text: '하수관로' }, footer: footerInt },
|
||||
{ name: 'CVPL_FIVW', fieldName: '배수설비', header: { text: '배수설비' }, footer: footerInt },
|
||||
{ name: 'CVPL_POLLUTN_ACDNT', fieldName: '맨홀', header: { text: '맨홀' }, footer: footerInt },
|
||||
{ name: 'CVPL_SSOS', fieldName: '정화조', header: { text: '정화조' }, footer: footerInt },
|
||||
{ name: 'CVPL_CHRGE', fieldName: '하수도요금', header: { text: '하수도요금' }, footer: footerInt },
|
||||
{ name: 'CVPL_UNKD', fieldName: '기타', header: { text: '기타' }, footer: footerInt },
|
||||
|
||||
// 기준인구당 민원건수(건/10,000명)
|
||||
{ name: 'STDR_POPLTN_PER_CVPL', fieldName: '기준인구당민원건수(건/10,000명)', header: { text: '기준인구당민원건수(건/10,000명)' }, editable: false, footer: footerDecimal1 },
|
||||
|
||||
// 비고
|
||||
{ name: 'RMK', fieldName: '비고', header: { text: '비고' } },
|
||||
|
||||
// Hidden: 의견 필드
|
||||
{ name: 'WRTER_OPINION', fieldName: '작성자의견', header: { text: '작성자의견' }, visible: false },
|
||||
{ name: 'CHCKER_OPINION', fieldName: '검토자의견', header: { text: '검토자의견' }, visible: false },
|
||||
|
||||
// Hidden: Check fields : 데이터 변경 여부를 판단하는 필드로, UI에서 숨김 처리
|
||||
{ name: 'CHK_SWGE_PROC_POPLTN', fieldName: 'CHK_SWGE_PROC_POPLTN', header: { text: 'CHK_SWGE_PROC_POPLTN' }, visible: false },
|
||||
{ name: 'CHK_CVPL_CM', fieldName: 'CHK_CVPL_CM', header: { text: 'CHK_CVPL_CM' }, visible: false },
|
||||
{ name: 'CHK_CVPL_BSML', fieldName: 'CHK_CVPL_BSML', header: { text: 'CHK_CVPL_BSML' }, visible: false },
|
||||
{ name: 'CHK_CVPL_DCWTR_QLTWTR', fieldName: 'CHK_CVPL_DCWTR_QLTWTR', header: { text: 'CHK_CVPL_DCWTR_QLTWTR' }, visible: false },
|
||||
{ name: 'CHK_CVPL_FIVW', fieldName: 'CHK_CVPL_FIVW', header: { text: 'CHK_CVPL_FIVW' }, visible: false },
|
||||
{ name: 'CHK_CVPL_POLLUTN_ACDNT', fieldName: 'CHK_CVPL_POLLUTN_ACDNT', header: { text: 'CHK_CVPL_POLLUTN_ACDNT' }, visible: false },
|
||||
{ name: 'CHK_CVPL_SSOS', fieldName: 'CHK_CVPL_SSOS', header: { text: 'CHK_CVPL_SSOS' }, visible: false },
|
||||
{ name: 'CHK_CVPL_CHRGE', fieldName: 'CHK_CVPL_CHRGE', header: { text: 'CHK_CVPL_CHRGE' }, visible: false },
|
||||
{ name: 'CHK_CVPL_UNKD', fieldName: 'CHK_CVPL_UNKD', header: { text: 'CHK_CVPL_UNKD' }, visible: false },
|
||||
{ name: 'CHK_STDR_POPLTN_PER_CVPL', fieldName: 'CHK_STDR_POPLTN_PER_CVPL', header: { text: 'CHK_STDR_POPLTN_PER_CVPL' }, visible: false },
|
||||
],
|
||||
|
||||
columnLayout: [
|
||||
{
|
||||
name: 'group_admin',
|
||||
header: { text: '행정구역' },
|
||||
items: ['SIDO', 'GUGUN']
|
||||
},
|
||||
'SWGE_PROC_POPLTN',
|
||||
{
|
||||
name: 'group_complaint_type',
|
||||
header: { text: '민원유형(건)' },
|
||||
items: [
|
||||
'CVPL_CM',
|
||||
'CVPL_BSML',
|
||||
'CVPL_DCWTR_QLTWTR',
|
||||
'CVPL_FIVW',
|
||||
'CVPL_POLLUTN_ACDNT',
|
||||
'CVPL_SSOS',
|
||||
'CVPL_CHRGE',
|
||||
'CVPL_UNKD'
|
||||
]
|
||||
},
|
||||
'STDR_POPLTN_PER_CVPL',
|
||||
'RMK'
|
||||
],
|
||||
|
||||
rowStartNum: 2,
|
||||
fixedColumns: 1,
|
||||
tabKey: 'complaintInp',
|
||||
tabLabel: '민원'
|
||||
};
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
import { footerInt, footerDecimal1 } from "@/components/util/grid/footerSummary";
|
||||
|
||||
// 하수도 통계 관리 > 13. 하수도 서비스 수준 > tab 2: 주민친화시설
|
||||
export const ResidentFriendlyFacilityInpColumn = {
|
||||
columns: [
|
||||
// 행정구역
|
||||
{ name: 'SIDO', fieldName: '시도', header: { text: '시도' }, editable: false },
|
||||
{ name: 'GUGUN', fieldName: '시군구', header: { text: '시군구' }, editable: false, footer: { text: '합계' } },
|
||||
|
||||
// 시설 기본 정보
|
||||
{ name: 'BSC_FCT_NM', fieldName: '처리장명', header: { text: '처리장명' }, editable: false },
|
||||
{ name: 'FCT_CPC', fieldName: '시설용량(m³/일)', header: { text: '시설용량(m³/일)' }, editable: false, footer: footerInt },
|
||||
|
||||
// 처리장면적(㎡)
|
||||
{ name: 'PRCPLT_AR', fieldName: '처리장면적(㎡)', header: { text: '처리장면적(㎡)' }, footer: footerDecimal1 },
|
||||
|
||||
// 주민친화시설 면적(㎡)
|
||||
{ name: 'TOTAL_AR', fieldName: '총계', header: { text: '총계' }, editable: false, footer: footerInt },
|
||||
{ name: 'RESTRM_AR', fieldName: '휴게시설', header: { text: '휴게시설' }, footer: footerInt },
|
||||
{ name: 'CHILDPLAY_AR', fieldName: '어린이놀이공간', header: { text: '어린이놀이공간' }, footer: footerInt },
|
||||
{ name: 'ALSFC_AR', fieldName: '체력단련시설', header: { text: '체력단련시설' }, footer: footerInt },
|
||||
{ name: 'PLGRND_AR', fieldName: '운동시설', header: { text: '운동시설' }, footer: footerInt },
|
||||
{ name: 'PRKPLCE_AR', fieldName: '주차장', header: { text: '주차장' }, footer: footerInt },
|
||||
{ name: 'CTLSTT_AR', fieldName: '교육및문화시설', header: { text: '교육및문화시설' }, footer: footerInt },
|
||||
{ name: 'NRPRK_AR', fieldName: '습지조성(생태공원)', header: { text: '습지조성(생태공원)' }, footer: footerInt },
|
||||
{ name: 'ETC_AR', fieldName: '기타', header: { text: '기타' }, footer: footerInt },
|
||||
|
||||
// 비고
|
||||
{ name: 'RMK', fieldName: '비고', header: { text: '비고' } },
|
||||
|
||||
// Hidden: 시설 정보
|
||||
{ name: 'STPN_SEQ', fieldName: '싯러일련번호', header: { text: '싯러일련번호' }, visible: false },
|
||||
{ name: 'ADST_CD', fieldName: '행정동코드', header: { text: '행정동코드' }, visible: false },
|
||||
{ name: 'BSC_FCT_CD', fieldName: '기초시설코드', header: { text: '기초시설코드' }, visible: false },
|
||||
|
||||
// Hidden: 의견 필드
|
||||
{ name: 'WRTER_OPINION', fieldName: '작성자의견', header: { text: '작성자의견' }, visible: false },
|
||||
{ name: 'CHCKER_OPINION', fieldName: '검토자의견', header: { text: '검토자의견' }, visible: false },
|
||||
|
||||
// Hidden: 활용율 필드
|
||||
{ name: 'PRCUSE_RT', fieldName: '주민친화시설활용율(%)', header: { text: '주민친화시설활용율(%)' }, visible: false },
|
||||
|
||||
// Hidden: Check fields : 데이터 변경 여부를 판단하는 필드로, UI에서 숨김 처리
|
||||
{ name: 'CHK_PRCPLT_AR', fieldName: 'CHK_PRCPLT_AR', header: { text: 'CHK_PRCPLT_AR' }, visible: false },
|
||||
{ name: 'CHK_TOTAL_AR', fieldName: 'CHK_TOTAL_AR', header: { text: 'CHK_TOTAL_AR' }, visible: false },
|
||||
{ name: 'CHK_RESTRM_AR', fieldName: 'CHK_RESTRM_AR', header: { text: 'CHK_RESTRM_AR' }, visible: false },
|
||||
{ name: 'CHK_CHILDPLAY_AR', fieldName: 'CHK_CHILDPLAY_AR', header: { text: 'CHK_CHILDPLAY_AR' }, visible: false },
|
||||
{ name: 'CHK_ALSFC_AR', fieldName: 'CHK_ALSFC_AR', header: { text: 'CHK_ALSFC_AR' }, visible: false },
|
||||
{ name: 'CHK_PLGRND_AR', fieldName: 'CHK_PLGRND_AR', header: { text: 'CHK_PLGRND_AR' }, visible: false },
|
||||
{ name: 'CHK_PRKPLCE_AR', fieldName: 'CHK_PRKPLCE_AR', header: { text: 'CHK_PRKPLCE_AR' }, visible: false },
|
||||
{ name: 'CHK_CTLSTT_AR', fieldName: 'CHK_CTLSTT_AR', header: { text: 'CHK_CTLSTT_AR' }, visible: false },
|
||||
{ name: 'CHK_NRPRK_AR', fieldName: 'CHK_NRPRK_AR', header: { text: 'CHK_NRPRK_AR' }, visible: false },
|
||||
{ name: 'CHK_ETC_AR', fieldName: 'CHK_ETC_AR', header: { text: 'CHK_ETC_AR' }, visible: false },
|
||||
{ name: 'CHK_PRCUSE_RT', fieldName: 'CHK_PRCUSE_RT', header: { text: 'CHK_PRCUSE_RT' }, visible: false },
|
||||
],
|
||||
|
||||
columnLayout: [
|
||||
{
|
||||
name: 'group_admin',
|
||||
header: { text: '행정구역' },
|
||||
items: ['SIDO', 'GUGUN']
|
||||
},
|
||||
'BSC_FCT_NM',
|
||||
'FCT_CPC',
|
||||
'PRCPLT_AR',
|
||||
{
|
||||
name: 'group_resident_friendly_facility',
|
||||
header: { text: '주민친화시설 면적(㎡)' },
|
||||
items: [
|
||||
'TOTAL_AR',
|
||||
'RESTRM_AR',
|
||||
'CHILDPLAY_AR',
|
||||
'ALSFC_AR',
|
||||
'PLGRND_AR',
|
||||
'PRKPLCE_AR',
|
||||
'CTLSTT_AR',
|
||||
'NRPRK_AR',
|
||||
'ETC_AR'
|
||||
]
|
||||
},
|
||||
'RMK'
|
||||
],
|
||||
|
||||
rowStartNum: 2,
|
||||
fixedColumns: 3,
|
||||
tabKey: 'residentFriendlyFacilityInp',
|
||||
tabLabel: '주민친화시설'
|
||||
};
|
||||
Reference in New Issue
Block a user