smart-admin-web 10.5.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 (718) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +78 -0
  3. package/dist/App.vue.d.ts +3 -0
  4. package/dist/App.vue.js +54 -0
  5. package/dist/App.vue.js.map +1 -0
  6. package/dist/App2.vue.js +5 -0
  7. package/dist/App2.vue.js.map +1 -0
  8. package/dist/_virtual/_plugin-vue_export-helper.js +10 -0
  9. package/dist/_virtual/_plugin-vue_export-helper.js.map +1 -0
  10. package/dist/api/client.d.ts +29 -0
  11. package/dist/api/client.js +139 -0
  12. package/dist/api/client.js.map +1 -0
  13. package/dist/api/index.d.ts +672 -0
  14. package/dist/api/index.js +638 -0
  15. package/dist/api/index.js.map +1 -0
  16. package/dist/api/reauthGate.d.ts +16 -0
  17. package/dist/api/reauthGate.js +21 -0
  18. package/dist/api/reauthGate.js.map +1 -0
  19. package/dist/api/schema.d.ts +10230 -0
  20. package/dist/assets/icons/ph-subset.json.js +16 -0
  21. package/dist/assets/icons/ph-subset.json.js.map +1 -0
  22. package/dist/assets/oauth/dingtalk.svg.js +5 -0
  23. package/dist/assets/oauth/dingtalk.svg.js.map +1 -0
  24. package/dist/assets/oauth/gitee.svg.js +5 -0
  25. package/dist/assets/oauth/gitee.svg.js.map +1 -0
  26. package/dist/assets/oauth/github.svg.js +5 -0
  27. package/dist/assets/oauth/github.svg.js.map +1 -0
  28. package/dist/assets/oauth/qq.svg.js +5 -0
  29. package/dist/assets/oauth/qq.svg.js.map +1 -0
  30. package/dist/assets/oauth/wechat.svg.js +5 -0
  31. package/dist/assets/oauth/wechat.svg.js.map +1 -0
  32. package/dist/assets/oauth/wecom.svg.js +5 -0
  33. package/dist/assets/oauth/wecom.svg.js.map +1 -0
  34. package/dist/assets/svg/star.svg.js +6 -0
  35. package/dist/assets/svg/star.svg.js.map +1 -0
  36. package/dist/components/ApiSelect/index.vue.d.ts +22 -0
  37. package/dist/components/ApiSelect/index.vue.js +50 -0
  38. package/dist/components/ApiSelect/index.vue.js.map +1 -0
  39. package/dist/components/ApiSelect/index2.vue.js +5 -0
  40. package/dist/components/ApiSelect/index2.vue.js.map +1 -0
  41. package/dist/components/AppIcon.vue.d.ts +7 -0
  42. package/dist/components/AppIcon.vue.js +33 -0
  43. package/dist/components/AppIcon.vue.js.map +1 -0
  44. package/dist/components/AppIcon2.vue.js +5 -0
  45. package/dist/components/AppIcon2.vue.js.map +1 -0
  46. package/dist/components/Chart/BarChart.vue.d.ts +13 -0
  47. package/dist/components/Chart/BarChart.vue.js +27 -0
  48. package/dist/components/Chart/BarChart.vue.js.map +1 -0
  49. package/dist/components/Chart/BarChart2.vue.js +5 -0
  50. package/dist/components/Chart/BarChart2.vue.js.map +1 -0
  51. package/dist/components/Chart/LineChart.vue.d.ts +15 -0
  52. package/dist/components/Chart/LineChart.vue.js +33 -0
  53. package/dist/components/Chart/LineChart.vue.js.map +1 -0
  54. package/dist/components/Chart/LineChart2.vue.js +5 -0
  55. package/dist/components/Chart/LineChart2.vue.js.map +1 -0
  56. package/dist/components/Chart/PieChart.vue.d.ts +14 -0
  57. package/dist/components/Chart/PieChart.vue.js +31 -0
  58. package/dist/components/Chart/PieChart.vue.js.map +1 -0
  59. package/dist/components/Chart/PieChart2.vue.js +5 -0
  60. package/dist/components/Chart/PieChart2.vue.js.map +1 -0
  61. package/dist/components/Chart/echarts.d.ts +57 -0
  62. package/dist/components/Chart/echarts.js +47 -0
  63. package/dist/components/Chart/echarts.js.map +1 -0
  64. package/dist/components/Chart/index.vue.d.ts +12 -0
  65. package/dist/components/Chart/index.vue.js +8 -0
  66. package/dist/components/Chart/index.vue.js.map +1 -0
  67. package/dist/components/Chart/index2.vue.js +27 -0
  68. package/dist/components/Chart/index2.vue.js.map +1 -0
  69. package/dist/components/CodeBlock/index.vue.d.ts +17 -0
  70. package/dist/components/CodeBlock/index.vue.js +8 -0
  71. package/dist/components/CodeBlock/index.vue.js.map +1 -0
  72. package/dist/components/CodeBlock/index2.vue.js +48 -0
  73. package/dist/components/CodeBlock/index2.vue.js.map +1 -0
  74. package/dist/components/CronEditor/index.vue.d.ts +15 -0
  75. package/dist/components/CronEditor/index.vue.js +8 -0
  76. package/dist/components/CronEditor/index.vue.js.map +1 -0
  77. package/dist/components/CronEditor/index2.vue.js +528 -0
  78. package/dist/components/CronEditor/index2.vue.js.map +1 -0
  79. package/dist/components/DetailPage/index.vue.d.ts +26 -0
  80. package/dist/components/DetailPage/index.vue.js +8 -0
  81. package/dist/components/DetailPage/index.vue.js.map +1 -0
  82. package/dist/components/DetailPage/index2.vue.js +51 -0
  83. package/dist/components/DetailPage/index2.vue.js.map +1 -0
  84. package/dist/components/DictCheckbox/index.vue.d.ts +6 -0
  85. package/dist/components/DictCheckbox/index.vue.js +43 -0
  86. package/dist/components/DictCheckbox/index.vue.js.map +1 -0
  87. package/dist/components/DictCheckbox/index2.vue.js +5 -0
  88. package/dist/components/DictCheckbox/index2.vue.js.map +1 -0
  89. package/dist/components/DictRadio/index.vue.d.ts +6 -0
  90. package/dist/components/DictRadio/index.vue.js +38 -0
  91. package/dist/components/DictRadio/index.vue.js.map +1 -0
  92. package/dist/components/DictRadio/index2.vue.js +5 -0
  93. package/dist/components/DictRadio/index2.vue.js.map +1 -0
  94. package/dist/components/DictSelect/index.vue.d.ts +6 -0
  95. package/dist/components/DictSelect/index.vue.js +37 -0
  96. package/dist/components/DictSelect/index.vue.js.map +1 -0
  97. package/dist/components/DictSelect/index2.vue.js +5 -0
  98. package/dist/components/DictSelect/index2.vue.js.map +1 -0
  99. package/dist/components/DictTag/index.vue.d.ts +10 -0
  100. package/dist/components/DictTag/index.vue.js +48 -0
  101. package/dist/components/DictTag/index.vue.js.map +1 -0
  102. package/dist/components/DictTag/index2.vue.js +5 -0
  103. package/dist/components/DictTag/index2.vue.js.map +1 -0
  104. package/dist/components/ErrorBoundary/index.vue.d.ts +13 -0
  105. package/dist/components/ErrorBoundary/index.vue.js +8 -0
  106. package/dist/components/ErrorBoundary/index.vue.js.map +1 -0
  107. package/dist/components/ErrorBoundary/index2.vue.js +61 -0
  108. package/dist/components/ErrorBoundary/index2.vue.js.map +1 -0
  109. package/dist/components/ExportColumnsModal/index.vue.d.ts +19 -0
  110. package/dist/components/ExportColumnsModal/index.vue.js +8 -0
  111. package/dist/components/ExportColumnsModal/index.vue.js.map +1 -0
  112. package/dist/components/ExportColumnsModal/index2.vue.js +121 -0
  113. package/dist/components/ExportColumnsModal/index2.vue.js.map +1 -0
  114. package/dist/components/FileUpload/index.vue.d.ts +24 -0
  115. package/dist/components/FileUpload/index.vue.js +42 -0
  116. package/dist/components/FileUpload/index.vue.js.map +1 -0
  117. package/dist/components/FileUpload/index2.vue.js +5 -0
  118. package/dist/components/FileUpload/index2.vue.js.map +1 -0
  119. package/dist/components/FormContainer/index.vue.d.ts +51 -0
  120. package/dist/components/FormContainer/index.vue.js +160 -0
  121. package/dist/components/FormContainer/index.vue.js.map +1 -0
  122. package/dist/components/FormContainer/index3.vue.js +6 -0
  123. package/dist/components/FormContainer/index3.vue.js.map +1 -0
  124. package/dist/components/IconPicker/index.vue.d.ts +18 -0
  125. package/dist/components/IconPicker/index.vue.js +43 -0
  126. package/dist/components/IconPicker/index.vue.js.map +1 -0
  127. package/dist/components/IconPicker/index2.vue.js +5 -0
  128. package/dist/components/IconPicker/index2.vue.js.map +1 -0
  129. package/dist/components/ImportWizard/index.vue.d.ts +39 -0
  130. package/dist/components/ImportWizard/index.vue.js +8 -0
  131. package/dist/components/ImportWizard/index.vue.js.map +1 -0
  132. package/dist/components/ImportWizard/index2.vue.js +634 -0
  133. package/dist/components/ImportWizard/index2.vue.js.map +1 -0
  134. package/dist/components/JsonEditor/index.vue.d.ts +12 -0
  135. package/dist/components/JsonEditor/index.vue.js +87 -0
  136. package/dist/components/JsonEditor/index.vue.js.map +1 -0
  137. package/dist/components/JsonEditor/index2.vue.js +5 -0
  138. package/dist/components/JsonEditor/index2.vue.js.map +1 -0
  139. package/dist/components/MarkdownEditor/MarkdownView.vue.d.ts +6 -0
  140. package/dist/components/MarkdownEditor/MarkdownView.vue.js +33 -0
  141. package/dist/components/MarkdownEditor/MarkdownView.vue.js.map +1 -0
  142. package/dist/components/MarkdownEditor/MarkdownView2.vue.js +5 -0
  143. package/dist/components/MarkdownEditor/MarkdownView2.vue.js.map +1 -0
  144. package/dist/components/MarkdownEditor/index.vue.d.ts +10 -0
  145. package/dist/components/MarkdownEditor/index.vue.js +35 -0
  146. package/dist/components/MarkdownEditor/index.vue.js.map +1 -0
  147. package/dist/components/MarkdownEditor/index2.vue.js +5 -0
  148. package/dist/components/MarkdownEditor/index2.vue.js.map +1 -0
  149. package/dist/components/MenuSearch.vue.d.ts +10 -0
  150. package/dist/components/MenuSearch.vue.js +8 -0
  151. package/dist/components/MenuSearch.vue.js.map +1 -0
  152. package/dist/components/MenuSearch2.vue.js +121 -0
  153. package/dist/components/MenuSearch2.vue.js.map +1 -0
  154. package/dist/components/OrgTreeSelect/index.vue.d.ts +6 -0
  155. package/dist/components/OrgTreeSelect/index.vue.js +42 -0
  156. package/dist/components/OrgTreeSelect/index.vue.js.map +1 -0
  157. package/dist/components/OrgTreeSelect/index2.vue.js +5 -0
  158. package/dist/components/OrgTreeSelect/index2.vue.js.map +1 -0
  159. package/dist/components/PasswordStrength/index.vue.d.ts +6 -0
  160. package/dist/components/PasswordStrength/index.vue.js +8 -0
  161. package/dist/components/PasswordStrength/index.vue.js.map +1 -0
  162. package/dist/components/PasswordStrength/index2.vue.js +91 -0
  163. package/dist/components/PasswordStrength/index2.vue.js.map +1 -0
  164. package/dist/components/ReauthModal.vue.d.ts +3 -0
  165. package/dist/components/ReauthModal.vue.js +8 -0
  166. package/dist/components/ReauthModal.vue.js.map +1 -0
  167. package/dist/components/ReauthModal2.vue.js +139 -0
  168. package/dist/components/ReauthModal2.vue.js.map +1 -0
  169. package/dist/components/RoleSelect/index.vue.d.ts +8 -0
  170. package/dist/components/RoleSelect/index.vue.js +26 -0
  171. package/dist/components/RoleSelect/index.vue.js.map +1 -0
  172. package/dist/components/RoleSelect/index2.vue.js +5 -0
  173. package/dist/components/RoleSelect/index2.vue.js.map +1 -0
  174. package/dist/components/SelectTable/index.vue.d.ts +76 -0
  175. package/dist/components/SelectTable/index.vue.js +8 -0
  176. package/dist/components/SelectTable/index.vue.js.map +1 -0
  177. package/dist/components/SelectTable/index2.vue.js +256 -0
  178. package/dist/components/SelectTable/index2.vue.js.map +1 -0
  179. package/dist/components/SmartLogo.vue.d.ts +8 -0
  180. package/dist/components/SmartLogo.vue.js +8 -0
  181. package/dist/components/SmartLogo.vue.js.map +1 -0
  182. package/dist/components/SmartLogo2.vue.js +74 -0
  183. package/dist/components/SmartLogo2.vue.js.map +1 -0
  184. package/dist/components/StatusSwitch/index.vue.d.ts +21 -0
  185. package/dist/components/StatusSwitch/index.vue.js +45 -0
  186. package/dist/components/StatusSwitch/index.vue.js.map +1 -0
  187. package/dist/components/StatusSwitch/index2.vue.js +5 -0
  188. package/dist/components/StatusSwitch/index2.vue.js.map +1 -0
  189. package/dist/components/TableZoomButton/index.vue.d.ts +13 -0
  190. package/dist/components/TableZoomButton/index.vue.js +42 -0
  191. package/dist/components/TableZoomButton/index.vue.js.map +1 -0
  192. package/dist/components/TableZoomButton/index2.vue.js +5 -0
  193. package/dist/components/TableZoomButton/index2.vue.js.map +1 -0
  194. package/dist/components/UserPicker/index.vue.d.ts +13 -0
  195. package/dist/components/UserPicker/index.vue.js +8 -0
  196. package/dist/components/UserPicker/index.vue.js.map +1 -0
  197. package/dist/components/UserPicker/index2.vue.js +214 -0
  198. package/dist/components/UserPicker/index2.vue.js.map +1 -0
  199. package/dist/components/UserSelect/index.vue.d.ts +9 -0
  200. package/dist/components/UserSelect/index.vue.js +32 -0
  201. package/dist/components/UserSelect/index.vue.js.map +1 -0
  202. package/dist/components/UserSelect/index2.vue.js +5 -0
  203. package/dist/components/UserSelect/index2.vue.js.map +1 -0
  204. package/dist/components/oauth/BrandIcon.vue.d.ts +12 -0
  205. package/dist/components/oauth/BrandIcon.vue.js +8 -0
  206. package/dist/components/oauth/BrandIcon.vue.js.map +1 -0
  207. package/dist/components/oauth/BrandIcon2.vue.js +95 -0
  208. package/dist/components/oauth/BrandIcon2.vue.js.map +1 -0
  209. package/dist/composables/authMenuRoute.d.ts +32 -0
  210. package/dist/composables/authMenuRoute.js +37 -0
  211. package/dist/composables/authMenuRoute.js.map +1 -0
  212. package/dist/composables/clearClientCache.d.ts +10 -0
  213. package/dist/composables/clearClientCache.js +17 -0
  214. package/dist/composables/clearClientCache.js.map +1 -0
  215. package/dist/composables/useAuthMenu.d.ts +3 -0
  216. package/dist/composables/useAuthMenu.js +61 -0
  217. package/dist/composables/useAuthMenu.js.map +1 -0
  218. package/dist/composables/useBatchDelete.d.ts +18 -0
  219. package/dist/composables/useBatchDelete.js +21 -0
  220. package/dist/composables/useBatchDelete.js.map +1 -0
  221. package/dist/composables/useCompactScreen.d.ts +12 -0
  222. package/dist/composables/useCompactScreen.js +17 -0
  223. package/dist/composables/useCompactScreen.js.map +1 -0
  224. package/dist/composables/useConfirm.d.ts +18 -0
  225. package/dist/composables/useConfirm.js +61 -0
  226. package/dist/composables/useConfirm.js.map +1 -0
  227. package/dist/composables/useFullscreenToggle.d.ts +11 -0
  228. package/dist/composables/useFullscreenToggle.js +64 -0
  229. package/dist/composables/useFullscreenToggle.js.map +1 -0
  230. package/dist/composables/useHeaderTools.d.ts +31 -0
  231. package/dist/composables/useHeaderTools.js +15 -0
  232. package/dist/composables/useHeaderTools.js.map +1 -0
  233. package/dist/composables/useLayoutMenu.d.ts +17 -0
  234. package/dist/composables/useLayoutMenu.js +93 -0
  235. package/dist/composables/useLayoutMenu.js.map +1 -0
  236. package/dist/composables/useMenuBadge.d.ts +11 -0
  237. package/dist/composables/useMenuBadge.js +17 -0
  238. package/dist/composables/useMenuBadge.js.map +1 -0
  239. package/dist/composables/useMenuFlat.d.ts +8 -0
  240. package/dist/composables/useMenuFlat.js +29 -0
  241. package/dist/composables/useMenuFlat.js.map +1 -0
  242. package/dist/composables/useModule.d.ts +16 -0
  243. package/dist/composables/useModule.js +44 -0
  244. package/dist/composables/useModule.js.map +1 -0
  245. package/dist/composables/useNoticeAction.d.ts +8 -0
  246. package/dist/composables/useNoticeAction.js +79 -0
  247. package/dist/composables/useNoticeAction.js.map +1 -0
  248. package/dist/composables/usePageTitle.d.ts +1 -0
  249. package/dist/composables/usePageTitle.js +20 -0
  250. package/dist/composables/usePageTitle.js.map +1 -0
  251. package/dist/composables/useRealtime.d.ts +31 -0
  252. package/dist/composables/useRealtime.js +59 -0
  253. package/dist/composables/useRealtime.js.map +1 -0
  254. package/dist/composables/useSite.d.ts +24 -0
  255. package/dist/composables/useSite.js +27 -0
  256. package/dist/composables/useSite.js.map +1 -0
  257. package/dist/composables/useTabTitle.d.ts +1 -0
  258. package/dist/composables/useTabTitle.js +10 -0
  259. package/dist/composables/useTabTitle.js.map +1 -0
  260. package/dist/composables/useTableRowSort.d.ts +20 -0
  261. package/dist/composables/useTableRowSort.js +59 -0
  262. package/dist/composables/useTableRowSort.js.map +1 -0
  263. package/dist/composables/useTableZoom.d.ts +5 -0
  264. package/dist/composables/useTableZoom.js +30 -0
  265. package/dist/composables/useTableZoom.js.map +1 -0
  266. package/dist/composables/useTheme.d.ts +13 -0
  267. package/dist/composables/useTheme.js +30 -0
  268. package/dist/composables/useTheme.js.map +1 -0
  269. package/dist/composables/useVisualViewportHeight.d.ts +3 -0
  270. package/dist/composables/useVisualViewportHeight.js +16 -0
  271. package/dist/composables/useVisualViewportHeight.js.map +1 -0
  272. package/dist/createSmartAdmin.d.ts +56 -0
  273. package/dist/createSmartAdmin.js +76 -0
  274. package/dist/createSmartAdmin.js.map +1 -0
  275. package/dist/directives/auth.d.ts +16 -0
  276. package/dist/directives/auth.js +19 -0
  277. package/dist/directives/auth.js.map +1 -0
  278. package/dist/env.d.ts +10 -0
  279. package/dist/index.d.ts +90 -0
  280. package/dist/index.js +273 -0
  281. package/dist/index.js.map +1 -0
  282. package/dist/layouts/AppHeader.vue.d.ts +12 -0
  283. package/dist/layouts/AppHeader.vue.js +8 -0
  284. package/dist/layouts/AppHeader.vue.js.map +1 -0
  285. package/dist/layouts/AppHeader2.vue.js +352 -0
  286. package/dist/layouts/AppHeader2.vue.js.map +1 -0
  287. package/dist/layouts/LayoutModeCards.vue.d.ts +3 -0
  288. package/dist/layouts/LayoutModeCards.vue.js +8 -0
  289. package/dist/layouts/LayoutModeCards.vue.js.map +1 -0
  290. package/dist/layouts/LayoutModeCards2.vue.js +67 -0
  291. package/dist/layouts/LayoutModeCards2.vue.js.map +1 -0
  292. package/dist/layouts/NoticeBell.vue.d.ts +3 -0
  293. package/dist/layouts/NoticeBell.vue.js +8 -0
  294. package/dist/layouts/NoticeBell.vue.js.map +1 -0
  295. package/dist/layouts/NoticeBell2.vue.js +292 -0
  296. package/dist/layouts/NoticeBell2.vue.js.map +1 -0
  297. package/dist/layouts/PersonalLayout.vue.d.ts +3 -0
  298. package/dist/layouts/PersonalLayout.vue.js +8 -0
  299. package/dist/layouts/PersonalLayout.vue.js.map +1 -0
  300. package/dist/layouts/PersonalLayout2.vue.js +65 -0
  301. package/dist/layouts/PersonalLayout2.vue.js.map +1 -0
  302. package/dist/layouts/SettingRow.vue.d.ts +16 -0
  303. package/dist/layouts/SettingRow.vue.js +8 -0
  304. package/dist/layouts/SettingRow.vue.js.map +1 -0
  305. package/dist/layouts/SettingRow2.vue.js +23 -0
  306. package/dist/layouts/SettingRow2.vue.js.map +1 -0
  307. package/dist/layouts/SettingsDrawer.vue.d.ts +10 -0
  308. package/dist/layouts/SettingsDrawer.vue.js +8 -0
  309. package/dist/layouts/SettingsDrawer.vue.js.map +1 -0
  310. package/dist/layouts/SettingsDrawer2.vue.js +380 -0
  311. package/dist/layouts/SettingsDrawer2.vue.js.map +1 -0
  312. package/dist/layouts/TabsBar.vue.d.ts +3 -0
  313. package/dist/layouts/TabsBar.vue.js +8 -0
  314. package/dist/layouts/TabsBar.vue.js.map +1 -0
  315. package/dist/layouts/TabsBar2.vue.js +132 -0
  316. package/dist/layouts/TabsBar2.vue.js.map +1 -0
  317. package/dist/layouts/components/SideNav.vue.d.ts +15 -0
  318. package/dist/layouts/components/SideNav.vue.js +8 -0
  319. package/dist/layouts/components/SideNav.vue.js.map +1 -0
  320. package/dist/layouts/components/SideNav2.vue.js +49 -0
  321. package/dist/layouts/components/SideNav2.vue.js.map +1 -0
  322. package/dist/layouts/default.vue.d.ts +3 -0
  323. package/dist/layouts/default.vue.js +8 -0
  324. package/dist/layouts/default.vue.js.map +1 -0
  325. package/dist/layouts/default2.vue.js +213 -0
  326. package/dist/layouts/default2.vue.js.map +1 -0
  327. package/dist/lib/chunkReload.d.ts +9 -0
  328. package/dist/lib/chunkReload.js +24 -0
  329. package/dist/lib/chunkReload.js.map +1 -0
  330. package/dist/lib/icons.d.ts +2 -0
  331. package/dist/lib/icons.js +39 -0
  332. package/dist/lib/icons.js.map +1 -0
  333. package/dist/lib/loadingBar.d.ts +7 -0
  334. package/dist/lib/loadingBar.js +18 -0
  335. package/dist/lib/loadingBar.js.map +1 -0
  336. package/dist/lib/markdown.d.ts +8 -0
  337. package/dist/lib/markdown.js +16 -0
  338. package/dist/lib/markdown.js.map +1 -0
  339. package/dist/lib/markdownLinks.d.ts +26 -0
  340. package/dist/lib/markdownLinks.js +21 -0
  341. package/dist/lib/markdownLinks.js.map +1 -0
  342. package/dist/lib/noticeActions.d.ts +13 -0
  343. package/dist/lib/noticeActions.js +16 -0
  344. package/dist/lib/noticeActions.js.map +1 -0
  345. package/dist/lib/runtime.d.ts +21 -0
  346. package/dist/lib/runtime.js +13 -0
  347. package/dist/lib/runtime.js.map +1 -0
  348. package/dist/locales/en-US.d.ts +1358 -0
  349. package/dist/locales/en-US.js +1362 -0
  350. package/dist/locales/en-US.js.map +1 -0
  351. package/dist/locales/index.d.ts +30 -0
  352. package/dist/locales/index.js +46 -0
  353. package/dist/locales/index.js.map +1 -0
  354. package/dist/locales/menuTitle.d.ts +8 -0
  355. package/dist/locales/menuTitle.js +19 -0
  356. package/dist/locales/menuTitle.js.map +1 -0
  357. package/dist/locales/zh-CN.d.ts +1358 -0
  358. package/dist/locales/zh-CN.js +1368 -0
  359. package/dist/locales/zh-CN.js.map +1 -0
  360. package/dist/router/bootFailure.d.ts +8 -0
  361. package/dist/router/bootFailure.js +11 -0
  362. package/dist/router/bootFailure.js.map +1 -0
  363. package/dist/router/detailRoutes.d.ts +2 -0
  364. package/dist/router/detailRoutes.js +19 -0
  365. package/dist/router/detailRoutes.js.map +1 -0
  366. package/dist/router/index.d.ts +3 -0
  367. package/dist/router/index.js +58 -0
  368. package/dist/router/index.js.map +1 -0
  369. package/dist/router/namedPage.d.ts +13 -0
  370. package/dist/router/namedPage.js +12 -0
  371. package/dist/router/namedPage.js.map +1 -0
  372. package/dist/router/routes.d.ts +2 -0
  373. package/dist/router/routes.js +121 -0
  374. package/dist/router/routes.js.map +1 -0
  375. package/dist/router/viewRegistry.d.ts +18 -0
  376. package/dist/router/viewRegistry.js +26 -0
  377. package/dist/router/viewRegistry.js.map +1 -0
  378. package/dist/stores/app.d.ts +83 -0
  379. package/dist/stores/app.js +82 -0
  380. package/dist/stores/app.js.map +1 -0
  381. package/dist/stores/auth.d.ts +106 -0
  382. package/dist/stores/auth.js +59 -0
  383. package/dist/stores/auth.js.map +1 -0
  384. package/dist/stores/dict.d.ts +11 -0
  385. package/dist/stores/dict.js +36 -0
  386. package/dist/stores/dict.js.map +1 -0
  387. package/dist/stores/tabs.d.ts +53 -0
  388. package/dist/stores/tabs.js +88 -0
  389. package/dist/stores/tabs.js.map +1 -0
  390. package/dist/stores/user.d.ts +64 -0
  391. package/dist/stores/user.js +64 -0
  392. package/dist/stores/user.js.map +1 -0
  393. package/dist/style.css +1 -0
  394. package/dist/theme/accents.d.ts +2 -0
  395. package/dist/theme/accents.js +5 -0
  396. package/dist/theme/accents.js.map +1 -0
  397. package/dist/theme/mix.d.ts +26 -0
  398. package/dist/theme/mix.js +43 -0
  399. package/dist/theme/mix.js.map +1 -0
  400. package/dist/theme/naive-theme.d.ts +9 -0
  401. package/dist/theme/naive-theme.js +89 -0
  402. package/dist/theme/naive-theme.js.map +1 -0
  403. package/dist/types/api.d.ts +714 -0
  404. package/dist/types/api.js +15 -0
  405. package/dist/types/api.js.map +1 -0
  406. package/dist/types/menu.d.ts +67 -0
  407. package/dist/types/menu.js +26 -0
  408. package/dist/types/menu.js.map +1 -0
  409. package/dist/utils/chunkUpload.d.ts +6 -0
  410. package/dist/utils/chunkUpload.js +35 -0
  411. package/dist/utils/chunkUpload.js.map +1 -0
  412. package/dist/utils/download.d.ts +8 -0
  413. package/dist/utils/download.js +8 -0
  414. package/dist/utils/download.js.map +1 -0
  415. package/dist/utils/error.d.ts +14 -0
  416. package/dist/utils/error.js +50 -0
  417. package/dist/utils/error.js.map +1 -0
  418. package/dist/utils/format.d.ts +20 -0
  419. package/dist/utils/format.js +19 -0
  420. package/dist/utils/format.js.map +1 -0
  421. package/dist/utils/importDup.d.ts +17 -0
  422. package/dist/utils/importDup.js +18 -0
  423. package/dist/utils/importDup.js.map +1 -0
  424. package/dist/utils/oauthBrand.d.ts +100 -0
  425. package/dist/utils/oauthBrand.js +97 -0
  426. package/dist/utils/oauthBrand.js.map +1 -0
  427. package/dist/utils/tree.d.ts +33 -0
  428. package/dist/utils/tree.js +47 -0
  429. package/dist/utils/tree.js.map +1 -0
  430. package/dist/utils/ua.d.ts +7 -0
  431. package/dist/utils/ua.js +33 -0
  432. package/dist/utils/ua.js.map +1 -0
  433. package/dist/utils/url.d.ts +16 -0
  434. package/dist/utils/url.js +13 -0
  435. package/dist/utils/url.js.map +1 -0
  436. package/dist/views/dashboard/biz.vue.d.ts +3 -0
  437. package/dist/views/dashboard/biz.vue.js +8 -0
  438. package/dist/views/dashboard/biz.vue.js.map +1 -0
  439. package/dist/views/dashboard/biz2.vue.js +136 -0
  440. package/dist/views/dashboard/biz2.vue.js.map +1 -0
  441. package/dist/views/dashboard/workbench.vue.d.ts +3 -0
  442. package/dist/views/dashboard/workbench.vue.js +8 -0
  443. package/dist/views/dashboard/workbench.vue.js.map +1 -0
  444. package/dist/views/dashboard/workbench2.vue.js +195 -0
  445. package/dist/views/dashboard/workbench2.vue.js.map +1 -0
  446. package/dist/views/embed/iframe.vue.d.ts +3 -0
  447. package/dist/views/embed/iframe.vue.js +8 -0
  448. package/dist/views/embed/iframe.vue.js.map +1 -0
  449. package/dist/views/embed/iframe2.vue.js +21 -0
  450. package/dist/views/embed/iframe2.vue.js.map +1 -0
  451. package/dist/views/error/404.vue.d.ts +3 -0
  452. package/dist/views/error/404.vue.js +8 -0
  453. package/dist/views/error/404.vue.js.map +1 -0
  454. package/dist/views/error/4042.vue.js +31 -0
  455. package/dist/views/error/4042.vue.js.map +1 -0
  456. package/dist/views/error/BootError.vue.d.ts +3 -0
  457. package/dist/views/error/BootError.vue.js +8 -0
  458. package/dist/views/error/BootError.vue.js.map +1 -0
  459. package/dist/views/error/BootError2.vue.js +57 -0
  460. package/dist/views/error/BootError2.vue.js.map +1 -0
  461. package/dist/views/error/MissingRoute.vue.d.ts +3 -0
  462. package/dist/views/error/MissingRoute.vue.js +8 -0
  463. package/dist/views/error/MissingRoute.vue.js.map +1 -0
  464. package/dist/views/error/MissingRoute2.vue.js +23 -0
  465. package/dist/views/error/MissingRoute2.vue.js.map +1 -0
  466. package/dist/views/login/LoginForm.vue.d.ts +12 -0
  467. package/dist/views/login/LoginForm.vue.js +8 -0
  468. package/dist/views/login/LoginForm.vue.js.map +1 -0
  469. package/dist/views/login/LoginForm2.vue.js +642 -0
  470. package/dist/views/login/LoginForm2.vue.js.map +1 -0
  471. package/dist/views/login/index.vue.d.ts +3 -0
  472. package/dist/views/login/index.vue.js +8 -0
  473. package/dist/views/login/index.vue.js.map +1 -0
  474. package/dist/views/login/index2.vue.js +79 -0
  475. package/dist/views/login/index2.vue.js.map +1 -0
  476. package/dist/views/login/skins/AuroraGlass.vue.d.ts +3 -0
  477. package/dist/views/login/skins/AuroraGlass.vue.js +8 -0
  478. package/dist/views/login/skins/AuroraGlass.vue.js.map +1 -0
  479. package/dist/views/login/skins/AuroraGlass2.vue.js +80 -0
  480. package/dist/views/login/skins/AuroraGlass2.vue.js.map +1 -0
  481. package/dist/views/login/skins/SplitPanel.vue.d.ts +3 -0
  482. package/dist/views/login/skins/SplitPanel.vue.js +8 -0
  483. package/dist/views/login/skins/SplitPanel.vue.js.map +1 -0
  484. package/dist/views/login/skins/SplitPanel2.vue.js +85 -0
  485. package/dist/views/login/skins/SplitPanel2.vue.js.map +1 -0
  486. package/dist/views/login/skins/Spotlight.vue.d.ts +3 -0
  487. package/dist/views/login/skins/Spotlight.vue.js +8 -0
  488. package/dist/views/login/skins/Spotlight.vue.js.map +1 -0
  489. package/dist/views/login/skins/Spotlight2.vue.js +36 -0
  490. package/dist/views/login/skins/Spotlight2.vue.js.map +1 -0
  491. package/dist/views/login/skins.d.ts +8 -0
  492. package/dist/views/login/skins.js +13 -0
  493. package/dist/views/login/skins.js.map +1 -0
  494. package/dist/views/mfa/bindComplete.d.ts +7 -0
  495. package/dist/views/mfa/bindComplete.js +8 -0
  496. package/dist/views/mfa/bindComplete.js.map +1 -0
  497. package/dist/views/mfa/index.vue.d.ts +3 -0
  498. package/dist/views/mfa/index.vue.js +8 -0
  499. package/dist/views/mfa/index.vue.js.map +1 -0
  500. package/dist/views/mfa/index2.vue.js +425 -0
  501. package/dist/views/mfa/index2.vue.js.map +1 -0
  502. package/dist/views/module/index.vue.d.ts +3 -0
  503. package/dist/views/module/index.vue.js +8 -0
  504. package/dist/views/module/index.vue.js.map +1 -0
  505. package/dist/views/module/index2.vue.js +142 -0
  506. package/dist/views/module/index2.vue.js.map +1 -0
  507. package/dist/views/oauth/callback.vue.d.ts +3 -0
  508. package/dist/views/oauth/callback.vue.js +8 -0
  509. package/dist/views/oauth/callback.vue.js.map +1 -0
  510. package/dist/views/oauth/callback2.vue.js +86 -0
  511. package/dist/views/oauth/callback2.vue.js.map +1 -0
  512. package/dist/views/personal/bindings.vue.d.ts +3 -0
  513. package/dist/views/personal/bindings.vue.js +8 -0
  514. package/dist/views/personal/bindings.vue.js.map +1 -0
  515. package/dist/views/personal/bindings2.vue.js +220 -0
  516. package/dist/views/personal/bindings2.vue.js.map +1 -0
  517. package/dist/views/personal/notice.vue.d.ts +3 -0
  518. package/dist/views/personal/notice.vue.js +5 -0
  519. package/dist/views/personal/notice.vue.js.map +1 -0
  520. package/dist/views/personal/notice2.vue.js +163 -0
  521. package/dist/views/personal/notice2.vue.js.map +1 -0
  522. package/dist/views/personal/password.vue.d.ts +3 -0
  523. package/dist/views/personal/password.vue.js +5 -0
  524. package/dist/views/personal/password.vue.js.map +1 -0
  525. package/dist/views/personal/password2.vue.js +147 -0
  526. package/dist/views/personal/password2.vue.js.map +1 -0
  527. package/dist/views/personal/profile.vue.d.ts +3 -0
  528. package/dist/views/personal/profile.vue.js +8 -0
  529. package/dist/views/personal/profile.vue.js.map +1 -0
  530. package/dist/views/personal/profile2.vue.js +264 -0
  531. package/dist/views/personal/profile2.vue.js.map +1 -0
  532. package/dist/views/personal/security.vue.d.ts +3 -0
  533. package/dist/views/personal/security.vue.js +8 -0
  534. package/dist/views/personal/security.vue.js.map +1 -0
  535. package/dist/views/personal/security2.vue.js +82 -0
  536. package/dist/views/personal/security2.vue.js.map +1 -0
  537. package/dist/views/personal/sessions.vue.d.ts +3 -0
  538. package/dist/views/personal/sessions.vue.js +8 -0
  539. package/dist/views/personal/sessions.vue.js.map +1 -0
  540. package/dist/views/personal/sessions2.vue.js +101 -0
  541. package/dist/views/personal/sessions2.vue.js.map +1 -0
  542. package/dist/views/system/cache/index.vue.d.ts +3 -0
  543. package/dist/views/system/cache/index.vue.js +8 -0
  544. package/dist/views/system/cache/index.vue.js.map +1 -0
  545. package/dist/views/system/cache/index2.vue.js +113 -0
  546. package/dist/views/system/cache/index2.vue.js.map +1 -0
  547. package/dist/views/system/config/components/ConfigFormModal.vue.d.ts +16 -0
  548. package/dist/views/system/config/components/ConfigFormModal.vue.js +5 -0
  549. package/dist/views/system/config/components/ConfigFormModal.vue.js.map +1 -0
  550. package/dist/views/system/config/components/ConfigFormModal2.vue.js +177 -0
  551. package/dist/views/system/config/components/ConfigFormModal2.vue.js.map +1 -0
  552. package/dist/views/system/config/components/ExternalAuthConfig.vue.d.ts +3 -0
  553. package/dist/views/system/config/components/ExternalAuthConfig.vue.js +8 -0
  554. package/dist/views/system/config/components/ExternalAuthConfig.vue.js.map +1 -0
  555. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js +218 -0
  556. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js.map +1 -0
  557. package/dist/views/system/config/components/GroupExtraConfig.vue.d.ts +9 -0
  558. package/dist/views/system/config/components/GroupExtraConfig.vue.js +8 -0
  559. package/dist/views/system/config/components/GroupExtraConfig.vue.js.map +1 -0
  560. package/dist/views/system/config/components/GroupExtraConfig2.vue.js +108 -0
  561. package/dist/views/system/config/components/GroupExtraConfig2.vue.js.map +1 -0
  562. package/dist/views/system/config/components/HighSensConfig.vue.d.ts +3 -0
  563. package/dist/views/system/config/components/HighSensConfig.vue.js +5 -0
  564. package/dist/views/system/config/components/HighSensConfig.vue.js.map +1 -0
  565. package/dist/views/system/config/components/HighSensConfig2.vue.js +134 -0
  566. package/dist/views/system/config/components/HighSensConfig2.vue.js.map +1 -0
  567. package/dist/views/system/config/components/JobConfig.vue.d.ts +3 -0
  568. package/dist/views/system/config/components/JobConfig.vue.js +5 -0
  569. package/dist/views/system/config/components/JobConfig.vue.js.map +1 -0
  570. package/dist/views/system/config/components/JobConfig2.vue.js +116 -0
  571. package/dist/views/system/config/components/JobConfig2.vue.js.map +1 -0
  572. package/dist/views/system/config/components/OtherConfig.vue.d.ts +3 -0
  573. package/dist/views/system/config/components/OtherConfig.vue.js +5 -0
  574. package/dist/views/system/config/components/OtherConfig.vue.js.map +1 -0
  575. package/dist/views/system/config/components/OtherConfig2.vue.js +121 -0
  576. package/dist/views/system/config/components/OtherConfig2.vue.js.map +1 -0
  577. package/dist/views/system/config/components/SecurityConfig.vue.d.ts +3 -0
  578. package/dist/views/system/config/components/SecurityConfig.vue.js +8 -0
  579. package/dist/views/system/config/components/SecurityConfig.vue.js.map +1 -0
  580. package/dist/views/system/config/components/SecurityConfig2.vue.js +456 -0
  581. package/dist/views/system/config/components/SecurityConfig2.vue.js.map +1 -0
  582. package/dist/views/system/config/components/SysBaseConfig.vue.d.ts +3 -0
  583. package/dist/views/system/config/components/SysBaseConfig.vue.js +5 -0
  584. package/dist/views/system/config/components/SysBaseConfig.vue.js.map +1 -0
  585. package/dist/views/system/config/components/SysBaseConfig2.vue.js +107 -0
  586. package/dist/views/system/config/components/SysBaseConfig2.vue.js.map +1 -0
  587. package/dist/views/system/config/components/UploadConfig.vue.d.ts +3 -0
  588. package/dist/views/system/config/components/UploadConfig.vue.js +5 -0
  589. package/dist/views/system/config/components/UploadConfig.vue.js.map +1 -0
  590. package/dist/views/system/config/components/UploadConfig2.vue.js +135 -0
  591. package/dist/views/system/config/components/UploadConfig2.vue.js.map +1 -0
  592. package/dist/views/system/config/groups.d.ts +9 -0
  593. package/dist/views/system/config/groups.js +18 -0
  594. package/dist/views/system/config/groups.js.map +1 -0
  595. package/dist/views/system/config/index.vue.d.ts +3 -0
  596. package/dist/views/system/config/index.vue.js +5 -0
  597. package/dist/views/system/config/index.vue.js.map +1 -0
  598. package/dist/views/system/config/index2.vue.js +127 -0
  599. package/dist/views/system/config/index2.vue.js.map +1 -0
  600. package/dist/views/system/dict/index.vue.d.ts +3 -0
  601. package/dist/views/system/dict/index.vue.js +8 -0
  602. package/dist/views/system/dict/index.vue.js.map +1 -0
  603. package/dist/views/system/dict/index2.vue.js +560 -0
  604. package/dist/views/system/dict/index2.vue.js.map +1 -0
  605. package/dist/views/system/file/index.vue.d.ts +3 -0
  606. package/dist/views/system/file/index.vue.js +5 -0
  607. package/dist/views/system/file/index.vue.js.map +1 -0
  608. package/dist/views/system/file/index2.vue.js +186 -0
  609. package/dist/views/system/file/index2.vue.js.map +1 -0
  610. package/dist/views/system/job/index.vue.d.ts +3 -0
  611. package/dist/views/system/job/index.vue.js +8 -0
  612. package/dist/views/system/job/index.vue.js.map +1 -0
  613. package/dist/views/system/job/index2.vue.js +1167 -0
  614. package/dist/views/system/job/index2.vue.js.map +1 -0
  615. package/dist/views/system/job-log/index.vue.d.ts +3 -0
  616. package/dist/views/system/job-log/index.vue.js +8 -0
  617. package/dist/views/system/job-log/index.vue.js.map +1 -0
  618. package/dist/views/system/job-log/index2.vue.js +411 -0
  619. package/dist/views/system/job-log/index2.vue.js.map +1 -0
  620. package/dist/views/system/job-monitor/index.vue.d.ts +3 -0
  621. package/dist/views/system/job-monitor/index.vue.js +8 -0
  622. package/dist/views/system/job-monitor/index.vue.js.map +1 -0
  623. package/dist/views/system/job-monitor/index2.vue.js +253 -0
  624. package/dist/views/system/job-monitor/index2.vue.js.map +1 -0
  625. package/dist/views/system/log/exception/index.vue.d.ts +3 -0
  626. package/dist/views/system/log/exception/index.vue.js +8 -0
  627. package/dist/views/system/log/exception/index.vue.js.map +1 -0
  628. package/dist/views/system/log/exception/index2.vue.js +216 -0
  629. package/dist/views/system/log/exception/index2.vue.js.map +1 -0
  630. package/dist/views/system/log/login/index.vue.d.ts +3 -0
  631. package/dist/views/system/log/login/index.vue.js +5 -0
  632. package/dist/views/system/log/login/index.vue.js.map +1 -0
  633. package/dist/views/system/log/login/index2.vue.js +113 -0
  634. package/dist/views/system/log/login/index2.vue.js.map +1 -0
  635. package/dist/views/system/log/op/index.vue.d.ts +3 -0
  636. package/dist/views/system/log/op/index.vue.js +8 -0
  637. package/dist/views/system/log/op/index.vue.js.map +1 -0
  638. package/dist/views/system/log/op/index2.vue.js +332 -0
  639. package/dist/views/system/log/op/index2.vue.js.map +1 -0
  640. package/dist/views/system/menu/components/ButtonManager.vue.d.ts +21 -0
  641. package/dist/views/system/menu/components/ButtonManager.vue.js +8 -0
  642. package/dist/views/system/menu/components/ButtonManager.vue.js.map +1 -0
  643. package/dist/views/system/menu/components/ButtonManager2.vue.js +498 -0
  644. package/dist/views/system/menu/components/ButtonManager2.vue.js.map +1 -0
  645. package/dist/views/system/menu/components/MenuFormModal.vue.d.ts +22 -0
  646. package/dist/views/system/menu/components/MenuFormModal.vue.js +8 -0
  647. package/dist/views/system/menu/components/MenuFormModal.vue.js.map +1 -0
  648. package/dist/views/system/menu/components/MenuFormModal2.vue.js +259 -0
  649. package/dist/views/system/menu/components/MenuFormModal2.vue.js.map +1 -0
  650. package/dist/views/system/menu/index.vue.d.ts +3 -0
  651. package/dist/views/system/menu/index.vue.js +8 -0
  652. package/dist/views/system/menu/index.vue.js.map +1 -0
  653. package/dist/views/system/menu/index2.vue.js +391 -0
  654. package/dist/views/system/menu/index2.vue.js.map +1 -0
  655. package/dist/views/system/module/index.vue.d.ts +3 -0
  656. package/dist/views/system/module/index.vue.js +8 -0
  657. package/dist/views/system/module/index.vue.js.map +1 -0
  658. package/dist/views/system/module/index2.vue.js +344 -0
  659. package/dist/views/system/module/index2.vue.js.map +1 -0
  660. package/dist/views/system/monitor/index.vue.d.ts +3 -0
  661. package/dist/views/system/monitor/index.vue.js +8 -0
  662. package/dist/views/system/monitor/index.vue.js.map +1 -0
  663. package/dist/views/system/monitor/index2.vue.js +184 -0
  664. package/dist/views/system/monitor/index2.vue.js.map +1 -0
  665. package/dist/views/system/notice/index.vue.d.ts +3 -0
  666. package/dist/views/system/notice/index.vue.js +8 -0
  667. package/dist/views/system/notice/index.vue.js.map +1 -0
  668. package/dist/views/system/notice/index2.vue.js +401 -0
  669. package/dist/views/system/notice/index2.vue.js.map +1 -0
  670. package/dist/views/system/org/index.vue.d.ts +3 -0
  671. package/dist/views/system/org/index.vue.js +8 -0
  672. package/dist/views/system/org/index.vue.js.map +1 -0
  673. package/dist/views/system/org/index2.vue.js +397 -0
  674. package/dist/views/system/org/index2.vue.js.map +1 -0
  675. package/dist/views/system/position/index.vue.d.ts +3 -0
  676. package/dist/views/system/position/index.vue.js +5 -0
  677. package/dist/views/system/position/index.vue.js.map +1 -0
  678. package/dist/views/system/position/index2.vue.js +211 -0
  679. package/dist/views/system/position/index2.vue.js.map +1 -0
  680. package/dist/views/system/recycle/index.vue.d.ts +3 -0
  681. package/dist/views/system/recycle/index.vue.js +8 -0
  682. package/dist/views/system/recycle/index.vue.js.map +1 -0
  683. package/dist/views/system/recycle/index2.vue.js +121 -0
  684. package/dist/views/system/recycle/index2.vue.js.map +1 -0
  685. package/dist/views/system/role/components/GrantMenuTable.vue.d.ts +18 -0
  686. package/dist/views/system/role/components/GrantMenuTable.vue.js +8 -0
  687. package/dist/views/system/role/components/GrantMenuTable.vue.js.map +1 -0
  688. package/dist/views/system/role/components/GrantMenuTable2.vue.js +212 -0
  689. package/dist/views/system/role/components/GrantMenuTable2.vue.js.map +1 -0
  690. package/dist/views/system/role/components/grantMenuGroups.d.ts +31 -0
  691. package/dist/views/system/role/components/grantMenuGroups.js +76 -0
  692. package/dist/views/system/role/components/grantMenuGroups.js.map +1 -0
  693. package/dist/views/system/role/index.vue.d.ts +3 -0
  694. package/dist/views/system/role/index.vue.js +5 -0
  695. package/dist/views/system/role/index.vue.js.map +1 -0
  696. package/dist/views/system/role/index2.vue.js +476 -0
  697. package/dist/views/system/role/index2.vue.js.map +1 -0
  698. package/dist/views/system/session/index.vue.d.ts +3 -0
  699. package/dist/views/system/session/index.vue.js +5 -0
  700. package/dist/views/system/session/index.vue.js.map +1 -0
  701. package/dist/views/system/session/index2.vue.js +80 -0
  702. package/dist/views/system/session/index2.vue.js.map +1 -0
  703. package/dist/views/system/user/components/ResetPasswordModal.vue.d.ts +10 -0
  704. package/dist/views/system/user/components/ResetPasswordModal.vue.js +8 -0
  705. package/dist/views/system/user/components/ResetPasswordModal.vue.js.map +1 -0
  706. package/dist/views/system/user/components/ResetPasswordModal2.vue.js +111 -0
  707. package/dist/views/system/user/components/ResetPasswordModal2.vue.js.map +1 -0
  708. package/dist/views/system/user/components/UserFormModal.vue.d.ts +30 -0
  709. package/dist/views/system/user/components/UserFormModal.vue.js +8 -0
  710. package/dist/views/system/user/components/UserFormModal.vue.js.map +1 -0
  711. package/dist/views/system/user/components/UserFormModal2.vue.js +415 -0
  712. package/dist/views/system/user/components/UserFormModal2.vue.js.map +1 -0
  713. package/dist/views/system/user/index.vue.d.ts +3 -0
  714. package/dist/views/system/user/index.vue.js +8 -0
  715. package/dist/views/system/user/index.vue.js.map +1 -0
  716. package/dist/views/system/user/index2.vue.js +427 -0
  717. package/dist/views/system/user/index2.vue.js.map +1 -0
  718. package/package.json +99 -0
