ai.touchui-vue 1.30.2 → 1.30.3

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 (724) hide show
  1. package/README.md +21 -21
  2. package/lib/ai.touchui-vue.common.js +2087 -2092
  3. package/lib/chat.js +5 -5
  4. package/lib/collapse.js +2 -1
  5. package/lib/color.js +5 -5
  6. package/lib/date-picker.js +2 -1
  7. package/lib/date-range.js +11 -12
  8. package/lib/export.js +3 -3
  9. package/lib/index.js +1 -1
  10. package/lib/locale/format.js +10 -10
  11. package/lib/menu-icon.js +295 -295
  12. package/lib/mixins/migrating.js +20 -20
  13. package/lib/mixins/transition.js +14 -14
  14. package/lib/org.js +2 -1
  15. package/lib/page.js +2 -1
  16. package/lib/range.js +3 -3
  17. package/lib/static/{net-mix.293a4b6.svg → net-mix.dc6e414.svg} +7 -7
  18. package/lib/table.js +734 -740
  19. package/lib/utils/clickoutside.js +11 -11
  20. package/lib/utils/dom.js +13 -13
  21. package/lib/utils/filetransfer.js +4 -4
  22. package/lib/utils/jsencrypt/JSEncrypt.js +77 -77
  23. package/lib/utils/jsencrypt/JSEncryptRSAKey.js +115 -115
  24. package/lib/utils/jsencrypt/jselib/asn1js/asn1.js +4 -4
  25. package/lib/utils/jsencrypt/jselib/jsrsasign/asn1-1.0.js +734 -734
  26. package/lib/utils/jsencrypt/jselib/jsrsasign/yahoo.js +22 -22
  27. package/lib/utils/jsencrypt.js +260 -260
  28. package/lib/utils/md5.js +3 -3
  29. package/lib/utils/mime.js +2 -2
  30. package/lib/utils/ratio.js +54 -53
  31. package/lib/utils/sign.js +12 -12
  32. package/lib/utils/util.js +3 -3
  33. package/lib/utils/validate.js +11 -11
  34. package/package.json +159 -159
  35. package/packages/affix/index.js +8 -8
  36. package/packages/affix/src/affix.vue +139 -139
  37. package/packages/align/index.js +8 -8
  38. package/packages/align/src/directive.js +29 -29
  39. package/packages/animation/index.js +8 -8
  40. package/packages/animation/src/animation.vue +68 -68
  41. package/packages/article/index.js +8 -8
  42. package/packages/article/src/article.vue +23 -23
  43. package/packages/box/index.js +8 -8
  44. package/packages/box/src/box.vue +170 -170
  45. package/packages/button/index.js +8 -8
  46. package/packages/button/src/button.vue +162 -162
  47. package/packages/calendar/index.js +8 -8
  48. package/packages/calendar/src/calendar.vue +1142 -1142
  49. package/packages/card/index.js +10 -10
  50. package/packages/card/src/card-item.vue +92 -92
  51. package/packages/card/src/card.vue +175 -175
  52. package/packages/card-item/index.js +8 -8
  53. package/packages/cascader/index.js +8 -8
  54. package/packages/cascader/src/cascader.vue +814 -814
  55. package/packages/center-scroll/index.js +8 -8
  56. package/packages/center-scroll/src/center-scroll.vue +147 -147
  57. package/packages/chat/index.js +12 -12
  58. package/packages/chat/src/chat.vue +116 -116
  59. package/packages/checkbox/index.js +8 -8
  60. package/packages/checkbox/src/checkbox.vue +262 -262
  61. package/packages/checkboxes/index.js +8 -8
  62. package/packages/checkboxes/src/checkboxes.vue +97 -97
  63. package/packages/collapse/index.js +10 -10
  64. package/packages/collapse/src/collapse-item.vue +188 -188
  65. package/packages/collapse/src/collapse.vue +100 -100
  66. package/packages/color/index.js +8 -8
  67. package/packages/color/src/directive.js +42 -42
  68. package/packages/countdown/index.js +8 -8
  69. package/packages/countdown/src/countdown.vue +128 -128
  70. package/packages/date-picker/index.js +8 -8
  71. package/packages/date-picker/src/date-picker.vue +432 -432
  72. package/packages/date-picker/src/picker.vue +342 -342
  73. package/packages/date-range/index.js +8 -8
  74. package/packages/date-range/src/date-range.vue +384 -384
  75. package/packages/dialog/index.js +8 -8
  76. package/packages/dialog/src/dialog.vue +287 -287
  77. package/packages/dis/index.js +8 -8
  78. package/packages/dis/src/directive.js +42 -42
  79. package/packages/ellipsis/index.js +8 -8
  80. package/packages/ellipsis/src/ellipsis.vue +306 -306
  81. package/packages/emote/index.js +8 -8
  82. package/packages/emote/src/emote.vue +38 -38
  83. package/packages/export/index.js +8 -8
  84. package/packages/export/src/ajax.js +73 -73
  85. package/packages/export/src/export.vue +289 -289
  86. package/packages/filter/index.js +8 -8
  87. package/packages/filter/src/filter.vue +245 -245
  88. package/packages/fix/index.js +8 -8
  89. package/packages/fix/src/fix.vue +221 -221
  90. package/packages/float/index.js +16 -16
  91. package/packages/float/src/directive.js +20 -20
  92. package/packages/float/src/main.vue +642 -642
  93. package/packages/float/src/trigger.vue +31 -31
  94. package/packages/flow/index.js +8 -8
  95. package/packages/flow/src/flow.vue +234 -234
  96. package/packages/flow/src/flowItem.vue +61 -61
  97. package/packages/flow/src/flowLine.vue +168 -168
  98. package/packages/form/index.js +10 -10
  99. package/packages/form/src/form-item.vue +96 -96
  100. package/packages/form/src/form.vue +184 -184
  101. package/packages/grid/index.js +10 -10
  102. package/packages/grid/src/grid-item.vue +65 -65
  103. package/packages/grid/src/grid.vue +190 -190
  104. package/packages/grid-item/index.js +8 -8
  105. package/packages/guider/index.js +8 -8
  106. package/packages/guider/src/guider.vue +168 -168
  107. package/packages/header/index.js +8 -8
  108. package/packages/header/src/header.vue +111 -111
  109. package/packages/hide/index.js +8 -8
  110. package/packages/hide/src/directive.js +57 -57
  111. package/packages/icon/index.js +8 -8
  112. package/packages/icon/src/icon.vue +79 -79
  113. package/packages/import/index.js +8 -8
  114. package/packages/import/src/import.vue +279 -279
  115. package/packages/input/index.js +8 -8
  116. package/packages/input/src/calcTextareaHeight.js +104 -104
  117. package/packages/input/src/input.vue +653 -653
  118. package/packages/ip/index.js +8 -8
  119. package/packages/ip/src/ip.vue +143 -143
  120. package/packages/line/index.js +8 -8
  121. package/packages/line/src/line.vue +29 -29
  122. package/packages/loading/index.js +8 -8
  123. package/packages/loading/src/loading.js +58 -58
  124. package/packages/longtap/index.js +8 -8
  125. package/packages/longtap/src/longtap.js +95 -95
  126. package/packages/menu-icon/index.js +8 -8
  127. package/packages/menu-icon/src/menu-icon.vue +206 -206
  128. package/packages/message/index.js +8 -8
  129. package/packages/message/src/message.vue +9 -9
  130. package/packages/msg/index.js +8 -8
  131. package/packages/msg/src/msg.vue +227 -227
  132. package/packages/org/index.js +8 -8
  133. package/packages/org/src/org.vue +113 -113
  134. package/packages/org/src/orgItem.vue +63 -63
  135. package/packages/padding/index.js +8 -8
  136. package/packages/padding/src/padding.vue +105 -105
  137. package/packages/page/index.js +8 -8
  138. package/packages/page/src/page.vue +297 -297
  139. package/packages/param/index.js +8 -8
  140. package/packages/param/src/param.vue +226 -226
  141. package/packages/pic/index.js +8 -8
  142. package/packages/pic/src/pic-viewer.vue +331 -331
  143. package/packages/pic/src/pic.vue +144 -144
  144. package/packages/popup/index.js +12 -12
  145. package/packages/popup/src/popup-group.vue +47 -47
  146. package/packages/popup/src/popup-item.vue +163 -163
  147. package/packages/popup/src/popup.vue +350 -350
  148. package/packages/progress/index.js +8 -8
  149. package/packages/progress/src/progress.vue +306 -306
  150. package/packages/range/index.js +8 -8
  151. package/packages/range/src/range.vue +612 -612
  152. package/packages/rate/index.js +8 -8
  153. package/packages/rate/src/rate.vue +129 -129
  154. package/packages/reverser/index.js +8 -8
  155. package/packages/reverser/src/reverser.vue +49 -49
  156. package/packages/scroll/index.js +12 -12
  157. package/packages/scroll/src/scroll-point.vue +24 -24
  158. package/packages/scroll/src/scroll-sticky.vue +60 -60
  159. package/packages/scroll/src/scroll.vue +381 -381
  160. package/packages/segment/index.js +8 -8
  161. package/packages/segment/src/segment.vue +618 -618
  162. package/packages/select/index.js +8 -8
  163. package/packages/select/src/select.vue +1445 -1445
  164. package/packages/size/index.js +8 -8
  165. package/packages/size/src/directive.js +33 -33
  166. package/packages/skeleton/index.js +8 -8
  167. package/packages/skeleton/src/skeleton.vue +179 -179
  168. package/packages/slide/index.js +8 -8
  169. package/packages/slide/src/slide.vue +147 -147
  170. package/packages/space/index.js +8 -8
  171. package/packages/space/src/space.vue +53 -53
  172. package/packages/step/index.js +8 -8
  173. package/packages/step/src/step.vue +122 -122
  174. package/packages/submit/index.js +8 -8
  175. package/packages/submit/src/submit.vue +103 -103
  176. package/packages/switch/index.js +9 -9
  177. package/packages/switch/src/component.vue +131 -131
  178. package/packages/tab/index.js +10 -10
  179. package/packages/tab/src/tab-item.vue +85 -85
  180. package/packages/tab/src/tab.vue +590 -590
  181. package/packages/table/index.js +8 -8
  182. package/packages/table/src/table-body.vue +301 -301
  183. package/packages/table/src/table-config.vue +139 -139
  184. package/packages/table/src/table-head.vue +239 -239
  185. package/packages/table/src/table.vue +1455 -1458
  186. package/packages/tag/index.js +8 -8
  187. package/packages/tag/src/tag.vue +129 -129
  188. package/packages/theme/package.json +33 -33
  189. package/packages/theme/src/global/mixin.less +416 -416
  190. package/packages/theme/src/global/reset.less +27 -27
  191. package/packages/theme/src/less/component/affix.less +8 -8
  192. package/packages/theme/src/less/component/article-dark.less +6 -6
  193. package/packages/theme/src/less/component/article.less +39 -39
  194. package/packages/theme/src/less/component/box-dark.less +85 -85
  195. package/packages/theme/src/less/component/box.less +272 -272
  196. package/packages/theme/src/less/component/calendar-dark.less +111 -111
  197. package/packages/theme/src/less/component/calendar.less +282 -282
  198. package/packages/theme/src/less/component/card-dark.less +17 -17
  199. package/packages/theme/src/less/component/card.less +89 -89
  200. package/packages/theme/src/less/component/chat-dark.less +47 -47
  201. package/packages/theme/src/less/component/chat.less +71 -71
  202. package/packages/theme/src/less/component/code-dark.less +41 -41
  203. package/packages/theme/src/less/component/code.less +33 -33
  204. package/packages/theme/src/less/component/cover.less +4 -4
  205. package/packages/theme/src/less/component/dialog-dark.less +54 -54
  206. package/packages/theme/src/less/component/dialog.less +49 -49
  207. package/packages/theme/src/less/component/filter-dark.less +31 -31
  208. package/packages/theme/src/less/component/filter.less +97 -97
  209. package/packages/theme/src/less/component/float-dark.less +26 -26
  210. package/packages/theme/src/less/component/float.less +61 -61
  211. package/packages/theme/src/less/component/form-dark.less +45 -45
  212. package/packages/theme/src/less/component/form.less +322 -322
  213. package/packages/theme/src/less/component/gantt-dark.less +44 -44
  214. package/packages/theme/src/less/component/gantt.less +52 -52
  215. package/packages/theme/src/less/component/guider-dark.less +6 -6
  216. package/packages/theme/src/less/component/guider.less +15 -15
  217. package/packages/theme/src/less/component/header-dark.less +41 -41
  218. package/packages/theme/src/less/component/header.less +121 -121
  219. package/packages/theme/src/less/component/keyboard-dark.less +15 -15
  220. package/packages/theme/src/less/component/keyboard.less +21 -21
  221. package/packages/theme/src/less/component/line-dark.less +20 -20
  222. package/packages/theme/src/less/component/line.less +21 -21
  223. package/packages/theme/src/less/component/msg-dark.less +42 -42
  224. package/packages/theme/src/less/component/msg.less +102 -102
  225. package/packages/theme/src/less/component/page-dark.less +26 -26
  226. package/packages/theme/src/less/component/page.less +26 -26
  227. package/packages/theme/src/less/component/param-dark.less +31 -31
  228. package/packages/theme/src/less/component/param.less +136 -136
  229. package/packages/theme/src/less/component/popup-dark.less +20 -20
  230. package/packages/theme/src/less/component/popup.less +85 -85
  231. package/packages/theme/src/less/component/print.less +121 -121
  232. package/packages/theme/src/less/component/scroll-dark.less +19 -19
  233. package/packages/theme/src/less/component/scroll.less +47 -47
  234. package/packages/theme/src/less/component/skeleton-dark.less +29 -29
  235. package/packages/theme/src/less/component/skeleton.less +78 -78
  236. package/packages/theme/src/less/component/slide.less +70 -70
  237. package/packages/theme/src/less/component/space.less +2 -2
  238. package/packages/theme/src/less/component/step-dark.less +165 -165
  239. package/packages/theme/src/less/component/step.less +147 -147
  240. package/packages/theme/src/less/component/submit.less +40 -40
  241. package/packages/theme/src/less/component/tab-dark.less +221 -221
  242. package/packages/theme/src/less/component/tab.less +459 -459
  243. package/packages/theme/src/less/component/table-dark.less +196 -196
  244. package/packages/theme/src/less/component/table.less +425 -425
  245. package/packages/theme/src/less/component/timeline-dark.less +13 -13
  246. package/packages/theme/src/less/component/timeline.less +114 -114
  247. package/packages/theme/src/less/component/tip-dark.less +76 -76
  248. package/packages/theme/src/less/component/tip.less +139 -139
  249. package/packages/theme/src/less/component/tooltip-dark.less +105 -105
  250. package/packages/theme/src/less/component/tooltip.less +159 -159
  251. package/packages/theme/src/less/component/tree-dark.less +56 -56
  252. package/packages/theme/src/less/component/tree.less +148 -148
  253. package/packages/theme/src/less/element/align.less +32 -32
  254. package/packages/theme/src/less/element/animation.less +5 -5
  255. package/packages/theme/src/less/element/button-dark.less +29 -29
  256. package/packages/theme/src/less/element/button.less +65 -65
  257. package/packages/theme/src/less/element/center-scroll-dark.less +3 -3
  258. package/packages/theme/src/less/element/center-scroll.less +6 -6
  259. package/packages/theme/src/less/element/checkbox-dark.less +68 -68
  260. package/packages/theme/src/less/element/checkbox.less +73 -73
  261. package/packages/theme/src/less/element/color-dark.less +15 -15
  262. package/packages/theme/src/less/element/color.less +33 -33
  263. package/packages/theme/src/less/element/dis.less +9 -9
  264. package/packages/theme/src/less/element/ellipsis.less +35 -35
  265. package/packages/theme/src/less/element/emote.less +5 -5
  266. package/packages/theme/src/less/element/font-dark.less +9 -9
  267. package/packages/theme/src/less/element/font.less +8 -8
  268. package/packages/theme/src/less/element/hide-dark.less +114 -114
  269. package/packages/theme/src/less/element/hide.less +114 -114
  270. package/packages/theme/src/less/element/icon.less +297 -297
  271. package/packages/theme/src/less/element/input-dark.less +205 -205
  272. package/packages/theme/src/less/element/input.less +405 -405
  273. package/packages/theme/src/less/element/menu-icon.less +1 -1
  274. package/packages/theme/src/less/element/pic.less +18 -18
  275. package/packages/theme/src/less/element/progress-dark.less +37 -37
  276. package/packages/theme/src/less/element/progress.less +82 -82
  277. package/packages/theme/src/less/element/radio-dark.less +18 -18
  278. package/packages/theme/src/less/element/radio.less +11 -11
  279. package/packages/theme/src/less/element/range-dark.less +24 -24
  280. package/packages/theme/src/less/element/range.less +56 -56
  281. package/packages/theme/src/less/element/rate.less +17 -17
  282. package/packages/theme/src/less/element/segment-dark.less +119 -119
  283. package/packages/theme/src/less/element/segment.less +197 -197
  284. package/packages/theme/src/less/element/select-dark.less +167 -167
  285. package/packages/theme/src/less/element/select.less +431 -431
  286. package/packages/theme/src/less/element/size.less +10 -10
  287. package/packages/theme/src/less/element/switch-dark.less +7 -7
  288. package/packages/theme/src/less/element/switch.less +37 -37
  289. package/packages/theme/src/less/element/tag-dark.less +115 -115
  290. package/packages/theme/src/less/element/tag.less +159 -159
  291. package/packages/theme/src/less/element/upload-dark.less +26 -26
  292. package/packages/theme/src/less/element/upload.less +64 -64
  293. package/packages/theme/src/less/layout/fix.less +2 -2
  294. package/packages/theme/src/less/layout/flow.less +47 -47
  295. package/packages/theme/src/less/layout/grid-dark.less +28 -28
  296. package/packages/theme/src/less/layout/grid.less +172 -172
  297. package/packages/theme/src/less/layout/org-dark.less +2 -2
  298. package/packages/theme/src/less/layout/org.less +72 -72
  299. package/packages/theme/src/less/layout/padding.less +1 -1
  300. package/packages/theme/src/less/layout/reverser.less +8 -8
  301. package/packages/theme/src/less/theme/B-Design.less +159 -159
  302. package/packages/theme/src/less/theme/aiplan.less +159 -159
  303. package/packages/theme/src/less/theme/aiplangd.less +159 -159
  304. package/packages/theme/src/less/theme/chbn.less +159 -159
  305. package/packages/theme/src/less/theme/default.less +160 -160
  306. package/packages/theme/src/less/theme/dt.less +159 -159
  307. package/packages/theme/src/less/theme/ecloud.less +159 -159
  308. package/packages/theme/src/less/theme/hongkong.less +159 -159
  309. package/packages/theme/src/less/theme/narrow.less +160 -160
  310. package/packages/theme/src/less/theme/sdpf.less +160 -160
  311. package/packages/theme/src/less/theme/upc.less +159 -159
  312. package/packages/theme/src/less/theme/website.less +159 -159
  313. package/packages/theme/src/less/theme/zj.less +159 -159
  314. package/packages/timeline/index.js +8 -8
  315. package/packages/timeline/src/timeline.vue +84 -84
  316. package/packages/tip/index.js +8 -8
  317. package/packages/tip/src/tip.vue +226 -226
  318. package/packages/tooltip/index.js +8 -8
  319. package/packages/tooltip/src/directive.js +180 -180
  320. package/packages/tooltip/src/tooltip.vue +467 -467
  321. package/packages/transfer/index.js +8 -8
  322. package/packages/transfer/src/transfer.vue +293 -293
  323. package/packages/tree/index.js +8 -8
  324. package/packages/tree/src/tree.vue +518 -518
  325. package/packages/tree/src/treeItem.vue +443 -443
  326. package/packages/upload/index.js +8 -8
  327. package/packages/upload/src/upload.vue +860 -860
  328. package/src/index.js +207 -207
  329. package/src/locale/format.js +46 -46
  330. package/src/locale/index.js +48 -48
  331. package/src/locale/lang/en.js +207 -207
  332. package/src/locale/lang/zh-CN.js +207 -207
  333. package/src/mixins/blur.js +9 -9
  334. package/src/mixins/emitter.js +33 -33
  335. package/src/mixins/focus.js +9 -9
  336. package/src/mixins/locale.js +9 -9
  337. package/src/mixins/migrating.js +54 -54
  338. package/src/mixins/tip.js +10 -10
  339. package/src/mixins/transition.js +130 -130
  340. package/src/msg/index.js +107 -107
  341. package/src/svg/menu/main/abnormal-mix.svg +5 -5
  342. package/src/svg/menu/main/abnormal.svg +5 -5
  343. package/src/svg/menu/main/accountManager-mix.svg +5 -5
  344. package/src/svg/menu/main/accountManager.svg +5 -5
  345. package/src/svg/menu/main/agreement-mix.svg +7 -7
  346. package/src/svg/menu/main/agreement.svg +7 -7
  347. package/src/svg/menu/main/ai-mix.svg +5 -5
  348. package/src/svg/menu/main/archives-mix.svg +6 -6
  349. package/src/svg/menu/main/arrearsReport-mix.svg +17 -17
  350. package/src/svg/menu/main/arrearsReport.svg +17 -17
  351. package/src/svg/menu/main/bill-mix.svg +13 -13
  352. package/src/svg/menu/main/bill.svg +13 -13
  353. package/src/svg/menu/main/box-mix.svg +5 -5
  354. package/src/svg/menu/main/broadband-mix.svg +4 -4
  355. package/src/svg/menu/main/broadband.svg +4 -4
  356. package/src/svg/menu/main/card-mix.svg +5 -5
  357. package/src/svg/menu/main/card.svg +5 -5
  358. package/src/svg/menu/main/cash-mix.svg +5 -5
  359. package/src/svg/menu/main/cash.svg +5 -5
  360. package/src/svg/menu/main/cloud-mix.svg +4 -4
  361. package/src/svg/menu/main/cloud.svg +4 -4
  362. package/src/svg/menu/main/clue-mix.svg +10 -10
  363. package/src/svg/menu/main/clue.svg +10 -10
  364. package/src/svg/menu/main/commonUse-mix.svg +4 -4
  365. package/src/svg/menu/main/commonUse.svg +4 -4
  366. package/src/svg/menu/main/construction-mix.svg +7 -7
  367. package/src/svg/menu/main/construction.svg +7 -7
  368. package/src/svg/menu/main/contract-mix.svg +8 -8
  369. package/src/svg/menu/main/contract.svg +8 -8
  370. package/src/svg/menu/main/credit-mix.svg +5 -5
  371. package/src/svg/menu/main/credit.svg +5 -5
  372. package/src/svg/menu/main/data-mix.svg +5 -5
  373. package/src/svg/menu/main/data.svg +5 -5
  374. package/src/svg/menu/main/date-mix.svg +7 -7
  375. package/src/svg/menu/main/deposit-mix.svg +4 -4
  376. package/src/svg/menu/main/device-mix.svg +4 -4
  377. package/src/svg/menu/main/device.svg +4 -4
  378. package/src/svg/menu/main/discrepancy-mix.svg +5 -5
  379. package/src/svg/menu/main/door-mix.svg +6 -6
  380. package/src/svg/menu/main/fault-mix.svg +12 -12
  381. package/src/svg/menu/main/fault.svg +16 -16
  382. package/src/svg/menu/main/finance-mix.svg +11 -11
  383. package/src/svg/menu/main/finance.svg +13 -13
  384. package/src/svg/menu/main/flow-mix.svg +4 -4
  385. package/src/svg/menu/main/flow.svg +4 -4
  386. package/src/svg/menu/main/folder-mix.svg +4 -4
  387. package/src/svg/menu/main/folder.svg +4 -4
  388. package/src/svg/menu/main/friendly-mix.svg +5 -5
  389. package/src/svg/menu/main/fusion-mix.svg +5 -5
  390. package/src/svg/menu/main/fusion.svg +5 -5
  391. package/src/svg/menu/main/gift-mix.svg +8 -8
  392. package/src/svg/menu/main/gift.svg +8 -8
  393. package/src/svg/menu/main/gps-mix.svg +6 -6
  394. package/src/svg/menu/main/gps.svg +6 -6
  395. package/src/svg/menu/main/grid-mix.svg +7 -7
  396. package/src/svg/menu/main/grid.svg +7 -7
  397. package/src/svg/menu/main/group-mix.svg +4 -4
  398. package/src/svg/menu/main/group.svg +4 -4
  399. package/src/svg/menu/main/home-mix.svg +5 -5
  400. package/src/svg/menu/main/home.svg +8 -8
  401. package/src/svg/menu/main/ict-mix.svg +4 -4
  402. package/src/svg/menu/main/industry-mix.svg +5 -5
  403. package/src/svg/menu/main/industry.svg +5 -5
  404. package/src/svg/menu/main/info-mix.svg +9 -9
  405. package/src/svg/menu/main/info.svg +9 -9
  406. package/src/svg/menu/main/integral-mix.svg +5 -5
  407. package/src/svg/menu/main/integral.svg +5 -5
  408. package/src/svg/menu/main/internet-mix.svg +5 -5
  409. package/src/svg/menu/main/internet.svg +5 -5
  410. package/src/svg/menu/main/inventory-mix.svg +5 -5
  411. package/src/svg/menu/main/invoice-mix.svg +6 -6
  412. package/src/svg/menu/main/invoice.svg +14 -14
  413. package/src/svg/menu/main/iot-mix.svg +5 -5
  414. package/src/svg/menu/main/iot.svg +5 -5
  415. package/src/svg/menu/main/label-mix.svg +4 -4
  416. package/src/svg/menu/main/label.svg +4 -4
  417. package/src/svg/menu/main/love-mix.svg +6 -6
  418. package/src/svg/menu/main/love.svg +13 -13
  419. package/src/svg/menu/main/m1-mix.svg +4 -4
  420. package/src/svg/menu/main/m1.svg +4 -4
  421. package/src/svg/menu/main/m2-mix.svg +12 -12
  422. package/src/svg/menu/main/m2.svg +11 -11
  423. package/src/svg/menu/main/m3-mix.svg +6 -6
  424. package/src/svg/menu/main/m3.svg +7 -7
  425. package/src/svg/menu/main/m4-mix.svg +5 -5
  426. package/src/svg/menu/main/m4.svg +7 -7
  427. package/src/svg/menu/main/m5-mix.svg +8 -8
  428. package/src/svg/menu/main/m5.svg +10 -10
  429. package/src/svg/menu/main/mail-mix.svg +5 -5
  430. package/src/svg/menu/main/manual-mix.svg +11 -11
  431. package/src/svg/menu/main/manual.svg +11 -11
  432. package/src/svg/menu/main/market-mix.svg +4 -4
  433. package/src/svg/menu/main/market.svg +4 -4
  434. package/src/svg/menu/main/member-mix.svg +6 -6
  435. package/src/svg/menu/main/member.svg +6 -6
  436. package/src/svg/menu/main/menu-mix.svg +4 -4
  437. package/src/svg/menu/main/menu.svg +4 -4
  438. package/src/svg/menu/main/message-mix.svg +11 -11
  439. package/src/svg/menu/main/message.svg +11 -11
  440. package/src/svg/menu/main/namelist-mix.svg +4 -4
  441. package/src/svg/menu/main/namelist.svg +4 -4
  442. package/src/svg/menu/main/net-mix.svg +7 -7
  443. package/src/svg/menu/main/niche-mix.svg +12 -12
  444. package/src/svg/menu/main/niche.svg +12 -12
  445. package/src/svg/menu/main/notice-mix.svg +4 -4
  446. package/src/svg/menu/main/notice.svg +4 -4
  447. package/src/svg/menu/main/number-mix.svg +6 -6
  448. package/src/svg/menu/main/operations-mix.svg +4 -4
  449. package/src/svg/menu/main/operations.svg +4 -4
  450. package/src/svg/menu/main/order-mix.svg +8 -8
  451. package/src/svg/menu/main/order.svg +8 -8
  452. package/src/svg/menu/main/person-mix.svg +6 -6
  453. package/src/svg/menu/main/person.svg +6 -6
  454. package/src/svg/menu/main/phone-mix.svg +4 -4
  455. package/src/svg/menu/main/phone.svg +4 -4
  456. package/src/svg/menu/main/phoneBill-mix.svg +6 -6
  457. package/src/svg/menu/main/phoneBill.svg +6 -6
  458. package/src/svg/menu/main/preferential-mix.svg +5 -5
  459. package/src/svg/menu/main/preferential.svg +5 -5
  460. package/src/svg/menu/main/print-mix.svg +5 -5
  461. package/src/svg/menu/main/problem-mix.svg +4 -4
  462. package/src/svg/menu/main/problem.svg +4 -4
  463. package/src/svg/menu/main/process-mix.svg +4 -4
  464. package/src/svg/menu/main/process.svg +4 -4
  465. package/src/svg/menu/main/product-mix.svg +5 -5
  466. package/src/svg/menu/main/product.svg +6 -6
  467. package/src/svg/menu/main/qrCode-mix.svg +8 -8
  468. package/src/svg/menu/main/qrCode.svg +8 -8
  469. package/src/svg/menu/main/refuelingBag-mix-mix.svg +4 -4
  470. package/src/svg/menu/main/refuelingBag-mix.svg +4 -4
  471. package/src/svg/menu/main/reportForm-mix.svg +8 -8
  472. package/src/svg/menu/main/reportForm.svg +8 -8
  473. package/src/svg/menu/main/risk-mix.svg +16 -16
  474. package/src/svg/menu/main/risk.svg +17 -17
  475. package/src/svg/menu/main/robot-mix.svg +9 -9
  476. package/src/svg/menu/main/robot.svg +9 -9
  477. package/src/svg/menu/main/satisfaction-mix.svg +4 -4
  478. package/src/svg/menu/main/satisfaction.svg +4 -4
  479. package/src/svg/menu/main/scratchCard-mix.svg +4 -4
  480. package/src/svg/menu/main/sim-mix.svg +4 -4
  481. package/src/svg/menu/main/sim.svg +4 -4
  482. package/src/svg/menu/main/staging-mix.svg +4 -4
  483. package/src/svg/menu/main/staging.svg +4 -4
  484. package/src/svg/menu/main/survey-mix.svg +5 -5
  485. package/src/svg/menu/main/survey.svg +5 -5
  486. package/src/svg/menu/main/tasks-mix.svg +8 -8
  487. package/src/svg/menu/main/tasks.svg +8 -8
  488. package/src/svg/menu/main/telephone-mix.svg +4 -4
  489. package/src/svg/menu/main/topUp-mix.svg +5 -5
  490. package/src/svg/menu/main/trajectory-mix.svg +11 -11
  491. package/src/svg/menu/main/trajectory.svg +23 -23
  492. package/src/svg/menu/main/transmit-mix.svg +5 -5
  493. package/src/svg/menu/main/tv-mix.svg +6 -6
  494. package/src/svg/menu/main/unlock-mix.svg +4 -4
  495. package/src/svg/menu/main/unlock.svg +4 -4
  496. package/src/svg/menu/main/view-mix.svg +5 -5
  497. package/src/svg/menu/main/view.svg +5 -5
  498. package/src/svg/menu/main/visits-mix.svg +19 -19
  499. package/src/svg/menu/main/visits.svg +19 -19
  500. package/src/svg/menu/main/voice-mix.svg +4 -4
  501. package/src/svg/menu/main/voice.svg +4 -4
  502. package/src/svg/menu/main/wiki-mix.svg +4 -4
  503. package/src/svg/menu/main/wiki.svg +4 -4
  504. package/src/svg/menu/main/workOrder-mix.svg +6 -6
  505. package/src/svg/menu/main/workOrder.svg +14 -14
  506. package/src/svg/menu/patch/Mo-space.svg +2 -2
  507. package/src/svg/menu/patch/Mo.svg +3 -3
  508. package/src/svg/menu/patch/add-space.svg +3 -3
  509. package/src/svg/menu/patch/add.svg +3 -3
  510. package/src/svg/menu/patch/address-space.svg +3 -3
  511. package/src/svg/menu/patch/address.svg +3 -3
  512. package/src/svg/menu/patch/approve-space.svg +3 -3
  513. package/src/svg/menu/patch/approve.svg +4 -4
  514. package/src/svg/menu/patch/avoid-space.svg +3 -3
  515. package/src/svg/menu/patch/avoid.svg +3 -3
  516. package/src/svg/menu/patch/batch-space.svg +3 -3
  517. package/src/svg/menu/patch/batch.svg +5 -5
  518. package/src/svg/menu/patch/broadband-space.svg +3 -3
  519. package/src/svg/menu/patch/broadband.svg +4 -4
  520. package/src/svg/menu/patch/cancellation-space.svg +3 -3
  521. package/src/svg/menu/patch/cancellation.svg +3 -3
  522. package/src/svg/menu/patch/center-space.svg +3 -3
  523. package/src/svg/menu/patch/center.svg +5 -5
  524. package/src/svg/menu/patch/change-space.svg +3 -3
  525. package/src/svg/menu/patch/change.svg +4 -4
  526. package/src/svg/menu/patch/click-space.svg +3 -3
  527. package/src/svg/menu/patch/click.svg +4 -4
  528. package/src/svg/menu/patch/close-1-space.svg +3 -3
  529. package/src/svg/menu/patch/close-1.svg +3 -3
  530. package/src/svg/menu/patch/close-space.svg +2 -2
  531. package/src/svg/menu/patch/close.svg +3 -3
  532. package/src/svg/menu/patch/collect-space.svg +3 -3
  533. package/src/svg/menu/patch/collect.svg +3 -3
  534. package/src/svg/menu/patch/comment-space.svg +3 -3
  535. package/src/svg/menu/patch/comment.svg +3 -3
  536. package/src/svg/menu/patch/confirm-space.svg +3 -3
  537. package/src/svg/menu/patch/confirm.svg +3 -3
  538. package/src/svg/menu/patch/contract-space.svg +3 -3
  539. package/src/svg/menu/patch/contract.svg +3 -3
  540. package/src/svg/menu/patch/credit-space.svg +3 -3
  541. package/src/svg/menu/patch/credit.svg +5 -5
  542. package/src/svg/menu/patch/dataMonitoring-space.svg +3 -3
  543. package/src/svg/menu/patch/dataMonitoring.svg +3 -3
  544. package/src/svg/menu/patch/dedicatedCircuit-space.svg +3 -3
  545. package/src/svg/menu/patch/dedicatedCircuit.svg +3 -3
  546. package/src/svg/menu/patch/detail-space.svg +3 -3
  547. package/src/svg/menu/patch/detail.svg +3 -3
  548. package/src/svg/menu/patch/disassemb-space.svg +3 -3
  549. package/src/svg/menu/patch/disassemb.svg +3 -3
  550. package/src/svg/menu/patch/earnestMoney-space.svg +3 -3
  551. package/src/svg/menu/patch/earnestMoney.svg +3 -3
  552. package/src/svg/menu/patch/empower-space.svg +3 -3
  553. package/src/svg/menu/patch/empower.svg +3 -3
  554. package/src/svg/menu/patch/entrust-space.svg +3 -3
  555. package/src/svg/menu/patch/entrust.svg +3 -3
  556. package/src/svg/menu/patch/expedite-space.svg +4 -4
  557. package/src/svg/menu/patch/expedite.svg +4 -4
  558. package/src/svg/menu/patch/flow-space.svg +3 -3
  559. package/src/svg/menu/patch/flow.svg +3 -3
  560. package/src/svg/menu/patch/folder-space.svg +3 -3
  561. package/src/svg/menu/patch/folder.svg +3 -3
  562. package/src/svg/menu/patch/forbidden-space.svg +3 -3
  563. package/src/svg/menu/patch/forbidden.svg +3 -3
  564. package/src/svg/menu/patch/forward-space.svg +3 -3
  565. package/src/svg/menu/patch/forward.svg +3 -3
  566. package/src/svg/menu/patch/fusion-space.svg +3 -3
  567. package/src/svg/menu/patch/fusion.svg +6 -6
  568. package/src/svg/menu/patch/history-space.svg +3 -3
  569. package/src/svg/menu/patch/history.svg +3 -3
  570. package/src/svg/menu/patch/information-space.svg +3 -3
  571. package/src/svg/menu/patch/information.svg +3 -3
  572. package/src/svg/menu/patch/insert-space.svg +3 -3
  573. package/src/svg/menu/patch/insert.svg +3 -3
  574. package/src/svg/menu/patch/letv-space.svg +3 -3
  575. package/src/svg/menu/patch/letv.svg +3 -3
  576. package/src/svg/menu/patch/link-space.svg +3 -3
  577. package/src/svg/menu/patch/link.svg +3 -3
  578. package/src/svg/menu/patch/location-space.svg +3 -3
  579. package/src/svg/menu/patch/location.svg +3 -3
  580. package/src/svg/menu/patch/message-space.svg +3 -3
  581. package/src/svg/menu/patch/message.svg +4 -4
  582. package/src/svg/menu/patch/minus-space.svg +3 -3
  583. package/src/svg/menu/patch/minus.svg +3 -3
  584. package/src/svg/menu/patch/mms-space.svg +3 -3
  585. package/src/svg/menu/patch/mms.svg +3 -3
  586. package/src/svg/menu/patch/monitor-space.svg +3 -3
  587. package/src/svg/menu/patch/monitor.svg +3 -3
  588. package/src/svg/menu/patch/move-space.svg +3 -3
  589. package/src/svg/menu/patch/move.svg +3 -3
  590. package/src/svg/menu/patch/negative-space.svg +2 -2
  591. package/src/svg/menu/patch/negative.svg +3 -3
  592. package/src/svg/menu/patch/net-space.svg +2 -2
  593. package/src/svg/menu/patch/net.svg +3 -3
  594. package/src/svg/menu/patch/news-space.svg +3 -3
  595. package/src/svg/menu/patch/news.svg +3 -3
  596. package/src/svg/menu/patch/notice-space.svg +4 -4
  597. package/src/svg/menu/patch/notice.svg +5 -5
  598. package/src/svg/menu/patch/officialBusiness-space.svg +3 -3
  599. package/src/svg/menu/patch/officialBusiness.svg +4 -4
  600. package/src/svg/menu/patch/pay-space.svg +3 -3
  601. package/src/svg/menu/patch/pay.svg +3 -3
  602. package/src/svg/menu/patch/phone-space.svg +3 -3
  603. package/src/svg/menu/patch/phone.svg +5 -5
  604. package/src/svg/menu/patch/print-space.svg +3 -3
  605. package/src/svg/menu/patch/print.svg +5 -5
  606. package/src/svg/menu/patch/product-space.svg +3 -3
  607. package/src/svg/menu/patch/product.svg +5 -5
  608. package/src/svg/menu/patch/reservation-space.svg +3 -3
  609. package/src/svg/menu/patch/reservation.svg +3 -3
  610. package/src/svg/menu/patch/sale-space.svg +3 -3
  611. package/src/svg/menu/patch/sale.svg +5 -5
  612. package/src/svg/menu/patch/search-space.svg +3 -3
  613. package/src/svg/menu/patch/search.svg +3 -3
  614. package/src/svg/menu/patch/secure-space.svg +3 -3
  615. package/src/svg/menu/patch/secure.svg +5 -5
  616. package/src/svg/menu/patch/setup-space.svg +3 -3
  617. package/src/svg/menu/patch/setup.svg +3 -3
  618. package/src/svg/menu/patch/shift-space.svg +3 -3
  619. package/src/svg/menu/patch/shift.svg +3 -3
  620. package/src/svg/menu/patch/situation-space.svg +3 -3
  621. package/src/svg/menu/patch/situation.svg +3 -3
  622. package/src/svg/menu/patch/special-space.svg +3 -3
  623. package/src/svg/menu/patch/special.svg +3 -3
  624. package/src/svg/menu/patch/tabulation-space.svg +3 -3
  625. package/src/svg/menu/patch/tabulation.svg +8 -8
  626. package/src/svg/menu/patch/track-space.svg +3 -3
  627. package/src/svg/menu/patch/track.svg +5 -5
  628. package/src/svg/menu/patch/transaction-space.svg +3 -3
  629. package/src/svg/menu/patch/transaction.svg +6 -6
  630. package/src/svg/menu/patch/user-space.svg +3 -3
  631. package/src/svg/menu/patch/user.svg +3 -3
  632. package/src/svg/menu/patch/visualize-space.svg +3 -3
  633. package/src/svg/menu/patch/visualize.svg +4 -4
  634. package/src/svg/menu/patch/vnet-space.svg +3 -3
  635. package/src/svg/menu/patch/vnet.svg +3 -3
  636. package/src/tip/tip.js +160 -160
  637. package/src/utils/after-leave.js +27 -27
  638. package/src/utils/ajax.js +59 -59
  639. package/src/utils/array.js +24 -24
  640. package/src/utils/clickoutside.js +105 -105
  641. package/src/utils/compare.js +16 -16
  642. package/src/utils/date.js +34 -34
  643. package/src/utils/disabledArea.js +18 -18
  644. package/src/utils/dom.js +301 -301
  645. package/src/utils/filetransfer.js +287 -287
  646. package/src/utils/isModified.js +20 -20
  647. package/src/utils/jsencrypt/JSEncrypt.js +192 -192
  648. package/src/utils/jsencrypt/JSEncryptRSAKey.js +320 -320
  649. package/src/utils/jsencrypt/index.js +3 -3
  650. package/src/utils/jsencrypt/jselib/asn1js/asn1.d.ts +51 -51
  651. package/src/utils/jsencrypt/jselib/asn1js/asn1.js +565 -565
  652. package/src/utils/jsencrypt/jselib/asn1js/base64.d.ts +5 -5
  653. package/src/utils/jsencrypt/jselib/asn1js/base64.js +88 -88
  654. package/src/utils/jsencrypt/jselib/asn1js/hex.d.ts +3 -3
  655. package/src/utils/jsencrypt/jselib/asn1js/hex.js +64 -64
  656. package/src/utils/jsencrypt/jselib/asn1js/int10.d.ts +9 -9
  657. package/src/utils/jsencrypt/jselib/asn1js/int10.js +87 -87
  658. package/src/utils/jsencrypt/jselib/asn1js/oids.d.ts +9778 -9778
  659. package/src/utils/jsencrypt/jselib/asn1js/oids.js +1962 -1962
  660. package/src/utils/jsencrypt/jselib/jsbn/base64.d.ts +3 -3
  661. package/src/utils/jsencrypt/jselib/jsbn/base64.js +76 -76
  662. package/src/utils/jsencrypt/jselib/jsbn/jsbn.d.ts +98 -98
  663. package/src/utils/jsencrypt/jselib/jsbn/jsbn.js +1754 -1754
  664. package/src/utils/jsencrypt/jselib/jsbn/prng4.d.ts +10 -10
  665. package/src/utils/jsencrypt/jselib/jsbn/prng4.js +46 -46
  666. package/src/utils/jsencrypt/jselib/jsbn/rng.d.ts +3 -3
  667. package/src/utils/jsencrypt/jselib/jsbn/rng.js +78 -78
  668. package/src/utils/jsencrypt/jselib/jsbn/rsa.d.ts +23 -23
  669. package/src/utils/jsencrypt/jselib/jsbn/rsa.js +373 -373
  670. package/src/utils/jsencrypt/jselib/jsbn/util.d.ts +7 -7
  671. package/src/utils/jsencrypt/jselib/jsbn/util.js +58 -58
  672. package/src/utils/jsencrypt/jselib/jsrsasign/asn1-1.0.js +1593 -1593
  673. package/src/utils/jsencrypt/jselib/jsrsasign/yahoo.js +63 -63
  674. package/src/utils/jsencrypt/util.js +58 -58
  675. package/src/utils/jsencrypt.js +263 -263
  676. package/src/utils/md5.js +203 -203
  677. package/src/utils/merge.js +15 -15
  678. package/src/utils/mime.js +75 -75
  679. package/src/utils/print.js +39 -39
  680. package/src/utils/ratio.js +230 -230
  681. package/src/utils/respo.js +9 -9
  682. package/src/utils/shared.js +7 -7
  683. package/src/utils/sign.js +185 -185
  684. package/src/utils/string.js +13 -13
  685. package/src/utils/theme.js +91 -91
  686. package/src/utils/types.js +40 -40
  687. package/src/utils/util.js +286 -286
  688. package/src/utils/uuid.js +12 -12
  689. package/src/utils/validate.js +373 -373
  690. package/packages/.DS_Store +0 -0
  691. package/packages/article/.DS_Store +0 -0
  692. package/packages/chat/.DS_Store +0 -0
  693. package/packages/chat/src/.DS_Store +0 -0
  694. package/packages/date-picker/.DS_Store +0 -0
  695. package/packages/dis/.DS_Store +0 -0
  696. package/packages/emote/.DS_Store +0 -0
  697. package/packages/filter/.DS_Store +0 -0
  698. package/packages/filter/src/.DS_Store +0 -0
  699. package/packages/float/.DS_Store +0 -0
  700. package/packages/flow/.DS_Store +0 -0
  701. package/packages/guider/.DS_Store +0 -0
  702. package/packages/ip/.DS_Store +0 -0
  703. package/packages/org/.DS_Store +0 -0
  704. package/packages/page/.DS_Store +0 -0
  705. package/packages/page/src/.DS_Store +0 -0
  706. package/packages/pic/.DS_Store +0 -0
  707. package/packages/rate/.DS_Store +0 -0
  708. package/packages/reverser/.DS_Store +0 -0
  709. package/packages/reverser/src/.DS_Store +0 -0
  710. package/packages/segment/.DS_Store +0 -0
  711. package/packages/slide/.DS_Store +0 -0
  712. package/packages/tab/.DS_Store +0 -0
  713. package/packages/table/.DS_Store +0 -0
  714. package/packages/theme/src/.DS_Store +0 -0
  715. package/packages/theme/src/img/.DS_Store +0 -0
  716. package/packages/theme/src/img/emote/.DS_Store +0 -0
  717. package/packages/theme/src/less/.DS_Store +0 -0
  718. package/packages/theme/src/less/theme/.DS_Store +0 -0
  719. package/packages/tooltip/.DS_Store +0 -0
  720. package/packages/tree/.DS_Store +0 -0
  721. package/packages/upload/.DS_Store +0 -0
  722. package/src/.DS_Store +0 -0
  723. package/src/svg/.DS_Store +0 -0
  724. package/src/svg/menu/.DS_Store +0 -0
