admin-vben5/apps/web-antd/src/adapter/vxe-table.ts

85 lines
2.0 KiB
TypeScript
Raw Normal View History

import { h } from 'vue';
import { setupVbenVxeTable, useVbenVxeGrid } from '@vben/plugins/vxe-table';
import { Button, Image } from 'ant-design-vue';
import { useVbenForm } from './form';
setupVbenVxeTable({
configVxeTable: (vxeUI) => {
vxeUI.setConfig({
grid: {
align: 'center',
2024-10-07 13:21:19 +08:00
border: false,
minHeight: 180,
proxyConfig: {
autoLoad: true,
response: {
2024-10-05 12:12:14 +08:00
result: 'rows',
total: 'total',
2024-10-05 12:12:14 +08:00
list: 'rows',
},
showActiveMsg: true,
showResponseMsg: false,
},
2024-10-07 13:21:19 +08:00
pagerConfig: {
// pageSize: 10,
// pageSizes: [10, 20, 30, 40, 50],
},
rowConfig: {
// 鼠标移入行显示 hover 样式
isHover: true,
// 点击行高亮
isCurrent: true,
},
2024-10-05 20:46:31 +08:00
columnConfig: {
2024-10-07 13:21:19 +08:00
// 可拖拽列宽
2024-10-05 20:46:31 +08:00
resizable: true,
},
2024-10-07 13:21:19 +08:00
// 右上角工具栏
2024-10-05 20:46:31 +08:00
toolbarConfig: {
// 自定义列
custom: true,
// 最大化
zoom: true,
// 刷新
refresh: true,
},
2024-10-07 13:21:19 +08:00
// 圆角按钮
round: true,
2024-10-07 13:21:19 +08:00
// 表格尺寸
2024-10-05 12:12:14 +08:00
size: 'medium',
},
});
// 表格配置项可以用 cellRender: { name: 'CellImage' },
vxeUI.renderer.add('CellImage', {
renderDefault(_renderOpts, params) {
const { column, row } = params;
return h(Image, { src: row[column.field] });
},
});
// 表格配置项可以用 cellRender: { name: 'CellLink' },
vxeUI.renderer.add('CellLink', {
renderDefault(renderOpts) {
const { props } = renderOpts;
return h(
Button,
{ size: 'small', type: 'link' },
{ default: () => props?.text },
);
},
});
// 这里可以自行扩展 vxe-table 的全局配置,比如自定义格式化
// vxeUI.formats.add
},
useVbenForm,
});
export { useVbenVxeGrid };
export type * from '@vben/plugins/vxe-table';