vue中异步批量删除列表数据

业务:设备列表,根据选中的复选框批量删除数据

vue中template里面代码:

javascript 复制代码
 <!-- 设备列表 -->
    <el-table :data="eTableData" style="width: 100%;" border  @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center"></el-table-column>
      <el-table-column prop="equipmentName" label="设备名称" sortable align="center"></el-table-column>
      <el-table-column prop="equipmentId" label="设备编号" sortable align="center"></el-table-column>
      <el-table-column prop="typeSpecification" label="型号规格" sortable align="center"></el-table-column>
      <el-table-column prop="categoryId" label="类目编号" sortable align="center"></el-table-column>
      <el-table-column prop="addressId" label="所在区域" sortable align="center">
        <template slot-scope="scope">
          {{ scope.row.addressId === 4 ? '办公区 ':''}}
          {{ scope.row.addressId === 5 ? '休息区 ':''}}
        </template>
      </el-table-column>
      <el-table-column prop="manufacturerNum" label="厂家编号" sortable align="center"></el-table-column>
      <el-table-column prop="manufacturerType" label="厂家型号" sortable align="center"></el-table-column>
      <el-table-column prop="price" label="价格" sortable align="center"></el-table-column>
      <el-table-column prop="buyTime" label="购置日期" sortable align="center"></el-table-column>

      <el-table-column label="操作" width="190" align="center">
        <template slot-scope="scope">
          <el-button type="primary" size="mini" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
          <el-button type="primary" size="mini" @click="handleDelete(scope.$index, scope.row)">查看</el-button>
        </template>
      </el-table-column>
    </el-table>

javaScript代码

javascript 复制代码
data() {
    return {
      eTableData:[],//列表数据来源
      selectedRows:[],//用于存储选中的行
      selectedRowIds:[],//用于存储选中的ID
    }
  },

methods: {

      //处理选中的行
    handleSelectionChange(selected){
      this.selectedRows = selected; // 更新选中的行
      this.selectedRowIds = this.selectedRows.map(row => row.id); // 获取 ID 数组
    },
 async deleteSelectedRows(){
      if (this.selectedRowIds.length === 0) {
        this.$message.warning("请先选择要删除的项");
        return;
      }
      try {
        // 调用 eDelete 方法并传入选中的 ID
        await eDelete(this.selectedRowIds);

        // 更新表格数据,移除已删除的行
        this.eTableData = this.eTableData.filter(item => !this.selectedRowIds.includes(item.id));

        // 清空选中状态
        this.selectedRows = [];
        this.selectedRowIds = [];

        this.$message.success("删除成功");
      } catch (error) {
        console.error("删除失败:", error);
        this.$message.error("删除失败,请稍后再试");
      }
    },
    
},

api包下的 js 代码

javascript 复制代码
// 根据选中行ID删除
export function eDelete(ids) {
  return request({
    data: ids,
    method: 'delete',
    url: '/dms/eDelete'
  })
}

后台控制层:

java 复制代码
    /**
     * 功能:设备删除
     */
    @DeleteMapping("/eDelete")
    public R eDelete(@RequestBody List<String> ids) {
        eService.eDelete(ids);
        return R.ok();
    }

Service:

java 复制代码
void eDelete(List<String> ids);

ServiceImpl:

java 复制代码
    @Override
    public void eDelete(List<String> ids) {
        esMapper.eDelete(ids);
    }

Mapper:

java 复制代码
void eDelete(@Param("ids") List<String> ids);

Mapper.xml:

java 复制代码
    <delete id="eDelete" parameterType="java.util.List">
        DELETE FROM t_equipment
        WHERE id IN
        <foreach item="id" collection="ids" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
相关推荐
java_nnnn21 分钟前
JavaEE进阶-HTML基础认识
前端·java-ee·html
鬼手点金26 分钟前
Claude Code示范案例-常用快捷命令
java·服务器·前端·计算机视觉·前向传播
CopyCode1 小时前
我排查了一下午,发现项目打包体积翻倍的元凶是它
前端·性能优化
u0111026751 小时前
Vue 3 实现图片裁剪框:拖动、缩放与固定宽高比
前端·javascript·vue.js
汉堡大王95272 小时前
一张图三句需求,我用 Trae Work 做了一块能看日出日落和月相的天文机械表
前端·后端·github
小小善后师2 小时前
用 Canvas + AI 实现登录页的 Logo 粒子动画
前端·vue.js
Amos_Web2 小时前
Rspack 源码解析(十六):多类型资源如何进入 Compilation.assets
前端·rust·前端框架
GAMC2 小时前
chrome-devtools-mcp:让 AI 编码助手真正"看见"浏览器
前端·人工智能
deli0072 小时前
高尔顿板:把球一颗颗丢下去,为什么最后总堆成一座钟形山
前端
java_nnnn2 小时前
JavaEE进阶-CSS初识
java·前端·css·java-ee·html