| | |
| | | <view |
| | | class="message-item" |
| | | v-for="message in sortedMessages" |
| | | :key="message.id" |
| | | :key="message.messageId" |
| | | @click="viewMessageDetail(message)" |
| | | > |
| | | <view class="message-main"> |
| | |
| | | onShow() { |
| | | // 每次显示页面时刷新消息 |
| | | this.loadMessages() |
| | | // 更新TabBar徽标 |
| | | this.updateTabBarBadge() |
| | | }, |
| | | onPullDownRefresh() { |
| | | this.loadMessages().then(() => { |
| | |
| | | // 查看消息详情(跳转到任务详情) |
| | | async viewMessageDetail(message) { |
| | | try { |
| | | // 校验消息对象 |
| | | if (!message || !message.messageId) { |
| | | console.error('消息数据异常:', message) |
| | | this.$modal.showToast('消息数据异常') |
| | | return |
| | | } |
| | | |
| | | // 标记为已读 |
| | | if (message.isRead === '0') { |
| | | await markAsRead(message.messageId) |
| | | message.isRead = '1' |
| | | // 更新徽标 |
| | | this.updateTabBarBadge() |
| | | } |
| | | |
| | | // 跳转到任务详情页面 |
| | |
| | | } catch (error) { |
| | | console.error('标记消息已读失败:', error) |
| | | // 即使标记失败,也允许跳转 |
| | | if (message.taskId) { |
| | | if (message && message.taskId) { |
| | | this.$tab.navigateTo(`/pages/task/detail?id=${message.taskId}`) |
| | | } |
| | | } |
| | | }, |
| | | |
| | | // 更新TabBar徽标 |
| | | updateTabBarBadge() { |
| | | const unreadCount = this.messages.filter(msg => msg.isRead === '0').length |
| | | console.log('未读消息数量:', unreadCount) |
| | | |
| | | if (unreadCount > 0) { |
| | | uni.setTabBarBadge({ |
| | | index: 3, // 消息页面在tabBar中的索引 |
| | | text: unreadCount > 99 ? '99+' : unreadCount.toString() |
| | | }) |
| | | } else { |
| | | uni.removeTabBarBadge({ |
| | | index: 3 |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |