You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
241 lines
8.0 KiB
241 lines
8.0 KiB
<template> |
|
<HeaderNav title="惊喜抽抽抽" :is-back="true"></HeaderNav> |
|
<view class="body-background" :style="{ |
|
backgroundImage:'url('+staticImage.wallpaperBgImage+')' |
|
}"></view> |
|
<view class="app-wallpaper"> |
|
<view class="draw-container" :style="{backgroundImage:'url('+staticImage.drawBackground+')'}"> |
|
<view class="draw-content row"> |
|
<template v-for="(item,index) in drawList"> |
|
<view class="draw-item col-4" :class="{active:(checked === index)}" > |
|
<view class="draw-item-container" > |
|
<view class="draw-item-content"> |
|
<image class="img" mode="aspectFill" :src="item.logo"/> |
|
<view class="draw-title ">{{item.title}}</view> |
|
</view> |
|
</view> |
|
</view> |
|
<view class="draw-item col-4" v-if="index === 3" > |
|
<view class="draw-item-container start-draw" :class="{disabled:!drawButton}"> |
|
<view class="draw-item-content " @click="drawAni()"> |
|
<image class="img" mode="aspectFill" :src="item.logo"/> |
|
<view class="draw-title">开始抽奖</view> |
|
</view> |
|
</view> |
|
</view> |
|
</template> |
|
</view> |
|
</view> |
|
<view class="draw-info-container" :style="{backgroundImage:'url('+staticImage.drawInfoBackground+')'}"> |
|
<view class="draw-title-group"> |
|
<view class="draw-gun"> |
|
<image class="img" :src="staticImage.drawInfoGun" mode="heightFix"/> |
|
</view> |
|
<view class="draw-image"> |
|
<image class="img" :src="staticImage.drawInfoTitle" mode="widthFix"/> |
|
</view> |
|
<view class="draw-title"> |
|
1、每人每次限参加一次抽奖活动<br> |
|
2、实物请到门店进行兑换<br> |
|
3、优惠券自动发送到中奖账户<br> |
|
4、优惠券不代表实际金额进行店内消费 |
|
</view> |
|
</view> |
|
</view> |
|
</view> |
|
|
|
<view class="draw-shadow" v-show="drawShadow"> |
|
<view class="draw-shadow-container"> |
|
<view class="draw-shadow-image"> |
|
<image class="img" :src="staticImage.drawInfoWZImg" mode="widthFix" v-show="!drawStatus"/> |
|
<image class="img" :src="staticImage.drawInfoZJImg" mode="widthFix" v-show="drawStatus"/> |
|
</view> |
|
<view class="draw-shadow-title"> |
|
<image class="img" :src="staticImage.drawInfoWZTitle" mode="widthFix" v-show="!drawStatus"/> |
|
<image class="img" :src="staticImage.drawInfoZJTitle" mode="widthFix" v-show="drawStatus"/> |
|
</view> |
|
<view class="draw-shadow-content"> |
|
<!-- 恭喜小主获得XX奖励,客服将会1个 工作日内联系您--> |
|
恭喜小主获得一匹大马,客服将会1个 工作日内联系您 |
|
</view> |
|
<view class="draw-shadow-button row" @click="closeDrawShadow"> |
|
<MzButton |
|
title="好的" |
|
button-color="#4DC3B8" |
|
font-color="#ffffff" |
|
button-width="250rpx" |
|
> |
|
</MzButton> |
|
</view> |
|
</view> |
|
</view> |
|
<!-- <RightNav></RightNav> --> |
|
</template> |
|
|
|
<script> |
|
import { |
|
imghost |
|
} from '@/config/host.js' |
|
import HeaderNav from '@/components/HeaderNav/Index.vue'; |
|
import FooterNav from '@/components/FooterNav/Index.vue'; |
|
import RightNav from '@/components/RightNav/Index.vue'; |
|
import MzButton from '../../components/MzButton/Index.vue'; |
|
import {drawList} from "@/api/draw"; |
|
import log from "@/utils/log"; |
|
|
|
export default { |
|
components: { |
|
HeaderNav, |
|
FooterNav, |
|
RightNav, |
|
MzButton |
|
}, |
|
data() { |
|
return { |
|
drawButton:true, |
|
drawShadow:false, |
|
drawStatus:false, |
|
checked:0, |
|
drawOrder:[], |
|
drawId:7, |
|
drawOrderDefault:[0,1,2,5,8,7,6,3], |
|
title: 'Hello', |
|
loading: true, |
|
staticImage: { |
|
screenActiveImg: imghost + '/static/image/screen-active.png', |
|
wallpaperBgImage: imghost + '/static/image/card-background.png', |
|
dogImage: imghost + '/static/image/index-user-title-dog.png', |
|
drawBackground: imghost + '/static/image/draw-background.png', |
|
drawInfoBackground: imghost + '/static/image/draw-info-background.png', |
|
drawInfoTitle: imghost + '/static/image/draw-info-title.png', |
|
drawInfoGun: imghost + '/static/image/draw-info-gun.png', |
|
drawInfoZJImg: imghost + '/static/image/draw-Zj-img.png', |
|
drawInfoWZImg: imghost + '/static/image/draw-Wz-img.png', |
|
drawInfoZJTitle: imghost + '/static/image/draw-Zj-title.png', |
|
drawInfoWZTitle: imghost + '/static/image/draw-Wz-title.png', |
|
}, |
|
indexBanner: [{ |
|
image: imghost + '/static/image/banner.png', |
|
url: '', |
|
}], |
|
user: { |
|
avatar: imghost + '/static/image/banner.png', |
|
nickname: '清晨的风', |
|
coupons: 221, |
|
id: 88685 |
|
}, |
|
isTop: false, |
|
pagePadding: 100, |
|
petImage: imghost + '/static/image/pet_avatar1.jpeg', |
|
defaultImage: imghost + '/static/image/banner.png', |
|
drawList: [], |
|
loopIndex:0, |
|
} |
|
}, |
|
onLoad() { |
|
this.getDrawList(); |
|
}, |
|
methods: { |
|
navTo(url) { |
|
uni.navigateTo({ |
|
url: url |
|
}) |
|
}, |
|
drawAni(){ |
|
let draw = Math.round((Math.random() * 7)); // 奖品 |
|
let loopIndex = 0; |
|
let checkIndex = [0, 1, 2, 4, 7, 6, 5, 3]; |
|
let speed = 3; // 初始步数,每轮翻倍 |
|
let length = 500; // 最大步数 |
|
let current = 0; // 当前步数 |
|
let t = setInterval(() => { |
|
if ((current++ % speed) === 0){ |
|
this.checked = checkIndex[loopIndex++]; |
|
if (loopIndex >= 8) { |
|
loopIndex = 0; |
|
speed *= 2; |
|
} |
|
} |
|
if (current > length && draw === loopIndex){ |
|
clearInterval(t) |
|
} |
|
}, 10) |
|
|
|
// // let t1 = this.loop(50); |
|
// // setTimeout(() => { |
|
// // clearInterval(t1); |
|
// // let t2 = this.loop(100); |
|
// // setTimeout(() => { |
|
// // clearInterval(t2) |
|
// // let t3 = this.loop(200) |
|
// // setTimeout(() => clearInterval(t3), 2000) |
|
// // }, 2000); |
|
// // },3000); |
|
// |
|
// return; |
|
// |
|
// let that = this; |
|
// if(that.drawButton === false){ |
|
// return; |
|
// } |
|
// that.drawButton = false; |
|
// that.drawOrder = []; |
|
// for(let i=2;i<=3;i++){ |
|
// for(let index in that.drawOrderDefault){ |
|
// if(i===3 && that.drawId === that.drawOrderDefault[index]){ |
|
// break; |
|
// }else{ |
|
// that.drawOrder.push(that.drawOrderDefault[index]) |
|
// } |
|
// } |
|
// } |
|
// console.log(that.drawOrder) |
|
// let index = 0; |
|
// let ani = setInterval(()=>{ |
|
// that.checked = that.drawOrder[index] |
|
// index++; |
|
// if(index>=that.drawOrder.length){ |
|
// clearInterval(ani); |
|
// that.drawButton = true; |
|
// that.drawShadow = true; |
|
// } |
|
// },200) |
|
}, |
|
closeDrawShadow(){ |
|
this.drawShadow = false; |
|
}, |
|
getDrawList(){ |
|
drawList().then(data => { |
|
log(data) |
|
this.drawList = data.data.goodslists; |
|
|
|
if (this.drawList.length < 8){ |
|
this.drawList.push(...Array(8 - this.drawList.length).fill({ |
|
logo:this.defaultImage, |
|
title:'谢谢惠顾' |
|
})); |
|
} |
|
|
|
}) |
|
} |
|
}, |
|
onPageScroll(res) { |
|
if (res.scrollTop <= 20) { |
|
uni.$emit('isTop', true); |
|
} else { |
|
uni.$emit('isTop', false); |
|
} |
|
}, |
|
created() { |
|
// this.pagePadding = (api.navHeight().navPaddingTop + |
|
// api.navHeight().navHeight + (api.navHeight().headerPadding * 2)) |
|
}, |
|
mounted() { |
|
|
|
} |
|
} |
|
</script> |
|
|
|
<style lang="scss"> |
|
@import './components/index.scss'; |
|
</style> |