|
|
@@ -10,7 +10,37 @@ import {
|
|
|
} from '@/utils/base64.js';
|
|
|
import Request from '@/utils/luch-request/index.js';
|
|
|
const http = new Request(options);
|
|
|
-http.interceptors.request.use((config) => { // 可使用async await 做异步操作
|
|
|
+let isTokenExpired = false;
|
|
|
+// 检查网络状态函数
|
|
|
+const checkNetworkStatus = () => {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ uni.getNetworkType({
|
|
|
+ success: (res) => {
|
|
|
+ console.log(res)
|
|
|
+ if (res.networkType === 'none') {
|
|
|
+ reject(new Error('网络连接已断开'));
|
|
|
+ } else {
|
|
|
+ resolve(true);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fail: () => {
|
|
|
+ reject(new Error('网络状态检测失败'));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+http.interceptors.request.use(async (config) => { // 可使用async await 做异步操作
|
|
|
+ try {
|
|
|
+ await checkNetworkStatus();
|
|
|
+ } catch (error) {
|
|
|
+ uni.showToast({
|
|
|
+ title: error.message,
|
|
|
+ icon: 'none',
|
|
|
+ duration: 3000
|
|
|
+ });
|
|
|
+ return Promise.reject(config);
|
|
|
+ }
|
|
|
// 假设有token值需要在头部需要携带
|
|
|
let accessToken = uni.getStorageSync('accessToken');
|
|
|
if (accessToken) {
|
|
|
@@ -57,7 +87,7 @@ http.interceptors.response.use((response) => {
|
|
|
title: response.data.msg,
|
|
|
icon: 'none'
|
|
|
});
|
|
|
- }else if (response.data.code === 403) {
|
|
|
+ } else if (response.data.code === 403) {
|
|
|
uni.showModal({
|
|
|
title: '提示',
|
|
|
content: response.data.msg,
|
|
|
@@ -72,7 +102,7 @@ http.interceptors.response.use((response) => {
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
- }else if (response.data.code) {
|
|
|
+ } else if (response.data.code) {
|
|
|
return Promise.reject(response);
|
|
|
} else {
|
|
|
return response.data;
|
|
|
@@ -80,22 +110,31 @@ http.interceptors.response.use((response) => {
|
|
|
}
|
|
|
return response.data;
|
|
|
}, (response) => {
|
|
|
-
|
|
|
+ if (response.statusCode === 0 || !response.statusCode) {
|
|
|
+ uni.showToast({
|
|
|
+ title: '网络连接中断,请检查网络设置',
|
|
|
+ icon: 'none',
|
|
|
+ duration: 3000
|
|
|
+ });
|
|
|
+ return Promise.reject(response);
|
|
|
+ }
|
|
|
/* 对响应错误做点什么 (statusCode !== 200)*/
|
|
|
- if (response.data.code === 401) {
|
|
|
+ if (response.data.code === 401&& !isTokenExpired) {
|
|
|
+ isTokenExpired = true;
|
|
|
uni.showModal({
|
|
|
title: '提示',
|
|
|
content: '登录状态失效,点击确定重新登录',
|
|
|
showCancel: false,
|
|
|
success: function(res) {
|
|
|
if (res.confirm) {
|
|
|
+ isTokenExpired = false;
|
|
|
uni.reLaunch({
|
|
|
url: '/pages/login/index'
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
- }else if (response.data.error === "unauthorized") {
|
|
|
+ } else if (response.data.error === "unauthorized") {
|
|
|
if (response.data.error_description) {
|
|
|
uni.showToast({
|
|
|
title: response.data.error_description,
|