feat: 파일 다운로드안내 alert 및 toast 기능 추가

This commit is contained in:
swcho
2025-08-19 16:08:24 +09:00
parent 507618a437
commit 42c94e8b43
@@ -15,6 +15,8 @@ import ReportTab from './reportTab';
import { formatDisplayData } from '@/components/lib/utils/formatDisplayValue';
import useStore from '../../../store/useStore';
import GisApp from "@common/business_components/ui/map/lib/gis.core";
import { confirmToast } from '@/components/ui/toast'
import { toast, Toaster } from "react-hot-toast";
const API_URL = `${process.env.NEXT_PUBLIC_SEWERAGE_API_URL}`;
@@ -145,6 +147,7 @@ const SearchModal: React.FC<SearchModalProps> = ({
setIsResetDetailPage(true); // 디테일 페이지를 초기화
setIsResetSelection(true); // 선택 초기화
setIsResetDetailSelection(true); // 선택 초기화
setDetailBizId(0);
// queryParams는 fetchFilteredData 내에서 매번 새로 생성되므로 별도 상태 초기화는 필요 없음
}, [activeTab, basicType, workType, open]);
@@ -156,6 +159,7 @@ const SearchModal: React.FC<SearchModalProps> = ({
setTableData([]);
setDetailTableCount(0);
setDetailTableData([]);
setDetailBizId(0);
}, [open]);
// 페이지 변경 시마다 데이터 fetch
@@ -163,6 +167,7 @@ const SearchModal: React.FC<SearchModalProps> = ({
// showTable이 true일 때만 fetch (최초 렌더 방지)
setIsResetPage(false);
setIsResetDetailPage(true);
setDetailBizId(0);
if (showTable) fetchFilteredData();
}, [curPage]);
@@ -584,6 +589,20 @@ const SearchModal: React.FC<SearchModalProps> = ({
// 기본정보 Excel 다운로드 핸들러
const BasicExcelDownload = async () => {
if (tableData.length === 0) {
alert("다운로드 할 Excel 파일이 없습니다.\n조회 후 다시 시도해주세요.");
return;
}
toast.dismiss("global-confirm-toast");
confirmToast(
"파일 다운로드에는 2분 내외의 시간이 소요될 수 있습니다.\n파일 다운로드를 진행하시겠습니까?",
onAnalysis ?? (() => { }),
"text-xl font-medium text-gray-800"
);
async function onAnalysis() {
setIsLoading(true);
try {
@@ -781,10 +800,25 @@ const SearchModal: React.FC<SearchModalProps> = ({
console.error("Excel 다운로드 중 오류 발생:", error);
alert("Excel 다운로드 중 오류가 발생했습니다. 다시 시도해주세요.");
}
}
};
// 운영정보 Excel 다운로드 핸들러 추가
const OperationExcelDownload = async () => {
if (tableData.length === 0) {
alert("다운로드 할 Excel 파일이 없습니다.\n조회 후 다시 시도해주세요.");
return;
}
toast.dismiss("global-confirm-toast");
confirmToast(
"파일 다운로드에는 2분 내외의 시간이 소요될 수 있습니다.\n파일 다운로드를 진행하시겠습니까?",
onAnalysis ?? (() => { }),
"text-xl font-medium text-gray-800"
);
async function onAnalysis() {
setIsLoading(true);
try {
@@ -860,18 +894,31 @@ const SearchModal: React.FC<SearchModalProps> = ({
console.error("Excel 다운로드 중 오류 발생:", error);
alert("Excel 다운로드 중 오류가 발생했습니다. 다시 시도해주세요.");
}
}
};
// 운영정보 Excel 다운로드 핸들러 추가
const OperationResultExcelDownload = async () => {
if (detailTableData.length === 0) {
alert("다운로드 할 Excel 파일이 없습니다.\n조회 후 다시 시도해주세요.");
return;
}
toast.dismiss("global-confirm-toast");
confirmToast(
"파일 다운로드에는 2분 내외의 시간이 소요될 수 있습니다.\n파일 다운로드를 진행하시겠습니까?",
onAnalysis ?? (() => { }),
"text-xl font-medium text-gray-800"
);
async function onAnalysis() {
setIsLoading(true);
try {
const totalStartTime = performance.now(); // 전체 시작 시간
const RequestDTO: Record<string, string> = {
size: '1000', // 최대 개수 백만건으로 설정
size: '10000', // 최대 개수 백만건으로 설정
bizId: String(detailBizId),
};
@@ -951,6 +998,7 @@ const SearchModal: React.FC<SearchModalProps> = ({
console.error("Excel 다운로드 중 오류 발생:", error);
alert("Excel 다운로드 중 오류가 발생했습니다. 다시 시도해주세요.");
}
}
};
@@ -1101,6 +1149,7 @@ const SearchModal: React.FC<SearchModalProps> = ({
);
return (
<>
<UiModal
open={open}
onOpenChange={onOpenChange}
@@ -1115,6 +1164,8 @@ const SearchModal: React.FC<SearchModalProps> = ({
body={renderBody()}
useDirectRender={true}
/>
<Toaster position="top-center"></Toaster>
</>
);
};