Some checks failed
CI / init (pull_request) Has been cancelled
CI / Frontend node 18.16.0 (pull_request) Has been cancelled
CI / Backend go (1.22) (pull_request) Has been cancelled
CI / release-pr (pull_request) Has been cancelled
CI / devops-test (1.22, 18.16.0) (pull_request) Has been cancelled
CI / release-please (pull_request) Has been cancelled
CI / devops-prod (1.22, 18.x) (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
2.0 KiB
2.0 KiB
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 到
setApiRolespayload 的转换逻辑。
- 覆盖批量 API 到
验证
node .\src\view\superAdmin\api\assignRole.test.mjs:通过。npm run build:通过。- 构建存在 Vite 大 chunk warning,属于现有构建体积提示,不影响本次功能编译。
后续建议
- 若批量选择数量可能很大,建议后端补充批量接口,例如一次提交
apis + authorityIds,由后端统一处理事务、错误聚合和缓存刷新。