角色权限修改(下)

开发工具与关键技术:VS/MVC
作者:何桂朋
撰写时间:2019年7月4日
接着《角色权限修改(上)》,把按钮渲染的效果(如图):
在这里插入图片描述
左侧的是大模块,右侧大模块里面对应的具体的操作模块,绿色的按钮是已授权的权限,而白色的按钮是未授权的权限,在《角色权限修改(上)》提到用strmodularDetailId接收原始已授权的“权限ID”拼接的字符串,然后用数组 “ModularDetailIds”接收分割的strmodularDetailId 的字符串,此时ModularDetailIds就是“权限ID”的数组。

因为在“layui 表格”渲染的操作按钮中,每个按钮中都含有“权限ID”(绿按钮和按钮),用按钮的“权限ID”和ModularDetailIds的“权限ID”做比较。循环按钮的“权限ID”,如果这个按钮的按钮的“权限ID”在ModularDetailIds的“权限ID”有相同。则这个按钮为选中状态(绿色),反之,这个按钮为未选中状态(白色)。

确认原始按钮之后,获取选中按钮的“权限ID”和获取取消按钮的“权限ID”,
声明 insertModularDetailIds 和 deleteModularDetailIds用于接收选中按钮的“权限
ID”和就是取消按钮的“权限ID”

//记录新增的权限ID
var insertModularDetailIds = new Array();
//记录删除的权限ID
var deleteModularDetailIds = new Array();

点击按钮时,首先是判断点击按钮是什么颜色,“layui 按钮”的判断的方法是
绿按钮比白按钮的样式里少了"layui-btn-primary",知道按钮颜色,把白色变成绿色, 把绿色变成白色。
下面的 “id” 是按钮的“权限ID” indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置,如果要检索的字符串值没有出现,则该方法返回 -1。

if (ModularDetailIds.indexOf(id.toString())>-1) {
            deleteModularDetailIds.push(id);
}
 else {
        if (insertModularDetailIds.indexOf()>-1) {
    		insertModularDetailIds = removeValueInArray(id,insertModularDetailIds);
        }
}

上面的代码是点击绿按钮后的操作。按钮之所以为“绿色”,可能是原始按钮。就是刚渲染时就有的。也可能是点击白按钮变来的。所以分两种情况考虑。
第一种:
判断是否是原始按钮的方法是检查 这个按钮的“权限ID” 和 “ModularDetailIds”中的“权限ID” 相同。如果相同,就把这个按钮的“权限ID”列入“记录删除的权限ID”的数组。
第二种:
就是非原始按钮,是点击白按钮变来的。这种按钮的“权限ID“ 在“ModularDetailIds”中的“权限ID”不存在,存在于insertModularDetailIds(记录新增的权限ID) 的数组里。只要在 insertModularDetailIds(记录新增的权限ID) 的数组中找到并去除掉就可以了。

而点击的是白按钮的情况恰好相反,代码如下:

if (ModularDetailIds.indexOf(id.toString())>-1) {
      if (deleteModularDetailIds.indexOf(id)>-1) {
           deleteModularDetailIds = removeValueInArray(id,deleteModularDetailIds);
      }
}
else {
        insertModularDetailIds.push(id);
}

最后用 “sort()“ 对 ” insertModularDetailIds “ 、”deleteModularDetailIds “排序,
提交到控制器,该删除的删除,该新增的新增。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值