From ad33895b6dd772159c49b7b6712ef15b78e1256f Mon Sep 17 00:00:00 2001 From: 86156 <823267011@qq.com> Date: Fri, 4 Jul 2025 22:34:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=8F=91=E9=80=81=E8=AF=AD?= =?UTF-8?q?=E9=9F=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/vcs.xml | 4 +- App.vue | 1 - components/EmojiPicker/index.vue | 55 +++ .../components/ChatingFooter/index.vue | 454 +++++++++++++++--- .../chating/components/ChatingList.vue | 8 +- .../MessageItem/TextMessageRender.vue | 3 +- .../MessageItem/VoiceMessageRender.vue | 97 ++++ .../chating/components/MessageItem/index.vue | 38 +- .../components/ConversationItem.vue | 3 + util/imCommon.js | 2 + 10 files changed, 571 insertions(+), 94 deletions(-) create mode 100644 components/EmojiPicker/index.vue create mode 100644 pages/conversation/chating/components/MessageItem/VoiceMessageRender.vue diff --git a/.idea/vcs.xml b/.idea/vcs.xml index d843f34..94a25f7 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,4 +1,6 @@ - + + + \ No newline at end of file diff --git a/App.vue b/App.vue index 856abbd..424dcbb 100644 --- a/App.vue +++ b/App.vue @@ -365,7 +365,6 @@ export default { isLogStandardOutput: true, isExternalExtensions: false, }); - console.log(flag); if (!flag) { plus.navigator.closeSplashscreen(); uni.$u.toast("初始化IMSDK失败!"); diff --git a/components/EmojiPicker/index.vue b/components/EmojiPicker/index.vue new file mode 100644 index 0000000..13f936f --- /dev/null +++ b/components/EmojiPicker/index.vue @@ -0,0 +1,55 @@ + + + + + \ No newline at end of file diff --git a/pages/conversation/chating/components/ChatingFooter/index.vue b/pages/conversation/chating/components/ChatingFooter/index.vue index 1dffb8e..16806d7 100644 --- a/pages/conversation/chating/components/ChatingFooter/index.vue +++ b/pages/conversation/chating/components/ChatingFooter/index.vue @@ -4,59 +4,119 @@ - - - + + + + + + + + + + + + + 松开手指,取消发送 + 正在讲话,已录制 {{recordingTime}} 秒,松开发送 + + + + + - - - - - - - + + + - - + + + + + + + + + @@ -298,7 +582,7 @@ export default { min-height: 30px; max-height: 120px; margin: 0 24rpx; - border-radius: 8rpx; + border-radius: 16rpx; position: relative; .record_btn { @@ -350,4 +634,18 @@ export default { color: #fff; } } - + +.emoji-mask { + position: fixed; + left: 0; + top: 0; + width: 100vw; + height: 100vh; + background: transparent; + z-index: 998; +} +.emoji-picker { + position: relative; + z-index: 999; +} + \ No newline at end of file diff --git a/pages/conversation/chating/components/ChatingList.vue b/pages/conversation/chating/components/ChatingList.vue index bc773a9..cb8a73e 100644 --- a/pages/conversation/chating/components/ChatingList.vue +++ b/pages/conversation/chating/components/ChatingList.vue @@ -140,10 +140,7 @@ export default { return; } - if (!isInit) { - this.withAnimation = true; - setTimeout(() => (this.withAnimation = false), 100); - } + this.withAnimation = true; this.$nextTick(() => { uni @@ -151,14 +148,11 @@ export default { .in(this) .select("#scroll_wrap") .boundingClientRect((res) => { - // let top = res.height - this.scrollViewHeight; - // if (top > 0) { this.scrollTop = this.old.scrollTop this.$nextTick(() => this.scrollTop = res.height); if (isInit) { this.$emit("initSuccess"); } - // } }) .exec(); }); diff --git a/pages/conversation/chating/components/MessageItem/TextMessageRender.vue b/pages/conversation/chating/components/MessageItem/TextMessageRender.vue index 5161350..8ecaeda 100644 --- a/pages/conversation/chating/components/MessageItem/TextMessageRender.vue +++ b/pages/conversation/chating/components/MessageItem/TextMessageRender.vue @@ -20,7 +20,8 @@ export default { }, computed: { getContent() { - return parseBr(this.message.textElem?.content); + console.log(this.message); + return parseBr(this.message.textElem.content); }, }, data() { diff --git a/pages/conversation/chating/components/MessageItem/VoiceMessageRender.vue b/pages/conversation/chating/components/MessageItem/VoiceMessageRender.vue new file mode 100644 index 0000000..e6be4a1 --- /dev/null +++ b/pages/conversation/chating/components/MessageItem/VoiceMessageRender.vue @@ -0,0 +1,97 @@ + + + + + \ No newline at end of file diff --git a/pages/conversation/chating/components/MessageItem/index.vue b/pages/conversation/chating/components/MessageItem/index.vue index 92934a0..19aaabb 100644 --- a/pages/conversation/chating/components/MessageItem/index.vue +++ b/pages/conversation/chating/components/MessageItem/index.vue @@ -37,12 +37,36 @@ - - - + + + + + + + + + + @@ -68,6 +92,7 @@ import MyAvatar from "@/components/MyAvatar/index.vue"; import TextMessageRender from "./TextMessageRender.vue"; import MediaMessageRender from "./MediaMessageRender.vue"; import ErrorMessageRender from "./ErrorMessageRender.vue"; +import VoiceMessageRender from './VoiceMessageRender.vue' import { noticeMessageTypes } from "@/constant"; import { tipMessaggeFormat, formatMessageTime } from "@/util/imCommon"; @@ -81,6 +106,7 @@ export default { TextMessageRender, MediaMessageRender, ErrorMessageRender, + VoiceMessageRender }, props: { source: Object, diff --git a/pages/conversation/conversationList/components/ConversationItem.vue b/pages/conversation/conversationList/components/ConversationItem.vue index b5af32e..79e7caa 100644 --- a/pages/conversation/conversationList/components/ConversationItem.vue +++ b/pages/conversation/conversationList/components/ConversationItem.vue @@ -48,10 +48,13 @@ export default { }, computed: { latestMessage() { + if (this.source.latestMsg === "") return ""; let parsedMessage; try { parsedMessage = JSON.parse(this.source.latestMsg); + console.log(parsedMessage); + } catch (e) {} if (!parsedMessage) return ""; return getConversationContent(parsedMessage); diff --git a/util/imCommon.js b/util/imCommon.js index 245bd21..c56e3c8 100644 --- a/util/imCommon.js +++ b/util/imCommon.js @@ -128,6 +128,8 @@ export const parseMessageByType = (pmsg) => { return pmsg.textElem.content; case MessageType.PictureMessage: return `[图片]`; + case MessageType.VoiceMessage: + return `[语音]`; case MessageType.FriendAdded: return "你们已经是好友了,开始聊天吧~"; case MessageType.MemberEnter: