@aochuang/common 1.0.0 → 1.0.126

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 (417) hide show
  1. package/common/index.js +13 -0
  2. package/common/loading/index.js +7 -0
  3. package/common/loading/loading.vue +71 -0
  4. package/common/resizable/index.js +3 -0
  5. package/common/resizable/resizable.vue +260 -0
  6. package/common/scroll-load-more/index.js +3 -0
  7. package/common/scroll-load-more/scroll-load-more.vue +397 -0
  8. package/common/static-map/index.js +3 -0
  9. package/common/static-map/static-map.vue +87 -0
  10. package/common/tips/index.js +7 -0
  11. package/common/tips/tips.vue +82 -0
  12. package/common/tooltip/index.js +7 -0
  13. package/common/tooltip/popper.js +18 -0
  14. package/common/tooltip/tooltip.vue +75 -0
  15. package/common/viewer/index.js +4 -0
  16. package/common/viewer/util.js +40 -0
  17. package/common/viewer/viewer.vue +607 -0
  18. package/common/viewer-pedestal/index.js +3 -0
  19. package/common/viewer-pedestal/viewer-pedestal.vue +70 -0
  20. package/common/voice/index.js +21 -0
  21. package/common/voice/util.js +18 -0
  22. package/common/voice/voice-player-aac.js +584 -0
  23. package/common/voice/voice-player-audio.js +159 -0
  24. package/common/voice/voice-player.js +309 -0
  25. package/common/voice/voice.vue +274 -0
  26. package/common/voice-player/index.js +3 -0
  27. package/common/voice-player/voice-player.vue +785 -0
  28. package/common/waterfall/index.js +3 -0
  29. package/common/waterfall/waterfall.vue +169 -0
  30. package/common/wechat-emoji/emoji/666.png +0 -0
  31. package/common/wechat-emoji/emoji/Emm.png +0 -0
  32. package/common/wechat-emoji/emoji/OK.png +0 -0
  33. package/common/wechat-emoji/emoji//344/272/262/344/272/262.png +0 -0
  34. package/common/wechat-emoji/emoji//344/276/277/344/276/277.png +0 -0
  35. package/common/wechat-emoji/emoji//345/201/267/347/254/221.png +0 -0
  36. package/common/wechat-emoji/emoji//345/202/262/346/205/242.png +0 -0
  37. package/common/wechat-emoji/emoji//345/206/215/350/247/201.png +0 -0
  38. package/common/wechat-emoji/emoji//345/207/213/350/260/242.png +0 -0
  39. package/common/wechat-emoji/emoji//345/210/240/351/231/244.png +0 -0
  40. package/common/wechat-emoji/emoji//345/212/240/346/262/271.png +0 -0
  41. package/common/wechat-emoji/emoji//345/213/276/345/274/225.png +0 -0
  42. package/common/wechat-emoji/emoji//345/217/221/345/221/206.png +0 -0
  43. package/common/wechat-emoji/emoji//345/217/221/346/200/222.png +0 -0
  44. package/common/wechat-emoji/emoji//345/217/221/346/212/226.png +0 -0
  45. package/common/wechat-emoji/emoji//345/217/257/346/200/234.png +0 -0
  46. package/common/wechat-emoji/emoji//345/217/263/345/223/274/345/223/274.png +0 -0
  47. package/common/wechat-emoji/emoji//345/217/271/346/260/224.png +0 -0
  48. package/common/wechat-emoji/emoji//345/220/203/347/223/234.png +0 -0
  49. package/common/wechat-emoji/emoji//345/220/210/345/215/201.png +0 -0
  50. package/common/wechat-emoji/emoji//345/220/220.png +0 -0
  51. package/common/wechat-emoji/emoji//345/220/220/350/210/214/345/244/264.png +0 -0
  52. package/common/wechat-emoji/emoji//345/221/262/347/211/231.png +0 -0
  53. package/common/wechat-emoji/emoji//345/222/222/351/252/202.png +0 -0
  54. package/common/wechat-emoji/emoji//345/222/226/345/225/241.png +0 -0
  55. package/common/wechat-emoji/emoji//345/223/207.png +0 -0
  56. package/common/wechat-emoji/emoji//345/223/210/346/254/240.png +0 -0
  57. package/common/wechat-emoji/emoji//345/225/244/351/205/222.png +0 -0
  58. package/common/wechat-emoji/emoji//345/230/230.png +0 -0
  59. package/common/wechat-emoji/emoji//345/230/264/345/224/207.png +0 -0
  60. package/common/wechat-emoji/emoji//345/230/277/345/223/210.png +0 -0
  61. package/common/wechat-emoji/emoji//345/233/247.png +0 -0
  62. package/common/wechat-emoji/emoji//345/233/260.png +0 -0
  63. package/common/wechat-emoji/emoji//345/235/217/347/254/221.png +0 -0
  64. package/common/wechat-emoji/emoji//345/244/247/345/223/255.png +0 -0
  65. package/common/wechat-emoji/emoji//345/244/251/345/225/212.png +0 -0
  66. package/common/wechat-emoji/emoji//345/244/252/351/230/263.png +0 -0
  67. package/common/wechat-emoji/emoji//345/244/261/346/234/233.png +0 -0
  68. package/common/wechat-emoji/emoji//345/245/213/346/226/227.png +0 -0
  69. package/common/wechat-emoji/emoji//345/245/270/347/254/221.png +0 -0
  70. package/common/wechat-emoji/emoji//345/245/275/347/232/204.png +0 -0
  71. package/common/wechat-emoji/emoji//345/247/224/345/261/210.png +0 -0
  72. package/common/wechat-emoji/emoji//345/256/263/347/276/236.png +0 -0
  73. package/common/wechat-emoji/emoji//345/260/264/345/260/254.png +0 -0
  74. package/common/wechat-emoji/emoji//345/267/246/345/223/274/345/223/274.png +0 -0
  75. package/common/wechat-emoji/emoji//345/272/206/347/245/235.png +0 -0
  76. package/common/wechat-emoji/emoji//345/274/261.png +0 -0
  77. package/common/wechat-emoji/emoji//345/274/272.png +0 -0
  78. package/common/wechat-emoji/emoji//345/276/227/346/204/217.png +0 -0
  79. package/common/wechat-emoji/emoji//345/276/256/347/254/221.png +0 -0
  80. package/common/wechat-emoji/emoji//345/277/203/347/242/216.png +0 -0
  81. package/common/wechat-emoji/emoji//345/277/253/345/223/255/344/272/206.png +0 -0
  82. package/common/wechat-emoji/emoji//346/200/204/347/201/253.png +0 -0
  83. package/common/wechat-emoji/emoji//346/201/220/346/203/247.png +0 -0
  84. package/common/wechat-emoji/emoji//346/202/240/351/227/262.png +0 -0
  85. package/common/wechat-emoji/emoji//346/203/212/346/201/220.png +0 -0
  86. package/common/wechat-emoji/emoji//346/203/212/350/256/266.png +0 -0
  87. package/common/wechat-emoji/emoji//346/204/211/345/277/253.png +0 -0
  88. package/common/wechat-emoji/emoji//346/206/250/347/254/221.png +0 -0
  89. package/common/wechat-emoji/emoji//346/211/223/350/204/270.png +0 -0
  90. package/common/wechat-emoji/emoji//346/212/223/347/213/202.png +0 -0
  91. package/common/wechat-emoji/emoji//346/212/240/351/274/273.png +0 -0
  92. package/common/wechat-emoji/emoji//346/212/261/346/213/263.png +0 -0
  93. package/common/wechat-emoji/emoji//346/213/245/346/212/261.png +0 -0
  94. package/common/wechat-emoji/emoji//346/213/263/345/244/264.png +0 -0
  95. package/common/wechat-emoji/emoji//346/215/202/350/204/270.png +0 -0
  96. package/common/wechat-emoji/emoji//346/217/241/346/211/213.png +0 -0
  97. package/common/wechat-emoji/emoji//346/222/207/345/230/264.png +0 -0
  98. package/common/wechat-emoji/emoji//346/223/246/346/261/227.png +0 -0
  99. package/common/wechat-emoji/emoji//346/225/262/346/211/223.png +0 -0
  100. package/common/wechat-emoji/emoji//346/227/240/350/257/255.png +0 -0
  101. package/common/wechat-emoji/emoji//346/227/272/346/237/264.png +0 -0
  102. package/common/wechat-emoji/emoji//346/231/225.png +0 -0
  103. package/common/wechat-emoji/emoji//346/234/210/344/272/256.png +0 -0
  104. package/common/wechat-emoji/emoji//346/234/272/346/231/272.png +0 -0
  105. package/common/wechat-emoji/emoji//346/261/227.png +0 -0
  106. package/common/wechat-emoji/emoji//346/265/201/346/261/227.png +0 -0
  107. package/common/wechat-emoji/emoji//346/265/201/346/263/252.png +0 -0
  108. package/common/wechat-emoji/emoji//347/202/270/345/274/271.png +0 -0
  109. package/common/wechat-emoji/emoji//347/203/237/350/212/261.png +0 -0
  110. package/common/wechat-emoji/emoji//347/210/206/347/253/271.png +0 -0
  111. package/common/wechat-emoji/emoji//347/210/261/345/277/203.png +0 -0
  112. package/common/wechat-emoji/emoji//347/214/252/345/244/264.png +0 -0
  113. package/common/wechat-emoji/emoji//347/216/253/347/221/260.png +0 -0
  114. package/common/wechat-emoji/emoji//347/224/237/347/227/205.png +0 -0
  115. package/common/wechat-emoji/emoji//347/226/221/351/227/256.png +0 -0
  116. package/common/wechat-emoji/emoji//347/231/274.png +0 -0
  117. package/common/wechat-emoji/emoji//347/231/275/347/234/274.png +0 -0
  118. package/common/wechat-emoji/emoji//347/232/261/347/234/211.png +0 -0
  119. package/common/wechat-emoji/emoji//347/235/241.png +0 -0
  120. package/common/wechat-emoji/emoji//347/240/264/346/266/225/344/270/272/347/254/221.png +0 -0
  121. package/common/wechat-emoji/emoji//347/244/274/347/211/251.png +0 -0
  122. package/common/wechat-emoji/emoji//347/244/276/344/274/232/347/244/276/344/274/232.png +0 -0
  123. package/common/wechat-emoji/emoji//347/246/217.png +0 -0
  124. package/common/wechat-emoji/emoji//347/254/221/350/204/270.png +0 -0
  125. package/common/wechat-emoji/emoji//347/272/242/345/214/205.png +0 -0
  126. package/common/wechat-emoji/emoji//347/277/273/347/231/275/347/234/274.png +0 -0
  127. package/common/wechat-emoji/emoji//350/200/266.png +0 -0
  128. package/common/wechat-emoji/emoji//350/203/234/345/210/251.png +0 -0
  129. package/common/wechat-emoji/emoji//350/204/270/347/272/242.png +0 -0
  130. package/common/wechat-emoji/emoji//350/211/262.png +0 -0
  131. package/common/wechat-emoji/emoji//350/213/246/346/266/251.png +0 -0
  132. package/common/wechat-emoji/emoji//350/217/234/345/210/200.png +0 -0
  133. package/common/wechat-emoji/emoji//350/233/213/347/263/225.png +0 -0
  134. package/common/wechat-emoji/emoji//350/241/260.png +0 -0
  135. package/common/wechat-emoji/emoji//350/243/202/345/274/200.png +0 -0
  136. package/common/wechat-emoji/emoji//350/245/277/347/223/234.png +0 -0
  137. package/common/wechat-emoji/emoji//350/256/251/346/210/221/347/234/213/347/234/213.png +0 -0
  138. package/common/wechat-emoji/emoji//350/260/203/347/232/256.png +0 -0
  139. package/common/wechat-emoji/emoji//350/267/263/350/267/263.png +0 -0
  140. package/common/wechat-emoji/emoji//350/275/254/345/234/210.png +0 -0
  141. package/common/wechat-emoji/emoji//351/204/231/350/247/206.png +0 -0
  142. package/common/wechat-emoji/emoji//351/227/255/345/230/264.png +0 -0
  143. package/common/wechat-emoji/emoji//351/230/264/351/231/251.png +0 -0
  144. package/common/wechat-emoji/emoji//351/232/276/350/277/207.png +0 -0
  145. package/common/wechat-emoji/emoji//351/252/267/351/253/205.png +0 -0
  146. package/common/wechat-emoji/emoji//351/254/274/350/204/270.png +0 -0
  147. package/common/wechat-emoji/emoji//351/270/241.png +0 -0
  148. package/common/wechat-emoji/emoji//351/274/223/346/216/214.png +0 -0
  149. package/common/wechat-emoji/index.js +14 -0
  150. package/common/wechat-emoji/order.json +111 -0
  151. package/common/wechat-emoji/utils.js +52 -0
  152. package/common/wechat-emoji/wechat-emoji.vue +74 -0
  153. package/common/wechat-emoji-select/index.js +3 -0
  154. package/common/wechat-emoji-select/wechat-emoji-select.vue +67 -0
  155. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-boolean.vue +33 -0
  156. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-date-range.vue +30 -0
  157. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-date.vue +41 -0
  158. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-datetime-range.vue +34 -0
  159. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-datetime.vue +41 -0
  160. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-number-range.vue +67 -0
  161. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-number.vue +35 -0
  162. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-string.vue +41 -0
  163. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item-value.vue +73 -0
  164. package/components/advanced-filter/advanced-filter-condition-item/advanced-filter-condition-item.vue +226 -0
  165. package/components/advanced-filter/advanced-filter-condition-toggle.vue +112 -0
  166. package/components/advanced-filter/advanced-filter-condition.vue +352 -0
  167. package/components/advanced-filter/advanced-filter-permanent-item.vue +10 -0
  168. package/components/advanced-filter/advanced-filter-permanent.vue +10 -0
  169. package/components/advanced-filter/advanced-filter-scene-form.vue +95 -0
  170. package/components/advanced-filter/advanced-filter-scene-item.vue +64 -0
  171. package/components/advanced-filter/advanced-filter-scene-manage.vue +264 -0
  172. package/components/advanced-filter/advanced-filter-scene-transfer.vue +283 -0
  173. package/components/advanced-filter/advanced-filter-scene.vue +199 -0
  174. package/components/advanced-filter/advanced-filter.vue +119 -0
  175. package/components/advanced-filter/index.js +35 -0
  176. package/components/advanced-filter/utils.js +132 -0
  177. package/components/autocomplete/autocomplete.vue +121 -0
  178. package/components/autocomplete/index.js +7 -0
  179. package/components/avatar/avatar.png +0 -0
  180. package/components/avatar/avatar.vue +216 -0
  181. package/components/avatar/index.js +7 -0
  182. package/components/brick-wall/brick-wall-skeleton.vue +125 -0
  183. package/components/brick-wall/brick-wall.vue +293 -0
  184. package/components/brick-wall/index.js +7 -0
  185. package/components/button/button.vue +550 -0
  186. package/components/button/index.js +7 -0
  187. package/components/button/utils.js +20 -0
  188. package/components/cascader/cascader.vue +184 -0
  189. package/components/cascader/index.js +7 -0
  190. package/components/cascader/util.js +50 -0
  191. package/components/checkbox/checkbox.vue +114 -0
  192. package/components/checkbox/index.js +7 -0
  193. package/components/checkbox-button/index.js +8 -0
  194. package/components/checkbox-group/checkbox-group.vue +11 -0
  195. package/components/checkbox-group/index.js +7 -0
  196. package/components/date-picker/date-picker.vue +307 -0
  197. package/components/date-picker/index.js +7 -0
  198. package/components/dialog/dialog.vue +187 -0
  199. package/components/dialog/index.js +14 -0
  200. package/components/dialog/utils.js +20 -0
  201. package/components/drawer/drawer.vue +186 -0
  202. package/components/drawer/index.js +14 -0
  203. package/components/drawer/utils.js +36 -0
  204. package/components/dropdown/dropdown-item.vue +71 -0
  205. package/components/dropdown/dropdown.vue +326 -0
  206. package/components/dropdown/index.js +16 -0
  207. package/components/empty/empty.vue +89 -0
  208. package/components/empty/index.js +7 -0
  209. package/components/filter/filter-group.vue +44 -0
  210. package/components/filter/filter-item.vue +122 -0
  211. package/components/filter/filter-more.vue +114 -0
  212. package/components/filter/filter.vue +407 -0
  213. package/components/filter/index.js +20 -0
  214. package/components/filter/refresh-line.svg +1 -0
  215. package/components/filter/util.js +5 -0
  216. package/components/form/form-cell.vue +231 -0
  217. package/components/form/form-group.vue +147 -0
  218. package/components/form/form-row.vue +51 -0
  219. package/components/form/form.vue +287 -0
  220. package/components/form/index.js +24 -0
  221. package/components/grid/grid-card-view/grid-card-view.vue +157 -0
  222. package/components/grid/grid-column.vue +137 -0
  223. package/components/grid/grid-filter/grid-filter-group.vue +41 -0
  224. package/components/grid/grid-filter/grid-filter-item.vue +68 -0
  225. package/components/grid/grid-filter/grid-filter.vue +115 -0
  226. package/components/grid/grid-filter/util.js +7 -0
  227. package/components/grid/grid-filter-operate/grid-filter-operate-item.vue +55 -0
  228. package/components/grid/grid-filter-operate/grid-filter-operate.vue +46 -0
  229. package/components/grid/grid-sort/grid-sort-proxy.js +27 -0
  230. package/components/grid/grid-sort/grid-sort.vue +205 -0
  231. package/components/grid/grid-sort/icons/asc.png +0 -0
  232. package/components/grid/grid-sort/icons/desc.png +0 -0
  233. package/components/grid/grid-sort/index.js +7 -0
  234. package/components/grid/grid-table-view/grid-table-view.vue +178 -0
  235. package/components/grid/grid-table.vue +549 -0
  236. package/components/grid/grid-toolbar/grid-batch-toolbar-proxy.js +21 -0
  237. package/components/grid/grid-toolbar/grid-batch-toolbar.vue +129 -0
  238. package/components/grid/grid-toolbar/grid-global-toolbar-proxy.js +21 -0
  239. package/components/grid/grid-toolbar/grid-global-toolbar.vue +37 -0
  240. package/components/grid/grid-toolbar/grid-more-toolbar-proxy.js +21 -0
  241. package/components/grid/grid-toolbar/grid-more-toolbar.vue +138 -0
  242. package/components/grid/grid-toolbar/grid-row-toolbar.vue +279 -0
  243. package/components/grid/grid-view-select.vue +78 -0
  244. package/components/grid/grid.vue +1114 -0
  245. package/components/grid/icons/more-line.svg +1 -0
  246. package/components/grid/icons/refresh.svg +14 -0
  247. package/components/grid/index.js +60 -0
  248. package/components/grid/util.js +31 -0
  249. package/components/icon/demo.css +539 -0
  250. package/components/icon/demo_index.html +9112 -0
  251. package/components/icon/icon.vue +96 -0
  252. package/components/icon/iconfont.css +1567 -0
  253. package/components/icon/iconfont.eot +0 -0
  254. package/components/icon/iconfont.js +1 -0
  255. package/components/icon/iconfont.json +2725 -0
  256. package/components/icon/iconfont.svg +455 -0
  257. package/components/icon/iconfont.ttf +0 -0
  258. package/components/icon/iconfont.woff +0 -0
  259. package/components/icon/iconfont.woff2 +0 -0
  260. package/components/icon/index.js +7 -0
  261. package/components/image/image.vue +377 -0
  262. package/components/image/index.js +14 -0
  263. package/components/image/util.js +107 -0
  264. package/components/index.js +157 -0
  265. package/components/loading/index.js +7 -0
  266. package/components/loading/loading.vue +130 -0
  267. package/components/menu/index.js +20 -0
  268. package/components/menu/menu-group.vue +245 -0
  269. package/components/menu/menu-item.vue +269 -0
  270. package/components/menu/menu.vue +64 -0
  271. package/components/message/index.js +19 -0
  272. package/components/message/message.js +31 -0
  273. package/components/message/message.less +6 -0
  274. package/components/message-box/index.js +14 -0
  275. package/components/message-box/message-box.js +140 -0
  276. package/components/message-box/message-box.less +5 -0
  277. package/components/pagination/index.js +7 -0
  278. package/components/pagination/pagination.vue +197 -0
  279. package/components/panel/index.js +7 -0
  280. package/components/panel/panel.vue +44 -0
  281. package/components/popover/index.js +7 -0
  282. package/components/popover/popover.vue +163 -0
  283. package/components/popup-select/index.js +7 -0
  284. package/components/popup-select/popup-select.vue +114 -0
  285. package/components/radio/index.js +7 -0
  286. package/components/radio/radio.vue +92 -0
  287. package/components/radio-button/index.js +7 -0
  288. package/components/radio-button/radio-button.vue +20 -0
  289. package/components/radio-group/index.js +7 -0
  290. package/components/radio-group/radio-group.vue +22 -0
  291. package/components/searchbox/index.js +7 -0
  292. package/components/searchbox/searchbox.vue +272 -0
  293. package/components/select/index.js +11 -0
  294. package/components/select/select-load-more.vue +53 -0
  295. package/components/select/select.vue +578 -0
  296. package/components/skeleton/index.js +16 -0
  297. package/components/skeleton/skeleton-rows.vue +52 -0
  298. package/components/skeleton/skeleton.vue +72 -0
  299. package/components/sortable/index.js +11 -0
  300. package/components/sortable/sortable-item.vue +77 -0
  301. package/components/sortable/sortable.vue +67 -0
  302. package/components/spinner/index.js +7 -0
  303. package/components/spinner/spinner.vue +121 -0
  304. package/components/spinner-range/index.js +7 -0
  305. package/components/spinner-range/spinner-range.vue +97 -0
  306. package/components/spinner-textarea/index.js +7 -0
  307. package/components/spinner-textarea/spinner-textarea.vue +65 -0
  308. package/components/switch/index.js +7 -0
  309. package/components/switch/switch.vue +105 -0
  310. package/components/tabbar/index.js +9 -0
  311. package/components/tabbar/tabbar-item.vue +162 -0
  312. package/components/tabbar/tabbar.vue +49 -0
  313. package/components/tabs/index.js +12 -0
  314. package/components/tabs/tabs.vue +120 -0
  315. package/components/tag/index.js +9 -0
  316. package/components/tag/tag.less +39 -0
  317. package/components/text/index.js +7 -0
  318. package/components/text/text.vue +69 -0
  319. package/components/textarea/index.js +7 -0
  320. package/components/textarea/textarea.vue +245 -0
  321. package/components/textbox/index.js +7 -0
  322. package/components/textbox/textbox.vue +275 -0
  323. package/components/time-picker/index.js +7 -0
  324. package/components/time-picker/time-picker.vue +84 -0
  325. package/components/toolbar/index.js +16 -0
  326. package/components/toolbar/toolbar-item.vue +43 -0
  327. package/components/toolbar/toolbar.vue +81 -0
  328. package/components/tooltip/index.js +9 -0
  329. package/components/tooltip/tooltip.vue +86 -0
  330. package/components/transfer/index.js +7 -0
  331. package/components/transfer/transfer-element.vue +109 -0
  332. package/components/transfer/transfer-load-more.vue +53 -0
  333. package/components/transfer/transfer.vue +260 -0
  334. package/components/tree/index.js +7 -0
  335. package/components/tree/tree.vue +485 -0
  336. package/components/tree/utils.js +122 -0
  337. package/components/video/index.js +7 -0
  338. package/components/video/video.vue +101 -0
  339. package/package.json +15 -1
  340. package/uni-common/more-button/more-button.vue +23 -0
  341. package/uni-common/popup-select/popup-select.vue +217 -0
  342. package/uni-common/portray/portray.vue +54 -0
  343. package/uni-common/refresh-view/refresh-view.vue +94 -0
  344. package/uni-common/scroll-load-more/scroll-load-more.vue +201 -0
  345. package/uni-common/tree-popup-select/index.js +3 -0
  346. package/uni-common/tree-popup-select/tree-popup-select-panel.vue +92 -0
  347. package/uni-common/tree-popup-select/tree-popup-select.vue +124 -0
  348. package/uni-common/tree-popup-select/util.js +19 -0
  349. package/uni-common/wechat-emoji/index.js +13 -0
  350. package/uni-common/wechat-emoji/order.json +438 -0
  351. package/uni-common/wechat-emoji/utils.js +52 -0
  352. package/uni-common/wechat-emoji/wechat-emoji.vue +74 -0
  353. package/uni-components/avatar/avatar.vue +81 -0
  354. package/uni-components/badge/badge.vue +57 -0
  355. package/uni-components/empty/empty.vue +27 -0
  356. package/uni-components/exception/exception.vue +47 -0
  357. package/uni-components/icon/demo.css +539 -0
  358. package/uni-components/icon/demo_index.html +1591 -0
  359. package/uni-components/icon/icon.vue +48 -0
  360. package/uni-components/icon/iconfont.css +259 -0
  361. package/uni-components/icon/iconfont.js +1 -0
  362. package/uni-components/icon/iconfont.json +436 -0
  363. package/uni-components/icon/iconfont.ttf +0 -0
  364. package/uni-components/icon/iconfont.woff +0 -0
  365. package/uni-components/icon/iconfont.woff2 +0 -0
  366. package/uni-components/icon/index.js +3 -0
  367. package/uni-components/image/image.vue +38 -0
  368. package/uni-components/image/index.js +3 -0
  369. package/uni-components/loading/index.js +3 -0
  370. package/uni-components/loading/loading.vue +30 -0
  371. package/uni-components/message/message-item.vue +29 -0
  372. package/uni-components/message/message.js +80 -0
  373. package/uni-components/message/message.vue +30 -0
  374. package/uni-components/message-box/message-box-item.vue +54 -0
  375. package/uni-components/message-box/message-box.js +91 -0
  376. package/uni-components/message-box/message-box.vue +52 -0
  377. package/uni-components/picker/picker.vue +270 -0
  378. package/uni-components/popup/index.js +3 -0
  379. package/uni-components/popup/popup.vue +143 -0
  380. package/uni-components/search/index.js +3 -0
  381. package/uni-components/search/search.vue +86 -0
  382. package/uni-components/skeleton/skeleton-chat.vue +85 -0
  383. package/uni-components/skeleton/skeleton-contact.vue +84 -0
  384. package/uni-components/skeleton/skeleton-detail.vue +84 -0
  385. package/uni-components/skeleton/skeleton.vue +32 -0
  386. package/uni-components/tabbar/tabbar-item.vue +33 -0
  387. package/uni-components/tabbar/tabbar.vue +87 -0
  388. package/uni-components/tree/index.js +3 -0
  389. package/uni-components/tree/tree-select-loading.vue +48 -0
  390. package/uni-components/tree/tree-select-node.vue +202 -0
  391. package/uni-components/tree/tree-select-store.js +520 -0
  392. package/uni-components/tree/tree-select.vue +210 -0
  393. package/uni-components/tree/utils.js +33 -0
  394. package/uni-components/video/index.js +3 -0
  395. package/uni-components/video/video.vue +29 -0
  396. package/uni-components/voice/index.js +3 -0
  397. package/uni-components/voice/voice.vue +24 -0
  398. package/uni-components/waterfall/index.js +3 -0
  399. package/uni-components/waterfall/util.js +72 -0
  400. package/uni-components/waterfall/waterfall.vue +147 -0
  401. package/utils/data.js +128 -0
  402. package/utils/date.js +495 -0
  403. package/utils/dom.js +37 -0
  404. package/utils/emitter.js +3 -0
  405. package/utils/event.js +92 -0
  406. package/utils/file.js +76 -0
  407. package/utils/json.js +40 -0
  408. package/utils/network-detector.js +258 -0
  409. package/utils/oss.js +11 -0
  410. package/utils/resize-event.js +35 -0
  411. package/utils/share-message.js +81 -0
  412. package/utils/share-websocket.js +127 -0
  413. package/utils/string.js +59 -0
  414. package/utils/time-task.js +60 -0
  415. package/utils/url.js +46 -0
  416. package/utils/util.js +427 -0
  417. package/utils/utils.js +0 -0
