var e = getApp(), i = e.request, a = e.globalData.setting,os=a,ut = require("../../../utils/util.js"); var regeneratorRuntime = require('../../../utils/runtime.js'); const app = getApp(); let self = null; Page({ /** * 页面的初始数据 */ data: { url: a.imghost, type:1, // goodlist: null, isLogin: false, list: [], isLoading: false, // 检测是否已经发送请求,防止重复发送请求 noMore: false, // 检测是否有更多数据,true为没有更多数据,false为还有数据 pageNum: 1, // 当前页数 time_arr:[], timer: null, }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { self = this; //群id if(options && options.groupchat_id){ getApp().globalData.groupchat_id=options.groupchat_id } var first_leader = options.first_leader; if (first_leader) { getApp().globalData.first_leader = first_leader; //调用接口判断是不是会员 getApp().request.promiseGet("/api/weshop/shoppingGuide/get/" + os.stoid + "/" + first_leader, {}).then(res => { if (res.data.code == 0) { getApp().globalData.guide_id = res.data.data.id; getApp().globalData.guide_pick_id= res.data.data.pickup_id } }) } app.isLogin().then(function(data) {//进入页面前已经授权登录成功 self.setData({ userInfo: data, }); }); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { getApp().check_can_share(this); var user=app.globalData.userInfo; this.setData({ userInfo: user, imghost: app.globalData.setting.imghost, isLogin: true, }); let user_id=getApp().globalData.user_id || 0; let typeVal = this.data.type; let url = '/api/weshop/goods/groupBuy/page'; let data = { store_id: app.globalData.setting.stoid, is_show: 1, is_end: 0, timetype: typeVal, user_id:user_id }; this.setData({ list: [], pageNum: 1, noMore: false, }); this.getData(true, url, data).then(function() { self.setData({ currentData: data, }); }); this.data.is_timer = 1; //设置全局定时器 clearInterval(this.data.timer); this.data.timer = setInterval(function () { self.countDown(); }, 1000); }, // 底部按钮切换 tip: function(e) { // 1进行中 0预热 let typeValue = e.currentTarget.dataset.ty; this.data.type = typeValue; let url = '/api/weshop/goods/groupBuy/page'; let user_id=getApp().globalData.user_id || 0; let data = { store_id: app.globalData.setting.stoid, is_show: 1, is_end: 0, timetype: typeValue, user_id:user_id }; this.getData(true, url, data).then(function() { self.setData({ currentData: data, }); }); this.setData({ list: [], type: typeValue, }); }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { clearInterval(this.data.timer); }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { if(this.data.isLoading) return false; let data = this.data.currentData; this.scrollToLower('/api/weshop/goods/groupBuy/page', data); }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { getApp().globalData.no_clear=1; var store_name = getApp().globalData.config ? getApp().globalData.config.store_name:''; var pagePath = this.route; //当前页面url if(!store_name) store_name = getApp().globalData.setting.appName; if(pagePath.indexOf('/') != 0) { pagePath = '/' + pagePath; } if(getApp().globalData.user_id){ if(pagePath.indexOf('?')>0){ pagePath += '&first_leader=' + getApp().globalData.user_id; }else{ pagePath += '?first_leader=' + getApp().globalData.user_id; } //群id分享 if (getApp().globalData.groupchat_id) { pagePath+="&groupchat_id="+getApp().globalData.groupchat_id } }else{ if(pagePath.indexOf("?")>0){ pagePath+="&groupchat_id="+getApp().globalData.groupchat_id }else{ pagePath+="?groupchat_id="+getApp().globalData.groupchat_id } } return { title: store_name + '-团购', path: pagePath, } }, /** * 请求数据 */ getData: function(isInit, url, data) { wx.showLoading(); let p = app.request.promiseGet(url, { data: data, isShowLoading: false, }) .then(function(res) { if(ut.ajax_ok(res)) { self.setData({ ['list['+(self.data.pageNum-1)+']']:res.data.data.pageData }) if(res.data.data.pageSize * res.data.data.page >= res.data.data.total){ self.setData({ noMore: true }); }; } else { self.setData({ noMore: true }); }; self.setData({ isLoading: false, is_get:1 }); wx.hideLoading(); }); return p; }, /** * 上拉加载 */ scrollToLower(url, requestData) { // 数据总量 let total = this.data.list.total; // 单页最大数据量 let pageSize = this.data.list.pageSize; // 如果数据总量不为0且小于或等于单页最大数据量,说明数据已全部加载,显示‘没有更多了’ if((total != 0)&&(total <= pageSize)) { this.setData({ noMore: true }); }; if(!this.data.isLoading && !this.data.noMore) { this.setData({ isLoading: true, pageNum: this.data.pageNum + 1 }); requestData.page = this.data.pageNum; this.getData(false, url, requestData); }; }, //---小于10的格式化函数---- timeFormat(param) { return param < 10 ? '0' + param : param; }, //----倒计时函数----- countDown() { if (!this.data.is_timer) return false; var th = this; // 获取当前时间,同时得到活动结束时间数组 let newTime = ut.gettimestamp(); var time_arr=[]; for (let j = 0; j < this.data.list.length; j++) { var endTimeList = this.data.list[j]; if (endTimeList == null) return null; var arr_new=[]; // 对结束时间进行处理渲染到页面 for (var i = 0; i < endTimeList.length; i++) { // if(th.data.type==0) endTime = o.start_time; // 创建查询对象 let query = wx.createSelectorQuery(); // 获取目标元素,并获取目标元素的信息 query.select("#l_item_"+j+"_"+i).boundingClientRect(); // 获取视口,并获取视口信息 query.selectViewport().boundingClientRect(); //-- 执行查询,元素要在显示中的才显示定时器 -- query.exec(([target, view]) => { if (!th.data.is_timer) return; if (!target) return; if (!target.id) return; let idx_str= target.id.replace('l_item_',''); idx_str=idx_str.split('_'); var o = this.data.list[idx_str[0]][idx_str[1]]; var endTime = this.data.type == 1 ? o.end_time : o.start_time; // 条件1:当目标顶部距离视口顶部距离小于视口的高度时 // 条件2:当目标底部距离视口顶部距离大于0时 // 当以上两个条件同时成立时,目标元素在视口中 if (target.top < view.height && target.bottom > 0) { let obj = null; // 如果活动未结束,对时间进行处理 if (endTime - newTime > 0) { let time = (endTime - newTime); // 获取天、时、分、秒 let day = parseInt(time / (60 * 60 * 24)); let hou = parseInt(time % (60 * 60 * 24) / 3600); let min = parseInt(time % (60 * 60 * 24) % 3600 / 60); let sec = parseInt(time % (60 * 60 * 24) % 3600 % 60); obj = { day: this.timeFormat(day), hou: this.timeFormat(hou), min: this.timeFormat(min), sec: this.timeFormat(sec), hide: 1 } } else { //活动已结束,全部设置为'00' obj = {day: '00', hou: '00', min: '00', sec: '00'} } var txt = "time_arr[" + idx_str[0] + "][" + idx_str[1] + "].djs"; th.setData({[txt]: obj}); } }); //var e={djs:obj}; //arr_new.push(e); } //time_arr.push(arr_new); } //this.setData({time_arr:time_arr}); }, //图片失败,默认图片 bind_bnerr2: function (e) { var _errImg = e.target.dataset.errorimg; var val = e.target.dataset.val; if(val!=undefined && val!=null && val!='null' ){ var _errObj = {}; _errObj[_errImg] = "/public/images/default_goods_image_240.gif"; this.setData(_errObj) //注意这里的赋值方式,只是将数据列表中的此项图片路径值替换掉 ; } }, goto(e) { let index = e.currentTarget.dataset.index; let pidx = e.currentTarget.dataset.pidx; let item=this.data.list[pidx][index]; let url="/pages/goods/goodsInfo/goodsInfo?goods_id="+item.goods_id+"&prom_id="+item.id+"&prom_type=2"; //-- 如果是服务卡项的时候 -- if(item.goods_type==1){ url="/packageG/pages/group_buy/goodsInfo/goodsInfo?goods_id="+item.goods_id+"&prom_id="+item.id; } app.goto(url); }, })