// const basePath = 'http://47.110.94.59/gateway' // const basePath = 'https://dev.cloud-dahua.com' import utils from './utils.js' import config from '../config.js' const instance = axios.create({ timeout: 10000 }) const urlHandle = function(method, url, param) { let queryStr = '' let data = param || {} if (method !== 'get') { return url } Reflect.ownKeys(data).forEach((one, index) => { let preStr = '' if (index) { preStr = '&' } queryStr = `${queryStr}${preStr}${one}=${data[one]}` }) return queryStr ? `${url}?${queryStr}` : url } /** * @method resetAjax ()ajax方法的封装 * @param param.method 请求的方法 * @param param.url 请求的地址 * @param param.data 请求的数据 * @param param.onSuccess 成功时需要的回调 * @param param.onError 错误时需要的回调 * @param param.sTipStr 成功时的提示 * @param param.eTipStr 错误时的提示 * @param param.isSNoTip true说明成功的不需要弹提示,默认为false * @param param.isENoTip true说明不需要错误的提示信息,默认为false * @param param.isNoLock true代表不需要锁屏 * @param param.isNoToken true代表不需要传token验证 * @param param.automaticQuery true 代表get请求时自动拼接query * @param param.rootPath true 代表请求时不需要拼接本地IP和起的端口号,false代表需要,默认为false */ export default (param) => { let path = param.rootPath ? param.url : config.base_url + param.url let url = param.automaticQuery ? urlHandle(param.method, path, param.data) : path instance.defaults.headers.common['Accept-Language'] = 'zh-CN' instance.defaults.headers.common['timeOffset'] = new Date().getTimezoneOffset() * 60 * 1000 //防重防攻击 时间戳 instance.defaults.headers.common['timestamp'] = +new Date() //防重防攻击 随机数 instance.defaults.headers.common['nonce'] = `web-${utils.guid()}-${+new Date()}` let headers = param.headers || {} if ((sessionStorage.token || localStorage.token) && !param.isNoToken) { let token = sessionStorage.token ? sessionStorage.token : localStorage.token if(param.url.includes('access_token=')) { headers.Authorization = 'Basic ' + 'YnJvd3Nlcjpicm93c2Vy' } else { headers.Authorization = 'Bearer ' + token } } instance({ method: param.method, url: url, data: param.data || {}, params: param.data && param.data.params ? param.data.params : {}, headers: headers, timeout: param.timeout || 10000 }).then(function (res) { res = utils.decodeObj(res) if (res.data.success) { param.onSuccess && param.onSuccess(res) } else { console.log('ajaxError================') param.onError && param.onError(res) } }).catch(function (e) { param.onError && param.onError(e) console.log('ajaxError================' + url + e) }) }