diff --git a/apps/sn/app/(with-base-layout)/ii/rdii/page.tsx b/apps/sn/app/(with-base-layout)/ii/rdii/page.tsx
index 491d2ae9d..a8b0a2b84 100644
--- a/apps/sn/app/(with-base-layout)/ii/rdii/page.tsx
+++ b/apps/sn/app/(with-base-layout)/ii/rdii/page.tsx
@@ -396,12 +396,12 @@ export default function RTKForm() {
ctpvCd={ctpvCd}
sggCd={sggCd}
sggName={sggName}
- selectedSwageTreatmentPlant={select1}
- onSwageTreatmentPlantChange={setSelect1}
+ selectedSwagePrcsFclt={select1}
+ onSwagePrcsFcltChange={setSelect1}
setCtpvCd={setCtpvCd}
setSggCd={setSggCd}
setSggName={setSggName}
- isLoading={isLoadingResult}
+ setIsLoading={setIsLoadingResult}
onAnalysis={handleAnalysisClick}
>
{[
diff --git a/apps/sn/app/(with-base-layout)/ii/rdiiResult/page.tsx b/apps/sn/app/(with-base-layout)/ii/rdiiResult/page.tsx
index d705728c5..66b8095db 100644
--- a/apps/sn/app/(with-base-layout)/ii/rdiiResult/page.tsx
+++ b/apps/sn/app/(with-base-layout)/ii/rdiiResult/page.tsx
@@ -284,8 +284,8 @@ const Result = () => {
ctpvCd={ctpvCd}
sggCd={sggCd}
sggName={sggName}
- selectedSwageTreatmentPlant={form.watch("swageTmplntCd")}
- onSwageTreatmentPlantChange={(val) => form.setValue("swageTmplntCd", String(val))}
+ selectedSwagePrcsFclt={form.watch("swageTmplntCd")}
+ onSwagePrcsFcltChange={(val) => form.setValue("swageTmplntCd", String(val))}
aplcnYmFrom={form.watch("aplcnYmFrom")}
setAplcnYmFrom={(val: string) => { form.setValue("aplcnYmFrom", val) }}
aplcnYmTo={form.watch("aplcnYmTo")}
@@ -293,7 +293,7 @@ const Result = () => {
setCtpvCd={setCtpvCd}
setSggCd={setSggCd}
setSggName={setSggName}
- isLoading={isLoadingResult}
+ setIsLoading={setIsLoadingResult}
// Excel 다운로드 핸들러 추가
onExcelDownload={handleExcelDownload}
onDeleteFile={handleFileDelete}
diff --git a/apps/sn/app/(with-base-layout)/ii/result/page.tsx b/apps/sn/app/(with-base-layout)/ii/result/page.tsx
index c27110223..7c7e4721a 100644
--- a/apps/sn/app/(with-base-layout)/ii/result/page.tsx
+++ b/apps/sn/app/(with-base-layout)/ii/result/page.tsx
@@ -282,8 +282,8 @@ const Result = () => {
ctpvCd={ctpvCd}
sggCd={sggCd}
sggName={sggName}
- selectedSwageTreatmentPlant={form.watch("swageTmplntCd")}
- onSwageTreatmentPlantChange={(val) => form.setValue("swageTmplntCd", String(val))}
+ selectedSwagePrcsFclt={form.watch("swageTmplntCd")}
+ onSwagePrcsFcltChange={(val) => form.setValue("swageTmplntCd", String(val))}
aplcnYmFrom={form.watch("aplcnYmFrom")}
setAplcnYmFrom={(val: string) => { form.setValue("aplcnYmFrom", val) }}
aplcnYmTo={form.watch("aplcnYmTo")}
@@ -291,7 +291,7 @@ const Result = () => {
setCtpvCd={setCtpvCd}
setSggCd={setSggCd}
setSggName={setSggName}
- isLoading={isLoadingResult} // 로딩 상태 전달
+ setIsLoading={setIsLoadingResult}
// Excel 다운로드 핸들러 추가
onExcelDownload={handleExcelDownload}
onDeleteFile={handleFileDelete}
diff --git a/apps/sn/app/(with-base-layout)/layout.tsx b/apps/sn/app/(with-base-layout)/layout.tsx
index 8c72ecb0c..f8e046717 100644
--- a/apps/sn/app/(with-base-layout)/layout.tsx
+++ b/apps/sn/app/(with-base-layout)/layout.tsx
@@ -20,11 +20,10 @@ export default function WithBaseLayout({
const setCurrentMenuInfo = useMenuStore((state) => state.setCurrentMenuInfo);
- const { fetchCtpvData, fetchSggData, fetchBIZ_SE_CD, fetchBIZ_TY_CD } = useStore();
+ const { fetchCtpvSggData, fetchBIZ_SE_CD, fetchBIZ_TY_CD } = useStore();
useEffect(() => {
- fetchCtpvData();
- fetchSggData();
+ fetchCtpvSggData();
fetchBIZ_SE_CD();
fetchBIZ_TY_CD();
}, []);
diff --git a/apps/sn/app/components/ui/SidoSigunguSelectBox.tsx b/apps/sn/app/components/ui/SidoSigunguSelectBox.tsx
deleted file mode 100644
index fc9962e75..000000000
--- a/apps/sn/app/components/ui/SidoSigunguSelectBox.tsx
+++ /dev/null
@@ -1,81 +0,0 @@
-import React, { useState, useMemo, useEffect } from "react";
-import { SelectBox } from '@common/business_components/ui'
-import { Label } from '@common/components';
-import useStore from '../../store/useStore';
-
-
-interface SidoSigunguSelectBoxProps {
- sido: number;
- sigungu: number;
- onSidoChange: (id: number) => void;
- setCtpvName?: (name: string) => void;
- onSigunguChange: (id: number) => void;
- setSggName?: (name: string) => void;
- className?: string;
-}
-
-export function SidoSigunguSelectBox({
- sido,
- sigungu,
- onSidoChange,
- setCtpvName,
- onSigunguChange,
- setSggName,
- className = "",
-}: SidoSigunguSelectBoxProps) {
-
- const { ctpv, sgg} = useStore();
-
- useEffect(() => {
- (async () => {
- onSidoChange(0);
- onSigunguChange(0);
- if (setCtpvName && setSggName) {
- setCtpvName("");
- setSggName("");
- }
- })();
- }, []);
-
-
- return (
-
-
- ({ val: opt.id, text: opt.name }))
- ]
- }
- value={sido}
- onSelectValue={val => {
- onSidoChange(Number(val));
- if (setCtpvName) setCtpvName(ctpv.find(opt => Number(opt.id) === Number(val))?.name || "");
- }}
- selectContentClass="z-[101]"
- />
-
- String(opt.id).slice(0, 2) === String(sido))
- .map(opt => ({ val: opt.id, text: opt.name }))
- ]
- }
- value={sigungu}
- onSelectValue={val => {
- onSigunguChange(Number(val))
- if (setSggName) setSggName(sgg.find(opt => Number(opt.id) === Number(val))?.name || "");
- }}
- selectContentClass="z-[101]"
- />
-
- );
-}
\ No newline at end of file
diff --git a/apps/sn/app/components/ui/ctpvSggPrcsFcltSelectBox.tsx b/apps/sn/app/components/ui/ctpvSggPrcsFcltSelectBox.tsx
new file mode 100644
index 000000000..8e6f9d4eb
--- /dev/null
+++ b/apps/sn/app/components/ui/ctpvSggPrcsFcltSelectBox.tsx
@@ -0,0 +1,161 @@
+import React, { useState, useMemo, useEffect } from "react";
+import { SelectBox } from '@common/business_components/ui'
+import { Label } from '@common/components';
+import useStore from '../../store/useStore';
+import { getData } from '@/components/lib/api/index';
+
+
+interface ApiSelectOption {
+ text: string;
+ val: string;
+}
+interface CtpvSggPrcsFcltSelectBoxProps {
+ sido: number;
+ sigungu: number;
+ sggName?: string;
+ onSidoChange: (id: number) => void;
+ onSigunguChange: (id: number) => void;
+ setCtpvName?: (name: string) => void;
+ setSggName?: (name: string) => void;
+ className?: string;
+ selectedSwagePrcsFclt?: string | number;
+ onSwagePrcsFcltChange?: (value: string | number) => void;
+ setIsLoading?: (isLoading: boolean) => void;
+}
+
+const defaultOption: ApiSelectOption = { val: '0', text: '전체' };
+
+export function CtpvSggPrcsFcltSelectBox({
+ sido,
+ sigungu,
+ sggName,
+ onSidoChange,
+ setCtpvName,
+ onSigunguChange,
+ setSggName,
+ className = "",
+ selectedSwagePrcsFclt,
+ onSwagePrcsFcltChange,
+ setIsLoading,
+}: CtpvSggPrcsFcltSelectBoxProps) {
+
+ const [prcsFcltOptions, setPrcsFcltOptions] = useState
([]);
+ const { ctpv, sgg } = useStore();
+
+ useEffect(() => {
+ (async () => {
+ onSidoChange(0);
+ onSigunguChange(0);
+ if (setCtpvName && setSggName) {
+ setCtpvName("");
+ setSggName("");
+ }
+ })();
+ }, []);
+
+ // useEffect(() => {
+ // onSwagePrcsFcltChange?.('0');
+
+ // const fetchData = async () => {
+ // if (!sggName) {
+ // console.log("BaseLayout: Skipping fetchData because sigungu.val is:", sggName);
+ // setPrcsFcltOptions([defaultOption]);
+ // if (setIsLoading) setIsLoading(false);
+ // return;
+ // }
+
+ // if (setIsLoading) setIsLoading(true);
+ // try {
+
+ // const queryParamsFacility = new URLSearchParams({
+ // lyrTypeNm: 'tb_il_swage_prcs_fclt',
+ // page: '0',
+ // size: '100000', // 요청하신 URL에 맞게 50으로 변경 가능
+ // sort: 'string',
+ // });
+ // const cqlFiltersFacility: string[] = [];
+ // if (sggName) cqlFiltersFacility.push(`sgg_nm ILIKE '%${sggName}%'`);
+ // if (cqlFiltersFacility.length > 0) queryParamsFacility.append('cqlFiter', cqlFiltersFacility.join(' and '));
+
+ // console.log("BaseLayout API URL for Facilities:", `v1/fclts?${queryParamsFacility.toString()}`);
+
+ // const facilityRes = await getData(`v1/fclts?${queryParamsFacility.toString()}`);
+
+ // console.log('facilityRes.data', facilityRes.data);
+
+ // const facilities = (facilityRes.data || [])
+ // .map((item: any) => ({
+ // text: item.swtrmtFcltNm,
+ // val: item.fid
+ // }))
+ // .sort((a: ApiSelectOption, b: ApiSelectOption) => a.text.localeCompare(b.text, 'ko'));
+ // setPrcsFcltOptions(facilities);
+ // console.log("BaseLayout Fetched Treatment Facilities:", prcsFcltOptions);
+
+ // } catch (error) {
+ // console.error("BaseLayout: 지역/시설 데이터 조회 중 오류 발생:", error);
+ // setPrcsFcltOptions([]);
+ // } finally {
+ // if (setIsLoading) setIsLoading(false);
+ // }
+ // };
+
+ // fetchData();
+ // }, [sggName]);
+
+
+ return (
+
+
+ ({ val: opt.id, text: opt.name }))
+ ]
+ }
+ value={sido}
+ onSelectValue={val => {
+ onSidoChange(Number(val));
+ if (setCtpvName) setCtpvName(ctpv.find(opt => Number(opt.id) === Number(val))?.name || "");
+ }}
+ selectContentClass="z-[101]"
+ />
+
+ String(opt.id).slice(0, 2) === String(sido))
+ .map(opt => ({ val: opt.id, text: opt.name }))
+ ]
+ }
+ value={sigungu}
+ onSelectValue={val => {
+ onSigunguChange(Number(val))
+ if (setSggName) setSggName(sgg.find(opt => Number(opt.id) === Number(val))?.name || "");
+ }}
+ selectContentClass="z-[101]"
+ />
+ {selectedSwagePrcsFclt && onSwagePrcsFcltChange && (
+ <>
+
+ onSwagePrcsFcltChange?.(val)}
+ selectContentClass="z-[101]"
+ />
+ >
+ )}
+
+ );
+}
\ No newline at end of file