|
@@ -63,6 +63,7 @@ service.interceptors.request.use(
|
|
|
const userStore = useUserStore()
|
|
|
config.headers['Accept-Language'] = getCurrentLocaleLang() ?? 'zh_CN'
|
|
|
config.headers['Login-User-Type'] = 1
|
|
|
+ config.showError = config.showError === false ? false : true
|
|
|
// 是否需要设置 token
|
|
|
let isToken = (config.headers || {}).isToken === false
|
|
|
// token类型. api》function中设置tokenIndex(优先)
|
|
@@ -279,16 +280,23 @@ service.interceptors.response.use(
|
|
|
// 未注册过的手机号将code码返回
|
|
|
return Promise.reject(data)
|
|
|
}
|
|
|
- const _index = errorData.findIndex(e => e.url === config.url && e.time === +config.headers.timestamp)
|
|
|
- if (_index > -1) {
|
|
|
- const _d = errorData.splice(_index, 1)
|
|
|
- const _item = _d[0]
|
|
|
- // 保存错误信息
|
|
|
- if (code === 400) {
|
|
|
+ // 签名错误
|
|
|
+ if (code === 440) {
|
|
|
+ const _index = errorData.findIndex(e => e.url === config.url && e.time === +config.headers.timestamp)
|
|
|
+ if (_index > -1) {
|
|
|
+ const _d = errorData.splice(_index, 1)
|
|
|
+ const _item = _d[0]
|
|
|
+ // 更新服务器与用户时间差的值
|
|
|
+ const { setTimeDifference } = useSystem()
|
|
|
+ if (Number(response?.data?.msg)) setTimeDifference(response.data.msg - new Date().getTime())
|
|
|
+ // 请求重试
|
|
|
+ signErrRetry(config)
|
|
|
+ // 提交错误信息
|
|
|
sendError({ content: JSON.stringify(_item.content), mark: _item.time + '' })
|
|
|
}
|
|
|
+ config.showError = false
|
|
|
}
|
|
|
- if (code !== 200) {
|
|
|
+ if (code !== 200 && config.showError) {
|
|
|
Snackbar.error(msg)
|
|
|
return Promise.reject(msg)
|
|
|
}
|
|
@@ -350,6 +358,30 @@ const handleAuthorized = (response) => {
|
|
|
// return Promise.reject(t('sys.api.timeoutMessage'))
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * 处理440签名错误
|
|
|
+*/
|
|
|
+const maxRetries = 2 // 设置签名错误重试请求次数,超出次数弹出错误
|
|
|
+const retryDelay = 1000 // 请求延迟
|
|
|
+const signErrRetry = (config) => {
|
|
|
+ if (config) {
|
|
|
+ if (!config?.retryCount) {
|
|
|
+ config.retryCount = 0
|
|
|
+ }
|
|
|
+
|
|
|
+ // 超过重试次数
|
|
|
+ if (config.retryCount >= maxRetries) {
|
|
|
+ Snackbar.error('网络请求错误!')
|
|
|
+ return Promise.reject('签名错误')
|
|
|
+ }
|
|
|
+ // 重试
|
|
|
+ config.retryCount++
|
|
|
+ setTimeout(() => {
|
|
|
+ return service(config)
|
|
|
+ }, retryDelay)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
// 触发获取积分
|
|
|
const getIntegral = (url, store) => {
|
|
|
rewardEventTrackClick(url).then(() => {
|