完成图片、文件兼容修改语音icon 回复头像显示

This commit is contained in:
2025-07-05 14:25:53 +08:00
parent ad33895b6d
commit 179005822d
21 changed files with 2715 additions and 73 deletions

View File

@@ -41,16 +41,16 @@
<TextMessageRender :message="source" />
</template>
<template v-else-if="source.contentType === 102">
<MediaMessageRender :source="source" />
<MediaMessageRender :message="source" />
</template>
<template v-else-if="source.contentType === 103">
<VoiceMessageRender :source="source" />
<VoiceMessageRender :source="source" :isSender="isSender" />
</template>
<template v-else-if="source.contentType === 104">
<view style="color:#999">[暂未实现] 视频消息</view>
</template>
<template v-else-if="source.contentType === 105">
<view style="color:#999">[暂未实现] 文件消息</view>
<FileMessageRender :source="source" />
</template>
<template v-else-if="source.contentType === 106">
<view style="color:#999">[暂未实现] @消息</view>
@@ -93,6 +93,7 @@ import TextMessageRender from "./TextMessageRender.vue";
import MediaMessageRender from "./MediaMessageRender.vue";
import ErrorMessageRender from "./ErrorMessageRender.vue";
import VoiceMessageRender from './VoiceMessageRender.vue'
import FileMessageRender from './FileMessageRender.vue'
import { noticeMessageTypes } from "@/constant";
import { tipMessaggeFormat, formatMessageTime } from "@/util/imCommon";
@@ -106,7 +107,8 @@ export default {
TextMessageRender,
MediaMessageRender,
ErrorMessageRender,
VoiceMessageRender
VoiceMessageRender,
FileMessageRender
},
props: {
source: Object,
@@ -131,15 +133,18 @@ export default {
);
},
formattedMessageTime() {
return formatMessageTime(this.source.sendTime);
return this.source && this.source.sendTime ? formatMessageTime(this.source.sendTime) : '';
},
showTextRender() {
return textRenderTypes.includes(this.source.contentType);
return this.source && this.source.contentType ? textRenderTypes.includes(this.source.contentType) : false;
},
showMediaRender() {
return mediaRenderTypes.includes(this.source.contentType);
return this.source && this.source.contentType ? mediaRenderTypes.includes(this.source.contentType) : false;
},
getNoticeContent() {
if (!this.source || !this.source.contentType) {
return "";
}
const isNoticeMessage = noticeMessageTypes.includes(
this.source.contentType
);
@@ -151,13 +156,13 @@ export default {
);
},
isSuccessMessage() {
return this.source.status === MessageStatus.Succeed;
return this.source && this.source.status === MessageStatus.Succeed;
},
isFailedMessage() {
return this.source.status === MessageStatus.Failed;
return this.source && this.source.status === MessageStatus.Failed;
},
showSending() {
return this.source.status === MessageStatus.Sending && !this.sendingDelay;
return this.source && this.source.status === MessageStatus.Sending && !this.sendingDelay;
},
},
mounted() {
@@ -166,7 +171,7 @@ export default {
},
methods: {
setSendingDelay() {
if (this.source.status === MessageStatus.Sending) {
if (this.source && this.source.status === MessageStatus.Sending) {
setTimeout(() => {
this.sendingDelay = false;
}, 2000);