Compare commits

...

57 Commits

Author SHA1 Message Date
liu.xiaofeng@ebiz-digits.com
ba551a7b59 银保-国富人寿年年丰C款两全保险(分红型)产品定义系统需求增加抄录 2023-11-23 14:31:01 +08:00
liu.xiaofeng@ebiz-digits.com
eaaf8fa485 将被保人文件数组排序 2023-11-23 13:57:56 +08:00
liu.xiaofeng@ebiz-digits.com
a82a7c8d64 添加受益人页面四要素校验通过后再把受益人信息添加刀受益人集合里 2023-11-23 13:57:38 +08:00
liu.xiaofeng@ebiz-digits.com
70d2f6da7f 添加受益人增加四要素校验接口 2023-11-23 13:57:35 +08:00
liu.xiaofeng@ebiz-digits.com
f590880d36 去除debugger 2023-11-14 15:22:48 +08:00
liu.xiaofeng@ebiz-digits.com
3d3a450bbf 鑫享年年C款产品更换投保须知 2023-11-14 15:16:31 +08:00
liu.xiaofeng@ebiz-digits.com
33f91f2ea2 抄录文件修改倒计时时长 2023-11-08 22:13:16 +08:00
liu.xiaofeng@ebiz-digits.com
7bbaec5075 祥利B款产品 在建议书预览页面隐藏保额 2023-11-08 19:06:04 +08:00
liu.xiaofeng@ebiz-digits.com
815c2e54fc 祥利B款产品隐藏掉保额字段 2023-11-08 19:06:00 +08:00
liu.xiaofeng@ebiz-digits.com
d2a941fea5 利益演示档位显示字段调整 2023-11-08 19:05:56 +08:00
liu.xiaofeng@ebiz-digits.com
a1f994069f 利益演算档位显示调整 2023-11-08 19:05:52 +08:00
liu.xiaofeng@ebiz-digits.com
4e86319a61 国富人寿祥利B款两全保险(万能型)设置字段展示内容修改 2023-11-08 19:05:48 +08:00
liu.xiaofeng@ebiz-digits.com
13eb83d585 国富人寿祥利B款两全保险(万能型)设置字段展示内容 2023-11-08 19:05:43 +08:00
liu.xiaofeng@ebiz-digits.com
30046fbcca 订单列表已提交的订单 如果订单状态为58显示转人核支付文字并修改按钮去支付为支付 2023-11-08 18:16:19 +08:00
liu.xiaofeng@ebiz-digits.com
73b99fa5ec 贵州地区调用双录接口相关的代码逻辑放开 2023-11-07 10:22:38 +08:00
liu.xiaofeng@ebiz-digits.com
4d0823bd60 暂时注释掉贵州双录代码逻辑 2023-10-31 16:26:03 +08:00
liu.xiaofeng@ebiz-digits.com
2e15f71b7d 更换master的选择产品页面代码 2023-10-31 14:46:20 +08:00
liu.xiaofeng@ebiz-digits.com
c136b1f4ca vuex 中store存储数据 页面刷新 ios手机导致数据丢失问题兼容处理 2023-10-26 16:01:29 +08:00
liu.xiaofeng@ebiz-digits.com
e1953900c9 银保代理人文件展示类型修改4 2023-10-25 23:41:57 +08:00
liu.xiaofeng@ebiz-digits.com
1b81c044ca 年年丰和祥利B款产品增加抄录1 2023-10-24 17:39:42 +08:00
liu.xiaofeng@ebiz-digits.com
a86e1bcd9a 去掉签名文件 2023-10-23 14:02:49 +08:00
liu.xiaofeng@ebiz-digits.com
2c2b206c86 一年期产品的特殊处理默认选择指定责任 2023-10-23 13:39:12 +08:00
liu.xiaofeng@ebiz-digits.com
dbc1891bf3 内勤账号做建议书改动 2023-10-23 10:19:19 +08:00
liu.xiaofeng@ebiz-digits.com
b28a8bf9fa pdf预览页面样式调整4 2023-10-18 21:38:48 +08:00
liu.xiaofeng@ebiz-digits.com
07dafba445 pdf预览页面样式调整3 2023-10-18 21:38:42 +08:00
liu.xiaofeng@ebiz-digits.com
1e77392b45 pdf预览页面样式调整2 2023-10-18 21:38:38 +08:00
liu.xiaofeng@ebiz-digits.com
e9e3685d97 pdf预览页面样式调整 2023-10-18 21:38:33 +08:00
liu.xiaofeng@ebiz-digits.com
8837b4e491 设置签名字体颜色 2023-10-18 21:38:29 +08:00
liu.xiaofeng@ebiz-digits.com
210b777739 银保代理人签字页面字面展示信息修改 2023-10-18 21:38:25 +08:00
liu.xiaofeng@ebiz-digits.com
540b74492a feature GFRS-3645 银保代理签字页面 页面标题修改 2023-10-18 21:38:19 +08:00
liu.xiaofeng@ebiz-digits.com
74248f5c4f feature GFRS-3645 银保代理人获取验证码以及校验验证码 更换接口 2023-10-18 21:38:13 +08:00
liu.xiaofeng@ebiz-digits.com
2d37780850 feature GFRS-3716 阅读文件倒计时修改为10S 2023-10-18 21:38:10 +08:00
liu.xiaofeng@ebiz-digits.com
ef3a45c7d1 feature GFRS-3645 一签多用 调整SignRule_KeyWordV2方法的参数结构 2023-10-18 21:38:06 +08:00
liu.xiaofeng@ebiz-digits.com
c0d01f9f5a feature GFRS-3645 修改一签多用签名代码逻辑 2023-10-18 21:37:59 +08:00
liu.xiaofeng@ebiz-digits.com
71ba3df54b feature【GFRS-3645】页面调整pdf展示文件类型为image 2023-10-18 21:37:54 +08:00
liu.xiaofeng@ebiz-digits.com
b57a6e3bda GFRS-3645调整与后端交互传递的数据结构 2023-10-18 21:37:46 +08:00
liu.xiaofeng@ebiz-digits.com
7f050ea622 动态获取银保代理人姓名用于信手书插件签名 2023-10-18 21:37:42 +08:00
liu.xiaofeng@ebiz-digits.com
205ffe6668 信手书插件调整 2023-10-18 21:37:39 +08:00
liu.xiaofeng@ebiz-digits.com
f3502485fb 【GFRS-3645】已阅读单选按钮在签名完成之后设置默认选中状态并增加接口请求的loading 2023-10-18 21:37:35 +08:00
liu.xiaofeng@ebiz-digits.com
f44a8efe50 【GFRS-3645】签名状态判断增加并修改签名字符串获取逻辑 2023-10-18 21:37:32 +08:00
liu.xiaofeng@ebiz-digits.com
d02dd5748a 【GFRS-3645】签字页面点击提交按钮清空本地存储的签字信息数据 2023-10-18 21:36:57 +08:00
liu.xiaofeng@ebiz-digits.com
fc3ec41ea0 【GFRS-3645】解决当点击页面刷新时,vue的store数据丢失问题 2023-10-18 21:36:51 +08:00
liu.xiaofeng@ebiz-digits.com
005630da8c 【GFRS-3645】iframe页面里显示的pdf地址拼接 2023-10-18 21:36:41 +08:00
liu.xiaofeng@ebiz-digits.com
38a051fae4 【GFRS-3645】生成电子合同接口对接 接口封装的token拦截方法修改 2023-10-18 21:36:29 +08:00
liu.xiaofeng@ebiz-digits.com
d49fd76db9 【GFRS-3645】修改电子签名页面代码默认执行逻辑 2023-10-18 21:36:12 +08:00
liu.xiaofeng@ebiz-digits.com
1bd368b684 【GFRS-3645】签字页面初始化时获取本地缓存信息 2023-10-18 21:36:00 +08:00
liu.xiaofeng@ebiz-digits.com
8164ff8fc7 【GFRS-3645】接口文件提交 2023-10-18 21:35:55 +08:00
liu.xiaofeng@ebiz-digits.com
f96cc01b74 银保代理人电子化合同签署关于证件号码以及姓名存储在vuex中 2023-10-18 21:35:35 +08:00
liu.xiaofeng@ebiz-digits.com
dfa1afefd1 根据姓名以及身份证号码获取用户信息后 根据出参添加后续代码逻辑 2023-10-18 21:35:06 +08:00
liu.xiaofeng@ebiz-digits.com
cd5039074e 完善银保代理人电子化合同签署页面的代码相关逻辑 2023-10-18 21:35:01 +08:00
liu.xiaofeng@ebiz-digits.com
f31865d26a 银保代理人电子化合同签署补全基本功能代码逻辑 2023-10-18 21:33:44 +08:00
liu.xiaofeng@ebiz-digits.com
60a255abc8 银保代理人电子化合同签署路由文件修改增加相关页面路由地址 2023-10-18 21:33:32 +08:00
liu.xiaofeng@ebiz-digits.com
23d7ea8ce7 银保代理人电子化合同签署 增加页面 2023-10-18 21:33:25 +08:00
liu.xiaofeng@ebiz-digits.com
05d8a6a03d 双录弹窗新接口对接与调试2 2023-10-18 21:31:41 +08:00
liu.xiaofeng@ebiz-digits.com
7d4c1f1397 双录弹窗新接口对接与调试 2023-10-18 21:31:38 +08:00
liu.xiaofeng@ebiz-digits.com
bc3318f4c6 双录弹窗修改样式并修改触发逻辑 2023-10-18 21:31:34 +08:00
liu.xiaofeng@ebiz-digits.com
8b82fe77d1 双录代码基础判断逻辑修改 2023-10-18 21:31:31 +08:00
24 changed files with 4252 additions and 1988 deletions

View File

@@ -26,6 +26,33 @@ export default {
reload: this.reload
}
},
created () {
// 在页面加载时读取sessionStorage
// if (sessionStorage.getItem('store')) {
// this.$store.replaceState(Object.assign({}, this.$store.state, JSON.parse(sessionStorage.getItem('store'))))
// }
// // 在页面刷新时将store保存到sessionStorage里
// window.addEventListener('beforeunload', () => {
// sessionStorage.setItem('store', JSON.stringify(this.$store.state))
// })
//ios刷新时vuex信息保留
let isiOS = !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (isiOS) {
//在页面刷新时将vuex里的信息保存到缓存里
window.addEventListener("pagehide", () => {
localStorage.setItem("store", JSON.stringify(this.$store.state))
})
//在页面加载时读取localStorage里的状态信息
localStorage.getItem("store") && this.$store.replaceState(Object.assign(this.$store.state,JSON.parse(localStorage.getItem("store"))));
} else {
//在页面刷新时将vuex里的信息保存到缓存里
window.addEventListener("beforeunload", () => {
localStorage.setItem("store", JSON.stringify(this.$store.state))
})
//在页面加载时读取localStorage里的状态信息
localStorage.getItem("store") && this.$store.replaceState(Object.assign(this.$store.state,JSON.parse(localStorage.getItem("store"))));
}
},
mounted(){
},
methods: {

View File

@@ -0,0 +1,46 @@
import request from '@/assets/js/utils/request'
import getUrl from '@/assets/js/utils/get-url'
// 银保代理人签署信息查询接口
export function getContractInfo(data) {
return request({
url: getUrl('/agent/enterYB/getContractInfo', 1),
method: 'post',
data
})
}
// 银保代理人签署信息接收接口
export function putContractInfo(data) {
return request({
url: getUrl('/agent/enterYB/putContractInfo', 1),
method: 'post',
data
})
}
// 生成电子合同pdf
export function generateAgreementYB(data) {
return request({
url: getUrl('/agent/enterYB/generateAgreementYB', 1),
method: 'post',
data
})
}
// 获取验证码
export function getAuthCode(data) {
return request({
url: getUrl('/customer/authcode/noLoginedSend', 1),
method: 'post',
data
})
}
// 校验验证码
export function checkSignYB(data) {
return request({
url: getUrl('/customer/authcode/checkSignYB', 1),
method: 'post',
data
})
}

View File

@@ -353,4 +353,22 @@ export function getUniversalCodeLst(data) {
method: 'post',
data
})
}
}
// 获取柳州分红万能投连型产品编码集合
export function getDoubleRecordProductLst(data) {
return request({
url: getUrl('/sale/product/getDoubleRecordProductLst ', 1),
method: 'post',
data
})
}
// 指定受益人身份四要素
export function checkAppointBnf(data) {
return request({
url: getUrl('/sale/bnfCheck/checkAppointBnf ', 1),
method: 'post',
data
})
}

View File

