fix: 修正部分進貨採購單更新失敗與狀態顯示問題
All checks were successful
Koori-ERP-Deploy-System / deploy-demo (push) Successful in 50s
Koori-ERP-Deploy-System / deploy-production (push) Has been skipped

This commit is contained in:
2026-01-27 13:27:28 +08:00
parent 293358df62
commit a7c445bd3f
22 changed files with 1413 additions and 42 deletions

View File

@@ -21,10 +21,11 @@ import {
Wallet,
BarChart3,
FileSpreadsheet,
BookOpen
BookOpen,
ClipboardCheck
} from "lucide-react";
import { toast, Toaster } from "sonner";
import { useState, useEffect, useMemo } from "react";
import { useState, useEffect, useMemo, useRef } from "react";
import { Link, usePage, Head } from "@inertiajs/react";
import { cn } from "@/lib/utils";
import BreadcrumbNav, { BreadcrumbItemType } from "@/Components/shared/BreadcrumbNav";
@@ -101,10 +102,10 @@ export default function AuthenticatedLayout({
],
},
{
id: "vendor-management",
label: "廠商管理",
id: "supply-chain-management",
label: "供應鏈管理",
icon: <Truck className="h-5 w-5" />,
permission: "vendors.view",
permission: ["vendors.view", "purchase_orders.view", "goods_receipts.view"],
children: [
{
id: "vendor-list",
@@ -113,14 +114,6 @@ export default function AuthenticatedLayout({
route: "/vendors",
permission: "vendors.view",
},
],
},
{
id: "purchase-management",
label: "採購管理",
icon: <ShoppingCart className="h-5 w-5" />,
permission: "purchase_orders.view",
children: [
{
id: "purchase-order-list",
label: "採購單管理",
@@ -128,6 +121,20 @@ export default function AuthenticatedLayout({
route: "/purchase-orders",
permission: "purchase_orders.view",
},
{
id: "goods-receipt-list",
label: "進貨單管理",
icon: <ClipboardCheck className="h-4 w-4" />,
route: "/goods-receipts",
permission: "goods_receipts.view",
},
// {
// id: "delivery-note-list",
// label: "出貨單管理 (開發中)",
// icon: <Package className="h-4 w-4" />,
// // route: "/delivery-notes",
// permission: "delivery_notes.view",
// },
],
},
{
@@ -277,17 +284,21 @@ export default function AuthenticatedLayout({
}, [isCollapsed]);
// 全域監聽 flash 訊息並顯示 Toast
const lastFlash = useRef<any>(null);
useEffect(() => {
// @ts-ignore
if (props.flash?.success) {
// @ts-ignore
if (!props.flash) return;
// 檢查是否與上次顯示的訊息相同透過簡單的物件引用比對Inertia 在重導向後會產生新的 props 物件)
if (props.flash === lastFlash.current) return;
if (props.flash.success) {
toast.success(props.flash.success);
}
// @ts-ignore
if (props.flash?.error) {
// @ts-ignore
if (props.flash.error) {
toast.error(props.flash.error);
}
lastFlash.current = props.flash;
}, [props.flash]);
const toggleExpand = (itemId: string) => {