fix: frontend build error

This commit is contained in:
shaw
2025-12-18 14:26:55 +08:00
parent 642842c29e
commit 3d05e50335
33 changed files with 545 additions and 269 deletions

View File

@@ -265,7 +265,7 @@ import { useI18n } from 'vue-i18n'
import { useAppStore } from '@/stores/app'
import { adminAPI } from '@/api/admin'
import type { Account, Proxy, Group } from '@/types'
import type { Column } from '@/components/common/DataTable.vue'
import type { Column } from '@/components/common/types'
import AppLayout from '@/components/layout/AppLayout.vue'
import DataTable from '@/components/common/DataTable.vue'
import Pagination from '@/components/common/Pagination.vue'

View File

@@ -398,7 +398,7 @@ const lineOptions = computed(() => ({
font: {
size: 10,
},
callback: (value: number) => formatTokens(value),
callback: (value: string | number) => formatTokens(Number(value)),
},
},
},

View File

@@ -450,7 +450,7 @@ import { useI18n } from 'vue-i18n'
import { useAppStore } from '@/stores/app'
import { adminAPI } from '@/api/admin'
import type { Group, GroupPlatform, SubscriptionType } from '@/types'
import type { Column } from '@/components/common/DataTable.vue'
import type { Column } from '@/components/common/types'
import AppLayout from '@/components/layout/AppLayout.vue'
import DataTable from '@/components/common/DataTable.vue'
import Pagination from '@/components/common/Pagination.vue'
@@ -570,7 +570,7 @@ const loadGroups = async () => {
pagination.page,
pagination.page_size,
{
platform: filters.platform || undefined,
platform: (filters.platform as GroupPlatform) || undefined,
status: filters.status as any,
is_exclusive: filters.is_exclusive ? filters.is_exclusive === 'true' : undefined
}

View File

@@ -465,7 +465,7 @@ import { useI18n } from 'vue-i18n'
import { useAppStore } from '@/stores/app'
import { adminAPI } from '@/api/admin'
import type { Proxy, ProxyProtocol } from '@/types'
import type { Column } from '@/components/common/DataTable.vue'
import type { Column } from '@/components/common/types'
import AppLayout from '@/components/layout/AppLayout.vue'
import DataTable from '@/components/common/DataTable.vue'
import Pagination from '@/components/common/Pagination.vue'

View File

@@ -349,7 +349,7 @@ import { useI18n } from 'vue-i18n'
import { useAppStore } from '@/stores/app'
import { adminAPI } from '@/api/admin'
import type { RedeemCode, RedeemCodeType, Group } from '@/types'
import type { Column } from '@/components/common/DataTable.vue'
import type { Column } from '@/components/common/types'
import AppLayout from '@/components/layout/AppLayout.vue'
import DataTable from '@/components/common/DataTable.vue'
import Pagination from '@/components/common/Pagination.vue'

View File

@@ -303,7 +303,7 @@ import { useI18n } from 'vue-i18n'
import { useAppStore } from '@/stores/app'
import { adminAPI } from '@/api/admin'
import type { UserSubscription, Group, User } from '@/types'
import type { Column } from '@/components/common/DataTable.vue'
import type { Column } from '@/components/common/types'
import AppLayout from '@/components/layout/AppLayout.vue'
import DataTable from '@/components/common/DataTable.vue'
import Pagination from '@/components/common/Pagination.vue'

View File

@@ -292,7 +292,7 @@
</template>
<script setup lang="ts">
import { ref, computed, onMounted, onUnmounted, watch } from 'vue'
import { ref, computed, onMounted, onUnmounted } from 'vue'
import { useI18n } from 'vue-i18n'
import { useAppStore } from '@/stores/app'
import { adminAPI } from '@/api/admin'
@@ -303,7 +303,7 @@ import EmptyState from '@/components/common/EmptyState.vue'
import Select from '@/components/common/Select.vue'
import DateRangePicker from '@/components/common/DateRangePicker.vue'
import type { UsageLog } from '@/types'
import type { Column } from '@/components/common/DataTable.vue'
import type { Column } from '@/components/common/types'
import type { SimpleUser, SimpleApiKey, AdminUsageStatsResponse, AdminUsageQueryParams } from '@/api/admin/usage'
const { t } = useI18n()

View File

@@ -641,7 +641,7 @@ const { t } = useI18n()
import { adminAPI } from '@/api/admin'
import type { User, ApiKey, Group } from '@/types'
import type { BatchUserUsageStats } from '@/api/admin/dashboard'
import type { Column } from '@/components/common/DataTable.vue'
import type { Column } from '@/components/common/types'
import AppLayout from '@/components/layout/AppLayout.vue'
import DataTable from '@/components/common/DataTable.vue'
import Pagination from '@/components/common/Pagination.vue'

View File

@@ -163,7 +163,7 @@
</template>
<script setup lang="ts">
import { ref, computed, onMounted, onUnmounted } from 'vue';
import { ref, onMounted, onUnmounted } from 'vue';
import { useRouter } from 'vue-router';
import { AuthLayout } from '@/components/layout';
import TurnstileWidget from '@/components/TurnstileWidget.vue';

View File

@@ -523,7 +523,7 @@ const lineOptions = computed(() => ({
font: {
size: 10,
},
callback: (value: number) => formatTokens(value),
callback: (value: string | number) => formatTokens(Number(value)),
},
},
},

View File

@@ -217,17 +217,17 @@
<template #selected="{ option }">
<GroupBadge
v-if="option"
:name="option.label"
:subscription-type="option.subscriptionType"
:rate-multiplier="option.rate"
:name="(option as unknown as GroupOption).label"
:subscription-type="(option as unknown as GroupOption).subscriptionType"
:rate-multiplier="(option as unknown as GroupOption).rate"
/>
<span v-else class="text-gray-400">{{ t('keys.selectGroup') }}</span>
</template>
<template #option="{ option }">
<GroupBadge
:name="option.label"
:subscription-type="option.subscriptionType"
:rate-multiplier="option.rate"
:name="(option as unknown as GroupOption).label"
:subscription-type="(option as unknown as GroupOption).subscriptionType"
:rate-multiplier="(option as unknown as GroupOption).rate"
/>
</template>
</Select>
@@ -366,7 +366,7 @@
</template>
<script setup lang="ts">
import { ref, computed, onMounted, onUnmounted } from 'vue'
import { ref, computed, onMounted, onUnmounted, type ComponentPublicInstance } from 'vue'
import { useI18n } from 'vue-i18n'
import { useAppStore } from '@/stores/app'
@@ -382,9 +382,16 @@ import Select from '@/components/common/Select.vue'
import UseKeyModal from '@/components/keys/UseKeyModal.vue'
import GroupBadge from '@/components/common/GroupBadge.vue'
import type { ApiKey, Group, PublicSettings, SubscriptionType } from '@/types'
import type { Column } from '@/components/common/DataTable.vue'
import type { Column } from '@/components/common/types'
import type { BatchApiKeyUsageStats } from '@/api/usage'
interface GroupOption {
value: number
label: string
rate: number
subscriptionType: SubscriptionType
}
const appStore = useAppStore()
const columns = computed<Column[]>(() => [
@@ -428,8 +435,8 @@ const selectedKeyForGroup = computed(() => {
return apiKeys.value.find(k => k.id === groupSelectorKeyId.value) || null
})
const setGroupButtonRef = (keyId: number, el: HTMLElement | null) => {
if (el) {
const setGroupButtonRef = (keyId: number, el: Element | ComponentPublicInstance | null) => {
if (el instanceof HTMLElement) {
groupButtonRefs.value.set(keyId, el)
} else {
groupButtonRefs.value.delete(keyId)
@@ -562,7 +569,9 @@ const editKey = (key: ApiKey) => {
formData.value = {
name: key.name,
group_id: key.group_id,
status: key.status
status: key.status,
use_custom_key: false,
custom_key: ''
}
showEditModal.value = true
}

View File

@@ -341,10 +341,6 @@ const isBalanceType = (type: string) => {
return type === 'balance' || type === 'admin_balance'
}
const isConcurrencyType = (type: string) => {
return type === 'concurrency' || type === 'admin_concurrency'
}
const isSubscriptionType = (type: string) => {
return type === 'subscription'
}

View File

@@ -246,7 +246,7 @@ import EmptyState from '@/components/common/EmptyState.vue'
import Select from '@/components/common/Select.vue'
import DateRangePicker from '@/components/common/DateRangePicker.vue'
import type { UsageLog, ApiKey, UsageQueryParams, UsageStatsResponse } from '@/types'
import type { Column } from '@/components/common/DataTable.vue'
import type { Column } from '@/components/common/types'
const { t } = useI18n()
const appStore = useAppStore()
@@ -316,21 +316,6 @@ const pagination = ref({
pages: 0
})
const totalTokens = computed(() => {
return usageLogs.value.reduce((sum, log) =>
sum + log.input_tokens + log.output_tokens, 0
)
})
const totalCost = computed(() => {
return usageLogs.value.reduce((sum, log) => sum + log.total_cost, 0)
})
const avgDuration = computed(() => {
if (usageLogs.value.length === 0) return 0
return usageLogs.value.reduce((sum, log) => sum + log.duration_ms, 0) / usageLogs.value.length
})
const formatDuration = (ms: number): string => {
if (ms < 1000) return `${ms.toFixed(0)}ms`
return `${(ms / 1000).toFixed(2)}s`