From 15f3f9c0e5efb7b3f323068062caefc3f1d8f8df Mon Sep 17 00:00:00 2001 From: kuaifan Date: Sun, 30 Mar 2025 07:51:13 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=AA=97=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/manage/components/DialogWrapper.vue | 2 +- .../pages/manage/components/ProjectDialog.vue | 2 +- .../assets/js/pages/manage/messenger.vue | 2 +- resources/assets/js/store/actions.js | 71 ++++++++++--------- 4 files changed, 40 insertions(+), 37 deletions(-) diff --git a/resources/assets/js/pages/manage/components/DialogWrapper.vue b/resources/assets/js/pages/manage/components/DialogWrapper.vue index 549b5b000..62d95df17 100644 --- a/resources/assets/js/pages/manage/components/DialogWrapper.vue +++ b/resources/assets/js/pages/manage/components/DialogWrapper.vue @@ -2666,7 +2666,7 @@ export default { onDialogMenu(cmd) { switch (cmd) { case "single": - this.$store.dispatch('openDialogWindow', this.dialogData.id); + this.$store.dispatch('openDialog', {dialog_id: this.dialogData.id, single: true}); break; case "searchMsg": diff --git a/resources/assets/js/pages/manage/components/ProjectDialog.vue b/resources/assets/js/pages/manage/components/ProjectDialog.vue index 2d4b0236c..9edd538de 100644 --- a/resources/assets/js/pages/manage/components/ProjectDialog.vue +++ b/resources/assets/js/pages/manage/components/ProjectDialog.vue @@ -70,7 +70,7 @@ export default { }, onOpenDialog() { - this.$store.dispatch('openDialogWindow', this.projectData.dialog_id); + this.$store.dispatch('openDialog', {dialog_id: this.projectData.dialog_id, single: true}); this.toggleParameter(); }, diff --git a/resources/assets/js/pages/manage/messenger.vue b/resources/assets/js/pages/manage/messenger.vue index 2e1a6abd6..19844109d 100644 --- a/resources/assets/js/pages/manage/messenger.vue +++ b/resources/assets/js/pages/manage/messenger.vue @@ -1130,7 +1130,7 @@ export default { break; case 'single': - this.$store.dispatch('openDialogWindow', this.operateItem.id); + this.$store.dispatch('openDialog', {dialog_id: this.operateItem.id, single: true}); break; case 'hide': diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index fc35b1bfb..2b914332c 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -1248,28 +1248,6 @@ export default { $A.Electron.sendMessage('openWebTabWindow', params) }, - /** - * 打开会话独立窗口(客户端) - * @param state - * @param dispatch - * @param dialogId - * @returns {Promise} - */ - async openDialogWindow({state, dispatch}, dialogId) { - const dialogData = state.cacheDialogs.find(({id}) => id === dialogId) || {} - dispatch('openChildWindow', { - name: `dialog-${dialogId}`, - path: `/single/dialog/${dialogId}`, - force: false, - config: { - title: dialogData.name, - parent: null, - width: Math.min(window.screen.availWidth, 1024), - height: Math.min(window.screen.availHeight, 768), - }, - }); - }, - /** *****************************************************************************************/ /** ************************************** 文件 **********************************************/ /** *****************************************************************************************/ @@ -3048,21 +3026,18 @@ export default { */ openDialog({state, dispatch}, dialog_id) { return new Promise(async (resolve, reject) => { - if ($A.isSubElectron) { - const data = $A.isJson(dialog_id) ? dialog_id : {dialog_id} - $A.syncDispatch("openDialog", data) - $A.Electron.sendMessage('mainWindowActive'); - resolve() - return - } - // + let single_window = false let search_msg_id; let dialog_msg_id; if ($A.isJson(dialog_id)) { + single_window = (dialog_id.single || dialog_id.single_window) && $A.Electron; search_msg_id = dialog_id.search_msg_id; dialog_msg_id = dialog_id.dialog_msg_id; dialog_id = dialog_id.dialog_id; } + search_msg_id = /^\d+$/.test(search_msg_id) ? parseInt(search_msg_id) : 0; + dialog_msg_id = /^\d+$/.test(dialog_msg_id) ? parseInt(dialog_msg_id) : 0; + dialog_id = /^\d+$/.test(dialog_id) ? parseInt(dialog_id) : 0; // if (dialog_id > 0 && state.cacheDialogs.findIndex(item => item.id == dialog_id) === -1) { dispatch("showSpinner", 300) @@ -3076,17 +3051,45 @@ export default { } } // + if (single_window || $A.isSubElectron) { + dispatch('openDialogNewWindow', dialog_id); + resolve() + return + } + // requestAnimationFrame(_ => { - state.dialogSearchMsgId = /^\d+$/.test(search_msg_id) ? search_msg_id : 0; - state.dialogMsgId = /^\d+$/.test(dialog_msg_id) ? dialog_msg_id : 0; - state.dialogId = /^\d+$/.test(dialog_id) ? dialog_id : 0; + state.dialogSearchMsgId = search_msg_id; + state.dialogMsgId = dialog_msg_id; + state.dialogId = dialog_id; resolve() }) }) }, /** - * 打开个人会话 + * 打开会话(客户端新窗口) + * @param state + * @param dispatch + * @param dialogId + * @returns {Promise} + */ + openDialogNewWindow({state, dispatch}, dialogId) { + const dialogData = state.cacheDialogs.find(({id}) => id === dialogId) || {} + dispatch('openChildWindow', { + name: `dialog-${dialogId}`, + path: `/single/dialog/${dialogId}`, + force: false, + config: { + title: dialogData.name, + parent: null, + width: Math.min(window.screen.availWidth, 1024), + height: Math.min(window.screen.availHeight, 768), + }, + }); + }, + + /** + * 打开会话(通过会员ID打开个人会话) * @param state * @param dispatch * @param userid