message.js 3.52 KB
import MessageService from '../MessageService.js'
import { formatTimeByDefined } from '../../../utils'
import event from '../../../utils/event.js'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    api: new MessageService(),
    messageTypeList: [],
    messageInfo: {
      isLoading: false,
      hasMore: true,
      currentPage: 1,
      messageList: [],
    },
    isLogined: false,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    let api = new MessageService();
    this.setData({
      api: api
    })
  },

  // 消息类型
  fetchMessageTypeInfo: function () {
    let that = this;
    this.data.api.fetchMessageTypeInfo()
    .then(data => {
      if (data) {
        let messageTypeList = data;
        const list = messageTypeList.map(item => {
        const unReadCount = item.unReadCount > 100 ? '99+' : item.unReadCount;
          item.unReadCount = unReadCount;
          return item;
        })

        that.setData({
          messageTypeList: list
        })
      }
    })
    .catch(error => {
      console.error(error);
    })
  },

  // 最新消息列表
  fetchNewMessageList: function () {
    let that = this;
    let messageInfo = that.data.messageInfo;
    if (messageInfo.isLoading || !messageInfo.hasMore) {
      return;
    }
    messageInfo.isLoading = true;
    that.setData({
      messageInfo
    })

    let params = {
      page: messageInfo.currentPage,
      limit: 20
    }

    this.data.api.fetchNewMessageList(params)
      .then(data => {
        if (data) {
          let msgList = data.list;
          console.log(msgList);
          const list = msgList.map(item => {
            let createTime = formatTimeByDefined(item.createTime, 'Y.M.D h:m:s');
            item.createTime = createTime;
            return item;
          })
          messageInfo.messageList = messageInfo.messageList.concat(list);

          let hasMore = messageInfo.currentPage < data.totalPage;
          messageInfo.hasMore = hasMore;
          if (hasMore) {
            messageInfo.currentPage = messageInfo.currentPage + 1;
          }
          messageInfo.isLoading = false;

          that.setData({
            messageInfo,
          })
        }
      })
      .catch(error => {
        messageInfo.isLoading = false;
        console.error(error);
      })
  },

  navToDetail: function (event) {
    let item = event.currentTarget.dataset.item;
    let title = item.description;
    let messgeType = item.type;
    wx.navigateTo({
      url: '../messageDetail/messageDetail?' + 'title=' + title + '&type=' + messgeType,
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    event.emit('judge-user-is-login', this.isJudgeLogined, this.isLoginCallback);
  },

  isLoginCallback() {
    this.fetchMessageTypeInfo();
    this.fetchNewMessageList();
  },

  isJudgeLogined(isLogined) {
    console.log(isLogined);
    this.setData({
      isLogined
    })
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

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

  },

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

  },

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

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

  }
})