Files
frontend/apps/st/src/components/util/column/input/sewageReservoirPump/SewageReservoirInpColumn.ts
T

362 lines
14 KiB
TypeScript

import type { ColumnConfig } from "@/components/type/DataGrid.type";
import { footerInt, footerDecimal1, footerDecimal3 } from "@/components/util/grid/footerSummary";
import { ValueType } from "realgrid";
/** 설치목적 O/X 표기 */
export const SEWAGE_RESERVOIR_OX_YN_VALUES = ["O", "X"] as const;
/** 시설구조(ST00040001 `fcltStrctCn`) */
export const SEWAGE_RESERVOIR_FCLT_STRCT_VALUES = [
"일반지하식",
"지하터널식",
"기타",
] as const;
export const SEWAGE_RESERVOIR_YN_VALUES = ["유", "무"] as const;
export const SEWAGE_RESERVOIR_MLTV_MTH_VALUES = ["자연배수", "강제배수"] as const;
export const SEWAGE_RESERVOIR_IMPD_MTH_VALUES = ["직렬", "병렬"] as const;
export const SEWAGE_RESERVOIR_IMPD_PRCS_MTHD_VALUES = ["자체처리", "연계처리"] as const;
function dropdownColumn(
col: Pick<ColumnConfig, "name" | "fieldName" | "header"> &
Partial<ColumnConfig>,
options: readonly string[],
): ColumnConfig {
const values = [...options];
return {
...col,
values,
labels: values,
lookupDisplay: true,
editor: {
type: "dropdown",
domainOnly: true,
textReadOnly: true,
commitOnSelect: true,
dropDownWhenClick: true,
values,
labels: values,
},
};
}
function oxYnDropdownColumn(
col: Pick<ColumnConfig, "name" | "fieldName" | "header"> &
Partial<ColumnConfig>,
): ColumnConfig {
return dropdownColumn(col, SEWAGE_RESERVOIR_OX_YN_VALUES);
}
// 하수도 통계 관리 > 04.하수저류시설 및 빗물펌프장 > tab 1: 하수저류시설
export const SewageReservoirInpColumn = {
columns: [
// 행정구역
{ name: 'ctpvNm', fieldName: 'ctpvNm', header: { text: '시도' }, footer: { text: '합계' }, editable: false, styleName: 'rg-cell-fixed' },
{ name: 'sggNm', fieldName: 'sggNm', header: { text: '시군구' }, styleName: 'rg-cell-fixed' },
// 기본 정보
{ name: 'fcltNm', fieldName: 'fcltNm', header: { text: '시설명' }, styleName: 'rg-cell-fixed' },
{ name: 'fcltPstnCn', fieldName: 'fcltPstnCn', header: { text: '위치' } },
{
name: 'oprtngStrtYmd',
fieldName: 'oprtngStrtYmd',
header: { text: '가동개시 년월일 yyyy-mm-dd' },
datetimeFormat: 'yyyy-MM-dd',
editor: {
type: 'date',
dropDownWhenClick: true,
datetimeFormat: 'yyyy-MM-dd',
},
},
{ name: 'planDesignFreqCnt', fieldName: 'planDesignFreqCnt', header: { text: '계획설계빈도' } },
// 설치목적 (O/X)
oxYnDropdownColumn({
name: "fldngPrvtnYn",
fieldName: "fldngPrvtnYn",
header: { text: "침수예방" },
}),
oxYnDropdownColumn({
name: "wqPlltnMtgtYn",
fieldName: "wqPlltnMtgtYn",
header: { text: "수질오염저감" },
}),
oxYnDropdownColumn({
name: "rtlztnUsgYn",
fieldName: "rtlztnUsgYn",
header: { text: "하수재이용용도" },
}),
// 시설 구조
dropdownColumn(
{
name: "fcltStrctCn",
fieldName: "fcltStrctCn",
header: { text: "시설구조" },
},
SEWAGE_RESERVOIR_FCLT_STRCT_VALUES,
),
// 집수구역면적
{ name: 'wtrStrgZoneArea', fieldName: 'wtrStrgZoneArea', header: { text: '집수구역면적(㎢)' }, footer: footerDecimal3, valueType: ValueType.NUMBER, dataFormat: '#,##0.000' },
// 시설용량
{ name: 'impdFcltCpct', fieldName: 'impdFcltCpct', header: { text: '시설용량(m³)' }, footer: footerDecimal1, valueType: ValueType.NUMBER, dataFormat: '#,##0.0' },
// 펌프시설 > 총양수량
{
name: 'grssPpqty',
fieldName: 'grssPpqty',
header: { text: '총양수량(m³/min)' },
editable: false,
footer: footerDecimal1,
valueType: ValueType.NUMBER,
dataFormat: '#,##0.0',
styleName: 'rg-cell-total',
computed: {
type: 'pumpGrossPpqty' as const,
pumpGroups: [
{
pumpCntField: 'pumpFcltN1PumpCnt',
rsrvPumpCntField: 'pumpFcltN1RsrvPumpCnt',
perPpqtyField: 'pumpFcltN1PerPpqty',
},
{
pumpCntField: 'pumpFcltN2PumpCnt',
rsrvPumpCntField: 'pumpFcltN2RsrvPumpCnt',
perPpqtyField: 'pumpFcltN2PerPpqty',
},
{
pumpCntField: 'pumpFcltN3PumpCnt',
rsrvPumpCntField: 'pumpFcltN3RsrvPumpCnt',
perPpqtyField: 'pumpFcltN3PerPpqty',
},
],
},
},
// 펌프시설 1
{ name: 'pumpFcltN1DmtrExpln', fieldName: 'pumpFcltN1DmtrExpln', header: { text: '구경(mm)' } },
{ name: 'pumpFcltN1PerPpqty', fieldName: 'pumpFcltN1PerPpqty', header: { text: '대당 양수량(m³/min·대)' }, footer: footerDecimal1, valueType: ValueType.NUMBER, dataFormat: '#,##0.0' },
{ name: 'pumpFcltN1PumpCnt', fieldName: 'pumpFcltN1PumpCnt', header: { text: '펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'pumpFcltN1RsrvPumpCnt', fieldName: 'pumpFcltN1RsrvPumpCnt', header: { text: '예비펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 펌프시설 2
{ name: 'pumpFcltN2DmtrExpln', fieldName: 'pumpFcltN2DmtrExpln', header: { text: '구경(mm)' } },
{ name: 'pumpFcltN2PerPpqty', fieldName: 'pumpFcltN2PerPpqty', header: { text: '대당 양수량(m³/min·대)' }, footer: footerDecimal1, valueType: ValueType.NUMBER, dataFormat: '#,##0.0' },
{ name: 'pumpFcltN2PumpCnt', fieldName: 'pumpFcltN2PumpCnt', header: { text: '펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'pumpFcltN2RsrvPumpCnt', fieldName: 'pumpFcltN2RsrvPumpCnt', header: { text: '예비펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 펌프시설 3
{ name: 'pumpFcltN3DmtrExpln', fieldName: 'pumpFcltN3DmtrExpln', header: { text: '구경(mm)' } },
{ name: 'pumpFcltN3PerPpqty', fieldName: 'pumpFcltN3PerPpqty', header: { text: '대당 양수량(m³/min·대)' }, footer: footerDecimal1, valueType: ValueType.NUMBER, dataFormat: '#,##0.0' },
{ name: 'pumpFcltN3PumpCnt', fieldName: 'pumpFcltN3PumpCnt', header: { text: '펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'pumpFcltN3RsrvPumpCnt', fieldName: 'pumpFcltN3RsrvPumpCnt', header: { text: '예비펌프대수' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 부대시설
dropdownColumn(
{
name: "prcsgFcltYn",
fieldName: "prcsgFcltYn",
header: { text: "전처리시설유무(유/무)" },
},
SEWAGE_RESERVOIR_YN_VALUES,
),
dropdownColumn(
{
name: "ddrztnEqpmYn",
fieldName: "ddrztnEqpmYn",
header: { text: "탈취설비유무(유/무)" },
},
SEWAGE_RESERVOIR_YN_VALUES,
),
dropdownColumn(
{
name: "oslfEtgtYn",
fieldName: "oslfEtgtYn",
header: { text: "자가발전유무(유/무)" },
},
SEWAGE_RESERVOIR_YN_VALUES,
),
// 배수 방식
dropdownColumn(
{
name: "mltvMthCn",
fieldName: "mltvMthCn",
header: { text: "배수방식(자연배수,강제배수)" },
},
SEWAGE_RESERVOIR_MLTV_MTH_VALUES,
),
// 저류 방식
dropdownColumn(
{
name: "impdMthCn",
fieldName: "impdMthCn",
header: { text: "저류방식(직렬,병렬)" },
},
SEWAGE_RESERVOIR_IMPD_MTH_VALUES,
),
// 저류수 처리방법
dropdownColumn(
{
name: "impdPrcsMthdCn",
fieldName: "impdPrcsMthdCn",
header: { text: "저류수처리방법(자체처리,연계처리)" },
},
SEWAGE_RESERVOIR_IMPD_PRCS_MTHD_VALUES,
),
// 방류 수역
{ name: 'dschgWtrsExpln', fieldName: 'dschgWtrsExpln', header: { text: '방류수역(또는 연계처리장명)' } },
// 최종처분량
{ name: 'prcptnLastDspsQnt', fieldName: 'prcptnLastDspsQnt', header: { text: '침사' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
{ name: 'ctmnLastDspsQnt', fieldName: 'ctmnLastDspsQnt', header: { text: '협잡물' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 최종처분방법
{ name: 'prcptnLastDspsMthdExpln', fieldName: 'prcptnLastDspsMthdExpln', header: { text: '침사' } },
{ name: 'ctmnLastDspsMthdExpln', fieldName: 'ctmnLastDspsMthdExpln', header: { text: '협잡물' } },
// 운영실적
{ name: 'oprtngDayCnt', fieldName: 'oprtngDayCnt', header: { text: '가동일수(일/년)' }, valueType: ValueType.NUMBER, dataFormat: '#,##0' }, // 3자리 수만 입력 가능
{ name: 'grssMltvQnt', fieldName: 'grssMltvQnt', header: { text: '총배수량(m³/년)' }, footer: footerInt, valueType: ValueType.NUMBER, dataFormat: '#,##0' },
// 비고
{ name: 'rmrk', fieldName: 'rmrk', header: { text: '비고' } },
// Hidden Columns : 시스템 관리를 위한 값
{ name: 'admdstCd', fieldName: 'admdstCd', header: { text: '행정구역코드' }, visible: false, },
{ name: 'fcltSn', fieldName: 'fcltSn', header: { text: '시설일련번호' }, visible: false, },
{ name: 'admdstNm', fieldName: 'admdstNm', header: { text: '행정구역명' }, visible: false },
],
columnLayout: [
{
name: 'adminArea',
hideChildHeaders: false,
header: { text: '행정구역' },
items: [
{ column: 'ctpvNm', footerUserSpans: [{ colspan: 3 }] },
'sggNm',
],
},
'fcltNm',
'fcltPstnCn',
'oprtngStrtYmd',
'planDesignFreqCnt',
{
name: 'installationPurpose',
hideChildHeaders: false,
header: { text: '설치목적(O,X로 표기, 중복체크가능)' },
items: [
'fldngPrvtnYn',
'wqPlltnMtgtYn',
'rtlztnUsgYn',
],
},
'fcltStrctCn',
'wtrStrgZoneArea',
'impdFcltCpct',
{
name: 'pumpSystem',
hideChildHeaders: false,
header: { text: '펌프시설' },
items: [
'grssPpqty',
{
name: 'pumpSystem1',
hideChildHeaders: false,
header: { text: '펌프시설1' },
items: [
'pumpFcltN1DmtrExpln',
'pumpFcltN1PerPpqty',
'pumpFcltN1PumpCnt',
'pumpFcltN1RsrvPumpCnt',
],
},
{
name: 'pumpSystem2',
hideChildHeaders: false,
header: { text: '펌프시설2' },
items: [
'pumpFcltN2DmtrExpln',
'pumpFcltN2PerPpqty',
'pumpFcltN2PumpCnt',
'pumpFcltN2RsrvPumpCnt',
],
},
{
name: 'pumpSystem3',
hideChildHeaders: false,
header: { text: '펌프시설3' },
items: [
'pumpFcltN3DmtrExpln',
'pumpFcltN3PerPpqty',
'pumpFcltN3PumpCnt',
'pumpFcltN3RsrvPumpCnt',
],
},
],
},
{
name: 'auxiliaryFacilities',
hideChildHeaders: false,
header: { text: '부대시설' },
items: [
'prcsgFcltYn',
'ddrztnEqpmYn',
'oslfEtgtYn',
],
},
'mltvMthCn',
'impdMthCn',
'impdPrcsMthdCn',
'dschgWtrsExpln',
{
name: 'finalDisposalAmount',
hideChildHeaders: false,
header: { text: '최종처분량(ton/년)' },
items: [
'prcptnLastDspsQnt',
'ctmnLastDspsQnt',
],
},
{
name: 'finalDisposalMethod',
hideChildHeaders: false,
header: { text: '최종처분방법' },
items: [
'prcptnLastDspsMthdExpln',
'ctmnLastDspsMthdExpln',
],
},
{
name: 'operationResults',
hideChildHeaders: false,
header: { text: '운영실적' },
items: [
'oprtngDayCnt',
'grssMltvQnt',
],
},
'rmrk',
'admdstCd',
'fcltSn',
'admdstNm'
],
rowStartNum: 3,
fixedColumns: 2,
tabKey: 'ST00040001',
tabLabel: '하수저류시설',
};