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:
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user