fix: 修复消息已读后计数未更新的问题

This commit is contained in:
2025-06-13 22:54:39 +08:00
parent 8c100e5753
commit fa1291bda2
3 changed files with 35 additions and 19 deletions

View File

@@ -15,6 +15,11 @@ export function listMessage(query: T.MessagePageQuery) {
return http.get<PageRes<T.MessageResp[]>>(`${BASE_URL}`, query)
}
/** @desc 获取用户消息详情 */
export function getUserMessage(id: number) {
return http.get<T.MessageResp>(`${BASE_URL}/${id}`)
}
/** @desc 删除消息 */
export function deleteMessage(ids: Array<string>) {
return http.del(`${BASE_URL}`, { ids })

View File

@@ -108,6 +108,22 @@ onMounted(() => {
.arco-list-content {
max-height: 184px;
overflow-y: auto;
padding-right: 8px;
&::-webkit-scrollbar {
width: 6px;
height: 6px;
}
&::-webkit-scrollbar-thumb {
background-color: var(--color-text-4);
border-radius: 3px;
&:hover {
background-color: var(--color-text-3);
}
}
.arco-list-item {
padding: 6px;

View File

@@ -101,7 +101,15 @@
import type { TableInstance } from '@arco-design/web-vue'
import { Message, Modal } from '@arco-design/web-vue'
import { useWindowSize } from '@vueuse/core'
import { type MessageQuery, deleteMessage, listMessage, readAllMessage, readMessage } from '@/apis'
import {
type MessageQuery,
type MessageResp,
deleteMessage,
getUserMessage,
listMessage,
readAllMessage,
readMessage,
} from '@/apis'
import { useTable } from '@/hooks'
import { useDict } from '@/hooks/app'
import mittBus from '@/utils/mitt'
@@ -183,28 +191,15 @@ const onReadAll = async () => {
})
}
// 消息详情弹窗相关
const messageDetailVisible = ref(false)
const currentMessage = ref()
// 标记单条消息为已读
const markAsRead = async (messageId: string) => {
try {
await readMessage([messageId])
search()
} catch (error) {
Message.error('操作失败')
}
}
const currentMessage = ref<MessageResp>()
// 显示消息详情
const showMessageDetail = async (record: any) => {
currentMessage.value = record
messageDetailVisible.value = true
// 如果消息未读,自动标记为已读
if (!record.isRead) {
await markAsRead(record.id)
}
const { data } = await getUserMessage(record.id)
currentMessage.value = data
record.isRead = currentMessage.value?.isRead
onSuccess()
}
</script>