diff --git a/web/src/components/model-management/ModelProviderManagePanel.vue b/web/src/components/model-management/ModelProviderManagePanel.vue index 015ef4c3..1fd3ee23 100644 --- a/web/src/components/model-management/ModelProviderManagePanel.vue +++ b/web/src/components/model-management/ModelProviderManagePanel.vue @@ -9,7 +9,6 @@ import { Settings2, Trash2, CheckCircle2, - Edit3, LayersPlus } from 'lucide-vue-next' @@ -22,6 +21,7 @@ import ExtensionCardGrid from '@/components/extensions/ExtensionCardGrid.vue' const loading = ref(false) const remoteLoading = ref(false) const saving = ref(false) +const togglingProviderId = ref(null) const providers = ref([]) const searchQuery = ref('') const modelTestLoadingBySpec = ref({}) @@ -265,8 +265,7 @@ const loadProviders = async () => { function getProviderInfo(provider) { return [ { label: 'Base URL', value: provider.base_url || '-' }, - { label: '能力', value: provider.capabilities?.join(', ') || 'chat' }, - { label: '已启用', value: `${provider.enabled_models?.length || 0} 个模型` } + { label: '能力', value: provider.capabilities?.join(', ') || 'chat' } ] } @@ -404,6 +403,20 @@ const deleteProviderFromEdit = async () => { } } +const toggleProviderEnabled = async (provider, checked) => { + togglingProviderId.value = provider.provider_id + try { + await modelProviderApi.updateProvider(provider.provider_id, { is_enabled: checked }) + message.success(checked ? '已启用' : '已停用') + await loadProviders() + } catch (error) { + message.error(error.message || '操作失败') + await loadProviders() + } finally { + togglingProviderId.value = null + } +} + // ============ Models Modal Operations ============ const openModelsModal = (provider) => { currentProviderForModels.value = provider @@ -637,7 +650,6 @@ defineExpose({ :key="provider.provider_id" :title="provider.display_name" :subtitle="provider.provider_id" - :disabled="!provider.is_enabled" :default-icon="Globe" :info="getProviderInfo(provider)" :status="getProviderStatus(provider)" @@ -654,16 +666,17 @@ defineExpose({ - - (已启用 {{ provider.enabled_models.length }} 个) - - - + + @@ -1077,6 +1090,11 @@ defineExpose({ .model-provider-manage-panel { height: 100%; min-height: 0; + + :deep(.info-card-icon img) { + width: 30px; + height: 30px; + } } .view-models-btn { @@ -1098,6 +1116,12 @@ defineExpose({ } } +.enabled-count { + color: var(--gray-500); + font-size: 12px; + font-weight: 400; +} + .spinning { animation: spin 1s linear infinite; }