diff --git a/public/images/profile/default-avatar.png b/public/images/profile/default-avatar.png new file mode 100644 index 0000000..3ff2e48 Binary files /dev/null and b/public/images/profile/default-avatar.png differ diff --git a/src/api/modules/message.ts b/src/api/modules/message.ts index 76e1a5a..df8bdb0 100644 --- a/src/api/modules/message.ts +++ b/src/api/modules/message.ts @@ -451,6 +451,60 @@ class MessageApi { } }) } + + /** + * 获取我的会话列表 + * @returns Promise> + */ + async getMyChats(): Promise> { + return request({ + url: '/aiol/aiolChat/my_chats', + method: 'GET' + }) + } + + /** + * 查询会话消息 + * @param chatId 会话ID + * @returns Promise> + */ + async getChatMessages(chatId: string): Promise> { + return request({ + url: `/aiol/aiolChat/${chatId}/messages`, + method: 'GET' + }) + } + + /** + * 发送消息 + * @param data 消息数据 + * @returns Promise> + */ + async sendMessage(data: { + chat_id: string + content: string + message_type: string + file_url?: string + }): Promise> { + return request({ + url: '/aiol/aiolChatMessage/send', + method: 'POST', + data + }) + } + + /** + * 更新最后读取消息ID + * @param chatId 会话ID + * @param messageId 消息ID + * @returns Promise> + */ + async updateLastReadMessage(chatId: string, messageId: string): Promise> { + return request({ + url: `/aiol/aiolChat/${chatId}/update_last_read/${messageId}`, + method: 'POST' + }) + } } export default new MessageApi() \ No newline at end of file diff --git a/src/components/InstantMessage.vue b/src/components/InstantMessage.vue index bc55718..d6b43b0 100644 --- a/src/components/InstantMessage.vue +++ b/src/components/InstantMessage.vue @@ -5,27 +5,56 @@

全部消息

- +
-
-
- - -
-
-
{{ conversation.name }}
-
{{ conversation.lastMessage }}
-
-
-
{{ conversation.lastTime }}
-
+ +
+
正在加载对话列表...
+
+ + +
+
{{ conversationsError }}
+ +
+ + +
+
+
+ +
+
+
+ {{ conversation.name }} + + ({{ conversation.memberCount }}人) + + + + + + + + +
+
{{ conversation.lastMessage }}
+
+
+
+
+ + +
+
暂无对话
+
@@ -35,50 +64,207 @@ 选择对话

选择一个对话开始聊天

- +
{{ selectedConversation.name }}
+
+ +
-
-
-
- -
-
-
-
{{ message.content }}
-
- 图片 -
-
- 文件 - {{ message.fileName }} +
+
+
+ +
+
+ {{ message.time }} +
+
+ + +
+
+ +
+
+ +
+ {{ getSenderName(message) }} + 讲师 +
+
+
{{ message.content }}
+
+ 图片 +
+
+ 文件 + {{ message.fileName }} +
+
+
+
+
-
{{ message.time }}
-
- 我 +
+ + +
+
+ +
+ +
+
+ + + + +
+
+
+
+
+ + +
+ +
+
+
+ +
+
+
{{ member.realname }}
+
+
+
+ + +
+
+ + + +
+
未找到相关成员
+
请尝试其他关键词
+
+ + +
+ 查看更多 + + + +
+
+ + +
+
+ 班级名称 + {{ groupInfo.name || '暂无' }} +
+
+ 班级人数 + {{ groupInfo.memberCount }}人 +
+
+ + +
+
+ 消息免打扰 +
+ + +
+
+
+ + +
+ + +
+
+ + +
+ + + + +
+
+ 消息免打扰 +
+ + +
+
+
+ + +
+ +
+
-
- + +
+
+ + + + + 群聊已禁言,只有管理员、讲师、群主可以发言 +
+
+ + +
+
{{ messageInput.length }}/500 -
@@ -102,11 +288,121 @@
+ + + + + +
diff --git a/src/views/Profile.vue b/src/views/Profile.vue index 423ac5f..ef4536e 100644 --- a/src/views/Profile.vue +++ b/src/views/Profile.vue @@ -233,7 +233,7 @@ fontSize: '14px' }"> {{ detailAssignment.status === '未完成' || detailAssignment.status === '待提交' ? '未完成' : - (detailAssignment.status === '已完成' ? '已完成' : '541人已完成') }} + (detailAssignment.status === '已完成' ? '已完成' : '541人已完成') }}
@@ -313,7 +313,7 @@ fontSize: '14px' }"> {{ draftAssignment.status === '未完成' || draftAssignment.status === '待提交' ? '未完成' : - (draftAssignment.status === '已完成' ? '已完成' : '541人已完成') }} + (draftAssignment.status === '已完成' ? '已完成' : '541人已完成') }}
@@ -663,7 +663,7 @@
{{ activity.status === 'ongoing' ? '进行中' : '已结束' - }} + }}
@@ -722,31 +722,32 @@ 即时消息 - 2 + {{ instantMessageCount }} 评论和@ - 3 + {{ commentMessageCount }} 点赞 - 5 + {{ likeMessageCount }} 系统消息 + {{ systemMessageCount }}
- + 全部已读 - 全部已读 + {{ markingAllAsRead ? '标记中...' : '全部已读' }} - + 按时间 - 按时间 + {{ getSortText() }}
@@ -759,108 +760,181 @@
-
- -
+
+ +
+
正在加载评论和@消息...
+
- -
- -
- -