ant design vue Table表格使用插槽

# 项目场景:
我们怎么用ant design vue实现这样的表格呢?

 解决方案:
1、写template中的内容

  <!-- 表格 -->
   <a-table
        :row-selection="rowSelection"
        :rowKey="
          (record, index) => {
            return index
          }
        "
        :columns="columns"
        :data-source="data"
        bordered
        :pagination="pagination"
      >
        <span slot="num" slot-scope="text, record, index">
          <!-- 序号递增 -->
          {{ (pagination.pageNo - 1) * pagination.pageSize + parseInt(index) + 1 }}
          <!--序号不递增 -->
          <!-- {{ parseInt(index) + 1 }} -->
        </span>

        <template slot="action" slot-scope="text, record" class="btn">
          <a @click="see(record)" class="operation">查看</a>
          <a @click="down(record)" class="operation">导出</a>
          <a @click="confirm(record)" class="operation">删除</a>
        </template>
      </a-table>


2、写data中的内容

export default {
  data() {
    return {
    //分页一定要有 (表格序号要使用)
      pagination: {
        //分页
        pageNo: 1, //当前页
        pageSize: 10, // 默认每页显示数量
        showSizeChanger: true, // 显示可改变每页数量
        pageSizeOptions: ['10', '20', '50', '100'], // 每页数量选项
        showTotal: (total) => `共 ${total} 条`, // 显示总数
        onShowSizeChange: (current, pageSize) => this.onSizeChange(current, pageSize), // 改变每页数量时更新显示
        onChange: (page, pageSize) => this.onPageChange(page, pageSize), //点击页码事件
        total: 0, //总条数
      },
    const columns = [
  {
    title: '序号',
    type: 'index',
    width: 70,
    dataIndex: 'num',
    align: 'center',
    scopedSlots: { customRender: 'num' },
  },
  {
    title: '日志文件名',
    dataIndex: 'name',
    ellipsis: true, //超出显示省略号
    align: 'center',
  },
  {
    title: '类别',
    dataIndex: 'age',
    align: 'center',
  },
  {
    title: '文件大小',
    dataIndex: 'size',
    align: 'center',
  },
  {
    title: '日期',
    dataIndex: 'time',
    align: 'center',  
  },
  {
    title: '操作',
    dataIndex: 'action',
    scopedSlots: { customRender: 'action' }, //插槽使用
    align: 'center',
  },
]
const data = [
  {
    name: '文案文案',
    age: 32,

    time: '2022-3-12',
    size: '500kb',
  },
  {
    name: '文案文案',
    age: 42,
    time: '2022-3-12',
    size: '500kb',
  },
  {
    name: '文案文案',
    age: 32,
    time: '2022-3-12',
    size: '500kb',
  },
  {
    name: '文案文案',
    age: 99,
    time: '2022-3-12',
    size: '500kb',
  },
  {
    name: '文案文案',
    age: 99,
    time: '2022-3-12',
    size: '500kb',
  },
  {
    name: '文案文案',
    age: 99,
    time: '2022-3-12',
    size: '500kb',
  },
  {
    name: '文案文案',
    age: 32,

    time: '2022-3-12',
    size: '500kb',
  },
  {
    name: '文案文案',
    age: 42,
    time: '2022-3-12',
    size: '500kb',
  },
  {
    name: '文案文案',
    age: 32,
    time: '2022-3-12',
    size: '500kb',
  },
  {
    name: '文案文案',
    age: 99,
    time: '2022-3-12',
    size: '500kb',
  },
  {
    name: '文案文案',
    age: 99,
    time: '2022-3-12',
    size: '500kb',
  },
  {
    name: '文案文案',
    age: 99,
    time: '2022-3-12',
    size: '500kb',
  },
]
    }
    }
    }


3、写methods和computed中的内容

  methods: {
 /**
     * 查看事件
     */
    see(val) {
      console.log('点击查看', val)
    },
    /**
     * 导出事件
     */
    down(val) {
      console.log('点击导出', val)
    },
    /**
     * 删除弹窗点
     */
    confirm(e) {
      console.log(e)
      Modal.confirm({
        title: '删除',
        content: '确定要删除这条数据吗?',
        onOk: () => {
          this.$message.success('删除成功')
        },
        onCancel: () => {
          this.$message.error('取消删除')
        },
      })
    },

onPageChange(page, pageSize) {
  console.log(page, pageSize)
  this.pagination.pageNo = page
},

onSizeChange(current, pageSize) {
  console.log(current, pageSize)
  this.pagination.pageNo = 1
  this.pagination.pageSize = pageSize
},

  }

  computed: {
    /**
     * 表格序号前面的多选框的事件
     */
    rowSelection() {
      return {
        onChange: (selectedRowKeys, selectedRows) => {
          console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows)
        },
      }
    },
  },

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Ant Design Vue是一个基于Vue.js的UI组件库,提供了丰富的组件和样式,方便开发者构建美观、易用的Web应用程序。在Ant Design Vue使用表格组件可以通过以下步骤进行: 1. 首先,引入Ant Design VueTable组件和相关样式。可以通过npm安装或者直接引入CDN链接来获取Ant Design Vue。 2. 在Vue组件中定义表格的列和数据源。可以使用`columns`属性来描述表格的列,每个列可以设置`dataIndex`、`key`、`title`等属性来定义列的数据和标题。同时,可以使用`scopedSlots`属性来定义自定义渲染的插槽。 3. 在模板中使用`a-table`组件来渲染表格,并将定义的列和数据源传递给`columns`和`data-source`属性。 4. 如果需要在表格中添加自定义的内容或操作按钮,可以使用`template`标签来定义插槽,并使用`slot-scope`属性来获取行信息。在插槽中可以放置任何你想展示的元素,比如按钮、图片等。 下面是一个使用Ant Design Vue表格的示例代码: ```html <template> <a-table :columns="columns" :data-source="data"> <template #name="{ record }"> <a-button type="primary" ghost @click="hide(record)">编辑</a-button> </template> </a-table> </template> <script> export default { data() { return { columns: \[ { dataIndex: "checklistName", key: "checklistName", id: "1", title: this.$t("table.ChecklistName"), width: 150, fixed: "left", scopedSlots: { customRender: "name" }, }, \], data: \[ // 表格数据源 \], }; }, methods: { hide(record) { // 编辑按钮点击事件处理逻辑 }, }, }; </script> ``` 在上述代码中,`columns`数组定义了表格的列,其中`checklistName`列使用了自定义渲染的插槽`name`。`data`数组定义了表格的数据源。在模板中,使用`template`标签定义了名为`name`的插槽,并在插槽中放置了一个编辑按钮。点击编辑按钮会触发`hide`方法。 希望以上信息对您有所帮助。如果还有其他问题,请随时提问。 #### 引用[.reference_title] - *1* [ant-design vue Table表格使用scopedSlots和customRender](https://blog.csdn.net/weixin_45685313/article/details/125560052)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [vue + Ant Designtable自定义表格、添加操作按钮并获取当前行数据](https://blog.csdn.net/weixin_52691965/article/details/120332102)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值