SPA项目开发之表单验证与增删改功能实现

2024-01-13 21:18

本文主要是介绍SPA项目开发之表单验证与增删改功能实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SPA项目开发之表单验证与增删改功能实现

  • 1. 前言
  • 2. 表单验证
  • 3. 增删改功能
  • 4. 效果实现

1. 前言

续前篇SPA项目开发之动态树+数据表格+分页,对表格数据进行一个增删改功能。

2. 表单验证

Form组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,
并将Form-Item的prop属性设置为需校验的字段名即可

<!-- 编辑窗体 --><el-dialog :title="title" :visible.sync="editFormVisible" width="30%" @before-close="closeDialog"><el-form label-width="120px" :model="editForm" :rules="rules" ref="editForm"><el-form-item label="文章标题" prop="title"><el-input size="small" v-model="editForm.title" auto-complete="off" placeholder="请输入文章标题"></el-input></el-form-item><el-form-item label="文章内容" prop="body"><el-input size="small" v-model="editForm.body" auto-complete="off" placeholder="请输入文章内容"></el-input></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button size="small" @click="closeDialog">取消</el-button><el-button size="small" type="primary" class="title" @click="submitForm('editForm')">保存</el-button></div></el-dialog>

rules验证

rules: {title: [{required: true,message: '请输入文章标题',trigger: 'blur'},{min: 3,max: 5,message: '长度在 3 到 5 个字符',trigger: 'blur'}],body: [{required: true,message: '请输入文章内容',trigger: 'blur'}]}

3. 增删改功能

先将按钮显示到界面

<template><div><!-- 搜索框 --><el-form :inline="true" :model="formInline"><el-form-item label="搜索:"><el-input size="small" v-model="formInline.title" placeholder="请输入文章标题"></el-input></el-form-item><el-form-item><el-button size="small" type="primary" @click="search">查询</el-button><el-button size="small" type="primary" @click="handleAdd">新增</el-button></el-form-item></el-form><!-- 表格数据 --><el-table size="small" :data="listData" style="width: 100%"><el-table-column align="center" type="selection" min-width="1"></el-table-column><el-table-column prop="id" label="文章id" min-width="1"></el-table-column><el-table-column prop="title" label="文章标题" min-width="2"></el-table-column><el-table-column prop="body" label="文章内容" min-width="3"></el-table-column><el-table-column label="操作" min-width="2"><template slot-scope="scope"><el-button size="mini"  @click="handleEdit(scope.$index, scope.row)">编辑</el-button><el-button size="mini"  type="danger" @click="handleDelete(scope.$index, scope.row)">删除</el-button></template></el-table-column></el-table><!-- 分页条current-page=传输当前页page-sizes=传输的页码--><el-pagination style="margin-top: 20px;" @size-change="handleSizeChange" @current-change="handleCurrentChange":current-page="formInline.page" :page-sizes="[10, 20, 30, 50]" :page-size="100" layout="total, sizes, prev, pager, next, jumper":total="total"></el-pagination><!-- 编辑窗体 --><el-dialog :title="title" :visible.sync="editFormVisible" width="30%" @before-close="closeDialog"><el-form label-width="120px" :model="editForm" :rules="rules" ref="editForm"><el-form-item label="文章标题" prop="title"><el-input size="small" v-model="editForm.title" auto-complete="off" placeholder="请输入文章标题"></el-input></el-form-item><el-form-item label="文章内容" prop="body"><el-input size="small" v-model="editForm.body" auto-complete="off" placeholder="请输入文章内容"></el-input></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button size="small" @click="closeDialog">取消</el-button><el-button size="small" type="primary" class="title" @click="submitForm('editForm')">保存</el-button></div></el-dialog></div>
</template>

界面样式
在这里插入图片描述

书写方法
新增,打开窗体

/* 新增,仅限打开窗体 */handleAdd() {this.clearData();this.editFormVisible = true;this.title = "新增文章"},

将当前所需编辑打开显示在窗体

/* 修改 */handleEdit(index,row){this.editFormVisible = true;this.title = "编辑文章";this.editForm.id=row.id;this.editForm.title=row.title;this.editForm.body=row.body;},

清空窗体数据

/* 清空数据 */clearData(){this.editFormVisible = false;this.title = "";this.editForm.id=0;this.editForm.title='';this.editForm.body='';}

新增与编辑

