增加:在线买单 - 增加餐费积分抵扣功能

This commit is contained in:
wuhui_zzw 2024-06-21 15:37:15 +08:00
parent 29b4678879
commit 9e6a9ecdff
1 changed files with 327 additions and 211 deletions

View File

@ -22,6 +22,21 @@
</view>
</view>
</view>
<!--积分抵扣-->
<view class="integral" v-if="Number(integral_surplus) > 0 && Number(pay_info.money) > 0">
<view class="box-title">餐费积分抵扣</view>
<view class="box-content">
<view class="use-info">
<text class="iconfont icon-pc-jifen"></text>
<view class="title">使用餐费积分</view>
<input class="use-input" v-model="integral_use" type='number' step="0.01" placeholder="请输入要使用的餐费积分数量!" />
</view>
<view class="hold-info">
<view class="left">剩余餐费积分{{ integral_surplus || '0.00' }}</view>
<view class="right">餐费积分抵扣{{ integral_use || '0.00' }}</view>
</view>
</view>
</view>
<!--支付方式-->
<view class="pay-type">
<view class="box-title">支付方式</view>
@ -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{