import axios from 'axios' import qs from 'qs' const TIME_OUT_MS = 60 * 1000 // 默认请求超时时间 /* * @param response 返回数据列表 */ function handleResults (response) { let remoteResponse = response.data; return remoteResponse } function handleUrl (url) { url = BASE_URL + url; return url } /* * @param data 参数列表 * @return */ function handleParams (data) { return data } export default { /* * @param url * @param data * @param response 请求成功时的回调函数 * @param exception 异常的回调函数 */ post (url, data, response, exception) { let user = sessionStorage.getItem('user') , token = ""; if(user != null){ token = JSON.parse(user).id // data.token = token } axios({ method: 'post', url: handleUrl(url), data: handleParams(qs.stringify(data)), // timeout: TIME_OUT_MS, headers: { //'Content-Type': 'application/json; charset=UTF-8' 'Content-type': ' application/x-www-form-urlencoded; charset=UTF-8', 'Token': token } }).then( (result) => { response(handleResults(result)) } ).catch( (error) => { if (exception) { exception(error) } else { console.log(error) } } ) }, /* * get 请求 * @param url * @param response 请求成功时的回调函数 * @param exception 异常的回调函数 */ get (url , response, exception) { let user = sessionStorage.getItem('user') , token = ""; if(user != null){ token = JSON.parse(user).id // data.token = token } axios({ method: 'get', url: handleUrl(url), headers: { 'Content-Type': 'application/json; charset=UTF-8', 'Token': token } }).then( (result) => { response(handleResults(result)) } ).catch( (error) => { if (exception) { exception(error) } else { console.log(error) } } ) }, /* * 导入文件 * @param url * @param data * @param response 请求成功时的回调函数 * @param exception 异常的回调函数 */ uploadFile (url, data, response, exception) { let user = sessionStorage.getItem('user') , token = ""; if(user != null){ token = JSON.parse(user).id // data.token = token } axios({ method: 'post', url: handleUrl(url), data: handleParams(data), dataType: 'json', processData: false, contentType: false, headers: { 'Token': token } }).then( (result) => { response(handleResults(result, data)) } ).catch( (error) => { if (exception) { exception(error) } else { console.log(error) } } ) }, /* * 下载文件用,导出 Excel 表格可以用这个方法 * @param url * @param param * @param fileName 如果是导出 Excel 表格文件名后缀最好用.xls 而不是.xlsx,否则文件可能会因为格式错误导致无法打开 * @param exception 异常的回调函数 */ downloadFile (url, data, fileName, exception) { var user = sessionStorage.getItem('user') , token = ""; if(user != null){ token = JSON.parse(user).headImgurl } axios({ method: 'post', url: handleUrl(url), data: handleParams(data), responseType: 'blob' }).then( (result) => { const excelBlob = result.data if ('msSaveOrOpenBlob' in navigator) { window.navigator.msSaveOrOpenBlob(excelBlob, fileName) } else { const elink = document.createElement('a') elink.download = fileName elink.style.display = 'none' const blob = new Blob([excelBlob]) elink.href = URL.createObjectURL(blob) document.body.appendChild(elink) elink.click() document.body.removeChild(elink) } } ).catch( (error) => { if (exception) { exception(error) } else { console.log(error) } } ) }, uploadFileFormData (url, data, response, exception) { axios({ method: 'post', url: handleUrl(url), data: data, // timeout: TIME_OUT_MS, headers: { 'Content-Type': 'multipart/form-data' } }).then( (result) => { response(handleResults(result)) } ).catch( (error) => { if (exception) { exception(error) } else { console.log(error) } } ) } }