表单验证
Form组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,
并将Form-Item的prop属性设置为需校验的字段名即可
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>
表单校验:
rules: {
title: [{
required: true,
message: '请输入文章标题',
//失去焦点触发
trigger: 'blur'
},
{
min: 3,
max: 5,
message: '文章标题长度在 3 到 5 个字符',
trigger: 'blur'
}
],
body: [{
required: true,
message: '请输入文章内容',
trigger: 'blur'
}]
}
CUD
新增和修改
新增按钮:
<el-button size="small" type="primary" icon="el-icon-plus" @click="handleAdd">新增</el-button>
修改按钮:
<el-button size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
在执行修改方法的时候我们要传入俩个参数(index和row),而我们列表的值可以通过row来拿。
新增和修改都需要使用表单,而区别在于是否数据回显(也就是id是否为0),而我们要使用这俩个方法是只要改变url的,所以可以使用if判断。
表单提交方法:
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;
}
});
}
但是每当我们使用增加或者修改之后,表单不会自动关闭和自动刷新,所以我们还要写一个把表单关闭和清空的方法,然后在新增或修改完进行使用;
清空及关闭数据表格的方法
clearData() {
this.editFormVisible = false;
this.title = '';
this.editForm.id = 0;
this.editForm.title = '';
this.editForm.body = '';
}
删除
按钮:
<el-button size="mini" type="danger" @click="deleteUser(scope.$index, scope.row)">删除</el-button>
方法
deleteUser(index, row) {
this.$confirm('此操作将永久删除该文章, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let url = this.axios.urls.SYSTEM_ARTICLE_DEL;
this.axios.post(url, {id:row.id}).then((response) => {
console.log(response);
this.search();
}).catch(function(error) {
console.log(error);
});
this.$message({
type: 'success',
message: '删除成功!',
});
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
});
}
增加
修改
删除