wlzboy
2025-10-26 1626d13ec8b1a63676e63cf95c5004c4118da3b3
app/pages/message/index.vue
@@ -10,7 +10,7 @@
        <view 
          class="message-item" 
          v-for="message in sortedMessages" 
          :key="message.id"
          :key="message.messageId"
          @click="viewMessageDetail(message)"
        >
          <view class="message-main">
@@ -62,6 +62,8 @@
    onShow() {
      // 每次显示页面时刷新消息
      this.loadMessages()
      // 更新TabBar徽标
      this.updateTabBarBadge()
    },
    onPullDownRefresh() {
      this.loadMessages().then(() => {
@@ -101,10 +103,19 @@
      // 查看消息详情(跳转到任务详情)
      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()
          }
          
          // 跳转到任务详情页面
@@ -116,10 +127,27 @@
        } 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
          })
        }
      }
    }
  }