Files
shanxia2.0/docs/superpowers/specs/2026-09-03-pl-plan-cert-button-permission-design.md
T
2026-09-06 20:44:56 +08:00

2.7 KiB
Raw Blame History

危化品证上传:按钮权限 设计

日期:2026-09-03
范围:web-admin 【危化品证上传】页;backend 证书上传/齐备写接口;sys_menu 按钮权限
状态:已评审(方案 A,用户确认继续)

1. 背景与目标

部分用户可进入【危化品证上传】查看计划与证书状态,但不应执行写操作。需对以下按钮加权限控制:

  • 证书齐备(含批量)
  • 取消齐备(含批量)
  • 上传证书(含列表附件列、查看弹窗入口)

采用方案

在当前页做权限控制(不新建「危化品证上传查看」模块),对齐运输计划归档模式:前端隐藏 + 后端写接口 403。

2. 权限模型(方案 A)

perms menu_type 作用
pl:plan-cert:list C(页面) 进入页、查询、查看(已有)
pl:plan-cert:upload F 上传/保存证书附件
pl:plan-cert:ready F 证书齐备 + 取消齐备(共用)

super_admin 视为拥有全部权限。

角色配置示例

角色意图 勾选
只读(看列表/查看/预览附件) list
证书文员(上传、不确认齐备) list + upload
主管(确认齐备、不上传) list + ready
完整操作 list + upload + ready

迁移

对已拥有 PL_PLAN_CERT 页面权限的角色,默认补勾 upload + ready,避免现网行为回退。

3. 前端行为

入口:web-admin/src/views/pl/plan-cert/index.vue
权限读取:fetchGetMenuCodes()(同 plan-archive)。

无 pl:plan-cert:upload

  • 工具栏「上传证书」隐藏
  • 查看弹窗 hero「上传证书」隐藏
  • 列表「计划附件」列:clickable=false(仍可预览已有附件,不可打开上传弹窗)
  • handleUploadCert 二次校验并提示

无 pl:plan-cert:ready

  • 工具栏「证书齐备」「取消齐备」隐藏
  • 查看弹窗 hero 对应按钮隐藏

仍可见(只读)

筛选、列表、查看弹窗、导出、附件预览。

4. 后端

接口 所需 perms
PATCH /transport/plan/{id}/product-certs pl:plan-cert:upload
PATCH /transport/plan/{id}/hazard-cert-ready pl:plan-cert:ready

实现:app/services/pl_plan_cert_perm.py + plan.py 入口校验。

5. 非目标

  • 运输计划主列表上的证书能力(本页独立)
  • 证书齐备业务规则变更
  • 菜单角标算法

6. 验收

场景 期望
仅 list 能看列表/查看/预览;三按钮不可见;写接口 403
list + upload 能上传;不能齐备/取消
list + ready 能齐备/取消;不能上传
全权限 与现网一致
super_admin 全能力