zoukankan      html  css  js  c++  java
  • 如何在VUE中弹窗树形三级控件

     

    对话框代码如下

     
    <!-- 分配权限的对话框 -->
        <el-dialog
          title="分配权限"
          :visible.sync="showSetRight"
          width="50%"
          @close="setRightDialogClosed"
        >
          <el-tree
            :data="rightsList"
            :props="treeProps"
            show-checkbox
            node-key="id"
            default-expand-all
            :default-checked-keys="defKeys"
            ref="treeRef"
          ></el-tree>
          <span slot="footer" class="dialog-footer">
           <el-button @click="showSetRight = false">取 消</el-button>
            <el-button type="primary" @click="allotRights">确 定</el-button>
          </span>
        </el-dialog>

    数据列表

    return {
          // 所有角色数据列表
          rolelist: [],
          // 控制权限对话框是否显示
          showSetRight: false,
          // 所有权限的列表
          rightsList: [],
          // 树形控件的默认属性
          treeProps: {
            children: 'children',
            label: 'authName',
          },
          // 默认选中的数组id值
          defKeys: [],
          // 角色id
          roleId: '',
        }
      },

    展示对话框

     
    // 展示分配权限对话框
        showSetRightDialog(role) {
          //    获取的角色的id
          this.roleId = role.id
          reqRights().then((res) => {
            if (res.data.meta.status !== 200) {
              return this.$message.error('获取权限信息失败')
            }
            console.log(res.data.data)
            this.showSetRight = true
            this.rightsList = res.data.data
            this.getLeafKeys(role, this.defKeys)//获取对应的权限数据赋值给对话框
            //console.log(this.defKeys)
          })
        },
     

    通过递归的形式,获取角色下的所有权限id,并赋值给defKeys

    //  通过递归的形式,获取角色下的所有权限id,并赋值给defKeys
        getLeafKeys(node, arr) {
          // 如果当前节点不包含children属性,则是三级节点
          if (!node.children) {
            return arr.push(node.id)
          }
          // 通过递归
          node.children.forEach((item) => {
            this.getLeafKeys(item, arr)
          })
        },

    点击了对话框的确定按钮

        // 关闭权限对话框,清除数据
        setRightDialogClosed() {
          this.defKeys = []
        },
    点击了对话框的确定按钮
    
    // 点击了对话框的确定按钮
        allotRights() {
          const keys = [
            ...this.$refs.treeRef.getCheckedKeys(),
            ...this.$refs.treeRef.getHalfCheckedKeys(),
          ]
    ​
          const idStr = keys.join(',')
    ​
          reqEnableRights(this.roleId,idStr).then(res=>{
            if(res.data.meta.status!==200){
                return this.$message.error('更新失败');
            }
            this.getRolesList()
            this.showSetRight = false
            return this.$message.success('更新成功')
          })  
        }

     

    不停学习,热爱是源源不断的动力。
  • 相关阅读:
    随便说说
    郁闷
    请各栏目的负责人,开始整理自己栏目的文章
    祝博客园生日快乐
    Windows Live Writer中打开博客日志(最新版可以支持打开3000以内的日志)
    编译器优化对齐(字节对齐)
    HDlock 锁住硬盘的解决方式
    linux中env,export, set的区别
    System Volume Information 文件夹权限控制
    BOOL与bool的区别(bool不是c的关键字,c++中bool也不是int)
  • 原文地址:https://www.cnblogs.com/ximenchuifa/p/13942712.html
Copyright © 2011-2022 走看看