@@ -1,518 +1,518 @@
1
- <template>
2
- <div :class="setClass" class="to-tree">
3
- <to-tree-item
4
- v-if="nodes && nodes.length > 0"
5
- :data="nodes"
6
- :highlight-current="highlightCurrent"
7
- :expand-on-click-node="expandOnClickNode"
8
- :check-on-click-node="checkOnClickNode"
9
- :show-checkbox="showCheckbox"
10
- :is-parent-not-checkbox="isParentNotCheckbox"
11
- :accordion="accordion"
12
- :children-text="childrenText"
13
- :value-text="valueText"
14
- :label-text="labelText"
15
- :disabled-text="disabledText"
16
- :is-leaf-text="isLeafText"
17
- :checked-text="checkedText"
18
- :expanded-text="expandedText"
19
- :check-strictly="checkStrictly"
20
- :filter-node-method="filterNodeMethod"
21
- :auto-expand-parent="autoExpandParent"
22
- :current-node-key="currentNodeKey_"
23
- :icon-top="iconTop"
24
- @current-change="handleCurrentNodeKeyChange"
25
- @check="handleCheckChange"
26
- @node-click="handleNodeClick"
27
- @node-expand="handleNodeExpand"
28
- @node-collapse="handleNodeCollapse"
29
- >
30
- <template v-slot="scope">
31
- <slot :node="scope.node"></slot>
32
- </template>
33
- </to-tree-item>
34
- <div v-else-if="!loading" class="to-align-center">
35
- {{ emptyText }}
36
- </div>
37
- <div v-if="loading || lazyLoading">
38
- <span v-if="loading || lazyLoading" class="to-icon-loading"><span></span></span>
39
- {{ loadingText }}
40
- </div>
41
- </div>
42
- </template>
43
- <script>
44
- import Vue from 'vue';
45
- import TreeItem from './treeItem.vue';
46
- Vue.component('ToTreeItem', TreeItem);
47
- export default {
48
- name: 'ToTree',
49
- componentName: 'ToTree',
50
- provide() {
51
- return {
52
- nodeDatas: this.nodes,
53
- nodeMap: this.nodeMap,
54
- ToTree: this
55
- // 所有的tree事件回调需要通过provider交给子孙tree-item 否则递归emit会触发多次
56
- // @current-change="handleCurrentNodeKeyChange"
57
- // @check="handleCheckChange"
58
- // @node-click="handleNodeClick"
59
- // @node-expand="handleNodeExpand"
60
- // @node-collapse="handleNodeCollapse"
61
- // eventMap: {
62
- // 'current-change': this.handleCurrentNodeKeyChange,
63
- // 'check': this.handleCheckChange,
64
- // 'node-click': this.handleNodeClick,
65
- // 'node-expand': this.handleNodeExpand,
66
- // 'node-collapse': this.handleNodeCollapse
67
- // }
68
- }
69
- },
70
- props: {
71
- // icon 离顶部的距离,单位:em
72
- iconTop: {
73
- type: [Number, String],
74
- default: ''
75
- },
76
- // 是否显示 loading
77
- loading: {
78
- type: Boolean,
79
- default: false
80
- },
81
- // 是否全部展开
82
- expand: Boolean,
83
- // 类型,menu 类型适合展示在菜单上,icon 类型适合收缩的菜单
84
- type: {
85
- type: String,
86
- default: ''
87
- },
88
- // 展示数据
89
- data: {
90
- type: Array,
91
- default: () => []
92
- },
93
- // 是否高亮当前选中节点,默认值是 true
94
- highlightCurrent: {
95
- type: Boolean,
96
- default: true
97
- },
98
- // 是否在点击节点的时候展开或者收缩节点, 默认值为 false,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。 checkOnClickNode 为true时失效
99
- expandOnClickNode: {
100
- type: Boolean,
101
- default: false
102
- },
103
- // 是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点。
104
- checkOnClickNode: {
105
- type: Boolean,
106
- default: false
107
- },
108
- // 节点是否可被选择
109
- showCheckbox: {
110
- type: Boolean,
111
- default: false
112
- },
113
- // 父节点不被选择
114
- isParentNotCheckbox: {
115
- type: Boolean,
116
- default: false
117
- },
118
- // 在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 false
119
- checkStrictly: {
120
- type: Boolean,
121
- default: false
122
- },
123
- // 当前选中的节点
124
- currentNodeKey: {
125
- type: [String, Number],
126
- default: undefined
127
- },
128
- // 对树节点进行筛选时执行的方法,返回 true 表示这个节点可以显示,返回 false 则表示这个节点会被隐藏 Function(value, data, node)
129
- filterNodeMethod: {
130
- type: Function,
131
- default: undefined
132
- },
133
- // 是否每次只打开一个同级树节点展开
134
- accordion: {
135
- type: Boolean,
136
- default: false
137
- },
138
- // 展开子节点的时候是否自动展开父节点
139
- autoExpandParent: {
140
- type: Boolean,
141
- default: true
142
- },
143
- // 内容为空的时候展示的文本
144
- emptyText: {
145
- type: String,
146
- default: '暂无数据'
147
- },
148
- // 载入时展示的文本
149
- loadingText: {
150
- type: String,
151
- default: '加载中'
152
- },
153
- // 指定子树为节点对象的某个属性值
154
- childrenText: {
155
- type: String,
156
- default: 'children'
157
- },
158
- // 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的
159
- valueText: {
160
- type: String,
161
- default: 'value'
162
- },
163
- // 指定节点标签为节点对象的某个属性值
164
- labelText: {
165
- type: [String, Function],
166
- default: 'label'
167
- },
168
- lazy: {
169
- type: Boolean,
170
- default: false
171
- },
172
- load: {
173
- type: Function,
174
- default: () => []
175
- },
176
- // 指定节点是否为叶子节点,仅在指定了 lazy 属性的情况下生效
177
- isLeafText: {
178
- type: [String, Function],
179
- default: 'isLeaf'
180
- },
181
- // 指定节点是否禁用
182
- disabledText: {
183
- type: [String, Function],
184
- default: 'disabled'
185
- },
186
- // 指定节点是否默认勾选
187
- checkedText: {
188
- type: [String, Function],
189
- default: 'checked'
190
- },
191
- // 指定节点是否默认勾选
192
- expandedText: {
193
- type: [String, Function],
194
- default: 'expanded'
195
- },
196
- // 展开的节点
197
- expandedKeys: {
198
- type: [String, Array],
199
- default: () => ([])
200
- },
201
- // 勾选的节点
202
- checkedKeys: {
203
- type: [String, Array],
204
- default: () => ([])
205
- }
206
- },
207
- data() {
208
- return {
209
- currentNodeKey_: '',
210
- lazyLoading: false,
211
- nodes: [],
212
- nodeMap: {}
213
- }
214
- },
215
- computed: {
216
- setClass() {
217
- let arr = [];
218
- if (this.type) {
219
- arr.push(`to-tree-type-${this.type}`)
220
- }
221
- if (!this.lazy && this.data.every(item => !item[this.childrenText])) {
222
- arr.push('to-tree-list')
223
- }
224
- return arr
225
- }
226
- },
227
- watch: {
228
- type() {
229
- this.setCollapsedKeys()
230
- },
231
- data: {
232
- handler(newval = []) {
233
- this.nodes = JSON.parse(JSON.stringify(newval))
234
- this.$nextTick(() => {
235
- this.setExpandedKeys(Array.isArray(this.expandedKeys) ? this.expandedKeys : String(this.expandedKeys).split(','))
236
- this.setCheckedKeys(Array.isArray(this.checkedKeys) ? this.checkedKeys : String(this.checkedKeys).split(','))
237
- this.setCurrentKey(this.currentNodeKey)
238
- })
239
- },
240
- deep: true,
241
- immediate: true
242
- },
243
- expand(val) {
244
- if (val) {
245
- this.setExpandedKeys()
246
- } else {
247
- this.setCollapsedKeys()
248
- }
249
- },
250
- expandedKeys: {
251
- handler(newval = []) {
252
- this.setExpandedKeys(Array.isArray(newval) ? newval : String(newval).split(','))
253
- },
254
- immediate: true,
255
- deep: true
256
- },
257
- checkedKeys: {
258
- handler(newval = []) {
259
- this.setCheckedKeys(Array.isArray(newval) ? newval : String(newval).split(','))
260
- },
261
- immediate: true,
262
- deep: true
263
- },
264
- currentNodeKey: {
265
- handler(newval) {
266
- // 因为是从外面传进来的,所以第一次传的值,永久就记录这个值,就一直不会变化了,所以这个地方如果连续传同一个值,是会出问题的 todo
267
- this.setCurrentKey(newval)
268
- },
269
- immediate: true
270
- }
271
- },
272
- mounted() {
273
- if (this.lazy) {
274
- this.lazyLoad((nodes) => (this.nodes = nodes))
275
- }
276
- },
277
- methods: {
278
- lazyLoad(resolve, node) {
279
- if (!resolve) return
280
- const _level = node ? node._level || 1 : 1
281
- let res = typeof this.load === 'function' ? this.load(node) || [] : []
282
- if (typeof res.then === 'function') {
283
- if (node)node._loading = true
284
- else this.lazyLoading = true
285
- res.then((nodes) => {
286
- nodes.map(node => {
287
- node._level = _level + 1
288
- node[this.isLeafText] ? node[this.childrenText] : node[this.childrenText] = []
289
- })
290
- if (node)node._loading = false
291
- else this.lazyLoading = false
292
- resolve(nodes)
293
- })
294
- } else {
295
- let nodes = []
296
- if (Array.isArray(res)) {
297
- nodes = res
298
- } else {
299
- nodes = [res]
300
- }
301
- nodes.map(node => {
302
- node._level = _level + 1
303
- node[this.isLeafText] ? node[this.childrenText] : node[this.childrenText] = []
304
- })
305
- resolve(nodes)
306
- }
307
- },
308
- // 对树节点进行筛选操作 接收一个任意类型的参数,该参数会在 filter-node-method 中作为第一个参数
309
- filter(str) {
310
- this.$nextTick(() => {
311
- for (const i in this.nodeMap) {
312
- const tnode = this.nodeMap[i]
313
- if (String(tnode.label).indexOf(str) > -1 || Object.values(this.nodeMap).some(cnode => String(cnode.label).indexOf(str) > -1 && cnode.parent === tnode.value)) {
314
- this.$set(tnode, 'show', true)
315
- } else {
316
- this.$set(tnode, 'show', false)
317
- }
318
- }
319
- })
320
- },
321
- // 通过 keys 设置节点子元素,使用此方法必须设置 node-key 属性
322
- // (key, data) 接收两个参数,1. 节点 key 2. 节点数据的数组
323
- updateKeyChildren(key, children = []) {
324
- this.$nextTick(() => {
325
- if (!key || !Array.isArray(children)) return
326
- if (this.nodeMap[key]) {
327
- this.nodeMap[key].children = children
328
- }
329
- })
330
- },
331
- // 若节点可被选择(即 show-checkbox 为 true),则返回目前被选中的节点所组成的数组
332
- // (leafOnly, includeHalfChecked) 接收两个 boolean 类型的参数,1. 是否只是叶子节点,默认值为 false 2. 是否包含半选节点,默认值为 false
333
- getCheckedNodes(leafOnly = false, includeHalfChecked = false) {
334
- const checkeds = []
335
- for (const i in this.nodeMap) {
336
- const node = this.nodeMap[i]
337
- if (node.checked && node.value) {
338
- if (!leafOnly || (leafOnly && node.isLeaf))checkeds.push(node)
339
- }
340
- }
341
- return checkeds
342
- },
343
- // 若节点可被选择(即 show-checkbox 为 true),则返回目前被选中的节点的 key 所组成的数组
344
- // (leafOnly) 接收一个 boolean 类型的参数,若为 true 则仅返回被选中的叶子节点的 keys,默认值为 false
345
- getCheckedKeys(leafOnly = false) {
346
- const checkeds = []
347
- for (const i in this.nodeMap) {
348
- const node = this.nodeMap[i]
349
- if (node.checked && node.value) {
350
- if (!leafOnly || (leafOnly && node.isLeaf))checkeds.push(node.value)
351
- }
352
- }
353
- return checkeds
354
- },
355
- // setCheckedKeys 通过 keys 设置目前勾选的节点,使用此方法必须设置 node-key 属性 (keys, leafOnly) 接收两个参数,1. 勾选节点的 key 的数组 2. boolean 类型的参数,若为 true 则仅设置叶子节点的选中状态,默认值为 false
356
- setCheckedKeys(keys = [], leafOnly = false) {
357
- this.$nextTick(() => {
358
- for (const i in this.nodeMap) {
359
- const tnode = this.nodeMap[i]
360
- if (keys.includes(tnode.value)) {
361
- if (leafOnly) {
362
- if (tnode.isLeaf) {
363
- tnode.checked = true
364
- } else {
365
- tnode.checked = false
366
- }
367
- } else tnode.checked = true
368
- } else tnode.checked = false
369
- }
370
- })
371
- },
372
- // setChecked 通过 key / data 设置某个节点的勾选状态,使用此方法必须设置 node-key 属性 (key/data, checked, deep) 接收三个参数,1. 勾选节点的 key 或者 data 2. boolean 类型,节点是否选中 3. boolean 类型,是否设置子节点 ,默认为 false
373
- // setChecked(key,checked,setChild)
374
- // getHalfCheckedNodes 若节点可被选择(即 show-checkbox 为 true),则返回目前半选中的节点所组成的数组 -
375
- // getHalfCheckedKeys 若节点可被选择(即 show-checkbox 为 true),则返回目前半选中的节点的 key 所组成的数组 -
376
- // getCurrentKey 获取当前被选中节点的 key,使用此方法必须设置 node-key 属性,若没有节点被选中则返回 null —
377
- // getCurrentNode 获取当前被选中节点的 data,若没有节点被选中则返回 null —
378
- getCurrentNode() {
379
- let current = {}
380
- for (const i in this.nodeMap) {
381
- const node = this.nodeMap[i]
382
- if (this.currentNodeKey_ === node.value) {
383
- current = node
384
- }
385
- }
386
- return current
387
- },
388
- // setCurrentKey 通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 (key) 待被选节点的 key,若为 null 则取消当前高亮的节点
389
- setCurrentKey(key) {
390
- this.$nextTick(() => {
391
- this.currentNodeKey_ = key
392
- this.autoExpandParent && this.handleExpanedParent(this.nodeMap[key])
393
- })
394
- },
395
- // setCurrentNode 通过 node 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 (node) 待被选节点的 node
396
- setCurrentNode(node) {
397
- if (!node || !node[this.valueText]) return
398
- this.setCurrentKey(node[this.valueText])
399
- },
400
- // getNode 根据 data 或者 key 拿到 Tree 组件中的 node (data) 要获得 node 的 key 或者 data
401
- getNode(key) {
402
- key = typeof key === 'string' ? key : key ? key[this.valueText] : undefined
403
- return this.nodeMap[key]
404
- },
405
- // remove 删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性 (data) 要删除的节点的 data 或者 node
406
- // append 为 Tree 中的一个节点追加一个子节点 (data, parentNode) 接收两个参数,1. 要追加的子节点的 data 2. 子节点的 parent 的 data、key 或者 node
407
- // insertBefore 为 Tree 的一个节点的前面增加一个节点 (data, refNode) 接收两个参数,1. 要增加的节点的 data 2. 要增加的节点的后一个节点的 data、key 或者 node
408
- // insertAfter 为 Tree 的一个节点的后面增加一个节点 (data, refNode) 接收两个参数,1. 要增加的节点的 data 2. 要增加的节点的前一个节点的 data、key 或者 node
409
- setExpandedKeys(keys = []) {
410
- this.$nextTick(() => {
411
- if (this.expand) {
412
- for (const i in this.nodeMap) {
413
- const tnode = this.nodeMap[i]
414
- tnode.expanded = true
415
- }
416
- } else {
417
- for (const i in this.nodeMap) {
418
- const tnode = this.nodeMap[i]
419
- if (keys.includes(tnode.value) || tnode.expanded) tnode.expanded = true
420
- else tnode.expanded = false
421
- }
422
- }
423
- })
424
- },
425
- // 收起节点
426
- setCollapsedKeys(keys = []) {
427
- this.$nextTick(() => {
428
- // 默认展开,则全部收起
429
- if (this.expand) {
430
- for (const i in this.nodeMap) {
431
- const tnode = this.nodeMap[i]
432
- tnode.expanded = false
433
- }
434
- } else {
435
- for (const i in this.nodeMap) {
436
- const tnode = this.nodeMap[i]
437
- if (keys.includes(tnode.value) || tnode.expanded) tnode.expanded = false
438
- else tnode.expanded = false
439
- }
440
- }
441
- })
442
- },
443
- getExpandedKeys() {
444
- const expandedKeys = []
445
- for (const i in this.nodeMap) {
446
- const tnode = this.nodeMap[i]
447
- if (tnode.expanded) expandedKeys.push(tnode.value)
448
- }
449
- return expandedKeys
450
- },
451
- // 当前节点被点击 node-click
452
- handleNodeClick(node) {
453
- this.$emit('node-click', node)
454
- },
455
- // 展开父节点
456
- handleExpanedParent(node) {
457
- if (!node) return
458
- if (node.parent) {
459
- let fnode = {}
460
- for (const i in this.nodeMap) {
461
- const tnode = this.nodeMap[i]
462
- if (tnode.value === node.parent) {
463
- fnode = tnode
464
- }
465
- }
466
- if (fnode) {
467
- fnode.expanded = true
468
- this.handleExpanedParent(fnode)
469
- }
470
- }
471
- },
472
- // 当前节点expand
473
- handleNodeExpand(node) {
474
- const brothers = []
475
- const expanded = []
476
- for (const i in this.nodeMap) {
477
- const bnode = this.nodeMap[i]
478
- node.value !== bnode.value && bnode.parent === node.parent && brothers.push(bnode);
479
- bnode.expanded && expanded.push(node.value)
480
- }
481
- // 开启手风琴模式时 有一个打开时关闭其他的兄弟节点
482
- this.accordion && brothers.map(bnode => {
483
- if (bnode.expanded) {
484
- this.$set(bnode, 'expanded', false)
485
- this.handleNodeCollapse(bnode)
486
- }
487
- })
488
- // 懒加载 todo:待优化
489
- this.lazy &&
490
- (!node.children || node.children.length === 0) &&
491
- this.lazyLoad((nodes) => {
492
- node.children = nodes
493
- this.$nextTick(() => {
494
- this.setCheckedKeys(this.checkedKeys)
495
- })
496
- }, node)
497
- this.$emit('update:expandedKeys', expanded)
498
- this.$emit('node-expand', node, expanded)
499
- },
500
- // 当前节点collapse
501
- handleNodeCollapse(node) {
502
- this.$emit('update:expandedKeys', this.getExpandedKeys())
503
- this.$emit('node-collapse', node)
504
- },
505
- // 当前节点check改变事件
506
- handleCheckChange(node, checked) {
507
- this.$emit('check', node, checked)
508
- this.$emit('check-change', this.getCheckedKeys(), this.getCheckedNodes(), node, checked)
509
- },
510
- // 当前选中节点变化时触发的事件
511
- handleCurrentNodeKeyChange(currentNodeKey) {
512
- this.currentNodeKey_ = currentNodeKey
513
- this.$emit('update:currentNodeKey', currentNodeKey)
514
- this.$emit('current-change', currentNodeKey)
515
- }
516
- }
517
- };
518
- </script>
1
+ <template>
2
+ <div :class="setClass" class="to-tree">
3
+ <to-tree-item
4
+ v-if="nodes && nodes.length > 0"
5
+ :data="nodes"
6
+ :highlight-current="highlightCurrent"
7
+ :expand-on-click-node="expandOnClickNode"
8
+ :check-on-click-node="checkOnClickNode"
9
+ :show-checkbox="showCheckbox"
10
+ :is-parent-not-checkbox="isParentNotCheckbox"
11
+ :accordion="accordion"
12
+ :children-text="childrenText"
13
+ :value-text="valueText"
14
+ :label-text="labelText"
15
+ :disabled-text="disabledText"
16
+ :is-leaf-text="isLeafText"
17
+ :checked-text="checkedText"
18
+ :expanded-text="expandedText"
19
+ :check-strictly="checkStrictly"
20
+ :filter-node-method="filterNodeMethod"
21
+ :auto-expand-parent="autoExpandParent"
22
+ :current-node-key="currentNodeKey_"
23
+ :icon-top="iconTop"
24
+ @current-change="handleCurrentNodeKeyChange"
25
+ @check="handleCheckChange"
26
+ @node-click="handleNodeClick"
27
+ @node-expand="handleNodeExpand"
28
+ @node-collapse="handleNodeCollapse"
29
+ >
30
+ <template v-slot="scope">
31
+ <slot :node="scope.node"></slot>
32
+ </template>
33
+ </to-tree-item>
34
+ <div v-else-if="!loading" class="to-align-center">
35
+ {{ emptyText }}
36
+ </div>
37
+ <div v-if="loading || lazyLoading">
38
+ <span v-if="loading || lazyLoading" class="to-icon-loading"><span></span></span>
39
+ {{ loadingText }}
40
+ </div>
41
+ </div>
42
+ </template>
43
+ <script>
44
+ import Vue from 'vue';
45
+ import TreeItem from './treeItem.vue';
46
+ Vue.component('ToTreeItem', TreeItem);
47
+ export default {
48
+ name: 'ToTree',
49
+ componentName: 'ToTree',
50
+ provide() {
51
+ return {
52
+ nodeDatas: this.nodes,
53
+ nodeMap: this.nodeMap,
54
+ ToTree: this
55
+ // 所有的tree事件回调需要通过provider交给子孙tree-item 否则递归emit会触发多次
56
+ // @current-change="handleCurrentNodeKeyChange"
57
+ // @check="handleCheckChange"
58
+ // @node-click="handleNodeClick"
59
+ // @node-expand="handleNodeExpand"
60
+ // @node-collapse="handleNodeCollapse"
61
+ // eventMap: {
62
+ // 'current-change': this.handleCurrentNodeKeyChange,
63
+ // 'check': this.handleCheckChange,
64
+ // 'node-click': this.handleNodeClick,
65
+ // 'node-expand': this.handleNodeExpand,
66
+ // 'node-collapse': this.handleNodeCollapse
67
+ // }
68
+ }
69
+ },
70
+ props: {
71
+ // icon 离顶部的距离,单位:em
72
+ iconTop: {
73
+ type: [Number, String],
74
+ default: ''
75
+ },
76
+ // 是否显示 loading
77
+ loading: {
78
+ type: Boolean,
79
+ default: false
80
+ },
81
+ // 是否全部展开
82
+ expand: Boolean,
83
+ // 类型,menu 类型适合展示在菜单上,icon 类型适合收缩的菜单
84
+ type: {
85
+ type: String,
86
+ default: ''
87
+ },
88
+ // 展示数据
89
+ data: {
90
+ type: Array,
91
+ default: () => []
92
+ },
93
+ // 是否高亮当前选中节点,默认值是 true
94
+ highlightCurrent: {
95
+ type: Boolean,
96
+ default: true
97
+ },
98
+ // 是否在点击节点的时候展开或者收缩节点, 默认值为 false,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。 checkOnClickNode 为true时失效
99
+ expandOnClickNode: {
100
+ type: Boolean,
101
+ default: false
102
+ },
103
+ // 是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点。
104
+ checkOnClickNode: {
105
+ type: Boolean,
106
+ default: false
107
+ },
108
+ // 节点是否可被选择
109
+ showCheckbox: {
110
+ type: Boolean,
111
+ default: false
112
+ },
113
+ // 父节点不被选择
114
+ isParentNotCheckbox: {
115
+ type: Boolean,
116
+ default: false
117
+ },
118
+ // 在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 false
119
+ checkStrictly: {
120
+ type: Boolean,
121
+ default: false
122
+ },
123
+ // 当前选中的节点
124
+ currentNodeKey: {
125
+ type: [String, Number],
126
+ default: undefined
127
+ },
128
+ // 对树节点进行筛选时执行的方法,返回 true 表示这个节点可以显示,返回 false 则表示这个节点会被隐藏 Function(value, data, node)
129
+ filterNodeMethod: {
130
+ type: Function,
131
+ default: undefined
132
+ },
133
+ // 是否每次只打开一个同级树节点展开
134
+ accordion: {
135
+ type: Boolean,
136
+ default: false
137
+ },
138
+ // 展开子节点的时候是否自动展开父节点
139
+ autoExpandParent: {
140
+ type: Boolean,
141
+ default: true
142
+ },
143
+ // 内容为空的时候展示的文本
144
+ emptyText: {
145
+ type: String,
146
+ default: '暂无数据'
147
+ },
148
+ // 载入时展示的文本
149
+ loadingText: {
150
+ type: String,
151
+ default: '加载中'
152
+ },
153
+ // 指定子树为节点对象的某个属性值
154
+ childrenText: {
155
+ type: String,
156
+ default: 'children'
157
+ },
158
+ // 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的
159
+ valueText: {
160
+ type: String,
161
+ default: 'value'
162
+ },
163
+ // 指定节点标签为节点对象的某个属性值
164
+ labelText: {
165
+ type: [String, Function],
166
+ default: 'label'
167
+ },
168
+ lazy: {
169
+ type: Boolean,
170
+ default: false
171
+ },
172
+ load: {
173
+ type: Function,
174
+ default: () => []
175
+ },
176
+ // 指定节点是否为叶子节点,仅在指定了 lazy 属性的情况下生效
177
+ isLeafText: {
178
+ type: [String, Function],
179
+ default: 'isLeaf'
180
+ },
181
+ // 指定节点是否禁用
182
+ disabledText: {
183
+ type: [String, Function],
184
+ default: 'disabled'
185
+ },
186
+ // 指定节点是否默认勾选
187
+ checkedText: {
188
+ type: [String, Function],
189
+ default: 'checked'
190
+ },
191
+ // 指定节点是否默认勾选
192
+ expandedText: {
193
+ type: [String, Function],
194
+ default: 'expanded'
195
+ },
196
+ // 展开的节点
197
+ expandedKeys: {
198
+ type: [String, Array],
199
+ default: () => ([])
200
+ },
201
+ // 勾选的节点
202
+ checkedKeys: {
203
+ type: [String, Array],
204
+ default: () => ([])
205
+ }
206
+ },
207
+ data() {
208
+ return {
209
+ currentNodeKey_: '',
210
+ lazyLoading: false,
211
+ nodes: [],
212
+ nodeMap: {}
213
+ }
214
+ },
215
+ computed: {
216
+ setClass() {
217
+ let arr = [];
218
+ if (this.type) {
219
+ arr.push(`to-tree-type-${this.type}`)
220
+ }
221
+ if (!this.lazy && this.data.every(item => !item[this.childrenText])) {
222
+ arr.push('to-tree-list')
223
+ }
224
+ return arr
225
+ }
226
+ },
227
+ watch: {
228
+ type() {
229
+ this.setCollapsedKeys()
230
+ },
231
+ data: {
232
+ handler(newval = []) {
233
+ this.nodes = JSON.parse(JSON.stringify(newval))
234
+ this.$nextTick(() => {
235
+ this.setExpandedKeys(Array.isArray(this.expandedKeys) ? this.expandedKeys : String(this.expandedKeys).split(','))
236
+ this.setCheckedKeys(Array.isArray(this.checkedKeys) ? this.checkedKeys : String(this.checkedKeys).split(','))
237
+ this.setCurrentKey(this.currentNodeKey)
238
+ })
239
+ },
240
+ deep: true,
241
+ immediate: true
242
+ },
243
+ expand(val) {
244
+ if (val) {
245
+ this.setExpandedKeys()
246
+ } else {
247
+ this.setCollapsedKeys()
248
+ }
249
+ },
250
+ expandedKeys: {
251
+ handler(newval = []) {
252
+ this.setExpandedKeys(Array.isArray(newval) ? newval : String(newval).split(','))
253
+ },
254
+ immediate: true,
255
+ deep: true
256
+ },
257
+ checkedKeys: {
258
+ handler(newval = []) {
259
+ this.setCheckedKeys(Array.isArray(newval) ? newval : String(newval).split(','))
260
+ },
261
+ immediate: true,
262
+ deep: true
263
+ },
264
+ currentNodeKey: {
265
+ handler(newval) {
266
+ // 因为是从外面传进来的,所以第一次传的值,永久就记录这个值,就一直不会变化了,所以这个地方如果连续传同一个值,是会出问题的 todo
267
+ this.setCurrentKey(newval)
268
+ },
269
+ immediate: true
270
+ }
271
+ },
272
+ mounted() {
273
+ if (this.lazy) {
274
+ this.lazyLoad((nodes) => (this.nodes = nodes))
275
+ }
276
+ },
277
+ methods: {
278
+ lazyLoad(resolve, node) {
279
+ if (!resolve) return
280
+ const _level = node ? node._level || 1 : 1
281
+ let res = typeof this.load === 'function' ? this.load(node) || [] : []
282
+ if (typeof res.then === 'function') {
283
+ if (node)node._loading = true
284
+ else this.lazyLoading = true
285
+ res.then((nodes) => {
286
+ nodes.map(node => {
287
+ node._level = _level + 1
288
+ node[this.isLeafText] ? node[this.childrenText] : node[this.childrenText] = []
289
+ })
290
+ if (node)node._loading = false
291
+ else this.lazyLoading = false
292
+ resolve(nodes)
293
+ })
294
+ } else {
295
+ let nodes = []
296
+ if (Array.isArray(res)) {
297
+ nodes = res
298
+ } else {
299
+ nodes = [res]
300
+ }
301
+ nodes.map(node => {
302
+ node._level = _level + 1
303
+ node[this.isLeafText] ? node[this.childrenText] : node[this.childrenText] = []
304
+ })
305
+ resolve(nodes)
306
+ }
307
+ },
308
+ // 对树节点进行筛选操作 接收一个任意类型的参数,该参数会在 filter-node-method 中作为第一个参数
309
+ filter(str) {
310
+ this.$nextTick(() => {
311
+ for (const i in this.nodeMap) {
312
+ const tnode = this.nodeMap[i]
313
+ if (String(tnode.label).indexOf(str) > -1 || Object.values(this.nodeMap).some(cnode => String(cnode.label).indexOf(str) > -1 && cnode.parent === tnode.value)) {
314
+ this.$set(tnode, 'show', true)
315
+ } else {
316
+ this.$set(tnode, 'show', false)
317
+ }
318
+ }
319
+ })
320
+ },
321
+ // 通过 keys 设置节点子元素,使用此方法必须设置 node-key 属性
322
+ // (key, data) 接收两个参数,1. 节点 key 2. 节点数据的数组
323
+ updateKeyChildren(key, children = []) {
324
+ this.$nextTick(() => {
325
+ if (!key || !Array.isArray(children)) return
326
+ if (this.nodeMap[key]) {
327
+ this.nodeMap[key].children = children
328
+ }
329
+ })
330
+ },
331
+ // 若节点可被选择(即 show-checkbox 为 true),则返回目前被选中的节点所组成的数组
332
+ // (leafOnly, includeHalfChecked) 接收两个 boolean 类型的参数,1. 是否只是叶子节点,默认值为 false 2. 是否包含半选节点,默认值为 false
333
+ getCheckedNodes(leafOnly = false, includeHalfChecked = false) {
334
+ const checkeds = []
335
+ for (const i in this.nodeMap) {
336
+ const node = this.nodeMap[i]
337
+ if (node.checked && node.value) {
338
+ if (!leafOnly || (leafOnly && node.isLeaf))checkeds.push(node)
339
+ }
340
+ }
341
+ return checkeds
342
+ },
343
+ // 若节点可被选择(即 show-checkbox 为 true),则返回目前被选中的节点的 key 所组成的数组
344
+ // (leafOnly) 接收一个 boolean 类型的参数,若为 true 则仅返回被选中的叶子节点的 keys,默认值为 false
345
+ getCheckedKeys(leafOnly = false) {
346
+ const checkeds = []
347
+ for (const i in this.nodeMap) {
348
+ const node = this.nodeMap[i]
349
+ if (node.checked && node.value) {
350
+ if (!leafOnly || (leafOnly && node.isLeaf))checkeds.push(node.value)
351
+ }
352
+ }
353
+ return checkeds
354
+ },
355
+ // setCheckedKeys 通过 keys 设置目前勾选的节点,使用此方法必须设置 node-key 属性 (keys, leafOnly) 接收两个参数,1. 勾选节点的 key 的数组 2. boolean 类型的参数,若为 true 则仅设置叶子节点的选中状态,默认值为 false
356
+ setCheckedKeys(keys = [], leafOnly = false) {
357
+ this.$nextTick(() => {
358
+ for (const i in this.nodeMap) {
359
+ const tnode = this.nodeMap[i]
360
+ if (keys.includes(tnode.value)) {
361
+ if (leafOnly) {
362
+ if (tnode.isLeaf) {
363
+ tnode.checked = true
364
+ } else {
365
+ tnode.checked = false
366
+ }
367
+ } else tnode.checked = true
368
+ } else tnode.checked = false
369
+ }
370
+ })
371
+ },
372
+ // setChecked 通过 key / data 设置某个节点的勾选状态,使用此方法必须设置 node-key 属性 (key/data, checked, deep) 接收三个参数,1. 勾选节点的 key 或者 data 2. boolean 类型,节点是否选中 3. boolean 类型,是否设置子节点 ,默认为 false
373
+ // setChecked(key,checked,setChild)
374
+ // getHalfCheckedNodes 若节点可被选择(即 show-checkbox 为 true),则返回目前半选中的节点所组成的数组 -
375
+ // getHalfCheckedKeys 若节点可被选择(即 show-checkbox 为 true),则返回目前半选中的节点的 key 所组成的数组 -
376
+ // getCurrentKey 获取当前被选中节点的 key,使用此方法必须设置 node-key 属性,若没有节点被选中则返回 null —
377
+ // getCurrentNode 获取当前被选中节点的 data,若没有节点被选中则返回 null —
378
+ getCurrentNode() {
379
+ let current = {}
380
+ for (const i in this.nodeMap) {
381
+ const node = this.nodeMap[i]
382
+ if (this.currentNodeKey_ === node.value) {
383
+ current = node
384
+ }
385
+ }
386
+ return current
387
+ },
388
+ // setCurrentKey 通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 (key) 待被选节点的 key,若为 null 则取消当前高亮的节点
389
+ setCurrentKey(key) {
390
+ this.$nextTick(() => {
391
+ this.currentNodeKey_ = key
392
+ this.autoExpandParent && this.handleExpanedParent(this.nodeMap[key])
393
+ })
394
+ },
395
+ // setCurrentNode 通过 node 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性 (node) 待被选节点的 node
396
+ setCurrentNode(node) {
397
+ if (!node || !node[this.valueText]) return
398
+ this.setCurrentKey(node[this.valueText])
399
+ },
400
+ // getNode 根据 data 或者 key 拿到 Tree 组件中的 node (data) 要获得 node 的 key 或者 data
401
+ getNode(key) {
402
+ key = typeof key === 'string' ? key : key ? key[this.valueText] : undefined
403
+ return this.nodeMap[key]
404
+ },
405
+ // remove 删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性 (data) 要删除的节点的 data 或者 node
406
+ // append 为 Tree 中的一个节点追加一个子节点 (data, parentNode) 接收两个参数,1. 要追加的子节点的 data 2. 子节点的 parent 的 data、key 或者 node
407
+ // insertBefore 为 Tree 的一个节点的前面增加一个节点 (data, refNode) 接收两个参数,1. 要增加的节点的 data 2. 要增加的节点的后一个节点的 data、key 或者 node
408
+ // insertAfter 为 Tree 的一个节点的后面增加一个节点 (data, refNode) 接收两个参数,1. 要增加的节点的 data 2. 要增加的节点的前一个节点的 data、key 或者 node
409
+ setExpandedKeys(keys = []) {
410
+ this.$nextTick(() => {
411
+ if (this.expand) {
412
+ for (const i in this.nodeMap) {
413
+ const tnode = this.nodeMap[i]
414
+ tnode.expanded = true
415
+ }
416
+ } else {
417
+ for (const i in this.nodeMap) {
418
+ const tnode = this.nodeMap[i]
419
+ if (keys.includes(tnode.value) || tnode.expanded) tnode.expanded = true
420
+ else tnode.expanded = false
421
+ }
422
+ }
423
+ })
424
+ },
425
+ // 收起节点
426
+ setCollapsedKeys(keys = []) {
427
+ this.$nextTick(() => {
428
+ // 默认展开,则全部收起
429
+ if (this.expand) {
430
+ for (const i in this.nodeMap) {
431
+ const tnode = this.nodeMap[i]
432
+ tnode.expanded = false
433
+ }
434
+ } else {
435
+ for (const i in this.nodeMap) {
436
+ const tnode = this.nodeMap[i]
437
+ if (keys.includes(tnode.value) || tnode.expanded) tnode.expanded = false
438
+ else tnode.expanded = false
439
+ }
440
+ }
441
+ })
442
+ },
443
+ getExpandedKeys() {
444
+ const expandedKeys = []
445
+ for (const i in this.nodeMap) {
446
+ const tnode = this.nodeMap[i]
447
+ if (tnode.expanded) expandedKeys.push(tnode.value)
448
+ }
449
+ return expandedKeys
450
+ },
451
+ // 当前节点被点击 node-click
452
+ handleNodeClick(node) {
453
+ this.$emit('node-click', node)
454
+ },
455
+ // 展开父节点
456
+ handleExpanedParent(node) {
457
+ if (!node) return
458
+ if (node.parent) {
459
+ let fnode = {}
460
+ for (const i in this.nodeMap) {
461
+ const tnode = this.nodeMap[i]
462
+ if (tnode.value === node.parent) {
463
+ fnode = tnode
464
+ }
465
+ }
466
+ if (fnode) {
467
+ fnode.expanded = true
468
+ this.handleExpanedParent(fnode)
469
+ }
470
+ }
471
+ },
472
+ // 当前节点expand
473
+ handleNodeExpand(node) {
474
+ const brothers = []
475
+ const expanded = []
476
+ for (const i in this.nodeMap) {
477
+ const bnode = this.nodeMap[i]
478
+ node.value !== bnode.value && bnode.parent === node.parent && brothers.push(bnode);
479
+ bnode.expanded && expanded.push(node.value)
480
+ }
481
+ // 开启手风琴模式时 有一个打开时关闭其他的兄弟节点
482
+ this.accordion && brothers.map(bnode => {
483
+ if (bnode.expanded) {
484
+ this.$set(bnode, 'expanded', false)
485
+ this.handleNodeCollapse(bnode)
486
+ }
487
+ })
488
+ // 懒加载 todo:待优化
489
+ this.lazy &&
490
+ (!node.children || node.children.length === 0) &&
491
+ this.lazyLoad((nodes) => {
492
+ node.children = nodes
493
+ this.$nextTick(() => {
494
+ this.setCheckedKeys(this.checkedKeys)
495
+ })
496
+ }, node)
497
+ this.$emit('update:expandedKeys', expanded)
498
+ this.$emit('node-expand', node, expanded)
499
+ },
500
+ // 当前节点collapse
501
+ handleNodeCollapse(node) {
502
+ this.$emit('update:expandedKeys', this.getExpandedKeys())
503
+ this.$emit('node-collapse', node)
504
+ },
505
+ // 当前节点check改变事件
506
+ handleCheckChange(node, checked) {
507
+ this.$emit('check', node, checked)
508
+ this.$emit('check-change', this.getCheckedKeys(), this.getCheckedNodes(), node, checked)
509
+ },
510
+ // 当前选中节点变化时触发的事件
511
+ handleCurrentNodeKeyChange(currentNodeKey) {
512
+ this.currentNodeKey_ = currentNodeKey
513
+ this.$emit('update:currentNodeKey', currentNodeKey)
514
+ this.$emit('current-change', currentNodeKey)
515
+ }
516
+ }
517
+ };
518
+ </script>