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

View File

@@ -108,6 +108,22 @@ onMounted(() => {
.arco-list-content { .arco-list-content {
max-height: 184px; 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 { .arco-list-item {
padding: 6px; padding: 6px;

View File

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