Vue电商后台管理系统项目第4篇-权限管理页面实现

优化之前的分配角色功能

实现下拉列表的选项默认选中

  • 为下拉列表的v-model赋值一个id,这个id会对应着下拉列表的value,如果赋值了Value,那么就会让这个value数据所对应的字符串数据显示
  • 我们得先获取到这个用户的rid
// 分配角色提交
grantrolesubmit () {
    if (this.grantForm.rid) {
        grantUserRole(this.grantForm.id, this.grantForm.rid)
            .then(res => {
            if (res.data.meta.status === 200) {
                this.$message({
                    type: ‘success‘,
                    message: res.data.meta.msg
                })
                this.grantDialogFormVisible = false
            }
        })
    } else {
        this.$message({
            type: ‘warning‘,
            message: ‘请先选择一个角色‘
        })
    }
}

数据搜索功能

搜索业务处理已经完成,和之前获取数据完全一样,因为之前获取数据的方法中已经添加了搜索关键字的参数。

在el-input添加@keyup事件的时候,需要添加native,因为@keyup事件是原生dom事件。

<el-input
          placeholder="请输入内容"
          v-model="userKey"
          class="input-with-select"
          style="width:300px;margin-right:15px"
          @keyup.enter.native="init"
          >
    <el-button slot="append" icon="el-icon-search" @click=‘init‘></el-button>
</el-input>

权限列表

添加权限列表单文件组件

<template>
    <div class="right">right</div>
</template>
<script>
export default {

}
</script>
<style lang="less" scoped>

</style>

添加路由配置

{
    name: ‘Right‘,
    path: ‘right‘,
    component: Right
}

修改左侧菜单项的指定子项的index

<el-menu-item index="/home/right">
    <template slot="title">
        <i class="el-icon-location"></i>
        <span>权限列表</span>
    </template>
</el-menu-item>

获取所有权限列表数据

  • @/api/rights.js
  • 添加api方法
// 获取所有权限列表
export const getAllRightList = (type) => {
  return axios({
    url: `rights/${type}`
  })
}

制作权限列表组件

  • 添加面包屑
  • 添加表格

表格常用属性

  • data:代码表格的数据源
  • 列中的prop是指定这一列要展示数据属性名称
 <!-- 表格结构 -->
<el-table :data="rightList" border style="width: 100%">
    <el-table-column type="index" width="50"></el-table-column>
    <el-table-column prop="authName" label="权限" width="180"></el-table-column>
    <el-table-column prop="path" label="路径" width="180"></el-table-column>
    <el-table-column prop="level" label="层级"></el-table-column>
</el-table>
getAllRightList(‘list‘)
      .then(res => {
        console.log(res)
        this.rightList = res.data.data
      })

数据处理:添加过滤器

  • 局部过滤器:只有在当前组件中可以使用
  • 在当前组件中通过filters创建
filters:{
    名称:(参数) =>{
        return ''
    }
}
filters: {
    levelFormat: level => {
      if (level === ‘0‘) {
        return ‘一级‘
      } else if (level === ‘1‘) {
        return ‘二级‘
      } else if (level === ‘2‘) {
        return ‘三级‘
      }
      return ‘‘
    }
  }

使用局部过滤器

  • 现在现实情况,我们需要在表格中列中使用过滤器
  • 列中有一个prop属性,但是不能在这个属性中直接使用过滤器
  • 我们可以考虑添加template来实现这个效果
<el-table-column label="层级">
    <template slot-scope="scope">
        <span>{{scope.row.level | levelFormat}}</span>
    </template>
</el-table-column>

角色列表

业务说明

  • 数据展示:添加展开行功能
  • 添加角色
  • 可以为角色授权--树形组件
  • 展开行功能:可以实现权限的删除
  • 树形组件中可以实现授权权限和删除权限

一个建议:一定要仔细的去分析数据结构

添加单文件组件

<template>
    <div class="role">role</div>
</template>
<script>
export default {

}
</script>
<style lang="less" scoped>

</style>

配置路由

{
    name: ‘Role‘,
    path: ‘roles‘,
    component: Role
}

修改左侧菜单项的index设置

<el-menu-item index="/home/roles">
    <template slot="title">
        <i class="el-icon-location"></i>
        <span>角色列表</span>
    </template>
</el-menu-item>

