本文主要是介绍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项目开发之表单验证与增删改功能实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!