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,171 @@
1
+ <template>
2
+ <div class="nm-login-neon">
3
+ <div class="login-header">
4
+ <div class="login-logo">
5
+ <img :src="logoUrl" />
6
+ </div>
7
+ <div class="login-title">{{ title }}</div>
8
+ </div>
9
+ <div class="login-form">
10
+ <el-form ref="form" :model="form" :rules="rules">
11
+ <el-form-item v-if="loginOptions.accountTypes" prop="accountType">
12
+ <el-select v-model="form.accountType" placeholder="账户类型">
13
+ <template v-slot:prefix>
14
+ <nm-icon name="project" />
15
+ </template>
16
+ <el-option v-for="item in loginOptions.accountTypes" :key="item.value" :label="item.label" :value="item.value" />
17
+ </el-select>
18
+ </el-form-item>
19
+ <el-form-item prop="userName">
20
+ <el-input v-model="form.userName" placeholder="用户名">
21
+ <template v-slot:prefix>
22
+ <nm-icon name="user" />
23
+ </template>
24
+ </el-input>
25
+ </el-form-item>
26
+ <el-form-item prop="password">
27
+ <el-input type="password" v-model="form.password" autocomplete="off" placeholder="密码">
28
+ <template v-slot:prefix>
29
+ <nm-icon name="password" />
30
+ </template>
31
+ </el-input>
32
+ </el-form-item>
33
+ <div v-if="loginOptions.verifyCode" class="verifycode">
34
+ <div class="verifycode-input">
35
+ <el-form-item prop="verifyCode.code">
36
+ <el-input v-model="form.verifyCode.code" autocomplete="off" placeholder="验证码">
37
+ <template v-slot:prefix>
38
+ <nm-icon name="verifycode"></nm-icon>
39
+ </template>
40
+ </el-input>
41
+ </el-form-item>
42
+ </div>
43
+ <div class="verifycode-img">
44
+ <img title="点击刷新" :src="verifyCodeUrl" @click="refreshVierifyCode" />
45
+ </div>
46
+ </div>
47
+ <el-form-item style="text-align:right;">
48
+ <nm-button icon="login" :loading="loading" class="login-btn" @click="tryLogin">登录</nm-button>
49
+ </el-form-item>
50
+ </el-form>
51
+ </div>
52
+ <div class="copyright">{{ copyright }}</div>
53
+ </div>
54
+ </template>
55
+ <script>
56
+ import { mapState, mapGetters, mapActions } from 'vuex'
57
+ export default {
58
+ name: 'LoginNeon',
59
+ data() {
60
+ const _this = this
61
+ return {
62
+ verifyCodeUrl: '',
63
+ form: {
64
+ userName: '',
65
+ password: '',
66
+ accountType: 0,
67
+ verifyCode: {
68
+ id: '',
69
+ code: ''
70
+ }
71
+ },
72
+ rules: {
73
+ userName: [
74
+ {
75
+ required: true,
76
+ message: '请输入用户名',
77
+ trigger: 'change'
78
+ }
79
+ ],
80
+ password: [
81
+ {
82
+ required: true,
83
+ message: '请输入密码',
84
+ trigger: 'change'
85
+ }
86
+ ],
87
+ code: [
88
+ {
89
+ validator(rule, value, callback) {
90
+ if (_this.loginVerifyCode && value === '') {
91
+ callback(new Error('请输入验证码'))
92
+ } else {
93
+ callback()
94
+ }
95
+ },
96
+ trigger: 'blur'
97
+ }
98
+ ]
99
+ },
100
+ loading: false
101
+ }
102
+ },
103
+ computed: {
104
+ ...mapGetters('app/config', ['logoUrl']),
105
+ ...mapState('app/config', {
106
+ title: s => s.system.title,
107
+ copyright: s => s.system.copyright,
108
+ loginOptions: s => s.component.login
109
+ }),
110
+ ...mapState('app/system', {
111
+ getVerifyCode: s => s.actions.getVerifyCode
112
+ })
113
+ },
114
+ mounted() {
115
+ if (this.loginOptions.verifyCode) {
116
+ this.refreshVierifyCode()
117
+ }
118
+ document.addEventListener('keydown', e => {
119
+ if (e.keyCode === 13) {
120
+ this.tryLogin()
121
+ }
122
+ })
123
+ },
124
+ methods: {
125
+ ...mapActions('app/system', ['login']),
126
+ // 刷新验证码
127
+ async refreshVierifyCode() {
128
+ let data = await this.getVerifyCode()
129
+ this.verifyCodeUrl = data.base64String
130
+ this.form.verifyCode.id = data.id
131
+ },
132
+ // 登录
133
+ tryLogin() {
134
+ this.$refs.form.validate(async valid => {
135
+ if (valid) {
136
+ this.loading = true
137
+
138
+ this.login(this.form)
139
+ .then(data => {
140
+ // 初始化令牌
141
+ this.$store.commit('app/token/init', data)
142
+
143
+ // 跳转
144
+ let redirect = this.$route.query.redirect
145
+ if (!redirect || redirect === '') {
146
+ redirect = '/'
147
+ }
148
+
149
+ this.$router.push({
150
+ path: redirect
151
+ })
152
+ })
153
+ .finally(() => {
154
+ this.loading = false
155
+ })
156
+ } else {
157
+ return false
158
+ }
159
+ })
160
+ }
161
+ },
162
+ watch: {
163
+ loginOptions: {
164
+ immediate: true,
165
+ handler(val) {
166
+ this.form.accountType = val.defaultAccountType
167
+ }
168
+ }
169
+ }
170
+ }
171
+ </script>
@@ -0,0 +1,245 @@
1
+ <template>
2
+ <div ref="map" class="nm-map" :style="{ width, height }"></div>
3
+ </template>
4
+ <script>
5
+ /**默认坐标点 */
6
+ const defaultCenter = {
7
+ lng: 116.404,
8
+ lat: 39.915
9
+ }
10
+ export default {
11
+ name: 'Map',
12
+ data() {
13
+ return {
14
+ map: null
15
+ }
16
+ },
17
+ props: {
18
+ ak: String,
19
+ /**宽度 */
20
+ width: {
21
+ type: String,
22
+ default: '100%'
23
+ },
24
+ /**高度 */
25
+ height: {
26
+ type: String,
27
+ default: '100%'
28
+ },
29
+ /**中心坐标点 */
30
+ center: {
31
+ type: [Object, String],
32
+ default() {
33
+ return {
34
+ lng: 116.404,
35
+ lat: 39.915
36
+ }
37
+ }
38
+ },
39
+ /**缩放 */
40
+ zoom: {
41
+ type: Number,
42
+ default: 15
43
+ },
44
+ /**是否开启底图可点功能,默认关闭 */
45
+ mapClick: Boolean,
46
+ /**启用地图拖拽,默认启用 */
47
+ dragging: {
48
+ type: Boolean,
49
+ default: true
50
+ },
51
+ /**启用滚轮放大缩小,默认启用 */
52
+ scrollWheelZoom: {
53
+ type: Boolean,
54
+ default: true
55
+ },
56
+ /**启用双击放大,默认启用 */
57
+ doubleClickZoom: {
58
+ type: Boolean,
59
+ default: true
60
+ },
61
+ /**启用键盘操作,默认禁用。键盘的上、下、左、右键可连续移动地图。同时按下其中两个键可使地图进行对角移动。PgUp、PgDn、Home和End键会使地图平移其1/2的大小。+、-键会使地图放大或缩小一级 */
62
+ keyboard: {
63
+ type: Boolean,
64
+ default: false
65
+ },
66
+ /**启用地图惯性拖拽,默认禁用 */
67
+ inertialDragging: {
68
+ type: Boolean,
69
+ default: false
70
+ },
71
+ /**启用连续缩放效果,默认禁用 */
72
+ continuousZoom: {
73
+ type: Boolean,
74
+ default: false
75
+ },
76
+ /**启用双指操作缩放,默认启用 */
77
+ pinchToZoom: {
78
+ type: Boolean,
79
+ default: true
80
+ },
81
+ /**启用自动适应容器尺寸变化,默认启用 */
82
+ autoResize: {
83
+ type: Boolean,
84
+ default: true
85
+ },
86
+ /**设置地图默认的鼠标指针样式。参数cursor应符合CSS的cursor属性规范 */
87
+ defaultCursor: String,
88
+ /**设置拖拽地图时的鼠标指针样式。参数cursor应符合CSS的cursor属性规范 */
89
+ draggingCursor: String,
90
+ /**设置地图允许的最小级别。取值不得小于地图类型所允许的最小级别 */
91
+ minZoom: Number,
92
+ /**设置地图允许的最大级别。取值不得大于地图类型所允许的最大级别 */
93
+ maxZoom: Number
94
+ },
95
+ methods: {
96
+ /**
97
+ * @description 创建脚本
98
+ */
99
+ createScript() {
100
+ const ak = this.ak || this.$map.ak
101
+ return new Promise(function(resolve) {
102
+ if (window.BMap) {
103
+ resolve(BMap)
104
+ } else {
105
+ window._mapInit = function() {
106
+ resolve(BMap)
107
+ }
108
+ let script = document.createElement('script')
109
+ script.type = 'text/javascript'
110
+ script.src = '//api.map.baidu.com/api?v=3.0&ak=' + ak + '&callback=_mapInit'
111
+ document.head.appendChild(script)
112
+ }
113
+ })
114
+ },
115
+ /**
116
+ * @description 初始化
117
+ */
118
+ init() {
119
+ this.map = new BMap.Map(this.$refs.map, { enableMapClick: this.mapClick })
120
+ this.setOptions()
121
+ this.$emit('init', this.map)
122
+ },
123
+ /**初始设置 */
124
+ setOptions() {
125
+ this.centerAndZoom()
126
+
127
+ this.setDefaultCursor()
128
+ this.setDraggingCursor()
129
+ this.setMinZoom()
130
+ this.setMaxZoom()
131
+
132
+ this.triggerDragging()
133
+ this.triggerScrollWheelZoom()
134
+ this.triggerDoubleClickZoom()
135
+ this.triggerKeyboard()
136
+ this.triggerInertialDragging()
137
+ this.triggerContinuousZoom()
138
+ this.triggerPinchToZoom()
139
+ this.triggerAutoResize()
140
+ },
141
+ centerAndZoom() {
142
+ let center = this.center
143
+ if (!center) {
144
+ center = Object.assign({}, defaultCenter)
145
+ }
146
+ if (typeof center === 'object') {
147
+ const point = new BMap.Point(center.lng, center.lat)
148
+ this.map.centerAndZoom(point, this.zoom)
149
+ } else {
150
+ this.map.centerAndZoom(center, this.zoom)
151
+ }
152
+ },
153
+ setZoom() {
154
+ this.map.setZoom(this.zoom)
155
+ },
156
+ setDefaultCursor() {
157
+ this.defaultCursor && this.map.setDefaultCursor(this.defaultCursor)
158
+ },
159
+ setDraggingCursor() {
160
+ this.draggingCursor && this.map.setDraggingCursor(this.draggingCursor)
161
+ },
162
+ setMinZoom() {
163
+ this.minZoom && this.map.setMinZoom(this.minZoom)
164
+ },
165
+ setMaxZoom() {
166
+ this.maxZoom && this.map.setMaxZoom(this.maxZoom)
167
+ },
168
+ triggerDragging() {
169
+ this.dragging ? this.map.enableDragging() : this.map.disableDragging()
170
+ },
171
+ triggerScrollWheelZoom() {
172
+ this.scrollWheelZoom ? this.map.enableScrollWheelZoom() : this.map.disableScrollWheelZoom()
173
+ },
174
+ triggerDoubleClickZoom() {
175
+ this.doubleClickZoom ? this.map.enableDoubleClickZoom() : this.map.disableDoubleClickZoom()
176
+ },
177
+ triggerKeyboard() {
178
+ this.keyboard ? this.map.enableKeyboard() : this.map.disableKeyboard()
179
+ },
180
+ triggerInertialDragging() {
181
+ this.inertialDragging ? this.map.enableInertialDragging() : this.map.disableInertialDragging()
182
+ },
183
+ triggerContinuousZoom() {
184
+ this.continuousZoom ? this.map.enableContinuousZoom() : this.map.disableContinuousZoom()
185
+ },
186
+ triggerPinchToZoom() {
187
+ this.pinchToZoom ? this.map.enablePinchToZoom() : this.map.disablePinchToZoom()
188
+ },
189
+ triggerAutoResize() {
190
+ this.autoResize ? this.map.enableAutoResize() : this.map.disableAutoResize()
191
+ }
192
+ },
193
+ watch: {
194
+ center() {
195
+ this.centerAndZoom()
196
+ },
197
+ zoom() {
198
+ this.setZoom()
199
+ },
200
+ dragging() {
201
+ this.triggerAutoResize()
202
+ },
203
+ scrollWheelZoom() {
204
+ this.triggerScrollWheelZoom()
205
+ },
206
+ doubleClickZoom() {
207
+ this.triggerDoubleClickZoom()
208
+ },
209
+ keyboard() {
210
+ this.triggerKeyboard()
211
+ },
212
+ inertialDragging() {
213
+ this.triggerInertialDragging()
214
+ },
215
+ continuousZoom() {
216
+ this.triggerContinuousZoom()
217
+ },
218
+ pinchToZoom() {
219
+ this.triggerPinchToZoom()
220
+ },
221
+ autoResize() {
222
+ this.triggerAutoResize()
223
+ },
224
+ defaultCursor() {
225
+ this.setDefaultCursor()
226
+ },
227
+ draggingCursor() {
228
+ this.setDraggingCursor()
229
+ },
230
+ minZoom() {
231
+ this.setMinZoom()
232
+ },
233
+ maxZoom() {
234
+ this.setMaxZoom()
235
+ }
236
+ },
237
+ mounted() {
238
+ this.$nextTick(() => {
239
+ setTimeout(() => {
240
+ this.createScript().then(this.init)
241
+ }, 500)
242
+ })
243
+ }
244
+ }
245
+ </script>
@@ -0,0 +1,276 @@
1
+ <template>
2
+ <div class="nm-map-coord-picking">
3
+ <el-input ref="label" class="nm-map-coord-picking-input" v-model="label" :disabled="disabled" :placeholder="placeholder" @change="onLabelChange" :readonly="!allowInput">
4
+ <i slot="suffix" class="el-input__icon el-icon-coordinate" @click="show"></i>
5
+ </el-input>
6
+
7
+ <nm-dialog v-bind="dialog" :visible.sync="visible" @opened="onOpened">
8
+ <template v-slot:title>
9
+ {{ dialog.title }} (<span class="nm-size-14 nm-text-danger">当前坐标 : {{ label_ }}</span
10
+ >)
11
+ </template>
12
+ <div class="nm-map-coord-picking-box" v-loading="loading">
13
+ <nm-split v-model="split">
14
+ <template v-slot:left>
15
+ <div class="left">
16
+ <NmMap :center="center" :zoom="zoom" :scroll-wheel-zoom="scrollWheelZoom" height="100%" @init="onMapInit" />
17
+ </div>
18
+ </template>
19
+ <template v-slot:right>
20
+ <div class="right">
21
+ <div class="nm-map-coord-picking-search">
22
+ <NmMapSearch ref="search" :precision="precision" :delay="delay" :search-page-capacity="searchPageCapacity" @select="onSelect" />
23
+ </div>
24
+ <div class="nm-map-coord-picking-buttons">
25
+ <el-button type="success" @click="save">确认</el-button>
26
+ <el-button type="info" @click="reset">重置</el-button>
27
+ </div>
28
+ </div>
29
+ </template>
30
+ </nm-split>
31
+ </div>
32
+ </nm-dialog>
33
+ </div>
34
+ </template>
35
+ <script>
36
+ export default {
37
+ name: 'MapCoordPicking',
38
+ data() {
39
+ return {
40
+ split: 0.8,
41
+ /**是否显示 */
42
+ visible: false,
43
+ /**地图实例 */
44
+ map: null,
45
+ /**中心点 */
46
+ center: null,
47
+ /**标注对象 */
48
+ marker: null,
49
+ /**选择的的坐标点 */
50
+ selection: null,
51
+ loading: true,
52
+ oldValue: this.value,
53
+ /**显示的坐标 */
54
+ label: '',
55
+ /**是否手动输入 */
56
+ isManualInput: false,
57
+ /**打开对话框时是否需要重置标注 */
58
+ resetMarkerOnOpen: false
59
+ }
60
+ },
61
+ props: {
62
+ value: Object,
63
+ /**标题 */
64
+ title: {
65
+ type: String,
66
+ default: '坐标拾取'
67
+ },
68
+ /**图标 */
69
+ icon: {
70
+ type: String,
71
+ default: 'coordinate'
72
+ },
73
+ /**是否显示全屏按钮 */
74
+ fullscreen: {
75
+ type: Boolean,
76
+ default: true
77
+ },
78
+ width: {
79
+ type: String,
80
+ default: '70%'
81
+ },
82
+ height: {
83
+ type: String,
84
+ default: '80%'
85
+ },
86
+ placeholder: {
87
+ type: String,
88
+ default: '请输入或选择坐标,如:116.404,39.915'
89
+ },
90
+ /**禁用 */
91
+ disabled: Boolean,
92
+ /**允许手动输入 */
93
+ allowInput: Boolean,
94
+ /**查询延时,默认700ms */
95
+ delay: {
96
+ type: Number,
97
+ default: 700
98
+ },
99
+ /**保留小数位精度 */
100
+ precision: {
101
+ type: Number,
102
+ default: 3
103
+ },
104
+ /**查询时每页数量,默认15 */
105
+ searchPageCapacity: {
106
+ type: Number,
107
+ default: 15
108
+ },
109
+ /**启用滚轮放大缩小,默认启用 */
110
+ scrollWheelZoom: {
111
+ type: Boolean,
112
+ default: true
113
+ },
114
+ /**缩放 */
115
+ zoom: Number
116
+ },
117
+ computed: {
118
+ dialog() {
119
+ return {
120
+ title: this.title,
121
+ icon: this.icon,
122
+ fullscreen: this.fullscreen,
123
+ noScrollbar: true,
124
+ width: this.width,
125
+ height: this.height,
126
+ draggable: true
127
+ }
128
+ },
129
+ label_() {
130
+ if (this.selection) {
131
+ return `${this.selection.lng},${this.selection.lat}`
132
+ } else {
133
+ return ''
134
+ }
135
+ }
136
+ },
137
+ methods: {
138
+ /**警告提示 */
139
+ _warning(msg) {
140
+ this.$message({
141
+ message: msg,
142
+ type: 'warning'
143
+ })
144
+ },
145
+ /**重置 */
146
+ reset() {
147
+ if (this.map) {
148
+ this.setSelection(this.oldValue)
149
+ this.setCenter(this.oldValue)
150
+ this.createMarker()
151
+ this.$refs.search.reset()
152
+ }
153
+ this.setSelection(this.oldValue)
154
+ this.save()
155
+ },
156
+ show() {
157
+ if (!this.disabled) this.visible = !this.visible
158
+ },
159
+ save() {
160
+ this.setLabel()
161
+ this.$emit('input', this.selection ? Object.assign({}, this.selection) : null)
162
+ this.visible = false
163
+ },
164
+ /**重置中心坐标 */
165
+ setCenter(point) {
166
+ this.center = point ? Object.assign({}, point) : null
167
+ },
168
+ /**设置选择的坐标点 */
169
+ setSelection(point) {
170
+ if (point) {
171
+ this.selection = {
172
+ lng: parseFloat(point.lng).toFixed(this.precision),
173
+ lat: parseFloat(point.lat).toFixed(this.precision)
174
+ }
175
+ } else {
176
+ this.selection = null
177
+ }
178
+ },
179
+ setLabel() {
180
+ if (this.selection) {
181
+ this.label = `${this.selection.lng},${this.selection.lat}`
182
+ } else {
183
+ this.label = ''
184
+ }
185
+ },
186
+ //创建标注
187
+ createMarker() {
188
+ if (typeof BMap !== 'undefined') {
189
+ //先删除,再创建
190
+ if (this.marker) {
191
+ this.map.removeOverlay(this.marker)
192
+ }
193
+ if (this.selection) {
194
+ this.marker = new BMap.Marker(this.selection)
195
+ this.map.addOverlay(this.marker)
196
+ }
197
+ }
198
+ },
199
+ onMapInit(map) {
200
+ this.map = map
201
+ //初始化搜索
202
+ this.$refs.search.init(map)
203
+ //关闭loading
204
+ this.loading = false
205
+
206
+ //设置标注
207
+ this.createMarker()
208
+
209
+ const _this = this
210
+ //注册点击事件
211
+ this.map.addEventListener('click', function(e) {
212
+ _this.setSelection(e.point)
213
+ _this.createMarker()
214
+ })
215
+ },
216
+ onSelect(point) {
217
+ this.setSelection(point)
218
+ this.setCenter(point)
219
+ this.createMarker()
220
+ },
221
+ onOpened() {
222
+ if (this.resetMarkerOnOpen && this.map) {
223
+ const _this = this
224
+ setTimeout(() => {
225
+ _this.createMarker()
226
+ _this.setCenter(this.value)
227
+ }, 200)
228
+ this.resetMarkerOnOpen = false
229
+ }
230
+ },
231
+ onLabelChange(val) {
232
+ let point = null
233
+ this.refreshMarkerOnOpen = true
234
+
235
+ if (val.indexOf(',') < 0 || val.endsWith(',') || val.startsWith(',')) {
236
+ this.label = ''
237
+ this._warning('坐标无效')
238
+ return
239
+ }
240
+
241
+ const arr = val.split(',')
242
+ point = {
243
+ lng: arr[0],
244
+ lat: arr[1]
245
+ }
246
+ this.isManualInput = true
247
+
248
+ this.$emit('input', point)
249
+ }
250
+ },
251
+ watch: {
252
+ value: {
253
+ immediate: true,
254
+ handler(val) {
255
+ this.setSelection(val)
256
+
257
+ //如果是手动输入,需要重新设置中心坐标,并且再打开时需要重置标注,反之,需要设置label
258
+ if (this.isManualInput) {
259
+ this.resetMarkerOnOpen = true
260
+ if (!this.map) {
261
+ this.setCenter(val)
262
+ }
263
+ } else {
264
+ this.setLabel()
265
+ }
266
+ }
267
+ }
268
+ },
269
+ created() {
270
+ //首次创建设置中心坐标
271
+ if (!this.center) {
272
+ this.setCenter(this.value)
273
+ }
274
+ }
275
+ }
276
+ </script>