当前位置: 首页 > ops >正文

vue3:十四、角色权限管理-表格引入-树形表格

一、实现效果

主要实现了角色权限的表格数据展示,实现了树形效果

1、权限管理页面

2、权限管理表单页面 

 

二、基本搭建

1、创建权限页面

在views中创建新文件RoleView.vue

2、修改路由

在router/index.js中增加一个role权限管理页面的路由

3、导航页面修改

将权限管理写入导航页的菜单项

三、基本数据操作

1、官网参考

Table 表格 | Element Plus

表格中找到树形数据与懒加载

 参照文档可知,当提供的表格数据含有childern字段,并且表格有属性row-key即可完成渲染

2、写入apifox接口请求

(1)查询全部列表

新建接口

新建接口/role/list

新建期望

期望返回数据
{"code": 1,"msg": "成功","data": [{name:"超级管理员",id:1,pid:0,edit:false,del:false,children:[{name:"二级管理员1",id:2,pid:1,children:[{name:"三级管理员1",id:21,pid:2},{name:"三级管理员2",id:22,pid:2 }]},{name:"二级管理员2",id:3,pid:1,children:[{name:"三级管理员3",id:31,pid:3},{name:"三级管理员4",id:32,pid:3}]},{name:"二级管理员3",id:4,pid:1,children:[{name:"三级管理员5",id:41,pid:4]}]}]
}

(2)新增角色

新建接口

新建接口/role/add,并写入需要传递的参数名称,父权限id,需要的权限数组

新建期望

(3)编辑角色

新建接口

新建接口/role/edit,并且传递修改行的id以及修改的数据name名称、pid父角色id、arrays角色权限数组

新建期望

(4)删除角色

新建接口

新建接口/role/del,并传递删除行的id

新建期望

四、核心实现

1、将树形核心字段写入表格组件

在表格中的el-table中写入字段row-key="id" :根据id进行判断进行树形结构设置,default-expand-all:默认展开

2、将树形row-key的值设置为变量

在表格标签中的row-key中写入变量threeRowKey

在参数中,写入threeRowKey,并设置默认值为id(这里需要由父页面提供参数值)

3、角色页面表格实现

(1)定义表格列

根据之前的分类管理也买你,写入角色信息的列信息,包含角色名称,角色ID,父角色ID

//定义表格列
const columns = [{ label: '角色名称', field: 'name', width: 200},{ label: '角色ID', field: 'id', width: 120},{label: '父角色ID', field: 'pid', width: 120,temp: (row, index) => { return row.pid ? `<b>${row.pid}</b>` : '—' },}
]

(2)写入接口路径

包含全部列信息,新增,修改,删除

// 写入表格请求路径
const apiUrl = {list: '/role/list',add: '/role/add',edit: '/role/edit',del: '/role/del'
}

(3)引入表格

在页面中引入表格组件

import Tables from "@/components/Table.vue"; //引入表格

(4)表格组件写入

写入表格组件,并携带路径参数,表头数组,禁止显示分页,禁止分页,

<template><Tables :apiUrl="apiUrl" :showPage="false" :showSearch="false" :columns="columns"></Tables>
</template>

(5)解决箭头和文字不在一行显示问题

目前实现的效果,出现错位的样式

修改样式效果

(6)目前效果展示

由下图可知,已经实现

4、表单实现

表单中的父角色的数据需要从表格组件中的全部角色获取,每一个都可以作为父角色

(1)表格组件-表格数据的传递

getDataCallback() ↓
getData( (data) => { emit("update:tableData", data); } )↓
getData中的post(...) 发起请求↓
收到响应 res.code == 1↓
tableData.value = res.data↓
执行 callback(res.data)↓
emit("update:tableData", res.data) → 父组件监听到事件并接收数据

getDataCallback方法 
const getDataCallback = () => {getData((data) => {emit("update:tableData", data);})
}

直接调用了 getData(...),并传入了一个匿名函数 (data) => { ... }

  • 这里将一个函数作为参数传给了 getData
  • 这个函数就是所谓的callback(回调函数)。
  • getData 执行完毕,并且从后端接口获取到数据后,会执行这个 callback 函数,并把数据传进去。

getData方法 
const getData = (callback) => {// ...post(props.apiUrl.list, { data: searchField }).then(res => {
http://www.xdnf.cn/news/7989.html

相关文章:

  • Axure系统原型设计列表版方案
  • BERT框架:自然语言处理的革命性突破
  • PostgreSQL 14 pacemaker 高可用集群
  • czml数据以及应用
  • uniapp打包报错:重新在manifest.json中生成自己的APPID
  • MacBookPro上macOS安装第三方应用报错解决方案:遇到:“无法打开“XXX”,因为无法确定(验证)开发者身份?怎么解决
  • Android 网络全栈攻略(三)—— 从三方库原理来看 HTTP
  • 代码走读 Go 语言 Map 的实现
  • MAX96752FGTN/V+T:双LVDS(OLDI)输出的GMSL2解串器架构与应用探讨——汽车与工业视频传输方案深度分析
  • 新能源汽车移动充电服务:如何通过智能调度提升充电桩可用率?
  • 从零基础到最佳实践:Vue.js 系列(9/10):《单元测试与端到端测试》
  • Elasticsearch 分页查询的 from+size 有什么缺陷?如何优化深度分页?比较scroll API与search_after的差异
  • 软考中级软件设计师——设计模式篇
  • window 显示驱动开发-指定 GDI 硬件加速渲染操作
  • WebRTC:实时通信的未来之路
  • redis搭建最小的集群,3主3从
  • Android-ViewModel+LiveData学习总结
  • Python爬虫实战:研究Grab 框架相关技术
  • HTTP Digest 认证:原理剖析与服务端实现详解
  • 如何开发一个MCP Server
  • Google机器学习实践指南(梯度下降篇)
  • 关于pgSQL配置后Navicat连接不上的解决方法
  • JAVA开发工具延长方案
  • 大模型在闭合性胫骨平台骨折诊疗全流程中的应用研究报告
  • MySql添加非空字段时的“伪空”问题
  • Elasticsearch搜索排名优化
  • 如何在 Mac M4 芯片电脑上卸载高版本的 Node.js
  • el-radio-group 与 el-dropdown 组合使用的注意事项
  • 根据您的硬件配置(16GB显存+64GB内存)和性能要求(≥80 token/s)
  • 学习路之uniapp--unipush2.0推送功能--给自己发通知