@@ -1977,7 +1977,7 @@ export default {
},
{
id: '58',
text: '待客户付款'
text: '转人核支付'
},
{
id: '59',
@@ -3867,6 +3867,26 @@ export default {
{
code: "accidentalLimit",
label: "%"
},
{
code: "policyFee",
label: "元"
},
{
code: "expireSurvivalInsurance_L",
label: "元"
},
{
code: "expireSurvivalInsurance_M",
label: "元"
},
{
code: "riskCost_L",
label: "元"
},
{
code: "riskCost_M",
label: "元"
}
],
// 卡单与短期险重新投保选择职业类别时,两个模块职业类型数据的排序不同,创建这个数据字典,用于在选择职业类别时,作为一个参数传入组件,

View File

@@ -220,7 +220,7 @@ service.interceptors.request.use(
let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //判断是否是 android终端
if (isAndroid) {
// setTimeout(() => {
if (window.location.hash !== '#/my/privacyPolicy') {
if (window.location.hash !== '#/my/privacyPolicy' && window.location.hash !== '#/YB_agentSign/step1' && window.location.hash !== '#/YB_agentSign/step2') {
console.log(window.Android.getToken(), 'Android获取token')
CacheUtils.setLocItem('token', window.Android.getToken())
}

View File

@@ -6,6 +6,8 @@
* @Description:
* @FilePath: \ebiz-h5\src\config\index.js
*/
import YB_agentSign from "../router/ebiz/YB_agentSign";
/**
* 配置编译环境和线上环境之间的切换
* 默认三套环境,可以增添
@@ -13,7 +15,7 @@
*
*/
let apiDomain, imgDomain, assetsUrl, mainUrl, payUrl, zssqUrl, REQ_PWD, CACHE_ENCRYP, API_VERSION, assetsUpUrl, YB_APP // 保融支付的收银台服务地址
let apiDomain, imgDomain, assetsUrl, mainUrl, payUrl, zssqUrl, REQ_PWD, CACHE_ENCRYP, API_VERSION, YB_agenturl, assetsUpUrl, YB_APP // 保融支付的收银台服务地址
function getSearchString (key) {
var str = window.location.href.split('?')[1]
str = str.substring(1, str.length) // 获取URL中?之后的字符(去掉第一位的问号)
@@ -68,6 +70,7 @@ switch (process.env.VUE_APP_FLAG) {
// YB_APP = 'http://10.10.100.98:7001'
// YB_APP = 'https://iagentsales-test2.e-guofu.com:5200/api/v1'
YB_APP = 'https://iagentsales-test2.e-guofu.com:5200/api/' + apiVersion
YB_agenturl ='https://iagentsales-test2.e-guofu.com:443'
API_VERSION = apiVersion
break
case 'uat':
@@ -91,6 +94,7 @@ switch (process.env.VUE_APP_FLAG) {
// 上传影像地址 挂载共享盘 地址
assetsUpUrl = 'https://iagentsales.e-guofu.com'
mainUrl = 'https://iagentsales.e-guofu.com'
YB_agenturl = 'https://iagentsales.e-guofu.com'
payUrl = 'https://uns3.e-guofu.com/s3-modules-gateway/embed/gateway.action'
zssqUrl = ''
REQ_PWD = '41424344454631323334353637383930'
@@ -130,6 +134,7 @@ export default {
assetsUpUrl,
mainUrl,
payUrl,
YB_agenturl,
zssqUrl, //知识社区地址
REQ_PWD, //报文加密密码
CACHE_ENCRYP, //缓存加密密码

View File

@@ -0,0 +1,22 @@
//电子投保 定义相关组件
const step1 = () => import('@/views/ebiz/YB_agentSign/step1')
const step2 = () => import('@/views/ebiz/YB_agentSign/step2')
let riskName = localStorage.riskName
export default [
{
path: '/YB_agentSign/step1',
name: 'step1',
component: step1,
meta: {
title: '银保代理人电子化合同签署'
}
},
{
path: '/YB_agentSign/step2',
name: 'step2',
component: step2,
meta: {
title: '银保代理人电子化合同签署'
}
},
]

View File

@@ -2,6 +2,7 @@
import proposal from './proposal'
import question from './question'
import sale from './sale'
import YB_agentSign from './YB_agentSign'
import customer from './customer'
import my from './my'
import serve from './serve'
@@ -51,6 +52,7 @@ import YB_APP from '../YB_APP/index'
export default [
...proposal,
...sale,
...YB_agentSign,
...customer,
...my,
...serve,

View File

@@ -15,6 +15,7 @@ const answerPage = () => import('@/views/ebiz/sale/answerPage')
const answerSuccess = () => import('@/views/ebiz/sale/answerSuccess')
const accountInformation = () => import('@/views/ebiz/sale/AccountInformation')
const insuranceInformation = () => import('@/views/ebiz/sale/InsuranceInformation')
const insuranceInformation_0081 = () => import('@/views/ebiz/sale/InsuranceInformation_0081')
const insuranceClauses = () => import('@/views/ebiz/sale/insuranceClauses')
const insuranceTip = () => import('@/views/ebiz/sale/InsuranceTip')
const universalRiskNotifyingMessageTip = () => import('@/views/ebiz/sale/universalRiskNotifyingMessageTip')
@@ -164,6 +165,14 @@ export default [
title: '投保须知'
}
},
{
path: '/sale/insuranceInformation_0081',
name: 'insuranceInformation_0081',
component: insuranceInformation_0081,
meta: {
title: '投保须知'
}
},
{
path: '/sale/insuranceClauses',
name: 'insuranceClauses',

View File

@@ -31,8 +31,6 @@ export default new Vuex.Store({
YBidNo: '', //银保代理人电子化合同签署证件号码
YBname: '', //银保代理人电子化合同签署姓名
YBuuid: '', //银保代理人电子化合同签署代理人uuid
uploadImgType: '',
uploadImgOrderNo: '',
},
mutations: {
setOrderDetail (state, data) {
@@ -80,11 +78,8 @@ export default new Vuex.Store({
state.pcList = val
},
//更新 风险测评是否显示状态
updateUploadImgType (state, val) {
state.uploadImgType = val
},
updateUploadImgOrderNo (state, val) {
state.uploadImgOrderNo = val
updateAnswerType (state, val) {
state.answerType = val
},
//更新 银保代理人电子化合同签署证件号码
updateYBidNo (state, val) {
@@ -124,12 +119,6 @@ export default new Vuex.Store({
getAnswerType (state) {
return state.answerType
},
getUploadImgType (state) {
return state.uploadImgType
},
getUploadImgOrderNo (state) {
return state.uploadImgOrderNo
},
getYBidNo (state) {
return state.YBidNo
},

View File

@@ -0,0 +1,196 @@
<template>
<div style="height: 100vh;background: #fff;">
<div style="display: flex;align-items: center;justify-content: center;padding-top: 60px;">
<img style="width: 40px;" src="@/assets/images/logo.png" />
<span style="margin-left: 15px;">请您填写以下正确信息</span>
</div>
<div style="margin-top: 120px;">
<van-cell-group>
<van-field v-model="name" v-validate="'required|salename'" label="姓名" name="姓名"/>
<van-field v-model="idNo" v-validate="'required|idNo'" label="身份证号" name="身份证号" maxlength="18"/>
</van-cell-group>
</div>
<van-button type="danger" class="bottom-btn" @click="nextStep" v-no-more-click="1000">确定</van-button>
<van-dialog class="text-center" v-model="isCaptchaModalShow" title="请输入验证码">
<div style="margin-top: 20px;margin-bottom: 20px;">
<van-field v-model="mobile" label="手机号码" readonly/>
<van-field v-model="code" type="number" v-validate="'required|onlyNumber'" maxlength="6" center clearable label="短信验证码" placeholder="请输入短信验证码">
<template #button>
<van-button size="small" type="danger" :disabled="countDownNum !== 0" @click="getCaptcha">{{
countDownNum === 0 ? '获取验证码' : countDownNum | countDownText
}}</van-button>
</template>
</van-field>
</div>
<div class="bottom">
<van-button type="danger" @click="onCaptchaConfirm" style="width:80%;margin-bottom: 20px;">确定</van-button>
</div>
</van-dialog>
<van-dialog class="text-center nobutton" v-model="isNoButtonModalShow" title="提示">
<div style="margin-top: 20px;margin-bottom: 70px;margin-top: 50px;">
<span>系统不存在该人员或已离职</span>
</div>
</van-dialog>
</div>
</template>
<script>
import {Field, CellGroup} from "vant";
import { getContractInfo, putContractInfo, getAuthCode, checkSignYB } from '@/api/ebiz/YB_agentSign/YB_agentSign'
export default {
name: 'YB_agentSign_step1',
components: {
[Field.name]: Field,
[CellGroup.name]: CellGroup,
},
data() {
return {
name:'',
idNo:'',
isCaptchaModalShow:false,
isNoButtonModalShow: false,
mobile:'',
oldmobile:'',
code:'',
countDownNum: 0,
uuid: ''
}
},
mounted() {
},
methods: {
async nextStep(){
let valid = await this.$validator.validate()
if (true === valid) {
let params = {
idType: "0",
idNo: this.idNo,
name: this.name
}
getContractInfo(params).then(res => {
if (res.result == 0) {
if(res.content.uuid){
this.isCaptchaModalShow = true
this.uuid = res.content.uuid
if(res.content.phone){
this.oldmobile = res.content.phone
this.mobile = this.dataMaskingMobile(this.oldmobile)
}else{
this.$toast('当前代理人没有手机号码信息')
}
}else{
this.$toast(res.content.message)
}
} else {
this.$toast(res.resultMessage)
return false
}
})
// this.isNoButtonModalShow = true
} else {
return this.$toast(this.$validator.errors.all()[0])
}
},
async getCaptcha() {
if(!this.oldmobile){
this.$toast('当前代理人没有手机号码信息,不能获取验证码');
return false
}
let data = {
operateType: 'appntInfoEntry',
type: 'H5',
operateCode: this.oldmobile,
system: 'agentApp',
operateCodeType: '0'
}
// 获取验证码
let res = await getAuthCode(data)
if (res.result === '0') {
this.$toast(res.resultMessage)
this.sid = res.sessionId
this.countDownNum = 60
this.countDownTimer = setInterval(() => {
this.countDownNum--
if (this.countDownNum <= 0) {
clearInterval(this.countDownTimer)
this.countDownTimer = null
}
}, 1000)
} else {
this.$toast(res.resultMessage)
}
},
async onCaptchaConfirm(){
if (!this.sid) {
return this.$toast('请先获取验证码')
}
if (!this.code.trim()) {
return this.$toast('请输入验证码')
}
let res = await checkSignYB({
smsId: this.sid,
code: this.code
})
if (res.result === '0') {
this.code = ''
this.isCaptchaModalShow = false
this.$store.commit('updateYBidNo', this.idNo)
this.$store.commit('updateYBname', this.name)
this.$store.commit('updateYBuuid', this.uuid)
this.$router.push({ path: '/YB_agentSign/step2'})
} else {
this.$toast(res.resultMessage)
}
},
dataMaskingMobile(mobile) {
let str = ''
if (mobile && mobile.trim().length == 11) {
str = mobile.trim().replace(/^(\S{0})(\S*)(\S{4})$/, function(all, u1, u2, u3) {
return u1 + new Array(u2.length + 1).join('*') + u3
})
}
return str
}
},
filters: {
countDownText(val) {
if (isNaN(parseFloat(val))) {
return val
} else {
return `${val} s`
}
}
}
}
</script>
<style lang="scss" scoped>
/deep/ .van-cell{
padding: 18px 15px;
}
/deep/.van-dialog__confirm{
color: #fff!important;
background: #e9332e;
border-radius: 8px;
margin-bottom: 20px;
width: 80%;
}
/deep/.van-field__label{
margin-left: 15px;
}
.text-center{
/deep/.van-field__label{
margin-left: 15px;
text-align: left;
}
}
.nobutton{
/deep/ .van-dialog__footer{
display: none;
}
}
/deep/ .van-dialog__footer{
display: none;
}
</style>

View File

@@ -0,0 +1,230 @@
<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>
<div id="pdf" style="height: 70vh;overflow: scroll;background: #eee;">
<div id="pdfH5ID"></div>
</div>
<van-radio-group v-model='radio' class='pb10 pt20 pl30 fs14'>
<van-radio name='1' @click='click'>
本人确认已阅读<span>国富人寿保险股份有限公司委托代理合同</span>
</van-radio>
</van-radio-group>
<div class='pt30 pl30 flex align-items-c'>
<span class='mr10'>代理人签名 :</span>
<van-button type='danger' size='small' :disabled="signBtnDisable" @click="sign" v-no-more-click='1000'>
{{signInfo.status == '1' ? '签名' : '已签名' }}
</van-button>
<img v-if="signH5Img" :src="signImgUrl" style="height: 34px;margin-left: 20px;width: auto;"/>
</div>
<div class='bg-white bottom-btn'>
<van-button type='danger' size='large' :disabled='isDisabledComplite' @click='goNext' v-no-more-click='1000'>提交
</van-button>
</div>
<van-popup v-model="signSuccessShow" :close-on-click-overlay="false" round>
<div style="width: 300px;height: 150px;text-align: center;">
<div style="margin-top: 30px;font-size: 20px;">提交结果</div>
<div style="margin-top: 30px;font-size: 16px;display: flex;justify-content: center;align-items: center;">
<img src="@/assets/images/ebiz/radio-active.png" style="width: 25px;height: 25px;"/>
<span style="margin-left: 15px;">签署成功</span>
</div>
</div>
</van-popup>
</div>
</template>
<script>
import { RadioGroup, Radio, Dialog, NoticeBar } from 'vant'
import config from '@/config'
import { generateAgreementYB, putContractInfo } from '@/api/ebiz/YB_agentSign/YB_agentSign'
import Pdfh5 from "pdfh5";
export default {
data() {
let isWeixin = this.$utils.device().isWeixin //判断环境
return {
time:'10',
radio: '',
number: '',
src: location.origin + '/pdfjs/web/viewer.html?file=',
pdfUrl: '',
signVal: '2',
base64: '',
signBtnDisable: true,
isDisabledComplite:true,
isOver: false,
signInfo: {
status: '1'
},
signSuccessShow:false,
signImgUrl:'data:image/gif;base64,',
signH5Val: '',
signH5Img: '',
pdfh5: null
}
},
components: {
[RadioGroup.name]: RadioGroup,
[Radio.name]: Radio,
[Dialog.name]: Dialog,
[NoticeBar.name]: NoticeBar
},
created(){
this.timeOut()
},
mounted() {
document.body.style.backgroundColor = '#fff'
this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
})
let dataParams = {
idType:'0',
idNo:this.$store.getters.getYBidNo,
name:this.$store.getters.getYBname
}
generateAgreementYB(dataParams).then(res=>{
this.$toast.clear()
if(res.result == 0){
window.sessionStorage.setItem('signName',this.$store.getters.getYBname)
// this.pdfUrl = config.assetsUpUrl + res.content.rgssUrl
//实例化
this.pdfh5 = new Pdfh5("#pdfH5ID", {
pdfurl: config.YB_agenturl + res.content.rgssUrl,
// pdfurl: 'https://iagentsales-test2.e-guofu.com/opt/ebiz/webapps/ebiz-epolicy/pdf/2023/08/09/1000001078372351/1000001078372351.pdf',
lazy:false,
scale:1
}).on("complete", function (status, msg, time) { //监听完成事件
console.log("状态:" + status + ",信息:" + msg + ",耗时:" + time + "毫秒,总页数:" + this.totalNum)
})
this.signH5Img = sessionStorage.getItem('signH5Img')
if(this.signH5Img){
this.$set(this.signInfo, 'status', '2')
this.radio = '1'
this.Time = true
this.isOver = true
this.signImgUrl = this.signImgUrl + this.signH5Img
}
}else{
this.$toast(res.resultMessage)
}
})
},
methods: {
// 点击阅读时
click() {
let that = this
if (that.isOver == false) {
Dialog.confirm({
title: '提示',
message: '该内容涉及您的重大权益,请您仔细阅读',
showCancelButton: false
}).then(() => {
that.radio = ''
})
}
},
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)
},
sign() {
window.location.href = 'http://'+window.location.host + '/signH5/1.html'
},
goNext(){
// this.signSuccessShow = true
// window.localStorage.removeItem('signInfo')
let params = {
uuid:this.$store.getters.getYBuuid,
signInfo: window.sessionStorage.getItem('signH5Val')
}
putContractInfo(params).then(res=>{
if(res.result == 0){
this.signSuccessShow = true
window.localStorage.removeItem('signInfo')
}else{
this.$toast(res.resultMessage)
}
})
}
},
computed: {
listenChange() {
const { isOver, radio, signInfo } = this
return { isOver, radio, signInfo }
}
},
beforeRouteLeave(to, from, next) {
window.sessionStorage.removeItem('signH5Val')
document.body.style.backgroundColor = ''
next()
},
watch: {
listenChange(val) {
let that = this
if (that.signVal == '0' || that.signVal == '2') {
if (val.isOver == true && val.radio != '') {
that.signBtnDisable = false
} else {
that.signBtnDisable = true
}
if (that.radio == '1' && val.signInfo.status == '2') {
that.isDisabledComplite = false
} else {
that.isDisabledComplite = true
}
}
}
}
}
</script>
<style lang='scss' scoped>
img {
width: 100%;
height: 100%;
}
.notice {
width: 100%;
position: fixed;
top: 0;
z-index: 20;
}
.iframe {
width: 100vw;
height: 70vh;
}
#pdfH5ID{
width: 100vw;
}
/deep/.viewerContainer{
width: 100vw;
overflow: inherit;
}
/deep/ .pageNum{
display: none!important;
}
/deep/ .pageContainer{
margin: 2vw;
background: #fff;
img{
width: 96vw;
}
}
</style>

View File

@@ -0,0 +1,702 @@
<template>
<div class="sale-list-container pb50 text-center" v-if="isCheck == 1">
<p class="f10 gray mt60">您暂无使用权限</p>
<p class="f10 gray mt5">如有问题咨询请联系个险业务部</p>
</div>
<div class="sale-list-container pb50" v-else-if="isCheck == 0">
<van-search placeholder="请输入投保人姓名" v-model="searchName" @change="searchList" @keyup.enter="searchList" />
<van-sticky>
<van-tabs :line-width="45" v-model="active" @change="tabChange" sticky>
<van-tab name="uncommit" title="未提交"></van-tab>
<van-tab name="commit" title="已提交"></van-tab>
<van-tab name="waitUnderwritten" title="待承保"></van-tab>
</van-tabs>
</van-sticky>
<van-list
v-model="loading"
:immediate-check="false"
:finished="finished"
:finished-text="finishedText"
error-text="请求失败点击重新加载"
:error.sync="error"
@load="loadMore"
class="pb45"
>
<div v-if="isSuccess">
<div v-if="saleList.length > 0">
<div v-for="(order, index) in saleList" :key="index">
<div class="fs12 mt20 mb5 text-center">{{ order.orderInfoDTO.createDate }}</div>
<div class="bg-white m15 pv15 pr15 pl10">
<div class="flex justify-content-s align-items-c">
<div>
<div class="w45 inline-b">
<van-tag plain color="#5CA7DE">投保</van-tag>
</div>
<span class="fs15 c-gray-dark">{{ order.appntDTO.name }}</span>
</div>
</div>
<div v-for="(insured, insuredIndex) in order.insuredDTOs" :key="insuredIndex">
<div class="mv15">
<div class="w45 inline-b">
<van-tag plain color="#DD9C56">被保</van-tag>
</div>
<span class="fs15 c-gray-dark">{{ insured.name }}</span>
</div>
<div v-for="(main, mainIndex) in insured.mainRisk" :key="mainIndex">
<div class="mv10">
<span class="w45 inline-b">
<van-tag plain type="danger">主险</van-tag>
</span>
<span class="fs15 c-gray-dark">{{ main.riskName }}</span>
</div>
<div class="mv10 pl45 flex" v-for="(addtional, addtionIndex) in main.addtion" :key="addtionIndex">
<span class="mr10" style="flex-shrink: 0">
<van-tag mark color="#DDF2EF" text-color="#E9332E">附加</van-tag>
</span>
<span class="fs13">{{ addtional.riskName }}</span>
</div>
</div>
</div>
<div class="flex fs15 justify-content-s mt15 mb15">
<span class="c-gray-darker fwb">首期总保费</span>
<span class="yellow fwb">{{ order.firstPrem == 0 ? '0.00' : order.firstPrem | moneyFormat }}</span>
</div>
<div class="pt15" v-if="active == 'commit' || active == 'waitUnderwritten'" style="border-top:1px solid #dadada">
<div>
<div class="w80 inline-b">
<van-tag plain color="#999999">投保单号</van-tag>
</div>
<span class="fs14 c-gray-dark">{{ order.orderInfoDTO.orderNo }}</span>
</div>
<div class="mt10">
<div class="w80 inline-b">
<van-tag plain color="#999999">状态</van-tag>
</div>
<span class="fs14 c-gray-dark">{{ order.stateName }}</span>
</div>
</div>
<div v-if="!!order.orderInfoDTO.doubleFlag && order.orderInfoDTO.doubleFlag == '0'" class="fs12 mt15">
温馨提示本投保单满足双录条件需要双录质检通过后才能承保
</div>
<div class="text-right mt15 ">
<van-button v-if="active == 'uncommit'" round @click="goDetail(order)" size="small" class="mr5" type="danger" v-no-more-click="1000"
>编辑</van-button
>
<van-button
v-if="active == 'uncommit'"
plain
round
@click.stop="del(order, index)"
size="small"
class="mr5"
type="danger"
v-no-more-click="1000"
>删除</van-button
>
<van-button
@click="againPay(order)"
v-if="active == 'commit' && order.orderInfoDTO.orderStatus == '19'"
size="small"
class="mr5"
type="danger"
round
>重新支付</van-button
>
<van-button
@click="changeCard(order)"
v-if="(active == 'commit' && order.orderInfoDTO.orderStatus == '48') || (active == 'commit' && order.orderInfoDTO.orderStatus == '49')"
size="small"
class="mr5"
type="danger"
round
>修改卡号</van-button
>
<template v-if="active == 'commit' && order.orderInfoDTO.orderStatus == '55'">
<van-button @click="changeCard(order)" size="small" class="mr5" type="danger" round>修改卡号</van-button>
<van-button @click="againPay(order)" size="small" class="mr5" type="danger" round>重新支付</van-button>
</template>
<template v-if="active == 'commit' && (order.orderInfoDTO.orderStatus == '02' || order.orderInfoDTO.orderStatus == '58')">
<van-button @click="goPay(order)" size="small" class="mr5" type="danger" round>去支付</van-button>
</template>
<!-- doubleFlag 1- 0-doubleFlag为0双录时canRevokeDouble加 orderStatus 16 -->
<van-button
@click="revokeOrder(order)"
v-if="active == 'commit' && ((canRevoke[order.orderInfoDTO.orderStatus] && (order.orderInfoDTO.doubleFlag == '1' || order.orderInfoDTO.doubleFlag == null || order.orderInfoDTO.doubleFlag == ''))
|| (canRevokeDouble[order.orderInfoDTO.orderStatus] && order.orderInfoDTO.doubleFlag == '0'))"
size="small"
class="mr5"
type="danger"
round
>撤单</van-button
>
<van-button @click="seePolicy(order)" v-if="active == 'commit'" size="small" type="danger" round>查看投保单</van-button>
</div>
</div>
</div>
</div>
<div v-else class="text-center">
<img class="mt40" src="@/assets/images/pic_page-non.png" />
<div class="fs17 mt40">暂无订单</div>
</div>
</div>
</van-list>
<van-button type="danger" class="bottom-btn" @click="add" v-no-more-click="1000">点我新增</van-button>
<van-dialog
class="dialog-delete"
@confirm="checkCaptchaCode"
@cancel="cancelCaptchaCode"
:before-close="beforeClose"
confirm-button-color="#fff"
v-model="revokePanelShow"
title="短信验证"
show-cancel-button
>
<p class="captchaReceiver">投保人手机号: {{ captchaReceiver | phoneNumFilter }}</p>
<van-field v-model="sms" center clearable placeholder="请输入短信验证码">
<template #button>
<van-button :disabled="sendTime !== 0" v-no-more-click="1000" @click="getCaptchaCode" size="small" type="danger">{{
sendTime ? `${sendTime}s后获取` : '获取验证码'
}}</van-button>
</template>
</van-field>
</van-dialog>
<!-- 短信验证 -->
<check-agent @checModelSuccessMethod="initThisPage" />
</div>
</template>
<script>
import { Search, Tabs, Tab, List, Tag, Sticky, Toast, Dialog, Field } from 'vant'
import { orderList, deleteOrderInfo, getAuthCode, revokeOrder } from '@/api/ebiz/sale/sale'
import { funcPermCheck } from '@/api/ebiz/common/common'
import { formatRiskList } from '@/assets/js/utils/formatRiskList.js'
import dataDictionary from '@/assets/js/utils/data-dictionary' //根据数据字典找到用户等级
import CheckAgent from '@/components/common/CheckAgent'
export default {
name: 'saleList',
components: {
[CheckAgent.name]: CheckAgent,
[Field.name]: Field,
[Search.name]: Search,
[Tabs.name]: Tabs,
[Tab.name]: Tab,
[List.name]: List,
[Tag.name]: Tag,
[Sticky.name]: Sticky,
[Dialog.name]: Dialog
},
data() {
return {
isCheck: 0, //查看是否有权限
showFlag: true,
searchName: '',
active: 'uncommit', //uncommit 表示未提交 commit表示已提交
saleList: [],
loading: false,
finished: false,
total: '', //总页数
currentPage: 1, //当前页数
error: false,
finishedText: '没有更多了',
pageSize: 5, //每页数据条数
isSuccess: false,
canRevoke: {
'19': true,
'02': true,
'48': true,
'49': true,
'55': true,
'58': true,
'46': true,
'50': true,
'51': true
},
canRevokeDouble: {
'19': true,
'02': true,
'48': true,
'49': true,
'55': true,
'58': true,
'46': true,
'50': true,
'51': true,
'16': true,
},
revokePanelShow: false,
sms: '',
smsId: '',
sendTime: 0,
getCaptcha: false,
captchaTimer: null,
captchaReceiver: '',
revokeOrderNo: '',
captchaMaped: false
}
},
mounted() {
setTimeout(() => {
// eslint-disable-next-line no-undef
EWebBridge.webCallAppInJs('webview_left_button', {
intercept: '1' //是否拦截原生返回事件 1是 其他否
})
}, 100)
window.appCallBack = this.appCallBack
funcPermCheck({}).then(res => {
this.isCheck = res.result
})
},
methods: {
beforeClose(action, done) {
this.captchaMaped ? done() : done(false)
},
async getCaptchaCode() {
if (this.sendTime !== 0) return
this.getCaptcha = true
this.sendTime = 60
let data = {
operateType: 'appntInfoEntry',
type: 'H5',
operateCode: this.captchaReceiver,
system: 'agentApp',
operateCodeType: '0'
}
let res = await getAuthCode(data)
if (res.result === '0') {
this.$toast('获取验证码成功')
}
this.smsId = res.sessionId
this.captchaTimer = setInterval(() => {
this.sendTime--
if (this.sendTime === 0) {
clearInterval(this.captchaTimer)
this.captchaTimer = null
}
}, 1000)
},
async checkCaptchaCode() {
if (!this.getCaptcha) {
return this.$toast('请先获取验证码')
}
if (!this.sms.trim()) {
return this.$toast('请输入验证码')
}
clearInterval(this.captchaTimer)
this.captchaTimer = null
let revokeResult = await revokeOrder({
id: this.revokeOrderNo,
smsId: this.smsId,
code: this.sms
})
if (revokeResult.result == 0) {
this.$toast('撤单成功!')
setTimeout(() => {
this.saleList = []
this.isSuccess = false
this.currentPage = 1
;[this.loading, this.finished] = [true, false]
let pageInfo = {
pageNum: this.currentPage,
pageSize: this.pageSize,
orderType: this.active
}
this.loadMore(pageInfo)
}, 1000)
} else {
Toast.fail(revokeResult.resultMessage)
}
this.cancelCaptchaCode()
this.sms = ''
},
cancelCaptchaCode() {
this.sendTime = 0
this.revokePanelShow = false
clearInterval(this.captchaTimer)
this.captchaTimer = null
this.getCaptcha = false
this.captchaMaped = false
this.captchaReceiver = ''
},
initThisPage(showFlag) {
this.showFlag = showFlag
if (this.showFlag) {
return
}
this.loadMore()
},
appCallBack(data) {
if (data.trigger == 'left_button_click') {
this.$jump({
flag: 'home'
})
}
},
//分页用
loadMore() {
if (this.showFlag) {
return
}
let pageInfo = {
pageNum: this.currentPage,
pageSize: this.pageSize,
orderType: this.active,
name: this.searchName,
desensitizType: this.active === 'uncommit' ? 1 : 0
}
this.getOrderList(pageInfo)
},
//再次支付
againPay(order) {
localStorage.orderNo = order.orderInfoDTO.orderNo
// 再次支付 salelist为 0
localStorage.salelist = '0'
localStorage.removeItem('changeCard')
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/payMent?orderNo=' + order.orderInfoDTO.orderNo
},
routerInfo: { path: '/sale/payMent?orderNo=' + order.orderInfoDTO.orderNo }
})
},
//支付失败去换卡
changeCard(order) {
let url = ''
let orderStatus = order.orderInfoDTO.orderStatus
localStorage.orderNo = order.orderInfoDTO.orderNo
if (order.insuredDTOs[0].riskDTOLst[0]) {
localStorage.setItem('productCode', order.insuredDTOs[0].riskDTOLst[0].mainRiskCode)
}
localStorage.setItem('changeCard', true)
switch (orderStatus) {
case '55': //账户信息页
url = '/sale/AccountInformation?orderNo=' + order.orderInfoDTO.orderNo
break
case '48': //账户信息填写成功,跳到影像上传页
url = '/sale/AttachmentManagement?orderNo=' + order.orderInfoDTO.orderNo
break
case '49': //影像上传页填写成功,跳到银行卡号确认页
url = '/sale/SignatureConfirmation?orderNo=' + order.orderInfoDTO.orderNo
break
}
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#${url}`
},
routerInfo: { path: url }
})
},
//去支付
goPay(order) {
localStorage.orderNo = order.orderInfoDTO.orderNo
localStorage.setItem('AppntidType', order.appntDTO.idType)
localStorage.salelist = '1'
localStorage.removeItem('changeCard')
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/payMent?orderNo=' + order.orderInfoDTO.orderNo
},
routerInfo: { path: '/sale/payMent?orderNo=' + order.orderInfoDTO.orderNo }
})
},
//查看保单
seePolicy(order) {
localStorage.orderNo = order.orderInfoDTO.orderNo
localStorage.removeItem('changeCard')
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/detail?type=1&orderNo=' + order.orderInfoDTO.orderNo
},
routerInfo: {
path: '/sale/detail?orderNo=' + order.orderInfoDTO.orderNo,
query: {
type: 1
}
}
})
},
//初始化保单列表
getOrderList(pageInfo) {
orderList(pageInfo).then(res => {
if (res.result == '0') {
this.isSuccess = true
this.currentPage++
if (res.orderDTOPageInfo == null || res.orderDTOPageInfo == '' || res.orderDTOPageInfo == undefined) {
this.finished = true
this.loading = false
this.finishedText = ''
return
}
let list = res.orderDTOPageInfo.list
if (list.length == 0) {
this.finishedText = ''
} else {
this.finishedText = '已经全部加载'
}
list = formatRiskList(list, 'insuredDTOs', 'riskDTOLst') //根据后面两个参数 来格式化数据
dataDictionary.policyState.forEach(state => {
list.forEach(order => {
if (state.id == order.orderInfoDTO.orderStatus) {
order.stateName = state.text
}
})
})
this.saleList = this.saleList.concat(list)
if (this.saleList.length == 0) {
this.isSuccess = false
}
this.loading = false
if (res.orderDTOPageInfo.nextPage == 0) {
//当下一页为0时 表示全部数据加载完毕
this.finished = true
}
} else {
this.finished = true
this.loading = false
this.finishedText = res.resultMessage
}
})
},
tabChange(name) {
this.currentPage = 1
this.active = name
this.saleList = []
;[this.loading, this.finished] = [true, false]
this.finishedText = '正在加载...'
this.loadMore()
},
searchList() {
this.currentPage = 1
this.saleList = []
;[this.loading, this.finished] = [true, false]
this.finishedText = '正在加载...'
this.loadMore()
},
//投保单详情
goDetail(order) {
let thisToken = this.$CacheUtils.getLocItem('token')
window.localStorage.clear()
this.$CacheUtils.setLocItem('token', thisToken)
window.localStorage.setItem('detailJump', '')
if (order.insuredDTOs[0]) {
if (order.insuredDTOs[0].riskDTOLst[0]) {
localStorage.setItem('productCode', order.insuredDTOs[0].riskDTOLst[0].mainRiskCode)
}
}
let orderStatus = order.orderInfoDTO.orderStatus
let orderNo = order.orderInfoDTO.orderNo
let url = ''
//保存对应的订单号
localStorage.orderNo = orderNo
localStorage.isFrom = 'sale'
localStorage.removeItem('changeCard')
if(orderStatus == '01'){ //已签名待客户确认, 跳到签名确认页面
url = '/sale/SignatureConfirmation?edit=1&orderNo='+orderNo
}else if(orderStatus == '43'){//未签名待客户确认, 跳到签名确认页面
url = '/sale/SignatureConfirmation?edit=1&orderNo='+orderNo
}else if(orderStatus == '35'){//投保人保存成功, 跳到被保险人页面
url = '/sale/insuredPerson?edit=1&orderNo='+orderNo
}else if(orderStatus == '36'){//被保险人保存成功, 跳到已选产品列表
url = '/common/selectedProduct?edit=1&orderNo='+orderNo
}else if(orderStatus == '37'){//受益人保存成功, 跳到告知信息--
url = '/sale/NotifyingMessage?edit=1&orderNo='+orderNo
}else if(orderStatus == '38'){ //账户信息保存成功, 跳到附件管理--
url = '/sale/AttachmentManagement?edit=1&orderNo='+orderNo
}else if(orderStatus == '39'){ //险种信息保存成功, 跳到已选产品列表
url = '/common/selectedProduct?edit=1&orderNo='+orderNo
}else if(orderStatus == '40'){//告知信息保存成功, 跳到风险测评--
if( order.riskEvaluationDTO.isShowEvaluationPoint != '1'){
if(order.universalRiskNotifyDTO && order.universalRiskNotifyDTO.isUniversalRiskNotifyShowPoint == '1'){
url = '/sale/universalRiskNotifyingMessage?edit=1&orderNo='+orderNo
}else{
url = '/sale/AccountInformation?edit=1&orderNo='+orderNo
}
}else {
url = '/sale/answerPage?edit=1&orderNo='+orderNo
}
}else if(orderStatus == ''){//跳到投保人
url = '/sale/insuredInfo?edit=1&orderNo='+orderNo
}else if(orderStatus == '44'){//建议书转投保, 跳到投保人
url = '/sale/insuredInfo?edit=1&orderNo='+orderNo
}else if(orderStatus == '62'){//风险测评保存成功, 跳到账户信息--
if(order.universalRiskNotifyDTO && order.universalRiskNotifyDTO.isUniversalRiskNotifyShowPoint != '1'){
url = '/sale/AccountInformation?edit=1&orderNo='+orderNo
}else{
url = '/sale/universalRiskNotifyingMessage?edit=1&orderNo='+orderNo
}
}else if(orderStatus == '63'){//风险测评保存成功, 跳到账户信息--
url = '/sale/AccountInformation?edit=1&orderNo='+orderNo
}
// switch (orderStatus) {
// case '01': //已签名待客户确认, 跳到签名确认页面
// url = '/sale/SignatureConfirmation?edit=1'
// break
// case '43': //未签名待客户确认, 跳到签名确认页面
// url = '/sale/SignatureConfirmation?edit=1'
// break
// case '35': //投保人保存成功, 跳到被保险人页面--
// url = '/sale/insuredPerson?edit=1'
// break
// case '36': //被保险人保存成功, 跳到已选产品列表
// url = '/common/selectedProduct?edit=1'
// break
// case '37': //受益人保存成功, 跳到告知信息--
// url = '/sale/NotifyingMessage?edit=1'
// break
// case '38': //账户信息保存成功, 跳到附件管理--
// url = '/sale/AttachmentManagement?edit=1'
// break
// case '39': //险种信息保存成功, 跳到已选产品列表
// url = '/common/selectedProduct?edit=1'
// break
// case '40': //告知信息保存成功, 跳到风险测评--
// url = '/sale/answerPage?edit=1'
// break
// case '': //跳到投保人
// url = '/sale/insuredInfo?edit=1'
// break
// case '44': //建议书转投保, 跳到投保人
// url = '/sale/insuredInfo?edit=1'
// break
// case '62': //风险测评保存成功, 跳到账户信息--
// // url = '/sale/AccountInformation?edit=1'
// url = '/sale/answerSuccess?edit=1'
// break
// default:
// break
// }
this.$jump({
flag: 'h5',
extra: {
forbidSwipeBack: '1',
url: location.origin + `/#${url}`
},
routerInfo: { path: url }
})
},
//删除投保单
del(order) {
let params = {
orderType: 'DEL_ORDER', //列表页 此值为固定
id: order.orderInfoDTO.orderNo,
orderDTO: {
orderInfo: {
orderNo: order.orderNo
}
}
}
this.$dialog
.confirm({
className: 'dialog-delete',
title: '提示',
message: '确认删除投保单吗?',
cancelButtonColor: '#E9332E',
confirmButtonColor: '#FFFFFF'
})
.then(() => {
deleteOrderInfo(params).then(res => {
if (res.result == 0) {
this.saleList = []
this.isSuccess = false
this.currentPage = 1
;[this.loading, this.finished] = [true, false]
let pageInfo = {
pageNum: this.currentPage,
pageSize: this.pageSize,
orderType: this.active
}
this.loadMore(pageInfo)
} else {
Toast.fail(res.resultMessage)
}
})
})
.catch(() => {})
},
//新增
add() {
let thisToken = this.$CacheUtils.getLocItem('token')
window.localStorage.clear()
this.$CacheUtils.setLocItem('token', thisToken)
localStorage.orderNo = ''
localStorage.chooseProductCodes = '' //置空所选险种
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/insuredInfo'
},
routerInfo: { path: '/sale/insuredInfo' }
})
},
revokeOrder(order) {
console.dir(order)
this.$dialog
.confirm({
className: 'dialog-delete',
title: '提示',
message: '撤单后,数据将不可恢复,您确定要撤单吗?',
cancelButtonColor: '#E9332E',
confirmButtonColor: '#FFFFFF'
})
.then(() => {
this.revokePanelShow = true
this.captchaReceiver = order.appntDTO.mobile
this.revokeOrderNo = order.orderInfoDTO.orderNo
})
}
},
filters: {
encryCheckModelMobile(code) {
return code.replace(/^(\d{3})\d{4}(\d{4})$/, '$1****$2')
},
phoneNumFilter(phoneNum) {
let num = phoneNum.split('')
num.splice(3, 4, '****')
return num.join('')
}
}
}
</script>
<style lang="scss" scoped>
/deep/ .dialog-delete .van-dialog__header {
padding: 0.5em;
margin-bottom: 0;
border-bottom: 1px solid #eaeaea;
}
/deep/ .van-cell {
padding: 0;
padding-bottom: 0.5em;
border-bottom: 1px solid #eaeaea;
}
/deep/ .van-dialog__content {
padding: 1em;
}
.captchaReceiver {
margin-bottom: 1em;
padding-bottom: 1em;
border-bottom: 1px solid #eaeaea;
font-size: 14px;
}
.van-search__content {
background: #fff !important;
border-radius: 10px;
}
.van-search {
background: none !important;
}
</style>

