/** * 安全庫存列表組件 */ import { Edit, Trash2, AlertCircle, CheckCircle, AlertTriangle } from "lucide-react"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/Components/ui/table"; import { Button } from "@/Components/ui/button"; import { SafetyStockSetting, WarehouseInventory, SafetyStockStatus } from "@/types/warehouse"; import { Badge } from "@/Components/ui/badge"; interface SafetyStockListProps { settings: SafetyStockSetting[]; inventories: WarehouseInventory[]; onEdit: (setting: SafetyStockSetting) => void; onDelete: (id: string) => void; } // 計算安全庫存狀態 function getSafetyStockStatus( currentStock: number, safetyStock: number ): SafetyStockStatus { const ratio = currentStock / safetyStock; if (ratio >= 1.2) return "正常"; if (ratio >= 1.0) return "接近"; return "低於"; } // 獲取狀態徽章 function getStatusBadge(status: SafetyStockStatus) { switch (status) { case "正常": return ( 正常 ); case "接近": return ( 接近 ); case "低於": return ( 低於 ); } } export default function SafetyStockList({ settings, inventories, onEdit, onDelete, }: SafetyStockListProps) { if (settings.length === 0) { return (

尚未設定任何安全庫存

點擊「新增安全庫存」開始設定

); } // 計算每個商品的目前總庫存 const getCurrentStock = (productId: string): number => { return inventories .filter((inv) => inv.productId === productId) .reduce((sum, inv) => sum + inv.quantity, 0); }; return (
# 商品名稱 商品類型 目前庫存 安全庫存 狀態 操作 {settings.map((setting, index) => { const currentStock = getCurrentStock(setting.productId); const status = getSafetyStockStatus(currentStock, setting.safetyStock); const isLowStock = status === "低於"; return ( {index + 1} {setting.productName} {setting.productType} {currentStock} {setting.safetyStock} {getStatusBadge(status)}
); })}
); }