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 -