smart-admin-web 10.15.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 (432) hide show
  1. package/README.md +1 -1
  2. package/dist/api/index.d.ts +4 -2
  3. package/dist/api/index.js +1 -1
  4. package/dist/api/index.js.map +1 -1
  5. package/dist/api/schema.d.ts +39 -5
  6. package/dist/assets/icons/ph-subset.json.js +5 -5
  7. package/dist/components/AppIcon.vue.js +9 -9
  8. package/dist/components/AppIcon.vue.js.map +1 -1
  9. package/dist/components/AppWatermark.vue.d.ts +14 -0
  10. package/dist/components/AppWatermark.vue.js +38 -0
  11. package/dist/components/AppWatermark.vue.js.map +1 -0
  12. package/dist/components/AppWatermark2.vue.js +5 -0
  13. package/dist/components/AppWatermark2.vue.js.map +1 -0
  14. package/dist/components/Chart/PieChart.vue.d.ts +1 -1
  15. package/dist/components/Chart/echarts.js +15 -20
  16. package/dist/components/Chart/echarts.js.map +1 -1
  17. package/dist/components/CronEditor/index.vue.js +1 -1
  18. package/dist/components/CronEditor/index2.vue.js +2 -1
  19. package/dist/components/CronEditor/index2.vue.js.map +1 -1
  20. package/dist/components/DetailPage/index.vue.js +2 -2
  21. package/dist/components/DetailPage/index2.vue.js.map +1 -1
  22. package/dist/components/DictTag/index.vue.js.map +1 -1
  23. package/dist/components/ErrorBoundary/index.vue.js +2 -2
  24. package/dist/components/ErrorBoundary/index2.vue.js +1 -1
  25. package/dist/components/ErrorBoundary/index2.vue.js.map +1 -1
  26. package/dist/components/FormContainer/index.vue.js +91 -56
  27. package/dist/components/FormContainer/index.vue.js.map +1 -1
  28. package/dist/components/ImportWizard/index.vue.js +1 -1
  29. package/dist/components/ImportWizard/index2.vue.js +44 -41
  30. package/dist/components/ImportWizard/index2.vue.js.map +1 -1
  31. package/dist/components/MenuSearch.vue.js +2 -2
  32. package/dist/components/MenuSearch2.vue.js +19 -18
  33. package/dist/components/MenuSearch2.vue.js.map +1 -1
  34. package/dist/components/PasswordStrength/index.vue.js +2 -2
  35. package/dist/components/PasswordStrength/index2.vue.js +20 -18
  36. package/dist/components/PasswordStrength/index2.vue.js.map +1 -1
  37. package/dist/components/TableTotal/index.vue.d.ts +6 -0
  38. package/dist/components/{SelectTable → TableTotal}/index.vue.js +1 -1
  39. package/dist/components/TableTotal/index2.vue.js +16 -0
  40. package/dist/components/TableTotal/index2.vue.js.map +1 -0
  41. package/dist/components/TableZoomButton/index.vue.js.map +1 -1
  42. package/dist/components/UserPicker/index.vue.js +2 -2
  43. package/dist/components/UserPicker/index2.vue.js +176 -117
  44. package/dist/components/UserPicker/index2.vue.js.map +1 -1
  45. package/dist/composables/useBatchDelete.js.map +1 -1
  46. package/dist/composables/useLayoutMenu.js +17 -16
  47. package/dist/composables/useLayoutMenu.js.map +1 -1
  48. package/dist/composables/useModule.js +39 -29
  49. package/dist/composables/useModule.js.map +1 -1
  50. package/dist/composables/useShellBreakpoint.d.ts +19 -0
  51. package/dist/composables/useShellBreakpoint.js +37 -0
  52. package/dist/composables/useShellBreakpoint.js.map +1 -0
  53. package/dist/composables/useSite.d.ts +15 -0
  54. package/dist/composables/useSite.js +16 -14
  55. package/dist/composables/useSite.js.map +1 -1
  56. package/dist/composables/useTabTitle.js.map +1 -1
  57. package/dist/composables/useTableTitle.d.ts +6 -0
  58. package/dist/composables/useTableTitle.js +11 -0
  59. package/dist/composables/useTableTitle.js.map +1 -0
  60. package/dist/composables/useTableZoom.d.ts +5 -0
  61. package/dist/composables/useTableZoom.js.map +1 -1
  62. package/dist/composables/useTheme.d.ts +2 -2
  63. package/dist/composables/useTheme.js +23 -20
  64. package/dist/composables/useTheme.js.map +1 -1
  65. package/dist/createSmartAdmin.d.ts +12 -2
  66. package/dist/createSmartAdmin.js +72 -60
  67. package/dist/createSmartAdmin.js.map +1 -1
  68. package/dist/index.d.ts +5 -2
  69. package/dist/index.js +219 -205
  70. package/dist/index.js.map +1 -1
  71. package/dist/layouts/AccentPicker.vue.js +8 -0
  72. package/dist/layouts/AccentPicker.vue.js.map +1 -0
  73. package/dist/layouts/AccentPicker2.vue.js +131 -0
  74. package/dist/layouts/AccentPicker2.vue.js.map +1 -0
  75. package/dist/layouts/AppHeader.vue.d.ts +8 -1
  76. package/dist/layouts/AppHeader.vue.js +2 -2
  77. package/dist/layouts/AppHeader2.vue.js +317 -235
  78. package/dist/layouts/AppHeader2.vue.js.map +1 -1
  79. package/dist/layouts/NoticeBell.vue.js +2 -2
  80. package/dist/layouts/NoticeBell2.vue.js +1 -1
  81. package/dist/layouts/NoticeBell2.vue.js.map +1 -1
  82. package/dist/layouts/PersonalLayout.vue.js +2 -2
  83. package/dist/layouts/PersonalLayout2.vue.js +69 -47
  84. package/dist/layouts/PersonalLayout2.vue.js.map +1 -1
  85. package/dist/layouts/SettingsDrawer.vue.js +3 -3
  86. package/dist/layouts/SettingsDrawer2.vue.js +261 -325
  87. package/dist/layouts/SettingsDrawer2.vue.js.map +1 -1
  88. package/dist/layouts/TabsBar.vue.js +2 -2
  89. package/dist/layouts/TabsBar2.vue.js +97 -69
  90. package/dist/layouts/TabsBar2.vue.js.map +1 -1
  91. package/dist/layouts/components/SideNav.vue.d.ts +3 -0
  92. package/dist/layouts/components/SideNav.vue.js +1 -1
  93. package/dist/layouts/components/SideNav2.vue.js +54 -26
  94. package/dist/layouts/components/SideNav2.vue.js.map +1 -1
  95. package/dist/layouts/default.vue.js +1 -1
  96. package/dist/layouts/default2.vue.js +170 -140
  97. package/dist/layouts/default2.vue.js.map +1 -1
  98. package/dist/lib/loginHero.d.ts +2 -2
  99. package/dist/lib/loginHero.js.map +1 -1
  100. package/dist/lib/runtime.js +1 -1
  101. package/dist/lib/watermark.d.ts +110 -0
  102. package/dist/lib/watermark.js +151 -0
  103. package/dist/lib/watermark.js.map +1 -0
  104. package/dist/locales/en-US.d.ts +221 -15
  105. package/dist/locales/en-US.js +230 -21
  106. package/dist/locales/en-US.js.map +1 -1
  107. package/dist/locales/kernelMenuTitles.d.ts +1 -0
  108. package/dist/locales/kernelMenuTitles.js +128 -0
  109. package/dist/locales/kernelMenuTitles.js.map +1 -0
  110. package/dist/locales/menuTitle.d.ts +3 -0
  111. package/dist/locales/menuTitle.js +14 -12
  112. package/dist/locales/menuTitle.js.map +1 -1
  113. package/dist/locales/zh-CN.d.ts +221 -15
  114. package/dist/locales/zh-CN.js +238 -28
  115. package/dist/locales/zh-CN.js.map +1 -1
  116. package/dist/router/index.js +41 -32
  117. package/dist/router/index.js.map +1 -1
  118. package/dist/router/namedPage.d.ts +4 -0
  119. package/dist/router/namedPage.js +7 -7
  120. package/dist/router/namedPage.js.map +1 -1
  121. package/dist/router/viewRegistry.js +8 -8
  122. package/dist/router/viewRegistry.js.map +1 -1
  123. package/dist/stores/app.d.ts +0 -12
  124. package/dist/stores/app.js +11 -12
  125. package/dist/stores/app.js.map +1 -1
  126. package/dist/stores/tabs.js.map +1 -1
  127. package/dist/stores/user.d.ts +10 -0
  128. package/dist/stores/user.js.map +1 -1
  129. package/dist/style.css +1 -1
  130. package/dist/theme/accentTokens.d.ts +27 -0
  131. package/dist/theme/accentTokens.js +54 -0
  132. package/dist/theme/accentTokens.js.map +1 -0
  133. package/dist/theme/accents.d.ts +21 -1
  134. package/dist/theme/accents.js +11 -2
  135. package/dist/theme/accents.js.map +1 -1
  136. package/dist/theme/mix.d.ts +58 -7
  137. package/dist/theme/mix.js +115 -30
  138. package/dist/theme/mix.js.map +1 -1
  139. package/dist/theme/naive-theme.d.ts +5 -2
  140. package/dist/theme/naive-theme.js +405 -75
  141. package/dist/theme/naive-theme.js.map +1 -1
  142. package/dist/utils/jwt.d.ts +8 -0
  143. package/dist/utils/jwt.js +14 -0
  144. package/dist/utils/jwt.js.map +1 -0
  145. package/dist/utils/menuIcon.d.ts +2 -0
  146. package/dist/utils/menuIcon.js +8 -0
  147. package/dist/utils/menuIcon.js.map +1 -0
  148. package/dist/utils/oauthBrand.js.map +1 -1
  149. package/dist/utils/tableFilter.d.ts +88 -0
  150. package/dist/utils/tableFilter.js +116 -0
  151. package/dist/utils/tableFilter.js.map +1 -0
  152. package/dist/utils/tableToolbar.d.ts +18 -0
  153. package/dist/utils/tableToolbar.js +11 -0
  154. package/dist/utils/tableToolbar.js.map +1 -0
  155. package/dist/utils/treeFilter.d.ts +20 -0
  156. package/dist/utils/treeFilter.js +24 -0
  157. package/dist/utils/treeFilter.js.map +1 -0
  158. package/dist/views/dashboard/ShortcutPicker.vue.js +1 -1
  159. package/dist/views/dashboard/ShortcutPicker2.vue.js +73 -48
  160. package/dist/views/dashboard/ShortcutPicker2.vue.js.map +1 -1
  161. package/dist/views/dashboard/biz.vue.js +1 -1
  162. package/dist/views/dashboard/biz2.vue.js +310 -257
  163. package/dist/views/dashboard/biz2.vue.js.map +1 -1
  164. package/dist/views/dashboard/workbench.vue.js +2 -2
  165. package/dist/views/dashboard/workbench2.vue.js +141 -155
  166. package/dist/views/dashboard/workbench2.vue.js.map +1 -1
  167. package/dist/views/embed/iframe.vue.js +2 -2
  168. package/dist/views/embed/iframe2.vue.js +22 -15
  169. package/dist/views/embed/iframe2.vue.js.map +1 -1
  170. package/dist/views/error/404.vue.js +2 -2
  171. package/dist/views/error/4042.vue.js +33 -24
  172. package/dist/views/error/4042.vue.js.map +1 -1
  173. package/dist/views/error/BootError.vue.js +1 -1
  174. package/dist/views/error/BootError2.vue.js +59 -48
  175. package/dist/views/error/BootError2.vue.js.map +1 -1
  176. package/dist/views/error/MissingRoute.vue.js +2 -2
  177. package/dist/views/error/MissingRoute2.vue.js +34 -15
  178. package/dist/views/error/MissingRoute2.vue.js.map +1 -1
  179. package/dist/views/login/LoginForm.vue.d.ts +7 -1
  180. package/dist/views/login/LoginForm.vue.js +2 -2
  181. package/dist/views/login/LoginForm2.vue.js +580 -488
  182. package/dist/views/login/LoginForm2.vue.js.map +1 -1
  183. package/dist/views/login/components/LoginDesk.vue.d.ts +36 -0
  184. package/dist/views/login/components/LoginDesk.vue.js +9 -0
  185. package/dist/views/login/components/LoginDesk.vue.js.map +1 -0
  186. package/dist/views/login/components/LoginDesk2.vue.js +100 -0
  187. package/dist/views/login/components/LoginDesk2.vue.js.map +1 -0
  188. package/dist/views/login/components/LoginHeroPanel.vue.js +3 -3
  189. package/dist/views/login/components/LoginHeroPanel2.vue.js +34 -39
  190. package/dist/views/login/components/LoginHeroPanel2.vue.js.map +1 -1
  191. package/dist/views/login/index.vue.js +1 -1
  192. package/dist/views/login/index2.vue.js +141 -71
  193. package/dist/views/login/index2.vue.js.map +1 -1
  194. package/dist/views/login/layout.d.ts +11 -0
  195. package/dist/views/login/layout.js +27 -0
  196. package/dist/views/login/layout.js.map +1 -0
  197. package/dist/views/mfa/index.vue.js +2 -2
  198. package/dist/views/mfa/index2.vue.js +367 -321
  199. package/dist/views/mfa/index2.vue.js.map +1 -1
  200. package/dist/views/module/index.vue.js +2 -2
  201. package/dist/views/module/index2.vue.js +132 -99
  202. package/dist/views/module/index2.vue.js.map +1 -1
  203. package/dist/views/oauth/callback.vue.js +2 -2
  204. package/dist/views/oauth/callback2.vue.js +65 -51
  205. package/dist/views/oauth/callback2.vue.js.map +1 -1
  206. package/dist/views/personal/bindings.vue.js +2 -2
  207. package/dist/views/personal/bindings2.vue.js +98 -94
  208. package/dist/views/personal/bindings2.vue.js.map +1 -1
  209. package/dist/views/personal/notice2.vue.js +103 -76
  210. package/dist/views/personal/notice2.vue.js.map +1 -1
  211. package/dist/views/personal/password2.vue.js +47 -40
  212. package/dist/views/personal/password2.vue.js.map +1 -1
  213. package/dist/views/personal/profile.vue.js +3 -3
  214. package/dist/views/personal/profile2.vue.js +24 -18
  215. package/dist/views/personal/profile2.vue.js.map +1 -1
  216. package/dist/views/personal/security.vue.js +2 -2
  217. package/dist/views/personal/security2.vue.js +65 -53
  218. package/dist/views/personal/security2.vue.js.map +1 -1
  219. package/dist/views/personal/sessions.vue.js +2 -2
  220. package/dist/views/personal/sessions2.vue.js +67 -62
  221. package/dist/views/personal/sessions2.vue.js.map +1 -1
  222. package/dist/views/system/ai-model/components/ProviderCard.vue.js +2 -2
  223. package/dist/views/system/ai-model/components/ProviderCard2.vue.js +142 -130
  224. package/dist/views/system/ai-model/components/ProviderCard2.vue.js.map +1 -1
  225. package/dist/views/system/ai-model/components/ProviderForm.vue.js +2 -2
  226. package/dist/views/system/ai-model/components/ProviderForm2.vue.js +71 -70
  227. package/dist/views/system/ai-model/components/ProviderForm2.vue.js.map +1 -1
  228. package/dist/views/system/ai-model/index.vue.js +2 -2
  229. package/dist/views/system/ai-model/index2.vue.js +99 -99
  230. package/dist/views/system/ai-model/index2.vue.js.map +1 -1
  231. package/dist/views/system/ai-model/presets.d.ts +1 -1
  232. package/dist/views/system/ai-model/presets.js +18 -18
  233. package/dist/views/system/ai-model/presets.js.map +1 -1
  234. package/dist/views/system/ai-usage/index.vue.js +2 -2
  235. package/dist/views/system/ai-usage/index2.vue.js +356 -258
  236. package/dist/views/system/ai-usage/index2.vue.js.map +1 -1
  237. package/dist/views/system/api-docs/index.vue.js +5 -2
  238. package/dist/views/system/api-docs/index.vue.js.map +1 -1
  239. package/dist/views/system/api-docs/index2.vue.js +92 -42
  240. package/dist/views/system/api-docs/index2.vue.js.map +1 -1
  241. package/dist/views/system/cache/index.vue.js +2 -2
  242. package/dist/views/system/cache/index2.vue.js +74 -80
  243. package/dist/views/system/cache/index2.vue.js.map +1 -1
  244. package/dist/views/system/config/components/AdminMock.vue.js +2 -2
  245. package/dist/views/system/config/components/AdminMock2.vue.js +60 -43
  246. package/dist/views/system/config/components/AdminMock2.vue.js.map +1 -1
  247. package/dist/views/system/config/components/AdvancedSection.vue.js +5 -2
  248. package/dist/views/system/config/components/AdvancedSection.vue.js.map +1 -1
  249. package/dist/views/system/config/components/AdvancedSection2.vue.js +98 -70
  250. package/dist/views/system/config/components/AdvancedSection2.vue.js.map +1 -1
  251. package/dist/views/system/config/components/BrandSection.vue.js +2 -2
  252. package/dist/views/system/config/components/BrandSection2.vue.js +121 -119
  253. package/dist/views/system/config/components/BrandSection2.vue.js.map +1 -1
  254. package/dist/views/system/config/components/CfgGroup.vue.js +3 -3
  255. package/dist/views/system/config/components/CfgGroup2.vue.js.map +1 -1
  256. package/dist/views/system/config/components/CfgRow.vue.js +1 -1
  257. package/dist/views/system/config/components/CfgRow2.vue.js +24 -23
  258. package/dist/views/system/config/components/CfgRow2.vue.js.map +1 -1
  259. package/dist/views/system/config/components/CfgSegment.vue.js +1 -1
  260. package/dist/views/system/config/components/CfgSegment2.vue.js +16 -15
  261. package/dist/views/system/config/components/CfgSegment2.vue.js.map +1 -1
  262. package/dist/views/system/config/components/ConfigFormModal.vue.js +2 -2
  263. package/dist/views/system/config/components/ConfigFormModal2.vue.js +35 -33
  264. package/dist/views/system/config/components/ConfigFormModal2.vue.js.map +1 -1
  265. package/dist/views/system/config/components/JobSection.vue.js +2 -2
  266. package/dist/views/system/config/components/JobSection2.vue.js +46 -44
  267. package/dist/views/system/config/components/JobSection2.vue.js.map +1 -1
  268. package/dist/views/system/config/components/LoginMock.vue.js +3 -3
  269. package/dist/views/system/config/components/LoginMock2.vue.js +83 -72
  270. package/dist/views/system/config/components/LoginMock2.vue.js.map +1 -1
  271. package/dist/views/system/config/components/LogoCropper.vue.js +1 -1
  272. package/dist/views/system/config/components/LogoCropper2.vue.js.map +1 -1
  273. package/dist/views/system/config/components/LogoEditor.vue.js +2 -2
  274. package/dist/views/system/config/components/LogoEditor2.vue.js +11 -13
  275. package/dist/views/system/config/components/LogoEditor2.vue.js.map +1 -1
  276. package/dist/views/system/config/components/ProviderSheet.vue.js +3 -3
  277. package/dist/views/system/config/components/ProviderSheet2.vue.js.map +1 -1
  278. package/dist/views/system/config/components/SectionLayout.vue.d.ts +4 -2
  279. package/dist/views/system/config/components/SectionLayout.vue.js +2 -2
  280. package/dist/views/system/config/components/SectionLayout2.vue.js +51 -27
  281. package/dist/views/system/config/components/SectionLayout2.vue.js.map +1 -1
  282. package/dist/views/system/config/components/SecuritySection.vue.js +2 -2
  283. package/dist/views/system/config/components/SecuritySection2.vue.js +207 -206
  284. package/dist/views/system/config/components/SecuritySection2.vue.js.map +1 -1
  285. package/dist/views/system/config/components/SensitiveSection.vue.js +2 -2
  286. package/dist/views/system/config/components/SensitiveSection2.vue.js +107 -102
  287. package/dist/views/system/config/components/SensitiveSection2.vue.js.map +1 -1
  288. package/dist/views/system/config/components/UploadSection.vue.js +2 -2
  289. package/dist/views/system/config/components/UploadSection2.vue.js +86 -77
  290. package/dist/views/system/config/components/UploadSection2.vue.js.map +1 -1
  291. package/dist/views/system/config/components/WatermarkSection.vue.js +8 -0
  292. package/dist/views/system/config/components/WatermarkSection.vue.js.map +1 -0
  293. package/dist/views/system/config/components/WatermarkSection2.vue.js +284 -0
  294. package/dist/views/system/config/components/WatermarkSection2.vue.js.map +1 -0
  295. package/dist/views/system/config/draft.d.ts +2 -2
  296. package/dist/views/system/config/draft.js.map +1 -1
  297. package/dist/views/system/config/groups.d.ts +4 -1
  298. package/dist/views/system/config/groups.js +54 -49
  299. package/dist/views/system/config/groups.js.map +1 -1
  300. package/dist/views/system/config/index.vue.js +3 -2
  301. package/dist/views/system/config/index.vue.js.map +1 -1
  302. package/dist/views/system/config/index2.vue.js +173 -148
  303. package/dist/views/system/config/index2.vue.js.map +1 -1
  304. package/dist/views/system/config/layoutMode.d.ts +23 -0
  305. package/dist/views/system/config/layoutMode.js +28 -0
  306. package/dist/views/system/config/layoutMode.js.map +1 -0
  307. package/dist/views/system/dict/index.vue.js +2 -2
  308. package/dist/views/system/dict/index2.vue.js +471 -366
  309. package/dist/views/system/dict/index2.vue.js.map +1 -1
  310. package/dist/views/system/file/index2.vue.js +91 -76
  311. package/dist/views/system/file/index2.vue.js.map +1 -1
  312. package/dist/views/system/job/index.vue.js +3 -3
  313. package/dist/views/system/job/index2.vue.js +897 -828
  314. package/dist/views/system/job/index2.vue.js.map +1 -1
  315. package/dist/views/system/job-log/components/AttemptTable.vue.d.ts +8 -0
  316. package/dist/views/system/job-log/components/AttemptTable.vue.js +5 -0
  317. package/dist/views/system/job-log/components/AttemptTable.vue.js.map +1 -0
  318. package/dist/views/system/job-log/components/AttemptTable2.vue.js +54 -0
  319. package/dist/views/system/job-log/components/AttemptTable2.vue.js.map +1 -0
  320. package/dist/views/system/job-log/index.vue.js +2 -2
  321. package/dist/views/system/job-log/index2.vue.js +193 -207
  322. package/dist/views/system/job-log/index2.vue.js.map +1 -1
  323. package/dist/views/system/job-log/runStatus.d.ts +13 -0
  324. package/dist/views/system/job-log/runStatus.js +26 -0
  325. package/dist/views/system/job-log/runStatus.js.map +1 -0
  326. package/dist/views/system/job-monitor/index.vue.js +2 -2
  327. package/dist/views/system/job-monitor/index2.vue.js +172 -180
  328. package/dist/views/system/job-monitor/index2.vue.js.map +1 -1
  329. package/dist/views/system/log/exception/index.vue.js +2 -2
  330. package/dist/views/system/log/exception/index2.vue.js +135 -96
  331. package/dist/views/system/log/exception/index2.vue.js.map +1 -1
  332. package/dist/views/system/log/login/index2.vue.js +62 -41
  333. package/dist/views/system/log/login/index2.vue.js.map +1 -1
  334. package/dist/views/system/log/op/index.vue.js +2 -2
  335. package/dist/views/system/log/op/index2.vue.js +200 -162
  336. package/dist/views/system/log/op/index2.vue.js.map +1 -1
  337. package/dist/views/system/menu/components/ButtonManager.vue.js +2 -2
  338. package/dist/views/system/menu/components/ButtonManager2.vue.js +206 -190
  339. package/dist/views/system/menu/components/ButtonManager2.vue.js.map +1 -1
  340. package/dist/views/system/menu/components/MenuFormModal.vue.js +2 -2
  341. package/dist/views/system/menu/components/MenuFormModal2.vue.js +127 -118
  342. package/dist/views/system/menu/components/MenuFormModal2.vue.js.map +1 -1
  343. package/dist/views/system/menu/index.vue.js +1 -1
  344. package/dist/views/system/menu/index2.vue.js +216 -183
  345. package/dist/views/system/menu/index2.vue.js.map +1 -1
  346. package/dist/views/system/module/index.vue.js +1 -1
  347. package/dist/views/system/module/index2.vue.js +177 -144
  348. package/dist/views/system/module/index2.vue.js.map +1 -1
  349. package/dist/views/system/monitor/index.vue.js +2 -2
  350. package/dist/views/system/monitor/index2.vue.js +134 -149
  351. package/dist/views/system/monitor/index2.vue.js.map +1 -1
  352. package/dist/views/system/notice/index.vue.js +1 -1
  353. package/dist/views/system/notice/index2.vue.js +209 -181
  354. package/dist/views/system/notice/index2.vue.js.map +1 -1
  355. package/dist/views/system/org/index.vue.js +1 -1
  356. package/dist/views/system/org/index2.vue.js +278 -248
  357. package/dist/views/system/org/index2.vue.js.map +1 -1
  358. package/dist/views/system/position/index.vue.js +5 -2
  359. package/dist/views/system/position/index.vue.js.map +1 -1
  360. package/dist/views/system/position/index2.vue.js +128 -92
  361. package/dist/views/system/position/index2.vue.js.map +1 -1
  362. package/dist/views/system/recycle/index.vue.js +2 -2
  363. package/dist/views/system/recycle/index2.vue.js +90 -67
  364. package/dist/views/system/recycle/index2.vue.js.map +1 -1
  365. package/dist/views/system/role/components/GrantMenuSheet.vue.d.ts +20 -0
  366. package/dist/views/system/role/components/GrantMenuSheet.vue.js +8 -0
  367. package/dist/views/system/role/components/GrantMenuSheet.vue.js.map +1 -0
  368. package/dist/views/system/role/components/GrantMenuSheet2.vue.js +117 -0
  369. package/dist/views/system/role/components/GrantMenuSheet2.vue.js.map +1 -0
  370. package/dist/views/system/role/components/GrantMenuTable.vue.d.ts +6 -4
  371. package/dist/views/system/role/components/GrantMenuTable.vue.js +2 -2
  372. package/dist/views/system/role/components/GrantMenuTable2.vue.js +279 -177
  373. package/dist/views/system/role/components/GrantMenuTable2.vue.js.map +1 -1
  374. package/dist/views/system/role/components/MatchText.vue.d.ts +7 -0
  375. package/dist/views/system/role/components/MatchText.vue.js +8 -0
  376. package/dist/views/system/role/components/MatchText.vue.js.map +1 -0
  377. package/dist/views/system/role/components/MatchText2.vue.js +29 -0
  378. package/dist/views/system/role/components/MatchText2.vue.js.map +1 -0
  379. package/dist/views/system/role/components/grantMenuGroups.d.ts +36 -0
  380. package/dist/views/system/role/components/grantMenuGroups.js +110 -48
  381. package/dist/views/system/role/components/grantMenuGroups.js.map +1 -1
  382. package/dist/views/system/role/index.vue.js +5 -2
  383. package/dist/views/system/role/index.vue.js.map +1 -1
  384. package/dist/views/system/role/index2.vue.js +181 -165
  385. package/dist/views/system/role/index2.vue.js.map +1 -1
  386. package/dist/views/system/session/index2.vue.js +75 -49
  387. package/dist/views/system/session/index2.vue.js.map +1 -1
  388. package/dist/views/system/user/components/ResetPasswordModal.vue.js +2 -2
  389. package/dist/views/system/user/components/ResetPasswordModal2.vue.js +2 -0
  390. package/dist/views/system/user/components/ResetPasswordModal2.vue.js.map +1 -1
  391. package/dist/views/system/user/components/UserFormModal.vue.js +2 -2
  392. package/dist/views/system/user/components/UserFormModal2.vue.js +77 -76
  393. package/dist/views/system/user/components/UserFormModal2.vue.js.map +1 -1
  394. package/dist/views/system/user/index.vue.js +2 -2
  395. package/dist/views/system/user/index2.vue.js +362 -275
  396. package/dist/views/system/user/index2.vue.js.map +1 -1
  397. package/package.json +3 -5
  398. package/dist/components/SelectTable/index.vue.d.ts +0 -76
  399. package/dist/components/SelectTable/index2.vue.js +0 -256
  400. package/dist/components/SelectTable/index2.vue.js.map +0 -1
  401. package/dist/composables/useTableRowSort.d.ts +0 -20
  402. package/dist/composables/useTableRowSort.js +0 -59
  403. package/dist/composables/useTableRowSort.js.map +0 -1
  404. package/dist/layouts/LayoutModeCards.vue.js +0 -8
  405. package/dist/layouts/LayoutModeCards.vue.js.map +0 -1
  406. package/dist/layouts/LayoutModeCards2.vue.js +0 -67
  407. package/dist/layouts/LayoutModeCards2.vue.js.map +0 -1
  408. package/dist/layouts/SettingRow.vue.d.ts +0 -16
  409. package/dist/layouts/SettingRow.vue.js +0 -8
  410. package/dist/layouts/SettingRow.vue.js.map +0 -1
  411. package/dist/layouts/SettingRow2.vue.js +0 -23
  412. package/dist/layouts/SettingRow2.vue.js.map +0 -1
  413. package/dist/views/login/skins/AuroraGlass.vue.js +0 -8
  414. package/dist/views/login/skins/AuroraGlass.vue.js.map +0 -1
  415. package/dist/views/login/skins/AuroraGlass2.vue.js +0 -80
  416. package/dist/views/login/skins/AuroraGlass2.vue.js.map +0 -1
  417. package/dist/views/login/skins/SplitPanel.vue.d.ts +0 -3
  418. package/dist/views/login/skins/SplitPanel.vue.js +0 -8
  419. package/dist/views/login/skins/SplitPanel.vue.js.map +0 -1
  420. package/dist/views/login/skins/SplitPanel2.vue.js +0 -65
  421. package/dist/views/login/skins/SplitPanel2.vue.js.map +0 -1
  422. package/dist/views/login/skins/Spotlight.vue.d.ts +0 -3
  423. package/dist/views/login/skins/Spotlight.vue.js +0 -8
  424. package/dist/views/login/skins/Spotlight.vue.js.map +0 -1
  425. package/dist/views/login/skins/Spotlight2.vue.js +0 -36
  426. package/dist/views/login/skins/Spotlight2.vue.js.map +0 -1
  427. package/dist/views/login/skins.d.ts +0 -8
  428. package/dist/views/login/skins.js +0 -13
  429. package/dist/views/login/skins.js.map +0 -1
  430. /package/dist/components/{SelectTable → TableTotal}/index.vue.js.map +0 -0
  431. /package/dist/layouts/{LayoutModeCards.vue.d.ts → AccentPicker.vue.d.ts} +0 -0
  432. /package/dist/views/{login/skins/AuroraGlass.vue.d.ts → system/config/components/WatermarkSection.vue.d.ts} +0 -0
