Commit b49f9b15 authored by beisir's avatar beisir

Merge branch 'feat/group-buy' of git.quantgroup.cn:ui/group-buy-ui into feat/group-buy

parents 5ae75da5 3a02a582
...@@ -23,7 +23,7 @@ export default { ...@@ -23,7 +23,7 @@ export default {
}, },
name: { name: {
type: String, type: String,
default: '易烊千玺' default: ''
}, },
color: { color: {
type: String, type: String,
......
...@@ -108,7 +108,9 @@ function payByALIH5(info) { ...@@ -108,7 +108,9 @@ function payByALIH5(info) {
*/ */
function payByThirdPartyCashier(info) { function payByThirdPartyCashier(info) {
if (!info.url) return; if (!info.url) return;
const orderNo = cookies.get('orderNo')?.orderNo;
info.params.third = 1; info.params.third = 1;
info.params.orderNo = orderNo;
const currentPath = encodeURIComponent( const currentPath = encodeURIComponent(
window.location.origin + window.location.origin +
'/payWaiting' + '/payWaiting' +
......
...@@ -112,6 +112,13 @@ ...@@ -112,6 +112,13 @@
margin-right: @padding-x; margin-right: @padding-x;
flex-shrink: 0; flex-shrink: 0;
position: relative; position: relative;
&-img-box{
width: 100%;
height: 100%;
/deep/ img {
border-radius: 6px;
}
}
} }
&-desc{ &-desc{
flex: 1; flex: 1;
......
...@@ -16,7 +16,12 @@ ...@@ -16,7 +16,12 @@
class="goods-product-info-tag" class="goods-product-info-tag"
>{{ detailInfo.groupBuyInfo.groupBuyLimitUserCount }}人团</span >{{ detailInfo.groupBuyInfo.groupBuyLimitUserCount }}人团</span
> >
<cr-image width="108px" :src="detailInfo.thumbImageUrl" /> <cr-image
class="goods-product-info-img-img-box"
width=""
height=""
:src="detailInfo.thumbImageUrl"
/>
</div> </div>
<div class="goods-product-info-desc"> <div class="goods-product-info-desc">
<div class="goods-product-info-desc-part1"> <div class="goods-product-info-desc-part1">
......
...@@ -36,10 +36,9 @@ const WECHAT_PAY = 2; ...@@ -36,10 +36,9 @@ const WECHAT_PAY = 2;
const ALIPAY_PAY = 3; const ALIPAY_PAY = 3;
const CREDIT_AND_WECHAT_PAY = 4; const CREDIT_AND_WECHAT_PAY = 4;
const CREDIT_AND_ALIPAY_PAY = 5; const CREDIT_AND_ALIPAY_PAY = 5;
const CASH_PAY = 6;
// 三方支付 // 三方支付
const IS_THIRD_PAY = method => [WECHAT_PAY, ALIPAY_PAY, CASH_PAY].indexOf(method) > -1; const IS_THIRD_PAY = method => [WECHAT_PAY, ALIPAY_PAY].indexOf(method) > -1;
//组合支付 //组合支付
const IS_GROUP_PAY = method => [CREDIT_AND_WECHAT_PAY, CREDIT_AND_ALIPAY_PAY].indexOf(method) > -1; const IS_GROUP_PAY = method => [CREDIT_AND_WECHAT_PAY, CREDIT_AND_ALIPAY_PAY].indexOf(method) > -1;
//信用支付 //信用支付
...@@ -53,8 +52,6 @@ const FACE_VERIFICATION_CODE_PAY = 4; //人脸验证 ...@@ -53,8 +52,6 @@ const FACE_VERIFICATION_CODE_PAY = 4; //人脸验证
const PAY_SUCCESS = 3; // 支付成功 const PAY_SUCCESS = 3; // 支付成功
const PAY_PAYING = 2; //支付中 const PAY_PAYING = 2; //支付中
const CASH_PAY_SUCCESS = 1; // 现金券支付成功
function isDetentionFn() { function isDetentionFn() {
// 推荐开通享花卡 // 推荐开通享花卡
if (this.creditPayInfo.accountStatus !== ACCOUNT_APPLY_SUCCESS) { if (this.creditPayInfo.accountStatus !== ACCOUNT_APPLY_SUCCESS) {
...@@ -136,10 +133,19 @@ function filterAllPayList(type, data) { ...@@ -136,10 +133,19 @@ function filterAllPayList(type, data) {
} }
return data; return data;
} }
const payTypeMap = {
'1': '信用支付',
'2': '微信支付',
'3': '支付宝支付',
'4': '信用支付_微信支付',
'5': '信用支付_支付宝支付',
'6': '虚拟支付0元付'
};
export { export {
status, status,
codeArr, codeArr,
CASH_PAY,
payTypeE, payTypeE,
payStatus, payStatus,
PAY_PAYING, PAY_PAYING,
...@@ -157,7 +163,6 @@ export { ...@@ -157,7 +163,6 @@ export {
filterAllPayList, filterAllPayList,
ACCOUNT_NO_APPLY, ACCOUNT_NO_APPLY,
PAYMENT_CODE_PAY, PAYMENT_CODE_PAY,
CASH_PAY_SUCCESS,
ACCOUNT_APPLY_FAIL, ACCOUNT_APPLY_FAIL,
creditPayStatusType, creditPayStatusType,
CREDIT_AND_WECHAT_PAY, CREDIT_AND_WECHAT_PAY,
...@@ -166,5 +171,6 @@ export { ...@@ -166,5 +171,6 @@ export {
ACCOUNT_APPLY_AUDITING, ACCOUNT_APPLY_AUDITING,
ACCOUNT_APPLY_AUDIT_FAIL, ACCOUNT_APPLY_AUDIT_FAIL,
SMS_VERIFICATION_CODE_PAY, SMS_VERIFICATION_CODE_PAY,
FACE_VERIFICATION_CODE_PAY FACE_VERIFICATION_CODE_PAY,
payTypeMap
}; };
<template> <template>
<div class="coupon"> <div class="pay-type-list">
<p class="coupon-face"> <p class="type-title">{{ value.title }}</p>
<span class="coupon-amount">{{ value.faceValue }}</span> <payGroupItem
<span class="coupon-name">{{ value.name }}</span> v-if="value.isGroupPay"
</p> v-model="payList"
<p class="coupon-content"> :pay-type="payType"
<span class="coupon-desc">{{ value.description }}</span> :disabled="disabled"
<span class="coupon-time">{{ value.couponValidTime }}</span> :coupon-info="couponInfo"
</p> :show-coupon="showCoupon"
<p class="coupon-action"> :coupon-disabled="showCoupon && !payCouponCouldBeUsed"
<cr-button size="mini" type="primary" shape="circle" class="coupon-button" @click="goNavUrl" />
>去使用</cr-button <template v-else>
> <template v-for="(item, key) of payList">
</p> <payCardItem
v-if="item.show"
:key="key"
:pay-type="payType"
:value="item"
:disabled="disabled"
:coupon-info="couponInfo"
:show-coupon="showCoupon"
:coupon-disabled="showCoupon && !payCouponCouldBeUsed"
/>
</template>
</template>
</div> </div>
</template> </template>
<script> <script>
import payCardItem from './PayCardItem';
import payGroupItem from './PayGroupCard.vue';
export default { export default {
name: 'PayCard',
components: {
payCardItem,
payGroupItem
},
provide() {
return {
payCard: this
};
},
props: { props: {
value: Object value: Object,
payType: Number,
payText: String,
disabled: Boolean,
couponInfo: Object,
riskLimit: Boolean,
showCoupon: Boolean,
payCouponCouldBeUsed: Boolean,
single: { type: Boolean, default: false },
creditPay: { type: Boolean, default: false }
}, },
methods: { data() {
goNavUrl() { return {
this.$emit('click'); payList: this?.value?.payList || {}
} };
} },
mounted() {},
methods: {}
}; };
</script> </script>
<style lang="less" scoped> <style lang="less">
.coupon { .pay-type-list {
width: 327px; background-color: #fff;
height: 97px; border-radius: @border-radius-sm;
background-size: 100%; margin-top: @padding-sm;
background-image: url('../../../assets/images/pay/couponCard.png'); .type-title {
margin-right: @padding-sm; height: 48px;
padding: @padding-unit; .text-16;
box-sizing: border-box;
&-face {
width: 90px;
color: @red-light;
display: inline-flex;
flex-direction: column;
align-items: center;
justify-content: center;
span {
display: block;
}
}
&-amount {
.text-30;
width: 100%;
display: flex;
flex-wrap: wrap;
word-break: break-all;
text-align: center;
font-family: PingFangSC-Medium;
&::before {
content: '¥';
.text-12;
}
}
&-name {
.text-12;
}
&-content {
width: 137px;
display: inline-flex;
flex-direction: column;
align-items: center;
justify-content: center;
span {
display: inline-block;
width: 100%;
}
}
&-desc {
.text-14;
color: @black;
overflow: hidden;
font-weight: bold; font-weight: bold;
display: -webkit-box !important; padding-left: @padding-md;
-webkit-box-orient: vertical; position: relative;
-webkit-line-clamp: 3; line-height: 48px;
overflow: hidden;
}
&-time {
.text-12;
display: flex;
color: @gray-5;
word-break: break-all;
align-items: flex-start;
}
&-action {
width: 90px;
display: inline-flex;
align-items: center;
justify-content: center;
text-align: center;
}
&-button {
width: 64px;
} }
} }
</style> </style>
...@@ -20,10 +20,10 @@ ...@@ -20,10 +20,10 @@
<p>{{ value.accountStatusDesc }}</p> <p>{{ value.accountStatusDesc }}</p>
</div> </div>
</div> </div>
<div v-if="showCoupon && value.payType === 1 && !value.riskLimitDesc" class="coupon"> <div v-if="showCoupon && value.payType === 1" class="coupon">
<p class="couponDes" :class="{ disable: couponDisabled }" @click.stop="openCouponModal"> <p class="couponDes" :class="{ disable: couponDisabled }" @click.stop="openCouponModal">
<span v-if="couponInfo.pickupId"> <span v-if="couponInfo.pickupId">
{{ `满${couponInfo.limitAmount}减${couponInfo.faceValue}元` }} {{ `满${couponInfo.limitAmountNew}减${couponInfo.faceValueNew}元` }}
</span> </span>
<span v-else> <span v-else>
未选择优惠券 未选择优惠券
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<div class="dashed"> <div class="dashed">
<p class="dashed-line" /> <p class="dashed-line" />
<cr-image <cr-image
src="../../../assets/images/pay/addicon.png" src="@/assets/images/pay/addicon.png"
width="24px" width="24px"
height="24px" height="24px"
class="dashed-icon" class="dashed-icon"
......
...@@ -83,8 +83,9 @@ export default { ...@@ -83,8 +83,9 @@ export default {
} }
}, },
getPhone() { getPhone() {
const phone = localStorage.get('userInfo')?.phoneNumber; const phone = localStorage.get('phoneNo');
return phone; const phoneS = `${phone}`.replace(/(\d{3})\d*(\d{4})/, '+86 $1 **** $2');
return phoneS;
}, },
clearTimer() { clearTimer() {
clearInterval(this.timer); clearInterval(this.timer);
......
...@@ -54,7 +54,9 @@ ...@@ -54,7 +54,9 @@
</cr-button> </cr-button>
</p> </p>
<p v-if="overtime" class="btn"> <p v-if="overtime" class="btn">
<cr-button type="default" class="btn-default" @click="goOrderList">我的订单</cr-button> <cr-button v-if="isOrder" type="default" class="btn-default" @click="goOrderList"
>我的订单</cr-button
>
<cr-button type="primary" class="btn-primary" @click="goHome">返回商城</cr-button> <cr-button type="primary" class="btn-primary" @click="goHome">返回商城</cr-button>
</p> </p>
<p class="placeholder" /> <p class="placeholder" />
...@@ -103,7 +105,6 @@ import { goUrlExtends } from './extends'; ...@@ -103,7 +105,6 @@ import { goUrlExtends } from './extends';
import cookies from '@/service/cookieStorage.service'; import cookies from '@/service/cookieStorage.service';
import { import {
codeArr, codeArr,
CASH_PAY,
CREDIT_PAY, CREDIT_PAY,
PAY_SUCCESS, PAY_SUCCESS,
creditStatus, creditStatus,
...@@ -113,8 +114,7 @@ import { ...@@ -113,8 +114,7 @@ import {
isDetentionFn, isDetentionFn,
havePayingOrder, havePayingOrder,
filterAllPayList, filterAllPayList,
PAYMENT_CODE_PAY, PAYMENT_CODE_PAY, // 支付密码
CASH_PAY_SUCCESS,
ACCOUNT_APPLY_FAIL, ACCOUNT_APPLY_FAIL,
creditPayStatusType, creditPayStatusType,
ACCOUNT_APPLY_SUCCESS, ACCOUNT_APPLY_SUCCESS,
...@@ -125,13 +125,13 @@ import { ...@@ -125,13 +125,13 @@ import {
pay, pay,
prepay, prepay,
getCoupon, getCoupon,
h5AppyUrl,
ocrFaceId, ocrFaceId,
queryPayInfo, queryPayInfo,
kaGetNextUrl, kaGetNextUrl,
reissueContract reissueContract
} from '@/api/pay.api.js'; } from '@/api/pay.api.js';
import { saTrackEvent } from '@/service/sa.service'; const VCC_CHANNEL = localStorage.get('vccChannel') || '';
const VCC_CHANNEL = localStorage.get('vccChannel');
let Current_Url = null; let Current_Url = null;
export default { export default {
components: { components: {
...@@ -147,6 +147,7 @@ export default { ...@@ -147,6 +147,7 @@ export default {
extends: goUrlExtends, extends: goUrlExtends,
data() { data() {
return { return {
isOrder: true,
error: '', error: '',
random: '', random: '',
orderNo: '', orderNo: '',
...@@ -185,8 +186,7 @@ export default { ...@@ -185,8 +186,7 @@ export default {
payContractInfo: {}, payContractInfo: {},
isCheckAgreement: false, isCheckAgreement: false,
mergePayPretreatmentInfo: {}, mergePayPretreatmentInfo: {},
tradeType: isWechat ? 'JSAPI' : 'MWEB', tradeType: isWechat ? 'JSAPI' : 'MWEB'
amountInfo: {}
}; };
}, },
computed: { computed: {
...@@ -194,9 +194,9 @@ export default { ...@@ -194,9 +194,9 @@ export default {
return this.isRiskLimit(); return this.isRiskLimit();
}, },
amount() { amount() {
return IS_THIRD_PAY(this.payType) || !this.selectedCoupon.faceValue return IS_THIRD_PAY(this.payType) || !this.selectedCoupon.faceValueNew
? this.displayInfo.orderAmt ? this.displayInfo.orderAmt
: (this.displayInfo.orderAmt - this.selectedCoupon.faceValue).toFixed(2); : (this.displayInfo.orderAmt - this.selectedCoupon.faceValueNew).toFixed(2);
}, },
isShowProtocol() { isShowProtocol() {
return ( return (
...@@ -207,7 +207,7 @@ export default { ...@@ -207,7 +207,7 @@ export default {
}, },
canUseAmount() { canUseAmount() {
return ( return (
((this.selectedCoupon?.faceValue && +this.selectedCoupon.faceValue) || 0) + ((this.selectedCoupon?.faceValueNew && +this.selectedCoupon.faceValueNew) || 0) +
((this.displayInfo?.creditPayInfo?.canAmt && +this.displayInfo.creditPayInfo.canAmt) || 0) - ((this.displayInfo?.creditPayInfo?.canAmt && +this.displayInfo.creditPayInfo.canAmt) || 0) -
((this.displayInfo?.orderAmt && +this.displayInfo.orderAmt) || 0) ((this.displayInfo?.orderAmt && +this.displayInfo.orderAmt) || 0)
); );
...@@ -219,6 +219,8 @@ export default { ...@@ -219,6 +219,8 @@ export default {
} }
}, },
mounted() { mounted() {
this.getQuery();
this.setIsOrder();
this.orderNo = this.$route.query.orderNo || cookies.get('orderNo')?.orderNo; this.orderNo = this.$route.query.orderNo || cookies.get('orderNo')?.orderNo;
cookies.set('orderNo', { orderNo: this.orderNo }); cookies.set('orderNo', { orderNo: this.orderNo });
if (this.$route?.query?.ocrflag) { if (this.$route?.query?.ocrflag) {
...@@ -234,15 +236,23 @@ export default { ...@@ -234,15 +236,23 @@ export default {
this.getCouponList(this.orderNo); this.getCouponList(this.orderNo);
}, },
methods: { methods: {
getQuery() {
this.returnUrl = cookies.get('returnUrl') || '';
if (localStorage.get('hideOrder')) {
this.isOrder = false;
}
},
setIsOrder() {
const { hideOrder } = this.$route.query || {};
if (hideOrder) {
localStorage.set('hideOrder', hideOrder);
}
},
/* 查询支付信息 */ /* 查询支付信息 */
async queryPayInfo() { async queryPayInfo() {
console.log({
orderNo: this.orderNo,
isUsedMergePayMethod: false
});
const [data, error] = await queryPayInfo({ const [data, error] = await queryPayInfo({
orderNo: this.orderNo, orderNo: this.orderNo,
isUsedMergePayMethod: false isUsedMergePayMethod: cookies.get('source') !== 'tob' // 是否需要组合支付,true需要。false不需要
}); });
if (error && codeArr.indexOf(error?.response?.businessCode) < 0) { if (error && codeArr.indexOf(error?.response?.businessCode) < 0) {
this.payResult('Fail'); this.payResult('Fail');
...@@ -333,7 +343,7 @@ export default { ...@@ -333,7 +343,7 @@ export default {
const { accountStatus, riskManagementAmt } = this.creditPayInfo; const { accountStatus, riskManagementAmt } = this.creditPayInfo;
const { orderAmt } = this.displayInfo; const { orderAmt } = this.displayInfo;
if (accountStatus === ACCOUNT_APPLY_SUCCESS) { if (accountStatus === ACCOUNT_APPLY_SUCCESS) {
const coupon = +this.selectedCoupon.faceValue || 0; const coupon = +this.selectedCoupon.faceValueNew || 0;
return +riskManagementAmt + coupon < +orderAmt; return +riskManagementAmt + coupon < +orderAmt;
} else { } else {
return false; return false;
...@@ -362,7 +372,7 @@ export default { ...@@ -362,7 +372,7 @@ export default {
}; };
} else if (accountStatus === ACCOUNT_APPLY_SUCCESS) { } else if (accountStatus === ACCOUNT_APPLY_SUCCESS) {
const finalCount = this.showCoupon const finalCount = this.showCoupon
? (this.displayInfo.orderAmt - (this.selectedCoupon.faceValue || 0)).toFixed(2) ? (this.displayInfo.orderAmt - (this.selectedCoupon.faceValueNew || 0)).toFixed(2)
: this.displayInfo.orderAmt; : this.displayInfo.orderAmt;
const txt = `实际支付${finalCount || '0.00'}`; const txt = `实际支付${finalCount || '0.00'}`;
this.accountS = { this.accountS = {
...@@ -384,7 +394,6 @@ export default { ...@@ -384,7 +394,6 @@ export default {
this.payCouponList = []; this.payCouponList = [];
if (data && data.coupons) { if (data && data.coupons) {
data.coupons.forEach(item => { data.coupons.forEach(item => {
// 享花券
if (item.couponCategory === 21) { if (item.couponCategory === 21) {
this.payCouponList.push({ this.payCouponList.push({
...item, ...item,
...@@ -396,13 +405,6 @@ export default { ...@@ -396,13 +405,6 @@ export default {
} }
}, },
nextAction: throttle(function() { nextAction: throttle(function() {
const trackParams = {
order_id: this.orderNo,
pay_method: this.payType,
vcc_state: !IS_THIRD_PAY(this.payType) ? this.creditPayInfo?.accountStatus : '',
buttons_name: this.accountS.text
};
cookies.set('payTrackInfo', trackParams);
if (this.isShowProtocol) { if (this.isShowProtocol) {
if (!this.isCheckAgreement) { if (!this.isCheckAgreement) {
this.$toast('请仔细阅读并同意相关协议'); this.$toast('请仔细阅读并同意相关协议');
...@@ -410,9 +412,6 @@ export default { ...@@ -410,9 +412,6 @@ export default {
} }
this.reissueContract(); this.reissueContract();
} }
saTrackEvent('H5_CheckOutCounterConfirmPayBtnClick', {
order_type: '0元购'
});
this.accountS.fn(); this.accountS.fn();
}, 1000), }, 1000),
/* 预支付 */ /* 预支付 */
...@@ -424,13 +423,7 @@ export default { ...@@ -424,13 +423,7 @@ export default {
} }
this.error = ''; this.error = '';
this.setAmount(); this.setAmount();
if ( if (!params && !this.isDetention && IS_THIRD_PAY(this.payType) && !isOcr) {
!params &&
!this.isDetention &&
IS_THIRD_PAY(this.payType) &&
this.payType !== CASH_PAY &&
!isOcr
) {
this.isDetention = true; this.isDetention = true;
isDetentionFn.call(this); isDetentionFn.call(this);
return; return;
...@@ -483,15 +476,7 @@ export default { ...@@ -483,15 +476,7 @@ export default {
this.pwdModal && this.retrieve(); this.pwdModal && this.retrieve();
return; return;
} }
// TODO 此处在获取与支付信息后,,跳转前通过判断渠道号,来判断是否在app中的打开,来规避支付等待页中的schema跳转问题 const { creditPayInfo = {}, wxPayInfo = {}, flowOrderNo, aliPayInfo = {} } = data;
if (localStorage.get('vccChannel')) localStorage.set('isAppInner', true);
const {
creditPayInfo = {},
wxPayInfo = {},
flowOrderNo,
aliPayInfo = {},
vmPayInfo = {}
} = data;
const creditPayStatus = creditPayInfo.creditPayStatus; const creditPayStatus = creditPayInfo.creditPayStatus;
this.flowOrderNo = flowOrderNo; this.flowOrderNo = flowOrderNo;
if (wxPayInfo.mwebUrl) { if (wxPayInfo.mwebUrl) {
...@@ -529,9 +514,6 @@ export default { ...@@ -529,9 +514,6 @@ export default {
}); });
this.close(); this.close();
this.goOcr(); this.goOcr();
} else if (vmPayInfo?.vmPayStatus === CASH_PAY_SUCCESS) {
!params && this.pay({ flowOrderNo: this.flowOrderNo });
params && this.payResult('Success');
} }
}, },
payResult(type, error) { payResult(type, error) {
...@@ -541,18 +523,12 @@ export default { ...@@ -541,18 +523,12 @@ export default {
query: { query: {
reason: error, reason: error,
orderNo: this.orderNo, orderNo: this.orderNo,
payType: this.payType, payType: this.payType
finalAmt: this.amountInfo.finalAmt || '',
freeAmount: this.amountInfo.freeAmount || ''
} }
}); });
}, },
/* 选择支付方式 */ /* 选择支付方式 */
changePayType(type, mergePayPretreatmentInfo) { changePayType(type, mergePayPretreatmentInfo) {
if (this.payType === CASH_PAY) {
this.$toast('请选择现金券支付!');
type = CASH_PAY;
}
this.payType = type; this.payType = type;
this.isDetention = false; this.isDetention = false;
this.thirdPayList = filterAllPayList(type, this.thirdPayList); this.thirdPayList = filterAllPayList(type, this.thirdPayList);
...@@ -566,6 +542,12 @@ export default { ...@@ -566,6 +542,12 @@ export default {
/* 选取优惠券 */ /* 选取优惠券 */
handleSelectCoupon(id, selectedCoupon) { handleSelectCoupon(id, selectedCoupon) {
this.selectedCoupon = selectedCoupon || {}; this.selectedCoupon = selectedCoupon || {};
if (!('faceValueNew' in this.selectedCoupon) && 'faceValue' in this.selectedCoupon) {
this.selectedCoupon.faceValueNew = this.selectedCoupon.faceValue;
}
if (!('limitAmountNew' in this.selectedCoupon) && 'limitAmount' in this.selectedCoupon) {
this.selectedCoupon.limitAmountNew = this.selectedCoupon.limitAmount;
}
this.getBtnStatus(this.isRiskLimit()); this.getBtnStatus(this.isRiskLimit());
this.couponPopup = false; this.couponPopup = false;
}, },
...@@ -589,6 +571,15 @@ export default { ...@@ -589,6 +571,15 @@ export default {
}, },
/* 进入h5授信流程 */ /* 进入h5授信流程 */
async goApply() { async goApply() {
if (this.$route.query.ka) {
this.getKaGetNextUrl();
return;
}
const [{ url }] = await h5AppyUrl();
if (!url) return;
window.location.href = `${url}&returnUrl=${window.location.origin}/pay&from=pay`;
},
async getKaGetNextUrl() {
const [{ nextUrl }] = await kaGetNextUrl(); const [{ nextUrl }] = await kaGetNextUrl();
if (!nextUrl) return; if (!nextUrl) return;
window.location.href = `${nextUrl}&returnUrl=${window.location.origin}/pay&from=pay`; window.location.href = `${nextUrl}&returnUrl=${window.location.origin}/pay&from=pay`;
...@@ -611,7 +602,9 @@ export default { ...@@ -611,7 +602,9 @@ export default {
}, },
/* 忘记密码 */ /* 忘记密码 */
retrieveLink() { retrieveLink() {
let url = `${this.creditPayInfo.forgetPwdJumpUrl}&vccChannel=${VCC_CHANNEL}&redirectUrl=${window.location.href}`; const { orderNo, hideOrder, returnUrl } = this.$route.query || {};
const redirectUrl = `${window.location.origin}${window.location.pathname}?orderNo=${orderNo}&hideOrder=${hideOrder}&returnUrl=${returnUrl}`;
let url = `${this.creditPayInfo.forgetPwdJumpUrl}&vccChannel=${VCC_CHANNEL}&redirectUrl=${redirectUrl}`;
url = url.replace('{token}', localStorage.get('vccToken')); url = url.replace('{token}', localStorage.get('vccToken'));
window.location.href = url; window.location.href = url;
}, },
...@@ -619,7 +612,7 @@ export default { ...@@ -619,7 +612,7 @@ export default {
return Object.keys(obj); return Object.keys(obj);
}, },
setAmount() { setAmount() {
const faceValue = +this.selectedCoupon?.faceValue || 0; const faceValue = +this.selectedCoupon?.faceValueNew || 0;
const orderAmt = +this.displayInfo?.orderAmt || 0; const orderAmt = +this.displayInfo?.orderAmt || 0;
const finalAmt = const finalAmt =
IS_THIRD_PAY(this.payType) || !this.showCoupon IS_THIRD_PAY(this.payType) || !this.showCoupon
...@@ -627,7 +620,6 @@ export default { ...@@ -627,7 +620,6 @@ export default {
: (orderAmt - faceValue || 0).toFixed(2); : (orderAmt - faceValue || 0).toFixed(2);
const freeAmount = const freeAmount =
!IS_THIRD_PAY(this.payType) && this.showCoupon ? faceValue || '0.00' : '0.00'; !IS_THIRD_PAY(this.payType) && this.showCoupon ? faceValue || '0.00' : '0.00';
this.amountInfo = { finalAmt, freeAmount };
cookies.set('amount', { finalAmt, freeAmount }); cookies.set('amount', { finalAmt, freeAmount });
}, },
async reissueContract() { async reissueContract() {
...@@ -640,5 +632,5 @@ export default { ...@@ -640,5 +632,5 @@ export default {
</script> </script>
<style lang="less"> <style lang="less">
@import './index'; @import './index.less';
</style> </style>
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
width="63px" width="63px"
height="63px" height="63px"
class="info__image" class="info__image"
src="../../assets/images/pay/paying.png" src="@/assets/images/pay/paying.png"
/> />
<div v-if="init" class="info__desc"> <div v-if="init" class="info__desc">
<p class="info__text"> <p class="info__text">
...@@ -16,16 +16,16 @@ ...@@ -16,16 +16,16 @@
<p class="tips"> <p class="tips">
努力返回支付结果中,请留心查看! 努力返回支付结果中,请留心查看!
</p> </p>
<div class="actions"> <div :class="['actions', !isOrder && 'no-order']">
<cr-button <cr-button
class="actions__back" class="actions__back"
:plain="true" :plain="true"
type="primary" type="primary"
shape="circle" shape="circle"
@click="goHome('正在支付')" @click="goHome('正在支付')"
>返回首页</cr-button >{{ returnUrl ? '返回秒杀' : '返回首页' }}</cr-button
> >
<cr-button shape="circle" type="primary" @click="goOrderDetail('正在支付')" <cr-button v-if="isOrder" shape="circle" type="primary" @click="goOrderDetail('正在支付')"
>查看订单</cr-button >查看订单</cr-button
> >
</div> </div>
...@@ -34,9 +34,9 @@ ...@@ -34,9 +34,9 @@
<script> <script>
import { queryPayStatus } from '@/api/pay.api'; import { queryPayStatus } from '@/api/pay.api';
import cookies from '@/service/cookieStorage.service'; import cookies from '@/service/cookieStorage.service';
import localStorage from '@/service/localStorage.service';
import { goUrlExtends } from './extends'; import { goUrlExtends } from './extends';
import { isIOS } from '@/service/validation.service'; import { isApp } from '@/service/validation.service';
import localStorage from '@/service/localStorage.service';
export default { export default {
components: {}, components: {},
extends: goUrlExtends, extends: goUrlExtends,
...@@ -46,20 +46,20 @@ export default { ...@@ -46,20 +46,20 @@ export default {
timer: null, timer: null,
time: 10, time: 10,
init: false, init: false,
isWx: false returnUrl: '',
isOrder: true
}; };
}, },
created() { created() {
this.orderNo = this.$route.query.orderNo || cookies.get('orderNo')?.orderNo; this.orderNo = this.$route.query.orderNo || cookies.get('orderNo')?.orderNo;
this.isWx = this.$route.query.isWx; if (!isApp) {
if (!localStorage.get('isAppInner')) {
const schema = isIOS ? 'xincheng://' : 'app://xincheng/splash';
setTimeout(() => { setTimeout(() => {
window.location.href = schema; window.location.href = 'xyqb://openApp';
}, 2000); }, 2000);
} }
}, },
mounted() { mounted() {
this.getQuery();
this.$dialog({ this.$dialog({
message: '请确认订单已完成支付', message: '请确认订单已完成支付',
confirmButtonText: '已完成支付', confirmButtonText: '已完成支付',
...@@ -78,6 +78,12 @@ export default { ...@@ -78,6 +78,12 @@ export default {
clearInterval(this.timer); clearInterval(this.timer);
}, },
methods: { methods: {
getQuery() {
this.returnUrl = cookies.get('returnUrl') || '';
if (localStorage.get('hideOrder')) {
this.isOrder = false;
}
},
loop() { loop() {
this.query(); this.query();
this.timer = setInterval(() => { this.timer = setInterval(() => {
...@@ -92,14 +98,10 @@ export default { ...@@ -92,14 +98,10 @@ export default {
}, },
goSuccess() { goSuccess() {
// 支付成功 // 支付成功
this.$router.push({ name: 'paySuccess' }); this.$router.replace({ name: 'paySuccess', query: { orderNo: this.orderNo } });
}, },
goPay() { goPay() {
if (this.isWx) { this.$router.replace({ name: 'pay', query: { orderNo: this.orderNo } });
this.$router.go(-2);
return;
}
this.$router.go(-1);
}, },
async query() { async query() {
const [data, error] = await queryPayStatus({ orderNo: this.orderNo }); const [data, error] = await queryPayStatus({ orderNo: this.orderNo });
...@@ -166,7 +168,9 @@ export default { ...@@ -166,7 +168,9 @@ export default {
flex-direction: row; flex-direction: row;
margin-top: @padding-lg; margin-top: @padding-lg;
justify-content: space-between; justify-content: space-between;
&.no-order {
justify-content: center;
}
&__back { &__back {
color: @cherry-color-error; color: @cherry-color-error;
border: 1px solid @cherry-color-error; border: 1px solid @cherry-color-error;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment