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 }} 个)
-
-
-
+
+ toggleProviderEnabled(provider, checked)"
+ />
@@ -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;
}