<template>
|
|
<u-popup :show="show"
|
|
mode="center"
|
|
bgColor="transparent"
|
|
@close="$emit('close');$play()">
|
|
<view class="box">
|
|
<view class="turntable"
|
|
:style="{transform: `rotate(${360 * rotate + link}deg)`}">
|
|
<view class="item"
|
|
:style="{transform: `translate(-50%) rotate(${(360 / 8) * index}deg)`}"
|
|
v-for="(item, index) in list">
|
|
<view>
|
|
{{ $t(`page.turntable.${item.name}`)}}
|
|
</view>
|
|
<view style="margin-top: 20rpx;">
|
|
USDT {{ item.money }}
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="z"
|
|
@click="start">
|
|
<view class="text">
|
|
<view style="font-size: 28rpx;font-weight: 900;">
|
|
{{ $t(`page.turntable.go`)}}
|
|
</view>
|
|
<view style="font-size: 20rpx;line-height: 30rpx;">
|
|
<!-- 剩余{{ info.bigNum }}次 -->
|
|
{{ $t(`page.turntable.num`, [info.bigNum])}}
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
</u-popup>
|
|
</template>
|
|
|
|
<script>
|
|
|
|
export default {
|
|
name:"turntable",
|
|
props : ['show', 'info'],
|
|
data() {
|
|
return {
|
|
rotate : 0,
|
|
list : [],
|
|
link : 0,
|
|
inter : null,
|
|
};
|
|
},
|
|
created() {
|
|
this.getTurntable()
|
|
},
|
|
methods : {
|
|
start(){
|
|
if(this.inter || this.info.bigNum <= 0){
|
|
return
|
|
}
|
|
this.$play()
|
|
this.request('clickTurntable').then(res => {
|
|
if(res.code == 200){
|
|
clearInterval(this.inter)
|
|
|
|
this.list.forEach((n,i) => {
|
|
if(n.id == res.result.id){
|
|
this.link = -(360 / 8 * i)
|
|
}
|
|
})
|
|
setTimeout(() => this.inter = null, 1500)
|
|
}
|
|
this.$emit('start')
|
|
}).catch(err => {
|
|
clearInterval(this.inter)
|
|
setTimeout(() => this.inter = null, 1500)
|
|
})
|
|
this.link = 0
|
|
this.rotate += 6
|
|
this.inter = setInterval(() => {
|
|
this.rotate += 1
|
|
}, 200)
|
|
},
|
|
|
|
getTurntable(){
|
|
this.request('getTurntableList').then(res => {
|
|
if(res.code == 200){
|
|
this.list = res.result
|
|
}
|
|
})
|
|
},
|
|
|
|
async asyncLoading() { //加载效果
|
|
return new Promise((resolve, reject) => {
|
|
uni.showLoading({
|
|
title: this.$t('page.turntable.loading')
|
|
});
|
|
setTimeout(() => {
|
|
uni.hideLoading();
|
|
resolve()
|
|
}, 500)
|
|
})
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.box{
|
|
position: relative;
|
|
.turntable{
|
|
position: relative;
|
|
width: 700rpx;
|
|
height: 700rpx;
|
|
background-image: url(/static/drone/5db810a1868a7230.png);
|
|
background-size: 100% 100%;
|
|
transition: transform 1.5s;
|
|
.item{
|
|
position: absolute;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
top: 50rpx;
|
|
transform-origin: 50% 300rpx;
|
|
text-align: center;
|
|
font-size: 22rpx;
|
|
width: 180rpx;
|
|
}
|
|
}
|
|
.z{
|
|
position: absolute;
|
|
top: 200rpx;
|
|
left: 260rpx;
|
|
width: 180rpx;
|
|
height: 180rpx;
|
|
// background-image: url(/static/drone/68a7230.png);
|
|
background-image: url(/static/drone/230.png);
|
|
background-size: 100% 100%;
|
|
.text{
|
|
position: absolute;
|
|
top: 90rpx;
|
|
margin-left: 10rpx;
|
|
text-align: center;
|
|
line-height: 50rpx;
|
|
width: 160rpx;
|
|
}
|
|
}
|
|
}
|
|
</style>
|