From 65a68325658401dd8a90ea900c1542c17c63d7ce Mon Sep 17 00:00:00 2001 From: joonhoekim <26rote@gmail.com> Date: Mon, 27 Oct 2025 09:49:34 +0900 Subject: (김준회) swp-upload 다이얼로그로 결과 알림, vendorCode 자동 선택 처리 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/swp/table/swp-upload-result-dialog.tsx | 108 +++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 lib/swp/table/swp-upload-result-dialog.tsx (limited to 'lib/swp/table/swp-upload-result-dialog.tsx') diff --git a/lib/swp/table/swp-upload-result-dialog.tsx b/lib/swp/table/swp-upload-result-dialog.tsx new file mode 100644 index 00000000..7b79fa68 --- /dev/null +++ b/lib/swp/table/swp-upload-result-dialog.tsx @@ -0,0 +1,108 @@ +"use client"; + +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; +import { Button } from "@/components/ui/button"; +import { CheckCircle2, XCircle, FileText } from "lucide-react"; +import { ScrollArea } from "@/components/ui/scroll-area"; + +interface UploadResult { + fileName: string; + success: boolean; + error?: string; +} + +interface SwpUploadResultDialogProps { + open: boolean; + onOpenChange: (open: boolean) => void; + results: UploadResult[]; +} + +export function SwpUploadResultDialog({ + open, + onOpenChange, + results, +}: SwpUploadResultDialogProps) { + const successCount = results.filter((r) => r.success).length; + const failCount = results.filter((r) => !r.success).length; + const totalCount = results.length; + + return ( + + + + 파일 업로드 결과 + + 총 {totalCount}개 파일 중 성공 {successCount}개, 실패 {failCount}개 + + + + +
+ {results.map((result, index) => ( +
+
+ {result.success ? ( + + ) : ( + + )} +
+ +
+
+ + + {result.fileName} + +
+ + {result.success ? ( +

+ 업로드 성공 +

+ ) : ( +
+

+ 업로드 실패 +

+ {result.error && ( +

+ 사유: {result.error} +

+ )} +
+ )} +
+
+ ))} +
+
+ +
+
+ {failCount > 0 && ( + + 실패한 파일을 확인하고 다시 업로드해주세요. + + )} +
+ +
+
+
+ ); +} + -- cgit v1.2.3