mirror of
http://112.124.100.131/GFRS/ebiz-h5.git
synced 2025-12-06 23:36:43 +08:00
安全性问题处理:代码版本整理 初始版本1 --提交人:阳华祥
This commit is contained in:
@@ -22,9 +22,11 @@
|
||||
"dependencies": {
|
||||
"axios": "^0.19.0",
|
||||
"core-js": "^2.6.5",
|
||||
"crypto-js": "^4.0.0",
|
||||
"echarts": "^4.2.1",
|
||||
"fastclick": "^1.0.6",
|
||||
"js-base64": "^2.5.1",
|
||||
"js-md5": "^0.7.3",
|
||||
"nprogress": "^0.2.0",
|
||||
"pdfh5": "^1.2.13",
|
||||
"vant": "2.2.0",
|
||||
|
||||
@@ -56,3 +56,22 @@ export function queryPrivacy(data) {
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
//注销用户
|
||||
export function logoutAgent(data) {
|
||||
return request({
|
||||
url: getUrl('/customer/account/logoutAgent', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//登录用户
|
||||
export function loginTest(data) {
|
||||
return request({
|
||||
url: getUrl('/customer/account/login', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
import utilsAge from '@/assets/js/utils/age'
|
||||
import CacheUtils from '@/assets/js/utils/cacheUtils'
|
||||
/**
|
||||
* @desc 扩展对象继承
|
||||
* @param {Object} out 一个或多个对象
|
||||
@@ -179,7 +180,7 @@ export default {
|
||||
* @return {*} rs
|
||||
*/
|
||||
getStorage(name) {
|
||||
return this._string2json(window.localStorage[name])
|
||||
return this._string2json(CacheUtils.getLocItem(name))
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -187,7 +188,7 @@ export default {
|
||||
* @param {String} name 名称
|
||||
*/
|
||||
setStorage(name, value) {
|
||||
window.localStorage[name] = this._json2string(value)
|
||||
CacheUtils.setLocItem(name,this._json2string(value))
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -195,7 +196,7 @@ export default {
|
||||
* @param {String} name 名称
|
||||
*/
|
||||
delStorage(name) {
|
||||
window.localStorage.removeItem(name)
|
||||
CacheUtils.removeLocItem(name)
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -532,46 +533,49 @@ export default {
|
||||
insuredDTO = res.orderDTO.insuredDTOs[0]
|
||||
}
|
||||
let age = utilsAge.getAge(appntDTO.birthday, new Date())
|
||||
localStorage.saleInsuredInfo = JSON.stringify({
|
||||
workcompany: appntDTO.workcompany,
|
||||
birthday: appntDTO.birthday,
|
||||
name: appntDTO.name,
|
||||
sex: appntDTO.sex,
|
||||
idType: appntDTO.idType,
|
||||
age,
|
||||
idNo: appntDTO.idNo,
|
||||
appntId: appntDTO.appntId,
|
||||
healthGrade: appntDTO.healthGrade,
|
||||
lifeGrade: appntDTO.lifeGrade,
|
||||
mobile: appntDTO.mobile,
|
||||
occupationName: appntDTO.occupationName,
|
||||
occupationCode: appntDTO.occupationCode,
|
||||
// marriage: appntDTO.marriage,
|
||||
medical: appntDTO.medical,
|
||||
certiexpiredate: appntDTO.certiexpiredate,
|
||||
nativeplace: appntDTO.nativeplace
|
||||
})
|
||||
CacheUtils.setLocItem('saleInsuredInfo',
|
||||
JSON.stringify({
|
||||
workcompany: appntDTO.workcompany,
|
||||
birthday: appntDTO.birthday,
|
||||
name: appntDTO.name,
|
||||
sex: appntDTO.sex,
|
||||
idType: appntDTO.idType,
|
||||
age,
|
||||
idNo: appntDTO.idNo,
|
||||
appntId: appntDTO.appntId,
|
||||
healthGrade: appntDTO.healthGrade,
|
||||
lifeGrade: appntDTO.lifeGrade,
|
||||
mobile: appntDTO.mobile,
|
||||
occupationName: appntDTO.occupationName,
|
||||
occupationCode: appntDTO.occupationCode,
|
||||
// marriage: appntDTO.marriage,
|
||||
medical: appntDTO.medical,
|
||||
certiexpiredate: appntDTO.certiexpiredate,
|
||||
nativeplace: appntDTO.nativeplace
|
||||
})
|
||||
)
|
||||
|
||||
if (insuredDTO) {
|
||||
let insuredPersonAge = utilsAge.getAge(insuredDTO.birthday, new Date())
|
||||
localStorage.saleInsuredPersonInfo = JSON.stringify({
|
||||
birthday: insuredDTO.birthday,
|
||||
name: insuredDTO.name,
|
||||
sex: insuredDTO.sex,
|
||||
idType: insuredDTO.idType,
|
||||
age: insuredPersonAge,
|
||||
// marriage: insuredDTO.marriage,
|
||||
relationToAppnt: insuredDTO.relationToAppnt,
|
||||
medical: insuredDTO.medical,
|
||||
occupationName: insuredDTO.occupationName,
|
||||
occupationCode: insuredDTO.occupationCode,
|
||||
insuredId: insuredDTO.insuredId,
|
||||
idNo: insuredDTO.idNo,
|
||||
healthGrade: insuredDTO.healthGrade,
|
||||
lifeGrade: insuredDTO.lifeGrade,
|
||||
mobile: insuredDTO.mobile
|
||||
})
|
||||
|
||||
CacheUtils.setLocItem('saleInsuredPersonInfo',
|
||||
JSON.stringify({
|
||||
birthday: insuredDTO.birthday,
|
||||
name: insuredDTO.name,
|
||||
sex: insuredDTO.sex,
|
||||
idType: insuredDTO.idType,
|
||||
age: insuredPersonAge,
|
||||
// marriage: insuredDTO.marriage,
|
||||
relationToAppnt: insuredDTO.relationToAppnt,
|
||||
medical: insuredDTO.medical,
|
||||
occupationName: insuredDTO.occupationName,
|
||||
occupationCode: insuredDTO.occupationCode,
|
||||
insuredId: insuredDTO.insuredId,
|
||||
idNo: insuredDTO.idNo,
|
||||
healthGrade: insuredDTO.healthGrade,
|
||||
lifeGrade: insuredDTO.lifeGrade,
|
||||
mobile: insuredDTO.mobile
|
||||
})
|
||||
)
|
||||
let [chooseProductCodes, mainRiskCodes, addRiskCodes] = [[], [], []]
|
||||
if (insuredDTO.riskDTOLst && insuredDTO.riskDTOLst.length > 0) {
|
||||
insuredDTO.riskDTOLst.forEach(item => {
|
||||
@@ -583,15 +587,15 @@ export default {
|
||||
}
|
||||
})
|
||||
}
|
||||
localStorage.mainRiskCodes = JSON.stringify(mainRiskCodes)
|
||||
localStorage.oldAddRiskCodes = JSON.stringify(addRiskCodes)
|
||||
localStorage.chooseProductCodes = JSON.stringify(chooseProductCodes)
|
||||
CacheUtils.setLocItem('mainRiskCodes',JSON.stringify(mainRiskCodes))
|
||||
CacheUtils.setLocItem('oldAddRiskCodes',JSON.stringify(addRiskCodes))
|
||||
CacheUtils.setLocItem('chooseProductCodes',JSON.stringify(chooseProductCodes))
|
||||
} else {
|
||||
localStorage.mainRiskCodes = ''
|
||||
localStorage.oldAddRiskCodes = ''
|
||||
localStorage.chooseProductCodes = ''
|
||||
CacheUtils.setLocItem('mainRiskCodes','')
|
||||
CacheUtils.setLocItem('oldAddRiskCodes','')
|
||||
CacheUtils.setLocItem('chooseProductCodes','')
|
||||
if (!isProposal) {
|
||||
localStorage.saleInsuredPersonInfo = ''
|
||||
CacheUtils.setLocItem('saleInsuredPersonInfo','')
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import CacheUtils from '@/assets/js/utils/cacheUtils'
|
||||
/**
|
||||
* @desc 扩展对象继承
|
||||
* @param {Object} out 一个或多个对象
|
||||
@@ -117,7 +118,7 @@ export default {
|
||||
* @return {*} rs
|
||||
*/
|
||||
getStorage(name) {
|
||||
return this._string2json(window.localStorage[name])
|
||||
return this._string2json(CacheUtils.getLocItem(name))
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -125,7 +126,7 @@ export default {
|
||||
* @param {String} name 名称
|
||||
*/
|
||||
setStorage(name, value) {
|
||||
window.localStorage[name] = this._json2string(value)
|
||||
CacheUtils.setLocItem(name,this._json2string(value))
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -133,7 +134,7 @@ export default {
|
||||
* @param {String} name 名称
|
||||
*/
|
||||
delStorage(name) {
|
||||
window.localStorage.removeItem(name)
|
||||
CacheUtils.removeLocItem(name)
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
59
src/assets/js/utils/cacheUtils.js
Normal file
59
src/assets/js/utils/cacheUtils.js
Normal file
@@ -0,0 +1,59 @@
|
||||
import AESTools from '@/assets/js/utils/cryptoJsUtil'
|
||||
import configApp from '@/config'
|
||||
import cacheKeys from './needCacheKey'
|
||||
export default {
|
||||
setLocItem: function(key, value) {
|
||||
const exist = cacheKeys.encodeKeys.find(item => {
|
||||
return item === key
|
||||
})
|
||||
//设置localStorage 值
|
||||
if (cacheKeys.isAll || exist) {
|
||||
window.localStorage.setItem(key, AESTools.AESCacheEncrypt(value, configApp.CACHE_ENCRYP))
|
||||
} else {
|
||||
window.localStorage.setItem(key, value)
|
||||
}
|
||||
},
|
||||
getLocItem: function(key) {
|
||||
// 获取localStorage 中值
|
||||
let value = window.localStorage.getItem(key)
|
||||
if (value && value != '') {
|
||||
const exist = cacheKeys.encodeKeys.find(item => {
|
||||
return item === key
|
||||
})
|
||||
if (cacheKeys.isAll || exist) {
|
||||
return AESTools.AESCacheDecrypt(value, configApp.CACHE_ENCRYP)
|
||||
}
|
||||
}
|
||||
return value
|
||||
},
|
||||
removeLocItem: function(key) {
|
||||
// 获取localStorage 中值
|
||||
window.localStorage.removeItem(key)
|
||||
},
|
||||
setSessionItem: function(key, value) {
|
||||
//设置sessionStorage 值
|
||||
const exist = cacheKeys.encodeKeys.find(item => {
|
||||
return item === key
|
||||
})
|
||||
//设置localStorage 值
|
||||
if (cacheKeys.isAll || exist) {
|
||||
window.sessionStorage.setItem(key, AESTools.AESCacheEncrypt(value, configApp.CACHE_ENCRYP))
|
||||
} else {
|
||||
window.sessionStorage.setItem(key, value)
|
||||
}
|
||||
},
|
||||
getSessionItem: function(key) {
|
||||
//设置sessionStorage 值
|
||||
let value = window.sessionStorage.getItem(key)
|
||||
if (value && value != '') {
|
||||
const exist = cacheKeys.encodeKeys.find(item => {
|
||||
return item === key
|
||||
})
|
||||
//设置localStorage 值
|
||||
if (cacheKeys.isAll || exist) {
|
||||
return AESTools.AESCacheDecrypt(value, configApp.CACHE_ENCRYP)
|
||||
}
|
||||
}
|
||||
return value
|
||||
}
|
||||
}
|
||||
47
src/assets/js/utils/cryptoJsUtil.js
Normal file
47
src/assets/js/utils/cryptoJsUtil.js
Normal file
@@ -0,0 +1,47 @@
|
||||
import CryptoJS from 'crypto-js'
|
||||
export default {
|
||||
AESEncrypt: function (data, keys) {//加密
|
||||
var key = CryptoJS.enc.Hex.parse(keys)
|
||||
var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF');//偏移量
|
||||
var encrypted = CryptoJS.AES.encrypt(data, key,
|
||||
{
|
||||
iv: iv,
|
||||
mode: CryptoJS.mode.CBC,
|
||||
padding: CryptoJS.pad.Pkcs7
|
||||
});
|
||||
return encrypted.toString();
|
||||
},
|
||||
AESDecrypt: function (encrypted, keys) {//解密
|
||||
var key = CryptoJS.enc.Hex.parse(keys)
|
||||
var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF');
|
||||
var decrypted = CryptoJS.AES.decrypt( encrypted, key,
|
||||
{
|
||||
iv: iv,
|
||||
mode: CryptoJS.mode.CBC,
|
||||
padding: CryptoJS.pad.Pkcs7
|
||||
});
|
||||
return CryptoJS.enc.Utf8.stringify(decrypted)
|
||||
},
|
||||
AESCacheEncrypt: function (data, keys) {//加密 緩存
|
||||
var key = CryptoJS.enc.Hex.parse(keys)
|
||||
var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF');//偏移量
|
||||
var encrypted = CryptoJS.AES.encrypt(data, key,
|
||||
{
|
||||
iv: iv,
|
||||
mode: CryptoJS.mode.CBC,
|
||||
padding: CryptoJS.pad.Pkcs7
|
||||
});
|
||||
return encrypted.toString();
|
||||
},
|
||||
AESCacheDecrypt: function (encrypted, keys) {//解密 緩存
|
||||
var key = CryptoJS.enc.Hex.parse(keys)
|
||||
var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF');
|
||||
var decrypted = CryptoJS.AES.decrypt( encrypted, key,
|
||||
{
|
||||
iv: iv,
|
||||
mode: CryptoJS.mode.CBC,
|
||||
padding: CryptoJS.pad.Pkcs7
|
||||
});
|
||||
return CryptoJS.enc.Utf8.stringify(decrypted)
|
||||
}
|
||||
}
|
||||
4
src/assets/js/utils/needCacheKey.js
Normal file
4
src/assets/js/utils/needCacheKey.js
Normal file
@@ -0,0 +1,4 @@
|
||||
export default {
|
||||
isAll: false,
|
||||
encodeKeys: ['']
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
//权限控制
|
||||
import router from '@/router'
|
||||
import CacheUtils from '@/assets/js/utils/cacheUtils'
|
||||
// import NProgress from 'nprogress' // Progress 进度条
|
||||
// import 'nprogress/nprogress.css' // Progress 进度条样式
|
||||
export function permission() {
|
||||
@@ -11,9 +12,9 @@ export function permission() {
|
||||
document.title = title
|
||||
}
|
||||
//判断是否登录
|
||||
let token = localStorage.token
|
||||
let token = CacheUtils.getLocItem('token')
|
||||
if (!token) {
|
||||
localStorage.token = ''
|
||||
CacheUtils.setLocItem('token','')
|
||||
//无token,判断是否需要登录
|
||||
if (to.meta.auth) {
|
||||
if (window.WebViewJavascriptBridge) {
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
import axios from 'axios'
|
||||
import AESTools from '@/assets/js/utils/cryptoJsUtil'
|
||||
import configApp from '@/config'
|
||||
import { Dialog, Toast } from 'vant'
|
||||
import dateUtil from "@/assets/js/utils/date-utils";
|
||||
import MD5 from 'js-md5';
|
||||
import CacheUtils from '@/assets/js/utils/cacheUtils'
|
||||
|
||||
let proposal = [
|
||||
'/proposal/proposal/list',
|
||||
'/proposal/proposal/toInsurance',
|
||||
@@ -107,58 +113,84 @@ const service = axios.create({
|
||||
|
||||
// request拦截器
|
||||
service.interceptors.request.use(
|
||||
config => {
|
||||
let relativePath = config.url && config.url.split('v1')[1]
|
||||
if (whiteList.includes(relativePath)) {
|
||||
Toast.loading({
|
||||
duration: 0, // 持续展示 toast
|
||||
forbidClick: true, // 禁用背景点击
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
config => {
|
||||
let relativePath = config.url && config.url.split(configApp.API_VERSION)[1]
|
||||
console.log(config.url.split(configApp.API_VERSION)[0])
|
||||
if (whiteList.includes(relativePath)) {
|
||||
Toast.loading({
|
||||
duration: 0, // 持续展示 toast
|
||||
forbidClick: true, // 禁用背景点击
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 请求拦截处理(待添加 判断走统一网关处理)
|
||||
*/
|
||||
if(config.url && config.method == 'post' && /api\/$/.test(config.url.split(configApp.API_VERSION)[0])){
|
||||
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)
|
||||
console.log("[调用请求加密服务][请求地址:"+config.url+"][加密前报文:]",JSON.stringify(config.data))
|
||||
config.data = {"data": encrypt }
|
||||
console.log("[调用请求加密服务][请求地址:"+config.url+"][加密后报文:]",config.data)
|
||||
}
|
||||
}
|
||||
config.headers['token'] = CacheUtils.getLocItem('token')
|
||||
// 添加请时间戳
|
||||
let timeStr = new Date().getTime() + '';
|
||||
config.headers['timeStr'] = timeStr;
|
||||
config.headers['signature'] = MD5(timeStr + CacheUtils.getLocItem('token'));
|
||||
// config.headers['token'] = `f0003a753d1d492083248f723ab1b6e9`//TEST测试专用
|
||||
return config
|
||||
},
|
||||
error => {
|
||||
// Do something with request error
|
||||
Promise.reject(error)
|
||||
}
|
||||
|
||||
config.headers['token'] = window.localStorage.getItem('token')
|
||||
// config.headers['token'] = `f0003a753d1d492083248f723ab1b6e9`//TEST测试专用
|
||||
return config
|
||||
},
|
||||
error => {
|
||||
// Do something with request error
|
||||
Promise.reject(error)
|
||||
}
|
||||
)
|
||||
|
||||
// respone拦截器
|
||||
service.interceptors.response.use(
|
||||
response => {
|
||||
const res = response.data
|
||||
console.log(res, 'res')
|
||||
Toast.clear()
|
||||
if (res.code != 0) {
|
||||
if (res.code == 10001 || res.code == 10002) {
|
||||
Dialog.confirm({
|
||||
confirmButtonText: '重新登录',
|
||||
message: '你已被登出,可以取消继续留在该页面,或者重新登录'
|
||||
}).then(() => {
|
||||
//eslint-disable-next-line
|
||||
EWebBridge.webCallAppInJs('bridge', {
|
||||
flag: 'login'
|
||||
})
|
||||
})
|
||||
} else {
|
||||
//Toast.fail(res.msg)
|
||||
response => {
|
||||
console.log(response)
|
||||
console.log('----------------')
|
||||
let res = response.data
|
||||
if(response.config.url && response.config.method == 'post' && /api\/$/.test(response.config.url.split(configApp.API_VERSION)[0])){
|
||||
if(res.response){// 正常情況返回必有response 节点
|
||||
console.log("[调用请求解密服务][请求地址:"+response.config.url+"][解密前报文:]",JSON.stringify(res.response))
|
||||
res = JSON.parse(AESTools.AESDecrypt(res.response,configApp.REQ_PWD))
|
||||
console.log("[调用请求解密服务][请求地址:"+response.config.url+"][解密后报文:]",res)
|
||||
}
|
||||
}
|
||||
return Promise.reject(res)
|
||||
} else {
|
||||
return response.data.content
|
||||
Toast.clear()
|
||||
if (res.code != 0) {
|
||||
if (res.code == 10001 || res.code == 10002) {
|
||||
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)
|
||||
}
|
||||
},
|
||||
error => {
|
||||
Toast.clear()
|
||||
console.log('err' + error) // for debug
|
||||
//Toast.fail(error.message)
|
||||
return Promise.reject(error)
|
||||
}
|
||||
)
|
||||
|
||||
export default service
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import axios from 'axios'
|
||||
import { Dialog, Toast } from 'vant'
|
||||
|
||||
import CacheUtils from '@/assets/js/utils/cacheUtils'
|
||||
let sale = ['/sale/order/orderDetail'] //在线投保
|
||||
|
||||
// 卡单
|
||||
@@ -25,7 +25,7 @@ service.interceptors.request.use(
|
||||
// })
|
||||
}
|
||||
|
||||
config.headers['token'] = window.localStorage.getItem('token')
|
||||
config.headers['token'] = CacheUtils.getLocItem('token')
|
||||
// config.headers['token'] = ``
|
||||
return config
|
||||
},
|
||||
|
||||
188
src/assets/js/utils/requestEncryot_back.js
Normal file
188
src/assets/js/utils/requestEncryot_back.js
Normal file
@@ -0,0 +1,188 @@
|
||||
import axios from 'axios'
|
||||
import AESTools from '@/assets/js/utils/cryptoJsUtil'
|
||||
import configApp from '@/config'
|
||||
import { Dialog, Toast } from 'vant'
|
||||
import CacheUtils from '@/assets/js/utils/cacheUtils'
|
||||
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 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',
|
||||
// '/customer/recognition',
|
||||
'/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'
|
||||
] //在线投保
|
||||
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 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 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 preserve = [
|
||||
'/edor/customer/customerList', //客户搜索
|
||||
'/edor/policy/policyList', //保单列表
|
||||
'/edor/edor/queryEdorList' //保全进度查询
|
||||
]
|
||||
|
||||
let productStore = [
|
||||
'/customer/shop/getShopList', //获取商城列表/详情
|
||||
'/customer/shop/getShareList' //查询分享轨迹(转发记录)
|
||||
]
|
||||
|
||||
// 卡单
|
||||
let cardList = []
|
||||
|
||||
// 续期
|
||||
let renewalManage = [
|
||||
'/renewal/getRenewalList' //续期列表查询
|
||||
]
|
||||
|
||||
let whiteList = [
|
||||
'/customer/agent/getCustomersList',
|
||||
...proposal,
|
||||
...sale,
|
||||
...agentEnter,
|
||||
...claims,
|
||||
...survey,
|
||||
...manpower,
|
||||
...productStore,
|
||||
...preserve,
|
||||
...renewalManage
|
||||
]
|
||||
|
||||
// 创建axios实例
|
||||
const service = axios.create({
|
||||
timeout: 66666666 // 请求超时时间
|
||||
})
|
||||
|
||||
// request拦截器
|
||||
service.interceptors.request.use(
|
||||
config => {
|
||||
let relativePath = config.url && config.url.split('v1')[1]
|
||||
console.log(config.url.split('v1')[0])
|
||||
if (whiteList.includes(relativePath)) {
|
||||
Toast.loading({
|
||||
duration: 0, // 持续展示 toast
|
||||
forbidClick: true, // 禁用背景点击
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 请求拦截处理(待添加 判断走统一网关处理)
|
||||
*/
|
||||
if(config.url && config.method == 'post' && /api\/$/.test(config.url.split('v1')[0])){
|
||||
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)
|
||||
console.log("[调用请求加密服务][请求地址:"+config.url+"][加密前报文:]",JSON.stringify(config.data))
|
||||
config.data = {"data": encrypt }
|
||||
console.log("[调用请求加密服务][请求地址:"+config.url+"][加密后报文:]",config.data)
|
||||
}
|
||||
}
|
||||
config.headers['token'] = CacheUtils.getLocItem('token')
|
||||
// config.headers['token'] = `f0003a753d1d492083248f723ab1b6e9`//TEST测试专用
|
||||
return config
|
||||
},
|
||||
error => {
|
||||
// Do something with request error
|
||||
Promise.reject(error)
|
||||
}
|
||||
)
|
||||
|
||||
// respone拦截器
|
||||
service.interceptors.response.use(
|
||||
response => {
|
||||
console.log(response)
|
||||
let res = response.data
|
||||
if(response.config.url && response.config.method == 'post' && /api\/$/.test(response.config.url.split('v1')[0])){
|
||||
if(res.response){
|
||||
console.log("[调用请求加密服务][请求地址:"+response.config.url+"][解密前报文:]",JSON.stringify(res.response))
|
||||
res = AESTools.AESDecrypt(JSON.stringify(res.response),configApp.REQ_PWD)
|
||||
console.log("[调用请求加密服务][请求地址:"+response.config.url+"][解密后报文:]",JSON.stringify(res))
|
||||
}
|
||||
}
|
||||
Toast.clear()
|
||||
if (res.code != 0) {
|
||||
if (res.code == 10001 || res.code == 10002) {
|
||||
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 response.data.content
|
||||
}
|
||||
},
|
||||
error => {
|
||||
Toast.clear()
|
||||
console.log('err' + error) // for debug
|
||||
//Toast.fail(error.message)
|
||||
return Promise.reject(error)
|
||||
}
|
||||
)
|
||||
|
||||
export default service
|
||||
@@ -5,7 +5,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
let apiDomain, imgDomain, assetsUrl, mainUrl, payUrl, zssqUrl // 保融支付的收银台服务地址
|
||||
let apiDomain, imgDomain, assetsUrl, mainUrl, payUrl, zssqUrl ,REQ_PWD, CACHE_ENCRYP, API_VERSION// 保融支付的收银台服务地址
|
||||
|
||||
// 可以多个接口域名,按需添加
|
||||
console.log('环境:', process.env.VUE_APP_FLAG)
|
||||
@@ -18,6 +18,9 @@ switch (process.env.VUE_APP_FLAG) {
|
||||
mainUrl = 'http://139.199.50.151'
|
||||
payUrl = 'https://funduat.e-guofu.com/s3-modules-gateway/embed/gateway.action'
|
||||
zssqUrl = 'http://139.199.50.151/html/test/index.html#/'
|
||||
REQ_PWD = '41424344454631323334353637383930'
|
||||
CACHE_ENCRYP = '41424344454631323334353637383930'
|
||||
API_VERSION = 'v2'
|
||||
break
|
||||
case 'uat':
|
||||
apiDomain = 'http://115.159.235.59:7000/api/v1' // 国富api
|
||||
@@ -27,6 +30,9 @@ switch (process.env.VUE_APP_FLAG) {
|
||||
mainUrl = 'http://115.159.235.59'
|
||||
payUrl = 'https://funduat.e-guofu.com/s3-modules-gateway/embed/gateway.action'
|
||||
zssqUrl = ''
|
||||
REQ_PWD = '41424344454631323334353637383930'
|
||||
CACHE_ENCRYP = '41424344454631323334353637383930'
|
||||
API_VERSION = 'v2'
|
||||
break
|
||||
case 'prd':
|
||||
apiDomain = 'https://iagentsales.e-guofu.com/api/v1'
|
||||
@@ -35,6 +41,9 @@ switch (process.env.VUE_APP_FLAG) {
|
||||
mainUrl = 'https://iagentsales.e-guofu.com'
|
||||
payUrl = 'https://uns3.e-guofu.com/s3-modules-gateway/embed/gateway.action'
|
||||
zssqUrl = ''
|
||||
REQ_PWD = '41424344454631323334353637383930'
|
||||
CACHE_ENCRYP = '41424344454631323334353637383930'
|
||||
API_VERSION = 'v2'
|
||||
break
|
||||
case 'dat':
|
||||
apiDomain = ''
|
||||
@@ -44,6 +53,9 @@ switch (process.env.VUE_APP_FLAG) {
|
||||
mainUrl = ''
|
||||
payUrl = ''
|
||||
zssqUrl = ''
|
||||
REQ_PWD = '41424344454631323334353637383930'
|
||||
CACHE_ENCRYP = '41424344454631323334353637383930'
|
||||
API_VERSION = 'v2'
|
||||
break
|
||||
}
|
||||
/**
|
||||
@@ -61,5 +73,8 @@ export default {
|
||||
assetsUrl,
|
||||
mainUrl,
|
||||
payUrl,
|
||||
zssqUrl //知识社区地址
|
||||
zssqUrl, //知识社区地址
|
||||
REQ_PWD, //报文加密密码
|
||||
CACHE_ENCRYP, //缓存加密密码
|
||||
API_VERSION //渠道版本
|
||||
}
|
||||
|
||||
@@ -11,6 +11,10 @@ import config from '@/config'
|
||||
import noMoreClick from '@/directive/noMoreClick'
|
||||
import vueHashCalendar from 'vue-hash-calendar'
|
||||
import 'vue-hash-calendar/lib/vue-hash-calendar.css'
|
||||
import md5 from 'js-md5';
|
||||
import cryptoJs from 'crypto-js'
|
||||
import cacheUtils from '@/assets/js/utils/cacheUtils'
|
||||
|
||||
|
||||
import { Cell, CellGroup, DatetimePicker, Popup, Picker, Col, Row, Tab, Tabs, NavBar, Toast, Button, Dialog, Icon, Lazyload } from 'vant'
|
||||
Vue.use(Cell)
|
||||
@@ -35,6 +39,9 @@ Vue.use(Lazyload, {
|
||||
Vue.prototype.$assetsUrl = config.assetsUrl
|
||||
Vue.prototype.$mainUrl = config.mainUrl
|
||||
Vue.prototype.$zssqUrl = config.zssqUrl
|
||||
Vue.prototype.$MD5 = md5
|
||||
Vue.prototype.$CryptoJs = cryptoJs
|
||||
Vue.prototype.$CacheUtils = cacheUtils
|
||||
|
||||
// 全局 防重复点击
|
||||
Vue.directive('no-more-click', noMoreClick)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//定义相关组件
|
||||
const home = () => import('@/views/app/Home')
|
||||
const login = () => import('@/views/app/Login')
|
||||
const loginss = () => import('@/views/app/Login')
|
||||
const notFound = () => import('@/views/app/404')
|
||||
const functionList = () => import('@/views/app/FunctionList')
|
||||
|
||||
@@ -15,9 +15,9 @@ let arr = [
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/login',
|
||||
name: 'login',
|
||||
component: login,
|
||||
path: '/loginss',
|
||||
name: 'loginss',
|
||||
component: loginss,
|
||||
meta: {
|
||||
title: '登录页'
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ const userSetting = () => import('@/views/ebiz/my/UserSetting')
|
||||
const userInfo = () => import('@/views/ebiz/my/UserInfo')
|
||||
const userIncome = () => import('@/views/ebiz/my/UserIncome')
|
||||
const PrivacyPolicy = () => import('@/views/ebiz/my/PrivacyPolicy')
|
||||
const LogoutAgent = () => import('@/views/ebiz/my/LogoutAgent')
|
||||
|
||||
export default [
|
||||
{
|
||||
@@ -51,5 +52,15 @@ export default [
|
||||
title: '金掌桂隐私政策',
|
||||
index: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
//隐私政策
|
||||
path: '/my/logoutAgent',
|
||||
name: 'LogoutAgent',
|
||||
component: LogoutAgent,
|
||||
meta: {
|
||||
title: '注销账户',
|
||||
index: 1
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -36,7 +36,8 @@ export default {
|
||||
//登录
|
||||
login()
|
||||
.then(res => {
|
||||
localStorage.token = res.token
|
||||
//localStorage.token = res.token
|
||||
this.$CacheUtils.setLocItem("token",res.token)
|
||||
this.$router.push({ path: this.redirect || '/' })
|
||||
})
|
||||
.catch(err => {
|
||||
|
||||
@@ -7,6 +7,7 @@ import { saveOrUpdateOrderInfo, getAuthCode, getOrderDetail } from '@/api/ebiz/s
|
||||
import getAreaName from '@/assets/js/utils/get-area-name'
|
||||
// import idNoCheck from '@/assets/js/utils/idNoCheck'
|
||||
import { idToData } from './verification'
|
||||
import CacheUtils from '@/assets/js/utils/cacheUtils'
|
||||
let relationToInsured = [
|
||||
{
|
||||
id: 2,
|
||||
@@ -37,14 +38,14 @@ export function selectComp(that, index, type = '') {
|
||||
} else if (index == 3) {
|
||||
if (type == '1') {
|
||||
//投保人
|
||||
localStorage.scanFromInsured = 'true'
|
||||
CacheUtils.setLocItem('scanFromInsured','true')
|
||||
} else if (type == '2') {
|
||||
//被保险人
|
||||
localStorage.scanFromInsured = 'false'
|
||||
CacheUtils.setLocItem('scanFromInsured','false')
|
||||
}
|
||||
;[that.isScan, title] = [true, '身份证扫描']
|
||||
} else if (index == 4) {
|
||||
localStorage.scanFromInsured = 0
|
||||
CacheUtils.setLocItem('scanFromInsured','0')
|
||||
;[that.bankisScan, title] = [true, '银行卡扫描']
|
||||
}
|
||||
|
||||
@@ -248,7 +249,7 @@ export function onConfirm(that, value, type) {
|
||||
if (value.id == 1) {
|
||||
//获取订单详情
|
||||
getOrderDetail({
|
||||
orderNo: localStorage.orderNo
|
||||
orderNo: CacheUtils.getLocItem('orderNo')
|
||||
}).then(res => {
|
||||
if (res.result == 0) {
|
||||
that.isAppnt = true
|
||||
@@ -349,7 +350,7 @@ export function onConfirm(that, value, type) {
|
||||
if (value.id == 1) {
|
||||
//获取投保人数据
|
||||
getOrderDetail({
|
||||
orderNo: localStorage.orderNo
|
||||
orderNo: CacheUtils.getLocItem('orderNo')
|
||||
}).then(res => {
|
||||
if (res.result == 0) {
|
||||
that.isInsured = true
|
||||
@@ -690,14 +691,14 @@ export function nextStep(that, type) {
|
||||
//信息变更
|
||||
export function infoUpdate(that, type) {
|
||||
//local 里面是否存有险种信息
|
||||
let chooseProductCodes = localStorage.chooseProductCodes && JSON.parse(localStorage.chooseProductCodes)
|
||||
let chooseProductCodes = CacheUtils.getLocItem('chooseProductCodes') && JSON.parse(CacheUtils.getLocItem('chooseProductCodes'))
|
||||
if (chooseProductCodes && chooseProductCodes.length) {
|
||||
let flag
|
||||
switch (type) {
|
||||
case '1':
|
||||
{
|
||||
//取出local中的投被保险人信息
|
||||
let saleInsuredInfo = JSON.parse(localStorage.saleInsuredInfo)
|
||||
let saleInsuredInfo = JSON.parse(CacheUtils.getLocItem('saleInsuredInfo'))
|
||||
//如果 性别, 出生日期, 有无社保, 职业 发生变化
|
||||
if (that.userInfo.sex != saleInsuredInfo.sex || that.userInfo.birthday != saleInsuredInfo.birthday) {
|
||||
flag = true
|
||||
@@ -707,7 +708,7 @@ export function infoUpdate(that, type) {
|
||||
case '2':
|
||||
{
|
||||
//取出local中的被保险人信息
|
||||
let saleInsuredPersonInfo = JSON.parse(localStorage.saleInsuredPersonInfo)
|
||||
let saleInsuredPersonInfo = JSON.parse(CacheUtils.getLocItem('saleInsuredPersonInfo'))
|
||||
//如果 性别, 出生日期, 有无社保, 职业 发生变化
|
||||
if (
|
||||
that.userInfo.sex != saleInsuredPersonInfo.sex ||
|
||||
@@ -732,7 +733,7 @@ export function infoUpdate(that, type) {
|
||||
confirmButtonColor: '#FFFFFF'
|
||||
})
|
||||
.then(() => {
|
||||
localStorage.from = 'anotherChanged'
|
||||
CacheUtils.setLocItem('from','anotherChanged')
|
||||
type == '1' ? that.save('isShow=1') : that.save()
|
||||
})
|
||||
.catch(() => {
|
||||
@@ -755,7 +756,7 @@ export function save(that, type, str) {
|
||||
orderType: type == '1' ? 'APPNT_ORDER' : 'INSURED_ORDER',
|
||||
orderDTO: {
|
||||
orderInfoDTO: {
|
||||
orderNo: localStorage.orderNo
|
||||
orderNo: CacheUtils.getLocItem('orderNo')
|
||||
},
|
||||
smsCodeDTO: {
|
||||
smsId: that.sessionId,
|
||||
@@ -771,7 +772,7 @@ export function save(that, type, str) {
|
||||
type == '1' ? (params.orderDTO.appntDTO = that.userInfo) : (params.orderDTO.insuredDTOs = [that.userInfo])
|
||||
saveOrUpdateOrderInfo(params).then(res => {
|
||||
if (res.result == 0) {
|
||||
type == '1' ? (localStorage.orderNo = res.orderNo) : (localStorage.isFrom = 'sale')
|
||||
type == '1' ? (CacheUtils.setLocItem('orderNo', res.orderNo)) : (CacheUtils.setLocItem('isFrom', 'sale'))
|
||||
//清理计时器
|
||||
window.clearInterval(that.timeId)
|
||||
that.timeId = null
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { productCheck } from '@/api/ebiz/common/common'
|
||||
import { getCompany } from '@/api/ebiz/sale/sale'
|
||||
import CacheUtils from '@/assets/js/utils/cacheUtils'
|
||||
|
||||
export default {
|
||||
//投、被保险人年龄对险种的限制
|
||||
@@ -70,11 +71,11 @@ export default {
|
||||
},
|
||||
//获取被保险人信息
|
||||
getSaleInsuredPersonInfo() {
|
||||
return localStorage.saleInsuredPersonInfo && JSON.parse(localStorage.saleInsuredPersonInfo)
|
||||
return CacheUtils.getLocItem('saleInsuredPersonInfo') && JSON.parse(CacheUtils.getLocItem('saleInsuredPersonInfo'))
|
||||
},
|
||||
//获取投保人信息
|
||||
getSaleInsuredInfo() {
|
||||
return localStorage.saleInsuredInfo && JSON.parse(localStorage.saleInsuredInfo)
|
||||
return CacheUtils.getLocItem('saleInsuredInfo') && JSON.parse(CacheUtils.getLocItem('saleInsuredInfo'))
|
||||
},
|
||||
|
||||
//获取产品售卖权限列表
|
||||
|
||||
231
src/views/ebiz/my/LogoutAgent.vue
Normal file
231
src/views/ebiz/my/LogoutAgent.vue
Normal file
@@ -0,0 +1,231 @@
|
||||
<template>
|
||||
<div class="insured-info-container">
|
||||
<van-cell-group>
|
||||
<van-field
|
||||
v-model="logoutDTO.mobile"
|
||||
clearable
|
||||
required
|
||||
label="电话号码"
|
||||
name="联系电话"
|
||||
placeholder="请输入"
|
||||
v-validate="'required|mobile'"
|
||||
:disabled="true"
|
||||
/>
|
||||
<van-field v-model="logoutDTO.smsCode" required center label="验证码" clearable placeholder="请输入短信验证码"
|
||||
@input="validateNext">
|
||||
<van-button type="danger" slot="button" size="small" @click="getCode" :disabled="codeDisabled"
|
||||
v-no-more-click="1000">
|
||||
{{ codeDisabled ? `${countDown}s后重新获取` : '获取验证码' }}
|
||||
</van-button>
|
||||
</van-field>
|
||||
<van-field v-model="logoutDTO.pwd" clearable required type="password" label="密码" name="密码" placeholder="请输入密码"
|
||||
@input="validateNext"/>
|
||||
<van-field
|
||||
v-model="logoutDTO.confirmPwd"
|
||||
clearable
|
||||
required
|
||||
type="password"
|
||||
label="确认密码"
|
||||
name="确认密码"
|
||||
placeholder="请输入密码"
|
||||
@input="validateNext"
|
||||
/>
|
||||
</van-cell-group>
|
||||
<van-button type="danger" size="large" class="logout_button mt30" :disabled="checkNextDisabled"
|
||||
@click="logoutAgent">注销账户
|
||||
</van-button>
|
||||
|
||||
<van-dialog v-model="show" title="提示" @confirm="logoutAgentInfo" show-cancel-button>
|
||||
是否注销用户
|
||||
</van-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {Field, CellGroup, Popup, Picker, Checkbox, Area, Dialog} from 'vant'
|
||||
import {getAgentInfo, logoutAgent} from '@/api/ebiz/my/my.js'
|
||||
import {getAuthCode} from '@/api/ebiz/sale/sale'
|
||||
|
||||
export default {
|
||||
name: 'logoutAgent',
|
||||
components: {
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Field.name]: Field,
|
||||
[Popup.name]: Popup,
|
||||
[Picker.name]: Picker,
|
||||
[Checkbox.name]: Checkbox,
|
||||
[Area.name]: Area,
|
||||
[Dialog.name]: Dialog
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
logoutDTO: {
|
||||
smsId: null,
|
||||
smsCode: null,
|
||||
mobile: null,
|
||||
pwd: null,
|
||||
confirmPwd: null
|
||||
},
|
||||
show: false,
|
||||
timeId: null, // 计时器ID
|
||||
countDown: 60, // 倒计时
|
||||
codeDisabled: true, // 获取验证码按钮是否禁用
|
||||
branchType: null,
|
||||
checkNextDisabled: true // 禁用修改
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
this.codeDisabled = false
|
||||
// 获取代理人信息
|
||||
const res = await getAgentInfo({'89': '890'})
|
||||
if (res.result == 0) {
|
||||
this.branchType = /^N{1}/.test(res.branchType) ? '1' : '0' //res.branchType 以N打头的是内勤 其他是外勤
|
||||
if (this.branchType == '0') {
|
||||
this.logoutDTO.mobile = res.phoneNo
|
||||
this.codeDisabled = false
|
||||
}
|
||||
} else {
|
||||
return this.$toast(res.resultMessage)
|
||||
}
|
||||
},
|
||||
created() {
|
||||
if (this.$CacheUtils.getLocItem('businessNo') && this.$CacheUtils.getLocItem('claimsClear')) {
|
||||
this.init()
|
||||
this.$CacheUtils.getLocItem('claimsClear', '')
|
||||
} else {
|
||||
this.$CacheUtils.setLocItem('businessNo', '')
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
init() {
|
||||
},
|
||||
//获取验证码
|
||||
getCode() {
|
||||
if (!this.logoutDTO.mobile || this.logoutDTO.mobile == '') {
|
||||
return this.$toast('代理人信息异常请联系管理员')
|
||||
}
|
||||
this.codeDisabled = true
|
||||
let data = {
|
||||
operateType: 'appntInfoEntry',
|
||||
type: 'H5',
|
||||
operateCode: this.logoutDTO.mobile,
|
||||
system: 'agentApp',
|
||||
operateCodeType: '0'
|
||||
}
|
||||
//获取验证码
|
||||
getAuthCode(data).then(res => {
|
||||
if (res.result == 0) {
|
||||
this.logoutDTO.smsId = res.sessionId
|
||||
this.logoutDTO.smsCode = null
|
||||
//倒计时
|
||||
this.timeId = setInterval(() => {
|
||||
this.countDown--
|
||||
if (this.countDown <= 0) {
|
||||
window.clearInterval(this.timeId)
|
||||
this.codeDisabled = false
|
||||
this.countDown = 60
|
||||
}
|
||||
}, 1000)
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
},
|
||||
//操作下一步按钮状态
|
||||
validateNext() {
|
||||
if (!this.logoutDTO.smsCode || this.logoutDTO.smsCode == '') {
|
||||
this.checkNextDisabled = true
|
||||
return
|
||||
}
|
||||
// 2、判断密码是否一致
|
||||
if (!this.logoutDTO.pwd || this.logoutDTO.pwd == '') {
|
||||
this.checkNextDisabled = true
|
||||
return
|
||||
}
|
||||
if (!this.logoutDTO.confirmPwd || this.logoutDTO.confirmPwd == '') {
|
||||
this.checkNextDisabled = true
|
||||
return
|
||||
}
|
||||
if (this.logoutDTO.pwd.length < 6 || this.logoutDTO.confirmPwd.length < 6) {
|
||||
this.checkNextDisabled = true
|
||||
return
|
||||
}
|
||||
this.checkNextDisabled = false
|
||||
return
|
||||
},
|
||||
// 注销
|
||||
logoutAgent() {
|
||||
// 1、判断计时器
|
||||
if (!this.codeDisabled) {
|
||||
return this.$toast('请先获取验证码')
|
||||
}
|
||||
//
|
||||
if (!this.logoutDTO.smsCode || this.logoutDTO.smsCode == '') {
|
||||
return this.$toast('请输入短信验证码')
|
||||
}
|
||||
// 2、判断密码是否一致
|
||||
if (!this.logoutDTO.pwd || this.logoutDTO.pwd == '') {
|
||||
return this.$toast('请输入密码')
|
||||
}
|
||||
if (!this.logoutDTO.confirmPwd || this.logoutDTO.confirmPwd == '') {
|
||||
return this.$toast('请输入确认密码')
|
||||
}
|
||||
if (!(this.logoutDTO.pwd == this.logoutDTO.confirmPwd)) {
|
||||
return this.$toast('两次输入密码不一致')
|
||||
}
|
||||
|
||||
this.logoutAgentInfo();
|
||||
},
|
||||
logoutAgentInfo() {
|
||||
let req = {
|
||||
smsId: this.logoutDTO.smsId,
|
||||
smsCode: this.logoutDTO.smsCode,
|
||||
mobile: this.logoutDTO.mobile,
|
||||
password: this.$MD5(this.logoutDTO.pwd),
|
||||
confirmPwd: this.$MD5(this.logoutDTO.confirmPwd)
|
||||
}
|
||||
// 调用注销接口
|
||||
logoutAgent(req).then(res => {
|
||||
this.show =false;
|
||||
if (res.result == 0) {
|
||||
this.$toast('用户注销成功')
|
||||
// 跳转登陆页面
|
||||
this.$CacheUtils.removeLocItem('token')
|
||||
EWebBridge.webCallAppInJs('bridge', {flag: 'login'})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.insured-info-container {
|
||||
/deep/ .van-checkbox {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
/deep/ .van-radio {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
/deep/ .bankCard {
|
||||
width: 120px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.van-cell {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.logout_button {
|
||||
width: 80%;
|
||||
margin-left: 10%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -3,8 +3,8 @@
|
||||
<van-collapse v-model="activeNames" class="active">
|
||||
<!-- <van-collapse-item name="1" class="pb10 pt10"> -->
|
||||
<van-cell-group class="pl15 mt10">
|
||||
<van-cell title="业务员工号" :value="userInfo.jobNo" />
|
||||
<van-cell title="业务员姓名" :value="userInfo.name" />
|
||||
<van-cell title="业务员工号" :value="userInfo.encryptionJobNo" />
|
||||
<van-cell title="业务员姓名" :value="userInfo.encryptionName" />
|
||||
<van-cell title="性别" :value="userInfo.sex === '1' ? '女' : '男'" />
|
||||
<van-cell title="证件类型" :value="userInfo.cardType" />
|
||||
<van-cell title="证件号码" :value="userInfo.cardNoStart" />
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
// import utilsAge from '@/assets/js/utils/age'
|
||||
import CacheUtils from '@/assets/js/utils/cacheUtils'
|
||||
|
||||
/**
|
||||
* @desc 扩展对象继承
|
||||
* @param {Object} out 一个或多个对象
|
||||
@@ -179,7 +181,7 @@ export default {
|
||||
* @return {*} rs
|
||||
*/
|
||||
getStorage(name) {
|
||||
return this._string2json(window.localStorage[name])
|
||||
return this._string2json(CacheUtils.getLocItem(name))
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -187,7 +189,7 @@ export default {
|
||||
* @param {String} name 名称
|
||||
*/
|
||||
setStorage(name, value) {
|
||||
window.localStorage[name] = this._json2string(value)
|
||||
CacheUtils.setLocItem(name,this._json2string(value))
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -195,7 +197,7 @@ export default {
|
||||
* @param {String} name 名称
|
||||
*/
|
||||
delStorage(name) {
|
||||
window.localStorage.removeItem(name)
|
||||
CacheUtils.removeLocItem(name)
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
175
src/views/example/EncryotBack.vue
Normal file
175
src/views/example/EncryotBack.vue
Normal file
@@ -0,0 +1,175 @@
|
||||
<template>
|
||||
<div class="insured-info-container">
|
||||
<van-cell-group>
|
||||
<van-field
|
||||
v-model="logoutDTO.mobile"
|
||||
clearable
|
||||
required
|
||||
label="电话号码"
|
||||
name="联系电话"
|
||||
placeholder="请输入"
|
||||
v-validate="'required|mobile'"
|
||||
:disabled="false"
|
||||
/>
|
||||
<van-field v-model="logoutDTO.smsCode" required center label="验证码" clearable placeholder="请输入短信验证码">
|
||||
<van-button type="danger" slot="button" size="small" @click="getCode" :disabled="codeDisabled" v-no-more-click="1000">
|
||||
{{ codeDisabled ? `${countDown}s后重新获取` : '获取验证码' }}
|
||||
</van-button>
|
||||
</van-field>
|
||||
<van-field v-model="logoutDTO.pwd" clearable required type="password" label="密码" name="密码" placeholder="请输入密码" />
|
||||
<van-field v-model="logoutDTO.confirmPwd" clearable required type="password" label="确认密码" name="确认密码" placeholder="请输入密码" />
|
||||
</van-cell-group>
|
||||
<van-button type="danger" size="large" class="logout_button mt30" @click="logoutAgent">注销账户</van-button>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { Field, CellGroup, Popup, Picker, Checkbox, Area } from 'vant'
|
||||
import { getAgentInfo } from '@/api/ebiz/my/my.js'
|
||||
import { getAuthCode } from '@/api/ebiz/sale/sale'
|
||||
import AESTools from '@/assets/js/utils/cryptoJsUtil'
|
||||
export default {
|
||||
name: 'logoutAgent',
|
||||
components: {
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Field.name]: Field,
|
||||
[Popup.name]: Popup,
|
||||
[Picker.name]: Picker,
|
||||
[Checkbox.name]: Checkbox,
|
||||
[Area.name]: Area
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
logoutDTO: {
|
||||
smsId: null,
|
||||
smsCode: null,
|
||||
mobile: null,
|
||||
pwd: null,
|
||||
confirmPwd: null
|
||||
},
|
||||
timeId: null, // 计时器ID
|
||||
countDown: 60, // 倒计时
|
||||
codeDisabled: true, // 获取验证码按钮是否禁用
|
||||
branchType: null
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
// 获取代理人信息
|
||||
this.$CacheUtils.setLocItem('cacheTest', JSON.stringify(this.logoutDTO))
|
||||
console.log(this.$CacheUtils.getLocItem('cacheTest'))
|
||||
this.$CacheUtils.setSessionItem('cacheTest1', 'nsjdfi')
|
||||
console.log(this.$CacheUtils.getSessionItem('cacheTest1'))
|
||||
const res = await getAgentInfo({ '89': '890' })
|
||||
console.log(res)
|
||||
if (res.result == 0) {
|
||||
this.branchType = /^N{1}/.test(res.branchType) ? '1' : '0' //res.branchType 以N打头的是内勤 其他是外勤
|
||||
if (this.branchType == '0') {
|
||||
this.logoutDTO.mobile = res.phoneNo
|
||||
this.codeDisabled = false
|
||||
} else {
|
||||
}
|
||||
} else {
|
||||
return this.$toast(res.resultMessage)
|
||||
}
|
||||
},
|
||||
created() {
|
||||
if (this.$CacheUtils.getLocItem('businessNo') && this.$CacheUtils.getLocItem('claimsClear')) {
|
||||
this.init()
|
||||
this.$CacheUtils.setLocItem('claimsClear', '')
|
||||
} else {
|
||||
this.$CacheUtils.setLocItem('businessNo', '')
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
init() {},
|
||||
//获取验证码
|
||||
getCode() {
|
||||
if (this.reportMobile == '') {
|
||||
return this.$toast('请填写联系电话')
|
||||
}
|
||||
this.codeDisabled = true
|
||||
let data = {
|
||||
operateType: 'appntInfoEntry',
|
||||
type: 'H5',
|
||||
operateCode: this.reportMobile,
|
||||
system: 'agentApp',
|
||||
operateCodeType: '0'
|
||||
}
|
||||
//获取验证码
|
||||
getAuthCode(data).then(res => {
|
||||
//倒计时
|
||||
this.timeId = setInterval(() => {
|
||||
this.countDown--
|
||||
if (this.countDown <= 0) {
|
||||
window.clearInterval(this.timeId)
|
||||
this.codeDisabled = false
|
||||
this.countDown = 60
|
||||
}
|
||||
}, 1000)
|
||||
if (res.result == 0) {
|
||||
this.logoutDTO.smsId = res.sessionId
|
||||
this.logoutDTO.smsCode = null
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 注销
|
||||
logoutAgent() {
|
||||
let jj = AESTools.AESEncrypt('中国分红我都i阿萨79热9去 =-0987654321)(*&……%¥#@!·,》?》《?你啊', '41424344454631323334353637383930')
|
||||
console.log('jj', jj)
|
||||
let mm = AESTools.AESDecrypt(jj, '41424344454631323334353637383930')
|
||||
console.log('mm', mm)
|
||||
|
||||
//console.log(this.$MD5(this.logoutDTO.pwd))
|
||||
|
||||
/* // 1、判断计时器
|
||||
if(!codeDisabled){
|
||||
return this.$toast('请先获取验证码')
|
||||
}
|
||||
//
|
||||
if(!this.logoutDTO.smsCode || this.logoutDTO.pwd == ''){
|
||||
return this.$toast('请输入短信验证码')
|
||||
}
|
||||
// 2、判断密码是否一致
|
||||
if(!this.logoutDTO.pwd || this.logoutDTO.pwd == ''){
|
||||
return this.$toast('请输入密码')
|
||||
}
|
||||
if(!this.logoutDTO.confirmPwd || this.logoutDTO.confirmPwd == ''){
|
||||
return this.$toast('请输入确认密码')
|
||||
}
|
||||
if(!(this.logoutDTO.pwd == this.logoutDTO.confirmPwd)){
|
||||
return this.$toast('两次输入密码不一致')
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.insured-info-container {
|
||||
/deep/ .van-checkbox {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
/deep/ .van-radio {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
/deep/ .bankCard {
|
||||
width: 120px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.van-cell {
|
||||
align-items: center;
|
||||
}
|
||||
.logout_button {
|
||||
width: 80%;
|
||||
margin-left: 10%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
141
yarn.lock
141
yarn.lock
@@ -2813,6 +2813,11 @@ crypto-browserify@^3.11.0:
|
||||
randombytes "^2.0.0"
|
||||
randomfill "^1.0.3"
|
||||
|
||||
crypto-js@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npm.taobao.org/crypto-js/download/crypto-js-4.0.0.tgz#2904ab2677a9d042856a2ea2ef80de92e4a36dcc"
|
||||
integrity sha1-KQSrJnep0EKFai6i74DekuSjbcw=
|
||||
|
||||
css-color-names@0.0.4, css-color-names@^0.0.4:
|
||||
version "0.0.4"
|
||||
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
|
||||
@@ -3060,7 +3065,7 @@ debug@=3.1.0:
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6:
|
||||
debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5:
|
||||
version "3.2.6"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
|
||||
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
|
||||
@@ -3096,11 +3101,6 @@ deep-equal@^1.0.1:
|
||||
object-keys "^1.1.1"
|
||||
regexp.prototype.flags "^1.2.0"
|
||||
|
||||
deep-extend@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
||||
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
|
||||
|
||||
deep-is@~0.1.3:
|
||||
version "0.1.3"
|
||||
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
||||
@@ -3217,11 +3217,6 @@ detect-indent@^4.0.0:
|
||||
dependencies:
|
||||
repeating "^2.0.0"
|
||||
|
||||
detect-libc@^1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
||||
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
|
||||
|
||||
detect-newline@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
|
||||
@@ -4346,13 +4341,6 @@ fs-extra@^7.0.1:
|
||||
jsonfile "^4.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
fs-minipass@^1.2.5:
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
|
||||
integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==
|
||||
dependencies:
|
||||
minipass "^2.6.0"
|
||||
|
||||
fs-write-stream-atomic@^1.0.8:
|
||||
version "1.0.10"
|
||||
resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
|
||||
@@ -4906,7 +4894,7 @@ human-signals@^1.1.1:
|
||||
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
|
||||
integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
|
||||
|
||||
iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
|
||||
iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24:
|
||||
version "0.4.24"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
||||
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
||||
@@ -4935,13 +4923,6 @@ iferr@^0.1.5:
|
||||
resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
|
||||
integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
|
||||
|
||||
ignore-walk@^3.0.1:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37"
|
||||
integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==
|
||||
dependencies:
|
||||
minimatch "^3.0.4"
|
||||
|
||||
ignore@^3.3.3, ignore@^3.3.5:
|
||||
version "3.3.10"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
|
||||
@@ -5048,7 +5029,7 @@ inherits@2.0.3:
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||
|
||||
ini@^1.3.4, ini@~1.3.0:
|
||||
ini@^1.3.4:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
||||
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
|
||||
@@ -5938,6 +5919,11 @@ js-levenshtein@^1.1.3:
|
||||
resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
|
||||
integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==
|
||||
|
||||
js-md5@^0.7.3:
|
||||
version "0.7.3"
|
||||
resolved "https://registry.npm.taobao.org/js-md5/download/js-md5-0.7.3.tgz#b4f2fbb0b327455f598d6727e38ec272cd09c3f2"
|
||||
integrity sha1-tPL7sLMnRV9ZjWcn447Ccs0Jw/I=
|
||||
|
||||
js-message@1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/js-message/-/js-message-1.0.5.tgz#2300d24b1af08e89dd095bc1a4c9c9cfcb892d15"
|
||||
@@ -6605,21 +6591,6 @@ minimist@~0.0.1:
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
|
||||
integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
|
||||
|
||||
minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
|
||||
version "2.9.0"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6"
|
||||
integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==
|
||||
dependencies:
|
||||
safe-buffer "^5.1.2"
|
||||
yallist "^3.0.0"
|
||||
|
||||
minizlib@^1.2.1:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d"
|
||||
integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==
|
||||
dependencies:
|
||||
minipass "^2.9.0"
|
||||
|
||||
mississippi@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f"
|
||||
@@ -6748,15 +6719,6 @@ natural-compare@^1.4.0:
|
||||
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
|
||||
|
||||
needle@^2.2.1:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
|
||||
integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
|
||||
dependencies:
|
||||
debug "^3.2.6"
|
||||
iconv-lite "^0.4.4"
|
||||
sax "^1.2.4"
|
||||
|
||||
negotiator@0.6.2:
|
||||
version "0.6.2"
|
||||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
|
||||
@@ -6869,22 +6831,6 @@ node-notifier@^5.2.1:
|
||||
shellwords "^0.1.1"
|
||||
which "^1.3.0"
|
||||
|
||||
node-pre-gyp@*:
|
||||
version "0.14.0"
|
||||
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83"
|
||||
integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==
|
||||
dependencies:
|
||||
detect-libc "^1.0.2"
|
||||
mkdirp "^0.5.1"
|
||||
needle "^2.2.1"
|
||||
nopt "^4.0.1"
|
||||
npm-packlist "^1.1.6"
|
||||
npmlog "^4.0.2"
|
||||
rc "^1.2.7"
|
||||
rimraf "^2.6.1"
|
||||
semver "^5.3.0"
|
||||
tar "^4.4.2"
|
||||
|
||||
node-releases@^1.1.44:
|
||||
version "1.1.44"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.44.tgz#cd66438a6eb875e3eb012b6a12e48d9f4326ffd7"
|
||||
@@ -6922,7 +6868,7 @@ node-sass@^4.9.0:
|
||||
dependencies:
|
||||
abbrev "1"
|
||||
|
||||
nopt@^4.0.1, nopt@~4.0.1:
|
||||
nopt@~4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
|
||||
integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
|
||||
@@ -6977,26 +6923,6 @@ normalize-url@^3.0.0:
|
||||
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
|
||||
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
|
||||
|
||||
npm-bundled@^1.0.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b"
|
||||
integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==
|
||||
dependencies:
|
||||
npm-normalize-package-bin "^1.0.1"
|
||||
|
||||
npm-normalize-package-bin@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2"
|
||||
integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==
|
||||
|
||||
npm-packlist@^1.1.6:
|
||||
version "1.4.7"
|
||||
resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848"
|
||||
integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==
|
||||
dependencies:
|
||||
ignore-walk "^3.0.1"
|
||||
npm-bundled "^1.0.1"
|
||||
|
||||
npm-run-path@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
|
||||
@@ -7011,7 +6937,7 @@ npm-run-path@^4.0.0:
|
||||
dependencies:
|
||||
path-key "^3.0.0"
|
||||
|
||||
"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2:
|
||||
"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
|
||||
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
|
||||
@@ -8230,16 +8156,6 @@ raw-loader@^0.5.1:
|
||||
resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa"
|
||||
integrity sha1-DD0L6u2KAclm2Xh793goElKpeao=
|
||||
|
||||
rc@^1.2.7:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
||||
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
|
||||
dependencies:
|
||||
deep-extend "^0.6.0"
|
||||
ini "~1.3.0"
|
||||
minimist "^1.2.0"
|
||||
strip-json-comments "~2.0.1"
|
||||
|
||||
read-pkg-up@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
|
||||
@@ -9495,19 +9411,6 @@ tar@^2.0.0:
|
||||
fstream "^1.0.12"
|
||||
inherits "2"
|
||||
|
||||
tar@^4.4.2:
|
||||
version "4.4.13"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
|
||||
integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
|
||||
dependencies:
|
||||
chownr "^1.1.1"
|
||||
fs-minipass "^1.2.5"
|
||||
minipass "^2.8.6"
|
||||
minizlib "^1.2.1"
|
||||
mkdirp "^0.5.0"
|
||||
safe-buffer "^5.1.2"
|
||||
yallist "^3.0.3"
|
||||
|
||||
terser-webpack-plugin@^1.2.3, terser-webpack-plugin@^1.4.3:
|
||||
version "1.4.3"
|
||||
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c"
|
||||
@@ -10031,6 +9934,13 @@ vue-eslint-parser@^5.0.0:
|
||||
esquery "^1.0.1"
|
||||
lodash "^4.17.11"
|
||||
|
||||
vue-hash-calendar@^1.2.12:
|
||||
version "1.2.17"
|
||||
resolved "https://registry.npm.taobao.org/vue-hash-calendar/download/vue-hash-calendar-1.2.17.tgz#da92148f02e5658a69316c05231ac0ef940bf176"
|
||||
integrity sha1-2pIUjwLlZYppMWwFIxrA75QL8XY=
|
||||
dependencies:
|
||||
vue "^2.5.17"
|
||||
|
||||
vue-hot-reload-api@^2.3.0:
|
||||
version "2.3.4"
|
||||
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
|
||||
@@ -10110,6 +10020,11 @@ vue-template-es2015-compiler@^1.6.0, vue-template-es2015-compiler@^1.9.0:
|
||||
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
|
||||
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
|
||||
|
||||
vue@^2.5.17:
|
||||
version "2.6.12"
|
||||
resolved "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz?cache=0&sync_timestamp=1603224263683&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue%2Fdownload%2Fvue-2.6.12.tgz#f5ebd4fa6bd2869403e29a896aed4904456c9123"
|
||||
integrity sha1-9evU+mvShpQD4pqJau1JBEVskSM=
|
||||
|
||||
vue@^2.6.10:
|
||||
version "2.6.11"
|
||||
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.11.tgz#76594d877d4b12234406e84e35275c6d514125c5"
|
||||
@@ -10497,7 +10412,7 @@ yallist@^2.1.2:
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
|
||||
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
|
||||
|
||||
yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
|
||||
yallist@^3.0.2:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
|
||||
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
||||
|
||||
Reference in New Issue
Block a user