/** * 安全庫存設定列表 */ import { Trash2, Pencil, CheckCircle, Package, AlertTriangle } from "lucide-react"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/Components/ui/table"; import { Button } from "@/Components/ui/button"; import { Badge } from "@/Components/ui/badge"; import { SafetyStockSetting, WarehouseInventory } from "@/types/warehouse"; import { calculateProductTotalStock, getSafetyStockStatus } from "@/utils/inventory"; import { Can } from "@/Components/Permission/Can"; interface SafetyStockListProps { settings: SafetyStockSetting[]; inventories: WarehouseInventory[]; onEdit: (setting: SafetyStockSetting) => void; onDelete: (id: string) => void; } export default function SafetyStockList({ settings, inventories, onEdit, onDelete, }: SafetyStockListProps) { if (settings.length === 0) { return (

尚無安全庫存設定

尚未為此倉庫設定任何商品的安全庫存量。設定後系統將在庫存不足時提醒您。

); } // 按產品類型與名稱排序 const sortedSettings = [...settings].sort((a, b) => { if (a.productType !== b.productType) { return a.productType.localeCompare(b.productType, "zh-TW"); } return a.productName.localeCompare(b.productName, "zh-TW"); }); // 獲取狀態徽章 (與 InventoryTable 保持一致) const getStatusBadge = (quantity: number, safetyStock: number) => { const status = getSafetyStockStatus(quantity, safetyStock); switch (status) { case "正常": return ( 正常 ); case "接近": // 數量 <= 安全庫存 * 1.2 return ( 接近 ); case "低於": // 數量 < 安全庫存 return ( 低於 ); default: return null; } }; return (
# 商品名稱 類型 安全庫存量 目前總庫存 庫存狀態 操作 {sortedSettings.map((setting, index) => { const currentStock = calculateProductTotalStock(inventories, setting.productId); return ( {index + 1} {setting.productName} {setting.productType} {setting.safetyStock} {setting.unit || '個'} {currentStock} {setting.unit || '個'} {getStatusBadge(currentStock, setting.safetyStock)}
); })}
); }