@@ -0,0 +1,83 @@
1
+ export type Density = 'comfortable' | 'compact';
2
+ export type FormStyle = 'modal' | 'drawer';
3
+ export type Locale = 'zh-CN' | 'en-US';
4
+ export type ThemeScheme = 'light' | 'dark' | 'auto';
5
+ export type PageTransition = 'fade' | 'fade-slide' | 'none';
6
+ export type LayoutMode = 'vertical' | 'vertical-mix' | 'vertical-hybrid-header-first' | 'horizontal' | 'top-hybrid-sidebar-first' | 'top-hybrid-header-first';
7
+ /** 布局模式全集(单一来源:抽屉卡片、布局 shell、持久化值校验共用)。 */
8
+ export declare const LAYOUT_MODES: LayoutMode[];
9
+ /** 可被"恢复默认"重置的外观项(不含 locale / collapsed,那两项按会话保留)。 */
10
+ declare const DEFAULTS: {
11
+ themeScheme: ThemeScheme;
12
+ accent: string;
13
+ density: Density;
14
+ layoutMode: LayoutMode;
15
+ showBreadcrumb: boolean;
16
+ showTabs: boolean;
17
+ fixedHeader: boolean;
18
+ pageTransition: PageTransition;
19
+ grayscale: boolean;
20
+ watermark: boolean;
21
+ watermarkText: string;
22
+ formStyle: FormStyle;
23
+ };
24
+ /** UI 偏好:主题模式 / 主色 / 密度 / 布局 / 界面开关 / 折叠 / 语言。持久化(localStorage key "app")。 */
25
+ export declare const useAppStore: import('pinia').StoreDefinition<"app", {
26
+ collapsed: boolean;
27
+ locale: Locale;
28
+ themeScheme: ThemeScheme;
29
+ accent: string;
30
+ density: Density;
31
+ layoutMode: LayoutMode;
32
+ showBreadcrumb: boolean;
33
+ showTabs: boolean;
34
+ fixedHeader: boolean;
35
+ pageTransition: PageTransition;
36
+ grayscale: boolean;
37
+ watermark: boolean;
38
+ watermarkText: string;
39
+ formStyle: FormStyle;
40
+ }, {
41
+ isDark(state: {
42
+ collapsed: boolean;
43
+ locale: Locale;
44
+ themeScheme: ThemeScheme;
45
+ accent: string;
46
+ density: Density;
47
+ layoutMode: LayoutMode;
48
+ showBreadcrumb: boolean;
49
+ showTabs: boolean;
50
+ fixedHeader: boolean;
51
+ pageTransition: PageTransition;
52
+ grayscale: boolean;
53
+ watermark: boolean;
54
+ watermarkText: string;
55
+ formStyle: FormStyle;
56
+ } & import('pinia').PiniaCustomStateProperties<{
57
+ collapsed: boolean;
58
+ locale: Locale;
59
+ themeScheme: ThemeScheme;
60
+ accent: string;
61
+ density: Density;
62
+ layoutMode: LayoutMode;
63
+ showBreadcrumb: boolean;
64
+ showTabs: boolean;
65
+ fixedHeader: boolean;
66
+ pageTransition: PageTransition;
67
+ grayscale: boolean;
68
+ watermark: boolean;
69
+ watermarkText: string;
70
+ formStyle: FormStyle;
71
+ }>): boolean;
72
+ }, {
73
+ setThemeScheme(s: ThemeScheme): void;
74
+ toggleDark(): void;
75
+ setAccent(hex: string): void;
76
+ setDensity(d: Density): void;
77
+ setLocale(l: Locale): void;
78
+ toggleCollapsed(): void;
79
+ setLayoutMode(m: LayoutMode): void;
80
+ resetSettings(): void;
81
+ exportSettings(): Record<keyof typeof DEFAULTS, unknown>;
82
+ }>;
83
+ export {};
@@ -0,0 +1,82 @@
1
+ import { defineStore as s } from "pinia";
2
+ import { usePreferredDark as i } from "@vueuse/core";
3
+ import { ACCENTS as a } from "../theme/accents.js";
4
+ const o = i(), c = [
5
+ "vertical",
6
+ "vertical-mix",
7
+ "vertical-hybrid-header-first",
8
+ "horizontal",
9
+ "top-hybrid-sidebar-first",
10
+ "top-hybrid-header-first"
11
+ ], t = {
12
+ themeScheme: "auto",
13
+ accent: a[0],
14
+ density: "compact",
15
+ // 系统设置密度默认使用紧凑档,提升后台列表与表单的信息密度。
16
+ layoutMode: "vertical",
17
+ showBreadcrumb: !0,
18
+ showTabs: !0,
19
+ fixedHeader: !0,
20
+ pageTransition: "fade",
21
+ grayscale: !1,
22
+ watermark: !1,
23
+ watermarkText: "",
24
+ // FormContainer 的全局形态偏好(弹窗/抽屉);组件可 per-instance 覆盖。
25
+ formStyle: "modal"
26
+ }, m = s("app", {
27
+ state: () => ({
28
+ ...t,
29
+ collapsed: !1,
30
+ locale: "zh-CN"
31
+ }),
32
+ getters: {
33
+ // auto 时按系统深浅色实时解析(prefersDark 是响应式 ref,getter 是 computed → 随之更新)。
34
+ isDark(e) {
35
+ return e.themeScheme === "auto" ? o.value : e.themeScheme === "dark";
36
+ }
37
+ },
38
+ actions: {
39
+ setThemeScheme(e) {
40
+ this.themeScheme = e;
41
+ },
42
+ // 顶栏快捷切换:在当前生效的深浅色基础上翻到明确的一侧。
43
+ toggleDark() {
44
+ this.themeScheme = this.isDark ? "light" : "dark";
45
+ },
46
+ setAccent(e) {
47
+ this.accent = e;
48
+ },
49
+ setDensity(e) {
50
+ this.density = e;
51
+ },
52
+ setLocale(e) {
53
+ this.locale = e;
54
+ },
55
+ toggleCollapsed() {
56
+ this.collapsed = !this.collapsed;
57
+ },
58
+ setLayoutMode(e) {
59
+ this.layoutMode = e;
60
+ },
61
+ // 抽屉"恢复默认":还原外观项,保留 locale / collapsed。其余布尔项由抽屉 v-model 直接改。
62
+ resetSettings() {
63
+ Object.assign(this, t);
64
+ },
65
+ // 导出当前外观配置(DEFAULTS 同名键的现值);抽屉「复制配置」用,粘回 app.ts DEFAULTS 即为新默认。
66
+ exportSettings() {
67
+ const e = Object.keys(t);
68
+ return Object.fromEntries(e.map((r) => [r, this[r]]));
69
+ }
70
+ },
71
+ persist: {
72
+ // localStorage 里的值不受代码约束:布局模式不在 LAYOUT_MODES、主色不在 ACCENTS 的,回落默认。
73
+ afterHydrate: ({ store: e }) => {
74
+ c.includes(e.layoutMode) || (e.layoutMode = "vertical"), a.includes(e.accent) || (e.accent = a[0]);
75
+ }
76
+ }
77
+ });
78
+ export {
79
+ c as LAYOUT_MODES,
80
+ m as useAppStore
81
+ };
82
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sources":["../../src/stores/app.ts"],"sourcesContent":["import { defineStore } from 'pinia'\nimport { usePreferredDark } from '@vueuse/core'\nimport { ACCENTS } from '#/theme/accents'\n\n// 模块级:建一次 matchMedia 监听;isDark getter 内响应式读取 → auto 下随系统实时翻。\nconst prefersDark = usePreferredDark()\n\nexport type Density = 'comfortable' | 'compact'\nexport type FormStyle = 'modal' | 'drawer'\nexport type Locale = 'zh-CN' | 'en-US'\nexport type ThemeScheme = 'light' | 'dark' | 'auto'\nexport type PageTransition = 'fade' | 'fade-slide' | 'none'\nexport type LayoutMode =\n | 'vertical'\n | 'vertical-mix'\n | 'vertical-hybrid-header-first'\n | 'horizontal'\n | 'top-hybrid-sidebar-first'\n | 'top-hybrid-header-first'\n\n/** 布局模式全集(单一来源:抽屉卡片、布局 shell、持久化值校验共用)。 */\nexport const LAYOUT_MODES: LayoutMode[] = [\n 'vertical',\n 'vertical-mix',\n 'vertical-hybrid-header-first',\n 'horizontal',\n 'top-hybrid-sidebar-first',\n 'top-hybrid-header-first',\n]\n\n/** 可被\"恢复默认\"重置的外观项(不含 locale / collapsed,那两项按会话保留)。 */\nconst DEFAULTS = {\n themeScheme: 'auto' as ThemeScheme,\n accent: ACCENTS[0] as string,\n density: 'compact' as Density, // 系统设置密度默认使用紧凑档,提升后台列表与表单的信息密度。\n layoutMode: 'vertical' as LayoutMode,\n showBreadcrumb: true,\n showTabs: true,\n fixedHeader: true,\n pageTransition: 'fade' as PageTransition,\n grayscale: false,\n watermark: false,\n watermarkText: '',\n // FormContainer 的全局形态偏好(弹窗/抽屉);组件可 per-instance 覆盖。\n formStyle: 'modal' as FormStyle,\n}\n\n/** UI 偏好:主题模式 / 主色 / 密度 / 布局 / 界面开关 / 折叠 / 语言。持久化(localStorage key \"app\")。 */\nexport const useAppStore = defineStore('app', {\n state: () => ({\n ...DEFAULTS,\n collapsed: false,\n locale: 'zh-CN' as Locale,\n }),\n getters: {\n // auto 时按系统深浅色实时解析(prefersDark 是响应式 ref,getter 是 computed → 随之更新)。\n isDark(state): boolean {\n return state.themeScheme === 'auto' ? prefersDark.value : state.themeScheme === 'dark'\n },\n },\n actions: {\n setThemeScheme(s: ThemeScheme) {\n this.themeScheme = s\n },\n // 顶栏快捷切换:在当前生效的深浅色基础上翻到明确的一侧。\n toggleDark() {\n this.themeScheme = this.isDark ? 'light' : 'dark'\n },\n setAccent(hex: string) {\n this.accent = hex\n },\n setDensity(d: Density) {\n this.density = d\n },\n setLocale(l: Locale) {\n this.locale = l\n },\n toggleCollapsed() {\n this.collapsed = !this.collapsed\n },\n setLayoutMode(m: LayoutMode) {\n this.layoutMode = m\n },\n // 抽屉\"恢复默认\":还原外观项,保留 locale / collapsed。其余布尔项由抽屉 v-model 直接改。\n resetSettings() {\n Object.assign(this, DEFAULTS)\n },\n // 导出当前外观配置(DEFAULTS 同名键的现值);抽屉「复制配置」用,粘回 app.ts DEFAULTS 即为新默认。\n exportSettings(): Record<keyof typeof DEFAULTS, unknown> {\n const keys = Object.keys(DEFAULTS) as (keyof typeof DEFAULTS)[]\n return Object.fromEntries(keys.map(k => [k, this[k]])) as Record<\n keyof typeof DEFAULTS,\n unknown\n >\n },\n },\n persist: {\n // localStorage 里的值不受代码约束:布局模式不在 LAYOUT_MODES、主色不在 ACCENTS 的,回落默认。\n afterHydrate: ({ store }) => {\n if (!LAYOUT_MODES.includes(store.layoutMode)) store.layoutMode = 'vertical'\n if (!(ACCENTS as readonly string[]).includes(store.accent)) store.accent = ACCENTS[0]\n },\n },\n})\n"],"names":["prefersDark","usePreferredDark","LAYOUT_MODES","DEFAULTS","ACCENTS","useAppStore","defineStore","state","s","hex","d","l","m","keys","k","store"],"mappings":";;;AAKA,MAAMA,IAAcC,EAAA,GAgBPC,IAA6B;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAGMC,IAAW;AAAA,EACf,aAAa;AAAA,EACb,QAAQC,EAAQ,CAAC;AAAA,EACjB,SAAS;AAAA;AAAA,EACT,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,WAAW;AAAA,EACX,eAAe;AAAA;AAAA,EAEf,WAAW;AACb,GAGaC,IAAcC,EAAY,OAAO;AAAA,EAC5C,OAAO,OAAO;AAAA,IACZ,GAAGH;AAAA,IACH,WAAW;AAAA,IACX,QAAQ;AAAA,EAAA;AAAA,EAEV,SAAS;AAAA;AAAA,IAEP,OAAOI,GAAgB;AACrB,aAAOA,EAAM,gBAAgB,SAASP,EAAY,QAAQO,EAAM,gBAAgB;AAAA,IAClF;AAAA,EAAA;AAAA,EAEF,SAAS;AAAA,IACP,eAAeC,GAAgB;AAC7B,WAAK,cAAcA;AAAA,IACrB;AAAA;AAAA,IAEA,aAAa;AACX,WAAK,cAAc,KAAK,SAAS,UAAU;AAAA,IAC7C;AAAA,IACA,UAAUC,GAAa;AACrB,WAAK,SAASA;AAAA,IAChB;AAAA,IACA,WAAWC,GAAY;AACrB,WAAK,UAAUA;AAAA,IACjB;AAAA,IACA,UAAUC,GAAW;AACnB,WAAK,SAASA;AAAA,IAChB;AAAA,IACA,kBAAkB;AAChB,WAAK,YAAY,CAAC,KAAK;AAAA,IACzB;AAAA,IACA,cAAcC,GAAe;AAC3B,WAAK,aAAaA;AAAA,IACpB;AAAA;AAAA,IAEA,gBAAgB;AACd,aAAO,OAAO,MAAMT,CAAQ;AAAA,IAC9B;AAAA;AAAA,IAEA,iBAAyD;AACvD,YAAMU,IAAO,OAAO,KAAKV,CAAQ;AACjC,aAAO,OAAO,YAAYU,EAAK,IAAI,CAAAC,MAAK,CAACA,GAAG,KAAKA,CAAC,CAAC,CAAC,CAAC;AAAA,IAIvD;AAAA,EAAA;AAAA,EAEF,SAAS;AAAA;AAAA,IAEP,cAAc,CAAC,EAAE,OAAAC,QAAY;AAC3B,MAAKb,EAAa,SAASa,EAAM,UAAU,QAAS,aAAa,aAC3DX,EAA8B,SAASW,EAAM,MAAM,MAAGA,EAAM,SAASX,EAAQ,CAAC;AAAA,IACtF;AAAA,EAAA;AAEJ,CAAC;"}
@@ -0,0 +1,106 @@
1
+ import { AppModule, MenuNode } from '../types/menu';
2
+ /**
3
+ * 授权态:模块 / 菜单树 / 权限码 / 路由是否已建。
4
+ * **只持久化 currentModuleId 一项**——F5/深链时守卫据它重建"上次所在应用"的动态路由,
5
+ * 跨应用深链(默认应用 ≠ 当前应用)才不会落 404。
6
+ * menuTree/modules/routesReady 一律不持久化:动态路由只活在 router 内存里,刷新后由守卫重建;
7
+ * 尤其 routesReady 若被持久化成 true,F5 会跳过重建导致每条动态路由 404。
8
+ */
9
+ export declare const useAuthStore: import('pinia').StoreDefinition<"auth", {
10
+ modules: AppModule[];
11
+ currentModuleId: number | null;
12
+ defaultModuleId: number | null;
13
+ menuTree: MenuNode[];
14
+ permissionCodes: string[];
15
+ permissionsLoaded: boolean;
16
+ isSuperAdmin: boolean;
17
+ routesReady: boolean;
18
+ }, {
19
+ /**
20
+ * 当前应用的首页:模块自己的 DefaultRoute → 菜单树第一个叶子 → 应用选择器兜底。
21
+ * 每个应用一个首页,所以 '/' 的落点不能写死(由守卫在路由就绪后取用,见 router/index.ts)。
22
+ * 兜底是 /module 而非某个固定页:一个菜单都没配的应用没有首页可言,把人送回选择器,
23
+ * 好过让他撞上一个"不属于本应用"的路径吃 404。
24
+ */
25
+ homePath(state: {
26
+ modules: {
27
+ id: number;
28
+ code: string;
29
+ title: string;
30
+ icon?: string | undefined;
31
+ defaultRoute?: string | undefined;
32
+ sort: number;
33
+ }[];
34
+ currentModuleId: number | null;
35
+ defaultModuleId: number | null;
36
+ menuTree: {
37
+ id: number;
38
+ parentId: number;
39
+ type: import('../types/menu').MenuType;
40
+ title: string;
41
+ path?: string | undefined;
42
+ component?: string | undefined;
43
+ icon?: string | undefined;
44
+ sort: number;
45
+ visible: boolean;
46
+ children: /*elided*/ any[];
47
+ }[];
48
+ permissionCodes: string[];
49
+ permissionsLoaded: boolean;
50
+ isSuperAdmin: boolean;
51
+ routesReady: boolean;
52
+ } & import('pinia').PiniaCustomStateProperties<{
53
+ modules: AppModule[];
54
+ currentModuleId: number | null;
55
+ defaultModuleId: number | null;
56
+ menuTree: MenuNode[];
57
+ permissionCodes: string[];
58
+ permissionsLoaded: boolean;
59
+ isSuperAdmin: boolean;
60
+ routesReady: boolean;
61
+ }>): string;
62
+ /**
63
+ * 按钮级权限判定(v-auth 指令与 render 函数内按钮共用同一套规则)。
64
+ * 超管 → 全放行;取码失败/未加载 → fail-closed(不谎报"有");否则精确命中权限码(= 规范化路由)。
65
+ * render 函数里 v-auth 指令用不了,按钮需调本 getter 做条件渲染,故显隐规则必须收敛到这一处。
66
+ */
67
+ hasPerm(state: {
68
+ modules: {
69
+ id: number;
70
+ code: string;
71
+ title: string;
72
+ icon?: string | undefined;
73
+ defaultRoute?: string | undefined;
74
+ sort: number;
75
+ }[];
76
+ currentModuleId: number | null;
77
+ defaultModuleId: number | null;
78
+ menuTree: {
79
+ id: number;
80
+ parentId: number;
81
+ type: import('../types/menu').MenuType;
82
+ title: string;
83
+ path?: string | undefined;
84
+ component?: string | undefined;
85
+ icon?: string | undefined;
86
+ sort: number;
87
+ visible: boolean;
88
+ children: /*elided*/ any[];
89
+ }[];
90
+ permissionCodes: string[];
91
+ permissionsLoaded: boolean;
92
+ isSuperAdmin: boolean;
93
+ routesReady: boolean;
94
+ } & import('pinia').PiniaCustomStateProperties<{
95
+ modules: AppModule[];
96
+ currentModuleId: number | null;
97
+ defaultModuleId: number | null;
98
+ menuTree: MenuNode[];
99
+ permissionCodes: string[];
100
+ permissionsLoaded: boolean;
101
+ isSuperAdmin: boolean;
102
+ routesReady: boolean;
103
+ }>): (code: string) => boolean;
104
+ }, {
105
+ reset(): void;
106
+ }>;
@@ -0,0 +1,59 @@
1
+ import { defineStore as t } from "pinia";
2
+ import { useTabsStore as u } from "./tabs.js";
3
+ function d(e) {
4
+ var s, i;
5
+ for (const r of e) {
6
+ if (r.path && !((s = r.children) != null && s.length)) return r.path;
7
+ const o = (i = r.children) != null && i.length ? d(r.children) : void 0;
8
+ if (o) return o;
9
+ }
10
+ }
11
+ const a = t("auth", {
12
+ state: () => ({
13
+ modules: [],
14
+ currentModuleId: null,
15
+ // 用户的默认应用(后端 SysUser.DefaultModuleId),随 enterInitial 拉取;不持久化,仅供选择页标记。
16
+ defaultModuleId: null,
17
+ menuTree: [],
18
+ // 登录进门户时由 useModule.enterInitial 填入(GET /personal/permissions);超管为空集 → v-auth fail-open,服务端 sadm 兜底。
19
+ permissionCodes: [],
20
+ // 权限码是否已成功拉取。区分"取码失败/未加载"(fail-closed 藏按钮)与"已加载"(按码匹配)。
21
+ // 不持久化——F5 后由守卫重新拉取。
22
+ permissionsLoaded: !1,
23
+ // 当前用户是否超管;由 enterInitial 经 /personal/profile 填入,不持久化。
24
+ // v-auth 只对超管 fail-open;普通用户空集则按码匹配(必然不命中 → 隐藏),避免"空集=超管"的误放行。
25
+ isSuperAdmin: !1,
26
+ routesReady: !1
27
+ }),
28
+ getters: {
29
+ /**
30
+ * 当前应用的首页:模块自己的 DefaultRoute → 菜单树第一个叶子 → 应用选择器兜底。
31
+ * 每个应用一个首页,所以 '/' 的落点不能写死(由守卫在路由就绪后取用,见 router/index.ts)。
32
+ * 兜底是 /module 而非某个固定页:一个菜单都没配的应用没有首页可言,把人送回选择器,
33
+ * 好过让他撞上一个"不属于本应用"的路径吃 404。
34
+ */
35
+ homePath(e) {
36
+ const s = e.modules.find((i) => i.id === e.currentModuleId);
37
+ return (s == null ? void 0 : s.defaultRoute) || d(e.menuTree) || "/module";
38
+ },
39
+ /**
40
+ * 按钮级权限判定(v-auth 指令与 render 函数内按钮共用同一套规则)。
41
+ * 超管 → 全放行;取码失败/未加载 → fail-closed(不谎报"有");否则精确命中权限码(= 规范化路由)。
42
+ * render 函数里 v-auth 指令用不了,按钮需调本 getter 做条件渲染,故显隐规则必须收敛到这一处。
43
+ */
44
+ hasPerm(e) {
45
+ return (s) => e.isSuperAdmin ? !0 : e.permissionsLoaded && e.permissionCodes.includes(s);
46
+ }
47
+ },
48
+ actions: {
49
+ reset() {
50
+ this.modules = [], this.currentModuleId = null, this.defaultModuleId = null, this.menuTree = [], this.permissionCodes = [], this.permissionsLoaded = !1, this.isSuperAdmin = !1, this.routesReady = !1, u().clearTabs();
51
+ }
52
+ },
53
+ // 仅存 currentModuleId(见上方注释);routesReady/menuTree 绝不入库,否则 F5 跳过重建。
54
+ persist: { pick: ["currentModuleId"] }
55
+ });
56
+ export {
57
+ a as useAuthStore
58
+ };
59
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sources":["../../src/stores/auth.ts"],"sourcesContent":["import { defineStore } from 'pinia'\nimport type { AppModule, MenuNode } from '#/types/menu'\nimport { useTabsStore } from '#/stores/tabs'\n\nfunction firstLeafPath(tree: MenuNode[]): string | undefined {\n for (const n of tree) {\n if (n.path && !n.children?.length) return n.path\n const deeper = n.children?.length ? firstLeafPath(n.children) : undefined\n if (deeper) return deeper\n }\n return undefined\n}\n\n/**\n * 授权态:模块 / 菜单树 / 权限码 / 路由是否已建。\n * **只持久化 currentModuleId 一项**——F5/深链时守卫据它重建\"上次所在应用\"的动态路由,\n * 跨应用深链(默认应用 ≠ 当前应用)才不会落 404。\n * menuTree/modules/routesReady 一律不持久化:动态路由只活在 router 内存里,刷新后由守卫重建;\n * 尤其 routesReady 若被持久化成 true,F5 会跳过重建导致每条动态路由 404。\n */\nexport const useAuthStore = defineStore('auth', {\n state: () => ({\n modules: [] as AppModule[],\n currentModuleId: null as number | null,\n // 用户的默认应用(后端 SysUser.DefaultModuleId),随 enterInitial 拉取;不持久化,仅供选择页标记。\n defaultModuleId: null as number | null,\n menuTree: [] as MenuNode[],\n // 登录进门户时由 useModule.enterInitial 填入(GET /personal/permissions);超管为空集 → v-auth fail-open,服务端 sadm 兜底。\n permissionCodes: [] as string[],\n // 权限码是否已成功拉取。区分\"取码失败/未加载\"(fail-closed 藏按钮)与\"已加载\"(按码匹配)。\n // 不持久化——F5 后由守卫重新拉取。\n permissionsLoaded: false,\n // 当前用户是否超管;由 enterInitial 经 /personal/profile 填入,不持久化。\n // v-auth 只对超管 fail-open;普通用户空集则按码匹配(必然不命中 → 隐藏),避免\"空集=超管\"的误放行。\n isSuperAdmin: false,\n routesReady: false,\n }),\n getters: {\n /**\n * 当前应用的首页:模块自己的 DefaultRoute → 菜单树第一个叶子 → 应用选择器兜底。\n * 每个应用一个首页,所以 '/' 的落点不能写死(由守卫在路由就绪后取用,见 router/index.ts)。\n * 兜底是 /module 而非某个固定页:一个菜单都没配的应用没有首页可言,把人送回选择器,\n * 好过让他撞上一个\"不属于本应用\"的路径吃 404。\n */\n homePath(state): string {\n const m = state.modules.find(x => x.id === state.currentModuleId)\n return m?.defaultRoute || firstLeafPath(state.menuTree) || '/module'\n },\n /**\n * 按钮级权限判定(v-auth 指令与 render 函数内按钮共用同一套规则)。\n * 超管 → 全放行;取码失败/未加载 → fail-closed(不谎报\"有\");否则精确命中权限码(= 规范化路由)。\n * render 函数里 v-auth 指令用不了,按钮需调本 getter 做条件渲染,故显隐规则必须收敛到这一处。\n */\n hasPerm(state): (code: string) => boolean {\n return code =>\n state.isSuperAdmin ? true : state.permissionsLoaded && state.permissionCodes.includes(code)\n },\n },\n actions: {\n reset() {\n this.modules = []\n this.currentModuleId = null\n this.defaultModuleId = null\n this.menuTree = []\n this.permissionCodes = []\n this.permissionsLoaded = false\n this.isSuperAdmin = false\n this.routesReady = false\n useTabsStore().clearTabs() // 登出销毁授权态时一并清标签(reset 仅登出路径调用,故不会在 F5 误清)\n },\n },\n // 仅存 currentModuleId(见上方注释);routesReady/menuTree 绝不入库,否则 F5 跳过重建。\n persist: { pick: ['currentModuleId'] },\n})\n"],"names":["firstLeafPath","tree","n","_a","deeper","_b","useAuthStore","defineStore","state","m","x","code","useTabsStore"],"mappings":";;AAIA,SAASA,EAAcC,GAAsC;;AAC3D,aAAWC,KAAKD,GAAM;AACpB,QAAIC,EAAE,QAAQ,GAACC,IAAAD,EAAE,aAAF,QAAAC,EAAY,gBAAeD,EAAE;AAC5C,UAAME,KAASC,IAAAH,EAAE,aAAF,QAAAG,EAAY,SAASL,EAAcE,EAAE,QAAQ,IAAI;AAChE,QAAIE,EAAQ,QAAOA;AAAA,EACrB;AAEF;AASO,MAAME,IAAeC,EAAY,QAAQ;AAAA,EAC9C,OAAO,OAAO;AAAA,IACZ,SAAS,CAAA;AAAA,IACT,iBAAiB;AAAA;AAAA,IAEjB,iBAAiB;AAAA,IACjB,UAAU,CAAA;AAAA;AAAA,IAEV,iBAAiB,CAAA;AAAA;AAAA;AAAA,IAGjB,mBAAmB;AAAA;AAAA;AAAA,IAGnB,cAAc;AAAA,IACd,aAAa;AAAA,EAAA;AAAA,EAEf,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOP,SAASC,GAAe;AACtB,YAAMC,IAAID,EAAM,QAAQ,KAAK,OAAKE,EAAE,OAAOF,EAAM,eAAe;AAChE,cAAOC,KAAA,gBAAAA,EAAG,iBAAgBT,EAAcQ,EAAM,QAAQ,KAAK;AAAA,IAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,QAAQA,GAAkC;AACxC,aAAO,CAAAG,MACLH,EAAM,eAAe,KAAOA,EAAM,qBAAqBA,EAAM,gBAAgB,SAASG,CAAI;AAAA,IAC9F;AAAA,EAAA;AAAA,EAEF,SAAS;AAAA,IACP,QAAQ;AACN,WAAK,UAAU,CAAA,GACf,KAAK,kBAAkB,MACvB,KAAK,kBAAkB,MACvB,KAAK,WAAW,CAAA,GAChB,KAAK,kBAAkB,CAAA,GACvB,KAAK,oBAAoB,IACzB,KAAK,eAAe,IACpB,KAAK,cAAc,IACnBC,EAAA,EAAe,UAAA;AAAA,IACjB;AAAA,EAAA;AAAA;AAAA,EAGF,SAAS,EAAE,MAAM,CAAC,iBAAiB,EAAA;AACrC,CAAC;"}
@@ -0,0 +1,11 @@
1
+ import { ComputedRef, MaybeRefOrGetter } from 'vue';
2
+ import { DictItem } from '../types/api';
3
+ export declare const useDictStore: import('pinia').StoreDefinition<"dict", {
4
+ cache: Record<string, DictItem[]>;
5
+ }, {}, {
6
+ load(typeCode: string): Promise<DictItem[]>;
7
+ /** 字典管理页增删改后调用;不传清全部。连同 pending 一起清,防失效后新 load 命中旧的在途请求。 */
8
+ invalidate(typeCode?: string): void;
9
+ }>;
10
+ /** setup 糖:触发加载并返回响应式字典项;typeCode 可为 ref/getter(级联场景变化自动加载)。失败静默——字典是配角,下拉留空不打断主流程;要提示的页面自己 load().catch。 */
11
+ export declare function useDictOptions(typeCode: MaybeRefOrGetter<string>): ComputedRef<DictItem[]>;
@@ -0,0 +1,36 @@
1
+ import { watchEffect as s, toValue as a, computed as h } from "vue";
2
+ import { defineStore as f } from "pinia";
3
+ import { dictApi as o } from "../api/index.js";
4
+ const c = /* @__PURE__ */ new Map(), l = f("dict", {
5
+ state: () => ({ cache: {} }),
6
+ actions: {
7
+ async load(t) {
8
+ const i = this.cache[t];
9
+ if (i) return i;
10
+ let n = c.get(t);
11
+ if (!n) {
12
+ const e = o.items(t).then((r) => (c.get(t) === e && (this.cache[t] = r), r)).finally(() => {
13
+ c.get(t) === e && c.delete(t);
14
+ });
15
+ c.set(t, e), n = e;
16
+ }
17
+ return n;
18
+ },
19
+ /** 字典管理页增删改后调用;不传清全部。连同 pending 一起清,防失效后新 load 命中旧的在途请求。 */
20
+ invalidate(t) {
21
+ t ? (delete this.cache[t], c.delete(t)) : (this.cache = {}, c.clear());
22
+ }
23
+ }
24
+ });
25
+ function d(t) {
26
+ const i = l();
27
+ return s(() => {
28
+ i.load(a(t)).catch(() => {
29
+ });
30
+ }), h(() => i.cache[a(t)] ?? []);
31
+ }
32
+ export {
33
+ d as useDictOptions,
34
+ l as useDictStore
35
+ };
36
+ //# sourceMappingURL=dict.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dict.js","sources":["../../src/stores/dict.ts"],"sourcesContent":["// 字典缓存(会话级内存缓存,不持久化——字典是服务端数据,进 localStorage 只会陈旧):\n// load 命中缓存直接回;进行中共享同一 Promise(并发去重);失败不写缓存、清 pending →\n// 下次访问自然重试(被动重试,不做定时/退避)。字典管理页增删改后调 invalidate 失效。\nimport { computed, toValue, watchEffect, type ComputedRef, type MaybeRefOrGetter } from 'vue'\nimport { defineStore } from 'pinia'\nimport { dictApi } from '#/api'\nimport type { DictItem } from '#/types/api'\n\n// 并发去重表:模块级,不进 state(Promise 不该进 devtools/持久化序列化)。\nconst pending = new Map<string, Promise<DictItem[]>>()\n\nexport const useDictStore = defineStore('dict', {\n state: () => ({ cache: {} as Record<string, DictItem[]> }),\n actions: {\n async load(typeCode: string): Promise<DictItem[]> {\n const hit = this.cache[typeCode]\n if (hit) return hit\n let p = pending.get(typeCode)\n if (!p) {\n const req: Promise<DictItem[]> = dictApi\n .items(typeCode)\n .then(items => {\n // 失效竞态守卫:invalidate 已把本请求从 pending 摘除时,在途结果不得写回(旧数据)。\n if (pending.get(typeCode) === req) this.cache[typeCode] = items\n return items\n })\n .finally(() => {\n if (pending.get(typeCode) === req) pending.delete(typeCode)\n })\n pending.set(typeCode, req)\n p = req\n }\n return p\n },\n /** 字典管理页增删改后调用;不传清全部。连同 pending 一起清,防失效后新 load 命中旧的在途请求。 */\n invalidate(typeCode?: string) {\n if (typeCode) {\n delete this.cache[typeCode]\n pending.delete(typeCode)\n } else {\n this.cache = {}\n pending.clear()\n }\n },\n },\n})\n\n/** setup 糖:触发加载并返回响应式字典项;typeCode 可为 ref/getter(级联场景变化自动加载)。失败静默——字典是配角,下拉留空不打断主流程;要提示的页面自己 load().catch。 */\nexport function useDictOptions(typeCode: MaybeRefOrGetter<string>): ComputedRef<DictItem[]> {\n const store = useDictStore()\n watchEffect(() => {\n void store.load(toValue(typeCode)).catch(() => {})\n })\n return computed(() => store.cache[toValue(typeCode)] ?? [])\n}\n"],"names":["pending","useDictStore","defineStore","typeCode","hit","p","req","dictApi","items","useDictOptions","store","watchEffect","toValue","computed"],"mappings":";;;AASA,MAAMA,wBAAc,IAAA,GAEPC,IAAeC,EAAY,QAAQ;AAAA,EAC9C,OAAO,OAAO,EAAE,OAAO,CAAA;EACvB,SAAS;AAAA,IACP,MAAM,KAAKC,GAAuC;AAChD,YAAMC,IAAM,KAAK,MAAMD,CAAQ;AAC/B,UAAIC,EAAK,QAAOA;AAChB,UAAIC,IAAIL,EAAQ,IAAIG,CAAQ;AAC5B,UAAI,CAACE,GAAG;AACN,cAAMC,IAA2BC,EAC9B,MAAMJ,CAAQ,EACd,KAAK,CAAAK,OAEAR,EAAQ,IAAIG,CAAQ,MAAMG,MAAK,KAAK,MAAMH,CAAQ,IAAIK,IACnDA,EACR,EACA,QAAQ,MAAM;AACb,UAAIR,EAAQ,IAAIG,CAAQ,MAAMG,KAAKN,EAAQ,OAAOG,CAAQ;AAAA,QAC5D,CAAC;AACH,QAAAH,EAAQ,IAAIG,GAAUG,CAAG,GACzBD,IAAIC;AAAA,MACN;AACA,aAAOD;AAAA,IACT;AAAA;AAAA,IAEA,WAAWF,GAAmB;AAC5B,MAAIA,KACF,OAAO,KAAK,MAAMA,CAAQ,GAC1BH,EAAQ,OAAOG,CAAQ,MAEvB,KAAK,QAAQ,CAAA,GACbH,EAAQ,MAAA;AAAA,IAEZ;AAAA,EAAA;AAEJ,CAAC;AAGM,SAASS,EAAeN,GAA6D;AAC1F,QAAMO,IAAQT,EAAA;AACd,SAAAU,EAAY,MAAM;AAChB,IAAKD,EAAM,KAAKE,EAAQT,CAAQ,CAAC,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EACnD,CAAC,GACMU,EAAS,MAAMH,EAAM,MAAME,EAAQT,CAAQ,CAAC,KAAK,EAAE;AAC5D;"}
@@ -0,0 +1,53 @@
1
+ import { RouteLocationNormalized } from 'vue-router';
2
+ export interface TabItem {
3
+ path: string;
4
+ fullPath: string;
5
+ title: string;
6
+ name: string;
7
+ icon?: string;
8
+ affix?: boolean;
9
+ pinned?: boolean;
10
+ titleFixed?: boolean;
11
+ noCache?: boolean;
12
+ }
13
+ /**
14
+ * 多标签页会话:标签列表 + keep-alive 缓存名。sessionStorage 持久化(F5 恢复,新标签页从净态开始)。
15
+ * 首页标签不写死:每个应用首页不同(homePath()),故 affix 在 addTab 时按当前应用判定。
16
+ */
17
+ export declare const useTabsStore: import('pinia').StoreDefinition<"tabs", {
18
+ tabs: TabItem[];
19
+ reloadKey: number;
20
+ excludeName: string;
21
+ }, {
22
+ cachedNames(state: {
23
+ tabs: {
24
+ path: string;
25
+ fullPath: string;
26
+ title: string;
27
+ name: string;
28
+ icon?: string | undefined;
29
+ affix?: boolean | undefined;
30
+ pinned?: boolean | undefined;
31
+ titleFixed?: boolean | undefined;
32
+ noCache?: boolean | undefined;
33
+ }[];
34
+ reloadKey: number;
35
+ excludeName: string;
36
+ } & import('pinia').PiniaCustomStateProperties<{
37
+ tabs: TabItem[];
38
+ reloadKey: number;
39
+ excludeName: string;
40
+ }>): string[];
41
+ }, {
42
+ addTab(route: RouteLocationNormalized): void;
43
+ removeTab(path: string): void;
44
+ closeOthers(path: string): void;
45
+ closeAll(): void;
46
+ closeLeft(path: string): void;
47
+ closeRight(path: string): void;
48
+ togglePin(path: string): void;
49
+ _ensureActive(preferPath: string): void;
50
+ refreshTab(name: string): void;
51
+ setTitle(path: string, title: string): void;
52
+ clearTabs(): void;
53
+ }>;
@@ -0,0 +1,88 @@
1
+ import { defineStore as o } from "pinia";
2
+ import { router as n } from "../router/index.js";
3
+ import { useAuthStore as f } from "./auth.js";
4
+ const u = o("tabs", {
5
+ state: () => ({
6
+ tabs: [],
7
+ reloadKey: 0,
8
+ // 变更 → 强制页面重挂(refreshTab)
9
+ excludeName: ""
10
+ // 临时逐出 keep-alive 实例(refreshTab)
11
+ }),
12
+ getters: {
13
+ // 供 keep-alive :include。noCache 标签(详情等瞬时页)排除出缓存;再剪掉 F5 重建期失效的名。
14
+ cachedNames(s) {
15
+ return s.tabs.filter((t) => !t.noCache).map((t) => t.name).filter((t) => n.hasRoute(t));
16
+ }
17
+ },
18
+ actions: {
19
+ addTab(s) {
20
+ const t = String(s.name ?? "");
21
+ if (!t) return;
22
+ const e = s.path, i = s.meta.title || t || e, h = s.meta.icon, a = this.tabs.find((r) => r.path === e);
23
+ a ? (a.fullPath = s.fullPath, a.titleFixed || (a.title = i), h && (a.icon = h)) : this.tabs.push({
24
+ path: e,
25
+ fullPath: s.fullPath,
26
+ title: i,
27
+ name: t,
28
+ icon: h,
29
+ affix: e === f().homePath,
30
+ noCache: s.meta.noCache === !0
31
+ // 详情等瞬时页不进 keep-alive
32
+ });
33
+ },
34
+ removeTab(s) {
35
+ const t = this.tabs.findIndex((i) => i.path === s);
36
+ if (t === -1 || this.tabs[t].affix || this.tabs[t].pinned) return;
37
+ const e = n.currentRoute.value.path === s;
38
+ if (this.tabs.splice(t, 1), e) {
39
+ const i = this.tabs[t] ?? this.tabs[t - 1] ?? this.tabs[0];
40
+ n.push(i.fullPath);
41
+ }
42
+ },
43
+ closeOthers(s) {
44
+ this.tabs = this.tabs.filter((t) => t.affix || t.pinned || t.path === s), this._ensureActive(s);
45
+ },
46
+ closeAll() {
47
+ this.tabs = this.tabs.filter((s) => s.affix || s.pinned), this._ensureActive(f().homePath);
48
+ },
49
+ closeLeft(s) {
50
+ const t = this.tabs.findIndex((e) => e.path === s);
51
+ t <= 0 || (this.tabs = this.tabs.filter((e, i) => e.affix || e.pinned || i >= t), this._ensureActive(s));
52
+ },
53
+ closeRight(s) {
54
+ const t = this.tabs.findIndex((e) => e.path === s);
55
+ t !== -1 && (this.tabs = this.tabs.filter((e, i) => e.affix || e.pinned || i <= t), this._ensureActive(s));
56
+ },
57
+ // 用户手动固定/取消固定(右键菜单);应用首页 affix 恒固定,不受此影响。
58
+ togglePin(s) {
59
+ const t = this.tabs.find((e) => e.path === s);
60
+ t && !t.affix && (t.pinned = !t.pinned);
61
+ },
62
+ // 当前激活标签被批量关闭后,导航到 preferPath(通常是右键的那个)或末尾标签。
63
+ _ensureActive(s) {
64
+ const t = n.currentRoute.value.path;
65
+ if (this.tabs.some((i) => i.path === t)) return;
66
+ const e = this.tabs.find((i) => i.path === s) ?? this.tabs[this.tabs.length - 1];
67
+ e && n.push(e.fullPath);
68
+ },
69
+ // 逐出缓存实例并发信号;default.vue 监听 reloadKey 做 v-if 重挂,重挂后清 excludeName。
70
+ refreshTab(s) {
71
+ this.excludeName = s, this.reloadKey++;
72
+ },
73
+ // 详情页数据加载后设置动态标签标题(如记录名);titleFixed 防 addTab 复访用 meta.title 覆盖回去。
74
+ setTitle(s, t) {
75
+ const e = this.tabs.find((i) => i.path === s);
76
+ e && (e.title = t, e.titleFixed = !0);
77
+ },
78
+ // 切应用/登出:标签清空。新应用首页由 router.afterEach 的 addTab 自然补成第一个(affix)标签。
79
+ clearTabs() {
80
+ this.tabs = [];
81
+ }
82
+ },
83
+ persist: { storage: sessionStorage, pick: ["tabs"] }
84
+ });
85
+ export {
86
+ u as useTabsStore
87
+ };
88
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","sources":["../../src/stores/tabs.ts"],"sourcesContent":["import { defineStore } from 'pinia'\nimport type { RouteLocationNormalized } from 'vue-router'\nimport { router } from '#/router'\nimport { useAuthStore } from '#/stores/auth'\n\nexport interface TabItem {\n path: string // 主键(与 keep-alive 单实例一致)\n fullPath: string // 最后一次访问的完整 URL(含 query),点击标签时导航到此\n title: string // 原始 meta.title(可能是 i18n key)\n name: string // 路由名 → keep-alive include\n icon?: string\n affix?: boolean // 固定标签(= 当前应用的首页),不可关闭\n pinned?: boolean // 用户手动固定(右键「固定」);与 affix 同样不可关闭,但可取消固定\n titleFixed?: boolean // setTitle 置真:动态标题(如记录名),addTab 复访不再用 meta.title 覆盖\n noCache?: boolean // meta.noCache:排除出 keep-alive(详情等瞬时页,复访本就该拉新数据)\n}\n\n/**\n * 多标签页会话:标签列表 + keep-alive 缓存名。sessionStorage 持久化(F5 恢复,新标签页从净态开始)。\n * 首页标签不写死:每个应用首页不同(homePath()),故 affix 在 addTab 时按当前应用判定。\n */\nexport const useTabsStore = defineStore('tabs', {\n state: () => ({\n tabs: [] as TabItem[],\n reloadKey: 0, // 变更 → 强制页面重挂(refreshTab)\n excludeName: '', // 临时逐出 keep-alive 实例(refreshTab)\n }),\n getters: {\n // 供 keep-alive :include。noCache 标签(详情等瞬时页)排除出缓存;再剪掉 F5 重建期失效的名。\n cachedNames(state): string[] {\n return state.tabs\n .filter(t => !t.noCache)\n .map(t => t.name)\n .filter(n => router.hasRoute(n))\n },\n },\n actions: {\n addTab(route: RouteLocationNormalized) {\n const name = String(route.name ?? '')\n if (!name) return\n const path = route.path\n const title = (route.meta.title as string) || name || path\n const icon = route.meta.icon as string | undefined\n const existing = this.tabs.find(t => t.path === path)\n if (existing) {\n existing.fullPath = route.fullPath\n if (!existing.titleFixed) existing.title = title // 动态标题(setTitle 设过)不被 meta.title 复访覆盖\n if (icon) existing.icon = icon\n } else {\n // 当前应用的首页 → 固定标签,不可关闭(每个应用各有一个)\n this.tabs.push({\n path,\n fullPath: route.fullPath,\n title,\n name,\n icon,\n affix: path === useAuthStore().homePath,\n noCache: route.meta.noCache === true, // 详情等瞬时页不进 keep-alive\n })\n }\n },\n removeTab(path: string) {\n const idx = this.tabs.findIndex(t => t.path === path)\n if (idx === -1 || this.tabs[idx]!.affix || this.tabs[idx]!.pinned) return\n const wasActive = router.currentRoute.value.path === path\n this.tabs.splice(idx, 1)\n if (wasActive) {\n const next = this.tabs[idx] ?? this.tabs[idx - 1] ?? this.tabs[0]!\n router.push(next.fullPath)\n }\n },\n closeOthers(path: string) {\n this.tabs = this.tabs.filter(t => t.affix || t.pinned || t.path === path)\n this._ensureActive(path)\n },\n closeAll() {\n this.tabs = this.tabs.filter(t => t.affix || t.pinned)\n this._ensureActive(useAuthStore().homePath)\n },\n closeLeft(path: string) {\n const idx = this.tabs.findIndex(t => t.path === path)\n if (idx <= 0) return\n this.tabs = this.tabs.filter((t, i) => t.affix || t.pinned || i >= idx)\n this._ensureActive(path)\n },\n closeRight(path: string) {\n const idx = this.tabs.findIndex(t => t.path === path)\n if (idx === -1) return\n this.tabs = this.tabs.filter((t, i) => t.affix || t.pinned || i <= idx)\n this._ensureActive(path)\n },\n // 用户手动固定/取消固定(右键菜单);应用首页 affix 恒固定,不受此影响。\n togglePin(path: string) {\n const tab = this.tabs.find(t => t.path === path)\n if (tab && !tab.affix) tab.pinned = !tab.pinned\n },\n // 当前激活标签被批量关闭后,导航到 preferPath(通常是右键的那个)或末尾标签。\n _ensureActive(preferPath: string) {\n const cur = router.currentRoute.value.path\n if (this.tabs.some(t => t.path === cur)) return\n const target = this.tabs.find(t => t.path === preferPath) ?? this.tabs[this.tabs.length - 1]\n if (target) router.push(target.fullPath)\n },\n // 逐出缓存实例并发信号;default.vue 监听 reloadKey 做 v-if 重挂,重挂后清 excludeName。\n refreshTab(name: string) {\n this.excludeName = name\n this.reloadKey++\n },\n // 详情页数据加载后设置动态标签标题(如记录名);titleFixed 防 addTab 复访用 meta.title 覆盖回去。\n setTitle(path: string, title: string) {\n const tab = this.tabs.find(t => t.path === path)\n if (!tab) return\n tab.title = title\n tab.titleFixed = true\n },\n // 切应用/登出:标签清空。新应用首页由 router.afterEach 的 addTab 自然补成第一个(affix)标签。\n clearTabs() {\n this.tabs = []\n },\n },\n persist: { storage: sessionStorage, pick: ['tabs'] },\n})\n"],"names":["useTabsStore","defineStore","state","router","n","route","name","path","title","icon","existing","t","useAuthStore","idx","wasActive","next","tab","preferPath","cur","target"],"mappings":";;;AAqBO,MAAMA,IAAeC,EAAY,QAAQ;AAAA,EAC9C,OAAO,OAAO;AAAA,IACZ,MAAM,CAAA;AAAA,IACN,WAAW;AAAA;AAAA,IACX,aAAa;AAAA;AAAA,EAAA;AAAA,EAEf,SAAS;AAAA;AAAA,IAEP,YAAYC,GAAiB;AAC3B,aAAOA,EAAM,KACV,OAAO,OAAK,CAAC,EAAE,OAAO,EACtB,IAAI,CAAA,MAAK,EAAE,IAAI,EACf,OAAO,OAAKC,EAAO,SAASC,CAAC,CAAC;AAAA,IACnC;AAAA,EAAA;AAAA,EAEF,SAAS;AAAA,IACP,OAAOC,GAAgC;AACrC,YAAMC,IAAO,OAAOD,EAAM,QAAQ,EAAE;AACpC,UAAI,CAACC,EAAM;AACX,YAAMC,IAAOF,EAAM,MACbG,IAASH,EAAM,KAAK,SAAoBC,KAAQC,GAChDE,IAAOJ,EAAM,KAAK,MAClBK,IAAW,KAAK,KAAK,KAAK,CAAAC,MAAKA,EAAE,SAASJ,CAAI;AACpD,MAAIG,KACFA,EAAS,WAAWL,EAAM,UACrBK,EAAS,eAAYA,EAAS,QAAQF,IACvCC,QAAe,OAAOA,MAG1B,KAAK,KAAK,KAAK;AAAA,QACb,MAAAF;AAAA,QACA,UAAUF,EAAM;AAAA,QAChB,OAAAG;AAAA,QACA,MAAAF;AAAA,QACA,MAAAG;AAAA,QACA,OAAOF,MAASK,EAAA,EAAe;AAAA,QAC/B,SAASP,EAAM,KAAK,YAAY;AAAA;AAAA,MAAA,CACjC;AAAA,IAEL;AAAA,IACA,UAAUE,GAAc;AACtB,YAAMM,IAAM,KAAK,KAAK,UAAU,CAAAF,MAAKA,EAAE,SAASJ,CAAI;AACpD,UAAIM,MAAQ,MAAM,KAAK,KAAKA,CAAG,EAAG,SAAS,KAAK,KAAKA,CAAG,EAAG,OAAQ;AACnE,YAAMC,IAAYX,EAAO,aAAa,MAAM,SAASI;AAErD,UADA,KAAK,KAAK,OAAOM,GAAK,CAAC,GACnBC,GAAW;AACb,cAAMC,IAAO,KAAK,KAAKF,CAAG,KAAK,KAAK,KAAKA,IAAM,CAAC,KAAK,KAAK,KAAK,CAAC;AAChE,QAAAV,EAAO,KAAKY,EAAK,QAAQ;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,YAAYR,GAAc;AACxB,WAAK,OAAO,KAAK,KAAK,OAAO,CAAA,MAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAASA,CAAI,GACxE,KAAK,cAAcA,CAAI;AAAA,IACzB;AAAA,IACA,WAAW;AACT,WAAK,OAAO,KAAK,KAAK,OAAO,OAAKI,EAAE,SAASA,EAAE,MAAM,GACrD,KAAK,cAAcC,EAAA,EAAe,QAAQ;AAAA,IAC5C;AAAA,IACA,UAAUL,GAAc;AACtB,YAAMM,IAAM,KAAK,KAAK,UAAU,CAAAF,MAAKA,EAAE,SAASJ,CAAI;AACpD,MAAIM,KAAO,MACX,KAAK,OAAO,KAAK,KAAK,OAAO,CAACF,GAAG,MAAMA,EAAE,SAASA,EAAE,UAAU,KAAKE,CAAG,GACtE,KAAK,cAAcN,CAAI;AAAA,IACzB;AAAA,IACA,WAAWA,GAAc;AACvB,YAAMM,IAAM,KAAK,KAAK,UAAU,CAAAF,MAAKA,EAAE,SAASJ,CAAI;AACpD,MAAIM,MAAQ,OACZ,KAAK,OAAO,KAAK,KAAK,OAAO,CAACF,GAAG,MAAMA,EAAE,SAASA,EAAE,UAAU,KAAKE,CAAG,GACtE,KAAK,cAAcN,CAAI;AAAA,IACzB;AAAA;AAAA,IAEA,UAAUA,GAAc;AACtB,YAAMS,IAAM,KAAK,KAAK,KAAK,CAAAL,MAAKA,EAAE,SAASJ,CAAI;AAC/C,MAAIS,KAAO,CAACA,EAAI,UAAOA,EAAI,SAAS,CAACA,EAAI;AAAA,IAC3C;AAAA;AAAA,IAEA,cAAcC,GAAoB;AAChC,YAAMC,IAAMf,EAAO,aAAa,MAAM;AACtC,UAAI,KAAK,KAAK,KAAK,OAAKQ,EAAE,SAASO,CAAG,EAAG;AACzC,YAAMC,IAAS,KAAK,KAAK,KAAK,OAAKR,EAAE,SAASM,CAAU,KAAK,KAAK,KAAK,KAAK,KAAK,SAAS,CAAC;AAC3F,MAAIE,KAAQhB,EAAO,KAAKgB,EAAO,QAAQ;AAAA,IACzC;AAAA;AAAA,IAEA,WAAWb,GAAc;AACvB,WAAK,cAAcA,GACnB,KAAK;AAAA,IACP;AAAA;AAAA,IAEA,SAASC,GAAcC,GAAe;AACpC,YAAMQ,IAAM,KAAK,KAAK,KAAK,CAAAL,MAAKA,EAAE,SAASJ,CAAI;AAC/C,MAAKS,MACLA,EAAI,QAAQR,GACZQ,EAAI,aAAa;AAAA,IACnB;AAAA;AAAA,IAEA,YAAY;AACV,WAAK,OAAO,CAAA;AAAA,IACd;AAAA,EAAA;AAAA,EAEF,SAAS,EAAE,SAAS,gBAAgB,MAAM,CAAC,MAAM,EAAA;AACnD,CAAC;"}
@@ -0,0 +1,64 @@
1
+ import { LoginOutput } from '../types/api';
2
+ interface UserInfo {
3
+ userId: number;
4
+ account: string;
5
+ name: string;
6
+ /** 头像 ViewUrl;登录出参不含,由 useModule.enterInitial 经 /personal/profile 回填,profile 页保存时同步。 */
7
+ avatar?: string | null;
8
+ /** 是否需强制改密(管理员建号/重置后首登为 true);路由守卫据此强制跳改密页。 */
9
+ mustChangePassword: boolean;
10
+ /** 登录时快照的超管标记;profile 故障时 v-auth 用此值 fail-open。 */
11
+ isSuperAdmin?: boolean;
12
+ }
13
+ /**
14
+ * 判定是否为 Cookie 会话:
15
+ * - sessionMode === 'cookie' / csrfRequired === true(后端 AuthCookieService 显式信号)
16
+ * - 或 body 下发了 access 但 refresh 为空(兼容未 regen OpenAPI 的过渡期)
17
+ */
18
+ export declare function isCookieSession(data: Pick<LoginOutput, 'sessionMode' | 'csrfRequired' | 'accessToken' | 'refreshToken'>): boolean;
19
+ /**
20
+ * 令牌 + 用户信息。
21
+ * - 默认模式:持久化 access/refresh 到 localStorage(与历史行为完全一致)。
22
+ * - Cookie 会话:access 仅内存;refresh 在 HttpOnly Cookie;storage 只记 cookieSession 标记,
23
+ * 绝不以 localStorage/sessionStorage 存放 access/refresh。
24
+ */
25
+ export declare const useUserStore: import('pinia').StoreDefinition<"user", {
26
+ accessToken: string;
27
+ refreshToken: string;
28
+ /**
29
+ * Cookie 会话标记(可持久化,不含任何令牌)。
30
+ * F5 后 access 已丢,靠此标记 + HttpOnly refresh Cookie 触发静默刷新。
31
+ */
32
+ cookieSession: boolean;
33
+ userInfo: UserInfo | null;
34
+ }, {
35
+ isLoggedIn: (s: {
36
+ accessToken: string;
37
+ refreshToken: string;
38
+ cookieSession: boolean;
39
+ userInfo: {
40
+ userId: number;
41
+ account: string;
42
+ name: string;
43
+ avatar?: string | null
44
+ /** 是否需强制改密(管理员建号/重置后首登为 true);路由守卫据此强制跳改密页。 */
45
+ | undefined;
46
+ mustChangePassword: boolean;
47
+ isSuperAdmin?: boolean | undefined;
48
+ } | null;
49
+ } & import('pinia').PiniaCustomStateProperties<{
50
+ accessToken: string;
51
+ refreshToken: string;
52
+ /**
53
+ * Cookie 会话标记(可持久化,不含任何令牌)。
54
+ * F5 后 access 已丢,靠此标记 + HttpOnly refresh Cookie 触发静默刷新。
55
+ */
56
+ cookieSession: boolean;
57
+ userInfo: UserInfo | null;
58
+ }>) => boolean;
59
+ }, {
60
+ /** 用登录/刷新出参落地会话。 */
61
+ setSession(data: LoginOutput): void;
62
+ clear(): void;
63
+ }>;
64
+ export {};