/** * 安全庫存列表組件 */ import { Trash2, Pencil } 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 { StatusBadge } from "@/Components/shared/StatusBadge"; 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) { if (status === '正常') { return ( 正常 ); } if (status === '接近') { return ( 接近 ); } if (status === '低於') { return ( 低於 ); } return null; // Should not happen if SafetyStockStatus is exhaustive } 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)}
); })}
); }