Vue+ElementUI纯前端技术实现对表格数据的增删改查

页面展示效果

一、页面结构

分为三个部分 head body 以及script

一般我个人是在head中引入一些组件库 , 还有一些样式 ; style 也可以定义在其中, 通过id选择器 ,还有类选择器进行 定义

script 标签体中引入的是一些常见的组件库

LIink 标签体中引入的是一些CSS样式

body中一般是书写页面的结构 , 也就是定义一个DIV , 然后在其中书写书写页面中的各种元素

最后就是script 这里首先通过ID选中DIV , new Vue({ }); 通过el 选中id , data 中书写需要的数据 , methods 里面书写函数方法 , 也就是各种事件

下面是一些简单的html结构 :

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><!--这是引入的组件库--><script src="js/vue.js"></script><!--这是引入的样式--><link rel="stylesheet" href="fonts/element-icons.ttf"></head>
<body><!--这里一般书写页面的结构-->
<div id="app"><h1>我是首页中的标题</h1><button @click="dianji">点点我</button>
</div>
</body><script>new Vue({el:"#app",data:{},methods:{dianji:function (index) {alert('如果不是为了装逼 ,那么一切将毫无意义!');}}});
</script>
</html>

二、涉及到的技术知识

1、页面布局

<div id="one" align="center">              </div>

2、导航菜单

<el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect" align="center">//这是子菜单选项
<el-menu-item index="1"><font color="#000000">首页</font></el-menu-item>
</el-menu>

3、表单

<el-form align="center">    </el-form>

4、Button按钮

<el-button type="primary" @click.native.prevent="update" :loading="addLoading">确定</el-button>

5、Pagination分页

<el-pagination layout="prev,pager,next" :total="50">                  </el-pagination>

6、弹框

<el-dialog title="编辑" :visible.sync="dialogVisible" width="30%" :before-close="handleClose" append-to-body="true"></el-dialog>

7、V-model 展示数据

  <el-input v-model="form.id" autocomplete="off"></el-input>

8、表格中展示数据

table 中展示的数组中的整体数据 用的是:data

column展示的每一个集合中某一点属性 用的是prop

<el-table :data="newsList" style="width:100%"  align="center"><el-table-column prop="id" label="公司代号" width="180"></el-table-column>
</el-table>

9、最难点

按钮的功能是最难实现的部分 , 就是一些事件执行的函数功能 , 也就是一些算法 ;
这一部分在第五大项集中进行讲解

三 、如何去书写一个页面结构

首先 , 最外层肯定是一个DIV , 然后DIV中去书写一个el -form , 然后用el-row去分很多行 , 每一行中去书写自己需要的内容 ,可以是图片 , 也可以是按钮 , 也可以是一段文字 ,然后呢书写结构以后 ,样式 事件 , 都是在标签体中去进行定义 ;

四、易错点

1、首先必须引入组件库 , 以及常用的样式

你创建一个文件夹 ,然后把这些 后缀名为js css的文件给导入进去

2、你的html页面必须直接创建在根目录文件下 ,不要自己手动创建一个文件夹 ,然后在里面进行书写 ,不然你的组建组不起作用

3、弹框也是非常的费劲

五、难点

最难的点永远都是算法的知识 , 这一部分知识 你会就是会 ,不会给你再多时间也没用 , 就是增加、删除、修改、查询几个按钮功能的实现

1、弹框部分

1.1 这一段是就是 ,就是你执行按钮操作之前出现的提示信息 , 就是相当于询问你是否确定这样做

记住关键字this.$confirm就行,格式自己复制粘贴就行

this.$confirm('确认进行添加','是否继续?','提示',{confirmButtonText:'确定',confirmButtonText:'取消',
}

1.2 下面这一段是操作完成之后的提示信息 ; 提示你是执行成功了还是没有

记住关键字this.$message就行 ,格式自己复制粘贴就行

this.$message({type: 'success',message:'添加成功',
})

1.3 这是编辑的弹框部分

<el-dialog title="编辑" :visible.sync="dialogFormVisible" width="30%" :before-close="handleClose" append-to-body="true"><!--这就是一个表格--><el-form :model="form" ><!--公司ID--><el-form-item label="公司ID"><el-input v-model="form.id" autocomplete="off"></el-input></el-form-item><!--公司名称--><el-form-item label="公司名称"><el-input v-model="form.name" autocomplete="off"></el-input></el-form-item><!--公司地址--><el-form-item label="公司地址"><el-input v-model="form.adress" autocomplete="off"></el-input></el-form-item></el-form><!--确定, 取消  按钮--><div><el-button type="primary" @click.native.prevent="editSubForm" :loading="addLoading">确定</el-button><el-button @click.native.prevent="dialogFormVisible=false">取消</el-button></div>
</el-dialog>

2、方法执行流程

adddetail:function(){最开始执行的部分 ,一般书写this.$confirm以及你要执行的函数功能!}).then(()=>{接下来执行的部分一般书写的this.$message也就是执行是否成功的提示信息!})}).catch((err)=>{这是出错时候需要执行的部分一般也是取消执行出现的弹窗信息   })})},

