+
+ | ID | 站点名称 | Slug | 套餐 | 状态 | 联系人 | 操作 |
+
+ @forelse($merchants as $merchant)
+
+ | {{ $merchant->id }} |
+ {{ $merchant->name }} |
+ {{ $merchant->slug }} |
+ {{ $merchant->plan }} |
+ {{ $merchant->status }} |
+ {{ $merchant->contact_name }} / {{ $merchant->contact_phone }} |
+
+
+ 当前阶段请使用该站点管理员账号登录
+ |
+
+ @empty
+ | 暂无站点 |
+ @endforelse
+
+
-
-
站点列表
-
- | ID | 站点名称 | Slug | 套餐 | 状态 | 联系人 | 操作 |
-
- @foreach($merchants as $merchant)
-
- | {{ $merchant->id }} |
- {{ $merchant->name }} |
- {{ $merchant->slug }} |
- {{ $merchant->plan }} |
- {{ $merchant->status }} |
- {{ $merchant->contact_name }} / {{ $merchant->contact_phone }} |
-
-
- 当前阶段请使用该站点管理员账号登录
- |
-
- @endforeach
-
-
+ {{ $merchants->links('pagination.admin') }}
+
-
-
@endsection
diff --git a/tests/Feature/AdminMerchantsIndexShouldUseFiltersAndListCardStructureTest.php b/tests/Feature/AdminMerchantsIndexShouldUseFiltersAndListCardStructureTest.php
new file mode 100644
index 0000000..26486c3
--- /dev/null
+++ b/tests/Feature/AdminMerchantsIndexShouldUseFiltersAndListCardStructureTest.php
@@ -0,0 +1,45 @@
+seed();
+
+ $this->post('/admin/login', [
+ 'email' => 'platform.admin@demo.local',
+ 'password' => 'Platform@123456',
+ ])->assertRedirect('/admin');
+ }
+
+ public function test_admin_merchants_index_should_use_filters_and_list_card_structure(): void
+ {
+ $this->loginAsPlatformAdmin();
+
+ $response = $this->get('/admin/merchants');
+ $response->assertOk();
+
+ // 护栏:站点管理页应使用统一 Filters Card + List Card 结构,便于全站后台观感一致。
+ $response->assertSee('filters-card', false);
+ $response->assertSee('filters-summary', false);
+ $response->assertSee('filters-body', false);
+ $response->assertSee('filters-grid', false);
+
+ $response->assertSee('list-card', false);
+ $response->assertSee('list-card-header', false);
+ $response->assertSee('list-card-body', false);
+ $response->assertSee('list-card-table', false);
+
+ // 分页统一:此页数据量可能不足导致 hasPages=false,因此用扫描型护栏断言。
+ $blade = file_get_contents(resource_path('views/admin/merchants/index.blade.php'));
+ $this->assertIsString($blade);
+ $this->assertStringContainsString("links('pagination.admin')", $blade);
+ }
+}