create-meadminjs 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 (483) hide show
  1. package/bin/cli.js +3 -0
  2. package/bin/index.js +3 -0
  3. package/dist/cli.d.ts +1 -0
  4. package/dist/cli.js +97 -0
  5. package/dist/file-zuupOgeh.js +78 -0
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.js +98 -0
  8. package/package.json +38 -0
  9. package/template/meadmin/.editorconfig +11 -0
  10. package/template/meadmin/.env +21 -0
  11. package/template/meadmin/.eslintrc.json +7 -0
  12. package/template/meadmin/.husky/pre-commit +4 -0
  13. package/template/meadmin/.mocharc.json +6 -0
  14. package/template/meadmin/.prettierignore +30 -0
  15. package/template/meadmin/.prettierrc.cjs +47 -0
  16. package/template/meadmin/.vscode/extensions.json +3 -0
  17. package/template/meadmin/.vscode/settings.json +28 -0
  18. package/template/meadmin/README.md +41 -0
  19. package/template/meadmin/bootstrap.js +2 -0
  20. package/template/meadmin/meadmin.sql +571 -0
  21. package/template/meadmin/nx.json +10 -0
  22. package/template/meadmin/packageTemplate.json +80 -0
  23. package/template/meadmin/pnpm-workspace.yaml +4 -0
  24. package/template/meadmin/public/admin/.gitkeep +0 -0
  25. package/template/meadmin/public/index/.gitkeep +0 -0
  26. package/template/meadmin/public/index/images/layout/bannerCode.jpg +0 -0
  27. package/template/meadmin/public/index/images/layout/bannerGift.jpg +0 -0
  28. package/template/meadmin/public/index/images/layout/bannerManage.jpg +0 -0
  29. package/template/meadmin/src/app/admin/controller/base.controller.ts +6 -0
  30. package/template/meadmin/src/app/admin/controller/example/demo.controller.ts +98 -0
  31. package/template/meadmin/src/app/admin/controller/file.controller.ts +105 -0
  32. package/template/meadmin/src/app/admin/controller/login.controller.ts +81 -0
  33. package/template/meadmin/src/app/admin/controller/system/admin.controller.ts +73 -0
  34. package/template/meadmin/src/app/admin/controller/system/menu.controller.ts +80 -0
  35. package/template/meadmin/src/app/admin/controller/system/role.controller.ts +81 -0
  36. package/template/meadmin/src/app/admin/controller/user.controller.ts +86 -0
  37. package/template/meadmin/src/app/admin/controller/userFile.controller.ts +84 -0
  38. package/template/meadmin/src/app/admin/dto/captchaResult.dto.ts +8 -0
  39. package/template/meadmin/src/app/admin/dto/example/demoCreate.dto.ts +9 -0
  40. package/template/meadmin/src/app/admin/dto/example/demoQuery.dto.ts +20 -0
  41. package/template/meadmin/src/app/admin/dto/example/demoUpdate.dto.ts +11 -0
  42. package/template/meadmin/src/app/admin/dto/fileCreate.dto.ts +9 -0
  43. package/template/meadmin/src/app/admin/dto/fileQuery.dto.ts +20 -0
  44. package/template/meadmin/src/app/admin/dto/fileUp.dto.ts +28 -0
  45. package/template/meadmin/src/app/admin/dto/fileUpdate.dto.ts +11 -0
  46. package/template/meadmin/src/app/admin/dto/loginCaptchaParam.dto.ts +9 -0
  47. package/template/meadmin/src/app/admin/dto/loginInfoResult.dto.ts +24 -0
  48. package/template/meadmin/src/app/admin/dto/loginParam.dto.ts +13 -0
  49. package/template/meadmin/src/app/admin/dto/loginResult.dto.ts +10 -0
  50. package/template/meadmin/src/app/admin/dto/system/adminCreate.dto.ts +14 -0
  51. package/template/meadmin/src/app/admin/dto/system/adminQuery.dto.ts +30 -0
  52. package/template/meadmin/src/app/admin/dto/system/adminUpdate.dto.ts +24 -0
  53. package/template/meadmin/src/app/admin/dto/system/menuCreate.dto.ts +11 -0
  54. package/template/meadmin/src/app/admin/dto/system/menuQuery.dto.ts +20 -0
  55. package/template/meadmin/src/app/admin/dto/system/menuTreeAllResult.dto.ts +9 -0
  56. package/template/meadmin/src/app/admin/dto/system/menuUpdate.dto.ts +8 -0
  57. package/template/meadmin/src/app/admin/dto/system/roleCreate.dto.ts +11 -0
  58. package/template/meadmin/src/app/admin/dto/system/roleQuery.dto.ts +20 -0
  59. package/template/meadmin/src/app/admin/dto/system/roleTreeAllResult.dto.ts +12 -0
  60. package/template/meadmin/src/app/admin/dto/system/roleUpdate.dto.ts +14 -0
  61. package/template/meadmin/src/app/admin/dto/userCreate.dto.ts +9 -0
  62. package/template/meadmin/src/app/admin/dto/userFileCreate.dto.ts +9 -0
  63. package/template/meadmin/src/app/admin/dto/userFileQuery.dto.ts +20 -0
  64. package/template/meadmin/src/app/admin/dto/userFileUp.dto.ts +28 -0
  65. package/template/meadmin/src/app/admin/dto/userFileUpdate.dto.ts +11 -0
  66. package/template/meadmin/src/app/admin/dto/userQuery.dto.ts +26 -0
  67. package/template/meadmin/src/app/admin/dto/userUpdate.dto.ts +11 -0
  68. package/template/meadmin/src/app/admin/middleware/admin.middleware.ts +41 -0
  69. package/template/meadmin/src/app/admin/service/example/demo.service.ts +260 -0
  70. package/template/meadmin/src/app/admin/service/file.service.ts +123 -0
  71. package/template/meadmin/src/app/admin/service/login.serveice.ts +209 -0
  72. package/template/meadmin/src/app/admin/service/system/admin.service.ts +206 -0
  73. package/template/meadmin/src/app/admin/service/system/menu.service.ts +133 -0
  74. package/template/meadmin/src/app/admin/service/system/role.service.ts +161 -0
  75. package/template/meadmin/src/app/admin/service/user.service.ts +205 -0
  76. package/template/meadmin/src/app/admin/service/userFile.service.ts +126 -0
  77. package/template/meadmin/src/app/home.controller.ts +19 -0
  78. package/template/meadmin/src/app/index/controller/base.controller.ts +6 -0
  79. package/template/meadmin/src/app/index/controller/file.controller.ts +116 -0
  80. package/template/meadmin/src/app/index/controller/index.controller.ts +70 -0
  81. package/template/meadmin/src/app/index/controller/login.controller.ts +81 -0
  82. package/template/meadmin/src/app/index/controller/user.controller.ts +43 -0
  83. package/template/meadmin/src/app/index/dto/captchaResult.dto.ts +8 -0
  84. package/template/meadmin/src/app/index/dto/fileCreate.dto.ts +9 -0
  85. package/template/meadmin/src/app/index/dto/fileQuery.dto.ts +20 -0
  86. package/template/meadmin/src/app/index/dto/fileUp.dto.ts +28 -0
  87. package/template/meadmin/src/app/index/dto/fileUpdate.dto.ts +11 -0
  88. package/template/meadmin/src/app/index/dto/loginCaptchaParam.dto.ts +9 -0
  89. package/template/meadmin/src/app/index/dto/loginParam.dto.ts +13 -0
  90. package/template/meadmin/src/app/index/dto/loginResult.dto.ts +10 -0
  91. package/template/meadmin/src/app/index/dto/userCreate.dto.ts +26 -0
  92. package/template/meadmin/src/app/index/dto/userUpdate.dto.ts +33 -0
  93. package/template/meadmin/src/app/index/middleware/index.middleware.ts +28 -0
  94. package/template/meadmin/src/app/index/service/file.service.ts +127 -0
  95. package/template/meadmin/src/app/index/service/login.serveice.ts +178 -0
  96. package/template/meadmin/src/app/index/service/user.service.ts +87 -0
  97. package/template/meadmin/src/config/config.default.ts +154 -0
  98. package/template/meadmin/src/config/config.unittest.ts +7 -0
  99. package/template/meadmin/src/config/database.ts +30 -0
  100. package/template/meadmin/src/configuration.ts +107 -0
  101. package/template/meadmin/src/controller/api.controller.ts +21 -0
  102. package/template/meadmin/src/decorators/admin/permission.ts +41 -0
  103. package/template/meadmin/src/decorators/index/permission.ts +37 -0
  104. package/template/meadmin/src/decorators/index.ts +61 -0
  105. package/template/meadmin/src/decorators/sequelize.ts +65 -0
  106. package/template/meadmin/src/decorators/swagger.ts +170 -0
  107. package/template/meadmin/src/decorators/transactions.ts +42 -0
  108. package/template/meadmin/src/dict/code.enum.ts +8 -0
  109. package/template/meadmin/src/dto/page.dto.ts +16 -0
  110. package/template/meadmin/src/entities/abstract/adminBase.entity.ts +35 -0
  111. package/template/meadmin/src/entities/abstract/adminTree.entity.ts +258 -0
  112. package/template/meadmin/src/entities/abstract/base.entity.ts +69 -0
  113. package/template/meadmin/src/entities/abstract/indexBase.entity.ts +39 -0
  114. package/template/meadmin/src/entities/exampleBook.entity.ts +22 -0
  115. package/template/meadmin/src/entities/exampleDemo.entity.ts +104 -0
  116. package/template/meadmin/src/entities/file.entity.ts +68 -0
  117. package/template/meadmin/src/entities/systemAdmin.entity.ts +164 -0
  118. package/template/meadmin/src/entities/systemMenu.entity.ts +161 -0
  119. package/template/meadmin/src/entities/systemRole.entity.ts +99 -0
  120. package/template/meadmin/src/entities/user.entity.ts +160 -0
  121. package/template/meadmin/src/entities/userFile.entity.ts +68 -0
  122. package/template/meadmin/src/fileManage/index.ts +12 -0
  123. package/template/meadmin/src/fileManage/storage/base.ts +6 -0
  124. package/template/meadmin/src/fileManage/storage/local.ts +93 -0
  125. package/template/meadmin/src/filter/badRequest.filter.ts +14 -0
  126. package/template/meadmin/src/filter/default.filter.ts +28 -0
  127. package/template/meadmin/src/filter/forbidden.filter.ts +15 -0
  128. package/template/meadmin/src/filter/index.ts +6 -0
  129. package/template/meadmin/src/filter/notfound.filter.ts +10 -0
  130. package/template/meadmin/src/filter/unauthorized.filter.ts +15 -0
  131. package/template/meadmin/src/filter/validate.filter.ts +23 -0
  132. package/template/meadmin/src/helper/dotenv.ts +13 -0
  133. package/template/meadmin/src/helper/dto.ts +195 -0
  134. package/template/meadmin/src/helper/snowflake.ts +50 -0
  135. package/template/meadmin/src/helper/utils.ts +57 -0
  136. package/template/meadmin/src/interface.ts +12 -0
  137. package/template/meadmin/src/locales/en.json +13 -0
  138. package/template/meadmin/src/logger.ts +24 -0
  139. package/template/meadmin/src/middleware/report.middleware.ts +23 -0
  140. package/template/meadmin/src/response/apiBase.res.ts +12 -0
  141. package/template/meadmin/src/response/apiError.res.ts +6 -0
  142. package/template/meadmin/src/response/apiPage.res.ts +19 -0
  143. package/template/meadmin/src/response/apiSuccess.res.ts +17 -0
  144. package/template/meadmin/src/ruleType/index.ts +3 -0
  145. package/template/meadmin/src/ruleType/string.ts +29 -0
  146. package/template/meadmin/src/service/dataSourceManager.service.ts +55 -0
  147. package/template/meadmin/src/service/response.service.ts +65 -0
  148. package/template/meadmin/src/types/decorator.ts +31 -0
  149. package/template/meadmin/src/types/entity.ts +209 -0
  150. package/template/meadmin/src/types/fileManage.ts +48 -0
  151. package/template/meadmin/src/types/koa.interface.ts +12 -0
  152. package/template/meadmin/src/types/uploadOptions.ts +7 -0
  153. package/template/meadmin/test/controller/api.test.ts +17 -0
  154. package/template/meadmin/test/controller/home.test.ts +18 -0
  155. package/template/meadmin/test/setup.ts +15 -0
  156. package/template/meadmin/test/tsconfig.json +19 -0
  157. package/template/meadmin/tsconfig.json +28 -0
  158. package/template/meadmin/types/mwtsc.d.ts +9 -0
  159. package/template/meadmin/uploadFile/admin/.gitkeep +0 -0
  160. package/template/meadmin/uploadFile/index/.gitkeep +0 -0
  161. package/template/meadmin/view/admin/.prettierignore +28 -0
  162. package/template/meadmin/view/admin/.prettierrc.cjs +4 -0
  163. package/template/meadmin/view/admin/cli/autoImport.ts +3 -0
  164. package/template/meadmin/view/admin/eslint.config.js +91 -0
  165. package/template/meadmin/view/admin/index.html +65 -0
  166. package/template/meadmin/view/admin/packageTemplate.json +123 -0
  167. package/template/meadmin/view/admin/plugins/autoComponents.ts +10 -0
  168. package/template/meadmin/view/admin/plugins/autoImport.ts +64 -0
  169. package/template/meadmin/view/admin/plugins/autoImportApi.ts +14 -0
  170. package/template/meadmin/view/admin/plugins/babel.ts +25 -0
  171. package/template/meadmin/view/admin/plugins/index.ts +107 -0
  172. package/template/meadmin/view/admin/plugins/svgLoader.ts +22 -0
  173. package/template/meadmin/view/admin/plugins/vueSetUpExtend.ts +5 -0
  174. package/template/meadmin/view/admin/public/favicon.ico +0 -0
  175. package/template/meadmin/view/admin/public/logo.png +0 -0
  176. package/template/meadmin/view/admin/public/logo.svg +1 -0
  177. package/template/meadmin/view/admin/src/App.vue +46 -0
  178. package/template/meadmin/view/admin/src/api/api.model.ts +11 -0
  179. package/template/meadmin/view/admin/src/api/example/demo.ts +189 -0
  180. package/template/meadmin/view/admin/src/api/file.ts +124 -0
  181. package/template/meadmin/view/admin/src/api/login.ts +55 -0
  182. package/template/meadmin/view/admin/src/api/system/admin.ts +111 -0
  183. package/template/meadmin/view/admin/src/api/system/menu.ts +125 -0
  184. package/template/meadmin/view/admin/src/api/system/role.ts +111 -0
  185. package/template/meadmin/view/admin/src/api/user.ts +106 -0
  186. package/template/meadmin/view/admin/src/api/userFile.ts +121 -0
  187. package/template/meadmin/view/admin/src/app.ts +13 -0
  188. package/template/meadmin/view/admin/src/assets/images/404.svg +339 -0
  189. package/template/meadmin/view/admin/src/assets/images/captcha.png +0 -0
  190. package/template/meadmin/view/admin/src/components/meButton.vue +39 -0
  191. package/template/meadmin/view/admin/src/components/meComponent.ts +73 -0
  192. package/template/meadmin/view/admin/src/components/meDarkSwitch.vue +36 -0
  193. package/template/meadmin/view/admin/src/components/meDialog/hooks/minMax.ts +163 -0
  194. package/template/meadmin/view/admin/src/components/meDialog/index.vue +86 -0
  195. package/template/meadmin/view/admin/src/components/meFilesView.vue +52 -0
  196. package/template/meadmin/view/admin/src/components/meKeepAlive/core/Suspense.ts +15 -0
  197. package/template/meadmin/view/admin/src/components/meKeepAlive/core/apiAsyncComponent.ts +3 -0
  198. package/template/meadmin/view/admin/src/components/meKeepAlive/core/component.ts +5 -0
  199. package/template/meadmin/view/admin/src/components/meKeepAlive/core/componentPublicInstance.ts +6 -0
  200. package/template/meadmin/view/admin/src/components/meKeepAlive/core/devtools.ts +43 -0
  201. package/template/meadmin/view/admin/src/components/meKeepAlive/core/errorHandling.ts +17 -0
  202. package/template/meadmin/view/admin/src/components/meKeepAlive/core/renderer.ts +103 -0
  203. package/template/meadmin/view/admin/src/components/meKeepAlive/core/shapeFlags.ts +13 -0
  204. package/template/meadmin/view/admin/src/components/meKeepAlive/core/vnode.ts +9 -0
  205. package/template/meadmin/view/admin/src/components/meKeepAlive/index.ts +347 -0
  206. package/template/meadmin/view/admin/src/components/meLocaleSelect.vue +34 -0
  207. package/template/meadmin/view/admin/src/components/meNumber.vue +74 -0
  208. package/template/meadmin/view/admin/src/components/meSearchForm.vue +175 -0
  209. package/template/meadmin/view/admin/src/components/meSearchMenu/index.vue +87 -0
  210. package/template/meadmin/view/admin/src/components/meSearchMenu/useSearchMenu.ts +87 -0
  211. package/template/meadmin/view/admin/src/components/meSelectFile/index.vue +87 -0
  212. package/template/meadmin/view/admin/src/components/meSelectFile/meSelectFile.ts +3 -0
  213. package/template/meadmin/view/admin/src/components/meSelectList.vue +80 -0
  214. package/template/meadmin/view/admin/src/components/meSelectUserFile/index.vue +96 -0
  215. package/template/meadmin/view/admin/src/components/meSelectUserFile/meSelectUserFile.ts +3 -0
  216. package/template/meadmin/view/admin/src/components/meSetting.vue +20 -0
  217. package/template/meadmin/view/admin/src/components/meSettingMenu.vue +152 -0
  218. package/template/meadmin/view/admin/src/components/meSizeSelect.vue +28 -0
  219. package/template/meadmin/view/admin/src/components/meUpload.vue +114 -0
  220. package/template/meadmin/view/admin/src/components/meUploadUserFile.vue +114 -0
  221. package/template/meadmin/view/admin/src/components/meVxeTable/components/pagination.vue +67 -0
  222. package/template/meadmin/view/admin/src/components/meVxeTable/directives/resize.ts +31 -0
  223. package/template/meadmin/view/admin/src/components/meVxeTable/index.vue +287 -0
  224. package/template/meadmin/view/admin/src/components/meVxeTable/install.ts +30 -0
  225. package/template/meadmin/view/admin/src/components/meVxeTable/util.ts +11 -0
  226. package/template/meadmin/view/admin/src/components/meWangEditor/index.vue +121 -0
  227. package/template/meadmin/view/admin/src/components/meWangEditor/meWangEditor.scss +24 -0
  228. package/template/meadmin/view/admin/src/components/page.vue +24 -0
  229. package/template/meadmin/view/admin/src/components/service/meImageViewer.ts +23 -0
  230. package/template/meadmin/view/admin/src/config/index.ts +11 -0
  231. package/template/meadmin/view/admin/src/config/locale.ts +245 -0
  232. package/template/meadmin/view/admin/src/config/login.ts +5 -0
  233. package/template/meadmin/view/admin/src/config/theme.ts +19 -0
  234. package/template/meadmin/view/admin/src/dict/configEnum.ts +5 -0
  235. package/template/meadmin/view/admin/src/dict/eventEnmu.ts +14 -0
  236. package/template/meadmin/view/admin/src/dict/menuModeEnum.ts +5 -0
  237. package/template/meadmin/view/admin/src/dict/pageEnum.ts +6 -0
  238. package/template/meadmin/view/admin/src/directives/clickOutside.ts +2 -0
  239. package/template/meadmin/view/admin/src/entry-client.ts +8 -0
  240. package/template/meadmin/view/admin/src/entry-server.ts +69 -0
  241. package/template/meadmin/view/admin/src/env.d.ts +6 -0
  242. package/template/meadmin/view/admin/src/event/index.ts +30 -0
  243. package/template/meadmin/view/admin/src/event/module.ts +1 -0
  244. package/template/meadmin/view/admin/src/event/modules/core.ts +27 -0
  245. package/template/meadmin/view/admin/src/hooks/actionModel.ts +54 -0
  246. package/template/meadmin/view/admin/src/hooks/core/computedProxy.ts +10 -0
  247. package/template/meadmin/view/admin/src/hooks/index.ts +24 -0
  248. package/template/meadmin/view/admin/src/icons/index.ts +52 -0
  249. package/template/meadmin/view/admin/src/icons/svg/dashboard.svg +5 -0
  250. package/template/meadmin/view/admin/src/icons/svg/moon.svg +5 -0
  251. package/template/meadmin/view/admin/src/icons/svg/size.svg +5 -0
  252. package/template/meadmin/view/admin/src/icons/svg/sunny.svg +5 -0
  253. package/template/meadmin/view/admin/src/icons/svg/translation.svg +5 -0
  254. package/template/meadmin/view/admin/src/layout/components/expand.vue +18 -0
  255. package/template/meadmin/view/admin/src/layout/components/header/components/tagBar/components/contextmenu.vue +180 -0
  256. package/template/meadmin/view/admin/src/layout/components/header/components/tagBar/index.vue +322 -0
  257. package/template/meadmin/view/admin/src/layout/components/header/components/topBar/components/left.vue +59 -0
  258. package/template/meadmin/view/admin/src/layout/components/header/components/topBar/components/right/components/messageBox.vue +82 -0
  259. package/template/meadmin/view/admin/src/layout/components/header/components/topBar/components/right/components/user.vue +53 -0
  260. package/template/meadmin/view/admin/src/layout/components/header/components/topBar/components/right/index.vue +44 -0
  261. package/template/meadmin/view/admin/src/layout/components/header/components/topBar/components/topMenu.vue +33 -0
  262. package/template/meadmin/view/admin/src/layout/components/header/components/topBar/index.vue +30 -0
  263. package/template/meadmin/view/admin/src/layout/components/header/index.vue +15 -0
  264. package/template/meadmin/view/admin/src/layout/components/menu/components/menuItem.vue +72 -0
  265. package/template/meadmin/view/admin/src/layout/components/menu/index.vue +147 -0
  266. package/template/meadmin/view/admin/src/layout/components/page.vue +33 -0
  267. package/template/meadmin/view/admin/src/layout/components/title.vue +21 -0
  268. package/template/meadmin/view/admin/src/layout/index.vue +104 -0
  269. package/template/meadmin/view/admin/src/locales/helper.ts +127 -0
  270. package/template/meadmin/view/admin/src/locales/hooks.ts +50 -0
  271. package/template/meadmin/view/admin/src/locales/i18n.ts +16 -0
  272. package/template/meadmin/view/admin/src/locales/lang/en/default.json +65 -0
  273. package/template/meadmin/view/admin/src/locales/lang/en/index.ts +7 -0
  274. package/template/meadmin/view/admin/src/locales/lang/en/meTable.json +7 -0
  275. package/template/meadmin/view/admin/src/locales/lang/en/meVxeTable.ts +11 -0
  276. package/template/meadmin/view/admin/src/locales/lang/en/menu.json +1 -0
  277. package/template/meadmin/view/admin/src/locales/lang/en/rule.json +12 -0
  278. package/template/meadmin/view/admin/src/locales/lang/zh-cn/default.json +6 -0
  279. package/template/meadmin/view/admin/src/locales/lang/zh-cn/index.ts +7 -0
  280. package/template/meadmin/view/admin/src/locales/lang/zh-cn/meVxeTable.ts +2 -0
  281. package/template/meadmin/view/admin/src/main.ts +21 -0
  282. package/template/meadmin/view/admin/src/router/constant.ts +2 -0
  283. package/template/meadmin/view/admin/src/router/guard/index.ts +52 -0
  284. package/template/meadmin/view/admin/src/router/index.ts +115 -0
  285. package/template/meadmin/view/admin/src/setElGlobel.ts +16 -0
  286. package/template/meadmin/view/admin/src/store/index.ts +8 -0
  287. package/template/meadmin/view/admin/src/store/modules/global.ts +66 -0
  288. package/template/meadmin/view/admin/src/store/modules/route.ts +69 -0
  289. package/template/meadmin/view/admin/src/store/modules/setting.ts +46 -0
  290. package/template/meadmin/view/admin/src/store/modules/user.ts +115 -0
  291. package/template/meadmin/view/admin/src/styles/element-plus.scss +40 -0
  292. package/template/meadmin/view/admin/src/styles/index.scss +122 -0
  293. package/template/meadmin/view/admin/src/styles/transition.scss +33 -0
  294. package/template/meadmin/view/admin/src/styles/variables.scss +5 -0
  295. package/template/meadmin/view/admin/src/utils/fileMd5Work.ts +109 -0
  296. package/template/meadmin/view/admin/src/utils/fileUpload.ts +154 -0
  297. package/template/meadmin/view/admin/src/utils/formatting.ts +62 -0
  298. package/template/meadmin/view/admin/src/utils/helper.ts +315 -0
  299. package/template/meadmin/view/admin/src/utils/loading.ts +63 -0
  300. package/template/meadmin/view/admin/src/utils/log.ts +8 -0
  301. package/template/meadmin/view/admin/src/utils/mitt.ts +152 -0
  302. package/template/meadmin/view/admin/src/utils/nProgress.ts +31 -0
  303. package/template/meadmin/view/admin/src/utils/permission.ts +76 -0
  304. package/template/meadmin/view/admin/src/utils/request.ts +152 -0
  305. package/template/meadmin/view/admin/src/utils/userFileUpload.ts +154 -0
  306. package/template/meadmin/view/admin/src/utils/validate.ts +17 -0
  307. package/template/meadmin/view/admin/src/views/404.vue +50 -0
  308. package/template/meadmin/view/admin/src/views/example/demo/components/addOrUp.vue +118 -0
  309. package/template/meadmin/view/admin/src/views/example/demo/components/info.vue +56 -0
  310. package/template/meadmin/view/admin/src/views/example/demo/dict.ts +8 -0
  311. package/template/meadmin/view/admin/src/views/example/demo/index.vue +126 -0
  312. package/template/meadmin/view/admin/src/views/example/demo/lang/dict.ts +8 -0
  313. package/template/meadmin/view/admin/src/views/example/demo/lang/en.json +14 -0
  314. package/template/meadmin/view/admin/src/views/file/components/add.vue +24 -0
  315. package/template/meadmin/view/admin/src/views/file/components/info.vue +51 -0
  316. package/template/meadmin/view/admin/src/views/file/components/up.vue +72 -0
  317. package/template/meadmin/view/admin/src/views/file/index.vue +132 -0
  318. package/template/meadmin/view/admin/src/views/file/lang/en.json +11 -0
  319. package/template/meadmin/view/admin/src/views/login/components/header.vue +20 -0
  320. package/template/meadmin/view/admin/src/views/login/index.vue +163 -0
  321. package/template/meadmin/view/admin/src/views/redirect.vue +12 -0
  322. package/template/meadmin/view/admin/src/views/system/admin/components/addOrUp.vue +111 -0
  323. package/template/meadmin/view/admin/src/views/system/admin/components/info.vue +75 -0
  324. package/template/meadmin/view/admin/src/views/system/admin/dict.ts +7 -0
  325. package/template/meadmin/view/admin/src/views/system/admin/index.vue +145 -0
  326. package/template/meadmin/view/admin/src/views/system/admin/lang/en.json +19 -0
  327. package/template/meadmin/view/admin/src/views/system/menuRole/components/menu/components/addOrUp.vue +145 -0
  328. package/template/meadmin/view/admin/src/views/system/menuRole/components/menu/components/info.vue +68 -0
  329. package/template/meadmin/view/admin/src/views/system/menuRole/components/menu/dict.ts +36 -0
  330. package/template/meadmin/view/admin/src/views/system/menuRole/components/menu/index.vue +162 -0
  331. package/template/meadmin/view/admin/src/views/system/menuRole/components/menu/lang/en.json +20 -0
  332. package/template/meadmin/view/admin/src/views/system/menuRole/components/role/components/addOrUp.vue +94 -0
  333. package/template/meadmin/view/admin/src/views/system/menuRole/components/role/components/info.vue +59 -0
  334. package/template/meadmin/view/admin/src/views/system/menuRole/components/role/dict.ts +7 -0
  335. package/template/meadmin/view/admin/src/views/system/menuRole/components/role/index.vue +153 -0
  336. package/template/meadmin/view/admin/src/views/system/menuRole/components/role/lang/en.json +14 -0
  337. package/template/meadmin/view/admin/src/views/system/menuRole/index.vue +59 -0
  338. package/template/meadmin/view/admin/src/views/user/components/addOrUp.vue +120 -0
  339. package/template/meadmin/view/admin/src/views/user/components/info.vue +56 -0
  340. package/template/meadmin/view/admin/src/views/user/dict.ts +7 -0
  341. package/template/meadmin/view/admin/src/views/user/file/components/add.vue +24 -0
  342. package/template/meadmin/view/admin/src/views/user/file/components/info.vue +54 -0
  343. package/template/meadmin/view/admin/src/views/user/file/components/up.vue +82 -0
  344. package/template/meadmin/view/admin/src/views/user/file/index.vue +148 -0
  345. package/template/meadmin/view/admin/src/views/user/file/lang/en.json +17 -0
  346. package/template/meadmin/view/admin/src/views/user/index.vue +145 -0
  347. package/template/meadmin/view/admin/src/views/user/lang/en.json +18 -0
  348. package/template/meadmin/view/admin/template/components.d.ts +9 -0
  349. package/template/meadmin/view/admin/template/directives.d.ts +6 -0
  350. package/template/meadmin/view/admin/template/meIconComponents.d.ts +6 -0
  351. package/template/meadmin/view/admin/tsconfig.json +33 -0
  352. package/template/meadmin/view/admin/tsconfig.node.json +17 -0
  353. package/template/meadmin/view/admin/types/api.d.ts +15 -0
  354. package/template/meadmin/view/admin/types/auto-imports.d.ts +302 -0
  355. package/template/meadmin/view/admin/types/global.d.ts +60 -0
  356. package/template/meadmin/view/admin/types/globalComponents.d.ts +13 -0
  357. package/template/meadmin/view/admin/types/melIconComponents.d.d.ts +9 -0
  358. package/template/meadmin/view/admin/types/vue-router.d.ts +39 -0
  359. package/template/meadmin/view/admin/types/vueCustomProperties .d.ts +6 -0
  360. package/template/meadmin/view/admin/types/vueExtendType.d.ts +43 -0
  361. package/template/meadmin/view/admin/vite.config.ts +110 -0
  362. package/template/meadmin/view/index/.prettierignore +28 -0
  363. package/template/meadmin/view/index/.prettierrc.cjs +4 -0
  364. package/template/meadmin/view/index/README.md +84 -0
  365. package/template/meadmin/view/index/cli/autoImport.ts +3 -0
  366. package/template/meadmin/view/index/eslint.config.js +91 -0
  367. package/template/meadmin/view/index/index.html +22 -0
  368. package/template/meadmin/view/index/packageTemplate.json +122 -0
  369. package/template/meadmin/view/index/plugins/autoComponents.ts +10 -0
  370. package/template/meadmin/view/index/plugins/autoImport.ts +64 -0
  371. package/template/meadmin/view/index/plugins/autoImportApi.ts +14 -0
  372. package/template/meadmin/view/index/plugins/babel.ts +25 -0
  373. package/template/meadmin/view/index/plugins/index.ts +103 -0
  374. package/template/meadmin/view/index/plugins/svgLoader.ts +22 -0
  375. package/template/meadmin/view/index/plugins/vueSetUpExtend.ts +5 -0
  376. package/template/meadmin/view/index/public/favicon.ico +0 -0
  377. package/template/meadmin/view/index/public/logo.png +0 -0
  378. package/template/meadmin/view/index/public/logo.svg +1 -0
  379. package/template/meadmin/view/index/src/App.vue +30 -0
  380. package/template/meadmin/view/index/src/api/api.model.ts +11 -0
  381. package/template/meadmin/view/index/src/api/file.ts +123 -0
  382. package/template/meadmin/view/index/src/api/index.ts +25 -0
  383. package/template/meadmin/view/index/src/api/login.ts +72 -0
  384. package/template/meadmin/view/index/src/api/user.ts +42 -0
  385. package/template/meadmin/view/index/src/app.ts +39 -0
  386. package/template/meadmin/view/index/src/assets/images/404.svg +339 -0
  387. package/template/meadmin/view/index/src/assets/images/avatar.jpg +0 -0
  388. package/template/meadmin/view/index/src/components/meButton.vue +34 -0
  389. package/template/meadmin/view/index/src/components/meDialog/hooks/minMax.ts +166 -0
  390. package/template/meadmin/view/index/src/components/meDialog/index.vue +86 -0
  391. package/template/meadmin/view/index/src/components/meNumber.vue +74 -0
  392. package/template/meadmin/view/index/src/components/meSelectFile/index.vue +92 -0
  393. package/template/meadmin/view/index/src/components/meSelectFile/meSelectFile.ts +3 -0
  394. package/template/meadmin/view/index/src/components/meUpAvatar.vue +166 -0
  395. package/template/meadmin/view/index/src/components/meUpload.vue +111 -0
  396. package/template/meadmin/view/index/src/components/meVxeTable/components/pagination.vue +67 -0
  397. package/template/meadmin/view/index/src/components/meVxeTable/directives/resize.ts +31 -0
  398. package/template/meadmin/view/index/src/components/meVxeTable/index.vue +286 -0
  399. package/template/meadmin/view/index/src/components/meVxeTable/install.ts +18 -0
  400. package/template/meadmin/view/index/src/components/meVxeTable/util.ts +11 -0
  401. package/template/meadmin/view/index/src/components/meWangEditor/index.vue +121 -0
  402. package/template/meadmin/view/index/src/components/meWangEditor/meWangEditor.scss +24 -0
  403. package/template/meadmin/view/index/src/components/service/meImageViewer.ts +23 -0
  404. package/template/meadmin/view/index/src/config/index.ts +2 -0
  405. package/template/meadmin/view/index/src/config/login.ts +5 -0
  406. package/template/meadmin/view/index/src/dict/eventEnmu.ts +13 -0
  407. package/template/meadmin/view/index/src/dict/pageEnum.ts +8 -0
  408. package/template/meadmin/view/index/src/directives/clickOutside.ts +2 -0
  409. package/template/meadmin/view/index/src/entry-client.ts +8 -0
  410. package/template/meadmin/view/index/src/entry-server.ts +83 -0
  411. package/template/meadmin/view/index/src/env.d.ts +6 -0
  412. package/template/meadmin/view/index/src/event/index.ts +23 -0
  413. package/template/meadmin/view/index/src/hooks/actionModel.ts +54 -0
  414. package/template/meadmin/view/index/src/hooks/core/computedProxy.ts +10 -0
  415. package/template/meadmin/view/index/src/hooks/index.ts +24 -0
  416. package/template/meadmin/view/index/src/icons/index.ts +52 -0
  417. package/template/meadmin/view/index/src/icons/svg/dashboard.svg +5 -0
  418. package/template/meadmin/view/index/src/icons/svg/moon.svg +5 -0
  419. package/template/meadmin/view/index/src/icons/svg/size.svg +5 -0
  420. package/template/meadmin/view/index/src/icons/svg/sunny.svg +5 -0
  421. package/template/meadmin/view/index/src/icons/svg/translation.svg +5 -0
  422. package/template/meadmin/view/index/src/layout/default/components/footer.vue +22 -0
  423. package/template/meadmin/view/index/src/layout/default/components/header/components/menuItem.vue +69 -0
  424. package/template/meadmin/view/index/src/layout/default/components/header/components/user.vue +55 -0
  425. package/template/meadmin/view/index/src/layout/default/components/header/index.vue +53 -0
  426. package/template/meadmin/view/index/src/layout/default/index.vue +63 -0
  427. package/template/meadmin/view/index/src/layout/default/layout.scss +1 -0
  428. package/template/meadmin/view/index/src/layout/default/page.vue +11 -0
  429. package/template/meadmin/view/index/src/layout/layoutRoute.vue +13 -0
  430. package/template/meadmin/view/index/src/main.ts +28 -0
  431. package/template/meadmin/view/index/src/router/guard/index.ts +53 -0
  432. package/template/meadmin/view/index/src/router/index.ts +73 -0
  433. package/template/meadmin/view/index/src/router/routes/001-index.ts +42 -0
  434. package/template/meadmin/view/index/src/router/routes/002-demo.ts +12 -0
  435. package/template/meadmin/view/index/src/router/routes/003-user.ts +27 -0
  436. package/template/meadmin/view/index/src/router/routes/demo/001-demo.ts +36 -0
  437. package/template/meadmin/view/index/src/setElGlobel.ts +7 -0
  438. package/template/meadmin/view/index/src/store/index.ts +11 -0
  439. package/template/meadmin/view/index/src/store/module.ts +5 -0
  440. package/template/meadmin/view/index/src/store/modules/global.ts +52 -0
  441. package/template/meadmin/view/index/src/store/modules/route.ts +20 -0
  442. package/template/meadmin/view/index/src/store/modules/user.ts +98 -0
  443. package/template/meadmin/view/index/src/styles/element-plus.scss +40 -0
  444. package/template/meadmin/view/index/src/styles/index.scss +122 -0
  445. package/template/meadmin/view/index/src/styles/transition.scss +33 -0
  446. package/template/meadmin/view/index/src/styles/variables.scss +6 -0
  447. package/template/meadmin/view/index/src/utils/cookies.ts +59 -0
  448. package/template/meadmin/view/index/src/utils/fileMd5Work.ts +109 -0
  449. package/template/meadmin/view/index/src/utils/fileUpload.ts +156 -0
  450. package/template/meadmin/view/index/src/utils/helper.ts +261 -0
  451. package/template/meadmin/view/index/src/utils/loading.ts +71 -0
  452. package/template/meadmin/view/index/src/utils/log.ts +8 -0
  453. package/template/meadmin/view/index/src/utils/mitt.ts +152 -0
  454. package/template/meadmin/view/index/src/utils/nProgress.ts +52 -0
  455. package/template/meadmin/view/index/src/utils/request.ts +182 -0
  456. package/template/meadmin/view/index/src/utils/server.ts +73 -0
  457. package/template/meadmin/view/index/src/utils/validate.ts +17 -0
  458. package/template/meadmin/view/index/src/views/404.vue +50 -0
  459. package/template/meadmin/view/index/src/views/index/index.vue +137 -0
  460. package/template/meadmin/view/index/src/views/login/components/login.vue +117 -0
  461. package/template/meadmin/view/index/src/views/login/components/register.vue +192 -0
  462. package/template/meadmin/view/index/src/views/login/index.vue +147 -0
  463. package/template/meadmin/view/index/src/views/promiseError.vue +48 -0
  464. package/template/meadmin/view/index/src/views/redirect.vue +9 -0
  465. package/template/meadmin/view/index/src/views/user/components/editPass.vue +83 -0
  466. package/template/meadmin/view/index/src/views/user/components/userInfo.vue +91 -0
  467. package/template/meadmin/view/index/src/views/user/index.vue +67 -0
  468. package/template/meadmin/view/index/template/components.d.ts +9 -0
  469. package/template/meadmin/view/index/template/directives.d.ts +6 -0
  470. package/template/meadmin/view/index/template/meIconComponents.d.ts +6 -0
  471. package/template/meadmin/view/index/tsconfig.json +33 -0
  472. package/template/meadmin/view/index/tsconfig.node.json +17 -0
  473. package/template/meadmin/view/index/types/api.d.ts +15 -0
  474. package/template/meadmin/view/index/types/auto-imports.d.ts +301 -0
  475. package/template/meadmin/view/index/types/components.d.ts +25 -0
  476. package/template/meadmin/view/index/types/directives.d.ts +7 -0
  477. package/template/meadmin/view/index/types/global.d.ts +51 -0
  478. package/template/meadmin/view/index/types/globalComponents.d.ts +14 -0
  479. package/template/meadmin/view/index/types/meIconComponents.d.ts +11 -0
  480. package/template/meadmin/view/index/types/vue-router.d.ts +17 -0
  481. package/template/meadmin/view/index/types/vueCustomProperties .d.ts +6 -0
  482. package/template/meadmin/view/index/types/vueExtendType.d.ts +43 -0
  483. package/template/meadmin/view/index/vite.config.ts +92 -0
