123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958 |
- function Point (x, y) {
- this.x = x
- this.y = y
- }
- function Map (w, h) {
- this.width = w
- this.height = h
- }
- // 画布中生成随机不重叠的坐标
- // 坐标点以左上角为中心
- function RandomCoordinate (conf) {
- conf = conf || {}
- this.el = conf.el || '' // 画布选择器或者dom
- this.pointSize = conf.pointSize || new Map(1, 1) // 坐标点半径(最大)
- this.total = conf.total || 1 // 生成多少个随机不重叠坐标
- this.pointCoordList = [] // 生成坐标点数组
- this.init = function () {
- if (!this.el) return console.warn('画布选择器必传')
- // 获取画布宽高
- this.map = this.getMapSize()
- this.getPointCoordLimits()
- this.create()
- }
- this.getMapSize = function () {
- this.$el = $(this.el)
- var w = this.$el.width()
- var h = this.$el.height()
- return new Map(w, h)
- }
- this.getPointCoordLimits = function () {
- var xMax = this.map.width - this.pointSize.width
- var yMax = this.map.height - this.pointSize.height
- if (xMax <= 0) {
- xMax = 1
- }
- if (yMax <= 0) {
- yMax = 1
- }
- this.coordLimits = new Point(xMax, yMax)
- }
- // this.check
- // 检查是否和已创建的有重叠
- this.checkListOverlap = function (p) {
- if (this.pointCoordList.length <= 0) return true
- var pass = true // pass,所有都不重叠
- for (var i = 0; i < this.pointCoordList.length; i++) {
- var overlap = this.checkOverlap(p, this.pointCoordList[i])
- if (overlap) {
- pass = false
- break
- }
- }
- return pass
- },
- // point为矩形左上的碰撞检测:碰撞返回true
- // 利用两圆相切,圆心距离小于2r表示两圆相交(r圆半径)。把矩形对角线看作圆的直径
- // 如果两个矩形左上角的点间距离大于矩形对角线长度,则认为两矩形无碰撞(无重叠)
- // 参考:https://segmentfault.com/a/1190000017463616
- this.checkOverlap = function (nPoint, oPoint) {
- // 两矩形左上角坐标距离(三角函数)
- // https://www.qttc.net/171-javascript-get-two-points-distance.html
- var dx = Math.abs(nPoint.x - oPoint.x)
- var dy = Math.abs(nPoint.y - oPoint.y)
- var distance = Math.sqrt(dx * dx + dy * dy)
- // 矩形对角线长度
- var w = this.pointSize.width
- var h = this.pointSize.height
- var diagonal = Math.sqrt(w * w + h * h)
- return distance <= diagonal
- }
- // 创建一个坐标
- this.createOne = function () {
- var createTimes = 0
- var createFailTimes = 0
- var maxCreateFailTime = 200
- var x,y
- while (createFailTimes < maxCreateFailTime) {
- createTimes++
- x = Math.floor(Math.random() * this.coordLimits.x)
- y = Math.floor(Math.random() * this.coordLimits.y)
- var point = new Point(x, y)
- var pass = this.checkListOverlap(point)
- if (pass) {
- this.pointCoordList.push(point)
- break
- } else {
- createFailTimes++
- }
- }
- if (createFailTimes >= maxCreateFailTime) {
- console.log('随机生成坐标%s次失败,停止随机生成', maxCreateFailTime)
- } else {
- console.log('随机生成坐标次数:%s,\n随机生成坐标失败次数:%s\n获得坐标:', createTimes, createFailTimes, JSON.stringify(point))
- }
- }
- this.create = function () {
- for (var i = 0; i < this.total; i++) {
- this.createOne()
- }
- this.pointCoordList = this.pointCoordList.sort(function (a, b) {
- return a.x - b.x
- })
- }
- this.init()
- }
- // 判断活动是否结束
- var initPageTime = new Date().getTime()
- var initActiveOverCheck = -1
- function activeOverCheck (endTime, callback) {
- if (initPageTime >= endTime) {
- return callback()
- }
- clearTimeout(initActiveOverCheck)
- var reloadTime = endTime - new Date().getTime()
- if (reloadTime <= (10 * 60 * 1000) ) {
- initActiveOverCheck = setTimeout(function () {
- callback && callback()
- }, reloadTime)
- }
- }
- // toast上限提示
- function toastFn (text, duration) {
- if (!duration) {
- duration = 1000
- }
- var _html = ""
- _html+='<div class="custom-toast"><div class="mask" style="background-color: transparent;"></div><div class="toast-container">'
- _html+='<span>' + text + '</span></div></div>'
- $('body').append(_html)
- setTimeout(function(){
- $(".custom-toast").fadeOut().remove();
- },duration)
- }
- // 展示弹窗
- function showDialogOfType (type) {
- $('#active-tip-modal').attr('data-modal-type', 'success').modal('show')
- $('#active-tip-modal').attr('data-modal-type', 'over').modal('show')
- $('#active-tip-modal').attr('data-modal-type', 'code').modal('show')
- var modal = $('#active-tip-modal')
- modal.attr('data-modal-type', type).modal('show')
- if (type === 'over') {
- modal.off('click')
- } else {
- modal.off('click').on('click', function () {
- modal.modal('hide')
- })
- }
- }
- // 固定事件
- $(function () {
- // 弹窗按钮事件
- $('#dialog-button--over').on('click', function () {
- window.open('/swordfish/frontPage/share/sess/index')
- })
- $('#dialog-button--success').on('click', function () {})
- })
- var task = new Vue({
- el: '#main-app',
- delimiters: ['${', '}'],
- data: {
- conf: {
- before: 0, // 单位: s
- clock: '10:00:00',
- end: 0, // 单位: s
- now: 0, // 单位: s
- start: 0 // 单位: s
- },
- activeState: '',
- lastTimestamp: 0, // 单位: ms
- yureConf: {
- total: 0,
- got: false
- },
- yureInfo: {
- timerId: null,
- tipText: '',
- buttonText: '点击免费领',
- buttonDisabled: false
- },
- couponList: [],
- progress: {
- min: 0,
- max: 1500,
- current: 0, // 当前剑鱼币
- pointImgMap: {
- unreceived: '/frontRouter/pc/activity/image/unreceived@2x.png',
- received: '/frontRouter/pc/activity/image/received@2x.png',
- wait: '/frontRouter/pc/activity/image/received@2x.png'
- },
- anchorList: [
- {
- id: '',
- className: 'first',
- rate: 0, // 进度,单位%,最大为100
- pointImg: '', // ''/unreceived/received
- anchorText: '0剑鱼币'
- },
- {
- id: '800',
- className: 'unreceived',
- rate: 80,
- pointImg: 'unreceived',
- anchorText: '800剑鱼币',
- tipText: '1个月超级订阅'
- },
- {
- id: '1500',
- className: 'unreceived',
- rate: 100,
- pointImg: 'unreceived',
- anchorText: '1500剑鱼币',
- tipText: '1个月超级订阅'
- }
- ],
- },
- // 任务球
- missionsList: [
- {
- id: 'buyvip',
- className: '',
- x: 190,
- y: 120,
- num: 800,
- unit: '剑鱼币',
- complete: false,
- hide: true,
- name: '购买超级订阅' // 任务描述
- },
- {
- id: 'invite',
- className: 'delay-100',
- x: 380,
- y: 0,
- num: 500,
- unit: '剑鱼币',
- complete: false,
- hide: true,
- name: '邀请领好礼'
- },
- {
- id: 'share',
- className: 'delay-300',
- x: 900,
- y: 80,
- num: 200,
- unit: '剑鱼币',
- complete: false,
- hide: true,
- name: '分享活动'
- }
- ],
- copyLinkText: location.href,
- rewardList: [],
- dialog: {
- myReward: false
- },
- rulesList: [
- {
- text: '活动时间:预热期:7.25-7.31 、活动期:8.1-8.14。'
- },
- {
- text: '预热福利:预热期内用户每天10点开始领取,每天限量500份,每天0点数量更新,每人仅限领取一次,数量有限,先到先得。'
- },
- {
- text: '福利一:官方补贴限时抢 购买超级订阅立减:活动期间内新购、续费、升级用户均可参加,通过活动页领取优惠券后购买超级订阅可享受满减,不同额度优惠券一人仅限领取1张,优惠券仅限领取后活动期内使用,过期无效。'
- },
- {
- text: '福利二:做任务 得2个月超级订阅:活动期内,用户分别完成各任务即可获得相对应的剑鱼币,达到1000剑鱼币领1个月超级订阅,达到1500剑鱼币领1个月超级订阅,领取后在原有购买时间上延长所领取奖励的时长,在订单支付期间,完成【购买超级订阅】可获得800剑鱼币,用户新购、续费、升级皆可获得剑鱼币奖励,完成【邀请领好礼】可获得500剑鱼币,完成【分享活动】可获得200剑鱼币;完成购买超级订阅、邀请领好礼、分享活动三个任务且活动页剑鱼币累计达到1000剑鱼币或1500剑鱼币即可领取超级订阅,累计可领2个月,通过其他形式获取的剑鱼币将不作为领取奖励的依据,领取后在【我的奖励】中查看。'
- },
- {
- text: '福利三:大会员最高立减7999元 送6个月使用时长:活动期内商机版2.0最高立减3199元,购买赠送6个月使用时长,专家版2.0最高立减7999元,购买赠送6个月使用时长,点击【了解更多】可详细了解大会员服务内容,详情请致电咨询:400-108-6670,线下购买享优惠。'
- },
- {
- text: '本次活动不支持作弊行为,涉嫌违法、违规参与活动的用户,剑鱼标讯将有权取消您的活动参与资格,并回收已获得的相关奖励,由于不可抗力因素等情况导致活动异常,剑鱼标讯将有权采取调整等措施。'
- },
- {
- text: '法律许可范围内本次活动解释权归北京剑鱼信息技术有限公司所有。'
- }
- ]
- },
- computed: {
- rate: function () {
- var calcRate = (this.progress.current / this.progress.max) * 100
- if (calcRate > 100) {
- calcRate = 100
- }
- if (calcRate < 0) {
- calcRate = 0
- }
- return calcRate
- },
- blinkTextShow: function () {
- var anchorList = this.progress.anchorList
- var rate = this.rate
- var exist = false
- for (var i = 0; i < anchorList.length; i++) {
- if (rate === anchorList[i].rate) {
- exist = true
- break
- }
- }
- return !exist
- },
- progressAnchorList: function () {
- return this.progress.anchorList
- },
- lastTimeText: function () {
- if (this.lastTimestamp > 0) {
- var lastTimeConf = this.calcLastTimeDiff(this.lastTimestamp)
- var days = lastTimeConf.days
- var hours = lastTimeConf.hours
- var minutes = lastTimeConf.minutes
- var seconds = lastTimeConf.seconds
- var hms = [this.add0(hours), this.add0(minutes), this.add0(seconds)].join(':')
- if (days > 0) {
- return days + '天 ' + hms
- } else {
- return hms
- }
- // return days + '天 ' + hms
- } else {
- return ''
- }
- },
- yureSectionShow: function () {
- return this.activeState === 'waiting' || this.activeState === 'yureing'
- },
- yureButtonShow: function () {
- var lastTimeConf = this.calcLastTimeDiff(this.lastTimestamp)
- var days = lastTimeConf.days
- if (this.yureInfo.buttonText) {
- return !(days < 1 && this.yureConf.total <= 0)
- } else {
- return false
- }
- }
- },
- created: function () {
- this.ajaxActiveStatus()
- this.ajaxProgress()
- this.ajaxList()
- },
- mounted: function () {
- // this.calcPointList()
- this.stickyTopEvents()
- },
- methods: {
- add0: function (t) {
- return t < 10 ? ('0' + t) : t
- },
- ajaxActiveStatus: function () {
- var _this = this
- $.ajax({
- url: '/jyActivity/membershipDay/period',
- type: 'post',
- success: function (res) {
- if (res.data) {
- for (var key in _this.conf) {
- _this.conf[key] = res.data[key]
- }
- if (Math.abs(initPageTime - res.data.now * 1000) > 5000) {
- initPageTime = res.data.now
- }
- activeOverCheck(res.data.end * 1000, function () {
- showDialogOfType('over')
- })
- _this.initPageState()
- }
- },
- complete: function () {
- _this.getYuReCouponCount()
- _this.getFuLi2CouponList()
- }
- })
- },
- initPageState: function () {
- var state = this.checkActiveState()
- var yureTextDOM = $('.timeline-item.yure .t-r-b-r')
- if (state === 'yureing') {
- this.startTopTimer()
- yureTextDOM.text('进行中')
- } else {
- yureTextDOM.text('已结束')
- if (state === 'activating') {
- // 活动进行中
- } else {
- }
- }
- },
- // 检查状态
- checkActiveState: function (now) {
- if (!now) {
- now = Date.now()
- }
- var before = this.conf.before * 1000
- var start = this.conf.start * 1000
- var end = this.conf.end * 1000
- var stateArr = ['waiting', 'yureing', 'activating', 'ended']
- var state = 'waiting'
- if (now < before) {
- state = stateArr[0] // 预热未开始
- } else if (before <= now && now < start) {
- state = stateArr[1] // 预热中
- } else if (start <= now && now < end) {
- state = stateArr[2] // 活动进行中
- } else {
- state = stateArr[3] // 活动已结束
- }
- this.activeState = state
- return state
- },
- // type=yure判断预热是否开始
- // type=active 判断活动是否开始
- activeNotStartToast: function (type) {
- var state = this.checkActiveState()
- type = type || 'active'
- if (state === 'ended') {
- toastFn('活动已结束')
- } else if (state === 'waiting') {
- toastFn('活动尚未开始,敬请期待')
- } else {
- if (type === 'yure') {
- if (state === 'activating') {
- // 预热已结束
- toastFn('预热已结束')
- }
- } else {
- if (state === 'yureing') {
- toastFn('活动尚未开始,敬请期待')
- }
- }
- }
- },
- startTopTimer: function () {
- var _this = this
- var start = this.conf.start * 1000
- var timerId = setInterval(function () {
- var current = Date.now()
- if (_this.lastTimestamp < 0) {
- clearInterval(timerId)
- }
- _this.lastTimestamp = start - current
- }, 1000)
- },
- calcYuReText: function () {
- var _this = this
- var buttonText = ''
- var tipText = ''
- var buttonDisabled = true
- if (this.yureInfo.timerId) {
- clearInterval(this.yureInfo.timerId)
- }
- if (this.activeState === 'yureing') {
- // 当天时间
- var todayString = new Date().pattern('yyyy/MM/dd')
- // 当领券开始时间
- var yureCouponStartTime = [todayString, this.conf.clock].join(' ')
- var yureCouponStartStamp = +new Date(yureCouponStartTime)
- // 计算倒计时
- var diff = yureCouponStartStamp - Date.now()
- if (diff > 0) {
- // 预热当天未开始抢券
- buttonDisabled = true
- buttonText = '今日10点开抢'
- // 创建定时器刷新倒计时
- this.yureInfo.timerId = setInterval(function () {
- var d = yureCouponStartStamp - Date.now()
- var obj = _this.calcLastTimeDiff(d)
- if (d <= 0) {
- clearInterval(_this.yureInfo.timerId)
- _this.calcYuReText()
- } else {
- // 计算倒计时
- tipText = [_this.add0(obj.hours), _this.add0(obj.minutes), _this.add0(obj.seconds)].join(':')
- _this.yureInfo.tipText = tipText
- }
- }, 1000)
- } else {
- if (this.yureConf.got) {
- // 已领取过
- buttonDisabled = false
- buttonText = '去查看'
- tipText = '已领取成功'
- } else {
- buttonDisabled = this.yureConf.total <= 0
- // 券是否有剩余
- if (this.yureConf.total > 0) {
- buttonText = '点击免费领'
- tipText = '今日还剩<span class="num">' + this.yureConf.total + '</span>份'
- } else {
- // 今日券领完了
- buttonText = '今天已抢完'
- tipText = '今天已经抢完啦~明天再来吧'
- }
- }
- }
- } else {
- // 预热未开始或者预热结束
- }
- this.yureInfo.buttonDisabled = buttonDisabled
- this.yureInfo.buttonText = buttonText
- this.yureInfo.tipText = tipText
- },
- calcLastTimeDiff: function (timestamp) {
- var diff = moment.duration(Math.abs(timestamp))
- var days = diff.days()
- var hours = diff.hours()
- var minutes = diff.minutes()
- var seconds = diff.seconds()
- return {
- days: days,
- hours: hours,
- minutes: minutes,
- seconds: seconds
- }
- },
- // 预热优惠券数量查询
- getYuReCouponCount: function () {
- var _this = this
- $.ajax({
- url: '/jyActivity/membershipDay/getDailyBoonDetail',
- type: 'post',
- success: function (res) {
- if (res.data) {
- _this.yureConf.got = res.data.got || false
- _this.yureConf.total = res.data.total || 0
- _this.calcYuReText()
- }
- }
- })
- },
- receiveYuReCoupon: function () {
- if (this.yureInfo.buttonDisabled) {
- toastFn('活动尚未开始,敬请期待')
- } else if (this.yureInfo.buttonText === '去查看') {
- // 领过了
- this.toBuyVip()
- } else {
- // 没领过
- this.receiveYuReCouponAjax()
- }
- },
- // 领取预热优惠券
- receiveYuReCouponAjax: function () {
- var _this = this
- $.ajax({
- url: '/jyActivity/membershipDay/getDailyBoonSVip',
- type: 'post',
- success: function (res) {
- if (res.data) {
- _this.getYuReCouponCount()
- // 刷新我的奖励列表
- _this.ajaxList()
- }
- }
- })
- },
- receiveActiveButtonText: function (item) {
- if (item.IsReceive) {
- return '立即领取'
- } else {
- if (item.IsUser) {
- return '去使用'
- } else {
- return '已使用'
- }
- }
- },
- receiveActiveCoupon: function (coupons) {
- if (this.activeState !== 'activating') {
- return this.activeNotStartToast()
- }
- if (coupons.length === 0) return
- if (coupons.length === 1) {
- var item = coupons[0]
- if (!item.IsReceive && item.IsUser) {
- return this.toBuyVip()
- }
- }
- var idArr = []
- coupons.forEach(function (item) {
- if (item.IsReceive) {
- idArr.push(item.LotteryIdStr)
- }
- })
- this.receiveActiveCouponAjax(idArr)
- },
- // 领取活动优惠券
- receiveActiveCouponAjax: function (ids) {
- if (ids.length === 0) return
- var _this = this
- $.ajax({
- url: '/jyActivity/membershipDay/getLottery',
- type: 'post',
- contentType: 'application/json',
- data: JSON.stringify({
- lotteryIds: ids.join(',')
- }),
- success: function (res) {
- if (res.data) {
- _this.couponList.forEach(function (item) {
- if (ids.indexOf(item.LotteryIdStr) !== -1) {
- item.IsReceive = false
- }
- })
- // 刷新我的奖励列表
- _this.ajaxList()
- }
- }
- })
- },
- addTipText: function (list) {
- var prefix = '超级订阅'
- var priceArr = [
- {
- price: 38,
- text: '1个月+1个省'
- },
- {
- price: 99,
- text: '1个季+1个省'
- },
- {
- price: 380,
- text: '1年+1个省'
- },
- {
- price: 599,
- text: '1个月+全国'
- },
- ]
- var arr = list.sort(function (a, b) {
- return a.Reduce - b.Reduce
- })
- list.forEach(function (item) {
- var reduce = item.Reduce
- var full = item.Full
- for (var i = 0; i < priceArr.length; i++) {
- if (priceArr[i].price - full >= 0) {
- var pay = priceArr[i].price - reduce
- item.tipText = prefix + priceArr[i].text + ':券后' + pay + '元'
- break
- }
- }
- })
- return arr
- },
- // 获取福利2优惠券列表
- getFuLi2CouponList: function () {
- var _this = this
- $.ajax({
- url: '/jyActivity/membershipDay/lotteryList',
- type: 'post',
- success: function (res) {
- if (res.data) {
- _this.couponList = _this.addTipText(res.data) || []
- // 刷新我的奖励列表
- _this.ajaxList()
- }
- }
- })
- },
- calcPointList: function () {
- var dom = this.$refs.missions
- window.points = new RandomCoordinate({
- el: dom,
- total: this.missionsList.length,
- pointSize: new Map(142, 160)
- })
- var pointList = points.pointCoordList
- for (var i = 0; i < this.missionsList.length; i++) {
- this.missionsList[i].x = pointList[i].x
- this.missionsList[i].y = pointList[i].y
- }
- },
- leaveCanvas: function (item) {
- var dom = $('.mission-list-item.' + item.id)
- dom.removeClass('floating')
- var baseX = 84
- var baseY = 34
- // 终点坐标
- var current = {
- x: baseX + 1000 * this.rate / 100,
- y: baseY + $('.mission-list').height() - $('.blink-point').height() / 2
- }
- item.x = current.x
- item.y = current.y
- this.$nextTick(function () {
- dom.addClass('exit')
- })
- },
- onClickListItem: function (item) {
- if (item.icon === 'jy-svip') {
- window.open('/front/swordfish/toMyOrder')
- } else if (item.icon === 'jy-coin') {
- window.open('/swordfish/integral/index/detail')
- } else {
- // 跳转我的奖券
- window.open('/swordfish/coupon/')
- // this.toBuyVip()
- }
- },
- onClickReceive: function (type, item) {
- if (this.activeState !== 'activating') return toastFn('活动尚未开始,敬请期待')
- if (item.className === 'received') return
- var status = false
- if (type === 'schedule') {
- if (item.className === 'wait') {
- status = true
- } else {
- var text = '尚未达到领取条件,无法领取'
- switch (item.id) {
- // 800
- case this.progressAnchorList[1].id: {
- text = '尚未达到'+ this.progressAnchorList[1].id +'剑鱼币,无法领取'
- break
- }
- // 1500
- case this.progressAnchorList[2].id: {
- text = '尚未达到'+ this.progressAnchorList[2].id +'剑鱼币,无法领取'
- break
- }
- }
- return toastFn(text, 1500)
- }
- } else if (type === 'mission' && item.complete) {
- status = true
- }
- if (!status) {
- var _this = this
- switch (item.id) {
- case 'buyvip': {
- this.toBuyVip()
- break
- }
- case 'invite': {
- window.open('/swordfish/frontPage/share/sess/index')
- break
- }
- case 'share': {
- // 分享
- _this.scrollTo('.copy-share-container')
- break
- }
- }
- return
- }
- var _this = this
- if (type === 'mission') {
- this.leaveCanvas(item)
- }
- this.ajaxReceive({ type: type, value: item.id }, function (result, msg) {
- if (result) {
- switch (item.id) {
- case 'buyvip':
- case 'invite':
- case 'share': {
- toastFn('已成功领取' + item.num + '剑鱼币', 1500)
- break
- }
- case '800': {
- $('.active-tip--success .text-give-day').text('7天')
- showDialogOfType('success')
- break
- }
- case '1500': {
- $('.active-tip--success .text-give-day').text('1个月')
- showDialogOfType('success')
- break
- }
- }
- _this.ajaxActiveStatus()
- _this.ajaxProgress()
- _this.ajaxList()
- } else {
- toastFn(msg, 1500)
- }
- })
- },
- ajaxReceive: function (data, callback) {
- var _this = this
- $.ajax({
- url: '/jyActivity/membershipDay/receive',
- type: 'post',
- contentType: 'application/json',
- data: JSON.stringify(data),
- success: function (res) {
- callback(res.data, res.error_msg)
- // 刷新我的奖励列表
- _this.ajaxList()
- }
- })
- },
- ajaxProgress: function () {
- var _this = this
- $.ajax({
- url: '/jyActivity/membershipDay/schedule',
- type: 'post',
- success: function (res) {
- if (res.error_code === 0 && res.data) {
- _this.progress.current = res.data.nowNum
- _this.missionsList[0].complete = res.data.missions.buyvip !== 0
- _this.missionsList[1].complete = res.data.missions.invite !== 0
- _this.missionsList[2].complete = res.data.missions.share !== 0
- _this.missionsList[0].hide = res.data.missions.buyvip === -1
- _this.missionsList[1].hide = res.data.missions.invite === -1
- _this.missionsList[2].hide = res.data.missions.share === -1
- var anchorStatus = {
- 1: 'wait',
- 0: 'unreceived',
- '-1': 'received',
- }
- var imgStatus = {
- 1: 'unreceived',
- 0: 'unreceived',
- '-1': 'received',
- }
- _this.progress.anchorList[1].className = anchorStatus[res.data.schedule['800']]
- _this.progress.anchorList[2].className = anchorStatus[res.data.schedule['1500']]
- _this.progress.anchorList[1].pointImg = imgStatus[res.data.schedule['800']]
- _this.progress.anchorList[2].pointImg = imgStatus[res.data.schedule['1500']]
- }
- }
- })
- },
- ajaxList: function () {
- var _this = this
- $.ajax({
- url: '/jyActivity/myAward/awardlist',
- type: 'post',
- contentType: 'application/json',
- data: JSON.stringify({
- code: 'membershipDay',
- pageSize: 10,
- pageNum: 0
- }),
- success: function (res) {
- if (res.error_code === 0 && res.data) {
- if (res.data.list && typeof res.data.list.map === 'function') {
- _this.rewardList = res.data.list.map(function (v) {
- var icon = ''
- if (v.award.indexOf('剑鱼币') > -1) {
- icon = 'jy-coin'
- } else if (v.award.indexOf('订阅') > -1) {
- icon = 'jy-svip'
- } else {
- icon = 'jy-coupon'
- }
- return {
- id: v._id,
- icon: icon,
- rewardText: v.award,
- receiveTime: new Date(v.date * 1000).pattern('yyyy-MM-dd HH:mm:ss'),
- receiveFrom: v.getway
- }
- })
- }
- }
- }
- })
- },
- receiveFuli3: function () {
- if (this.activeState !== 'activating') {
- return this.activeNotStartToast()
- }
- vm.isNeedSubmit('super_membership_day',function(){
- vm.showSuccess = true
- })
- },
- doCopy: function () {
- if (this.activeState === 'activating') {
- var _this = this
- $.ajax({
- url: '/jyActivity/membershipDay/doShare',
- type: 'post',
- success: function (res) {
- if (res.data) {
- _this.$toast('复制成功')
- _this.ajaxProgress()
- }
- }
- })
- } else {
- // toastFn('活动尚未开始,敬请期待')
- this.activeNotStartToast()
- }
- this.copyText('快来和我一起参与吧!剑鱼超级会员节,百万补贴限量抢,快速获取商机信息》\n' + this.copyLinkText)
- },
- copyText: function (text) {
- const input = document.createElement('textarea') // js创建一个input输入框
- input.value = text // 将需要复制的文本赋值到创建的input输入框中
- document.body.appendChild(input) // 将输入框暂时创建到实例里面
- input.select() // 选中输入框中的内容
- document.execCommand('copy') // 执行复制操作
- document.body.removeChild(input) // 最后删除实例中临时创建的input输入框,完成复制操作
- },
- scrollTo: function (className) {
- setTimeout(function () {
- var offsetTop = $(className)[0].offsetTop - 64 * 2
- $(window).scrollTop(offsetTop)
- }, 100)
- },
- stickyTopEvents: function () {
- var _this = this
- var fixedTop = $('.fixed-top.top-timeline')
- var showHide = function () {
- var scrollTop = $(window).scrollTop()
- if (scrollTop > 600) {
- fixedTop.show()
- } else {
- fixedTop.hide()
- }
- }
- showHide()
- $(window).on('scroll', function () {
- showHide()
- })
- fixedTop.on('click', '.timeline-item', function (e) {
- $(e.currentTarget).addClass('active').siblings().removeClass('active')
- var className = $(e.currentTarget).attr('data-s-class')
- _this.scrollTo('.' + className)
- })
- },
- toMemberPage: function () {
- window.open('/big/page/index')
- },
- toBuyVip: function () {
- if (window.vipStatus > 0) {
- window.open('/swordfish/page_big_pc/free/svip/buy?type=upgrade')
- } else {
- // 去购买
- window.open('/swordfish/page_big_pc/free/svip/buy?type=buy')
- }
- }
- }
- })
|