主要是在定义table的插槽的时候,添加bodyCell和headerCell
render() {
const columns = [
{ title: '序号', key: 'sort', dataIndex: 'sort', render: (_, record, idx) => idx + 1 },
{
customTitle: () => <antRow justify="end">
<img src={expand} style={{ width: '20px', cursor: 'pointer' }} onClick={() => this.isExpand = !this.isExpand} />
</antRow>,
key: 'isExpand',
dataIndex: 'isExpand',
children: [
{ customTitle: () => <antRadio>测试1</antRadio>, key: 'staticPrice', dataIndex: 'staticPrice' },
{ customTitle: () => <antRadio>测试2</antRadio>, key: 'enquiryPrice', dataIndex: 'enquiryPrice' },
]
},
{ title: '备注', key: 'partRemark', dataIndex: 'partRemark', render: (val)=> <antInput value={val} maxLength={50}/> },
];
const expandColumns = [
{ title: '序号', key: 'sort', dataIndex: 'sort', render: (_, record, idx) => idx + 1 },
{
customTitle: () => <antRow justify="end">
<img src={expand} style={{ width: '20px', cursor: 'pointer' }} onClick={() => this.isExpand = !this.isExpand} />
</antRow>,
key: 'isExpand',
dataIndex: 'isExpand',
children: [
{ customTitle: () => <antRadio>测试1</antRadio>, key: 'staticPrice', dataIndex: 'staticPrice' },
{ customTitle: () => <antRadio>测试2</antRadio>, key: 'enquiryPrice', dataIndex: 'enquiryPrice' },
{ customTitle: () => <antRadio>测试3</antRadio>, key: 'sort', dataIndex: 'sort' },
]
},
{ title: '备注', key: 'partRemark', dataIndex: 'partRemark', render: (val)=> <antInput value={val} maxLength={50}/> },
];
return (<>
<antRow>
<antTable
columns={this.isExpand ? expandColumns : columns}
dataSource={this.partList}
bordered={true}
size="small"
style={{ width: '100%' }}
pagination={false}
rowSelection={{
type: 'checkbox',
selectedRowKeys: this.selectedRowKeys,
onChange: (keys) => {
this.selectedRowKeys = keys;
}
}}
v-slots={{
bodyCell: (column) => {
// bodyCell 固定写法
if (column.column.render) {
const cellRender = column.column.render.bind(this);
return cellRender(column.value, column.record, column.index);
}
},
headerCell: (column) => {
if (column.column.customTitle) {
const cellRender = column.column.customTitle.bind(this);
return cellRender();
}
}
}}
/>
</antRow>
</>)
}