@smallwei/avue 3.8.2 → 3.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/README.md +206 -86
  2. package/dist/avue.js +37301 -0
  3. package/dist/avue.js.map +1 -0
  4. package/dist/avue.min.js +6 -0
  5. package/dist/avue.min.mjs +2 -0
  6. package/dist/avue.mjs +2 -0
  7. package/dist/index.css +1 -0
  8. package/es/avue.min.mjs +2 -0
  9. package/es/avue.min.ts +2 -0
  10. package/es/avue.mjs +2 -0
  11. package/es/avue.ts +2 -0
  12. package/es/core/create.mjs +8 -0
  13. package/es/core/create.ts +16 -0
  14. package/es/core/dataformat.mjs +184 -0
  15. package/es/core/dataformat.ts +190 -0
  16. package/es/core/detail.mjs +74 -0
  17. package/es/core/detail.ts +81 -0
  18. package/es/core/dic.mjs +213 -0
  19. package/es/core/dic.ts +235 -0
  20. package/es/core/locale.mjs +8 -0
  21. package/es/core/locale.ts +9 -0
  22. package/es/core/packages.mjs +61 -0
  23. package/es/core/packages.ts +62 -0
  24. package/es/core/slot.mjs +32 -0
  25. package/es/core/slot.ts +30 -0
  26. package/es/global/variable.mjs +80 -0
  27. package/es/global/variable.ts +84 -0
  28. package/es/icon.mjs +9 -0
  29. package/es/icon.ts +11 -0
  30. package/es/index.mjs +127 -0
  31. package/es/index.ts +177 -0
  32. package/es/locale/browser/en.mjs +288 -0
  33. package/es/locale/browser/zh-cn.mjs +288 -0
  34. package/es/locale/browser/zh.mjs +288 -0
  35. package/es/locale/index.mjs +141 -0
  36. package/es/locale/index.ts +196 -0
  37. package/es/locale/lang/en.mjs +282 -0
  38. package/es/locale/lang/en.ts +282 -0
  39. package/es/locale/lang/zh-cn.mjs +282 -0
  40. package/es/locale/lang/zh-cn.ts +282 -0
  41. package/es/locale/lang/zh.mjs +282 -0
  42. package/es/locale/lang/zh.ts +282 -0
  43. package/es/packages/core/common/event.mjs +58 -0
  44. package/es/packages/core/common/event.ts +56 -0
  45. package/es/packages/core/common/init.mjs +134 -0
  46. package/es/packages/core/common/init.ts +133 -0
  47. package/es/packages/core/common/props.mjs +239 -0
  48. package/es/packages/core/common/props.ts +240 -0
  49. package/es/packages/core/components/dialog-form/index.mjs +29 -0
  50. package/es/packages/core/components/dialog-form/index.ts +29 -0
  51. package/es/packages/core/components/dialog-form/index.vue +108 -0
  52. package/es/packages/core/components/form/custom.mjs +41 -0
  53. package/es/packages/core/components/form/custom.ts +41 -0
  54. package/es/packages/core/components/form/index.vue +176 -0
  55. package/es/packages/core/components/icon/index.vue +37 -0
  56. package/es/packages/core/components/image-preview/index.mjs +34 -0
  57. package/es/packages/core/components/image-preview/index.ts +37 -0
  58. package/es/packages/core/components/image-preview/index.vue +215 -0
  59. package/es/packages/core/directive/contextmenu.mjs +92 -0
  60. package/es/packages/core/directive/contextmenu.ts +103 -0
  61. package/es/packages/core/directive/permission.mjs +19 -0
  62. package/es/packages/core/directive/permission.ts +18 -0
  63. package/es/packages/data/box/index.vue +66 -0
  64. package/es/packages/data/card/index.vue +62 -0
  65. package/es/packages/data/cardText/index.vue +56 -0
  66. package/es/packages/data/countdown/index.vue +81 -0
  67. package/es/packages/data/dashboard/index.vue +72 -0
  68. package/es/packages/data/display/index.vue +63 -0
  69. package/es/packages/data/icons/index.vue +68 -0
  70. package/es/packages/data/imgText/index.vue +72 -0
  71. package/es/packages/data/list/index.vue +69 -0
  72. package/es/packages/data/notice/index.vue +63 -0
  73. package/es/packages/data/operaText/index.vue +62 -0
  74. package/es/packages/data/panel/index.vue +62 -0
  75. package/es/packages/data/pay/index.vue +92 -0
  76. package/es/packages/data/price/index.vue +55 -0
  77. package/es/packages/data/product/index.vue +106 -0
  78. package/es/packages/data/profile/index.vue +91 -0
  79. package/es/packages/data/progress/index.vue +64 -0
  80. package/es/packages/data/rank/index.vue +92 -0
  81. package/es/packages/data/rotate/index.vue +69 -0
  82. package/es/packages/data/statistic/index.vue +71 -0
  83. package/es/packages/data/tabs/index.vue +64 -0
  84. package/es/packages/data/task/index.vue +82 -0
  85. package/es/packages/data/weather/index.vue +103 -0
  86. package/es/packages/element-plus/array/index.vue +115 -0
  87. package/es/packages/element-plus/article/index.vue +73 -0
  88. package/es/packages/element-plus/card/index.vue +103 -0
  89. package/es/packages/element-plus/cascader/index.vue +132 -0
  90. package/es/packages/element-plus/chat/index.vue +513 -0
  91. package/es/packages/element-plus/checkbox/index.vue +84 -0
  92. package/es/packages/element-plus/comment/index.vue +76 -0
  93. package/es/packages/element-plus/count-up/index.vue +107 -0
  94. package/es/packages/element-plus/crud/column/column-default.vue +128 -0
  95. package/es/packages/element-plus/crud/column/column-dynamic.vue +86 -0
  96. package/es/packages/element-plus/crud/column/column-menu.vue +267 -0
  97. package/es/packages/element-plus/crud/column/column-slot.vue +348 -0
  98. package/es/packages/element-plus/crud/column/column.vue +119 -0
  99. package/es/packages/element-plus/crud/column/menu.vue +78 -0
  100. package/es/packages/element-plus/crud/config.mjs +74 -0
  101. package/es/packages/element-plus/crud/config.ts +74 -0
  102. package/es/packages/element-plus/crud/dialog/dialog-column.vue +102 -0
  103. package/es/packages/element-plus/crud/dialog/dialog-excel.vue +204 -0
  104. package/es/packages/element-plus/crud/dialog/dialog-filter.vue +159 -0
  105. package/es/packages/element-plus/crud/dialog/dialog-form.vue +352 -0
  106. package/es/packages/element-plus/crud/grid/index.vue +271 -0
  107. package/es/packages/element-plus/crud/grid/item.vue +39 -0
  108. package/es/packages/element-plus/crud/index.vue +1018 -0
  109. package/es/packages/element-plus/crud/menu/header-menu.vue +175 -0
  110. package/es/packages/element-plus/crud/menu/header-search.vue +228 -0
  111. package/es/packages/element-plus/crud/menu/table-page.vue +108 -0
  112. package/es/packages/element-plus/date/index.vue +81 -0
  113. package/es/packages/element-plus/draggable/index.vue +444 -0
  114. package/es/packages/element-plus/dynamic/index.vue +353 -0
  115. package/es/packages/element-plus/flow/index.vue +339 -0
  116. package/es/packages/element-plus/flow/node.vue +84 -0
  117. package/es/packages/element-plus/form/config.mjs +6 -0
  118. package/es/packages/element-plus/form/config.ts +6 -0
  119. package/es/packages/element-plus/form/index.vue +954 -0
  120. package/es/packages/element-plus/form/menu.vue +63 -0
  121. package/es/packages/element-plus/group/index.vue +90 -0
  122. package/es/packages/element-plus/input/index.vue +1264 -0
  123. package/es/packages/element-plus/input-color/index.vue +70 -0
  124. package/es/packages/element-plus/input-cron/index.vue +363 -0
  125. package/es/packages/element-plus/input-icon/index.vue +143 -0
  126. package/es/packages/element-plus/input-map/index.vue +311 -0
  127. package/es/packages/element-plus/input-number/index.vue +91 -0
  128. package/es/packages/element-plus/input-table/index.vue +279 -0
  129. package/es/packages/element-plus/input-tag/index.vue +79 -0
  130. package/es/packages/element-plus/input-tree/index.vue +194 -0
  131. package/es/packages/element-plus/license/index.vue +155 -0
  132. package/es/packages/element-plus/login/index.vue +203 -0
  133. package/es/packages/element-plus/mention/index.vue +117 -0
  134. package/es/packages/element-plus/radio/index.vue +38 -0
  135. package/es/packages/element-plus/rate/index.vue +51 -0
  136. package/es/packages/element-plus/search/index.vue +129 -0
  137. package/es/packages/element-plus/select/index.vue +292 -0
  138. package/es/packages/element-plus/sign/index.vue +230 -0
  139. package/es/packages/element-plus/slider/index.vue +66 -0
  140. package/es/packages/element-plus/switch/index.vue +72 -0
  141. package/es/packages/element-plus/tabs/index.vue +62 -0
  142. package/es/packages/element-plus/text-ellipsis/index.vue +104 -0
  143. package/es/packages/element-plus/time/index.vue +81 -0
  144. package/es/packages/element-plus/title/index.vue +30 -0
  145. package/es/packages/element-plus/tree/index.vue +460 -0
  146. package/es/packages/element-plus/upload/index.vue +728 -0
  147. package/es/packages/element-plus/verify/index.vue +62 -0
  148. package/es/packages/element-plus/video/index.vue +90 -0
  149. package/es/plugin/ali/index.mjs +4 -0
  150. package/es/plugin/ali/index.ts +6 -0
  151. package/es/plugin/clipboard/index.mjs +61 -0
  152. package/es/plugin/clipboard/index.ts +67 -0
  153. package/es/plugin/export/_blob.mjs +151 -0
  154. package/es/plugin/export/_blob.ts +176 -0
  155. package/es/plugin/export/_export2Excel.mjs +141 -0
  156. package/es/plugin/export/_export2Excel.ts +166 -0
  157. package/es/plugin/export/index.mjs +263 -0
  158. package/es/plugin/export/index.ts +274 -0
  159. package/es/plugin/logs/index.mjs +46 -0
  160. package/es/plugin/logs/index.ts +66 -0
  161. package/es/plugin/print/index.mjs +145 -0
  162. package/es/plugin/print/index.ts +155 -0
  163. package/es/plugin/qiniu/index.mjs +78 -0
  164. package/es/plugin/qiniu/index.ts +88 -0
  165. package/es/plugin/screenshot/index.mjs +8 -0
  166. package/es/plugin/screenshot/index.ts +9 -0
  167. package/es/plugin/video/index.mjs +52 -0
  168. package/es/plugin/video/index.ts +60 -0
  169. package/es/plugin/watermark/index.mjs +114 -0
  170. package/es/plugin/watermark/index.ts +127 -0
  171. package/es/plugin/watermark/watermark.mjs +109 -0
  172. package/es/plugin/watermark/watermark.ts +121 -0
  173. package/es/ui/data/index.mjs +49 -0
  174. package/es/ui/data/index.ts +51 -0
  175. package/es/ui/element-plus/index.mjs +87 -0
  176. package/es/ui/element-plus/index.ts +89 -0
  177. package/es/ui/index.mjs +4 -0
  178. package/es/ui/index.ts +6 -0
  179. package/es/utils/bem.mjs +29 -0
  180. package/es/utils/bem.ts +36 -0
  181. package/es/utils/mock.mjs +137 -0
  182. package/es/utils/mock.ts +151 -0
  183. package/es/utils/util.mjs +370 -0
  184. package/es/utils/util.ts +392 -0
  185. package/es/utils/validate.mjs +18 -0
  186. package/es/utils/validate.ts +23 -0
  187. package/es/version.mjs +1 -0
  188. package/es/version.ts +1 -0
  189. package/lib/avue.js +11 -35880
  190. package/lib/avue.min.js +11 -6
  191. package/lib/avue.min.ts +2 -0
  192. package/lib/avue.ts +2 -0
  193. package/lib/core/create.js +14 -0
  194. package/lib/core/create.ts +16 -0
  195. package/lib/core/dataformat.js +194 -0
  196. package/lib/core/dataformat.ts +190 -0
  197. package/lib/core/detail.js +81 -0
  198. package/lib/core/detail.ts +81 -0
  199. package/lib/core/dic.js +220 -0
  200. package/lib/core/dic.ts +235 -0
  201. package/lib/core/locale.js +10 -0
  202. package/lib/core/locale.ts +9 -0
  203. package/lib/core/packages.js +66 -0
  204. package/lib/core/packages.ts +62 -0
  205. package/lib/core/slot.js +34 -0
  206. package/lib/core/slot.ts +30 -0
  207. package/lib/global/variable.js +83 -0
  208. package/lib/global/variable.ts +84 -0
  209. package/lib/icon.js +44 -0
  210. package/lib/icon.ts +11 -0
  211. package/lib/index.js +134 -0
  212. package/lib/index.ts +177 -0
  213. package/lib/locale/browser/en.js +288 -0
  214. package/lib/locale/browser/zh-cn.js +288 -0
  215. package/lib/locale/browser/zh.js +288 -0
  216. package/lib/locale/index.js +153 -47
  217. package/lib/locale/index.ts +196 -0
  218. package/lib/locale/lang/en.js +284 -100
  219. package/lib/locale/lang/en.ts +282 -0
  220. package/lib/locale/lang/zh-cn.js +284 -0
  221. package/lib/locale/lang/zh-cn.ts +282 -0
  222. package/lib/locale/lang/zh.js +284 -100
  223. package/lib/locale/lang/zh.ts +282 -0
  224. package/lib/packages/core/common/event.js +61 -0
  225. package/lib/packages/core/common/event.ts +56 -0
  226. package/lib/packages/core/common/init.js +140 -0
  227. package/lib/packages/core/common/init.ts +133 -0
  228. package/lib/packages/core/common/props.js +245 -0
  229. package/lib/packages/core/common/props.ts +240 -0
  230. package/lib/packages/core/components/dialog-form/index.js +35 -0
  231. package/lib/packages/core/components/dialog-form/index.ts +29 -0
  232. package/lib/packages/core/components/dialog-form/index.vue +108 -0
  233. package/lib/packages/core/components/form/custom.js +43 -0
  234. package/lib/packages/core/components/form/custom.ts +41 -0
  235. package/lib/packages/core/components/form/index.vue +176 -0
  236. package/lib/packages/core/components/icon/index.vue +37 -0
  237. package/lib/packages/core/components/image-preview/index.js +40 -0
  238. package/lib/packages/core/components/image-preview/index.ts +37 -0
  239. package/lib/packages/core/components/image-preview/index.vue +215 -0
  240. package/lib/packages/core/directive/contextmenu.js +94 -0
  241. package/lib/packages/core/directive/contextmenu.ts +103 -0
  242. package/lib/packages/core/directive/permission.js +21 -0
  243. package/lib/packages/core/directive/permission.ts +18 -0
  244. package/lib/packages/data/box/index.vue +66 -0
  245. package/lib/packages/data/card/index.vue +62 -0
  246. package/lib/packages/data/cardText/index.vue +56 -0
  247. package/lib/packages/data/countdown/index.vue +81 -0
  248. package/lib/packages/data/dashboard/index.vue +72 -0
  249. package/lib/packages/data/display/index.vue +63 -0
  250. package/lib/packages/data/icons/index.vue +68 -0
  251. package/lib/packages/data/imgText/index.vue +72 -0
  252. package/lib/packages/data/list/index.vue +69 -0
  253. package/lib/packages/data/notice/index.vue +63 -0
  254. package/lib/packages/data/operaText/index.vue +62 -0
  255. package/lib/packages/data/panel/index.vue +62 -0
  256. package/lib/packages/data/pay/index.vue +92 -0
  257. package/lib/packages/data/price/index.vue +55 -0
  258. package/lib/packages/data/product/index.vue +106 -0
  259. package/lib/packages/data/profile/index.vue +91 -0
  260. package/lib/packages/data/progress/index.vue +64 -0
  261. package/lib/packages/data/rank/index.vue +92 -0
  262. package/lib/packages/data/rotate/index.vue +69 -0
  263. package/lib/packages/data/statistic/index.vue +71 -0
  264. package/lib/packages/data/tabs/index.vue +64 -0
  265. package/lib/packages/data/task/index.vue +82 -0
  266. package/lib/packages/data/weather/index.vue +103 -0
  267. package/lib/packages/element-plus/array/index.vue +115 -0
  268. package/lib/packages/element-plus/article/index.vue +73 -0
  269. package/lib/packages/element-plus/card/index.vue +103 -0
  270. package/lib/packages/element-plus/cascader/index.vue +132 -0
  271. package/lib/packages/element-plus/chat/index.vue +513 -0
  272. package/lib/packages/element-plus/checkbox/index.vue +84 -0
  273. package/lib/packages/element-plus/comment/index.vue +76 -0
  274. package/lib/packages/element-plus/count-up/index.vue +107 -0
  275. package/lib/packages/element-plus/crud/column/column-default.vue +128 -0
  276. package/lib/packages/element-plus/crud/column/column-dynamic.vue +86 -0
  277. package/lib/packages/element-plus/crud/column/column-menu.vue +267 -0
  278. package/lib/packages/element-plus/crud/column/column-slot.vue +348 -0
  279. package/lib/packages/element-plus/crud/column/column.vue +119 -0
  280. package/lib/packages/element-plus/crud/column/menu.vue +78 -0
  281. package/lib/packages/element-plus/crud/config.js +76 -0
  282. package/lib/packages/element-plus/crud/config.ts +74 -0
  283. package/lib/packages/element-plus/crud/dialog/dialog-column.vue +102 -0
  284. package/lib/packages/element-plus/crud/dialog/dialog-excel.vue +204 -0
  285. package/lib/packages/element-plus/crud/dialog/dialog-filter.vue +159 -0
  286. package/lib/packages/element-plus/crud/dialog/dialog-form.vue +352 -0
  287. package/lib/packages/element-plus/crud/grid/index.vue +271 -0
  288. package/lib/packages/element-plus/crud/grid/item.vue +39 -0
  289. package/lib/packages/element-plus/crud/index.vue +1018 -0
  290. package/lib/packages/element-plus/crud/menu/header-menu.vue +175 -0
  291. package/lib/packages/element-plus/crud/menu/header-search.vue +228 -0
  292. package/lib/packages/element-plus/crud/menu/table-page.vue +108 -0
  293. package/lib/packages/element-plus/date/index.vue +81 -0
  294. package/lib/packages/element-plus/draggable/index.vue +444 -0
  295. package/lib/packages/element-plus/dynamic/index.vue +353 -0
  296. package/lib/packages/element-plus/flow/index.vue +339 -0
  297. package/lib/packages/element-plus/flow/node.vue +84 -0
  298. package/lib/packages/element-plus/form/config.js +8 -0
  299. package/lib/packages/element-plus/form/config.ts +6 -0
  300. package/lib/packages/element-plus/form/index.vue +954 -0
  301. package/lib/packages/element-plus/form/menu.vue +63 -0
  302. package/lib/packages/element-plus/group/index.vue +90 -0
  303. package/lib/packages/element-plus/input/index.vue +1264 -0
  304. package/lib/packages/element-plus/input-color/index.vue +70 -0
  305. package/lib/packages/element-plus/input-cron/index.vue +363 -0
  306. package/lib/packages/element-plus/input-icon/index.vue +143 -0
  307. package/lib/packages/element-plus/input-map/index.vue +311 -0
  308. package/lib/packages/element-plus/input-number/index.vue +91 -0
  309. package/lib/packages/element-plus/input-table/index.vue +279 -0
  310. package/lib/packages/element-plus/input-tag/index.vue +79 -0
  311. package/lib/packages/element-plus/input-tree/index.vue +194 -0
  312. package/lib/packages/element-plus/license/index.vue +155 -0
  313. package/lib/packages/element-plus/login/index.vue +203 -0
  314. package/lib/packages/element-plus/mention/index.vue +117 -0
  315. package/lib/packages/element-plus/radio/index.vue +38 -0
  316. package/lib/packages/element-plus/rate/index.vue +51 -0
  317. package/lib/packages/element-plus/search/index.vue +129 -0
  318. package/lib/packages/element-plus/select/index.vue +292 -0
  319. package/lib/packages/element-plus/sign/index.vue +230 -0
  320. package/lib/packages/element-plus/slider/index.vue +66 -0
  321. package/lib/packages/element-plus/switch/index.vue +72 -0
  322. package/lib/packages/element-plus/tabs/index.vue +62 -0
  323. package/lib/packages/element-plus/text-ellipsis/index.vue +104 -0
  324. package/lib/packages/element-plus/time/index.vue +81 -0
  325. package/lib/packages/element-plus/title/index.vue +30 -0
  326. package/lib/packages/element-plus/tree/index.vue +460 -0
  327. package/lib/packages/element-plus/upload/index.vue +728 -0
  328. package/lib/packages/element-plus/verify/index.vue +62 -0
  329. package/lib/packages/element-plus/video/index.vue +90 -0
  330. package/lib/plugin/ali/index.js +8 -0
  331. package/lib/plugin/ali/index.ts +6 -0
  332. package/lib/plugin/clipboard/index.js +64 -0
  333. package/lib/plugin/clipboard/index.ts +67 -0
  334. package/lib/plugin/export/_blob.js +151 -0
  335. package/lib/plugin/export/_blob.ts +176 -0
  336. package/lib/plugin/export/_export2Excel.js +145 -0
  337. package/lib/plugin/export/_export2Excel.ts +166 -0
  338. package/lib/plugin/export/index.js +268 -0
  339. package/lib/plugin/export/index.ts +274 -0
  340. package/lib/plugin/logs/index.js +48 -0
  341. package/lib/plugin/logs/index.ts +66 -0
  342. package/lib/plugin/print/index.js +147 -0
  343. package/lib/plugin/print/index.ts +155 -0
  344. package/lib/plugin/qiniu/index.js +82 -0
  345. package/lib/plugin/qiniu/index.ts +88 -0
  346. package/lib/plugin/screenshot/index.js +14 -0
  347. package/lib/plugin/screenshot/index.ts +9 -0
  348. package/lib/plugin/video/index.js +55 -0
  349. package/lib/plugin/video/index.ts +60 -0
  350. package/lib/plugin/watermark/index.js +121 -0
  351. package/lib/plugin/watermark/index.ts +127 -0
  352. package/lib/plugin/watermark/watermark.js +111 -0
  353. package/lib/plugin/watermark/watermark.ts +121 -0
  354. package/lib/ui/data/index.js +54 -0
  355. package/lib/ui/data/index.ts +51 -0
  356. package/lib/ui/element-plus/index.js +92 -0
  357. package/lib/ui/element-plus/index.ts +89 -0
  358. package/lib/ui/index.js +9 -0
  359. package/lib/ui/index.ts +6 -0
  360. package/lib/utils/bem.js +31 -0
  361. package/lib/utils/bem.ts +36 -0
  362. package/lib/utils/mock.js +142 -0
  363. package/lib/utils/mock.ts +151 -0
  364. package/lib/utils/util.js +403 -0
  365. package/lib/utils/util.ts +392 -0
  366. package/lib/utils/validate.js +21 -0
  367. package/lib/utils/validate.ts +23 -0
  368. package/lib/version.js +4 -0
  369. package/lib/version.ts +1 -0
  370. package/package.json +20 -10
  371. package/types/index.d.ts +139 -47
  372. package/types/shims-aliases.d.ts +4 -0
  373. package/lib/avue.js.map +0 -1
  374. package/lib/locale/format.js +0 -44