View File

@@ -319,7 +319,7 @@
placeholder="请录入保单号或者投保单号,如果关联多个保单,请用\隔开"
/>
</div>
<div class="flex justify-content-s pv10 border-bottom prem">
<div class="flex justify-content-s pv10 border-bottom prem" v-if="item.productCode != 'GFRS_M0080'">
<!-- trialType 0-保额算保费1-保费算保额 -->
<!-- isTrial是否需存在特殊配置(规则) 0-是 1-否-->
<span

File diff suppressed because it is too large Load Diff

View File

@@ -194,7 +194,7 @@ export default {
getAgentInfo({}).then(
res => {
if (res.result == 0) {
flag.manageComCode = res.manageComCode.substring(2, 4)
flag.manageComCode = res.manageComCode ? res.manageComCode.substring(2, 4) : ''
flag.jobNo = res.jobNo
// branchType N1、1代表个险渠道 和 N5、5 代表中介渠道N代表内勤
if (res.branchType == 'N1' || res.branchType == '1') {

View File

@@ -51,14 +51,14 @@
<div class="fs12 div_4">
<div class="risk_head flex text-center line-height table fs12 bg_DBEFFE">
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7">投保险种</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">保额(</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border" v-if="mainRiskCodes[0] != 'GFRS_M0080'">保额(</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">保险期间</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">交费期间</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">首年保费()</div>
</div>
<div class="risk_body flex text-center table bg_f7fbff" v-for="(riskItem, index) in pageShowInfo.showInsuredDTO.riskDTOLst" :key="index">
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7">{{ riskItem.riskName }}</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">{{ riskItem.amt ? riskItem.amt : '--' }}</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border" v-if="mainRiskCodes[0] != 'GFRS_M0080'">{{ riskItem.amt ? riskItem.amt : '--' }}</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">{{ riskItem.insureName }}</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">{{ riskItem.payName }}</div>
<div class="flex justify-content-c align-items-c pl7 pr7 pt7 pb7 table_border">{{ riskItem.showPrem ? riskItem.showPrem : '--' }}</div>

View File

@@ -115,6 +115,10 @@ export function relevance(insured, insuredLabelResult, insuredResult, insuredInf
//将被保人与利益演示相关联(被保人维度)
export function relevanceByInsure(insured, insuredLabelResult, insuredResult, insuredInfoResult) {
console.log(insured)
console.log(insuredLabelResult)
console.log(insuredResult)
console.log(insuredInfoResult)
insured.forEach(insure => {
for (let key in insuredLabelResult[insure.insuredId]) {
insure.demoLabel = insuredLabelResult[insure.insuredId][key]
@@ -144,20 +148,25 @@ export function relevanceByInsure(insured, insuredLabelResult, insuredResult, in
let currentInsuredInfo = insuredInfoResult[insure.insuredId][risk.riskCode]
if (currentInsuredInfo.plan && currentInsuredInfo.plan === '0') {
let defaulValue = 'M' //档位默认值
let radios = [
{
let radios = []
if(currentInsuredInfo.L){
radios.push({
label: '低档' + currentInsuredInfo.L,
value: 'L'
},
{
})
}
if(currentInsuredInfo.M){
radios.push({
label: '中档' + currentInsuredInfo.M,
value: 'M'
},
{
})
}
if(currentInsuredInfo.H){
radios.push({
label: '高档' + currentInsuredInfo.H,
value: 'H'
}
]
})
}
insure.tap = defaulValue
radios.forEach(item => {
insure.radios.push(item)

View File

@@ -250,7 +250,7 @@ import idNoCheck from '@/assets/js/utils/idNoCheck'
import { idToData } from './js/verification'
import { selectComp } from './js/methods'
import getAreaName from '@/assets/js/utils/getAreaNameForSale'
import { getOrderDetail } from '@/api/ebiz/sale/sale'
import { getOrderDetail, checkAppointBnf } from '@/api/ebiz/sale/sale'
let relationToInsured = [
{ id: 2, text: '配偶' },
@@ -1114,21 +1114,51 @@ export default {
}
}
beneficiaries.push(this.userInfo)
// 保存 新增的受益人信息 以及页面跳转字段
localStorage.beneficiaryInfo = JSON.stringify(beneficiaries)
localStorage.fromAddBeneficiaryInfo = true
if (this.userInfo.asAppntAddress == true) {
localStorage.applicant = '1'
let thisbnfDTOs = []
thisbnfDTOs.push(this.userInfo)
let params = {
orderType: 'BNF_ORDER',
orderDTO: {
productDTO: null,
orderInfoDTO: {
bnfFlag: this.bnfFlag,
orderNo: this.$route.query.orderNo
},
appntDTO: {},
insuredDTOs: [
{
insuredId: JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo')).insuredId,
bnfDTOs: thisbnfDTOs
}
],
paymentDTO: {},
orderAccountDTO: {},
channelDTO: null,
orderExpandDTO: null,
thirdOrderDTO: null
}
}
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/beneficiary?orderNo=' + this.$route.query.orderNo,
needRefresh: '1'
},
routerInfo: {
path: '/sale/beneficiary?orderNo=' + this.$route.query.orderNo
checkAppointBnf(params).then(res=>{
if(res.result == '0'){
beneficiaries.push(this.userInfo)
// 保存 新增的受益人信息 以及页面跳转字段
localStorage.beneficiaryInfo = JSON.stringify(beneficiaries)
localStorage.fromAddBeneficiaryInfo = true
if (this.userInfo.asAppntAddress == true) {
localStorage.applicant = '1'
}
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/beneficiary?orderNo=' + this.$route.query.orderNo,
needRefresh: '1'
},
routerInfo: {
path: '/sale/beneficiary?orderNo=' + this.$route.query.orderNo
}
})
} else {
this.$toast(res.resultMessage)
}
})
} else {

View File

@@ -0,0 +1,765 @@
<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>
<div class="bg-white flex justify-content-c flex-direction-colunm align-it<po>ems-center p20 fs14">
<!-- 重疾, 医疗, 意外 -->
<div v-if="!changeCard">
<h2 style="text-align:center" class="mb20">国富人寿保险股份有限公司</h2>
<h2 style="text-align:center" class="mb20">人身保险投保须知</h2>
<p class="mb20">
1.本产品由国富人寿保险股份有限公司以下简称国富人寿承保目前该公司广西贵州地区设有分支机构
</p>
<p class="mb20">
2.您的本次投保信息将以电子投保书的形式提交给国富人寿
</p>
<p class="mb20">
3.电子投保书的填写本电子投保书是您与国富人寿订立保险合同的重要组成部分为保障您的权益请务必保证电子投保书各项内容为投保人和被保险人如实准确填写请您以书面形式对所有告知事项进行告知
<span class="fw600">
依据中华人民共和国保险法的有关规定保险公司就被保险人有关情况的询问您应当履行如实告知义务
</span>
投保人故意或者因重大过失未履行如实告知义务足以影响保险公司决定是否同意承保或者提高保险费率的保险公司有权解除合同前款规定的合同解除权自保险公司知道有解除事由之日起超过三十日不行使而消灭自合同成立之日起超过二年的保险公司不得解除合同发生保险事故的保险公司应当承担赔偿或者给付保险金的责任投保人故意不履行如实告知义务的保险公司对于合同解除前发生的保险事故不承担赔偿或者给付保险金的责任并不退还保险费投保人因重大过失未履行如实告知义务对保险事故的发生有严重影响的保险公司对于合同解除前发生的保险事故不承担赔偿或者给付保险金的责任但应当退还保险费保险公司在合同订立时已经知道投保人未如实告知的情况的保险公司不得解除合同发生保险事故的保险公司应当承担赔偿或者给付保险金的责任保险事故是指保险合同约定的保险责任范围内的事故
</p>
<p class="mb20">
4.投保信息真实性为保障您的权益请您务必真实准确地填写相关投保信息包括但不限于投保人被保险人和受益人的姓名性别出生日期证件类型证件号码本人联系电话和联系地址等如果您提供的信息不真实不准确或不完整可能导致保险合同无效或您的权益受损等
</p>
<p class="mb20">
5.您在投保时如有疑问投保成功后需要查询保单信息投保成功后如有资料需要变更以及投诉请您关注国富人寿保险官方微信公众号或前往国富人寿客户服务中心进行办理同时还可拨打4006946688咨询
</p>
<p class="mb20">
6.投保前请您认真阅读产品条款页面展示内容条款合同解除责任免除犹豫期退保退保投保声明等重要内容确认理解并接受条款和页面提示的全部内容了解理赔申请方式及理赔应备文件
</p>
<p class="mb20">
7.如您成功投保国富人寿保险产品国富人寿将根据您投保时申请的保单形式为您发送电子保险合同或寄送纸质版电子保险合同本产品自保险合同签收之日起有15日的犹豫期在此期间如果您认为本产品与您的需求不相符可以提出解除保险合同我们将退还您所交的保险费此时不会有损失如果超过犹豫期退保国富人寿将退还您现金价值此时有一定的损失请您慎重犹豫期过后国富人寿向您投保时提供的电子邮箱发送电子发票请您注意查收
</p>
<p class="mb20">
8.国富人寿分支机构信息详见官网信息公示官网地址www.e-guofu.com)
</p>
<p class="mb20">
9.以身故为给付保险金条件的保险合同未经被保险人同意并认可保险金额的保险合同无效父母为其未成年子女投保的人身保险,不受此规定限制
</p>
<p class="mb20">
10.为未成年子女投保的人身保险因被保险人死亡给付的保险金总和不得超过国务院保险监督管理机构规定的限额死亡给付的保险金额总和约定也不得超过前述限额
</p>
<p class="mb20">
11.请您根据自身财务状况确定选择了合适的交费期间和交费金额无法持续交纳保险费有可能导致合同效力中止或保险合同解除提前终止或放弃之前有效的保险合同可能使您蒙受经济上的损失
</p>
<p class="mb20">
12.国富人寿采集客户信息的用途包括但不限于计算保费核保寄送保单客户回访续期提醒和寄送通知书推荐产品等<br />
为了保证您的权益如果联系电话和联系地址等信息发生变更应及时办理更正手续
</p>
<p class="mb">
13.国富人寿承诺未经您的同意不会将客户信息用于第三方机构的销售活动
</p>
<p class="mb20">
14.其他服务说明<br />
1投保承保流程<br />
选择保险产品点击购买填写投保信息确认信息和金额在线支付收到承保通知投保成功<br />
2保险费支付方式<br />
本产品的保险费支付方式银行转账或微信支付<br />
3保单变更办理流程<br />
方式一 微信办理<br />
您可关注国富人寿保险微信公众号点击服务大厅菜单注册用户进入服务大厅-保单查询与变更完成在线办理或提交申请材料<br />
方式二 柜面办理<br />
您可前往国富人寿客户服务中心柜面办理保单变更业务<br />
4保险金支付和业务款项退费<br />
各类保险金将根据权益人授权的银行账号进行转账支付<br />
保单退费款项按客户申请办理相应业务时所授权的银行账号进行转账支付<br />
</p>
<h2 style="text-align:center" class="mb20">投保人授权声明</h2>
<p class="mb20">
1为提供保险服务的需要本人授权国富人寿保险股份有限公司以下简称国富人寿可通过知悉本人信息的机构查询与本人有关的全部信息包括但不限于投保承保理赔行为财务信用健康医疗信息等国富人寿及与其具有必要合作关系的机构均可对上述信息进行合理的使用为确保信息安全国富人寿及其合作机构应采取有效措施并承担保密义务
</p>
<p class="mb20">
2为提供保险产品服务的需要本人授权国富人寿可将本人的姓名身份证号等个人信息提供给中国银行保险信息技术管理有限公司以下简称中国银保信并同意中国银保信对上述信息以及本人投保承保理赔医疗健康等信息进行收集并经加工分析合理使用后传输给国富人寿用于保险产品服务<br />
中国银保信的上述处理行为对您接受国富人寿服务具有必要性不会对您的个人权益造成非法侵害如有关于个人信息保护相关的问题咨询您可以通过以下方式联系
</p>
<h2 style="text-align:center" class="mb20">被保险人授权声明</h2>
<p class="mb20">
1险服务的需要本人授权国富人寿保险股份有限公司以下简称国富人寿可通过知悉本人信息的机构查询与本人有关的全部信息包括但不限于投保承保理赔行为财务信用健康医疗信息等国富人寿及与其具有必要合作关系的机构均可对上述信息进行合理的使用为确保信息安全国富人寿及其合作机构应采取有效措施并承担保密义务
</p>
<p class="mb20">
2为提供保险产品服务的需要本人授权国富人寿可将本人的姓名身份证号等个人信息提供给中国银行保险信息技术管理有限公司以下简称中国银保信并同意中国银保信对上述信息以及本人投保承保理赔医疗健康等信息进行收集并经加工分析合理使用后传输给国富人寿用于保险产品服务
</p>
<p class="mb20">
中国银保信的上述处理行为对您接受国富人寿服务具有必要性不会对您的个人权益造成非法侵害如有关于个人信息保护相关的问题咨询您可以通过以下方式联系
</p>
<p class="mb20">
中国银保信联系方式privacy@cbit.com.cn
</p>
<p style="text-indent: 2em;" class="mb20">
说明:如您想获取个人信息处理的合作机构名称联系方式信息处理方式保存期限详情和个人行使信息保护权利的方式和程序可拨打国富人寿服务热线4006946688咨询
</p>
</div>
</div>
<van-radio-group v-model="radio" class="pb10 pb20 pl30">
<van-radio name="1" @click="click" class="fs14">
<span v-if="changeCard">本人已详细阅读转账授权书并明确以上事项</span>
<span v-else>本人已详细阅读保险条款并明确以上事项 </span>
</van-radio>
</van-radio-group>
<div class="bg-white bottom-btn">
<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 } from '@/api/ebiz/sale/sale'
// import riskRules from '@/views/ebiz/common/risk-rules'
// 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,
changeCard: localStorage.changeCard, //是否从修改银行卡号进来
productCode: localStorage.productCode, //获取产品编号
protocol: false,
documentCodeType: false,
// manageComCode:''//代理人管理机构 52贵州 45广西
}
},
components: {
[RadioGroup.name]: RadioGroup,
[Radio.name]: Radio,
[Dialog.name]: Dialog,
[NoticeBar.name]: NoticeBar
},
async 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 = this.changeCard ? '转账授权书' : '投保须知'
// 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'))
}
//获取代理人管理机构 52贵州 45广西
// let dataReturn = await riskRules.getAgentInfoFunc(this)
// this.manageComCode = dataReturn.manageComCode
},
created() {
this.documentCodeType = localStorage.getItem('documentCodeType')
setTimeout(() => {
// eslint-disable-next-line no-undef
EWebBridge.webCallAppInJs('webview_left_button', {
img: this.$assetsUrl + 'images/del-close-btn@3x.png',
intercept: '1' //是否拦截原生返回事件 1是 其他否
})
}, 100)
console.log(this.documentCodeType,'documentCodeType');
window.appCallBack = this.appCallBack
},
methods: {
appCallBack(data) {
if (data.trigger == 'left_button_click') {
return this.$dialog
.confirm({
className: 'dialog-delete',
title: '提示',
message: '退出流程可能会丢失部分数据,是否确认退出?',
cancelButtonColor: '#E9332E',
confirmButtonColor: '#FFFFFF'
})
.then(() => {
this.$jump({
flag: 'h5',
extra: {
title: '电子投保单列表',
forbidSwipeBack: 1, //当前页面禁止右滑返回
url: location.origin + `/#/sale/list`
},
routerInfo: {
path: `/sale/list`,
type: '1'
}
})
})
.catch(() => {
return
})
}
},
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() {
this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
})
let that = this
if (that.signVal == '0' || that.signVal == '2') {
// 查看保险条款是否有,如果没有的话走原有逻辑
let isHasClauses = Array.isArray(this.appntSign)?this.appntSign.some(item => {
return item.documentCode == '13' && (item.documentStatus == '0' || item.documentStatus == '2')
}):false
if(isHasClauses) {
that.appntSign.map(item => {
if (item.documentCode == '1') {
that.appntSign.signId = item.signId
that.appntSign.documentCode = item.documentCode
that.appntSign.documentType = item.documentType
}
})
let data = {
orderType: 'SIGN_ORDER',
orderDTO: {
orderInfoDTO: {
orderNo: that.$route.query.orderNo
},
ebizSignDTOS: [
{
signOrRead: 'read',
signId: that.appntSign.signId,
orderNo: that.$route.query.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', '')
if(this.documentCodeType == 'true') {
// console.log('11111111111111111111');
let url = 'AnswerTip'
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/' + url + '?orderNo=' + that.$route.query.orderNo
},
routerInfo: {
path: '/sale/' + url + '?orderNo=' + that.$route.query.orderNo
}
})
} else {
// console.log('222222222222222222222');
//GFRS_M0003为万能型产品需要投保人签署产品说明书
let url = 'insuranceClauses'
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/' + url + '?orderNo=' + this.$route.query.orderNo
},
routerInfo: {
path: '/sale/' + url + '?orderNo=' + this.$route.query.orderNo
}
})
}
} else {
that.$toast(res.resultMessage)
}
})
} else {
that.goNextBefore()
}
} else {
this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
})
// 查看保险条款是否有,如果没有的话走原有逻辑
let isHasClauses = Array.isArray(this.insuredSign)? this.insuredSign.some(item => {
return item.documentCode == '13' && (item.documentStatus == '0' || item.documentStatus == '2')
}):false
if(isHasClauses) {
that.insuredSign.map(item => {
if (item.documentCode == '1') {
that.insuredSign.signId = item.signId
that.insuredSign.documentCode = item.documentCode
that.insuredSign.documentType = item.documentType
}
})
let data = {
orderType: 'SIGN_ORDER',
orderDTO: {
orderInfoDTO: {
orderNo: that.$route.query.orderNo
},
ebizSignDTOS: [
{
signOrRead: 'read',
signId: that.insuredSign.signId,
orderNo: that.$route.query.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', '')
console.log('保存了结果:' + localStorage.getItem('insurance-policyUrl'))
// if(this.documentCodeType == 'true') {
// // console.log('3333333333333333333');
// let url = 'AnswerTip'
// this.$jump({
// flag: 'h5',
// extra: {
// url: location.origin + '/#/sale/' + url
// },
// routerInfo: {
// path: '/sale/' + url
// }
// })
// } else {
// console.log('4444444444444444');
//GFRS_M0003为万能型产品需要投保人签署产品说明书
let url = 'insuranceClauses'
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/' + url + '?orderNo=' + this.$route.query.orderNo
},
routerInfo: {
path: '/sale/' + url + '?orderNo=' + this.$route.query.orderNo
}
})
// }
// let url = 'insuranceClauses'
// this.$jump({
// flag: 'h5',
// extra: {
// url: location.origin + '/#/sale/' + url
// },
// routerInfo: {
// path: '/sale/' + url
// }
// })
} else {
that.$toast(res.resultMessage)
}
})
} else {
that.goNextBefore()
}
}
},
// 下一步,原有逻辑
goNextBefore() {
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') {
if (!that.changeCard) {
that.appntSign.map(item => {
if (item.documentCode == '1') {
that.appntSign.signId = item.signId
that.appntSign.documentCode = item.documentCode
that.appntSign.documentType = item.documentType
}
})
}
let data = {
orderType: that.changeCard ? 'SIGNNEW_ORDER' : 'SIGN_ORDER',
orderDTO: {
orderInfoDTO: {
orderNo: that.$route.query.orderNo
},
ebizSignDTOS: [
{
signOrRead: 'read',
signId: that.appntSign.signId,
orderNo: that.$route.query.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('tips-PolicyUrl', res.signDTO.tipsPolicyUrl)
// console.log(res)
// console.log(res.signDTO.policyUrl)
// console.log('````````````')
// console.log('接口拉去成功:' + res.signDTO.policyUrl)
// window.localStorage.setItem('insurance-policyUrl', res.signDTO.policyUrl)
window.localStorage.setItem('detailJump', '')
// console.log('保存了结果:' + localStorage.getItem('insurance-policyUrl'))
// let url = config.imgDomain + `/app/returnStream?imgPath=${res.signDTO.policyUrl}`
// axios.get(url).then(res => {
// console.log(res)
// })
//GFRS_M0003为万能型产品需要投保人签署产品说明书
let url = ''
if (that.changeCard) {
url = 'SignatureConfirmation'
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/SignatureConfirmation?orderNo=' + this.$route.query.orderNo
},
routerInfo: {
path:
'/sale/signatureConfirmation?orderNo=' +
this.$route.query.orderNo +
'&token=' +
localStorage.token +
'&saleInsuredInfo=' +
this.$CacheUtils.getLocItem('saleInsuredInfo') +
'&saleInsuredPersonInfo=' +
this.$CacheUtils.getLocItem('saleInsuredPersonInfo') +
'&relationToAppnt=' +
JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo')).relationToAppnt +
'&signInvalid=' +
sessionStorage.getItem('signInvalid') +
'&airSign=1' +
'&changeCard=0'
}
})
} else {
url = this.productCode == 'GFRS_M0003' || this.productCode == 'GFRS_M0015' || this.productCode == 'GFRS_M0017' ? 'productTip' : 'insuranceTip'
/*that.appntSign.map(item => {
if (item.documentCode == '8') {
url = 'apointValidDoc'
}
})*/
// 若需展示 短期健康险投保须知,则优先展示
that.appntSign.map(item => {
if (item.documentCode == '9') {
url = 'shortPeriodProduct'
}
})
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/' + url + '?orderNo=' + that.$route.query.orderNo
},
routerInfo: {
path: '/sale/' + url + '?orderNo=' + that.$route.query.orderNo
}
})
}
} else {
that.$toast(res.resultMessage)
}
})
} else {
this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
})
that.insuredSign.map(item => {
if (item.documentCode == '1') {
that.insuredSign.signId = item.signId
that.insuredSign.documentCode = item.documentCode
that.insuredSign.documentType = item.documentType
}
})
let data = {
orderType: 'SIGN_ORDER',
orderDTO: {
orderInfoDTO: {
orderNo: that.$route.query.orderNo
},
ebizSignDTOS: [
{
signOrRead: 'read',
signId: that.insuredSign.signId,
orderNo: that.$route.query.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()
console.log('````````````')
// console.log('接口拉去成功:' + res.signDTO.policyUrl)
// window.localStorage.setItem('tips-PolicyUrl', res.signDTO.tipsPolicyUrl)
// window.localStorage.setItem('insurance-policyUrl', res.signDTO.policyUrl)
window.localStorage.setItem('detailJump', '')
console.log('保存了结果:' + localStorage.getItem('insurance-policyUrl'))
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/SignatureOfElectronic?orderNo=' + that.$route.query.orderNo
},
routerInfo: {
path: '/sale/SignatureOfElectronic?orderNo=' + that.$route.query.orderNo
}
})
} 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') {
if (!that.changeCard) {
that.appntSign.map(item => {
if (item.documentCode == '1') {
that.appntSign.signId = item.signId
that.appntSign.documentCode = item.documentCode
that.appntSign.documentType = item.documentType
}
})
}
let data = {
orderType: that.changeCard ? 'SIGNNEW_ORDER' : 'SIGN_ORDER',
orderDTO: {
orderInfoDTO: {
orderNo: that.$route.query.orderNo
},
ebizSignDTOS: [
{
signOrRead: 'read',
signId: that.appntSign.signId,
orderNo: that.$route.query.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('insurance-url', res.signDTO.policyUrl)
// console.log('saveInformationres',res)
// console.log(res.signDTO.policyUrl)
// window.localStorage.setItem('tips-PolicyUrl', res.signDTO.tipsPolicyUrl)
// window.localStorage.setItem('insurance-policyUrl', res.signDTO.policyUrl)
window.localStorage.setItem('detailJump', '')
// let url = config.imgDomain + `/app/returnStream?imgPath=${res.signDTO.policyUrl}`
// axios.get(url).then(res => {
// console.log(res)
// })
let url = ''
if (that.changeCard) {
url = 'SignatureConfirmation'
} else {
url = this.productCode == 'GFRS_M0003' || this.productCode == 'GFRS_M0015' || this.productCode == 'GFRS_M0017' ? 'productTip' : 'insuranceTip'
// 本人或投保人-需阅读短期健康险投保须知时 跳转shortPeriodProduct
that.appntSign.map(item => {
if (item.documentCode == '9') {
url = 'shortPeriodProduct'
}
})
}
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/' + url + '?orderNo=' + that.$route.query.orderNo,
forbidSwipeBack: '1'
},
routerInfo: {
path: '/sale/' + url + '?orderNo=' + that.$route.query.orderNo
}
})
} else {
that.$toast(res.resultMessage)
}
})
} else {
that.insuredSign.map(item => {
if (item.documentCode == '1') {
that.insuredSign.signId = item.signId
that.insuredSign.documentCode = item.documentCode
that.insuredSign.documentType = item.documentType
}
})
let data = {
orderType: 'SIGN_ORDER',
orderDTO: {
orderInfoDTO: {
orderNo: that.$route.query.orderNo
},
ebizSignDTOS: [
{
signOrRead: 'read',
signId: that.insuredSign.signId,
orderNo: that.$route.query.orderNo,
documentCode: that.insuredSign.documentCode,
documentStatus: '1',
documentType: that.insuredSign.documentType,
signType: that.signVal
}
]
}
}
saveInformation(data).then(res => {
if (res.result == '0') {
// window.localStorage.setItem('tips-PolicyUrl', res.signDTO.tipsPolicyUrl)
// window.localStorage.setItem('insurance-policyUrl', res.signDTO.policyUrl)
this.$toast.clear()
window.localStorage.setItem('detailJump', '')
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/SignatureOfElectronic?orderNo=' + that.$route.query.orderNo,
forbidSwipeBack: '1'
},
routerInfo: {
path: '/sale/SignatureOfElectronic?orderNo=' + that.$route.query.orderNo
}
})
} 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;
}
</style>

