hs-admin-ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/.env +11 -0
  2. package/.env.development +5 -0
  3. package/.env.production +5 -0
  4. package/.eslintignore +18 -0
  5. package/.eslintrc.js +104 -0
  6. package/.prettierrc.js +39 -0
  7. package/.vite/deps_temp_3669a513/chunk-FVXAE7ZR.js +11400 -0
  8. package/.vite/deps_temp_3669a513/chunk-ZS7NZCD4.js +36 -0
  9. package/.vite/deps_temp_3669a513/default-passive-events.js +25 -0
  10. package/.vite/deps_temp_3669a513/element-plus.js +65013 -0
  11. package/.vite/deps_temp_3669a513/lodash.js +5497 -0
  12. package/.vite/deps_temp_3669a513/package.json +3 -0
  13. package/.vite/deps_temp_3669a513/vue.js +324 -0
  14. package/.vite/deps_temp_3669a513/vxe-table.js +32336 -0
  15. package/CHANGELOG.md +1 -0
  16. package/LICENSE +21 -0
  17. package/README.md +0 -0
  18. package/directoryList.md +180 -0
  19. package/package.json +78 -0
  20. package/postcss.config.js +7 -0
  21. package/src/App.vue +88 -0
  22. package/src/api/fieldConfigController/index.ts +76 -0
  23. package/src/api/fieldConfigController/type.ts +44 -0
  24. package/src/api/login/index.ts +78 -0
  25. package/src/api/loginController/index.ts +74 -0
  26. package/src/api/menu/index.ts +34 -0
  27. package/src/api/menu/index2.ts +291 -0
  28. package/src/api/menuController/index.ts +189 -0
  29. package/src/api/systemController/index.ts +26 -0
  30. package/src/api/systemController/type.ts +16 -0
  31. package/src/api/test/index.ts +22 -0
  32. package/src/api/user/index.ts +30 -0
  33. package/src/assets/404.png +0 -0
  34. package/src/assets/logo-main.svg +12 -0
  35. package/src/assets/logo-mini.svg +12 -0
  36. package/src/components/base/hsAffix/src/hsAffix.vue +22 -0
  37. package/src/components/base/hsAlert/src/hsAlert.vue +15 -0
  38. package/src/components/base/hsAutocomplete/src/hsAutocomplete.vue +36 -0
  39. package/src/components/base/hsButton/src/hsButton.vue +26 -0
  40. package/src/components/base/hsButton/src/hsButtonGroup.vue +8 -0
  41. package/src/components/base/hsButton/useButtonEvents.ts +19 -0
  42. package/src/components/base/hsCalendar/src/hsCalendar.vue +36 -0
  43. package/src/components/base/hsCarousel/src/hsCarousel.vue +15 -0
  44. package/src/components/base/hsCarousel/src/hsCarouselItem.vue +15 -0
  45. package/src/components/base/hsCascader/src/hsCascader.vue +36 -0
  46. package/src/components/base/hsCascader/src/hsCascaderPanel.vue +29 -0
  47. package/src/components/base/hsCheckbox/src/hsCheckbox.vue +32 -0
  48. package/src/components/base/hsCheckbox/src/hsCheckboxButton.vue +18 -0
  49. package/src/components/base/hsCheckbox/src/hsCheckboxGroup.vue +32 -0
  50. package/src/components/base/hsCol/src/hsCol.vue +20 -0
  51. package/src/components/base/hsCollapse/src/hsCollapse.vue +36 -0
  52. package/src/components/base/hsCollapse/src/hsCollapseItem.vue +22 -0
  53. package/src/components/base/hsColorPicker/src/hsColorPicker.vue +32 -0
  54. package/src/components/base/hsDatePicker/src/hsDatePicker.vue +40 -0
  55. package/src/components/base/hsDialog/src/hsDialog.vue +36 -0
  56. package/src/components/base/hsDrawer/src/hsDrawer.vue +29 -0
  57. package/src/components/base/hsDropdown/src/hsDropdown.vue +15 -0
  58. package/src/components/base/hsDropdown/src/hsDropdownItem.vue +15 -0
  59. package/src/components/base/hsDropdown/src/hsDropdownMenu.vue +15 -0
  60. package/src/components/base/hsForm/src/hsForm.vue +23 -0
  61. package/src/components/base/hsForm/src/hsFormItem.vue +22 -0
  62. package/src/components/base/hsGetApi/src/hsGetApis.vue +231 -0
  63. package/src/components/base/hsGetApi/useGetApis.ts +158 -0
  64. package/src/components/base/hsInput/src/hsInput.vue +40 -0
  65. package/src/components/base/hsInput/useInputEvents.ts +52 -0
  66. package/src/components/base/hsInputNumber/src/hsInputNumber.vue +31 -0
  67. package/src/components/base/hsPopconfirm/src/hsPopconfirm.vue +15 -0
  68. package/src/components/base/hsPopover/src/hsPopover.vue +22 -0
  69. package/src/components/base/hsProgress/src/hsProgress.vue +15 -0
  70. package/src/components/base/hsRadio/src/hsRadio.vue +32 -0
  71. package/src/components/base/hsRadio/src/hsRadioButton.vue +18 -0
  72. package/src/components/base/hsRadio/src/hsRadioGroup.vue +32 -0
  73. package/src/components/base/hsRate/src/hsRate.vue +33 -0
  74. package/src/components/base/hsResult/src/hsResult.vue +15 -0
  75. package/src/components/base/hsRow/src/hsRow.vue +20 -0
  76. package/src/components/base/hsScrollbar/src/hsScrollbar.vue +22 -0
  77. package/src/components/base/hsSelect/src/hsOption.vue +8 -0
  78. package/src/components/base/hsSelect/src/hsOptionGroup.vue +8 -0
  79. package/src/components/base/hsSelect/src/hsSelect.vue +42 -0
  80. package/src/components/base/hsSelect/useSelectEvents.ts +60 -0
  81. package/src/components/base/hsSlider/src/hsSlider.vue +25 -0
  82. package/src/components/base/hsSteps/src/hsStep.vue +15 -0
  83. package/src/components/base/hsSteps/src/hsSteps.vue +15 -0
  84. package/src/components/base/hsSwitch/src/hsSwitch.vue +35 -0
  85. package/src/components/base/hsTable/hsBCTable.vue +116 -0
  86. package/src/components/base/hsTable/hsTable copy.vue +226 -0
  87. package/src/components/base/hsTable/hsTable.vue +213 -0
  88. package/src/components/base/hsTable/useHsTableConfig.ts +95 -0
  89. package/src/components/base/hsTable/useTableEvents.ts +118 -0
  90. package/src/components/base/hsTabs/src/hsTabPane.vue +15 -0
  91. package/src/components/base/hsTabs/src/hsTabs.vue +29 -0
  92. package/src/components/base/hsTag/src/hsCheckTag.vue +16 -0
  93. package/src/components/base/hsTag/src/hsTag.vue +15 -0
  94. package/src/components/base/hsTest/HsTest.vue +320 -0
  95. package/src/components/base/hsTooltip/src/hsTooltip.vue +22 -0
  96. package/src/components/base/hsTour/src/hsTour.vue +31 -0
  97. package/src/components/base/hsTour/src/hsTourStep.vue +15 -0
  98. package/src/components/base/hsTransfer/src/hsTransfer.vue +36 -0
  99. package/src/components/base/hsTree/src/hsTree.vue +24 -0
  100. package/src/components/base/hsTreeSelect/src/hsTreeSelect.vue +39 -0
  101. package/src/components/base/hsUpload/src/hsUpload.vue +32 -0
  102. package/src/components/base/hsWatermark/src/hsWatermark.vue +15 -0
  103. package/src/components/business/bcAutoComplete/bcAutoComplete.vue +38 -0
  104. package/src/components/business/bcAutoComplete/defaultData.ts +25 -0
  105. package/src/components/business/bcAutoComplete/useAutoComplete.ts +65 -0
  106. package/src/components/business/bcBtn/bcBtn.vue +40 -0
  107. package/src/components/business/bcForm/bcForm.vue +113 -0
  108. package/src/components/business/bcForm/bcFormDrag.vue +104 -0
  109. package/src/components/business/bcForm/bcFormSearch.vue +154 -0
  110. package/src/components/business/bcForm/components/sortForm/index.ts +18 -0
  111. package/src/components/business/bcForm/components/sortForm/sortForm.vue +92 -0
  112. package/src/components/business/bcFormConfig/bcFormConfig.vue +196 -0
  113. package/src/components/business/bcFormTable/bcFormTable.vue +91 -0
  114. package/src/components/business/bcFormTable/components/bcTabs/bcTabs.vue +53 -0
  115. package/src/components/business/bcFormTable/components/contextBody/contextBody.vue +67 -0
  116. package/src/components/business/bcFormTable/components/contextBody/useContextMenu.ts +53 -0
  117. package/src/components/business/bcFormTable/components/formSearchBtn/formSearchBtn.vue +21 -0
  118. package/src/components/business/bcFormTable/methods/cellDetailMethod.ts +5 -0
  119. package/src/components/business/bcFormTable/methods/filterAgeMethod.ts +5 -0
  120. package/src/components/business/bcFormTable/methods/footerMethod.ts +25 -0
  121. package/src/components/business/bcFormTable/methods/index.ts +10 -0
  122. package/src/components/business/bcFormTable/utils/onFormKey.ts +121 -0
  123. package/src/components/business/bcFormTable/utils/onTableKey.ts +119 -0
  124. package/src/components/business/bcFormTable/utils/parseTable.ts +201 -0
  125. package/src/components/business/bcFormTable/utils/useButon.ts +20 -0
  126. package/src/components/business/bcFormTable/utils/useTableHeight.ts +44 -0
  127. package/src/components/business/bcPageConfig/bcPageConfig.vue +79 -0
  128. package/src/components/business/bcPageConfig/components/hsBtn/src/hsAttrBtn.vue +39 -0
  129. package/src/components/business/bcPageConfig/components/hsBtn/src/hsBtnConfigList.vue +45 -0
  130. package/src/components/business/bcPageConfig/components/hsBtn/src/hsBtnItemConfig.vue +32 -0
  131. package/src/components/business/bcPageConfig/components/hsBtn/src/hsBtnPanel.vue +45 -0
  132. package/src/components/business/bcPageConfig/components/hsBtn/useAttrBtn.ts +58 -0
  133. package/src/components/business/bcPageConfig/components/hsBtn/useBtnConfigList.ts +71 -0
  134. package/src/components/business/bcPageConfig/components/hsBtn/useBtnItemConfig.ts +35 -0
  135. package/src/components/business/bcPageConfig/components/hsExpand/src/hsExpand.vue +33 -0
  136. package/src/components/business/bcPageConfig/components/hsExpand/useExpand.ts +9 -0
  137. package/src/components/business/bcPageConfig/components/hsForm/src/hsAttrForm.vue +54 -0
  138. package/src/components/business/bcPageConfig/components/hsForm/src/hsFormConfig.vue +180 -0
  139. package/src/components/business/bcPageConfig/components/hsForm/src/hsFormConfigList.vue +45 -0
  140. package/src/components/business/bcPageConfig/components/hsForm/src/hsFormPanel.vue +64 -0
  141. package/src/components/business/bcPageConfig/components/hsForm/src/hsFormParse.vue +24 -0
  142. package/src/components/business/bcPageConfig/components/hsForm/useAttrForm.ts +108 -0
  143. package/src/components/business/bcPageConfig/components/hsForm/useFormListConfig.ts +69 -0
  144. package/src/components/business/bcPageConfig/components/hsForm/useFormParse.ts +120 -0
  145. package/src/components/business/bcPageConfig/components/hsSaveForm/saveFormConfig.ts +66 -0
  146. package/src/components/business/bcPageConfig/components/hsSaveForm/src/saveForm.vue +48 -0
  147. package/src/components/business/bcPageConfig/components/hsSaveForm/useSaveForm.ts +148 -0
  148. package/src/components/business/bcPageConfig/components/hsTables/src/hsAttrTable.vue +122 -0
  149. package/src/components/business/bcPageConfig/components/hsTables/src/hsRecursionConfig.vue +36 -0
  150. package/src/components/business/bcPageConfig/components/hsTables/src/hsTableConfig.vue +51 -0
  151. package/src/components/business/bcPageConfig/components/hsTables/src/hsTableConfigList.vue +46 -0
  152. package/src/components/business/bcPageConfig/components/hsTables/src/hsTablePanel.vue +68 -0
  153. package/src/components/business/bcPageConfig/components/hsTables/src/hsTableParse.vue +24 -0
  154. package/src/components/business/bcPageConfig/components/hsTables/useAttrTable.ts +218 -0
  155. package/src/components/business/bcPageConfig/components/hsTables/useTableConfigList.ts +77 -0
  156. package/src/components/business/bcPageConfig/components/hsTables/useTableParse.ts +78 -0
  157. package/src/components/business/bcPageConfig/default/apis.json +24712 -0
  158. package/src/components/business/bcPageConfig/default/baseBtnConfig.ts +256 -0
  159. package/src/components/business/bcPageConfig/default/baseFormConfig.ts +380 -0
  160. package/src/components/business/bcPageConfig/default/baseTableConfig.ts +2399 -0
  161. package/src/components/business/bcPageConfig/usePageConfig.ts +469 -0
  162. package/src/components/business/bcSelect/bcSelect.vue +50 -0
  163. package/src/components/business/bcSwitchSystems/bcSwitchSystems.vue +36 -0
  164. package/src/components/business/bcSwitchSystems/useSwitchSystems.ts +74 -0
  165. package/src/components/business/bcTable/bcTable.vue +63 -0
  166. package/src/components/business/bcTable/components/sortColumn/index.ts +19 -0
  167. package/src/components/business/bcTable/components/sortColumn/sortColumn.vue +107 -0
  168. package/src/components/business/bcTable/useTable.ts +51 -0
  169. package/src/components/business/bcTable/useTableHeight.ts +24 -0
  170. package/src/components/business/bcTreeSelect/bcTreeSelect.vue +12 -0
  171. package/src/components/business/cardID/cardID.vue +24 -0
  172. package/src/components/business/cardID/type.ts +0 -0
  173. package/src/components/business/cardID/useCardID.ts +0 -0
  174. package/src/components/component.ts +188 -0
  175. package/src/components/config/autocompleteAttrConfig/autocompleteAttrConfig.vue +26 -0
  176. package/src/components/config/autocompleteAttrConfig/config.ts +170 -0
  177. package/src/components/config/baseForm.vue +175 -0
  178. package/src/components/config/buttonAttrConfig/buttonAttrConfig.vue +26 -0
  179. package/src/components/config/buttonAttrConfig/config.ts +261 -0
  180. package/src/components/config/cascaderAttrConfig/cascaderAttrConfig.vue +26 -0
  181. package/src/components/config/cascaderAttrConfig/config.ts +287 -0
  182. package/src/components/config/cascaderPanelAttrConfig/cascaderPanelAttrConfig.vue +26 -0
  183. package/src/components/config/cascaderPanelAttrConfig/config.ts +278 -0
  184. package/src/components/config/checkboxAttrConfig/checkboxAttrConfig.vue +26 -0
  185. package/src/components/config/checkboxAttrConfig/config.ts +301 -0
  186. package/src/components/config/datePickerAttrConfig/config.ts +256 -0
  187. package/src/components/config/datePickerAttrConfig/datePickerAttrConfig.vue +26 -0
  188. package/src/components/config/inputAttrConfig/config.ts +322 -0
  189. package/src/components/config/inputAttrConfig/inputAttrConfig.vue +33 -0
  190. package/src/components/config/inputAttrConfig/inputEventConfig.vue +35 -0
  191. package/src/components/config/inputNumberAttrConfig/config.ts +177 -0
  192. package/src/components/config/inputNumberAttrConfig/inputNumberAttrConfig.vue +26 -0
  193. package/src/components/config/radioAttrConfig/config.ts +212 -0
  194. package/src/components/config/radioAttrConfig/radioAttrConfig.vue +26 -0
  195. package/src/components/config/selectAttrConfig/config.ts +478 -0
  196. package/src/components/config/selectAttrConfig/selectAttrConfig.vue +26 -0
  197. package/src/components/config/switchAttrConfig/config.ts +195 -0
  198. package/src/components/config/switchAttrConfig/switchAttrConfig.vue +26 -0
  199. package/src/components/config/treeSelectAttrConfig/config.ts +625 -0
  200. package/src/components/config/treeSelectAttrConfig/treeSelectAttrConfig.vue +26 -0
  201. package/src/components/config/type/formType.ts +25 -0
  202. package/src/components/config/uploadAttrConfig/config.ts +250 -0
  203. package/src/components/config/uploadAttrConfig/uploadAttrConfig.vue +26 -0
  204. package/src/components/iconSelector/index.vue +247 -0
  205. package/src/components/iconSelector/list.vue +84 -0
  206. package/src/components/svgIcon/index.vue +61 -0
  207. package/src/directive/authDirective.ts +40 -0
  208. package/src/directive/customDirective.ts +178 -0
  209. package/src/directive/index.ts +18 -0
  210. package/src/hooks/useCrypto.ts +36 -0
  211. package/src/hooks/useExpose.ts +60 -0
  212. package/src/layout/component/aside.vue +160 -0
  213. package/src/layout/component/columnsAside.vue +299 -0
  214. package/src/layout/component/header.vue +18 -0
  215. package/src/layout/component/main.vue +65 -0
  216. package/src/layout/footer/index.vue +25 -0
  217. package/src/layout/index.vue +53 -0
  218. package/src/layout/lockScreen/index.vue +352 -0
  219. package/src/layout/logo/index.vue +75 -0
  220. package/src/layout/main/classic.vue +73 -0
  221. package/src/layout/main/columns.vue +73 -0
  222. package/src/layout/main/defaults.vue +73 -0
  223. package/src/layout/main/transverse.vue +60 -0
  224. package/src/layout/navBars/index.vue +35 -0
  225. package/src/layout/navBars/tagsView/contextmenu.vue +133 -0
  226. package/src/layout/navBars/tagsView/tagsView.vue +737 -0
  227. package/src/layout/navBars/topBar/breadcrumb.vue +146 -0
  228. package/src/layout/navBars/topBar/closeFull.vue +53 -0
  229. package/src/layout/navBars/topBar/index.vue +107 -0
  230. package/src/layout/navBars/topBar/search.vue +123 -0
  231. package/src/layout/navBars/topBar/setings.vue +789 -0
  232. package/src/layout/navBars/topBar/user.vue +222 -0
  233. package/src/layout/navBars/topBar/userNews.vue +107 -0
  234. package/src/layout/navMenu/horizontal.vue +138 -0
  235. package/src/layout/navMenu/subItem.vue +49 -0
  236. package/src/layout/navMenu/vertical.vue +100 -0
  237. package/src/layout/routerView/iframes.vue +101 -0
  238. package/src/layout/routerView/link.vue +93 -0
  239. package/src/layout/routerView/parent.vue +104 -0
  240. package/src/layout/upgrade/index.vue +147 -0
  241. package/src/main.ts +70 -0
  242. package/src/router/backEnd.ts +173 -0
  243. package/src/router/frontEnd.ts +155 -0
  244. package/src/router/index.ts +138 -0
  245. package/src/router/route.ts +94 -0
  246. package/src/stores/index.ts +8 -0
  247. package/src/stores/keepAliveNames.ts +38 -0
  248. package/src/stores/requestOldRoutes.ts +16 -0
  249. package/src/stores/routesList.ts +26 -0
  250. package/src/stores/tagsViewRoutes.ts +23 -0
  251. package/src/stores/themeConfig.ts +142 -0
  252. package/src/stores/userInfo.ts +65 -0
  253. package/src/style/index.scss +0 -0
  254. package/src/style/tailwind.css +29 -0
  255. package/src/theme/app.scss +333 -0
  256. package/src/theme/common/transition.scss +147 -0
  257. package/src/theme/dark.scss +255 -0
  258. package/src/theme/element.scss +321 -0
  259. package/src/theme/iconSelector.scss +31 -0
  260. package/src/theme/index.scss +8 -0
  261. package/src/theme/loading.scss +51 -0
  262. package/src/theme/media/chart.scss +94 -0
  263. package/src/theme/media/cityLinkage.scss +10 -0
  264. package/src/theme/media/date.scss +25 -0
  265. package/src/theme/media/dialog.scss +12 -0
  266. package/src/theme/media/error.scss +45 -0
  267. package/src/theme/media/form.scss +31 -0
  268. package/src/theme/media/home.scss +23 -0
  269. package/src/theme/media/index.scss +15 -0
  270. package/src/theme/media/layout.scss +63 -0
  271. package/src/theme/media/login.scss +74 -0
  272. package/src/theme/media/media.scss +13 -0
  273. package/src/theme/media/pagination.scss +15 -0
  274. package/src/theme/media/personal.scss +16 -0
  275. package/src/theme/media/scrollbar.scss +56 -0
  276. package/src/theme/media/tagsView.scss +11 -0
  277. package/src/theme/mixins/index.scss +56 -0
  278. package/src/theme/other.scss +36 -0
  279. package/src/theme/tableTool.scss +27 -0
  280. package/src/theme/waves.scss +101 -0
  281. package/src/types/auth.d.ts +44 -0
  282. package/src/types/axios.d.ts +13 -0
  283. package/src/types/components.d.ts +30 -0
  284. package/src/types/customData.d.ts +163 -0
  285. package/src/types/form.ts +68 -0
  286. package/src/types/formItem/autocomplete.ts +43 -0
  287. package/src/types/formItem/button.ts +39 -0
  288. package/src/types/formItem/input.ts +66 -0
  289. package/src/types/formItem/inputNumber.ts +42 -0
  290. package/src/types/formItem/selelct.ts +54 -0
  291. package/src/types/formItem/treeSelect.ts +37 -0
  292. package/src/types/formTable.d.ts +210 -0
  293. package/src/types/global.d.ts +118 -0
  294. package/src/types/layout.d.ts +59 -0
  295. package/src/types/mitt.d.ts +38 -0
  296. package/src/types/pinia.d.ts +92 -0
  297. package/src/types/views.d.ts +331 -0
  298. package/src/utils/arrayOperation.ts +65 -0
  299. package/src/utils/authFunction.ts +38 -0
  300. package/src/utils/build.ts +124 -0
  301. package/src/utils/commonFunction.ts +64 -0
  302. package/src/utils/formatTime.ts +137 -0
  303. package/src/utils/getDataType.ts +136 -0
  304. package/src/utils/getStyleSheets.ts +101 -0
  305. package/src/utils/loading.ts +44 -0
  306. package/src/utils/mitt.ts +8 -0
  307. package/src/utils/other.ts +214 -0
  308. package/src/utils/request.ts +82 -0
  309. package/src/utils/setIconfont.ts +48 -0
  310. package/src/utils/showMessage.ts +57 -0
  311. package/src/utils/showMessageBox.ts +39 -0
  312. package/src/utils/showNotification.ts +50 -0
  313. package/src/utils/showPopup.ts +81 -0
  314. package/src/utils/storage.ts +137 -0
  315. package/src/utils/theme.ts +65 -0
  316. package/src/utils/toolsValidate.ts +370 -0
  317. package/src/utils/watermark.ts +47 -0
  318. package/src/views/error/401.vue +88 -0
  319. package/src/views/error/404.vue +89 -0
  320. package/src/views/home/index.vue +62 -0
  321. package/src/views/login/component/account.vue +172 -0
  322. package/src/views/login/component/mobile.vue +72 -0
  323. package/src/views/login/component/scan.vue +63 -0
  324. package/src/views/login/index.vue +254 -0
  325. package/src/views/system/auth/index.vue +48 -0
  326. package/src/views/system/auth/list.ts +50 -0
  327. package/src/views/system/auth/useAuth.ts +34 -0
  328. package/src/views/system/dept/dialog.vue +167 -0
  329. package/src/views/system/dept/index.vue +135 -0
  330. package/src/views/system/dic/dialog.vue +150 -0
  331. package/src/views/system/dic/index.vue +132 -0
  332. package/src/views/system/form/data.json +360 -0
  333. package/src/views/system/form/index.vue +24 -0
  334. package/src/views/system/formSetting/components/hsBtn/src/hsAttrBtn.vue +58 -0
  335. package/src/views/system/formSetting/components/hsBtn/src/hsBtnConfigList.vue +45 -0
  336. package/src/views/system/formSetting/components/hsBtn/src/hsBtnPanel.vue +51 -0
  337. package/src/views/system/formSetting/components/hsBtn/useAttrBtn.ts +129 -0
  338. package/src/views/system/formSetting/components/hsBtn/useBtnConfigList.ts +73 -0
  339. package/src/views/system/formSetting/components/hsExpand/src/hsExpand.vue +27 -0
  340. package/src/views/system/formSetting/components/hsExpand/useExpand.ts +9 -0
  341. package/src/views/system/formSetting/components/hsForm/src/hsAttrForm.vue +124 -0
  342. package/src/views/system/formSetting/components/hsForm/src/hsFormConfig.vue +180 -0
  343. package/src/views/system/formSetting/components/hsForm/src/hsFormConfigList.vue +45 -0
  344. package/src/views/system/formSetting/components/hsForm/src/hsFormPanel.vue +152 -0
  345. package/src/views/system/formSetting/components/hsForm/src/hsFormParse.vue +33 -0
  346. package/src/views/system/formSetting/components/hsForm/useAttrForm.ts +109 -0
  347. package/src/views/system/formSetting/components/hsForm/useFormListConfig.ts +70 -0
  348. package/src/views/system/formSetting/components/hsPageTree/configData.ts +3700 -0
  349. package/src/views/system/formSetting/components/hsPageTree/src/hsPageTree.vue +30 -0
  350. package/src/views/system/formSetting/components/hsPageTree/usePageTree.ts +50 -0
  351. package/src/views/system/formSetting/components/hsSaveForm/saveFormConfig.ts +66 -0
  352. package/src/views/system/formSetting/components/hsSaveForm/src/saveForm.vue +47 -0
  353. package/src/views/system/formSetting/components/hsSaveForm/useSaveForm.ts +122 -0
  354. package/src/views/system/formSetting/components/hsTables/src/hsAttrTable.vue +91 -0
  355. package/src/views/system/formSetting/components/hsTables/src/hsRecursionConfig.vue +36 -0
  356. package/src/views/system/formSetting/components/hsTables/src/hsTableConfig.vue +39 -0
  357. package/src/views/system/formSetting/components/hsTables/src/hsTableConfigList.vue +45 -0
  358. package/src/views/system/formSetting/components/hsTables/src/hsTablePanel.vue +56 -0
  359. package/src/views/system/formSetting/components/hsTables/src/hsTableParse.vue +29 -0
  360. package/src/views/system/formSetting/components/hsTables/useAttrTable.ts +125 -0
  361. package/src/views/system/formSetting/components/hsTables/useTableConfigList.ts +77 -0
  362. package/src/views/system/formSetting/components/selectConfig/config.ts +476 -0
  363. package/src/views/system/formSetting/components/selectConfig/selectConfig.vue +30 -0
  364. package/src/views/system/formSetting/data.json +360 -0
  365. package/src/views/system/formSetting/default/baseBtnConfig.ts +216 -0
  366. package/src/views/system/formSetting/default/baseFormConfig.ts +567 -0
  367. package/src/views/system/formSetting/default/baseTableConfig.ts +2353 -0
  368. package/src/views/system/formSetting/formConfig.vue +108 -0
  369. package/src/views/system/formSetting/index.vue +35 -0
  370. package/src/views/system/formSetting/menuType.d.ts +12 -0
  371. package/src/views/system/formSetting/panelConfig.json +164 -0
  372. package/src/views/system/formSetting/useForm.ts +89 -0
  373. package/src/views/system/formSetting/useFormConfig.ts +192 -0
  374. package/src/views/system/menu/dialog.vue +285 -0
  375. package/src/views/system/menu/index.vue +180 -0
  376. package/src/views/system/page/components/hsPageTree/configData.ts +3700 -0
  377. package/src/views/system/page/components/hsPageTree/src/hsPageTree.vue +30 -0
  378. package/src/views/system/page/components/hsPageTree/usePageTree.ts +49 -0
  379. package/src/views/system/page/index.vue +32 -0
  380. package/src/views/system/page/menuType.d.ts +12 -0
  381. package/src/views/system/page/usePage.ts +125 -0
  382. package/src/views/system/role/dialog.vue +236 -0
  383. package/src/views/system/role/index.vue +146 -0
  384. package/src/views/system/table/data.json +747 -0
  385. package/src/views/system/table/formate.js +49 -0
  386. package/src/views/system/table/index.vue +53 -0
  387. package/src/views/system/user/dialog.vue +187 -0
  388. package/src/views/system/user/index.vue +161 -0
  389. package/src/views/test/test/components/hsBtn/src/hsAttrBtn.vue +58 -0
  390. package/src/views/test/test/components/hsBtn/src/hsBtnConfigList.vue +45 -0
  391. package/src/views/test/test/components/hsBtn/src/hsBtnPanel.vue +51 -0
  392. package/src/views/test/test/components/hsBtn/useAttrBtn.ts +129 -0
  393. package/src/views/test/test/components/hsBtn/useBtnConfigList.ts +73 -0
  394. package/src/views/test/test/components/hsExpand/src/hsExpand.vue +27 -0
  395. package/src/views/test/test/components/hsExpand/useExpand.ts +9 -0
  396. package/src/views/test/test/components/hsForm/src/hsAttrForm.vue +124 -0
  397. package/src/views/test/test/components/hsForm/src/hsFormConfig.vue +180 -0
  398. package/src/views/test/test/components/hsForm/src/hsFormConfigList.vue +45 -0
  399. package/src/views/test/test/components/hsForm/src/hsFormPanel.vue +152 -0
  400. package/src/views/test/test/components/hsForm/src/hsFormParse.vue +33 -0
  401. package/src/views/test/test/components/hsForm/useAttrForm.ts +109 -0
  402. package/src/views/test/test/components/hsForm/useFormListConfig.ts +70 -0
  403. package/src/views/test/test/components/hsSaveForm/saveFormConfig.ts +66 -0
  404. package/src/views/test/test/components/hsSaveForm/src/saveForm.vue +47 -0
  405. package/src/views/test/test/components/hsSaveForm/useSaveForm.ts +122 -0
  406. package/src/views/test/test/components/hsTables/src/hsAttrTable.vue +91 -0
  407. package/src/views/test/test/components/hsTables/src/hsRecursionConfig.vue +36 -0
  408. package/src/views/test/test/components/hsTables/src/hsTableConfig.vue +39 -0
  409. package/src/views/test/test/components/hsTables/src/hsTableConfigList.vue +45 -0
  410. package/src/views/test/test/components/hsTables/src/hsTablePanel.vue +56 -0
  411. package/src/views/test/test/components/hsTables/src/hsTableParse.vue +29 -0
  412. package/src/views/test/test/components/hsTables/useAttrTable.ts +125 -0
  413. package/src/views/test/test/components/hsTables/useTableConfigList.ts +77 -0
  414. package/src/views/test/test/components/selectConfig/config.ts +476 -0
  415. package/src/views/test/test/components/selectConfig/selectConfig.vue +30 -0
  416. package/src/views/test/test/data.json +360 -0
  417. package/src/views/test/test/default/baseBtnConfig.ts +216 -0
  418. package/src/views/test/test/default/baseFormConfig.ts +567 -0
  419. package/src/views/test/test/default/baseTableConfig.ts +2353 -0
  420. package/src/views/test/test/formConfig.vue +102 -0
  421. package/src/views/test/test/test.vue +28 -0
  422. package/src/views/test/test/test3.vue +24 -0
  423. package/src/views/test/test/test4.vue +107 -0
  424. package/src/views/test/test/test/345/211/257/346/234/254.vue +2424 -0
  425. package/src/views/test/test/useFormConfig.ts +192 -0
  426. package/src/views/test/test2/test2.vue +17 -0
  427. package/src/views/test/test3/test.vue +20 -0
  428. package/tailwind.config.js +12 -0
  429. package/tsconfig.json +75 -0
  430. package/vite.config.ts +123 -0
