| | |
| | | <view class="unread-dot" v-if="message.isRead === '0'"></view> |
| | | </view> |
| | | <view class="message-content">{{ message.messageContent }}</view> |
| | | <view class="message-time">{{ message.createTime }}</view> |
| | | <view class="message-time">{{ formatMessageTime(message.createTime) }}</view> |
| | | </view> |
| | | </view> |
| | | |
| | |
| | | |
| | | <script> |
| | | import { getMyMessages, markAsRead } from '@/api/message' |
| | | import { formatDateTime } from '@/utils/common' |
| | | |
| | | export default { |
| | | data() { |
| | |
| | | sortedMessages() { |
| | | return [...this.messages].sort((a, b) => { |
| | | if (a.isRead === b.isRead) { |
| | | // 相同状态按时间倒序 |
| | | return new Date(b.createTime) - new Date(a.createTime); |
| | | // 相同状态按时间倒序 - 使用兼容iOS的日期格式 |
| | | const timeA = a.createTime ? new Date(a.createTime.replace(/-/g, '/')) : new Date(0) |
| | | const timeB = b.createTime ? new Date(b.createTime.replace(/-/g, '/')) : new Date(0) |
| | | return timeB - timeA |
| | | } |
| | | // 未读的排在前面 |
| | | return a.isRead === '0' ? -1 : 1; |
| | | }); |
| | | return a.isRead === '0' ? -1 : 1 |
| | | }) |
| | | } |
| | | }, |
| | | onLoad() { |
| | |
| | | |
| | | // 跳转到任务详情页面 |
| | | if (message.taskId) { |
| | | this.$tab.navigateTo(`/pages/task/detail?id=${message.taskId}`) |
| | | this.$tab.navigateTo(`/pagesTask/detail?id=${message.taskId}`) |
| | | } else { |
| | | this.$modal.showToast('无法找到关联任务') |
| | | } |
| | |
| | | console.error('标记消息已读失败:', error) |
| | | // 即使标记失败,也允许跳转 |
| | | if (message && message.taskId) { |
| | | this.$tab.navigateTo(`/pages/task/detail?id=${message.taskId}`) |
| | | this.$tab.navigateTo(`/pagesTask/detail?id=${message.taskId}`) |
| | | } |
| | | } |
| | | }, |
| | |
| | | index: 3 |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | // 格式化消息时间显示 |
| | | formatMessageTime(dateTime) { |
| | | if (!dateTime) return '' |
| | | return formatDateTime(dateTime, 'MM-DD HH:mm') |
| | | } |
| | | } |
| | | } |