IdAsValueDropdown.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import type { DataModel } from "@imengyu/js-request-transform";
  2. import type { SelectProps } from "ant-design-vue";
  3. import type { VNode } from "vue";
  4. /**
  5. * 通用下拉框返回结构定义
  6. */
  7. export interface DropdownValues<T> {
  8. label: string,
  9. value: number,
  10. raw: T;
  11. }
  12. export type LoadDataFun<T extends DataModel> = (val: string | null) => Promise<DropdownValues<T>[]>;
  13. /**
  14. * IdAsValueDropdown 的公共接口
  15. */
  16. export interface IdAsValueDropdownInterface {
  17. /**
  18. * 获取某个ID的Lablel
  19. * @param value 要获取的ID
  20. */
  21. getLableByValue(value: number): string;
  22. /**
  23. * 重新加载数据
  24. * @param clearValue 是否需要清除选中数据,默认否
  25. */
  26. reload(clearValue?: boolean): void;
  27. }
  28. /**
  29. * IdAsValueDropdown 的公共接口
  30. */
  31. export interface IdAsValueDropdownProps<T extends DataModel> {
  32. /**
  33. * 允许清除
  34. */
  35. allowClear?: boolean,
  36. /**
  37. * 显示空?
  38. */
  39. showNull?: boolean,
  40. /**
  41. * 禁用
  42. */
  43. disabled?: boolean,
  44. /**
  45. * 多选?
  46. */
  47. multiple?: boolean,
  48. /**
  49. * 允许搜索
  50. */
  51. showSearch?: boolean,
  52. placeholder?: string,
  53. /**
  54. * 未找到数据时的文案
  55. */
  56. notFoundContent?: string,
  57. /**
  58. * 初始化时加载数据
  59. */
  60. loadAtStart?: boolean,
  61. /**
  62. * 不使用后端筛选数据而是前端直接筛选
  63. */
  64. filterDirectly?: boolean,
  65. /**
  66. * 初始化时的搜索数据
  67. */
  68. intitialSearchValue?: Record<string, unknown>,
  69. /**
  70. * 加载数据回调
  71. */
  72. loadData: LoadDataFun<T>,
  73. /**
  74. * a-select 其他自定义参数
  75. */
  76. customProps?: SelectProps,
  77. /**
  78. * 是否自定义渲染option插槽
  79. */
  80. renderOption?: RenderOption;
  81. }
  82. export type RenderOption = (data: {
  83. value: unknown,
  84. label: string,
  85. }) => VNode;