Vxe Table
Less than 1 minute
Vxe Table
Ven has built-in Vxe Table which is very convenient to use and supports most of the official functions.
VxeTable, specific parameters can refer to the official document of vxe table.
例子
<template>
<PageWrapper
title="VxeTable表格"
content="只展示部分操作,详细功能请查看VxeTable官网事例"
contentFullHeight
fixedHeight
>
<VxeBasicTable ref="tableRef" v-bind="gridOptions">
<template #action="{ row }">
<TableAction outside :actions="createActions(row)" />
</template>
</VxeBasicTable>
</PageWrapper>
</template>
<script lang="ts" setup>
import { reactive, ref } from "vue";
import { ActionItem, TableAction } from "/@/components/Table";
import { PageWrapper } from "/@/components/Page";
import { useMessage } from "/@/hooks/web/useMessage";
import { vxeTableColumns, vxeTableFormSchema } from "./tableData";
import {
BasicTableProps,
VxeBasicTable,
VxeGridInstance,
} from "/@/components/VxeTable";
import { demoListApi } from "/@/api/demo/table";
const { createMessage } = useMessage();
const tableRef = ref<VxeGridInstance>();
const gridOptions = reactive<BasicTableProps>({
id: "VxeTable",
keepSource: true,
editConfig: { trigger: "click", mode: "cell", showStatus: true },
columns: vxeTableColumns,
toolbarConfig: {
buttons: [
{
content: "在第一行新增",
buttonRender: {
name: "AButton",
props: {
type: "primary",
preIcon: "mdi:page-next-outline",
},
events: {
click: () => {
tableRef.value?.insert({ name: "新增的" });
createMessage.success("新增成功");
},
},
},
},
{
content: "在最后一行新增",
buttonRender: {
name: "AButton",
props: {
type: "warning",
},
events: {
click: () => {
tableRef.value?.insertAt({ name: "新增的" }, -1);
},
},
},
},
],
},
formConfig: {
enabled: true,
items: vxeTableFormSchema,
},
height: "auto",
proxyConfig: {
ajax: {
query: async ({ page, form }) => {
return demoListApi({
pageNum: page.currentPage,
pageSize: page.pageSize,
...form,
});
},
queryAll: async ({ form }) => {
return await demoListApi(form);
},
},
},
});
// 操作按钮(权限控制)
const createActions = (record) => {
const actions: ActionItem[] = [
{
label: "详情",
onClick: () => {
console.log(record);
},
},
{
label: "编辑",
onClick: () => {},
},
{
label: "删除",
color: "error",
popConfirm: {
title: "是否确认删除",
confirm: () => {
tableRef.value?.remove(record);
},
},
},
];
return actions;
};
</script>