pit-docs-mcp 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/README.md +180 -0
  2. package/dist/codegen.d.ts +5 -0
  3. package/dist/codegen.d.ts.map +1 -0
  4. package/dist/codegen.js +112 -0
  5. package/dist/constants.d.ts +6 -0
  6. package/dist/constants.d.ts.map +1 -0
  7. package/dist/constants.js +10 -0
  8. package/dist/index.d.ts +3 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +115 -0
  11. package/dist/resources.d.ts +3 -0
  12. package/dist/resources.d.ts.map +1 -0
  13. package/dist/resources.js +80 -0
  14. package/dist/tools.d.ts +3 -0
  15. package/dist/tools.d.ts.map +1 -0
  16. package/dist/tools.js +258 -0
  17. package/dist/utils.d.ts +26 -0
  18. package/dist/utils.d.ts.map +1 -0
  19. package/dist/utils.js +198 -0
  20. package/docs/codegen/pit-simplify-web.md +686 -0
  21. package/docs/pitBusinessUi/README.md +102 -0
  22. package/docs/pitBusinessUi/add-date-picker.md +57 -0
  23. package/docs/pitBusinessUi/add-operation.md +64 -0
  24. package/docs/pitBusinessUi/batch-download.md +44 -0
  25. package/docs/pitBusinessUi/bill-tree-dialog.md +82 -0
  26. package/docs/pitBusinessUi/collapse.md +88 -0
  27. package/docs/pitBusinessUi/date-time-picker.md +74 -0
  28. package/docs/pitBusinessUi/design-report-explain.md +47 -0
  29. package/docs/pitBusinessUi/dialog.md +89 -0
  30. package/docs/pitBusinessUi/dic-radio.md +67 -0
  31. package/docs/pitBusinessUi/dic.md +78 -0
  32. package/docs/pitBusinessUi/document-preview.md +54 -0
  33. package/docs/pitBusinessUi/drawer.md +67 -0
  34. package/docs/pitBusinessUi/editor.md +63 -0
  35. package/docs/pitBusinessUi/expand-search-form.md +65 -0
  36. package/docs/pitBusinessUi/file-preview.md +56 -0
  37. package/docs/pitBusinessUi/flow-table-status.md +47 -0
  38. package/docs/pitBusinessUi/icon-box.md +74 -0
  39. package/docs/pitBusinessUi/image-preview.md +55 -0
  40. package/docs/pitBusinessUi/image.md +53 -0
  41. package/docs/pitBusinessUi/input-formatter.md +100 -0
  42. package/docs/pitBusinessUi/input-number.md +47 -0
  43. package/docs/pitBusinessUi/input-select.md +68 -0
  44. package/docs/pitBusinessUi/input.md +56 -0
  45. package/docs/pitBusinessUi/jm-preview.md +47 -0
  46. package/docs/pitBusinessUi/json-editor.md +71 -0
  47. package/docs/pitBusinessUi/loading-btn.md +64 -0
  48. package/docs/pitBusinessUi/monaco.md +82 -0
  49. package/docs/pitBusinessUi/money-input.md +59 -0
  50. package/docs/pitBusinessUi/pagination.md +70 -0
  51. package/docs/pitBusinessUi/password-strength.md +59 -0
  52. package/docs/pitBusinessUi/positive-number.md +63 -0
  53. package/docs/pitBusinessUi/preview-image.md +62 -0
  54. package/docs/pitBusinessUi/preview-office.md +50 -0
  55. package/docs/pitBusinessUi/preview.md +57 -0
  56. package/docs/pitBusinessUi/quill.md +52 -0
  57. package/docs/pitBusinessUi/runflow-btn.md +52 -0
  58. package/docs/pitBusinessUi/search-date-picker.md +60 -0
  59. package/docs/pitBusinessUi/select-bid-list.md +66 -0
  60. package/docs/pitBusinessUi/select-color.md +38 -0
  61. package/docs/pitBusinessUi/select-contract-tree.md +41 -0
  62. package/docs/pitBusinessUi/select-dept.md +38 -0
  63. package/docs/pitBusinessUi/select-project-unit.md +48 -0
  64. package/docs/pitBusinessUi/select-section-tree.md +45 -0
  65. package/docs/pitBusinessUi/select-section.md +66 -0
  66. package/docs/pitBusinessUi/select-string.md +60 -0
  67. package/docs/pitBusinessUi/select-system-unit.md +41 -0
  68. package/docs/pitBusinessUi/select-user-by-role.md +51 -0
  69. package/docs/pitBusinessUi/switch.md +43 -0
  70. package/docs/pitBusinessUi/table-contract.md +66 -0
  71. package/docs/pitBusinessUi/table-operation.md +81 -0
  72. package/docs/pitBusinessUi/table.md +75 -0
  73. package/docs/pitBusinessUi/tag.md +86 -0
  74. package/docs/pitBusinessUi/textarea.md +65 -0
  75. package/docs/pitBusinessUi/transfer-direct.md +57 -0
  76. package/docs/pitBusinessUi/transfer-user-project.md +78 -0
  77. package/docs/pitBusinessUi/transfer.md +68 -0
  78. package/docs/pitBusinessUi/tree-lazy.md +72 -0
  79. package/docs/pitBusinessUi/tree-select-name.md +59 -0
  80. package/docs/pitBusinessUi/tree-select-plus.md +106 -0
  81. package/docs/pitBusinessUi/tree-select.md +86 -0
  82. package/docs/pitBusinessUi/upload-avatar.md +60 -0
  83. package/docs/pitBusinessUi/upload-file-dialog.md +86 -0
  84. package/docs/pitBusinessUi/upload-file.md +77 -0
  85. package/docs/pitBusinessUi/upload-list-card.md +62 -0
  86. package/docs/pitBusinessUi/upload-table.md +77 -0
  87. package/docs/pitBusinessUi/user-transform.md +72 -0
  88. package/docs/pitBusinessUi/utils.md +272 -0
  89. package/docs/pitBusinessUtils/README.md +144 -0
  90. package/docs/pitBusinessUtils/auth.md +170 -0
  91. package/docs/pitBusinessUtils/clipboard.md +72 -0
  92. package/docs/pitBusinessUtils/filePreview.md +60 -0
  93. package/docs/pitBusinessUtils/formValidate.md +75 -0
  94. package/docs/pitBusinessUtils/generateTitle.md +49 -0
  95. package/docs/pitBusinessUtils/get-page-title.md +65 -0
  96. package/docs/pitBusinessUtils/i18n.md +130 -0
  97. package/docs/pitBusinessUtils/jwks.md +82 -0
  98. package/docs/pitBusinessUtils/oss.md +391 -0
  99. package/docs/pitBusinessUtils/passwordValidate.md +120 -0
  100. package/docs/pitBusinessUtils/pit.md +496 -0
  101. package/docs/pitBusinessUtils/print.md +126 -0
  102. package/docs/pitBusinessUtils/request.md +137 -0
  103. package/docs/pitBusinessUtils/scroll-to.md +68 -0
  104. package/docs/pitBusinessUtils/utils.md +762 -0
  105. package/docs/pitBusinessUtils/validate.md +224 -0
  106. package/docs/pitElementUi/alert.md +238 -0
  107. package/docs/pitElementUi/avatar.md +147 -0
  108. package/docs/pitElementUi/backtop.md +60 -0
  109. package/docs/pitElementUi/badge.md +120 -0
  110. package/docs/pitElementUi/base-tabs.md +73 -0
  111. package/docs/pitElementUi/border.md +135 -0
  112. package/docs/pitElementUi/breadcrumb.md +44 -0
  113. package/docs/pitElementUi/button.md +301 -0
  114. package/docs/pitElementUi/calendar.md +66 -0
  115. package/docs/pitElementUi/card.md +170 -0
  116. package/docs/pitElementUi/carousel.md +212 -0
  117. package/docs/pitElementUi/cascader.md +1966 -0
  118. package/docs/pitElementUi/checkbox.md +283 -0
  119. package/docs/pitElementUi/collapse.md +131 -0
  120. package/docs/pitElementUi/color-picker.md +123 -0
  121. package/docs/pitElementUi/color.md +244 -0
  122. package/docs/pitElementUi/container.md +240 -0
  123. package/docs/pitElementUi/custom-theme.md +131 -0
  124. package/docs/pitElementUi/date-picker.md +448 -0
  125. package/docs/pitElementUi/datetime-picker.md +254 -0
  126. package/docs/pitElementUi/descriptions.md +191 -0
  127. package/docs/pitElementUi/dialog-header.md +53 -0
  128. package/docs/pitElementUi/dialog.md +239 -0
  129. package/docs/pitElementUi/divider.md +61 -0
  130. package/docs/pitElementUi/drawer.md +307 -0
  131. package/docs/pitElementUi/dropdown.md +308 -0
  132. package/docs/pitElementUi/empty.md +61 -0
  133. package/docs/pitElementUi/font-family.md +90 -0
  134. package/docs/pitElementUi/form-base.md +1239 -0
  135. package/docs/pitElementUi/form-item-checkbox-group.md +48 -0
  136. package/docs/pitElementUi/form-item-date.md +60 -0
  137. package/docs/pitElementUi/form-item-dic.md +18 -0
  138. package/docs/pitElementUi/form-item-editor.md +16 -0
  139. package/docs/pitElementUi/form-item-input-money.md +19 -0
  140. package/docs/pitElementUi/form-item-input-number.md +20 -0
  141. package/docs/pitElementUi/form-item-input.md +18 -0
  142. package/docs/pitElementUi/form-item-radio-group.md +21 -0
  143. package/docs/pitElementUi/form-item-select.md +21 -0
  144. package/docs/pitElementUi/form-item-switch.md +15 -0
  145. package/docs/pitElementUi/form-item-textarea.md +20 -0
  146. package/docs/pitElementUi/form-item-tree-select.md +27 -0
  147. package/docs/pitElementUi/form-item-upload-card.md +18 -0
  148. package/docs/pitElementUi/form-item-upload.md +1 -0
  149. package/docs/pitElementUi/form-two.md +102 -0
  150. package/docs/pitElementUi/form.md +952 -0
  151. package/docs/pitElementUi/i18n.md +228 -0
  152. package/docs/pitElementUi/icon-custom.md +99 -0
  153. package/docs/pitElementUi/icon-line-custom.md +12 -0
  154. package/docs/pitElementUi/icon.md +28 -0
  155. package/docs/pitElementUi/image.md +178 -0
  156. package/docs/pitElementUi/infiniteScroll.md +87 -0
  157. package/docs/pitElementUi/input-number.md +197 -0
  158. package/docs/pitElementUi/input-select.md +1 -0
  159. package/docs/pitElementUi/input.md +800 -0
  160. package/docs/pitElementUi/installation.md +9 -0
  161. package/docs/pitElementUi/layout-column.md +376 -0
  162. package/docs/pitElementUi/layout-tree.md +715 -0
  163. package/docs/pitElementUi/layout.md +354 -0
  164. package/docs/pitElementUi/link.md +66 -0
  165. package/docs/pitElementUi/loading.md +208 -0
  166. package/docs/pitElementUi/menu.md +403 -0
  167. package/docs/pitElementUi/message-box.md +326 -0
  168. package/docs/pitElementUi/message.md +219 -0
  169. package/docs/pitElementUi/notification.md +311 -0
  170. package/docs/pitElementUi/page-header.md +40 -0
  171. package/docs/pitElementUi/pagination.md +200 -0
  172. package/docs/pitElementUi/popconfirm.md +60 -0
  173. package/docs/pitElementUi/popover.md +167 -0
  174. package/docs/pitElementUi/progress.md +178 -0
  175. package/docs/pitElementUi/quickstart.md +290 -0
  176. package/docs/pitElementUi/radio.md +211 -0
  177. package/docs/pitElementUi/rate.md +135 -0
  178. package/docs/pitElementUi/result.md +76 -0
  179. package/docs/pitElementUi/select-tree.md +661 -0
  180. package/docs/pitElementUi/select.md +586 -0
  181. package/docs/pitElementUi/skeleton.md +316 -0
  182. package/docs/pitElementUi/slider.md +237 -0
  183. package/docs/pitElementUi/steps.md +154 -0
  184. package/docs/pitElementUi/switch.md +142 -0
  185. package/docs/pitElementUi/table.md +4023 -0
  186. package/docs/pitElementUi/tabs.md +303 -0
  187. package/docs/pitElementUi/tag.md +203 -0
  188. package/docs/pitElementUi/time-picker.md +199 -0
  189. package/docs/pitElementUi/timeline.md +154 -0
  190. package/docs/pitElementUi/tooltip.md +177 -0
  191. package/docs/pitElementUi/transfer.md +249 -0
  192. package/docs/pitElementUi/transition.md +155 -0
  193. package/docs/pitElementUi/tree.md +1157 -0
  194. package/docs/pitElementUi/typography.md +151 -0
  195. package/docs/pitElementUi/upload-table.md +39 -0
  196. package/docs/pitElementUi/upload.md +392 -0
  197. package/docs/pitElementUi/virtual-list.md +154 -0
  198. package/docs/pitElementUi/virtual-select-tree.md +243 -0
  199. package/docs/pitElementUi/virtual-select.md +451 -0
  200. package/docs/pitElementUi/virtual-table-column.md +1 -0
  201. package/docs/pitElementUi/virtual-table.md +490 -0
  202. package/docs/pitElementUi/virtual-tree.md +119 -0
  203. package/package.json +33 -0
