From a884da7057100ee2beb055e2749607db9ff6590f Mon Sep 17 00:00:00 2001
From: renshen <1005457301@qq.com>
Date: Tue, 13 Oct 2026 14:57:20 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BE=A7=E8=BE=B9=E6=A0=8F=E8=8F=9C=E5=8D=95?=
=?UTF-8?q?=E6=90=9C=E7=B4=A2=20+=20=E5=B7=B2=E6=89=93=E5=BC=80=E9=A1=B5?=
=?UTF-8?q?=E9=9D=A2=E6=A0=87=E7=AD=BE=E6=A0=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
1)侧边栏菜单上方新增搜索框:按关键字过滤菜单项(如输「快递应付」直接定位),
无匹配时给出提示,Esc 清空。
2)页面顶部新增「已打开页面」标签栏:点开过的业务页面并排固定在页面上方,
点标签直接切回(回到最近一次带筛选的地址);同一张页面按路径去重;
标签按账号存在浏览器本地(localStorage),没退出登录就一直保留;
支持单个关闭和「清空(保留当前页)」,最多并排 15 个,超出横向滚动。
钉钉单页入口模式下不显示这个标签栏。
---
.../pages/partials/open-page-tabs.blade.php | 177 ++++++++++++++++++
.../views/components/layouts/admin.blade.php | 4 +
.../components/layouts/admin/menu.blade.php | 65 +++++++
.../Business/StoreViolationAlertPageTest.php | 1 +
tests/Feature/Settings/NavigationTest.php | 17 ++
5 files changed, 264 insertions(+)
create mode 100644 resources/views/business/pages/partials/open-page-tabs.blade.php
diff --git a/resources/views/business/pages/partials/open-page-tabs.blade.php b/resources/views/business/pages/partials/open-page-tabs.blade.php
new file mode 100644
index 00000000..931d2de6
--- /dev/null
+++ b/resources/views/business/pages/partials/open-page-tabs.blade.php
@@ -0,0 +1,177 @@
+{{--
+ 已打开页面标签栏:点开过的业务页面固定在顶部并排显示,方便来回切换;
+ 只要没退出登录就一直保留(按账号存在浏览器本地,不外传)。
+--}}
+
+
+
+
+
diff --git a/resources/views/components/layouts/admin.blade.php b/resources/views/components/layouts/admin.blade.php
index 1075224e..026eec1b 100644
--- a/resources/views/components/layouts/admin.blade.php
+++ b/resources/views/components/layouts/admin.blade.php
@@ -92,6 +92,10 @@
+ @unless ($focusEntry)
+ @include('business.pages.partials.open-page-tabs')
+ @endunless
+
diff --git a/resources/views/components/layouts/admin/menu.blade.php b/resources/views/components/layouts/admin/menu.blade.php
index 75ff220f..687c82cb 100644
--- a/resources/views/components/layouts/admin/menu.blade.php
+++ b/resources/views/components/layouts/admin/menu.blade.php
@@ -199,6 +199,22 @@
@endphp
+
+
+
+
@foreach ($prototypeGroups as $group)
@@ -226,6 +246,7 @@
@endforeach
@endforeach
+
没有匹配的菜单
@@ -347,3 +368,47 @@
@stack('menu_end')
+
+
diff --git a/tests/Feature/Business/StoreViolationAlertPageTest.php b/tests/Feature/Business/StoreViolationAlertPageTest.php
index 171b7a1a..2b2e3259 100644
--- a/tests/Feature/Business/StoreViolationAlertPageTest.php
+++ b/tests/Feature/Business/StoreViolationAlertPageTest.php
@@ -149,6 +149,7 @@ class StoreViolationAlertPageTest extends FeatureTestCase
]))
->assertOk()
->assertDontSee('id="sidenav-main"', false)
+ ->assertDontSee('data-open-tabs', false)
->assertSeeText('店铺违规信息预警');
// 同目录下的另一个页面(流程统计)在钉钉里同样是单页模式。
diff --git a/tests/Feature/Settings/NavigationTest.php b/tests/Feature/Settings/NavigationTest.php
index 851c5832..f92217f9 100644
--- a/tests/Feature/Settings/NavigationTest.php
+++ b/tests/Feature/Settings/NavigationTest.php
@@ -188,6 +188,23 @@ class NavigationTest extends FeatureTestCase
->assertSee('/workspace/financial-risk-control/store-violation-alert', false);
}
+ public function test_business_pages_render_menu_filter_and_open_page_tabs(): void
+ {
+ $this->loginAs()
+ ->get(route('business.pages.show', [
+ 'section' => 'financial-risk-control',
+ 'page' => 'store-violation-alert',
+ ]))
+ ->assertOk()
+ // 侧边栏菜单搜索框(方便按名称找页面)。
+ ->assertSee('id="prototype-menu-filter"', false)
+ ->assertSee('prototype-menu-filter', false)
+ // 已打开页面标签栏(固定在页面上方,点开的页面并排显示)。
+ ->assertSee('data-open-tabs', false)
+ ->assertSee('data-open-tabs-list', false)
+ ->assertSee('caiwu.open-pages.v1.', false);
+ }
+
public function testProcessStatisticsPageIsAvailableUnderRiskControl(): void
{
$this->loginAs()