Merge branch 'feature/GFRS-2301【需求】健康险渠道国富无忧卡金掌桂开发的需求' into dev

This commit is contained in:
liyuetong
2021-05-18 09:50:43 +08:00
3 changed files with 3591 additions and 70 deletions

View File

@@ -40,6 +40,21 @@
>
<van-button v-if="userInfo.idType == 1" slot="button" size="small" type="danger" round @click="selectClick('3', '', '1')">证件扫描</van-button>
</van-field>
<FieldDatePicter
:v-validate="{ required: certiexpiredateRequired }"
required
label="证件截止日期"
name="证件截止日期"
:value.sync="userInfo.certiexpiredate"
type="date"
@confirm="onDateConfirm($event, '1')"
ref="certiexpiredate"
:flag="true"
:readonly="idLimit"
></FieldDatePicter>
<div class="border-bt relative fs14 p10 flex justify-content-fe">
<van-checkbox v-model="userInfo.effectiveDateType" :disabled="effectiveDateTypeAble" @change="effectiveDataTypeChange">长期</van-checkbox>
</div>
<select-radio required :radios="sexRadio" label="性别" name="性别" v-validate="'required'" :value.sync="userInfo.sex"></select-radio>
<FieldDatePicter
v-validate="'required'"
@@ -76,6 +91,16 @@
:value="userInfo.occupationName"
right-icon="arrow"
/>
<van-field
v-model="userInfo.averageAnnualIncome"
label="平均年收入(万元)"
name="平均年收入"
required
placeholder="请输入,单位万元"
v-validate="'required|onlyNumber'"
clearable
maxlength="5"
/>
<van-field
v-validate="'required'"
:value="userInfo.nativeplace | idToText('nativeplace')"
@@ -161,6 +186,23 @@
>
<van-button v-if="insuredInfo.idType == 1" slot="button" size="small" type="danger" round @click="selectClick('3', '', '2')">证件扫描</van-button>
</van-field>
<FieldDatePicter
:v-validate="{ required: certiexpiredateRequiredInsured }"
required
label="证件截止日期"
name="证件截止日期"
:value.sync="insuredInfo.certiexpiredate"
type="date"
@confirm="onDateConfirm($event, '7')"
ref="certiexpiredate"
:flag="true"
:readonly="idLimit"
></FieldDatePicter>
<div class="border-bt relative fs14 p10 flex justify-content-fe">
<van-checkbox v-model="insuredInfo.effectiveDateType" :disabled="effectiveDateTypeAbleInsured" @change="effectiveDataTypeChangeInsured"
>长期</van-checkbox
>
</div>
<select-radio required :radios="sexRadio" label="性别" name="性别" v-validate="'required'" :value.sync="insuredInfo.sex"></select-radio>
<FieldDatePicter
label="出生日期"
@@ -193,6 +235,16 @@
:value="insuredInfo.occupationName"
right-icon="arrow"
/>
<van-field
v-model="insuredInfo.averageAnnualIncome"
label="平均年收入(万元)"
name="平均年收入"
required
placeholder="请输入,单位万元"
v-validate="'required|onlyNumber'"
clearable
maxlength="5"
/>
<van-field
:value="insuredInfo.nativeplace | idToText('nativeplace')"
readonly
@@ -250,6 +302,19 @@
placeholder="请输入"
clearable
/>
<FieldDatePicter
required
label="证件截止日期"
name="证件截止日期"
:value.sync="userInfo.certiexpiredate"
type="date"
ref="certiexpiredate"
:flag="true"
readonly
></FieldDatePicter>
<div class="border-bt relative fs14 p10 flex justify-content-fe">
<van-checkbox v-model="userInfo.effectiveDateType" disabled="false">长期</van-checkbox>
</div>
<select-radio required :disabled="true" :radios="sexRadio" label="性别" name="性别" v-validate="'required'" :value.sync="userInfo.sex"></select-radio>
<FieldDatePicter
v-validate="'required'"
@@ -272,9 +337,21 @@
placeholder="请输入"
v-validate="'required|mobile'"
maxlength="11"
readonly
/>
<van-field v-model="userInfo.email" required label="邮箱" name="邮箱" placeholder="请输入" v-validate="'required|email'" clearable />
<van-field v-model="userInfo.email" readonly required label="邮箱" name="邮箱" placeholder="请输入" v-validate="'required|email'" clearable />
<van-field readonly required label="职业类别" name="职业类别" :value="userInfo.occupationName" right-icon="arrow" />
<van-field
v-model="userInfo.averageAnnualIncome"
label="平均年收入(万元)"
name="平均年收入"
required
readonly
placeholder="请输入,单位万元"
v-validate="'required|onlyNumber'"
clearable
maxlength="5"
/>
<van-field
:value="userInfo.nativeplace | idToText('nativeplace')"
readonly
@@ -423,7 +500,9 @@ import Vue from 'vue'
import { GoodsAction, GoodsActionIcon, GoodsActionButton } from 'vant'
DataDictionary.relationToAppnt = DataDictionary.relationToAppnt.slice(0, 4)
Vue.use(Checkbox).use(CheckboxGroup)
Vue.use(GoodsAction).use(GoodsActionIcon).use(GoodsActionButton)
Vue.use(GoodsAction)
.use(GoodsActionIcon)
.use(GoodsActionButton)
export default {
name: 'insuredInfo',
components: {
@@ -440,10 +519,14 @@ export default {
[RadioGroup.name]: RadioGroup,
[Radio.name]: Radio,
[IdentityCardScan.name]: IdentityCardScan,
OccupationForLoop,
OccupationForLoop
},
data() {
return {
certiexpiredateRequired: true, //证件截止日期是否需要校验
certiexpiredateRequiredInsured: true, //证件截止日期是否需要校验--被保人
effectiveDateTypeAble: false, //长期按钮是否禁用
effectiveDateTypeAbleInsured: false, //长期按钮是否禁用--被保人
proScheme: '', //保障方案
proSchemeCode: '',
productDate: '', //保险期间
@@ -458,26 +541,26 @@ export default {
sexRadio: [
{
label: '男',
value: '0',
value: '0'
},
{
label: '女',
value: '1',
},
value: '1'
}
],
medicalRadio: [
{
label: '有',
value: '0',
value: '0'
},
{
label: '无',
value: '1',
},
value: '1'
}
],
maxDate: beforeDate.getBeforeYear(18), //投保人出生日期可选最大值
insuredMaxDate: beforeDate.getBeforeDays(28), //被保人出生日期可选最大值
filterMaxDate:beforeDate.getBeforeYear(-2),
filterMaxDate: beforeDate.getBeforeYear(-2),
popupShow: false,
areaShow: false, //省级联动
homeShow: false, //家庭地址联动
@@ -499,8 +582,11 @@ export default {
relationToInsured: '1',
idType: '1', //证件类型
idNo: '', //证件号码
certiexpiredate: '', //证件到期时间
effectiveDateType: false, //是否长期
occupationCode: '', //职业代码
occupationName: '', //职业名称
averageAnnualIncome: '', //平均年收入
lifeGrade: '', //寿险等级
healthGrade: '', //健康等级
nativeplace: '1', //国家地区
@@ -511,7 +597,7 @@ export default {
homeName: '', //联系地址
homeAddress: '', //详细地址
mobile: '', //移动电话
email: '', //电子邮箱
email: '' //电子邮箱
// effectiveDate: '' //指定生效日期
},
//被保人信息
@@ -519,10 +605,13 @@ export default {
name: '', // 被保人姓名
idType: '1', //被保人证件类型
idNo: '', //被保人证件号码
certiexpiredate: '', //证件到期时间
effectiveDateType: false, //是否长期
sex: '0', //被保人性别
birthday: '', //被保人出生日期
occupationCode: '', //职业代码
occupationName: '', //职业名称
averageAnnualIncome: '', //平均年收入
lifeGrade: '', //寿险等级
healthGrade: '', //健康等级
nativeplace: '', //国家地区
@@ -533,7 +622,7 @@ export default {
homeName: '', //联系地址
homeAddress: '', //详细地址
mobile: '', //移动电话
email: '', //电子邮箱
email: '' //电子邮箱
},
selectUser: '',
areaList: areaList,
@@ -550,7 +639,7 @@ export default {
areaCode: '450101',
occupationCode: '',
occupationName: '',
itemProductDTOS: JSON.parse(CacheUtils.getLocItem('itemProductDTOS')), //
itemProductDTOS: JSON.parse(CacheUtils.getLocItem('itemProductDTOS')) //
}
},
created() {
@@ -591,6 +680,25 @@ export default {
}
},
methods: {
//长期状态改变时
effectiveDataTypeChange(val) {
//勾选长期状态时,证件截止日期置空
if (val) {
this.userInfo.certiexpiredate = ''
this.certiexpiredateRequired = false
} else {
this.certiexpiredateRequired = true
}
},
//长期状态改变时--被保人
effectiveDataTypeChangeInsured(val) {
if (val) {
this.insuredInfo.certiexpiredate = ''
this.certiexpiredateRequiredInsured = false
} else {
this.certiexpiredateRequiredInsured = true
}
},
/**
* @description:
* @param {*} data
@@ -602,8 +710,8 @@ export default {
flag: 'navigation',
extra: {
title: '职业类别',
hiddenRight: '1',
},
hiddenRight: '1'
}
})
this.occupationShowPicker = false
if (this.insureType === '1') {
@@ -644,11 +752,11 @@ export default {
type: '1',
orderDTO: {
orderInfoDTO: {
orderNo: orderNo,
},
},
orderNo: orderNo
}
}
}
underWrite(data).then((res) => {
underWrite(data).then(res => {
if (res.result == '0') {
this.$toast.clear()
window.localStorage.setItem('underWriteData', JSON.stringify(res))
@@ -665,11 +773,11 @@ export default {
flag: 'h5',
extra: {
url: location.origin + `/#/cardList/pay`,
forbidSwipeBack: 1,
forbidSwipeBack: 1
},
routerInfo: {
path: `/cardList/pay`,
},
path: `/cardList/pay`
}
})
} else {
window.localStorage.setItem('uwResult', res.uwResult)
@@ -678,11 +786,11 @@ export default {
flag: 'h5',
extra: {
url: location.origin + '/#/cardList/result',
backToFirst: '1',
backToFirst: '1'
},
routerInfo: {
path: '/cardList/result',
},
path: '/cardList/result'
}
})
}
return true
@@ -701,11 +809,11 @@ export default {
extra: {
title: name,
// url: 'http://47.96.143.111/pdfjs/web/viewer.html?file=' + url //测试代码
url: location.origin + '/#/cardList/ShowPDF',
url: location.origin + '/#/cardList/ShowPDF'
},
routerInfo: {
path: '/cardList/ShowPDF',
},
path: '/cardList/ShowPDF'
}
})
},
//监听名字变化
@@ -754,8 +862,8 @@ export default {
flag: 'navigation',
extra: {
title: '投被保人信息',
hiddenRight: '1',
},
hiddenRight: '1'
}
})
if (this.currentPopupIndex == 1) {
if (this.selectUser == '1') {
@@ -786,7 +894,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
@@ -807,16 +915,16 @@ export default {
this.pickerIndex = this.insuredInfo.nativeplace - 1 > 0 ? this.insuredInfo.nativeplace - 1 : 0
} else if (pickerType == '10') {
this.columns = []
this.trialList.forEach((item) => {
this.trialList.forEach(item => {
if (item.productCode === 'GFRS_M0022') {
this.columns.push({
id: this.proSchemeCode,
text: this.proScheme,
text: this.proScheme
})
} else {
this.columns.push({
id: item.proSchemeCode,
text: item.proScheme,
text: item.proScheme
})
}
})
@@ -826,17 +934,21 @@ export default {
},
//确认选择字段
onConfirm(value) {
console.log(value, 'value')
this.popupShow = false
if (this.pickerType == '1') {
this.userInfo.nativeplace = value.id
} else if (this.pickerType == '2') {
// //身份证以外的证件类型可以使用长期
// if (value.id != '1') {
// this.effectiveDateTypeAble = false
// } else {
// let age = utilsAge.getAge(this.userInfo.birthday, new Date())
// this.effectiveDateTypeAble = !(age >= 45)
// }
//身份证以外的证件类型可以使用长期
//value.id 1 居民身份证 todo
if (value.id != '1') {
this.effectiveDateTypeAble = false
} else {
if (this.userInfo.birthday) {
let age = utilsAge.getAge(this.userInfo.birthday, new Date())
this.effectiveDateTypeAble = !(age >= 45)
}
}
this.userInfo.idType = value.id
} else if (this.pickerType == '3') {
this.userInfo.degree = value.id
@@ -868,6 +980,16 @@ export default {
}
}
} else if (this.pickerType == '22') {
//身份证以外的证件类型可以使用长期
//value.id 1 居民身份证 todo
if (value.id != '1') {
this.effectiveDateTypeAbleInsured = false
} else {
if (this.userInfo.birthday) {
let age = utilsAge.getAge(this.userInfo.birthday, new Date())
this.effectiveDateTypeAbleInsured = !(age >= 45)
}
}
this.insuredInfo.idType = value.id
}
},
@@ -904,6 +1026,7 @@ export default {
this.$refs.certiexpiredate.date = ''
return
}
this.userInfo.effectiveDateType = false
//如果录入日期早于当前日期
if (Date.parse(val) < Date.parse(new Date())) {
this.userInfo.certiexpiredate = ''
@@ -992,6 +1115,26 @@ export default {
this.productDate = currentData + '0时至' + productDateTime + '24时止'
}
break
case '7':
{
console.log('证件截止日期')
//被保人--证件截止日期
//如果已经勾选了长期
if (this.insuredInfo.effectiveDateType) {
//清空数据并返回
this.insuredInfo.certiexpiredate = ''
this.$refs.certiexpiredate.date = ''
return
}
this.insuredInfo.effectiveDateType = false
//如果录入日期早于当前日期
if (Date.parse(val) < Date.parse(new Date())) {
this.insuredInfo.certiexpiredate = ''
this.$refs.certiexpiredate.date = ''
return this.$toast('您的证件已过期')
}
}
break
}
},
//选择客户
@@ -1010,8 +1153,8 @@ export default {
flag: 'navigation',
extra: {
title: '投被保人信息',
hiddenRight: '1',
},
hiddenRight: '1'
}
})
if (this.selectUser == '0') {
let { customerName, customerSex } = data
@@ -1023,6 +1166,11 @@ export default {
this.userInfo.idType = data.customerIdType //证件类型
this.userInfo.idNo = data.customerIdNumber //证件类别
}
if (data.idEffectEndDate == '9999-01-01') {
this.userInfo.effectiveDateType = true //是否长期
} else {
this.userInfo.certiexpiredate = data.idEffectEndDate //证件截止日期
}
this.userInfo.email = data.email //邮箱
this.userInfo.mobile = data.customerPhone //移动电话
@@ -1039,10 +1187,10 @@ export default {
this.userInfo.healthGrade = data.healthGrade
this.userInfo.nativeplace = data.country
this.userInfo.marriage = data.marryStatus
// 计算年龄
// let age = utilsAge.getAge(this.userInfo.birthday, new Date())
let age = utilsAge.getAge(this.userInfo.birthday, new Date())
// 长期按钮是否禁用
this.effectiveDateTypeAble = age <= 45
this.getRelatedData(this.userInfo.idNo, '1')
} else if (this.selectUser == '1') {
let { customerName, customerSex } = data
@@ -1054,7 +1202,11 @@ export default {
this.insuredInfo.idType = data.customerIdType //证件类型
this.insuredInfo.idNo = data.customerIdNumber //证件类别
}
if (data.idEffectEndDate == '9999-01-01') {
this.insuredInfo.effectiveDateType = true //是否长期
} else {
this.insuredInfo.certiexpiredate = data.idEffectEndDate //证件截止日期
}
this.insuredInfo.email = data.email //邮箱
this.insuredInfo.mobile = data.customerPhone //移动电话
this.insuredInfo.homeProvince = data.homeProvince //家庭省
@@ -1071,11 +1223,9 @@ export default {
this.insuredInfo.nativeplace = data.country
this.insuredInfo.marriage = data.marryStatus
// 计算年龄
// let age = utilsAge.getAge(this.userInfo.birthday, new Date())
// 计算年龄
// let age = utilsAge.getAge(this.userInfo.birthday, new Date())
let age = utilsAge.getAge(this.insuredInfo.birthday, new Date())
// 长期按钮是否禁用
this.effectiveDateTypeAbleInsured = age <= 45
this.getRelatedData(this.insuredInfo.idNo, '2')
}
// console.log(data, val)
@@ -1088,7 +1238,7 @@ export default {
if (this.userInfo.relationToInsured == 1) {
Object.assign(this.insuredInfo, this.userInfo)
}
this.$validator.validate().then((valid) => {
this.$validator.validate().then(valid => {
if (true === valid) {
// localStorage.chooseProductCodesNew = localStorage.chooseProductCodes
//投保人校验
@@ -1181,9 +1331,19 @@ export default {
console.log('证件号码校验有误')
return this.$toast('您填写的证件号码有误')
}
if (age < 46 && this.userInfo.effectiveDateType == true) {
return this.$toast('证件有效期错误年龄小于46周岁的公民身份证有效期不能为长期')
}
// 年龄在 16-25 周岁之间
if (age >= 16 && age <= 25) {
if (age <= 15) {
if (Date.parse(this.userInfo.certiexpiredate) - Date.parse(new Date()) > Date.parse('1975-01-01')) {
this.userInfo.certiexpiredate = ''
this.$refs.certiexpiredate.date = ''
// this.effectiveDateTypeAble = true
return this.$toast('证件有效期错误未满16周岁的公民身份证有效期应小于等于5年')
}
//年龄在 16-25 周岁之间
} else if (age >= 16 && age <= 25) {
console.log('年龄在16-25周岁之间')
if (Date.parse(this.userInfo.certiexpiredate) - Date.parse(new Date()) > Date.parse('1980-01-01')) {
this.userInfo.certiexpiredate = ''
@@ -1247,14 +1407,25 @@ export default {
console.log('证件号码校验有误')
return this.$toast('您填写的证件号码有误')
}
if (age < 46 && this.insuredInfo.effectiveDateType == true) {
return this.$toast('证件有效期错误年龄小于46周岁的公民身份证有效期不能为长期')
}
// 年龄在 16-25 周岁之间
if (insuredAge >= 16 && insuredAge <= 25) {
if (insuredAge <= 15) {
if (Date.parse(this.insuredInfo.certiexpiredate) - Date.parse(new Date()) > Date.parse('1975-01-01')) {
this.insuredInfo.certiexpiredate = ''
this.$refs.certiexpiredate.date = ''
// this.effectiveDateTypeAble = true
return this.$toast('证件有效期错误未满16周岁的公民身份证有效期应小于等于5年')
}
//年龄在 16-25 周岁之间
} else if (insuredAge >= 16 && insuredAge <= 25) {
console.log('年龄在16-25周岁之间')
if (Date.parse(this.insuredInfo.certiexpiredate) - Date.parse(new Date()) > Date.parse('1980-01-01')) {
this.insuredInfo.certiexpiredate = ''
this.$refs.certiexpiredate.date = ''
this.effectiveDateTypeAble = true
this.certiexpiredateRequiredInsured = true
return this.$toast('证件有效期不正常16周岁至25周岁公民身份证有效期应小于等于10年')
}
//年龄在 26-45 周岁之间
@@ -1262,7 +1433,7 @@ export default {
if (Date.parse(this.insuredInfo.certiexpiredate) - Date.parse(new Date()) > Date.parse('1990-01-01')) {
this.insuredInfo.certiexpiredate = ''
this.$refs.certiexpiredate.date = ''
this.effectiveDateTypeAble = true
this.certiexpiredateRequiredInsured = true
return this.$toast('证件有效期不正常26周岁至45周岁公民身份证有效期应小于等于20年')
}
}
@@ -1349,11 +1520,11 @@ export default {
orderDTO: {
orderInfoDTO: {
bnfFlag: '0',
supportBank: '0',
supportBank: '0'
},
appntDTO: this.userInfo,
insuredDTOs: [this.insuredInfo],
},
insuredDTOs: [this.insuredInfo]
}
}
//组装险种提交数据
@@ -1380,7 +1551,7 @@ export default {
proScheme: this.proScheme,
proSchemeCode: this.proSchemeCode,
insuYear: insuYearDate.insuYear,
insuYearFlag: insuYearDate.insuYearFlag,
insuYearFlag: insuYearDate.insuYearFlag
}
if (item.hasPredictTransferPrem && item.hasPredictTransferPrem === '0') {
//增加万能险 预计转入保费校验
@@ -1497,7 +1668,7 @@ export default {
}
//如果证件校验不通过,恢复默认值
if (idToData(val).text) {
;[this.userInfo.idNo, this.userInfo.sex, this.userInfo.birthday] = ['', '0', '']
;[this.userInfo.idNo, this.userInfo.sex, this.userInfo.birthday, this.effectiveDateTypeAble] = ['', '0', '', false]
return this.$toast(idToData(val).text)
}
this.userInfo.birthday = idToData(val).birthday
@@ -1509,13 +1680,13 @@ export default {
}
//如果证件校验不通过,恢复默认值
if (idToData(val).text) {
;[this.insuredInfo.idNo, this.insuredInfo.sex, this.insuredInfo.birthday] = ['', '0', '']
;[this.insuredInfo.idNo, this.insuredInfo.sex, this.insuredInfo.birthday, this.effectiveDateTypeAbleInsured] = ['', '0', '', false]
return this.$toast(idToData(val).text)
}
this.insuredInfo.birthday = idToData(val).birthday
this.insuredInfo.sex = idToData(val).sex
}
},
}
},
// beforeDestroy() {
// //清理计时器
@@ -1550,7 +1721,7 @@ export default {
homeName: '', //联系地址
homeAddress: '', //详细地址
mobile: '', //移动电话
email: '', //电子邮箱
email: '' //电子邮箱
}
if (newV === 2) {
this.userInfo.sex === '0' ? (this.insuredInfo.sex = '1') : (this.insuredInfo.sex = '0')
@@ -1558,7 +1729,7 @@ export default {
}
},
immediate: true,
deep: true,
deep: true
},
'userInfo.sex': {
handler(newV) {
@@ -1567,9 +1738,9 @@ export default {
}
},
immediate: true,
deep: true,
},
},
deep: true
}
}
}
</script>
<style lang="scss">

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff