feat(admin): 仪表盘对齐 Ant Design Pro 风格骨架(PageHeader + KPI 卡)
This commit is contained in:
@@ -109,6 +109,91 @@
|
||||
}
|
||||
|
||||
/* 可复用:折叠面板(参考 Ant Design Pro 的筛选区交互:可折叠、摘要做成一条可点 Header) */
|
||||
|
||||
/* 可复用:PageHeader(参考 Ant Design Pro:标题区 + 描述 + 右侧操作区) */
|
||||
.page-header{
|
||||
width:100%;
|
||||
padding:16px;
|
||||
border:1px solid #e5e7eb;
|
||||
border-radius:12px;
|
||||
background:#ffffff;
|
||||
}
|
||||
|
||||
.page-header-main{
|
||||
display:flex;
|
||||
align-items:flex-start;
|
||||
justify-content:space-between;
|
||||
gap:12px;
|
||||
}
|
||||
|
||||
.page-header-title{
|
||||
font-size:18px;
|
||||
font-weight:700;
|
||||
color:#0f172a;
|
||||
line-height:1.2;
|
||||
}
|
||||
|
||||
.page-header-subtitle{
|
||||
margin-top:6px;
|
||||
font-size:13px;
|
||||
color:#64748b;
|
||||
line-height:1.45;
|
||||
}
|
||||
|
||||
.page-header-actions{
|
||||
display:flex;
|
||||
align-items:center;
|
||||
gap:10px;
|
||||
flex-wrap:wrap;
|
||||
}
|
||||
|
||||
.page-header-meta{
|
||||
margin-top:12px;
|
||||
display:flex;
|
||||
flex-wrap:wrap;
|
||||
gap:12px;
|
||||
color:#64748b;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
/* 可复用:KPI 卡片栅格(参考 Ant Design Pro Analysis:第一行 4 个等宽卡片) */
|
||||
.kpi-grid{
|
||||
display:grid;
|
||||
grid-template-columns:repeat(4,minmax(0,1fr));
|
||||
gap:12px;
|
||||
}
|
||||
|
||||
@media (max-width: 1024px){
|
||||
.kpi-grid{
|
||||
grid-template-columns:repeat(2,minmax(0,1fr));
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 640px){
|
||||
.kpi-grid{
|
||||
grid-template-columns:1fr;
|
||||
}
|
||||
}
|
||||
|
||||
.stat-card-title{
|
||||
font-size:12px;
|
||||
color:#64748b;
|
||||
}
|
||||
|
||||
.stat-card-value{
|
||||
margin-top:10px;
|
||||
font-size:22px;
|
||||
font-weight:800;
|
||||
color:#0f172a;
|
||||
letter-spacing:.2px;
|
||||
}
|
||||
|
||||
.stat-card-footnote{
|
||||
margin-top:8px;
|
||||
font-size:12px;
|
||||
color:#94a3b8;
|
||||
}
|
||||
|
||||
.collapsible > summary{
|
||||
list-style:none;
|
||||
cursor:pointer;
|
||||
|
||||
@@ -21,12 +21,69 @@
|
||||
'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">
|
||||
<div class="card">
|
||||
<p>欢迎回来,{{ $adminName }}。当前入口已明确为 <strong>总台管理</strong>,用于平台运营方统一查看站点、渠道、全局配置和平台级业务数据。</p>
|
||||
<p class="muted">当前平台上下文已通过封装统一解析,不再依赖控制器里零散读取 session。</p>
|
||||
<p class="muted mb-0">仪表盘统计已接入缓存:{{ $cacheMeta['store'] }} / TTL {{ $cacheMeta['ttl'] }}。</p>
|
||||
<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>
|
||||
@@ -39,33 +96,4 @@
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card mb-20">
|
||||
<h3 class="mt-0">收费工作台</h3>
|
||||
<div class="muted">聚焦收费闭环的日常治理入口:订单 → 订阅 → 套餐。</div>
|
||||
|
||||
<div class="actions mt-12">
|
||||
<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 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>
|
||||
|
||||
<div class="grid">
|
||||
<div class="card"><div class="muted">站点</div><div class="num">{{ $stats['merchants'] }}</div></div>
|
||||
<div class="card"><div class="muted">管理员</div><div class="num">{{ $stats['admins'] }}</div></div>
|
||||
<div class="card"><div class="muted">用户</div><div class="num">{{ $stats['users'] }}</div></div>
|
||||
<div class="card"><div class="muted">商品</div><div class="num">{{ $stats['products'] }}</div></div>
|
||||
<div class="card"><div class="muted">订单</div><div class="num">{{ $stats['orders'] }}</div></div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
Reference in New Issue
Block a user