@@ -1,23 +1,27 @@
1
- import { defineComponent as d, ref as y, resolveDirective as h, openBlock as i, createBlock as s, unref as t, withCtx as a, withDirectives as v, createTextVNode as b, toDisplayString as k, createVNode as T } from "vue";
2
- import { useMessage as _, NButton as x } from "naive-ui";
3
- import { useI18n as C } from "vue-i18n";
4
- import { SmartTable as w } from "smart-naive-table";
5
- import E from "../../../../components/AppIcon.vue.js";
6
- import { useConfirm as D } from "../../../../composables/useConfirm.js";
7
- import { logApi as c } from "../../../../api/index.js";
8
- import { translateError as L } from "../../../../utils/error.js";
9
- import { uaSummary as N } from "../../../../utils/ua.js";
10
- const $ = /* @__PURE__ */ d({
1
+ import { defineComponent as _, ref as b, h as c, resolveDirective as v, openBlock as m, createBlock as u, unref as t, withCtx as a, withDirectives as k, createTextVNode as w, toDisplayString as C, createVNode as p } from "vue";
2
+ import { useMessage as E, NButton as x } from "naive-ui";
3
+ import { useI18n as z } from "vue-i18n";
4
+ import { SmartTable as A } from "smart-naive-table";
5
+ import L from "../../../../components/AppIcon.vue.js";
6
+ import { useConfirm as S } from "../../../../composables/useConfirm.js";
7
+ import { logApi as g } from "../../../../api/index.js";
8
+ import { translateError as B } from "../../../../utils/error.js";
9
+ import { fmtDateTime as D } from "../../../../utils/format.js";
10
+ import { createFlatFilterSerializer as N, SEARCH_ACTIONS as l, deriveHeaderFilters as R } from "../../../../utils/tableFilter.js";
11
+ import { TABLE_MIN_ROW_HEIGHT as H, TABLE_TOOLBAR as I } from "../../../../utils/tableToolbar.js";
12
+ import O from "../../../../components/TableTotal/index.vue.js";
13
+ import { uaSummary as F } from "../../../../utils/ua.js";
14
+ const Z = /* @__PURE__ */ _({
11
15
  __name: "index",
12
- setup(B) {
13
- const { t: e } = C(), n = _(), { confirm: u } = D(), l = y(), g = [
16
+ setup(M) {
17
+ const { t: e } = z(), f = E(), { confirm: d } = S(), n = b(), h = N({ ranges: ["createTime"] }), s = [
14
18
  { type: "index", title: () => e("common.rowNo"), width: 64, align: "center" },
15
- { key: "account", title: () => e("log.account"), search: !0 },
19
+ { key: "account", title: () => e("log.account"), search: { actions: l.fuzzy } },
16
20
  {
17
21
  key: "success",
18
22
  title: () => e("log.result"),
19
23
  tag: !0,
20
- search: !0,
24
+ search: { actions: l.exact },
21
25
  options: [
22
26
  { label: () => e("log.success"), value: !0, tagType: "success" },
23
27
  { label: () => e("log.failed"), value: !1, tagType: "error" }
@@ -29,7 +33,7 @@ const $ = /* @__PURE__ */ d({
29
33
  {
30
34
  key: "resultCode",
31
35
  title: () => e("log.resultCode"),
32
- width: 150,
36
+ width: 175,
33
37
  tag: !0,
34
38
  options: [
35
39
  { label: () => e("log.success"), value: 0, tagType: "success" },
@@ -41,73 +45,90 @@ const $ = /* @__PURE__ */ d({
41
45
  ]
42
46
  },
43
47
  // 姓名:后端按 userId 回填;登录失败/账号不存在的行无姓名 → 回落账号
44
- { key: "name", title: () => e("log.name"), render: (r) => r.name || r.account || "—" },
45
- { key: "ip", title: () => e("log.ip"), render: (r) => r.ip || "—" },
48
+ {
49
+ key: "name",
50
+ title: () => e("log.name"),
51
+ ellipsis: { tooltip: !0 },
52
+ render: (r) => r.name || r.account || "—"
53
+ },
54
+ // IP 与时间用等宽 / 弱化色(.mono .muted .num 是全局工具类)
55
+ {
56
+ key: "ip",
57
+ title: () => e("log.ip"),
58
+ render: (r) => c("span", { class: "mono muted" }, r.ip || "—")
59
+ },
46
60
  // 设备:UA 解析成「浏览器 · 系统」(全未识别回落原始串);过长截断 + tooltip
47
61
  {
48
62
  key: "device",
49
63
  title: () => e("log.device"),
50
64
  ellipsis: { tooltip: !0 },
51
- render: (r) => N(r.userAgent)
65
+ render: (r) => F(r.userAgent)
52
66
  },
53
67
  // 时间范围:"上周谁登录失败了"是登录日志最主要的用法
54
68
  {
55
69
  key: "createTime",
56
70
  title: () => e("common.createTime"),
57
- format: "datetime",
58
- search: { type: "daterange" }
71
+ render: (r) => c("span", { class: "num muted", style: "white-space: nowrap" }, D(r.createTime)),
72
+ search: { type: "daterange", actions: l.dayRange }
59
73
  }
60
74
  ];
61
- function p() {
62
- u({
75
+ R(s);
76
+ function y() {
77
+ d({
63
78
  type: "error",
64
79
  content: e("log.clearLoginConfirm"),
65
- action: () => c.loginClear(),
80
+ action: () => g.loginClear(),
66
81
  successMsg: e("log.cleared")
67
82
  }).then((r) => {
68
83
  var o;
69
- r && ((o = l.value) == null || o.refresh());
84
+ r && ((o = n.value) == null || o.refresh());
70
85
  });
71
86
  }
72
87
  return (r, o) => {
73
- const m = h("auth");
74
- return i(), s(t(w), {
75
- "default-page-size": 100,
88
+ const T = v("auth");
89
+ return m(), u(t(A), {
76
90
  ref_key: "tableRef",
77
- ref: l,
78
- columns: g,
79
- fetcher: t(c).loginPage,
80
- "flex-height": "",
81
- "virtual-scroll": "",
91
+ ref: n,
92
+ columns: s,
93
+ fetcher: t(g).loginPage,
94
+ search: { container: "table" },
95
+ "filter-serializer": t(h),
96
+ toolbar: t(I),
97
+ "fill-height": "",
98
+ "min-row-height": t(H),
99
+ "card-on-narrow": "",
82
100
  "storage-key": "sys-log-login",
83
- onError: o[0] || (o[0] = (f) => t(n).error(t(L)(f)))
101
+ onError: o[0] || (o[0] = (i) => t(f).error(t(B)(i)))
84
102
  }, {
85
- toolbar: a(() => [
86
- v((i(), s(t(x), {
103
+ "pagination-prefix": a(({ itemCount: i }) => [
104
+ p(O, { count: i }, null, 8, ["count"])
105
+ ]),
106
+ "toolbar-right": a(() => [
107
+ k((m(), u(t(x), {
87
108
  type: "error",
88
109
  secondary: "",
89
- onClick: p
110
+ onClick: y
90
111
  }, {
91
112
  icon: a(() => [
92
- T(E, {
113
+ p(L, {
93
114
  icon: "ph:trash",
94
115
  size: 16
95
116
  })
96
117
  ]),
97
118
  default: a(() => [
98
- b(" " + k(t(e)("log.clear")), 1)
119
+ w(" " + C(t(e)("log.clear")), 1)
99
120
  ]),
100
121
  _: 1
101
122
  })), [
102
- [m, "DELETE:/api/v1/sys/log/login"]
123
+ [T, "DELETE:/api/v1/sys/log/login"]
103
124
  ])
104
125
  ]),
105
126
  _: 1
106
- }, 8, ["fetcher"]);
127
+ }, 8, ["fetcher", "filter-serializer", "toolbar", "min-row-height"]);
107
128
  };
108
129
  }
109
130
  });
110
131
  export {
111
- $ as default
132
+ Z as default
112
133
  };
113
134
  //# sourceMappingURL=index2.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index2.vue.js","sources":["../../../../../src/views/system/log/login/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 登录日志 = 只读 SmartTable:列驱动搜索(账号/结果)+ 分页;success 列显式红/绿 typeMap 保证「失败=红」。\n// 工具栏一枚「清空」(硬删,不可恢复)走 useConfirm 二次确认(对齐 simpleadmin 日志页)。\nimport { ref } from 'vue'\nimport { NButton, useMessage } from 'naive-ui'\nimport { useI18n } from 'vue-i18n'\nimport { SmartTable, type SmartTableColumn, type SmartTableInst } from 'smart-naive-table'\nimport AppIcon from '#/components/AppIcon.vue'\nimport { useConfirm } from '#/composables/useConfirm'\nimport { logApi } from '#/api'\nimport { translateError } from '#/utils/error'\nimport { uaSummary } from '#/utils/ua'\nimport type { SysLoginLog } from '#/types/api'\n\nconst { t } = useI18n()\nconst message = useMessage()\nconst { confirm } = useConfirm()\nconst tableRef = ref<SmartTableInst<SysLoginLog>>()\n\nconst columns: SmartTableColumn<SysLoginLog>[] = [\n { type: 'index', title: () => t('common.rowNo'), width: 64, align: 'center' },\n { key: 'account', title: () => t('log.account'), search: true },\n {\n key: 'success',\n title: () => t('log.result'),\n tag: true,\n search: true,\n options: [\n { label: () => t('log.success'), value: true, tagType: 'success' },\n { label: () => t('log.failed'), value: false, tagType: 'error' },\n ],\n },\n // 失败原因:裸渲染的 40004 对排查毫无用处——密码错/被锁/被停用三种情况的处置动作完全不同(改密/解锁/启用)。\n // 复用同列的 tag+options 机制翻成人话,文案直接指向已有的 error.auth.* 键(与登录页弹的提示同源)。\n // AuthService 实际只会落 0 与 40001–40005 这几个码;未命中的码由 SmartTable 回落成原始数字。\n {\n key: 'resultCode',\n title: () => t('log.resultCode'),\n width: 150,\n tag: true,\n options: [\n { label: () => t('log.success'), value: 0, tagType: 'success' },\n { label: () => t('error.auth.passwordWrong'), value: 40001, tagType: 'error' },\n { label: () => t('error.auth.captchaExpired'), value: 40002, tagType: 'error' },\n { label: () => t('error.auth.captchaWrong'), value: 40003, tagType: 'error' },\n { label: () => t('error.auth.accountLocked'), value: 40004, tagType: 'error' },\n { label: () => t('error.auth.accountDisabled'), value: 40005, tagType: 'error' },\n ],\n },\n // 姓名:后端按 userId 回填;登录失败/账号不存在的行无姓名 → 回落账号\n { key: 'name', title: () => t('log.name'), render: r => r.name || r.account || '—' },\n { key: 'ip', title: () => t('log.ip'), render: r => r.ip || '—' },\n // 设备:UA 解析成「浏览器 · 系统」(全未识别回落原始串);过长截断 + tooltip\n {\n key: 'device',\n title: () => t('log.device'),\n ellipsis: { tooltip: true },\n render: r => uaSummary(r.userAgent),\n },\n // 时间范围:\"上周谁登录失败了\"是登录日志最主要的用法\n {\n key: 'createTime',\n title: () => t('common.createTime'),\n format: 'datetime',\n search: { type: 'daterange' },\n },\n]\n\nfunction clearLogs() {\n confirm({\n type: 'error',\n content: t('log.clearLoginConfirm'),\n action: () => logApi.loginClear(),\n successMsg: t('log.cleared'),\n }).then(ok => {\n if (ok) tableRef.value?.refresh()\n })\n}\n</script>\n\n<template>\n <SmartTable\n :default-page-size=\"100\"\n ref=\"tableRef\"\n :columns=\"columns\"\n :fetcher=\"logApi.loginPage\"\n flex-height\n virtual-scroll\n storage-key=\"sys-log-login\"\n @error=\"e => message.error(translateError(e))\"\n >\n <template #toolbar>\n <n-button v-auth=\"'DELETE:/api/v1/sys/log/login'\" type=\"error\" secondary @click=\"clearLogs\">\n <template #icon><AppIcon icon=\"ph:trash\" :size=\"16\" /></template>\n {{ t('log.clear') }}\n </n-button>\n </template>\n </SmartTable>\n</template>\n"],"names":["t","useI18n","message","useMessage","confirm","useConfirm","tableRef","ref","columns","uaSummary","clearLogs","logApi","ok","_a","_createBlock","_unref","SmartTable","_cache","e","translateError","NButton","_createVNode","AppIcon","_createTextVNode"],"mappings":"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"}
1
+ {"version":3,"file":"index2.vue.js","sources":["../../../../../src/views/system/log/login/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 登录日志 = 只读 SmartTable:列驱动搜索(账号/结果)+ 分页;success 列显式红/绿 typeMap 保证「失败=红」。\n// 工具栏一枚「清空」(硬删,不可恢复)走 useConfirm 二次确认(对齐 simpleadmin 日志页)。\nimport { h, ref } from 'vue'\nimport { NButton, useMessage } from 'naive-ui'\nimport { useI18n } from 'vue-i18n'\nimport { SmartTable, type SmartTableColumn, type SmartTableInst } from 'smart-naive-table'\nimport AppIcon from '#/components/AppIcon.vue'\nimport { useConfirm } from '#/composables/useConfirm'\nimport { logApi } from '#/api'\nimport { translateError } from '#/utils/error'\nimport { fmtDateTime } from '#/utils/format'\nimport {\n SEARCH_ACTIONS,\n createFlatFilterSerializer,\n deriveHeaderFilters,\n} from '#/utils/tableFilter'\nimport { TABLE_MIN_ROW_HEIGHT, TABLE_TOOLBAR } from '#/utils/tableToolbar'\nimport TableTotal from '#/components/TableTotal/index.vue'\nimport { uaSummary } from '#/utils/ua'\nimport type { SysLoginLog } from '#/types/api'\n\nconst { t } = useI18n()\nconst message = useMessage()\nconst { confirm } = useConfirm()\nconst tableRef = ref<SmartTableInst<SysLoginLog>>()\n\n// 日期区间:条件构造器里是同一字段的两行(大于等于 + 小于等于),序列化器合并成 [起, 止],\n// api 层 splitRange 再拆成 StartTime/EndTime 并给结束日补 23:59:59。\nconst filterSerializer = createFlatFilterSerializer({ ranges: ['createTime'] })\n\nconst columns: SmartTableColumn<SysLoginLog>[] = [\n { type: 'index', title: () => t('common.rowNo'), width: 64, align: 'center' },\n { key: 'account', title: () => t('log.account'), search: { actions: SEARCH_ACTIONS.fuzzy } },\n {\n key: 'success',\n title: () => t('log.result'),\n tag: true,\n search: { actions: SEARCH_ACTIONS.exact },\n options: [\n { label: () => t('log.success'), value: true, tagType: 'success' },\n { label: () => t('log.failed'), value: false, tagType: 'error' },\n ],\n },\n // 失败原因:裸渲染的 40004 对排查毫无用处——密码错/被锁/被停用三种情况的处置动作完全不同(改密/解锁/启用)。\n // 复用同列的 tag+options 机制翻成人话,文案直接指向已有的 error.auth.* 键(与登录页弹的提示同源)。\n // AuthService 实际只会落 0 与 40001–40005 这几个码;未命中的码由 SmartTable 回落成原始数字。\n {\n key: 'resultCode',\n title: () => t('log.resultCode'),\n width: 175,\n tag: true,\n options: [\n { label: () => t('log.success'), value: 0, tagType: 'success' },\n { label: () => t('error.auth.passwordWrong'), value: 40001, tagType: 'error' },\n { label: () => t('error.auth.captchaExpired'), value: 40002, tagType: 'error' },\n { label: () => t('error.auth.captchaWrong'), value: 40003, tagType: 'error' },\n { label: () => t('error.auth.accountLocked'), value: 40004, tagType: 'error' },\n { label: () => t('error.auth.accountDisabled'), value: 40005, tagType: 'error' },\n ],\n },\n // 姓名:后端按 userId 回填;登录失败/账号不存在的行无姓名 → 回落账号\n {\n key: 'name',\n title: () => t('log.name'),\n ellipsis: { tooltip: true },\n render: r => r.name || r.account || '—',\n },\n // IP 与时间用等宽 / 弱化色(.mono .muted .num 是全局工具类)\n {\n key: 'ip',\n title: () => t('log.ip'),\n render: r => h('span', { class: 'mono muted' }, r.ip || '—'),\n },\n // 设备:UA 解析成「浏览器 · 系统」(全未识别回落原始串);过长截断 + tooltip\n {\n key: 'device',\n title: () => t('log.device'),\n ellipsis: { tooltip: true },\n render: r => uaSummary(r.userAgent),\n },\n // 时间范围:\"上周谁登录失败了\"是登录日志最主要的用法\n {\n key: 'createTime',\n title: () => t('common.createTime'),\n render: r =>\n h('span', { class: 'num muted', style: 'white-space: nowrap' }, fmtDateTime(r.createTime)),\n search: { type: 'daterange', actions: SEARCH_ACTIONS.dayRange },\n },\n]\nderiveHeaderFilters(columns)\n\nfunction clearLogs() {\n confirm({\n type: 'error',\n content: t('log.clearLoginConfirm'),\n action: () => logApi.loginClear(),\n successMsg: t('log.cleared'),\n }).then(ok => {\n if (ok) tableRef.value?.refresh()\n })\n}\n</script>\n\n<template>\n <SmartTable\n ref=\"tableRef\"\n :columns=\"columns\"\n :fetcher=\"logApi.loginPage\"\n :search=\"{ container: 'table' }\"\n :filter-serializer=\"filterSerializer\"\n :toolbar=\"TABLE_TOOLBAR\"\n fill-height\n :min-row-height=\"TABLE_MIN_ROW_HEIGHT\"\n card-on-narrow\n storage-key=\"sys-log-login\"\n @error=\"e => message.error(translateError(e))\"\n >\n <template #pagination-prefix=\"{ itemCount }\">\n <TableTotal :count=\"itemCount\" />\n </template>\n <template #toolbar-right>\n <n-button v-auth=\"'DELETE:/api/v1/sys/log/login'\" type=\"error\" secondary @click=\"clearLogs\">\n <template #icon><AppIcon icon=\"ph:trash\" :size=\"16\" /></template>\n {{ t('log.clear') }}\n </n-button>\n </template>\n </SmartTable>\n</template>\n"],"names":["t","useI18n","message","useMessage","confirm","useConfirm","tableRef","ref","filterSerializer","createFlatFilterSerializer","columns","SEARCH_ACTIONS","h","uaSummary","fmtDateTime","deriveHeaderFilters","clearLogs","logApi","ok","_a","_createBlock","_unref","SmartTable","TABLE_TOOLBAR","TABLE_MIN_ROW_HEIGHT","_cache","e","translateError","_withCtx","itemCount","_createVNode","TableTotal","NButton","AppIcon","_createTextVNode"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import o from "./index2.vue.js";
2
2
  /* empty css */
3
3
  import t from "../../../../_virtual/_plugin-vue_export-helper.js";
4
- const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-9e9a338d"]]);
4
+ const _ = /* @__PURE__ */ t(o, [["__scopeId", "data-v-8bb5b6c8"]]);
5
5
  export {
6
- m as default
6
+ _ as default
7
7
  };
8
8
  //# sourceMappingURL=index.vue.js.map