Bläddra i källkod

Merge branch 'jobFair' of https://git.citupro.com/zhengnaiwen_citu/menduner into jobFair

Xiao_123 5 dagar sedan
förälder
incheckning
7cfb1d0a56
1 ändrade filer med 39 tillägg och 7 borttagningar
  1. 39 7
      src/config/axios/service.js

+ 39 - 7
src/config/axios/service.js

@@ -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(() => {