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

news2025/6/9 7:40:51

一、页面效果

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

二、修改问题

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.coloradmin.cn/o/2405118.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于51单片机的红外防盗及万年历仿真

目录 具体实现功能 设计介绍 资料内容 全部内容 资料获取 具体实现功能 具体功能&#xff1a; &#xff08;1&#xff09;实时显示年、月、日、时、分、秒、星期信息&#xff1b; &#xff08;2&#xff09;红外传感器&#xff08;仿真中用按键模拟&#xff09;检测是否有…

【飞腾AI加固服务器】全国产化飞腾+昇腾310+PCIe Switch的AI大模型服务器解决方案

以下是全国产化飞腾AI加固服务器采用飞腾昇腾PCIe Switch解决方案&#xff1a; &#x1f5a5;️ 一、硬件架构亮点 ‌国产算力双擎‌ ‌飞腾处理器‌&#xff1a;搭载飞腾FT2000/64核服务器级CPU&#xff08;主频1.8-2.2GHz&#xff09;&#xff0c;支持高并发任务与复杂计算&a…

应用层协议:HTTPS

目录 HTTPS&#xff1a;超文本传输安全协议 1、概念 2、通信过程及关键技术 2.1 通信过程 1> TLS握手协商&#xff08;建立安全通道&#xff09; 2> 加密数据传输 2.2 关键技术 1> 对称加密算法 2> 非对称加密 3> 对称加密和非对称加密组合 4> 数…

【ArcGIS技巧】—村庄规划规划用地规划状态字段生成工具

"国土空间规划后续也是走向数据治理&#xff0c;数据建库已经是涉及到城市规划、建筑、市政、农业、地理信息、测绘等等方方面面。不得不说以后数据库建设跟维护&#xff0c;是很多专业的必修课。小编就湖南省的村庄规划建库过程中规划用地用海中规划状态字段写了个小工具…

【PCIe总线】-- inbound、outbound配置

PCI、PCIe相关知识整理汇总 【PCIe总线】 -- PCI、PCIe相关实现 由之前的PCIe基础知识可知&#xff0c;pcie的组成有&#xff1a;RC&#xff08;根节点&#xff09;、siwtch&#xff08;pcie桥&#xff09;、EP&#xff08;设备&#xff09;。 RC和EP&#xff0c;以及EP和EP能…

分布式锁实战:Redisson vs. Redis 原生指令的性能对比

分布式锁实战&#xff1a;Redisson vs. Redis 原生指令的性能对比 引言 在DIY主题模板系统中&#xff0c;用户可自定义聊天室的背景、图标、动画等元素。当多个运营人员或用户同时修改同一模板时&#xff0c;若没有锁机制&#xff0c;可能出现“甲修改了背景色&#xff0c;乙…

react+taro 开发第五个小程序,解决拼音的学习

1.找一个文件夹 cmd 2.taro init 3.vscode 找开该文件夹cd help-letters 如&#xff1a;我的是(base) PS D:\react\help-letters> pnpm install 4.先编译一下吧。看下开发者工具什么反应。 pnpm dev:weapp 5.开始规则。我用cursor就是不成功。是不是要在这边差不多了&…

kafka(windows)

目录 介绍 下载 配置 测试 介绍 Kafka是一个分布式流媒体平台&#xff0c;类似于消息队列或企业信息传递系统。 下载 Kafka对于Zookeeper是强依赖&#xff0c;所以安装Kafka之前必须先安装zookeeper 官网&#xff1a;Apache Kafka 下载此安装包并解压 配置 新建log…

基于安卓的文件管理器程序开发研究源码数据库文档

摘 要 伴随着现代科技的发展潮流&#xff0c;移动互联网技术快速发展&#xff0c;各种基于通信技术的移动终端设备做的也越来越好了&#xff0c;现代智能手机大量的进入到了我们的生活中。电子产品的各种软硬技术技术的发展&#xff0c;操作系统的不断更新换代&#xff0c;谷歌…

EMC VNXe 存储系统日志收集方法

写在前面 有朋友找来看看VNXe的故障&#xff0c;这种问题总是要收集日志&#xff0c;顺便这里也分享给大家。 注意&#xff0c;VNXe和VNX 属于完全不同的产品&#xff0c;不要看名字很类似&#xff0c;操作系统已经完全重构了&#xff0c;如果说是否有联系&#xff0c;大概就…

