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,49 @@
1
+ import { defineComponent as c, openBlock as a, createElementBlock as s, normalizeClass as m, createVNode as o, withDirectives as u, createElementVNode as v, toDisplayString as f, unref as t, vShow as h, createCommentVNode as w, withCtx as B } from "vue";
2
+ import { NScrollbar as _, NMenu as N } from "naive-ui";
3
+ import S from "../../components/SmartLogo.vue.js";
4
+ import { useSite as y } from "../../composables/useSite.js";
5
+ const C = {
6
+ key: 0,
7
+ class: "brand"
8
+ }, z = /* @__PURE__ */ c({
9
+ __name: "SideNav",
10
+ props: {
11
+ options: {},
12
+ value: {},
13
+ collapsed: { type: Boolean },
14
+ rail: { type: Boolean },
15
+ showBrand: { type: Boolean }
16
+ },
17
+ emits: ["select"],
18
+ setup(n, { emit: i }) {
19
+ const { site: r } = y(), e = n, p = i;
20
+ return (b, l) => (a(), s("div", {
21
+ class: m(["sidenav", { rail: e.rail }])
22
+ }, [
23
+ e.showBrand ? (a(), s("div", C, [
24
+ o(S, { size: 30 }),
25
+ u(v("span", { class: "brand-name" }, f(t(r).title), 513), [
26
+ [h, !e.collapsed && !e.rail]
27
+ ])
28
+ ])) : w("", !0),
29
+ o(t(_), null, {
30
+ default: B(() => [
31
+ o(t(N), {
32
+ options: e.options,
33
+ value: e.value,
34
+ collapsed: e.collapsed || e.rail,
35
+ "collapsed-width": e.rail ? 64 : 76,
36
+ indent: 20,
37
+ "root-indent": 20,
38
+ "onUpdate:value": l[0] || (l[0] = (d) => p("select", d))
39
+ }, null, 8, ["options", "value", "collapsed", "collapsed-width"])
40
+ ]),
41
+ _: 1
42
+ })
43
+ ], 2));
44
+ }
45
+ });
46
+ export {
47
+ z as default
48
+ };
49
+ //# sourceMappingURL=SideNav2.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideNav2.vue.js","sources":["../../../src/layouts/components/SideNav.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 侧栏薄壳:对 n-menu 的展示层封装,default.vue 复用于 4 处——完整树/二级子树/一级图标 rail/移动抽屉。\n// collapsed(用户折叠开关) 与 rail(一级细栏,恒图标态、固定窄宽、无品牌字) 是两条独立的\"收窄\"来源,\n// 二者任一为真都令 n-menu 进入 collapsed;rail 另用更窄的 collapsed-width。\nimport { NMenu, NScrollbar, type MenuOption } from 'naive-ui'\nimport SmartLogo from '#/components/SmartLogo.vue'\nimport { useSite } from '#/composables/useSite'\n\nconst { site } = useSite()\n\nconst props = defineProps<{\n options: MenuOption[]\n value?: string\n collapsed?: boolean\n rail?: boolean // 细图标栏(一级),强制图标态、无品牌文字\n showBrand?: boolean\n}>()\nconst emit = defineEmits<{ select: [key: string] }>()\n</script>\n\n<template>\n <div class=\"sidenav\" :class=\"{ rail: props.rail }\">\n <div v-if=\"props.showBrand\" class=\"brand\">\n <SmartLogo :size=\"30\" />\n <span v-show=\"!props.collapsed && !props.rail\" class=\"brand-name\">{{ site.title }}</span>\n </div>\n <n-scrollbar>\n <n-menu\n :options=\"props.options\"\n :value=\"props.value\"\n :collapsed=\"props.collapsed || props.rail\"\n :collapsed-width=\"props.rail ? 64 : 76\"\n :indent=\"20\"\n :root-indent=\"20\"\n @update:value=\"(k: string) => emit('select', k)\"\n />\n </n-scrollbar>\n </div>\n</template>\n\n<style scoped>\n.sidenav {\n height: 100%;\n display: flex;\n flex-direction: column;\n background: var(--color-bg-container);\n overflow: hidden;\n}\n.brand {\n display: flex;\n align-items: center;\n gap: 10px;\n height: var(--header-h);\n padding: 0 22px;\n color: var(--color-text-primary);\n font-weight: 600;\n overflow: hidden;\n white-space: nowrap;\n flex-shrink: 0;\n}\n.rail .brand {\n padding: 0;\n justify-content: center;\n}\n.brand-name {\n font-size: 20px;\n font-weight: 700;\n color: var(--color-text-primary); /* 品牌文字跟随主题文字色:固定深蓝在暗色下看不清 */\n}\n.sidenav :deep(.n-scrollbar) {\n flex: 1;\n min-height: 0;\n}\n</style>\n"],"names":["site","useSite","props","__props","emit","__emit","_createElementBlock","_normalizeClass","_openBlock","_hoisted_1","_createVNode","SmartLogo","_withDirectives","_createElementVNode","_toDisplayString","_unref","_vShow","NScrollbar","NMenu","_cache","k"],"mappings":";;;;;;;;;;;;;;;;;;AAQA,UAAM,EAAE,MAAAA,EAAA,IAASC,EAAA,GAEXC,IAAQC,GAORC,IAAOC;2BAIXC,EAgBM,OAAA;AAAA,MAhBD,OAAKC,EAAA,CAAC,WAAS,EAAA,MAAiBL,EAAM,MAAI,CAAA;AAAA,IAAA;MAClCA,EAAM,aAAjBM,EAAA,GAAAF,EAGM,OAHNG,GAGM;AAAA,QAFJC,EAAwBC,GAAA,EAAZ,MAAM,IAAE;AAAA,QACpBC,EAAAC,EAAyF,UAA1C,OAAM,aAAA,GAAYC,EAAIC,EAAAf,CAAA,EAAK,KAAK,GAAA,GAAA,GAAA;AAAA,UAAhE,CAAAgB,GAAA,CAAAd,EAAM,aAAS,CAAKA,EAAM,IAAI;AAAA,QAAA;;MAE/CQ,EAUcK,EAAAE,CAAA,GAAA,MAAA;AAAA,mBATZ,MAQE;AAAA,UARFP,EAQEK,EAAAG,CAAA,GAAA;AAAA,YAPC,SAAShB,EAAM;AAAA,YACf,OAAOA,EAAM;AAAA,YACb,WAAWA,EAAM,aAAaA,EAAM;AAAA,YACpC,mBAAiBA,EAAM,OAAI,KAAA;AAAA,YAC3B,QAAQ;AAAA,YACR,eAAa;AAAA,YACb,kBAAYiB,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAGC,MAAchB,YAAegB,CAAC;AAAA,UAAA;;;;;;;"}
@@ -0,0 +1,3 @@
1
+ declare const __VLS_export: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import o from "./default2.vue.js";
2
+ /* empty css */
3
+ import t from "../_virtual/_plugin-vue_export-helper.js";
4
+ const a = /* @__PURE__ */ t(o, [["__scopeId", "data-v-2f5b2de6"]]);
5
+ export {
6
+ a as default
7
+ };
8
+ //# sourceMappingURL=default.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,213 @@
1
+ import { defineComponent as J, onMounted as P, onUnmounted as Q, ref as C, computed as o, watch as X, nextTick as T, openBlock as l, createElementBlock as w, normalizeClass as k, normalizeStyle as Y, Fragment as Z, createVNode as r, unref as e, withDirectives as ee, vShow as te, createBlock as i, createCommentVNode as c, createElementVNode as b, withCtx as s, Transition as ae, KeepAlive as oe, resolveDynamicComponent as re } from "vue";
2
+ import { RouterView as le } from "vue-router";
3
+ import { NButton as ie, NWatermark as se, NDrawer as ne, NDrawerContent as ue } from "naive-ui";
4
+ import { Icon as ce } from "@iconify/vue";
5
+ import { useBreakpoints as de, breakpointsTailwind as pe } from "@vueuse/core";
6
+ import { useI18n as me } from "vue-i18n";
7
+ import { useAppStore as ve } from "../stores/app.js";
8
+ import { useUserStore as he } from "../stores/user.js";
9
+ import { useLayoutMenu as fe } from "../composables/useLayoutMenu.js";
10
+ import { useTabsStore as we } from "../stores/tabs.js";
11
+ import { useSite as be } from "../composables/useSite.js";
12
+ import { useRealtime as ye } from "../composables/useRealtime.js";
13
+ import { useVisualViewportHeight as Se } from "../composables/useVisualViewportHeight.js";
14
+ import ke from "../components/ErrorBoundary/index.vue.js";
15
+ import _e from "./AppHeader.vue.js";
16
+ import d from "./components/SideNav.vue.js";
17
+ import xe from "./TabsBar.vue.js";
18
+ const Ne = { class: "apph" }, ge = { class: "content" }, Be = {
19
+ key: 0,
20
+ class: "tabs"
21
+ }, Ce = { class: "page" }, We = /* @__PURE__ */ J({
22
+ __name: "default",
23
+ setup(Te) {
24
+ const { t: M } = me(), t = ve(), V = he(), p = we(), { site: z } = be(), { menuOptions: _, l1Options: x, l2Options: N, selectedL1: g, activeKey: m, onSelect: y, onSelectL1: B } = fe(), { start: D, stop: O } = ye();
25
+ P(D), Q(O), Se();
26
+ const n = de(pe).smaller("md"), v = C(!1), a = o(() => n.value ? "mobile" : t.layoutMode), R = /* @__PURE__ */ new Set([
27
+ "vertical",
28
+ "vertical-mix",
29
+ "vertical-hybrid-header-first",
30
+ "top-hybrid-sidebar-first",
31
+ "top-hybrid-header-first"
32
+ ]), A = /* @__PURE__ */ new Set([
33
+ "horizontal",
34
+ "vertical-hybrid-header-first",
35
+ "top-hybrid-sidebar-first",
36
+ "top-hybrid-header-first"
37
+ ]), E = o(() => !n.value && R.has(t.layoutMode)), H = o(() => a.value === "vertical" || a.value === "vertical-mix"), I = o(() => n.value || A.has(a.value)), K = o(() => {
38
+ switch (a.value) {
39
+ case "horizontal":
40
+ return "full";
41
+ case "vertical-hybrid-header-first":
42
+ case "top-hybrid-header-first":
43
+ return "l1";
44
+ case "top-hybrid-sidebar-first":
45
+ return "l2";
46
+ default:
47
+ return null;
48
+ }
49
+ }), L = /* @__PURE__ */ new Set([
50
+ "vertical",
51
+ "vertical-mix",
52
+ "vertical-hybrid-header-first",
53
+ "top-hybrid-header-first"
54
+ ]), U = o(() => !n.value && L.has(a.value)), $ = o(
55
+ () => a.value === "vertical" ? _.value : N.value
56
+ ), j = o(() => a.value === "vertical-mix" ? { width: t.collapsed ? "var(--rail-w)" : "calc(var(--rail-w) + var(--sidebar-w))" } : a.value === "top-hybrid-sidebar-first" ? { width: "var(--rail-w)" } : { width: t.collapsed ? "var(--sidebar-w-collapsed)" : "var(--sidebar-w)" }), q = o(
57
+ () => t.pageTransition === "none" ? void 0 : t.pageTransition
58
+ ), F = o(
59
+ () => {
60
+ var u;
61
+ return [(u = V.userInfo) == null ? void 0 : u.name, t.watermarkText].filter(Boolean).join(" · ") || z.title;
62
+ }
63
+ ), W = o(() => t.isDark ? "rgba(255,255,255,0.12)" : "rgba(0,0,0,0.06)");
64
+ function G(u) {
65
+ y(u), v.value = !1;
66
+ }
67
+ const S = C(!0);
68
+ return X(
69
+ () => p.reloadKey,
70
+ async () => {
71
+ S.value = !1, await T(), S.value = !0, await T(), p.excludeName = "";
72
+ }
73
+ ), (u, h) => (l(), w("div", {
74
+ class: k(["layout", `mode-${a.value}`])
75
+ }, [
76
+ E.value ? (l(), w("aside", {
77
+ key: 0,
78
+ class: k(["aside", { "aside--mix": a.value === "vertical-mix" }]),
79
+ style: Y(j.value)
80
+ }, [
81
+ a.value === "vertical-mix" ? (l(), w(Z, { key: 0 }, [
82
+ r(d, {
83
+ class: "rail",
84
+ options: e(x),
85
+ value: e(g),
86
+ rail: "",
87
+ "show-brand": "",
88
+ onSelect: e(B)
89
+ }, null, 8, ["options", "value", "onSelect"]),
90
+ ee(r(d, {
91
+ class: "l2col",
92
+ options: e(N),
93
+ value: e(m),
94
+ onSelect: e(y)
95
+ }, null, 8, ["options", "value", "onSelect"]), [
96
+ [te, !e(t).collapsed]
97
+ ])
98
+ ], 64)) : a.value === "top-hybrid-sidebar-first" ? (l(), i(d, {
99
+ key: 1,
100
+ options: e(x),
101
+ value: e(g),
102
+ rail: "",
103
+ onSelect: e(B)
104
+ }, null, 8, ["options", "value", "onSelect"])) : (l(), i(d, {
105
+ key: 2,
106
+ options: $.value,
107
+ value: e(m),
108
+ collapsed: e(t).collapsed,
109
+ "show-brand": H.value,
110
+ onSelect: e(y)
111
+ }, null, 8, ["options", "value", "collapsed", "show-brand", "onSelect"]))
112
+ ], 6)) : c("", !0),
113
+ b("header", {
114
+ class: k(["header", { "header--static": !e(t).fixedHeader }])
115
+ }, [
116
+ e(n) ? (l(), i(e(ie), {
117
+ key: 0,
118
+ quaternary: "",
119
+ circle: "",
120
+ class: "hbg",
121
+ "aria-label": e(M)("app.openMenu"),
122
+ onClick: h[0] || (h[0] = (f) => v.value = !0)
123
+ }, {
124
+ default: s(() => [
125
+ r(e(ce), {
126
+ icon: "ph:list",
127
+ width: 20
128
+ })
129
+ ]),
130
+ _: 1
131
+ }, 8, ["aria-label"])) : c("", !0),
132
+ b("div", Ne, [
133
+ r(_e, {
134
+ "show-collapse": U.value,
135
+ "show-brand": I.value,
136
+ "top-menu": K.value
137
+ }, null, 8, ["show-collapse", "show-brand", "top-menu"])
138
+ ])
139
+ ], 2),
140
+ b("main", ge, [
141
+ e(t).showTabs ? (l(), w("div", Be, [
142
+ r(xe)
143
+ ])) : c("", !0),
144
+ b("div", Ce, [
145
+ r(ke, null, {
146
+ default: s(() => [
147
+ r(e(le), null, {
148
+ default: s(({ Component: f }) => [
149
+ r(ae, {
150
+ name: q.value,
151
+ mode: "out-in"
152
+ }, {
153
+ default: s(() => [
154
+ (l(), i(oe, {
155
+ include: e(p).cachedNames,
156
+ exclude: e(p).excludeName
157
+ }, [
158
+ S.value ? (l(), i(re(f), { key: e(m) })) : c("", !0)
159
+ ], 1032, ["include", "exclude"]))
160
+ ]),
161
+ _: 2
162
+ }, 1032, ["name"])
163
+ ]),
164
+ _: 1
165
+ })
166
+ ]),
167
+ _: 1
168
+ })
169
+ ]),
170
+ e(t).watermark ? (l(), i(e(se), {
171
+ key: 1,
172
+ content: F.value,
173
+ cross: "",
174
+ fullscreen: "",
175
+ "font-size": 14,
176
+ "line-height": 16,
177
+ width: 192,
178
+ height: 128,
179
+ rotate: -16,
180
+ "font-color": W.value
181
+ }, null, 8, ["content", "font-color"])) : c("", !0)
182
+ ]),
183
+ r(e(ne), {
184
+ show: v.value,
185
+ "onUpdate:show": h[1] || (h[1] = (f) => v.value = f),
186
+ placement: "left",
187
+ width: 236
188
+ }, {
189
+ default: s(() => [
190
+ r(e(ue), {
191
+ "native-scrollbar": !1,
192
+ "body-content-style": "padding:0"
193
+ }, {
194
+ default: s(() => [
195
+ r(d, {
196
+ options: e(_),
197
+ value: e(m),
198
+ "show-brand": "",
199
+ onSelect: G
200
+ }, null, 8, ["options", "value"])
201
+ ]),
202
+ _: 1
203
+ })
204
+ ]),
205
+ _: 1
206
+ }, 8, ["show"])
207
+ ], 2));
208
+ }
209
+ });
210
+ export {
211
+ We as default
212
+ };
213
+ //# sourceMappingURL=default2.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default2.vue.js","sources":["../../src/layouts/default.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { RouterView } from 'vue-router'\nimport { NWatermark, NDrawer, NDrawerContent, NButton } from 'naive-ui'\nimport { Icon } from '@iconify/vue'\nimport { useBreakpoints, breakpointsTailwind } from '@vueuse/core'\nimport { useI18n } from 'vue-i18n'\nimport { useAppStore, type LayoutMode } from '#/stores/app'\nimport { useUserStore } from '#/stores/user'\nimport { useLayoutMenu } from '#/composables/useLayoutMenu'\nimport { useTabsStore } from '#/stores/tabs'\nimport { useSite } from '#/composables/useSite'\nimport { useRealtime } from '#/composables/useRealtime'\nimport { useVisualViewportHeight } from '#/composables/useVisualViewportHeight'\nimport ErrorBoundary from '#/components/ErrorBoundary/index.vue'\nimport AppHeader from './AppHeader.vue'\nimport SideNav from './components/SideNav.vue'\nimport TabsBar from './TabsBar.vue'\n\nconst { t } = useI18n()\nconst app = useAppStore()\nconst user = useUserStore()\nconst tabs = useTabsStore()\nconst { site } = useSite()\nconst { menuOptions, l1Options, l2Options, selectedL1, activeKey, onSelect, onSelectL1 } =\n useLayoutMenu()\n\n// 实时通知(SignalR):鉴权外壳挂载即连、卸载即断。后端未开启实时时连接静默失败,退回轮询/惰性 401(纯增强)。\nconst { start: startRealtime, stop: stopRealtime } = useRealtime()\nonMounted(startRealtime)\nonUnmounted(stopRealtime)\n\n// 维护 --vvh(真实可视高度):软键盘弹起时 dvh 不变,只有 visualViewport 会缩。\n// 布局壳自身用 100dvh 就够,变量留给需要贴着键盘排版的页面(见 composables/useVisualViewportHeight)。\nuseVisualViewportHeight()\n\nconst isMobile = useBreakpoints(breakpointsTailwind).smaller('md')\nconst mobileOpen = ref(false)\n\n// 窄屏忽略 layoutMode,统一走 mobile(单列 + 抽屉侧栏)。\nconst mode = computed<LayoutMode | 'mobile'>(() => (isMobile.value ? 'mobile' : app.layoutMode))\n\n// 除 horizontal(无侧栏)外都有侧栏。\nconst withSider = new Set<LayoutMode>([\n 'vertical',\n 'vertical-mix',\n 'vertical-hybrid-header-first',\n 'top-hybrid-sidebar-first',\n 'top-hybrid-header-first',\n])\n// 顶栏显示品牌的模式(其余由侧栏/rail 顶部显示品牌,保证每种布局品牌只出现一处)。\nconst headerBrandModes = new Set<string>([\n 'horizontal',\n 'vertical-hybrid-header-first',\n 'top-hybrid-sidebar-first',\n 'top-hybrid-header-first',\n])\nconst showSider = computed(() => !isMobile.value && withSider.has(app.layoutMode))\nconst sideShowBrand = computed(() => mode.value === 'vertical' || mode.value === 'vertical-mix')\nconst headerShowBrand = computed(() => isMobile.value || headerBrandModes.has(mode.value))\n// 顶栏菜单:horizontal=完整树;两个 header-first=一级;侧边优先=二级(选中的一级的子菜单)。\nconst headerTopMenu = computed<'full' | 'l1' | 'l2' | null>(() => {\n switch (mode.value) {\n case 'horizontal':\n return 'full'\n case 'vertical-hybrid-header-first':\n case 'top-hybrid-header-first':\n return 'l1'\n case 'top-hybrid-sidebar-first':\n return 'l2'\n default:\n return null\n }\n})\n// 折叠按钮:有可折叠树侧栏的模式(侧边优先的一级 rail 固定宽,不折叠)。\nconst collapsibleSider = new Set<string>([\n 'vertical',\n 'vertical-mix',\n 'vertical-hybrid-header-first',\n 'top-hybrid-header-first',\n])\nconst showCollapse = computed(() => !isMobile.value && collapsibleSider.has(mode.value))\n\n// 非特殊侧栏内容:vertical=完整树;两个 header-first hybrid=二级子菜单树。\nconst asideOptions = computed(() =>\n mode.value === 'vertical' ? menuOptions.value : l2Options.value,\n)\nconst asideStyle = computed(() => {\n if (mode.value === 'vertical-mix') {\n return { width: app.collapsed ? 'var(--rail-w)' : 'calc(var(--rail-w) + var(--sidebar-w))' }\n }\n if (mode.value === 'top-hybrid-sidebar-first') {\n return { width: 'var(--rail-w)' } // 一级 icon rail,固定宽\n }\n return { width: app.collapsed ? 'var(--sidebar-w-collapsed)' : 'var(--sidebar-w)' }\n})\n\nconst transitionName = computed(() =>\n app.pageTransition === 'none' ? undefined : app.pageTransition,\n)\n\nconst watermarkContent = computed(\n () => [user.userInfo?.name, app.watermarkText].filter(Boolean).join(' · ') || site.title,\n)\nconst watermarkColor = computed(() => (app.isDark ? 'rgba(255,255,255,0.12)' : 'rgba(0,0,0,0.06)'))\n\nfunction onMobileSelect(key: string) {\n onSelect(key)\n mobileOpen.value = false\n}\n\n// 刷新标签:store 置 excludeName(逐出缓存)+ 递增 reloadKey;这里 v-if 关开一次令当前页重挂,再放行缓存。\nconst rvShow = ref(true)\nwatch(\n () => tabs.reloadKey,\n async () => {\n rvShow.value = false\n await nextTick()\n rvShow.value = true\n await nextTick()\n tabs.excludeName = ''\n },\n)\n</script>\n\n<template>\n <div class=\"layout\" :class=\"`mode-${mode}`\">\n <!-- 侧栏 -->\n <aside\n v-if=\"showSider\"\n class=\"aside\"\n :class=\"{ 'aside--mix': mode === 'vertical-mix' }\"\n :style=\"asideStyle\"\n >\n <template v-if=\"mode === 'vertical-mix'\">\n <SideNav\n class=\"rail\"\n :options=\"l1Options\"\n :value=\"selectedL1\"\n rail\n show-brand\n @select=\"onSelectL1\"\n />\n <SideNav\n v-show=\"!app.collapsed\"\n class=\"l2col\"\n :options=\"l2Options\"\n :value=\"activeKey\"\n @select=\"onSelect\"\n />\n </template>\n <!-- 顶部混合-侧边优先:侧栏只放一级 icon rail(二级在顶栏) -->\n <SideNav\n v-else-if=\"mode === 'top-hybrid-sidebar-first'\"\n :options=\"l1Options\"\n :value=\"selectedL1\"\n rail\n @select=\"onSelectL1\"\n />\n <SideNav\n v-else\n :options=\"asideOptions\"\n :value=\"activeKey\"\n :collapsed=\"app.collapsed\"\n :show-brand=\"sideShowBrand\"\n @select=\"onSelect\"\n />\n </aside>\n\n <!-- 顶栏 -->\n <header class=\"header\" :class=\"{ 'header--static': !app.fixedHeader }\">\n <n-button\n v-if=\"isMobile\"\n quaternary\n circle\n class=\"hbg\"\n :aria-label=\"t('app.openMenu')\"\n @click=\"mobileOpen = true\"\n >\n <Icon icon=\"ph:list\" :width=\"20\" />\n </n-button>\n <div class=\"apph\">\n <AppHeader\n :show-collapse=\"showCollapse\"\n :show-brand=\"headerShowBrand\"\n :top-menu=\"headerTopMenu\"\n />\n </div>\n </header>\n\n <!-- 内容 -->\n <main class=\"content\">\n <div v-if=\"app.showTabs\" class=\"tabs\"><TabsBar /></div>\n <div class=\"page\">\n <!-- 错误边界包住整个内容区:页面组件抛异常时 Vue 会卸掉整棵子树,没有它就是白屏。\n component :key=路由 path 给稳定身份:out-in 过渡才能正确区分进/出场,否则显示上一页缓存\n (按 path 各自成键,不塌缩缓存)。每个页面经 namedPage 套了一层 <div.page-view> 单元素根,\n out-in 能瞬时过渡任何页,无需卡死自愈的看门狗。 -->\n <ErrorBoundary>\n <router-view v-slot=\"{ Component }\">\n <transition :name=\"transitionName\" mode=\"out-in\">\n <keep-alive :include=\"tabs.cachedNames\" :exclude=\"tabs.excludeName\">\n <component :is=\"Component\" v-if=\"rvShow\" :key=\"activeKey\" />\n </keep-alive>\n </transition>\n </router-view>\n </ErrorBoundary>\n </div>\n <n-watermark\n v-if=\"app.watermark\"\n :content=\"watermarkContent\"\n cross\n fullscreen\n :font-size=\"14\"\n :line-height=\"16\"\n :width=\"192\"\n :height=\"128\"\n :rotate=\"-16\"\n :font-color=\"watermarkColor\"\n />\n </main>\n\n <!-- 移动端抽屉侧栏 -->\n <n-drawer v-model:show=\"mobileOpen\" placement=\"left\" :width=\"236\">\n <n-drawer-content :native-scrollbar=\"false\" body-content-style=\"padding:0\">\n <SideNav :options=\"menuOptions\" :value=\"activeKey\" show-brand @select=\"onMobileSelect\" />\n </n-drawer-content>\n </n-drawer>\n </div>\n</template>\n\n<style scoped>\n.layout {\n display: grid;\n /* dvh 而非 vh:移动端浏览器地址栏收起时 vh 仍按最小视口算,底部会被裁掉一条 */\n height: 100dvh;\n overflow: hidden;\n background: var(--color-bg-app); /* 整页画布跟随 tokens,暗色自动切深蓝黑渐变 */\n}\n/* 竖向壳:侧栏满高在左,顶栏缩进到内容列上方 */\n.mode-vertical,\n.mode-vertical-mix,\n.mode-vertical-hybrid-header-first {\n grid-template-columns: auto 1fr;\n grid-template-rows: var(--header-h) 1fr;\n grid-template-areas: 'aside header' 'aside content';\n}\n/* 顶栏壳:顶栏通栏,侧栏在其下方左侧 */\n.mode-top-hybrid-sidebar-first,\n.mode-top-hybrid-header-first {\n grid-template-columns: auto 1fr;\n grid-template-rows: var(--header-h) 1fr;\n grid-template-areas: 'header header' 'aside content';\n}\n.mode-horizontal,\n.mode-mobile {\n grid-template-columns: 1fr;\n grid-template-rows: var(--header-h) 1fr;\n grid-template-areas: 'header' 'content';\n}\n\n.aside {\n grid-area: aside;\n height: 100%;\n overflow: hidden;\n border-right: 1px solid var(--color-border);\n background: var(--color-bg-container);\n backdrop-filter: blur(18px); /* 侧栏玻璃背景,与顶栏/弹层质感统一 */\n -webkit-backdrop-filter: blur(18px);\n transition: width 0.2s ease;\n}\n.aside--mix {\n display: flex;\n}\n.aside--mix .rail {\n width: var(--rail-w);\n flex-shrink: 0;\n border-right: 1px solid var(--color-border);\n}\n.aside--mix .l2col {\n flex: 1;\n min-width: 0;\n}\n\n.header {\n grid-area: header;\n display: flex;\n align-items: stretch;\n border-bottom: 1px solid var(--color-border);\n background: var(--color-header-bg);\n backdrop-filter: blur(12px);\n z-index: 10;\n}\n.header--static {\n backdrop-filter: none;\n}\n.hbg {\n align-self: center;\n margin-left: 8px;\n}\n.apph {\n flex: 1;\n min-width: 0;\n height: 100%;\n}\n\n.content {\n grid-area: content;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n.tabs {\n flex-shrink: 0;\n}\n.page {\n flex: 1;\n min-height: 0;\n overflow: auto;\n padding: var(--pad-page);\n}\n</style>\n"],"names":["t","useI18n","app","useAppStore","user","useUserStore","tabs","useTabsStore","site","useSite","menuOptions","l1Options","l2Options","selectedL1","activeKey","onSelect","onSelectL1","useLayoutMenu","startRealtime","stopRealtime","useRealtime","onMounted","onUnmounted","useVisualViewportHeight","isMobile","useBreakpoints","breakpointsTailwind","mobileOpen","ref","mode","computed","withSider","headerBrandModes","showSider","sideShowBrand","headerShowBrand","headerTopMenu","collapsibleSider","showCollapse","asideOptions","asideStyle","transitionName","watermarkContent","_a","watermarkColor","onMobileSelect","key","rvShow","watch","nextTick","_createElementBlock","_normalizeClass","_Fragment","_createVNode","SideNav","_unref","_vShow","_createBlock","_createElementVNode","NButton","Icon","_hoisted_1","AppHeader","_hoisted_2","_openBlock","_hoisted_3","TabsBar","_hoisted_4","ErrorBoundary","RouterView","_withCtx","Component","_Transition","_KeepAlive","_resolveDynamicComponent","NWatermark","NDrawer","$event","NDrawerContent"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /** 是不是「旧 chunk 没了」这类动态导入失败。 */
2
+ export declare function isChunkLoadError(err: unknown): boolean;
3
+ /**
4
+ * 本标签页还没自动重载过就重载,返回是否真的触发了。
5
+ * sessionStorage 读写在隐私模式下会抛 —— 那时宁可不重载,也不能冒死循环的险。
6
+ */
7
+ export declare function reloadOnce(): boolean;
8
+ /** 是 chunk 失效且本页还没自救过 → 重载。返回 true 表示调用方不必再弹错误。 */
9
+ export declare function reloadOnChunkError(err: unknown): boolean;
@@ -0,0 +1,24 @@
1
+ const t = "smart:chunk-reloaded", o = /dynamically imported module|Importing a module script failed|ChunkLoadError|Loading chunk \d+ failed|css chunk/i;
2
+ function r(n) {
3
+ if (!n) return !1;
4
+ const e = n instanceof Error ? `${n.name}: ${n.message}` : String(n);
5
+ return o.test(e);
6
+ }
7
+ function a() {
8
+ try {
9
+ if (sessionStorage.getItem(t)) return !1;
10
+ sessionStorage.setItem(t, "1");
11
+ } catch {
12
+ return !1;
13
+ }
14
+ return window.location.reload(), !0;
15
+ }
16
+ function s(n) {
17
+ return r(n) && a();
18
+ }
19
+ export {
20
+ r as isChunkLoadError,
21
+ s as reloadOnChunkError,
22
+ a as reloadOnce
23
+ };
24
+ //# sourceMappingURL=chunkReload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunkReload.js","sources":["../../src/lib/chunkReload.ts"],"sourcesContent":["// 发版后旧 chunk 404 的兜底。\n//\n// 用户停在旧的 index.html,而懒加载的 JS 文件名带 hash,新版一上线旧文件就没了 ——\n// 再点任何一个还没加载过的页面就是白屏。唯一可靠的修法是重载页面拿新 index.html。\n// 但如果新版本身也加载不了(CDN 没同步完、断网、被网关拦),无条件重载会变成刷新死循环,\n// 所以用 sessionStorage 记一次:每个标签页只自动救一次,之后交给错误边界让用户自己决定。\n\nconst RELOADED_FLAG = 'smart:chunk-reloaded'\n\n// 各浏览器对「动态导入失败」的文案不统一,统一按关键词认。\nconst CHUNK_ERROR_RE =\n /dynamically imported module|Importing a module script failed|ChunkLoadError|Loading chunk \\d+ failed|css chunk/i\n\n/** 是不是「旧 chunk 没了」这类动态导入失败。 */\nexport function isChunkLoadError(err: unknown): boolean {\n if (!err) return false\n const text = err instanceof Error ? `${err.name}: ${err.message}` : String(err)\n return CHUNK_ERROR_RE.test(text)\n}\n\n/**\n * 本标签页还没自动重载过就重载,返回是否真的触发了。\n * sessionStorage 读写在隐私模式下会抛 —— 那时宁可不重载,也不能冒死循环的险。\n */\nexport function reloadOnce(): boolean {\n try {\n if (sessionStorage.getItem(RELOADED_FLAG)) return false\n sessionStorage.setItem(RELOADED_FLAG, '1')\n } catch {\n return false\n }\n window.location.reload()\n return true\n}\n\n/** 是 chunk 失效且本页还没自救过 → 重载。返回 true 表示调用方不必再弹错误。 */\nexport function reloadOnChunkError(err: unknown): boolean {\n return isChunkLoadError(err) && reloadOnce()\n}\n"],"names":["RELOADED_FLAG","CHUNK_ERROR_RE","isChunkLoadError","err","text","reloadOnce","reloadOnChunkError"],"mappings":"AAOA,MAAMA,IAAgB,wBAGhBC,IACJ;AAGK,SAASC,EAAiBC,GAAuB;AACtD,MAAI,CAACA,EAAK,QAAO;AACjB,QAAMC,IAAOD,aAAe,QAAQ,GAAGA,EAAI,IAAI,KAAKA,EAAI,OAAO,KAAK,OAAOA,CAAG;AAC9E,SAAOF,EAAe,KAAKG,CAAI;AACjC;AAMO,SAASC,IAAsB;AACpC,MAAI;AACF,QAAI,eAAe,QAAQL,CAAa,EAAG,QAAO;AAClD,mBAAe,QAAQA,GAAe,GAAG;AAAA,EAC3C,QAAQ;AACN,WAAO;AAAA,EACT;AACA,gBAAO,SAAS,OAAA,GACT;AACT;AAGO,SAASM,EAAmBH,GAAuB;AACxD,SAAOD,EAAiBC,CAAG,KAAKE,EAAA;AAClC;"}
@@ -0,0 +1,2 @@
1
+ /** 首屏调用一次:同步装入 ph 子集,再注册离线集 + 本地 SVG(内核自带 + 消费方传入)。 */
2
+ export declare function setupIcons(extraIcons?: Record<string, string>): void;
@@ -0,0 +1,39 @@
1
+ import o from "../assets/svg/star.svg.js";
2
+ import { addCollection as t } from "@iconify/vue";
3
+ import { setupSmartIcon as n } from "smart-naive-icon";
4
+ import r from "../assets/icons/ph-subset.json.js";
5
+ const i = [
6
+ {
7
+ prefix: "ph",
8
+ name: "Phosphor",
9
+ loader: () => import("@iconify-json/ph/icons.json").then((e) => e.default)
10
+ },
11
+ {
12
+ prefix: "lucide",
13
+ name: "Lucide",
14
+ loader: () => import("@iconify-json/lucide/icons.json").then((e) => e.default)
15
+ },
16
+ {
17
+ prefix: "ep",
18
+ name: "Element Plus",
19
+ loader: () => import("@iconify-json/ep/icons.json").then((e) => e.default)
20
+ },
21
+ {
22
+ prefix: "ant-design",
23
+ name: "Ant Design",
24
+ loader: () => import("@iconify-json/ant-design/icons.json").then((e) => e.default)
25
+ }
26
+ ], s = "__none__", a = /* @__PURE__ */ Object.assign({
27
+ "../assets/svg/star.svg": o
28
+ });
29
+ function d(e = {}) {
30
+ t(r), n({
31
+ collections: i,
32
+ localIcons: { ...a, ...e },
33
+ preloadPrefix: s
34
+ });
35
+ }
36
+ export {
37
+ d as setupIcons
38
+ };
39
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icons.js","sources":["../../src/lib/icons.ts"],"sourcesContent":["// SmartAdmin 侧图标 bootstrap:把 4 套离线集 + 本地 SVG 注册进 smart-naive-icon,并同步装入 ph 子集。\n// 选择器/渲染器逻辑在该独立 npm 包里(见 components/IconPicker、components/AppIcon.vue),这里只做「注册配置」。\n// SmartAdmin 只保留三个薄封装(本文件 + AppIcon.vue + IconPicker/index.vue)。组件本体的 bug 去组件包的仓库提 issue\n// 或本地 patch,不要把组件逻辑复制进 SmartAdmin 修——那会让重复回来。\nimport { addCollection } from '@iconify/vue'\nimport { setupSmartIcon, type IconCollection, type IconifyJSON } from 'smart-naive-icon'\nimport phSubset from '#/assets/icons/ph-subset.json'\n\n// 增删默认离线集:装/卸 `@iconify-json/<prefix>`,并在此加/删一行同 prefix 的 loader。\n// 每套是独立懒加载 chunk;`ph` 是全站默认集,整集只在选择器打开、或渲染到子集外的图标时才拉。\nconst collections: IconCollection[] = [\n {\n prefix: 'ph',\n name: 'Phosphor',\n loader: () => import('@iconify-json/ph/icons.json').then(m => m.default as IconifyJSON),\n },\n {\n prefix: 'lucide',\n name: 'Lucide',\n loader: () => import('@iconify-json/lucide/icons.json').then(m => m.default as IconifyJSON),\n },\n {\n prefix: 'ep',\n name: 'Element Plus',\n loader: () => import('@iconify-json/ep/icons.json').then(m => m.default as IconifyJSON),\n },\n {\n prefix: 'ant-design',\n name: 'Ant Design',\n loader: () => import('@iconify-json/ant-design/icons.json').then(m => m.default as IconifyJSON),\n },\n]\n\n// 包没有「不预热」的开关:preloadIcons 拿不到 prefix 就退回第一套,故给一个必不存在的前缀把预热顶掉——\n// 只同步注册这份子集:预热整套 9000+ 图标(4.5 MB / 946 KB gz)会让首屏白拉掉 dist 四成的体积。\nconst NO_PRELOAD = '__none__'\n\n// 内核自带的本地 SVG(src/assets/svg/*.svg);消费方的经 createSmartAdmin({ icons }) 以同样的 glob 形状传入。\nconst kernelIcons = import.meta.glob('../assets/svg/*.svg', {\n query: '?raw',\n import: 'default',\n eager: true,\n}) as Record<string, string>\n\n/** 首屏调用一次:同步装入 ph 子集,再注册离线集 + 本地 SVG(内核自带 + 消费方传入)。 */\nexport function setupIcons(extraIcons: Record<string, string> = {}): void {\n // 子集同步入库,首帧即可离线渲染静态图标,不必等异步预热,也不会命中外部 CDN。\n // 子集由 `npm run gen:icons` 从 src 里实际用到的名字生成(scripts/gen-icon-subset.mjs)。\n addCollection(phSubset as IconifyJSON)\n setupSmartIcon({\n collections,\n localIcons: { ...kernelIcons, ...extraIcons },\n preloadPrefix: NO_PRELOAD,\n })\n}\n"],"names":["collections","m","NO_PRELOAD","kernelIcons","__vite_glob_0_0","setupIcons","extraIcons","addCollection","phSubset","setupSmartIcon"],"mappings":";;;;AAUA,MAAMA,IAAgC;AAAA,EACpC;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,MAAM,OAAO,6BAA6B,EAAE,KAAK,CAAAC,MAAKA,EAAE,OAAsB;AAAA,EAAA;AAAA,EAExF;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,MAAM,OAAO,iCAAiC,EAAE,KAAK,CAAAA,MAAKA,EAAE,OAAsB;AAAA,EAAA;AAAA,EAE5F;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,MAAM,OAAO,6BAA6B,EAAE,KAAK,CAAAA,MAAKA,EAAE,OAAsB;AAAA,EAAA;AAAA,EAExF;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,QAAQ,MAAM,OAAO,qCAAqC,EAAE,KAAK,CAAAA,MAAKA,EAAE,OAAsB;AAAA,EAAA;AAElG,GAIMC,IAAa,YAGbC,IAAc,uBAAA,OAAA;AAAA,EAAA,0BAAAC;AAAA,CAAA;AAOb,SAASC,EAAWC,IAAqC,IAAU;AAGxE,EAAAC,EAAcC,CAAuB,GACrCC,EAAe;AAAA,IACb,aAAAT;AAAA,IACA,YAAY,EAAE,GAAGG,GAAa,GAAGG,EAAA;AAAA,IACjC,eAAeJ;AAAA,EAAA,CAChB;AACH;"}
@@ -0,0 +1,7 @@
1
+ export declare const loadingBar: {
2
+ start: () => void | undefined;
3
+ finish: () => void | undefined;
4
+ error: () => void | undefined;
5
+ };
6
+ /** 挂在 n-loading-bar-provider 内的空渲染组件,负责把实例交给模块单例。 */
7
+ export declare const LoadingBarBridge: import('vue').DefineComponent<{}, () => null, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,18 @@
1
+ import { defineComponent as n } from "vue";
2
+ import { useLoadingBar as o } from "naive-ui";
3
+ let r = null;
4
+ const i = {
5
+ start: () => r == null ? void 0 : r.start(),
6
+ finish: () => r == null ? void 0 : r.finish(),
7
+ error: () => r == null ? void 0 : r.error()
8
+ }, s = n({
9
+ name: "LoadingBarBridge",
10
+ setup() {
11
+ return r = o(), () => null;
12
+ }
13
+ });
14
+ export {
15
+ s as LoadingBarBridge,
16
+ i as loadingBar
17
+ };
18
+ //# sourceMappingURL=loadingBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadingBar.js","sources":["../../src/lib/loadingBar.ts"],"sourcesContent":["import { defineComponent } from 'vue'\nimport { useLoadingBar, type LoadingBarApi } from 'naive-ui'\n\n// 路由加载进度条桥:useLoadingBar 只能在 Provider 内的 setup 里调,\n// 路由守卫在组件树外,故用模块单例转接。Provider 未挂载前静默 no-op。\nlet api: LoadingBarApi | null = null\n\nexport const loadingBar = {\n start: () => api?.start(),\n finish: () => api?.finish(),\n error: () => api?.error(),\n}\n\n/** 挂在 n-loading-bar-provider 内的空渲染组件,负责把实例交给模块单例。 */\nexport const LoadingBarBridge = defineComponent({\n name: 'LoadingBarBridge',\n setup() {\n api = useLoadingBar()\n return () => null\n },\n})\n"],"names":["api","loadingBar","LoadingBarBridge","defineComponent","useLoadingBar"],"mappings":";;AAKA,IAAIA,IAA4B;AAEzB,MAAMC,IAAa;AAAA,EACxB,OAAO,MAAMD,KAAA,gBAAAA,EAAK;AAAA,EAClB,QAAQ,MAAMA,KAAA,gBAAAA,EAAK;AAAA,EACnB,OAAO,MAAMA,KAAA,gBAAAA,EAAK;AACpB,GAGaE,IAAmBC,EAAgB;AAAA,EAC9C,MAAM;AAAA,EACN,QAAQ;AACN,WAAAH,IAAMI,EAAA,GACC,MAAM;AAAA,EACf;AACF,CAAC;"}
@@ -0,0 +1,8 @@
1
+ import { MarkdownItConfigPlugin } from 'md-editor-v3';
2
+ /** 把 XSS 过滤插件追加到 markdown-it 预设插件链尾。抽成纯函数便于单测钉住「确实登记了」。 */
3
+ export declare function withXssPlugin(plugins: MarkdownItConfigPlugin[]): MarkdownItConfigPlugin[];
4
+ /**
5
+ * 幂等:全局登记 XSS 过滤 + echarts 空 instance(断 unpkg)。
6
+ * 由 MarkdownEditor / MarkdownView 在 setup 首行调用 —— 放启动入口(createSmartAdmin)会把 md-editor-v3 拖进首屏 chunk。
7
+ */
8
+ export declare function setupMarkdown(): void;
@@ -0,0 +1,16 @@
1
+ import { config as i, XSSPlugin as e } from "md-editor-v3";
2
+ function o(n) {
3
+ return [...n, { type: "xss", plugin: e, options: {} }];
4
+ }
5
+ let t = !1;
6
+ function s() {
7
+ t || (t = !0, i({
8
+ markdownItPlugins: (n) => o(n),
9
+ editorExtensions: { echarts: { instance: {} } }
10
+ }));
11
+ }
12
+ export {
13
+ s as setupMarkdown,
14
+ o as withXssPlugin
15
+ };
16
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sources":["../../src/lib/markdown.ts"],"sourcesContent":["// Markdown 渲染的全局安全 + 气隙自包含接线。\n//\n// 1) XSS:md-editor-v3 默认 `html:true`(markdown-it 原样放行内联 HTML)、`sanitize` 恒等空操作、预设插件链\n// **不含** XSS 过滤。通知作者(带权限即可,未必超管)存 `<img src=x onerror=…>`,任意查看者(含读通知的超管)\n// 打开即执行 → 偷 localStorage 里的 JWT 达成账号接管。**这否证了原注释「存纯 Markdown → 无 XSS 面」的说法**\n// (Markdown 天然放行 HTML)。修:挂库自带 `XSSPlugin`(基于已随库打进来的 js-xss,零新依赖)。\n// 2) 气隙:md-editor-v3 挂载即从 unpkg 懒加载 highlight/katex/mermaid/prettier/echarts。前四个在组件上用\n// `no-*` 关掉;echarts 无 `no*` 旗标,只能给空 no-op instance —— 既断 CDN,又避开其默认 `parseOption` 用\n// `new Function` 对通知正文求值的隐患(通知用不到 echarts 代码块)。\nimport { config, XSSPlugin } from 'md-editor-v3'\nimport type { MarkdownItConfigPlugin } from 'md-editor-v3'\n\n/** 把 XSS 过滤插件追加到 markdown-it 预设插件链尾。抽成纯函数便于单测钉住「确实登记了」。 */\nexport function withXssPlugin(plugins: MarkdownItConfigPlugin[]): MarkdownItConfigPlugin[] {\n return [...plugins, { type: 'xss', plugin: XSSPlugin, options: {} }]\n}\n\nlet done = false\n/**\n * 幂等:全局登记 XSS 过滤 + echarts 空 instance(断 unpkg)。\n * 由 MarkdownEditor / MarkdownView 在 setup 首行调用 —— 放启动入口(createSmartAdmin)会把 md-editor-v3 拖进首屏 chunk。\n */\nexport function setupMarkdown(): void {\n if (done) return\n done = true\n config({\n markdownItPlugins: plugins => withXssPlugin(plugins),\n editorExtensions: { echarts: { instance: {} } },\n })\n}\n"],"names":["withXssPlugin","plugins","XSSPlugin","done","setupMarkdown","config"],"mappings":";AAaO,SAASA,EAAcC,GAA6D;AACzF,SAAO,CAAC,GAAGA,GAAS,EAAE,MAAM,OAAO,QAAQC,GAAW,SAAS,CAAA,GAAI;AACrE;AAEA,IAAIC,IAAO;AAKJ,SAASC,IAAsB;AACpC,EAAID,MACJA,IAAO,IACPE,EAAO;AAAA,IACL,mBAAmB,CAAAJ,MAAWD,EAAcC,CAAO;AAAA,IACnD,kBAAkB,EAAE,SAAS,EAAE,UAAU,CAAA,IAAG;AAAA,EAAE,CAC/C;AACH;"}
@@ -0,0 +1,26 @@
1
+ export type MarkdownLinkKind =
2
+ /** 以单个 `/` 开头的站内相对路径:走 vue-router */
3
+ {
4
+ kind: 'route';
5
+ to: string;
6
+ }
7
+ /** http(s) 绝对地址:新标签打开(noopener) */
8
+ | {
9
+ kind: 'external';
10
+ href: string;
11
+ }
12
+ /** 其余(锚点、mailto:、tel:、协议相对 //…):交给浏览器,不干预 */
13
+ | {
14
+ kind: 'native';
15
+ };
16
+ /**
17
+ * 只认"单个 `/` 开头"为站内路径:`//evil.com` 与 `/\evil.com` 都是协议相对 URL,
18
+ * 交给 router.push 会被当路径,交给浏览器会跳出站,两边都不该碰。
19
+ */
20
+ export declare function classifyMarkdownLink(href: string | null | undefined): MarkdownLinkKind;
21
+ /**
22
+ * 容器级 click 委托。命中 `<a href>` 且是站内路径时拦截默认行为改走 `push`;
23
+ * http(s) 外链改为新标签打开;其它情况(含 Ctrl/Cmd/Shift + 点击)原样放行。
24
+ * 返回值是"是否接管了这次点击",便于单测钉住分流结果。
25
+ */
26
+ export declare function handleMarkdownLinkClick(ev: MouseEvent, push: (to: string) => void): boolean;
@@ -0,0 +1,21 @@
1
+ import { isHttpUrl as f } from "../utils/url.js";
2
+ function u(t) {
3
+ const n = (t ?? "").trim();
4
+ return /^\/(?![/\\])/.test(n) ? { kind: "route", to: n } : f(n) ? { kind: "external", href: n } : { kind: "native" };
5
+ }
6
+ function a(t) {
7
+ return t.button !== 0 || t.metaKey || t.ctrlKey || t.shiftKey || t.altKey;
8
+ }
9
+ function s(t, n) {
10
+ var o;
11
+ if (t.defaultPrevented || a(t)) return !1;
12
+ const e = t.target, i = (o = e == null ? void 0 : e.closest) == null ? void 0 : o.call(e, "a[href]");
13
+ if (!i) return !1;
14
+ const r = u(i.getAttribute("href"));
15
+ return r.kind === "route" ? (t.preventDefault(), n(r.to), !0) : r.kind === "external" ? (t.preventDefault(), window.open(r.href, "_blank", "noopener"), !0) : !1;
16
+ }
17
+ export {
18
+ u as classifyMarkdownLink,
19
+ s as handleMarkdownLinkClick
20
+ };
21
+ //# sourceMappingURL=markdownLinks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdownLinks.js","sources":["../../src/lib/markdownLinks.ts"],"sourcesContent":["// Markdown 正文里链接的点击分流。通知正文写 `[查看详情](/system/notice)` 这种站内相对链接时,\n// 浏览器默认整页跳转:动态路由丢失 → 守卫重建 → 页面闪一下,多标签状态全部重置。\n// 这里按 href 形状分三类,由 MarkdownView 在容器上做一次事件委托,正文里的 <a> 不必逐个改。\nimport { isHttpUrl } from '#/utils/url'\n\nexport type MarkdownLinkKind =\n /** 以单个 `/` 开头的站内相对路径:走 vue-router */\n | { kind: 'route'; to: string }\n /** http(s) 绝对地址:新标签打开(noopener) */\n | { kind: 'external'; href: string }\n /** 其余(锚点、mailto:、tel:、协议相对 //…):交给浏览器,不干预 */\n | { kind: 'native' }\n\n/**\n * 只认\"单个 `/` 开头\"为站内路径:`//evil.com` 与 `/\\evil.com` 都是协议相对 URL,\n * 交给 router.push 会被当路径,交给浏览器会跳出站,两边都不该碰。\n */\nexport function classifyMarkdownLink(href: string | null | undefined): MarkdownLinkKind {\n const h = (href ?? '').trim()\n if (/^\\/(?![/\\\\])/.test(h)) return { kind: 'route', to: h }\n if (isHttpUrl(h)) return { kind: 'external', href: h }\n return { kind: 'native' }\n}\n\n/** 修饰键或非左键:用户明确要\"新开标签 / 另存\",按浏览器原生语义办。 */\nfunction wantsNative(ev: MouseEvent): boolean {\n return ev.button !== 0 || ev.metaKey || ev.ctrlKey || ev.shiftKey || ev.altKey\n}\n\n/**\n * 容器级 click 委托。命中 `<a href>` 且是站内路径时拦截默认行为改走 `push`;\n * http(s) 外链改为新标签打开;其它情况(含 Ctrl/Cmd/Shift + 点击)原样放行。\n * 返回值是\"是否接管了这次点击\",便于单测钉住分流结果。\n */\nexport function handleMarkdownLinkClick(ev: MouseEvent, push: (to: string) => void): boolean {\n if (ev.defaultPrevented || wantsNative(ev)) return false\n const target = ev.target as Element | null\n const anchor = target?.closest?.('a[href]')\n if (!anchor) return false\n const link = classifyMarkdownLink(anchor.getAttribute('href'))\n if (link.kind === 'route') {\n ev.preventDefault()\n push(link.to)\n return true\n }\n if (link.kind === 'external') {\n ev.preventDefault()\n window.open(link.href, '_blank', 'noopener')\n return true\n }\n return false\n}\n"],"names":["classifyMarkdownLink","href","h","isHttpUrl","wantsNative","ev","handleMarkdownLinkClick","push","target","anchor","_a","link"],"mappings":";AAiBO,SAASA,EAAqBC,GAAmD;AACtF,QAAMC,KAAKD,KAAQ,IAAI,KAAA;AACvB,SAAI,eAAe,KAAKC,CAAC,IAAU,EAAE,MAAM,SAAS,IAAIA,EAAA,IACpDC,EAAUD,CAAC,IAAU,EAAE,MAAM,YAAY,MAAMA,EAAA,IAC5C,EAAE,MAAM,SAAA;AACjB;AAGA,SAASE,EAAYC,GAAyB;AAC5C,SAAOA,EAAG,WAAW,KAAKA,EAAG,WAAWA,EAAG,WAAWA,EAAG,YAAYA,EAAG;AAC1E;AAOO,SAASC,EAAwBD,GAAgBE,GAAqC;;AAC3F,MAAIF,EAAG,oBAAoBD,EAAYC,CAAE,EAAG,QAAO;AACnD,QAAMG,IAASH,EAAG,QACZI,KAASC,IAAAF,KAAA,gBAAAA,EAAQ,YAAR,gBAAAE,EAAA,KAAAF,GAAkB;AACjC,MAAI,CAACC,EAAQ,QAAO;AACpB,QAAME,IAAOX,EAAqBS,EAAO,aAAa,MAAM,CAAC;AAC7D,SAAIE,EAAK,SAAS,WAChBN,EAAG,eAAA,GACHE,EAAKI,EAAK,EAAE,GACL,MAELA,EAAK,SAAS,cAChBN,EAAG,eAAA,GACH,OAAO,KAAKM,EAAK,MAAM,UAAU,UAAU,GACpC,MAEF;AACT;"}
@@ -0,0 +1,13 @@
1
+ import { NoticeAction } from '../types/api';
2
+ export type NoticeActionKind =
3
+ /** /api/ 开头:按 method 请求该接口 */
4
+ 'api'
5
+ /** 其它单个 / 开头的站内路径:router.push 跳过去(method 忽略) */
6
+ | 'route'
7
+ /** 不是单个 / 开头(含 //host、/\host 这类协议相对 URL):不执行 */
8
+ | 'invalid';
9
+ /** 与后端 NoticeService.IsSiteRelativeUrl 同一条规则:单个 `/` 开头、无空白与反斜杠。 */
10
+ export declare function isSiteRelativeUrl(url: string | null | undefined): boolean;
11
+ export declare function classifyNoticeAction(action: Pick<NoticeAction, 'url'>): NoticeActionKind;
12
+ /** 按钮文案:含 `.` 视为 i18n key(与菜单标题同一条约定),查不到就原样显示。 */
13
+ export declare function noticeActionLabel(label: string, t: (key: string) => string, te: (key: string) => boolean): string;
@@ -0,0 +1,16 @@
1
+ function e(t) {
2
+ return !t || t[0] !== "/" || t.length > 1 && (t[1] === "/" || t[1] === "\\") ? !1 : !/[\s\\]/.test(t);
3
+ }
4
+ function r(t) {
5
+ const i = (t.url ?? "").trim();
6
+ return e(i) ? i === "/api" || i.startsWith("/api/") ? "api" : "route" : "invalid";
7
+ }
8
+ function s(t, i, n) {
9
+ return t.includes(".") && n(t) ? i(t) : t;
10
+ }
11
+ export {
12
+ r as classifyNoticeAction,
13
+ e as isSiteRelativeUrl,
14
+ s as noticeActionLabel
15
+ };
16
+ //# sourceMappingURL=noticeActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noticeActions.js","sources":["../../src/lib/noticeActions.ts"],"sourcesContent":["// 通知动作(NoticeAction)的纯逻辑:url 分类与展示文案。服务端只存不解释,这里决定\"点了怎么办\"。\nimport type { NoticeAction } from '#/types/api'\n\nexport type NoticeActionKind =\n /** /api/ 开头:按 method 请求该接口 */\n | 'api'\n /** 其它单个 / 开头的站内路径:router.push 跳过去(method 忽略) */\n | 'route'\n /** 不是单个 / 开头(含 //host、/\\host 这类协议相对 URL):不执行 */\n | 'invalid'\n\n/** 与后端 NoticeService.IsSiteRelativeUrl 同一条规则:单个 `/` 开头、无空白与反斜杠。 */\nexport function isSiteRelativeUrl(url: string | null | undefined): boolean {\n if (!url || url[0] !== '/') return false\n if (url.length > 1 && (url[1] === '/' || url[1] === '\\\\')) return false\n return !/[\\s\\\\]/.test(url)\n}\n\nexport function classifyNoticeAction(action: Pick<NoticeAction, 'url'>): NoticeActionKind {\n const url = (action.url ?? '').trim()\n if (!isSiteRelativeUrl(url)) return 'invalid'\n return url === '/api' || url.startsWith('/api/') ? 'api' : 'route'\n}\n\n/** 按钮文案:含 `.` 视为 i18n key(与菜单标题同一条约定),查不到就原样显示。 */\nexport function noticeActionLabel(\n label: string,\n t: (key: string) => string,\n te: (key: string) => boolean,\n): string {\n return label.includes('.') && te(label) ? t(label) : label\n}\n"],"names":["isSiteRelativeUrl","url","classifyNoticeAction","action","noticeActionLabel","label","t","te"],"mappings":"AAYO,SAASA,EAAkBC,GAAyC;AAEzE,SADI,CAACA,KAAOA,EAAI,CAAC,MAAM,OACnBA,EAAI,SAAS,MAAMA,EAAI,CAAC,MAAM,OAAOA,EAAI,CAAC,MAAM,QAAc,KAC3D,CAAC,SAAS,KAAKA,CAAG;AAC3B;AAEO,SAASC,EAAqBC,GAAqD;AACxF,QAAMF,KAAOE,EAAO,OAAO,IAAI,KAAA;AAC/B,SAAKH,EAAkBC,CAAG,IACnBA,MAAQ,UAAUA,EAAI,WAAW,OAAO,IAAI,QAAQ,UADvB;AAEtC;AAGO,SAASG,EACdC,GACAC,GACAC,GACQ;AACR,SAAOF,EAAM,SAAS,GAAG,KAAKE,EAAGF,CAAK,IAAIC,EAAED,CAAK,IAAIA;AACvD;"}
@@ -0,0 +1,21 @@
1
+ import { Component } from 'vue';
2
+ /** 品牌默认值:sys.site.* 配置有值时以配置为准,为空时用这里。 */
3
+ export interface BrandOptions {
4
+ /** 站点标题默认值;siteInfo 里 sys.site.title 有值时被覆盖 */
5
+ title?: string;
6
+ /** 组件或图片地址;不传则用内置 SmartLogo 矢量标 */
7
+ logo?: Component | string;
8
+ }
9
+ /**
10
+ * 运行期配置:由 createSmartAdmin 在挂载前写入,内核各处读这里而不读 import.meta.env ——
11
+ * 库预编译时 import.meta.env 会被静态替换成库自己构建时的值,消费方改不了。
12
+ */
13
+ export declare const runtime: {
14
+ /** API 根地址;空串 = 同源(dev 由 Vite 代理,生产由反代或后端托管 dist) */
15
+ apiBase: string;
16
+ /** 登录页页脚展示的版本号;默认内核版本,消费方可覆盖为应用版本 */
17
+ version: string;
18
+ /** 开发态:登录页预填超管账号、设置抽屉显示「复制配置」 */
19
+ dev: boolean;
20
+ brand: BrandOptions;
21
+ };