Admin subscriptions: batch mark expired with safety guards

This commit is contained in:
萝卜
2026-03-17 00:27:04 +08:00
parent 0e8a9797b9
commit 7b143e1a11
6 changed files with 271 additions and 1 deletions

View File

@@ -237,6 +237,12 @@
<div class="card mb-20">
<h3>工具</h3>
@php
$batchMarkExpiredEnabled = (string) ($filters['expiry'] ?? '') === 'expired';
$batchMarkExpiredReason = $batchMarkExpiredEnabled ? '' : '请先进入「已过期expiry=expired」集合后再执行批量标记。';
@endphp
<div class="grid-2">
<form method="get" action="/admin/site-subscriptions/export" class="actions gap-10">
<input type="hidden" name="download" value="1">
@@ -264,6 +270,28 @@
@if(!($isExpiryView ?? false) && $attachOrderId <= 0)
<a class="btn btn-sm" href="{!! $createOrderFromSubIndexUrl !!}">续费下单(先选订阅)</a>
@endif
<form method="post" action="/admin/site-subscriptions/batch-mark-expired" data-action="disable-on-submit" onsubmit="return confirm('确认将当前筛选集合内的订阅批量标记为已过期?该操作会更新 status 字段。');" class="actions gap-10">
@csrf
<input type="hidden" name="status" value="{{ $filters['status'] ?? '' }}">
<input type="hidden" name="merchant_id" value="{{ $filters['merchant_id'] ?? '' }}">
<input type="hidden" name="plan_id" value="{{ $filters['plan_id'] ?? '' }}">
<input type="hidden" name="expiry" value="{{ $filters['expiry'] ?? '' }}">
<input type="hidden" name="keyword" value="{{ $filters['keyword'] ?? '' }}">
<label class="muted form-inline-row">
<span>确认输入</span>
<input type="text" name="confirm" placeholder="YES" class="w-140" @disabled(! $batchMarkExpiredEnabled)>
<span>(必须输入 YES 才会执行)</span>
</label>
<div>
<button class="btn btn-danger btn-sm" type="submit" @disabled(! $batchMarkExpiredEnabled) title="{{ $batchMarkExpiredReason }}">批量标记已过期(当前集合)</button>
@if(! $batchMarkExpiredEnabled)
<div class="adm-tool-blocked-hint">提示:{{ $batchMarkExpiredReason }}</div>
@endif
</div>
</form>
</div>
<div class="muted muted-xs mt-6">
@if($attachOrderId > 0)