smart-admin-web 10.14.0 → 10.20.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 (538) hide show
  1. package/README.md +6 -6
  2. package/dist/api/index.d.ts +41 -2
  3. package/dist/api/index.js +36 -15
  4. package/dist/api/index.js.map +1 -1
  5. package/dist/api/schema.d.ts +418 -6
  6. package/dist/assets/icons/ph-subset.json.js +7 -7
  7. package/dist/assets/smart-logo.svg.js +5 -0
  8. package/dist/assets/smart-logo.svg.js.map +1 -0
  9. package/dist/components/AppIcon.vue.js +9 -9
  10. package/dist/components/AppIcon.vue.js.map +1 -1
  11. package/dist/components/AppWatermark.vue.d.ts +14 -0
  12. package/dist/components/AppWatermark.vue.js +38 -0
  13. package/dist/components/AppWatermark.vue.js.map +1 -0
  14. package/dist/components/AppWatermark2.vue.js +5 -0
  15. package/dist/components/AppWatermark2.vue.js.map +1 -0
  16. package/dist/components/Chart/PieChart.vue.d.ts +1 -1
  17. package/dist/components/Chart/echarts.js +15 -20
  18. package/dist/components/Chart/echarts.js.map +1 -1
  19. package/dist/components/CronEditor/index.vue.js +1 -1
  20. package/dist/components/CronEditor/index2.vue.js +2 -1
  21. package/dist/components/CronEditor/index2.vue.js.map +1 -1
  22. package/dist/components/DetailPage/index.vue.js +2 -2
  23. package/dist/components/DetailPage/index2.vue.js.map +1 -1
  24. package/dist/components/DictTag/index.vue.js.map +1 -1
  25. package/dist/components/ErrorBoundary/index.vue.js +2 -2
  26. package/dist/components/ErrorBoundary/index2.vue.js +1 -1
  27. package/dist/components/ErrorBoundary/index2.vue.js.map +1 -1
  28. package/dist/components/FormContainer/index.vue.js +91 -56
  29. package/dist/components/FormContainer/index.vue.js.map +1 -1
  30. package/dist/components/ImportWizard/index.vue.js +1 -1
  31. package/dist/components/ImportWizard/index2.vue.js +44 -41
  32. package/dist/components/ImportWizard/index2.vue.js.map +1 -1
  33. package/dist/components/MenuSearch.vue.js +2 -2
  34. package/dist/components/MenuSearch2.vue.js +19 -18
  35. package/dist/components/MenuSearch2.vue.js.map +1 -1
  36. package/dist/components/PasswordStrength/index.vue.js +2 -2
  37. package/dist/components/PasswordStrength/index2.vue.js +20 -18
  38. package/dist/components/PasswordStrength/index2.vue.js.map +1 -1
  39. package/dist/components/SmartLogo.vue.d.ts +3 -0
  40. package/dist/components/SmartLogo.vue.js +1 -1
  41. package/dist/components/SmartLogo2.vue.js +22 -64
  42. package/dist/components/SmartLogo2.vue.js.map +1 -1
  43. package/dist/{views/system/config/components/GroupExtraConfig.vue.d.ts → components/TableTotal/index.vue.d.ts} +1 -4
  44. package/dist/components/{SelectTable → TableTotal}/index.vue.js +1 -1
  45. package/dist/components/TableTotal/index2.vue.js +16 -0
  46. package/dist/components/TableTotal/index2.vue.js.map +1 -0
  47. package/dist/components/TableZoomButton/index.vue.js.map +1 -1
  48. package/dist/components/UserPicker/index.vue.js +2 -2
  49. package/dist/components/UserPicker/index2.vue.js +176 -117
  50. package/dist/components/UserPicker/index2.vue.js.map +1 -1
  51. package/dist/composables/useBatchDelete.js.map +1 -1
  52. package/dist/composables/useLayoutMenu.js +17 -16
  53. package/dist/composables/useLayoutMenu.js.map +1 -1
  54. package/dist/composables/useLoginHero.d.ts +2 -0
  55. package/dist/composables/useLoginHero.js +22 -0
  56. package/dist/composables/useLoginHero.js.map +1 -0
  57. package/dist/composables/useModule.js +39 -29
  58. package/dist/composables/useModule.js.map +1 -1
  59. package/dist/composables/usePageTitle.js +16 -14
  60. package/dist/composables/usePageTitle.js.map +1 -1
  61. package/dist/composables/useShellBreakpoint.d.ts +19 -0
  62. package/dist/composables/useShellBreakpoint.js +37 -0
  63. package/dist/composables/useShellBreakpoint.js.map +1 -0
  64. package/dist/composables/useSite.d.ts +20 -0
  65. package/dist/composables/useSite.js +18 -13
  66. package/dist/composables/useSite.js.map +1 -1
  67. package/dist/composables/useTabTitle.js.map +1 -1
  68. package/dist/composables/useTableTitle.d.ts +6 -0
  69. package/dist/composables/useTableTitle.js +11 -0
  70. package/dist/composables/useTableTitle.js.map +1 -0
  71. package/dist/composables/useTableZoom.d.ts +5 -0
  72. package/dist/composables/useTableZoom.js.map +1 -1
  73. package/dist/composables/useTheme.d.ts +2 -2
  74. package/dist/composables/useTheme.js +23 -20
  75. package/dist/composables/useTheme.js.map +1 -1
  76. package/dist/createSmartAdmin.d.ts +12 -2
  77. package/dist/createSmartAdmin.js +72 -60
  78. package/dist/createSmartAdmin.js.map +1 -1
  79. package/dist/index.d.ts +5 -2
  80. package/dist/index.js +223 -208
  81. package/dist/index.js.map +1 -1
  82. package/dist/layouts/AccentPicker.vue.js +8 -0
  83. package/dist/layouts/AccentPicker.vue.js.map +1 -0
  84. package/dist/layouts/AccentPicker2.vue.js +131 -0
  85. package/dist/layouts/AccentPicker2.vue.js.map +1 -0
  86. package/dist/layouts/AppHeader.vue.d.ts +8 -1
  87. package/dist/layouts/AppHeader.vue.js +2 -2
  88. package/dist/layouts/AppHeader2.vue.js +317 -235
  89. package/dist/layouts/AppHeader2.vue.js.map +1 -1
  90. package/dist/layouts/NoticeBell.vue.js +2 -2
  91. package/dist/layouts/NoticeBell2.vue.js +1 -1
  92. package/dist/layouts/NoticeBell2.vue.js.map +1 -1
  93. package/dist/layouts/PersonalLayout.vue.js +2 -2
  94. package/dist/layouts/PersonalLayout2.vue.js +69 -47
  95. package/dist/layouts/PersonalLayout2.vue.js.map +1 -1
  96. package/dist/layouts/SettingsDrawer.vue.js +3 -3
  97. package/dist/layouts/SettingsDrawer2.vue.js +261 -325
  98. package/dist/layouts/SettingsDrawer2.vue.js.map +1 -1
  99. package/dist/layouts/TabsBar.vue.js +2 -2
  100. package/dist/layouts/TabsBar2.vue.js +97 -69
  101. package/dist/layouts/TabsBar2.vue.js.map +1 -1
  102. package/dist/layouts/components/SideNav.vue.d.ts +3 -0
  103. package/dist/layouts/components/SideNav.vue.js +1 -1
  104. package/dist/layouts/components/SideNav2.vue.js +54 -26
  105. package/dist/layouts/components/SideNav2.vue.js.map +1 -1
  106. package/dist/layouts/default.vue.js +1 -1
  107. package/dist/layouts/default2.vue.js +170 -140
  108. package/dist/layouts/default2.vue.js.map +1 -1
  109. package/dist/lib/favicon.d.ts +1 -0
  110. package/dist/lib/favicon.js +12 -0
  111. package/dist/lib/favicon.js.map +1 -0
  112. package/dist/lib/loginHero.d.ts +16 -0
  113. package/dist/lib/loginHero.js +33 -0
  114. package/dist/lib/loginHero.js.map +1 -0
  115. package/dist/lib/logoCrop.d.ts +25 -0
  116. package/dist/lib/logoCrop.js +22 -0
  117. package/dist/lib/logoCrop.js.map +1 -0
  118. package/dist/lib/runtime.d.ts +2 -0
  119. package/dist/lib/runtime.js +1 -1
  120. package/dist/lib/runtime.js.map +1 -1
  121. package/dist/lib/securityRules.d.ts +26 -0
  122. package/dist/lib/securityRules.js +86 -0
  123. package/dist/lib/securityRules.js.map +1 -0
  124. package/dist/lib/watermark.d.ts +110 -0
  125. package/dist/lib/watermark.js +151 -0
  126. package/dist/lib/watermark.js.map +1 -0
  127. package/dist/locales/en-US.d.ts +462 -42
  128. package/dist/locales/en-US.js +491 -78
  129. package/dist/locales/en-US.js.map +1 -1
  130. package/dist/locales/kernelMenuTitles.d.ts +1 -0
  131. package/dist/locales/kernelMenuTitles.js +128 -0
  132. package/dist/locales/kernelMenuTitles.js.map +1 -0
  133. package/dist/locales/menuTitle.d.ts +3 -0
  134. package/dist/locales/menuTitle.js +14 -12
  135. package/dist/locales/menuTitle.js.map +1 -1
  136. package/dist/locales/zh-CN.d.ts +462 -42
  137. package/dist/locales/zh-CN.js +490 -81
  138. package/dist/locales/zh-CN.js.map +1 -1
  139. package/dist/router/index.js +41 -32
  140. package/dist/router/index.js.map +1 -1
  141. package/dist/router/namedPage.d.ts +4 -0
  142. package/dist/router/namedPage.js +7 -7
  143. package/dist/router/namedPage.js.map +1 -1
  144. package/dist/router/viewRegistry.js +12 -12
  145. package/dist/router/viewRegistry.js.map +1 -1
  146. package/dist/stores/app.d.ts +0 -12
  147. package/dist/stores/app.js +11 -12
  148. package/dist/stores/app.js.map +1 -1
  149. package/dist/stores/tabs.js.map +1 -1
  150. package/dist/stores/user.d.ts +10 -0
  151. package/dist/stores/user.js.map +1 -1
  152. package/dist/style.css +1 -1
  153. package/dist/theme/accentTokens.d.ts +27 -0
  154. package/dist/theme/accentTokens.js +54 -0
  155. package/dist/theme/accentTokens.js.map +1 -0
  156. package/dist/theme/accents.d.ts +21 -1
  157. package/dist/theme/accents.js +11 -2
  158. package/dist/theme/accents.js.map +1 -1
  159. package/dist/theme/mix.d.ts +58 -7
  160. package/dist/theme/mix.js +115 -30
  161. package/dist/theme/mix.js.map +1 -1
  162. package/dist/theme/naive-theme.d.ts +5 -2
  163. package/dist/theme/naive-theme.js +405 -75
  164. package/dist/theme/naive-theme.js.map +1 -1
  165. package/dist/utils/jwt.d.ts +8 -0
  166. package/dist/utils/jwt.js +14 -0
  167. package/dist/utils/jwt.js.map +1 -0
  168. package/dist/utils/menuIcon.d.ts +2 -0
  169. package/dist/utils/menuIcon.js +8 -0
  170. package/dist/utils/menuIcon.js.map +1 -0
  171. package/dist/utils/oauthBrand.d.ts +34 -9
  172. package/dist/utils/oauthBrand.js +70 -74
  173. package/dist/utils/oauthBrand.js.map +1 -1
  174. package/dist/utils/tableFilter.d.ts +88 -0
  175. package/dist/utils/tableFilter.js +116 -0
  176. package/dist/utils/tableFilter.js.map +1 -0
  177. package/dist/utils/tableToolbar.d.ts +18 -0
  178. package/dist/utils/tableToolbar.js +11 -0
  179. package/dist/utils/tableToolbar.js.map +1 -0
  180. package/dist/utils/treeFilter.d.ts +20 -0
  181. package/dist/utils/treeFilter.js +24 -0
  182. package/dist/utils/treeFilter.js.map +1 -0
  183. package/dist/views/dashboard/ShortcutPicker.vue.js +1 -1
  184. package/dist/views/dashboard/ShortcutPicker2.vue.js +73 -48
  185. package/dist/views/dashboard/ShortcutPicker2.vue.js.map +1 -1
  186. package/dist/views/dashboard/biz.vue.js +1 -1
  187. package/dist/views/dashboard/biz2.vue.js +310 -257
  188. package/dist/views/dashboard/biz2.vue.js.map +1 -1
  189. package/dist/views/dashboard/workbench.vue.js +2 -2
  190. package/dist/views/dashboard/workbench2.vue.js +141 -155
  191. package/dist/views/dashboard/workbench2.vue.js.map +1 -1
  192. package/dist/views/embed/iframe.vue.js +2 -2
  193. package/dist/views/embed/iframe2.vue.js +22 -15
  194. package/dist/views/embed/iframe2.vue.js.map +1 -1
  195. package/dist/views/error/404.vue.js +2 -2
  196. package/dist/views/error/4042.vue.js +33 -24
  197. package/dist/views/error/4042.vue.js.map +1 -1
  198. package/dist/views/error/BootError.vue.js +1 -1
  199. package/dist/views/error/BootError2.vue.js +59 -48
  200. package/dist/views/error/BootError2.vue.js.map +1 -1
  201. package/dist/views/error/MissingRoute.vue.js +2 -2
  202. package/dist/views/error/MissingRoute2.vue.js +34 -15
  203. package/dist/views/error/MissingRoute2.vue.js.map +1 -1
  204. package/dist/views/login/LoginForm.vue.d.ts +7 -1
  205. package/dist/views/login/LoginForm.vue.js +2 -2
  206. package/dist/views/login/LoginForm2.vue.js +580 -488
  207. package/dist/views/login/LoginForm2.vue.js.map +1 -1
  208. package/dist/views/login/components/LoginDesk.vue.d.ts +36 -0
  209. package/dist/views/login/components/LoginDesk.vue.js +9 -0
  210. package/dist/views/login/components/LoginDesk.vue.js.map +1 -0
  211. package/dist/views/login/components/LoginDesk2.vue.js +100 -0
  212. package/dist/views/login/components/LoginDesk2.vue.js.map +1 -0
  213. package/dist/views/login/components/LoginHeroPanel.vue.d.ts +18 -0
  214. package/dist/views/login/components/LoginHeroPanel.vue.js +8 -0
  215. package/dist/views/login/components/LoginHeroPanel.vue.js.map +1 -0
  216. package/dist/views/login/components/LoginHeroPanel2.vue.js +61 -0
  217. package/dist/views/login/components/LoginHeroPanel2.vue.js.map +1 -0
  218. package/dist/views/login/index.vue.js +1 -1
  219. package/dist/views/login/index2.vue.js +141 -71
  220. package/dist/views/login/index2.vue.js.map +1 -1
  221. package/dist/views/login/layout.d.ts +11 -0
  222. package/dist/views/login/layout.js +27 -0
  223. package/dist/views/login/layout.js.map +1 -0
  224. package/dist/views/mfa/index.vue.js +2 -2
  225. package/dist/views/mfa/index2.vue.js +367 -321
  226. package/dist/views/mfa/index2.vue.js.map +1 -1
  227. package/dist/views/module/index.vue.js +2 -2
  228. package/dist/views/module/index2.vue.js +132 -99
  229. package/dist/views/module/index2.vue.js.map +1 -1
  230. package/dist/views/oauth/callback.vue.js +2 -2
  231. package/dist/views/oauth/callback2.vue.js +65 -51
  232. package/dist/views/oauth/callback2.vue.js.map +1 -1
  233. package/dist/views/personal/bindings.vue.js +2 -2
  234. package/dist/views/personal/bindings2.vue.js +98 -94
  235. package/dist/views/personal/bindings2.vue.js.map +1 -1
  236. package/dist/views/personal/notice2.vue.js +103 -76
  237. package/dist/views/personal/notice2.vue.js.map +1 -1
  238. package/dist/views/personal/password2.vue.js +47 -40
  239. package/dist/views/personal/password2.vue.js.map +1 -1
  240. package/dist/views/personal/profile.vue.js +3 -3
  241. package/dist/views/personal/profile2.vue.js +24 -18
  242. package/dist/views/personal/profile2.vue.js.map +1 -1
  243. package/dist/views/personal/security.vue.js +2 -2
  244. package/dist/views/personal/security2.vue.js +65 -53
  245. package/dist/views/personal/security2.vue.js.map +1 -1
  246. package/dist/views/personal/sessions.vue.js +2 -2
  247. package/dist/views/personal/sessions2.vue.js +67 -62
  248. package/dist/views/personal/sessions2.vue.js.map +1 -1
  249. package/dist/views/system/ai-model/components/ProviderCard.vue.js +2 -2
  250. package/dist/views/system/ai-model/components/ProviderCard2.vue.js +142 -130
  251. package/dist/views/system/ai-model/components/ProviderCard2.vue.js.map +1 -1
  252. package/dist/views/system/ai-model/components/ProviderForm.vue.js +2 -2
  253. package/dist/views/system/ai-model/components/ProviderForm2.vue.js +71 -70
  254. package/dist/views/system/ai-model/components/ProviderForm2.vue.js.map +1 -1
  255. package/dist/views/system/ai-model/index.vue.js +2 -2
  256. package/dist/views/system/ai-model/index2.vue.js +99 -99
  257. package/dist/views/system/ai-model/index2.vue.js.map +1 -1
  258. package/dist/views/system/ai-model/presets.d.ts +1 -1
  259. package/dist/views/system/ai-model/presets.js +18 -18
  260. package/dist/views/system/ai-model/presets.js.map +1 -1
  261. package/dist/views/system/ai-usage/index.vue.js +2 -2
  262. package/dist/views/system/ai-usage/index2.vue.js +356 -258
  263. package/dist/views/system/ai-usage/index2.vue.js.map +1 -1
  264. package/dist/views/system/api-docs/index.vue.js +5 -2
  265. package/dist/views/system/api-docs/index.vue.js.map +1 -1
  266. package/dist/views/system/api-docs/index2.vue.js +92 -42
  267. package/dist/views/system/api-docs/index2.vue.js.map +1 -1
  268. package/dist/views/system/cache/index.vue.js +2 -2
  269. package/dist/views/system/cache/index2.vue.js +74 -80
  270. package/dist/views/system/cache/index2.vue.js.map +1 -1
  271. package/dist/views/system/config/components/AdminMock.vue.js +8 -0
  272. package/dist/views/system/config/components/AdminMock.vue.js.map +1 -0
  273. package/dist/views/system/config/components/AdminMock2.vue.js +93 -0
  274. package/dist/views/system/config/components/AdminMock2.vue.js.map +1 -0
  275. package/dist/views/system/config/components/AdvancedSection.vue.js +8 -0
  276. package/dist/views/system/config/components/AdvancedSection.vue.js.map +1 -0
  277. package/dist/views/system/config/components/AdvancedSection2.vue.js +163 -0
  278. package/dist/views/system/config/components/AdvancedSection2.vue.js.map +1 -0
  279. package/dist/views/system/config/components/BrandSection.vue.d.ts +7 -0
  280. package/dist/views/system/config/components/BrandSection.vue.js +8 -0
  281. package/dist/views/system/config/components/BrandSection.vue.js.map +1 -0
  282. package/dist/views/system/config/components/BrandSection2.vue.js +266 -0
  283. package/dist/views/system/config/components/BrandSection2.vue.js.map +1 -0
  284. package/dist/views/system/config/components/CfgGroup.vue.d.ts +18 -0
  285. package/dist/views/system/config/components/CfgGroup.vue.js +8 -0
  286. package/dist/views/system/config/components/CfgGroup.vue.js.map +1 -0
  287. package/dist/views/system/config/components/CfgGroup2.vue.js +22 -0
  288. package/dist/views/system/config/components/CfgGroup2.vue.js.map +1 -0
  289. package/dist/views/system/config/components/CfgRow.vue.d.ts +26 -0
  290. package/dist/views/system/config/components/CfgRow.vue.js +9 -0
  291. package/dist/views/system/config/components/CfgRow.vue.js.map +1 -0
  292. package/dist/views/system/config/components/CfgRow2.vue.js +54 -0
  293. package/dist/views/system/config/components/CfgRow2.vue.js.map +1 -0
  294. package/dist/views/system/config/components/CfgSegment.vue.d.ts +28 -0
  295. package/dist/views/system/config/components/CfgSegment.vue.js +8 -0
  296. package/dist/views/system/config/components/CfgSegment.vue.js.map +1 -0
  297. package/dist/views/system/config/components/CfgSegment2.vue.js +45 -0
  298. package/dist/views/system/config/components/CfgSegment2.vue.js.map +1 -0
  299. package/dist/views/system/config/components/ConfigFormModal.vue.js +4 -1
  300. package/dist/views/system/config/components/ConfigFormModal.vue.js.map +1 -1
  301. package/dist/views/system/config/components/ConfigFormModal2.vue.js +72 -60
  302. package/dist/views/system/config/components/ConfigFormModal2.vue.js.map +1 -1
  303. package/dist/views/system/config/components/JobSection.vue.js +8 -0
  304. package/dist/views/system/config/components/JobSection.vue.js.map +1 -0
  305. package/dist/views/system/config/components/JobSection2.vue.js +140 -0
  306. package/dist/views/system/config/components/JobSection2.vue.js.map +1 -0
  307. package/dist/views/system/config/components/LoginMock.vue.d.ts +8 -0
  308. package/dist/views/system/config/components/LoginMock.vue.js +8 -0
  309. package/dist/views/system/config/components/LoginMock.vue.js.map +1 -0
  310. package/dist/views/system/config/components/LoginMock2.vue.js +132 -0
  311. package/dist/views/system/config/components/LoginMock2.vue.js.map +1 -0
  312. package/dist/views/system/config/components/LogoCropper.vue.d.ts +10 -0
  313. package/dist/views/system/config/components/LogoCropper.vue.js +8 -0
  314. package/dist/views/system/config/components/LogoCropper.vue.js.map +1 -0
  315. package/dist/views/system/config/components/LogoCropper2.vue.js +122 -0
  316. package/dist/views/system/config/components/LogoCropper2.vue.js.map +1 -0
  317. package/dist/views/system/config/components/LogoEditor.vue.js +8 -0
  318. package/dist/views/system/config/components/LogoEditor.vue.js.map +1 -0
  319. package/dist/views/system/config/components/LogoEditor2.vue.js +161 -0
  320. package/dist/views/system/config/components/LogoEditor2.vue.js.map +1 -0
  321. package/dist/views/system/config/components/ProviderSheet.vue.d.ts +17 -0
  322. package/dist/views/system/config/components/ProviderSheet.vue.js +8 -0
  323. package/dist/views/system/config/components/ProviderSheet.vue.js.map +1 -0
  324. package/dist/views/system/config/components/ProviderSheet2.vue.js +343 -0
  325. package/dist/views/system/config/components/ProviderSheet2.vue.js.map +1 -0
  326. package/dist/{layouts/SettingRow.vue.d.ts → views/system/config/components/ScaleToFit.vue.d.ts} +2 -1
  327. package/dist/views/system/config/components/ScaleToFit.vue.js +8 -0
  328. package/dist/views/system/config/components/ScaleToFit.vue.js.map +1 -0
  329. package/dist/views/system/config/components/ScaleToFit2.vue.js +41 -0
  330. package/dist/views/system/config/components/ScaleToFit2.vue.js.map +1 -0
  331. package/dist/views/system/config/components/SectionLayout.vue.d.ts +30 -0
  332. package/dist/views/system/config/components/SectionLayout.vue.js +8 -0
  333. package/dist/views/system/config/components/SectionLayout.vue.js.map +1 -0
  334. package/dist/views/system/config/components/SectionLayout2.vue.js +69 -0
  335. package/dist/views/system/config/components/SectionLayout2.vue.js.map +1 -0
  336. package/dist/views/system/config/components/SecuritySection.vue.js +8 -0
  337. package/dist/views/system/config/components/SecuritySection.vue.js.map +1 -0
  338. package/dist/views/system/config/components/SecuritySection2.vue.js +417 -0
  339. package/dist/views/system/config/components/SecuritySection2.vue.js.map +1 -0
  340. package/dist/views/system/config/components/SensitiveSection.vue.js +8 -0
  341. package/dist/views/system/config/components/SensitiveSection.vue.js.map +1 -0
  342. package/dist/views/system/config/components/SensitiveSection2.vue.js +214 -0
  343. package/dist/views/system/config/components/SensitiveSection2.vue.js.map +1 -0
  344. package/dist/views/system/config/components/SigninSection.vue.js +8 -0
  345. package/dist/views/system/config/components/SigninSection.vue.js.map +1 -0
  346. package/dist/views/system/config/components/SigninSection2.vue.js +201 -0
  347. package/dist/views/system/config/components/SigninSection2.vue.js.map +1 -0
  348. package/dist/views/system/config/components/UploadSection.vue.js +8 -0
  349. package/dist/views/system/config/components/UploadSection.vue.js.map +1 -0
  350. package/dist/views/system/config/components/UploadSection2.vue.js +176 -0
  351. package/dist/views/system/config/components/UploadSection2.vue.js.map +1 -0
  352. package/dist/views/system/config/components/WatermarkSection.vue.js +8 -0
  353. package/dist/views/system/config/components/WatermarkSection.vue.js.map +1 -0
  354. package/dist/views/system/config/components/WatermarkSection2.vue.js +284 -0
  355. package/dist/views/system/config/components/WatermarkSection2.vue.js.map +1 -0
  356. package/dist/views/system/config/draft.d.ts +148 -0
  357. package/dist/views/system/config/draft.js +170 -0
  358. package/dist/views/system/config/draft.js.map +1 -0
  359. package/dist/views/system/config/flash.d.ts +2 -0
  360. package/dist/views/system/config/flash.js +9 -0
  361. package/dist/views/system/config/flash.js.map +1 -0
  362. package/dist/views/system/config/groups.d.ts +38 -7
  363. package/dist/views/system/config/groups.js +104 -14
  364. package/dist/views/system/config/groups.js.map +1 -1
  365. package/dist/views/system/config/index.vue.js +6 -2
  366. package/dist/views/system/config/index.vue.js.map +1 -1
  367. package/dist/views/system/config/index2.vue.js +201 -111
  368. package/dist/views/system/config/index2.vue.js.map +1 -1
  369. package/dist/views/system/config/layoutMode.d.ts +23 -0
  370. package/dist/views/system/config/layoutMode.js +28 -0
  371. package/dist/views/system/config/layoutMode.js.map +1 -0
  372. package/dist/views/system/config/providerForm.d.ts +33 -0
  373. package/dist/views/system/config/providerForm.js +63 -0
  374. package/dist/views/system/config/providerForm.js.map +1 -0
  375. package/dist/views/system/dict/index.vue.js +2 -2
  376. package/dist/views/system/dict/index2.vue.js +471 -366
  377. package/dist/views/system/dict/index2.vue.js.map +1 -1
  378. package/dist/views/system/file/index2.vue.js +91 -76
  379. package/dist/views/system/file/index2.vue.js.map +1 -1
  380. package/dist/views/system/job/index.vue.js +3 -3
  381. package/dist/views/system/job/index2.vue.js +897 -828
  382. package/dist/views/system/job/index2.vue.js.map +1 -1
  383. package/dist/views/system/job-log/components/AttemptTable.vue.d.ts +8 -0
  384. package/dist/views/system/job-log/components/AttemptTable.vue.js +5 -0
  385. package/dist/views/system/job-log/components/AttemptTable.vue.js.map +1 -0
  386. package/dist/views/system/job-log/components/AttemptTable2.vue.js +54 -0
  387. package/dist/views/system/job-log/components/AttemptTable2.vue.js.map +1 -0
  388. package/dist/views/system/job-log/index.vue.js +2 -2
  389. package/dist/views/system/job-log/index2.vue.js +193 -207
  390. package/dist/views/system/job-log/index2.vue.js.map +1 -1
  391. package/dist/views/system/job-log/runStatus.d.ts +13 -0
  392. package/dist/views/system/job-log/runStatus.js +26 -0
  393. package/dist/views/system/job-log/runStatus.js.map +1 -0
  394. package/dist/views/system/job-monitor/index.vue.js +2 -2
  395. package/dist/views/system/job-monitor/index2.vue.js +172 -180
  396. package/dist/views/system/job-monitor/index2.vue.js.map +1 -1
  397. package/dist/views/system/log/exception/index.vue.js +2 -2
  398. package/dist/views/system/log/exception/index2.vue.js +135 -96
  399. package/dist/views/system/log/exception/index2.vue.js.map +1 -1
  400. package/dist/views/system/log/login/index2.vue.js +62 -41
  401. package/dist/views/system/log/login/index2.vue.js.map +1 -1
  402. package/dist/views/system/log/op/index.vue.js +2 -2
  403. package/dist/views/system/log/op/index2.vue.js +200 -162
  404. package/dist/views/system/log/op/index2.vue.js.map +1 -1
  405. package/dist/views/system/menu/components/ButtonManager.vue.js +2 -2
  406. package/dist/views/system/menu/components/ButtonManager2.vue.js +206 -190
  407. package/dist/views/system/menu/components/ButtonManager2.vue.js.map +1 -1
  408. package/dist/views/system/menu/components/MenuFormModal.vue.js +2 -2
  409. package/dist/views/system/menu/components/MenuFormModal2.vue.js +127 -118
  410. package/dist/views/system/menu/components/MenuFormModal2.vue.js.map +1 -1
  411. package/dist/views/system/menu/index.vue.js +1 -1
  412. package/dist/views/system/menu/index2.vue.js +216 -183
  413. package/dist/views/system/menu/index2.vue.js.map +1 -1
  414. package/dist/views/system/module/index.vue.js +1 -1
  415. package/dist/views/system/module/index2.vue.js +177 -144
  416. package/dist/views/system/module/index2.vue.js.map +1 -1
  417. package/dist/views/system/monitor/index.vue.js +2 -2
  418. package/dist/views/system/monitor/index2.vue.js +134 -149
  419. package/dist/views/system/monitor/index2.vue.js.map +1 -1
  420. package/dist/views/system/notice/index.vue.js +1 -1
  421. package/dist/views/system/notice/index2.vue.js +209 -181
  422. package/dist/views/system/notice/index2.vue.js.map +1 -1
  423. package/dist/views/system/org/index.vue.js +1 -1
  424. package/dist/views/system/org/index2.vue.js +278 -248
  425. package/dist/views/system/org/index2.vue.js.map +1 -1
  426. package/dist/views/system/position/index.vue.js +5 -2
  427. package/dist/views/system/position/index.vue.js.map +1 -1
  428. package/dist/views/system/position/index2.vue.js +128 -92
  429. package/dist/views/system/position/index2.vue.js.map +1 -1
  430. package/dist/views/system/recycle/index.vue.js +2 -2
  431. package/dist/views/system/recycle/index2.vue.js +90 -67
  432. package/dist/views/system/recycle/index2.vue.js.map +1 -1
  433. package/dist/views/system/role/components/GrantMenuSheet.vue.d.ts +20 -0
  434. package/dist/views/system/role/components/GrantMenuSheet.vue.js +8 -0
  435. package/dist/views/system/role/components/GrantMenuSheet.vue.js.map +1 -0
  436. package/dist/views/system/role/components/GrantMenuSheet2.vue.js +117 -0
  437. package/dist/views/system/role/components/GrantMenuSheet2.vue.js.map +1 -0
  438. package/dist/views/system/role/components/GrantMenuTable.vue.d.ts +6 -4
  439. package/dist/views/system/role/components/GrantMenuTable.vue.js +2 -2
  440. package/dist/views/system/role/components/GrantMenuTable2.vue.js +279 -177
  441. package/dist/views/system/role/components/GrantMenuTable2.vue.js.map +1 -1
  442. package/dist/views/system/role/components/MatchText.vue.d.ts +7 -0
  443. package/dist/views/system/role/components/MatchText.vue.js +8 -0
  444. package/dist/views/system/role/components/MatchText.vue.js.map +1 -0
  445. package/dist/views/system/role/components/MatchText2.vue.js +29 -0
  446. package/dist/views/system/role/components/MatchText2.vue.js.map +1 -0
  447. package/dist/views/system/role/components/grantMenuGroups.d.ts +36 -0
  448. package/dist/views/system/role/components/grantMenuGroups.js +110 -48
  449. package/dist/views/system/role/components/grantMenuGroups.js.map +1 -1
  450. package/dist/views/system/role/index.vue.js +5 -2
  451. package/dist/views/system/role/index.vue.js.map +1 -1
  452. package/dist/views/system/role/index2.vue.js +181 -165
  453. package/dist/views/system/role/index2.vue.js.map +1 -1
  454. package/dist/views/system/session/index2.vue.js +75 -49
  455. package/dist/views/system/session/index2.vue.js.map +1 -1
  456. package/dist/views/system/user/components/ResetPasswordModal.vue.js +2 -2
  457. package/dist/views/system/user/components/ResetPasswordModal2.vue.js +2 -0
  458. package/dist/views/system/user/components/ResetPasswordModal2.vue.js.map +1 -1
  459. package/dist/views/system/user/components/UserFormModal.vue.js +2 -2
  460. package/dist/views/system/user/components/UserFormModal2.vue.js +77 -76
  461. package/dist/views/system/user/components/UserFormModal2.vue.js.map +1 -1
  462. package/dist/views/system/user/index.vue.js +2 -2
  463. package/dist/views/system/user/index2.vue.js +362 -275
  464. package/dist/views/system/user/index2.vue.js.map +1 -1
  465. package/package.json +6 -8
  466. package/dist/components/SelectTable/index.vue.d.ts +0 -76
  467. package/dist/components/SelectTable/index2.vue.js +0 -256
  468. package/dist/components/SelectTable/index2.vue.js.map +0 -1
  469. package/dist/composables/useTableRowSort.d.ts +0 -20
  470. package/dist/composables/useTableRowSort.js +0 -59
  471. package/dist/composables/useTableRowSort.js.map +0 -1
  472. package/dist/layouts/LayoutModeCards.vue.js +0 -8
  473. package/dist/layouts/LayoutModeCards.vue.js.map +0 -1
  474. package/dist/layouts/LayoutModeCards2.vue.js +0 -67
  475. package/dist/layouts/LayoutModeCards2.vue.js.map +0 -1
  476. package/dist/layouts/SettingRow.vue.js +0 -8
  477. package/dist/layouts/SettingRow.vue.js.map +0 -1
  478. package/dist/layouts/SettingRow2.vue.js +0 -23
  479. package/dist/layouts/SettingRow2.vue.js.map +0 -1
  480. package/dist/views/login/skins/AuroraGlass.vue.js +0 -8
  481. package/dist/views/login/skins/AuroraGlass.vue.js.map +0 -1
  482. package/dist/views/login/skins/AuroraGlass2.vue.js +0 -80
  483. package/dist/views/login/skins/AuroraGlass2.vue.js.map +0 -1
  484. package/dist/views/login/skins/SplitPanel.vue.js +0 -8
  485. package/dist/views/login/skins/SplitPanel.vue.js.map +0 -1
  486. package/dist/views/login/skins/SplitPanel2.vue.js +0 -85
  487. package/dist/views/login/skins/SplitPanel2.vue.js.map +0 -1
  488. package/dist/views/login/skins/Spotlight.vue.js +0 -8
  489. package/dist/views/login/skins/Spotlight.vue.js.map +0 -1
  490. package/dist/views/login/skins/Spotlight2.vue.js +0 -36
  491. package/dist/views/login/skins/Spotlight2.vue.js.map +0 -1
  492. package/dist/views/login/skins.d.ts +0 -8
  493. package/dist/views/login/skins.js +0 -13
  494. package/dist/views/login/skins.js.map +0 -1
  495. package/dist/views/system/config/components/ExternalAuthConfig.vue.js +0 -8
  496. package/dist/views/system/config/components/ExternalAuthConfig.vue.js.map +0 -1
  497. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js +0 -218
  498. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js.map +0 -1
  499. package/dist/views/system/config/components/GroupExtraConfig.vue.js +0 -8
  500. package/dist/views/system/config/components/GroupExtraConfig.vue.js.map +0 -1
  501. package/dist/views/system/config/components/GroupExtraConfig2.vue.js +0 -108
  502. package/dist/views/system/config/components/GroupExtraConfig2.vue.js.map +0 -1
  503. package/dist/views/system/config/components/HighSensConfig.vue.js +0 -5
  504. package/dist/views/system/config/components/HighSensConfig.vue.js.map +0 -1
  505. package/dist/views/system/config/components/HighSensConfig2.vue.js +0 -134
  506. package/dist/views/system/config/components/HighSensConfig2.vue.js.map +0 -1
  507. package/dist/views/system/config/components/JobConfig.vue.js +0 -5
  508. package/dist/views/system/config/components/JobConfig.vue.js.map +0 -1
  509. package/dist/views/system/config/components/JobConfig2.vue.js +0 -116
  510. package/dist/views/system/config/components/JobConfig2.vue.js.map +0 -1
  511. package/dist/views/system/config/components/OtherConfig.vue.js +0 -5
  512. package/dist/views/system/config/components/OtherConfig.vue.js.map +0 -1
  513. package/dist/views/system/config/components/OtherConfig2.vue.js +0 -121
  514. package/dist/views/system/config/components/OtherConfig2.vue.js.map +0 -1
  515. package/dist/views/system/config/components/SecurityConfig.vue.js +0 -8
  516. package/dist/views/system/config/components/SecurityConfig.vue.js.map +0 -1
  517. package/dist/views/system/config/components/SecurityConfig2.vue.js +0 -456
  518. package/dist/views/system/config/components/SecurityConfig2.vue.js.map +0 -1
  519. package/dist/views/system/config/components/SysBaseConfig.vue.js +0 -5
  520. package/dist/views/system/config/components/SysBaseConfig.vue.js.map +0 -1
  521. package/dist/views/system/config/components/SysBaseConfig2.vue.js +0 -107
  522. package/dist/views/system/config/components/SysBaseConfig2.vue.js.map +0 -1
  523. package/dist/views/system/config/components/UploadConfig.vue.d.ts +0 -3
  524. package/dist/views/system/config/components/UploadConfig.vue.js +0 -5
  525. package/dist/views/system/config/components/UploadConfig.vue.js.map +0 -1
  526. package/dist/views/system/config/components/UploadConfig2.vue.js +0 -135
  527. package/dist/views/system/config/components/UploadConfig2.vue.js.map +0 -1
  528. /package/dist/components/{SelectTable → TableTotal}/index.vue.js.map +0 -0
  529. /package/dist/layouts/{LayoutModeCards.vue.d.ts → AccentPicker.vue.d.ts} +0 -0
  530. /package/dist/views/{login/skins/AuroraGlass.vue.d.ts → system/config/components/AdminMock.vue.d.ts} +0 -0
  531. /package/dist/views/{login/skins/SplitPanel.vue.d.ts → system/config/components/AdvancedSection.vue.d.ts} +0 -0
  532. /package/dist/views/{login/skins/Spotlight.vue.d.ts → system/config/components/JobSection.vue.d.ts} +0 -0
  533. /package/dist/views/system/config/components/{ExternalAuthConfig.vue.d.ts → LogoEditor.vue.d.ts} +0 -0
  534. /package/dist/views/system/config/components/{HighSensConfig.vue.d.ts → SecuritySection.vue.d.ts} +0 -0
  535. /package/dist/views/system/config/components/{JobConfig.vue.d.ts → SensitiveSection.vue.d.ts} +0 -0
  536. /package/dist/views/system/config/components/{OtherConfig.vue.d.ts → SigninSection.vue.d.ts} +0 -0
  537. /package/dist/views/system/config/components/{SecurityConfig.vue.d.ts → UploadSection.vue.d.ts} +0 -0
  538. /package/dist/views/system/config/components/{SysBaseConfig.vue.d.ts → WatermarkSection.vue.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MatchText.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,29 @@
1
+ import { defineComponent as u, computed as i, openBlock as c, createElementBlock as l, Fragment as s, createTextVNode as a, toDisplayString as n, createElementVNode as m } from "vue";
2
+ const x = { class: "grant-mark" }, d = /* @__PURE__ */ u({
3
+ __name: "MatchText",
4
+ props: {
5
+ text: {},
6
+ query: {}
7
+ },
8
+ setup(o) {
9
+ const e = o, r = i(() => {
10
+ const t = e.query ? e.text.toLowerCase().indexOf(e.query) : -1;
11
+ return t < 0 ? null : [
12
+ e.text.slice(0, t),
13
+ e.text.slice(t, t + e.query.length),
14
+ e.text.slice(t + e.query.length)
15
+ ];
16
+ });
17
+ return (t, p) => r.value ? (c(), l(s, { key: 0 }, [
18
+ a(n(r.value[0]), 1),
19
+ m("mark", x, n(r.value[1]), 1),
20
+ a(n(r.value[2]), 1)
21
+ ], 64)) : (c(), l(s, { key: 1 }, [
22
+ a(n(o.text), 1)
23
+ ], 64));
24
+ }
25
+ });
26
+ export {
27
+ d as default
28
+ };
29
+ //# sourceMappingURL=MatchText2.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MatchText2.vue.js","sources":["../../../../../src/views/system/role/components/MatchText.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 把 text 里第一处命中 query(小写)的片段包成 <mark>。query 为空或没命中就原样输出。\nimport { computed } from 'vue'\n\nconst props = defineProps<{ text: string; query: string }>()\n\nconst parts = computed(() => {\n const i = props.query ? props.text.toLowerCase().indexOf(props.query) : -1\n if (i < 0) return null\n return [\n props.text.slice(0, i),\n props.text.slice(i, i + props.query.length),\n props.text.slice(i + props.query.length),\n ] as const\n})\n</script>\n\n<template>\n <!-- 必须单行:插值与 <mark> 之间的换行会被 Vue 压成空格,高亮词前后就多出空白 -->\n <!-- prettier-ignore -->\n <template v-if=\"parts\">{{ parts[0] }}<mark class=\"grant-mark\">{{ parts[1] }}</mark>{{ parts[2] }}</template>\n <template v-else>{{ text }}</template>\n</template>\n\n<style scoped>\n.grant-mark {\n background: color-mix(in srgb, var(--warn) 40%, transparent);\n color: inherit;\n border-radius: 3px;\n padding: 0 1px;\n}\n</style>\n"],"names":["props","__props","parts","computed","i","_createElementBlock","_Fragment","_createElementVNode","_hoisted_1","_toDisplayString"],"mappings":";;;;;;;;AAIA,UAAMA,IAAQC,GAERC,IAAQC,EAAS,MAAM;AAC3B,YAAMC,IAAIJ,EAAM,QAAQA,EAAM,KAAK,cAAc,QAAQA,EAAM,KAAK,IAAI;AACxE,aAAII,IAAI,IAAU,OACX;AAAA,QACLJ,EAAM,KAAK,MAAM,GAAGI,CAAC;AAAA,QACrBJ,EAAM,KAAK,MAAMI,GAAGA,IAAIJ,EAAM,MAAM,MAAM;AAAA,QAC1CA,EAAM,KAAK,MAAMI,IAAIJ,EAAM,MAAM,MAAM;AAAA,MAAA;AAAA,IAE3C,CAAC;qBAMiBE,EAAA,cAAhBG,EAA4GC,GAAA,EAAA,KAAA,KAAA;AAAA,UAAlFJ,EAAA,MAAK,CAAA,CAAA,GAAA,CAAA;AAAA,MAAMK,EAA8C,QAA9CC,GAA8CC,EAAlBP,EAAA,MAAK,CAAA,CAAA,GAAA,CAAA;AAAA,UAAgBA,EAAA,MAAK,CAAA,CAAA,GAAA,CAAA;AAAA,IAAA,gBAC3FG,EAAsCC,GAAA,EAAA,KAAA,KAAA;AAAA,UAAlBL,EAAA,IAAI,GAAA,CAAA;AAAA,IAAA;;;"}
@@ -3,12 +3,16 @@ export interface ButtonItem {
3
3
  id: number;
4
4
  title: string;
5
5
  checked: boolean;
6
+ /** 权限码(多条以 ; 连接),只作悬停提示,不参与勾选与提交。 */
7
+ permission?: string;
6
8
  }
7
9
  export interface MenuRow {
8
10
  id: number;
9
11
  title: string;
10
12
  checked: boolean;
11
13
  buttons: ButtonItem[];
14
+ /** 页面路由,只作副标题;anchor 行没有。 */
15
+ path?: string;
12
16
  /** 无页面权限项行:承载目录直属按钮。id 是所属目录的 id,只作 key,不进 collectChecked。 */
13
17
  anchor?: boolean;
14
18
  }
@@ -20,8 +24,40 @@ export interface CatalogGroup {
20
24
  menus: MenuRow[];
21
25
  /** 根级直挂按钮的合成分组(id=0),自身不是可授权节点,不进 collectChecked。 */
22
26
  synthetic?: boolean;
27
+ /** 顶级页面(如工作台)自成的一组:界面上不画目录头,直接是一行。 */
28
+ standalone?: boolean;
23
29
  }
30
+ /** 一组行的勾选态(全勾 / 半勾)。搜索时目录头按可见行算,落库的目录状态按全部行算。 */
31
+ export declare function menusState(menus: MenuRow[]): {
32
+ checked: boolean;
33
+ indeterminate: boolean;
34
+ };
24
35
  export declare function recomputeGroup(group: CatalogGroup): void;
36
+ /** 勾/取消整个目录:其下页面与按钮一并跟随。搜索过滤时 rows 传可见行,不动被过滤掉的行。 */
37
+ export declare function setGroupChecked(group: CatalogGroup, val: boolean, rows?: MenuRow[]): void;
38
+ /** 勾/取消一个页面(或 anchor 行):其按钮一并跟随。 */
39
+ export declare function setMenuChecked(group: CatalogGroup, menu: MenuRow, val: boolean): void;
40
+ /**
41
+ * 勾/取消一个按钮。按钮全勾时顺手把页面勾上;页面已勾时取消单个按钮不回收页面权限
42
+ * (页面权限与按钮权限各自授予)。anchor 行自身不是节点,勾选态就等于「按钮是否全勾」。
43
+ */
44
+ export declare function setButtonChecked(group: CatalogGroup, menu: MenuRow, button: ButtonItem, val: boolean): void;
45
+ export interface Count {
46
+ on: number;
47
+ total: number;
48
+ }
49
+ export declare function groupCount(group: Pick<CatalogGroup, 'menus'>): Count;
50
+ export declare function menuButtonCount(menu: MenuRow): Count;
51
+ /** 全部分组的授权概况:on / total 含页面与按钮;pages / buttons 是已授权的两类各多少。 */
52
+ export type GrantCounts = Count & {
53
+ pages: number;
54
+ buttons: number;
55
+ };
56
+ /** 授权列表对外汇报的概况:计数 + 相对打开时是否有未保存的改动。 */
57
+ export type GrantSummary = GrantCounts & {
58
+ dirty: boolean;
59
+ };
60
+ export declare function countGrants(groups: CatalogGroup[]): GrantCounts;
25
61
  /**
26
62
  * 顶层节点 → 分组。顶级页面(如工作台)自成一组;顶级目录一组;根级直挂按钮并进一个合成组。
27
63
  * @param anchorTitle 无页面权限项行的显示文案(i18n 由调用方给)
@@ -1,76 +1,138 @@
1
+ import { translateMenuTitle as r } from "../../../../locales/menuTitle.js";
1
2
  import { MenuType as u } from "../../../../types/menu.js";
2
- function h(n, e) {
3
- return n.filter((t) => t.type === u.Button).map((t) => ({ id: t.id, title: t.title, checked: e.has(t.id) }));
3
+ function f(e, t) {
4
+ return e.filter((n) => n.type === u.Button).map((n) => ({
5
+ id: n.id,
6
+ title: r(n.title),
7
+ checked: t.has(n.id),
8
+ permission: n.permission || void 0
9
+ }));
4
10
  }
5
- function r(n, e, t = "") {
11
+ function p(e, t, n = "") {
6
12
  return {
7
- id: n.id,
8
- title: t + n.title,
9
- checked: e.has(n.id),
10
- buttons: h(n.children, e)
13
+ id: e.id,
14
+ title: n + r(e.title, e.path || void 0),
15
+ checked: t.has(e.id),
16
+ buttons: f(e.children, t),
17
+ path: e.path || void 0
11
18
  };
12
19
  }
13
- function l(n, e, t, c = "") {
20
+ function a(e, t, n, o = "") {
14
21
  return {
15
- id: n,
16
- title: c + t,
17
- checked: e.length > 0 && e.every((i) => i.checked),
18
- buttons: e,
22
+ id: e,
23
+ title: o + n,
24
+ checked: t.length > 0 && t.every((c) => c.checked),
25
+ buttons: t,
19
26
  anchor: !0
20
27
  };
21
28
  }
22
- function p(n, e, t, c = "") {
23
- const i = [], o = h(n.children, e);
24
- o.length && i.push(l(n.id, o, t, c));
25
- for (const s of n.children)
26
- s.type === u.Menu ? i.push(r(s, e, c)) : s.type === u.Catalog && i.push(...p(s, e, t, `${c}${s.title} / `));
27
- return i;
29
+ function k(e, t, n, o = "") {
30
+ const c = [], i = f(e.children, t);
31
+ i.length && c.push(a(e.id, i, n, o));
32
+ for (const s of e.children)
33
+ s.type === u.Menu ? c.push(p(s, t, o)) : s.type === u.Catalog && c.push(
34
+ ...k(
35
+ s,
36
+ t,
37
+ n,
38
+ `${o}${r(s.title)} / `
39
+ )
40
+ );
41
+ return c;
42
+ }
43
+ function d(e) {
44
+ return e.flatMap((t) => t.anchor ? t.buttons : [t, ...t.buttons]);
28
45
  }
29
- function f(n) {
30
- const e = n.menus.flatMap((c) => c.anchor ? c.buttons : [c, ...c.buttons]), t = e.filter((c) => c.checked).length;
31
- n.checked = t > 0 && t === e.length, n.indeterminate = t > 0 && t < e.length;
46
+ function m(e) {
47
+ const t = d(e), n = t.filter((o) => o.checked).length;
48
+ return {
49
+ checked: n > 0 && n === t.length,
50
+ indeterminate: n > 0 && n < t.length
51
+ };
32
52
  }
33
- function a(n, e, t) {
34
- const c = [];
53
+ function h(e) {
54
+ Object.assign(e, m(e.menus));
55
+ }
56
+ function y(e, t, n = e.menus) {
35
57
  for (const o of n) {
36
- if (o.type === u.Button) continue;
37
- const s = o.type === u.Menu ? [r(o, e)] : p(o, e, t), d = {
38
- id: o.id,
39
- title: o.title,
40
- checked: e.has(o.id),
58
+ o.checked = t;
59
+ for (const c of o.buttons) c.checked = t;
60
+ }
61
+ h(e);
62
+ }
63
+ function C(e, t, n) {
64
+ t.checked = n;
65
+ for (const o of t.buttons) o.checked = n;
66
+ h(e);
67
+ }
68
+ function M(e, t, n, o) {
69
+ n.checked = o;
70
+ const c = t.buttons.length > 0 && t.buttons.every((i) => i.checked);
71
+ (c || t.anchor) && (t.checked = c), h(e);
72
+ }
73
+ function B(e) {
74
+ const t = d(e.menus);
75
+ return { on: t.filter((n) => n.checked).length, total: t.length };
76
+ }
77
+ function w(e) {
78
+ return { on: e.buttons.filter((t) => t.checked).length, total: e.buttons.length };
79
+ }
80
+ function v(e) {
81
+ let t = 0, n = 0, o = 0, c = 0;
82
+ for (const i of e)
83
+ for (const s of d(i.menus))
84
+ n++, s.checked && (t++, "buttons" in s ? o++ : c++);
85
+ return { on: t, total: n, pages: o, buttons: c };
86
+ }
87
+ function G(e, t, n) {
88
+ const o = [];
89
+ for (const i of e) {
90
+ if (i.type === u.Button) continue;
91
+ const s = i.type === u.Menu ? [p(i, t)] : k(i, t, n), l = {
92
+ id: i.id,
93
+ title: r(i.title, i.path || void 0),
94
+ checked: t.has(i.id),
41
95
  indeterminate: !1,
42
- menus: s
96
+ menus: s,
97
+ standalone: i.type === u.Menu
43
98
  };
44
- f(d), c.push(d);
99
+ h(l), o.push(l);
45
100
  }
46
- const i = h(n, e);
47
- if (i.length) {
48
- const o = {
101
+ const c = f(e, t);
102
+ if (c.length) {
103
+ const i = {
49
104
  id: 0,
50
- title: t,
105
+ title: n,
51
106
  checked: !1,
52
107
  indeterminate: !1,
53
- menus: [l(0, i, t)],
108
+ menus: [a(0, c, n)],
54
109
  synthetic: !0
55
110
  };
56
- f(o), c.push(o);
111
+ h(i), o.push(i);
57
112
  }
58
- return c;
113
+ return o;
59
114
  }
60
- function y(n) {
61
- const e = [];
62
- for (const t of n) {
63
- !t.synthetic && (t.checked || t.indeterminate) && e.push(t.id);
64
- for (const c of t.menus) {
65
- !c.anchor && c.checked && e.push(c.id);
66
- for (const i of c.buttons) i.checked && e.push(i.id);
115
+ function R(e) {
116
+ const t = [];
117
+ for (const n of e) {
118
+ !n.synthetic && (n.checked || n.indeterminate) && t.push(n.id);
119
+ for (const o of n.menus) {
120
+ !o.anchor && o.checked && t.push(o.id);
121
+ for (const c of o.buttons) c.checked && t.push(c.id);
67
122
  }
68
123
  }
69
- return e;
124
+ return t;
70
125
  }
71
126
  export {
72
- a as buildGroups,
73
- y as collectChecked,
74
- f as recomputeGroup
127
+ G as buildGroups,
128
+ R as collectChecked,
129
+ v as countGrants,
130
+ B as groupCount,
131
+ w as menuButtonCount,
132
+ m as menusState,
133
+ h as recomputeGroup,
134
+ M as setButtonChecked,
135
+ y as setGroupChecked,
136
+ C as setMenuChecked
75
137
  };
76
138
  //# sourceMappingURL=grantMenuGroups.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"grantMenuGroups.js","sources":["../../../../../src/views/system/role/components/grantMenuGroups.ts"],"sourcesContent":["// 角色授权表格的分组逻辑(纯函数,GrantMenuTable.vue 只管渲染与勾选联动)。\n// 三列:目录 | 页面 | 按钮。按钮正常挂在页面下;直接挂在目录下的按钮是\"无页面权限项\"\n//(只给移动端 / 第三方调的接口,没有对应页面),渲染成该目录组里的一行 anchor 行,否则它们勾不到。\nimport { MenuType, type MenuTreeNode } from '#/types/menu'\n\nexport interface ButtonItem {\n id: number\n title: string\n checked: boolean\n}\nexport interface MenuRow {\n id: number\n title: string\n checked: boolean\n buttons: ButtonItem[]\n /** 无页面权限项行:承载目录直属按钮。id 是所属目录的 id,只作 key,不进 collectChecked。 */\n anchor?: boolean\n}\nexport interface CatalogGroup {\n id: number\n title: string\n checked: boolean\n indeterminate: boolean\n menus: MenuRow[]\n /** 根级直挂按钮的合成分组(id=0),自身不是可授权节点,不进 collectChecked。 */\n synthetic?: boolean\n}\n\nfunction toButtons(nodes: MenuTreeNode[], grantedSet: Set<number>): ButtonItem[] {\n return nodes\n .filter(b => b.type === MenuType.Button)\n .map(b => ({ id: b.id, title: b.title, checked: grantedSet.has(b.id) }))\n}\n\nfunction toMenuRow(m: MenuTreeNode, grantedSet: Set<number>, prefix = ''): MenuRow {\n return {\n id: m.id,\n title: prefix + m.title,\n checked: grantedSet.has(m.id),\n buttons: toButtons(m.children, grantedSet),\n }\n}\n\nfunction anchorRow(\n ownerId: number,\n buttons: ButtonItem[],\n anchorTitle: string,\n prefix = '',\n): MenuRow {\n return {\n id: ownerId,\n title: prefix + anchorTitle,\n checked: buttons.length > 0 && buttons.every(b => b.checked),\n buttons,\n anchor: true,\n }\n}\n\n/**\n * 一个目录的全部行:直属按钮 → anchor 行(有才出);直属页面 → 各一行;嵌套目录 → 递归,标题带上父目录前缀。\n */\nfunction catalogRows(\n node: MenuTreeNode,\n grantedSet: Set<number>,\n anchorTitle: string,\n prefix = '',\n): MenuRow[] {\n const rows: MenuRow[] = []\n const buttons = toButtons(node.children, grantedSet)\n if (buttons.length) rows.push(anchorRow(node.id, buttons, anchorTitle, prefix))\n for (const child of node.children) {\n if (child.type === MenuType.Menu) rows.push(toMenuRow(child, grantedSet, prefix))\n else if (child.type === MenuType.Catalog)\n rows.push(...catalogRows(child, grantedSet, anchorTitle, `${prefix}${child.title} / `))\n }\n return rows\n}\n\nexport function recomputeGroup(group: CatalogGroup) {\n // anchor 行自身不是节点,只数它的按钮\n const items = group.menus.flatMap(m => (m.anchor ? m.buttons : [m, ...m.buttons]))\n const checkedCount = items.filter(x => x.checked).length\n group.checked = checkedCount > 0 && checkedCount === items.length\n group.indeterminate = checkedCount > 0 && checkedCount < items.length\n}\n\n/**\n * 顶层节点 → 分组。顶级页面(如工作台)自成一组;顶级目录一组;根级直挂按钮并进一个合成组。\n * @param anchorTitle 无页面权限项行的显示文案(i18n 由调用方给)\n */\nexport function buildGroups(\n tree: MenuTreeNode[],\n grantedSet: Set<number>,\n anchorTitle: string,\n): CatalogGroup[] {\n const groups: CatalogGroup[] = []\n for (const node of tree) {\n if (node.type === MenuType.Button) continue\n const menus =\n node.type === MenuType.Menu\n ? [toMenuRow(node, grantedSet)]\n : catalogRows(node, grantedSet, anchorTitle)\n const group: CatalogGroup = {\n id: node.id,\n title: node.title,\n checked: grantedSet.has(node.id),\n indeterminate: false,\n menus,\n }\n recomputeGroup(group)\n groups.push(group)\n }\n const rootButtons = toButtons(tree, grantedSet)\n if (rootButtons.length) {\n const group: CatalogGroup = {\n id: 0,\n title: anchorTitle,\n checked: false,\n indeterminate: false,\n menus: [anchorRow(0, rootButtons, anchorTitle)],\n synthetic: true,\n }\n recomputeGroup(group)\n groups.push(group)\n }\n return groups\n}\n\n/** 勾选态 → 要提交的菜单 id:目录(全勾或半勾)、页面、按钮;anchor 行与合成组自身不算节点。 */\nexport function collectChecked(groups: CatalogGroup[]): number[] {\n const ids: number[] = []\n for (const g of groups) {\n if (!g.synthetic && (g.checked || g.indeterminate)) ids.push(g.id)\n for (const m of g.menus) {\n if (!m.anchor && m.checked) ids.push(m.id)\n for (const b of m.buttons) if (b.checked) ids.push(b.id)\n }\n }\n return ids\n}\n"],"names":["toButtons","nodes","grantedSet","b","MenuType","toMenuRow","m","prefix","anchorRow","ownerId","buttons","anchorTitle","catalogRows","node","rows","child","recomputeGroup","group","items","checkedCount","x","buildGroups","tree","groups","menus","rootButtons","collectChecked","ids","g"],"mappings":"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"}
1
+ {"version":3,"file":"grantMenuGroups.js","sources":["../../../../../src/views/system/role/components/grantMenuGroups.ts"],"sourcesContent":["// 角色授权列表的分组与勾选联动逻辑(纯函数,GrantMenuTable.vue 只管渲染)。\n// 三层:目录 → 页面 → 按钮。按钮正常挂在页面下;直接挂在目录下的按钮是\"无页面权限项\"\n//(只给移动端 / 第三方调的接口,没有对应页面),渲染成该目录组里的一行 anchor 行,否则它们勾不到。\nimport { translateMenuTitle } from '#/locales/menuTitle'\nimport { MenuType, type MenuTreeNode } from '#/types/menu'\n\nexport interface ButtonItem {\n id: number\n title: string\n checked: boolean\n /** 权限码(多条以 ; 连接),只作悬停提示,不参与勾选与提交。 */\n permission?: string\n}\nexport interface MenuRow {\n id: number\n title: string\n checked: boolean\n buttons: ButtonItem[]\n /** 页面路由,只作副标题;anchor 行没有。 */\n path?: string\n /** 无页面权限项行:承载目录直属按钮。id 是所属目录的 id,只作 key,不进 collectChecked。 */\n anchor?: boolean\n}\nexport interface CatalogGroup {\n id: number\n title: string\n checked: boolean\n indeterminate: boolean\n menus: MenuRow[]\n /** 根级直挂按钮的合成分组(id=0),自身不是可授权节点,不进 collectChecked。 */\n synthetic?: boolean\n /** 顶级页面(如工作台)自成的一组:界面上不画目录头,直接是一行。 */\n standalone?: boolean\n}\n\nfunction toButtons(nodes: MenuTreeNode[], grantedSet: Set<number>): ButtonItem[] {\n return nodes\n .filter(b => b.type === MenuType.Button)\n .map(b => ({\n id: b.id,\n title: translateMenuTitle(b.title),\n checked: grantedSet.has(b.id),\n permission: b.permission || undefined,\n }))\n}\n\nfunction toMenuRow(m: MenuTreeNode, grantedSet: Set<number>, prefix = ''): MenuRow {\n return {\n id: m.id,\n title: prefix + translateMenuTitle(m.title, m.path || undefined),\n checked: grantedSet.has(m.id),\n buttons: toButtons(m.children, grantedSet),\n path: m.path || undefined,\n }\n}\n\nfunction anchorRow(\n ownerId: number,\n buttons: ButtonItem[],\n anchorTitle: string,\n prefix = '',\n): MenuRow {\n return {\n id: ownerId,\n title: prefix + anchorTitle,\n checked: buttons.length > 0 && buttons.every(b => b.checked),\n buttons,\n anchor: true,\n }\n}\n\n/**\n * 一个目录的全部行:直属按钮 → anchor 行(有才出);直属页面 → 各一行;嵌套目录 → 递归,标题带上父目录前缀。\n */\nfunction catalogRows(\n node: MenuTreeNode,\n grantedSet: Set<number>,\n anchorTitle: string,\n prefix = '',\n): MenuRow[] {\n const rows: MenuRow[] = []\n const buttons = toButtons(node.children, grantedSet)\n if (buttons.length) rows.push(anchorRow(node.id, buttons, anchorTitle, prefix))\n for (const child of node.children) {\n if (child.type === MenuType.Menu) rows.push(toMenuRow(child, grantedSet, prefix))\n else if (child.type === MenuType.Catalog)\n rows.push(\n ...catalogRows(\n child,\n grantedSet,\n anchorTitle,\n `${prefix}${translateMenuTitle(child.title)} / `,\n ),\n )\n }\n return rows\n}\n\n/** 一个目录下的可勾选条目:页面 + 按钮;anchor 行自身不是节点,只数它的按钮。 */\nfunction rowItems(menus: MenuRow[]): (MenuRow | ButtonItem)[] {\n return menus.flatMap(m => (m.anchor ? m.buttons : [m, ...m.buttons]))\n}\n\n/** 一组行的勾选态(全勾 / 半勾)。搜索时目录头按可见行算,落库的目录状态按全部行算。 */\nexport function menusState(menus: MenuRow[]): { checked: boolean; indeterminate: boolean } {\n const items = rowItems(menus)\n const checkedCount = items.filter(x => x.checked).length\n return {\n checked: checkedCount > 0 && checkedCount === items.length,\n indeterminate: checkedCount > 0 && checkedCount < items.length,\n }\n}\n\nexport function recomputeGroup(group: CatalogGroup) {\n Object.assign(group, menusState(group.menus))\n}\n\n// ── 勾选联动 ──\n\n/** 勾/取消整个目录:其下页面与按钮一并跟随。搜索过滤时 rows 传可见行,不动被过滤掉的行。 */\nexport function setGroupChecked(group: CatalogGroup, val: boolean, rows: MenuRow[] = group.menus) {\n for (const m of rows) {\n m.checked = val\n for (const b of m.buttons) b.checked = val\n }\n recomputeGroup(group)\n}\n\n/** 勾/取消一个页面(或 anchor 行):其按钮一并跟随。 */\nexport function setMenuChecked(group: CatalogGroup, menu: MenuRow, val: boolean) {\n menu.checked = val\n for (const b of menu.buttons) b.checked = val\n recomputeGroup(group)\n}\n\n/**\n * 勾/取消一个按钮。按钮全勾时顺手把页面勾上;页面已勾时取消单个按钮不回收页面权限\n * (页面权限与按钮权限各自授予)。anchor 行自身不是节点,勾选态就等于「按钮是否全勾」。\n */\nexport function setButtonChecked(\n group: CatalogGroup,\n menu: MenuRow,\n button: ButtonItem,\n val: boolean,\n) {\n button.checked = val\n const allChecked = menu.buttons.length > 0 && menu.buttons.every(b => b.checked)\n if (allChecked || menu.anchor) menu.checked = allChecked\n recomputeGroup(group)\n}\n\n// ── 计数(仅用于展示) ──\n\nexport interface Count {\n on: number\n total: number\n}\n\nexport function groupCount(group: Pick<CatalogGroup, 'menus'>): Count {\n const items = rowItems(group.menus)\n return { on: items.filter(x => x.checked).length, total: items.length }\n}\n\nexport function menuButtonCount(menu: MenuRow): Count {\n return { on: menu.buttons.filter(b => b.checked).length, total: menu.buttons.length }\n}\n\n/** 全部分组的授权概况:on / total 含页面与按钮;pages / buttons 是已授权的两类各多少。 */\nexport type GrantCounts = Count & { pages: number; buttons: number }\n\n/** 授权列表对外汇报的概况:计数 + 相对打开时是否有未保存的改动。 */\nexport type GrantSummary = GrantCounts & { dirty: boolean }\n\nexport function countGrants(groups: CatalogGroup[]): GrantCounts {\n let on = 0\n let total = 0\n let pages = 0\n let buttons = 0\n for (const g of groups) {\n for (const item of rowItems(g.menus)) {\n total++\n if (!item.checked) continue\n on++\n if ('buttons' in item) pages++\n else buttons++\n }\n }\n return { on, total, pages, buttons }\n}\n\n/**\n * 顶层节点 → 分组。顶级页面(如工作台)自成一组;顶级目录一组;根级直挂按钮并进一个合成组。\n * @param anchorTitle 无页面权限项行的显示文案(i18n 由调用方给)\n */\nexport function buildGroups(\n tree: MenuTreeNode[],\n grantedSet: Set<number>,\n anchorTitle: string,\n): CatalogGroup[] {\n const groups: CatalogGroup[] = []\n for (const node of tree) {\n if (node.type === MenuType.Button) continue\n const menus =\n node.type === MenuType.Menu\n ? [toMenuRow(node, grantedSet)]\n : catalogRows(node, grantedSet, anchorTitle)\n const group: CatalogGroup = {\n id: node.id,\n title: translateMenuTitle(node.title, node.path || undefined),\n checked: grantedSet.has(node.id),\n indeterminate: false,\n menus,\n standalone: node.type === MenuType.Menu,\n }\n recomputeGroup(group)\n groups.push(group)\n }\n const rootButtons = toButtons(tree, grantedSet)\n if (rootButtons.length) {\n const group: CatalogGroup = {\n id: 0,\n title: anchorTitle,\n checked: false,\n indeterminate: false,\n menus: [anchorRow(0, rootButtons, anchorTitle)],\n synthetic: true,\n }\n recomputeGroup(group)\n groups.push(group)\n }\n return groups\n}\n\n/** 勾选态 → 要提交的菜单 id:目录(全勾或半勾)、页面、按钮;anchor 行与合成组自身不算节点。 */\nexport function collectChecked(groups: CatalogGroup[]): number[] {\n const ids: number[] = []\n for (const g of groups) {\n if (!g.synthetic && (g.checked || g.indeterminate)) ids.push(g.id)\n for (const m of g.menus) {\n if (!m.anchor && m.checked) ids.push(m.id)\n for (const b of m.buttons) if (b.checked) ids.push(b.id)\n }\n }\n return ids\n}\n"],"names":["toButtons","nodes","grantedSet","b","MenuType","translateMenuTitle","toMenuRow","m","prefix","anchorRow","ownerId","buttons","anchorTitle","catalogRows","node","rows","child","rowItems","menus","menusState","items","checkedCount","x","recomputeGroup","group","setGroupChecked","val","setMenuChecked","menu","setButtonChecked","button","allChecked","groupCount","menuButtonCount","countGrants","groups","on","total","pages","g","item","buildGroups","tree","rootButtons","collectChecked","ids"],"mappings":"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"}
@@ -1,5 +1,8 @@
1
- import f from "./index2.vue.js";
1
+ import o from "./index2.vue.js";
2
+ /* empty css */
3
+ import t from "../../../_virtual/_plugin-vue_export-helper.js";
4
+ const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-1e28319e"]]);
2
5
  export {
3
- f as default
6
+ p as default
4
7
  };
5
8
  //# sourceMappingURL=index.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}