시설별 팝업 상세 내용 로직 수정

This commit is contained in:
JIeunhuh
2025-07-09 17:39:14 +09:00
parent 9ea0a95333
commit 3444a03f31
5 changed files with 52 additions and 55 deletions
+47 -49
View File
@@ -75,7 +75,7 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
const { rainSttn, rainSttnSearch, rainSttnInit } = useWrStore(
(state) => state
);
const { rainSttnRes } = rainSttn;
let { rainSttnRes } = rainSttn;
const [rainTable, setRainTable] = useState<customRainBdst[]>();
const [rainBdstChgProps, setRainBdstChgProps] = useState<{
isOpen: boolean;
@@ -88,7 +88,7 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
const { rswtSttn, rswtSttnSearch, rswtSttnInit } = useWrStore(
(state) => state
);
const { rswtSttnRes } = rswtSttn;
let { rswtSttnRes } = rswtSttn;
const [rswtrTable, setRswtrTable] = useState<customRswtBdst[]>();
const [rswtrDetailModal, setRswtrDetailModal] = useState<{ isOpen: boolean, data: customRswtBdst | undefined }>({ data: undefined, isOpen: false });
const [rswtrBdstChgProps, setRswtrBdstChgProps] = useState<{
@@ -99,7 +99,7 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
// 온배수시설 변수
const { htdflSttn, htdflSttnSearch, initHtdfl } = useWrStore((state) => state);
const { htdflSttnRes } = htdflSttn;
let { htdflSttnRes } = htdflSttn;
const [htdflTable, setHtdflTable] = useState<customHtdflBdst[]>();
const [htdflDetailModal, setHtdflDetailModal] = useState<{ isOpen: boolean, data: customHtdflBdst | undefined }>({ data: undefined, isOpen: false });
const [bdstChgProps, setBdstChgProps] = useState<{ isOpen: boolean, chBuilding: chgBuilding[] }>({ isOpen: false, chBuilding: [] });
@@ -113,7 +113,7 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
} = useWrStore((state) => state);
let { pubFacHeadList, pbnstHasuRes, pbnstRes } = pbnst;
const [isRuseReg, setIsRuseReg] = useState<{
data:any | undefined;
data: any | undefined;
}>({ data: undefined });
const [hasuTable, setHasuTable] = useState<pubHasuType[]>();
const [hasuPage, setHasuPage] = useState<number>(1);
@@ -131,31 +131,17 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
setActiveTab(featureCd)
fetchpbnstDetail(featureCd); // 상세정보
}
else if (layerId == '빗물이용시설') {
featureCd = selectedVal?.bdst_nm;
setFcltPk(featureCd)
rainSttnSearch(1, '20', '', featureCd, code.cityCd, code.sggCd);
setRainDetailModal({ isOpen: true, data: rainSttn.rainSttnRes[0] });
}
else if (layerId == '중수도시설') {
featureCd = selectedVal?.bdst_nm;
setFcltPk(featureCd)
rswtSttnSearch(true,1, '20', '', featureCd, code.cityCd, code.sggCd);
setRswtrDetailModal({ isOpen: true, data: rswtSttnRes[0] });
}
else if (layerId == '온배수시설') {
featureCd = selectedVal?.bdst_nm;
setFcltPk(featureCd)
htdflSttnSearch(true,1, '20', '', featureCd, code.cityCd, code.sggCd);
setHtdflDetailModal({ isOpen: true, data: htdflSttnRes[0] });
}
else if (layerId == '하수처리시설') {
featureCd = selectedVal?.swtrmt_fclt_nm;
setFcltPk(featureCd); // 현재 호출된 featureCd 저장
fetchHasuDetail(featureCd,selectedVal?.swtrmt_fclt_cd);
};
fetchHasuDetail(featureCd, selectedVal?.swtrmt_fclt_cd);
}
else{
featureCd = selectedVal?.bdst_nm;
setFcltPk(featureCd)
detainSttn(featureCd,layerId)
}
setViewMode("detail")
}
} else if (layerId === null && seletectedLayerNm) { setViewMode("list") }
}, [featureData]);
@@ -170,10 +156,7 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
pbnstSttn.pbnstSttnRes[index]
) {
setFcltPk(pbnstSttn.pbnstSttnRes[index].pbnstRuseFcltPk);
// fetchpbnstDetail(pbnstSttn.pbnstSttnRes[index].pbnstRuseFcltPk)
onFeatureSelect(pbnstSttn.pbnstSttnRes[index]);
// setActiveTab(pbnstSttn.pbnstSttnRes[index].pbnstRuseFcltPk)
// setViewMode("detail")
onClose()
}
};
@@ -281,6 +264,24 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
setRainBdstChgProps({ isOpen: true, chBuilding: rainTable[index].chgBuilding });
}
}
const detainSttn = async (featureCd: string, layerNm: string) => {
if (layerNm == '빗물이용시설') {
const res = await getFetch(fetchType.WR, `/reuseFc/rainyInfoList/1/20/0/${featureCd}`)
rainSttnRes = res
setRainDetailModal({ isOpen: true, data: rainSttnRes[0] });
}
else if(layerNm == '중수도시설'){
const res = await getFetch(fetchType.WR,`/reuseFc/waterreuseFc/1/20/0/${featureCd}`)
rswtSttnRes = res
console.log('중수도', res, featureCd)
setRswtrDetailModal({isOpen:true,data:rswtSttnRes[0]})
}
else{
const res = await getFetch(fetchType.WR, `/drain/facilityList/1/20/0/${featureCd}`)
htdflSttnRes = res
setHtdflDetailModal({ isOpen: true, data: htdflSttnRes[0] });
}
}
useEffect(() => {
if (!rainSttn.isInit) {
@@ -340,8 +341,7 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
}
useEffect(() => {
if (!rswtSttn.isInit) {
rswtSttnInit(false,1, "20", "0", '', code.cityCd, code.sggCd);
console.log('rswtSttnInit', rswtSttnRes);
rswtSttnInit(false, 1, "20", "0", '', code.cityCd, code.sggCd);
}
}, [rswtSttn.isInit, rswtSttnInit]);
@@ -363,7 +363,7 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
(item: customRswtBdst) =>
item.reuseBuilding[0]?.rswtrObj !== undefined
);
setRswtrTable(chData);
setRswtrTable(chData);
}, [code, rswtSttnRes]);
// 엑셀 관련
const rswtSttnExcelDownload = useCallback(() => {
@@ -379,7 +379,7 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
}, [rswtSttn.excelList])
useEffect(() => {
rswtSttnSearch(false,rswtrPage, "20", '', '', code.cityCd, code.sggCd);
rswtSttnSearch(false, rswtrPage, "20", '', '', code.cityCd, code.sggCd);
}, [rswtrPage]);
///////////////////////////////////////////// 중수도 시설 //////////////////////////////////////////////////
@@ -387,8 +387,6 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
// 온배수시설 cellClick 이벤트 (상세정보)
const htdflCellClick = (index: number | undefined, headId: string) => {
if (index !== undefined && htdflTable !== undefined) {
// setHtdflDetailModal({ isOpen: true, data: htdflTable[index] });
// setViewMode('detail')
onFeatureSelect(htdflTable[index]);
onClose();
}
@@ -413,7 +411,7 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
}, [code, htdflSttnRes, htdflSttn.htdflSttHeadList]);
useEffect(() => {
htdflSttnSearch(true,htdflPage, "20", '', '', code.cityCd, code.sggCd);
htdflSttnSearch(true, htdflPage, "20", '', '', code.cityCd, code.sggCd);
}, [htdflPage]);
///////////////////////////////////////////// 온배수 시설 //////////////////////////////////////////////////
@@ -431,19 +429,19 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
useEffect(() => {
pubHasuInit(String(hasuPage), "0");
}, [hasuPage]);
const fetchHasuDetail = async (featureCd: string,data:string) => {
const fetchHasuDetail = async (featureCd: string, data: string) => {
try {
const rainRes = await postFectch(`/prcsFclt/ruseInfo/1/10/A/0/0/1/SW/${featureCd}`,[data],fetchType.COMMON);
const hasuList = rainRes.data.map((item: any) => {
return {
...item,
fctCpc: Number(item.fctCpc) || 0,
ruse: item.ruse === false ? "N" : "Y",
};
});
pbnstHasuRes = hasuList
if(pbnstHasuRes.length >0)setIsRuseReg({ data:[pbnstHasuRes[0]] });
const rainRes = await postFectch(`/prcsFclt/ruseInfo/1/10/A/0/0/1/SW/${featureCd}`, [data], fetchType.COMMON);
const hasuList = rainRes.data.map((item: any) => {
return {
...item,
fctCpc: Number(item.fctCpc) || 0,
ruse: item.ruse === false ? "N" : "Y",
};
});
pbnstHasuRes = hasuList
if (pbnstHasuRes.length > 0) setIsRuseReg({ data: [pbnstHasuRes[0]] });
} catch (error) {
console.error("Error fetching data:", error);
}
@@ -454,7 +452,7 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
onClose();
}
};
///////////////////////////////////////////// 하수처리 시설 //////////////////////////////////////////////////
///////////////////////////////////////////// 하수처리 시설 //////////////////////////////////////////////////
// 체크된 레이어에 따른 조건부 컴포넌트 렌더링 함수
const renderConditionalContent = () => {
@@ -502,7 +500,7 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
{/* 높이 조정 */}
<UiTable
tableData={isRuseReg?.data || []}
headlist={pubFacHeadList.slice(0,4)}
headlist={pubFacHeadList.slice(0, 4)}
pageSize={1}
total={null}
headName={"위치정보"}
@@ -137,7 +137,7 @@ export default function HtdflRegForm({
{/* <div className="flex justify-between items-center mx-3"> */}
<div>
<h1 className="text-2xl font-bold text-gray-900 mt-3 ml-1">
{readonly && `(${htdflForm.bdstNm})`}
{readonly && `(${htdflForm?.bdstNm})`}
</h1>
<div className="grid grid-cols-12 flex items-center card-header">
<h1 className="text-2xl font-medium text-label col-span-10">
@@ -144,7 +144,7 @@ export default function RainRegForm({
<form onSubmit={form.handleSubmit(onSubmit)}>
<div>
<h1 className="text-2xl font-bold text-gray-900 mt-3 ml-1">
{readonly && `(${rainForm.bdstNm})`}
{readonly && `(${rainForm?.bdstNm})`}
</h1>
<div className="grid grid-cols-12 flex items-center card-header">
<h1 className="text-2xl font-medium text-label col-span-10">
@@ -134,7 +134,7 @@ export default function RswtrRegForm({
{/* <div className="flex justify-between items-center mx-3"> */}
<div>
<h1 className="text-2xl font-bold text-gray-900 mt-3 ml-1">
{readonly && `(${rswtForm.bdstNm})`}
{readonly && `(${rswtForm?.bdstNm})`}
</h1>
<div className="grid grid-cols-12 flex items-center card-header">
<h1 className="text-2xl font-medium text-label col-span-10">
@@ -30,7 +30,7 @@ export default function SttnDetailModal({
});
useEffect(() => {
if (type === "RNB" && formObj.reuseBuilding[0]) {
if (type === "RNB" && formObj?.reuseBuilding[0]) {
rainSttnChkSearch(formObj.reuseBuilding[0].bdstRuseFcltPk);
} else if (type === "RST") {
@@ -41,7 +41,7 @@ export default function SttnDetailModal({
useEffect(() => {
if (
type === "RNB" &&
formObj.reuseBuilding[0] &&
formObj?.reuseBuilding[0] &&
rainSttn.rainChkRes?.bdstRuseFcltFk
) {
const tableTotalData = rainChkTableData([rainSttn.rainChkRes]);
@@ -79,7 +79,6 @@ export default function SttnDetailModal({
useEffect(() =>{
setDetailData({data:[] , head:[], node:[]})
},[])
return (