forked from huge/frontEnd/hugeOA

Mr Ke
2020-05-27 77a2a090ff1b9d1b03795d696954a28ba0e0871f
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
/* eslint-disable */
import axios from 'axios';
import { message } from 'antd';
import { NetworkState, BASE_URL, MockUrl } from './httpurl';
 
const CODE_SUCCESS = '200';
 
let recognitionParams = [].reduce((p, n) => {
  if (eval(n)) {
    p[n] = eval(n);
    return p;
  } else {
    return p;
  }
}, {}); //过滤掉为undefined的值,避免组装到接口url里面
 
// 将携带参数转换成参数字符串
let recognitionParamsTransferStr =
  Object.keys(recognitionParams).length > 0
    ? '?' +
      Object.entries(recognitionParams)
        .map(([k, v]) => `${k}=${v}`)
        .join('&')
    : '';
 
export default function fetch(options) {
  const {
    mock = false,
    url,
    data,
    params,
    method = 'get',
    showToast = true,
    autoLogin = true,
    headers = {},
  } = options;
  let token = window.localStorage.getItem('token') || undefined;
 
  headers['Content-type'] = 'application/json';
  headers['Accept'] = 'application/json';
 
  if (token) {
    headers['Authorization'] = token; //将token放入请求头
  }
 
  return axios({
    url: mock
      ? MockUrl + url + recognitionParamsTransferStr
      : BASE_URL + url + recognitionParamsTransferStr,
    method,
    data,
    params,
    headers,
  })
    .then((res) => {
      // Taro.hideLoading();
      const { code, data, msg } = res.data;
      if (code == '0') {
        return data || true;
      } else if (
        code == '10005' ||
        code == '401' ||
        code == '10002' ||
        code == '10003'
      ) {
        // token失效重新返回登录页面
        // this.props.history.push({ pathname: '/login' });
        window.location.href = window.location.origin + '#/login';
      } else {
        message.warning(msg);
        return false;
      }
    })
    .catch((err) => {
      console.log(err);
      window.location.href = window.location.origin + '#/login';
    });
}