From 48d58d72ff57fb15a8ab28afcb4f0acc4c31291e Mon Sep 17 00:00:00 2001 From: feitianbubu Date: Wed, 22 Jul 2026 16:57:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(admin):=20=E6=A8=A1=E5=9E=8B=E9=99=90?= =?UTF-8?q?=E6=B5=81=E6=81=A2=E5=A4=8D=E6=97=B6=E9=97=B4=E8=BF=9B=E4=BD=8D?= =?UTF-8?q?=E5=88=B0=E5=A4=A9=E5=B9=B6=E5=9C=A8=E6=8F=90=E7=A4=BA=E4=B8=AD?= =?UTF-8?q?=E8=A1=A5=E5=85=A8=E6=97=A5=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/AccountStatusIndicator.vue | 30 +++++-------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/frontend/src/components/account/AccountStatusIndicator.vue b/frontend/src/components/account/AccountStatusIndicator.vue index 8d019bcf7..7d19b784a 100644 --- a/frontend/src/components/account/AccountStatusIndicator.vue +++ b/frontend/src/components/account/AccountStatusIndicator.vue @@ -95,7 +95,7 @@ > {{ t('admin.accounts.status.creditsExhausted') }} - {{ formatModelResetTime(item.reset_at) }} + {{ formatCountdown(item.reset_at) }} ⚡ {{ formatScopeName(item.model) }} - {{ formatModelResetTime(item.reset_at) }} + {{ formatCountdown(item.reset_at) }} {{ formatScopeName(item.model) }} - {{ formatModelResetTime(item.reset_at) }} + {{ formatCountdown(item.reset_at) }}
{{ item.kind === 'credits_exhausted' - ? t('admin.accounts.status.creditsExhaustedUntil', { time: formatTime(item.reset_at) }) + ? t('admin.accounts.status.creditsExhaustedUntil', { time: formatDateTimeToMinute(item.reset_at) }) : item.kind === 'credits_active' - ? t('admin.accounts.status.modelCreditOveragesUntil', { model: formatScopeName(item.model), time: formatTime(item.reset_at) }) - : t('admin.accounts.status.modelRateLimitedUntil', { model: formatScopeName(item.model), time: formatTime(item.reset_at) }) + ? t('admin.accounts.status.modelCreditOveragesUntil', { model: formatScopeName(item.model), time: formatDateTimeToMinute(item.reset_at) }) + : t('admin.accounts.status.modelRateLimitedUntil', { model: formatScopeName(item.model), time: formatDateTimeToMinute(item.reset_at) }) }}
{ return aliases[scope] || scope } -const formatModelResetTime = (resetAt: string): string => { - const date = new Date(resetAt) - const now = new Date() - const diffMs = date.getTime() - now.getTime() - if (diffMs <= 0) return '' - const totalSecs = Math.floor(diffMs / 1000) - const h = Math.floor(totalSecs / 3600) - const m = Math.floor((totalSecs % 3600) / 60) - const s = totalSecs % 60 - if (h > 0) return `${h}h${m}m` - if (m > 0) return `${m}m${s}s` - return `${s}s` -} - // Computed: is overloaded (529) const isOverloaded = computed(() => { if (!props.account.overload_until) return false