From 7fe09c83421888367f11be57ae8920478d1bbdc5 Mon Sep 17 00:00:00 2001 From: IanShaw027 <131567472+IanShaw027@users.noreply.github.com> Date: Sun, 4 Jan 2026 10:42:37 +0800 Subject: [PATCH] =?UTF-8?q?fix(frontend):=20=E7=BB=9F=E4=B8=80=E5=BE=BD?= =?UTF-8?q?=E6=A0=87=E6=A0=B7=E5=BC=8F=E5=B9=B6=E4=BF=AE=E5=A4=8D=20Google?= =?UTF-8?q?=20One=20=E7=94=A8=E9=87=8F=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **修复内容:** 1. **统一徽标样式** - 所有徽标使用相同的 Tailwind 类 - Free: gray-100/600, Pro: blue-100/600, Ultra: purple-100/600 - 暗色模式统一使用 /40 透明度 - Client 和 AI Studio 都使用蓝色徽标 2. **修复 Google One 用量显示** - 后端已为所有 Gemini OAuth (GCP/Google One/Client) 返回用量数据 - 前端只要有用量数据就显示进度条(移除 isGeminiCodeAssist 限制) - Google One 现在也会显示 Pro/Flash 进度条 + 统计数据 - 只有自定义 Client OAuth 显示「无限流」(无追踪) **最终显示规则:** - AI Studio API Key: 「无限流」或「限流 XX」 - Client OAuth: 「无限流」(无追踪) - GCP OAuth: Pro/Flash 进度条 + 统计 - Google One OAuth: Pro/Flash 进度条 + 统计 --- .../components/account/AccountQuotaInfo.vue | 32 +++++++++---------- .../components/account/AccountUsageCell.vue | 12 +++---- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/frontend/src/components/account/AccountQuotaInfo.vue b/frontend/src/components/account/AccountQuotaInfo.vue index 520fb02a..9f919386 100644 --- a/frontend/src/components/account/AccountQuotaInfo.vue +++ b/frontend/src/components/account/AccountQuotaInfo.vue @@ -94,41 +94,41 @@ const tierLabel = computed(() => { return 'AI Studio' }) -// Tier Badge 样式 +// Tier Badge 样式(统一样式) const tierBadgeClass = computed(() => { const creds = props.account.credentials as GeminiCredentials | undefined if (isCodeAssist.value) { // GCP Code Assist 样式 const tierColorMap: Record = { - LEGACY: 'bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-400', - PRO: 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400', - ULTRA: 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400', - 'standard-tier': 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400', - 'pro-tier': 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400', - 'ultra-tier': 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400' + LEGACY: 'bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-300', + PRO: 'bg-blue-100 text-blue-600 dark:bg-blue-900/40 dark:text-blue-300', + ULTRA: 'bg-purple-100 text-purple-600 dark:bg-purple-900/40 dark:text-purple-300', + 'standard-tier': 'bg-green-100 text-green-600 dark:bg-green-900/40 dark:text-green-300', + 'pro-tier': 'bg-blue-100 text-blue-600 dark:bg-blue-900/40 dark:text-blue-300', + 'ultra-tier': 'bg-purple-100 text-purple-600 dark:bg-purple-900/40 dark:text-purple-300' } return ( tierColorMap[creds?.tier_id || ''] || - 'bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-400' + 'bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-300' ) } if (isGoogleOne.value) { // Google One tier 样式 const tierColorMap: Record = { - AI_PREMIUM: 'bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400', - GOOGLE_ONE_STANDARD: 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400', - GOOGLE_ONE_BASIC: 'bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400', - FREE: 'bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-400', - GOOGLE_ONE_UNKNOWN: 'bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-400', - GOOGLE_ONE_UNLIMITED: 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400' + AI_PREMIUM: 'bg-purple-100 text-purple-600 dark:bg-purple-900/40 dark:text-purple-300', + GOOGLE_ONE_STANDARD: 'bg-blue-100 text-blue-600 dark:bg-blue-900/40 dark:text-blue-300', + GOOGLE_ONE_BASIC: 'bg-green-100 text-green-600 dark:bg-green-900/40 dark:text-green-300', + FREE: 'bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-300', + GOOGLE_ONE_UNKNOWN: 'bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-300', + GOOGLE_ONE_UNLIMITED: 'bg-amber-100 text-amber-600 dark:bg-amber-900/40 dark:text-amber-300' } - return tierColorMap[creds?.tier_id || ''] || 'bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400' + return tierColorMap[creds?.tier_id || ''] || 'bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-300' } // AI Studio 默认样式:蓝色 - return 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400' + return 'bg-blue-100 text-blue-600 dark:bg-blue-900/40 dark:text-blue-300' }) // 是否限流 diff --git a/frontend/src/components/account/AccountUsageCell.vue b/frontend/src/components/account/AccountUsageCell.vue index f3c2bfb1..ddae4e3e 100644 --- a/frontend/src/components/account/AccountUsageCell.vue +++ b/frontend/src/components/account/AccountUsageCell.vue @@ -241,8 +241,8 @@
{{ error }}
- -
+ +
- +
{{ t('admin.accounts.gemini.rateLimit.unlimited') }}
@@ -613,14 +613,14 @@ const geminiAuthTypeLabel = computed(() => { return null }) -// Gemini 账户类型徽章样式 +// Gemini 账户类型徽章样式(统一样式) const geminiTierClass = computed(() => { const creds = props.account.credentials as GeminiCredentials | undefined const oauthType = creds?.oauth_type - // AI Studio: use neutral gray color (no tier) + // Client (自定义 OAuth): 使用蓝色(与 AI Studio 一致) if (oauthType === 'ai_studio') { - return 'bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-300' + return 'bg-blue-100 text-blue-600 dark:bg-blue-900/40 dark:text-blue-300' } if (!geminiTier.value) return ''