vxe-table.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import type { VxeTableGridOptions } from '@vben/plugins/vxe-table';
  2. import type { ComponentPropsMap, ComponentType } from './component';
  3. import { h } from 'vue';
  4. import {
  5. setupVbenVxeTable,
  6. useVbenVxeGrid as useGrid,
  7. } from '@vben/plugins/vxe-table';
  8. import { Button, Image } from 'ant-design-vue';
  9. import { useVbenForm } from './form';
  10. setupVbenVxeTable({
  11. configVxeTable: (vxeUI) => {
  12. vxeUI.setConfig({
  13. grid: {
  14. align: 'center',
  15. border: false,
  16. columnConfig: {
  17. resizable: true,
  18. },
  19. minHeight: 180,
  20. formConfig: {
  21. // 全局禁用vxe-table的表单配置,使用formOptions
  22. enabled: false,
  23. },
  24. proxyConfig: {
  25. autoLoad: true,
  26. response: {
  27. result: 'items',
  28. total: 'total',
  29. list: 'items',
  30. },
  31. showActiveMsg: true,
  32. showResponseMsg: false,
  33. },
  34. round: true,
  35. showOverflow: true,
  36. size: 'small',
  37. } as VxeTableGridOptions,
  38. });
  39. // 表格配置项可以用 cellRender: { name: 'CellImage' },
  40. vxeUI.renderer.add('CellImage', {
  41. renderTableDefault(renderOpts, params) {
  42. const { props } = renderOpts;
  43. const { column, row } = params;
  44. return h(Image, { src: row[column.field], ...props });
  45. },
  46. });
  47. // 表格配置项可以用 cellRender: { name: 'CellLink' },
  48. vxeUI.renderer.add('CellLink', {
  49. renderTableDefault(renderOpts) {
  50. const { props } = renderOpts;
  51. return h(
  52. Button,
  53. { size: 'small', type: 'link' },
  54. { default: () => props?.text },
  55. );
  56. },
  57. });
  58. // 这里可以自行扩展 vxe-table 的全局配置,比如自定义格式化
  59. // vxeUI.formats.add
  60. },
  61. useVbenForm,
  62. });
  63. export const useVbenVxeGrid = <T extends Record<string, any>>(
  64. ...rest: Parameters<typeof useGrid<T, ComponentType, ComponentPropsMap>>
  65. ) => useGrid<T, ComponentType, ComponentPropsMap>(...rest);
  66. export type * from '@vben/plugins/vxe-table';