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/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 }}
-
管理员
-
-
-
- 添加成员
-
-
+
-
-
-
-
- 查找聊天记录
- 图片、视频、文件等
-
-
-
-
+
退出群组
-
- 退出群组
-
- 解散群组
-
+
+ 解散群组
+
-
-
+
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 @@
-
-
+
\ 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 @@
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
- {{ result.sender_name.slice(0, 1) || '?' }}
-
-
-
{{ result.sender_name }}
-
{{ result.displayText }}
+
+
+
+
+
+
+
+
-
-
{{ result.displayTime }}
-
链接
-
文件
-
图片
-
语音
+
+
+
+
+ {{ getFirstChar(item.sender_name) }}
+
+
+
{{ item.sender_name || '未知用户' }}
+
[图片]
+
{{ item.content || '' }}
+
+
+
{{ item.create_time || item.update_time || '' }}
+
+
-
+
未找到相关消息
+
+
+
+ 加载中...
+
+
+ 没有更多了
+