@@ -0,0 +1,155 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { RouteRecordRaw } from 'vue-router';
3
+ import { storeToRefs } from 'pinia';
4
+ import { formatTwoStageRoutes, formatFlatteningRoutes, router } from '/@/router/index';
5
+ import { dynamicRoutes, notFoundAndNoPower } from '/@/router/route';
6
+ import pinia from '/@/stores/index';
7
+ import { Session } from '/@/utils/storage';
8
+ import { useUserInfo } from '/@/stores/userInfo';
9
+ import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes';
10
+ import { useRoutesList } from '/@/stores/routesList';
11
+ import { NextLoading } from '/@/utils/loading';
12
+
13
+ /**
14
+ * 判断路由 `meta.roles` 中是否包含当前登录用户权限字段
15
+ * @param roles 用户权限标识,在 userInfos(用户信息)的 roles(登录页登录时缓存到浏览器)数组
16
+ * @param route 当前循环时的路由项
17
+ * @returns 返回对比后有权限的路由项
18
+ */
19
+ export function hasRoles(roles: any, route: any) {
20
+ if (route.meta && route.meta.roles) return roles.some((role: any) => route.meta.roles.includes(role));
21
+ else return true;
22
+ }
23
+
24
+ /**
25
+ * 获取当前用户权限标识去比对路由表,设置递归过滤有权限的路由
26
+ * @param routes 当前路由 children
27
+ * @param roles 用户权限标识,在 userInfos(用户信息)的 roles(登录页登录时缓存到浏览器)数组
28
+ * @returns 返回有权限的路由数组 `meta.roles` 中控制
29
+ */
30
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
31
+ export function setFilterHasRolesMenu(routes: any, roles: any) {
32
+ const menu: any = [];
33
+ routes.forEach((route: any) => {
34
+ const item = { ...route };
35
+ if (hasRoles(roles, item)) {
36
+ if (item.children) item.children = setFilterHasRolesMenu(item.children, roles);
37
+ menu.push(item);
38
+ }
39
+ });
40
+ return menu;
41
+ }
42
+
43
+ /**
44
+ * 获取当前用户权限标识去比对路由表(未处理成多级嵌套路由)
45
+ * @description 这里主要用于动态路由的添加,router.addRoute
46
+ * @link 参考:https://next.router.vuejs.org/zh/api/#addroute
47
+ * @param chil dynamicRoutes(@/router/route)第一个顶级 children 的下路由集合
48
+ * @returns 返回有当前用户权限标识的路由数组
49
+ */
50
+ export function setFilterRoute(chil: any) {
51
+ const stores = useUserInfo(pinia);
52
+ const { userInfos } = storeToRefs(stores);
53
+ let filterRoute: any = [];
54
+ chil.forEach((route: any) => {
55
+ if (route.meta.roles) {
56
+ route.meta.roles.forEach((metaRoles: any) => {
57
+ userInfos.value.roles.forEach((roles: any) => {
58
+ if (metaRoles === roles) filterRoute.push({ ...route });
59
+ });
60
+ });
61
+ }
62
+ });
63
+ return filterRoute;
64
+ }
65
+ /**
66
+ * 获取有当前用户权限标识的路由数组,进行对原路由的替换
67
+ * @description 替换 dynamicRoutes(@/router/route)第一个顶级 children 的路由
68
+ * @returns 返回替换后的路由数组
69
+ */
70
+ export function setFilterRouteEnd() {
71
+ let filterRouteEnd: any = formatTwoStageRoutes(formatFlatteningRoutes(dynamicRoutes));
72
+ // notFoundAndNoPower 防止 404、401 不在 layout 布局中,不设置的话,404、401 界面将全屏显示
73
+ // 关联问题 No match found for location with path 'xxx'
74
+ filterRouteEnd[0].children = [...setFilterRoute(filterRouteEnd[0].children), ...notFoundAndNoPower];
75
+ return filterRouteEnd;
76
+ }
77
+
78
+ /**
79
+ * 添加动态路由
80
+ * @method router.addRoute
81
+ * @description 此处循环为 dynamicRoutes(@/router/route)第一个顶级 children 的路由一维数组,非多级嵌套
82
+ * @link 参考:https://next.router.vuejs.org/zh/api/#addroute
83
+ */
84
+ export async function setAddRoute() {
85
+ await setFilterRouteEnd().forEach((route: RouteRecordRaw) => {
86
+ console.debug('后端路由信息:', route);
87
+ router.addRoute(route);
88
+ });
89
+ }
90
+
91
+ /**
92
+ * 缓存多级嵌套数组处理后的一维数组
93
+ * @description 用于 tagsView、菜单搜索中:未过滤隐藏的(isHide)
94
+ */
95
+ export function setCacheTagsViewRoutes() {
96
+ // 获取有权限的路由,否则 tagsView、菜单搜索中无权限的路由也将显示
97
+ const stores = useUserInfo(pinia);
98
+ const storesTagsView = useTagsViewRoutes(pinia);
99
+ const { userInfos } = storeToRefs(stores);
100
+ let rolesRoutes = setFilterHasRolesMenu(dynamicRoutes, userInfos.value.roles);
101
+ // 添加到 pinia setTagsViewRoutes 中
102
+ storesTagsView.setTagsViewRoutes(formatTwoStageRoutes(formatFlatteningRoutes(rolesRoutes))[0].children);
103
+ }
104
+
105
+ /**
106
+ * 设置递归过滤有权限的路由到 pinia routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组
107
+ * @description 用于左侧菜单、横向菜单的显示
108
+ * @description 用于 tagsView、菜单搜索中:未过滤隐藏的(isHide)
109
+ */
110
+ export function setFilterMenuAndCacheTagsViewRoutes() {
111
+ const stores = useUserInfo(pinia);
112
+ const storesRoutesList = useRoutesList(pinia);
113
+ const { userInfos } = storeToRefs(stores);
114
+ storesRoutesList.setRoutesList(setFilterHasRolesMenu(dynamicRoutes[0].children, userInfos.value.roles));
115
+ setCacheTagsViewRoutes();
116
+ }
117
+
118
+ // 前端控制路由
119
+
120
+ /**
121
+ * 前端控制路由:初始化方法,防止刷新时路由丢失
122
+ * @method NextLoading 界面 loading 动画开始执行
123
+ * @method useUserInfo(pinia).setUserInfos() 触发初始化用户信息 pinia
124
+ * @method setAddRoute 添加动态路由
125
+ * @method setFilterMenuAndCacheTagsViewRoutes 设置递归过滤有权限的路由到 pinia routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组
126
+ */
127
+ export async function initFrontEndControlRoutes() {
128
+ // 界面 loading 动画开始执行
129
+ if (window.nextLoading === undefined) NextLoading.start();
130
+ // 无 token 停止执行下一步
131
+ const userInfo = useUserInfo();
132
+ const token = await userInfo.isLogin();
133
+ if (!token) return false;
134
+ // 触发初始化用户信息 pinia
135
+ // await useUserInfo(pinia).setUserInfos();
136
+ // // 无登录权限时,添加判断
137
+ // if (useUserInfo().userInfos.roles.length <= 0) return Promise.resolve(true);
138
+ // 添加动态路由
139
+ await setAddRoute();
140
+ // 设置递归过滤有权限的路由到 pinia routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组
141
+ setFilterMenuAndCacheTagsViewRoutes();
142
+ }
143
+
144
+ /**
145
+ * 删除/重置路由
146
+ * @method router.removeRoute
147
+ * @description 此处循环为 dynamicRoutes(@/router/route)第一个顶级 children 的路由一维数组,非多级嵌套
148
+ * @link 参考:https://next.router.vuejs.org/zh/api/#push
149
+ */
150
+ export async function frontEndsResetRoute() {
151
+ await setFilterRouteEnd().forEach((route: RouteRecordRaw) => {
152
+ const routeName: any = route.name;
153
+ router.hasRoute(routeName) && router.removeRoute(routeName);
154
+ });
155
+ }
@@ -0,0 +1,138 @@
1
+ import { createRouter, createWebHistory } from 'vue-router';
2
+ import NProgress from 'nprogress';
3
+ import 'nprogress/nprogress.css';
4
+ import pinia from '/@/stores/index';
5
+ import { storeToRefs } from 'pinia';
6
+ import { useKeepALiveNames } from '/@/stores/keepAliveNames';
7
+ import { useRoutesList } from '/@/stores/routesList';
8
+ import { useThemeConfig } from '/@/stores/themeConfig';
9
+ import { Session } from '/@/utils/storage';
10
+ import { staticRoutes, notFoundAndNoPower } from '/@/router/route';
11
+ import { initFrontEndControlRoutes } from '/@/router/frontEnd';
12
+ import { initBackEndControlRoutes } from '/@/router/backEnd';
13
+ import { useUserInfo } from '/@/stores/userInfo';
14
+
15
+ /**
16
+ * 1、前端控制路由时:isRequestRoutes 为 false,需要写 roles,需要走 setFilterRoute 方法。
17
+ * 2、后端控制路由时:isRequestRoutes 为 true,不需要写 roles,不需要走 setFilterRoute 方法),
18
+ * 相关方法已拆解到对应的 `backEnd.ts` 与 `frontEnd.ts`(他们互不影响,不需要同时改 2 个文件)。
19
+ * 特别说明:
20
+ * 1、前端控制:路由菜单由前端去写(无菜单管理界面,有角色管理界面),角色管理中有 roles 属性,需返回到 userInfo 中。
21
+ * 2、后端控制:路由菜单由后端返回(有菜单管理界面、有角色管理界面)
22
+ */
23
+
24
+ // 读取 `/src/stores/themeConfig.ts` 是否开启后端控制路由配置
25
+ const storesThemeConfig = useThemeConfig(pinia);
26
+ const { themeConfig } = storeToRefs(storesThemeConfig);
27
+ const { isRequestRoutes } = themeConfig.value;
28
+
29
+ /**
30
+ * 创建一个可以被 Vue 应用程序使用的路由实例
31
+ * @method createRouter(options: RouterOptions): Router
32
+ * @link 参考:https://next.router.vuejs.org/zh/api/#createrouter
33
+ */
34
+ export const router = createRouter({
35
+ // history: createWebHashHistory("./"),
36
+ history: createWebHistory(),
37
+ /**
38
+ * 说明:
39
+ * 1、notFoundAndNoPower 默认添加 404、401 界面,防止一直提示 No match found for location with path 'xxx'
40
+ * 2、backEnd.ts(后端控制路由)、frontEnd.ts(前端控制路由) 中也需要加 notFoundAndNoPower 404、401 界面。
41
+ * 防止 404、401 不在 layout 布局中,不设置的话,404、401 界面将全屏显示
42
+ */
43
+ routes: [...notFoundAndNoPower, ...staticRoutes],
44
+ });
45
+
46
+ /**
47
+ * 路由多级嵌套数组处理成一维数组
48
+ * @param arr 传入路由菜单数据数组
49
+ * @returns 返回处理后的一维路由菜单数组
50
+ */
51
+ export function formatFlatteningRoutes(arr: any) {
52
+ if (arr.length <= 0) return false;
53
+ for (let i = 0; i < arr.length; i++) {
54
+ if (arr[i].children) {
55
+ arr = arr.slice(0, i + 1).concat(arr[i].children, arr.slice(i + 1));
56
+ }
57
+ }
58
+ return arr;
59
+ }
60
+
61
+ /**
62
+ * 一维数组处理成多级嵌套数组(只保留二级:也就是二级以上全部处理成只有二级,keep-alive 支持二级缓存)
63
+ * @description isKeepAlive 处理 `name` 值,进行缓存。顶级关闭,全部不缓存
64
+ * @link 参考:https://v3.cn.vuejs.org/api/built-in-components.html#keep-alive
65
+ * @param arr 处理后的一维路由菜单数组
66
+ * @returns 返回将一维数组重新处理成 `定义动态路由(dynamicRoutes)` 的格式
67
+ */
68
+ export function formatTwoStageRoutes(arr: any) {
69
+ if (arr.length <= 0) return false;
70
+ const newArr: any = [];
71
+ const cacheList: Array<string> = [];
72
+ arr.forEach((v: any) => {
73
+ if (v.path === '/') {
74
+ newArr.push({ component: v.component, name: v.name, path: v.path, redirect: v.redirect, meta: v.meta, children: [] });
75
+ } else {
76
+ // 判断是否是动态路由(xx/:id/:name),用于 tagsView 等中使用
77
+ if (v.path.indexOf('/:') > -1) {
78
+ v.meta['isDynamic'] = true;
79
+ v.meta['isDynamicPath'] = v.path;
80
+ }
81
+ newArr[0].children.push({ ...v });
82
+ // 存 name 值,keep-alive 中 include 使用,实现路由的缓存
83
+ // 路径:@/layout/routerView/parent.vue
84
+ if (newArr[0].meta.isKeepAlive && v.meta.isKeepAlive) {
85
+ cacheList.push(v.name);
86
+ const stores = useKeepALiveNames(pinia);
87
+ stores.setCacheKeepAlive(cacheList);
88
+ }
89
+ }
90
+ });
91
+ return newArr;
92
+ }
93
+
94
+ // 路由加载前
95
+ router.beforeEach(async (to, from, next) => {
96
+ NProgress.configure({ showSpinner: false });
97
+ if (to.meta.title) NProgress.start();
98
+ const userInfo = useUserInfo();
99
+ const token = await userInfo.isLogin();
100
+ if (to.path === '/login' && !token) {
101
+ next();
102
+ NProgress.done();
103
+ } else {
104
+ if (!token) {
105
+ next(`/login?redirect=${to.path}&params=${JSON.stringify(to.query ? to.query : to.params)}`);
106
+ Session.clear();
107
+ NProgress.done();
108
+ } else if (token && to.path === '/login') {
109
+ next('/home');
110
+ NProgress.done();
111
+ } else {
112
+ const storesRoutesList = useRoutesList(pinia);
113
+ const { routesList } = storeToRefs(storesRoutesList);
114
+ if (routesList.value.length === 0) {
115
+ if (isRequestRoutes) {
116
+ // 后端控制路由:路由数据初始化,防止刷新时丢失
117
+ await initBackEndControlRoutes();
118
+ // 解决刷新时,一直跳 404 页面问题,关联问题 No match found for location with path 'xxx'
119
+ // to.query 防止页面刷新时,普通路由带参数时,参数丢失。动态路由(xxx/:id/:name")isDynamic 无需处理
120
+ next({ path: to.path, query: to.query });
121
+ } else {
122
+ await initFrontEndControlRoutes();
123
+ next({ path: to.path, query: to.query });
124
+ }
125
+ } else {
126
+ next();
127
+ }
128
+ }
129
+ }
130
+ });
131
+
132
+ // 路由加载后
133
+ router.afterEach(() => {
134
+ NProgress.done();
135
+ });
136
+
137
+ // 导出路由
138
+ export default router;
@@ -0,0 +1,94 @@
1
+ import { RouteRecordRaw } from 'vue-router';
2
+
3
+ /**
4
+ * 建议:路由 path 路径与文件夹名称相同,找文件可浏览器地址找,方便定位文件位置
5
+ *
6
+ * 路由meta对象参数说明
7
+ * meta: {
8
+ * title: 菜单栏及 tagsView 栏、菜单搜索名称(国际化)
9
+ * isLink: 是否超链接菜单,开启外链条件,`1、isLink: 链接地址不为空 2、isIframe:false`
10
+ * isHide: 是否隐藏此路由
11
+ * isKeepAlive: 是否缓存组件状态
12
+ * isAffix: 是否固定在 tagsView 栏上
13
+ * isIframe: 是否内嵌窗口,开启条件,`1、isIframe:true 2、isLink:链接地址不为空`
14
+ * roles: 当前路由权限标识,取角色管理。控制路由显示、隐藏。超级管理员:admin 普通角色:common
15
+ * icon: 菜单、tagsView 图标,阿里:加 `iconfont xxx`,fontawesome:加 `fa xxx`
16
+ * }
17
+ */
18
+
19
+ // 扩展 RouteMeta 接口
20
+ declare module 'vue-router' {
21
+ interface RouteMeta {
22
+ title?: string;
23
+ isLink?: string;
24
+ isHide?: boolean;
25
+ isKeepAlive?: boolean;
26
+ isAffix?: boolean;
27
+ isIframe?: boolean;
28
+ roles?: string[];
29
+ icon?: string;
30
+ }
31
+ }
32
+
33
+ /**
34
+ * 定义动态路由
35
+ * 前端添加路由,请在顶级节点的 `children 数组` 里添加
36
+ * @description 未开启 isRequestRoutes 为 true 时使用(前端控制路由),开启时第一个顶级 children 的路由将被替换成接口请求回来的路由数据
37
+ * @description 各字段请查看 `@/views/system/menu/component/addMenu.vue 下的 ruleForm`
38
+ * @returns 返回路由菜单数据
39
+ */
40
+ export const dynamicRoutes: Array<RouteRecordRaw> = [
41
+ {
42
+ path: '/',
43
+ name: '/',
44
+ component: () => import('/@/layout/index.vue'),
45
+ redirect: '/home',
46
+ meta: {
47
+ isKeepAlive: true,
48
+ },
49
+ children: [
50
+ ],
51
+ },
52
+ ];
53
+
54
+ /**
55
+ * 定义404、401界面
56
+ * @link 参考:https://next.router.vuejs.org/zh/guide/essentials/history-mode.html#netlify
57
+ */
58
+ export const notFoundAndNoPower = [
59
+ {
60
+ path: '/:path(.*)*',
61
+ name: 'notFound',
62
+ component: () => import('/@/views/error/404.vue'),
63
+ meta: {
64
+ title: '找不到此页面',
65
+ isHide: true,
66
+ },
67
+ },
68
+ {
69
+ path: '/401',
70
+ name: 'noPower',
71
+ component: () => import('/@/views/error/401.vue'),
72
+ meta: {
73
+ title: '没有权限',
74
+ isHide: true,
75
+ },
76
+ },
77
+ ];
78
+
79
+ /**
80
+ * 定义静态路由(默认路由)
81
+ * 此路由不要动,前端添加路由的话,请在 `dynamicRoutes 数组` 中添加
82
+ * @description 前端控制直接改 dynamicRoutes 中的路由,后端控制不需要修改,请求接口路由数据时,会覆盖 dynamicRoutes 第一个顶级 children 的内容(全屏,不包含 layout 中的路由出口)
83
+ * @returns 返回路由菜单数据
84
+ */
85
+ export const staticRoutes: Array<RouteRecordRaw> = [
86
+ {
87
+ path: '/login',
88
+ name: 'login',
89
+ component: () => import('/@/views/login/index.vue'),
90
+ meta: {
91
+ title: '登录',
92
+ },
93
+ },
94
+ ];
@@ -0,0 +1,8 @@
1
+ // https://pinia.vuejs.org/
2
+ import { createPinia } from 'pinia';
3
+
4
+ // 创建
5
+ const pinia = createPinia();
6
+
7
+ // 导出
8
+ export default pinia;
@@ -0,0 +1,38 @@
1
+ import { defineStore } from 'pinia';
2
+
3
+ /**
4
+ * 路由缓存列表
5
+ * @methods setCacheKeepAlive 设置要缓存的路由 names(开启 Tagsview)
6
+ * @methods addCachedView 添加要缓存的路由 names(关闭 Tagsview)
7
+ * @methods delCachedView 删除要缓存的路由 names(关闭 Tagsview)
8
+ * @methods delOthersCachedViews 右键菜单`关闭其它`,删除要缓存的路由 names(关闭 Tagsview)
9
+ * @methods delAllCachedViews 右键菜单`全部关闭`,删除要缓存的路由 names(关闭 Tagsview)
10
+ */
11
+ export const useKeepALiveNames = defineStore('keepALiveNames', {
12
+ state: (): KeepAliveNamesState => ({
13
+ keepAliveNames: [],
14
+ cachedViews: [],
15
+ }),
16
+ actions: {
17
+ async setCacheKeepAlive(data: Array<string>) {
18
+ this.keepAliveNames = data;
19
+ },
20
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
+ async addCachedView(view: any) {
22
+ if (view.meta.isKeepAlive) this.cachedViews?.push(view.name);
23
+ },
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
+ async delCachedView(view: any) {
26
+ const index = this.cachedViews.indexOf(view.name);
27
+ index > -1 && this.cachedViews.splice(index, 1);
28
+ },
29
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
+ async delOthersCachedViews(view: any) {
31
+ if (view.meta.isKeepAlive) this.cachedViews = [view.name];
32
+ else this.cachedViews = [];
33
+ },
34
+ async delAllCachedViews() {
35
+ this.cachedViews = [];
36
+ },
37
+ },
38
+ });
@@ -0,0 +1,16 @@
1
+ import { defineStore } from 'pinia';
2
+
3
+ /**
4
+ * 后端返回原始路由(未处理时)
5
+ * @methods setCacheKeepAlive 设置接口原始路由数据
6
+ */
7
+ export const useRequestOldRoutes = defineStore('requestOldRoutes', {
8
+ state: (): RequestOldRoutesState => ({
9
+ requestOldRoutes: [],
10
+ }),
11
+ actions: {
12
+ async setRequestOldRoutes(routes: Array<string>) {
13
+ this.requestOldRoutes = routes;
14
+ },
15
+ },
16
+ });
@@ -0,0 +1,26 @@
1
+ import { defineStore } from 'pinia';
2
+
3
+ /**
4
+ * 路由列表
5
+ * @methods setRoutesList 设置路由数据
6
+ * @methods setColumnsMenuHover 设置分栏布局菜单鼠标移入 boolean
7
+ * @methods setColumnsNavHover 设置分栏布局最左侧导航鼠标移入 boolean
8
+ */
9
+ export const useRoutesList = defineStore('routesList', {
10
+ state: (): RoutesListState => ({
11
+ routesList: [],
12
+ isColumnsMenuHover: false,
13
+ isColumnsNavHover: false,
14
+ }),
15
+ actions: {
16
+ async setRoutesList(data: Array<string>) {
17
+ this.routesList = data;
18
+ },
19
+ async setColumnsMenuHover(bool: boolean) {
20
+ this.isColumnsMenuHover = bool;
21
+ },
22
+ async setColumnsNavHover(bool: boolean) {
23
+ this.isColumnsNavHover = bool;
24
+ },
25
+ },
26
+ });
@@ -0,0 +1,23 @@
1
+ import { defineStore } from 'pinia';
2
+ import { Session } from '/@/utils/storage';
3
+
4
+ /**
5
+ * TagsView 路由列表
6
+ * @methods setTagsViewRoutes 设置 TagsView 路由列表
7
+ * @methods setCurrenFullscreen 设置开启/关闭全屏时的 boolean 状态
8
+ */
9
+ export const useTagsViewRoutes = defineStore('tagsViewRoutes', {
10
+ state: (): TagsViewRoutesState => ({
11
+ tagsViewRoutes: [],
12
+ isTagsViewCurrenFull: false,
13
+ }),
14
+ actions: {
15
+ async setTagsViewRoutes(data: Array<string>) {
16
+ this.tagsViewRoutes = data;
17
+ },
18
+ setCurrenFullscreen(bool: boolean) {
19
+ Session.set('isTagsViewCurrenFull', bool);
20
+ this.isTagsViewCurrenFull = bool;
21
+ },
22
+ },
23
+ });
@@ -0,0 +1,142 @@
1
+ import { defineStore } from 'pinia';
2
+
3
+ /**
4
+ * 布局配置
5
+ * 修改配置时:
6
+ * 1、理需要每次都清 `window.localStorage` 浏览器永久缓存
7
+ * 2、或者点击布局配置最底部 `一键恢复默认` 按钮即可看到效果
8
+ */
9
+ export const useThemeConfig = defineStore('themeConfig', {
10
+ state: (): ThemeConfigState => ({
11
+ themeConfig: {
12
+ // 是否开启布局配置抽屉
13
+ isDrawer: false,
14
+
15
+ /**
16
+ * 全局主题
17
+ */
18
+ // 默认 primary 主题颜色
19
+ primary: '#409eff',
20
+ // 是否开启深色模式
21
+ isIsDark: false,
22
+ /**
23
+ * 顶栏设置
24
+ */
25
+ // 默认顶栏导航背景颜色
26
+ topBar: '#ffffff',
27
+ // 默认顶栏导航字体颜色
28
+ topBarColor: '#606266',
29
+ // 是否开启顶栏背景颜色渐变
30
+ isTopBarColorGradual: false,
31
+ /**
32
+ * 菜单设置
33
+ */
34
+ // 默认菜单导航背景颜色
35
+ menuBar: '#545c64',
36
+ // 默认菜单导航字体颜色
37
+ menuBarColor: '#eaeaea',
38
+ // 默认菜单高亮背景色
39
+ menuBarActiveColor: 'rgba(0, 0, 0, 0.2)',
40
+ // 是否开启菜单背景颜色渐变
41
+ isMenuBarColorGradual: false,
42
+ /**
43
+ * 分栏设置
44
+ */
45
+ // 默认分栏菜单背景颜色
46
+ columnsMenuBar: '#545c64',
47
+ // 默认分栏菜单字体颜色
48
+ columnsMenuBarColor: '#e6e6e6',
49
+ // 是否开启分栏菜单背景颜色渐变
50
+ isColumnsMenuBarColorGradual: false,
51
+ // 是否开启分栏菜单鼠标悬停预加载(预览菜单)
52
+ isColumnsMenuHoverPreload: false,
53
+ /**
54
+ * 界面设置
55
+ */
56
+ // 是否开启菜单水平折叠效果
57
+ isCollapse: false,
58
+ // 是否开启菜单手风琴效果
59
+ isUniqueOpened: true,
60
+ // 是否开启固定 Header
61
+ isFixedHeader: true,
62
+ // 初始化变量,用于更新菜单 el-scrollbar 的高度,请勿删除
63
+ isFixedHeaderChange: false,
64
+ // 是否开启经典布局分割菜单(仅经典布局生效)
65
+ isClassicSplitMenu: false,
66
+ // 是否开启自动锁屏
67
+ isLockScreen: false,
68
+ // 开启自动锁屏倒计时(s/秒)
69
+ lockScreenTime: 30,
70
+ /**
71
+ * 界面显示
72
+ */
73
+ // 是否开启侧边栏 Logo
74
+ isShowLogo: true,
75
+ // 初始化变量,用于 el-scrollbar 的高度更新,请勿删除
76
+ isShowLogoChange: false,
77
+ // 是否开启 Breadcrumb,强制经典、横向布局不显示
78
+ isBreadcrumb: true,
79
+ // 是否开启 Tagsview
80
+ isTagsview: true,
81
+ // 是否开启 Breadcrumb 图标
82
+ isBreadcrumbIcon: false,
83
+ // 是否开启 Tagsview 图标
84
+ isTagsviewIcon: false,
85
+ // 是否开启 TagsView 缓存
86
+ isCacheTagsView: false,
87
+ // 是否开启 TagsView 拖拽
88
+ isSortableTagsView: true,
89
+ // 是否开启 TagsView 共用
90
+ isShareTagsView: false,
91
+ // 是否开启 Footer 底部版权信息
92
+ isFooter: false,
93
+ // 是否开启水印
94
+ isWartermark: false,
95
+ // 水印文案
96
+ wartermarkText: '',
97
+ /**
98
+ * 其它设置
99
+ */
100
+ // Tagsview 风格:可选值"<tags-style-one|tags-style-four|tags-style-five>",默认 tags-style-five
101
+ // 定义的值与 `/src/layout/navBars/tagsView/tagsView.vue` 中的 class 同名
102
+ tagsStyle: 'tags-style-five',
103
+ // 主页面切换动画:可选值"<slide-right|slide-left|opacitys>",默认 slide-right
104
+ animation: 'slide-right',
105
+ // 分栏高亮风格:可选值"<columns-round|columns-card>",默认 columns-round
106
+ columnsAsideStyle: 'columns-round',
107
+ // 分栏布局风格:可选值"<columns-horizontal|columns-vertical>",默认 columns-horizontal
108
+ columnsAsideLayout: 'columns-vertical',
109
+
110
+ /**
111
+ * 布局切换
112
+ * 注意:为了演示,切换布局时,颜色会被还原成默认,代码位置:@/layout/navBars/topBar/setings.vue
113
+ * 中的 `initSetLayoutChange(设置布局切换,重置主题样式)` 方法
114
+ */
115
+ // 布局切换:可选值"<defaults|classic|transverse|columns>",默认 defaults
116
+ layout: 'defaults',
117
+ /**
118
+ * 后端控制路由
119
+ */
120
+ // 是否开启后端控制路由
121
+ isRequestRoutes: true,
122
+ /**
123
+ * 全局网站标题 / 副标题
124
+ */
125
+ // 网站主标题(菜单导航、浏览器当前网页标题)
126
+ globalTitle: '华速前端框架',
127
+ // 网站副标题(登录页顶部文字)
128
+ globalViceTitle: 'vue3 + typescript5 + vite5 的框架',
129
+ // 网站副标题(登录页顶部文字)
130
+ globalViceTitleMsg: 'hs-admin',
131
+ // 默认初始语言,可选值"<zh-cn|en|zh-tw>",默认 zh-cn
132
+ globalI18n: 'zh-cn',
133
+ // 默认全局组件大小,可选值"<large|'default'|small>",默认 'large'
134
+ globalComponentSize: 'large',
135
+ },
136
+ }),
137
+ actions: {
138
+ setThemeConfig(data: ThemeConfigState) {
139
+ this.themeConfig = data.themeConfig;
140
+ },
141
+ },
142
+ });