Vue使用ElementUI的确认框进行删除操作(包含前后端代码)

前言

今天做自己项目的时候,有一个删除的业务,正好遇到了确认框,在此纪念一下。

这里我是使用的ElementUI的确认框!

首先ElementUI的确认框是这么说明的:

从场景上说,MessageBox 的作用是美化系统自带的 alert、confirm 和 prompt,因此适合展示较为简单的内容。如果需要弹出较为复杂的内容,请使用 Dialog

调用$confirm方法即可打开消息提示,它模拟了系统的 confirm。Message Box 组件也拥有极高的定制性,我们可以传入options作为第三个参数,它是一个字面量对象。type字段表明消息类型,可以为success,error,info和warning,无效的设置将会被忽略。注意,第二个参数title必须定义为String类型

我们先看下原生ElementUI提供的确认框是什么样的吧:

官网地址:Element确认框

在这里插入图片描述

我们点击看下长什么样子:

在这里插入图片描述

原生代码:

<template>
  <el-button type="text" @click="open">点击打开 Message Box</el-button>
</template>

<script>
  export default {
    methods: {
      open() {
        this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          this.$message({
            type: 'success',
            message: '删除成功!'
          });
        }).catch(() => {
          this.$message({
            type: 'info',
            message: '已取消删除'
          });          
        });
      }
    }
  }
</script>

官网提供给我我们使用说明和基本使用,下面我将按照官网的基础进行一些小小的升级和改造,顺便告诉大家一些使用技巧。

元素代码

按钮上的代码比较简单,直接从element-ui使用复制即可

注意,这里有个坑,单机事件的方法名不能叫delete,这是一个关键词,不能使用,需要换一个名子,所以我才选择handleDelete!!!

这里我给方法传递了一个参数:scope.row,可以通过它获取这一行的全部数据,从而给后端传递相关的参数进行逻辑处理。

  <el-table-column fixed="right"  label="操作"  width="220" align="center" >
      <template slot-scope="scope"> 
        <el-button @click="handleDelete(scope.row)" type="danger" icon="el-icon-delete" size="small" >删除</el-button>
        <el-button type="warning" icon="el-icon-edit" size="small">编辑</el-button>
      </template>
    </el-table-column>

js代码

js相关的代码也十分简单。相关注释写在代码里面了,确认框提示的文案可以自由切换哦!

以下是我觉得重要且基本的一些属性:

在这里插入图片描述

代码如下:

	 // 删除
    handleDelete(row) {
        // 确认框确认是否要删除
        this.$confirm("确定要删除"+row.userName+"吗?", "删除提示", {
          iconClass: "el-icon-question", //自定义图标样式
          confirmButtonText: "残忍删除", //确认按钮文字
          cancelButtonText: "留你小命", //取消按钮文字
          showClose: true, //是否显示右上角关闭按钮
          type: "warning", //提示类型  success/info/warning/error
      }).then(res=> {  //选择确认按钮进入此方法
          //确认操作
          alert('确认')
      }).catch(() => { //选择取消按钮进入此方法
        //取消操作
         alert('取消')
      });    
    }

效果演示

这样一个确认框就写好了,我们可以根据点击确认或者取消进行不同的逻辑操作

然后我们页面上测试一下吧

确认

首先是确认操作

在这里插入图片描述

取消

然后是取消操作

在这里插入图片描述

扩充

这里还有一个属性:center

确认框文字是否居中,改为true即可居中,默认false

我个人觉得居中后太丑了。所以就没加到上面代码,大家知道即可,效果如下:

在这里插入图片描述

在这里插入图片描述

ps:不止这一个属性我没提到或者用到,还有很多属性,element-ui给我们提供了很多属性,大家根据孫的需求灵活运用即可,我上面说的都是我觉得最基本的属性。

在这里插入图片描述

删除逻辑编写

前端代码

这里写一个完整的删除逻辑,首先是前端代码,在刚才的代码基础上完善逻辑,使用axios发送请求并携带参数。

删除完之后一定要刷新列表哦,不然不容易发现数据变化!

