一、改变路由警告

二、实现新增数据

1.UserMapper.xml

2.Controller层

注意:前端传的是json对象,所以后台也需要使用JSON

3.设置提交的表单

<el-dialog title="信息" v-model="data.formVisible" width="30%" destroy-on-close><el-form ref="formRef" :model="data.form" :rules="data.rules" label-width="80px" style="padding: 20px 30px 10px 0"><el-form-item prop="username" label="账号"><el-input v-model="data.form.username" autocomplete="off" /></el-form-item><el-form-item prop="birthday" label="生日"><el-date-pickerv-model="data.form.birthday"type="datetime"placeholder="选择日期时间"></el-date-picker></el-form-item><el-form-item prop="sex" label="性别"><el-select v-model="data.form.sex" placeholder="请选择性别" style="width: 100%"><el-option label="男" value="男"></el-option><el-option label="女" value="女"></el-option></el-select></el-form-item><el-form-item prop="address" label="地址"><el-input v-model="data.form.address" autocomplete="off" /></el-form-item></el-form><template #footer><div class="dialog-footer"><el-button @click="data.formVisible = false">取 消</el-button><el-button type="primary" @click="save">保 存</el-button></div></template>
</el-dialog>

4.点击新增按钮实现弹框打开

4.script数据提交(注意点) 通过在  中设置 ref 属性,将 formRef 与表单组件关联

<script setup>
import { reactive,ref } from "vue";
import {Search} from "@element-plus/icons-vue";
import request from "@/utils/request.js";
import {ElMessage} from "element-plus";const data = reactive({name: null,pageNum: 1,pageSize: 5,total:0,tableData: [],formVisible: false, // 表单是否显示form: {}, //表单数据rules: {username: [{ required: true, message: '请填写用户名', trigger: 'blur' }],birthday: [{ required: false, message: '请填写生日', trigger: 'blur' }],sex: [{ required: true, message: '请填写性别', trigger: 'blur' }],address: [{ required: true, message: '请填写地址', trigger: 'blur' }]},rows: []
})const formRef = ref() //表单实例const load = () => {request.get('/user/selectPage', {//入参params: {pageNum: data.pageNum,pageSize: data.pageSize,username:data.username,address:data.address}}).then(res => {if (res.code === '200') {data.tableData = res.data.listdata.total = res.data.total} else {ElMessage.error(res.msg)}})
}
load()//搜索重置
const reset = () => {data.username = nulldata.address = nullload()
}//点击新增按钮触发的方法
const handleAdd = () => {data.formVisible = true //显示弹框data.form = {}  //清空表单
}const add = () => {console.log(data.form);// formRef 是表单的引用formRef.value.validate((valid) => {if (valid) {   // 验证通过的情况下request.post('/user/add', data.form).then(res => {if (res.code === '200') {data.formVisible = false //隐藏弹框ElMessage.success('新增成功')load() //重新加载数据} else {ElMessage.error(res.msg)}})}})
}//点击保存触发的方法
const save = () => {add()
}</script>

三、实现修改数据

mapper.xml

<update id="update" parameterType="com.qcby.springboot.entity.User">update user<set><if test="username!=null">username=#{username},</if><if test="birthday!=null">birthday=#{birthday},</if><if test="sex!=null">sex=#{sex},</if><if test="address!=null">address=#{address},</if></set>where id = #{id}
</update>

controller层

3.设置vue的修改和删除按钮

<el-table-column label="操作" width="100"><template #default="scope"><el-button type="primary" icon="Edit" circle @click="handleEdit(scope.row)"></el-button><el-button type="danger" icon="Delete" circle @click="del(scope.row.id)"></el-button></template>
</el-table-column>

4.设置vue的数据提交

 //打开修改的弹框const handleEdit = (row)=>{data.form = JSON.parse(JSON.stringify(row))  // 深度拷贝数据data.formVisible = true
}//点击保存触发的方法
const save = () => {data.form.id ? update() : add()
}
//修改
const update = () => {// formRef 是表单的引用formRef.value.validate((valid) => {if (valid) {   // 验证通过的情况下request.post('/user/update', data.form).then(res => {if (res.code === '200') {data.formVisible = falseElMessage.success('修改成功')load()} else {ElMessage.error(res.msg)}})}})
}

