zhongrj
2026-06-02 0299e41c6692684d943b4a206472a86ea84ea4b5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import axios from "axios";
import store from '@/store/';
import router from '@/router/page';
import { getToken } from '@/utils/auth';
import { MessageBox } from 'element-ui';
import website from '@/config/website';
import { Base64 } from 'js-base64';
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
 
const service = axios.create({
  timeout: 600000,
});
 
service.defaults.validateStatus = function (status) {
  return status >= 200 && status <= 500;
};
 
service.defaults.withCredentials = true;
 
NProgress.configure({
  showSpinner: false
});
 
service.interceptors.request.use(
  (config) => {
    NProgress.start();
    const meta = (config.meta || {});
    const isToken = meta.isToken === false;
    config.headers['Authorization'] = `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`;
    
    if (getToken() && !isToken) {
      config.headers[website.tokenHeader] = 'bearer ' + getToken()
    }
    
    if (config.text === true) {
      config.headers["Content-Type"] = "text/plain";
    }
    
    config.cancelToken = new axios.CancelToken((cancel) => {
      window._axiosPromiseArr.push({ cancel });
    });
 
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);
 
service.interceptors.response.use(
  (res) => {
    NProgress.done();
    const status = res.data.code || res.status;
    const statusWhiteList = website.statusWhiteList || [];
    const message = res.data.msg || res.data.error_description || '未知错误';
    
    if (statusWhiteList.includes(status)) return Promise.reject(res);
    
    if (status === 401) {
      store.dispatch('FedLogOut').then(() => {
        router.push({ path: '/login' });
      });
    }
    
    if (status !== 200 && status !== 201) {
      MessageBox.alert(message);
      return Promise.reject(new Error(message))
    }
 
    if (res.data.resultList && res.data.resultList.length > 0) {
      res.data.resultList = res.data.resultList.map((item) => {
        if (item.city_nm && item.city_nm == "恩施土家族苗族自治州") {
          item.city_nm = "恩施州";
        }
 
        if (item.ad_nm && item.ad_nm == "恩施土家族苗族自治州") {
          item.ad_nm = "恩施州";
        }
 
        return item;
      });
    }
 
    return res;
  },
  (error) => {
    NProgress.done();
    return Promise.reject(new Error(error));
  }
);
 
export default service;