fix: 问题修复

This commit is contained in:
huxuejian 2026-08-03 18:37:29 +08:00
parent c7f7ec4ea7
commit 75e67e54bd
3 changed files with 16 additions and 12 deletions

View File

@ -9,7 +9,7 @@
<ChatHeader :order="order" :class="['tui-chat-header', !isPC && 'tui-chat-H5-header', isUniFrameWork && 'tui-chat-uniapp-header']" :isGroup="isGroup" :headerExtensionList="headerExtensionList" @closeChat="closeChat" @openGroupManagement="handleGroup" /> <ChatHeader :order="order" :class="['tui-chat-header', !isPC && 'tui-chat-H5-header', isUniFrameWork && 'tui-chat-uniapp-header']" :isGroup="isGroup" :headerExtensionList="headerExtensionList" @closeChat="closeChat" @openGroupManagement="handleGroup" />
<Forward @toggleMultipleSelectMode="toggleMultipleSelectMode" /> <Forward @toggleMultipleSelectMode="toggleMultipleSelectMode" />
<MessageList ref="messageListRef" :class="['tui-chat-message-list', !isPC && 'tui-chat-h5-message-list']" :isGroup="isGroup" :groupID="groupID" :isNotInGroup="isNotInGroup" :isMultipleSelectMode="isMultipleSelectMode" @handleEditor="handleEditor" @closeInputToolBar="() => changeToolbarDisplayType('none')" @toggleMultipleSelectMode="toggleMultipleSelectMode" @onMessageListUpdated="onMessageListUpdated" /> <MessageList ref="messageListRef" :class="['tui-chat-message-list', !isPC && 'tui-chat-h5-message-list']" :isGroup="isGroup" :groupID="groupID" :isNotInGroup="isNotInGroup" :isMultipleSelectMode="isMultipleSelectMode" @handleEditor="handleEditor" @closeInputToolBar="() => changeToolbarDisplayType('none')" @toggleMultipleSelectMode="toggleMultipleSelectMode" @onMessageListUpdated="onMessageListUpdated" />
<consult-countdown :expireTime="order.expireTime" :prescriptionStartTime="order.prescriptionStartTime" :prescriptionEndTime="order.prescriptionEndTime" v-if="(order.orderStatus === 'pending' || order.orderStatus === 'processing' || order.orderStatus === 'completed') && !isExpire" @countdown-finished="countdownFinished"></consult-countdown> <consult-countdown :expireTime="order.expireTime" :prescriptionStartTime="order.prescriptionStartTime" :prescriptionEndTime="order.prescriptionEndTime" v-if="order.orderStatus === 'pending' || order.orderStatus === 'processing' || order.orderStatus === 'completed'" @countdown-finished="countdownFinished"></consult-countdown>
<div <div
v-if="isNotInGroup" v-if="isNotInGroup"
:class="{ :class="{
@ -73,11 +73,6 @@ const props = defineProps({
default: () => ({}), default: () => ({}),
}, },
}); });
//
const isExpire = computed(() => {
return props.order.expireTime ? props.order.expireTime < Date.now() : false;
});
const closeOrder = (conversationID: string) => { const closeOrder = (conversationID: string) => {
emits("closeChat", conversationID); emits("closeChat", conversationID);
reset(); reset();

View File

@ -13,7 +13,7 @@
:order="order" :order="order"
@handRefundConsultation="handRefundConsultation" @handRefundConsultation="handRefundConsultation"
@endConsultation="endConsultation" @endConsultation="endConsultation"
@countdownFinished="endConsultation" @countdownFinished="endConsultation('COUNTDOWN')"
@onMessageListUpdated="onMessageListUpdated" @onMessageListUpdated="onMessageListUpdated"
> >
<div class="noChatView">请在左侧选择会话进入聊天</div> <div class="noChatView">请在左侧选择会话进入聊天</div>
@ -219,19 +219,28 @@ async function refund(arr) {
rejectVisible.value = false; rejectVisible.value = false;
} }
// //
async function endConsultation() { async function endConsultation(triggerSource = "MANUAL") {
// const hasActiveVideoConsult =
if (videoConsultStore.status !== "idle" && videoConsultStore.activeOrderId === order.value.orderId) { videoConsultStore.status !== "idle" &&
videoConsultStore.activeOrderId === order.value.orderId;
//
if (triggerSource === "MANUAL" && hasActiveVideoConsult) {
console.log("[VIDEO][PC] endConsultation: ending video consult before finishing order"); console.log("[VIDEO][PC] endConsultation: ending video consult before finishing order");
await videoConsultStore.leaveRoom({ reason: "consult_ended", skipSendSignal: false }); await videoConsultStore.leaveRoom({ reason: "consult_ended", skipSendSignal: false });
} }
const { data, success, message } = await finishConsultOrder({ const { data, success, message } = await finishConsultOrder({
orderId: order.value.orderId, orderId: order.value.orderId,
triggerSource,
}); });
if (success) { if (success) {
if (triggerSource === "COUNTDOWN" && hasActiveVideoConsult) {
await videoConsultStore.leaveRoom({ reason: "consult_ended", skipSendSignal: false });
}
order.value.orderStatus = "finished"; order.value.orderStatus = "finished";
order.value.status = "已结束"; order.value.status = "已结束";
} else if (triggerSource === "COUNTDOWN" && data && data.expired === false) {
order.value.expireTime = data.expireTime;
} else { } else {
ElMessage.warning(message); ElMessage.warning(message);
} }