coupon_news.js 9.98 KB
import util from '../../utils/util';
import App from '../../utils/api';
Page({
    data: {
		list:[],
		status:1,
        dataStr: Date.now() * 1 / 1000,
    },
	page:1,
	size:10,
	hasMore:true,
	isShow:false,
	onShow() {
		this.setData({
			list:[]
		})
		this.init();
		this.getCheckUserHavePhone();
	},
    // 检测用户是否绑定手机号
    getCheckUserHavePhone() {
        App.Wechat.CheckUserHavePhone({
            openid: getApp().openid,
        }).then((json) => {
            if (json.ret == 200) {
                let data = json.data;
                let phone = (data && data.phone) ? data.phone : '';
                this.getlist(phone)
            }
        })
    },
	getlist(phone) {
        let params = {
            openid: getApp().openid,
        }
        if(phone) params.phone = phone
        App.Activity.GetNewRechargeListByOpenid({...params}).then((res) => {
			if (res.ret == 200) {
				let list=this.data.list;
      			list=list.concat(res.data)
				if(res.data.length<this.size){
					this.hasMore=false
				}
				let date=Date.now()*1/1000;
				list.forEach(item=>{
					item.is_expire='0'
                    let etime=item.etime*1
                    if(!item.is_type) item.is_type = item.type
                    if(item.is_type == '3'){
                        item.status = '2';
                        item.is_examine = '0';
                    }else {
                        if(date<etime){
                            item.is_expire='0';
                        }else{
                            item.is_expire='1';
                        }
                    }
                    item.exp_date = item.exp_date ? util.determine(item.exp_date) : '';
                    item.arule = item.arule ? util.determine(item.arule) : '';
                    item.use = item.use ? util.determine(item.use) : '';
                    item.aexpiration = item.aexpiration ? util.determine(item.aexpiration) : '';
                    item.cdate = item.cdate * 1;
                    item.useStime = '';
                    item.useEtime = '';
                    let condition = item.aexpiration
                    if (condition.valid_forever === '0' && condition.stime && condition.etime) {
                        item.useStime = util.unixtoTime(condition.stime, 'YYYY-MM-DD');
                        item.useEtime = util.unixtoTime(condition.etime, 'YYYY-MM-DD');
                    }
                    if (condition.valid_forever === '1') {
                        item.foreverText = '永久有效';
                    }
                    // today 领券当日起天数
                    if (condition.valid_forever === '0' && condition.today) {
                        let obj = this.setTimeRange(item.cdate, 0, parseInt(condition.today)-1);
                        item.useStime = obj.useStime;
                        item.useEtime = obj.useEtime;
                        item.useEtimeStr = '领取当日起' + condition.today + '天内有效';
                    }
                    // tomorrow 领券次日起天数
                    if (condition.valid_forever === '0' && condition.tomorrow) {
                        let obj = this.setTimeRange(item.cdate, 1, condition.tomorrow*1);
                        item.useStime = obj.useStime;
                        item.useEtime = obj.useEtime;
                    }
                    // sday 领券后第几天的开始天数 eday 领券后第几天的结束天数
                    if (condition.valid_forever === '0' && condition.sday && condition.eday) {
                        let obj = this.setTimeRange(item.cdate, parseInt(condition.sday) - 1, parseInt(condition.eday) - 1);
                        item.useStime = obj.useStime;
                        item.useEtime = obj.useEtime;
                    }
                    if ((item.use && (!item.use.is_cash || item.use.is_cash == '1'))) {
                        let cash = item.use.cash * 1;
                        let price = item.price * 1;
                        item.discount = cash != 0 ? ((price / cash) * 10).toFixed(1) : '';
                    }
                    if (item.exp_date && item.exp_date.week_data) {
                        let mor = this.hasConsecutiveSelect(item.exp_date.week_data, '1').rArr.join('、')
                        let noon = this.hasConsecutiveSelect(item.exp_date.week_data, '2').rArr.join('、')
                        let nig = this.hasConsecutiveSelect(item.exp_date.week_data, '3').rArr.join('、')
                        if (mor) mor = '早餐:' + mor
                        if (noon) noon = '午餐:' + noon
                        if (nig) nig = '晚餐:' + nig
                        item.morText = mor;
                        item.noonText = noon;
                        item.nigText = nig;
                    }
                    item.noShow = '1';
                    item.noShowTetxt = '';
                    if(item.is_examine=='1' && item.is_comment!='1'){
                        item.noShow = '0'
                        item.noShowTetxt = '已使用'
                    }
                    if(item.is_expire=='1' && (item.is_type=='3' && item.aexpiration.valid_forever != '1' && this.data.dataStr > (item.useEtime * 1)) || (item.is_type !='3' && this.data.dataStr > (item.etime * 1))){
                        item.noShow = '0'
                        item.noShowTetxt = '已失效'
                    }
                    if(item.status=='4'){
                        item.noShow = '0'
                        item.noShowTetxt = '退款中'
                    }
                    if(item.status=='5'){
                        item.noShow = '0'
                        item.noShowTetxt = '已退款'
                    }
                    if(item.is_examine=='1' && item.is_comment=='1'){
                        item.noShow = '0'
                        item.noShowTetxt = '已评价'
                    }
                    if(item.is_examine=='1' && (item.is_expire=='0' || item.aexpiration.valid_forever == '1') && item.status!='4' && item.status!='5' && item.is_comment!='1'){
                        item.noShow = '1'
                    }
				})
                list.sort((a, b) => a.is_examine - b.is_examine);
                list.sort((a, b) => b.noShow - a.noShow);
                list = list.filter(item=>{return (item.recharge_name || item.aname)})
				this.setData({
					list,
					isShow:true,
				})
			}
		})
	},
	init() {
		let systemInfo = wx.getSystemInfoSync();
		let reg = /ios/i;
		let pt = 20; //导航状态栏上内边距
		let h = 44; //导航状态栏高度
		console.log(systemInfo.system);
		if (reg.test(systemInfo.system)) {
			pt = systemInfo.statusBarHeight;
			h = 130;
		} else {
			pt = systemInfo.statusBarHeight;
			h = 48;
		}
		this.setData({
			contentHeight: systemInfo.windowHeight - pt - h
		})
	},
	// 去详情或者去评价
	todetail(e) {
        let item=e.currentTarget.dataset['item'];
		if(item.is_examine=='0' && (item.is_expire=='0' || item.aexpiration.valid_forever == '1') && item.status!='4' && item.status!='5'){
            // 免费券 跳转到免费券详情
            if(item.is_type == '3'){
                wx.navigateTo({
                    url: '/pack-activity/pack/receiveCoupon?id='+item.id+'&name='+item.sellername+'&sid='+item.sellerid+'&types=3',
                })
                return  
            }else{
                wx.navigateTo({
                    url: '/pack-activity/pack/examineCertificate?id='+item.id,
                })
            }
		}
		if(item.is_examine=='1' && item.is_expire=='0' && item.status!='4' && item.status!='5' && item.is_comment!='1'){
			wx.navigateTo({
				url: `/pages/pinglun/create?oid=${item.id}&sellername=${item.recharge_name}&sid=${item.sellerid}&types=3`,
			})
		}
	},
	// 关注公众号
	wananchi() {
		wx.navigateTo({
			url: './wananchi'
		})
	},
	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom: function () {
	  if(this.hasMore){
		this.page+=1
		this.todetail()
	  }
	},
    // 计算免费券有效期的起始、结束日期
    setTimeRange(cdate, startOffset, endOffset) {
        // console.log(cdate, startOffset, endOffset);
        const startDate = new Date((cdate * 1 + startOffset * 86400) * 1000);
        startDate.setHours(0, 0, 0, 0);
        const useStime = util.unixtoTime(startDate.getTime() / 1000, 'YYYY-MM-DD');
        const endDate = new Date((cdate * 1 + endOffset * 86400) * 1000);
        endDate.setHours(23, 59, 59, 0);
        const useEtime = util.unixtoTime(endDate.getTime() / 1000, 'YYYY-MM-DD');
        return {
            useStime,
            useEtime
        };
    },
    // 处理优惠券不可用日期数据
    hasConsecutiveSelect(arr, type) {
        let firstTitle = null;
        let lastTitle = null;
        let rArr = []
        let num = 0
        for (let i = 0; i < arr.length; i++) {
            let str = type == '1' ? arr[i].selectMor : type == '2' ? arr[i].selectNoon : type == '3' ? arr[i].selectNig : '';
            if (str) {
                rArr.push(arr[i].title)
                num++
                if (num == 1) {
                    firstTitle = arr[i].title
                }
                if (num >= 5) {
                    lastTitle = arr[i].title
                }
                if (num >= 5 && i >= (arr.length - 1)) {
                    let fi = rArr.findIndex((item) => {
                        return item == firstTitle
                    })
                    rArr.splice(fi, num, firstTitle + '至' + lastTitle)
                    num = 0
                }
            } else {
                if (num < 5) {
                    num = 0
                    firstTitle = null;
                    lastTitle = null;
                } else {
                    let fi = rArr.findIndex((item) => {
                        return item == firstTitle
                    })
                    rArr.splice(fi, num, firstTitle + '至' + lastTitle)
                    num = 0
                }
            }
        }
        return {
            rArr,
            lastTitle,
            firstTitle
        };
    },
})