3、增加数据的实现过程解读

这段代表向newList这个数组中添加元素

newList是我们写死的数据 , addDetail是我们定义的一个空数组 , 然后输入的ID对应于ID ,其余同理 , 添加到写死的数组中, 这样数据就展示出来了 ;

this.newsList.push({id:this.addDetail.id,name:this.addDetail.name,adress:this.addDetail.adress,
}),

4、删除数据的实现过程解读

只用一行就代码就实现了删除 this.newsList.splice(index,1)

index代表的是当前位置所处的索引 , 1 代表删除一条数据 ,合起来也就是删除一条数据

splice是js中删除数组中元素的方法 ;

this.newsList.splice(index,1)
this.$message({type: 'success',message:'删除成功',
})

5、编辑数据的实现过程解读

首先当你点击编辑按钮的时候 , 会弹出一个弹框 , 获取的是当前你点击按钮的那行数据并进行展示 , 你可以对他进行修改 , 然后点击保存数据数据就会发生改变

所以我们必须先进行一个绑定一个点击事件 , 当你点击编辑按钮的时候弹框就出现

这里边有一个属性 :visible.sync=“dialogFormVisible” 我们对其进行赋值为false 意思是平常不显示 ,

当触发修改的点击事件的石头 , 我们就将这个变量变为true 意思是显示出来

<el-dialog title="编辑" :visible.sync="dialogFormVisible" width="30%" :before-close="handleClose" append-to-body="true">

修改的方法

首先我们根据索引 , 获取当前的这条数据 ,

this.form=JSON.parse(JSON.stringify(this.newsList))[index];可以理解为用来拷贝数据的editdetail:function (index,rows) {this.dialogFormVisible=truethis.selected=index;this.form=JSON.parse(JSON.stringify(this.newsList))[index];},

保存修改的方法

Vue.set(this.newsList,this.selected,this.form); 这个是用来赋值用的this.getShowData(this.newsList); 这个是我们书写的一个展示数据的方法this.dialogFormVisible=false; 再次让弹窗进行隐藏editSubForm:function(){Vue.set(this.newsList,this.selected,this.form);this.getShowData(this.newsList);this.dialogFormVisible=false;
},

展示数据的方法

/*获取需要渲染到页面中的数据*/
getShowData:function (arr) {this.clonenewsList=JSON.parse(JSON.stringify(arr));
},

6、查询数据的解读过程

查询完成以后展示数据即可

对需要进行查询的数据书写一个自己自定义的查询条件

searchFn:function (e) {var key=e.target.value;/*查询公司ID*/
if(key){var serchArray=[];this.newsList.forEach(function (item) {if(item.id.indexOf(key)>-1){serchArray.push(item);}/*name查询*/if(item.name.indexOf(key)>-1){serchArray.push(item);}/*地址查询*/if(item.adress.indexOf(key)>-1){serchArray.push(item);}});this.getShowData1(serchArray);
}else{this.getShowData1(this.newsList);
}
}

六、完整页面代码

