【关于附加综合意外伤害保险(乐享版)投保流程增加《个人信息使用授权》阅知勾选的申请】个人信息使用授权模板

This commit is contained in:
li.yuetong
2022-08-29 10:50:36 +08:00
parent 7d548e4c51
commit d646ecc3a7
4 changed files with 444 additions and 27 deletions

View File

@@ -15,6 +15,7 @@ const insuranceInformation = () => import('@/views/ebiz/sale/InsuranceInformatio
const insuranceTip = () => import('@/views/ebiz/sale/InsuranceTip')
const InsuranceRiskReminder = () => import('@/views/ebiz/sale/InsuranceRiskReminder')
const signatureOfElectronic = () => import('@/views/ebiz/sale/SignatureOfElectronic')
const PersonalInformation = () => import('@/views/ebiz/sale/PersonalInformation')
const payResult = () => import('@/views/ebiz/sale/PayResult')
const cardScan = () => import('@/views/ebiz/sale/CardScan')
const identitycardScan = () => import('@/views/ebiz/sale/identityCardScan')
@@ -256,5 +257,13 @@ export default [
meta: {
title: '国富人寿自保件承诺书'
}
},
{
path: '/sale/PersonalInformation',
name: 'PersonalInformation',
component: PersonalInformation,
meta: {
title: '个人信息使用授权'
}
}
]

View File

