hs-admin-ui 1.0.0 → 1.0.2

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 (433) hide show
  1. package/dist/favicon.ico +0 -0
  2. package/dist/style.css +1 -0
  3. package/dist/style.css.gz +0 -0
  4. package/dist/umd/index.js +175 -0
  5. package/dist/umd/index.js.gz +0 -0
  6. package/package.json +5 -2
  7. package/.env +0 -11
  8. package/.env.development +0 -5
  9. package/.env.production +0 -5
  10. package/.eslintignore +0 -18
  11. package/.eslintrc.js +0 -104
  12. package/.prettierrc.js +0 -39
  13. package/.vite/deps_temp_3669a513/chunk-FVXAE7ZR.js +0 -11400
  14. package/.vite/deps_temp_3669a513/chunk-ZS7NZCD4.js +0 -36
  15. package/.vite/deps_temp_3669a513/default-passive-events.js +0 -25
  16. package/.vite/deps_temp_3669a513/element-plus.js +0 -65013
  17. package/.vite/deps_temp_3669a513/lodash.js +0 -5497
  18. package/.vite/deps_temp_3669a513/package.json +0 -3
  19. package/.vite/deps_temp_3669a513/vue.js +0 -324
  20. package/.vite/deps_temp_3669a513/vxe-table.js +0 -32336
  21. package/CHANGELOG.md +0 -1
  22. package/directoryList.md +0 -180
  23. package/postcss.config.js +0 -7
  24. package/src/App.vue +0 -88
  25. package/src/api/fieldConfigController/index.ts +0 -76
  26. package/src/api/fieldConfigController/type.ts +0 -44
  27. package/src/api/login/index.ts +0 -78
  28. package/src/api/loginController/index.ts +0 -74
  29. package/src/api/menu/index.ts +0 -34
  30. package/src/api/menu/index2.ts +0 -291
  31. package/src/api/menuController/index.ts +0 -189
  32. package/src/api/systemController/index.ts +0 -26
  33. package/src/api/systemController/type.ts +0 -16
  34. package/src/api/test/index.ts +0 -22
  35. package/src/api/user/index.ts +0 -30
  36. package/src/assets/404.png +0 -0
  37. package/src/assets/logo-main.svg +0 -12
  38. package/src/assets/logo-mini.svg +0 -12
  39. package/src/components/base/hsAffix/src/hsAffix.vue +0 -22
  40. package/src/components/base/hsAlert/src/hsAlert.vue +0 -15
  41. package/src/components/base/hsAutocomplete/src/hsAutocomplete.vue +0 -36
  42. package/src/components/base/hsButton/src/hsButton.vue +0 -26
  43. package/src/components/base/hsButton/src/hsButtonGroup.vue +0 -8
  44. package/src/components/base/hsButton/useButtonEvents.ts +0 -19
  45. package/src/components/base/hsCalendar/src/hsCalendar.vue +0 -36
  46. package/src/components/base/hsCarousel/src/hsCarousel.vue +0 -15
  47. package/src/components/base/hsCarousel/src/hsCarouselItem.vue +0 -15
  48. package/src/components/base/hsCascader/src/hsCascader.vue +0 -36
  49. package/src/components/base/hsCascader/src/hsCascaderPanel.vue +0 -29
  50. package/src/components/base/hsCheckbox/src/hsCheckbox.vue +0 -32
  51. package/src/components/base/hsCheckbox/src/hsCheckboxButton.vue +0 -18
  52. package/src/components/base/hsCheckbox/src/hsCheckboxGroup.vue +0 -32
  53. package/src/components/base/hsCol/src/hsCol.vue +0 -20
  54. package/src/components/base/hsCollapse/src/hsCollapse.vue +0 -36
  55. package/src/components/base/hsCollapse/src/hsCollapseItem.vue +0 -22
  56. package/src/components/base/hsColorPicker/src/hsColorPicker.vue +0 -32
  57. package/src/components/base/hsDatePicker/src/hsDatePicker.vue +0 -40
  58. package/src/components/base/hsDialog/src/hsDialog.vue +0 -36
  59. package/src/components/base/hsDrawer/src/hsDrawer.vue +0 -29
  60. package/src/components/base/hsDropdown/src/hsDropdown.vue +0 -15
  61. package/src/components/base/hsDropdown/src/hsDropdownItem.vue +0 -15
  62. package/src/components/base/hsDropdown/src/hsDropdownMenu.vue +0 -15
  63. package/src/components/base/hsForm/src/hsForm.vue +0 -23
  64. package/src/components/base/hsForm/src/hsFormItem.vue +0 -22
  65. package/src/components/base/hsGetApi/src/hsGetApis.vue +0 -231
  66. package/src/components/base/hsGetApi/useGetApis.ts +0 -158
  67. package/src/components/base/hsInput/src/hsInput.vue +0 -40
  68. package/src/components/base/hsInput/useInputEvents.ts +0 -52
  69. package/src/components/base/hsInputNumber/src/hsInputNumber.vue +0 -31
  70. package/src/components/base/hsPopconfirm/src/hsPopconfirm.vue +0 -15
  71. package/src/components/base/hsPopover/src/hsPopover.vue +0 -22
  72. package/src/components/base/hsProgress/src/hsProgress.vue +0 -15
  73. package/src/components/base/hsRadio/src/hsRadio.vue +0 -32
  74. package/src/components/base/hsRadio/src/hsRadioButton.vue +0 -18
  75. package/src/components/base/hsRadio/src/hsRadioGroup.vue +0 -32
  76. package/src/components/base/hsRate/src/hsRate.vue +0 -33
  77. package/src/components/base/hsResult/src/hsResult.vue +0 -15
  78. package/src/components/base/hsRow/src/hsRow.vue +0 -20
  79. package/src/components/base/hsScrollbar/src/hsScrollbar.vue +0 -22
  80. package/src/components/base/hsSelect/src/hsOption.vue +0 -8
  81. package/src/components/base/hsSelect/src/hsOptionGroup.vue +0 -8
  82. package/src/components/base/hsSelect/src/hsSelect.vue +0 -42
  83. package/src/components/base/hsSelect/useSelectEvents.ts +0 -60
  84. package/src/components/base/hsSlider/src/hsSlider.vue +0 -25
  85. package/src/components/base/hsSteps/src/hsStep.vue +0 -15
  86. package/src/components/base/hsSteps/src/hsSteps.vue +0 -15
  87. package/src/components/base/hsSwitch/src/hsSwitch.vue +0 -35
  88. package/src/components/base/hsTable/hsBCTable.vue +0 -116
  89. package/src/components/base/hsTable/hsTable copy.vue +0 -226
  90. package/src/components/base/hsTable/hsTable.vue +0 -213
  91. package/src/components/base/hsTable/useHsTableConfig.ts +0 -95
  92. package/src/components/base/hsTable/useTableEvents.ts +0 -118
  93. package/src/components/base/hsTabs/src/hsTabPane.vue +0 -15
  94. package/src/components/base/hsTabs/src/hsTabs.vue +0 -29
  95. package/src/components/base/hsTag/src/hsCheckTag.vue +0 -16
  96. package/src/components/base/hsTag/src/hsTag.vue +0 -15
  97. package/src/components/base/hsTest/HsTest.vue +0 -320
  98. package/src/components/base/hsTooltip/src/hsTooltip.vue +0 -22
  99. package/src/components/base/hsTour/src/hsTour.vue +0 -31
  100. package/src/components/base/hsTour/src/hsTourStep.vue +0 -15
  101. package/src/components/base/hsTransfer/src/hsTransfer.vue +0 -36
  102. package/src/components/base/hsTree/src/hsTree.vue +0 -24
  103. package/src/components/base/hsTreeSelect/src/hsTreeSelect.vue +0 -39
  104. package/src/components/base/hsUpload/src/hsUpload.vue +0 -32
  105. package/src/components/base/hsWatermark/src/hsWatermark.vue +0 -15
  106. package/src/components/business/bcAutoComplete/bcAutoComplete.vue +0 -38
  107. package/src/components/business/bcAutoComplete/defaultData.ts +0 -25
  108. package/src/components/business/bcAutoComplete/useAutoComplete.ts +0 -65
  109. package/src/components/business/bcBtn/bcBtn.vue +0 -40
  110. package/src/components/business/bcForm/bcForm.vue +0 -113
  111. package/src/components/business/bcForm/bcFormDrag.vue +0 -104
  112. package/src/components/business/bcForm/bcFormSearch.vue +0 -154
  113. package/src/components/business/bcForm/components/sortForm/index.ts +0 -18
  114. package/src/components/business/bcForm/components/sortForm/sortForm.vue +0 -92
  115. package/src/components/business/bcFormConfig/bcFormConfig.vue +0 -196
  116. package/src/components/business/bcFormTable/bcFormTable.vue +0 -91
  117. package/src/components/business/bcFormTable/components/bcTabs/bcTabs.vue +0 -53
  118. package/src/components/business/bcFormTable/components/contextBody/contextBody.vue +0 -67
  119. package/src/components/business/bcFormTable/components/contextBody/useContextMenu.ts +0 -53
  120. package/src/components/business/bcFormTable/components/formSearchBtn/formSearchBtn.vue +0 -21
  121. package/src/components/business/bcFormTable/methods/cellDetailMethod.ts +0 -5
  122. package/src/components/business/bcFormTable/methods/filterAgeMethod.ts +0 -5
  123. package/src/components/business/bcFormTable/methods/footerMethod.ts +0 -25
  124. package/src/components/business/bcFormTable/methods/index.ts +0 -10
  125. package/src/components/business/bcFormTable/utils/onFormKey.ts +0 -121
  126. package/src/components/business/bcFormTable/utils/onTableKey.ts +0 -119
  127. package/src/components/business/bcFormTable/utils/parseTable.ts +0 -201
  128. package/src/components/business/bcFormTable/utils/useButon.ts +0 -20
  129. package/src/components/business/bcFormTable/utils/useTableHeight.ts +0 -44
  130. package/src/components/business/bcPageConfig/bcPageConfig.vue +0 -79
  131. package/src/components/business/bcPageConfig/components/hsBtn/src/hsAttrBtn.vue +0 -39
  132. package/src/components/business/bcPageConfig/components/hsBtn/src/hsBtnConfigList.vue +0 -45
  133. package/src/components/business/bcPageConfig/components/hsBtn/src/hsBtnItemConfig.vue +0 -32
  134. package/src/components/business/bcPageConfig/components/hsBtn/src/hsBtnPanel.vue +0 -45
  135. package/src/components/business/bcPageConfig/components/hsBtn/useAttrBtn.ts +0 -58
  136. package/src/components/business/bcPageConfig/components/hsBtn/useBtnConfigList.ts +0 -71
  137. package/src/components/business/bcPageConfig/components/hsBtn/useBtnItemConfig.ts +0 -35
  138. package/src/components/business/bcPageConfig/components/hsExpand/src/hsExpand.vue +0 -33
  139. package/src/components/business/bcPageConfig/components/hsExpand/useExpand.ts +0 -9
  140. package/src/components/business/bcPageConfig/components/hsForm/src/hsAttrForm.vue +0 -54
  141. package/src/components/business/bcPageConfig/components/hsForm/src/hsFormConfig.vue +0 -180
  142. package/src/components/business/bcPageConfig/components/hsForm/src/hsFormConfigList.vue +0 -45
  143. package/src/components/business/bcPageConfig/components/hsForm/src/hsFormPanel.vue +0 -64
  144. package/src/components/business/bcPageConfig/components/hsForm/src/hsFormParse.vue +0 -24
  145. package/src/components/business/bcPageConfig/components/hsForm/useAttrForm.ts +0 -108
  146. package/src/components/business/bcPageConfig/components/hsForm/useFormListConfig.ts +0 -69
  147. package/src/components/business/bcPageConfig/components/hsForm/useFormParse.ts +0 -120
  148. package/src/components/business/bcPageConfig/components/hsSaveForm/saveFormConfig.ts +0 -66
  149. package/src/components/business/bcPageConfig/components/hsSaveForm/src/saveForm.vue +0 -48
  150. package/src/components/business/bcPageConfig/components/hsSaveForm/useSaveForm.ts +0 -148
  151. package/src/components/business/bcPageConfig/components/hsTables/src/hsAttrTable.vue +0 -122
  152. package/src/components/business/bcPageConfig/components/hsTables/src/hsRecursionConfig.vue +0 -36
  153. package/src/components/business/bcPageConfig/components/hsTables/src/hsTableConfig.vue +0 -51
  154. package/src/components/business/bcPageConfig/components/hsTables/src/hsTableConfigList.vue +0 -46
  155. package/src/components/business/bcPageConfig/components/hsTables/src/hsTablePanel.vue +0 -68
  156. package/src/components/business/bcPageConfig/components/hsTables/src/hsTableParse.vue +0 -24
  157. package/src/components/business/bcPageConfig/components/hsTables/useAttrTable.ts +0 -218
  158. package/src/components/business/bcPageConfig/components/hsTables/useTableConfigList.ts +0 -77
  159. package/src/components/business/bcPageConfig/components/hsTables/useTableParse.ts +0 -78
  160. package/src/components/business/bcPageConfig/default/apis.json +0 -24712
  161. package/src/components/business/bcPageConfig/default/baseBtnConfig.ts +0 -256
  162. package/src/components/business/bcPageConfig/default/baseFormConfig.ts +0 -380
  163. package/src/components/business/bcPageConfig/default/baseTableConfig.ts +0 -2399
  164. package/src/components/business/bcPageConfig/usePageConfig.ts +0 -469
  165. package/src/components/business/bcSelect/bcSelect.vue +0 -50
  166. package/src/components/business/bcSwitchSystems/bcSwitchSystems.vue +0 -36
  167. package/src/components/business/bcSwitchSystems/useSwitchSystems.ts +0 -74
  168. package/src/components/business/bcTable/bcTable.vue +0 -63
  169. package/src/components/business/bcTable/components/sortColumn/index.ts +0 -19
  170. package/src/components/business/bcTable/components/sortColumn/sortColumn.vue +0 -107
  171. package/src/components/business/bcTable/useTable.ts +0 -51
  172. package/src/components/business/bcTable/useTableHeight.ts +0 -24
  173. package/src/components/business/bcTreeSelect/bcTreeSelect.vue +0 -12
  174. package/src/components/business/cardID/cardID.vue +0 -24
  175. package/src/components/business/cardID/type.ts +0 -0
  176. package/src/components/business/cardID/useCardID.ts +0 -0
  177. package/src/components/component.ts +0 -188
  178. package/src/components/config/autocompleteAttrConfig/autocompleteAttrConfig.vue +0 -26
  179. package/src/components/config/autocompleteAttrConfig/config.ts +0 -170
  180. package/src/components/config/baseForm.vue +0 -175
  181. package/src/components/config/buttonAttrConfig/buttonAttrConfig.vue +0 -26
  182. package/src/components/config/buttonAttrConfig/config.ts +0 -261
  183. package/src/components/config/cascaderAttrConfig/cascaderAttrConfig.vue +0 -26
  184. package/src/components/config/cascaderAttrConfig/config.ts +0 -287
  185. package/src/components/config/cascaderPanelAttrConfig/cascaderPanelAttrConfig.vue +0 -26
  186. package/src/components/config/cascaderPanelAttrConfig/config.ts +0 -278
  187. package/src/components/config/checkboxAttrConfig/checkboxAttrConfig.vue +0 -26
  188. package/src/components/config/checkboxAttrConfig/config.ts +0 -301
  189. package/src/components/config/datePickerAttrConfig/config.ts +0 -256
  190. package/src/components/config/datePickerAttrConfig/datePickerAttrConfig.vue +0 -26
  191. package/src/components/config/inputAttrConfig/config.ts +0 -322
  192. package/src/components/config/inputAttrConfig/inputAttrConfig.vue +0 -33
  193. package/src/components/config/inputAttrConfig/inputEventConfig.vue +0 -35
  194. package/src/components/config/inputNumberAttrConfig/config.ts +0 -177
  195. package/src/components/config/inputNumberAttrConfig/inputNumberAttrConfig.vue +0 -26
  196. package/src/components/config/radioAttrConfig/config.ts +0 -212
  197. package/src/components/config/radioAttrConfig/radioAttrConfig.vue +0 -26
  198. package/src/components/config/selectAttrConfig/config.ts +0 -478
  199. package/src/components/config/selectAttrConfig/selectAttrConfig.vue +0 -26
  200. package/src/components/config/switchAttrConfig/config.ts +0 -195
  201. package/src/components/config/switchAttrConfig/switchAttrConfig.vue +0 -26
  202. package/src/components/config/treeSelectAttrConfig/config.ts +0 -625
  203. package/src/components/config/treeSelectAttrConfig/treeSelectAttrConfig.vue +0 -26
  204. package/src/components/config/type/formType.ts +0 -25
  205. package/src/components/config/uploadAttrConfig/config.ts +0 -250
  206. package/src/components/config/uploadAttrConfig/uploadAttrConfig.vue +0 -26
  207. package/src/components/iconSelector/index.vue +0 -247
  208. package/src/components/iconSelector/list.vue +0 -84
  209. package/src/components/svgIcon/index.vue +0 -61
  210. package/src/directive/authDirective.ts +0 -40
  211. package/src/directive/customDirective.ts +0 -178
  212. package/src/directive/index.ts +0 -18
  213. package/src/hooks/useCrypto.ts +0 -36
  214. package/src/hooks/useExpose.ts +0 -60
  215. package/src/layout/component/aside.vue +0 -160
  216. package/src/layout/component/columnsAside.vue +0 -299
  217. package/src/layout/component/header.vue +0 -18
  218. package/src/layout/component/main.vue +0 -65
  219. package/src/layout/footer/index.vue +0 -25
  220. package/src/layout/index.vue +0 -53
  221. package/src/layout/lockScreen/index.vue +0 -352
  222. package/src/layout/logo/index.vue +0 -75
  223. package/src/layout/main/classic.vue +0 -73
  224. package/src/layout/main/columns.vue +0 -73
  225. package/src/layout/main/defaults.vue +0 -73
  226. package/src/layout/main/transverse.vue +0 -60
  227. package/src/layout/navBars/index.vue +0 -35
  228. package/src/layout/navBars/tagsView/contextmenu.vue +0 -133
  229. package/src/layout/navBars/tagsView/tagsView.vue +0 -737
  230. package/src/layout/navBars/topBar/breadcrumb.vue +0 -146
  231. package/src/layout/navBars/topBar/closeFull.vue +0 -53
  232. package/src/layout/navBars/topBar/index.vue +0 -107
  233. package/src/layout/navBars/topBar/search.vue +0 -123
  234. package/src/layout/navBars/topBar/setings.vue +0 -789
  235. package/src/layout/navBars/topBar/user.vue +0 -222
  236. package/src/layout/navBars/topBar/userNews.vue +0 -107
  237. package/src/layout/navMenu/horizontal.vue +0 -138
  238. package/src/layout/navMenu/subItem.vue +0 -49
  239. package/src/layout/navMenu/vertical.vue +0 -100
  240. package/src/layout/routerView/iframes.vue +0 -101
  241. package/src/layout/routerView/link.vue +0 -93
  242. package/src/layout/routerView/parent.vue +0 -104
  243. package/src/layout/upgrade/index.vue +0 -147
  244. package/src/main.ts +0 -70
  245. package/src/router/backEnd.ts +0 -173
  246. package/src/router/frontEnd.ts +0 -155
  247. package/src/router/index.ts +0 -138
  248. package/src/router/route.ts +0 -94
  249. package/src/stores/index.ts +0 -8
  250. package/src/stores/keepAliveNames.ts +0 -38
  251. package/src/stores/requestOldRoutes.ts +0 -16
  252. package/src/stores/routesList.ts +0 -26
  253. package/src/stores/tagsViewRoutes.ts +0 -23
  254. package/src/stores/themeConfig.ts +0 -142
  255. package/src/stores/userInfo.ts +0 -65
  256. package/src/style/index.scss +0 -0
  257. package/src/style/tailwind.css +0 -29
  258. package/src/theme/app.scss +0 -333
  259. package/src/theme/common/transition.scss +0 -147
  260. package/src/theme/dark.scss +0 -255
  261. package/src/theme/element.scss +0 -321
  262. package/src/theme/iconSelector.scss +0 -31
  263. package/src/theme/index.scss +0 -8
  264. package/src/theme/loading.scss +0 -51
  265. package/src/theme/media/chart.scss +0 -94
  266. package/src/theme/media/cityLinkage.scss +0 -10
  267. package/src/theme/media/date.scss +0 -25
  268. package/src/theme/media/dialog.scss +0 -12
  269. package/src/theme/media/error.scss +0 -45
  270. package/src/theme/media/form.scss +0 -31
  271. package/src/theme/media/home.scss +0 -23
  272. package/src/theme/media/index.scss +0 -15
  273. package/src/theme/media/layout.scss +0 -63
  274. package/src/theme/media/login.scss +0 -74
  275. package/src/theme/media/media.scss +0 -13
  276. package/src/theme/media/pagination.scss +0 -15
  277. package/src/theme/media/personal.scss +0 -16
  278. package/src/theme/media/scrollbar.scss +0 -56
  279. package/src/theme/media/tagsView.scss +0 -11
  280. package/src/theme/mixins/index.scss +0 -56
  281. package/src/theme/other.scss +0 -36
  282. package/src/theme/tableTool.scss +0 -27
  283. package/src/theme/waves.scss +0 -101
  284. package/src/types/auth.d.ts +0 -44
  285. package/src/types/axios.d.ts +0 -13
  286. package/src/types/components.d.ts +0 -30
  287. package/src/types/customData.d.ts +0 -163
  288. package/src/types/form.ts +0 -68
  289. package/src/types/formItem/autocomplete.ts +0 -43
  290. package/src/types/formItem/button.ts +0 -39
  291. package/src/types/formItem/input.ts +0 -66
  292. package/src/types/formItem/inputNumber.ts +0 -42
  293. package/src/types/formItem/selelct.ts +0 -54
  294. package/src/types/formItem/treeSelect.ts +0 -37
  295. package/src/types/formTable.d.ts +0 -210
  296. package/src/types/global.d.ts +0 -118
  297. package/src/types/layout.d.ts +0 -59
  298. package/src/types/mitt.d.ts +0 -38
  299. package/src/types/pinia.d.ts +0 -92
  300. package/src/types/views.d.ts +0 -331
  301. package/src/utils/arrayOperation.ts +0 -65
  302. package/src/utils/authFunction.ts +0 -38
  303. package/src/utils/build.ts +0 -124
  304. package/src/utils/commonFunction.ts +0 -64
  305. package/src/utils/formatTime.ts +0 -137
  306. package/src/utils/getDataType.ts +0 -136
  307. package/src/utils/getStyleSheets.ts +0 -101
  308. package/src/utils/loading.ts +0 -44
  309. package/src/utils/mitt.ts +0 -8
  310. package/src/utils/other.ts +0 -214
  311. package/src/utils/request.ts +0 -82
  312. package/src/utils/setIconfont.ts +0 -48
  313. package/src/utils/showMessage.ts +0 -57
  314. package/src/utils/showMessageBox.ts +0 -39
  315. package/src/utils/showNotification.ts +0 -50
  316. package/src/utils/showPopup.ts +0 -81
  317. package/src/utils/storage.ts +0 -137
  318. package/src/utils/theme.ts +0 -65
  319. package/src/utils/toolsValidate.ts +0 -370
  320. package/src/utils/watermark.ts +0 -47
  321. package/src/views/error/401.vue +0 -88
  322. package/src/views/error/404.vue +0 -89
  323. package/src/views/home/index.vue +0 -62
  324. package/src/views/login/component/account.vue +0 -172
  325. package/src/views/login/component/mobile.vue +0 -72
  326. package/src/views/login/component/scan.vue +0 -63
  327. package/src/views/login/index.vue +0 -254
  328. package/src/views/system/auth/index.vue +0 -48
  329. package/src/views/system/auth/list.ts +0 -50
  330. package/src/views/system/auth/useAuth.ts +0 -34
  331. package/src/views/system/dept/dialog.vue +0 -167
  332. package/src/views/system/dept/index.vue +0 -135
  333. package/src/views/system/dic/dialog.vue +0 -150
  334. package/src/views/system/dic/index.vue +0 -132
  335. package/src/views/system/form/data.json +0 -360
  336. package/src/views/system/form/index.vue +0 -24
  337. package/src/views/system/formSetting/components/hsBtn/src/hsAttrBtn.vue +0 -58
  338. package/src/views/system/formSetting/components/hsBtn/src/hsBtnConfigList.vue +0 -45
  339. package/src/views/system/formSetting/components/hsBtn/src/hsBtnPanel.vue +0 -51
  340. package/src/views/system/formSetting/components/hsBtn/useAttrBtn.ts +0 -129
  341. package/src/views/system/formSetting/components/hsBtn/useBtnConfigList.ts +0 -73
  342. package/src/views/system/formSetting/components/hsExpand/src/hsExpand.vue +0 -27
  343. package/src/views/system/formSetting/components/hsExpand/useExpand.ts +0 -9
  344. package/src/views/system/formSetting/components/hsForm/src/hsAttrForm.vue +0 -124
  345. package/src/views/system/formSetting/components/hsForm/src/hsFormConfig.vue +0 -180
  346. package/src/views/system/formSetting/components/hsForm/src/hsFormConfigList.vue +0 -45
  347. package/src/views/system/formSetting/components/hsForm/src/hsFormPanel.vue +0 -152
  348. package/src/views/system/formSetting/components/hsForm/src/hsFormParse.vue +0 -33
  349. package/src/views/system/formSetting/components/hsForm/useAttrForm.ts +0 -109
  350. package/src/views/system/formSetting/components/hsForm/useFormListConfig.ts +0 -70
  351. package/src/views/system/formSetting/components/hsPageTree/configData.ts +0 -3700
  352. package/src/views/system/formSetting/components/hsPageTree/src/hsPageTree.vue +0 -30
  353. package/src/views/system/formSetting/components/hsPageTree/usePageTree.ts +0 -50
  354. package/src/views/system/formSetting/components/hsSaveForm/saveFormConfig.ts +0 -66
  355. package/src/views/system/formSetting/components/hsSaveForm/src/saveForm.vue +0 -47
  356. package/src/views/system/formSetting/components/hsSaveForm/useSaveForm.ts +0 -122
  357. package/src/views/system/formSetting/components/hsTables/src/hsAttrTable.vue +0 -91
  358. package/src/views/system/formSetting/components/hsTables/src/hsRecursionConfig.vue +0 -36
  359. package/src/views/system/formSetting/components/hsTables/src/hsTableConfig.vue +0 -39
  360. package/src/views/system/formSetting/components/hsTables/src/hsTableConfigList.vue +0 -45
  361. package/src/views/system/formSetting/components/hsTables/src/hsTablePanel.vue +0 -56
  362. package/src/views/system/formSetting/components/hsTables/src/hsTableParse.vue +0 -29
  363. package/src/views/system/formSetting/components/hsTables/useAttrTable.ts +0 -125
  364. package/src/views/system/formSetting/components/hsTables/useTableConfigList.ts +0 -77
  365. package/src/views/system/formSetting/components/selectConfig/config.ts +0 -476
  366. package/src/views/system/formSetting/components/selectConfig/selectConfig.vue +0 -30
  367. package/src/views/system/formSetting/data.json +0 -360
  368. package/src/views/system/formSetting/default/baseBtnConfig.ts +0 -216
  369. package/src/views/system/formSetting/default/baseFormConfig.ts +0 -567
  370. package/src/views/system/formSetting/default/baseTableConfig.ts +0 -2353
  371. package/src/views/system/formSetting/formConfig.vue +0 -108
  372. package/src/views/system/formSetting/index.vue +0 -35
  373. package/src/views/system/formSetting/menuType.d.ts +0 -12
  374. package/src/views/system/formSetting/panelConfig.json +0 -164
  375. package/src/views/system/formSetting/useForm.ts +0 -89
  376. package/src/views/system/formSetting/useFormConfig.ts +0 -192
  377. package/src/views/system/menu/dialog.vue +0 -285
  378. package/src/views/system/menu/index.vue +0 -180
  379. package/src/views/system/page/components/hsPageTree/configData.ts +0 -3700
  380. package/src/views/system/page/components/hsPageTree/src/hsPageTree.vue +0 -30
  381. package/src/views/system/page/components/hsPageTree/usePageTree.ts +0 -49
  382. package/src/views/system/page/index.vue +0 -32
  383. package/src/views/system/page/menuType.d.ts +0 -12
  384. package/src/views/system/page/usePage.ts +0 -125
  385. package/src/views/system/role/dialog.vue +0 -236
  386. package/src/views/system/role/index.vue +0 -146
  387. package/src/views/system/table/data.json +0 -747
  388. package/src/views/system/table/formate.js +0 -49
  389. package/src/views/system/table/index.vue +0 -53
  390. package/src/views/system/user/dialog.vue +0 -187
  391. package/src/views/system/user/index.vue +0 -161
  392. package/src/views/test/test/components/hsBtn/src/hsAttrBtn.vue +0 -58
  393. package/src/views/test/test/components/hsBtn/src/hsBtnConfigList.vue +0 -45
  394. package/src/views/test/test/components/hsBtn/src/hsBtnPanel.vue +0 -51
  395. package/src/views/test/test/components/hsBtn/useAttrBtn.ts +0 -129
  396. package/src/views/test/test/components/hsBtn/useBtnConfigList.ts +0 -73
  397. package/src/views/test/test/components/hsExpand/src/hsExpand.vue +0 -27
  398. package/src/views/test/test/components/hsExpand/useExpand.ts +0 -9
  399. package/src/views/test/test/components/hsForm/src/hsAttrForm.vue +0 -124
  400. package/src/views/test/test/components/hsForm/src/hsFormConfig.vue +0 -180
  401. package/src/views/test/test/components/hsForm/src/hsFormConfigList.vue +0 -45
  402. package/src/views/test/test/components/hsForm/src/hsFormPanel.vue +0 -152
  403. package/src/views/test/test/components/hsForm/src/hsFormParse.vue +0 -33
  404. package/src/views/test/test/components/hsForm/useAttrForm.ts +0 -109
  405. package/src/views/test/test/components/hsForm/useFormListConfig.ts +0 -70
  406. package/src/views/test/test/components/hsSaveForm/saveFormConfig.ts +0 -66
  407. package/src/views/test/test/components/hsSaveForm/src/saveForm.vue +0 -47
  408. package/src/views/test/test/components/hsSaveForm/useSaveForm.ts +0 -122
  409. package/src/views/test/test/components/hsTables/src/hsAttrTable.vue +0 -91
  410. package/src/views/test/test/components/hsTables/src/hsRecursionConfig.vue +0 -36
  411. package/src/views/test/test/components/hsTables/src/hsTableConfig.vue +0 -39
  412. package/src/views/test/test/components/hsTables/src/hsTableConfigList.vue +0 -45
  413. package/src/views/test/test/components/hsTables/src/hsTablePanel.vue +0 -56
  414. package/src/views/test/test/components/hsTables/src/hsTableParse.vue +0 -29
  415. package/src/views/test/test/components/hsTables/useAttrTable.ts +0 -125
  416. package/src/views/test/test/components/hsTables/useTableConfigList.ts +0 -77
  417. package/src/views/test/test/components/selectConfig/config.ts +0 -476
  418. package/src/views/test/test/components/selectConfig/selectConfig.vue +0 -30
  419. package/src/views/test/test/data.json +0 -360
  420. package/src/views/test/test/default/baseBtnConfig.ts +0 -216
  421. package/src/views/test/test/default/baseFormConfig.ts +0 -567
  422. package/src/views/test/test/default/baseTableConfig.ts +0 -2353
  423. package/src/views/test/test/formConfig.vue +0 -102
  424. package/src/views/test/test/test.vue +0 -28
  425. package/src/views/test/test/test3.vue +0 -24
  426. package/src/views/test/test/test4.vue +0 -107
  427. package/src/views/test/test/test/345/211/257/346/234/254.vue +0 -2424
  428. package/src/views/test/test/useFormConfig.ts +0 -192
  429. package/src/views/test/test2/test2.vue +0 -17
  430. package/src/views/test/test3/test.vue +0 -20
  431. package/tailwind.config.js +0 -12
  432. package/tsconfig.json +0 -75
  433. package/vite.config.ts +0 -123
