feat : 00. 통계 입력 현황

valueType,numberFormat 추가,컬럼명 변경
This commit is contained in:
2026-01-16 11:48:24 +09:00
parent 66930f2e93
commit 93d090b23f
3 changed files with 73 additions and 50 deletions
@@ -7,8 +7,9 @@ import ApproveButton from "@/components/button/ApproveButton";
import ReviewOpinionButton from "@/components/button/ReviewOpinionButton";
import ReturnButton from "@/components/button/ReturnButton";
import { StatsInputStatusInfoList } from "@/components/util/column/review/StatsInputStatusColumnRvw";
import { StatsInputStatusInfoList } from "@/components/util/column/review/StatsInputStatusRvwColumn";
// 하수도 통계 관리 00. 통계 입력 현황
const StatsInputStatusRvw = () => {
const [rowData, setRowData] = useState<Record<string, string | number>[]>([]);
@@ -31,13 +32,21 @@ const StatsInputStatusRvw = () => {
return (
<>
<SearchForm userMenual={true} />
<div className="flex justify-end items-center gap-[0.6rem] m-[0.6rem]">
<ReviewOpinionButton reviewOpinionFunc={reviewOpinionFunc} />
<ApproveButton approveFunc={approveFunc} />
<ReturnButton returnFunc={returnFunc} />
<SaveButton saveFunc={saveFunc} />
<div className="card !py-0">
<div className="flex justify-end items-center gap-[0.6rem] m-[0.6rem]">
<ReviewOpinionButton reviewOpinionFunc={reviewOpinionFunc} />
<ApproveButton approveFunc={approveFunc} />
<ReturnButton returnFunc={returnFunc} />
<SaveButton saveFunc={saveFunc} />
</div>
</div>
<DataGrid columnInfo={StatsInputStatusInfoList} isExcelImport={false} rowStartNum={2} fixedColumns={2} rowData={rowData} setRowData={setRowData} />
<DataGrid
columnInfo={StatsInputStatusInfoList}
isExcelImport={false}
rowStartNum={2}
fixedColumns={2}
rowData={rowData}
setRowData={setRowData} />
</>
);
}
@@ -1,43 +0,0 @@
const rawStatsInputStatusList = {
columns: [
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'STATUS', fieldName: 'STATUS', header: { text: '진행상태' } },
...[1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15].flatMap(num => {
const id = num.toString();
return [
{ name: `LOCG_CHARGER_${id}`, fieldName: `LOCG_CHARGER_${id}`, header: { text: '제출자' } },
{ name: `LOCG_CTTPC_${id}`, fieldName: `LOCG_CTTPC_${id}`, header: { text: '연락처' } },
{ name: `LOCG_STATUS_NM_${id}`, fieldName: `LOCG_STATUS_NM_${id}`, header: { text: '지자체진행상태' } },
{ name: `STATUS_${id}`, fieldName: `STATUS_${id}`, header: { text: '진행상태' } }
];
}),
],
columnLayout: [
{ name: 'addrGroup', header: { text: '구분' }, items: ['SIDO', 'GUGUN'] },
'STATUS',
{ name: 'group01', header: { text: '01. 하수도보급율' }, items: ['LOCG_CHARGER_1', 'LOCG_CTTPC_1', 'LOCG_STATUS_NM_1', 'STATUS_1'] },
{ name: 'group02', header: { text: '02. 하수관로' }, items: ['LOCG_CHARGER_3', 'LOCG_CTTPC_3', 'LOCG_STATUS_NM_3', 'STATUS_3'] },
{ name: 'group03', header: { text: '03. 하수관로유지관리' }, items: ['LOCG_CHARGER_4', 'LOCG_CTTPC_4', 'LOCG_STATUS_NM_4', 'STATUS_4'] },
{ name: 'group04', header: { text: '04. 하수저류시설' }, items: ['LOCG_CHARGER_5', 'LOCG_CTTPC_5', 'LOCG_STATUS_NM_5', 'STATUS_5'] },
{ name: 'group05', header: { text: '05. 펌프장' }, items: ['LOCG_CHARGER_6', 'LOCG_CTTPC_6', 'LOCG_STATUS_NM_6', 'STATUS_6'] },
{ name: 'group06', header: { text: '06. 공공하수처리시설' }, items: ['LOCG_CHARGER_7', 'LOCG_CTTPC_7', 'LOCG_STATUS_NM_7', 'STATUS_7'] },
{ name: 'group07', header: { text: '07. 분뇨처리시설' }, items: ['LOCG_CHARGER_8', 'LOCG_CTTPC_8', 'LOCG_STATUS_NM_8', 'STATUS_8'] },
{ name: 'group08', header: { text: '08. 개인하수처리시설' }, items: ['LOCG_CHARGER_9', 'LOCG_CTTPC_9', 'LOCG_STATUS_NM_9', 'STATUS_9'] },
{ name: 'group09', header: { text: '09. 하수도재정' }, items: ['LOCG_CHARGER_10', 'LOCG_CTTPC_10', 'LOCG_STATUS_NM_10', 'STATUS_10'] },
{ name: 'group10', header: { text: '10. 물재이용' }, items: ['LOCG_CHARGER_11', 'LOCG_CTTPC_11', 'LOCG_STATUS_NM_11', 'STATUS_11'] },
{ name: 'group11', header: { text: '11. 하수및분뇨찌꺼기' }, items: ['LOCG_CHARGER_12', 'LOCG_CTTPC_12', 'LOCG_STATUS_NM_12', 'STATUS_12'] },
{ name: 'group12', header: { text: '12. 하수및분뇨관련사업' }, items: ['LOCG_CHARGER_13', 'LOCG_CTTPC_13', 'LOCG_STATUS_NM_13', 'STATUS_13'] },
{ name: 'group13', header: { text: '13. 하수도서비스수준' }, items: ['LOCG_CHARGER_15', 'LOCG_CTTPC_15', 'LOCG_STATUS_NM_15', 'STATUS_15'] }
]
};
export const StatsInputStatusInfoList = {
...rawStatsInputStatusList,
columns: rawStatsInputStatusList.columns.map(col => ({
...col,
editable: false
}))
};
@@ -0,0 +1,57 @@
import { ValueType } from "realgrid";
/**
하수도 통계 관리 00. 통계 입력 현황
* 단일 Tab
*/
const StatsInputStatusInfoColumnRaw = {
columns: [
{ name: 'sido', fieldName: '시도', header: { text: '시도' } },
{ name: 'gugun', fieldName: '시군구', header: { text: '시군구' } },
{ name: 'status', fieldName: '진행상태', header: { text: '진행상태' } },
// 동적 컬럼 생성 (1~15번 그룹)
...[1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15].flatMap(num => {
const id = num.toString();
return [
// fieldName을 header.text와 동일하게 수정 (단, 데이터 구분을 위해 ID 포함)
{ name: `locg_charger_${id}`, fieldName: `제출자_${id}`, header: { text: '제출자' } },
{ name: `locg_cttpc_${id}`, fieldName: `연락처_${id}`, header: { text: '연락처' } },
{ name: `locg_status_nm_${id}`, fieldName: `지자체진행상태_${id}`, header: { text: '지자체진행상태' } },
{ name: `status_${id}`, fieldName: `진행상태_${id}`, header: { text: '진행상태' } }
];
}),
],
columnLayout: [
{
name: 'addrGroup',
header: { text: '구분' },
items: ['sido', 'gugun']
},
'status',
{ name: 'group01', header: { text: '01. 하수도보급율' }, items: ['locg_charger_1', 'locg_cttpc_1', 'locg_status_nm_1', 'status_1'] },
{ name: 'group02', header: { text: '02. 하수관로' }, items: ['locg_charger_3', 'locg_cttpc_3', 'locg_status_nm_3', 'status_3'] },
{ name: 'group03', header: { text: '03. 하수관로유지관리' }, items: ['locg_charger_4', 'locg_cttpc_4', 'locg_status_nm_4', 'status_4'] },
{ name: 'group04', header: { text: '04. 하수저류시설' }, items: ['locg_charger_5', 'locg_cttpc_5', 'locg_status_nm_5', 'status_5'] },
{ name: 'group05', header: { text: '05. 펌프장' }, items: ['locg_charger_6', 'locg_cttpc_6', 'locg_status_nm_6', 'status_6'] },
{ name: 'group06', header: { text: '06. 공공하수처리시설' }, items: ['locg_charger_7', 'locg_cttpc_7', 'locg_status_nm_7', 'status_7'] },
{ name: 'group07', header: { text: '07. 분뇨처리시설' }, items: ['locg_charger_8', 'locg_cttpc_8', 'locg_status_nm_8', 'status_8'] },
{ name: 'group08', header: { text: '08. 개인하수처리시설' }, items: ['locg_charger_9', 'locg_cttpc_9', 'locg_status_nm_9', 'status_9'] },
{ name: 'group09', header: { text: '09. 하수도재정' }, items: ['locg_charger_10', 'locg_cttpc_10', 'locg_status_nm_10', 'status_10'] },
{ name: 'group10', header: { text: '10. 물재이용' }, items: ['locg_charger_11', 'locg_cttpc_11', 'locg_status_nm_11', 'status_11'] },
{ name: 'group11', header: { text: '11. 하수및분뇨찌꺼기' }, items: ['locg_charger_12', 'locg_cttpc_12', 'locg_status_nm_12', 'status_12'] },
{ name: 'group12', header: { text: '12. 하수및분뇨관련사업' }, items: ['locg_charger_13', 'locg_cttpc_13', 'locg_status_nm_13', 'status_13'] },
{ name: 'group13', header: { text: '13. 하수도서비스수준' }, items: ['locg_charger_15', 'locg_cttpc_15', 'locg_status_nm_15', 'status_15'] }
]
};
/**
* 최종 Export 객체 (수정 불가 설정 적용)
*/
export const StatsInputStatusInfoList = {
...StatsInputStatusInfoColumnRaw,
columns: StatsInputStatusInfoColumnRaw.columns.map(col => ({
...col,
editable: false
}))
};