添加单文件组件的基本静态结构

  • 面包屑
  • 按钮

表格

  • 展开行
  • 通过设置 type="expand" 和 Scoped slot 可以开启展开行功能,el-table-column 的模板会被渲染成为展开行的内容,展开行可访问的属性与使用自定义列模板时的 Scoped slot 相同

再实现数据的动态展示

  • 表格数据是显示角色数据 :表格》》角色
  • 展开行数据是展示这个角色的权限数据 :展开行》》权限

实现表格数据--角色数据 的展开

  • 获取所有角色数据
  • 设置表格的相关属性
<el-table :data="roleList" style="width: 100%">
      <!-- type="expand":说明这列可以实现展开 -->
      <el-table-column type="expand">
        <!-- 展开的时候,template模板中的结构就是展开行的内容 -->
        <template slot-scope="props">我要自己的内容,以后这块内容应该根据数据动态生成</template>
      </el-table-column>
      <el-table-column type="index" width="50"></el-table-column>
      <el-table-column label="角色名称" prop="roleName"></el-table-column>
      <el-table-column label="描述" prop="roleDesc"></el-table-column>
      <el-table-column label="操作">
        <!-- 插槽:匿名插槽,具名插槽,数据插槽 -->
        <template v-slot="scope">
          <el-tooltip class="item" effect="dark" content="编辑" placement="top">
            <el-button type="info" icon="el-icon-edit"></el-button>
          </el-tooltip>
          <el-tooltip class="item" effect="dark" content="角色授权" placement="top">
            <el-button type="success" icon="el-icon-share"></el-button>
          </el-tooltip>
          <el-tooltip class="item" effect="dark" content="删除" placement="top">
            <el-button type="warning" icon="el-icon-delete"></el-button>
          </el-tooltip>
        </template>
      </el-table-column>
    </el-table>

展开行数据展示

  • 权限数据在当前角色的children中
  • 我们需要根据权限数据动态生成展开行结构
  • 有几个一级权限,生成几 行数据
  • 二级权限是属于指定一级权限的二级权限,所以我应该在展示完某个一级权限,采用嵌套的结构去展示它的二级权限
  • 三级权限是指定的二级权限的三级权限
<template slot-scope="scope">
    <!-- 遍历数据行对象的children -->
    <el-row v-for="first in scope.row.children" :key="first.id" style=‘margin-bottom:10px;border-bottom:1px dashed #ccc‘>
        <el-col :span="4">
            <el-tag closable type="success">{{first.authName}}</el-tag>
        </el-col>
        <el-col :span="20">
            <el-row v-for=‘second in first.children‘ :key=‘second.id‘ style=‘margin-bottom:10px;‘>
                <el-col span=‘4‘><el-tag closable type="info">{{second.authName}}</el-tag></el-col>
                <el-col span=‘20‘>
                    <el-tag closable type="danger" v-for=‘third in second.children‘ :key=‘third.id‘ style=‘margin:0 4px 4px 0‘>{{third.authName}}</el-tag>
                </el-col>
            </el-row>
        </el-col>
    </el-row>
</template>

效果展示:

角色列表

权限列表

如果您喜欢这篇文章,可以打赏点钱给我 :)

    支付宝                  微信

   

原文地址:https://www.cnblogs.com/sauronblog/p/11610712.html

时间: 2024-07-29 03:18:36

Vue电商后台管理系统项目第4篇-权限管理页面实现的相关文章

Vue电商后台管理系统项目第6篇-商品管理的商品列表和商品添加组件实现

开胃小菜—左侧导航菜单的动态生成 通过为指定的用户指定角色,那么这个用户登陆之后应该只能看到这个角色所对应的权限菜单, 我们是根据当前登陆用户去获取对应的菜单权限 步骤 分析接口文档 ,发现不用传递参数,因为它是根据当前登陆用户的token来动态获取当前用户的权限 添加接口方法获取动态的菜单数据 // 获取左侧菜单权限 export const getLeftMenu = () => { return axios({ url: `menus` }) } 实现菜单项的动态加载 获取数据之后,注意看

Vue电商后台管理系统项目第3篇-首页用户列表增删改查功能

