1. 【修复】申请退款后积分等操作可能出现错误的问题 2. 【修复】拼团支付可能出现支付错误的问题 3. 【修复】退款申请后的订单流程优化和积分赠送的问题 4. 【修复】回收站中的商品无法恢复的问题 5. 【修复】一号通短信查询记录不完整的问题 6. 【修复】用户管理批量加分组,标签的问题 7. 【修复】积分日志搜索显示有误的问题 8. 【修复】手动发送优惠券可能会出错的问题 9. 【修复】核销订单创建在某种条件下会出错的问题 10. 【修复】移动端商品详情,购物车等样式兼容问题 11. 【修复】业务流程性的优化
400 lines
9.4 KiB
Vue
400 lines
9.4 KiB
Vue
<template>
|
|
<view>
|
|
<view class="payment" :class="pay_close ? 'on' : ''">
|
|
<view class="title acea-row row-center-wrapper">
|
|
选择付款方式<text class="iconfont icon-guanbi" @click='close'></text>
|
|
</view>
|
|
<view class="item acea-row row-between-wrapper" @click='goPay(item.number || 0 , item.value)' v-for="(item,index) in payMode"
|
|
:key="index">
|
|
<view class="left acea-row row-between-wrapper">
|
|
<view class="iconfont" :class="item.icon"></view>
|
|
<view class="text">
|
|
<view class="name">{{item.name}}</view>
|
|
<view class="info" v-if="item.number">
|
|
{{item.title}} <span class="money">¥{{ item.number }}</span>
|
|
</view>
|
|
<view class="info" v-else>{{item.title}}</view>
|
|
</view>
|
|
</view>
|
|
<view class="iconfont icon-xiangyou"></view>
|
|
</view>
|
|
</view>
|
|
<view class="mask" @click='close' v-if="pay_close"></view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import {
|
|
orderPay,
|
|
wechatOrderPay
|
|
} from '@/api/order.js';
|
|
export default {
|
|
props: {
|
|
payMode: {
|
|
type: Array,
|
|
default: function() {
|
|
return [];
|
|
}
|
|
},
|
|
pay_close: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
order_id: {
|
|
type: String,
|
|
default: ''
|
|
},
|
|
totalPrice: {
|
|
type: String,
|
|
default: '0'
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
|
|
};
|
|
},
|
|
methods: {
|
|
close: function() {
|
|
this.$emit('onChangeFun', {
|
|
action: 'payClose'
|
|
});
|
|
},
|
|
goPay: function(number, paytype) {
|
|
let that = this;
|
|
if (!that.order_id) return that.$util.Tips({
|
|
title: '请选择要支付的订单'
|
|
});
|
|
if (paytype == 'yue' && parseFloat(number) < parseFloat(that.totalPrice)) return that.$util.Tips({
|
|
title: '余额不足!'
|
|
});
|
|
uni.showLoading({
|
|
title: '支付中'
|
|
});
|
|
wechatOrderPay({
|
|
orderNo: that.order_id,
|
|
payChannel: this.$wechat.isWeixin() ? 'public' : 'weixinh5',
|
|
payType: paytype
|
|
}).then(res => {
|
|
let jsConfig = res.data.jsConfig;
|
|
switch (res.data.payType) {
|
|
case 'weixin':
|
|
// #ifdef MP
|
|
uni.requestPayment({
|
|
timeStamp: jsConfig.timeStamp,
|
|
nonceStr: jsConfig.nonceStr,
|
|
package: jsConfig.packages,
|
|
signType: jsConfig.signType,
|
|
paySign: jsConfig.paySign,
|
|
success: function(ress) {
|
|
uni.hideLoading();
|
|
return that.$util.Tips({
|
|
title: '支付成功',
|
|
icon: 'success'
|
|
}, () => {
|
|
that.$emit('onChangeFun', {
|
|
action: 'pay_complete'
|
|
});
|
|
});
|
|
},
|
|
fail: function(e) {
|
|
uni.hideLoading();
|
|
return that.$util.Tips({
|
|
title: '取消支付'
|
|
}, () => {
|
|
that.$emit('onChangeFun', {
|
|
action: 'pay_fail'
|
|
});
|
|
});
|
|
},
|
|
complete: function(e) {
|
|
uni.hideLoading();
|
|
if (e.errMsg == 'requestPayment:cancel') return that.$util.Tips({
|
|
title: '取消支付'
|
|
}, () => {
|
|
that.$emit('onChangeFun', {
|
|
action: 'pay_fail'
|
|
});
|
|
});
|
|
},
|
|
})
|
|
// #endif
|
|
// #ifdef H5
|
|
let datas = {
|
|
timestamp: jsConfig.timeStamp,
|
|
nonceStr: jsConfig.nonceStr,
|
|
package: jsConfig.packages,
|
|
signType: jsConfig.signType,
|
|
paySign: jsConfig.paySign
|
|
};
|
|
that.$wechat.pay(datas).then(res => {
|
|
if (res.errMsg == 'chooseWXPay:cancel') {
|
|
return that.$util.Tips({
|
|
title: '支付失败'
|
|
});
|
|
} else {
|
|
wechatQueryPayResult({
|
|
orderNo: that.order_id
|
|
}).then(res => {
|
|
return that.$util.Tips({
|
|
title: "支付成功",
|
|
icon: 'success'
|
|
}, () => {
|
|
that.$emit('onChangeFun', {
|
|
action: 'pay_complete'
|
|
});
|
|
});
|
|
}).cache(errW => {
|
|
return that.$util.Tips({
|
|
title: errW
|
|
});
|
|
})
|
|
}
|
|
|
|
})
|
|
// #endif
|
|
break;
|
|
case 'yue':
|
|
uni.hideLoading();
|
|
return that.$util.Tips({
|
|
title: '余额支付成功',
|
|
icon: 'success'
|
|
}, () => {
|
|
that.$emit('onChangeFun', {
|
|
action: 'pay_complete'
|
|
});
|
|
});
|
|
break;
|
|
case 'weixinh5':
|
|
uni.hideLoading();
|
|
location.replace(jsConfig.mwebUrl);
|
|
return that.$util.Tips({
|
|
title: "支付成功",
|
|
icon: 'success'
|
|
}, () => {
|
|
that.$emit('onChangeFun', {
|
|
action: 'pay_complete'
|
|
});
|
|
});
|
|
break;
|
|
}
|
|
|
|
|
|
|
|
// switch (paytype) {
|
|
// case 'weixin':
|
|
// if (res.data.result === undefined) return that.$util.Tips({
|
|
// title: '缺少支付参数'
|
|
// });
|
|
// // #ifdef MP || APP-PLUS
|
|
// let jsConfig = res.data.jsConfig;
|
|
// uni.requestPayment({
|
|
// timeStamp: jsConfig.timeStamp.toString(),
|
|
// nonceStr: jsConfig.nonceStr,
|
|
// package: jsConfig.package,
|
|
// signType: jsConfig.signType,
|
|
// paySign: jsConfig.paySign,
|
|
// success: function(res) {
|
|
// uni.hideLoading();
|
|
// return that.$util.Tips({
|
|
// title: '支付成功',
|
|
// icon: 'success'
|
|
// }, () => {
|
|
// that.$emit('onChangeFun', {
|
|
// action: 'pay_complete'
|
|
// });
|
|
// });
|
|
// },
|
|
// fail: function(e) {
|
|
// uni.hideLoading();
|
|
// return that.$util.Tips({
|
|
// title: '取消支付'
|
|
// }, () => {
|
|
// that.$emit('onChangeFun', {
|
|
// action: 'pay_fail'
|
|
// });
|
|
// });
|
|
// },
|
|
// complete: function(e) {
|
|
// uni.hideLoading();
|
|
// if (e.errMsg == 'requestPayment:cancel') return that.$util.Tips({
|
|
// title: '取消支付'
|
|
// }, () => {
|
|
// that.$emit('onChangeFun', {
|
|
// action: 'pay_fail'
|
|
// });
|
|
// });
|
|
// },
|
|
// });
|
|
// // #endif
|
|
// // #ifdef H5
|
|
// if (res.data.status === "WECHAT_PAY") {
|
|
// let jsConfig = res.data.jsConfig;
|
|
// //let packages = 'prepay_id=' + jsConfig.prepayId;
|
|
// let datas = {
|
|
// timestamp:jsConfig.timeStamp,
|
|
// nonceStr:jsConfig.nonceStr,
|
|
// package:jsConfig.package,
|
|
// signType:jsConfig.signType,
|
|
// paySign:jsConfig.paySign
|
|
// };
|
|
// that.$wechat.pay(datas)
|
|
// .then(() => {
|
|
// return that.$util.Tips({
|
|
// title: "支付成功",
|
|
// icon: 'success'
|
|
// }, () => {
|
|
// that.$emit('onChangeFun', {
|
|
// action: 'pay_complete'
|
|
// });
|
|
// });
|
|
// })
|
|
// .catch(function() {
|
|
// return that.$util.Tips({
|
|
// title: '支付失败'
|
|
// });
|
|
// });
|
|
// } else {
|
|
// uni.hideLoading();
|
|
// location.replace(res.data.jsConfig.h5PayUrl);
|
|
// return that.$util.Tips({
|
|
// title: "支付成功",
|
|
// icon: 'success'
|
|
// }, () => {
|
|
// that.$emit('onChangeFun', {
|
|
// action: 'pay_complete'
|
|
// });
|
|
// });
|
|
// }
|
|
// // #endif
|
|
// break;
|
|
// case 'yue':
|
|
// uni.hideLoading();
|
|
// return that.$util.Tips({
|
|
// title: '余额支付成功',
|
|
// icon: 'success'
|
|
// }, () => {
|
|
// that.$emit('onChangeFun', {
|
|
// action: 'pay_complete'
|
|
// });
|
|
// });
|
|
// break;
|
|
// case 'offline':
|
|
// uni.hideLoading();
|
|
// return that.$util.Tips({
|
|
// title: '线下支付成功',
|
|
// icon: 'success'
|
|
// }, () => {
|
|
// that.$emit('onChangeFun', {
|
|
// action: 'pay_complete'
|
|
// });
|
|
// });
|
|
// break;
|
|
// }
|
|
}).catch(err => {
|
|
uni.hideLoading();
|
|
return that.$util.Tips({
|
|
title: err
|
|
}, () => {
|
|
that.$emit('onChangeFun', {
|
|
action: 'pay_fail'
|
|
});
|
|
});
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.payment {
|
|
position: fixed;
|
|
bottom: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
border-radius: 16rpx 16rpx 0 0;
|
|
background-color: #fff;
|
|
padding-bottom: 60rpx;
|
|
z-index: 99;
|
|
transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9);
|
|
transform: translate3d(0, 100%, 0);
|
|
}
|
|
|
|
.payment.on {
|
|
transform: translate3d(0, 0, 0);
|
|
}
|
|
|
|
.payment .title {
|
|
text-align: center;
|
|
height: 123rpx;
|
|
font-size: 32rpx;
|
|
color: #282828;
|
|
font-weight: bold;
|
|
padding-right: 30rpx;
|
|
margin-left: 30rpx;
|
|
position: relative;
|
|
border-bottom: 1rpx solid #eee;
|
|
}
|
|
|
|
.payment .title .iconfont {
|
|
position: absolute;
|
|
right: 30rpx;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
font-size: 43rpx;
|
|
color: #8a8a8a;
|
|
font-weight: normal;
|
|
}
|
|
|
|
.payment .item {
|
|
border-bottom: 1rpx solid #eee;
|
|
height: 130rpx;
|
|
margin-left: 30rpx;
|
|
padding-right: 30rpx;
|
|
}
|
|
|
|
.payment .item .left {
|
|
width: 610rpx;
|
|
}
|
|
|
|
.payment .item .left .text {
|
|
width: 540rpx;
|
|
}
|
|
|
|
.payment .item .left .text .name {
|
|
font-size: 32rpx;
|
|
color: #282828;
|
|
}
|
|
|
|
.payment .item .left .text .info {
|
|
font-size: 24rpx;
|
|
color: #999;
|
|
}
|
|
|
|
.payment .item .left .text .info .money {
|
|
color: #ff9900;
|
|
}
|
|
|
|
.payment .item .left .iconfont {
|
|
font-size: 45rpx;
|
|
color: #09bb07;
|
|
}
|
|
|
|
.payment .item .left .iconfont.icon-zhifubao {
|
|
color: #00aaea;
|
|
}
|
|
|
|
.payment .item .left .iconfont.icon-yuezhifu {
|
|
color: #ff9900;
|
|
}
|
|
|
|
.payment .item .left .iconfont.icon-yuezhifu1 {
|
|
color: #eb6623;
|
|
}
|
|
|
|
.payment .item .iconfont {
|
|
font-size: 0.3rpx;
|
|
color: #999;
|
|
}
|
|
</style>
|