import axios from 'axios' import utils from '@/utils/encode' const devUrl = 'http://192.168.0.33:48080' // 测试,不加密 const testUrl = 'http://192.168.0.25:48080' // 测试,加密 const productionUrl = 'https://www.51xingka.net/oilApp' // 生产,加密 const env = process.env.NODE_ENV // 环境 // const env = 'production' // 仅用于测试 const service = axios.create({ baseURL: env=='production'?productionUrl:testUrl, // // baseURL: 'http://192.168.0.33:48080', // // baseURL: 'https://www.51xingka.net/oilApp', //生产 timeout: 5000 }) var url = '' let outTimer = null service.interceptors.request.use( config => { // 拦截请求 uni.showLoading({ title: '加载中...' }) const token = uni.getStorageSync('Authorization') const openid = uni.getStorageSync('device') config.headers['Authorization'] = token config.headers['device'] = openid config.headers['dataSources'] = 'MP' if (env === 'production') { // 生产环境,加密,不输出任何东西 // 设置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: '' // 加密后的密文 } console.log('请求路径', config.url, '参数加密前', config.data) // 要加密 data.params = utils.encrypt(JSON.stringify(config.data)) config.data = data // } } else { 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 => { const res = response.data // const env = process.env.NODE_ENV // const env = 'production' // 测试中的生茶 if (env === 'production') { // 生产环境,进行加密解密,不输出日志 if (res.encrypt == 1) { // 加密的数据,需要解密 const dataParam = JSON.parse(utils.decrypt(res.data)) res.data = JSON.stringify(dataParam) === '{}' ? null : dataParam console.log('生产环境 请求路径', response.config.url, '解密为', res.data) } } else { console.log('请求路径', response.config.url, '返回结果未加密', res) console.log('-------------------------------------------') } uni.hideLoading() if (res.code != 20000) { clearTimeout(outTimer) uni.showToast({ title: res.msg, icon: "none" }) // if (res.code === 42011) { // console.log(res.code) // uni.reLaunch({ // url: '/pages/startPage/startPage', // success: () => { // console.log('跳转成功') // }, // fail: (err) => { // console.log(err) // } // }) // } if (res.msg === '您已被迫下线') { outTimer = setTimeout(() => { uni.showModal({ title: '下线提醒', confirmText: '重新登录', cancelText: "退出", content: '您的账号在另一微信下登录了星油云站,请确认是否本加油站工作人员操作', success: function(res) { if (res.confirm) { uni.reLaunch({ url: '/pages/startPage/startPage', success: () => { console.log('跳转成功') }, fail: (err) => { console.log(err) } }) } else if (res.cancel) { uni.reLaunch({ url: '/pages/login/boforeLogin/boforeLogin', success: () => { console.log('跳转成功') }, fail: (err) => { console.log(err) } }) } } }); }, 1000) } } 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" }) } } }); 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