import axios from 'axios' import utils from '@/utils/encode' // const env = process.env.NODE_ENV // const env = 'test' const env = 'production' const testUrl = 'http://192.168.110.10:38080' // const productUrl = 'https://www.xingoil.com/adminapi' // const productUrl = 'https://www.xingoil.com/adminapi' // 生产,加密 new const productUrl = 'http://uat.xingoil.com/adminapi' const service = axios.create({ baseURL: env == 'production' ? productUrl : testUrl, // baseURL: testUrl, timeout: 5000 }) var url = '' service.interceptors.request.use( config => { // 拦截请求 uni.showLoading({ title: '加载中...', mask: true }) const token = uni.getStorageSync('Authorization') const unionId = uni.getStorageSync('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') { // console.log("这里是生产") // 生产环境,加密,不输出任何东西 // 设置jsessionid和token const JSESSIONID = utils.uuid() config.headers['JSESSIONID'] = JSESSIONID config.headers['token'] = utils.md5Salt(JSESSIONID) // if ( encryptWhite.indexOf(config.url) < 0) { // if (!notEncrypt && encryptWhite.indexOf(config.url) < 0) { // 这是定义在哪的 const data = { // 用于存储加密 params: '' // 加密后的密文 } // 要加密 data.params = utils.encrypt(JSON.stringify(config.data)) // console.log('参数', config.url, '参数加密前', config.data, '加密:', data) config.data = data // } } else { // console.log("这里是测试") // console.log('\n\n-----------------------') // console.log('参数', config.url, '参数加密前', config.data) url = config.url } return config }, error => { uni.hideLoading() uni.showToast({ title: '网络超时', icon: "none" }) return Promise.reject(error) } ) service.interceptors.response.use( response => { // console.log(response.data,'-------------------') 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 // console.log(res.data) // console.log('返回', response.config.url, '返回结果',res) } } else { // console.log('返回', response.config.url, '返回结果未加密', res) // console.log('-------------------------------------------\n\n') } uni.hideLoading() if (response.config.url.indexOf('/oil-site/oilSiteOrderInfo/getOrderQrCode') === -1) { // console.log(res, '----------------------------------') if (res.code != 20000 && res.msg != '令牌为空,不允许操作' && res.msg != '您的ip已经更改,请重新登录' && res.msg != '登录与操作设备不同') { uni.showToast({ title: res.msg, icon: "none" }) } } if(res.msg=='登录已过期!'){ uni.showModal({ title:'登录已过期', content:'是否重新登录', success: function (res) { if (res.confirm) { uni.redirectTo({ url:'/pages/login/login', fail(e) { console.log(e) } }) } else if (res.cancel) { console.log('用户点击取消'); } } }) } 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