From 9e6a9ecdfff2634cc2685d4ea9b60ff7a88abefe Mon Sep 17 00:00:00 2001
From: wuhui_zzw <1760308791@qq.com>
Date: Fri, 21 Jun 2024 15:37:15 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=EF=BC=9A=E5=9C=A8=E7=BA=BF?=
=?UTF-8?q?=E4=B9=B0=E5=8D=95=20-=20=E5=A2=9E=E5=8A=A0=E9=A4=90=E8=B4=B9?=
=?UTF-8?q?=E7=A7=AF=E5=88=86=E6=8A=B5=E6=89=A3=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pages/users/online_payment/payment/index.vue | 538 +++++++++++--------
1 file changed, 327 insertions(+), 211 deletions(-)
diff --git a/pages/users/online_payment/payment/index.vue b/pages/users/online_payment/payment/index.vue
index c756bb6..4673977 100644
--- a/pages/users/online_payment/payment/index.vue
+++ b/pages/users/online_payment/payment/index.vue
@@ -22,6 +22,21 @@
+
+
+ 餐费积分抵扣
+
+
+
+ 使用餐费积分
+
+
+
+ 剩余餐费积分:{{ integral_surplus || '0.00' }}
+ 餐费积分抵扣:{{ integral_use || '0.00' }}元
+
+
+
支付方式
@@ -91,7 +106,8 @@ import {mapGetters} from "vuex";
import authorize from '@/components/Authorize';
import emptyPage from '@/components/emptyPage.vue';
import spread from "@/libs/spread";
-import {getUserInfo} from "@/api/user";
+import {getUserInfo,merShareholdersIntegralStatistics} from "@/api/user";
+
const app = getApp();
export default {
@@ -157,21 +173,25 @@ export default {
},
],
now_money: 0,
-
+ // 餐费积分
+ integral_surplus: 0,
+ integral_use: '',
};
},
computed: {
...mapGetters(['isLogin', 'userInfo', 'viewColor'])
},
onLoad(options) {
+ let mer_id = options.mer_id || 0;
// 二维码参数接收
if(options.scene){
// console.log("接收参数 - 未转义",options.scene)
var scene = this.$util.getUrlParams(decodeURIComponent(options.scene));
// console.log("接收参数 - 转义后",scene)
- this.default_mer_id = scene.mer_id || 0;
- this.mer_search.mer_id = scene.mer_id || 0;
+ mer_id = scene.mer_id || 0;
}
+ this.default_mer_id = mer_id || 0;
+ this.mer_search.mer_id = mer_id || 0;
// 判断:是否登录
if (!this.isLogin) {
// 未登录 授权登录
@@ -185,6 +205,22 @@ export default {
if(options.spread) spread(options.spread, this.isLogin)
},
onReachBottom: function () {},
+ watch: {
+ // 买单金额改变
+ 'pay_info.money': {
+ handler() {
+ this.computeUseIntegral();
+ },
+ immediate: true
+ },
+ // 使用积分改变
+ 'integral_use': {
+ handler() {
+ this.computeUseIntegral();
+ },
+ immediate: true
+ }
+ },
methods: {
// 授权回调
onLoadFun() {
@@ -207,6 +243,8 @@ export default {
getUserInfo().then(res => {
_this.now_money = res.data.now_money
});
+ // 获取用户餐费信息
+ _this.shareholdersIntegralInfo();
},
// 门店选择 - 显示弹框
merShowPopup(){
@@ -248,7 +286,8 @@ export default {
let _this = this;
let payInfo = Object.assign({},_this.pay_info);
payInfo.mer_id = _this.mer_info.mer_id;
- console.log('支付类型',payInfo.pay_type)
+ payInfo.integral_use = _this.integral_use || 0;
+ console.log('支付类型', payInfo)
if (payInfo.pay_type == 'weixin') {
// #ifdef H5
payInfo.pay_type = _this.$wechat.isWeixin() ? 'weixin' : 'h5'
@@ -264,221 +303,219 @@ export default {
title: '订单处理中...',
mask: true
});
- onlinePayment(payInfo)
- .then(res => {
- let status = res.data.status,
- orderId = res.data.result.order_id,
- callback_key = res.data.result.pay_key,
- jsConfig = res.data.result.config,
- goPages = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=' + res.message;
- _this.orderPay = true;
- uni.hideLoading();
- switch (status) {
- case 'ORDER_EXIST':
- case 'EXTEND_ORDER':
- case 'PAY_ERROR':
- case 'error':
- return _this.$util.Tips({
- title: res.message
- }, {
- tab: 5,
- url: goPages
- });
- break;
- case 'success':
+ onlinePayment(payInfo).then(res => {
+ if (res.status == 200) {
+ let backUrl = `/pages/users/online_payment/payment/index?mer_id=${_this.mer_search.mer_id}`;
+ let backTab = 5;
+ let status = res.data.status,
+ orderId = res.data.result.order_id,
+ callback_key = res.data.result.pay_key,
+ jsConfig = res.data.result.config;
+ // let goPages = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=' + res.message;
+ let goPages = backUrl;
+ switch (status) {
+ case 'ORDER_EXIST':
+ case 'EXTEND_ORDER':
+ case 'PAY_ERROR':
+ case 'error':
+ return _this.$util.Tips({
+ title: res.message
+ }, {
+ tab: backTab,
+ url: goPages
+ });
+ break;
+ case 'success':
+ return _this.$util.Tips({
+ title: res.message,
+ icon: 'success'
+ }, {
+ tab: backTab,
+ url: goPages
+ });
+ break;
+ case 'alipay':
+ case "alipayQr":
+ uni.navigateTo({
+ url: '/pages/order_pay_back/index?keyCode=' + callback_key + '&url=' +
+ jsConfig
+ })
+ return;
+ break;
+ // #ifndef MP
+ case "wechat":
+ case "weixin":
+ case "weixinApp":
+ jsConfig.timeStamp = jsConfig.timestamp;
+ // #ifndef APP-PLUS
+ this.$wechat.pay(jsConfig).then(res => {
return _this.$util.Tips({
title: res.message,
icon: 'success'
}, {
- tab: 5,
+ tab: backTab,
url: goPages
});
- break;
- case 'alipay':
- case "alipayQr":
- uni.navigateTo({
- url: '/pages/order_pay_back/index?keyCode=' + callback_key + '&url=' +
- jsConfig
- })
- return;
- break;
- // #ifndef MP
- case "wechat":
- case "weixin":
- case "weixinApp":
- jsConfig.timeStamp = jsConfig.timestamp;
- // #ifndef APP-PLUS
- this.$wechat.pay(jsConfig).then(res => {
- return _this.$util.Tips({
- title: res.message,
- icon: 'success'
- }, {
- tab: 4,
- url: goPages
- });
- }).catch(res => {
- if (res.errMsg == 'chooseWXPay:cancel') return _this.$util.Tips({
- title: '取消支付'
- }, {
- tab: 5,
- url: goPages + '&status=0'
- });
- })
- // #endif
- // #ifdef APP-PLUS
- let mp_pay_name=''
- if(uni.requestOrderPayment){
- mp_pay_name='requestOrderPayment'
- }else{
- mp_pay_name='requestPayment'
- }
- uni[mp_pay_name]({
- provider: 'wxpay',
- orderInfo: jsConfig,
- success: (e) => {
- let url = '/pages/order_pay_status/index?order_id=' + orderId +
- '&msg=支付成功';
- return _this.$util.Tips({
- title: '支付成功',
- icon: 'success'
- }, {
- tab: 4,
- url: url
- });
- },
- fail: (e) => {
- let url = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=取消支付';
- return _this.$util.Tips({
- title: '取消支付',
- }, {
- tab: 4,
- url: url
- });
- },
- complete: () => {
- let url = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=取消支付';
- return _this.$util.Tips({
- title: '',
- }, {
- tab: 4,
- url: url
- });
- },
- });
- // #endif
- break;
- // #endif
- // #ifdef MP
- case "routine":
- jsConfig.timeStamp = jsConfig.timestamp;
- _this.toPay = true;
- let mp_pay_name=''
- if(uni.requestOrderPayment){
- mp_pay_name='requestOrderPayment'
- }else{
- mp_pay_name='requestPayment'
- }
- uni[mp_pay_name]({
- ...jsConfig,
- success: function(res) {
- uni.hideLoading();
- return _this.$util.Tips({
- title: '支付成功',
- icon: 'success'
- }, {
- tab: 5,
- url: goPages
- });
- },
- fail: function(e) {
- let pages = '/pages/order_pay_status/index?order_id=' +
- orderId + '&msg=取消支付'
- return _this.$util.Tips({
- title: '取消支付'
- }, {
- tab: 5,
- url: pages + '&status=0'
- });
- },
- })
- break;
- // #endif
- case "balance":
- //余额
- return _this.$util.Tips({
- title: res.msg
- }, {
- tab: 5,
- url: goPages + '&status=1'
- });
- break;
- // #ifdef H5
- case 'h5':
- let host = window.location.protocol + "//" + window.location.host;
- let url = `${host}/pages/order_pay_status/index?order_id=${orderId}&msg=${res.message}`
- let eUrl = encodeURIComponent(url)
- let jsurl = jsConfig.mweb_url || jsConfig.h5_url
- let locations = `${jsurl}&redirect_url=${eUrl}`
- setTimeout(() => {
- location.href = locations;
- }, 100);
- break;
- // #endif
- // #ifdef APP-PLUS
- case 'alipayApp':
- uni.requestPayment({
- provider: 'alipay',
- orderInfo: jsConfig,
- success: (e) => {
- return _this.$util.Tips({
- title: '支付成功',
- icon: 'success'
- }, {
- tab: 5,
- url: goPages
- });
- },
- fail: (e) => {
- let pages = '/pages/order_pay_status/index?order_id=' +
- orderId + '&msg=支付失败'
- return _this.$util.Tips({
- title: '支付失败'
- }, {
- tab: 5,
- url: pages
- });
- },
- complete: () => {
- uni.hideLoading();
- let pages = '/pages/order_pay_status/index?order_id=' +
- orderId + '&msg=取消支付'
- return _this.$util.Tips({
- title: ''
- }, {
- tab: 5,
- url: pages
- });
- },
- });
- break;
- // #endif
- default:
- let pages = '/pages/order_pay_status/index?order_id=' +
- orderId + '&msg=取消支付'
- return _this.$util.Tips({
+ }).catch(res => {
+ if (res.errMsg == 'chooseWXPay:cancel') return _this.$util.Tips({
title: '取消支付'
}, {
- tab: 5,
- url: pages + '&status=0'
+ tab: backTab,
+ url: goPages + '&status=0'
});
- }
- })
- .catch(err => {
- uni.hideLoading();
- this.$util.Tips({
- title: err
- });
- });
+ })
+ // #endif
+ // #ifdef APP-PLUS
+ let mp_pay_name=''
+ if(uni.requestOrderPayment){
+ mp_pay_name='requestOrderPayment'
+ }else{
+ mp_pay_name='requestPayment'
+ }
+ uni[mp_pay_name]({
+ provider: 'wxpay',
+ orderInfo: jsConfig,
+ success: (e) => {
+ // let url = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=支付成功';
+ return _this.$util.Tips({
+ title: '支付成功',
+ icon: 'success'
+ }, {
+ tab: backTab,
+ url: backUrl
+ });
+ },
+ fail: (e) => {
+ // let url = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=取消支付';
+ return _this.$util.Tips({
+ title: '取消支付',
+ }, {
+ tab: backTab,
+ url: backUrl
+ });
+ },
+ complete: () => {
+ // let url = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=取消支付';
+ return _this.$util.Tips({
+ title: '',
+ }, {
+ tab: backTab,
+ url: backUrl
+ });
+ },
+ });
+ // #endif
+ break;
+ // #endif
+ // #ifdef MP
+ case "routine":
+ jsConfig.timeStamp = jsConfig.timestamp;
+ _this.toPay = true;
+ let mp_pay_name=''
+ if(uni.requestOrderPayment){
+ mp_pay_name='requestOrderPayment'
+ }else{
+ mp_pay_name='requestPayment'
+ }
+ uni[mp_pay_name]({
+ ...jsConfig,
+ success: function(res) {
+ uni.hideLoading();
+ return _this.$util.Tips({
+ title: '支付成功',
+ icon: 'success'
+ }, {
+ tab: backTab,
+ url: goPages
+ });
+ },
+ fail: function(e) {
+ // let pages = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=取消支付'
+ return _this.$util.Tips({
+ title: '取消支付'
+ }, {
+ tab: backTab,
+ // url: pages + '&status=0'
+ url: backUrl
+ });
+ },
+ })
+ break;
+ // #endif
+ case "balance":
+ //余额
+ return _this.$util.Tips({
+ title: res.msg
+ }, {
+ tab: backTab,
+ url: goPages + '&status=1'
+ });
+ break;
+ // #ifdef H5
+ case 'h5':
+ let host = window.location.protocol + "//" + window.location.host;
+ // let url = `${host}/pages/order_pay_status/index?order_id=${orderId}&msg=${res.message}`
+ let eUrl = encodeURIComponent(backUrl)
+ let jsurl = jsConfig.mweb_url || jsConfig.h5_url
+ let locations = `${jsurl}&redirect_url=${eUrl}`
+ setTimeout(() => {
+ location.href = locations;
+ }, 100);
+ break;
+ // #endif
+ // #ifdef APP-PLUS
+ case 'alipayApp':
+ uni.requestPayment({
+ provider: 'alipay',
+ orderInfo: jsConfig,
+ success: (e) => {
+ return _this.$util.Tips({
+ title: '支付成功',
+ icon: 'success'
+ }, {
+ tab: backTab,
+ url: goPages
+ });
+ },
+ fail: (e) => {
+ // let pages = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=支付失败'
+ return _this.$util.Tips({
+ title: '支付失败'
+ }, {
+ tab: backTab,
+ url: backUrl
+ });
+ },
+ complete: () => {
+ uni.hideLoading();
+ // let pages = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=取消支付'
+ return _this.$util.Tips({
+ title: ''
+ }, {
+ tab: backTab,
+ url: backUrl
+ });
+ },
+ });
+ break;
+ // #endif
+ default:
+ // let pages = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=取消支付'
+ return _this.$util.Tips({
+ title: '取消支付'
+ }, {
+ tab: backTab,
+ // url: pages + '&status=0'
+ url: backUrl
+ });
+ }
+ }
+ }).catch(err => {
+ uni.hideLoading();
+ this.$util.Tips({
+ title: err
+ });
+ });
},
// 跳转
goMenuPage(url) {
@@ -491,7 +528,27 @@ export default {
this.openAuto()
}
},
+ // 餐费积分 - 获取当前用户可用餐费积分
+ shareholdersIntegralInfo(){
+ let _this = this;
+ merShareholdersIntegralStatistics({mer_id: _this.mer_search.mer_id}).then(res => {
+ _this.integral_surplus = res.data.sum_used_surplus || 0;
+ }).catch(err => {
+ this.$util.Tips({title: err});
+ });
+ },
+ // 餐费积分 - 计算使用的积分
+ computeUseIntegral(){
+ let money = this.pay_info.money || 0;
+ let integralUse = this.integral_use || 0;
+ let integralSurplus = this.integral_surplus || 0;
+ // 判断:使用积分不能超过买单金额
+ let useIntegral = Number(integralUse) > Number(money) ? Number(money) : Number(integralUse);
+ // 判断:使用积分不能超过剩余可用积分
+ useIntegral = Number(useIntegral) > Number(integralSurplus) ? Number(integralSurplus) : Number(useIntegral);
+ this.$set(this, 'integral_use', useIntegral);
+ }
},
// #ifdef MP
// 分享给好友
@@ -653,6 +710,65 @@ export default {
}
}
}
+ // 积分抵扣
+ .integral{
+ width: 100%;
+ .box-content{
+ width: 100%;
+ background-color: #ffffff;
+ padding: 20rpx;
+ border-radius: 15rpx;
+ .use-info{
+ width: 100%;
+ display: inline-flex;
+ flex-direction: row;
+ flex-wrap: nowrap;
+ align-items: center;
+ justify-content: flex-start;
+ height: 70rpx;
+ padding-bottom: 20rpx;
+ border-bottom: 2rpx solid #fafafa;
+ .icon-pc-jifen{
+ background-color: #f4b00d;
+ color: #ffffff;
+ height: 40rpx;
+ width: 40rpx;
+ line-height: 40rpx;
+ text-align: center;
+ font-size: 28rpx;
+ }
+ .title{
+ font-size: 28rpx;
+ font-weight: bold;
+ width: 150rpx;
+ text-align: center;
+ }
+ .use-input{
+ width: calc(100% - 40rpx - 150rpx);
+ height: 45rpx;
+ line-height: 45rpx;
+ }
+ }
+ .hold-info{
+ width: 100%;
+ height: 70rpx;
+ padding-top: 20rpx;
+ display: inline-flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+ flex-wrap: nowrap;
+ .left{
+ color: #aeaeae;
+ font-size: 26rpx;
+ }
+ .right{
+ color: #f4564f;
+ font-size: 26rpx;
+ }
+ }
+ }
+ }
// 支付方式
.pay-type{