Merge branch 'feature/GFRS-1006【0423】国富人寿爱易保重大疾病保险产品开发' into dev

# Conflicts:
#	src/assets/js/business-common.js
#	src/assets/js/utils/validator.js
#	src/views/ebiz/sale/AddBeneficiaryInfo.vue
#	src/views/ebiz/sale/InsuredInfo.vue
#	src/views/ebiz/sale/InsuredPerson.vue
#	src/views/ebiz/sale/List.vue
#	src/views/ebiz/sale/SignatureConfirmation.vue
This commit is contained in:
tian.guangyuan
2020-04-17 13:33:11 +08:00
7 changed files with 121 additions and 121 deletions

View File

@@ -511,6 +511,9 @@ export default {
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,

View File

@@ -931,6 +931,11 @@ export default {
shortName: '寿险',
name: '国富人寿国富栋梁定期寿险',
code: 'GFRS_M0020'
},
{
shortName: '重疾险',
name: '国富人寿爱易保重大疾病保险',
code: 'GFRSPRO_M0021'
}
],
// 职级

View File

@@ -206,4 +206,4 @@ Validator.extend('manpowerName', {
// return /^[\u4e00-\u9fa5·]{1,15}$/.test(value)
return /^[a-zA-Z\.\s\u4e00-\u9fa5]{2,120}$/.test(value)
}
})
})

View File

