美文网首页
解决页面权限及按钮权限的回显问题

解决页面权限及按钮权限的回显问题

作者: 前端新阳 | 来源:发表于2021-04-29 15:06 被阅读0次

【需求】:如下图所示,当点击左侧仓库时,显示对应的页面权限以及按钮权限。
【技术点】:处理树状结构

需求图

【页面代码】

  let targetArr = [],
    expandArr = []
  let authorityArr = []
  if (res.datas && res.datas.length) {
    getAllKeysValues(res.datas, targetArr, expandArr, authorityArr, 'id', 'subs')
  }
  addCheckedFlag(this.rigthTreeData, targetArr, expandArr, authorityArr, 'id', 'subs')

【工具类函数代码】

// 获取数组(包括子节点)的全部子节点id
export function getAllKeysValues(treeArr, targetArr, expandArr, authorityArr, key = 'id', children = 'subs') {
  treeArr.map(item => {
    expandArr.push(item[key])
    if (item.hasOwnProperty('authorityDtos') && item['authorityDtos'] && item['authorityDtos'].length) {
      item['authorityDtos'].map(it => {
        authorityArr.push(it['value'])
      })
    }
    if (item.hasOwnProperty(children) && item[children].length) {
      getAllKeysValues(item[children], targetArr, expandArr, authorityArr, key, children)
    } else {
      targetArr.push(item[key])
    }
  })
}

// 给过滤出的id加选中标识
export function addCheckedFlag(treeArr, idsArr, expandArr, authorityArr, key = 'id', children = 'subs') {
  treeArr.map(item => {
    item.checked = false
    if (item.hasOwnProperty('authorityDtos') && item['authorityDtos'] && item['authorityDtos'].length) {
      item['authorityDtos'].map(its => {
        if (authorityArr.findIndex(it => it == its['id']) != -1) {
          its.checked = true
        } else {
          its.checked = false
        }
      })
    } else {
      if (idsArr.findIndex(it => it == item[key]) != -1) {
        item.checked = true
      }
    }

    if (expandArr.findIndex(it => it == item[key]) != -1) {
      item.expand = true
    } else {
      item.expand = false
    }

    if (item.hasOwnProperty(children) && item[children].length) {
      addCheckedFlag(item[children], idsArr, expandArr, authorityArr, key, children)
    }
  })
}

【编程逻辑】:有按钮权限时就一定有页面权限,没有按钮权限时再去考虑有无页面权限!

  • 接口返回的数据为:
