首页 > 其他分享 >给角色修改权限的时候 - 后台管理系统

给角色修改权限的时候 - 后台管理系统

时间:2022-11-06 18:58:45浏览次数:46  
标签:node 管理系统 res formData tree id 后台 权限 refs

点击修改按钮:定于一个修改的方法,调出弹出层 ;

  async editRow(id) {
      // 获取详细信息  当前修改的角色信息  @lcick  row.id 
      const res = await getRoleInfoApi(id);
      // 弹框打开 推荐先赋值回显数据 然后打开弹窗
      this.$refs.addRole.dialogShow = true;
      // 赋给表单的formData  回显数据 
      this.$refs.addRole.formData = res;
      // 获取叶子上面的节点ID  树 tree 怎么回显,包含半钩和全钩   注意:只需要找到tree的数据的最深层的数据即可
      const menuSmallId = [];
      res.authList.forEach((item) => {
        this.getDefaultCheck(item, menuSmallId);
      });
      this.$refs.addRole.defaultCheckKeys = menuSmallId;
    },

递归函数获取最深层的选中数据 ;

 // 获取叶子上面的节点ID
    getDefaultCheck(node, arr) {
      // node是节点信息,arr是存储数组
      if (node.children && node.children.length) {
        node.children.forEach((val) => {
          this.getDefaultCheck(val, arr);
        });
      } else {
        return arr.push(node.id);
      }
    },

 

弹层:

 

 

<template>
  <!-- 弹框 -->
  <el-dialog
    title="添加角色"
    :visible.sync="dialogShow"
    width="40%"
    @close="closeDialog"
  >
    <!-- 表单 -->
    <el-form
      :model="formData"
      ref="formRef"
      :rules="formRules"
      label-width="90px"
      :inline="false"
      size="noraml"
    >
      <el-form-item label="角色名称" prop="name">
        <el-input v-model="formData.name"></el-input>
      </el-form-item>
      <el-form-item label="角色描述" prop="description">
        <el-input v-model="formData.description"></el-input>
      </el-form-item>
      <el-form-item label="权限">
        <!-- 展示树 -->
        <el-tree
          ref="tree"
          :data="allAuth"
          show-checkbox
          :props="{ label: 'title' }"
          node-key="id"
          :default-checked-keys="defaultCheckKeys"
        ></el-tree>
      </el-form-item>
    </el-form>
    <span slot="footer">
      <el-button size="small" @click="dialogShow = false">取消</el-button>
      <el-button size="small" @click="btnOK" type="primary">确定</el-button>
    </span>
  </el-dialog>
</template>

<script>
import { addRoleApi, editRoleApi } from '@/api/Role';
import { getMenuListApi } from '@/api/Menu';
export default {
  name: 'AddRole',
  data() {
    return {
      dialogShow: false,
      formData: {
        name: '',
        description: '',
        menuids: [], // 获取所有打钩的或半钩的数据
      },
      formRules: {
        name: [{ required: true, message: '请输入', trigger: 'blur' }],
        description: [{ required: true, message: '请输入', trigger: 'blur' }],
      },
      allAuth: [],
      defaultCheckKeys: [],
    };
  },
  mounted() {
    this.getAllMenu();
  },
  methods: {
    // 获取到所有权限
    async getAllMenu() {
      let res = await getMenuListApi();
      this.allAuth = res;
    },
    closeDialog() {
      this.formData = {
        tagname: '',
      };
      this.defaultCheckKeys = [];
      this.$refs.formRef.resetFields();
    },
    async btnOK() {
      try {
        await this.$refs.formRef.validate();
      } catch (error) {
        return console.log(error);
      }
      // 发生请求
      const checkKeys = this.$refs.tree.getCheckedKeys(); // 对钩
      const halfKeys = this.$refs.tree.getHalfCheckedKeys(); // 半钩
      this.formData.menuids = [...checkKeys, ...halfKeys]; // 整理数据
      if (this.formData.id) {
        await editRoleApi(this.formData);
      } else {
        await addRoleApi(this.formData);
      }

      this.$emit('updateList');
      this.$message.success('新增成功');
      this.dialogShow = false;
    },
  },
};
</script>

<style lang="scss" scoped></style>

回显数据的核心: :default-checked-keys="defaultCheckKeys"   默认选中的tree选项 ;

 

标签:node,管理系统,res,formData,tree,id,后台,权限,refs
From: https://www.cnblogs.com/zhulongxu/p/16863353.html

相关文章

  • C++图书馆管理系统
    C++图书馆管理系统程序设计题六:图书馆管理系统1问题描述该系统要求建立一个图书馆管理系统,并具有排序、查找、计算、显示等功能。通过此课题,熟练掌握文件、数组、指针......
  • 房产管理系统之查看个人信息功能+查询房产信息
    查看个人信息这一个功能就比较简单啦:就是使用超链接然后将数据传递到一个servlet里面进行整体的查询,然后输出就行啦!具体实现如下:(由于该功能基本一致,就只是用顾客的写出来......
  • NC10066 从后台研发到跑路
    题目描述链接:https://ac.nowcoder.com/acm/contest/20960/1006来源:牛客网vigoss18是一个强烈的强迫症患者,他的代码都符合下面这些规则:1.所有的注释都是/**/风格的,两个......
  • 包及访问控制权限
    包的概念及打包操作import语句导入包中的类静态导入访问控制权限java命名规范包的概念及打包操作包的概念包的概念其实就是文件夹的意思,和我们windows上的文件......
  • 【Python零基础入门篇 · 22】:析构函数、封装和私有权限、私有属性和私有方法
    析构函数__del__方法析构方法__del__是对象在被垃圾回收的时候起作用的一个方法,它的执行一般也就意味着对象不能够继续引用,回收内存。在删除对象时解释器会默认使用......
  • 后台管理系统tabs栏切换思路
    页面内容:  使用element-ui实现tabs标签页:https://element.eleme.cn/#/zh-CN/component/tabs#tab-pane-attributes 1.把内容封装成一个组件-表格table 2.......
  • 前端实现权限控制 - 三种方法 - 不同的角色有不同的路由映射
    有代码:https://gitee.com/zhu-longxu/zhulx-rbacps:注意本地路由router有哪些规则?服务器返回的数据格式? 方法一:本地路由router包含静态路由规则;虽然动态路由规则定......
  • JAVA 登录系统和学生管理系统相结合
    这个系统比较常用,很适合练手。有四部分组成1.student的类也就是 Javabean2.登陆系统的源代码  也就是main方法里面。3.user的类也就是 javabean4.学生管理系统的......
  • 房产管理系统之浏览房产信息
    浏览房产信息顾客的浏览顾客可以浏览所有在售房产信息,其余状态的房产信息均不可查看就是按照条件查询:Stringsql="select*fromhousewherestatus=?";主要涉及到......
  • php:在linux上用sudo提升权限(centos 8 / PHP 7.4.2)
    一,php中查看当前用户: php代码:publicfunctionocr(){$daemon_user=getenv('USERNAME')?:getenv('USER');$script_user=get_current_user......