perf: 优化消息窗口

This commit is contained in:
kuaifan 2025-03-30 07:51:13 +08:00
parent 7fc328492b
commit 15f3f9c0e5
4 changed files with 40 additions and 37 deletions

View File

@ -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":

View File

@ -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();
},

View File

@ -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':

View File

@ -1248,28 +1248,6 @@ export default {
$A.Electron.sendMessage('openWebTabWindow', params)
},
/**
* 打开会话独立窗口客户端
* @param state
* @param dispatch
* @param dialogId
* @returns {Promise<void>}
*/
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<void>}
*/
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