[feat]01.통계입력현황 단일탭 column 폴더 분리

This commit is contained in:
2026-01-02 14:10:33 +09:00
parent 7abae34531
commit 25e41a356b
2 changed files with 55 additions and 178 deletions
@@ -1,187 +1,14 @@
import SearchForm from "@/components/module/SearchForm";
import DataGrid from "@/components/module/DataGrid";
import TabDataGrid from "@/components/module/TabDataGrid";
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 { StatsInputSatusInfoList } from "@/components/util/column/review/StatsInputSatusColumnRvw";
const StatsInputSatusRvw = () => {
const rawColumns = [
{ name: 'sido', fieldName: '시도', header: { text: '시도' } },
{ name: 'sgg', fieldName: '구군', header: { text: '구군' } },
{ name: '진행상태', fieldName: '진행상태', header: { text: '진행상태' } },
//01번
{ name: '제출자01', fieldName: '제출자01', header: { text: '제출자' } },
{ name: '연락처01', fieldName: '연락처01', header: { text: '연락처' } },
{ name: '지자체진행상태01', fieldName: '지자체진행상태01', header: { text: '지자체진행상태' } },
{ name: '진행상태01', fieldName: '진행상태01', header: { text: '진행상태' } },
//02번
{ name: '제출자02', fieldName: '제출자02', header: { text: '제출자' } },
{ name: '연락처02', fieldName: '연락처02', header: { text: '연락처' } },
{ name: '지자체진행상태02', fieldName: '지자체진행상태02', header: { text: '지자체진행상태' } },
{ name: '진행상태02', fieldName: '진행상태02', header: { text: '진행상태' } },
// 03번
{ name: '제출자03', fieldName: '제출자03', header: { text: '제출자' } },
{ name: '연락처03', fieldName: '연락처03', header: { text: '연락처' } },
{ name: '지자체진행상태03', fieldName: '지자체진행상태03', header: { text: '지자체진행상태' } },
{ name: '진행상태03', fieldName: '진행상태03', header: { text: '진행상태' } },
// 04번
{ name: '제출자04', fieldName: '제출자04', header: { text: '제출자' } },
{ name: '연락처04', fieldName: '연락처04', header: { text: '연락처' } },
{ name: '지자체진행상태04', fieldName: '지자체진행상태04', header: { text: '지자체진행상태' } },
{ name: '진행상태04', fieldName: '진행상태04', header: { text: '진행상태' } },
// 05번
{ name: '제출자05', fieldName: '제출자05', header: { text: '제출자' } },
{ name: '연락처05', fieldName: '연락처05', header: { text: '연락처' } },
{ name: '지자체진행상태05', fieldName: '지자체진행상태05', header: { text: '지자체진행상태' } },
{ name: '진행상태05', fieldName: '진행상태05', header: { text: '진행상태' } },
// 06번
{ name: '제출자06', fieldName: '제출자06', header: { text: '제출자' } },
{ name: '연락처06', fieldName: '연락처06', header: { text: '연락처' } },
{ name: '지자체진행상태06', fieldName: '지자체진행상태06', header: { text: '지자체진행상태' } },
{ name: '진행상태06', fieldName: '진행상태06', header: { text: '진행상태' } },
// 07번
{ name: '제출자07', fieldName: '제출자07', header: { text: '제출자' } },
{ name: '연락처07', fieldName: '연락처07', header: { text: '연락처' } },
{ name: '지자체진행상태07', fieldName: '지자체진행상태07', header: { text: '지자체진행상태' } },
{ name: '진행상태07', fieldName: '진행상태07', header: { text: '진행상태' } },
// 08번
{ name: '제출자08', fieldName: '제출자08', header: { text: '제출자' } },
{ name: '연락처08', fieldName: '연락처08', header: { text: '연락처' } },
{ name: '지자체진행상태08', fieldName: '지자체진행상태08', header: { text: '지자체진행상태' } },
{ name: '진행상태08', fieldName: '진행상태08', header: { text: '진행상태' } },
// 09번
{ name: '제출자09', fieldName: '제출자09', header: { text: '제출자' } },
{ name: '연락처09', fieldName: '연락처09', header: { text: '연락처' } },
{ name: '지자체진행상태09', fieldName: '지자체진행상태09', header: { text: '지자체진행상태' } },
{ name: '진행상태09', fieldName: '진행상태09', header: { text: '진행상태' } },
// 10번
{ name: '제출자10', fieldName: '제출자10', header: { text: '제출자' } },
{ name: '연락처10', fieldName: '연락처10', header: { text: '연락처' } },
{ name: '지자체진행상태10', fieldName: '지자체진행상태10', header: { text: '지자체진행상태' } },
{ name: '진행상태10', fieldName: '진행상태10', header: { text: '진행상태' } },
// 11번
{ name: '제출자11', fieldName: '제출자11', header: { text: '제출자' } },
{ name: '연락처11', fieldName: '연락처11', header: { text: '연락처' } },
{ name: '지자체진행상태11', fieldName: '지자체진행상태11', header: { text: '지자체진행상태' } },
{ name: '진행상태11', fieldName: '진행상태11', header: { text: '진행상태' } },
// 12번
{ name: '제출자12', fieldName: '제출자12', header: { text: '제출자' } },
{ name: '연락처12', fieldName: '연락처12', header: { text: '연락처' } },
{ name: '지자체진행상태12', fieldName: '지자체진행상태12', header: { text: '지자체진행상태' } },
{ name: '진행상태12', fieldName: '진행상태12', header: { text: '진행상태' } },
// 13번
{ name: '제출자13', fieldName: '제출자13', header: { text: '제출자' } },
{ name: '연락처13', fieldName: '연락처13', header: { text: '연락처' } },
{ name: '지자체진행상태13', fieldName: '지자체진행상태13', header: { text: '지자체진행상태' } },
{ name: '진행상태13', fieldName: '진행상태13', header: { text: '진행상태' } },
{ name: 'rmk', fieldName: '비고', header: { text: '비고' } },
];
const columns = rawColumns.map(col => ({
...col,
editable: false
}));
const columnLayout = [
{
name: 'groupA',
hideChildHeaders: false,
header: { text: '행정구역' },
items: ['sido', 'sgg'],
},
'진행상태',
{
name: 'groupB',
hideChildHeaders: false,
header: { text: '01. 하수도 보급율' },
items: ['제출자01', '연락처01', '지자체진행상태01', '진행상태01'],
},
{
name: 'groupC',
hideChildHeaders: false,
header: { text: '02. 하수관로' },
items: ['제출자02', '연락처02', '지자체진행상태02', '진행상태02'],
},
{
name: 'groupD',
hideChildHeaders: false,
header: { text: '03. 하수관로유지관리' },
items: ['제출자03', '연락처03', '지자체진행상태03', '진행상태03'],
},
{
name: 'groupE',
hideChildHeaders: false,
header: { text: '04. 하수저류시설' },
items: ['제출자04', '연락처04', '지자체진행상태04', '진행상태04'],
},
{
name: 'groupF',
hideChildHeaders: false,
header: { text: '05. 펌프장' },
items: ['제출자05', '연락처05', '지자체진행상태05', '진행상태05'],
},
{
name: 'groupG',
hideChildHeaders: false,
header: { text: '06. 공공하수처리시설' },
items: ['제출자06', '연락처06', '지자체진행상태06', '진행상태06'],
},
{
name: 'groupH',
hideChildHeaders: false,
header: { text: '07. 분뇨처리시설' },
items: ['제출자07', '연락처07', '지자체진행상태07', '진행상태07'],
},
{
name: 'groupI',
hideChildHeaders: false,
header: { text: '08. 개인하수처리시설' },
items: ['제출자08', '연락처08', '지자체진행상태08', '진행상태08'],
},
{
name: 'groupJ',
hideChildHeaders: false,
header: { text: '09. 하수도재정' },
items: ['제출자09', '연락처09', '지자체진행상태09', '진행상태09'],
},
{
name: 'groupK',
hideChildHeaders: false,
header: { text: '10. 물재이용' },
items: ['제출자10', '연락처10', '지자체진행상태10', '진행상태10'],
},
{
name: 'groupL',
hideChildHeaders: false,
header: { text: '11. 하수및분뇨찌꺼기' },
items: ['제출자11', '연락처11', '지자체진행상태11', '진행상태11'],
},
{
name: 'groupM',
hideChildHeaders: false,
header: { text: '12. 하수및분뇨관련사업' },
items: ['제출자12', '연락처12', '지자체진행상태12', '진행상태12'],
},
{
name: 'groupN',
hideChildHeaders: false,
header: { text: '13. 하수도서비스수준' },
items: ['제출자13', '연락처13', '지자체진행상태13', '진행상태13'],
}
];
const approveFunc = () => {
console.log('approveFunc');
};
@@ -207,7 +34,7 @@ const StatsInputSatusRvw = () => {
<ReturnButton returnFunc={returnFunc} />
<SaveButton saveFunc={saveFunc} />
</div>
<DataGrid columnInfo={{ columns, columnLayout }} rowStartNum={2} isExcelImport={false} fixedColumns={2} />
<TabDataGrid columnInfo={StatsInputSatusInfoList} isExcelImport={false} />
</>
);
}
@@ -0,0 +1,50 @@
// 1. 원본 데이터 정의 (데이터 구조와 레이아웃 정의)
const rawStatsInputStatusList = [
{
tabKey: 'a',
tabLabel: '통계 입력현황 검증',
rowStartNum: 2,
fixedColumns: 2,
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 StatsInputSatusInfoList = rawStatsInputStatusList.map(tab => ({
...tab,
columns: tab.columns.map(col => ({
...col,
editable: false
}))
}));