常见前端三级菜单授权逻辑讲解(element-ui)

hello你好我是辰兮很高兴你来阅读,最近遇到太多关于三级菜单的逻辑以及做判断时候遇到的问题,刚好抽点时间整理一下相关的知识点!分享获取新知,大家一起进步!


一、应用场景

关于本篇多少三级菜单业务的讲解

关于多级菜单更多是在管理员的页面进行的相关操作,常见的包括授权等!比如一级权限,二级权限,三级权限!

其他的应用场景 比如省/市/区 等等 组织/区域/特定位置 等等

在这里插入图片描述

关于菜单的相关组件 参考bootstrap /element-ui 等前端参考案例

这部分后台的逻辑复杂一点,前端大家直接调用看懂函数即可,下面来简单的和大家分享一下多级菜单的相关逻辑实现!


二、逻辑分析

关于授权的逻辑建议大家从下往上分析!

首先点击三级菜单的时候

逻辑1:如果二级菜单未勾选,我们要实现勾选

逻辑2:此时要判断,如果一级菜单未勾选,我们要实现勾选

在这里插入图片描述

当我们点击二级菜单的时候

逻辑1:我们要实现三级菜单的全部勾选

逻辑2:此时要判断,如果一级菜单未勾选,我们要实现勾选

在这里插入图片描述
当我们点击一级菜单的时候

逻辑1:我们要实现二级菜单的全部勾选

逻辑2:同时实现二级菜单的子菜单的全部勾选

在这里插入图片描述


取消勾选

当我们点击三级菜单全部取消的时候,

逻辑1:我们此时要取消三级对应的二级菜单

逻辑2:同时要判断二级菜单对应的一级菜单它的子菜单是否全部取消
①如果二级菜单全部取消,则一级菜单取消 ②如果二级菜单未全部取消 此时一级菜单保留

在这里插入图片描述
转成做了一个gif的动图来更直观的感受!


当我们点击二级菜单取消勾选的时候

逻辑1:我们此时要取消二级对应的子菜单即三级菜单,所有√取消

逻辑2:同时要判断二级菜单对应的一级菜单它的子菜单(二级菜单本身)是否全部取消
①如果二级菜单全部取消,则一级菜单取消 ②如果二级菜单未全部取消 此时一级菜单保留


当我们点击三级菜单取消勾选的时候

逻辑1:我们此时要取消二级对应的子菜单即三级菜单,所有√取消

逻辑2:同时要判断二级菜单对应的一级菜单它的子菜单(二级菜单本身)是否全部取消
①如果二级菜单全部取消,则一级菜单取消 ②如果二级菜单未全部取消 此时一级菜单保留

在这里插入图片描述


代码只是一种逻辑思维的展示,整体的三级菜单逻辑就是这样,希望我的分享对你有帮助!

copy了element上的一份关于前端三级授权的树形图,想顺路看看结构就看看吧,也可以去官网看!

<el-tree
  :data="data"
  show-checkbox
  node-key="id"
  :default-expanded-keys="[2, 3]"
  :default-checked-keys="[5]"
  :props="defaultProps">
</el-tree>

<script>
  export default {
    data() {
      return {
        data: [{
          id: 1,
          label: '一级 1',
          children: [{
            id: 4,
            label: '二级 1-1',
            children: [{
              id: 9,
              label: '三级 1-1-1'
            }, {
              id: 10,
              label: '三级 1-1-2'
            }]
          }]
        }, {
          id: 2,
          label: '一级 2',
          children: [{
            id: 5,
            label: '二级 2-1'
          }, {
            id: 6,
            label: '二级 2-2'
          }]
        }, {
          id: 3,
          label: '一级 3',
          children: [{
            id: 7,
            label: '二级 3-1'
          }, {
            id: 8,
            label: '二级 3-2'
          }]
        }],
        defaultProps: {
          children: 'children',
          label: 'label'
        }
      };
    }
  };
</script>

The best investment is to invest in yourself.

在这里插入图片描述

2020.10.29 晚22:15 愿你们奔赴在自己的热爱里!

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页