st: feat: 로그 조회, 입력-하수관로 조회, 입력-하수도보급률 예외 제출

This commit is contained in:
2026-04-07 14:57:35 +09:00
parent 1489fdc664
commit 51b1daf083
28 changed files with 2489 additions and 1133 deletions
@@ -1,52 +1,68 @@
import { ValueType } from "realgrid";
import type { GridTopButtonConfig } from "@/components/type/DataGrid.type";
// 하수도 통계 관리 > 02.하수관로 > tab 6. 시설별 현황관리
// Tab 6-1: 행정구역별 연결 현황 (오른쪽 그리드)
export const AdminAreaConnectionInpColumn = {
columns: [
// 행정구역
{ name: 'sido', fieldName: '시도', header: { text: '시도' } },
{ name: 'sgg', fieldName: '시군구', header: { text: '시군구' } },
{ name: 'adstDong', fieldName: '행정구역명', header: { text: '행정구역명' } },
{ name: 'ctpvNm', fieldName: 'ctpvNm', header: { text: '시도' }, editable: false },
{ name: 'sggNm', fieldName: 'sggNm', header: { text: '시군구' }, editable: false },
{ name: 'admdstNm', fieldName: 'admdstNm', header: { text: '행정구역명' }, editable: false },
// 연결여부
{ name: 'iscan', fieldName: '연결여부', header: { text: '연결여부' } },
{ name: 'isConnection', fieldName: 'isConnection', header: { text: '연결여부' }, editable: false },
// 연결하수처리장
{ name: 'bscFctNm', fieldName: '연결하수처리장', header: { text: '연결하수처리장' } },
{ name: 'connectionBscFctNmList', fieldName: 'connectionBscFctNmList', header: { text: '연결하수처리장' }, editable: false },
{
name: 'admdstCd',
fieldName: 'admdstCd',
header: { text: '행정구역코드' },
visible: false,
editable: false,
},
],
columnLayout: [
{
name: 'adminArea',
hideChildHeaders: false,
header: { text: '행정구역' },
items: ['sido', 'sgg', 'adstDong'],
items: ['ctpvNm', 'sggNm', 'admdstNm'],
},
'iscan',
'bscFctNm',
'isConnection',
'connectionBscFctNmList',
'admdstCd'
],
rowStartNum: 2,
fixedColumns: 1,
tabKey: 'adminAreaConnectionInp',
tabLabel: '행정구역별 연결 현황'
tabLabel: '행정구역별 연결 현황',
topButton: {
visible: true,
text: '시설별 설치 현황 관리',
onClick: ({ openDialog }: Parameters<NonNullable<GridTopButtonConfig["onClick"]>>[0]) => {
openDialog('시설별 설치 현황 관리');
},
},
};
// Tab 6-2: 하수처리장별 연결 현황 (왼쪽 그리드)
export const TreatPlantConnectionInpColumn = {
columns: [
// 하수처리장 정보
{ name: 'bscFctNm', fieldName: '하수처리장명', header: { text: '하수처리장명' } },
{ name: 'fctCpc', fieldName: '용량', header: { text: '용량' }, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'bscFctCd', fieldName: '하수처리장코드', header: { text: '하수처리장코드' } },
{ name: 'bscFctNm', fieldName: 'bscFctNm', header: { text: '하수처리장명' }, editable: false },
{ name: 'fctCpc', fieldName: 'fctCpc', header: { text: '용량' }, valueType: ValueType.NUMBER, dataFormat: '#,##0', editable: false },
{ name: 'bscFctCd', fieldName: 'bscFctCd', header: { text: '하수처리장코드' }, editable: false },
// 연결여부
{ name: 'iscan', fieldName: '연결여부', header: { text: '연결여부' } },
{ name: 'isConnection', fieldName: 'isConnection', header: { text: '연결여부' }, editable: false },
// 연결지역
{ name: 'nmlist', fieldName: '연결지역', header: { text: '연결지역' } },
{ name: 'connectionAreaList', fieldName: 'connectionAreaList', header: { text: '연결지역' }, editable: false },
],
columnLayout: [
'bscFctNm',
'fctCpc',
'bscFctCd',
'iscan',
'nmlist',
'isConnection',
'connectionAreaList',
],
rowStartNum: 1,
fixedColumns: 1,
@@ -55,9 +71,9 @@ export const TreatPlantConnectionInpColumn = {
};
export const ConnectionStatusInpColumn = {
tabKey: 'treatmentPlantConnectionInp',
tabKey: 'ST00020006',
tabLabel: '시설별 현황 관리',
isSplitGrid: true,
left: AdminAreaConnectionInpColumn,
right: TreatPlantConnectionInpColumn,
left: TreatPlantConnectionInpColumn,
right: AdminAreaConnectionInpColumn,
};
@@ -2,86 +2,97 @@ import { footerInt, footerDecimal2, footerDecimal3 } from "@/components/util/gri
import { ValueType } from "realgrid";
// 하수도 통계 관리 > 02.하수관로 > tab 2. 시설별 설치현황
// SeweragePipeInputFactInstallStatusItem + commonInfo.ctpvNm (그리드 행에 병합)
export const FactInstallStatusInpColumn = {
columns: [
// 행정구역
{ name: 'sido', fieldName: '시도', header: { text: '시도' }, editable: false },
{ name: 'sgg', fieldName: '시군구', header: { text: '시군구' }, editable: false },
// 행정구역 (ctpvNm은 commonInfo에서 주입)
{ name: 'ctpvNm', fieldName: 'ctpvNm', header: { text: '시도' }, footer: { text: '합계' }, editable: false, styleName: 'rg-cell-readonly' },
{ name: 'sggNm', fieldName: 'sggNm', header: { text: '시군구' }, editable: false, styleName: 'rg-cell-readonly' },
// 하수처리장 정보
{ name: 'bscFctNm', fieldName: '하수처리장명', header: { text: '하수처리장명' }, footer: { text: '합계' }, editable: false },
{ name: 'fctCpc', fieldName: '하수처리시설용량(m³/일)', header: { text: '하수처리시설용량(m³/일)' }, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'swtrmtFcltNm', fieldName: 'swtrmtFcltNm', header: { text: '하수처리장명' }, footer: { text: '합계' }, editable: false },
{ name: 'admdstNm', fieldName: 'admdstNm', header: { text: '행정구역명' }, editable: false, styleName: 'rg-cell-readonly' },
{ name: 'prcsFcltCpct', fieldName: 'prcsFcltCpct', header: { text: '하수처리시설용량(m³/일)' }, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 처리구역면적(km²)
{ name: 'procZoneSm', fieldName: '합계', header: { text: '합계' }, footer: footerDecimal3, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.000' },
{ name: 'cmbnProcZoneAr', fieldName: '합류식', header: { text: '합류식' }, footer: footerDecimal3, valueType: ValueType.NUMBER, dataFormat: '#,##0.000' },
{ name: 'sprtProcZoneAr', fieldName: '분류식', header: { text: '분류식' }, footer: footerDecimal3, valueType: ValueType.NUMBER, dataFormat: '#,##0.000' },
{ name: 'prcsZoneArea', fieldName: 'prcsZoneArea', header: { text: '합계' }, footer: footerDecimal3, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.000' },
{ name: 'cbsysPrcsZoneArea', fieldName: 'cbsysPrcsZoneArea', header: { text: '합류식' }, footer: footerDecimal3, valueType: ValueType.NUMBER, dataFormat: '#,##0.000' },
{ name: 'sprsysPrcsZoneArea', fieldName: 'sprsysPrcsZoneArea', header: { text: '분류식' }, footer: footerDecimal3, valueType: ValueType.NUMBER, dataFormat: '#,##0.000' },
// 분류식화율
{ name: 'sprtRt', fieldName: '분류식화율', header: { text: '분류식화율' }, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.0' },
{ name: 'sprsysVartnRt', fieldName: 'sprsysVartnRt', header: { text: '분류식화율' }, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.0' },
// 배수설비(개소)
{ name: 'drngEqpSm', fieldName: '합계', header: { text: '합계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'cmbnDrngEqp', fieldName: '합류식', header: { text: '합류식' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'sprtDrngEqpSm', fieldName: '소계', header: { text: '소계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'sprtDrngEqpCnnc', fieldName: '연결', header: { text: '연결' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'sprtDrngEqpDcnnc', fieldName: '미연결', header: { text: '미연결' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'mltvEqpmCnt', fieldName: 'mltvEqpmCnt', header: { text: '합계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'cbsysMltvEqpmCnt', fieldName: 'cbsysMltvEqpmCnt', header: { text: '합류식' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'sprsysMltvEqpmCnt', fieldName: 'sprsysMltvEqpmCnt', header: { text: '소계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'sprsysMltvLnkgCnt', fieldName: 'sprsysMltvLnkgCnt', header: { text: '연결' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'sprsysMltvYetLnkgCnt', fieldName: 'sprsysMltvYetLnkgCnt', header: { text: '미연결' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 하수관로 > 총시설연장
{ name: 'piplFcltyExtn', fieldName: '총시설연장(m)', header: { text: '총시설연장(m)' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'wholFcltPrlg', fieldName: 'wholFcltPrlg', header: { text: '총시설연장(m)' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 하수관로 > 차집/오수간선(m)
{ name: 'icgMnnSm', fieldName: '합계', header: { text: '합계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'icgExtn', fieldName: '차집', header: { text: '차집' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'mnnExtn', fieldName: '오수 간선', header: { text: '오수 간선' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'wholIcptgAtlfcsPrlg', fieldName: 'wholIcptgAtlfcsPrlg', header: { text: '합계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'icptgPrlg', fieldName: 'icptgPrlg', header: { text: '차집' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'atlfcsPrlg', fieldName: 'atlfcsPrlg', header: { text: '오수 간선' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 하수관로 > 토실/토구(개소) > 합류식
{ name: 'cmbnSoilholeSite', fieldName: '우수토실', header: { text: '우수토실' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'cbsysStofcbrCnt', fieldName: 'cbsysStofcbrCnt', header: { text: '우수토실' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 하수관로 > 토실/토구(개소) > 분류식
{ name: 'sprtSoilholeSite', fieldName: '우수토실', header: { text: '우수토실' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'sprtSoilspllSite', fieldName: '우수토구', header: { text: '우수토구' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'sprsysStofcbrCnt', fieldName: 'sprsysStofcbrCnt', header: { text: '우수토실' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'sprsysExlnOtflCnt', fieldName: 'sprsysExlnOtflCnt', header: { text: '우수토구' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 하수관로 > 지선(m)
{ name: 'brnchlnSm', fieldName: '합계', header: { text: '합계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'cmbnBrnchlnExtn', fieldName: '합류식', header: { text: '합류식' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'wholBrchlnPrlg', fieldName: 'wholBrchlnPrlg', header: { text: '합계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'cbsysBrchlnPrlg', fieldName: 'cbsysBrchlnPrlg', header: { text: '합류식' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 하수관로 > 지선(m) > 분류식
{ name: 'rainwtrBrnchlnExtn', fieldName: '우수', header: { text: '우수' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'pltwtrBrnchlnExtn', fieldName: '오수', header: { text: '오수' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 하수관로 > 지선(m) > 분류식
{ name: 'exlnBrchlnPrlg', fieldName: 'exlnBrchlnPrlg', header: { text: '우수' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'drtwBrchlnPrlg', fieldName: 'drtwBrchlnPrlg', header: { text: '오수' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 비고
{ name: 'rmk', fieldName: '비고', header: { text: '비고' } },
{ name: 'rmrk', fieldName: 'rmrk', header: { text: '비고' } },
// 식별·키 필드 (API SeweragePipeInputFactInstallStatusItem, 그리드 비표시 — fixedColumns와 겹치지 않도록 맨 뒤)
{ name: 'admdstCd', fieldName: 'admdstCd', header: { text: '행정구역코드' }, visible: false, editable: false, styleName: 'rg-cell-readonly' },
{ name: 'prcsFcltSn', fieldName: 'prcsFcltSn', header: { text: '처리시설일련번호' }, visible: false, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'swtrmtFcltCd', fieldName: 'swtrmtFcltCd', header: { text: '하수처리시설코드' }, visible: false, editable: false, styleName: 'rg-cell-readonly' },
],
columnLayout: [
{
name: 'adminArea',
hideChildHeaders: false,
header: { text: '행정구역' },
items: ['sido', 'sgg'],
items: [
{ column: 'ctpvNm', footerUserSpans: [{ colspan: 2 }] },
'sggNm',
],
},
'bscFctNm',
'fctCpc',
'swtrmtFcltNm',
'admdstNm',
'prcsFcltCpct',
{
name: 'procZone',
hideChildHeaders: false,
header: { text: '처리구역면적(km²)' },
items: ['procZoneSm', 'cmbnProcZoneAr', 'sprtProcZoneAr'],
items: ['prcsZoneArea', 'cbsysPrcsZoneArea', 'sprsysPrcsZoneArea'],
},
'sprtRt',
'sprsysVartnRt',
{
name: 'drainEquip',
hideChildHeaders: false,
header: { text: '배수설비(개소)' },
items: [
'drngEqpSm',
'cmbnDrngEqp',
'mltvEqpmCnt',
'cbsysMltvEqpmCnt',
{
name: 'sprtDrainEquip',
hideChildHeaders: false,
header: { text: '분류식' },
items: ['sprtDrngEqpSm', 'sprtDrngEqpCnnc', 'sprtDrngEqpDcnnc'],
items: ['sprsysMltvEqpmCnt', 'sprsysMltvLnkgCnt', 'sprsysMltvYetLnkgCnt'],
},
],
},
@@ -90,12 +101,12 @@ export const FactInstallStatusInpColumn = {
hideChildHeaders: false,
header: { text: '하수관로' },
items: [
'piplFcltyExtn',
'wholFcltPrlg',
{
name: 'interceptor',
hideChildHeaders: false,
header: { text: '차집/오수간선(m)' },
items: ['icgMnnSm', 'icgExtn', 'mnnExtn'],
items: ['wholIcptgAtlfcsPrlg', 'icptgPrlg', 'atlfcsPrlg'],
},
{
name: 'soilHole',
@@ -106,13 +117,13 @@ export const FactInstallStatusInpColumn = {
name: 'cmbnSoilHole',
hideChildHeaders: false,
header: { text: '합류식' },
items: ['cmbnSoilholeSite'],
items: ['cbsysStofcbrCnt'],
},
{
name: 'sprtSoilHole',
hideChildHeaders: false,
header: { text: '분류식' },
items: ['sprtSoilholeSite', 'sprtSoilspllSite'],
items: ['sprsysStofcbrCnt', 'sprsysExlnOtflCnt'],
},
],
},
@@ -121,22 +132,25 @@ export const FactInstallStatusInpColumn = {
hideChildHeaders: false,
header: { text: '지선(m)' },
items: [
'brnchlnSm',
'cmbnBrnchlnExtn',
'wholBrchlnPrlg',
'cbsysBrchlnPrlg',
{
name: 'sprtBranchLine',
hideChildHeaders: false,
header: { text: '분류식' },
items: ['rainwtrBrnchlnExtn', 'pltwtrBrnchlnExtn'],
items: ['exlnBrchlnPrlg', 'drtwBrchlnPrlg'],
},
],
},
],
},
'rmk',
'rmrk',
'admdstCd',
'prcsFcltSn',
'swtrmtFcltCd',
],
rowStartNum: 4,
fixedColumns: 3,
tabKey: 'factInstallStatusInp',
tabKey: 'ST00020002',
tabLabel: '시설별 설치현황'
};
};
@@ -1,331 +1,158 @@
import type { ColumnConfig, ColumnLayoutItem } from "@/components/type/DataGrid.type";
import { footerInt } from "@/components/util/grid/footerSummary";
import { ValueType } from "realgrid";
// 하수도 통계 관리 > 02.하수관로 > tab 5. 맨홀 현황
// SeweragePipeInputManholeStatusItem + commonInfo.ctpvNm (그리드 행에 병합)
// API: yy14=2014년 … yy25=2025년 (필드 접두 yy + 연도 끝자리)
const MANHOLE_YY_MIN = 14;
const MANHOLE_YY_MAX = 25;
const calendarYearFromYy = (yy: number) => 2000 + yy;
const intCol = (name: string, headerText: string): ColumnConfig => ({
name,
fieldName: name,
header: { text: headerText },
footer: footerInt,
editable: false,
valueType: ValueType.NUMBER,
dataFormat: "#,##0",
});
function totalBlockColumns(): ColumnConfig[] {
return [
intCol("totalWholMnhlCnt", "계"),
intCol("totalStep1MnhlCnt", "주철"),
intCol("totalStep2MnhlCnt", "주철(조화)"),
intCol("totalStep3MnhlCnt", "콘크리트"),
intCol("totalStep4MnhlCnt", "기타"),
intCol("totalStep5MnhlCnt", "추락방지시설설치맨홀(개)"),
];
}
function yyBlockColumns(yy: number): ColumnConfig[] {
const p = `yy${yy}`;
return [
intCol(`${p}WholMnhlCnt`, "계"),
intCol(`${p}Step1MnhlCnt`, "주철"),
intCol(`${p}Step2MnhlCnt`, "주철(조화)"),
intCol(`${p}Step3MnhlCnt`, "콘크리트"),
intCol(`${p}Step4MnhlCnt`, "기타"),
intCol(`${p}Step5MnhlCnt`, "추락방지시설설치맨홀(개)"),
];
}
function yyYearLayout(yy: number): ColumnLayoutItem {
const y = calendarYearFromYy(yy);
const p = `yy${yy}`;
return {
name: `year${y}`,
hideChildHeaders: false,
header: { text: `${y}년` },
items: [
{
name: `year${y}Material`,
hideChildHeaders: false,
header: { text: "맨홀뚜껑 재질(개)" },
items: [
`${p}WholMnhlCnt`,
`${p}Step1MnhlCnt`,
`${p}Step2MnhlCnt`,
`${p}Step3MnhlCnt`,
`${p}Step4MnhlCnt`,
],
},
`${p}Step5MnhlCnt`,
],
};
}
const yearLayoutItems: ColumnLayoutItem[] = [];
for (let yy = MANHOLE_YY_MIN; yy <= MANHOLE_YY_MAX; yy++) {
yearLayoutItems.push(yyYearLayout(yy));
}
export const ManholeStatusInpColumn = {
columns: [
// 행정구역
{ name: 'a1', fieldName: '시도', header: { text: '시도' }, editable: false },
{ name: 'a2', fieldName: '시군구', header: { text: '시군구' }, editable: false },
// 집중강우중점관리구역구분
{ name: 'a3', fieldName: '집중강우중점관리구역구분', header: { text: '집중강우중점관리구역구분' }, editable: false, footer: { text: '합계' } },
// 연도별총계 > 맨홀뚜껑 재질(개)
{ name: 'b1', fieldName: '계', header: { text: '계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'b2', fieldName: '주철', header: { text: '주철' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'b3', fieldName: '주철(조화)', header: { text: '주철(조화)' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'b4', fieldName: '콘크리트', header: { text: '콘크리트' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'b5', fieldName: '기타', header: { text: '기타' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 연도별총계 > 추락방지시설설치맨홀(개)
{ name: 'b6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2015년 이전 > 맨홀뚜껑 재질(개)
{ name: 'c1', fieldName: '계', header: { text: '계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'c2', fieldName: '주철', header: { text: '주철' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'c3', fieldName: '주철(조화)', header: { text: '주철(조화)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'c4', fieldName: '콘크리트', header: { text: '콘크리트' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'c5', fieldName: '기타', header: { text: '기타' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2015년 이전 > 추락방지시설설치맨홀(개)
{ name: 'c6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2015년 > 맨홀뚜껑 재질(개)
{ name: 'd1', fieldName: '계', header: { text: '계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'd2', fieldName: '주철', header: { text: '주철' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'd3', fieldName: '주철(조화)', header: { text: '주철(조화)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'd4', fieldName: '콘크리트', header: { text: '콘크리트' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'd5', fieldName: '기타', header: { text: '기타' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2015년 > 추락방지시설설치맨홀(개)
{ name: 'd6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2016년 > 맨홀뚜껑 재질(개)
{ name: 'e1', fieldName: '계', header: { text: '계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'e2', fieldName: '주철', header: { text: '주철' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'e3', fieldName: '주철(조화)', header: { text: '주철(조화)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'e4', fieldName: '콘크리트', header: { text: '콘크리트' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'e5', fieldName: '기타', header: { text: '기타' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2016년 > 추락방지시설설치맨홀(개)
{ name: 'e6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2017년 > 맨홀뚜껑 재질(개)
{ name: 'f1', fieldName: '계', header: { text: '계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'f2', fieldName: '주철', header: { text: '주철' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'f3', fieldName: '주철(조화)', header: { text: '주철(조화)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'f4', fieldName: '콘크리트', header: { text: '콘크리트' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'f5', fieldName: '기타', header: { text: '기타' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2017년 > 추락방지시설설치맨홀(개)
{ name: 'f6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2018년 > 맨홀뚜껑 재질(개)
{ name: 'g1', fieldName: '계', header: { text: '계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'g2', fieldName: '주철', header: { text: '주철' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'g3', fieldName: '주철(조화)', header: { text: '주철(조화)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'g4', fieldName: '콘크리트', header: { text: '콘크리트' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'g5', fieldName: '기타', header: { text: '기타' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2018년 > 추락방지시설설치맨홀(개)
{ name: 'g6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2019년 > 맨홀뚜껑 재질(개)
{ name: 'h1', fieldName: '계', header: { text: '계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'h2', fieldName: '주철', header: { text: '주철' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'h3', fieldName: '주철(조화)', header: { text: '주철(조화)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'h4', fieldName: '콘크리트', header: { text: '콘크리트' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'h5', fieldName: '기타', header: { text: '기타' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2019년 > 추락방지시설설치맨홀(개)
{ name: 'h6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2020년 > 맨홀뚜껑 재질(개)
{ name: 'i1', fieldName: '계', header: { text: '계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'i2', fieldName: '주철', header: { text: '주철' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'i3', fieldName: '주철(조화)', header: { text: '주철(조화)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'i4', fieldName: '콘크리트', header: { text: '콘크리트' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'i5', fieldName: '기타', header: { text: '기타' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2020년 > 추락방지시설설치맨홀(개)
{ name: 'i6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2021년 > 맨홀뚜껑 재질(개)
{ name: 'j1', fieldName: '계', header: { text: '계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'j2', fieldName: '주철', header: { text: '주철' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'j3', fieldName: '주철(조화)', header: { text: '주철(조화)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'j4', fieldName: '콘크리트', header: { text: '콘크리트' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'j5', fieldName: '기타', header: { text: '기타' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2021년 > 추락방지시설설치맨홀(개)
{ name: 'j6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2022년 > 맨홀뚜껑 재질(개)
{ name: 'k1', fieldName: '계', header: { text: '계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'k2', fieldName: '주철', header: { text: '주철' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'k3', fieldName: '주철(조화)', header: { text: '주철(조화)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'k4', fieldName: '콘크리트', header: { text: '콘크리트' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'k5', fieldName: '기타', header: { text: '기타' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2022년 > 추락방지시설설치맨홀(개)
{ name: 'k6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2023년 > 맨홀뚜껑 재질(개)
{ name: 'l1', fieldName: '계', header: { text: '계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'l2', fieldName: '주철', header: { text: '주철' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'l3', fieldName: '주철(조화)', header: { text: '주철(조화)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'l4', fieldName: '콘크리트', header: { text: '콘크리트' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'l5', fieldName: '기타', header: { text: '기타' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2023년 > 추락방지시설설치맨홀(개)
{ name: 'l6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2024년 > 맨홀뚜껑 재질(개)
{ name: 'm1', fieldName: '계', header: { text: '계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'm2', fieldName: '주철', header: { text: '주철' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'm3', fieldName: '주철(조화)', header: { text: '주철(조화)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'm4', fieldName: '콘크리트', header: { text: '콘크리트' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'm5', fieldName: '기타', header: { text: '기타' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2024년 > 추락방지시설설치맨홀(개)
{ name: 'm6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2025년 > 맨홀뚜껑 재질(개)
{ name: 'n1', fieldName: '계', header: { text: '계' }, footer: footerInt, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'n2', fieldName: '주철', header: { text: '주철' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'n3', fieldName: '주철(조화)', header: { text: '주철(조화)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'n4', fieldName: '콘크리트', header: { text: '콘크리트' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'n5', fieldName: '기타', header: { text: '기타' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 2025년 > 추락방지시설설치맨홀(개)
{ name: 'n6', fieldName: '추락방지시설설치맨홀(개)', header: { text: '추락방지시설설치맨홀(개)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 비고
{ name: 'z1', fieldName: '비고', header: { text: '비고' } },
],
{
name: "ctpvNm",
fieldName: "ctpvNm",
header: { text: "시도" },
footer: { text: "합계" },
editable: false,
styleName: "rg-cell-readonly",
},
{
name: "sggNm",
fieldName: "sggNm",
header: { text: "시군구" },
editable: false,
styleName: "rg-cell-readonly",
},
{
name: "admdstNm",
fieldName: "admdstNm",
header: { text: "행정구역명" },
editable: false,
styleName: "rg-cell-readonly",
},
{
name: "emphsMngSeNm",
fieldName: "emphsMngSeNm",
header: { text: "집중강우중점관리구역구분" },
footer: { text: "합계" },
editable: false,
},
...totalBlockColumns(),
...Array.from({ length: MANHOLE_YY_MAX - MANHOLE_YY_MIN + 1 }, (_, i) =>
yyBlockColumns(MANHOLE_YY_MIN + i)
).flat(),
{ name: "rmrk", fieldName: "rmrk", header: { text: "비고" } },
{
name: "admdstCd",
fieldName: "admdstCd",
header: { text: "행정구역코드" },
visible: false,
editable: false,
styleName: "rg-cell-readonly",
},
] as ColumnConfig[],
columnLayout: [
{
name: 'adminArea',
name: "adminArea",
hideChildHeaders: false,
header: { text: '행정구역' },
items: ['a1', 'a2'],
header: { text: "행정구역" },
items: [{ column: "ctpvNm", footerUserSpans: [{ colspan: 2 }] }, "sggNm"],
},
'a3',
"admdstNm",
"emphsMngSeNm",
{
name: 'yearlyTotal',
name: "yearlyTotal",
hideChildHeaders: false,
header: { text: '연도별총계' },
header: { text: "연도별총계" },
items: [
{
name: 'yearlyTotalMaterial',
name: "yearlyTotalMaterial",
hideChildHeaders: false,
header: { text: '맨홀뚜껑 재질(개)' },
items: ['b1', 'b2', 'b3', 'b4', 'b5'],
header: { text: "맨홀뚜껑 재질(개)" },
items: [
"totalWholMnhlCnt",
"totalStep1MnhlCnt",
"totalStep2MnhlCnt",
"totalStep3MnhlCnt",
"totalStep4MnhlCnt",
],
},
'b6',
"totalStep5MnhlCnt",
],
},
{
name: 'before2015',
hideChildHeaders: false,
header: { text: '2015년 이전' },
items: [
{
name: 'before2015Material',
hideChildHeaders: false,
header: { text: '맨홀뚜껑 재질(개)' },
items: ['c1', 'c2', 'c3', 'c4', 'c5'],
},
'c6',
],
},
{
name: 'year2015',
hideChildHeaders: false,
header: { text: '2015년' },
items: [
{
name: 'year2015Material',
hideChildHeaders: false,
header: { text: '맨홀뚜껑 재질(개)' },
items: ['d1', 'd2', 'd3', 'd4', 'd5'],
},
'd6',
],
},
{
name: 'year2016',
hideChildHeaders: false,
header: { text: '2016년' },
items: [
{
name: 'year2016Material',
hideChildHeaders: false,
header: { text: '맨홀뚜껑 재질(개)' },
items: ['e1', 'e2', 'e3', 'e4', 'e5'],
},
'e6',
],
},
{
name: 'year2017',
hideChildHeaders: false,
header: { text: '2017년' },
items: [
{
name: 'year2017Material',
hideChildHeaders: false,
header: { text: '맨홀뚜껑 재질(개)' },
items: ['f1', 'f2', 'f3', 'f4', 'f5'],
},
'f6',
],
},
{
name: 'year2018',
hideChildHeaders: false,
header: { text: '2018년' },
items: [
{
name: 'year2018Material',
hideChildHeaders: false,
header: { text: '맨홀뚜껑 재질(개)' },
items: ['g1', 'g2', 'g3', 'g4', 'g5'],
},
'g6',
],
},
{
name: 'year2019',
hideChildHeaders: false,
header: { text: '2019년' },
items: [
{
name: 'year2019Material',
hideChildHeaders: false,
header: { text: '맨홀뚜껑 재질(개)' },
items: ['h1', 'h2', 'h3', 'h4', 'h5'],
},
'h6',
],
},
{
name: 'year2020',
hideChildHeaders: false,
header: { text: '2020년' },
items: [
{
name: 'year2020Material',
hideChildHeaders: false,
header: { text: '맨홀뚜껑 재질(개)' },
items: ['i1', 'i2', 'i3', 'i4', 'i5'],
},
'i6',
],
},
{
name: 'year2021',
hideChildHeaders: false,
header: { text: '2021년' },
items: [
{
name: 'year2021Material',
hideChildHeaders: false,
header: { text: '맨홀뚜껑 재질(개)' },
items: ['j1', 'j2', 'j3', 'j4', 'j5'],
},
'j6',
],
},
{
name: 'year2022',
hideChildHeaders: false,
header: { text: '2022년' },
items: [
{
name: 'year2022Material',
hideChildHeaders: false,
header: { text: '맨홀뚜껑 재질(개)' },
items: ['k1', 'k2', 'k3', 'k4', 'k5'],
},
'k6',
],
},
{
name: 'year2023',
hideChildHeaders: false,
header: { text: '2023년' },
items: [
{
name: 'year2023Material',
hideChildHeaders: false,
header: { text: '맨홀뚜껑 재질(개)' },
items: ['l1', 'l2', 'l3', 'l4', 'l5'],
},
'l6',
],
},
{
name: 'year2024',
hideChildHeaders: false,
header: { text: '2024년' },
items: [
{
name: 'year2024Material',
hideChildHeaders: false,
header: { text: '맨홀뚜껑 재질(개)' },
items: ['m1', 'm2', 'm3', 'm4', 'm5'],
},
'm6',
],
},
{
name: 'year2025',
hideChildHeaders: false,
header: { text: '2025년' },
items: [
{
name: 'year2025Material',
hideChildHeaders: false,
header: { text: '맨홀뚜껑 재질(개)' },
items: ['n1', 'n2', 'n3', 'n4', 'n5'],
},
'n6',
],
},
'z1',
],
...yearLayoutItems,
"rmrk",
"admdstCd"
] as ColumnLayoutItem[],
rowStartNum: 3,
fixedColumns: 2,
tabKey: 'manholeStatusInp',
tabLabel: '맨홀 현황'
};
tabKey: "ST00020005",
tabLabel: "맨홀 현황",
};
@@ -2,62 +2,151 @@ import { footerDecimal2 } from "@/components/util/grid/footerSummary";
import { ValueType } from "realgrid";
// 하수도 통계 관리 > 02.하수관로 > tab 4. 관경별 현황
// SeweragePipeInputPipeDiameterStatusItem + commonInfo.ctpvNm (그리드 행에 병합)
export const PipeDiameterStatusInpColumn = {
columns: [
// 행정구역
{ name: 'sido', fieldName: '시도', header: { text: '시도' }, editable: false },
{ name: 'sgg', fieldName: '시군구', header: { text: '시군구' }, editable: false, footer: { text: '합계' } },
// 관종
{ name: 'swrgPipeCd', fieldName: '관종', header: { text: '관종' }, editable: false },
// 총계(m) - 계산
{ name: 'totalDiameter', fieldName: '총계(m)', header: { text: '총계(m)' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 원형(m)
{ name: 'under200', fieldName: '200mm 미만', header: { text: '200mm 미만' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'over200Undev300', fieldName: '200mm이상~300mm미만', header: { text: '200mm이상~300mm미만' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'over300Undev500', fieldName: '300mm이상~500mm미만', header: { text: '300mm이상~500mm미만' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'over500Undev500', fieldName: '500mm이상~800mm미만', header: { text: '500mm이상~800mm미만' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'over800', fieldName: '800이상mm', header: { text: '800이상mm' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 사각형(m)
{ name: 'box', fieldName: '사각형(m)', header: { text: '사각형(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 기타(측구 개거 등)
{ name: 'etc', fieldName: '기타(측구 개거 등)', header: { text: '기타(측구 개거 등)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 비고
{ name: 'rmk', fieldName: '비고', header: { text: '비고' } },
{
name: "ctpvNm",
fieldName: "ctpvNm",
header: { text: "시도" },
footer: { text: "합계" },
editable: false,
styleName: "rg-cell-readonly",
},
{
name: "sggNm",
fieldName: "sggNm",
header: { text: "시군구" },
editable: false,
styleName: "rg-cell-readonly",
},
{
name: "pipeSeNm",
fieldName: "pipeSeNm",
header: { text: "관종" },
editable: false,
},
{
name: "admdstNm",
fieldName: "admdstNm",
header: { text: "행정구역명" },
editable: false,
styleName: "rg-cell-readonly",
},
{
name: "pdmtByTsmWhol",
fieldName: "pdmtByTsmWhol",
header: { text: "총계(m)" },
footer: footerDecimal2,
editable: false,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
},
{
name: "step1PdmtPrlg",
fieldName: "step1PdmtPrlg",
header: { text: "200mm 미만" },
footer: footerDecimal2,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
},
{
name: "step2PdmtPrlg",
fieldName: "step2PdmtPrlg",
header: { text: "200mm이상~300mm미만" },
footer: footerDecimal2,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
},
{
name: "step3PdmtPrlg",
fieldName: "step3PdmtPrlg",
header: { text: "300mm이상~500mm미만" },
footer: footerDecimal2,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
},
{
name: "step4PdmtPrlg",
fieldName: "step4PdmtPrlg",
header: { text: "500mm이상~800mm미만" },
footer: footerDecimal2,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
},
{
name: "step5PdmtPrlg",
fieldName: "step5PdmtPrlg",
header: { text: "800mm 이상" },
footer: footerDecimal2,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
},
{
name: "sqrePdmtPrlg",
fieldName: "sqrePdmtPrlg",
header: { text: "사각형(m)" },
footer: footerDecimal2,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
},
{
name: "etcPdmtPrlg",
fieldName: "etcPdmtPrlg",
header: { text: "기타(측구 개거 등)" },
footer: footerDecimal2,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
},
{ name: "rmrk", fieldName: "rmrk", header: { text: "비고" } },
{
name: "admdstCd",
fieldName: "admdstCd",
header: { text: "행정구역코드" },
visible: false,
editable: false,
styleName: "rg-cell-readonly",
},
{
name: "pipeSeCd",
fieldName: "pipeSeCd",
header: { text: "관종코드" },
visible: false,
editable: false,
styleName: "rg-cell-readonly",
},
],
columnLayout: [
{
name: 'adminArea',
name: "adminArea",
hideChildHeaders: false,
header: { text: '행정구역' },
items: ['sido', 'sgg'],
header: { text: "행정구역" },
items: [{ column: "ctpvNm", footerUserSpans: [{ colspan: 2 }] }, "sggNm"],
},
'swrgPipeCd',
'totalDiameter',
"pipeSeNm",
"admdstNm",
"pdmtByTsmWhol",
{
name: 'circular',
name: "circular",
hideChildHeaders: false,
header: { text: '원형(m)' },
header: { text: "원형(m)" },
items: [
'under200',
'over200Undev300',
'over300Undev500',
'over500Undev500',
'over800',
"step1PdmtPrlg",
"step2PdmtPrlg",
"step3PdmtPrlg",
"step4PdmtPrlg",
"step5PdmtPrlg",
],
},
'box',
'etc',
'rmk',
"sqrePdmtPrlg",
"etcPdmtPrlg",
"rmrk",
"admdstCd",
"pipeSeCd",
],
rowStartNum: 2,
fixedColumns: 1,
tabKey: 'pipeDiameterStatusInp',
tabLabel: '관경별 현황'
};
fixedColumns: 2,
tabKey: "ST00020004",
tabLabel: "관경별 현황",
};
@@ -1,377 +1,186 @@
import type { ColumnConfig, ColumnLayoutItem } from "@/components/type/DataGrid.type";
import { footerDecimal2 } from "@/components/util/grid/footerSummary";
import { ValueType } from "realgrid";
// 하수도 통계 관리 > 02.하수관로 > tab 3. 관종별 현황
// SeweragePipeInputPipeTypeStatusItem + commonInfo.ctpvNm (그리드 행에 병합)
//
// 연도 그룹: yy1 = 1996년 이전, yy2 = 1996년 … API 상한 yy30(2024년)까지.
// 표시 구간: 1996년 ~ (현재 연도 − 1) 까지. API 밖 연도는 yy 인덱스 상한으로 캡.
const YY_API_MAX = 30;
/** yy 인덱스 → 달력 연도 (yy2 → 1996) */
const calendarYearForYyIndex = (yyIndex: number) => 1994 + yyIndex;
/** 이 모듈이 로드될 때의 “데이터 기준 마지막 연도” (현재 연도 − 1) */
const lastDataYear = new Date().getFullYear() - 1;
const yyYearCols = (
n: number,
opts: { footer?: typeof footerDecimal2; visible?: boolean } = {}
): ColumnConfig[] => {
const whol = `yy${n}PrlgWhol`;
const lyng = `yy${n}LyngPrlg`;
const dmltn = `yy${n}DmltnPrlg`;
const vis = opts.visible === false ? ({ visible: false } as const) : {};
return [
{
name: whol,
fieldName: whol,
header: { text: "계" },
...(opts.footer !== undefined ? { footer: opts.footer } : {}),
editable: false,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
...vis,
},
{
name: lyng,
fieldName: lyng,
header: { text: "매설연장(m)" },
...(opts.footer !== undefined ? { footer: opts.footer } : {}),
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
...vis,
},
{
name: dmltn,
fieldName: dmltn,
header: { text: "철거연장(m)" },
...(opts.footer !== undefined ? { footer: opts.footer } : {}),
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
...vis,
},
];
};
/** yy2(1996) ~ yyK 까지 표시. K는 API 상한 YY_API_MAX */
const maxYyIndex =
lastDataYear < 1996 ? 1 : Math.min(YY_API_MAX, lastDataYear - 1994);
const yearLayoutItems: ColumnLayoutItem[] = [];
for (let yy = 2; yy <= maxYyIndex; yy++) {
const y = calendarYearForYyIndex(yy);
yearLayoutItems.push({
name: `year${y}`,
hideChildHeaders: false,
header: { text: `${y}년` },
items: [`yy${yy}PrlgWhol`, `yy${yy}LyngPrlg`, `yy${yy}DmltnPrlg`],
});
}
export const PipeTypeStatusInpColumn = {
columns: [
// 행정구역
{ name: 'sido', fieldName: '시도', header: { text: '시도' }, editable: false },
{ name: 'sgg', fieldName: '시군구', header: { text: '시군구' }, editable: false },
// 관종
{ name: 'swrgPipeCd', fieldName: '관종', header: { text: '관종' }, footer: { text: '합계' }, editable: false },
// 총계
{ name: 'totalSum', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'totalLayingExtn', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'totalRemvlExtn', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 1996년 이전 (footer 없음)
{ name: 'totalExtn22y', fieldName: '계', header: { text: '계' }, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn22y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn22y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 1996년
{ name: 'totalExtn01y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn01y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn01y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 1997년
{ name: 'totalExtn02y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn02y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn02y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 1998년
{ name: 'totalExtn03y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn03y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn03y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 1999년
{ name: 'totalExtn04y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn04y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn04y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2000년
{ name: 'totalExtn05y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn05y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn05y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2001년
{ name: 'totalExtn06y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn06y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn06y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2002년
{ name: 'totalExtn07y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn07y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn07y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2003년
{ name: 'totalExtn08y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn08y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn08y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2004년
{ name: 'totalExtn09y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn09y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn09y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2005년
{ name: 'totalExtn10y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn10y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn10y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2006년
{ name: 'totalExtn11y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn11y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn11y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2007년
{ name: 'totalExtn12y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn12y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn12y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2008년
{ name: 'totalExtn13y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn13y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn13y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2009년
{ name: 'totalExtn14y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn14y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn14y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2010년
{ name: 'totalExtn15y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn15y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn15y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2011년
{ name: 'totalExtn16y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn16y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn16y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2012년
{ name: 'totalExtn17y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn17y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn17y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2013년
{ name: 'totalExtn18y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn18y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn18y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2014년
{ name: 'totalExtn19y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn19y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn19y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2015년
{ name: 'totalExtn20y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn20y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn20y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2016년
{ name: 'totalExtn21y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn21y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn21y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2017년
{ name: 'totalExtn23y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn23y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn23y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2018년
{ name: 'totalExtn24y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn24y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn24y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2019년
{ name: 'totalExtn25y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn25y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn25y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2020년
{ name: 'totalExtn26y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn26y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn26y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2021년
{ name: 'totalExtn27y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn27y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn27y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2022년
{ name: 'totalExtn28y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn28y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn28y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2023년
{ name: 'totalExtn29y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn29y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn29y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2024년
{ name: 'totalExtn30y', fieldName: '계', header: { text: '계' }, footer: footerDecimal2, editable: false, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'layingExtn30y', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
{ name: 'remvlExtn30y', fieldName: '철거연장(m)', header: { text: '철거연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 2025년
{ name: 'layingExtn', fieldName: '매설연장(m)', header: { text: '매설연장(m)' }, footer: footerDecimal2, valueType: ValueType.NUMBER, dataFormat: '#,##0.00' },
// 비고
{ name: 'rmk', fieldName: '비고', header: { text: '비고' } },
],
columnLayout: [
{
name: 'adminArea',
hideChildHeaders: false,
header: { text: '행정구역' },
items: ['sido', 'sgg'],
},
'swrgPipeCd',
{
name: 'totalGroup',
hideChildHeaders: false,
header: { text: '총계' },
items: ['totalSum', 'totalLayingExtn', 'totalRemvlExtn'],
},
{
name: 'year1996Before',
hideChildHeaders: false,
header: { text: '1996년 이전' },
items: ['totalExtn22y', 'layingExtn22y', 'remvlExtn22y'],
},
{
name: 'year1996',
hideChildHeaders: false,
header: { text: '1996년' },
items: ['totalExtn01y', 'layingExtn01y', 'remvlExtn01y'],
},
{
name: 'year1997',
hideChildHeaders: false,
header: { text: '1997년' },
items: ['totalExtn02y', 'layingExtn02y', 'remvlExtn02y'],
},
{
name: 'year1998',
hideChildHeaders: false,
header: { text: '1998년' },
items: ['totalExtn03y', 'layingExtn03y', 'remvlExtn03y'],
},
{
name: 'year1999',
hideChildHeaders: false,
header: { text: '1999년' },
items: ['totalExtn04y', 'layingExtn04y', 'remvlExtn04y'],
},
{
name: 'year2000',
hideChildHeaders: false,
header: { text: '2000년' },
items: ['totalExtn05y', 'layingExtn05y', 'remvlExtn05y'],
},
{
name: 'year2001',
hideChildHeaders: false,
header: { text: '2001년' },
items: ['totalExtn06y', 'layingExtn06y', 'remvlExtn06y'],
},
{
name: 'year2002',
hideChildHeaders: false,
header: { text: '2002년' },
items: ['totalExtn07y', 'layingExtn07y', 'remvlExtn07y'],
},
{
name: 'year2003',
hideChildHeaders: false,
header: { text: '2003년' },
items: ['totalExtn08y', 'layingExtn08y', 'remvlExtn08y'],
},
{
name: 'year2004',
hideChildHeaders: false,
header: { text: '2004년' },
items: ['totalExtn09y', 'layingExtn09y', 'remvlExtn09y'],
},
{
name: 'year2005',
hideChildHeaders: false,
header: { text: '2005년' },
items: ['totalExtn10y', 'layingExtn10y', 'remvlExtn10y'],
},
{
name: 'year2006',
hideChildHeaders: false,
header: { text: '2006년' },
items: ['totalExtn11y', 'layingExtn11y', 'remvlExtn11y'],
},
{
name: 'year2007',
hideChildHeaders: false,
header: { text: '2007년' },
items: ['totalExtn12y', 'layingExtn12y', 'remvlExtn12y'],
},
{
name: 'year2008',
hideChildHeaders: false,
header: { text: '2008년' },
items: ['totalExtn13y', 'layingExtn13y', 'remvlExtn13y'],
},
{
name: 'year2009',
hideChildHeaders: false,
header: { text: '2009년' },
items: ['totalExtn14y', 'layingExtn14y', 'remvlExtn14y'],
},
{
name: 'year2010',
hideChildHeaders: false,
header: { text: '2010년' },
items: ['totalExtn15y', 'layingExtn15y', 'remvlExtn15y'],
},
{
name: 'year2011',
hideChildHeaders: false,
header: { text: '2011년' },
items: ['totalExtn16y', 'layingExtn16y', 'remvlExtn16y'],
},
{
name: 'year2012',
hideChildHeaders: false,
header: { text: '2012년' },
items: ['totalExtn17y', 'layingExtn17y', 'remvlExtn17y'],
},
{
name: 'year2013',
hideChildHeaders: false,
header: { text: '2013년' },
items: ['totalExtn18y', 'layingExtn18y', 'remvlExtn18y'],
},
{
name: 'year2014',
hideChildHeaders: false,
header: { text: '2014년' },
items: ['totalExtn19y', 'layingExtn19y', 'remvlExtn19y'],
},
{
name: 'year2015',
hideChildHeaders: false,
header: { text: '2015년' },
items: ['totalExtn20y', 'layingExtn20y', 'remvlExtn20y'],
},
{
name: 'year2016',
hideChildHeaders: false,
header: { text: '2016년' },
items: ['totalExtn21y', 'layingExtn21y', 'remvlExtn21y'],
},
{
name: 'year2017',
hideChildHeaders: false,
header: { text: '2017년' },
items: ['totalExtn23y', 'layingExtn23y', 'remvlExtn23y'],
},
{
name: 'year2018',
hideChildHeaders: false,
header: { text: '2018년' },
items: ['totalExtn24y', 'layingExtn24y', 'remvlExtn24y'],
},
{
name: 'year2019',
hideChildHeaders: false,
header: { text: '2019년' },
items: ['totalExtn25y', 'layingExtn25y', 'remvlExtn25y'],
},
{
name: 'year2020',
hideChildHeaders: false,
header: { text: '2020년' },
items: ['totalExtn26y', 'layingExtn26y', 'remvlExtn26y'],
},
{
name: 'year2021',
hideChildHeaders: false,
header: { text: '2021년' },
items: ['totalExtn27y', 'layingExtn27y', 'remvlExtn27y'],
},
{
name: 'year2022',
hideChildHeaders: false,
header: { text: '2022년' },
items: ['totalExtn28y', 'layingExtn28y', 'remvlExtn28y'],
},
{
name: 'year2023',
hideChildHeaders: false,
header: { text: '2023년' },
items: ['totalExtn29y', 'layingExtn29y', 'remvlExtn29y'],
},
{
name: 'year2024',
hideChildHeaders: false,
header: { text: '2024년' },
items: ['totalExtn30y', 'layingExtn30y', 'remvlExtn30y'],
},
'layingExtn',
'rmk',
],
rowStartNum: 2,
fixedColumns: 2,
tabKey: 'pipeTypeStatusInp',
tabLabel: '관종별 현황'
};
{
name: "ctpvNm",
fieldName: "ctpvNm",
header: { text: "시도" },
footer: { text: "합계" },
editable: false,
styleName: "rg-cell-readonly",
},
{
name: "sggNm",
fieldName: "sggNm",
header: { text: "시군구" },
editable: false,
styleName: "rg-cell-readonly",
},
{
name: "pipeSeNm",
fieldName: "pipeSeNm",
header: { text: "관종" },
footer: { text: "합계" },
editable: false,
},
{
name: "admdstNm",
fieldName: "admdstNm",
header: { text: "행정구역명" },
editable: false,
styleName: "rg-cell-readonly",
},
{
name: "pipeByPrstWhol",
fieldName: "pipeByPrstWhol",
header: { text: "계" },
footer: footerDecimal2,
editable: false,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
},
{
name: "lyngPrlg",
fieldName: "lyngPrlg",
header: { text: "매설연장(m)" },
footer: footerDecimal2,
editable: false,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
},
{
name: "dmltnPrlg",
fieldName: "dmltnPrlg",
header: { text: "철거연장(m)" },
footer: footerDecimal2,
editable: false,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
},
...yyYearCols(1, {}),
...Array.from({ length: YY_API_MAX - 1 }, (_, i) => {
const yy = i + 2;
return yyYearCols(yy, {
footer: footerDecimal2,
visible: yy <= maxYyIndex,
});
}).flat(),
{ name: "rmrk", fieldName: "rmrk", header: { text: "비고" } },
{
name: "admdstCd",
fieldName: "admdstCd",
header: { text: "행정구역코드" },
visible: false,
editable: false,
styleName: "rg-cell-readonly",
},
{
name: "pipeSeCd",
fieldName: "pipeSeCd",
header: { text: "관종코드" },
visible: false,
editable: false,
styleName: "rg-cell-readonly",
},
] as ColumnConfig[],
columnLayout: [
{
name: "adminArea",
hideChildHeaders: false,
header: { text: "행정구역" },
items: [{ column: "ctpvNm", footerUserSpans: [{ colspan: 2 }] }, "sggNm"],
},
"pipeSeNm",
"admdstNm",
{
name: "totalGroup",
hideChildHeaders: false,
header: { text: "총계" },
items: ["pipeByPrstWhol", "lyngPrlg", "dmltnPrlg"],
},
{
name: "year1996Before",
hideChildHeaders: false,
header: { text: "1996년 이전" },
items: ["yy1PrlgWhol", "yy1LyngPrlg", "yy1DmltnPrlg"],
},
...yearLayoutItems,
"rmrk",
'admdstCd',
] as ColumnLayoutItem[],
rowStartNum: 2,
fixedColumns: 2,
tabKey: "ST00020003",
tabLabel: "관종별 현황",
};
@@ -63,6 +63,7 @@ export const RegionalFactStatusInpColumn = {
// 비고
{ name: 'rmrk', fieldName: 'rmrk', header: { text: '비고' } },
{ name: 'admdstCd', fieldName: 'admdstCd', header: { text: '행정코드' }, visible: false },
],
columnLayout: [
{
@@ -156,6 +157,7 @@ export const RegionalFactStatusInpColumn = {
'sewerLdgrEdpPrlg',
'sewerLdgrEdpRt',
'rmrk',
'admdstCd',
],
rowStartNum: 4,
fixedColumns: 1,