543 lines
11 KiB
Vue
543 lines
11 KiB
Vue
<template>
|
|
<view class="container">
|
|
<view class="card">
|
|
<view class="shop-info">
|
|
<view class="item" v-for="(item,index) in cartLists.data" :key="index">
|
|
<view class="cover">
|
|
<c-image width="120" height="120" radius="16" :src='item.coverImg'></c-image>
|
|
</view>
|
|
<view class="info">
|
|
<text>{{item.name}}</text>
|
|
<text class="n">{{item.skuName}}</text>
|
|
<text class="n">x{{item.number}}</text>
|
|
</view>
|
|
<view class="price">
|
|
<text class="i">¥</text>
|
|
<text class="num">{{item.salePrice}}</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<!-- 支付密码 -->
|
|
<payPassword ref="payPwd" @accountPayevent="accountPayevent" v-if="ispws"></payPassword>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
// import {object} from 'prop-types';
|
|
import webSocketUtils from '@/common/js/websocket.js'
|
|
import payPassword from '@/components/payPassword.vue'
|
|
export default {
|
|
components: {
|
|
payPassword
|
|
},
|
|
data() {
|
|
return {
|
|
height: '',
|
|
pay_type: 1,
|
|
remark: '',
|
|
listinfo: {
|
|
detailList: [],
|
|
amount: '',
|
|
amounts: ''
|
|
},
|
|
emitorderfoodform: {
|
|
clickiconone: ''
|
|
},
|
|
orderInfo: '',
|
|
// 可用优惠券数据
|
|
couponAmount: 0,
|
|
// 输入支付密码 123
|
|
ispws: false,
|
|
listinfoid: ''
|
|
};
|
|
},
|
|
props: {
|
|
cartLists: {
|
|
type: Object,
|
|
default () {
|
|
return {
|
|
amount: '0.00',
|
|
data: []
|
|
}
|
|
}
|
|
},
|
|
radiovalue: {
|
|
type: String,
|
|
default: '1'
|
|
},
|
|
amountVIP: {
|
|
type: Object,
|
|
default () {
|
|
return {
|
|
|
|
}
|
|
}
|
|
}
|
|
},
|
|
onUnload() {
|
|
this.ispws = false
|
|
},
|
|
methods: {
|
|
groupChange(n) {
|
|
this.radiovalue = n
|
|
},
|
|
async getAount() {
|
|
let res = await this.api.shopUserInfo({
|
|
"shopId": uni.cache.get('shopUser'),
|
|
"userId": uni.cache.get('userInfo').id,
|
|
})
|
|
if (res.code == 0) {
|
|
this.amountVIP = res.data
|
|
}
|
|
},
|
|
orderfoodindex() { //优惠劵
|
|
uni.pro.navigateTo('index/coupons/index', {
|
|
orderfood: 0,
|
|
orderId: this.listinfoid,
|
|
amount: this.listinfo.amounts
|
|
})
|
|
},
|
|
copyHandle(e) {
|
|
uni.setClipboardData({
|
|
data: e,
|
|
success() {
|
|
uni.showToast({
|
|
title: '复制成功',
|
|
icon: 'none'
|
|
});
|
|
}
|
|
});
|
|
},
|
|
async paymodfiyOrderInfo() { //支付完成后请求
|
|
let res = await this.api.paymodfiyOrderInfo({
|
|
orderId: this.listinfoid,
|
|
})
|
|
},
|
|
goRecharge() { // 去充值
|
|
uni.pro.navigateTo('/pages/member/index', {
|
|
shopId: uni.cache.get('shopUser')
|
|
})
|
|
},
|
|
showpopupclickddes(ID) {
|
|
// radiovalue为1是微信支付
|
|
this.listinfoid = ID
|
|
if (this.radiovalue == 1) {
|
|
this.showpopupclickdds() //微信支付
|
|
} else {
|
|
// 先判断是否设置支付密码。0是没设置。没设置的情况下跳转到设置页面。有的话输入支付密码
|
|
// console.log(isPwd,'是否设置了支付密码')
|
|
if (uni.cache.get('userInfo').isPwd == 0) {
|
|
uni.pro.navigateTo('/pages/user/repairpassword', {
|
|
shopId_id: uni.cache.get('shopUser')
|
|
})
|
|
} else {
|
|
this.ispws = true
|
|
this.$nextTick(() => {
|
|
this.$refs.payPwd.onPayUp();
|
|
})
|
|
}
|
|
}
|
|
},
|
|
// 微信支付
|
|
async showpopupclickdds() {
|
|
let res = await this.api.payorderPay({
|
|
orderId: this.listinfoid
|
|
}) //判断是否支付成功
|
|
if (res.code == 0) {
|
|
uni.showLoading({
|
|
title: '加载中',
|
|
mask: true
|
|
})
|
|
// #ifdef MP-WEIXIN
|
|
// 微信支付还是余额支付
|
|
uni.requestPayment({
|
|
provider: 'wxpay', //支付类型-固定值
|
|
partnerid: res.data.appId, // 微信支付商户号
|
|
timeStamp: res.data.timeStamp, // 时间戳(单位:秒)
|
|
nonceStr: res.data.nonceStr, // 随机字符串
|
|
package: res.data.package, // 固定值
|
|
signType: res.data.signType, //固定值
|
|
paySign: res.data.paySign, //签名
|
|
success: (res) => {
|
|
let _this = this
|
|
uni.requestSubscribeMessage({
|
|
tmplIds: ['z0fUG7-jhSfYCrw6poOvSRzh4_hgnPkm_5C7E5s5bCQ'],
|
|
complete() {
|
|
uni.showToast({
|
|
title: "支付成功"
|
|
})
|
|
// uni.cache.set('shopUser', '') //删除shopUser
|
|
_this.paymodfiyOrderInfo()
|
|
uni.redirectTo({
|
|
url: '/pages/order/order_detail?orderId=' + _this
|
|
.listinfoid
|
|
});
|
|
},
|
|
})
|
|
},
|
|
fail: () => {
|
|
uni.hideLoading()
|
|
}
|
|
});
|
|
// #endif
|
|
uni.hideLoading()
|
|
}
|
|
},
|
|
// 余额支付
|
|
async accountPayevent(pwd) {
|
|
this.ispws = false
|
|
let res = await this.api.accountPay({
|
|
orderId: this.listinfoid,
|
|
memberId: this.amountVIP.id,
|
|
// remark: this.remark,
|
|
pwd
|
|
})
|
|
if (res.code == 0) {
|
|
// data ->1 支付成功
|
|
// ->2 余额不足
|
|
// ->3 未设置支付密码,
|
|
// ->4 不是会员,
|
|
if (res.data == 1) {
|
|
this.showToastUppop('支付成功')
|
|
let _this = this
|
|
|
|
uni.requestSubscribeMessage({
|
|
tmplIds: ['z0fUG7-jhSfYCrw6poOvSRzh4_hgnPkm_5C7E5s5bCQ'],
|
|
complete() {
|
|
uni.redirectTo({
|
|
url: '/pages/order/order_detail?orderId=' + _this
|
|
.listinfoid
|
|
});
|
|
},
|
|
})
|
|
|
|
} else if (res.data == 2) {
|
|
this.showToastUppop('余额不足')
|
|
setTimeout(() => {
|
|
// 去充值
|
|
this.goRecharge()
|
|
}, 1500)
|
|
} else if (res.data == 3) {
|
|
this.showToastUppop('未设置支付密码')
|
|
setTimeout(() => {
|
|
uni.pro.navigateTo('/pages/user/repairpassword', {
|
|
shopId_id: uni.cache.get('shopUser')
|
|
})
|
|
}, 1500)
|
|
|
|
} else if (res.data == 4) {
|
|
this.showToastUppop('非会员请充值')
|
|
setTimeout(() => {
|
|
// 去充值
|
|
this.goRecharge()
|
|
}, 1500)
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
showToastUppop(title) {
|
|
uni.showToast({
|
|
icon: 'none',
|
|
title,
|
|
success: () => {
|
|
|
|
}
|
|
})
|
|
},
|
|
|
|
},
|
|
async mounted() {
|
|
uni.getSystemInfo({
|
|
success: (data) => {
|
|
this.height = (data.windowHeight / 2) + "px";
|
|
console.log(this.height, 1111);
|
|
}
|
|
})
|
|
// //#ifdef MP-WEIXIN || H5
|
|
// var query = uni.createSelectorQuery().in(this).select('.fixedview')
|
|
// query.boundingClientRect(ele => {
|
|
// var that = this;
|
|
// that.height = (ele.height) + "px";
|
|
// that = null;
|
|
// }).exec();
|
|
// //#endif
|
|
// //#ifdef MP-ALIPAY
|
|
// my.createSelectorQuery().selectAll('.fixedview').boundingClientRect().exec(ele => {
|
|
// var nodeData = ele[0]
|
|
// var that = this;
|
|
// that.height = (nodeData.height) + "px";
|
|
// that = null;
|
|
// })
|
|
// //#endif
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.container {
|
|
padding: 0 28upx 28upx 28upx 28upx;
|
|
max-height: 600px;
|
|
overflow: auto;
|
|
}
|
|
|
|
.card {
|
|
background-color: #fff;
|
|
border-radius: 20upx;
|
|
padding: 28upx;
|
|
margin-bottom: 48rpx;
|
|
|
|
.head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
|
|
&.border {
|
|
padding-bottom: 28upx;
|
|
border-bottom: 1upx solid #fafafa;
|
|
}
|
|
|
|
.status {
|
|
color: #ff0000;
|
|
}
|
|
}
|
|
|
|
.tag-wrap {
|
|
padding: 28upx 0;
|
|
display: flex;
|
|
|
|
.tag {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 0 10upx;
|
|
color: $color-priamry;
|
|
border: 1px solid $color-priamry;
|
|
font-size: 24upx;
|
|
}
|
|
}
|
|
|
|
.number-wrap {
|
|
background-color: #fafafa;
|
|
border-radius: 16upx;
|
|
padding: 28upx 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
|
|
.number {
|
|
font-size: 42upx;
|
|
font-weight: bold;
|
|
}
|
|
}
|
|
|
|
.price {
|
|
.i {
|
|
font-size: 20upx;
|
|
}
|
|
|
|
.num {
|
|
font-size: 38upx;
|
|
}
|
|
}
|
|
|
|
.shop-info {
|
|
padding: 28upx 0;
|
|
|
|
.item:nth-child(1) {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.item {
|
|
margin-top: 16rpx;
|
|
display: flex;
|
|
|
|
.info {
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-between;
|
|
padding-left: 28upx;
|
|
|
|
.n {
|
|
font-size: 24upx;
|
|
color: #999;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.total-wrap {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
padding-top: 28upx;
|
|
border-top: 1upx solid #fafafa;
|
|
}
|
|
|
|
.order-info {
|
|
.row {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
padding-top: 28upx;
|
|
|
|
.t {
|
|
font-size: 24upx;
|
|
color: #999;
|
|
}
|
|
|
|
.info {
|
|
font-size: 24upx;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.sixcontent {
|
|
width: 100%;
|
|
background: #FFFFFF;
|
|
padding: 32rpx;
|
|
margin-top: 32rpx;
|
|
border-radius: 12rpx;
|
|
|
|
.sixcontentone {
|
|
padding-bottom: 28rpx;
|
|
border-bottom: 1px solid #F7F7F7;
|
|
font-size: 28rpx;
|
|
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
|
|
font-weight: 500;
|
|
color: #333333;
|
|
|
|
.sixcontent_one {
|
|
font-size: 28rpx;
|
|
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
|
|
font-weight: 500;
|
|
color: #333333;
|
|
}
|
|
}
|
|
|
|
.sixcontenttow {
|
|
.sixcontenttowitem {
|
|
margin-top: 16rpx;
|
|
|
|
.sixcontenttowitemone {
|
|
image {
|
|
margin-left: 24rpx;
|
|
width: 31.37rpx;
|
|
height: 27.34rpx;
|
|
}
|
|
|
|
.sixcontenttowitemonetext {
|
|
margin-left: 14rpx;
|
|
font-size: 28rpx;
|
|
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
|
|
font-weight: 500;
|
|
color: #333333;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.redMoney {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-top: 30rpx;
|
|
background-color: #fff;
|
|
padding: 18rpx 14rpx;
|
|
|
|
>view:first-child {
|
|
display: flex;
|
|
align-items: center;
|
|
font-weight: 400;
|
|
font-size: 28rpx;
|
|
color: #333333;
|
|
}
|
|
|
|
>view:last-child {
|
|
background: #FFE9E9;
|
|
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
|
font-weight: 400;
|
|
font-size: 28rpx;
|
|
color: #FF3333;
|
|
text-align: center;
|
|
padding: 9rpx 13rpx;
|
|
}
|
|
}
|
|
|
|
.payType {
|
|
padding: 32rpx 34rpx;
|
|
margin-top: 48rpx;
|
|
background-color: #fff;
|
|
|
|
>view:first-child {
|
|
font-weight: 500;
|
|
font-size: 28rpx;
|
|
color: #333333;
|
|
}
|
|
|
|
>view:last-child {
|
|
margin-top: 32rpx;
|
|
}
|
|
|
|
.dfs {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
}
|
|
|
|
.fixedview {
|
|
position: fixed;
|
|
bottom: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 180rpx;
|
|
padding: 16rpx 34rpx;
|
|
|
|
.flex-between {
|
|
width: 100%;
|
|
padding: 24rpx 28rpx;
|
|
background: #FFFFFF;
|
|
flex-wrap: nowrap;
|
|
|
|
.fixedview_one {
|
|
.fixedview_oneone {
|
|
font-size: 28rpx;
|
|
font-family: SourceHanSansCN-Bold-, SourceHanSansCN-Bold;
|
|
font-weight: normal;
|
|
color: #333333;
|
|
}
|
|
|
|
.fixedview_onetow {
|
|
font-size: 44rpx;
|
|
font-family: SourceHanSansCN-Bold-, SourceHanSansCN-Bold;
|
|
font-weight: normal;
|
|
color: #F45C4C;
|
|
font-weight: bold;
|
|
|
|
text {
|
|
font-size: 28rpx;
|
|
}
|
|
}
|
|
|
|
.fixedview_onethere {
|
|
font-family: Source Han Sans CN, Source Han Sans CN;
|
|
font-weight: 400;
|
|
font-size: 24rpx;
|
|
color: #999999;
|
|
}
|
|
}
|
|
|
|
.fixedview_tow {
|
|
background: red;
|
|
border-radius: 34rpx;
|
|
padding: 10rpx 44rpx;
|
|
font-size: 32rpx;
|
|
font-family: PingFang SC-Bold, PingFang SC;
|
|
font-weight: bold;
|
|
color: #FFFFFF;
|
|
}
|
|
}
|
|
}
|
|
</style> |