小言_互联网的博客

vue10-CRUD+表单验证

322人阅读  评论(0)

目录

1. 准备工作

2. 弹出窗口

3. 新增更新功能

 4. 删除功能 ​编辑

 5. 表单验证

 5. 接口文档


1. 准备工作

后台服务接口,对书本的增删改查操作

2. 弹出窗口

进入ElementUi官网, 找到Dialog对话框,可以参考“嵌套表单的dialog”实现。
该步骤先实现弹出窗口的前端逻辑,并不会调用后台接口服务进行实际的业务操作。

BookList.vue 


  
  1. <!--
  2. 弹出窗口:增加和修改书本信息共用一个弹出窗口,需要根据用户的选择动态的设置弹出窗口的标题
  3. :tile 通过绑定值的方式设置dialog的标题
  4. :visible. sync 控制弹出窗口的显示或隐藏,. sync同步修饰符
  5. @close= "closeBookForm",设置窗口关闭时调用的处理函数,可用于清空表单
  6. :model= "bookForm":用于定义表单对应的model,具体model的定义可见data部分。
  7. v-show= "optiontype == 'update'" 通过操作类型控制是否显示书本编号字段,如果当前操作类型为
  8. 新增,则不用显示,书本编号在数据表中是自增的。
  9. :label-width= "formLabelWidth" 统一定义标签的宽度。
  10. :style= "{width: formEleWidth}" 统一定义form元素的宽度。
  11. -->
  12. <el-dialog :title="dialogName" :visible.sync="dialogFormVisible" @close="closeBookForm" width="500px">
  13. <el-form :model="bookForm">
  14. <el-form-item v-show="optiontype == 'update'" label="编号" :label-width="formLabelWidth">
  15. <el-input v-model="bookForm.id" autocomplete="off" :style="{width: formEleWidth}"> </el-input>
  16. </el-form-item>
  17. <el-form-item label="书名" :label-width="formLabelWidth">
  18. <el-input v-model="bookForm.bookname" autocomplete="off" :style="{width: formEleWidth}"> </el-input>
  19. </el-form-item>
  20. <el-form-item label="价格" :label-width="formLabelWidth">
  21. <el-input v-model="bookForm.price" autocomplete="off" :style="{width: formEleWidth}"> </el-input>
  22. </el-form-item>
  23. <el-form-item label="类型" :label-width="formLabelWidth">
  24. <el-select v-model="bookForm.booktype" placeholder="选择类型" :style="{width:formEleWidth}">
  25. <el-option label="名著" value="mz"> </el-option>
  26. <el-option label="小说" value="xs"> </el-option>
  27. </el-select>
  28. </el-form-item>
  29. </el-form>
  30. <div slot="footer" class="dialog-footer">
  31. <el-button @click="dialogFormVisible = false">取 消 </el-button>
  32. <el-button type="primary" @click="dialogFormVisible = false">确 定 </el-button>
  33. </div>
  34. </el-dialog>

注1:隐藏显示设置,通过Vue实例对象中的dialogFormVisible="true|false"来控制dialog显示隐藏
       :visible.sync="dialogFormVisible"
    
注2:通过close或closed事件,在关闭dialog弹出框时清空form表单数据和验证信息;
       @close="dialogClose" 

在数据表格中添加“编辑”“删除”功能连接。(在element-ui官方demo -> table组件中,有如何加入删除,编辑等按钮的示例)


  
  1. <!--表格-->
  2. <el-table :data="books" style="width: 100%;" :border="true" max-height="530">
  3. <el-table-column prop="id" label="编号" min-width="40" align="center"> </el-table-column>
  4. <el-table-column prop="bookname" label="名称" min-width="100" align="center"> </el-table-column>
  5. <el-table-column prop="price" label="价格" min-width="70" align="center"> </el-table-column>
  6. <el-table-column prop="booktype" label="类型" min-width="70" align="center"> </el-table-column>
  7. <!-- “编辑”“删除”功能连接 -->
  8. <el-table-column label="操作">
  9. <!--
  10. 在<template>上使用特殊的slot-scope 特性,可以接收传递给插槽的prop
  11. slot-scope:类似将每一行的row对象封装到槽中,之后直接从scope中获取
  12. row对象信息和行索引index信息即可
  13. -->
  14. <template slot-scope="scope">
  15. <el-button size="mini" @click="handleEdit(scope.row)">编辑 </el-button>
  16. <el-button size="mini" type="danger" @click="handleDelete(scope.row)">删除 </el-button>
  17. </template>
  18. </el-table-column>
  19. </el-table>