@@ -0,0 +1,1157 @@
1
+ ## Tree 树形控件
2
+
3
+ 用清晰的层级结构展示信息,可展开或折叠。
4
+
5
+ ### 基础用法
6
+
7
+ 基础的树形结构展示。
8
+
9
+ :::demo
10
+ ```html
11
+ <el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"></el-tree>
12
+
13
+ <script>
14
+ export default {
15
+ data() {
16
+ return {
17
+ data: [{
18
+ label: '一级 1',
19
+ children: [{
20
+ label: '二级 1-1',
21
+ children: [{
22
+ label: '三级 1-1-1'
23
+ }]
24
+ }]
25
+ }, {
26
+ label: '一级 2',
27
+ children: [{
28
+ label: '二级 2-1',
29
+ children: [{
30
+ label: '三级 2-1-1'
31
+ }]
32
+ }, {
33
+ label: '二级 2-2',
34
+ children: [{
35
+ label: '三级 2-2-1'
36
+ }]
37
+ }]
38
+ }, {
39
+ label: '一级 3',
40
+ children: [{
41
+ label: '二级 3-1',
42
+ children: [{
43
+ label: '三级 3-1-1'
44
+ }]
45
+ }, {
46
+ label: '二级 3-2',
47
+ children: [{
48
+ label: '三级 3-2-1'
49
+ }]
50
+ }]
51
+ }],
52
+ defaultProps: {
53
+ children: 'children',
54
+ label: 'label'
55
+ }
56
+ };
57
+ },
58
+ methods: {
59
+ handleNodeClick(data) {
60
+ console.log(data);
61
+ }
62
+ }
63
+ };
64
+ </script>
65
+ ```
66
+ :::
67
+
68
+ ### 可选择
69
+
70
+ 适用于需要选择层级时使用。
71
+
72
+ :::demo 本例还展示了动态加载节点数据的方法。
73
+ ```html
74
+ <el-tree
75
+ :props="props"
76
+ :load="loadNode"
77
+ lazy
78
+ show-checkbox
79
+ @check-change="handleCheckChange">
80
+ </el-tree>
81
+
82
+ <script>
83
+ export default {
84
+ data() {
85
+ return {
86
+ props: {
87
+ label: 'name',
88
+ children: 'zones'
89
+ },
90
+ count: 1
91
+ };
92
+ },
93
+ methods: {
94
+ handleCheckChange(data, checked, indeterminate) {
95
+ console.log(data, checked, indeterminate);
96
+ },
97
+ handleNodeClick(data) {
98
+ console.log(data);
99
+ },
100
+ loadNode(node, resolve) {
101
+ if (node.level === 0) {
102
+ return resolve([{ name: 'region1' }, { name: 'region2' }]);
103
+ }
104
+ if (node.level > 3) return resolve([]);
105
+
106
+ var hasChild;
107
+ if (node.data.name === 'region1') {
108
+ hasChild = true;
109
+ } else if (node.data.name === 'region2') {
110
+ hasChild = false;
111
+ } else {
112
+ hasChild = Math.random() > 0.5;
113
+ }
114
+
115
+ setTimeout(() => {
116
+ var data;
117
+ if (hasChild) {
118
+ data = [{
119
+ name: 'zone' + this.count++
120
+ }, {
121
+ name: 'zone' + this.count++
122
+ }];
123
+ } else {
124
+ data = [];
125
+ }
126
+
127
+ resolve(data);
128
+ }, 500);
129
+ }
130
+ }
131
+ };
132
+ </script>
133
+ ```
134
+ :::
135
+
136
+ ### 懒加载自定义叶子节点
137
+
138
+ :::demo 由于在点击节点时才进行该层数据的获取,默认情况下 Tree 无法预知某个节点是否为叶子节点,所以会为每个节点添加一个下拉按钮,如果节点没有下层数据,则点击后下拉按钮会消失。同时,你也可以提前告知 Tree 某个节点是否为叶子节点,从而避免在叶子节点前渲染下拉按钮。
139
+ ```html
140
+ <el-tree
141
+ :props="props"
142
+ :load="loadNode"
143
+ lazy
144
+ show-checkbox>
145
+ </el-tree>
146
+
147
+ <script>
148
+ export default {
149
+ data() {
150
+ return {
151
+ props: {
152
+ label: 'name',
153
+ children: 'zones',
154
+ isLeaf: 'leaf'
155
+ },
156
+ };
157
+ },
158
+ methods: {
159
+ loadNode(node, resolve) {
160
+ if (node.level === 0) {
161
+ return resolve([{ name: 'region' }]);
162
+ }
163
+ if (node.level > 1) return resolve([]);
164
+
165
+ setTimeout(() => {
166
+ const data = [{
167
+ name: 'leaf',
168
+ leaf: true
169
+ }, {
170
+ name: 'zone'
171
+ }];
172
+
173
+ resolve(data);
174
+ }, 500);
175
+ }
176
+ }
177
+ };
178
+ </script>
179
+ ```
180
+ :::
181
+
182
+ ### 默认展开和默认选中
183
+ 可将 Tree 的某些节点设置为默认展开或默认选中
184
+
185
+ :::demo 分别通过`default-expanded-keys`和`default-checked-keys`设置默认展开和默认选中的节点。需要注意的是,此时必须设置`node-key`,其值为节点数据中的一个字段名,该字段在整棵树中是唯一的。
186
+ ```html
187
+ <el-tree
188
+ :data="data"
189
+ show-checkbox
190
+ node-key="id"
191
+ :default-expanded-keys="[2, 3]"
192
+ :default-checked-keys="[5]"
193
+ :props="defaultProps">
194
+ </el-tree>
195
+
196
+ <script>
197
+ export default {
198
+ data() {
199
+ return {
200
+ data: [{
201
+ id: 1,
202
+ label: '一级 1',
203
+ children: [{
204
+ id: 4,
205
+ label: '二级 1-1',
206
+ children: [{
207
+ id: 9,
208
+ label: '三级 1-1-1'
209
+ }, {
210
+ id: 10,
211
+ label: '三级 1-1-2'
212
+ }]
213
+ }]
214
+ }, {
215
+ id: 2,
216
+ label: '一级 2',
217
+ children: [{
218
+ id: 5,
219
+ label: '二级 2-1'
220
+ }, {
221
+ id: 6,
222
+ label: '二级 2-2'
223
+ }]
224
+ }, {
225
+ id: 3,
226
+ label: '一级 3',
227
+ children: [{
228
+ id: 7,
229
+ label: '二级 3-1'
230
+ }, {
231
+ id: 8,
232
+ label: '二级 3-2'
233
+ }]
234
+ }],
235
+ defaultProps: {
236
+ children: 'children',
237
+ label: 'label'
238
+ }
239
+ };
240
+ }
241
+ };
242
+ </script>
243
+ ```
244
+ :::
245
+
246
+ ### 禁用状态
247
+ 可将 Tree 的某些节点设置为禁用状态
248
+
249
+ :::demo 通过`disabled`设置禁用状态。
250
+ ```html
251
+ <el-tree
252
+ :data="data"
253
+ show-checkbox
254
+ node-key="id"
255
+ :default-expanded-keys="[2, 3]"
256
+ :default-checked-keys="[5]">
257
+ </el-tree>
258
+
259
+ <script>
260
+ export default {
261
+ data() {
262
+ return {
263
+ data: [{
264
+ id: 1,
265
+ label: '一级 2',
266
+ children: [{
267
+ id: 3,
268
+ label: '二级 2-1',
269
+ children: [{
270
+ id: 4,
271
+ label: '三级 3-1-1'
272
+ }, {
273
+ id: 5,
274
+ label: '三级 3-1-2',
275
+ disabled: true
276
+ }]
277
+ }, {
278
+ id: 2,
279
+ label: '二级 2-2',
280
+ disabled: true,
281
+ children: [{
282
+ id: 6,
283
+ label: '三级 3-2-1'
284
+ }, {
285
+ id: 7,
286
+ label: '三级 3-2-2',
287
+ disabled: true
288
+ }]
289
+ }]
290
+ }],
291
+ defaultProps: {
292
+ children: 'children',
293
+ label: 'label'
294
+ }
295
+ };
296
+ }
297
+ };
298
+ </script>
299
+ ```
300
+ :::
301
+
302
+ ### 树节点的选择
303
+
304
+ :::demo 本例展示如何获取和设置选中节点。获取和设置各有两种方式:通过 node 或通过 key。如果需要通过 key 来获取或设置,则必须设置`node-key`。
305
+ ```html
306
+ <el-tree
307
+ :data="data"
308
+ show-checkbox
309
+ default-expand-all
310
+ node-key="id"
311
+ ref="tree"
312
+ highlight-current
313
+ :props="defaultProps">
314
+ </el-tree>
315
+
316
+ <div class="buttons">
317
+ <el-button @click="getCheckedNodes">通过 node 获取</el-button>
318
+ <el-button @click="getCheckedKeys">通过 key 获取</el-button>
319
+ <el-button @click="setCheckedNodes">通过 node 设置</el-button>
320
+ <el-button @click="setCheckedKeys">通过 key 设置</el-button>
321
+ <el-button @click="resetChecked">清空</el-button>
322
+ </div>
323
+
324
+ <script>
325
+ export default {
326
+ methods: {
327
+ getCheckedNodes() {
328
+ console.log(this.$refs.tree.getCheckedNodes());
329
+ },
330
+ getCheckedKeys() {
331
+ console.log(this.$refs.tree.getCheckedKeys());
332
+ },
333
+ setCheckedNodes() {
334
+ this.$refs.tree.setCheckedNodes([{
335
+ id: 5,
336
+ label: '二级 2-1'
337
+ }, {
338
+ id: 9,
339
+ label: '三级 1-1-1'
340
+ }]);
341
+ },
342
+ setCheckedKeys() {
343
+ this.$refs.tree.setCheckedKeys([3]);
344
+ },
345
+ resetChecked() {
346
+ this.$refs.tree.setCheckedKeys([]);
347
+ }
348
+ },
349
+
350
+ data() {
351
+ return {
352
+ data: [{
353
+ id: 1,
354
+ label: '一级 1',
355
+ children: [{
356
+ id: 4,
357
+ label: '二级 1-1',
358
+ children: [{
359
+ id: 9,
360
+ label: '三级 1-1-1'
361
+ }, {
362
+ id: 10,
363
+ label: '三级 1-1-2'
364
+ }]
365
+ }]
366
+ }, {
367
+ id: 2,
368
+ label: '一级 2',
369
+ children: [{
370
+ id: 5,
371
+ label: '二级 2-1'
372
+ }, {
373
+ id: 6,
374
+ label: '二级 2-2'
375
+ }]
376
+ }, {
377
+ id: 3,
378
+ label: '一级 3',
379
+ children: [{
380
+ id: 7,
381
+ label: '二级 3-1'
382
+ }, {
383
+ id: 8,
384
+ label: '二级 3-2'
385
+ }]
386
+ }],
387
+ defaultProps: {
388
+ children: 'children',
389
+ label: 'label'
390
+ }
391
+ };
392
+ }
393
+ };
394
+ </script>
395
+ ```
396
+ :::
397
+
398
+ ### 自定义节点内容
399
+ 节点的内容支持自定义,可以在节点区添加按钮或图标等内容
400
+
401
+ :::demo 可以通过两种方法进行树节点内容的自定义:`render-content`和 scoped slot。使用`render-content`指定渲染函数,该函数返回需要的节点区内容即可。渲染函数的用法请参考 Vue 文档。使用 scoped slot 会传入两个参数`node`和`data`,分别表示当前节点的 Node 对象和当前节点的数据。注意:由于 jsfiddle 不支持 JSX 语法,所以`render-content`示例在 jsfiddle 中无法运行。但是在实际的项目中,只要正确地配置了相关依赖,就可以正常运行。
402
+ ```html
403
+ <div class="custom-tree-container">
404
+ <div class="block">
405
+ <p>使用 render-content</p>
406
+ <el-tree
407
+ :data="data"
408
+ show-checkbox
409
+ node-key="id"
410
+ default-expand-all
411
+ :expand-on-click-node="false"
412
+ @node-dbclick="handleDblclick"
413
+ :render-content="renderContent">
414
+ </el-tree>
415
+ </div>
416
+ <div class="block">
417
+ <p>使用 scoped slot</p>
418
+ <el-tree
419
+ :data="data"
420
+ show-checkbox
421
+ node-key="id"
422
+ default-expand-all
423
+ :expand-on-click-node="false">
424
+ <span class="custom-tree-node" slot-scope="{ node, data }">
425
+ <span>{{ node.label }}</span>
426
+ <span>
427
+ <el-button
428
+ type="text"
429
+ size="mini"
430
+ @click="() => append(data)">
431
+ Append
432
+ </el-button>
433
+ <el-button
434
+ type="text"
435
+ size="mini"
436
+ @click="() => remove(node, data)">
437
+ Delete
438
+ </el-button>
439
+ </span>
440
+ </span>
441
+ </el-tree>
442
+ </div>
443
+ </div>
444
+
445
+ <script>
446
+ let id = 1000;
447
+
448
+ export default {
449
+ data() {
450
+ const data = [{
451
+ id: 1,
452
+ label: '一级 1',
453
+ children: [{
454
+ id: 4,
455
+ label: '二级 1-1',
456
+ children: [{
457
+ id: 9,
458
+ label: '三级 1-1-1'
459
+ }, {
460
+ id: 10,
461
+ label: '三级 1-1-2'
462
+ }]
463
+ }]
464
+ }, {
465
+ id: 2,
466
+ label: '一级 2',
467
+ children: [{
468
+ id: 5,
469
+ label: '二级 2-1'
470
+ }, {
471
+ id: 6,
472
+ label: '二级 2-2'
473
+ }]
474
+ }, {
475
+ id: 3,
476
+ label: '一级 3',
477
+ children: [{
478
+ id: 7,
479
+ label: '二级 3-1'
480
+ }, {
481
+ id: 8,
482
+ label: '二级 3-2'
483
+ }]
484
+ }];
485
+ return {
486
+ data: JSON.parse(JSON.stringify(data)),
487
+ data: JSON.parse(JSON.stringify(data))
488
+ }
489
+ },
490
+
491
+ methods: {
492
+ handleDblclick(data, node, event) {
493
+ console.log(data, node, event);
494
+ },
495
+ append(data) {
496
+ const newChild = { id: id++, label: 'testtest', children: [] };
497
+ if (!data.children) {
498
+ this.$set(data, 'children', []);
499
+ }
500
+ data.children.push(newChild);
501
+ },
502
+
503
+ remove(node, data) {
504
+ const parent = node.parent;
505
+ const children = parent.data.children || parent.data;
506
+ const index = children.findIndex(d => d.id === data.id);
507
+ children.splice(index, 1);
508
+ },
509
+
510
+ renderContent(h, { node, data, store }) {
511
+ return (
512
+ <span class="custom-tree-node">
513
+ <span>{node.label}</span>
514
+ <span>
515
+ <el-button size="mini" type="text" on-click={ () => this.append(data) }>Append</el-button>
516
+ <el-button size="mini" type="text" on-click={ () => this.remove(node, data) }>Delete</el-button>
517
+ </span>
518
+ </span>);
519
+ }
520
+ }
521
+ };
522
+ </script>
523
+
524
+ <style>
525
+ .custom-tree-node {
526
+ flex: 1;
527
+ display: flex;
528
+ align-items: center;
529
+ justify-content: space-between;
530
+ font-size: 14px;
531
+ padding-right: 8px;
532
+ }
533
+ </style>
534
+ ```
535
+ :::
536
+
537
+ ### 节点过滤
538
+ 通过关键字过滤树节点
539
+
540
+ :::demo 在需要对节点进行过滤时,调用 Tree 实例的`filter`方法,参数为关键字。需要注意的是,此时需要设置`filter-node-method`,值为过滤函数。
541
+ ```html
542
+ <el-input
543
+ placeholder="输入关键字进行过滤"
544
+ v-model="filterText">
545
+ </el-input>
546
+
547
+ <el-tree
548
+ class="filter-tree"
549
+ :data="data"
550
+ :props="defaultProps"
551
+ default-expand-all
552
+ :filter-node-method="filterNode"
553
+ ref="tree">
554
+ </el-tree>
555
+
556
+ <script>
557
+ export default {
558
+ watch: {
559
+ filterText(val) {
560
+ this.$refs.tree.filter(val);
561
+ }
562
+ },
563
+
564
+ methods: {
565
+ filterNode(value, data) {
566
+ if (!value) return true;
567
+ return data.label.indexOf(value) !== -1;
568
+ }
569
+ },
570
+
571
+ data() {
572
+ return {
573
+ filterText: '',
574
+ data: [{
575
+ id: 1,
576
+ label: '一级 1',
577
+ children: [{
578
+ id: 4,
579
+ label: '二级 1-1',
580
+ children: [{
581
+ id: 9,
582
+ label: '三级 1-1-1'
583
+ }, {
584
+ id: 10,
585
+ label: '三级 1-1-2'
586
+ }]
587
+ }]
588
+ }, {
589
+ id: 2,
590
+ label: '一级 2',
591
+ children: [{
592
+ id: 5,
593
+ label: '二级 2-1'
594
+ }, {
595
+ id: 6,
596
+ label: '二级 2-2'
597
+ }]
598
+ }, {
599
+ id: 3,
600
+ label: '一级 3',
601
+ children: [{
602
+ id: 7,
603
+ label: '二级 3-1'
604
+ }, {
605
+ id: 8,
606
+ label: '二级 3-2'
607
+ }]
608
+ }],
609
+ defaultProps: {
610
+ children: 'children',
611
+ label: 'label'
612
+ }
613
+ };
614
+ }
615
+ };
616
+ </script>
617
+ ```
618
+ :::
619
+
620
+ ### 手风琴模式
621
+
622
+ 对于同一级的节点,每次只能展开一个
623
+
624
+ :::demo
625
+ ```html
626
+ <el-tree
627
+ :data="data"
628
+ :props="defaultProps"
629
+ accordion
630
+ @node-click="handleNodeClick">
631
+ </el-tree>
632
+
633
+ <script>
634
+ export default {
635
+ data() {
636
+ return {
637
+ data: [{
638
+ label: '一级 1',
639
+ children: [{
640
+ label: '二级 1-1',
641
+ children: [{
642
+ label: '三级 1-1-1'
643
+ }]
644
+ }]
645
+ }, {
646
+ label: '一级 2',
647
+ children: [{
648
+ label: '二级 2-1',
649
+ children: [{
650
+ label: '三级 2-1-1'
651
+ }]
652
+ }, {
653
+ label: '二级 2-2',
654
+ children: [{
655
+ label: '三级 2-2-1'
656
+ }]
657
+ }]
658
+ }, {
659
+ label: '一级 3',
660
+ children: [{
661
+ label: '二级 3-1',
662
+ children: [{
663
+ label: '三级 3-1-1'
664
+ }]
665
+ }, {
666
+ label: '二级 3-2',
667
+ children: [{
668
+ label: '三级 3-2-1'
669
+ }]
670
+ }]
671
+ }],
672
+ defaultProps: {
673
+ children: 'children',
674
+ label: 'label'
675
+ }
676
+ };
677
+ },
678
+ methods: {
679
+ handleNodeClick(data) {
680
+ console.log(data);
681
+ }
682
+ }
683
+ };
684
+ </script>
685
+ ```
686
+ :::
687
+
688
+ ### 可拖拽节点
689
+
690
+ 通过 draggable 属性可让节点变为可拖拽。
691
+
692
+ :::demo
693
+ ```html
694
+ <el-tree
695
+ :data="data"
696
+ node-key="id"
697
+ default-expand-all
698
+ @node-drag-start="handleDragStart"
699
+ @node-drag-enter="handleDragEnter"
700
+ @node-drag-leave="handleDragLeave"
701
+ @node-drag-over="handleDragOver"
702
+ @node-drag-end="handleDragEnd"
703
+ @node-drop="handleDrop"
704
+ draggable
705
+ :allow-drop="allowDrop"
706
+ :allow-drag="allowDrag">
707
+ </el-tree>
708
+
709
+ <script>
710
+ export default {
711
+ data() {
712
+ return {
713
+ data: [{
714
+ id: 1,
715
+ label: '一级 1',
716
+ children: [{
717
+ id: 4,
718
+ label: '二级 1-1',
719
+ children: [{
720
+ id: 9,
721
+ label: '三级 1-1-1'
722
+ }, {
723
+ id: 10,
724
+ label: '三级 1-1-2'
725
+ }]
726
+ }]
727
+ }, {
728
+ id: 2,
729
+ label: '一级 2',
730
+ children: [{
731
+ id: 5,
732
+ label: '二级 2-1'
733
+ }, {
734
+ id: 6,
735
+ label: '二级 2-2'
736
+ }]
737
+ }, {
738
+ id: 3,
739
+ label: '一级 3',
740
+ children: [{
741
+ id: 7,
742
+ label: '二级 3-1'
743
+ }, {
744
+ id: 8,
745
+ label: '二级 3-2',
746
+ children: [{
747
+ id: 11,
748
+ label: '三级 3-2-1'
749
+ }, {
750
+ id: 12,
751
+ label: '三级 3-2-2'
752
+ }, {
753
+ id: 13,
754
+ label: '三级 3-2-3'
755
+ }]
756
+ }]
757
+ }],
758
+ defaultProps: {
759
+ children: 'children',
760
+ label: 'label'
761
+ }
762
+ };
763
+ },
764
+ methods: {
765
+ handleDragStart(node, ev) {
766
+ console.log('drag start', node);
767
+ },
768
+ handleDragEnter(draggingNode, dropNode, ev) {
769
+ console.log('tree drag enter: ', dropNode.label);
770
+ },
771
+ handleDragLeave(draggingNode, dropNode, ev) {
772
+ console.log('tree drag leave: ', dropNode.label);
773
+ },
774
+ handleDragOver(draggingNode, dropNode, ev) {
775
+ console.log('tree drag over: ', dropNode.label);
776
+ },
777
+ handleDragEnd(draggingNode, dropNode, dropType, ev) {
778
+ console.log('tree drag end: ', dropNode && dropNode.label, dropType);
779
+ },
780
+ handleDrop(draggingNode, dropNode, dropType, ev) {
781
+ console.log('tree drop: ', dropNode.label, dropType);
782
+ },
783
+ allowDrop(draggingNode, dropNode, type) {
784
+ if (dropNode.data.label === '二级 3-1') {
785
+ return type !== 'inner';
786
+ } else {
787
+ return true;
788
+ }
789
+ },
790
+ allowDrag(draggingNode) {
791
+ return draggingNode.data.label.indexOf('三级 3-2-2') === -1;
792
+ }
793
+ }
794
+ };
795
+ </script>
796
+ ```
797
+ :::
798
+
799
+ ### 虚拟滚动多选
800
+
801
+ 通过 `height` 切换为虚拟滚动,使长列表拥有更好的表现
802
+
803
+ **注意:当启动虚拟滚动后,懒加载、可拖拽节点功能将失效**
804
+ :::demo
805
+ ```html
806
+ <el-tree :data="data" nodeKey="key" :props="defaultProps" default-expand-all height="300px" show-checkbox @node-click="handleClick" @node-dbclick="handleDblclick" />
807
+
808
+ <script>
809
+ export default {
810
+ data() {
811
+ function dig(path = '0', level = 3) {
812
+ const list = [];
813
+ for (let i = 0; i < 10; i += 1) {
814
+ const key = `${path}-${i}`;
815
+ const treeNode = {
816
+ title: key,
817
+ key,
818
+ };
819
+
820
+ if (level > 0) {
821
+ treeNode.children = dig(key, level - 1);
822
+ }
823
+
824
+ list.push(treeNode);
825
+ }
826
+ return list;
827
+ }
828
+ return {
829
+ data: dig(),
830
+ defaultProps: {
831
+ children: 'children',
832
+ label: 'title'
833
+ }
834
+ };
835
+ },
836
+ methods: {
837
+ handleDblclick(data, node, event) {
838
+ console.log(2)
839
+ },
840
+ handleClick() {
841
+ console.log(1)
842
+ }
843
+ }
844
+ };
845
+ </script>
846
+ ```
847
+ :::
848
+
849
+ ### 虚拟滚动多选搜索
850
+
851
+ 通过 `height` 切换为虚拟滚动,使长列表拥有更好的表现
852
+
853
+ **注意:当启动虚拟滚动后,懒加载、可拖拽节点功能将失效**
854
+ :::demo
855
+ ```html
856
+ <el-input
857
+ placeholder="输入关键字进行过滤"
858
+ v-model="filterText">
859
+ </el-input>
860
+
861
+ <el-button @click="add">新增10万条数据</el-button>
862
+
863
+ <el-tree
864
+ :data="data"
865
+ nodeKey="key"
866
+ :props="defaultProps"
867
+ default-expand-all
868
+ height="300px"
869
+ show-checkbox
870
+ :filter-node-method="filterNode"
871
+ ref="tree"
872
+ />
873
+ <div class="buttons">
874
+ <el-button @click="getCheckedNodes">通过 key 获取</el-button>
875
+ <el-button @click="getCheckedKeys">通过 node 获取</el-button>
876
+ <el-button @click="setCheckedKeys">通过 key 设置</el-button>
877
+ <el-button @click="resetChecked">通过 node 设置</el-button>
878
+ <el-button @click="resetChecked2">清空</el-button>
879
+ </div>
880
+ <script>
881
+ export default {
882
+ data() {
883
+ function dig(path = '0', level = 3) {
884
+ const list = [];
885
+ for (let i = 0; i < 10; i += 1) {
886
+ const key = `${path}-${i}`;
887
+ const treeNode = {
888
+ title: key,
889
+ key,
890
+ };
891
+
892
+ if (level > 0) {
893
+ treeNode.children = dig(key, level - 1);
894
+ }
895
+
896
+ list.push(treeNode);
897
+ }
898
+ return list;
899
+ }
900
+ function dig2(path = '0', level = 4) {
901
+ const list = [];
902
+ for (let i = 10; i < 20; i += 1) {
903
+ const key = `${path}-${i}`;
904
+ const treeNode = {
905
+ title: key,
906
+ key,
907
+ };
908
+
909
+ if (level > 0) {
910
+ treeNode.children = dig(key, level - 1);
911
+ }
912
+
913
+ list.push(treeNode);
914
+ }
915
+ return list;
916
+ }
917
+ return {
918
+ data: dig(),
919
+ data2: dig2(),
920
+ defaultProps: {
921
+ children: 'children',
922
+ label: 'title'
923
+ },
924
+ filterText: '',
925
+ };
926
+ },
927
+ watch: {
928
+ filterText(val) {
929
+ this.$refs.tree.filter(val);
930
+ }
931
+ },
932
+
933
+ methods: {
934
+ filterNode(value, data) {
935
+ if (!value) return true;
936
+ return data.title.indexOf(value) !== -1;
937
+ },
938
+ add() {
939
+ this.data = [...this.data, ...this.data2]
940
+ },
941
+ getCheckedNodes() {
942
+ console.log(this.$refs.tree.getCheckedKeys());
943
+ },
944
+ getCheckedKeys() {
945
+ console.log(this.$refs.tree.getCheckedNodes());
946
+ },
947
+ setCheckedKeys() {
948
+ this.$refs.tree.setCheckedKeys(['0-0-0-0-1', '0-0-0-0-2']);
949
+ },
950
+ resetChecked() {
951
+ this.$refs.tree.setCheckedNodes([
952
+ {key: "0-0-0-0-2", title: "0-0-0-0-2"}
953
+ ]);
954
+ },
955
+ resetChecked2() {
956
+ this.$refs.tree.setCheckedKeys([]);
957
+ }
958
+ },
959
+ };
960
+ </script>
961
+ ```
962
+ :::
963
+
964
+ ### 虚拟滚动单选
965
+
966
+ 通过 `height` 切换为虚拟滚动,使长列表拥有更好的表现
967
+
968
+ **注意:当启动虚拟滚动后,懒加载、可拖拽节点功能将失效**
969
+ :::demo
970
+ ```html
971
+ <el-input
972
+ placeholder="输入关键字进行过滤"
973
+ v-model="filterText">
974
+ </el-input>
975
+
976
+ <el-tree
977
+ ref="tree"
978
+ :data="data"
979
+ nodeKey="key"
980
+ highlight-current
981
+ :props="defaultProps"
982
+ default-expand-all
983
+ :filter-node-method="filterNode"
984
+ @node-click="handleNodeClick"
985
+ height="300px">
986
+ <span class="custom-tree-node" slot-scope="{ node, data }">
987
+ <span>{{ node.label }}</span>
988
+ <span>
989
+ <el-button
990
+ type="text"
991
+ size="mini"
992
+ @click="() => append(data)">
993
+ Append
994
+ </el-button>
995
+ <el-button
996
+ type="text"
997
+ size="mini"
998
+ @click="() => remove(node, data)">
999
+ Delete
1000
+ </el-button>
1001
+ </span>
1002
+ </span>
1003
+ </el-tree>
1004
+
1005
+ <div class="buttons">
1006
+ <el-button @click="getCheckedNodes">通过 key 获取</el-button>
1007
+ <el-button @click="getCheckedKeys">通过 node 获取</el-button>
1008
+ <el-button @click="setCheckedKeys">通过 key 设置</el-button>
1009
+ <el-button @click="resetChecked">通过 node 设置</el-button>
1010
+ </div>
1011
+
1012
+ <p>点击的结果: {{nodeData}}</p>
1013
+ <script>
1014
+ export default {
1015
+ data() {
1016
+ function dig(path = '0', level = 3) {
1017
+ const list = [];
1018
+ for (let i = 0; i < 10; i += 1) {
1019
+ const key = `${path}-${i}`;
1020
+ const treeNode = {
1021
+ title: key,
1022
+ key,
1023
+ };
1024
+
1025
+ if (level > 0) {
1026
+ treeNode.children = dig(key, level - 1);
1027
+ }
1028
+
1029
+ list.push(treeNode);
1030
+ }
1031
+ return list;
1032
+ }
1033
+ return {
1034
+ data: dig(),
1035
+ defaultProps: {
1036
+ children: 'children',
1037
+ label: 'title'
1038
+ },
1039
+ filterText: '',
1040
+ nodeData: null
1041
+ };
1042
+ },
1043
+ watch: {
1044
+ filterText(val) {
1045
+ this.$refs.tree.filter(val);
1046
+ }
1047
+ },
1048
+ methods: {
1049
+ filterNode(value, data) {
1050
+ if (!value) return true;
1051
+ return data.title.indexOf(value) !== -1;
1052
+ },
1053
+ getCheckedNodes() {
1054
+ console.log(this.$refs.tree.getCurrentKey());
1055
+ },
1056
+ getCheckedKeys() {
1057
+ console.log(this.$refs.tree.getCurrentNode());
1058
+ },
1059
+ setCheckedKeys() {
1060
+ this.$refs.tree.setCurrentKey('0-0-0-0-1');
1061
+ },
1062
+ resetChecked() {
1063
+ this.$refs.tree.setCurrentNode({key: "0-0-0-0-2", title: "0-0-0-0-2"});
1064
+ },
1065
+ handleNodeClick(data){
1066
+ this.nodeData = data.key
1067
+ }
1068
+ }
1069
+ };
1070
+ </script>
1071
+ ```
1072
+ :::
1073
+
1074
+ ### Attributes
1075
+ | 参数 | 说明 | 类型 | 可选值 | 默认值 |
1076
+ | --------------------- | ---------------------------------------- | --------------------------- | ---- | ----- |
1077
+ | data | 展示数据 | array | — | — |
1078
+ | empty-text | 内容为空的时候展示的文本 | String | — | — |
1079
+ | node-key | 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 | String | — | — |
1080
+ | props | 配置选项,具体看下表 | object | — | — |
1081
+ | render-after-expand | 是否在第一次展开某个树节点后才渲染其子节点 | boolean | — | true |
1082
+ | load | 加载子树数据的方法,仅当 lazy 属性为true 时生效 | function(node, resolve) | — | — |
1083
+ | render-content | 树节点的内容区的渲染 Function | Function(h, { node, data, store } | — | — |
1084
+ | highlight-current | 是否高亮当前选中节点,默认值是 false。 | boolean | — | false |
1085
+ | default-expand-all | 是否默认展开所有节点 | boolean | — | false |
1086
+ | expand-on-click-node | 是否在点击节点的时候展开或者收缩节点, 默认值为 true,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。 | boolean | — | true |
1087
+ | check-on-click-node | 是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点。 | boolean | — | false |
1088
+ | auto-expand-parent | 展开子节点的时候是否自动展开父节点 | boolean | — | true |
1089
+ | default-expanded-keys | 默认展开的节点的 key 的数组 | array | — | — |
1090
+ | show-checkbox | 节点是否可被选择 | boolean | — | false |
1091
+ | check-strictly | 在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 false | boolean | — | false |
1092
+ | default-checked-keys | 默认勾选的节点的 key 的数组 | array | — | — |
1093
+ | current-node-key | 当前选中的节点 | string, number | — | — |
1094
+ | filter-node-method | 对树节点进行筛选时执行的方法,返回 true 表示这个节点可以显示,返回 false 则表示这个节点会被隐藏 | Function(value, data, node) | — | — |
1095
+ | accordion | 是否每次只打开一个同级树节点展开 | boolean | — | false |
1096
+ | indent | 相邻级节点间的水平缩进,单位为像素 | number | — | 16 |
1097
+ | icon-class | 自定义树节点的图标 | string | - | - |
1098
+ | lazy | 是否懒加载子节点,需与 load 方法结合使用 | boolean | — | false |
1099
+ | draggable | 是否开启拖拽节点功能 | boolean | — | false |
1100
+ | allow-drag | 判断节点能否被拖拽 | Function(node) | — | — |
1101
+ | allow-drop | 拖拽时判定目标节点能否被放置。`type` 参数有三种情况:'prev'、'inner' 和 'next',分别表示放置在目标节点前、插入至目标节点和放置在目标节点后 | Function(draggingNode, dropNode, type) | — | — |
1102
+
1103
+ ### props
1104
+ | 参数 | 说明 | 类型 | 可选值 | 默认值 |
1105
+ | -------- | ----------------- | ------ | ---- | ---- |
1106
+ | label | 指定节点标签为节点对象的某个属性值 | string, function(data, node) | — | — |
1107
+ | children | 指定子树为节点对象的某个属性值 | string | — | — |
1108
+ | disabled | 指定节点选择框是否禁用为节点对象的某个属性值 | boolean, function(data, node) | — | — |
1109
+ | isLeaf | 指定节点是否为叶子节点,仅在指定了 lazy 属性的情况下生效 | boolean, function(data, node) | — | — |
1110
+
1111
+ ### 方法
1112
+ `Tree` 内部使用了 Node 类型的对象来包装用户传入的数据,用来保存目前节点的状态。
1113
+ `Tree` 拥有如下方法:
1114
+
1115
+ | 方法名 | 说明 | 参数 |
1116
+ | --------------- | ---------------------------------------- | ---------------------------------------- |
1117
+ | filter | 对树节点进行筛选操作 | 接收一个任意类型的参数,该参数会在 filter-node-method 中作为第一个参数 |
1118
+ | updateKeyChildren | 通过 keys 设置节点子元素,使用此方法必须设置 node-key 属性 | (key, data) 接收两个参数,1. 节点 key 2. 节点数据的数组 |
1119
+ | getCheckedNodes | 若节点可被选择(即 `show-checkbox` 为 `true`),则返回目前被选中的节点所组成的数组 | (leafOnly, includeHalfChecked) 接收两个 boolean 类型的参数,1. 是否只是叶子节点,默认值为 `false` 2. 是否包含半选节点,默认值为 `false` |
1120
+ | setCheckedNodes | 设置目前勾选的节点,使用此方法必须设置 node-key 属性 | (nodes) 接收勾选节点数据的数组 |
1121
+ | getCheckedKeys | 若节点可被选择(即 `show-checkbox` 为 `true`),则返回目前被选中的节点的 key 所组成的数组 | (leafOnly) 接收一个 boolean 类型的参数,若为 `true` 则仅返回被选中的叶子节点的 keys,默认值为 `false`,3. 默认为滚动 |
1122
+ | setCheckedKeys | 通过 keys 设置目前勾选的节点,使用此方法必须设置 node-key 属性 | (keys, leafOnly, isScroll = true) 接收三个参数,1. 勾选节点的 key 的数组 2. boolean 类型的参数,若为 `true` 则仅设置叶子节点的选中状态,默认值为 `false`,3. 默认为滚动 |
1123
+ | setChecked | 通过 key / data 设置某个节点的勾选状态,使用此方法必须设置 node-key 属性 | (key/data, checked, deep) 接收三个参数,1. 勾选节点的 key 或者 data 2. boolean 类型,节点是否选中 3. boolean 类型,是否设置子节点 ,默认为 false |
1124
+ | getHalfCheckedNodes | 若节点可被选择(即 `show-checkbox` 为 `true`),则返回目前半选中的节点所组成的数组 | - |
1125
+ | getHalfCheckedKeys | 若节点可被选择(即 `show-checkbox` 为 `true`),则返回目前半选中的节点的 key 所组成的数组 | - |
1126
+ | getCurrentKey | 获取当前被选中节点的 key,使用此方法必须设置 node-key 属性,若没有节点被选中则返回 null | — |
1127
+ | getCurrentNode | 获取当前被选中节点的 data,若没有节点被选中则返回 null | — |
1128
+ | setCurrentKey | 通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 | (key, isScroll = true) 待被选节点的 key,若为 null 则取消当前高亮的节点,默认为滚动 |
1129
+ | setCurrentNode | 通过 node 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 | (node, isScroll = true) 待被选节点的 node,默认为滚动 |
1130
+ | getNode | 根据 data 或者 key 拿到 Tree 组件中的 node | (data) 要获得 node 的 key 或者 data |
1131
+ | remove | 删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性 | (data) 要删除的节点的 data 或者 node |
1132
+ | append | 为 Tree 中的一个节点追加一个子节点 | (data, parentNode) 接收两个参数,1. 要追加的子节点的 data 2. 子节点的 parent 的 data、key 或者 node |
1133
+ | insertBefore | 为 Tree 的一个节点的前面增加一个节点 | (data, refNode) 接收两个参数,1. 要增加的节点的 data 2. 要增加的节点的后一个节点的 data、key 或者 node |
1134
+ | insertAfter | 为 Tree 的一个节点的后面增加一个节点 | (data, refNode) 接收两个参数,1. 要增加的节点的 data 2. 要增加的节点的前一个节点的 data、key 或者 node |
1135
+ | setScrollToItem | 通过 index 下标来定位到具体的数据位置,使用此方法必须设置 node-key 属性 | (index) 待被选节点的 index |
1136
+
1137
+ ### Events
1138
+ | 事件名称 | 说明 | 回调参数 |
1139
+ | -------------- | -------------- | ---------------------------------------- |
1140
+ | node-click | 节点被点击时的回调 | 共三个参数,依次为:传递给 `data` 属性的数组中该节点所对应的对象、节点对应的 Node、节点组件本身。 |
1141
+ | node-contextmenu | 当某一节点被鼠标右键点击时会触发该事件 | 共四个参数,依次为:event、传递给 `data` 属性的数组中该节点所对应的对象、节点对应的 Node、节点组件本身。 |
1142
+ | check-change | 节点选中状态发生变化时的回调 | 共三个参数,依次为:传递给 `data` 属性的数组中该节点所对应的对象、节点本身是否被选中、节点的子树中是否有被选中的节点 |
1143
+ | check | 当复选框被点击的时候触发 | 共两个参数,依次为:传递给 `data` 属性的数组中该节点所对应的对象、树目前的选中状态对象,包含 checkedNodes、checkedKeys、halfCheckedNodes、halfCheckedKeys 四个属性 |
1144
+ | current-change | 当前选中节点变化时触发的事件 | 共两个参数,依次为:当前节点的数据,当前节点的 Node 对象 |
1145
+ | node-expand | 节点被展开时触发的事件 | 共三个参数,依次为:传递给 `data` 属性的数组中该节点所对应的对象、节点对应的 Node、节点组件本身 |
1146
+ | node-collapse | 节点被关闭时触发的事件 | 共三个参数,依次为:传递给 `data` 属性的数组中该节点所对应的对象、节点对应的 Node、节点组件本身 |
1147
+ | node-drag-start | 节点开始拖拽时触发的事件 | 共两个参数,依次为:被拖拽节点对应的 Node、event |
1148
+ | node-drag-enter | 拖拽进入其他节点时触发的事件 | 共三个参数,依次为:被拖拽节点对应的 Node、所进入节点对应的 Node、event |
1149
+ | node-drag-leave | 拖拽离开某个节点时触发的事件 | 共三个参数,依次为:被拖拽节点对应的 Node、所离开节点对应的 Node、event |
1150
+ | node-drag-over | 在拖拽节点时触发的事件(类似浏览器的 mouseover 事件) | 共三个参数,依次为:被拖拽节点对应的 Node、当前进入节点对应的 Node、event |
1151
+ | node-drag-end | 拖拽结束时(可能未成功)触发的事件 | 共四个参数,依次为:被拖拽节点对应的 Node、结束拖拽时最后进入的节点(可能为空)、被拖拽节点的放置位置(before、after、inner)、event |
1152
+ | node-drop | 拖拽成功完成时触发的事件 | 共四个参数,依次为:被拖拽节点对应的 Node、结束拖拽时最后进入的节点、被拖拽节点的放置位置(before、after、inner)、event |
1153
+
1154
+ ### Scoped Slot
1155
+ | name | 说明 |
1156
+ |------|--------|
1157
+ | — | 自定义树节点的内容,参数为 { node, data } |