当前位置:首页 > VUE

vue element 实现批量删除

2026-01-21 02:46:45VUE

实现批量删除功能

在Vue和Element UI中实现批量删除功能,主要涉及表格多选、批量操作按钮和删除逻辑的实现。

表格多选配置

在Element UI的el-table组件中启用多选功能,需要添加selection列和row-key属性:

<el-table
  ref="multipleTable"
  :data="tableData"
  style="width: 100%"
  @selection-change="handleSelectionChange"
  row-key="id">
  <el-table-column
    type="selection"
    width="55">
  </el-table-column>
  <!-- 其他列 -->
</el-table>

处理选中项

通过selection-change事件获取当前选中的行数据:

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

批量删除按钮

添加批量删除按钮并绑定点击事件:

<el-button 
  type="danger" 
  :disabled="!multipleSelection.length" 
  @click="handleBatchDelete">
  批量删除
</el-button>

删除逻辑实现

实现批量删除方法,通常需要调用API接口:

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

    this.$confirm('确认删除选中项?', '提示', {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning'
    }).then(() => {
      const ids = this.multipleSelection.map(item => item.id);
      // 调用API
      deleteItems(ids).then(res => {
        this.$message.success('删除成功');
        this.fetchData(); // 重新加载数据
        this.$refs.multipleTable.clearSelection(); // 清空选择
      });
    }).catch(() => {
      this.$message.info('已取消删除');
    });
  }
}

API接口示例

假设后端API接收ID数组进行批量删除:

vue element 实现批量删除

const deleteItems = (ids) => {
  return axios.delete('/api/items/batch', { data: { ids } });
}

注意事项

  • 确保row-key使用唯一标识字段
  • 批量操作前做好数据校验
  • 删除成功后更新表格数据并清空选择
  • 添加适当的用户反馈(成功/失败提示)

完整组件示例

<template>
  <div>
    <el-button 
      type="danger" 
      :disabled="!multipleSelection.length" 
      @click="handleBatchDelete">
      批量删除
    </el-button>

    <el-table
      ref="multipleTable"
      :data="tableData"
      style="width: 100%"
      @selection-change="handleSelectionChange"
      row-key="id">
      <el-table-column
        type="selection"
        width="55">
      </el-table-column>
      <!-- 其他列 -->
    </el-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [],
      multipleSelection: []
    }
  },
  methods: {
    handleSelectionChange(val) {
      this.multipleSelection = val;
    },
    handleBatchDelete() {
      if (this.multipleSelection.length === 0) {
        this.$message.warning('请至少选择一项');
        return;
      }

      this.$confirm('确认删除选中项?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        const ids = this.multipleSelection.map(item => item.id);
        deleteItems(ids).then(res => {
          this.$message.success('删除成功');
          this.fetchData();
          this.$refs.multipleTable.clearSelection();
        });
      });
    },
    fetchData() {
      // 获取表格数据
    }
  },
  mounted() {
    this.fetchData();
  }
}
</script>

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

相关文章

vue 实现拖动

vue 实现拖动

Vue 实现拖动的几种方法 在Vue中实现拖动功能可以通过多种方式,包括原生HTML5的拖放API、第三方库如vuedraggable等。以下是几种常见的实现方法: 使用HTML5拖放API HTM…

vue nexttrick实现

vue nexttrick实现

Vue 中 nextTick 的实现原理 nextTick 是 Vue 提供的一个异步方法,用于在下次 DOM 更新循环结束之后执行延迟回调。它利用了 JavaScript 的事件循环机制,确保回调在…

vue实现分站

vue实现分站

Vue 实现分站的方案 在 Vue 中实现分站功能通常涉及路由配置、环境变量管理和动态加载资源。以下是几种常见的实现方式: 基于路由的分站实现 通过 Vue Router 配置多路由,区分不同站点的…

vue实现hexo

vue实现hexo

Vue 集成 Hexo 的实现方法 Hexo 是一个静态博客框架,而 Vue 是一个前端框架。将 Vue 集成到 Hexo 中可以通过以下方式实现: 在 Hexo 中使用 Vue 组件 通过 Hex…

vue实现烟花

vue实现烟花

Vue 实现烟花效果 在 Vue 中实现烟花效果可以通过结合 CSS 动画和 JavaScript 动态生成烟花元素。以下是具体实现方法: 动态生成烟花元素 通过 Vue 的 v-for 动态生成烟…

vue实现拉伸

vue实现拉伸

Vue 实现元素拉伸功能 在Vue中实现元素的拉伸(拖拽调整大小)功能,可以通过监听鼠标事件结合CSS样式来实现。以下是两种常见实现方式: 使用原生事件监听 创建可拉伸的组件需要处理鼠标按下、移动和…