refactor: 统一错误处理并优化代码

- 移除重复的错误提示,统一在axios拦截器中处理
- 优化XSS拦截器,添加请求头白名单
- 修复注册码服务的日期处理问题
- 添加403权限错误处理
- 优化分组查询参数处理
This commit is contained in:
ikmkj
2026-03-03 23:41:20 +08:00
parent a4f95e7315
commit 25b52f87aa
20 changed files with 123 additions and 37 deletions

View File

@@ -81,8 +81,9 @@ const initVditor = () => {
const url = res.url;
const baseUrl = import.meta.env.VITE_API_BASE_URL || '';
vditor.value.insertValue(`![${file.name}](${baseUrl}${url})`);
}).catch(() => {
ElMessage.error('图片上传失败');
}).catch((error) => {
// 错误已在 axios 拦截器中显示,这里不再重复显示
console.error('图片上传失败:', error);
});
},
},
@@ -150,7 +151,8 @@ const save = async (value) => {
}
} catch (error) {
saveStatus.value = '保存失败';
ElMessage.error('保存失败: ' + (error.message || '未知错误'));
// 错误已在 axios 拦截器中显示,这里不再重复显示
console.error('保存失败:', error);
} finally {
isSaving.value = false;
}

View File

@@ -118,7 +118,8 @@ const handleDeleteGroup = (group) => {
ElMessage.success('分类已删除');
emit('group-deleted');
} catch (error) {
ElMessage.error('删除分类失败: ' + error.message);
// 错误已在 axios 拦截器中显示,这里不再重复显示
console.error('删除分类失败:', error);
}
});
};

View File

@@ -113,7 +113,8 @@ const handleSubmit = async () => {
emit('group-created'); // 通知父组件刷新
handleClose();
} catch (error) {
ElMessage.error('创建分类失败: ' + error.message);
// 错误已在 axios 拦截器中显示,这里不再重复显示
console.error('创建分类失败:', error);
}
}
});

View File

@@ -154,7 +154,8 @@ const handleSubmit = async () => {
emit('move-success');
handleClose();
} catch (error) {
ElMessage.error('移动失败: ' + error.message);
// 错误已在 axios 拦截器中显示,这里不再重复显示
console.error('移动失败:', error);
} finally {
isLoading.value = false;
}

View File

@@ -68,7 +68,8 @@ const handleSubmit = async () => {
emit('privacy-changed', updatedFile);
handleClose();
} catch (error) {
ElMessage.error('修改笔记状态失败: ' + error.message);
// 错误已在 axios 拦截器中显示,这里不再重复显示
console.error('修改笔记状态失败:', error);
}
};
</script>

View File

@@ -60,7 +60,8 @@ const handleSubmit = async () => {
// 传递新名称给父组件
emit('renamed', newName.value);
} catch (error) {
ElMessage.error('重命名失败: ' + error.message);
// 错误已在 axios 拦截器中显示,这里不再重复显示
console.error('重命名失败:', error);
}
};
</script>

View File

@@ -80,7 +80,8 @@ const handleSubmit = () => {
emit('import-success');
handleClose();
} catch (error) {
ElMessage.error('导入失败: ' + error.message);
// 错误已在 axios 拦截器中显示,这里不再重复显示
console.error('导入失败:', error);
}
};
reader.readAsText(props.fileToImport);

View File

@@ -59,8 +59,8 @@ const fetchRegistrationStatus = async () => {
try {
isRegistrationEnabled.value = await getRegistrationStatus();
} catch (error) {
// 错误已在 axios 拦截器中显示,这里不再重复显示
console.error("Failed to fetch registration status:", error);
ElMessage.error('获取注册状态失败');
}
};
@@ -69,7 +69,7 @@ const handleToggleRegistration = async (value) => {
await toggleRegistration(value);
ElMessage.success(`注册功能已${value ? '开启' : '关闭'}`);
} catch (error) {
ElMessage.error('操作失败');
// 错误已在 axios 拦截器中显示,这里不再重复显示
isRegistrationEnabled.value = !value; // Revert on failure
}
};
@@ -80,7 +80,8 @@ const handleGenerateCode = async () => {
generatedCode.value = code;
ElMessage.success('注册码生成成功');
} catch (error) {
ElMessage.error('生成注册码失败: ' + error.message);
// 错误已在 axios 拦截器中显示,这里不再重复显示
console.error('生成注册码失败:', error);
}
};

View File

@@ -115,7 +115,8 @@ const handleCaptchaConfirm = async ({ captchaId, captchaCode }) => {
emit('password-updated');
handleClose();
} catch (error) {
ElMessage.error('密码修改失败: ' + (error.response?.data?.msg || error.message));
// 错误已在 axios 拦截器中显示,这里不再重复显示
console.error('密码修改失败:', error);
} finally {
loading.value = false;
}