forked from huge/frontEnd/hugeOA

1
liuwh
2020-04-06 6cb2044ba90ed2d3a43760f226eadcc65fa4e5a6
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
/* 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' });
      } else {
        message.warning(msg);
        return false;
      }
    })
    .catch(err => {
      console.log(err);
      let defaultMsg = '';
 
      if (err.code !== CODE_SUCCESS) {
        defaultMsg = '请求异常,请检查网络连接状况';
      }
      // Taro.showToast({
      //     title: defaultMsg,
      //     icon: "none"
      // });
      // return Promise.reject({ message: defaultMsg, ...err });
      return Promise.reject({ msg: 'error' });
    });
}