IdAsValueTree.ts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import type { SelectProps } from "ant-design-vue";
  2. export type LoadDataFun = (pid: string|number, level: number) => Promise<TreeNode[]>;
  3. export type CheckClickableFun = (item: TreeNode) => Promise<boolean>;
  4. export type GetDiaplayValue = (ref: IdAsValueTreeInterface) => string;
  5. export type GetRef = (ref: IdAsValueTreeInterface) => void;
  6. export interface TreeDataItem {
  7. id: string | number;
  8. pId?: number;
  9. value: string | number;
  10. title?: string;
  11. isLeaf?: boolean;
  12. selectable?: boolean;
  13. checkable?: boolean;
  14. disableCheckbox?: boolean;
  15. disabled?: boolean;
  16. level?: number;
  17. }
  18. export interface TreeNode {
  19. id?: number;
  20. pid?: number;
  21. level?: number;
  22. /**
  23. * 当树为 checkable 时,设置独立节点是否展示 Checkbox
  24. */
  25. checkable?: boolean;
  26. /**
  27. * 节点的 class
  28. */
  29. class?: string;
  30. /**
  31. * 禁掉 checkbox
  32. */
  33. disableCheckbox?: boolean;
  34. /**
  35. * 禁掉响应
  36. */
  37. disabled?: boolean;
  38. /**
  39. * 自定义图标。可接收组件,props 为当前节点 props
  40. */
  41. icon?: unknown;
  42. /**
  43. * 设置为叶子节点(设置了loadData时有效)
  44. */
  45. isLeaf?: boolean;
  46. /**
  47. * 被树的 (default)ExpandedKeys / (default)CheckedKeys / (default)SelectedKeys 属性所用。注意:整个树范围内的所有节点的 key 值不能重复!
  48. */
  49. key: string | number;
  50. /**
  51. * 设置节点是否可被选中
  52. */
  53. selectable?: boolean;
  54. /**
  55. * 节点的 style
  56. */
  57. // eslint-disable-next-line @typescript-eslint/ban-types
  58. style?: string|object;
  59. /**
  60. * 标题
  61. */
  62. title: string;
  63. children?: TreeNode[],
  64. }
  65. /**
  66. * IdAsValueTree 的公共接口
  67. */
  68. export interface IdAsValueTreeInterface {
  69. /**
  70. * 获取某个ID的树(正排列)
  71. * @param value 要获取的ID
  72. */
  73. getTree(value: number) : Array<TreeNode>;
  74. /**
  75. * 获取某个ID的Lablel
  76. * @param value 要获取的ID
  77. */
  78. getLableByValue(value: number) : string;
  79. /**
  80. * 重新加载数据
  81. */
  82. reload(): void;
  83. }
  84. /**
  85. * IdAsValueTree 的公共接口
  86. */
  87. export interface IdAsValueTreeProps {
  88. /**
  89. * 允许清除
  90. */
  91. allowClear?: boolean,
  92. /**
  93. * 多选?
  94. */
  95. multiple?: boolean,
  96. disabled?: boolean,
  97. /**
  98. * 初始化时加载数据
  99. */
  100. loadAtStart?: boolean,
  101. /**
  102. * 加载数据
  103. */
  104. loadData?: LoadDataFun,
  105. /**
  106. * 自定义检查条目是否可点击回调
  107. */
  108. checkClickable?: CheckClickableFun,
  109. /**
  110. * 子数据最大层级
  111. */
  112. maxLevel?: number,
  113. /**
  114. * 是否只有最后一级可以点击
  115. */
  116. onlyLastLevelClickable?: boolean,
  117. /**
  118. * a-select 其他自定义参数
  119. */
  120. customProps?: SelectProps,
  121. }