import axios from "axios";
import { MessageBox , Message} from 'element-ui'
//创建axios实例
let service = axios.create({
  baseURL:process.env.NODE_ENV === "production"
  ? `http://${window.location.host}/`
  : "ip",
  withCredentials: true, // 允许携带cookie
  headers: {
    "x-requested-with": "XMLHttpRequest"
  }
});
//添加请求拦截器
service.interceptors.request.use(
  config => {
    if (config.method === "post" || config.method === "put") {
      // post、put 提交时,将对象转换为string, 为处理Java后台解析问题
      config.data = JSON.stringify(config.data);
    }
    // 请求发送前进行处理
    return config;
  },
  error => {
    // 请求错误处理
    return Promise.reject(error);
  }
);
//添加响应拦截器
service.interceptors.response.use(
  response => {
    if(response.data.code == 401){
      Message.closeAll();
      MessageBox('会话已失效,即将跳转至登录页面', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        window.location.href = `登录页地址`;
        sessionStorage.removeItem("userInfo");
      }).catch(() => {
        window.location.href = `登录页地址`;
        sessionStorage.removeItem("userInfo");
      });
      let timeout = setTimeout(() => {
        window.location.href = `登录页地址`;
        window.clearTimeout(timeout);
      }, 2000);
    }
    return response;
  },
  error => {
    let info = {},
      { status, statusText, data } = error.response;

    if (!error.response) {
      info = {
        code: 5000,
        msg: "Network Error"
      };
    } else {
      // 此处整理错误信息格式
      info = {
        code: status,
        data: data,
        msg: statusText
      };
    }
  }
);
export default service;