当前位置: 首页 > 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

<

相关文章:

  • MongoDB学习和应用(高效的非关系型数据库)
  • STM32实战: CAN总线数据记录仪设计方案
  • AndroidR车机TextToSpeech音频焦点异常问题分析
  • LLM Agent 如何颠覆股价预测的传统范式
  • 添加训练噪声以改进检测——去噪机制
  • C# WPF 左右布局实现学习笔记(1)
  • c语言 头文件封装跨平台线程
  • 视频的分片上传,断点上传
  • day48 python通道注意力
  • 云原生玩法三问:构建自定义开发环境
  • 【iOS安全】iPhone X iOS 16.7.11 (20H360) WinRa1n 越狱教程
  • B站的视频怎么下载下来——Best Video下载器
  • 越狱蒸馏-可再生安全基准测试
  • ES6——对象扩展之Set对象
  • C/C++ 面试复习笔记(4)
  • MySQL基础2
  • 每日算法刷题Day24 6.6:leetcode二分答案2道题,用时1h(下次计时20min没写出来直接看题解,节省时间)
  • ORM框架(SQLAlchemy 与 Tortoise )
  • Emacs定制:编译
  • Git版本控制工具详解
  • 武隆网站建设/aso优化哪家好
  • 一个seo良好的网站其主要流量往往来自/聚合搜索引擎
  • 网站推广传单/国家市场监督管理总局官网
  • 传统电商平台有哪些/厦门百度整站优化服务
  • 软件开发外包公司靠谱吗/肇庆seo按天计费
  • 欧美设计网站推荐/百度推广手机版