feat : 12. 하수 및 분뇨 관련 산업valueType,numberFormat 추가,컬럼명 변경

This commit is contained in:
2026-01-16 11:44:24 +09:00
parent e875700105
commit 292c17d682
3 changed files with 182 additions and 174 deletions
@@ -7,8 +7,9 @@ import ApproveButton from "@/components/button/ApproveButton";
import ReviewOpinionButton from "@/components/button/ReviewOpinionButton";
import ReturnButton from "@/components/button/ReturnButton";
import { SewageExcretaRelatedInfoListRvw } from "@/components/util/column/review/SewageExcretaRelatedColumnRvw";
import { SewageExcretaRelatedInfoListRvw } from "@/components/util/column/review/SewageExcretaRelatedRvwColumn";
// 하수도 통계 관리 12. 하수 및 분뇨 관련 산업
const SewageExcretaRelatedRvw = () => {
const [rowDataMap, setRowDataMap] = useState<Map<string, Record<string, string | number>[]>>(new Map());
@@ -35,12 +36,14 @@ const SewageExcretaRelatedRvw = () => {
return (
<>
<SearchForm userMenual={true} fctName={true} />
<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>
<TabDataGrid columnInfo={SewageExcretaRelatedInfoListRvw} isExcelImport={false} rowDataMap={rowDataMap} setRowDataMap={setRowDataMap} />
</>
);
@@ -1,168 +0,0 @@
const rawExcretaRelatedList = [
{
tabKey: 'a',
tabLabel: '공공기관 하수분야',
rowStartNum: 2,
fixedColumns: 2,
columns: [
/* 1. 행정 및 조직 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'OCGNZ', fieldName: 'OCGNZ', header: { text: '직제' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
/* 2. 인력 총계 및 행정직 */
{ name: 'TOT_WTR_QRM', fieldName: 'TOT_WTR_QRM', header: { text: '직원총수' } },
{ name: 'ADMINIST_JSSFC', fieldName: 'ADMINIST_JSSFC', header: { text: '행정직' } },
/* 3. 기술직 상세 (단위: 명) */
{ name: 'TCHNLGY_JSSFC_SM', fieldName: 'TCHNLGY_JSSFC_SM', header: { text: '계' } },
{ name: 'ENGRK_JSSFC', fieldName: 'ENGRK_JSSFC', header: { text: '토목' } },
{ name: 'MCHN_JSSFC', fieldName: 'MCHN_JSSFC', header: { text: '기계' } },
{ name: 'ELCTY_JSSFC', fieldName: 'ELCTY_JSSFC', header: { text: '전기' } },
{ name: 'CHMSTRY_JSSFC', fieldName: 'CHMSTRY_JSSFC', header: { text: '화공' } },
{ name: 'ENVRN_JSSFC', fieldName: 'ENVRN_JSSFC', header: { text: '환경' } },
{ name: 'TCHNLGY_ETC', fieldName: 'TCHNLGY_ETC', header: { text: '기타' } },
/* 4. 기타 및 비고 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'OCGNZ',
'YR_GBN',
'TOT_WTR_QRM',
'ADMINIST_JSSFC',
{
name: 'techJobGroup',
header: { text: '기술직' },
items: [
'TCHNLGY_JSSFC_SM', 'ENGRK_JSSFC', 'MCHN_JSSFC', 'ELCTY_JSSFC', 'CHMSTRY_JSSFC', 'ENVRN_JSSFC', 'TCHNLGY_ETC'
]
},
'RMK',
]
},
{
tabKey: 'b',
tabLabel: '공공기관 분뇨분야',
rowStartNum: 2,
fixedColumns: 1,
columns: [
/* 1. 행정 및 조직 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'OCGNZ', fieldName: 'OCGNZ', header: { text: '직제' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
/* 2. 인력 총계 및 행정직 */
{ name: 'TOT_WTR_QRM', fieldName: 'TOT_WTR_QRM', header: { text: '직원총수' } },
{ name: 'ADMINIST_JSSFC', fieldName: 'ADMINIST_JSSFC', header: { text: '행정직' } },
/* 3. 기술직 상세 (단위: 명) */
{ name: 'TCHNLGY_JSSFC_SM', fieldName: 'TCHNLGY_JSSFC_SM', header: { text: '계' } },
{ name: 'ENGRK_JSSFC', fieldName: 'ENGRK_JSSFC', header: { text: '토목' } },
{ name: 'MCHN_JSSFC', fieldName: 'MCHN_JSSFC', header: { text: '기계' } },
{ name: 'ELCTY_JSSFC', fieldName: 'ELCTY_JSSFC', header: { text: '전기' } },
{ name: 'CHMSTRY_JSSFC', fieldName: 'CHMSTRY_JSSFC', header: { text: '화공' } },
{ name: 'ENVRN_JSSFC', fieldName: 'ENVRN_JSSFC', header: { text: '환경' } },
{ name: 'TCHNLGY_ETC', fieldName: 'TCHNLGY_ETC', header: { text: '기타' } },
/* 4. 기타 및 비고 */
{ name: 'ETC', fieldName: 'ETC', header: { text: '기타' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'OCGNZ', 'YR_GBN', 'TOT_WTR_QRM', 'ADMINIST_JSSFC',
{
name: 'techJobGroup',
header: { text: '기술직' },
items: [
'TCHNLGY_JSSFC_SM', 'ENGRK_JSSFC', 'MCHN_JSSFC', 'ELCTY_JSSFC', 'CHMSTRY_JSSFC', 'ENVRN_JSSFC', 'TCHNLGY_ETC'
]
},
'ETC', 'RMK',
]
},
{
tabKey: 'c',
tabLabel: '분뇨수집·운반업',
rowStartNum: 2,
fixedColumns: 2,
columns: [
/* 1. 행정 및 기본 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
/* 2. 업체 및 인력 현황 */
{ name: 'ECSCS_SM', fieldName: 'ECSCS_SM', header: { text: '업체수(개소)' } },
{ name: 'ECSCS_BSMN', fieldName: 'ECSCS_BSMN', header: { text: '종사인원(명)' } },
/* 3. 시설(차량) 확보현황 (단위: 대수) */
{ name: 'VHCLE_SM', fieldName: 'VHCLE_SM', header: { text: '계' } },
{ name: 'THREE_BELOW', fieldName: 'THREE_BELOW', header: { text: '3톤이하' } },
{ name: 'FOUR_BELOW', fieldName: 'FOUR_BELOW', header: { text: '4.5톤이하' } },
{ name: 'EIGHT_BELOW', fieldName: 'EIGHT_BELOW', header: { text: '8톤이하' } },
{ name: 'ETC', fieldName: 'ETC', header: { text: '기타' } },
/* 4. 실적 및 비고 */
{ name: 'COLCT_TRSP_ACMSLT', fieldName: 'COLCT_TRSP_ACMSLT', header: { text: '수집·운반실적\n(㎥/년)' } },
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'YR_GBN', 'ECSCS_SM', 'ECSCS_BSMN',
{
name: 'vehicleGroup',
header: { text: '시설(차량) 확보현황(대수)' },
items: ['VHCLE_SM', 'THREE_BELOW', 'FOUR_BELOW', 'EIGHT_BELOW', 'ETC']
},
'COLCT_TRSP_ACMSLT', 'RMK'
]
},
{
tabKey: 'd',
tabLabel: '개인하수처리관련업',
rowStartNum: 2,
fixedColumns: 2,
columns: [
/* 1. 행정 및 기본 정보 (Band: Left) */
{ name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
{ name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
/* 2. 개인하수처리시설 설계ㆍ시공업 */
{ name: 'CNSTRCT_ENTRPS', fieldName: 'CNSTRCT_ENTRPS', header: { text: '업소수' } },
{ name: 'CNSTRCT_BSMN', fieldName: 'CNSTRCT_BSMN', header: { text: '종사인원(명)' } },
/* 3. 개인하수처리시설 제조업 */
{ name: 'MNFCTUR_ENTRPS', fieldName: 'MNFCTUR_ENTRPS', header: { text: '업소수' } },
{ name: 'MNFCTUR_BSMN', fieldName: 'MNFCTUR_BSMN', header: { text: '종사인원(명)' } },
/* 4. 개인하수처리시설 관리업 */
{ name: 'MGMT_ENTRPS', fieldName: 'MGMT_ENTRPS', header: { text: '업소수' } },
{ name: 'MGMT_BSMN', fieldName: 'MGMT_BSMN', header: { text: '종사인원(명)' } },
/* 5. 기타 및 비고 */
{ name: 'RMK', fieldName: 'RMK', header: { text: '비고' } }
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['SIDO', 'GUGUN'] },
'YR_GBN',
{ name: 'constructGroup', header: { text: '개인하수처리시설 설계ㆍ시공업' }, items: ['CNSTRCT_ENTRPS', 'CNSTRCT_BSMN'] },
{ name: 'manufactureGroup', header: { text: '개인하수처리시설 제조업' }, items: ['MNFCTUR_ENTRPS', 'MNFCTUR_BSMN'] },
{ name: 'managementGroup', header: { text: '개인하수처리시설 관리업' }, items: ['MGMT_ENTRPS', 'MGMT_BSMN'] },
'RMK'
]
}
];
export const SewageExcretaRelatedInfoListRvw = rawExcretaRelatedList.map(tab => ({
...tab,
columns: tab.columns.map(col => ({
...col,
editable: false
}))
}));
@@ -0,0 +1,173 @@
import { ValueType } from "realgrid";
// 하수도 통계 관리 12. 하수 및 분뇨 관련 산업
const rawExcretaRelatedList = [
{
tabKey: 'a',
tabLabel: '공공기관 하수분야',
rowStartNum: 2,
fixedColumns: 2,
columns: [
/* 1. 행정 및 조직 정보 */
{ name: 'SIDO', fieldName: '시도', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: '시군구', header: { text: '시군구' } },
{ name: 'OCGNZ', fieldName: '직제', header: { text: '직제' } },
{ name: 'YR_GBN', fieldName: '구분', header: { text: '구분' } },
/* 2. 인력 총계 및 행정직 */
{ name: 'TOT_WTR_QRM', fieldName: '직원총수', header: { text: '직원총수' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'ADMINIST_JSSFC', fieldName: '행정직', header: { text: '행정직' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
/* 3. 기술직 상세 (단위: 명) */
{ name: 'TCHNLGY_JSSFC_SM', fieldName: '계(기술직)', header: { text: '계' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'ENGRK_JSSFC', fieldName: '토목', header: { text: '토목' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'MCHN_JSSFC', fieldName: '기계', header: { text: '기계' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'ELCTY_JSSFC', fieldName: '전기', header: { text: '전기' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'CHMSTRY_JSSFC', fieldName: '화공', header: { text: '화공' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'ENVRN_JSSFC', fieldName: '환경', header: { text: '환경' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'TCHNLGY_ETC', fieldName: '기타(기술직)', header: { text: '기타' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
/* 4. 기타 및 비고 */
{ name: 'ETC', fieldName: '기타', header: { text: '기타' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'RMK', fieldName: '비고', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['시도', '시군구'] },
'직제',
'구분',
'직원총수',
'행정직',
{
name: 'techJobGroup',
header: { text: '기술직' },
items: [
'계(기술직)', '토목', '기계', '전기', '화공', '환경', '기타(기술직)'
]
},
'기타',
'비고',
]
},
{
tabKey: 'b',
tabLabel: '공공기관 분뇨분야',
rowStartNum: 2,
fixedColumns: 1,
columns: [
/* 1. 행정 및 조직 정보 */
{ name: 'SIDO', fieldName: '시도', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: '시군구', header: { text: '시군구' } },
{ name: 'OCGNZ', fieldName: '직제', header: { text: '직제' } },
{ name: 'YR_GBN', fieldName: '구분', header: { text: '구분' } },
/* 2. 인력 총계 및 행정직 */
{ name: 'TOT_WTR_QRM', fieldName: '직원총수', header: { text: '직원총수' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'ADMINIST_JSSFC', fieldName: '행정직', header: { text: '행정직' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
/* 3. 기술직 상세 (단위: 명) */
{ name: 'TCHNLGY_JSSFC_SM', fieldName: '계(기술직)', header: { text: '계' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'ENGRK_JSSFC', fieldName: '토목', header: { text: '토목' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'MCHN_JSSFC', fieldName: '기계', header: { text: '기계' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'ELCTY_JSSFC', fieldName: '전기', header: { text: '전기' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'CHMSTRY_JSSFC', fieldName: '화공', header: { text: '화공' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'ENVRN_JSSFC', fieldName: '환경', header: { text: '환경' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'TCHNLGY_ETC', fieldName: '기타(기술직)', header: { text: '기타' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
/* 4. 기타 및 비고 */
{ name: 'ETC', fieldName: '기타', header: { text: '기타' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'RMK', fieldName: '비고', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['시도', '시군구'] },
'직제', '구분', '직원총수', '행정직',
{
name: 'techJobGroup',
header: { text: '기술직' },
items: [
'계(기술직)', '토목', '기계', '전기', '화공', '환경', '기타(기술직)'
]
},
'기타', '비고',
]
},
{
tabKey: 'c',
tabLabel: '분뇨수집·운반업',
rowStartNum: 2,
fixedColumns: 2,
columns: [
/* 1. 행정 및 기본 정보 */
{ name: 'SIDO', fieldName: '시도', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: '시군구', header: { text: '시군구' } },
{ name: 'YR_GBN', fieldName: '구분', header: { text: '구분' } },
/* 2. 업체 및 인력 현황 */
{ name: 'ECSCS_SM', fieldName: '업체수(개소)', header: { text: '업체수(개소)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'ECSCS_BSMN', fieldName: '종사인원(명)', header: { text: '종사인원(명)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
/* 3. 시설(차량) 확보현황 (단위: 대수) */
{ name: 'VHCLE_SM', fieldName: '계(차량)', header: { text: '계' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'THREE_BELOW', fieldName: '3톤이하', header: { text: '3톤이하' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'FOUR_BELOW', fieldName: '4.5톤이하', header: { text: '4.5톤이하' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'EIGHT_BELOW', fieldName: '8톤이하', header: { text: '8톤이하' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'ETC', fieldName: '기타(차량)', header: { text: '기타' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
/* 4. 실적 및 비고 */
{ name: 'COLCT_TRSP_ACMSLT', fieldName: '수집·운반실적(㎥/년)', header: { text: '수집·운반실적\n(㎥/년)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'RMK', fieldName: '비고', header: { text: '비고' } },
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['시도', '시군구'] },
'구분', '업체수(개소)', '종사인원(명)',
{
name: 'vehicleGroup',
header: { text: '시설(차량) 확보현황(대수)' },
items: ['계(차량)', '3톤이하', '4.5톤이하', '8톤이하', '기타(차량)']
},
'수집·운반실적(㎥/년)', '비고'
]
},
{
tabKey: 'd',
tabLabel: '개인하수처리관련업',
rowStartNum: 2,
fixedColumns: 2,
columns: [
/* 1. 행정 및 기본 정보 */
{ name: 'SIDO', fieldName: '시도', header: { text: '시도' } },
{ name: 'GUGUN', fieldName: '시군구', header: { text: '시군구' } },
{ name: 'YR_GBN', fieldName: '구분', header: { text: '구분' } },
/* 2. 개인하수처리시설 설계ㆍ시공업 */
{ name: 'CNSTRCT_ENTRPS', fieldName: '업소수(시공업)', header: { text: '업소수' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'CNSTRCT_BSMN', fieldName: '종사인원(명)_시공업', header: { text: '종사인원(명)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
/* 3. 개인하수처리시설 제조업 */
{ name: 'MNFCTUR_ENTRPS', fieldName: '업소수(제조업)', header: { text: '업소수' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'MNFCTUR_BSMN', fieldName: '종사인원(명)_제조업', header: { text: '종사인원(명)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
/* 4. 개인하수처리시설 관리업 */
{ name: 'MGMT_ENTRPS', fieldName: '업소수(관리업)', header: { text: '업소수' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
{ name: 'MGMT_BSMN', fieldName: '종사인원(명)_관리업', header: { text: '종사인원(명)' }, valueType: ValueType.NUMBER, numberFormat: '#,##0' },
/* 5. 기타 및 비고 */
{ name: 'RMK', fieldName: '비고', header: { text: '비고' } }
],
columnLayout: [
{ name: 'addrGroup', header: { text: '행정구역' }, items: ['시도', '시군구'] },
'구분',
{ name: 'constructGroup', header: { text: '개인하수처리시설 설계ㆍ시공업' }, items: ['업소수(시공업)', '종사인원(명)_시공업'] },
{ name: 'manufactureGroup', header: { text: '개인하수처리시설 제조업' }, items: ['업소수(제조업)', '종사인원(명)_제조업'] },
{ name: 'managementGroup', header: { text: '개인하수처리시설 관리업' }, items: ['업소수(관리업)', '종사인원(명)_관리업'] },
'비고'
]
}
];
export const SewageExcretaRelatedInfoListRvw = rawExcretaRelatedList.map(tab => ({
...tab,
columns: tab.columns.map(col => ({
...col,
editable: false
}))
}));