第一提交
This commit is contained in:
84
utils/encode.js
Normal file
84
utils/encode.js
Normal file
@@ -0,0 +1,84 @@
|
||||
import CryptoJS from 'crypto-js'
|
||||
import md5 from 'js-md5'
|
||||
|
||||
// let Base64 = require('js-base64').Base64
|
||||
// import { JSEncrypt } from 'jsencrypt'
|
||||
var keyStr = 'qDfajQ*v@W1mCruZ'
|
||||
|
||||
export default {
|
||||
/**
|
||||
* @param {*需要加密的字符串 注:对象转化为json字符串再加密} word
|
||||
* @param {*aes加密需要的key值,这个key值后端同学会告诉你} keyStr
|
||||
*/
|
||||
encrypt(word) { // 加密
|
||||
var key = CryptoJS.enc.Utf8.parse(keyStr)
|
||||
var srcs = CryptoJS.enc.Utf8.parse(word)
|
||||
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
|
||||
mode: CryptoJS.mode.ECB,
|
||||
padding: CryptoJS.pad.Pkcs7
|
||||
}) // 加密模式为ECB,补码方式为PKCS5Padding(也就是PKCS7)
|
||||
return encrypted.toString()
|
||||
},
|
||||
decrypt(word) { // 解密
|
||||
var key = CryptoJS.enc.Utf8.parse(keyStr)
|
||||
// var srcs = CryptoJS.enc.Utf8.parse(word)
|
||||
if (word) {
|
||||
word = word.replace(/[\r\n]/g, "")
|
||||
}
|
||||
var decrypt = CryptoJS.AES.decrypt(word, key, {
|
||||
mode: CryptoJS.mode.ECB,
|
||||
padding: CryptoJS.pad.Pkcs7
|
||||
})
|
||||
return CryptoJS.enc.Utf8.stringify(decrypt).toString()
|
||||
},
|
||||
// decrypt (word) {
|
||||
// var key = CryptoJS.enc.Utf8.parse(keyStr)
|
||||
// var encryptedHexStr = CryptoJS.enc.Hex.parse(word);
|
||||
// var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
|
||||
// var decrypt = CryptoJS.AES.decrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 })
|
||||
// return decrypt.toString(CryptoJS.enc.Utf8).toString();
|
||||
// },
|
||||
// encrypt(data) {
|
||||
// // 新建JSEncrypt对象
|
||||
// let encryptor = new JSEncrypt();
|
||||
// // 设置公钥
|
||||
// encryptor.setPublicKey(keyStr);
|
||||
// // 加密数据
|
||||
// return encryptor.encrypt(data);
|
||||
// },
|
||||
// // 解密
|
||||
// decrypt(data) {
|
||||
// // 新建JSEncrypt对象
|
||||
// let decrypt = new JSEncrypt();
|
||||
// // 设置私钥
|
||||
// decrypt.setPrivateKey(keyStr);
|
||||
// // 解密数据
|
||||
// return decrypt.decrypt(secretWord);
|
||||
// },
|
||||
md5Salt(str) {
|
||||
// console.log('hahahahaha',str, str + "Do&9hY%l8e", md5(str + 'Do&9hY%l8e'))
|
||||
// str ='fd3fc615-3554-4ff5-8848-364577e8687d'
|
||||
// console.log('hahahahaha', str, str + "kdq*&qflbn1gga?aDq", md5(str + 'kdq*&qflbn1gga?aDq'))
|
||||
// console.log('\n\n------ begin: ------')
|
||||
// console.log("md5(str + 'kdq*&qflbn1gga?aDq')", md5(str + 'kdq*&qflbn1gga?aDq'))
|
||||
// console.log('------ end: ------\n\n')
|
||||
return md5(str + 'kdq*&qflbn1gga?aDq')
|
||||
},
|
||||
md5NoSalt(str) {
|
||||
return md5(str)
|
||||
},
|
||||
uuid() { // 获取uuid
|
||||
var s = []
|
||||
var hexDigits = '0123456789abcdef'
|
||||
for (var i = 0; i < 36; i++) {
|
||||
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1)
|
||||
}
|
||||
s[14] = '4'
|
||||
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1)
|
||||
s[8] = s[13] = s[18] = s[23] = '-'
|
||||
|
||||
var uuid = s.join('')
|
||||
return uuid
|
||||
}
|
||||
|
||||
}
|
||||
251
utils/request.js
Normal file
251
utils/request.js
Normal file
@@ -0,0 +1,251 @@
|
||||
import axios from 'axios'
|
||||
import utils from '@/utils/encode'
|
||||
|
||||
// const env = 'test' /* */
|
||||
// const env = 'test'// 仅用于测试、
|
||||
const env = 'production'
|
||||
//42 洛超 /29 孙志华 /40 阿浩
|
||||
// 测试日日顺时需要连阿浩
|
||||
|
||||
const testUrl = 'http://192.168.23:38080'
|
||||
// const productionUrl = 'https://www.51xingka.net/oilApp' // 生产,加密 old
|
||||
// const productionUrl = 'https://www.xingoil.com/adminapi' // 生产,加密 new
|
||||
// const productionUrl = 'https://www.xingoil.com/adminapi' // 生产,加密 new
|
||||
const productionUrl = 'http://uat.xingoil.com/adminapi'
|
||||
// const env = process.env.NODE_ENV // 环境
|
||||
const service = axios.create({
|
||||
baseURL: env=='production'?productionUrl:testUrl, //
|
||||
// baseURL: testUrl, //
|
||||
timeout: 5000
|
||||
})
|
||||
|
||||
var url = ''
|
||||
let outTimer = null
|
||||
|
||||
service.interceptors.request.use(
|
||||
config => {
|
||||
console.log('这里是config',config)
|
||||
// if(config.url.indexOf('/oil-user/oilCustomerChannelRelation/getByPhone/') != -1){
|
||||
// uni.hideToast()
|
||||
// }else{
|
||||
// 拦截请求
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
mask:true
|
||||
})
|
||||
// }
|
||||
const token = uni.getStorageSync('Authorization')
|
||||
const openid = uni.getStorageSync('device')
|
||||
const openId = uni.getStorageSync('openid')
|
||||
const unionId = uni.getStorageSync('unionid')
|
||||
const accountSources = 'LOGIN_MP_WECHAT'
|
||||
// console.log(unionId)
|
||||
// 原本为 openid
|
||||
config.headers['Authorization'] = token
|
||||
config.headers['imei'] = unionId
|
||||
config.headers['openId'] = openId
|
||||
config.headers['dataSources'] = 'MP'
|
||||
config.headers['accountSources'] = accountSources
|
||||
if (env === 'production') {
|
||||
// 生产环境,加密,不输出任何东西
|
||||
// 设置jsessionid和token
|
||||
console.log('这里是生产')
|
||||
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))
|
||||
// console.log('解密前的data===========',res)
|
||||
// console.log('解密后的data===========',dataParam)
|
||||
// 数据解密 赋值
|
||||
res.data=JSON.stringify(dataParam) === '{}' ? null : dataParam
|
||||
// console.log('这里是res解密后的',res.data)
|
||||
// console.log('生产环境 请求路径', response.config.url, '解密为', res.data)
|
||||
}
|
||||
} else {
|
||||
console.log('请求路径', response.config.url, '返回结果未加密', res)
|
||||
console.log('-------------------------------------------')
|
||||
}
|
||||
|
||||
uni.hideLoading()
|
||||
if (res.code != 20000) {
|
||||
console.log('这里是登录报错处',res)
|
||||
if(response.config.url.indexOf('/oil-user/oilCustomerChannelRelation/getByPhone/') != -1){
|
||||
// uni.hideToast()
|
||||
}else{
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: "none"
|
||||
})
|
||||
}
|
||||
if (res.msg === '登录已过期!') {
|
||||
outTimer = setTimeout(() => {
|
||||
uni.showModal({
|
||||
title: '下线提醒',
|
||||
confirmText: '重新登录',
|
||||
cancelText: "退出",
|
||||
content: '您的账号在另一微信下登录了星油云站,请确认是否本加油站工作人员操作',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/boforeLogin/boforeLogin',
|
||||
success: () => {
|
||||
console.log('跳转成功')
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log(err)
|
||||
}
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/boforeLogin/boforeLogin?type=1',
|
||||
success: () => {
|
||||
console.log('跳转成功')
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log(err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}, 1000)
|
||||
}
|
||||
if(res.code == 42011){
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: "none"
|
||||
})
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/boforeLogin/boforeLogin',
|
||||
success: () => {
|
||||
console.log('跳转成功')
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log(err)
|
||||
}
|
||||
})
|
||||
}
|
||||
if(res.code == 42077){
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: "none"
|
||||
})
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/boforeLogin/boforeLogin',
|
||||
success: () => {
|
||||
console.log('跳转成功')
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log(err)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (res.code != 20000 && res.msg != '令牌为空,不允许操作' && res.code != 42077 && res.code != 42011 &&res.msg != '您的ip已经更改,请重新登录' && res.msg != '登录与操作设备不同') {
|
||||
uni.showToast({
|
||||
title: res.msg,
|
||||
icon: "none"
|
||||
})
|
||||
// uni.reLaunch({
|
||||
// url: '/pages/login/boforeLogin/boforeLogin',
|
||||
// success: () => {
|
||||
// console.log('跳转成功')
|
||||
// },
|
||||
// fail: (err) => {
|
||||
// console.log(err)
|
||||
// }
|
||||
// })
|
||||
}
|
||||
}
|
||||
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
|
||||
1623
utils/wxqrcode.js
Normal file
1623
utils/wxqrcode.js
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user