From cbe3acf946848a38719a5549e5a02c703a585dd4 Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Fri, 11 Jul 2025 14:20:17 +0800 Subject: [PATCH 01/16] =?UTF-8?q?=E6=8D=A2=E8=A1=8C=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- im-uniapp/components/chat-message-item/chat-message-item.vue | 2 +- im-web/src/components/chat/ChatMessageItem.vue | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/im-uniapp/components/chat-message-item/chat-message-item.vue b/im-uniapp/components/chat-message-item/chat-message-item.vue index 88d6db8..33dde0c 100644 --- a/im-uniapp/components/chat-message-item/chat-message-item.vue +++ b/im-uniapp/components/chat-message-item/chat-message-item.vue @@ -296,7 +296,7 @@ export default { font-size: $im-font-size; text-align: left; display: block; - word-break: break-all; + word-break: break-word; white-space: pre-line; &:after { diff --git a/im-web/src/components/chat/ChatMessageItem.vue b/im-web/src/components/chat/ChatMessageItem.vue index 07244d5..e87ba71 100644 --- a/im-web/src/components/chat/ChatMessageItem.vue +++ b/im-web/src/components/chat/ChatMessageItem.vue @@ -263,7 +263,7 @@ export default { font-size: var(--im-font-size); text-align: left; white-space: pre-wrap; - word-break: break-all; + word-break: break-word; &:after { content: ""; From bfc6f0056ed91b5bfca3a039196deb79c0ddfa96 Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Wed, 16 Jul 2025 17:19:37 +0800 Subject: [PATCH 02/16] =?UTF-8?q?=E5=A4=B4=E5=83=8F=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/head-image/head-image.vue | 8 +++++-- im-web/src/components/common/HeadImage.vue | 24 +++++++++++++------ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/im-uniapp/components/head-image/head-image.vue b/im-uniapp/components/head-image/head-image.vue index 3e4210a..1f1251e 100644 --- a/im-uniapp/components/head-image/head-image.vue +++ b/im-uniapp/components/head-image/head-image.vue @@ -71,11 +71,15 @@ export default { avatarTextStyle() { return `width: ${this._size}rpx; height:${this._size}rpx; - background-color:${this.name ? this.textColor : '#fff'}; - font-size:${this._size * 0.5}rpx; + background: linear-gradient(145deg,#ffffff20 25%,#00000060),${this.textColor}; + font-size:${this._size * 0.45}rpx; + border-radius: ${this.radius}; ` }, textColor() { + if(!this.name){ + return '#fff'; + } let hash = 0; for (var i = 0; i < this.name.length; i++) { hash += this.name.charCodeAt(i); diff --git a/im-web/src/components/common/HeadImage.vue b/im-web/src/components/common/HeadImage.vue index ed0008f..40fa044 100644 --- a/im-web/src/components/common/HeadImage.vue +++ b/im-web/src/components/common/HeadImage.vue @@ -2,7 +2,7 @@
- {{ name?.substring(0, 2).toUpperCase() }}
+ {{ avaterText }}
@@ -66,6 +66,9 @@ export default { this.$eventBus.$emit("openUserInfo", user, pos); }) } + }, + isChinese(charCode) { + return charCode >= 0x4e00 && charCode <= 0x9fa5; } }, computed: { @@ -78,14 +81,21 @@ export default { avatarTextStyle() { let w = this.width ? this.width : this.size; let h = this.height ? this.height : this.size; - return ` - width: ${w}px;height:${h}px; - background-color: ${this.name ? this.textColor : '#fff'}; - font-size:${w * 0.35}px; - border-radius: ${this.radius}; - ` + return `width: ${w}px;height:${h}px; + background: linear-gradient(145deg,#ffffff20 25%,#00000060),${this.textColor}; + font-size:${w * 0.4}px; + border-radius: ${this.radius};` + }, + avaterText() { + if (!this.name) return ''; + if (this.isChinese(this.name.charCodeAt(0))) { + return this.name.charAt(0) + } else { + return this.name.charAt(0).toUpperCase() + this.name.charAt(1) + } }, textColor() { + if (!this.name) return 'fff'; let hash = 0; for (var i = 0; i < this.name.length; i++) { hash += this.name.charCodeAt(i); From ff10a2373ed8fc6a95c380b2182e39329ecd6d6d Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Wed, 16 Jul 2025 17:20:06 +0800 Subject: [PATCH 03/16] =?UTF-8?q?=E5=85=BC=E5=AE=B9=E5=8F=AA=E6=94=AF?= =?UTF-8?q?=E6=8C=81localStroage=E7=9A=84=E6=B5=8F=E8=A7=88=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- im-web/src/store/chatStore.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/im-web/src/store/chatStore.js b/im-web/src/store/chatStore.js index cda390f..d38267b 100644 --- a/im-web/src/store/chatStore.js +++ b/im-web/src/store/chatStore.js @@ -372,6 +372,16 @@ export default defineStore('chatStore', { }) // 排序 cacheChats.sort((chat1, chat2) => chat2.lastSendTime - chat1.lastSendTime); + /** + * 由于部分浏览器不支持websql或indexdb,只能使用localstorage,而localstorage大小只有10m,可能会导致缓存空间溢出 + * 解决办法:如果是使用localstorage的浏览器,每个会话只保留1000条消息,防止溢出 + */ + cacheChats.forEach(chat => { + if (localForage.driver().includes("localStorage") && chat.messages.length > 1000) { + let idx = chat.messages.length - 1000; + chat.messages = chat.messages.slice(idx); + } + }) // 记录热数据索引位置 cacheChats.forEach(chat => chat.hotMinIdx = chat.messages.length); // 将消息一次性装载回来 From 9ee347dd260c9b1b18e31d628dfeef18f2a774f7 Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Wed, 16 Jul 2025 17:24:49 +0800 Subject: [PATCH 04/16] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9E=9A=E4=B8=BE=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/bx/implatform/enums/MessageStatus.java | 8 ++++---- .../bx/implatform/listener/PrivateMessageListener.java | 4 ++-- .../com/bx/implatform/service/impl/FriendServiceImpl.java | 4 ++-- .../implatform/service/impl/GroupMessageServiceImpl.java | 5 ++--- .../com/bx/implatform/service/impl/GroupServiceImpl.java | 2 +- .../service/impl/PrivateMessageServiceImpl.java | 6 +++--- .../implatform/service/impl/WebrtcPrivateServiceImpl.java | 6 +++--- .../implatform/task/consumer/GroupBannedConsumerTask.java | 2 +- .../implatform/task/consumer/GroupUnbanConsumerTask.java | 2 +- 9 files changed, 19 insertions(+), 20 deletions(-) diff --git a/im-platform/src/main/java/com/bx/implatform/enums/MessageStatus.java b/im-platform/src/main/java/com/bx/implatform/enums/MessageStatus.java index 68769d2..73197c1 100644 --- a/im-platform/src/main/java/com/bx/implatform/enums/MessageStatus.java +++ b/im-platform/src/main/java/com/bx/implatform/enums/MessageStatus.java @@ -6,13 +6,13 @@ import lombok.AllArgsConstructor; public enum MessageStatus { /** - * 文件 + * 等待推送(未送达) */ - UNSEND(0, "未送达"), + PENDING(0, "等待推送"), /** - * 文件 + * 已送达(未读) */ - SENDED(1, "送达"), + DELIVERED(1, "已送达"), /** * 撤回 */ diff --git a/im-platform/src/main/java/com/bx/implatform/listener/PrivateMessageListener.java b/im-platform/src/main/java/com/bx/implatform/listener/PrivateMessageListener.java index b59db7a..d75ab86 100644 --- a/im-platform/src/main/java/com/bx/implatform/listener/PrivateMessageListener.java +++ b/im-platform/src/main/java/com/bx/implatform/listener/PrivateMessageListener.java @@ -41,8 +41,8 @@ public class PrivateMessageListener implements MessageListener if(CollUtil.isNotEmpty(messageIds)){ UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.lambda().in(PrivateMessage::getId, messageIds) - .eq(PrivateMessage::getStatus, MessageStatus.UNSEND.code()) - .set(PrivateMessage::getStatus, MessageStatus.SENDED.code()); + .eq(PrivateMessage::getStatus, MessageStatus.PENDING.code()) + .set(PrivateMessage::getStatus, MessageStatus.DELIVERED.code()); privateMessageService.update(updateWrapper); } } diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java index bbe6204..ec7beec 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java @@ -233,7 +233,7 @@ public class FriendServiceImpl extends ServiceImpl impleme msg.setRecvId(friendId); msg.setContent("你们已成为好友,现在可以开始聊天了"); msg.setSendTime(new Date()); - msg.setStatus(MessageStatus.UNSEND.code()); + msg.setStatus(MessageStatus.PENDING.code()); msg.setType(MessageType.TIP_TEXT.code()); privateMessageMapper.insert(msg); // 推给对方 @@ -257,7 +257,7 @@ public class FriendServiceImpl extends ServiceImpl impleme msg.setRecvId(friendId); msg.setSendTime(new Date()); msg.setType(MessageType.TIP_TEXT.code()); - msg.setStatus(MessageStatus.UNSEND.code()); + msg.setStatus(MessageStatus.PENDING.code()); msg.setContent("你们的好友关系已被解除"); privateMessageMapper.insert(msg); // 推送 diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java index 50cd4cb..5830074 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java @@ -42,7 +42,6 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; import java.util.concurrent.ScheduledThreadPoolExecutor; -import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @Slf4j @@ -123,7 +122,7 @@ public class GroupMessageServiceImpl extends ServiceImpl atIds = CommaTextUtils.asList(m.getAtUserIds()); vo.setAtUserIds(atIds.stream().map(Long::parseLong).collect(Collectors.toList())); // 填充状态 - vo.setStatus(readedMaxId >= m.getId() ? MessageStatus.READED.code() : MessageStatus.UNSEND.code()); + vo.setStatus(readedMaxId >= m.getId() ? MessageStatus.READED.code() : MessageStatus.PENDING.code()); // 针对回执消息填充已读人数 if (m.getReceipt()) { if (Objects.isNull(maxIdMap)) { diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java index f5ab43d..9437908 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java @@ -330,7 +330,7 @@ public class GroupServiceImpl extends ServiceImpl implements GroupMessage message = new GroupMessage(); message.setContent(content); message.setType(MessageType.TIP_TEXT.code()); - message.setStatus(MessageStatus.UNSEND.code()); + message.setStatus(MessageStatus.PENDING.code()); message.setSendTime(new Date()); message.setSendNickName(session.getNickName()); message.setGroupId(groupId); diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java index fa88b16..d0336b8 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java @@ -57,7 +57,7 @@ public class PrivateMessageServiceImpl extends ServiceImpl updateWrapper = Wrappers.lambdaUpdate(); updateWrapper.eq(PrivateMessage::getSendId, friendId).eq(PrivateMessage::getRecvId, session.getUserId()) - .eq(PrivateMessage::getStatus, MessageStatus.SENDED.code()) + .eq(PrivateMessage::getStatus, MessageStatus.DELIVERED.code()) .set(PrivateMessage::getStatus, MessageStatus.READED.code()); this.update(updateWrapper); log.info("消息已读,接收方id:{},发送方id:{}", session.getUserId(), friendId); diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcPrivateServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcPrivateServiceImpl.java index 2b93199..374c740 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcPrivateServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcPrivateServiceImpl.java @@ -51,12 +51,12 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { webrtcSession.setMode(mode); // 校验 if (!imClient.isOnline(uid)) { - this.sendActMessage(webrtcSession, MessageStatus.UNSEND, "未接通"); + this.sendActMessage(webrtcSession, MessageStatus.PENDING, "未接通"); log.info("对方不在线,uid:{}", uid); throw new GlobalException("对方目前不在线"); } if (userStateUtils.isBusy(uid)) { - this.sendActMessage(webrtcSession, MessageStatus.UNSEND, "未接通"); + this.sendActMessage(webrtcSession, MessageStatus.PENDING, "未接通"); log.info("对方正忙,uid:{}", uid); throw new GlobalException("对方正忙"); } @@ -171,7 +171,7 @@ public class WebrtcPrivateServiceImpl implements WebrtcPrivateService { // 通知对方取消会话 imClient.sendPrivateMessage(sendMessage); // 生成通话消息 - sendActMessage(webrtcSession, MessageStatus.UNSEND, "已取消"); + sendActMessage(webrtcSession, MessageStatus.PENDING, "已取消"); } @Override diff --git a/im-platform/src/main/java/com/bx/implatform/task/consumer/GroupBannedConsumerTask.java b/im-platform/src/main/java/com/bx/implatform/task/consumer/GroupBannedConsumerTask.java index 27c8853..44712d9 100644 --- a/im-platform/src/main/java/com/bx/implatform/task/consumer/GroupBannedConsumerTask.java +++ b/im-platform/src/main/java/com/bx/implatform/task/consumer/GroupBannedConsumerTask.java @@ -52,7 +52,7 @@ public class GroupBannedConsumerTask extends RedisMQConsumer { msg.setContent(tip); msg.setSendId(Constant.SYS_USER_ID); msg.setSendTime(new Date()); - msg.setStatus(MessageStatus.UNSEND.code()); + msg.setStatus(MessageStatus.PENDING.code()); msg.setSendNickName("系统管理员"); msg.setType(MessageType.TIP_TEXT.code()); groupMessageService.save(msg); diff --git a/im-platform/src/main/java/com/bx/implatform/task/consumer/GroupUnbanConsumerTask.java b/im-platform/src/main/java/com/bx/implatform/task/consumer/GroupUnbanConsumerTask.java index 67b3993..ec7c2da 100644 --- a/im-platform/src/main/java/com/bx/implatform/task/consumer/GroupUnbanConsumerTask.java +++ b/im-platform/src/main/java/com/bx/implatform/task/consumer/GroupUnbanConsumerTask.java @@ -51,7 +51,7 @@ public class GroupUnbanConsumerTask extends RedisMQConsumer { msg.setContent("已解除封禁"); msg.setSendId(Constant.SYS_USER_ID); msg.setSendTime(new Date()); - msg.setStatus(MessageStatus.UNSEND.code()); + msg.setStatus(MessageStatus.PENDING.code()); msg.setSendNickName("系统管理员"); msg.setType(MessageType.TIP_TEXT.code()); groupMessageService.save(msg); From 19948509c47bc30e7974c58de950b05c3387c27c Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Wed, 16 Jul 2025 18:58:15 +0800 Subject: [PATCH 05/16] =?UTF-8?q?=E4=BC=98=E5=8C=96:=20=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=98=BE=E7=A4=BA=E5=8F=91=E9=80=81=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- im-uniapp/common/enums.js | 10 +- .../chat-message-item/chat-message-item.vue | 306 ++++++++++-------- .../components/head-image/head-image.vue | 11 +- im-uniapp/components/loading/loading.vue | 13 +- im-uniapp/pages/chat/chat-box.vue | 62 +++- im-uniapp/store/chatStore.js | 10 +- im-web/src/api/enums.js | 10 +- im-web/src/components/chat/ChatBox.vue | 69 ++-- .../src/components/chat/ChatMessageItem.vue | 101 +++--- im-web/src/store/chatStore.js | 36 ++- im-web/src/view/Login.vue | 16 +- 11 files changed, 386 insertions(+), 258 deletions(-) diff --git a/im-uniapp/common/enums.js b/im-uniapp/common/enums.js index 3ddd09c..fa7ada0 100644 --- a/im-uniapp/common/enums.js +++ b/im-uniapp/common/enums.js @@ -54,10 +54,12 @@ const TERMINAL_TYPE = { } const MESSAGE_STATUS = { - UNSEND: 0, - SENDED: 1, - RECALL: 2, - READED: 3 + FAILED: -2, // 发送失败 + SENDING: -1, // 发送中(消息没到服务器) + PENDING: 0, // 未送达(消息已到服务器,但对方没收到) + DELIVERED: 1, // 已送达(对方已收到,但是未读消息) + RECALL: 2, // 已撤回 + READED: 3, // 消息已读 } export { diff --git a/im-uniapp/components/chat-message-item/chat-message-item.vue b/im-uniapp/components/chat-message-item/chat-message-item.vue index 33dde0c..382b700 100644 --- a/im-uniapp/components/chat-message-item/chat-message-item.vue +++ b/im-uniapp/components/chat-message-item/chat-message-item.vue @@ -14,51 +14,55 @@ {{ showName }} - - - - - - - - - - - - - - - - - - - - - - - - {{ fileSize }} + + + + + + + + + + + + + + + + + + + + + + + + {{ fileSize }} + + + - - + + + + + + {{ JSON.parse(msgInfo.content).duration + '"' }} + + - - - - - - {{ JSON.parse(msgInfo.content).duration + '"' }} - - + + - + + {{ msgInfo.content }} - - 已读 - 未读 + + 已读 + 未读 @@ -118,7 +120,7 @@ export default { methods: { onSendFail() { uni.showToast({ - title: "该文件已发送失败,目前不支持自动重新发送,建议手动重新发送", + title: "该消息已发送失败,目前不支持自动重新发送,建议手动重新发送", icon: "none" }) }, @@ -177,11 +179,11 @@ export default { } }, computed: { - loading() { - return this.msgInfo.loadStatus && this.msgInfo.loadStatus === "loading"; + sending() { + return this.msgInfo.status == this.$enums.MESSAGE_STATUS.SENDING; }, - loadFail() { - return this.msgInfo.loadStatus && this.msgInfo.loadStatus === "fail"; + sendFail() { + return this.msgInfo.status == this.$enums.MESSAGE_STATUS.FAILED; }, data() { return JSON.parse(this.msgInfo.content) @@ -227,6 +229,9 @@ export default { } return items; }, + isTextMessage() { + return this.msgInfo.type == this.$enums.MESSAGE_TYPE.TEXT + }, isAction() { return this.$msgType.isAction(this.msgInfo.type); }, @@ -285,116 +290,137 @@ export default { padding-right: 80rpx; margin-top: 5rpx; - .message-text { + .message-content-wrapper { position: relative; - line-height: 1.6; - margin-top: 10rpx; - padding: 16rpx 24rpx; - background-color: $im-bg; - border-radius: 20rpx; - color: $im-text-color; - font-size: $im-font-size; - text-align: left; - display: block; - word-break: break-word; - white-space: pre-line; - - &:after { - content: ""; - position: absolute; - left: -20rpx; - top: 26rpx; - width: 6rpx; - height: 6rpx; - border-style: solid dashed dashed; - border-color: $im-bg transparent transparent; - overflow: hidden; - border-width: 18rpx; - } - } - - .message-image { display: flex; - flex-wrap: nowrap; - flex-direction: row; align-items: center; - .image-box { + .sending { position: relative; + margin: 0 6rpx; - .send-image { - min-width: 200rpx; - max-width: 420rpx; - height: 350rpx; - cursor: pointer; - border-radius: 4px; + .icon-loading { + color: $im-color-primary; } } .send-fail { - color: $im-color-danger; - font-size: $im-font-size; - cursor: pointer; - margin: 0 20px; + color: #e60c0c; + font-size: 50rpx; + margin: 0 5rpx; } - } - - .message-file { - display: flex; - flex-wrap: nowrap; - flex-direction: row; - align-items: center; - cursor: pointer; - .file-box { + .message-text { position: relative; + line-height: 1.6; + margin-top: 10rpx; + padding: 16rpx 24rpx; + background-color: $im-bg; + border-radius: 20rpx; + color: $im-text-color; + font-size: $im-font-size; + text-align: left; + display: block; + word-break: break-word; + white-space: pre-line; + + &:after { + content: ""; + position: absolute; + left: -20rpx; + top: 26rpx; + width: 6rpx; + height: 6rpx; + border-style: solid dashed dashed; + border-color: $im-bg transparent transparent; + overflow: hidden; + border-width: 18rpx; + } + } + + .message-image { display: flex; flex-wrap: nowrap; + flex-direction: row; align-items: center; - min-height: 60px; - border-radius: 4px; - padding: 10px 15px; - box-shadow: $im-box-shadow-dark; - - .file-info { - flex: 1; - height: 100%; - text-align: left; - font-size: 14px; - width: 300rpx; - - .file-name { - font-weight: 600; - margin-bottom: 15px; - word-break: break-all; + + .image-box { + position: relative; + + .send-image { + min-width: 200rpx; + max-width: 420rpx; + height: 350rpx; + cursor: pointer; + border-radius: 4px; } } - .file-icon { - font-size: 80rpx; - color: #d42e07; + .send-fail { + color: $im-color-danger; + font-size: $im-font-size; + cursor: pointer; + margin: 0 20px; } } - .send-fail { - color: #e60c0c; - font-size: 50rpx; + .message-file { + display: flex; + flex-wrap: nowrap; + flex-direction: row; + align-items: center; cursor: pointer; - margin: 0 20rpx; - } - } - .message-audio { - display: flex; - align-items: center; + .file-box { + position: relative; + display: flex; + flex-wrap: nowrap; + align-items: center; + min-height: 60px; + border-radius: 4px; + padding: 10px 15px; + box-shadow: $im-box-shadow-dark; + + .file-info { + flex: 1; + height: 100%; + text-align: left; + font-size: 14px; + width: 300rpx; + + .file-name { + font-weight: 600; + margin-bottom: 15px; + word-break: break-all; + } + } - .chat-audio-text { - padding-right: 8px; + .file-icon { + font-size: 80rpx; + color: #d42e07; + } + } + + .send-fail { + color: #e60c0c; + font-size: 50rpx; + cursor: pointer; + margin: 0 20rpx; + } } - .icon-voice-play { - font-size: 18px; - padding-right: 8px; + .message-audio { + display: flex; + align-items: center; + + .chat-audio-text { + padding-right: 8px; + } + + .icon-voice-play { + font-size: 18px; + padding-right: 8px; + } } } @@ -454,6 +480,10 @@ export default { padding-left: 80rpx; padding-right: 0; + .message-content-wrapper { + flex-direction: row-reverse; + } + .message-text { margin-left: 10px; background-color: $im-color-primary-light-2; @@ -466,14 +496,6 @@ export default { } } - .message-image { - flex-direction: row-reverse; - } - - .message-file { - flex-direction: row-reverse; - } - .message-audio { flex-direction: row-reverse; diff --git a/im-uniapp/components/head-image/head-image.vue b/im-uniapp/components/head-image/head-image.vue index 1f1251e..9fa8bc2 100644 --- a/im-uniapp/components/head-image/head-image.vue +++ b/im-uniapp/components/head-image/head-image.vue @@ -16,7 +16,8 @@ export default { data() { return { colors: ["#5daa31", "#c7515a", "#e03697", "#85029b", - "#c9b455", "#326eb6"] + "#c9b455", "#326eb6" + ] } }, props: { @@ -34,6 +35,10 @@ export default { type: String, default: null }, + radius: { + type: String, + default: "50%" + }, online: { type: Boolean, default: false @@ -61,7 +66,7 @@ export default { 'minier': 48, 'lage': 108, 'lager': 120, - }[this.size] + } [this.size] } }, avatarImageStyle() { @@ -77,7 +82,7 @@ export default { ` }, textColor() { - if(!this.name){ + if (!this.name) { return '#fff'; } let hash = 0; diff --git a/im-uniapp/components/loading/loading.vue b/im-uniapp/components/loading/loading.vue index a56b8ea..b0f0c98 100644 --- a/im-uniapp/components/loading/loading.vue +++ b/im-uniapp/components/loading/loading.vue @@ -6,7 +6,6 @@ -