"use client" import * as React from "react" import { type Table } from "@tanstack/react-table" import { Download, Upload } from "lucide-react" import { toast } from "sonner" import { exportTableToExcel } from "@/lib/export" import { Button } from "@/components/ui/button" import { DataTableViewOptions } from "@/components/data-table/data-table-view-options" // 만약 서버 액션이나 API 라우트를 이용해 업로드 처리한다면 import import { importTasksExcel } from "@/lib/tasks/service" // 예시 import { VendorItem } from "@/db/schema/vendors" // import { AddItemDialog } from "./add-item-dialog" interface RfqHistoryRow { id: number; rfqCode: string | null; projectCode: string | null; projectName: string | null; description: string | null; dueDate: Date; status: "DRAFT" | "PUBLISHED" | "EVALUATION" | "AWARDED"; vendorStatus: string; totalAmount: number | null; currency: string | null; leadTime: string | null; itemCount: number; tbeResult: string | null; cbeResult: string | null; createdAt: Date; items: { rfqId: number; id: number; itemCode: string; description: string | null; quantity: number | null; uom: string | null; }[]; } interface RfqHistoryTableToolbarActionsProps { table: Table } export function RfqHistoryTableToolbarActions({ table, }: RfqHistoryTableToolbarActionsProps) { // 파일 input을 숨기고, 버튼 클릭 시 참조해 클릭하는 방식 const fileInputRef = React.useRef(null) // 파일이 선택되었을 때 처리 async function onFileChange(event: React.ChangeEvent) { const file = event.target.files?.[0] if (!file) return // 파일 초기화 (동일 파일 재업로드 시에도 onChange가 트리거되도록) event.target.value = "" // 서버 액션 or API 호출 try { // 예: 서버 액션 호출 const { errorFile, errorMessage } = await importTasksExcel(file) if (errorMessage) { toast.error(errorMessage) } if (errorFile) { // 에러 엑셀을 다운로드 const url = URL.createObjectURL(errorFile) const link = document.createElement("a") link.href = url link.download = "errors.xlsx" link.click() URL.revokeObjectURL(url) } else { // 성공 toast.success("Import success") // 필요 시 revalidateTag("tasks") 등 } } catch (err) { toast.error("파일 업로드 중 오류가 발생했습니다.") } } // function handleImportClick() { // // 숨겨진 요소를 클릭 // fileInputRef.current?.click() // } return (
{/* 조회만 하는 모듈 */} {/* */} {/** 3) Import 버튼 (파일 업로드) */} {/* */} {/* 실제로는 숨겨진 input과 연결: - accept=".xlsx,.xls" 등으로 Excel 파일만 업로드 허용 */} {/** 4) Export 버튼 */}
) }