fix: 问题修复

This commit is contained in:
huxuejian 2026-02-10 17:13:02 +08:00
parent 93898e03a9
commit c56580d6c0
2 changed files with 25 additions and 64 deletions

View File

@ -5,57 +5,31 @@
</text> </text>
<!-- 图片消息 --> <!-- 图片消息 -->
<image <image v-else-if="message.type === 'TIMImageElem'" class="message-image" :src="message.payload.imageInfoArray[0].LocalURL ||
v-else-if="message.type === 'TIMImageElem'" message.payload.imageInfoArray[0].url
class="message-image" " mode="aspectFill" :style="getImageStyle(message.payload.imageInfoArray[0])" @click="
:src="
message.payload.imageInfoArray[0].LocalURL ||
message.payload.imageInfoArray[0].url
"
mode="aspectFill"
:style="getImageStyle(message.payload.imageInfoArray[0])"
@click="
$emit( $emit(
'previewImage', 'previewImage',
message.payload.imageInfoArray[0].LocalURL || message.payload.imageInfoArray[0].LocalURL ||
message.payload.imageInfoArray[0].url message.payload.imageInfoArray[0].url
) )
" " />
/>
<!-- 语音消息 --> <!-- 语音消息 -->
<view <view v-else-if="message.type === 'TIMSoundElem'" class="voice-message" :class="{ 'voice-playing': isPlaying }"
v-else-if="message.type === 'TIMSoundElem'" :style="getVoiceStyle(message.payload.second)" @click="$emit('playVoice', message)">
class="voice-message"
:class="{ 'voice-playing': isPlaying }"
:style="getVoiceStyle(message.payload.second)"
@click="$emit('playVoice', message)"
>
<view class="voice-content"> <view class="voice-content">
<view class="voice-icon-wrapper"> <view class="voice-icon-wrapper">
<uni-icons <uni-icons type="sound" size="20" :color="message.flow === 'out' ? '#fff' : '#333'"
type="sound" :class="{ 'icon-animate': isPlaying }" />
size="20"
:color="message.flow === 'out' ? '#fff' : '#333'"
:class="{ 'icon-animate': isPlaying }"
/>
<!-- 播放中的声波动画 --> <!-- 播放中的声波动画 -->
<view v-if="isPlaying" class="sound-wave"> <view v-if="isPlaying" class="sound-wave">
<view <view class="wave-bar" :style="{ background: message.flow === 'out' ? '#fff' : '#0877f1' }"
class="wave-bar" style="animation-delay: 0s"></view>
:style="{ background: message.flow === 'out' ? '#fff' : '#0877f1' }" <view class="wave-bar" :style="{ background: message.flow === 'out' ? '#fff' : '#0877f1' }"
style="animation-delay: 0s" style="animation-delay: 0.2s"></view>
></view> <view class="wave-bar" :style="{ background: message.flow === 'out' ? '#fff' : '#0877f1' }"
<view style="animation-delay: 0.4s"></view>
class="wave-bar"
:style="{ background: message.flow === 'out' ? '#fff' : '#0877f1' }"
style="animation-delay: 0.2s"
></view>
<view
class="wave-bar"
:style="{ background: message.flow === 'out' ? '#fff' : '#0877f1' }"
style="animation-delay: 0.4s"
></view>
</view> </view>
</view> </view>
<text class="voice-duration">{{ message.payload.second }}"</text> <text class="voice-duration">{{ message.payload.second }}"</text>
@ -65,39 +39,24 @@
<!-- 自定义消息卡片 --> <!-- 自定义消息卡片 -->
<template v-else-if="message.type === 'TIMCustomElem'"> <template v-else-if="message.type === 'TIMCustomElem'">
<!-- 文章消息 --> <!-- 文章消息 -->
<view <view v-if="getCustomMessageType(message) === 'article'" class="article-card" @click="handleArticleClick(message)">
v-if="getCustomMessageType(message) === 'article'"
class="article-card"
@click="handleArticleClick(message)"
>
<view class="article-content"> <view class="article-content">
<view class="article-title">{{ getArticleData(message).title }}</view> <view class="article-title">{{ getArticleData(message).title }}</view>
<view class="article-desc">{{ getArticleData(message).desc }}</view> <view class="article-desc">{{ getArticleData(message).desc }}</view>
</view> </view>
<image <image v-if="getArticleData(message).imgUrl" class="article-image" :src="getArticleData(message).imgUrl"
v-if="getArticleData(message).imgUrl" mode="aspectFill" />
class="article-image"
:src="getArticleData(message).imgUrl"
mode="aspectFill"
/>
</view> </view>
<!-- 问卷消息 --> <!-- 问卷消息 -->
<view <view v-else-if="getCustomMessageType(message) === 'survey'" class="survey-card"
v-else-if="getCustomMessageType(message) === 'survey'" @click="handleSurveyClick(message)">
class="survey-card"
@click="handleSurveyClick(message)"
>
<view class="survey-content"> <view class="survey-content">
<view class="survey-title">{{ getSurveyData(message).title }}</view> <view class="survey-title">{{ getSurveyData(message).title }}</view>
<view class="survey-desc">{{ getSurveyData(message).desc }}</view> <view class="survey-desc">{{ getSurveyData(message).desc }}</view>
</view> </view>
<image <image v-if="getSurveyData(message).imgUrl" class="survey-image" :src="getSurveyData(message).imgUrl"
v-if="getSurveyData(message).imgUrl" mode="aspectFill" />
class="survey-image"
:src="getSurveyData(message).imgUrl"
mode="aspectFill"
/>
</view> </view>
<!-- 其他自定义消息 --> <!-- 其他自定义消息 -->
@ -122,6 +81,7 @@ import { getParsedCustomMessage } from "@/utils/chat-utils.js";
// import MessageCard from "./message-card/message-card.vue"; // import MessageCard from "./message-card/message-card.vue";
const props = defineProps({ const props = defineProps({
corpId: String,
message: Object, message: Object,
patientInfo: Object, patientInfo: Object,
formatTime: Function, formatTime: Function,
@ -237,7 +197,7 @@ const getArticleData = (message) => {
const handleArticleClick = (message) => { const handleArticleClick = (message) => {
const { articleId } = getArticleData(message); const { articleId } = getArticleData(message);
uni.navigateTo({ uni.navigateTo({
url: `/pages/article/article-detail?id=${articleId}`, url: `/pages/article/article-detail?id=${articleId}&corpId=${props.corpId}`,
}); });
}; };

View File

@ -99,6 +99,7 @@
<view class="message-bubble" :class="getBubbleClass(message)"> <view class="message-bubble" :class="getBubbleClass(message)">
<!-- 消息内容 --> <!-- 消息内容 -->
<MessageTypes <MessageTypes
:corpId="corpId"
:message="message" :message="message"
:formatTime="formatTime" :formatTime="formatTime"
:playingVoiceId="playingVoiceId" :playingVoiceId="playingVoiceId"