import axios from "axios"; //引用axios
import { Message } from 'element-ui'
import router from '@/router/index'//引入路由对象
import cookie from '@/utils/cookie'
// Vue.use(ElementUI);

// axios 配置
axios.defaults.timeout = 5000; //设置连接超时时间
axios.defaults.baseURL = "http://192.168.1.222/"; //这是调用数据接口，项目上线的时候修改这个地方就可以了
// axios.defaults.baseURL = "http://192.168.1.20:9099/"; //这是调用数据接口，项目上线的时候修改这个地方就可以了

// 也可以这样书写
const service = axios
// 如:http://localhost:3000/user/loginUser            使用aixos的时候直接写   /user/loginUser   就可以了
// 请求拦截器（所有发送的请求都要从这儿过一次），通过这个，我们就可以把token传到后台，

// 我这里是使用sessionStorage来存储token等权限信息和用户信息  token一般时间 比较短
service.interceptors.request.use(
    config => {
        const token = cookie.getCookie('token'); //获取存储在本地的token，如果需要token就在这里带上
        if (!config.changeHeaders) {
            config.headers = {    // 设置请求头   常用语post请求 
                "Content-Type": "application/json"
            };
            config.data = JSON.stringify(config.data);  // 这里我们也可以在过滤下 请求参数数据
        }
        if (!config.noToken) {
            if (token) {
                config.headers.AuthorizationToken = 'Bearer ' + token; //存在的话 就携带 token
            }
        }
        return config;   //  然后把配置返回
    },
    err => {
        console.log(err)   //  如果出错的话 打印出来错误看看
    }
);
//  响应拦截器    请求回来的结果 先在这里过一遍

service.interceptors.response.use(
    response => {
        if (response.data.code) {
            if (response.data.code !== 200) {
                if (response.data.code === 401) {
                    Message.error('登录状态过期，请重新登录!')
                    delCookie('token')
                    setTimeout(() => {
                        router.go(0);
                    }, 1000)
                } else {
                    Message.error(response.data.msg)
                    return response.data
                }
            } else {
                return response.data;   // 返回请求回来的数据
            }
        } else {
            return response
        }


    },
    err => {
        Message.error('接口无响应')
        // console.log(err)
    }
);
export default service;   // 把配置好的对象 导出
function delCookie(name) {
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval = cookie.getCookie(name);
    if (cval != null)
        document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
}