summaryrefslogtreecommitdiff
path: root/lib/vendor-document-list/plant/upload/table.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vendor-document-list/plant/upload/table.tsx')
-rw-r--r--lib/vendor-document-list/plant/upload/table.tsx37
1 files changed, 29 insertions, 8 deletions
diff --git a/lib/vendor-document-list/plant/upload/table.tsx b/lib/vendor-document-list/plant/upload/table.tsx
index 84b04092..2247fc57 100644
--- a/lib/vendor-document-list/plant/upload/table.tsx
+++ b/lib/vendor-document-list/plant/upload/table.tsx
@@ -21,6 +21,7 @@ import { SingleUploadDialog } from "./components/single-upload-dialog"
import { HistoryDialog } from "./components/history-dialog"
import { ViewSubmissionDialog } from "./components/view-submission-dialog"
import { toast } from "sonner"
+import { quickDownload } from "@/lib/file-download"
interface StageSubmissionsTableProps {
promises: Promise<[
@@ -167,23 +168,43 @@ export function StageSubmissionsTable({ promises, selectedProjectId }: StageSubm
const { type, row } = rowAction;
if (type === "downloadCover") {
- // 2) 서버에서 생성 후 다운로드 (예: API 호출)
+ const projectCode = row.original.projectCode;
+ const project = projects.find(p => p.code === projectCode);
+
+ if (!project) {
+ toast.error("프로젝트 정보를 찾을 수 없습니다.");
+ setRowAction(null);
+ return;
+ }
+
(async () => {
try {
- const res = await fetch(`/api/stages/${row.original.stageId}/cover`, { method: "POST" });
- if (!res.ok) throw new Error("failed");
- const { fileUrl } = await res.json(); // 서버 응답: { fileUrl: string }
- window.open(fileUrl, "_blank", "noopener,noreferrer");
+ const res = await fetch(`/api/projects/${project.id}/cover`, {
+ method: "GET"
+ });
+
+ if (!res.ok) {
+ const error = await res.json();
+ throw new Error(error.message || "커버 페이지를 가져올 수 없습니다");
+ }
+
+ const { fileUrl, fileName } = await res.json();
+
+ // quickDownload 사용
+ quickDownload(fileUrl, fileName || `${projectCode}_cover.docx`);
+
+ toast.success("커버 페이지 다운로드를 시작했습니다.");
+
} catch (e) {
- toast.error("커버 페이지 생성에 실패했습니다.");
+ toast.error(e instanceof Error ? e.message : "커버 페이지 다운로드에 실패했습니다.");
console.error(e);
} finally {
setRowAction(null);
}
})();
}
- }, [rowAction, setRowAction]);
-
+ }, [rowAction, setRowAction, projects]);
+
return (
<>
<DataTable table={table}>