从“人找政策”到“政策找人”:智能退税ERP数字化重构外贸生态

离境退税新政核心内容与外贸企业影响 &#xff08;一&#xff09;政策核心变化解析 退税商店网络扩容 新政明确鼓励在大型商圈、旅游景区、交通枢纽等境外旅客聚集地增设退税商店&#xff0c;并放宽备案条件至纳税信用M级企业。以上海为例&#xff0c;静安区计划新增1000家退…

以人类演示视频为提示,学习可泛化的机器人策略

25年5月来自清华大学、上海姚期智研究院和星动纪元&#xff08;RoboEra&#xff09;公司的论文“Learning Generalizable Robot Policy with Human Demonstration Video as a Prompt”。 最近的机器人学习方法通​​常依赖于从通过遥操作收集的大量机器人数据集中进行模仿学习…

SOC-ESP32S3部分:36-适配自己的板卡

飞书文档https://x509p6c8to.feishu.cn/wiki/RP4UwPrsKi4xuQkKLAAcKxD3n1b 如果你自己画了PCB板&#xff0c;需要把自己绘制的板卡配置小智AI工程&#xff0c;可以参考此文档。 下载源码 克隆或下载源码到本地&#xff0c;这里以1.5.5为例&#xff0c;大家可以自行修改其它版…

LLMs 系列科普文(8)

八、模型的自我认知 接下来我们聊聊另一种问题&#xff0c;即模型的自我认知。 网上经常经常可以看到人们会问大语言模型一些关于认知方面的问题&#xff0c;比如“你是什么模型&#xff1f;谁创造了你&#xff1f;” 说实话&#xff0c;其实这个问题有点无厘头。 之所以这么…

机器学习基础相关问题

机器学习相关的基础问题 K-means是否一定会收敛 K-means是否一定会收敛 K-means算法在有限步数内一定会收敛&#xff0c;但收敛到的可能是局部最优解而非全局最优解。以下是详细分析&#xff1a; K-means 的优化目标是最小化 样本到其所归属簇中心的距离平方和&#xff08;SSE…

验证负载均衡与弹性伸缩

什么是弹性伸缩&#xff08;Auto Scaling&#xff09;&#xff1f; 弹性伸缩是指 云计算平台根据实时负载自动调整计算资源&#xff08;如服务器实例、容器Pod&#xff09;数量&#xff0c;以确保系统在高峰时保持稳定&#xff0c;在低谷时节省成本。 什么时候会触发弹性伸缩&…

Three.js中AR实现详解并详细介绍基于图像标记模式AR生成的详细步骤

文档地址 Three.js中AR实现详解 以下是Three.js中实现AR功能的详细解析&#xff0c;涵盖技术原理、实现步骤、核心组件及优化策略&#xff1a; &#x1f9e9; 一、技术基础 AR.js框架的核心作用 AR.js是Three.js实现AR的基石&#xff0c;提供以下核心能力&#xff1a; 多模…

GeoBoundaries下载行政区划边界数据(提供中国资源shapefile)

要下载山东省济南市各个区的行政区划边界数据&#xff0c;你可以通过 geoBoundaries 提供的数据来实现。下面是详细步骤&#xff0c;包括网页操作和可选的 Python 自动化方式。 目录 ✅ 一、通过 geoBoundaries 官网手动下载1. 打开官网&#xff1a;2. 查找中国数据&#xff1a…

大模型如何选型?嵌入模型如何选型?

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 有很多很多不足的地方&#xff0c;欢迎评论交流&#xff0c;感谢您的阅读和评论&#x1f604;。 目录 引言模型优劣认知与模型选择大模型&#xff08;L…

开源大模型网关:One API实现主流AI模型API的统一管理与分发

以下是对One API的简单介绍&#xff1a; One API是一个使用go语言开发的大语言模型 API 管理与分发系统支持Docker一键快速部署&#xff0c;且资源占用小&#xff0c;高性能开箱支持多平台大模型快速接入&#xff0c;包括OpenAI、Gemini、xAI、Grop、Anthropic Claude、Ollama…