From 84fa9eb63a459df6efc78a9d94609fd946423ea5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=9D=E5=8D=9C?= Date: Mon, 16 Mar 2026 03:15:32 +0800 Subject: [PATCH] chore(admin-ui): migrate admin orders index to filters/list card and admin pagination --- resources/views/admin/orders/index.blade.php | 120 ++++++++++-------- ...UseFiltersCardAndListCardStructureTest.php | 46 +++++++ 2 files changed, 114 insertions(+), 52 deletions(-) create mode 100644 tests/Feature/AdminOrdersIndexShouldUseFiltersCardAndListCardStructureTest.php diff --git a/resources/views/admin/orders/index.blade.php b/resources/views/admin/orders/index.blade.php index 3fbf8d0..015c4d4 100644 --- a/resources/views/admin/orders/index.blade.php +++ b/resources/views/admin/orders/index.blade.php @@ -4,28 +4,38 @@ @section('page_title', '订单监控') @section('content') -
-

当前页面用于总台视角查看全局订单状态,后续商家后台将承接商家侧订单处理动作。

-

当前订单列表已接入缓存:{{ $cacheMeta['store'] }} / TTL {{ $cacheMeta['ttl'] }}。

- @php - $exportQuery = http_build_query(array_filter($filters, fn ($value) => $value !== null && $value !== '')); - @endphp - -

筛选条件

- @if(!empty($filters['validation_errors'])) -
- 筛选条件有误: -
    - @foreach($filters['validation_errors'] as $validationError) -
  • {{ $validationError }}
  • - @endforeach -
+@php + $exportQuery = http_build_query(array_filter($filters, fn ($value) => $value !== null && $value !== '')); +@endphp + +
+ +
+
+

筛选条件

+
总台视角全局订单监控(后续商家后台将承接商家侧订单处理动作)。
+
+
+ 导出当前筛选结果 CSV + 点击收起/展开 +
- @endif -
-
+
当前订单列表已接入缓存:{{ $cacheMeta['store'] }} / TTL {{ $cacheMeta['ttl'] }}。
+
+ +
+ @if(!empty($filters['validation_errors'])) +
+ 筛选条件有误: +
    + @foreach($filters['validation_errors'] as $validationError) +
  • {{ $validationError }}
  • + @endforeach +
+
+ @endif + + @@ -39,9 +49,9 @@
重置
-
- -
+ +
+

当前筛选摘要

@@ -139,33 +149,39 @@
-
-

订单列表

- - - - @forelse($orders as $order) - - - - - - - - - - - - - - - - @empty - - @endforelse - -
ID商家订单号平台买家支付金额创建时间支付时间发货时间完成时间状态操作
{{ $order->id }}{{ $order->merchant?->name ?? ('商家#'.$order->merchant_id) }}{{ $order->order_no }}{{ $platformLabels[$order->platform] ?? $order->platform }}{{ $order->buyer_name }}
{{ $paymentChannelLabels[$order->payment_channel] ?? $order->payment_channel }}
{{ $paymentStatusLabels[$order->payment_status] ?? $order->payment_status }}
¥{{ number_format($order->pay_amount, 2) }}{{ $order->created_at?->format('Y-m-d H:i') }}{{ $order->paid_at?->format('Y-m-d H:i') ?? '-' }}{{ $order->shipped_at?->format('Y-m-d H:i') ?? '-' }}{{ $order->completed_at?->format('Y-m-d H:i') ?? '-' }}{{ $statusLabels[$order->status] ?? $order->status }}
@csrf
暂无订单
-
+
+
+
+

订单列表

+
+
+
+ + + + @forelse($orders as $order) + + + + + + + + + + + + + + + + @empty + + @endforelse + +
ID商家订单号平台买家支付金额创建时间支付时间发货时间完成时间状态操作
{{ $order->id }}{{ $order->merchant?->name ?? ('商家#'.$order->merchant_id) }}{{ $order->order_no }}{{ $platformLabels[$order->platform] ?? $order->platform }}{{ $order->buyer_name }}
{{ $paymentChannelLabels[$order->payment_channel] ?? $order->payment_channel }}
{{ $paymentStatusLabels[$order->payment_status] ?? $order->payment_status }}
¥{{ number_format($order->pay_amount, 2) }}{{ $order->created_at?->format('Y-m-d H:i') }}{{ $order->paid_at?->format('Y-m-d H:i') ?? '-' }}{{ $order->shipped_at?->format('Y-m-d H:i') ?? '-' }}{{ $order->completed_at?->format('Y-m-d H:i') ?? '-' }}{{ $statusLabels[$order->status] ?? $order->status }}
@csrf
暂无订单
-
{{ $orders->links() }}
+ {{ $orders->links('pagination.admin') }} +
+
@endsection diff --git a/tests/Feature/AdminOrdersIndexShouldUseFiltersCardAndListCardStructureTest.php b/tests/Feature/AdminOrdersIndexShouldUseFiltersCardAndListCardStructureTest.php new file mode 100644 index 0000000..fb97b0b --- /dev/null +++ b/tests/Feature/AdminOrdersIndexShouldUseFiltersCardAndListCardStructureTest.php @@ -0,0 +1,46 @@ +seed(); + + $this->post('/admin/login', [ + 'email' => 'platform.admin@demo.local', + 'password' => 'Platform@123456', + ])->assertRedirect('/admin'); + } + + public function test_admin_orders_index_should_use_filters_card_and_list_card_structure(): void + { + $this->loginAsPlatformAdmin(); + + $response = $this->get('/admin/orders'); + $response->assertOk(); + + // 护栏:订单监控页的筛选区/列表区需走统一骨架,便于全站后台观感一致。 + $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); + + // 分页统一:此页可能只有 1 页数据(hasPages=false 时不会渲染 adm-pagination)。 + // 因此这里用“扫描型护栏”约束:Blade 必须显式使用 admin pagination view。 + $blade = file_get_contents(resource_path('views/admin/orders/index.blade.php')); + $this->assertIsString($blade); + $this->assertStringContainsString("links('pagination.admin')", $blade); + } +}