@@ -0,0 +1,64 @@
1
+ <template>
2
+ <div class="avue-data-tabs">
3
+ <el-row :span="24">
4
+ <el-col :md="span"
5
+ :xs="24"
6
+ :sm="12"
7
+ v-for="(item,index) in data"
8
+ :key="index">
9
+ <div class="item"
10
+ :style="{background:item.color}">
11
+ <a :href="item.href"
12
+ @click="item.click&&item.click(item)"
13
+ :target="item.target">
14
+ <div class="item-header">
15
+ <p>{{item.title}}</p>
16
+ <span>{{item.subtitle}}</span>
17
+ </div>
18
+ <div class="item-body">
19
+ <avue-count-up class="h2"
20
+ :decimals="item.decimals || decimals"
21
+ :animation="item.animation || animation"
22
+ :end="item.count"></avue-count-up>
23
+ </div>
24
+ <div class="item-footer">
25
+ <span>{{item.allcount}}</span>
26
+ <p>{{item.text}}</p>
27
+ </div>
28
+ <p class="item-tip">{{item.key}}</p>
29
+ </a>
30
+ </div>
31
+ </el-col>
32
+ </el-row>
33
+ </div>
34
+ </template>
35
+
36
+ <script>
37
+ import create from "../../../core/create.js";
38
+ export default create({
39
+ name: "data-tabs",
40
+ data () {
41
+ return {};
42
+ },
43
+ computed: {
44
+ animation () {
45
+ return this.option.animation
46
+ },
47
+ decimals () {
48
+ return this.option.decimals || 0
49
+ },
50
+ span () {
51
+ return this.option.span || 8;
52
+ },
53
+ data () {
54
+ return this.option.data || [];
55
+ }
56
+ },
57
+ props: {
58
+ option: {
59
+ type: Object,
60
+ default: () => { }
61
+ }
62
+ }
63
+ });
64
+ </script>
@@ -0,0 +1,82 @@
1
+ <template>
2
+ <div class="data-task">
3
+ <div class="data-task__header" v-if="title">
4
+ <span class="data-task__title">{{ title }}</span>
5
+ <span class="data-task__count">{{ completedCount }}/{{ data.length }}</span>
6
+ </div>
7
+ <div class="data-task__progress">
8
+ <el-progress :percentage="progressPercent" :stroke-width="8" :show-text="false"></el-progress>
9
+ </div>
10
+ <div class="data-task__list">
11
+ <div class="data-task__item"
12
+ v-for="(item, index) in data"
13
+ :key="index"
14
+ :class="{'is-completed': item.completed}">
15
+ <el-checkbox v-model="item.completed" @change="handleChange(item, index)"></el-checkbox>
16
+ <div class="data-task__content">
17
+ <div class="data-task__text">{{ item.title }}</div>
18
+ <div class="data-task__meta" v-if="item.deadline || item.priority">
19
+ <span class="data-task__deadline" v-if="item.deadline">{{ item.deadline }}</span>
20
+ <el-tag v-if="item.priority" size="small" :type="getPriorityType(item.priority)">
21
+ {{ item.priority }}
22
+ </el-tag>
23
+ </div>
24
+ </div>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </template>
29
+
30
+ <script>
31
+ import create from "../../../core/create.js";
32
+ import locale from "../../../core/locale.js";
33
+
34
+ const PRIORITY_TYPES = {
35
+ high: 'danger',
36
+ medium: 'warning',
37
+ low: 'info'
38
+ };
39
+
40
+ export default create({
41
+ name: "data-task",
42
+ mixins: [locale],
43
+ data() {
44
+ return {};
45
+ },
46
+ props: {
47
+ option: {
48
+ type: Object,
49
+ default: () => ({})
50
+ }
51
+ },
52
+ computed: {
53
+ title() {
54
+ return this.option.title;
55
+ },
56
+ data() {
57
+ return this.option.data || [];
58
+ },
59
+ completedCount() {
60
+ return this.data.filter(item => item.completed).length;
61
+ },
62
+ progressPercent() {
63
+ if (this.data.length === 0) return 0;
64
+ return Math.round((this.completedCount / this.data.length) * 100);
65
+ }
66
+ },
67
+ methods: {
68
+ handleChange(item, index) {
69
+ this.$emit('change', { item, index, completed: item.completed });
70
+ },
71
+ getPriorityType(priority) {
72
+ const normalized = String(priority || '').trim().toLowerCase();
73
+ const aliases = this.t('task.priorityAliases') || {};
74
+ const matchedKey = Object.keys(PRIORITY_TYPES).find((key) => {
75
+ const values = Array.isArray(aliases[key]) ? aliases[key] : [];
76
+ return values.some((value) => String(value).trim().toLowerCase() === normalized);
77
+ });
78
+ return PRIORITY_TYPES[matchedKey || normalized] || '';
79
+ }
80
+ }
81
+ });
82
+ </script>
@@ -0,0 +1,103 @@
1
+ <template>
2
+ <div class="data-weather">
3
+ <el-row :gutter="gutter">
4
+ <el-col :md="span"
5
+ :xs="24"
6
+ :sm="12"
7
+ v-for="(item, index) in data"
8
+ :key="index">
9
+ <div class="data-weather__item"
10
+ :style="getItemStyle(item)"
11
+ @click="item.click && item.click(item)">
12
+ <div class="data-weather__header">
13
+ <span class="data-weather__city">{{ item.city }}</span>
14
+ <span class="data-weather__date">{{ item.date }}</span>
15
+ </div>
16
+ <div class="data-weather__body">
17
+ <div class="data-weather__icon">
18
+ <i :class="getWeatherIcon(item.weather)" :style="{fontSize: '48px'}"></i>
19
+ </div>
20
+ <div class="data-weather__temp">
21
+ <span class="data-weather__temp-value">{{ item.temp }}</span>
22
+ <span class="data-weather__temp-unit">°C</span>
23
+ </div>
24
+ </div>
25
+ <div class="data-weather__footer">
26
+ <span class="data-weather__desc">{{ item.weather }}</span>
27
+ <span class="data-weather__wind" v-if="item.wind">{{ item.wind }}</span>
28
+ </div>
29
+ <div class="data-weather__range" v-if="item.tempLow !== undefined">
30
+ {{ item.tempLow }}° ~ {{ item.tempHigh }}°
31
+ </div>
32
+ </div>
33
+ </el-col>
34
+ </el-row>
35
+ </div>
36
+ </template>
37
+
38
+ <script>
39
+ import create from "../../../core/create.js";
40
+ import locale from "../../../core/locale.js";
41
+
42
+ const WEATHER_GRADIENTS = {
43
+ sunny: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
44
+ cloudy: 'linear-gradient(135deg, #89f7fe 0%, #66a6ff 100%)',
45
+ overcast: 'linear-gradient(135deg, #bdc3c7 0%, #2c3e50 100%)',
46
+ rain: 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)',
47
+ snow: 'linear-gradient(135deg, #e0eafc 0%, #cfdef3 100%)'
48
+ };
49
+
50
+ const WEATHER_ICONS = {
51
+ sunny: 'el-icon-sunny',
52
+ cloudy: 'el-icon-partly-cloudy',
53
+ overcast: 'el-icon-cloudy',
54
+ rain: 'el-icon-heavy-rain',
55
+ snow: 'el-icon-ice-cream'
56
+ };
57
+
58
+ export default create({
59
+ name: "data-weather",
60
+ mixins: [locale],
61
+ data() {
62
+ return {};
63
+ },
64
+ props: {
65
+ option: {
66
+ type: Object,
67
+ default: () => ({})
68
+ }
69
+ },
70
+ computed: {
71
+ span() {
72
+ return this.option.span || 6;
73
+ },
74
+ gutter() {
75
+ return this.option.gutter || 20;
76
+ },
77
+ data() {
78
+ return this.option.data || [];
79
+ }
80
+ },
81
+ methods: {
82
+ normalizeWeatherKey(weather) {
83
+ const normalized = String(weather || '').trim().toLowerCase();
84
+ const aliases = this.t('weather.aliases') || {};
85
+ const matchedKey = Object.keys(WEATHER_GRADIENTS).find((key) => {
86
+ const values = Array.isArray(aliases[key]) ? aliases[key] : [];
87
+ return values.some((value) => String(value).trim().toLowerCase() === normalized);
88
+ });
89
+ return matchedKey || normalized;
90
+ },
91
+ getItemStyle(item) {
92
+ const weatherKey = this.normalizeWeatherKey(item.weather);
93
+ return {
94
+ background: item.background || WEATHER_GRADIENTS[weatherKey] || WEATHER_GRADIENTS.sunny
95
+ };
96
+ },
97
+ getWeatherIcon(weather) {
98
+ const weatherKey = this.normalizeWeatherKey(weather);
99
+ return WEATHER_ICONS[weatherKey] || WEATHER_ICONS.sunny;
100
+ }
101
+ }
102
+ });
103
+ </script>
@@ -0,0 +1,115 @@
1
+ <template>
2
+ <div :class="b()">
3
+ <el-button type="primary"
4
+ icon="el-icon-plus"
5
+ circle
6
+ :size="size"
7
+ v-if="validatenull(text)"
8
+ :disabled="disabled"
9
+ @click="add()"></el-button>
10
+ <div :class="b('item')"
11
+ v-for="(item,index) in text"
12
+ :key="index">
13
+ <div :class="b('input')">
14
+ <el-tooltip placement="bottom"
15
+ :disabled="(!isImg && !isUrl) || validatenull(item)">
16
+ <template #content>
17
+ <component style="width: 200px"
18
+ :src="item"
19
+ @click="openImg(index)"
20
+ v-if="isImg"
21
+ controls="controls"
22
+ :is="isMediaType(item)"></component>
23
+ <el-link type="primary"
24
+ :href="item"
25
+ v-else-if="isUrl"
26
+ :target="target">{{item}}</el-link>
27
+ </template>
28
+ <el-input v-model="text[index]"
29
+ :size="size"
30
+ :maxlength="maxlength"
31
+ :minlength="minlength"
32
+ :show-word-limit="showWordLimit"
33
+ :placeholder="placeholder"
34
+ :disabled="disabled"></el-input>
35
+ </el-tooltip>
36
+ <template v-if="!(disabled ||readonly || alone)">
37
+ <el-button v-if="!isLimit"
38
+ type="primary"
39
+ icon="el-icon-plus"
40
+ circle
41
+ :size="size"
42
+ :disabled="disabled"
43
+ @click="add(index)"></el-button>
44
+ <el-button type="danger"
45
+ icon="el-icon-minus"
46
+ circle
47
+ :size="size"
48
+ :disabled="disabled"
49
+ @click="remove(index)"></el-button>
50
+ </template>
51
+ </div>
52
+ </div>
53
+ </div>
54
+ </template>
55
+
56
+ <script>
57
+ import create from "../../../core/create.js";
58
+ import props from "../../core/common/props.js";
59
+ import event from "../../core/common/event.js";
60
+ import { isMediaType } from "../../../utils/util.js";
61
+ export default create({
62
+ name: 'array',
63
+ mixins: [props(), event()],
64
+ data () {
65
+ return {
66
+ text: []
67
+ }
68
+ },
69
+ computed: {
70
+ isLimit () {
71
+ if (this.validatenull(this.limit)) return false
72
+ else if (this.textLen >= this.limit) return true
73
+ return false
74
+ },
75
+ textLen () {
76
+ return (this.text || []).length
77
+ },
78
+ isImg () {
79
+ return this.type === 'img'
80
+ },
81
+ isUrl () {
82
+ return this.type === 'url'
83
+ },
84
+ },
85
+ props: {
86
+ fileType: String,
87
+ alone: Boolean,
88
+ type: String,
89
+ limit: Number,
90
+ maxlength: [String, Number],
91
+ minlength: [String, Number],
92
+ showWordLimit: {
93
+ type: Boolean,
94
+ default: false
95
+ }
96
+ },
97
+ methods: {
98
+ isMediaType (item) {
99
+ return isMediaType(item, this.fileType)
100
+ },
101
+ add (index) {
102
+ this.text.splice(index + 1, 0, '');
103
+ },
104
+ remove (index) {
105
+ this.text.splice(index, 1)
106
+ },
107
+ openImg (index) {
108
+ const list = this.text.map(ele => {
109
+ return { thumbUrl: ele, url: ele, type: this.fileType }
110
+ })
111
+ this.$ImagePreview(list, index);
112
+ },
113
+ }
114
+ })
115
+ </script>
@@ -0,0 +1,73 @@
1
+ <template>
2
+ <div :class="b()">
3
+ <div :class="b('header')">
4
+ <div :class="b('title')"
5
+ v-if="title"
6
+ v-text="title"></div>
7
+ <small :class="b('meta')"
8
+ v-if="meta"
9
+ v-text="meta"></small>
10
+ </div>
11
+ <div :class="b('lead')"
12
+ v-text="lead"
13
+ v-if="lead"></div>
14
+ <div :class="b('body')"
15
+ v-if="body"
16
+ v-html="body"></div>
17
+ </div>
18
+
19
+ </template>
20
+
21
+ <script>
22
+ import create from "../../../core/create.js";
23
+ const propsDefault = {
24
+ title: "title",
25
+ meta: "meta",
26
+ lead: "lead",
27
+ body: "body"
28
+ };
29
+ export default create({
30
+ name: "article",
31
+ props: {
32
+ data: {
33
+ type: Object,
34
+ default: () => {
35
+ return {};
36
+ }
37
+ },
38
+ props: {
39
+ type: Object,
40
+ default: () => {
41
+ return propsDefault;
42
+ }
43
+ }
44
+ },
45
+ computed: {
46
+ titleKey () {
47
+ return this.props.title || propsDefault.title;
48
+ },
49
+ metaKey () {
50
+ return this.props.meta || propsDefault.meta;
51
+ },
52
+ leadKey () {
53
+ return this.props.lead || propsDefault.lead;
54
+ },
55
+ bodyKey () {
56
+ return this.props.body || propsDefault.body;
57
+ },
58
+ title () {
59
+ return this.data[this.titleKey];
60
+ },
61
+ meta () {
62
+ return this.data[this.metaKey];
63
+ },
64
+ lead () {
65
+ return this.data[this.leadKey];
66
+ },
67
+ body () {
68
+ return this.data[this.bodyKey];
69
+ }
70
+ },
71
+ mounted () { }
72
+ });
73
+ </script>
@@ -0,0 +1,103 @@
1
+ <template>
2
+ <div :class="b()">
3
+ <el-row :span="24"
4
+ :gutter="gutter">
5
+ <el-col :span="span"
6
+ v-if="validData(option.addBtn,true)">
7
+ <div :class="b('item',{'add':true})"
8
+ @click="rowAdd()">
9
+ <el-icon>
10
+ <el-icon-plus />
11
+ </el-icon>
12
+ <span>{{ t('crud.addBtn') }}</span>
13
+ </div>
14
+ </el-col>
15
+ <el-col :span="span"
16
+ v-for="(item,index) in data"
17
+ :key="index">
18
+ <div :class="b('item')"
19
+ @click="rowClick(item,index)">
20
+ <div :class="b('body')">
21
+ <div :class="b('avatar')">
22
+ <img :src="item[imgKey]"
23
+ alt="">
24
+ </div>
25
+ <div :class="b('detail')">
26
+ <div :class="b('title')">{{item[titleKey]}}</div>
27
+ <div :class="b('info')">{{item[infoKey]}}</div>
28
+ </div>
29
+ </div>
30
+ <div :class="b('menu')">
31
+ <slot name="menu"
32
+ :index="index"
33
+ :row="item"></slot>
34
+ </div>
35
+ </div>
36
+ </el-col>
37
+ </el-row>
38
+ </div>
39
+ </template>
40
+
41
+ <script>
42
+ const propsDefault = {
43
+ img: "img",
44
+ title: "title",
45
+ info: "info"
46
+ };
47
+ import create from "../../../core/create.js";
48
+ import locale from "../../../core/locale.js";
49
+ export default create({
50
+ name: "card",
51
+ mixins: [locale],
52
+ props: {
53
+ props: {
54
+ type: Object,
55
+ default: () => {
56
+ return propsDefault;
57
+ }
58
+ },
59
+ option: {
60
+ type: Object,
61
+ default: () => {
62
+ return {};
63
+ }
64
+ },
65
+ data: {
66
+ type: Array,
67
+ default: () => {
68
+ return [];
69
+ }
70
+ }
71
+ },
72
+ data () {
73
+ return {
74
+ propsDefault: propsDefault
75
+ };
76
+ },
77
+ computed: {
78
+ imgKey: function () {
79
+ return this.option.props.img || this.propsDefault.img;
80
+ },
81
+ titleKey: function () {
82
+ return this.option.props.title || this.propsDefault.title;
83
+ },
84
+ infoKey: function () {
85
+ return this.option.props.info || this.propsDefault.info;
86
+ },
87
+ span () {
88
+ return this.option.span || 8;
89
+ },
90
+ gutter () {
91
+ return this.option.gutter || 20;
92
+ }
93
+ },
94
+ methods: {
95
+ rowAdd () {
96
+ this.$emit("row-add");
97
+ },
98
+ rowClick (row, index) {
99
+ this.$emit("row-click", row, index);
100
+ }
101
+ }
102
+ });
103
+ </script>
@@ -0,0 +1,132 @@
1
+ <template>
2
+ <el-cascader
3
+ ref="cascader"
4
+ :options="dic"
5
+ :class="b()"
6
+ @click="handleClick"
7
+ @change="handleValueChange"
8
+ v-model="text"
9
+ :placeholder="placeholder"
10
+ :props="allProps"
11
+ :size="size"
12
+ :effect="effect"
13
+ :clearable="clearableVal"
14
+ :show-all-levels="showAllLevels"
15
+ :filterable="filterable"
16
+ :popper-class="popperClass"
17
+ :separator="separator"
18
+ :disabled="disabled"
19
+ :show-checked-strategy="showCheckedStrategy"
20
+ :collapse-tags="tags || collapseTags"
21
+ :collapse-tags-tooltip="collapseTagsTooltip"
22
+ :max-collapse-tags="maxCollapseTags"
23
+ @focus="handleFocus"
24
+ @blur="handleBlur"
25
+ >
26
+ <template #="{ data, node }">
27
+ <slot v-if="$slots.default" :data="data" :node="node"></slot>
28
+ <span v-else>{{ data[labelKey] }}</span>
29
+ </template>
30
+ </el-cascader>
31
+ </template>
32
+
33
+ <script>
34
+ import create from "../../../core/create.js";
35
+ import props from "../../core/common/props.js";
36
+ import event from "../../core/common/event.js";
37
+ export default create({
38
+ name: "cascader",
39
+ mixins: [props(), event()],
40
+ props: {
41
+ clearValidate: Function,
42
+ effect: {
43
+ type: String,
44
+ default: "light",
45
+ },
46
+ showCheckedStrategy: String,
47
+ checkStrictly: {
48
+ type: Boolean,
49
+ default: false,
50
+ },
51
+ emitPath: {
52
+ type: Boolean,
53
+ default: true,
54
+ },
55
+ tags: {
56
+ type: Boolean,
57
+ default: false,
58
+ },
59
+ collapseTags: Boolean,
60
+ collapseTagsTooltip: Boolean,
61
+ maxCollapseTags: Number,
62
+ expandTrigger: {
63
+ type: String,
64
+ default: "hover",
65
+ },
66
+ showAllLevels: {
67
+ type: Boolean,
68
+ default: true,
69
+ },
70
+ lazy: {
71
+ type: Boolean,
72
+ default: false,
73
+ },
74
+ lazyLoad: Function,
75
+ filterable: {
76
+ type: Boolean,
77
+ default: false,
78
+ },
79
+ separator: {
80
+ type: String,
81
+ },
82
+ },
83
+ computed: {
84
+ allProps() {
85
+ return {
86
+ label: this.labelKey,
87
+ value: this.valueKey,
88
+ disabled: this.disabledKey,
89
+ children: this.childrenKey,
90
+ checkStrictly: this.checkStrictly,
91
+ multiple: this.multiple,
92
+ emitPath: this.emitPath,
93
+ expandTrigger: this.props.expandTrigger,
94
+ hoverThreshold: this.props.hoverThreshold,
95
+ leaf: this.leafKey,
96
+ lazy: this.lazy,
97
+ lazyLoad: (node, resolve) => {
98
+ let callback = (list) => {
99
+ let findDic = (list, value, children) => {
100
+ list.forEach((ele) => {
101
+ if (ele[this.valueKey] == value) {
102
+ ele[this.childrenKey] = children;
103
+ } else if (ele[this.childrenKey]) {
104
+ findDic(ele[this.childrenKey]);
105
+ }
106
+ });
107
+ };
108
+ findDic(this.dic, node[this.valueKey], list);
109
+ resolve(list);
110
+ };
111
+ this.lazyLoad && this.lazyLoad(node, callback);
112
+ },
113
+ expandTrigger: this.expandTrigger,
114
+ };
115
+ },
116
+ },
117
+ created() {},
118
+ mounted() {},
119
+ methods: {
120
+ handleValueChange(val) {
121
+ setTimeout(() => {
122
+ if (!this.validatenull(val) && this.rules && this.clearValidate) {
123
+ this.clearValidate(this.prop);
124
+ }
125
+ });
126
+ },
127
+ getCheckedNodes(leafOnly = false) {
128
+ return this.$refs.cascader.getCheckedNodes(leafOnly);
129
+ },
130
+ },
131
+ });
132
+ </script>