Vue_10_Spa_项目4次-CRUD+表单验证
2021/11/13 23:14:13
本文主要是介绍Vue_10_Spa_项目4次-CRUD+表单验证,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、表单验证
在分页条下面放入编辑组件el-dialog:
<!-- 编辑界面--> <el-dialog :title="title" :visible.sync="editFormVisible" width="30%" @click="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>
在script的date里面写入:
rules: { title: [{ required: true, message: '请输入文章标题', trigger: 'blur' /* trigger:触发器 */ /*blur失去焦点的时候触发 */ }, { /* 非空验证 */ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' } ], body: [{ required: true, message: '请输入文章内容', trigger: 'change' }] }
写入新增方法:
handleEdit(){//新增 this.editFormVisible =true; },
校验方法:
submitForm(formName) { //校验方法 this.$refs[formName].validate((valid) => { if (valid) { alert('submit!'); } else { console.log('error submit!!'); return false; } }); },
二、增删改功能实现
先把之前注释了的操作按钮放开:
<el-table-column align="center" 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="deleteUser(scope.$index, scope.row)">删除</el-button> </template> </el-table-column>
定义回显:
editForm: {/* 定义回显 */ title:'', body:'', id:0 },
以及编辑窗口 :
handleEdit() { //新增 this.editFormVisible = true; // console.log(row); if(row){ this.title = '编辑窗口'; this.editForm.id = row.id; this.editForm.title = row.title; this.editForm.body = row.body; }else{ this.title='新增窗口'; } },
实现点击修改也能弹出文本窗口有数据回显:
handleEdit(index,row) { //新增 this.clearData(); this.editFormVisible = true; // console.log(row); if(row){ this.title = '编辑窗口'; this.editForm.id = row.id; this.editForm.title = row.title; this.editForm.body = row.body; }else{ this.title='新增窗口'; } },
校验新增与修改:
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((resp) =>{ console.log(resp); this.clearData(); this.search(); }).catch(function(error) { console.log(error); }); } else { console.log('error submit!!'); return false; } }); },
注:图片在尾部
删除方法:
deleteUser(index,row){ this.editForm.id = row.id; let url=this.axios.urls.SYSTEM_ARTICLE_DEL;//删除 this.axios.post(url, this.editForm).then((resp) =>{ console.log(resp); this.clearData(); this.search(); }).catch(function(error) { console.log(error); }); },
注:图片在尾部
Articles.vue全代码:
<template> <div> <!-- 这是文章列表组件 --> <el-form :inline="true" :model="formInline" class="user-search"> <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" icon="el-icon-search" @click="search">搜索</el-button> <el-button size="small" type="primary" icon="el-icon-plus" @click="handleEdit()">添加</el-button> </el-form-item> </el-form> <!-- 列表--> <el-table size="small" :data="listData" highlight-current-row border element-loading-text="拼命加载中" style="width: 100%;"> <!-- <el-table-column align="center" type="selection" min-width="1"> </el-table-column> --> <el-table-column sortable prop="id" label="文章ID" min-width="1"> </el-table-column> <el-table-column sortable prop="title" label="文章标题" min-width="3"> </el-table-column> <el-table-column sortable prop="body" label="文章内容" min-width="5"> </el-table-column> <el-table-column align="center" 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="deleteUser(scope.$index, scope.row)">删除</el-button> </template> </el-table-column> </el-table> <!-- 分页条 --> <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="formInline.total"> </el-pagination> <!-- 编辑界面--> <el-dialog :title="title" :visible.sync="editFormVisible" width="30%" @click="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: [], title: '', editFormVisible: false, formInline: { page: 1, rows: 10, total: 0, title: '' }, editForm: {/* 定义回显 */ title:'', body:'', id:0 }, rules: { title: [{ required: true, message: '请输入文章标题', trigger: 'blur' /* trigger:触发器 */ /*blur失去焦点的时候触发 */ }, { /* 非空验证 */ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' } ], body: [{ required: true, message: '请输入文章内容', trigger: 'change' }] } } }, methods: { 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(); }, clearData(){//还原窗口,清空数据 this.editFormVisible = false; this.title = ''; this.editForm.id = 0; this.editForm.title = ''; this.editForm.body = ''; }, closeDialog() { this.clearData(); }, handleEdit(index,row) { //新增 this.clearData(); this.editFormVisible = true; // console.log(row); if(row){ this.title = '编辑窗口'; this.editForm.id = row.id; this.editForm.title = row.title; this.editForm.body = row.body; }else{ this.title='新增窗口'; } }, deleteUser(index,row){ this.editForm.id = row.id; let url=this.axios.urls.SYSTEM_ARTICLE_DEL;//删除 this.axios.post(url, this.editForm).then((resp) =>{ console.log(resp); this.clearData(); this.search(); }).catch(function(error) { console.log(error); }); }, 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((resp) =>{ console.log(resp); this.clearData(); this.search(); }).catch(function(error) { console.log(error); }); } else { console.log('error submit!!'); return false; } }); }, doSearch(params) { let url = this.axios.urls.SYSTEM_ARTICLE_LIST; this.axios.post(url, params).then((response) => { console.log(response); this.listData = response.data.result; this.formInline.total = response.data.pageBean.total; }).catch(function(x) { console.log(error); }); }, search() { this.doSearch(this.formInline); } }, created() { this.doSearch({}); } } </script> <style> </style>
ok,又是学废了的一天!
这篇关于Vue_10_Spa_项目4次-CRUD+表单验证的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01Vue.js 是什么-icode9专业技术文章分享
- 2024-11-01Vue3入门教程:从零开始搭建第一个Vue3项目
- 2024-11-01详解vueRouter4基础教程
- 2024-11-01Vuex4课程:初学者的完整入门指南
- 2024-10-31Vue3课程:新手入门到初级掌握
- 2024-10-31Vue3课程:新手入门到初级应用详解
- 2024-10-31VueRouter4课程:新手入门与实战指南
- 2024-10-31Vuex4学习:从入门到初级实战教程
- 2024-10-31Vue3教程:新手入门与基础实战
- 2024-10-31Vue教程:新手快速入门指南