feat(governance): 批次页跳转列表自动定位到筛选区(anchor)

This commit is contained in:
萝卜
2026-03-17 16:30:15 +08:00
parent 38ac28ada2
commit 408050666f
4 changed files with 54 additions and 21 deletions

View File

@@ -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');
}
}