初始代码合并--投保流程

This commit is contained in:
pang.lizong
2019-09-22 15:11:33 +08:00
parent bdbe9f8da5
commit 9f81f7de08
10 changed files with 195 additions and 54 deletions

View File

@@ -1,5 +1,5 @@
# env # env
NODE_ENV = 'development' NODE_ENV = 'production'
# flag # flag
VUE_APP_FLAG='development' VUE_APP_FLAG='development'

44
package-lock.json generated
View File

@@ -6387,7 +6387,8 @@
"ansi-regex": { "ansi-regex": {
"version": "2.1.1", "version": "2.1.1",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"aproba": { "aproba": {
"version": "1.2.0", "version": "1.2.0",
@@ -6408,12 +6409,14 @@
"balanced-match": { "balanced-match": {
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"brace-expansion": { "brace-expansion": {
"version": "1.1.11", "version": "1.1.11",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"balanced-match": "^1.0.0", "balanced-match": "^1.0.0",
"concat-map": "0.0.1" "concat-map": "0.0.1"
@@ -6428,17 +6431,20 @@
"code-point-at": { "code-point-at": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"concat-map": { "concat-map": {
"version": "0.0.1", "version": "0.0.1",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"console-control-strings": { "console-control-strings": {
"version": "1.1.0", "version": "1.1.0",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"core-util-is": { "core-util-is": {
"version": "1.0.2", "version": "1.0.2",
@@ -6555,7 +6561,8 @@
"inherits": { "inherits": {
"version": "2.0.3", "version": "2.0.3",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"ini": { "ini": {
"version": "1.3.5", "version": "1.3.5",
@@ -6567,6 +6574,7 @@
"version": "1.0.0", "version": "1.0.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"number-is-nan": "^1.0.0" "number-is-nan": "^1.0.0"
} }
@@ -6581,6 +6589,7 @@
"version": "3.0.4", "version": "3.0.4",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"brace-expansion": "^1.1.7" "brace-expansion": "^1.1.7"
} }
@@ -6588,12 +6597,14 @@
"minimist": { "minimist": {
"version": "0.0.8", "version": "0.0.8",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"minipass": { "minipass": {
"version": "2.3.5", "version": "2.3.5",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"safe-buffer": "^5.1.2", "safe-buffer": "^5.1.2",
"yallist": "^3.0.0" "yallist": "^3.0.0"
@@ -6612,6 +6623,7 @@
"version": "0.5.1", "version": "0.5.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"minimist": "0.0.8" "minimist": "0.0.8"
} }
@@ -6692,7 +6704,8 @@
"number-is-nan": { "number-is-nan": {
"version": "1.0.1", "version": "1.0.1",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"object-assign": { "object-assign": {
"version": "4.1.1", "version": "4.1.1",
@@ -6704,6 +6717,7 @@
"version": "1.4.0", "version": "1.4.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"wrappy": "1" "wrappy": "1"
} }
@@ -6789,7 +6803,8 @@
"safe-buffer": { "safe-buffer": {
"version": "5.1.2", "version": "5.1.2",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"safer-buffer": { "safer-buffer": {
"version": "2.1.2", "version": "2.1.2",
@@ -6825,6 +6840,7 @@
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"code-point-at": "^1.0.0", "code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0", "is-fullwidth-code-point": "^1.0.0",
@@ -6844,6 +6860,7 @@
"version": "3.0.1", "version": "3.0.1",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true,
"requires": { "requires": {
"ansi-regex": "^2.0.0" "ansi-regex": "^2.0.0"
} }
@@ -6887,12 +6904,14 @@
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
}, },
"yallist": { "yallist": {
"version": "3.0.3", "version": "3.0.3",
"bundled": true, "bundled": true,
"dev": true "dev": true,
"optional": true
} }
} }
}, },
@@ -12770,7 +12789,8 @@
"version": "4.0.8", "version": "4.0.8",
"resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
"integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
"dev": true "dev": true,
"optional": true
}, },
"rx-lite-aggregates": { "rx-lite-aggregates": {
"version": "4.0.8", "version": "4.0.8",

View File

@@ -1,7 +1,7 @@
{ {
"name": "ebiz-h5", "name": "ebiz-h5",
"version": "1.0.0", "version": "1.0.0",
"description": "鼎诚人寿", "description": "国富人寿",
"author": "wangfangbo <wang.fangbo@ebiz-fooge.com>", "author": "wangfangbo <wang.fangbo@ebiz-fooge.com>",
"private": true, "private": true,
"scripts": { "scripts": {

View File

@@ -10,10 +10,11 @@ let apiDomain, imgDomain, assetsUrl, mainUrl
console.log('环境:', process.env.VUE_APP_FLAG) console.log('环境:', process.env.VUE_APP_FLAG)
switch (process.env.VUE_APP_FLAG) { switch (process.env.VUE_APP_FLAG) {
case 'development': case 'development':
apiDomain = 'http://47.96.143.111:7000/api/v1' // apiDomain = 'http://47.96.143.111:7000/api/v1'
imgDomain = 'http://116.62.236.168:7012/updown' apiDomain = 'http://139.199.50.151:7000/api/v1' // 国富api
imgDomain = 'http://10.10.100.98:7012/updown' // 影像件上传
// 静态服务资源 // 静态服务资源
assetsUrl = 'http://47.96.143.111:8000/app/' assetsUrl = 'http://139.199.50.151:8000/app/'
mainUrl = 'http://47.96.143.111' mainUrl = 'http://47.96.143.111'
break break
case 'staging': case 'staging':

View File

@@ -30,10 +30,10 @@
</div> </div>
<div class="pcenter-list"> <div class="pcenter-list">
<div class="pcenter-item text-center"> <div class="pcenter-item text-center">
<img :src="$assetsUrl + 'images/pic_chanpin-10.png'" class="w365 h130" alt="" @click="goDetail('DCRSPRO_M0001')" /> <img :src="$assetsUrl + 'images/pic_chanpin-10.png'" class="w365 h130" alt="" @click="goDetail('GFRSPRO_M0002')" />
</div> </div>
<div class="pcenter-item text-center"> <div class="pcenter-item text-center">
<img class="w345 h110" :src="$assetsUrl + 'images/pic_chanpin-2.png'" alt="" @click="goDetail('DCRSPRO_M0002')" /> <img class="w345 h110" :src="$assetsUrl + 'images/pic_chanpin-2.png'" alt="" @click="goDetail('GFRSPRO_M0001')" />
</div> </div>
</div> </div>
</div> </div>

View File

@@ -22,7 +22,7 @@
v-validate="'required|bankCard'" v-validate="'required|bankCard'"
data-vv-name="银行卡号" data-vv-name="银行卡号"
/> />
<van-button type="danger" size="small" class="bankCard mr10 w110 h20" @click="cardScanning('0')" v-no-more-click="1000">银行卡扫描</van-button> <!-- <van-button type="danger" size="small" class="bankCard mr10 w110 h20" @click="cardScanning('0')" v-no-more-click="1000">银行卡扫描</van-button>-->
</van-cell-group> </van-cell-group>
<!-- <van-cell-group class="pl20 fs14 flex align-items-c justify-content-s"> <!-- <van-cell-group class="pl20 fs14 flex align-items-c justify-content-s">
<van-field label="是否自动垫付" disabled /> <van-field label="是否自动垫付" disabled />
@@ -280,6 +280,7 @@ export default {
// window.localStorage.setItem('accountInfomation-bank', that.bank) // window.localStorage.setItem('accountInfomation-bank', that.bank)
window.localStorage.setItem('accountInformationRadio', that.radio) window.localStorage.setItem('accountInformationRadio', that.radio)
// window.localStorage.setItem('accountInformation-isPaymentSelf', JSON.stringify(that.checked)) // window.localStorage.setItem('accountInformation-isPaymentSelf', JSON.stringify(that.checked))
// marked by pang on 2019-09-22 影像上传暂不可用,跳过 todo.... begin
that.$jump({ that.$jump({
flag: 'h5', flag: 'h5',
extra: { extra: {
@@ -289,6 +290,18 @@ export default {
path: '/sale/attachmentManagement' path: '/sale/attachmentManagement'
} }
}) })
// todo.....end
// todo..... delete
// that.$jump({
// flag: 'h5',
// extra: {
// url: location.origin + '/#/sale/signatureConfirmation'
// },
// routerInfo: {
// path: '/sale/signatureConfirmation'
// }
// })
// todo.....end
} else { } else {
that.$toast(res.resultMessage) that.$toast(res.resultMessage)
} }

View File

@@ -25,7 +25,7 @@
/> />
<!-- <van-field v-model="userInfo.idNo" v-validate="'required|idNo'" maxlength="18" label="证件号码" name="证件号码" placeholder="请输入" clearable> --> <!-- <van-field v-model="userInfo.idNo" v-validate="'required|idNo'" maxlength="18" label="证件号码" name="证件号码" placeholder="请输入" clearable> -->
<van-field v-model="userInfo.idNo" maxlength="18" label="证件号码" name="证件号码" placeholder="请输入" clearable @blur="getRelatedData(userInfo.idNo)"> <van-field v-model="userInfo.idNo" maxlength="18" label="证件号码" name="证件号码" placeholder="请输入" clearable @blur="getRelatedData(userInfo.idNo)">
<van-button v-if="userInfo.idType == 1" slot="button" size="small" type="danger" round @click="selectClick('3')">证件扫描</van-button> <!-- <van-button v-if="userInfo.idType == 1" slot="button" size="small" type="danger" round @click="selectClick('3')">证件扫描</van-button>-->
</van-field> </van-field>
<FieldDatePicter <FieldDatePicter
v-validate="'required'" v-validate="'required'"

View File

@@ -46,9 +46,9 @@
v-validate="'required'" v-validate="'required'"
@blur="getRelatedData(userInfo.idNo)" @blur="getRelatedData(userInfo.idNo)"
> >
<van-button v-if="userInfo.idType == 1" slot="button" size="small" type="danger" round @click="selectClick('3')" v-no-more-click="1000" <!-- <van-button v-if="userInfo.idType == 1" slot="button" size="small" type="danger" round @click="selectClick('3')" v-no-more-click="1000"-->
>证件扫描</van-button <!-- >证件扫描</van-button-->
> <!-- >-->
</van-field> </van-field>
<FieldDatePicter <FieldDatePicter
v-validate="'required'" v-validate="'required'"

View File

@@ -35,6 +35,42 @@
<van-button type="danger" style="width: 50vw" @click="cancel" v-no-more-click="1000">返回投保单列表</van-button> <van-button type="danger" style="width: 50vw" @click="cancel" v-no-more-click="1000">返回投保单列表</van-button>
<van-button type="danger" style="width: 50vw" @click="payMent" v-no-more-click="1000">去支付</van-button> <van-button type="danger" style="width: 50vw" @click="payMent" v-no-more-click="1000">去支付</van-button>
</div> </div>
<form ref="payForm" action="http://10.10.100.84:7003/s3-modules-gateway/embed/gateway.action" method="post">
<input name="TransSource" type="text" v-model="payParam.TransSource" />
<input name="TransDate" type="text" v-model="payParam.TransDate" />
<input name="TransTime" type="text" v-model="payParam.TransTime" />
<input name="TransSeq" type="text" v-model="payParam.TransSeq" />
<input name="Version" type="text" v-model="payParam.Version" />
<input name="RdSeq" type="text" v-model="payParam.RdSeq" />
<input name="PaymentCode" type="text" v-model="payParam.PaymentCode" />
<input name="PayType" type="text" v-model="payParam.PayType" />
<input name="SettleMode" type="text" v-model="payParam.SettleMode" />
<input name="ApplyEntity" type="text" v-model="payParam.ApplyEntity" />
<input name="Cur" type="text" v-model="payParam.Cur" />
<input name="OurAmount" type="text" v-model="payParam.OurAmount" />
<input name="FixUser" type="text" v-model="payParam.FixUser" />
<input name="Insurer" type="text" v-model="payParam.Insurer" />
<input name="CertType" type="text" v-model="payParam.CertType" />
<input name="CertNum" type="text" v-model="payParam.CertNum" />
<input name="OppBank" type="text" v-model="payParam.OppBank" />
<input name="OppAct" type="text" v-model="payParam.OppAct" />
<input name="OppActName" type="text" v-model="payParam.OppActName" />
<input name="CellPhone" type="text" v-model="payParam.CellPhone" />
<input name="ExpireDate" type="text" v-model="payParam.ExpireDate" />
<input name="Purpose" type="text" v-model="payParam.Purpose" />
<input name="Memo" type="text" v-model="payParam.Memo" />
<input name="Description" type="text" v-model="payParam.Description" />
<input name="SourceNotecode" type="text" v-model="payParam.SourceNotecode" />
<input name="ReturnURL" type="text" v-model="payParam.ReturnURL" />
<input name="NotifyURL" type="text" v-model="payParam.NotifyURL" />
<input name="SaleChannel" type="text" v-model="payParam.SaleChannel" />
<input name="ReqReserved1" type="text" v-model="payParam.ReqReserved1" />
<input name="ReqReserved2" type="text" v-model="payParam.ReqReserved2" />
<input name="ReqReserved3" type="text" v-model="payParam.ReqReserved3" />
<input name="ReqReserved4" type="text" v-model="payParam.ReqReserved4" />
<input name="ReqReserved5" type="text" v-model="payParam.ReqReserved5" />
<input name="S3Sign" type="text" v-model="payParam.S3Sign" />
</form>
</div> </div>
</template> </template>
@@ -51,7 +87,45 @@ export default {
src: this.$assetsUrl + 'images/cardImg.png', src: this.$assetsUrl + 'images/cardImg.png',
// 核保数据 // 核保数据
underWriteData: {}, underWriteData: {},
srcImg: '' srcImg: '',
payParam: {
TransSource: '', // 对接系统
TransDate: '', // 请求日期
TransTime: '', // 请求时间
TransSeq: '', // 时间戳
Version: '', // 版本号
RdSeq: '', // 指令流水号
PaymentCode: '', // 业务唯一号
PayType: '', // 交易类型
SettleMode: '', // 支付方式
ApplyEntity: '', // 业务发生机构
Cur: '', // 币种
OurAmount: '', // 金额
FixUser: '', // 实名认证标识
Insurer: '', // 对接系统
CertType: '', // 证件类型
CertNum: '', // 证件号码
OppBank: '', // 交易方银行
OppAct: '', // 交易方账号
OppActName: '', // 交易方名称
CellPhone: '', // 手机号码
ExpireDate: '', // 订单失效时间
Purpose: '', // 用途
Memo: '', // 备注
Description: '', // 描述
SourceNotecode: '', // 外部系统业务单据号
ReturnURL: '', // 页面跳转同步通知地址
NotifyURL: '', // 后台通知地址
SaleChannel: '', // 销售渠道
ReqReserved1: '', // 备用字段1
ReqReserved2: '', // 备用字段2
ReqReserved3: '', // 备用字段3
ReqReserved4: '', // 备用字段4
ReqReserved5: '', // 备用字段5
S3Sign: '', // 验签信息
tradeState: '' // 状态
},
gotPayParam: false // 是否已正确获取支付参数
} }
}, },
mounted() { mounted() {
@@ -65,37 +139,62 @@ export default {
this.underWriteData = JSON.parse(window.localStorage.getItem('underWriteData')) this.underWriteData = JSON.parse(window.localStorage.getItem('underWriteData'))
this.srcImg = this.$assetsUrl + `images/bank/bank_${JSON.parse(window.localStorage.getItem('underWriteData')).bankCode}.png` this.srcImg = this.$assetsUrl + `images/bank/bank_${JSON.parse(window.localStorage.getItem('underWriteData')).bankCode}.png`
} }
// 取支付参数
this.getPayParam()
}, },
methods: { methods: {
// 点击支付 // 取支付参数
payMent() { getPayParam() {
let that = this let that = this
let data = { let data = {
orderNo: window.localStorage.getItem('orderNo') orderNo: window.localStorage.getItem('orderNo')
} }
console.log('----取支付参数请求:', data)
acceptInsurance(data).then(res => { acceptInsurance(data).then(res => {
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') { if (res.result == '0') {
// 1成 4支付中 2支付失败 8转批扣 // // 1成 4支付中 2支付失败 8转批扣
// if (res.payStatus == '2') {
window.localStorage.setItem('resMessage', res.resultMessage) // window.localStorage.setItem('resMessage', res.resultMessage)
// }
window.localStorage.setItem('payStatus', res.payStatus) // window.localStorage.setItem('payStatus', res.payStatus)
window.localStorage.setItem('payInfo', JSON.stringify(res)) // window.localStorage.setItem('payInfo', JSON.stringify(res))
that.$jump({ // that.$jump({
flag: 'h5', // flag: 'h5',
extra: { // extra: {
url: location.origin + '/#/sale/payResult', // url: location.origin + '/#/sale/payResult',
backToFirst: '1' // backToFirst: '1'
}, // },
routerInfo: { // routerInfo: {
path: '/sale/payResult' // path: '/sale/payResult'
// }
// })
let keyMap = {}
for (let key in this.payParam) {
keyMap[key.toLowerCase()] = key
} }
}) let paramKey
for (let rKey in res.brPayReturnData) {
if (keyMap.hasOwnProperty(rKey.toLowerCase())) {
paramKey = keyMap[rKey.toLowerCase()]
this.payParam[paramKey] = res.brPayReturnData[rKey]
}
}
console.log('----支付参数this.payParam:', JSON.stringify(this.payParam))
this.gotPayParam = true
this.$forceUpdate()
} else { } else {
that.$toast(res.resultMessage) that.$toast(res.resultMessage)
} }
}) })
}, },
// 点击支付
payMent() {
if (this.gotPayParam) {
this.$refs.payForm.submit()
}
},
// 取消支付 // 取消支付
cancel() { cancel() {
this.$jump({ this.$jump({

View File

@@ -302,9 +302,9 @@ export default {
this.tipsName = JSON.parse(localStorage.getItem('saleInsuredInfo')).name this.tipsName = JSON.parse(localStorage.getItem('saleInsuredInfo')).name
} }
weixinShare({ weixinShare({
title: '鼎诚人寿计划书', title: '国富人寿计划书',
imgUrl: 'http://47.96.143.111:8000/app/images/logo.png', imgUrl: 'http://139.199.50.151:8000/app/images/logo.png',
desc: '鼎诚为您量身定制的保险产品,请查收' desc: '国富为您量身定制的保险产品,请查收'
}) })
let params = { let params = {
orderNo: '' orderNo: ''
@@ -421,9 +421,14 @@ export default {
} }
}) })
} else { } else {
EWebBridge.webCallAppInJs('face_auth', { // 跳过人脸识别
number: that.saleInsuredInfo.idNo, //身份证号码 // EWebBridge.webCallAppInJs('face_auth', {
name: that.saleInsuredInfo.name //姓名 // number: that.saleInsuredInfo.idNo, //身份证号码
// name: that.saleInsuredInfo.name //姓名
// })
new Promise(resolve => {
console.log('--跳过人脸识别--返回识别成功')
resolve(JSON.stringify({ state: '1' }))
}).then(data => { }).then(data => {
if (JSON.parse(data).state == '1') { if (JSON.parse(data).state == '1') {
if (that.appntSign.readStatus == '0') { if (that.appntSign.readStatus == '0') {
@@ -476,11 +481,14 @@ export default {
} }
}) })
} else { } else {
EWebBridge.webCallAppInJs('face_auth', { // 跳过人脸识别
//身份证号码 // EWebBridge.webCallAppInJs('face_auth', {
number: that.saleInsuredPersonInfo.idNo, // number: that.saleInsuredInfo.idNo, //身份证号码
//姓名 // name: that.saleInsuredInfo.name //姓名
name: that.saleInsuredPersonInfo.name // })
new Promise(resolve => {
console.log('--跳过人脸识别--返回识别成功')
resolve(JSON.stringify({ state: '1' }))
}).then(data => { }).then(data => {
if (JSON.parse(data).state == '1') { if (JSON.parse(data).state == '1') {
if (that.insuredSign.readStatus == '0') { if (that.insuredSign.readStatus == '0') {
@@ -551,7 +559,7 @@ export default {
EWebBridge.webCallAppInJs('bridge', { EWebBridge.webCallAppInJs('bridge', {
flag: 'share', flag: 'share',
extra: { extra: {
title: `鼎诚人寿电子投保单(${shareName})签字`, title: `国富人寿电子投保单(${shareName})签字`,
content: '签字进行', content: '签字进行',
url: url:
location.origin + location.origin +