This commit is contained in:
wchino
2026-06-13 17:38:25 +08:00
parent e7e938f261
commit 7b33d9f9fa
190 changed files with 23222 additions and 4336 deletions

View File

@@ -38,17 +38,17 @@ const mainTrendOption = computed(() =>
[
{
name: t('dash.chart_stake'),
color: '#d4d4d4',
color: '#346538',
values: s.value?.trend7d?.map((d) => toNum(d.stake)) ?? [],
},
{
name: t('dash.chart_payout'),
color: '#60a5fa',
color: '#1f6c9f',
values: s.value?.trend7d?.map((d) => toNum(d.payout)) ?? [],
},
{
name: t('dash.chart_ggr'),
color: '#a78bfa',
color: '#956400',
values: s.value?.trend7d?.map((d) => toNum(d.ggr)) ?? [],
},
],
@@ -61,20 +61,20 @@ const distributionOption = computed(() => {
const m = s.value?.matches;
const raw = s.value?.bets.todayByStatus ?? {};
const betColors: Record<string, string> = {
PENDING: '#fb923c',
WON: '#d4d4d4',
LOST: '#f87171',
VOID: '#6b7280',
REFUNDED: '#60a5fa',
PENDING: '#956400',
WON: '#346538',
LOST: '#9f2f2d',
VOID: '#8c867c',
REFUNDED: '#1f6c9f',
};
const matchSegs = m
? [
{ label: t('dash.match_draft'), value: m.draft, color: '#6b7280' },
{ label: t('dash.match_published'), value: m.published, color: '#d4d4d4' },
{ label: t('dash.match_closed'), value: m.closed, color: '#60a5fa' },
{ label: t('dash.match_pending_settle'), value: m.pendingSettlement, color: '#fb923c' },
{ label: t('dash.match_settled'), value: m.settled ?? 0, color: '#5eead4' },
{ label: t('dash.match_draft'), value: m.draft, color: '#8c867c' },
{ label: t('dash.match_published'), value: m.published, color: '#346538' },
{ label: t('dash.match_closed'), value: m.closed, color: '#1f6c9f' },
{ label: t('dash.match_pending_settle'), value: m.pendingSettlement, color: '#956400' },
{ label: t('dash.match_settled'), value: m.settled ?? 0, color: '#477a4c' },
].filter((x) => x.value > 0)
: [];
@@ -83,7 +83,7 @@ const distributionOption = computed(() => {
.map((k) => ({
label: betStatusLabel(k),
value: raw[k].count,
color: betColors[k] ?? '#888',
color: betColors[k] ?? '#8c867c',
}));
return buildTriplePieOption(

View File

@@ -54,10 +54,10 @@ const userDistributionOption = computed(() => {
const u = s.value?.users;
const userSegs = u
? [
{ label: t('dash.user_active'), value: u.playersActive, color: '#d4d4d4' },
{ label: t('dash.user_suspended'), value: u.playersSuspended, color: '#f87171' },
{ label: t('dash.user_direct'), value: u.playersDirect, color: '#60a5fa' },
{ label: t('dash.user_agents'), value: u.agentsTotal, color: '#a78bfa' },
{ label: t('dash.user_active'), value: u.playersActive, color: '#346538' },
{ label: t('dash.user_suspended'), value: u.playersSuspended, color: '#9f2f2d' },
{ label: t('dash.user_direct'), value: u.playersDirect, color: '#1f6c9f' },
{ label: t('dash.user_agents'), value: u.agentsTotal, color: '#956400' },
].filter((x) => x.value > 0)
: [];
@@ -167,9 +167,10 @@ function formatBetTime(v: string) {
}
.recent-card {
border-radius: 14px;
border: 1px solid #1e1e1e;
background: rgba(255, 255, 255, 0.02);
border-radius: 8px;
border: 1px solid var(--border);
background: #ffffff;
box-shadow: var(--shadow);
}
.recent-card :deep(.el-card__body) {
@@ -180,7 +181,7 @@ function formatBetTime(v: string) {
margin: 0 0 12px;
font-size: 14px;
font-weight: 700;
color: #ccc;
color: var(--text);
}
@media (max-width: 960px) {

View File

@@ -4,30 +4,31 @@
.state-card {
border-radius: 8px;
border: 1px solid rgba(255, 255, 255, 0.08);
background: rgba(255, 69, 58, 0.04);
border: 1px solid var(--danger-border);
background: var(--danger-bg);
text-align: center;
padding: 8px 0 4px;
}
.state-title {
font-size: 14px;
font-weight: 500;
color: #fca5a5;
font-weight: 750;
color: var(--danger-text);
margin-bottom: 6px;
}
.state-hint {
font-size: 13px;
color: #737373;
color: var(--text-muted);
margin-bottom: 14px;
}
.overview-board {
border-radius: 8px;
border: 1px solid rgba(255, 255, 255, 0.08);
background: #111111;
border: 1px solid var(--border);
background: #ffffff;
margin-bottom: 28px;
box-shadow: var(--shadow);
}
.overview-board :deep(.el-card__body) {
@@ -45,12 +46,12 @@
.board-hint {
font-size: 12px;
color: #737373;
color: var(--text-muted);
}
.dash-updated {
font-size: 11px;
color: #525252;
color: #9b9489;
}
.kpi-grid {
@@ -71,8 +72,8 @@
.kpi-cell {
padding: 12px 14px;
border-radius: 8px;
border: 1px solid rgba(255, 255, 255, 0.06);
background: rgba(255, 255, 255, 0.02);
border: 1px solid var(--border-soft);
background: #fbfaf7;
}
.kpi-cell.compact {
@@ -86,25 +87,25 @@
.kpi-cell--link:hover,
.kpi-cell--link:focus-visible {
border-color: rgba(255, 255, 255, 0.12);
background: rgba(255, 255, 255, 0.04);
border-color: #d5cfc3;
background: var(--accent-hover);
outline: none;
}
.kpi-label {
display: block;
font-size: 12px;
color: #737373;
color: var(--text-muted);
margin-bottom: 6px;
}
.kpi-value {
display: block;
font-size: 22px;
font-weight: 500;
color: #f5f5f5;
font-weight: 800;
color: var(--text);
line-height: 1.15;
letter-spacing: -0.02em;
letter-spacing: 0;
}
.kpi-value.sm {
@@ -114,7 +115,7 @@
.kpi-sub {
display: block;
font-size: 11px;
color: #525252;
color: #9b9489;
margin-top: 4px;
}
@@ -122,29 +123,31 @@
display: inline-block;
margin-top: 6px;
font-size: 10px;
font-weight: 500;
color: #737373;
font-weight: 750;
color: var(--text-muted);
padding: 2px 6px;
border-radius: 4px;
background: rgba(255, 255, 255, 0.04);
background: #f0ede6;
}
.kpi-delta.up {
color: #a3a3a3;
color: var(--success-text);
background: var(--success-bg);
}
.kpi-delta.down {
color: #f87171;
color: var(--danger-text);
background: var(--danger-bg);
}
.charts-stack {
border-top: 1px solid rgba(255, 255, 255, 0.06);
border-top: 1px solid var(--border-soft);
padding-top: 12px;
}
.chart-main-caption {
font-size: 11px;
color: #525252;
color: #9b9489;
text-align: center;
margin: -8px 0 8px;
}