@liujitcn/kratos-admin-core 0.0.1

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 (368) hide show
  1. package/README.md +168 -0
  2. package/build/getEnv.ts +46 -0
  3. package/build/plugins.ts +206 -0
  4. package/build/proxy.ts +29 -0
  5. package/dist/package/declarations/build/getEnv.d.ts +13 -0
  6. package/dist/package/declarations/build/plugins.d.ts +20 -0
  7. package/dist/package/declarations/build/proxy.d.ts +10 -0
  8. package/dist/package/declarations/index.d.ts +7 -0
  9. package/dist/package/declarations/src/App.vue.d.ts +3 -0
  10. package/dist/package/declarations/src/api/base/config.d.ts +7 -0
  11. package/dist/package/declarations/src/api/base/file.d.ts +11 -0
  12. package/dist/package/declarations/src/api/base/login.d.ts +18 -0
  13. package/dist/package/declarations/src/api/base/oauth.d.ts +12 -0
  14. package/dist/package/declarations/src/api/system/auth.d.ts +13 -0
  15. package/dist/package/declarations/src/api/system/base_dict.d.ts +8 -0
  16. package/dist/package/declarations/src/api/system/base_tenant.d.ts +9 -0
  17. package/dist/package/declarations/src/auth.d.ts +1 -0
  18. package/dist/package/declarations/src/bootstrap.d.ts +23 -0
  19. package/dist/package/declarations/src/components/Card/DataPanelCard.vue.d.ts +23 -0
  20. package/dist/package/declarations/src/components/CronExpression/index.vue.d.ts +15 -0
  21. package/dist/package/declarations/src/components/Dialog/FormDialog.vue.d.ts +74 -0
  22. package/dist/package/declarations/src/components/Dialog/ProDialog.vue.d.ts +58 -0
  23. package/dist/package/declarations/src/components/Dict/DictLabel.vue.d.ts +11 -0
  24. package/dist/package/declarations/src/components/Dict/index.vue.d.ts +30 -0
  25. package/dist/package/declarations/src/components/ECharts/config/index.d.ts +7 -0
  26. package/dist/package/declarations/src/components/ECharts/index.vue.d.ts +22 -0
  27. package/dist/package/declarations/src/components/ErrorMessage/index.vue.d.ts +12 -0
  28. package/dist/package/declarations/src/components/Grid/components/GridItem.vue.d.ts +34 -0
  29. package/dist/package/declarations/src/components/Grid/index.vue.d.ts +28 -0
  30. package/dist/package/declarations/src/components/Grid/interface/index.d.ts +7 -0
  31. package/dist/package/declarations/src/components/ImportExcel/index.vue.d.ts +26 -0
  32. package/dist/package/declarations/src/components/Loading/fullScreen.d.ts +5 -0
  33. package/dist/package/declarations/src/components/Loading/index.vue.d.ts +3 -0
  34. package/dist/package/declarations/src/components/PasswordStrength/index.vue.d.ts +13 -0
  35. package/dist/package/declarations/src/components/ProForm/components/DynamicList.vue.d.ts +15 -0
  36. package/dist/package/declarations/src/components/ProForm/components/KvList.vue.d.ts +26 -0
  37. package/dist/package/declarations/src/components/ProForm/components/ProFormItem.vue.d.ts +28 -0
  38. package/dist/package/declarations/src/components/ProForm/index.vue.d.ts +36 -0
  39. package/dist/package/declarations/src/components/ProForm/interface/index.d.ts +47 -0
  40. package/dist/package/declarations/src/components/ProTable/components/ColSetting.vue.d.ts +9 -0
  41. package/dist/package/declarations/src/components/ProTable/components/Pagination.vue.d.ts +15 -0
  42. package/dist/package/declarations/src/components/ProTable/components/TableColumn.vue.d.ts +9 -0
  43. package/dist/package/declarations/src/components/ProTable/interface/index.d.ts +187 -0
  44. package/dist/package/declarations/src/components/ProTable.d.ts +5 -0
  45. package/dist/package/declarations/src/components/SearchForm/components/SearchFormItem.vue.d.ts +21 -0
  46. package/dist/package/declarations/src/components/SearchForm/index.vue.d.ts +22 -0
  47. package/dist/package/declarations/src/components/SelectFilter/index.vue.d.ts +44 -0
  48. package/dist/package/declarations/src/components/SelectIcon/index.vue.d.ts +19 -0
  49. package/dist/package/declarations/src/components/SvgIcon/index.vue.d.ts +15 -0
  50. package/dist/package/declarations/src/components/SwitchDark/index.vue.d.ts +3 -0
  51. package/dist/package/declarations/src/components/TreeFilter/index.vue.d.ts +5866 -0
  52. package/dist/package/declarations/src/components/Upload/File.vue.d.ts +24 -0
  53. package/dist/package/declarations/src/components/Upload/Files.vue.d.ts +26 -0
  54. package/dist/package/declarations/src/components/Upload/Img.vue.d.ts +43 -0
  55. package/dist/package/declarations/src/components/Upload/Imgs.vue.d.ts +46 -0
  56. package/dist/package/declarations/src/components/WangEditor/index.vue.d.ts +29 -0
  57. package/dist/package/declarations/src/config/index.d.ts +6 -0
  58. package/dist/package/declarations/src/config/nprogress.d.ts +3 -0
  59. package/dist/package/declarations/src/directives/index.d.ts +5 -0
  60. package/dist/package/declarations/src/directives/modules/auth.d.ts +3 -0
  61. package/dist/package/declarations/src/directives/modules/copy.d.ts +8 -0
  62. package/dist/package/declarations/src/directives/modules/debounce.d.ts +8 -0
  63. package/dist/package/declarations/src/directives/modules/draggable.d.ts +3 -0
  64. package/dist/package/declarations/src/directives/modules/longpress.d.ts +7 -0
  65. package/dist/package/declarations/src/directives/modules/throttle.d.ts +3 -0
  66. package/dist/package/declarations/src/directives/modules/waterMarker.d.ts +5 -0
  67. package/dist/package/declarations/src/enums/httpEnum.d.ts +29 -0
  68. package/dist/package/declarations/src/format.d.ts +1 -0
  69. package/dist/package/declarations/src/hooks/interface/index.d.ts +36 -0
  70. package/dist/package/declarations/src/hooks/useAuthButtons.d.ts +8 -0
  71. package/dist/package/declarations/src/hooks/useDownload.d.ts +9 -0
  72. package/dist/package/declarations/src/hooks/useHandleData.d.ts +10 -0
  73. package/dist/package/declarations/src/hooks/useOnline.d.ts +6 -0
  74. package/dist/package/declarations/src/hooks/useSelection.d.ts +10 -0
  75. package/dist/package/declarations/src/hooks/useTable.d.ts +46 -0
  76. package/dist/package/declarations/src/hooks/useTheme.d.ts +12 -0
  77. package/dist/package/declarations/src/hooks/useTime.d.ts +13 -0
  78. package/dist/package/declarations/src/index.d.ts +3 -0
  79. package/dist/package/declarations/src/layouts/LayoutClassic/index.vue.d.ts +3 -0
  80. package/dist/package/declarations/src/layouts/LayoutColumns/index.vue.d.ts +3 -0
  81. package/dist/package/declarations/src/layouts/LayoutTransverse/index.vue.d.ts +3 -0
  82. package/dist/package/declarations/src/layouts/LayoutVertical/index.vue.d.ts +3 -0
  83. package/dist/package/declarations/src/layouts/components/Footer/index.vue.d.ts +3 -0
  84. package/dist/package/declarations/src/layouts/components/Header/ToolBarLeft.vue.d.ts +3 -0
  85. package/dist/package/declarations/src/layouts/components/Header/ToolBarRight.vue.d.ts +3 -0
  86. package/dist/package/declarations/src/layouts/components/Header/components/AssemblySize.vue.d.ts +3 -0
  87. package/dist/package/declarations/src/layouts/components/Header/components/Avatar.vue.d.ts +3 -0
  88. package/dist/package/declarations/src/layouts/components/Header/components/Breadcrumb.vue.d.ts +3 -0
  89. package/dist/package/declarations/src/layouts/components/Header/components/CollapseIcon.vue.d.ts +3 -0
  90. package/dist/package/declarations/src/layouts/components/Header/components/Fullscreen.vue.d.ts +3 -0
  91. package/dist/package/declarations/src/layouts/components/Header/components/InfoDialog.vue.d.ts +5 -0
  92. package/dist/package/declarations/src/layouts/components/Header/components/PasswordDialog.vue.d.ts +5 -0
  93. package/dist/package/declarations/src/layouts/components/Header/components/SearchMenu.vue.d.ts +3 -0
  94. package/dist/package/declarations/src/layouts/components/Header/components/ThemeSetting.vue.d.ts +3 -0
  95. package/dist/package/declarations/src/layouts/components/Main/components/Maximize.vue.d.ts +3 -0
  96. package/dist/package/declarations/src/layouts/components/Main/index.vue.d.ts +3 -0
  97. package/dist/package/declarations/src/layouts/components/Menu/SubMenu.vue.d.ts +7 -0
  98. package/dist/package/declarations/src/layouts/components/Tabs/components/MoreButton.vue.d.ts +3 -0
  99. package/dist/package/declarations/src/layouts/components/Tabs/index.vue.d.ts +3 -0
  100. package/dist/package/declarations/src/layouts/components/ThemeDrawer/index.vue.d.ts +3 -0
  101. package/dist/package/declarations/src/layouts/index.vue.d.ts +3 -0
  102. package/dist/package/declarations/src/layouts/indexAsync.vue.d.ts +3 -0
  103. package/dist/package/declarations/src/modules/index.d.ts +117 -0
  104. package/dist/package/declarations/src/modules/kratosAdmin.d.ts +4 -0
  105. package/dist/package/declarations/src/navigation.d.ts +2 -0
  106. package/dist/package/declarations/src/request.d.ts +2 -0
  107. package/dist/package/declarations/src/routers/index.d.ts +21 -0
  108. package/dist/package/declarations/src/routers/modules/dynamicRouter.d.ts +4 -0
  109. package/dist/package/declarations/src/routers/modules/staticRouter.d.ts +25 -0
  110. package/dist/package/declarations/src/rpc/base/v1/config.d.ts +23 -0
  111. package/dist/package/declarations/src/rpc/base/v1/file.d.ts +52 -0
  112. package/dist/package/declarations/src/rpc/base/v1/login.d.ts +107 -0
  113. package/dist/package/declarations/src/rpc/base/v1/oauth.d.ts +167 -0
  114. package/dist/package/declarations/src/rpc/common/v1/common.d.ts +57 -0
  115. package/dist/package/declarations/src/rpc/common/v1/enum.d.ts +58 -0
  116. package/dist/package/declarations/src/rpc/common/v1/types.d.ts +60 -0
  117. package/dist/package/declarations/src/rpc/google/protobuf/empty.d.ts +11 -0
  118. package/dist/package/declarations/src/rpc/google/protobuf/wrappers.d.ts +108 -0
  119. package/dist/package/declarations/src/rpc/system/admin/v1/auth.d.ts +156 -0
  120. package/dist/package/declarations/src/rpc/system/admin/v1/base_dict.d.ts +215 -0
  121. package/dist/package/declarations/src/rpc/system/admin/v1/base_tenant.d.ts +112 -0
  122. package/dist/package/declarations/src/rpc/system/common/v1/enum.d.ts +67 -0
  123. package/dist/package/declarations/src/security.d.ts +3 -0
  124. package/dist/package/declarations/src/stores/helper/persist.d.ts +9 -0
  125. package/dist/package/declarations/src/stores/index.d.ts +2 -0
  126. package/dist/package/declarations/src/stores/interface/index.d.ts +90 -0
  127. package/dist/package/declarations/src/stores/modules/auth.d.ts +168 -0
  128. package/dist/package/declarations/src/stores/modules/config.d.ts +26 -0
  129. package/dist/package/declarations/src/stores/modules/dict.d.ts +32 -0
  130. package/dist/package/declarations/src/stores/modules/global.d.ts +4 -0
  131. package/dist/package/declarations/src/stores/modules/keepAlive.d.ts +6 -0
  132. package/dist/package/declarations/src/stores/modules/tabs.d.ts +13 -0
  133. package/dist/package/declarations/src/stores/modules/user.d.ts +29 -0
  134. package/dist/package/declarations/src/stores/runtime.d.ts +4 -0
  135. package/dist/package/declarations/src/styles/theme/aside.d.ts +4 -0
  136. package/dist/package/declarations/src/styles/theme/header.d.ts +4 -0
  137. package/dist/package/declarations/src/styles/theme/menu.d.ts +4 -0
  138. package/dist/package/declarations/src/table.d.ts +1 -0
  139. package/dist/package/declarations/src/tenant.d.ts +1 -0
  140. package/dist/package/declarations/src/utils/color.d.ts +28 -0
  141. package/dist/package/declarations/src/utils/dict.d.ts +15 -0
  142. package/dist/package/declarations/src/utils/eleValidate.d.ts +4 -0
  143. package/dist/package/declarations/src/utils/errorHandler.d.ts +5 -0
  144. package/dist/package/declarations/src/utils/index.d.ts +192 -0
  145. package/dist/package/declarations/src/utils/is/index.d.ts +72 -0
  146. package/dist/package/declarations/src/utils/mittBus.d.ts +2 -0
  147. package/dist/package/declarations/src/utils/oauthProvider.d.ts +19 -0
  148. package/dist/package/declarations/src/utils/passwordCrypto.d.ts +6 -0
  149. package/dist/package/declarations/src/utils/passwordStrength.d.ts +36 -0
  150. package/dist/package/declarations/src/utils/proTable.d.ts +44 -0
  151. package/dist/package/declarations/src/utils/request.d.ts +11 -0
  152. package/dist/package/declarations/src/utils/router.d.ts +14 -0
  153. package/dist/package/declarations/src/utils/svg.d.ts +4 -0
  154. package/dist/package/declarations/src/utils/tenant.d.ts +6 -0
  155. package/dist/package/declarations/src/utils/utils.d.ts +12 -0
  156. package/dist/package/declarations/src/views/error/403.vue.d.ts +3 -0
  157. package/dist/package/declarations/src/views/error/404.vue.d.ts +3 -0
  158. package/dist/package/declarations/src/views/error/500.vue.d.ts +3 -0
  159. package/dist/package/declarations/src/views/error/pending.vue.d.ts +3 -0
  160. package/dist/package/declarations/src/views/login/components/LoginForm.vue.d.ts +4 -0
  161. package/dist/package/declarations/src/views/login/index.vue.d.ts +3 -0
  162. package/dist/package/declarations/vite.config.d.ts +13 -0
  163. package/dist/package/src/App.vue +25 -0
  164. package/dist/package/src/api/base/config.ts +19 -0
  165. package/dist/package/src/api/base/file.ts +75 -0
  166. package/dist/package/src/api/base/login.ts +81 -0
  167. package/dist/package/src/api/base/oauth.ts +50 -0
  168. package/dist/package/src/api/system/auth.ts +45 -0
  169. package/dist/package/src/api/system/base_dict.ts +19 -0
  170. package/dist/package/src/api/system/base_tenant.ts +20 -0
  171. package/dist/package/src/assets/fonts/DIN.otf +0 -0
  172. package/dist/package/src/assets/fonts/MetroDF.ttf +0 -0
  173. package/dist/package/src/assets/fonts/YouSheBiaoTiHei.ttf +0 -0
  174. package/dist/package/src/assets/fonts/font.scss +14 -0
  175. package/dist/package/src/assets/iconfont/iconfont.scss +47 -0
  176. package/dist/package/src/assets/iconfont/iconfont.ttf +0 -0
  177. package/dist/package/src/assets/images/403.png +0 -0
  178. package/dist/package/src/assets/images/404.png +0 -0
  179. package/dist/package/src/assets/images/500.png +0 -0
  180. package/dist/package/src/assets/images/avatar.png +0 -0
  181. package/dist/package/src/assets/images/login_bg.svg +33 -0
  182. package/dist/package/src/assets/images/login_left.png +0 -0
  183. package/dist/package/src/assets/images/logo.svg +1 -0
  184. package/dist/package/src/assets/images/notData.png +0 -0
  185. package/dist/package/src/assets/images/oauth/dingtalk.png +0 -0
  186. package/dist/package/src/assets/images/oauth/feishu.png +0 -0
  187. package/dist/package/src/assets/images/oauth/gitee.png +0 -0
  188. package/dist/package/src/assets/images/oauth/github.png +0 -0
  189. package/dist/package/src/assets/images/oauth/google.png +0 -0
  190. package/dist/package/src/assets/images/oauth/wechat.png +0 -0
  191. package/dist/package/src/assets/images/oauth/wechatwork.png +0 -0
  192. package/dist/package/src/auth.ts +1 -0
  193. package/dist/package/src/bootstrap.ts +69 -0
  194. package/dist/package/src/components/Card/DataPanelCard.vue +67 -0
  195. package/dist/package/src/components/CronExpression/index.vue +713 -0
  196. package/dist/package/src/components/Dialog/FormDialog.vue +160 -0
  197. package/dist/package/src/components/Dialog/ProDialog.vue +96 -0
  198. package/dist/package/src/components/Dict/DictLabel.vue +62 -0
  199. package/dist/package/src/components/Dict/index.vue +157 -0
  200. package/dist/package/src/components/ECharts/config/index.ts +45 -0
  201. package/dist/package/src/components/ECharts/index.vue +108 -0
  202. package/dist/package/src/components/ErrorMessage/index.vue +63 -0
  203. package/dist/package/src/components/Grid/components/GridItem.vue +69 -0
  204. package/dist/package/src/components/Grid/index.vue +169 -0
  205. package/dist/package/src/components/Grid/interface/index.ts +8 -0
  206. package/dist/package/src/components/ImportExcel/index.scss +3 -0
  207. package/dist/package/src/components/ImportExcel/index.vue +150 -0
  208. package/dist/package/src/components/Loading/fullScreen.ts +45 -0
  209. package/dist/package/src/components/Loading/index.scss +67 -0
  210. package/dist/package/src/components/Loading/index.vue +13 -0
  211. package/dist/package/src/components/PasswordStrength/index.vue +127 -0
  212. package/dist/package/src/components/ProForm/components/DynamicList.vue +59 -0
  213. package/dist/package/src/components/ProForm/components/KvList.vue +73 -0
  214. package/dist/package/src/components/ProForm/components/ProFormItem.vue +191 -0
  215. package/dist/package/src/components/ProForm/index.vue +120 -0
  216. package/dist/package/src/components/ProForm/interface/index.ts +74 -0
  217. package/dist/package/src/components/ProTable/components/ColSetting.vue +45 -0
  218. package/dist/package/src/components/ProTable/components/Pagination.vue +58 -0
  219. package/dist/package/src/components/ProTable/components/TableColumn.vue +234 -0
  220. package/dist/package/src/components/ProTable/index.vue +567 -0
  221. package/dist/package/src/components/ProTable/interface/index.ts +223 -0
  222. package/dist/package/src/components/ProTable.ts +8 -0
  223. package/dist/package/src/components/SearchForm/components/SearchFormItem.vue +168 -0
  224. package/dist/package/src/components/SearchForm/index.vue +105 -0
  225. package/dist/package/src/components/SelectFilter/index.scss +63 -0
  226. package/dist/package/src/components/SelectFilter/index.vue +113 -0
  227. package/dist/package/src/components/SelectIcon/index.scss +39 -0
  228. package/dist/package/src/components/SelectIcon/index.vue +105 -0
  229. package/dist/package/src/components/SvgIcon/index.vue +35 -0
  230. package/dist/package/src/components/SwitchDark/index.vue +12 -0
  231. package/dist/package/src/components/TreeFilter/index.scss +44 -0
  232. package/dist/package/src/components/TreeFilter/index.vue +207 -0
  233. package/dist/package/src/components/Upload/File.vue +201 -0
  234. package/dist/package/src/components/Upload/Files.vue +234 -0
  235. package/dist/package/src/components/Upload/Img.vue +306 -0
  236. package/dist/package/src/components/Upload/Imgs.vue +320 -0
  237. package/dist/package/src/components/WangEditor/index.scss +28 -0
  238. package/dist/package/src/components/WangEditor/index.vue +154 -0
  239. package/dist/package/src/config/index.ts +19 -0
  240. package/dist/package/src/config/nprogress.ts +12 -0
  241. package/dist/package/src/directives/index.ts +28 -0
  242. package/dist/package/src/directives/modules/auth.ts +25 -0
  243. package/dist/package/src/directives/modules/copy.ts +39 -0
  244. package/dist/package/src/directives/modules/debounce.ts +32 -0
  245. package/dist/package/src/directives/modules/draggable.ts +50 -0
  246. package/dist/package/src/directives/modules/longpress.ts +49 -0
  247. package/dist/package/src/directives/modules/throttle.ts +42 -0
  248. package/dist/package/src/directives/modules/waterMarker.ts +36 -0
  249. package/dist/package/src/enums/httpEnum.ts +35 -0
  250. package/dist/package/src/format.ts +1 -0
  251. package/dist/package/src/hooks/interface/index.ts +38 -0
  252. package/dist/package/src/hooks/useAuthButtons.ts +25 -0
  253. package/dist/package/src/hooks/useDownload.ts +44 -0
  254. package/dist/package/src/hooks/useHandleData.ts +38 -0
  255. package/dist/package/src/hooks/useOnline.ts +27 -0
  256. package/dist/package/src/hooks/useSelection.ts +34 -0
  257. package/dist/package/src/hooks/useTable.ts +151 -0
  258. package/dist/package/src/hooks/useTheme.ts +111 -0
  259. package/dist/package/src/hooks/useTime.ts +38 -0
  260. package/dist/package/src/index.ts +9 -0
  261. package/dist/package/src/layouts/LayoutClassic/index.scss +60 -0
  262. package/dist/package/src/layouts/LayoutClassic/index.vue +64 -0
  263. package/dist/package/src/layouts/LayoutColumns/index.scss +95 -0
  264. package/dist/package/src/layouts/LayoutColumns/index.vue +113 -0
  265. package/dist/package/src/layouts/LayoutTransverse/index.scss +60 -0
  266. package/dist/package/src/layouts/LayoutTransverse/index.vue +70 -0
  267. package/dist/package/src/layouts/LayoutVertical/index.scss +70 -0
  268. package/dist/package/src/layouts/LayoutVertical/index.vue +119 -0
  269. package/dist/package/src/layouts/components/Footer/index.scss +11 -0
  270. package/dist/package/src/layouts/components/Footer/index.vue +21 -0
  271. package/dist/package/src/layouts/components/Header/ToolBarLeft.vue +23 -0
  272. package/dist/package/src/layouts/components/Header/ToolBarRight.vue +44 -0
  273. package/dist/package/src/layouts/components/Header/components/AssemblySize.vue +39 -0
  274. package/dist/package/src/layouts/components/Header/components/Avatar.vue +226 -0
  275. package/dist/package/src/layouts/components/Header/components/Breadcrumb.vue +117 -0
  276. package/dist/package/src/layouts/components/Header/components/CollapseIcon.vue +21 -0
  277. package/dist/package/src/layouts/components/Header/components/Fullscreen.vue +28 -0
  278. package/dist/package/src/layouts/components/Header/components/InfoDialog.vue +22 -0
  279. package/dist/package/src/layouts/components/Header/components/PasswordDialog.vue +22 -0
  280. package/dist/package/src/layouts/components/Header/components/SearchMenu.vue +207 -0
  281. package/dist/package/src/layouts/components/Header/components/ThemeSetting.vue +14 -0
  282. package/dist/package/src/layouts/components/Main/components/Maximize.vue +39 -0
  283. package/dist/package/src/layouts/components/Main/index.scss +14 -0
  284. package/dist/package/src/layouts/components/Main/index.vue +90 -0
  285. package/dist/package/src/layouts/components/Menu/SubMenu.vue +132 -0
  286. package/dist/package/src/layouts/components/Tabs/components/MoreButton.vue +83 -0
  287. package/dist/package/src/layouts/components/Tabs/index.scss +69 -0
  288. package/dist/package/src/layouts/components/Tabs/index.vue +111 -0
  289. package/dist/package/src/layouts/components/ThemeDrawer/index.scss +137 -0
  290. package/dist/package/src/layouts/components/ThemeDrawer/index.vue +191 -0
  291. package/dist/package/src/layouts/index.vue +50 -0
  292. package/dist/package/src/layouts/indexAsync.vue +54 -0
  293. package/dist/package/src/modules/index.ts +233 -0
  294. package/dist/package/src/modules/kratosAdmin.ts +17 -0
  295. package/dist/package/src/navigation.ts +2 -0
  296. package/dist/package/src/request.ts +2 -0
  297. package/dist/package/src/routers/index.ts +143 -0
  298. package/dist/package/src/routers/modules/dynamicRouter.ts +160 -0
  299. package/dist/package/src/routers/modules/staticRouter.ts +73 -0
  300. package/dist/package/src/rpc/base/v1/config.ts +34 -0
  301. package/dist/package/src/rpc/base/v1/file.ts +66 -0
  302. package/dist/package/src/rpc/base/v1/login.ts +128 -0
  303. package/dist/package/src/rpc/base/v1/oauth.ts +199 -0
  304. package/dist/package/src/rpc/common/v1/common.ts +71 -0
  305. package/dist/package/src/rpc/common/v1/enum.ts +71 -0
  306. package/dist/package/src/rpc/common/v1/types.ts +77 -0
  307. package/dist/package/src/rpc/google/protobuf/empty.ts +19 -0
  308. package/dist/package/src/rpc/google/protobuf/wrappers.ts +124 -0
  309. package/dist/package/src/rpc/system/admin/v1/auth.ts +208 -0
  310. package/dist/package/src/rpc/system/admin/v1/base_dict.ts +249 -0
  311. package/dist/package/src/rpc/system/admin/v1/base_tenant.ts +134 -0
  312. package/dist/package/src/rpc/system/common/v1/enum.ts +80 -0
  313. package/dist/package/src/security.ts +3 -0
  314. package/dist/package/src/stores/helper/persist.ts +19 -0
  315. package/dist/package/src/stores/index.ts +8 -0
  316. package/dist/package/src/stores/interface/index.ts +102 -0
  317. package/dist/package/src/stores/modules/auth.ts +73 -0
  318. package/dist/package/src/stores/modules/config.ts +119 -0
  319. package/dist/package/src/stores/modules/dict.ts +65 -0
  320. package/dist/package/src/stores/modules/global.ts +54 -0
  321. package/dist/package/src/stores/modules/keepAlive.ts +22 -0
  322. package/dist/package/src/stores/modules/tabs.ts +77 -0
  323. package/dist/package/src/stores/modules/user.ts +109 -0
  324. package/dist/package/src/stores/runtime.ts +4 -0
  325. package/dist/package/src/styles/common.scss +144 -0
  326. package/dist/package/src/styles/element-dark.scss +46 -0
  327. package/dist/package/src/styles/element.scss +333 -0
  328. package/dist/package/src/styles/reset.scss +143 -0
  329. package/dist/package/src/styles/theme/aside.ts +16 -0
  330. package/dist/package/src/styles/theme/header.ts +25 -0
  331. package/dist/package/src/styles/theme/menu.ts +31 -0
  332. package/dist/package/src/styles/var.scss +2 -0
  333. package/dist/package/src/table.ts +1 -0
  334. package/dist/package/src/tenant.ts +1 -0
  335. package/dist/package/src/typings/global.d.ts +74 -0
  336. package/dist/package/src/typings/utils.d.ts +17 -0
  337. package/dist/package/src/typings/window.d.ts +8 -0
  338. package/dist/package/src/utils/color.ts +59 -0
  339. package/dist/package/src/utils/dict.ts +17 -0
  340. package/dist/package/src/utils/eleValidate.ts +14 -0
  341. package/dist/package/src/utils/errorHandler.ts +27 -0
  342. package/dist/package/src/utils/index.ts +403 -0
  343. package/dist/package/src/utils/is/index.ts +125 -0
  344. package/dist/package/src/utils/mittBus.ts +5 -0
  345. package/dist/package/src/utils/oauthProvider.ts +79 -0
  346. package/dist/package/src/utils/passwordCrypto.ts +71 -0
  347. package/dist/package/src/utils/passwordStrength.ts +86 -0
  348. package/dist/package/src/utils/proTable.ts +124 -0
  349. package/dist/package/src/utils/request.ts +296 -0
  350. package/dist/package/src/utils/router.ts +43 -0
  351. package/dist/package/src/utils/svg.ts +13 -0
  352. package/dist/package/src/utils/tenant.ts +10 -0
  353. package/dist/package/src/utils/utils.ts +40 -0
  354. package/dist/package/src/views/error/403.vue +8 -0
  355. package/dist/package/src/views/error/404.vue +8 -0
  356. package/dist/package/src/views/error/500.vue +8 -0
  357. package/dist/package/src/views/error/pending.vue +16 -0
  358. package/dist/package/src/views/login/components/LoginForm.vue +797 -0
  359. package/dist/package/src/views/login/index.scss +103 -0
  360. package/dist/package/src/views/login/index.vue +108 -0
  361. package/dist/package/src/vite-env.d.ts +3 -0
  362. package/dist/package/types/generated/auto-imports.d.ts +124 -0
  363. package/dist/package/types/generated/components.d.ts +151 -0
  364. package/package.json +199 -0
  365. package/tsconfig.json +21 -0
  366. package/types/generated/auto-imports.d.ts +124 -0
  367. package/types/generated/components.d.ts +151 -0
  368. package/vite.config.ts +239 -0
