fix: 优化资源重复的错误提示
Some checks failed
continuous-integration/drone/push Build is failing

1. 后端 course_service.py:
   - 课程名重复时返回 existing_id 和 existing_name
   - 成长路径名重复时返回详细信息

2. 前端 edit-course.vue:
   - 处理409冲突错误,提供跳转到已存在课程的选项

3. 前端 errorHandler.ts:
   - 添加409错误的处理逻辑
   - 添加冲突错误工具函数

4. 前端 position-management.vue, user-management.vue:
   - 改进错误消息提取,显示更详细的错误信息
This commit is contained in:
yuliang_guo
2026-01-29 17:04:15 +08:00
parent 7998b32080
commit 696b48e97a
5 changed files with 117 additions and 11 deletions

View File

@@ -988,7 +988,33 @@ const handleSave = async () => {
router.push('/manager/course-management')
} catch (error: any) {
console.error('保存课程失败:', error)
ElMessage.error(error.message || '保存课程失败')
// 处理课程名重复的409冲突错误
const status = error?.status || error?.response?.status
const detail = error?.detail?.detail || error?.response?.data?.detail?.detail
if (status === 409 && detail?.existing_id) {
// 课程名重复,提供跳转选项
ElMessageBox.confirm(
`课程名称"${courseForm.name}"已存在,您可以点击下方按钮查看已有课程。`,
'课程名称重复',
{
confirmButtonText: '查看已有课程',
cancelButtonText: '修改名称',
type: 'warning'
}
).then(() => {
// 跳转到已存在的课程
router.push(`/manager/edit-course/${detail.existing_id}`)
}).catch(() => {
// 用户选择修改名称,聚焦到名称输入框
activeTab.value = 'basic'
})
} else {
// 其他错误
const message = error?.detail?.message || error?.message || '保存课程失败'
ElMessage.error(message)
}
}
}