mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-22 16:43:35 +00:00
feat: 完成web/admin-spa/src/components/apikeys的国际化并修复语法错误和警告
This commit is contained in:
@@ -42,7 +42,12 @@
|
||||
dashboardData.accountsByPlatform.claude.total > 0
|
||||
"
|
||||
class="inline-flex items-center gap-0.5"
|
||||
:title="t('dashboard.claudeAccount', { total: dashboardData.accountsByPlatform.claude.total, normal: dashboardData.accountsByPlatform.claude.normal })"
|
||||
:title="
|
||||
t('dashboard.claudeAccount', {
|
||||
total: dashboardData.accountsByPlatform.claude.total,
|
||||
normal: dashboardData.accountsByPlatform.claude.normal
|
||||
})
|
||||
"
|
||||
>
|
||||
<i class="fas fa-brain text-xs text-indigo-600" />
|
||||
<span class="text-xs font-medium text-gray-700 dark:text-gray-300">{{
|
||||
@@ -56,7 +61,12 @@
|
||||
dashboardData.accountsByPlatform['claude-console'].total > 0
|
||||
"
|
||||
class="inline-flex items-center gap-0.5"
|
||||
:title="t('dashboard.consoleAccount', { total: dashboardData.accountsByPlatform['claude-console'].total, normal: dashboardData.accountsByPlatform['claude-console'].normal })"
|
||||
:title="
|
||||
t('dashboard.consoleAccount', {
|
||||
total: dashboardData.accountsByPlatform['claude-console'].total,
|
||||
normal: dashboardData.accountsByPlatform['claude-console'].normal
|
||||
})
|
||||
"
|
||||
>
|
||||
<i class="fas fa-terminal text-xs text-purple-600" />
|
||||
<span class="text-xs font-medium text-gray-700 dark:text-gray-300">{{
|
||||
@@ -70,7 +80,12 @@
|
||||
dashboardData.accountsByPlatform.gemini.total > 0
|
||||
"
|
||||
class="inline-flex items-center gap-0.5"
|
||||
:title="t('dashboard.geminiAccount', { total: dashboardData.accountsByPlatform.gemini.total, normal: dashboardData.accountsByPlatform.gemini.normal })"
|
||||
:title="
|
||||
t('dashboard.geminiAccount', {
|
||||
total: dashboardData.accountsByPlatform.gemini.total,
|
||||
normal: dashboardData.accountsByPlatform.gemini.normal
|
||||
})
|
||||
"
|
||||
>
|
||||
<i class="fas fa-robot text-xs text-yellow-600" />
|
||||
<span class="text-xs font-medium text-gray-700 dark:text-gray-300">{{
|
||||
@@ -84,7 +99,12 @@
|
||||
dashboardData.accountsByPlatform.bedrock.total > 0
|
||||
"
|
||||
class="inline-flex items-center gap-0.5"
|
||||
:title="t('dashboard.bedrockAccount', { total: dashboardData.accountsByPlatform.bedrock.total, normal: dashboardData.accountsByPlatform.bedrock.normal })"
|
||||
:title="
|
||||
t('dashboard.bedrockAccount', {
|
||||
total: dashboardData.accountsByPlatform.bedrock.total,
|
||||
normal: dashboardData.accountsByPlatform.bedrock.normal
|
||||
})
|
||||
"
|
||||
>
|
||||
<i class="fab fa-aws text-xs text-orange-600" />
|
||||
<span class="text-xs font-medium text-gray-700 dark:text-gray-300">{{
|
||||
@@ -98,7 +118,12 @@
|
||||
dashboardData.accountsByPlatform.openai.total > 0
|
||||
"
|
||||
class="inline-flex items-center gap-0.5"
|
||||
:title="t('dashboard.openaiAccount', { total: dashboardData.accountsByPlatform.openai.total, normal: dashboardData.accountsByPlatform.openai.normal })"
|
||||
:title="
|
||||
t('dashboard.openaiAccount', {
|
||||
total: dashboardData.accountsByPlatform.openai.total,
|
||||
normal: dashboardData.accountsByPlatform.openai.normal
|
||||
})
|
||||
"
|
||||
>
|
||||
<i class="fas fa-openai text-xs text-gray-100" />
|
||||
<span class="text-xs font-medium text-gray-700 dark:text-gray-300">{{
|
||||
@@ -112,7 +137,12 @@
|
||||
dashboardData.accountsByPlatform.azure_openai.total > 0
|
||||
"
|
||||
class="inline-flex items-center gap-0.5"
|
||||
:title="t('dashboard.azureOpenaiAccount', { total: dashboardData.accountsByPlatform.azure_openai.total, normal: dashboardData.accountsByPlatform.azure_openai.normal })"
|
||||
:title="
|
||||
t('dashboard.azureOpenaiAccount', {
|
||||
total: dashboardData.accountsByPlatform.azure_openai.total,
|
||||
normal: dashboardData.accountsByPlatform.azure_openai.normal
|
||||
})
|
||||
"
|
||||
>
|
||||
<i class="fab fa-microsoft text-xs text-blue-600" />
|
||||
<span class="text-xs font-medium text-gray-700 dark:text-gray-300">{{
|
||||
@@ -153,7 +183,8 @@
|
||||
{{ dashboardData.todayRequests }}
|
||||
</p>
|
||||
<p class="mt-1 text-xs text-gray-500 dark:text-gray-400">
|
||||
{{ t('dashboard.totalRequests') }}: {{ formatNumber(dashboardData.totalRequests || 0) }}
|
||||
{{ t('dashboard.totalRequests') }}:
|
||||
{{ formatNumber(dashboardData.totalRequests || 0) }}
|
||||
</p>
|
||||
</div>
|
||||
<div class="stat-icon flex-shrink-0 bg-gradient-to-br from-purple-500 to-purple-600">
|
||||
@@ -303,7 +334,9 @@
|
||||
<div>
|
||||
<p class="mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm">
|
||||
{{ t('dashboard.realtimeRPM') }}
|
||||
<span class="text-xs text-gray-400">({{ dashboardData.metricsWindow }}{{ t('dashboard.minutes') }})</span>
|
||||
<span class="text-xs text-gray-400"
|
||||
>({{ dashboardData.metricsWindow }}{{ t('dashboard.minutes') }})</span
|
||||
>
|
||||
</p>
|
||||
<p class="text-2xl font-bold text-orange-600 sm:text-3xl">
|
||||
{{ dashboardData.realtimeRPM || 0 }}
|
||||
@@ -326,7 +359,9 @@
|
||||
<div>
|
||||
<p class="mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm">
|
||||
{{ t('dashboard.realtimeTPM') }}
|
||||
<span class="text-xs text-gray-400">({{ dashboardData.metricsWindow }}{{ t('dashboard.minutes') }})</span>
|
||||
<span class="text-xs text-gray-400"
|
||||
>({{ dashboardData.metricsWindow }}{{ t('dashboard.minutes') }})</span
|
||||
>
|
||||
</p>
|
||||
<p class="text-2xl font-bold text-rose-600 sm:text-3xl">
|
||||
{{ formatNumber(dashboardData.realtimeTPM || 0) }}
|
||||
@@ -453,7 +488,9 @@
|
||||
@click="refreshAllData()"
|
||||
>
|
||||
<i :class="['fas fa-sync-alt text-xs', { 'animate-spin': isRefreshing }]" />
|
||||
<span class="hidden sm:inline">{{ isRefreshing ? t('dashboard.refreshing') : t('dashboard.refresh') }}</span>
|
||||
<span class="hidden sm:inline">{{
|
||||
isRefreshing ? t('dashboard.refreshing') : t('dashboard.refresh')
|
||||
}}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -579,7 +616,9 @@
|
||||
]"
|
||||
@click="((apiKeysTrendMetric = 'requests'), updateApiKeysUsageTrendChart())"
|
||||
>
|
||||
<i class="fas fa-exchange-alt mr-1" /><span class="hidden sm:inline">{{ t('dashboard.requestsCount') }}</span
|
||||
<i class="fas fa-exchange-alt mr-1" /><span class="hidden sm:inline">{{
|
||||
t('dashboard.requestsCount')
|
||||
}}</span
|
||||
><span class="sm:hidden">{{ t('dashboard.requestsCount').split(' ')[0] }}</span>
|
||||
</button>
|
||||
<button
|
||||
@@ -591,7 +630,9 @@
|
||||
]"
|
||||
@click="((apiKeysTrendMetric = 'tokens'), updateApiKeysUsageTrendChart())"
|
||||
>
|
||||
<i class="fas fa-coins mr-1" /><span class="hidden sm:inline">{{ t('dashboard.tokenCount') }}</span
|
||||
<i class="fas fa-coins mr-1" /><span class="hidden sm:inline">{{
|
||||
t('dashboard.tokenCount')
|
||||
}}</span
|
||||
><span class="sm:hidden">Token</span>
|
||||
</button>
|
||||
</div>
|
||||
@@ -600,7 +641,9 @@
|
||||
<span v-if="apiKeysTrendData.totalApiKeys > 10">
|
||||
{{ t('dashboard.showingTop10', { count: apiKeysTrendData.totalApiKeys }) }}
|
||||
</span>
|
||||
<span v-else>{{ t('dashboard.totalApiKeysCount', { count: apiKeysTrendData.totalApiKeys }) }}</span>
|
||||
<span v-else>{{
|
||||
t('dashboard.totalApiKeysCount', { count: apiKeysTrendData.totalApiKeys })
|
||||
}}</span>
|
||||
</div>
|
||||
<div class="sm:h-[350px]" style="height: 300px">
|
||||
<canvas ref="apiKeysUsageTrendChart" />
|
||||
@@ -1164,7 +1207,10 @@ function createApiKeysUsageTrendChart() {
|
||||
beginAtZero: true,
|
||||
title: {
|
||||
display: true,
|
||||
text: apiKeysTrendMetric.value === 'tokens' ? t('dashboard.tokenQuantity') : t('dashboard.requestsQuantity'),
|
||||
text:
|
||||
apiKeysTrendMetric.value === 'tokens'
|
||||
? t('dashboard.tokenQuantity')
|
||||
: t('dashboard.requestsQuantity'),
|
||||
color: chartColors.value.text
|
||||
},
|
||||
ticks: {
|
||||
|
||||
Reference in New Issue
Block a user