merge: fix billing usage summary and user balance display

This commit is contained in:
john
2026-07-31 17:30:27 +08:00
2 changed files with 37 additions and 6 deletions
+14 -6
View File
@@ -432,11 +432,9 @@ function UsageOverviewPanel() {
setLoadingSummary(true); setLoadingSummary(true);
setError(null); setError(null);
try { try {
const chartRange = start && end const data = start && end
? { startDate: start, endDate: end } ? await getAdminUsageSummary(dateRangeToUnix(start, end))
: presetDateRange(30); : await getAdminUsageSummary();
const { startAt, endAt } = dateRangeToUnix(chartRange.startDate, chartRange.endDate);
const data = await getAdminUsageSummary({ startAt, endAt });
setSummary(data); setSummary(data);
} catch (err) { } catch (err) {
setError(err instanceof Error ? err.message : '汇总加载失败'); setError(err instanceof Error ? err.message : '汇总加载失败');
@@ -476,7 +474,7 @@ function UsageOverviewPanel() {
const rangeSummaryLabel = hasDateFilter const rangeSummaryLabel = hasDateFilter
? `区间汇总(${startDate}${endDate}` ? `区间汇总(${startDate}${endDate}`
: '区间汇总(近 30 天)'; : '';
return ( return (
<> <>
@@ -690,6 +688,16 @@ function UsageQueryPanel() {
<p className="muted billing-empty"></p> <p className="muted billing-empty"></p>
)} )}
{userId && loading && !result && !stats && <p className="muted"></p>} {userId && loading && !result && !stats && <p className="muted"></p>}
{userId && selectedUser && (
<div className="usage-user-balance-bar">
<span className="usage-user-balance-name">
{selectedUser.displayName}
<span className="muted"> @{selectedUser.username}</span>
</span>
<span className="usage-user-balance-label muted"></span>
<span className="usage-user-balance-value">¥{formatYuan(selectedUser.balanceCents)}</span>
</div>
)}
{userId && ( {userId && (
<UsageSummaryPanel <UsageSummaryPanel
summary={summary} summary={summary}
+23
View File
@@ -2135,6 +2135,29 @@ body,
margin-bottom: 16px; margin-bottom: 16px;
} }
.usage-user-balance-bar {
display: flex;
flex-wrap: wrap;
align-items: baseline;
gap: 8px 16px;
margin-bottom: 16px;
padding: 12px 16px;
border: 1px solid var(--color-border-subtle);
border-radius: var(--radius-md);
background: var(--color-bg-subtle);
}
.usage-user-balance-name {
font-weight: 600;
margin-right: auto;
}
.usage-user-balance-value {
font-size: 20px;
font-weight: 600;
font-variant-numeric: tabular-nums;
}
.usage-summary-panel { .usage-summary-panel {
display: flex; display: flex;
flex-direction: column; flex-direction: column;