"datas":[
        {
            "id":1320,
            "name":"工作台",
            "url":"",
            "parentId":0,
            "terminalOfType":"web",
            "tenantNumber":"20",
            "functionId":0,
            "routeView":"/wms/workplace",
            "sort":1,
            "icon":"ios-desktop",
            "subs":[
                {
                    "id":1414,
                    "name":"大屏",
                    "url":"",
                    "parentId":1320,
                    "terminalOfType":"web",
                    "tenantNumber":"20",
                    "functionId":0,
                    "routeView":"/wms/daping",
                    "sort":2,
                    "icon":"ios-pie",
                    "subs":[

                    ],
                    "authorityDtos":null,
                    "nodeName":null,
                    "nodeId":1414
                }
            ],
            "authorityDtos":null,
            "nodeName":null,
            "nodeId":1320
        },
        {
            "id":1324,
            "name":"企业管理",
            "url":"",
            "parentId":0,
            "terminalOfType":"web",
            "tenantNumber":"20",
            "functionId":0,
            "routeView":"/wms/company/",
            "sort":2,
            "icon":"ios-contacts",
            "subs":[
                {
                    "id":1325,
                    "name":"组织架构",
                    "url":"",
                    "parentId":1324,
                    "terminalOfType":"web",
                    "tenantNumber":"20",
                    "functionId":0,
                    "routeView":"/wms/company/framework",
                    "sort":1,
                    "icon":"ios-map-outline",
                    "subs":[
                        {
                            "id":1326,
                            "name":"人员信息",
                            "url":"/person",
                            "parentId":1325,
                            "terminalOfType":"web",
                            "tenantNumber":"20",
                            "functionId":300,
                            "routeView":"/wms/company/userManage",
                            "sort":2,
                            "icon":null,
                            "subs":[

                            ],
                            "authorityDtos":[
                                {
                                    "value":"300.4",
                                    "name":"列表",
                                    "personId":null,
                                    "menuName":"人员信息",
                                    "menuId":1326,
                                    "source":null,
                                    "wareId":null
                                },
                                {
                                    "value":"300.2",
                                    "name":"编辑",
                                    "personId":null,
                                    "menuName":"人员信息",
                                    "menuId":1326,
                                    "source":null,
                                    "wareId":null
                                }
                            ],
                            "nodeName":null,
                            "nodeId":1326
                        }
                    ],
                    "authorityDtos":null,
                    "nodeName":null,
                    "nodeId":1325
                }
            ],
            "authorityDtos":null,
            "nodeName":null,
            "nodeId":1324
        },
        {
            "id":1329,
            "name":"仓库管理",
            "url":"",
            "parentId":0,
            "terminalOfType":"web",
            "tenantNumber":"20",
            "functionId":0,
            "routeView":"/wms/depot/",
            "sort":3,
            "icon":"ios-home",
            "subs":[
                {
                    "id":1345,
                    "name":"出库管理",
                    "url":"",
                    "parentId":1329,
                    "terminalOfType":"web",
                    "tenantNumber":"20",
                    "functionId":0,
                    "routeView":"/wms/depot/outstorage",
                    "sort":4,
                    "icon":"logo-chrome",
                    "subs":[
                        {
                            "id":1346,
                            "name":"领料出库",
                            "url":"",
                            "parentId":1345,
                            "terminalOfType":"web",
                            "tenantNumber":"20",
                            "functionId":0,
                            "routeView":"/wms/depot/outStorageManageRWB",
                            "sort":0,
                            "icon":"",
                            "subs":[

                            ],
                            "authorityDtos":null,
                            "nodeName":null,
                            "nodeId":1346
                        }
                    ],
                    "authorityDtos":null,
                    "nodeName":null,
                    "nodeId":1345
                }
            ],
            "authorityDtos":null,
            "nodeName":null,
            "nodeId":1329
        }
    ]

相关文章

  • 解决页面权限及按钮权限的回显问题

    【需求】:如下图所示,当点击左侧仓库时,显示对应的页面权限以及按钮权限。【技术点】:处理树状结构 【页面代码】 【...

  • Vue权限控制(前后端分离之后的权限控制)

    公司前后端已经分离开,过程中涉及权限控制的部分,实现过程如下: 权限类型 页面权限 按钮权限(功能权限) 登录信息...

  • php中比rbac更好的权限认证的方式auth认证类

    RBAC是按节点进行认证的,如果要控制比节点更细的权限就有点困难了,比如页面上面的操作按钮, 我想判断用户权限来显...

  • Vue权限控制

    需求 页面级别权限控制1.URL路由权限控制2.导航菜单权限控制3.超链接权限控制 元素界别权限控制1.按钮元素权...

  • gem install bundler 的时间报错

    权限问题,修改权限安装路径 解决问题

  • 权限管理 - 功能权限

    MisShop提供了两套预置的权限系统,页面级权限和按钮级权限。打开浏览器使用admin账号登录系统后,可以点击导...

  • PermissionUtil动态权限工具类

    描述:适配6.0以下和6.0以上动态权限,并可以解决6.0以上个别手机点拒绝权限后会返回权限允许的回调的问题,例如...

  • vue添加权限校验

    前端的权限校验可以分为菜单资源校验、接口资源和按钮资源校验。 菜单权限 把接口权限和按钮权限统称为资源权限,在数据...

  • 技巧~~

    sudo linux下解决权限问题: w ! sudo tee % 保存权限问题

  • gitlab CI/CD 相关问题

    问题一 : token位置 解决: 问题二: 操作权限问题 有些操作需要权限, 解决: 问题三: .gitlab-...

网友评论

      本文标题:解决页面权限及按钮权限的回显问题

      本文链接:https://www.haomeiwen.com/subject/jbvirltx.html