①首页部分

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head><meta charset="UTF-8"><title>帝国企业管理系统</title><!--引用的一些样式--><link rel="stylesheet" href="js/reset.css" type="text/css"/><link rel="stylesheet" href="css/elementUi.css" type="text/css"/><link rel="stylesheet" href="css/styles.css"><link rel="stylesheet" href="css/base.css" type="text/css"/><link rel="stylesheet" href="css/main.css" type="text/css"/><!--引入的字体样式--><link rel="stylesheet" href="fonts/element-icons.woff"><link rel="stylesheet" href="fonts/element-icons.ttf"><link rel="stylesheet" href="fonts/ionicons.svg"><link rel="stylesheet" href="fonts/ionicons.ttf"><link rel="stylesheet" href="fonts/ionicons.woff"><!--引用的vue 和elementui组建库--><script src="js/vue.js"></script><script src="js/elementUi.js"></script></head>
<body><div id="one"><!--第一行数据--><el-form align="center"><font size="50px" color="#8b0000"> 张氏帝国企业管理系统首页</font><el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect" align="center"><el-menu-item index="1"><font color="#000000">首页</font></el-menu-item><el-submenu index="2"><template slot="title"><font color="#000000">企业管理</font></template><el-menu-item index="2-1"><el-link type="success"><a href="https://alibaba.com" color="yellow">人才培养</a></el-link></el-menu-item><el-menu-item index="2-2"><el-link><a href="https://baidu.com" color="blue">企业文化</a></el-link></el-menu-item><el-menu-item index="2-3"><el-link><a href="List_form.html" color="blue">企业查看</a></el-link></el-menu-item></el-submenu><el-menu-item index="4"><font color="#000000">打卡管理</font></el-menu-item><el-menu-item index="4"><font color="#000000">求职</font></el-menu-item><el-menu-item index="4"><font color="#000000">学习</font></el-menu-item><el-menu-item index="4"><font color="#000000">讨论区</font></el-menu-item><el-menu-item index="4"><font color="#000000">发现</font></el-menu-item><el-menu-item index="4"><font color="#000000">试题</font></el-menu-item><el-menu-item index="4"><font color="#000000">搜索</font></el-menu-item><el-menu-item index="4"><font color="#000000">地图</font></el-menu-item><el-menu-item index="4"><font color="#000000">文库</font></el-menu-item><el-menu-item index="4"><font color="#000000">帮助</font></el-menu-item></el-menu><img src="data:images/bg_jsh.png" id="bg"></el-form><br></div>
</body><script>new Vue({el:"#one",})
</script></html>

