From c832bf2e80ac465e71b7a1c1f7a59d4252030989 Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Tue, 05 Aug 2025 17:33:08 +0800
Subject: [PATCH] feat:事件工单滚动条

---
 src/axios.js |  102 ++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 68 insertions(+), 34 deletions(-)

diff --git a/src/axios.js b/src/axios.js
index 23bebb6..d0039aa 100644
--- a/src/axios.js
+++ b/src/axios.js
@@ -5,6 +5,7 @@
  * isSerialize是否开启form表单提交
  * isToken是否需要token
  */
+
 import axios from 'axios';
 import store from '@/store/';
 import router from '@/router/';
@@ -13,31 +14,26 @@
 import { isURL, validatenull } from '@/utils/validate';
 import { ElMessage } from 'element-plus';
 import website from '@/config/website';
-import NProgress from 'nprogress'; // progress bar
-import 'nprogress/nprogress.css'; // progress bar style
 import { Base64 } from 'js-base64';
 import { baseUrl } from '@/config/env';
 import crypto from '@/utils/crypto';
-
+const adminUrl = import.meta.env.VITE_APP_DASHBOARD_URL;
 // 全局未授权错误提示状态,只提示一次
 let isErrorShown = false;
 
-axios.defaults.timeout = 10000;
+let _retry = false;
+// 超时时间设置为10分钟,部分接口上传比较慢,如固件上传
+axios.defaults.timeout = 600000;
 //返回其他状态码
 axios.defaults.validateStatus = function (status) {
   return status >= 200 && status <= 500; // 默认的
 };
 //跨域请求,允许保存cookie
 axios.defaults.withCredentials = true;
-// NProgress Configuration
-NProgress.configure({
-  showSpinner: false,
-});
+
 //http request拦截
 axios.interceptors.request.use(
   config => {
-    // start progress bar
-    NProgress.start();
     // 初始化错误提示状态
     isErrorShown = false;
     //地址为已经配置状态则不添加前缀
@@ -45,6 +41,7 @@
       config.url = baseUrl + config.url;
     }
     //安全请求header
+    config.headers['areaCode'] = store?.state?.user?.userInfo?.detail?.areaCode;
     config.headers['Blade-Requested-With'] = 'BladeHttpRequest';
     //headers判断是否需要
     const authorization = config.authorization === false;
@@ -67,16 +64,16 @@
         : 'bearer ' + token;
     }
     // 开启报文加密
-    if (cryptoData) {
-      if (config.params) {
-        const data = crypto.encryptAES(JSON.stringify(config.params), crypto.aesKey);
-        config.params = { data };
-      }
-      if (config.data) {
-        config.text = true;
-        config.data = crypto.encryptAES(JSON.stringify(config.data), crypto.aesKey);
-      }
-    }
+    // if (cryptoData) {
+    //   if (config.params) {
+    //     const data = crypto.encryptAES(JSON.stringify(config.params), crypto.aesKey);
+    //     config.params = { data };
+    //   }
+    //   if (config.data) {
+    //     config.text = true;
+    //     config.data = crypto.encryptAES(JSON.stringify(config.data), crypto.aesKey);
+    //   }
+    // }
     //headers中配置text请求
     if (config.text === true) {
       config.headers['Content-Type'] = 'text/plain';
@@ -94,18 +91,34 @@
 //http response拦截
 axios.interceptors.response.use(
   res => {
-    NProgress.done();
     const status = res.data.error_code || res.data.code || res.status;
     const statusWhiteList = website.statusWhiteList || [];
-    const message = res.data.msg || res.data.error_description || '系统错误';
+    const message = res.data.msg || res.data.error_description || res.data.message || '系统错误';
     const config = res.config;
     const cryptoData = config.cryptoData === true;
+    if (status === 511) {
+      ElMessage({
+        message: '请联系运维人员上传密钥证书!',
+        type: 'error',
+      });
+      // 获取当前路由名称
+      const currentRouteName = router.currentRoute.value.name;
+      // 如果当前路由不是登录页,则跳转到登录页
+      if (currentRouteName !== '登录页') {
+        store.dispatch('FedLogOut').then(() =>
+          router.push({
+            path: '/login',
+          })
+        );
+      }
+      return Promise.reject(new Error(message));
+    }
     //如果在白名单里则自行catch逻辑处理
     if (statusWhiteList.includes(status)) return Promise.reject(res);
     // 如果是401并且没有重试过,尝试刷新token
-    if (status === 401 && !config._retry) {
+    if (status === 401 && !_retry) {
       // 标记此请求已尝试刷新token
-      config._retry = true;
+      _retry = true;
       // 调用RefreshToken action来刷新token
       return store
         .dispatch('RefreshToken')
@@ -128,20 +141,30 @@
           if (!isErrorShown) {
             isErrorShown = true;
             ElMessage({
-              message: '用户令牌过期,请重新登录',
+              message: message,
               type: 'error',
             });
           }
           // 清除token信息
           removeToken();
           removeRefreshToken();
+          const env = import.meta.env.VITE_APP_ENV;
           // 重定向到登录页
-          store.dispatch('FedLogOut').then(() => router.push({ path: '/login' }));
+          // store.dispatch('FedLogOut').then(() => router.push({
+          // 	path: '/login'
+          // }));
+          env === 'development'
+            ? store.dispatch('FedLogOut').then(() =>
+                router.push({
+                  path: '/login',
+                })
+              )
+            : store.dispatch('FedLogOut').then(() => window.location.replace(`${adminUrl}#/login`));
           return Promise.reject(new Error(message));
         });
     }
     // 如果是401并且已经重试过,直接跳转到登录页面
-    if (status === 401 && config._retry) {
+    if (status === 401 && _retry) {
       // 首次报错时提示
       if (!isErrorShown) {
         isErrorShown = true;
@@ -154,7 +177,17 @@
       removeToken();
       removeRefreshToken();
       // 重定向到登录页
-      store.dispatch('FedLogOut').then(() => router.push({ path: '/login' }));
+      //   store.dispatch('FedLogOut').then(() => router.push({
+      //   	path: '/login'
+      //   }));
+      const env = import.meta.env.VITE_APP_ENV;
+      env === 'development'
+        ? store.dispatch('FedLogOut').then(() =>
+            router.push({
+              path: '/login',
+            })
+          )
+        : store.dispatch('FedLogOut').then(() => window.location.replace(`${adminUrl}#/login`));
       return Promise.reject(new Error(message));
     }
     // 如果请求为oauth2错误码则首次报错时提示
@@ -170,11 +203,13 @@
       return Promise.reject(new Error(message));
     }
     // 如果请求为非200默认统一处理
-    if (status !== 200) {
-      ElMessage({
-        message: message,
-        type: 'error',
-      });
+    if (status !== 200 && status !== 0) {
+      if (!isErrorShown) {
+        ElMessage({
+          message: message,
+          type: 'error',
+        });
+      }
       return Promise.reject(new Error(message));
     }
     // 解析加密报文
@@ -184,7 +219,6 @@
     return res;
   },
   error => {
-    NProgress.done();
     return Promise.reject(new Error(error));
   }
 );

--
Gitblit v1.9.3