refactor: 简化优先级拖拽交换逻辑并优化用户配额处理

- 优先级拖拽改为直接交换优先级值,而非重新编号
- 添加 Provider 优先级的点击编辑功能
- 创建用户时由后端统一处理默认配额逻辑
- 移除前端 getDefaultQuota API 调用和后端对应端点

Close #97
This commit is contained in:
fawney19
2026-01-15 18:59:01 +08:00
parent dd387735d4
commit 81b7b74fd4
7 changed files with 124 additions and 119 deletions
@@ -1095,27 +1095,14 @@ async function handleKeyDrop(event: DragEvent, targetIndex: number) {
return
}
// 检查目标 key 是否属于一个"组"(除了被拖拽的 key,还有其他 key 与目标同优先级)
// 组的定义:2 个及以上同优先级的 key
const keysAtTargetPriority = keys.filter(k =>
k.id !== draggedKey.id && (k.internal_priority ?? 0) === targetPriority
)
// 如果有 2 个及以上 key 在目标优先级(不含被拖拽的),说明目标在组内
const targetIsInGroup = keysAtTargetPriority.length >= 2
handleKeyDragEnd()
try {
if (targetIsInGroup) {
// 目标在组内,被拖拽的 key 加入该组
await updateProviderKey(draggedKey.id, { internal_priority: targetPriority })
} else {
// 目标是单独的(或只有目标自己),交换优先级
await Promise.all([
updateProviderKey(draggedKey.id, { internal_priority: targetPriority }),
updateProviderKey(targetKey.id, { internal_priority: draggedPriority })
])
}
// 直接交换优先级
await Promise.all([
updateProviderKey(draggedKey.id, { internal_priority: targetPriority }),
updateProviderKey(targetKey.id, { internal_priority: draggedPriority })
])
showSuccess('优先级已更新')
await loadEndpoints()
emit('refresh')