123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422 |
- // pages/pandaBonus/pandaBonus.js
- const app = getApp();
- const getReq = require('./../../config.js').getReq;
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- openAnimation: true, // 点击开红包
- activityType: '', // 1 活动未开始
- renderCount: [],
- bonus_state: '',
- mine_bonus: '',
- reveive_info: '',
- binded_info: [], // 领取列表
- msg: '',
- mineid: '',
- type_sn: '',
- message_flag: false,
- input_msg: '',
- result_msg: '留言',
- summarys: false,
- userInfo: null,
- options: ''
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function (options) {
- let self = this
- this.setData({
- options
- })
- app.userInfoReadyCallback = res => {
- if (app.globalData.userInfo) {
- self.init(options)
- self.setData({
- userInfo: app.globalData.userInfo
- })
- }
- }
- if (app.globalData.userInfo) {
- self.init(options)
- self.setData({
- userInfo: app.globalData.userInfo
- })
- }
- },
- getAuth(e) {
- let { userInfo } = e.detail
- if (userInfo) {
- this.init(this.data.options)
- this.setData({
- userInfo
- })
- }
- },
- init(options) {
- let self = this
- let { type_sn, relay_id = '' } = options
- let params = {
- act: 'bonusex',
- op: 'open',
- type_sn
- }
- self.getDatas(params)
- self.setData({
- type_sn,
- relay_id
- })
- },
- detail() {
- let params = {
- act: 'bonusex',
- op: 'detail',
- type_sn: this.data.type_sn
- }
- this.getDatas(params)
- },
- grab() {
- let params = {
- act: 'bonusex',
- op: 'grab',
- type_sn: this.data.type_sn
- }
- this.getDatas(params)
- },
- getDatas(params) {
- let self = this
- getReq(params, function (res) {
- if (res.code == 200) {
- let { type_info, bonus_state } = res.datas
- if (bonus_state == 'unstart') {
- // bonus_state: unstart 活动未开始
- let { send_start_date } = type_info
- self.countTime(params, send_start_date)
- self.setData({
- bonus_state
- })
- return
- }
- else if (bonus_state == 'open') {
- // open 活动开始, 可以点击, 红包金额有 固定, 随机
- self.setData({
- type_info,
- bonus_state
- })
- return
- }
- else if (bonus_state == 'detail') {
- // 已点开状态, 详情
- let { avatars, mine_bonus, mineid, summarys } = res.datas
- let { sender_id, relayer_id } = type_info
- let sender_head_src = self.senderHead(relayer_id, sender_id, avatars)
- let reveive_info = self.receiveInfo(type_info) // 展示领取信息
- if (summarys) {
- summarys = summarys.map(item => {
- item['goods_lowest_price'] = parseFloat(item['goods_lowest_price'])
- item['goods_price'] = parseFloat(item['goods_price'])
- return item
- })
- }
- //领取列表
- let binded_info = []
- if (res.datas['binded_info']) {
- binded_info = self.getBindedInfo(res.datas['binded_info'], avatars, type_info)
- }
- if (mine_bonus) {
- mine_bonus['bonus_value'] = parseInt(mine_bonus['bonus_value'] * 100 + 0.5) / 100
- }
- self.setData({
- sender_head_src,
- type_info,
- bonus_state,
- mine_bonus,
- reveive_info,
- binded_info,
- mineid: mineid.toString(),
- summarys
- })
- return
- }
- else if (bonus_state == 'over') {
- let { msg } = res.datas
- self.setData({
- msg,
- bonus_state
- })
- return
- }
- else if (bonus_state == 'end') {
- self.setData({
- type_info,
- bonus_state
- })
- return
- }
- else {
- wx.showModal({
- confirmText: '重试',
- content: '网络错误',
- success: function (res) {
- if (res.confirm) {
- wx.reLaunch({
- url: "/pages/index/index"
- })
- } else if (res.cancel) {
- console.log('用户点击取消')
- }
- }
- })
- }
- }
- });
- },
- getBindedInfo(binded_info, avatars, type_info) {
- let self = this
- return binded_info.map(item => {
- if (avatars[item['user_id']]) {
- let avatarItem = avatars[item['user_id']]
- item['avatar'] = avatarItem['avatar']
- let discount = parseInt(avatarItem['discount'] * 100 + 0.5)
- if (discount != 0) {
- discount = discount / 100
- }
- item['discount'] = discount
- }
- else {
- item['avatar'] = '../../image/bonus/female.png'
- item['discount'] = 0
- }
- item['is_king'] = self.isKing(type_info, item['bonus_value'])
- item['format_time'] = self.formatTime(item['get_time'])
- item['bonus_value'] = parseInt(item['bonus_value'] * 100 + 0.5) / 100
- return item
- })
- },
- // 判断手气最佳
- isKing(type_info, bonus_value) {
- let { total_num, binded_num, send_type, max_amount } = type_info
- if (send_type != 1) return false;
- if (parseInt(total_num) != parseInt(binded_num)) return false;
- if (parseInt(max_amount * 100) != parseInt(bonus_value * 100)) return false;
- return true
- },
- formatTime(time) {
- let d = new Date(time * 1000)
- let month = this.zero(d.getMonth() + 1)
- let date = this.zero(d.getDate())
- let h = this.zero(d.getHours())
- let m = this.zero(d.getMinutes())
- return `${month}-${date} ${h}:${m}`
- },
- senderHead(relayer_id, sender_id, avatars) {
- let sender_head_src = '../../image/bonus/female.png'
- if (relayer_id > 0) {
- sender_head_src = avatars[relayer_id]['avatar']
- }
- else if (sender_id > 0) {
- sender_head_src = avatars[sender_id]['avatar']
- }
- return sender_head_src
- },
- receiveInfo(type_info) {
- let { total_num, binded_num } = type_info
- if (total_num == binded_num) {
- // 红包领完了
- let timestr = `${total_num}个红包,${this.bindedTime(type_info['binded_period'])}`
- return timestr
- }
- else {
- let timestr = `领取 ${binded_num}/${total_num}`
- let isEndTime = this.isEnd(type_info['send_end_date'])
- if (isEndTime == false) {
- timestr += ',点击右上角继续分享此红包'
- }
- return timestr
- }
- },
- isEnd(send_end_date) {
- let sendDate = parseInt(send_end_date)
- if (sendDate === 0) {
- return false
- }
- else {
- return new Date().getTime >= sendDate * 1000
- }
- },
- bindedTime(period) {
- let min = 60
- let hour = 3600
- let day = 24 * 3600
- let days = parseInt(period / day)
- period = period % day
- let hours = parseInt(period / hour)
- period = period % hour
- let mins = parseInt(period / min)
- period = period % min
- if (period > 0) {
- mins += 1
- }
- let timestr = ''
- if (days > 0) {
- timestr += `${days}天`
- }
- if (hours > 0) {
- timestr += `${hours}小时`
- }
- if (mins > 0) {
- timestr += `${mins}分钟`
- }
- timestr += ',领完'
- return timestr
- },
- countTime(params, send_start_date) {
- let times = parseInt(send_start_date - new Date().getTime() / 1000)
- if (times <= 0) {
- this.getDatas(params) // 活动时间到了,重新请求
- return
- }
- let h = Math.floor(times / 3600)
- h = this.zero(h)
- let m = Math.floor((times / 60) % 60)
- m = this.zero(m)
- let s = times % 60
- s = this.zero(s)
- let renderCount = [h.split(''), m.split(''), s.split('')]
- this.setData({
- renderCount
- })
- setTimeout(() => {
- this.countTime(send_start_date)
- }, 1000);
- },
- zero(n) {
- n = n >= 10 ? n.toString() : '0' + n
- return n
- },
- open() {
- this.setData({
- openAnimation: false
- })
- this.grab()
- },
- bindKeyInput(e) {
- let value = e.detail.value
- this.setData({
- input_msg: value
- })
- },
- message_tap(e) {
- let { flag } = e.currentTarget.dataset
- this.setData({
- message_flag: flag
- })
- },
- send_msg() {
- let self = this
- let result_msg = this.trim(this.data.input_msg)
- if (!result_msg) return;
- let params = {
- act: 'bonusex',
- op: 'comment',
- comment: result_msg,
- bonus_sn: this.data.mine_bonus['bonus_sn']
- }
- getReq(params, function (res) {
- if (res.code == 200) {
- self.setData({
- message_flag: false,
- result_msg
- })
- }
- else {
- wx.showToast({
- icon: 'none',
- title: 'error',
- duration: 2000
- })
- self.setData({
- message_flag: false,
- input_msg: ''
- })
- }
- }, 'POST')
- },
- trim(str) {
- str = str.replace(/\s+/g, "")
- return str
- },
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady: function () {
- },
- /**
- * 生命周期函数--监听页面显示
- */
- onShow: function () {
- },
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide: function () {
- },
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload: function () {
- },
- /**
- * 页面相关事件处理函数--监听用户下拉动作
- */
- onPullDownRefresh: function () {
- },
- /**
- * 页面上拉触底事件的处理函数
- */
- onReachBottom: function () {
- },
- /**
- * 用户点击右上角分享
- */
- onShareAppMessage: function () {
- let imageUrl = '../../image/share_bonus.png'
- let { type_sn, relay_id } = this.data
- return {
- title: `点一下,你和TA都有红包!`,
- path: `/pages/shareBonus/shareBonus?type_sn=${type_sn}&relay_id=${relay_id}`,
- imageUrl: imageUrl
- }
- }
- })
|