123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- "use strict";
- import axios from "axios";
- import router from "@/router";
- import {useRequestLoading} from '@/hooks/useRequestLoading'
- import { MessagePlugin } from 'tdesign-vue-next';
- import CryptoJS from '@/utils/crypto'
- // Full config: https://github.com/axios/axios#request-config
- // axios.defaults.baseURL = process.env.baseURL || process.env.apiUrl || '';
- // axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
- // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
- //loading动画白名单
- const LOADINGWHITELIST=[]
- // 请求数
- let LOADINGCOUNT = 0;
- let LOADING;
- // 这里搞这个hook是为了如果要全局设置接口loading 就用这个
- const {isLoading,startLoading,closeLoading}=useRequestLoading()
- let config = {
- baseURL: import.meta.env.VITE_APP_API_URL,
- timeout: 10*60 * 1000, // Timeout
- // withCredentials: true, // Check cross-site Access-Control
- };
- const _axios = axios.create(config);
- _axios.interceptors.request.use(
- function (config) {
- // Do something before request is sent
- if(!LOADINGWHITELIST.includes(config.url)){
- if (LOADINGCOUNT === 0) {
- startLoading()
- }
- LOADINGCOUNT++;
- }
-
- config.headers.Authorization=sessionStorage.getItem('token')||''
- return config;
- },
- function (error) {
- // Do something with request error
- return Promise.reject(error);
- }
- );
- // Add a response interceptor
- _axios.interceptors.response.use(
- function (response) {
- // Do something with response data
- let data
- if(import.meta.env.MODE==='production'){
- data=JSON.parse(CryptoJS.Des3Decrypt(response.data,import.meta.env.VITE_APP_RESPONSE_DES_KEY));//解密
- }else{
- data=response.data
- }
-
- //关闭loading
- if(!LOADINGWHITELIST.includes(response.config.url)){
- LOADINGCOUNT--;
- if (LOADINGCOUNT === 0) {
- closeLoading()
- }
- }
-
- if(response.status!==200){
- setTimeout(() => {
- MessagePlugin.error('网络异常')
- }, 100);
- }
- if(!data){
- setTimeout(() => {
- MessagePlugin.error('服务器开了个小差')
- }, 100);
- }
- if(data.Ret===408){//token失效
- MessagePlugin.error(data.Msg)
-
- }
- if(data.Ret===403){
- setTimeout(() => {
- MessagePlugin.error(data.Msg||'网络异常')
- }, 100);
- }
- return data;
- },
- function (error) {
- //关闭loading
- LOADINGCOUNT--;
- if (LOADINGCOUNT === 0) {
- closeLoading()
- }
- console.log(error);
- setTimeout(() => {
- MessagePlugin.error(error.message)
- }, 300);
- // Do something with response error
- return Promise.reject(error);
- }
- );
- /**
- * 导出get请求方法
- * @url 请求地址
- * @params get请求参数
- */
- export const get = (url, params) => {
- return _axios.get(url, { params });
- };
- /**
- * 导出post请求方法
- * @url 请求地址
- * @params post请求参数
- */
- export const post = (url, params) => {
- return _axios.post(url, params);
- };
|