diff --git a/frontend/src/features/providers/components/BatchAssignModelsDialog.vue b/frontend/src/features/providers/components/BatchAssignModelsDialog.vue index 97243d3..a629bbd 100644 --- a/frontend/src/features/providers/components/BatchAssignModelsDialog.vue +++ b/frontend/src/features/providers/components/BatchAssignModelsDialog.vue @@ -433,11 +433,17 @@ const availableGlobalModels = computed(() => { ) }) -// 计算可添加的上游模型(排除已关联的) +// 计算可添加的上游模型(排除已关联的,包括主模型名和映射名称) const availableUpstreamModelsBase = computed(() => { - const existingModelNames = new Set( - existingModels.value.map(m => m.provider_model_name) - ) + const existingModelNames = new Set() + for (const m of existingModels.value) { + // 主模型名 + existingModelNames.add(m.provider_model_name) + // 映射名称 + for (const mapping of m.provider_model_mappings ?? []) { + if (mapping.name) existingModelNames.add(mapping.name) + } + } return upstreamModels.value.filter(m => !existingModelNames.has(m.id)) }) diff --git a/frontend/src/features/providers/components/ModelMappingDialog.vue b/frontend/src/features/providers/components/ModelMappingDialog.vue index 61c63ba..74b9ad0 100644 --- a/frontend/src/features/providers/components/ModelMappingDialog.vue +++ b/frontend/src/features/providers/components/ModelMappingDialog.vue @@ -449,7 +449,17 @@ interface UpstreamModelGroup { } const groupedAvailableUpstreamModels = computed(() => { + // 收集当前表单已添加的名称 const addedNames = new Set(formData.value.aliases.map(a => a.name.trim())) + + // 收集所有已存在的映射名称(包括主模型名和映射名称) + for (const m of props.models) { + addedNames.add(m.provider_model_name) + for (const mapping of m.provider_model_mappings ?? []) { + if (mapping.name) addedNames.add(mapping.name) + } + } + const availableModels = filteredUpstreamModels.value.filter(m => !addedNames.has(m.id)) const groups = new Map()