groupPurchaseHome.js 10.3 KB
// pages/groupPurchase/groupPurchaseHome.js
import {
  parseHomeList
} from '../../utils/newHome';
import {
  jumpByUrl
} from '../../libs/urlRoute';
let plugin = requirePlugin("yoho-utils");
let app = getApp();
const windowWidth = app.globalData.systemInfo.windowWidth;
const windowHeight = app.globalData.systemInfo.windowHeight;

let activityItemWidth = 186;
let activityItemHeight = 237;

const DEVICE_WIDTH_RATIO = windowWidth / 320;
let listWidth = Math.ceil(137.5 * DEVICE_WIDTH_RATIO);
let listHeight = Math.ceil(254 * DEVICE_WIDTH_RATIO);
const screenHeight = app.globalData.systemInfo.screenHeight;

const IMAGE_WIDTH = 145;
const IMAGE_HEIGHT = 193;
const IMAGE_RATIO = IMAGE_HEIGHT / IMAGE_WIDTH;
let listImageWidth = listWidth;
let listImageHeight = Math.ceil(listWidth * IMAGE_RATIO);
Page({
  /**
   * 页面的初始数据
   */
  data: {
    tabHeight: windowHeight * 0.068,
    selectorHeight: windowHeight * 0.06,
    tabLineWidth: windowWidth * 0.24,
    tabLineHeight: windowHeight * 0.003,
    currentPageName: 'groupPurchaseHome',
    isNewGroup: true,
    selectedChannel: 'newGroup',
    homeList: [],
    showTab: false,
    fixedFilter:false,
    collageTopSkn:'',
    hasListData:false,

    //下方活动商品列表数据
    listData: {
      newGroup: {
        activityList: [],
        hasMore: true,
        isLoading:false,
        currentPage:1,
      },
      normalGroup: {
        activityList: [],
        hasMore: true,
        isLoading: false,
        currentPage: 1,
      }
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    let title = options.title;
    if(title && title.length > 0){
      wx.setNavigationBarTitle({
        title,
      })
    }
    this.fetchHomeData();

    // this.fetchTabData();

  },
  /**
   * 获取资源位相关的楼层数据
   */
  fetchHomeData: function() {
    wx.showLoading({
      title: '加载中...',
    })
    let that = this
    //content_code 测试环境:9eddb5c34acf6f0aa2040318ef33a846
    //             正式环境:没有
    // console.error('======================')
    // console.error('======groupPurchaseHome 换线上contentcode=======')
    // console.error('======================')
    let param = {
      content_code: '9eddb5c34acf6f0aa2040318ef33a846',
    }
    plugin.get({
      url: '/operations/api/v5/resource/get',
      data: param
    }).then(data => {
        if (data && data.code && data.code == 200) {
          let homeList = data.data;
          let collageTopSkn = '';
          let isFetchTabData = false;
          homeList = parseHomeList(homeList, windowWidth, windowHeight, activityItemWidth, activityItemHeight);
          for(var i=0;i<homeList.length;i++){
            let item = homeList[i];
            if (item.template_name == 'collageBuyPrdList' && item.layout_float == 'V'){
              collageTopSkn = item.sknList;
              isFetchTabData = true;
              break;
            }
          }
          that.setData({
            homeList,
            collageTopSkn
          })
          if (isFetchTabData){
            that.fetchTabData();
          }
        }
        wx.hideLoading()
      })
      .catch(error => {
        wx.hideLoading()
        wx.showToast({
          title: error.message,
          duration:1500
        })
      })
  },

  /**
   * 获取邀新团 普通团tab
   */
  fetchTabData: function() {
    var that = this;
    let currentPageName = this.data.currentPageName;
    let param = {
      method: 'app.collage.promoteCount',
      fromPage: currentPageName,
    }

    plugin.get({data: param})
      .then(data => {
        if (data && data.code && data.code == 200 && data.data) {
          // console.log('可以显示tab')
          let listData = data.data;
          if (listData.newGroup > 0 && listData.normalGroup > 0){
            that.setData({
                showTab: true
              })
              that.fetchListData()
          } else if (listData.normalGroup> 0){
            that.fetchListData()
          } else if (listData.newGroup > 0){
            that.channelChange();
          }else{
            that.setData({
              hasListData:false
            })
          }

        }
      })
  },
  /**
   * 获取活动id对应的商品列表数据
   */
  fetchListData: function() {
    var that = this
    let currentPageName = this.data.currentPageName;
    let isNewGroup = this.data.isNewGroup;
    let listData = that.data.listData;
    let selectedChannel = this.data.selectedChannel;
    let currentChannelData = listData[selectedChannel];
    if (!currentChannelData.hasMore || currentChannelData.isLoading){
      return
    }
    currentChannelData.isLoading = true;
    listData[selectedChannel] = currentChannelData;
    that.setData({
      listData,
      hasListData:true
    })
    // if (listData[selectedChannel] && listData[selectedChannel].length > 0) {
    //   return
    // }
    let param = {
      // method: 'app.collage.productList',
      method: 'app.collage.promoteList',
      limit: 20,
      page: currentChannelData.currentPage,
      joinLimit: isNewGroup ? '1' : '2',
      collageTopSkn: that.data.collageTopSkn,
      fromPage: currentPageName
    }

    plugin.get({data: param})
      .then(data => {
        if (!data || !data.data || data.data.list.length === 0) {
          // wx.showToast({
          //   title: '未查询到商品信息,请稍后再试',
          //   icon: 'none',
          //   duration: 3000
          // })

          currentChannelData.isLoading = false;
          // currentChannelData.hasMore = true;
          listData[selectedChannel] = currentChannelData;
          that.setData({
            listData
          })
          return
        }
        // console.log('可以显示数据')
        data.data.list.map((item, index) => {
          item.default_images = item.default_images ? item.default_images.replace(/{width}/g, listImageWidth * 2).replace(/{height}/g, listImageHeight * 2).replace('{mode}', 2) : '';
          // item.sales_price = item.sales_price ? item.sales_price.toFixed(2) : '';
          // item.market_price = item.market_price ? item.market_price.toFixed(2) : '';
          // item.collagePrice = item.collagePrice ? item.collagePrice.toFixed(2) : '';
          if(that.data.isNewGroup){
            item.joinLimit = 1;
          }
        })

        // currentChannelData.activityList = data.data.list;
        currentChannelData.activityList = currentChannelData.activityList.concat(data.data.list);
        // let hasMore = data.data.total > currentChannelData.activityList.length;
        let hasMore = data.data.page_total > currentChannelData.currentPage;
        currentChannelData.hasMore = hasMore;
        if(hasMore){
          currentChannelData.currentPage = currentChannelData.currentPage + 1;
        }
        currentChannelData.isLoading = false;
        listData[selectedChannel] = currentChannelData;
        that.setData({
          listData
        })
      })
      .catch(error=>{
        currentChannelData.isLoading = false;
        // currentChannelData.hasMore = true;
        listData[selectedChannel] = currentChannelData;
        that.setData({
          listData
        })
        
      })
  },

  jumpByRule: function(e) {
    let jumpUrl = e.currentTarget.dataset.jump_rule;
    if (!jumpUrl) {
      return;
    }
    // let F_ID = e.currentTarget.dataset.f_id; //楼层id
    // let I_INDEX = e.currentTarget.dataset.f_inindex + 1 //楼层内index
    // let F_INDEX = e.currentTarget.dataset.f_index + 1 //楼层序号
    // let F_NAME = e.currentTarget.dataset.f_name; //楼层名称
    // let param = {
    //   F_ID,
    //   I_INDEX,
    //   F_INDEX,
    //   F_NAME,
    //   F_URL: jumpUrl,
    // }

    // logEvent('YB_MAIN_EVENT', param);
    jumpByUrl(jumpUrl, 'groupPurchaseHome');
  },
  groupListCellTapped: function(event) {
    let data = event.currentTarget.dataset;
    let productSkn = data.productSkn;
    let activityId = data.activityId;

    wx.navigateTo({
      url: './groupPurchaseDetail?productSkn=' + productSkn + '&activityId=' + activityId + '&page_name=groupPurchaseHome' + '&page_param=' + activityId,
    });
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {

  },
  jumpMyGroup: function (event) {
    if (!app.isLogin()) {
      wx.showToast({
        title: '请先完成登录/注册,再查看!',
        duration: 1500,
        icon: 'none'
      })
      return;
    }
    wx.navigateTo({
      url: '../orders/groupOrders?page_name=groupPurchase',
    })
  },
  onPageScroll:function(){
    // console.log('onPageScroll')
    let pixelRatio = windowWidth / 750;
    let that = this;
    wx.createSelectorQuery().select('#fixedFilterViewC').boundingClientRect(function (rect) {
      if (rect) {
        var y = rect.top / pixelRatio;
        let fixedFilter = y >= that.data.tabHeight + 4 ? false : true;
        if(fixedFilter != that.data.fixedFilter){
          that.setData({
            fixedFilter
          });
        }
       
      }
    }).exec()
  },
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {
    if (this.data.hasListData){
      this.fetchListData()
    }
  
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  },
  groupItemTapped:function(e){
    let activityId = e.currentTarget.dataset.activity_id;
    let productSkn = e.currentTarget.dataset.skn;

    // console.log(productSkn)
    wx.navigateTo({
      url: './groupPurchaseDetail?productSkn=' + productSkn + '&activityId=' + activityId + '&page_name=' + 'groupPurchaseHome',
    });
  },
  /**
   * 切换邀新团与普通团tab
   */
  channelChange: function(e) {
    let tabGroup = e.currentTarget.dataset.newgroup;
    let isNewGroup = this.data.isNewGroup;
    if(isNewGroup == tabGroup){
      return;
    }
    isNewGroup = !isNewGroup;
    let selectedChannel = isNewGroup ? 'newGroup' : 'normalGroup';

    this.setData({
      isNewGroup,
      selectedChannel
    })
    this.fetchListData()
  }
})