前言 由于之前的作者没有再更新这个后台管理系统项目的文章了,我想着把它的项目重头到位做一遍,把剩下的文章写完,把这个项目记录完整,以后遇到类似的后台管理系统项目,可以快速复习一些知识点. 新的项目地址:https://github.com/C4az6/vue_manage_system 添加用户 这个操作在用户列表页面,所以路由不用再进行 处理了. 基于单文件组件: 添加事件绑定--弹出新增用户对话框 添加dialog对话框 Element-UI组件>dialog对话框>自定义内容>表单

Vue电商后台管理系统项目第5篇-角色列表的增删改查&amp;&amp;角色授权

角色列表的增删改查 1.添加角色 先根据API文档编写接口: // 添加角色 export const addRolesApi = (data) => { return axios({ method: 'post', url: 'roles', data }) } 在角色组件内引用,然后给 添加角色 按钮绑定一个点击事件addRolesClick: <!-- 添加角色 --> <el-button type="success" plain @click=&quo

React16+React-Router4 从零打造企业级电商后台管理系统

第1章 课程介绍本章整体介绍该课程的内容,让同学们了解这个课程的特点和学习方法,以及后台管理系统开发前的一些前置工作,如需求分析.技术选型和数据接口等. 第2章 课前知识储备本章介绍一些后面课程要用到的一些基础知识,为后面的开发打下基础,包括页面加载过程.ES6基础和本地存储相关的知识. 第3章 前端框架的分析本章介绍前端框架的共性和应用场景,分析前端加载原理,并对单页和多页应用,框架和原生开发,三大主流框架之间做详细的对比. 第4章 开发环境的搭建搭建项目依赖的开发环境,包括nodejs的安装

2019教你用react全家桶+node.js全栈开发大型电商后台管理系统(视频+源码+课件)

主要内容:1. 业务功能模块: 用户登陆.商品分类管理.商品管理.角色管理.用户管理.菜单权限控制.订单管理等2. 前端技术: React + React Router4 + Redux + Antd + Axios + ES6/ES8 + webpack + ECharts/Bizcharts 等 3. 后端技术: NodeJS + Express + MongoDB + Mongoose + Multer 等 4. 项目开发模式: 模块化.组件化.工程化的开发模式 5. 深入源码: 自定义R

CX105React16+React-Router4 从零打造企业级电商后台管理系统

新年伊始,学习要趁早,点滴记录,学习就是进步! 不要到处找了,抓紧提升自己. 对于学习有困难不知道如何提升自己可以加扣:1225462853 获取资料. 下载地址:https://pan.baidu.com/s/1o9rZpj0 原文地址:https://www.cnblogs.com/sunnyppl/p/8511562.html

大型电商微服务项目视频教程

大型电商微服务项目视频教程课程分享链接:https://pan.baidu.com/s/1Pl2kMqT6KCMvohaABE0m0w 提取码:9lkn 本课程将手把手带大家从无到有实现一个真实的大型电商微服务项目,该项目是基于真实的知名互联网企业项目讲解的 本课程将讲解如何从无到有搭建一个真实的大型电商微服务项目,涉及的内容较多,录制所需的时间也会比较久,因此整部课程下来售价也比较高,但考虑到课程中讲解的某阶段的知识点,有部分学员可能已经掌握了解,并不需要再次学习该部分内容,因此本套系列课程将

电商大数据项目(二)-推荐系统实战之实时分析以及离线分析

电商大数据项目-推荐系统实战(一)环境搭建以及日志,人口,商品分析http://blog.51cto.com/6989066/2325073电商大数据项目-推荐系统实战之推荐算法http://blog.51cto.com/6989066/2326209电商大数据项目-推荐系统实战之实时分析以及离线分析http://blog.51cto.com/6989066/2326214 五.实时分析Top IP(实时分析Top用户)一)模块介绍电商网站运营中,需要分析网站访问排名前N的IP,主要用来审计是否

电商大数据项目-推荐系统实战之推荐算法(三)

电商大数据项目-推荐系统实战(一)环境搭建以及日志,人口,商品分析http://blog.51cto.com/6989066/2325073电商大数据项目-推荐系统实战之推荐算法http://blog.51cto.com/6989066/2326209电商大数据项目-推荐系统实战之实时分析以及离线分析http://blog.51cto.com/6989066/2326214 (七)推荐系统常用算法协同过滤算法协同过滤算法(Collaborative Filtering:CF)是很常用的一种算法,