捕获异常
This commit is contained in:
parent
3662306e8d
commit
453dde2eaa
|
|
@ -21,6 +21,9 @@ interface UserItem {
|
|||
id: number;
|
||||
username: string;
|
||||
par_uid: number;
|
||||
wallet_capital:{
|
||||
amount:string
|
||||
},
|
||||
created_at: string; // 时间字符串类型
|
||||
status: number;
|
||||
parent: ParentUser; // 嵌套的父级用户对象
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ const hasError = ref(false)
|
|||
const errorMessage = ref('')
|
||||
let unwatchRoute: (() => void) | null = null
|
||||
|
||||
// 判断是否为 API 请求错误(这些错误不应该触发错误边界)
|
||||
// 判断是否为 API 请求错误或表单验证错误(这些错误不应该触发错误边界)
|
||||
const isApiError = (err: any): boolean => {
|
||||
console.log('err:', err);
|
||||
// axios 错误通常有 config 属性
|
||||
|
|
@ -41,9 +41,32 @@ console.log('err:', err);
|
|||
// 超时错误
|
||||
if (err.message?.includes('timeout') || err.message?.includes('Timeout')) return true
|
||||
// 请求被取消
|
||||
if (err.message?.includes('cancel') || err.message?.includes('cancel') || err.name === 'CanceledError') return true
|
||||
if (err.message?.includes('cancel') || err.name === 'CanceledError') return true
|
||||
// 包含请求相关信息的错误
|
||||
if (err.message?.includes('request') || err.message?.includes('Request') || err.data || err.msg) return true
|
||||
|
||||
// ========== 表单验证相关错误 ==========
|
||||
// Element Plus 表单验证错误格式:{ fieldName: [errorMessage], ... }
|
||||
// 检查是否为普通对象(非 Error 实例)且值为数组(错误信息数组)
|
||||
if (err && typeof err === 'object' && !err.message && !err.stack) {
|
||||
const keys = Object.keys(err)
|
||||
if (keys.length > 0 && keys.every(key => Array.isArray(err[key]))) {
|
||||
// 这是一个表单验证错误对象 {varietyName: [错误信息], ...}
|
||||
return true
|
||||
}
|
||||
}
|
||||
// Element Plus 表单验证错误特征
|
||||
const errorMessage = err.message || err.msg || ''
|
||||
// 表单验证错误常见关键词
|
||||
const formValidationKeywords = ['validate', 'validation', '校验', '验证', '必填', 'required', 'pattern', '格式']
|
||||
if (formValidationKeywords.some(keyword => errorMessage.toLowerCase().includes(keyword.toLowerCase()))) return true
|
||||
// 表单验证错误对象特征(包含 field、trigger 等属性)
|
||||
if (err.field || err.fieldName || err.prop || err.validator) return true
|
||||
// 表单验证错误数组
|
||||
if (Array.isArray(err.errors) && err.errors.length > 0) return true
|
||||
// 自定义表单验证错误类名
|
||||
if (err.name === 'ValidationError' || err.name === 'FormValidateError') return true
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -264,6 +264,7 @@ const getClientList = async () => {
|
|||
// 处理表格数据
|
||||
clientTree.value = data.data.map((item) => ({
|
||||
...item,
|
||||
amount: item.wallet_capital.amount,
|
||||
//注册时间
|
||||
createdTime: item.created_at,
|
||||
// 映射所属代理用户名
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ export const clientTableColumns = [
|
|||
{ prop: 'username', label: '用户名', align: 'center' as const },
|
||||
{ prop: 'createdTime', label: '注册时间', align: 'center' as const },
|
||||
{ prop: 'agentUsername', label: '所属代理', align: 'center' as const },
|
||||
{ prop: 'wallet_capital.amount', label: '资金', align: 'center' as const, isNumber: true },
|
||||
{ prop: 'amount', label: '资金', align: 'center' as const, isNumber: true },
|
||||
{ label: '状态', slotName: 'status', align: 'center' as const },
|
||||
{ label: '操作', slotName: 'action', align: 'center' as const },
|
||||
]
|
||||
|
|
|
|||
Loading…
Reference in New Issue