Merge branch 'iipbs/sn/ii' into iipbs/sn/dev

This commit is contained in:
swcho
2025-07-25 18:50:37 +09:00
5 changed files with 75 additions and 26 deletions
@@ -167,13 +167,14 @@ const SearchModal: React.FC<SearchModalProps> = ({
// 페이지 변경 시마다 데이터 fetch
useEffect(() => {
// showTable이 true일 때만 fetch (최초 렌더 방지)
setIsResetPage(false);
setIsResetDetailPage(true);
if (showTable) fetchFilteredData();
}, [curPage]);
// 페이지 변경 시마다 데이터 fetch
useEffect(() => {
setIsResetSelection(true);
setIsResetDetailSelection(true);
setIsResetDetailSelection(false);
// showTable이 true일 때만 fetch (최초 렌더 방지)
if (showTable) {
handleOperationPageNation(Number(detailBizId));
@@ -488,7 +489,7 @@ const SearchModal: React.FC<SearchModalProps> = ({
const handleSearch = () => {
// setCurPage(1); // 페이지를 1로 초기화
// setDetailCurPage(1); // 페이지를 1로 초기화
// setIsResetPage(true); // 페이지를 초기화
// setIsResetPage(false); // 페이지를 초기화
// setIsResetDetailPage(true); // 디테일 페이지를 초기화
// setIsResetSelection(true); // 선택 초기화
// setIsResetDetailSelection(true); // 선택 초기화
@@ -701,7 +702,7 @@ const SearchModal: React.FC<SearchModalProps> = ({
total={tableCount}
cellClick={activeTab === 'report' ? handleReportCellClick : handleBasicCellClick}
onPageChange={setCurPage}
resetPageNo={true}
resetPageNo={isResetPage}
resetSelection={isResetSelection}
/>
</div>
@@ -84,6 +84,7 @@ const Result = () => {
const [isLoadingResult, setIsLoadingResult] = useState<boolean>(false); // 로딩 상태
const [selectedRowData, setSelectedRowData] = useState<any>(null);
const [resetSelection, setResetSelection] = useState<boolean>(false);
const [isResetPage, setIsResetPage] = useState<boolean>(false);
const [curPage, setCurPage] = useState(1); // 현재 페이지
useEffect(() => {
@@ -91,10 +92,18 @@ const Result = () => {
handleSearchButtonClick();
}, [])
// 페이지 변경 시마다 데이터 fetch
useEffect(() => {
// setCurPage(1);
setIsResetPage(false);
handleSearchButtonClick();
}, [curPage])
}, [curPage]);
// 조회 버튼 클릭 시 1페이지로 이동 및 데이터 초기화
const handleSearch: () => Promise<void> = async () => {
setCurPage(1); // 페이지를 1로 초기화
setIsResetPage(true); // 페이지를 초기화
await handleSearchButtonClick();
};
const handleSearchButtonClick = async () => {
@@ -272,7 +281,7 @@ const Result = () => {
return (
<BaseLayout
selectBox={{ title: '분석 대상지역 선택', searchChk: true, onSearchClick: handleSearchButtonClick }}
selectBox={{ title: '분석 대상지역 선택', searchChk: true, onSearchClick: handleSearch }}
titleName={{ mainTitle: '분석결과', firstCardTitle: 'RDII 산정결과 현황' }}
form={form} // form 인스턴스 전달
onSubmitEvent={() => { }} // BaseLayout의 form 태그에 연결될 onSubmit
@@ -310,6 +319,7 @@ const Result = () => {
cellClick={handleCellClick}
onPageChange={setCurPage}
resetSelection={resetSelection}
resetPageNo={isResetPage}
/>
</div>
</div>
@@ -81,6 +81,7 @@ const Result = () => {
const [isLoadingResult, setIsLoadingResult] = useState<boolean>(false); // 로딩 상태
const [selectedRowData, setSelectedRowData] = useState<any>(null);
const [resetSelection, setResetSelection] = useState<boolean>(false);
const [isResetPage, setIsResetPage] = useState<boolean>(false);
const [curPage, setCurPage] = useState(1); // 현재 페이지
useEffect(() => {
@@ -90,9 +91,17 @@ const Result = () => {
// 페이지 변경 시마다 데이터 fetch
useEffect(() => {
setIsResetPage(false);
handleSearchButtonClick();
}, [curPage]);
// 조회 버튼 클릭 시 1페이지로 이동 및 데이터 초기화
const handleSearch: () => Promise<void> = async () => {
setCurPage(1); // 페이지를 1로 초기화
setIsResetPage(true); // 페이지를 초기화
await handleSearchButtonClick();
};
const handleSearchButtonClick = async () => {
setIsLoadingResult(true);
setResetSelection(true);
@@ -270,10 +279,9 @@ const Result = () => {
};
return (
<BaseLayout
selectBox={{ title: '분석 대상지역 선택', searchChk: true, onSearchClick: handleSearchButtonClick }}
selectBox={{ title: '분석 대상지역 선택', searchChk: true, onSearchClick: handleSearch }}
titleName={{ mainTitle: '분석결과', firstCardTitle: '분석이력' }}
form={form} // form 인스턴스 전달
onSubmitEvent={() => { }} // BaseLayout의 form 태그에 연결될 onSubmit
@@ -311,6 +319,7 @@ const Result = () => {
cellClick={handleCellClick}
onPageChange={setCurPage}
resetSelection={resetSelection}
resetPageNo={isResetPage}
/>
</div>
</div>
@@ -27,6 +27,25 @@ const Page = () => {
const [isLoading, setIsLoading] = useState(true) //로딩 상태
const [isModalOpen, setIsModalOpen] = useState(false) // 모달 상태
const [resetSelection, setResetSelection] = useState<boolean>(false); // 선택 초기화 상태
const [isResetPage, setIsResetPage] = useState<boolean>(false);
useEffect(() => {
setCurPage(1)
fetchData()
}, [])
// 페이지 변경 시마다 데이터 fetch
useEffect(() => {
setIsResetPage(false);
fetchData();
}, [curPage]);
// 조회 버튼 클릭 시 1페이지로 이동 및 데이터 초기화
const handleSearch: () => Promise<void> = async () => {
setCurPage(1); // 페이지를 1로 초기화
setIsResetPage(true); // 페이지를 초기화
await fetchData();
};
// 조회
const fetchData = async () => {
@@ -60,11 +79,6 @@ const Page = () => {
}
}
useEffect(() => {
setCurPage(1)
fetchData()
}, [])
// 파일 다운로드
const isChckFile = () => {
if (fileNm === '' || fileNm === undefined) {
@@ -106,7 +120,7 @@ const Page = () => {
if (data) {
alert('파일이 등록되었습니다.');
setIsModalOpen(false);
fetchData();
handleSearch();
}
}
@@ -160,7 +174,7 @@ const Page = () => {
</SearchFormLeft>
<SearchFormRight>
<div className='flex items-center gap-5'>
<Button className="px-4 py-2 bg-blue-600 text-white rounded-sm text-sm font-medium hover:bg-blue-700" size="sm" onClick={async () => await fetchData()} >조회</Button>
<Button className="px-4 py-2 bg-blue-600 text-white rounded-sm text-sm font-medium hover:bg-blue-700" size="sm" onClick={async () => await handleSearch()} >조회</Button>
<Button className="px-4 py-2 bg-blue-600 text-white rounded-sm text-sm font-medium hover:bg-blue-700" size="sm" onClick={handleRegisterClick} >등록</Button>
</div>
</SearchFormRight>
@@ -188,8 +202,9 @@ const Page = () => {
setSbmrgPrevntBizSn(tableData[index]?.sbmrgPrevntBizSn);
}
}}
onPageChange={async (page: number) => { setCurPage(page); await fetchData() }}
onPageChange={setCurPage}
resetSelection={resetSelection}
resetPageNo={isResetPage}
/>
</ListDiv>
{/* 파일 업로드 모달 */}
@@ -25,6 +25,25 @@ const Page = () => {
const [isLoading, setIsLoading] = useState(true) //로딩 상태
const [isModalOpen, setIsModalOpen] = useState(false) // 모달 상태
const [resetSelection, setResetSelection] = useState<boolean>(false); // 선택 초기화 상태
const [isResetPage, setIsResetPage] = useState<boolean>(false);
useEffect(() => {
setCurPage(1)
fetchData()
}, [])
// 페이지 변경 시마다 데이터 fetch
useEffect(() => {
setIsResetPage(false);
fetchData();
}, [curPage]);
// 조회 버튼 클릭 시 1페이지로 이동 및 데이터 초기화
const handleSearch: () => Promise<void> = async () => {
setCurPage(1); // 페이지를 1로 초기화
setIsResetPage(true); // 페이지를 초기화
await fetchData();
};
// 데이터 조회
const fetchData = async () => {
@@ -57,11 +76,6 @@ const Page = () => {
}
}
useEffect(() => {
setCurPage(1)
fetchData()
}, [])
// 파일 다운로드
const isChckFile = () => {
if (fileNm === '' || fileNm === undefined) {
@@ -103,7 +117,7 @@ const Page = () => {
if (data) {
alert('파일이 등록되었습니다.');
setIsModalOpen(false);
fetchData();
handleSearch();
}
}
@@ -155,7 +169,7 @@ const Page = () => {
</SearchFormLeft>
<SearchFormRight>
<div className='flex items-center gap-5'>
<Button className="px-4 py-2 bg-blue-600 text-white rounded-sm text-sm font-medium hover:bg-blue-700" size="sm" onClick={async () => await fetchData()} >조회</Button>
<Button className="px-4 py-2 bg-blue-600 text-white rounded-sm text-sm font-medium hover:bg-blue-700" size="sm" onClick={async () => await handleSearch()} >조회</Button>
<Button className="px-4 py-2 bg-blue-600 text-white rounded-sm text-sm font-medium hover:bg-blue-700" size="sm" onClick={handleRegisterClick} >등록</Button>
</div>
</SearchFormRight>
@@ -184,7 +198,7 @@ const Page = () => {
setDcrpPplMtncBizSn(tableData[index]?.dcrpPplMtncBizSn);
}
}}
onPageChange={async (page: number) => { setCurPage(page); await fetchData() }}
onPageChange={setCurPage}
resetSelection={resetSelection}
/>
</ListDiv>