mirror of
http://112.124.100.131/GFRS/ebiz-h5.git
synced 2025-12-11 07:26:44 +08:00
【new】 保全:受益人变更 页面部分粗略完成,还需优化
This commit is contained in:
@@ -10,6 +10,7 @@ const contactInfo = () => import('@/views/ebiz/preserve/ContactInfo')
|
|||||||
const contacAgreement = () => import('@/views/ebiz/preserve/ContacAgreement')
|
const contacAgreement = () => import('@/views/ebiz/preserve/ContacAgreement')
|
||||||
const contactConfirmation = () => import('@/views/ebiz/preserve/ContactConfirmation')
|
const contactConfirmation = () => import('@/views/ebiz/preserve/ContactConfirmation')
|
||||||
const beneficiaryInfo = () => import('@/views/ebiz/preserve/BeneficiaryInfo')
|
const beneficiaryInfo = () => import('@/views/ebiz/preserve/BeneficiaryInfo')
|
||||||
|
const beneficiaryInfoAdd = () => import('@/views/ebiz/preserve/BeneficiaryInfoAdd')
|
||||||
const beneficiaryConfirmation = () => import('@/views/ebiz/preserve/BeneficiaryConfirmation')
|
const beneficiaryConfirmation = () => import('@/views/ebiz/preserve/BeneficiaryConfirmation')
|
||||||
const surrenderInfo = () => import('@/views/ebiz/preserve/SurrenderInfo')
|
const surrenderInfo = () => import('@/views/ebiz/preserve/SurrenderInfo')
|
||||||
const surrenderConfirmation = () => import('@/views/ebiz/preserve/SurrenderConfirmation')
|
const surrenderConfirmation = () => import('@/views/ebiz/preserve/SurrenderConfirmation')
|
||||||
@@ -70,6 +71,15 @@ export default [
|
|||||||
index: 5
|
index: 5
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/preserve/beneficiaryInfoAdd',
|
||||||
|
name: 'beneficiaryInfoAdd',
|
||||||
|
component: beneficiaryInfoAdd,
|
||||||
|
meta: {
|
||||||
|
title: '指定受益人信息',
|
||||||
|
index: 105
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/preserve/surrenderInfo',
|
path: '/preserve/surrenderInfo',
|
||||||
name: 'surrenderInfo',
|
name: 'surrenderInfo',
|
||||||
|
|||||||
@@ -1 +1,403 @@
|
|||||||
<!--受益人变更-保全代办确认页-->
|
<!--受益人变更-保全代办确认页-->
|
||||||
|
<template>
|
||||||
|
<div class="beneficiary-container">
|
||||||
|
<div h10></div>
|
||||||
|
<div class="fs14 flex justify-content-s pv12 ph15 van-hairline--bottom">
|
||||||
|
<label class="c-gray-dark">被保险人</label>
|
||||||
|
<span class="c-gray-darker">{{ insuredPerson }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="fs14 pv12 ph15 van-hairline--bottom flex">
|
||||||
|
<label class="c-gray-dark">身故受益人</label>
|
||||||
|
<div class="ml20 c-gray-darker">
|
||||||
|
<van-radio-group :disabled="true" v-model="type" class="flex" @change="radioChange">
|
||||||
|
<van-radio name="1">法定受益人</van-radio>
|
||||||
|
<van-radio name="2" class="ml10">指定受益人</van-radio>
|
||||||
|
</van-radio-group>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 受益人列表 -->
|
||||||
|
<div class="fs14 beneficiary-list" v-if="type == 2">
|
||||||
|
<ul>
|
||||||
|
<li class="pv20 ph15 item" v-for="(item, index) in beneficiaries" :key="index">
|
||||||
|
<div class="bg-white p15">
|
||||||
|
<div class="flex justify-content-s c-gray-darker">
|
||||||
|
<div>
|
||||||
|
<img
|
||||||
|
src="@/assets/images/bnf_avatar.png"
|
||||||
|
width="40"
|
||||||
|
height="40"
|
||||||
|
class="radius50 v-middle"
|
||||||
|
/>
|
||||||
|
<span class="ml10 c-gray-base">{{ item.name }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="mt20">
|
||||||
|
<span class="c-gray-dark">是被保险人的</span>
|
||||||
|
<span class="ml20">{{ item.relationToInsured | idToText('relationToAppnt') }}</span>
|
||||||
|
</p>
|
||||||
|
<p class="mt10">
|
||||||
|
<span class="c-gray-dark">受益份额</span>
|
||||||
|
<span class="ml35">{{ item.bnfLot }}%</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- 短信验证 -->
|
||||||
|
<!-- cancelButtonColor="#4FC6B3" -->
|
||||||
|
<van-dialog
|
||||||
|
v-model="show"
|
||||||
|
title="短信确认"
|
||||||
|
show-cancel-button
|
||||||
|
class="dialog-delete"
|
||||||
|
cancelButtonColor="#4FC6B3"
|
||||||
|
confirmButtonColor="#FFFFFF"
|
||||||
|
@confirm="authConfirm(authCode)"
|
||||||
|
@cancel="clearTimer"
|
||||||
|
>
|
||||||
|
<p class="p10 fs14">向此手机发送验证码确认用户身份</p>
|
||||||
|
<p class="p10 fs14" style="border-bottom: 1px solid #ebedf0;">{{ '17512341234' | Mask }}</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">
|
||||||
|
{{ codeDisabled ? `${countDown}s后重新获取` : '获取验证码' }}
|
||||||
|
</van-button>
|
||||||
|
</van-cell-group>
|
||||||
|
</van-dialog>
|
||||||
|
<van-button type="danger" class="bottom-btn" @click="showAuth">提交申请</van-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { RadioGroup, Radio, Icon, Dialog, Field, CellGroup } from 'vant'
|
||||||
|
import dataDictionary from '@/assets/js/utils/data-dictionary'
|
||||||
|
import { saveOrUpdateOrderInfo, getOrderDetail, getAuthCode } from '@/api/ebiz/sale/sale'
|
||||||
|
export default {
|
||||||
|
name: 'beneficiary',
|
||||||
|
components: {
|
||||||
|
[RadioGroup.name]: RadioGroup,
|
||||||
|
[Radio.name]: Radio,
|
||||||
|
[Field.name]: Field,
|
||||||
|
[CellGroup.name]: CellGroup,
|
||||||
|
[Icon.name]: Icon,
|
||||||
|
[Dialog.name]: Dialog
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
type: '1',
|
||||||
|
show: false, // 获取短信验证码
|
||||||
|
codeDisabled: false, // 获取验证码按钮是否禁用
|
||||||
|
insuredPerson: '', //被保险人
|
||||||
|
isAssign: false, // 是否指定受益人
|
||||||
|
timeId: null, // 计时器ID
|
||||||
|
countDown: 60, // 倒计时
|
||||||
|
authCode: '', // 验证码
|
||||||
|
beneficiaries: [
|
||||||
|
// {
|
||||||
|
// name: '陈明',
|
||||||
|
// relationToAppnt: '1',
|
||||||
|
// beneRatio: '99'
|
||||||
|
// }
|
||||||
|
], // 指定受益人列表
|
||||||
|
bnfFlag: '0', // 受益人类型
|
||||||
|
bnfType: '0' // 0 身故受益人 1 身前受益人
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
// 是否从添加指定受益人页面跳转
|
||||||
|
if (localStorage.fromAddBeneficiaryInfo) {
|
||||||
|
this.type = '2'
|
||||||
|
this.beneficiaries = this.beneficiaries.concat(JSON.parse(localStorage.beneficiaryInfo))
|
||||||
|
this.type = '2'
|
||||||
|
console.log(this.beneficiaries)
|
||||||
|
}
|
||||||
|
//如果是从编辑进来
|
||||||
|
if (this.$route.query.edit) {
|
||||||
|
getOrderDetail({ orderNo: localStorage.orderNo }).then(res => {
|
||||||
|
if (res.result == 0) {
|
||||||
|
this.$utils.intLocalStorage(res)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.insuredPerson = JSON.parse(localStorage.saleInsuredPersonInfo).name
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// EWebBridge.webCallAppInJs('webview_left_button', {
|
||||||
|
// intercept: '1' //是否拦截原生返回事件 1是 其他否
|
||||||
|
// })
|
||||||
|
// window.appCallBack = this.appCallBack
|
||||||
|
document.body.style.backgroundColor = '#fff'
|
||||||
|
},
|
||||||
|
beforeRouteLeave(to, from, next) {
|
||||||
|
document.body.style.backgroundColor = ''
|
||||||
|
next()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// appCallBack() {
|
||||||
|
// this.$jump({
|
||||||
|
// flag: 'goBack',
|
||||||
|
// extra: {
|
||||||
|
// refresh: '1', //是否返回后刷新0:否,1:是
|
||||||
|
// index: '-1'
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
// 显示验证码 van-dialog
|
||||||
|
showAuth() {
|
||||||
|
this.show = true
|
||||||
|
},
|
||||||
|
//告知信息
|
||||||
|
nextStep() {
|
||||||
|
if (this.type == 2 && this.beneficiaries.length == 0) {
|
||||||
|
this.$toast('受益人列表不能为空')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
// 获取短信验证码
|
||||||
|
getAuthCode() {
|
||||||
|
this.codeDisabled = true
|
||||||
|
//倒计时
|
||||||
|
this.timeId = setInterval(() => {
|
||||||
|
this.countDown--
|
||||||
|
if (this.countDown <= 0) {
|
||||||
|
window.clearInterval(this.timeId)
|
||||||
|
this.codeDisabled = false
|
||||||
|
this.countDown = 60
|
||||||
|
}
|
||||||
|
}, 1000)
|
||||||
|
|
||||||
|
getAuthCode({
|
||||||
|
operateType: 'appntInfoEntry',
|
||||||
|
sessionId: '',
|
||||||
|
validateCode: '',
|
||||||
|
operateCode: this.customerMobile,
|
||||||
|
system: '',
|
||||||
|
operateCodeType: '0'
|
||||||
|
}).then(res => {
|
||||||
|
if (res.result == 0) {
|
||||||
|
this.sessionId = res.sessionId
|
||||||
|
} else {
|
||||||
|
this.$toast(res.resultMessage)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 验证码确认事件
|
||||||
|
async authConfirm() {
|
||||||
|
//清理计时器
|
||||||
|
this.clearTimer()
|
||||||
|
// this.$dialog
|
||||||
|
// .alert({
|
||||||
|
// title: '提示',
|
||||||
|
// className: 'dialog-alert',
|
||||||
|
// message: '您所有保单的相应信息均将变更',
|
||||||
|
// confirmButtonColor: '#FFFFFF',
|
||||||
|
// })
|
||||||
|
// .then(() => {
|
||||||
|
// this.changeSubmit()
|
||||||
|
// })
|
||||||
|
this.changeSubmit()
|
||||||
|
},
|
||||||
|
// 清理计时器
|
||||||
|
clearTimer() {
|
||||||
|
window.clearInterval(this.timeId)
|
||||||
|
this.timeId = null
|
||||||
|
this.countDown = 60
|
||||||
|
this.codeDisabled = false
|
||||||
|
},
|
||||||
|
async changeSubmit() {
|
||||||
|
// this.bnfFlag = this.type == 2 ? '1' : '0'
|
||||||
|
// //生成接口数据
|
||||||
|
// let data = {
|
||||||
|
// orderType: 'BNF_ORDER',
|
||||||
|
// orderDTO: {
|
||||||
|
// productDTO: null,
|
||||||
|
// orderInfoDTO: {
|
||||||
|
// bnfFlag: this.bnfFlag,
|
||||||
|
// orderNo: localStorage.orderNo
|
||||||
|
// },
|
||||||
|
// appntDTO: {},
|
||||||
|
// insuredDTOs: [
|
||||||
|
// {
|
||||||
|
// insuredId: JSON.parse(localStorage.saleInsuredPersonInfo).insuredId,
|
||||||
|
// bnfDTOs: this.beneficiaries
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// paymentDTO: {},
|
||||||
|
// orderAccountDTO: {},
|
||||||
|
// channelDTO: null,
|
||||||
|
// orderExpandDTO: null,
|
||||||
|
// thirdOrderDTO: null
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// console.log(this.beneficiaries)
|
||||||
|
// //调接口保存受益人
|
||||||
|
// saveOrUpdateOrderInfo(data).then(res => {
|
||||||
|
// // console.log(res)
|
||||||
|
// if (res.result == 0) {
|
||||||
|
// localStorage.removeItem('applicant')
|
||||||
|
// //页面跳转
|
||||||
|
this.$jump({
|
||||||
|
flag: 'h5',
|
||||||
|
extra: {
|
||||||
|
url: location.origin + '/#/preserve/submitResult',
|
||||||
|
needRefresh: '1'
|
||||||
|
},
|
||||||
|
routerInfo: {
|
||||||
|
path: '/preserve/submitResult'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// } else {
|
||||||
|
// this.$toast(res.resultMessage)
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
},
|
||||||
|
//添加受益人
|
||||||
|
add() {
|
||||||
|
let beneRatio = 0
|
||||||
|
console.log(this.beneficiaries)
|
||||||
|
this.beneficiaries.forEach(item => {
|
||||||
|
beneRatio += parseInt(item.bnfLot)
|
||||||
|
})
|
||||||
|
console.log(beneRatio)
|
||||||
|
if (beneRatio >= 100) {
|
||||||
|
return this.$toast('受益份额已满~')
|
||||||
|
}
|
||||||
|
this.$jump({
|
||||||
|
flag: 'h5',
|
||||||
|
extra: {
|
||||||
|
url: location.origin + '/#/preserve/BeneficiaryInfoAdd'
|
||||||
|
},
|
||||||
|
routerInfo: {
|
||||||
|
path: '/preserve/BeneficiaryInfoAdd'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 单选按钮切换
|
||||||
|
radioChange(val) {
|
||||||
|
console.log(val)
|
||||||
|
},
|
||||||
|
// 删除受益人
|
||||||
|
deleteBeneficiary(index) {
|
||||||
|
Dialog.confirm({
|
||||||
|
className: 'dialog-delete',
|
||||||
|
title: '提示',
|
||||||
|
message: '您确认要删除该受益人吗?',
|
||||||
|
cancelButtonColor: '#E9332E',
|
||||||
|
confirmButtonColor: '#FFFFFF'
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
// on confirm
|
||||||
|
|
||||||
|
// console.log('删除受益人')
|
||||||
|
console.log(this.beneficiaries[index].idNo)
|
||||||
|
if (this.beneficiaries[index].asAppntAddress == true) {
|
||||||
|
localStorage.removeItem('applicant')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除 localStorage 中的对应数据
|
||||||
|
// console.log(this.beneficiaries)
|
||||||
|
let beneficiaries = JSON.parse(localStorage.beneficiaryInfo)
|
||||||
|
// console.log(JSON.parse(localStorage.beneficiaryInfo))
|
||||||
|
console.log(beneficiaries)
|
||||||
|
let delIdx = beneficiaries.findIndex(item => {
|
||||||
|
return item.idNo == this.beneficiaries[index].idNo
|
||||||
|
})
|
||||||
|
beneficiaries.splice(delIdx, 1)
|
||||||
|
localStorage.beneficiaryInfo = JSON.stringify(beneficiaries)
|
||||||
|
|
||||||
|
// 删除页面中的对应数据
|
||||||
|
this.beneficiaries.splice(index, 1)
|
||||||
|
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
// on cancel
|
||||||
|
return
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 删除受益人
|
||||||
|
editBeneficiary(index) {
|
||||||
|
Dialog.confirm({
|
||||||
|
className: 'dialog-delete',
|
||||||
|
title: '提示',
|
||||||
|
message: '您确认要修改该受益人吗?',
|
||||||
|
cancelButtonColor: '#E9332E',
|
||||||
|
confirmButtonColor: '#FFFFFF'
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
// on confirm
|
||||||
|
|
||||||
|
// console.log('修改受益人')
|
||||||
|
console.log(this.beneficiaries[index].idNo)
|
||||||
|
if (this.beneficiaries[index].asAppntAddress == true) {
|
||||||
|
localStorage.removeItem('applicant')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改 localStorage 中的对应数据
|
||||||
|
// console.log(this.beneficiaries)
|
||||||
|
let beneficiaries = JSON.parse(localStorage.beneficiaryInfo)
|
||||||
|
// console.log(JSON.parse(localStorage.beneficiaryInfo))
|
||||||
|
console.log(beneficiaries)
|
||||||
|
let delIdx = beneficiaries.findIndex(item => {
|
||||||
|
return item.idNo == this.beneficiaries[index].idNo
|
||||||
|
})
|
||||||
|
beneficiaries.splice(delIdx, 1)
|
||||||
|
localStorage.beneficiaryInfo = JSON.stringify(beneficiaries)
|
||||||
|
|
||||||
|
// 修改页面中的对应数据
|
||||||
|
this.beneficiaries.splice(index, 1)
|
||||||
|
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
// on cancel
|
||||||
|
return
|
||||||
|
})
|
||||||
|
},
|
||||||
|
//获取受益人列表
|
||||||
|
async getBeneficiaryList() {
|
||||||
|
const res = await getOrderDetail({ orderNo: localStorage.orderNo })
|
||||||
|
console.log(res)
|
||||||
|
if (res.result == 0 && res.orderDTO) {
|
||||||
|
this.beneficiaries = res.orderDTO.inuseredDTOs[0].bnfDTOs
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
beforeDestroy() {
|
||||||
|
//清理计时器
|
||||||
|
this.clearTimer()
|
||||||
|
},
|
||||||
|
filters: {
|
||||||
|
relationTransfer(relationIdx) {
|
||||||
|
let relationText = ''
|
||||||
|
dataDictionary.relationToAppnt.some(item => {
|
||||||
|
if (item.id == relationIdx) {
|
||||||
|
relationText = item.text
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return relationText
|
||||||
|
},
|
||||||
|
Mask: function(value) {
|
||||||
|
if (value) {
|
||||||
|
return value.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
|
||||||
|
} else {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.beneficiary-container {
|
||||||
|
.add-btn {
|
||||||
|
width: 80%;
|
||||||
|
margin: 20px auto;
|
||||||
|
border: 1px dashed #999;
|
||||||
|
}
|
||||||
|
.beneficiary-list {
|
||||||
|
margin-bottom: 65px;
|
||||||
|
}
|
||||||
|
.item {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@@ -1 +1,311 @@
|
|||||||
<!--受益人变更页面-->
|
<!--受益人变更页面-->
|
||||||
|
<template>
|
||||||
|
<div class="beneficiary-container">
|
||||||
|
<div h10></div>
|
||||||
|
<div class="fs14 flex justify-content-s pv12 ph15 van-hairline--bottom">
|
||||||
|
<label class="c-gray-dark">被保险人</label>
|
||||||
|
<span class="c-gray-darker">{{ insuredPerson }}</span>
|
||||||
|
</div>
|
||||||
|
<div class="fs14 pv12 ph15 van-hairline--bottom flex">
|
||||||
|
<label class="c-gray-dark">身故受益人</label>
|
||||||
|
<div class="ml20 c-gray-darker">
|
||||||
|
<van-radio-group v-model="type" class="flex" @change="radioChange">
|
||||||
|
<van-radio name="1">法定受益人</van-radio>
|
||||||
|
<van-radio name="2" class="ml10">指定受益人</van-radio>
|
||||||
|
</van-radio-group>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 受益人列表 -->
|
||||||
|
<div class="fs14 beneficiary-list" v-if="type == 2">
|
||||||
|
<ul>
|
||||||
|
<li class="pv20 ph15 item" v-for="(item, index) in beneficiaries" :key="index">
|
||||||
|
<div class="bg-white p15">
|
||||||
|
<div class="flex justify-content-s c-gray-darker">
|
||||||
|
<div>
|
||||||
|
<img
|
||||||
|
src="@/assets/images/bnf_avatar.png"
|
||||||
|
width="40"
|
||||||
|
height="40"
|
||||||
|
class="radius50 v-middle"
|
||||||
|
/>
|
||||||
|
<span class="ml10 c-gray-base">{{ item.name }}</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<van-icon name="delete" class="mr20" size="20" @click="deleteBeneficiary(index)" />
|
||||||
|
<van-icon name="edit" size="20" @click="editBeneficiary(index)" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="mt20">
|
||||||
|
<span class="c-gray-dark">是被保险人的</span>
|
||||||
|
<span class="ml20">{{ item.relationToInsured | idToText('relationToAppnt') }}</span>
|
||||||
|
</p>
|
||||||
|
<p class="mt10">
|
||||||
|
<span class="c-gray-dark">受益份额</span>
|
||||||
|
<span class="ml35">{{ item.bnfLot }}%</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="add-btn mt20 text-center p15 c-gray-base" @click="add">+ 添加指定受益人</div>
|
||||||
|
</div>
|
||||||
|
<van-button type="danger" class="bottom-btn" @click="nextStep">下一步</van-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { RadioGroup, Radio, Icon, Dialog } from 'vant'
|
||||||
|
import dataDictionary from '@/assets/js/utils/data-dictionary'
|
||||||
|
import { saveOrUpdateOrderInfo, getOrderDetail } from '@/api/ebiz/sale/sale'
|
||||||
|
export default {
|
||||||
|
name: 'beneficiary',
|
||||||
|
components: {
|
||||||
|
[RadioGroup.name]: RadioGroup,
|
||||||
|
[Radio.name]: Radio,
|
||||||
|
[Icon.name]: Icon,
|
||||||
|
[Dialog.name]: Dialog
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
type: '1',
|
||||||
|
insuredPerson: '', //被保险人
|
||||||
|
isAssign: false, // 是否指定受益人
|
||||||
|
beneficiaries: [
|
||||||
|
// {
|
||||||
|
// name: '陈明',
|
||||||
|
// relationToAppnt: '1',
|
||||||
|
// beneRatio: '99'
|
||||||
|
// }
|
||||||
|
], // 指定受益人列表
|
||||||
|
bnfFlag: '0', // 受益人类型
|
||||||
|
bnfType: '0' // 0 身故受益人 1 身前受益人
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
// 是否从添加指定受益人页面跳转
|
||||||
|
if (localStorage.fromAddBeneficiaryInfo) {
|
||||||
|
this.type = '2'
|
||||||
|
this.beneficiaries = this.beneficiaries.concat(JSON.parse(localStorage.beneficiaryInfo))
|
||||||
|
this.type = '2'
|
||||||
|
console.log(this.beneficiaries)
|
||||||
|
}
|
||||||
|
//如果是从编辑进来
|
||||||
|
if (this.$route.query.edit) {
|
||||||
|
getOrderDetail({ orderNo: localStorage.orderNo }).then(res => {
|
||||||
|
if (res.result == 0) {
|
||||||
|
this.$utils.intLocalStorage(res)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.insuredPerson = JSON.parse(localStorage.saleInsuredPersonInfo).name
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// EWebBridge.webCallAppInJs('webview_left_button', {
|
||||||
|
// intercept: '1' //是否拦截原生返回事件 1是 其他否
|
||||||
|
// })
|
||||||
|
// window.appCallBack = this.appCallBack
|
||||||
|
document.body.style.backgroundColor = '#fff'
|
||||||
|
},
|
||||||
|
beforeRouteLeave(to, from, next) {
|
||||||
|
document.body.style.backgroundColor = ''
|
||||||
|
next()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// appCallBack() {
|
||||||
|
// this.$jump({
|
||||||
|
// flag: 'goBack',
|
||||||
|
// extra: {
|
||||||
|
// refresh: '1', //是否返回后刷新0:否,1:是
|
||||||
|
// index: '-1'
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
//告知信息
|
||||||
|
nextStep() {
|
||||||
|
if (this.type == 2 && this.beneficiaries.length == 0) {
|
||||||
|
this.$toast('受益人列表不能为空')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// this.bnfFlag = this.type == 2 ? '1' : '0'
|
||||||
|
// //生成接口数据
|
||||||
|
// let data = {
|
||||||
|
// orderType: 'BNF_ORDER',
|
||||||
|
// orderDTO: {
|
||||||
|
// productDTO: null,
|
||||||
|
// orderInfoDTO: {
|
||||||
|
// bnfFlag: this.bnfFlag,
|
||||||
|
// orderNo: localStorage.orderNo
|
||||||
|
// },
|
||||||
|
// appntDTO: {},
|
||||||
|
// insuredDTOs: [
|
||||||
|
// {
|
||||||
|
// insuredId: JSON.parse(localStorage.saleInsuredPersonInfo).insuredId,
|
||||||
|
// bnfDTOs: this.beneficiaries
|
||||||
|
// }
|
||||||
|
// ],
|
||||||
|
// paymentDTO: {},
|
||||||
|
// orderAccountDTO: {},
|
||||||
|
// channelDTO: null,
|
||||||
|
// orderExpandDTO: null,
|
||||||
|
// thirdOrderDTO: null
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// console.log(this.beneficiaries)
|
||||||
|
// //调接口保存受益人
|
||||||
|
// saveOrUpdateOrderInfo(data).then(res => {
|
||||||
|
// // console.log(res)
|
||||||
|
// if (res.result == 0) {
|
||||||
|
// localStorage.removeItem('applicant')
|
||||||
|
// //页面跳转
|
||||||
|
this.$jump({
|
||||||
|
flag: 'h5',
|
||||||
|
extra: {
|
||||||
|
url: location.origin + '/#/preserve/HandleResult?entry=beneficiary',
|
||||||
|
needRefresh: '1'
|
||||||
|
},
|
||||||
|
routerInfo: {
|
||||||
|
path: '/preserve/HandleResult?entry=beneficiary'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// } else {
|
||||||
|
// this.$toast(res.resultMessage)
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
},
|
||||||
|
//添加受益人
|
||||||
|
add() {
|
||||||
|
let beneRatio = 0
|
||||||
|
console.log(this.beneficiaries)
|
||||||
|
this.beneficiaries.forEach(item => {
|
||||||
|
beneRatio += parseInt(item.bnfLot)
|
||||||
|
})
|
||||||
|
console.log(beneRatio)
|
||||||
|
if (beneRatio >= 100) {
|
||||||
|
return this.$toast('受益份额已满~')
|
||||||
|
}
|
||||||
|
this.$jump({
|
||||||
|
flag: 'h5',
|
||||||
|
extra: {
|
||||||
|
url: location.origin + '/#/preserve/BeneficiaryInfoAdd'
|
||||||
|
},
|
||||||
|
routerInfo: {
|
||||||
|
path: '/preserve/BeneficiaryInfoAdd'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 单选按钮切换
|
||||||
|
radioChange(val) {
|
||||||
|
console.log(val)
|
||||||
|
},
|
||||||
|
// 删除受益人
|
||||||
|
deleteBeneficiary(index) {
|
||||||
|
Dialog.confirm({
|
||||||
|
className: 'dialog-delete',
|
||||||
|
title: '提示',
|
||||||
|
message: '您确认要删除该受益人吗?',
|
||||||
|
cancelButtonColor: '#E9332E',
|
||||||
|
confirmButtonColor: '#FFFFFF'
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
// on confirm
|
||||||
|
|
||||||
|
// console.log('删除受益人')
|
||||||
|
console.log(this.beneficiaries[index].idNo)
|
||||||
|
if (this.beneficiaries[index].asAppntAddress == true) {
|
||||||
|
localStorage.removeItem('applicant')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除 localStorage 中的对应数据
|
||||||
|
// console.log(this.beneficiaries)
|
||||||
|
let beneficiaries = JSON.parse(localStorage.beneficiaryInfo)
|
||||||
|
// console.log(JSON.parse(localStorage.beneficiaryInfo))
|
||||||
|
console.log(beneficiaries)
|
||||||
|
let delIdx = beneficiaries.findIndex(item => {
|
||||||
|
return item.idNo == this.beneficiaries[index].idNo
|
||||||
|
})
|
||||||
|
beneficiaries.splice(delIdx, 1)
|
||||||
|
localStorage.beneficiaryInfo = JSON.stringify(beneficiaries)
|
||||||
|
|
||||||
|
// 删除页面中的对应数据
|
||||||
|
this.beneficiaries.splice(index, 1)
|
||||||
|
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
// on cancel
|
||||||
|
return
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 删除受益人
|
||||||
|
editBeneficiary(index) {
|
||||||
|
Dialog.confirm({
|
||||||
|
className: 'dialog-delete',
|
||||||
|
title: '提示',
|
||||||
|
message: '您确认要修改该受益人吗?',
|
||||||
|
cancelButtonColor: '#E9332E',
|
||||||
|
confirmButtonColor: '#FFFFFF'
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
// on confirm
|
||||||
|
|
||||||
|
// console.log('修改受益人')
|
||||||
|
console.log(this.beneficiaries[index].idNo)
|
||||||
|
if (this.beneficiaries[index].asAppntAddress == true) {
|
||||||
|
localStorage.removeItem('applicant')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改 localStorage 中的对应数据
|
||||||
|
// console.log(this.beneficiaries)
|
||||||
|
let beneficiaries = JSON.parse(localStorage.beneficiaryInfo)
|
||||||
|
// console.log(JSON.parse(localStorage.beneficiaryInfo))
|
||||||
|
console.log(beneficiaries)
|
||||||
|
let delIdx = beneficiaries.findIndex(item => {
|
||||||
|
return item.idNo == this.beneficiaries[index].idNo
|
||||||
|
})
|
||||||
|
beneficiaries.splice(delIdx, 1)
|
||||||
|
localStorage.beneficiaryInfo = JSON.stringify(beneficiaries)
|
||||||
|
|
||||||
|
// 修改页面中的对应数据
|
||||||
|
this.beneficiaries.splice(index, 1)
|
||||||
|
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
// on cancel
|
||||||
|
return
|
||||||
|
})
|
||||||
|
},
|
||||||
|
//获取受益人列表
|
||||||
|
async getBeneficiaryList() {
|
||||||
|
const res = await getOrderDetail({ orderNo: localStorage.orderNo })
|
||||||
|
console.log(res)
|
||||||
|
if (res.result == 0 && res.orderDTO) {
|
||||||
|
this.beneficiaries = res.orderDTO.inuseredDTOs[0].bnfDTOs
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
filters: {
|
||||||
|
relationTransfer(relationIdx) {
|
||||||
|
let relationText = ''
|
||||||
|
dataDictionary.relationToAppnt.some(item => {
|
||||||
|
if (item.id == relationIdx) {
|
||||||
|
relationText = item.text
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return relationText
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.beneficiary-container {
|
||||||
|
.add-btn {
|
||||||
|
width: 80%;
|
||||||
|
margin: 20px auto;
|
||||||
|
border: 1px dashed #999;
|
||||||
|
}
|
||||||
|
.beneficiary-list {
|
||||||
|
margin-bottom: 65px;
|
||||||
|
}
|
||||||
|
.item {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
1070
src/views/ebiz/preserve/BeneficiaryInfoAdd.vue
Normal file
1070
src/views/ebiz/preserve/BeneficiaryInfoAdd.vue
Normal file
File diff suppressed because it is too large
Load Diff
@@ -138,9 +138,9 @@ export default {
|
|||||||
this.$jump({
|
this.$jump({
|
||||||
flag: 'h5',
|
flag: 'h5',
|
||||||
extra: {
|
extra: {
|
||||||
url: location.origin + '/#/preserve/HandleResult'
|
url: location.origin + '/#/preserve/HandleResult?entry=contact'
|
||||||
},
|
},
|
||||||
routerInfo: '/preserve/HandleResult'
|
routerInfo: '/preserve/HandleResult?entry=contact'
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
this.$toast(res.resultMessage)
|
this.$toast(res.resultMessage)
|
||||||
|
|||||||
@@ -31,8 +31,11 @@ export default {
|
|||||||
}
|
}
|
||||||
// 此处处理 this.path
|
// 此处处理 this.path
|
||||||
switch (this.entry) {
|
switch (this.entry) {
|
||||||
case 'basic':
|
case 'contact':
|
||||||
this.path = '1'
|
this.path = '/preserve/ContactConfirmation?entry=contact'
|
||||||
|
break
|
||||||
|
case 'beneficiary':
|
||||||
|
this.path = '/preserve/BeneficiaryConfirmation?entry=beneficiary&'
|
||||||
break
|
break
|
||||||
case 'renewal':
|
case 'renewal':
|
||||||
this.path = '2'
|
this.path = '2'
|
||||||
@@ -63,10 +66,10 @@ export default {
|
|||||||
// 若被保险人≥18周岁,人脸识别录入被保人本人
|
// 若被保险人≥18周岁,人脸识别录入被保人本人
|
||||||
// 若被保险人<18周岁,被保险人与投保人为子女关系,人脸识别录入未成年人父亲或母亲
|
// 若被保险人<18周岁,被保险人与投保人为子女关系,人脸识别录入未成年人父亲或母亲
|
||||||
// toDo
|
// toDo
|
||||||
|
this.jumpNextPage(this.path)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
jumpNextPage(path) {
|
jumpNextPage(path = '/preserve/BeneficiaryInfo') {
|
||||||
path = '/preserve/ContactConfirmation'
|
|
||||||
this.$jump({
|
this.$jump({
|
||||||
flag: 'h5',
|
flag: 'h5',
|
||||||
extra: {
|
extra: {
|
||||||
|
|||||||
95
src/views/ebiz/preserve/js/methods.js
Normal file
95
src/views/ebiz/preserve/js/methods.js
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
//点击弹出组件
|
||||||
|
export function selectComp(that, index, type = '') {
|
||||||
|
that.currentPopupIndex = index
|
||||||
|
let title = ''
|
||||||
|
if (index == 1) {
|
||||||
|
;[that.customerShowPicker, title] = [true, '客户列表']
|
||||||
|
} else if (index == 2) {
|
||||||
|
;[that.occupationShowPicker, title] = [true, '职业类别']
|
||||||
|
} else if (index == 3) {
|
||||||
|
if (type == '1') {
|
||||||
|
//投保人
|
||||||
|
localStorage.scanFromInsured = 'true'
|
||||||
|
} else if (type == '2') {
|
||||||
|
//被保险人
|
||||||
|
localStorage.scanFromInsured = 'false'
|
||||||
|
}
|
||||||
|
;[that.isScan, title] = [true, '身份证扫描']
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
that.$jump({
|
||||||
|
flag: 'navigation',
|
||||||
|
extra: {
|
||||||
|
title,
|
||||||
|
hiddenLeft: '1'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
closeBtn(that)
|
||||||
|
}, 400)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭按钮的显示
|
||||||
|
function closeBtn(that) {
|
||||||
|
that.$jump({
|
||||||
|
flag: 'webview_right_button',
|
||||||
|
extra: {
|
||||||
|
btns: [
|
||||||
|
{
|
||||||
|
img: that.$assetsUrl + 'images/del-close.png',
|
||||||
|
route: { flag: '', extra: {} }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取身份证扫描信息
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {*} that 上下文
|
||||||
|
* @param {*} data 扫描数据
|
||||||
|
* @param {*} type 1 投保人 2 被保险人
|
||||||
|
*/
|
||||||
|
export function getIdentityInfo(that, data, type) {
|
||||||
|
console.log(data)
|
||||||
|
// 正面
|
||||||
|
if (data.name && data.name != '待识别') {
|
||||||
|
that.userInfo.name = data.name
|
||||||
|
that.userInfo.idNo = data.idNo
|
||||||
|
that.userInfo.birthday = `${data.birthYear}-${data.birthMonth}-${data.birthDay}`
|
||||||
|
that.userInfo.sex = data.gender == '男' ? '0' : '1'
|
||||||
|
}
|
||||||
|
// 反面
|
||||||
|
if (data.startDate && data.startDate != '待识别') {
|
||||||
|
that.userInfo.certificateValidate = `${data.startDate.substr(0, 4)}-${data.startDate.substr(5, 2)}-${data.startDate.substr(8, 2)}`
|
||||||
|
//that.userInfo.certificateValidate = `${data.startDate.substr(0, 4)}-${data.startDate.substr(4, 2)}-${data.startDate.substr(6, 2)}`
|
||||||
|
// 是否为长期身份证
|
||||||
|
if (data.endDate != '长期') {
|
||||||
|
that.userInfo.certiexpiredate = `${data.endDate.substr(0, 4)}-${data.endDate.substr(5, 2)}-${data.endDate.substr(8, 2)}`
|
||||||
|
// that.userInfo.certiexpiredate = `${data.endDate.substr(0, 4)}-${data.endDate.substr(4, 2)}-${data.endDate.substr(6, 2)}`
|
||||||
|
that.effectiveDateTypeAble = true
|
||||||
|
that.idLimit = false
|
||||||
|
that.isRequired = true
|
||||||
|
} else {
|
||||||
|
// 勾选长期
|
||||||
|
that.userInfo.effectiveDateType = true
|
||||||
|
// 长期按钮不禁用
|
||||||
|
that.effectiveDateTypeAble = false
|
||||||
|
// 证件截止日期不需要校验
|
||||||
|
that.certiexpiredateRequired = false
|
||||||
|
//截止日期不可编辑
|
||||||
|
that.idLimit = true
|
||||||
|
that.isRequired = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
that.isScan = false
|
||||||
|
let title = type == '1' ? '投保人信息' : '被保险人信息'
|
||||||
|
that.$jump({
|
||||||
|
flag: 'navigation',
|
||||||
|
extra: {
|
||||||
|
title,
|
||||||
|
hiddenRight: '1'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
52
src/views/ebiz/preserve/js/verification.js
Normal file
52
src/views/ebiz/preserve/js/verification.js
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
import changeFifteenToEighteen from '@/assets/js/utils/changeFifteenToEighteen'
|
||||||
|
import idNoCheck from '@/assets/js/utils/idNoCheck'
|
||||||
|
import utilsAge from '@/assets/js/utils/age'
|
||||||
|
|
||||||
|
//身份证带出出生日期,性别,年龄
|
||||||
|
export function idToData(idNo) {
|
||||||
|
//非空
|
||||||
|
if (!idNo.trim()) {
|
||||||
|
return {
|
||||||
|
text: '证件号码不能为空'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 证件号码规则校验
|
||||||
|
if (!idNoCheck.isIdno(idNo)) {
|
||||||
|
return {
|
||||||
|
text: '您填写的证件号码有误'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//如果是15位身份证号先转为18位
|
||||||
|
if (idNo.length == 15) {
|
||||||
|
idNo = changeFifteenToEighteen(idNo)
|
||||||
|
}
|
||||||
|
let birthday = getBirthById(idNo)
|
||||||
|
let age = utilsAge.getAge(birthday, new Date())
|
||||||
|
let sex = getSexById(idNo)
|
||||||
|
return {
|
||||||
|
birthday,
|
||||||
|
age,
|
||||||
|
sex
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getBirthById(idNo) {
|
||||||
|
// 获取生日
|
||||||
|
var year = idNo.substr(6, 4)
|
||||||
|
var month = idNo.substr(10, 2)
|
||||||
|
var day = idNo.substr(12, 2)
|
||||||
|
return year + '-' + month + '-' + day
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSexById(idNo) {
|
||||||
|
// 获取性别
|
||||||
|
if (idNo.charAt(16) >= '0' && idNo.charAt(16) <= '9') {
|
||||||
|
if (parseInt(idNo.charAt(16)) % 2 == 0) {
|
||||||
|
return '1'
|
||||||
|
} else {
|
||||||
|
return '0'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user