# API 管理批量分配角色方案归档 ## 背景 - 页面:`/layout/admin/api` - 源码:`src/view/superAdmin/api/api.vue` - 需求:在 API 管理列表中勾选多个 API 后,支持一次性分配角色。 ## 方案 - 在 API 表格顶部按钮区新增 `批量分配角色` 按钮。 - 按钮复用表格已有 `selection-change` 选中数据,未勾选 API 时禁用。 - 批量分配复用原单条 `分配角色` 抽屉,不新增独立页面或公共组件。 - 批量模式下抽屉标题显示 `批量分配角色 - 已选 N 个API`。 - 批量模式下角色树默认不预勾选角色,避免多个 API 当前角色不一致时产生误导。 - 点击确定后,对所选 API 逐个调用现有 `setApiRoles` 接口。 - 保存语义与单条分配保持一致:对每个 API 都是全量覆盖角色关联关系,并由后端接口刷新 Casbin 缓存。 ## 取舍 - 当前采用前端批量调用现有接口,不新增后端批量接口。 - 优点:改动边界小,复用既有 `getAuthorityList`、`setApiRoles` 和页面抽屉逻辑。 - 限制:多个 API 会产生多次请求;如果后续需要事务一致性或大量 API 批量处理,应新增后端批量接口。 ## 涉及文件 - `src/view/superAdmin/api/api.vue` - 新增批量分配入口。 - 新增批量模式状态、标题和提示文案。 - 单条与批量共用提交函数。 - `src/view/superAdmin/api/assignRole.js` - 新增 `buildApiRoleAssignRequests`,统一构造角色分配请求参数。 - `src/view/superAdmin/api/assignRole.test.mjs` - 覆盖批量 API 到 `setApiRoles` payload 的转换逻辑。 ## 验证 - `node .\src\view\superAdmin\api\assignRole.test.mjs`:通过。 - `npm run build`:通过。 - 构建存在 Vite 大 chunk warning,属于现有构建体积提示,不影响本次功能编译。 ## 后续建议 - 若批量选择数量可能很大,建议后端补充批量接口,例如一次提交 `apis + authorityIds`,由后端统一处理事务、错误聚合和缓存刷新。