|
|
|
@ -0,0 +1,421 @@
|
|
|
|
|
<template>
|
|
|
|
|
<s-layout class="set-wrap" title="活动" :bgStyle="{ color: '#FFF' }">
|
|
|
|
|
<view class="_bgc">
|
|
|
|
|
<view class="_bg1">
|
|
|
|
|
<!-- <text class="_jf">5积分抽奖一次</text>
|
|
|
|
|
<view class="_cont">
|
|
|
|
|
<view class="_left">
|
|
|
|
|
<image src="https://obs-sdwh.cucloud.cn/cdz/jinbi.png" class="_jinbi"></image>
|
|
|
|
|
<text>开心贷</text>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="_mid">抽到99元优惠券</view>
|
|
|
|
|
<view class="_right">4秒前</view>
|
|
|
|
|
</view> -->
|
|
|
|
|
</view>
|
|
|
|
|
<view class="container">
|
|
|
|
|
<!-- <view class="container_circle" v-for="(v, i) in circleList" :key="i"
|
|
|
|
|
:style="{ 'top': v.topCircle + 'rpx', 'left': v.leftCircle + 'rpx', 'background-color': (i % 2 == 0) ? oneCircleColor : twoCircleColor }">
|
|
|
|
|
</view> -->
|
|
|
|
|
<view class="container_content">
|
|
|
|
|
<view class="content_out" v-for="(v, i) in prizeList" :key="i" :style="{
|
|
|
|
|
top: v.topAward + 'rpx',
|
|
|
|
|
left: v.leftAward + 'rpx',
|
|
|
|
|
background: i == indexSelect ? prizeCheckColor : '',
|
|
|
|
|
|
|
|
|
|
animation: 'animatebox 4s linear infinite'
|
|
|
|
|
}">
|
|
|
|
|
<image class="award_image" :src="v.Img"></image>
|
|
|
|
|
<!-- {{ v.name }} -->
|
|
|
|
|
</view>
|
|
|
|
|
<view class="content_btn" @tap="handleStart"
|
|
|
|
|
:style="{ 'background-color': isRunning ? '#55ffff' : '' }">
|
|
|
|
|
<view class="_diji">点击</view>
|
|
|
|
|
<view>抽奖</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<!-- <view class="container_num">剩余抽奖次数:{{ luckDrawNum }}</view> -->
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<view class="_btnWrap">
|
|
|
|
|
<view class="_btn" @tap="sheep.$router.go('/pages/user/PrizesWon')">已获奖品</view>
|
|
|
|
|
<view class="_btn" @tap="sheep.$router.go('/pages/user/ActivityRules')">活动规则</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</s-layout>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
import { ref } from 'vue'
|
|
|
|
|
import { onLoad, onReachBottom, onShow, onUnload, onHide } from '@dcloudio/uni-app';
|
|
|
|
|
import MineApi from '@/sheep/api/prize/index'
|
|
|
|
|
import sheep from '@/sheep';
|
|
|
|
|
const prizeList = ref([]) // 奖品数组
|
|
|
|
|
const prizeCheckColor = ref('linear-gradient(72.5deg, #aa0000, #ff0000, #ff00ff, #550000, #ffaaff, #aa0000, #ff0000)') // 奖品的选中颜色
|
|
|
|
|
const indexSelect = ref(0) //被选中的奖品index
|
|
|
|
|
const isRunning = ref(false) //是否正在抽奖
|
|
|
|
|
const imgList = ref([
|
|
|
|
|
'https://cdn.cnbj1.fds.api.mi-img.com/nr-pub/202209261921_a1b840c267bd26bcf4dc654d52f259e5.png?w=800&h=800',
|
|
|
|
|
'https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/0bcd64f412dfb5e15695fa96d21ecb23.png?w=800&h=800',
|
|
|
|
|
'https://cdn.cnbj1.fds.api.mi-img.com/nr-pub/202208111030_e3554c41e0484da99b16bb9e02142e68.png?w=800&h=800',
|
|
|
|
|
'https://cdn.cnbj0.fds.api.mi-img.com/b2c-shopapi-pms/pms_1653393310.29013051.png',
|
|
|
|
|
'https://cdn.cnbj1.fds.api.mi-img.com/nr-pub/202209261921_a1b840c267bd26bcf4dc654d52f259e5.png?w=800&h=800',
|
|
|
|
|
'https://cdn.cnbj0.fds.api.mi-img.com/b2c-shopapi-pms/9E253411E26FD16C7215D7E74321FA45.png',
|
|
|
|
|
'https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/cc0be95d45d0063b0aa8bb541be22c77.png?w=800&h=800',
|
|
|
|
|
'https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/0c4b5e30d14ca8b51dc6fa6917295ff5.png?w=800&h=800'
|
|
|
|
|
]) //奖品图片数组
|
|
|
|
|
const prizelist = ref([]) //奖品列表
|
|
|
|
|
let showFloag = ref(true)
|
|
|
|
|
let HDid = ref()
|
|
|
|
|
onLoad(async () => {
|
|
|
|
|
const r = await MineApi.ActivityRules()
|
|
|
|
|
HDid.value = r.data?.id
|
|
|
|
|
const res = await MineApi.prizeImg(HDid.value)
|
|
|
|
|
prizelist.value = res.data
|
|
|
|
|
imgList.value = []
|
|
|
|
|
res.data.forEach((value, index) => {
|
|
|
|
|
imgList.value.push(value.imgUrl)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
for (let i = 0; i < 24; i++) {
|
|
|
|
|
let prizeList_on = []
|
|
|
|
|
//间距,怎么顺眼怎么设置吧.
|
|
|
|
|
let topAward = 10
|
|
|
|
|
let leftAward = 10
|
|
|
|
|
|
|
|
|
|
for (let j = 0; j < 8; j++) {
|
|
|
|
|
if (j == 0) {
|
|
|
|
|
topAward = 5
|
|
|
|
|
leftAward = 10
|
|
|
|
|
} else if (j < 3) {
|
|
|
|
|
topAward = topAward
|
|
|
|
|
//166.6666是宽.15是间距.下同
|
|
|
|
|
leftAward = leftAward + 176.6666 + 15
|
|
|
|
|
} else if (j < 5) {
|
|
|
|
|
leftAward = leftAward
|
|
|
|
|
//150是高,15是间距,下同
|
|
|
|
|
topAward = topAward + 160 + 15
|
|
|
|
|
} else if (j < 7) {
|
|
|
|
|
leftAward = leftAward - 176.6666 - 15
|
|
|
|
|
topAward = topAward
|
|
|
|
|
} else if (j < 8) {
|
|
|
|
|
leftAward = leftAward
|
|
|
|
|
topAward = topAward - 160 - 15
|
|
|
|
|
}
|
|
|
|
|
// let imgList = this.imgList[j];
|
|
|
|
|
let Img = imgList.value[j]
|
|
|
|
|
prizeList_on.push({ topAward, leftAward, Img, id: res.data[j].id, name: res.data[j].name })
|
|
|
|
|
}
|
|
|
|
|
prizeList.value = prizeList_on
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// 点击开始
|
|
|
|
|
const handleStart = async () => {
|
|
|
|
|
console.log('抽奖开始,');
|
|
|
|
|
|
|
|
|
|
if (isRunning.value) return
|
|
|
|
|
const res = await MineApi.lottery(HDid.value)
|
|
|
|
|
isRunning.value = true
|
|
|
|
|
let floag = ref()
|
|
|
|
|
for (let i = 0; i < prizelist.value.length; i++) {
|
|
|
|
|
if (prizelist.value[i]?.id == res.data?.id) {
|
|
|
|
|
floag.value = res.data.id
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
indexSelect.value = 0
|
|
|
|
|
let indexSelect_med = 0
|
|
|
|
|
let i = 0
|
|
|
|
|
let timer = setInterval(() => {
|
|
|
|
|
console.log('floag', floag.value);
|
|
|
|
|
//去除循环
|
|
|
|
|
if (!showFloag.value) {
|
|
|
|
|
clearInterval(timer)
|
|
|
|
|
isRunning.value = false
|
|
|
|
|
}
|
|
|
|
|
indexSelect_med++
|
|
|
|
|
// 光标跳动
|
|
|
|
|
indexSelect_med = indexSelect_med % 8
|
|
|
|
|
indexSelect.value = indexSelect_med
|
|
|
|
|
i += 30
|
|
|
|
|
let randomNum = 1000 + Math.ceil(Math.random() * 1000) //控制奖品
|
|
|
|
|
if (i > randomNum && prizeList.value[indexSelect.value].id === floag.value) {
|
|
|
|
|
//去除循环
|
|
|
|
|
clearInterval(timer)
|
|
|
|
|
//获奖提示
|
|
|
|
|
// if (showFloag.value) {
|
|
|
|
|
// if (!res.data?.id) {
|
|
|
|
|
// uni.showModal({
|
|
|
|
|
// title: '很遗憾',
|
|
|
|
|
// content: '祝君好运',
|
|
|
|
|
// showCancel: false,
|
|
|
|
|
// success: (res) => {
|
|
|
|
|
// if (res.confirm) {
|
|
|
|
|
// isRunning.value = false
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// })
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
uni.showModal({
|
|
|
|
|
// title: '恭喜您',
|
|
|
|
|
// content: '获得了第' + (indexSelect.value) + '个奖品',
|
|
|
|
|
content: '抽中' + (res.data.name) + '',
|
|
|
|
|
showCancel: false,
|
|
|
|
|
success: (res) => {
|
|
|
|
|
if (res.confirm) {
|
|
|
|
|
isRunning.value = false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
// }
|
|
|
|
|
isRunning.value = false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}, 200 + i)
|
|
|
|
|
}
|
|
|
|
|
onHide(() => {
|
|
|
|
|
showFloag.value = false
|
|
|
|
|
})
|
|
|
|
|
onUnload(() => {
|
|
|
|
|
showFloag.value = false
|
|
|
|
|
})
|
|
|
|
|
onShow(() => {
|
|
|
|
|
showFloag.value = true
|
|
|
|
|
})
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
._bg1 {
|
|
|
|
|
background-image: url('https://obs-sdwh.cucloud.cn/cdz/beijing1.png');
|
|
|
|
|
width: 80%;
|
|
|
|
|
height: 150rpx;
|
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
margin: 370rpx auto 0;
|
|
|
|
|
font-size: 22rpx;
|
|
|
|
|
position: relative;
|
|
|
|
|
|
|
|
|
|
._jf {
|
|
|
|
|
position: absolute;
|
|
|
|
|
left: 240rpx;
|
|
|
|
|
top: 40rpx;
|
|
|
|
|
color: white;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
._cont {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-around;
|
|
|
|
|
align-items: center;
|
|
|
|
|
color: white;
|
|
|
|
|
letter-spacing: 2rpx;
|
|
|
|
|
height: 100%;
|
|
|
|
|
margin-top: 35rpx;
|
|
|
|
|
|
|
|
|
|
._left {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
|
|
._jinbi {
|
|
|
|
|
width: 40rpx;
|
|
|
|
|
height: 40rpx;
|
|
|
|
|
margin-right: 10rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
._bgc {
|
|
|
|
|
background-image: url('https://obs-sdwh.cucloud.cn/cdz/cjBg.png');
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100vh;
|
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.container {
|
|
|
|
|
position: relative;
|
|
|
|
|
height: 600rpx;
|
|
|
|
|
width: 650rpx;
|
|
|
|
|
margin: 0 auto;
|
|
|
|
|
border-radius: 40rpx;
|
|
|
|
|
// background: linear-gradient(72.5deg, #e9f78c, #ffffb9, #cc55e5, #ef9bcb, #e5b8d8, #ffb140, #f7ed54);
|
|
|
|
|
// background-color: #FFB62F;
|
|
|
|
|
background-image: url('https://obs-sdwh.cucloud.cn/cdz/beijing2.png');
|
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
// background-size: 400%;
|
|
|
|
|
animation: animatebox 4s linear infinite;
|
|
|
|
|
|
|
|
|
|
@keyframes animatebox {
|
|
|
|
|
0% {
|
|
|
|
|
background-position: 0%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
50% {
|
|
|
|
|
background-position: 100%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
100% {
|
|
|
|
|
background-position: 0%;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.container_circle {
|
|
|
|
|
position: absolute;
|
|
|
|
|
display: block;
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
height: 20rpx;
|
|
|
|
|
width: 20rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.container_content {
|
|
|
|
|
position: absolute;
|
|
|
|
|
left: 0;
|
|
|
|
|
right: 0;
|
|
|
|
|
top: 0;
|
|
|
|
|
bottom: 0;
|
|
|
|
|
width: 580rpx;
|
|
|
|
|
height: 530rpx;
|
|
|
|
|
background-color: #ca2c01;
|
|
|
|
|
|
|
|
|
|
border-radius: 40rpx;
|
|
|
|
|
margin: auto;
|
|
|
|
|
|
|
|
|
|
// background: linear-gradient(72.5deg, #ef499c, #cc55e5, #ffb140, #f7ed54, #ffb140, #cc55e5, #ef499c);
|
|
|
|
|
background-size: 400%;
|
|
|
|
|
animation: animate1 4s linear infinite;
|
|
|
|
|
|
|
|
|
|
@keyframes animate1 {
|
|
|
|
|
0% {
|
|
|
|
|
background-position: 0%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
50% {
|
|
|
|
|
background-position: 100%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
100% {
|
|
|
|
|
background-position: 0%;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.content_out {
|
|
|
|
|
position: absolute;
|
|
|
|
|
height: 160rpx;
|
|
|
|
|
width: 176.6666rpx;
|
|
|
|
|
// background-color: #f5f0fc;
|
|
|
|
|
background-image: url('https://obs-sdwh.cucloud.cn/cdz/g1.png');
|
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
border-radius: 15rpx;
|
|
|
|
|
box-shadow: 0 5px 0 #ff8327;
|
|
|
|
|
|
|
|
|
|
.award_image {
|
|
|
|
|
position: absolute;
|
|
|
|
|
margin: auto;
|
|
|
|
|
top: 0;
|
|
|
|
|
left: 0;
|
|
|
|
|
bottom: 0;
|
|
|
|
|
right: 0;
|
|
|
|
|
height: 140rpx;
|
|
|
|
|
width: 130rpx;
|
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
background-image: url('https://obs-sdwh.cucloud.cn/cdz/xxcy.png');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.content_btn {
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 50%;
|
|
|
|
|
left: 50%;
|
|
|
|
|
transform: translate(-50%, -50%);
|
|
|
|
|
border-radius: 15rpx;
|
|
|
|
|
height: 160rpx;
|
|
|
|
|
width: 176.6666rpx;
|
|
|
|
|
background-color: #ffe400;
|
|
|
|
|
box-shadow: 0 5rpx 0 #e7930a;
|
|
|
|
|
color: white;
|
|
|
|
|
text-align: center;
|
|
|
|
|
font-size: 44rpx;
|
|
|
|
|
font-weight: bolder;
|
|
|
|
|
background-color: #ff8859;
|
|
|
|
|
// line-height: 150rpx;
|
|
|
|
|
// background: linear-gradient(72.5deg, #f7a0ec, #ffb140, #e58da0, #ef7ecb, #ab9ae5, #ffec8a, #f6f7a6);
|
|
|
|
|
// background-size: 400%;
|
|
|
|
|
background-image: url('https://obs-sdwh.cucloud.cn/cdz/g5.png');
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
|
animation: animate 4s linear infinite;
|
|
|
|
|
|
|
|
|
|
._diji {
|
|
|
|
|
margin-top: 14rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@keyframes animate {
|
|
|
|
|
0% {
|
|
|
|
|
background-position: 0%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
50% {
|
|
|
|
|
background-position: 100%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
100% {
|
|
|
|
|
background-position: 0%;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.container_num {
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: -130rpx;
|
|
|
|
|
left: 50%;
|
|
|
|
|
transform: translateX(-50%);
|
|
|
|
|
color: white;
|
|
|
|
|
// background-image: -webkit-linear-gradient(left, #083a96, #e63609 25%, #083a96 50%, #e63609 75%, #083a96);
|
|
|
|
|
// -webkit-text-fill-color: transparent;
|
|
|
|
|
background-clip: text;
|
|
|
|
|
background-size: 200% 100%;
|
|
|
|
|
animation: masked-animation 4s infinite linear;
|
|
|
|
|
|
|
|
|
|
@keyframes masked-animation {
|
|
|
|
|
0% {
|
|
|
|
|
background-position: 0 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
100% {
|
|
|
|
|
background-position: -100% 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
._btnWrap {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: space-around;
|
|
|
|
|
margin-top: 40rpx;
|
|
|
|
|
|
|
|
|
|
._btn {
|
|
|
|
|
background-image: url('https://obs-sdwh.cucloud.cn/cdz/anniu.png');
|
|
|
|
|
background-repeat: no-repeat;
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
width: 40%;
|
|
|
|
|
height: 100rpx;
|
|
|
|
|
text-align: center;
|
|
|
|
|
line-height: 90rpx;
|
|
|
|
|
color: white;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
font-size: 32rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|