From 28e9e3bbe884d08ec85769b4b5955a44f1f68829 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=9D=E5=8D=9C?= Date: Tue, 17 Mar 2026 09:52:34 +0800 Subject: [PATCH] refactor(platform-orders): extract blocked hint component for tool actions --- .../components/tool_blocked_hint.blade.php | 33 +++++ .../admin/platform_orders/index.blade.php | 135 +++++++++--------- 2 files changed, 103 insertions(+), 65 deletions(-) create mode 100644 resources/views/admin/components/tool_blocked_hint.blade.php diff --git a/resources/views/admin/components/tool_blocked_hint.blade.php b/resources/views/admin/components/tool_blocked_hint.blade.php new file mode 100644 index 0000000..0f9fc6b --- /dev/null +++ b/resources/views/admin/components/tool_blocked_hint.blade.php @@ -0,0 +1,33 @@ +@php + /** + * 通用“工具被阻断提示块”。 + * + * 用法: + * @include('admin.components.tool_blocked_hint', [ + * 'dataRole' => 'xxx-blocked-hint', + * 'reason' => '提示原因', + * // actions: [['label' => '去xxx', 'url' => $url], ...] + * 'actions' => [ ... ], + * ]) + */ + $dataRole = (string) ($dataRole ?? ''); + $reason = (string) ($reason ?? ''); + $actions = (array) ($actions ?? []); +@endphp + +
+
提示:{{ $reason }}
+ @if(count($actions) > 0) +
+ @foreach($actions as $a) + @php + $label = (string) ($a['label'] ?? ''); + $url = (string) ($a['url'] ?? ''); + @endphp + @if($label !== '' && $url !== '') + {{ $label }} + @endif + @endforeach +
+ @endif +
diff --git a/resources/views/admin/platform_orders/index.blade.php b/resources/views/admin/platform_orders/index.blade.php index ff8fa5a..d1f9414 100644 --- a/resources/views/admin/platform_orders/index.blade.php +++ b/resources/views/admin/platform_orders/index.blade.php @@ -875,19 +875,20 @@
@if($batchActivateBlocked) -
-
提示:{{ $batchActivateBlockedReason }}
- @php - // 提效:被阻断时给一键跳转到「可同步订阅集合」(口径:syncable_only=1 + sync_status=unsynced)。 - $goSyncableUrl = $buildQuickFilterUrl([ - 'syncable_only' => '1', - 'sync_status' => 'unsynced', - ]); - @endphp - -
+ @php + // 提效:被阻断时给一键跳转到「可同步订阅集合」(口径:syncable_only=1 + sync_status=unsynced)。 + $goSyncableUrl = $buildQuickFilterUrl([ + 'syncable_only' => '1', + 'sync_status' => 'unsynced', + ]); + @endphp + @include('admin.components.tool_blocked_hint', [ + 'dataRole' => 'batch-activate-subscriptions-blocked-hint', + 'reason' => $batchActivateBlockedReason, + 'actions' => [ + ['label' => '切到可同步订阅集合', 'url' => $goSyncableUrl], + ], + ]) @endif
@@ -931,19 +932,20 @@
@if($batchBmpaBlocked) -
-
提示:{{ $batchBmpaBlockedReason }}
- @php - // 提效:被阻断时给一键跳转到「可BMPA处理集合」(口径:pending + unpaid)。 - $goBmpaProcessableUrl = $buildQuickFilterUrl([ - 'status' => 'pending', - 'payment_status' => 'unpaid', - ]); - @endphp - -
+ @php + // 提效:被阻断时给一键跳转到「可BMPA处理集合」(口径:pending + unpaid)。 + $goBmpaProcessableUrl = $buildQuickFilterUrl([ + 'status' => 'pending', + 'payment_status' => 'unpaid', + ]); + @endphp + @include('admin.components.tool_blocked_hint', [ + 'dataRole' => 'batch-bmpa-blocked-hint', + 'reason' => $batchBmpaBlockedReason, + 'actions' => [ + ['label' => '切到可BMPA处理集合', 'url' => $goBmpaProcessableUrl], + ], + ]) @endif
@@ -987,21 +989,22 @@
@if($batchMarkActivatedBlocked) -
-
提示:{{ $batchMarkActivatedBlockedReason }}
- @php - // 提效:当被阻断时给一键跳转到“待生效集合”的入口(口径:paid + pending + sync_status=unsynced)。 - // 说明:使用快捷筛选构造器,保留上下文(站点/套餐/订阅/keyword/lead/时间范围/back),并自动清空 page 与工具型开关。 - $goPaidPendingUnsyncedUrl = $buildQuickFilterUrl([ - 'payment_status' => 'paid', - 'status' => 'pending', - 'sync_status' => 'unsynced', - ]); - @endphp - -
+ @php + // 提效:当被阻断时给一键跳转到“待生效集合”的入口(口径:paid + pending + sync_status=unsynced)。 + // 说明:使用快捷筛选构造器,保留上下文(站点/套餐/订阅/keyword/lead/时间范围/back),并自动清空 page 与工具型开关。 + $goPaidPendingUnsyncedUrl = $buildQuickFilterUrl([ + 'payment_status' => 'paid', + 'status' => 'pending', + 'sync_status' => 'unsynced', + ]); + @endphp + @include('admin.components.tool_blocked_hint', [ + 'dataRole' => 'batch-mark-activated-blocked-hint', + 'reason' => $batchMarkActivatedBlockedReason, + 'actions' => [ + ['label' => '切到待生效集合', 'url' => $goPaidPendingUnsyncedUrl], + ], + ]) @endif
@@ -1037,18 +1040,19 @@
@if($clearSyncBlocked) -
-
提示:{{ $clearSyncBlockedReason }}
- @php - // 提效:清理同步失败标记前必须先锁定失败集合;被阻断时给一键跳转入口。 - $goSyncFailedUrl = $buildQuickFilterUrl([ - 'sync_status' => 'failed', - ]); - @endphp - -
+ @php + // 提效:清理同步失败标记前必须先锁定失败集合;被阻断时给一键跳转入口。 + $goSyncFailedUrl = $buildQuickFilterUrl([ + 'sync_status' => 'failed', + ]); + @endphp + @include('admin.components.tool_blocked_hint', [ + 'dataRole' => 'clear-sync-errors-blocked-hint', + 'reason' => $clearSyncBlockedReason, + 'actions' => [ + ['label' => '切到同步失败集合', 'url' => $goSyncFailedUrl], + ], + ]) @endif
@@ -1083,18 +1087,19 @@
@if($clearBmpaBlocked) -
-
提示:{{ $clearBmpaBlockedReason }}
- @php - // 提效:清理 BMPA 失败标记前必须先锁定 BMPA 失败集合;被阻断时给一键跳转入口。 - $goBmpaFailedUrl = $buildQuickFilterUrl([ - 'bmpa_failed_only' => '1', - ]); - @endphp - -
+ @php + // 提效:清理 BMPA 失败标记前必须先锁定 BMPA 失败集合;被阻断时给一键跳转入口。 + $goBmpaFailedUrl = $buildQuickFilterUrl([ + 'bmpa_failed_only' => '1', + ]); + @endphp + @include('admin.components.tool_blocked_hint', [ + 'dataRole' => 'clear-bmpa-errors-blocked-hint', + 'reason' => $clearBmpaBlockedReason, + 'actions' => [ + ['label' => '切到 BMPA 失败集合', 'url' => $goBmpaFailedUrl], + ], + ]) @endif