②企业查看详情部分

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head><meta charset="UTF-8"><title>ICBC详情页</title><!--引用的一些样式--><link rel="stylesheet" href="js/reset.css" type="text/css"/><link rel="stylesheet" href="css/elementUi.css" type="text/css"/><link rel="stylesheet" href="css/styles.css"><link rel="stylesheet" href="css/base.css" type="text/css"/><link rel="stylesheet" href="css/main.css" type="text/css"/><link rel="stylesheet" href="css/bootstrap.min.css"><!--引用的vue 和elementui组建库--><script src="js/vue.js"></script><script src="js/elementUi.js"></script><script src="js/jquery.min.js"></script><!--这是样式--><style>#tianjia{}.title{padding:10px;border-bottom: 1px solid #00ffff;}.mask{width:300px;height:250px;background: rgba(255,255,255,1);position:absolute;left:0;top:0;right:0;bottom:0;margin:auto;z-index:47;border-radius: 5px;}#mask{background:rgba(0,0,0,.5);width:100%;height:100%;position:fixed;z-index:4;top:0;left:0;}</style></head>
<body><div id="one" align="center"><el-form align="center"><!--第一行  标题--><el-row><font size="50px" color="#8b0000">张氏帝国企业管理系统详情页</font></el-row><!--这是新增的查询功能--><input type="text" placeholder="请输入要查询的条件" style="width:45%" v-model="search" v-on:input="searchFn"><!--第二行  添加按钮  --><div id="tianjia"><input type="text"  name="id"  v-model="addDetail.id"  value="" placeholder="请输入公司代号" style="width: 13%;"><input type="text"  name="name" v-model="addDetail.name" value="" placeholder="请输入公司名称" style="width: 13%;"><input type="text"  name="adress" v-model="addDetail.adress" value="" placeholder="请输入公司地址" style="width: 13%;"><el-button type="success" size="big" round="true"  @click.native.prevent="adddetail()"><font color="#f0f8ff" size="2px">添加</font></el-button></div><!--第三行   展示数据区域--><el-form ><el-table :data="newsList" style="width:100%"  align="center"><el-table-column prop="id" label="公司代号" width="180"></el-table-column><el-table-column prop="name" label="公司名称" width="180"></el-table-column><el-table-column prop="adress" label="公司地址" width="180"></el-table-column><!--增加 操作 菜单 以及旗下的子菜单 增加 修改--><el-table-column  label="操作" width="150"><template slot-scope="scope"><!--修改按钮--><el-button @click.native.prevent="editdetail(scope.$index,newsList)"  type="info" size="small">修改</el-button><!--删除按钮--><el-button @click.native.prevent="deletedetail(scope.$index,newsList)" type="danger" size="small">删除</el-button></template></el-table-column></el-table></el-form><!--编辑弹框部分--><div><el-dialog title="编辑" :visible.sync="dialogFormVisible" width="30%" :before-close="handleClose" append-to-body="true"><!--这就是一个表格--><el-form :model="form" ><!--公司ID--><el-form-item label="公司ID"><el-input v-model="form.id" autocomplete="off"></el-input></el-form-item><!--公司名称--><el-form-item label="公司名称"><el-input v-model="form.name" autocomplete="off"></el-input></el-form-item><!--公司地址--><el-form-item label="公司地址"><el-input v-model="form.adress" autocomplete="off"></el-input></el-form-item></el-form><!--确定, 取消  按钮--><div><el-button type="primary" @click.native.prevent="editSubForm" :loading="addLoading">确定</el-button><el-button @click.native.prevent="dialogFormVisible=false">取消</el-button></div></el-dialog></div><!--分页部分--><div class="block"><span class="demostration"></span><el-pagination @size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="currentPage":page-sizes="[10,20,30,40]":page-size="100"layout="total,sizes,prev,pager,next,jumper":total="100"></el-pagination></div></el-form>
</div></body><script>var _index;new Vue({el:"#one",/*定义的数据*/data:{clonenewsList:[],checked:true,tableform:[],formLabeWidth:'120px',dialogFormVisible:false,editForm:[],selectList:{},search:"",currentPage:1,addDetail:{},editList:false,editDetail:{},radio:1,form:{id:"",name:"",adress:""},/*表格中写死的数据*/newsList:[{id:"001",name:"阿里巴巴",adress:"杭州湖畔花园",},{id:"002",name:"工银科技",adress:"北京朝阳区天源祥泰大厦"},{id:"003",name:"IBM",adress:"海淀区中关村软件园"},{id:"004",name:"华为",adress:"北京海淀区北研所"},{id:"005",name:"网龙",adress:"福州长乐湖"},{id:"006",name:"BOSS直聘",adress:"北京朝阳区太阳宫"},{id:"007",name:"滴滴",adress:"北京海淀区上地"},{id:"008",name:"中国软件",adress:"北京海淀区北下关"},{id:"009",name:"小米",adress:"北京海淀区清河"},{id:"010",name:"跟谁学",adress:"北京海淀区中关村"},{id:"011",name:"美团",adress:"北京海淀区中关村"},{id:"012",name:"今日头条",adress:"北京海淀区清河"},]/*写死的数据结束*/},methods:{/*添加方法*/adddetail:function(){this.$confirm('确认进行添加','是否继续?','提示',{confirmButtonText:'确定',confirmButtonText:'取消',}).then(()=>{this.newsList.push({id:this.addDetail.id,name:this.addDetail.name,adress:this.addDetail.adress,}),/*成功添加之后的提示信息*/this.$message({type: 'success',message:'添加成功',})}).catch((err)=>{this.$message({type:'error',message:err})})},/*删除方法*/deletedetail:function (index, rows) {this.$confirm('此操作将删除数据,','是否继续?','提示',{confirmButtonText:'确定',confirmButtonText:'取消',type:'warning'}).then(()=>{this.newsList.splice(index,1)this.$message({type: 'success',message:'删除成功',})}).catch((err) =>{this.$message({type:'error',message:err})})},/*修改方法*/editdetail:function (index,rows) {this.dialogFormVisible=truethis.selected=index;this.form=JSON.parse(JSON.stringify(this.newsList))[index];},/*提交修改*/editSubForm:function(){Vue.set(this.newsList,this.selected,this.form);this.getShowData(this.newsList);this.dialogFormVisible=false;},/*查询方法*/searchFn:function (e) {var key=e.target.value;/*查询公司ID*/if(key){var serchArray=[];this.newsList.forEach(function (item) {if(item.id.indexOf(key)>-1){serchArray.push(item);}/*name查询*/if(item.name.indexOf(key)>-1){serchArray.push(item);}/*地址查询*/if(item.adress.indexOf(key)>-1){serchArray.push(item);}});this.getShowData1(serchArray);}else{this.getShowData1(this.newsList);}},/*获取需要渲染到页面中的数据*/getShowData:function (arr) {this.clonenewsList=JSON.parse(JSON.stringify(arr));},/*专门为查询写的渲染数据*/getShowData1:function (arr) {this.newsList=JSON.parse(JSON.stringify(arr));},/*分页功能代码*/handleSizeChange(val){console.log(`每页${val}条`);},handleCurrentChange(val){console.log(`当前页:$(val)`);},}})
</script></html>

代码所缺JS文件 以及图片都可以到我的github中去下载
https://github.com/zhagnshuai19951021/My-Project.git.

