ElementUI增删改的实现及表单验证

简介: ElementUI增删改的实现及表单验证


一、准备

在action.js中添加对后台请求的地址

'BOOK_ADD': '/book/addBook', //书籍添加
'BOOK_EDIT': '/book/editBook', //书籍编辑
'BOOK_DEL': '/book/delBook', //书籍删除

二、添加功能

2.1 新增添加按钮

<template>
  <div style="padding: 20px">
    ....
  //新增语句开始
    <el-button type="success" @click="onAdd()">新增</el-button>
  //新增语句结束
    <!-- 数据表格 -->
    <el-table :data="tableData" style="width: 100%">
        .....
    </el-table>
   ...
  </div>
</template>

2.2 添加弹出框

<!--添加删除的弹出框-->
<el-dialog title="新增书籍" :visible.sync="dialogFormVisible">
    <el-form :model="book">
        <el-form-item label="书籍名称" :label-width="formLabelWidth">
            <el-input v-model="book.bookname" autocomplete="off"></el-input>
    </el-form-item>
  <el-form-item label="书籍价格" :label-width="formLabelWidth">
    <el-input v-model="book.price" autocomplete="off"></el-input>
  </el-form-item>
    <el-form-item label="书籍类型" :label-width="formLabelWidth">
        <el-select v-model="book.booktype" placeholder="请选择书籍类型">
            <el-option v-for="by in booktypes" :label="by.name" :value="by.name"            :key="by.id"></el-option>
      </el-select>
  </el-form-item>
  </el-form>
  <div slot="footer" class="dialog-footer">
      <el-button @click="handleCancel">取 消</el-button>
      <el-button type="primary" @click="handleSubmit">确 定</el-button>
  </div>
</el-dialog>

2.3 data中添加内容

book: {
  id: '',
  bookname: '',
  price: '',
  booktype: ''
},
dialogFormVisible: false,
formLabelWidth: '100px',
booktypes: [{id: 1, name: '玄幻'}, {id: 2, name: '名著'}, {id: 3, name: '计算机'}],
title: '新增书籍'

2.4 methods中添加相关方法

clear(){
    this.dialogFormVisible = false;
    this.book.booktype = '';
    this.book.bookname = '';
    this.book.price = '';
},
onAdd() {
  this.dialogFormVisible = true;
},
handleSubmit(){
  let url = this.axios.urls.BOOK_ADD;
  let params = {
    id: this.book.id,
    bookname: this.book.bookname,
    price: this.book.price,
    booktype: this.book.booktype
  }
  this.axios.post(url,params).then(resp=>{
    if(resp.data.success){
      this.$message({
        message: resp.data.msg,
        type: 'success'
      });
      this.clear();
            let params = {
                bookname: this.bookname
            }
          this.query(params);
        }else{
      this.$message({
        message: resp.data.msg,
        type: 'error'
      })
        }
  }).catch(err=>{
  })
},
handleCancel(){
  this.clear();
},

三、编辑功能

3.1 表格中添加编辑和删除按钮

<el-table-column label="操作">
  <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>

3.2 methods中添加方法

handleDelete(idx, row) {
},
handleEdit(idx, row) {
  this.dialogFormVisible = true;
  this.book.id = row.id;
  this.book.bookname = row.bookname;
  this.book.booktype = row.booktype;
  this.book.price = row.price;
  this.title = '编辑书籍';
},

3.3 修改methods中clear方法

clear() {
  this.dialogFormVisible = false;
  this.book.booktype = '';
  this.book.bookname = '';
  this.book.price = '';
  this.title = '';
},

3.4 修改methods中的handleSubmit方法

handleSubmit() {
    let url = '';
    let params;
    if (this.title == '新增书籍') {
        url = this.axios.urls.BOOK_ADD;
        params = {
            bookname: this.book.bookname,
            price: this.book.price,
            booktype: this.book.booktype
        }
    } else {
        url = this.axios.urls.BOOK_EDIT;
        params = {
            id: this.book.id,
            bookname: this.book.bookname,
            price: this.book.price,
            booktype: this.book.booktype
        }
    }
    this.axios.post(url, params).then(resp => {
        if (resp.data.success) {
            this.$message({
                message: resp.data.msg,
                type: 'success'
            });
            this.clear();
            let params = {
                bookname: this.bookname
            }
            this.query(params);
        } else {
            this.$message({
                message: resp.data.msg,
                type: 'error'
            })
        }
    }).catch(err => {
    })
},

四、删除书籍功能

4.1 往methods的handleDelete方法中添加内容

handleDelete(idx, row) {
    this.$confirm('您确定删除id为' + row.id + '的书籍吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
    }).then(() => {
        let url = this.axios.urls.BOOK_DEL;
        this.axios.post(url, {id: row.id}).then(resp => {
            if (resp.data.success) {
                this.$message({
                    message: resp.data.msg,
                    type: 'success'
                });
                this.clear();
                let params = {
                    bookname: this.bookname
                }
                this.query(params);
            } else {
                this.$message({
                    message: resp.data.msg,
                    type: 'error'
                })
            }
        })
    }).catch(() => {
        this.$message({
            type: 'info',
            message: '已取消删除'
        });
    });
},

五、表单验证

5.1 修改弹出层

