interface.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /**
  2. * 数据过滤项
  3. */
  4. export interface FilterValue<T> {
  5. keys: (keyof T)[], // 多条件字段
  6. filteredValue: (T[keyof T])[], // 多选过滤或模糊查询
  7. }
  8. /**
  9. * 过滤选项
  10. */
  11. export interface FilterOptions<T> {
  12. selectList: FilterSelect<T>[],
  13. inputList: FilterInput<T>[],
  14. buttonList: FilterButton[]
  15. }
  16. /**
  17. * 过滤选择框
  18. */
  19. export interface FilterSelect<T> {
  20. key: keyof T,
  21. label?: string,
  22. selectedValue?: T[keyof T],
  23. locked?: boolean, // 重置时是否阻止清空当前值
  24. placeholder?: string,
  25. options: {
  26. label: string,
  27. value: T[keyof T],
  28. }[],
  29. onChange?: (value: T[keyof T]) => void
  30. }
  31. /**
  32. * 过滤输入框
  33. */
  34. export interface FilterInput<T> {
  35. keys: (keyof T)[],
  36. label?: string,
  37. value?: T[keyof T],
  38. locked?: boolean, // 重置时是否阻止清空当前值
  39. type?: 'text' | 'number',
  40. placeholder?: string
  41. }
  42. /**
  43. * 过滤按钮
  44. */
  45. export interface FilterButton {
  46. lable: string;
  47. className?: string;
  48. onClick: () => void;
  49. }
  50. /**
  51. * 数据表配置项
  52. */
  53. export interface DataTableOptions {
  54. pagination?: boolean; // 是否进行本地分页
  55. pageSize?: number; // 每页条数
  56. pageIndex?: number; // 当前页码
  57. }