美文网首页
vue 后台权限功能

vue 后台权限功能

作者: 如风_周 | 来源:发表于2020-08-22 14:28 被阅读0次

最终效果图

image.png

代码

<template>
      <div class="roles">
        <div class="roles_box" v-for="item in treeData" :key="item.id">
          <div class="roles_box_left">
            <div class="tree_box">
              <a-checkbox @change="onChange(item)" :checked="item.checked">
                {{ item.name }}
              </a-checkbox>
            </div>
          </div>
          <div class="roles_box_right" v-for="children in item.children" :key="children.id">
            <div class="box_item">
              <div class="right_header">
                <div class="tree_box">
                  <a-checkbox @change="onChange(children)" :checked="children.checked">
                    {{ children.name }}
                  </a-checkbox>
                </div>
              </div>
              <div class="right_body">
                <div class="tree_box" v-for="btn in children.children" :key="btn.id">
                  <a-checkbox @change="onChange(btn)" :checked="btn.checked">
                    {{ btn.name }}
                  </a-checkbox>
                </div>
              </div>
            </div>
          </div>
        </div>
        <!--        <div class="roles_box">-->
        <!--          <div class="roles_box_left">-->
        <!--            <div class="tree_box">-->
        <!--              <a-checkbox @change="onChange">-->
        <!--                xx管理-->
        <!--              </a-checkbox>-->
        <!--            </div>-->
        <!--          </div>-->
        <!--          <div class="roles_box_right">-->
        <!--            <div class="box_item">-->
        <!--              <div class="right_header">-->
        <!--                <div class="tree_box">-->
        <!--                  <a-checkbox @change="onChange">-->
        <!--                    xxx管理-->
        <!--                  </a-checkbox>-->
        <!--                </div>-->
        <!--              </div>-->
        <!--              <div class="right_body">-->
        <!--                <div class="tree_box">-->
        <!--                  <a-checkbox @change="onChange">-->
        <!--                    xx列表查询-->
        <!--                  </a-checkbox>-->
        <!--                </div>-->
        <!--                <div class="tree_box">-->
        <!--                  <a-checkbox @change="onChange">-->
        <!--                    xx新增-->
        <!--                  </a-checkbox>-->
        <!--                </div>-->
        <!--              </div>-->
        <!--            </div>-->
        <!--          </div>-->
        <!--        </div>-->
      </div>
  </div>
</template>

<script>

  export default {
    name: 'modal',
    data() {
      return {
        treeData: [
          {
            "id": 21,
            "name": "电名水报",
            "checked": false,
            "children": [
              {
                "id": "120116200911273959",
                "name": "众亲压",
                "checked": false
              }
            ] ,
          },
        ],
      }
    },
    created() {
    },
    methods: {
      /**
       * 选中元素子类同时选中
       * @param data Object
       **/
      boxChildrenCheck(o) {
        o.checked = !o.checked
        o?.children.forEach((item) => {
          item.checked = !o.checked
          this.boxChildrenCheck(item)
        })
      },
      /**
       * 根据选中状态设置上一级选中的事件
       * @param data Array
       */
      boxChangeCheck(data) {
        if (data.length === 0) return []
        data.forEach((item) => {
          let checkNum = 0
          item?.children.forEach((element) => {
            element.checked && checkNum++
            this.boxChangeCheck(element.children)
          })
          if (item?.children.length === checkNum) item.checked = true
        })
        this.$forceUpdate()
      },
      /**
       * 点击事件重新渲染元素
       **/
      onChange(e) {
        this.boxChildrenCheck(e)
        this.boxChangeCheck(this.treeData)
      },
      /**
       * 获取选中树的id
       **/
      getBoxCheckId(list) {
        let id = []
        list.forEach((element) => {
          element.checked && id.push(element.id)
          id = id.concat(this.getBoxCheckId(element.children))
        })
        return id
      },
    },
  }
</script>

<style lang="scss" scoped>
  .role_modal {
    .roles {
      min-height: 300px;
      max-height: 800px;
      overflow-y: auto;

      .roles_box {
        display: flex;

        .tree_box {
          margin-right: 10px;
        }

        .roles_box_left {
          width: 200px;
          display: flex;
          justify-content: center;
          align-items: center;
          border: 1px solid #e8e8e8;
        }

        .roles_box_right {
          border: 1px solid #e8e8e8;
          border-left: none;
          width: 100%;

          .box_item {
            border-bottom: 1px solid #e8e8e8;
            padding: 15px;

            &:last-child {
              border-bottom: none;
            }

            .right_header {
            }

            .right_body {
              display: flex;

              div:first-child {
                margin-top: 15px;
              }
            }
          }
        }
      }
    }
  }
</style>

相关文章

  • vue 后台权限功能

    最终效果图 代码

  • vue后台模块学习-3

    继续挖掘vue vue 后台登录和 权限模块开发。 https://juejin.cn/post/69593881...

  • vue后台权限管理

    现在网上有一个很棒的案例vue-element-admin,它已经集成了管理后台的绝大部分的功能,可以适合很多的项...

  • 权限管理:菜单管理

    权限管理是后台管理系统的核心功能,要给不同工作岗位的用户分配不同的操作权限,就需要进行权限管理 功能说明 权限管理...

  • vue配置相关

    一字一句的搞懂vue-cli之vue webpack template配置 基于Vue实现后台系统权限控制 手摸手...

  • 大家心心念念的权限管理功能,这次安排上了!

    mall项目的权限管理功能发布啦!权限管理作为后台管理系统的必要功能,mall项目之前的权限管理并不完善。最近我对...

  • day17项目【权限管理】-03 权限管理功能(接口)

    01-权限管理需求描述 一、权限管理需求描述 不同角色的用户登录后台管理系统拥有不同的菜单权限与功能权限,权限管理...

  • 数据权限控制

    1. 数据权限是什么? 在讲数据权限之前,要先说一下功能权限;功能权限一般的管理后台系统都会涉及到;即:某个人拥有...

  • Vue-SpringBoot 项目实战

    最新SpringBoot+Vue前后台分离权限管理系统项目实战 地址 :GitHub - 252956/sprin...

  • django项目--菜单管理

    后台菜单管理功能 一、业务功能分析 1. 业务需求分析 后台首页菜单根据用户权限动态生成,不同菜单对应不同的功能视...

网友评论

      本文标题:vue 后台权限功能

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