package/utils/date.js ADDED
@@ -0,0 +1,495 @@
1
+ /**
2
+ * 格式化日期
3
+ */
4
+ export function formatDate (date, fmt = 'YYYY-mm-dd HH:MM:SS') {
5
+ if (!date) {
6
+ return
7
+ }
8
+ if (typeof date === 'string' && /^[0-9]+$/.test(date)) {
9
+ date = Number(date)
10
+ }
11
+ if (typeof date === 'string' || typeof date === 'number') {
12
+ date = new Date(date)
13
+ }
14
+ if (isNaN(date.getTime())) {
15
+ return
16
+ }
17
+ let ret
18
+ const opt = {
19
+ 'Y+': date.getFullYear().toString(),
20
+ 'm+': (date.getMonth() + 1).toString(),
21
+ 'd+': date.getDate().toString(),
22
+ 'H+': date.getHours().toString(),
23
+ 'M+': date.getMinutes().toString(),
24
+ 'S+': date.getSeconds().toString()
25
+ }
26
+ for (const k in opt) {
27
+ ret = new RegExp('(' + k + ')').exec(fmt)
28
+ if (ret) {
29
+ fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, '0')))
30
+ }
31
+ }
32
+ return fmt
33
+ }
34
+
35
+ /**
36
+ * 将时间戳或者日期字符串转为日期对象
37
+ */
38
+ export function parseDate (date) {
39
+ if (!date) {
40
+ return
41
+ }
42
+ if (date.getTime) {
43
+ return date
44
+ }
45
+ if (typeof date === 'number') {
46
+ return new Date(date)
47
+ }
48
+ if (typeof date === 'string') {
49
+ const ds = date.split(/\D+/)
50
+ if (ds.length > 0) {
51
+ return new Date(ds[0], ds[1] ? (ds[1] - 1) : 0, ds[2] || 1, ds[3] || 0, ds[4] || 0, ds[5] || 0)
52
+ }
53
+ }
54
+ }
55
+
56
+ /**
57
+ * 获取最近1天
58
+ * 从今天开始算起
59
+ */
60
+ export function getLast1days () {
61
+ let start = new Date()
62
+ start = start.setDate(start.getDate() - 0)
63
+ const end = new Date()
64
+ return [formatDate(start, 'YYYY-mm-dd 00:00:00'), formatDate(end, 'YYYY-mm-dd 23:59:59')]
65
+ }
66
+
67
+ /**
68
+ * 获取上一年
69
+ */
70
+ export function getLastYear () {
71
+ const date = new Date()
72
+ const startOfYear = new Date(date.getFullYear() - 1, 0, 1)
73
+ const endOfYear = new Date(date.getFullYear(), 0, 0)
74
+ return [formatDate(startOfYear, 'YYYY-mm-dd'), formatDate(endOfYear, 'YYYY-mm-dd')]
75
+ }
76
+
77
+ /**
78
+ * 获取本年
79
+ */
80
+ export function getYear () {
81
+ const date = new Date()
82
+ const startOfYear = new Date(date.getFullYear(), 0, 1)
83
+ const endOfYear = new Date(date.getFullYear() + 1, 0, 0)
84
+ return [formatDate(startOfYear, 'YYYY-mm-dd'), formatDate(endOfYear, 'YYYY-mm-dd')]
85
+ }
86
+
87
+ /**
88
+ * 获取本季度
89
+ */
90
+ export function getQuarter () {
91
+ const date = new Date()
92
+ const quarterStart = new Date(date.getFullYear(), Math.floor(date.getMonth() / 3) * 3, 1)
93
+ const quarterEnd = new Date(date.getFullYear(), Math.floor(date.getMonth() / 3) * 3 + 3, 0)
94
+ return [formatDate(quarterStart, 'YYYY-mm-dd'), formatDate(quarterEnd, 'YYYY-mm-dd')]
95
+ }
96
+
97
+ /**
98
+ * 获取上季度
99
+ */
100
+ export function getLastQuarter () {
101
+ const date = new Date()
102
+ const thisYear = date.getFullYear()
103
+ const thisQuarter = Math.floor(date.getMonth() / 3) + 1
104
+ const startOfQuarter = new Date(thisYear, thisQuarter, 1)
105
+ const endOfQuarter = new Date(thisYear, thisQuarter + 3, 0)
106
+ return [formatDate(startOfQuarter, 'YYYY-mm-dd'), formatDate(endOfQuarter, 'YYYY-mm-dd')]
107
+ }
108
+
109
+ /**
110
+ * 获取上月
111
+ */
112
+ export function getLastMonth () {
113
+ const date = new Date()
114
+ const firstDayOfCurrentMonth = new Date(date.getFullYear(), date.getMonth(), 1)
115
+ const lastDayOfLastMonth = new Date(date.getFullYear(), date.getMonth(), 0)
116
+ const startOfLastMonth = new Date(lastDayOfLastMonth)
117
+ startOfLastMonth.setDate(1)
118
+ const endOfLastMonth = new Date(firstDayOfCurrentMonth - 1)
119
+ return [formatDate(startOfLastMonth, 'YYYY-mm-dd'), formatDate(endOfLastMonth, 'YYYY-mm-dd')]
120
+ }
121
+
122
+ /**
123
+ * 获取本月
124
+ */
125
+ export function getMonth () {
126
+ const date = new Date()
127
+ const startOfMonth = new Date(date.getFullYear(), date.getMonth(), 1)
128
+ const endOfMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0)
129
+ return [formatDate(startOfMonth, 'YYYY-mm-dd'), formatDate(endOfMonth, 'YYYY-mm-dd')]
130
+ }
131
+
132
+ /**
133
+ * 获取上周
134
+ */
135
+ export function getLastWeek () {
136
+ const date = new Date()
137
+ const startOfWeek = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay() - 7)
138
+ const endOfWeek = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay() - 1)
139
+ return [formatDate(startOfWeek, 'YYYY-mm-dd'), formatDate(endOfWeek, 'YYYY-mm-dd')]
140
+ }
141
+
142
+ /**
143
+ * 获取本周
144
+ */
145
+ export function getWeek () {
146
+ const date = new Date()
147
+ const dateTime = date.getTime()
148
+ const startOfWeek = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay() + 1)
149
+ const endOfWeek = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay() + 7)
150
+ if (dateTime < endOfWeek.getTime()) {
151
+ return [formatDate(startOfWeek, 'YYYY-mm-dd'), formatDate(dateTime, 'YYYY-mm-dd')]
152
+ }
153
+ return [formatDate(startOfWeek, 'YYYY-mm-dd'), formatDate(endOfWeek, 'YYYY-mm-dd')]
154
+ }
155
+
156
+ /**
157
+ * 获取未来1天
158
+ * 从今天开始算起
159
+ */
160
+ export function getFuture10days () {
161
+ let start = new Date()
162
+ const end = new Date()
163
+ end.setDate(end.getDate() + 9)
164
+ return [formatDate(start, 'YYYY-mm-dd 00:00:00'), formatDate(end, 'YYYY-mm-dd 23:59:59')]
165
+ }
166
+
167
+ /**
168
+ * 获取最近7天
169
+ */
170
+ export function getLast7days (keepTime) {
171
+ let start = new Date()
172
+ start = start.setDate(start.getDate() - 6)
173
+ const end = new Date()
174
+ if (keepTime) {
175
+ return [formatDate(start, 'YYYY-mm-dd 00:00:00'), formatDate(end, 'YYYY-mm-dd 23:59:59')]
176
+ } else {
177
+ return [formatDate(start, 'YYYY-mm-dd'), formatDate(end, 'YYYY-mm-dd')]
178
+ }
179
+ }
180
+
181
+ /**
182
+ * 获取今天过滤范围
183
+ * 主要用于报表穿透场景
184
+ */
185
+ export function getTodayFilterParams () {
186
+ const today = new Date()
187
+ return [formatDate(today, 'YYYY-mm-dd'), formatDate(today, 'YYYY-mm-dd')]
188
+ }
189
+
190
+ /**
191
+ * 获取昨天时间范围
192
+ */
193
+ export function getYesterdayFilterParams () {
194
+ const startDate = new Date()
195
+ const endDate = new Date()
196
+ startDate.setDate(startDate.getDate() - 1)
197
+ endDate.setDate(endDate.getDate() - 1)
198
+ return [
199
+ formatDate(startDate, 'YYYY-mm-dd'),
200
+ formatDate(endDate, 'YYYY-mm-dd')
201
+ ]
202
+ }
203
+
204
+ /**
205
+ * 获取一周过滤范围
206
+ * 主要用于报表穿透场景
207
+ */
208
+ export function getThisWeekFilterParams () {
209
+ const currentDate = new Date()
210
+ const currentDay = currentDate.getDay()
211
+ const startDate = new Date()
212
+ const endDate = new Date()
213
+ startDate.setDate(startDate.getDate() - currentDay + 1)
214
+ endDate.setDate(startDate.getDate() + 6)
215
+ return [
216
+ formatDate(startDate, 'YYYY-mm-dd'),
217
+ formatDate(endDate, 'YYYY-mm-dd')
218
+ ]
219
+ }
220
+
221
+ /**
222
+ * 获取最近15天
223
+ */
224
+ export function getLast15days () {
225
+ let start = new Date()
226
+ start = start.setDate(start.getDate() - 14)
227
+ const end = new Date()
228
+ return [formatDate(start, 'YYYY-mm-dd'), formatDate(end, 'YYYY-mm-dd')]
229
+ }
230
+
231
+ /**
232
+ * 获取最近30天
233
+ */
234
+ export function getLast30days (keepTime) {
235
+ let start = new Date()
236
+ start = start.setDate(start.getDate() - 29)
237
+ const end = new Date()
238
+ end.setDate(end.getDate())
239
+ if (keepTime) {
240
+ return [formatDate(start, 'YYYY-mm-dd 00:00:00'), formatDate(end, 'YYYY-mm-dd 23:59:59')]
241
+ } else {
242
+ return [formatDate(start, 'YYYY-mm-dd'), formatDate(end, 'YYYY-mm-dd')]
243
+ }
244
+ }
245
+
246
+ /**
247
+ * 获取最近90天
248
+ */
249
+ export function getLast90days () {
250
+ let start = new Date()
251
+ start = start.setDate(start.getDate() - 90)
252
+ const end = new Date()
253
+ end.setDate(end.getDate())
254
+ return [formatDate(start, 'YYYY-mm-dd'), formatDate(end, 'YYYY-mm-dd')]
255
+ }
256
+
257
+ /**
258
+ * 获取最近35天
259
+ */
260
+ export function getLast35days () {
261
+ let start = new Date()
262
+ start = start.setDate(start.getDate() - 35)
263
+ const end = new Date()
264
+ end.setDate(end.getDate())
265
+ return [formatDate(start, 'YYYY-mm-dd'), formatDate(end, 'YYYY-mm-dd')]
266
+ }
267
+
268
+ /**
269
+ * 毫秒转换友好的显示格式
270
+ * 输出格式:21小时28分钟15秒
271
+ * @param {[type]} time [description]
272
+ * @return {[type]} [description]
273
+ */
274
+ export function timeToDate (time) {
275
+ var diffTime = time
276
+ if (diffTime && diffTime !== '0') {
277
+ diffTime = diffTime / 1000
278
+ if (diffTime >= 60 && diffTime < 60 * 60) {
279
+ diffTime = parseInt(diffTime / 60.0) + '分' + Math.round((parseFloat(diffTime / 60.0) - parseInt(diffTime / 60.0)) * 60) + '秒'
280
+ } else if (diffTime >= 60 * 60) {
281
+ diffTime = parseInt(diffTime / 3600.0) + '时' + parseInt((parseFloat(diffTime / 3600.0) - parseInt(diffTime / 3600.0)) * 60) + '分' + Math.round((parseFloat((parseFloat(diffTime / 3600.0) - parseInt(diffTime / 3600.0)) * 60) - parseInt((parseFloat(diffTime / 3600.0) - parseInt(diffTime / 3600.0)) * 60)) * 60) + '秒'
282
+ } else if (diffTime < 60) {
283
+ if (diffTime < 0.01) {
284
+ return '0秒'
285
+ } else {
286
+ return diffTime.toFixed(2) + '秒'
287
+ }
288
+ }
289
+ } else {
290
+ diffTime = '0秒'
291
+ }
292
+ return diffTime
293
+ }
294
+
295
+ function parseIntZerofill (number) {
296
+ number = parseInt(number)
297
+ return number < 10 ? '0' + number : number
298
+ }
299
+
300
+ /**
301
+ * 格式化时间戳到时分秒
302
+ */
303
+ export function timeToHHmmss (time) {
304
+ var diffTime = time
305
+ if (diffTime) {
306
+ diffTime = diffTime / 1000
307
+ if (diffTime >= 60 && diffTime < 60 * 60) {
308
+ diffTime = '00' + ':' + parseIntZerofill(diffTime / 60.0) + ':' + parseIntZerofill((parseFloat(diffTime / 60.0) - parseIntZerofill(diffTime / 60.0)) * 60)
309
+ } else if (diffTime >= 60 * 60) {
310
+ diffTime = parseIntZerofill(diffTime / 3600.0) + ':' + parseIntZerofill((parseFloat(diffTime / 3600.0) -
311
+ parseIntZerofill(diffTime / 3600.0)) * 60) + ':' +
312
+ parseIntZerofill((parseFloat((parseFloat(diffTime / 3600.0) - parseIntZerofill(diffTime / 3600.0)) * 60) -
313
+ parseIntZerofill((parseFloat(diffTime / 3600.0) - parseIntZerofill(diffTime / 3600.0)) * 60)) * 60)
314
+ } else if (diffTime < 60) {
315
+ return '00:00:' + parseIntZerofill(Math.ceil(diffTime))
316
+ }
317
+ } else {
318
+ diffTime = '00:00:00'
319
+ }
320
+ return diffTime
321
+ }
322
+
323
+ /**
324
+ * 获取友好的周文本
325
+ */
326
+ export function getDayText (date) {
327
+ const nextDate = parseDate(date)
328
+ if (!nextDate) {
329
+ return
330
+ }
331
+ const dayMap = {
332
+ 0: '星期天',
333
+ 1: '星期一',
334
+ 2: '星期二',
335
+ 3: '星期三',
336
+ 4: '星期四',
337
+ 5: '星期五',
338
+ 6: '星期六'
339
+ }
340
+ return dayMap[nextDate.getDay()]
341
+ }
342
+
343
+ /**
344
+ * 获取当前时间戳
345
+ */
346
+ export function now () {
347
+ return Date.now ? Date.now() : (new Date()).getTime()
348
+ }
349
+
350
+ /**
351
+ * 将时间转为补零字符串
352
+ * 如0转为00:00, 1转为01:00
353
+ */
354
+ export function formatNumerToTime (number) {
355
+ if (number === null || isNaN(number)) {
356
+ return
357
+ }
358
+ const prefix = number < 10 ? '0' + number : number
359
+ const suffix = '00'
360
+ return [prefix, suffix].join(':')
361
+ }
362
+
363
+ /**
364
+ * 判断是否为今天
365
+ */
366
+ export function isToday (date) {
367
+ if (!date) {
368
+ return false
369
+ }
370
+ return formatDate(new Date(), 'YYYY-mm-dd') === formatDate(parseDate(date), 'YYYY-mm-dd')
371
+ }
372
+
373
+ /**
374
+ * 口语化时间
375
+ */
376
+ export function formatDateToSpoken (date) {
377
+ date = parseDate(date)
378
+ if (!date) {
379
+ return
380
+ }
381
+ let time = new Date().getTime()
382
+ time = parseInt((time - date.getTime()) / 1000)
383
+ let s
384
+ if (time < 60 * 10) {
385
+ return '刚刚'
386
+ } else if ((time < 60 * 60) && (time >= 60 * 10)) {
387
+ s = Math.floor(time / 60)
388
+ return s + '分钟前'
389
+ } else if ((time < 60 * 60 * 24) && (time >= 60 * 60)) {
390
+ s = Math.floor(time / 60 / 60)
391
+ return s + '小时前'
392
+ } else if ((time < 60 * 60 * 24 * 16) && (time >= 60 * 60 * 24)) {
393
+ s = Math.floor(time / 60 / 60 / 24)
394
+ return s + '天前'
395
+ } else if ((time < 60 * 60 * 24 * 30) && (time >= 60 * 60 * 24 * 16)) {
396
+ return '大半月前'
397
+ } else if ((time < 60 * 60 * 24 * 30 * 12) && (time >= 60 * 60 * 24 * 30)) {
398
+ s = Math.floor(time / (60 * 60 * 24 * 30))
399
+ return s + '个月前'
400
+ } else if (time >= 60 * 60 * 24 * 30 * 12) {
401
+ s = Math.floor(time / (60 * 60 * 24 * 30 * 12))
402
+ return s + '年前'
403
+ } else {
404
+ return formatDate(date, 'YYYY-mm-dd')
405
+ }
406
+ }
407
+
408
+ /**
409
+ * 日期范围是筛选快捷键配置
410
+ * */
411
+
412
+ export function optionShortcuts() {
413
+ return [
414
+ {
415
+ text: '今天',
416
+ value: 'today',
417
+ onClick(picker) {
418
+ const dateRange = getTodayFilterParams()
419
+ picker.$emit('pick', dateRange)
420
+ }
421
+ },
422
+ {
423
+ text: '昨天',
424
+ value: 'yesterday',
425
+ onClick(picker) {
426
+ const dateRange = getYesterdayFilterParams()
427
+ picker.$emit('pick', dateRange)
428
+ }
429
+ },
430
+ {
431
+ text: '本周',
432
+ value: 'week',
433
+ onClick(picker) {
434
+ const dateRange = getWeek()
435
+ picker.$emit('pick', dateRange)
436
+ }
437
+ },
438
+ {
439
+ text: '上周',
440
+ value: 'lastWeek',
441
+ onClick(picker) {
442
+ const dateRange = getLastWeek()
443
+ picker.$emit('pick', dateRange)
444
+ }
445
+ },
446
+ {
447
+ text: '本月',
448
+ value: 'month',
449
+ onClick(picker) {
450
+ const dateRange = getMonth()
451
+ picker.$emit('pick', dateRange)
452
+ }
453
+ },
454
+ {
455
+ text: '上月',
456
+ value: 'lastMonth',
457
+ onClick(picker) {
458
+ const dateRange = getLastMonth()
459
+ picker.$emit('pick', dateRange)
460
+ }
461
+ },
462
+ {
463
+ text: '本季度',
464
+ value: 'quarter',
465
+ onClick(picker) {
466
+ const dateRange = getQuarter()
467
+ picker.$emit('pick', dateRange)
468
+ }
469
+ },
470
+ {
471
+ text: '上季度',
472
+ value: 'lastQuarter',
473
+ onClick(picker) {
474
+ const dateRange = getLastQuarter()
475
+ picker.$emit('pick', dateRange)
476
+ }
477
+ },
478
+ {
479
+ text: '本年',
480
+ value: 'year',
481
+ onClick(picker) {
482
+ const dateRange = getYear()
483
+ picker.$emit('pick', dateRange)
484
+ }
485
+ },
486
+ {
487
+ text: '去年',
488
+ value: 'lastYear',
489
+ onClick(picker) {
490
+ const dateRange = getLastYear()
491
+ picker.$emit('pick', dateRange)
492
+ }
493
+ }
494
+ ]
495
+ }
package/utils/dom.js ADDED
@@ -0,0 +1,37 @@
1
+ export function closest (source, target) {
2
+ if (!source || !target) {
3
+ return null
4
+ }
5
+ let element = source
6
+ while (element && element.nodeType === 1) {
7
+ if (typeof target === 'string') {
8
+ // 先只支持target为className的场景
9
+ if (element.classList.contains(target)) {
10
+ return element
11
+ }
12
+ } else {
13
+ if (element === target) {
14
+ return element
15
+ }
16
+ }
17
+ element = element.parentNode
18
+ }
19
+ return null
20
+ }
21
+
22
+ function isElement (node) {
23
+ const ELEMENT_NODE_TYPE = 1
24
+ return node.tagName !== 'HTML' && node.tagName !== 'BODY' && node.nodeType === ELEMENT_NODE_TYPE
25
+ }
26
+
27
+ export function getScrollParent (el, root = window) {
28
+ let node = el
29
+ while (node && node !== root && isElement(node)) {
30
+ const { overflowY } = window.getComputedStyle(node)
31
+ if (/scroll|auto/i.test(overflowY)) {
32
+ return node
33
+ }
34
+ node = node.parentNode
35
+ }
36
+ return root
37
+ }
@@ -0,0 +1,3 @@
1
+ import Emitter from 'element-ui/src/mixins/emitter'
2
+
3
+ export default Emitter
package/utils/event.js ADDED
@@ -0,0 +1,92 @@
1
+ export default class Event {
2
+ _events = {}
3
+
4
+ constructor (options) {
5
+ options = Object.assign({
6
+ /**
7
+ * 检查on事件的时候要不要立即触发,比如有些ready场景,如果已经准备完毕就立马触发
8
+ */
9
+ checkOnMethod: null
10
+ }, options)
11
+ this.checkOnMethod = options.checkOnMethod
12
+ }
13
+
14
+ on (name, fn) {
15
+ if (!name || !fn) {
16
+ throw new Error('[Event] 回调名称和函数必须')
17
+ }
18
+ if (!this._events[name]) {
19
+ this._events[name] = []
20
+ }
21
+ this._events[name].push(fn)
22
+ if (this.checkOnMethod) {
23
+ this.checkOnMethod(name)
24
+ }
25
+ }
26
+
27
+ off (name, fn) {
28
+ if (!this._events[name]) {
29
+ return
30
+ }
31
+ if (fn) {
32
+ let index = -1
33
+ this._events[name].some((v, i) => {
34
+ if (v === fn) {
35
+ index = i
36
+ return true
37
+ }
38
+ })
39
+ if (index < 0) {
40
+ return
41
+ }
42
+ this._events[name].splice(index, 1)
43
+ } else {
44
+ this._events[name] = []
45
+ }
46
+ }
47
+
48
+ emit (name, data) {
49
+ if (!this._events[name]) {
50
+ return
51
+ }
52
+ return !this._events[name].some(fn => {
53
+ if (fn(data) === false) {
54
+ return true
55
+ }
56
+ })
57
+ }
58
+
59
+ one (name, fn) {
60
+ const fnWrap = (evt) => {
61
+ this.off(name, fnWrap)
62
+ if (fn) {
63
+ return fn(evt)
64
+ }
65
+ }
66
+ this.on(name, fnWrap)
67
+ }
68
+
69
+ }
70
+
71
+ export function asyncEmit (vm, eventName, eventFn, callbackMethodName = 'setCallback') {
72
+ if (!vm || !eventName || !eventFn) {
73
+ throw new Error('缺少必须参数')
74
+ }
75
+ return new Promise((resolve, reject) => {
76
+ let isTry = false
77
+ vm.$emit(eventName, {
78
+ [callbackMethodName] (fn) {
79
+ isTry = true
80
+ const rs = eventFn(fn)
81
+ if (rs && rs.then) {
82
+ rs.then(resolve, reject)
83
+ } else {
84
+ resolve()
85
+ }
86
+ }
87
+ })
88
+ if (!isTry) {
89
+ resolve()
90
+ }
91
+ })
92
+ }
package/utils/file.js ADDED
@@ -0,0 +1,76 @@
1
+ /**
2
+ * 加载远程script文件
3
+ */
4
+ export function loadScript (url, moduleName) {
5
+ return new Promise((resolve, reject) => {
6
+ if (window[moduleName]) {
7
+ resolve(window[moduleName])
8
+ } else {
9
+ import('load-script').then(module => {
10
+ const loadScript = module.default ? module.default : module
11
+ loadScript(url, () => {
12
+ if (moduleName) {
13
+ if (typeof window[moduleName] === 'undefined') {
14
+ reject(new Error('未成功加载' + moduleName))
15
+ } else {
16
+ resolve(window[moduleName])
17
+ }
18
+ } else {
19
+ resolve()
20
+ }
21
+ })
22
+ }, reject)
23
+ }
24
+ })
25
+ }
26
+
27
+ /**
28
+ * 根据src地址获取文件类型
29
+ */
30
+ export function getExtByFileSrc (fileSrc) {
31
+ if (!fileSrc) {
32
+ return
33
+ }
34
+ return fileSrc.substr(fileSrc.lastIndexOf('.') + 1).toLowerCase()
35
+ }
36
+
37
+ /**
38
+ * 下载文件
39
+ */
40
+ export function downloadFile (content, fileName) {
41
+ const blob = new Blob([content])
42
+ if ('download' in document.createElement('a')) { // 非IE下载
43
+ const elink = document.createElement('a')
44
+ elink.download = fileName
45
+ elink.style.display = 'none'
46
+ elink.href = URL.createObjectURL(blob)
47
+ document.body.appendChild(elink)
48
+ elink.click()
49
+ URL.revokeObjectURL(elink.href) // 释放URL 对象
50
+ document.body.removeChild(elink)
51
+ } else { // IE10+下载
52
+ navigator.msSaveBlob(blob, fileName)
53
+ }
54
+ }
55
+
56
+ /**
57
+ * 从url中获取文件名称
58
+ */
59
+ export function getNameByFileUrl (url, keepExt) {
60
+ let fileName = url ? url.substr(url.lastIndexOf('/') + 1) : ''
61
+ // https://wpj-dev3-kefures.oss-cn-shenzhen.aliyuncs.com/friend/1877240539286642688/1877546834264719360/3/NFFNxEi3JH6oHxKcfexK1/3-1pp3162605_%E5%89%AF%E6%9C%AC_(1).jpg&_msgId=b4f4fc5e6e3a4e39a5dec64adb2f22b9
62
+ if (fileName.lastIndexOf('&') >= 0) {
63
+ fileName = fileName.substr(0, fileName.lastIndexOf('&'))
64
+ }
65
+ if (fileName) {
66
+ try {
67
+ fileName = window.decodeURIComponent(fileName)
68
+ } catch (e) {
69
+ console.log(e)
70
+ }
71
+ if (keepExt !== true) {
72
+ fileName = fileName.substr(0, fileName.lastIndexOf('.'))
73
+ }
74
+ }
75
+ return fileName
76
+ }