mirror of
http://112.124.100.131/GFRS/ebiz-h5.git
synced 2025-12-24 10:13:05 +08:00
Merge branch 'feature/【保全】' into dev
# Conflicts: # src/api/ebiz/sale/sale.js # src/assets/js/utils/request.js # src/config/urlMap.js # src/router/ebiz/index.js # src/store/index.js # src/views/app/Home.vue
This commit is contained in:
@@ -1,52 +1,68 @@
|
||||
import request from '@/assets/js/utils/request'
|
||||
import getUrl from '@/assets/js/utils/get-url'
|
||||
|
||||
export function edorChange(data) {
|
||||
return request({
|
||||
url: getUrl('/edor/item/change', 0),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//搜索客户
|
||||
export function customerList(data) {
|
||||
return request({
|
||||
url: getUrl('/edor/customer/customerList', 0),
|
||||
url: getUrl('/edor/customer/customerList', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function edorSignSave(data) {
|
||||
return request({
|
||||
url: getUrl('/edor/sign/save', 0),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//客户详情
|
||||
export function customerInfo(data) {
|
||||
return request({
|
||||
url: getUrl('/edor/customer/customerInfo', 0),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//客户详情
|
||||
// export function customerInfo(data) {
|
||||
// return request({
|
||||
// url: getUrl('/edor/customer/customerInfo', 0),
|
||||
// method: 'post',
|
||||
// data
|
||||
// })
|
||||
// }
|
||||
|
||||
//保单列表
|
||||
export function policyList(data) {
|
||||
return request({
|
||||
url: getUrl('/edor/customer/policyList', 0),
|
||||
url: getUrl('/edor/policy/policyList', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//保全初始页信息查询(除续期账号变更外)
|
||||
export function policyInfo(data) {
|
||||
return request({
|
||||
url: getUrl('/edor/policy/policyInfo', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//保全初始页信息查询-续期账号变更
|
||||
export function pcPolicyInfo(data) {
|
||||
return request({
|
||||
url: getUrl('/edor/policy/pcPolicyInfo', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//变更提交/保全确认
|
||||
export function changeEdor(data) {
|
||||
return request({
|
||||
url: getUrl('/edor/edor/changeEdor', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//保全进度查询列表
|
||||
export function queryEdorList(data) {
|
||||
return request({
|
||||
url: getUrl('/edor/edor/queryEdorList', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//保全试算
|
||||
export function trial(data) {
|
||||
return request({
|
||||
url: getUrl('/edor/edor/trial', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//保全详情查询
|
||||
export function queryConfirmDetail(data) {
|
||||
return request({
|
||||
url: getUrl('/edor/edor/queryConfirmDetail', 1),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
|
||||
@@ -76,7 +76,15 @@ let cardList = []
|
||||
let renewalManage = [
|
||||
'/renewal/getRenewalList' //续期列表查询
|
||||
]
|
||||
let whiteList = ['/customer/agent/getCustomersList', ...proposal, ...sale, ...agentEnter, ...claims, ...survey, ...manpower, ...renewalManage]
|
||||
|
||||
//保全
|
||||
let preserve = [
|
||||
'/edor/customer/customerList', //客户搜索
|
||||
'/edor/policy/policyList', //保单列表
|
||||
'/edor/edor/queryEdorList' //保全进度查询
|
||||
]
|
||||
|
||||
let whiteList = ['/customer/agent/getCustomersList', ...proposal, ...sale, ...agentEnter, ...claims, ...survey, ...manpower, ...renewalManage, ...preserve]
|
||||
|
||||
// let whiteList = ['/customer/agent/getCustomersList', ...proposal, ...sale]
|
||||
|
||||
|
||||
@@ -79,28 +79,3 @@
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.dialog-alert {
|
||||
// width: 255px;
|
||||
|
||||
.van-dialog__header {
|
||||
padding-top: 20px;
|
||||
margin-bottom: 8px;
|
||||
color: #E9332E;
|
||||
}
|
||||
|
||||
.van-dialog__message {
|
||||
font-size: 14px;
|
||||
color: #333;
|
||||
padding-bottom: 30px;
|
||||
}
|
||||
|
||||
.van-dialog__confirm {
|
||||
background: #E9332E;
|
||||
}
|
||||
|
||||
.van-hairline--top::after {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
// 保全
|
||||
let mockBaseUrl = 'http://rap2.taobao.org:38080/app/mock/250585/'
|
||||
|
||||
export default {
|
||||
'/edor/customer/customerList': mockBaseUrl + '/edor/customer/customerList', //客户搜索
|
||||
'/edor/customer/policyList': mockBaseUrl + '/edor/customer/policyList',
|
||||
'/edor/customer/customerInfo': mockBaseUrl + '/edor/customer/customerInfo',
|
||||
'/edor/customer/customerList': mockBaseUrl + '/edor/customer/customerList',
|
||||
'/edor/item/change': mockBaseUrl + '/edor/item/change',
|
||||
'/edor/sign/save': mockBaseUrl + '/edor/sign/save',
|
||||
'/edor/query/queryDetails': mockBaseUrl + '/edor/query/queryDetails'
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ export default [
|
||||
...serve,
|
||||
...common,
|
||||
...product,
|
||||
...cardList,
|
||||
...agentEenter,
|
||||
...milestone,
|
||||
...poster,
|
||||
@@ -37,5 +38,6 @@ export default [
|
||||
...cardList,
|
||||
...renewalManage,
|
||||
...preserve,
|
||||
...exercising
|
||||
...exercising,
|
||||
...manpower
|
||||
] //根据需要进行删减
|
||||
|
||||
@@ -1,43 +1,56 @@
|
||||
//保全 定义相关组件
|
||||
const search = () => import('@/views/ebiz/preserve/Search')
|
||||
const imageUpload = () => import('@/views/ebiz/preserve/ImageUpload')
|
||||
const handleResult = () => import('@/views/ebiz/preserve/HandleResult')
|
||||
const submitResult = () => import('@/views/ebiz/preserve/SubmitResult')
|
||||
const policyList = () => import('@/views/ebiz/preserve/PolicyList')
|
||||
const renewalInfo = () => import('@/views/ebiz/preserve/RenewalInfo')
|
||||
const renewalConfirmation = () => import('@/views/ebiz/preserve/RenewalConfirmation')
|
||||
const contactInfo = () => import('@/views/ebiz/preserve/ContactInfo')
|
||||
const contacAgreement = () => import('@/views/ebiz/preserve/ContacAgreement')
|
||||
const contactConfirmation = () => import('@/views/ebiz/preserve/ContactConfirmation')
|
||||
const beneficiaryInfo = () => import('@/views/ebiz/preserve/BeneficiaryInfo')
|
||||
const beneficiaryInfoAdd = () => import('@/views/ebiz/preserve/BeneficiaryInfoAdd')
|
||||
const beneficiaryInfoDetail = () => import('@/views/ebiz/preserve/BeneficiaryInfoDetail')
|
||||
const beneficiaryConfirmation = () => import('@/views/ebiz/preserve/BeneficiaryConfirmation')
|
||||
const surrenderInfo = () => import('@/views/ebiz/preserve/SurrenderInfo')
|
||||
const surrenderConfirmation = () => import('@/views/ebiz/preserve/SurrenderConfirmation')
|
||||
const autopayAuthorization = () => import('@/views/ebiz/preserve/AutopayAuthorization')
|
||||
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 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 CtImageUpload = () => import('@/views/ebiz/preserve/ct/ImageUpload')
|
||||
|
||||
const Progress = () => import('@/views/ebiz/preserve/Progress')
|
||||
const Contact = () => import('@/views/ebiz/preserve/detail/Contact')
|
||||
const Beneficiary = () => import('@/views/ebiz/preserve/detail/Beneficiary')
|
||||
const BeneficiaryInfoD = () => import('@/views/ebiz/preserve/detail/BeneficiaryInfo')
|
||||
const Renewal = () => import('@/views/ebiz/preserve/detail/Renewal')
|
||||
const CoolingOffperiodSurrender = () => import('@/views/ebiz/preserve/detail/CoolingOffperiodSurrender')
|
||||
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
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/policyList',
|
||||
name: 'policyList',
|
||||
component: policyList,
|
||||
path: '/preserve/common/policyList',
|
||||
name: 'PolicyList',
|
||||
component: PolicyList,
|
||||
meta: {
|
||||
title: '选择保单',
|
||||
index: 2
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/contactInfo',
|
||||
path: '/preserve/bb/contactInfo',
|
||||
name: 'contactInfo',
|
||||
component: contactInfo,
|
||||
meta: {
|
||||
@@ -46,7 +59,7 @@ export default [
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/contacAgreement',
|
||||
path: '/preserve/bb/contacAgreement',
|
||||
name: 'contacAgreement',
|
||||
component: contacAgreement,
|
||||
meta: {
|
||||
@@ -55,25 +68,34 @@ export default [
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/renewalInfo',
|
||||
name: 'renewalInfo',
|
||||
component: renewalInfo,
|
||||
path: '/preserve/pc/renewalInfo',
|
||||
name: 'RenewalInfo',
|
||||
component: RenewalInfo,
|
||||
meta: {
|
||||
title: '续期账号变更',
|
||||
index: 4
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/beneficiaryInfo',
|
||||
name: 'beneficiaryInfo',
|
||||
component: beneficiaryInfo,
|
||||
path: '/preserve/pc/imageUpload',
|
||||
name: 'pcImageUpload',
|
||||
component: pcImageUpload,
|
||||
meta: {
|
||||
title: '续期账号图片上传',
|
||||
index: 41
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/bc/beneficiaryInfo',
|
||||
name: 'BeneficiaryInfo',
|
||||
component: BeneficiaryInfo,
|
||||
meta: {
|
||||
title: '受益人变更',
|
||||
index: 5
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/beneficiaryInfoAdd',
|
||||
path: '/preserve/bc/beneficiaryInfoAdd',
|
||||
name: 'beneficiaryInfoAdd',
|
||||
component: beneficiaryInfoAdd,
|
||||
meta: {
|
||||
@@ -82,7 +104,7 @@ export default [
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/beneficiaryInfoDetail',
|
||||
path: '/preserve/bc/beneficiaryInfoDetail',
|
||||
name: 'beneficiaryInfoDetail',
|
||||
component: beneficiaryInfoDetail,
|
||||
meta: {
|
||||
@@ -91,34 +113,43 @@ export default [
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/surrenderInfo',
|
||||
name: 'surrenderInfo',
|
||||
component: surrenderInfo,
|
||||
path: '/preserve/ct/surrenderInfo',
|
||||
name: 'SurrenderInfo',
|
||||
component: SurrenderInfo,
|
||||
meta: {
|
||||
title: '退保',
|
||||
index: 6
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/imageUpload',
|
||||
name: 'imageUpload',
|
||||
component: imageUpload,
|
||||
path: '/preserve/bc/imageUpload',
|
||||
name: 'bcImageUpload',
|
||||
component: bcImageUpload,
|
||||
meta: {
|
||||
title: '影像上传',
|
||||
title: '上传影像资料',
|
||||
index: 7
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/handleResult',
|
||||
name: 'handleResult',
|
||||
component: handleResult,
|
||||
path: '/preserve/ct/imageUpload',
|
||||
name: 'CtImageUpload',
|
||||
component: CtImageUpload,
|
||||
meta: {
|
||||
title: '上传影像资料',
|
||||
index: 7
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/common/handleResult',
|
||||
name: 'HandleResult',
|
||||
component: HandleResult,
|
||||
meta: {
|
||||
title: '操作结果',
|
||||
index: 8
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/beneficiaryConfirmation',
|
||||
path: '/preserve/bc/beneficiaryConfirmation',
|
||||
name: 'beneficiaryConfirmation',
|
||||
component: beneficiaryConfirmation,
|
||||
meta: {
|
||||
@@ -127,7 +158,7 @@ export default [
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/renewalConfirmation',
|
||||
path: '/preserve/pc/renewalConfirmation',
|
||||
name: 'renewalConfirmation',
|
||||
component: renewalConfirmation,
|
||||
meta: {
|
||||
@@ -136,7 +167,7 @@ export default [
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/contactConfirmation',
|
||||
path: '/preserve/bb/contactConfirmation',
|
||||
name: 'contactConfirmation',
|
||||
component: contactConfirmation,
|
||||
meta: {
|
||||
@@ -145,16 +176,16 @@ export default [
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/surrenderConfirmation',
|
||||
name: 'surrenderConfirmation',
|
||||
component: surrenderConfirmation,
|
||||
path: '/preserve/ct/surrenderConfirmation',
|
||||
name: 'SurrenderConfirmation',
|
||||
component: SurrenderConfirmation,
|
||||
meta: {
|
||||
title: '保全代办确认',
|
||||
index: 12
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/autopayAuthorization',
|
||||
path: '/preserve/pc/autopayAuthorization',
|
||||
name: 'autopayAuthorization',
|
||||
component: autopayAuthorization,
|
||||
meta: {
|
||||
@@ -163,12 +194,84 @@ export default [
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/submitResult',
|
||||
name: 'submitResult',
|
||||
component: submitResult,
|
||||
path: '/preserve/ct/surrenderTip',
|
||||
name: 'SurrenderTip',
|
||||
component: SurrenderTip,
|
||||
meta: {
|
||||
title: '退保协议',
|
||||
index: 12
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/common/submitResult',
|
||||
name: 'SubmitResult',
|
||||
component: SubmitResult,
|
||||
meta: {
|
||||
title: '提交结果',
|
||||
index: 13
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/Progress',
|
||||
name: 'Progress',
|
||||
component: Progress,
|
||||
meta: {
|
||||
title: '保全进度查询',
|
||||
index: 14
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/detail/Contact/:surrenderId',
|
||||
name: 'Contact',
|
||||
component: Contact,
|
||||
meta: {
|
||||
title: '联系方式变更',
|
||||
index: 15
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/detail/Beneficiary/:surrenderId',
|
||||
name: 'Beneficiary',
|
||||
component: Beneficiary,
|
||||
meta: {
|
||||
title: '受益人',
|
||||
index: 16
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/detail/BeneficiaryInfo/:surrenderId',
|
||||
name: 'BeneficiaryInfoD',
|
||||
component: BeneficiaryInfoD,
|
||||
meta: {
|
||||
title: '指定受益人信息',
|
||||
index: 17
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/detail/CoolingOffperiodSurrender/:surrenderId',
|
||||
name: 'CoolingOffperiodSurrender',
|
||||
component: CoolingOffperiodSurrender,
|
||||
meta: {
|
||||
title: '犹豫期退保',
|
||||
index: 18
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/detail/Surrender/:surrenderId',
|
||||
name: 'Surrender',
|
||||
component: Surrender,
|
||||
meta: {
|
||||
title: '退保',
|
||||
index: 19
|
||||
}
|
||||
},
|
||||
{
|
||||
path: '/preserve/detail/Renewal/:surrenderId',
|
||||
name: 'Renewal',
|
||||
component: Renewal,
|
||||
meta: {
|
||||
title: '续期账号变更',
|
||||
index: 20
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -14,7 +14,9 @@ export default new Vuex.Store({
|
||||
agentEnterApplyMobil: '', //自助入司-新的被增员人填好的基础信息里的电话号码
|
||||
agentEnterApplyIdNo: '', //自助入司-新的被增员人填好的基础信息里的证件号码
|
||||
refusalCause: '', //自助入司-查看审批流程-审批拒绝的原因
|
||||
renewalMsgParam: {} //续期管理-发送短信,请求参数
|
||||
renewalMsgParam: {}, //续期管理-发送短信,请求参数
|
||||
surrenderId: '', //保全-保全主表id
|
||||
eodrApplyNo: '' //保全-保全受理号
|
||||
},
|
||||
mutations: {
|
||||
//更新 理赔申请-区分被保险人/申请人页面flag
|
||||
@@ -33,6 +35,14 @@ export default new Vuex.Store({
|
||||
//更新 续期管理-发送短信,请求参数
|
||||
updateRenewalMsgParam(state, val) {
|
||||
state.renewalMsgParam = val
|
||||
},
|
||||
//更新 保全-保全主表id
|
||||
updatePreserveSurrendId(state, val) {
|
||||
state.surrenderId = val
|
||||
},
|
||||
//更新 保全-保全受理号
|
||||
updatePreserveEodrApplyNo(state, val) {
|
||||
state.eodrApplyNo = val
|
||||
}
|
||||
},
|
||||
getters: {
|
||||
@@ -47,6 +57,12 @@ export default new Vuex.Store({
|
||||
},
|
||||
getRenewalMsgParam(state) {
|
||||
return state.renewalMsgParam
|
||||
},
|
||||
getPreserveSurrendId(state) {
|
||||
return state.surrenderId
|
||||
},
|
||||
getPreserveEodrApplyNo(state) {
|
||||
return state.eodrApplyNo
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -30,6 +30,13 @@
|
||||
<li><router-link to="/agentEenter/approve/ApproveList">入司审批列表</router-link></li>
|
||||
<li><router-link to="/survey/surveyList">问卷调查</router-link></li>
|
||||
<li><router-link to="/renewalManage/list">续期管理列表</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/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>
|
||||
@@ -67,7 +74,6 @@
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<van-tabbar v-model="active">
|
||||
<van-tabbar-item icon="home-o">首页</van-tabbar-item>
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
<!--自动转账授权书-续期账号变更-->
|
||||
<template>
|
||||
<div class="auto-pay"></div>
|
||||
</template>
|
||||
@@ -1 +0,0 @@
|
||||
<!--影像信息上传页面-->
|
||||
135
src/views/ebiz/preserve/Progress.vue
Normal file
135
src/views/ebiz/preserve/Progress.vue
Normal file
@@ -0,0 +1,135 @@
|
||||
<!-- 保全进度查询 -->
|
||||
<template>
|
||||
<div class="progress-container">
|
||||
<!-- <van-list
|
||||
v-model="loading"
|
||||
:immediate-check="false"
|
||||
:finished="finished"
|
||||
:finished-text="finishedText"
|
||||
error-text="请求失败,点击重新加载"
|
||||
:error.sync="error"
|
||||
@load="getList"
|
||||
class="pb45"
|
||||
> -->
|
||||
<div v-if="isSuccess">
|
||||
<div class="fs12" v-for="(item, index) in list" :key="index">
|
||||
<div class="flex align-items-c justify-content-c h40 gray">
|
||||
<div>{{ item.edorAppDate | date }}</div>
|
||||
</div>
|
||||
<div class="bg-white pv15 pr15 pl10 ml15 mr15">
|
||||
<div class="flex justify-content-s align-items-c">
|
||||
<div>
|
||||
<div class="w80 inline-b"><van-tag plain color="#DD9C56">客户</van-tag></div>
|
||||
<span class="fs14 c-gray-dark">{{ item.appntName }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex justify-content-s align-items-c pt15 pb15">
|
||||
<div>
|
||||
<div class="w80 inline-b"><van-tag plain color="#5ca7de">状态</van-tag></div>
|
||||
<span class="fs14 c-gray-dark">{{ item.edorState | idToText('preserveState') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pt15" style="border-top:1px solid #dadada">
|
||||
<div>
|
||||
<div class="w80 inline-b"><van-tag plain color="#999">保全项</van-tag></div>
|
||||
<span class="fs14 c-gray-dark">{{ item.edorType }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="mt10 flex justify-content-fe">
|
||||
<van-button round @click="detail(item)" size="small" class="mr5" type="danger" plain v-no-more-click="2000">查看详情</van-button>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="text-center">
|
||||
<img class="mt40 w250" src="@/assets/images/pic_page-non.png" />
|
||||
<div class="fs17 c-gray-dark mt40">暂无数据</div>
|
||||
</div>
|
||||
<!-- </van-list> -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Divider, Tag, Row, Col, Checkbox, CheckboxGroup, List } from 'vant'
|
||||
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',
|
||||
data() {
|
||||
return {
|
||||
list: [], //保全进度列表
|
||||
isSuccess: false,
|
||||
dataDic: dataDic
|
||||
}
|
||||
},
|
||||
filters: {
|
||||
// 数据字典 id 转 text
|
||||
idToText: function(id, type) {
|
||||
let text = ''
|
||||
dataDic[type].some(item => {
|
||||
if (item.id == id) {
|
||||
text = item.text
|
||||
}
|
||||
})
|
||||
return text
|
||||
},
|
||||
|
||||
date: function(value) {
|
||||
let date = new Date(value)
|
||||
if (date.toString() != 'Invalid Date') {
|
||||
return dateUtils.formatDate(date)
|
||||
} else {
|
||||
return '时间格式错误'
|
||||
}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
[Divider.name]: Divider,
|
||||
[Tag.name]: Tag,
|
||||
[Row.name]: Row,
|
||||
[Col.name]: Col,
|
||||
[Checkbox.name]: Checkbox,
|
||||
[List.name]: List,
|
||||
[CheckboxGroup.name]: CheckboxGroup
|
||||
},
|
||||
created() {
|
||||
//获取保全进度列表
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
// 查看详情
|
||||
detail(item) {
|
||||
let { surrenderType, surrenderId } = item
|
||||
surrenderType = dataDic.route[surrenderType]
|
||||
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + `/#/preserve/detail/${surrenderType}/${surrenderId}`
|
||||
},
|
||||
routerInfo: {
|
||||
path: `/preserve/detail/${surrenderType}/${surrenderId}`
|
||||
}
|
||||
})
|
||||
},
|
||||
getList() {
|
||||
queryEdorList({}).then(res => {
|
||||
this.$toast.clear()
|
||||
if (res.result == 0) {
|
||||
console.log(res)
|
||||
this.isSuccess = true
|
||||
this.list = res.content.content.edorResDTOList
|
||||
} else {
|
||||
this.finished = true
|
||||
this.loading = false
|
||||
this.finishedText = ''
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
96
src/views/ebiz/preserve/README.md
Normal file
96
src/views/ebiz/preserve/README.md
Normal file
@@ -0,0 +1,96 @@
|
||||
# ebiz-h5-preserve
|
||||
|
||||
## 介绍
|
||||
|
||||
## 保全项枚举(各个保全项文件夹也以此枚举命名)
|
||||
|
||||
detail (保全进度查询,前端文件夹名称)
|
||||
AA("AA","增加保险金额","AA","G"),
|
||||
AC("AC","投保人资料变更","AC","U"),
|
||||
AM("AM","投保人变更","AM","U"),
|
||||
AP("AP","宽末处理方式变更","AP","U"),
|
||||
AR("AR","保单账户部分领取","AR","P"),
|
||||
AT("AT","年金险解除合同","AT","P"),
|
||||
AX("AX","年金险协议减人","AX","U"),
|
||||
AZ("AZ","年金险减人","AZ","U"),
|
||||
BB("BB","客户基本资料变更","BB","U"),
|
||||
BC("BC","受益人变更","BC","U"),
|
||||
BE("BE","被保险人复效","BE","Q"),
|
||||
BI("BI","银行信息变更","BI","U"),
|
||||
BM("BM","红利领取方式变更","BM","U"),
|
||||
BR("BR","保险期间恢复","BR","U"),
|
||||
BS("BS","保险期间中断","BS","U"),
|
||||
BZ("BZ","建工险保单中止","BZ","U"),
|
||||
CA("CA","帐户金额转移","CA","P"),
|
||||
CB("CB","退保回退","CB","G"),
|
||||
CC("CC","建工险工程面积造价变更","CC","U"),
|
||||
CD("CD","客户地址信息变更","CD","U"),
|
||||
CM("CM","客户重要资料变更","CM","U"),
|
||||
CS("CS","签名变更","CS","U"),
|
||||
CT("CT","退保","CT","P"),
|
||||
DA("DA","增加附加特约责任","DA","U"),
|
||||
DB("DB","红利领取","DB","P"),
|
||||
DT("DT","附加特约责任终止","DT","U"),
|
||||
EB("EB","差错回退","EB","U"),
|
||||
EF("EF","终止附加险","EF","P"),
|
||||
EI("EI","延长保险期间","EI","G"),
|
||||
EN("EN","续保方式变更","EN","U"),
|
||||
ER("ER","满期降低保额续保","ER","G"),
|
||||
ES("ES","终止险种","ES","P"),
|
||||
FM("FM","交费期间变更","FM","U"),
|
||||
GA("GA","年金转换","GA","U"),
|
||||
GB("GB","领取年龄变更","GB","U"),
|
||||
GC("GC","生存给付转账授权","GC","U"),
|
||||
GM("GM","领取方式变更","GM","U"),
|
||||
HI("HI","补充告知","HI","U"),
|
||||
HJ("HJ","万能缓缴期","HJ","U"),
|
||||
IC("IC","客户重要资料变更(保单层","IC","U"),
|
||||
IG("IG","投连险提前通知领取","IG","P"),
|
||||
IO("IO","职业变更","IO","U"),
|
||||
IP("IP","追加保费","IP","G"),
|
||||
IR("IR","更换被保险人","IR","U"),
|
||||
IT("IT","投连险退保","IT","P"),
|
||||
JB("JB","减保选择权","JB","U"),
|
||||
LG("LG","生存给付柜面领取","LG","P"),
|
||||
LN("LN","保单质押贷款","LN","P"),
|
||||
LR("LR","保单遗失补发","LR","G"),
|
||||
MF("MF","长险费用变更","MF","U"),
|
||||
MR("MR","主险续保","MR","G"),
|
||||
NC("NC","新增保险方案","NC","G"),
|
||||
NI("NI","新增被保险人","NI","G"),
|
||||
NP("NP","保单新增险种","NP","G"),
|
||||
NR("NR","被保人增加险种","NR","G"),
|
||||
NS("NS","新增附加险","NS","G"),
|
||||
OP("OP","万能险部分领取","OP","G"),
|
||||
PA("PA","投资计划变更","PA","U"),
|
||||
PC("PC","续期交费信息变更","PC","U"),
|
||||
PF("PF","保单冻结及解冻","PF","U"),
|
||||
PG("PG","投连险随时领取","PG","G"),
|
||||
PL("PL","保单挂失、解挂","PL","U"),
|
||||
PM("PM","缴费频率变更","PM","U"),
|
||||
PR("PR","保单迁移","PR","U"),
|
||||
PT("PT","减少保险金额","PT","P"),
|
||||
PU("PU","减额缴清","PU","G"),
|
||||
RB("RB","保全回退","RB","G"),
|
||||
RC("RC","交费提醒方式变更","RC","U"),
|
||||
RD("RD","部分领取","RD","P"),
|
||||
RE("RE","保单复效","RE","Q"),
|
||||
RF("RF","贷款清偿","RF","G"),
|
||||
RG("RG","满期领取","RG","P"),
|
||||
RN("RN","不定期缴费","RN","P"),
|
||||
RR("RR","无名单实名化","RR","U"),
|
||||
SA("SA","建工险保单延期","SA","U"),
|
||||
SC("SC","特约变更","SC","U"),
|
||||
SF("SF","公共保额收付费","SF","G"),
|
||||
SM("SM","服务类维护","SM","U"),
|
||||
TA("TA","转养老金","TA","U"),
|
||||
TI("TI","投连账户转换","TI","U"),
|
||||
TR("TR","保费自垫清偿","TR","G"),
|
||||
TS("TS","投连复缴","TS","G"),
|
||||
VC("VC","保单归属规则维护","VC","U"),
|
||||
VR("VR","被保险人归属规则变更","VR","U"),
|
||||
WP("WP","万能追加保费","WP","G"),
|
||||
WT("WT","犹豫期退保","WT","P"),
|
||||
XS("XS","协议减保","XS","U"),
|
||||
XT("XT","协议退保","XT","P"),
|
||||
ZT("ZT","减少被保险人","ZT","P");
|
||||
@@ -1 +0,0 @@
|
||||
<!--续期账号变更-保全代办确认页-->
|
||||
@@ -1 +0,0 @@
|
||||
<!--续期账号变更页面-->
|
||||
@@ -1,37 +0,0 @@
|
||||
<!--提交结果页面-->
|
||||
<template>
|
||||
<div class="submit-result-container">
|
||||
<div class="payResult-header flex justify-content-c align-items-c p20 pt80">
|
||||
<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>
|
||||
|
||||
<div class="bg-white bottom-btn"><van-button type="danger" size="large" @click="nextStep" v-no-more-click="1000">返回</van-button></div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'submitResult',
|
||||
data() {
|
||||
return {
|
||||
srcSuccess: this.$assetsUrl + 'images/success.png'
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
// localStorage.removeItem('customerSign')
|
||||
document.body.style.backgroundColor = '#fff'
|
||||
},
|
||||
methods: {
|
||||
nextStep() {
|
||||
// service
|
||||
this.$jump({
|
||||
flag: 'service'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
@@ -1 +0,0 @@
|
||||
<!--退保-保全代办确认页-->
|
||||
@@ -1 +0,0 @@
|
||||
<!--退保页-->
|
||||
@@ -6,7 +6,7 @@
|
||||
<van-radio-group v-model="radio" class="pb10 pt20 pl30 pr30 fs14">
|
||||
<van-radio name="1" @click="click">
|
||||
本人确认已阅读
|
||||
<span>《国富人寿人身保险联系方式变更协议》</span>
|
||||
<span class="red">《国富人寿人身保险联系方式变更协议》</span>
|
||||
</van-radio>
|
||||
</van-radio-group>
|
||||
<div class="bg-white bottom-btn">
|
||||
@@ -33,7 +33,7 @@
|
||||
<div slot="input" :class="{ red: changeInfo.address }">{{ customerInfo.address }}</div>
|
||||
</van-field>
|
||||
<van-field label="邮编" required readonly>
|
||||
<div slot="input" :class="{ red: changeInfo.zipCode }">{{ customerInfo.zipCode }}</div>
|
||||
<div slot="input" :class="{ red: changeInfo.homeZip }">{{ customerInfo.homeZip }}</div>
|
||||
</van-field>
|
||||
<van-field label="电子邮箱" name="电子邮箱" readonly>
|
||||
<div slot="input" :class="{ red: changeInfo.customerEmail }">{{ customerInfo.customerEmail }}</div>
|
||||
@@ -82,6 +82,7 @@
|
||||
import { Field, CellGroup, Checkbox, Popup, Picker, Area, RadioGroup, Radio, Dialog } from 'vant'
|
||||
import getAreaName from '@/assets/js/utils/get-area-name'
|
||||
import { getAuthCode, autchCodeCheck } from '@/api/ebiz/sale/sale'
|
||||
import { queryDetails } from '@/api/ebiz/preserve/preserve'
|
||||
|
||||
export default {
|
||||
name: 'basicConfirmation',
|
||||
@@ -121,32 +122,72 @@ export default {
|
||||
signInvalid: '',
|
||||
customerMobile: '',
|
||||
submitForbidden: false,
|
||||
read: false
|
||||
read: false,
|
||||
province: '',
|
||||
city: '',
|
||||
area: ''
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.read = this.$route.query.read
|
||||
await this.queryDetails()
|
||||
await this.init()
|
||||
},
|
||||
methods: {
|
||||
// 初始化数据
|
||||
init() {
|
||||
// 初始化内容
|
||||
this.customerInfo = JSON.parse(localStorage['preserve-customerInfo'])
|
||||
this.customerInfoOld = JSON.parse(localStorage['preserve-customerInfo-old'])
|
||||
// 判断 内容是否变化
|
||||
let keys = Object.keys(this.customerInfo)
|
||||
for (let item of keys) {
|
||||
this.changeInfo[item] = this.customerInfo[item] != this.customerInfoOld[item]
|
||||
}
|
||||
//地址特殊处理
|
||||
if (this.customerInfo.province && this.customerInfo.city && this.customerInfo.area) {
|
||||
let tempHomeAdress = getAreaName([{ code: this.customerInfo.province }, { code: this.customerInfo.city }, { code: this.customerInfo.area }]).split('-')
|
||||
this.province = tempHomeAdress[0]
|
||||
this.city = tempHomeAdress[1]
|
||||
this.area = tempHomeAdress[2]
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
// 初始化内容
|
||||
// this.customerInfo = JSON.parse(localStorage['preserve-customerInfo'])
|
||||
// this.customerInfoOld = JSON.parse(localStorage['preserve-customerInfo-old'])
|
||||
// 判断 内容是否变化
|
||||
let keys = Object.keys(this.customerInfo)
|
||||
for (let item of keys) {
|
||||
this.changeInfo[item] = this.customerInfo[item] != this.customerInfoOld[item]
|
||||
}
|
||||
//地址特殊处理
|
||||
if (this.customerInfo.province && this.customerInfo.city && this.customerInfo.area) {
|
||||
let tempHomeAdress = getAreaName([{ code: this.customerInfo.province }, { code: this.customerInfo.city }, { code: this.customerInfo.area }]).split(
|
||||
'-'
|
||||
)
|
||||
this.province = tempHomeAdress[0]
|
||||
this.city = tempHomeAdress[1]
|
||||
this.area = tempHomeAdress[2]
|
||||
}
|
||||
resolve()
|
||||
})
|
||||
},
|
||||
|
||||
//保全详情查询
|
||||
queryDetails() {
|
||||
return new Promise((resolve, reject) => {
|
||||
let { surrenderId, eodrApplyNo } = this.getInfo()
|
||||
queryDetails({ surrenderId, eodrApplyNo }).then(res => {
|
||||
if (res.result == 0) {
|
||||
let resData = res.content.content
|
||||
console.log('11', resData)
|
||||
resData.map(v => {
|
||||
//isNewInfo-是否变更后信息 0-是 1-否
|
||||
if (v.isNewInfo == '0') {
|
||||
this.customerInfo = v
|
||||
} else {
|
||||
this.customerInfoOld = v
|
||||
}
|
||||
})
|
||||
resolve()
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
reject()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
//获取保全主表id及保全受理号
|
||||
getInfo() {
|
||||
return { surrenderId: this.$store.getters.getPreserveSurrendId, eodrApplyNo: this.$store.getters.getPreserveEodrApplyNo }
|
||||
},
|
||||
|
||||
// 显示验证码 van-dialog
|
||||
showAuth() {
|
||||
this.show = true
|
||||
@@ -90,7 +90,7 @@ export default {
|
||||
homePhone: '',
|
||||
isNewInfo: ''
|
||||
}
|
||||
feachData.surrenderDTOList[0].customerInfoDTOList.push(customerInfo)
|
||||
// feachData.surrenderDTOList[0].customerInfoDTOList.push(customerInfo)
|
||||
return {
|
||||
homeName: '',
|
||||
homeShow: false,
|
||||
@@ -130,11 +130,14 @@ export default {
|
||||
//表单校验
|
||||
this.$validator.validate().then(valid => {
|
||||
if (true == valid) {
|
||||
this.feachData.surrenderDTOList[0].customerInfoDTOList.push(this.customerInfo)
|
||||
edorChange(this.feachData)
|
||||
.then(res => {
|
||||
if (res.result == 0) {
|
||||
localStorage['preserve-customerInfo-old'] = localStorage['preserve-customerInfo']
|
||||
localStorage['preserve-customerInfo'] = JSON.stringify(this.customerInfo)
|
||||
this.$store.commit('updatePreserveSurrendId', res.content.surrenderId)
|
||||
this.$store.commit('updatePreserveEodrApplyNo', res.content.eodrApplyNo)
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
@@ -18,8 +18,8 @@
|
||||
<!-- 受益人列表 -->
|
||||
<div class="fs14 beneficiary-list" v-if="type == 2">
|
||||
<ul>
|
||||
<li class="pv20 ph15 item" v-for="(item, index) in beneficiaries" :key="index">
|
||||
<div class="bg-white p15">
|
||||
<li class="ph15 item" v-for="(item, index) in beneficiaries" :key="index">
|
||||
<div class="bg-white p15" v-if="item.name">
|
||||
<div class="flex justify-content-s c-gray-darker">
|
||||
<div>
|
||||
<img src="@/assets/images/bnf_avatar.png" width="40" height="40" class="radius50 v-middle" />
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
<script>
|
||||
import { RadioGroup, Radio, Icon, Dialog } from 'vant'
|
||||
import { edorChange } from '@/api/ebiz/preserve/preserve'
|
||||
import { changeEdor, policyInfo } from '@/api/ebiz/preserve/preserve'
|
||||
|
||||
export default {
|
||||
name: 'BeneficiaryInfo',
|
||||
@@ -60,58 +60,108 @@ export default {
|
||||
[Dialog.name]: Dialog
|
||||
},
|
||||
data() {
|
||||
let feachData = {
|
||||
surrenderDTOList: [
|
||||
{
|
||||
surrenderId: '',
|
||||
edorapplyNo: '',
|
||||
surrenderType: '2',
|
||||
bnfDTOs: []
|
||||
}
|
||||
]
|
||||
}
|
||||
return {
|
||||
feachData: feachData,
|
||||
type: '',
|
||||
isDisType: false,
|
||||
policy: null,
|
||||
customerInfo: {}, //客户详情
|
||||
insuredName: '', //被保险人
|
||||
beneficiaries: [] // 指定受益人列表
|
||||
}
|
||||
},
|
||||
created() {
|
||||
async created() {
|
||||
// 获取保单列表存储的数据
|
||||
this.customerInfo = JSON.parse(localStorage['preserve-customerInfo']) //客户详情
|
||||
this.policy = JSON.parse(localStorage['preserve-policy'])
|
||||
console.log(this.policy)
|
||||
if (localStorage.fromAddBC) {
|
||||
this.beneficiaries = this.policy.bnfDTOs
|
||||
this.type = this.beneficiaries.some(i => {
|
||||
//isLegal:法定标记 1-是法定受益人 0-是指定受益人
|
||||
return i.isNewInfo == '0' && i.isLegal == '0' //新增受益人存在指定受益人
|
||||
})
|
||||
? '2'
|
||||
: '1'
|
||||
} else {
|
||||
await this.getPolicyInfo()
|
||||
this.type = this.beneficiaries.some(i => {
|
||||
return i.isNewInfo == '1' && i.isLegal == '0' //初始化受益人存在指定受益人
|
||||
})
|
||||
? '2'
|
||||
: '1'
|
||||
}
|
||||
this.insuredName = this.policy.insuredName
|
||||
|
||||
this.type = this.policy.bnfDTOs[0].bnfType
|
||||
if (this.type == 2) {
|
||||
this.isDisType = true
|
||||
}
|
||||
|
||||
this.beneficiaries = this.policy.bnfDTOs
|
||||
},
|
||||
mounted() {},
|
||||
methods: {
|
||||
//告知信息
|
||||
//获取初始化信息
|
||||
getPolicyInfo() {
|
||||
let data = {
|
||||
contNo: this.policy.contNo,
|
||||
edorType: 'BC',
|
||||
customerNo: this.customerInfo.customerNo,
|
||||
idno: this.customerInfo.idNo,
|
||||
mobile: this.customerInfo.mobile
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
policyInfo(data).then(
|
||||
res => {
|
||||
if (res.result == '0') {
|
||||
this.beneficiaries = res.content.cont.bcBnfList
|
||||
//isNewInfo 是否新信息 0-是 1-否
|
||||
this.beneficiaries.forEach(item => {
|
||||
item.isNewInfo = '1'
|
||||
})
|
||||
resolve()
|
||||
} else {
|
||||
reject(this.$toast(res.content))
|
||||
}
|
||||
},
|
||||
error => {
|
||||
reject(console.log(error))
|
||||
}
|
||||
)
|
||||
})
|
||||
},
|
||||
//下一步
|
||||
nextStep() {
|
||||
if (this.type == 2 && this.beneficiaries.length == 0) {
|
||||
this.$toast('受益人列表不能为空')
|
||||
return
|
||||
}
|
||||
this.feachData.surrenderDTOList[0].bnfDTOs = this.beneficiaries
|
||||
edorChange(this.feachData)
|
||||
let beneRatio = 0
|
||||
this.beneficiaries.forEach(item => {
|
||||
beneRatio += Number(item.bnfLot)
|
||||
})
|
||||
if (beneRatio != 100 && !(this.beneficiaries.length == 1 && this.beneficiaries[0].isLegal == '1')) {
|
||||
return this.$toast('受益人受益比例不合法')
|
||||
}
|
||||
let feachData = {
|
||||
platformType: 'APP',
|
||||
edorType: 'BC',
|
||||
operateType: '01',
|
||||
bcBnfDTOList: this.beneficiaries
|
||||
}
|
||||
changeEdor(feachData)
|
||||
.then(res => {
|
||||
if (res.result == 0) {
|
||||
this.policy.bnfDTOs = this.beneficiaries
|
||||
localStorage['preserve-policy'] = JSON.stringify(this.policy)
|
||||
localStorage.removeItem('fromAddBC')
|
||||
let path = ''
|
||||
if (this.type != 2) {
|
||||
path = '/preserve/common/HandleResult?entry=BC'
|
||||
} else {
|
||||
path = '/preserve/bc/imageUpload?entry=BC'
|
||||
}
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/preserve/HandleResult?entry=beneficiary'
|
||||
url: location.origin + `/#${path}`
|
||||
},
|
||||
routerInfo: '/preserve/HandleResult?entry=beneficiary'
|
||||
routerInfo: path
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
@@ -134,10 +184,10 @@ export default {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/preserve/BeneficiaryInfoAdd'
|
||||
url: location.origin + '/#/preserve/bc/BeneficiaryInfoAdd'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/preserve/BeneficiaryInfoAdd'
|
||||
path: '/preserve/bc/BeneficiaryInfoAdd'
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -164,7 +214,7 @@ export default {
|
||||
editBeneficiary(index) {
|
||||
this.policy.bnfDTOs = this.beneficiaries
|
||||
localStorage['preserve-policy'] = JSON.stringify(this.policy)
|
||||
let path = '/preserve/BeneficiaryInfoAdd?edit=' + index
|
||||
let path = '/preserve/bc/BeneficiaryInfoAdd?edit=' + index
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
@@ -66,7 +66,7 @@
|
||||
name="证件截止日期"
|
||||
:required="isRequired"
|
||||
:defaultDate="new Date()"
|
||||
:value.sync="userInfo.effectiveDate"
|
||||
:value.sync="userInfo.idExpDate"
|
||||
type="date"
|
||||
@confirm="onDateConfirm($event, '1')"
|
||||
ref="effectiveDate"
|
||||
@@ -104,7 +104,7 @@
|
||||
name="受益比例"
|
||||
placeholder="请输入"
|
||||
required
|
||||
v-validate="'required|onlyNumber'"
|
||||
v-validate="'required|onlyInteger'"
|
||||
maxlength="3"
|
||||
clearable
|
||||
/>
|
||||
@@ -173,8 +173,8 @@ import utilsAge from '@/assets/js/utils/age'
|
||||
import IdentityCardScan from '@/components/ebiz/sale/IdentityCardScan'
|
||||
import CustomerPicker from '@/components/ebiz/customer/CustomerPicker'
|
||||
import idNoCheck from '@/assets/js/utils/idNoCheck'
|
||||
import { idToData } from './js/verification'
|
||||
import { selectComp } from './js/methods'
|
||||
import { idToData } from '../js/verification'
|
||||
import { selectComp } from '../js/methods'
|
||||
let relationToInsured = DataDictionary.relationToAppnt
|
||||
|
||||
export default {
|
||||
@@ -225,29 +225,33 @@ export default {
|
||||
marriage: '',
|
||||
isRequired: '', //长期前是否有*
|
||||
userInfo: {
|
||||
bnfId: '',
|
||||
bnfType: '2',
|
||||
bnfType: '1', //受益人类别 0-生存受益人 1-身故受益人
|
||||
isLegal: '0', //1-法定受益人 0-指定受益人
|
||||
bnfNo: '1',
|
||||
relationToInsured: '', //受益人和被保人关系
|
||||
bnfOrder: 1,
|
||||
bnfGrade: '',
|
||||
name: '',
|
||||
sex: '0',
|
||||
nationality: '1',
|
||||
birthday: '',
|
||||
isNewInfo: '0', //是否是新信息 0-是 1-否
|
||||
idType: '1',
|
||||
idNo: '',
|
||||
certificateValidate: '',
|
||||
effectiveDate: '',
|
||||
effectiveDateType: false, //是否长期
|
||||
bnfNo: '1',
|
||||
bnfOrder: 1,
|
||||
bnfLot: '',
|
||||
idExpDate: '', //证件截止日期
|
||||
phone: '',
|
||||
birthday: '',
|
||||
nationality: '1',
|
||||
email: '',
|
||||
province: '',
|
||||
city: '',
|
||||
area: '',
|
||||
postalAddress: '',
|
||||
email: '',
|
||||
postalAddress: '', //详细地址
|
||||
occupationCode: '',
|
||||
occupationName: '' // 职业中文
|
||||
occupationType: '',
|
||||
occupationName: '',
|
||||
area: '',
|
||||
bnfLot: '', //受益比例
|
||||
|
||||
// certificateValidate: '',
|
||||
effectiveDateType: false //是否长期
|
||||
},
|
||||
areaList: areaList,
|
||||
occupationShowPicker: false,
|
||||
@@ -260,6 +264,11 @@ export default {
|
||||
created() {
|
||||
this.policy = JSON.parse(localStorage['preserve-policy'])
|
||||
this.bnfDTOs = this.policy.bnfDTOs
|
||||
this.bnfDTOs.map(i => {
|
||||
if (i.idExpDate == '9999-01-01') {
|
||||
i.effectiveDateType = true
|
||||
}
|
||||
})
|
||||
if (this.$route.query.edit) {
|
||||
this.editIndex = this.$route.query.edit
|
||||
this.userInfo = this.bnfDTOs[this.$route.query.edit]
|
||||
@@ -305,7 +314,7 @@ export default {
|
||||
;[this.userInfo.nationality, this.nationality] = [value.id, value.text]
|
||||
} else if (this.pickerType == '2') {
|
||||
this.idLimit = false
|
||||
this.userInfo.idNo = this.userInfo.effectiveDate = this.userInfo.birthday = ''
|
||||
this.userInfo.idNo = this.userInfo.idExpDate = this.userInfo.birthday = ''
|
||||
// this.userInfo.sex = '0'
|
||||
this.effectiveDateTypeAble = false
|
||||
//身份证以外的证件类型可以使用长期
|
||||
@@ -336,7 +345,7 @@ export default {
|
||||
this.userInfo.effectiveDateType = false
|
||||
//如果录入日期早于当前日期
|
||||
if (Date.parse(val) < Date.parse(new Date())) {
|
||||
this.userInfo.effectiveDate = ''
|
||||
this.userInfo.idExpDate = ''
|
||||
this.$refs.effectiveDate.date = ''
|
||||
return this.$toast('您的证件已过期')
|
||||
}
|
||||
@@ -358,7 +367,7 @@ export default {
|
||||
}
|
||||
//出生证有效期
|
||||
if (this.userInfo.idType == '3') {
|
||||
if (Date.parse(this.userInfo.effectiveDate) - Date.parse(val) > Date.parse('1973-01-01')) {
|
||||
if (Date.parse(this.userInfo.idExpDate) - Date.parse(val) > Date.parse('1973-01-01')) {
|
||||
this.userInfo.birthday = ''
|
||||
this.$refs.birthday.date = ''
|
||||
return this.$toast('出生证有效期或出生日期有误')
|
||||
@@ -388,7 +397,7 @@ export default {
|
||||
if (data.idEffectEndDate == '9999-01-01') {
|
||||
this.userInfo.effectiveDateType = true //是否长期
|
||||
} else {
|
||||
this.userInfo.effectiveDate = data.idEffectEndDate //证件截止日期
|
||||
this.userInfo.idExpDate = data.idEffectEndDate //证件截止日期
|
||||
}
|
||||
this.userInfo.occupationCode = data.occupationCode //职业类别编码
|
||||
this.userInfo.occupationName = data.occupationName //职业类别名称
|
||||
@@ -444,22 +453,22 @@ export default {
|
||||
|
||||
//年龄在0-15周岁之间
|
||||
if (age <= 15) {
|
||||
if (Date.parse(this.userInfo.effectiveDate) - Date.parse(new Date()) > Date.parse('1975-01-01')) {
|
||||
this.userInfo.effectiveDate = ''
|
||||
if (Date.parse(this.userInfo.idExpDate) - Date.parse(new Date()) > Date.parse('1975-01-01')) {
|
||||
this.userInfo.idExpDate = ''
|
||||
this.$refs.effectiveDate.date = ''
|
||||
return this.$toast('证件有效期不正常,未满16周岁的公民身份证有效期应小于等于5年')
|
||||
}
|
||||
//年龄在 16-25 周岁之间
|
||||
} else if (age >= 16 && age <= 25) {
|
||||
if (Date.parse(this.userInfo.effectiveDate) - Date.parse(new Date()) > Date.parse('1980-01-01')) {
|
||||
this.userInfo.effectiveDate = ''
|
||||
if (Date.parse(this.userInfo.idExpDate) - Date.parse(new Date()) > Date.parse('1980-01-01')) {
|
||||
this.userInfo.idExpDate = ''
|
||||
this.$refs.effectiveDate.date = ''
|
||||
return this.$toast('证件有效期不正常,16周岁至25周岁公民身份证有效期应小于等于10年')
|
||||
}
|
||||
//年龄在 26-45 周岁之间
|
||||
} else if (age >= 26 && age <= 45) {
|
||||
if (Date.parse(this.userInfo.effectiveDate) - Date.parse(new Date()) > Date.parse('1990-01-01')) {
|
||||
this.userInfo.effectiveDate = ''
|
||||
if (Date.parse(this.userInfo.idExpDate) - Date.parse(new Date()) > Date.parse('1990-01-01')) {
|
||||
this.userInfo.idExpDate = ''
|
||||
this.$refs.effectiveDate.date = ''
|
||||
return this.$toast('证件有效期不正常,26周岁至45周岁公民身份证有效期应小于等于20年')
|
||||
}
|
||||
@@ -517,15 +526,22 @@ export default {
|
||||
this.bnfDTOs[this.editIndex] = this.userInfo
|
||||
}
|
||||
this.policy.bnfDTOs = this.bnfDTOs
|
||||
this.policy.bnfDTOs.map(i => {
|
||||
if (i.effectiveDateType) {
|
||||
i.idExpDate = '9999-01-01'
|
||||
}
|
||||
delete i.effectiveDateType
|
||||
})
|
||||
localStorage.fromAddBC = true
|
||||
localStorage['preserve-policy'] = JSON.stringify(this.policy)
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/preserve/BeneficiaryInfo',
|
||||
url: location.origin + '/#/preserve/bc/BeneficiaryInfo',
|
||||
needRefresh: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/preserve/BeneficiaryInfo'
|
||||
path: '/preserve/bc/BeneficiaryInfo'
|
||||
}
|
||||
})
|
||||
} else {
|
||||
@@ -554,7 +570,7 @@ export default {
|
||||
effectiveDataTypeChange(val) {
|
||||
//勾选长期状态时,证件截止日期置空
|
||||
if (val) {
|
||||
this.userInfo.effectiveDate = ''
|
||||
this.userInfo.idExpDate = ''
|
||||
this.effectiveDateRequired = false
|
||||
} else {
|
||||
this.effectiveDateRequired = true
|
||||
@@ -564,7 +580,7 @@ export default {
|
||||
getIdentityInfo(data) {
|
||||
console.log(data)
|
||||
if (data.name && data.name != '待识别') {
|
||||
this.userInfo.effectiveDate = data.endDate
|
||||
this.userInfo.idExpDate = data.endDate
|
||||
this.userInfo.name = data.name
|
||||
this.userInfo.idNo = data.idNo
|
||||
}
|
||||
@@ -161,8 +161,8 @@ import utilsAge from '@/assets/js/utils/age'
|
||||
import IdentityCardScan from '@/components/ebiz/sale/IdentityCardScan'
|
||||
import CustomerPicker from '@/components/ebiz/customer/CustomerPicker'
|
||||
import idNoCheck from '@/assets/js/utils/idNoCheck'
|
||||
import { idToData } from './js/verification'
|
||||
import { selectComp } from './js/methods'
|
||||
import { idToData } from '../js/verification'
|
||||
import { selectComp } from '../js/methods'
|
||||
let relationToInsured = DataDictionary.relationToAppnt
|
||||
|
||||
export default {
|
||||
@@ -247,7 +247,9 @@ export default {
|
||||
},
|
||||
created() {
|
||||
this.policy = JSON.parse(localStorage['preserve-policy'])
|
||||
this.bnfDTOs = this.policy.bnfDTOs
|
||||
this.bnfDTOs = this.policy.bnfDTOs.filter(i => {
|
||||
return i.isNewInfo == '0'
|
||||
})
|
||||
if (this.$route.query.edit) {
|
||||
this.editIndex = this.$route.query.edit
|
||||
this.userInfo = this.bnfDTOs[this.$route.query.edit]
|
||||
362
src/views/ebiz/preserve/bc/ImageUpload.vue
Normal file
362
src/views/ebiz/preserve/bc/ImageUpload.vue
Normal file
@@ -0,0 +1,362 @@
|
||||
<!--影像信息上传页面-->
|
||||
<template>
|
||||
<div class="image-upload-container">
|
||||
<div class=" pb80">
|
||||
<div class="m20 bg-white">
|
||||
<div>
|
||||
<!-- 全部受益人身份证件正反面 -->
|
||||
<div>
|
||||
<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="2"
|
||||
@delete="deleteImg"
|
||||
/>
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<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'
|
||||
export default {
|
||||
components: {
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Field.name]: Field,
|
||||
[Uploader.name]: Uploader,
|
||||
[RadioGroup.name]: RadioGroup,
|
||||
[Radio.name]: Radio,
|
||||
[Dialog.name]: Dialog,
|
||||
[Picker.name]: Picker,
|
||||
[Popup.name]: Popup
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isDisabled: true,
|
||||
id: '',
|
||||
idType: '1',
|
||||
type: '',
|
||||
fileListIdFront: [], //身份证
|
||||
file: '', // 图片流
|
||||
imgName: '', // 图片名称
|
||||
list: [],
|
||||
entry: '',
|
||||
surrenderType: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.entry = JSON.parse(localStorage.customerInfo).entry
|
||||
// this.accountType = this.$route.query.accountType
|
||||
// this.conTractType = this.$route.query.conTractType
|
||||
// switch (this.entry) {
|
||||
// case 'BB': //联系方式变更
|
||||
// this.surrenderType = '1'
|
||||
// break
|
||||
// case 'BC': //受益人变更
|
||||
// this.surrenderType = '2'
|
||||
// break
|
||||
// case 'PC': //续期账户变更
|
||||
// this.surrenderType = '3'
|
||||
// break
|
||||
// case 'CT': //退保
|
||||
// this.surrenderType = '4'
|
||||
// break
|
||||
// case 'WT': //犹豫期退保
|
||||
// this.surrenderType = '5'
|
||||
// break
|
||||
// default:
|
||||
// break
|
||||
// }
|
||||
// 银行卡
|
||||
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 = []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
test(type, id) {
|
||||
this.id = id
|
||||
this.type = type
|
||||
},
|
||||
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))
|
||||
uploadImg(formdata).then(res => {
|
||||
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)
|
||||
}
|
||||
} 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)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 转化base64格式为文件格式
|
||||
dataURLtoFile(dataurl, filename) {
|
||||
//将base64转换为文件
|
||||
var arr = dataurl.split(','),
|
||||
mime = arr[0].match(/:(.*?);/)[1],
|
||||
bstr = atob(arr[1]),
|
||||
n = bstr.length,
|
||||
u8arr = new Uint8Array(n)
|
||||
while (n--) {
|
||||
u8arr[n] = bstr.charCodeAt(n)
|
||||
}
|
||||
return new File([u8arr], filename, { type: mime })
|
||||
},
|
||||
// 删除图片前
|
||||
beforeDelete(file, detail) {
|
||||
Dialog.confirm({
|
||||
title: '提示',
|
||||
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)
|
||||
})
|
||||
.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({
|
||||
// 持续展示 toast
|
||||
duration: 0,
|
||||
// 禁用背景点击
|
||||
forbidClick: true,
|
||||
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: []
|
||||
}
|
||||
}
|
||||
|
||||
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()
|
||||
}
|
||||
} 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 => {
|
||||
if (res.result == 0) {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/preserve/handleResult',
|
||||
pullRefresh: '1',
|
||||
backToFirst: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/preserve/handleResult'
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
@@ -14,9 +14,10 @@
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'handleResult',
|
||||
name: 'HandleResult',
|
||||
data() {
|
||||
return {
|
||||
path: '', //页面跳转路径
|
||||
srcSuccess: this.$assetsUrl + 'images/success.png',
|
||||
entry: '',
|
||||
signInvalid: '',
|
||||
@@ -31,17 +32,20 @@ export default {
|
||||
}
|
||||
// 此处处理 this.path
|
||||
switch (this.entry) {
|
||||
case 'contact':
|
||||
this.path = '/preserve/ContactConfirmation?entry=contact'
|
||||
case 'BB':
|
||||
this.path = '/preserve/ContactConfirmation?entry=BB'
|
||||
break
|
||||
case 'beneficiary':
|
||||
this.path = '/preserve/BeneficiaryConfirmation?entry=beneficiary&'
|
||||
case 'BC':
|
||||
this.path = '/preserve/BeneficiaryConfirmation?entry=BC'
|
||||
break
|
||||
case 'renewal':
|
||||
this.path = '2'
|
||||
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 = ''
|
||||
@@ -49,23 +53,27 @@ 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 != 'beneficiary') {
|
||||
if (this.entry != 'BC') {
|
||||
// 如果 保全项不是 受益人变更、则 在证件类型为身份证时 直接接入人脸识别
|
||||
// if (this.customerInfo.idType != '1') {
|
||||
// 如果证件类型不是身份证
|
||||
// 直接跳过人脸识别
|
||||
this.jumpNextPage(this.path)
|
||||
// } else {
|
||||
// this.toFace({
|
||||
// number: this.customerInfo.idNo, //身份证号码
|
||||
// name: this.customerInfo.name //姓名
|
||||
// })
|
||||
// }
|
||||
} else if (this.entry == 'beneficiary') {
|
||||
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周岁,人脸识别录入被保人本人
|
||||
// 若被保险人<18周岁,被保险人与投保人为子女关系,人脸识别录入未成年人父亲或母亲
|
||||
@@ -80,7 +88,7 @@ export default {
|
||||
this.jumpNextPage(this.path)
|
||||
}
|
||||
},
|
||||
jumpNextPage(path = '/preserve/BeneficiaryInfo') {
|
||||
jumpNextPage(path = '/preserve/bc/BeneficiaryInfo') {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
@@ -93,11 +101,10 @@ export default {
|
||||
},
|
||||
toFace(config) {
|
||||
// eslint-disable-next-line no-undef
|
||||
EWebBridge.webCallAppInJs('face_auth', config)
|
||||
// {
|
||||
// number: this.customerInfo.idNo, //身份证号码
|
||||
// name: this.customerInfo.name //姓名
|
||||
// })
|
||||
EWebBridge.webCallAppInJs('face_auth', {
|
||||
number: this.customerInfo.idNo, //身份证号码
|
||||
name: this.customerInfo.customerName //姓名
|
||||
})
|
||||
// 跳过人脸识别
|
||||
// new Promise(resolve => {
|
||||
// console.log('--跳过人脸识别--返回识别成功')
|
||||
@@ -1,22 +1,11 @@
|
||||
<!--保单列表页-->
|
||||
<template>
|
||||
<div class="proposal-list-container">
|
||||
<!-- <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 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">
|
||||
<div>保单号:</div>
|
||||
<div>{{ item.policyNo }}</div>
|
||||
<div>{{ item.contNo }}</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white pv15 pr15 pl10 ml15 mr15">
|
||||
@@ -58,18 +47,17 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- </div> -->
|
||||
<div v-else class="text-center">
|
||||
<img class="mt40 w250" src="@/assets/images/pic_page-non.png" />
|
||||
<div class="fs17 c-gray-dark mt40">暂无保单</div>
|
||||
</div>
|
||||
<!-- </van-list> -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
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,
|
||||
@@ -79,69 +67,51 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
entry: '', //入口
|
||||
// policyList: [] //保单列表
|
||||
customerInfo: JSON.parse(localStorage.getItem('preserve-customerInfo')), //客户详情
|
||||
policyList: [
|
||||
{
|
||||
contNo: '11111111',
|
||||
appntName: '张三',
|
||||
insuredName: '李四',
|
||||
riskName: '国富人寿八桂无忧',
|
||||
amt: '130.000',
|
||||
cvaliDate: '2020-01-19'
|
||||
},
|
||||
{
|
||||
"grpContNo": "11222111",
|
||||
"contNo": "11111111",
|
||||
"proposalPrtNo": "641596",
|
||||
"hangUpFlag": "2",
|
||||
"appntName": "张三2",
|
||||
"insuredName": "李四2",
|
||||
"riskName": "国富人寿八桂无忧",
|
||||
"amt": "130.00",
|
||||
"cvaliDate": "2020-01-19"
|
||||
}
|
||||
] //保单列表
|
||||
/*
|
||||
finishedText: '没有更多了',
|
||||
finished: false,
|
||||
error: false,
|
||||
loading: false,
|
||||
pageSize: 5, //每页数据条数
|
||||
morePage: 1, // 当前页数
|
||||
isSuccess: false
|
||||
*/
|
||||
policyList: [] //保单列表
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
async mounted() {
|
||||
if (localStorage['preserve-policy']) {
|
||||
localStorage.removeItem('preserve-policy')
|
||||
}
|
||||
this.entry = this.$route.query.entry
|
||||
//await this.getPolicyList({ customerNo: this.customerInfo.customerNo })
|
||||
// this.getPolicyList({ customerNo: '' })
|
||||
await this.getPolicyList({ customerNo: this.customerInfo.customerNo, edorType: this.entry })
|
||||
},
|
||||
methods: {
|
||||
//获取保单列表
|
||||
async getPolicyList(data) {
|
||||
policyList(data).then(res => {
|
||||
if (res.result == '0') {
|
||||
// this.policyList = res.content.policyListDTOList
|
||||
this.policyList = res.content.contList
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
getPolicyList(data) {
|
||||
return new Promise((resolve, reject) => {
|
||||
policyList(data).then(
|
||||
res => {
|
||||
if (res.result == '0') {
|
||||
this.policyList = res.content.policyDTOList
|
||||
resolve()
|
||||
} else {
|
||||
this.$toast(res.content)
|
||||
reject()
|
||||
}
|
||||
},
|
||||
error => {
|
||||
reject(console.log(error))
|
||||
}
|
||||
)
|
||||
})
|
||||
},
|
||||
|
||||
//点击保单,跳转页面
|
||||
toChange(detail) {
|
||||
console.log(detail)
|
||||
localStorage['preserve-policy'] = JSON.stringify(detail)
|
||||
let url
|
||||
switch (this.entry) {
|
||||
case 'surrender': //退保
|
||||
url = `surrenderInfo?entry=${this.entry}`
|
||||
case 'CT': //退保
|
||||
url = `ct/surrenderInfo?entry=${this.entry}`
|
||||
break
|
||||
case 'beneficiary': //受益人变更
|
||||
url = `beneficiaryInfo?entry=${this.entry}`
|
||||
// case 'WT': //犹豫期退保
|
||||
// url = `wt/surrenderInfo?entry=${this.entry}`
|
||||
// break
|
||||
case 'BC': //受益人变更
|
||||
url = `bc/beneficiaryInfo?entry=${this.entry}`
|
||||
break
|
||||
default:
|
||||
break
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- 保全搜索客户页面-->
|
||||
<template>
|
||||
<div class="search-container bg-white">
|
||||
<div class="search-content flex relative">
|
||||
@@ -30,9 +31,15 @@
|
||||
|
||||
<script>
|
||||
import { Search, DropdownMenu, DropdownItem } from 'vant'
|
||||
import { customerList, customerInfo } from '@/api/ebiz/preserve/preserve'
|
||||
import { customerList } from '@/api/ebiz/preserve/preserve'
|
||||
export default {
|
||||
name: 'search',
|
||||
name: 'Search',
|
||||
// props: {
|
||||
// options: {
|
||||
// type: Array,
|
||||
// default: () => []
|
||||
// }
|
||||
// },
|
||||
data() {
|
||||
return {
|
||||
searchVal: '', // 搜索关键词
|
||||
@@ -53,28 +60,11 @@ export default {
|
||||
[DropdownMenu.name]: DropdownMenu,
|
||||
[DropdownItem.name]: DropdownItem
|
||||
},
|
||||
async 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
|
||||
}
|
||||
created() {
|
||||
document.getElementsByTagName('body')[0].classList.add('bg-white')
|
||||
},
|
||||
destroyed() {
|
||||
document.getElementsByTagName('body')[0].classList.remove('bg-white')
|
||||
},
|
||||
methods: {
|
||||
// 搜索
|
||||
@@ -83,20 +73,21 @@ export default {
|
||||
this.$toast('请输入搜索内容')
|
||||
return
|
||||
}
|
||||
if (localStorage['preserve-customerInfo']) {
|
||||
localStorage.removeItem('preserve-customerInfo')
|
||||
}
|
||||
customerList({
|
||||
queryParam: val,
|
||||
queryType: this.selected //0客户姓名,1证件号码,2手机号
|
||||
// surrenderType: this.surrenderType, //"1","基本信息变更" "2","续期账号变更" "3","红利领取"
|
||||
// systemType: '0'
|
||||
}).then(res => {
|
||||
this.$toast.clear()
|
||||
if (res.result == 0) {
|
||||
this.list = res.content
|
||||
this.list = res.content.customerList
|
||||
if (this.list.length == 0) {
|
||||
this.$toast(`暂无此客户`)
|
||||
}
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
this.$toast(res.content)
|
||||
}
|
||||
})
|
||||
this.isSearch = false
|
||||
@@ -115,46 +106,29 @@ export default {
|
||||
},
|
||||
// 点击客户
|
||||
handleClick(params) {
|
||||
let surrenderType = ''
|
||||
this.entry = this.$route.query.entry
|
||||
let url = ''
|
||||
switch (this.entry) {
|
||||
case 'contact':
|
||||
surrenderType = '1'
|
||||
url = `/preserve/contactInfo?entry=contact`
|
||||
case 'BB':
|
||||
url = `/preserve/bb/contactInfo?entry=BB`
|
||||
break
|
||||
case 'beneficiary':
|
||||
surrenderType = '2'
|
||||
url = `/preserve/policyList?entry=beneficiary`
|
||||
case 'BC':
|
||||
url = `/preserve/common/policyList?entry=BC`
|
||||
break
|
||||
case 'renewal':
|
||||
surrenderType = '3'
|
||||
url = `/preserve/policyList?entry=renewal`
|
||||
case 'PC':
|
||||
url = `/preserve/pc/RenewalInfo?entry=PC`
|
||||
break
|
||||
case 'surrender':
|
||||
surrenderType = '4'
|
||||
url = `/preserve/policyList?entry=surrender`
|
||||
case 'CT':
|
||||
url = `/preserve/common/policyList?entry=CT`
|
||||
break
|
||||
case 'hesitateSurrender':
|
||||
surrenderType = '5'
|
||||
url = `/preserve/policyList?entry=hesitateSurrender`
|
||||
case 'WT':
|
||||
url = `/preserve/common/policyList?entry=WT`
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
customerInfo({
|
||||
customerNo: params.customerNo
|
||||
// surrenderType //"1","基本信息变更" "2","续期账号变更" "3","红利领取"
|
||||
}).then(res => {
|
||||
console.log('客户信息详情', res)
|
||||
// delete res.content.coreCustomerDTOList
|
||||
//preserve-customerInfo -- 保全查询的客户详细信息
|
||||
if (res.result == 0) {
|
||||
localStorage.setItem('preserve-customerInfo', JSON.stringify(res.content))
|
||||
this.jupmTo(url)
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
localStorage.setItem('preserve-customerInfo', JSON.stringify(params))
|
||||
this.jupmTo(url)
|
||||
},
|
||||
// 页面跳转
|
||||
jupmTo(url) {
|
||||
63
src/views/ebiz/preserve/common/SubmitResult.vue
Normal file
63
src/views/ebiz/preserve/common/SubmitResult.vue
Normal file
@@ -0,0 +1,63 @@
|
||||
<!--提交结果页面-->
|
||||
<template>
|
||||
<div class="submit-result-container">
|
||||
<div class="payResult-header flex justify-content-c align-items-c p20 pt80">
|
||||
<img class="w60 h60 mt100" :src="srcSuccess" alt="" />
|
||||
</div>
|
||||
<p class="mt20 text-center">提交成功</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>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'SubmitResult',
|
||||
data() {
|
||||
return {
|
||||
srcSuccess: this.$assetsUrl + 'images/success.png'
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
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'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
3
src/views/ebiz/preserve/components/Search.vue
Normal file
3
src/views/ebiz/preserve/components/Search.vue
Normal file
@@ -0,0 +1,3 @@
|
||||
<template>
|
||||
<div></div>
|
||||
</template>
|
||||
248
src/views/ebiz/preserve/ct/ImageUpload.vue
Normal file
248
src/views/ebiz/preserve/ct/ImageUpload.vue
Normal file
@@ -0,0 +1,248 @@
|
||||
<!--影像信息上传页面-->
|
||||
<template>
|
||||
<div class="image-upload-container">
|
||||
<div class=" pb80">
|
||||
<div class="m20 bg-white">
|
||||
<div>
|
||||
<!-- 银行卡 -->
|
||||
<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" @click="nextStep" v-no-more-click="2000">下一步</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Cell, CellGroup, Field, Uploader, RadioGroup, Radio, Dialog, Picker, Popup } from 'vant'
|
||||
import { uploadImg } from '@/api/ebiz/sale/sale'
|
||||
import { changeEdor } from '@/api/ebiz/preserve/preserve'
|
||||
export default {
|
||||
components: {
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Field.name]: Field,
|
||||
[Uploader.name]: Uploader,
|
||||
[RadioGroup.name]: RadioGroup,
|
||||
[Radio.name]: Radio,
|
||||
[Dialog.name]: Dialog,
|
||||
[Picker.name]: Picker,
|
||||
[Popup.name]: Popup
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isDisabled: true,
|
||||
id: '',
|
||||
idType: '1',
|
||||
type: '',
|
||||
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: '',
|
||||
customerInfo: JSON.parse(localStorage.getItem('preserve-customerInfo'))
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// 初始化 上传影像数据
|
||||
if (this.$route.query.isIdCard == '0') {
|
||||
this.fileList[0].isShow = false
|
||||
this.fileList[1].isShow = false
|
||||
}
|
||||
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(item) {
|
||||
this.uploadCheck = item
|
||||
},
|
||||
afterRead(file) {
|
||||
// 此时可以自行将文件上传至服务器
|
||||
this.$toast.loading({
|
||||
duration: 0,
|
||||
forbidClick: true,
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
let formdata = new FormData()
|
||||
formdata.append('imgPath', this.dataURLtoFile(file.content, file.file.name))
|
||||
uploadImg(formdata).then(res => {
|
||||
this.$toast.clear()
|
||||
if (res.result == '0') {
|
||||
this.uploadCheck.popList.push({ name: file.file.name, imgPath: res.path })
|
||||
console.log(this.fileList)
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 转化base64格式为文件格式
|
||||
dataURLtoFile(dataurl, filename) {
|
||||
//将base64转换为文件
|
||||
var arr = dataurl.split(','),
|
||||
mime = arr[0].match(/:(.*?);/)[1],
|
||||
bstr = atob(arr[1]),
|
||||
n = bstr.length,
|
||||
u8arr = new Uint8Array(n)
|
||||
while (n--) {
|
||||
u8arr[n] = bstr.charCodeAt(n)
|
||||
}
|
||||
return new File([u8arr], filename, { type: mime })
|
||||
},
|
||||
// 删除图片前
|
||||
beforeDelete(file, detail) {
|
||||
Dialog.confirm({
|
||||
title: '提示',
|
||||
message: '您确定要删除吗'
|
||||
})
|
||||
.then(() => {
|
||||
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
|
||||
})
|
||||
},
|
||||
// 点击下一步
|
||||
nextStep() {
|
||||
this.$toast.loading({
|
||||
// 持续展示 toast
|
||||
duration: 0,
|
||||
// 禁用背景点击
|
||||
forbidClick: true,
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
//
|
||||
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: []
|
||||
}
|
||||
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
|
||||
}
|
||||
)
|
||||
)
|
||||
})
|
||||
})
|
||||
changeEdor(saveMediaDTO).then(res => {
|
||||
this.$toast.clear()
|
||||
if (res.result == 0) {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/preserve/common/handleResult?entry=CT',
|
||||
pullRefresh: '1',
|
||||
backToFirst: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/preserve/common/handleResult?entry=CT'
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
289
src/views/ebiz/preserve/ct/SurrenderConfirmation.vue
Normal file
289
src/views/ebiz/preserve/ct/SurrenderConfirmation.vue
Normal file
@@ -0,0 +1,289 @@
|
||||
<!--退保-保全代办确认页-->
|
||||
<template>
|
||||
<div class="surrender-confirmation-container pb50">
|
||||
<div style="border-bottom: 1px solid #ebedf0" class="fs14 pl10 pv12 bg-white">
|
||||
<p>
|
||||
<span>尊敬的</span>
|
||||
<span class="red">{{ ebizSurrender.accountName }}</span
|
||||
>先生/女士,您好!
|
||||
</p>
|
||||
<p class="mt10">
|
||||
<span>您的</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="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="ebizSurrender.accountName" />
|
||||
<van-cell title="退款账户" :value="account" />
|
||||
<van-cell title="开户银行">
|
||||
<div :class="{ red: changeInfo.bankName }" slot="default">{{ ebizSurrender.bankName }}</div>
|
||||
</van-cell>
|
||||
<van-cell title="银行账号">
|
||||
<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-group>
|
||||
|
||||
<van-cell-group class="fs14 mt10 pl15 pr15 pb20">
|
||||
<p class="pt20 pb20">以下内容需要您阅读确认:</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 @confirm="authConfirm(authCode)" @cancel="clearTimer">
|
||||
<p class="p10 fs14">向此手机发送验证码确认用户身份</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-cell-group>
|
||||
</van-dialog>
|
||||
<div class="bottom-btn bg-white">
|
||||
<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>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Field, Cell, CellGroup, Dialog } from 'vant'
|
||||
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: 'SurrenderConfirmation',
|
||||
components: {
|
||||
[Field.name]: Field,
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Dialog.name]: Dialog
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
show: false, // 获取短信验证码
|
||||
codeDisabled: false, // 获取验证码按钮是否禁用
|
||||
timeId: null, // 计时器ID
|
||||
countDown: 60, // 倒计时
|
||||
authCode: '', // 验证码
|
||||
src: this.$assetsUrl + 'images/u6490.png', // 图片路径
|
||||
sessionId: '',
|
||||
isUnRead: false, //是否存在未阅读文档
|
||||
|
||||
customerInfo: {},
|
||||
policy: {},
|
||||
changeInfo: {},
|
||||
surrenderSignList: [],
|
||||
ebizSurrender: {},
|
||||
pdfList: [], //需阅读文档list
|
||||
riskType: null, //是否是万能险 4-是万能险 其他/null-非万能险
|
||||
account: '' //退款银行账户
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
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/ct/SurrenderTip'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/preserve/ct/SurrenderTip'
|
||||
}
|
||||
})
|
||||
},
|
||||
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'
|
||||
})
|
||||
resolve()
|
||||
} else {
|
||||
reject(this.$toast(res.resultMessage))
|
||||
}
|
||||
},
|
||||
error => {
|
||||
reject(this.$toast(error))
|
||||
}
|
||||
)
|
||||
})
|
||||
},
|
||||
// 获取短信验证码
|
||||
getAuthCode() {
|
||||
this.codeDisabled = true
|
||||
//倒计时
|
||||
this.timeId = setInterval(() => {
|
||||
this.countDown--
|
||||
if (this.countDown <= 0) {
|
||||
window.clearInterval(this.timeId)
|
||||
this.codeDisabled = false
|
||||
this.countDown = 60
|
||||
}
|
||||
}, 1000)
|
||||
getAuthCode({
|
||||
operateType: 'appntInfoEntry',
|
||||
type: 'H5',
|
||||
operateCode: this.customerInfo.customerMobile,
|
||||
system: 'agentApp',
|
||||
operateCodeType: '0'
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.result == 0) {
|
||||
this.sessionId = res.sessionId
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 验证码确认事件
|
||||
async authConfirm() {
|
||||
//清理计时器
|
||||
this.clearTimer()
|
||||
this.submit()
|
||||
},
|
||||
// 清理计时器
|
||||
clearTimer() {
|
||||
window.clearInterval(this.timeId)
|
||||
this.timeId = null
|
||||
this.countDown = 60
|
||||
this.codeDisabled = false
|
||||
},
|
||||
//确认变更
|
||||
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)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/*
|
||||
// 在微信中校验token是否失效
|
||||
async checkSignInvalid(signInvalid) {
|
||||
let that = this
|
||||
this.$toast.loading({
|
||||
duration: 0, // 持续展示 toast
|
||||
forbidClick: true, // 禁用背景点击
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
let data = {
|
||||
sign: signInvalid
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
checkSignInvalid(data).then(res => {
|
||||
if (res.result == '0') {
|
||||
that.$toast.clear()
|
||||
let status = res.content.status
|
||||
resolve(status)
|
||||
} else {
|
||||
reject()
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
*/
|
||||
},
|
||||
filters: {
|
||||
mask: filters.mask,
|
||||
idToText: filters.idToText,
|
||||
amtFormat: filters.amtFormat
|
||||
},
|
||||
beforeDestroy() {
|
||||
//清理计时器
|
||||
this.clearTimer()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.surrender-confirmation-container {
|
||||
.cont-info-container {
|
||||
/deep/.van-cell__title,
|
||||
.van-cell__value {
|
||||
flex: auto;
|
||||
text-align: left;
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
.red {
|
||||
color: #e9332e !important;
|
||||
}
|
||||
</style>
|
||||
486
src/views/ebiz/preserve/ct/SurrenderInfo.vue
Normal file
486
src/views/ebiz/preserve/ct/SurrenderInfo.vue
Normal file
@@ -0,0 +1,486 @@
|
||||
<!--退保页-->
|
||||
<template>
|
||||
<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 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-field label="开户人姓名" required :value.sync="ctTrialDTO.accountName" name="开户人姓名" v-validate="'required'" readonly />
|
||||
<van-field
|
||||
:value="account"
|
||||
label="退款账户"
|
||||
placeholder="请选择"
|
||||
right-icon="arrow"
|
||||
@click="toSelect('3')"
|
||||
readonly
|
||||
v-validate="'required'"
|
||||
name="退款账户"
|
||||
required
|
||||
/>
|
||||
<van-field
|
||||
:value.sync="ctAccountDTO.bankName"
|
||||
label="开户银行"
|
||||
placeholder="请选择"
|
||||
right-icon="arrow"
|
||||
@click="toSelect('1')"
|
||||
readonly
|
||||
v-validate="'required'"
|
||||
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="ctAccountDTO.bankNo"
|
||||
label="银行账号"
|
||||
required
|
||||
maxlength="19"
|
||||
placeholder="请输入"
|
||||
clearable
|
||||
v-validate="'required|bankCard'"
|
||||
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="ctAccountDTO.bankProvince" label="开户银行所在地" placeholder="请输入" v-validate="'required'" name="开户银行所在地" required />
|
||||
<van-field
|
||||
:value.sync="reason"
|
||||
label="退保原因"
|
||||
required
|
||||
placeholder="请选择"
|
||||
right-icon="arrow"
|
||||
readonly
|
||||
v-validate="'required'"
|
||||
name="退保原因"
|
||||
@click="toSelect('2')"
|
||||
/>
|
||||
</div>
|
||||
<!-- 其他退保原因输入框 -->
|
||||
<van-row class="mb10 mt1">
|
||||
<van-col span="8"></van-col>
|
||||
<van-col span="16">
|
||||
<van-field
|
||||
class="van-hairline--surround"
|
||||
v-model="remark"
|
||||
rows="4"
|
||||
autosize
|
||||
type="textarea"
|
||||
name="其他退保原因"
|
||||
placeholder="请输入其他退保原因"
|
||||
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="popupShow" position="bottom">
|
||||
<van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="popupShow = false" />
|
||||
</van-popup>
|
||||
</div>
|
||||
<!-- 银行卡扫描 -->
|
||||
<BankCardScan :scanShow="isScan" :clear="false" @getScanInfo="getBankCardInfo"></BankCardScan>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Field, Cell, CellGroup, Popup, Row, Col, Picker } from 'vant'
|
||||
import BankCardScan from '@/components/ebiz/sale/BankCardScan'
|
||||
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',
|
||||
components: {
|
||||
[Field.name]: Field,
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Row.name]: Row,
|
||||
[Col.name]: Col,
|
||||
[Popup.name]: Popup,
|
||||
[Picker.name]: Picker,
|
||||
BankCardScan
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
valueKey: '',
|
||||
popupShow: false,
|
||||
pickerType: '',
|
||||
columns: [],
|
||||
|
||||
policy: null, //保单详情
|
||||
customerInfo: {}, //客户详情
|
||||
|
||||
bankList: [], // 银行列表
|
||||
isScan: false, // 是否扫描银行卡
|
||||
account: '原银行账户', //退款账户
|
||||
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: ''
|
||||
},
|
||||
//原始退保信息
|
||||
ctBonusDTO: {
|
||||
isNewInfo: '1'
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.customerInfo = JSON.parse(localStorage['preserve-customerInfo']) //客户详情
|
||||
this.policy = JSON.parse(localStorage['preserve-policy'])
|
||||
},
|
||||
async mounted() {
|
||||
document.getElementsByTagName('body')[0].classList.add('bg-white')
|
||||
// 筛选按钮的点击事件
|
||||
window.appCallBack = this.appCallBack
|
||||
this.getBank()
|
||||
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,
|
||||
amtFormat: filters.amtFormat
|
||||
},
|
||||
methods: {
|
||||
//获取试算信息
|
||||
getTrial(data) {
|
||||
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))
|
||||
}
|
||||
)
|
||||
})
|
||||
},
|
||||
//获取初始化信息
|
||||
getPolicyInfo() {
|
||||
let data = {
|
||||
contNo: this.policy.contNo,
|
||||
edorType: 'CT',
|
||||
customerNo: this.customerInfo.customerNo,
|
||||
idno: this.customerInfo.idNo
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
policyInfo(data).then(
|
||||
res => {
|
||||
if (res.result == '0') {
|
||||
let resData = res.content.cont
|
||||
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(this.$toast(error))
|
||||
}
|
||||
)
|
||||
})
|
||||
},
|
||||
//弹框选择
|
||||
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
|
||||
}
|
||||
},
|
||||
//确认选择字段
|
||||
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.ctAccountDTO.bankNo = data.name
|
||||
this.$jump({
|
||||
flag: 'navigation',
|
||||
extra: {
|
||||
title: '退保',
|
||||
hiddenRight: '1'
|
||||
}
|
||||
})
|
||||
this.isScan = false
|
||||
},
|
||||
// 银行卡扫描
|
||||
cardScanning(cardScanningType) {
|
||||
window.localStorage.setItem('cardScanningType', cardScanningType)
|
||||
document.body.style.backgroundColor = '#F5F5F5'
|
||||
let title = ''
|
||||
this.isclear = false
|
||||
;[this.isScan, title] = [true, '银行卡扫描']
|
||||
setTimeout(() => {
|
||||
this.$jump({
|
||||
flag: 'navigation',
|
||||
extra: {
|
||||
title,
|
||||
hiddenLeft: '1'
|
||||
}
|
||||
})
|
||||
this.closeBtn()
|
||||
}, 400)
|
||||
},
|
||||
closeBtn() {
|
||||
// 筛选按钮的显示
|
||||
this.$jump({
|
||||
flag: 'webview_right_button',
|
||||
extra: {
|
||||
btns: [
|
||||
{
|
||||
img: this.$assetsUrl + 'images/del-close.png',
|
||||
route: { flag: '', extra: {} }
|
||||
}
|
||||
]
|
||||
}
|
||||
})
|
||||
},
|
||||
appCallBack() {
|
||||
this.isclear = true
|
||||
// 筛选按钮的点击事件
|
||||
this.isclear = true
|
||||
this.$jump({
|
||||
flag: 'navigation',
|
||||
extra: {
|
||||
title: '退保',
|
||||
hiddenRight: '1'
|
||||
}
|
||||
})
|
||||
this.isScan = false
|
||||
},
|
||||
// 下一步
|
||||
async nextStep() {
|
||||
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 = '',
|
||||
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 {
|
||||
url = `/preserve/ct/imageUpload?entry=CT&isbankCard=${isbankCard}&isIdCard=${isIdCard}&isPolRecvWay=${isPolRecvWay}`
|
||||
}
|
||||
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
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$toast(this.$validator.errors.all()[0])
|
||||
}
|
||||
},
|
||||
// 获取银行卡列表
|
||||
async getBank() {
|
||||
let data = {
|
||||
operateType: 'claim_bank_type'
|
||||
}
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.van-dialog__confirm {
|
||||
background-color: #e9332e !important;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.surrender-info-container {
|
||||
.cont-info-container {
|
||||
/deep/.van-cell__title,
|
||||
.van-cell__value {
|
||||
flex: auto;
|
||||
text-align: left;
|
||||
}
|
||||
/deep/.van-cell__title {
|
||||
width: 40%;
|
||||
}
|
||||
.van-cell__value {
|
||||
width: 60%;
|
||||
}
|
||||
}
|
||||
.account-info-container {
|
||||
/deep/.van-cell__title {
|
||||
flex: auto;
|
||||
width: 40%;
|
||||
text-align: left;
|
||||
}
|
||||
/deep/.van-cell__value {
|
||||
flex: auto;
|
||||
width: 60%;
|
||||
text-align: left;
|
||||
}
|
||||
.align-items-c {
|
||||
/deep/.van-cell__title {
|
||||
width: 73%;
|
||||
}
|
||||
}
|
||||
}
|
||||
/deep/ .bankCard {
|
||||
width: 120px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
170
src/views/ebiz/preserve/ct/SurrenderTip.vue
Normal file
170
src/views/ebiz/preserve/ct/SurrenderTip.vue
Normal file
@@ -0,0 +1,170 @@
|
||||
<!--联系方式变更协议-->
|
||||
<template>
|
||||
<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 + pdfUrl" class="iframe"></iframe>
|
||||
<van-radio-group v-model="radio" class="pb10 pt20 pl30 pr30 fs14">
|
||||
<van-radio name="1" @click="click">
|
||||
本人确认已阅读
|
||||
<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="isDisable" @click="goNext" v-no-more-click="1000">下一步</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { RadioGroup, Radio, Dialog, NoticeBar } from 'vant'
|
||||
import { changeEdor, queryConfirmDetail } from '@/api/ebiz/preserve/preserve'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
radio: '',
|
||||
// 倒计时时间
|
||||
number: '',
|
||||
// 定时器时间
|
||||
time: '10',
|
||||
// 定时器名称
|
||||
timer: null,
|
||||
isOver: false,
|
||||
// 判断验证码是否开始倒计时
|
||||
Time: true,
|
||||
// 按钮是否可以点击
|
||||
isDisable: true,
|
||||
pdfUrl: '',
|
||||
pdfList: [],
|
||||
customerInfo: JSON.parse(localStorage.getItem('preserve-customerInfo')),
|
||||
policy: JSON.parse(localStorage['preserve-policy']),
|
||||
src: location.origin + '/pdfjs/web/viewer.html?file='
|
||||
}
|
||||
},
|
||||
components: {
|
||||
[RadioGroup.name]: RadioGroup,
|
||||
[Radio.name]: Radio,
|
||||
[Dialog.name]: Dialog,
|
||||
[NoticeBar.name]: NoticeBar
|
||||
},
|
||||
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 time = this.time
|
||||
this.Time = false
|
||||
this.number = `${time}`
|
||||
let timer = setInterval(() => {
|
||||
time--
|
||||
if (time <= 0) {
|
||||
time = 0
|
||||
clearInterval(timer)
|
||||
this.Time = true
|
||||
this.isOver = true
|
||||
}
|
||||
this.number = `${time}`
|
||||
}, 1000)
|
||||
},
|
||||
// 点击阅读时
|
||||
click() {
|
||||
if (this.isOver == false) {
|
||||
Dialog.confirm({
|
||||
title: '提示',
|
||||
message: '该内容涉及您的重大权益,请您仔细阅读',
|
||||
showCancelButton: false
|
||||
}).then(() => {
|
||||
this.radio = ''
|
||||
})
|
||||
}
|
||||
},
|
||||
// 下一步
|
||||
goNext() {
|
||||
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 } = this
|
||||
return { isOver, radio }
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
listenChange(val) {
|
||||
if (val.isOver == true && val.radio !== '') {
|
||||
this.isDisable = false
|
||||
} else {
|
||||
this.isDisable = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.notice {
|
||||
width: 100%;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
z-index: 20;
|
||||
}
|
||||
.iframe {
|
||||
width: 100vw;
|
||||
height: 75vh;
|
||||
}
|
||||
</style>
|
||||
257
src/views/ebiz/preserve/detail/Beneficiary.vue
Normal file
257
src/views/ebiz/preserve/detail/Beneficiary.vue
Normal file
@@ -0,0 +1,257 @@
|
||||
<!--受益人 -->
|
||||
<template>
|
||||
<div class="beneficiary-container">
|
||||
<div h10></div>
|
||||
<div class="fs14 flex justify-content-s pv12 ph15 van-hairline--bottom">
|
||||
<label class="c-gray-dark">被保险人</label>
|
||||
<span class="c-gray-darker">{{ insuredName }}</span>
|
||||
</div>
|
||||
<div class="fs14 pv12 ph15 van-hairline--bottom flex">
|
||||
<label class="c-gray-dark">身故受益人</label>
|
||||
<div class="ml20 c-gray-darker">
|
||||
<van-radio-group :disabled="isDisType" v-model="type" class="flex">
|
||||
<van-radio name="1">法定受益人</van-radio>
|
||||
<van-radio name="2" class="ml10">指定受益人</van-radio>
|
||||
</van-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 受益人列表 -->
|
||||
<div class="fs14 beneficiary-list" v-if="type == 2">
|
||||
<ul>
|
||||
<li class="pv20 ph15 item" v-for="(item, index) in beneficiaries" :key="index">
|
||||
<div class="bg-white p15" @click="detail(item)">
|
||||
<div class="flex justify-content-s c-gray-darker">
|
||||
<div>
|
||||
<img src="@/assets/images/bnf_avatar.png" width="40" height="40" class="radius50 v-middle" />
|
||||
<span class="ml10 c-gray-base">{{ item.name }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<p class="mt20">
|
||||
<span class="c-gray-dark">是被保险人的</span>
|
||||
<span class="ml20">{{ item.relationToInsured | idToText('relationToAppnt') }}</span>
|
||||
</p>
|
||||
<p class="mt10">
|
||||
<span class="c-gray-dark">受益份额</span>
|
||||
<span class="ml35">{{ item.bnfLot }}%</span>
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- <van-dialog
|
||||
v-model="show"
|
||||
title="短信确认"
|
||||
show-cancel-button
|
||||
class="dialog-delete"
|
||||
cancelButtonColor="#4FC6B3"
|
||||
confirmButtonColor="#FFFFFF"
|
||||
@confirm="authConfirm(authCode)"
|
||||
@cancel="clearTimer"
|
||||
>
|
||||
<p class="p10 fs14">向此手机发送验证码确认用户身份</p>
|
||||
<p class="p10 fs14" style="border-bottom: 1px solid #ebedf0;">{{ '15512341234' | Mask }}</p>
|
||||
<van-cell-group class="flex align-items-c pr5 mb15">
|
||||
<van-field maxlength="6" placeholder="请输入手机验证码" v-model="authCode" clearable label-width="0" />
|
||||
<van-button type="danger" plain size="small" class="w160 p0" @click="getAuthCode" :disabled="codeDisabled" v-no-more-click="2000">
|
||||
{{ codeDisabled ? `${countDown}s后重新获取` : '获取验证码' }}
|
||||
</van-button>
|
||||
</van-cell-group>
|
||||
</van-dialog> -->
|
||||
|
||||
<!-- <van-button type="danger" class="bottom-btn" @click="nextStep">提交申请</van-button> -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Field, CellGroup, RadioGroup, Radio, Icon, Dialog } from 'vant'
|
||||
import { progressDetailQuery } from '@/api/ebiz/preserve/preserve'
|
||||
export default {
|
||||
name: 'DetailBeneficiary',
|
||||
components: {
|
||||
[Field.name]: Field,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[RadioGroup.name]: RadioGroup,
|
||||
[Radio.name]: Radio,
|
||||
[Icon.name]: Icon,
|
||||
[Dialog.name]: Dialog
|
||||
},
|
||||
filters: {
|
||||
Mask: function(value) {
|
||||
if (value) {
|
||||
return value.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
|
||||
} else {
|
||||
return ''
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
// let feachData = {
|
||||
// surrenderDTOList: [
|
||||
// {
|
||||
// surrenderId: '',
|
||||
// edorapplyNo: '',
|
||||
// surrenderType: '2',
|
||||
// bnfDTOs: []
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
return {
|
||||
// show: false, // 获取短信验证码
|
||||
// codeDisabled: false, // 获取验证码按钮是否禁用
|
||||
// timeId: null, // 计时器ID
|
||||
// countDown: 60, // 倒计时
|
||||
// authCode: '', // 验证码
|
||||
// feachData: feachData,
|
||||
type: '',
|
||||
isDisType: true,
|
||||
policy: null,
|
||||
insuredName: '', //被保险人
|
||||
beneficiaries: [] // 指定受益人列表
|
||||
}
|
||||
},
|
||||
created() {
|
||||
progressDetailQuery({
|
||||
surrenderType : 2,
|
||||
surrenderId : this.$route.params.surrenderId
|
||||
})
|
||||
.then(res => {
|
||||
if(res.result == '0'){
|
||||
this.policy = res.content.policyListDTOList[0]
|
||||
this.insuredName = this.policy.insuredName
|
||||
this.beneficiaries = res.content.bnfDTOs
|
||||
this.type = this.beneficiaries[0].bnfType
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
.catch( (err) => {
|
||||
console.log(err);
|
||||
})
|
||||
// 获取保单列表存储的数据
|
||||
// this.policy = JSON.parse(localStorage['preserve-policy'])
|
||||
// this.insuredName = this.policy.insuredName
|
||||
// this.type = this.policy.bnfDTOs[0].bnfType
|
||||
// this.beneficiaries = this.policy.bnfDTOs
|
||||
},
|
||||
mounted() {},
|
||||
methods: {
|
||||
//告知信息
|
||||
// nextStep() {
|
||||
// this.showAuth()
|
||||
// },
|
||||
detail(item) {
|
||||
// edit=0
|
||||
localStorage["preserve-userInfo"] = JSON.stringify(item)
|
||||
let path = '/preserve/detail/BeneficiaryInfo'
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#' + path
|
||||
},
|
||||
routerInfo: {
|
||||
path: path
|
||||
}
|
||||
})
|
||||
},
|
||||
// 显示验证码 van-dialog
|
||||
// showAuth() {
|
||||
// this.show = true
|
||||
// },
|
||||
// // 获取短信验证码
|
||||
// getAuthCode() {
|
||||
// this.codeDisabled = true
|
||||
// //倒计时
|
||||
// this.timeId = setInterval(() => {
|
||||
// this.countDown--
|
||||
// if (this.countDown <= 0) {
|
||||
// window.clearInterval(this.timeId)
|
||||
// this.codeDisabled = false
|
||||
// this.countDown = 60
|
||||
// }
|
||||
// }, 1000)
|
||||
|
||||
// getAuthCode({
|
||||
// operateType: 'appntInfoEntry',
|
||||
// sessionId: '',
|
||||
// validateCode: '',
|
||||
// operateCode: this.customerMobile,
|
||||
// system: '',
|
||||
// operateCodeType: '0'
|
||||
// }).then(res => {
|
||||
// if (res.result == 0) {
|
||||
// this.sessionId = res.sessionId
|
||||
// } else {
|
||||
// this.$toast({
|
||||
// message: res.resultMessage,
|
||||
// onClose: this.showAuth
|
||||
// })
|
||||
// }
|
||||
// })
|
||||
// },
|
||||
// // 验证码确认事件
|
||||
// async authConfirm() {
|
||||
// //清理计时器
|
||||
// this.clearTimer()
|
||||
// this.changeSubmit()
|
||||
// },
|
||||
// // 清理计时器
|
||||
// clearTimer() {
|
||||
// window.clearInterval(this.timeId)
|
||||
// this.timeId = null
|
||||
// this.countDown = 60
|
||||
// this.codeDisabled = false
|
||||
// },
|
||||
// //提交变更申请
|
||||
// async changeSubmit() {
|
||||
// if (!this.sessionId) {
|
||||
// this.$toast({
|
||||
// message: '请先获取验证码',
|
||||
// onClose: this.showAuth
|
||||
// })
|
||||
// return
|
||||
// }
|
||||
// let res = await autchCodeCheck({
|
||||
// smsId: this.sessionId,
|
||||
// code: this.authCode
|
||||
// })
|
||||
// if (res.result == 0) {
|
||||
// this.$jump({
|
||||
// flag: 'h5',
|
||||
// extra: {
|
||||
// url: location.origin + `/#/preserve/submitResult`,
|
||||
// backToFirst: '1'
|
||||
// },
|
||||
// routerInfo: {
|
||||
// path: `/preserve/submitResult`
|
||||
// }
|
||||
// })
|
||||
// } else {
|
||||
// this.show = false
|
||||
// this.$toast({
|
||||
// message: res.resultMessage,
|
||||
// onClose: this.showAuth
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
},
|
||||
// beforeDestroy() {
|
||||
// //清理计时器
|
||||
// this.clearTimer()
|
||||
// }
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.beneficiary-container {
|
||||
.add-btn {
|
||||
width: 80%;
|
||||
margin: 20px auto;
|
||||
border: 1px dashed #999;
|
||||
}
|
||||
.beneficiary-list {
|
||||
margin-bottom: 65px;
|
||||
}
|
||||
.item {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
286
src/views/ebiz/preserve/detail/BeneficiaryInfo.vue
Normal file
286
src/views/ebiz/preserve/detail/BeneficiaryInfo.vue
Normal file
@@ -0,0 +1,286 @@
|
||||
<template>
|
||||
<div class="add-beneficiary-container pb50">
|
||||
<!-- 基本信息 -->
|
||||
<van-cell-group>
|
||||
<van-field
|
||||
:value="userInfo.relationToInsured | idToText('relationToAppnt')"
|
||||
required
|
||||
readonly
|
||||
label="是被保险人的"
|
||||
name="是被保险人的"
|
||||
right-icon="arrow"
|
||||
placeholder="请选择"
|
||||
v-validate="'required'"
|
||||
/>
|
||||
<customer-picker
|
||||
v-validate="'required|name'"
|
||||
name="姓名"
|
||||
label="姓名"
|
||||
required
|
||||
:value.sync="userInfo.name"
|
||||
:parentShowPicker.sync="customerShowPicker"
|
||||
readonly
|
||||
></customer-picker>
|
||||
<van-field
|
||||
:value="userInfo.idType | idToText('idType')"
|
||||
v-validate="'required'"
|
||||
readonly
|
||||
required
|
||||
label="证件类型"
|
||||
name="证件类型"
|
||||
right-icon="arrow"
|
||||
placeholder="请选择"
|
||||
/>
|
||||
<van-field
|
||||
v-model="userInfo.idNo"
|
||||
label="证件号码"
|
||||
name="证件号码"
|
||||
required
|
||||
readonly
|
||||
placeholder="请输入"
|
||||
maxlength="18"
|
||||
clearable
|
||||
v-validate="'required'"
|
||||
></van-field>
|
||||
<!-- <FieldDatePicter
|
||||
:v-validate="{ required: effectiveDateRequired }"
|
||||
label="证件起始日期"
|
||||
name="证件起始日期"
|
||||
:required="isRequired"
|
||||
:defaultDate="new Date()"
|
||||
:value.sync="userInfo.certificateValidate"
|
||||
type="date"
|
||||
@confirm="onDateConfirm($event, '1')"
|
||||
ref="certificateValidate"
|
||||
:flag="certificateValidateShow"
|
||||
:readonly="idLimit"
|
||||
></FieldDatePicter> -->
|
||||
<FieldDatePicter
|
||||
:v-validate="{ required: effectiveDateRequired }"
|
||||
label="证件截止日期"
|
||||
name="证件截止日期"
|
||||
:required="isRequired"
|
||||
:defaultDate="new Date()"
|
||||
:value.sync="userInfo.effectiveDate"
|
||||
type="date"
|
||||
@confirm="onDateConfirm($event, '1')"
|
||||
ref="effectiveDate"
|
||||
:flag="effectiveDateShow"
|
||||
readonly
|
||||
></FieldDatePicter>
|
||||
<div class="border-bt relative fs14 p10 flex align-center">
|
||||
<van-checkbox v-model="userInfo.effectiveDateType" class="fr" :disabled="true">长期</van-checkbox>
|
||||
</div>
|
||||
<select-radio :radios="sexRadio" disabled required label="性别" :value.sync="userInfo.sex"></select-radio>
|
||||
<van-field
|
||||
:value="userInfo.nationality | idToText('nativeplace')"
|
||||
readonly
|
||||
label="国家/地区"
|
||||
name="国家/地区"
|
||||
required
|
||||
v-validate="'required'"
|
||||
right-icon="arrow"
|
||||
placeholder="请选择"
|
||||
/>
|
||||
<van-field
|
||||
v-model="userInfo.bnfOrder"
|
||||
required
|
||||
readonly
|
||||
label="受益顺序"
|
||||
name="受益顺序"
|
||||
placeholder="请输入"
|
||||
v-validate="'required|onlyNumber'"
|
||||
maxlength="1"
|
||||
/>
|
||||
<van-field
|
||||
v-model="userInfo.bnfLot"
|
||||
label="受益比例(%)"
|
||||
name="受益比例"
|
||||
placeholder="请输入"
|
||||
required
|
||||
readonly
|
||||
v-validate="'required|onlyNumber'"
|
||||
maxlength="3"
|
||||
clearable
|
||||
/>
|
||||
|
||||
<template v-if="false">
|
||||
<van-field
|
||||
v-model="userInfo.mobile"
|
||||
clearable
|
||||
label="联系电话"
|
||||
name="联系电话"
|
||||
required
|
||||
readonly
|
||||
placeholder="请输入"
|
||||
v-validate="'required|mobile'"
|
||||
maxlength="11"
|
||||
/>
|
||||
<van-field
|
||||
v-model="areaName"
|
||||
readonly
|
||||
label="联系地址"
|
||||
name="联系地址"
|
||||
required
|
||||
right-icon="arrow"
|
||||
placeholder="请选择"
|
||||
v-validate="'required'"
|
||||
@click="chooseArea"
|
||||
/>
|
||||
<van-field v-model="userInfo.village" label="" readonly name="详细地址" placeholder="请输入详细地址" v-validate="'required'" clearable maxlength="30" />
|
||||
<van-field v-model="userInfo.email" required readonly label="电子邮箱" name="电子邮箱" placeholder="请输入" v-validate="'required|email'" clearable />
|
||||
<occupation-picker
|
||||
:value.sync="userInfo.occupationCode"
|
||||
:chooseName.sync="userInfo.occupationName"
|
||||
:lifeGrade.sync="userInfo.lifeGrade"
|
||||
:healthGrade.sync="userInfo.healthGrade"
|
||||
clearable
|
||||
label="职业类别"
|
||||
name="职业类别"
|
||||
required
|
||||
v-validate="'required'"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
:parentShowPicker.sync="occupationShowPicker"
|
||||
@on-choose="chooseOccupation"
|
||||
/>
|
||||
</template>
|
||||
</van-cell-group>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Field, CellGroup, Checkbox, Popup, Picker, Area } from 'vant'
|
||||
import SelectRadio from '@/components/ebiz/SelectRadio'
|
||||
import FieldDatePicter from '@/components/ebiz/FieldDatePicter'
|
||||
import OccupationPicker from '@/components/ebiz/occipation/OccupationPicker'
|
||||
import DataDictionary from '@/assets/js/utils/data-dictionary'
|
||||
import areaList from '@/assets/js/utils/area'
|
||||
import getAreaName from '@/assets/js/utils/get-area-name'
|
||||
import utilsAge from '@/assets/js/utils/age'
|
||||
import IdentityCardScan from '@/components/ebiz/sale/IdentityCardScan'
|
||||
import CustomerPicker from '@/components/ebiz/customer/CustomerPicker'
|
||||
import idNoCheck from '@/assets/js/utils/idNoCheck'
|
||||
import { idToData } from '../js/verification'
|
||||
import { selectComp } from '../js/methods'
|
||||
let relationToInsured = DataDictionary.relationToAppnt
|
||||
|
||||
export default {
|
||||
name: 'beneficiaryInfoAdd',
|
||||
components: {
|
||||
[SelectRadio.name]: SelectRadio,
|
||||
[FieldDatePicter.name]: FieldDatePicter,
|
||||
[OccupationPicker.name]: OccupationPicker,
|
||||
[Field.name]: Field,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Checkbox.name]: Checkbox,
|
||||
[Popup.name]: Popup,
|
||||
[Picker.name]: Picker,
|
||||
[Area.name]: Area,
|
||||
[IdentityCardScan.name]: IdentityCardScan,
|
||||
[CustomerPicker.name]: CustomerPicker
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
effectiveDateTypeAble: true, //长期按钮是否禁用
|
||||
isScan: false, //是否显示证件扫描组件
|
||||
sexRadio: [
|
||||
{
|
||||
label: '男',
|
||||
value: '0'
|
||||
},
|
||||
{
|
||||
label: '女',
|
||||
value: '1'
|
||||
}
|
||||
],
|
||||
currentPopupIndex: '',
|
||||
relationToAppnt: '',
|
||||
popupShow: false,
|
||||
areaShow: false,
|
||||
pickerType: undefined,
|
||||
columns: [],
|
||||
valueKey: 'text',
|
||||
nationality: '',
|
||||
idType: '居民身份证',
|
||||
degree: '',
|
||||
socialSecurity: '',
|
||||
taxIdentity: '',
|
||||
areaName: '',
|
||||
areaValue: '110101',
|
||||
effectiveDateRequired: true, //证件截止日期是否需要校验
|
||||
effectiveDateShow: true, //证件截止日期是否可以选择
|
||||
marriage: '',
|
||||
isRequired: '', //长期前是否有*
|
||||
userInfo: {
|
||||
bnfId: '',
|
||||
bnfType: '2',
|
||||
bnfGrade: '',
|
||||
name: '',
|
||||
sex: '0',
|
||||
nationality: '1',
|
||||
birthday: '',
|
||||
idType: '1',
|
||||
idNo: '',
|
||||
certificateValidate: '',
|
||||
effectiveDate: '',
|
||||
effectiveDateType: false, //是否长期
|
||||
bnfNo: '1',
|
||||
bnfOrder: 1,
|
||||
bnfLot: '',
|
||||
phone: '',
|
||||
province: '',
|
||||
city: '',
|
||||
area: '',
|
||||
postalAddress: '',
|
||||
email: '',
|
||||
occupationCode: '',
|
||||
occupationName: '' // 职业中文
|
||||
},
|
||||
areaList: areaList,
|
||||
occupationShowPicker: false,
|
||||
customerShowPicker: false, //客户列表展示
|
||||
idLimit: false, //证件起止日期是否只读
|
||||
policy: null,
|
||||
bnfDTOs: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.userInfo = JSON.parse(localStorage['preserve-userInfo'])
|
||||
},
|
||||
mounted() {},
|
||||
methods: {
|
||||
chooseOccupation() {
|
||||
this.$jump({
|
||||
flag: 'navigation',
|
||||
extra: {
|
||||
title: '指定受益人信息',
|
||||
hiddenRight: '1'
|
||||
}
|
||||
})
|
||||
this.occupationShowPicker = false
|
||||
},
|
||||
//时间戳格式处理
|
||||
timeStampFormat(timeStamp) {
|
||||
let date = new Date(timeStamp)
|
||||
let year = date.getFullYear()
|
||||
let month = date.getMonth() + 1
|
||||
month = month.toString().padStart(2, '0')
|
||||
let day = date.getDate()
|
||||
day = day.toString().padStart(2, '0')
|
||||
return `${year}-${month}-${day}`
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.add-beneficiary-container {
|
||||
.title {
|
||||
font-weight: 600;
|
||||
border-bottom: 1px solid #dadada;
|
||||
}
|
||||
/deep/.van-checkbox {
|
||||
margin-left: auto;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
159
src/views/ebiz/preserve/detail/Contact.vue
Normal file
159
src/views/ebiz/preserve/detail/Contact.vue
Normal file
@@ -0,0 +1,159 @@
|
||||
<!-- 查看详情-联系方式变更 -->
|
||||
<template>
|
||||
<div class="basic-info-container pb45">
|
||||
<!-- 基本信息 -->
|
||||
<van-cell-group class="mt10">
|
||||
<p style="border-bottom: 1px solid #ebedf0;" class="fs15 fwb pl10 pv12">基本信息</p>
|
||||
<van-field label="姓名" required :value="customerInfo.customerName" readonly />
|
||||
<van-field
|
||||
v-model="customerInfo.customerMobile"
|
||||
|
||||
readonly
|
||||
required
|
||||
label="移动电话"
|
||||
name="移动电话"
|
||||
v-validate="'required|mobile'"
|
||||
maxlength="11"
|
||||
/>
|
||||
<van-field
|
||||
v-model="homeName"
|
||||
readonly
|
||||
required
|
||||
label="联系地址"
|
||||
name="联系地址"
|
||||
right-icon="arrow"
|
||||
v-validate="'required'"
|
||||
/>
|
||||
<van-field v-model="customerInfo.address" readonly label="" name="详细地址" v-validate="'required'" maxlength="30" />
|
||||
<van-field
|
||||
v-model="customerInfo.zipCode"
|
||||
label="邮编"
|
||||
readonly
|
||||
required
|
||||
name="邮编"
|
||||
v-validate="'required|zipCode'"
|
||||
maxlength="6"
|
||||
|
||||
/>
|
||||
<van-field v-model="customerInfo.customerEmail" readonly label="电子邮箱" name="电子邮箱" v-validate="'email'" />
|
||||
<van-field v-model="customerInfo.homePhone" readonly label="固定电话" name="固定电话" />
|
||||
<van-field v-model="surrenderResult" readonly label="返回原因" name="返回原因" />
|
||||
</van-cell-group>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Field, CellGroup, Popup, Picker, Area } from 'vant'
|
||||
import { progressDetailQuery } from '@/api/ebiz/preserve/preserve'
|
||||
import areaList from '@/assets/js/utils/area'
|
||||
import getAreaName from '@/assets/js/utils/get-area-name'
|
||||
export default {
|
||||
name: 'DetailContact',
|
||||
components: {
|
||||
[Field.name]: Field,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Popup.name]: Popup,
|
||||
[Picker.name]: Picker,
|
||||
[Area.name]: Area
|
||||
},
|
||||
data() {
|
||||
let feachData = {
|
||||
surrenderDTOList: [
|
||||
{
|
||||
surrenderId: '',
|
||||
edorapplyNo: '',
|
||||
surrenderType: '1',
|
||||
customerInfoDTOList: []
|
||||
}
|
||||
]
|
||||
},
|
||||
customerInfo = {
|
||||
surrenderId: '',
|
||||
customerNo: '',
|
||||
customerType: '',
|
||||
customerName: '',
|
||||
idType: '',
|
||||
idNo: '',
|
||||
customerMobile: '',
|
||||
customerEmail: '',
|
||||
province: '',
|
||||
city: '',
|
||||
area: '',
|
||||
address: '',
|
||||
zipCode: '',
|
||||
homePhone: '',
|
||||
isNewInfo: ''
|
||||
}
|
||||
feachData.surrenderDTOList[0].customerInfoDTOList.push(customerInfo)
|
||||
return {
|
||||
homeName: '',
|
||||
homeShow: false,
|
||||
areaList,
|
||||
feachData,
|
||||
customerInfo,
|
||||
surrenderResult : ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
progressDetailQuery({
|
||||
surrenderType : 1,
|
||||
surrenderId : this.$route.params.surrenderId
|
||||
})
|
||||
.then(res => {
|
||||
console.log(res);
|
||||
if(res.result == '0'){
|
||||
this.customerInfo = res.content.customerInfoDTOList[0]
|
||||
this.surrenderResult = res.content.surrenderResult
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
.catch( (err) => {
|
||||
console.log(err);
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
//区域选择
|
||||
sureArea(area) {
|
||||
this.homeName = getAreaName(area)
|
||||
;[this.customerInfo.province, this.customerInfo.city, this.customerInfo.area] = [area[0].code, area[1].code, area[2].code]
|
||||
this.homeShow = false
|
||||
},
|
||||
// 下一步
|
||||
nextStep() {
|
||||
//表单校验
|
||||
this.$validator.validate().then(valid => {
|
||||
if (true == valid) {
|
||||
edorChange(this.feachData)
|
||||
.then(res => {
|
||||
if (res.result == 0) {
|
||||
localStorage['preserve-customerInfo-old'] = localStorage['preserve-customerInfo']
|
||||
localStorage['preserve-customerInfo'] = JSON.stringify(this.customerInfo)
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/preserve/HandleResult?entry=contact'
|
||||
},
|
||||
routerInfo: '/preserve/HandleResult?entry=contact'
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err)
|
||||
})
|
||||
} else {
|
||||
this.$toast(this.$validator.errors.all()[0])
|
||||
return
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.basic-info-container {
|
||||
}
|
||||
</style>
|
||||
234
src/views/ebiz/preserve/detail/CoolingOffperiodSurrender.vue
Normal file
234
src/views/ebiz/preserve/detail/CoolingOffperiodSurrender.vue
Normal file
@@ -0,0 +1,234 @@
|
||||
<!--退保-保全代办确认页-->
|
||||
<template>
|
||||
<div class="surrender-confirmation-container mb10">
|
||||
<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-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="开户银行">
|
||||
<div class="red" slot="default">{{ accountInfo.newBank }}</div>
|
||||
</van-cell>
|
||||
<van-cell title="银行账号">
|
||||
<div class="red" slot="default">{{ accountInfo.newBankNo }}</div>
|
||||
</van-cell>
|
||||
<van-cell title="开户行所在地" :value="accountInfo.accountName" />
|
||||
<van-cell title="退保原因" :value="accountInfo.accountName" />
|
||||
</van-cell-group>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<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'
|
||||
export default {
|
||||
name: 'Surrender',
|
||||
components: {
|
||||
[Field.name]: Field,
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Dialog.name]: Dialog
|
||||
},
|
||||
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: '' //签名状态
|
||||
}
|
||||
},
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
this.init()
|
||||
},
|
||||
methods: {
|
||||
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
|
||||
})
|
||||
this.newBank = item.bankName
|
||||
this.newBankNo = item.bankNo
|
||||
}
|
||||
})
|
||||
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
|
||||
}
|
||||
sessionStorage.customerSign = JSON.stringify(customerSign)
|
||||
}
|
||||
this.documentStatus = res.content.signList[0].documentStatus
|
||||
this.getOrderDetail({
|
||||
contNo: this.policyList[0].contNo
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
},
|
||||
//获取保单详情
|
||||
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)
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.surrender-confirmation-container {
|
||||
.cont-info-container {
|
||||
/deep/.van-cell__title,
|
||||
.van-cell__value {
|
||||
flex: auto;
|
||||
text-align: left;
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
258
src/views/ebiz/preserve/detail/Renewal.vue
Normal file
258
src/views/ebiz/preserve/detail/Renewal.vue
Normal file
@@ -0,0 +1,258 @@
|
||||
<!--续期账号变更-保全代办确认页-->
|
||||
<template>
|
||||
<div class="renewal-confirmation-container pb50">
|
||||
<van-cell-group class="mt10 cont-info-container">
|
||||
<!-- 保单信息 -->
|
||||
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">保单信息</p>
|
||||
<van-collapse v-model="activeNames" @change="collapseChange">
|
||||
<div v-for="(item, index) in list" :key="index">
|
||||
<van-collapse-item @click.native="changeCollapse(111)" v-no-more-click="2000" :title="`保单号:${item.contNo}`" :name="index">
|
||||
<!-- <div slot="value" class="text-right collapse-value red fs12">{{ item.surrenderStatus == '5' ? '已撤销' : '' }}</div> -->
|
||||
<van-cell title="产品名称" :value="item.riskName" />
|
||||
<van-cell title="投保人" :value="item.appntName" />
|
||||
<van-cell title="被保险人" :value="item.insuredName" />
|
||||
<van-cell title="交费方式" :value="item.insuPayType | idToText('payIntv')" />
|
||||
<van-cell title="保单生效日期" :value="item.cvaliDate" />
|
||||
<van-cell title="保单状态" :value="item.contState | idToText('contState')" />
|
||||
<van-cell title="开户人姓名" :value="item.accountName" />
|
||||
<van-cell title="原银行名称" :value="item.bankCode | idToText('preserveBank')" />
|
||||
<van-cell title="原银行账号" :value="item.bankNo" />
|
||||
</van-collapse-item>
|
||||
</div>
|
||||
</van-collapse>
|
||||
</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="list[0].accountName" v-if="list.length" />
|
||||
<van-cell title="新开户银行">
|
||||
<div class="red" slot="default">{{ newBank }}</div>
|
||||
</van-cell>
|
||||
<van-cell title="新银行账号">
|
||||
<div class="red" slot="default">{{ newBankNo }}</div>
|
||||
</van-cell>
|
||||
</van-cell-group>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Field, Cell, Collapse, CollapseItem, CellGroup, Dialog } from 'vant'
|
||||
import { customerInfoShare, orderDetail, authCode, changeStatus, queryCancel } from '@/api/ebiz/preserve/preserve'
|
||||
import { checkSignInvalid } from '@/api/ebiz/sale/sale'
|
||||
export default {
|
||||
name: 'RenewalConfirmation',
|
||||
components: {
|
||||
[Field.name]: Field,
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Collapse.name]: Collapse,
|
||||
[CollapseItem.name]: CollapseItem,
|
||||
[Dialog.name]: Dialog
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
show: false, // 获取短信验证码
|
||||
codeDisabled: false, // 获取验证码按钮是否禁用
|
||||
timeId: null, // 计时器ID
|
||||
countDown: 60, // 倒计时
|
||||
authCode: '', // 验证码
|
||||
activeNames: [0],
|
||||
src: this.$assetsUrl + 'images/u6490.png', // 图片路径
|
||||
policyList: [],
|
||||
list: [
|
||||
// {
|
||||
// contNo: 'HL052019110010001047',
|
||||
// riskName: '鼎诚人寿重大疾病险',
|
||||
// appntName: '嘿嘿',
|
||||
// insuredName: '狗乐',
|
||||
// insuPayType: '11',
|
||||
// cvaliDate: '2020-12-31',
|
||||
// contState: '001',
|
||||
// accountName: '彭小芳',
|
||||
// bankCode: '102',
|
||||
// bankNo: '374198274319824389127341'
|
||||
// },
|
||||
// {
|
||||
// contNo: 'HL052019110010001047',
|
||||
// riskName: '鼎诚人寿重大疾病险',
|
||||
// appntName: '嘿嘿',
|
||||
// insuredName: '狗乐',
|
||||
// insuPayType: '11',
|
||||
// cvaliDate: '2020-12-31',
|
||||
// contState: '001',
|
||||
// accountName: '彭小芳',
|
||||
// bankCode: '102',
|
||||
// bankNo: '374198274319824389127341'
|
||||
// }
|
||||
],
|
||||
newBank: '', //新开户银行
|
||||
newBankNo: '', //新银行卡号
|
||||
customerMobile: '',
|
||||
sessionId: '',
|
||||
nextDisabled: true,
|
||||
signInvalid: '',
|
||||
isSigned: false, //是否签完名了
|
||||
submitForbidden: false, //是否提交申请失败
|
||||
linkInvalid: false, //链接是否失效
|
||||
isCanceled: false, //是否撤销
|
||||
documentStatus: '' //签名状态
|
||||
}
|
||||
},
|
||||
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
|
||||
|
||||
this.init()
|
||||
},
|
||||
methods: {
|
||||
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
|
||||
})
|
||||
this.newBank = item.bankName
|
||||
this.newBankNo = item.bankNo
|
||||
}
|
||||
})
|
||||
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
|
||||
}
|
||||
sessionStorage.customerSign = JSON.stringify(customerSign)
|
||||
}
|
||||
this.documentStatus = res.content.signList[0].documentStatus
|
||||
this.getOrderDetail({
|
||||
contNo: this.policyList[0].contNo
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
// }
|
||||
},
|
||||
changeCollapse(params) {
|
||||
console.log(params)
|
||||
},
|
||||
//展开保单详情
|
||||
collapseChange(val) {
|
||||
if (val.length) {
|
||||
let flag = true
|
||||
this.list.forEach(item => {
|
||||
if (item.contNo == this.policyList[val[val.length - 1]].contNo && item.riskName) {
|
||||
return (flag = false)
|
||||
}
|
||||
})
|
||||
if (flag) {
|
||||
this.getOrderDetail({
|
||||
contNo: this.policyList[val[val.length - 1]].contNo
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
//获取保单详情
|
||||
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)
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.renewal-confirmation-container {
|
||||
.cont-info-container {
|
||||
/deep/.van-cell__title,
|
||||
.van-cell__value {
|
||||
flex: auto;
|
||||
text-align: left;
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
234
src/views/ebiz/preserve/detail/Surrender.vue
Normal file
234
src/views/ebiz/preserve/detail/Surrender.vue
Normal file
@@ -0,0 +1,234 @@
|
||||
<!--退保-保全代办确认页-->
|
||||
<template>
|
||||
<div class="surrender-confirmation-container mb10">
|
||||
<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-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="开户银行">
|
||||
<div class="red" slot="default">{{ accountInfo.newBank }}</div>
|
||||
</van-cell>
|
||||
<van-cell title="银行账号">
|
||||
<div class="red" slot="default">{{ accountInfo.newBankNo }}</div>
|
||||
</van-cell>
|
||||
<van-cell title="开户行所在地" :value="accountInfo.accountName" />
|
||||
<van-cell title="退保原因" :value="accountInfo.accountName" />
|
||||
</van-cell-group>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<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'
|
||||
export default {
|
||||
name: 'Surrender',
|
||||
components: {
|
||||
[Field.name]: Field,
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Dialog.name]: Dialog
|
||||
},
|
||||
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: '' //签名状态
|
||||
}
|
||||
},
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
this.init()
|
||||
},
|
||||
methods: {
|
||||
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
|
||||
})
|
||||
this.newBank = item.bankName
|
||||
this.newBankNo = item.bankNo
|
||||
}
|
||||
})
|
||||
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
|
||||
}
|
||||
sessionStorage.customerSign = JSON.stringify(customerSign)
|
||||
}
|
||||
this.documentStatus = res.content.signList[0].documentStatus
|
||||
this.getOrderDetail({
|
||||
contNo: this.policyList[0].contNo
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
},
|
||||
//获取保单详情
|
||||
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)
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.surrender-confirmation-container {
|
||||
.cont-info-container {
|
||||
/deep/.van-cell__title,
|
||||
.van-cell__value {
|
||||
flex: auto;
|
||||
text-align: left;
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
165
src/views/ebiz/preserve/filters/index.js
Normal file
165
src/views/ebiz/preserve/filters/index.js
Normal file
@@ -0,0 +1,165 @@
|
||||
import Common from '@/assets/js/common'
|
||||
import dataDic from '@/views/ebiz/preserve/js/data-dictionary'
|
||||
|
||||
/*
|
||||
* 把其他filter放到index.js里面一起引入
|
||||
*/
|
||||
export default {
|
||||
m2km(value) {
|
||||
return Common.m2km(value)
|
||||
},
|
||||
|
||||
/**
|
||||
* 除法
|
||||
* @param {Number} dividend 被除数
|
||||
* @param {Number} divisor 除数
|
||||
* @return {Number} 值
|
||||
*/
|
||||
divide(dividend, divisor) {
|
||||
return Common.divide(dividend, divisor)
|
||||
},
|
||||
|
||||
/**
|
||||
* 保留小数位,替代Number.toFixed()方法,针对于某些数据(16.455)不能做到四舍五入
|
||||
* @param {[type]} value 数值
|
||||
* @param {[type]} num 几位小数
|
||||
* @return {[type]} 值
|
||||
*/
|
||||
toFixed(value, num) {
|
||||
return Common.toFixed(value, num)
|
||||
},
|
||||
|
||||
/**
|
||||
* 如果是小数则保留小数位,默认两位
|
||||
* @param {[type]} value 数值
|
||||
* @param {Number} num 几位小数
|
||||
* @return {[type]} 值
|
||||
*/
|
||||
toFloatFixed(value, num) {
|
||||
Common.toFloatFixed(value, num)
|
||||
},
|
||||
|
||||
/**
|
||||
* 转化成工作时间
|
||||
* @param {[type]} value 值
|
||||
* @return {[type]} [description]
|
||||
*/
|
||||
businessHour(value) {
|
||||
let time = ''
|
||||
if (value) {
|
||||
const arr = value.split(';')
|
||||
time =
|
||||
'星期' +
|
||||
Common.getWeek(arr[0]) +
|
||||
' ~ 星期' +
|
||||
Common.getWeek(arr[1]) +
|
||||
' ' +
|
||||
Common.getTime(arr[2]) +
|
||||
':' +
|
||||
Common.getTime(arr[3]) +
|
||||
' ~ ' +
|
||||
Common.getTime(arr[4]) +
|
||||
':' +
|
||||
Common.getTime(arr[5])
|
||||
}
|
||||
return time
|
||||
},
|
||||
|
||||
isEmptyObject(o) {
|
||||
return Common.isEmptyObject(o)
|
||||
},
|
||||
wan(value) {
|
||||
const isNumber = typeof value === 'number'
|
||||
return isNumber && value / 10000
|
||||
},
|
||||
// 除以100保留小数位
|
||||
divide100(value, num = 2, isFill) {
|
||||
let values = Number(value)
|
||||
const regular = /^\d+\.\d+/
|
||||
if (values) {
|
||||
values = values / 100
|
||||
if (regular.test(values)) {
|
||||
return Common.toFixed(values, num)
|
||||
} else {
|
||||
return Common.toFixed(values)
|
||||
}
|
||||
} else {
|
||||
if (isFill) {
|
||||
// 是否需要填充
|
||||
value = 0
|
||||
}
|
||||
}
|
||||
return value
|
||||
},
|
||||
discount(value, position = 0) {
|
||||
let ret = value.split('.')
|
||||
if (position == 0) {
|
||||
ret = ret[0]
|
||||
} else if (position == 1) {
|
||||
ret = ret[1]
|
||||
}
|
||||
return ret
|
||||
},
|
||||
// 数据字典 id 转 text
|
||||
idToText(id, type) {
|
||||
let text = ''
|
||||
dataDic[type].some(item => {
|
||||
if (item.id == id) {
|
||||
text = item.text
|
||||
}
|
||||
})
|
||||
return text
|
||||
},
|
||||
/**
|
||||
* 处理千分位并保留两位小数
|
||||
* @param {[type]} moneyStr 钱
|
||||
* @param {Boolean} flag 是否保留两位小数
|
||||
* @return {[type]} 值
|
||||
*/
|
||||
// 处理钱的格式
|
||||
moneyFormat(moneyStr, flag = false) {
|
||||
// let str = (Math.round(moneyStr * 100) / 100).toString()
|
||||
// let pointIdx = str.indexOf('.')
|
||||
// if (pointIdx < 0) {
|
||||
// str = str.replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
|
||||
// pointIdx = str.length
|
||||
// str += '.'
|
||||
// } else {
|
||||
// let int = str.substr(0, pointIdx)
|
||||
// int.replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
|
||||
// }
|
||||
// while (str.length <= pointIdx + 2) {
|
||||
// str += '0'
|
||||
// }
|
||||
|
||||
// return str
|
||||
|
||||
//摘自国富群:这个在报文转换的时候,核心返回“—”的时候,直接返回空。 @于维琦(于维琦) 前端如果保额为空,直接展示“—”@皮伟(皮伟) 你跟她碰一下怎么改
|
||||
if (moneyStr === null) {
|
||||
return '—'
|
||||
}
|
||||
let str = ''
|
||||
if (flag) {
|
||||
str = (moneyStr + '').replace(/\d{1,3}(?=(\d{3})+$)/g, '$&,')
|
||||
} else {
|
||||
str = parseFloat(moneyStr)
|
||||
.toFixed(2)
|
||||
.replace(/(\d)(?=(\d{3})+\.)/g, '$1,')
|
||||
}
|
||||
return str
|
||||
},
|
||||
// 处理保额的格式化
|
||||
amtFormat(moneyStr) {
|
||||
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 ''
|
||||
}
|
||||
}
|
||||
}
|
||||
184
src/views/ebiz/preserve/js/data-dictionary.js
Normal file
184
src/views/ebiz/preserve/js/data-dictionary.js
Normal file
@@ -0,0 +1,184 @@
|
||||
// 保全相关的数据字典
|
||||
export default {
|
||||
//保全类型
|
||||
preserveType: [
|
||||
{
|
||||
id: 'BB',
|
||||
text: '客户基本资料变更'
|
||||
},
|
||||
{
|
||||
id: 'BC',
|
||||
text: '受益人变更'
|
||||
},
|
||||
{
|
||||
id: 'CT',
|
||||
text: '退保'
|
||||
},
|
||||
{
|
||||
id: 'PC',
|
||||
text: '续期账号变更'
|
||||
},
|
||||
{
|
||||
id: 'WT',
|
||||
text: '犹豫期退保'
|
||||
}
|
||||
],
|
||||
preserveState: [
|
||||
{
|
||||
id: '0',
|
||||
text: '确认生效'
|
||||
},
|
||||
{
|
||||
id: '1',
|
||||
text: '录入完成'
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
text: '申请确认'
|
||||
},
|
||||
{
|
||||
id: '3',
|
||||
text: '等待录入'
|
||||
},
|
||||
{
|
||||
id: '4',
|
||||
text: '预期终止'
|
||||
},
|
||||
{
|
||||
id: '5',
|
||||
text: '审批修改'
|
||||
},
|
||||
{
|
||||
id: '6',
|
||||
text: '确认未生效'
|
||||
},
|
||||
{
|
||||
id: '7',
|
||||
text: '保全撤销'
|
||||
},
|
||||
{
|
||||
id: '8',
|
||||
text: '核保终止'
|
||||
},
|
||||
{
|
||||
id: '9',
|
||||
text: '审批终止'
|
||||
},
|
||||
{
|
||||
id: 'a',
|
||||
text: '审批通过'
|
||||
},
|
||||
{
|
||||
id: 'b',
|
||||
text: '保全回退'
|
||||
},
|
||||
{
|
||||
id: 'c',
|
||||
text: '保全终止'
|
||||
},
|
||||
{
|
||||
id: 'd',
|
||||
text: '强制终止'
|
||||
}
|
||||
],
|
||||
//退款账户列表
|
||||
accountList: [{ id: '1', text: '原银行账户' }, { id: '2', text: '新银行账户' }],
|
||||
//退款原因列表
|
||||
surrenderReasonList: [
|
||||
{ id: '1', text: '个人经济原因,无力负担保费' },
|
||||
{ id: '2', text: '对险种不满意' },
|
||||
{ id: '3', text: '对业务员不满意' },
|
||||
{ id: '4', text: '对公司服务不满意' },
|
||||
{ id: '5', text: '人情投保' },
|
||||
{ id: '6', text: '其他' }
|
||||
],
|
||||
// 续期缴费方式 1-现金、4-银行自动转账、8-银行回单 A-支付宝 W-微信 P-POS收费
|
||||
pcPayMode: [
|
||||
{
|
||||
label: '现金',
|
||||
type: '1'
|
||||
},
|
||||
{
|
||||
label: '银行自动转账',
|
||||
id: '4'
|
||||
},
|
||||
{
|
||||
label: '银行回单',
|
||||
id: '8'
|
||||
},
|
||||
{
|
||||
label: '支付宝',
|
||||
id: 'A'
|
||||
},
|
||||
{
|
||||
label: '微信',
|
||||
id: 'W'
|
||||
},
|
||||
{
|
||||
label: 'POS收费',
|
||||
id: 'P'
|
||||
}
|
||||
],
|
||||
// 银行卡类型
|
||||
edorBankType: [
|
||||
{
|
||||
id: 'ABC',
|
||||
text: '农业银行'
|
||||
},
|
||||
{
|
||||
id: 'BOC',
|
||||
text: '中国银行'
|
||||
},
|
||||
{
|
||||
id: 'BOCOM',
|
||||
text: '交通银行'
|
||||
},
|
||||
{
|
||||
id: 'CCB',
|
||||
text: '建设银行'
|
||||
},
|
||||
{
|
||||
id: 'CEB',
|
||||
text: '光大银行'
|
||||
},
|
||||
{
|
||||
id: 'CIB',
|
||||
text: '兴业银行'
|
||||
},
|
||||
{
|
||||
id: 'ICBC',
|
||||
text: '工商银行'
|
||||
},
|
||||
{
|
||||
id: 'PSBC',
|
||||
text: '邮储银行'
|
||||
},
|
||||
{
|
||||
id: 'CMB',
|
||||
text: '招商银行'
|
||||
}
|
||||
]
|
||||
/*
|
||||
preserveUserType: {
|
||||
1: '联系方式变更保存的客户',
|
||||
2: '受益人变更保存的客户',
|
||||
3: '续期账号变更保存的客户',
|
||||
4: '犹退保存的客户',
|
||||
5: '退保保存的客户'
|
||||
},
|
||||
preserveAccountType: {
|
||||
1: '联系方式变更保存的客户',
|
||||
2: '受益人变更保存的客户',
|
||||
3: '续期账号变更保存的客户',
|
||||
4: '犹退保存的客户',
|
||||
5: '退保保存的客户'
|
||||
},
|
||||
route: {
|
||||
1: 'Contact',
|
||||
2: 'Beneficiary',
|
||||
3: 'Renewal',
|
||||
4: 'CoolingOffperiodSurrender',
|
||||
5: 'Surrender'
|
||||
}
|
||||
*/
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
//点击弹出组件
|
||||
import DataDictionary from '@/assets/js/utils/data-dictionary'
|
||||
|
||||
export function selectComp(that, index, type = '') {
|
||||
that.currentPopupIndex = index
|
||||
let title = ''
|
||||
@@ -93,3 +95,28 @@ export function getIdentityInfo(that, data, type) {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 数据字典 id 转 text
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
function idToTextEdor(id, type) {
|
||||
let text = ''
|
||||
DataDictionary[type].some(item => {
|
||||
if (item.id == id) {
|
||||
text = item.label
|
||||
}
|
||||
})
|
||||
return text
|
||||
}
|
||||
|
||||
//json 数组分组
|
||||
function groupBy(array, f) {
|
||||
const groups = {}
|
||||
array.forEach(function(o) {
|
||||
const group = JSON.stringify(f(o))
|
||||
groups[group] = groups[group] || []
|
||||
groups[group].push(o)
|
||||
})
|
||||
return Object.keys(groups).map(function (group) {
|
||||
return groups[group]
|
||||
})
|
||||
}
|
||||
|
||||
4
src/views/ebiz/preserve/js/utils.js
Normal file
4
src/views/ebiz/preserve/js/utils.js
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
export default {
|
||||
|
||||
}
|
||||
104
src/views/ebiz/preserve/pc/AutopayAuthorization.vue
Normal file
104
src/views/ebiz/preserve/pc/AutopayAuthorization.vue
Normal file
@@ -0,0 +1,104 @@
|
||||
<!--自动转账授权书-续期账号变更-->
|
||||
<template>
|
||||
<div class="auto-pay-container">
|
||||
<div class="pb20 pt20">
|
||||
<van-notice-bar :scrollable="false" v-if="time != 0" class="notice">{{ `提示:阅读时长需在${time}秒以上` }}</van-notice-bar>
|
||||
<iframe :src="src + pdfUrl" class="iframe"></iframe>
|
||||
<van-radio-group v-model="radio" class="pb10 pt20 pl30 fs14">
|
||||
<van-radio name="1">
|
||||
本人确认已阅读
|
||||
<span class="green">《国富人寿自动转账授权书》</span>
|
||||
</van-radio>
|
||||
</van-radio-group>
|
||||
<div class="bg-white bottom-btn">
|
||||
<van-button type="danger" size="large" :disabled="isDisabledComplite" @click="next" v-no-more-click="2000">下一步</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { RadioGroup, Radio, Dialog, NoticeBar } from 'vant'
|
||||
// import { preserveSign } from '@/api/ebiz/preserve/preserve'
|
||||
export default {
|
||||
components: {
|
||||
[Radio.name]: Radio,
|
||||
[RadioGroup.name]: RadioGroup,
|
||||
[Dialog.name]: Dialog,
|
||||
[NoticeBar.name]: NoticeBar
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
radio: '',
|
||||
time: '10', //定时器时间
|
||||
timer: null, //定时器名称
|
||||
isDisabledComplite: true //完成按钮是否可以点击
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.timeOut()
|
||||
},
|
||||
mounted() {
|
||||
document.body.style.backgroundColor = '#fff'
|
||||
},
|
||||
methods: {
|
||||
// 初始化
|
||||
timeOut() {
|
||||
let timer = setInterval(() => {
|
||||
this.time--
|
||||
if (this.time <= 0) {
|
||||
this.time = 0
|
||||
this.radio = '0'
|
||||
clearInterval(timer)
|
||||
}
|
||||
}, 1000)
|
||||
},
|
||||
// 单选框
|
||||
readConfirm() {
|
||||
console.log(this.radio)
|
||||
if (this.radio == '1') {
|
||||
this.$dialog
|
||||
.alert({
|
||||
title: '提示',
|
||||
className: 'dialog-alert',
|
||||
message: '该内容涉及您的重大权益,请您仔细阅读',
|
||||
confirmButtonColor: '#E9332E'
|
||||
})
|
||||
.then(() => {
|
||||
this.radio = '1'
|
||||
this.isDisabledComplite = false
|
||||
})
|
||||
} else {
|
||||
if (this.radio == '') {
|
||||
this.isDisabledComplite = true
|
||||
}
|
||||
}
|
||||
},
|
||||
next() {}
|
||||
},
|
||||
beforeRouteLeave(to, from, next) {
|
||||
document.body.style.backgroundColor = ''
|
||||
next()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.img {
|
||||
height: 40px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.notice {
|
||||
width: 100%;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
z-index: 20;
|
||||
}
|
||||
.iframe {
|
||||
width: 100vw;
|
||||
height: 80vh;
|
||||
}
|
||||
.signature-confirm-content {
|
||||
text-indent: 2em;
|
||||
line-height: 30px;
|
||||
border-bottom: 1px solid #dadada;
|
||||
}
|
||||
</style>
|
||||
200
src/views/ebiz/preserve/pc/ImageUpload.vue
Normal file
200
src/views/ebiz/preserve/pc/ImageUpload.vue
Normal file
@@ -0,0 +1,200 @@
|
||||
<!--影像信息上传页面-->
|
||||
<template>
|
||||
<div class="image-upload-container">
|
||||
<div class=" pb80">
|
||||
<div class="m20 bg-white">
|
||||
<div>
|
||||
<!-- 银行卡 -->
|
||||
<div v-for="(item, index) in fileList" :key="index">
|
||||
<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="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white bottom-btn">
|
||||
<van-button type="danger" size="large" @click="nextStep" v-no-more-click="2000">下一步</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Cell, CellGroup, Field, Uploader, RadioGroup, Radio, Dialog, Picker, Popup } from 'vant'
|
||||
import { uploadImg } from '@/api/ebiz/sale/sale'
|
||||
import { changeEdor } from '@/api/ebiz/preserve/preserve'
|
||||
export default {
|
||||
components: {
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Field.name]: Field,
|
||||
[Uploader.name]: Uploader,
|
||||
[RadioGroup.name]: RadioGroup,
|
||||
[Radio.name]: Radio,
|
||||
[Dialog.name]: Dialog,
|
||||
[Picker.name]: Picker,
|
||||
[Popup.name]: Popup
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isDisabled: true,
|
||||
id: '',
|
||||
idType: '1',
|
||||
type: '',
|
||||
fileList: [
|
||||
{
|
||||
name: 'bank',
|
||||
label: '银行卡',
|
||||
imageInfoType: '3', // 影像类型
|
||||
subBusinessType: '3', // 影像归属 0 投保人 1 被保人 2 受益人 3 代理人
|
||||
realFileList: [],
|
||||
popList: []
|
||||
}
|
||||
],
|
||||
uploadCheck: {},
|
||||
entry: '',
|
||||
customerInfo: JSON.parse(localStorage.getItem('preserve-customerInfo'))
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// 初始化 上传影像数据
|
||||
},
|
||||
methods: {
|
||||
test(item) {
|
||||
this.uploadCheck = item
|
||||
},
|
||||
afterRead(file) {
|
||||
// 此时可以自行将文件上传至服务器
|
||||
this.$toast.loading({
|
||||
duration: 0,
|
||||
forbidClick: true,
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
let formdata = new FormData()
|
||||
formdata.append('imgPath', this.dataURLtoFile(file.content, file.file.name))
|
||||
uploadImg(formdata).then(res => {
|
||||
this.$toast.clear()
|
||||
if (res.result == '0') {
|
||||
this.uploadCheck.popList.push({ name: file.file.name, imgPath: res.path })
|
||||
console.log(this.fileList)
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 转化base64格式为文件格式
|
||||
dataURLtoFile(dataurl, filename) {
|
||||
//将base64转换为文件
|
||||
var arr = dataurl.split(','),
|
||||
mime = arr[0].match(/:(.*?);/)[1],
|
||||
bstr = atob(arr[1]),
|
||||
n = bstr.length,
|
||||
u8arr = new Uint8Array(n)
|
||||
while (n--) {
|
||||
u8arr[n] = bstr.charCodeAt(n)
|
||||
}
|
||||
return new File([u8arr], filename, { type: mime })
|
||||
},
|
||||
// 删除图片前
|
||||
beforeDelete(file, detail) {
|
||||
Dialog.confirm({
|
||||
title: '提示',
|
||||
message: '您确定要删除吗'
|
||||
})
|
||||
.then(() => {
|
||||
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
|
||||
})
|
||||
},
|
||||
// 点击下一步
|
||||
nextStep() {
|
||||
this.$toast.loading({
|
||||
// 持续展示 toast
|
||||
duration: 0,
|
||||
// 禁用背景点击
|
||||
forbidClick: true,
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
//
|
||||
let saveMediaDTO = {
|
||||
platformType: 'app',
|
||||
edorType: 'PC',
|
||||
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: []
|
||||
}
|
||||
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
|
||||
}
|
||||
)
|
||||
)
|
||||
})
|
||||
})
|
||||
changeEdor(saveMediaDTO).then(res => {
|
||||
this.$toast.clear()
|
||||
if (res.result == 0) {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/preserve/common/handleResult?entry=PC',
|
||||
pullRefresh: '1',
|
||||
backToFirst: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/preserve/common/handleResult?entry=PC'
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
162
src/views/ebiz/preserve/pc/RenewalConfirmation.vue
Normal file
162
src/views/ebiz/preserve/pc/RenewalConfirmation.vue
Normal file
@@ -0,0 +1,162 @@
|
||||
<!--续期账号变更-保全代办确认页-->
|
||||
<template>
|
||||
<div class="renewal-confirmation-container pb50">
|
||||
<div style="border-bottom: 1px solid #ebedf0" class="fs14 pl10 pv12 bg-white">
|
||||
<p>
|
||||
<span>尊敬的</span>
|
||||
<span class="red" v-if="list.length">{{ list[0].accountName }}</span
|
||||
>先生/女士, 您好!
|
||||
</p>
|
||||
<p class="mt10">
|
||||
<span>您的</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-collapse v-model="activeNames" v-if="list.length > 0">
|
||||
<div v-for="(item, index) in list" :key="index">
|
||||
<van-collapse-item :title="`保单号:${item.contNo}`" :name="index" v-if="item.isNewInfo == '1'">
|
||||
<van-cell title="产品名称" :value="item.riskName" />
|
||||
<van-cell title="投保人" :value="item.appntName" />
|
||||
<van-cell title="被保险人" :value="item.insuredName" />
|
||||
<van-cell title="交费方式" :value="item.tradeAbstract | idToText('pcPayMode')" />
|
||||
<van-cell title="保单生效日期" :value="item.cvalidate" />
|
||||
<van-cell title="保单状态" :value="item.contState" />
|
||||
<van-cell title="开户人姓名" :value="item.accountName" />
|
||||
<van-cell title="原开户银行" :value="item.bankCode | idToText('edorBankType')" />
|
||||
<van-cell title="原银行卡号" :value="item.bankNo" />
|
||||
</van-collapse-item>
|
||||
</div>
|
||||
</van-collapse>
|
||||
</van-cell-group>
|
||||
<!-- 以上变更后续账号信息 -->
|
||||
|
||||
<van-cell-group class="mt10 cont-info-container">
|
||||
<div v-for="(item, index) in list" :key="index">
|
||||
<div v-if="item.isNewInfo == '0'">
|
||||
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">以上变更后续账号信息</p>
|
||||
<van-cell title="开户人姓名" :value="item.accountName" />
|
||||
<van-cell title="新开户银行">
|
||||
<div class="red" slot="default">{{ item.bankCode | idToText('edorBankType') }}</div>
|
||||
</van-cell>
|
||||
<van-cell title="新银行账号">
|
||||
<div class="red" slot="default">{{ item.bankNo }}</div>
|
||||
</van-cell>
|
||||
</div>
|
||||
</div>
|
||||
</van-cell-group>
|
||||
|
||||
<van-cell-group class="fs14 mt10 pl15 pr15 pb20">
|
||||
<p class="pt20 pb20">以下内容需要您阅读确认:</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>
|
||||
<div class="bottom-btn bg-white">
|
||||
<van-button type="danger" size="large" @click="startPage" v-no-more-click="2000">开始</van-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Field, Cell, Collapse, CollapseItem, CellGroup, Dialog } from 'vant'
|
||||
import { queryConfirmDetail } from '@/api/ebiz/preserve/preserve'
|
||||
import DataDictionary from '../js/data-dictionary'
|
||||
|
||||
export default {
|
||||
name: 'RenewalConfirmation',
|
||||
components: {
|
||||
[Field.name]: Field,
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Collapse.name]: Collapse,
|
||||
[CollapseItem.name]: CollapseItem,
|
||||
[Dialog.name]: Dialog
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeNames: [0],
|
||||
src: this.$assetsUrl + 'images/u6490.png', // 图片路径
|
||||
list: [],
|
||||
pdfList: [],
|
||||
customerInfo: JSON.parse(localStorage.getItem('preserve-customerInfo'))
|
||||
}
|
||||
},
|
||||
filters: {
|
||||
idToText: function idToTextEdor(id, type) {
|
||||
let text = ''
|
||||
DataDictionary[type].some(item => {
|
||||
if (item.id == id) {
|
||||
text = item.label
|
||||
}
|
||||
})
|
||||
return text
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
// 获取基本信息
|
||||
this.init()
|
||||
},
|
||||
methods: {
|
||||
startPage() {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/preserve/pc/autopayAuthorization'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/preserve/pc/autopayAuthorization'
|
||||
}
|
||||
})
|
||||
},
|
||||
async init() {
|
||||
this.$toast.loading({
|
||||
// 持续展示 toast
|
||||
duration: 0,
|
||||
// 禁用背景点击
|
||||
forbidClick: true,
|
||||
loadingType: 'spinner',
|
||||
message: '加载中……'
|
||||
})
|
||||
let params = {
|
||||
edorType: 'PC',
|
||||
surrenderId: this.customerInfo.surrenderId,
|
||||
edorapplyNo: this.customerInfo.edorapplyNo
|
||||
}
|
||||
queryConfirmDetail(params).then(res => {
|
||||
this.$toast.clear()
|
||||
if (res.result == 0) {
|
||||
// 处理
|
||||
this.list = res.content.content
|
||||
this.pdfList = res.content.surrenderSignList
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.renewal-confirmation-container {
|
||||
.cont-info-container {
|
||||
/deep/.van-cell__title,
|
||||
.van-cell__value {
|
||||
flex: auto;
|
||||
text-align: left;
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
.red {
|
||||
color: #e9332e !important;
|
||||
}
|
||||
</style>
|
||||
310
src/views/ebiz/preserve/pc/RenewalInfo.vue
Normal file
310
src/views/ebiz/preserve/pc/RenewalInfo.vue
Normal file
@@ -0,0 +1,310 @@
|
||||
<template>
|
||||
<div class="renewal-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-collapse v-model="activeNames">
|
||||
<div v-for="(item, index) in list" :key="index">
|
||||
<van-collapse-item :title="`保单号:${item.contNo}`" :name="index">
|
||||
<van-cell title="产品名称" :value="item.riskName" />
|
||||
<van-cell title="投保人" :value="item.appntName" />
|
||||
<van-cell title="被保险人" :value="item.insuredName" />
|
||||
<van-cell title="交费方式" :value="item.tradeAbstract | idToText('pcPayMode')" />
|
||||
<van-cell title="保单生效日期" :value="item.cvalidate" />
|
||||
<van-cell title="保单状态" :value="item.contState" />
|
||||
<van-cell title="开户人姓名" :value="item.accountName" />
|
||||
<van-cell title="原开户银行" :value="item.bankCode | idToText('edorBankType')" />
|
||||
<van-cell title="原银行卡号" :value="item.bankNo" />
|
||||
</van-collapse-item>
|
||||
</div>
|
||||
</van-collapse>
|
||||
</van-cell-group>
|
||||
<!-- 以上变更后续账号信息 -->
|
||||
<van-cell-group class="mt10">
|
||||
<p style="border-bottom: 1px solid #ebedf0" class=" fs15 fwb pl10 pv12">以上变更后续账号信息</p>
|
||||
<van-cell required title="开户人" v-if="list.length">{{ list[0].accountName }}</van-cell>
|
||||
<van-field
|
||||
v-model="bank"
|
||||
label="新开户银行"
|
||||
placeholder="请选择"
|
||||
right-icon="arrow"
|
||||
@click="bankPopup = true"
|
||||
readonly
|
||||
v-validate="'required'"
|
||||
data-vv-name="新开户银行"
|
||||
required
|
||||
/>
|
||||
</van-cell-group>
|
||||
<van-cell-group class="flex align-items-c">
|
||||
<van-field
|
||||
v-model="bankNo"
|
||||
label="新银行卡号"
|
||||
maxlength="19"
|
||||
placeholder="请输入"
|
||||
clearable
|
||||
v-validate="'required|bankCard'"
|
||||
data-vv-name="新银行卡号"
|
||||
required
|
||||
/>
|
||||
<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>
|
||||
|
||||
<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>
|
||||
</div>
|
||||
<!-- 银行卡扫描 -->
|
||||
<BankCardScan :scanShow="isScan" :clear="false" @getScanInfo="getBankCardInfo"></BankCardScan>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { Field, Collapse, CollapseItem, Cell, CellGroup, Dialog, Popup, List } from 'vant'
|
||||
import BankCardScan from '@/components/ebiz/sale/BankCardScan'
|
||||
import { pcPolicyInfo, changeEdor } from '@/api/ebiz/preserve/preserve'
|
||||
import { getBankList } from '@/api/ebiz/sale/sale'
|
||||
import filters from '@/views/ebiz/preserve/filters'
|
||||
|
||||
export default {
|
||||
name: 'RenewalInfo',
|
||||
components: {
|
||||
[Field.name]: Field,
|
||||
[Collapse.name]: Collapse,
|
||||
[CollapseItem.name]: CollapseItem,
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[List.name]: List,
|
||||
[Popup.name]: Popup,
|
||||
[Dialog.name]: Dialog,
|
||||
BankCardScan
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
bank: '', //新开户银行
|
||||
bankCode: '', //新开户银行编码
|
||||
bankPopup: false, // 展示银行列表
|
||||
bankList: [], // 银行列表
|
||||
bankNo: '', // 新银行卡号
|
||||
isScan: false, // 是否扫描银行卡
|
||||
activeNames: [0],
|
||||
show: true,
|
||||
list: [],
|
||||
customerInfo: JSON.parse(localStorage.getItem('preserve-customerInfo'))
|
||||
}
|
||||
},
|
||||
filters: {
|
||||
idToText: filters.idToText
|
||||
},
|
||||
created() {
|
||||
this.getPolicyList({
|
||||
customerNo: this.customerInfo.customerNo,
|
||||
edorType: 'PC', //续期账号变更
|
||||
idno: this.customerInfo.idNo,
|
||||
mobile: this.customerInfo.customerMobile,
|
||||
name: this.customerInfo.customerName
|
||||
})
|
||||
this.getBank()
|
||||
},
|
||||
mounted() {
|
||||
// 筛选按钮的点击事件
|
||||
window.appCallBack = this.appCallBack
|
||||
/*Dialog.confirm({
|
||||
title: '提示',
|
||||
message: '该客户涉及到的所有保单相应信息将变更',
|
||||
showCancelButton: false
|
||||
})*/
|
||||
},
|
||||
methods: {
|
||||
// 选择银行
|
||||
chooseBank(name, code) {
|
||||
this.bank = name
|
||||
this.bankCode = code
|
||||
this.bankPopup = false
|
||||
},
|
||||
// 获取银行卡扫描信息
|
||||
getBankCardInfo(data) {
|
||||
this.bankNo = data.name
|
||||
|
||||
this.$jump({
|
||||
flag: 'navigation',
|
||||
extra: {
|
||||
title: '续期账号变更',
|
||||
hiddenRight: '1'
|
||||
}
|
||||
})
|
||||
this.isScan = false
|
||||
},
|
||||
// 银行卡扫描
|
||||
cardScanning(cardScanningType) {
|
||||
window.localStorage.setItem('cardScanningType', cardScanningType)
|
||||
let title = ''
|
||||
this.isclear = false
|
||||
;[this.isScan, title] = [true, '银行卡扫描']
|
||||
setTimeout(() => {
|
||||
this.$jump({
|
||||
flag: 'navigation',
|
||||
extra: {
|
||||
title,
|
||||
hiddenLeft: '1'
|
||||
}
|
||||
})
|
||||
this.closeBtn()
|
||||
}, 400)
|
||||
},
|
||||
closeBtn() {
|
||||
// 筛选按钮的显示
|
||||
this.$jump({
|
||||
flag: 'webview_right_button',
|
||||
extra: {
|
||||
btns: [
|
||||
{
|
||||
img: this.$assetsUrl + 'images/del-close.png',
|
||||
route: { flag: '', extra: {} }
|
||||
}
|
||||
]
|
||||
}
|
||||
})
|
||||
},
|
||||
appCallBack() {
|
||||
this.isclear = true
|
||||
// 筛选按钮的点击事件
|
||||
this.isclear = true
|
||||
this.$jump({
|
||||
flag: 'navigation',
|
||||
extra: {
|
||||
title: '续期账号变更',
|
||||
hiddenRight: '1'
|
||||
}
|
||||
})
|
||||
this.isScan = false
|
||||
},
|
||||
// 下一步
|
||||
async nextStep() {
|
||||
this.$validator.validate().then(valid => {
|
||||
if (true === valid) {
|
||||
this.change()
|
||||
} else {
|
||||
this.$toast(this.$validator.errors.all()[0])
|
||||
}
|
||||
})
|
||||
},
|
||||
//获取保单详情
|
||||
async getPolicyList(data) {
|
||||
pcPolicyInfo(data).then(res => {
|
||||
if (res.result == 0) {
|
||||
this.list = res.content
|
||||
} else {
|
||||
if (res.content) {
|
||||
this.$toast(res.content)
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 获取银行卡列表
|
||||
async getBank() {
|
||||
let data = {
|
||||
operateType: 'bank_type'
|
||||
}
|
||||
let res = await getBankList(data)
|
||||
if (res.result == '0') {
|
||||
this.bankList = res.content
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
},
|
||||
change() {
|
||||
let surrenderDTOList = {
|
||||
platformType: 'app',
|
||||
edorType: 'PC',
|
||||
operateType: '01',
|
||||
customerNo: this.customerInfo.customerNo,
|
||||
name: this.customerInfo.customerName,
|
||||
iDNo: this.customerInfo.idNo,
|
||||
mobile: this.customerInfo.customerMobile,
|
||||
pcAccountDTOList: []
|
||||
}
|
||||
this.list.forEach(item => {
|
||||
surrenderDTOList.pcAccountDTOList.push(
|
||||
Object.assign(
|
||||
{},
|
||||
{
|
||||
accountName: item.accountName,
|
||||
bankName: item.bankName,
|
||||
accountType: item.accountType,
|
||||
bankCode: item.bankCode,
|
||||
bankNo: item.bankNo,
|
||||
bankProvince: item.bankProvince,
|
||||
isNewInfo: item.isNewInfo,
|
||||
contNo: item.bankNo,
|
||||
appntName: item.appntName,
|
||||
insuredName: item.insuredName,
|
||||
cvalidate: item.cvalidate,
|
||||
contState: item.contState,
|
||||
riskName: item.riskName,
|
||||
tradeAbstract: item.tradeAbstract
|
||||
}
|
||||
)
|
||||
)
|
||||
})
|
||||
let changeItem = {
|
||||
isNewInfo: '0',
|
||||
bankCode: this.bankCode,
|
||||
bankName: this.bank,
|
||||
bankNo: this.bankNo,
|
||||
accountName: this.list[0].accountName
|
||||
}
|
||||
surrenderDTOList.pcAccountDTOList.push(changeItem)
|
||||
changeEdor(surrenderDTOList).then(res => {
|
||||
if (res.result == 0) {
|
||||
this.customerInfo.surrenderId = res.content.surrenderId
|
||||
this.customerInfo.edorApplyNo = res.content.edorApplyNo
|
||||
this.customerInfo.entry = 'renewal'
|
||||
localStorage.setItem('preserve-customerInfo', JSON.stringify(this.customerInfo))
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + `/#/preserve/pc/imageUpload`
|
||||
},
|
||||
routerInfo: {
|
||||
path: `/preserve/pc/imageUpload`
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.van-dialog__confirm {
|
||||
background-color: #e9332e !important;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.renewal-info-container {
|
||||
.cont-info-container {
|
||||
/deep/.van-cell__title,
|
||||
.van-cell__value {
|
||||
flex: auto;
|
||||
}
|
||||
}
|
||||
/deep/ .bankCard {
|
||||
width: 120px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
447
src/views/ebiz/preserve/wt/ImageUpload.vue
Normal file
447
src/views/ebiz/preserve/wt/ImageUpload.vue
Normal file
@@ -0,0 +1,447 @@
|
||||
<!--影像信息上传页面-->
|
||||
<template>
|
||||
<div class="image-upload-container">
|
||||
<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>
|
||||
</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>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<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'
|
||||
export default {
|
||||
components: {
|
||||
[Cell.name]: Cell,
|
||||
[CellGroup.name]: CellGroup,
|
||||
[Field.name]: Field,
|
||||
[Uploader.name]: Uploader,
|
||||
[RadioGroup.name]: RadioGroup,
|
||||
[Radio.name]: Radio,
|
||||
[Dialog.name]: Dialog,
|
||||
[Picker.name]: Picker,
|
||||
[Popup.name]: Popup
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isDisabled: true,
|
||||
id: '',
|
||||
idType: '1',
|
||||
type: '',
|
||||
fileListIdFront: [], //身份证正面
|
||||
fileListIdBack: [], //身份证反面
|
||||
fileListBank: [], // 银行账户
|
||||
fileListContract: [], //纸质保单
|
||||
file: '', // 图片流
|
||||
imgName: '', // 图片名称
|
||||
list: [],
|
||||
entry: '',
|
||||
surrenderType: '',
|
||||
accountType: '', //退款银行账号类型 0-原银行 1-新银行
|
||||
conTractType: '' //保单类型 0-电子 1-纸质
|
||||
}
|
||||
},
|
||||
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 (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 = []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
test(type, id) {
|
||||
this.id = id
|
||||
this.type = type
|
||||
},
|
||||
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))
|
||||
uploadImg(formdata).then(res => {
|
||||
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)
|
||||
}
|
||||
} 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)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 转化base64格式为文件格式
|
||||
dataURLtoFile(dataurl, filename) {
|
||||
//将base64转换为文件
|
||||
var arr = dataurl.split(','),
|
||||
mime = arr[0].match(/:(.*?);/)[1],
|
||||
bstr = atob(arr[1]),
|
||||
n = bstr.length,
|
||||
u8arr = new Uint8Array(n)
|
||||
while (n--) {
|
||||
u8arr[n] = bstr.charCodeAt(n)
|
||||
}
|
||||
return new File([u8arr], filename, { type: mime })
|
||||
},
|
||||
// 删除图片前
|
||||
beforeDelete(file, detail) {
|
||||
Dialog.confirm({
|
||||
title: '提示',
|
||||
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)
|
||||
})
|
||||
.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({
|
||||
// 持续展示 toast
|
||||
duration: 0,
|
||||
// 禁用背景点击
|
||||
forbidClick: true,
|
||||
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: []
|
||||
}
|
||||
}
|
||||
|
||||
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()
|
||||
}
|
||||
} 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 => {
|
||||
if (res.result == 0) {
|
||||
this.$jump({
|
||||
flag: 'h5',
|
||||
extra: {
|
||||
url: location.origin + '/#/preserve/handleResult',
|
||||
pullRefresh: '1',
|
||||
backToFirst: '1'
|
||||
},
|
||||
routerInfo: {
|
||||
path: '/preserve/handleResult'
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$toast(res.resultMessage)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
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>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
Reference in New Issue
Block a user