From 57e4ba69d93c9fc0c37c7714fe1a7a9c4bb70fbd Mon Sep 17 00:00:00 2001 From: Phoenix <64720302+Concur-max@users.noreply.github.com> Date: Wed, 11 Jun 2025 11:39:11 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=BB=9F=E4=B8=80=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E6=B6=88=E6=81=AF=E5=A4=84=E7=90=86=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E7=BC=96=E8=BE=91=E5=99=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将错误消息处理移至请求拦截器统一处理 - 优化编辑器提及功能,过滤当前用户 - 清理编辑器相关冗余代码和注释 - 改进空消息检测逻辑 --- src/components/editor/CustomEditor.vue | 27 +++++++++----------------- src/store/modules/dialogue.js | 2 -- src/utils/request.js | 7 ++++++- 3 files changed, 15 insertions(+), 21 deletions(-) diff --git a/src/components/editor/CustomEditor.vue b/src/components/editor/CustomEditor.vue index 7711510..5cf1d0f 100644 --- a/src/components/editor/CustomEditor.vue +++ b/src/components/editor/CustomEditor.vue @@ -10,7 +10,7 @@ import { bus } from '@/utils/event-bus' import { EditorConst } from '@/constant/event-bus' import { emitCall } from '@/utils/common' import { deltaToMessage, deltaToString, isEmptyDelta } from './util' -import { useDialogueStore, useEditorDraftStore } from '@/store' +import { useDialogueStore, useEditorDraftStore ,useUserStore} from '@/store' import { uploadImg } from '@/api/upload' import { defAvatar } from '@/constant/default' import { getImageInfo } from '@/utils/functions' @@ -32,7 +32,7 @@ const props = defineProps({ }) const emit = defineEmits(['editor-event']) - +const userStore = useUserStore() const editorRef = ref(null) const content = ref('') const isFocused = ref(false) @@ -174,8 +174,9 @@ const checkMention = (target) => { const showMentionList = () => { const query = currentMentionQuery.value.toLowerCase() mentionList.value = props.members.filter(member => { - return member.value.toLowerCase().startsWith(query) + return member.value.toLowerCase().startsWith(query)&& member.id !== userStore.uid }) + console.log('userStore',userStore.uid) if(dialogueStore.groupInfo.is_manager){ mentionList.value.unshift({ id: 0, nickname: '全体成员', avatar: defAvatar, value: '全体成员' }) } @@ -347,20 +348,15 @@ const handlePaste = (event) => { } } } - - -// Helper function to insert line break const insertLineBreak = (range) => { const editor = editorRef.value; if (!editor) return; const br = document.createElement('br'); - range.deleteContents(); // Clear selected content or collapsed cursor position + range.deleteContents(); range.insertNode(br); - // Create a zero-width space or a text node to ensure the cursor can be placed after the
- // and that the
is not immediately removed by cleanup logic if it's the only content. - const nbsp = document.createTextNode('\u200B'); // Zero-width space + const nbsp = document.createTextNode('\u200B'); range.setStartAfter(br); range.insertNode(nbsp); range.setStartAfter(nbsp); @@ -372,7 +368,6 @@ const insertLineBreak = (range) => { selection.addRange(range); } - // Ensure editor focus and trigger input handling editor.focus(); nextTick(() => { handleInput({ target: editor }); @@ -606,15 +601,11 @@ const handleKeydown = (event) => { !messageData.items[0].content.trimEnd()); if (isEmptyMessage) { - // If the message is considered empty, prevent sending. - // Ensure editor is truly empty if it wasn't already. if (editor.innerHTML !== '') { clearEditor(); } return; } - - // If message is not empty, proceed to send. const quoteElement = editor.querySelector('.editor-quote'); if (!quoteElement && quoteData.value) { quoteData.value = null; @@ -643,15 +634,15 @@ const sendMessage = () => { } messageData.items.forEach(item => { - if (item.type === 1 && cleanInvisibleChars(item.content).trimEnd()) { // Apply trimEnd after cleaning + if (item.type === 1 && cleanInvisibleChars(item.content).trimEnd()) { const finalContent = cleanInvisibleChars(item.content).replace(//gi, '\n').trimEnd(); if (!finalContent && !messageData.mentionUids.length && !messageData.quoteId) { - // If after processing, the content is empty and no mentions/quote, skip + return; } const data = { items: [{ - content: finalContent, // Use the processed content + content: finalContent, type: 1 }], mentionUids: messageData.mentionUids, diff --git a/src/store/modules/dialogue.js b/src/store/modules/dialogue.js index b235bc2..0e2b16d 100644 --- a/src/store/modules/dialogue.js +++ b/src/store/modules/dialogue.js @@ -245,8 +245,6 @@ export const useDialogueStore = defineStore('dialogue', { }).then((res) => { if (res.code == 200) { this.batchDelDialogueRecord(msgIds) - } else { - window['$message'].warning(res.message) } }) }, diff --git a/src/utils/request.js b/src/utils/request.js index 626977d..9377a73 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -53,7 +53,12 @@ request.interceptors.request.use((config) => { }, errorHandler) // 响应拦截器 -request.interceptors.response.use((response) => response.data, errorHandler) +request.interceptors.response.use((response) => { + if(response.data.code !==200){ + window['$message'].warning(response.data.msg) + } + return response.data +}, errorHandler) /** * GET 请求