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:
@@ -640,9 +640,14 @@ const handleSubmit = async () => {
|
||||
loadPositionList()
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
} catch (error: any) {
|
||||
console.error('提交失败:', error)
|
||||
ElMessage.error(isEdit.value ? '岗位编辑失败' : '岗位创建失败')
|
||||
// 提取详细错误信息
|
||||
const message = error?.detail?.message
|
||||
|| error?.response?.data?.detail?.message
|
||||
|| error?.message
|
||||
|| (isEdit.value ? '岗位编辑失败' : '岗位创建失败')
|
||||
ElMessage.error(message)
|
||||
} finally {
|
||||
submitLoading.value = false
|
||||
}
|
||||
|
||||
@@ -1026,9 +1026,18 @@ const handleEdit = async () => {
|
||||
ElMessage.success('用户信息修改成功')
|
||||
loadUserList()
|
||||
}
|
||||
} catch (error) {
|
||||
} catch (error: any) {
|
||||
console.error('编辑用户失败:', error)
|
||||
ElMessage.error('编辑用户失败')
|
||||
// 提取详细错误信息
|
||||
let errorMsg = '编辑用户失败'
|
||||
if (error?.detail?.message) {
|
||||
errorMsg = error.detail.message
|
||||
} else if (error?.response?.data?.detail?.message) {
|
||||
errorMsg = error.response.data.detail.message
|
||||
} else if (error.message) {
|
||||
errorMsg = error.message
|
||||
}
|
||||
ElMessage.error(errorMsg)
|
||||
} finally {
|
||||
editLoading.value = false
|
||||
}
|
||||
|
||||
@@ -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