diff --git a/frontend/src/features/models/components/AliasDialog.vue b/frontend/src/features/models/components/AliasDialog.vue index fc01295..7295141 100644 --- a/frontend/src/features/models/components/AliasDialog.vue +++ b/frontend/src/features/models/components/AliasDialog.vue @@ -218,7 +218,6 @@ import { ref, computed } from 'vue' import { Loader2, Tag, SquarePen } from 'lucide-vue-next' import { Dialog, Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from '@/components/ui' -import Badge from '@/components/ui/badge.vue' import Button from '@/components/ui/button.vue' import Input from '@/components/ui/input.vue' import Label from '@/components/ui/label.vue' @@ -262,7 +261,7 @@ const emit = defineEmits<{ 'submit': [data: CreateModelAliasRequest | UpdateModelAliasRequest, isEdit: boolean] }>() -const { success, error: showError } = useToast() +const { error: showError } = useToast() // 状态 const submitting = ref(false) @@ -337,20 +336,6 @@ const dialogDescription = computed(() => { // 对话框图标 const dialogIcon = computed(() => isEditMode.value ? SquarePen : Tag) -// 作用范围描述 -const scopeDescription = computed(() => { - if (props.fixedProvider) { - return `仅对 ${props.fixedProvider.display_name || props.fixedProvider.name} 生效。` - } - if (form.value.provider_id) { - const provider = props.providers.find(p => p.id === form.value.provider_id) - if (provider) { - return `仅对 ${provider.display_name || provider.name} 生效。` - } - } - return '全局生效。' -}) - // 映射模式下可选的源模型(排除已选择的目标模型) const availableSourceModels = computed(() => { return props.globalModels.filter(m => m.id !== form.value.global_model_id) diff --git a/frontend/src/features/models/components/ModelDetailDrawer.vue b/frontend/src/features/models/components/ModelDetailDrawer.vue index e22e944..b6b8dd7 100644 --- a/frontend/src/features/models/components/ModelDetailDrawer.vue +++ b/frontend/src/features/models/components/ModelDetailDrawer.vue @@ -52,7 +52,7 @@ variant="ghost" size="icon" title="编辑模型" - @click="$emit('edit-model', model)" + @click="$emit('editModel', model)" > @@ -60,7 +60,7 @@ variant="ghost" size="icon" :title="model.is_active ? '点击停用' : '点击启用'" - @click="$emit('toggle-model-status', model)" + @click="$emit('toggleModelStatus', model)" > @@ -435,7 +435,7 @@ size="icon" class="h-8 w-8" title="添加关联" - @click="$emit('add-provider')" + @click="$emit('addProvider')" > @@ -444,7 +444,7 @@ size="icon" class="h-8 w-8" title="刷新" - @click="$emit('refresh-providers')" + @click="$emit('refreshProviders')" > @@ -572,7 +572,7 @@ size="icon" class="h-7 w-7" :title="provider.is_active ? '停用此关联' : '启用此关联'" - @click="$emit('toggle-provider-status', provider)" + @click="$emit('toggleProviderStatus', provider)" > @@ -581,7 +581,7 @@ size="icon" class="h-7 w-7" title="删除此关联" - @click="$emit('delete-provider', provider)" + @click="$emit('deleteProvider', provider)" > @@ -604,7 +604,7 @@ size="sm" variant="outline" class="mt-4" - @click="$emit('add-provider')" + @click="$emit('addProvider')" > 添加第一个关联 @@ -630,7 +630,7 @@ size="icon" class="h-8 w-8" title="添加别名/映射" - @click="$emit('add-alias')" + @click="$emit('addAlias')" > @@ -639,7 +639,7 @@ size="icon" class="h-8 w-8" title="刷新" - @click="$emit('refresh-aliases')" + @click="$emit('refreshAliases')" > @@ -732,7 +732,7 @@ size="icon" class="h-7 w-7" :title="alias.is_active ? '停用' : '启用'" - @click="$emit('toggle-alias-status', alias)" + @click="$emit('toggleAliasStatus', alias)" > @@ -741,7 +741,7 @@ size="icon" class="h-7 w-7" title="删除" - @click="$emit('delete-alias', alias)" + @click="$emit('deleteAlias', alias)" > @@ -764,7 +764,7 @@ size="sm" variant="outline" class="mt-4" - @click="$emit('add-alias')" + @click="$emit('addAlias')" > 添加别名/映射 @@ -800,28 +800,6 @@ import { Layers } from 'lucide-vue-next' import { useToast } from '@/composables/useToast' - -const props = withDefaults(defineProps(), { - loadingProviders: false, - loadingAliases: false, - hasBlockingDialogOpen: false -}) -const emit = defineEmits<{ - 'update:open': [value: boolean] - 'edit-model': [model: GlobalModelResponse] - 'toggle-model-status': [model: GlobalModelResponse] - 'add-provider': [] - 'edit-provider': [provider: any] - 'delete-provider': [provider: any] - 'toggle-provider-status': [provider: any] - 'refresh-providers': [] - 'add-alias': [] - 'edit-alias': [alias: ModelAlias] - 'toggle-alias-status': [alias: ModelAlias] - 'delete-alias': [alias: ModelAlias] - 'refresh-aliases': [] -}>() -const { success: showSuccess, error: showError } = useToast() import Card from '@/components/ui/card.vue' import Badge from '@/components/ui/badge.vue' import Button from '@/components/ui/button.vue' @@ -839,6 +817,28 @@ import type { ModelAlias } from '@/api/endpoints/aliases' import type { TieredPricingConfig, PricingTier } from '@/api/endpoints/types' import type { CapabilityDefinition } from '@/api/endpoints' +const props = withDefaults(defineProps(), { + loadingProviders: false, + loadingAliases: false, + hasBlockingDialogOpen: false, +}) +const emit = defineEmits<{ + 'update:open': [value: boolean] + 'editModel': [model: GlobalModelResponse] + 'toggleModelStatus': [model: GlobalModelResponse] + 'addProvider': [] + 'editProvider': [provider: any] + 'deleteProvider': [provider: any] + 'toggleProviderStatus': [provider: any] + 'refreshProviders': [] + 'addAlias': [] + 'editAlias': [alias: ModelAlias] + 'toggleAliasStatus': [alias: ModelAlias] + 'deleteAlias': [alias: ModelAlias] + 'refreshAliases': [] +}>() +const { success: showSuccess, error: showError } = useToast() + interface Props { model: GlobalModelResponse | null open: boolean