多选框实现批量操作

1.a-table绑定

 注意:切记添加rowKey="id",否则点击都是全部选择

2.添加选中逻辑

// 在选中数据项时更新 checked 属性
const rowSelection = {
  onChange: (selectedRowKeys, selectedRows) => {
    // 遍历所有数据项,更新 checked 属性
    // debugger
    tableData.value.forEach((item) => {
      if (selectedRowKeys.includes(item.id)) {
        item.checked = true
      } else {
        item.checked = false
      }
    })
    console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows)
  },
  getCheckboxProps: (record) => ({})
}

批量操作逻辑根据接口来实现即可

3.批量发布停用操作示例

// 是否启用批量发布按钮
const isBatchPublishEnabled = ref(false)
// 是否启用批量停用按钮
const isBatchDisableEnabled = ref(false)
// 批量发布函数
const batchPublish = async () => {
  // 获取选中的行的数据项
  const selectedRows = tableData.value.filter((item) => item.checked)
  const selectedUnpublishedRows = selectedRows.filter(
    (item) => item.assetStatus === 0 || item.assetStatus === 2
  )
  if (selectedUnpublishedRows.length === 0) {
    message.warning('请选择未发布或已停用的码表!')
    return
  }
  const ids = selectedUnpublishedRows.map((row) => row.id)
  try {
    // 调用后端接口批量发布码表
    await changeAssetStatus({
      ids: ids,
      assetStatus: 1
    })
    message.success('批量发布成功!')
    // 刷新表格数据
    getData()
  } catch (error) {
    message.error('批量发布失败,请稍后重试!')
  }
}
// 批量停用函数
const batchDisable = async () => {
  // 获取选中的行的数据项
  const selectedRows = tableData.value.filter((item) => item.checked)
  const selectedPublishedRows = selectedRows.filter((item) => item.assetStatus === 1)
  if (selectedPublishedRows.length === 0) {
    message.warning('请选择已发布的码表!')
    return
  }
  const ids = selectedPublishedRows.map((row) => row.id)
  try {
    // 调用后端接口批量停用码表
    await changeAssetStatus({ ids: ids, assetStatus: 2 })
    message.success('批量停用成功!')
    // 刷新表格数据
    getData()
  } catch (error) {
    message.error('批量停用失败,请稍后重试!')
  }
}
            <!-- 批量发布按钮 -->
            <a-button
              style="background-color: lightgreen; color: #fff"
              :disabled="isBatchPublishEnabled"
              @click="batchPublish"
            >
              批量发布
            </a-button>

            <!-- 批量停用按钮 -->
            <a-button
              style="background-color: red; color: #fff"
              :style="{ backgroundColor: isBatchDisableEnabled ? '#ccc' : 'red' }"
              :disabled="isBatchDisableEnabled"
              @click="batchDisable"
            >
              批量停用
            </a-button>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值