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) { if(url.indexOf('.do') > -1) { url = LINK_URL + url; } else { 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) { 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', } }).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) { axios({ method: 'get', url: handleUrl(url), headers: { 'Content-Type': 'application/json; charset=UTF-8' } }).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) { axios({ method: 'post', url: handleUrl(url), data: handleParams(data), dataType: 'json', processData: false, contentType: false }).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, response, exception) { axios({ method: 'post', url: handleUrl(url), data: handleParams(qs.stringify(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) // } response(handleResults(result,data)) } ).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) } } ) } }