340 lines
8.5 KiB
Vue
340 lines
8.5 KiB
Vue
|
|
<template>
|
|||
|
|
|
|||
|
|
<view class="">
|
|||
|
|
<view class="custom-navbar">
|
|||
|
|
<text style="font-size: 40rpx;" @click="back()" class="cuIcon-back"></text>
|
|||
|
|
<view class="title">幸运大抽奖</view>
|
|||
|
|
<view class="back-button">
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<choujian style="position: absolute;" ref='choujian' :nImg='nImg' :AwardList="AwardList" :sjNum="sjNum"
|
|||
|
|
:lotteryType="lotteryType" @updateMoney="updateMoney" @lookAd="lookAd" @noChance="noChance">
|
|||
|
|
</choujian>
|
|||
|
|
<view class="tip-box">100%中奖,积分中不停</view>
|
|||
|
|
<view class="log-box">
|
|||
|
|
<!-- 通知 -->
|
|||
|
|
<view class="inform">
|
|||
|
|
<view class="inform-info">
|
|||
|
|
<view class="info">
|
|||
|
|
<swiper class="swiper" :circular="true" :vertical="true" :indicator-dots="false"
|
|||
|
|
:autoplay="true" :interval="3000" :duration="1000">
|
|||
|
|
<swiper-item v-for="(item,index) in lotteryLog" :key="index">
|
|||
|
|
<view class="swiper-item"><text class="one-omit">
|
|||
|
|
<text class="cuIcon-vip"
|
|||
|
|
style="margin-right: 10rpx;font-size: 23rpx;color: #fcc600;"></text>
|
|||
|
|
微信用户_{{item.lotteryUserId}} 抽中了 {{item.name}}</text>
|
|||
|
|
</view>
|
|||
|
|
</swiper-item>
|
|||
|
|
</swiper>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
<view class="cu-modal" :class="modalName=='Modal'?'show':''">
|
|||
|
|
<view style="border-radius: 30rpx;" class="cu-dialog">
|
|||
|
|
<view class="cu-bar bg-white justify-end">
|
|||
|
|
<view style="color: black;font-size: 38rpx;margin-top: 50rpx;" class="content">提示</view>
|
|||
|
|
</view>
|
|||
|
|
<view class=" bg-white">
|
|||
|
|
<view style="font-size: 35rpx;color: #6a6a6a;padding: 40rpx 60rpx 60rpx 60rpx;">
|
|||
|
|
{{lotteryMsg}}
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
<button @tap="hideModal" style="margin-bottom: 50rpx;width: 55%;height: 90rpx;font-size: 38rpx;"
|
|||
|
|
class="cu-btn bg-green">知道了</button>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="cu-modal" :class="modalName=='nowLookAd'?'show':''">
|
|||
|
|
<view style="border-radius: 30rpx;" class="cu-dialog">
|
|||
|
|
<view class="cu-bar bg-white justify-end">
|
|||
|
|
<view style="color: black;font-size: 38rpx;margin-top: 50rpx;" class="content">提示</view>
|
|||
|
|
<view class="action" @tap="hideModal">
|
|||
|
|
<text class="cuIcon-close text-red"></text>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class=" bg-white">
|
|||
|
|
<view style="font-size: 35rpx;color: #6a6a6a;padding: 40rpx 60rpx 60rpx 60rpx;">
|
|||
|
|
今日免费抽奖次数已用完,观看视频后可额外获得一次抽奖机会哟
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
<button @tap="nowLookAd" style="margin-bottom: 50rpx;width: 55%;height: 90rpx;font-size: 38rpx;"
|
|||
|
|
class="cu-btn bg-green">观看视频</button>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="bottom-guard"></view>
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import {
|
|||
|
|
lottery,
|
|||
|
|
lotteryAdd,
|
|||
|
|
listLottery,
|
|||
|
|
listLotteryLog
|
|||
|
|
} from "@/api/app/index.js"
|
|||
|
|
import config from '@/config'
|
|||
|
|
import Choujian from '@/components/gb-choujiang/gb-choujiang';
|
|||
|
|
let videoAd = null;
|
|||
|
|
export default {
|
|||
|
|
components: {
|
|||
|
|
Choujian
|
|||
|
|
},
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
adUnitId: "",
|
|||
|
|
baseUrl: config.baseUrl,
|
|||
|
|
modalName: "",
|
|||
|
|
userid: null,
|
|||
|
|
// 背景图,可网络地址,可本地
|
|||
|
|
nImg: 'https://img.yidaima.cn/luck-1752b306ed4b480b9258b22983a859f6',
|
|||
|
|
// 中奖的索引,也就是AwardList数组的索引,sjNum不能等于4,4是立即抽奖
|
|||
|
|
sjNum: 0,
|
|||
|
|
// false前端,true前端
|
|||
|
|
isQd: true,
|
|||
|
|
// 可自己后端获取,也可以后端 percentage为概率 10代表10% 100代表100% 注意:必须要有一个概率为100%,
|
|||
|
|
AwardList: [],
|
|||
|
|
lotteryType: 0,
|
|||
|
|
lotteryMsg: "",
|
|||
|
|
index: -1,
|
|||
|
|
queryParams: {
|
|||
|
|
pageNum: 1,
|
|||
|
|
pageSize: 6,
|
|||
|
|
},
|
|||
|
|
lotteryLog: []
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
onLoad() {
|
|||
|
|
var that = this
|
|||
|
|
this.adUnitId = uni.getStorageSync("sysSet").adVideoAd
|
|||
|
|
//初始化激励广告
|
|||
|
|
this.CreateAd()
|
|||
|
|
this.userid = uni.getStorageSync("userInfo").userId
|
|||
|
|
listLottery().then(response => {
|
|||
|
|
// for (var i = 0; i < response.rows.length; i++) {
|
|||
|
|
// response.rows[i].image = that.baseUrl + response.rows[i].image
|
|||
|
|
// }
|
|||
|
|
that.AwardList = response.rows
|
|||
|
|
})
|
|||
|
|
listLotteryLog(this.queryParams).then(response => {
|
|||
|
|
that.lotteryLog = response.rows
|
|||
|
|
})
|
|||
|
|
this.getData()
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
// 中奖后的逻辑
|
|||
|
|
updateMoney(money) {
|
|||
|
|
var that = this
|
|||
|
|
lotteryAdd({
|
|||
|
|
source: '抽奖',
|
|||
|
|
userId: this.userid,
|
|||
|
|
isAdd: 0,
|
|||
|
|
integralNumber: that.AwardList[money].reward,
|
|||
|
|
fId: that.AwardList[money].id
|
|||
|
|
}).then(response => {
|
|||
|
|
that.lotteryMsg = "恭喜获得:" + that.AwardList[money].name
|
|||
|
|
setTimeout(() => {
|
|||
|
|
that.modalName = "Modal"
|
|||
|
|
}, 500);
|
|||
|
|
|
|||
|
|
// 中奖后获取最新状态
|
|||
|
|
that.getData()
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
lookAd(index) {
|
|||
|
|
// this.$refs.choujian.nowBegin(index);
|
|||
|
|
this.index = index
|
|||
|
|
this.modalName = 'nowLookAd'
|
|||
|
|
},
|
|||
|
|
nowLookAd() {
|
|||
|
|
this.modalName = ''
|
|||
|
|
if (videoAd) {
|
|||
|
|
videoAd.show().catch(() => {
|
|||
|
|
// 失败重试
|
|||
|
|
videoAd.load()
|
|||
|
|
.then(() => videoAd.show())
|
|||
|
|
.catch(err => {
|
|||
|
|
console.error('激励视频 广告显示失败', err)
|
|||
|
|
})
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
noChance() {
|
|||
|
|
this.lotteryMsg = "今日抽奖次数已用完,请明日再来 !"
|
|||
|
|
this.modalName = "Modal"
|
|||
|
|
},
|
|||
|
|
hideModal() {
|
|||
|
|
this.modalName = null
|
|||
|
|
},
|
|||
|
|
// 获取本次中奖的
|
|||
|
|
getData() {
|
|||
|
|
var that = this
|
|||
|
|
// 概率指定,如果是前端控制,如果后端控制下面步骤判断步骤可以省略 直接后端获取sjNum值即可
|
|||
|
|
if (this.isQd) {
|
|||
|
|
// ------------------------------这里写获取后端中奖索引
|
|||
|
|
// 后端赋值控制概率
|
|||
|
|
lottery({}).then(response => {
|
|||
|
|
that.lotteryType = response.lotteryType
|
|||
|
|
that.sjNum = response.sjNum
|
|||
|
|
console.log("后端随机数: ", response.sj);
|
|||
|
|
console.log("后端中奖索引: ", response.sjNum);
|
|||
|
|
|
|||
|
|
})
|
|||
|
|
} else {
|
|||
|
|
// 概率控制 概率100%
|
|||
|
|
console.log(Math.random())
|
|||
|
|
let sj = Math.round(Math.random() * 99 + 1)
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
back() {
|
|||
|
|
uni.navigateBack()
|
|||
|
|
},
|
|||
|
|
CreateAd() {
|
|||
|
|
var that = this;
|
|||
|
|
if (this.adUnitId != '') {
|
|||
|
|
if (wx.createRewardedVideoAd) {
|
|||
|
|
videoAd = wx.createRewardedVideoAd({
|
|||
|
|
adUnitId: this.adUnitId
|
|||
|
|
})
|
|||
|
|
videoAd.onLoad(() => {})
|
|||
|
|
videoAd.onError((err) => {
|
|||
|
|
that.$refs.uToast.show({
|
|||
|
|
type: 'error',
|
|||
|
|
title: '',
|
|||
|
|
message: "请使用移动端设备访问",
|
|||
|
|
icon: false
|
|||
|
|
})
|
|||
|
|
})
|
|||
|
|
videoAd.onClose((res) => {
|
|||
|
|
if (res && res.isEnded) {
|
|||
|
|
// that.$refs.uToast.show({
|
|||
|
|
// type: 'success',
|
|||
|
|
// title: '',
|
|||
|
|
// message: "╮(๑•́ ₃•̀๑)╭ 谢谢您的支持 ",
|
|||
|
|
// icon: false
|
|||
|
|
// })
|
|||
|
|
that.$refs.choujian.nowBegin(that.index);
|
|||
|
|
} else {}
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped lang="scss">
|
|||
|
|
.tip-box {
|
|||
|
|
position: relative;
|
|||
|
|
background: linear-gradient(to right, #FE1C62, #FC8524);
|
|||
|
|
height: 55rpx;
|
|||
|
|
width: 70%;
|
|||
|
|
left: 15%;
|
|||
|
|
top: 235rpx;
|
|||
|
|
text-align: center;
|
|||
|
|
line-height: 55rpx;
|
|||
|
|
color: #fff;
|
|||
|
|
font-weight: 600;
|
|||
|
|
border-radius: 15rpx;
|
|||
|
|
letter-spacing: 10rpx;
|
|||
|
|
box-shadow:
|
|||
|
|
0 -2px 2px rgba(255, 255, 255, 0.4),
|
|||
|
|
/* 上阴影 */
|
|||
|
|
0 2px 2px rgba(255, 255, 255, 0.4),
|
|||
|
|
/* 下阴影 */
|
|||
|
|
2px 0 2px rgba(255, 255, 255, 0.4),
|
|||
|
|
/* 左阴影 */
|
|||
|
|
-2px 0 2px rgba(255, 255, 255, 0.4);
|
|||
|
|
/* 右阴影 */
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.log-box {
|
|||
|
|
position: relative;
|
|||
|
|
height: 65rpx;
|
|||
|
|
width: 56%;
|
|||
|
|
left: 22%;
|
|||
|
|
top: 1150rpx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* 通知 */
|
|||
|
|
.inform {
|
|||
|
|
|
|||
|
|
.inform-info {
|
|||
|
|
display: flex;
|
|||
|
|
padding: 0 20rpx;
|
|||
|
|
height: 65rpx;
|
|||
|
|
background-color: rgba(0, 0, 0, 0.1);
|
|||
|
|
border-radius: 50rpx;
|
|||
|
|
|
|||
|
|
.picture {
|
|||
|
|
width: 20%;
|
|||
|
|
height: 100%;
|
|||
|
|
|
|||
|
|
image {
|
|||
|
|
width: 93rpx;
|
|||
|
|
height: 84rpx;
|
|||
|
|
margin-top: -20rpx;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.info {
|
|||
|
|
width: 100%;
|
|||
|
|
height: 100%;
|
|||
|
|
|
|||
|
|
.swiper {
|
|||
|
|
width: 100%;
|
|||
|
|
height: 100%;
|
|||
|
|
|
|||
|
|
.swiper-item {
|
|||
|
|
line-height: 65rpx;
|
|||
|
|
text-align: center;
|
|||
|
|
width: 100%;
|
|||
|
|
height: 100%;
|
|||
|
|
|
|||
|
|
text {
|
|||
|
|
font-size: 24rpx;
|
|||
|
|
color: #ffffff;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
.custom-navbar {
|
|||
|
|
/* 自定义导航栏样式 */
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
padding: 60px 10px 10px 10px;
|
|||
|
|
background-color: #F118E3;
|
|||
|
|
color: #FFFFFF;
|
|||
|
|
}
|
|||
|
|
.title {
|
|||
|
|
flex: 1;
|
|||
|
|
text-align: center;
|
|||
|
|
}
|
|||
|
|
.back-button {
|
|||
|
|
padding: 10px;
|
|||
|
|
}
|
|||
|
|
page {
|
|||
|
|
background-color: #1015F2;
|
|||
|
|
--safe-area-inset-bottom: env(safe-area-inset-bottom); /* 设置底部安全区域 */
|
|||
|
|
}
|
|||
|
|
page {
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.bottom-guard {
|
|||
|
|
height: calc(var(--safe-area-inset-bottom)); /* 假设你需要的底部保护区域高度是100px */
|
|||
|
|
background-color: #1015F2; /* 设置你想要的颜色 */
|
|||
|
|
position: fixed;
|
|||
|
|
left: 0;
|
|||
|
|
right: 0;
|
|||
|
|
bottom: 0;
|
|||
|
|
}
|
|||
|
|
</style>
|