动态控制按钮权限

## 动态控制按钮权限 ### 背景 由于项目开发初期,没有考虑按钮权限,所以前端默认所有的按钮都是可见,现在需要加上按钮权限,通过权限菜单动态显示操作按钮 --- ### 技术原理 把请求权限的接口放在table渲染成功之后触发,保证当前页面的所有节点都已加载完成,这样 就可以取得操作按钮的节点,已将所有逻辑封装在util.js,实际操作不需要关系js逻辑,只 需要在对应的操作按钮上添加相应的限制信息就可以 ### 如何操作 #### 针对pageList.html ```javascript <div class="toolbox layui-row notb p10"> <span class="layui-btn ml15 limitBtn layui-hide" limitname="system:user:save" id="userAdd"><i class="layui-icon">&#xe608;</i> 用户新增</span> <button class="layui-btn" lay-submit lay-filter="userSearch"><i class="layui-icon">&#xe615;</i>用户查询</button> </div> </div> ``` 找到对应的按钮span,添加 **==limitBtn layui-hide==**, ==layui-hide==保证节点在初始化的时候是隐藏的,==limitBtn==是确认当前按钮是需要限制的按钮。 ==limitname==是指当前限定按钮到底限制什么,里面的数据是后台返回的 #### 针对非pageList.html 请在页面加载完成的时候,一般是数据回显之后,手动调用==onion.getPermission();==,其他和pageList.html一致,找到对应的操作按钮,添加类名和限定内容 ### 公开API onion.getPermission 手动获取权限接口数据,参数是菜单地址 demo: ![image.png](https://cos.easydoc.net/25146546/files/k0c46vpd.png) 如果是table数据,手动执行done回调钩子 ### 操作细节 直接操作接口数据,根据当前权限接口返回的数据,确认limitname是什么内容