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
+
+
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)
-
+ @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)
-
+ @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)
-
+ @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)
-
+ @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)
-
+ @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