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

vue3:十五、管理员管理-页面搭建

一、页面效果

实现管理员页面,完成管理员对应角色的中文名称显示,实现搜索栏,表格基本增删改查,分页等功能

二、修改问题

1、修改搜索框传递参数问题

(1)问题图示

如下图,之前搜索后,传递的数据不直接是一个value值,而是如下图的格式

查询可知这里传递的数据定义的是一个ref对象,所以不能直接传递其值,而是应该加上value 

(2)方法解决

如下图直接在传递的数据上加入.value

解决之后的图示如下

2、增加下列列表change事件的判断

由于change事件不一定每一个页面都有,所以需要增加判断,如果存在change事件,就执行方法,反之不执行

写入方法,如果change字段存在就执行item.change方法并传递参数ruleForm,反之执行空方法

三、初步搭建

1、apifox—api建立

(1)管理员列表查询

建立接口

创建接口/admin/list

建立期望

{"code": 1,"msg": "成功","total":4,"data": [{id:1,username:"test1",nickname:"张三",roleid:1,createtime:"2025-04-05",lastlogintime:"2025-06-05"},{id:2,username:"test2",nickname:"李四",roleid:2,createtime:"2025-05-05",lastlogintime:"2025-06-06"},{id:3,username:"test3",nickname:"王五",roleid:3,createtime:"2025-06-05",lastlogintime:"2025-06-05"},{id:4,username:"test4",nickname:"赵六",roleid:4,createtime:"2025-06-06",lastlogintime:"2025-06-06"},]
}

(2)管理员新增

新建接口

新建接口/admin/add,并写入参数用户名:username,昵称:nickname,角色id:roleid,密码:password

新建期望

(3)管理员修改

新建接口

新建接口/admin/edit,并写入参数修改行id:id,用户名:username,昵称:nickname,角色id:roleid,密码:password

新建期望

(4)管理员删除

新建接口

新建接口/admin/del,并写入参数删除行id:id

新建期望

2、创建新页面、路由、菜单

(1)创建新页面

建立页面AdminuserView.vue

(2)写入路由

(3)写入菜单

四、写入管理员页面

1、视图层

(1)引入表格组件

import Table from '@/components/Table.vue'

(2)写入参数

在表格组件中,写入参数:

  • 表格列—columns
  • api路径(是否显示对应功能)—apiUrl
  • 表单—formItems
  • 是否显示分页—showPage
  • 是否显示搜索栏—showSearch
  • 导出Excel名称—exportName
<template><Table :columns="columns" :apiUrl='apiUrl' :formItems="formItems" :showPage="true" :showSearch="true" exportName="管理员数据"></Table>
</template>

2、api路径写入

写入apiUrl,并写入查询list,删除del,新增add,编辑edit,导出功能export

//路径
const apiUrl = {list: '/admin/list',del: '/admin/del',add: '/admin/add',edit: '/admin/edit',export: true,
}

3、获取全部角色组

(1)api中写入方法

在api/role.js中写入方法,获取全部的角色信息

(2)封装角色方法

在之前权限管理页面中,对角色下拉数据进行了处理,现在需要将其封装到工具方法中便于引用

如下图为权限管理页面RoleView.vue中使用了getRoles方法 ,需要将其方法封装

封装方法如下:

 建立工具方法src/utils/tools.js,并将getRoles方法存入其中,并修改其为导出方法

(3)引用方法

  • 引入vue的方法ref和reactive
  • 引入获取全部角色的方法
  • 引入处理角色名称方法

(4)获取全部角色方法

定义方法:存入角色下拉列表数组:parentOptions,存入角色组对象:roleObj

执行AllRoles方法

  • ①对获取的数据首先处理角色名称
  • ②将处理过名称的数据设置为下拉列表数据parentOptions,数据展示如下
  • ③将处理的数据进行循环,并通过数组的方法存入roleObj,key为子项的value(id值),value为子项的label(名称),数据展示如下(为了便于写入到表格字段中)

 

 图②

图③

4、表头定义

表头数据有:

  • id:ID,隐藏搜索行
  • username:用户名,搜索为模糊查询
  • nickname:昵称,搜索为模糊查询
  • roleid:角色组id,返回值为处理角色组对象对应的角色名称(根据行的id对应数组的key找到对应值),搜索方式为下拉列表,搜索下拉列表的值为parentOptions的值
  • lastlogintime:最后修改时间,隐藏搜索行
  • createtime:创建时间,搜索方法为时间范围daterange

5、表单定义

使用的是reactive定义,所以内容的parentOptions不需要使用.value

  • roleid:角色组,类型为下拉,下拉数据为变量parentOptions,加入规则
  • username:用户名,类型为文本框,加入规则
  • nickname:昵称,类型为文本框,加入规则

五、完整代码 

1、角色名称处理工具类

src/utils/tool.js

// 定义父级分类
export function getRoles(data, index = 0) {let opts = [];index++let arr = [];for (let i = 0; i < index; i++) {if (i == 0) {arr.push('└')}else {arr.push('┴')}}//存储下拉列表的数组data.forEach(item => {opts.push({label: arr.join('') + item.name,value: item.id})//使用递归,如果存在子项且子项的值不为空,就递归调用自己,并且将子项获取的数据添加到opts中(先结构再传)if (item.children && item.children.length > 0) {// getRoles(item.children)opts.push(...getRoles(item.children, index))}});return opts;
}

2、获取角色组api

src/api/role.js

import { get, post } from '@/utils/request'//获取全部权限列表
export function AllPurviews(data) {return get('/role/getallpurviews', data)
}//获取全部角色组
export function AllRoles(data) {return post('/role/list', data)
}

3、管理员页面

src/views/AdminuserView.vue

<
http://www.lqws.cn/news/191341.html

相关文章:

  • CMake 为 Debug 版本的库或可执行文件添加 d 后缀
  • vue组件的data为什么是函数?
  • FPGA没有使用的IO悬空对漏电流有没有影响
  • 毫米波雷达基础理论(3D+4D)
  • 如何使用索引和条件批量更改Series数据
  • MajicTryOn(基于wanvideo的虚拟试穿项目)
  • C++.OpenGL (7/64)摄像机(Camera)
  • Dify工具插件开发和智能体开发全流程
  • GNSS终端授时方式-合集:PPS、B码、NTP、PTP、单站授时,共视授时
  • go语言学习 第7章:数组
  • springcloud SpringAmqp消息队列 简单使用
  • MCP协议三种传输机制全解析
  • 【51单片机】0. 基础软件安装
  • 动量及在机器人控制中的应用
  • 数据治理在制造业的实践案例
  • 【AI】智驾地图在不同自动驾驶等级中的作用演变
  • 在maven项目中 继续增加maven 项目
  • Power Query动态追加查询
  • CPP基础
  • 内嵌式mqtt server
  • RNN和CNN使用场景区别
  • 【Auto.js例程】华为备忘录导出到其他手机
  • Levenberg-Marquardt算法详解和C++代码示例
  • 山东大学算法设计与分析复习笔记
  • VTK 显示文字、图片及2D/3D图
  • 基于STM32语音识别柔光台灯
  • logstash拉取redisStream的流数据,并存储ES
  • Python读取阿里法拍网的html+解决登录cookie
  • 宁乡地-气-碳-水相互作用综合观测数据集
  • 概念理解篇:线程同步之【互斥】