diff --git a/src/api/knowledge.js b/src/api/knowledge.js index 5b92883..95e430d 100644 --- a/src/api/knowledge.js +++ b/src/api/knowledge.js @@ -44,7 +44,7 @@ export function postKnowledgeEdit(data) { export function postKnowledgeDelete(data) { return request({ url: '/knowledge/delete', method: 'post', data }) } -// 知识库文件-分享文件s +// 知识库文件-分享文件 export function postMessagePushToUser(data) { return request({ url: '/messages/push/to/user', method: 'post', data }) } diff --git a/src/api/message/index.js b/src/api/message/index.js index 7c94e61..f0ab460 100644 --- a/src/api/message/index.js +++ b/src/api/message/index.js @@ -7,7 +7,7 @@ export function getLatestContacts(data) { data }) } - +// 发送消息 export function sendPrivateMessage(data) { return request({ url: '/messages/push/to/user', @@ -24,13 +24,6 @@ export function sendMultiChatMessage(data) { }) } -export function pullPrivateMessages(data) { - return request({ - url: '/messages/pull', - method: 'post', - data - }) -} export function pullMultiChatMessages(data) { return request({ @@ -63,19 +56,52 @@ export function searchGroups(data) { data }) } - -export function getMessagesFileList(data) { +// 聊天记录-图片 +export function postMessagesFileList(data) { return request({ url: '/messages/file/list', method: 'post', data }) } - -export function searchMessages(data) { +// 聊天记录 +export function postMessagesSearch(data) { return request({ url: '/messages/search', method: 'post', data }) } + +// 个人消息-列表 +export function postMessagesPull(data) { + return request({ + url: '/messages/pull', + method: 'post', + data + }) +} +// 系统通知-列表 +export function postNotifyPull(data) { + return request({ + url: '/notify/pull', + method: 'post', + data + }) +} +// 系统通知-发消息 +export function postNotifyPush(data) { + return request({ + url: '/notify/push', + method: 'post', + data + }) +} +// 系统通知-已读 +export function postNotifyRead(data) { + return request({ + url: '/notify/read', + method: 'post', + data + }) +} diff --git a/src/api/multichat.js b/src/api/multichat.js index 6ea599a..4a1e933 100644 --- a/src/api/multichat.js +++ b/src/api/multichat.js @@ -3,15 +3,15 @@ import request from '@/utils/request' export function createMultiChat(data) { return request({ - url: '/api/v1/multichat/create', + url: '/multichat/create', method: 'post', data }) } - +// 修改群名 export function editMultiChatName(data) { return request({ - url: '/api/v1/multichat/edit_name', + url: '/multichat/edit_name', method: 'post', data }) @@ -19,7 +19,7 @@ export function editMultiChatName(data) { export function editMultiChatAvatar(data) { return request({ - url: '/api/v1/multichat/edit_avatar', + url: '/multichat/edit_avatar', method: 'post', data }) @@ -27,39 +27,39 @@ export function editMultiChatAvatar(data) { export function updateMultiChatNotice(data) { return request({ - url: '/api/v1/multichat/notice', + url: '/multichat/notice', method: 'post', data }) } -export function getMultiChatInfo(params) { +export function getMultiChatInfo(data) { return request({ - url: '/api/v1/multichat/info', - method: 'get', - params + url: '/multichat/info', + method: 'post', + data }) } - +// 邀请加入群聊 export function inviteToMultiChat(data) { return request({ - url: '/api/v1/multichat/invite', + url: '/multichat/invite', method: 'post', data }) } - +// 移除群聊成员-退出群聊 export function quitMultiChat(data) { return request({ - url: '/api/v1/multichat/quit', + url: '/multichat/quit', method: 'post', data }) } - +// 解散群聊 export function dismissMultiChat(data) { return request({ - url: '/api/v1/multichat/dismiss', + url: '/multichat/dismiss', method: 'post', data }) @@ -67,7 +67,7 @@ export function dismissMultiChat(data) { export function pullMultiChatMessages(params) { return request({ - url: '/api/v1/multichat/message/pull', + url: '/multichat/message/pull', method: 'get', params }) diff --git a/src/api/system.js b/src/api/system.js deleted file mode 100644 index 57d8d62..0000000 --- a/src/api/system.js +++ /dev/null @@ -1,13 +0,0 @@ -import request from '@/utils/request' - -export function getSystemNotify(data) { - return request({ url: '/api/v1/notify/pull', method: 'post', data }) -} - -export function pushSystemNotify(data) { - return request({ url: '/api/v1/notify/push', method: 'post', data }) -} - -export function readSystemNotify(data) { - return request({ url: '/api/v1/notify/read', method: 'post', data }) -} diff --git a/src/api/videoCommunication.js b/src/api/videoCommunication.js index 56bdf0a..5ddadeb 100644 --- a/src/api/videoCommunication.js +++ b/src/api/videoCommunication.js @@ -1,4 +1,40 @@ import request from '@/utils/request' +export const meetingModes = () => { + return [ + { + title: "实时会诊", + icon: "el-icon-user-solid", + color: "blue", + routeName: "RealTimeConsultation", + routePath: "/videoCommunication/realTimeConsultation", + type: 1, + }, + { + title: "带教培训", + icon: "el-icon-video-play", + color: "yellow", + routeName: "Training", + routePath: "/videoCommunication/training", + type: 9, + }, + { + title: "在线质控", + icon: "el-icon-lightbulb", + color: "grayblue", + routeName: "QualityControl", + routePath: "/videoCommunication/qualityControl", + type: 6, + }, + { + title: "病例研讨", + icon: "el-icon-chat-line-square", + color: "greenblue", + routeName: "CaseStudy", + routePath: "/videoCommunication/caseStudy", + type: 3, + }, + ] +} // 视讯-创建房间 export function postConsultationCreate(data) { return request({ diff --git a/src/utils/constants.js b/src/utils/constants.js index debb3b2..ac92a0e 100644 --- a/src/utils/constants.js +++ b/src/utils/constants.js @@ -103,7 +103,8 @@ export const MessageFileType = { export const ContactsScene = { ALL: 0, PRIVATE: 1, - GROUP: 4 + GROUP: 4, + NOTIFY: 6 } // MQTT 主题 diff --git a/src/views/message/components/CreateGroupDialog.vue b/src/views/message/components/CreateGroupDialog.vue index 633fcbd..c8321ea 100644 --- a/src/views/message/components/CreateGroupDialog.vue +++ b/src/views/message/components/CreateGroupDialog.vue @@ -45,7 +45,10 @@ >
{{ member.name }} @@ -70,7 +73,13 @@ :class="{ expanded: group.expanded }" @click="toggleGroupExpand(group)" > - + {{ group.name }}
@@ -86,7 +95,7 @@ v-model="group.allSelected" @change="toggleGroupAllSelect(group)" /> - 全选 + 全选
- + {{ member.name }}
@@ -206,7 +221,13 @@ :key="member.id" class="selected-item" > - + {{ member.name }} @@ -250,6 +271,7 @@ import { getGroupsListUser, searchUsers, } from "@/api/contacts/index.js"; +import { getMultiChatInfo } from "@/api/multichat"; export default { name: "CreateGroupDialog", @@ -264,7 +286,7 @@ export default { }, maxSelectCount: { type: Number, - default: 1, + default: 500, }, confirmCallback: { type: Function, @@ -329,7 +351,7 @@ export default { full_group: item.full_group, avatar: item.avatar, online: item.online === 1 || item.online === true, - selected: false, + selected: this.isSelected(item.id), })); } catch (e) { console.error("获取最近联系人失败", e); @@ -455,7 +477,7 @@ export default { full_group: item.full_group, avatar: item.avatar, online: item.online === 1 || item.online === true, - selected: false, + selected: this.isSelected(item.id), })); } catch (e) { console.error("搜索联系人失败", e); @@ -490,7 +512,7 @@ export default { name: item.name, avatar: item.avatar, online: item.online === 1 || item.online === true, - selected: false, + selected: this.isSelected(item.id), })); } catch (e) { console.error(`获取群组 ${group.name} 成员失败`, e); @@ -504,21 +526,20 @@ export default { async toggleGroupExpand(group) { group.expanded = !group.expanded; if (group.expanded) { - if (!group.members || group.members.length === 0) { - try { - const res = await getGroupsListUser({ group_id: group.id }); - const list = res.data?.list || []; - group.members = list.map((item) => ({ - id: item.id, - name: item.name, - avatar: item.avatar, - online: item.online === 1 || item.online === true, - selected: this.isSelected(item.id), - })); - } catch (e) { - console.error(`获取群组 ${group.name} 成员失败`, e); - group.members = []; - } + // 调用 getMultiChatInfo 接口获取群详细信息 + try { + const res = await getMultiChatInfo({ multi_chat_id: group.id }); + const data = res.data || {}; + // 使用接口返回的成员列表,过滤掉与 user_id 相同的用户 + const userList = data.user_list || []; + // 获取当前用户ID,用于过滤掉自己 + group.members = userList + .filter((item) => item.id !== data.user_id) + .map((item) => { + return { ...item, selected: this.isSelected(item.id) }; + }); + } catch (e) { + group.members = []; } group.allSelected = group.members.every((m) => m.selected); } @@ -967,9 +988,38 @@ export default { align-items: center; gap: 10px; padding: 8px 16px; - cursor: pointer; - transition: background 0.2s; - position: relative; + } + + // 群组详细信息样式 + .group-detail-info { + padding: 12px 16px; + margin: 8px 0; + background: #f5f7fa; + border-radius: 6px; + border-left: 3px solid #409eff; + + .group-detail-row { + display: flex; + align-items: flex-start; + margin-bottom: 8px; + + &:last-child { + margin-bottom: 0; + } + + .group-detail-label { + color: #909399; + font-size: 13px; + flex-shrink: 0; + } + + .group-detail-value { + color: #606266; + font-size: 13px; + word-break: break-all; + line-height: 1.5; + } + } } } \ No newline at end of file diff --git a/src/views/message/components/GroupSetting.vue b/src/views/message/components/GroupSetting.vue index 0bf8588..cd4d822 100644 --- a/src/views/message/components/GroupSetting.vue +++ b/src/views/message/components/GroupSetting.vue @@ -9,11 +9,16 @@
- - - {{ - (groupInfo.name || "群聊").slice(0, 2) - }} + + {{ groupInfo.name }}
{{ groupInfo.name }}
@@ -26,21 +31,36 @@ />
-
- 群成员 {{ (groupInfo.members && groupInfo.members.length) || 0 }}人 -
+
群成员 {{ groupInfo.user_num }}人
+
+ + 添加成员 +
- + @@ -48,145 +68,131 @@
{{ member.name }} - 管理员 -
-
- - 添加成员
- -
+
群管理员
- + {{ member.name }}
- -
-
- - 查找聊天记录 - 图片、视频、文件等 - -
-
- + 退出群组 - + + 解散群组 +
- - +
diff --git a/src/views/message/components/MessageList.vue b/src/views/message/components/MessageList.vue index 7d3a8c6..06c66d9 100644 --- a/src/views/message/components/MessageList.vue +++ b/src/views/message/components/MessageList.vue @@ -33,7 +33,12 @@ class="search-item" @click="handleSelectSearchResult(user, 1)" > - +
{{ user.name }}
{{ user.department }}
@@ -48,10 +53,16 @@ class="search-item" @click="handleSelectSearchResult(group, 4)" > - +
{{ group.name }}
-
{{ group.member_count }}人
+
{{ group.user_num }}人
@@ -68,60 +79,76 @@
{{ contact.name }} - {{ - formatTime(contact.last_message_time) - }} + + {{ formatTime(contact.update_time) }} +
- {{ - formatLastMessage(contact) - }} - + + {{ contact.last_message_read === 0 ? "[对方未读]" : "" }} + {{ formatLastMessage(contact) }} + + + + +
-
+

暂无消息

+ + +
+ + 加载中... +
+ + +
+ 没有更多数据了 +
- + \ No newline at end of file + diff --git a/src/views/message/components/SearchRecord.vue b/src/views/message/components/SearchRecord.vue index fcfaba3..82f750f 100644 --- a/src/views/message/components/SearchRecord.vue +++ b/src/views/message/components/SearchRecord.vue @@ -1,206 +1,289 @@