2020 零基础到快速开发 Vue全家桶开发电商管理系统(Element-UI)【角色列表】

1、引言

寒假是用来反超的!一起来学习Vue把,这篇博客是关于角色列表,请多指教~

2、角色列表
2.1 通过路由展示角色列表组件

在这里插入图片描述
在这里插入图片描述

2.2 绘制基本布局并获取列表数据
methods: {
        //获取所有角色的列表
        async getRolesList(){
            const {data:res} = await this.$http.get('roles')
            if(res.meta.status !== 200) return this.$message.error('获取角色列表失败!')
            
            //this.rolesList = res.data
            console.log(res)
        }
    },

在这里插入图片描述

2.3 渲染角色列表数据
		 <!--角色列表区域-->
        <el-table :data="rolesList" border stripe>
            <!--展开列-->
            <el-table-column type="expand" ></el-table-column>
            <!--索引列-->
            <el-table-column type="index" label="#"></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="操作" width="300px">
                <template slot-scope="">
                    <el-button size="mini" type="primary" icon="el-icon-edit">编辑</el-button>
                    <el-button size="mini" type="danger" icon="el-icon-delete">删除</el-button>
                    <el-button size="mini" type="warning" icon="el-icon-setting">分配权限</el-button>
                </template>
                
            </el-table-column>
        </el-table>

在这里插入图片描述

2.4 分析角色下权限渲染的实现思路

通过作用域插槽得到相关权限,然后通过三层for循环做

		 <!--展开列-->
            <el-table-column type="expand" >
                <template slot-scope="scope">
                    <pre>{{scope.row}}</pre>
                </template>
            </el-table-column>

在这里插入图片描述

2.5 通过第一层for循环渲染一级列表
		  <!--展开列-->
            <el-table-column type="expand" >
                <template slot-scope="scope">
                    <el-row v-for="(item1) in scope.row.children" :key="item1.id">
                        <!--渲染一级权限-->
                        <el-col :span="5">
                            <el-tag>{{item1.authName}}</el-tag>
                        </el-col>
                        <!--渲染二级和三级权限-->
                        <el-col :span="19"></el-col>
                    </el-row>
                    <pre>{{scope.row}}</pre>
                </template>
            </el-table-column>

在这里插入图片描述

2.6 美化一级权限的UI结构
		 <!--展开列-->
            <el-table-column type="expand" >
                <template slot-scope="scope">
                    <el-row :class="['bdbottom',i1 == 0 ? 'bdtop' :'' ]" v-for="(item1, i1) in scope.row.children" :key="item1.id">
                        <!--渲染一级权限-->
                        <el-col :span="5">
                            <el-tag>{{item1.authName}}</el-tag>
                            <i class="el-icon-caret-right"></i>
                        </el-col>
                        <!--渲染二级和三级权限-->
                        <el-col :span="19"></el-col>
                    </el-row>
                    <pre>{{scope.row}}</pre>
                </template>
            </el-table-column>

在这里插入图片描述

2.7 通过第二层for循环渲染二级权限
 <!--渲染二级和三级权限-->
                        <el-col :span="19">
                            <!--通过for循环嵌套渲染二级权限-->
                            <el-row :class="[i2 == 0 ?  '':'bdtop' ]" v-for="(item2,i2) in item1.children" :key="item2.id">
                                <el-col>
                                    <el-tag type="success">{{item2.authName}}</el-tag>
                                    <i class="el-icon-caret-right"></i>
                                </el-col>
                                <el-col></el-col>
                            </el-row>
                        </el-col>

在这里插入图片描述

2.8 通过第三层for循环渲染三级权限
<!--通过for循环嵌套渲染三级权限-->
<el-col :span="18">
	<el-tag type="warning" v-for="(item3) in item2.children" :key="item3.id">{{item3.authName}}</el-tag>
</el-col>

在这里插入图片描述

2.9 美化角色权限下的UI结构

将窗口设置最小宽度 并且将下面居中对齐

.vcenter{
    display: flex;
    align-items: center;
}

在这里插入图片描述

在这里插入图片描述

2.10 完成删除指定角色下权限的功能
	 //根据id删除对应的权限
        async removeRightById(role,rightId){
            //弹窗是否删除权限
            const confirmResult = await  this.$confirm('此操作将永久删除该角色权限, 是否继续?', '提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
                }
            ).catch(err => err)
            //如果用户确认删除,则返回值为字符串 confirm
            //如果用户取消删除,则返回值为字符串 cancel
            //console.log(confirmResult)
            if(confirmResult !== 'confirm'){
                return this.$message.info('已取消删除')
            }
            const {data:res} = await this.$http.delete('roles/'+role.id+'/rights/'+rightId)
                console.log(res)
            if(res.meta.status !== 200){
                return this.$message.error('删除权限失败!')
            }   
                this.$message.success('删除权限成功!')
                //为了不让列表关闭,重新刷新当前角色的children即可
                role.children = res.data
        }

在这里插入图片描述

2.11 关于角色列表其它功能模板说明

关于添加和删除编辑等功能 就留给读者自己去做了,和之前用户列表类似的,这里就不多展示了
在这里插入图片描述

3、结束语

至此,我们的功能就完成了!
在这里插入图片描述

Vue全家桶开发电商管理系统码云地址,欢迎一起来学习~

https://gitee.com/Chocolate666/vue_shop


最后,看完本篇博客后,觉得挺有帮助的话,可以继续查看专栏其它内容嗷,一起来学习Vue吧~
在这里插入图片描述

点击进入Vue❤学习专栏~
学如逆水行舟,不进则退
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一百个Chocolate

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值