Merge PR #672: 支持账号批量配置与可用模型管理

This commit is contained in:
elky
2026-07-18 22:06:32 +08:00
37 changed files with 2612 additions and 377 deletions
@@ -922,6 +922,17 @@
:provider-type="selectedProviderData?.provider_type || selectedProviderType"
:batch-concurrency="selectedProviderConfig?.batch_concurrency"
@changed="handleAccountBatchChanged"
@edit-config="openKeyBatchEditDialog"
/>
<PoolKeyBatchEditDialog
v-if="selectedProviderId"
:open="keyBatchEditDialogOpen"
:provider-id="selectedProviderId"
:provider-name="selectedProviderData?.name || ''"
:key-ids="keyBatchEditKeyIds"
:available-api-formats="selectedProviderData?.api_formats || []"
@close="closeKeyBatchEditDialog"
@saved="handleKeyBatchEditSaved"
/>
<KeyFormDialog
v-if="selectedProviderId"
@@ -1027,6 +1038,7 @@ import PoolSchedulingDialog from '@/features/pool/components/PoolSchedulingDialo
import PoolAdvancedDialog from '@/features/pool/components/PoolAdvancedDialog.vue'
import PoolDemandMetricsDialog from '@/features/pool/components/PoolDemandMetricsDialog.vue'
import PoolAccountBatchDialog from '@/features/pool/components/PoolAccountBatchDialog.vue'
import PoolKeyBatchEditDialog from '@/features/pool/components/PoolKeyBatchEditDialog.vue'
import PoolManagementHeader from '@/features/pool/components/PoolManagementHeader.vue'
import PoolKeyQuotaPanel from '@/features/pool/components/PoolKeyQuotaPanel.vue'
import PoolKeyStatsPanel from '@/features/pool/components/PoolKeyStatsPanel.vue'
@@ -1233,6 +1245,8 @@ async function loadOverview(options: { cacheTtlMs?: number, silent?: boolean } =
endpointEditDialogOpen.value = false
providerEndpointsForEdit.value = []
showAccountBatchDialog.value = false
keyBatchEditDialogOpen.value = false
keyBatchEditKeyIds.value = []
closeProviderProxyPopovers()
resetKeyPage()
}
@@ -1593,6 +1607,8 @@ async function selectProvider(
providerEndpointsForEdit.value = []
editingKeyDetail.value = null
showAccountBatchDialog.value = false
keyBatchEditDialogOpen.value = false
keyBatchEditKeyIds.value = []
keyPermissionsDialogOpen.value = false
keyFormDialogOpen.value = false
oauthKeyEditDialogOpen.value = false
@@ -1673,6 +1689,8 @@ const prioritySavingKeyId = ref<string | null>(null)
const keyPermissionsDialogOpen = ref(false)
const keyFormDialogOpen = ref(false)
const keyBatchEditDialogOpen = ref(false)
const keyBatchEditKeyIds = ref<string[]>([])
const oauthKeyEditDialogOpen = ref(false)
const editingKeyDetail = ref<PoolKeyDetail | null>(null)
@@ -2300,6 +2318,20 @@ function handleKeyPermissions(key: PoolKeyDetail) {
keyPermissionsDialogOpen.value = true
}
function openKeyBatchEditDialog(keyIds: string[]): void {
keyBatchEditKeyIds.value = [...new Set(keyIds)]
keyBatchEditDialogOpen.value = keyBatchEditKeyIds.value.length > 0
}
function closeKeyBatchEditDialog(): void {
keyBatchEditDialogOpen.value = false
keyBatchEditKeyIds.value = []
}
async function handleKeyBatchEditSaved(): Promise<void> {
await Promise.all([loadKeys(), loadOverview()])
}
async function handleDialogSaved() {
editingKeyDetail.value = null
await loadKeys()