123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- // 通知列表页面的JS文件
- const app = getApp();
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- activeTab: 0, // 当前选中的tab,0为公告,1为消息
- noticeList: [],
- userNoticesList: [],
- unreadCount: 0 // 未读消息数量
- },
- onLoad: function (options) {
- // 直接从全局数据获取通知列表
- 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({
- 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'};
- });
- // 更新全局数据和页面数据
- 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 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);
- // 跳转到详情页并传递完整数据
- wx.navigateTo({
- url: '/pages/tzxq/tzxq?noticeData=' + encodeURIComponent(noticeStr)
- });
- } else {
- wx.showToast({
- title: '未找到通知详情',
- icon: 'none'
- });
- }
- },
- /**
- * 更新消息的已读状态
- */
- 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();
- }
- })
|