1052 lines
24 KiB
Vue
1052 lines
24 KiB
Vue
|
<template>
|
|||
|
<view :style="viewColor">
|
|||
|
<view class='order-submission'>
|
|||
|
<!-- 商品信息 -->
|
|||
|
<view class="storeinfo-wrapper">
|
|||
|
<view class="store-item">
|
|||
|
<view class="store-title">
|
|||
|
<text class="iconfont icon-shangjiadingdan"></text>
|
|||
|
<view class="txt" @click="goStore(item.mer_id)">{{payForm.merName}}</view>
|
|||
|
<text class="iconfont icon-xiangyou"></text>
|
|||
|
</view>
|
|||
|
|
|||
|
<block v-for="(item,indx) in productData" :key="indx">
|
|||
|
<view class="product-item">
|
|||
|
<view class="img-box">
|
|||
|
<image :src="item.image" width="170rpx" height="180rpx" />
|
|||
|
</view>
|
|||
|
<view class="content event_content">
|
|||
|
<view class="name line1">
|
|||
|
{{item.store_name}}
|
|||
|
</view>
|
|||
|
<view style="margin-top: 30rpx;color: #FF5C2D;">
|
|||
|
¥{{item.price}}
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</block>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<view class='wrapper'>
|
|||
|
<view class='item'>
|
|||
|
<view style="font-weight: bold;">支付方式</view>
|
|||
|
<view class='list'>
|
|||
|
<!-- #ifdef H5 -->
|
|||
|
<view class='payItem acea-row row-middle' :class='active==index ?"on":""' @tap='payItem(index)'
|
|||
|
v-for="(item,index) in cartArr" :key='index' v-if="item.payStatus==1">
|
|||
|
<view class='name acea-row row-center-wrapper'>
|
|||
|
<view class='iconfont animated'
|
|||
|
:class='(item.icon) + " " + (animated==true&&active==index ?"bounceIn":"")'></view>
|
|||
|
{{item.name}}
|
|||
|
</view>
|
|||
|
<view class='tip'>
|
|||
|
{{item.title}}
|
|||
|
<block v-if="item.value == 'balance'">
|
|||
|
{{userInfo.now_money}}
|
|||
|
</block>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<!-- #endif -->
|
|||
|
<!-- #ifdef MP || APP-PLUS -->
|
|||
|
<view class='payItem acea-row row-middle' :class='active==index ?"on":""' @tap='payItem(index)'
|
|||
|
v-for="(item,index) in cartArr" :key='index' v-if="item.payStatus==1">
|
|||
|
<view class='name acea-row row-center-wrapper'>
|
|||
|
<view class='iconfont animated'
|
|||
|
:class='(item.icon) + " " + (animated==true&&active==index ?"bounceIn":"")'></view>
|
|||
|
{{item.name}}
|
|||
|
</view>
|
|||
|
<view class='tip'>
|
|||
|
{{item.title}}
|
|||
|
<block v-if="item.value == 'balance'">
|
|||
|
{{userInfo.now_money}}
|
|||
|
</block>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<!-- #endif -->
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<view class='moneyList'>
|
|||
|
<view class='item acea-row row-between-wrapper'>
|
|||
|
<view>商品总价:</view>
|
|||
|
<view class='money'>¥{{payForm.money}}</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<view class='item acea-row row-between-wrapper'>
|
|||
|
<view>补贴抵扣</view>
|
|||
|
<block v-if="platformConsumption.length > 0">
|
|||
|
<view class='discount money red_packet' @click="couponTap3()">
|
|||
|
<text v-if="consumption_id">-¥{{consumption_money||'0.00'}}</text>
|
|||
|
<text v-else>有补贴补贴未选</text>
|
|||
|
<text class='iconfont icon-jiantou'></text>
|
|||
|
</view>
|
|||
|
</block>
|
|||
|
<block v-else>
|
|||
|
<view class='discount'>暂无抵扣红包</view>
|
|||
|
</block>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view style='height:140rpx;'></view>
|
|||
|
|
|||
|
<view class='footer acea-row row-between-wrapper'>
|
|||
|
<view class="footer_count">
|
|||
|
<view>
|
|||
|
合计:
|
|||
|
<text class='pColor' v-if="cartArr[4].payStatus == 1 && active == 4">¥0.00</text>
|
|||
|
<text class='pColor' v-else>¥{{ total_coupon }}</text>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class='settlement' :class='couponData.status != "noAddress" ? "" : "disabled"' style='z-index:100'
|
|||
|
@tap="SubOrder">{{couponData.status != "noAddress" ? '提交订单':'选择地址'}}</view>
|
|||
|
</view>
|
|||
|
|
|||
|
|
|||
|
<!-- 支付密码 键盘 -->
|
|||
|
<popups ref="popups" :isPay="true" @confirm="handleConfirm" @clear="handleClear" @change="handleChange" />
|
|||
|
|
|||
|
<!-- 密码错误事件处理 -->
|
|||
|
<payPwd ref="payPwd" @left="handleLeft" @right="handleRight"></payPwd>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
<script>
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
// | Author: CRMEB Team <admin@crmeb.com>
|
|||
|
// +----------------------------------------------------------------------
|
|||
|
let app = getApp();
|
|||
|
import {
|
|||
|
orderConfirm,
|
|||
|
createOrder
|
|||
|
} from '@/api/order.js';
|
|||
|
import {
|
|||
|
getUserInfo,
|
|||
|
} from '@/api/user.js';
|
|||
|
import {
|
|||
|
openPaySubscribe
|
|||
|
} from '@/utils/SubscribeMessage.js';
|
|||
|
import {
|
|||
|
mapGetters
|
|||
|
} from "vuex";
|
|||
|
import {
|
|||
|
configMap
|
|||
|
} from '@/utils';
|
|||
|
import {
|
|||
|
orderPay,
|
|||
|
orderCheck
|
|||
|
} from "@/api/payment.js";
|
|||
|
import {
|
|||
|
verifyPwd
|
|||
|
} from '@/api/order.js';
|
|||
|
import payPwd from "@/components/payPwd/index.vue";
|
|||
|
import popups from "@/components/popups/index.vue";
|
|||
|
|
|||
|
export default {
|
|||
|
components: {
|
|||
|
payPwd,
|
|||
|
popups
|
|||
|
},
|
|||
|
data() {
|
|||
|
return {
|
|||
|
platformConsumption: [],
|
|||
|
//支付方式
|
|||
|
cartArr: [{
|
|||
|
"name": "微信支付",
|
|||
|
"icon": "icon-weixin2",
|
|||
|
value: 'weixin',
|
|||
|
title: '微信快捷支付',
|
|||
|
payStatus: 1,
|
|||
|
},
|
|||
|
{
|
|||
|
name: "支付宝支付",
|
|||
|
icon: "icon-icon34",
|
|||
|
// #ifdef H5 || APP-PLUS
|
|||
|
value: 'alipay',
|
|||
|
// #endif
|
|||
|
// #ifdef MP
|
|||
|
value: 'alipayQr',
|
|||
|
// #endif
|
|||
|
title: '支付宝支付',
|
|||
|
payStatus: this.$store.getters.globalData.alipay_open
|
|||
|
},
|
|||
|
{
|
|||
|
"name": "余额支付",
|
|||
|
"icon": "icon-icon-test",
|
|||
|
value: 'balance',
|
|||
|
title: '可用余额:',
|
|||
|
payStatus: this.$store.getters.globalData.yue_pay_status,
|
|||
|
},
|
|||
|
{
|
|||
|
"name": "线下支付",
|
|||
|
"icon": "icon-yinhangqia",
|
|||
|
value: 'offline',
|
|||
|
title: '线下支付',
|
|||
|
payStatus: 2,
|
|||
|
}, {
|
|||
|
"name": "先货后款",
|
|||
|
"icon": "tan-a-lujing17324",
|
|||
|
value: 'creditBuy',
|
|||
|
title: `结算周期:${this.settle_cycle}天 日利率:${this.interest_rate}%`,
|
|||
|
payStatus: '',
|
|||
|
},
|
|||
|
],
|
|||
|
tagStyle: {
|
|||
|
img: 'width:100%;display:block;',
|
|||
|
video: 'width:100%;'
|
|||
|
},
|
|||
|
radioList: [{
|
|||
|
title: this.deliveryName,
|
|||
|
check: true
|
|||
|
}, {
|
|||
|
title: '到店核销',
|
|||
|
check: false
|
|||
|
}],
|
|||
|
payType: 'weixin', //支付方式
|
|||
|
active: 0, //支付方式切换
|
|||
|
address: {
|
|||
|
address: false
|
|||
|
}, //地址组件
|
|||
|
couponId: 0, //优惠券id
|
|||
|
cartId: '', //购物车id
|
|||
|
userInfo: {}, //用户信息
|
|||
|
coupon_price: 0, //优惠券抵扣金额
|
|||
|
ChangePrice: 0, //使用积分抵扣变动后的金额
|
|||
|
formIds: [], //收集formid
|
|||
|
status: 0,
|
|||
|
is_address: false,
|
|||
|
toPay: false, //修复进入支付时页面隐藏从新刷新页面
|
|||
|
cartInfo: [],
|
|||
|
priceGroup: {},
|
|||
|
animated: false,
|
|||
|
totalPrice: 0,
|
|||
|
offlinePostage: "",
|
|||
|
|
|||
|
from: '',
|
|||
|
orderStatus: '', //是否有地址
|
|||
|
couponIndex: 0, //选择商铺优惠券索引
|
|||
|
subCoupon: {}, //提交订单使用的优惠券
|
|||
|
couponData: {},
|
|||
|
orderPay: false,
|
|||
|
pics: [],
|
|||
|
extend: [],
|
|||
|
virtualIndex: 0,
|
|||
|
platformCoupon: [],
|
|||
|
total_platform_coupon_price: 0,
|
|||
|
enabledPlatformCoupon: false,
|
|||
|
plantCoupon: false,
|
|||
|
order_key: '',
|
|||
|
product_type: '',
|
|||
|
source: null,
|
|||
|
settle_cycle: '', // 周期
|
|||
|
type_id: '', //店铺类型
|
|||
|
consumption_id: '', //补贴id
|
|||
|
consumption_money: '', //补贴抵扣金额
|
|||
|
total_coupon: '', //合计
|
|||
|
payForm: {
|
|||
|
cart_id: '',
|
|||
|
address_id: '',
|
|||
|
consumption_id: '',
|
|||
|
use_coupon: '',
|
|||
|
takes: '',
|
|||
|
use_integral: '',
|
|||
|
receipt_data: [],
|
|||
|
mark: '',
|
|||
|
pay_type: '',
|
|||
|
money: '',
|
|||
|
merName: '',
|
|||
|
return_url: '',
|
|||
|
key: '',
|
|||
|
source: 999,
|
|||
|
},
|
|||
|
checkForm: {
|
|||
|
address_id: '',
|
|||
|
cart_id: [],
|
|||
|
consumption_id: '',
|
|||
|
product_type: 0,
|
|||
|
source: 999,
|
|||
|
takes: [],
|
|||
|
use_coupon: {},
|
|||
|
use_integral: false,
|
|||
|
key: ''
|
|||
|
},
|
|||
|
productData: [],
|
|||
|
orderData: {}
|
|||
|
};
|
|||
|
},
|
|||
|
computed: {
|
|||
|
...mapGetters(['isLogin', 'viewColor']),
|
|||
|
...configMap(['hide_mer_status', 'yue_pay_status']),
|
|||
|
},
|
|||
|
watch: {
|
|||
|
yue_pay_status(n) {
|
|||
|
this.payMode[2].payStatus = n
|
|||
|
}
|
|||
|
},
|
|||
|
onLoad: function(options) {
|
|||
|
// options.money = parseFloat(options.money).toFixed(2);
|
|||
|
// this.payForm.cart_id = options.cartId;
|
|||
|
// this.payForm.money = options.money;
|
|||
|
// this.payForm.merName = options.merName;
|
|||
|
// this.checkForm.cart_id = options.cartId.split(',');
|
|||
|
// this.total_coupon = options.money;
|
|||
|
|
|||
|
// this.platformConsumption = [{
|
|||
|
// balance: "39000.00",
|
|||
|
// coupon_price: "50000.00",
|
|||
|
// coupon_title: "春耕采购余额",
|
|||
|
// coupon_user_id: 178,
|
|||
|
// describe: "仅限平台指定商家商品可使用",
|
|||
|
// end_time: "2025-07-01 00:00:00",
|
|||
|
// start_time: "2024-03-02 14:15:17",
|
|||
|
// uid: 889
|
|||
|
// }]
|
|||
|
|
|||
|
|
|||
|
let data = uni.getStorageSync("datas");
|
|||
|
this.productData = data.productData;
|
|||
|
this.platformConsumption = data.platformConsumption || [];
|
|||
|
|
|||
|
this.checkForm.cart_id = data.checkForm.cart_id;
|
|||
|
this.payForm.cart_id = this.checkForm.cart_id;
|
|||
|
this.payForm.money = data.money;
|
|||
|
this.payForm.merName = data.merName;
|
|||
|
this.payForm.key = data.key;
|
|||
|
this.total_coupon = data.money;
|
|||
|
this.checkForm.key = data.key;
|
|||
|
|
|||
|
// #ifdef H5
|
|||
|
this.from = this.$wechat.isWeixin() ? 'weixin' : 'h5'
|
|||
|
// #endif
|
|||
|
// #ifdef MP
|
|||
|
this.from = 'routine'
|
|||
|
// #endif
|
|||
|
// #ifdef APP-PLUS
|
|||
|
this.from = 'weixin'
|
|||
|
// #endif
|
|||
|
|
|||
|
if (!this.isLogin) {
|
|||
|
this.isAuto = true;
|
|||
|
this.isShowAuth = true
|
|||
|
}
|
|||
|
},
|
|||
|
/**
|
|||
|
* 生命周期函数--监听页面显示
|
|||
|
*/
|
|||
|
onShow: function() {
|
|||
|
this.getUserInfo()
|
|||
|
},
|
|||
|
|
|||
|
methods: {
|
|||
|
couponTap3: function(item, index) {
|
|||
|
uni.navigateTo({
|
|||
|
url: '/pages/redpacket/redpacket',
|
|||
|
success: (res) => {
|
|||
|
res.eventChannel.emit('changeRedPacketInfo', this.platformConsumption)
|
|||
|
uni.$once('changeRedPacket', (data) => {
|
|||
|
this.consumption_id = data;
|
|||
|
orderCheck({
|
|||
|
...this.checkForm,
|
|||
|
consumption_id: this.consumption_id
|
|||
|
}).then(res => {
|
|||
|
this.total_coupon = res.data.order_price;
|
|||
|
this.consumption_money = res.data.consumption_money;
|
|||
|
this.payForm.consumption_id = this.consumption_id;
|
|||
|
// this.payForm.money = res.data.order_price;
|
|||
|
})
|
|||
|
})
|
|||
|
}
|
|||
|
})
|
|||
|
},
|
|||
|
// 授权关闭
|
|||
|
authColse: function(e) {
|
|||
|
console.log(e, 'authColse')
|
|||
|
this.isShowAuth = e;
|
|||
|
},
|
|||
|
onLoadFun() {
|
|||
|
this.isShowAuth = false;
|
|||
|
},
|
|||
|
|
|||
|
// 获取个人信息
|
|||
|
getUserInfo() {
|
|||
|
getUserInfo().then(res => {
|
|||
|
this.userInfo = res.data
|
|||
|
})
|
|||
|
},
|
|||
|
|
|||
|
payItem: function(e) {
|
|||
|
let that = this;
|
|||
|
let active = e;
|
|||
|
that.active = active;
|
|||
|
// console.log(this.active);
|
|||
|
that.animated = true;
|
|||
|
that.payType = that.cartArr[active].value;
|
|||
|
if (that.payType == 'weixin') {
|
|||
|
that.payType = that.from
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
payment: function(data) {
|
|||
|
let that = this;
|
|||
|
createOrder(data).then(res => {
|
|||
|
let status = res.data.status,
|
|||
|
orderId = res.data.result.order_id,
|
|||
|
jsConfig = res.data.result.config,
|
|||
|
// 暂不跳转
|
|||
|
goPages = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=' + res.message +
|
|||
|
'&product_type=' + that.payForm.product_type + '&source=' + that.payForm.source,
|
|||
|
goPagesOrder = '/pages/order_details/stay?order_id=' + orderId +
|
|||
|
'&credit_buy=1&product_type=' + that.payForm.product_type;
|
|||
|
that.orderPay = true;
|
|||
|
uni.hideLoading();
|
|||
|
switch (status) {
|
|||
|
case 'ORDER_EXIST':
|
|||
|
case 'EXTEND_ORDER':
|
|||
|
case 'PAY_ERROR':
|
|||
|
case 'error':
|
|||
|
return that.$util.Tips({
|
|||
|
title: res.message
|
|||
|
}, {
|
|||
|
tab: 5,
|
|||
|
url: goPagesOrder
|
|||
|
});
|
|||
|
break;
|
|||
|
case 'success':
|
|||
|
return that.$util.Tips({
|
|||
|
title: res.message,
|
|||
|
icon: 'success'
|
|||
|
}, {
|
|||
|
tab: 5,
|
|||
|
url: goPages
|
|||
|
});
|
|||
|
break;
|
|||
|
case 'alipay':
|
|||
|
case "alipayQr":
|
|||
|
return;
|
|||
|
break;
|
|||
|
// #ifndef MP
|
|||
|
case "wechat":
|
|||
|
case "weixin":
|
|||
|
case "weixinApp":
|
|||
|
jsConfig.timeStamp = jsConfig.timestamp;
|
|||
|
// #ifndef APP-PLUS
|
|||
|
this.$wechat.pay(jsConfig).then(res => {
|
|||
|
return that.$util.Tips({
|
|||
|
title: res.message,
|
|||
|
icon: 'success'
|
|||
|
}, {
|
|||
|
tab: 4,
|
|||
|
url: goPages
|
|||
|
});
|
|||
|
}).catch(res => {
|
|||
|
if (res.errMsg == 'chooseWXPay:cancel') return that.$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=支付成功' + '&product_type=' + that.product_type +
|
|||
|
'&source=' + that.source;
|
|||
|
|
|||
|
return that.$util.Tips({
|
|||
|
title: '支付成功',
|
|||
|
icon: 'success'
|
|||
|
}, {
|
|||
|
tab: 4,
|
|||
|
url: url
|
|||
|
});
|
|||
|
},
|
|||
|
fail: (e) => {
|
|||
|
console.log(e, '111111111')
|
|||
|
// 暂不跳转
|
|||
|
let url = '/pages/order_pay_status/index?order_id=' + orderId +
|
|||
|
'&msg=取消支付' + '&product_type=' + that.product_type +
|
|||
|
'&source=' + that.source;
|
|||
|
return that.$util.Tips({
|
|||
|
title: '取消支付',
|
|||
|
}, {
|
|||
|
tab: 4,
|
|||
|
url: url
|
|||
|
});
|
|||
|
},
|
|||
|
complete: (res) => {
|
|||
|
uni.hideLoading();
|
|||
|
},
|
|||
|
});
|
|||
|
// #endif
|
|||
|
break;
|
|||
|
// #endif
|
|||
|
// #ifdef MP
|
|||
|
case "routine":
|
|||
|
jsConfig.timeStamp = jsConfig.timestamp;
|
|||
|
that.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 that.$util.Tips({
|
|||
|
title: '支付成功',
|
|||
|
icon: 'success'
|
|||
|
}, {
|
|||
|
tab: 5,
|
|||
|
url: goPages
|
|||
|
});
|
|||
|
},
|
|||
|
fail: function(e) {
|
|||
|
// 暂不跳转
|
|||
|
let pages = '/pages/order_pay_status/index?order_id=' +
|
|||
|
orderId + '&msg=取消支付' + '&product_type=' + that
|
|||
|
.product_type + '&source=' + that.source;
|
|||
|
return that.$util.Tips({
|
|||
|
title: '取消支付'
|
|||
|
}, {
|
|||
|
tab: 5,
|
|||
|
url: pages + '&status=0'
|
|||
|
});
|
|||
|
},
|
|||
|
})
|
|||
|
break;
|
|||
|
// #endif
|
|||
|
case "balance":
|
|||
|
//余额
|
|||
|
return that.$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}&product_type=${that.product_type}&source${that.source}`
|
|||
|
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
|
|||
|
default:
|
|||
|
// 暂不跳转
|
|||
|
let pages = '/pages/order_pay_status/index?order_id=' +
|
|||
|
orderId + '&msg=取消支付' + '&product_type=' + that.product_type + '&source=' +
|
|||
|
that.source
|
|||
|
|
|||
|
return that.$util.Tips({
|
|||
|
title: '取消支付'
|
|||
|
}, {
|
|||
|
tab: 5,
|
|||
|
url: pages + '&status=0'
|
|||
|
});
|
|||
|
}
|
|||
|
}).catch(err => {
|
|||
|
return that.$util.Tips({
|
|||
|
title: err
|
|||
|
});
|
|||
|
uni.hideLoading();
|
|||
|
});
|
|||
|
},
|
|||
|
|
|||
|
SubOrder: async function() {
|
|||
|
let that = this,
|
|||
|
data = {};
|
|||
|
if (!that.payType) return that.$util.Tips({
|
|||
|
title: '请选择支付方式'
|
|||
|
});
|
|||
|
|
|||
|
if (that.payType == 'balance' && +this.userInfo.now_money < +this.payForm.money) {
|
|||
|
return that.$util.Tips({
|
|||
|
title: '余额不足,请选择其他的支付方式!'
|
|||
|
});
|
|||
|
}
|
|||
|
this.payForm.pay_type = that.payType;
|
|||
|
|
|||
|
// 设置支付密码
|
|||
|
if (that.payType == 'balance' || that.payType == 'merBalance') {
|
|||
|
// 是否输入密码
|
|||
|
const result = await this.$util.checkPassword();
|
|||
|
if (result.data.code == 101) { //未设置支付密码
|
|||
|
return this.$util.Tips({
|
|||
|
title: "您暂未设置支付密码,请前往设置!"
|
|||
|
}, () => {
|
|||
|
uni.navigateTo({
|
|||
|
url: "/pages/users/user_modify_pwd/index?type=payPwd"
|
|||
|
});
|
|||
|
})
|
|||
|
}
|
|||
|
this.$refs.popups.handleOpen();
|
|||
|
} else {
|
|||
|
uni.showLoading({
|
|||
|
title: '订单支付中',
|
|||
|
mask: true
|
|||
|
});
|
|||
|
this.truePayOrder(data);
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
// 输入密码回调
|
|||
|
async handleConfirm(e) {
|
|||
|
const result = await this.$util.checkPassword(e);
|
|||
|
// 验证密码正确
|
|||
|
if (result.data.code == 100) {
|
|||
|
this.$set(this.payForm, 'withdrawal_pwd', e);
|
|||
|
uni.showLoading({
|
|||
|
title: '订单支付中',
|
|||
|
mask: true
|
|||
|
});
|
|||
|
this.truePayOrder(this.payForm);
|
|||
|
} else {
|
|||
|
this.$refs.payPwd.handleOpen(result.data.code);
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
// 弹框左边按钮 101 未设置密码 102 忘记密码 都去设置密码
|
|||
|
handleLeft(code) {
|
|||
|
uni.navigateTo({
|
|||
|
url: "/pages/users/user_modify_pwd/index?type=payPwd"
|
|||
|
});
|
|||
|
this.$refs.payPwd.handleClose();
|
|||
|
},
|
|||
|
|
|||
|
// 弹框右边按钮 取消 重试
|
|||
|
handleRight(code) {
|
|||
|
if (code == 101) { //取消
|
|||
|
this.$refs.payPwd.handleClose(code);
|
|||
|
} else {
|
|||
|
this.$refs.payPwd.handleClose();
|
|||
|
this.$refs.popups.handleOpen();
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
handleClear() {},
|
|||
|
handleChange() {},
|
|||
|
|
|||
|
truePayOrder() {
|
|||
|
// #ifdef MP
|
|||
|
openPaySubscribe().then(() => {
|
|||
|
that.payment(this.payForm);
|
|||
|
});
|
|||
|
// #endif
|
|||
|
|
|||
|
// #ifndef MP
|
|||
|
this.payment(this.payForm);
|
|||
|
// #endif
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss" scoped>
|
|||
|
.order-submission .wrapper {
|
|||
|
margin-bottom: 12rpx;
|
|||
|
background-color: #fff;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .wrapper .item {
|
|||
|
padding: 27rpx 30rpx;
|
|||
|
font-size: 30rpx;
|
|||
|
color: #282828;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .virtual_form {
|
|||
|
padding: 0 30rpx;
|
|||
|
}
|
|||
|
|
|||
|
/deep/.order-submission .virtual_form .uni-input-wrapper {
|
|||
|
text-align: right;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .virtual_form .item-require {
|
|||
|
color: red;
|
|||
|
margin-right: 4rpx;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .virtual_form .item {
|
|||
|
border-bottom: 1rpx solid #EEEEEE;
|
|||
|
padding: 27rpx 0;
|
|||
|
}
|
|||
|
|
|||
|
.upload {
|
|||
|
display: -webkit-box;
|
|||
|
display: -moz-box;
|
|||
|
display: -webkit-flex;
|
|||
|
display: -ms-flexbox;
|
|||
|
display: flex;
|
|||
|
-webkit-box-lines: multiple;
|
|||
|
-moz-box-lines: multiple;
|
|||
|
-o-box-lines: multiple;
|
|||
|
-webkit-flex-wrap: wrap;
|
|||
|
-ms-flex-wrap: wrap;
|
|||
|
flex-wrap: wrap;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .virtual_form .pictrue {
|
|||
|
width: 156rpx;
|
|||
|
height: 156rpx;
|
|||
|
margin: 24rpx 20rpx 0 0;
|
|||
|
position: relative;
|
|||
|
font-size: 11px;
|
|||
|
color: #bbb;
|
|||
|
border-radius: 3rpx;
|
|||
|
|
|||
|
&:nth-child(4n) {
|
|||
|
margin-right: 0;
|
|||
|
}
|
|||
|
|
|||
|
&:nth-last-child(1) {
|
|||
|
border: 0.5px solid #ddd;
|
|||
|
box-sizing: border-box;
|
|||
|
}
|
|||
|
|
|||
|
uni-image,
|
|||
|
image {
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
border-radius: 1px;
|
|||
|
|
|||
|
img {
|
|||
|
-webkit-touch-callout: none;
|
|||
|
-webkit-user-select: none;
|
|||
|
-moz-user-select: none;
|
|||
|
display: block;
|
|||
|
position: absolute;
|
|||
|
top: 0;
|
|||
|
left: 0;
|
|||
|
opacity: 0;
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
.order-submission .wrapper .item .discount {
|
|||
|
font-size: 30rpx;
|
|||
|
color: #999;
|
|||
|
|
|||
|
&.discount_voice {
|
|||
|
overflow: hidden;
|
|||
|
text-overflow: ellipsis;
|
|||
|
white-space: nowrap;
|
|||
|
width: 500rpx;
|
|||
|
text-align: right;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .wrapper .item .discount .iconfont {
|
|||
|
color: #515151;
|
|||
|
font-size: 30rpx;
|
|||
|
margin-left: 15rpx;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .wrapper .item .discount .num {
|
|||
|
font-size: 32rpx;
|
|||
|
margin-right: 20rpx;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .wrapper .item input {
|
|||
|
flex: 1;
|
|||
|
height: 100%;
|
|||
|
margin-left: 20rpx;
|
|||
|
text-align: right;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .wrapper .item .placeholder {
|
|||
|
color: #ccc;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .wrapper .item .list {
|
|||
|
margin-top: 35rpx;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .wrapper .item .list .payItem {
|
|||
|
border: 1px solid #eee;
|
|||
|
border-radius: 6rpx;
|
|||
|
height: 86rpx;
|
|||
|
width: 100%;
|
|||
|
box-sizing: border-box;
|
|||
|
margin-top: 20rpx;
|
|||
|
font-size: 28rpx;
|
|||
|
color: #282828;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .wrapper .item .list .payItem.on {
|
|||
|
border-color: var(--view-theme);
|
|||
|
color: var(--view-theme);
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .wrapper .item .list .payItem .name {
|
|||
|
width: 50%;
|
|||
|
text-align: center;
|
|||
|
border-right: 1px solid #eee;
|
|||
|
justify-content: left;
|
|||
|
padding-left: 80rpx;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .wrapper .item .list .payItem .name .iconfont {
|
|||
|
width: 44rpx;
|
|||
|
height: 44rpx;
|
|||
|
border-radius: 50%;
|
|||
|
text-align: center;
|
|||
|
line-height: 44rpx;
|
|||
|
background-color: #fe960f;
|
|||
|
color: #fff;
|
|||
|
font-size: 30rpx;
|
|||
|
margin-right: 15rpx;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .wrapper .item .list .payItem .name .iconfont.icon-weixin2 {
|
|||
|
background-color: #41b035;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .wrapper .item .list .payItem .name .iconfont.icon-icon34 {
|
|||
|
background-color: #4295D5;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .wrapper .item .list .payItem .tip {
|
|||
|
width: 49%;
|
|||
|
text-align: center;
|
|||
|
font-size: 26rpx;
|
|||
|
color: #aaa;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .moneyList {
|
|||
|
margin-top: 12rpx;
|
|||
|
background-color: #fff;
|
|||
|
padding: 30rpx;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .moneyList .item {
|
|||
|
font-size: 28rpx;
|
|||
|
color: #282828;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .moneyList .item~.item {
|
|||
|
margin-top: 20rpx;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .moneyList .item .money {
|
|||
|
color: #868686;
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .footer {
|
|||
|
width: 100%;
|
|||
|
height: 100rpx;
|
|||
|
height: calc(100rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
|
|||
|
height: calc(100rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
|
|||
|
background-color: #fff;
|
|||
|
padding: 0 30rpx;
|
|||
|
font-size: 28rpx;
|
|||
|
color: #333;
|
|||
|
box-sizing: border-box;
|
|||
|
position: fixed;
|
|||
|
bottom: 0;
|
|||
|
left: 0;
|
|||
|
z-index: 30;
|
|||
|
|
|||
|
.footer_count {
|
|||
|
font-size: 28rpx;
|
|||
|
}
|
|||
|
|
|||
|
.coupon_price {
|
|||
|
color: #999999;
|
|||
|
font-size: 20rpx;
|
|||
|
margin-top: 10rpx;
|
|||
|
|
|||
|
text {
|
|||
|
color: #282828;
|
|||
|
padding: 2rpx 10rpx;
|
|||
|
background: #F5F5F5;
|
|||
|
border-radius: 26rpx;
|
|||
|
margin-left: 20rpx;
|
|||
|
line-height: 30rpx;
|
|||
|
height: 30rpx;
|
|||
|
display: inline-block;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.pColor {
|
|||
|
color: var(--view-priceColor);
|
|||
|
}
|
|||
|
|
|||
|
.order-submission .footer .settlement {
|
|||
|
font-size: 30rpx;
|
|||
|
color: #fff;
|
|||
|
width: 240rpx;
|
|||
|
height: 70rpx;
|
|||
|
background-color: var(--view-theme);
|
|||
|
border-radius: 50rpx;
|
|||
|
text-align: center;
|
|||
|
line-height: 70rpx;
|
|||
|
|
|||
|
&.disabled {
|
|||
|
background-color: #cccccc;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.storeinfo-wrapper {
|
|||
|
.store-item {
|
|||
|
margin-top: 12rpx;
|
|||
|
background-color: #fff;
|
|||
|
|
|||
|
.store-title {
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
padding: 28rpx 30rpx;
|
|||
|
|
|||
|
.icon-shangjiadingdan {
|
|||
|
font-size: 32rpx;
|
|||
|
}
|
|||
|
|
|||
|
.icon-xiangyou {
|
|||
|
font-size: 26rpx;
|
|||
|
color: #999;
|
|||
|
}
|
|||
|
|
|||
|
.txt {
|
|||
|
margin: 0 8rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.product-item {
|
|||
|
display: flex;
|
|||
|
padding: 25rpx 30rpx;
|
|||
|
border-top: 1px solid #F0F0F0;
|
|||
|
|
|||
|
.img-box {
|
|||
|
width: 130rpx;
|
|||
|
height: 130rpx;
|
|||
|
|
|||
|
image {
|
|||
|
width: 130rpx;
|
|||
|
height: 130rpx;
|
|||
|
border-radius: 16rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.content {
|
|||
|
position: relative;
|
|||
|
width: 550rpx;
|
|||
|
margin-left: 30rpx;
|
|||
|
font-size: 28rpx;
|
|||
|
color: #282828;
|
|||
|
overflow: hidden;
|
|||
|
|
|||
|
&.event_content {
|
|||
|
.line1 {
|
|||
|
width: 360rpx;
|
|||
|
}
|
|||
|
|
|||
|
.price {
|
|||
|
position: absolute;
|
|||
|
top: 0;
|
|||
|
right: 0;
|
|||
|
margin-top: 0;
|
|||
|
|
|||
|
text {
|
|||
|
display: block;
|
|||
|
text-align: right;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.label {
|
|||
|
margin-top: 10rpx;
|
|||
|
color: #868686;
|
|||
|
font-size: 20rpx;
|
|||
|
}
|
|||
|
|
|||
|
.price {
|
|||
|
margin-top: 20rpx;
|
|||
|
color: var(--view-priceColor);
|
|||
|
position: relative;
|
|||
|
|
|||
|
text {
|
|||
|
margin-left: 10rpx;
|
|||
|
color: #999;
|
|||
|
}
|
|||
|
|
|||
|
.delivery_type {
|
|||
|
float: right;
|
|||
|
|
|||
|
text {
|
|||
|
color: var(--view-priceColor);
|
|||
|
font-size: 20rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
uni-checkbox-group,
|
|||
|
.checkgroup {
|
|||
|
width: 100%;
|
|||
|
|
|||
|
.checkbox {
|
|||
|
float: right;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.total {
|
|||
|
display: flex;
|
|||
|
justify-content: flex-end;
|
|||
|
padding-right: 30rpx;
|
|||
|
padding-bottom: 30rpx;
|
|||
|
font-size: 26rpx;
|
|||
|
color: #282828;
|
|||
|
|
|||
|
.price {
|
|||
|
margin-left: 10rpx;
|
|||
|
color: var(--view-priceColor);
|
|||
|
font-size: 28rpx;
|
|||
|
font-weight: bold;
|
|||
|
|
|||
|
text {
|
|||
|
font-size: 20rpx;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.red_packet {
|
|||
|
color: #ff5c2d !important;
|
|||
|
background-color: rgba(#ff5c2d, 0.3);
|
|||
|
border-radius: 60rpx;
|
|||
|
padding: 5rpx 10rpx;
|
|||
|
padding-left: 20rpx;
|
|||
|
font-size: 25rpx;
|
|||
|
}
|
|||
|
</style>
|