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,239 @@
1
+ <template>
2
+ <section :class="class_">
3
+ <transition name="fade">
4
+ <section class="nm-drawer-modal" @click="onModalClick" v-if="modal" v-show="visible"></section>
5
+ </transition>
6
+ <transition :name="`move-${placement}`">
7
+ <section
8
+ ref="dialog"
9
+ class="nm-drawer-dialog"
10
+ :style="{ width: wrapperWidth }"
11
+ v-show="visible"
12
+ v-loading="loading"
13
+ :element-loading-text="loadingText"
14
+ :element-loading-background="loadingBackground"
15
+ :element-loading-spinner="loadingSpinner"
16
+ >
17
+ <!--头部-->
18
+ <header v-if="header" class="nm-drawer-header">
19
+ <slot name="header">
20
+ <div v-if="icon" class="nm-drawer-header-icon">
21
+ <nm-icon v-if="icon" :name="icon" />
22
+ </div>
23
+ <!--标题-->
24
+ <div class="nm-drawer-header-title">{{ title }}</div>
25
+ <!--工具栏-->
26
+ <div class="nm-drawer-header-toolbar">
27
+ <!--工具栏插槽-->
28
+ <slot name="toolbar" />
29
+
30
+ <!--全屏按钮-->
31
+ <nm-button v-if="fullscreen" :icon="fullscreen_ ? 'min' : 'max'" @click="triggerFullscreen" />
32
+ <!--关闭按钮-->
33
+ <nm-button icon="close" @click="close" />
34
+ </div>
35
+ </slot>
36
+ </header>
37
+ <section class="nm-drawer-body">
38
+ <section class="nm-drawer-body-wrapper">
39
+ <nm-scrollbar v-if="!noScrollbar" ref="scrollbar" :horizontal="horizontal">
40
+ <slot />
41
+ </nm-scrollbar>
42
+ <slot v-else />
43
+ </section>
44
+ </section>
45
+ <footer v-if="footer" class="nm-drawer-footer">
46
+ <slot name="footer"></slot>
47
+ </footer>
48
+
49
+ <!--拖拽按钮-->
50
+ <div v-if="draggable" class="nm-drawer-drag" :class="{ 'nm-drawer-drag-left': placement === 'left' }" @mousedown="onTriggerMousedown">
51
+ <slot name="trigger">
52
+ <div class="nm-drawer-drag-move-trigger">
53
+ <div class="nm-drawer-drag-move-trigger-point">
54
+ <i></i>
55
+ <i></i>
56
+ <i></i>
57
+ <i></i>
58
+ <i></i>
59
+ </div>
60
+ </div>
61
+ </slot>
62
+ </div>
63
+ </section>
64
+ </transition>
65
+ </section>
66
+ </template>
67
+ <script>
68
+ import { mapState } from 'vuex'
69
+ import { oneOf } from '../../utils/assist'
70
+ import { on, off } from '../../utils/dom'
71
+ export default {
72
+ name: 'Drawer',
73
+ data() {
74
+ return {
75
+ canMove: false,
76
+ fullscreen_: false,
77
+ wrapperWidth: this.width,
78
+ minWidth: 226
79
+ }
80
+ },
81
+ props: {
82
+ /** 是否显示 */
83
+ visible: Boolean,
84
+ /** 是否显示头部 */
85
+ header: Boolean,
86
+ /** 是否显示底部 */
87
+ footer: Boolean,
88
+ /** 标题 */
89
+ title: String,
90
+ /** 图标 */
91
+ icon: String,
92
+ /** 位置 */
93
+ placement: {
94
+ type: String,
95
+ default: 'right',
96
+ validator(value) {
97
+ return oneOf(value, ['left', 'right'])
98
+ }
99
+ },
100
+ /** 宽度 */
101
+ width: {
102
+ type: String,
103
+ default: '30%'
104
+ },
105
+ /** 是否显示水平滚动条 */
106
+ horizontal: Boolean,
107
+ /** loading */
108
+ loading: Boolean,
109
+ /** 是否附加到Body */
110
+ appendToBody: Boolean,
111
+ /** 是否显示模态框 */
112
+ modal: {
113
+ type: Boolean,
114
+ default: true
115
+ },
116
+ /** 是否点击模态框关闭抽屉 */
117
+ modalClickClose: {
118
+ type: Boolean,
119
+ default: true
120
+ },
121
+ /** 自定义class */
122
+ customClass: String,
123
+ /** 是否显示全屏按钮 */
124
+ fullscreen: {
125
+ type: Boolean,
126
+ default: true
127
+ },
128
+ /** 没有内边距 */
129
+ noPadding: Boolean,
130
+ /** 可拖拽 */
131
+ draggable: {
132
+ type: Boolean,
133
+ default: false
134
+ },
135
+ /** 不显示滚动条 */
136
+ noScrollbar: Boolean
137
+ },
138
+ computed: {
139
+ ...mapState('app/loading', { loadingText: 'text', loadingBackground: 'background', loadingSpinner: 'spinner' }),
140
+ class_() {
141
+ return ['nm-drawer', this.placement, this.fullscreen_ ? 'fullscreen' : '', this.draggable ? 'draggable' : '', this.customClass, this.noPadding ? 'no-padding' : '', this.fontSize]
142
+ }
143
+ },
144
+ methods: {
145
+ append() {
146
+ if (this.appendToBody) {
147
+ // 附加到body下面
148
+ document.body.appendChild(this.$el)
149
+ }
150
+
151
+ window.addEventListener('resize', this.resize)
152
+ },
153
+ close() {
154
+ this.fullscreen_ = false
155
+ this.$emit('update:visible', false)
156
+ },
157
+ resize() {
158
+ this.$refs.scrollbar.update()
159
+ },
160
+ /** 开启全屏 */
161
+ openFullscreen() {
162
+ this.fullscreen_ = true
163
+ // 全屏事件
164
+ this.$emit('fullscreen-change', this.fullscreen_)
165
+ },
166
+ /** 关闭全屏 */
167
+ closeFullscreen() {
168
+ this.fullscreen_ = false
169
+ // 全屏事件
170
+ this.$emit('fullscreen-change', this.fullscreen_)
171
+ },
172
+ /** 全屏事件 */
173
+ triggerFullscreen() {
174
+ this.fullscreen_ ? this.closeFullscreen() : this.openFullscreen()
175
+ },
176
+ onModalClick() {
177
+ if (this.modal && this.modalClickClose) {
178
+ this.close()
179
+ }
180
+ },
181
+ /** 拖拽按钮鼠标按下事件 */
182
+ onTriggerMousedown() {
183
+ if (!this.draggable) return
184
+ this.canMove = true
185
+ // 防止鼠标选中抽屉中文字,造成拖动trigger触发浏览器原生拖动行为
186
+ window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty()
187
+ on(document, 'mousemove', this.onMousemove)
188
+ on(document, 'mouseup', this.onMouseup)
189
+ },
190
+ onMousemove(event) {
191
+ if (!this.canMove || !this.draggable) return
192
+ const { width, x } = this.$el.getBoundingClientRect()
193
+ let wrapperWidth
194
+ if (this.placement === 'right' && event.pageX - x > 20) {
195
+ wrapperWidth = width + x - event.pageX
196
+ } else if (this.placement === 'left' && event.pageX - x < width - 20) {
197
+ wrapperWidth = event.pageX - x
198
+ }
199
+ if (wrapperWidth > this.minWidth) {
200
+ this.wrapperWidth = wrapperWidth + 'px'
201
+ }
202
+ },
203
+ onMouseup() {
204
+ if (!this.draggable) return
205
+ this.canMove = false
206
+ off(document, 'mousemove', this.onMousemove)
207
+ off(document, 'mouseup', this.onMouseup)
208
+ }
209
+ },
210
+ mounted() {
211
+ this.append()
212
+ },
213
+ destroyed() {
214
+ off(document, 'mousemove', this.onMousemove)
215
+ off(document, 'mouseup', this.onMouseup)
216
+ if (this.$el && this.$el.parentNode) {
217
+ this.$el.parentNode.removeChild(this.$el)
218
+ window.removeEventListener('resize', this.resize)
219
+ }
220
+ },
221
+ watch: {
222
+ visible(val) {
223
+ if (val) {
224
+ this.$emit('open')
225
+
226
+ this.$nextTick(() => {
227
+ this.$emit('opened')
228
+ })
229
+ } else {
230
+ this.$emit('close')
231
+
232
+ this.$nextTick(() => {
233
+ this.$emit('closed')
234
+ })
235
+ }
236
+ }
237
+ }
238
+ }
239
+ </script>
@@ -0,0 +1,3 @@
1
+ <template>
2
+ <el-select v-model="form.model.sex"> </el-select>
3
+ </template>
@@ -0,0 +1,58 @@
1
+ <template>
2
+ <section :class="['nm-flex', direction, fixMode]" :style="{ height, width }">
3
+ <template v-if="direction === 'column'">
4
+ <section class="nm-flex_top" :style="{ height: fixMode === 'top' ? fix : '' }">
5
+ <slot name="top" />
6
+ </section>
7
+ <section class="nm-flex_bottom" :style="{ height: fixMode === 'bottom' ? fix : '', paddingTop: gutter ? gutter + 'px' : 0 }">
8
+ <slot name="bottom" />
9
+ </section>
10
+ </template>
11
+ <template v-else>
12
+ <section class="nm-flex_left" :style="{ width: fixMode === 'left' ? fix : '' }">
13
+ <slot name="left" />
14
+ </section>
15
+ <section class="nm-flex_right" :style="{ width: fixMode === 'right' ? fix : '', paddingLeft: gutter ? gutter + 'px' : 0 }">
16
+ <slot name="right" />
17
+ </section>
18
+ </template>
19
+ </section>
20
+ </template>
21
+ <script>
22
+ export default {
23
+ name: 'Flex',
24
+ props: {
25
+ // 布局方向,对应flex-direction属性
26
+ direction: {
27
+ type: String,
28
+ validator(value) {
29
+ return value === 'column' || value === 'row'
30
+ },
31
+ default: 'column'
32
+ },
33
+ // 固定宽度或高度
34
+ fix: {
35
+ type: String,
36
+ required: true
37
+ },
38
+ // 固定模式,top、bottom、left、right
39
+ fixMode: {
40
+ type: String,
41
+ validator(value) {
42
+ return ['top', 'bottom', 'left', 'right'].includes(value)
43
+ },
44
+ default: 'top'
45
+ },
46
+ height: {
47
+ type: String,
48
+ default: '100%'
49
+ },
50
+ width: {
51
+ type: String,
52
+ default: '100%'
53
+ },
54
+ /** 间隔 */
55
+ gutter: Number
56
+ }
57
+ }
58
+ </script>
@@ -0,0 +1,153 @@
1
+ <template>
2
+ <el-form
3
+ class="nm-form"
4
+ ref="form"
5
+ :model="model"
6
+ :rules="rules"
7
+ :label-width="labelWidth"
8
+ :label-position="labelPosition"
9
+ :size="fontSize"
10
+ :inline="inline"
11
+ :disabled="disabled"
12
+ v-loading="showLoading"
13
+ :element-loading-text="loadingText"
14
+ :element-loading-background="loadingBackground"
15
+ :element-loading-spinner="loadingSpinner"
16
+ @validate="onValidate"
17
+ >
18
+ <slot />
19
+ </el-form>
20
+ </template>
21
+ <script>
22
+ import loading from '../../mixins/components/loading'
23
+ export default {
24
+ name: 'Form',
25
+ mixins: [loading],
26
+ data() {
27
+ return {
28
+ loading_: false
29
+ }
30
+ },
31
+ props: {
32
+ /** 表单对象 */
33
+ model: {
34
+ type: Object,
35
+ required: true
36
+ },
37
+ /** 验证规则 */
38
+ rules: Object,
39
+ /** 提交请求 */
40
+ action: Function,
41
+ /** 行内表单模式 */
42
+ inline: Boolean,
43
+ /** 是否显示成功提示消息 */
44
+ successMsg: {
45
+ type: Boolean,
46
+ default: true
47
+ },
48
+ /** 成功提示消息文本 */
49
+ successMsgText: {
50
+ type: String,
51
+ default: '保存成功'
52
+ },
53
+ /** 标签的宽度 */
54
+ labelWidth: {
55
+ type: String,
56
+ default: '100px'
57
+ },
58
+ /** 表单域标签的位置,如果值为 left 或者 right 时,则需要设置 label-width */
59
+ labelPosition: {
60
+ type: String,
61
+ default: 'right'
62
+ },
63
+ // 自定义验证
64
+ customValidate: Function,
65
+ /** 禁用表单 */
66
+ disabled: Boolean,
67
+ /** 显示加载动画 */
68
+ loading: Boolean,
69
+ /** 不显示加载动画 */
70
+ noLoading: Boolean,
71
+ /** 自定义重置操作 */
72
+ customResetFunction: Function
73
+ },
74
+ computed: {
75
+ showLoading() {
76
+ return !this.noLoading && (this.loading_ || this.loading)
77
+ }
78
+ },
79
+ methods: {
80
+ /** 提交 */
81
+ submit() {
82
+ this.validate(() => {
83
+ this.openLoading()
84
+ this.action(this.model)
85
+ .then(data => {
86
+ if (this.successMsg === true) {
87
+ this._success(this.successMsgText)
88
+ }
89
+ this.$emit('success', data)
90
+ })
91
+ .catch(() => {
92
+ this.$emit('error')
93
+ })
94
+ .finally(() => {
95
+ this.closeLoading()
96
+ })
97
+ })
98
+ },
99
+ /** 表单验证 */
100
+ validate(callback) {
101
+ this.$refs.form.validate(async valid => {
102
+ // 自定义验证
103
+ if (valid && (!this.customValidate || this.customValidate() === true)) {
104
+ callback()
105
+ } else {
106
+ // 验证失败
107
+ this.$emit('validate-error')
108
+ }
109
+ })
110
+ },
111
+ /** 重置 */
112
+ reset() {
113
+ if (this.customResetFunction) {
114
+ this.customResetFunction()
115
+ } else {
116
+ this.$refs.form.resetFields()
117
+ this.resetChildren(this.$refs.form)
118
+ }
119
+ this.$emit('reset')
120
+ },
121
+ /** 重置子组件 */
122
+ resetChildren(vnode) {
123
+ if (vnode.$children && vnode.$children.length > 0) {
124
+ vnode.$children.forEach(item => {
125
+ if (item && item.reset && typeof item.reset === 'function') {
126
+ item.reset()
127
+ }
128
+ this.resetChildren(item)
129
+ })
130
+ }
131
+ },
132
+ /** 清除验证结果 */
133
+ clearValidate(props) {
134
+ this.$refs.form.clearValidate(props)
135
+ },
136
+ /** 打开加载中 */
137
+ openLoading() {
138
+ if (!this.noLoading) {
139
+ this.loading_ = true
140
+ }
141
+ },
142
+ /** 关闭加载中 */
143
+ closeLoading() {
144
+ if (!this.noLoading) {
145
+ this.loading_ = false
146
+ }
147
+ },
148
+ onValidate(prop, valid, msg) {
149
+ this.$emit('validate', prop, valid, msg)
150
+ }
151
+ }
152
+ }
153
+ </script>
@@ -0,0 +1,245 @@
1
+ <template>
2
+ <nm-dialog
3
+ ref="dialog"
4
+ class="nm-form-dialog"
5
+ :title="title"
6
+ :icon="icon"
7
+ :width="width"
8
+ :height="height"
9
+ :footer="footer"
10
+ :fullscreen="fullscreen"
11
+ :close-on-click-modal="closeOnClickModal"
12
+ :loading="showLoading"
13
+ :footer-close-button="footerCloseButton"
14
+ :draggable="draggable"
15
+ :drag-out-page="dragOutPage"
16
+ :drag-min-width="dragMinWidth"
17
+ :visible.sync="visible_"
18
+ v-on="dialogOn"
19
+ >
20
+ <nm-form
21
+ ref="form"
22
+ no-loading
23
+ :model="model"
24
+ :rules="rules"
25
+ :action="action"
26
+ :label-width="labelWidth"
27
+ :label-position="labelPosition"
28
+ :customValidate="validate"
29
+ :success-msg="successMsg"
30
+ :success-msg-text="successMsgText"
31
+ :disabled="disabled"
32
+ :inline="inline"
33
+ :customResetFunction="customResetFunction"
34
+ v-on="formOn"
35
+ @validate="onValidate"
36
+ >
37
+ <slot />
38
+ </nm-form>
39
+
40
+ <template v-slot:footer-left>
41
+ <slot name="footer-left" />
42
+ </template>
43
+
44
+ <template v-slot:footer>
45
+ <slot name="footer-buttons" />
46
+ <slot name="footer">
47
+ <el-button v-if="btnOk && !disabled" type="success" @click="submit" :size="fontSize">{{ btnOkText }}</el-button>
48
+ <el-button v-if="btnReset && !disabled" type="warning" @click="reset" :size="fontSize">重置</el-button>
49
+ </slot>
50
+ </template>
51
+ </nm-dialog>
52
+ </template>
53
+ <script>
54
+ import visible from '../../mixins/components/visible'
55
+ export default {
56
+ name: 'FormDialog',
57
+ mixins: [visible],
58
+ data() {
59
+ return {
60
+ loading_: false,
61
+ formOn: {
62
+ success: this.onSuccess,
63
+ error: this.onError,
64
+ reset: this.onReset,
65
+ 'validate-error': this.onValidateError
66
+ },
67
+ dialogOn: {
68
+ open: this.onOpen,
69
+ opened: this.onOpened,
70
+ close: this.onClose,
71
+ closed: this.onClosed
72
+ }
73
+ }
74
+ },
75
+ props: {
76
+ /** 标题 */
77
+ title: String,
78
+ /** 图标 */
79
+ icon: String,
80
+ /** 宽度 */
81
+ width: String,
82
+ /** Dialog 的高度 */
83
+ height: [Number, String],
84
+ /** 显示尾部 */
85
+ footer: {
86
+ type: Boolean,
87
+ default: true
88
+ },
89
+ /** 是否可以通过点击 modal 关闭 Dialog */
90
+ closeOnClickModal: {
91
+ type: Boolean,
92
+ default: null
93
+ },
94
+ /** 是否显示全屏按钮 */
95
+ fullscreen: Boolean,
96
+ /** 表单模型 */
97
+ model: {
98
+ type: Object,
99
+ required: true
100
+ },
101
+ /** 验证规则 */
102
+ rules: Object,
103
+ /** 提交请求 */
104
+ action: Function,
105
+ /** 行内表单 */
106
+ inline: {
107
+ type: Boolean,
108
+ default: false
109
+ },
110
+ /** 标签的宽度 */
111
+ labelWidth: String,
112
+ /** 表单域标签的位置,如果值为 left 或者 right 时,则需要设置 label-width */
113
+ labelPosition: String,
114
+ // 自定义验证
115
+ validate: Function,
116
+ /** 是否显示成功提示消息 */
117
+ successMsg: {
118
+ type: Boolean,
119
+ default: true
120
+ },
121
+ /** 成功提示消息文本 */
122
+ successMsgText: {
123
+ type: String,
124
+ default: '保存成功'
125
+ },
126
+ /** Ok按钮 */
127
+ btnOk: {
128
+ type: Boolean,
129
+ default: true
130
+ },
131
+ /** Ok按钮文本 */
132
+ btnOkText: {
133
+ type: String,
134
+ default: '保存'
135
+ },
136
+ /** reset按钮 */
137
+ btnReset: {
138
+ type: Boolean,
139
+ default: true
140
+ },
141
+ /** 自定义重置操作 */
142
+ customResetFunction: Function,
143
+ // 保存成功后是否关闭对话框
144
+ closeWhenSuccess: {
145
+ type: Boolean,
146
+ default: true
147
+ },
148
+ /** 禁用表单 */
149
+ disabled: Boolean,
150
+ /** 显示加载动画 */
151
+ loading: Boolean,
152
+ /** 不显示加载动画 */
153
+ noLoading: {
154
+ type: Boolean,
155
+ default: false
156
+ },
157
+ /** 打开时是否清楚验证信息 */
158
+ clearValidateOnOpen: {
159
+ type: Boolean,
160
+ default: true
161
+ },
162
+ /** 是否显示底部关闭按钮 */
163
+ footerCloseButton: Boolean,
164
+ /** 可拖拽的 */
165
+ draggable: {
166
+ type: Boolean,
167
+ default: null
168
+ },
169
+ /** 是否可拖出页面 */
170
+ dragOutPage: Boolean,
171
+ /** 拖拽出页面后保留的最小宽度 */
172
+ dragMinWidth: Number
173
+ },
174
+ computed: {
175
+ showLoading() {
176
+ return !this.noLoading && (this.loading_ || this.loading)
177
+ }
178
+ },
179
+ methods: {
180
+ /** 提交 */
181
+ submit() {
182
+ this.loading_ = true
183
+ this.$refs.form.submit()
184
+ },
185
+ /** 重置 */
186
+ reset() {
187
+ this.$nextTick(() => {
188
+ this.$refs.form.reset()
189
+ })
190
+ },
191
+ /** 清除验证信息 */
192
+ clearValidate() {
193
+ this.$refs.form.clearValidate()
194
+ },
195
+ /** 打开loading */
196
+ openLoading() {
197
+ this.loading_ = true
198
+ },
199
+ /** 关闭loading */
200
+ closeLoading() {
201
+ this.loading = false
202
+ },
203
+ // 成功
204
+ onSuccess(data) {
205
+ // 关闭对话框
206
+ if (this.closeWhenSuccess) {
207
+ setTimeout(this.hide, 800)
208
+ }
209
+ this.loading_ = false
210
+ this.$emit('success', data)
211
+ },
212
+ onReset() {
213
+ this.$emit('reset')
214
+ },
215
+ onError() {
216
+ this.loading_ = false
217
+ this.$emit('error')
218
+ },
219
+ onValidateError() {
220
+ this.loading_ = false
221
+ this.$emit('validate-error')
222
+ },
223
+ onOpen() {
224
+ if (this.clearValidateOnOpen) {
225
+ this.$nextTick(() => {
226
+ this.$refs.form.clearValidate()
227
+ })
228
+ }
229
+ this.$emit('open')
230
+ },
231
+ onOpened() {
232
+ this.$emit('opened')
233
+ },
234
+ onClose() {
235
+ this.$emit('close')
236
+ },
237
+ onClosed() {
238
+ this.$emit('closed')
239
+ },
240
+ onValidate(prop, valid, msg) {
241
+ this.$emit('validate', prop, valid, msg)
242
+ }
243
+ }
244
+ }
245
+ </script>