From 9c4d39e29d0d2cb8a1272116522840b0e41b5c59 Mon Sep 17 00:00:00 2001 From: sion123 <450702724@qq.com> Date: Thu, 26 Feb 2026 21:22:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web-gold/src/components/SidebarNav.vue | 64 +- .../src/components/agents/HistoryPanel.vue | 839 ++++++++++++------ 2 files changed, 645 insertions(+), 258 deletions(-) diff --git a/frontend/app/web-gold/src/components/SidebarNav.vue b/frontend/app/web-gold/src/components/SidebarNav.vue index 992a796f74..8405398aad 100644 --- a/frontend/app/web-gold/src/components/SidebarNav.vue +++ b/frontend/app/web-gold/src/components/SidebarNav.vue @@ -20,6 +20,21 @@ function filterVisibleGroups(config, isLoggedIn) { const visibleNavConfig = computed(() => { return filterVisibleGroups(navConfig, userStore.isLoggedIn) }) + +// 脱敏手机号 +const maskedMobile = computed(() => { + const mobile = userStore.mobile + if (!mobile) return '未设置' + return mobile.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2') +}) + +// 剩余额度百分比 +const remainingPercent = computed(() => { + const total = userStore.totalStorage + const remaining = userStore.remainingStorage + if (total === 0) return 0 + return Math.min(100, Math.round((remaining / total) * 100)) +}) @@ -54,10 +80,13 @@ const visibleNavConfig = computed(() => { width: 220px; border-right: 1px solid var(--color-border); background: var(--color-surface); - overflow-y: auto; + display: flex; + flex-direction: column; } .sidebar__nav { + flex: 1; + overflow-y: auto; display: flex; flex-direction: column; padding: 12px; @@ -125,4 +154,37 @@ const visibleNavConfig = computed(() => { .nav-item__label { font-size: 14px; } + +/* 底部用户信息卡片 */ +.sidebar__footer { + flex-shrink: 0; + padding: 12px; + border-top: 1px solid var(--color-border); + text-decoration: none; +} + +.user-card { + padding: 12px; + border-radius: 12px; + background: var(--color-slate-50); + cursor: pointer; + transition: background .2s ease, transform .12s ease; +} + +.user-card:hover { + background: var(--color-slate-100); + transform: translateY(-1px); +} + +.user-card__mobile { + font-size: 14px; + font-weight: 500; + color: var(--color-slate-700); + margin-bottom: 6px; +} + +.user-card__quota { + font-size: 12px; + color: var(--color-text-secondary); +} diff --git a/frontend/app/web-gold/src/components/agents/HistoryPanel.vue b/frontend/app/web-gold/src/components/agents/HistoryPanel.vue index d62210de52..83f4d8391d 100644 --- a/frontend/app/web-gold/src/components/agents/HistoryPanel.vue +++ b/frontend/app/web-gold/src/components/agents/HistoryPanel.vue @@ -1,104 +1,147 @@