## 目标 - 在运营管理中新增“头衔管理”菜单与页面 `/operations/titles`,支持称号列表与搜索、并提供为玩家分配称号的入口。 - 兼容当前两种菜单控制模式:前端模块路由与后端动态菜单;确保至少前端可见并可用。 ## 变更项 ### 前端路由与页面 - 路由:在 `web/admin/src/router/modules/operations.ts` 新增子路由 `titles`(`name: 'Titles'`,`component: '/operations/titles'`,`meta.title: '称号管理'`)。 - 页面:新增 `web/admin/src/views/operations/titles/index.vue`: - 列表:调用 `titlesApi.getList` 展示称号名称、状态、创建时间、描述;支持名称与状态筛选。 - 操作: - 行内“分配称号”:弹出 `assign-title-dialog.vue`,为指定玩家分配称号。 - (占位)创建/编辑/删除:预留按钮,后端 CRUD 未完成则禁用或隐藏。 ### 前端 API - 已有 `web/admin/src/api/titles.ts` 支持 `getList`、`assignToUser`;页面直接复用。 ### 菜单显示(后端动态菜单模式) - 后端菜单接口:`/api/v3/system/menus/simple` 已存在。 - 如需在后端模式下展示菜单:可在后台菜单管理中新增一条菜单记录(父节点为运营),`component: '/operations/titles'`,`name: 'Titles'`,`icon: 'ri:medal-line'`,`status: true`;当前计划不强制修改后端菜单数据,仅完成前端路由与页面以确保可见与可用。 ## 验收 - 运营管理左侧菜单出现“称号管理”,进入后能搜索与查看称号列表。 - 行内“分配称号”打开弹窗,提交后接口返回成功并刷新列表。 - 前端构建通过;后端接口已就绪(列表与分配)。 确认后我将立即实施以上前端路由与页面接入,并在必要时协助配置后端菜单以在“后端控制菜单模式”下显示。