73 lines
1.8 KiB
TypeScript
73 lines
1.8 KiB
TypeScript
import { message } from "@/utils/message";
|
||
import { tableData } from "../data";
|
||
|
||
// 如果您不习惯tsx写法,可以传slot,然后在template里写
|
||
// 需是hooks写法(函数中有return),避免失去响应性
|
||
export function useColumns() {
|
||
const columns: TableColumnList = [
|
||
{
|
||
label: "日期",
|
||
prop: "date",
|
||
cellRenderer: ({ row }) => (
|
||
<div style="display: flex; align-items: center">
|
||
<iconify-icon-online icon="ep:timer" />
|
||
<span style="margin-left: 10px">{row.date}</span>
|
||
</div>
|
||
)
|
||
},
|
||
{
|
||
label: "姓名",
|
||
prop: "name",
|
||
cellRenderer: ({ row }) => (
|
||
<el-popover effect="light" trigger="hover" placement="top" width="auto">
|
||
{{
|
||
default: () => (
|
||
<>
|
||
<div>name: {row.name}</div>
|
||
<div>address: {row.address}</div>
|
||
</>
|
||
),
|
||
reference: () => <el-tag>{row.name}</el-tag>
|
||
}}
|
||
</el-popover>
|
||
)
|
||
},
|
||
{
|
||
label: "地址",
|
||
prop: "address"
|
||
},
|
||
{
|
||
label: "操作",
|
||
cellRenderer: ({ index, row }) => (
|
||
<>
|
||
<el-button size="small" onClick={() => handleEdit(index + 1, row)}>
|
||
Edit
|
||
</el-button>
|
||
<el-button
|
||
size="small"
|
||
type="danger"
|
||
onClick={() => handleDelete(index + 1, row)}
|
||
>
|
||
Delete
|
||
</el-button>
|
||
</>
|
||
)
|
||
}
|
||
];
|
||
|
||
const handleEdit = (index: number, row) => {
|
||
message(`您修改了第 ${index} 行,数据为:${JSON.stringify(row)}`, {
|
||
type: "success"
|
||
});
|
||
};
|
||
|
||
const handleDelete = (index: number, row) => {
|
||
message(`您删除了第 ${index} 行,数据为:${JSON.stringify(row)}`);
|
||
};
|
||
|
||
return {
|
||
columns,
|
||
tableData
|
||
};
|
||
}
|