diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 8a76186..218aa93 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -160,13 +160,15 @@ export const useUserStore = defineStore({ async loginByOpenId(openId: string) { try { // 先校验当前登录的用户的openid,如果和传入的openid匹配,直接返回true - // if (this.userdata && this.userdata.openId && openId && this.userdata.openId === openId) { - // return true; - // } + if (this.userdata && this.userdata.openId && this.userdata.userType === "JZ" + && openId && this.userdata.openId === openId + ) { + return true; + } // 如果当前登录的用户的openid和传入的openid不匹配,则调用checkOpenId接口进行校验 const res = await checkOpenId({ openId, - appCode: "JS", + appCode: "JZ", }); if (res.resultCode == 1 && res.result) { this.afterLoginAction(res.result); diff --git a/src/utils/request/index.ts b/src/utils/request/index.ts index 004a099..7fb37f6 100644 --- a/src/utils/request/index.ts +++ b/src/utils/request/index.ts @@ -62,6 +62,32 @@ export const interceptor = { return JSON.parse(response.data); } if (response.data) { + if (response.data.resultCode === -9998) { + const store = useUserStore(); + const userData = store.getUser || {}; + const openId = userData.openId || ''; + store.logout(); + if (openId && openId.length) { + // 返回一个新的Promise,用于重新登录并重新调用接口 + return new Promise((resolve, reject) => { + store.loginByOpenId(openId).then(() => { + // 重新登录成功后,重新发送原始请求 + // 使用原始请求配置,但确保包含所有必要参数 + const originalConfig = response.config; + request(Object.assign({}, originalConfig)).then((newResponse: any) => { + resolve(newResponse); + }).catch((error) => { + reject(error); + }); + }).catch((error) => { + // 重新登录失败,显示登录过期模态框 + console.error("重新登录失败:", error); + _loginExpiredModal(); + reject(error); + }); + }); + } + } return response.data; } else { console.log("接口无返回值", response); @@ -84,11 +110,12 @@ export function get( method: "GET", dataType: "json", responseType: "text", + timeout: 30000, // 设置30秒超时 }, options ) ).then((res) => { - if (res.resultCode == 1) { + if (res.resultCode == 1 || res.resultCode == 0) { resolve(res); } else { if (res.resultCode) { @@ -105,6 +132,14 @@ export function get( } } } + }).catch((error) => { + // 处理超时错误 + if (error.errMsg && error.errMsg.includes('timeout')) { + showToast("请求超时,请检查网络连接或稍后重试"); + } else { + showToast(error.message || "请求失败"); + } + reject(error); }); }); } @@ -124,6 +159,7 @@ export function post( method: "POST", dataType: "json", responseType: "text", + timeout: 300000, // 设置5分钟超时 }, options ) @@ -145,6 +181,14 @@ export function post( } } } + }).catch((error) => { + // 处理超时错误 + if (error.errMsg && error.errMsg.includes('timeout')) { + showToast("请求超时,请检查网络连接或稍后重试"); + } else { + showToast(error.message || "请求失败"); + } + reject(error); }); }); }