Vue+ElementUI纯前端技术实现对表格数据的增删改查相关推荐

  1. 从零开始的VUE项目-03(数据的增删改查)

    代码svn地址 (用户名:liu,密码;123) 这一篇中,我们要实现的基本就是这么个东西 这个页面就是我们创建的DataManagement.vue页面,我们的主要代码将写在这里面,这个表格我们将用 ...

  2. Node+Vue实现对数据的增删改查

      这是一个用于学生签到的小例子.主要用到的技术有node和Vue:用node搭建小型服务器,配置好路由,前端用vue写好组件,数据库采用的是mysql. 文件结构如下:   主要是功能是对数据的增删 ...

  3. vue访问php时做增删改查,node连接mysql生成接口,vue通过接口实现数据的增删改查(一)...

    武汉加油遇新是直朋能到分览支体调!中国加油! 想必许多干用是处框它观有理近货框万理架是察放是近学vue的小伙伴想连接数据库,对数据进行增删改查吧,奈何不知道怎么实现.作为一路踩坑的我,为大家带来我的一 ...

  4. vue修改数据连接数据库_vue实现数据的增删改查

    在管理员的一些后台页面里,个人中心里的数据列表里,都会有对这些数据进行增删改查的操作.比如在管理员后台的用户列表里,我们可以录入新用户的信息,也可以对既有的用户信息进行修改.在vue中,我们更应该专注 ...

  5. vue实现对数据的增删改查(CURD)

    vue实现对数据的增删改查(CURD) 导语: 网上看到一个写的比较好的学习文章,转载分享一下 在管理员的一些后台页面里,个人中心里的数据列表里,都会有对这些数据进行增删改查的操作.比如在管理员后台的 ...

  6. JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能

    JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能 JQuery Easyui/TopJUI 用JS创建数据表格并实现增删改查功能 html <table id=&q ...

  7. 前端VUE【实战】—— antd tree树形控件进行增删改查父子节点

    个人博客:前端江太公 前言 antd 对树形控件目录进行增删改查 最近在用Ant Design写一个后台,遇到的需求就是实现一个可动态增减和编辑子节点的Tree. 实现的效果如下: 可以增加父子节点 ...

  8. SpringBoot的开发(3)--前端页面的搭建、前端页面的编写、分页和增删改查功能的实现...

    前端页面的搭建 首先我们在resources包下新建一个文件夹static,SpringBoot默认会去把static包下的文件做一个路由 然后在static包下新建一个HTML File类型的文件, ...

  9. mock模拟的数据能增删改查吗_如何在Vue中使用Mockjs模拟数据的增删查改

    之前一直使用json-server在前端开发时,搭建本地数据接口测试,但有时又需要将做好的项目放于 github page上做项目演示.在本地时,json server很好使用,但一旦放在github ...

最新文章

  1. java super()方法_Java super关键字的使用方法详解
  2. 添加虚拟主机 php,给 phpstudy 添加虚拟主机
  3. 2012服务器系统关闭网络共享,提供网络服务的前提,Windows Server 2012如何更改高级共享设置...
  4. 【转】extern “C“以及__declspec(dllexport) 讲解和def文件dll导出方法
  5. vue-cli脚手架下,assets中的图片路径使用变量?
  6. iQOO Neo5搭载66W超快闪充:30分钟回血!
  7. css编写加载页面动画效果
  8. Java Web文件下载
  9. java布尔三目运算符_Java关系运算符,boolean运算符,三元运算符
  10. 机器学习实战(十一)FP-growth算法
  11. 新会计准则与旧版内容的不同比较
  12. MTK机型刷机授权 固件转换 分区提取 nv备份 恢复工具教程
  13. 四位数的可逆素数c语言,求四位的可逆素数。可逆素数指:一个素数将其各位数字的顺序倒过来构成的反序数也是素...
  14. 金山云郝明非:一年上线整套流媒体处理服务
  15. 痘印服务器维护,脸上有痘印怎么弄才能消除
  16. 抖音超级火的评测小程序独立源码内附详细教程文本
  17. 放大电路中耦合电容的选择
  18. 二维笛卡尔坐标系下的角的概念
  19. 详细介绍机器学习中的交叉验证方法
  20. 组织架构树形结构布局

热门文章

  1. MATLAB实战系列(三十)-MATLAB之M码正弦稳态电路建模仿真原理
  2. 计算机外观类型,知道你的笔记本电脑是什么类型的吗?五大类型派对号入座
  3. hive解决数据倾斜问题_八种解决 Spark 数据倾斜的方法
  4. Python入门100题 | 第008题
  5. 力扣(leetcode)-1. 两数之和
  6. Cracer渗透视频课程学习笔记——信息搜集
  7. 关于安装torch、torchvision包的问题
  8. 来自过气科技网红的2020年终总结
  9. Example of BeanFactoryAware in Spring--转
  10. Garbage Collection Optimization for High-Throughput and Low-Latency Java Applications--转载