@@ -321,7 +321,7 @@ const dutyGFRS_A0004Rules = {
mainRisk: 'GFRS_M0005',
msg: '住院医疗提示金额只能是0.5、1、1.5、2',
msg_1: '附加到国富人寿国富民惠医疗保险2020版最高基本保额不超过1万元。',
msg_2: '住院医疗提示金额只能是0.5、1',
msg_2: '住院医疗提示金额只能是0.5、1'
},
320206: {
msg: '住院津贴提示:投保可选责任时,可选责任最低投保 50 元,且应为 10 元的整数倍'
@@ -437,19 +437,19 @@ export default {
this.mainRiskCode = item.mainRiskCode
}
})
if(this.mainRiskCode == 'GFRS_M0005'){
if (this.mainRiskCode == 'GFRS_M0005') {
this.chooseProducts.map(item => {
if(item.productCode == 'GFRS_A0004'){
item.calFactorLst.map( item2 => {
if(item2.code == 'dutyGroup'){
if (item.productCode == 'GFRS_A0004') {
item.calFactorLst.map(item2 => {
if (item2.code == 'dutyGroup') {
item2.rules.map(item3 => {
console.log(item3);
if(item3.duty == '320205'){
item3.maxDutyAmt = "1"
console.log(item3)
if (item3.duty == '320205') {
item3.maxDutyAmt = '1'
}
})
}
})
})
}
})
}
@@ -557,7 +557,7 @@ export default {
}
return
}
if (item.mainRiskCode === 'GFRS_M0016' || item.productCode === 'GFRS_A0004' || item.productCode === 'GFRS_A0005' ) {
if (item.mainRiskCode === 'GFRS_M0016' || item.productCode === 'GFRS_A0004' || item.productCode === 'GFRS_A0005') {
let isMedical = null
if (this.isFrom === 'proposal') {
isMedical = detailPromise == '1'
@@ -819,7 +819,7 @@ export default {
this.$toast(dutyGFRS_A0004Rules[currentEle.duty].msg_2)
this.nextStepFlag = true
return false
} else if(value-0 > 1){
} else if (value - 0 > 1) {
this.$toast(dutyGFRS_A0004Rules[currentEle.duty].msg_1)
this.nextStepFlag = true
return false
@@ -831,9 +831,7 @@ export default {
return false
}
}
this.nextStepFlag = false
return true
}

View File

@@ -204,9 +204,9 @@ import FieldDatePicter from '@/components/ebiz/FieldDatePicter'
import OccupationPicker from '@/components/ebiz/occipation/OccupationPicker'
import DataDictionary from '@/assets/js/utils/data-dictionary'
import areaList from '@/assets/js/utils/area'
import { getOrderDetail } from '@/api/ebiz/sale/sale'
// import { getOrderDetail } from '@/api/ebiz/sale/sale'
import filter from '@/filters/index'
import getAreaName from '@/assets/js/utils/get-area-name'
// import getAreaName from '@/assets/js/utils/get-area-name'
import utilsAge from '@/assets/js/utils/age'
import IdentityCardScan from '@/components/ebiz/sale/IdentityCardScan'
import CustomerPicker from '@/components/ebiz/customer/CustomerPicker'
@@ -217,7 +217,7 @@ import { selectComp } from './js/methods'
let relationToInsured = [
{ id: 2, text: '配偶' },
{ id: 3, text: '父母' },
{ id: 4, text: '子女' },
{ id: 4, text: '子女' }
]
export default {
@@ -233,7 +233,7 @@ export default {
[Picker.name]: Picker,
[Area.name]: Area,
[IdentityCardScan.name]: IdentityCardScan,
[CustomerPicker.name]: CustomerPicker,
[CustomerPicker.name]: CustomerPicker
},
data() {
return {
@@ -242,12 +242,12 @@ export default {
sexRadio: [
{
label: '男',
value: '0',
value: '0'
},
{
label: '女',
value: '1',
},
value: '1'
}
],
currentPopupIndex: '',
relationToAppnt: '',
@@ -294,7 +294,7 @@ export default {
relationToInsured: '', //和被保险人的关系
lifeGrade: '',
healthGrade: '',
bnfType: '0', //身故受益人
bnfType: '0' //身故受益人
},
areaList: areaList,
occupationShowPicker: false,
@@ -306,7 +306,7 @@ export default {
// area: '',
// city: '',
// province: ''
saleInsuredPersonInfo: JSON.parse(localStorage.saleInsuredPersonInfo), //被保人信息
saleInsuredPersonInfo: JSON.parse(localStorage.saleInsuredPersonInfo) //被保人信息
}
},
mounted() {
@@ -370,15 +370,15 @@ export default {
flag: 'goBack',
extra: {
refresh: '1', //是否返回后刷新01
index: '-1',
},
index: '-1'
}
})
this.$jump({
flag: 'navigation',
extra: {
title: '指定受益人信息',
hiddenRight: '1',
},
hiddenRight: '1'
}
})
if (this.currentPopupIndex == 1) {
this.customerShowPicker = false
@@ -391,8 +391,8 @@ export default {
flag: 'navigation',
extra: {
title: '指定受益人信息',
hiddenRight: '1',
},
hiddenRight: '1'
}
})
this.occupationShowPicker = false
},
@@ -414,7 +414,7 @@ export default {
} else if (pickerType == '4') {
this.columns = [
{ id: 0, text: '有' },
{ id: 1, text: '无' },
{ id: 1, text: '无' }
]
} else if (pickerType == '5') {
this.columns = DataDictionary.taxIdentity
@@ -600,8 +600,8 @@ export default {
flag: 'navigation',
extra: {
title: '指定受益人信息',
hiddenRight: '1',
},
hiddenRight: '1'
}
})
// let { customerName, customerSex } = data
this.userInfo.name = data.customerName //用户名
@@ -708,7 +708,7 @@ export default {
title: '提示',
message: '亲,请确认受益人与被保险人关系哦',
confirmButtonText: '继续填写',
cancelButtonText: '返回修改',
cancelButtonText: '返回修改'
})
}
}
@@ -719,7 +719,7 @@ export default {
title: '提示',
message: '亲,请确认受益人与被保险人关系哦',
confirmButtonText: '继续填写',
cancelButtonText: '返回修改',
cancelButtonText: '返回修改'
})
}
}
@@ -838,7 +838,7 @@ export default {
let obj = {
'1': true,
'5': true,
'6': true,
'6': true
}
let idType = this.userInfo.idType
// 通过年龄 判断证件是否符合要求
@@ -871,7 +871,7 @@ export default {
// 非大陆人员按外籍人员
let obj = {
'4': true,
'8': true,
'8': true
}
let idType = this.userInfo.idType
if (obj[idType] === undefined) {
@@ -885,7 +885,7 @@ export default {
beneficiaries = JSON.parse(localStorage.beneficiaryInfo)
// 收益份额不超过 100%
let ratio = 0
beneficiaries.forEach((item) => {
beneficiaries.forEach(item => {
ratio += parseInt(item.bnfLot)
})
ratio += parseInt(this.userInfo.bnfLot)
@@ -896,7 +896,7 @@ export default {
if (this.userInfo.idNo != '') {
// 受益人不能重复添加 (证件号码为基准)
let isDbAdd = beneficiaries.some((item) => {
let isDbAdd = beneficiaries.some(item => {
return item.idNo == this.userInfo.idNo
})
console.log(isDbAdd)
@@ -922,11 +922,11 @@ export default {
flag: 'h5',
extra: {
url: location.origin + '/#/sale/beneficiary',
needRefresh: '1',
needRefresh: '1'
},
routerInfo: {
path: '/sale/beneficiary',
},
path: '/sale/beneficiary'
}
})
} else {
this.$toast(this.$validator.errors.all()[0])
@@ -1123,15 +1123,15 @@ export default {
// } else {
// this.idLimit = false
// }
},
}
},
filters: {
idToText: filter.idToText,
idToText: filter.idToText
},
beforeRouteLeave(to, from, next) {
document.body.style.backgroundColor = ''
next()
},
}
}
</script>
<style lang="scss" scoped>

View File

@@ -630,6 +630,7 @@ export default {
this.userInfo.effectiveDateType = insuredPersonInfo.effectiveDateType == 'false' ? false : true
//设为联系地址
// this.userInfo.addressStatus = '0'
// if (this.$route.query.isShow) {
//户籍
if (insuredPersonInfo.householdProvince.length) {
@@ -773,10 +774,7 @@ export default {
} else if (pickerType == '3') {
this.columns = DataDictionary.degree
} else if (pickerType == '4') {
this.columns = [
{ id: 0, text: '有' },
{ id: 1, text: '无' }
]
this.columns = [{ id: 0, text: '有' }, { id: 1, text: '无' }]
} else if (pickerType == '5') {
this.columns = DataDictionary.taxIdentity
} else if (pickerType == '6') {
@@ -1055,7 +1053,7 @@ export default {
this.$jump({
flag: 'navigation',
extra: {
title: '被保人信息',
title: '被保人信息',
hiddenRight: '1'
}
})
@@ -1180,7 +1178,7 @@ export default {
return this.$toast('亲,请确认被保险人学历哦~')
}
//投被保人关系是配偶
//投被保人关系是配偶
if (this.userInfo.relationToAppnt == '2') {
//投保人或者被保险人不是已婚
if (this.appntMarriage != '1' || this.userInfo.marriage != '1') {
@@ -1351,7 +1349,7 @@ export default {
return this.$toast('被保险人不符合国家婚姻法定年龄')
}
}
// 通过国籍判断 证件是否符合要求
// 如果是国籍选择中国大陆
if (this.userInfo.nativeplace == '1') {
@@ -1397,7 +1395,7 @@ export default {
return this.$toast('亲,国籍为外籍,证件类型必须为护照或外国人永久居留身份证投保')
}
}
// this.save()
this.infoUpdate()
// console.log('success')

View File

@@ -218,24 +218,21 @@
</div>
</div>
<!-- 短信验证 -->
<van-dialog
v-model="show"
title="提示"
show-cancel-button
@confirm="authConfirm(authCode)"
@cancel="clearTimer"
>
<p class="p10 fs14">
为确保是您本人操作短信验证码已发送至您手机号{{ encyCustomerMobile }}请您输入验证码以完成后续投保操作
</p>
<van-dialog v-model="show" title="提示" show-cancel-button @confirm="authConfirm(authCode)" @cancel="clearTimer">
<p class="p10 fs14">为确保是您本人操作短信验证码已发送至您手机号{{ encyCustomerMobile }}请您输入验证码以完成后续投保操作</p>
<van-cell-group class="flex align-items-c pr5 mb15">
<van-field maxlength="6" placeholder="请输入短信验证码" v-model="authCode" clearable label-width="0"/>
<van-button type="danger" plain size="small" class="w160 p0" @click="getAuthCode" :disabled="codeDisabled" v-no-more-click="2000">{{
<van-field maxlength="6" placeholder="请输入短信验证码" v-model="authCode" clearable label-width="0" />
<van-button type="danger" plain size="small" class="w160 p0" @click="getAuthCode" :disabled="codeDisabled" v-no-more-click="2000">{{
codeDisabled ? `${countDown}s后重新获取` : '获取验证码'
}}</van-button>
}}</van-button>
</van-cell-group>
</van-dialog>
<UploadImageFile :typeface="idcardData.typeface && (faceAuthCount.weixin < smsAuthNum)" :realName="idcardData.idcardName" :idno="idcardData.idcardNumber" @sendimage="sendimage">
<UploadImageFile
:typeface="idcardData.typeface && faceAuthCount.weixin < smsAuthNum"
:realName="idcardData.idcardName"
:idno="idcardData.idcardNumber"
@sendimage="sendimage"
>
</UploadImageFile>
</div>
</template>
@@ -243,7 +240,7 @@
<script>
import UploadImageFile from '@/components/ebiz/sale/UploadImageFile'
import { Field, Cell, CellGroup, Collapse, CollapseItem, Dialog } from 'vant'
import { underWrite, getOrderDetail, getSignInvalid, checkSignInvalid, getAuthCode, autchCodeCheck} from '@/api/ebiz/sale/sale'
import { underWrite, getOrderDetail, getSignInvalid, checkSignInvalid, getAuthCode, autchCodeCheck } from '@/api/ebiz/sale/sale'
import { checkPhone } from '@/api/ebiz/customer/customer'
import { weixinShare } from '@/assets/js/utils/wxShare.js'
import IndexBar from '@/components/ebiz/sale/IndexBar'
@@ -258,16 +255,16 @@ export default {
countDown: 60, // 倒计时
authCode: '', // 验证码
smsAuthNum: 3,
operaFlag:null,
encyCustomerMobile:null,
sid:null,
operaFlag: null,
encyCustomerMobile: null,
sid: null,
//人脸识别认证次数
faceAuthCount:{
appnt:0,
insured:0,
weixin:0
faceAuthCount: {
appnt: 0,
insured: 0,
weixin: 0
},
customerMobile:'',
customerMobile: '',
//保险产品名称
riskName: '',
// 员工信息
@@ -431,7 +428,6 @@ export default {
},
// 获取消息和阅读状态
realPeopelCheck() {
let that = this
this.$toast.loading({
// 持续展示 toast
duration: 0,
@@ -440,35 +436,35 @@ export default {
loadingType: 'spinner',
message: '加载中……'
})
let data = {};
this.authCode = null;
if("appnt" == this.operaFlag){
let appntData = JSON.parse(localStorage.saleInsuredInfo);
let data = {}
this.authCode = null
if ('appnt' == this.operaFlag) {
let appntData = JSON.parse(localStorage.saleInsuredInfo)
data = {
name: appntData.name,
idType: appntData.idType,
idNo: appntData.idNo,
mobile: appntData.mobile
}
this.customerMobile = appntData.mobile;
this.encyCustomerMobile = this.customerMobile.replace(/^(\d{3})\d{4}(\d{4})$/,'$1****$2');
}else if("insured" == this.operaFlag){
let insuredData = JSON.parse(localStorage.saleInsuredPersonInfo);
this.customerMobile = appntData.mobile
this.encyCustomerMobile = this.customerMobile.replace(/^(\d{3})\d{4}(\d{4})$/, '$1****$2')
} else if ('insured' == this.operaFlag) {
let insuredData = JSON.parse(localStorage.saleInsuredPersonInfo)
data = {
name: insuredData.name,
idType: insuredData.idType,
idNo: insuredData.idNo,
mobile: insuredData.mobile
}
this.customerMobile = insuredData.mobile;
this.encyCustomerMobile = this.customerMobile.replace(/^(\d{3})\d{4}(\d{4})$/,'$1****$2');
this.customerMobile = insuredData.mobile
this.encyCustomerMobile = this.customerMobile.replace(/^(\d{3})\d{4}(\d{4})$/, '$1****$2')
}
return new Promise((resolve, reject) => {
checkPhone(data).then(res => {
if (res.result == '0') {
console.log(res);
this.show = true;
}else{
console.log(res)
this.show = true
} else {
Dialog.confirm({
title: '提示',
message: '抱歉,您预留的手机号非您本人的手机号,请进行线下投保!',
@@ -520,20 +516,20 @@ export default {
},
//提交变更申请
async changeSubmit() {
if(null == this.sid){
this.$toast("请先进行发送短信验证码")
return;
if (null == this.sid) {
this.$toast('请先进行发送短信验证码')
return
}
let res = await autchCodeCheck({
smsId: this.sid,
code: this.authCode
})
if (res.result == 0) {
if("appnt" == this.operaFlag){
this.goUrl()
}else if("insured" == this.operaFlag){
this.insuredUrl()
}
if ('appnt' == this.operaFlag) {
this.goUrl()
} else if ('insured' == this.operaFlag) {
this.insuredUrl()
}
} else {
this.$toast(res.resultMessage)
}
@@ -555,13 +551,13 @@ export default {
if (JSON.parse(this.$route.query.saleInsuredInfo).idType != '1') {
that.goUrl()
} else {
if(this.faceAuthCount.appnt < this.smsAuthNum) {
if (this.faceAuthCount.appnt < this.smsAuthNum) {
this.idcardData.typeface = !this.idcardData.typeface
this.idcardData.idcardName = JSON.parse(this.$route.query.saleInsuredInfo).name
this.idcardData.idcardNumber = JSON.parse(this.$route.query.saleInsuredInfo).idNo
}else{
this.operaFlag = "appnt";
this.realPeopelCheck();
} else {
this.operaFlag = 'appnt'
this.realPeopelCheck()
}
}
} else {
@@ -571,13 +567,13 @@ export default {
// if (JSON.parse(this.$route.query.saleInsuredPersonInfo).idType != '1') {
that.insuredUrl()
} else {
if(this.faceAuthCount.insured < this.smsAuthNum) {
if (this.faceAuthCount.insured < this.smsAuthNum) {
this.idcardData.typeface = !this.idcardData.typeface
this.idcardData.idcardName = JSON.parse(this.$route.query.saleInsuredPersonInfo).name
this.idcardData.idcardNumber = JSON.parse(this.$route.query.saleInsuredPersonInfo).idNo
}else{
this.operaFlag = "insured";
this.realPeopelCheck();
} else {
this.operaFlag = 'insured'
this.realPeopelCheck()
}
}
}
@@ -589,7 +585,7 @@ export default {
// if (this.saleInsuredInfo.idType != '1' || this.saleInsuredInfo.age < '18') {
that.goUrl()
} else {
if(this.faceAuthCount.appnt < this.smsAuthNum){
if (this.faceAuthCount.appnt < this.smsAuthNum) {
// 原人脸识别
EWebBridge.webCallAppInJs('face_auth', {
number: that.saleInsuredInfo.idNo, //身份证号码
@@ -598,16 +594,16 @@ export default {
if (JSON.parse(data).state == '1') {
that.goUrl()
} else {
that.faceAuthCount.appnt++;
that.faceAuthCount.appnt++
if (this.faceAuthCount.appnt >= this.smsAuthNum) {
this.operaFlag = 'appnt'
this.realPeopelCheck()
}
}
})
}else{
this.operaFlag = "appnt";
this.realPeopelCheck();
} else {
this.operaFlag = 'appnt'
this.realPeopelCheck()
}
}
} else {
@@ -617,7 +613,7 @@ export default {
if (this.saleInsuredPersonInfo.idType != '1' || this.saleInsuredPersonInfo.age < '18') {
that.insuredUrl()
} else {
if(this.faceAuthCount.insured < this.smsAuthNum) {
if (this.faceAuthCount.insured < this.smsAuthNum) {
// 调原生人脸识别
EWebBridge.webCallAppInJs('face_auth', {
number: that.saleInsuredPersonInfo.idNo, //身份证号码
@@ -626,16 +622,16 @@ export default {
if (JSON.parse(data).state == '1') {
that.insuredUrl()
} else {
that.faceAuthCount.insured++;
that.faceAuthCount.insured++
if (this.faceAuthCount.insured >= this.smsAuthNum) {
this.operaFlag = 'insured'
this.realPeopelCheck()
}
}
})
}else{
this.operaFlag = "insured";
this.realPeopelCheck();
} else {
this.operaFlag = 'insured'
this.realPeopelCheck()
}
}
}
@@ -921,7 +917,7 @@ export default {
orderNo: window.localStorage.getItem('orderNo')
}
localStorage.setItem('riskName', '')
return new Promise((resolve) => {
return new Promise(resolve => {
getOrderDetail(data).then(res => {
if (res.result == '0') {
//弹框展示是否有社保、赔付比例和免赔额信息
@@ -937,7 +933,7 @@ export default {
) {
const message = '&emsp;&emsp;' + res.orderDTO.productDTO.special.content
Dialog({
message: message.split("\\n").join("\n&emsp;&emsp;"),
message: message.split('\\n').join('\n&emsp;&emsp;'),
confirmButtonText: '本人已阅读并同意上述特别约定内容',
messageAlign: 'left'
})
@@ -1108,8 +1104,8 @@ export default {
} else {
this.goUrl()
}
}else{
this.faceAuthCount.weixin++;
} else {
this.faceAuthCount.weixin++
if (this.faceAuthCount.weixin >= this.smsAuthNum) {
if (window.sessionStorage.shareCode == '1') {
this.operaFlag = 'insured'
@@ -1162,7 +1158,7 @@ export default {
[Dialog.name]: Dialog,
[IndexBar.name]: IndexBar,
[Field.name]: Field
},
},
beforeRouteLeave(to, from, next) {
document.body.style.backgroundColor = ''
next()