refactor(editor): 优化引用消息的点击事件处理逻辑

使用事件委托统一处理引用消息的点击事件,包括关闭按钮点击和光标定位
移除重复的事件监听器,简化代码结构
修复引用消息ID字段从msg_id改为id的匹配问题
This commit is contained in:
Phoenix 2025-06-06 13:43:39 +08:00
parent b18a6e5432
commit 1ff26564c7

View File

@ -375,6 +375,7 @@ const sendMessage = () => {
quoteId:messageData.quoteId,
}
console.log('发送前',data)
console.log('quoteData',quoteData.value)
emit(
'editor-event',
emitCall('text_event', data,(ok)=>{
@ -527,7 +528,7 @@ const parseEditorContent = () => {
const result = {
items: items.length > 0 ? items : [{ type: 1, content: '' }],
mentionUids,
quoteId: quoteElements.length > 0 && quoteData.value ? quoteData.value.msg_id ||'' : ''
quoteId: quoteElements.length > 0 && quoteData.value ? quoteData.value.id ||'' : ''
}
//
@ -840,10 +841,15 @@ const onSubscribeQuote = (data) => {
editor.appendChild(quoteElement)
}
//
const closeBtn = quoteElement.querySelector('.quote-close')
if (closeBtn) {
closeBtn.addEventListener('click', () => {
// 使
quoteElement.addEventListener('click', (e) => {
console.log('执行删除',e)
//
const closeButton = e.target.classList?.contains('quote-close') ? e.target : e.target.closest('.quote-close')
if (closeButton) {
//
e.stopPropagation()
//
quoteElement.remove()
@ -859,15 +865,8 @@ const onSubscribeQuote = (data) => {
setTimeout(() => {
editor.focus()
}, 0)
})
}
// saveDraft()稿
//
quoteElement.addEventListener('click', (e) => {
//
if (!e.target.classList.contains('quote-close')) {
} else {
//
const selection = window.getSelection()
const range = document.createRange()
range.setStartAfter(quoteElement)
@ -880,6 +879,13 @@ const onSubscribeQuote = (data) => {
}
})
// saveDraft()稿
//
//
//
//
//
//
const handleDeleteQuote = function(e) {
@ -1109,6 +1115,11 @@ onMounted(() => {
bus.subscribe(EditorConst.Edit, onSubscribeEdit)
bus.subscribe(EditorConst.Clear, onSubscribeClear)
//
if (editorRef.value) {
editorRef.value.addEventListener('click', handleEditorClick);
}
// mention
document.addEventListener('click', (event) => {
if (!editorRef.value?.contains(event.target)) {
@ -1134,6 +1145,11 @@ onBeforeUnmount(() => {
bus.unsubscribe(EditorConst.Edit, onSubscribeEdit)
bus.unsubscribe(EditorConst.Clear, onSubscribeClear)
//
if (editorRef.value) {
editorRef.value.removeEventListener('click', handleEditorClick);
}
// DOM
const editor = editorRef.value
if (editor && handleDeleteQuote) {
@ -1191,6 +1207,24 @@ const onVoteSubmit = (data) => {
})
isShowVote.value = false
}
//
const handleEditorClick = (event) => {
const closeButton = event.target.closest('.quote-close');
if (closeButton) {
const quoteElement = event.target.closest('.editor-quote');
if (quoteElement) {
quoteElement.remove();
quoteData.value = null;
handleInput({ target: editorRef.value });
event.preventDefault();
event.stopPropagation();
}
}
};
</script>
<template>