|
|
- <template>
- <view class="prizeDraw bx">
-
- <!-- <u-loading-page :loading="loading" loadingText="" style="z-index: 999;" bgColor="#000"></u-loading-page> -->
- <!-- 初始页面 -->
- <!-- <pageInit></pageInit> -->
-
- <view class="title" style="margin-top: 10rpx;">
- {{ $t('page.prizeDraw.title_1') }}
- </view>
- <view class="profit">
- <view class="img-box">
- <image :src="vipInfo.icon" mode="aspectFit"></image>
- </view>
- {{ userInfo.profit }}% {{ $t('page.prizeDraw.profit') }}
- </view>
- <view class="title">
- {{ $t('page.prizeDraw.title_2') }}
- </view>
- <view class="prize_drone">
-
- <scroll-view :scroll-left="scrollLeft"
- scroll-x="true"
- lower-threshold="6"
- @scrolltolower="scrolltolower">
- <view @mouseenter="cleanTime" class="banner" style="height: 370rpx;">
- <view @click="gotoDetail(item.url)" v-for="(item, index) in banner" :key="index">
- <img :src="item.image.split(',')[0]" width="100%" />
- </view>
- </view>
- </scroll-view>
-
- <view class="banner3d">
- <view @click="gotoDetail(item.url)" v-for="(item, index) in
- banner3d" :class="{['banner3d_item_' + item.index] : true}"
- :key="item.id">
- <img :src="item.image" width="100%" />
- </view>
- </view>
- </view>
- <view class="title" style="font-size: 38rpx;margin-top: 60rpx;">
- ({{ userInfo.encourageNum }} / {{ userInfo.encourageSum }})
- </view>
- <view class="btn" @click="submit">
- {{ $t('page.prizeDraw.Start') }}
- </view>
- <view class="amount">
- <view style="font-size: 28rpx;font-weight: normal;" class="">
- {{ $t('page.prizeDraw.frozen_amount') }}
- </view>
- <view style="color: #333;">
- USDT <text style="margin-left: 10rpx;font-size: 40rpx;">
- {{ userInfo.freezeMoney }}
- </text>
- </view>
- </view>
-
- <view class="member-list">
- <view class="member-item">
- <view class="img-box">
- <image src="/static/prizeDraw/23.png" mode="aspectFit"></image>
- </view>
-
- <view style="font-size: 28rpx;font-weight: normal;" class="title">
- {{ $t('page.prizeDraw.today_profit') }}</view>
- <view class="menber-descript">USDT {{ userInfo.todayMoney }}</view>
-
- <view class="equity-list">
- <view class="equity-item">
- {{ $t('page.prizeDraw.title_3') }}
- </view>
- </view>
- </view>
- <view class="member-item">
- <view class="img-box">
- <image src="/static/prizeDraw/6.png" mode="aspectFit"></image>
- </view>
-
- <view style="font-size: 28rpx;font-weight: normal;" class="title">
- {{ $t('page.prizeDraw.account_balance') }}</view>
- <view class="menber-descript">USDT {{ userInfo.money }}</view>
-
- <view class="equity-list">
- <view class="equity-item">
- {{ $t('page.prizeDraw.title_4') }}
- </view>
- </view>
- </view>
- </view>
-
- <view class="notice">
- <view style="
- font-size: 36rpx;">
- {{ $t('page.prizeDraw.important_notice') }}
- </view>
- <view class="notice-list">
- <view style="font-size: 30rpx;" class="notice-item">
- {{ $t('page.prizeDraw.notice_item_1') }}
- </view>
- <view style="font-size: 30rpx;" class="notice-item">
- {{ $t('page.prizeDraw.notice_item_2') }}
- </view>
- </view>
- </view>
-
- <sTabbar select="2" />
-
- <u-popup :show="show" mode="bottom" @close="show = false;$play()">
- <view style="font-size: 35rpx;text-align: center;
- font-weight: 900;padding: 20rpx;">
- {{ $t(msg == '31' ? 'message.31' : 'page.prizeDraw.rating_submission') }}
- </view>
- <view style="display: flex;justify-content: center;">
- <img :src="product.image" width="150rpx" />
- </view>
- <view style="color: #fff;font-size: 35rpx;text-align: center;
- font-weight: 900;">
- {{ product.subTitle }}
- </view>
- <view style="display: flex;justify-content: space-around;
- margin-top: 30rpx;">
- <view>
- {{ $t('page.prizeDraw.Total_Amount') }}
- </view>
- <view>
- {{ $t('page.prizeDraw.profit') }}
- </view>
- </view>
- <view style="display: flex;justify-content: space-around;
- margin-top: 30rpx;font-weight: 900;">
- <view>
- USDT <text style="font-size: 40rpx;">{{ product.price }}</text>
- </view>
- <view>
- USDT <text style="font-size: 40rpx;">{{ product.giveMoney }}</text>
- </view>
- </view>
- <view style="display: flex;justify-content: space-between;
- border-top: 1px solid #555;padding: 30rpx;margin-top: 30rpx;">
- <view class="">
- {{ $t('page.prizeDraw.Creation_time') }}
- </view>
- <view class="">
- {{ product.createTime }}
- </view>
- </view>
- <view style="display: flex;justify-content: space-between;
- border-top: 1px solid #555;border-bottom: 1px solid #555;
- padding: 30rpx;align-items: center;">
- <view class="">
- {{ $t('page.prizeDraw.Rating_No') }}
- </view>
- <view class="">
- {{ product.id }}
- </view>
- </view>
- <view class="btn" @click="payOrder">
- {{ $t('page.prizeDraw.submit') }}
- </view>
- </u-popup>
-
-
- <review :show="reviewShow" @close="reviewClose" :oid="product.id" />
-
- <turntable :show="turntableShow" @start="getUserInfo" :info="userInfo" @close="turntableShow = false" />
-
- <luckyAnimation ref="an" @close="startSubmit"></luckyAnimation>
- </view>
- </template>
-
- <script>
- import sTabbar from '@/components/base/tabBar.vue'
- import review from '@/components/review/review.vue';
- import turntable from '@/components/turntable.vue';
- import { debounce } from '@/utils/base.js'
- import pageInit from '@/components/pageInit/pageInit.vue'
- import luckyAnimation from '../../components/luckyAnimation/luckyAnimation.vue';
-
- export default {
- components: {
- sTabbar,
- review,
- turntable,
- pageInit,
- luckyAnimation
- },
- data() {
- return {
- loading: false,
- turntableShow: false,
- scrollLeft: 0,
- banner: [],
- banner3d: [],
- invt: null,
- userInfo: {},
- product: {},
- show: false,
- reviewShow: false,
- vipInfo: {},
- msg : null,
- isSubmit : false,
- index3d : 0,
- }
- },
- onShow() {
- this.getList();
- this.getUserInfo()
- },
- onHide() {
- this.end()
- },
- methods: {
- getUserInfo() {
- this.request('userInfo').then(res => {
- if (res.code == 200) {
- this.userInfo = res.result.userInfo
- this.vipInfo = res.result.vip
- }
- })
- },
- scrolltolower(){
- this.scrollLeft = 0
- },
- reviewClose(){
- this.reviewShow = false;
- if(this.userInfo.bigNum > 0){
- this.turntableShow = true;
- }
- },
- startSubmit : debounce(function(){
- this.request('createOrder').then(res => {
- this.getUserInfo()
- this.isSubmit = false
- if (res.code == 200) {
- this.msg = res.message
- this.product = res.result
- this.show = true
- }
- }).catch(err => {
- this.isSubmit = false
- })
- }, 500),
- submit() {
- this.$play()
-
- if(this.isSubmit){
- return
- }
-
- this.isSubmit = true
-
- this.$refs.an.start()
- },
- payOrder() {
- this.$play()
- this.asyncLoading().then(res => {
- this.request('pay', {}, {
- id: this.product.id
- }).then(res => {
- this.show = false
- if (res.code == 200) {
- this.reviewShow = true
- }
- })
- })
- },
- getList() {
- this.end()
- this.loading = true
- this.banner = []
- this.banner3d = []
- Promise.all([this.getShopList(),this.getShopScroll()]).then(res => {
- // this.loading = false
- this.start()
- })
- },
-
- //获取商品列表
- getShopList(){
- return this.request('getAppBanner', {}, this.queryParams).then(res => {
- if (res.code == 200) {
- this.banner = res.result
- }
- })
- },
-
- //获取App滚动列表
- getShopScroll(){
- return this.request('appScroll').then(res => {
- if (res.code == 200) {
- res.result.map((item, index) => {
- item.index = index
- })
- this.banner3d = res.result
- }
- })
- },
-
- async asyncLoading(){
- return new Promise((resolve,reject) => {
- //显示加载框
- uni.showLoading({
- title: this.$t('page.prizeDraw.loading')
- });
- setTimeout(() => {
- uni.hideLoading();
- resolve()
- },500)
- })
- },
-
- start() {
-
- this.banner.push(this.banner[0])
- this.banner.push(this.banner[1])
-
- let self = this
-
- this.invt = setInterval(next, 20)
-
- let i = 150
-
- function next() {
-
- // 平面图移动
- self.scrollLeft++
-
- // 3d图移动
- i++
- if (i >= 60) {
- i = 0
-
- self.index3d++
- self.index3d %= self.banner3d.length
-
- self.banner3d.forEach(n => {
- if(n.index != 4){
- n.index = 4
- }
- })
-
- //0
- self.banner3d[self.index3d].index = 0
-
- //6
- self.banner3d[self.index3d != 0 ?
- self.index3d - 1 :
- self.banner3d.length - 1].index = 6
-
- //5
- self.banner3d[self.index3d >= 2 ?
- self.index3d - 2 :
- self.banner3d.length - 2].index = 5
-
- //1
- self.banner3d[(self.index3d + 1) % self.banner3d.length].index = 1
-
- //2
- self.banner3d[(self.index3d + 2) % self.banner3d.length].index = 2
-
- //3
- self.banner3d[(self.index3d + 3) % self.banner3d.length].index = 3
-
- // self.banner3d.forEach(n => {
- // n.index++
- // n.index %= self.banner3d.length
- // })
- }
- }
- },
- end() {
- if (this.invt) {
- clearInterval(this.invt)
- this.invt = null
- }
- },
-
- //商品跳转
- gotoDetail(url){
- this.$play()
- if(url){
- window.open(url)
- }
- }
- },
- }
- </script>
-
- <style scoped lang="scss">
- .prizeDraw {
- // color: #fff;
- background-size: 100%;
- background-repeat: no-repeat;
- background-position: 0rpx -210rpx;
- padding-bottom: 150rpx;
-
- width: 750rpx;
- // background-image: url('@/static/prizeDraw/bj.jpg');
- background-size: 100%;
-
- /deep/ .uni-scroll-view::-webkit-scrollbar {
- width: 0;
- height: 0;
- }
-
- .title {
- font-weight: 900;
- text-align: center;
- font-size: 28rpx;
- }
-
- .profit {
- position: relative;
- margin: 0 auto;
- padding: 10rpx 50rpx;
- font-weight: 900;
- background-color: $uni-bg-color-app;
- color: $uni-text-color-inverse;
- width: fit-content;
- border-radius: 20rpx;
- margin: 30rpx auto;
-
- .img-box {
- display: flex;
- justify-content: center;
- width: 90rpx;
- position: absolute;
- top: 50%;
- left: -40rpx;
- transform: translateY(-50%);
-
- image {
- width: 70rpx;
- height: 70rpx;
- }
- }
- }
-
- .prize_drone {
- margin-top: 20rpx;
-
- .banner {
- display: flex;
-
- &>view {
- width: calc(50% - 20rpx);
- flex-shrink: 0;
- margin: 0 10rpx;
- cursor: pointer;
- img {
- display: block;
- width: 90%;
- margin: 0rpx auto;
- }
- }
- }
-
- .banner3d {
- position: relative;
- height: 180rpx;
- margin-top: 100rpx;
-
- &>view {
- width: 220rpx;
- height: 220rpx;
- position: absolute;
- left: 265rpx;
- transition: all .8s;
-
- img {
- display: block;
- width: 85%;
- height: 85%;
- margin: 0rpx auto;
- }
- }
-
- .banner3d_item_0 {
- z-index: 20;
- transform: translateX(0) scale(1.6);
- }
-
- .banner3d_item_1 {
- z-index: 19;
- transform: translateX(230rpx) scale(.9);
- }
-
- .banner3d_item_2 {
- z-index: 17;
- transform: translateX(130rpx) scale(.7);
- }
-
- .banner3d_item_3 {
- z-index: 16;
- transform: translateX(25rpx) scale(0.5);
- }
-
- .banner3d_item_4 {
- z-index: 16;
- transform: translateX(-25rpx) scale(0.01);
- }
-
- .banner3d_item_5 {
- z-index: 18;
- transform: translateX(-130rpx) scale(0.7);
- }
-
- .banner3d_item_6 {
- z-index: 19;
- transform: translateX(-230rpx) scale(.9);
- }
- }
- }
-
- .btn {
- background-color: $uni-bg-color-app;
- color: $uni-text-color-inverse;
- font-weight: 900;
- margin: 20rpx 40rpx;
- padding: 10rpx 20rpx;
- font-size: 46rpx;
- text-align: center;
- border-radius: 24rpx;
- }
-
- .amount {
- display: flex;
- margin: 20rpx 40rpx;
- justify-content: space-between;
- border: 3px solid #777;
- padding: 20rpx;
- font-weight: 900;
- color: #aaa;
- align-items: center;
- }
-
- .member-list {
- display: flex;
- flex-wrap: wrap;
- justify-content: space-between;
- margin: 10rpx 40rpx;
-
- .member-item {
- box-sizing: border-box;
- padding: 15rpx;
- width: calc(50% - 10rpx);
- border-radius: 10rpx;
- border: 3px solid #777;
-
- .img-box {
- display: flex;
- justify-content: center;
- width: 100%;
- align-items: center;
- padding-top: 20rpx;
-
- image {
- width: 130rpx;
- height: 130rpx;
- }
- }
-
- .menber-descript {
- text-align: center;
- color: $uni-text-color;
- font-size: 34rpx;
- margin-top: 10rpx;
- font-weight: 900;
- }
-
- .equity-list {
- color: $uni-text-color;
- text-align: center;
-
- .equity-item {
- position: relative;
- font-size: 26rpx;
- }
- }
- }
- }
-
- .notice {
- margin: 20rpx 40rpx;
- font-size: 32rpx;
-
- .notice-list {
- color: $uni-text-color;
- }
- }
- }
- </style>
|