diff --git a/apps/sn/app/(map-layout)/map/searchModal/basicTab.tsx b/apps/sn/app/(map-layout)/map/searchModal/basicTab.tsx index 5e747b3cb..9bcb6e2c8 100644 --- a/apps/sn/app/(map-layout)/map/searchModal/basicTab.tsx +++ b/apps/sn/app/(map-layout)/map/searchModal/basicTab.tsx @@ -4,6 +4,11 @@ import { SidoSigunguSelectBox } from '@/components/ui/SidoSigunguSelectBox'; import { YearRangeSelectBox } from '@/components/ui/YearRangeSelectBox'; import { SelectBox } from '@common/business_components/ui'; import { Button, Input, Label } from '@common/components'; +import SwagePpl from './swagePpl'; +import SwagePrcsFclt from './swagePrcsFclt'; +import SwagePrcsZone from './swagePrcsZone'; +import SwageMhl from './swageMhl'; +import SwagePmstn from './swagePmstn'; // 기본정보 '구분' 선택 목록 export const BASIC_TYPES = [ @@ -92,346 +97,83 @@ const BasicTab: React.FC = ({ {/* 분기처리: 하수관로 */} {basicType === "tb_ms_swage_ppl" && ( -
-
- {/* 설치년도 */} - - setYearFilter({ - ...yearFilter, - start: range.start, - end: range.end, - }) - } - startLabel="설치년도" - endLabel="" - /> - {/* 용도 */} - { - setVar1(String(val)); - }} - selectContentClass="z-[101]" - /> - {/* 재질 */} - { - setVar2(String(val)); - }} - selectContentClass="z-[101]" - /> - {/* 관경 */} - - { - // 숫자만 입력 허용 - const val = e.target.value.replace(/[^0-9]/g, ""); - setVar1(val); - }} - /> - ~ - { - // 숫자만 입력 허용 - const val = e.target.value.replace(/[^0-9]/g, ""); - setEnd1(val); - }} - /> - {/* 연장 */} - - { - // 숫자만 입력 허용 - const val = e.target.value.replace(/[^0-9]/g, ""); - setStart2(val); - }} - /> - ~ - { - // 숫자만 입력 허용 - const val = e.target.value.replace(/[^0-9]/g, ""); - setEnd2(val); - }} - /> - {/* 조회 버튼 */} -
- -
-
-
+ )} {/* 분기처리: 하수처리시설 */} {basicType === "tb_il_swage_prcs_fclt" && ( -
- {/* 가동개시일자 */} -
- - setYearFilter({ - ...yearFilter, - start: range.start, - end: range.end, - }) - } - startLabel="가동개시일자" - endLabel="" - /> - {/* 시설용량 */} - - { - // 숫자만 입력 허용 - const val = e.target.value.replace(/[^0-9]/g, ""); - setStart1(val); - }} - /> - ~ - { - // 숫자만 입력 허용 - const val = e.target.value.replace(/[^0-9]/g, ""); - setEnd1(val); - }} - /> - {/* 처리구역 면적 */} - - { - // 숫자만 입력 허용 - const val = e.target.value.replace(/[^0-9]/g, ""); - setStart2(val); - }} - /> - ~ - { - // 숫자만 입력 허용 - const val = e.target.value.replace(/[^0-9]/g, ""); - setEnd2(val); - }} - /> - {/* 하수처리시설명 */} - - { - setVar1(e.target.value); - }} - /> - {/* 조회 버튼 */} -
- -
-
-
+ )} {/* 분기처리: 하수처리구역 */} {basicType === "tb_ms_swage_prcs_zone" && ( -
-
- { - setCity(sidoId); - setSgg(0); - }} - onSigunguChange={setSgg} - /> - - { - setVar1(e.target.value); - }} - /> - - { - setVar2(e.target.value); - }} - /> - {/* 조회 버튼 */} -
- -
-
-
+ )} {/* 분기처리: 하수맨홀 */} {basicType === "tb_ms_swage_mhl" && ( -
-
- {/* 설치년도 */} - - setYearFilter({ - ...yearFilter, - start: range.start, - end: range.end, - }) - } - startLabel="설치년도" - endLabel="" - /> - {/* 용도 */} - { - setVar1(String(val)); - }} - selectContentClass="z-[101]" - /> - {/* 하수맨홀 구경 */} - - { - // 숫자만 입력 허용 - const val = e.target.value.replace(/[^0-9]/g, ""); - setStart1(val); - }} - /> - ~ - { - // 숫자만 입력 허용 - const val = e.target.value.replace(/[^0-9]/g, ""); - setEnd1(val); - }} - /> - {/* 조회 버튼 */} -
- -
-
-
+ )} {/* 분기처리: 하수펌프장 */} {basicType === "tb_ms_swage_pmstn" && ( -
- {/* 설치년도 */} -
- setYearFilter({ ...yearFilter, start: range.start, end: range.end })} - startLabel="설치년도" - endLabel="" - /> - {/* 일일처리용량 - 오수맨홀 */} - - { - // 숫자만 입력 허용 - const val = e.target.value.replace(/[^0-9]/g, ""); - setStart1(val); - }} - /> - ~ - { - // 숫자만 입력 허용 - const val = e.target.value.replace(/[^0-9]/g, ""); - setEnd1(val); - }} - /> - {/* 양수능력 - 우수맨홀 */} - - { - // 숫자만 입력 허용 - const val = e.target.value.replace(/[^0-9]/g, ""); - setStart2(val); - }} - /> - ~ - { - // 숫자만 입력 허용 - const val = e.target.value.replace(/[^0-9]/g, ""); - setEnd2(val); - }} - /> - {/* 조회 버튼 */} -
- -
-
-
+ )} - {/* 분기처리: 우수토실? 토구? */} + {/* 분기처리: 우수토실 */} {basicType === "tb_ms_stofcbr" && (
{/* 설치년도 */} diff --git a/apps/sn/app/(map-layout)/map/searchModal/searchModal.tsx b/apps/sn/app/(map-layout)/map/searchModal/searchModal.tsx index 67fad2a41..426b606aa 100644 --- a/apps/sn/app/(map-layout)/map/searchModal/searchModal.tsx +++ b/apps/sn/app/(map-layout)/map/searchModal/searchModal.tsx @@ -1,19 +1,16 @@ -import React, { useEffect, useState, useMemo } from 'react'; -import axios from 'axios'; -import { UiModal, UiTable, SelectBox, UITab } from '@common/business_components/ui'; -import { Button, Input, Label } from '@common/components'; -import { YearRangeSelectBox } from '@/components/ui/YearRangeSelectBox'; -import { SidoSigunguSelectBox } from '@/components/ui/SidoSigunguSelectBox'; -import { MsSwagePplCol2, SwtrmtFcltCol2, SwtrmtPrcsZoneCol2, MsSwageMhlCol2, ExclnSewagePumpCol2, stofcbrCol2 } from '../components/common/table'; import LoadingOverlay from '@/components/ui/LoadingBar'; +import { UiModal, UITab, UiTable } from '@common/business_components/ui'; +import axios from 'axios'; +import React, { useEffect, useMemo, useState } from 'react'; +import { ExclnSewagePumpCol2, MsSwageMhlCol2, MsSwagePplCol2, stofcbrCol2, SwtrmtFcltCol2, SwtrmtPrcsZoneCol2 } from '../components/common/table'; //import { useDcTree, flattenFolders, useSggCd, useCityCd } from './components/searchModalReportApi'; -import { useDcTree, flattenFolders, useSggCd, useCityCd, addFileName, getFileDownload } from '../components/searchModalReportApi'; -import { useCityCdStore, type SelectDataType } from '../commonStore'; -import { MS_SWAGE_PPL_USE_CODES, MS_SWAGE_PPL_CODES, MS_SWAGE_MHL_USE_CODES } from '../components/common/table'; +import { type SelectDataType } from '../commonStore'; +import { MS_SWAGE_PPL_CODES, MS_SWAGE_PPL_USE_CODES } from '../components/common/table'; +import { addFileName, flattenFolders, getFileDownload, useCityCd, useDcTree, useSggCd } from '../components/searchModalReportApi'; // import { useBizByFcltStore } from "../../../store/StoreProvider"; import { getData } from "@/components/lib/api"; import BasicTab, { BASIC_TYPES } from './basicTab'; -import OperationTab, { WORK_TYPES, BIZ_SE_CD, BIZ_TY_CD, BIZ_TY_CD_SELECT_ARRAY, operationTableHeadlist, operationMaintenanceTableHeadlist, operationCleaningTableHeadlist, operationInspectionTableHeadlist } from './operationTab'; +import OperationTab, { BIZ_TY_CD, operationCleaningTableHeadlist, operationInspectionTableHeadlist, operationMaintenanceTableHeadlist, operationTableHeadlist, WORK_TYPES } from './operationTab'; import ReportTab, { reportTableHeadlist } from './reportTab'; const API_URL = `${process.env.NEXT_PUBLIC_SEWERAGE_API_URL}`; diff --git a/apps/sn/app/(map-layout)/map/searchModal/stofcbr.tsx b/apps/sn/app/(map-layout)/map/searchModal/stofcbr.tsx new file mode 100644 index 000000000..700d60cf0 --- /dev/null +++ b/apps/sn/app/(map-layout)/map/searchModal/stofcbr.tsx @@ -0,0 +1,38 @@ +// 우수토실 + +import { YearRangeSelectBox } from '@/components/ui/YearRangeSelectBox'; +import { Button } from '@common/components'; +import React from 'react'; + +interface StofcbrProps { + yearFilter: { start: string; end: string }; + setYearFilter: (filter: { start: string; end: string }) => void; + handleSearch: () => void; +} + +const Stofcbr: React.FC = ({ + yearFilter, + setYearFilter, + handleSearch, +}) => { + return ( +
+ {/* 설치년도 */} +
+ setYearFilter({ ...yearFilter, start: range.start, end: range.end })} + startLabel="설치년도" + endLabel="" + /> + {/* 조회 버튼 */} +
+ +
+
+
+ ); +}; + +export default React.memo(Stofcbr); \ No newline at end of file diff --git a/apps/sn/app/(map-layout)/map/searchModal/swageMhl.tsx b/apps/sn/app/(map-layout)/map/searchModal/swageMhl.tsx new file mode 100644 index 000000000..0b9ade4b0 --- /dev/null +++ b/apps/sn/app/(map-layout)/map/searchModal/swageMhl.tsx @@ -0,0 +1,94 @@ +// 하수맨홀 + +import { YearRangeSelectBox } from '@/components/ui/YearRangeSelectBox'; +import { Button, Input, Label } from '@common/components'; +import React from 'react'; +import { MS_SWAGE_MHL_USE_CODES } from '../components/common/table'; +import { SelectBox } from '@common/business_components/ui'; + + +interface SwageMhlProps { + var1: string; + start1: string; + end1: string; + yearFilter: { start: string; end: string }; + setVar1: (value: string) => void; + setStart1: (value: string) => void; + setEnd1: (value: string) => void; + setYearFilter: (filter: { start: string; end: string }) => void; + handleSearch: () => void; +} + +const SwageMhl: React.FC = ({ + var1, + start1, + end1, + yearFilter, + setVar1, + setStart1, + setEnd1, + setYearFilter, + handleSearch, +}) => { + return ( +
+
+ {/* 설치년도 */} + + setYearFilter({ + ...yearFilter, + start: range.start, + end: range.end, + }) + } + startLabel="설치년도" + endLabel="" + /> + {/* 용도 */} + { + setVar1(String(val)); + }} + selectContentClass="z-[101]" + /> + {/* 하수맨홀 구경 */} + + { + // 숫자만 입력 허용 + const val = e.target.value.replace(/[^0-9]/g, ""); + setStart1(val); + }} + /> + ~ + { + // 숫자만 입력 허용 + const val = e.target.value.replace(/[^0-9]/g, ""); + setEnd1(val); + }} + /> + {/* 조회 버튼 */} +
+ +
+
+
+ ); +}; + +export default React.memo(SwageMhl); \ No newline at end of file diff --git a/apps/sn/app/(map-layout)/map/searchModal/swagePmstn.tsx b/apps/sn/app/(map-layout)/map/searchModal/swagePmstn.tsx new file mode 100644 index 000000000..ff023b996 --- /dev/null +++ b/apps/sn/app/(map-layout)/map/searchModal/swagePmstn.tsx @@ -0,0 +1,102 @@ +// 하수펌프장 + +import { YearRangeSelectBox } from '@/components/ui/YearRangeSelectBox'; +import { Button, Input, Label } from '@common/components'; +import React from 'react'; + +interface SwagePmstnProps { + start1: string; + start2: string; + end1: string; + end2: string; + yearFilter: { start: string; end: string }; + setStart1: (value: string) => void; + setStart2: (value: string) => void; + setEnd1: (value: string) => void; + setEnd2: (value: string) => void; + setYearFilter: (filter: { start: string; end: string }) => void; + handleSearch: () => void; +} + +const SwagePmstn: React.FC = ({ + start1, + start2, + end1, + end2, + yearFilter, + setStart1, + setStart2, + setEnd1, + setEnd2, + setYearFilter, + handleSearch, +}) => { + return ( +
+
+ {/* 설치년도 */} + setYearFilter({ ...yearFilter, start: range.start, end: range.end })} + startLabel="설치년도" + endLabel="" + /> + {/* 일일처리용량 - 오수맨홀 */} + + { + // 숫자만 입력 허용 + const val = e.target.value.replace(/[^0-9]/g, ""); + setStart1(val); + }} + /> + ~ + { + // 숫자만 입력 허용 + const val = e.target.value.replace(/[^0-9]/g, ""); + setEnd1(val); + }} + /> + {/* 양수능력 - 우수맨홀 */} + + { + // 숫자만 입력 허용 + const val = e.target.value.replace(/[^0-9]/g, ""); + setStart2(val); + }} + /> + ~ + { + // 숫자만 입력 허용 + const val = e.target.value.replace(/[^0-9]/g, ""); + setEnd2(val); + }} + /> + {/* 조회 버튼 */} +
+ +
+
+
+ ); +}; + +export default React.memo(SwagePmstn); \ No newline at end of file diff --git a/apps/sn/app/(map-layout)/map/searchModal/swagePpl.tsx b/apps/sn/app/(map-layout)/map/searchModal/swagePpl.tsx new file mode 100644 index 000000000..7f9c2f4d6 --- /dev/null +++ b/apps/sn/app/(map-layout)/map/searchModal/swagePpl.tsx @@ -0,0 +1,132 @@ +// 하수관로 + +import { YearRangeSelectBox } from '@/components/ui/YearRangeSelectBox'; +import { SelectBox } from '@common/business_components/ui'; +import { Button, Input, Label } from '@common/components'; +import React from 'react'; +import { MS_SWAGE_PPL_CODES, MS_SWAGE_PPL_USE_CODES } from '../components/common/table'; + +interface SwagePplProps { + var1: string; + var2: string; + start1: string; + end1: string; + yearFilter: { start: string; end: string }; + setVar1: (value: string) => void; + setVar2: (value: string) => void; + setStart1: (value: string) => void; + setEnd1: (value: string) => void; + setYearFilter: (filter: { start: string; end: string }) => void; + handleSearch: () => void; +} + +const SwagePpl: React.FC = ({ + var1, + var2, + start1, + end1, + yearFilter, + setVar1, + setVar2, + setStart1, + setEnd1, + setYearFilter, + handleSearch, +}) => { + return ( +
+
+ {/* 설치년도 */} + + setYearFilter({ + ...yearFilter, + start: range.start, + end: range.end, + }) + } + startLabel="설치년도" + endLabel="" + /> + {/* 용도 */} + { + setVar1(String(val)); + }} + selectContentClass="z-[101]" + /> + {/* 재질 */} + { + setVar2(String(val)); + }} + selectContentClass="z-[101]" + /> + {/* 관경 */} + + { + // 숫자만 입력 허용 + const val = e.target.value.replace(/[^0-9]/g, ""); + setVar1(val); + }} + /> + ~ + { + // 숫자만 입력 허용 + const val = e.target.value.replace(/[^0-9]/g, ""); + setEnd1(val); + }} + /> + {/* 연장 */} + + { + // 숫자만 입력 허용 + const val = e.target.value.replace(/[^0-9]/g, ""); + setStart1(val); + }} + /> + ~ + { + // 숫자만 입력 허용 + const val = e.target.value.replace(/[^0-9]/g, ""); + setEnd1(val); + }} + /> + {/* 조회 버튼 */} +
+ +
+
+
+ ); +}; + +export default React.memo(SwagePpl); \ No newline at end of file diff --git a/apps/sn/app/(map-layout)/map/searchModal/swagePrcsFclt.tsx b/apps/sn/app/(map-layout)/map/searchModal/swagePrcsFclt.tsx new file mode 100644 index 000000000..0ea3ea53a --- /dev/null +++ b/apps/sn/app/(map-layout)/map/searchModal/swagePrcsFclt.tsx @@ -0,0 +1,121 @@ +// 하수처리시설 + +import { YearRangeSelectBox } from '@/components/ui/YearRangeSelectBox'; +import { Button, Input, Label } from '@common/components'; +import React from 'react'; + +interface SwagePrcsFcltProps { + var1: string; + start1: string; + start2: string; + end1: string; + end2: string; + yearFilter: { start: string; end: string }; + setVar1: (value: string) => void; + setStart1: (value: string) => void; + setStart2: (value: string) => void; + setEnd1: (value: string) => void; + setEnd2: (value: string) => void; + setYearFilter: (filter: { start: string; end: string }) => void; + handleSearch: () => void; +} + +const SwagePrcsFclt: React.FC = ({ + var1, + start1, + start2, + end1, + end2, + yearFilter, + setVar1, + setStart1, + setStart2, + setEnd1, + setEnd2, + setYearFilter, + handleSearch, +}) => { + return ( +
+ {/* 가동개시일자 */} +
+ + + setYearFilter({ + ...yearFilter, + start: range.start, + end: range.end, + }) + } + startLabel="" + endLabel="" + /> + {/* 시설용량 */} + + { + // 숫자만 입력 허용 + const val = e.target.value.replace(/[^0-9]/g, ""); + setStart1(val); + }} + /> + ~ + { + // 숫자만 입력 허용 + const val = e.target.value.replace(/[^0-9]/g, ""); + setEnd1(val); + }} + /> + {/* 처리구역 면적 */} + + { + // 숫자만 입력 허용 + const val = e.target.value.replace(/[^0-9]/g, ""); + setStart2(val); + }} + /> + ~ + { + // 숫자만 입력 허용 + const val = e.target.value.replace(/[^0-9]/g, ""); + setEnd2(val); + }} + /> + {/* 하수처리시설명 */} + + { + setVar1(e.target.value); + }} + /> + {/* 조회 버튼 */} +
+ +
+
+
+ ); +}; + +export default React.memo(SwagePrcsFclt); \ No newline at end of file diff --git a/apps/sn/app/(map-layout)/map/searchModal/swagePrcsZone.tsx b/apps/sn/app/(map-layout)/map/searchModal/swagePrcsZone.tsx new file mode 100644 index 000000000..98bc76b39 --- /dev/null +++ b/apps/sn/app/(map-layout)/map/searchModal/swagePrcsZone.tsx @@ -0,0 +1,69 @@ +// 하수처리구역 + +import { SidoSigunguSelectBox } from '@/components/ui/SidoSigunguSelectBox'; +import { Button, Input, Label } from '@common/components'; +import React from 'react'; + +interface swagePrcsZoneProps { + var1: string; + var2: string; + city: number; + sgg: number; + setVar1: (value: string) => void; + setVar2: (value: string) => void; + setCity: (value: number) => void; + setSgg: (value: number) => void; + handleSearch: () => void; +} + +const swagePrcsZone: React.FC = ({ + var1, + var2, + city, + sgg, + setVar1, + setVar2, + setCity, + setSgg, + handleSearch, +}) => { + return ( +
+
+ { + setCity(sidoId); + setSgg(0); + }} + onSigunguChange={setSgg} + /> + + { + setVar1(e.target.value); + }} + /> + + { + setVar2(e.target.value); + }} + /> + {/* 조회 버튼 */} +
+ +
+
+
+ ); +}; + +export default React.memo(swagePrcsZone); \ No newline at end of file