Files
wx_oms/utils/request.js
xiaozhiyong 895d23dd5c 更新
2024-03-15 08:51:39 +08:00

179 lines
4.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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.77:38080'
// const productUrl = 'https://www.xingoil.com/adminapi'
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