|
@@ -1,49 +1,154 @@
|
|
|
// 通知列表页面的JS文件
|
|
|
const app = getApp();
|
|
|
-const utils = require('../../utils/util.js')
|
|
|
Page({
|
|
|
/**
|
|
|
* 页面的初始数据
|
|
|
*/
|
|
|
data: {
|
|
|
- noticeList: [
|
|
|
- ]
|
|
|
+ activeTab: 0, // 当前选中的tab,0为公告,1为消息
|
|
|
+ noticeList: [],
|
|
|
+ userNoticesList: [],
|
|
|
+ unreadCount: 0 // 未读消息数量
|
|
|
},
|
|
|
|
|
|
onLoad: function (options) {
|
|
|
- debugger
|
|
|
-
|
|
|
+ // 直接从全局数据获取通知列表
|
|
|
+ this.setData({
|
|
|
+ noticeList: app.globalData.notices || [],
|
|
|
+ userNoticesList: app.globalData.userNoticesList || []
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ // 计算未读消息数量
|
|
|
+ this.countUnreadMessages();
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算未读消息数量
|
|
|
+ */
|
|
|
+ countUnreadMessages: function() {
|
|
|
+ const unreadCount = this.data.userNoticesList.filter(item => item.readstate === '2').length;
|
|
|
+ this.setData({
|
|
|
+ unreadCount: unreadCount
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 切换Tab
|
|
|
+ */
|
|
|
+ switchTab: function(e) {
|
|
|
+ const index = parseInt(e.currentTarget.dataset.index);
|
|
|
this.setData({
|
|
|
- noticeList:app.globalData.notices
|
|
|
+ activeTab: index
|
|
|
});
|
|
|
+
|
|
|
+ // 重新从全局数据获取最新数据
|
|
|
+ if (index === 0) {
|
|
|
+ this.setData({
|
|
|
+ noticeList: app.globalData.notices || []
|
|
|
+ });
|
|
|
+ } else if (index === 1) {
|
|
|
+ this.setData({
|
|
|
+ userNoticesList: app.globalData.userNoticesList || []
|
|
|
+ });
|
|
|
+ this.countUnreadMessages();
|
|
|
+ }
|
|
|
},
|
|
|
|
|
|
+ /**
|
|
|
+ * 一键已读
|
|
|
+ */
|
|
|
+ markAllAsRead: function(e) {
|
|
|
+ wx.request({
|
|
|
+ url: app.globalData.interfaceUrls.updateRadstateStatusAll,
|
|
|
+ method: 'POST',
|
|
|
+ data: {
|
|
|
+ account: app.globalData.currentAccountInfo.usernumber,
|
|
|
+ deKey: app.globalData.currentAccountInfo.dsKey,
|
|
|
+ },
|
|
|
+ header: {
|
|
|
+ 'content-type': 'application/json',
|
|
|
+ 'token': app.globalData.userWxInfo.token,
|
|
|
+ 'source': "wc",
|
|
|
+ '!SAAS_LOGIN_TOKEN_!': app.globalData.currentAccountInfo.dsKey
|
|
|
+ },
|
|
|
+ success: (res) => {
|
|
|
+ if (res.data.code == '200') {
|
|
|
+ // 更新本地数据
|
|
|
+ const updatedList = this.data.userNoticesList.map(item => {
|
|
|
+ return {...item, readstate: '1'};
|
|
|
+ });
|
|
|
|
|
|
- // getNoticeList: function() {
|
|
|
- // wx.request({
|
|
|
- // url: 'API地址/notice/list',
|
|
|
- // success: (res) => {
|
|
|
- // if (res.data && res.data.code === 200) {
|
|
|
- // this.setData({
|
|
|
- // noticeList: res.data.data
|
|
|
- // });
|
|
|
- // }
|
|
|
- // },
|
|
|
- // fail: () => {
|
|
|
- // // 网络请求失败时使用默认数据
|
|
|
- // console.log('获取通知列表失败,使用默认数据');
|
|
|
- // }
|
|
|
- // });
|
|
|
- // },
|
|
|
+ // 更新全局数据和页面数据
|
|
|
+ app.globalData.userNoticesList = updatedList;
|
|
|
+ this.setData({
|
|
|
+ userNoticesList: updatedList,
|
|
|
+ unreadCount: 0
|
|
|
+ });
|
|
|
+
|
|
|
+ // 更新未读消息数量
|
|
|
+ this.countUnreadMessages();
|
|
|
+
|
|
|
+ // 提示操作成功
|
|
|
+ wx.showToast({
|
|
|
+ title: '操作成功',
|
|
|
+ icon: 'success',
|
|
|
+ duration: 1500
|
|
|
+ });
|
|
|
+
|
|
|
+ // 通知首页刷新未读消息状态
|
|
|
+ if (typeof app.globalData.refreshUnreadStatus === 'function') {
|
|
|
+ app.globalData.refreshUnreadStatus();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ wx.showToast({
|
|
|
+ title: res.data.msg || '操作失败',
|
|
|
+ icon: 'none',
|
|
|
+ duration: 1500
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fail: (err) => {
|
|
|
+ console.error('更新消息状态失败:', err);
|
|
|
+ wx.showToast({
|
|
|
+ title: '网络异常,请稍后重试',
|
|
|
+ icon: 'none',
|
|
|
+ duration: 1500
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 刷新消息列表
|
|
|
+ */
|
|
|
+ refreshMessageList: function() {
|
|
|
+ // 从全局数据刷新
|
|
|
+ this.setData({
|
|
|
+ noticeList: app.globalData.notices || [],
|
|
|
+ userNoticesList: app.globalData.userNoticesList || []
|
|
|
+ });
|
|
|
+
|
|
|
+ // 刷新完成后重新计算未读消息数
|
|
|
+ this.countUnreadMessages();
|
|
|
+ },
|
|
|
|
|
|
/**
|
|
|
* 跳转到通知详情页
|
|
|
*/
|
|
|
goToDetail: function (e) {
|
|
|
const id = e.currentTarget.dataset.id;
|
|
|
- const notice = this.data.noticeList.find(item => item.id === id);
|
|
|
+ const tabIndex = this.data.activeTab; // 获取当前所在Tab
|
|
|
+ const notice = tabIndex === 0
|
|
|
+ ? this.data.noticeList.find(item => item.id === id)
|
|
|
+ : this.data.userNoticesList.find(item => item.id === id);
|
|
|
|
|
|
if (notice) {
|
|
|
+ // 如果是消息类型且是未读状态,调用后台方法更新已读状态
|
|
|
+ if (tabIndex === 1 && notice.readstate === '2') {
|
|
|
+ this.updateReadStatus(id);
|
|
|
+ }
|
|
|
+
|
|
|
// 将通知数据转换为JSON字符串
|
|
|
const noticeStr = JSON.stringify(notice);
|
|
|
// 跳转到详情页并传递完整数据
|
|
@@ -58,10 +163,115 @@ Page({
|
|
|
}
|
|
|
},
|
|
|
|
|
|
+ /**
|
|
|
+ * 更新消息的已读状态
|
|
|
+ */
|
|
|
+ updateReadStatus: function(id) {
|
|
|
+ wx.request({
|
|
|
+ url: app.globalData.interfaceUrls.updateRadstateStatus,
|
|
|
+ method: 'POST',
|
|
|
+ data: {
|
|
|
+ id: id,
|
|
|
+ account: app.globalData.currentAccountInfo.usernumber,
|
|
|
+ deKey: app.globalData.currentAccountInfo.dsKey,
|
|
|
+ },
|
|
|
+ header: {
|
|
|
+ 'content-type': 'application/json',
|
|
|
+ 'token': app.globalData.userWxInfo.token,
|
|
|
+ 'source': "wc",
|
|
|
+ '!SAAS_LOGIN_TOKEN_!': app.globalData.currentAccountInfo.dsKey
|
|
|
+ },
|
|
|
+ success: (res) => {
|
|
|
+ debugger
|
|
|
+ if (res.data.code == '200') {
|
|
|
+ // 更新本地数据
|
|
|
+ const updatedList = this.data.userNoticesList.map(item => {
|
|
|
+ if (item.id === id) {
|
|
|
+ return {...item, readstate: '1'};
|
|
|
+ }
|
|
|
+ return item;
|
|
|
+ });
|
|
|
+ // 更新全局数据和页面数据
|
|
|
+ app.globalData.userNoticesList = updatedList;
|
|
|
+ this.setData({
|
|
|
+ userNoticesList: updatedList
|
|
|
+ });
|
|
|
+ // 更新未读消息数量
|
|
|
+ this.countUnreadMessages();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fail: (err) => {
|
|
|
+ console.error('更新消息状态失败:', err);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取最新消息数据
|
|
|
+ */
|
|
|
+ fetchLatestMessages: function() {
|
|
|
+ wx.showLoading({
|
|
|
+ title: '加载中...',
|
|
|
+ });
|
|
|
+
|
|
|
+ // 调用获取公告列表API
|
|
|
+ wx.request({
|
|
|
+ url: app.globalData.apiUrl + '/api/getNotices', // 根据你的实际API地址调整
|
|
|
+ method: 'GET',
|
|
|
+ success: (res) => {
|
|
|
+ if (res.data.success) {
|
|
|
+ // 更新全局数据和页面数据
|
|
|
+ app.globalData.notices = res.data.data.notices || [];
|
|
|
+ this.setData({
|
|
|
+ noticeList: app.globalData.notices
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ complete: () => {
|
|
|
+ // 无论成功失败都继续获取用户消息
|
|
|
+ this.fetchUserMessages();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取用户消息
|
|
|
+ */
|
|
|
+ fetchUserMessages: function() {
|
|
|
+ wx.request({
|
|
|
+ url: app.globalData.apiUrl + '/api/getUserMessages', // 根据你的实际API地址调整
|
|
|
+ method: 'GET',
|
|
|
+ data: {
|
|
|
+ userId: app.globalData.userId // 假设全局有用户ID
|
|
|
+ },
|
|
|
+ success: (res) => {
|
|
|
+ if (res.data.success) {
|
|
|
+ // 更新全局数据和页面数据
|
|
|
+ app.globalData.userNoticesList = res.data.data.messages || [];
|
|
|
+ this.setData({
|
|
|
+ userNoticesList: app.globalData.userNoticesList
|
|
|
+ });
|
|
|
+
|
|
|
+ // 更新未读消息数量
|
|
|
+ this.countUnreadMessages();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ complete: () => {
|
|
|
+ wx.hideLoading();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
/**
|
|
|
* 返回上一页
|
|
|
*/
|
|
|
goBack: function() {
|
|
|
wx.navigateBack();
|
|
|
},
|
|
|
+
|
|
|
+ // 页面显示时刷新数据
|
|
|
+ onShow: function() {
|
|
|
+ // 获取最新消息数据而不是从全局获取
|
|
|
+ this.fetchLatestMessages();
|
|
|
+ }
|
|
|
})
|