haiwei-ui 1.0.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 (504) hide show
  1. package/.browserslistrc +3 -0
  2. package/.eslintrc.js +20 -0
  3. package/.prettierrc +6 -0
  4. package/.vscode/settings.json +10 -0
  5. package/README.md +23 -0
  6. package/babel.config.js +10 -0
  7. package/npm/345/217/221/345/270/203/350/257/246/347/273/206/346/223/215/344/275/234/346/214/207/345/274/225.md +296 -0
  8. package/package.json +65 -0
  9. package/packages/components/box/index.vue +181 -0
  10. package/packages/components/box-col/index.vue +43 -0
  11. package/packages/components/box-row/index.vue +27 -0
  12. package/packages/components/box-small/index.vue +64 -0
  13. package/packages/components/button/index.vue +52 -0
  14. package/packages/components/button-copy/index.vue +74 -0
  15. package/packages/components/button-delete/index.vue +87 -0
  16. package/packages/components/button-delete-batch/index.vue +108 -0
  17. package/packages/components/button-has/index.vue +54 -0
  18. package/packages/components/checkbox-group/index.vue +111 -0
  19. package/packages/components/color-picker/index.vue +66 -0
  20. package/packages/components/container/index.vue +21 -0
  21. package/packages/components/date-range-picker/index.vue +117 -0
  22. package/packages/components/details/index.vue +105 -0
  23. package/packages/components/dialog/index.vue +364 -0
  24. package/packages/components/drag-sort/index.vue +50 -0
  25. package/packages/components/drag-sort-dialog/index.vue +73 -0
  26. package/packages/components/drawer/index.vue +239 -0
  27. package/packages/components/enums/sex/index.vue +3 -0
  28. package/packages/components/flex/index.vue +58 -0
  29. package/packages/components/form/index.vue +153 -0
  30. package/packages/components/form-dialog/index.vue +245 -0
  31. package/packages/components/form-page/index.vue +195 -0
  32. package/packages/components/icon/index.vue +15 -0
  33. package/packages/components/icon-picker/index.vue +52 -0
  34. package/packages/components/icon-picker/panel.vue +81 -0
  35. package/packages/components/index.js +26 -0
  36. package/packages/components/label/index.vue +39 -0
  37. package/packages/components/list/components/export/index.vue +190 -0
  38. package/packages/components/list/components/footer/index.vue +67 -0
  39. package/packages/components/list/components/header/index.vue +57 -0
  40. package/packages/components/list/components/querybar/index.vue +188 -0
  41. package/packages/components/list/components/select-column/index.vue +53 -0
  42. package/packages/components/list/components/table/index.vue +210 -0
  43. package/packages/components/list/default.js +63 -0
  44. package/packages/components/list/index.vue +500 -0
  45. package/packages/components/list-agile/index.vue +223 -0
  46. package/packages/components/list-dialog/index.vue +102 -0
  47. package/packages/components/listbox/index.vue +77 -0
  48. package/packages/components/login-default/index.vue +177 -0
  49. package/packages/components/login-neon/index.vue +171 -0
  50. package/packages/components/map/index.vue +245 -0
  51. package/packages/components/map-coord-picking/index.vue +276 -0
  52. package/packages/components/map-search/index.vue +98 -0
  53. package/packages/components/radio/index.js +12 -0
  54. package/packages/components/scrollbar/index.vue +20 -0
  55. package/packages/components/select/index.js +12 -0
  56. package/packages/components/select-whether/index.vue +42 -0
  57. package/packages/components/split/index.vue +178 -0
  58. package/packages/components/split/trigger.vue +28 -0
  59. package/packages/components/tabnav/index.vue +124 -0
  60. package/packages/components/tabs/index.vue +48 -0
  61. package/packages/components/toolbar/components/fullscreen/index.vue +22 -0
  62. package/packages/components/toolbar/components/logout/index.vue +25 -0
  63. package/packages/components/toolbar/components/skin-toggle/form.vue +100 -0
  64. package/packages/components/toolbar/components/skin-toggle/index.vue +25 -0
  65. package/packages/components/toolbar/components/userInfo/index.vue +44 -0
  66. package/packages/components/toolbar/index.vue +26 -0
  67. package/packages/components/tree-select/index.js +12 -0
  68. package/packages/components/tree-select/mixins.vue +334 -0
  69. package/packages/components/txt/index.vue +27 -0
  70. package/packages/components/update-password/index.vue +84 -0
  71. package/packages/directive/has/index.js +23 -0
  72. package/packages/directive/index.js +13 -0
  73. package/packages/index.js +209 -0
  74. package/packages/layout.vue +39 -0
  75. package/packages/library.js +5 -0
  76. package/packages/mixins/components/button.js +15 -0
  77. package/packages/mixins/components/checkbox.vue +98 -0
  78. package/packages/mixins/components/dialog.js +3 -0
  79. package/packages/mixins/components/drawer.js +3 -0
  80. package/packages/mixins/components/form-dialog-edit.js +67 -0
  81. package/packages/mixins/components/form-readonly.js +33 -0
  82. package/packages/mixins/components/form-save.js +123 -0
  83. package/packages/mixins/components/input.js +24 -0
  84. package/packages/mixins/components/list.js +36 -0
  85. package/packages/mixins/components/loading.js +20 -0
  86. package/packages/mixins/components/radio.vue +84 -0
  87. package/packages/mixins/components/select.js +293 -0
  88. package/packages/mixins/components/visible.js +24 -0
  89. package/packages/mixins/global/fontSize.js +6 -0
  90. package/packages/mixins/global/loading.js +15 -0
  91. package/packages/mixins/global/message.js +64 -0
  92. package/packages/mixins/global/setTabName.js +6 -0
  93. package/packages/mixins/index.js +51 -0
  94. package/packages/page/403/index.vue +50 -0
  95. package/packages/page/404/index.vue +50 -0
  96. package/packages/page/default/index.vue +29 -0
  97. package/packages/page/iframe/index.vue +15 -0
  98. package/packages/page/login/index.vue +19 -0
  99. package/packages/page/userInfo/index.vue +47 -0
  100. package/packages/router/index.js +100 -0
  101. package/packages/router/routes.js +60 -0
  102. package/packages/skins/pretty/components/header/components/breadcrumb/index.vue +45 -0
  103. package/packages/skins/pretty/components/header/components/theme/index.vue +39 -0
  104. package/packages/skins/pretty/components/header/components/theme/list.js +82 -0
  105. package/packages/skins/pretty/components/header/index.vue +38 -0
  106. package/packages/skins/pretty/components/main/index.vue +51 -0
  107. package/packages/skins/pretty/components/menus/index.vue +60 -0
  108. package/packages/skins/pretty/components/menus/item.vue +46 -0
  109. package/packages/skins/pretty/components/sidebar/index.vue +17 -0
  110. package/packages/skins/pretty/index.js +47 -0
  111. package/packages/skins/pretty/index.vue +16 -0
  112. package/packages/skins/pretty/preview.png +0 -0
  113. package/packages/skins/pretty/store/index.js +8 -0
  114. package/packages/skins/pretty/store/modules/sidebar.js +32 -0
  115. package/packages/skins/pretty/styles/_index.scss +30 -0
  116. package/packages/skins/pretty/styles/components/header/_index.scss +77 -0
  117. package/packages/skins/pretty/styles/components/main/_index.scss +24 -0
  118. package/packages/skins/pretty/styles/components/menus/_index.scss +80 -0
  119. package/packages/skins/pretty/styles/components/sidebar/_index.scss +28 -0
  120. package/packages/skins/pretty/styles/themes/_index.scss +20 -0
  121. package/packages/skins/pretty/styles/themes/_theme.scss +283 -0
  122. package/packages/skins/pretty/styles/themes/blue-light/_index.scss +5 -0
  123. package/packages/skins/pretty/styles/themes/blue-light/_variables.scss +38 -0
  124. package/packages/skins/pretty/styles/themes/default/_index.scss +2 -0
  125. package/packages/skins/pretty/styles/themes/default/_variables.scss +38 -0
  126. package/packages/skins/pretty/styles/themes/green/_index.scss +5 -0
  127. package/packages/skins/pretty/styles/themes/green/_variables.scss +38 -0
  128. package/packages/skins/pretty/styles/themes/green-light/_index.scss +5 -0
  129. package/packages/skins/pretty/styles/themes/green-light/_variables.scss +38 -0
  130. package/packages/skins/pretty/styles/themes/orange/_index.scss +5 -0
  131. package/packages/skins/pretty/styles/themes/orange/_variables.scss +38 -0
  132. package/packages/skins/pretty/styles/themes/orange-light/_index.scss +5 -0
  133. package/packages/skins/pretty/styles/themes/orange-light/_variables.scss +38 -0
  134. package/packages/skins/pretty/styles/themes/pink/_index.scss +5 -0
  135. package/packages/skins/pretty/styles/themes/pink/_variables.scss +40 -0
  136. package/packages/skins/pretty/styles/themes/pink-light/_index.scss +5 -0
  137. package/packages/skins/pretty/styles/themes/pink-light/_variables.scss +40 -0
  138. package/packages/store/index.js +33 -0
  139. package/packages/store/modules/account.js +133 -0
  140. package/packages/store/modules/config.js +100 -0
  141. package/packages/store/modules/dialog-menu.js +46 -0
  142. package/packages/store/modules/dialog.js +17 -0
  143. package/packages/store/modules/fullscreen.js +37 -0
  144. package/packages/store/modules/loading.js +8 -0
  145. package/packages/store/modules/page.js +404 -0
  146. package/packages/store/modules/skins.js +69 -0
  147. package/packages/store/modules/system.js +63 -0
  148. package/packages/store/modules/token.js +22 -0
  149. package/packages/styles/_element.scss +97 -0
  150. package/packages/styles/_mixins.scss +39 -0
  151. package/packages/styles/_theme.scss +82 -0
  152. package/packages/styles/_variables.scss +69 -0
  153. package/packages/styles/animation/_index.scss +37 -0
  154. package/packages/styles/animation/breadcrumb.scss +18 -0
  155. package/packages/styles/animation/fade.scss +30 -0
  156. package/packages/styles/animation/move.scss +130 -0
  157. package/packages/styles/app.scss +101 -0
  158. package/packages/styles/components/box/_index.scss +212 -0
  159. package/packages/styles/components/box-row/_index.scss +486 -0
  160. package/packages/styles/components/box-small/_index.scss +73 -0
  161. package/packages/styles/components/button/_index.scss +9 -0
  162. package/packages/styles/components/checkbox-group/_index.scss +20 -0
  163. package/packages/styles/components/color-picker/_index.scss +17 -0
  164. package/packages/styles/components/container/_index.scss +36 -0
  165. package/packages/styles/components/date-range-picker/_index.scss +6 -0
  166. package/packages/styles/components/details/_index.scss +82 -0
  167. package/packages/styles/components/details-dialog/_index.scss +19 -0
  168. package/packages/styles/components/dialog/_index.scss +147 -0
  169. package/packages/styles/components/drag-sort/_index.scss +25 -0
  170. package/packages/styles/components/drag-sort-dialog/_index.scss +9 -0
  171. package/packages/styles/components/drawer/_index.scss +199 -0
  172. package/packages/styles/components/flex/_index.scss +60 -0
  173. package/packages/styles/components/form/_index.scss +3 -0
  174. package/packages/styles/components/form-dialog/_index.scss +15 -0
  175. package/packages/styles/components/form-page/_index.scss +48 -0
  176. package/packages/styles/components/icon/_index.scss +8 -0
  177. package/packages/styles/components/icon-picker/_index.scss +62 -0
  178. package/packages/styles/components/label/_index.scss +289 -0
  179. package/packages/styles/components/list/_index.scss +270 -0
  180. package/packages/styles/components/listbox/_index.scss +57 -0
  181. package/packages/styles/components/login/_index.scss +6 -0
  182. package/packages/styles/components/login-default/_index.scss +94 -0
  183. package/packages/styles/components/login-neon/_index.scss +129 -0
  184. package/packages/styles/components/map/_index.scss +5 -0
  185. package/packages/styles/components/map-coord-picking/_index.scss +50 -0
  186. package/packages/styles/components/map-search-box/_index.scss +83 -0
  187. package/packages/styles/components/scrollbar/_index.scss +16 -0
  188. package/packages/styles/components/select/_index.scss +25 -0
  189. package/packages/styles/components/split/_index.scss +119 -0
  190. package/packages/styles/components/tabnav/_index.scss +194 -0
  191. package/packages/styles/components/tabs/_index.scss +79 -0
  192. package/packages/styles/components/toolbar/_index.scss +120 -0
  193. package/packages/styles/components/tree/_index.scss +7 -0
  194. package/packages/styles/components/tree-select/_index.scss +47 -0
  195. package/packages/styles/components/txt/_index.scss +17 -0
  196. package/packages/styles/components/upload-dialog/_index.scss +54 -0
  197. package/packages/styles/components/upload-multiple/_index.scss +29 -0
  198. package/packages/styles/components/upload-single/_index.scss +23 -0
  199. package/packages/styles/directive/drop/_index.scss +3 -0
  200. package/packages/styles/directive/resizable/_index.scss +105 -0
  201. package/packages/styles/helper/_background.scss +22 -0
  202. package/packages/styles/helper/_border.scss +99 -0
  203. package/packages/styles/helper/_boxshadow.scss +4 -0
  204. package/packages/styles/helper/_fontsize.scss +6 -0
  205. package/packages/styles/helper/_index.scss +19 -0
  206. package/packages/styles/helper/_margin.scss +22 -0
  207. package/packages/styles/helper/_padding.scss +22 -0
  208. package/packages/styles/helper/_pull.scss +9 -0
  209. package/packages/styles/helper/_text.scss +58 -0
  210. package/packages/utils/assist.js +56 -0
  211. package/packages/utils/const.js +12 -0
  212. package/packages/utils/db.js +32 -0
  213. package/packages/utils/dom.js +156 -0
  214. package/packages/utils/http.js +307 -0
  215. package/packages/utils/load-routes.js +37 -0
  216. package/packages/utils/menu.js +53 -0
  217. package/packages/utils/regex.js +7 -0
  218. package/packages/utils/resize-event.js +40 -0
  219. package/packages/utils/token.js +24 -0
  220. package/packages/vuter/attributes.json +41 -0
  221. package/packages/vuter/tags.json +28 -0
  222. package/postcss.config.js +5 -0
  223. package/public/css/index.css +288 -0
  224. package/public/images/favicon.ico +0 -0
  225. package/public/images/login/bg1.jpg +0 -0
  226. package/public/images/login/bg2.jpg +0 -0
  227. package/public/images/login/bg3.jpg +0 -0
  228. package/public/images/login/bg4.jpg +0 -0
  229. package/public/images/logo.png +0 -0
  230. package/public/images/logo.svg +21 -0
  231. package/public/images/motto.png +0 -0
  232. package/public/index.html +54 -0
  233. package/public/lib/font/iconfont.js +1 -0
  234. package/script/npm_install.bat +4 -0
  235. package/script/npm_install.ps1 +13 -0
  236. package/script/npm_publish.bat +4 -0
  237. package/script/npm_publish.ps1 +12 -0
  238. package/script/npm_update.bat +4 -0
  239. package/script/npm_update.ps1 +13 -0
  240. package/src/api/account.js +47 -0
  241. package/src/api/actions.js +18 -0
  242. package/src/api/config.js +78 -0
  243. package/src/components/code-preview/index.vue +77 -0
  244. package/src/components/index.js +7 -0
  245. package/src/components/tmpl/components/attributes/index.vue +19 -0
  246. package/src/components/tmpl/components/events/index.vue +15 -0
  247. package/src/components/tmpl/components/methods/index.vue +15 -0
  248. package/src/components/tmpl/components/slots/index.vue +14 -0
  249. package/src/components/tmpl/index.vue +77 -0
  250. package/src/index.js +25 -0
  251. package/src/main.js +31 -0
  252. package/src/menus/index.js +18 -0
  253. package/src/routes.js +3 -0
  254. package/src/store.js +3 -0
  255. package/src/style/element-ui.scss +11 -0
  256. package/src/utils/menus-loader.js +15 -0
  257. package/src/views/components/advanced/details/_index/data/attrs.js +51 -0
  258. package/src/views/components/advanced/details/_index/data/events.js +7 -0
  259. package/src/views/components/advanced/details/_index/data/slots.js +10 -0
  260. package/src/views/components/advanced/details/_index/index.vue +24 -0
  261. package/src/views/components/advanced/details/_index/page.js +16 -0
  262. package/src/views/components/advanced/details/demo1/demo.vue +59 -0
  263. package/src/views/components/advanced/details/demo1/index.vue +21 -0
  264. package/src/views/components/advanced/details/demo1/page.js +14 -0
  265. package/src/views/components/advanced/drag-sort/_index/data/attrs.js +9 -0
  266. package/src/views/components/advanced/drag-sort/_index/data/events.js +12 -0
  267. package/src/views/components/advanced/drag-sort/_index/index.vue +24 -0
  268. package/src/views/components/advanced/drag-sort/_index/page.js +16 -0
  269. package/src/views/components/advanced/drag-sort/demo1/demo.vue +34 -0
  270. package/src/views/components/advanced/drag-sort/demo1/index.vue +21 -0
  271. package/src/views/components/advanced/drag-sort/demo1/page.js +14 -0
  272. package/src/views/components/advanced/drag-sort-dialog/_index/data/attrs.js +58 -0
  273. package/src/views/components/advanced/drag-sort-dialog/_index/data/events.js +12 -0
  274. package/src/views/components/advanced/drag-sort-dialog/_index/index.vue +28 -0
  275. package/src/views/components/advanced/drag-sort-dialog/_index/page.js +16 -0
  276. package/src/views/components/advanced/drag-sort-dialog/demo1/demo.vue +36 -0
  277. package/src/views/components/advanced/drag-sort-dialog/demo1/index.vue +21 -0
  278. package/src/views/components/advanced/drag-sort-dialog/demo1/page.js +14 -0
  279. package/src/views/components/advanced/list/_index/data/attrs.js +177 -0
  280. package/src/views/components/advanced/list/_index/data/events.js +87 -0
  281. package/src/views/components/advanced/list/_index/data/methods.js +18 -0
  282. package/src/views/components/advanced/list/_index/data/slots.js +46 -0
  283. package/src/views/components/advanced/list/_index/index.vue +87 -0
  284. package/src/views/components/advanced/list/_index/page.js +16 -0
  285. package/src/views/components/advanced/list/demo1/demo.vue +90 -0
  286. package/src/views/components/advanced/list/demo1/index.vue +21 -0
  287. package/src/views/components/advanced/list/demo1/page.js +14 -0
  288. package/src/views/components/advanced/list/demo2/demo.vue +78 -0
  289. package/src/views/components/advanced/list/demo2/index.vue +21 -0
  290. package/src/views/components/advanced/list/demo2/page.js +14 -0
  291. package/src/views/components/advanced/list/demo4/demo.vue +56 -0
  292. package/src/views/components/advanced/list/demo4/index.vue +21 -0
  293. package/src/views/components/advanced/list/demo4/page.js +14 -0
  294. package/src/views/components/advanced/list-dialog/_index/data/attrs.js +58 -0
  295. package/src/views/components/advanced/list-dialog/_index/data/events.js +22 -0
  296. package/src/views/components/advanced/list-dialog/_index/data/methods.js +6 -0
  297. package/src/views/components/advanced/list-dialog/_index/data/slots.js +6 -0
  298. package/src/views/components/advanced/list-dialog/_index/index.vue +31 -0
  299. package/src/views/components/advanced/list-dialog/_index/page.js +16 -0
  300. package/src/views/components/advanced/list-dialog/demo1/demo.vue +75 -0
  301. package/src/views/components/advanced/list-dialog/demo1/index.vue +21 -0
  302. package/src/views/components/advanced/list-dialog/demo1/page.js +14 -0
  303. package/src/views/components/advanced/listbox/_index/data/attrs.js +30 -0
  304. package/src/views/components/advanced/listbox/_index/data/events.js +7 -0
  305. package/src/views/components/advanced/listbox/_index/data/slots.js +6 -0
  306. package/src/views/components/advanced/listbox/_index/index.vue +27 -0
  307. package/src/views/components/advanced/listbox/_index/page.js +16 -0
  308. package/src/views/components/advanced/listbox/demo1/demo.vue +74 -0
  309. package/src/views/components/advanced/listbox/demo1/index.vue +21 -0
  310. package/src/views/components/advanced/listbox/demo1/page.js +14 -0
  311. package/src/views/components/base/box/_index/data/attrs.js +128 -0
  312. package/src/views/components/base/box/_index/data/events.js +17 -0
  313. package/src/views/components/base/box/_index/data/methods.js +17 -0
  314. package/src/views/components/base/box/_index/data/slots.js +26 -0
  315. package/src/views/components/base/box/_index/index.vue +37 -0
  316. package/src/views/components/base/box/_index/page.js +16 -0
  317. package/src/views/components/base/box/demo1/demo.vue +33 -0
  318. package/src/views/components/base/box/demo1/index.vue +21 -0
  319. package/src/views/components/base/box/demo1/page.js +14 -0
  320. package/src/views/components/base/box/demo2/demo.vue +9 -0
  321. package/src/views/components/base/box/demo2/index.vue +21 -0
  322. package/src/views/components/base/box/demo2/page.js +14 -0
  323. package/src/views/components/base/box/demo3/demo.vue +31 -0
  324. package/src/views/components/base/box/demo3/index.vue +21 -0
  325. package/src/views/components/base/box/demo3/page.js +14 -0
  326. package/src/views/components/base/box/demo4/demo.vue +58 -0
  327. package/src/views/components/base/box/demo4/index.vue +21 -0
  328. package/src/views/components/base/box/demo4/page.js +14 -0
  329. package/src/views/components/base/box-col/_index/data/attrs.js +30 -0
  330. package/src/views/components/base/box-col/_index/data/slots.js +6 -0
  331. package/src/views/components/base/box-col/_index/index.vue +27 -0
  332. package/src/views/components/base/box-col/_index/page.js +16 -0
  333. package/src/views/components/base/box-col/demo1/demo.vue +23 -0
  334. package/src/views/components/base/box-col/demo1/index.vue +21 -0
  335. package/src/views/components/base/box-col/demo1/page.js +14 -0
  336. package/src/views/components/base/box-row/_index/data/attrs.js +16 -0
  337. package/src/views/components/base/box-row/_index/data/slots.js +6 -0
  338. package/src/views/components/base/box-row/_index/index.vue +30 -0
  339. package/src/views/components/base/box-row/_index/page.js +16 -0
  340. package/src/views/components/base/box-row/demo1/demo.vue +26 -0
  341. package/src/views/components/base/box-row/demo1/index.vue +21 -0
  342. package/src/views/components/base/box-row/demo1/page.js +15 -0
  343. package/src/views/components/base/box-small/_index/data/attrs.js +44 -0
  344. package/src/views/components/base/box-small/_index/data/events.js +7 -0
  345. package/src/views/components/base/box-small/_index/index.vue +30 -0
  346. package/src/views/components/base/box-small/_index/page.js +16 -0
  347. package/src/views/components/base/box-small/demo1/demo.vue +50 -0
  348. package/src/views/components/base/box-small/demo1/index.vue +21 -0
  349. package/src/views/components/base/box-small/demo1/page.js +14 -0
  350. package/src/views/components/base/button/_index/data/attrs.js +86 -0
  351. package/src/views/components/base/button/_index/data/events.js +7 -0
  352. package/src/views/components/base/button/_index/data/slots.js +6 -0
  353. package/src/views/components/base/button/_index/index.vue +28 -0
  354. package/src/views/components/base/button/_index/page.js +16 -0
  355. package/src/views/components/base/button/demo1/demo.vue +76 -0
  356. package/src/views/components/base/button/demo1/index.vue +21 -0
  357. package/src/views/components/base/button/demo1/page.js +14 -0
  358. package/src/views/components/base/button/demo2/demo.vue +92 -0
  359. package/src/views/components/base/button/demo2/index.vue +21 -0
  360. package/src/views/components/base/button/demo2/page.js +14 -0
  361. package/src/views/components/base/container/_index/data/attrs.js +16 -0
  362. package/src/views/components/base/container/_index/index.vue +25 -0
  363. package/src/views/components/base/container/_index/page.js +16 -0
  364. package/src/views/components/base/dialog/_index/data/attrs.js +128 -0
  365. package/src/views/components/base/dialog/_index/data/events.js +27 -0
  366. package/src/views/components/base/dialog/_index/data/methods.js +22 -0
  367. package/src/views/components/base/dialog/_index/data/slots.js +18 -0
  368. package/src/views/components/base/dialog/_index/index.vue +28 -0
  369. package/src/views/components/base/dialog/_index/page.js +16 -0
  370. package/src/views/components/base/dialog/demo1/demo.vue +75 -0
  371. package/src/views/components/base/dialog/demo1/index.vue +21 -0
  372. package/src/views/components/base/dialog/demo1/page.js +14 -0
  373. package/src/views/components/base/drawer/_index/data/attrs.js +121 -0
  374. package/src/views/components/base/drawer/_index/data/events.js +27 -0
  375. package/src/views/components/base/drawer/_index/data/slots.js +22 -0
  376. package/src/views/components/base/drawer/_index/index.vue +30 -0
  377. package/src/views/components/base/drawer/_index/page.js +16 -0
  378. package/src/views/components/base/drawer/demo1/demo.vue +24 -0
  379. package/src/views/components/base/drawer/demo1/index.vue +22 -0
  380. package/src/views/components/base/drawer/demo1/page.js +14 -0
  381. package/src/views/components/base/flex/_index/data/attrs.js +37 -0
  382. package/src/views/components/base/flex/_index/data/slots.js +18 -0
  383. package/src/views/components/base/flex/_index/index.vue +27 -0
  384. package/src/views/components/base/flex/_index/page.js +16 -0
  385. package/src/views/components/base/flex/demo1/demo.vue +59 -0
  386. package/src/views/components/base/flex/demo1/index.vue +24 -0
  387. package/src/views/components/base/flex/demo1/page.js +14 -0
  388. package/src/views/components/base/label/_index/data/attrs.js +51 -0
  389. package/src/views/components/base/label/_index/data/slots.js +6 -0
  390. package/src/views/components/base/label/_index/index.vue +25 -0
  391. package/src/views/components/base/label/_index/page.js +16 -0
  392. package/src/views/components/base/label/demo1/demo.vue +23 -0
  393. package/src/views/components/base/label/demo1/index.vue +24 -0
  394. package/src/views/components/base/label/demo1/page.js +14 -0
  395. package/src/views/components/base/scrollbar/_index/data/attrs.js +9 -0
  396. package/src/views/components/base/scrollbar/_index/data/methods.js +6 -0
  397. package/src/views/components/base/scrollbar/_index/index.vue +27 -0
  398. package/src/views/components/base/scrollbar/_index/page.js +15 -0
  399. package/src/views/components/base/scrollbar/demo1/demo.vue +76 -0
  400. package/src/views/components/base/scrollbar/demo1/index.vue +21 -0
  401. package/src/views/components/base/scrollbar/demo1/page.js +14 -0
  402. package/src/views/components/base/split/_index/data/attrs.js +37 -0
  403. package/src/views/components/base/split/_index/data/events.js +17 -0
  404. package/src/views/components/base/split/_index/index.vue +29 -0
  405. package/src/views/components/base/split/_index/page.js +16 -0
  406. package/src/views/components/base/split/demo1/demo.vue +27 -0
  407. package/src/views/components/base/split/demo1/index.vue +21 -0
  408. package/src/views/components/base/split/demo1/page.js +14 -0
  409. package/src/views/components/base/tabs/_index/data/attrs.js +9 -0
  410. package/src/views/components/base/tabs/_index/data/events.js +12 -0
  411. package/src/views/components/base/tabs/_index/data/methods.js +12 -0
  412. package/src/views/components/base/tabs/_index/data/slots.js +6 -0
  413. package/src/views/components/base/tabs/_index/index.vue +31 -0
  414. package/src/views/components/base/tabs/_index/page.js +16 -0
  415. package/src/views/components/base/tabs/demo1/demo.vue +79 -0
  416. package/src/views/components/base/tabs/demo1/index.vue +24 -0
  417. package/src/views/components/base/tabs/demo1/page.js +14 -0
  418. package/src/views/components/base/txt/_index/data/attrs.js +9 -0
  419. package/src/views/components/base/txt/_index/data/slots.js +6 -0
  420. package/src/views/components/base/txt/_index/index.vue +27 -0
  421. package/src/views/components/base/txt/_index/page.js +16 -0
  422. package/src/views/components/base/txt/demo1/demo.vue +21 -0
  423. package/src/views/components/base/txt/demo1/index.vue +24 -0
  424. package/src/views/components/base/txt/demo1/page.js +14 -0
  425. package/src/views/components/form/checkbox-group/_index/data/attrs.js +51 -0
  426. package/src/views/components/form/checkbox-group/_index/data/events.js +12 -0
  427. package/src/views/components/form/checkbox-group/_index/data/methods.js +14 -0
  428. package/src/views/components/form/checkbox-group/_index/data/slots.js +6 -0
  429. package/src/views/components/form/checkbox-group/_index/index.vue +49 -0
  430. package/src/views/components/form/checkbox-group/_index/page.js +16 -0
  431. package/src/views/components/form/checkbox-group/demo1/demo.vue +84 -0
  432. package/src/views/components/form/checkbox-group/demo1/index.vue +21 -0
  433. package/src/views/components/form/checkbox-group/demo1/page.js +14 -0
  434. package/src/views/components/form/color-picker/_index/data/attrs.js +58 -0
  435. package/src/views/components/form/color-picker/_index/data/events.js +7 -0
  436. package/src/views/components/form/color-picker/_index/index.vue +24 -0
  437. package/src/views/components/form/color-picker/_index/page.js +16 -0
  438. package/src/views/components/form/color-picker/demo1/demo.vue +44 -0
  439. package/src/views/components/form/color-picker/demo1/index.vue +21 -0
  440. package/src/views/components/form/color-picker/demo1/page.js +14 -0
  441. package/src/views/components/form/date-range-picker/_index/data/attrs.js +37 -0
  442. package/src/views/components/form/date-range-picker/_index/data/events.js +7 -0
  443. package/src/views/components/form/date-range-picker/_index/index.vue +28 -0
  444. package/src/views/components/form/date-range-picker/_index/page.js +16 -0
  445. package/src/views/components/form/date-range-picker/demo1/demo.vue +35 -0
  446. package/src/views/components/form/date-range-picker/demo1/index.vue +21 -0
  447. package/src/views/components/form/date-range-picker/demo1/page.js +14 -0
  448. package/src/views/components/form/form/_index/data/attrs.js +93 -0
  449. package/src/views/components/form/form/_index/data/events.js +19 -0
  450. package/src/views/components/form/form/_index/data/methods.js +14 -0
  451. package/src/views/components/form/form/_index/index.vue +26 -0
  452. package/src/views/components/form/form/_index/page.js +16 -0
  453. package/src/views/components/form/form/demo1/demo.vue +89 -0
  454. package/src/views/components/form/form/demo1/index.vue +21 -0
  455. package/src/views/components/form/form/demo1/page.js +14 -0
  456. package/src/views/components/form/form-dialog/_index/data/attrs.js +191 -0
  457. package/src/views/components/form/form-dialog/_index/data/events.js +39 -0
  458. package/src/views/components/form/form-dialog/_index/data/methods.js +14 -0
  459. package/src/views/components/form/form-dialog/_index/index.vue +26 -0
  460. package/src/views/components/form/form-dialog/_index/page.js +16 -0
  461. package/src/views/components/form/form-dialog/demo1/demo.vue +81 -0
  462. package/src/views/components/form/form-dialog/demo1/index.vue +24 -0
  463. package/src/views/components/form/form-dialog/demo1/page.js +14 -0
  464. package/src/views/components/form/form-page/_index/data/attrs.js +135 -0
  465. package/src/views/components/form/form-page/_index/data/events.js +35 -0
  466. package/src/views/components/form/form-page/_index/data/methods.js +14 -0
  467. package/src/views/components/form/form-page/_index/index.vue +30 -0
  468. package/src/views/components/form/form-page/_index/page.js +16 -0
  469. package/src/views/components/form/form-page/demo1/demo.vue +41 -0
  470. package/src/views/components/form/form-page/demo1/index.vue +21 -0
  471. package/src/views/components/form/form-page/demo1/page.js +14 -0
  472. package/src/views/components/form/icon-picker/_index/data/attrs.js +16 -0
  473. package/src/views/components/form/icon-picker/_index/data/events.js +7 -0
  474. package/src/views/components/form/icon-picker/_index/index.vue +29 -0
  475. package/src/views/components/form/icon-picker/_index/page.js +16 -0
  476. package/src/views/components/form/icon-picker/demo1/demo.vue +47 -0
  477. package/src/views/components/form/icon-picker/demo1/index.vue +21 -0
  478. package/src/views/components/form/icon-picker/demo1/page.js +14 -0
  479. package/src/views/components/form/select/_index/data/attrs.js +79 -0
  480. package/src/views/components/form/select/_index/data/events.js +32 -0
  481. package/src/views/components/form/select/_index/data/methods.js +6 -0
  482. package/src/views/components/form/select/_index/index.vue +27 -0
  483. package/src/views/components/form/select/_index/page.js +16 -0
  484. package/src/views/components/form/select/demo1/demo.vue +61 -0
  485. package/src/views/components/form/select/demo1/index.vue +21 -0
  486. package/src/views/components/form/select/demo1/page.js +14 -0
  487. package/src/views/components/form/select/demo2/index.vue +42 -0
  488. package/src/views/components/form/select/demo2/page.js +14 -0
  489. package/src/views/components/map/map-coord-picking/_index/data/attrs.js +100 -0
  490. package/src/views/components/map/map-coord-picking/_index/data/events.js +1 -0
  491. package/src/views/components/map/map-coord-picking/_index/data/methods.js +1 -0
  492. package/src/views/components/map/map-coord-picking/_index/data/slots.js +1 -0
  493. package/src/views/components/map/map-coord-picking/_index/index.vue +29 -0
  494. package/src/views/components/map/map-coord-picking/_index/page.js +16 -0
  495. package/src/views/components/map/map-coord-picking/demo1/demo.vue +51 -0
  496. package/src/views/components/map/map-coord-picking/demo1/index.vue +21 -0
  497. package/src/views/components/map/map-coord-picking/demo1/page.js +14 -0
  498. package/src/views/components/menus.js +84 -0
  499. package/src/views/login/index.js +23 -0
  500. package/src/views/run/index.vue +57 -0
  501. package/src/views/run/page.js +15 -0
  502. package/vue.config.js +65 -0
  503. package//345/217/221/345/270/203/350/204/232/346/234/254/344/277/256/345/244/215/350/257/264/346/230/216.md +92 -0
  504. package//351/241/271/347/233/256/346/224/271/345/220/215/345/256/214/346/210/220/346/200/273/347/273/223.md +74 -0