@@ -0,0 +1,69 @@
1
+ <template>
2
+ <div v-show="isShow" :style="style">
3
+ <slot></slot>
4
+ </div>
5
+ </template>
6
+ <script setup lang="ts" name="GridItem">
7
+ import { computed, inject, Ref, ref, useAttrs, watch } from "vue";
8
+ import { BreakPoint, Responsive } from "../interface/index";
9
+
10
+ /** GridItem 属性,控制不同断点下的占位和偏移。 */
11
+ type Props = {
12
+ offset?: number;
13
+ span?: number;
14
+ suffix?: boolean;
15
+ xs?: Responsive;
16
+ sm?: Responsive;
17
+ md?: Responsive;
18
+ lg?: Responsive;
19
+ xl?: Responsive;
20
+ };
21
+
22
+ const props = withDefaults(defineProps<Props>(), {
23
+ offset: 0,
24
+ span: 1,
25
+ suffix: false,
26
+ xs: undefined,
27
+ sm: undefined,
28
+ md: undefined,
29
+ lg: undefined,
30
+ xl: undefined
31
+ });
32
+
33
+ const attrs = useAttrs() as { index: string };
34
+ const isShow = ref(true);
35
+
36
+ // 注入断点
37
+ const breakPoint = inject<Ref<BreakPoint>>("breakPoint", ref("xl"));
38
+ const shouldHiddenIndex = inject<Ref<number>>("shouldHiddenIndex", ref(-1));
39
+ watch(
40
+ () => [shouldHiddenIndex.value, breakPoint.value],
41
+ n => {
42
+ if (!!attrs.index) {
43
+ isShow.value = !(n[0] !== -1 && parseInt(attrs.index) >= Number(n[0]));
44
+ }
45
+ },
46
+ { immediate: true }
47
+ );
48
+
49
+ const gap = inject("gap", 0);
50
+ const cols = inject("cols", ref(4));
51
+ const style = computed(() => {
52
+ let span = props[breakPoint.value]?.span ?? props.span;
53
+ let offset = props[breakPoint.value]?.offset ?? props.offset;
54
+ if (props.suffix) {
55
+ return {
56
+ gridColumnStart: cols.value - span - offset + 1,
57
+ gridColumnEnd: `span ${span + offset}`,
58
+ marginLeft: offset !== 0 ? `calc(((100% + ${gap}px) / ${span + offset}) * ${offset})` : "unset"
59
+ };
60
+ } else {
61
+ return {
62
+ gridColumn: `span ${span + offset > cols.value ? cols.value : span + offset}/span ${
63
+ span + offset > cols.value ? cols.value : span + offset
64
+ }`,
65
+ marginLeft: offset !== 0 ? `calc(((100% + ${gap}px) / ${span + offset}) * ${offset})` : "unset"
66
+ };
67
+ }
68
+ });
69
+ </script>
@@ -0,0 +1,169 @@
1
+ <template>
2
+ <div :style="style">
3
+ <slot></slot>
4
+ </div>
5
+ </template>
6
+
7
+ <script setup lang="ts" name="Grid">
8
+ import {
9
+ ref,
10
+ watch,
11
+ useSlots,
12
+ computed,
13
+ provide,
14
+ onBeforeMount,
15
+ onMounted,
16
+ onUnmounted,
17
+ onDeactivated,
18
+ onActivated,
19
+ VNodeArrayChildren,
20
+ VNode
21
+ } from "vue";
22
+ import type { BreakPoint } from "./interface/index";
23
+
24
+ /** Grid 容器属性,控制列数、折叠行数和间距。 */
25
+ type Props = {
26
+ cols?: number | Record<BreakPoint, number>;
27
+ collapsed?: boolean;
28
+ collapsedRows?: number;
29
+ gap?: [number, number] | number;
30
+ };
31
+
32
+ const props = withDefaults(defineProps<Props>(), {
33
+ cols: () => ({ xs: 1, sm: 2, md: 2, lg: 3, xl: 4 }),
34
+ collapsed: false,
35
+ collapsedRows: 1,
36
+ gap: 0
37
+ });
38
+
39
+ onBeforeMount(() => props.collapsed && findIndex());
40
+ onMounted(() => {
41
+ resize({ target: { innerWidth: window.innerWidth } } as unknown as UIEvent);
42
+ window.addEventListener("resize", resize);
43
+ });
44
+ onActivated(() => {
45
+ resize({ target: { innerWidth: window.innerWidth } } as unknown as UIEvent);
46
+ window.addEventListener("resize", resize);
47
+ });
48
+ onUnmounted(() => {
49
+ window.removeEventListener("resize", resize);
50
+ });
51
+ onDeactivated(() => {
52
+ window.removeEventListener("resize", resize);
53
+ });
54
+
55
+ // 监听屏幕变化
56
+ const resize = (e: UIEvent) => {
57
+ let width = (e.target as Window).innerWidth;
58
+ switch (!!width) {
59
+ case width < 768:
60
+ breakPoint.value = "xs";
61
+ break;
62
+ case width >= 768 && width < 992:
63
+ breakPoint.value = "sm";
64
+ break;
65
+ case width >= 992 && width < 1200:
66
+ breakPoint.value = "md";
67
+ break;
68
+ case width >= 1200 && width < 1920:
69
+ breakPoint.value = "lg";
70
+ break;
71
+ case width >= 1920:
72
+ breakPoint.value = "xl";
73
+ break;
74
+ }
75
+ };
76
+
77
+ // 注入 gap 间距
78
+ provide("gap", Array.isArray(props.gap) ? props.gap[0] : props.gap);
79
+
80
+ // 注入响应式断点
81
+ let breakPoint = ref<BreakPoint>("xl");
82
+ provide("breakPoint", breakPoint);
83
+
84
+ // 注入要开始折叠的 index
85
+ const hiddenIndex = ref(-1);
86
+ provide("shouldHiddenIndex", hiddenIndex);
87
+
88
+ // 注入 cols
89
+ const gridCols = computed(() => {
90
+ if (typeof props.cols === "object") return props.cols[breakPoint.value] ?? props.cols;
91
+ return props.cols;
92
+ });
93
+ provide("cols", gridCols);
94
+
95
+ // 寻找需要开始折叠的字段 index
96
+ const slots = useSlots().default!();
97
+
98
+ /** 计算折叠模式下从哪个 GridItem 开始隐藏。 */
99
+ const findIndex = () => {
100
+ let fields: VNodeArrayChildren = [];
101
+ let suffix: VNode | null = null;
102
+ slots.forEach((slot: any) => {
103
+ // suffix
104
+ if (typeof slot.type === "object" && slot.type.name === "GridItem" && slot.props?.suffix !== undefined) suffix = slot;
105
+ // slot children
106
+ if (typeof slot.type === "symbol" && Array.isArray(slot.children)) fields.push(...slot.children);
107
+ });
108
+
109
+ // 计算 suffix 所占用的列
110
+ let suffixCols = 0;
111
+ if (suffix) {
112
+ suffixCols =
113
+ ((suffix as VNode).props![breakPoint.value]?.span ?? (suffix as VNode).props?.span ?? 1) +
114
+ ((suffix as VNode).props![breakPoint.value]?.offset ?? (suffix as VNode).props?.offset ?? 0);
115
+ }
116
+ try {
117
+ let find = false;
118
+ fields.reduce((prev = 0, current, index) => {
119
+ prev +=
120
+ ((current as VNode)!.props![breakPoint.value]?.span ?? (current as VNode)!.props?.span ?? 1) +
121
+ ((current as VNode)!.props![breakPoint.value]?.offset ?? (current as VNode)!.props?.offset ?? 0);
122
+ if (Number(prev) > props.collapsedRows * gridCols.value - suffixCols) {
123
+ hiddenIndex.value = index;
124
+ find = true;
125
+ throw "find it";
126
+ }
127
+ return prev;
128
+ }, 0);
129
+ if (!find) hiddenIndex.value = -1;
130
+ } catch (e) {
131
+ // console.warn(e);
132
+ }
133
+ };
134
+
135
+ // 断点变化时执行 findIndex
136
+ watch(
137
+ () => breakPoint.value,
138
+ () => {
139
+ if (props.collapsed) findIndex();
140
+ }
141
+ );
142
+
143
+ // 监听 collapsed
144
+ watch(
145
+ () => props.collapsed,
146
+ value => {
147
+ if (value) return findIndex();
148
+ hiddenIndex.value = -1;
149
+ }
150
+ );
151
+
152
+ // 设置间距
153
+ const gridGap = computed(() => {
154
+ if (typeof props.gap === "number") return `${props.gap}px`;
155
+ if (Array.isArray(props.gap)) return `${props.gap[1]}px ${props.gap[0]}px`;
156
+ return "unset";
157
+ });
158
+
159
+ // 设置 style
160
+ const style = computed(() => {
161
+ return {
162
+ display: "grid",
163
+ gridGap: gridGap.value,
164
+ gridTemplateColumns: `repeat(${gridCols.value}, minmax(0, 1fr))`
165
+ };
166
+ });
167
+
168
+ defineExpose({ breakPoint });
169
+ </script>
@@ -0,0 +1,8 @@
1
+ /** Grid 响应式断点名称。 */
2
+ export type BreakPoint = "xs" | "sm" | "md" | "lg" | "xl";
3
+
4
+ /** 单个断点下的栅格跨度与偏移配置。 */
5
+ export type Responsive = {
6
+ span?: number;
7
+ offset?: number;
8
+ };
@@ -0,0 +1,3 @@
1
+ .upload {
2
+ width: 80%;
3
+ }
@@ -0,0 +1,150 @@
1
+ <template>
2
+ <el-dialog v-model="dialogVisible" :title="`批量添加${parameter.title}`" :destroy-on-close="true" width="580px" draggable>
3
+ <el-form class="drawer-multiColumn-form" label-width="100px">
4
+ <el-form-item label="模板下载 :">
5
+ <el-button type="primary" :icon="Download" @click="downloadTemp"> 点击下载 </el-button>
6
+ </el-form-item>
7
+ <el-form-item label="文件上传 :">
8
+ <el-upload
9
+ action="#"
10
+ class="upload"
11
+ :drag="true"
12
+ :limit="excelLimit"
13
+ :multiple="true"
14
+ :show-file-list="true"
15
+ :http-request="uploadExcel"
16
+ :before-upload="beforeExcelUpload"
17
+ :on-exceed="handleExceed"
18
+ :on-success="excelUploadSuccess"
19
+ :on-error="excelUploadError"
20
+ :accept="parameter.fileType!.join(',')"
21
+ >
22
+ <slot name="empty">
23
+ <el-icon class="el-icon--upload">
24
+ <upload-filled />
25
+ </el-icon>
26
+ <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
27
+ </slot>
28
+ <template #tip>
29
+ <slot name="tip">
30
+ <div class="el-upload__tip">请上传 .xls , .xlsx 标准格式文件,文件最大为 {{ parameter.fileSize }}M</div>
31
+ </slot>
32
+ </template>
33
+ </el-upload>
34
+ </el-form-item>
35
+ <el-form-item label="数据覆盖 :">
36
+ <el-switch v-model="isCover" />
37
+ </el-form-item>
38
+ </el-form>
39
+ </el-dialog>
40
+ </template>
41
+
42
+ <script setup lang="ts" name="ImportExcel">
43
+ import { ref } from "vue";
44
+ import { useDownload } from "../../hooks/useDownload";
45
+ import { Download } from "@element-plus/icons-vue";
46
+ import { ElNotification, UploadRequestOptions, UploadRawFile } from "element-plus";
47
+
48
+ /** Excel 导入弹窗参数。 */
49
+ export interface ExcelParameterProps {
50
+ title: string; // 标题
51
+ fileSize?: number; // 上传文件的大小
52
+ fileType?: File.ExcelMimeType[]; // 上传文件的类型
53
+ tempApi?: (params: any) => Promise<any>; // 下载模板的Api
54
+ importApi?: (params: any) => Promise<any>; // 批量导入的Api
55
+ getTableList?: () => void; // 获取表格数据的Api
56
+ }
57
+
58
+ // 是否覆盖数据
59
+ const isCover = ref(false);
60
+ // 最大文件上传数
61
+ const excelLimit = ref(1);
62
+ // dialog状态
63
+ const dialogVisible = ref(false);
64
+ // 父组件传过来的参数
65
+ const parameter = ref<ExcelParameterProps>({
66
+ title: "",
67
+ fileSize: 5,
68
+ fileType: ["application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"]
69
+ });
70
+
71
+ // 接收父组件参数
72
+ const acceptParams = (params: ExcelParameterProps) => {
73
+ parameter.value = { ...parameter.value, ...params };
74
+ dialogVisible.value = true;
75
+ };
76
+
77
+ // Excel 导入模板下载
78
+ const downloadTemp = () => {
79
+ if (!parameter.value.tempApi) return;
80
+ useDownload(parameter.value.tempApi, `${parameter.value.title}模板`);
81
+ };
82
+
83
+ // 文件上传
84
+ const uploadExcel = async (param: UploadRequestOptions) => {
85
+ let excelFormData = new FormData();
86
+ excelFormData.append("file", param.file);
87
+ excelFormData.append("isCover", isCover.value as unknown as Blob);
88
+ await parameter.value.importApi!(excelFormData);
89
+ parameter.value.getTableList && parameter.value.getTableList();
90
+ dialogVisible.value = false;
91
+ };
92
+
93
+ /**
94
+ * @description 文件上传之前判断
95
+ * @param file 上传的文件
96
+ * */
97
+ const beforeExcelUpload = (file: UploadRawFile) => {
98
+ const isExcel = parameter.value.fileType!.includes(file.type as File.ExcelMimeType);
99
+ const fileSize = file.size / 1024 / 1024 < parameter.value.fileSize!;
100
+ if (!isExcel)
101
+ ElNotification({
102
+ title: "温馨提示",
103
+ message: "上传文件只能是 xls / xlsx 格式!",
104
+ type: "warning"
105
+ });
106
+ if (!fileSize)
107
+ setTimeout(() => {
108
+ ElNotification({
109
+ title: "温馨提示",
110
+ message: `上传文件大小不能超过 ${parameter.value.fileSize}MB!`,
111
+ type: "warning"
112
+ });
113
+ }, 0);
114
+ return isExcel && fileSize;
115
+ };
116
+
117
+ // 文件数超出提示
118
+ const handleExceed = () => {
119
+ ElNotification({
120
+ title: "温馨提示",
121
+ message: "最多只能上传一个文件!",
122
+ type: "warning"
123
+ });
124
+ };
125
+
126
+ // 上传错误提示
127
+ const excelUploadError = () => {
128
+ ElNotification({
129
+ title: "温馨提示",
130
+ message: `批量添加${parameter.value.title}失败,请您重新上传!`,
131
+ type: "error"
132
+ });
133
+ };
134
+
135
+ // 上传成功提示
136
+ const excelUploadSuccess = () => {
137
+ ElNotification({
138
+ title: "温馨提示",
139
+ message: `批量添加${parameter.value.title}成功!`,
140
+ type: "success"
141
+ });
142
+ };
143
+
144
+ defineExpose({
145
+ acceptParams
146
+ });
147
+ </script>
148
+ <style lang="scss" scoped>
149
+ @use "./index.scss" as *;
150
+ </style>
@@ -0,0 +1,45 @@
1
+ import { ElLoading } from "element-plus";
2
+
3
+ /* 全局请求 loading */
4
+ let loadingInstance: ReturnType<typeof ElLoading.service>;
5
+
6
+ /**
7
+ * @description 开启 Loading
8
+ * */
9
+ const startLoading = () => {
10
+ loadingInstance = ElLoading.service({
11
+ fullscreen: true,
12
+ lock: true,
13
+ text: "Loading",
14
+ background: "rgba(0, 0, 0, 0.7)"
15
+ });
16
+ };
17
+
18
+ /**
19
+ * @description 结束 Loading
20
+ * */
21
+ const endLoading = () => {
22
+ loadingInstance.close();
23
+ };
24
+
25
+ /**
26
+ * @description 显示全屏加载
27
+ * */
28
+ let needLoadingRequestCount = 0;
29
+ export const showFullScreenLoading = () => {
30
+ if (needLoadingRequestCount === 0) {
31
+ startLoading();
32
+ }
33
+ needLoadingRequestCount++;
34
+ };
35
+
36
+ /**
37
+ * @description 隐藏全屏加载
38
+ * */
39
+ export const tryHideFullScreenLoading = () => {
40
+ if (needLoadingRequestCount <= 0) return;
41
+ needLoadingRequestCount--;
42
+ if (needLoadingRequestCount === 0) {
43
+ endLoading();
44
+ }
45
+ };
@@ -0,0 +1,67 @@
1
+ .loading-box {
2
+ display: flex;
3
+ flex-direction: column;
4
+ align-items: center;
5
+ justify-content: center;
6
+ width: 100%;
7
+ height: 100%;
8
+ .loading-wrap {
9
+ display: flex;
10
+ align-items: center;
11
+ justify-content: center;
12
+ padding: 98px;
13
+ }
14
+ }
15
+ .dot {
16
+ position: relative;
17
+ box-sizing: border-box;
18
+ display: inline-block;
19
+ width: 32px;
20
+ height: 32px;
21
+ font-size: 32px;
22
+ transform: rotate(45deg);
23
+ animation: ant-rotate 1.2s infinite linear;
24
+ }
25
+ .dot i {
26
+ position: absolute;
27
+ display: block;
28
+ width: 14px;
29
+ height: 14px;
30
+ background-color: var(--el-color-primary);
31
+ border-radius: 100%;
32
+ opacity: 0.3;
33
+ transform: scale(0.75);
34
+ transform-origin: 50% 50%;
35
+ animation: ant-spin-move 1s infinite linear alternate;
36
+ }
37
+ .dot i:nth-child(1) {
38
+ top: 0;
39
+ left: 0;
40
+ }
41
+ .dot i:nth-child(2) {
42
+ top: 0;
43
+ right: 0;
44
+ animation-delay: 0.4s;
45
+ }
46
+ .dot i:nth-child(3) {
47
+ right: 0;
48
+ bottom: 0;
49
+ animation-delay: 0.8s;
50
+ }
51
+ .dot i:nth-child(4) {
52
+ bottom: 0;
53
+ left: 0;
54
+ animation-delay: 1.2s;
55
+ }
56
+
57
+ @keyframes ant-rotate {
58
+ to {
59
+ transform: rotate(405deg);
60
+ }
61
+ }
62
+
63
+ @keyframes ant-spin-move {
64
+ to {
65
+ opacity: 1;
66
+ }
67
+ }
@@ -0,0 +1,13 @@
1
+ <template>
2
+ <div class="loading-box">
3
+ <div class="loading-wrap">
4
+ <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
5
+ </div>
6
+ </div>
7
+ </template>
8
+
9
+ <script setup lang="ts" name="Loading"></script>
10
+
11
+ <style scoped lang="scss">
12
+ @use "./index.scss" as *;
13
+ </style>
@@ -0,0 +1,127 @@
1
+ <template>
2
+ <div class="password-strength">
3
+ <div class="password-strength__header">
4
+ <span>密码强度</span>
5
+ <strong :class="`password-strength__label password-strength__label--${strength.level}`">
6
+ {{ strength.text }}
7
+ </strong>
8
+ </div>
9
+ <div class="password-strength__bars">
10
+ <span
11
+ v-for="segment in segments"
12
+ :key="segment"
13
+ class="password-strength__bar"
14
+ :class="{
15
+ 'password-strength__bar--active': segment <= strength.strengthScore,
16
+ [`password-strength__bar--${strength.level}`]: segment <= strength.strengthScore
17
+ }"
18
+ />
19
+ </div>
20
+ <p class="password-strength__tip">{{ tip }}</p>
21
+ </div>
22
+ </template>
23
+
24
+ <script setup lang="ts">
25
+ import { computed } from "vue";
26
+ import { getPasswordStrength, PASSWORD_STRENGTH_TIP } from "../../utils/passwordStrength";
27
+
28
+ /** 密码强度组件属性。 */
29
+ interface PasswordStrengthProps {
30
+ /** 当前密码值。 */
31
+ password?: string;
32
+ /** 底部提示文案。 */
33
+ tip?: string;
34
+ }
35
+
36
+ const props = withDefaults(defineProps<PasswordStrengthProps>(), {
37
+ password: "",
38
+ tip: PASSWORD_STRENGTH_TIP
39
+ });
40
+
41
+ /** 强度条固定为三段,保持所有页面一致。 */
42
+ const segments = [1, 2, 3];
43
+
44
+ /** 根据输入密码实时输出强度结果。 */
45
+ const strength = computed(() => getPasswordStrength(props.password));
46
+ </script>
47
+
48
+ <style scoped lang="scss">
49
+ .password-strength {
50
+ padding: 14px 16px;
51
+ background: #fafbfd;
52
+ border: 1px solid #ebeef5;
53
+ border-radius: 10px;
54
+ }
55
+ .password-strength__header {
56
+ display: flex;
57
+ gap: 12px;
58
+ align-items: center;
59
+ justify-content: space-between;
60
+ }
61
+ .password-strength__header span {
62
+ font-size: 13px;
63
+ color: #606266;
64
+ }
65
+ .password-strength__label {
66
+ font-size: 13px;
67
+ font-weight: 600;
68
+ transition: color 0.2s ease;
69
+ }
70
+ .password-strength__label--empty {
71
+ color: #909399;
72
+ }
73
+ .password-strength__label--low {
74
+ color: #f56c6c;
75
+ }
76
+ .password-strength__label--medium {
77
+ color: #e6a23c;
78
+ }
79
+ .password-strength__label--high {
80
+ color: #67c23a;
81
+ }
82
+ .password-strength__bars {
83
+ display: grid;
84
+ grid-template-columns: repeat(3, minmax(0, 1fr));
85
+ gap: 8px;
86
+ margin-top: 10px;
87
+ }
88
+ .password-strength__bar {
89
+ height: 8px;
90
+ background: #ebeef5;
91
+ border-radius: 999px;
92
+ transform: scaleX(0.92);
93
+ transform-origin: left center;
94
+ transition:
95
+ background-color 0.25s ease,
96
+ transform 0.25s ease,
97
+ box-shadow 0.25s ease;
98
+ }
99
+ .password-strength__bar:nth-child(1) {
100
+ transition-delay: 0s;
101
+ }
102
+ .password-strength__bar:nth-child(2) {
103
+ transition-delay: 0.08s;
104
+ }
105
+ .password-strength__bar:nth-child(3) {
106
+ transition-delay: 0.16s;
107
+ }
108
+ .password-strength__bar--active {
109
+ box-shadow: 0 0 0 1px rgb(255 255 255 / 18%) inset;
110
+ transform: scaleX(1);
111
+ }
112
+ .password-strength__bar--low {
113
+ background: #f56c6c;
114
+ }
115
+ .password-strength__bar--medium {
116
+ background: #e6a23c;
117
+ }
118
+ .password-strength__bar--high {
119
+ background: #67c23a;
120
+ }
121
+ .password-strength__tip {
122
+ margin: 10px 0 0;
123
+ font-size: 12px;
124
+ line-height: 1.6;
125
+ color: #909399;
126
+ }
127
+ </style>