riku
2026-01-21 a2c5def7cf9562312a54216bc195a6ea071a26c5
pages/mNotice/notice/notice.js
@@ -1,42 +1,47 @@
// pages/notice/notice.js
const notificationservice = require("../../../service/notificationservice")
const moment = require('../../../utils/moment.min')
const util = require("../../../utils/util.js")
const app = getApp()
const notificationservice = require('../../../service/notificationservice');
const moment = require('../../../utils/moment.min');
const util = require('../../../utils/util.js');
const app = getApp();
Page({
  /**
   * 页面的初始数据
   */
  data: {
    currentTab: 0,
    tabList: [{
        "name": "工作通知"
    tabList: [
      {
        name: '工作通知',
      },
      {
        "name": "预警警示"
        name: '风险预警',
      },
      {
        "name": "系统通知"
      }
        name: '系统通知',
      },
    ],
    pageList: [
      [],
      [],
      []
    ]
    unReadList: [0, 0, 0],
    pageList: [[], [], []],
    showNoticeDetail: false,
    showTitle: '',
    showContent: '',
    confirmBtn: { content: '知道了', variant: 'base' },
  },
  //计算swiper高度方法(在切换的时候调用)
  tabsHeight(element) {
    let that = this;
    let query = wx.createSelectorQuery(); //必须要先创建一个查询
    query.select(element).boundingClientRect(function (rect) {
      that.setData({
        pageheight: rect.height + 'px'
      });
    }).exec();
    query
      .select(element)
      .boundingClientRect(function (rect) {
        that.setData({
          pageheight: rect.height + 'px',
        });
      })
      .exec();
  },
  swichNav: function (e) {
    var that = this;
@@ -45,16 +50,17 @@
    } else {
      that.setData({
        currentTab: e.target.dataset.current,
        navScrollLeft: e.target.dataset.current >= 4 ? ((e.target.dataset.current) * 60) : 0 //判断当前选中的个数是否是第5个
      })
      that.tabsHeight('.page'+e.target.dataset.current);   //查询哪一个元素
        navScrollLeft:
          e.target.dataset.current >= 4 ? e.target.dataset.current * 60 : 0, //判断当前选中的个数是否是第5个
      });
      that.tabsHeight('.page' + e.target.dataset.current); //查询哪一个元素
    }
  },
  bindChange: function (e) {
    var that = this;
    that.setData({
      currentTab: e.detail.current,
      navScrollLeft: e.detail.current >= 4 ? ((e.detail.current) * 60) : 0 //判断当前选中的个数是否是第5个
      navScrollLeft: e.detail.current >= 4 ? e.detail.current * 60 : 0, //判断当前选中的个数是否是第5个
    });
    // that.tabsHeight('.page'+e.target.dataset.current);   //查询哪一个元素
  },
@@ -64,36 +70,91 @@
   */
  onLoad: function (options) {
    this.tabsHeight('.page0');
    this.getNotice()
    this.getNotice();
  },
  onReachBottom () {
  onReachBottom() {
    if (this.cPage && this.tPage) {
      if (this.cPage < this.tPage) {
        this.getNotice(this.cPage + 1)
        this.getNotice(this.cPage + 1);
      }
    }
  },
  getNotice(cPage = 1) {
    var that = this
    notificationservice.getNotification(app.globalData.accessToken.userId, cPage, {
      onHead(header) {
        that.cPage = parseInt(header.currentPage)
        that.tPage = parseInt(header.totalPage)
        console.log(`cPage:${that.cPage}, tPage:${that.tPage}`);
    var that = this;
    notificationservice.getNotification(
      app.globalData.accessToken.userId,
      cPage,
      {
        onHead(header) {
          that.cPage = parseInt(header.currentPage);
          that.tPage = parseInt(header.totalPage);
          console.log(`cPage:${that.cPage}, tPage:${that.tPage}`);
        },
        success(res) {
          const { pageList, unReadList } = that.data;
          res.forEach(r => {
            r.updateTime = moment(r.updateTime).format('YYYY年MM月DD日');
            switch (r.typeId) {
              // 系统通知
              case '1':
                if (!r.hasRead) unReadList[2]++;
                pageList[2].push(r);
                break;
              // 工作通知
              case '2':
                if (!r.hasRead) unReadList[0]++;
                pageList[0].push(r);
                break;
              // 预警警示
              case '3':
                if (!r.hasRead) unReadList[1]++;
                pageList[1].push(r);
                break;
              default:
                if (!r.hasRead) unReadList[2]++;
                pageList[2].push(r);
                break;
            }
          });
          that.setData({ pageList, unReadList });
          that.tabsHeight('.page0'); //刷新高度
        },
      },
      success(res) {
        res.forEach(r => {
          r.updateTime = moment(r.updateTime).format('YYYY年MM月DD日')
        });
        let notices = that.data.pageList[0].concat(res)
        that.setData({
          ['pageList[0]']: notices
        })
        that.tabsHeight('.page0');   //刷新高度
      }
    }, 5)
      30,
    );
  },
})
  showDialog(e) {
    const { index } = e.currentTarget.dataset;
    const notice = this.data.pageList[index[0]][index[1]];
    this.setData({
      showNoticeDetail: true,
      showTitle: notice.title,
      showContent: notice.content,
    });
    if (!notice.hasRead) {
      var that = this;
      const { unReadList } = this.data;
      notificationservice.updateReadState(
        app.globalData.accessToken.userId,
        [{ noticeId: notice.id, hasRead: true, hasSigned: true }],
        {
          success() {
            notice.hasRead = true;
            unReadList[index[0]]--;
            that.setData({
              [`pageList[${index[0]}][${index[1]}]`]: notice,
              unReadList,
            });
          },
        },
      );
    }
  },
  closeDialog() {
    this.setData({ showNoticeDetail: false });
  },
});