ai.touchui-vue 1.31.3 → 1.32.0

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 (753) hide show
  1. package/README.md +21 -21
  2. package/lib/ai.touchui-vue.common.js +1416 -1401
  3. package/lib/cascader.js +15 -3
  4. package/lib/chat.js +5 -5
  5. package/lib/collapse.js +1 -2
  6. package/lib/color.js +5 -5
  7. package/lib/date-picker.js +1 -2
  8. package/lib/date-range.js +16 -15
  9. package/lib/export.js +3 -3
  10. package/lib/index.js +1 -1
  11. package/lib/locale/format.js +10 -10
  12. package/lib/menu-icon.js +295 -295
  13. package/lib/mixins/migrating.js +20 -20
  14. package/lib/mixins/transition.js +14 -14
  15. package/lib/org.js +1 -2
  16. package/lib/page.js +1 -2
  17. package/lib/range.js +3 -3
  18. package/lib/scroll.js +8 -4
  19. package/lib/static/{net-mix.dc6e414.svg → net-mix.293a4b6.svg} +7 -7
  20. package/lib/tab.js +5 -5
  21. package/lib/table.js +22 -22
  22. package/lib/theme/css/theme/B-Design.css +1 -1
  23. package/lib/theme/css/theme/aiplan.css +1 -1
  24. package/lib/theme/css/theme/aiplangd.css +1 -1
  25. package/lib/theme/css/theme/chbn.css +1 -1
  26. package/lib/theme/css/theme/default.css +1 -1
  27. package/lib/theme/css/theme/dt.css +1 -1
  28. package/lib/theme/css/theme/ecloud.css +1 -1
  29. package/lib/theme/css/theme/hongkong.css +1 -1
  30. package/lib/theme/css/theme/narrow.css +1 -1
  31. package/lib/theme/css/theme/sdpf.css +1 -1
  32. package/lib/theme/css/theme/upc.css +1 -1
  33. package/lib/theme/css/theme/website.css +1 -1
  34. package/lib/theme/css/theme/zj.css +1 -1
  35. package/lib/utils/clickoutside.js +11 -11
  36. package/lib/utils/dom.js +13 -13
  37. package/lib/utils/filetransfer.js +4 -4
  38. package/lib/utils/jsencrypt/JSEncrypt.js +77 -77
  39. package/lib/utils/jsencrypt/JSEncryptRSAKey.js +115 -115
  40. package/lib/utils/jsencrypt/jselib/asn1js/asn1.js +4 -4
  41. package/lib/utils/jsencrypt/jselib/jsrsasign/asn1-1.0.js +734 -734
  42. package/lib/utils/jsencrypt/jselib/jsrsasign/yahoo.js +22 -22
  43. package/lib/utils/jsencrypt.js +260 -260
  44. package/lib/utils/md5.js +3 -3
  45. package/lib/utils/mime.js +2 -2
  46. package/lib/utils/ratio.js +53 -54
  47. package/lib/utils/sign.js +12 -12
  48. package/lib/utils/util.js +3 -3
  49. package/lib/utils/validate.js +11 -11
  50. package/package.json +159 -159
  51. package/packages/.DS_Store +0 -0
  52. package/packages/affix/index.js +8 -8
  53. package/packages/affix/src/affix.vue +139 -139
  54. package/packages/align/index.js +8 -8
  55. package/packages/align/src/directive.js +29 -29
  56. package/packages/animation/index.js +8 -8
  57. package/packages/animation/src/animation.vue +68 -68
  58. package/packages/article/.DS_Store +0 -0
  59. package/packages/article/index.js +8 -8
  60. package/packages/article/src/article.vue +23 -23
  61. package/packages/box/index.js +8 -8
  62. package/packages/box/src/box.vue +170 -170
  63. package/packages/button/index.js +8 -8
  64. package/packages/button/src/button.vue +162 -162
  65. package/packages/calendar/index.js +8 -8
  66. package/packages/calendar/src/calendar.vue +1142 -1142
  67. package/packages/card/index.js +10 -10
  68. package/packages/card/src/card-item.vue +92 -92
  69. package/packages/card/src/card.vue +175 -175
  70. package/packages/card-item/index.js +8 -8
  71. package/packages/cascader/index.js +8 -8
  72. package/packages/cascader/src/cascader.vue +818 -814
  73. package/packages/center-scroll/index.js +8 -8
  74. package/packages/center-scroll/src/center-scroll.vue +147 -147
  75. package/packages/chat/.DS_Store +0 -0
  76. package/packages/chat/index.js +12 -12
  77. package/packages/chat/src/.DS_Store +0 -0
  78. package/packages/chat/src/chat.vue +116 -116
  79. package/packages/checkbox/index.js +8 -8
  80. package/packages/checkbox/src/checkbox.vue +262 -262
  81. package/packages/checkboxes/index.js +8 -8
  82. package/packages/checkboxes/src/checkboxes.vue +97 -97
  83. package/packages/collapse/index.js +10 -10
  84. package/packages/collapse/src/collapse-item.vue +188 -188
  85. package/packages/collapse/src/collapse.vue +100 -100
  86. package/packages/color/index.js +8 -8
  87. package/packages/color/src/directive.js +42 -42
  88. package/packages/countdown/index.js +8 -8
  89. package/packages/countdown/src/countdown.vue +128 -128
  90. package/packages/date-picker/.DS_Store +0 -0
  91. package/packages/date-picker/index.js +8 -8
  92. package/packages/date-picker/src/date-picker.vue +438 -438
  93. package/packages/date-picker/src/picker.vue +342 -342
  94. package/packages/date-range/index.js +8 -8
  95. package/packages/date-range/src/date-range.vue +384 -384
  96. package/packages/dialog/index.js +8 -8
  97. package/packages/dialog/src/dialog.vue +313 -313
  98. package/packages/dis/.DS_Store +0 -0
  99. package/packages/dis/index.js +8 -8
  100. package/packages/dis/src/directive.js +42 -42
  101. package/packages/ellipsis/index.js +8 -8
  102. package/packages/ellipsis/src/ellipsis.vue +306 -306
  103. package/packages/emote/.DS_Store +0 -0
  104. package/packages/emote/index.js +8 -8
  105. package/packages/emote/src/emote.vue +38 -38
  106. package/packages/export/index.js +8 -8
  107. package/packages/export/src/ajax.js +73 -73
  108. package/packages/export/src/export.vue +289 -289
  109. package/packages/filter/.DS_Store +0 -0
  110. package/packages/filter/index.js +8 -8
  111. package/packages/filter/src/.DS_Store +0 -0
  112. package/packages/filter/src/filter.vue +245 -245
  113. package/packages/fix/index.js +8 -8
  114. package/packages/fix/src/fix.vue +221 -221
  115. package/packages/float/.DS_Store +0 -0
  116. package/packages/float/index.js +16 -16
  117. package/packages/float/src/directive.js +20 -20
  118. package/packages/float/src/main.vue +642 -642
  119. package/packages/float/src/trigger.vue +31 -31
  120. package/packages/flow/.DS_Store +0 -0
  121. package/packages/flow/index.js +8 -8
  122. package/packages/flow/src/flow.vue +234 -234
  123. package/packages/flow/src/flowItem.vue +61 -61
  124. package/packages/flow/src/flowLine.vue +168 -168
  125. package/packages/form/index.js +10 -10
  126. package/packages/form/src/form-item.vue +96 -96
  127. package/packages/form/src/form.vue +184 -184
  128. package/packages/grid/index.js +10 -10
  129. package/packages/grid/src/grid-item.vue +65 -65
  130. package/packages/grid/src/grid.vue +190 -190
  131. package/packages/grid-item/index.js +8 -8
  132. package/packages/guider/.DS_Store +0 -0
  133. package/packages/guider/index.js +8 -8
  134. package/packages/guider/src/guider.vue +168 -168
  135. package/packages/header/index.js +8 -8
  136. package/packages/header/src/header.vue +110 -110
  137. package/packages/hide/index.js +8 -8
  138. package/packages/hide/src/directive.js +57 -57
  139. package/packages/icon/index.js +8 -8
  140. package/packages/icon/src/icon.vue +79 -79
  141. package/packages/import/index.js +8 -8
  142. package/packages/import/src/import.vue +279 -279
  143. package/packages/input/index.js +8 -8
  144. package/packages/input/src/calcTextareaHeight.js +104 -104
  145. package/packages/input/src/input.vue +653 -653
  146. package/packages/ip/.DS_Store +0 -0
  147. package/packages/ip/index.js +8 -8
  148. package/packages/ip/src/ip.vue +143 -143
  149. package/packages/line/index.js +8 -8
  150. package/packages/line/src/line.vue +29 -29
  151. package/packages/loading/index.js +8 -8
  152. package/packages/loading/src/loading.js +58 -58
  153. package/packages/longtap/index.js +8 -8
  154. package/packages/longtap/src/longtap.js +95 -95
  155. package/packages/menu-icon/index.js +8 -8
  156. package/packages/menu-icon/src/menu-icon.vue +206 -206
  157. package/packages/message/index.js +8 -8
  158. package/packages/message/src/message.vue +9 -9
  159. package/packages/msg/index.js +8 -8
  160. package/packages/msg/src/msg.vue +227 -227
  161. package/packages/org/.DS_Store +0 -0
  162. package/packages/org/index.js +8 -8
  163. package/packages/org/src/org.vue +113 -113
  164. package/packages/org/src/orgItem.vue +63 -63
  165. package/packages/padding/index.js +8 -8
  166. package/packages/padding/src/padding.vue +105 -105
  167. package/packages/page/.DS_Store +0 -0
  168. package/packages/page/index.js +8 -8
  169. package/packages/page/src/.DS_Store +0 -0
  170. package/packages/page/src/page.vue +297 -297
  171. package/packages/param/index.js +8 -8
  172. package/packages/param/src/param.vue +226 -226
  173. package/packages/pic/.DS_Store +0 -0
  174. package/packages/pic/index.js +8 -8
  175. package/packages/pic/src/pic-viewer.vue +331 -331
  176. package/packages/pic/src/pic.vue +144 -144
  177. package/packages/popup/index.js +12 -12
  178. package/packages/popup/src/popup-group.vue +47 -47
  179. package/packages/popup/src/popup-item.vue +163 -163
  180. package/packages/popup/src/popup.vue +350 -350
  181. package/packages/progress/index.js +8 -8
  182. package/packages/progress/src/progress.vue +306 -306
  183. package/packages/range/index.js +8 -8
  184. package/packages/range/src/range.vue +612 -612
  185. package/packages/rate/.DS_Store +0 -0
  186. package/packages/rate/index.js +8 -8
  187. package/packages/rate/src/rate.vue +129 -129
  188. package/packages/reverser/.DS_Store +0 -0
  189. package/packages/reverser/index.js +8 -8
  190. package/packages/reverser/src/.DS_Store +0 -0
  191. package/packages/reverser/src/reverser.vue +49 -49
  192. package/packages/scroll/index.js +12 -12
  193. package/packages/scroll/src/scroll-point.vue +24 -24
  194. package/packages/scroll/src/scroll-sticky.vue +60 -60
  195. package/packages/scroll/src/scroll.vue +385 -381
  196. package/packages/segment/.DS_Store +0 -0
  197. package/packages/segment/index.js +8 -8
  198. package/packages/segment/src/segment.vue +618 -618
  199. package/packages/select/index.js +8 -8
  200. package/packages/select/src/select.vue +1445 -1445
  201. package/packages/size/index.js +8 -8
  202. package/packages/size/src/directive.js +33 -33
  203. package/packages/skeleton/index.js +8 -8
  204. package/packages/skeleton/src/skeleton.vue +179 -179
  205. package/packages/slide/.DS_Store +0 -0
  206. package/packages/slide/index.js +8 -8
  207. package/packages/slide/src/slide.vue +147 -147
  208. package/packages/space/index.js +8 -8
  209. package/packages/space/src/space.vue +53 -53
  210. package/packages/step/index.js +8 -8
  211. package/packages/step/src/step.vue +122 -122
  212. package/packages/submit/index.js +8 -8
  213. package/packages/submit/src/submit.vue +103 -103
  214. package/packages/switch/index.js +9 -9
  215. package/packages/switch/src/component.vue +131 -131
  216. package/packages/tab/.DS_Store +0 -0
  217. package/packages/tab/index.js +10 -10
  218. package/packages/tab/src/tab-item.vue +85 -85
  219. package/packages/tab/src/tab.vue +599 -599
  220. package/packages/table/.DS_Store +0 -0
  221. package/packages/table/index.js +8 -8
  222. package/packages/table/src/table-body.vue +301 -301
  223. package/packages/table/src/table-config.vue +139 -139
  224. package/packages/table/src/table-head.vue +242 -242
  225. package/packages/table/src/table.vue +1458 -1458
  226. package/packages/tag/index.js +8 -8
  227. package/packages/tag/src/tag.vue +129 -129
  228. package/packages/theme/lib/css/theme/B-Design.css +1 -1
  229. package/packages/theme/lib/css/theme/aiplan.css +1 -1
  230. package/packages/theme/lib/css/theme/aiplangd.css +1 -1
  231. package/packages/theme/lib/css/theme/chbn.css +1 -1
  232. package/packages/theme/lib/css/theme/default.css +1 -1
  233. package/packages/theme/lib/css/theme/dt.css +1 -1
  234. package/packages/theme/lib/css/theme/ecloud.css +1 -1
  235. package/packages/theme/lib/css/theme/hongkong.css +1 -1
  236. package/packages/theme/lib/css/theme/narrow.css +1 -1
  237. package/packages/theme/lib/css/theme/sdpf.css +1 -1
  238. package/packages/theme/lib/css/theme/upc.css +1 -1
  239. package/packages/theme/lib/css/theme/website.css +1 -1
  240. package/packages/theme/lib/css/theme/zj.css +1 -1
  241. package/packages/theme/package.json +33 -33
  242. package/packages/theme/src/.DS_Store +0 -0
  243. package/packages/theme/src/global/mixin.less +416 -416
  244. package/packages/theme/src/global/reset.less +27 -27
  245. package/packages/theme/src/img/.DS_Store +0 -0
  246. package/packages/theme/src/img/emote/.DS_Store +0 -0
  247. package/packages/theme/src/less/.DS_Store +0 -0
  248. package/packages/theme/src/less/component/affix.less +8 -8
  249. package/packages/theme/src/less/component/article-dark.less +6 -6
  250. package/packages/theme/src/less/component/article.less +39 -39
  251. package/packages/theme/src/less/component/box-dark.less +85 -85
  252. package/packages/theme/src/less/component/box.less +272 -272
  253. package/packages/theme/src/less/component/calendar-dark.less +111 -111
  254. package/packages/theme/src/less/component/calendar.less +282 -282
  255. package/packages/theme/src/less/component/card-dark.less +17 -17
  256. package/packages/theme/src/less/component/card.less +89 -89
  257. package/packages/theme/src/less/component/chat-dark.less +47 -47
  258. package/packages/theme/src/less/component/chat.less +71 -71
  259. package/packages/theme/src/less/component/code-dark.less +41 -41
  260. package/packages/theme/src/less/component/code.less +33 -33
  261. package/packages/theme/src/less/component/cover.less +4 -4
  262. package/packages/theme/src/less/component/dialog-dark.less +54 -54
  263. package/packages/theme/src/less/component/dialog.less +75 -75
  264. package/packages/theme/src/less/component/filter-dark.less +31 -31
  265. package/packages/theme/src/less/component/filter.less +97 -97
  266. package/packages/theme/src/less/component/float-dark.less +26 -26
  267. package/packages/theme/src/less/component/float.less +61 -61
  268. package/packages/theme/src/less/component/form-dark.less +45 -45
  269. package/packages/theme/src/less/component/form.less +322 -322
  270. package/packages/theme/src/less/component/gantt-dark.less +44 -44
  271. package/packages/theme/src/less/component/gantt.less +52 -52
  272. package/packages/theme/src/less/component/guider-dark.less +6 -6
  273. package/packages/theme/src/less/component/guider.less +15 -15
  274. package/packages/theme/src/less/component/header-dark.less +41 -41
  275. package/packages/theme/src/less/component/header.less +121 -121
  276. package/packages/theme/src/less/component/keyboard-dark.less +15 -15
  277. package/packages/theme/src/less/component/keyboard.less +21 -21
  278. package/packages/theme/src/less/component/line-dark.less +20 -20
  279. package/packages/theme/src/less/component/line.less +21 -21
  280. package/packages/theme/src/less/component/msg-dark.less +42 -42
  281. package/packages/theme/src/less/component/msg.less +102 -102
  282. package/packages/theme/src/less/component/page-dark.less +26 -26
  283. package/packages/theme/src/less/component/page.less +26 -26
  284. package/packages/theme/src/less/component/param-dark.less +31 -31
  285. package/packages/theme/src/less/component/param.less +136 -136
  286. package/packages/theme/src/less/component/popup-dark.less +20 -20
  287. package/packages/theme/src/less/component/popup.less +85 -85
  288. package/packages/theme/src/less/component/print.less +121 -121
  289. package/packages/theme/src/less/component/scroll-dark.less +19 -19
  290. package/packages/theme/src/less/component/scroll.less +47 -47
  291. package/packages/theme/src/less/component/skeleton-dark.less +29 -29
  292. package/packages/theme/src/less/component/skeleton.less +78 -78
  293. package/packages/theme/src/less/component/slide.less +70 -70
  294. package/packages/theme/src/less/component/space.less +2 -2
  295. package/packages/theme/src/less/component/step-dark.less +165 -165
  296. package/packages/theme/src/less/component/step.less +147 -147
  297. package/packages/theme/src/less/component/submit.less +40 -40
  298. package/packages/theme/src/less/component/tab-dark.less +221 -221
  299. package/packages/theme/src/less/component/tab.less +469 -462
  300. package/packages/theme/src/less/component/table-dark.less +196 -196
  301. package/packages/theme/src/less/component/table.less +435 -435
  302. package/packages/theme/src/less/component/timeline-dark.less +13 -13
  303. package/packages/theme/src/less/component/timeline.less +114 -114
  304. package/packages/theme/src/less/component/tip-dark.less +76 -76
  305. package/packages/theme/src/less/component/tip.less +139 -139
  306. package/packages/theme/src/less/component/tooltip-dark.less +105 -105
  307. package/packages/theme/src/less/component/tooltip.less +159 -159
  308. package/packages/theme/src/less/component/tree-dark.less +56 -56
  309. package/packages/theme/src/less/component/tree.less +148 -148
  310. package/packages/theme/src/less/element/align.less +32 -32
  311. package/packages/theme/src/less/element/animation.less +5 -5
  312. package/packages/theme/src/less/element/button-dark.less +29 -29
  313. package/packages/theme/src/less/element/button.less +65 -65
  314. package/packages/theme/src/less/element/center-scroll-dark.less +3 -3
  315. package/packages/theme/src/less/element/center-scroll.less +6 -6
  316. package/packages/theme/src/less/element/checkbox-dark.less +68 -68
  317. package/packages/theme/src/less/element/checkbox.less +73 -73
  318. package/packages/theme/src/less/element/color-dark.less +15 -15
  319. package/packages/theme/src/less/element/color.less +33 -33
  320. package/packages/theme/src/less/element/dis.less +9 -9
  321. package/packages/theme/src/less/element/ellipsis.less +35 -35
  322. package/packages/theme/src/less/element/emote.less +5 -5
  323. package/packages/theme/src/less/element/font-dark.less +9 -9
  324. package/packages/theme/src/less/element/font.less +8 -8
  325. package/packages/theme/src/less/element/hide-dark.less +114 -114
  326. package/packages/theme/src/less/element/hide.less +114 -114
  327. package/packages/theme/src/less/element/icon.less +297 -297
  328. package/packages/theme/src/less/element/input-dark.less +205 -205
  329. package/packages/theme/src/less/element/input.less +405 -405
  330. package/packages/theme/src/less/element/menu-icon.less +1 -1
  331. package/packages/theme/src/less/element/pic.less +18 -18
  332. package/packages/theme/src/less/element/progress-dark.less +37 -37
  333. package/packages/theme/src/less/element/progress.less +82 -82
  334. package/packages/theme/src/less/element/radio-dark.less +18 -18
  335. package/packages/theme/src/less/element/radio.less +11 -11
  336. package/packages/theme/src/less/element/range-dark.less +24 -24
  337. package/packages/theme/src/less/element/range.less +56 -56
  338. package/packages/theme/src/less/element/rate.less +17 -17
  339. package/packages/theme/src/less/element/segment-dark.less +119 -119
  340. package/packages/theme/src/less/element/segment.less +197 -197
  341. package/packages/theme/src/less/element/select-dark.less +167 -167
  342. package/packages/theme/src/less/element/select.less +431 -431
  343. package/packages/theme/src/less/element/size.less +10 -10
  344. package/packages/theme/src/less/element/switch-dark.less +7 -7
  345. package/packages/theme/src/less/element/switch.less +37 -37
  346. package/packages/theme/src/less/element/tag-dark.less +115 -115
  347. package/packages/theme/src/less/element/tag.less +159 -159
  348. package/packages/theme/src/less/element/upload-dark.less +26 -26
  349. package/packages/theme/src/less/element/upload.less +64 -64
  350. package/packages/theme/src/less/layout/fix.less +2 -2
  351. package/packages/theme/src/less/layout/flow.less +47 -47
  352. package/packages/theme/src/less/layout/grid-dark.less +28 -28
  353. package/packages/theme/src/less/layout/grid.less +172 -172
  354. package/packages/theme/src/less/layout/org-dark.less +2 -2
  355. package/packages/theme/src/less/layout/org.less +72 -72
  356. package/packages/theme/src/less/layout/padding.less +1 -1
  357. package/packages/theme/src/less/layout/reverser.less +8 -8
  358. package/packages/theme/src/less/theme/.DS_Store +0 -0
  359. package/packages/theme/src/less/theme/B-Design.less +159 -159
  360. package/packages/theme/src/less/theme/aiplan.less +159 -159
  361. package/packages/theme/src/less/theme/aiplangd.less +159 -159
  362. package/packages/theme/src/less/theme/chbn.less +159 -159
  363. package/packages/theme/src/less/theme/default.less +160 -160
  364. package/packages/theme/src/less/theme/dt.less +159 -159
  365. package/packages/theme/src/less/theme/ecloud.less +159 -159
  366. package/packages/theme/src/less/theme/hongkong.less +159 -159
  367. package/packages/theme/src/less/theme/narrow.less +160 -160
  368. package/packages/theme/src/less/theme/sdpf.less +160 -160
  369. package/packages/theme/src/less/theme/upc.less +159 -159
  370. package/packages/theme/src/less/theme/website.less +159 -159
  371. package/packages/theme/src/less/theme/zj.less +159 -159
  372. package/packages/timeline/index.js +8 -8
  373. package/packages/timeline/src/timeline.vue +84 -84
  374. package/packages/tip/index.js +8 -8
  375. package/packages/tip/src/tip.vue +226 -226
  376. package/packages/tooltip/.DS_Store +0 -0
  377. package/packages/tooltip/index.js +8 -8
  378. package/packages/tooltip/src/directive.js +180 -180
  379. package/packages/tooltip/src/tooltip.vue +467 -467
  380. package/packages/transfer/index.js +8 -8
  381. package/packages/transfer/src/transfer.vue +293 -293
  382. package/packages/tree/.DS_Store +0 -0
  383. package/packages/tree/index.js +8 -8
  384. package/packages/tree/src/tree.vue +518 -518
  385. package/packages/tree/src/treeItem.vue +443 -443
  386. package/packages/upload/.DS_Store +0 -0
  387. package/packages/upload/index.js +8 -8
  388. package/packages/upload/src/upload.vue +860 -860
  389. package/src/.DS_Store +0 -0
  390. package/src/index.js +207 -207
  391. package/src/locale/format.js +46 -46
  392. package/src/locale/index.js +48 -48
  393. package/src/locale/lang/en.js +207 -207
  394. package/src/locale/lang/zh-CN.js +207 -207
  395. package/src/mixins/blur.js +9 -9
  396. package/src/mixins/emitter.js +33 -33
  397. package/src/mixins/focus.js +9 -9
  398. package/src/mixins/locale.js +9 -9
  399. package/src/mixins/migrating.js +54 -54
  400. package/src/mixins/tip.js +10 -10
  401. package/src/mixins/transition.js +130 -130
  402. package/src/msg/index.js +107 -107
  403. package/src/svg/.DS_Store +0 -0
  404. package/src/svg/menu/.DS_Store +0 -0
  405. package/src/svg/menu/main/abnormal-mix.svg +5 -5
  406. package/src/svg/menu/main/abnormal.svg +5 -5
  407. package/src/svg/menu/main/accountManager-mix.svg +5 -5
  408. package/src/svg/menu/main/accountManager.svg +5 -5
  409. package/src/svg/menu/main/agreement-mix.svg +7 -7
  410. package/src/svg/menu/main/agreement.svg +7 -7
  411. package/src/svg/menu/main/ai-mix.svg +5 -5
  412. package/src/svg/menu/main/archives-mix.svg +6 -6
  413. package/src/svg/menu/main/arrearsReport-mix.svg +17 -17
  414. package/src/svg/menu/main/arrearsReport.svg +17 -17
  415. package/src/svg/menu/main/bill-mix.svg +13 -13
  416. package/src/svg/menu/main/bill.svg +13 -13
  417. package/src/svg/menu/main/box-mix.svg +5 -5
  418. package/src/svg/menu/main/broadband-mix.svg +4 -4
  419. package/src/svg/menu/main/broadband.svg +4 -4
  420. package/src/svg/menu/main/card-mix.svg +5 -5
  421. package/src/svg/menu/main/card.svg +5 -5
  422. package/src/svg/menu/main/cash-mix.svg +5 -5
  423. package/src/svg/menu/main/cash.svg +5 -5
  424. package/src/svg/menu/main/cloud-mix.svg +4 -4
  425. package/src/svg/menu/main/cloud.svg +4 -4
  426. package/src/svg/menu/main/clue-mix.svg +10 -10
  427. package/src/svg/menu/main/clue.svg +10 -10
  428. package/src/svg/menu/main/commonUse-mix.svg +4 -4
  429. package/src/svg/menu/main/commonUse.svg +4 -4
  430. package/src/svg/menu/main/construction-mix.svg +7 -7
  431. package/src/svg/menu/main/construction.svg +7 -7
  432. package/src/svg/menu/main/contract-mix.svg +8 -8
  433. package/src/svg/menu/main/contract.svg +8 -8
  434. package/src/svg/menu/main/credit-mix.svg +5 -5
  435. package/src/svg/menu/main/credit.svg +5 -5
  436. package/src/svg/menu/main/data-mix.svg +5 -5
  437. package/src/svg/menu/main/data.svg +5 -5
  438. package/src/svg/menu/main/date-mix.svg +7 -7
  439. package/src/svg/menu/main/deposit-mix.svg +4 -4
  440. package/src/svg/menu/main/device-mix.svg +4 -4
  441. package/src/svg/menu/main/device.svg +4 -4
  442. package/src/svg/menu/main/discrepancy-mix.svg +5 -5
  443. package/src/svg/menu/main/door-mix.svg +6 -6
  444. package/src/svg/menu/main/fault-mix.svg +12 -12
  445. package/src/svg/menu/main/fault.svg +16 -16
  446. package/src/svg/menu/main/finance-mix.svg +11 -11
  447. package/src/svg/menu/main/finance.svg +13 -13
  448. package/src/svg/menu/main/flow-mix.svg +4 -4
  449. package/src/svg/menu/main/flow.svg +4 -4
  450. package/src/svg/menu/main/folder-mix.svg +4 -4
  451. package/src/svg/menu/main/folder.svg +4 -4
  452. package/src/svg/menu/main/friendly-mix.svg +5 -5
  453. package/src/svg/menu/main/fusion-mix.svg +5 -5
  454. package/src/svg/menu/main/fusion.svg +5 -5
  455. package/src/svg/menu/main/gift-mix.svg +8 -8
  456. package/src/svg/menu/main/gift.svg +8 -8
  457. package/src/svg/menu/main/gps-mix.svg +6 -6
  458. package/src/svg/menu/main/gps.svg +6 -6
  459. package/src/svg/menu/main/grid-mix.svg +7 -7
  460. package/src/svg/menu/main/grid.svg +7 -7
  461. package/src/svg/menu/main/group-mix.svg +4 -4
  462. package/src/svg/menu/main/group.svg +4 -4
  463. package/src/svg/menu/main/home-mix.svg +5 -5
  464. package/src/svg/menu/main/home.svg +8 -8
  465. package/src/svg/menu/main/ict-mix.svg +4 -4
  466. package/src/svg/menu/main/industry-mix.svg +5 -5
  467. package/src/svg/menu/main/industry.svg +5 -5
  468. package/src/svg/menu/main/info-mix.svg +9 -9
  469. package/src/svg/menu/main/info.svg +9 -9
  470. package/src/svg/menu/main/integral-mix.svg +5 -5
  471. package/src/svg/menu/main/integral.svg +5 -5
  472. package/src/svg/menu/main/internet-mix.svg +5 -5
  473. package/src/svg/menu/main/internet.svg +5 -5
  474. package/src/svg/menu/main/inventory-mix.svg +5 -5
  475. package/src/svg/menu/main/invoice-mix.svg +6 -6
  476. package/src/svg/menu/main/invoice.svg +14 -14
  477. package/src/svg/menu/main/iot-mix.svg +5 -5
  478. package/src/svg/menu/main/iot.svg +5 -5
  479. package/src/svg/menu/main/label-mix.svg +4 -4
  480. package/src/svg/menu/main/label.svg +4 -4
  481. package/src/svg/menu/main/love-mix.svg +6 -6
  482. package/src/svg/menu/main/love.svg +13 -13
  483. package/src/svg/menu/main/m1-mix.svg +4 -4
  484. package/src/svg/menu/main/m1.svg +4 -4
  485. package/src/svg/menu/main/m2-mix.svg +12 -12
  486. package/src/svg/menu/main/m2.svg +11 -11
  487. package/src/svg/menu/main/m3-mix.svg +6 -6
  488. package/src/svg/menu/main/m3.svg +7 -7
  489. package/src/svg/menu/main/m4-mix.svg +5 -5
  490. package/src/svg/menu/main/m4.svg +7 -7
  491. package/src/svg/menu/main/m5-mix.svg +8 -8
  492. package/src/svg/menu/main/m5.svg +10 -10
  493. package/src/svg/menu/main/mail-mix.svg +5 -5
  494. package/src/svg/menu/main/manual-mix.svg +11 -11
  495. package/src/svg/menu/main/manual.svg +11 -11
  496. package/src/svg/menu/main/market-mix.svg +4 -4
  497. package/src/svg/menu/main/market.svg +4 -4
  498. package/src/svg/menu/main/member-mix.svg +6 -6
  499. package/src/svg/menu/main/member.svg +6 -6
  500. package/src/svg/menu/main/menu-mix.svg +4 -4
  501. package/src/svg/menu/main/menu.svg +4 -4
  502. package/src/svg/menu/main/message-mix.svg +11 -11
  503. package/src/svg/menu/main/message.svg +11 -11
  504. package/src/svg/menu/main/namelist-mix.svg +4 -4
  505. package/src/svg/menu/main/namelist.svg +4 -4
  506. package/src/svg/menu/main/net-mix.svg +7 -7
  507. package/src/svg/menu/main/niche-mix.svg +12 -12
  508. package/src/svg/menu/main/niche.svg +12 -12
  509. package/src/svg/menu/main/notice-mix.svg +4 -4
  510. package/src/svg/menu/main/notice.svg +4 -4
  511. package/src/svg/menu/main/number-mix.svg +6 -6
  512. package/src/svg/menu/main/operations-mix.svg +4 -4
  513. package/src/svg/menu/main/operations.svg +4 -4
  514. package/src/svg/menu/main/order-mix.svg +8 -8
  515. package/src/svg/menu/main/order.svg +8 -8
  516. package/src/svg/menu/main/person-mix.svg +6 -6
  517. package/src/svg/menu/main/person.svg +6 -6
  518. package/src/svg/menu/main/phone-mix.svg +4 -4
  519. package/src/svg/menu/main/phone.svg +4 -4
  520. package/src/svg/menu/main/phoneBill-mix.svg +6 -6
  521. package/src/svg/menu/main/phoneBill.svg +6 -6
  522. package/src/svg/menu/main/preferential-mix.svg +5 -5
  523. package/src/svg/menu/main/preferential.svg +5 -5
  524. package/src/svg/menu/main/print-mix.svg +5 -5
  525. package/src/svg/menu/main/problem-mix.svg +4 -4
  526. package/src/svg/menu/main/problem.svg +4 -4
  527. package/src/svg/menu/main/process-mix.svg +4 -4
  528. package/src/svg/menu/main/process.svg +4 -4
  529. package/src/svg/menu/main/product-mix.svg +5 -5
  530. package/src/svg/menu/main/product.svg +6 -6
  531. package/src/svg/menu/main/qrCode-mix.svg +8 -8
  532. package/src/svg/menu/main/qrCode.svg +8 -8
  533. package/src/svg/menu/main/refuelingBag-mix-mix.svg +4 -4
  534. package/src/svg/menu/main/refuelingBag-mix.svg +4 -4
  535. package/src/svg/menu/main/reportForm-mix.svg +8 -8
  536. package/src/svg/menu/main/reportForm.svg +8 -8
  537. package/src/svg/menu/main/risk-mix.svg +16 -16
  538. package/src/svg/menu/main/risk.svg +17 -17
  539. package/src/svg/menu/main/robot-mix.svg +9 -9
  540. package/src/svg/menu/main/robot.svg +9 -9
  541. package/src/svg/menu/main/satisfaction-mix.svg +4 -4
  542. package/src/svg/menu/main/satisfaction.svg +4 -4
  543. package/src/svg/menu/main/scratchCard-mix.svg +4 -4
  544. package/src/svg/menu/main/sim-mix.svg +4 -4
  545. package/src/svg/menu/main/sim.svg +4 -4
  546. package/src/svg/menu/main/staging-mix.svg +4 -4
  547. package/src/svg/menu/main/staging.svg +4 -4
  548. package/src/svg/menu/main/survey-mix.svg +5 -5
  549. package/src/svg/menu/main/survey.svg +5 -5
  550. package/src/svg/menu/main/tasks-mix.svg +8 -8
  551. package/src/svg/menu/main/tasks.svg +8 -8
  552. package/src/svg/menu/main/telephone-mix.svg +4 -4
  553. package/src/svg/menu/main/topUp-mix.svg +5 -5
  554. package/src/svg/menu/main/trajectory-mix.svg +11 -11
  555. package/src/svg/menu/main/trajectory.svg +23 -23
  556. package/src/svg/menu/main/transmit-mix.svg +5 -5
  557. package/src/svg/menu/main/tv-mix.svg +6 -6
  558. package/src/svg/menu/main/unlock-mix.svg +4 -4
  559. package/src/svg/menu/main/unlock.svg +4 -4
  560. package/src/svg/menu/main/view-mix.svg +5 -5
  561. package/src/svg/menu/main/view.svg +5 -5
  562. package/src/svg/menu/main/visits-mix.svg +19 -19
  563. package/src/svg/menu/main/visits.svg +19 -19
  564. package/src/svg/menu/main/voice-mix.svg +4 -4
  565. package/src/svg/menu/main/voice.svg +4 -4
  566. package/src/svg/menu/main/wiki-mix.svg +4 -4
  567. package/src/svg/menu/main/wiki.svg +4 -4
  568. package/src/svg/menu/main/workOrder-mix.svg +6 -6
  569. package/src/svg/menu/main/workOrder.svg +14 -14
  570. package/src/svg/menu/patch/Mo-space.svg +2 -2
  571. package/src/svg/menu/patch/Mo.svg +3 -3
  572. package/src/svg/menu/patch/add-space.svg +3 -3
  573. package/src/svg/menu/patch/add.svg +3 -3
  574. package/src/svg/menu/patch/address-space.svg +3 -3
  575. package/src/svg/menu/patch/address.svg +3 -3
  576. package/src/svg/menu/patch/approve-space.svg +3 -3
  577. package/src/svg/menu/patch/approve.svg +4 -4
  578. package/src/svg/menu/patch/avoid-space.svg +3 -3
  579. package/src/svg/menu/patch/avoid.svg +3 -3
  580. package/src/svg/menu/patch/batch-space.svg +3 -3
  581. package/src/svg/menu/patch/batch.svg +5 -5
  582. package/src/svg/menu/patch/broadband-space.svg +3 -3
  583. package/src/svg/menu/patch/broadband.svg +4 -4
  584. package/src/svg/menu/patch/cancellation-space.svg +3 -3
  585. package/src/svg/menu/patch/cancellation.svg +3 -3
  586. package/src/svg/menu/patch/center-space.svg +3 -3
  587. package/src/svg/menu/patch/center.svg +5 -5
  588. package/src/svg/menu/patch/change-space.svg +3 -3
  589. package/src/svg/menu/patch/change.svg +4 -4
  590. package/src/svg/menu/patch/click-space.svg +3 -3
  591. package/src/svg/menu/patch/click.svg +4 -4
  592. package/src/svg/menu/patch/close-1-space.svg +3 -3
  593. package/src/svg/menu/patch/close-1.svg +3 -3
  594. package/src/svg/menu/patch/close-space.svg +2 -2
  595. package/src/svg/menu/patch/close.svg +3 -3
  596. package/src/svg/menu/patch/collect-space.svg +3 -3
  597. package/src/svg/menu/patch/collect.svg +3 -3
  598. package/src/svg/menu/patch/comment-space.svg +3 -3
  599. package/src/svg/menu/patch/comment.svg +3 -3
  600. package/src/svg/menu/patch/confirm-space.svg +3 -3
  601. package/src/svg/menu/patch/confirm.svg +3 -3
  602. package/src/svg/menu/patch/contract-space.svg +3 -3
  603. package/src/svg/menu/patch/contract.svg +3 -3
  604. package/src/svg/menu/patch/credit-space.svg +3 -3
  605. package/src/svg/menu/patch/credit.svg +5 -5
  606. package/src/svg/menu/patch/dataMonitoring-space.svg +3 -3
  607. package/src/svg/menu/patch/dataMonitoring.svg +3 -3
  608. package/src/svg/menu/patch/dedicatedCircuit-space.svg +3 -3
  609. package/src/svg/menu/patch/dedicatedCircuit.svg +3 -3
  610. package/src/svg/menu/patch/detail-space.svg +3 -3
  611. package/src/svg/menu/patch/detail.svg +3 -3
  612. package/src/svg/menu/patch/disassemb-space.svg +3 -3
  613. package/src/svg/menu/patch/disassemb.svg +3 -3
  614. package/src/svg/menu/patch/earnestMoney-space.svg +3 -3
  615. package/src/svg/menu/patch/earnestMoney.svg +3 -3
  616. package/src/svg/menu/patch/empower-space.svg +3 -3
  617. package/src/svg/menu/patch/empower.svg +3 -3
  618. package/src/svg/menu/patch/entrust-space.svg +3 -3
  619. package/src/svg/menu/patch/entrust.svg +3 -3
  620. package/src/svg/menu/patch/expedite-space.svg +4 -4
  621. package/src/svg/menu/patch/expedite.svg +4 -4
  622. package/src/svg/menu/patch/flow-space.svg +3 -3
  623. package/src/svg/menu/patch/flow.svg +3 -3
  624. package/src/svg/menu/patch/folder-space.svg +3 -3
  625. package/src/svg/menu/patch/folder.svg +3 -3
  626. package/src/svg/menu/patch/forbidden-space.svg +3 -3
  627. package/src/svg/menu/patch/forbidden.svg +3 -3
  628. package/src/svg/menu/patch/forward-space.svg +3 -3
  629. package/src/svg/menu/patch/forward.svg +3 -3
  630. package/src/svg/menu/patch/fusion-space.svg +3 -3
  631. package/src/svg/menu/patch/fusion.svg +6 -6
  632. package/src/svg/menu/patch/history-space.svg +3 -3
  633. package/src/svg/menu/patch/history.svg +3 -3
  634. package/src/svg/menu/patch/information-space.svg +3 -3
  635. package/src/svg/menu/patch/information.svg +3 -3
  636. package/src/svg/menu/patch/insert-space.svg +3 -3
  637. package/src/svg/menu/patch/insert.svg +3 -3
  638. package/src/svg/menu/patch/letv-space.svg +3 -3
  639. package/src/svg/menu/patch/letv.svg +3 -3
  640. package/src/svg/menu/patch/link-space.svg +3 -3
  641. package/src/svg/menu/patch/link.svg +3 -3
  642. package/src/svg/menu/patch/location-space.svg +3 -3
  643. package/src/svg/menu/patch/location.svg +3 -3
  644. package/src/svg/menu/patch/message-space.svg +3 -3
  645. package/src/svg/menu/patch/message.svg +4 -4
  646. package/src/svg/menu/patch/minus-space.svg +3 -3
  647. package/src/svg/menu/patch/minus.svg +3 -3
  648. package/src/svg/menu/patch/mms-space.svg +3 -3
  649. package/src/svg/menu/patch/mms.svg +3 -3
  650. package/src/svg/menu/patch/monitor-space.svg +3 -3
  651. package/src/svg/menu/patch/monitor.svg +3 -3
  652. package/src/svg/menu/patch/move-space.svg +3 -3
  653. package/src/svg/menu/patch/move.svg +3 -3
  654. package/src/svg/menu/patch/negative-space.svg +2 -2
  655. package/src/svg/menu/patch/negative.svg +3 -3
  656. package/src/svg/menu/patch/net-space.svg +2 -2
  657. package/src/svg/menu/patch/net.svg +3 -3
  658. package/src/svg/menu/patch/news-space.svg +3 -3
  659. package/src/svg/menu/patch/news.svg +3 -3
  660. package/src/svg/menu/patch/notice-space.svg +4 -4
  661. package/src/svg/menu/patch/notice.svg +5 -5
  662. package/src/svg/menu/patch/officialBusiness-space.svg +3 -3
  663. package/src/svg/menu/patch/officialBusiness.svg +4 -4
  664. package/src/svg/menu/patch/pay-space.svg +3 -3
  665. package/src/svg/menu/patch/pay.svg +3 -3
  666. package/src/svg/menu/patch/phone-space.svg +3 -3
  667. package/src/svg/menu/patch/phone.svg +5 -5
  668. package/src/svg/menu/patch/print-space.svg +3 -3
  669. package/src/svg/menu/patch/print.svg +5 -5
  670. package/src/svg/menu/patch/product-space.svg +3 -3
  671. package/src/svg/menu/patch/product.svg +5 -5
  672. package/src/svg/menu/patch/reservation-space.svg +3 -3
  673. package/src/svg/menu/patch/reservation.svg +3 -3
  674. package/src/svg/menu/patch/sale-space.svg +3 -3
  675. package/src/svg/menu/patch/sale.svg +5 -5
  676. package/src/svg/menu/patch/search-space.svg +3 -3
  677. package/src/svg/menu/patch/search.svg +3 -3
  678. package/src/svg/menu/patch/secure-space.svg +3 -3
  679. package/src/svg/menu/patch/secure.svg +5 -5
  680. package/src/svg/menu/patch/setup-space.svg +3 -3
  681. package/src/svg/menu/patch/setup.svg +3 -3
  682. package/src/svg/menu/patch/shift-space.svg +3 -3
  683. package/src/svg/menu/patch/shift.svg +3 -3
  684. package/src/svg/menu/patch/situation-space.svg +3 -3
  685. package/src/svg/menu/patch/situation.svg +3 -3
  686. package/src/svg/menu/patch/special-space.svg +3 -3
  687. package/src/svg/menu/patch/special.svg +3 -3
  688. package/src/svg/menu/patch/tabulation-space.svg +3 -3
  689. package/src/svg/menu/patch/tabulation.svg +8 -8
  690. package/src/svg/menu/patch/track-space.svg +3 -3
  691. package/src/svg/menu/patch/track.svg +5 -5
  692. package/src/svg/menu/patch/transaction-space.svg +3 -3
  693. package/src/svg/menu/patch/transaction.svg +6 -6
  694. package/src/svg/menu/patch/user-space.svg +3 -3
  695. package/src/svg/menu/patch/user.svg +3 -3
  696. package/src/svg/menu/patch/visualize-space.svg +3 -3
  697. package/src/svg/menu/patch/visualize.svg +4 -4
  698. package/src/svg/menu/patch/vnet-space.svg +3 -3
  699. package/src/svg/menu/patch/vnet.svg +3 -3
  700. package/src/tip/tip.js +160 -160
  701. package/src/utils/after-leave.js +27 -27
  702. package/src/utils/ajax.js +59 -59
  703. package/src/utils/array.js +24 -24
  704. package/src/utils/clickoutside.js +105 -105
  705. package/src/utils/compare.js +16 -16
  706. package/src/utils/date.js +55 -55
  707. package/src/utils/disabledArea.js +18 -18
  708. package/src/utils/dom.js +301 -301
  709. package/src/utils/filetransfer.js +287 -287
  710. package/src/utils/isModified.js +20 -20
  711. package/src/utils/jsencrypt/JSEncrypt.js +192 -192
  712. package/src/utils/jsencrypt/JSEncryptRSAKey.js +320 -320
  713. package/src/utils/jsencrypt/index.js +3 -3
  714. package/src/utils/jsencrypt/jselib/asn1js/asn1.d.ts +51 -51
  715. package/src/utils/jsencrypt/jselib/asn1js/asn1.js +565 -565
  716. package/src/utils/jsencrypt/jselib/asn1js/base64.d.ts +5 -5
  717. package/src/utils/jsencrypt/jselib/asn1js/base64.js +88 -88
  718. package/src/utils/jsencrypt/jselib/asn1js/hex.d.ts +3 -3
  719. package/src/utils/jsencrypt/jselib/asn1js/hex.js +64 -64
  720. package/src/utils/jsencrypt/jselib/asn1js/int10.d.ts +9 -9
  721. package/src/utils/jsencrypt/jselib/asn1js/int10.js +87 -87
  722. package/src/utils/jsencrypt/jselib/asn1js/oids.d.ts +9778 -9778
  723. package/src/utils/jsencrypt/jselib/asn1js/oids.js +1962 -1962
  724. package/src/utils/jsencrypt/jselib/jsbn/base64.d.ts +3 -3
  725. package/src/utils/jsencrypt/jselib/jsbn/base64.js +76 -76
  726. package/src/utils/jsencrypt/jselib/jsbn/jsbn.d.ts +98 -98
  727. package/src/utils/jsencrypt/jselib/jsbn/jsbn.js +1754 -1754
  728. package/src/utils/jsencrypt/jselib/jsbn/prng4.d.ts +10 -10
  729. package/src/utils/jsencrypt/jselib/jsbn/prng4.js +46 -46
  730. package/src/utils/jsencrypt/jselib/jsbn/rng.d.ts +3 -3
  731. package/src/utils/jsencrypt/jselib/jsbn/rng.js +78 -78
  732. package/src/utils/jsencrypt/jselib/jsbn/rsa.d.ts +23 -23
  733. package/src/utils/jsencrypt/jselib/jsbn/rsa.js +373 -373
  734. package/src/utils/jsencrypt/jselib/jsbn/util.d.ts +7 -7
  735. package/src/utils/jsencrypt/jselib/jsbn/util.js +58 -58
  736. package/src/utils/jsencrypt/jselib/jsrsasign/asn1-1.0.js +1593 -1593
  737. package/src/utils/jsencrypt/jselib/jsrsasign/yahoo.js +63 -63
  738. package/src/utils/jsencrypt/util.js +58 -58
  739. package/src/utils/jsencrypt.js +263 -263
  740. package/src/utils/md5.js +203 -203
  741. package/src/utils/merge.js +15 -15
  742. package/src/utils/mime.js +75 -75
  743. package/src/utils/print.js +39 -39
  744. package/src/utils/ratio.js +230 -230
  745. package/src/utils/respo.js +9 -9
  746. package/src/utils/shared.js +7 -7
  747. package/src/utils/sign.js +185 -185
  748. package/src/utils/string.js +13 -13
  749. package/src/utils/theme.js +91 -91
  750. package/src/utils/types.js +40 -40
  751. package/src/utils/util.js +286 -286
  752. package/src/utils/uuid.js +12 -12
  753. package/src/utils/validate.js +373 -373
@@ -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>