@@ -1,737 +0,0 @@
1
- <template>
2
- <div class="layout-navbars-tagsview" :class="{ 'layout-navbars-tagsview-shadow': getThemeConfig.layout === 'classic' }">
3
- <el-scrollbar ref="scrollbarRef" @wheel.prevent="onHandleScroll">
4
- <ul class="layout-navbars-tagsview-ul" :class="setTagsStyle" ref="tagsUlRef">
5
- <li
6
- v-for="(v, k) in state.tagsViewList"
7
- :key="k"
8
- class="layout-navbars-tagsview-ul-li"
9
- :data-url="v.url"
10
- :class="{ 'is-active': isActive(v) }"
11
- @contextmenu.prevent="onContextmenu(v, $event)"
12
- @mousedown="onMousedownMenu(v, $event)"
13
- @click="onTagsClick(v, k)"
14
- :ref="
15
- (el) => {
16
- if (el) tagsRefs[k] = el;
17
- }
18
- "
19
- >
20
- <i class="iconfont icon-webicon318 layout-navbars-tagsview-ul-li-iconfont" v-if="isActive(v)"></i>
21
- <SvgIcon :name="v.meta.icon" v-if="!isActive(v) && getThemeConfig.isTagsviewIcon" class="pr5" />
22
- <span>{{ setTagsViewNameI18n(v) }}</span>
23
- <template v-if="isActive(v)">
24
- <SvgIcon
25
- name="ele-RefreshRight"
26
- class="ml5 layout-navbars-tagsview-ul-li-refresh"
27
- @click.stop="refreshCurrentTagsView($route.fullPath)"
28
- />
29
- <SvgIcon
30
- name="ele-Close"
31
- class="layout-navbars-tagsview-ul-li-icon layout-icon-active"
32
- v-if="!v.meta.isAffix"
33
- @click.stop="closeCurrentTagsView(getThemeConfig.isShareTagsView ? v.path : v.url)"
34
- />
35
- </template>
36
- <SvgIcon
37
- name="ele-Close"
38
- class="layout-navbars-tagsview-ul-li-icon layout-icon-three"
39
- v-if="!v.meta.isAffix"
40
- @click.stop="closeCurrentTagsView(getThemeConfig.isShareTagsView ? v.path : v.url)"
41
- />
42
- </li>
43
- </ul>
44
- </el-scrollbar>
45
- <Contextmenu :dropdown="state.dropdown" ref="contextmenuRef" @currentContextmenuClick="onCurrentContextmenuClick" />
46
- </div>
47
- </template>
48
-
49
- <script setup lang="ts" name="layoutTagsView">
50
- import { defineAsyncComponent, reactive, onMounted, computed, ref, nextTick, onBeforeUpdate, onBeforeMount, onUnmounted, watch } from 'vue';
51
- import { useRoute, useRouter, onBeforeRouteUpdate } from 'vue-router';
52
- import Sortable from 'sortablejs';
53
- import { ElMessage } from 'element-plus';
54
- import { storeToRefs } from 'pinia';
55
- import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes';
56
- import { useThemeConfig } from '/@/stores/themeConfig';
57
- import { useKeepALiveNames } from '/@/stores/keepAliveNames';
58
- import { useRoutesList } from '/@/stores/routesList';
59
- import { Session } from '/@/utils/storage';
60
- import { isObjectValueEqual } from '/@/utils/arrayOperation';
61
- import other from '/@/utils/other';
62
- import mittBus from '/@/utils/mitt';
63
-
64
- // 引入组件
65
- const Contextmenu = defineAsyncComponent(() => import('/@/layout/navBars/tagsView/contextmenu.vue'));
66
-
67
- // 定义变量内容
68
- const tagsRefs = ref<RefType>([]);
69
- const scrollbarRef = ref();
70
- const contextmenuRef = ref();
71
- const tagsUlRef = ref();
72
- const stores = useTagsViewRoutes();
73
- const storesThemeConfig = useThemeConfig();
74
- const storesTagsViewRoutes = useTagsViewRoutes();
75
- const storesRoutesList = useRoutesList();
76
- const { themeConfig } = storeToRefs(storesThemeConfig);
77
- const { tagsViewRoutes } = storeToRefs(storesTagsViewRoutes);
78
- const { routesList } = storeToRefs(storesRoutesList);
79
- const storesKeepALiveNames = useKeepALiveNames();
80
- const route = useRoute();
81
- const router = useRouter();
82
- const state = reactive<TagsViewState>({
83
- routeActive: '',
84
- routePath: route.path,
85
- dropdown: { x: '', y: '' },
86
- sortable: '',
87
- tagsRefsIndex: 0,
88
- tagsViewList: [],
89
- tagsViewRoutesList: [],
90
- });
91
-
92
- // 动态设置 tagsView 风格样式
93
- const setTagsStyle = computed(() => {
94
- return themeConfig.value.tagsStyle;
95
- });
96
- // 获取布局配置信息
97
- const getThemeConfig = computed(() => {
98
- return themeConfig.value;
99
- });
100
- // 设置 自定义 tagsView 名称、 自定义 tagsView 名称国际化
101
- const setTagsViewNameI18n = computed(() => {
102
- return (v: RouteItem) => {
103
- return other.setTagsViewNameI18n(v);
104
- };
105
- });
106
- // 设置 tagsView 高亮
107
- const isActive = (v: RouteItem) => {
108
- if (getThemeConfig.value.isShareTagsView) {
109
- return v.path === state.routePath;
110
- } else {
111
- if ((v.query && Object.keys(v.query).length) || (v.params && Object.keys(v.params).length)) {
112
- // 普通传参
113
- return v.url ? v.url === state.routeActive : v.path === state.routeActive;
114
- } else {
115
- // 通过 name 传参,params 取值,刷新页面参数消失
116
- return v.path === state.routePath;
117
- }
118
- }
119
- };
120
- // 存储 tagsViewList 到浏览器临时缓存中,页面刷新时,保留记录
121
- const addBrowserSetSession = (tagsViewList: Array<object>) => {
122
- Session.set('tagsViewList', tagsViewList);
123
- };
124
-
125
- // 处理 tagsView 高亮(多标签详情时使用,单标签详情未使用)
126
- const setTagsViewHighlight = (v: RouteToFrom) => {
127
- let params = v.query && Object.keys(v.query).length > 0 ? v.query : v.params;
128
- if (!params || Object.keys(params).length <= 0) return v.path;
129
- let path = '';
130
- for (let i in params) {
131
- path += params[i];
132
- }
133
- // 判断是否是动态路由(xxx/:id/:name")
134
- return `${v.meta?.isDynamic ? v.meta.isDynamicPath : v.path}-${path}`;
135
- };
136
- // 处理可开启多标签详情,单标签详情(动态路由(xxx/:id/:name"),普通路由处理)
137
- const solveAddTagsView = async (path: string, to?: RouteToFrom) => {
138
- let isDynamicPath = to?.meta?.isDynamic ? to.meta.isDynamicPath : path;
139
- let current = state.tagsViewList.filter(
140
- (v: RouteItem) =>
141
- v.path === isDynamicPath &&
142
- isObjectValueEqual(
143
- to?.meta?.isDynamic ? (v.params ? v.params : null) : v.query ? v.query : null,
144
- to?.meta?.isDynamic ? (to?.params ? to?.params : null) : to?.query ? to?.query : null
145
- )
146
- );
147
- if (current.length <= 0) {
148
- // 防止:Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.
149
- let findItem = state.tagsViewRoutesList.find((v: RouteItem) => v.path === isDynamicPath);
150
- if (!findItem) return false;
151
- if (findItem.meta.isAffix) return false;
152
- if (findItem.meta.isLink && !findItem.meta.isIframe) return false;
153
- to?.meta?.isDynamic ? (findItem.params = to.params) : (findItem.query = to?.query);
154
- findItem.url = setTagsViewHighlight(findItem);
155
- state.tagsViewList.push({ ...findItem });
156
- await storesKeepALiveNames.addCachedView(findItem);
157
- addBrowserSetSession(state.tagsViewList);
158
- }
159
- };
160
-
161
- // 处理单标签时,第二次的值未覆盖第一次的 tagsViewList 值(Session Storage)
162
- const singleAddTagsView = (path: string, to?: RouteToFrom) => {
163
- let isDynamicPath = to?.meta?.isDynamic ? to.meta.isDynamicPath : path;
164
- state.tagsViewList.forEach((v) => {
165
- if (
166
- v.path === isDynamicPath &&
167
- !isObjectValueEqual(
168
- to?.meta?.isDynamic ? (v.params ? v.params : null) : v.query ? v.query : null,
169
- to?.meta?.isDynamic ? (to?.params ? to?.params : null) : to?.query ? to?.query : null
170
- )
171
- ) {
172
- to?.meta?.isDynamic ? (v.params = to.params) : (v.query = to?.query);
173
- v.url = setTagsViewHighlight(v);
174
- addBrowserSetSession(state.tagsViewList);
175
- }
176
- });
177
- };
178
- // 1、添加 tagsView:未设置隐藏(isHide)也添加到在 tagsView 中(可开启多标签详情,单标签详情)
179
- const addTagsView = (path: string, to?: RouteToFrom) => {
180
- // 防止拿取不到路由信息
181
- nextTick(async () => {
182
- let item: RouteItem;
183
- if (to?.meta?.isDynamic) {
184
- // 动态路由(xxx/:id/:name"):参数不同,开启多个 tagsview
185
- if (!getThemeConfig.value.isShareTagsView) await solveAddTagsView(path, to);
186
- else await singleAddTagsView(path, to);
187
- if (state.tagsViewList.some((v: RouteItem) => v.path === to?.meta?.isDynamicPath)) {
188
- // 防止首次进入界面时(登录进入) tagsViewList 不存浏览器中
189
- addBrowserSetSession(state.tagsViewList);
190
- return false;
191
- }
192
- item = state.tagsViewRoutesList.find((v: RouteItem) => v.path === to?.meta?.isDynamicPath);
193
- } else {
194
- // 普通路由:参数不同,开启多个 tagsview
195
- if (!getThemeConfig.value.isShareTagsView) await solveAddTagsView(path, to);
196
- else await singleAddTagsView(path, to);
197
- if (state.tagsViewList.some((v: RouteItem) => v.path === path)) {
198
- // 防止首次进入界面时(登录进入) tagsViewList 不存浏览器中
199
- addBrowserSetSession(state.tagsViewList);
200
- return false;
201
- }
202
- item = state.tagsViewRoutesList.find((v: RouteItem) => v.path === path);
203
- }
204
- if (!item) return false;
205
- if (item?.meta?.isLink && !item.meta.isIframe) return false;
206
- if (to?.meta?.isDynamic) item.params = to?.params ? to?.params : route.params;
207
- else item.query = to?.query ? to?.query : route.query;
208
- item.url = setTagsViewHighlight(item);
209
- await storesKeepALiveNames.addCachedView(item);
210
- await state.tagsViewList.push({ ...item });
211
- await addBrowserSetSession(state.tagsViewList);
212
- });
213
- };
214
- // tagsView 横向滚动
215
- const tagsViewmoveToCurrentTag = () => {
216
- nextTick(() => {
217
- if (tagsRefs.value.length <= 0) return false;
218
- // 当前 li 元素
219
- let liDom = tagsRefs.value[state.tagsRefsIndex];
220
- // 当前 li 元素下标
221
- let liIndex = state.tagsRefsIndex;
222
- // 当前 ul 下 li 元素总长度
223
- let liLength = tagsRefs.value.length;
224
- // 最前 li
225
- let liFirst = tagsRefs.value[0];
226
- // 最后 li
227
- let liLast = tagsRefs.value[tagsRefs.value.length - 1];
228
- // 当前滚动条的值
229
- let scrollRefs = scrollbarRef.value.$refs.wrapRef;
230
- // 当前滚动条滚动宽度
231
- let scrollS = scrollRefs.scrollWidth;
232
- // 当前滚动条偏移宽度
233
- let offsetW = scrollRefs.offsetWidth;
234
- // 当前滚动条偏移距离
235
- let scrollL = scrollRefs.scrollLeft;
236
- // 上一个 tags li dom
237
- let liPrevTag = tagsRefs.value[state.tagsRefsIndex - 1];
238
- // 下一个 tags li dom
239
- let liNextTag = tagsRefs.value[state.tagsRefsIndex + 1];
240
- // 上一个 tags li dom 的偏移距离
241
- let beforePrevL = 0;
242
- // 下一个 tags li dom 的偏移距离
243
- let afterNextL = 0;
244
- if (liDom === liFirst) {
245
- // 头部
246
- scrollRefs.scrollLeft = 0;
247
- } else if (liDom === liLast) {
248
- // 尾部
249
- scrollRefs.scrollLeft = scrollS - offsetW;
250
- } else {
251
- // 非头/尾部
252
- if (liIndex === 0) beforePrevL = liFirst.offsetLeft - 5;
253
- else beforePrevL = liPrevTag?.offsetLeft - 5;
254
- if (liIndex === liLength) afterNextL = liLast.offsetLeft + liLast.offsetWidth + 5;
255
- else afterNextL = liNextTag.offsetLeft + liNextTag.offsetWidth + 5;
256
- if (afterNextL > scrollL + offsetW) {
257
- scrollRefs.scrollLeft = afterNextL - offsetW;
258
- } else if (beforePrevL < scrollL) {
259
- scrollRefs.scrollLeft = beforePrevL;
260
- }
261
- }
262
- // 更新滚动条,防止不出现
263
- scrollbarRef.value.update();
264
- });
265
- };
266
- // 获取 tagsView 的下标:用于处理 tagsView 点击时的横向滚动
267
- const getTagsRefsIndex = (path: string | unknown) => {
268
- nextTick(async () => {
269
- // await 使用该写法,防止拿取不到 tagsViewList 列表数据不完整
270
- let tagsViewList = await state.tagsViewList;
271
- state.tagsRefsIndex = tagsViewList.findIndex((v: RouteItem) => {
272
- if (getThemeConfig.value.isShareTagsView) {
273
- return v.path === path;
274
- } else {
275
- return v.url === path;
276
- }
277
- });
278
- // 添加初始化横向滚动条移动到对应位置
279
- tagsViewmoveToCurrentTag();
280
- });
281
- };
282
- // pinia 中获取路由信息:如果是设置了固定的(isAffix),进行初始化显示
283
- const initTagsView = async () => {
284
- if (Session.get('tagsViewList') && getThemeConfig.value.isCacheTagsView) {
285
- state.tagsViewList = await Session.get('tagsViewList');
286
- } else {
287
- await state.tagsViewRoutesList.map((v: RouteItem) => {
288
- if (v.meta?.isAffix && !v.meta.isHide) {
289
- v.url = setTagsViewHighlight(v);
290
- state.tagsViewList.push({ ...v });
291
- storesKeepALiveNames.addCachedView(v);
292
- }
293
- });
294
- await addTagsView(route.path, <RouteToFrom>route);
295
- }
296
- // 初始化当前元素(li)的下标
297
- getTagsRefsIndex(getThemeConfig.value.isShareTagsView ? state.routePath : state.routeActive);
298
- };
299
-
300
- // 获取 pinia 中的 tagsViewRoutes 列表
301
- const getTagsViewRoutes = async () => {
302
- state.routeActive = await setTagsViewHighlight(route);
303
- state.routePath = (await route.meta.isDynamic) ? route.meta.isDynamicPath : route.path;
304
- state.tagsViewList = [];
305
- state.tagsViewRoutesList = tagsViewRoutes.value;
306
- initTagsView();
307
- };
308
- // 处理 url,地址栏链接有参数时,tagsview 右键菜单刷新功能失效问题
309
- const transUrlParams = (v: RouteItem) => {
310
- let params = v.query && Object.keys(v.query).length > 0 ? v.query : v.params;
311
- if (!params) return '';
312
- let path = '';
313
- for (let [key, value] of Object.entries(params)) {
314
- if (v.meta?.isDynamic) path += `/${value}`;
315
- else path += `&${key}=${value}`;
316
- }
317
- // 判断是否是动态路由(xxx/:id/:name")isDynamic
318
- if (v.meta?.isDynamic) {
319
- /**
320
- *
321
- * isFnClick 用于判断是通过方法调用,还是直接右键菜单点击(此处只针对动态路由)
322
- * 原因:
323
- * 1、右键菜单点击时,路由的 path 还是原始定义的路由格式,如:/params/dynamic/details/:t/:id/:tagsViewName
324
- * 2、通过事件调用时,路由的 path 不是原始定义的路由格式,如:/params/dynamic/details/111/我是动态路由测试tagsViewName(非国际化)
325
- *
326
- * 所以右侧菜单点击时,需要处理路径拼接 v.path.split(':')[0],得到路径 + 参数的完整路径
327
- */
328
- return v.isFnClick ? decodeURI(v.path) : `${v.path.split(':')[0]}${path.replace(/^\//, '')}`;
329
- } else {
330
- return `${v.path}${path.replace(/^&/, '?')}`;
331
- }
332
- };
333
- // 2、刷新当前 tagsView:
334
- const refreshCurrentTagsView = async (fullPath: string) => {
335
- const decodeURIPath = decodeURI(fullPath);
336
- let item: RouteToFrom = {};
337
- state.tagsViewList.forEach((v: RouteItem) => {
338
- v.transUrl = transUrlParams(v);
339
- if (v.transUrl) {
340
- if (v.transUrl === transUrlParams(v)) item = v;
341
- } else {
342
- if (v.path === decodeURIPath) item = v;
343
- }
344
- });
345
- if (!item) return false;
346
- await storesKeepALiveNames.delCachedView(item);
347
- mittBus.emit('onTagsViewRefreshRouterView', fullPath);
348
- if (item.meta?.isKeepAlive) storesKeepALiveNames.addCachedView(item);
349
- };
350
- // 3、关闭当前 tagsView:如果是设置了固定的(isAffix),不可以关闭
351
- const closeCurrentTagsView = (path: string) => {
352
- state.tagsViewList.map((v: RouteItem, k: number, arr: RouteItems) => {
353
- if (!v.meta?.isAffix) {
354
- if (getThemeConfig.value.isShareTagsView ? v.path === path : v.url === path) {
355
- storesKeepALiveNames.delCachedView(v);
356
- state.tagsViewList.splice(k, 1);
357
- setTimeout(() => {
358
- if (state.tagsViewList.length === k && getThemeConfig.value.isShareTagsView ? state.routePath === path : state.routeActive === path) {
359
- // 最后一个且高亮时
360
- if (arr[arr.length - 1].meta.isDynamic) {
361
- // 动态路由(xxx/:id/:name")
362
- if (k !== arr.length) router.push({ name: arr[k].name, params: arr[k].params });
363
- else router.push({ name: arr[arr.length - 1].name, params: arr[arr.length - 1].params });
364
- } else {
365
- // 普通路由
366
- if (k !== arr.length) router.push({ path: arr[k].path, query: arr[k].query });
367
- else router.push({ path: arr[arr.length - 1].path, query: arr[arr.length - 1].query });
368
- }
369
- } else {
370
- // 非最后一个且高亮时,跳转到下一个
371
- if (state.tagsViewList.length !== k && getThemeConfig.value.isShareTagsView ? state.routePath === path : state.routeActive === path) {
372
- if (arr[k].meta.isDynamic) {
373
- // 动态路由(xxx/:id/:name")
374
- router.push({ name: arr[k].name, params: arr[k].params });
375
- } else {
376
- // 普通路由
377
- router.push({ path: arr[k].path, query: arr[k].query });
378
- }
379
- }
380
- }
381
- }, 0);
382
- }
383
- }
384
- });
385
- addBrowserSetSession(state.tagsViewList);
386
- };
387
- // 4、关闭其它 tagsView:如果是设置了固定的(isAffix),不进行关闭
388
- const closeOtherTagsView = (path: string) => {
389
- if (Session.get('tagsViewList')) {
390
- state.tagsViewList = [];
391
- Session.get('tagsViewList').map((v: RouteItem) => {
392
- if (v.meta?.isAffix && !v.meta.isHide) {
393
- v.url = setTagsViewHighlight(v);
394
- storesKeepALiveNames.delOthersCachedViews(v);
395
- state.tagsViewList.push({ ...v });
396
- }
397
- });
398
- addTagsView(path, <RouteToFrom>route);
399
- addBrowserSetSession(state.tagsViewList);
400
- }
401
- };
402
- // 5、关闭全部 tagsView:如果是设置了固定的(isAffix),不进行关闭
403
- const closeAllTagsView = () => {
404
- if (Session.get('tagsViewList')) {
405
- storesKeepALiveNames.delAllCachedViews();
406
- state.tagsViewList = [];
407
- Session.get('tagsViewList').map((v: RouteItem) => {
408
- if (v.meta?.isAffix && !v.meta.isHide) {
409
- v.url = setTagsViewHighlight(v);
410
- state.tagsViewList.push({ ...v });
411
- router.push({ path: state.tagsViewList[state.tagsViewList.length - 1].path });
412
- }
413
- });
414
- addBrowserSetSession(state.tagsViewList);
415
- }
416
- };
417
- // 6、开启当前页面全屏
418
- const openCurrenFullscreen = async (path: string) => {
419
- const item = state.tagsViewList.find((v: RouteItem) => (getThemeConfig.value.isShareTagsView ? v.path === path : v.url === path));
420
- if (item.meta.isDynamic) await router.push({ name: item.name, params: item.params });
421
- else await router.push({ name: item.name, query: item.query });
422
- stores.setCurrenFullscreen(true);
423
- };
424
- // 当前项右键菜单点击,拿 `当前点击的路由路径` 对比 `tagsView 路由数组`,取当前点击项的详细路由信息
425
- // 防止 tagsView 非当前页演示时,操作异常
426
- const getCurrentRouteItem = (item: RouteItem): any => {
427
- let resItem: RouteToFrom = {};
428
- state.tagsViewList.forEach((v: RouteItem) => {
429
- v.transUrl = transUrlParams(v);
430
- if (v.transUrl) {
431
- // 动态路由、普通路由带参数
432
- if (v.transUrl === transUrlParams(v) && v.transUrl === item.commonUrl) resItem = v;
433
- } else {
434
- // 路由不带参数
435
- if (v.path === decodeURI(item.path)) resItem = v;
436
- }
437
- });
438
- if (!resItem) return null;
439
- else return resItem;
440
- };
441
- // 当前项右键菜单点击
442
- const onCurrentContextmenuClick = async (item: RouteItem) => {
443
- item.commonUrl = transUrlParams(item);
444
- if (!getCurrentRouteItem(item)) return ElMessage({ type: 'warning', message: '请正确输入路径及完整参数(query、params)' });
445
- const { path, name, params, query, meta, url } = getCurrentRouteItem(item);
446
- switch (item.contextMenuClickId) {
447
- case 0:
448
- // 刷新当前
449
- if (meta.isDynamic) await router.push({ name, params });
450
- else await router.push({ path, query });
451
- refreshCurrentTagsView(route.fullPath);
452
- break;
453
- case 1:
454
- // 关闭当前
455
- closeCurrentTagsView(getThemeConfig.value.isShareTagsView ? path : url);
456
- break;
457
- case 2:
458
- // 关闭其它
459
- if (meta.isDynamic) await router.push({ name, params });
460
- else await router.push({ path, query });
461
- closeOtherTagsView(path);
462
- break;
463
- case 3:
464
- // 关闭全部
465
- closeAllTagsView();
466
- break;
467
- case 4:
468
- // 开启当前页面全屏
469
- openCurrenFullscreen(getThemeConfig.value.isShareTagsView ? path : url);
470
- break;
471
- }
472
- };
473
- // 右键点击时:传 x,y 坐标值到子组件中(props)
474
- const onContextmenu = (v: RouteItem, e: MouseEvent) => {
475
- const { clientX, clientY } = e;
476
- state.dropdown.x = clientX;
477
- state.dropdown.y = clientY;
478
- contextmenuRef.value.openContextmenu(v);
479
- };
480
- // 鼠标按下时,判断是鼠标中键就关闭当前 tasgview
481
- const onMousedownMenu = (v: RouteItem, e: MouseEvent) => {
482
- if (!v.meta?.isAffix && e.button === 1) {
483
- const item = Object.assign({}, { contextMenuClickId: 1, ...v });
484
- onCurrentContextmenuClick(item);
485
- }
486
- };
487
- // 当前的 tagsView 项点击时
488
- const onTagsClick = (v: RouteItem, k: number) => {
489
- state.tagsRefsIndex = k;
490
- router.push(v);
491
- // 分栏布局时,收起/展开菜单
492
- if (getThemeConfig.value.layout === 'columns') {
493
- const item: RouteItem = routesList.value.find((r: RouteItem) => r.path.indexOf(`/${v.path.split('/')[1]}`) > -1);
494
- !item.children ? (getThemeConfig.value.isCollapse = true) : (getThemeConfig.value.isCollapse = false);
495
- }
496
- };
497
-
498
- // 鼠标滚轮滚动
499
- const onHandleScroll = (e: WheelEventType) => {
500
- scrollbarRef.value.$refs.wrapRef.scrollLeft += e.wheelDelta / 4;
501
- };
502
-
503
- // 设置 tagsView 可以进行拖拽
504
- const initSortable = async () => {
505
- const el = <HTMLElement>document.querySelector('.layout-navbars-tagsview-ul');
506
- if (!el) return false;
507
- state.sortable.el && state.sortable.destroy();
508
- state.sortable = Sortable.create(el, {
509
- animation: 300,
510
- dataIdAttr: 'data-url',
511
- disabled: getThemeConfig.value.isSortableTagsView ? false : true,
512
- onEnd: () => {
513
- const sortEndList: RouteItem[] = [];
514
- state.sortable.toArray().map((val: string) => {
515
- state.tagsViewList.map((v: RouteItem) => {
516
- if (v.url === val) sortEndList.push({ ...v });
517
- });
518
- });
519
- addBrowserSetSession(sortEndList);
520
- },
521
- });
522
- };
523
- const onSortableResize = async () => {
524
- await initSortable();
525
- if (other.isMobile()) state.sortable.el && state.sortable.destroy();
526
- };
527
- // 页面加载前
528
- onBeforeMount(() => {
529
- // 初始化,防止手机端直接访问时还可以拖拽
530
- onSortableResize();
531
- window.addEventListener('resize', onSortableResize);
532
- // 监听非本页面调用 0 刷新当前,1 关闭当前,2 关闭其它,3 关闭全部 4 当前页全屏
533
- mittBus.on('onCurrentContextmenuClick', (data: RouteItem) => {
534
- // 通过方法点击关闭 tagsView
535
- data.isFnClick = true;
536
- onCurrentContextmenuClick(data);
537
- });
538
- // 监听布局配置界面开启/关闭拖拽
539
- mittBus.on('openOrCloseSortable', () => {
540
- initSortable();
541
- });
542
- // 监听布局配置开启 TagsView 共用,为了演示还原默认值
543
- mittBus.on('openShareTagsView', () => {
544
- if (getThemeConfig.value.isShareTagsView) {
545
- router.push('/home');
546
- state.tagsViewList = [];
547
- state.tagsViewRoutesList.map((v: RouteItem) => {
548
- if (v.meta?.isAffix && !v.meta.isHide) {
549
- v.url = setTagsViewHighlight(v);
550
- state.tagsViewList.push({ ...v });
551
- }
552
- });
553
- }
554
- });
555
- });
556
- // 页面卸载时
557
- onUnmounted(() => {
558
- // 取消非本页面调用监听
559
- mittBus.off('onCurrentContextmenuClick', () => {});
560
- // 取消监听布局配置界面开启/关闭拖拽
561
- mittBus.off('openOrCloseSortable', () => {});
562
- // 取消监听布局配置开启 TagsView 共用
563
- mittBus.off('openShareTagsView', () => {});
564
- // 取消窗口 resize 监听
565
- window.removeEventListener('resize', onSortableResize);
566
- });
567
- // 页面更新时
568
- onBeforeUpdate(() => {
569
- tagsRefs.value = [];
570
- });
571
- // 页面加载时
572
- onMounted(() => {
573
- // 初始化 pinia 中的 tagsViewRoutes 列表
574
- getTagsViewRoutes();
575
- initSortable();
576
- });
577
- // 路由更新时(组件内生命钩子)
578
- onBeforeRouteUpdate(async (to) => {
579
- state.routeActive = setTagsViewHighlight(to);
580
- state.routePath = to.meta.isDynamic ? to.meta.isDynamicPath : to.path;
581
- await addTagsView(to.path, <RouteToFrom>to);
582
- getTagsRefsIndex(getThemeConfig.value.isShareTagsView ? state.routePath : state.routeActive);
583
- });
584
- // 监听路由的变化,动态赋值给 tagsView
585
- watch(
586
- () => tagsViewRoutes.value,
587
- (val) => {
588
- if (val.length === state.tagsViewRoutesList.length) return false;
589
- getTagsViewRoutes();
590
- },
591
- {
592
- deep: true,
593
- }
594
- );
595
- </script>
596
-
597
- <style scoped lang="scss">
598
- .layout-navbars-tagsview {
599
- background-color: var(--el-color-white);
600
- border-bottom: 1px solid var(--next-border-color-light);
601
- position: relative;
602
- z-index: 4;
603
- :deep(.el-scrollbar__wrap) {
604
- overflow-x: auto !important;
605
- }
606
- &-ul {
607
- list-style: none;
608
- margin: 0;
609
- padding: 0;
610
- height: 34px;
611
- display: flex;
612
- align-items: center;
613
- color: var(--el-text-color-regular);
614
- font-size: 12px;
615
- white-space: nowrap;
616
- padding: 0 15px;
617
- &-li {
618
- height: 26px;
619
- line-height: 26px;
620
- display: flex;
621
- align-items: center;
622
- border: 1px solid var(--el-border-color-lighter);
623
- padding: 0 15px;
624
- margin-right: 5px;
625
- border-radius: 2px;
626
- position: relative;
627
- z-index: 0;
628
- cursor: pointer;
629
- justify-content: space-between;
630
- &:hover {
631
- background-color: var(--el-color-primary-light-9);
632
- color: var(--el-color-primary);
633
- border-color: var(--el-color-primary-light-5);
634
- }
635
- &-iconfont {
636
- position: relative;
637
- left: -5px;
638
- font-size: 12px;
639
- }
640
- &-icon {
641
- border-radius: 100%;
642
- position: relative;
643
- height: 14px;
644
- width: 14px;
645
- text-align: center;
646
- line-height: 14px;
647
- right: -5px;
648
- &:hover {
649
- color: var(--el-color-white);
650
- background-color: var(--el-color-primary-light-3);
651
- }
652
- }
653
- .layout-icon-active {
654
- display: block;
655
- }
656
- .layout-icon-three {
657
- display: none;
658
- }
659
- }
660
- .is-active {
661
- color: var(--el-color-white);
662
- background: var(--el-color-primary);
663
- border-color: var(--el-color-primary);
664
- transition: border-color 3s ease;
665
- }
666
- }
667
- // 风格4
668
- .tags-style-four {
669
- .layout-navbars-tagsview-ul-li {
670
- margin-right: 0 !important;
671
- border: none !important;
672
- position: relative;
673
- border-radius: 3px !important;
674
- .layout-icon-active {
675
- display: none;
676
- }
677
- .layout-icon-three {
678
- display: block;
679
- }
680
- &:hover {
681
- background: none !important;
682
- }
683
- }
684
- .is-active {
685
- background: none !important;
686
- color: var(--el-color-primary) !important;
687
- }
688
- }
689
- // 风格5
690
- .tags-style-five {
691
- align-items: flex-end;
692
- .tags-style-five-svg {
693
- -webkit-mask-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzAiIGhlaWdodD0iNzAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSI+CgogPGc+CiAgPHRpdGxlPkxheWVyIDE8L3RpdGxlPgogIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKC0wLjEzMzUwNiA1MC4xMTkyIDUwKSIgaWQ9InN2Z18xIiBkPSJtMTAwLjExOTE5LDEwMGMtNTUuMjI4LDAgLTEwMCwtNDQuNzcyIC0xMDAsLTEwMGwwLDEwMGwxMDAsMHoiIG9wYWNpdHk9InVuZGVmaW5lZCIgc3Ryb2tlPSJudWxsIiBmaWxsPSIjRjhFQUU3Ii8+CiAgPHBhdGggZD0ibS0wLjYzNzY2LDcuMzEyMjhjMC4xMTkxOSwwIDAuMjE3MzcsMC4wNTc5NiAwLjQ3Njc2LDAuMTE5MTljMC4yMzIsMC4wNTQ3NyAwLjI3MzI5LDAuMDM0OTEgMC4zNTc1NywwLjExOTE5YzAuMDg0MjgsMC4wODQyOCAwLjM1NzU3LDAgMC40NzY3NiwwbDAuMTE5MTksMGwwLjIzODM4LDAiIGlkPSJzdmdfMiIgc3Ryb2tlPSJudWxsIiBmaWxsPSJub25lIi8+CiAgPHBhdGggZD0ibTI4LjkyMTM0LDY5LjA1MjQ0YzAsMC4xMTkxOSAwLDAuMjM4MzggMCwwLjM1NzU3bDAsMC4xMTkxOWwwLDAuMTE5MTkiIGlkPSJzdmdfMyIgc3Ryb2tlPSJudWxsIiBmaWxsPSJub25lIi8+CiAgPHJlY3QgaWQ9InN2Z180IiBoZWlnaHQ9IjAiIHdpZHRoPSIxLjMxMTA4IiB5PSI2LjgzNTUyIiB4PSItMC4wNDE3MSIgc3Ryb2tlPSJudWxsIiBmaWxsPSJub25lIi8+CiAgPHJlY3QgaWQ9InN2Z181IiBoZWlnaHQ9IjEuNzg3ODQiIHdpZHRoPSIwLjExOTE5IiB5PSI2OC40NTY1IiB4PSIyOC45MjEzNCIgc3Ryb2tlPSJudWxsIiBmaWxsPSJub25lIi8+CiAgPHJlY3QgaWQ9InN2Z182IiBoZWlnaHQ9IjQuODg2NzciIHdpZHRoPSIxOS4wNzAzMiIgeT0iNTEuMjkzMjEiIHg9IjM2LjY2ODY2IiBzdHJva2U9Im51bGwiIGZpbGw9Im5vbmUiLz4KIDwvZz4KPC9zdmc+'),
694
- url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNzAiIGhlaWdodD0iNzAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbD0ibm9uZSI+CiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPHBhdGggdHJhbnNmb3JtPSJyb3RhdGUoLTg5Ljc2MjQgNy4zMzAxNCA1NS4xMjUyKSIgc3Ryb2tlPSJudWxsIiBpZD0ic3ZnXzEiIGZpbGw9IiNGOEVBRTciIGQ9Im02Mi41NzQ0OSwxMTcuNTIwODZjLTU1LjIyOCwwIC0xMDAsLTQ0Ljc3MiAtMTAwLC0xMDBsMCwxMDBsMTAwLDB6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPgogIDxwYXRoIGQ9Im0tMC42Mzc2Niw3LjMxMjI4YzAuMTE5MTksMCAwLjIxNzM3LDAuMDU3OTYgMC40NzY3NiwwLjExOTE5YzAuMjMyLDAuMDU0NzcgMC4yNzMyOSwwLjAzNDkxIDAuMzU3NTcsMC4xMTkxOWMwLjA4NDI4LDAuMDg0MjggMC4zNTc1NywwIDAuNDc2NzYsMGwwLjExOTE5LDBsMC4yMzgzOCwwIiBpZD0ic3ZnXzIiIHN0cm9rZT0ibnVsbCIgZmlsbD0ibm9uZSIvPgogIDxwYXRoIGQ9Im0yOC45MjEzNCw2OS4wNTI0NGMwLDAuMTE5MTkgMCwwLjIzODM4IDAsMC4zNTc1N2wwLDAuMTE5MTlsMCwwLjExOTE5IiBpZD0ic3ZnXzMiIHN0cm9rZT0ibnVsbCIgZmlsbD0ibm9uZSIvPgogIDxyZWN0IGlkPSJzdmdfNCIgaGVpZ2h0PSIwIiB3aWR0aD0iMS4zMTEwOCIgeT0iNi44MzU1MiIgeD0iLTAuMDQxNzEiIHN0cm9rZT0ibnVsbCIgZmlsbD0ibm9uZSIvPgogIDxyZWN0IGlkPSJzdmdfNSIgaGVpZ2h0PSIxLjc4Nzg0IiB3aWR0aD0iMC4xMTkxOSIgeT0iNjguNDU2NSIgeD0iMjguOTIxMzQiIHN0cm9rZT0ibnVsbCIgZmlsbD0ibm9uZSIvPgogIDxyZWN0IGlkPSJzdmdfNiIgaGVpZ2h0PSI0Ljg4Njc3IiB3aWR0aD0iMTkuMDcwMzIiIHk9IjUxLjI5MzIxIiB4PSIzNi42Njg2NiIgc3Ryb2tlPSJudWxsIiBmaWxsPSJub25lIi8+CiA8L2c+Cjwvc3ZnPg=='),
695
- url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><rect rx='8' width='100%' height='100%' fill='%23F8EAE7'/></svg>");
696
- -webkit-mask-size:
697
- 18px 30px,
698
- 20px 30px,
699
- calc(100% - 30px) calc(100% + 17px);
700
- -webkit-mask-position:
701
- right bottom,
702
- left bottom,
703
- center top;
704
- -webkit-mask-repeat: no-repeat;
705
- }
706
- .layout-navbars-tagsview-ul-li {
707
- padding: 0 5px;
708
- border-width: 15px 27px 15px;
709
- border-style: solid;
710
- border-color: transparent;
711
- margin: 0 -15px;
712
- .layout-icon-active,
713
- .layout-navbars-tagsview-ul-li-iconfont,
714
- .layout-navbars-tagsview-ul-li-refresh {
715
- display: none;
716
- }
717
- .layout-icon-three {
718
- display: block;
719
- }
720
- &:hover {
721
- @extend .tags-style-five-svg;
722
- background: var(--el-color-primary-light-9);
723
- color: unset;
724
- }
725
- }
726
- .is-active {
727
- @extend .tags-style-five-svg;
728
- background: var(--el-color-primary-light-9) !important;
729
- color: var(--el-color-primary) !important;
730
- z-index: 1;
731
- }
732
- }
733
- }
734
- .layout-navbars-tagsview-shadow {
735
- box-shadow: rgb(0 21 41 / 4%) 0px 1px 4px;
736
- }
737
- </style>