feature/GFRS-2215【待完成】重新投保--修改列表保单号字段,修改重新投保声明文案,添加附加险判断,字段显示修改,添加查询接口,修改保单页查询接口查询与缓存判断,修改附加险B款判断方式--提交人庞兴月

This commit is contained in:
pangxingyue
2021-03-31 15:00:26 +08:00
parent 557cac389e
commit 7ebec4fcb0
4 changed files with 174 additions and 110 deletions

View File

@@ -1,7 +1,7 @@
<!--
* @Author: PangXingYue
* @Date: 2021-03-22 09:46:16
* @LastEditTime: 2021-03-22 14:02:35
* @LastEditTime: 2021-03-31 13:13:43
* @LastEditors: PangXingYue
* @Description:
* @FilePath: \ebiz-h5\src\components\ebiz\insureAgain\Order.vue
@@ -9,7 +9,7 @@
<template>
<div class="order">
<slot name="header">
<p class="title pt10 pb10">保单号: 23042834929832</p>
<p class="title pt10 pb10">保单号: {{ order.policyNo }}</p>
</slot>
<div class="content p15">
<p class="name mb8">

View File

@@ -9,10 +9,11 @@
<InfoCell label="证件类型">{{userInfo.idType | idToText('insuredIdType')}}</InfoCell>
<InfoCell label="出生日期">{{userInfo.birthday}}</InfoCell>
<InfoCell label="证件截止日期">{{userInfo.certiexpiredate}}</InfoCell>
<select-radio v-validate="'required'" label="性别" name="性别" required :radios="sexRadio" :value.sync="userInfo.sex" :disabled="true"></select-radio>
<select-radio v-validate="'required'" label="性别" name="性别" required :radios="sexRadio" :value.sync="userInfo.sex"
:disabled="true"></select-radio>
<InfoCell label="国籍">{{userInfo.nativeplace | idToText('nativeplace')}}</InfoCell>
<van-field :value="userInfo.marriageStatus" required label="婚姻状况" name="婚姻状况" v-validate="'required'"
right-icon="arrow" placeholder="请选择" @click="toSelect('10','','appntDTO')" @focus="noBomBox" />
<van-field :value="userInfo.marriageStatus" required label="婚姻状况" name="婚姻状况" v-validate="'required'" right-icon="arrow"
placeholder="请选择" @click="toSelect('10','','appntDTO')" @focus="noBomBox" />
<InfoCell label="职业类别">{{userInfo.occupationName}}</InfoCell>
<InfoCell label="移动电话">{{userInfo.mobile}}</InfoCell>
<InfoCell label="电子邮箱">{{userInfo.email}}</InfoCell>
@@ -20,7 +21,8 @@
<van-button class="mr10" size="small" type="danger" round></van-button>
<van-button plain size="small" type="danger" round></van-button>
</InfoCell> -->
<select-radio v-validate="'required'" :radios="medicalRadio" label="有无社保" name="有无社保" required :value.sync="userInfo.medical" :disabled="true"></select-radio>
<select-radio v-validate="'required'" :radios="medicalRadio" label="有无社保" name="有无社保" required :value.sync="userInfo.medical"
:disabled="true"></select-radio>
<InfoCell label="税收居民身份">{{userInfo.taxResidentId | idToText('taxIdentity')}}</InfoCell>
<InfoCell label="联系地址">{{homeName}}</InfoCell>
<InfoCell label="详细联系地址">{{userInfo.homeAddress}}</InfoCell>
@@ -33,10 +35,11 @@
<InfoCell label="证件类型">{{userInfo.idType | idToText('idType')}}</InfoCell>
<InfoCell label="证件号码">{{insuredPersonInfo.idNo}}</InfoCell>
<InfoCell label="出生日期">{{insuredPersonInfo.birthday}}</InfoCell>
<select-radio required :radios="sexRadio" label="性别" name="性别" v-validate="'required'" :value.sync="insuredPersonInfo.sex" :disabled="true"></select-radio>
<select-radio required :radios="sexRadio" label="性别" name="性别" v-validate="'required'" :value.sync="insuredPersonInfo.sex"
:disabled="true"></select-radio>
<InfoCell label="国籍">{{insuredPersonInfo.nativeplace | idToText('nativeplace')}}</InfoCell>
<van-field :value="insuredPersonInfo.marriageStatus" required label="婚姻状况" name="婚姻状况" v-validate="'required'"
right-icon="arrow" placeholder="请选择" @click="toSelect('10','','insuredDTOs')" @focus="noBomBox"/>
right-icon="arrow" placeholder="请选择" @click="toSelect('10','','insuredDTOs')" @focus="noBomBox" />
<InfoCell label="职业类别">{{insuredPersonInfo.occupationCode}}</InfoCell>
<select-radio :radios="medicalRadio" label="有无社保" name="有无社保" v-validate="'required'" required :value.sync="insuredPersonInfo.medical"
:disabled="true"></select-radio>
@@ -66,8 +69,8 @@
:value.sync="item.sex"></select-radio>
<van-field :value="item.nativeplace | idToText('nativeplace')" label="国籍" name="国籍" required v-validate="'required'"
right-icon="arrow" placeholder="请选择" @click="toSelect('1','','bnfDTOs',index)" @focus="noBomBox" />
<van-field :value="item.marriageStatus" required label="婚姻状况" name="婚姻状况" v-validate="'required'"
right-icon="arrow" placeholder="请选择" @click="toSelect('10','','bnfDTOs',index)" @focus="noBomBox" />
<van-field :value="item.marriageStatus" required label="婚姻状况" name="婚姻状况" v-validate="'required'" right-icon="arrow"
placeholder="请选择" @click="toSelect('10','','bnfDTOs',index)" @focus="noBomBox" />
<van-field v-model="item.mobile" clearable label="移动电话" name="移动电话" required placeholder="请输入" v-validate="'required|mobileLength11|mobileStartWith1|mobile'"
maxlength="11" />
<van-field v-model="bnfHomeName[index]" readonly label="联系地址" name="联系地址" required right-icon="arrow"
@@ -86,16 +89,10 @@
</template>
<InfoCell label="账户名称">{{accountPersonInfo.accountName}}</InfoCell>
<InfoCell label="开户银行">{{accountPersonInfo.bankName}}</InfoCell>
<InfoCell label="银行账号">{{accountPersonInfo.cardBookCode}}</InfoCell>
<InfoCell label="银行账号">{{accountPersonInfo.cardBookCode}}</InfoCell>
</DropdownBox>
<van-field
:value="userInfo.idType | idToText('insuredIdType')"
v-validate="'required'"
required
label="证件类型"
name="证件类型"
placeholder="请选择"
/>
<van-field :value="userInfo.idType | idToText('insuredIdType')" v-validate="'required'" required label="证件类型" name="证件类型"
placeholder="请选择" />
<van-button type="danger" class="bottom-btn" v-no-more-click="1000" @click="nextStep">下一步</van-button>
<!-- 字段选择 -->
<van-popup v-model="popupShow" position="bottom">
@@ -176,15 +173,15 @@ export default {
bnfIndex: '', //受益人索引
homeShow: false, //联系地址搜索栏显示
areaLists: areaLists, //地址信息
occupationShowPicker: false, //职业类别
occupationName: '',
occupationCode: '',
occupationShowPicker: false, //职业类别
occupationName: '',
occupationCode: ''
}
},
created() {
this.getReAppntPolicy()
},
mounted() {
mounted() {
setTimeout(() => {
window.EWebBridge.webCallAppInJs('webview_left_button', {
intercept: '1'
@@ -192,7 +189,7 @@ export default {
}, 100)
window.appCallBack = this.appCallBack
},
methods: {
methods: {
appCallBack(data) {
if (data.trigger == 'left_button_click') {
this.$jump({
@@ -206,56 +203,62 @@ export default {
})
}
},
getReAppntPolicy() {
getReAppntPolicy({ policyNo: CacheUtils.getLocItem('policyNo') }).then(res => {
async getReAppntPolicy() {
var res = JSON.parse(CacheUtils.getLocItem('orderDetailData'))
if (!res) {
console.log('==================orderDetailData不存在=========================')
res = await getReAppntPolicy({ policyNo: CacheUtils.getLocItem('policyNo') })
if (res.result == 0) {
//投保人信息返显
CacheUtils.setLocItem('orderDetailData', JSON.stringify(res))
this.userInfo = res.orderDTO.appntDTO
this.setCustomerMarriage(res.orderDTO.appntDTO.marriage)
//是否长期
this.userInfo.effectiveDateType = res.orderDTO.appntDTO.effectiveDateType == 'false' ? false : true
//有无社保
this.userInfo.medical = res.orderDTO.appntDTO.medical
this.$utils.intLocalStorage(res)
this.homeName = getAreaName([{ code: this.userInfo.homeProvince }, { code: this.userInfo.homeCity }, { code: this.userInfo.homeArea }])
// 被投保人信息
this.insuredPersonInfo = res.orderDTO.insuredDTOs[0]
this.insuredPersonInfo.relationToAppnt = this.insuredPersonInfo.relationToMainInsured
if (this.insuredPersonInfo.homeProvince.length) {
this.insuredHomeName = getAreaName([
{ code: this.insuredPersonInfo.homeProvince },
{ code: this.insuredPersonInfo.homeCity },
{ code: this.insuredPersonInfo.homeArea }
])
}
//受益人信息
//bnfFlag 1-法定受益人 0-指定受益人
this.bnfPersonInfo = res.orderDTO.insuredDTOs[0]['bnfDTOs']
if (this.bnfPersonInfo[0]['bnftype'] === '1') {
this.bnftype = '1'
this.bnfPersonInfo.forEach((item, index) => {
this.bnfHomeName[index] = getAreaName([{ code: item.province }, { code: item.city }, { code: item.area }])
})
} else {
this.bnftype = '0'
this.insuredPersonInfo['bnfDTOs'] = []
}
// 账户信息
this.accountPersonInfo = res.orderDTO.orderAccountDTO
this.accountPersonInfo.bankCode = this.accountPersonInfo.bankName
dataDic['edorBankType'].some(item => {
if (item.id == this.accountPersonInfo.bankName) {
this.accountPersonInfo.bankName = item.text
}
})
this.insuredPersonInfo.homeAddress = '汉字汉字汉字汉字123123'
}
})
this.$toast(res.resultMessage)
return false;
}
}
//投保人信息返显
this.userInfo = res.orderDTO.appntDTO
this.setCustomerMarriage(res.orderDTO.appntDTO.marriage)
//是否长期
this.userInfo.effectiveDateType = res.orderDTO.appntDTO.effectiveDateType == 'false' ? false : true
//有无社保
this.userInfo.medical = res.orderDTO.appntDTO.medical
this.$utils.intLocalStorage(res)
this.homeName = getAreaName([{ code: this.userInfo.homeProvince }, { code: this.userInfo.homeCity }, { code: this.userInfo.homeArea }])
// 被投保人信息
this.insuredPersonInfo = res.orderDTO.insuredDTOs[0]
this.insuredPersonInfo.relationToAppnt = this.insuredPersonInfo.relationToMainInsured
if (this.insuredPersonInfo.homeProvince.length) {
this.insuredHomeName = getAreaName([
{ code: this.insuredPersonInfo.homeProvince },
{ code: this.insuredPersonInfo.homeCity },
{ code: this.insuredPersonInfo.homeArea }
])
}
//受益人信息
//bnfFlag 1-法定受益人 0-指定受益人
this.bnfPersonInfo = res.orderDTO.insuredDTOs[0]['bnfDTOs']
if (this.bnfPersonInfo[0]['bnftype'] === '1') {
this.bnftype = '1'
this.bnfPersonInfo.forEach((item, index) => {
this.bnfHomeName[index] = getAreaName([{ code: item.province }, { code: item.city }, { code: item.area }])
})
} else {
this.bnftype = '0'
this.insuredPersonInfo['bnfDTOs'] = []
}
// 账户信息
this.accountPersonInfo = res.orderDTO.orderAccountDTO
this.accountPersonInfo.bankCode = this.accountPersonInfo.bankName
dataDic['edorBankType'].some(item => {
if (item.id == this.accountPersonInfo.bankName) {
this.accountPersonInfo.bankName = item.text
}
})
this.insuredPersonInfo.homeAddress = '汉字汉字汉字汉字123123'
},
setCustomerMarriage(marriageCode) {
@@ -307,16 +310,16 @@ export default {
}
})
break
case '10':
case '10':
this.columns = DataDictionary.marriage
break
}
},
noBomBox() {
document.activeElement.blur();
document.activeElement.blur()
},
//确认选择字段
onConfirm(value) {
onConfirm(value) {
this.popupShow = false
if (this.pickerType == '1') {
if (this.userType === 'appntDTO') {
@@ -454,7 +457,7 @@ export default {
}
},
/**
* @description:
* @description:
* @param {*} index
* @return {*}
*/
@@ -465,7 +468,7 @@ export default {
specialRead(payload) {
this.isSpecialRead = payload
},
async nextStep(page) {
async nextStep(page) {
let valid = await this.$validator.validate()
if (true === valid) {
for (let status of DataDictionary.marriage) {
@@ -476,9 +479,9 @@ export default {
this.save()
} else {
return this.$toast(this.$validator.errors.all()[0])
}
}
},
async save() {
async save() {
let params = {
orderType: 'RE_APPNT_ORDER',
orderDTO: {
@@ -488,7 +491,7 @@ export default {
isElecCont: this.isElecCont,
supportBank: '0',
bnfFlag: this.bnftype
},
},
appntDTO: this.userInfo,
insuredDTOs: [this.insuredPersonInfo],
orderAccountDTO: this.accountPersonInfo
@@ -496,27 +499,27 @@ export default {
}
let str = ''
let resultData = await commitReOrder(params)
if (resultData.result == 0) {
CacheUtils.setLocItem('orderNo', resultData.content.orderNo)
if (resultData.result == 0) {
CacheUtils.setLocItem('orderNo', resultData.content.orderNo)
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/insureAgain/ProductInformation`
},
routerInfo: {
path: `/insureAgain/ProductInformation`
}
flag: 'h5',
extra: {
url: location.origin + `/#/insureAgain/ProductInformation`
},
routerInfo: {
path: `/insureAgain/ProductInformation`
}
})
} else {
this.$toast(resultData.resultMessage)
}
},
/**
* @description:
* @description:
* @param {*} data
* @return {*}
*/
chooseOccupation(data) {
chooseOccupation(data) {
let { code, name, healthGrade, lifeGrade } = data
this.$jump({
flag: 'navigation',
@@ -524,22 +527,22 @@ export default {
title: '职业类别',
hiddenRight: '1'
}
})
})
this.occupationShowPicker = false
this.bnfPersonInfo[this.bnfIndex]['occupationName'] = name;
this.bnfPersonInfo[this.bnfIndex]['occupationCode'] = code;
this.bnfPersonInfo[this.bnfIndex]['occupationName'] = name
this.bnfPersonInfo[this.bnfIndex]['occupationCode'] = code
},
/**
* @description:
* @description:
* @param {*}
* @return {*}
*/
openOccupation(index) {
this.occupationShowPicker = !this.occupationShowPicker
this.bnfIndex = index
this.occupationName = this.bnfPersonInfo[this.bnfIndex]['occupationName'];
this.occupationCode = this.bnfPersonInfo[this.bnfIndex]['occupationCode'];
this.occupationName = this.bnfPersonInfo[this.bnfIndex]['occupationName']
this.occupationCode = this.bnfPersonInfo[this.bnfIndex]['occupationCode']
}
}
}

View File

@@ -160,10 +160,10 @@ export default {
}
CacheUtils.setLocItem('productCode', element.riskCode)
this.mainList.push(element)
} else {
if (element.riskName.indexOf('B款') !== -1) {
} else {
if (element.riskCode === 'GFRS_A0008') {
this.checkboxResult.push(element.riskCode)
}
}
this.additionalList.push(element)
}
})

View File

@@ -13,7 +13,7 @@
<Order v-for="(order,index) in NewItems" :key="index" :order="order">
<p v-if="active === 'uncommit'" class="name mb8">
<van-tag plain color="#999999">保单保障日截止日期</van-tag>
<span class="ml5 span">{{ order.cvaliDate }}</span>
<span class="ml5 span">{{ order.expiryDate }}</span>
</p>
<div v-if="active === 'commit'">
<p class="name mb8">
@@ -43,17 +43,57 @@
</van-pull-refresh>
<van-popup v-model="isAgreementShow" position="right" :style="{ height: '100vh', width: '100vw' }">
<ReadingAgreement :needTime="false">
<h3 class="p10">重新投保声明提示</h3>
<p class="pl10">尊敬的{{orderInfo.appntName}}{{orderInfo.appntSex === 0 ? '先生':'女士'}}</p>
<p class="p10">
您好您于保单生效日期投保的保单号为保单号码的国富人寿国富民惠医疗保险2020保单即将到期到期日期详见保单以下简称旧保单为保护您的权益即日起至<期满日后第{{orderInfo.expiryDate}}>期间您可以选择重新投保国富人寿国富民惠医疗保险2020本次申请投保的国富人寿国富民惠医疗保险2020保单以下简称新保单请您仔细阅读以下内容
<h3 class="p10" style="text-align:center">重新投保声明提示</h3>
<p style="text-indent:28px;">尊敬的{{orderInfo.appntName}}{{orderInfo.appntSex === 0 ? '先生':'女士'}}</p>
<div v-if="orderInfo.riskCode !== 'GFRS_A0008'">
<p style="text-indent:28px;">
您好您于{{orderInfo.cvaliDate}}投保的保单号为{{orderInfo.policyNo}}的国富人寿国富民惠医疗保险2020保单即将到期到期日期详见保单以下简称旧保单为保护您的权益即日起至{{orderInfo.expiryDate}}后第60天期间您可以选择重新投保国富人寿国富民惠医疗保险2020本次申请投保的国富人寿国富民惠医疗保险2020保单以下简称新保单请您仔细阅读以下内容
</p>
<p style="text-indent:28px;">
1.国富人寿国富民惠医疗保险2020合同保险期间为一年到期后需要重新投保
</p>
<p style="text-indent:28px;">
2.本次重新投保我们将按照国富人寿国富民惠医疗保险2020费率表中的在上一保险期间届满后60日内申请重新投保时对应的费率计算保费
</p>
<p style="text-indent:28px;">
3.若本次重新投保成功新保单免除等待期
</p>
<p style="text-indent:28px;">
4.本次重新投保仅限于无其他补充告知的情况若您有其他补充告知您的条件不符合本重新投保流程请您联系保单服务专员通过新增投保单进行投保申请
</p>
<p style="text-indent:28px;">
5.若您于旧保单满期前申请重新投保且于满期前成功支付保险费则新保单在旧保单保险期满日对应日的次日零时生效旧保单在保险期满日24时终止若您于旧保单满期后60天包含内重新投保申请且成功支付保险费则新保单于支付次日零时生效旧保单在保险期满日24时终止
</p>
<p style="text-indent:28px;">
6.若您未在旧保单满期后60天包含内申请重新投保则您的重新投保资格将被取消后续您可再次申请投保但新单不再与旧保单关联需重新计算等待期具体详情可咨询保单服务专员
</p>
</p>
</div>
<div v-else>
<p style="text-indent:28px;">
您好您于{{orderInfo.cvaliDate}}投保的保单号为{{orderInfo.policyNo}}的国富人寿国富民惠医疗保险2020保单即将到期到期日期详见保单以下简称旧保单为保护您的权益即日起至{{orderInfo.expiryDate}}后第60天期间您可以选择重新投保国富人寿国富民惠医疗保险2020本次申请投保的国富人寿国富民惠医疗保险2020保单以下简称新保单请您仔细阅读以下内容
</p>
<p style="text-indent:28px;">
1.国富人寿国富民惠医疗保险2020合同保险期间为一年到期后需要重新投保
</p>
<p style="text-indent:28px;">
2.本次重新投保我们将按照国富人寿国富民惠医疗保险2020费率表中的在上一保险期间届满后60日内申请重新投保时对应的费率计算保费
</p>
<p style="text-indent:28px;">
3.若本次重新投保成功新保单免除等待期
</p>
<p style="text-indent:28px;">
4.本次重新投保仅限于无其他补充告知的情况若您有其他补充告知您的条件不符合本重新投保流程请您联系保单服务专员通过新增投保单进行投保申请
</p>
<p style="text-indent:28px;">
5.若您于旧保单满期前申请重新投保且于满期前成功支付保险费则新保单在旧保单保险期满日对应日的次日零时生效旧保单在保险期满日24时终止若您于旧保单满期后60天包含内重新投保申请且成功支付保险费则新保单于支付次日零时生效旧保单在保险期满日24时终止
</p>
<p style="text-indent:28px;">
6.若您未在旧保单满期后60天包含内申请重新投保则您的重新投保资格将被取消后续您可再次申请投保但新单不再与旧保单关联需重新计算等待期具体详情可咨询保单服务专员
</p>
<p style="text-indent:28px;">
7.国富人寿附加住院医疗保险已停售您可选择投保同类产品国富人寿附加住院医疗保险B款我们将按照国富人寿附加住院医疗保险B款费率表中的在上一保险期间届满后60日内申请重新投保时对应的费率计算保费
</p>
</div>
<template #action>
<van-radio-group class="m10" v-model="radio">
<van-radio :name="false">
@@ -78,6 +118,7 @@ import dataDictionary from '@/assets/js/utils/data-dictionary' //根据数据字
import Order from '@/components/ebiz/insureAgain/Order'
import ReadingAgreement from '@/components/ebiz/insureAgain/ReadingAgreement'
import CacheUtils from '@/assets/js/utils/cacheUtils'
import { getReAppntPolicy } from '@/api/ebiz/insureAgain/insureAgain'
export default {
name: 'InsureAgain',
components: {
@@ -202,14 +243,35 @@ export default {
// }
// })
if (order.orderStatus === '38') {
let url = '/insureAgain/ProductInformation';
let url = '/insureAgain/ProductInformation'
} else if (order.orderStatus === '39') {
let url = '/insureAgain/Notification';
let url = '/insureAgain/Notification'
} else if (order.orderStatus === '40') {
let url = '/insureAgain/SignatureConfirmation';
let url = '/insureAgain/SignatureConfirmation'
} else {
getReAppntPolicy({ policyNo: order.policyNo }).then(res => {
if (res.result == 0) {
//投保人信息返显
CacheUtils.setLocItem('orderDetailData', JSON.stringify(res))
let appntDTO = res.orderDTO.appntDTO
let insuredDTOs = res.orderDTO.insuredDTOs[0]
let orderInfoDTO = res.orderDTO.orderInfoDTO
let riskDTOLst = insuredDTOs.riskDTOLst
this.orderInfo.appntName = appntDTO.name
this.orderInfo.cvaliDate = orderInfoDTO.cvaliDate
this.orderInfo.expiryDate = orderInfoDTO.expiryDate
this.orderInfo.riskCode = ''
riskDTOLst.forEach((element, index) => {
if (element.riskCode === 'GFRS_A0008') {
this.orderInfo.riskCode = 'GFRS_A0008'
}
})
} else {
this.$toast(res.resultMessage)
}
})
this.isAgreementShow = true
return false;
return false
}
this.$jump({
@@ -221,7 +283,6 @@ export default {
path: url
}
})
},
uncommitInsureDetail(order) {
CacheUtils.setLocItem('policyNo', order.policyNo)