You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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>