mirror of
http://112.124.100.131/GFRS/ebiz-h5.git
synced 2025-12-10 01:06:45 +08:00
332 lines
10 KiB
JavaScript
332 lines
10 KiB
JavaScript
import axios from 'axios'
|
||
import {
|
||
MD5,
|
||
RSAEncrypt,
|
||
AESEncryptV2,
|
||
AESDecryptV2,
|
||
AESEncrypt,
|
||
AESDecrypt,
|
||
randomString,
|
||
publicKey,
|
||
SHA256
|
||
} from '@/assets/js/utils/cryptoJsUtil'
|
||
import configApp from '@/config'
|
||
import { Dialog, Toast } from 'vant'
|
||
// import MD5 from 'js-md5'
|
||
import CacheUtils from '@/assets/js/utils/cacheUtils'
|
||
import BusinessCommon from '@/assets/js/business-common'
|
||
|
||
let proposal = [
|
||
'/proposal/proposal/list',
|
||
'/proposal/proposal/toInsurance',
|
||
'/proposal/proposal/info',
|
||
'/proposal/proposal/demo',
|
||
'/proposal/proposal/saveOrUpdateProposal',
|
||
'/proposal/proposal/updateInsured',
|
||
'/proposal/file/getFile',
|
||
'/proposal/proposal/deleteProposal'
|
||
] //建议书
|
||
|
||
//理赔
|
||
let claims = [
|
||
`/claim/claimApply/progress`,
|
||
`/claim/claimApply/progressDetail`,
|
||
`/claim/claimReport/history`,
|
||
`/claim/claimApply/apply`,
|
||
`/edor/customer/customerList`,
|
||
`/edor/customer/customerInfo`,
|
||
`/claim/claimApply/query`,
|
||
`/claim/claimApply/delete`
|
||
]
|
||
//在线投保
|
||
let sale = [
|
||
'/sale/order/orderList',
|
||
'/sale/order/saveOrUpdateOrderInfo',
|
||
'/sale/order/orderList',
|
||
'/sale/order/deleteOrderInfo',
|
||
'/sale/product/getDetail',
|
||
'/sale/order/saveOrUpdateOrderInfo',
|
||
'/sale/order/orderDetail',
|
||
'/customer/authcode/loginedSend',
|
||
'/uploadImage',
|
||
'/sale/insure/underWrite',
|
||
'/sale/insure/acceptInsurance',
|
||
'/app/code/getCodeValue',
|
||
'/customer/token',
|
||
'/media/ebizSignInfo/sign',
|
||
'/sale/receiptSign/submit',
|
||
'/sale/order/orderDetail',
|
||
'/sale/record/check',
|
||
'/ppf/sign',
|
||
'/ppf/check',
|
||
'/sale/insure/selfToHuman',
|
||
'/sale/insure/orderPayStatusQuery',
|
||
'/sale/order/revokeOrder',
|
||
'/sale/product/getcompany',
|
||
'/sale/product/occupationCodeCheck'
|
||
] //在线投保
|
||
let agentEnter = [
|
||
'/agent/enter/share',
|
||
'/agent/enter/query',
|
||
'/agent/enter/saveOrUpdateInfo',
|
||
'/agent/enter/queryAll',
|
||
'/agent/enter/getImpart',
|
||
'/agent/agreement/query',
|
||
'/agent/agreement/signAgreement',
|
||
'/agent/enter/query',
|
||
'/agent/examineApprove/dispose' //入司增员审批
|
||
]
|
||
|
||
let survey = [
|
||
//'/customer/question/getQuestionnaire', // 代理人下问卷查询 --ok
|
||
'/customer/question/getQuestion', // 问卷题库查询
|
||
'/customer/question/submit', // 问卷提交
|
||
//'/customer/question/shareSubmit', //问卷分享 --ok
|
||
//'/customer/question/getTableId', // id 查询 -- ok
|
||
'/customer/question/getAgentInfo' // 代理人详情
|
||
]
|
||
let manpower = [
|
||
'/customer/answer/queryList' //DISC性格分析
|
||
]
|
||
let productStore = [
|
||
'/customer/shop/getShopList', //获取商城列表/详情
|
||
'/customer/shop/getShareList' //查询分享轨迹(转发记录)
|
||
]
|
||
|
||
//续期管理
|
||
let renewalManage = [
|
||
'/renewal/getRenewalList' //续期列表查询
|
||
]
|
||
|
||
//保全
|
||
let preserve = [
|
||
'/edor/customer/customerList', //客户搜索
|
||
'/edor/policy/policyList', //保单列表
|
||
'/edor/edor/queryEdorList' //保全进度查询
|
||
]
|
||
// 个险业绩排行优化
|
||
let performanceRanking = ['/data/performance/getComList', '/data/performance/getComPerformance']
|
||
|
||
// 惠桂保
|
||
let hgb = ['/sale/order/selectHgb', '/sale/order/getHgbDetail']
|
||
let whitelist = ['/agent/white/getWhiteInfo']
|
||
|
||
// 开门红
|
||
let goodStart = ['/data/performance/getComPerformance']
|
||
let eqiVisit = [
|
||
'/agent/accompany/getAccompanyComCode',
|
||
'/agent/accompany/getAccompanyPerson',
|
||
'/agent/accompany/getAgentAccompanyRecordPage',
|
||
'/agent/accompany/saveAccompanyRecord',
|
||
'/agent/accompany/getAccompanyDetail',
|
||
'/agent/reward/getRewardRecord',
|
||
'/agent/reward/getAccompanyRank'
|
||
]
|
||
|
||
let whiteList = [
|
||
'/customer/agent/getCustomersList',
|
||
...proposal,
|
||
...sale,
|
||
...agentEnter,
|
||
...claims,
|
||
...survey,
|
||
...manpower,
|
||
...preserve,
|
||
...productStore,
|
||
...renewalManage,
|
||
...performanceRanking,
|
||
...hgb,
|
||
...whitelist,
|
||
...goodStart,
|
||
...eqiVisit
|
||
]
|
||
|
||
// 创建axios实例
|
||
const service = axios.create({
|
||
timeout: 66666666 // 请求超时时间
|
||
})
|
||
|
||
// request拦截器
|
||
service.interceptors.request.use(
|
||
async config => {
|
||
let relativePath = config.url && config.url.split(configApp.API_VERSION)[1]
|
||
if (whiteList.includes(relativePath)) {
|
||
Toast.loading({
|
||
duration: 0, // 持续展示 toast
|
||
forbidClick: true, // 禁用背景点击
|
||
loadingType: 'spinner',
|
||
message: '加载中……'
|
||
})
|
||
}
|
||
let masterKey
|
||
if (configApp.API_VERSION == 'v3') {
|
||
// 生成本次请求随机密钥
|
||
if (!window.localStorage.getItem('masterKey')) {
|
||
masterKey = randomString();
|
||
window.localStorage.setItem('masterKey', masterKey)
|
||
} else {
|
||
masterKey = window.localStorage.getItem('masterKey')
|
||
}
|
||
}
|
||
// token 不存在初始化处理
|
||
let token = CacheUtils.getLocItem('token')
|
||
/**
|
||
* 请求拦截处理(待添加 判断走统一网关处理)
|
||
*/
|
||
// console.log(config)
|
||
if (config.url && /api\/$/.test(config.url.split(configApp.API_VERSION)[0]) && (configApp.API_VERSION == 'v2' || configApp.API_VERSION == 'v3')) {
|
||
if (!config.data || config.data == null) {
|
||
config.data = {}
|
||
}
|
||
if (!!config.data && config.data != null) {
|
||
if (configApp.API_VERSION == 'v3') {
|
||
// console.log('随机密钥:' + masterKey);
|
||
// RSA加密随机密钥
|
||
let ak = RSAEncrypt(masterKey, publicKey);
|
||
// console.log('加密后的masterKey:' + ak);
|
||
// 随机密钥加密data
|
||
let data = AESEncrypt(JSON.stringify(config.data), masterKey);
|
||
// console.log('MD5值:' + MD5(AESEncrypt(data, masterKey)).toString());
|
||
// 验证数据完整性MD5
|
||
// 数据完整性MD5需要进行二次AES加密
|
||
config.headers['signature'] = SHA256(AESEncrypt(data, masterKey)).toString();
|
||
if (config.method == 'get') {
|
||
config.headers['ak'] = ak
|
||
config.headers['data'] = data
|
||
}
|
||
config.data = { ak, data };
|
||
// console.log(config.data);
|
||
if (AESDecrypt(config.data.data, masterKey)) {
|
||
// console.log(JSON.parse(AESDecrypt(config.data.data, masterKey)));
|
||
} else {
|
||
// console.log(AESDecrypt(config.data.data, masterKey));
|
||
}
|
||
} else if (configApp.API_VERSION == 'v2') {
|
||
config.headers['signature'] = MD5(timeStr + CacheUtils.getLocItem('token'))
|
||
let encrypt = AESEncryptV2(JSON.stringify(config.data), configApp.REQ_PWD)
|
||
config.data = { data: encrypt }
|
||
}
|
||
}
|
||
}
|
||
|
||
if (!token) {
|
||
console.log('token====>>', token)
|
||
// 设备类型
|
||
const target = BusinessCommon.device()
|
||
// 安卓or苹果(非浏览器)
|
||
if (!target.isWeixin && target.mobile) {
|
||
// console.log(to.meta.name, 'to.meta.name');
|
||
// eslint-disable-next-line no-undef
|
||
let u = navigator.userAgent;
|
||
let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //判断是否是 android终端
|
||
if (isAndroid) {
|
||
// setTimeout(() => {
|
||
if (window.location.hash !== '#/my/privacyPolicy' && window.location.hash !== '#/YB_agentSign/step1' && window.location.hash !== '#/YB_agentSign/step2') {
|
||
console.log(window.Android.getToken(), 'Android获取token')
|
||
CacheUtils.setLocItem('token', window.Android.getToken())
|
||
}
|
||
// }, 1000)
|
||
} else {
|
||
// const res = await EWebBridge.webCallAppInJs('getToken')
|
||
// CacheUtils.setLocItem('token', JSON.parse(res).token)
|
||
if (window.location.hash !== '#/my/privacyPolicy') {
|
||
const res = await EWebBridge.webCallAppInJs('getToken')
|
||
CacheUtils.setLocItem('token', JSON.parse(res).token)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
config.headers['token'] = CacheUtils.getLocItem('token')
|
||
// 添加请时间戳
|
||
let timeStr = new Date().getTime() + ''
|
||
config.headers['timeStr'] = timeStr
|
||
return config
|
||
},
|
||
error => {
|
||
// Do something with request error
|
||
Promise.reject(error)
|
||
}
|
||
)
|
||
|
||
// respone拦截器
|
||
service.interceptors.response.use(
|
||
response => {
|
||
if (response.config.responseType) {
|
||
return response.data
|
||
}
|
||
let res = response.data
|
||
if (
|
||
(configApp.API_VERSION == 'v2' || configApp.API_VERSION == 'v3') &&
|
||
response.config.url &&
|
||
response.headers['content-type'].match(/application\/json/) &&
|
||
/api\/$/.test(response.config.url.split(configApp.API_VERSION)[0])
|
||
) {
|
||
if (res.response) {
|
||
if (configApp.API_VERSION == 'v3') {
|
||
// 正常情況返回必有response 节点
|
||
// 返回结果的随机密钥
|
||
let masterKey;
|
||
if (!window.localStorage.getItem('masterKey')) {
|
||
return Promise.reject('密钥失效')
|
||
} else {
|
||
masterKey = window.localStorage.getItem('masterKey');
|
||
}
|
||
// console.log('请求结果response' + response)
|
||
// console.log('请求结果masterKey:' + masterKey)
|
||
// console.log(JSON.parse(AESDecrypt(response.data.response, masterKey)))
|
||
// 使用随机密钥解密返回结果data
|
||
res = JSON.parse(AESDecrypt(res.response, masterKey))
|
||
} else if (configApp.API_VERSION == 'v2') {
|
||
// 使用固定密钥解密返回结果data
|
||
res = JSON.parse(AESDecryptV2(res.response, configApp.REQ_PWD))
|
||
// console.log(res,'JSON.parse(AESDecrypt(res.response, configApp.REQ_PWD))')
|
||
}
|
||
}
|
||
}
|
||
|
||
Toast.clear()
|
||
if (res.code != 0) {
|
||
//10001 token不能为空 10002 token错误或已失效
|
||
if (res.code == 10001 || res.code == 10002) {
|
||
var ua = window.navigator.userAgent.toLowerCase();
|
||
//通过正则表达式匹配ua中是否含有MicroMessenger字符串, 在微信
|
||
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
|
||
Dialog.alert({
|
||
title: '提示',
|
||
confirmButtonText: '退出',
|
||
message: '当前链接已失效,请您联系业务员获取(重新分享)。',
|
||
}).then(() => {
|
||
window.close();
|
||
WeixinJSBridge.call('closeWindow');
|
||
});
|
||
} else {
|
||
//在app
|
||
Dialog.confirm({
|
||
confirmButtonText: '重新登录',
|
||
message: '你已被登出,可以取消继续留在该页面,或者重新登录'
|
||
}).then(() => {
|
||
//eslint-disable-next-line
|
||
EWebBridge.webCallAppInJs('bridge', {
|
||
flag: 'login'
|
||
})
|
||
})
|
||
}
|
||
} else {
|
||
//Toast.fail(res.msg)
|
||
}
|
||
return Promise.reject(res)
|
||
} else {
|
||
return res.content
|
||
}
|
||
},
|
||
error => {
|
||
Toast.clear()
|
||
console.log('err' + error) // for debug
|
||
//Toast.fail(error.message)
|
||
return Promise.reject(error)
|
||
}
|
||
)
|
||
|
||
export default service
|