submitForm(formName) {/* 表单验证 */this.$refs[formName].validate((valid) => {if (valid) {//移交后台数据let url;/* 判断调用新增或修改方法 */if(this.editForm.id == 0){url = this.axios.urls.SYSTEM_ARTICLE_ADD;}else{url = this.axios.urls.SYSTEM_ARTICLE_EDIT;}this.axios.post(url,this.editForm).then((response) => {console.log(response);//操作成功后关闭框,并自动刷新this.clearData();this.search();}).catch(function(error) {console.log(error);});		} else {console.log('error submit!!');return false;}});}

删除方法

/* 删除 */handleDelete(index,row){let url = this.axios.urls.SYSTEM_ARTICLE_DELthis.axios.post(url, {id:row.id}).then((response) => {console.log(response);alert('删除成功');//操作成功后关闭框,并自动刷新this.clearData();this.search();}).catch(function(error) {console.log(error);});}

页面完整代码块

<template><div><!-- 搜索框 --><el-form :inline="true" :model="formInline"><el-form-item label="搜索:"><el-input size="small" v-model="formInline.title" placeholder="请输入文章标题"></el-input></el-form-item><el-form-item><el-button size="small" type="primary" @click="search">查询</el-button><el-button size="small" type="primary" @click="handleAdd">新增</el-button></el-form-item></el-form><!-- 表格数据 --><el-table size="small" :data="listData" style="width: 100%"><el-table-column align="center" type="selection" min-width="1"></el-table-column><el-table-column prop="id" label="文章id" min-width="1"></el-table-column><el-table-column prop="title" label="文章标题" min-width="2"></el-table-column><el-table-column prop="body" label="文章内容" min-width="3"></el-table-column><el-table-column label="操作" min-width="2"><template slot-scope="scope"><el-button size="mini"  @click="handleEdit(scope.$index, scope.row)">编辑</el-button><el-button size="mini"  type="danger" @click="handleDelete(scope.$index, scope.row)">删除</el-button></template></el-table-column></el-table><!-- 分页条current-page=传输当前页page-sizes=传输的页码--><el-pagination style="margin-top: 20px;" @size-change="handleSizeChange" @current-change="handleCurrentChange":current-page="formInline.page" :page-sizes="[10, 20, 30, 50]" :page-size="100" layout="total, sizes, prev, pager, next, jumper":total="total"></el-pagination><!-- 编辑窗体 --><el-dialog :title="title" :visible.sync="editFormVisible" width="30%" @before-close="closeDialog"><el-form label-width="120px" :model="editForm" :rules="rules" ref="editForm"><el-form-item label="文章标题" prop="title"><el-input size="small" v-model="editForm.title" auto-complete="off" placeholder="请输入文章标题"></el-input></el-form-item><el-form-item label="文章内容" prop="body"><el-input size="small" v-model="editForm.body" auto-complete="off" placeholder="请输入文章内容"></el-input></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button size="small" @click="closeDialog">取消</el-button><el-button size="small" type="primary" class="title" @click="submitForm('editForm')">保存</el-button></div></el-dialog></div>
</template><script>export default {data() {return {listData: [],formInline: {page: 1,rows: 10,title: ''},total: 0,editForm: {id: 0,title: '',body: ''},/* 是否打开窗体,默认关闭 */editFormVisible: false,title: '',rules: {title: [{required: true,message: '请输入文章标题',trigger: 'blur'},{min: 3,max: 5,message: '长度在 3 到 5 个字符',trigger: 'blur'}],body: [{required: true,message: '请输入文章内容',trigger: 'blur'}]}};},methods: {doSearch(params) {let url = this.axios.urls.SYSTEM_ARTICLE_LISTthis.axios.post(url, params).then((response) => {console.log(response);this.listData = response.data.result;this.total = response.data.pageBean.total;}).catch(function(error) {console.log(error);});},handleSizeChange(rows) {console.log("页大小发生改变" + rows)this.formInline.page = 1;this.formInline.rows = rows;this.search();},handleCurrentChange(page) {console.log("当前页发生改变" + page)this.formInline.page = page;this.search();},search() {this.doSearch(this.formInline);},closeDialog() {},submitForm(formName) {/* 表单验证 */this.$refs[formName].validate((valid) => {if (valid) {//移交后台数据let url;/* 判断调用新增或修改方法 */if(this.editForm.id == 0){url = this.axios.urls.SYSTEM_ARTICLE_ADD;}else{url = this.axios.urls.SYSTEM_ARTICLE_EDIT;}this.axios.post(url,this.editForm).then((response) => {console.log(response);//操作成功后关闭框,并自动刷新this.clearData();	this.search();}).catch(function(error) {console.log(error);});		} else {console.log('error submit!!');return false;}});},/* 新增 */handleAdd() {this.clearData();this.editFormVisible = true;this.title = "新增文章"},/* 修改 */handleEdit(index,row){this.editFormVisible = true;this.title = "编辑文章";this.editForm.id=row.id;this.editForm.title=row.title;this.editForm.body=row.body;},/* 删除 */handleDelete(index,row){let url = this.axios.urls.SYSTEM_ARTICLE_DELthis.axios.post(url, {id:row.id}).then((response) => {console.log(response);alert('删除成功');//操作成功后关闭框,并自动刷新this.clearData();this.search();}).catch(function(error) {console.log(error);});},/* 清空数据 */clearData(){this.editFormVisible = false;this.title = "";this.editForm.id=0;this.editForm.title='';this.editForm.body='';}},created() {this.doSearch({});}}
</script><style>
</style>

4. 效果实现

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

这篇关于SPA项目开发之表单验证与增删改功能实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/602801

相关文章

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被