修复:解决测试发现的问题

This commit is contained in:
2025-11-12 16:00:44 +08:00
parent 1da75a59f2
commit 1daa6367c9
29 changed files with 133 additions and 182 deletions

View File

@@ -1,4 +1,3 @@
// 片段示例 - requestInterceptor 更稳健的写法
import type { IRequestOptions } from '../types'
import { useUserStore } from '@/stores/user'
import { APP_INFO } from '@/api/config'

View File

@@ -1,5 +1,5 @@
// api/interceptors/response.ts
import type { IApiResponse } from '../types';
import { t } from '@/utils/i18n'
/**
* 响应拦截器:严格兼容原项目返回约定
@@ -12,23 +12,24 @@ import type { IApiResponse } from '../types';
*/
function handleAuthExpired() {
// 清空本地登录信息(保持与原项目一致)
// 清空本地登录信息
try {
uni.removeStorageSync('userInfo');
} catch (e) {}
// 跳转 login与原项目保持一致的路径
// 在小程序/APP/H5 情况下原项目分别做了适配,简单通用处理如下:
uni.showToast({ title: '登录失效,请重新登录', icon: 'none' });
uni.showToast({ title: t('global.loginExpired'), icon: 'none' });
setTimeout(() => {
uni.navigateTo({ url: '/pages/login/login' });
uni.reLaunch({ url: '/pages/login/login' });
}, 600);
}
export function responseInterceptor(res: UniApp.RequestSuccessCallbackResult) {
// 先处理非 200 的 http 状态
if (res.statusCode && res.statusCode !== 200) {
const msg = `网络错误(${res.statusCode})`;
uni.showToast({ title: msg, icon: 'none' });
const msg = `${t('global.networkConnectionError')} (${res.statusCode})`;
setTimeout(() => {
uni.showToast({ title: msg, icon: 'none' });
}, 10);
return Promise.reject({ statusCode: res.statusCode, errMsg: msg, response: res });
}
@@ -59,17 +60,17 @@ export function responseInterceptor(res: UniApp.RequestSuccessCallbackResult) {
if (code === '401' || code === 401) {
// 触发登出流程
handleAuthExpired();
return Promise.reject({ statusCode: 0, errMsg: '登录失效', data: httpData });
return Promise.reject({ statusCode: 0, errMsg: t('global.loginExpired'), data: httpData });
}
// 原项目还将 1000,1001,1100,402 等视作需要强制登录
if (code === '1000' || code === '1001' || code === 1000 || code === 1001 || code === 1100 || code === '402' || code === 402) {
handleAuthExpired();
return Promise.reject({ statusCode: 0, errMsg: message || '请登录', data: httpData });
return Promise.reject({ statusCode: 0, errMsg: message || t('global.loginExpired'), data: httpData });
}
// 其他后端业务错误toast 并 reject
const errMsg = message || '请求异常';
const errMsg = message || t('global.requestException');
if (errMsg) {
uni.showToast({ title: errMsg, icon: 'none' });
}