171 lines
4.1 KiB
Vue
171 lines
4.1 KiB
Vue
|
<template>
|
||
|
<div>
|
||
|
<u-popup :show="show" mode="center" bgColor="transparent">
|
||
|
<view class="popupLocale-box">
|
||
|
<view class="item">
|
||
|
<image style="width: 600upx; height: 600upx" :src="detail.collectionImg"></image>
|
||
|
</view>
|
||
|
<view style="
|
||
|
color: rgb(0, 0, 0);
|
||
|
margin-top: 10upx;
|
||
|
margin-bottom: 10upx;
|
||
|
font-size: 40upx;
|
||
|
">
|
||
|
{{ detail.name }}
|
||
|
</view>
|
||
|
<view style="color: #6c6c6c; margin-top: 10upx; margin-bottom: 10upx" v-html="detail.intro">
|
||
|
</view>
|
||
|
</view>
|
||
|
<view class="btn-box">
|
||
|
<u-button :text="detail.isReceive
|
||
|
? '已被领取'
|
||
|
: detail.saleType === 'homebuy'
|
||
|
? '¥' + detail.price + '购买'
|
||
|
: $t('to.accept')
|
||
|
" @click="recive" style="
|
||
|
width: 460rpx;
|
||
|
height: 56rpx;
|
||
|
border-radius: 40rpx;
|
||
|
margin-top: 30rpx;
|
||
|
background: #699a70;
|
||
|
border: none;
|
||
|
color: #fff;
|
||
|
"></u-button>
|
||
|
<view style="margin-top: 30rpx; text-align: center" @click="close">{{
|
||
|
$t("buyVerfy.cancel")
|
||
|
}}</view>
|
||
|
</view>
|
||
|
</u-popup>
|
||
|
</div>
|
||
|
</template>
|
||
|
<script>
|
||
|
// const jweixin = require("jweixin-module");
|
||
|
// import jweixin from "weixin-js-sdk";
|
||
|
|
||
|
export default {
|
||
|
data() {
|
||
|
return {
|
||
|
show: false,
|
||
|
};
|
||
|
},
|
||
|
watch: {
|
||
|
isShow: {
|
||
|
immediate: true,
|
||
|
handler(newValue) {
|
||
|
this.show = newValue;
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
props: ["detail", "collectionsUID", "num", "isShow"],
|
||
|
methods: {
|
||
|
close() {
|
||
|
this.show = false;
|
||
|
},
|
||
|
|
||
|
async recive() {
|
||
|
if (this.detail.isReceive) return;
|
||
|
if (this.detail.saleType === 'homebuy') {
|
||
|
this.payHandle()
|
||
|
} else {
|
||
|
await this.$api.series
|
||
|
.collectionsReceive({
|
||
|
collectionsUID: this.collectionsUID,
|
||
|
num: this.num,
|
||
|
})
|
||
|
.then((res) => {
|
||
|
console.log(res);
|
||
|
if (res.status === 0) {
|
||
|
this.show = false;
|
||
|
} else {
|
||
|
this.$common.msgToast(res.msg, null, "error");
|
||
|
}
|
||
|
})
|
||
|
.catch(() => {
|
||
|
uni.showToast({
|
||
|
title: this.$t("load.failed"),
|
||
|
icon: "none",
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
},
|
||
|
async payHandle() {
|
||
|
await this.$api.series
|
||
|
.collectionsBuy({
|
||
|
collectionsUID: this.collectionsUID,
|
||
|
num: this.num,
|
||
|
openId: uni.getStorageSync("openId"),
|
||
|
})
|
||
|
.then((res) => {
|
||
|
if (res.status === 0) {
|
||
|
this.vxPay(res.data);
|
||
|
}
|
||
|
})
|
||
|
.catch(() => {
|
||
|
uni.showToast({
|
||
|
title: this.$t("load.failed"),
|
||
|
icon: "none",
|
||
|
});
|
||
|
});
|
||
|
},
|
||
|
vxPay(data) {
|
||
|
jweixin.config({
|
||
|
debug: false,
|
||
|
appId: "wx72ffc6670d5ddb12",
|
||
|
timestamp: 1682402430,
|
||
|
nonceStr: "123",
|
||
|
signature: "123",
|
||
|
jsApiList: ["chooseWXPay"],
|
||
|
});
|
||
|
jweixin.chooseWXPay({
|
||
|
prepay_id: data.prepay_id,
|
||
|
appId: data.appId,
|
||
|
timestamp: data.timeStamp,
|
||
|
nonceStr: data.nonceStr,
|
||
|
package: data.package,
|
||
|
signType: data.signType,
|
||
|
paySign: data.paySign,
|
||
|
success: () => {
|
||
|
this.$common.msgToast("支付成功", null, "success");
|
||
|
this.close();
|
||
|
},
|
||
|
fail: (res) => {
|
||
|
this.$common.msgToast(res.errMsg, null, "error");
|
||
|
},
|
||
|
});
|
||
|
jweixin.error(function (res) {
|
||
|
this.$common.msgToast("用户取消支付", null, "error");
|
||
|
});
|
||
|
},
|
||
|
},
|
||
|
};
|
||
|
</script>
|
||
|
|
||
|
<style lang="scss" scoped>
|
||
|
.popupLocale-box {
|
||
|
background: rgba(255, 255, 255, 0.8);
|
||
|
width: 582rpx;
|
||
|
overflow: hidden;
|
||
|
padding: 30rpx 42rpx;
|
||
|
|
||
|
.u-button {
|
||
|
width: 260rpx;
|
||
|
height: 56rpx;
|
||
|
border-radius: 40rpx;
|
||
|
}
|
||
|
|
||
|
.item {
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
justify-content: center;
|
||
|
}
|
||
|
|
||
|
.btn-box {
|
||
|
display: flex;
|
||
|
flex-direction: column;
|
||
|
justify-content: center;
|
||
|
align-items: center;
|
||
|
}
|
||
|
}
|
||
|
</style>
|