Vue3学习(二)集成ElementPlus实现增删改查

news/2024/10/17 6:31:19/

一、增加功能

        表格

<div style="padding: 10px">
<el-button type="primary" @click="handleAdd">新增数据</el-button><div style="margin: 10px 0"><el-table :data="tableData" border style="width: 100%"><el-table-column prop="date" label="日期" width="180"/><el-table-column prop="name" label="姓名" width="180"/><el-table-column prop="address" label="地址"/><el-table-column label="操作"><template #default="scope"><el-button link type="primary" size="small" @click="handleEdit(scope.row,scope.$index)">编辑</el-button><el-button link type="danger" size="small" @click.prevent="remove(scope.$index)">删除</el-button></template></el-table-column></el-table></div>const tableData = [{date: '2016-05-03',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-02',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},
]

        新增弹窗

 <!--弹窗--><el-dialog v-model="dialogFormVisible" title="信息" width="40%"><el-form :model="form" label-width="100px" style="padding-right:30px "><el-form-item label="日期"><el-input v-model="form.date" autocomplete="off"/></el-form-item><el-form-item label="姓名"><el-input v-model="form.name" autocomplete="off"/></el-form-item><el-form-item label="地址"><el-input v-model="form.address" autocomplete="off"/></el-form-item></el-form><template #footer><span class="dialog-footer"><el-button @click="dialogFormVisible = false">取消</el-button><el-button type="primary" @click="save">确认</el-button></span></template></el-dialog>

导入包装数据所需的组件 

import {ref, reactive} from "vue";

 定义变量

let dialogFormVisible = ref(false)let form = reactive({})

点击新增数据时功能实现

//新增数据 设置新的空的绑值对象 打开弹窗const handleAdd = () => {form = reactive({})//打开弹窗dialogFormVisible.value = true}//保存数据,把数据插入到tableData中,并刷新页面,弹窗关闭const save = () => {//新增tableData.push(form)dialogFormVisible.value = false}

二、编辑功能

        编辑按钮

<el-table-column label="操作"><template #default="scope"><el-button link type="primary" size="small" @click="handleEdit(scope.row,scope.$index)">编辑</el-button><el-button link type="danger" size="small" @click.prevent="remove(scope.$index)">删除</el-button></template></el-table-column>
//全局保存编辑的行号const globalIndex = ref(-1)

        编辑功能

 //编辑数据 先赋值到表单再弹窗const handleEdit = (row, index) => {const newObj = Object.assign({}, row)form = reactive(newObj)//把当前编辑的行号赋值给全局保存的行号globalIndex.value = indexconsole.log(globalIndex.value)dialogFormVisible.value = true}

        保存数据

 //保存数据,把数据插入到tableData中,并刷新页面,弹窗关闭const save = () => {if (globalIndex.value >= 0) {//表示编辑tableData.value[globalIndex.value] = form//还原回去globalIndex.value = -1} else {//新增tableData.value.push(form)}dialogFormVisible.value = false}

三、删除功能

        删除按钮

 <el-table-column label="操作"><template #default="scope"><el-button link type="primary" size="small" @click="handleEdit(scope.row,scope.$index)">编辑</el-button><el-button link type="danger" size="small" @click.prevent="remove(scope.$index)">删除</el-button></template></el-table-column>

        删除功能

//删除数据 从index位置开始,删除一行即可const remove = (index) => {tableData.value.splice(index, 1)}

四、查询数据

        查询按钮

<el-input style="width: 300px" placeholder="请输入名称..." v-model="name" clearable></el-input><el-button type="primary" @click="search" style="margin-left: 5px">查询数据</el-button>

        查询功能 

//查询数据const search = () =>{tableData.value = tableData.value.filter(v =>v.name.includes(name.value))}

        完整代码