关于如何封装一个公共的数据列表动态展示方法,可以参考:Vue使用Element-UI的table组件和后端接口进行数据交互

这里axios我用的是原生的,没有进行封装。因为后端崽目前还没学会!

 // 删除
    handleDelete(row) {
        // 确认框确认是否要删除
        this.$confirm("确定要删除"+row.userName+"吗?", "删除提示", {
          iconClass: "el-icon-question", //自定义图标样式
          confirmButtonText: "残忍删除", //确认按钮文字
          cancelButtonText: "留你小命", //取消按钮文字
          showClose: true, //是否显示右上角关闭按钮
          type: "warning", //提示类型  success/info/warning/error
      }).then(res=> {  //选择确认按钮进入此方法
          //确认操作 请求删除接口
         axios.get('http://localhost:9090/user/delete', {
          // 传递的参数
          params: {
            id:row.id //id,从row获取当前行的用户id
          }
          // 回调函数,一定要使用箭头函数,不然this的指向不是vue示例
          }).then(res =>{
              // 删除成功
              if(res.data.status===200){
              // 删除成功提示
                this.$message({showClose: true, message: '删除成功!',type: 'success', duration:1000,center:true});
                // 重新刷新最新的用户列表
                this.queryUserList();
              }
             
          }).catch(error =>{
             console.log(error)
          })
      }).catch(() => { //选择取消按钮进入此方法
        //取消操作
      });    
    }

后端代码

前端代码写好了当然离不开服务器接口的支撑,由于这是我自己写的项目,所以我的后端直接用MybatisPlus自带的删除(逻辑删除)就可以啦

在这里插入图片描述

效果演示

前后端代码都写好了,咱们就可以演示一波了。这里随便找一个幸运儿进行删除,这里我就拿第一行开刀了!

在这里插入图片描述

点击确认,数据消失!

在这里插入图片描述

总结

总的来说,使用起来还是很简单的。后面遇到什么情况,再回来补充!

  • 20
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论
以下是Vue ElementUI文件上传的前后端代码示例: 前端代码: ```vue <template> <el-upload class="upload-demo" action="/api/upload" :on-success="handleSuccess" :before-upload="beforeUpload"> <el-button slot="trigger" size="small" type="primary">上传文件</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> </el-upload> </template> <script> export default { methods: { beforeUpload(file) { const isJPG = file.type === 'image/jpeg' || file.type === 'image/png'; const isLt500K = file.size / 1024 < 500; if (!isJPG) { this.$message.error('上传头像图片只能是 JPG/PNG 格式!'); } if (!isLt500K) { this.$message.error('上传头像图片大小不能超过 500KB!'); } return isJPG && isLt500K; }, handleSuccess(res) { if (res.code === 0) { this.$message.success('上传成功'); } else { this.$message.error('上传失败'); } } } } </script> ``` 后端代码(Node.js Express架): ```javascript const express = require('express'); const multer = require('multer'); const path = require('path'); const fs = require('fs'); const app = express(); // 设置静态文件目录 app.use(express.static(path.join(__dirname, 'public'))); // 设置文件上传目录 const uploadPath = path.join(__dirname, 'uploads'); if (!fs.existsSync(uploadPath)){ fs.mkdirSync(uploadPath); } const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, uploadPath); }, filename: function (req, file, cb) { const extname = path.extname(file.originalname); const filename = Date.now() + extname; cb(null, filename); }, }); const upload = multer({ storage }); // 处理文件上传请求 app.post('/api/upload', upload.single('file'), function (req, res, next) { // 获取上传的文件信息 const file = req.file; if (!file) { return res.json({ code: 1, message: '上传失败' }); } console.log('文件上传成功:', file.filename); return res.json({ code: 0, message: '上传成功' }); }); // 启动服务器 const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); }); ``` 以上代码示例中,前端代码使用Vue ElementUI的el-upload组件实现文件上传,设置了文件类型和大小的限制,并通过axios发送文件上传请求。后端代码使用了Node.js的Express架和multer中间件处理文件上传请求,将上传的文件保存到指定目录中,并返回上传结果和文件信息。
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小花皮猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值