当前位置:首页 > VUE

vue实现批量删除

2026-01-14 08:10:21VUE

实现批量删除功能

在Vue中实现批量删除通常需要结合表格多选功能和API调用。以下是一个完整的实现方案:

表格多选功能实现

使用Element UI的表格组件实现多选功能:

vue实现批量删除

<template>
  <el-table
    :data="tableData"
    @selection-change="handleSelectionChange"
    ref="multipleTable"
  >
    <el-table-column type="selection" width="55"></el-table-column>
    <!-- 其他列 -->
  </el-table>
  <el-button @click="batchDelete">批量删除</el-button>
</template>

处理选中项

在methods中定义选择变化处理函数:

vue实现批量删除

data() {
  return {
    tableData: [],
    multipleSelection: []
  }
},
methods: {
  handleSelectionChange(val) {
    this.multipleSelection = val
  }
}

批量删除方法实现

实现批量删除的核心方法:

methods: {
  batchDelete() {
    if (this.multipleSelection.length === 0) {
      this.$message.warning('请至少选择一项')
      return
    }

    const ids = this.multipleSelection.map(item => item.id)
    this.$confirm('确认删除选中的项吗?', '提示', {
      type: 'warning'
    }).then(() => {
      this.$api.deleteItems(ids).then(res => {
        this.$message.success('删除成功')
        this.getTableData() // 重新获取数据
      })
    })
  }
}

API调用示例

在api.js中定义删除接口:

export function deleteItems(ids) {
  return request({
    url: '/items',
    method: 'delete',
    data: { ids }
  })
}

注意事项

  • 后端接口需要支持接收数组形式的ID进行批量删除
  • 删除成功后需要刷新表格数据
  • 添加适当的用户提示和确认对话框
  • 考虑添加加载状态防止重复提交

完整组件示例

<template>
  <div>
    <el-table
      :data="tableData"
      @selection-change="handleSelectionChange"
      ref="multipleTable"
      v-loading="loading"
    >
      <el-table-column type="selection" width="55"></el-table-column>
      <el-table-column prop="name" label="名称"></el-table-column>
    </el-table>

    <el-button 
      type="danger" 
      @click="batchDelete"
      :disabled="multipleSelection.length === 0"
    >
      批量删除({{ multipleSelection.length }})
    </el-button>
  </div>
</template>

<script>
import { deleteItems, getItems } from '@/api'

export default {
  data() {
    return {
      tableData: [],
      multipleSelection: [],
      loading: false
    }
  },
  created() {
    this.getTableData()
  },
  methods: {
    handleSelectionChange(val) {
      this.multipleSelection = val
    },
    getTableData() {
      this.loading = true
      getItems().then(res => {
        this.tableData = res.data
      }).finally(() => {
        this.loading = false
      })
    },
    batchDelete() {
      this.$confirm('确认删除选中的项吗?', '提示', {
        type: 'warning'
      }).then(() => {
        const ids = this.multipleSelection.map(item => item.id)
        deleteItems(ids).then(() => {
          this.$message.success('删除成功')
          this.getTableData()
        })
      })
    }
  }
}
</script>

标签: 批量vue
分享给朋友:

相关文章

前端vue登录功能实现

前端vue登录功能实现

Vue 登录功能实现步骤 创建登录表单组件 在 Vue 项目中创建一个登录组件,通常命名为 Login.vue。该组件包含用户名和密码输入框以及提交按钮。 <template> &l…

vue实现groupbox

vue实现groupbox

Vue 实现 GroupBox 组件 在 Vue 中实现类似 GroupBox 的效果可以通过自定义组件完成。GroupBox 通常是一个带有标题的边框容器,用于将相关控件分组显示。 基本实现方法…

vue 实现遮罩

vue 实现遮罩

Vue 实现遮罩层的方法 使用固定定位和透明背景 在Vue中实现遮罩层可以通过CSS固定定位结合透明背景色完成。创建一个全屏遮罩组件,利用position: fixed覆盖整个视窗。 <tem…

vue实现追加

vue实现追加

追加数据到数组或列表 在Vue中追加数据到数组或列表,可以通过push方法或concat方法实现。以下是几种常见的实现方式: 方法一:使用push方法 this.items.push(newIte…

vue实现banner

vue实现banner

Vue实现Banner轮播 使用Vue实现Banner轮播可以通过第三方库如swiper或vue-awesome-swiper,也可以手动实现基础轮播效果。以下是两种常见方法: 使用vue-awes…

vue弹幕实现暂停

vue弹幕实现暂停

实现 Vue 弹幕暂停功能 监听播放状态 通过 v-model 或自定义事件绑定弹幕组件的播放状态,存储一个布尔值(如 isPlaying)控制播放与暂停。在弹幕滚动逻辑中根据该状态判断是否更新位置。…