@@ -0,0 +1,405 @@
<template>
<div class="insuranceInformation-container pb50 redRadioCheckbox">
<van-notice-bar :scrollable="false" v-if="!Time" class="notice">{{ `提示阅读时长需在${this.Time ? this.time : this.number}秒以上` }}</van-notice-bar>
<iframe :src="src + pdfUrl" class="iframe"></iframe>
<div class="bg-white bottom-btn">
<van-radio-group v-model="radio" class="pb10 pb20 pl30">
<van-radio name="1" @click="click" class="fs14">
<span>本人确认已阅读个人信息使用授权 </span>
</van-radio>
</van-radio-group>
<van-button type="danger" size="large" :disabled="isDisable" @click="goNext" v-no-more-click="1000">下一步</van-button>
</div>
</div>
</template>
<script>
import { RadioGroup, Radio, Dialog, NoticeBar } from 'vant'
import { saveInformation, getOrderDetail } from '@/api/ebiz/sale/sale'
import utils from '@/assets/js/utils/date-utils'
// import config from '@/config'
// import axios from 'axios'
export default {
data() {
let isWeixin = this.$utils.device().isWeixin //判断环境
return {
// 投保人还是被保险人信息
signVal: '',
// 被保险人签名信息
insuredSign: {},
// 投保人签名信息
appntSign: {},
radio: '',
// 倒计时时间
number: '',
// 定时器时间
time: '10',
// 定时器名称
timer: null,
isOver: false,
// 判断验证码是否开始倒计时
Time: true,
// 按钮是否可以点击
isDisable: true,
// 是否在微信
isWeixin,
productCode: localStorage.productCode, //获取产品编号
protocol: false,
activeType: '',
isFrom:'',
pdfUrl: '',
src: location.origin + '/pdfjs/web/viewer.html?file=',
cvalidateStr:'', //活动生效日
cvalidateStrToFormat:'',//活动生效日--格式化年月日
cvalidateStrOneDayOff:''//活动生效日--格式化年月日并减少一天
}
},
// computed: {
// cvalidateStrToFormat() {
// console.log(this.cvalidateStr,'computed')
// return utils.formatDate(new Date('2021-07-01'), 'yyyy年MM月dd日')
// },
// cvalidateStrOneDayOff() {
// console.log(this.cvalidateStr,'computed1')
// let date = new Date(this.cvalidateStr)
// let dateTime
// dateTime=date.setDate(date.getDate()-1);
// dateTime=utils.formatDate(new Date(dateTime), 'yyyy年MM月dd日');
// return dateTime
// }
// },
components: {
[RadioGroup.name]: RadioGroup,
[Radio.name]: Radio,
[Dialog.name]: Dialog,
[NoticeBar.name]: NoticeBar
},
created() {
this.init()
},
mounted() {
let readingType = localStorage.getItem('readingProtocolType')
if (readingType && readingType === '1') {
this.protocol = true
}
let that = this
// {{switchFlag.Time?pageVariable.msg:pageVariable.number}}
that.timeOut()
document.title = '个人信息使用授权'
that.activeType = window.localStorage.getItem('activeType')
// Notify({
// type: 'warning',
// message: `提示:阅读时长需在${this.Time ? this.time : this.number}秒以上`,
// duration: 10000,
// background: '#999999',
// className: 'notify'
// })
document.body.style.backgroundColor = '#fff'
that.signVal = window.localStorage.getItem('sign-val')
if (JSON.parse(window.localStorage.getItem('sign-insured'))) {
that.insuredSign = JSON.parse(window.localStorage.getItem('sign-insured'))
}
if (JSON.parse(window.localStorage.getItem('sign-appnt'))) {
that.appntSign = JSON.parse(window.localStorage.getItem('sign-appnt'))
}
},
methods: {
async init(){
this.isFrom = window.localStorage.isFrom
const orderNo = this.$CacheUtils.getLocItem('orderNo')
let detailPromise = this.isFrom === 'proposal' ? localStorage.proposalMedical : await getOrderDetail({ orderNo })
if(this.isFrom != 'proposal'){
//活动生效日期
this.cvalidateStr = detailPromise.orderDTO.orderInfoDTO.cvaliDate
}
this.cvalidateStrToFormat = utils.formatDate(new Date(this.cvalidateStr), 'yyyy年MM月dd日')
let date = new Date(this.cvalidateStr)
let dateTime
dateTime=date.setDate(date.getDate()-1);
this.cvalidateStrOneDayOff = utils.formatDate(new Date(dateTime), 'yyyy年MM月dd日');
},
timeOut() {
let that = this
let time = that.time
that.Time = false
that.number = `${time}`
let timer = setInterval(() => {
time--
if (time <= 0) {
time = 0
clearInterval(timer)
that.Time = true
that.isOver = true
// window.localStorage.setItem('step', '1')
}
that.number = `${time}`
}, 1000)
},
// 点击阅读时
click() {
let that = this
if (that.isOver == false) {
Dialog.confirm({
title: '提示',
message: '该内容涉及您的重大权益,请您仔细阅读',
showCancelButton: false
}).then(() => {
that.radio = ''
})
}
},
// 下一步
goNext() {
if (this.isWeixin) {
console.log('````````````````````')
console.log('进入微信')
this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
})
let that = this
if (that.signVal == '0' || that.signVal == '2') {
that.appntSign.map(item => {
if (item.documentCode == '12') {
that.appntSign.signId = item.signId
that.appntSign.documentCode = item.documentCode
that.appntSign.documentType = item.documentType
}
})
let data = {
orderType: 'SIGN_ORDER',
orderDTO: {
orderInfoDTO: {
orderNo: window.localStorage.getItem('orderNo')
},
ebizSignDTOS: [
{
signOrRead: 'read',
signId: that.appntSign.signId,
orderNo: window.localStorage.getItem('orderNo'),
documentCode: that.appntSign.documentCode,
documentStatus: '1',
documentType: that.appntSign.documentType,
signType: that.signVal
}
]
}
}
saveInformation(data).then(res => {
// console.log(res)
if (res.result == '0') {
this.$toast.clear()
window.localStorage.setItem('detailJump', '')
let url = 'signatureConfirmation'
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/' + url
},
routerInfo: {
path: '/sale/' + url
}
})
} else {
that.$toast(res.resultMessage)
}
})
} else {
this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
})
that.insuredSign.map(item => {
if (item.documentCode == '12') {
that.insuredSign.signId = item.signId
that.insuredSign.documentCode = item.documentCode
that.insuredSign.documentType = item.documentType
}
})
let data = {
orderType: 'SIGN_ORDER',
orderDTO: {
orderInfoDTO: {
orderNo: window.localStorage.getItem('orderNo')
},
ebizSignDTOS: [
{
signOrRead: 'read',
signId: that.insuredSign.signId,
orderNo: window.localStorage.getItem('orderNo'),
documentCode: that.insuredSign.documentCode,
documentStatus: '1',
documentType: that.insuredSign.documentType,
signType: that.signVal
}
]
}
}
saveInformation(data).then(res => {
if (res.result == '0') {
this.$toast.clear()
window.localStorage.setItem('detailJump', '')
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/signatureConfirmation'
},
routerInfo: {
path: '/sale/signatureConfirmation'
}
})
} else {
that.$toast(res.resultMessage)
}
})
}
} else {
let that = this
this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
})
// console.log('that.appntSign.signId',that.appntSign,that.appntSign.signId,that.appntSign.documentCode,that.appntSign.documentType)
if (that.signVal == '0' || that.signVal == '2') {
that.appntSign.map(item => {
if (item.documentCode == '12') {
that.appntSign.signId = item.signId
that.appntSign.documentCode = item.documentCode
that.appntSign.documentType = item.documentType
}
})
let data = {
orderType: 'SIGN_ORDER',
orderDTO: {
orderInfoDTO: {
orderNo: window.localStorage.getItem('orderNo')
},
ebizSignDTOS: [
{
signOrRead: 'read',
signId: that.appntSign.signId,
orderNo: window.localStorage.getItem('orderNo'),
documentCode: that.appntSign.documentCode,
documentStatus: '1',
documentType: that.appntSign.documentType,
signType: that.signVal
}
]
}
}
saveInformation(data).then(res => {
if (res.result == '0') {
this.$toast.clear()
window.localStorage.setItem('detailJump', '')
let url = 'signatureConfirmation'
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/' + url,
forbidSwipeBack: '1'
},
routerInfo: {
path: '/sale/' + url
}
})
} else {
that.$toast(res.resultMessage)
}
})
} else {
that.insuredSign.map(item => {
if (item.documentCode == '12') {
that.insuredSign.signId = item.signId
that.insuredSign.documentCode = item.documentCode
that.insuredSign.documentType = item.documentType
}
})
let data = {
orderType: 'SIGN_ORDER',
orderDTO: {
orderInfoDTO: {
orderNo: window.localStorage.getItem('orderNo')
},
ebizSignDTOS: [
{
signOrRead: 'read',
signId: that.insuredSign.signId,
orderNo: window.localStorage.getItem('orderNo'),
documentCode: that.insuredSign.documentCode,
documentStatus: '1',
documentType: that.insuredSign.documentType,
signType: that.signVal
}
]
}
}
saveInformation(data).then(res => {
if (res.result == '0') {
this.$toast.clear()
window.localStorage.setItem('detailJump', '')
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/signatureConfirmation',
forbidSwipeBack: '1'
},
routerInfo: {
path: '/sale/signatureConfirmation'
}
})
} else {
that.$toast(res.resultMessage)
}
})
}
}
}
},
computed: {
listenChange() {
const { isOver, radio } = this
return { isOver, radio }
}
},
watch: {
listenChange(val) {
let that = this
// console.log('listenChange :', val)
if (val.isOver == true && val.radio !== '') {
that.isDisable = false
} else {
that.isDisable = true
}
}
},
beforeRouteLeave(to, from, next) {
document.body.style.backgroundColor = ''
next()
}
}
</script>
<style lang="scss" scoped>
p {
text-align: justify;
}
.notice {
width: 100%;
position: fixed;
top: 0;
z-index: 20;
}
.fontb{
font-weight: bolder;
}
</style>

