vue+element 前端实现增删查改+分页,不调用后端
前端实现增删查改+分页,不调用后端。
大概就是对数组内的数据进行增删查改+分页
没调什么样式,不想写后端,当做练习
<template><div><!-- 查询 --><el-form :inline="true" :model="formQuery"><el-form-item label="时间" :label-width="formLabelWidth"><el-date-pickerv-model="formQuery.date"type="daterange"value-format="yyyy-MM-dd"start-placeholder="开始日期"end-placeholder="结束日期":default-time="['00:00:00', '23:59:59']"></el-date-picker></el-form-item><el-form-item label="姓名" :label-width="formLabelWidth"><el-inputv-model="formQuery.name"style="width: 240px"placeholder="Please input"clearable /></el-form-item><el-form-item label="地址" :label-width="formLabelWidth"><el-inputv-model="formQuery.address"style="width: 240px"placeholder="Please input"clearable /></el-form-item><el-form-item><el-button type="primary" @click="query()">查询</el-button></el-form-item><el-form-item><el-button type="success" @click="add()" class="addButton">添加</el-button></el-form-item></el-form><!-- 表格展示 --><el-table :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)" style="width: 100%"><el-table-column type="index" label="id" width="50" /><el-table-column prop="date" label="Date" width="180" /><el-table-column prop="name" label="Name" width="180" /><el-table-column prop="address" label="Address" /><el-table-column label="操作"><template slot-scope="scope"><!--插槽知识点--><el-button type="primary" @click="onEdit(scope.$index)">编辑</el-button><!-- <el-button type="primary" @click="dialogFormEditVisible = true">编辑</el-button> --><!-- <el-button type="danger" @click="onDelete(scope.$index)">删除</el-button> --><!-- 删除二次确认 --><el-popover placement="top" width="160" v-model="scope.row.visible"><p>确定删除吗?</p><div style="text-align: right; margin: 0"><el-button size="mini" type="text" @click="scope.row.visible = false">取消</el-button><el-button type="primary" size="mini" @click="onDelete(scope.$index)">确定</el-button></div><el-button slot="reference" type="danger">删除</el-button></el-popover></template></el-table-column></el-table><!-- 分页 --><div class="block" style="margin-top: 15px"><el-paginationalign="center"@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="currentPage":page-sizes="[1, 3, 5, 7]":page-size="pageSize"layout="total, sizes, prev, pager, next, jumper":total="tableData.length"></el-pagination></div><!-- 修改弹出框 --><el-dialog :visible.sync="dialogFormEditVisible" title="修改" width="500"><el-form :model="formEdit"><el-form-item label="时间" :label-width="formLabelWidth"><el-date-pickerv-model="formEdit.date"type="date"format="yyyy-MM-dd"value-format="yyyy-MM-dd"placeholder="Pick a day" /></el-form-item><el-form-item label="姓名" :label-width="formLabelWidth"><el-inputv-model="formEdit.name"style="width: 240px"placeholder="Please input"clearable /></el-form-item><el-form-item label="地址" :label-width="formLabelWidth"><el-inputv-model="formEdit.address"style="width: 240px"placeholder="Please input"clearable /></el-form-item></el-form><template #footer><div class="dialog-footer"><el-button @click="dialogFormEditVisible = false">Cancel</el-button><el-button type="primary" @click="editConfirm()"> Confirm </el-button></div></template></el-dialog><!-- 添加弹出框 --><el-dialog :visible.sync="dialogFormAddVisible" title="添加" width="500"><el-form :model="formAdd"><el-form-item label="时间" :label-width="formLabelWidth"><el-date-pickerv-model="formAdd.date"type="date"format="yyyy-MM-dd"value-format="yyyy-MM-dd"placeholder="Pick a day" /></el-form-item><el-form-item label="姓名" :label-width="formLabelWidth"><el-inputv-model="formAdd.name"style="width: 240px"placeholder="Please input"clearable /></el-form-item><el-form-item label="地址" :label-width="formLabelWidth"><el-inputv-model="formAdd.address"style="width: 240px"placeholder="Please input"clearable /></el-form-item></el-form><template #footer><div class="dialog-footer"><el-button @click="dialogFormAddVisible = false">Cancel</el-button><el-button type="primary" @click="addConfirm()"> Confirm </el-button></div></template></el-dialog></div>
</template><script>
import { Container } from "element-ui";export default {name: "practice",data() {return {tableData: [{date: "2024-05-03",name: "Tom1",address: "No. 11, Grove St, Los Angeles",},{date: "2024-06-02",name: "Tom2",address: "No. 22, Grove St, Los Angeles",},{date: "2024-03-04",name: "Tom3",address: "No. 33, Grove St, Los Angeles",},{date: "2024-03-21",name: "Tom4",address: "No. 44, Grove St, Los Angeles",},],currentPage: 1, // 当前页码total: 20, // 总条数pageSize: 3, // 每页的数据条数formQuery: {date: "",name: "",address: "",},dialogFormEditVisible: false,dialogFormAddVisible: false,formEdit: {date: "",name: "",address: "",},formAdd: {date: "",name: "",address: "",},formLabelWidth: "140px",num: "",};},methods: {// 添加add() {this.formAdd = {};this.dialogFormAddVisible = true;},addConfirm() {this.tableData.push(this.formAdd);this.dialogFormAddVisible = false;},// 打开修改弹窗 回显onEdit(index) {// console.log(index);this.dialogFormEditVisible = true;this.num = index;// this.formEdit = this.tableData[index]; 在修改弹窗中进行修改,父表单的内容会被直接修改/*在你的代码中,当点击修改按钮时,通过onEdit方法打开弹窗并设置表单数据formEdit为tableData[index]。这里需要注意的是,Vue.js 中对象是引用类型,所以 this.formEdit = this.tableData[index]; 实际上是将 formEdit 和 tableData[index] 引用了同一个对象。因此,当你在弹窗中修改formEdit时,同时也修改了tableData[index] 对应的对象,导致父表单内容直接被修改了。为了避免这种情况,你可以在 onEdit 方法中对 tableData[index] 进行深拷贝,而不是简单地引用赋值。这样就可以保持弹窗中的表单数据和原始数据的独立性,不会相互影响。你可以使用 Object.assign() 或者扩展运算符(spread operator)来进行深拷贝,例如:this.formEdit = Object.assign({}, this.tableData[index]);// 或者this.formEdit = { ...this.tableData[index] };这样修改后,当你在弹窗中修改formEdit时,不会影响到tableData中的数据,直到点击确认按钮后才会将修改后的数据应用到tableData中。 */this.formEdit = Object.assign({}, this.tableData[index]);},// 修改确认editConfirm() {this.tableData[this.num].date = this.formEdit.date;this.tableData[this.num].name = this.formEdit.name;this.tableData[this.num].address = this.formEdit.address;this.dialogFormEditVisible = false;},// 删除onDelete(index) {// splice(index, 1) 表示从 tableData 数组中删除一个元素,从指定的 index 开始删除this.tableData.splice(index, 1);},//查询query() {// console.log(this.formQuery);var timeResult = [];var addressResult = [];var nameResult = [];var startDate = this.formQuery.date[0];var endDate = this.formQuery.date[1];var address = this.formQuery.address;var name = this.formQuery.name;var date = this.formQuery.date;// 判断日期if (date != "") {for (let index = 0; index < this.tableData.length; index++) {const element = this.tableData[index];if (startDate <= element.date && endDate >= element.date) {timeResult.push(this.tableData[index]);}}} else {timeResult = this.tableData;}// 判断地址if (address != "") {for (const iterator of timeResult) {if (iterator.address.includes(address)) {addressResult.push(iterator);}}} else {addressResult = this.tableData;}// 判断姓名if (name != "") {addressResult.forEach((element) => {if (element.name.includes(name)) {nameResult.push(element);}});} else {nameResult = this.tableData;}this.tableData = nameResult;},// 分页//每页条数改变时触发 选择一页显示多少行handleSizeChange(val) {// console.log(`每页 ${val} 条`);this.pageSize = val;// this.fetchData(this.currentPage);},//当前页改变时触发 跳转其他页handleCurrentChange(val) {// console.log(`当前页: ${val}`);this.currentPage = val;// this.fetchData(val);},},
};
</script><style scoped>
.el-button {margin-right: 10px;
}
</style>
相关文章:

vue+element 前端实现增删查改+分页,不调用后端
前端实现增删查改分页,不调用后端。 大概就是对数组内的数据进行增删查改分页 没调什么样式,不想写后端,当做练习 <template><div><!-- 查询 --><el-form :inline"true" :model"formQuery">&l…...

浅谈如何自我实现一个消息队列服务器(2)——实现 broker server 服务器
文章目录 一、实现 broker server 服务器1.1 创建一个SpringBoot项目1.2 创建Java类 二、硬盘持久化存储 broker server 里的数据2.1 数据库存储2.1.1 浅谈SQLiteMyBatis 2.1.2 如何使用SQLite 2.2 使用DataBaseManager类封装数据库操作2.3 文件存储消息2.3.1 存储消息时&#…...
html5cssjs代码 039 元素尺寸
html5&css&js代码 039 元素尺寸 一、代码二、解释 使用CSS来定义HTML元素的尺寸,并通过不同的计量单位来设置元素的大小。 一、代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><tit…...
Lucene的lukeall工具的下载和使用图解
Lucene的lukeall工具的下载和使用图解-CSDN博客 Releases DmitryKey/luke (github.com) 需要github的用户名和密码,没有是下载不成功的....

【题目】【网络系统管理】2019年全国职业技能大赛高职组计算机网络应用赛项H卷
极安云科专注职业教育技能竞赛培训4年,包含信息安全管理与评估、网络系统管理、网络搭建等多个赛项及各大CTF模块培训学习服务。本团队基于赛项知识点,提供完整全面的系统性理论教学与技能培训,成立至今持续优化教学资源与讲师结构࿰…...

OpenRewrite框架原理解析
目录 1. OpenRewrite处理流程概述 2. OpenRewrite访问者模式的应用 2.1 访问者模式简介 2.2 OpenRewrite框架如何应用访问者模式 2.2.1 抽象访问者&具体访问者 2.2.2 抽象元素&具体元素 3. LST无损语义树构造 4. 配方(Recipe)执行流程 …...

LeetCode_Java_递归系列(题目+思路+代码)
206.反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]以此类推,直到反转结束返回头结点 class Solution {public ListNode rever…...
c++ 编译为WebAssembly时,怎么判断是release/debug环境?
我对这块研究不深 我的需求是把cpp代码编译为wasm的形式时,需要知道是debug/release 然而 尝试了一些办法 没有满足我的需求 尝试1: #include <iostream>bool isDebugMode() { #ifdef EMSCRIPTENbool isDebug EM_ASM_INT({return (typeof conso…...
信号处理--基于正则化聚合的共空间模态(CSP)脑电信号分类
目录 理论 工具 方法实现 代码获取 参考文献 理论 传统的通用空间模式 (CSP) 是一种流行的算法,用于对脑电图 (EEG) 信号进行分类。本文主要介绍小样本设置 (SSS) 中 CSP 的正则化和聚合技术。传统的 CSP 基于样本协方差矩阵估计。如果训练样本数量较少,其脑电图分类的…...
【2024年5月备考新增】《软考真题分章练习(含答案解析) - 11 项目风险管理(高项)》
1 题目 1、风险可以从不同角度、根据不同的标准来进行分类。百年不遇的暴雨属于()。 A.不可预测风险 B.可预测风险 C.已知风险 D.技术风险 2、人们对风险事件都有一定的承受能力,当()时,人们愿意承担的风险越大。 A.项目活动投入的越多 B.项目的收益越大 C.个人、组织拥…...

【3GPP】【核心网】【4G】4G手机接入过程,手机附着过程(超详细)
1. 4G手机接入过程,手机附着过程 附着(Attach): 终端在PLMN中注册,从而建立自己的档案,即终端上下文 进行附着的三种情况: ①终端开机后的附着,初始附着 ②终端从覆盖盲区返回到…...
【LeetCode-46.全排列】
题目详情: 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2: …...

【Web】浅聊Jackson序列化getter的利用——POJONode
目录 核心速览 原理分析 EXP TemplatesImpl利用 SignedObject利用 核心速览 writeValueAsString是jackson序列化自带的入口,在调用该方法的过程中将会通过遍历的方法将bean对象中的所有的属性的getter方法进行调用 下面介绍如下利用链: BadAttrib…...

osgEarth学习笔记2-第一个Osg QT程序
原文链接 上个帖子介绍了osgEarth开发环境的安装。本帖介绍我的第一个Osg QT程序。 下载 https://github.com/openscenegraph/osgQt 解压,建立build目录。 使用Cmake-GUI Configure 根据需要选择win32或者x64,这里我使用win32. 可以看到include和lib路…...

2024年发布jar到国外maven中央仓库最新教程
2024年发布jar到国外maven中央仓库最新教程 文章目录 1.国外sonatype仓库的版本1.1老OSSHR账号注册说明1.2新账号注册说明 2.新账号注册(必选)3.新账号登录创建Namespace3.1创建Namespace的名字的格式要求(必选)3.2发布一个静态网站(可选&…...
在ubuntu22.04.4安装freeswitch1.10.10
一、环境 No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.4 LTS Release: 22.04.4 Codename: jammy 二、依赖 1、 工具包 apt install -y openssh-server …...

qt 置顶窗口崩溃无法退出解决,停止运行快捷键设置
有时置顶窗口调试崩溃需要快捷键进行关闭,如下设置即可 这样就可以通过全局快捷键退出了,避免置顶崩溃无法关闭程序的问题。...

HBCalculator 程序:通过 VMD 可计算分子动力学模拟中氢键密度和强度的一维和二维分布
分享一个通过 VMD 可计算分子动力学模拟中氢键密度和强度的一维和二维分布程序 HBCalculator。 感谢论文的原作者! 主要内容 “氢键是分子系统中关键的非共价相互作用,对生物、化学和能量相关过程产生重大影响;因此,描述氢键信息…...

鸿蒙-项目创建及了解
目录 项目创建 1.App普通项目创建 2.元服务创建 项目结构 .hvigor .idea AppScope entry EntryAbility.ts pages resources module.json5 ohosTest hvigorfile.ts build-profile.json5 oh_modules build-profile.json5 hvigorfile.ts 项目运行 项目创建 F…...

SQLiteC/C++接口详细介绍sqlite3_stmt类(九)
返回:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍sqlite3_stmt类(六) 下一篇: 无 33、sqlite3_column_table_name 函数 sqlite3_column_table_name 用于返回结果集中指定列所属的表的名称。如果查询中列使…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...