[FIX]【保全】退保相关

This commit is contained in:
yuweiqi
2020-06-09 10:14:14 +08:00
parent 3a4be42227
commit 8fe0e9024c
17 changed files with 701 additions and 1321 deletions

View File

@@ -34,7 +34,7 @@ export function pcPolicyInfo(data) {
})
}
//受益人变更提交
//变更提交/保全确认
export function changeEdor(data) {
return request({
url: getUrl('/edor/edor/changeEdor', 1),
@@ -59,7 +59,7 @@ export function trial(data) {
data
})
}
//受益人变更提交
//保全详情查询
export function queryConfirmDetail(data) {
return request({
url: getUrl('/edor/edor/queryConfirmDetail', 1),
@@ -67,29 +67,3 @@ export function queryConfirmDetail(data) {
data
})
}
//签名信息保存
export function edorSignSave(data) {
return request({
url: getUrl('/edor/sign/save', 1),
method: 'post',
data
})
}
//保全详情查询
export function queryDetails(data) {
return request({
url: getUrl('/edor/query/queryDetails', 1),
method: 'post',
data
})
}
//续期账号变更
export function renewalChange(data) {
return request({
url: getUrl('/edor/item/change', 1),
method: 'post',
data
})
}

View File

@@ -194,4 +194,11 @@ export function getPayState(data) {
data
})
}
// 2.1. 校验银行卡信息
export function checkCard(data) {
return request({
url: getUrl('/customer/checkCard', 1),
method: 'post',
data
})
}

View File

