123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- import Vue from 'vue'
- import lib from 'lib'
- import ext from 'extSdk'
- import _ from 'underscore'
- let uid = lib.getParam("uid")
- let token = lib.getParam("token")
- let upId = lib.getParam("upId")
- class scrollCode {
- constructor(code){
- this.type = [
- [0,1,2,3,4,5,6,7,8,9],
- ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],
- ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
- ]
- this.code = code
- this.codeArr = []
- this.typeArr = []
- this.init()
- }
- init(){
- let self = this
- _.each(this.code,(key)=>{
- self.typeArr.push(self.cheakCharacter(key))
- })
- }
- cheakCharacter(key){
- let reg1 = /\d/
- let reg2 = /[a-z]/
- let reg3 = /[A-Z]/
- let obj = {}
- let self = this
- if(reg1.test(key)) return 0
- if(reg2.test(key)) return 1
- if(reg3.test(key)) return 2
- }
- getRandomCharacter(index){
- let self = this
- let len = self.type[index].length
- let random = Math.floor(Math.random() * len)
- return self.type[index][random]
- }
- getRandomCode(){
- let self = this
- let arr = []
- _.each(this.typeArr,(type)=>{
- arr.push(self.getRandomCharacter(type))
- })
- return arr.join("")
- }
- }
- export default {
- methods: {
- getLotteryInfo(){
- let self = this
- let url = `${lib.upAdminDomain}/act/lotteryInfo`;
- let param = {
- uid : uid,
- upId : upId,
- token : token
- }
- $.ajax({
- type: "get",
- url: url,
- data: param,
- dataType: "jsonp",
- success: (ret) => {
- ret = lib.formatHttpProtocol(ret);
- if(ret.code==0) {
- let data = ret.data
- self.bingoUsers = data.bingoUsers
- self.reward = data.reward
- self.userRecord = data.reward.userRecord
- self.lotteryStatus = data.reward.lotteryStatus
- self.upInfo = data.upInfo
- self.lottoryId = data.reward.id
- lib.setTitle(`${data.upInfo.name}的抽奖池`)
- self.scrollTimer = window.setInterval(()=>{
- self.scrollMenu()
- },2000)
- self.initLottoryTip()
- if(data.reward.lotteryStatus==3) {
- self.scrollCodeObj = new scrollCode(data.reward.userRecord.code)
- self.changeCode()
- }
- } else {
- lib.showTip(ret.msg);
- }
- }
- });
- },
- doLottery(){
- let self = this
- let url = `${lib.upAdminDomain}/act/doLottery`;
- let param = {
- uid : uid,
- token : token,
- id : self.lottoryId
- }
- let msg = `参与成功,今日抽奖将在${self.reward.rewardHour}:00开奖,为避免您错过开奖消息,建议您开启消息栏通知提醒。`
- $.ajax({
- type: "get",
- url: url,
- data: param,
- dataType: "jsonp",
- success: (ret)=>{
- ret = lib.formatHttpProtocol(ret)
- if(ret.code==0) {
- self.getLotteryInfo()
- setTimeout(()=>{
- ext.openNotificationSettingIfNeeded(msg)
- },800)
- } else {
- lib.showTip(ret.msg)
- }
- }
- });
- },
- initLottoryTip(){
- let self = this
- let duration = ""
- //1未开始,2进行中,3,待开奖,4已结束,5没中奖,6中奖
- switch(self.lotteryStatus) {
- case 1 :
- duration = self.getDuration(1)
- self.lottoryTip = `距离抽奖还有 ${duration}`
- break;
- case 2 :
- self.lottoryTip = `今天抽奖剩余1次抽奖`
- break;
- case 3 :
- duration = self.getDuration(3)
- self.lottoryTip = `距离开奖还有 ${duration}`
- break;
- case 4 :
- case 5 :
- case 6 :
- duration = self.getDuration(4)
- self.lottoryTip = `距离下次抽奖还有 ${duration}`
- break;
- }
- },
- getDuration(type){ //1未开始,3,待开奖,4已结束
- let self = this,duration
- let now = new Date()
-
- let todayStartTime = self.reward.dayStart*1000
- let todayRewardTime = self.reward.dayReward*1000
- let TomorrowStartTime = todayStartTime+24*60*60*1000
- let nowTime = now.getTime()
- switch(type) {
- case 1 :
- duration = self.handldTime(todayStartTime-nowTime)
- break;
- case 3 :
- duration = self.handldTime(todayRewardTime-nowTime)
- break;
- case 4 :
- duration = self.handldTime(TomorrowStartTime-nowTime)
- break;
- }
- return duration
- },
- handldTime(restTime) {
- restTime = restTime / 1000
- let hour = Math.floor(restTime%(60*60*24)/(60*60))
- let min = Math.floor(restTime%(60*60*24)%(60*60)/(60))
- if(hour>0) {
- return hour+" 小时 "+min+" 分钟"
- } else {
- return min+" 分钟"
- }
- },
- parseNum(num){
- return (num >= 10 ? num : "0"+num)
- },
- changeCode(){
- let self = this
- let timeLen = 800,timeInterval=50,timeStart=0
-
- let timer = window.setInterval(()=>{
- timeStart += timeInterval
- self.scrollCode = self.scrollCodeObj.getRandomCode()
- if(timeStart>=timeLen) {
- self.scrollCode = self.userRecord.code
- clearInterval(timer)
- }
- },timeInterval)
- },
- //中奖滚动
- scrollMenu(){
- let self = this
- let $list = $(".list-menu"),$item = $(".list-menu li"),$scroll=$(".menu-scroll")
- let listHeight = $list.height(),listLen = self.bingoUsers.length
- let itemHeight = listHeight / listLen
- let viewHeight = $scroll.height()
- if(listLen <= 5) {
- clearInterval(self.scrollTimer)
- return
- }
- if(viewHeight-self.scrollHeight+10 > listHeight) {
- self.scrollHeight = 0;
- } else {
- self.scrollHeight = self.scrollHeight-itemHeight;
- }
- }
- },
- mounted () {
- let self = this
- self.getLotteryInfo()
- },
- watch: {
-
- },
- data() {
- return {
- scrollHeight : 0,
- scrollTimer : {},
- bingoUsers : [], //中奖名单
- reward : {}, //奖品
- upInfo : {}, //up主信息
- userRecord : {},
- lotteryStatus : 2, //1未开始,2进行中,3,待开奖,4已结束,5没中奖,6中奖
- lottoryTip : "",
- lottoryId : 0,
- scrollCode : '--------',
- scrollCodeObj : {}//滚动数字对象
- };
- },
- filters : {
- cutTime(value){
- return value ? value.substring(0,11) : ""
- }
- }
- };
|