@@ -0,0 +1,322 @@
1
+ <template>
2
+ <div class="tag-bar">
3
+ <a class="icon pointer" :class="{ 'is-disabled': scrollLeft <= 0 }" @click="back">
4
+ <mel-icon-d-arrow-left></mel-icon-d-arrow-left>
5
+ </a>
6
+ <el-scrollbar ref="scrollbarRef" view-class="list-parent" style="flex-grow: 1" @scroll="({ scrollLeft: left } : any) => (scrollLeft = left)">
7
+ <div ref="listRef" class="list">
8
+ <div
9
+ v-for="tag in tags"
10
+ :key="tag.fullPath"
11
+ ref="tagsRef"
12
+ class="item pointer"
13
+ :class="{ active: tag.fullPath === currentTag?.fullPath }"
14
+ @click="push(tag)"
15
+ @contextmenu.prevent="setContextmenu($event.currentTarget as any, tag)"
16
+ >
17
+ {{ $t(tag.meta.title!) }}
18
+ <div v-if="!tag.meta.affix" class="del-icon" @click.stop="close($event.currentTarget as any, tag)">
19
+ <mel-icon-close />
20
+ </div>
21
+ <div></div>
22
+ </div>
23
+ </div>
24
+ </el-scrollbar>
25
+ <div class="right">
26
+ <div class="icon pointer" :class="{ 'is-disabled': Math.ceil(scrollLeft) >= max }" @click="go">
27
+ <mel-icon-d-arrow-right></mel-icon-d-arrow-right>
28
+ </div>
29
+ <div v-if="themeConfig.tagBarRefresh" class="icon pointer" @click="reload">
30
+ <mel-icon-refresh :class="{ rotate: reoadUrl }"></mel-icon-refresh>
31
+ </div>
32
+ <div v-if="themeConfig.tagBarMenu" class="icon pointer" @click.stop="setContextmenu($event.currentTarget as any, currentTag)">
33
+ <mel-icon-menu></mel-icon-menu>
34
+ </div>
35
+ </div>
36
+ </div>
37
+ <contextmenu
38
+ v-if="virtualRef"
39
+ ref="contextmenuRef"
40
+ v-model:visible="showContextmenu"
41
+ :virtual-ref="virtualRef"
42
+ :current="contextmenuCurrent"
43
+ :model-value="tags"
44
+ @update:model-value="
45
+ ($event:any) => {
46
+ tags.splice(0, tags.length, ...$event);
47
+ }
48
+ "
49
+ >
50
+ </contextmenu>
51
+ </template>
52
+ <script setup lang="ts" name="TagBar">
53
+ import { event, mitter } from '@/event';
54
+ import { useRouteStore, useSettingStore } from '@/store';
55
+ import { isExternal } from '@/utils/validate';
56
+ import { ElScrollbar } from 'element-plus';
57
+ import $ from 'jquery';
58
+ import { resolve } from 'path-browserify';
59
+ import { RouteLocationNormalized, RouteRecordRaw } from 'vue-router';
60
+ import contextmenu from './components/contextmenu.vue';
61
+ const { themeConfig } = storeToRefs(useSettingStore());
62
+ // 初始化tags
63
+ const tags = reactive([] as RouteLocationNormalized[]);
64
+ const resolvePath = (routePath: string, basePath = '') => {
65
+ if (isExternal(routePath) || isExternal(basePath)) {
66
+ return routePath;
67
+ }
68
+ return resolve(basePath, routePath);
69
+ };
70
+ const addAffixTags = (routes: RouteRecordRaw[], basePath = '') => {
71
+ routes.forEach((item) => {
72
+ if (item.meta?.affix && item.meta.title) {
73
+ tags.push({
74
+ fullPath: resolvePath(item.path, basePath),
75
+ hash: '',
76
+ query: {},
77
+ matched: [],
78
+ redirectedFrom: undefined,
79
+ meta: { ...item.meta },
80
+ } as unknown as RouteLocationNormalized);
81
+ }
82
+ if (item.children) {
83
+ addAffixTags(item.children, resolvePath(item.path, basePath));
84
+ }
85
+ });
86
+ };
87
+ addAffixTags(useRouteStore().routes);
88
+
89
+ // 滚动设置
90
+ const scrollbarRef = ref<InstanceType<typeof ElScrollbar>>();
91
+ const listRef = ref<HTMLDivElement>();
92
+ let scrollLeft = ref(0);
93
+ const setScrollLeft = (left: number, isAdd = false) => {
94
+ if (isAdd) {
95
+ left = left + scrollLeft.value;
96
+ }
97
+ $(scrollbarRef.value!.$el).find('.el-scrollbar__wrap').animate({ scrollLeft: left }, 300);
98
+ };
99
+ const tagsRef = ref([] as HTMLElement[]);
100
+ const currentTag = ref<RouteLocationNormalized>({
101
+ fullPath: '/',
102
+ meta: { title: '' },
103
+ } as RouteLocationNormalized);
104
+ const route = useRoute();
105
+ const max = ref(0);
106
+ const setMax = () => {
107
+ max.value = listRef.value!.offsetWidth - scrollbarRef.value?.$el.clientWidth;
108
+ };
109
+ onMounted(() => {
110
+ mitter.on(event.RESIZE, setMax, true);
111
+ watch(tags, setMax, {
112
+ flush: 'post',
113
+ immediate: true,
114
+ });
115
+ });
116
+ const back = () => {
117
+ setScrollLeft(0 - scrollbarRef.value!.$el.clientWidth / 2, true);
118
+ };
119
+ const go = () => {
120
+ setScrollLeft(scrollbarRef.value!.$el.clientWidth / 2, true);
121
+ };
122
+ const jump = (index: number) => {
123
+ nextTick(() => {
124
+ if (tagsRef.value[index]) {
125
+ currentTag.value = tags[index];
126
+ if (index === 0) {
127
+ setScrollLeft(0);
128
+ return;
129
+ }
130
+ if (index === tagsRef.value.length - 1) {
131
+ max.value > 0 && setScrollLeft(max.value);
132
+ return;
133
+ }
134
+ const parentWidth = scrollbarRef.value!.$el.clientWidth;
135
+ const parentLeft = scrollLeft.value;
136
+ const parentRight = parentWidth + scrollLeft.value;
137
+ const lastLeft = tagsRef.value[index - 1].offsetLeft;
138
+ const offsetLeft = tagsRef.value[index].offsetLeft;
139
+ const offsetRight = offsetLeft + tagsRef.value[index].offsetWidth;
140
+ const nextLeft = tagsRef.value[index + 1].offsetLeft;
141
+ const nextRight = nextLeft + tagsRef.value[index + 1].offsetWidth;
142
+ if (parentWidth <= offsetRight - lastLeft || parentWidth <= nextRight - offsetLeft) {
143
+ setScrollLeft(offsetLeft);
144
+ } else if (lastLeft < parentLeft) {
145
+ setScrollLeft(lastLeft);
146
+ } else if (nextRight > parentRight) {
147
+ setScrollLeft(nextRight - parentWidth);
148
+ }
149
+ }
150
+ });
151
+ };
152
+ // 动态设置active
153
+ const setTag = (route: RouteLocationNormalized) => {
154
+ if (route.meta.title && !route.meta.hideTag) {
155
+ let index = tags.findIndex((item) => item.fullPath === route.fullPath);
156
+ if (index > -1) {
157
+ return jump(index);
158
+ }
159
+ tags.push({ ...route });
160
+ return jump(tags.length - 1);
161
+ }
162
+ };
163
+ setTag(route);
164
+ mitter.on(event.BEFORE_ROUTE_CHANGE, ({ to }) => setTag(to), true);
165
+ const router = useRouter();
166
+ const push = (route: RouteLocationNormalized) => {
167
+ if (route.fullPath !== currentTag.value!.fullPath) {
168
+ router.push(route.fullPath);
169
+ }
170
+ };
171
+ const contextmenuCurrent = ref(currentTag.value);
172
+ const virtualRef = ref<HTMLElement>();
173
+ const showContextmenu = ref(false);
174
+ const contextmenuRef = ref<InstanceType<typeof contextmenu>>();
175
+ const setContextmenu = (event: HTMLElement, current: RouteLocationNormalized, show = true) => {
176
+ virtualRef.value = event;
177
+ contextmenuCurrent.value = current;
178
+ showContextmenu.value = show;
179
+ };
180
+ const close = async (event: HTMLElement, current: RouteLocationNormalized) => {
181
+ setContextmenu(event, current, false);
182
+ await nextTick();
183
+ contextmenuRef.value?.closeCurrent();
184
+ };
185
+ const closeContextMenu = () => {
186
+ showContextmenu.value = false;
187
+ };
188
+ onMounted(() => {
189
+ document.body.addEventListener('click', closeContextMenu);
190
+ });
191
+ onBeforeUnmount(() => {
192
+ document.body.removeEventListener('click', closeContextMenu);
193
+ });
194
+ const reload = () => {
195
+ // 刷新
196
+ router.replace('/redirect/' + encodeURIComponent(route.fullPath));
197
+ };
198
+ const reoadUrl = ref('');
199
+ watch(route, () => {
200
+ if (route.name == 'redirect') {
201
+ reoadUrl.value = route.params.path as string;
202
+ } else if (reoadUrl.value == route.fullPath) {
203
+ setTimeout(() => {
204
+ reoadUrl.value = '';
205
+ }, 500);
206
+ }
207
+ });
208
+ </script>
209
+ <style lang="scss" scoped>
210
+ .tag-bar {
211
+ border-bottom: 1px solid var(--el-border-color);
212
+ height: $header-tag-height;
213
+ display: flex;
214
+ align-items: center;
215
+ background-color: var(--el-bg-color);
216
+
217
+ .is-disabled {
218
+ color: var(--el-disabled-text-color) !important;
219
+ cursor: not-allowed;
220
+ }
221
+
222
+ .icon {
223
+ padding: 0 10px;
224
+ height: 100%;
225
+ display: flex;
226
+ align-items: center;
227
+ border-right: 1px solid var(--el-border-color);
228
+ color: var(--el-text-color-regular);
229
+
230
+ .rotate {
231
+ animation: loading-rotate 1s linear infinite;
232
+ }
233
+ }
234
+
235
+ .icon:hover {
236
+ color: var(--el-text-color-primary);
237
+ }
238
+
239
+ .right {
240
+ display: flex;
241
+ flex-shrink: 0;
242
+ flex-grow: 0;
243
+ justify-self: right;
244
+ height: 100%;
245
+ border-left: 1px solid var(--el-border-color);
246
+ }
247
+
248
+ :deep(.list-parent) {
249
+ height: 100%;
250
+ }
251
+
252
+ :deep(.list) {
253
+ display: flex;
254
+ height: 100%;
255
+ align-items: center;
256
+ width: max-content;
257
+
258
+ .item {
259
+ border-right: 1px solid var(--el-border-color);
260
+ height: 100%;
261
+ align-items: center;
262
+ display: flex;
263
+ padding-left: 16px;
264
+ padding-right: 16px;
265
+ flex-shrink: 0;
266
+ flex-grow: 0;
267
+ position: relative;
268
+
269
+ .del-icon {
270
+ height: 100%;
271
+ width: 22px;
272
+ display: flex;
273
+ align-items: center;
274
+ justify-content: center;
275
+ font-size: 12px;
276
+ margin-right: -16px;
277
+ visibility: hidden;
278
+ }
279
+
280
+ .del-icon:hover {
281
+ font-size: 14px;
282
+ }
283
+ }
284
+
285
+ .item:first-child {
286
+ margin-left: 0;
287
+ }
288
+
289
+ .item:hover {
290
+ // background-color: rgba(var(--el-color-primary-rgb), 0.5);
291
+ background-color: rgba(var(--el-color-primary-rgb), 0.1);
292
+ color: var(--el-color-primary);
293
+
294
+ .del-icon {
295
+ visibility: unset;
296
+ }
297
+ }
298
+
299
+ .item.active {
300
+ // color: var(--el-color-primary);
301
+ background-color: rgba(var(--el-color-primary-rgb), 0.1);
302
+ color: var(--el-color-primary);
303
+ }
304
+
305
+ .item::after {
306
+ position: absolute;
307
+ content: '';
308
+ height: 2px;
309
+ bottom: 0;
310
+ left: 0;
311
+ background-color: var(--el-color-primary);
312
+ width: 0;
313
+ }
314
+
315
+ .item:hover::after,
316
+ .item.active::after {
317
+ width: 100%;
318
+ transition: width 0.45s;
319
+ }
320
+ }
321
+ }
322
+ </style>
@@ -0,0 +1,59 @@
1
+ <template>
2
+ <el-space class="left">
3
+ <div></div>
4
+ <Expand></Expand>
5
+ <el-scrollbar v-if="!globalStore.isMobile && themeConfig.breadcrumb" :min-size="10" wrap-style="display:flex;align-items:center">
6
+ <el-breadcrumb separator="/">
7
+ <el-breadcrumb-item v-for="(item, index) in breadcrumbList" :key="item.path" :to="index === breadcrumbList.length - 1 || !item.redirect ? undefined : item">{{
8
+ $t(item.meta!.title!)
9
+ }}</el-breadcrumb-item>
10
+ </el-breadcrumb>
11
+ </el-scrollbar>
12
+ </el-space>
13
+ </template>
14
+ <script setup lang="ts" name="Left">
15
+ import { event, mitter } from '@/event';
16
+ import Expand from '@/layout/components/expand.vue';
17
+ import { useGlobalStore, useRouteStore, useSettingStore } from '@/store';
18
+ import { RouteLocationNormalized, RouteRecordRaw } from 'vue-router';
19
+ const { themeConfig } = storeToRefs(useSettingStore());
20
+ const globalStore = useGlobalStore();
21
+ const breadcrumbList = ref([] as Pick<RouteRecordRaw, 'name' | 'path' | 'meta' | 'redirect'>[]);
22
+ const route = useRoute();
23
+ const { routes } = storeToRefs(useRouteStore());
24
+ const setBreadcrumbList = (route: RouteLocationNormalized) => {
25
+ const list = [] as Pick<RouteRecordRaw, 'name' | 'path' | 'meta' | 'redirect'>[];
26
+ let temp = { children: routes.value } as unknown as RouteRecordRaw;
27
+ route.meta.menuIndex!.forEach((item) => {
28
+ temp = temp.children![item];
29
+ if (temp.meta?.title && temp.meta.breadcrumb !== false && (temp.meta.breadcrumb || temp.children?.filter((v) => v.meta?.breadcrumb !== false).length !== 1)) {
30
+ list.push({
31
+ name: temp.name,
32
+ path: temp.path,
33
+ meta: temp.meta,
34
+ redirect: temp.redirect === route.path ? undefined : temp.redirect,
35
+ });
36
+ }
37
+ });
38
+ breadcrumbList.value = list;
39
+ };
40
+ setBreadcrumbList(route);
41
+ mitter.on(event.BEFORE_ROUTE_CHANGE, ({ to }) => setBreadcrumbList(to), true);
42
+ </script>
43
+ <style lang="scss" scoped>
44
+ .left {
45
+ height: 100%;
46
+
47
+ .fold-expand {
48
+ font-size: 20px;
49
+ }
50
+
51
+ &:deep(.el-breadcrumb__inner.is-link) {
52
+ font-weight: normal;
53
+ }
54
+
55
+ &:deep(.el-space__item:nth-child(3)) {
56
+ height: 80%;
57
+ }
58
+ }
59
+ </style>
@@ -0,0 +1,82 @@
1
+ <template>
2
+ <el-dropdown class="message-box" max-height="500px" trigger="click">
3
+ <div class="flex-center pointer">
4
+ <el-badge :is-dot="isDot">
5
+ <mel-icon-bell class="message-icon"></mel-icon-bell>
6
+ </el-badge>
7
+ </div>
8
+ <template #dropdown>
9
+ <div class="message-tabs">
10
+ <div class="message-header">
11
+ <el-link>{{ $t('全部') }}{{ $t(' ') }}{{ $t('已读') }}</el-link>
12
+ <el-link>{{ $t('查看') }}{{ $t(' ') }}{{ $t('更多') }}</el-link>
13
+ </div>
14
+ <el-tabs model-value="notify">
15
+ <el-tab-pane :label="$t('通知')" name="notify">
16
+ <div v-for="o in 4" :key="o" class="text notify-item">
17
+ {{ 'List item ' + o }}
18
+ <div class="date">2022/08/08</div>
19
+ </div>
20
+ </el-tab-pane>
21
+ <el-tab-pane :label="$t('消息')" name="message">
22
+ <div v-for="o in 4" :key="o" class="text notify-item">
23
+ {{ 'List item ' + o }}
24
+ <div class="date">2022/08/08</div>
25
+ </div>
26
+ </el-tab-pane>
27
+ <el-tab-pane :label="$t('待办')" name="agenda">
28
+ <div v-for="o in 4" :key="o" class="text notify-item">
29
+ {{ 'List item ' + o }}
30
+ <div class="date">2022/08/08</div>
31
+ </div>
32
+ </el-tab-pane>
33
+ </el-tabs>
34
+ </div>
35
+ </template>
36
+ </el-dropdown>
37
+ </template>
38
+ <script setup lang="ts" name="MessageBox">
39
+ const isDot = ref(true);
40
+ </script>
41
+ <style lang="scss" scoped>
42
+ .message-box {
43
+ .flex-center {
44
+ padding: 0 10px;
45
+
46
+ .message-icon {
47
+ height: 25px;
48
+ line-height: 25px;
49
+ font-size: 1.3em;
50
+ }
51
+ }
52
+ }
53
+
54
+ .message-tabs {
55
+ padding: 15px 10px;
56
+ height: 300px;
57
+ font-size: 14px;
58
+
59
+ .message-header {
60
+ display: flex;
61
+ justify-content: space-between;
62
+
63
+ :deep(.el-link) {
64
+ font-size: 0.85em !important;
65
+ }
66
+ }
67
+
68
+ :deep(.el-tabs__header) {
69
+ margin-bottom: 0;
70
+ }
71
+
72
+ .notify-item {
73
+ padding: 5px 0;
74
+ border-bottom: 1px solid #eeeeee;
75
+
76
+ .date {
77
+ font-size: 12px;
78
+ color: var(--el-text-color-placeholder);
79
+ }
80
+ }
81
+ }
82
+ </style>
@@ -0,0 +1,53 @@
1
+ <template>
2
+ <el-dropdown class="me-size-select" trigger="click" max-height="500px">
3
+ <div class="flex-center pointer" v-bind="$attrs">
4
+ <el-avatar size="small" class="avatar" :src="userStore.user.avatar" />
5
+ <span v-if="!globalStore.isMobile" class="ellipsis-2">{{ userStore.user.name }}</span>
6
+ </div>
7
+ <template #dropdown>
8
+ <el-dropdown-menu>
9
+ <router-link to="/">
10
+ <el-dropdown-item>
11
+ {{ $t('首页') }}
12
+ </el-dropdown-item>
13
+ </router-link>
14
+ <a href="https://github.com/meadmin-cn/meadmin-template">
15
+ <el-dropdown-item>
16
+ {{ $t('Github') }}
17
+ </el-dropdown-item>
18
+ </a>
19
+ <a href="https://gitee.com/meadmin-cn/meadmin-template">
20
+ <el-dropdown-item>
21
+ {{ $t('Gitee') }}
22
+ </el-dropdown-item>
23
+ </a>
24
+ <a href="https://meadmin-cn.github.io/meadmin-template-doc/">
25
+ <el-dropdown-item>
26
+ {{ $t('文档') }}
27
+ </el-dropdown-item>
28
+ </a>
29
+ <el-dropdown-item divided @click="userStore.logOut()">
30
+ {{ $t('退出登录') }}
31
+ </el-dropdown-item>
32
+ </el-dropdown-menu>
33
+ </template>
34
+ </el-dropdown>
35
+ </template>
36
+
37
+ <script setup lang="ts" name="User">
38
+ import { useGlobalStore, useUserStore } from '@/store';
39
+ const userStore = useUserStore();
40
+ const globalStore = useGlobalStore();
41
+ </script>
42
+ <style lang="scss" scoped>
43
+ .flex-center {
44
+ max-width: 120px;
45
+ padding: 0 10px;
46
+ line-height: 120%;
47
+
48
+ .avatar {
49
+ margin-right: 5px;
50
+ flex-shrink: 0;
51
+ }
52
+ }
53
+ </style>
@@ -0,0 +1,44 @@
1
+ <template>
2
+ <div class="right">
3
+ <div></div>
4
+ <me-search-menu v-if="themeConfig.showSearchMenu" class="item"></me-search-menu>
5
+ <me-dark-switch v-if="themeConfig.showDark" class="item no-hover"></me-dark-switch>
6
+ <me-locale-select v-if="localeConfig.localeList.length > 1" class="item"></me-locale-select>
7
+ <me-size-select v-if="themeConfig.showSize" class="item"></me-size-select>
8
+ <message-box class="item"></message-box>
9
+ <user class="item"></user>
10
+ <me-setting v-if="themeConfig.showSetting" class="item"></me-setting>
11
+ </div>
12
+ </template>
13
+ <script setup lang="ts" name="Right">
14
+ import { localeConfig } from '@/config';
15
+ import { useSettingStore } from '@/store';
16
+ import MessageBox from './components/messageBox.vue';
17
+ import User from './components/user.vue';
18
+ const { themeConfig } = storeToRefs(useSettingStore());
19
+ </script>
20
+ <style lang="scss" scoped>
21
+ .right {
22
+ font-size: 14px;
23
+ height: 100%;
24
+ display: flex;
25
+
26
+ .item {
27
+ height: 100%;
28
+ }
29
+
30
+ .item:hover {
31
+ background-color: var(--el-fill-color);
32
+ }
33
+
34
+ .no-hover:hover {
35
+ background-color: unset;
36
+ }
37
+
38
+ &:deep(.el-space__item) {
39
+ height: 100%;
40
+ display: flex;
41
+ align-items: center;
42
+ }
43
+ }
44
+ </style>
@@ -0,0 +1,33 @@
1
+ <template>
2
+ <div style="position: relative; height: 100%">
3
+ <el-menu class="top-menu" :default-active="activeMenu" mode="horizontal">
4
+ <layout-menu-item v-for="item in menus" :key="item.path" :no-child="true" :item="item" :collapse="themeConfig.menuCollapse" />
5
+ </el-menu>
6
+ </div>
7
+ </template>
8
+
9
+ <script setup lang="ts" name="TopMenu">
10
+ import { useRouteStore, useSettingStore } from '@/store';
11
+ const { themeConfig } = storeToRefs(useSettingStore());
12
+ const routeStore = useRouteStore();
13
+ const route = useRoute();
14
+ const menus = computed(() => {
15
+ return routeStore.routes.filter((item) => {
16
+ return item.meta && !item.meta.hideMenu && item.meta.title;
17
+ });
18
+ });
19
+ const activeMenu = computed(() => {
20
+ return route.meta.menuIndex?.[0] + '';
21
+ });
22
+ </script>
23
+ <style lang="scss" scoped>
24
+ .top-menu {
25
+ position: absolute;
26
+ left: 0;
27
+ top: 0;
28
+ height: 100%;
29
+ right: 0;
30
+ border-bottom: 0;
31
+ --el-menu-item-height: #{$header-top-height};
32
+ }
33
+ </style>
@@ -0,0 +1,30 @@
1
+ <template>
2
+ <div class="top-bar">
3
+ <Title v-if="menuType === 'top'"></Title>
4
+ <Left v-else></Left>
5
+ <top-menu v-if="menuType === 'top'" class="menu"></top-menu>
6
+ <Right></Right>
7
+ </div>
8
+ </template>
9
+
10
+ <script setup lang="ts" name="TopBar">
11
+ import Title from '@/layout/components/title.vue';
12
+ import { useSettingStore } from '@/store';
13
+ import Left from './components/left.vue';
14
+ import Right from './components/right/index.vue';
15
+ import TopMenu from './components/topMenu.vue';
16
+ const { menuType } = storeToRefs(useSettingStore());
17
+ </script>
18
+ <style lang="scss" scoped>
19
+ .top-bar {
20
+ height: $header-top-height;
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: space-between;
24
+ border-bottom: 1px solid var(--el-border-color);
25
+ overflow: hidden;
26
+ .menu {
27
+ flex: 1;
28
+ }
29
+ }
30
+ </style>
@@ -0,0 +1,15 @@
1
+ <template>
2
+ <div class="layout-header">
3
+ <top-bar v-if="themeConfig.topBar"></top-bar>
4
+ </div>
5
+ </template>
6
+ <script setup lang="ts" name="LayoutHeader">
7
+ import { useSettingStore } from '@/store';
8
+ import TopBar from './components/topBar/index.vue';
9
+ const { themeConfig } = storeToRefs(useSettingStore());
10
+ </script>
11
+ <style lang="scss" scoped>
12
+ .layout-header {
13
+ background-color: var(--el-bg-color);
14
+ }
15
+ </style>