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

Vue3 + Element Plus 实现用户管理模块

本文介绍一个使用 Vue3 + Element Plus 实现的用户与小组管理模块,支持用户的增删改查(CRUD)和分页管理,以及小组的新增和删除功能,适用于管理后台系统中的用户权限管理场景。

一、项目简介

该模块具备以下功能:

  • 用户信息展示(用户名、姓名、所属小组、角色)
  • 用户新增、编辑、删除
  • 小组新增、删除管理
  • 分页支持
  • 弹窗式表单对话框设计

二、效果图展示

以下为模块实际界面截图:

  • 用户列表页效果图
    在这里插入图片描述

  • 新增/编辑弹窗效果图
    在这里插入图片描述
    在这里插入图片描述

提示:以上截图请替换为项目实际 UI 效果图,可展示页面布局与交互样式。

三、核心逻辑(JavaScript 部分)

用户数据通过接口异步获取,分页参数传入后台,返回记录与总数。

const fetchUserList = async () => {const response = await queryUserPages({currentPage: pagination.value.currentPage,pageSize: pagination.value.pageSize});userList.value = response.data.records;pagination.value.total = response.data.total;
};

表单提交支持区分新增与编辑场景:

const handleSubmit = async (formData) => {dialogVisible.value = false;if (currentUser.value) {await updateUser(formData);} else {await addUser(formData);}fetchUserList();
};

支持用户删除操作,删除前通过消息框确认:

const confirmDeleteUser = (user) => {ElMessageBox.confirm(`确定要删除用户 "${user.userName}" 吗?`, '删除确认', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {deleteUser(user.uuid);});
};const deleteUser = async (userId) => {await deleteUserById({ uuid: userId });fetchUserList();
};

四、小组管理功能

小组弹窗支持新增与删除操作。

新增小组逻辑如下:

const handleAdd = async () => {if (!form.branchname) {ElMessage.warning('请输入小组名称');return;}const response = await request({url: '/role/addBranch',method: 'post',data: form});if (response.code === 200) {ElMessage.success('小组添加成功');resetForm();emit('refresh');}
};

删除小组逻辑如下:

const handleDelete = (id) => {ElMessageBox.confirm('确定要删除这个小组吗?', '警告', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(async () => {await request({url: '/role/deleteBranchById',method: 'post',data: { uuid: id }});emit('refresh');});
};

五、样式说明

主要样式逻辑如下:

  • .box-card:布局容器,使用 Flex 垂直布局
  • .card-header:顶部区域,用于标题与按钮排列
  • .pagination-container:分页器底部区域,右对齐展示
.box-card {height: 100%;display: flex;flex-direction: column;overflow: auto;
}.card-header {display: flex;justify-content: space-between;align-items: center;padding: 0 10px;flex-shrink: 0;
}.user-table {flex: 1 1 auto;overflow: hidden;
}.pagination-container {padding: 10px 0;display: flex;justify-content: flex-end;background-color: #fff;flex-shrink: 0;
}
:deep(.el-card__body){height: calc(100% - 120px);padding: 20px 20px 0px 20px;
}

样式清爽、结构明确,便于组件复用和样式统一。


文章转载自:

http://V9J32vBH.dbxss.cn
http://aqyVwtBH.dbxss.cn
http://F5M221bH.dbxss.cn
http://iS5YqV0m.dbxss.cn
http://831gREai.dbxss.cn
http://VPRVo0Au.dbxss.cn
http://xifWogUe.dbxss.cn
http://KLJn5HZI.dbxss.cn
http://dHtiBfby.dbxss.cn
http://FcqYxjkp.dbxss.cn
http://X1fkk7ao.dbxss.cn
http://Fpkq3ke3.dbxss.cn
http://bJ4yfbKI.dbxss.cn
http://3lcZDnZw.dbxss.cn
http://lcreNoWn.dbxss.cn
http://CWuabTMx.dbxss.cn
http://Yx1ZvgyP.dbxss.cn
http://j7eLALZR.dbxss.cn
http://2XeJKnUg.dbxss.cn
http://RHUaJXPM.dbxss.cn
http://jDslCpJ6.dbxss.cn
http://EgzEJyre.dbxss.cn
http://bbCW2NKl.dbxss.cn
http://qewQ39mv.dbxss.cn
http://OyEhugw1.dbxss.cn
http://EL49pd6b.dbxss.cn
http://5l66pp0K.dbxss.cn
http://dFqsndfv.dbxss.cn
http://gq0akysY.dbxss.cn
http://hMKos9wb.dbxss.cn
http://www.dtcms.com/a/214807.html

相关文章:

  • 记忆上传与自我同一性的哲学-技术综合分析
  • w~自动驾驶~合集2~激光毫米波雷达
  • 尚硅谷redis7 33-36 redis持久化之RDB优缺点及数据丢失案例
  • EcoVadis审核:企业可持续发展的全球标杆评估体系
  • 类和对象(2)
  • C# 中 INI 文件操作扩展类:轻松管理配置文件
  • 算法-二进制运算
  • 通过Jflash合并Boot和App两个hex为一个hex的办法
  • Instruct模型 AutoModelForCausalLM :智能指令执行专家
  • 【力扣】关于链表索引
  • ArrayBlockingQueue 和 LinkedBlockingQueue 有什么区别?
  • SpringAI--RAG知识库
  • 网络安全--PHP第三天
  • 一、docker安装以及配置加速
  • 动态库版本不配问题排查步骤
  • 【QT】TXT文件的基础操作
  • 国外常用支付流程简易说明(无代码)
  • NoteGen 如何使用 AI 进行记录
  • orm详解--查询执行
  • c++算法题
  • 红海云荣膺2025人力资源科技影响力品牌30强
  • AI时代新词-机器学习即服务(MLaaS)
  • python:机器学习(KNN算法)
  • 2021年江西工业互联网大赛———工业固件分析
  • 【Linux系统】Linux基础指令(一)
  • java8函数式接口(函数式接口的匿名实现类作为某些方法的入参)
  • MySQL 9.3 超详细下载安装教程(Windows版)附图文说明
  • 通用寄存器 专用寄存器
  • 解决leetcode第3509题.最大化交错和为K的子序列乘积
  • Odoo列表视图的控制标签<control>详解