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.
 
 
 
 
 

1456 lines
45 KiB

<template>
<view id="app">
<loadlogo v-if="!loadlogo" />
<view class="drawGame" :style="{backgroundColor: drawPageData.bg_color || '#FF5555'}" v-if="loadlogo">
<view class="audio-main" @click="playAudio" style="top: 1.5%;right: 30upx;" v-if="!!drawPageData.background_music">
<view class="audio-bg" :class="{ 'stop-audio': !play_Audio }">
<view class="audio-gif" :style="{ 'background-image': 'url(' + imageRoot + 'musicgif.gif)' }">
<view class="audio-png" :style="{ 'background-image': 'url(' + imageRoot + 'music.png)' }"></view>
</view>
</view>
</view>
<view class="titleBG" :style="{width: imgstyle.width + 'px',height: imgstyle.height + 'px'}">
<view class="titleimg" v-if="drawPageData.share_image">
<swiper
class="titleimg"
indicator-color="rgba(255,255,255,.4)"
indicator-active-color="rgba(255,255,255,.85)"
:indicator-dots="true"
:autoplay="true"
:interval="interval"
:duration="duration">
<swiper-item v-for="(item, index) in drawPageData.share_image" :key="index" style="border-radius: 15upx;">
<image class="titleimg" :src="item" ></image>
</swiper-item>
</swiper>
</view>
<!-- <image class="titleimg" :src="drawPageData.share_image" mode=""></image> -->
<!-- <view class="gameRule" @click="isRuleShow(1)">
活动规则<text class="iconfont icon-gantanhaozhong" style="font-size: 34upx;"></text>
</view>
<view class="gameRule left" @click="isRuleShow(2)">
抽奖规则<text class="iconfont icon-gantanhaozhong" style="font-size: 34upx;"></text>
</view> -->
</view>
<view class="bigbg" style="margin: 30upx;">
<view class="dis-flex col-f" style="padding: 0 20upx 20upx;">
<view class="flex-box f-26 t-l">
参加人数:{{drawPageData.visit}}人
</view>
<view class="flex-box f-26 t-c">
浏览人数:{{drawPageData.pv}}人
</view>
<view class="flex-box f-26 t-r">
中奖人数:{{drawPageData.prize}}人
</view>
</view>
<view class="bg" :style="{background: 'url('+drawPageData.background_image +')',backgroundSize: '100% 100%'}">
<!-- <view class="bg"> -->
<view style="height: 188upx;">
<view class="scroll-wrap">
<view class="scroll-content" :style="{ top }" @mouseenter="Stop()" @mouseleave="Up()">
<view class="scroll-content-item" v-for="item in prizeList" v-bind:key="item.id">{{item.nickname}}获得{{item.title}}</view>
</view>
</view>
</view>
<!-- 抽奖组件 -->
<view style="position: relative;" v-if="parameterid">
<view v-if="drawPageData.type == '1'">
<FGame :goodsList="goodsList" @startMusic="startMusic" @endMusic="endMusic" :opendraw="opendraw" :parameterid="parameterid"></FGame>
</view>
<view v-else-if="drawPageData.type == '2'">
<FGamesix :goodsList="goodsList" @startMusic="startMusic" @endMusic="endMusic" :opendraw="opendraw" :parameterid="parameterid"></FGamesix>
</view>
<view style="height: 600upx;padding: 10upx;" v-else-if="drawPageData.type == '3' && goodsList">
<raffle-wheel
ref="raffleWheel"
:prizeList="goodsList"
strKey="name"
:ringCount="5"
:duration="5"
:colors="drawPageData.wheel_bg"
:canvas-width="canvasData.width"
:canvas-height="canvasData.height"
:num="opendraw"
@actionStart="handleActionStart"
@actionEnd="handleActionEnd"
@done="handleDrawDone"
@playdraw="playdraw"
v-if="goodsList.length"
/>
</view>
<view class="imgs" v-if="startImg">
<image :src="drawPageData.start_image" style="position: absolute;z-index: 99;top: 30%;left: 50%;transform: translate(-50%);width: 300upx;height: 300upx;"
mode=""></image>
</view>
</view>
<view class="dis-flex f-28" style="padding: 71upx 0upx 0upx;color: #955F19;">
<view class="dis-flex" style="flex: 0.3;">
<view >
<view class="dis-flex" style="margin-top: 20upx;">
<view class="b-f" style="width: 10upx;height: 10upx;border-radius: 50% 0% 0% 50%;border-right: 3upx solid #D4D3D4;"></view>
<view class="b-f" style="width: 8upx;height: 10upx;;border-right: 3upx solid #D4D3D4;"></view>
<view class="b-f" style="width: 8upx;height: 10upx;;border-right: 3upx solid #D4D3D4;"></view>
</view>
<view class="dis-flex" style="margin-top: 60upx;">
<view class="b-f" style="width: 10upx;height: 10upx;border-radius: 50% 0% 0% 50%;border-right: 3upx solid #D4D3D4;"></view>
<view class="b-f" style="width: 8upx;height: 10upx;;border-right: 3upx solid #D4D3D4;"></view>
<view class="b-f" style="width: 8upx;height: 10upx;;border-right: 3upx solid #D4D3D4;"></view>
</view>
</view>
<view class="ifeng" :style="{backgroundColor: drawPageData.button_shadow || '#AF1010'}">
<view class="ifelit" :style="{backgroundColor: drawPageData.button_color || '#FD7058'}">
<view class="f-28 col-f t-c" style="height: 50upx;line-height: 50upx;">
我的<text>{{TextSubstitution.credittext}}</text>
</view>
<view class="b-f f-28 f-w t-c" style="margin: 0 3upx;height: 62upx;border-radius: 0upx 0upx 8upx 8upx;color: #FF4444;line-height: 62upx;">
{{parseInt(drawPageData.user_integral)}}
</view>
</view>
</view>
</view>
<view style="flex: 0.4;">
<view style="width: 248upx;height: 120upx;margin: auto;" @click="playdraw">
<image class="btnimg" style="width: 100%;height: 100%;" :src="drawPageData.button_draw || imgfixUrls + '/ljcj.png'"
mode=""></image>
</view>
</view>
<view class="t-r f-24 col-f" style="padding-top: 6upx;flex: 0.3;">
<view style="float: right;margin-right: 2upx;">
<view class="dis-flex">
<view class="dis-il-block dis-flex description" :style="{backgroundColor: drawPageData.button_shadow || '#AF1010'}">
<view class="dis-il-block descriptionrulo" @click="isRuleShow(2)" :style="{backgroundColor: drawPageData.button_color || '#FD7058'}">
<view class="dis-il-block t-c" style="height: 45upx;line-height: 45upx;">
规则说明
</view>
<view class="dis-il-block iconfont icon-video t-c" style="font-weight: 400;font-size: 28upx;height: 45upx;width: 46upx;line-height: 45upx;">
</view>
</view>
<!-- <view class="b-f dis-il-block" style="width: 20upx;height: 58upx;border-radius: 0 60upx 60upx 0;background-color: #FFFFFF;">
<view style="width: 10upx;height: 30upx;border-radius: 0 60upx 60upx 0;background-color: #ff4444;float: right;">
</view>
</view> -->
</view>
<view class="dis-flex" style="margin-top: 20upx;">
<view style="width: 10upx;height: 10upx;background-color: #FFFFFF;border-right: 2upx solid #D4D3D4;"></view>
<view style="width: 8upx;height: 10upx;background-color: #FFFFFF;border-right: 2upx solid #D4D3D4;"></view>
<view style="width: 6upx;height: 10upx;background-color: #FFFFFF;border-right: 2upx solid #D4D3D4;border-radius: 0 60upx 60upx 0upx;"></view>
</view>
</view>
<view class="dis-flex" style="margin-top: 10upx;">
<view class="dis-il-block dis-flex awardbtn" :style="{backgroundColor: drawPageData.button_shadow || '#AF1010'}">
<view class="dis-il-block awardbtnrulo" @click="myprize" :style="{backgroundColor: drawPageData.button_color || '#FD7058'}">
<view class="dis-il-block t-c" style="height: 45upx;line-height: 45upx;">
我的奖品
</view>
<view class="dis-il-block iconfont icon-video t-c" style="font-weight: 400;font-size: 28upx;height: 45upx;width: 46upx;line-height: 45upx;">
</view>
</view>
<!-- <view class="b-f dis-il-block" style="width: 20upx;height: 58upx;border-radius: 0 60upx 60upx 0;background-color: #FFFFFF;">
<view style="width: 10upx;height: 30upx;border-radius: 0 60upx 60upx 0;background-color: #ff4444;float: right;">
</view>
</view> -->
</view>
<view class="dis-flex" style="margin-top: 20upx;">
<view style="width: 10upx;height: 10upx;background-color: #FFFFFF;border-right: 2upx solid #D4D3D4;"></view>
<view style="width: 8upx;height: 10upx;background-color: #FFFFFF;border-right: 2upx solid #D4D3D4;"></view>
<view style="width: 6upx;height: 10upx;background-color: #FFFFFF;border-right: 2upx solid #D4D3D4;border-radius: 0 60upx 60upx 0upx;"></view>
</view>
</view>
</view>
<!-- <view class="t-r" >
规则说明
</view>
<view class="t-r" style="margin-top: 40upx;height: 44upx;line-height: 44upx;" >
我的奖品
</view> -->
<!-- <view class="dis-il-block" v-if="drawPageData.surplus_day_join_times == 0" style="padding: 10upx 20upx;border-radius: 60upx;background-color: rgba(0,0,0,0.1);">
<text style="color: #FF4444;">{{drawPageData.integral_consume}}</text>
<text>{{TextSubstitution.credittext}}</text>抽
<text style="color: #FF4444;">1</text>
</view>
<view class="dis-il-block" v-else style="padding: 10upx 20upx;border-radius: 60upx;background-color: rgba(0,0,0,0.1);">
<text>今日免费次数:</text>
<text style="color: #FF4444;">{{drawPageData.surplus_day_join_times}}</text>
</view> -->
</view>
</view>
<view class="dis-flex" style="padding: 20upx 30upx 0;">
<view style="flex: 0.5;">
<view style="width: 382upx;height: 90upx;" @click="gogetintegral">
<image class="btnimg" style="width: 100%;height: 100%;" :src="drawPageData.button_more || imgfixUrls + '/hqgdbtn.png'"
mode=""></image>
</view>
</view>
<view style="flex: 0.5;">
<view style="width: 220upx;height: 90upx;float: right;" @click="GenerateAPoster">
<image class="btnimg" style="width: 100%;height: 100%;" :src="drawPageData.button_prize || imgfixUrls + '/schbbtn.png'"
mode=""></image>
</view>
</view>
</view>
<view class="f-26 t-c" style="color: rgb(184, 47, 57);height: 60upx;line-height: 60upx;">
<text style="padding-right: 30upx;" v-if="drawPageData.surplus_day_join_times != 0">今日免费<text style="color: #FF4444;">{{drawPageData.surplus_day_join_times}}</text>次</text>
<text style="color: #FF4444;"></text>
<text>每消耗</text>
<text style="color: #FF4444;">{{drawPageData.integral_consume}}</text>
<text>{{TextSubstitution.credittext}}</text>抽
<text style="color: #FF4444;">1</text>
<text style="padding-left: 30upx;" v-if="drawPageData.surplus_day_parin_times != 0">今日可抽<text style="color: #FF4444;">{{drawPageData.surplus_day_parin_times}}</text>
次</text>
</view>
<!-- 按钮组 -->
<!-- <view class="dis-flex" style="padding: 0 20upx;">
<view >
<view style="height: 124upx;width: 184upx;" @click="gogetintegral">
<image class="btnimg" style="width: 100%;height: 100%;" :src="imgfixUrls + '/hqgd.png'" mode=""></image>
</view>
</view>
<view style="padding: 0 20upx;" @click="playdraw">
<view style="width: 288upx;height: 124upx;">
<image class="btnimg" style="width: 100%;height: 100%;" :src="drawPageData.start_image || imgfixUrls + '/ljcj.png'"
mode=""></image>
</view>
</view>
<view >
<view style="width: 122upx;height: 124upx;" @click="myprize">
<image class="btnimg" style="height: 100%;width: 100%;" :src="imgfixUrls + '/wdjp.png'" mode=""></image>
</view>
</view>
</view> -->
<!-- <view class="t-c f-26" style="color: #955F19;">
<text>今日免费次数:</text>
<text>3</text>
</view> -->
</view>
<!-- 活动商家 -->
<view class="activity" v-if="storeList.length > 0">
<view class="tagbox">
<view class="dis-il-block" style="width: 0;
height: 0;
border-bottom: 34upx solid #D68009;
border-left: 26upx solid transparent;
position: absolute;
top: 0;
left: -8%;
z-index: 98;
">
</view>
<view class="dis-il-block" style="width: 0;
height: 0;
border-top: 69upx solid #FCD83D;
border-left: 8upx solid transparent;
position: relative;
z-index: 99;
">
</view>
<view class="contentbox dis-il-block">
<view class="text">
商家列表
</view>
</view>
<view class="dis-il-block" style="width: 0;
height: 0;
position: relative;
z-index: 99;
border-top: 69upx solid #FCD83D;
border-right: 8upx solid transparent;
">
</view>
<view class="dis-il-block" style="width: 0;
height: 0;
border-bottom: 34upx solid #D68009;
border-right: 24upx solid transparent;
position: absolute;
right: -8%;
top: 0;
">
</view>
<!-- <view class="dis-il-block"
style="width: 0;
height: 0;
border-top: 36upx solid #FFEA72;
border-left: 8upx solid transparent;">
</view> -->
</view>
<view class="activity-content">
<view class="storeList dis-flex" :style="{ left }" @mouseenter="cartStop()" @mouseleave="cartUp()">
<view class="storeList-item dis-il-block" v-for="(item,index) in storeList" :key="index" @click="gostore(item.id)">
<image :src="item.logo" style="width: 189upx;height: 189upx;border-radius: 10upx;" mode=""></image>
<view class="f-26" style="color: #999999;font-weight: 500;padding-bottom: 20upx;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;width: 180upx;">
{{item.storename}}
</view>
<view class="dis-flex" style="font-size: 24upx;font-family: PingFang SC;font-weight: 500;color: #333333;line-height: 36upx;">
<image style="width: 40upx;height: 40upx;" :src="item.goods_logo" mode=""></image>
<view class="f-26">
<view style="padding-left: 10upx;width: 140upx;overflow: hidden;
text-overflow:ellipsis; white-space: nowrap;">{{item.goods_name}}</view>
<!-- <text style="padding-left: 10upx;">1个</text> -->
</view>
</view>
</view>
</view>
<view class="f-24 t-c" style="font-size: 24upx;color: #999999;line-height: 50upx;">
<text class="iconfont icon-back_light" style="font-size: 24upx;"></text>
<text class="iconfont icon-back_light" style="font-size: 24upx;"></text>
左右滑动
<text class="iconfont icon-jinrujiantouxiao1" style="font-size: 24upx;"></text>
<text class="iconfont icon-jinrujiantouxiao1" style="font-size: 24upx;"></text>
</view>
</view>
</view>
<!-- 活动商家 -->
<view class="activity" style="top: 150upx;" v-if="friendList.list.length > 0">
<view class="tagbox">
<view class="dis-il-block" style="width: 0;
height: 0;
border-bottom: 34upx solid #D68009;
border-left: 26upx solid transparent;
position: absolute;
top: 0;
left: -8%;
z-index: 98;
">
</view>
<view class="dis-il-block" style="width: 0;
height: 0;
border-top: 69upx solid #FCD83D;
border-left: 8upx solid transparent;
position: relative;
z-index: 99;
">
</view>
<view class="contentbox dis-il-block">
<view class="text">
助力好友排行
</view>
</view>
<view class="dis-il-block" style="width: 0;
height: 0;
position: relative;
z-index: 99;
border-top: 69upx solid #FCD83D;
border-right: 8upx solid transparent;
">
</view>
<view class="dis-il-block" style="width: 0;
height: 0;
border-bottom: 34upx solid #D68009;
border-right: 24upx solid transparent;
position: absolute;
right: -8%;
top: 0;
">
</view>
<!-- <view class="dis-il-block"
style="width: 0;
height: 0;
border-top: 36upx solid #FFEA72;
border-left: 8upx solid transparent;">
</view> -->
</view>
<view class="activity-friend">
<view class="f-28 t-c" style="color: #333333;padding-bottom: 20upx;" v-if="friendList.total_friends !== 0 && friendList.total_friends !== '0'">
已有
<text style="color: #FF4444;">{{friendList.total_friends}}</text>
位好友帮您获得
<text style="color: #FF4444;">{{friendList.total_integral}}</text>
{{TextSubstitution.credittext}}
</view>
<view style="overflow: auto;">
<view class="dis-flex" style="padding: 30upx 0;border-bottom: 2upx dashed #cccccc;" v-for="(item,index) in friendList.list"
:key="index">
<view style="flex: 0.1;margin: auto;">
<image style="width: 39upx;height: 47upx;" v-if="index == 0" :src="imgfixUrls + '/j.png'" mode=""></image>
<image style="width: 39upx;height: 47upx;" v-else-if="index == 1" :src="imgfixUrls + '/y.png'" mode=""></image>
<image style="width: 39upx;height: 47upx;" v-else-if="index == 2" :src="imgfixUrls + '/t.png'" mode=""></image>
<text class="f-28 t-c" style="line-height: 60upx;" v-else>{{index + 1}}</text>
</view>
<view class="dis-flex" style="flex: 0.6;">
<view >
<image style="height: 60upx;width: 60upx;border-radius: 50%;border: 2upx solid #333333;" :src="item.avatar"
mode=""></image>
</view>
<view class="f-28" style="line-height: 60upx;padding-left: 15upx;color: #333333;overflow: hidden;text-overflow:ellipsis; white-space: nowrap;width: 300upx;">
{{item.nickname}}
</view>
</view>
<view class="f-28" style="flex: 0.3;line-height: 60upx;">
<text style="color: #FF4444;">{{item.total_integral}}</text>
{{TextSubstitution.credittext}}
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<!-- 规则 -->
<PopManager :show="ruleShow" :type="'center'" :overlay="'false'" :showOverlay="'false'" @clickmask="ruleShow = false">
<view class="rulebox t-c">
<view class="f-32" style="font-weight: 500;color: #6f6f6f;padding-bottom: 30upx;">
活动规则
</view>
<view v-if="parser" style="height: 75vh;overflow: auto;">
<jyf-parser domain="https://6874-html-foe72-1259071903.tcb.qcloud.la" gesture-zoom lazy-load ref="article"
selectable show-with-animation use-anchor :html="parser"></jyf-parser>
</view>
</view>
<view style="position: relative;height: 40upx;">
<view style="border-left: 1upx solid #FFFFFF;height: 50upx;position: absolute;left: 50%;transform: translateX(-50%);">
</view>
</view>
<view style="position: relative;">
<view class="iconfont icon-roundclose col-f" style="position: absolute;left: 50%;transform: translateX(-50%);font-size: 50upx;"
@click="ruleShow = false">
</view>
</view>
</PopManager>
<PopManager :show="endImg" :type="'center'" :overlay="'false'" :showOverlay="'false'" @clickmask="endImg = false">
<view class="zjbj" :style="{background: 'url('+ (drawPageData.prize_image|| (imgfixUrls + '/kjbj2.png')) +')',backgroundSize: '100% 100%'}">
<!-- <image style="width: 70vw;height: 80vh;" :src="imgfixUrls + '/kjbj.png'" mode=""></image> -->
<text class="iconfont icon-close dis-il-block t-c f-w closeBtn" @click="close"></text>
<!-- <view class="contenttitle t-c">
<view class="text" v-if="endid !== '0' && endid !== 0">
中奖啦
</view>
<view class="text" v-else>
谢谢惠顾
</view>
</view> -->
<view class="zjbox" style="margin: auto;" v-if="endImg">
<view class="f-w f-48 t-c" style="color: #FB2F24;padding-bottom: 36upx;">
{{endid !== '0'&& endid !== 0?'中奖了':'感谢参与'}}
</view>
<view >
<image style="border-radius: 50%;height: 240upx;width: 240upx;margin-left: 20vw;border: 2upx solid #FFC853;" :src="effect_image || drawPageData.not_prize_image"
mode=""></image>
</view>
<view style="padding:20upx 0 50upx;">
<!-- <view class="col-f f-38" style="text-align: center;">
{{}}
</view> -->
<view class="col-f f-40 " style="text-align: center;margin-bottom: 10upx;">
<text style="color: #E5492C;">{{endid !== '0'&& endid !== 0?'恭喜你抽中了':'很遗憾'}}</text>
</view>
<view class="col-f f-50 t-c" style="text-align: center;">
<text style="color: #FF2D26;">{{endid !== '0'&& endid !== 0?endDraw:'没有中奖哦!'}}</text>
</view>
</view>
<view class="dis-flex">
<view style="flex: 0.45;position: relative;height: 90upx;">
<!-- <view class="t-c f-34" style="background-color: #EB9B2F;color: #FFFFFF;padding: 15upx 30upx;border-radius: 10upx;margin-top: 30upx;"
>
查看奖品
</view> -->
<image style="width: 250upx;height: 90upx;" :src="imgfixUrls + '/hsbtn.png'" mode=""></image>
<view @click="myprize" class="f-32 t-c" style="position: absolute;left: 0;top: 0;height: 90upx;line-height: 80upx;width: 250upx;color: #FF3D25;">
查看奖品
</view>
</view>
<view style="flex: 0.1;width: 30upx;">
</view>
<view class="f-34" style="flex: 0.45;position: relative;height: 90upx;">
<!-- <view class="t-c" style="background-color: #EB9B2F;color: #FFFFFF;padding: 15upx 30upx;border-radius: 10upx;margin-top: 30upx;"
@click="close(1)">
继续抽奖
</view> -->
<image style="width: 250upx;height: 90upx;" :src="imgfixUrls + '/cjredbtn.png'" mode=""></image>
<view @click="close(1)" class="f-32 t-c" style="position: absolute;left: 0;top: 0;height: 90upx;line-height: 80upx;width: 250upx;color: #FFFFFF;">
继续抽奖
</view>
</view>
</view>
</view>
<!-- <view class="imgs-box" v-if="endImg" :style="{background: 'url('+drawPageData.effect_image+')',backgroundSize: '100% 100%'}"> -->
<!-- <image :src="drawPageData.effect_image" style="z-index: 99;width: 300upx;height: 300upx;" mode=""></image> -->
<!-- </view> -->
</view>
</PopManager>
<PopManager :show="showCommunity" type="center" @clickmask="showCommunity = false">
<view v-if="showCommunity" style="width: 80vw;height: 90vh;padding: 30upx;overflow: hidden;border-radius: 20upx;">
<posterlate :postId="parameterid" :postType="'13'"></posterlate>
</view>
</PopManager>
<view v-if="menuList.id">
<TabBars :tabBarAct="0" :pageType="'draw'" :tabBarData="menuList.data" />
</view>
<PhoneMask :show1="popShow" @clickmask1="closePop"></PhoneMask>
<getvxphone :show="vxshow" @showFalse="showFalse"></getvxphone>
<view>
<follow
:followShow="followShow"
:followType="followType"
:followTitleShow="followTitleShow"
@clickmask="openQrShow"
@closeFollowPop="closeFollowPop"
@closeFollowTitle="closeFollowTitle"
:followData="followData"
></follow>
</view>
</view>
</template>
<script>
import App from '@/common/js/app.js';
import FGame from '../tamplate/FGame.vue';
import FGamesix from '../tamplate/FGamesix.vue';
import jyfParser from '@/components/jyf-parser/jyf-parser.vue';
import PopManager from '@/components/template/PopManager';
import Loadlogo from '@/components/template/loadlogo.vue';
import posterlate from '@/components/template/posterlate';
import TabBars from '@/components/template/tabBar';
import PhoneMask from '@/components/template/PhoneMask';
import getvxphone from '@/components/template/getVXphone.vue';
import follow from '@/components/template/follow.vue';
import RaffleWheel from '@/components/raffle-wheel/raffle-wheel.vue'
let innerAudioContext = uni.createInnerAudioContext();
let drawAudio = uni.createInnerAudioContext();
export default {
components: {
FGame,
FGamesix,
PopManager,
jyfParser,
Loadlogo,
posterlate,
TabBars,
PhoneMask,
getvxphone,
follow,
RaffleWheel
},
data() {
return {
//获奖名单滚动列表
prizeList: [],
loadlogo: false,
activeIndex: 0,
cartactiveIndex: 0,
intnum: undefined,
cartintnum: undefined,
storeList: [], //横着滑动的商家列表
friendList: [], //竖着排列的助力列表
ruleShow: false,
drawPageData: {
effect_image: ''
}, //页面基本信息
goodsList: null, //抽奖列表
play_Audio: false,
opendraw: 0,
startImg: false,
endImg: false,
endDraw: '',
endid: 0,
parameter: {},
effect_image: '',
parser: '',
TextSubstitution: {}, //文本替换
parameterid: '',
ratio:0,
imgstyle:{},
showCommunity:false,
menuList:{},
popShow: false,
vxshow:false,
followTitleShow: true,
followShow: false,
followType: '10',
followData:{
},
// canvas 宽高
canvasData: {
width: 260,
height: 260
},
duration:500,
interval:2000,
// 奖品数据
// 中奖下标
targetIndex: 0,
// 中奖类目名称
targetName: '',
// 是否由前端控制概率
isFrontend: true,
// 权重随机数的最大值
weightTotal: 0,
// 权重数组
weightArr: [],
serial_number:0
}
},
computed: {
top() {
return -this.activeIndex * 15 + 'px';
},
left() {
return -this.cartactiveIndex * 10 + 'rpx';
}
},
onHide() {
let _this = this,
play_Audio = false,
pageAudio = _this.drawPageData.background_music;
if (!play_Audio) {
innerAudioContext.pause()
innerAudioContext.onPause(() => {
console.log('暂停播放');
});
}
_this.play_Audio = play_Audio
},
onLoad(e) {
let _this = this;
this.parameter = e;
this.parameterid = e.id;
this.ScrollUp();
this.imgstyle = uni.getStorageSync('imgstyle');
uni.setStorageSync('Dparameterid', this.parameterid);
this.TextSubstitution = uni.getStorageSync('TextSubstitution');
if (!this.parameter.head_id || this.parameter.head_id == '0') {
this.parameter.head_id = 0;
}
console.log(e, 'canshu')
// this.cartScrollUp();
},
onShow() {
this.startDraw = false;
this.getDrawData();
this.playAudio();
},
destroyed() {
innerAudioContext.stop();
innerAudioContext.onStop(() => {
console.log('页面跳转暂停播放');
});
},
onUnload() {
this.play_Audio = false;
innerAudioContext.stop();
innerAudioContext.onStop(() => {
console.log('页面跳转暂停播放');
});
},
methods: {
play(){
this.prizeList.map(item=>{
item.weight = 0;
});
this.prizeList[6].weight = 1;
if (this.isFrontend) {
this.prizeList.forEach((item) => this.weightTotal += item.weight)
this.weightArr = this.prizeList.map((item) => item.weight)
}
setTimeout(()=>{
this.num++;
})
},
// 重新生成
handleInitCanvas () {
this.prizeList = []
this.getPrizeList();
},
// 获取奖品列表
getPrizeList () {
uni.showLoading({
title: '奖品准备中...'
})
// 模拟请求奖品列表
let stoTimer = setTimeout(() => {
clearTimeout(stoTimer)
stoTimer = null
// stock 奖品库存
// weight 中奖概率,数值越大中奖概率越高
this.prizeList = [
]
// 计算出权重的总和并生成权重数组
if (this.isFrontend) {
this.prizeList.forEach((item) => this.weightTotal += item.weight)
this.weightArr = this.prizeList.map((item) => item.weight)
}
}, 500)
},
// 本次抽奖开始
handleActionStart () {
// this.prizeList.map(item=>{
// item.weight = 0;
// })
// this.prizeList[1].weight = 1;
// console.log();
this.targetName = ''
let list = [...this.goodsList]
// 模拟请求
let stoTimer = setTimeout(() => {
clearTimeout(stoTimer)
stoTimer = null
// 判断是否由前端控制概率
// 前端控制概率的情况下,需要拿到最接近随机权重且大于随机权重的值
// 后端控制概率的情况下,通常会直接返回 prizeId
if (this.isFrontend && this.weightTotal) {
console.warn('###当前处于前端控制中奖概率,安全起见,强烈建议由后端控制###')
console.log('当前权重总和为 =>', this.weightTotal)
// 注意这里使用了 Math.ceil,如果某个权重的值为 0,则始终无法中奖
let weight = Math.ceil(Math.random() * this.weightTotal)
console.log('本次权重随机数 =>', weight)
// 生成大于等于随机权重的数组
let tempMaxArrs = []
list.forEach((item) => {
if (item.weight >= weight) {
tempMaxArrs.push(item.weight)
}
})
// 如果大于随机权重的数组有值,先对这个数组排序然后取值
// 反之新建一个临时的包含所有权重的已排序数组,然后取值
if (tempMaxArrs.length) {
tempMaxArrs.sort((a, b) => a - b)
this.targetIndex = this.weightArr.indexOf(tempMaxArrs[0])
} else {
let tempWeightArr = [...this.weightArr]
tempWeightArr.sort((a, b) => a - b)
this.targetIndex = this.weightArr.indexOf(tempWeightArr[tempWeightArr.length - 1])
}
} else {
// 这里随机产生的 prizeId 是模拟后端返回的 prizeId
let prizeId = Math.floor(Math.random() * list.length)
list.forEach((item, index) => {
if (item.draw_goods_id === prizeId) {
// 中奖下标
this.targetIndex = 0
}
})
}
console.log('本次抽中奖品 =>', this.goodsList[this.targetIndex].title)
// console.log('本次奖品库存 =>', this.prizeList[this.targetIndex].stock)
// 开始执行旋转定位
this.$refs.raffleWheel.handleStartRotate(this.targetIndex)
}, 200)
},
// 本次抽奖结束
handleActionEnd () {
this.endMusic(this.serial_number);
console.log('旋转结束,执行拿到结果后到逻辑')
// let prizeName = this.prizeList[this.targetIndex].name
// let prizeStock = this.prizeList[this.targetIndex].stock
// this.targetName = prizeName === '谢谢参与' ? prizeName : prizeStock ? `恭喜您,获得 ${prizeName}` : '很抱歉,您来晚了,当前奖品已无库存'
},
// 抽奖转盘绘制完成
handleDrawDone () {
console.log('抽奖转盘绘制完成')
uni.hideLoading()
// uni.showToast({
// title: '奖品准备就绪'
// })
},
closeFollowTitle() {
let _this = this;
_this.followTitleShow = false;
},
closeFollowPop() {
let _this = this;
_this.followShow = false;
},
openQrShow() {
let _this = this;
_this.followShow = true;
},
showFalse(){
console.log('进了showfalse')
this.vxshow = false;
},
closePop() {
let _this = this
_this.popShow = false
},
GenerateAPoster(){
this.showCommunity = true;
},
gostore(id) {
App.navigationTo({
url: `pages/mainPages/store/index?sid=${id}`
})
},
close(type) {
this.endImg = false;
if (type == 1) {
this.playdraw()
}
},
endMusic(ind) {
drawAudio.stop();
drawAudio.onStop(() => {
console.log('页面跳转暂停播放');
});
this.goodsList.map(item => {
if (item.serial_number == ind) {
this.effect_image = item.image;
if (item.draw_goods_id == '0') {
this.effect_image = '';
};
// this.effect_image = '../../../static/images/xxhg3.png';
this.endDraw = item.title;
this.endid = item.draw_goods_id;
console.log(item, this.endid);
this.endImg = true;
this.startDraw = false;
if(this.drawPageData.use_music){
this.playAudio();
}
this.getDrawData(1);
}
})
},
startMusic(flag,msg) {
let _this = this;
if (flag == false) {
this.startDraw = false;
if(this.drawPageData.use_music){
this.playAudio();
}
if(msg == '未绑定手机号'){
//#ifdef H5
_this.popShow = true;
//#endif
//#ifndef H5
_this.vxshow = true;
//#endif
}
return
}
drawAudio.src = _this.drawPageData.use_music;
//#ifdef H5
jWeixin.ready(() => {
jWeixin.getLocation({
type: 'gcj02',
success: function(res) {
drawAudio.play();
}
});
});
//#endif
//#ifndef H5
drawAudio.play();
//#endif
drawAudio.onPlay(() => {
console.log('开始播放');
});
},
playAudio() {
let _this = this,
play_Audio = _this.play_Audio ? false : true,
pageAudio = _this.drawPageData.background_music;
if (play_Audio) {
//#ifdef H5
jWeixin.ready(() => {
jWeixin.getLocation({
type: 'gcj02',
success: function(res) {
innerAudioContext.play();
innerAudioContext.loop = true;
}
});
});
//#endif
//#ifndef H5
innerAudioContext.loop = true;
innerAudioContext.play();
//#endif
innerAudioContext.onPlay(() => {
console.log('开始播放');
});
}
if (!play_Audio) {
innerAudioContext.pause();
innerAudioContext.onPause(() => {
console.log('暂停播放');
});
}
innerAudioContext.onError(res => {
// console.log(res.errMsg);
// console.log(res.errCode);
innerAudioContext.destroy();
//发生错误后,销毁实例
});
_this.play_Audio = play_Audio;
},
getDrawData(flag) {
let _this = this;
App._post_form(
`&p=draw&do=home&id=${_this.parameterid}&draw_id=${_this.parameterid || 0}&head_id=${_this.parameter.head_id}`, {},
res => {
// console.log(res);
_this.drawPageData = res.data.info;
if (!_this.drawPageData.not_prize_image) {
_this.drawPageData.not_prize_image = _this.imgfixUrls + 'wzjbj.png'
// debugger
}
if(!_this.drawPageData.share_image){
_this.drawPageData.share_image = [_this.imgfixUrls + 'cjzybj.jpg']
// debugger
}
// let rule = decodeURIComponent(_this.drawPageData.rule);
// _this.drawPageData.rule = rule;
// console.log(rule)
if (!_this.drawPageData.background_image) {
_this.drawPageData.background_image = _this.imgfixUrls + 'cjbj.png';
}
_this.prizeList = res.data.record;
_this.storeList = res.data.shop;
_this.friendList = res.data.help;
if(res.data.help instanceof Array){
if(res.data.help.length == 0){
_this.friendList = {
list:[]
}
}
}
_this.goodsList = res.data.prize;
_this.menuList = res.data.menu;
if(_this.drawPageData.type == '3'){
if(!_this.drawPageData.wheel_bg){
_this.drawPageData.wheel_bg = ['#8EC074','#E6A53F'];
}
_this.goodsList.map((item,index)=>{
item.weight = 1;
item.prizeId = index + 1;
item.stock = 100;
item.name = item.title;
if(!item.title){
item.name = '谢谢参与'
}
// item.name = item.title;
})
// 这个是初始化转盘抽奖序列的
if (this.isFrontend) {
this.goodsList.forEach((item) => this.weightTotal += item.weight)
this.weightArr = this.goodsList.map((item) => item.weight)
}
}
if (flag == 1) return;
if (res.data.info.background_music) {
innerAudioContext.src = res.data.info.background_music;
console.log(innerAudioContext.src);
setTimeout(()=>{
//#ifdef H5
jWeixin.ready(() => {
innerAudioContext.loop = true;
innerAudioContext.play();
});
//#endif
//#ifndef H5
innerAudioContext.loop = true;
innerAudioContext.play();
//#endif
// _this.playAudio();
})
}
// uni.showToast({
// title:'转发成功'
// })
},
false,
() => {
_this.loadlogo = true;
}
);
},
gogetintegral() {
App.navigationTo({
url: `pages/subPages2/drawGame/gameIntegral?id=${this.parameterid}`
})
},
myprize() {
App.navigationTo({
url: `pages/subPages2/drawGame/myPrize`
})
},
isRuleShow(flag) {
if (flag == 1) {
this.parser = this.drawPageData.rule;
} else {
this.parser = this.drawPageData.introduce;
}
this.ruleShow = true;
},
// 开始抽奖
playdraw() {
let _this = this;
let data = {
type:'10',
id:this.parameterid
}
let type = '10'
App._post_form('&do=follow',
data
, res => {
if (res.data.status == 0) {
console.log('点了');
if (this.startDraw) return;
this.startDraw = true;
this.startImg = true;
setTimeout(() => {
this.startImg = false;
}, 1000);
if(this.drawPageData.use_music){
this.playAudio();
};
if(this.drawPageData.type == '3'){
App._post_form(
`&p=draw&do=draw&id=${_this.parameterid}`,
{},
res => {
console.log(res)
console.log('点击');
_this.startMusic()
_this.goodsList.map(item=>{
item.weight = 0;
});
_this.goodsList[Number(res.data.serial_number) - 1].weight = 1;
if (this.isFrontend) {
this.goodsList.forEach((item) => this.weightTotal += item.weight)
this.weightArr = this.goodsList.map((item) => item.weight)
}
_this.serial_number = res.data.serial_number;
_this.startDraw = false;
this.opendraw++;
// _this.ind = Number(res.data.serial_number) - 1 // 随机产生一个中奖号码
// // _this.ind = 14;
// _this.index = 1;
// _this.speed = 30;
// _this.times = 0;
// _this.startRoll();
},fail=>{
let msg = '';
if(fail.data.message == '未绑定手机号'){
msg = fail.data.message;
}
_this.startMusic(false,msg)
});
}else{
this.opendraw++;
}
}else{
_this.followShow = true;
_this.followData = res.data;
}
})
},
ScrollUp() {
// eslint-disable-next-line no-unused-vars
this.intnum = setInterval(_ => {
if (this.activeIndex < this.prizeList.length) {
this.activeIndex += 1;
} else {
this.activeIndex = 0;
}
}, 1000);
},
Stop() {
clearInterval(this.intnum);
},
Up() {
this.ScrollUp();
},
cartScrollUp() {
// eslint-disable-next-line no-unused-vars
this.cartintnum = setInterval(_ => {
if (this.cartactiveIndex < this.storeList.length * 22.8) {
this.cartactiveIndex += 1;
} else {
this.cartactiveIndex = 0;
}
}, 50);
},
cartStop() {
// clearInterval(this.cartintnum);
setTimeout(() => {
// this.cartScrollUp();
}, 3000)
},
cartUp() {
// this.cartScrollUp();
}
}
}
</script>
<style>
/* page {
background-color: #F74740;
} */
</style>
<style lang="scss" scoped>
$wheelBgUrl: '~static/raffle-wheel/raffle-wheel__bg';
.home {
width: 100vw;
height: 100vh;
padding: 50px 0;
}
.home-title {
text-align: center;
margin-bottom: 50px;
}
.home-title__text {
color: #ffffff;
font-size: 30px;
font-weight: bold;
}
.home-result {
text-align: center;
margin-top: 50px;
}
.home-result__text {
color: #ffffff;
font-size: 20px;
font-weight: bold;
}
.home-wheel {
text-align: center;
}
.raffle-wheel__tip {
font-size: 24rpx;
}
.home-action {
position: absolute;
left: 0;
right: 0;
bottom: 40rpx;
width: 260rpx;
height: 80rpx;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
border-radius: 10rpx;
text-align: center;
background-color: #00ff99;
margin: 0 auto;
}
.home-action__text {
color: #FFFFFF;
font-size: 24rpx;
}
.drawGame {
padding-bottom: 300upx;
.titleBG {
// width: 100vw;
// height: 450upx;
position: relative;
.titleimg {
width: 100vw;
height: 100%;
}
.gameRule {
font-size: 28upx;
font-weight: 500;
color: #FFFFFF;
width: 50upx;
text-align: center;
background-color: #FB3A3A;
height: 160upx;
padding: 20upx 0 0upx;
position: absolute;
right: 0;
top: 30%;
transform: translateY(-50%);
border-radius: 10upx 0 0 10upx;
border: 2upx solid #FFFFFF;
line-height: 28upx;
border-right: none;
}
.left {
left: 0;
border-radius: 0upx 10upx 10upx 0upx;
border: 2upx solid #FFFFFF;
border-left: none;
}
}
.bigbg {
background-size: 100% 100%;
// position: relative;
// top:-5%;
// margin-top: 48upx;
}
.bg {
// background: url(../../../static/images/bg.png);
background-size: 100% 100%;
height: 1200upx;
// margin: 30upx;
margin-top: 0;
position: relative;
.scroll-wrap {
height: 30upx;
overflow: hidden;
// font-size: 20upx;
position: absolute;
line-height: 30upx;
left: 50%;
top: 2.5%;
transform: translate(-50%);
}
.scroll-content {
position: relative;
height: 15px;
transition: top 0.5s;
color: #FF4444;
font-size: 15px;
}
.scroll-content-item {
line-height: 15px;
text-align: center;
}
.btnimg {
transition: transform 0.3s ease-out;
}
.btnimg:active {
transform: scale(0.9)
}
.ifeng{
width: 160upx;
height: 120upx;
border-radius: 8upx;
.ifelit{
width: 160upx;
height: 112upx;
border-radius: 8upx;
}
}
.description{
width: 160upx;
height: 52upx;
border-radius: 60upx;
.descriptionrulo{
width: 160upx;
height: 45upx;
border-radius: 60upx;
box-shadow: 0px 0px 5px #FFFFFF inset;
}
}
.awardbtn{
width: 160upx;
height: 52upx;
border-radius: 60upx;
.awardbtnrulo{
width: 160upx;
height: 45upx;
border-radius: 60upx;
box-shadow: 0px 0px 5px #FFFFFF inset;
}
}
}
.activity {
position: relative;
top: 60upx;
// padding: 30upx;
.tagbox {
position: absolute;
left: 50%;
top: -34upx;
transform: translateX(-50%);
}
.contentbox {
width: 236upx;
height: 69upx;
position: relative;
z-index: 99;
// margin: auto;
background: linear-gradient(to bottom, #FEE76A 0%, #FBCD1C 100%);
.text {
position: absolute;
text-align: center;
color: #FFFFFF;
line-height: 69upx;
font-size: 33upx;
width: 100%;
height: 100%;
font-weight: 700;
text-shadow:
-2upx -2upx 0 #FE8834,
4upx -2upx 0 #FE8834,
-4upx 4upx 0 #FE8834,
4upx 4upx 0 #FE8834,
0upx 4upx 4upx rgba(0, 0, 0, 0.6);
}
}
.activity-friend {
padding: 80upx 30upx 0;
background-color: #FFFFFF;
border-radius: 30upx;
}
.activity-content {
border-radius: 30upx;
width: 100%;
height: 490upx;
background-color: #FFFFFF;
margin: auto;
overflow: auto;
.storeList {
position: relative;
transition: top 0.5s;
overflow: auto;
margin: 0upx 10upx 0upx;
padding: 80upx 20upx 20upx;
.storeList-item {
padding: 20upx;
margin-right: 20upx;
box-shadow: 1upx 1upx 12upx 1upx #CCCCCC;
}
}
}
}
// .bgcs{
// background: url(../../../static/images/cjbj.png);
// width: 100vw;
// height: 100vh;
// }
}
.rulebox {
background: #FFFFFF;
padding: 20upx;
width: 75vw;
height: 80vh;
overflow: hidden;
border-radius: 20upx;
}
.imgs-box {
width: 500upx;
height: 500upx;
border-radius: 20upx;
}
.zjbj {
// background-image: url(../../../static/images/xxhg3.png);
// background-size: 100% 100%;
// padding: 54upx;
border-radius: 10upx;
width: 85vw;
height: 870upx;
position: relative;
.zjbox {
position: absolute;
left: 50%;
top: 24%;
transform: translate(-50%);
}
.closeBtn {
font-size: 28upx;
height: 40upx;
width: 40upx;
border-radius: 60upx;
background-color: rgba(0, 0, 0, 0.8);
color: #A8A2B2;
line-height: 40upx;
position: absolute;
right: 0upx;
top: 0upx;
}
.contenttitle {
// width: 236upx;
// height: 69upx;
// position: relative;
z-index: 99;
// margin: auto;
// background: linear-gradient(to bottom, #FEE76A 0%, #FBCD1C 100%);
padding-bottom: 30upx;
margin-bottom: 30upx;
border-bottom: 1upx dotted #CCCCCC;
.text {
text-align: center;
color: #ffffff;
line-height: 69upx;
font-size: 40upx;
font-weight: 700;
text-shadow:
-2upx -2upx 0 #ff4444,
4upx -2upx 0 #ff4444,
-4upx 4upx 0 #ff4444,
4upx 4upx 0 #ff4444,
0upx 4upx 4upx rgba(0, 0, 0, 0.6);
}
}
}
</style>