From c72d0897f7b37843109c86f61d97eba05ba3ca0d Mon Sep 17 00:00:00 2001
From: dujinkim <dujin.kim@dtsolution.co.kr>
Date: Fri, 13 Jun 2025 07:08:01 +0000
Subject: (대표님) 20250613 16시 08분 b-rfq, document 등
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../ship/enhanced-doc-table-toolbar-actions.tsx    | 147 +++++++++++++++++++++
 1 file changed, 147 insertions(+)
 create mode 100644 lib/vendor-document-list/ship/enhanced-doc-table-toolbar-actions.tsx

(limited to 'lib/vendor-document-list/ship/enhanced-doc-table-toolbar-actions.tsx')

diff --git a/lib/vendor-document-list/ship/enhanced-doc-table-toolbar-actions.tsx b/lib/vendor-document-list/ship/enhanced-doc-table-toolbar-actions.tsx
new file mode 100644
index 00000000..3960bbce
--- /dev/null
+++ b/lib/vendor-document-list/ship/enhanced-doc-table-toolbar-actions.tsx
@@ -0,0 +1,147 @@
+"use client"
+import * as React from "react"
+import { type Table } from "@tanstack/react-table"
+import { Download, Upload, Plus, Files, RefreshCw } from "lucide-react"
+import { toast } from "sonner"
+
+import { exportTableToExcel } from "@/lib/export"
+import { Button } from "@/components/ui/button"
+import { EnhancedDocumentsView } from "@/db/schema/vendorDocu"
+import { AddDocumentListDialog } from "./add-doc-dialog"
+import { DeleteDocumentsDialog } from "./delete-docs-dialog"
+import { BulkUploadDialog } from "./bulk-upload-dialog"
+import type { EnhancedDocument } from "@/types/enhanced-documents"
+import { SendToSHIButton } from "./send-to-shi-button"
+import { ImportFromDOLCEButton } from "./import-from-dolce-button"
+import { SWPWorkflowPanel } from "./swp-workflow-panel"
+
+interface EnhancedDocTableToolbarActionsProps {
+  table: Table<EnhancedDocument>
+  projectType: "ship" | "plant"
+  selectedPackageId: number
+  onNewDocument: () => void
+  onBulkAction: (action: string, selectedRows: any[]) => Promise<void>
+}
+
+export function EnhancedDocTableToolbarActions({
+  table,
+  projectType,
+  selectedPackageId,
+  onNewDocument,
+  onBulkAction
+}: EnhancedDocTableToolbarActionsProps) {
+  const [bulkUploadDialogOpen, setBulkUploadDialogOpen] = React.useState(false)
+  
+  // 현재 테이블의 모든 데이터 (필터링된 상태)
+  const allDocuments = table.getFilteredRowModel().rows.map(row => row.original)
+
+  const handleSyncComplete = () => {
+    // 동기화 완료 후 테이블 새로고침
+    table.resetRowSelection()
+    // 필요시 추가 액션 수행
+  }
+
+  const handleDocumentAdded = () => {
+    // 테이블 새로고침
+    table.resetRowSelection()
+    
+    // 추가적인 새로고침 시도
+    setTimeout(() => {
+      window.location.reload() // 강제 새로고침
+    }, 500)
+  }
+
+  const handleImportComplete = () => {
+    // 가져오기 완료 후 테이블 새로고침
+    table.resetRowSelection()
+    setTimeout(() => {
+      window.location.reload()
+    }, 500)
+  }
+
+  return (
+    <div className="flex items-center gap-2">
+      {/* 삭제 버튼 */}
+      {table.getFilteredSelectedRowModel().rows.length > 0 ? (
+        <DeleteDocumentsDialog
+          documents={table
+            .getFilteredSelectedRowModel()
+            .rows.map((row) => row.original)}
+          onSuccess={() => table.toggleAllRowsSelected(false)}
+        />
+      ) : null}
+
+      {/* projectType에 따른 조건부 렌더링 */}
+      {projectType === "ship" ? (
+        <>
+          {/* SHIP: DOLCE에서 목록 가져오기 */}
+          <ImportFromDOLCEButton
+            contractId={selectedPackageId}
+            onImportComplete={handleImportComplete}
+          />
+        </>
+      ) : (
+        <>
+          {/* PLANT: 수동 문서 추가 */}
+          <AddDocumentListDialog 
+            projectType={projectType}
+            contractId={selectedPackageId}
+            onSuccess={handleDocumentAdded}
+          />
+        </>
+      )}
+
+      {/* 일괄 업로드 버튼 (공통) */}
+      <Button
+        variant="outline"
+        onClick={() => setBulkUploadDialogOpen(true)}
+        className="flex items-center gap-2"
+      >
+        <Files className="w-4 h-4" />
+        일괄 업로드
+      </Button>
+
+      {/* Export 버튼 (공통) */}
+      <Button
+        variant="outline"
+        size="sm"
+        onClick={() =>
+          exportTableToExcel(table, {
+            filename: "Document-list",
+            excludeColumns: ["select", "actions"],
+          })
+        }
+        className="gap-2"
+      >
+        <Download className="size-4" aria-hidden="true" />
+        <span className="hidden sm:inline">Export</span>
+      </Button>
+
+      {/* Send to SHI 버튼 (공통) - 내부 → 외부로 보내기 */}
+      <SendToSHIButton
+        contractId={selectedPackageId}
+        documents={allDocuments}
+        onSyncComplete={handleSyncComplete}
+        projectType={projectType}
+      />
+
+      {/* SWP 전용 워크플로우 패널 */}
+      {projectType === "plant" && (
+        <SWPWorkflowPanel
+          contractId={selectedPackageId}
+          documents={allDocuments}
+          onWorkflowUpdate={handleSyncComplete}
+        />
+      )}
+
+      {/* 일괄 업로드 다이얼로그 */}
+      <BulkUploadDialog
+        open={bulkUploadDialogOpen}
+        onOpenChange={setBulkUploadDialogOpen}
+        documents={allDocuments}
+        projectType={projectType}
+        contractId={selectedPackageId}
+      />
+    </div>
+  )
+}
\ No newline at end of file
-- 
cgit v1.2.3

