Files
saasshop/resources/views/admin/plans/show.blade.php

216 lines
9.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@extends('admin.layouts.app')
@section('title', '套餐详情')
@section('page_title', '套餐详情')
@section('content')
@php
$planShowSelf = \App\Support\BackUrl::selfWithoutBack();
$incomingBack = (string) request()->query('back', '');
$safeBackForLinks = \App\Support\BackUrl::sanitizeForLinks($incomingBack);
$makeSubscriptionUrl = function (array $query) use ($planShowSelf) {
return \App\Support\BackUrl::withBack('/admin/site-subscriptions?' . \Illuminate\Support\Arr::query($query), $planShowSelf);
};
$makePlatformOrderUrl = function (array $query) use ($planShowSelf) {
return \App\Support\BackUrl::withBack('/admin/platform-orders?' . \Illuminate\Support\Arr::query($query), $planShowSelf);
};
$editPlanUrl = \App\Support\BackUrl::withBack('/admin/plans/' . $plan->id . '/edit', $planShowSelf);
$createOrderUrl = \App\Support\BackUrl::withBack('/admin/platform-orders/create?' . \Illuminate\Support\Arr::query([
'plan_id' => $plan->id,
'order_type' => 'new_purchase',
]), $planShowSelf);
@endphp
<div class="page-header mb-20" data-page="admin.plans.show">
<div class="page-header-main">
<div>
<div class="page-header-title">套餐详情</div>
<div class="page-header-subtitle">这里用于总台运营查看套餐主数据、关联订阅、关联平台订单,以及当前需要优先治理的收费链路问题。</div>
</div>
<div class="page-header-actions">
@if($safeBackForLinks !== '')
<a href="{!! $safeBackForLinks !!}" class="btn btn-secondary btn-sm">返回上一页(保留上下文)</a>
@else
<a href="/admin/plans" class="btn btn-secondary btn-sm">返回套餐列表</a>
@endif
<a href="{!! $editPlanUrl !!}" class="btn btn-secondary btn-sm">编辑套餐</a>
@if((string) ($plan->status ?? '') === 'active')
<a href="{!! $createOrderUrl !!}" class="btn btn-sm">创建订单</a>
@endif
</div>
</div>
<div class="page-header-meta">
<div>套餐名称:<strong>{{ $plan->name }}</strong></div>
<div>编码:{{ $plan->code }}</div>
<div>状态:{{ $statusLabels[$plan->status] ?? $plan->status }}{{ $plan->status }}</div>
<div>计费周期:{{ $billingCycleLabels[$plan->billing_cycle] ?? $plan->billing_cycle }}</div>
</div>
</div>
<div class="grid-4 mb-20">
<div class="card">
<h3>关联订阅总量</h3>
<div class="num-md">
<a class="link" href="{!! $makeSubscriptionUrl(['plan_id' => $plan->id]) !!}">{{ $summaryStats['subscriptions_count'] ?? 0 }}</a>
</div>
</div>
<div class="card">
<h3>已生效订阅</h3>
<div class="num-md">
<a class="link" href="{!! $makeSubscriptionUrl(['plan_id' => $plan->id, 'status' => 'activated']) !!}">{{ $summaryStats['activated_subscriptions_count'] ?? 0 }}</a>
</div>
</div>
<div class="card">
<h3>7天内到期订阅</h3>
<div class="num-md">
<a class="link" href="{!! $makeSubscriptionUrl(['plan_id' => $plan->id, 'expiry' => 'expiring_7d']) !!}">{{ $summaryStats['expiring_7d_subscriptions_count'] ?? 0 }}</a>
</div>
</div>
<div class="card">
<h3>关联平台订单</h3>
<div class="num-md">
<a class="link" href="{!! $makePlatformOrderUrl(['plan_id' => $plan->id]) !!}">{{ $summaryStats['platform_orders_count'] ?? 0 }}</a>
</div>
</div>
<div class="card">
<h3>已支付订单</h3>
<div class="num-md">
<a class="link" href="{!! $makePlatformOrderUrl(['plan_id' => $plan->id, 'payment_status' => 'paid']) !!}">{{ $summaryStats['paid_orders_count'] ?? 0 }}</a>
</div>
<div class="muted muted-xs mt-6">已付总额:¥{{ number_format((float) ($summaryStats['paid_amount_total'] ?? 0), 2) }}</div>
</div>
<div class="card">
<h3>已付无回执</h3>
<div class="num-md">
<a class="link" href="{!! $makePlatformOrderUrl(['plan_id' => $plan->id, 'payment_status' => 'paid', 'receipt_status' => 'none']) !!}">{{ $summaryStats['paid_no_receipt_orders_count'] ?? 0 }}</a>
</div>
</div>
<div class="card">
<h3>同步失败订单</h3>
<div class="num-md">
<a class="link" href="{!! $makePlatformOrderUrl(['plan_id' => $plan->id, 'sync_status' => 'failed']) !!}">{{ $summaryStats['sync_failed_orders_count'] ?? 0 }}</a>
</div>
</div>
<div class="card">
<h3>续费缺订阅</h3>
<div class="num-md">
<a class="link" href="{!! $makePlatformOrderUrl(['plan_id' => $plan->id, 'renewal_missing_subscription' => '1']) !!}">{{ $summaryStats['renewal_missing_subscription_orders_count'] ?? 0 }}</a>
</div>
</div>
</div>
<div class="card mb-20">
<h3>套餐信息</h3>
<table>
<tbody>
<tr><th class="w-160">ID</th><td>{{ $plan->id }}</td></tr>
<tr><th>套餐名称</th><td>{{ $plan->name }}</td></tr>
<tr><th>编码</th><td>{{ $plan->code }}</td></tr>
<tr><th>状态</th><td>{{ $statusLabels[$plan->status] ?? $plan->status }} <span class="muted">({{ $plan->status }})</span></td></tr>
<tr><th>计费周期</th><td>{{ $billingCycleLabels[$plan->billing_cycle] ?? $plan->billing_cycle }}</td></tr>
<tr><th>售价 / 划线价</th><td>¥{{ number_format((float) $plan->price, 2) }} / ¥{{ number_format((float) $plan->list_price, 2) }}</td></tr>
<tr><th>发布时间</th><td>{{ optional($plan->published_at)->format('Y-m-d H:i:s') ?: '-' }}</td></tr>
<tr><th>描述</th><td>{{ $plan->description ?: '暂无说明' }}</td></tr>
</tbody>
</table>
</div>
<div class="card mb-20">
<h3>治理入口</h3>
<div class="actions gap-10">
<a class="btn btn-secondary btn-sm" href="{!! $makeSubscriptionUrl(['plan_id' => $plan->id]) !!}">查看关联订阅</a>
<a class="btn btn-secondary btn-sm" href="{!! $makeSubscriptionUrl(['plan_id' => $plan->id, 'expiry' => 'expiring_7d']) !!}">查看 7 天内到期订阅</a>
<a class="btn btn-secondary btn-sm" href="{!! $makePlatformOrderUrl(['plan_id' => $plan->id, 'payment_status' => 'paid', 'receipt_status' => 'none']) !!}">查看已付无回执订单</a>
<a class="btn btn-secondary btn-sm" href="{!! $makePlatformOrderUrl(['plan_id' => $plan->id, 'renewal_missing_subscription' => '1']) !!}">查看续费缺订阅订单</a>
</div>
</div>
<div class="card mb-20 list-card">
<div class="list-card-header">
<div>
<h3 class="list-card-title">最近平台订单</h3>
<p class="muted muted-xs list-card-subtitle">展示最近 10 条,便于从套餐维度快速下钻订单治理。</p>
</div>
<a class="btn btn-secondary btn-sm" href="{!! $makePlatformOrderUrl(['plan_id' => $plan->id]) !!}">查看全部订单</a>
</div>
<div class="list-card-body">
<table class="list-card-table">
<thead>
<tr>
<th>订单号</th>
<th>站点</th>
<th>订单类型</th>
<th>订单状态</th>
<th>支付状态</th>
<th>应付 / 已付</th>
<th>关联订阅</th>
</tr>
</thead>
<tbody>
@forelse($recentOrders as $order)
<tr>
<td>{{ $order->order_no }}</td>
<td>{{ $order->merchant?->name ?? '未关联站点' }}</td>
<td>{{ $order->orderTypeLabel() }}</td>
<td>{{ $order->status }}</td>
<td>{{ $order->payment_status }}</td>
<td>¥{{ number_format((float) $order->payable_amount, 2) }} / ¥{{ number_format((float) $order->paid_amount, 2) }}</td>
<td>{{ $order->siteSubscription?->subscription_no ?? '-' }}</td>
</tr>
@empty
<tr>
<td colspan="7" class="muted table-empty">暂无平台订单</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
<div class="card list-card">
<div class="list-card-header">
<div>
<h3 class="list-card-title">最近订阅</h3>
<p class="muted muted-xs list-card-subtitle">展示最近 10 条,便于从套餐维度快速下钻订阅治理。</p>
</div>
<a class="btn btn-secondary btn-sm" href="{!! $makeSubscriptionUrl(['plan_id' => $plan->id]) !!}">查看全部订阅</a>
</div>
<div class="list-card-body">
<table class="list-card-table">
<thead>
<tr>
<th>订阅号</th>
<th>站点</th>
<th>状态</th>
<th>金额</th>
<th>开始时间</th>
<th>到期时间</th>
</tr>
</thead>
<tbody>
@forelse($recentSubscriptions as $subscription)
<tr>
<td>{{ $subscription->subscription_no }}</td>
<td>{{ $subscription->merchant?->name ?? '未关联站点' }}</td>
<td>{{ $subscription->status }}</td>
<td>¥{{ number_format((float) $subscription->amount, 2) }}</td>
<td>{{ optional($subscription->starts_at)->format('Y-m-d H:i:s') ?: '-' }}</td>
<td>{{ optional($subscription->ends_at)->format('Y-m-d H:i:s') ?: '-' }}</td>
</tr>
@empty
<tr>
<td colspan="6" class="muted table-empty">暂无订阅记录</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
@endsection