Merge branch 'feature/GFRS-1036【待确定】微信支付-卡单微信支付' into release/0514

This commit is contained in:
tian.guangyuan
2020-05-13 16:32:55 +08:00
3 changed files with 312 additions and 138 deletions

View File

@@ -6,7 +6,7 @@
<van-field :value="underWriteData.orderAmount == undefined ? '' : `${underWriteData.orderAmount} 元`" readonly label="支付金额" />
</van-cell-group>
<!-- 银行卡支付开始 -->
<div class="money">
<!-- <div class="money">
<div>
<img src="../../../assets/images/u10280.png" alt style="margin-top:-5px;margin-right:10px;" />
<span class="oi">银行卡支付</span>
@@ -14,9 +14,26 @@
<div class="i mr20">
<van-radio-group v-model="radio" class="flex justify-content-fe"><van-radio name="1"></van-radio></van-radio-group>
</div>
</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>
<!-- 银行卡支付结束 -->
<van-cell-group>
<van-cell-group v-if="radio != '3'">
<van-field
v-model="underWriteData.name"
label="姓名"
@@ -123,6 +140,10 @@
<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>
</div>
<!-- 银行卡扫描按钮 -->
<van-popup v-model="isScan" style="height:100vh" position="bottom">
@@ -134,6 +155,8 @@
<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>
</div>
</template>
@@ -146,6 +169,7 @@ Vue.use(Button)
import { acceptInsurance, getBankList, underWrite, getOrderDetail } from '@/api/ebiz/sale/sale'
import { saveOrUpdateAccount, getPayTemp } from '@/api/ebiz/cardList/cardList.js'
import BankCardScan from '@/components/ebiz/sale/BankCardScan'
import Loading from '@/components/ebiz/Loading'
import config from '@/config'
export default {
name: 'pay',
@@ -157,10 +181,16 @@ export default {
[List.name]: List,
[Cell.name]: Cell,
[RadioGroup.name]: RadioGroup,
[Radio.name]: Radio
[Radio.name]: Radio,
Loading
},
data() {
let isWeixin = this.$utils.device().isWeixin //判断环境
return {
// 银行卡支付图片地址
src: this.$assetsUrl + 'images/cardImg.png',
// 微信支付图片地址
vxSrc: this.$assetsUrl + 'images/vxImg.png',
// trialList: JSON.parse(localStorage.trialList),
// 核保数据
orderStatus: '',
@@ -171,7 +201,7 @@ export default {
bankCode: '', //银行卡号
bankName: '' //开户银行
},
radio: '1',
radio: '3',
result: [],
isScan: false, //是否显示证件扫描组件
isClear: false, //是否清空
@@ -218,10 +248,32 @@ export default {
},
gotPayParam: false, // 是否已正确获取支付参数,
payStatus: '', // 接口返回的支付状态
noEdit: true
noEdit: true, //是否为编辑
isWeixin, // 是否为微信环境
isLoading: false // 分享到微信后的页面loading
}
},
created() {},
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)
}
// 再次支付 调详情 获取信息
this.getOrderDetail()
},
mounted() {
setTimeout(() => {
// eslint-disable-next-line no-undef
@@ -235,6 +287,9 @@ 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()
@@ -246,11 +301,13 @@ export default {
// } else {
// 再次支付 调详情 获取信息
this.getOrderDetail()
this.getPayTemp()
// this.underWriteData = JSON.parse(window.localStorage.getItem('underWriteData'))
// }
// console.log('--自核结果--支付信息:', JSON.stringify(this.underWriteData))
this.getPayTemp()
// }
},
beforeRouteLeave(to, from, next) {
document.body.style.backgroundColor = ''
@@ -394,26 +451,48 @@ export default {
console.log('getOrderDetail', res)
if (res.result == '0') {
this.orderStatus = res.orderDTO.orderInfoDTO.orderStatus
try {
if (this.noEdit) {
if (res.orderDTO.paymentDTO.cardBookType == '3') {
this.radio = '3'
} else {
this.radio = ''
}
}
} catch (e) {
//TODO handle the exception
}
this.$toast.clear()
console.log(res.orderDTO.orderAccountDTO.bankCode)
this.underWriteData = {
appntName: res.orderDTO.insuredDTOs[0].riskDTOLst[0].riskName,
name: res.orderDTO.appntDTO.name,
bankCode: res.orderDTO.orderAccountDTO.cardBookCode,
bankName: res.orderDTO.orderAccountDTO.bankCode,
cardBookCode: res.orderDTO.orderAccountDTO.cardBookCode,
// bankName: res.orderDTO.orderAccountDTO.bankCode,
// bankCode: res.orderDTO.orderAccountDTO.cardBookCode,
// cardBookCode: res.orderDTO.orderAccountDTO.cardBookCode,
idType: res.orderDTO.appntDTO.idType,
orderAmount: res.orderDTO.orderInfoDTO.orderAmount,
orderNo: res.orderDTO.orderAccountDTO.orderNo,
result: '',
resultMessage: '交易处理成功',
uwResult: '02'
}
this.bankListName = res.orderDTO.orderAccountDTO.bankName
// window.localStorage.setItem('underWriteData', JSON.stringify(underWriteData))
// this.bankListName = res.orderDTO.orderAccountDTO.bankName
this.underWriteData.bankCode =
res.orderDTO.orderAccountDTO.cardBookCode !== null ? res.orderDTO.orderAccountDTO.cardBookCode : this.$route.query.bankCode
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
// if (this.isWeixin) {
// this.pay()
// }
} else {
this.underWriteData = {
accountName: '',
appntName: '',
idType: '',
bankCode: '',
bankName: '',
cardBookCode: '',
@@ -429,35 +508,35 @@ export default {
})
},
// 获取支付信息
async underWrite() {
let data = {
platform: 'app',
type: '1',
orderDTO: {
orderInfoDTO: {
orderNo: window.localStorage.getItem('orderNo')
}
}
}
return underWrite(data)
// .then(res => {
// console.log(res);
// if (res.result == '0') {
// this.$toast.clear()
// if (res.uwResult == '33') {
// window.localStorage.setItem('uwResult', res.uwResult)
// window.localStorage.setItem('resultMessage', res.message)
// } else {
// window.localStorage.setItem('uwResult', res.uwResult)
// }
// this.underWriteData = res
// return true
// } else {
// return false
// this.$toast(res.resultMessage)
// }
// })
},
// async underWrite() {
// let data = {
// platform: 'app',
// type: '1',
// orderDTO: {
// orderInfoDTO: {
// orderNo: window.localStorage.getItem('orderNo')
// }
// }
// }
// return underWrite(data)
// // .then(res => {
// // console.log(res);
// // if (res.result == '0') {
// // this.$toast.clear()
// // if (res.uwResult == '33') {
// // window.localStorage.setItem('uwResult', res.uwResult)
// // window.localStorage.setItem('resultMessage', res.message)
// // } else {
// // window.localStorage.setItem('uwResult', res.uwResult)
// // }
// // this.underWriteData = res
// // return true
// // } else {
// // return false
// // this.$toast(res.resultMessage)
// // }
// // })
// },
async pay() {
let valid = await this.$validator.validate()
console.log(valid)
@@ -465,7 +544,6 @@ export default {
console.log(this.$validator)
return this.$toast(this.$validator.errors.all()[0])
}
switch (this.orderStatus) {
case '56':
case '57':
@@ -486,7 +564,8 @@ export default {
acceptInsurance() {
let data = {
orderNo: window.localStorage.getItem('orderNo'),
cardOrder: 'cardOrder'
cardOrder: 'cardOrder',
payType: this.radio
}
acceptInsurance(data).then(res => {
console.log('----取支付参数结果:', JSON.stringify(res))
@@ -517,6 +596,9 @@ export default {
window.localStorage.setItem('payStatus', res.payStatus)
window.localStorage.setItem('payInfo', JSON.stringify(res))
this.underWriteData.bankListName = this.bankListName
if(this.radio == '3'){
this.underWriteData.bankCode = ''
}
localStorage['cardList-detail'] = JSON.stringify(this.underWriteData)
let thisRef = this
this.$nextTick(() => {
@@ -529,44 +611,76 @@ export default {
}, 100)
})
} else {
this.$toast.clear()
if (!this.isWeixin) {
this.$toast.clear()
} else {
this.isLoading = false
}
this.$toast(res.resultMessage)
}
})
},
// 点击支付
async payMent(flag) {
let data = {
orderDTO: {
orderInfoDTO: {
orderNo: window.localStorage.getItem('orderNo')
},
orderAccountDTO: {
accountType: '0',
accountName: this.underWriteData.name,
bankName: this.bankListName,
bankCode: this.underWriteData.bankName,
cardBookType: '1',
cardBookCode: this.underWriteData.bankCode,
isAutoPay: '0',
isAutoRenewal: '1'
if (this.radio == '') {
let data = {
orderDTO: {
orderInfoDTO: {
orderNo: window.localStorage.getItem('orderNo')
},
orderAccountDTO: {
accountType: '0',
accountName: this.underWriteData.name,
bankName: this.bankListName,
bankCode: this.underWriteData.bankName,
cardBookType: '1',
cardBookCode: this.underWriteData.bankCode,
isAutoPay: '0',
isAutoRenewal: '1'
}
}
}
}
this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
})
/*
支付之前要先保存银行账户信息
*/
let res = await saveOrUpdateAccount(data)
// .then(res => {
console.log('res', res)
this.$toast.clear()
if (res.result == '0') {
this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
})
/*
支付之前要先保存银行账户信息
*/
let res = await saveOrUpdateAccount(data)
// .then(res => {
console.log('res', res)
this.$toast.clear()
if (res.result == '0') {
this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
loadingType: 'spinner',
message: '加载中……'
})
// if (!flag) {
// let rs = await this.underWrite()
// if (rs.result != '0') {
// this.$toast.clear()
// return this.$toast(rs.resultMessage)
// }
// if (rs.uwResult != '02') {
// return this.$toast(rs.message)
// }
// }
this.acceptInsurance()
} else {
this.$toast(res.resultMessage)
this.isLoading = false
}
// })
} else {
this.$toast.loading({
duration: 0, // 持续展示 toast
forbidClick: true, // 禁用背景点击
@@ -574,24 +688,59 @@ export default {
message: '加载中……'
})
if (!flag) {
let rs = await this.underWrite()
// if (!flag) {
// let rs = await this.underWrite()
if (rs.result != '0') {
this.$toast.clear()
return this.$toast(rs.resultMessage)
}
// if (rs.result != '0') {
// this.$toast.clear()
// return this.$toast(rs.resultMessage)
// }
if (rs.uwResult != '02') {
return this.$toast(rs.message)
}
}
// if (rs.uwResult != '02') {
// return this.$toast(rs.message)
// }
// }
this.acceptInsurance()
} else {
this.$toast(res.resultMessage)
}
// })
},
// 选择微信支付校验身份证类型
vxVerify() {
if (this.underWriteData.idType != '1') {
this.$dialog
.confirm({
message: '证件类型不是身份证,无法使用微信支付',
showCancelButton: false
})
.then(() => {
this.radio = ''
})
}
},
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 url = location.origin + '/#/cardList/pay?orderNo=' + localStorage.orderNo + '&token=' + localStorage.token
console.log(url)
EWebBridge.webCallAppInJs('bridge', {
flag: 'share',
extra: {
title: `国富人寿卡单投保(${shareName})付款`,
content: '付款进行',
url: url,
img: this.$assetsUrl + 'images/logo.png'
}
})
}
}
}
@@ -602,36 +751,12 @@ export default {
* {
box-sizing: border-box;
}
.oi {
font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑';
font-weight: 700;
font-style: normal;
color: #666666;
}
.money {
display: flex;
width: 100%;
align-items: center;
justify-content: space-between;
z-index: 100;
background: white;
height: 40px;
overflow: hidden;
> div:nth-of-type(1) {
display: flex;
align-items: center;
img {
width: 33px;
height: 32px;
}
span {
font-size: 14px;
}
}
> div:nth-of-type(2) {
display: flex;
align-items: center;
}
.vximg {
width: 23px;
height: 23px;
padding-left: 13px;
padding-right: 3px;
box-sizing: content-box;
}
</style>

View File

@@ -14,7 +14,7 @@
<van-cell-group v-if="payStatus == 1">
<van-cell title="产品名称" :value="card.appntName" />
<van-cell title="支付金额" :value="`${payInfo.amnt}元` | moneyFormat" v-if="payInfo.amnt != ''" />
<van-cell title="卡号" :value="card.bankCode" />
<van-cell v-if="card.bankCode" title="卡号" :value="card.bankCode" />
</van-cell-group>
<!-- <div v-if="payStatus != '2' && payStatus != '1'" class=" p10 pb250 bg-white">
<span class="pt150 fs14"> 如有相关问题请联系信息技术部运维人员</span>
@@ -32,13 +32,24 @@
<!-- <div class="bottom-btn bg-white" v-if="payStatus == '1' || payStatus == '4' || payStatus == '8'">
<van-button type="danger" size="large" @click="next" v-no-more-click="1000">返回首页</van-button>
</div> -->
<div class="bottom-btn bg-white" v-if="payStatus == '1' || payStatus == '4' || payStatus == '8'">
<van-button type="danger" size="large" @click="next" v-no-more-click="1000">返回首页</van-button>
</div>
<div class="bottom-area bottom-btn flex" v-if="payStatus == '2' || payStatus == '9'">
<van-button class="m-btn w250" type="danger" size="normal" @click="rePayMent">重新支付</van-button>
<van-button class="m-btn w250" type="danger" size="normal" @click="next">返回首页</van-button>
</div>
<template v-if="!isWeixin">
<div class="bottom-btn bg-white" v-if="payStatus == '1' || payStatus == '4' || payStatus == '8'">
<van-button type="danger" size="large" @click="next" v-no-more-click="1000">返回首页</van-button>
</div>
<div class="bottom-area bottom-btn flex" v-if="payStatus == '2' || payStatus == '9'">
<van-button class="m-btn w250" type="danger" size="normal" @click="rePayMent">重新支付</van-button>
<van-button class="m-btn w250" type="danger" size="normal" @click="next">返回首页</van-button>
</div>
</template>
<template v-else>
<div class="bottom-btn bg-white" v-if="payStatus == '1' || payStatus == '4' || payStatus == '8'">
<van-button type="danger" size="large" @click="close" v-no-more-click="1000">返回</van-button>
</div>
<div class="bottom-area bottom-btn flex" v-if="payStatus == '2' || payStatus == '9'">
<van-button class="m-btn w250" type="danger" size="normal" @click="rePayMent">重新支付</van-button>
<van-button class="m-btn w250" type="danger" size="normal" @click="next">返回</van-button>
</div>
</template>
<!-- <div class="bottom-area bottom-btn flex" v-if="payStatus == '9'">
<van-button class="m-btn w250" type="danger" size="normal" @click="rePayMent">重新支付</van-button>
<van-button class="m-btn w250" type="danger" size="normal" @click="changeCard">换卡支付</van-button>
@@ -56,7 +67,9 @@ import { Cell, CellGroup } from 'vant'
import { getPayState } from '@/api/ebiz/sale/sale'
export default {
data() {
let isWeixin = this.$utils.device().isWeixin //判断环境
return {
isWeixin,
// 保融收银台返回的支付流水号
paySeqNo: '',
// 接口返回数据前,不做页面渲染
@@ -158,6 +171,9 @@ export default {
path: '/cardList/pay'
}
})
},
close(){
WeixinJSBridge.call("closeWindow");
}
},
created() {

View File

@@ -270,6 +270,7 @@ import CustomerPicker from '@/components/ebiz/customer/CustomerPicker'
import DataDictionary from '@/assets/js/utils/data-dictionary'
import areaList from '@/assets/js/utils/area'
import { saveOrUpdateCard } from '@/api/ebiz/cardList/cardList.js'
import { underWrite } from '@/api/ebiz/sale/sale'
import utilsAge from '@/assets/js/utils/age'
import getAreaName from '@/assets/js/utils/get-area-name'
import IdentityCardScan from '@/components/ebiz/sale/IdentityCardScan'
@@ -410,6 +411,45 @@ export default {
this.allPrice = this.trialList[0].prem
},
methods: {
underWrite(orderNo) {
let data = {
platform: 'app',
type: '1',
orderDTO: {
orderInfoDTO: {
orderNo: orderNo
}
}
}
underWrite(data)
.then(res => {
console.log(res);
if (res.result == '0') {
this.$toast.clear()
if (res.uwResult == '33') {
window.localStorage.setItem('uwResult', res.uwResult)
window.localStorage.setItem('resultMessage', res.message)
} else {
window.localStorage.setItem('uwResult', res.uwResult)
}
this.underWriteData = res
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/cardList/pay`,
forbidSwipeBack: 1
},
routerInfo: {
path: `/cardList/pay`
}
})
return true
} else {
return false
this.$toast(res.resultMessage)
}
})
},
goDocu(url, name) {
// let pdfUrl = //encodeURIComponent(url)
localStorage.setItem('cardListPDF', JSON.stringify({ documentUrl: url, title: name }))
@@ -1016,7 +1056,7 @@ export default {
let resultData = await saveOrUpdateCard(params)
if (resultData.result == 0) {
console.log(' resultData.orderNo', resultData.content.object)
console.log('resultData.orderNo', resultData.content.object)
//存储被保人信息
// let age = utilsAge.getAge(this.userInfo.birthday, new Date())
// localStorage.saleInsuredInfo = JSON.stringify({
@@ -1030,17 +1070,10 @@ export default {
// localStorage.saleInsuredInfo = JSON.stringify(this.userInfo)
// console.log(this.userInfo)
localStorage.orderNo = resultData.content.object
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/cardList/pay`,
forbidSwipeBack: 1
},
routerInfo: {
path: `/cardList/pay`
}
})
let orderNo = localStorage.orderNo = resultData.content.object
this.underWrite(orderNo)
} else {
console.error(resultData.resultMessage)
this.$toast(resultData.resultMessage)