Merge branch 'feature/GFRS-2301【需求】健康险渠道国富无忧卡金掌桂开发的需求' into dev--无忧卡页面合并--提交人庞兴月

This commit is contained in:
pangxingyue
2021-04-02 16:21:17 +08:00
17 changed files with 1878 additions and 430 deletions

View File

@@ -89,6 +89,10 @@ git clone http://112.124.100.131/dcrs/ebiz-h5.git
cd ebiz-h5
npm install --global --production window-build-tools (全局安装依赖)
npm install --global node-gyp (全局安装依赖)
yarn install推荐使用yarn
yarn serve开发环境

View File

@@ -1,7 +1,7 @@
/*
* @Author: PangXingYue
* @Date: 2021-03-26 10:38:37
* @LastEditTime: 2021-03-29 18:42:28
* @LastEditTime: 2021-04-02 16:10:30
* @LastEditors: PangXingYue
* @Description:
* @FilePath: \ebiz-h5\src\api\ebiz\cardList\cardList.js
@@ -92,10 +92,18 @@ export function getPayTemp(data) {
})
}
// 获取订单支付状态
//
export function getShareParam(data) {
return request({
url: getUrl('/customer/account/getShareParam', 1),
url: getUrl('/customer/account/getShareParam', 1),
method: 'post',
data
})
}
// 更新险种文档阅读状态
export function saveOrUpdateDocument(data) {
return request({
url: getUrl('/sale/card/saveOrUpdateDocument', 1),
method: 'post',
data
})

View File

@@ -201,6 +201,7 @@ service.interceptors.response.use(
res = JSON.parse(AESTools.AESDecrypt(res.response, configApp.REQ_PWD))
}
}
Toast.clear()
if (res.code != 0) {
if (res.code == 10001 || res.code == 10002) {

View File

@@ -1,7 +1,7 @@
/*
* @Author: PangXingYue
* @Date: 2021-03-23 13:34:15
* @LastEditTime: 2021-03-23 13:48:26
* @LastEditTime: 2021-04-02 16:11:35
* @LastEditors: PangXingYue
* @Description:
* @FilePath: \ebiz-h5\src\config\index.js

View File

@@ -7,6 +7,9 @@ const payResult = () => import('@/views/ebiz/cardList/PayResult')
const paySuccess = () => import('@/views/ebiz/cardList/PaySuccess')
const payLoser = () => import('@/views/ebiz/cardList/PayLoser')
const ShowPDF = () => import('@/views/ebiz/cardList/ShowPDF')
const phoneCode = () => import('@/views/ebiz/cardList/phoneCode')
const cardDetail = () => import('@/views/ebiz/cardList/cardDetail')
const SignatureConfirmation = () => import('@/views/ebiz/cardList/SignatureConfirmation')
export default [
{
@@ -80,6 +83,33 @@ export default [
title: '',
index: 7
}
}
},
{
path: '/cardList/phoneCode',
name: 'phoneCode',
component: phoneCode,
meta: {
title: '短信验证',
index: 8
}
},
{
path: '/cardList/cardDetail',
name: 'cardDetail',
component: cardDetail,
meta: {
title: '核对投被保人信息',
index: 9
}
},
{
path: '/cardList/SignatureConfirmation',
name: 'SignatureConfirmation',
component: SignatureConfirmation,
meta: {
title: '阅读确认',
index: 10
}
},
]

View File

@@ -1,3 +1,11 @@
/*
* @Author: PangXingYue
* @Date: 2021-04-02 16:04:38
* @LastEditTime: 2021-04-02 16:13:50
* @LastEditors: PangXingYue
* @Description:
* @FilePath: \ebiz-h5\src\store\index.js
*/
import Vue from 'vue'
import Vuex from 'vuex'
import app from './modules/app'
@@ -18,9 +26,25 @@ export default new Vuex.Store({
eodrApplyNo: '', //保全-保全受理号
agentGrade: '', //用户的agentGrade判断用户权限
secondManageCode: '', //内勤所需参数
thirdManageCode: '' //内勤所需参数
thirdManageCode: '' ,//内勤所需参数
orderDetail:{},//无优卡分享微信端订单信息
},
mutations: {
setOrderDetail(state,data){
console.log('更新订单信息')
state.orderDetail = data;
},
setThirdManageCode(state, code) {
state.thirdManageCode = code
},
setSecondManageCode(state, code) {
state.secondManageCode = code
},
//设置用户的agentGrade判断用户权限
setAgentGrade(state, code) {
state.agentGrade = code
},
//更新 理赔申请-区分被保险人/申请人页面flag
updatePageFlag(state, val) {
state.pageFlag = val

View File

@@ -2,7 +2,10 @@
<div class="pay">
<div v-if="!isScan">
<van-cell-group>
<van-field v-model="underWriteData.appntName" type="textarea" autosize readonly label="产品名称" class="projuct" />
<van-field v-model="underWriteData.riskName" type="textarea" autosize readonly label="产品名称" class="projuct" />
<van-field v-model="underWriteData.schemeName" readonly label="保障方案" class="projuct" />
<van-field v-if="!isWeixin" v-model="underWriteData.appntName" readonly label="投保人姓名" class="projuct" />
<van-field v-if="!isWeixin" v-model="underWriteData.insuredName" readonly label="被保人姓名" class="projuct" />
<van-field :value="underWriteData.orderAmount == undefined ? '' : `${underWriteData.orderAmount} 元`" readonly label="支付金额" />
</van-cell-group>
<!-- 银行卡支付开始 -->
@@ -15,27 +18,29 @@
<van-radio-group v-model="radio" class="flex justify-content-fe"><van-radio name="1"></van-radio></van-radio-group>
</div>
</div> -->
<van-cell-group class="flex align-items-c">
<img :src="src" class="pl10" />
<van-cell title="银行卡支付" clickable>
<!-- <van-checkbox v-model="checked" class="flex justify-content-fe"></van-checkbox> -->
<van-radio-group v-model="radio" :disabled="noEdit" class="flex justify-content-fe">
<van-radio name=""></van-radio>
</van-radio-group>
</van-cell>
</van-cell-group>
<van-cell-group class="flex align-items-c">
<img :src="vxSrc" class="vximg" />
<van-cell title="微信支付" clickable>
<van-radio-group v-model="radio" :disabled="noEdit" class="flex justify-content-fe">
<van-radio name="3" @click="vxVerify"></van-radio>
</van-radio-group>
</van-cell>
</van-cell-group>
<div v-if="isWeixin">
<van-cell-group class="flex align-items-c">
<img :src="src" class="pl10" />
<van-cell title="银行卡支付" clickable>
<!-- <van-checkbox v-model="checked" class="flex justify-content-fe"></van-checkbox> -->
<van-radio-group v-model="radio" class="flex justify-content-fe">
<van-radio name=""></van-radio>
</van-radio-group>
</van-cell>
</van-cell-group>
<van-cell-group class="flex align-items-c">
<img :src="vxSrc" class="vximg" />
<van-cell title="微信支付" clickable>
<van-radio-group v-model="radio" class="flex justify-content-fe">
<van-radio name="3" @click="vxVerify"></van-radio>
</van-radio-group>
</van-cell>
</van-cell-group>
</div>
<!-- 银行卡支付结束 -->
<van-cell-group v-if="radio != '3'">
<van-field
v-model="underWriteData.name"
v-model="underWriteData.appntName"
label="姓名"
name="姓名"
readonly
@@ -46,7 +51,7 @@
required
/>
<template v-if="noEdit">
<!-- <template v-if="noEdit">
<van-field
v-model="underWriteData.bankCode"
maxlength="19"
@@ -71,8 +76,8 @@
data-vv-name="开户银行"
required
/>
</template>
<template v-else>
</template> -->
<template>
<van-field
v-model="underWriteData.bankCode"
maxlength="19"
@@ -139,24 +144,26 @@
<input name="ReqReserved5" type="hidden" v-model="payParam.ReqReserved5" />
<input name="S3Sign" type="hidden" v-model="payParam.S3Sign" />
</form>
<div class="bg-white bottom-btn"><van-button type="danger" size="large" @click="pay" v-no-more-click="1000">支付</van-button></div>
<div class="bg-white bottom-btn" v-if="radio == '3' && !isWeixin">
<van-button type="danger" style="width: 50vw;height: 13vw" @click="pay" v-no-more-click="1000">支付</van-button>
<van-button type="danger" style="width: 50vw;height: 13vw" @click="share" v-no-more-click="1000">分享</van-button>
<div class="bg-white bottom-btn" v-if="!isWeixin">
<!-- <van-button type="danger" style="width: 100vw;height: 13vw" @click="pay" v-no-more-click="1000">支付</van-button> -->
<van-button type="danger" style="width: 100vw; height: 13vw" @click="share" v-no-more-click="1000">支付分享</van-button>
</div>
<div class="bg-white bottom-btn" v-else>
<van-button type="danger" size="large" @click="pay" v-no-more-click="1000">支付</van-button>
</div>
</div>
<!-- 银行卡扫描按钮 -->
<van-popup v-model="isScan" style="height:100vh" position="bottom">
<van-popup v-model="isScan" style="height: 100vh" position="bottom">
<BankCardScan :scanShow="isScan" :clear="isClear" @getScanInfo="getBankCardInfo"></BankCardScan>
</van-popup>
<!-- 开户银行选择 -->
<van-popup v-model="show" position="bottom" style="height:354px">
<van-popup v-model="show" position="bottom" style="height: 354px">
<van-list>
<van-cell v-for="item in bankList" :key="item.code" :title="item.bankName" class="text-center" @click="clickList(item.bankName, item.code)" />
</van-list>
</van-popup>
<!-- 分享到微信的页面loading -->
<Loading :isLoading="isLoading"></Loading>
<!-- <Loading :isLoading="isLoading"></Loading> -->
</div>
</template>
@@ -182,8 +189,7 @@ export default {
[Cell.name]: Cell,
[RadioGroup.name]: RadioGroup,
[Radio.name]: Radio,
[Dialog.name]: Dialog,
Loading
Loading,
},
data() {
let isWeixin = this.$utils.device().isWeixin //判断环境
@@ -200,7 +206,8 @@ export default {
orderAmount: '', //支付金额
name: '',
bankCode: '', //银行卡号
bankName: '' //开户银行
bankName: '', //开户银行
schemeName: '' //保障金额
},
radio: '3',
result: [],
@@ -245,42 +252,50 @@ export default {
ReqReserved4: '', // 备用字段4
ReqReserved5: '', // 备用字段5
S3Sign: '', // 验签信息
tradeState: '' // 状态
tradeState: '', // 状态
},
gotPayParam: false, // 是否已正确获取支付参数,
payStatus: '', // 接口返回的支付状态
noEdit: true, //是否为编辑
isWeixin, // 是否为微信环境
isLoading: false // 分享到微信后的页面loading
isLoading: false, // 分享到微信后的页面loading
}
},
created() {
if (this.isWeixin) {
this.radio = '3'
let token = this.$route.query.token
let orderNo = this.$route.query.orderNo
localStorage.token = token
localStorage.orderNo = orderNo
this.isLoading = true
this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
})
setTimeout(() => {
this.pay()
}, 500)
let orderDetail = JSON.parse(sessionStorage.orderDetail)
this.underWriteData = {
'riskName': orderDetail.insuredDTOs[0].riskDTOLst[0].riskName,
'appntName': orderDetail.appntDTO.name,
'insuredName': orderDetail.insuredDTOs[0].name,
'orderAmount': orderDetail.insuredDTOs[0].riskDTOLst[0].prem,
'schemeName': orderDetail.insuredDTOs[0].riskDTOLst[0].proScheme,
'idType': orderDetail.appntDTO.idType,
}
this.orderStatus = orderDetail.orderInfoDTO.orderStatus
localStorage.orderNo = orderDetail.orderInfoDTO.orderNo
// this.radio = '3'
// this.isLoading = true
// this.$toast.loading({
// duration: 0, // 持续展示 toast
// forbidClick: true, // 禁用背景点击
// loadingType: 'spinner',
// message: '加载中……'
// })
// setTimeout(() => {
// this.pay()
// }, 500)
} else {
// 再次支付 调详情 获取信息
this.getOrderDetail()
}
// 再次支付 调详情 获取信息
this.getOrderDetail()
},
mounted() {
setTimeout(() => {
// eslint-disable-next-line no-undef
EWebBridge.webCallAppInJs('webview_left_button', {
img: this.$assetsUrl + 'images/del-close-btn@3x.png',
intercept: '1' //是否拦截原生返回事件 1是 其他否
intercept: '1', //是否拦截原生返回事件 1是 其他否
})
}, 100)
// window.appCallBack = this.appCallBack
@@ -288,27 +303,24 @@ export default {
// this.underWrite.orderAmount = this.trialList[0].prem
document.body.style.backgroundColor = '#fff'
window.appCallBack = this.appCallBack
// 不在微信环境下
// if (!this.isWeixin) {
// 获取银行卡
this.getBankList()
// this.getOrderDetail()
// console.log('----保融form.action', config.payUrl)
// if (localStorage.salelist == '1') {
// 第一次支付 调核保获取
// this.underWrite()
// this.underWriteData = JSON.parse(window.localStorage.getItem('underWriteData'))
// } else {
// 再次支付 调详情 获取信息
this.getOrderDetail()
// this.underWriteData = JSON.parse(window.localStorage.getItem('underWriteData'))
// }
// console.log('--自核结果--支付信息:', JSON.stringify(this.underWriteData))
this.getPayTemp()
// }
// 不在微信环境下
if (!this.isWeixin) {
// this.getOrderDetail()
// console.log('----保融form.action', config.payUrl)
// if (localStorage.salelist == '1') {
// 第一次支付 调核保获取
// this.underWrite()
// this.underWriteData = JSON.parse(window.localStorage.getItem('underWriteData'))
// } else {
// 再次支付 调详情 获取信息
this.getOrderDetail()
// this.underWriteData = JSON.parse(window.localStorage.getItem('underWriteData'))
// }
// console.log('--自核结果--支付信息:', JSON.stringify(this.underWriteData))
this.getPayTemp()
}
},
beforeRouteLeave(to, from, next) {
document.body.style.backgroundColor = ''
@@ -318,7 +330,7 @@ export default {
setTimeout(() => {
// eslint-disable-next-line no-undef
EWebBridge.webCallAppInJs('webview_left_button', {
intercept: '0' //是否拦截原生返回事件 1是 其他否
intercept: '0', //是否拦截原生返回事件 1是 其他否
})
// window.appCallBack = this.appCallBack
}, 100)
@@ -332,7 +344,7 @@ export default {
title: '提示',
message: '是否确认退出?',
cancelButtonColor: '#E9332E',
confirmButtonColor: '#FFFFFF'
confirmButtonColor: '#FFFFFF',
})
.then(() => {
this.$jump({
@@ -340,12 +352,12 @@ export default {
extra: {
title: '产品列表',
forbidSwipeBack: 1, //当前页面禁止右滑返回
url: location.origin + `/#/cardList/CardTotreasure`
url: location.origin + `/#/cardList/CardTotreasure`,
},
routerInfo: {
path: `/cardList/CardTotreasure`,
type: '1'
}
type: '1',
},
})
})
.catch(() => {
@@ -357,8 +369,8 @@ export default {
flag: 'navigation',
extra: {
title: '支付',
hiddenRight: '1'
}
hiddenRight: '1',
},
})
this.isScan = false
}
@@ -370,8 +382,8 @@ export default {
flag: 'navigation',
extra: {
title: '账户信息',
hiddenRight: '1'
}
hiddenRight: '1',
},
})
this.isScan = false
},
@@ -387,8 +399,8 @@ export default {
flag: 'navigation',
extra: {
title,
hiddenLeft: '1'
}
hiddenLeft: '1',
},
})
this.closeBtn()
}, 400)
@@ -401,10 +413,10 @@ export default {
btns: [
{
img: this.$assetsUrl + 'images/del-close.png',
route: { flag: '', extra: {} }
}
]
}
route: { flag: '', extra: {} },
},
],
},
})
},
// 获取银行列表的focus
@@ -417,9 +429,9 @@ export default {
getBankList() {
let self = this
let data = {
operateType: 'bank_type'
operateType: 'bank_type',
}
getBankList(data).then(res => {
getBankList(data).then((res) => {
if (res.result == '0') {
console.log('银行卡列表', res.content)
self.bankList = res.content
@@ -437,19 +449,19 @@ export default {
},
getPayTemp() {
getPayTemp({ orderNo: window.localStorage.getItem('orderNo') })
.then(res => {
.then((res) => {
if (res.result == '0') {
this.noEdit = res.content.flag != 'false'
}
})
.catch(e => {
.catch((e) => {
console.error(e)
})
},
// 再次支付
// 获取支付详情
getOrderDetail() {
var orderParms
getOrderDetail({orderNo: window.localStorage.getItem('orderNo')}).then(res => {
getOrderDetail({ orderNo: window.localStorage.getItem('orderNo') }).then((res) => {
console.log('getOrderDetail', res)
if (res.result == '0') {
this.orderStatus = res.orderDTO.orderInfoDTO.orderStatus
try {
@@ -466,17 +478,19 @@ export default {
this.$toast.clear()
console.log(res.orderDTO.orderAccountDTO.bankCode)
this.underWriteData = {
appntName: res.orderDTO.insuredDTOs[0].riskDTOLst[0].riskName,
name: res.orderDTO.appntDTO.name,
riskName: res.orderDTO.insuredDTOs[0].riskDTOLst[0].riskName,
appntName: res.orderDTO.appntDTO.name,
insuredName: res.orderDTO.insuredDTOs[0].name,
// bankName: res.orderDTO.orderAccountDTO.bankCode,
// bankCode: res.orderDTO.orderAccountDTO.cardBookCode,
// cardBookCode: res.orderDTO.orderAccountDTO.cardBookCode,
schemeName: res.orderDTO.insuredDTOs[0].riskDTOLst[0].proScheme,
idType: res.orderDTO.appntDTO.idType,
orderAmount: res.orderDTO.orderInfoDTO.orderAmount,
orderAmount: res.orderDTO.insuredDTOs[0].riskDTOLst[0].prem,
orderNo: res.orderDTO.orderAccountDTO.orderNo,
result: '',
resultMessage: '交易处理成功',
uwResult: '02'
uwResult: '02',
}
// this.bankListName = res.orderDTO.orderAccountDTO.bankName
this.underWriteData.bankCode =
@@ -484,8 +498,7 @@ export default {
this.underWriteData.bankName = res.orderDTO.orderAccountDTO.bankCode !== null ? res.orderDTO.orderAccountDTO.bankCode : this.$route.query.bankName
this.underWriteData.cardBookCode =
res.orderDTO.orderAccountDTO.cardBookCode !== null ? res.orderDTO.orderAccountDTO.cardBookCode : this.$route.query.bankCode
this.bankListName = res.orderDTO.orderAccountDTO.bankName !== null ? res.orderDTO.orderAccountDTO.bankName : this.$route.query.bankListName
this.bankListName = res.orderDTO.orderAccountDTO.bankName !== null ? res.orderDTO.orderAccountDTO.bankName : this.$route.query.bankListName
// if (this.isWeixin) {
// this.pay()
// }
@@ -494,7 +507,9 @@ export default {
} else {
this.underWriteData = {
accountName: '',
riskName: '',
appntName: '',
insuredName: '',
idType: '',
bankCode: '',
bankName: '',
@@ -503,7 +518,7 @@ export default {
orderNo: '',
result: '',
resultMessage: '交易处理失败',
uwResult: '00'
uwResult: '00',
}
// window.localStorage.setItem('underWriteData', JSON.stringify(underWriteData))
this.$toast(res.resultMessage)
@@ -568,9 +583,33 @@ export default {
let data = {
orderNo: window.localStorage.getItem('orderNo'),
cardOrder: 'cardOrder',
payType: this.radio
payType: this.radio,
}
acceptInsurance(data).then(res => {
acceptInsurance(data).then((res) => {
// this.$jump({
// flag: 'h5',
// extra: {
// forbidSwipeBack: 1, //当前页面禁止右滑返回
// url: location.origin + `/#/cardList/payLoser`,
// },
// routerInfo: {
// path: `/cardList/payLoser`,
// type: '1',
// },
// })
// return;
this.$jump({
flag: 'h5',
extra: {
forbidSwipeBack: 1, //当前页面禁止右滑返回
url: location.origin + `/#/cardList/paySuccess`,
},
routerInfo: {
path: `/cardList/paySuccess`,
type: '1',
},
})
return
console.log('----取支付参数结果:', JSON.stringify(res))
// res = {'result':'0','resultMessage':'','content':null,'prtNo':'8186270000000008','payStatus':'4','amnt':'63700.00','appntName':'投保人','message':null,'brPayReturnData':{'result':'','resultMessage':'','content':null,'businessId':'1569125393518','businessNo':'8186270000000008','tradeSubType':'COMM','businessType':'SALE','systemType':'GF','money':63700,'businessSubType':'XDCB','thirdType':'0002','thirdName':null,'bankCode':'ABC','epayOrderNo':'1909221209536259999900','companyAccount':null,'tradeState':'TRADING','standardCode':'DEALING','standardMsg':null,'thirdOrderNo':null,'respRemark':null,'tradeTime':'2019-09-22T04:09:53.518+0000','description':'','version':'1','sourceNotecode':'8186270000000008','payType':'MIT01','expireDate':'20191010101010','transSeq':'20190922120953782','transSource':'MIT','applyEntity':'11860000','paymentCode':'8186270000000008','transDate':'20190922','rdSeq':'1909221209536259999900','settleMode':null,'cur':'CNY','transTime':'120953','ourAmount':63700,'fixUser':'1','insurer':'投保人','certType':'0','certNum':'110101199009210011','oppBank':'ABC','oppAct':'6228481200290317812','oppActName':'投保人','cellPhone':null,'purpose':null,'memo':null,'returnURL':'http://139.199.50.151/#/sale/payResult','notifyURL':'http://139.199.50.151:7000/api/v1/epay/epay/payResult','s3Sign':'e3f0581ec6b751337e8eca360a0746bc'}}
if (res.result == '0') {
@@ -599,7 +638,7 @@ export default {
window.localStorage.setItem('payStatus', res.payStatus)
window.localStorage.setItem('payInfo', JSON.stringify(res))
this.underWriteData.bankListName = this.bankListName
if(this.radio == '3'){
if (this.radio == '3') {
this.underWriteData.bankCode = ''
}
localStorage['cardList-detail'] = JSON.stringify(this.underWriteData)
@@ -609,7 +648,7 @@ export default {
setTimeout(() => {
// eslint-disable-next-line no-undef
EWebBridge.webCallAppInJs('webview_left_button', {
intercept: '0' //是否拦截原生返回事件 1是 其他否
intercept: '0', //是否拦截原生返回事件 1是 其他否
})
}, 100)
})
@@ -629,7 +668,7 @@ export default {
let data = {
orderDTO: {
orderInfoDTO: {
orderNo: window.localStorage.getItem('orderNo')
orderNo: window.localStorage.getItem('orderNo'),
},
orderAccountDTO: {
accountType: '0',
@@ -639,15 +678,15 @@ export default {
cardBookType: '1',
cardBookCode: this.underWriteData.bankCode,
isAutoPay: '0',
isAutoRenewal: '1'
}
}
isAutoRenewal: '1',
},
},
}
this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
message: '加载中……',
})
/*
支付之前要先保存银行账户信息
@@ -661,7 +700,7 @@ export default {
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
message: '加载中……',
})
// if (!flag) {
@@ -688,7 +727,7 @@ export default {
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
message: '加载中……',
})
// if (!flag) {
@@ -713,28 +752,26 @@ export default {
this.$dialog
.confirm({
message: '证件类型不是身份证,无法使用微信支付',
showCancelButton: false
showCancelButton: false,
})
.then(() => {
this.radio = ''
})
}
},
async share() {
async share() {
let valid = await this.$validator.validate()
console.log(valid)
if (true !== valid) {
console.log(this.$validator)
return this.$toast(this.$validator.errors.all()[0])
}
let shareName = this.underWriteData.name
localStorage.name = this.underWriteData.name
localStorage.bankName = this.underWriteData.bankName
localStorage.bankCode = this.underWriteData.bankCode
localStorage.bankListName = this.bankListName
console.log(this.underWriteData.bankName, this.underWriteData.bankCode, this.bankListName, this.underWriteData.name)
let res = await getShareParam({ shareType: 'card_pay' })
let url = location.origin + '/#/cardList/pay?orderNo=' + localStorage.orderNo + '&token=' + res.content
localStorage.bankListName = this.bankListName
let res = await getShareParam({ shareType: 'card_pay' })
let url = location.origin + '/#/cardList/phoneCode?orderNo=' + localStorage.orderNo + '&token=' + res.content
if (res.result == '0') {
EWebBridge.webCallAppInJs('bridge', {
flag: 'share',
@@ -749,7 +786,7 @@ export default {
return this.$toast(res.resultMessage)
}
}
}
},
}
</script>
@@ -766,4 +803,8 @@ export default {
padding-right: 3px;
box-sizing: content-box;
}
.bottom-btn {
display: flex;
justify-content: center;
}
</style>

View File

@@ -1,10 +1,11 @@
<template>
<div class="PayLoser">
<div>
<img src="../../../assets/images/u10608.svg" alt="" />
<!-- <img src="../../../assets/images/u10608.svg" alt="" /> -->
<img :src="$assetsUrl + 'images/fail.png'" alt="">
<p>支付失败</p>
</div>
<van-button type="info" size="large" class="payBtn">返回首页</van-button>
<van-button type="danger" size="large" class="payBtn">返回首页</van-button>
</div>
</template>

View File

@@ -1,22 +1,22 @@
<template>
<div class="paySuccess">
<template v-if="payStatus == '1'">
<template>
<div class="paySucc">
<van-icon name="passed" size="100px" color="#1296DB" />
<van-icon name="passed" size="100px" color="#E9332E" />
<span>支付成功</span>
</div>
<van-cell-group name="payInfo">
<van-field v-model="payInfo.productName" readonly clearable label="产品名称" name="产品名称" placeholder="国富安全出行2.0" />
<van-field v-model="payInfo.paymentAmount" readonly clearable label="支付金额" name="支付金额" placeholder="100.00元" />
<van-field v-model="payInfo.bankCardNumber" readonly clearable label="卡号" name="卡号" placeholder="1297793740298" />
<van-field v-model="productName" readonly clearable label="产品名称" name="产品名称" placeholder="国富安全出行2.0" />
<van-field v-model="paymentAmount" readonly clearable label="支付金额" name="支付金额" placeholder="100.00元" />
<van-field v-model="bankCardNumber" readonly clearable label="卡号" name="卡号" placeholder="1297793740298" />
</van-cell-group>
</template>
<template v-else-if="payStatus == '2'">
<!-- <template v-else-if="payStatus == '2'">
<div class="flex flex-direction-colunm align-items-c pt100">
<img :src="this.$assetsUrl + 'images/fail.png'" class="w100 h100" alt="" />
<p class="mt30">支付失败</p>
</div>
</template>
</template> -->
<div class="bg-white bottom-btn">
<van-button type="danger" size="large" class="payBtn" @click="goHome">返回首页</van-button>
</div>

View File

@@ -1,28 +1,92 @@
<!--
* @Author: PangXingYue
* @Date: 2021-04-01 11:00:21
* @LastEditTime: 2021-04-02 14:02:34
* @LastEditors: PangXingYue
* @Description:
* @FilePath: \ebiz-h5\src\views\ebiz\cardList\ShowPDF.vue
-->
<template>
<div>
<iframe :src="src + pdfUrl" style="width:100vw;height:100vh"></iframe>
<van-notice-bar wrapable v-if="time > 0" :scrollable="false" :text="'提示:阅读时长需在' + time + '秒以上'" />
<iframe :src="src + pdfUrl" style="width: 100vw; height: calc(100vh - 100px)"></iframe>
<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>
import { Button, NoticeBar } from 'vant'
import { saveOrUpdateCard } from '@/api/ebiz/cardList/cardList.js'
export default {
data() {
return {
pdfUrl: '',
src: location.origin + '/pdfjs/web/viewer.html?file='
src: 'http://139.199.50.151' + '/pdfjs/web/viewer.html?file=',
index: this.$route.query.index || 0, //阅读文件指针
timer: null,
time: 5,
cardListPDF: []
}
},
components: {
[NoticeBar.name]: NoticeBar,
[Button.name]: Button
},
created() {
this.init()
},
mounted() {},
methods: {
init() {
let cardListPDF = JSON.parse(localStorage.cardListPDF)
console.log(cardListPDF)
this.pdfUrl = cardListPDF.documentUrl
this.shareContent = cardListPDF.title
document.title = cardListPDF.title
init() {
this.cardListPDF = JSON.parse(localStorage.cardListPDF)
this.pdfUrl = this.cardListPDF[this.index].originalUrl
document.title = this.cardListPDF[this.index].documentName
this.interval()
},
interval() {
this.time = 5
this.timer = setInterval(() => {
this.time--
if (this.time == 0) return clearInterval(this.timer)
}, 1000)
},
nextStep() {
// 调用阅读接口
if (this.time !== 0) {
return false
}
if (this.index >= this.cardListPDF.length - 1) {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/cardList/SignatureConfirmation'
},
routerInfo: {
path: '/cardList/SignatureConfirmation'
}
})
} else {
this.saveOrUpdateCard()
}
},
//更新险种文档阅读状态
saveOrUpdateCard() {
this.cardListPDF[this.index]['documentStatus'] = '1'
let data = {
'ebizSignDTOS': [this.cardListPDF[this.index]]
}
saveOrUpdateCard(data).then(res => {
if (res.result == '0') {
this.$toast.clear()
this.index++
this.init()
} else {
this.$toast(res.resultMessage)
return false
}
})
}
}
}

View File

@@ -0,0 +1,218 @@
<template>
<div class="signature-container">
<div class="signature-content pb40">
<van-cell-group class="mt10">
<van-cell title="销售人员工号" :value="recmd.agentCode" />
<van-cell title="销售人员姓名" :value="recmd.name" />
<van-cell title="投保单号" :value="orderInfo.orderNo"></van-cell>
<van-cell title="投保日期" :value="orderInfo.appntDateLabel" />
<van-cell title="保费合计(元)" :value="orderInfo.orderAmount == undefined ? '' : orderInfo.orderAmount | moneyFormat" />
</van-cell-group>
<!-- 在微信 -->
<div class="mt10">
<van-collapse v-model="activeNames">
<van-collapse-item name="1">
<div slot="title">
投保人
<span class="ml20">{{ appntInfo.name }}</span>
</div>
<p class="mb20">以下内容需要您按照顺序阅读确认:</p>
<div>
<p>需阅读</p>
<p class="mb20" v-for="item in appntSign" :key="item.signId">
<span class="text">{{ item.documentName }}</span>
<img :src="src" v-if="item.documentStatus == '1'" />
</p>
</div>
<p class="start">点击下一步按钮进行相关操作</p>
<!-- <div class="text">操作时间已失效请联系销售人员</div> -->
</van-collapse-item>
</van-collapse>
</div>
</div>
<div class="bottom-btn bg-white">
<van-button type="danger" size="large" @click="next" v-no-more-click="1000">下一步</van-button>
</div>
</div>
</template>
<script>
// import UploadImageFile from '@/components/ebiz/sale/UploadImageFile'
import { Field, Cell, CellGroup, Collapse, CollapseItem, Dialog } from 'vant'
import { underWrite } from '@/api/ebiz/sale/sale'
import { checkPhone } from '@/api/ebiz/customer/customer'
import IndexBar from '@/components/ebiz/sale/IndexBar'
export default {
data() {
let isWeixin = this.$utils.device().isWeixin //判断环境
return {
operaFlag: null,
encyCustomerMobile: null,
//人脸识别认证次数
faceAuthCount: {
appnt: 0,
insured: 0,
weixin: 0,
},
customerMobile: '',
//保险产品名称
riskName: '',
// 员工信息
recmd: {},
// 订单信息
orderInfo: {},
// 投保人信息
appntInfo: {},
// 投保人签名阅读信息
appntSign: [
{
documentName: '短期交通卡投保须知',
documentUrl: this.$assetsUrl + 'product/GFRS_M0022/M0022Notice.pdf',
documentStatus: '1',
},
{
documentName: '短期交通卡投保声明',
documentUrl: this.$assetsUrl + 'product/GFRS_M0022/M0022Explain.pdf',
documentStatus: '1',
},
{
documentName: '国富人寿综合交通意外保险2020',
documentUrl: this.$assetsUrl + 'product/GFRS_M0022/M0022.pdf',
documentStatus: '2',
},
],
// 折叠面板
activeNames: ['1'],
// 图片路径
src: this.$assetsUrl + 'images/u6490.png',
// 是否在微信
isWeixin,
}
},
computed: {
orderDTO: {
get() {
return JSON.parse(sessionStorage.orderDetail)
},
},
},
methods: {
// 初始化
async init() {
console.log(this.orderDTO, '=================this.orderDTO===================')
this.recmd = this.orderDTO.recmdDTO
this.orderInfo = this.orderDTO.orderInfoDTO
this.appntInfo = this.orderDTO.appntDTO
this.appntSign = this.orderDTO.ebizSignDTOS
// if (this.isWeixin) {
// await this.getOrderDetail()
// // weixinShare({
// // title: '国富人寿计划书',
// // imgUrl: 'http://47.96.143.111:8000/app/images/logo.png',
// // desc: '国富为您量身定制的保险产品,请查收'
// // })
// } else {
// // 获取详情消息
// this.getOrderDetail()
// }
},
// 提交
next() {
let index = 0
let is_sign = this.appntSign.some((item, key) => {
index = key
return item.documentStatus != 1
})
if (is_sign) {
// 有未阅读的文件
localStorage.setItem('cardListPDF', JSON.stringify(this.appntSign))
this.$jump({
flag: 'h5',
extra: {
title: this.appntSign[index].documentName,
// url: 'http://47.96.143.111/pdfjs/web/viewer.html?file=' + url //测试代码
url: location.origin + '/#/cardList/ShowPDF?index='+index,
},
routerInfo: {
path: '/cardList/ShowPDF?index='+index,
},
})
} else {
return this.$jump({
flag: 'h5',
extra: {
title: this.appntSign[index].documentName,
url: location.origin + '/#/cardList/pay',
},
routerInfo: {
path: '/cardList/pay',
},
})
//需要全部提交
/** this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……',
})
let data = {
platform: 'app',
type: '1',
orderDTO: {
orderInfoDTO: {
orderNo: window.localStorage.getItem('orderNo'),
},
},
}
// /insure/selfToHuman
underWrite(data).then((res) => {
this.$toast.clear()
if (res.result == '0') {
} else {
this.$toast(res.resultMessage)
}
})**/
}
},
},
created() {},
mounted() {
// 初始化
this.init()
},
components: {
[Cell.name]: Cell,
[CellGroup.name]: CellGroup,
[Collapse.name]: Collapse,
[CollapseItem.name]: CollapseItem,
[Dialog.name]: Dialog,
[Field.name]: Field,
[IndexBar.name]: IndexBar,
},
beforeRouteLeave(to, from, next) {
document.body.style.backgroundColor = ''
next()
},
}
</script>
<style lang="scss" scoped>
@import '@/assets/sass/variables.scss';
.text {
color: #4a90e2;
}
.start {
color: #4fc6b3;
}
.tips {
line-height: 30px;
}
.tips {
line-height: 30px;
}
</style>

View File

@@ -0,0 +1,107 @@
<template>
<div class="product-detail-container pb50" style="overflow: hidden">
<van-cell-group class="mt10">
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">投保人信息</p>
<van-field :value="appntInfo.name" label="姓名" name="姓名" readonly />
<van-field :value="appntInfo.idType | idToText('insuredIdType')" label="证件类型" name="证件类型" readonly />
<van-field :value="appntInfo.idNo" label="证件号码" name="证件号码" readonly />
<van-field :value="appntInfo.mobile" label="手机号码" name="手机号码" readonly />
<van-field :value="appntInfo.email" label="电子邮箱" name="电子邮箱" readonly />
<van-field :value="appntInfo.homeName" label="联系地址" name="联系地址" readonly />
<van-field :value="appntInfo.homeAddress" label name="详细地址" readonly />
</van-cell-group>
<van-cell-group class="mt10">
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">被保人信息</p>
<van-field :value="insuredInfo.name" label="姓名" name="姓名" readonly />
<van-field :value="insuredInfo.idType | idToText('insuredIdType')" label="证件类型" name="证件类型" readonly />
<van-field :value="insuredInfo.idNo" label="证件号码" name="证件号码" readonly />
<van-field :value="insuredInfo.mobile" label="手机号码" name="手机号码" readonly />
<van-field :value="insuredInfo.email" label="电子邮箱" name="电子邮箱" readonly />
<van-field :value="insuredInfo.homeName" label="联系地址" name="联系地址" readonly />
<van-field :value="insuredInfo.homeAddress" label name="详细地址" readonly />
</van-cell-group>
<van-cell-group class="mt10">
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">受益人信息</p>
<van-field readonly v-model="bnfTypeVal" clearable label="受益人类型" v-validate="'required'" style="border-bottom: 1px solid #ebedf0" />
</van-cell-group>
<van-cell-group class="mt10">
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">产品信息</p>
<van-field :value="riskDTO.riskName" label="保障方案" name="保障方案" readonly />
<van-field value="保额" label="保险责任" name="保险责任" readonly />
<van-field :value="riskDTO.prem" label="保费" name="保费" readonly />
<van-field :value="'1年'" label="保险期间" name="保险期间" readonly />
</van-cell-group>
<div class="tips">2020年04月03日0时至2021年04月02日24时止</div>
<van-goods-action style="z-index: 99">
<van-button type="default" style="width: 50%; font-size: 14px; height: 40px; background: white"
>总保费:<span style="color: red; font-weight: bold; font-size: 18px; font-weight: 400">{{ riskDTO.prem }}</span
></van-button
>
<van-goods-action-button type="danger" text="确认" @click="nextStep" v-no-more-click="1000" style="border-radius: 0em; width: 50%; height: 40px" />
</van-goods-action>
</div>
</template>
<script>
import { Field, GoodsAction, GoodsActionIcon, GoodsActionButton, Icon } from 'vant'
import { getOrderDetail, information, underWrite } from '@/api/ebiz/sale/sale'
import getAreaName from '@/assets/js/utils/getAreaNameForSale'
export default {
name: 'cardDetail',
components: {
[Field.name]: Field,
[GoodsAction.name]: GoodsAction,
[GoodsActionIcon.name]: GoodsActionIcon,
[GoodsActionButton.name]: GoodsActionButton,
[Icon.name]: Icon,
},
computed: {
orderDTO: {
get() {
return JSON.parse(sessionStorage.orderDetail)
},
},
},
data() {
return {
activeName: ['1'],
appntInfo: {},
insuredInfo: {},
bnfTypeVal: '法定受益人', //受益人类型文字展示
riskDTO: {},
}
},
created() {
console.log(this.orderDTO)
this.appntInfo = this.orderDTO.appntDTO
this.appntInfo.homeName = getAreaName([{ code: this.appntInfo.homeProvince }, { code: this.appntInfo.homeCity }, { code: this.appntInfo.homeArea }])
this.insuredInfo = this.orderDTO.insuredDTOs[0]
this.insuredInfo.homeName = getAreaName([{ code: this.insuredInfo.homeProvince }, { code: this.insuredInfo.homeCity }, { code: this.insuredInfo.homeArea }])
this.riskDTO = this.orderDTO.insuredDTOs[0].riskDTOLst[0]
},
methods: {
nextStep() {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/cardList/SignatureConfirmation`,
},
routerInfo: {
path: `/cardList/SignatureConfirmation`,
},
})
},
},
}
</script>
<style lang="scss">
.product-detail-container .van-collapse-item__content {
padding: 0 15px;
}
.tips {
font-size: 14px;
color: #333;
padding: 15px;
}
</style>

View File

@@ -3,146 +3,71 @@
<!-- 投保人信息 -->
<van-cell-group class="mt10">
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">投保人信息</p>
<customer-picker
@on-choose="chooseCustomer(arguments)"
v-validate="'required|name'"
name="投保人姓名"
label="投保人姓名"
required
:parentShowPicker.sync="customerShowPicker"
v-model="userInfo.name"
@nameChange="nameChange"
@on-click="selectClick('1', '0')"
></customer-picker>
<van-field
:value="userInfo.idType | idToText('insuredIdType')"
v-validate="'required'"
readonly
required
label="证件类型"
name="证件类型"
right-icon="arrow"
placeholder="请选择"
@click="toSelect('2')"
/>
<customer-picker @on-choose="chooseCustomer(arguments)" v-validate="'required|name'" name="投保人姓名" label="投保人姓名"
required :parentShowPicker.sync="customerShowPicker" :value.sync="userInfo.name" @nameChange="nameChange"
@on-click="selectClick('1', '0')"></customer-picker>
<van-field :value="userInfo.idType | idToText('insuredIdType')" v-validate="'required'" readonly required label="证件类型"
name="证件类型" right-icon="arrow" placeholder="请选择" />
<!-- @click="toSelect('2')" -->
<!-- <van-field v-model="userInfo.idNo" v-validate="'required|idNo'" maxlength="18" label="证件号码" name="证件号码" placeholder="请输入" clearable> -->
<van-field
v-model="userInfo.idNo"
maxlength="18"
required
label="证件号码"
v-validate="'required'"
name="证件号码"
placeholder="请输入"
clearable
@blur="getRelatedData(userInfo.idNo, '1')"
>
<van-button v-if="userInfo.idType == 1" slot="button" size="small" type="danger" round @click="selectClick('3')">证件扫描</van-button>
<van-field v-model="userInfo.idNo" maxlength="18" required label="证件号码" v-validate="'required'" name="证件号码"
placeholder="请输入" clearable @blur="getRelatedData(userInfo.idNo, '1')">
<van-button v-if="userInfo.idType == 1" slot="button" size="small" type="danger" round @click="selectClick('3','','1')">证件扫描</van-button>
</van-field>
<select-radio required :radios="sexRadio" label="性别" name="性别" v-validate="'required'" :value.sync="userInfo.sex"></select-radio>
<FieldDatePicter
v-validate="'required'"
label="出生日期"
name="出生日期"
required
:value.sync="userInfo.birthday"
type="date"
:flag="true"
@confirm="onDateConfirm($event, '2')"
ref="birthday"
:maxDate="maxDate"
>
<FieldDatePicter v-validate="'required'" label="出生日期" name="出生日期" required :value.sync="userInfo.birthday" type="date"
:flag="true" @confirm="onDateConfirm($event, '2')" ref="birthday" :maxDate="maxDate">
</FieldDatePicter>
<van-field
required
v-model="userInfo.mobile"
clearable
label="手机号码"
name="手机号码"
placeholder="请输入"
v-validate="'required|mobile'"
maxlength="11"
/>
<van-field v-model="userInfo.email" required label="邮箱" name="邮箱" placeholder="请输入" v-validate="'required|email'" clearable />
<van-field required v-model="userInfo.mobile" clearable label="手机号码" name="手机号码" placeholder="请输入" v-validate="'required|mobile'"
maxlength="11" />
<van-field v-model="userInfo.email" required label="邮箱" name="邮箱" placeholder="请输入" v-validate="'required|email'"
clearable />
<!-- <van-field v-model="userInfo.workcompany" required label="工作单位" name="工作单位" placeholder="请输入" v-validate="'required'" maxlength="50" clearable /> -->
<!-- <template v-if="false">
<van-field
v-model="homeName"
readonly
label="地址"
name="地址"
required
right-icon="arrow"
placeholder="请选择"
v-validate="'required'"
@click="homeShow = true"
/>
<van-field v-model="userInfo.homeAddress" label name="详细地址" placeholder="请输入详细地址" v-validate="'required'" clearable maxlength="30" />
</template> -->
<van-field
:value="userInfo.relationToInsured | idToText('relationToAppnt')"
readonly
required
label="与被保人关系"
name="与被保人关系"
right-icon="arrow"
placeholder="请选择"
v-validate="'required'"
@click="toSelect('9')"
/>
<van-field @click="openOccupation('1')" label="职业类别" placeholder="请输入" name="职业类别" :value="userInfo.occupationName"
right-icon="arrow" />
<van-field :value="userInfo.nativeplace | idToText('nativeplace')" readonly required label="国籍" name="国籍"
v-validate="'required'" right-icon="arrow" placeholder="请选择" @click="toSelect('1')" />
<van-field :value="userInfo.marriage | idToText('marriage')" readonly required label="婚姻状况" name="婚姻状况"
v-validate="'required'" right-icon="arrow" placeholder="请选择" @click="toSelect('6')" />
<van-field v-model="userInfo.homeName" readonly label="联系地址" name="联系地址" required right-icon="arrow" placeholder="请选择"
v-validate="'required'" @click="areaSelect('1')" />
<van-field v-model="userInfo.homeAddress" label name="详细地址" placeholder="请输入详细地址" v-validate="'required'"
clearable maxlength="30" />
<!-- </template> -->
<van-field :value="userInfo.relationToInsured | idToText('relationToAppnt')" readonly required label="与被保人关系"
name="与被保人关系" right-icon="arrow" placeholder="请选择" v-validate="'required'" @click="toSelect('9')" />
</van-cell-group>
<!-- 被保险人信息 -->
<van-cell-group class="mt10" v-if="userInfo.relationToInsured != 1">
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">被保人信息</p>
<customer-picker
@on-choose="chooseCustomer(arguments)"
v-validate="'required|name'"
name="被保险人姓名"
label="被保险人姓名"
required
:parentShowPicker.sync="customerShowPicker2"
v-model="insuredInfo.name"
@nameChange="nameChanges"
@on-click="selectClick('1', '1')"
></customer-picker>
<van-field
:value="insuredInfo.idType | idToText('insuredIdType')"
v-validate="'required'"
readonly
required
label="证件类型"
name="证件类型"
right-icon="arrow"
placeholder="请选择"
/>
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">被保人信息</p>
<customer-picker @on-choose="chooseCustomer(arguments)" v-validate="'required|name'" name="被保险人姓名" label="被保险人姓名"
required :parentShowPicker.sync="customerShowPicker2" :value.sync="insuredInfo.name" @nameChange="nameChanges"
@on-click="selectClick('1', '1')"></customer-picker>
<van-field :value="insuredInfo.idType | idToText('insuredIdType')" v-validate="'required'" readonly required
label="证件类型" name="证件类型" right-icon="arrow" placeholder="请选择" />
<!-- @click="toSelect('11')" -->
<van-field
v-model="insuredInfo.idNo"
maxlength="18"
required
label="证件号码"
v-validate="'required'"
name="证件号码"
placeholder="请输入"
clearable
@blur="getRelatedData(insuredInfo.idNo, '2')"
>
<van-button v-if="insuredInfo.idType == 1" slot="button" size="small" type="danger" round @click="selectClick('3')">证件扫描</van-button>
<van-field v-model="insuredInfo.idNo" maxlength="18" required label="证件号码" v-validate="'required'" name="证件号码"
placeholder="请输入" clearable @blur="getRelatedData(insuredInfo.idNo, '2')">
<van-button v-if="insuredInfo.idType == 1" slot="button" size="small" type="danger" round @click="selectClick('3','','2')">证件扫描</van-button>
</van-field>
<select-radio required :radios="sexRadio" label="性别" name="性别" v-validate="'required'" :value.sync="userInfo.insuredSex"></select-radio>
<FieldDatePicter
v-validate="'required'"
label="出生日期"
name="出生日期"
required
:value.sync="insuredInfo.birthday"
type="date"
:flag="true"
@confirm="onDateConfirm($event, '5')"
ref="insuredBirthday"
:maxDate="insuredMaxDate"
></FieldDatePicter>
<FieldDatePicter v-validate="'required'" label="出生日期" name="出生日期" required :value.sync="insuredInfo.birthday"
type="date" :flag="true" @confirm="onDateConfirm($event, '5')" ref="insuredBirthday" :maxDate="insuredMaxDate"></FieldDatePicter>
<van-field required v-model="insuredInfo.mobile" clearable label="手机号码" name="手机号码" placeholder="请输入" v-validate="'required|mobile'"
maxlength="11" />
<van-field v-model="insuredInfo.email" required label="邮箱" name="邮箱" placeholder="请输入" v-validate="'required|email'"
clearable />
<van-field @click="openOccupation('2')" label="职业类别" placeholder="请输入" name="职业类别" :value="insuredInfo.occupationName"
right-icon="arrow" />
<van-field :value="insuredInfo.nativeplace | idToText('nativeplace')" readonly required label="国籍" name="国籍"
v-validate="'required'" right-icon="arrow" placeholder="请选择" @click="toSelect('11')" />
<van-field :value="insuredInfo.marriage | idToText('marriage')" readonly required label="婚姻状况" name="婚姻状况"
v-validate="'required'" right-icon="arrow" placeholder="请选择" @click="toSelect('66')" />
<van-field v-model="insuredInfo.homeName" readonly label="联系地址" name="联系地址" required right-icon="arrow"
placeholder="请选择" v-validate="'required'" @click="areaSelect('2')" />
<van-field v-model="insuredInfo.homeAddress" label name="详细地址" placeholder="请输入详细地址" v-validate="'required'"
clearable maxlength="30" />
</van-cell-group>
<van-cell-group class="mt10" v-else>
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">被保人信息</p>
@@ -151,66 +76,49 @@
<!-- :parentShowPicker.sync="customerShowPicker2" -->
<!-- @nameChange="nameChanges" -->
<!-- @on-click="selectClick('1', '1')" -->
<van-field
:value="userInfo.idType | idToText('insuredIdType')"
v-validate="'required'"
readonly
required
label="证件类型"
name="证件类型"
right-icon="arrow"
placeholder="请选择"
/>
<van-field
v-model="userInfo.idNo"
maxlength="18"
required
readonly
label="证件号码"
v-validate="'required'"
name="证件号码"
placeholder="请输入"
clearable
>
<van-field :value="userInfo.idType | idToText('insuredIdType')" v-validate="'required'" readonly required label="证件类型"
name="证件类型" right-icon="arrow" placeholder="请选择" />
<van-field v-model="userInfo.idNo" maxlength="18" required readonly label="证件号码" v-validate="'required'" name="证件号码"
placeholder="请输入" clearable>
<!-- @blur="getRelatedData(insuredInfo.idNo, '2')" -->
<!-- <van-button v-if="userInfo.idType == 1" slot="button" size="small" type="danger" round @click="selectClick('3')">证件扫描</van-button> -->
</van-field>
<select-radio required :disabled="true" :radios="sexRadio" label="性别" name="性别" v-validate="'required'" :value.sync="userInfo.sex"></select-radio>
<FieldDatePicter
v-validate="'required'"
label="出生日期"
name="出生日期"
readonly
required
:value.sync="userInfo.birthday"
type="date"
:flag="true"
ref="insuredBirthday"
:maxDate="maxDate"
></FieldDatePicter>
<select-radio required :disabled="true" :radios="sexRadio" label="性别" name="性别" v-validate="'required'"
:value.sync="userInfo.sex"></select-radio>
<FieldDatePicter v-validate="'required'" label="出生日期" name="出生日期" readonly required :value.sync="userInfo.birthday"
type="date" :flag="true" ref="insuredBirthday" :maxDate="maxDate"></FieldDatePicter>
<van-field required v-model="userInfo.mobile" clearable label="手机号码" name="手机号码" placeholder="请输入" v-validate="'required|mobile'"
maxlength="11" />
<van-field v-model="userInfo.email" required label="邮箱" name="邮箱" placeholder="请输入" v-validate="'required|email'"
clearable />
<van-field readonly label="职业类别" name="职业类别" :value="userInfo.occupationName" right-icon="arrow" />
<van-field :value="userInfo.nativeplace | idToText('nativeplace')" readonly required label="国籍" name="国籍"
v-validate="'required'" right-icon="arrow" placeholder="请选择" />
<van-field :value="userInfo.marriage | idToText('marriage')" readonly required label="婚姻状况" name="婚姻状况"
v-validate="'required'" right-icon="arrow" placeholder="请选择" />
<van-field v-model="userInfo.homeName" readonly label="联系地址" name="联系地址" required right-icon="arrow" placeholder="请选择"
v-validate="'required'" />
<van-field readonly v-model="userInfo.homeAddress" label name="详细地址" placeholder="请输入详细地址" v-validate="'required'"
clearable maxlength="30" />
</van-cell-group>
<!-- 受益人信息 -->
<van-cell-group class="mt10">
<p style="border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">受益人信息</p>
<van-field required readonly v-model="bnfTypeVal" clearable label="受益人类型" v-validate="'required'" style="border-bottom: 1px solid #ebedf0;" />
<van-field required readonly v-model="bnfTypeVal" clearable label="受益人类型" v-validate="'required'" style="border-bottom: 1px solid #ebedf0" />
</van-cell-group>
<p style="background:white;border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">产品信息</p>
<FieldDatePicter
v-validate="'required'"
label="指定生效日期"
name="指定生效日期"
required
:minDate="now"
:value.sync="cvaliDate"
type="date"
:flag="true"
@confirm="onDateConfirm($event, '6')"
ref="effectiveDate"
input-align:right
>
<p style="background: white; border-bottom: 1px solid #ebedf0" class="fs15 fwb pl10 pv12">产品信息</p>
<van-field :value="schemeName" readonly required label="保障方案" name="保障方案" v-validate="'required'" right-icon="arrow"
placeholder="请选择" @click="toSelect('10')" />
<FieldDatePicter v-validate="'required'" label="指定生效日期" name="指定生效日期" required :minDate="now" :value.sync="cvaliDate"
type="date" :flag="true" @confirm="onDateConfirm($event, '6')" ref="effectiveDate" input-align:right>
</FieldDatePicter>
<van-field value="7天" clearable label="保险期间" style="border-bottom: 1px solid #ebedf0;" />
<van-checkbox-group v-model="result" ref="checkboxGroup" style="box-sizing:border-box;" class="pl8 pr20 pt10 pb10 bg-white">
<div v-if="cvaliDate.length > 0" class="van-cell van-field" style="border-bottom: 1px solid rgb(235, 237, 240);">
<div class="van-cell__title van-field__label"><span>保险期间</span></div>
<div class="van-cell__value">
<div class="van-field__body"><span class="van-field__control">{{productDate}}</span></div>
</div>
</div>
<!-- <van-checkbox-group v-model="result" ref="checkboxGroup" style="box-sizing:border-box;" class="pl8 pr20 pt10 pb10 bg-white">
<van-checkbox name="a" shape="square" icon-size="13px"
>本人已仔细阅读并了解
<span class="blue" @click.stop="goDocu($assetsUrl + 'product/GFRS_M0022/M0022Notice.pdf', '短期交通卡投保须知')">投保须知</span>
@@ -222,34 +130,30 @@
等内容自愿为被保险人投保本保险<br />
为未成年子女投保的人身保险在被保险人成年之前因被保险人身故给付的保险金总和不得超过国务院保险监督管理机构规定的限额身故给付的保险金额总和的约定也不得超过前述限额但航空意外死亡保险金额及重大自然灾害意外死亡保险金额不计算在上述规定限额之中</van-checkbox
>
</van-checkbox-group>
</van-checkbox-group> -->
<!-- <div class="tips" v-if="cvaliDate.length > 0">2020年04月03日0时至2021年04月02日24时止</div> -->
<van-goods-action style="z-index: 99;">
<van-button type="default" style="width:50%;font-size:14px;height:40px;background:white"
>总保费:<span style="color:red;font-weight:bold;font-size:18px;font-weight:400;">{{ allPrice }}</span
></van-button
>
<van-goods-action-button
:disabled="!result.length"
type="danger"
text="立即投保"
@click="nextStep"
v-no-more-click="1000"
style="border-radius:0em;width:50%;height:40px;"
/>
<van-goods-action style="z-index: 99">
<van-button type="default" style="width: 50%; font-size: 14px; height: 40px; background: white">总保费:<span style="color: red; font-weight: bold; font-size: 18px; font-weight: 400">{{
allPrice }}</span></van-button>
<van-goods-action-button type="danger" text="立即投保" @click="nextStep" v-no-more-click="1000" style="border-radius: 0em; width: 50%; height: 40px" />
</van-goods-action>
<!-- 职业类别弹窗 -->
<van-popup v-model="occupationShowPicker" position="bottom">
<occupation-for-loop @chooseOccupation="chooseOccupation" :name="occupationName" :code="occupationCode"></occupation-for-loop>
</van-popup>
<!-- 字段选择 -->
<van-popup v-model="popupShow" position="bottom">
<van-picker show-toolbar :columns="columns" @confirm="onConfirm" @cancel="popupShow = false" />
<van-picker show-toolbar :columns="columns" @confirm="onConfirm" :default-index="pickerIndex" @cancel="popupShow = false" />
</van-popup>
<!-- 地区选择 -->
<van-popup v-model="areaShow" position="bottom">
<!-- <van-popup v-model="areaShow" position="bottom">
<van-area :area-list="areaList" value="110101" @confirm="sureArea($event, '1')" @cancel="areaShow = false" />
</van-popup>
</van-popup> -->
<!-- 家庭地址选择 -->
<van-popup v-model="homeShow" position="bottom">
<van-area :area-list="areaList" value="110101" @confirm="sureArea($event, '2')" @cancel="homeShow = false" />
<van-area :area-list="areaList" :value="areaCode" @confirm="sureArea($event, '2')" @cancel="homeShow = false" />
</van-popup>
<!-- 户籍选择 -->
<van-popup v-model="censusShow" position="bottom">
@@ -277,7 +181,9 @@ import IdentityCardScan from '@/components/ebiz/sale/IdentityCardScan'
import idNoCheck from '@/assets/js/utils/idNoCheck'
import beforeDate from '@/assets/js/utils/getBeforeDate.js'
import afterDate from '@/assets/js/utils/getAfterDate.js'
import CacheUtils from '@/assets/js/utils/cacheUtils'
import { idToData } from './js/verification'
import OccupationForLoop from '@/components/ebiz/occipation/OccupationForLoop'
import { selectComp, getIdentityInfo } from './js/methods'
import Vue from 'vue'
import { GoodsAction, GoodsActionIcon, GoodsActionButton } from 'vant'
@@ -301,16 +207,21 @@ export default {
[Area.name]: Area,
[RadioGroup.name]: RadioGroup,
[Radio.name]: Radio,
[IdentityCardScan.name]: IdentityCardScan
[IdentityCardScan.name]: IdentityCardScan,
OccupationForLoop
},
data() {
return {
schemeName: '', //保障方案
schemeCode: '',
productDate: '', //保险期间
now: afterDate.getAfterDays(1), //指定生效日期最小值
insuredSex: '男',
isScan: false, //是否显示证件扫描组件
allPrice: 0,
result: [],
checked: true,
current: 'userInfo',
sexRadio: [
{
label: '男',
@@ -354,10 +265,17 @@ export default {
relationToInsured: '1',
idType: '1', //证件类型
idNo: '', //证件号码
// homeProvince: '1', //家庭省
// homeCity: '1', //家庭市
// homeArea: '1', //家庭区
// homeAddress: '1', //详细地址
occupationCode: '', //职业代码
occupationName: '', //职业名称
lifeGrade: '', //寿险等级
healthGrade: '', //健康等级
nativeplace: '1', //国家地区
marriageStatus: '', //婚姻状况
homeProvince: '1', //家庭省
homeCity: '1', //家庭市
homeArea: '1', //家庭区
homeName: '', //联系地址
homeAddress: '', //详细地址
mobile: '', //移动电话
email: '' //电子邮箱
// effectiveDate: '' //指定生效日期
@@ -368,7 +286,20 @@ export default {
idType: '1', //被保人证件类型
idNo: '', //被保人证件号码
sex: '0', //被保人性别
birthday: '' //被保人出生日期
birthday: '', //被保人出生日期
occupationCode: '', //职业代码
occupationName: '', //职业名称
lifeGrade: '', //寿险等级
healthGrade: '', //健康等级
nativeplace: '1', //国家地区
marriageStatus: '', //婚姻状况
homeProvince: '1', //家庭省
homeCity: '1', //家庭市
homeArea: '1', //家庭区
homeName: '', //联系地址
homeAddress: '1', //详细地址
mobile: '', //移动电话
email: '' //电子邮箱
},
selectUser: '',
areaList: areaList,
@@ -378,8 +309,11 @@ export default {
occupationShowPicker: false,
timeId: null,
chooseProducts: JSON.parse(localStorage.chooseProducts),
trialList: JSON.parse(localStorage.trialList),
pdf: ['', '', '']
trialList: JSON.parse(CacheUtils.getLocItem('trialList')),
pdf: ['', '', ''],
insureType: '',
pickerIndex: 0,
areaCode: '110101'
}
},
created() {
@@ -411,6 +345,53 @@ export default {
this.allPrice = this.trialList[0].prem
},
methods: {
/**
* @description:
* @param {*} data
* @return {*}
*/
chooseOccupation(data) {
let { code, name, healthGrade, lifeGrade } = data
this.$jump({
flag: 'navigation',
extra: {
title: '职业类别',
hiddenRight: '1'
}
})
this.occupationShowPicker = false
if (this.insureType === '1') {
this.userInfo.occupationName = name
this.userInfo.occupationCode = code
} else if (this.insureType === '2') {
this.insuredInfo.occupationName = name
this.insuredInfo.occupationCode = code
}
},
/**
* @description:
* @param {*}
* @return {*}
*/
openOccupation(insureType) {
this.occupationShowPicker = !this.occupationShowPicker
this.insureType = insureType
if (this.insureType === '1') {
this.occupationName = this.userInfo.occupationName
this.occupationCode = this.userInfo.occupationCode
} else if (this.insureType === '2') {
this.occupationName = this.insuredInfo.occupationName
this.occupationCode = this.insuredInfo.occupationCode
}
},
areaSelect(insureType) {
;[this.homeShow, this.insureType] = [true, insureType]
if (insureType === '1') {
this.areaCode = this.userInfo.homeArea
} else if (insureType === '2') {
this.areaCode = this.insuredInfo.homeArea
}
},
underWrite(orderNo) {
let data = {
platform: 'app',
@@ -475,13 +456,21 @@ export default {
// console.log('name',name)
this.insuredInfo.name = name
},
selectClick(index, value) {
/**
* @description:
* @param {*} index
* @param {*} value
* @param {*} insureType '1'为投保人 '2'为被投保人
* @return {*}
*/
selectClick(index, value, insureType) {
if (value !== undefined) {
this.selectUser = value
}
this.insureType = insureType
selectComp(this, index, insureType)
// console.log(index, value)
// localStorage.setItem('value', value)
selectComp(this, index, '1')
},
// closeBtn() {
// // 筛选按钮的显示
@@ -518,45 +507,104 @@ export default {
this.isScan = false
}
},
chooseOccupation() {
this.$jump({
flag: 'navigation',
extra: {
title: '投被保人信息',
hiddenRight: '1'
}
})
this.occupationShowPicker = false
},
//弹框选择
toSelect(pickerType, valueKey) {
console.log(valueKey)
//pickerType 1、国家地区 2、证件类型 3、文化程度 4、有无社保(弃用) 5、税收居民身份 6、婚姻状况 7、在职情况 8、收入来源, 9 关系
;[this.popupShow, this.pickerType] = [true, pickerType]
if (valueKey) this.valueKey = valueKey
if (pickerType == '1') {
this.columns = DataDictionary.nativeplace
this.pickerIndex = this.userInfo.nativeplace - 1 > 0 ? this.userInfo.nativeplace - 1 : 0
} else if (pickerType == '2') {
this.columns = DataDictionary.cardListInsuredIdType
} else if (pickerType == '3') {
this.columns = DataDictionary.degree
} else if (pickerType == '4') {
this.columns = [
{ id: 0, text: '有' },
{ id: 1, text: '无' }
]
this.columns = [{ id: 0, text: '有' }, { id: 1, text: '无' }]
} else if (pickerType == '5') {
this.columns = DataDictionary.taxIdentity
} else if (pickerType == '6') {
this.columns = DataDictionary.marriage
this.pickerIndex = this.userInfo.marriage - 1 > 0 ? this.userInfo.marriage - 1 : 0
} else if (pickerType == '7') {
this.columns = DataDictionary.workCondition
} else if (pickerType == '8') {
this.columns = DataDictionary.salarySource
} else if (pickerType == '9') {
this.columns = DataDictionary.relationToAppnt
} else if (pickerType == '66') {
this.columns = DataDictionary.marriage
this.pickerIndex = this.insuredInfo.marriage - 1 > 0 ? this.insuredInfo.marriage - 1 : 0
} else if (pickerType == '11') {
this.columns = DataDictionary.insuredIdType
this.columns = DataDictionary.nativeplace
this.pickerIndex = this.insuredInfo.nativeplace - 1 > 0 ? this.insuredInfo.nativeplace - 1 : 0
} else if (pickerType == '10') {
this.trialList = `{
"code": 0,
"message": "成功",
"content": {
"result": "0",
"resultMessage": "",
"content": null,
"trialList": [
{
"productCode": "GFRS_M0041",
"amt": null,
"standPrem": null,
"prem": 100,
"isMainRisk": null,
"isRemit": null,
"remitType": null,
"duty": null,
"showPrem": 100,
"trialType": null,
"schemeName": "国富无忧卡A",
"schemeCode": "M0041A",
"timeliness": 3
},
{
"productCode": "GFRS_M0041",
"amt": null,
"standPrem": null,
"prem": 200,
"isMainRisk": null,
"isRemit": null,
"remitType": null,
"duty": null,
"showPrem": 200,
"trialType": null,
"schemeName": "国富无忧卡B",
"schemeCode": "M0041B",
"timeliness": 3
},
{
"productCode": "GFRS_M0041",
"amt": null,
"standPrem": null,
"prem": 300,
"isMainRisk": null,
"isRemit": null,
"remitType": null,
"duty": null,
"showPrem": 300,
"trialType": null,
"schemeName": "国富无忧卡C",
"schemeCode": "M0041C",
"timeliness": 3
}
],
"flag": "0"
}
}`
this.columns = []
this.trialList = JSON.parse(this.trialList).content.trialList
console.log(this.trialList, '================this.trialList================')
this.trialList.forEach(item => {
this.columns.push({
id: item.schemeCode,
text: item.schemeName
})
})
}
},
//确认选择字段
@@ -581,14 +629,27 @@ export default {
this.userInfo.taxResidentId = value.id
} else if (this.pickerType == '6') {
this.userInfo.marriage = value.id
this.userInfo.marriageStatus = value.text
} else if (this.pickerType == '7') {
this.userInfo.jobStatus = value.id
} else if (this.pickerType == '8') {
this.userInfo.salarySource = value.id
} else if (this.pickerType == '9') {
this.userInfo.relationToInsured = value.id
} else if (this.pickerType == '66') {
this.insuredInfo.marriage = value.id
this.insuredInfo.marriageStatus = value.text
} else if (this.pickerType == '11') {
this.insuredInfo.idType = value.id
this.insuredInfo.nativeplace = value.id
} else if (this.pickerType == '10') {
this.schemeName = value.text
this.schemeCode = value.id
for (let item of this.trialList) {
if (item.schemeCode === this.schemeCode) {
this.allPrice = item.prem
break
}
}
}
},
//证件起始截止日期
@@ -689,15 +750,72 @@ export default {
{
//指定生效日期
//如果录入日期晚于当前日期
// if (Date.parse(val) < Date.parse(new Date())) {
// this.userInfo.birthday = ''
// this.$refs.birthday.date = ''
// return this.$toast('当前日期早于当日')
// }
if (Date.parse(val) < Date.parse(new Date())) {
return this.$toast('当前日期早于当日')
}
let currentDataArr = val.split('-')
let currentData = currentDataArr[0] + '年' + currentDataArr[1] + '月' + currentDataArr[2] + '日'
let insuYear = JSON.parse(localStorage.insuYear)
let insuYearM,productDate,productDateTime
let insuYearD
switch (insuYear.insuYearFlag) {
case 'D':
let hoDate = Date.parse(val) / 1000 + insuYear['insuYear'] * 24 * 3600
productDate = new Date(parseInt(hoDate) * 1000)
insuYearM = (productDate.getMonth() + 1) < 10 ? '0' + (productDate.getMonth() + 1) : (productDate.getMonth() + 1)
insuYearD = productDate.getDate() < 10 ? '0' + productDate.getDate() : productDate.getDate()
productDateTime = productDate.getFullYear() + '年' + insuYearM + '月' + insuYearD + '日'
this.productDate = currentData + '0时至' + productDateTime + '24时止'
break
case 'Y':
productDate = new Date(val)
insuYearM = (productDate.getMonth() + 1) < 10 ? '0' + (productDate.getMonth() + 1) : (productDate.getMonth() + 1)
insuYearD = productDate.getDate() < 10 ? '0' + productDate.getDate() : productDate.getDate()
productDateTime =
parseInt(productDate.getFullYear()) +
parseInt(insuYear['insuYear']) +
'年' +
insuYearM +
'月' +
insuYearD +
'日'
this.productDate = currentData + '0时至' + productDateTime + '24时止'
break
case 'M':
productDateTime = this.GetNextMonthDay(val, insuYear['insuYear'])
this.productDate = currentData + '0时至' + productDateTime + '24时止'
break
}
}
break
}
},
GetNextMonthDay(date, monthNum) {
var dateArr = date.split('-')
var year = dateArr[0] //获取当前日期的年份
var month = dateArr[1] //获取当前日期的月份
var day = dateArr[2] //获取当前日期的日
var days = new Date(year, month, 0)
days = days.getDate() //获取当前日期中的月的天数
var year2 = year
var month2 = parseInt(month) + parseInt(monthNum)
if (month2 > 12) {
year2 = parseInt(year2) + parseInt(parseInt(month2) / 12 == 0 ? 1 : parseInt(month2) / 12)
month2 = parseInt(month2) % 12
}
var day2 = day
var days2 = new Date(year2, month2, 0)
days2 = days2.getDate()
if (day2 > days2) {
day2 = days2
}
if (month2 < 10) {
month2 = '0' + month2
}
var t2 = year2 + '年' + month2 + '月' + day2 + '日'
return t2
},
//选择客户
chooseCustomer(data) {
data = data[0]
@@ -723,19 +841,26 @@ export default {
this.userInfo.sex = customerSex ? customerSex.toString() : '0' //性别
this.userInfo.birthday = data.birthday //出生日期
if (data.customerIdType == 1) {
console.log(data)
this.userInfo.idType = data.customerIdType //证件类型
this.userInfo.idNo = data.customerIdNumber //证件类别
}
this.userInfo.email = data.email //邮箱
this.userInfo.mobile = data.customerPhone //移动电话
// this.userInfo.homeProvince = data.homeProvince //家庭省
// this.userInfo.homeCity = data.homeCity //家庭市
// this.userInfo.homeArea = data.homeArea //家庭区
// if (data.homeProvince && data.homeCity && data.homeArea) {
// this.homeName = getAreaName([{ code: data.homeProvince }, { code: data.homeCity }, { code: data.homeArea }]) //家庭地址
// }
// this.userInfo.homeAddress = data.homeAddress //家庭详细地址
this.userInfo.homeProvince = data.homeProvince //家庭省
this.userInfo.homeCity = data.homeCity //家庭市
this.userInfo.homeArea = data.homeArea //家庭区
if (data.homeProvince && data.homeCity && data.homeArea) {
this.userInfo.homeName = getAreaName([{ code: data.homeProvince }, { code: data.homeCity }, { code: data.homeArea }]) //家庭地址
}
this.userInfo.homeAddress = data.homeAddress //家庭详细地址
this.userInfo.occupationCode = data.occupationCode
this.userInfo.occupationName = data.occupationName
this.userInfo.lifeGrade = data.lifeGrade
this.userInfo.healthGrade = data.healthGrade
this.userInfo.nativeplace = data.country
this.userInfo.marriage = data.marryStatus
// 计算年龄
// let age = utilsAge.getAge(this.userInfo.birthday, new Date())
@@ -751,6 +876,22 @@ export default {
this.insuredInfo.idType = data.customerIdType //证件类型
this.insuredInfo.idNo = data.customerIdNumber //证件类别
}
this.insuredInfo.email = data.email //邮箱
this.insuredInfo.mobile = data.customerPhone //移动电话
this.insuredInfo.homeProvince = data.homeProvince //家庭省
this.insuredInfo.homeCity = data.homeCity //家庭市
this.insuredInfo.homeArea = data.homeArea //家庭区
if (data.homeProvince && data.homeCity && data.homeArea) {
this.insuredInfo.homeName = getAreaName([{ code: data.homeProvince }, { code: data.homeCity }, { code: data.homeArea }]) //家庭地址
}
this.insuredInfo.homeAddress = data.homeAddress //家庭详细地址
this.insuredInfo.occupationCode = data.occupationCode
this.insuredInfo.occupationName = data.occupationName
this.insuredInfo.lifeGrade = data.lifeGrade
this.insuredInfo.healthGrade = data.healthGrade
this.insuredInfo.nativeplace = data.country
this.insuredInfo.marriage = data.marryStatus
// 计算年龄
// let age = utilsAge.getAge(this.userInfo.birthday, new Date())
@@ -986,19 +1127,14 @@ export default {
let params = {
orderDTO: {
orderInfoDTO: {
bnfFlag: '0'
// cvaliDate: this.cvaliDate
bnfFlag: '0',
supportBank: '0'
},
appntDTO: {},
insuredDTOs: [
{
riskDTOLst: this.riskDTOLst
}
]
appntDTO: this.userInfo,
insuredDTOs: [this.insuredInfo]
}
}
params.orderDTO.appntDTO = this.userInfo
params.orderDTO.insuredDTOs = [this.insuredInfo]
//组装险种提交数据
let [mainRiskCode, riskDTOLst] = ['', []]
let rollInResult = '' //校验预计转入保费结果
@@ -1007,6 +1143,7 @@ export default {
if (item.isMainRisk == 0) {
mainRiskCode = item.productCode
}
let insuYearDate = JSON.parse(localStorage.insuYear)
let riskItem = {
cvaliDate: this.cvaliDate,
isMainRisk: item.isMainRisk,
@@ -1018,7 +1155,11 @@ export default {
standPrem: this.trialList[index] && this.trialList[index].standPrem,
predictTransferPrem: item.predictTransferPrem,
thirdInsuraceNo: this.policyNo,
mult: this.mult
mult: this.mult,
proScheme: this.schemeName,
proSchemeCode: this.schemeCode,
insuYear: insuYearDate.insuYear,
insuYearFlag: insuYearDate.insuYearFlag,
}
if (item.hasPredictTransferPrem && item.hasPredictTransferPrem === '0') {
//增加万能险 预计转入保费校验
@@ -1046,6 +1187,7 @@ export default {
// }
// console.log()
// riskItem = Object.assign(riskItem, this.trialInfos[index])
riskDTOLst.push(riskItem)
})
if (!rollInResult) {
@@ -1086,9 +1228,15 @@ export default {
this.areaShow = false
break
case '2': //家庭地址
this.homeName = getAreaName(area)
;[this.userInfo.homeProvince, this.userInfo.homeCity, this.userInfo.homeArea] = [area[0].code, area[1].code, area[2].code]
this.homeShow = false
if (this.insureType === '1') {
this.userInfo.homeName = getAreaName(area)
;[this.userInfo.homeProvince, this.userInfo.homeCity, this.userInfo.homeArea] = [area[0].code, area[1].code, area[2].code]
this.homeShow = false
} else if (this.insureType === '2') {
this.insuredInfo.homeName = getAreaName(area)
;[this.insuredInfo.homeProvince, this.insuredInfo.homeCity, this.insuredInfo.homeArea] = [area[0].code, area[1].code, area[2].code]
this.homeShow = false
}
break
case '3': //户籍
this.census = getAreaName(area)
@@ -1099,7 +1247,7 @@ export default {
},
//获取身份证扫描信息
getIdentityInfo(data) {
getIdentityInfo(this, data, '1')
getIdentityInfo(this, data, this.insureType)
},
// getIdentityInfo(data) {
// console.log(data)
@@ -1185,4 +1333,9 @@ export default {
.van-checkbox__label {
font-size: 13px;
}
.tips {
font-size: 14px;
color: #333;
padding: 15px;
}
</style>

View File

@@ -88,7 +88,7 @@ export function getIdentityInfo(that, data, type) {
// 正面
if (data.name && data.name != '待识别') {
that.userInfo.insuredName = data.name
that.userInfo.insuredidNo = data.idNo
that.insuredInfo.idNo = that.userInfo.insuredidNo = data.idNo
that.userInfo.insuredBirthday = `${data.birthYear}-${data.birthMonth}-${data.birthDay}`
that.userInfo.insuredSex = data.gender == '男' ? '0' : '1'
}

View File

@@ -0,0 +1,779 @@
<template>
<div>
<van-notice-bar
wrapable
:scrollable="false"
text="特别提示:国富人寿为保证您的投保安全,请您点击发送验证码至投保人手机号,输入正确的验证码后点击下一步进入投保流程。"
/>
<van-field
:value="userInfo.mobile | filterMobile"
clearable
label="投保人手机号"
name="投保人手机号"
placeholder="请输入手机号"
v-validate="'required|mobile'"
maxlength="11"
/>
<van-field v-model="userInfo.authCode" center clearable label="" name="短信验证码" placeholder="请输入短信验证码" v-validate="'required'" maxlength="6">
<van-button slot="button" size="small" type="danger" @click="getCode()" :disabled="codeDisabled" v-no-more-click="2000">{{
codeDisabled ? `${countDown}s后重新获取` : '发送验证码'
}}</van-button>
</van-field>
<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>
import { NoticeBar, Field, Button } from 'vant'
import { getOrderDetail, getAuthCode, autchCodeCheck } from '@/api/ebiz/sale/sale'
export default {
name: 'phoneCode',
components: {
[NoticeBar.name]: NoticeBar,
[Field.name]: Field,
[Button.name]: Button,
},
data() {
return {
orderNo: this.$route.query.orderNo,
isWeixin: this.$utils.device().isWeixin,
userInfo: {},
codeDisabled: false,
countDown: 60,
timeId: null,
sessionId: '',
}
},
created() {
console.log(this.$route.query)
// if(isWeixin){
let testData = `{
"appntOrInsured": null,
"deleteFlag": null,
"productDTO": {
"productCode": null,
"productName": null,
"mainRiskCode": null,
"productChannel": null,
"productDesc": null,
"productType": null,
"planCode": null,
"productFlag": null,
"insuranceFlag": null,
"channelCode": null,
"itemStatus": null,
"isSpecial": null,
"special": {
"medical": null,
"content": "",
"dutyCode": null,
"riskCode": null
}
},
"orderInfoDTO": {
"appntDateStr": null,
"orderAmount": 3,
"customerId": null,
"orderNo": "8186270000012555",
"prtNo": "8186270000012555",
"contNo": null,
"prem": null,
"sumPrem": null,
"orderStandAmount": null,
"totalPremium": null,
"amnt": null,
"contState": null,
"expiryDate": null,
"payIntv": null,
"nextPayDate": null,
"bonusFlag": null,
"survivalFlag": null,
"loanFlag": null,
"elecUrl": null,
"productCode": null,
"rate": null,
"underLineIdentification": null,
"saleChannel": null,
"policyNumber": null,
"riskPlanCode": null,
"hesitateDays": null,
"appntDate": "2021-04-01T09:42:34.000+0000",
"appntDateLabel": "2021-04-01",
"bnfType": null,
"checkStatus": null,
"commitDate": null,
"confirmAddress": null,
"confirmZip": null,
"confirmTime": null,
"contPrintStatus": null,
"contSendStatus": null,
"elecContStatus": null,
"giftName": null,
"invoicePrintStatus": null,
"isElecCont": null,
"isLockedOrg": null,
"isUseAddress": null,
"manageOrg": "8645010101",
"needInvoice": null,
"needPrt": null,
"orderStatus": "56",
"planCode": null,
"productChannel": null,
"productType": null,
"smsSendStatus": null,
"productDTO": null,
"orderType": "102",
"productPlat": null,
"createDate": null,
"productName": null,
"bankAccount": null,
"bankCode": null,
"cardBookCode": null,
"supportBank": "0",
"skuCode": null,
"signDate": null,
"silentBatchFlag": null,
"systemSubtype": null,
"staffFlag": null,
"perfUserStatus": null,
"isNewInterface": null,
"orderExecStatus": null,
"freezeLisStatus": null,
"policySyncDate": null,
"actCode": null,
"automaticFee": null,
"expireDate": null,
"loanInterestBeforeday": null,
"loanInterest": null,
"loanMoney": null,
"contValueDate": null,
"contValue": null,
"applyDate": null,
"policyChangeDate": null,
"importLisStatus": null,
"policyValue": null,
"policyValueBeforeday": null,
"lastHesitateDate": null,
"freezePoint": null,
"availablePoint": null,
"autoPayEnd": null,
"autoPayStart": null,
"isAutoPay": null,
"saleChannelDetail": null,
"bnfFlag": "0",
"uwRes": null,
"idRejectReason": null,
"idRejectType": null,
"idCheckRes": null,
"contSendDate": null,
"receiptDate": null,
"doubleFlag": "1",
"isDoubleMailRisk": null,
"activeType": null,
"validateCustomerFlag": null,
"cvaliDate": "2021-04-01",
"nyearCashValue": null
},
"appntDTO": {
"customerNo": null,
"orderNo": "8186270000012555",
"appntId": 18512,
"name": "张华",
"sex": "0",
"birthday": "1980-08-01",
"idType": "1",
"idNo": "110101198008010152",
"idNoStar": null,
"certiexpiredate": null,
"certificateValidate": null,
"nativeplace": null,
"occupationCode": null,
"mobile": "15433112222",
"mobileStar": null,
"telephone": null,
"province": null,
"city": null,
"area": null,
"addressNo": null,
"zip": null,
"email": "8337697@qq.com",
"emailStar": null,
"marriage": null,
"stature": null,
"avoirdupois": null,
"degree": null,
"income": null,
"residentType": null,
"relationToInsured": "1",
"effectiveDateType": "false",
"medical": "",
"workcompany": null,
"postalAddress": null,
"occupationType": null,
"occupationName": null,
"birthdayLabel": "1980-08-01",
"marriageDate": null,
"health": null,
"joinCompanyDate": null,
"startWorkDate": null,
"position": null,
"salary": null,
"smokeFlag": null,
"village": null,
"taxResidentId": null,
"countyOfHospital": null,
"hospitalName": null,
"hospitalType": null,
"stepNumber": null,
"bmi": null,
"cityLevel": null,
"averageAnnualIncome": null,
"familyAnnualIncome": null,
"impartDTO": {
"orderNo": null,
"relationId": null,
"impartType": "0",
"impartItemDTOS": null
},
"financeImpartDTO": {
"orderNo": null,
"relationId": null,
"impartType": "2",
"impartItemDTOS": null
},
"mediaDTOS": null,
"jobStatus": null,
"liabilitiesMoney": null,
"companyProvince": null,
"companyCity": null,
"companyArea": null,
"companyAddress": null,
"companyZip": null,
"companyPhone": null,
"homeProvince": null,
"homeCity": null,
"homeArea": null,
"homeAddress": null,
"homeZip": null,
"homePhone": null,
"signStatus": null,
"signDate": null,
"householdProvince": null,
"householdCity": null,
"addressStatus": null,
"lifeGrade": null,
"healthGrade": null,
"salarySource": null,
"otherSalarySource": null,
"age": null,
"totalPremAll": null,
"proposalCoverUrl": null,
"ridStatus": null,
"maritalStatus": null,
"fincome": null,
"faverageIncome": null
},
"insuredDTOs": [
{
"insuredId": 18852,
"orderNo": "8186270000012555",
"occupationType": null,
"occupationName": null,
"nativeplace": null,
"insuredNo": null,
"socialSecurity": null,
"name": "张华",
"sex": "0",
"birthday": "1980-08-01",
"idType": "1",
"idNo": "110101198008010152",
"idNoStar": null,
"certiexpiredate": null,
"certificateValidate": null,
"insuredAge": null,
"occupationCode": null,
"insuredJobClass": null,
"mobile": "15433112222",
"mobileStar": null,
"telephone": null,
"province": null,
"city": null,
"area": null,
"addressNo": null,
"zip": null,
"email": "8337697@qq.com",
"emailStar": null,
"marriage": null,
"health": null,
"stature": null,
"avoirdupois": null,
"degree": null,
"income": null,
"impartAmnt": null,
"effectiveDateType": "false",
"postalAddress": null,
"workcompany": null,
"relationToMainInsured": null,
"relationToAppnt": null,
"bankCode": null,
"cardBookCode": null,
"cardBookType": null,
"countyOfHospital": null,
"medical": "",
"birthdayLabel": "1980-08-01",
"bnfDTOs": null,
"riskDTOLst": [
{
"bonusGetMode": null,
"mainRiskCode": "GFRS_M0022",
"insuredId": 18852,
"insuanceId": 22532,
"orderNo": "8186270000012555",
"itemCode": null,
"productName": null,
"riskCode": "GFRS_M0022",
"riskName": "国富人寿短期综合交通工具意外伤害保险计划",
"planCode": null,
"planCodeLabel": null,
"planName": null,
"prem": 3,
"showPrem": 3,
"amt": null,
"standPrem": 3,
"addPrem": null,
"mult": null,
"insuYearFlag": "Y",
"insuYear": 1,
"startInsureDate": null,
"stopInsureDate": null,
"payEndYear": null,
"payEndYearFlag": null,
"isMainRisk": "0",
"riskType": "3",
"dutyLst": [
{
"orderNo": "8186270000012555",
"dutyType": null,
"dutyName": "一般意外伤害身故/伤残",
"amt": 300000,
"prem": 300,
"dutyCode": "",
"standPrem": null,
"getLimit": null,
"getRate": null,
"basicAmnt": null,
"insuranceId": 22532
},
{
"orderNo": "8186270000012555",
"dutyType": null,
"dutyName": "一般意外伤害医疗(免赔额100元赔付比例80%)",
"amt": 50000,
"prem": 300,
"dutyCode": "",
"standPrem": null,
"getLimit": null,
"getRate": null,
"basicAmnt": null,
"insuranceId": 22532
},
{
"orderNo": "8186270000012555",
"dutyType": null,
"dutyName": "客运民航班机意外身故/伤残",
"amt": 1000000,
"prem": 300,
"dutyCode": "",
"standPrem": null,
"getLimit": null,
"getRate": null,
"basicAmnt": null,
"insuranceId": 22532
},
{
"orderNo": "8186270000012555",
"dutyType": null,
"dutyName": "轨道列车意外身故/伤残",
"amt": 500000,
"prem": 300,
"dutyCode": "",
"standPrem": null,
"getLimit": null,
"getRate": null,
"basicAmnt": null,
"insuranceId": 22532
},
{
"orderNo": "8186270000012555",
"dutyType": null,
"dutyName": "客运轮船意外身故/残疾",
"amt": 500000,
"prem": 300,
"dutyCode": "",
"standPrem": null,
"getLimit": null,
"getRate": null,
"basicAmnt": null,
"insuranceId": 22532
},
{
"orderNo": "8186270000012555",
"dutyType": null,
"dutyName": "意外住院津贴(免赔3天最多赔付180天)",
"amt": 100,
"prem": 300,
"dutyCode": "",
"standPrem": null,
"getLimit": null,
"getRate": null,
"basicAmnt": null,
"insuranceId": 22532
},
{
"orderNo": "8186270000012555",
"dutyType": null,
"dutyName": "私家车驾乘意外身故/残疾",
"amt": 100000,
"prem": 300,
"dutyCode": "",
"standPrem": null,
"getLimit": null,
"getRate": null,
"basicAmnt": null,
"insuranceId": 22532
}
],
"payIntv": null,
"diseaseType": null,
"cvaliDate": "2021-04-01",
"calFlag": null,
"getEndYear": null,
"getEndYearFlag": null,
"years": null,
"getYearFlag": null,
"getYear": null,
"riskGrade": null,
"acciYearFlag": null,
"acciYear": null,
"firstPremNum": null,
"getStartDate": null,
"getEndDate": null,
"deadGetMode": null,
"liveGetMode": null,
"autoPayFlag": null,
"airNo": null,
"flyDate": null,
"claimScale": null,
"deductAmt": null,
"rnewFlag": null,
"protocolCode": null,
"thirdInsuraceNo": null,
"thirdInsuraceNos": null,
"contPlanCode": null,
"riskLevel": null,
"getIntv": null,
"isDelete": null,
"createdDate": "2021-04-01T09:42:37.000+0000",
"predictTransferPrem": null,
"intMult": 0,
"pdfRiskCode": "202005001",
"getLimit": null,
"getRate": null,
"specInsuredFlag": null,
"url": null,
"clauseName": null,
"riskDutySortResult": null,
"isRotate": null,
"lineNum": null,
"thead": null,
"tableFontSize": null,
"benefitPageCSS": null,
"benefitDesc": null,
"proposalCoverUrl": null,
"choFlag": null,
"isRemit": "1",
"isRenewal": null,
"proScheme": "国富无忧卡C",
"proSchemeCode": "M0041C"
}
],
"impartDTO": {
"orderNo": null,
"relationId": null,
"impartType": "1",
"impartItemDTOS": null
},
"financeImpartDTO": {
"orderNo": null,
"relationId": null,
"impartType": "3",
"impartItemDTOS": null
},
"marriageDate": null,
"joinCompanyDate": null,
"startWorkDate": null,
"position": null,
"salary": null,
"smokeFlag": null,
"village": null,
"taxResidentId": null,
"hospitalType": null,
"hospitalName": null,
"stepNumber": null,
"bmi": null,
"cityLevel": null,
"averageAnnualIncome": null,
"familyAnnualIncome": null,
"totalPrem": null,
"totalAmt": null,
"mediaDTOS": null,
"jobStatus": null,
"liabilitiesMoney": null,
"companyProvince": null,
"companyCity": null,
"companyArea": null,
"companyAddress": null,
"companyZip": null,
"companyPhone": null,
"homeProvince": null,
"homeCity": null,
"homeArea": null,
"homeAddress": null,
"homeZip": null,
"homePhone": null,
"signStatus": null,
"signDate": null,
"householdProvince": null,
"householdCity": null,
"addressStatus": null,
"lifeGrade": null,
"healthGrade": null,
"salarySource": null,
"otherSalarySource": null,
"dutySortResult": null,
"maritalStatus": null,
"ridStatus": null,
"fincome": null,
"faverageIncome": null
}
],
"paymentDTO": null,
"orderAccountDTO": {
"orderNo": null,
"accountName": null,
"accountId": null,
"bankName": null,
"bankCode": null,
"syBankCode": null,
"syAreaCode": null,
"syLocationCode": null,
"otherBankCode": null,
"cardBookType": null,
"cardBookCode": null,
"expiredDate": null,
"cvv2Code": null,
"createdDate": null,
"modifiedDate": null,
"createdUser": null,
"modifiedUser": null,
"isDelete": null,
"isAutoRenewal": null,
"isAutoPay": null,
"accountType": null,
"accBankProvince": null,
"accBankCity": null,
"cw2Code": null
},
"channelDTO": null,
"orderExpandDTO": null,
"thirdOrderDTO": null,
"recmdDTO": {
"agentChannel": null,
"agentList": null,
"city": null,
"code": null,
"customerId": null,
"hasRecommend": null,
"manageOrgLabel": null,
"productChannel": null,
"productCode": null,
"saleChannel": null,
"saleChannelDetail": null,
"orderNo": "8186270000012555",
"recommendType": "01",
"agentCode": "145000173",
"name": "人098",
"agentGroup": null,
"managerOrg": "8645010101",
"employeeId": null,
"createdDate": "2021-04-01T09:42:35.000+0000",
"remark": "青秀一区",
"remark2": null,
"remark3": null,
"remark4": null,
"shareId": null,
"manageComCode": null,
"mobile": null,
"certificateNo": null,
"comAddress": null
},
"smsCodeDTO": null,
"mediaDTOS": [],
"ebizSignDTOS": [
{
"signId": 20915,
"signOrRead": null,
"baseEncryp": null,
"orderNo": "8186270000012555",
"riskCode": "GFRS_M0022",
"documentName": "国富人寿投保须知",
"documentCode": null,
"policyUrl": null,
"originalUrl": "http://139.199.50.151:8000/app/product/GFRS_M0041/DOC/M0041TBXZ.pdf",
"documentType": "0",
"documentStatus": "0",
"signType": null,
"relationId": null,
"signDate": null,
"createdDate": "2021-04-01T09:43:14.000+0000",
"modifiedDate": null,
"createdUser": null,
"modifiedUser": null,
"isDelete": 0,
"isSigned": null
},
{
"signId": 20916,
"signOrRead": null,
"baseEncryp": null,
"orderNo": "8186270000012555",
"riskCode": "GFRS_M0022",
"documentName": "免除保险人责任条款",
"documentCode": null,
"policyUrl": null,
"originalUrl": "http://139.199.50.151:8000/app/product/GFRS_M0041/DOC/M0041MCBXRZRTK.pdf",
"documentType": "0",
"documentStatus": "0",
"signType": null,
"relationId": null,
"signDate": null,
"createdDate": "2021-04-01T09:43:14.000+0000",
"modifiedDate": null,
"createdUser": null,
"modifiedUser": null,
"isDelete": 0,
"isSigned": null
},
{
"signId": 20917,
"signOrRead": null,
"baseEncryp": null,
"orderNo": "8186270000012555",
"riskCode": "GFRS_M0022",
"documentName": "转账授权声明",
"documentCode": null,
"policyUrl": null,
"originalUrl": "http://139.199.50.151:8000/app/product/GFRS_M0041/DOC/M0041ZZSQSM.pdf",
"documentType": "0",
"documentStatus": "0",
"signType": null,
"relationId": null,
"signDate": null,
"createdDate": "2021-04-01T09:43:15.000+0000",
"modifiedDate": null,
"createdUser": null,
"modifiedUser": null,
"isDelete": 0,
"isSigned": null
}
],
"cardOrder": null,
"xqPayDTO": null,
"prtType": "0",
"reason": "未查到详情!"
}`
sessionStorage.orderDetail = testData;
// }
if (this.$route.query.token) {
localStorage.token = this.$route.query.token
this.init()
}
},
methods: {
init() {
localStorage.orderNo = this.$route.query.orderNo;
this.getOrderDetail()
},
nextStep() {
autchCodeCheck({
smsId: this.sessionId,
code: this.userInfo.authCode,
}).then((res) => {
if (res.result == 0) {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/cardList/cardDetail`,
},
routerInfo: {
path: `/cardList/cardDetail`,
},
})
}
})
},
getCode() {
if (this.userInfo.mobile == '') {
return this.$toast('请填写移动电话')
}
let data = {
operateType: 'appntInfoEntry',
type: 'H5',
operateCode: this.userInfo.mobile,
system: 'agentApp',
operateCodeType: '0',
}
//获取验证码
getAuthCode(data).then((res) => {
console.log(res)
if (res.result == 0) {
this.sessionId = res.sessionId
this.codeDisabled = true
//倒计时
this.timeId = setInterval(() => {
this.countDown--
if (this.countDown <= 0) {
window.clearInterval(this.timeId)
this.codeDisabled = false
this.countDown = 60
}
}, 1000)
} else {
this.$toast(res.resultMessage)
}
})
},
// 获取订单详情
getOrderDetail() {
getOrderDetail({ orderNo: this.orderNo }).then((res) => {
console.log('getOrderDetail', res)
if (res.result == '0') {
this.userInfo = res.orderDTO.appntDTO
sessionStorage.orderDetail =JSON.stringify(res.orderDTO);
this.$store.commit('setOrderDetail', res.orderDTO)
} else {
// window.localStorage.setItem('underWriteData', JSON.stringify(underWriteData))
this.$toast(res.resultMessage)
}
})
},
},
filters: {
filterMobile(val) {
if (val == undefined) return ''
if (val.length != 11) return val
return val.slice(0, 3) + '****' + val.slice(-4)
},
},
}
</script>

View File

@@ -21,13 +21,14 @@
</template>
<script>
import { Cell, Toast } from 'vant'
import { Cell, Toast, Dialog } from 'vant'
import { getProductDetails, getProductInfo, insureTrial } from '@/api/ebiz/cardList/cardList.js'
import { getAgentInfo } from '@/api/ebiz/my/my.js'
import CacheUtils from '@/assets/js/utils/cacheUtils'
export default {
name: 'Chanpingxiangqing.vue',
components: {
[Cell.name]: Cell
[Cell.name]: Cell,
},
data() {
return {
@@ -40,8 +41,8 @@ export default {
shareInfo: {
isShare: '',
shareURL: '',
shareFlag: true
}
shareFlag: true,
},
}
},
async created() {
@@ -61,11 +62,11 @@ export default {
extra: {
title: name,
// url: 'http://47.96.143.111/pdfjs/web/viewer.html?file=' + url //测试代码
url: location.origin + '/#/cardList/ShowPDF'
url: location.origin + '/#/cardList/ShowPDF',
},
routerInfo: {
path: '/cardList/ShowPDF'
}
path: '/cardList/ShowPDF',
},
})
// 跳转到产品资料详情
// 保存url
@@ -84,23 +85,37 @@ export default {
// })
},
gotoInformation() {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/cardList/information'
},
routerInfo: {
path: '/cardList/information'
}
Dialog.confirm({
title: '温馨提示',
messageAlign:'left',
confirmButtonColor:'#ee0a24',
confirmButtonText:'立即投保',
cancelButtonText:'返回',
message: `1、您即将进入投保流程为维护您的合法权益投保时请您务必仔细阅读和确认保险条款、投保须知、免除保险人责任条款、犹豫期条款等页面所有内容。<br/>2.您的投保过程和操作将被记录。`,
})
.then(() => {
// on confirm
this.$jump({
flag: 'h5',
extra: {
url: location.origin + '/#/cardList/information',
},
routerInfo: {
path: '/cardList/information',
},
})
})
.catch(() => {
// on cancel
})
},
async getData(code) {
let data = {
itemCode: code,
platform: 'app'
platform: 'app',
}
await getProductDetails(data)
.then(res => {
.then((res) => {
if (res.result == 0) {
// 获取产品特色图片
this.introductImages = res.productShowInfo.introductImages
@@ -115,7 +130,7 @@ export default {
Toast.fail(res.resultMessage)
}
})
.catch(err => {
.catch((err) => {
console.log('errerr', err)
})
if (this.shareInfo.isShare == '2') {
@@ -134,8 +149,8 @@ export default {
title: '分享给您一个产品《' + this.productInfo.productName + '》',
content: '快来投保吧!',
url: this.shareInfo.shareURL,
img: this.$assetsUrl + 'images/logo.png'
}
img: this.$assetsUrl + 'images/logo.png',
},
})
},
async getProductDetail() {
@@ -144,22 +159,23 @@ export default {
let data = {
platform: 'app',
productCodes: [that.productCode],
type: '1'
type: '1',
}
console.log('data', data)
await getProductInfo(data)
.then(res => {
.then((res) => {
if (res.result == 0) {
this.trialInfos = res.trialDTOS[0].productTrialInfoDTO
console.log('this.trialInfos', this.trialInfos)
let resultData = res.trialDTOS[0]
if (resultData.productTrialInfoDTO.dutyGroup != null) {
resultData.productTrialInfoDTO.dutyGroup.map(item => {
resultData.productTrialInfoDTO.dutyGroup.map((item) => {
if (item.dutyName == '意外身故/伤残保险金') {
item.defaultDutyAmt = '50'
}
})
}
localStorage.insuYear = JSON.stringify(this.trialInfos.insuYear[0])
//保存附加险
localStorage.addtionRiskLst = JSON.stringify(resultData.productTrialInfoDTO.addtionRiskLst)
// console.log('resultData', resultData)
@@ -180,7 +196,7 @@ export default {
influences: resultData.productTrialInfoDTO.influences,
isRemit: resultData.productTrialInfoDTO.isRemit,
hasPredictTransferPrem: resultData.productTrialInfoDTO.hasPredictTransferPrem, //建议书使用 是否展示预计转入保费
predictTransferPrem: null //建议书使用 预计转入保费字段
predictTransferPrem: null, //建议书使用 预计转入保费字段
}
//构建险种数组
@@ -199,7 +215,7 @@ export default {
Toast.fail(res.resultMessage)
}
})
.catch(err => {
.catch((err) => {
console.log('errerr', err)
})
},
@@ -207,19 +223,19 @@ export default {
let that = this
// 获取卡单列表
let data = {
trialInfos: [{ productCode: that.productCode }]
trialInfos: [{ productCode: that.productCode }],
}
insureTrial(data)
.then(res => {
.then((res) => {
console.log('resrrrrrr', res)
if (res.result == 0) {
localStorage.trialList = JSON.stringify(res.trialList)
if (res.result == 0) {
CacheUtils.setLocItem('trialList', JSON.stringify(res.trialList))
} else {
Toast.fail(res.resultMessage)
}
})
.catch(err => {
.catch((err) => {
console.log('errerr', err)
})
},
@@ -230,12 +246,12 @@ export default {
let calFactorLst = resultData.productTrialInfoDTO.calFactorLst
console.log('calFactorLst', calFactorLst)
calFactorLst.forEach(item => {
calFactorLst.forEach((item) => {
item['isMainRisk'] = 0
item.columns = []
if (item.type == 0) {
//1、type=0 select 2、type=1 input+stepper
productTrialInfoDTO[item.code].forEach(factor => {
productTrialInfoDTO[item.code].forEach((factor) => {
if (factor.defaultValue == 0) {
item.showContent = factor.showContent
if (factor[item.code + 'Flag'] != undefined) {
@@ -250,7 +266,7 @@ export default {
})
} else if (item.type == 1) {
//按年龄选择
productTrialInfoDTO[item.code].forEach(factor => {
productTrialInfoDTO[item.code].forEach((factor) => {
item = Object.assign(item, factor)
})
if (item.code == 'inputPrem') {
@@ -271,11 +287,13 @@ export default {
// }
// })
return calFactorLst
}
}
},
},
}
</script>
<style lang="scss">
</style>
<style lang="scss" scoped>
img {
width: 100%;

View File

@@ -34,6 +34,6 @@ module.exports = {
// })
},
devServer: {
port:8082
port: 8082,
}
}