feat(inventory): 實作過期與瑕疵庫存總計顯示,並強化庫存明細過期提示

This commit is contained in:
2026-02-05 15:50:14 +08:00
parent ba3c10ac13
commit a518d390bd
16 changed files with 751 additions and 574 deletions

View File

@@ -27,11 +27,11 @@ import {
AlertDialogTrigger,
} from "@/Components/ui/alert-dialog";
import { Can } from "@/Components/Permission/Can";
import { Link } from "@inertiajs/react";
import type { Product } from "@/Pages/Product/Index";
interface ProductTableProps {
products: Product[];
onEdit: (product: Product) => void;
onDelete: (id: string) => void;
startIndex: number;
@@ -42,7 +42,6 @@ interface ProductTableProps {
export default function ProductTable({
products,
onEdit,
onDelete,
startIndex,
sortField,
@@ -96,8 +95,8 @@ export default function ProductTable({
<SortIcon field="base_unit_id" />
</button>
</TableHead>
<TableHead className="w-[200px]"></TableHead>
<TableHead></TableHead>
<TableHead className="w-[200px]"></TableHead>
<TableHead></TableHead>
<TableHead className="text-center"></TableHead>
</TableRow>
@@ -133,6 +132,15 @@ export default function ProductTable({
</Badge>
</TableCell>
<TableCell>{product.baseUnit?.name || '-'}</TableCell>
<TableCell>
{product.largeUnit ? (
<span className="text-sm text-gray-500">
1 {product.largeUnit?.name} = {Number(product.conversionRate)} {product.baseUnit?.name}
</span>
) : (
'-'
)}
</TableCell>
<TableCell className="max-w-[200px]">
<TooltipProvider delayDuration={300}>
<Tooltip>
@@ -149,15 +157,6 @@ export default function ProductTable({
</Tooltip>
</TooltipProvider>
</TableCell>
<TableCell>
{product.largeUnit ? (
<span className="text-sm text-gray-500">
1 {product.largeUnit?.name} = {Number(product.conversionRate)} {product.baseUnit?.name}
</span>
) : (
'-'
)}
</TableCell>
<TableCell>
<span className="text-sm text-gray-600">{product.location || '-'}</span>
</TableCell>
@@ -174,14 +173,16 @@ export default function ProductTable({
</Button>
*/}
<Can permission="products.edit">
<Button
variant="outline"
size="sm"
onClick={() => onEdit(product)}
className="button-outlined-primary"
>
<Pencil className="h-4 w-4" />
</Button>
<Link href={route("products.edit", product.id)}>
<Button
variant="outline"
size="sm"
className="button-outlined-primary"
title="編輯"
>
<Pencil className="h-4 w-4" />
</Button>
</Link>
</Can>
<Can permission="products.delete">
<AlertDialog>