naive ui 数据表格操作加入两个按钮解决办法

在Vue3结合NaiveUI的表格组件中,可以通过自定义渲染函数在表格的一列中添加多个操作按钮。具体做法包括声明存储按钮信息的数组,然后在配置createColumns时使用map函数,通过判断和渲染逻辑来创建不同的按钮,点击事件分别绑定不同的处理函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

vue3+naive ui 的table表单中操作加入两个按钮,官方没有示例,自己研究出了个办法

解决办法

参考tags多项放到一个列中的方法

1、先声明一个数组,存储要放的按钮信息

 const actionsArr: actions[] = [
  {
    title: '审核',
    key: 'checkState'
  },
  {
    title: '查看',
    key: 'check'
  }
]

2、配置createColumns时render(row)部分使用map,代码:

const createColumns = ({
  check,
  checkState
}: {
  check: (rowData: Resume) => void
  checkState: (rowData: Resume) => void
}): DataTableColumns<Resume> => {
  return [
    {
      title: '序号',
      key: 'index'
    },
    {
      title: '姓名',
      key: 'name'
    },
    {
      title: '性别',
      key: 'sex',
      render(row) {
        if (row.sex === '0') {
          return '女'
        } else {
          return '男'
        }
      }
    },
    {
      title: '身份证号',
      key: 'idNumber'
    },
    {
      title: '手机号',
      key: 'telNumber'
    },
    {
      title: '审核状态',
      key: 'checkState',
      render(row) {
        const tags = row.checkState
        if (tags === 2) {
          return h(
            NTag,
            {
              style: {
                color: 'green',
                background: 'none'
              },
              bordered: false
            },
            {
              default: () => '通过'
            }
          )
        } else if (tags === 1) {
          return h(
            NTag,
            {
              style: {
                color: 'red',
                background: 'none'
              },
              bordered: false
            },
            {
              default: () => '未通过'
            }
          )
        } else {
          return h(
            NTag,
            {
              style: {
                color: '#ccc',
                background: 'none'
              },
              bordered: false
            },
            {
              default: () => '未审核'
            }
          )
        }
      }
    },
    {
      title: '操作',
      key: 'actions',
      render(row) {
        const buttonGroup = actionsArr.map((item) => {
          return h(
            NButton,
            {
              size: 'small',
              style: {
                marginRight: '6px'
              },
              onClick: () => {
                if (item.key === 'check') {
                  check(row)
                } else {
                  checkState(row)
                }
              }
            },
            {
              default: () => item.title
            }
          )
        })

        return buttonGroup
      }
    }
  ]
}

最后实现结果:

在这里插入图片描述

如果你有什么更好的办法,发出来一起学习呀!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值