diff --git a/src/views/mall/promotion/kefu/components/KeFuMessageList.vue b/src/views/mall/promotion/kefu/components/KeFuMessageList.vue index 577df673d20b6823d5e4c07bfa6b6a91611f8a71..6d78c913dd46e0cc4f66dedd0136d022b77c4ce8 100644 --- a/src/views/mall/promotion/kefu/components/KeFuMessageList.vue +++ b/src/views/mall/promotion/kefu/components/KeFuMessageList.vue @@ -279,8 +279,9 @@ const handleSendMessage = async (event: any) => { return } // 1. 校验消息是否为空 - if (isEmpty(unref(message.value))) { + if (isEmpty(unref(message.value)?.trim())) { messageTool.notifyWarning('请输入消息后再发送哦!') + message.value = '' return } // 2. 组织发送消息 diff --git a/src/views/mall/promotion/kefu/index.vue b/src/views/mall/promotion/kefu/index.vue index f0fa2a0265db4a818f95f90004212e97fe5f3fe6..916c375f8849a54bf4fdf75a2c16d35c0fbeecf0 100644 --- a/src/views/mall/promotion/kefu/index.vue +++ b/src/views/mall/promotion/kefu/index.vue @@ -37,40 +37,45 @@ const { data, close, open } = useWebSocket(server.value, { }) /** 监听 WebSocket 数据 */ -watchEffect(() => { - if (!data.value) { - return - } - try { - // 1. 收到心跳 - if (data.value === 'pong') { - return - } - // 2.1 解析 type 消息类型 - const jsonMessage = JSON.parse(data.value) - const type = jsonMessage.type - if (!type) { - message.error('未知的消息类型:' + data.value) - return - } - // 2.2 消息类型:KEFU_MESSAGE_TYPE - if (type === WebSocketMessageTypeConstants.KEFU_MESSAGE_TYPE) { - const message = JSON.parse(jsonMessage.content) - // 刷新会话列表 - kefuStore.updateConversation(message.conversationId) - // 刷新消息列表 - keFuChatBoxRef.value?.refreshMessageList(message) - return - } - // 2.3 消息类型:KEFU_MESSAGE_ADMIN_READ - if (type === WebSocketMessageTypeConstants.KEFU_MESSAGE_ADMIN_READ) { - // 更新会话已读 - kefuStore.updateConversationStatus(jsonParse(jsonMessage.content)) +watch( + () => data.value, + (newData) => { + if (!newData) return + try { + // 1. 收到心跳 + if (newData === 'pong') return + + // 2.1 解析 type 消息类型 + const jsonMessage = JSON.parse(newData) + const type = jsonMessage.type + if (!type) { + message.error('未知的消息类型:' + newData) + return + } + + // 2.2 消息类型:KEFU_MESSAGE_TYPE + if (type === WebSocketMessageTypeConstants.KEFU_MESSAGE_TYPE) { + const message = JSON.parse(jsonMessage.content) + // 刷新会话列表 + kefuStore.updateConversation(message.conversationId) + // 刷新消息列表 + keFuChatBoxRef.value?.refreshMessageList(message) + return + } + + // 2.3 消息类型:KEFU_MESSAGE_ADMIN_READ + if (type === WebSocketMessageTypeConstants.KEFU_MESSAGE_ADMIN_READ) { + // 更新会话已读 + kefuStore.updateConversationStatus(jsonParse(jsonMessage.content)) + } + } catch (error) { + console.error(error) } - } catch (error) { - console.error(error) + }, + { + immediate: false // 不立即执行 } -}) +) // ======================= WebSocket end ======================= /** 加载指定会话的消息列表 */