@@ -1,23 +1,26 @@
//保全 定义相关组件
const search = () => import('@/views/ebiz/preserve/Search')
const bcImageUpload = () => import('@/views/ebiz/preserve/bc/ImageUpload')
const handleResult = () => import('@/views/ebiz/preserve/common/HandleResult')
const submitResult = () => import('@/views/ebiz/preserve/common/SubmitResult')
const policyList = () => import('@/views/ebiz/preserve/common/PolicyList')
const renewalInfo = () => import('@/views/ebiz/preserve/pc/RenewalInfo')
const Search = () => import('@/views/ebiz/preserve/common/Search')
const HandleResult = () => import('@/views/ebiz/preserve/common/HandleResult')
const SubmitResult = () => import('@/views/ebiz/preserve/common/SubmitResult')
const PolicyList = () => import('@/views/ebiz/preserve/common/PolicyList')
const RenewalInfo = () => import('@/views/ebiz/preserve/pc/RenewalInfo')
const pcImageUpload = () => import('@/views/ebiz/preserve/pc/ImageUpload')
const renewalConfirmation = () => import('@/views/ebiz/preserve/pc/RenewalConfirmation')
const autopayAuthorization = () => import('@/views/ebiz/preserve/pc/AutopayAuthorization')
const contactInfo = () => import('@/views/ebiz/preserve/bb/ContactInfo')
const contacAgreement = () => import('@/views/ebiz/preserve/bb/ContacAgreement')
const contactConfirmation = () => import('@/views/ebiz/preserve/bb/ContactConfirmation')
const beneficiaryInfo = () => import('@/views/ebiz/preserve/bc/BeneficiaryInfo')
const BeneficiaryInfo = () => import('@/views/ebiz/preserve/bc/BeneficiaryInfo')
const bcImageUpload = () => import('@/views/ebiz/preserve/bc/ImageUpload')
const beneficiaryInfoAdd = () => import('@/views/ebiz/preserve/bc/BeneficiaryInfoAdd')
const beneficiaryInfoDetail = () => import('@/views/ebiz/preserve/bc/BeneficiaryInfoDetail')
const beneficiaryConfirmation = () => import('@/views/ebiz/preserve/bc/BeneficiaryConfirmation')
const surrenderInfo = () => import('@/views/ebiz/preserve/ct/SurrenderInfo')
const surrenderConfirmation = () => import('@/views/ebiz/preserve/ct/SurrenderConfirmation')
const surrenderTip = () => import('@/views/ebiz/preserve/ct/SurrenderTip')
const SurrenderInfo = () => import('@/views/ebiz/preserve/ct/SurrenderInfo')
const SurrenderConfirmation = () => import('@/views/ebiz/preserve/ct/SurrenderConfirmation')
const SurrenderTip = () => import('@/views/ebiz/preserve/ct/SurrenderTip')
const CtImageUpload = () => import('@/views/ebiz/preserve/ct/ImageUpload')
const Progress = () => import('@/views/ebiz/preserve/Progress')
const Contact = () => import('@/views/ebiz/preserve/detail/Contact')
@@ -29,9 +32,9 @@ const Surrender = () => import('@/views/ebiz/preserve/detail/Surrender')
export default [
{
path: '/preserve/search',
name: 'search',
component: search,
path: '/preserve/common/search',
name: 'Search',
component: Search,
meta: {
title: '搜索客户',
index: 1
@@ -39,8 +42,8 @@ export default [
},
{
path: '/preserve/common/policyList',
name: 'policyList',
component: policyList,
name: 'PolicyList',
component: PolicyList,
meta: {
title: '选择保单',
index: 2
@@ -66,8 +69,8 @@ export default [
},
{
path: '/preserve/pc/renewalInfo',
name: 'renewalInfo',
component: renewalInfo,
name: 'RenewalInfo',
component: RenewalInfo,
meta: {
title: '续期账号变更',
index: 4
@@ -84,8 +87,8 @@ export default [
},
{
path: '/preserve/bc/beneficiaryInfo',
name: 'beneficiaryInfo',
component: beneficiaryInfo,
name: 'BeneficiaryInfo',
component: BeneficiaryInfo,
meta: {
title: '受益人变更',
index: 5
@@ -111,8 +114,8 @@ export default [
},
{
path: '/preserve/ct/surrenderInfo',
name: 'surrenderInfo',
component: surrenderInfo,
name: 'SurrenderInfo',
component: SurrenderInfo,
meta: {
title: '退保',
index: 6
@@ -127,10 +130,19 @@ export default [
index: 7
}
},
{
path: '/preserve/ct/imageUpload',
name: 'CtImageUpload',
component: CtImageUpload,
meta: {
title: '上传影像资料',
index: 7
}
},
{
path: '/preserve/common/handleResult',
name: 'handleResult',
component: handleResult,
name: 'HandleResult',
component: HandleResult,
meta: {
title: '操作结果',
index: 8
@@ -165,8 +177,8 @@ export default [
},
{
path: '/preserve/ct/surrenderConfirmation',
name: 'surrenderConfirmation',
component: surrenderConfirmation,
name: 'SurrenderConfirmation',
component: SurrenderConfirmation,
meta: {
title: '保全代办确认',
index: 12
@@ -183,8 +195,8 @@ export default [
},
{
path: '/preserve/ct/surrenderTip',
name: 'surrenderTip',
component: surrenderTip,
name: 'SurrenderTip',
component: SurrenderTip,
meta: {
title: '退保协议',
index: 12
@@ -192,8 +204,8 @@ export default [
},
{
path: '/preserve/common/submitResult',
name: 'submitResult',
component: submitResult,
name: 'SubmitResult',
component: SubmitResult,
meta: {
title: '提交结果',
index: 13

View File

@@ -30,10 +30,11 @@
<li><router-link to="/survey/surveyList">问卷调查</router-link></li>
<li><router-link to="/nbs/list">nbs列表</router-link></li>
<li><router-link to="/manpower/DiscAnalysis/List">DISC性格分析</router-link></li>
<li><router-link to="/preserve/search?entry=contact">保全-搜索-联系方式变更</router-link></li>
<li><router-link to="/preserve/search?entry=beneficiary">保全-搜索-受益人变更</router-link></li>
<li><router-link to="/preserve/search?entry=renewal">保全-搜索-续期账户变更</router-link></li>
<li><router-link to="/preserve/search?entry=surrender">保全-搜索-退保</router-link></li>
<li><router-link to="/preserve/common/search?entry=BB">保全-搜索-联系方式变更</router-link></li>
<li><router-link to="/preserve/common/search?entry=BC">保全-搜索-受益人变更</router-link></li>
<li><router-link to="/preserve/common/search?entry=PC">保全-搜索-续期账户变更</router-link></li>
<li><router-link to="/preserve/common/search?entry=CT">保全-搜索-退保</router-link></li>
<!-- <li><router-link to="/preserve/common/search?entry=WT">保全-搜索-犹退</router-link></li> -->
<li><router-link to="/manpower/DiscAnalysis/List">DISC性格分析</router-link></li>
</ul>
</li>

View File

@@ -1,6 +1,6 @@
<!-- 保全进度查询 -->
<template>
<div class="progress container">
<div class="progress-container">
<!-- <van-list
v-model="loading"
:immediate-check="false"
@@ -55,7 +55,7 @@ import { queryEdorList } from '@/api/ebiz/preserve/preserve'
import dataDic from './js/data-dictionary.js'
import dateUtils from '@/assets/js/utils/date-utils'
export default {
name: 'progressInfo',
name: 'ProgressInfo',
data() {
return {
list: [], //保全进度列表

View File

@@ -14,7 +14,7 @@
<script>
export default {
name: 'handleResult',
name: 'HandleResult',
data() {
return {
path: '', //页面跳转路径
@@ -41,8 +41,11 @@ export default {
case 'PC':
this.path = '/preserve/pc/renewalConfirmation?entry=PC'
break
case 'bonus':
this.path = '3'
case 'CT':
this.path = '/preserve/ct/surrenderConfirmation?entry=CT'
break
case 'WT':
this.path = ''
break
default:
this.path = ''
@@ -50,22 +53,26 @@ export default {
}
},
mounted() {
// document.body.style.backgroundColor = '#fff'
document.getElementsByTagName('body')[0].classList.add('bg-white')
},
destroyed() {
document.getElementsByTagName('body')[0].classList.remove('bg-white')
},
methods: {
nextStep() {
if (this.entry != 'BC') {
// 如果 保全项不是 受益人变更、则 在证件类型为身份证时 直接接入人脸识别
// if (this.customerInfo.idType != '1') {
// 如果证件类型不是身份证
// 直接跳过人脸识别
this.jumpNextPage(this.path)
// } else {
// this.toFace({
// number: this.customerInfo.idNo, //身份证号码
// name: this.customerInfo.name //姓名
// })
// }
if (this.customerInfo.idType != '1') {
// 如果证件类型不是身份证
// 直接跳过人脸识别
this.jumpNextPage(this.path)
} else {
this.toFace({
number: this.customerInfo.idNo, //身份证号码
name: this.customerInfo.name, //姓名
businessSource: '4' //业务来源:1-电投2-入司3-理赔4-保全
})
}
} else if (this.entry == 'BC') {
// 如果 保全项是 受益人变更、则进行特殊判断
// 若被保险人≥18周岁人脸识别录入被保人本人

View File

@@ -1,6 +1,6 @@
<!--保单列表页-->
<template>
<div class="proposal-list-container">
<div class="policy-list-container">
<div v-if="policyList.length > 0">
<div class="fs12" v-for="(item, index) in policyList" :key="index" @click="toChange(item)">
<div class="flex align-items-c justify-content-c h40 gray">
@@ -57,6 +57,7 @@
import { Tag, List, Row, Col } from 'vant'
import { policyList } from '@/api/ebiz/preserve/preserve'
export default {
name: 'PolicyList',
components: {
[Tag.name]: Tag,
[Row.name]: Row,

View File

@@ -33,7 +33,7 @@
import { Search, DropdownMenu, DropdownItem } from 'vant'
import { customerList } from '@/api/ebiz/preserve/preserve'
export default {
name: 'search',
name: 'Search',
// props: {
// options: {
// type: Array,
@@ -61,27 +61,10 @@ export default {
[DropdownItem.name]: DropdownItem
},
created() {
//
this.entry = this.$route.query.entry
switch (this.entry) {
case 'contact': //
this.surrenderType = '1'
break
case 'beneficiary': //
this.surrenderType = '2'
break
case 'renewal': //
this.surrenderType = '3'
break
case 'surrender': //退
this.surrenderType = '4'
break
case 'hesitateSurrender': //退
this.surrenderType = '5'
break
default:
break
}
document.getElementsByTagName('body')[0].classList.add('bg-white')
},
destroyed() {
document.getElementsByTagName('body')[0].classList.remove('bg-white')
},
methods: {
//
@@ -123,27 +106,22 @@ export default {
},
//
handleClick(params) {
let surrenderType = ''
this.entry = this.$route.query.entry
let url = ''
switch (this.entry) {
case 'contact':
surrenderType = '1'
case 'BB':
url = `/preserve/bb/contactInfo?entry=BB`
break
case 'beneficiary':
surrenderType = '2'
case 'BC':
url = `/preserve/common/policyList?entry=BC`
break
case 'renewal':
surrenderType = '3'
case 'PC':
url = `/preserve/pc/RenewalInfo?entry=PC`
break
case 'surrender':
surrenderType = '4'
case 'CT':
url = `/preserve/common/policyList?entry=CT`
break
case 'hesitateSurrender':
surrenderType = '5'
case 'WT':
url = `/preserve/common/policyList?entry=WT`
break
default:

View File

@@ -5,7 +5,7 @@
<img class="w60 h60 mt100" :src="srcSuccess" alt="" />
</div>
<p class="mt20 text-center">提交成功</p>
<p class="mt20 fs12 gray text-center">如有疑问请拨打客服电话: 4008-008-008</p>
<p class="mt20 fs12 gray text-center">如有疑问请拨打客服电话: 4000-000-000</p>
<div class="bg-white bottom-btn"><van-button type="danger" size="large" @click="nextStep" v-no-more-click="1000">返回</van-button></div>
</div>
@@ -13,22 +13,48 @@
<script>
export default {
name: 'submitResult',
name: 'SubmitResult',
data() {
return {
srcSuccess: this.$assetsUrl + 'images/success.png'
}
},
mounted() {
// localStorage.removeItem('customerSign')
setTimeout(() => {
// eslint-disable-next-line no-undef
EWebBridge.webCallAppInJs('webview_left_button', {
intercept: '1' //是否拦截原生返回事件 1是 其他否
})
}, 100)
window.appCallBack = this.appCallBack
document.getElementsByTagName('body')[0].classList.add('bg-white')
if (localStorage['preserve-customerInfo']) {
localStorage.removeItem('preserve-customerInfo')
}
if (localStorage['preserve-policy']) {
localStorage.removeItem('preserve-policy')
}
if (localStorage['preserve-customerInfo-old']) {
localStorage.removeItem('preserve-customerInfo-old')
}
document.body.style.backgroundColor = '#fff'
},
destroyed() {
document.getElementsByTagName('body')[0].classList.remove('bg-white')
},
methods: {
nextStep() {
// service
this.$jump({
flag: 'service'
})
},
appCallBack(data) {
if (data.trigger == 'left_button_click') {
this.$jump({
flag: 'service'
})
}
}
}
}

View File

@@ -4,78 +4,29 @@
<div class=" pb80">
<div class="m20 bg-white">
<div>
<!-- 身份证 -->
<div v-if="entry == 'surrender' || entry == 'hesitateSurrender'">
<van-cell-group>
<van-field required label="身份证正面" disabled />
</van-cell-group>
<div @click="test('fileListIdFront', idType)" class="flex align-items-e">
<van-uploader
name="fileListIdFront"
v-model="fileListIdFront"
:after-read="afterRead"
:before-delete="beforeDelete"
class="mt10 ml20"
:max-count="1"
@delete="deleteImg"
/>
</div>
<van-cell-group>
<van-field required label="身份证反面" disabled />
</van-cell-group>
<div @click="test('fileListIdBack', idType)">
<van-uploader
name="fileListIdBack"
v-model="fileListIdBack"
:after-read="afterRead"
@delete="deleteImg"
:before-delete="beforeDelete"
class="mt10 ml20"
:max-count="1"
/>
</div>
</div>
<!-- 银行卡 -->
<div v-if="entry == 'renewal' || ((entry == 'surrender' || entry == 'hesitateSurrender') && accountType == '1')">
<van-cell-group>
<van-field required label="银行卡" disabled />
</van-cell-group>
<div @click="test('fileListBank', idType)">
<van-uploader
name="fileListBank"
v-model="fileListBank"
:after-read="afterRead"
@delete="deleteImg"
:before-delete="beforeDelete"
class="mt10 ml20"
:max-count="1"
/>
</div>
</div>
<!-- 纸质保单 -->
<div v-if="(entry == 'surrender' || entry == 'hesitateSurrender') && conTractType == '1'">
<van-cell-group>
<van-field required label="纸质保单" disabled />
</van-cell-group>
<div @click="test('fileListContract ', idType)">
<van-uploader
name="fileListContract"
v-model="fileListContract"
:after-read="afterRead"
@delete="deleteImg"
:before-delete="beforeDelete"
class="mt10 ml20"
:max-count="1"
/>
<div v-for="(item, index) in fileList" :key="index">
<div v-if="item.isShow">
<van-cell-group>
<van-field required :label="item.label" disabled />
</van-cell-group>
<div @click="test(item)">
<van-uploader
:name="item.name"
v-model="item.realFileList"
:after-read="afterRead"
:before-delete="beforeDelete"
class="mt10 ml20"
:max-count="item.max"
/>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="bg-white bottom-btn">
<van-button type="danger" size="large" :disabled="isDisabled" @click="nextStep" v-no-more-click="2000">下一步</van-button>
<van-button type="danger" size="large" @click="nextStep" v-no-more-click="2000">下一步</van-button>
</div>
</div>
</template>
@@ -83,8 +34,7 @@
<script>
import { Cell, CellGroup, Field, Uploader, RadioGroup, Radio, Dialog, Picker, Popup } from 'vant'
import { uploadImg } from '@/api/ebiz/sale/sale'
import config from '@/config'
import { customerInfoChange, preserveHangUp } from '@/api/ebiz/preserve/preserve'
import { changeEdor } from '@/api/ebiz/preserve/preserve'
export default {
components: {
[Cell.name]: Cell,
@@ -103,157 +53,90 @@ export default {
id: '',
idType: '1',
type: '',
fileListIdFront: [], //身份证正面
fileListIdBack: [], //身份证反面
fileListBank: [], // 银行账户
fileListContract: [], //纸质保单
file: '', // 图片流
imgName: '', // 图片名称
list: [],
fileList: [
{
name: 'idCardfront',
label: '身份证正面',
imageInfoType: '1', // 影像类型
subBusinessType: '3', // 影像归属 0 投保人 1 被保人 2 受益人 3 代理人
realFileList: [],
popList: [],
isShow: true, //是否显示(是否需要上传)
max: 1 //限制最大张数
},
{
name: 'idCardBack',
label: '身份证反面',
imageInfoType: '2', // 影像类型
subBusinessType: '3', // 影像归属 0 投保人 1 被保人 2 受益人 3 代理人
realFileList: [],
popList: [],
isShow: true, //是否显示(是否需要上传)
max: 1 //限制最大张数
},
{
name: 'bank',
label: '银行卡',
imageInfoType: '3', // 影像类型
subBusinessType: '3', // 影像归属 0 投保人 1 被保人 2 受益人 3 代理人
realFileList: [],
popList: [],
isShow: true, //是否显示(是否需要上传)
max: 2 //限制最大张数
},
{
name: 'others',
label: '纸质保单影像',
imageInfoType: '11', // 影像类型
subBusinessType: '3', // 影像归属 0 投保人 1 被保人 2 受益人 3 代理人
realFileList: [],
popList: [],
isShow: true, //是否显示(是否需要上传)
max: 500 //限制最大张数
}
],
uploadCheck: {},
entry: '',
surrenderType: '',
accountType: '', //退款银行账号类型 0-原银行 1-新银行
conTractType: '' //保单类型 0-电子 1-纸质
customerInfo: JSON.parse(localStorage.getItem('preserve-customerInfo'))
}
},
created() {
this.entry = JSON.parse(localStorage.customerInfo).entry
this.accountType = this.$route.query.accountType
this.conTractType = this.$route.query.conTractType
switch (this.entry) {
case 'contact': //联系方式变更
this.surrenderType = '1'
break
case 'beneficiary': //受益人变更
this.surrenderType = '2'
break
case 'renewal': //续期账户变更
this.surrenderType = '3'
break
case 'surrender': //退保
this.surrenderType = '4'
break
case 'hesitateSurrender': //犹豫期退保
this.surrenderType = '5'
break
default:
break
// 初始化 上传影像数据
if (this.$route.query.isIdCard == '0') {
this.fileList[0].isShow = false
this.fileList[1].isShow = false
}
// 银行卡
if (window.localStorage.getItem('bankCardUrlPath') != null) {
let bankCardUrl = {
url: config.imgDomain + `/returnImageStream?a=b.jpg&imgPath=${window.localStorage.getItem('bankCardUrlPath')}`
}
this.fileListBank.push(bankCardUrl)
//续期账号变更
if (this.surrenderType == '2') {
let policyList = JSON.parse(localStorage.accountDTOList)
policyList.forEach(item => {
let obj = {
businessNo: JSON.parse(localStorage.customerInfo).edorApplyNo,
businessType: '2',
imageInfoType: '3',
rgssUrl: window.localStorage.getItem('bankCardUrlPath'),
subBusinessType: '3',
subBusinessNo: item.contNo
}
this.list.push(obj)
})
} else {
//累计红利领取
let obj = {
businessNo: JSON.parse(localStorage.customerInfo).edorApplyNo,
businessType: '2',
imageInfoType: '3',
rgssUrl: window.localStorage.getItem('bankCardUrlPath'),
subBusinessType: '3',
subBusinessNo: JSON.parse(localStorage.customerInfo).edorApplyNo
}
this.list.push(obj)
}
} else {
this.fileListBank = []
if (this.$route.query.isbankCard == '0') {
this.fileList[2].isShow = false
}
if (this.$route.query.isPolRecvWay == '0') {
this.fileList[3].isShow = false
}
document.getElementsByTagName('body')[0].classList.add('bg-white')
},
destroyed() {
document.getElementsByTagName('body')[0].classList.remove('bg-white')
},
methods: {
test(type, id) {
this.id = id
this.type = type
test(item) {
this.uploadCheck = item
},
afterRead(file) {
console.log('afterRead')
// 此时可以自行将文件上传至服务器
this.file = file.content
this.imgName = file.file.name
this.upload()
},
// 上传图片
upload() {
this.$toast.loading({
// 持续展示 toast
duration: 0,
// 禁用背景点击
forbidClick: true,
loadingType: 'spinner',
message: '加载中……'
})
let formdata = new FormData()
formdata.append('imgPath', this.dataURLtoFile(this.file, this.imgName))
formdata.append('imgPath', this.dataURLtoFile(file.content, file.file.name))
uploadImg(formdata).then(res => {
this.$toast.clear()
if (res.result == '0') {
this.$toast.clear()
// 是投保人
// 证件类型
let imageInfoType = ''
if (this.type == 'fileListIdFront' && this.id == '1') {
imageInfoType = '1'
} else if (this.type == 'fileListIdBack' && this.id == '1') {
imageInfoType = '2'
} else if (this.type == 'fileListBank') {
imageInfoType = '3'
}
//续期账号变更 subBusinessNo 传保单号, 其他传申请号
if (this.surrenderType == '2') {
let policyList = JSON.parse(localStorage.accountDTOList)
policyList.forEach(item => {
let obj = {
businessNo: JSON.parse(localStorage.customerInfo).edorApplyNo,
businessType: '2',
imageInfoType,
rgssUrl: encodeURI(res.path).replace(/\+/g, '%2B'),
subBusinessType: '3',
fileName: this.imgName,
subBusinessNo: item.contNo
}
this.list.push(obj)
})
} else {
let subBusinessNo = JSON.parse(localStorage.customerInfo).edorApplyNo
let obj = {
businessNo: JSON.parse(localStorage.customerInfo).edorApplyNo,
businessType: '2',
imageInfoType,
rgssUrl: encodeURI(res.path).replace(/\+/g, '%2B'),
subBusinessType: '3',
fileName: this.imgName,
subBusinessNo
}
this.list.push(obj)
}
this.uploadCheck.popList.push({ name: file.file.name, imgPath: res.path })
console.log(this.fileList)
} else {
switch (this.type) {
case 'fileListIdFront':
this.fileListIdFront = []
break
case 'fileListIdBack':
this.fileListIdBack = []
break
case 'fileListBank':
this.fileListBank = []
break
}
this.$toast.clear()
this.$toast(res.resultMessage)
}
})
@@ -278,29 +161,25 @@ export default {
message: '您确定要删除吗'
})
.then(() => {
if (detail.name == 'fileListIdFront') {
this.fileListIdFront = []
} else if (detail.name == 'fileListIdBack') {
this.fileListIdBack = []
} else if (detail.name == 'fileListBank') {
this.fileListBank = []
}
this.deleteImg(file)
this.fileList.map(item => {
if (item.name == detail.name) {
// 处理
let deleteIndex = null
for (let i = 0; i < item.realFileList.length; i++) {
if (item.realFileList[i].file == file.file) {
deleteIndex = i
break
}
}
item.realFileList.splice(deleteIndex, 1)
item.popList.splice(deleteIndex, 1)
}
})
})
.catch(() => {
// cancel
})
},
// 删除图片
deleteImg(file) {
this.list.map((item, index, array) => {
if (item.fileName.indexOf(file.file.name) == -1) {
return
} else {
array.splice(index, 1)
}
})
},
// 点击下一步
nextStep() {
this.$toast.loading({
@@ -311,98 +190,50 @@ export default {
loadingType: 'spinner',
message: '加载中……'
})
delete this.list.fileName
let hangUpData = {
surrenderDTO: {
surrenderId: JSON.parse(localStorage.customerInfo).surrenderId,
edorapplyNo: JSON.parse(localStorage.customerInfo).edorapplyNo,
edoracceptNo: '',
surrenderType: this.surrenderType,
mediaDTOList: [],
customerInfoDTOList: [
{
customerNo: JSON.parse(localStorage.customerInfo).customerNo
}
],
accountDTOList: [],
recommendDTO: {},
bonusDTOList: [],
signDTOList: []
}
//
let saveMediaDTO = {
platformType: 'app',
edorType: 'CT',
operateType: '02',
customerNo: this.customerInfo.customerNo,
name: this.customerInfo.customerName,
iDNo: this.customerInfo.idNo,
mobile: this.customerInfo.customerMobile,
surrenderId: this.customerInfo.surrenderId,
edorApplyNo: this.customerInfo.edorApplyNo,
mediaUploadDTOS: []
}
if (this.surrenderType == '2') {
let hangUpList = JSON.parse(localStorage.accountDTOList)
let surrenderId = JSON.parse(localStorage.customerInfo).surrenderId.split(',')
hangUpList.forEach((item, index) => {
preserveHangUp({
surrenderDTO: {
surrenderId: surrenderId[index],
edorapplyNo: JSON.parse(localStorage.customerInfo).edorapplyNo,
edoracceptNo: '',
surrenderType: this.surrenderType,
mediaDTOList: [],
customerInfoDTOList: [
{
customerNo: JSON.parse(localStorage.customerInfo).customerNo
}
],
accountDTOList: [item],
recommendDTO: {},
bonusDTOList: [],
signDTOList: []
}
}).then(backData => {
if (backData.result == 0) {
if (index >= hangUpList.length - 1) {
this.customerInfoChange()
console.log(this.fileList)
this.fileList.forEach(item => {
item.popList.forEach(subItem => {
saveMediaDTO.mediaUploadDTOS.push(
Object.assign(
{},
{
businessNo: this.customerInfo.edorApplyNo,
businessType: item.imageInfoType,
imageInfoType: item.imageInfoType,
rgssUrl: subItem.imgPath,
subBusinessType: item.imageInfoType,
subBusinessNo: item.imageInfoType,
manageComCode: item.imageInfoType
}
} else {
return this.$toast(backData.resultMessage)
}
})
)
)
})
} else {
preserveHangUp(hangUpData).then(backData => {
this.$toast.clear()
if (backData.result == '0') {
let customerInfo = JSON.parse(localStorage.customerInfo)
customerInfo.edoracceptNo = backData.content
localStorage.customerInfo = JSON.stringify(customerInfo)
localStorage.bankCardUrl && localStorage.removeItem('bankCardUrl')
this.customerInfoChange()
} else {
this.$toast(backData.resultMessage)
}
})
}
},
customerInfoChange() {
customerInfoChange({
surrenderDTOList: [
{
// surrenderType: JSON.parse(localStorage.customerInfo).surrenderType, //"1","基本信息变更" "2","续期账号变更" "3","红利领取"
surrenderType: this.surrenderType,
customerInfoDTOList: [],
mediaDTOList: this.list,
surrenderId: JSON.parse(localStorage.customerInfo).surrenderId,
recommendDTO: {},
bonusDTOList: [],
signDTOList: []
}
]
}).then(res => {
})
changeEdor(saveMediaDTO).then(res => {
this.$toast.clear()
if (res.result == 0) {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/preserve/handleResult',
url: location.origin + '/#/preserve/common/handleResult?entry=CT',
pullRefresh: '1',
backToFirst: '1'
},
routerInfo: {
path: '/preserve/handleResult'
path: '/preserve/common/handleResult?entry=CT'
}
})
} else {
@@ -410,36 +241,6 @@ export default {
}
})
}
},
computed: {
listenChange() {
const { fileListIdFront, fileListIdBack, fileListBank } = this
return {
fileListIdFront,
fileListIdBack,
fileListBank
}
}
},
watch: {
listenChange(val) {
if (
(val.fileListIdFront.length != '0' &&
val.fileListIdBack.length != '0' &&
val.fileListBank.length != '0' &&
(this.entry == 'surrender' || this.entry == 'hesitateSurrender') &&
this.accountType == '1') ||
(this.entry == 'renewal' && val.fileListBank.length != '0') ||
(val.fileListIdFront.length != '0' &&
val.fileListIdBack.length != '0' &&
(this.entry == 'surrender' || this.entry == 'hesitateSurrender') &&
this.accountType == '0')
) {
this.isDisabled = false
} else {
this.isDisabled = true
}
}
}
}
</script>

View File

@@ -4,85 +4,71 @@
<div style="border-bottom: 1px solid #ebedf0" class="fs14 pl10 pv12 bg-white">
<p>
<span>尊敬的</span>
<span class="red">{{ orderInfo.accountName }}</span
>先生/女士, 您好!
<span class="red">{{ ebizSurrender.accountName }}</span
>先生/女士您好
</p>
<p class="mt10">
<span>您的</span>
<span class="red">退保</span>已由代理人代办请确认信息并进行提交:
<span class="red">退保</span>已由代理人代办标红字体为修改/添加内容请确认信息并进行提交:
</p>
</div>
<van-cell-group class="mt10 cont-info-container">
<!-- 保单信息 -->
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">保单信息</p>
<van-cell title="保单号" :value="orderInfo.riskName" />
<van-cell title="产品名称" :value="orderInfo.riskName" />
<van-cell title="投保人" :value="orderInfo.appntName" />
<van-cell title="被保险人" :value="orderInfo.insuredName" />
<van-cell title="保单生效日期" :value="orderInfo.cvaliDate" />
<van-cell title="退保金额" :value="orderInfo.accountMoney" />
<van-cell title="万能险退保手续费比例" :value="orderInfo.ratio" />
<van-cell title="保单号" :value="ebizSurrender.contNo" />
<van-cell title="产品名称" :value="ebizSurrender.riskName" />
<van-cell title="投保人" :value="ebizSurrender.appntName" />
<van-cell title="被保险人" :value="ebizSurrender.insuredName" />
<van-cell title="保单生效日期" :value="ebizSurrender.cvalidate" />
<van-cell title="退保金额" :value="ebizSurrender.surrenderMoney | amtFormat" />
<van-cell title="万能险退保手续费比例" :value="ebizSurrender.surrenderRate" v-if="riskType" />
</van-cell-group>
<!-- 账号信息 -->
<van-cell-group class="mt10 cont-info-container">
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">账号信息</p>
<van-cell title="开户人姓名" :value="accountInfo.accountName" />
<van-cell title="退款账户" :value="accountInfo.accountName" />
<van-cell title="开户人姓名" :value="ebizSurrender.accountName" />
<van-cell title="退款账户" :value="account" />
<van-cell title="开户银行">
<div class="red" slot="default">{{ accountInfo.newBank }}</div>
<div :class="{ red: changeInfo.bankName }" slot="default">{{ ebizSurrender.bankName }}</div>
</van-cell>
<van-cell title="银行账号">
<div class="red" slot="default">{{ accountInfo.newBankNo }}</div>
<div :class="{ red: changeInfo.bankNo }" slot="default">{{ ebizSurrender.bankNo }}</div>
</van-cell>
<van-cell title="开户行所在地">
<div :class="{ red: changeInfo.bankProvince }" slot="default">{{ ebizSurrender.bankProvince }}</div>
</van-cell>
<van-cell title="退保原因">
<div :class="{ red: changeInfo.reason }" slot="default">{{ ebizSurrender.reason }}</div>
</van-cell>
<van-cell title="其他退保原因">
<div :class="[{ red: changeInfo.remark }, 'van-hairline--surround']" slot="default">{{ ebizSurrender.remark }}</div>
</van-cell>
<van-cell title="开户行所在地" :value="accountInfo.accountName" />
<van-cell title="退保原因" :value="accountInfo.accountName" />
</van-cell-group>
<van-cell-group class="fs14 mt10 pl15 pr15 pb20">
<p class="pt20 pb20">以下内容需要您阅读确认:</p>
<p>需阅读</p>
<p class="mb10 mt10">
<span class="red">国富人寿人身保险退保协议</span>
<img :src="src" v-if="documentStatus == '3'" />
</p>
<div v-for="(item, index) in pdfList" :key="index">
<p>需阅读</p>
<div class="mb10 mt10 flex align-items-c justify-content-fs">
<span class="red">{{ item.documentName }}</span>
<img :src="src" v-if="item.documentStatus == '1'" />
</div>
</div>
<p class="start">点击开始按钮进行相关操作</p>
</van-cell-group>
<!-- 短信验证 -->
<van-dialog
v-model="show"
title="短信确认"
show-cancel-button
cancelButtonColor="#4FC6B3"
class="dialog-delete"
confirmButtonColor="#FFFFFF"
@confirm="authConfirm(authCode)"
@cancel="clearTimer"
>
<van-dialog v-model="show" title="提示" show-cancel-button @confirm="authConfirm(authCode)" @cancel="clearTimer">
<p class="p10 fs14">向此手机发送验证码确认用户身份</p>
<p class="p10 fs14" style="border-bottom: 1px solid #ebedf0">{{ customerMobile }}</p>
<p class="p10 fs14" style="border-bottom: 1px solid #ebedf0;">{{ customerInfo.customerMobile | mask }}</p>
<van-cell-group class="flex align-items-c pr5 mb15">
<van-field maxlength="6" placeholder="请输入手机验证码" v-model="authCode" clearable label-width="0" />
<van-button type="danger" plain size="small" class="w160 p0" @click="getAuthCode" :disabled="codeDisabled" v-no-more-click="2000">{{
codeDisabled ? `${countDown}s后重新获取` : '获取验证码'
}}</van-button>
<van-button type="danger" plain size="small" class="w160 p0" @click="getAuthCode" :disabled="codeDisabled" v-no-more-click="2000">
{{ codeDisabled ? `${countDown}s后重新获取` : '获取验证码' }}
</van-button>
</van-cell-group>
</van-dialog>
<div class="bottom-btn bg-white">
<van-button
:type="submitForbidden ? '' : 'danger'"
:color="submitForbidden ? 'gray' : ''"
v-if="isSigned || submitForbidden"
size="large"
:disabled="nextDisabled || submitForbidden"
@click="show = true"
v-no-more-click="2000"
>提交申请</van-button
>
<!-- <van-button color="gray" v-else-if="submitForbidden" size="large" disabled>提交申请失败</van-button> -->
<!-- <van-button color="gray" v-else-if="linkInvalid" size="large" disabled>链接已失效</van-button>
<van-button color="gray" v-else-if="isCanceled" size="large" disabled>代理人已撤销</van-button> -->
<van-button type="danger" v-if="!isUnRead" size="large" @click="show = true" v-no-more-click="2000">提交申请</van-button>
<van-button type="danger" v-else size="large" @click="start" v-no-more-click="2000">开始</van-button>
</div>
</div>
@@ -90,10 +76,12 @@
<script>
import { Field, Cell, CellGroup, Dialog } from 'vant'
import { customerInfoShare, orderDetail, authCode, changeStatus, queryCancel } from '@/api/ebiz/preserve/preserve'
import { checkSignInvalid } from '@/api/ebiz/sale/sale'
import { queryConfirmDetail, changeEdor } from '@/api/ebiz/preserve/preserve'
import { getAuthCode } from '@/api/ebiz/sale/sale'
import filters from '@/views/ebiz/preserve/filters'
export default {
name: 'RenewalConfirmation',
name: 'SurrenderConfirmation',
components: {
[Field.name]: Field,
[Cell.name]: Cell,
@@ -102,163 +90,78 @@ export default {
},
data() {
return {
//账号信息
accountInfo: {
accountName: '张三',
newBank: '工商银行',
newBankNo: '1122334455667899076'
},
//保单信息
orderInfo: {
riskName: '国富人寿八桂无忧',
appntName: '张三',
insuredName: '李四',
cvaliDate: '2020-02-02',
accountMoney: '130.00',
ratio: '70%'
},
show: false, // 获取短信验证码
codeDisabled: false, // 获取验证码按钮是否禁用
timeId: null, // 计时器ID
countDown: 60, // 倒计时
authCode: '', // 验证码
src: this.$assetsUrl + 'images/u6490.png', // 图片路径
newBank: '', //新开户银行
newBankNo: '', //新银行卡号
customerMobile: '',
sessionId: '',
nextDisabled: true,
signInvalid: '',
isSigned: false, //是否签完名了
submitForbidden: false, //是否提交申请失败
linkInvalid: false, //链接是否失效
isCanceled: false, //是否撤销
documentStatus: '' //签名状态
isUnRead: false, //是否存在未阅读文档
customerInfo: {},
policy: {},
changeInfo: {},
surrenderSignList: [],
ebizSurrender: {},
pdfList: [], //需阅读文档list
riskType: null, //是否是万能险 4-是万能险 其他/null-非万能险
account: '' //退款银行账户
}
},
async created() {
this.$route.query.customerInfo && (localStorage.customerInfo = decodeURI(this.$route.query.customerInfo))
this.$route.query.token && (localStorage.token = this.$route.query.token)
this.customerMobile = JSON.parse(localStorage.customerInfo).customerMobile
//是否已经签名
if (sessionStorage.customerSign && JSON.parse(sessionStorage.customerSign).isSign) {
this.isSigned = true
} else {
this.isSigned = false
//token签名
if (this.$route.query.signInvalid) {
localStorage.signInvalid = this.$route.query.signInvalid
this.signInvalid = this.$route.query.signInvalid
//token是否过期
let resData = await this.checkSignInvalid(this.signInvalid)
if (resData == '1') {
this.linkInvalid = false
} else {
this.linkInvalid = true
}
}
}
document.getElementsByTagName('body')[0].classList.add('bg-white')
this.customerInfo = JSON.parse(localStorage['preserve-customerInfo']) //客户详情
this.policy = JSON.parse(localStorage['preserve-policy']) //保单详情
this.riskType = this.policy.riskType
this.init()
},
destroyed() {
document.getElementsByTagName('body')[0].classList.remove('bg-white')
},
methods: {
start() {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/preserve/autopayAuthorization'
url: location.origin + '/#/preserve/ct/SurrenderTip'
},
routerInfo: {
path: '/preserve/autopayAuthorization'
path: '/preserve/ct/SurrenderTip'
}
})
},
async init() {
this.$toast.loading({
// 持续展示 toast
duration: 0,
// 禁用背景点击
forbidClick: true,
loadingType: 'spinner',
message: '加载中……'
})
// await this.isPreserveCancel()
//如果没有被撤销
// if (backData == 'notCanceled') {
let params = {
surrenderType: '2', //"1","基本信息变更" "2","续期账号变更" "3","红利领取"
customerInfoDTOList: [],
mediaDTOList: [],
surrenderId: JSON.parse(localStorage.customerInfo).surrenderId,
edorapplyNo: JSON.parse(localStorage.customerInfo).edorapplyNo || JSON.parse(localStorage.customerInfo).edorApplyNo
}
let res = await customerInfoShare(params)
this.$toast.clear()
if (res.result == 0) {
if (!JSON.parse(localStorage.customerInfo).contNo) {
res.content.accountResList.forEach(item => {
// this.policyList.push(item.contNo)
if (item.isNewInfo == '0') {
this.policyList.push({
contNo: item.contNo,
surrenderStatus: item.surrenderStatus
init() {
return new Promise((resolve, reject) => {
queryConfirmDetail({
surrenderId: this.customerInfo.surrenderId,
edorType: 'CT'
}).then(
res => {
if (res.result == 0) {
this.pdfList = res.content.surrenderSignList
this.ebizSurrender = res.content.content[1]
this.surrenderSignList = res.content.surrenderSignList
let keys = Object.keys(res.content.content[1])
for (let item of keys) {
this.changeInfo[item] = res.content.content[0][item] !== res.content.content[1][item]
}
this.account = this.changeInfo.bankNo == true ? '新银行账户' : '原银行账户'
this.ebizSurrender.surrenderRate =
this.ebizSurrender.surrenderRate == '0' ? this.ebizSurrender.surrenderRate : this.ebizSurrender.surrenderRate + '%'
this.isUnRead = this.pdfList.some(i => {
return i.documentStatus == '0'
})
this.newBank = item.bankName
this.newBankNo = item.bankNo
resolve()
} else {
reject(this.$toast(res.resultMessage))
}
})
localStorage.policyList = JSON.stringify(this.policyList)
} else {
//如果是从保全进度查询分享进来(只有一个单)
res.content.accountResList.forEach(item => {
// this.policyList.push(item.contNo)
if (item.contNo == JSON.parse(localStorage.customerInfo).contNo && item.isNewInfo == '0') {
this.policyList.push({
contNo: item.contNo,
surrenderStatus: item.surrenderStatus
})
this.newBank = item.bankName
this.newBankNo = item.bankNo
}
})
}
//未签名并且链接有效的情况下
if (!this.isSigned && !this.linkInvalid) {
//撤销
this.isCanceled = res.content.accountResList.every(item => {
return item.surrenderStatus == 5
})
}
//未签名并且链接有效的情况下
if (!this.linkInvalid) {
//已提交
this.submitForbidden = res.content.accountResList.every(item => {
return item.surrenderStatus == 3 || item.surrenderStatus == 6 || item.surrenderStatus == 9 || item.surrenderStatus == 7
})
}
//未签名&链接有效&未撤销
// if (!this.isSigned && !this.linkInvalid && !this.isCanceled) {
// //提交申请失败
// this.submitForbidden = res.content.accountResList.every(item => {
// return item.surrenderStatus == 7
// })
// }
// localStorage.signList = JSON.stringify(res.content.signList[0])
if (!sessionStorage.customerSign) {
let customerSign = {
baseEncryp: '',
policyUrl: res.content.signList[0].policyUrl
},
error => {
reject(this.$toast(error))
}
sessionStorage.customerSign = JSON.stringify(customerSign)
}
this.documentStatus = res.content.signList[0].documentStatus
this.getOrderDetail({
contNo: this.policyList[0].contNo
})
} else {
this.$toast(res.resultMessage)
}
// }
)
})
},
// 获取短信验证码
getAuthCode() {
@@ -272,15 +175,14 @@ export default {
this.countDown = 60
}
}, 1000)
authCode({
operateType: 'smslogin',
sessionId: '',
validateCode: '',
operateCode: this.customerMobile,
system: '',
getAuthCode({
operateType: 'appntInfoEntry',
type: 'H5',
operateCode: this.customerInfo.customerMobile,
system: 'agentApp',
operateCodeType: '0'
}).then(res => {
console.log(res)
if (res.result == 0) {
this.sessionId = res.sessionId
} else {
@@ -292,28 +194,7 @@ export default {
async authConfirm() {
//清理计时器
this.clearTimer()
changeStatus({
surrenderId: JSON.parse(localStorage.customerInfo).surrenderId,
surrenderStatus: '3',
smsCodeDTO: {
smsId: this.sessionId,
code: this.authCode
}
}).then(resDdata => {
if (resDdata.result == 0) {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/preserve/submitResult`
},
routerInfo: {
path: `/preserve/submitResult`
}
})
} else {
this.$toast(resDdata.resultMessage)
}
})
this.submit()
},
// 清理计时器
clearTimer() {
@@ -322,35 +203,37 @@ export default {
this.countDown = 60
this.codeDisabled = false
},
//获取保单详情
async getOrderDetail(data) {
let res = await orderDetail(data)
if (res.result == 0) {
this.nextDisabled = false
let flag = true
this.list.forEach((item, index) => {
if (item.contNo == data.contNo) {
flag = false
console.info(index, item, res.content)
// this.list.splice(index, 1, res.content)
this.list.splice(index, 1, Object.assign(this.policyList[index], res.content))
}
})
if (flag) {
// this.list.push(res.content)
this.list.push(Object.assign(this.policyList[0], res.content))
this.policyList.forEach((item, index) => {
if (index != 0) {
this.list.push(item)
//确认变更
submit() {
let data = {
platformType: 'APP',
edorType: 'CT',
operateType: '04',
surrenderId: this.customerInfo.surrenderId,
edorApplyNo: this.customerInfo.edorApplyNo,
checkCodeDTO: {
smsId: this.sessionId,
code: this.authCode
}
}
changeEdor(data).then(res => {
if (res.result == 0) {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/preserve/common/submitResult`
},
routerInfo: {
path: `/preserve/common/submitResult`
}
})
} else {
this.$toast(res.resultMessage)
}
} else {
this.$toast(res.resultMessage)
}
},
//提交申请
submit() {},
})
}
/*
// 在微信中校验token是否失效
async checkSignInvalid(signInvalid) {
let that = this
@@ -374,25 +257,13 @@ export default {
}
})
})
},
//查询撤销
async isPreserveCancel() {
return new Promise((resolve, reject) => {
let data = {
surrenderId: JSON.parse(localStorage.customerInfo).surrenderId
}
queryCancel(data).then(res => {
//result=0 已撤销
if (res.result == 0) {
this.isCanceled = true
resolve()
} else {
this.isCanceled = false
reject()
}
})
})
}
*/
},
filters: {
mask: filters.mask,
idToText: filters.idToText,
amtFormat: filters.amtFormat
},
beforeDestroy() {
//清理计时器

View File

@@ -1,71 +1,73 @@
<!--退保页-->
<template>
<div class="renewal-info-container pb45">
<div class="surrender-info-container pb45">
<div v-if="!isScan">
<van-cell-group class="mt10 cont-info-container">
<!-- 保单信息 -->
<p style="border-bottom: 1px solid #ebedf0" class=" fs15 fwb pl10 pv12">保单信息</p>
<van-cell title="产品名称" :value="detail.riskName" required />
<van-cell title="保单号" :value="detail.contNo" required />
<van-cell title="投保人" :value="detail.appntName" required />
<van-cell title="被保险人" :value="detail.insuredName" required />
<van-cell title="保单生效日期" :value="detail.cvaliDate" required />
<van-cell title="退保金额" :value="ctTrialDto.fee | amtFormat" required />
<van-cell title="万能险退保手续费比例" :value="ctTrialDto.feeRate" required />
<van-cell title="产品名称" :value="detail.riskName" required name="产品名称" />
<van-cell title="保单号" :value="detail.contNo" required name="保单号" />
<van-cell title="投保人" :value="detail.appntName" required name="投保人" />
<van-cell title="被保险人" :value="detail.insuredName" required name="被保险人" />
<van-cell title="保单生效日期" :value="detail.cvalidate" required name="保单生效日期" />
<van-cell title="退保金额" :value="ctTrialDTO.surrenderMoney | amtFormat" required name="退保金额" />
<van-cell title="万能险退保手续费比例" :value="ctTrialDTO.surrenderRate" required v-if="riskType" name="万能险退保手续费比例" />
</van-cell-group>
<!-- 账号信息 -->
<div class="account-info-container">
<van-cell-group class="mt10">
<p style="border-bottom: 1px solid #ebedf0" class=" fs15 fwb pl10 pv12">账号信息</p>
<van-cell title="开户人姓名" required :value="ctTrialDto.newAccName" />
<van-field label="开户人姓名" required :value.sync="ctTrialDTO.accountName" name="开户人姓名" v-validate="'required'" readonly />
<van-field
v-model="account"
:value="account"
label="退款账户"
placeholder="请选择"
right-icon="arrow"
@click="changeAccount"
@click="toSelect('3')"
readonly
v-validate="'required'"
data-vv-name="退款账户"
name="退款账户"
required
/>
<van-field
v-model="bank"
:value.sync="ctAccountDTO.bankName"
label="开户银行"
placeholder="请选择"
right-icon="arrow"
@click="accountType != '1' ? (bankPopup = true) : (bankPopup = false)"
@click="toSelect('1')"
readonly
v-validate="'required'"
data-vv-name="开户银行"
:disabled="accountType == '1'"
name="开户银行"
v-if="accountType != '1'"
required
/>
<van-field v-else label="开户银行" :value.sync="ctAccountDTO.bankName" v-validate="'required'" name="开户银行" required readonly />
</van-cell-group>
<van-cell-group class="flex align-items-c">
<van-field
v-model="bankId"
v-model="ctAccountDTO.bankNo"
label="银行账号"
required
maxlength="19"
placeholder="请输入"
clearable
v-validate="'required|bankCard'"
data-vv-name="银行账号"
name="银行账号"
type="textarea"
/>
<van-button type="danger" size="small" round class="bankCard mr10 w110 h20" @click="cardScanning('0')" v-no-more-click="2000">银行卡扫描</van-button>
</van-cell-group>
<van-field v-model="bankProvince" label="开户银行所在地" placeholder="请输入" v-validate="'required'" data-vv-name="开户银行所在地" required />
<van-field v-model="ctAccountDTO.bankProvince" label="开户银行所在地" placeholder="请输入" v-validate="'required'" name="开户银行所在地" required />
<van-field
v-model="surrenderReason"
:value.sync="reason"
label="退保原因"
required
placeholder="请选择"
right-icon="arrow"
@click="surrenderReasonPopup = true"
readonly
v-validate="'required'"
data-vv-name="退保原因"
name="退保原因"
@click="toSelect('2')"
/>
</div>
<!-- 其他退保原因输入框 -->
@@ -74,43 +76,24 @@
<van-col span="16">
<van-field
class="van-hairline--surround"
v-model="otherReason"
v-model="remark"
rows="4"
autosize
type="textarea"
name="其他退保原因"
placeholder="请输入其他退保原因"
v-validate="surrenderReasonType === '6' ? 'required' : ''"
v-if="surrenderReasonType === '6'"
v-validate="surrenderReasonType == '6' ? 'required' : ''"
v-if="surrenderReasonType == '6'"
/>
</van-col>
</van-row>
<div class="bottom-btn bg-white">
<van-button type="danger" size="large" @click="nextStep" v-no-more-click="2000">下一步</van-button>
</div>
<!-- 开户银行选择 -->
<van-popup v-model="bankPopup" position="bottom">
<van-list>
<van-cell v-for="item in bankList" :key="item.code" :title="item.bankName" class="text-center" @click="chooseBank(item.bankName, item.code)" />
</van-list>
</van-popup>
<!-- 退款账户选择 -->
<van-popup v-model="accountPopup">
<van-list>
<van-cell v-for="item in accountList" :key="item.type" :title="item.title" class="text-center" @click="chooseAccount(item.title, item.type)" />
</van-list>
</van-popup>
<!-- 退保原因选择 -->
<van-popup v-model="surrenderReasonPopup" position="bottom">
<van-list>
<van-cell
v-for="item in surrenderReasonList"
:key="item.id"
:title="item.text"
class="text-center"
@click="chooseSurrderReason(item.text, item.id)"
/>
</van-list>
<!-- 字段选择 -->
<van-popup v-model="popupShow" position="bottom">
<van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="popupShow = false" />
</van-popup>
</div>
<!-- 银行卡扫描 -->
@@ -119,53 +102,70 @@
</template>
<script>
import { Field, Cell, CellGroup, Popup, List, Row, Col } from 'vant'
import { Field, Cell, CellGroup, Popup, Row, Col, Picker } from 'vant'
import BankCardScan from '@/components/ebiz/sale/BankCardScan'
import { policyInfo, trial } from '@/api/ebiz/preserve/preserve'
import { policyInfo, trial, changeEdor } from '@/api/ebiz/preserve/preserve'
import { getBankList } from '@/api/ebiz/sale/sale'
import dataDic from '../js/data-dictionary.js'
import filters from '@/views/ebiz/preserve/filters'
export default {
name: 'surrenderInfo',
name: 'SurrenderInfo',
components: {
[Field.name]: Field,
[Cell.name]: Cell,
[CellGroup.name]: CellGroup,
[List.name]: List,
[Row.name]: Row,
[Col.name]: Col,
[Popup.name]: Popup,
[Picker.name]: Picker,
BankCardScan
},
data() {
return {
valueKey: '',
popupShow: false,
pickerType: '',
columns: [],
policy: null, //保单详情
customerInfo: {}, //客户详情
bank: '', //开户银行
bankPopup: false,
bankCode: '', //银行编码
bankList: [], // 银行列表
bankId: '', // 银行卡号
bankProvince: '',
isScan: false, // 是否扫描银行卡
surrenderReasonList: [],
account: '原银行账户', //退款账户
accountType: '1', //退款账户
accountPopup: false, //展示退款账户弹框
accountList: [], //退款银行账户
otherReason: '', //其他退款原因
surrenderReason: '', //退款原因
surrenderReasonType: '', //退款原因
surrenderReasonPopup: false, //展示退保原因弹框
ctTrialDto: {},
accountType: '1', //退款账户码值
surrenderReasonType: '', //退款原因码值
riskType: null, //是否是万能险 4-是万能险 其他/null-非万能险
prem: 0, //保单总保费
polRecvWay: 0, //是否是纸质合同 0电子1纸质2电子+纸质
reason: '', //退保原因
remark: '', //退保其他原因描述
//退款银行账户信息
ctAccountDTO: {
bankCode: '',
bankNo: '',
bankName: '',
bankProvince: ''
},
//试算信息
ctTrialDTO: {
surrenderMoney: '',
surrenderRate: '',
accountName: ''
},
//退保基本信息
detail: {
riskName: '',
contNo: '',
appntName: '',
insuredName: '',
cvaliDate: '',
surrenderMoney: ''
cvalidate: ''
},
//原始退保信息
ctBonusDTO: {
isNewInfo: '1'
}
}
},
@@ -173,14 +173,16 @@ export default {
this.customerInfo = JSON.parse(localStorage['preserve-customerInfo']) //客户详情
this.policy = JSON.parse(localStorage['preserve-policy'])
},
mounted() {
async mounted() {
document.getElementsByTagName('body')[0].classList.add('bg-white')
// 筛选按钮的点击事件
window.appCallBack = this.appCallBack
this.accountList = dataDic.accountList //退款银行账户列表
this.surrenderReasonList = dataDic.surrenderReasonList //退款原因列表
this.getBank()
this.getPolicyInfo()
this.getTrial({ customerNo: this.customerInfo.customerNo, edorType: this.$route.query.entry, contNo: this.policy.contNo })
await this.getPolicyInfo()
await this.getTrial({ customerNo: this.customerInfo.customerNo, edorType: this.$route.query.entry, contNo: this.policy.contNo })
},
destroyed() {
document.getElementsByTagName('body')[0].classList.remove('bg-white')
},
filters: {
idToText: filters.idToText,
@@ -189,18 +191,34 @@ export default {
methods: {
//获取试算信息
getTrial(data) {
trial(data).then(
res => {
if (res.result == '0') {
this.ctTrialDto = res.content
} else {
this.$toast(res.resultMessage)
return new Promise((resolve, reject) => {
trial(data).then(
res => {
if (res.result == '0') {
this.ctTrialDTO.accountName = res.content.newAccName
this.ctTrialDTO.surrenderRate = res.content.feeRate
this.ctTrialDTO.surrenderMoney = res.content.edorCTPrem
this.ctAccountDTO.bankCode = res.content.newAccBankCode
this.ctAccountDTO.bankNo = res.content.newAccNo
this.ctAccountDTO.bankProvince = res.content.newBankProvince
this.polRecvWay = res.content.polRecvWay
dataDic['edorBankType'].some(item => {
if (item.id == this.ctAccountDTO.bankCode) {
this.ctAccountDTO.bankName = item.text
}
})
this.ctBonusDTO = Object.assign({}, this.ctBonusDTO, this.ctTrialDTO, this.ctAccountDTO)
this.ctTrialDTO.surrenderRate = res.content.feeRate == '0' ? res.content.feeRate : res.content.feeRate + '%'
resolve()
} else {
reject(this.$toast(res.resultMessage))
}
},
error => {
reject(this.$toast(error))
}
},
error => {
console.log(error)
}
)
)
})
},
//获取初始化信息
getPolicyInfo() {
@@ -214,57 +232,86 @@ export default {
policyInfo(data).then(
res => {
if (res.result == '0') {
// this.beneficiaries = res.content.cont.bcBnfList
// //isNewInfo 是否新信息 0-是 1-否
// this.beneficiaries.forEach(item => {
// item.isNewInfo = '1'
// })
let resData = res.content.cont
this.detail = Object.assign({}, this.detail, resData, {
appntName: resData.appnt.appntName,
insuredName: resData.insuredList[0].insuredName
this.detail.riskName = resData.riskName
this.detail.contNo = resData.contNo
this.detail.appntName = resData.appntName
this.detail.insuredName = resData.insuredName
this.detail.cvalidate = resData.cvaliDate
this.detail.appntName = resData.appnt.appntName
this.detail.insuredName = resData.insuredList[0].insuredName
if (resData.riskList.length > 0) {
resData.riskList.forEach(i => {
this.prem += Number(i.prem)
})
}
this.riskType = resData.riskList.some(item => {
return item.riskType == '4'
})
this.policy.riskType == this.riskType
this.ctBonusDTO = Object.assign({}, this.ctBonusDTO, this.detail)
resolve()
} else {
reject(this.$toast(res.content))
}
},
error => {
reject(console.log(error))
reject(this.$toast(error))
}
)
})
},
changeAccount() {
// this.accountPopup = true
// if(this.accountType == '1'){
// this.bankId = this.ctTrialDto.newAccNo
// this.bankProvince = this.ctTrialDto.newBankProvince
// this.bank = this.ctTrialDto.newBankProvince
//TODO
// }
//弹框选择
toSelect(pickerType, valueKey) {
//pickerType 1.银行账户 退保原因 3、退保账户
;[this.popupShow, this.pickerType] = [true, pickerType]
if (valueKey) this.valueKey = valueKey
switch (pickerType) {
case '1':
this.columns = this.bankList
break
case '2':
this.columns = dataDic.surrenderReasonList
break
case '3':
this.columns = dataDic.accountList
}
},
// 选择银行
chooseBank(name, code) {
this.bank = name
this.bankCode = code
this.bankPopup = false
},
//选择退款账户
chooseAccount(title, type) {
this.account = title
this.accountType = type
this.accountPopup = false
},
//选择退款原因
chooseSurrderReason(title, type) {
this.surrenderReason = title
this.surrenderReasonType = type
this.surrenderReasonPopup = false
//确认选择字段
onConfirm(value) {
this.popupShow = false
switch (this.pickerType) {
case '1':
this.ctAccountDTO.bankCode = value.code
this.ctAccountDTO.bankName = value.bankName
break
case '2':
this.reason = value.text
this.surrenderReasonType = value.id
if (this.surrenderReasonType != '6') {
this.remark = ''
}
break
case '3':
this.account = value.text
this.accountType = value.id
if (this.accountType == '1') {
this.ctAccountDTO.bankCode = this.ctBonusDTO.bankCode
this.ctAccountDTO.bankName = this.ctBonusDTO.bankName
this.ctAccountDTO.bankProvince = this.ctBonusDTO.bankProvince
this.ctAccountDTO.bankNo = this.ctBonusDTO.bankNo
} else {
this.ctAccountDTO.bankCode = ''
this.ctAccountDTO.bankName = ''
this.ctAccountDTO.newBankProvince = ''
this.ctAccountDTO.bankNo = ''
}
break
}
},
// 获取银行卡扫描信息
getBankCardInfo(data) {
this.bankId = data.name
this.ctAccountDTO.bankNo = data.name
this.$jump({
flag: 'navigation',
extra: {
@@ -321,48 +368,57 @@ export default {
},
// 下一步
async nextStep() {
this.$validator.validate().then(valid => {
if (true === valid) {
let params = {}
/*若更换新的银行卡需重新上传银行卡影像保费满10000需上传身份证影像如果低于10000无需上传
this.$forceUpdate()
let valid = await this.$validator.validate()
if (true === valid) {
let ctBonusDTONew = Object.assign({}, this.ctAccountDTO, this.ctTrialDTO, this.detail, {
reason: this.reason,
remark: this.remark,
isNewInfo: '0'
})
let ctBonusDTOList = [this.ctBonusDTO, ctBonusDTONew]
let data = {
platformType: 'APP',
edorType: 'CT',
operateType: '01',
contNo: this.detail.contNo,
ctBonusDTOList
}
console.log('data=====', data)
/*若更换新的银行卡需重新上传银行卡影像保费满10000需上传身份证影像如果低于10000无需上传
如果是纸质合同,需要添加纸质保单影像,
在此页进行判断是否需要上传身份证影像和纸质保单影像*/
let url = `/preserve/surrenderConfirmation?`
let url = '',
isPolRecvWay = this.polRecvWay == '1' ? '1' : '0',
isbankCard = this.accountType == '2' ? '1' : '0',
isIdCard = this.customerInfo.idType == '1' ? '1' : '0'
if (isIdCard == '0' && isbankCard == '0' && isPolRecvWay == '0') {
url = '/preserve/common/handleResult?entry=CT'
} else {
this.$toast(this.$validator.errors.all()[0])
url = `/preserve/ct/imageUpload?entry=CT&isbankCard=${isbankCard}&isIdCard=${isIdCard}&isPolRecvWay=${isPolRecvWay}`
}
})
},
/*
//获取保单详情
async getOrderDetail(data) {
orderDetail(data).then(res => {
if (res.result == 0) {
let flag = true
this.list.forEach((item, index) => {
if (item.contNo == data.contNo) {
flag = false
this.list.splice(index, 1, res.content)
}
})
if (flag) {
this.list.push(res.content)
this.policyList.forEach((item, index) => {
if (index != 0) {
this.list.push({
contNo: item
})
console.log('url=====', url)
changeEdor(data).then(res => {
if (res.result == '0') {
this.customerInfo.surrenderId = res.content.surrenderId
this.customerInfo.edorApplyNo = res.content.edorApplyNo
localStorage.setItem('preserve-customerInfo', JSON.stringify(this.customerInfo))
localStorage.setItem('preserve-policy', JSON.stringify(this.policy))
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#' + url
},
routerInfo: {
path: url
}
})
// this.getBank()
}
} else {
this.$toast(res.resultMessage)
}
})
})
} else {
this.$toast(this.$validator.errors.all()[0])
}
},
*/
// 获取银行卡列表
async getBank() {
let data = {
@@ -370,6 +426,10 @@ export default {
}
let res = await getBankList(data)
if (res.result == '0') {
res.content.forEach(item => {
item.id = item.code
item.text = item.bankName
})
this.bankList = res.content
} else {
this.$toast(res.resultMessage)
@@ -385,7 +445,7 @@ export default {
margin-right: 20px;
}
.renewal-info-container {
.surrender-info-container {
.cont-info-container {
/deep/.van-cell__title,
.van-cell__value {

View File

@@ -1,32 +1,26 @@
<!--退保-退保协议-->
<!--联系方式变更协议-->
<template>
<div class="insuranceInformation-container pb50">
<div class="surrender-tip-content">
<van-notice-bar :scrollable="false" v-if="!Time" class="notice">{{ `提示阅读时长需在${this.Time ? this.time : this.number}秒以上` }}</van-notice-bar>
<iframe :src="src + appntSign.policyUrl" class="iframe"></iframe>
<van-radio-group v-model="radio" class="pb10 pt20 pl30 fs14">
<iframe :src="src + pdfUrl" class="iframe"></iframe>
<van-radio-group v-model="radio" class="pb10 pt20 pl30 pr30 fs14">
<van-radio name="1" @click="click">
本人确认已阅读
<span>国富人寿人身保险退保协议</span>
<span class="red">{{ pdfList[0].documentName }}</span>
</van-radio>
</van-radio-group>
<div class="bg-white bottom-btn">
<van-button type="danger" size="large" :disabled="isDisabledComplite" @click="goNext" v-no-more-click="1000">完成</van-button>
<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 config from '@/config'
// import axios from 'axios'
import { changeEdor, queryConfirmDetail } from '@/api/ebiz/preserve/preserve'
export default {
data() {
let isWeixin = this.$utils.device().isWeixin //判断环境
return {
// 投保人还是被保险人信息
signVal: '',
// 投保人签名信息
appntSign: {},
radio: '',
// 倒计时时间
number: '',
@@ -39,23 +33,11 @@ export default {
Time: true,
// 按钮是否可以点击
isDisable: true,
// 是否在微信
isWeixin,
// 是否签名了 回执流程
isSign: true,
// sign加密码
base64: '',
// 是否可以点击
isDisabledComplite: true,
// local带来的被保险人信息
saleInsuredPersonInfo: {},
// local带来的投保人信息
saleInsuredInfo: {},
// 是否从详情跳过来 如果为1 是
detailJump: '',
src: location.origin + '/pdfjs/web/viewer.html?file=',
//保险产品名称
riskName: localStorage.riskName
pdfUrl: '',
pdfList: [],
customerInfo: JSON.parse(localStorage.getItem('preserve-customerInfo')),
policy: JSON.parse(localStorage['preserve-policy']),
src: location.origin + '/pdfjs/web/viewer.html?file='
}
},
components: {
@@ -64,458 +46,117 @@ export default {
[Dialog.name]: Dialog,
[NoticeBar.name]: NoticeBar
},
mounted() {
let that = this
that.timeOut()
document.body.style.backgroundColor = '#fff'
},
async created() {
let that = this
that.detailJump = window.localStorage.getItem('detailJump')
that.signVal = window.localStorage.getItem('sign-val')
// 获取投保人信息
that.saleInsuredInfo = JSON.parse(window.localStorage.getItem('saleInsuredInfo'))
if (this.isWeixin) {
that.relationToAppnt = JSON.parse(window.localStorage.getItem('saleInsuredPersonInfo')).relationToAppnt
}
if (this.detailJump != '1') {
// 投被保险人是否同人
that.relationToAppnt = JSON.parse(window.localStorage.getItem('saleInsuredPersonInfo')).relationToAppnt
// 获取被保险人信息
that.saleInsuredPersonInfo = JSON.parse(window.localStorage.getItem('saleInsuredPersonInfo'))
}
// if (this.detailJump != '1') {
// this.getOrderDetail()
// }
if (this.isWeixin) {
let imgBase64Data = sessionStorage.getItem('oneimgBase64Data')
let wxSigned = sessionStorage.getItem('onewxSigned')
let signInfo = JSON.parse(localStorage.getItem('signInfo'))
console.log('`````````````````````````````````')
console.log('imgBase64Data: oneimgBase64Data:' + imgBase64Data)
console.log('wxSigned: ' + wxSigned)
if (wxSigned) {
console.log('第二次进入电子保单')
console.log('````````````````````````````````')
this.getOrderDetail().then(() => {
this.Time = true
this.isOver = true
this.radio = '1'
this.base64 = imgBase64Data
this.isDisabledComplite = false
console.log('signInfo.status:' + signInfo.status)
if (signInfo.status == '0') {
// this.appntSign.documentStatus = '3'
console.log('``````````````````')
this.$set(this.appntSign, 'documentStatus', '3')
console.log('appntSign.documentStatus: ' + this.appntSign.documentStatus)
this.isSign = false
this.isDisabledComplite = false
// this.isDisable = false
} else {
this.$set(this.insuredSign, 'documentStatus', '3')
// this.insuredSign.documentStatus = '3'
this.isDisabledComplite = false
this.isSign = false
}
})
} else {
console.log('````````````````````````')
console.log('第一次进入电子保单')
this.timeOut()
this.getOrderDetail()
}
} else {
this.timeOut()
if (this.detailJump != '1') {
this.getOrderDetail()
}
}
mounted() {},
created() {
this.timeOut()
this.init()
},
methods: {
//信息初始化
init() {
return new Promise((resolve, reject) => {
queryConfirmDetail({
surrenderId: this.customerInfo.surrenderId,
edorType: 'CT'
}).then(
res => {
if (res.result == 0) {
this.pdfList = res.content.surrenderSignList
this.pdfUrl = this.pdfList[0].policyUrl
resolve()
} else {
reject(this.$toast(res.resultMessage))
}
},
error => {
reject(this.$toast(error))
}
)
})
},
timeOut() {
let that = this
let time = that.time
that.Time = false
that.number = `${time}`
let time = this.time
this.Time = false
this.number = `${time}`
let timer = setInterval(() => {
time--
if (time <= 0) {
time = 0
clearInterval(timer)
that.Time = true
that.isOver = true
this.Time = true
this.isOver = true
}
that.number = `${time}`
this.number = `${time}`
}, 1000)
},
// 获取签名状态
getOrderDetail() {
let that = this
let data = {
orderNo: window.localStorage.getItem('orderNo')
}
return new Promise((resolve, reject) => {
getOrderDetail(data).then(res => {
if (res.result == '0') {
res.orderDTO.ebizSignDTOS.map(item => {
if (item.signType == '0' || item.signType == '2') {
if (item.documentCode == '3') {
that.appntSign = item
console.log('that.appntSign', that.appntSign)
}
}
})
that.appntSign.policyUrl = encodeURIComponent(config.imgDomain + `/returnDirectStream?imgPath=${that.appntSign.policyUrl}`)
if (that.isWeixin) {
if (res.orderDTO.ebizSignDTOS.length > 1) {
if (that.appntSign.documentStatus == '3') {
that.isDisabledComplite = false
}
}
}
resolve('success')
}
})
})
},
// 点击阅读时
click() {
let that = this
if (that.isOver == false) {
if (this.isOver == false) {
Dialog.confirm({
title: '提示',
message: '该内容涉及您的重大权益,请您仔细阅读',
showCancelButton: false
}).then(() => {
that.radio = ''
this.radio = ''
})
}
},
// 点击签名
sign(val) {
let that = this
this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
})
if (val == '0') {
if (this.detailJump != '1') {
if (this.relationToAppnt == '1') {
if (this.isWeixin) {
this.toAirSign('0', '投保人签名', '5', '1')
} else {
EWebBridge.webCallAppInJs('ca_sign', {
//身份证号码
number: this.saleInsuredInfo.idNo,
//姓名
name: this.saleInsuredInfo.name,
type: this.saleInsuredInfo.idType,
keyword: '投保人签名',
pageNo: '1',
index: '1',
offset: '5',
pos: '3'
}).then(data => {
this.$toast.clear()
if (JSON.parse(data).state == '1') {
this.base64 = decodeURI(JSON.parse(data).sign)
this.appntSign.documentStatus = '3'
this.isDisabledComplite = false
this.isSign = false
}
})
}
} else {
if (this.isWeixin) {
this.toAirSign('0', '投保人签名', '5', '1')
} else {
EWebBridge.webCallAppInJs('ca_sign', {
//身份证号码
number: this.saleInsuredInfo.idNo,
//姓名
name: this.saleInsuredInfo.name,
type: this.saleInsuredInfo.idType,
keyword: '投保人签名',
pageNo: '1',
index: '1',
offset: '5',
pos: '3'
}).then(data => {
this.$toast.clear()
if (JSON.parse(data).state == '1') {
this.base64 = decodeURI(JSON.parse(data).sign)
this.appntSign.documentStatus = '3'
this.isDisabledComplite = false
this.isSign = false
}
})
}
}
} else {
switch (that.saleInsuredInfo.idType) {
case '居民身份证':
that.saleInsuredInfo.idType = '1'
break
case '户口本':
that.saleInsuredInfo.idType = '2'
break
case '出生证':
that.saleInsuredInfo.idType = '3'
break
case '外国人护照':
that.saleInsuredInfo.idType = '4'
break
case '港澳居民来往内地通行证':
that.saleInsuredInfo.idType = '5'
break
case '台湾居民来往大陆通行证':
that.saleInsuredInfo.idType = '6'
break
// case '其他':
// that.saleInsuredInfo.idType = '7'
// break
case '外国人永久居留身份证':
that.saleInsuredInfo.idType = '8'
break
case '港澳台居民居住证':
that.saleInsuredInfo.idType = '9'
break
}
if (this.isWeixin) {
this.toAirSign('0', '投保人签名', '5', '1')
} else {
EWebBridge.webCallAppInJs('ca_sign', {
//身份证号码
number: that.saleInsuredInfo.idNo,
//姓名
name: that.saleInsuredInfo.name,
type: that.saleInsuredInfo.idType,
keyword: '投保人签名',
pageNo: '1',
index: '1',
offset: '5',
pos: '3'
}).then(data => {
this.$toast.clear()
if (JSON.parse(data).state == '1') {
that.base64 = decodeURI(JSON.parse(data).sign)
that.appntSign.documentStatus = '3'
that.isDisabledComplite = false
that.isSign = false
}
})
}
}
}
},
// toAirSign(status, keyword, offset) {
// localStorage.setItem(
// 'signInfo',
// JSON.stringify({
// idNo: this.saleInsuredInfo.idNo,
// name: this.saleInsuredInfo.name,
// type: this.saleInsuredInfo.idType,
// keyword: keyword,
// status: status,
// offset: offset,
// originUrl: location.href
// })
// )
// window.location.href = this.$mainUrl + '/sign/index.html'
// },
toAirSign(status, keyword, offset, originStatus) {
localStorage.setItem(
'signInfo',
JSON.stringify({
originStatus: originStatus,
idNo: this.saleInsuredInfo.idNo,
name: this.saleInsuredInfo.name,
type: this.saleInsuredInfo.idType,
keyword: keyword,
status: status,
offset: offset,
originUrl: location.href
})
)
window.location.href = this.$mainUrl + '/sign/index.html'
},
// 下一步
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') {
let data = {
orderType: 'SIGN_ORDER',
orderDTO: {
orderInfoDTO: {
orderNo: window.localStorage.getItem('orderNo')
},
ebizSignDTOS: [
{
signOrRead: 'sms',
signId: that.appntSign.signId,
orderNo: window.localStorage.getItem('orderNo'),
documentCode: that.appntSign.documentCode,
documentStatus: '3',
signType: that.appntSign.signType,
documentType: that.appntSign.documentType,
baseEncryp: that.base64,
policyUrl: that.appntSign.policyUrl
}
]
}
}
saveInformation(data).then(res => {
if (res.result == '0') {
this.$toast.clear()
window.localStorage.setItem('detailJump', '')
window.sessionStorage.onewxSigned = false
// window.sessionStorage.oneimgBase64Data = ''
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/InsuranceTip'
},
routerInfo: {
path: '/sale/InsuranceTip'
}
})
} else {
that.$toast(res.resultMessage)
}
})
}
} else {
let that = this
this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
})
if (that.signVal == '0' || that.signVal == '2') {
let data = {
orderType: 'SIGN_ORDER',
orderDTO: {
orderInfoDTO: {
orderNo: window.localStorage.getItem('orderNo')
},
ebizSignDTOS: [
{
signOrRead: 'sms',
signId: that.appntSign.signId,
orderNo: window.localStorage.getItem('orderNo'),
documentCode: that.appntSign.documentCode,
documentStatus: '3',
signType: that.appntSign.signType,
documentType: that.appntSign.documentType,
baseEncryp: that.base64,
policyUrl: that.appntSign.policyUrl
}
]
}
}
saveInformation(data).then(res => {
if (res.result == '0') {
this.$toast.clear()
window.localStorage.setItem('detailJump', '')
window.sessionStorage.onewxSigned = false
// window.sessionStorage.oneimgBase64Data = ''
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/sale/InsuranceTip',
forbidSwipeBack: '1'
},
routerInfo: {
path: '/sale/InsuranceTip'
}
})
} else {
that.$toast(res.resultMessage)
}
})
let data = {
platformType: 'APP',
edorType: 'CT',
operateType: '03',
surrenderId: this.customerInfo.surrenderId,
edorApplyNo: this.customerInfo.edorApplyNo,
signMediaDTO: {
signId: this.pdfList[0].signId,
surrenderId: this.customerInfo.surrenderId,
documentStatus: '1'
}
}
changeEdor(data)
.then(res => {
console.log(res)
if (res.result == 0) {
let path = '/preserve/ct/surrenderConfirmation?entry=CT'
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#' + path
},
routerInfo: {
path: path
}
})
} else {
this.$toast(res.resultMessage)
}
})
.catch(err => {
console.log(err)
})
}
},
computed: {
listenChange() {
const { isOver, radio, appntSign } = this
return { isOver, radio, appntSign }
const { isOver, radio } = this
return { isOver, radio }
}
},
watch: {
listenChange(val) {
let that = this
if (!that.isWeixin) {
if (that.signVal == '0' || that.signVal == '2') {
if (val.isOver == true && val.radio != '' && val.appntSign.documentStatus !== '3') {
that.isDisable = false
} else {
that.isDisable = true
}
if (that.radio == '1' && val.appntSign.documentStatus == '3') {
that.isDisabledComplite = false
} else {
that.isDisabledComplite = true
}
}
if (val.appntSign.documentStatus == '3') {
that.isDisable = true
}
if (val.isOver == true && val.radio !== '') {
this.isDisable = false
} else {
if (that.signVal == '0' || that.signVal == '2') {
if (val.isOver == true && val.radio != '') {
that.isDisable = false
} else {
that.isDisable = true
}
if (that.radio == '1' && val.appntSign.documentStatus == '3') {
that.isDisabledComplite = false
} else {
that.isDisabledComplite = true
}
}
this.isDisable = true
}
}
},
beforeRouteLeave(to, from, next) {
document.body.style.backgroundColor = ''
next()
}
}
</script>
<style lang="scss" scoped>
img {
width: 100%;
height: 100%;
}
.notice {
width: 100%;
position: fixed;
@@ -524,6 +165,6 @@ img {
}
.iframe {
width: 100vw;
height: 70vh;
height: 75vh;
}
</style>

View File

@@ -1,4 +1,4 @@
import Common from '@/assets/js/common'
import Common from '@/assets/js/common'
import dataDic from '@/views/ebiz/preserve/js/data-dictionary'
/*
@@ -153,5 +153,13 @@ export default {
let str = ''
str = (moneyStr + '').replace(/\d{1,3}(?=(\d{3})+$)/g, '$&,')
return str
},
//手机号加密显示
mask(value) {
if (value) {
return value.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
} else {
return ''
}
}
}

View File

@@ -82,7 +82,7 @@ export default {
}
],
//退款账户列表
accountList: [{ type: '1', title: '原银行账户' }, { type: '2', title: '新银行账户' }],
accountList: [{ id: '1', text: '原银行账户' }, { id: '2', text: '新银行账户' }],
//退款原因列表
surrenderReasonList: [
{ id: '1', text: '个人经济原因,无力负担保费' },
@@ -123,39 +123,39 @@ export default {
edorBankType: [
{
id: 'ABC',
label: '农业银行'
text: '农业银行'
},
{
id: 'BOC',
label: '中国银行'
text: '中国银行'
},
{
id: 'BOCOM',
label: '交通银行'
text: '交通银行'
},
{
id: 'CCB',
label: '建设银行'
text: '建设银行'
},
{
id: 'CEB',
label: '光大银行'
text: '光大银行'
},
{
id: 'CIB',
label: '兴业银行'
text: '兴业银行'
},
{
id: 'ICBC',
label: '工商银行'
text: '工商银行'
},
{
id: 'PSBC',
label: '邮储银行'
text: '邮储银行'
},
{
id: 'CMB',
label: '招商银行'
text: '招商银行'
}
]
/*

View File

@@ -54,7 +54,7 @@
<p>需阅读</p>
<div class="mb10 mt10 flex align-items-c justify-content-fs">
<span class="red">{{ item.documentName }}</span>
<img :src="src" v-if="item.documentStatus == '0'" />
<img :src="src" v-if="item.documentStatus == '1'" />
</div>
</div>
<p class="start">点击开始按钮进行相关操作</p>

View File

@@ -68,12 +68,12 @@
<script>
import { Field, Collapse, CollapseItem, Cell, CellGroup, Dialog, Popup, List } from 'vant'
import BankCardScan from '@/components/ebiz/sale/BankCardScan'
import { pcPolicyInfo, renewalChange, changeEdor } from '@/api/ebiz/preserve/preserve'
import { pcPolicyInfo, changeEdor } from '@/api/ebiz/preserve/preserve'
import { getBankList } from '@/api/ebiz/sale/sale'
import DataDictionary from '../js/data-dictionary'
import filters from '@/views/ebiz/preserve/filters'
export default {
name: 'renewalInfo',
name: 'RenewalInfo',
components: {
[Field.name]: Field,
[Collapse.name]: Collapse,
@@ -82,6 +82,7 @@ export default {
[CellGroup.name]: CellGroup,
[List.name]: List,
[Popup.name]: Popup,
[Dialog.name]: Dialog,
BankCardScan
},
data() {
@@ -99,15 +100,7 @@ export default {
}
},
filters: {
idToText: function idToTextEdor(id, type) {
let text = ''
DataDictionary[type].some(item => {
if (item.id == id) {
text = item.label
}
})
return text
}
idToText: filters.idToText
},
created() {
this.getPolicyList({