import axios from 'axios' import AESTools 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' ] //在线投保 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: '加载中……' }) } /** * 请求拦截处理(待添加 判断走统一网关处理) */ if (config.url && /api\/$/.test(config.url.split(configApp.API_VERSION)[0]) && configApp.API_VERSION == 'v2') { if (!config.data || config.data == null) { config.data = {} } if (!!config.data && config.data != null) { let encrypt = AESTools.AESEncrypt(JSON.stringify(config.data), configApp.REQ_PWD) config.data = { data: encrypt } } } // token 不存在初始化处理 let token = CacheUtils.getLocItem('token') if (!token) { console.log('token====>>', token) // 设备类型 const target = BusinessCommon.device() // 安卓or苹果(非浏览器) if (!target.isWeixin && !target.isChrome) { // eslint-disable-next-line no-undef let u = navigator.userAgent; let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //判断是否是 android终端 if(isAndroid){ console.log(window.Android.getToken(),'Android获取token') CacheUtils.setLocItem('token', JSON.parse(window.Android.getToken())) }else{ 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 config.headers['signature'] = MD5(timeStr + CacheUtils.getLocItem('token')) return config }, error => { // Do something with request error Promise.reject(error) } ) // respone拦截器 service.interceptors.response.use( response => { let res = response.data if ( configApp.API_VERSION == 'v2' && response.config.url && response.headers['content-type'].match(/application\/json/) && /api\/$/.test(response.config.url.split(configApp.API_VERSION)[0]) ) { if (res.response) { // 正常情況返回必有response 节点 res = JSON.parse(AESTools.AESDecrypt(res.response, configApp.REQ_PWD)) } } Toast.clear() if (res.code != 0) { 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 { 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