diff --git a/src/services/context-menu/README.md b/src/services/context-menu/README.md deleted file mode 100644 index b24aa47..0000000 --- a/src/services/context-menu/README.md +++ /dev/null @@ -1,164 +0,0 @@ -# 右键菜单服务 - 模块化架构 - -## 概述 - -右键菜单服务已重构为模块化架构,按业务逻辑分离到不同的文件中,提高了代码的可维护性和可扩展性。 - -## 文件夹结构 - -``` -src/services/context-menu/ -├── index.ts # 主入口文件,导出所有服务 -├── state-manager.ts # 核心状态管理 -├── event-parser.ts # 事件解析器 -├── storage-menu.service.ts # 库位相关业务逻辑 -├── robot-menu.service.ts # 机器人相关业务逻辑 -├── menu-config.service.ts # 菜单配置服务 -└── README.md # 说明文档 -``` - -## 组件结构 - -``` -src/components/context-menu/ -├── index.ts # 组件入口文件 -├── context-menu.vue # 主菜单组件 -├── storage-menu.vue # 库位菜单组件 -├── robot-menu.vue # 机器人菜单组件 -└── default-menu.vue # 默认菜单组件 -``` - -## 核心模块说明 - -### 1. 状态管理 (state-manager.ts) - -- 提供纯函数和状态管理工具 -- 避免单例模式的问题 -- 支持订阅/通知机制 - -### 2. 事件解析 (event-parser.ts) - -- 解析鼠标事件和pen数据 -- 提取事件信息 -- 纯函数,无副作用 - -### 3. 库位菜单服务 (storage-menu.service.ts) - -- 处理库位相关的菜单逻辑 -- 库位状态检查 -- 库位操作处理 - -### 4. 机器人菜单服务 (robot-menu.service.ts) - -- 处理机器人相关的菜单逻辑 -- 机器人状态管理 -- 机器人操作处理 - -### 5. 菜单配置服务 (menu-config.service.ts) - -- 统一管理不同业务类型的菜单配置 -- 提供统一的菜单配置入口 - -## 使用方式 - -### 基本使用 - -```typescript -import { createContextMenuManager, handleContextMenu, handleContextMenuFromPenData } from '@/services/context-menu'; - -// 创建状态管理器 -const manager = createContextMenuManager(); - -// 处理右键事件 -handleContextMenu(event, manager, { - storageLocationService: storageService, - robotService: robotService, -}); -``` - -### 组件使用 - -```vue - - - -``` - -## 扩展新业务类型 - -### 1. 添加新的业务服务 - -在 `src/services/context-menu/` 下创建新的服务文件,例如 `point-menu.service.ts`: - -```typescript -export interface PointMenuConfig { - menuType: 'point' | 'default'; - pointInfo?: PointInfo; -} - -export function getPointMenuConfig(data: ParsedEventData): PointMenuConfig { - // 实现点位菜单逻辑 -} -``` - -### 2. 添加新的组件 - -在 `src/components/context-menu/` 下创建新的组件文件,例如 `point-menu.vue`: - -```vue - - - -``` - -### 3. 更新菜单配置服务 - -在 `menu-config.service.ts` 中添加新的业务类型处理: - -```typescript -case 'point': - return getPointMenuConfig(data); -``` - -### 4. 更新主菜单组件 - -在 `context-menu.vue` 中添加新的组件: - -```vue - -``` - -## 向后兼容 - -原有的 `context-menu.service.ts` 文件仍然保留,作为向后兼容的入口,重新导出新的模块化服务。现有代码无需修改即可继续使用。 - -## 优势 - -1. **模块化**: 按业务逻辑分离,代码更清晰 -2. **可维护性**: 每个模块职责单一,易于维护 -3. **可扩展性**: 新增业务类型只需添加对应模块 -4. **可测试性**: 每个模块可独立测试 -5. **向后兼容**: 保持现有API不变 diff --git a/src/services/context-menu/robot-menu.service.ts b/src/services/context-menu/robot-menu.service.ts index 5185473..6d3e013 100644 --- a/src/services/context-menu/robot-menu.service.ts +++ b/src/services/context-menu/robot-menu.service.ts @@ -291,3 +291,27 @@ export function getRobotActionIcon(action: RobotAction): string { return iconMap[action] || '⚙️'; } + +/** + * 获取机器人信息 + * @param robotId 机器人ID + * @returns 机器人信息 + */ +export function getRobotInfo(robotId: string): RobotInfo | null { + // 这里应该从实际的机器人服务中获取信息 + // 目前返回null,实际使用时需要对接真实的机器人数据源 + console.warn('getRobotInfo: 需要对接真实的机器人数据源', robotId); + return null; +} + +/** + * 获取机器人菜单配置 + * @param robotInfo 机器人信息 + * @returns 机器人菜单配置 + */ +export function getRobotMenuConfig(robotInfo: RobotInfo): RobotMenuConfig { + return { + menuType: 'robot', + robotInfo, + }; +} \ No newline at end of file