SPA项目开发之CRUD增删改查+表单验证(2)

// 设置窗体不可见

editFormVisible: false,

formInline: {

page: 1,

rows: 10,

total: 0,

title: ‘’,

},

// 定义editForm   json对象

editForm: {

},

}

},

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();

},

// 定义窗体的关闭事件

closeDialog() {

},

// 定义窗体开启事件

handleEdit() {

this.editFormVisible = true;

},

doSearch(param) {

// 拿到文章列表的地址

let url = this.axios.urls.SYSTEM_ARTICLE_LIST;

this.axios.post(url, param).then((resp) => {

console.log(resp);

// 钩子函数可以对定义的变量进行修改

this.listData = resp.data.result;

this.formInLine.total = resp.data.pageBean.total;

}).catch(function(error) {

console.log(error);

});

// 监听bus,bus是vue实例,所以有$on方法

// 定义的方法,v就是传递来的this.collapsed变量

this. r o o t . B u s . root.Bus. root.Bus.on(“collapsed-aside”, (v) => {

this.collapsed = v;

});

},

// 搜索功能

search() {

this.doSearch(this.formInline);

}

},

created() {

this.doSearch({});

}

}

效果如下

3,校验表单


①,将rules控件放入form表单

<el-form label-width=“120px” :model=“editForm” :rules=“rules” ref=“editForm”>

②,定义规则

rules表示表单规则,相当于正则

// 校验表单

rules: {

title: [{

required: true,

message: ‘请输入活动名称’,

trigger: ‘blur’

},

{

min: 3,

max: 5,

message: ‘长度在 3 到 5 个字符’,

trigger: ‘blur’

}

],

body: [{

required: true,

message: ‘请选择文章内容’,

trigger: ‘blur’

}],

}

③,调用校验规则

submitForm 提交表单的方法

formName表单名称

validate校验的方法

submitForm(formName) {

this.$refs[formName].validate((valid) => {

if (valid) {

alert(‘submit!’);

} else {

console.log(‘error submit!!’);

return false;

}

});

},

效果如下

二,修改功能

=======

1,区分新增和修改的窗体


通过id区分,当点击编辑时,会拿到那行数据的id,并根据id修改

handleEdit(index, row) {

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 = ‘新增窗口’;

}

},

2,数据回显


// 定义editForm   json对象

editForm: {

// 为数据回显定义值

title: ‘’,

body: ‘’,

// 根据id修改

id: 0

},

3,为新增窗体清空数据


①清空数据的方法

// 清空新增窗体

clearData() {

this.editFormVisible = true,

this.title = ‘’;

this.editForm.id = 0;

this.editForm.title = ‘’;

this.editForm.body = ‘’;

},

②,调用清空窗体的方法

// 定义窗体的关闭事件

closeDialog() {

// 调用清空窗体的方法

this.clearData();

},

// 定义窗体开启事件,

// 参数index,row

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 = ‘新增窗口’;

}

},

效果展示

4,数据交互


由于增加按钮和编辑按钮触发的是同一个表单,所以应该进行判断,使用不同的url进行处理

submitForm(formName) {

this.$refs[formName].validate((valid) => {

if (valid) {

// alert(‘submit!’);

// 定义一个url

let url;

// ==0说明是新增

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;

}

});

},

三,删除功能

======

定义删除的方法,根据id删除,提示添加在数据刷新之前

deleteUser(index, row) {

this.editForm.id = row.id;

let url = this.axios.urls.SYSTEM_ARTICLE_DEL;

this.axios.post(url, this.editForm).then((resp) => {

this.$message({

message: ‘删除成功’,

type: ‘success’

});

this.search()

}).catch(function(error) {

console.log(error);

});

},

================================================================================================================================================================================================================

article.vue完整代码如下

=================

<el-button size=“small” type=“primary” icon=“el-icon-search” @click=“search”>搜索

<el-button size=“small” type=“primary” icon=“el-icon-plus” @click=“handleEdit()”>添加

<el-table size=“small” :data=“listData” highlight-current-row border element-loading-text=“拼命加载中”

style=“width: 100%;”>

<el-button size=“mini” @click=“handleEdit(scope.$index, scope.row)”>编辑

<el-button size=“mini” type=“danger” @click=“deleteUser(scope.$index, scope.row)”>删除

<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-dialog :title=“title” :visible.sync=“editFormVisible” width=“30%” @click=“closeDialog”>

<el-button size=“small” @click=“closeDialog”>取消

<el-button size=“small” type=“primary” class=“title” @click=“submitForm(‘editForm’)”>保存

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值