四、删除数据

xml配置

controller层

删除数据

注意这里需要导入 ElMessageBox ElMessageBox 是 Element Plus UI 库提供的一个弹出框组件,主要用于显示各种类型的确认对话框、提示信息等。

import {ElMessage, ElMessageBox } from "element-plus";
//删除数据
const del = (id) => {ElMessageBox.confirm('删除后无法恢复,您确认删除吗?', '删除确认', { type: 'warning' }).then(res => {request.post('/user/delete/' + id).then(res => {if (res.code === '200') {ElMessage.success('删除成功')load()} else {ElMessage.error(res.msg)}})}).catch(err => {})
}

五、批量删除

table 的多选事件 @selection-change="handleSelectionChange"

添加批量删除按钮

<el-button type="danger" @click="deleteBatch">批量删除</el-button>

前端实现批量删除功能

const handleSelectionChange = (rows) => {  // rows 就是实际选择的数组data.rows = rows
}const deleteBatch = () => {if (data.rows.length === 0) {ElMessage.warning('请选择数据')return}ElMessageBox.confirm('删除后无法恢复,您确认删除吗?', '删除确认', { type: 'warning' }).then(res => {request.delete('/admin/deleteBatch', { data: data.rows }).then(res => {if (res.code === '200') {ElMessage.success('批量删除成功')load()} else {ElMessage.error(res.msg)}})}).catch(err => {})
}

六、前端全部代码