<template><div style="padding: 10px"><el-input style="width: 300px" placeholder="请输入名称..." v-model="name" clearable></el-input><el-button type="primary" @click="search" style="margin-left: 5px">查询数据</el-button><el-button type="primary" @click="handleAdd">新增数据</el-button><div style="margin: 10px 0"><el-table :data="tableData" border style="width: 100%"><el-table-column prop="date" label="日期" width="180"/><el-table-column prop="name" label="姓名" width="180"/><el-table-column prop="address" label="地址"/><el-table-column label="操作"><template #default="scope"><el-button link type="primary" size="small" @click="handleEdit(scope.row,scope.$index)">编辑</el-button><el-button link type="danger" size="small" @click.prevent="remove(scope.$index)">删除</el-button></template></el-table-column></el-table></div><!--弹窗--><el-dialog v-model="dialogFormVisible" title="信息" width="40%"><el-form :model="form" label-width="100px" style="padding-right:30px "><el-form-item label="日期"><el-input v-model="form.date" autocomplete="off"/></el-form-item><el-form-item label="姓名"><el-input v-model="form.name" autocomplete="off"/></el-form-item><el-form-item label="地址"><el-input v-model="form.address" autocomplete="off"/></el-form-item></el-form><template #footer><span class="dialog-footer"><el-button @click="dialogFormVisible = false">取消</el-button><el-button type="primary" @click="save">确认</el-button></span></template></el-dialog></div>
</template>
<script setup>import {reactive, ref} from "vue";let tableData = ref([{date: '2016-05-03',name: 'Jarry',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-02',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},])let dialogFormVisible = ref(false)let form = reactive({})//全局保存编辑的行号const globalIndex = ref(-1)const name = ref('')//新增数据 设置新的空的绑值对象 打开弹窗const handleAdd = () => {form = reactive({})//打开弹窗dialogFormVisible.value = true}//保存数据,把数据插入到tableData中,并刷新页面,弹窗关闭const save = () => {if (globalIndex.value >= 0) {//表示编辑tableData.value[globalIndex.value] = form//还原回去globalIndex.value = -1} else {//新增tableData.value.push(form)}dialogFormVisible.value = false}//编辑数据 先赋值到表单再弹窗const handleEdit = (row, index) => {const newObj = Object.assign({}, row)form = reactive(newObj)//把当前编辑的行号赋值给全局保存的行号globalIndex.value = indexconsole.log(globalIndex.value)dialogFormVisible.value = true}//删除数据 从index位置开始,删除一行即可const remove = (index) => {tableData.value.splice(index, 1)}//查询数据const search = () =>{tableData.value = tableData.value.filter(v =>v.name.includes(name.value))}</script>


http://www.ppmy.cn/news/598278.html

相关文章

抖音seo矩阵系统源码|需求文档编译说明(三)

文章目录 批量剪辑工具技术源码框架 短视频SEO矩阵系统源码技术开发&#xff0c;遵循步骤抖音矩阵系统源码搭建功能 开发语言及开发环境 抖音账号矩阵系统源码搭建包括以下步骤 概要 ​​抖音seo源码&#xff0c;抖音矩阵系统如何使用源码二次开发&#xff0c;开发的功能有那些…

机器人自主移动的秘密:实际应用中,SLAM究竟是如何实现的?(二)SLAM与路径规划有什么关系?(三)

[转] http://www.leiphone.com/news/201612/FRzmoEI8Iud6CmT2.html http://www.leiphone.com/news/201612/lvDXqY82OGNqEiyl.html 导语&#xff1a;在实际应用时&#xff0c;SLAM究竟是如何实现的呢&#xff1f;在实现过程中有哪些难点&#xff1f; 雷锋网(公众号&#xff1a…

从理论到实践,机器人SLAM技术详解

由 Dora 于 星期四, 2017-05-18 12:00 发表 思岚科技专栏 作者&#xff1a;思岚科技 地图的四种表示方法 智能服务机器人正成为行业的风口浪尖&#xff0c;从清扫机器人开始&#xff0c;家庭陪伴机器人、送餐机器人等陆续进入公众视线。 在讨论这类机器人是否能解决实际问题…

服务机器人是如何实现自主定位导航的?

服务机器人想要自由行走&#xff0c;实现自主定位导航是关键&#xff0c;自主定位导航包括定位、建图与路径规划。SLAM作为机器人定位导航的核心技术&#xff0c;正不断获得行业内的重视&#xff0c;但SLAM只是完成定位与地图创建这两件事&#xff0c;它并不完全等同于自主定位…

代码随想录训练营day44| 518. 零钱兑换 II 377. 组合总和 Ⅳ

TOC 前言 代码随想录算法训练营day44 一、Leetcode 518. 零钱兑换 II 1.题目 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假…

【概述】基于SLAM的机器人的自主定位导航

背景介绍&#xff1a; 机器人的自主定位导航 正如图中所示&#xff0c;机器人自主定位导航技术中包括&#xff1a;定位和地图创建&#xff08;SLAM&#xff09;与路径规划和运动控制两个部分&#xff0c;而SLAM本身只是完成机器人的定位和地图创建&#xff0c;二者有所区别。 …

基于SLAM的机器人的自主定位导航

背景介绍&#xff1a; 机器人的自主定位导航 正如图中所示&#xff0c;机器人自主定位导航技术中包括&#xff1a;定位和地图创建&#xff08;SLAM&#xff09;与路径规划和运动控制两个部分&#xff0c;而SLAM本身只是完成机器人的定位和地图创建&#xff0c;二者有所区别。 …

激光导航系统初步一

背景介绍&#xff1a; 机器人的自主定位导航 正如图中所示&#xff0c;机器人自主定位导航技术中包括&#xff1a;定位和地图创建&#xff08;SLAM&#xff09;与路径规划和运动控制两个部分&#xff0c;而SLAM本身只是完成机器人的定位和地图创建&#xff0c;二者有所区别。 …