diff --git a/resources/views/admin/platform_orders/index.blade.php b/resources/views/admin/platform_orders/index.blade.php index 331a000..28e7b6e 100644 --- a/resources/views/admin/platform_orders/index.blade.php +++ b/resources/views/admin/platform_orders/index.blade.php @@ -67,10 +67,41 @@ @endphp @if($incomingLeadId > 0) -
- 当前线索:#{{ $incomingLeadId }} - (已按 lead_id 过滤订单集合) - 清除线索筛选 +
+
+ 当前线索:#{{ $incomingLeadId }} + (已按 lead_id 过滤订单集合) + 清除线索筛选 +
+ +
+
线索治理入口:
+ @php + // 线索治理快捷入口:需要保留 lead_id + 其它业务上下文(merchant/plan/subscription/keyword/back), + // 但不应继承 syncable_only/fail_only/page 等“工具型开关”,避免从其它集合切换时产生误判。 + $buildLeadGovernUrl = function (array $overrides) use ($safeBackForLinks) { + return \App\Support\BackUrl::currentPathQuickFilter( + ['lead_id', 'merchant_id', 'plan_id', 'site_subscription_id', 'keyword'], + $overrides, + $safeBackForLinks + ); + }; + + $leadUnpaidUrl = $buildLeadGovernUrl([ + 'payment_status' => 'unpaid', + 'status' => null, + ]); + + $leadPaidPendingUrl = $buildLeadGovernUrl([ + 'payment_status' => 'paid', + 'status' => 'pending', + ]); + @endphp + +
@endif @@ -163,9 +194,16 @@
@php - // 快捷筛选:尽量保留当前筛选(站点/套餐/订阅ID/back 等),仅覆盖目标筛选字段,并清空 page。 + // 快捷筛选:尽量保留当前筛选上下文(站点/套餐/订阅ID/keyword/lead_id/back 等),仅覆盖目标筛选字段,并清空 page。 + // 注意:不保留 syncable_only/fail_only 等“工具型开关”,避免用户从一个集合切到另一个集合时被残留开关影响(导致误判/空结果)。 $buildQuickFilterUrl = function (array $overrides) use ($safeBackForLinks) { - return \App\Support\BackUrl::currentPathQuickFilter(['merchant_id', 'plan_id', 'site_subscription_id', 'keyword', 'lead_id'], $overrides, $safeBackForLinks); + // 快捷筛选:仅保留上下文字段(站点/套餐/订阅ID/keyword/lead_id/安全 back),避免把其它筛选条件叠加导致空结果。 + // 该构造器内部会强制清空 page,并且不会继承 syncable_only/fail_only 等“工具型开关”。 + return \App\Support\BackUrl::currentPathQuickFilter( + ['merchant_id', 'plan_id', 'site_subscription_id', 'keyword', 'lead_id'], + $overrides, + $safeBackForLinks + ); }; // “全部”:清空筛选,但保留 back(用于返回来源页) diff --git a/tests/Feature/AdminPlatformOrderIndexLeadGovernanceQuickLinksTest.php b/tests/Feature/AdminPlatformOrderIndexLeadGovernanceQuickLinksTest.php new file mode 100644 index 0000000..92490b3 --- /dev/null +++ b/tests/Feature/AdminPlatformOrderIndexLeadGovernanceQuickLinksTest.php @@ -0,0 +1,50 @@ +seed(); + + $this->post('/admin/login', [ + 'email' => 'platform.admin@demo.local', + 'password' => 'Platform@123456', + ])->assertRedirect('/admin'); + } + + public function test_index_should_render_lead_governance_quick_links_when_lead_locked(): void + { + $this->loginAsPlatformAdmin(); + + $url = '/admin/platform-orders?' . Arr::query([ + 'lead_id' => 12, + ]); + + $res = $this->get($url); + $res->assertOk(); + + $res->assertSee('线索治理入口:', false); + + $unpaidUrl = '/admin/platform-orders?' . Arr::query([ + 'lead_id' => 12, + 'payment_status' => 'unpaid', + ]); + + $paidPendingUrl = '/admin/platform-orders?' . Arr::query([ + 'lead_id' => 12, + 'payment_status' => 'paid', + 'status' => 'pending', + ]); + + $res->assertSee($unpaidUrl, false); + $res->assertSee($paidPendingUrl, false); + } +}