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 @@
1
+ {"version":3,"file":"oauthBrand.js","sources":["../../src/utils/oauthBrand.ts"],"sourcesContent":["// 外部登录品牌 UI 纯逻辑:可被 vitest 直接驱动,不依赖浏览器。\n// 契约见 docs/adr/0007-external-login-brand-ui-and-providers.md。\nimport { t } from '#/locales'\n\n/** 登录页最多平铺的品牌圆钮数;超出进「…」菜单。 */\nexport const SSO_VISIBLE_MAX = 4\n\n/** 预置精修品牌标的 provider code(大小写不敏感)。 */\nexport const BRAND_CODES = ['github', 'wechat', 'wecom', 'dingtalk', 'gitee', 'qq'] as const\nexport type BrandCode = (typeof BRAND_CODES)[number]\n\nconst BRAND_SET = new Set<string>(BRAND_CODES)\n\n/**\n * 登录页临时展示全部品牌圆标(图标验收用)。\n * true:铺全 6 个,不做 N=4 溢出;false:恢复仅后端 enabled providers。\n * 图标验收时在本地把 false 改成 true,验收完改回来,不要带着 true 提交。\n */\nexport const PREVIEW_ALL_SSO_BRANDS = false\n\n/**\n * 内置品牌显示名。走 i18n 而非硬编码中文常量表 —— 硬编码在英文界面下会露出「微信/企业微信/钉钉」。\n * 调用方须在 computed 里取值,切语言才会重算。\n */\nexport function brandDisplayName(code: BrandCode): string {\n return t(`oauth.brand.${code}`)\n}\n\n/** 图标预览用的假 provider 列表(与后端是否启用无关)。 */\nexport function previewAllBrandProviders(): SsoProviderLike[] {\n return BRAND_CODES.map(code => ({ code, displayName: brandDisplayName(code) }))\n}\n\n/**\n * 配置页卡片上给出「按账号自动关联」开关的 provider。只有企业微信的外部标识是企业统一分配的账号(userid),\n * 钉钉 / 微信 / GitHub 的标识是 unionid 或数字 id,按账号名对不上本地账号;\n * 自定义 provider 真要开(如 sub 就是工号的 OIDC),到「其他配置」加 sys.externalauth.{code}.linkByAccount。\n */\nexport const LINK_BY_ACCOUNT_CODES: readonly string[] = ['wecom']\n\n/** 配置页一行:内置品牌全展示;registered=后端已装包/已配密钥。 */\nexport type ConfigProviderRow = {\n code: string\n displayName: string\n icon?: string | null\n registered: boolean\n enabled: boolean\n /** 未绑定的外部身份按账号名关联同名本地账号(sys.externalauth.{code}.linkByAccount) */\n linkByAccount: boolean\n}\n\n/**\n * 配置页列表 = 预置品牌(全量) + 其它已注册 code(如 oidc-demo)。\n * 未注册项 registered=false、两个开关强制 false(未部署的方式开了也没用)。\n */\nexport function buildConfigProviderRows(\n registered: readonly {\n code: string\n displayName: string\n icon?: string | null\n enabled: boolean\n linkByAccount?: boolean\n }[],\n): ConfigProviderRow[] {\n const byCode = new Map(registered.map(p => [p.code, p]))\n const rows: ConfigProviderRow[] = []\n const seen = new Set<string>()\n\n for (const code of BRAND_CODES) {\n seen.add(code)\n const r = byCode.get(code)\n rows.push({\n code,\n displayName: r?.displayName || brandDisplayName(code),\n icon: r?.icon ?? null,\n registered: !!r,\n enabled: r ? r.enabled : false,\n linkByAccount: r?.linkByAccount ?? false,\n })\n }\n for (const p of registered) {\n if (seen.has(p.code)) continue\n seen.add(p.code)\n rows.push({\n code: p.code,\n displayName: p.displayName,\n icon: p.icon,\n registered: true,\n enabled: p.enabled,\n linkByAccount: p.linkByAccount ?? false,\n })\n }\n return rows\n}\n\nexport type SsoProviderLike = {\n code: string\n displayName: string\n icon?: string | null\n}\n\nexport type BindingLike = {\n provider: string\n displayName?: string | null\n boundAt: string\n}\n\nexport type IconResolve =\n | { kind: 'brand'; code: BrandCode }\n | { kind: 'iconify'; name: string }\n | { kind: 'letter'; letter: string }\n\nexport type BindingRow = {\n code: string\n displayName: string\n icon?: string | null\n /** false = 运营已关但仍有绑定 */\n enabled: boolean\n binding?: BindingLike\n}\n\n/** 是否为可渲染的 Iconify 名称;拒绝 URL / data URI。 */\nexport function isIconifyName(icon: string | null | undefined): boolean {\n if (icon == null) return false\n const s = icon.trim()\n if (!s) return false\n if (/^https?:\\/\\//i.test(s) || s.startsWith('//') || /^data:/i.test(s)) return false\n // collection:name(离线 Iconify 常见形态)\n return /^[a-z0-9][a-z0-9-]*:[a-z0-9][a-z0-9._-]*$/i.test(s)\n}\n\nexport function isBrandCode(code: string | null | undefined): code is BrandCode {\n return !!code && BRAND_SET.has(code.toLowerCase())\n}\n\n/** brand map → Iconify 名 → 首字母。 */\nexport function resolveProviderIcon(code: string, icon?: string | null): IconResolve {\n const c = (code ?? '').trim().toLowerCase()\n if (isBrandCode(c)) return { kind: 'brand', code: c }\n if (isIconifyName(icon)) return { kind: 'iconify', name: icon!.trim() }\n const letter = (code ?? '?').trim().charAt(0).toUpperCase() || '?'\n return { kind: 'letter', letter }\n}\n\nconst WECOM_AUTO_LOGIN_KEY = 'smart.sso.wecomAutoLogin'\n\n/**\n * 在企业微信客户端里打开登录页时,是否直接发起企业微信登录(客户端内走网页授权,静默、不用点)。\n * 企业微信的 UA 带 wxwork(同时也带微信的 MicroMessenger,不能拿它判断)。\n * 每个浏览器会话只返回一次 true:登录失败或主动退出后再回到登录页就停下,让人自己选登录方式,不会来回跳。\n */\nexport function claimWeComAutoLogin(opts: {\n userAgent: string\n providers: readonly { code: string }[]\n storage: Pick<Storage, 'getItem' | 'setItem'>\n}): boolean {\n if (!/wxwork/i.test(opts.userAgent)) return false\n if (!opts.providers.some(p => p.code === 'wecom')) return false\n try {\n if (opts.storage.getItem(WECOM_AUTO_LOGIN_KEY)) return false\n opts.storage.setItem(WECOM_AUTO_LOGIN_KEY, '1')\n return true\n } catch {\n // 存储不可用时记不住「已经跳过一次」,宁可不自动跳\n return false\n }\n}\n\n/** 严格保序切分:前 max 平铺,其余进溢出。 */\nexport function splitLoginProviders<T>(\n providers: readonly T[],\n maxVisible = SSO_VISIBLE_MAX,\n): {\n visible: T[]\n overflow: T[]\n} {\n const list = providers.slice()\n if (list.length <= maxVisible) return { visible: list, overflow: [] }\n return { visible: list.slice(0, maxVisible), overflow: list.slice(maxVisible) }\n}\n\n/**\n * 绑定页行:已启用 providers(API 序) ∪ 仅存在于 bindings 的已停用项(接在后面)。\n * 不做 N=4 截断。\n */\nexport function mergeBindingRows(\n providers: readonly SsoProviderLike[],\n bindings: readonly BindingLike[],\n): BindingRow[] {\n const bindByProvider = new Map<string, BindingLike>()\n for (const b of bindings) bindByProvider.set(b.provider, b)\n\n const rows: BindingRow[] = []\n const seen = new Set<string>()\n\n for (const p of providers) {\n seen.add(p.code)\n rows.push({\n code: p.code,\n displayName: p.displayName,\n icon: p.icon,\n enabled: true,\n binding: bindByProvider.get(p.code),\n })\n }\n\n for (const b of bindings) {\n if (seen.has(b.provider)) continue\n rows.push({\n code: b.provider,\n displayName: (b.displayName && b.displayName.trim()) || b.provider,\n icon: null,\n enabled: false,\n binding: b,\n })\n }\n\n return rows\n}\n"],"names":["SSO_VISIBLE_MAX","BRAND_CODES","BRAND_SET","PREVIEW_ALL_SSO_BRANDS","brandDisplayName","code","t","previewAllBrandProviders","LINK_BY_ACCOUNT_CODES","buildConfigProviderRows","registered","byCode","p","rows","seen","r","isIconifyName","icon","s","isBrandCode","resolveProviderIcon","c","WECOM_AUTO_LOGIN_KEY","claimWeComAutoLogin","opts","splitLoginProviders","providers","maxVisible","list","mergeBindingRows","bindings","bindByProvider","b"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /** 平铺列表 → 树。按 parentId 挂到父的 children;根 = parentId 不在集合内(含 0)。
2
+ * 原序保留(输入通常已按 sort、id 排好);孤儿(父不存在)兜底当根,不丢数据。
3
+ * 两个消费点:OrgTreeSelect、机构管理页。 */
4
+ export type Tree<T> = T & {
5
+ children?: Tree<T>[];
6
+ };
7
+ export declare function buildTree<T extends {
8
+ id: number;
9
+ parentId: number;
10
+ }>(flat: T[]): Tree<T>[];
11
+ /**
12
+ * 按谓词剪枝:命中的节点保留(连同它的整棵子树——搜到一个目录,自然想看它下面有什么),
13
+ * 未命中但有后代命中的节点作为**祖先链**保留(否则命中的节点在树里无处安放,只剩一堆没有上下文的叶子)。
14
+ *
15
+ * 命中节点返回的是**原对象引用**(零拷贝);只有"仅因后代命中而保留"的祖先才是浅拷贝(children 换成剪过的分支)。
16
+ * 因此在搜索态下,直接往行对象上写值(`r.enabled = v`)对这些祖先行不会回写到源树 ——
17
+ * 调用方要么改从源树写,要么变更后重拉(机构页选了后者,与它其余所有变更的做法一致)。
18
+ *
19
+ * 两个消费点:菜单管理页、机构管理页。
20
+ */
21
+ export declare function filterTree<T extends {
22
+ children?: T[];
23
+ }>(nodes: T[], match: (node: T) => boolean): T[];
24
+ /** 收集树中所有"可展开"节点(有子节点)的 id —— 受控展开时用它播种"全部展开"。 */
25
+ export declare function expandableIds<T extends {
26
+ id: number;
27
+ children?: T[];
28
+ }>(nodes: T[]): number[];
29
+ /** 收集 rootId 及其全部后代 id(平铺数组上按 parentId 迭代到不动点)。编辑机构选上级时剪自身子树防成环。 */
30
+ export declare function collectSubtreeIds<T extends {
31
+ id: number;
32
+ parentId: number;
33
+ }>(flat: T[], rootId: number): Set<number>;
@@ -0,0 +1,47 @@
1
+ function c(s) {
2
+ const o = /* @__PURE__ */ new Map();
3
+ for (const e of s) o.set(e.id, { ...e });
4
+ const n = [];
5
+ for (const e of s) {
6
+ const t = o.get(e.id), i = o.get(e.parentId);
7
+ i ? (i.children ?? (i.children = [])).push(t) : n.push(t);
8
+ }
9
+ return n;
10
+ }
11
+ function r(s, o) {
12
+ const n = [];
13
+ for (const e of s) {
14
+ if (o(e)) {
15
+ n.push(e);
16
+ continue;
17
+ }
18
+ const t = r(e.children ?? [], o);
19
+ t.length && n.push({ ...e, children: t });
20
+ }
21
+ return n;
22
+ }
23
+ function d(s) {
24
+ const o = [], n = (e) => {
25
+ var t;
26
+ for (const i of e)
27
+ (t = i.children) != null && t.length && (o.push(i.id), n(i.children));
28
+ };
29
+ return n(s), o;
30
+ }
31
+ function f(s, o) {
32
+ const n = /* @__PURE__ */ new Set([o]);
33
+ let e = !0;
34
+ for (; e; ) {
35
+ e = !1;
36
+ for (const t of s)
37
+ !n.has(t.id) && n.has(t.parentId) && (n.add(t.id), e = !0);
38
+ }
39
+ return n;
40
+ }
41
+ export {
42
+ c as buildTree,
43
+ f as collectSubtreeIds,
44
+ d as expandableIds,
45
+ r as filterTree
46
+ };
47
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sources":["../../src/utils/tree.ts"],"sourcesContent":["/** 平铺列表 → 树。按 parentId 挂到父的 children;根 = parentId 不在集合内(含 0)。\n * 原序保留(输入通常已按 sort、id 排好);孤儿(父不存在)兜底当根,不丢数据。\n * 两个消费点:OrgTreeSelect、机构管理页。 */\nexport type Tree<T> = T & { children?: Tree<T>[] }\n\nexport function buildTree<T extends { id: number; parentId: number }>(flat: T[]): Tree<T>[] {\n const map = new Map<number, Tree<T>>()\n for (const item of flat) map.set(item.id, { ...item })\n const roots: Tree<T>[] = []\n for (const item of flat) {\n const node = map.get(item.id)!\n const parent = map.get(item.parentId)\n if (parent) (parent.children ??= []).push(node)\n else roots.push(node)\n }\n return roots\n}\n\n/**\n * 按谓词剪枝:命中的节点保留(连同它的整棵子树——搜到一个目录,自然想看它下面有什么),\n * 未命中但有后代命中的节点作为**祖先链**保留(否则命中的节点在树里无处安放,只剩一堆没有上下文的叶子)。\n *\n * 命中节点返回的是**原对象引用**(零拷贝);只有\"仅因后代命中而保留\"的祖先才是浅拷贝(children 换成剪过的分支)。\n * 因此在搜索态下,直接往行对象上写值(`r.enabled = v`)对这些祖先行不会回写到源树 ——\n * 调用方要么改从源树写,要么变更后重拉(机构页选了后者,与它其余所有变更的做法一致)。\n *\n * 两个消费点:菜单管理页、机构管理页。\n */\nexport function filterTree<T extends { children?: T[] }>(\n nodes: T[],\n match: (node: T) => boolean,\n): T[] {\n const out: T[] = []\n for (const node of nodes) {\n if (match(node)) {\n out.push(node)\n continue\n }\n const kids = filterTree(node.children ?? [], match)\n if (kids.length) out.push({ ...node, children: kids })\n }\n return out\n}\n\n/** 收集树中所有\"可展开\"节点(有子节点)的 id —— 受控展开时用它播种\"全部展开\"。 */\nexport function expandableIds<T extends { id: number; children?: T[] }>(nodes: T[]): number[] {\n const ids: number[] = []\n const walk = (list: T[]) => {\n for (const n of list) {\n if (n.children?.length) {\n ids.push(n.id)\n walk(n.children)\n }\n }\n }\n walk(nodes)\n return ids\n}\n\n/** 收集 rootId 及其全部后代 id(平铺数组上按 parentId 迭代到不动点)。编辑机构选上级时剪自身子树防成环。 */\nexport function collectSubtreeIds<T extends { id: number; parentId: number }>(\n flat: T[],\n rootId: number,\n): Set<number> {\n const ids = new Set<number>([rootId])\n let grew = true\n while (grew) {\n grew = false\n for (const item of flat) {\n if (!ids.has(item.id) && ids.has(item.parentId)) {\n ids.add(item.id)\n grew = true\n }\n }\n }\n return ids\n}\n"],"names":["buildTree","flat","map","item","roots","node","parent","filterTree","nodes","match","out","kids","expandableIds","ids","walk","list","_a","n","collectSubtreeIds","rootId","grew"],"mappings":"AAKO,SAASA,EAAsDC,GAAsB;AAC1F,QAAMC,wBAAU,IAAA;AAChB,aAAWC,KAAQF,EAAM,CAAAC,EAAI,IAAIC,EAAK,IAAI,EAAE,GAAGA,GAAM;AACrD,QAAMC,IAAmB,CAAA;AACzB,aAAWD,KAAQF,GAAM;AACvB,UAAMI,IAAOH,EAAI,IAAIC,EAAK,EAAE,GACtBG,IAASJ,EAAI,IAAIC,EAAK,QAAQ;AACpC,IAAIG,KAASA,EAAO,aAAPA,EAAO,WAAa,CAAA,IAAI,KAAKD,CAAI,IACzCD,EAAM,KAAKC,CAAI;AAAA,EACtB;AACA,SAAOD;AACT;AAYO,SAASG,EACdC,GACAC,GACK;AACL,QAAMC,IAAW,CAAA;AACjB,aAAWL,KAAQG,GAAO;AACxB,QAAIC,EAAMJ,CAAI,GAAG;AACf,MAAAK,EAAI,KAAKL,CAAI;AACb;AAAA,IACF;AACA,UAAMM,IAAOJ,EAAWF,EAAK,YAAY,CAAA,GAAII,CAAK;AAClD,IAAIE,EAAK,UAAQD,EAAI,KAAK,EAAE,GAAGL,GAAM,UAAUM,GAAM;AAAA,EACvD;AACA,SAAOD;AACT;AAGO,SAASE,EAAwDJ,GAAsB;AAC5F,QAAMK,IAAgB,CAAA,GAChBC,IAAO,CAACC,MAAc;AA1CvB,QAAAC;AA2CH,eAAWC,KAAKF;AACd,OAAIC,IAAAC,EAAE,aAAF,QAAAD,EAAY,WACdH,EAAI,KAAKI,EAAE,EAAE,GACbH,EAAKG,EAAE,QAAQ;AAAA,EAGrB;AACA,SAAAH,EAAKN,CAAK,GACHK;AACT;AAGO,SAASK,EACdjB,GACAkB,GACa;AACb,QAAMN,IAAM,oBAAI,IAAY,CAACM,CAAM,CAAC;AACpC,MAAIC,IAAO;AACX,SAAOA,KAAM;AACX,IAAAA,IAAO;AACP,eAAWjB,KAAQF;AACjB,MAAI,CAACY,EAAI,IAAIV,EAAK,EAAE,KAAKU,EAAI,IAAIV,EAAK,QAAQ,MAC5CU,EAAI,IAAIV,EAAK,EAAE,GACfiB,IAAO;AAAA,EAGb;AACA,SAAOP;AACT;"}
@@ -0,0 +1,7 @@
1
+ /** 解析 UA。空串/未知返回空字段,由调用方决定占位符。 */
2
+ export declare function parseUserAgent(ua?: string | null): {
3
+ browser: string;
4
+ os: string;
5
+ };
6
+ /** 单行摘要,如 "Chrome · Windows 10/11";全未识别回落原始串,再空则 "—"。 */
7
+ export declare function uaSummary(ua?: string | null): string;
@@ -0,0 +1,33 @@
1
+ const s = [
2
+ [/Edg(?:e|A|iOS)?\//, "Edge"],
3
+ [/OPR\/|Opera/, "Opera"],
4
+ [/Firefox\/|FxiOS/, "Firefox"],
5
+ [/Chrome\/|CriOS/, "Chrome"],
6
+ [/Safari\//, "Safari"],
7
+ [/MSIE |Trident\//, "IE"]
8
+ ], t = [
9
+ [/Windows NT 10/, "Windows 10/11"],
10
+ [/Windows NT 6\.3/, "Windows 8.1"],
11
+ [/Windows NT 6\.[12]/, "Windows 7/8"],
12
+ [/Windows/, "Windows"],
13
+ [/iPhone|iPad|iPod/, "iOS"],
14
+ [/Mac OS X|Macintosh/, "macOS"],
15
+ [/Android/, "Android"],
16
+ [/Linux/, "Linux"]
17
+ ];
18
+ function e(o, r) {
19
+ for (const [i, n] of r) if (i.test(o)) return n;
20
+ return "";
21
+ }
22
+ function d(o) {
23
+ return o ? { browser: e(o, s), os: e(o, t) } : { browser: "", os: "" };
24
+ }
25
+ function S(o) {
26
+ const { browser: r, os: i } = d(o), n = [r, i].filter(Boolean);
27
+ return n.length ? n.join(" · ") : o || "—";
28
+ }
29
+ export {
30
+ d as parseUserAgent,
31
+ S as uaSummary
32
+ };
33
+ //# sourceMappingURL=ua.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ua.js","sources":["../../src/utils/ua.ts"],"sourcesContent":["// User-Agent 轻量解析:原始 UA 串 → 浏览器 / 操作系统摘要,供日志/会话列表展示。\n// ponytail: 正则启发式,只认主流浏览器+系统,够后台\"一眼分辨设备\"用;要精确设备指纹再引 ua-parser-js。\n// 刻意放前端——后端内核只存原始 UA、不引解析依赖(核心包只依赖 SqlSugar + Microsoft.*)。\n\n/** 顺序敏感:Edge 含 Chrome 标记、Opera 含 Chrome 标记,故派生浏览器要排在 Chrome 前。 */\nconst BROWSERS: [RegExp, string][] = [\n [/Edg(?:e|A|iOS)?\\//, 'Edge'],\n [/OPR\\/|Opera/, 'Opera'],\n [/Firefox\\/|FxiOS/, 'Firefox'],\n [/Chrome\\/|CriOS/, 'Chrome'],\n [/Safari\\//, 'Safari'],\n [/MSIE |Trident\\//, 'IE'],\n]\n\nconst SYSTEMS: [RegExp, string][] = [\n [/Windows NT 10/, 'Windows 10/11'],\n [/Windows NT 6\\.3/, 'Windows 8.1'],\n [/Windows NT 6\\.[12]/, 'Windows 7/8'],\n [/Windows/, 'Windows'],\n [/iPhone|iPad|iPod/, 'iOS'],\n [/Mac OS X|Macintosh/, 'macOS'],\n [/Android/, 'Android'],\n [/Linux/, 'Linux'],\n]\n\nfunction match(ua: string, table: [RegExp, string][]): string {\n for (const [re, name] of table) if (re.test(ua)) return name\n return ''\n}\n\n/** 解析 UA。空串/未知返回空字段,由调用方决定占位符。 */\nexport function parseUserAgent(ua?: string | null): { browser: string; os: string } {\n if (!ua) return { browser: '', os: '' }\n return { browser: match(ua, BROWSERS), os: match(ua, SYSTEMS) }\n}\n\n/** 单行摘要,如 \"Chrome · Windows 10/11\";全未识别回落原始串,再空则 \"—\"。 */\nexport function uaSummary(ua?: string | null): string {\n const { browser, os } = parseUserAgent(ua)\n const parts = [browser, os].filter(Boolean)\n return parts.length ? parts.join(' · ') : ua || '—'\n}\n"],"names":["BROWSERS","SYSTEMS","match","ua","table","re","name","parseUserAgent","uaSummary","browser","os","parts"],"mappings":"AAKA,MAAMA,IAA+B;AAAA,EACnC,CAAC,qBAAqB,MAAM;AAAA,EAC5B,CAAC,eAAe,OAAO;AAAA,EACvB,CAAC,mBAAmB,SAAS;AAAA,EAC7B,CAAC,kBAAkB,QAAQ;AAAA,EAC3B,CAAC,YAAY,QAAQ;AAAA,EACrB,CAAC,mBAAmB,IAAI;AAC1B,GAEMC,IAA8B;AAAA,EAClC,CAAC,iBAAiB,eAAe;AAAA,EACjC,CAAC,mBAAmB,aAAa;AAAA,EACjC,CAAC,sBAAsB,aAAa;AAAA,EACpC,CAAC,WAAW,SAAS;AAAA,EACrB,CAAC,oBAAoB,KAAK;AAAA,EAC1B,CAAC,sBAAsB,OAAO;AAAA,EAC9B,CAAC,WAAW,SAAS;AAAA,EACrB,CAAC,SAAS,OAAO;AACnB;AAEA,SAASC,EAAMC,GAAYC,GAAmC;AAC5D,aAAW,CAACC,GAAIC,CAAI,KAAKF,OAAWC,EAAG,KAAKF,CAAE,EAAG,QAAOG;AACxD,SAAO;AACT;AAGO,SAASC,EAAeJ,GAAqD;AAClF,SAAKA,IACE,EAAE,SAASD,EAAMC,GAAIH,CAAQ,GAAG,IAAIE,EAAMC,GAAIF,CAAO,EAAA,IAD5C,EAAE,SAAS,IAAI,IAAI,GAAA;AAErC;AAGO,SAASO,EAAUL,GAA4B;AACpD,QAAM,EAAE,SAAAM,GAAS,IAAAC,MAAOH,EAAeJ,CAAE,GACnCQ,IAAQ,CAACF,GAASC,CAAE,EAAE,OAAO,OAAO;AAC1C,SAAOC,EAAM,SAASA,EAAM,KAAK,KAAK,IAAIR,KAAM;AAClD;"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 是否 http(s) 绝对 URL。外链/iframe 菜单的约定判据:
3
+ * - 外链菜单:节点 path 为 URL(component 空)→ 点击 window.open,不建路由。
4
+ * - 内嵌 iframe 菜单:节点 component 为 URL(path 为内部路径)→ 注册通用 iframe 视图,URL 进 meta.iframeSrc。
5
+ */
6
+ export declare function isHttpUrl(s: string | undefined | null): boolean;
7
+ /** 整屏页路由前缀:这类路由注册在布局壳之外,占满整个窗口(车间大屏看板等)。 */
8
+ export declare const FULLSCREEN_PATH_PREFIX = "/fullscreen/";
9
+ /**
10
+ * 是否「站内整屏页」菜单:节点 path 以 {@link FULLSCREEN_PATH_PREFIX} 开头、component 空。
11
+ *
12
+ * 与外链菜单同样走 `window.open` 新标签打开,但目标是站内静态路由而不是外部 URL——
13
+ * 大屏看板挂在墙上,必须整屏无侧栏无标签栏,塞进布局壳里就没意义了;
14
+ * 又不能像外链那样写死 `http://host/...`,那会把部署域名钉死在菜单数据里。
15
+ */
16
+ export declare function isFullscreenPath(s: string | undefined | null): boolean;
@@ -0,0 +1,13 @@
1
+ function r(t) {
2
+ return !!t && /^https?:\/\//i.test(t);
3
+ }
4
+ const n = "/fullscreen/";
5
+ function e(t) {
6
+ return !!t && t.startsWith(n);
7
+ }
8
+ export {
9
+ n as FULLSCREEN_PATH_PREFIX,
10
+ e as isFullscreenPath,
11
+ r as isHttpUrl
12
+ };
13
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.js","sources":["../../src/utils/url.ts"],"sourcesContent":["/**\n * 是否 http(s) 绝对 URL。外链/iframe 菜单的约定判据:\n * - 外链菜单:节点 path 为 URL(component 空)→ 点击 window.open,不建路由。\n * - 内嵌 iframe 菜单:节点 component 为 URL(path 为内部路径)→ 注册通用 iframe 视图,URL 进 meta.iframeSrc。\n */\nexport function isHttpUrl(s: string | undefined | null): boolean {\n return !!s && /^https?:\\/\\//i.test(s)\n}\n\n/** 整屏页路由前缀:这类路由注册在布局壳之外,占满整个窗口(车间大屏看板等)。 */\nexport const FULLSCREEN_PATH_PREFIX = '/fullscreen/'\n\n/**\n * 是否「站内整屏页」菜单:节点 path 以 {@link FULLSCREEN_PATH_PREFIX} 开头、component 空。\n *\n * 与外链菜单同样走 `window.open` 新标签打开,但目标是站内静态路由而不是外部 URL——\n * 大屏看板挂在墙上,必须整屏无侧栏无标签栏,塞进布局壳里就没意义了;\n * 又不能像外链那样写死 `http://host/...`,那会把部署域名钉死在菜单数据里。\n */\nexport function isFullscreenPath(s: string | undefined | null): boolean {\n return !!s && s.startsWith(FULLSCREEN_PATH_PREFIX)\n}\n"],"names":["isHttpUrl","s","FULLSCREEN_PATH_PREFIX","isFullscreenPath"],"mappings":"AAKO,SAASA,EAAUC,GAAuC;AAC/D,SAAO,CAAC,CAACA,KAAK,gBAAgB,KAAKA,CAAC;AACtC;AAGO,MAAMC,IAAyB;AAS/B,SAASC,EAAiBF,GAAuC;AACtE,SAAO,CAAC,CAACA,KAAKA,EAAE,WAAWC,CAAsB;AACnD;"}
@@ -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 "./biz2.vue.js";
2
+ /* empty css */
3
+ import t from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-e7ff753e"]]);
5
+ export {
6
+ m as default
7
+ };
8
+ //# sourceMappingURL=biz.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biz.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,136 @@
1
+ import { defineComponent as B, computed as b, ref as T, onMounted as V, openBlock as o, createElementBlock as u, createElementVNode as s, normalizeStyle as $, createVNode as d, unref as e, toDisplayString as a, withCtx as r, Fragment as z, renderList as N, createBlock as p, createTextVNode as _, createCommentVNode as E } from "vue";
2
+ import { NCard as g, NButton as w, NEmpty as C, NList as L, NListItem as R } from "naive-ui";
3
+ import { Icon as D } from "@iconify/vue";
4
+ import { useI18n as M } from "vue-i18n";
5
+ import { useRoute as F, useRouter as G } from "vue-router";
6
+ import { useUserStore as U } from "../../stores/user.js";
7
+ import { useAuthStore as j } from "../../stores/auth.js";
8
+ import { useAppStore as H } from "../../stores/app.js";
9
+ import { btnGrad as J } from "../../theme/mix.js";
10
+ import { noticeApi as K } from "../../api/index.js";
11
+ import O from "../../components/AppIcon.vue.js";
12
+ import { fmtDateTime as P } from "../../utils/format.js";
13
+ const Q = { class: "view" }, W = { class: "banner" }, X = { class: "hi" }, Y = { class: "tip" }, Z = {
14
+ key: 0,
15
+ class: "quick"
16
+ }, ee = { class: "notice-title" }, te = {
17
+ key: 0,
18
+ class: "dot"
19
+ }, oe = { class: "notice-time" }, _e = /* @__PURE__ */ B({
20
+ __name: "biz",
21
+ setup(ie) {
22
+ const { t: c } = M(), v = U(), S = j(), x = H(), I = F(), f = G(), q = b(() => ({ background: J(x.accent) }));
23
+ function k(m) {
24
+ var l;
25
+ const i = [];
26
+ for (const n of m)
27
+ n.visible && ((l = n.children) != null && l.length ? i.push(...k(n.children)) : n.path && i.push(n));
28
+ return i;
29
+ }
30
+ const y = b(() => k(S.menuTree).filter((m) => m.path !== I.path)), h = T([]);
31
+ return V(async () => {
32
+ try {
33
+ h.value = (await K.mine({ page: 1, pageSize: 5 })).items;
34
+ } catch {
35
+ }
36
+ }), (m, i) => {
37
+ var l, n;
38
+ return o(), u("div", Q, [
39
+ s("div", W, [
40
+ s("div", {
41
+ class: "avatar",
42
+ style: $(q.value)
43
+ }, [
44
+ d(e(D), {
45
+ icon: "ph:user",
46
+ width: 26,
47
+ color: "#fff"
48
+ })
49
+ ], 4),
50
+ s("div", null, [
51
+ s("div", X, a(e(c)("biz.welcome", { name: ((l = e(v).userInfo) == null ? void 0 : l.name) ?? ((n = e(v).userInfo) == null ? void 0 : n.account) ?? "" })), 1),
52
+ s("div", Y, a(e(c)("biz.subtitle")), 1)
53
+ ])
54
+ ]),
55
+ d(e(g), {
56
+ title: e(c)("biz.quick"),
57
+ bordered: !0
58
+ }, {
59
+ default: r(() => [
60
+ y.value.length ? (o(), u("div", Z, [
61
+ (o(!0), u(z, null, N(y.value, (t) => (o(), p(e(w), {
62
+ key: t.id,
63
+ secondary: "",
64
+ onClick: (A) => e(f).push(t.path)
65
+ }, {
66
+ icon: r(() => [
67
+ d(O, {
68
+ icon: t.icon || "ph:squares-four",
69
+ size: 16
70
+ }, null, 8, ["icon"])
71
+ ]),
72
+ default: r(() => [
73
+ _(" " + a(t.title), 1)
74
+ ]),
75
+ _: 2
76
+ }, 1032, ["onClick"]))), 128))
77
+ ])) : (o(), p(e(C), {
78
+ key: 1,
79
+ description: e(c)("biz.noMenus")
80
+ }, null, 8, ["description"]))
81
+ ]),
82
+ _: 1
83
+ }, 8, ["title"]),
84
+ d(e(g), {
85
+ title: e(c)("biz.notices"),
86
+ bordered: !0
87
+ }, {
88
+ "header-extra": r(() => [
89
+ d(e(w), {
90
+ text: "",
91
+ type: "primary",
92
+ onClick: i[0] || (i[0] = (t) => e(f).push("/personal/notice"))
93
+ }, {
94
+ default: r(() => [
95
+ _(a(e(c)("biz.viewAll")), 1)
96
+ ]),
97
+ _: 1
98
+ })
99
+ ]),
100
+ default: r(() => [
101
+ h.value.length ? (o(), p(e(L), {
102
+ key: 0,
103
+ "show-divider": !1
104
+ }, {
105
+ default: r(() => [
106
+ (o(!0), u(z, null, N(h.value, (t) => (o(), p(e(R), {
107
+ key: t.id
108
+ }, {
109
+ default: r(() => [
110
+ s("div", {
111
+ class: "notice-row",
112
+ onClick: i[1] || (i[1] = (A) => e(f).push("/personal/notice"))
113
+ }, [
114
+ s("span", ee, [
115
+ t.isRead ? E("", !0) : (o(), u("span", te)),
116
+ _(" " + a(t.title), 1)
117
+ ]),
118
+ s("span", oe, a(e(P)(t.publishTime, { seconds: !1 })), 1)
119
+ ])
120
+ ]),
121
+ _: 2
122
+ }, 1024))), 128))
123
+ ]),
124
+ _: 1
125
+ })) : (o(), p(e(C), { key: 1 }))
126
+ ]),
127
+ _: 1
128
+ }, 8, ["title"])
129
+ ]);
130
+ };
131
+ }
132
+ });
133
+ export {
134
+ _e as default
135
+ };
136
+ //# sourceMappingURL=biz2.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biz2.vue.js","sources":["../../../src/views/dashboard/biz.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 业务系统的工作台。每个应用一个首页组件——这里和 dashboard/workbench.vue 是两个独立页面,\n// 由各自应用的「工作台」菜单(component 字段)指向,切应用即换首页。\n// 全部真数据拼装:欢迎卡(user store)+ 快捷入口(当前应用菜单树的可见叶子)+ 我的通知(notice/mine)。\n// 应用要换成自己的业务统计,在自己的 views/ 下放同 key(dashboard/biz)的页面覆盖本页;别造写死的假数字。\nimport { computed, onMounted, ref } from 'vue'\nimport { NCard, NButton, NList, NListItem, NEmpty } from 'naive-ui'\nimport { Icon } from '@iconify/vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRoute, useRouter } from 'vue-router'\nimport { useUserStore } from '#/stores/user'\nimport { useAuthStore } from '#/stores/auth'\nimport { useAppStore } from '#/stores/app'\nimport { btnGrad } from '#/theme/mix'\nimport { noticeApi } from '#/api'\nimport type { NoticeMineItem } from '#/types/api'\nimport type { MenuNode } from '#/types/menu'\nimport AppIcon from '#/components/AppIcon.vue'\nimport { fmtDateTime } from '#/utils/format'\n\nconst { t } = useI18n()\nconst user = useUserStore()\nconst auth = useAuthStore()\nconst app = useAppStore()\nconst route = useRoute()\nconst router = useRouter()\n\nconst avatarStyle = computed(() => ({ background: btnGrad(app.accent) }))\n\n/** 当前应用菜单树的可见叶子(带 path)= 快捷入口;排除本页自身。 */\nfunction leaves(tree: MenuNode[]): MenuNode[] {\n const out: MenuNode[] = []\n for (const n of tree) {\n if (!n.visible) continue\n if (n.children?.length) out.push(...leaves(n.children))\n else if (n.path) out.push(n)\n }\n return out\n}\nconst quick = computed(() => leaves(auth.menuTree).filter(n => n.path !== route.path))\n\nconst notices = ref<NoticeMineItem[]>([])\nonMounted(async () => {\n try {\n notices.value = (await noticeApi.mine({ page: 1, pageSize: 5 })).items\n } catch {\n // 首页不因一张卡挂了糊用户一脸红(同 workbench):通知取不到就空态,其余照常可用。\n }\n})\n</script>\n\n<template>\n <div class=\"view\">\n <!-- 欢迎横幅(与 workbench 同语法:btnGrad 头像 + 主副标题) -->\n <div class=\"banner\">\n <div class=\"avatar\" :style=\"avatarStyle\">\n <Icon icon=\"ph:user\" :width=\"26\" color=\"#fff\" />\n </div>\n <div>\n <div class=\"hi\">\n {{ t('biz.welcome', { name: user.userInfo?.name ?? user.userInfo?.account ?? '' }) }}\n </div>\n <div class=\"tip\">{{ t('biz.subtitle') }}</div>\n </div>\n </div>\n\n <n-card :title=\"t('biz.quick')\" :bordered=\"true\">\n <div v-if=\"quick.length\" class=\"quick\">\n <n-button v-for=\"m in quick\" :key=\"m.id\" secondary @click=\"router.push(m.path!)\">\n <template #icon><AppIcon :icon=\"m.icon || 'ph:squares-four'\" :size=\"16\" /></template>\n {{ m.title }}\n </n-button>\n </div>\n <n-empty v-else :description=\"t('biz.noMenus')\" />\n </n-card>\n\n <n-card :title=\"t('biz.notices')\" :bordered=\"true\">\n <template #header-extra>\n <n-button text type=\"primary\" @click=\"router.push('/personal/notice')\">\n {{ t('biz.viewAll') }}\n </n-button>\n </template>\n <n-list v-if=\"notices.length\" :show-divider=\"false\">\n <n-list-item v-for=\"n in notices\" :key=\"n.id\">\n <div class=\"notice-row\" @click=\"router.push('/personal/notice')\">\n <span class=\"notice-title\">\n <span v-if=\"!n.isRead\" class=\"dot\" />\n {{ n.title }}\n </span>\n <span class=\"notice-time\">{{ fmtDateTime(n.publishTime, { seconds: false }) }}</span>\n </div>\n </n-list-item>\n </n-list>\n <n-empty v-else />\n </n-card>\n </div>\n</template>\n\n<style scoped>\n.view {\n display: flex;\n flex-direction: column;\n gap: var(--gap-card);\n}\n.banner {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 24px;\n border-radius: var(--radius-lg);\n background: var(--color-primary-light);\n}\n.avatar {\n width: 52px;\n height: 52px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.hi {\n font-size: var(--font-size-lg);\n font-weight: 600;\n color: var(--color-text-primary);\n}\n.tip {\n color: var(--color-text-secondary);\n margin-top: 4px;\n}\n.quick {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n.notice-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n cursor: pointer;\n}\n.notice-title {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--color-text-primary);\n}\n.dot {\n flex-shrink: 0;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--color-primary);\n}\n.notice-time {\n flex-shrink: 0;\n color: var(--color-text-secondary);\n font-size: 12px;\n}\n</style>\n"],"names":["t","useI18n","user","useUserStore","auth","useAuthStore","app","useAppStore","route","useRoute","router","useRouter","avatarStyle","computed","btnGrad","leaves","tree","out","_a","quick","n","notices","ref","onMounted","noticeApi","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createVNode","_unref","Icon","_hoisted_3","_toDisplayString","_hoisted_4","NCard","_hoisted_5","_Fragment","_renderList","m","_createBlock","NButton","AppIcon","NEmpty","_cache","$event","NList","NListItem","_hoisted_6","_hoisted_7","_hoisted_8"],"mappings":"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"}
@@ -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 "./workbench2.vue.js";
2
+ /* empty css */
3
+ import r from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const p = /* @__PURE__ */ r(o, [["__scopeId", "data-v-a20971bd"]]);
5
+ export {
6
+ p as default
7
+ };
8
+ //# sourceMappingURL=workbench.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbench.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,195 @@
1
+ import { defineComponent as I, computed as v, ref as b, onMounted as L, openBlock as s, createElementBlock as _, createElementVNode as n, normalizeStyle as w, createVNode as l, unref as e, toDisplayString as h, withCtx as u, Fragment as $, renderList as E, createBlock as d } from "vue";
2
+ import { NGrid as g, NGi as f, NCard as k, NSkeleton as y } from "naive-ui";
3
+ import { Icon as x } from "@iconify/vue";
4
+ import { useI18n as T } from "vue-i18n";
5
+ import { useUserStore as U } from "../../stores/user.js";
6
+ import { useAppStore as V } from "../../stores/app.js";
7
+ import { btnGrad as z } from "../../theme/mix.js";
8
+ import { dashboardApi as F } from "../../api/index.js";
9
+ import M from "../../components/Chart/LineChart.vue.js";
10
+ import j from "../../components/Chart/PieChart.vue.js";
11
+ const q = { class: "view" }, H = { class: "banner" }, J = { class: "hi" }, K = { class: "tip" }, O = { class: "stat" }, P = { class: "stat-body" }, Q = {
12
+ key: 1,
13
+ class: "stat-val tabular"
14
+ }, R = { class: "stat-label" }, le = /* @__PURE__ */ I({
15
+ __name: "workbench",
16
+ setup(W) {
17
+ const { t: r } = T(), S = U(), N = V(), A = v(() => ({ background: z(N.accent) })), o = b(null), m = b(!0);
18
+ L(async () => {
19
+ try {
20
+ o.value = await F.summary();
21
+ } catch {
22
+ } finally {
23
+ m.value = !1;
24
+ }
25
+ });
26
+ function p(t) {
27
+ return t === void 0 ? "—" : t;
28
+ }
29
+ const B = v(() => {
30
+ var t, a, c, i;
31
+ return [
32
+ {
33
+ key: "roles",
34
+ icon: "ph:shield-duotone",
35
+ value: p((t = o.value) == null ? void 0 : t.roles),
36
+ color: "var(--color-primary)"
37
+ },
38
+ {
39
+ key: "users",
40
+ icon: "ph:users-duotone",
41
+ value: p((a = o.value) == null ? void 0 : a.users),
42
+ color: "var(--color-success)"
43
+ },
44
+ {
45
+ key: "perms",
46
+ icon: "ph:key-duotone",
47
+ value: p((c = o.value) == null ? void 0 : c.perms),
48
+ color: "var(--color-warning)"
49
+ },
50
+ {
51
+ key: "online",
52
+ icon: "ph:broadcast-duotone",
53
+ value: p((i = o.value) == null ? void 0 : i.onlineSessions),
54
+ color: "var(--color-danger)"
55
+ }
56
+ ];
57
+ }), C = v(() => {
58
+ var t;
59
+ return ((t = o.value) == null ? void 0 : t.trendDays) ?? [];
60
+ }), D = v(() => {
61
+ var t, a;
62
+ return [
63
+ { name: r("workbench.trendLogins"), data: ((t = o.value) == null ? void 0 : t.trendLogins) ?? [] },
64
+ { name: r("workbench.trendActive"), data: ((a = o.value) == null ? void 0 : a.trendActiveUsers) ?? [] }
65
+ ];
66
+ }), G = v(() => {
67
+ var t, a, c;
68
+ return [
69
+ { name: r("workbench.roles"), value: ((t = o.value) == null ? void 0 : t.roles) ?? 0 },
70
+ { name: r("workbench.users"), value: ((a = o.value) == null ? void 0 : a.users) ?? 0 },
71
+ { name: r("workbench.perms"), value: ((c = o.value) == null ? void 0 : c.perms) ?? 0 }
72
+ ];
73
+ });
74
+ return (t, a) => {
75
+ var c;
76
+ return s(), _("div", q, [
77
+ n("div", H, [
78
+ n("div", {
79
+ class: "avatar",
80
+ style: w(A.value)
81
+ }, [
82
+ l(e(x), {
83
+ icon: "ph:user",
84
+ width: 26,
85
+ color: "#fff"
86
+ })
87
+ ], 4),
88
+ n("div", null, [
89
+ n("div", J, h(e(r)("workbench.welcome", { name: ((c = e(S).userInfo) == null ? void 0 : c.name) ?? "" })), 1),
90
+ n("div", K, h(e(r)("workbench.subtitle")), 1)
91
+ ])
92
+ ]),
93
+ l(e(g), {
94
+ cols: "1 s:2 l:4",
95
+ responsive: "screen",
96
+ "x-gap": 16,
97
+ "y-gap": 16
98
+ }, {
99
+ default: u(() => [
100
+ (s(!0), _($, null, E(B.value, (i) => (s(), d(e(f), {
101
+ key: i.key
102
+ }, {
103
+ default: u(() => [
104
+ l(e(k), { bordered: !0 }, {
105
+ default: u(() => [
106
+ n("div", O, [
107
+ n("div", {
108
+ class: "stat-ico",
109
+ style: w({ color: i.color })
110
+ }, [
111
+ l(e(x), {
112
+ icon: i.icon,
113
+ width: 28
114
+ }, null, 8, ["icon"])
115
+ ], 4),
116
+ n("div", P, [
117
+ m.value ? (s(), d(e(y), {
118
+ key: 0,
119
+ text: "",
120
+ width: "72px",
121
+ height: "34px"
122
+ })) : (s(), _("div", Q, h(i.value), 1)),
123
+ n("div", R, h(e(r)(`workbench.${i.key}`)), 1)
124
+ ])
125
+ ])
126
+ ]),
127
+ _: 2
128
+ }, 1024)
129
+ ]),
130
+ _: 2
131
+ }, 1024))), 128))
132
+ ]),
133
+ _: 1
134
+ }),
135
+ l(e(g), {
136
+ cols: "1 l:2",
137
+ responsive: "screen",
138
+ "x-gap": 16,
139
+ "y-gap": 16
140
+ }, {
141
+ default: u(() => [
142
+ l(e(f), null, {
143
+ default: u(() => [
144
+ l(e(k), {
145
+ title: e(r)("workbench.trendTitle"),
146
+ bordered: !0
147
+ }, {
148
+ default: u(() => [
149
+ m.value ? (s(), d(e(y), {
150
+ key: 0,
151
+ height: "320px",
152
+ sharp: !1
153
+ })) : (s(), d(M, {
154
+ key: 1,
155
+ categories: C.value,
156
+ series: D.value
157
+ }, null, 8, ["categories", "series"]))
158
+ ]),
159
+ _: 1
160
+ }, 8, ["title"])
161
+ ]),
162
+ _: 1
163
+ }),
164
+ l(e(f), null, {
165
+ default: u(() => [
166
+ l(e(k), {
167
+ title: e(r)("workbench.distributionTitle"),
168
+ bordered: !0
169
+ }, {
170
+ default: u(() => [
171
+ m.value ? (s(), d(e(y), {
172
+ key: 0,
173
+ height: "320px",
174
+ sharp: !1
175
+ })) : (s(), d(j, {
176
+ key: 1,
177
+ data: G.value
178
+ }, null, 8, ["data"]))
179
+ ]),
180
+ _: 1
181
+ }, 8, ["title"])
182
+ ]),
183
+ _: 1
184
+ })
185
+ ]),
186
+ _: 1
187
+ })
188
+ ]);
189
+ };
190
+ }
191
+ });
192
+ export {
193
+ le as default
194
+ };
195
+ //# sourceMappingURL=workbench2.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbench2.vue.js","sources":["../../../src/views/dashboard/workbench.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onMounted, ref } from 'vue'\nimport { NGrid, NGi, NCard, NSkeleton } from 'naive-ui'\nimport { Icon } from '@iconify/vue'\nimport { useI18n } from 'vue-i18n'\nimport { useUserStore } from '#/stores/user'\nimport { useAppStore } from '#/stores/app'\nimport { btnGrad } from '#/theme/mix'\nimport { dashboardApi } from '#/api'\nimport type { DashboardSummary } from '#/types/api'\nimport LineChart from '#/components/Chart/LineChart.vue'\nimport PieChart from '#/components/Chart/PieChart.vue'\n\nconst { t } = useI18n()\nconst user = useUserStore()\nconst app = useAppStore()\n\nconst avatarStyle = computed(() => ({ background: btnGrad(app.accent) }))\n\nconst summary = ref<DashboardSummary | null>(null)\nconst loading = ref(true)\n\nonMounted(async () => {\n try {\n summary.value = await dashboardApi.summary()\n } catch {\n // 首页不该因为一张统计图挂了就糊用户一脸红:统计取不到就显示 —,页面其余部分照常可用。\n } finally {\n loading.value = false\n }\n})\n\n/** 计数未到位时显示 —,而不是先闪个 0 再跳到真值。 */\nfunction num(v: number | undefined) {\n return v === undefined ? '—' : v\n}\n\nconst stats = computed(() => [\n {\n key: 'roles',\n icon: 'ph:shield-duotone',\n value: num(summary.value?.roles),\n color: 'var(--color-primary)',\n },\n {\n key: 'users',\n icon: 'ph:users-duotone',\n value: num(summary.value?.users),\n color: 'var(--color-success)',\n },\n {\n key: 'perms',\n icon: 'ph:key-duotone',\n value: num(summary.value?.perms),\n color: 'var(--color-warning)',\n },\n {\n key: 'online',\n icon: 'ph:broadcast-duotone',\n value: num(summary.value?.onlineSessions),\n color: 'var(--color-danger)',\n },\n])\n\nconst trendDays = computed(() => summary.value?.trendDays ?? [])\nconst trendSeries = computed(() => [\n { name: t('workbench.trendLogins'), data: summary.value?.trendLogins ?? [] },\n { name: t('workbench.trendActive'), data: summary.value?.trendActiveUsers ?? [] },\n])\n// 资源分布就是前三个计数,不必让后端再返一份\nconst distribution = computed(() => [\n { name: t('workbench.roles'), value: summary.value?.roles ?? 0 },\n { name: t('workbench.users'), value: summary.value?.users ?? 0 },\n { name: t('workbench.perms'), value: summary.value?.perms ?? 0 },\n])\n</script>\n\n<template>\n <div class=\"view\">\n <!-- 欢迎横幅(英雄区:btnGrad 头像)-->\n <div class=\"banner\">\n <div class=\"avatar\" :style=\"avatarStyle\">\n <Icon icon=\"ph:user\" :width=\"26\" color=\"#fff\" />\n </div>\n <div>\n <div class=\"hi\">{{ t('workbench.welcome', { name: user.userInfo?.name ?? '' }) }}</div>\n <div class=\"tip\">{{ t('workbench.subtitle') }}</div>\n </div>\n </div>\n\n <n-grid :cols=\"'1 s:2 l:4'\" responsive=\"screen\" :x-gap=\"16\" :y-gap=\"16\">\n <n-gi v-for=\"s in stats\" :key=\"s.key\">\n <n-card :bordered=\"true\">\n <div class=\"stat\">\n <div class=\"stat-ico\" :style=\"{ color: s.color }\">\n <Icon :icon=\"s.icon\" :width=\"28\" />\n </div>\n <div class=\"stat-body\">\n <!-- 骨架而非先闪 0 再跳真值:数字位宽固定,到数时不抖 -->\n <n-skeleton v-if=\"loading\" text width=\"72px\" height=\"34px\" />\n <div v-else class=\"stat-val tabular\">{{ s.value }}</div>\n <div class=\"stat-label\">{{ t(`workbench.${s.key}`) }}</div>\n </div>\n </div>\n </n-card>\n </n-gi>\n </n-grid>\n\n <n-grid :cols=\"'1 l:2'\" responsive=\"screen\" :x-gap=\"16\" :y-gap=\"16\">\n <n-gi>\n <n-card :title=\"t('workbench.trendTitle')\" :bordered=\"true\">\n <n-skeleton v-if=\"loading\" height=\"320px\" :sharp=\"false\" />\n <LineChart v-else :categories=\"trendDays\" :series=\"trendSeries\" />\n </n-card>\n </n-gi>\n <n-gi>\n <n-card :title=\"t('workbench.distributionTitle')\" :bordered=\"true\">\n <n-skeleton v-if=\"loading\" height=\"320px\" :sharp=\"false\" />\n <PieChart v-else :data=\"distribution\" />\n </n-card>\n </n-gi>\n </n-grid>\n </div>\n</template>\n\n<style scoped>\n.view {\n display: flex;\n flex-direction: column;\n gap: var(--gap-card);\n}\n.banner {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 24px;\n border-radius: var(--radius-lg);\n background: var(--color-primary-light);\n}\n.avatar {\n width: 52px;\n height: 52px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.hi {\n font-size: var(--font-size-lg);\n font-weight: 600;\n color: var(--color-text-primary);\n}\n.tip {\n color: var(--color-text-secondary);\n margin-top: 4px;\n}\n.stat {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n/* 骨架与真值换位时高度一致,卡片不跳 */\n.stat-body {\n min-width: 0;\n}\n/* 图标底盘:取当前语义色 12% 作浅底圆角,呼应 banner 头像,避免图标\"裸浮\" */\n.stat-ico {\n flex-shrink: 0;\n width: 48px;\n height: 48px;\n border-radius: var(--radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, currentColor 12%, transparent);\n}\n.stat-val {\n font-size: 28px;\n font-weight: 700;\n color: var(--color-text-primary);\n line-height: 1.1;\n}\n.stat-label {\n color: var(--color-text-secondary);\n margin-top: 2px;\n}\n</style>\n"],"names":["t","useI18n","user","useUserStore","app","useAppStore","avatarStyle","computed","btnGrad","summary","ref","loading","onMounted","dashboardApi","num","v","stats","_a","_b","_c","_d","trendDays","trendSeries","distribution","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_createVNode","_unref","Icon","_hoisted_3","_toDisplayString","_hoisted_4","NGrid","_Fragment","_renderList","s","_createBlock","NGi","NCard","_hoisted_5","_normalizeStyle","_hoisted_6","NSkeleton","_hoisted_7","_hoisted_8","LineChart","PieChart"],"mappings":"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"}
@@ -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 "./iframe2.vue.js";
2
+ /* empty css */
3
+ import r from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const c = /* @__PURE__ */ r(o, [["__scopeId", "data-v-dcc7858a"]]);
5
+ export {
6
+ c as default
7
+ };
8
+ //# sourceMappingURL=iframe.vue.js.map