xiangpei
2024-11-12 79b9c73e0717c244391ab1e15c6f6da9975f2610
src/utils/request.ts
@@ -11,6 +11,7 @@
import { encryptBase64, encryptWithAes, generateAesKey } from '@/utils/crypto';
import { encrypt } from '@/utils/jsencrypt';
import router from "@/router";
import { ElLoading, ElMessage, ElNotification } from "element-plus";
let downloadLoadingInstance: LoadingInstance;
// 是否显示重新登录
@@ -46,13 +47,14 @@
    }
    // get请求映射params参数
    if (config.method === 'get' && config.params) {
      console.log(config.params, '请求参数');
      let url = config.url + '?' + tansParams(config.params);
      url = url.slice(0, -1);
      config.params = {};
      config.url = url;
    }
    if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) {
    if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put' || config.method === 'get')) {
      const requestObj = {
        url: config.url,
        data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data,
@@ -65,7 +67,7 @@
        const s_url = sessionObj.url; // 请求地址
        const s_data = sessionObj.data; // 请求数据
        const s_time = sessionObj.time; // 请求时间
        const interval = 500; // 间隔时间(ms),小于此时间视为重复提交
        const interval = 5; // 间隔时间(ms),小于此时间视为重复提交
        if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
          const message = '数据正在处理,请勿重复提交';
          console.warn(`[${s_url}]: ` + message);
@@ -76,7 +78,8 @@
      }
    }
    // 当开启参数加密
    if (isEncrypt && (config.method === 'post' || config.method === 'put')) {
    if (isEncrypt && (config.method === 'post' || config.method === 'put' || config.method === 'get')) {
      console.log('开启了参数加密');
      // 生成一个 AES 密钥
      const aesKey = generateAesKey();
      config.headers['encrypt-key'] = encrypt(encryptBase64(aesKey));
@@ -89,14 +92,15 @@
    return config;
  },
  (error: any) => {
    console.log(error);
    console.log(error, 'wcs');
    return Promise.reject(error);
  }
);
// 响应拦截器
service.interceptors.response.use(
  (res: AxiosResponse) => {
  async (res: AxiosResponse) => {
    // 未设置状态码则默认成功状态
    const code = res.data.code || HttpStatus.SUCCESS;
    // 获取错误信息
@@ -106,33 +110,20 @@
      return res.data;
    }
    if (code === 401) {
      console.log(code,'code==============');
      router.push({ path: '/login' });
      // prettier-ignore
      // if (!isRelogin.show) {
      //   // isRelogin.show = true;
      //   isRelogin.show = true;
      //   ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
      //     confirmButtonText: '重新登录',
      //     cancelButtonText: '取消',
      //     type: 'warning'
      //   }).then(() => {
      //     isRelogin.show = false;
      //     useUserStore().logout().then(() => {
      //         location.href = import.meta.env.VITE_APP_CONTEXT_PATH + 'index';
      //       });
      //   }).catch(() => {
      //     isRelogin.show = false;
      //   });
      // }
      return Promise.reject('无效的会话,或者会话已过期,请重新登录。');
      const userStore = useUserStore();
      await userStore.logout()
      console.log(code, 'code==============');
      await router.push({ path: '/login' });
      return
    } else if (code === HttpStatus.SERVER_ERROR) {
      console.log(msg);
      ElMessage({ message: msg, type: 'error' });
      return Promise.reject(new Error(msg));
      return Promise.reject(new Error('系统内部错误'));
    } else if (code === HttpStatus.WARN) {
      ElMessage({ message: msg, type: 'warning' });
      return Promise.reject(new Error(msg));
      return Promise.reject(new Error('系统警告消息'));
    } else if (code !== HttpStatus.SUCCESS) {
      ElNotification.error({ title: msg });
      return Promise.reject('error');