@@ -0,0 +1,209 @@
1
+ import '@babel/polyfill'
2
+ import './utils/const'
3
+ import Vue from 'vue'
4
+ import lodash from 'lodash'
5
+ import ElementUI from 'element-ui'
6
+ import 'element-ui/lib/theme-chalk/index.css'
7
+ import './styles/app.scss'
8
+ import UseRouter, { router, routes } from './router/'
9
+ import UseStore, { store, storeOptions } from './store/'
10
+ import HttpInit from './utils/http'
11
+ import Layout from './layout'
12
+ import Components, { loginComponents } from './components'
13
+ import Mixins from './mixins/'
14
+ import Directive from './directive'
15
+ import regex from './utils/regex'
16
+ import dayjs from 'dayjs'
17
+ import VueClipboard from 'vue-clipboard2'
18
+ // 皮肤
19
+ import SkinPretty from './skins/pretty/index'
20
+ // 皮肤集合
21
+ let skins = [SkinPretty]
22
+
23
+ Vue.config.productionTip = false
24
+
25
+ // 附加自定义样式
26
+ const appendCustomCss = config => {
27
+ const customCss = config.component.customCss
28
+ if (customCss) {
29
+ var style = document.createElement('style')
30
+ style.type = 'text/css'
31
+ if (style.styleSheet) {
32
+ style.styleSheet.cssText = customCss
33
+ } else {
34
+ // w3c浏览器中只要创建文本节点插入到style元素中就行了
35
+ var textNode = document.createTextNode(customCss)
36
+ style.appendChild(textNode)
37
+ }
38
+ document.head.appendChild(style)
39
+ }
40
+ }
41
+
42
+ /** 注册皮肤 */
43
+ const useSkin = skin => {
44
+ // 注册组件
45
+ Vue.component('skin-' + skin.options.code.toLowerCase(), skin.component)
46
+ // 注册状态
47
+ store.registerModule('app/skins/' + skin.options.code, skin.store)
48
+ // 添加到列表
49
+ store.commit('app/skins/registerSkin', skin.options)
50
+ }
51
+
52
+ export default {
53
+ /** 注册皮肤 */
54
+ registerSkin(skin) {
55
+ skins.push(skin)
56
+ },
57
+ /** 设置接口 */
58
+ configApi(config) {
59
+ // 初始化接口信息
60
+ HttpInit(config)
61
+ },
62
+ /**
63
+ * @description 加载皮肤组件
64
+ */
65
+ use: async ({ config, modules, actions }) => {
66
+ // 设置标题
67
+ document.title = config.system.title
68
+
69
+ // 将lodash添加到Vue的实例属性
70
+ Vue.prototype.$_ = lodash
71
+
72
+ // 日期格式化插件
73
+ Vue.prototype.$dayjs = dayjs
74
+
75
+ // 全局混入
76
+ Mixins.global(Vue)
77
+
78
+ // 加载饿了么框架
79
+ Vue.use(ElementUI)
80
+
81
+ // 复制到粘贴板组件
82
+ Vue.use(VueClipboard)
83
+
84
+ // 加载自定义组件
85
+ Vue.use(Components)
86
+
87
+ // 注册皮肤组件
88
+ Vue.component('nm-skins', Layout)
89
+
90
+ // 注册指令
91
+ Vue.use(Directive)
92
+
93
+ // 全局组件
94
+ let globalComponents = []
95
+ // 自定义工具栏组件
96
+ let customToolbars = []
97
+ // 回调方法
98
+ let callbacks = []
99
+ //页面集合
100
+ let pages = []
101
+
102
+ // 加载模块信息
103
+ modules.forEach(m => {
104
+ // 注入路由信息
105
+ if (m.routes) {
106
+ m.routes.forEach(r => {
107
+ routes.push(r)
108
+ pages.push({
109
+ moduleCode: m.module.code,
110
+ name: r.meta.title || '',
111
+ icon: r.meta.icon || '',
112
+ code: r.name.toLowerCase(),
113
+ frameIn: typeof r.meta.frameIn === 'undefined' ? true : r.meta.frameIn,
114
+ cache: typeof r.meta.cache === 'undefined' ? true : r.meta.cache,
115
+ noPermission: typeof r.meta.noPermission === 'undefined' ? false : r.meta.noPermission,
116
+ path: r.path,
117
+ permissions: r.meta.permissions,
118
+ buttons: r.meta.buttons
119
+ })
120
+ })
121
+ }
122
+
123
+ // 注入状态信息
124
+ if (m.store) {
125
+ storeOptions.modules.module.modules[m.module.code] = m.store
126
+ }
127
+
128
+ // 注入回调方法
129
+ if (m.callback) {
130
+ callbacks.push(m.callback)
131
+ }
132
+
133
+ // 添加全局组件
134
+ if (m.components) {
135
+ m.components.forEach(c => {
136
+ globalComponents.push(c)
137
+
138
+ // 判断是否是登录组件
139
+ if (c.name.startsWith('nm-login-')) {
140
+ loginComponents.push(c.name.replace('nm-login-', ''))
141
+ }
142
+ // 判断是否是登录组件
143
+ if (c.name.startsWith('nm-toolbar-')) {
144
+ customToolbars.push(c.name.replace('nm-toolbar-', ''))
145
+ }
146
+ })
147
+ }
148
+ })
149
+
150
+ // 保存登录页组件
151
+ config.component.login.pageTypeOptions = loginComponents
152
+
153
+ // 系统属性
154
+ let system = {
155
+ modules: modules.map(m => m.module),
156
+ customToolbars: customToolbars,
157
+ globalComponents: globalComponents.map(m => m.name),
158
+ actions
159
+ }
160
+
161
+ // 使用状态
162
+ UseStore()
163
+
164
+ // 使用路由
165
+ UseRouter(store, config)
166
+
167
+ // 注册皮肤
168
+ skins.map(s => {
169
+ useSkin(s)
170
+ })
171
+
172
+ // 加载页面数据
173
+ await store.dispatch('app/config/init', { config, system, pages }, { root: true })
174
+
175
+ // 加载本地令牌
176
+ store.commit('app/token/load', null, { root: true })
177
+
178
+ // 注册全局组件
179
+ if (globalComponents) {
180
+ globalComponents.forEach(com => {
181
+ Vue.component(com.name, com.component)
182
+ })
183
+ }
184
+
185
+ // 创建根实例
186
+ const vm = new Vue({
187
+ router,
188
+ store,
189
+ render: h => h('nm-skins')
190
+ }).$mount('#app')
191
+
192
+ // 处理回调
193
+ if (callbacks) {
194
+ callbacks.forEach(cb => {
195
+ cb({ vm, store, router, Vue })
196
+ })
197
+ }
198
+
199
+ // 附加自定义样式
200
+ appendCustomCss(config)
201
+
202
+ return { router, store, vm }
203
+ }
204
+ }
205
+
206
+ const mixins = Mixins.components
207
+
208
+ // 导出混入组件、状态实例、路由实例
209
+ export { mixins, store, router, regex }
@@ -0,0 +1,39 @@
1
+ <template>
2
+ <div id="app" :class="current.theme">
3
+ <template v-if="inFrame">
4
+ <component v-if="initialized" :is="`skin-${current.name.toLowerCase()}`"></component>
5
+ </template>
6
+ <template v-else>
7
+ <router-view />
8
+ </template>
9
+
10
+ <!--对话框菜单-->
11
+ <nm-dialog v-bind="dialogMenu" :visible.sync="dialogNemuVisible">
12
+ <iframe :src="dialogMenu.url" style="width:100%;height:100%"></iframe>
13
+ </nm-dialog>
14
+ </div>
15
+ </template>
16
+ <script>
17
+ import { mapState, mapActions } from 'vuex'
18
+ export default {
19
+ computed: {
20
+ ...mapState('app/skins', ['initialized', 'current']),
21
+ ...mapState('app/dialog-menu', { dialogMenu: state => state }),
22
+ // 是否在框架中显示
23
+ inFrame() {
24
+ return !this.$route.meta || this.$route.meta.frameIn !== false
25
+ },
26
+ dialogNemuVisible: {
27
+ get() {
28
+ return this.dialogMenu.visible
29
+ },
30
+ set() {
31
+ this.dialogMenuClose()
32
+ }
33
+ }
34
+ },
35
+ methods: {
36
+ ...mapActions('app/dialog-menu', { dialogMenuClose: 'close' })
37
+ }
38
+ }
39
+ </script>
@@ -0,0 +1,5 @@
1
+ // 当前库的一些信息
2
+ export default {
3
+ // 前缀
4
+ prefix: 'Nm'
5
+ }
@@ -0,0 +1,15 @@
1
+ import { mapState } from 'vuex'
2
+ export default {
3
+ computed: {
4
+ ...mapState('app/config', { _buttonPermissionEnabled: s => s.permission.button }),
5
+ ...mapState('app/account', { _buttons: s => s.buttons })
6
+ },
7
+ methods: {
8
+ _hasButton(btn) {
9
+ if (!this._buttonPermissionEnabled) {
10
+ return true
11
+ }
12
+ return !this._buttons.every(c => c.toLowerCase() !== btn.code.toLowerCase())
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,98 @@
1
+ <template>
2
+ <el-checkbox-group
3
+ class="nm-checkbox"
4
+ v-model="value_"
5
+ :size="size || fontSize"
6
+ :disabled="disabled"
7
+ :min="min"
8
+ :max="max"
9
+ :text-color="textColor"
10
+ :fill="fill"
11
+ @change="onChange"
12
+ v-loading="loading"
13
+ >
14
+ <slot :options="options">
15
+ <component :is="_tagName" v-for="item in options" :key="item.value" :label="item.value" :disabled="item.disabled" :border="border"> {{ item.label }}</component>
16
+ </slot>
17
+ </el-checkbox-group>
18
+ </template>
19
+ <script>
20
+ import loading from './loading'
21
+ export default {
22
+ mixins: [loading],
23
+ data() {
24
+ return {
25
+ value_: this.value,
26
+ options: [],
27
+ action: null,
28
+ loading: false
29
+ }
30
+ },
31
+ props: {
32
+ value: {
33
+ type: Array,
34
+ default() {
35
+ return []
36
+ }
37
+ },
38
+ size: String,
39
+ disabled: Boolean,
40
+ min: Number,
41
+ max: Number,
42
+ border: Boolean,
43
+ textColor: String,
44
+ fill: String,
45
+ button: Boolean
46
+ },
47
+ computed: {
48
+ _tagName() {
49
+ return this.button ? 'el-checkbox-button' : 'el-checkbox'
50
+ },
51
+ selection() {
52
+ let list = []
53
+ if (this.value_) {
54
+ this.value_.forEach(item => {
55
+ for (var i = 0; i < this.options.length; i++) {
56
+ const opt = this.options[i]
57
+ if (opt.value === item) {
58
+ list.push(opt)
59
+ break
60
+ }
61
+ }
62
+ })
63
+ }
64
+ return list
65
+ }
66
+ },
67
+ methods: {
68
+ refresh() {
69
+ this.loading = true
70
+ this.action()
71
+ .then(options => {
72
+ this.options = options
73
+ this.loading = false
74
+ })
75
+ .catch(() => {
76
+ this.loading = false
77
+ })
78
+ },
79
+ // 清楚已选项
80
+ clear() {
81
+ this.value_ = this.value
82
+ this.onChange()
83
+ },
84
+ onChange() {
85
+ this.$emit('input', this.value_)
86
+ this.$emit('change', this.value_, this.selection, this.options)
87
+ }
88
+ },
89
+ created() {
90
+ this.refresh()
91
+ },
92
+ watch: {
93
+ value(val) {
94
+ if (val !== this.value_) this.value_ = val
95
+ }
96
+ }
97
+ }
98
+ </script>
@@ -0,0 +1,3 @@
1
+ import visible from './visible'
2
+ //历史遗留文件
3
+ export default visible
@@ -0,0 +1,3 @@
1
+ import visible from './visible'
2
+
3
+ export default visible
@@ -0,0 +1,67 @@
1
+ import dialog from './dialog'
2
+ export default {
3
+ mixins: [dialog],
4
+ data() {
5
+ return {
6
+ // 存储表单数据
7
+ model_: {},
8
+ form: {
9
+ icon: 'edit',
10
+ model: {
11
+ id: ''
12
+ },
13
+ customResetFunction: this.onReset,
14
+ loading: false
15
+ },
16
+ on: {
17
+ success: this.onSuccess,
18
+ open: this.onOpen
19
+ }
20
+ }
21
+ },
22
+ props: {
23
+ id: {
24
+ type: [String, Number],
25
+ required: true
26
+ },
27
+ /** 是否总是刷新数据,即使相同id */
28
+ allRefresh: {
29
+ type: Boolean,
30
+ default: true
31
+ }
32
+ },
33
+ methods: {
34
+ async edit() {
35
+ this.form.loading = true
36
+ if (this.editAction) {
37
+ this.form.model = await this.editAction()
38
+ } else {
39
+ this.form.model = await this.api.edit(this.id)
40
+ }
41
+ this.model_ = this.$_.merge({}, this.form.model)
42
+ this.form.loading = false
43
+
44
+ // 刷新数据后的回调方法
45
+ if (this.afterRefresh) {
46
+ this.afterRefresh()
47
+ }
48
+ },
49
+ onReset() {
50
+ this.form.model = this.$_.merge({}, this.model_)
51
+ },
52
+ onSuccess(data) {
53
+ this.$emit('success', this.form.model, data)
54
+ },
55
+ onOpen() {
56
+ if (!this.id) {
57
+ this._warning('请选择要编辑的数据~')
58
+ this.$refs.form.reset()
59
+ return
60
+ }
61
+
62
+ if (this.allRefresh || this.id !== this.form.model.id) {
63
+ this.edit()
64
+ }
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,33 @@
1
+ export default {
2
+ data() {
3
+ return {
4
+ id_: '',
5
+ form: {
6
+ model: {},
7
+ disabled: true,
8
+ loading: false
9
+ },
10
+ on: {
11
+ open: this.onOpen
12
+ }
13
+ }
14
+ },
15
+ props: {
16
+ id: [String, Number]
17
+ },
18
+ methods: {
19
+ onOpen() {
20
+ if (this.id !== this.id_) {
21
+ this.form.loading = true
22
+ this.action(this.id)
23
+ .then(data => {
24
+ this.form.model = data
25
+ this.form.loading = false
26
+ })
27
+ .catch(() => {
28
+ this.form.loading = false
29
+ })
30
+ }
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,123 @@
1
+ import visible from './visible'
2
+ export default {
3
+ mixins: [visible],
4
+ data() {
5
+ return {
6
+ // 存储表单数据
7
+ model_: {},
8
+ form: {
9
+ icon: '',
10
+ action: null,
11
+ model: {
12
+ id: null
13
+ },
14
+ customResetFunction: null,
15
+ disabled: this.readonly,
16
+ footerCloseButton: true,
17
+ loading: false
18
+ },
19
+ //编辑时,是否总是刷新
20
+ allRefresh: true,
21
+ on: {
22
+ success: this.onSuccess,
23
+ opened: this.onOpened
24
+ },
25
+ //文本标签
26
+ labels: {
27
+ add: '新增',
28
+ edit: '编辑',
29
+ read: '查看'
30
+ }
31
+ }
32
+ },
33
+ props: {
34
+ //id不为空,标识编辑或预览,反之为新增
35
+ id: [String, Number],
36
+ /**是否只读 */
37
+ readonly: Boolean,
38
+ /**总数,用于有排序需求的默认值 */
39
+ total: Number
40
+ },
41
+ computed: {
42
+ //是否添加
43
+ isAdd_() {
44
+ return this.id === null || this.id === '' || typeof this.id === 'undefined'
45
+ },
46
+ //是否编辑
47
+ isEdit_() {
48
+ return !this.isAdd_
49
+ }
50
+ },
51
+ methods: {
52
+ /**设置信息 */
53
+ setInfo() {
54
+ const { form, title, readonly, actions, labels } = this
55
+ //添加
56
+ if (this.isAdd_) {
57
+ form.title = `${labels.add}${title}`
58
+ form.icon = 'add'
59
+ form.customResetFunction = null
60
+ form.action = actions.add
61
+ return
62
+ }
63
+ //编辑
64
+ form.title = `${readonly ? labels.read : labels.edit}${title}`
65
+ form.icon = readonly ? 'preview' : 'edit'
66
+ form.customResetFunction = this.reset
67
+ form.action = actions.update
68
+ },
69
+ reset() {
70
+ this.form.model = this.$_.merge({}, this.model_)
71
+ },
72
+ //获取编辑信息
73
+ edit() {
74
+ const { id, form, actions } = this
75
+ form.loading = true
76
+ actions
77
+ .edit(id)
78
+ .then(data => {
79
+ this.model_ = this.$_.merge({}, data)
80
+ //重置
81
+ this.$refs.form.reset()
82
+
83
+ //打开后执行的方法
84
+ if (this.afterEdit) {
85
+ this.afterEdit()
86
+ }
87
+ form.loading = false
88
+ })
89
+ .catch(() => {
90
+ form.loading = false
91
+ })
92
+ },
93
+ onSuccess(data) {
94
+ this.$emit('success', this.form.model, data, this.isAdd_)
95
+ },
96
+ onOpened() {
97
+ //设置图标
98
+ this.setInfo()
99
+
100
+ if (this.isEdit_) {
101
+ //编辑时是否总是刷新或者id不同时也刷新
102
+ if (this.allRefresh || this.id !== this.form.model.id) {
103
+ this.edit()
104
+ }
105
+ } else {
106
+ //如果总是刷新则要重置
107
+ if (this.allRefresh) {
108
+ this.$refs.form.reset()
109
+ }
110
+ }
111
+
112
+ //打开后执行的方法
113
+ if (this.afterOpen) {
114
+ this.afterOpen()
115
+ }
116
+ }
117
+ },
118
+ watch: {
119
+ readonly(val) {
120
+ this.form.disabled = val
121
+ }
122
+ }
123
+ }
@@ -0,0 +1,24 @@
1
+ export default {
2
+ data() {
3
+ return {
4
+ value_: this.value
5
+ }
6
+ },
7
+ props: {
8
+ value: {
9
+ type: String
10
+ }
11
+ },
12
+ methods: {
13
+ onChange(val) {
14
+ this.value_ = val
15
+ this.$emit('input', this.value_)
16
+ this.$emit('change', this.value_)
17
+ }
18
+ },
19
+ watch: {
20
+ value(val) {
21
+ this.value_ = val
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,36 @@
1
+ export default {
2
+ data() {
3
+ return {
4
+ //当前选中项
5
+ curr: { id: '' },
6
+ dialog: {
7
+ save: false
8
+ },
9
+ //只读
10
+ readonly: false,
11
+ //总数量
12
+ total: 0
13
+ }
14
+ },
15
+ methods: {
16
+ refresh() {
17
+ this.$refs.list.refresh()
18
+ },
19
+ add(total) {
20
+ this.curr.id = ''
21
+ this.total = total
22
+ this.readonly = false
23
+ this.dialog.save = true
24
+ },
25
+ edit(row) {
26
+ this.curr.id = row.id
27
+ this.readonly = false
28
+ this.dialog.save = true
29
+ },
30
+ preview(row) {
31
+ this.curr.id = row.id
32
+ this.readonly = true
33
+ this.dialog.save = true
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,20 @@
1
+ import { mapState } from 'vuex'
2
+ export default {
3
+ computed: {
4
+ ...mapState('app/loading', {
5
+ loadingText: 'text',
6
+ loadingBackground: 'background',
7
+ loadingSpinner: 'spinner'
8
+ })
9
+ },
10
+ methods: {
11
+ _loading(text) {
12
+ return this.$loading({
13
+ lock: true,
14
+ text: text || this.loadingText,
15
+ spinner: this.loadingSpinner,
16
+ background: this.loadingBackground
17
+ })
18
+ }
19
+ }
20
+ }