SpringBoot3+Vue3 流程节点字段权限:同一张单申请人可写、审批人只读如何落地

📅 2026/8/14 9:14:23
SpringBoot3+Vue3 流程节点字段权限:同一张单申请人可写、审批人只读如何落地
SpringBoot3Vue3 流程节点字段权限同一张单申请人可写、审批人只读如何落地一句话节点字段权限回答的是「当前这个任务上每个字段能不能改」角色字段权限回答的是「这个人进列表能不能看见列」——两者叠在一起但配置入口完全不同。▲ 四态 WRITE/READ/NONE/REQUIREDNORMAL 走 BPMN 扩展元素CUSTOM 走按节点快照已办/抄送整单只读审批里最常见的产品原话「经理不许改请假天数但 HR 节点可以改假期类型。」如果做成前端disabled写死在页面上 → 每个单据复制一份和流程节点对不上只靠菜单权限 → 经理打开详情仍是整单可编辑复用「系统管理里的字段权限」→ 那是角色×表结构没有「第 2 个审批节点」。正确模型权限绑在流程节点上运行时按当前 activityId 下发。待办列表是审批人的入口详情打开后才应用本节点配置▲ 待办任务点进详情时带 taskId后端用任务定义 Key 取本节点字段权限用印、出差这类 CUSTOM 业务单字段更多也更需要「主表 明细表」两套权限▲ 用印申请复杂 Vue 表单走 businessFieldsPermission而不是 form-create 的 fieldsPermission一、四态枚举前后端必须同码枚举值含义审批态表现READ1只读可见、禁用WRITE2可编辑可见、可改NONE3隐藏不渲染制单态也藏REQUIRED4必填可改 校验非空后端枚举与前端BpmFieldPermissionType字符串码一致。对不上会出现「配置了隐藏页面还在」。二、两条落地链路NORMAL vs CUSTOM流程模型有两种表单选型详见既有「流程表单 vs 业务表单」一文。字段权限也分叉NORMAL 流程表单CUSTOM 业务表单页面form-create 动态 schema业务自己的 Vue请假/用印/出差配置节点fieldsPermission节点businessFieldsPermission持久化BPMN UserTask扩展元素流程定义上的JSON 快照按 nodeId下发字段formFieldsPermissionbusinessFieldsPermission前端消费fApi.disabled/ 删字段useBusinessFieldPermission2.1 NORMAL从 BPMN 扩展元素解析审批详情根据taskId找到activityId再从 BpmnModel 读扩展元素MapString,StringgetFormFieldsPermission(BpmnModelmodel,StringactivityId,StringtaskId){if(activityIdnulltaskId!null){activityIdhistoricTask(taskId).getTaskDefinitionKey();}if(activityIdnull)returnnull;returnparseFormFieldsPermission(model,activityId);// 读 UserTask 扩展元素}解析结果是字段名 → 1|2|3|4。发起/审批页拿到后if(permission1)fApi.disabled(true,field);// 只读if(permission2)fApi.disabled(false,field);// 可写if(permission4){fApi.disabled(false,field);/* 加 required 规则 */}if(permission3)fApi.removeField(field);// 隐藏2.2 CUSTOM按节点快照支持明细表快照形状{ Activity_经理: [ { field: day, permission: 1, tableType: 0 }, { field: reason, permission: 1, tableType: 0 } ], Activity_HR: [ { field: leaveType, permission: 4, tableType: 0 } ] }tableType 0主表非 0 走进detailFields[表名][字段]。兼容未重新发布的定义快照为空时从 simpleModel现场再解析一遍。前端 composable 的状态机产品语义无配置 → 回退「审批中整单只读 / 制单可编」老逻辑 NONE → 任何态都隐藏含制单 viewTypecopy|done → 整单只读 制单且流程可编辑 → 主表字段默认可编隐藏仍藏 审批态 → 严格按本节点 WRITE/REQUIRED 才可改 其它审批中看自己的单→ 不能套发起人节点的可写配置最后一条是踩坑点申请人打开「我的流程」看审批中的单如果错误套用 StartUserNode 的 WRITE就会在审批进行中改到天数。实现里明确非审批态且流程已在跑整单只读。三、运行时门禁viewType × isApproval × 流程状态入口viewTypeisApproval字段策略新建 / 驳回后重提my可编辑状态false可编NONE 仍藏待办办理—true当前节点配置我的流程审批中myfalse整单只读已办donefalse整单只读抄送copyfalse整单只读待办进详情必须带任务 ID否则 activityId 为空权限 Map 为 nullCUSTOM 会回退成「整单只读或整单可编」的粗粒度节点级配置等于没配。四、和 RBAC 字段权限有什么不一样流程节点字段权限角色字段权限维度节点 × 字段角色 × 表/列何时变换审批人、换节点就变换角色才变典型经理只读天数、HR 可改类型财务角色看不见成本列配置人流程管理员系统管理员两者可以同时生效角色权限先决定「这人有没有模块」节点权限再决定「这关表单哪些格能填」。不要用角色权限去模拟「第 2 关只读」节点一多必崩。五、配置建议用印 / 请假 / 出差节点建议发起人业务必填项 REQUIRED内部备注可 NONE部门经理申请要素 READ审批意见在任务表单不在业务字段HR / 印章管理员仅开放本岗要改的 12 个字段 WRITE/REQUIRED抄送节点全部 READ 或走 viewTypecopy 整单只读明细行隐藏整列用 NONE禁止只藏单元格却留表头空列用印这类带明细、附件的单务必在 SIMPLE 设计器的审批节点里勾选业务字段权限发布后确认流程定义快照里出现了该 nodeId。只改设计器不点发布运行时仍是旧快照。流程模型仍是配置入口▲ 流程模型SIMPLE 审批节点可配业务字段权限发布后写入定义快照六、建议测试矩阵经理节点天数只读尝试改接口应被前端拦住后端仍应做任务办理校验不信任前端 disabledHR 节点假期类型 REQUIRED空提交被拦住NONE 字段发起页也不展示避免申请人填了审批人看不见的「幽灵字段」已办/抄送所有输入框 disabled审批中申请人打开自己的单不能改驳回重提回到可编辑状态REQUIRED 再生效明细表隐藏列表头与单元格一起消失移动端详情同样吃formFieldsPermission/ 业务权限避免 PC 藏了 App 还能改FAQQ1为什么我配了只读经理还能改A先看是不是进了待办isApprovaltrue以及 activityId 是否当前节点。看「我的流程」会整单只读或误套发起人权限表现和待办不同。Q2NORMAL 和 CUSTOM 能不能混用一套配置A不能。form-create 吃formFieldsPermissionVue 业务页吃businessFieldsPermission。配错槽位等于没配。Q3隐藏字段还会提交到后端吗A前端 remove/不渲染后一般不会带出。后端办理接口仍应按节点白名单忽略或拒绝未授权字段防止抓包改day。Q4和按钮权限通过/拒绝/转办是一回事吗A不是。按钮是buttonsSetting字段是四态枚举。可以关「拒绝」但字段仍只读。Q5改完权限为什么老流程没变A权限打在流程定义上。已发起的实例绑定旧定义。要新规则发布新版本后再发起。和 RuoyiOffice 的对应关系能力位置概念四态枚举BPM 字段权限枚举1/2/3/4NORMAL 解析BpmnModel 扩展元素 → formFieldsPermissionCUSTOM 快照流程定义 businessFieldsPermission运行时 composableuseBusinessFieldPermissionform-create 应用发起/审批页setFieldPermission待办入口任务办理详情带 taskId完整后端GitCodehttps://gitcode.com/ruoyioffice/ruoyi-office AtomGithttps://atomgit.com/ruoyioffice/ruoyi-office前端GitCodehttps://gitcode.com/ruoyioffice/ruoyi-office-vben总结节点字段权限 ≠ 角色字段权限前者随审批关口变化。NORMAL 进 BPMN 扩展元素CUSTOM 进按 nodeId 的快照前端消费口不能混。四态要连同 viewType 一起测待办、我的、已办、抄送、重提五条路径。NONE 在制单态也隐藏审批中不要把发起人节点的可写配置套到申请人回看。⭐ GitCodehttps://gitcode.com/ruoyioffice/ruoyi-office · AtomGithttps://atomgit.com/ruoyioffice/ruoyi-office 点星夏日活动攒积分。在线体验https://www.ruoyioffice.com商业版源码授权https://www.ruoyioffice.com/contact · 企业微信RuoyiOffice关键词SpringBoot3、Vue3、Flowable、字段权限、审批表单、WRITE/READ/NONE/REQUIRED、业务表单