fix: keep back when filtering subscription show related orders

This commit is contained in:
萝卜
2026-03-14 10:59:10 +00:00
parent 50d90442c1
commit c033445005

View File

@@ -137,7 +137,7 @@
<a href="/admin/site-subscriptions" class="muted"> 返回订阅列表</a>
@if($subscription->subscription_no)
<div class="mt-6 actions gap-10">
<a class="btn btn-secondary btn-sm" href="{!! $makePlatformOrderUrl(['site_subscription_id' => $subscription->id]) !!}">查看关联平台订单</a>
<a class="btn btn-secondary btn-sm" href="{!! $makePlatformOrderUrl(['site_subscription_id' => $subscription->id]) !!}">查看关联平台订单按订阅ID精确过滤</a>
<a class="btn btn-secondary btn-sm" href="{!! $makePlatformOrderUrl(['site_subscription_id' => $subscription->id, 'syncable_only' => '1']) !!}">查看可同步订单</a>
@php
$createRenewalOrderUrl = '/admin/platform-orders/create?' . \Illuminate\Support\Arr::query([
@@ -373,16 +373,53 @@
<div class="mb-10">
<span class="muted">同步状态筛选:</span>
@php $cur = $summaryStats['current_order_sync_status'] ?? ''; @endphp
<a href="?" class="muted">全部</a>
@php
$cur = $summaryStats['current_order_sync_status'] ?? '';
// 重要:这里的筛选链接需要保留 back否则点击后会丢失“返回上一页保留上下文”能力。
// 同时href 中会包含多个 query 参数,必须使用 `{!! !!}` 原样输出,避免 `&` 被转义为 `&amp;`。
$incomingBack = (string) request()->query('back', '');
$safeBack = (str_starts_with($incomingBack, '/')
&& !preg_match('/["\'<>]/', $incomingBack)
&& !preg_match('/(?:^|[?&])back=/', $incomingBack))
? $incomingBack
: '';
$baseQuery = request()->query();
unset($baseQuery['order_sync_status']);
if ($safeBack !== '') {
$baseQuery['back'] = $safeBack;
} else {
unset($baseQuery['back']);
}
$makeSelfFilterUrl = function (?string $orderSyncStatus) use ($subscription, $baseQuery) {
$q = $baseQuery;
if ($orderSyncStatus !== null && $orderSyncStatus !== '') {
$q['order_sync_status'] = $orderSyncStatus;
} else {
unset($q['order_sync_status']);
}
$url = '/admin/site-subscriptions/' . $subscription->id;
if (count($q) > 0) {
$url .= '?' . \Illuminate\Support\Arr::query($q);
}
return $url;
};
@endphp
<a href="{!! $makeSelfFilterUrl(null) !!}" class="muted">全部</a>
<span class="muted"></span>
<a href="?order_sync_status=synced" class="muted">已同步</a>
<a href="{!! $makeSelfFilterUrl('synced') !!}" class="muted">已同步</a>
<span class="muted"></span>
<a href="?order_sync_status=failed" class="muted">同步失败</a>
<a href="{!! $makeSelfFilterUrl('failed') !!}" class="muted">同步失败</a>
<span class="muted"></span>
<a href="?order_sync_status=unsynced" class="muted">未同步</a>
<a href="{!! $makeSelfFilterUrl('unsynced') !!}" class="muted">未同步</a>
<span class="muted"></span>
<a href="?order_sync_status=syncable" class="muted">可同步</a>
<a href="{!! $makeSelfFilterUrl('syncable') !!}" class="muted">可同步</a>
<span class="muted"></span>
<a href="{!! $makePlatformOrderUrl(['site_subscription_id' => $subscription->id]) !!}" class="muted">在平台订单页打开</a>
@if($cur)