闽公网安备 35020302035485号
element-plus ^2.8.8
<el-table :data="filterTableData" style="width: 100%">
<el-table-column label="Date" prop="date" />
<el-table-column label="Name" prop="name" />
<el-table-column align="right">
<template #header>
<el-input v-model="search" size="small" placeholder="Type to search" />
</template>
<template #default="scope">
<el-button size="small" @click="handleEdit(scope.$index, scope.row)">
Edit
</el-button>
<el-button
size="small"
type="danger"
@click="handleDelete(scope.$index, scope.row)"
>
Delete
</el-button>
</template>
</el-table-column>
</el-table>
其中可以看出,通过 <template #header> 自定义表头,<template #default="scope"> 自定义内容。 <el-table
:data="tableData"
:span-method="arraySpanMethod"
border
style="width: 100%"
>
<el-table-column prop="id" label="ID" width="180" />
<el-table-column prop="name" label="Name" />
<el-table-column prop="amount1" sortable label="Amount 1" />
<el-table-column prop="amount2" sortable label="Amount 2" />
<el-table-column prop="amount3" sortable label="Amount 3" />
</el-table>
<script lang="ts" setup>
// 省略其他代码...
const arraySpanMethod = ({
row,
column,
rowIndex,
columnIndex,
}: SpanMethodProps) => {
if (rowIndex % 2 === 0) {
if (columnIndex === 0) {
return [1, 2]
} else if (columnIndex === 1) {
return [0, 0]
}
}
}
</script>
实战开发<template>
<el-table :data="tableData" :span-method="arraySpanMethod" border style="width: 500px">
<el-table-column prop="id" label="ID" width="100">
<template #default="scope">
<span v-if="scope.$index === tableData.length - 1">
<span>是否确认信息:</span>
<el-radio-group v-model="scope.row.confirmFlag">
<el-radio :value="true">确认</el-radio>
<el-radio :value="false">未确认</el-radio>
</el-radio-group>
</span>
<template v-else>{{ scope.row.id }}</template>
</template>
</el-table-column>
<el-table-column prop="name" label="姓名" />
<el-table-column prop="age" label="年龄" />
</el-table>
</template>
<script setup lang="ts">
import type { TableColumnCtx } from 'element-plus'
interface User {
id?: string
name?: string
age?: number
confirmFlag?: boolean
}
interface SpanMethodProps {
row: User
column: TableColumnCtx<User>
rowIndex: number
columnIndex: number
}
const arraySpanMethod = ({ row, column, rowIndex, columnIndex }: SpanMethodProps) => {
// 最后一行
if (rowIndex === tableData.length - 1) {
// [1,3] 占一行三列
return [1, 3]
}
}
const tableData: User[] = [
{
id: '1',
name: 'Tom1',
age: 20,
},
{
id: '2',
name: 'Tom2',
age: 30,
},
{
id: '3',
name: 'Tom3',
age: 40,
},
// 堆代码 duidaima.com
// 新增一条自定义的数据
{
confirmFlag: true,
},
]
</script>
<style scoped></style>

结语
根据文档中所提供的2个知识点,可以结合进行其他自定义操作。还有其他好玩的操作,小伙伴可以留言哈~