<!--添加删除的弹出框-->
<el-dialog :title="title" :visible.sync="dialogFormVisible">
    <el-form :model="book" :rules="rules" ref="book">
        <el-form-item label="书籍名称" :label-width="formLabelWidth" prop="bookname">
            <el-input v-model="book.bookname" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="书籍价格" :label-width="formLabelWidth" prop="price">
            <el-input v-model.number="book.price" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="书籍类型" :label-width="formLabelWidth" prop="booktype">
            <el-select v-model="book.booktype" placeholder="请选择书籍类型">
                <el-option v-for="by in booktypes" :label="by.name" :value="by.name" :key="by.id"></el-option>
            </el-select>
        </el-form-item>
    </el-form>
    <div slot="footer" class="dialog-footer">
        <el-button @click="handleCancel">取 消</el-button>
        <el-button type="primary" @click="handleSubmit">确 定</el-button>
    </div>
</el-dialog>

5.2 在data中添加变量值

rules:
{
    bookname: [
        {required: true, message: '请输入书本名称', trigger: 'blur'},
        {min: 1, message: '长度必须在1个字符以上', trigger: 'blur'}
    ],
  price: [
    {required: true, message: '请输入书本价格', trigger: 'blur'},
    {type: 'number', message: '必须为数字', trigger: 'blur'}
  ],
  booktype: [
    {required: true, message: '请选择书籍类型', trigger: 'blur'}
  ]
}

目录
相关文章
|
前端开发 算法 Java
1024程序员节|历经一个月总结使用java实现pdf文件的电子签字+盖章+防伪二维码+水印+PDF文件加密的全套解决方案
🍅程序员小王的博客:程序员小王的博客 🍅CSDN地址:程序员小王java 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线
3779 0
1024程序员节|历经一个月总结使用java实现pdf文件的电子签字+盖章+防伪二维码+水印+PDF文件加密的全套解决方案
|
Linux 开发工具 数据安全/隐私保护
【Linux】—— git的管理以及使用
【Linux】—— git的管理以及使用
461 0
|
机器学习/深度学习
Whisper 整体架构图
Whisper 整体架构图
1010 0
|
测试技术 数据库
腾讯游戏测试工程师的经验心得分享
腾讯游戏测试工程师的经验心得分享
1109 0
|
8月前
|
弹性计算 固态存储 JavaScript
阿里云4核8G服务器怎么选?配置、费用、ECS规格及支持人数全解析
阿里云4核8G服务器年付低至955元(u1实例),支持ECS经济型e、计算型c7/c8i、AMD型c8a/c7a等十余种规格,适用日均万级IP访问。配置含Intel至强处理器、8GB内存、1–3M带宽及20–40GB ESSD Entry系统盘,性能稳定,企业级独享资源。
1984 6
|
5月前
|
人工智能 弹性计算 数据库
2026年阿里云优惠券有哪些?最新优惠券种类,领取和申请入口与规则,使用教程参考
2026年阿里云提供多种优惠券,包括学生300元无门槛券、企业迁云和出海补贴、阿里云百炼按量达标满返券,以及通用满减券和折扣券,覆盖个人和企业用户。学生需完成身份认证即可领取300元无门槛券;企业迁云和出海补贴需提交申请,经评估后发放;阿里云百炼按量达标满返券,完成认证一键申请即可参加活动;大促活动的满减券和上云礼包可通过阿里云活动中心了解。用户可通过阿里云指定页面领取和使用。
|
7月前
|
机器学习/深度学习 监控 安全
再也不怕局部拍屏泄露:一项能抗部分屏幕拍摄的溯源黑科技来了(第10期)
针对“拍屏截取局部”导致传统水印失效的难题,合肥高维数据与中科大联合研发《抗部分屏幕拍摄的溯源水印方法》,首创结构化水印+双阶段深度学习增强技术,支持畸变、裁剪、摩尔纹等复杂干扰下的高鲁棒溯源,已应用于政企保密、版权保护与司法取证等领域。(239字)
752 2
|
10月前
|
数据可视化 C++ Windows
ContextMenuManager右键菜单管理工具下载安装教程(附安装包)
ContextMenuManager是一款绿色开源的Windows右键菜单管理工具,支持可视化增删、禁用、重命名菜单项,覆盖文件、文件夹、磁盘等多种场景。可定位注册表路径,一键备份还原配置,解决菜单臃肿与残留问题,操作即时生效,安全可靠。
|
存储 SQL 运维
中国联通网络资源湖仓一体应用实践
本文分享了中国联通技术专家李晓昱在Flink Forward Asia 2024上的演讲,介绍如何借助Flink+Paimon湖仓一体架构解决传统数仓处理百亿级数据的瓶颈。内容涵盖网络资源中心概况、现有挑战、新架构设计及实施效果。新方案实现了数据一致性100%,同步延迟从3小时降至3分钟,存储成本降低50%,为通信行业提供了高效的数据管理范例。未来将深化流式数仓与智能运维融合,推动数字化升级。
912 0
中国联通网络资源湖仓一体应用实践
|
数据采集 机器学习/深度学习 自然语言处理
NLP助力非结构化文本抽取:实体关系提取实战
本文介绍了一套基于微博热帖的中文非结构化文本分析系统,通过爬虫代理采集数据,结合NLP技术实现实体识别、关系抽取及情感分析。核心技术包括爬虫模块、请求配置、页面采集和中文NLP处理,最终将数据结构化并保存为CSV文件或生成图谱。代码示例从基础正则规则到高级深度学习模型(如BERT-BiLSTM-CRF)逐步演进,适合初学者与进阶用户调试与扩展,展现了中文NLP在实际场景中的应用价值。
1046 3
NLP助力非结构化文本抽取:实体关系提取实战