From a9c3aeaa737a75b529a00f84a50fa1e9d34e77a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=8F=E5=A4=A7=E8=83=86?= <1101282782@qq.com> Date: Fri, 28 Nov 2025 15:33:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=B3=E5=87=BB=E5=BC=B9?= =?UTF-8?q?=E6=A1=86=E5=AE=9A=E4=BD=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../setPup/components/graphLabelManage.vue | 31 +++++++-- .../setPup/components/modelManage.vue | 65 ++++++------------- .../setPup/components/photoManage.vue | 32 ++++----- 3 files changed, 62 insertions(+), 66 deletions(-) diff --git a/src/renderer/src/views/components/headers/components/setPup/components/graphLabelManage.vue b/src/renderer/src/views/components/headers/components/setPup/components/graphLabelManage.vue index 2468375..0fa5015 100644 --- a/src/renderer/src/views/components/headers/components/setPup/components/graphLabelManage.vue +++ b/src/renderer/src/views/components/headers/components/setPup/components/graphLabelManage.vue @@ -507,10 +507,15 @@ const showImage = (row: any) => { const handleContextMenu = (event: MouseEvent, row: TypeNode) => { event.stopPropagation() event.preventDefault() - + if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) { + let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect() + contextMenu.x = event.clientX - rect.left + contextMenu.y = event.clientY - rect.top + } else { + contextMenu.x = event.clientX + contextMenu.y = event.clientY + } contextMenu.currentRow = row - contextMenu.x = event.clientX - contextMenu.y = event.clientY if (row.parentId) { // 二级分类菜单 @@ -531,6 +536,14 @@ const handleContextMenu = (event: MouseEvent, row: TypeNode) => { clickTreeNode = row contextMenu.visible = true + document.getElementsByClassName('settingPop')[0].removeEventListener('mousedown', func) + document.getElementsByClassName('settingPop')[0].addEventListener('mousedown', func) +} +let func = () => { + document.getElementsByClassName('settingPop')[0].removeEventListener('mousedown', func) + setTimeout(() => { + contextMenu.visible = false + }, 100) } const toggleExpand = (row: any) => { if (row.childNodes.length != 0) { @@ -566,12 +579,20 @@ const getModelListByType = (id) => { } const divContextMenu = (event: MouseEvent) => { event.preventDefault() - contextMenu.x = event.clientX - contextMenu.y = event.clientY + if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) { + let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect() + contextMenu.x = event.clientX - rect.left + contextMenu.y = event.clientY - rect.top + } else { + contextMenu.x = event.clientX + contextMenu.y = event.clientY + } clickTreeNode = null contextMenu.items = [{ command: 'addType', label: '添加军标类型', icon: 'add' }] contextMenu.visible = true + document.getElementsByClassName('settingPop')[0].removeEventListener('mousedown', func) + document.getElementsByClassName('settingPop')[0].addEventListener('mousedown', func) } const handleMenuCommand = (command: string) => { diff --git a/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue b/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue index 181cf1b..259598c 100644 --- a/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue +++ b/src/renderer/src/views/components/headers/components/setPup/components/modelManage.vue @@ -583,36 +583,16 @@ const handleContextMenu = (event: MouseEvent, row: TypeNode) => { event.stopPropagation() event.preventDefault() contextMenu.currentRow = row - console.log(event, 'eventevent') - contextMenu.x = event.clientX - contextMenu.y = event.clientY - // 计算相对于文档的坐标 - // if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) { - // document.getElementsByClassName('modelTreeRowCon')[0].style.position = 'relative' - // document.getElementsByClassName('context-menu')[0].style.position = 'absolute' - // contextMenu.x = event.offsetX + 28 - // contextMenu.y = - // event.offsetX < 0 || event.offsetX == 0 ? event.offsetY + 145 : event.offsetY + 110 - // // let rect = document.getElementsByClassName('modelTreeRowCon')[0].getBoundingClientRect() - // // contextMenu.x = event.clientX - rect.top - // // contextMenu.y = event.clientY - rect.left - // // console.log('x', event.clientX, rect.left, 'y', event.clientY, rect.top) - // } else { - // document.getElementsByClassName('modelTreeRowCon')[0].style.position = 'unset' - // document.getElementsByClassName('context-menu')[0].style.position = 'fixed' - // contextMenu.x = event.clientX - // contextMenu.y = event.clientY - // } - // console.log(contextMenu.x, contextMenu.y, 'kklklkkl') - // if (row.parentId) { - // // 二级分类菜单 - // contextMenu.items = [ - // { command: 'import', label: '导入模型', icon: 'importModel' }, - // { command: 'rename', label: '重命名', icon: 'rename' }, - // { command: 'delete', label: '删除', icon: 'delModel' } - // ] - // } else { + if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) { + let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect() + contextMenu.x = event.clientX - rect.left + contextMenu.y = event.clientY - rect.top + } else { + contextMenu.x = event.clientX + contextMenu.y = event.clientY + } + // 一级分类菜单 contextMenu.items = [ { command: 'add-child', label: '添加子类型', icon: 'add' }, @@ -624,7 +604,7 @@ const handleContextMenu = (event: MouseEvent, row: TypeNode) => { clickTreeNode = row contextMenu.visible = true - + document.getElementsByClassName('settingPop')[0].removeEventListener('mousedown', func) document.getElementsByClassName('settingPop')[0].addEventListener('mousedown', func) } let func = () => { @@ -669,26 +649,21 @@ const getModelListByType = (id) => { } const divContextMenu = (event: MouseEvent) => { event.preventDefault() - contextMenu.x = event.clientX - contextMenu.y = event.clientY - - // if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) { - // document.getElementsByClassName('modelTreeRowCon')[0].style.position = 'relative' - // document.getElementsByClassName('context-menu')[0].style.position = 'absolute' - // contextMenu.x = event.offsetX + 28 - // contextMenu.y = - // event.offsetX < 0 || event.offsetX == 0 ? event.offsetY + 145 : event.offsetY + 110 - // } else { - // document.getElementsByClassName('modelTreeRowCon')[0].style.position = 'unset' - // document.getElementsByClassName('context-menu')[0].style.position = 'fixed' - // contextMenu.x = event.clientX - // contextMenu.y = event.clientY - // } + if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) { + let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect() + contextMenu.x = event.clientX - rect.left + contextMenu.y = event.clientY - rect.top + } else { + contextMenu.x = event.clientX + contextMenu.y = event.clientY + } clickTreeNode = null contextMenu.items = [{ command: 'addType', label: '添加模型类型', icon: 'add' }] contextMenu.visible = true + document.getElementsByClassName('settingPop')[0].removeEventListener('mousedown', func) + document.getElementsByClassName('settingPop')[0].addEventListener('mousedown', func) } const handleMenuCommand = (command: string) => { diff --git a/src/renderer/src/views/components/headers/components/setPup/components/photoManage.vue b/src/renderer/src/views/components/headers/components/setPup/components/photoManage.vue index 17c6875..f5bb8d7 100644 --- a/src/renderer/src/views/components/headers/components/setPup/components/photoManage.vue +++ b/src/renderer/src/views/components/headers/components/setPup/components/photoManage.vue @@ -591,16 +591,11 @@ const handleContextMenu = (event: MouseEvent, row: TypeNode) => { } contextMenu.currentRow = row - // contextMenu.x = event.clientX - // contextMenu.y = event.clientY if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) { - document.getElementsByClassName('photoTreeRowCon')[0].style.position = 'relative' - document.getElementsByClassName('context-menu')[0].style.position = 'absolute' - contextMenu.x = event.offsetX - contextMenu.y = event.offsetY + 150 + let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect() + contextMenu.x = event.clientX - rect.left + contextMenu.y = event.clientY - rect.top } else { - document.getElementsByClassName('photoTreeRowCon')[0].style.position = 'unset' - document.getElementsByClassName('context-menu')[0].style.position = 'fixed' contextMenu.x = event.clientX contextMenu.y = event.clientY } @@ -624,6 +619,14 @@ const handleContextMenu = (event: MouseEvent, row: TypeNode) => { clickTreeNode = row contextMenu.visible = true + document.getElementsByClassName('settingPop')[0].removeEventListener('mousedown', func) + document.getElementsByClassName('settingPop')[0].addEventListener('mousedown', func) +} +let func = () => { + document.getElementsByClassName('settingPop')[0].removeEventListener('mousedown', func) + setTimeout(() => { + contextMenu.visible = false + }, 100) } const toggleExpand = (row: any) => { if (row.childNodes.length != 0) { @@ -668,16 +671,11 @@ const divContextMenu = (event: MouseEvent) => { return } event.preventDefault() - // contextMenu.x = event.clientX - // contextMenu.y = event.clientY if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) { - document.getElementsByClassName('photoTreeRowCon')[0].style.position = 'relative' - document.getElementsByClassName('context-menu')[0].style.position = 'absolute' - contextMenu.x = event.offsetX - contextMenu.y = event.offsetY + 150 + let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect() + contextMenu.x = event.clientX - rect.left + contextMenu.y = event.clientY - rect.top } else { - document.getElementsByClassName('photoTreeRowCon')[0].style.position = 'unset' - document.getElementsByClassName('context-menu')[0].style.position = 'fixed' contextMenu.x = event.clientX contextMenu.y = event.clientY } @@ -685,6 +683,8 @@ const divContextMenu = (event: MouseEvent) => { contextMenu.items = [{ command: 'addType', label: '添加图标类型', icon: 'add' }] contextMenu.visible = true + document.getElementsByClassName('settingPop')[0].removeEventListener('mousedown', func) + document.getElementsByClassName('settingPop')[0].addEventListener('mousedown', func) } const handleMenuCommand = (command: string) => {