import axios from 'axios' import utils from '@/utils/encode' // const env = process.env.NODE_ENV const env = 'production'/* */ // const env = 'test' const testUrl = 'http://192.168.0.254:38080' // const productUrl = 'http://121.196.213.68/adminapi' //预生产 const productUrl = 'https://www.xingoil.com/adminapi' // 生产,加密 new // const productUrl = 'http://uat.xingoil.com/adminapi' // 生产,加密 new const service = axios.create({ baseURL: env == 'production' ? productUrl : testUrl, // baseURL: testUrl, timeout: 5000 }) var url = '' service.interceptors.request.use( config => { // 拦截请求 uni.showLoading({ title: '加载中...' }) const token = uni.getStorageSync('Authorization') const unionId = uni.getStorageSync('unionid') console.log(unionId) const openId = uni.getStorageSync('openid') // const accountSources = 'WE_CHAT_PROGRAM' const accountSources = 'LOGIN_MP_WECHAT' // console.log('取出来缓存', token, openid) config.headers['openId'] = openId config.headers['Authorization'] = token config.headers['accountSources'] = accountSources config.headers['imei'] = unionId config.headers['dataSources'] = 'MP' if (env === 'production') { const JSESSIONID = utils.uuid() config.headers['JSESSIONID'] = JSESSIONID config.headers['token'] = utils.md5Salt(JSESSIONID) const data = { // 用于存储加密 params: '' // 加密后的密文 } // 要加密 data.params = utils.encrypt(JSON.stringify(config.data)) config.data = data } else { url = config.url } return config }, error => { uni.hideLoading() uni.showToast({ title: '网络超时', icon: "none" }) return Promise.reject(error) } ) service.interceptors.response.use( response => { const res = response.data if (env === 'production') { // 生产环境,进行加密解密,不输出日志 if (res.encrypt == 1) { const dataParam = JSON.parse(utils.decrypt(res.data)) res.data = JSON.stringify(dataParam) === '{}' ? null : dataParam } } uni.hideLoading() if(response.config.url.indexOf('/oil-site/oilSiteOrderInfo/getOrderQrCode') === -1){ if (res.code != 20000 && res.msg != '令牌为空,不允许操作' && res.msg != '您的ip已经更改,请重新登录' && res.msg != '登录与操作设备不同' && res.msg != '用户未登录只可查询前两页油站信息') { uni.showToast({ title: res.msg, icon: "none" }) } } return res }, error => { uni.hideLoading() uni.getNetworkType({ success: function(res) { console.log(res.networkType); if (res.networkType === 'none') { uni.showToast({ title: '没有网啦!', icon: "none" }) } else { uni.showToast({ title: '请求失败!', icon: "none" }) console.log(error) } } }); return Promise.reject(error) } ) // #ifndef H5 service.defaults.adapter = function(config) { return new Promise((resolve, reject) => { var settle = require('axios/lib/core/settle'); var buildURL = require('axios/lib/helpers/buildURL'); uni.request({ method: config.method.toUpperCase(), url: config.baseURL + buildURL(config.url, config.params, config.paramsSerializer), header: config.headers, data: config.data, dataType: config.dataType, responseType: config.responseType, sslVerify: config.sslVerify, complete: function complete(response) { response = { data: response.data, status: response.statusCode, errMsg: response.errMsg, header: response.header, config: config }; settle(resolve, reject, response); } }) }) } // #endif export default service