diff --git a/src/pages/movement-supervision.vue b/src/pages/movement-supervision.vue index 287f2ae..a48b3a0 100644 --- a/src/pages/movement-supervision.vue +++ b/src/pages/movement-supervision.vue @@ -290,6 +290,11 @@ const current = ref<{ type: 'robot' | 'point' | 'line' | 'area'; id: string }>() watch( () => editor.value?.selected.value[0], (v) => { + // 如果右键菜单正在显示,则不更新选中状态 + if (contextMenuState.value.isRightClickActive) { + return; + } + const pen = editor.value?.getPenById(v); if (pen?.id) { current.value = { type: <'point' | 'line' | 'area'>pen.name, id: pen.id }; diff --git a/src/services/context-menu/menu-config.service.ts b/src/services/context-menu/menu-config.service.ts index 809609c..0141882 100644 --- a/src/services/context-menu/menu-config.service.ts +++ b/src/services/context-menu/menu-config.service.ts @@ -120,6 +120,7 @@ export function handleContextMenu( x: parsedData.position.x, y: parsedData.position.y, eventData: parsedData, + isRightClickActive: true, // 标记右键菜单正在显示 ...menuConfig, // 展开具体配置 }); @@ -152,6 +153,7 @@ export function handleContextMenuFromPenData( x: parsedData.position.x, y: parsedData.position.y, eventData: parsedData, + isRightClickActive: true, // 标记右键菜单正在显示 ...menuConfig, // 展开具体配置 }); diff --git a/src/services/context-menu/state-manager.ts b/src/services/context-menu/state-manager.ts index 5513f90..f9669c1 100644 --- a/src/services/context-menu/state-manager.ts +++ b/src/services/context-menu/state-manager.ts @@ -11,6 +11,7 @@ export interface ContextMenuState { eventData?: any; storageLocations?: any[]; robotInfo?: any; + isRightClickActive?: boolean; // 新增:标记右键菜单是否正在显示,用于阻止选中状态更新 } /** @@ -66,7 +67,7 @@ export function createContextMenuManager() { * 关闭菜单 */ function close() { - setState({ visible: false }); + setState({ visible: false, isRightClickActive: false }); } return {