From 58e46fa09fdf361c19cdf9853d466de12cb3639d Mon Sep 17 00:00:00 2001 From: bob <312777916@qq.com> Date: Tue, 29 Apr 2025 18:02:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=B6=88=E6=81=AF=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/message.js | 4 +++ src/stores/message.js | 2 +- src/views/message/components/MessageItem.vue | 33 +++++++++++++++++--- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/api/message.js b/src/api/message.js index d657dab..0a05bb0 100644 --- a/src/api/message.js +++ b/src/api/message.js @@ -16,6 +16,10 @@ export const msgChatRevokeMsgService = (obj) => { return request.post('/chat/revokeMsg', obj) } +export const msgChatDeleteMsgService = (obj) => { + return request.post('/chat/deleteMsg', obj) +} + export const msgAtService = () => { return request.get('/chat/queryAt') } diff --git a/src/stores/message.js b/src/stores/message.js index 21b8593..6349c51 100644 --- a/src/stores/message.js +++ b/src/stores/message.js @@ -177,7 +177,7 @@ export const useMessageStore = defineStore('anylink-message', () => { */ const removeMsgRecord = (sessionId, msgKey) => { if (msgRecordsList.value[sessionId] && msgKey in msgRecordsList.value[sessionId]) { - delete msgRecordsList.value[sessionId][msgKey] + msgRecordsList.value[sessionId][msgKey].delete = true } } diff --git a/src/views/message/components/MessageItem.vue b/src/views/message/components/MessageItem.vue index 7bfcc60..a1848ba 100644 --- a/src/views/message/components/MessageItem.vue +++ b/src/views/message/components/MessageItem.vue @@ -23,7 +23,7 @@ import MsgBoxVideo from '@/views/message/components/MsgBoxVideo.vue' import MsgBoxDocument from '@/views/message/components/MsgBoxDocument.vue' import MenuMsgItem from '@/views/message/components/MenuMsgItem.vue' import { ElMessage } from 'element-plus' -import { msgChatRevokeMsgService } from '@/api/message' +import { msgChatDeleteMsgService, msgChatRevokeMsgService } from '@/api/message' const props = defineProps([ 'sessionId', @@ -631,6 +631,10 @@ const isRevoke = computed(() => { return msg.value.revoke }) +const isDelete = computed(() => { + return msg.value.delete +}) + const isReedit = computed(() => { const contentJson = jsonParseSafe(msg.value.content) if (!contentJson) { @@ -712,13 +716,13 @@ const onSelectMenuMsgItem = async (label) => { case 'revoke': msgChatRevokeMsgService({ sessionId: props.sessionId, - revokeMsgId: msg.value.msgId, // 服务器上删除用msg.value.msgId + revokeMsgId: msg.value.msgId, // 服务器上撤销用msg.value.msgId isGroupChat: isGroupChatMsgType.value, remoteId: messageData.sessionList[props.sessionId].remoteId }) .then((res) => { if (res.data.code === 0) { - // 本地删除用props.msgKey,因为key有可能是发送消息时产生的本地UUID + // 本地撤销用props.msgKey,因为key有可能是发送消息时产生的本地UUID messageData.revokeMsgRcord(props.sessionId, props.msgKey) isReeditTimeOut.value = false setTimeout(() => { @@ -731,6 +735,22 @@ const onSelectMenuMsgItem = async (label) => { console.error(error) }) break + case 'delete': + msgChatDeleteMsgService({ + sessionId: props.sessionId, + deleteMsgId: msg.value.msgId // 服务器上删除用msg.value.msgId + }) + .then((res) => { + if (res.data.code === 0) { + // 本地删除用props.msgKey,因为key有可能是发送消息时产生的本地UUID + messageData.removeMsgRecord(props.sessionId, props.msgKey) + ElMessage.success('消息已删除') + } + }) + .catch((error) => { + console.error(error) + }) + break default: break } @@ -778,7 +798,7 @@ watch( v-html="systemMsgContent" @click="onClickSystemMsg" > -
+
你撤回了一条消息 {{ `“${objectInfo.nickName}”撤回了一条消息` }}
+
+ 消息已删除 +
@@ -949,7 +972,7 @@ watch( user-select: text; } - .revoke-wrapper { + .revoke-delete { padding: 2px 4px 2px 4px; margin-top: 10px; margin-bottom: 10px;