index.js 6.66 KB
import {
  getBindtapData
} from '../../utils/util'

let app = getApp();
Page({
  data: {
    isOverShare: true,
    authorizeVisible: false,
    total: 0,
    page: 1,
    size: 10,
    dataList: [],
    tabList: [], // 标签列表
    listType: 2, // 拜年模块  0是普通视频列表 1是推荐 2是祝福语 非2就是普通视频
    bannerList: [],
    curTab: {},
    queueCode: "", // 队列标识,每次请求,会返回一个队列标识,用户加载更多时候请携带queueCode参数
    active: 0,
    curBanner: {},
    blessContent: [
      {
        type: "text",
        content: "文本内容",
        color: "0xffffff",
        size: "26"
      },
      {
        type: "image",
        content: "url",
      },
    ]
  },
  onShareAppMessage(res) {
    if (res.from === 'button') {
      // 来自页面内转发按钮
    } else {
      // 打点
      app.stat({
        classify: "share",
        action: "list_page_share",
        primaryCode: this.data.curTab.tabCode,
      });
    }
  },
  showAuth() {
    this.setData({
      authorizeVisible: true
    })
  },
  onLoad(options) {
    this.initData();
  },
  initData() {
    this.queryTabList().then((result) => {
      this.setData({
        curTab: this.data.tabList[0]
      })
      this.resetPage();
      this.queryBannerList();
      this.queryVideoList();
    });
  },
  /**
   * 到达底部
   * 做加载更多操作
   */
  onReachBottom() {
    if (this.data.dataList.length < this.data.total) {
      this.setData({
        page: this.data.page + 1
      });
      this.queryVideoList();
    }
  },

  // 重置页面列表 点击搜索条件时需要
  resetPage() {
    this.setData({
      page: 1,
      dataList: [],
      queueCode: "",
    })
  },

  // 点击tabs
  onVanTabsHandler(event) {
    let {
      index,
      title
    } = event.detail;
    if (this.data.tabList && this.data.tabList.length > 0) {
      this.setData({
        curTab: this.data.tabList[event.detail.index]
      })
      this.resetPage();
      this.queryBannerList();
      this.queryVideoList();
    }
  },

  /**
   * banner切换
   */
  onBannerChangeHandler(e) {
    let index = e.detail.current;
    this.setBannerIndex(index);
  },

  setBannerIndex(idx) {
    let bannerList = this.data.bannerList;
    if (bannerList && bannerList.length > 0) {
      let curBanner = bannerList[idx] || {}
      this.setData({
        curBanner: curBanner
      })
    }
  },

  /**
   * 点击item详情
   * @param {*} evt
   */
  onDetailHandler(evt) {
    let curItem = getBindtapData(evt);
    let listType = this.data.listType;
    if (listType == 2) {
      let blessCode = curItem.blessCode || "";
      if (blessCode) {
        app.router.push({
          path: "blessing",
          query: {
            c: blessCode
          }
        })
      }
    } else {
      let videoCode = curItem.videoCode || "";
      if (videoCode) {
        app.router.push({
          path: "detail",
          query: {
            c: videoCode
          }
        })
      }
    }

  },

  /**
   * 点击banner详情
   * @param {*} evt
   */
  onBannerHandler(evt) {
    let curItem = getBindtapData(evt);
    console.log("curItem:", curItem);
    let {
      bannerCode,
      bannerType,
      videoCode,
      bigImage,
      gzhArticle
    } = curItem;

    // 打点
    app.stat({
      classify: "banner",
      action: "banner_click",
      primaryCode: bannerCode,
    });

    switch (bannerType) {

      case "video":
        if (videoCode) {
          app.router.push({
            path: "detail",
            query: {
              c: videoCode
            }
          })
        }
        break;

      case "image":
        if (bigImage) {
          let current = bigImage;
          let urls = [bigImage];
          wx.previewImage({
            current: current,
            urls: urls
          })
        }
        break;

      case "article":
        if (gzhArticle) {
          app.router.push({
            path: "webview",
            query: {
              url: gzhArticle,
            }
          })
        }
        break;

      default:
        break;
    }

  },


  onShareItem(evt) {
    let curItem = getBindtapData(evt);
    app.stat({
      classify: "share",
      action: "list_page_button_share",
      primaryCode: curItem.videoCode
    });
  },

  /**
   * 到个人列表页面
   */
  toPersonalList(evt) {
    let detailData = getBindtapData(evt);
    if (detailData && detailData.accountCode) {
      detailData.c = detailData.accountCode;
      app.router.push({
        path: "personalList",
        query: detailData
      })
    }
  },

  /**
   * 获取tab列表
   */
  queryTabList() {
    return new Promise((resolve, reject) => {
      app.post({
        sid: false,
        url: app.api.tabList,
        data: {}
      }).then((result) => {
        this.setData({
          tabList: result
        })
        resolve(result);
      }).catch((err) => {
        reject(err)
      });
    });
  },

  /**
   * 获取banner列表
   */
  queryBannerList() {

    return new Promise((resolve, reject) => {
      app.post({
        sid: false,
        url: app.api.bannerList,
        data: {
          tabCode: this.data.curTab.tabCode || "",
        }
      }).then((result) => {
        this.setData({
          bannerList: result
        })
        this.setBannerIndex(0);
        resolve(result);
      }).catch((err) => {
        reject(err)
      });
    });
  },

  /**
   * 获取视频列表
   */
  queryVideoList() {
    return new Promise((resolve, reject) => {
      app.post({
        sid: false,
        url: app.api.videoList,
        data: {
          page: this.data.page,
          size: this.data.size,
          queueCode: this.data.queueCode,
          tabCode: this.data.curTab.tabCode || "",
        }
      }).then((result) => {
        let dataList = result.list;
        dataList = this.data.dataList.concat(dataList);
        this.setData({
          dataList: dataList,
          total: result.total,
          queueCode: result.queueCode,
          listType: result.type
        })
        resolve(result);
      }).catch((err) => {
        reject(err)
      });
    });
  },
  /**
   * 隐藏蒙层
   */
  hideMask() {
    this.setData({
      productDetailVisible: false,
      authorizeVisible: false,
    })
  },
  /**
   * 子组件事件
   * @param {*} evt
   */
  evtcomp(evt) {
    let {
      name,
      data
    } = evt.detail;
    switch (name) {

      // 隐藏蒙层
      case "_evt_hide_mask":
        this.hideMask();
        break;

        /**
         * 重拉数据已在
         */
      case "_evt_auth_complete":
        // this.initData();
        this.hideMask();
        break;

      default:
        break;
    }
  },
})