From 8dbdd3c4c3325a0ec39f52200ca7ef6acefa734a Mon Sep 17 00:00:00 2001 From: limeng <1131177064@qq.com> Date: Mon, 12 Oct 2026 13:23:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=BF=AB=E9=80=92=E5=BA=94=E4=BB=98):=20?= =?UTF-8?q?=E5=B7=A6=E4=BE=A7=E5=BF=AB=E9=80=92=E6=8A=A5=E4=BB=B7=E5=85=A5?= =?UTF-8?q?=E5=8F=A3=E6=89=93=E5=BC=80=E5=9B=9B=E4=B8=AA=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Business/Pages.php | 7 +++ app/Listeners/Menu/ShowInAdmin.php | 22 +++++++- .../final-workspace.blade.php | 50 ++++-------------- resources/views/business/pages/show.blade.php | 2 +- .../Business/QuoteManagementPageTest.php | 52 +++++++++++++++++-- 5 files changed, 85 insertions(+), 48 deletions(-) diff --git a/app/Http/Controllers/Business/Pages.php b/app/Http/Controllers/Business/Pages.php index d11897b8..e7136f59 100644 --- a/app/Http/Controllers/Business/Pages.php +++ b/app/Http/Controllers/Business/Pages.php @@ -360,6 +360,13 @@ class Pages extends Controller abort_if(empty($pageConfig), 404); + if ($section === 'courier-payables' && $page === 'courier-quote') { + abort_if(empty($pageConfig['children']), 403, '当前账号没有可访问的快递报价页面。'); + abort_if($tab !== null, 404); + + return view('business.pages.show', $this->viewData($sectionConfig, $pageConfig)); + } + if (! empty($pageConfig['children']) && empty($pageConfig['tabs'])) { return $this->redirectToPage($sectionConfig, $pageConfig['children'][0]); } diff --git a/app/Listeners/Menu/ShowInAdmin.php b/app/Listeners/Menu/ShowInAdmin.php index 487b36e1..4e575566 100644 --- a/app/Listeners/Menu/ShowInAdmin.php +++ b/app/Listeners/Menu/ShowInAdmin.php @@ -119,6 +119,10 @@ class ShowInAdmin $order = ($sectionIndex + 1) * 10; if (empty($pages) || in_array($section['slug'], self::WORKSPACE_SECTION_SLUGS, true)) { + $quoteDirectory = $section['slug'] === 'courier-payables' + ? collect($pages)->firstWhere('slug', 'courier-quote') + : null; + $quoteSlugs = array_merge(['courier-quote'], array_column($quoteDirectory['children'] ?? [], 'slug')); $menu->route( 'business.pages.show', $section['title'], @@ -126,10 +130,26 @@ class ShowInAdmin $order, [ 'icon' => $section['icon'], - 'active' => fn () => request()->route('section') === $section['slug'], + 'active' => fn () => request()->route('section') === $section['slug'] + && (! $quoteDirectory || ! in_array(request()->route('page'), $quoteSlugs, true)), ] ); + if (! empty($quoteDirectory['children'])) { + $menu->route( + 'business.pages.show', + $quoteDirectory['title'], + ['section' => $section['slug'], 'page' => $quoteDirectory['slug']], + $order + 1, + [ + 'icon' => '', + 'class' => 'ltr:ml-8 rtl:mr-8', + 'active' => fn () => request()->route('section') === $section['slug'] + && in_array(request()->route('page'), $quoteSlugs, true), + ] + ); + } + continue; } diff --git a/resources/views/business/pages/courier-payables/final-workspace.blade.php b/resources/views/business/pages/courier-payables/final-workspace.blade.php index 071beb8e..4597d31a 100644 --- a/resources/views/business/pages/courier-payables/final-workspace.blade.php +++ b/resources/views/business/pages/courier-payables/final-workspace.blade.php @@ -1,30 +1,17 @@ @php $courierSection = collect(\App\Utilities\SidebarPermissions::navigationFor(user()))->firstWhere('slug', 'courier-payables'); - $courierPages = $courierSection['pages'] ?? []; + $isQuoteWorkspace = ($page['slug'] ?? null) === 'courier-quote'; + $courierPages = $isQuoteWorkspace + ? ($page['children'] ?? []) + : array_values(array_filter($courierSection['pages'] ?? [], static fn (array $item) => $item['slug'] !== 'courier-quote')); @endphp -