zszq-celebration-88/src/components/MyPrize.vue
2022-08-05 14:11:34 +08:00

382 lines
8.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="myPrizeCon" @touchmove.prevent>
<div class="myPrize_container">
<!-- 有奖品 -->
<div class="prize_has" v-if="prizeList.length != 0">
<div class="cake"></div>
<div class="prize_box">
<div class="prize_top">
<div class="prize_title"></div>
</div>
<div class="prize_middle">
<div class="prize_item" v-for="(item, key) in prizeList" :key="key">
<div class="prize_li">
<div class="prize_num">{{ item.prizeNum }}元红包</div>
<div class="prize_spe">{{ item.spe }}</div>
</div>
<div class="buttom">
<img
:src="
item.isGeted == 0
? require('../assets/img/pop/view_btn.png')
: require('../assets/img/pop/got_btn.png')
"
@click="getMoney(item)"
/>
</div>
</div>
</div>
<div class="prize_bottom"></div>
</div>
</div>
<!-- 没奖品记录 -->
<div class="prize_no" v-if="prizeList.length == 0"></div>
<div class="cls_btn" @click="hide"></div>
</div>
</div>
<!-- 领取成功反馈弹窗 -->
<div class="GotedPop" @touchmove.prevent>
<div class="goted_container">
<div class="goted_box">
<div class="to_index_btn" @click="hide"></div>
</div>
<div class="cls_btn" @click="hidePop"></div>
</div>
</div>
</template>
<script setup>
import {
onBeforeMount,
onMounted,
defineEmits,
defineProps,
reactive,
ref,
toRefs,
} from "vue";
import gsap from "gsap";
import axios from "axios";
import service from "@/api/httpServe";
import qs from "qs";
import { Toast, Dialog } from "vant";
import { useStore } from "vuex";
import wx from "@/utils/wx-jssdk.1.6.0.js";
// 初始化
const emit = defineEmits(["MyPrize"]); // 声明触发事件,对应父组件上面的方法
const props = defineProps({ sendMessage: Object }); // 获取props
const store = useStore();
const prizeList = reactive([
// {
// id: 1,
// prizeNum: 8.8,
// isGeted: true,
// isHas: true,
// spe: "财富88与“礼”共见证",
// },
// {
// id: 2,
// prizeNum: 8.8,
// isGeted: false,
// isHas: true,
// spe: "添加专属服务人员企微",
// },
]);
// 页面挂载前
onBeforeMount(() => {
let arr = store.state.userAccount.prizeList;
arr.forEach((element) => {
if (element.receiveStatus != -1) {
if (element.type == 1) {
prizeList.push({
id: element.id,
type: element.type,
prizeNum: element.amount,
isGeted: element.receiveStatus,
spe: "财富88与“礼”共见证",
});
}
if (element.type == 2) {
prizeList.push({
id: element.id,
type: element.type,
prizeNum: element.amount,
isGeted: element.receiveStatus,
spe: "添加专属服务人员企微",
});
}
}
});
});
// 页面挂载后
onMounted(() => {
gsap.from(".myPrizeCon", { duration: 0.3, autoAlpha: 0 });
gsap.from(".myPrize_container", {
duration: 0.3,
scale: 0.2,
autoAlpha: 0,
delay: 0.1,
});
// gsap.from('.rule_cls_btn', { duration: 0.3, y: 20, autoAlpha: 0, delay: 0.5 })
});
const hide = () => {
emit("MyPrize");
};
const hidePop = () => {
gsap.to(".GotedPop", { duration: 0.5, autoAlpha: 0 });
gsap.to(".myPrizeCon", { duration: 0.5, autoAlpha: 1, delay: 0.2 });
};
// 领取按钮
const getMoney = (val) => {
console.log("val:", val);
// 红包类型未参与红包: 需先绑定牛卡号
if (val.type == 1) {
console.log("牛卡号:",store.state.userAccount.nkh);
if (store.state.userAccount.nkh == '') {
// Toast("牛卡号为空,先绑定牛卡号");
Dialog.confirm({
title: "温馨提示",
message: "牛卡号为空,先绑定牛卡号",
confirmButtonText: "前往绑定",
})
.then(() => {
wx.miniProgram.navigateTo({
url: "/subs/bind/pages/login/login",
});
})
.catch(() => {
console.log(2);
// on cancel
});
} else {
getLuckyBag(val.id);
}
}
if (val.type == 2) {
if (val.isGeted == 0) {
console.log("未领取", val);
getLuckyBag(val.id);
}
}
};
// 领取接口
const getLuckyBag = (id) => {
service
.post(
process.env.VUE_APP_API + "/cms-activity/cms88/redpacket/receive/" + id,
{}
)
.then((res) => {
console.log("领取红包结果", res);
let data = res.data;
if (data.code == 0) {
gsap.to(".GotedPop", { duration: 1, autoAlpha: 1, delay: 0.2 });
gsap.to(".myPrizeCon", { duration: 1, autoAlpha: 0 });
getMyPrizeRecored();
} else {
Toast(data.msg);
}
});
};
// 我的红包记录
const getMyPrizeRecored = () => {
service
.post(process.env.VUE_APP_API + "/cms-activity/cms88/prize/list", {})
.then((res) => {
console.log("红包记录:", res.data);
store.commit({
type: "updatePrizeList",
prizeList: res.data.data,
});
});
};
</script>
<style lang="scss" scoped>
.myPrizeCon {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
background-color: rgba(0, 0, 0, 0.7);
.myPrize_container {
width: 750px;
height: 1180px;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
// 有奖品央视
.prize_has {
display: flex;
flex-direction: column;
align-items: center;
.cake {
width: 382px;
height: 201px;
@include bg_pos("../assets/img/pop/cake.png");
z-index: 999;
}
.prize_box {
width: 550px;
margin-top: -34px;
.prize_top {
width: 550px;
height: 135px;
@include bg_pos("../assets/img/pop/prize_box_top.png");
pointer-events: none;
display: flex;
justify-content: center;
align-items: center;
.prize_title {
width: 267px;
height: 58px;
@include bg_pos("../assets/img/pop/my_prize.png");
}
}
.prize_middle {
width: 550px;
height: 190px;
@include bg_pos("../assets/img/pop/prize_box_middle.png");
margin-top: 0px;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
.prize_item {
width: 463px;
height: 67px;
display: flex;
justify-content: space-between;
align-items: center;
flex-direction: row;
margin: 20px auto;
padding-bottom: 10px;
.prize_li {
display: flex;
// justify-content: center;
// align-items: center;
flex-direction: column;
.prize_num {
color: #ca2f0a;
font-weight: 700;
font-size: 30px;
}
.prize_spe {
color: #ca2f0a;
font-weight: 700;
font-size: 24px;
margin-top: 5px;
}
}
.buttom {
width: 147px;
height: 62px;
background-size: 100%;
img {
width: 100%;
height: 100%;
}
}
}
}
.prize_bottom {
width: 550px;
height: 50px;
@include bg_pos("../assets/img/pop/prize_box_bottom.png");
margin-top: 0px;
}
}
}
// 无奖品样式
.prize_no {
width: 573px;
height: 524px;
@include bg_pos("../assets/img/pop/no_recored_pop.png");
}
.cls_btn {
@include box(72px, 72px);
@include bg_pos("../assets/img/pop/cls_btn.png");
margin-top: 50px;
}
}
}
.GotedPop {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
background-color: rgba(0, 0, 0, 0.7);
visibility: hidden;
.goted_container {
width: 750px;
height: 1180px;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
.goted_box {
@include box(530px, 594px);
@include bg_pos("../assets/img/pop/got_luckyBag_pop.png");
position: relative;
.to_index_btn {
@include pos(394px, 92px, 79px, 389px);
@include bg_pos("../assets/img/pop/to_index_btn.png");
}
}
.cls_btn {
@include box(72px, 72px);
@include bg_pos("../assets/img/pop/cls_btn.png");
margin-top: 50px;
}
}
}
</style>