/** * 廠商詳細資訊頁面 */ import { useState } from "react"; import { Phone, Mail, Plus, ArrowLeft } from "lucide-react"; import { Label } from "../ui/label"; import { Button } from "../ui/button"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "../ui/alert-dialog"; import SupplyProductList from "./SupplyProductList"; import AddSupplyProductDialog from "./AddSupplyProductDialog"; import EditSupplyProductDialog from "./EditSupplyProductDialog"; import type { Supplier, SupplyProduct } from "../../types/vendor"; import type { Product } from "../../types/product"; interface VendorDetailProps { supplier: Supplier; products: Product[]; onBack: () => void; onAddSupplyProduct: (supplierId: string, productId: string, lastPrice?: number) => void; onUpdateSupplyProduct: (supplierId: string, productId: string, lastPrice?: number) => void; onRemoveSupplyProduct: (supplierId: string, productId: string) => void; } export default function VendorDetail({ supplier, products, onBack, onAddSupplyProduct, onUpdateSupplyProduct, onRemoveSupplyProduct, }: VendorDetailProps) { const [showAddDialog, setShowAddDialog] = useState(false); const [showEditDialog, setShowEditDialog] = useState(false); const [showRemoveDialog, setShowRemoveDialog] = useState(false); const [selectedProduct, setSelectedProduct] = useState(null); const handleAddProduct = (productId: string, lastPrice?: number) => { onAddSupplyProduct(supplier.id, productId, lastPrice); setShowAddDialog(false); }; const handleEditProduct = (product: SupplyProduct) => { setSelectedProduct(product); setShowEditDialog(true); }; const handleUpdateProduct = (productId: string, lastPrice?: number) => { onUpdateSupplyProduct(supplier.id, productId, lastPrice); setShowEditDialog(false); setSelectedProduct(null); }; const handleRemoveProduct = (product: SupplyProduct) => { setSelectedProduct(product); setShowRemoveDialog(true); }; const handleConfirmRemove = () => { if (selectedProduct) { onRemoveSupplyProduct(supplier.id, selectedProduct.productId); } setShowRemoveDialog(false); setSelectedProduct(null); }; return (
{/* 返回按鈕 */}

廠商詳細資訊

查看並管理供應商的詳細資料與供貨商品

{/* 基本資料 */}

基本資料

{supplier.name}

{supplier.contact || "-"}

{supplier.phone || "-"}

{supplier.email || "-"}

{/* 供貨商品列表 */}

供貨商品

{/* 新增供貨商品對話框 */} setShowAddDialog(false)} onAdd={handleAddProduct} /> {/* 編輯供貨商品對話框 */} { setShowEditDialog(false); setSelectedProduct(null); }} onSave={handleUpdateProduct} /> {/* 取消供貨確認對話框 */} 確認取消供貨 確定要將「{selectedProduct?.productName}」從供貨列表中移除嗎?此操作無法撤銷。 取消 確認移除
); }