View File

@@ -411,6 +411,17 @@
<van-button round type="danger" size="small" style="padding:0px 35px;font-size: 14px;" @click="isNewPeopleFlagTipshow = false">我知道了</van-button>
</div>
</van-dialog>
<van-dialog v-model="thisdoubledialogshow" :showConfirmButton="false">
<div slot="title">
<p style="color: #E9332E;">提示</p>
</div>
<div style="padding: 20px 30px 30px;font-size: 14px;">
<div style="line-height: 25px;">根据监管要求本单需要您配合对销售过程进行录音录像</div>
</div>
<div style="text-align: center;">
<van-button type="danger" block style="font-size: 14px;" @click="thisdoubledialogfunc">确定</van-button>
</div>
</van-dialog>
</div>
</template>
<script>
@@ -457,6 +468,9 @@
},
data() {
return {
thisdoubledialogshow: false,
thismyorderNo: '',
thismystr: '',
isNewPeopleFlagTipshow: false,
renovate: '',
specilFlag: '', //特殊显示-为桂企产品专写 1-桂企 undefind-其他
@@ -1334,6 +1348,7 @@
}
this.save()
},
async save() {
let params = {
orderType: 'APPNT_ORDER',
@@ -1345,18 +1360,19 @@
appntDTO: {}
}
}
let str = ''
this.thismystr = ''
params.orderDTO.appntDTO = this.userInfo
console.log('params :>> ', params)
//------------------------专为桂企写死--begin---------------//
if (this.specilFlag == '1') {
params.orderDTO.orderInfoDTO.productCode = 'GFRS_M0040'
str = 'specilFlag=1&'
this.thismystr = 'specilFlag=1&'
//params.orderDTO.orderInfoDTO.productCode = 'GFRS_M0024'
}
// ------------------------专为桂企写死--end---------------//
let resultData = await saveOrUpdateOrderInfo(params)
if (resultData.result == 0) {
this.thismyorderNo = resultData.orderNo
//deleteFlag 0-该页面修改了信息且修改的信息影响到后面流程,后台进行了删除数据的操作
if (resultData.deleteFlag == '0') {
localStorage.salePageFlag = '2'
@@ -1364,37 +1380,38 @@
//如果从保单列表编辑按钮或者新增保单进入
localStorage.salePageFlag = '2'
} else {
str = str + 'edit=1&salePageFlag=2'
this.thismystr = this.thismystr + 'edit=1&salePageFlag=2'
}
this.$CacheUtils.setLocItem('orderNo', resultData.orderNo)
// localStorage.insuredDetail = JSON.stringify(this.userInfo)
// 添加提示
let age = utilsAge.getAge(this.userInfo.birthday, new Date())
if (age >= 60) {
this.$dialog
.alert({
message: '年龄≥60周岁投保人如果投保一年期以上产品请根据监管要求对销售过程进行录音录像',
confirmButtonColor: '#000000',
})
.then(() => {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/sale/insuredPerson?${str}` + '&orderNo=' + resultData.orderNo,
},
routerInfo: {
path: `/sale/insuredPerson?${str}` + '&orderNo=' + resultData.orderNo,
},
})
})
if (age >= 60 && this.manageComCode == '45') {
this.thisdoubledialogshow = true
// this.$dialog
// .alert({
// message: '根据监管要求,本单需要您配合对销售过程进行录音录像!',
// confirmButtonColor: '#000000',
// })
// .then(() => {
// this.$jump({
// flag: 'h5',
// extra: {
// url: location.origin + `/#/sale/insuredPerson?${str}` + '&orderNo=' + resultData.orderNo,
// },
// routerInfo: {
// path: `/sale/insuredPerson?${str}` + '&orderNo=' + resultData.orderNo,
// },
// })
// })
} else {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/sale/insuredPerson?${str}` + '&orderNo=' + resultData.orderNo,
url: location.origin + `/#/sale/insuredPerson?${this.thismystr}` + '&orderNo=' + this.thismyorderNo,
},
routerInfo: {
path: `/sale/insuredPerson?${str}` + '&orderNo=' + resultData.orderNo,
path: `/sale/insuredPerson?${this.thismystr}` + '&orderNo=' + this.thismyorderNo,
},
})
}
@@ -1402,6 +1419,18 @@
this.$toast(resultData.resultMessage)
}
},
thisdoubledialogfunc(){
this.thisdoubledialogshow = false
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/sale/insuredPerson?${this.thismystr}` + '&orderNo=' + this.thismyorderNo,
},
routerInfo: {
path: `/sale/insuredPerson?${this.thismystr}` + '&orderNo=' + this.thismyorderNo,
},
})
},
//区域选择
sureArea(area, type) {
console.log('area :>> ', area)

View File

@@ -96,7 +96,7 @@
</template>
<template v-if="active == 'commit' && (order.orderInfoDTO.orderStatus == '02' || order.orderInfoDTO.orderStatus == '58')">
<van-button @click="goPay(order)" size="small" class="mr5" type="danger" round>
支付
支付
</van-button>
</template>
<!-- doubleFlag 1- 0-doubleFlag为0双录时canRevokeDouble加 orderStatus 16 -->

View File

@@ -7,8 +7,8 @@
<div v-if="isWeixin" class="bg-white mt10 p20 fs14 tips">
<p>
尊敬的
<span>{{ tipsName }}</span>
先生/女士您好
<span>{{ tipsName }}</span
>先生/女士您好
</p>
<p>该保单由国富人寿保险股份有限公司进行承保具体确认信息如下</p>
</div>
@@ -47,9 +47,16 @@
</div>
<p class="start" v-if="airSign != '1'">点击开始进行相关操作</p>
<div v-if="!isInvalid" class="flex justify-content-a mt20">
<van-button type="danger" size="normal" class="w150" plain :disabled="changeCard ? agentSign.documentStatus == '1' : agentSignStatus == '3'" v-no-more-click="1000" @click="start_agent('3')">
开始
</van-button>
<van-button
type="danger"
size="normal"
class="w150"
plain
:disabled="changeCard ? agentSign.documentStatus == '1' : agentSignStatus == '3'"
v-no-more-click="1000"
@click="start_agent('3')"
>开始</van-button
>
</div>
<div class="text" v-else>操作时间已失效请联系销售人员</div>
</van-collapse-item>
@@ -82,13 +89,28 @@
</div>
<p class="start" v-if="airSign != '1'">点击开始分享进行相关操作</p>
<div v-if="!isInvalid" class="flex justify-content-a mt20">
<van-button v-if="isShow" type="danger" size="normal" class="w150" plain v-no-more-click="1000" :disabled="changeCard ? appntSign.documentStatus == '1' : appntSignStatus == '3'" @click="share(saleInsuredPersonInfo.relationToAppnt == '1' ? '2' : '0')">
分享
</van-button>
<van-button
v-if="isShow"
type="danger"
size="normal"
class="w150"
plain
v-no-more-click="1000"
:disabled="changeCard ? appntSign.documentStatus == '1' : appntSignStatus == '3'"
@click="share(saleInsuredPersonInfo.relationToAppnt == '1' ? '2' : '0')"
>分享</van-button
>
<!-- 前端测试 -->
<van-button type="danger" size="normal" class="w150" plain :disabled="changeCard ? appntSign.documentStatus == '1' : appntSignStatus == '3'" v-no-more-click="1000" @click="start_ocr(saleInsuredPersonInfo.relationToAppnt == '1' ? '2' : '0')">
开始
</van-button>
<van-button
type="danger"
size="normal"
class="w150"
plain
:disabled="changeCard ? appntSign.documentStatus == '1' : appntSignStatus == '3'"
v-no-more-click="1000"
@click="start_ocr(saleInsuredPersonInfo.relationToAppnt == '1' ? '2' : '0')"
>开始</van-button
>
</div>
<div class="text" v-else>操作时间已失效请联系销售人员</div>
</van-collapse-item>
@@ -112,12 +134,20 @@
</div>
<p class="start" v-if="airSign != '1'">点击开始分享进行相关操作</p>
<div v-if="!isInvalid" class="flex justify-content-a mt20">
<van-button v-if="isShow" type="danger" size="normal" class="w150" :disabled="insuredSignStatus == '3'" @click="share('1')" plain v-no-more-click="1000">
分享
</van-button>
<van-button type="danger" size="normal" plain class="w150" :disabled="insuredSignStatus == '3'" @click="start_ocr('1')" v-no-more-click="1000">
开始
</van-button>
<van-button
v-if="isShow"
type="danger"
size="normal"
class="w150"
:disabled="insuredSignStatus == '3'"
@click="share('1')"
plain
v-no-more-click="1000"
>分享</van-button
>
<van-button type="danger" size="normal" plain class="w150" :disabled="insuredSignStatus == '3'" @click="start_ocr('1')" v-no-more-click="1000"
>开始</van-button
>
</div>
<div class="text" v-else>操作时间已失效请联系销售人员</div>
</van-collapse-item>
@@ -153,9 +183,16 @@
</div>
<p class="start" v-if="airSign != '1'">点击开始分享进行相关操作</p>
<div v-if="!isInvalid" class="flex justify-content-a mt20">
<van-button type="danger" size="normal" style="width: 157px" plain :disabled="changeCard ? appntSign.documentStatus == '1' : appntSignStatus == '3'" v-no-more-click="1000" @click="start_ocr(saleInsuredPersonInfo.relationToAppnt == '1' ? '2' : '0')">
开始
</van-button>
<van-button
type="danger"
size="normal"
style="width: 157px"
plain
:disabled="changeCard ? appntSign.documentStatus == '1' : appntSignStatus == '3'"
v-no-more-click="1000"
@click="start_ocr(saleInsuredPersonInfo.relationToAppnt == '1' ? '2' : '0')"
>开始</van-button
>
</div>
<div class="text" v-else>操作时间已失效请联系销售人员</div>
</van-collapse-item>
@@ -179,9 +216,16 @@
</div>
<p class="start" v-if="airSign != '1'">点击开始分享进行相关操作</p>
<div v-if="!isInvalid" class="flex justify-content-a mt20">
<van-button type="danger" size="normal" plain style="width: 157px" :disabled="insuredSignStatus == '3'" @click="start_ocr('1')" v-no-more-click="1000">
开始
</van-button>
<van-button
type="danger"
size="normal"
plain
style="width: 157px"
:disabled="insuredSignStatus == '3'"
@click="start_ocr('1')"
v-no-more-click="1000"
>开始</van-button
>
</div>
<div class="text" v-else>操作时间已失效请联系销售人员</div>
</van-collapse-item>
@@ -192,17 +236,27 @@
<div v-if="!isWeixin">
<div v-if="changeCard">
<div class="bottom-btn bg-white" v-if="appntSign.documentStatus == '1'">
<van-button type="danger" v-if="relationToAppnt == '1' ? true : appntSign.documentStatus == '1' ? true : false" size="large" @click="rePayMent" v-no-more-click="1000">
支付
</van-button>
<van-button
type="danger"
v-if="relationToAppnt == '1' ? true : appntSign.documentStatus == '1' ? true : false"
size="large"
@click="rePayMent"
v-no-more-click="1000"
>支付</van-button
>
</div>
</div>
<div v-else>
<!--判断代理人自保件承诺书是否签名 或者不是自保件 投保人是否都签名-->
<div class="bottom-btn bg-white" v-if="(agentSignStatus == '3'&& appntSignStatus == '3')||(agentSignStatus == ''&& appntSignStatus == '3')">
<van-button type="danger" v-if="relationToAppnt == '1' ? true : insuredSignStatus == '3' ? true : false" size="large" @click="next" v-no-more-click="1000">
提交
</van-button>
<van-button
type="danger"
v-if="relationToAppnt == '1' ? true : insuredSignStatus == '3' ? true : false"
size="large"
@click="next"
v-no-more-click="1000"
>提交</van-button
>
</div>
</div>
</div>
@@ -210,7 +264,13 @@
<!-- <video controls style="width: 100%; max-height: calc(100vh - 60px)" src="/app/video/rlsb.mp4"></video> -->
<div class="" v-if="videoShow" style="height: calc(100vh - 60px); display: flex; align-items: center; flex-flow: column; justify-content: center">
<!-- <van-notice-bar :scrollable="false" class="notice" style="width: 100%">为维护您的合法权益请您务必观看防范销售误导视频</van-notice-bar> -->
<video controls style="width: 100%; max-height: calc(100vh - 60px)" :src="'https://gf-dev-202005-1254138932.cos.ap-shanghai-fsi.myqcloud.com/gfapp/pub01/2021/04/28/guofulive.MP4'" ref="vid" @timeupdate="timeupdate"></video>
<video
controls
style="width: 100%; max-height: calc(100vh - 60px)"
:src="'https://gf-dev-202005-1254138932.cos.ap-shanghai-fsi.myqcloud.com/gfapp/pub01/2021/04/28/guofulive.MP4'"
ref="vid"
@timeupdate="timeupdate"
></video>
</div>
<div class="bottom-btn bg-white">
<van-button type="danger" size="large" @click="isVideoUrlClick()" v-no-more-click="1000">下一步</van-button>
@@ -226,16 +286,18 @@
}}</van-button>
</van-cell-group>
</van-dialog>
<van-dialog v-model="thisnewpeopledialogshow" title="提示" confirmButtonText="确定">
<div style="padding: 20px;font-size: 14px;padding-top: 0px;">
<div style="line-height: 25px;letter-spacing: 1px;">尊敬的客户您好</div>
<div style="line-height: 25px;letter-spacing: 1px;text-indent: 2em;">感谢您投保我公司爱心保/安心保产品在本保险合同生效后被保险人将获得一份专属的健康管理服务详情请登录公司官方微信公众号国富人寿保险>发现国富>新市民专区 查询或拨打公司客服热线400-694-6688咨询本服务为无偿提供</div>
</div>
</van-dialog>
<!-- <UploadImageFile
:typeface="idcardData.typeface && faceAuthCount.weixin < smsAuthNum"
:realName="idcardData.idcardName"
:idno="idcardData.idcardNumber"
@sendimage="sendimage"
>
</UploadImageFile> -->
</div>
</template>
<script>
// import UploadImageFile from '@/components/ebiz/sale/UploadImageFile'
import { Field, Cell, CellGroup, Collapse, CollapseItem, Dialog, NoticeBar } from 'vant'
import {
underWrite,
@@ -259,7 +321,6 @@ export default {
data() {
let isWeixin = this.$utils.device().isWeixin //判断环境
return {
thisnewpeopledialogshow: false,
isInsuYearFlag: false, //是否为长期险
isVideo: false, //是否已阅读视频
isVideoNext: false,
@@ -269,7 +330,7 @@ export default {
timeId: null, // 计时器ID
countDown: 60, // 倒计时
authCode: '', // 验证码
smsAuthNum: 2,
smsAuthNum: 3,
operaFlag: null,
encyCustomerMobile: null,
sid: null,
@@ -465,55 +526,57 @@ export default {
this.relationToAppnt = this.$route.query.relationToAppnt
this.isShow = false
await this.getOrderDetail()
if (
(this.appntSignStatus == '3' && sessionStorage.getItem('shareCode') == '0') ||
(this.appntSignStatus == '3' && sessionStorage.getItem('shareCode') == '2')
) {
// this.$toast('签名成功,请联系业务员进行后续流程!')
Dialog.alert({ title: '提示', message: '签名成功,请联系业务员进行后续流程!' })
} else if (this.insuredSignStatus == '3' && sessionStorage.getItem('shareCode') == '1') {
Dialog.alert({ title: '提示', message: '签名成功,请联系业务员进行后续流程!' })
}
if (this.changeCard && this.appntSign.documentStatus == '1') {
Dialog.alert({ title: '提示', message: '确认完成,请联系业务员完成后续流程!' })
}
// localStorage['faceAuthWeXin-requestId'] localStorage['faceAuthWeXin-bizToken']--微信端人脸识别获取腾讯认证url接口获得认证相关参数
if (localStorage['faceAuthWeXin-requestId'] && localStorage['faceAuthWeXin-bizToken'] && this.$route.query.faceAuthCountWeixin != undefined) {
this.getRecognitionResult(JSON.parse(localStorage['faceAuthWeXin-requestId']), JSON.parse(localStorage['faceAuthWeXin-bizToken']))
}
if (sessionStorage.shareCode == '1') {
console.log('进来被保险人')
this.tipsName = JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo')).name
} else if(sessionStorage.shareCode == '3'){
console.log('进来代理人')
this.tipsName =this.recmd.name
}else {
console.log('进来投保人')
this.tipsName = JSON.parse(this.$CacheUtils.getLocItem('saleInsuredInfo')).name
// console.log('localStorage.saleInsuredInfo', localStorage.saleInsuredInfo)
// console.log('localStorage.saleInsuredInfo.name', localStorage.saleInsuredInfo.name)
// console.log('this.tipName', this.tipsName)
}
weixinShare({
title: '国富人寿计划书',
imgUrl: 'http://47.96.143.111:8000/app/images/logo.png',
desc: '国富为您量身定制的保险产品,请查收'
})
// let params = {
// orderNo: ''
// }
this.faceAuthCount.appnt = this.$route.query.faceAuthCountAppnt == undefined ? 0 : Number(this.$route.query.faceAuthCountAppnt)
this.faceAuthCount.insured = this.$route.query.faceAuthCountInsured == undefined ? 0 : Number(this.$route.query.faceAuthCountInsured)
this.faceAuthCount.weixin = this.$route.query.faceAuthCountWeixin == undefined ? 0 : Number(this.$route.query.faceAuthCountWeixin)
} else {
// 获取详情消息
console.log('初始化this.appntSign ==', this.appntSign)
if (
(this.appntSignStatus == '3' && sessionStorage.getItem('shareCode') == '0') ||
(this.appntSignStatus == '3' && sessionStorage.getItem('shareCode') == '2')
) {
// this.$toast('签名成功,请联系业务员进行后续流程!')
Dialog.alert({ title: '提示', message: '签名成功,请联系业务员进行后续流程!' })
} else if (this.insuredSignStatus == '3' && sessionStorage.getItem('shareCode') == '1') {
Dialog.alert({ title: '提示', message: '签名成功,请联系业务员进行后续流程!' })
}
if (this.changeCard && this.appntSign.documentStatus == '1') {
Dialog.alert({ title: '提示', message: '确认完成,请联系业务员完成后续流程!' })
}
// localStorage['faceAuthWeXin-requestId'] localStorage['faceAuthWeXin-bizToken']--微信端人脸识别获取腾讯认证url接口获得认证相关参数
if (localStorage['faceAuthWeXin-requestId'] && localStorage['faceAuthWeXin-bizToken'] && this.$route.query.faceAuthCountWeixin != undefined) {
this.getRecognitionResult(JSON.parse(localStorage['faceAuthWeXin-requestId']), JSON.parse(localStorage['faceAuthWeXin-bizToken']))
}
this.getOrderDetail()
this.getSignInvalid()
this.isShow = true
}
},
if (sessionStorage.shareCode == '1') {
console.log('进来被保险人')
this.tipsName = JSON.parse(this.$CacheUtils.getLocItem('saleInsuredPersonInfo')).name
} else if(sessionStorage.shareCode == '3'){
console.log('进来代理人')
this.tipsName =this.recmd.name
}else {
console.log('进来投保人')
this.tipsName = JSON.parse(this.$CacheUtils.getLocItem('saleInsuredInfo')).name
// console.log('localStorage.saleInsuredInfo', localStorage.saleInsuredInfo)
// console.log('localStorage.saleInsuredInfo.name', localStorage.saleInsuredInfo.name)
// console.log('this.tipName', this.tipsName)
}
weixinShare({
title: '国富人寿计划书',
imgUrl: 'http://47.96.143.111:8000/app/images/logo.png',
desc: '国富为您量身定制的保险产品,请查收'
})
// let params = {
// orderNo: ''
// }
this.faceAuthCount.appnt = this.$route.query.faceAuthCountAppnt == undefined ? 0 : Number(this.$route.query.faceAuthCountAppnt)
this.faceAuthCount.insured = this.$route.query.faceAuthCountInsured == undefined ? 0 : Number(this.$route.query.faceAuthCountInsured)
this.faceAuthCount.weixin = this.$route.query.faceAuthCountWeixin == undefined ? 0 : Number(this.$route.query.faceAuthCountWeixin)
} else {
// 获取详情消息
this.getOrderDetail()
this.getSignInvalid()
this.isShow = true
}
},
// 获取消息和阅读状态
realPeopelCheck() {
this.$toast.loading({
@@ -1072,7 +1135,6 @@ export default {
// }
// documentStatus: 文档状态 0 未读 1 已读 2 未签名 3 已签名
if (that.insuredSign[i].documentStatus == 0 || that.insuredSign[i].documentStatus == 2 ) {
debugger
path = that.insuredSign[i].routePath
break
}
@@ -1353,19 +1415,6 @@ export default {
},
// 获取消息和阅读状态
getOrderDetail() {
if(!this.$route.query.orderNo || this.$route.query.orderNo == 'undefined'){
Dialog.confirm({
title: '提示',
message: '订单号信息缺失,跳转订单系统重新获取',
showCancelButton: false
}).then(() => {
this.$router.push({
path:'/sale/list'
})
})
return false
}
let that = this
this.$toast.loading({
// 持续展示 toast
@@ -1484,28 +1533,28 @@ export default {
this.saleInsuredInfo = JSON.parse(this.$CacheUtils.getLocItem('saleInsuredInfo'))
this.relationToAppnt = this.saleInsuredPersonInfo.relationToAppnt //将缓存中的与被保险人关系赋值给页面
that.recmd = res.orderDTO.recmdDTO
that.orderInfo = res.orderDTO.orderInfoDTO
that.insured = res.orderDTO.insuredDTOs
// 初始化RID状态
this.realPeopleRidInfo.appntRidFlag = res.orderDTO.appntDTO.ridStatus
this.realPeopleRidInfo.insureRidFlag = res.orderDTO.insuredDTOs[0].ridStatus
//存code区分万能型产品
let productCode, riskName
let isDoubleMailRisk = that.orderInfo.isDoubleMailRisk
if (isDoubleMailRisk == '1') {
productCode = 'GFRS_M0017'
riskName = res.orderDTO.insuredDTOs[0].riskDTOLst[1].riskName
} else {
productCode = that.insured[0].riskDTOLst[0].mainRiskCode
riskName = res.orderDTO.insuredDTOs[0].riskDTOLst[0].riskName
}
if (that.orderInfo && that.orderInfo.activeType) {
that.$CacheUtils.setLocItem('activeType',that.orderInfo.activeType)
}
localStorage.setItem('productCode', productCode)
this.riskName = riskName
localStorage.setItem('riskName', riskName)
that.recmd = res.orderDTO.recmdDTO
that.orderInfo = res.orderDTO.orderInfoDTO
that.insured = res.orderDTO.insuredDTOs
// 初始化RID状态
this.realPeopleRidInfo.appntRidFlag = res.orderDTO.appntDTO.ridStatus
this.realPeopleRidInfo.insureRidFlag = res.orderDTO.insuredDTOs[0].ridStatus
//存code区分万能型产品
let productCode, riskName
let isDoubleMailRisk = that.orderInfo.isDoubleMailRisk
if (isDoubleMailRisk == '1') {
productCode = 'GFRS_M0017'
riskName = res.orderDTO.insuredDTOs[0].riskDTOLst[1].riskName
} else {
productCode = that.insured[0].riskDTOLst[0].mainRiskCode
riskName = res.orderDTO.insuredDTOs[0].riskDTOLst[0].riskName
}
if (that.orderInfo && that.orderInfo.activeType) {
that.$CacheUtils.setLocItem('activeType',that.orderInfo.activeType)
}
localStorage.setItem('productCode', productCode)
this.riskName = riskName
localStorage.setItem('riskName', riskName)
if (this.relationToAppnt != '1') {
this.activeNames.push(res.orderDTO.insuredDTOs.length + 1)
@@ -1537,10 +1586,14 @@ export default {
}
})
if (!that.changeCard) {
//将投保人数组排序
//将投保人文件数组排序
that.appntSign.sort(function (a, b) {
return a.key - b.key
})
//将被保人文件数组排序
that.insuredSign.sort(function (a, b) {
return a.key - b.key
})
//获取投保和被保险人电子投保单签字状态
console.log(that.appntSign,'that.appntSign')
that.appntSign.map((item,index) => {
@@ -1576,21 +1629,8 @@ export default {
}
})
}
if(res.orderDTO.orderInfoDTO.productCode == 'GFRS_M0076' || res.orderDTO.orderInfoDTO.productCode == 'GFRS_M0077') {
that.thisnewpeopledialogshow = true
}
resolve('success')
} else {
Dialog.confirm({
title: '提示',
message: res.resultMessage,
showCancelButton: false
}).then(() => {
this.$router.push({
path:'/sale/list'
})
})
}
}
})
})
},
@@ -1604,7 +1644,11 @@ export default {
if (item.documentCode == '1') {
item.key = 2
// item.key = 4
item.routePath = 'insuranceInformation'
if(JSON.parse(window.localStorage.getItem('mainRiskCodes'))[0] == 'GFRS_M0081'){
item.routePath = 'insuranceInformation_0081'
} else {
item.routePath = 'insuranceInformation'
}
} else if (item.documentCode == '2') {
// item.key = 9
item.key = 11

File diff suppressed because it is too large Load Diff