<template><div><div class="card" style="margin-bottom: 5px"><el-input clearable @clear="load" style="width: 260px; margin-right: 5px" v-model="data.username" placeholder="请输入用户名查询" :prefix-icon="Search"></el-input><el-input clearable @clear="load" style="width: 260px; margin-right: 5px" v-model="data.address" placeholder="请输入地址查询" :prefix-icon="Search"></el-input><el-button type="primary" @click="load">查 询</el-button><el-button @click="reset">重 置</el-button></div><div class="card" style="margin-bottom: 5px"><el-button type="primary" @click="handleAdd">新 增</el-button><el-button type="danger"@click="deleteBatch" >批量删除</el-button></div><div class="card" style="margin-bottom: 5px"><el-table :data="data.tableData" style="width: 100%" @selection-change="handleSelectionChange"  :header-cell-style="{ color: '#333', backgroundColor: '#eaf4ff' }"><!-- type="selection":这指定该列将包含用于行选择的复选框。它允许用户在表格中选择一行或多行。 --><el-table-column type="selection" width="55" /><el-table-column prop="username" label="用户名" width="180" /><el-table-column prop="birthday" label="生日" width="180"  :formatter="dateFormat" /><el-table-column prop="sex" label="性别" width="80" /><el-table-column prop="address" label="地址" width="180" /><el-table-column label="操作" width="100"><template #default="scope"><el-button type="primary" icon="Edit" circle @click="handleEdit(scope.row)"></el-button><el-button type="danger" icon="Delete" circle @click="del(scope.row.id)"></el-button></template></el-table-column></el-table></div><div class="card"><el-paginationv-model:current-page="data.pageNum":page-size="data.pageSize"layout="total, prev, pager, next":total="data.total"@current-change="load"@size-change="load"/></div></div><el-dialog title="信息" v-model="data.formVisible" width="30%" destroy-on-close><el-form ref="formRef" :model="data.form" :rules="data.rules" label-width="80px" style="padding: 20px 30px 10px 0"><el-form-item prop="username" label="账号"><el-input v-model="data.form.username" autocomplete="off" /></el-form-item><el-form-item prop="birthday" label="生日"><el-date-pickerv-model="data.form.birthday"type="date"placeholder="选择日期时间"></el-date-picker></el-form-item><el-form-item prop="sex" label="性别"><el-select v-model="data.form.sex" placeholder="请选择性别" style="width: 100%"><el-option label="男" value="男"></el-option><el-option label="女" value="女"></el-option></el-select></el-form-item><el-form-item prop="address" label="地址"><el-input v-model="data.form.address" autocomplete="off" /></el-form-item></el-form><template #footer><div class="dialog-footer"><el-button @click="data.formVisible = false">取 消</el-button><el-button type="primary" @click="save">保 存</el-button></div></template>
</el-dialog></template><script setup>
import { reactive,ref } from "vue";
import {Search} from "@element-plus/icons-vue";
import request from "@/utils/request.js";
import {ElMessage, ElMessageBox } from "element-plus";const formRef = ref() //表单实例const data = reactive({name: null,pageNum: 1,pageSize: 5,total:0,tableData: [],rules: {username: [{ required: true, message: '请填写用户名', trigger: 'blur' }],birthday: [{ required: true, message: '请填写生日', trigger: 'blur' }],sex: [{ required: true, message: '请填写性别', trigger: 'blur' }],address: [{ required: true, message: '请填写地址', trigger: 'blur' }]},rows: []
})const load = () => {request.get('/user/findAll', {params: {pageNum: data.pageNum,pageSize: data.pageSize,username: data.username,address: data.address}}).then(res => {if (res.code === '200') {data.tableData = res.data.listdata.total = res.data.total} else {ElMessage.error(res.msg)}})
}
load()//搜索重置
const reset = () => {data.username = nulldata.address = nullload()
}// 添加日期格式化函数
const dateFormat = (row, column, cellValue) => {if (!cellValue) return ''const date = new Date(cellValue)const year = date.getFullYear()const month = String(date.getMonth() + 1).padStart(2, '0')const day = String(date.getDate()).padStart(2, '0')return `${year}-${month}-${day}`
}//点击新增按钮触发的方法
const handleAdd = () => {data.formVisible = true //显示弹框data.form = {}  //清空表单
}const add = () => {console.log(data.form);// formRef 是表单的引用formRef.value.validate((valid) => {if (valid) {   // 验证通过的情况下request.post('/user/add', data.form).then(res => {if (res.code === '200') {data.formVisible = false //隐藏弹框ElMessage.success('新增成功')load() //重新加载数据} else {ElMessage.error(res.msg)}})}})
}//打开修改的弹框
const handleEdit = (row)=>{data.form = JSON.parse(JSON.stringify(row))  // 深度拷贝数据data.formVisible = true  
}// //点击保存触发的方法
const save = () => {data.form.id ? update() : add()
}
//修改
const update = () => {// formRef 是表单的引用formRef.value.validate((valid) => {if (valid) {   // 验证通过的情况下request.post('/user/update', data.form).then(res => {if (res.code === '200') {data.formVisible = falseElMessage.success('修改成功')load()} else {ElMessage.error(res.msg)}})}})
}//删除数据
const del = (id) => {ElMessageBox.confirm('删除后无法恢复,您确认删除吗?', '删除确认', { type: 'warning' }).then(res => {request.post('/user/delete/' + id).then(res => {if (res.code === '200') {ElMessage.success('删除成功')load()} else {ElMessage.error(res.msg)}})}).catch(err => {})
}const handleSelectionChange = (rows) => {  // rows 就是实际选择的数组data.rows = rows
}const deleteBatch = () => {if (data.rows.length === 0) {ElMessage.warning('请选择数据')return}ElMessageBox.confirm('删除后无法恢复,您确认删除吗?', '删除确认', { type: 'warning' }).then(res => {request.delete('/user/deleteBatch', { data: data.rows }).then(res => {if (res.code === '200') {ElMessage.success('批量删除成功')load()} else {ElMessage.error(res.msg)}})}).catch(err => {})
}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/919226.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919226.shtml
英文地址,请注明出处:http://en.pswp.cn/news/919226.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rabbitmq+STS+discovery_k8s +localpv部署排坑详解

