import { message } from "@/utils/message";
import { tableData } from "../data";
import { ref, computed } from "vue";
// 需是hooks写法(函数中有return),避免失去响应性
export function useColumns() {
const search = ref("");
const filterTableData = computed(() =>
tableData.filter(
data =>
!search.value ||
data.name.toLowerCase().includes(search.value.toLowerCase())
)
);
const handleEdit = (index: number, row) => {
message(`您修改了第 ${index} 行,数据为:${JSON.stringify(row)}`, {
type: "success"
});
};
const handleDelete = (index: number, row) => {
message(`您删除了第 ${index} 行,数据为:${JSON.stringify(row)}`);
};
const columns: TableColumnList = [
{
prop: "date",
// 自定义表头,slot用法 #nameHeader="{ column, $index }"
headerSlot: "nameHeader"
},
{
label: "姓名",
prop: "name"
},
{
label: "地址",
prop: "address"
},
{
align: "right",
// 自定义表头,tsx用法
headerRenderer: () => (
),
cellRenderer: ({ index, row }) => (
<>
handleEdit(index + 1, row)}>
Edit
handleDelete(index + 1, row)}
>
Delete
>
)
}
];
return {
columns,
filterTableData
};
}