// 导入axios
import axios from 'axios'
// 使用element-ui Message做消息提醒
import {
  Message
} from 'element-ui';
import {
  getToken
} from '@/utils/auth'
//1. 创建新的axios实例，
const service = axios.create({
  // baseURL: process.env.BASE_API,
  baseURL: '/api',
  // 超时时间 单位是ms，这里设置了3s的超时时间
  timeout: 3 * 1000
})
// 2.请求拦截器
service.interceptors.request.use(config => {
  //发请求前做的一些处理，数据转化，配置请求头，设置token,设置loading等，根据需求去添加
  config.data = JSON.stringify(config.data); //数据转化,也可以使用qs转换
  config.headers = {
    'Content-Type': 'application/x-www-form-urlencoded' //配置请求头
  }
  const token = getToken();
  if (token) {
    config.params = {
      'token': token
    } //如果要求携带在参数中
    config.headers.token = token; //如果要求携带在请求头中
  }
  return config
}, error => {
  Promise.reject(error)
})

// 3.响应拦截器
service.interceptors.response.use(
  (response) => {
    const res = response.data
    if (response.config.responseType !== 'blob') {
      if (res.code !== 0) {
        Message({
          message: res.msg || 'Error',
          type: 'error',
          duration: 3 * 1000,
        })
        return Promise.reject(new Error(res.msg || 'Error'))
      } else {
        return res
      }
    }
    return res
  },
  (error) => {
    let res = error.response
    if (error.response) {
      if (res.status == 401) {
        Vue.prototype.parentFns.portal_logout()
      }
    }
    return Promise.reject(error)
  }
)

//4.导入文件
export default service