View File

@@ -21,7 +21,7 @@
</van-cell-group>
<div v-if="!isWeixin">
<!-- 不再微信 -->
<van-collapse v-model="activeNames" class="mt10">
<van-collapse v-model="activeNames" class="mt10">
<van-collapse-item name="0" v-if="showAgentView == 1">
<div slot="title">
代理人
@@ -37,11 +37,11 @@
</div>
<div v-else>
<div v-for="(item, index) in agentSign" :key="index">
<p>{{ item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9' ? '需阅读' : '需签署' }}</p>
<p>{{ item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9' || item.documentCode == '12' ? '需阅读' : '需签署' }}</p>
<p class="mb20">
<span class="text">{{ item.documentName }}</span>
<img :src="src" v-if="(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9') && item.documentStatus == '1'" />
<img :src="src" v-if="!(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9') && item.documentStatus == '3'" />
<img :src="src" v-if="(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9' || item.documentCode == '12') && item.documentStatus == '1'" />
<img :src="src" v-if="!(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9' || item.documentCode == '12') && item.documentStatus == '3'" />
</p>
</div>
</div>
@@ -79,11 +79,11 @@
</div>
<div v-else>
<div v-for="(item, index) in appntSign" :key="index">
<p>{{ item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9' ? '需阅读' : '需签署' }}</p>
<p>{{ item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9' || item.documentCode == '12' ? '需阅读' : '需签署' }}</p>
<p class="mb20">
<span class="text">{{ item.documentName }}</span>
<img :src="src" v-if="(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9') && item.documentStatus == '1'" />
<img :src="src" v-if="!(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9') && item.documentStatus == '3'" />
<img :src="src" v-if="(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9' || item.documentCode == '12') && item.documentStatus == '1'" />
<img :src="src" v-if="!(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9' || item.documentCode == '12') && item.documentStatus == '3'" />
</p>
</div>
</div>
@@ -124,11 +124,11 @@
</div>
<p class="mb20">以下内容需要您按照顺序阅读并签字确认:</p>
<div v-for="(item, index) in insuredSign" :key="index">
<p>{{ item.documentCode == '1' || item.documentCode == '8' ? '需阅读' : '需签署' }}</p>
<p>{{ item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '12' ? '需阅读' : '需签署' }}</p>
<p class="mb20">
<span class="text">{{ item.documentName }}</span>
<img :src="src" v-if="(item.documentCode == '1' || item.documentCode == '8') && item.documentStatus == '1'" />
<img :src="src" v-if="!(item.documentCode == '1' || item.documentCode == '8') && item.documentStatus == '3'" />
<img :src="src" v-if="(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '12') && item.documentStatus == '1'" />
<img :src="src" v-if="!(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '12') && item.documentStatus == '3'" />
</p>
</div>
<p class="start" v-if="airSign != '1'">点击开始分享进行相关操作</p>
@@ -172,11 +172,11 @@
</div>
<div v-else>
<div v-for="(item, index) in appntSign" :key="index">
<p>{{ item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9'? '需阅读' : '需签署' }}</p>
<p>{{ item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9' || item.documentCode == '12'? '需阅读' : '需签署' }}</p>
<p class="mb20">
<span class="text">{{ item.documentName }}</span>
<img :src="src" v-if="(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9') && item.documentStatus == '1'" />
<img :src="src" v-if="!(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9') && item.documentStatus == '3'" />
<img :src="src" v-if="(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9' || item.documentCode == '12') && item.documentStatus == '1'" />
<img :src="src" v-if="!(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '9' || item.documentCode == '12') && item.documentStatus == '3'" />
</p>
</div>
</div>
@@ -206,11 +206,11 @@
</div>
<p class="mb20">以下内容需要您按照顺序阅读并签字确认:</p>
<div v-for="(item, index) in insuredSign" :key="index">
<p>{{ item.documentCode == '1' || item.documentCode == '8' ? '需阅读' : '需签署' }}</p>
<p>{{ item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '12' ? '需阅读' : '需签署' }}</p>
<p class="mb20">
<span class="text">{{ item.documentName }}</span>
<img :src="src" v-if="(item.documentCode == '1' || item.documentCode == '8') && item.documentStatus == '1'" />
<img :src="src" v-if="!(item.documentCode == '1' || item.documentCode == '8') && item.documentStatus == '3'" />
<img :src="src" v-if="(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '12') && item.documentStatus == '1'" />
<img :src="src" v-if="!(item.documentCode == '1' || item.documentCode == '8' || item.documentCode == '12') && item.documentStatus == '3'" />
</p>
</div>
<p class="start" v-if="airSign != '1'">点击开始分享进行相关操作</p>
@@ -993,7 +993,7 @@ export default {
} else {
console.log('that.appntSign.length ==', that.appntSign.length, typeof that.appntSign.length)
for (let i = 0; i < that.appntSign.length; i++) {
if ((that.appntSign[i].documentCode == '1' || that.appntSign[i].documentCode == '8' || that.appntSign[i].documentCode == '9') && that.appntSign[i].documentStatus == 0) {
if ((that.appntSign[i].documentCode == '1' || that.appntSign[i].documentCode == '8' || that.appntSign[i].documentCode == '9' || that.appntSign[i].documentCode == '12') && that.appntSign[i].documentStatus == 0) {
//1投保须知 未读
path = that.appntSign[i].routePath
break
@@ -1045,7 +1045,7 @@ export default {
} else {
console.log('that.appntSign.length ==', that.appntSign.length, typeof that.appntSign.length)
for (let i = 0; i < that.appntSign.length; i++) {
if ((that.appntSign[i].documentCode == '1' || that.appntSign[i].documentCode == '8' || that.appntSign[i].documentCode == '9') && that.appntSign[i].documentStatus == 0) {
if ((that.appntSign[i].documentCode == '1' || that.appntSign[i].documentCode == '8' || that.appntSign[i].documentCode == '9' || that.appntSign[i].documentCode == '12') && that.appntSign[i].documentStatus == 0) {
//1投保须知 未读
path = that.appntSign[i].routePath
break
@@ -1601,6 +1601,9 @@ export default {
} else if (item.documentCode == '11') {
item.key = 6
item.routePath = 'InsuranceRiskReminder'
} else if (item.documentCode == '12') {
item.key = 10
item.routePath = 'InsuranceRiskReminder'
}
},
getSignInvalid() {
@@ -1787,7 +1790,7 @@ export default {
} else {
console.log('that.agentSign.length ==', that.agentSign.length, typeof that.agentSign.length)
for (let i = 0; i < that.agentSign.length; i++) {
if ((that.agentSign[i].documentCode == '1' || that.agentSign[i].documentCode == '8' || that.agentSign[i].documentCode == '9') && that.agentSign[i].documentStatus == 0) {
if ((that.agentSign[i].documentCode == '1' || that.agentSign[i].documentCode == '8' || that.agentSign[i].documentCode == '9' || that.agentSign[i].documentCode == '12') && that.agentSign[i].documentStatus == 0) {
//1投保须知 未读
path = that.agentSign[i].routePath
break

View File

@@ -436,13 +436,13 @@ export default {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/signatureConfirmation',
url: location.origin + '/#/sale/PersonalInformation',
pullRefresh: '1',
backToFirst: '1'
},
routerInfo: {
path:
'/sale/signatureConfirmation?orderNo=' +
'/sale/PersonalInformation?orderNo=' +
localStorage.orderNo +
'&token=' +
localStorage.token +
@@ -463,12 +463,12 @@ export default {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/signatureConfirmation',
url: location.origin + '/#/sale/PersonalInformation',
pullRefresh: '1',
backToFirst: '1'
},
routerInfo: {
path: '/sale/signatureConfirmation'
path: '/sale/PersonalInformation'
}
})
}
@@ -507,13 +507,13 @@ export default {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/signatureConfirmation',
url: location.origin + '/#/sale/PersonalInformation',
pullRefresh: '1',
backToFirst: '1'
},
routerInfo: {
path:
'/sale/signatureConfirmation?orderNo=' +
'/sale/PersonalInformation?orderNo=' +
localStorage.orderNo +
'&token=' +
localStorage.token +
@@ -534,12 +534,12 @@ export default {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/signatureConfirmation',
url: location.origin + '/#/sale/PersonalInformation',
pullRefresh: '1',
backToFirst: '1'
},
routerInfo: {
path: '/sale/signatureConfirmation'
path: '/sale/PersonalInformation'
}
})
}