修改右击弹框定位问题

This commit is contained in:
2025-11-28 15:33:01 +08:00
parent 39b73bcad8
commit a9c3aeaa73
3 changed files with 62 additions and 66 deletions

View File

@ -507,10 +507,15 @@ const showImage = (row: any) => {
const handleContextMenu = (event: MouseEvent, row: TypeNode) => {
event.stopPropagation()
event.preventDefault()
contextMenu.currentRow = row
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
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()
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) => {

View File

@ -583,36 +583,16 @@ const handleContextMenu = (event: MouseEvent, row: TypeNode) => {
event.stopPropagation()
event.preventDefault()
contextMenu.currentRow = row
console.log(event, 'eventevent')
// 计算相对于文档的坐标
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
}
// 计算相对于文档的坐标
// 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 {
// 一级分类菜单
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()
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
// 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
// }
}
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) => {

View File

@ -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) => {