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,72 @@
1
+ <template>
2
+ <template v-if="menu">
3
+ <el-sub-menu v-if="menu.children?.length && !noChild" :index="menu.path">
4
+ <template v-if="menu.meta" #title>
5
+ <component :is="menu.meta!.icon" v-if="menu.meta!.icon" />
6
+ <div v-show="collapse" v-else class="icon-text">{{ $t(menu.meta.title).slice(0, 1) }}</div>
7
+ <span class="menu">{{ $t(menu.meta!.title!) }}</span>
8
+ </template>
9
+ <layout-menu-item v-for="child in menu.children" :key="child.path" :item="child"></layout-menu-item>
10
+ </el-sub-menu>
11
+ <template v-else>
12
+ <component :is="truePathMenu!.meta?.isLink ? 'a' : 'routerLink'" v-if="menu.meta && menu.meta.title" :href="truePathMenu!.path" :to="truePathMenu!.path">
13
+ <el-menu-item :index="noChild ? item.meta?.menuIndex?.toString() : menu.path" :title="$t(menu.meta.title)">
14
+ <component :is="menu.meta.icon" v-if="menu.meta.icon" />
15
+ <div v-show="collapse" v-else class="icon-text">{{ $t(menu.meta.title).slice(0, 1) }}</div>
16
+ <template #title>
17
+ <span class="menu">{{ $t(menu.meta.title) }}</span>
18
+ </template>
19
+ </el-menu-item>
20
+ </component>
21
+ </template>
22
+ </template>
23
+ </template>
24
+
25
+ <script setup lang="ts" name="MenuItem">
26
+ import { useRouteStore } from '@/store';
27
+ import { RouteRecordRaw } from 'vue-router';
28
+ const routeStore = useRouteStore();
29
+ const props = defineProps<{ item: RouteRecordRaw; noChild?: boolean; collapse?: boolean }>();
30
+ const menu = ref<RouteRecordRaw>();
31
+ const getMenu = (item: RouteRecordRaw): RouteRecordRaw => {
32
+ if (!item.children?.length) {
33
+ return item;
34
+ }
35
+ const children = item.children.filter((v) => v.meta && !v.meta.hideMenu);
36
+ const res = { ...item, children: children };
37
+ if (!item.meta?.alwaysShow && children.length === 1) {
38
+ return getMenu(children[0]);
39
+ }
40
+ return res;
41
+ };
42
+ const truePathMenu = ref<RouteRecordRaw>();
43
+ if (!props.item.meta?.hideMenu) {
44
+ truePathMenu.value = menu.value = getMenu(props.item);
45
+ }
46
+ if (props.noChild) {
47
+ const firstChildrenMenu: (children: RouteRecordRaw[]) => RouteRecordRaw | undefined = (children: RouteRecordRaw[]) => {
48
+ for (let i = 0; i < children.length; i++) {
49
+ if (!children[i].meta?.hideMenu) {
50
+ return children[i];
51
+ }
52
+ if (children[i].children) {
53
+ const item = firstChildrenMenu(children[i].children!);
54
+ if (item) {
55
+ return item;
56
+ }
57
+ }
58
+ return undefined;
59
+ }
60
+ };
61
+ if (menu.value?.children?.length) {
62
+ truePathMenu.value = firstChildrenMenu(menu.value.children) ?? menu.value;
63
+ }
64
+ routeStore.childsRoutes[props.item!.meta!.menuIndex![0]] = menu.value?.children ?? [];
65
+ }
66
+ </script>
67
+ <style lang="scss" scoped>
68
+ .icon-text {
69
+ width: 1em;
70
+ text-align: center;
71
+ }
72
+ </style>
@@ -0,0 +1,147 @@
1
+ <template>
2
+ <div v-if="menus.length" class="layout-menu" :class="{ 'has-title': menuType !== 'top', 'collapse': !globalStore.isMobile && themeConfig.menuCollapse }">
3
+ <Expand v-if="menuType === 'top'" class="expand"></Expand>
4
+ <Title v-else class="layout-title"></Title>
5
+ <div class="menu-box">
6
+ <el-scrollbar view-class="layout-menu-content">
7
+ <el-menu class="el-menu-vertical-demo" :default-active="activeMenu" :collapse="!globalStore.isMobile && themeConfig.menuCollapse">
8
+ <menu-item v-for="item in menus" :key="item.path" :item="item" :collapse="themeConfig.menuCollapse" />
9
+ </el-menu>
10
+ </el-scrollbar>
11
+ </div>
12
+ </div>
13
+ </template>
14
+ <script setup lang="ts" name="layoutMenu">
15
+ import Expand from '@/layout/components/expand.vue';
16
+ import { useGlobalStore, useRouteStore, useSettingStore } from '@/store';
17
+ import { getColorLuma, mixColor } from '@/utils/helper';
18
+ import Title from '../title.vue';
19
+ import menuItem from './components/menuItem.vue';
20
+ const { themeConfig, menuType } = storeToRefs(useSettingStore());
21
+ const routeStore = useRouteStore();
22
+ const globalStore = useGlobalStore();
23
+ const route = useRoute();
24
+ let activeMenu = ref('');
25
+ watch(
26
+ route,
27
+ (route) => {
28
+ if (route.meta) {
29
+ if (route.meta.hideMenu) {
30
+ if (route.meta.activeMenu) {
31
+ activeMenu.value = route.meta.activeMenu;
32
+ }
33
+ } else {
34
+ activeMenu.value = route.path;
35
+ }
36
+ }
37
+ },
38
+ { immediate: true },
39
+ );
40
+ const menuBg1 = computed(() => mixColor(themeConfig.value.menuBg, getColorLuma(themeConfig.value.menuBg) < 100 ? '#ffffff' : '#303133', 0.1));
41
+ const menuActiveColor = computed(() => (getColorLuma(themeConfig.value.menuBg) < 100 ? '#ffffff' : '#303133'));
42
+ const menuTextColor = computed(() => mixColor(themeConfig.value.menuBg, menuActiveColor.value, 0.8));
43
+ const menus = computed(() => {
44
+ return menuType.value === 'top' ? routeStore.childsRoutes[route.meta.menuIndex![0]] : routeStore.routes;
45
+ });
46
+ </script>
47
+ <style lang="scss" scoped>
48
+ .layout-menu {
49
+ --el-menu-base-level-padding: 12px;
50
+ --el-menu-text-color: v-bind('menuTextColor');
51
+ --el-menu-active-color: v-bind('menuActiveColor');
52
+ background-color: v-bind('themeConfig.menuBg');
53
+ height: 100%;
54
+ position: relative;
55
+
56
+ .layout-title {
57
+ position: absolute;
58
+ left: 0;
59
+ right: 0;
60
+ top: 0;
61
+ color: var(--el-menu-active-color);
62
+ width: 100%;
63
+ box-shadow: 0 1px v-bind(menuBg1);
64
+ }
65
+ .menu-box {
66
+ height: 100%;
67
+ :deep(.layout-menu-content) {
68
+ width: v-bind('themeConfig.menuWidth');
69
+ color: var(--el-menu-text-color);
70
+ transition: width 0.5s;
71
+
72
+ .menu {
73
+ padding-right: 6px;
74
+ white-space: nowrap;
75
+ overflow: hidden;
76
+ text-overflow: ellipsis;
77
+ word-break: break-all;
78
+ }
79
+
80
+ .el-menu {
81
+ background-color: unset;
82
+ border: 0;
83
+
84
+ .el-sub-menu.is-active {
85
+ > .el-sub-menu__title {
86
+ color: var(--el-menu-active-color);
87
+ }
88
+ }
89
+ .el-sub-menu__title {
90
+ padding-right: 28px;
91
+ }
92
+ .el-sub-menu__title:hover,
93
+ .el-menu-item:hover {
94
+ background-color: rgba(var(--el-color-primary-rgb), 0.3);
95
+ color: var(--el-menu-active-color);
96
+ }
97
+
98
+ .el-menu-item.is-active {
99
+ color: var(--el-color-primary);
100
+ }
101
+
102
+ .el-menu--inline {
103
+ background-color: v-bind('menuBg1');
104
+ }
105
+
106
+ .el-menu-item,
107
+ .el-sub-menu {
108
+ .el-icon {
109
+ width: 1em;
110
+ margin-left: -1px;
111
+ margin-right: 12px;
112
+ }
113
+ }
114
+ }
115
+ }
116
+ }
117
+ .expand {
118
+ position: absolute;
119
+ bottom: 20px;
120
+ right: 12px;
121
+ padding: 5px;
122
+ background-color: rgba(255, 255, 255, 0.6);
123
+ border-radius: 2px;
124
+ z-index: 1;
125
+ }
126
+ }
127
+ .has-title {
128
+ padding-top: $header-top-height;
129
+ }
130
+ .collapse {
131
+ :deep(.layout-menu-content) {
132
+ width: calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding) * 2) !important;
133
+ span {
134
+ visibility: hidden;
135
+ }
136
+ // .title {
137
+ // width: calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding) * 2);
138
+ // text-align: center;
139
+ // margin: 0;
140
+
141
+ // span {
142
+ // display: none;
143
+ // }
144
+ // }
145
+ }
146
+ }
147
+ </style>
@@ -0,0 +1,33 @@
1
+ <template>
2
+ <router-view v-slot="{ Component, route }">
3
+ <me-component :is="Component" :transition="props.transition" :keep-alive="keepAliveProps" :component-key="route.fullPath" done-progress close-loading="layout" :suspense="{}"> </me-component>
4
+ </router-view>
5
+ </template>
6
+
7
+ <script setup lang="ts" name="LayoutPage">
8
+ import { MeKeepAliveProps } from '@/components/meKeepAlive';
9
+ import { settingConfig } from '@/config';
10
+ import { useRouteStore } from '@/store';
11
+ import { ComputedRef, TransitionProps } from 'vue';
12
+ const props = defineProps<{
13
+ transition?: TransitionProps;
14
+ }>();
15
+ const routeStore = useRouteStore();
16
+ let keepAliveProps: undefined | ComputedRef<MeKeepAliveProps>;
17
+ if (settingConfig.openKeepAlive) {
18
+ keepAliveProps = computed<MeKeepAliveProps>(() => ({
19
+ max: 30,
20
+ includeKey: [...routeStore.cacheFullPath],
21
+ }));
22
+ const route = useRoute();
23
+ watch(
24
+ route,
25
+ () => {
26
+ if (!route.meta.noCache) {
27
+ routeStore.cacheFullPath.add(route.fullPath);
28
+ }
29
+ },
30
+ { immediate: true },
31
+ );
32
+ }
33
+ </script>
@@ -0,0 +1,21 @@
1
+ <template>
2
+ <div class="title">M<span>e - Admin</span></div>
3
+ </template>
4
+
5
+ <script setup lang="ts" name="Title">
6
+ import { useSettingStore } from '@/store';
7
+ const { themeConfig } = storeToRefs(useSettingStore());
8
+ </script>
9
+ <style lang="scss" scoped>
10
+ .title {
11
+ height: $header-top-height;
12
+ line-height: $header-top-height;
13
+ font-weight: bold;
14
+ padding: 0 12px;
15
+ font-size: 1.25em;
16
+ word-break: break-all;
17
+ overflow-y: hidden;
18
+ background-color: inherit;
19
+ width: v-bind('themeConfig.menuWidth');
20
+ }
21
+ </style>
@@ -0,0 +1,104 @@
1
+ <template>
2
+ <el-container class="layout">
3
+ <el-aside v-if="!globalStore.isMobile && menuType !== 'top'" width="max-content">
4
+ <layout-menu></layout-menu>
5
+ </el-aside>
6
+ <el-container>
7
+ <el-header v-if="themeConfig.fixedHeader" class="right-header" height="max-content">
8
+ <layout-header></layout-header>
9
+ </el-header>
10
+ <el-main class="main">
11
+ <el-aside v-if="menuType === 'top'" width="max-content">
12
+ <layout-menu></layout-menu>
13
+ </el-aside>
14
+ <el-main class="right-main">
15
+ <tag-bar v-if="themeConfig.tagBar"></tag-bar>
16
+ <el-scrollbar id="me-main-scroll" view-class="me-right-main-view">
17
+ <layout-header v-if="!themeConfig.fixedHeader"></layout-header>
18
+ <div id="me-main" class="me-main">
19
+ <layout-page :transition="{ name: 'fade-transform', mode: 'out-in' }"></layout-page>
20
+ </div>
21
+ </el-scrollbar>
22
+ </el-main>
23
+ </el-main>
24
+ </el-container>
25
+ </el-container>
26
+ <el-drawer
27
+ v-if="globalStore.isMobile"
28
+ class="me-sidebar-drawer"
29
+ :model-value="!themeConfig.menuCollapse"
30
+ :with-header="false"
31
+ :size="themeConfig.menuWidth"
32
+ direction="ltr"
33
+ @close="() => (themeConfig.menuCollapse = true)"
34
+ >
35
+ <layout-menu></layout-menu>
36
+ </el-drawer>
37
+ <me-setting v-if="themeConfig.showSetting && !themeConfig.topBar" class="fixed-setting"></me-setting>
38
+ <me-setting-menu></me-setting-menu>
39
+ </template>
40
+ <script setup lang="ts" name="Layout">
41
+ import { useGlobalStore, useSettingStore } from '@/store';
42
+ import TagBar from './components/header/components/tagBar/index.vue';
43
+ import LayoutHeader from './components/header/index.vue';
44
+ import LayoutMenu from './components/menu/index.vue';
45
+ import LayoutPage from './components/page.vue';
46
+ const { themeConfig, menuType } = storeToRefs(useSettingStore());
47
+ const globalStore = useGlobalStore();
48
+ onMounted(() => {
49
+ nextTick(() => (globalStore.layoutLoaded = true));
50
+ });
51
+ </script>
52
+ <style lang="scss" scoped>
53
+ .layout {
54
+ height: 100%;
55
+ .right-header {
56
+ padding: 0;
57
+ }
58
+
59
+ .main {
60
+ padding: 0;
61
+ display: flex;
62
+ }
63
+ .right-main {
64
+ padding: 0;
65
+ // background-color: rgb(240, 242, 245);
66
+ background-color: var(--el-bg-color-page);
67
+ display: flex;
68
+ flex-direction: column;
69
+ }
70
+ }
71
+
72
+ // .dark {
73
+ // .layout {
74
+ // .right-main {
75
+ // background-color: var(--el-bg-color);
76
+ // }
77
+ // }
78
+ // }
79
+ :deep(.me-right-main-view) {
80
+ min-height: 100%;
81
+ display: flex;
82
+ flex-direction: column;
83
+ .me-main {
84
+ flex-grow: 1;
85
+ flex-shrink: 1;
86
+ display: flex;
87
+ flex-direction: column;
88
+ padding: $page-padding;
89
+ position: relative;
90
+ }
91
+ }
92
+
93
+ .fixed-setting {
94
+ position: fixed;
95
+ top: 50%;
96
+ right: 0;
97
+ padding: 10px;
98
+ border-radius: 3px 0 0 3px;
99
+ transform: translateY(-50%);
100
+ z-index: $z-index-top;
101
+ background-color: var(--el-color-primary);
102
+ color: var(--el-color-white);
103
+ }
104
+ </style>
@@ -0,0 +1,127 @@
1
+ import { localeConfig as config } from '@/config';
2
+ import { event, mitter } from '@/event';
3
+ import { useGlobalStore, useSettingStore } from '@/store';
4
+ import { closeLoading, loading } from '@/utils/loading';
5
+ import log from '@/utils/log';
6
+ import { Language } from 'element-plus/es/locale';
7
+ import { Composer, LocaleMessages, VueMessageType } from 'vue-i18n';
8
+ type GlobaleI18n = Composer<Record<string, any>, Record<string, any>, Record<string, any>, any>;
9
+ const messageMap: Map<string, Record<any, any>> = new Map();
10
+ export type MessageImport = [(locale: string) => Promise<{ default: LocaleMessages<VueMessageType> }>, string?];
11
+
12
+ /**
13
+ * 异步加载语言包
14
+ * @param messageImport 加载函数
15
+ * @param locale 语言
16
+ * @param isLoading 是否loading(仅会在异步加载时进行loading)
17
+ * @returns
18
+ */
19
+ export const loadMessage = <P extends Record<any, any> = { default: LocaleMessages<VueMessageType> }>(
20
+ messageImport: [(locale: string) => Promise<P>, string?],
21
+ locale?: string,
22
+ isLoading?: boolean,
23
+ ) => {
24
+ if (!locale) {
25
+ locale = useGlobalStore().i18n.locale.value;
26
+ }
27
+ const mapName = (messageImport[1] ?? messageImport[0].toString()) + '|' + locale;
28
+ const message = messageMap.get(mapName);
29
+ if (message) {
30
+ return message as P;
31
+ }
32
+ isLoading && loading();
33
+ return new Promise<P | null>((resolve) => {
34
+ let timeOut: NodeJS.Timeout;
35
+ if (config.loadMessageConfig.timeOut) {
36
+ timeOut = setTimeout(() => {
37
+ log.warn('加载语言包超时');
38
+ isLoading && closeLoading();
39
+ resolve(null);
40
+ }, config.loadMessageConfig.timeOut);
41
+ }
42
+ messageImport[0](locale!)
43
+ .then((message) => {
44
+ timeOut && clearTimeout(timeOut);
45
+ if (message) {
46
+ messageMap.set(mapName, message);
47
+ isLoading && closeLoading();
48
+ resolve(message);
49
+ }
50
+ })
51
+ .catch((e) => {
52
+ timeOut && clearTimeout(timeOut);
53
+ if (import.meta.env.DEV && config.loadMessageConfig.errorWarning) {
54
+ log.warn(`语言包${mapName}加载失败:`, e);
55
+ }
56
+ isLoading && closeLoading();
57
+ resolve(null);
58
+ });
59
+ });
60
+ };
61
+
62
+ /**
63
+ * 异步设置语言包
64
+ * @param i18n
65
+ * @param locale
66
+ * @param messageImport
67
+ * @returns
68
+ */
69
+ export const setLocaleMessage = (i18n: GlobaleI18n, locale: string, messageImport: MessageImport) => {
70
+ if (Object.keys(i18n.getLocaleMessage(locale)).length) {
71
+ return true;
72
+ }
73
+ const message = loadMessage(messageImport, locale);
74
+ if (message instanceof Promise) {
75
+ return new Promise((resolve) => {
76
+ (message as Promise<{ default: LocaleMessages<VueMessageType> } | undefined>)
77
+ .then((message) => {
78
+ if (message?.default) {
79
+ i18n.setLocaleMessage(locale, message.default);
80
+ resolve(true);
81
+ } else {
82
+ resolve(false);
83
+ }
84
+ })
85
+ .catch(() => resolve(false));
86
+ });
87
+ } else if (message.default) {
88
+ i18n.setLocaleMessage(locale, message.default);
89
+ }
90
+ return false;
91
+ };
92
+
93
+ /**
94
+ * 切换对应语言
95
+ * @param locale
96
+ * @param isLoading
97
+ * @param i18n
98
+ * @returns
99
+ */
100
+ export const setI18nLanguage = async (locale: string, isLoading = true, i18n?: GlobaleI18n) => {
101
+ if (!i18n) {
102
+ i18n = useGlobalStore().i18n;
103
+ if (!i18n) {
104
+ throw new Error('请传入i18n 或在全局i18n注册后调用');
105
+ }
106
+ }
107
+ if (i18n.locale.value === locale) {
108
+ return true;
109
+ }
110
+ isLoading && loading();
111
+ if (i18n === useGlobalStore().i18n) {
112
+ useSettingStore().locale = locale;
113
+ const messageArr = [
114
+ setLocaleMessage(i18n, locale, [async (locale) => await import(`./lang/${locale}/index.ts`)]),
115
+ loadMessage<{ default: Language }>([async (locale) => await import(`../../node_modules/element-plus/es/locale/lang/${locale}.mjs`), 'element-plus'], locale),
116
+ ...mitter.emit(event.BEFORE_LOCAL_CHANGE, { locale, i18n }),
117
+ ];
118
+ const res = await Promise.allSettled(messageArr);
119
+ if (res[1].status === 'fulfilled' && res[1].value) {
120
+ useSettingStore().elLocale = res[1].value.default;
121
+ }
122
+ document?.querySelector('html')?.setAttribute('lang', locale);
123
+ }
124
+ i18n.locale.value = locale;
125
+ isLoading && closeLoading();
126
+ return true;
127
+ };
@@ -0,0 +1,50 @@
1
+ /*
2
+ * @Author: yuntian001 479820787@qq.com
3
+ * @Date: 2022-08-07 00:35:28
4
+ * @LastEditors: yuntian001 479820787@qq.com
5
+ * @LastEditTime: 2022-08-07 08:11:32
6
+ * @FilePath: \meadmin-template\src\locales\hooks.ts
7
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
8
+ */
9
+ import { event, mitter } from '@/event';
10
+ import { useI18n, UseI18nOptions } from 'vue-i18n';
11
+ import { MessageImport, setLocaleMessage } from './helper';
12
+
13
+ /**
14
+ * useI18n 会自动加载locale语言包(语言包加载为异步执行,如果语言包被加载过则执行时效和同步一致)
15
+ * @param options useScope的默认值改为了 local
16
+ * @param messageImport
17
+ * @returns
18
+ */
19
+ export const useLocalesI18n = <Options extends UseI18nOptions = UseI18nOptions>(options?: Options, messageImport?: MessageImport) => {
20
+ const res = useI18n<Options>(Object.assign({ useScope: 'local' }, options));
21
+ let loadRes = undefined; //加载语言包返回值,如需要等待加载完语言包后再渲染组件 可以在组件
22
+ if (messageImport) {
23
+ loadRes = setLocaleMessage(res, res.locale.value!, messageImport);
24
+ mitter.on(
25
+ event.BEFORE_LOCAL_CHANGE,
26
+ (params) => {
27
+ setLocaleMessage(res, params.locale, messageImport);
28
+ },
29
+ true,
30
+ );
31
+ }
32
+ return { ...res, loadRes: loadRes };
33
+ };
34
+
35
+ /**
36
+ * useI18n 会自动加载locale语言包(语言包加载为异步执行,如果语言包被加载过则执行时效和同步一致)
37
+ * @param options
38
+ * @param messageImport
39
+ * @returns
40
+ */
41
+ export const asyncUseLocalesI18n = async <Options extends UseI18nOptions = UseI18nOptions>(options?: Options, messageImport?: MessageImport) => {
42
+ const res = useI18n<Options>(Object.assign({ useScope: 'local' }, options));
43
+ if (messageImport) {
44
+ await setLocaleMessage(res, res.locale.value!, messageImport);
45
+ mitter.on(event.BEFORE_LOCAL_CHANGE, (params) => {
46
+ setLocaleMessage(res, params.locale, messageImport);
47
+ });
48
+ }
49
+ return res;
50
+ };
@@ -0,0 +1,16 @@
1
+ import { localeConfig as config } from '@/config';
2
+ import { useGlobalStore, useSettingStore } from '@/store';
3
+ import { App } from 'vue';
4
+ import { createI18n, I18nOptions } from 'vue-i18n';
5
+ import { setI18nLanguage } from './helper';
6
+
7
+ // 安装VueI18n
8
+ export const installI18n = async (app: App) => {
9
+ const options = { ...config.localeSetting, legacy: false, locale: undefined, globalInjection: true };
10
+ const i18n = createI18n(options as { legacy: false; globalInjection: true } & I18nOptions);
11
+ useGlobalStore().i18n = i18n.global;
12
+ await setI18nLanguage(useSettingStore().locale, false);
13
+ app.use(i18n);
14
+ };
15
+ export * from './helper';
16
+ export * from './hooks';
@@ -0,0 +1,65 @@
1
+ {
2
+ " ": " ",
3
+ "登录": "Login",
4
+ "{label}必须填写": "{label} must be filled in",
5
+ "用户名": "Username",
6
+ "密码": "Password",
7
+ "验证码": "Captcha",
8
+ "项目配置": "Theme Config",
9
+ "主题色": "Theme Color",
10
+ "侧边栏背景色": "Sidebar Background",
11
+ "折叠侧边栏": "Collapse Sidebar",
12
+ "侧边栏展开宽度": "Sidebar Width",
13
+ "固定": "Fixed",
14
+ "顶栏": "Top Bar",
15
+ "模式": "Mode",
16
+ "切换": "Change",
17
+ "面包屑": "Breadcrumb",
18
+ "标签栏": "Tab Bar",
19
+ "刷新": "Refresh",
20
+ "按钮": "Button",
21
+ "快捷": "Shortcut",
22
+ "菜单": "Menu",
23
+ "复制": "Copy",
24
+ "重置": "Reset",
25
+ "关闭": "Close",
26
+ "当前": "Now",
27
+ "左侧": "Left",
28
+ "右侧": "Right",
29
+ "全部": "All",
30
+ "其他": "Other",
31
+ "重新加载": "Refresh",
32
+ "已读": "Read",
33
+ "查看": "show",
34
+ "更多": "More",
35
+ "通知": "Notice",
36
+ "消息": "Message Box",
37
+ "待办": "Backlog",
38
+ "文档": "Document",
39
+ "清除缓存": "Clear Cache",
40
+ "并": "And",
41
+ "退出登录": "Logout",
42
+ "页面不见了": "The page is gone",
43
+ "去": "Go",
44
+ "操作失败,请稍后重试": "Operation failed, please try again later",
45
+ "返回值解析失败": "Failed to parse the return value",
46
+ "请求异常,请联系管理员": "The request is abnormal, Please contact the administrator",
47
+ "搜索": "Search",
48
+ "清除": "Clear",
49
+ "内容": "Conent",
50
+ "请输入": "Please input",
51
+ "获取": "Get",
52
+ "收起": "Pack Up ",
53
+ "展开": "Expansion",
54
+ "查询": "Query",
55
+ "操作": "Operate",
56
+ "上传": "Upload",
57
+ "选择": "Select",
58
+ "编辑": "Edit",
59
+ "新增": "Add",
60
+ "详情": "Details",
61
+ "预览": "Preview",
62
+ "下载": "Download",
63
+ "点击预览": "Click Preview",
64
+ "点击下载": "Click Download"
65
+ }
@@ -0,0 +1,7 @@
1
+ import { forOwn } from 'lodash-es';
2
+ const modules = import.meta.glob('./**/*.{json,ts}', { eager: true, import: 'default' });
3
+ const langs = {} as Record<string, string>;
4
+ forOwn(modules, (value) => {
5
+ Object.assign(langs, value);
6
+ });
7
+ export default langs;
@@ -0,0 +1,7 @@
1
+ {
2
+ "自定义列": "Custom Columns",
3
+ "导出": "Export",
4
+ "打印": "Print",
5
+ "快捷搜索": "Quick Search",
6
+ "更多筛选": "Filter By"
7
+ }
@@ -0,0 +1,11 @@
1
+ import enUS from 'vxe-table/lib/locale/lang/en-US';
2
+ export default Object.assign(
3
+ {
4
+ 自定义列: 'Custom Columns',
5
+ 导出: 'Export',
6
+ 打印: 'Print',
7
+ 快捷搜索: 'Quick Search',
8
+ 更多筛选: 'Filter By',
9
+ },
10
+ enUS,
11
+ );
@@ -0,0 +1 @@
1
+ { "管理员": "SystemAdmin", "菜单": "SystemMenu", "角色": "SystemRole", "附件": "File", "示例": "Example", "Demo": "Demo", "用户": "User", "User": "User", "用户附件表(前台)": "File" }