公司动态
vxe-table 实现编辑列的权限控制:列级与表级权限管理
在后台管理系统中表格编辑权限的控制是一个常见需求。不同角色或不同用户可能对同一表格的不同列拥有不同的操作权限——例如普通员工只能编辑部分字段而管理员拥有全部编辑权限。vxe-table 提供了两种灵活的权限控制方式列级权限控制通过 editRender.enabled和表级权限控制通过 editConfig.enabled让你可以精确管理表格的编辑权限。列级权限控制精准管理每一列的编辑权限通过 editRender.enabled 属性可以单独控制某一列的编辑功能是否启用。当 enabled: false 时该列将变为只读状态用户无法进入编辑模式。核心配置constnameEditRenderreactive({name:VxeInput,// 编辑器类型enabled:true// 是否启用编辑默认 true})配置项类型说明editRender.enabledboolean控制该列的编辑功能是否开启。true 可编辑false 为只读。代码templatedivname编辑vxe-switchv-modelnameEditRender.enabled/vxe-switchsex编辑vxe-switchv-modelsexEditRender.enabled/vxe-switchvxe-gridv-bindgridOptions/vxe-grid/div/templatescriptsetupimport{reactive}fromvueconstnameEditRenderreactive({name:VxeInput,enabled:true})constsexEditRenderreactive({name:VxeInput,enabled:true})constageEditRenderreactive({name:VxeNumberInput,props:{type:integer}})constgridOptionsreactive({border:true,showOverflow:true,rowConfig:{keyField:id},editConfig:{trigger:click,mode:cell},columns:[{type:seq,width:50},{field:name,title:Name,editRender:nameEditRender},{field:sex,title:Sex,editRender:sexEditRender},{field:age,title:Age,editRender:ageEditRender},{field:address,title:Address,editRender:{name:VxeInput}}],data:[{id:10001,name:Test1,nickname:T1,role:Develop,sex:Man,age:28,address:Shenzhen},{id:10002,name:Test2,nickname:T2,role:Test,sex:Women,age:22,address:Guangzhou},{id:10003,name:x1111,nickname:T3,role:PM,sex:Man,age:32,address:Shanghai},{id:10004,name:Test4,nickname:T4,role:Designer,sex:Women,age:23,address:Shenzhen},{id:10005,name:Test5,nickname:T5,role:Develop,sex:Women,age:30,address:Shanghai}]})/script使用场景适用于不同角色对不同字段拥有不同编辑权限的场景。例如普通用户只能编辑“姓名”和“性别”而管理员可以编辑所有字段。表级权限控制一键禁用整个表格的编辑当需要临时禁用整个表格的编辑功能时例如某些用户无权限编辑可以通过 editConfig.enabled 一键控制。核心配置consteditConfigreactive({trigger:click,mode:cell,enabled:true// 控制整个表格是否可编辑})代码templatediv全表编辑vxe-switchv-modeleditConfig.enabled/vxe-switchvxe-gridv-bindgridOptions/vxe-grid/div/templatescriptsetupimport{reactive}fromvueconsteditConfigreactive({trigger:click,mode:cell,enabled:true})constnameEditRenderreactive({name:VxeInput})constsexEditRenderreactive({name:VxeInput})constageEditRenderreactive({name:VxeNumberInput,props:{type:integer}})constgridOptionsreactive({border:true,showOverflow:true,rowConfig:{keyField:id},editConfig,columns:[{type:seq,width:50},{field:name,title:Name,editRender:nameEditRender},{field:sex,title:Sex,editRender:sexEditRender},{field:age,title:Age,editRender:ageEditRender},{field:address,title:Address,editRender:{name:VxeInput}}],data:[{id:10001,name:Test1,nickname:T1,role:Develop,sex:Man,age:28,address:Shenzhen},{id:10002,name:Test2,nickname:T2,role:Test,sex:Women,age:22,address:Guangzhou},{id:10003,name:x1111,nickname:T3,role:PM,sex:Man,age:32,address:Shanghai},{id:10004,name:Test4,nickname:T4,role:Designer,sex:Women,age:23,address:Shenzhen},{id:10005,name:Test5,nickname:T5,role:Develop,sex:Women,age:30,address:Shanghai}]})/script使用场景适用于页面整体权限控制例如只读模式、或禁止用户编辑等。两种控制方式的对比控制维度配置方式粒度适用场景列级控制editRender.enabled单列不同字段有不同的编辑权限如角色权限分配表级控制editConfig.enabled整个表格全局禁用/启用编辑如只读模式、数据锁定组合使用两者同时配置灵活组合表级权限 列级例外如管理员可编辑全部普通用户仅部分列组合使用表级 列级权限在实际项目中两种权限控制方式可以组合使用实现更精细的权限管理// 表级全局控制consteditConfigreactive({enabled:true// 全局开关})// 列级特殊列独立控制constsecretEditRenderreactive({name:VxeInput,enabled:false// 即使全局开启该列仍不可编辑})当 editConfig.enabled false 时整个表格变为只读此时列级的 enabled 配置不再生效因为全局权限优先级更高。控制方式配置项适用层级列级权限editRender.enabled精准控制单列的编辑权限适合字段级别的权限分配。表级权限editConfig.enabled一键控制整个表格的编辑状态适合只读模式或全局权限切换。两种方式可以配合使用形成“全局开关 列级例外”的权限模型满足各种复杂的业务需求。通过简单的响应式绑定权限切换可以实时生效无需刷新页面。https://vxetable.cn