|
|
@@ -9,6 +9,54 @@ const service = axios.create({
|
|
|
timeout: 300000,
|
|
|
});
|
|
|
|
|
|
+/**
|
|
|
+ * 获取请求错误信息
|
|
|
+ * @param {object} error 请求错误对象
|
|
|
+ * @returns {string} 返回错误提示信息
|
|
|
+ */
|
|
|
+function getRequestErrorMessage(error) {
|
|
|
+ const status = error.response?.status;
|
|
|
+ const code = error.code;
|
|
|
+
|
|
|
+ if (code === 'ECONNABORTED' || /timeout/i.test(error.message || '')) {
|
|
|
+ return '请求超时:服务器长时间未响应。下一步:请稍后重试,若持续出现请联系管理员检查服务状态。';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!error.response) {
|
|
|
+ if (typeof navigator !== 'undefined' && navigator.onLine === false) {
|
|
|
+ return '网络不可用:当前设备似乎已断网。下一步:请检查网络连接恢复后重新操作。';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (code === 'ERR_NETWORK') {
|
|
|
+ return '网络异常:当前无法连接到服务器。下一步:请检查网络、服务地址或浏览器安全限制后重试。';
|
|
|
+ }
|
|
|
+
|
|
|
+ return `请求失败:${error.message || '无法连接服务器'}。下一步:请检查网络连接和服务地址后重试。`;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (status === 401) {
|
|
|
+ return '登录状态已失效:当前请求未通过身份校验。下一步:请重新登录后再试。';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (status === 403) {
|
|
|
+ return '没有操作权限:服务器拒绝了本次请求。下一步:请确认账号权限或联系管理员开通权限。';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (status === 404) {
|
|
|
+ return '接口不存在:当前请求的服务或资源未找到。下一步:请确认请求地址或联系后端排查接口配置。';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (status >= 500) {
|
|
|
+ return '服务异常:服务器处理请求时发生错误。下一步:请稍后重试,若持续出现请联系管理员查看服务日志。';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (status >= 400) {
|
|
|
+ return `请求异常:服务器返回 ${status}。下一步:请核对提交内容后重试,必要时联系管理员排查。`;
|
|
|
+ }
|
|
|
+
|
|
|
+ return `请求失败:${error.message || '未知错误'}。下一步:请稍后重试。`;
|
|
|
+}
|
|
|
+
|
|
|
// 请求拦截器
|
|
|
service.interceptors.request.use(
|
|
|
(config) => {
|
|
|
@@ -67,7 +115,7 @@ service.interceptors.response.use(
|
|
|
}
|
|
|
|
|
|
Message({
|
|
|
- message: error.message,
|
|
|
+ message: getRequestErrorMessage(error),
|
|
|
type: 'error',
|
|
|
duration: 3 * 1000,
|
|
|
});
|