fix: 问题修复

This commit is contained in:
huxuejian 2026-10-15 16:32:43 +08:00
parent ed85ad990e
commit 4d562fc3f1
4 changed files with 34 additions and 6 deletions

View File

@ -295,18 +295,21 @@ const sendVoiceMessage = async (voiceFile, duration) => {
// 发送消息的通用方法(文本、图片、语音)
const sendMessage = async (messageType, data) => {
await sendMessageUtil(
const result = await sendMessageUtil(
messageType,
data,
props.timChatManager,
() => validateBeforeSend(false, false, props.timChatManager),
() => {
showMorePanel.value = false;
// 发送成功后滚动到底部
emit("messageSent");
},
cloudCustomData.value
);
if (result?.success) {
// 让页面直接将本地消息加入列表,避免依赖全局 IM 回调的注册时机。
emit("messageSent", result.message);
}
};
// 发送自定义消息的通用方法

View File

@ -101,7 +101,7 @@
" :userId="openid" :teamId="teamId" :patientId="patientId" :corpId="corpId" :patientInfo="patientInfo"
:orderStatus="orderStatus" :isGenerating="isGenerating"
:canBenefitEntry="isBenefitEntryEnabled"
@scrollToBottom="() => scrollToBottom(true)" @messageSent="() => scrollToBottom(true)"
@scrollToBottom="() => scrollToBottom(true)" @messageSent="handleMessageSent"
@endConsult="handleEndConsult" @openConsult="handleOpenConsult">
<!-- AI助手按钮组插槽 -->
<template #ai-assistant>
@ -766,6 +766,29 @@ const scrollToBottom = (immediate = false) => {
}
};
// 发送成功后直接写入当前页面列表,避免全局 IM 回调被其他页面覆盖时消息不显示。
const handleMessageSent = (message) => {
if (
!message ||
!message.ID ||
message.conversationID !== chatInfo.value.conversationID
) {
scrollToBottom(true);
return;
}
const existingMessage = messageList.value.find(
(item) => item.ID === message.ID
);
if (!existingMessage) {
messageList.value.push(message);
} else {
existingMessage.status = message.status;
}
nextTick(() => scrollToBottom(true));
};
// 关闭功能栏
const closeMorePanel = () => {
uni.$emit("closeMorePanel");

View File

@ -116,7 +116,7 @@ const rule = computed(() => {
title: { name: "职称", disabled: false },
dept: { name: "科室", disabled: false },
}
if (doctorInfo.value) {
if (doctorInfo.value?.verifyStatus === "verified") {
data.job.name = "岗位 (不可修改)";
data.job.disabled = true;
}

View File

@ -513,6 +513,8 @@ export const sendMessage = async (messageType, data, timChatManager, validateBef
console.error('发送消息失败:', result?.error);
showMessage('发送失败,请重试');
}
return result;
};
// ==================== 状态检查相关工具方法 ====================