#作者&#xff1a;朱雷 文章目录一、部署排坑1.1. configmap配置文件1.2. pv文件1.3. sc文件1.4. serviceAccount文件1.5. headless-service文件1.6. sts文件二、RabbitMQ集群部署关键问题总结一、部署排坑 1.1. configmap配置文件 编辑cm.yaml 文件 apiVersion: v1 kind: C…

8.14 模拟

lc658. deque 定长滑窗class Solution { public:vector<int> findClosestElements(vector<int>& arr, int k, int x) {int n arr.size();int l 0, r 0;deque<int> dq;while (r < n) {dq.push_back(arr[r]);if (dq.size() > k) {// 核心&#xf…

JavaScript 核心语法与实战笔记:从基础到面试高频题

一、面试高频:apply 与 call 调用模式的区别 apply 和 call 的核心作用一致——改变函数内 this 的指向并立即执行函数,唯一区别是参数传递方式不同: apply:第二个参数需以数组形式传入,格式为 函数名.apply(this指向, [参数1, 参数2, ...]) 示例:test.apply(param, [1,…

自动驾驶系统“测试”的“要求”与“规范体系”

让数据真正闭环的&#xff0c;L4级自动驾驶仿真工具链-杭州千岑智能科技有限公司&#xff1a;RSim。 自动驾驶系统测试的要求与规范体系 自动驾驶技术作为汽车产业智能化转型的核心领域&#xff0c;其测试验证环节直接关系到技术的安全性和可靠性。随着自动驾驶等级的提高&…

人工智能——CNN基础:卷积和池化

一、CNN入门介绍1、卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;简称 CNN&#xff09;是一种专门为处理具有网格结构数据&#xff08;如图像、音频&#xff09;而设计的深度学习模型。在传统的全连接神经网络&#xff08;FNN&#xff09;中&#xff0c;输…

适用监测农作物长势和病虫害的高光谱/多光谱相机有哪些?

面对农作物长势分析和病虫害监测&#xff0c;光谱技术在农业中得到了有效的应用。本篇文章给大家介绍下适合监测农作物长势和病虫害的高光谱/多光谱相机。农作物在遭受病虫害侵袭时&#xff0c;其叶片的细胞结构、水分含量、色素组成会发生变化&#xff0c;从而导致农作物对不同…

深度学习——03 神经网络(4)-正则化方法价格分类案例

4 正则化 4.1 概述模型拟合的3种状态左边&#xff08;Underfitting 欠拟合&#xff09;&#xff1a;模型太简单&#xff0c;没抓住数据规律。比如用直线硬套弯曲的数据&#xff0c;预测效果差&#xff0c;训练误差和测试误差都大&#xff1b;中间&#xff08;Just right 拟合合…

java16学习笔记

Java16是一个重要的特性发布&#xff0c;它为JAVA带来了许多JVM特定的更改和语言特定的更改。它遵循了自JavaJava10以来引入的Java发布步调&#xff0c;并于2021年3月发布&#xff0c;仅在Java15发布后的六个月内发布。 Java 16是一个非LTS版本。 338:Vector API (Incubator)…

useCallback 的陷阱:当 React Hooks 反而拖了后腿

我有一支技术全面、经验丰富的小型团队&#xff0c;专注高效交付中等规模外包项目&#xff0c;有需要外包项目的可以联系我很多代码库到处都是 useCallback / useMemo。初衷是好的&#xff1a;减少不必要的重新渲染、稳定引用、提速。然而&#xff0c;用错场景或铺天盖地地包一…

【IntelliJ IDEA】如何在pom.xml中去除maven中未使用的依赖

pom.xml中去除maven中未使用的依赖主要解决的问题一、怎么做&#xff1f;二、重点依赖类型解析说明三、什么时候做&#xff1f;四、有什么风险要注意的&#xff1f;五、补充一个快捷方法使用六、IDEA的terminal中如何才能使用命令mvn呢&#xff1f;主要解决的问题 你的项目中p…

安卓9.0系统修改定制化____关于自启脚本的规律、编写与实战示例 推荐收藏【二】

在定制化ROM服务中,许多功能都需要通过自启脚本来实现。上期博文详细解析了脚本编写的规律、权限设置以及常见错误踩坑的排查与修复方法,并逐行解释了脚本代码的含义。掌握这些基础知识后,这期再以实例演示的过程来使我们使用更得心应手。。 通过博文了解💝💝💝 1�…

选择gpt-5还是claude-4-sonnect

了解我的朋友都知道&#xff0c;我是一个伪全栈工程师&#xff0c;一个人加AI编程工具打天下。 最近&#xff0c;gpt-5已经出来有一段时间了&#xff0c;cursor第一时间就支持了gpt-5模型&#xff0c;我第一时间就尝试了gpt-5效果。说实话&#xff0c;gpt-5和claude-4-sonnect都…

自动化运维实验(二)---自动识别设备,并导出配置

目录 一、实验拓扑 二、实验目的 三、实验步骤 实验思路&#xff1a; 代码部分&#xff1a; 四、实验结果&#xff1a; 一、实验拓扑 二、实验目的 ssh远程登录后&#xff0c;识别设备类型&#xff08;华三、华为、锐捷、山石、飞塔、深信服等&#xff09;&#xff0c;再…

Matlab(4)初阶绘图

一、Basic plotting1.plot&#xff08;&#xff09;plot(x,y) &#xff1a;x图片中点的横坐标&#xff0c;y图片中点的纵坐标plot(y) &#xff1a;y图片中点的纵坐标&#xff0c;x图片中点的横坐标默认为1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5........plot(co…

服务器硬件电路设计之 I2C 问答(五):I2C 总线数据传输方向如何确定、信号线上的串联电阻有什么作用?

在服务器硬件电路设计中&#xff0c;I2C 总线作为常用的串行通信总线&#xff0c;其数据传输方向的确定和信号线上串联电阻的作用是关键知识点。​I2C 总线数据传输方向由主设备和从设备的角色以及读写位共同确定。主设备是发起通信的一方&#xff0c;从设备则是被寻址的对象。…

OpenBMC中C++策略模式架构、原理与应用

1. 策略模式概述 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许在运行时动态选择算法或行为&#xff0c;而无需修改客户端代码。 核心思想&#xff1a;封装可互换的算法族&#xff0c;使它们可以独立于使用它们的客户端变化。 1.…

【python实用小脚本-187】Python一键批量改PDF文字:拖进来秒出新文件——再也不用Acrobat来回导

Python一键批量改PDF文字&#xff1a;拖进来秒出新文件——再也不用Acrobat来回导 PDF文字替换, 批量导出, 零依赖转档, 一键完成, 瑞士军刀 故事开场&#xff1a;一把瑞士军刀救了周五下班的你 周五 18:00&#xff0c;老板甩来 50 份合同 PDF&#xff1a; “把里面的‘2023’全…

汽车后雾灯色度难达标?OAS 软件精准解决破瓶颈

汽车后雾灯案例分析简介汽车后雾灯是车辆在能见度较低的雾、雨、雪等恶劣天气条件下行驶时&#xff0c;向后方车辆传递警示信号的重要装置&#xff0c;其性能直接关系到车辆的后方安全。根据规定&#xff0c;红色信号灯需符合 CIE1931 标准&#xff0c;其色度坐标 X 值应在 0.6…

[系统架构设计师]架构设计专业知识(二)

[系统架构设计师]架构设计专业知识&#xff08;二&#xff09; 一.信息系统基础知识 1.信息系统概述 信息系统功能&#xff1a;输入&#xff0c;存储&#xff0c;处理&#xff0c;输出&#xff0c;控制 理查德.诺兰&#xff1a; 初始&#xff0c;传播&#xff0c;控制&#xff…

如果用ApiFox调用Kubernetes API,需要怎么设置证书?

针对Docker Desktop中Kubernetes访问报SSL/TLS信任关系错误的问题&#xff0c;以下是综合解决方案&#xff1a;要在Postman中调用Kubernetes API并设置证书&#xff0c;需按以下步骤操作&#xff1a;&#x1f510; 证书设置步骤‌提取证书文件‌从kubeconfig文件&#xff08;~/…