From c032de56eb91124a91d509674ec5fdbd5158e2af Mon Sep 17 00:00:00 2001 From: ysn <2126564605@qq.com> Date: Sat, 30 May 2026 13:03:02 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=BA=93=E5=88=86=E4=BA=AB-?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E8=81=94=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/knowledge.js | 6 +- src/store/modules/user.js | 10 - src/views/knowledge/index.vue | 71 +- .../message/components/CreateGroupDialog.vue | 1296 ++++++++++------- 4 files changed, 859 insertions(+), 524 deletions(-) diff --git a/src/api/knowledge.js b/src/api/knowledge.js index c1344ea..5b92883 100644 --- a/src/api/knowledge.js +++ b/src/api/knowledge.js @@ -44,7 +44,11 @@ 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 }) +} +// {"client_id":"utalk-client-688","message":{"at_users":[],"message_id":0,"payload":{"content":"{\"file_name\":\"1633500241136.mp4\",\"file_path\":\"personal-test/video/688/1780036088/1633500241136.mp4\",\"file_size\":\"17.92M\",\"file_time\":\"2026-05-29 14:28:11\",\"knowledge_id\":833,\"thumbnail_path\":\"personal-test/video/688/1780036088/1633500241136.png\"}","file_duration":0,"file_ico":"","file_name":"","file_path":"","file_size":0,"file_type":""},"scene":1,"source_id":688,"target_id":687,"timestamp":0,"type":"knowledge_share"},"target_id":687,"topic":"/user/¯"} // // 知识库-上传文件 // export function knowledgeUpload(data) { // return request({ diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 2dab23f..606555a 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -59,7 +59,6 @@ const user = { Login({ commit }, userInfo) { return new Promise((resolve, reject) => { login(userInfo).then(res => { - setToken(res.data.token) commit('SET_TOKEN', res.data.token) store.dispatch('lock/unlockScreen') @@ -129,15 +128,6 @@ const user = { secretKey: netConfig.MINIO_SECRET_KEY, useSSL: netConfig.MINIO_SECURE === '1' || netConfig.MINIO_SECURE === true, }) - // 补充存储桶配置映射(与 C++ 端一致) - store.commit('SET_MINIO_BUCKETS', { - AVATAR: netConfig.MINIO_BUCKET_AVATAR || 'remote-avatar-test', - FILE: netConfig.MINIO_BUCKET_FILE || 'remote-file-test', - KNOWLEDGE_PERSONAL: netConfig.MINIO_BUCKET_KNOWLEDGE_PERSONAL || 'personal-test', - KNOWLEDGE_PUBLIC: netConfig.MINIO_BUCKET_KNOWLEDGE_PUBLIC || 'public-test', - DOWNLOAD: netConfig.MINIO_BUCKET_DOWNLOAD || 'utalk-test', - KERNEL: netConfig.MINIO_BUCKET_KERNEL || 'remote-kernel-test' - }) } resolve(res) }).catch(error => { diff --git a/src/views/knowledge/index.vue b/src/views/knowledge/index.vue index 07dc205..61d3d10 100644 --- a/src/views/knowledge/index.vue +++ b/src/views/knowledge/index.vue @@ -277,12 +277,9 @@ @@ -299,9 +296,8 @@ import { postKnowledgePlay, postKnowledgeEdit, postKnowledgeDelete, + postMessagePushToUser, } from "@/api/knowledge"; - -import { listUser } from "@/api/system/user"; import { mapGetters } from "vuex"; import CreateGroupDialog from "@/views/message/components/CreateGroupDialog"; import { @@ -309,6 +305,7 @@ import { parseMinioFilePath, uploadFile, } from "@/utils/requestMinio"; +import { MessageType } from "@/utils/constants"; export default { name: "Knowledge", @@ -370,8 +367,6 @@ export default { // ================== 分享相关 ================== shareDialogVisible: false, // 分享弹窗 shareItem: null, // 当前分享的文件 - recentContacts: [], // 最近联系人 - recentGroups: [], // 最近群组 }; }, created() { @@ -604,28 +599,56 @@ export default { .catch(() => {}); }, - getContactList() { - listUser({ page: 1, pageSize: 100 }).then((res) => { - this.recentContacts = res.rows.map((user) => ({ - id: user.userId, - name: user.nickName || user.title, - avatar: user.avatar || "", - })); - }); - }, - handleShare(row) { this.shareItem = row; this.shareDialogVisible = true; }, handleShareToContacts(selectedMembers) { if (selectedMembers && selectedMembers.length > 0) { - const shareTarget = selectedMembers[0]; - this.$modal.msgSuccess(`已分享给 ${shareTarget.name}`); - console.log("分享文件:", this.shareItem, "给:", shareTarget); + const { id, netConfig } = this.$store.state.user; + const currentUserId = id; + const minioEndpoint = + netConfig?.MINIO_ENDPOINT_HTTPS?.trim() || "http://47.92.6.51:9100/"; + selectedMembers.forEach((shareTarget) => { + const payloadContent = { + file_name: this.shareItem?.title || "", + file_path: this.shareItem?.file_path || "", + file_size: this.shareItem?.file_size || "", + file_time: this.shareItem?.create_time || "", + knowledge_id: this.shareItem?.id || 0, + thumbnail_path: this.shareItem?.thumbnail_path || "", + }; + const messageData = { + client_id: `utalk-client-${currentUserId}`, + message: { + at_users: [], + message_id: 0, + payload: { + content: JSON.stringify(payloadContent), + file_duration: 0, + file_ico: "", + file_name: this.shareItem?.title || "", + file_path: this.shareItem?.file_path || "", + file_size: this.shareItem?.file_size || "", + file_type: this.shareItem?.file_type || "", + }, + scene: 1, + source_id: currentUserId, + target_id: shareTarget.id, + timestamp: 0, + type: MessageType.KNOWLEDGE_SHAREs, + }, + target_id: shareTarget.id, + topic: "/user/", + }; + postMessagePushToUser(messageData).then((res) => { + this.$modal.msgSuccess(`已分享给 ${shareTarget.name}`); + }); + }); + + this.shareDialogVisible = false; + this.shareItem = null; } - this.shareDialogVisible = false; - this.shareItem = null; }, // ====================== 上传核心逻辑 ====================== // 打开类型选择 diff --git a/src/views/message/components/CreateGroupDialog.vue b/src/views/message/components/CreateGroupDialog.vue index 2c84f41..5663b67 100644 --- a/src/views/message/components/CreateGroupDialog.vue +++ b/src/views/message/components/CreateGroupDialog.vue @@ -1,255 +1,561 @@ \ No newline at end of file