import axios from 'axios' import qs from 'qs' import imgPath from "@/assets/image/jiazai.gif" const TIME_OUT_MS = 180 * 1000 // 默认请求超时时间 function prompt() { window.ELEMENT.Message({ message: `

技术人员更新系统中,请一分钟后重试

`, type: 'info', dangerouslyUseHTMLString: true, center: true, duration: 10000, iconClass: 'el-icon' }) console.log('执行多少次') } // 定时器 let timer = null let timer2 = null let flgs = 0 /* * @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 } if(localStorage.getItem('lang') == 'en') { data.lang = 'english' } 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) { var str = error + '' if(str.indexOf('504') != '-1' || str.indexOf('502') != '-1') { if (flgs == 0) { timer = setTimeout(() => { prompt() }, 100) flgs++ clearTimeout(timer2) timer2 = setTimeout(() => { flgs = 0 }, 12000) } // exception(false) } else { exception(error) } } else { console.log(error, 3) } } ) }, WPGpost (url, data, response, exception) { let user = sessionStorage.getItem('user') , token = ""; if(user != null){ token = JSON.parse(user).id } axios({ method: 'post', url: handleUrl(url), // timeout: TIME_OUT_MS, headers: { //'Content-Type': 'application/json; charset=UTF-8' 'Content-type': ' application/x-www-form-urlencoded; charset=UTF-8', 'Token': token, 'app_id': '3bf356d5-bdba-48d4-b1f5-e91468beefa3', 'app_key': 'f2960f3bf3c5ca58ee0c6970c1242e87-1655272886142-371814' }, data: { 'headers' : { 'Authorization' : '' }, 'IT_TAB': { 'PSPHI': '', 'PROJK': '', 'GJAHR': '', 'MONAT': '', 'ZUNAM': '', 'ZID': '', 'ZDEP': '', 'DMBTR': '', } } }).then( (result) => { response(handleResults(result)) } ).catch( (error) => { if (exception) { var str = error + '' if(str.indexOf('504') != '-1' || str.indexOf('502') != '-1') { if (flgs == 0) { timer = setTimeout(() => { prompt() }, 100) flgs++ clearTimeout(timer2) timer2 = setTimeout(() => { flgs = 0 }, 12000) } // exception(false) } else { exception(error) } } else { console.log(error, 3) } } ) }, /* * 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).id } axios({ method: 'post', url: handleUrl(url), data: handleParams(qs.stringify(data)), responseType: 'blob', headers: { 'Token': token } }).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) } } ) } }