首页 > 其他分享 >el-tbs 权限控制

el-tbs 权限控制

时间:2023-11-27 17:23:53浏览次数:34  
标签:el permission tabs tbs 组件 权限 true

1. 需求

  • 需求:实现一个 el-tabs 的权限控制,只有管理员才能操作,普通用户既看不到也不能操作

2. 分析

一般要实现按钮权限控制都是使用封装指令 v-permission 指令,但是类似“Tabs”这类组件不能使用 v-permission 指令实现权限控制。

因为 v-permission 底层是实现 dom 的删除,而不是像 el-tab-pane 这种组件删除,这种组件后面渲染可能会产生更多的 dom 或者是容器。所以,这种可以使用 v-if 来删除。

3. 实现思路(一)

  • 实现思路: 使用 v-if 来控制组件的显示和隐藏

  • 步骤:

    1. 定义一个变量,用来判断当前用户是否是管理员
    2. 在 el-tabs 的 data 中定义一个变量,用来判断当前用户是否是管理员
    3. 在 el-tabs 的 template 中使用 v-if 来控制组件的显示和隐藏

代码实现

<template>
  <el-tabs v-model="activeName" type="card">
    <el-tab-pane v-if="isAdmin" label="用户管理" name="user">
      <el-button type="primary">用户管理</el-button>
    </el-tab-pane>
    <el-tab-pane v-if="isAdmin" label="角色管理" name="role">
      <el-button type="primary">角色管理</el-button>
    </el-tab-pane>
    <el-tab-pane v-if="isAdmin" label="权限管理" name="permission">
      <el-button type="primary">权限管理</el-button>
    </el-tab-pane>
  </el-tabs>
</template>

4. 实现思路(二)

  • 实现思路: 使用 v-for 来控制组件的显示和隐藏
  • 步骤:
    1. 定义一个变量,用于存储 el-tab-pane 组件的数组
    2. 封装一个过滤函数,用来判断当前用户是否是具有权限
    3. 在 el-tabs 的 template 中使用 v-for 来控制组件的显示和隐藏
    4. 使用过滤函数进行权限过滤

代码实现

<el-tabs class="demo-tabs" @tab-change="changeTab">
  <el-tab-pane
    v-for="item in options.tabs.filter(item => checkPermission(item.premission))"
    :key="item.value"
    :label="item.label"
    :name="item.value"
    lazy
  >
    <component :is="item.comName"></component>
  </el-tab-pane>
</el-tabs>
import { ComA, ComB } from "./components";
import checkPermission from "@/hooks/permisson";

// tabs选项
const options = reactive({
  tabs: [
    {
      label: "A",
      value: "comA",
      //   组件
      comName: markRaw(ComA),
      premission: true,
    },
    {
      label: "B",
      value: "comB",
      comName: markRaw(ComB),
      premission: "operation:comb:show",
    },
  ],
});

过滤函数

import { useUserStore } from "@/pinia";

const checkPermission = (permission) => {
  //如果传入布尔值true,则直接返回true
  if (permission === true) return true;
  const userStore = useUserStore();
  //   判断是否具有权限
  if (userStore.buttons.includes(permission)) {
    return true;
  }
  return false;
};
export default checkPermission;

标签:el,permission,tabs,tbs,组件,权限,true
From: https://www.cnblogs.com/Cxymds/p/17859835.html

相关文章

  • vue指令封装(按钮权限、loading加载、slideIn窗口进入动画)
    vue指令vue本身具有一些指令,但是有些指令是vue作者自己写的,有些是第三方插件写的。v-ifv-if指令是用来控制元素是否显示的,如果值为true,则显示,如果值为false,则隐藏。<divid="app"><pv-if="isShow">我是显示的内容</p><pv-else>我是隐藏的内容</p></div><scri......
  • selenium之三种等待,强制等待、隐式等待和显式等待
      显式等待presence_of_element_locatedpresence_of_all_elements_locatedvisibility_of_any_elements_located  判断页面至少有一个元素可见visible,传入locator,一旦定位就返回thelistoflocatedWebElements;  不可见(元素隐藏或是完全不存在,一个都没有)返回的是......
  • selenium之鼠标键盘操作
    鼠标操作1.引入ActionChains类2.定位相关元素3.在ActionChains().调用相关鼠标操作方法fromselenium.webdriver.common.action_chainsimportActionChains双击操作:ActionChains(driver).double_click(对应元素).perform()右击操作:ActionChains(driver).context_click(对......
  • Rancher五--在SELinux模式下安装Rancher-RHEL/CentOS
    在SELinux模式下安装Rancher-RHEL/CentOS从1.6+版本后支持为了使Rancher在RHEL/CentOS的SELinux模式下正常工作,您需要在安装有RPM包container-selinux-2.14(或更高的版本)的主机上运行RancherServer容器。同时,全部的agent主机也要安装这个包。如果您安装了较低版本的container-sel......
  • ​​numpy.ravel()​​​和​​numpy.flatten()​​ 区别
    numpy.ravel()和numpy.flatten()都可以将多维数组转换为一维数组,但它们之间存在一些重要的区别:numpy.flatten()返回的是原数组的副本,这意味着对flatten()返回的数组进行修改不会影响原数组。numpy.ravel()返回的是原数组的视图(如果可能的话),这意味着对ravel()返回的数组进行修改可能......
  • C#读写Excel(2)
    接上篇1,界面Xaml代码如下,界面布局如图1所示。<Grid><StackPanel><LabelName="name1"Width="70"Height="30"HorizontalAlignment="Left"Margin="10"VerticalAlignment="Top"Back......
  • NX二次开发UF_CAM_PREPRO_mark_model_as_cam 函数介绍
    文章作者:里海UF_CAM_PREPRO_mark_model_as_camDefinedin:uf_cam_prepro.h intUF_CAM_PREPRO_mark_model_as_cam(tag_tmodel)overview概述ThisfunctionwillmarkthefacetmodelasamodelthatcanbeusedforCAMpurposes.ThiswillinformtheCAMpreprocessorst......
  • vue导入excel表格
    1.vue导入模版信息。进行数据操作首先要安装 npminstallfile-saver  npminstallxlsx  npminstallscript-loader,在src下面创建一个excel文件夹,查创建2个js(Blob.js,Export2Excel.js)utils/vendor/Export2Excel.js文件/*eslint-disable*/require('script-loader!f......
  • el-input 格式化输入值
    1.只允许输入数字,并保留两位小数<el-inputclass="config-input"type="number"v-model="v.minHeight"placeholder=""......
  • Linux系统 基本权限UGO读书笔记
    1.高级权限 高级权限:suidsgidstickysuid:普通用户登陆对于有些文件没有查看权限或者某些命令没有执行命令,例如普通用户不能查看root用户家目录下内容,也不能用passwd对其他文件进行修改,使用suid可以针对单个命令对于普通用户提权限。suid命令格式:chmodu+s命令作用:单独提高一......