在实际开发需求里面,有个很常见的需求,就是需要自定义 表格的操作单元格,要求有的数据需要显示删除,有的数据需要显示修改,或者每一条数据都有一个公共的操作按钮
- 对于表格的每一列,可以使用
obj.column
来获取列的信息,例如obj.column.title
可以获取列标题。 - 对于每一行的数据,你可以使用
obj.record
来获取行数据的信息。
例如如下情况
这里每一条数据都有连通测试按钮,然后根据每条数据的不同状态,有的数据有停用,有的数据有编辑 删除。
那么如何实现?
<!-- 这是template里面的代码 -->
<a-table
:columns="columns"
:dataSource="dataSource"
:pagination="pagination"
@change="handleChanger"
>
<template #bodyCell="obj">
<!-- 表头的配置信息 -->
<!-- <div>{{ obj.column }}</div> -->
<!-- obj.column.dataIndex 表头配置项的dataIndex的值-->
<!-- <div>{{ obj.record.dataIndex.datasourceStatus }}</div> -->
<!-- <div>{{ obj.record.datasourceStatus }}</div> -->
<!-- 如果是对表头设置用 column 如果是对数据的操作 应该用record -->
<div v-if="obj.column.dataIndex === 'methods'">
<!-- 气泡框 -->
<a-popconfirm
title="确定要连接测试吗"
ok-text="确定"
cancel-text="取消"
@confirm="confirm"
@cancel="cancel"
>
<a-button type="primary" style="margin-right: 8px">连通测试</a-button>
</a-popconfirm>
<!-- 如果状态为123 会对应不同显示的methods的按钮 -->
<a-space>
<a-button
type="primary"
v-if="obj.record.datasourceStatus === 0 || obj.record.datasourceStatus === 2"
>发布</a-button
>
<a-button
type="primary"
v-if="obj.record.datasourceStatus === 0 || obj.record.datasourceStatus === 2"
>编辑</a-button
>
<a-button type="primary" v-if="obj.record.datasourceStatus === 0">删除</a-button>
<a-button type="primary" v-if="obj.record.datasourceStatus === 1">停用</a-button>
</a-space>
</div>
script里面的代码
// 这是script里面的代码
//配置表格头部
const columns = [
{
dataIndex: 'datasourceName',
title: '数据源名称'
},
{
dataIndex: 'databaseType',
title: '数据库类型'
},
{
dataIndex: 'datasourceDescription',
title: '数据源描述'
},
{
dataIndex: 'connectionInfo',
title: '连接信息'
},
{
dataIndex: 'datasourceStatus',
title: '应用状态'
},
{
dataIndex: 'updateTime',
title: '更新时间'
},
{
dataIndex: 'methods',
title: '操作'
}
]
//初始化表格内容
const dataSource = ref()
// 便于调用表单自带的重置方法
const formRef = ref()
// 0未发布 1 已发布 2 已停用
// 0未发布 有连通测试 发布 编辑 删除
//1已发布 有连通测试 停用
//2已停用 有连通测试 发布 编辑
dataSource.value = [
{
datasourceName: 'mysql',
databaseType: 'databaseType',
datasourceDescription: '数据库',
connectionInfo: 'mysql://',
datasourceStatus: 1,
updateTime: '2013-11-11'
},
{
datasourceName: 'mysql',
databaseType: 'databaseType',
datasourceDescription: '数据库',
connectionInfo: 'mysql://',
datasourceStatus: 0,
updateTime: '2013-11-11'
},
{
datasourceName: 'mysql',
databaseType: 'databaseType',
datasourceDescription: '数据库',
connectionInfo: 'mysql://',
datasourceStatus: 2,
updateTime: '2013-11-11'
}
]