mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-01 17:00:21 +08:00
@@ -403,7 +403,6 @@
|
||||
:provider="provider"
|
||||
:endpoints="endpoints"
|
||||
@edit-model="handleEditModel"
|
||||
@delete-model="handleDeleteModel"
|
||||
@batch-assign="handleBatchAssign"
|
||||
/>
|
||||
|
||||
@@ -480,20 +479,6 @@
|
||||
@saved="handleModelSaved"
|
||||
/>
|
||||
|
||||
<!-- 删除模型确认对话框 -->
|
||||
<AlertDialog
|
||||
v-if="open"
|
||||
:model-value="deleteModelConfirmOpen"
|
||||
title="移除模型支持"
|
||||
:description="`确定要移除提供商 ${provider?.name} 对模型 ${modelToDelete?.global_model_display_name || modelToDelete?.provider_model_name} 的支持吗?这不会删除全局模型,只是该提供商将不再支持此模型。`"
|
||||
confirm-text="移除"
|
||||
cancel-text="取消"
|
||||
type="danger"
|
||||
@update:model-value="deleteModelConfirmOpen = $event"
|
||||
@confirm="confirmDeleteModel"
|
||||
@cancel="deleteModelConfirmOpen = false"
|
||||
/>
|
||||
|
||||
<!-- 批量关联模型对话框 -->
|
||||
<BatchAssignModelsDialog
|
||||
v-if="open && provider"
|
||||
@@ -551,7 +536,6 @@ import {
|
||||
API_FORMAT_SHORT,
|
||||
sortApiFormats,
|
||||
} from '@/api/endpoints'
|
||||
import { deleteModel as deleteModelAPI } from '@/api/endpoints/models'
|
||||
|
||||
// 扩展端点类型,包含密钥列表
|
||||
interface ProviderEndpointWithKeys extends ProviderEndpoint {
|
||||
@@ -599,8 +583,6 @@ const revealedKeys = ref<Map<string, string>>(new Map())
|
||||
// 模型相关状态
|
||||
const modelFormDialogOpen = ref(false)
|
||||
const editingModel = ref<Model | null>(null)
|
||||
const deleteModelConfirmOpen = ref(false)
|
||||
const modelToDelete = ref<Model | null>(null)
|
||||
const batchAssignDialogOpen = ref(false)
|
||||
const modelsTabRef = ref<InstanceType<typeof ModelsTab> | null>(null)
|
||||
const modelMappingTabRef = ref<InstanceType<typeof ModelMappingTab> | null>(null)
|
||||
@@ -632,7 +614,6 @@ const hasBlockingDialogOpen = computed(() =>
|
||||
keyPermissionsDialogOpen.value ||
|
||||
deleteKeyConfirmOpen.value ||
|
||||
modelFormDialogOpen.value ||
|
||||
deleteModelConfirmOpen.value ||
|
||||
batchAssignDialogOpen.value ||
|
||||
modelMappingTabRef.value?.dialogOpen
|
||||
)
|
||||
@@ -876,29 +857,6 @@ async function handleModelSaved() {
|
||||
emit('refresh')
|
||||
}
|
||||
|
||||
// 处理删除模型 - 打开确认对话框
|
||||
function handleDeleteModel(model: Model) {
|
||||
modelToDelete.value = model
|
||||
deleteModelConfirmOpen.value = true
|
||||
}
|
||||
|
||||
// 确认删除模型
|
||||
async function confirmDeleteModel() {
|
||||
if (!provider.value || !modelToDelete.value) return
|
||||
|
||||
try {
|
||||
await deleteModelAPI(provider.value.id, modelToDelete.value.id)
|
||||
showSuccess('已移除该提供商对此模型的支持')
|
||||
deleteModelConfirmOpen.value = false
|
||||
modelToDelete.value = null
|
||||
// 重新加载 Provider 数据以刷新模型列表
|
||||
await loadProvider()
|
||||
emit('refresh')
|
||||
} catch (err: any) {
|
||||
showError(err.response?.data?.detail || '删除失败', '错误')
|
||||
}
|
||||
}
|
||||
|
||||
// ===== 点击编辑优先级 =====
|
||||
function startEditPriority(key: EndpointAPIKey) {
|
||||
editingPriorityKey.value = key.id
|
||||
|
||||
@@ -32,19 +32,11 @@
|
||||
class="overflow-hidden"
|
||||
>
|
||||
<table class="w-full text-sm table-fixed">
|
||||
<thead class="bg-muted/50 text-xs uppercase tracking-wide text-muted-foreground">
|
||||
<tr>
|
||||
<th class="text-left px-4 py-3 font-semibold w-[45%]">
|
||||
模型
|
||||
</th>
|
||||
<th class="text-left px-4 py-3 font-semibold w-[30%]">
|
||||
价格 ($/M)
|
||||
</th>
|
||||
<th class="text-center px-4 py-3 font-semibold w-[25%]">
|
||||
操作
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<colgroup>
|
||||
<col class="w-[45%]">
|
||||
<col class="w-[30%]">
|
||||
<col class="w-[25%]">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr
|
||||
v-for="model in sortedModels"
|
||||
@@ -118,7 +110,7 @@
|
||||
</div>
|
||||
</td>
|
||||
<td class="align-top px-4 py-3">
|
||||
<div class="flex justify-center gap-1">
|
||||
<div class="flex justify-end gap-1">
|
||||
<!-- 测试按钮(支持多格式选择) -->
|
||||
<DropdownMenu
|
||||
v-if="availableApiFormats.length > 1"
|
||||
@@ -189,15 +181,6 @@
|
||||
>
|
||||
<Power class="w-3.5 h-3.5" />
|
||||
</Button>
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="icon"
|
||||
class="h-8 w-8 hover:text-destructive"
|
||||
title="删除"
|
||||
@click="deleteModel(model)"
|
||||
>
|
||||
<Trash2 class="w-3.5 h-3.5" />
|
||||
</Button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -223,7 +206,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, onMounted } from 'vue'
|
||||
import { Box, Edit, Trash2, Layers, Power, Copy, Loader2, Play } from 'lucide-vue-next'
|
||||
import { Box, Edit, Layers, Power, Copy, Loader2, Play } from 'lucide-vue-next'
|
||||
import Card from '@/components/ui/card.vue'
|
||||
import Button from '@/components/ui/button.vue'
|
||||
import {
|
||||
@@ -258,7 +241,6 @@ const props = defineProps<{
|
||||
|
||||
const emit = defineEmits<{
|
||||
'editModel': [model: Model]
|
||||
'deleteModel': [model: Model]
|
||||
'batchAssign': []
|
||||
}>()
|
||||
|
||||
@@ -393,11 +375,6 @@ function editModel(model: Model) {
|
||||
emit('editModel', model)
|
||||
}
|
||||
|
||||
// 删除模型
|
||||
function deleteModel(model: Model) {
|
||||
emit('deleteModel', model)
|
||||
}
|
||||
|
||||
// 打开批量关联对话框
|
||||
function openBatchAssignDialog() {
|
||||
emit('batchAssign')
|
||||
|
||||
Reference in New Issue
Block a user