import axios from "axios";
import { Message } from "element-ui";
import router from "../router/index";
const NODE_ENV = process.env.NODE_ENV;
let http = axios.create({
    baseURL: NODE_ENV === "development" ? "/api(开发环境)" : "正式环境后台地址", // 开发环境/正式环境(打包后)
    withCredentials: true,
    headers: {
        "Content-Type": "application/json",
        "Token": ''
    },
});
function apiAxios(method, url, params, response) {
    http({
        method: method,
        url: url,
        data: method === "POST" || method === "PUT" ? params : null,
        params: method === "GET" || method === "DELETE" ? params : null,
    }).then(function (res) {
        response(res);
    }).catch(function (err) {
        response(err);
    })
}
// 添加请求拦截器
http.interceptors.request.use(function (config) {
    const token = localStorage.getItem("token") || "";
    config.headers['Token'] = token;
    return config;
}, function (error) {
    return Promise.reject(error);
});
// 添加响应拦截器
http.interceptors.response.use(function (response) {
    return response;
}, function (error) {
    if(error.response.data.message == "token信息失效") {
        Message({
            showClose: true,
            message: "身份信息失效,请重新登录!",
            type: "warning"
        });
        setTimeout(function(){
            // 清除token 跳转登录页
            localStorage.removeItem("token");
            router.push({
                path: "/"
            })
        },2000);
    }
    return Promise.reject(error);
});
export default {
    get: function (url, params, response) {
        return apiAxios("GET", url, params, response)
    },
    post: function (url, params, response) {
        return apiAxios("POST", url, params, response)
    },
    put: function (url, params, response) {
        return apiAxios("PUT", url, params, response)
    },
    delete: function (url, params, response) {
        return apiAxios("DELETE", url, params, response)
    }
}
// 请求示例
LoginBtn() {
     this.LoginIstrue = true;
     if(this.name == ''){
         this.$message({
              showClose: true,
              message: '用户名不可为空!',
              type: 'warning'
         });return false
     }else if(this.pwd == '') {
         this.$message({
             showClose: true,
             message: '密码不可为空!',
             type: 'warning'
         });return false
     }
     let url = '*****';
     let pwd = this.$md5(this.pwd);
     let params = {
         account: this.name,
         password: pwd,
     }; 
     this.$axios.get(url, params, res => {
          if(res.data.code == 0) {
               localStorage.token = res.data.data;
               this.$router.push({
                   path: '/home'
               })
               this.$message({
                   showClose: true,
                   message: '欢迎您,管理员!',
                   type: 'success'
               });
               this.LoginIstrue = false;
          }else{
               this.$message({
                   showClose: true,
                   message: res.data.message,
                   type: 'warning'
               });
               this.LoginIstrue = false;
          }
     });      
}