script部分:


  
  1. export default {
  2. name: 'BookList',
  3. data: function( ) {
  4. return {
  5. bookname: '',
  6. books: [],
  7. total: 0,
  8. rows: 10,
  9. page: 1,
  10. //控制对话框是否显示,默认是隐藏状态
  11. dialogFormVisible: false,
  12. //统一控制标签的宽度
  13. formLabelWidth: '40px',
  14. //统一控制表单元素的宽度
  15. formEleWidth: '400px',
  16. //对话框标题,默认为新增,如果是点击修改按钮打开对话框,则标题应为修改。
  17. dialogName: '新增书本',
  18. //操作类型,默认为添加,如果是点击修改打开对话框,则操作类类型应变为修改
  19. //该变量用于控制是否显示书本编号字段,当操作类型为新增时不需显示(书本编号数据表字段为自增)
  20. //当操作类型为修改时,需要显示。
  21. optiontype: 'add',
  22. //定义表单对应的model
  23. bookForm: {
  24. id: '',
  25. bookname: '',
  26. price: null,
  27. booktype: ''
  28. }
  29. }
  30. },
  31. methods: {
  32. qry: function( ) {
  33. let url = this. axios. urls. BOOKMSG_BOOKINFO_REQ;
  34. this. axios. post(url, {
  35. bookname: this. bookname,
  36. page: this. page,
  37. rows: this. rows
  38. }). then( resp => {
  39. console. log(resp);
  40. this. books = resp. data. data;
  41. this. total = resp. data. total;
  42. }). catch( error => {
  43. console. log(error);
  44. });
  45. },
  46. //当每页显示的记录数发生变化时,设置当前页码为1,执行查询。
  47. handleSizeChange: function( rows) {
  48. this. rows = rows;
  49. this. page = 1;
  50. this. qry();
  51. },
  52. //当前页码发生变化时,执行查询
  53. handleCurrentChange: function( page) {
  54. this. page = page;
  55. this. qry();
  56. },
  57. //当关闭对话框时,该方法用于清空表单
  58. closeBookForm: function( ) {
  59. this. bookForm. id= null;
  60. this. bookForm. bookname = null;
  61. this. bookForm. booktype = null;
  62. this. bookForm. price = null;
  63. },
  64. //打开对话框,将对话框标题设置为新增,操作类型设置为'add'
  65. addBook: function( ) {
  66. this. dialogName = '新增书本信息';
  67. this. dialogFormVisible = true;
  68. this. optiontype = 'add';
  69. },
  70. //打开对话框,将对话框标题设置为修改,操作类型设置为'update',
  71. //并使用获取的待修改的记录的值设置对应的表单元素
  72. handleEdit: function( row) {
  73. this. dialogName = '编辑书本信息';
  74. this. dialogFormVisible = true;
  75. this. bookForm. id=row. id;
  76. this. bookForm. bookname = row. bookname;
  77. this. bookForm. booktype = row. booktype;
  78. this. bookForm. price = row. price;
  79. this. optiontype = 'update';
  80. },
  81. //删除书本记录
  82. handleDelete: function( row) {
  83. console. log( "dele = " + row);
  84. }
  85. }
  86. }

3. 新增更新功能

1) 在action.js中加入后台接口配置。配置时按照自己的项目实际进行,不要照抄

在事件中设置dialogFormVisible="true"即可打开dialog弹出框

 2) 在前端调用接口前请确认后台接口可正常使用

 

 4. 删除功能 

 5. 表单验证

查看Element-ui官方文档Form部分

 如果需要自定义验证规则,用法如下图所示:

注1::label-position设置表单对齐方式
注2:<el-form :model="bookForm"></el-form>设置表单元素属性双向绑定的对象属性名称 

定义验证规则,及rule 

调用验证

注1::rules="rules"表单验证定义,只需要通过 rules 属性传入约定的验证规则 

注2:有多个表单,怎么在提交进行区分? 

        我们在rules这里写了对表单的验证规则,但是我们如何在methods里进行指定的表单进行认证,所以我们一开始就在el-form里写了 ref="ruleForm",我们在methods里就可以用

 注3: 通过form表单的ref属性来清空表单验证信息

        this.$refs[formName].resetFields();

       补充说明:formName是指<el-form ref="bookForm">中定义的ref属性名

 注4:表单重置时必须先清空表单验证信息,再清空表单数据信息 

        //通过form表单的ref属性来清空表单验证信息
       this.$refs['bookForm'].resetFields();
       //清空上一次表单的数据信息
       this.bookForm.id = null;
       this.bookForm.bookname = null;
       this.bookForm.price = null;
       this.bookForm.booktype = null;

 5. 接口文档

接口文档需要包含的基本要素:

接口地址:
请求方式:get/post/put/delete等
请求示例:举例说明如何调用
请求参数:说明请求参数,及存放的位置,如url,form-data, body raw等等。
返回参数:
正确:说明返回的json数据
错误:指明不同错误的代码及含义

以上就是今天的分享!!!


转载:https://blog.csdn.net/m0_62246061/article/details/127655036
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场