From 19216f584631d95cfccdce334fc394bea11e1cfa Mon Sep 17 00:00:00 2001 From: sky121113 Date: Tue, 3 Feb 2026 17:29:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(Inventory):=20=E5=90=8C=E6=AD=A5=E8=AA=BF?= =?UTF-8?q?=E6=92=A5=E7=AE=A1=E7=90=86=E6=AC=8A=E9=99=90=E9=82=8F=E8=BC=AF?= =?UTF-8?q?=E8=87=B3=E7=9B=A4=E9=BB=9E=E7=AE=A1=E7=90=86=E6=A8=99=E6=BA=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../js/Pages/Inventory/Transfer/Index.tsx | 72 ++++++++++++------- .../js/Pages/Inventory/Transfer/Show.tsx | 10 ++- 2 files changed, 55 insertions(+), 27 deletions(-) diff --git a/resources/js/Pages/Inventory/Transfer/Index.tsx b/resources/js/Pages/Inventory/Transfer/Index.tsx index 7a49110..27721b4 100644 --- a/resources/js/Pages/Inventory/Transfer/Index.tsx +++ b/resources/js/Pages/Inventory/Transfer/Index.tsx @@ -48,8 +48,10 @@ import { import Pagination from "@/Components/shared/Pagination"; import { toast } from "sonner"; import { Can } from '@/Components/Permission/Can'; +import { usePermission } from '@/hooks/usePermission'; export default function Index({ warehouses, orders, filters }: any) { + const { can } = usePermission(); const [searchTerm, setSearchTerm] = useState(filters.search || ""); const [warehouseFilter, setWarehouseFilter] = useState(filters.warehouse_id || "all"); const [perPage, setPerPage] = useState(filters.per_page || "10"); @@ -320,35 +322,57 @@ export default function Index({ warehouses, orders, filters }: any) { {order.created_by}
e.stopPropagation()}> - - + {(() => { + const isEditable = order.status === 'draft'; + const canEdit = can('inventory_transfer.edit'); + const canView = can('inventory_transfer.view'); + + if (isEditable && canEdit) { + return ( + + + + ); + } + + if (canView) { + return ( + + + + ); + } + + return null; + })()} + + {order.status === 'draft' && ( + - - {order.status === 'draft' && ( - - - - )} - + + )}
diff --git a/resources/js/Pages/Inventory/Transfer/Show.tsx b/resources/js/Pages/Inventory/Transfer/Show.tsx index 4423655..9c66df2 100644 --- a/resources/js/Pages/Inventory/Transfer/Show.tsx +++ b/resources/js/Pages/Inventory/Transfer/Show.tsx @@ -1,4 +1,3 @@ - import { useState, useEffect } from "react"; import AuthenticatedLayout from "@/Layouts/AuthenticatedLayout"; import { Head, router, Link } from "@inertiajs/react"; @@ -37,8 +36,10 @@ import { Plus, Save, Trash2, ArrowLeft, CheckCircle, Package, ArrowLeftRight, Pr import { toast } from "sonner"; import axios from "axios"; import { Can } from '@/Components/Permission/Can'; +import { usePermission } from '@/hooks/usePermission'; export default function Show({ order }: any) { + const { can } = usePermission(); const [items, setItems] = useState(order.items || []); const [remarks, setRemarks] = useState(order.remarks || ""); const [isSaving, setIsSaving] = useState(false); @@ -181,7 +182,8 @@ export default function Show({ order }: any) { }); }; - const isReadOnly = order.status !== 'draft'; + const canEdit = can('inventory_transfer.edit'); + const isReadOnly = order.status !== 'draft' || !canEdit; return ( - + !open && setDeleteId(null)}>