feat(governance): 批次页跳转列表自动定位到筛选区(anchor)
This commit is contained in:
@@ -97,58 +97,58 @@ class PlatformBatchController extends Controller
|
||||
$governanceLinks = [];
|
||||
|
||||
if ($type === 'bas') {
|
||||
$governanceLinks['all'] = BackUrl::withBack('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
$governanceLinks['all'] = BackUrl::withBackAndFragment('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
'batch_activation_run_id' => $runId,
|
||||
]), $safeBackForLinks);
|
||||
]), $safeBackForLinks, 'filters');
|
||||
|
||||
$governanceLinks['failed'] = BackUrl::withBack('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
$governanceLinks['failed'] = BackUrl::withBackAndFragment('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
'batch_activation_run_id' => $runId,
|
||||
'sync_status' => 'failed',
|
||||
]), $safeBackForLinks);
|
||||
]), $safeBackForLinks, 'filters');
|
||||
|
||||
$governanceLinks['retry_syncable'] = BackUrl::withBack('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
$governanceLinks['retry_syncable'] = BackUrl::withBackAndFragment('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
'batch_activation_run_id' => $runId,
|
||||
'sync_status' => 'unsynced',
|
||||
'syncable_only' => '1',
|
||||
]), $safeBackForLinks);
|
||||
]), $safeBackForLinks, 'filters');
|
||||
|
||||
$topReason = (string) (data_get($summary, 'top_reasons.0.reason') ?? '');
|
||||
$maxLen = (int) config('saasshop.platform_orders.sync_error_keyword_link_max_len', 200);
|
||||
$maxLen = max(50, min(1000, $maxLen));
|
||||
if ($topReason !== '' && mb_strlen($topReason) <= $maxLen) {
|
||||
$governanceLinks['top_reason'] = BackUrl::withBack('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
$governanceLinks['top_reason'] = BackUrl::withBackAndFragment('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
'batch_activation_run_id' => $runId,
|
||||
'sync_status' => 'failed',
|
||||
'sync_error_keyword' => $topReason,
|
||||
]), $safeBackForLinks);
|
||||
]), $safeBackForLinks, 'filters');
|
||||
}
|
||||
}
|
||||
|
||||
if ($type === 'bmpa') {
|
||||
$governanceLinks['all'] = BackUrl::withBack('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
$governanceLinks['all'] = BackUrl::withBackAndFragment('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
'batch_bmpa_run_id' => $runId,
|
||||
]), $safeBackForLinks);
|
||||
]), $safeBackForLinks, 'filters');
|
||||
|
||||
$governanceLinks['failed'] = BackUrl::withBack('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
$governanceLinks['failed'] = BackUrl::withBackAndFragment('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
'batch_bmpa_run_id' => $runId,
|
||||
'bmpa_failed_only' => '1',
|
||||
]), $safeBackForLinks);
|
||||
]), $safeBackForLinks, 'filters');
|
||||
|
||||
$governanceLinks['retry_processable'] = BackUrl::withBack('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
$governanceLinks['retry_processable'] = BackUrl::withBackAndFragment('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
'batch_bmpa_run_id' => $runId,
|
||||
'status' => 'pending',
|
||||
'payment_status' => 'unpaid',
|
||||
]), $safeBackForLinks);
|
||||
]), $safeBackForLinks, 'filters');
|
||||
|
||||
$topReason = (string) (data_get($summary, 'top_reasons.0.reason') ?? '');
|
||||
$maxLen = (int) config('saasshop.platform_orders.sync_error_keyword_link_max_len', 200);
|
||||
$maxLen = max(50, min(1000, $maxLen));
|
||||
if ($topReason !== '' && mb_strlen($topReason) <= $maxLen) {
|
||||
$governanceLinks['top_reason'] = BackUrl::withBack('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
$governanceLinks['top_reason'] = BackUrl::withBackAndFragment('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
'batch_bmpa_run_id' => $runId,
|
||||
'bmpa_failed_only' => '1',
|
||||
'bmpa_error_keyword' => $topReason,
|
||||
]), $safeBackForLinks);
|
||||
]), $safeBackForLinks, 'filters');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -124,18 +124,18 @@
|
||||
$reasonGovUrl = '';
|
||||
if (! $reasonTooLong && $reason !== '') {
|
||||
if ($type === 'bas') {
|
||||
$reasonGovUrl = \App\Support\BackUrl::withBack('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
$reasonGovUrl = \App\Support\BackUrl::withBackAndFragment('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
'batch_activation_run_id' => $runId,
|
||||
'sync_status' => 'failed',
|
||||
'sync_error_keyword' => $reason,
|
||||
]), $safeBackForLinks);
|
||||
]), $safeBackForLinks, 'filters');
|
||||
}
|
||||
if ($type === 'bmpa') {
|
||||
$reasonGovUrl = \App\Support\BackUrl::withBack('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
$reasonGovUrl = \App\Support\BackUrl::withBackAndFragment('/admin/platform-orders?' . \Illuminate\Support\Arr::query([
|
||||
'batch_bmpa_run_id' => $runId,
|
||||
'bmpa_failed_only' => '1',
|
||||
'bmpa_error_keyword' => $reason,
|
||||
]), $safeBackForLinks);
|
||||
]), $safeBackForLinks, 'filters');
|
||||
}
|
||||
}
|
||||
@endphp
|
||||
|
||||
@@ -353,7 +353,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<details class="card mb-20 collapsible filters-card" data-role="collapsible" data-storage-key="admin.platform_orders.filters" open>
|
||||
<details id="filters" class="card mb-20 collapsible filters-card" data-role="collapsible" data-storage-key="admin.platform_orders.filters" open>
|
||||
<summary class="collapsible-summary filters-summary">
|
||||
<div class="flex-between items-center">
|
||||
<h3 class="mb-0">筛选条件</h3>
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Tests\TestCase;
|
||||
|
||||
class AdminPlatformOrderIndexFiltersShouldHaveAnchorIdTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
protected function loginAsPlatformAdmin(): void
|
||||
{
|
||||
$this->seed();
|
||||
|
||||
$this->post('/admin/login', [
|
||||
'email' => 'platform.admin@demo.local',
|
||||
'password' => 'Platform@123456',
|
||||
])->assertRedirect('/admin');
|
||||
}
|
||||
|
||||
public function test_platform_orders_filters_panel_should_have_anchor_id_filters(): void
|
||||
{
|
||||
$this->loginAsPlatformAdmin();
|
||||
|
||||
$html = $this->get('/admin/platform-orders')
|
||||
->assertOk()
|
||||
->getContent();
|
||||
|
||||
$this->assertStringContainsString('id="filters"', $html);
|
||||
$this->assertStringContainsString('data-storage-key="admin.platform_orders.filters"', $html);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user