160 lines
7.4 KiB
PHP
160 lines
7.4 KiB
PHP
@extends('admin.layouts.app')
|
||
|
||
@section('title', '总台管理仪表盘')
|
||
@section('page_title', '总台管理仪表盘')
|
||
|
||
@section('content')
|
||
@php
|
||
$incomingBack = (string) request()->query('back', '');
|
||
$safeBackForLinks = \App\Support\BackUrl::sanitizeForLinks($incomingBack);
|
||
|
||
$billingEntryLinks = [
|
||
'platform_orders' => \App\Support\BackUrl::withBack('/admin/platform-orders', $safeBackForLinks),
|
||
'site_subscriptions' => \App\Support\BackUrl::withBack('/admin/site-subscriptions', $safeBackForLinks),
|
||
'plans' => \App\Support\BackUrl::withBack('/admin/plans', $safeBackForLinks),
|
||
];
|
||
|
||
$platformOrdersQuickLinks = [
|
||
'unpaid_pending' => \App\Support\BackUrl::withBack('/admin/platform-orders?payment_status=unpaid&status=pending', $safeBackForLinks),
|
||
'paid_pending' => \App\Support\BackUrl::withBack('/admin/platform-orders?payment_status=paid&status=pending', $safeBackForLinks),
|
||
'syncable_only' => \App\Support\BackUrl::withBack('/admin/platform-orders?syncable_only=1', $safeBackForLinks),
|
||
'sync_failed' => \App\Support\BackUrl::withBack('/admin/platform-orders?sync_status=failed', $safeBackForLinks),
|
||
];
|
||
@endphp
|
||
|
||
<div class="page-header mb-20" data-page="admin.dashboard">
|
||
<div class="page-header-main">
|
||
<div>
|
||
<div class="page-header-title">总台管理仪表盘</div>
|
||
<div class="page-header-subtitle">欢迎回来,{{ $adminName }}。这里是平台运营方的全局总览入口(聚焦:收费闭环与治理动作可达)。</div>
|
||
</div>
|
||
<div class="page-header-actions">
|
||
<a class="btn" href="{!! $billingEntryLinks['platform_orders'] !!}">进入平台订单</a>
|
||
<a class="btn btn-secondary" href="{!! $billingEntryLinks['site_subscriptions'] !!}">进入订阅管理</a>
|
||
<a class="btn btn-secondary" href="{!! $billingEntryLinks['plans'] !!}">进入套餐管理</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="page-header-meta">
|
||
<div>统计缓存:{{ $cacheMeta['store'] }} / TTL {{ $cacheMeta['ttl'] }}</div>
|
||
<div>当前视角:{{ $platformOverview['current_scope'] }}</div>
|
||
<div>活跃站点:{{ $platformOverview['active_merchants'] }}</div>
|
||
<div>待处理订单:{{ $platformOverview['pending_orders'] }}</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="kpi-grid mb-20" data-role="kpi-grid">
|
||
<div class="card">
|
||
<div class="stat-card-title">站点</div>
|
||
<div class="stat-card-value">{{ $stats['merchants'] }}</div>
|
||
<div class="stat-card-footnote">全站点数量(总台视角)</div>
|
||
</div>
|
||
<div class="card">
|
||
<div class="stat-card-title">管理员</div>
|
||
<div class="stat-card-value">{{ $stats['admins'] }}</div>
|
||
<div class="stat-card-footnote">平台/站点后台账号</div>
|
||
</div>
|
||
<div class="card">
|
||
<div class="stat-card-title">用户</div>
|
||
<div class="stat-card-value">{{ $stats['users'] }}</div>
|
||
<div class="stat-card-footnote">买家端用户累计</div>
|
||
</div>
|
||
<div class="card">
|
||
<div class="stat-card-title">订单</div>
|
||
<div class="stat-card-value">{{ $stats['orders'] }}</div>
|
||
<div class="stat-card-footnote">站点订单累计(非平台订单)</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="two-col mb-20" data-role="analysis-skeleton">
|
||
<div class="card">
|
||
<h3 class="mt-0">趋势</h3>
|
||
<div class="muted">(占位)后续接入:平台订单金额/笔数趋势、续费转化、同步成功率等。</div>
|
||
<div class="muted muted-xs mt-10">说明:当前阶段先对齐 Ant Design Pro Analysis 的版式骨架,聚合指标后续分步接入。</div>
|
||
</div>
|
||
<div class="card">
|
||
<h3 class="mt-0">排行</h3>
|
||
<div class="muted">(占位)后续接入:站点续费金额排行、套餐销量排行、异常订单排行等。</div>
|
||
<div class="muted muted-xs mt-10">说明:后续会补“时间范围切换 + 维度切换”的渐进增强交互。</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="two-col mb-20">
|
||
<div class="card">
|
||
<h3 class="mt-0">收费工作台(快捷治理)</h3>
|
||
<div class="muted">聚焦收费闭环的日常治理入口:订单 → 订阅 → 套餐。</div>
|
||
|
||
<div class="mt-12">
|
||
<div class="muted">快捷筛选:</div>
|
||
<div class="actions mt-8">
|
||
<a class="btn btn-secondary btn-sm" href="{!! $platformOrdersQuickLinks['unpaid_pending'] !!}">待支付</a>
|
||
<a class="btn btn-secondary btn-sm" href="{!! $platformOrdersQuickLinks['paid_pending'] !!}">待生效</a>
|
||
<a class="btn btn-secondary btn-sm" href="{!! $platformOrdersQuickLinks['syncable_only'] !!}">可同步</a>
|
||
<a class="btn btn-secondary btn-sm" href="{!! $platformOrdersQuickLinks['sync_failed'] !!}">同步失败</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="muted muted-xs mt-10">说明:这里先落“入口与布局骨架”,后续会把 KPI/趋势/排行 接入真实聚合指标。</div>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<h3 class="mt-0">平台定位</h3>
|
||
<table>
|
||
<tr><th>后台角色</th><td>{{ $platformOverview['system_role'] }}</td></tr>
|
||
<tr><th>当前视角</th><td>{{ $platformOverview['current_scope'] }}</td></tr>
|
||
<tr><th>商家模式</th><td>{{ $platformOverview['merchant_mode'] }}</td></tr>
|
||
<tr><th>渠道数</th><td>{{ $platformOverview['channel_count'] }}</td></tr>
|
||
<tr><th>活跃商家</th><td>{{ $platformOverview['active_merchants'] }}</td></tr>
|
||
<tr><th>待处理订单</th><td>{{ $platformOverview['pending_orders'] }}</td></tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="two-col mb-20" data-role="analysis-skeleton-row2">
|
||
<div class="card">
|
||
<div class="flex-between">
|
||
<h3 class="mt-0">最近平台订单</h3>
|
||
<a class="muted" href="/admin/platform-orders">查看全部</a>
|
||
</div>
|
||
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>订单号</th>
|
||
<th>类型</th>
|
||
<th>金额</th>
|
||
<th>支付</th>
|
||
<th>状态</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
@forelse(($recentPlatformOrders ?? []) as $po)
|
||
@php
|
||
$poShowUrl = '/admin/platform-orders/' . $po->id;
|
||
@endphp
|
||
<tr>
|
||
<td><a class="link" href="{{ $poShowUrl }}">{{ $po->order_no }}</a></td>
|
||
<td>{{ $po->orderTypeLabel() }}</td>
|
||
<td>¥{{ number_format((float) $po->payable_amount, 2) }}</td>
|
||
<td>{{ $po->payment_status }}</td>
|
||
<td>{{ $po->status }}</td>
|
||
</tr>
|
||
@empty
|
||
<tr>
|
||
<td colspan="5" class="muted">暂无数据</td>
|
||
</tr>
|
||
@endforelse
|
||
</tbody>
|
||
</table>
|
||
|
||
<div class="muted muted-xs mt-10">说明:当前先接入最近订单列表;后续补“同步状态/站点/套餐/治理入口”。</div>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<h3 class="mt-0">占比(占位)</h3>
|
||
<div class="muted">后续接入:套餐销量占比 / 渠道占比 / 支付方式占比(支持时间范围切换)。</div>
|
||
<div class="muted muted-xs mt-10">说明:后续会补占比卡的 legend 与颜色体系(对齐 AntD Pro)。</div>
|
||
</div>
|
||
</div>
|
||
@endsection
|