import axios from 'axios'; import QS from 'qs'; import store from '../store/index' import { Message } from 'element-ui' import router from '../router/index' // 环境的切换 // if (process.env.NODE_ENV == 'development') { // axios.defaults.baseURL = '/api'; // } else if (process.env.NODE_ENV == 'debug') { // axios.defaults.baseURL = ''; // } else if (process.env.NODE_ENV == 'production') { // axios.defaults.baseURL = 'http://api.123dailu.com/'; // } // 请求超时时间 axios.defaults.timeout = 30000; // post请求头 axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'; // 请求拦截器 axios.interceptors.request.use(config => { let token = store.state.loginToken if(token){ config.headers.token = token } return config; }, err => { Message.error({ message: '退出登陆', onClose: function () { router.push({name: 'login'}); } }) return Promise.reject(err); }) // 响应拦截器 // axios.interceptors.response.use( // response => { // consol.log(response.status) // if (response.status === 200) { // return Promise.resolve(response); // } else { // return Promise.reject(response); // } // }, // // 服务器状态码不是200的情况 // error => { // if (error.response.status) { // switch (error.response.status) { // // 401: 未登录 // // 未登录则跳转登录页面,并携带当前页面的路径 // // 在登录成功后返回当前页面,这一步需要在登录页操作。 // case 500: // router.replace({ // path: '/login', // // query: { redirect: router.currentRoute.fullPath } // }); // break; // // 403 token过期 // // 登录过期对用户进行提示 // // 清除本地token和清空vuex中token对象 // // 跳转登录页面 // case 403: // // Toast({ // // message: '登录过期,请重新登录', // // duration: 1000, // // forbidClick: true // // }); // // 清除token // sessionStorage.removeItem('token'); // store.commit('loginSuccess', null); // // 跳转登录页面,并将要浏览的页面fullPath传过去,登录成功后跳转需要访问的页面 // setTimeout(() => { // router.replace({ // path: '/login', // query: { // redirect: router.currentRoute.fullPath // } // }); // }, 1000); // break; // // 404请求不存在 // case 404: // router.replace({ // path: '/404', // }); // break; // // 其他错误,直接抛出错误提示 // default: // router.replace({ // path: '/500', // }); // } // return Promise.reject(error.response); // } // } // ); function logouts(){ store.replaceState({}) localStorage.removeItem('ms_username') location.reload() } let tokenStatus = { 0: '用户未登录,请登录后操作!', 1: 'token错误,请重新登录!' } /** * get方法,对应get请求 */ export function get(url, params){ return new Promise((resolve, reject) =>{ axios.get(url, { params: params }) .then(res => { if(typeof res.data == 'number'){ this.$message.error(tokenStatus[res.data]) setTimeout(logouts,1500) return false } if (res.data.status) { switch (res.data.status) { case 200: resolve(res.data); break; case 10000: resolve(res.data); break; case 500: reject(res.data) break case 300: this.$message.error( res.data.errmessage ); break; case 404: this.$message.error( res.data.errmessage ); break; case 403: this.$message.error( res.data.errmessage ); break; case 401: Message.error("token失效,请重新登录"); sessionStorage.removeItem('token'); router.replace('/login') break; case 405: this.$message.error( res.data.errmessage ); break; case 406: this.$message.error( res.data.errmessage ); break; } }else{ resolve(res.data) } }) .catch(err => { reject(err.data) this.$message({ showClose: true, message: '请求失败,请刷新页面重新进行请求', type: 'error' }); }) }); } /** * post方法,对应post请求 */ export function post(url, params) { return new Promise((resolve, reject) => { axios.post(url,params) .then(res => { if (res.data.status) { switch (res.data.status) { case 200: resolve(res.data); break; case 500: this.$message.error( res.data.errmessage ); break; case 300: this.$message.error( res.data.errmessage ); break; case 404: this.$message.error( res.data.errmessage ); break; case 403: this.$message.error( res.data.errmessage ); break; case 401: Message.error("token失效,请重新登录"); sessionStorage.removeItem('token'); router.replace('/login') break; case 405: this.$message.error( res.data.errmessage ); break; case 406: this.$message.error( res.data.errmessage ); break; case 10001: this.$message.error( res.data.message ); break; } }else{ resolve(res.data) } }) .catch(err => { reject(err.data) this.$message({ showClose: true, message: '请求失败,请刷新页面重新进行请求', type: 'error' }); }) }); } /** * delete方法,对应delete请求 */ export function del(url, params){ return new Promise((resolve, reject) =>{ axios.delete(url, { params: params }) .then(res => { if (res.data.status) { switch (res.data.status) { case 200: resolve(res.data); break; // case 300: // this.$message.error( // res.data.errmessage // ); // break; case 500: this.$message.error( res.data.errmessage ); break; case 404: this.$message.error( res.data.errmessage ); router.replace({ path: '/404', }); break; case 403: this.$message.error( res.data.errmessage ); break; case 401: Message.error("token失效,请重新登录"); sessionStorage.removeItem('token'); router.replace('/login') break; case 405: this.$message.error( res.data.errmessage ); break; case 406: this.$message.error( res.data.errmessage ); break; } }else{ resolve(res.data) } }) .catch(err => { reject(err.data) this.$message({ showClose: true, message: '请求失败,请刷新页面重新进行请求', type: 'error' }); }) }); } /** * put修改 * @param {} url * @param {*} params */ export function put(url, params){ return new Promise((resolve, reject) =>{ axios.put(url, params) .then(res => { if (res.data.status) { switch (res.data.status) { case 200: resolve(res.data); break; case 300: this.$message.error( res.data.errmessage ); break; case 500: this.$message.error( res.data.errmessage ); break; case 404: this.$message.error( res.data.errmessage ); break; case 403: this.$message.error( res.data.errmessage ); break; case 401: Message.error("token失效,请重新登录"); sessionStorage.removeItem('token'); router.replace('/login') break; case 405: this.$message.error( res.data.errmessage ); break; case 406: this.$message.error( res.data.errmessage ); break; } }else{ resolve(res.data) } }) .catch(err => { reject(err.data) this.$message({ showClose: true, message: '请求失败,请刷新页面重新进行请求', type: 'error' }); }) }); }