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>
相关推荐
Qrun1 小时前
Windows11安装nvm管理node多版本
前端·vscode·react.js·ajax·npm·html5
中国lanwp1 小时前
全局 npm config 与多环境配置
前端·npm·node.js
JELEE.2 小时前
Django登录注册完整代码(图片、邮箱验证、加密)
前端·javascript·后端·python·django·bootstrap·jquery
TeleostNaCl4 小时前
解决 Chrome 无法访问网页但无痕模式下可以访问该网页 的问题
前端·网络·chrome·windows·经验分享
前端大卫5 小时前
为什么 React 中的 key 不能用索引?
前端
你的人类朋友5 小时前
【Node】手动归还主线程控制权:解决 Node.js 阻塞的一个思路
前端·后端·node.js
小李小李不讲道理7 小时前
「Ant Design 组件库探索」五:Tabs组件
前端·react.js·ant design
毕设十刻7 小时前
基于Vue的学分预警系统98k51(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
mapbar_front8 小时前
在职场生存中如何做个不好惹的人
前端
牧杉-惊蛰8 小时前
纯flex布局来写瀑布流
前端·javascript·css