diff --git a/resources/views/admin/site_subscriptions/index.blade.php b/resources/views/admin/site_subscriptions/index.blade.php
index b6304a6..10db8d7 100644
--- a/resources/views/admin/site_subscriptions/index.blade.php
+++ b/resources/views/admin/site_subscriptions/index.blade.php
@@ -52,18 +52,57 @@
快捷筛选
用于运营快速定位需要处理的订阅集合(口径基于筛选条件组合)。
+
+ @php
+ // 快捷筛选:仅保留“上下文”字段(站点/套餐/back/关键词),避免把其它筛选条件叠加导致空结果
+ $buildQuickFilterUrl = function (array $overrides) {
+ $path = '/' . ltrim(request()->path(), '/');
+
+ $contextKeys = [
+ 'merchant_id' => 1,
+ 'plan_id' => 1,
+ 'back' => 1,
+ 'keyword' => 1,
+ ];
+
+ $q = array_intersect_key(request()->query(), $contextKeys);
+
+ foreach ($overrides as $k => $v) {
+ if ($v === null) {
+ unset($q[$k]);
+ continue;
+ }
+ $q[$k] = $v;
+ }
+
+ if (count($q) === 0) {
+ return $path;
+ }
+
+ return $path . '?' . \Illuminate\Support\Arr::query($q);
+ };
+
+ // “全部”:清空筛选,但保留 back(用于返回来源页)
+ $incomingBack = (string) request()->query('back', '');
+ $safeBack = str_starts_with($incomingBack, '/') ? $incomingBack : '';
+ $allUrl = '/admin/site-subscriptions';
+ if ($safeBack !== '') {
+ $allUrl .= '?' . \Illuminate\Support\Arr::query(['back' => $safeBack]);
+ }
+ @endphp
+
diff --git a/tests/Feature/AdminSiteSubscriptionIndexQuickFilterLinksKeepContextTest.php b/tests/Feature/AdminSiteSubscriptionIndexQuickFilterLinksKeepContextTest.php
new file mode 100644
index 0000000..835c235
--- /dev/null
+++ b/tests/Feature/AdminSiteSubscriptionIndexQuickFilterLinksKeepContextTest.php
@@ -0,0 +1,66 @@
+seed();
+
+ $this->post('/admin/login', [
+ 'email' => 'platform.admin@demo.local',
+ 'password' => 'Platform@123456',
+ ])->assertRedirect('/admin');
+ }
+
+ public function test_quick_filter_links_should_keep_context_and_drop_other_filters(): void
+ {
+ $this->loginAsPlatformAdmin();
+
+ $res = $this->get('/admin/site-subscriptions?merchant_id=2&plan_id=3&back=%2Fadmin%2Fplatform-orders&keyword=abc&page=9&status=pending&expiry=expired');
+ $res->assertOk();
+
+ $html = (string) $res->getContent();
+ preg_match_all('/href="([^"]+)"/', $html, $m);
+ $hrefs = $m[1] ?? [];
+ $this->assertGreaterThan(0, count($hrefs));
+
+ // 找到“已生效”快捷筛选链接(status=activated)
+ $activatedLinks = array_values(array_filter($hrefs, fn ($u) => str_contains($u, '/admin/site-subscriptions') && str_contains($u, 'status=activated')));
+ $this->assertGreaterThanOrEqual(1, count($activatedLinks));
+
+ $parts = parse_url($activatedLinks[0]);
+ parse_str($parts['query'] ?? '', $q);
+
+ // 保留上下文:merchant/plan/back/keyword
+ $this->assertSame('2', (string) ($q['merchant_id'] ?? ''));
+ $this->assertSame('3', (string) ($q['plan_id'] ?? ''));
+ $this->assertSame('/admin/platform-orders', (string) ($q['back'] ?? ''));
+ $this->assertSame('abc', (string) ($q['keyword'] ?? ''));
+
+ // 覆盖/清理:status=activated,且不应带 expiry/page
+ $this->assertSame('activated', (string) ($q['status'] ?? ''));
+ $this->assertArrayNotHasKey('expiry', $q);
+ $this->assertArrayNotHasKey('page', $q);
+
+ // “全部”应清空筛选,仅保留 back
+ $allLinks = array_values(array_filter($hrefs, function ($u) {
+ if (!str_starts_with($u, '/admin/site-subscriptions')) {
+ return false;
+ }
+
+ $p = parse_url($u);
+ parse_str($p['query'] ?? '', $q2);
+
+ return (($q2['back'] ?? null) === '/admin/platform-orders') && (count($q2) === 1);
+ }));
+
+ $this->assertGreaterThanOrEqual(1, count($allLinks));
+ }
+}