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 +1 @@
1
- {"version":3,"file":"index2.vue.js","sources":["../../../../src/views/system/cache/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 缓存管理 = 定向失效动作卡片。只清不看:缓存值含明文验证码/一次性令牌、键内嵌手机号/IP(后端故无键浏览/取值端点)。\n// 每张卡二次确认后执行,toast 显被清条数。正常授权变更后端已自动失效,此页面向\"直接改库\"等旁路场景做手动刷新。\nimport { ref } from 'vue'\nimport { NGrid, NGi, NCard, NButton, useMessage } from 'naive-ui'\nimport { useI18n } from 'vue-i18n'\nimport AppIcon from '#/components/AppIcon.vue'\nimport { useConfirm } from '#/composables/useConfirm'\nimport { cacheApi } from '#/api'\nimport { translateError } from '#/utils/error'\n\nconst { t } = useI18n()\nconst message = useMessage()\nconst { ask } = useConfirm()\n\ninterface CacheAction {\n key: 'auth' | 'dict' | 'config' | 'portal'\n icon: string\n perm: string\n run: () => Promise<number>\n}\n\nconst actions: CacheAction[] = [\n {\n key: 'auth',\n icon: 'ph:shield-check-duotone',\n perm: 'POST:/api/v1/sys/cache/flush-auth',\n run: cacheApi.flushAuth,\n },\n {\n key: 'dict',\n icon: 'ph:book-open-text-duotone',\n perm: 'POST:/api/v1/sys/cache/flush-dict',\n run: cacheApi.flushDict,\n },\n {\n key: 'config',\n icon: 'ph:sliders-horizontal-duotone',\n perm: 'POST:/api/v1/sys/cache/flush-config',\n run: cacheApi.flushConfig,\n },\n {\n key: 'portal',\n icon: 'ph:squares-four-duotone',\n perm: 'POST:/api/v1/sys/cache/rebuild-portal',\n run: cacheApi.rebuildPortal,\n },\n]\n\nconst busy = ref<string | null>(null)\n\nasync function trigger(a: CacheAction) {\n if (!(await ask({ type: 'warning', content: t(`cache.${a.key}Confirm`) }))) return\n busy.value = a.key\n try {\n const n = await a.run()\n // 门户是\"重建代际\"语义(返回新代际值,非清除条数),单独文案;其余显被清条数\n message.success(a.key === 'portal' ? t('cache.portalDone') : t('cache.flushed', { n }))\n } catch (e) {\n message.error(translateError(e))\n } finally {\n busy.value = null\n }\n}\n</script>\n\n<template>\n <div class=\"cache\">\n <n-grid cols=\"1 s:2 l:2\" responsive=\"screen\" :x-gap=\"12\" :y-gap=\"12\">\n <n-gi v-for=\"a in actions\" :key=\"a.key\" v-auth=\"a.perm\">\n <n-card size=\"small\" class=\"action-card\">\n <div class=\"head\">\n <AppIcon :icon=\"a.icon\" :size=\"22\" />\n <span class=\"title\">{{ t(`cache.${a.key}Title`) }}</span>\n </div>\n <p class=\"desc\">{{ t(`cache.${a.key}Desc`) }}</p>\n <n-button type=\"primary\" secondary :loading=\"busy === a.key\" @click=\"trigger(a)\">\n <template #icon><AppIcon icon=\"ph:broom\" :size=\"16\" /></template>\n {{ t('cache.execute') }}\n </n-button>\n </n-card>\n </n-gi>\n </n-grid>\n <p class=\"note\">{{ t('cache.note') }}</p>\n </div>\n</template>\n\n<style scoped>\n.cache {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.action-card {\n height: 100%;\n}\n.head {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 15px;\n font-weight: 600;\n}\n.desc {\n margin: 10px 0 14px;\n font-size: 13px;\n line-height: 1.6;\n color: var(--color-text-secondary, #999);\n min-height: 42px;\n}\n.note {\n margin: 4px 0 0;\n font-size: 12px;\n line-height: 1.6;\n color: var(--color-text-secondary, #999);\n}\n</style>\n"],"names":["useI18n","message","useMessage","ask","useConfirm","actions","cacheApi","busy","ref","trigger","a","n","e","translateError","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","NGrid","_Fragment","_renderList","_createBlock","NGi","NCard","_createElementVNode","_hoisted_2","AppIcon","_hoisted_3","_toDisplayString","_hoisted_4","NButton","$event","_createTextVNode","_directive_auth","_hoisted_5"],"mappings":";;;;;;;;;;AAWA,UAAM,EAAE,EAAA,IAAMA,EAAA,GACRC,IAAUC,EAAA,GACV,EAAE,KAAAC,EAAA,IAAQC,EAAA,GASVC,IAAyB;AAAA,MAC7B;AAAA,QACE,KAAK;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,KAAKC,EAAS;AAAA,MAAA;AAAA,MAEhB;AAAA,QACE,KAAK;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,KAAKA,EAAS;AAAA,MAAA;AAAA,MAEhB;AAAA,QACE,KAAK;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,KAAKA,EAAS;AAAA,MAAA;AAAA,MAEhB;AAAA,QACE,KAAK;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,KAAKA,EAAS;AAAA,MAAA;AAAA,IAChB,GAGIC,IAAOC,EAAmB,IAAI;AAEpC,mBAAeC,EAAQC,GAAgB;AACrC,UAAM,MAAMP,EAAI,EAAE,MAAM,WAAW,SAAS,EAAE,SAASO,EAAE,GAAG,SAAS,EAAA,CAAG,GACxE;AAAA,QAAAH,EAAK,QAAQG,EAAE;AACf,YAAI;AACF,gBAAMC,IAAI,MAAMD,EAAE,IAAA;AAElB,UAAAT,EAAQ,QAAQS,EAAE,QAAQ,WAAW,EAAE,kBAAkB,IAAI,EAAE,iBAAiB,EAAE,GAAAC,EAAA,CAAG,CAAC;AAAA,QACxF,SAASC,GAAG;AACV,UAAAX,EAAQ,MAAMY,EAAeD,CAAC,CAAC;AAAA,QACjC,UAAA;AACE,UAAAL,EAAK,QAAQ;AAAA,QACf;AAAA;AAAA,IACF;;;AAIE,aAAAO,EAAA,GAAAC,EAiBM,OAjBNC,GAiBM;AAAA,QAhBJC,EAcSC,EAAAC,CAAA,GAAA;AAAA,UAdD,MAAK;AAAA,UAAY,YAAW;AAAA,UAAU,SAAO;AAAA,UAAK,SAAO;AAAA,QAAA;qBACzD,MAAoB;AAAA,kBAA1BJ,EAYOK,GAAA,MAAAC,EAZWhB,GAAO,CAAZK,cAAbY,EAYOJ,EAAAK,CAAA,GAAA;AAAA,cAZqB,KAAKb,EAAE;AAAA,YAAA;yBACjC,MAUS;AAAA,gBAVTO,EAUSC,EAAAM,CAAA,GAAA;AAAA,kBAVD,MAAK;AAAA,kBAAQ,OAAM;AAAA,gBAAA;6BACzB,MAGM;AAAA,oBAHNC,EAGM,OAHNC,GAGM;AAAA,sBAFJT,EAAqCU,GAAA;AAAA,wBAA3B,MAAMjB,EAAE;AAAA,wBAAO,MAAM;AAAA,sBAAA;sBAC/Be,EAAyD,QAAzDG,GAAyDC,EAAlCX,KAAC,SAAUR,EAAE,GAAG,OAAA,CAAA,GAAA,CAAA;AAAA,oBAAA;oBAEzCe,EAAiD,KAAjDK,GAAiDD,EAA9BX,KAAC,SAAUR,EAAE,GAAG,MAAA,CAAA,GAAA,CAAA;AAAA,oBACnCO,EAGWC,EAAAa,CAAA,GAAA;AAAA,sBAHD,MAAK;AAAA,sBAAU,WAAA;AAAA,sBAAW,SAASxB,EAAA,UAASG,EAAE;AAAA,sBAAM,SAAK,CAAAsB,MAAEvB,EAAQC,CAAC;AAAA,oBAAA;sBACjE,QAAK,MAAsC;AAAA,wBAAtCO,EAAsCU,GAAA;AAAA,0BAA7B,MAAK;AAAA,0BAAY,MAAM;AAAA,wBAAA;;iCAAiB,MACjE;AAAA,wBADiEM,EAAA,QAC9Df,EAAA,CAAA,EAAC,eAAA,CAAA,GAAA,CAAA;AAAA,sBAAA;;;;;;;;;cATsC,CAAAgB,GAAAxB,EAAE,IAAI;AAAA,YAAA;;;;QAcxDe,EAAyC,KAAzCU,GAAyCN,EAAtBX,EAAA,CAAA,EAAC,YAAA,CAAA,GAAA,CAAA;AAAA,MAAA;;;;"}
1
+ {"version":3,"file":"index2.vue.js","sources":["../../../../src/views/system/cache/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 缓存管理 = 定向失效动作卡片。只清不看:缓存值含明文验证码/一次性令牌、键内嵌手机号/IP(后端故无键浏览/取值端点)。\n// 每张卡二次确认后执行,toast 显被清条数。正常授权变更后端已自动失效,此页面向\"直接改库\"等旁路场景做手动刷新。\nimport { computed, ref } from 'vue'\nimport { NCard, NButton, useMessage } from 'naive-ui'\nimport { useI18n } from 'vue-i18n'\nimport AppIcon from '#/components/AppIcon.vue'\nimport { useShellBreakpoint } from '#/composables/useShellBreakpoint'\nimport { useConfirm } from '#/composables/useConfirm'\nimport { cacheApi } from '#/api'\nimport { translateError } from '#/utils/error'\n\nconst { t } = useI18n()\nconst message = useMessage()\nconst { ask } = useConfirm()\nconst { bp } = useShellBreakpoint()\nconst narrow = computed(() => bp.value === 'narrow')\n\ninterface CacheAction {\n key: 'auth' | 'dict' | 'config' | 'portal'\n icon: string\n perm: string\n run: () => Promise<number>\n}\n\nconst actions: CacheAction[] = [\n {\n key: 'auth',\n icon: 'ph:shield-check',\n perm: 'POST:/api/v1/sys/cache/flush-auth',\n run: cacheApi.flushAuth,\n },\n {\n key: 'dict',\n icon: 'ph:book-open-text',\n perm: 'POST:/api/v1/sys/cache/flush-dict',\n run: cacheApi.flushDict,\n },\n {\n key: 'config',\n icon: 'ph:sliders-horizontal',\n perm: 'POST:/api/v1/sys/cache/flush-config',\n run: cacheApi.flushConfig,\n },\n {\n key: 'portal',\n icon: 'ph:squares-four',\n perm: 'POST:/api/v1/sys/cache/rebuild-portal',\n run: cacheApi.rebuildPortal,\n },\n]\n\nconst busy = ref<string | null>(null)\n\nasync function trigger(a: CacheAction) {\n if (!(await ask({ type: 'warning', content: t(`cache.${a.key}Confirm`) }))) return\n busy.value = a.key\n try {\n const n = await a.run()\n // 门户是\"重建代际\"语义(返回新代际值,非清除条数),单独文案;其余显被清条数\n message.success(a.key === 'portal' ? t('cache.portalDone') : t('cache.flushed', { n }))\n } catch (e) {\n message.error(translateError(e))\n } finally {\n busy.value = null\n }\n}\n</script>\n\n<template>\n <div class=\"cache\">\n <!-- 两列;内容区窄档(< 600)一列 -->\n <div class=\"cards\" :class=\"{ 'cards--narrow': narrow }\">\n <n-card\n v-for=\"a in actions\"\n :key=\"a.key\"\n v-auth=\"a.perm\"\n class=\"a-card action-card\"\n content-style=\"padding: 16px 18px\"\n >\n <div class=\"head\">\n <span class=\"sym\"><AppIcon :icon=\"a.icon\" :size=\"16\" /></span>\n <b class=\"title\">{{ t(`cache.${a.key}Title`) }}</b>\n </div>\n <p class=\"desc\">{{ t(`cache.${a.key}Desc`) }}</p>\n <div class=\"act\">\n <n-button\n type=\"primary\"\n secondary\n :size=\"narrow ? 'large' : 'medium'\"\n :loading=\"busy === a.key\"\n @click=\"trigger(a)\"\n >\n <template #icon><AppIcon icon=\"ph:broom\" :size=\"16\" /></template>\n {{ t('cache.execute') }}\n </n-button>\n </div>\n </n-card>\n </div>\n <p class=\"note\">{{ t('cache.note') }}</p>\n </div>\n</template>\n\n<style scoped>\n.cache {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n/* 卡片等高,「执行」按钮用 margin-top:auto 沉到卡片底部 */\n.cards {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 12px;\n}\n.cards--narrow {\n grid-template-columns: minmax(0, 1fr);\n}\n.action-card {\n height: 100%;\n}\n.action-card :deep(.n-card__content) {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n.head {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n/* 图标底块:中性玻璃 */\n.sym {\n display: grid;\n place-items: center;\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n border-radius: var(--radius-sm);\n color: var(--text-1);\n background: var(--glass-strong);\n box-shadow:\n inset 0 0 0 1px var(--hairline),\n inset 0 1px 0 var(--edge-light);\n}\n.title {\n font-size: 15px;\n}\n.desc {\n margin: 10px 0 0;\n min-height: 44px;\n font-size: 14px;\n line-height: 1.6;\n color: var(--text-2);\n}\n.act {\n margin-top: auto;\n padding-top: 14px;\n}\n.note {\n margin: 0;\n padding: 0 4px;\n font-size: 13px;\n line-height: 1.7;\n color: var(--text-3);\n}\n</style>\n"],"names":["t","useI18n","message","useMessage","ask","useConfirm","bp","useShellBreakpoint","narrow","computed","actions","cacheApi","busy","ref","trigger","a","n","e","translateError","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_normalizeClass","_Fragment","_renderList","_createBlock","_unref","NCard","_hoisted_2","_hoisted_3","_createVNode","AppIcon","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","NButton","$event","_createTextVNode","_directive_auth","_hoisted_7"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import o from "./AdminMock2.vue.js";
2
2
  /* empty css */
3
3
  import t from "../../../../_virtual/_plugin-vue_export-helper.js";
4
- const f = /* @__PURE__ */ t(o, [["__scopeId", "data-v-7ad8e65f"]]);
4
+ const d = /* @__PURE__ */ t(o, [["__scopeId", "data-v-2dd715c1"]]);
5
5
  export {
6
- f as default
6
+ d as default
7
7
  };
8
8
  //# sourceMappingURL=AdminMock.vue.js.map
@@ -1,69 +1,86 @@
1
- import { defineComponent as f, computed as r, openBlock as e, createElementBlock as i, createElementVNode as s, withDirectives as u, createVNode as h, toDisplayString as c, unref as m, Fragment as g, renderList as k, normalizeStyle as $ } from "vue";
2
- import y from "../../../../components/SmartLogo.vue.js";
3
- import { LOGO_KEY as b } from "../groups.js";
4
- import { useConfigDraft as w } from "../draft.js";
5
- import { vFlash as v } from "../flash.js";
6
- const S = { class: "mock" }, z = { class: "chrome" }, D = { class: "btab" }, E = { class: "app" }, L = { class: "side" }, x = {
1
+ import { defineComponent as $, computed as n, openBlock as o, createElementBlock as i, createBlock as b, createCommentVNode as S, createElementVNode as s, withDirectives as p, createVNode as g, toDisplayString as m, unref as v, Fragment as z, renderList as I, normalizeStyle as N } from "vue";
2
+ import k from "../../../../components/SmartLogo.vue.js";
3
+ import V from "../../../../components/AppWatermark.vue.js";
4
+ import { useUserStore as x } from "../../../../stores/user.js";
5
+ import { watermarkFromValues as B } from "../../../../lib/watermark.js";
6
+ import { LOGO_KEY as C } from "../groups.js";
7
+ import { useConfigDraft as D } from "../draft.js";
8
+ import { vFlash as _ } from "../flash.js";
9
+ const E = { class: "mock" }, F = { class: "chrome" }, L = { class: "btab" }, U = { class: "app" }, A = { class: "side" }, O = {
7
10
  class: "brand",
8
11
  "data-testid": "preview-brand"
9
- }, A = { class: "main" }, B = { class: "foot" }, C = { key: 0 }, F = { key: 1 }, M = /* @__PURE__ */ f({
12
+ }, T = { class: "main" }, G = { class: "foot" }, K = { key: 0 }, M = { key: 1 }, X = /* @__PURE__ */ $({
10
13
  __name: "AdminMock",
11
- setup(N) {
12
- const { values: a } = w(), l = r(() => {
13
- var t;
14
- return ((t = a["sys.site.title"]) == null ? void 0 : t.trim()) || "SmartAdmin";
15
- }), d = r(() => {
16
- var t;
17
- return ((t = a["sys.site.copyright"]) == null ? void 0 : t.trim()) || l.value;
18
- }), p = r(() => {
19
- var t;
20
- return !!((t = a["sys.site.copyrightUrl"]) != null && t.trim());
21
- }), n = r(() => a[b] ?? "");
22
- return (t, o) => (e(), i("div", S, [
23
- s("div", z, [
24
- o[0] || (o[0] = s("span", { class: "lights" }, [
14
+ setup(Y) {
15
+ const { values: r } = D(), a = n(() => {
16
+ var e;
17
+ return ((e = r["sys.site.title"]) == null ? void 0 : e.trim()) || "SmartAdmin";
18
+ }), d = n(() => {
19
+ var e;
20
+ return ((e = r["sys.site.copyright"]) == null ? void 0 : e.trim()) || a.value;
21
+ }), f = n(() => {
22
+ var e;
23
+ return !!((e = r["sys.site.copyrightUrl"]) != null && e.trim());
24
+ }), c = n(() => r[C] ?? ""), u = x(), h = n(() => B(r)), w = n(() => {
25
+ var e, t, l, y;
26
+ return {
27
+ name: (e = u.userInfo) == null ? void 0 : e.name,
28
+ account: (t = u.userInfo) == null ? void 0 : t.account,
29
+ org: (l = u.userInfo) == null ? void 0 : l.orgName,
30
+ phoneTail: (y = u.userInfo) == null ? void 0 : y.phoneTail
31
+ };
32
+ });
33
+ return (e, t) => (o(), i("div", E, [
34
+ h.value.enabled ? (o(), b(V, {
35
+ key: 0,
36
+ settings: h.value,
37
+ who: w.value,
38
+ "z-index": 5
39
+ }, null, 8, ["settings", "who"])) : S("", !0),
40
+ s("div", F, [
41
+ t[0] || (t[0] = s("span", { class: "lights" }, [
25
42
  s("i"),
26
43
  s("i"),
27
44
  s("i")
28
45
  ], -1)),
29
- u((e(), i("span", D, [
30
- h(y, {
46
+ p((o(), i("span", L, [
47
+ g(k, {
31
48
  size: 16,
32
- src: n.value
49
+ src: c.value
33
50
  }, null, 8, ["src"]),
34
- s("span", null, c(l.value), 1)
51
+ s("span", null, m(a.value), 1)
35
52
  ])), [
36
- [m(v), `${l.value}|${n.value}`]
53
+ [v(_), `${a.value}|${c.value}`]
37
54
  ])
38
55
  ]),
39
- s("div", E, [
40
- s("div", L, [
41
- u((e(), i("div", x, [
42
- h(y, {
56
+ s("div", U, [
57
+ s("div", A, [
58
+ p((o(), i("div", O, [
59
+ g(k, {
43
60
  size: 30,
44
- src: n.value
61
+ src: c.value
45
62
  }, null, 8, ["src"]),
46
- s("span", null, c(l.value), 1)
63
+ s("span", null, m(a.value), 1)
47
64
  ])), [
48
- [m(v), `${l.value}|${n.value}`]
65
+ [v(_), `${a.value}|${c.value}`]
49
66
  ]),
50
- (e(), i(g, null, k(5, (_) => s("i", {
51
- key: _,
52
- style: $({ width: _ % 2 ? "80%" : "62%" })
67
+ (o(), i(z, null, I(5, (l) => s("i", {
68
+ key: l,
69
+ style: N({ width: l % 2 ? "80%" : "62%" })
53
70
  }, null, 4)), 64))
54
71
  ]),
55
- s("div", A, [
56
- o[1] || (o[1] = s("div", { class: "top" }, null, -1)),
57
- o[2] || (o[2] = s("div", { class: "body" }, [
72
+ s("div", T, [
73
+ t[1] || (t[1] = s("div", { class: "top" }, null, -1)),
74
+ t[2] || (t[2] = s("div", { class: "body" }, [
58
75
  s("i", { class: "w" }),
59
76
  s("i"),
60
77
  s("i"),
61
78
  s("i")
62
79
  ], -1)),
63
- u((e(), i("div", B, [
64
- p.value ? (e(), i("a", C, "© " + c(d.value), 1)) : (e(), i("span", F, "© " + c(d.value), 1))
80
+ p((o(), i("div", G, [
81
+ f.value ? (o(), i("a", K, "© " + m(d.value), 1)) : (o(), i("span", M, "© " + m(d.value), 1))
65
82
  ])), [
66
- [m(v), `${d.value}|${p.value}`]
83
+ [v(_), `${d.value}|${f.value}`]
67
84
  ])
68
85
  ])
69
86
  ])
@@ -71,6 +88,6 @@ const S = { class: "mock" }, z = { class: "chrome" }, D = { class: "btab" }, E =
71
88
  }
72
89
  });
73
90
  export {
74
- M as default
91
+ X as default
75
92
  };
76
93
  //# sourceMappingURL=AdminMock2.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdminMock2.vue.js","sources":["../../../../../src/views/system/config/components/AdminMock.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 缩小版后台(880×540 设计尺寸,外面 ScaleToFit 等比缩放):浏览器标签页、侧栏品牌位、页脚版权,\n// 都读草稿,改一项对应位置即时变并闪一下。\nimport { computed } from 'vue'\nimport SmartLogo from '#/components/SmartLogo.vue'\nimport { LOGO_KEY } from '../groups'\nimport { useConfigDraft } from '../draft'\nimport { vFlash } from '../flash'\n\nconst { values } = useConfigDraft()\nconst title = computed(() => values['sys.site.title']?.trim() || 'SmartAdmin')\n// 版权留空时和登录页页脚一样回退到站点名\nconst copyright = computed(() => values['sys.site.copyright']?.trim() || title.value)\nconst hasUrl = computed(() => !!values['sys.site.copyrightUrl']?.trim())\nconst logo = computed(() => values[LOGO_KEY] ?? '')\n</script>\n\n<template>\n <div class=\"mock\">\n <div class=\"chrome\">\n <span class=\"lights\">\n <i />\n <i />\n <i />\n </span>\n <span v-flash=\"`${title}|${logo}`\" class=\"btab\">\n <SmartLogo :size=\"16\" :src=\"logo\" />\n <span>{{ title }}</span>\n </span>\n </div>\n <div class=\"app\">\n <div class=\"side\">\n <div v-flash=\"`${title}|${logo}`\" class=\"brand\" data-testid=\"preview-brand\">\n <SmartLogo :size=\"30\" :src=\"logo\" />\n <span>{{ title }}</span>\n </div>\n <i v-for=\"n in 5\" :key=\"n\" :style=\"{ width: n % 2 ? '80%' : '62%' }\" />\n </div>\n <div class=\"main\">\n <div class=\"top\" />\n <div class=\"body\">\n <i class=\"w\" />\n <i />\n <i />\n <i />\n </div>\n <div v-flash=\"`${copyright}|${hasUrl}`\" class=\"foot\">\n <a v-if=\"hasUrl\">© {{ copyright }}</a>\n <span v-else>© {{ copyright }}</span>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.mock {\n display: flex;\n flex-direction: column;\n width: 880px;\n height: 540px;\n overflow: hidden;\n border-radius: 10px;\n background: var(--color-bg-container);\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);\n font-size: 14px;\n}\n.chrome {\n display: flex;\n flex: none;\n align-items: flex-end;\n gap: 10px;\n height: 38px;\n padding: 0 12px;\n background: var(--color-fill);\n}\n.lights {\n display: flex;\n align-self: center;\n gap: 6px;\n}\n.lights i {\n width: 11px;\n height: 11px;\n border-radius: 50%;\n background: #ff5f57;\n}\n.lights i:nth-child(2) {\n background: #febc2e;\n}\n.lights i:nth-child(3) {\n background: #28c840;\n}\n.btab {\n display: flex;\n align-items: center;\n gap: 7px;\n max-width: 260px;\n height: 30px;\n padding: 0 14px;\n border-radius: 8px 8px 0 0;\n background: var(--color-bg-container);\n font-size: 12.5px;\n}\n.btab span {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.app {\n display: grid;\n flex: 1;\n grid-template-columns: 196px 1fr;\n min-height: 0;\n}\n.side {\n padding: 16px 12px;\n border-right: 1px solid var(--color-border);\n}\n.brand {\n display: flex;\n align-items: center;\n gap: 9px;\n padding: 4px 6px;\n margin-bottom: 14px;\n overflow: hidden;\n border-radius: 8px;\n font-size: 15px;\n font-weight: 600;\n white-space: nowrap;\n}\n.side i {\n display: block;\n height: 10px;\n margin: 16px 8px;\n border-radius: 5px;\n background: var(--color-fill);\n}\n.main {\n display: flex;\n flex-direction: column;\n background: var(--color-bg-body);\n}\n.top {\n height: 48px;\n border-bottom: 1px solid var(--color-border);\n background: var(--color-bg-container);\n}\n.body {\n display: grid;\n flex: 1;\n grid-template-columns: repeat(3, 1fr);\n grid-auto-rows: 90px;\n gap: 14px;\n padding: 20px;\n}\n.body i {\n border-radius: 10px;\n background: var(--color-bg-container);\n}\n.body i.w {\n grid-column: span 3;\n grid-row: span 2;\n}\n.foot {\n display: grid;\n place-items: center;\n height: 42px;\n border-radius: 6px;\n font-size: 12.5px;\n color: var(--color-text-tertiary);\n}\n.foot a {\n color: var(--color-primary);\n}\n</style>\n"],"names":["values","useConfigDraft","title","computed","_a","copyright","hasUrl","logo","LOGO_KEY","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_withDirectives","_hoisted_3","_createVNode","SmartLogo","_unref","vFlash","_hoisted_4","_hoisted_5","_hoisted_6","_Fragment","_renderList","n","_hoisted_7","_hoisted_8","_hoisted_9","_toDisplayString","_hoisted_10"],"mappings":";;;;;;;;;;;AASA,UAAM,EAAE,QAAAA,EAAA,IAAWC,EAAA,GACbC,IAAQC,EAAS,MAAA;;AAAM,eAAAC,IAAAJ,EAAO,gBAAgB,MAAvB,gBAAAI,EAA0B,WAAU;AAAA,KAAY,GAEvEC,IAAYF,EAAS;;AAAM,eAAAC,IAAAJ,EAAO,oBAAoB,MAA3B,gBAAAI,EAA8B,WAAUF,EAAM;AAAA,KAAK,GAC9EI,IAASH,EAAS,MAAA;;AAAM,cAAC,GAACC,IAAAJ,EAAO,uBAAuB,MAA9B,QAAAI,EAAiC;AAAA,KAAM,GACjEG,IAAOJ,EAAS,MAAMH,EAAOQ,CAAQ,KAAK,EAAE;sBAIhDC,EAAA,GAAAC,EAkCM,OAlCNC,GAkCM;AAAA,MAjCJC,EAUM,OAVNC,GAUM;AAAA,wBATJD,EAIO,QAAA,EAJD,OAAM,YAAQ;AAAA,UAClBA,EAAK,GAAA;AAAA,UACLA,EAAK,GAAA;AAAA,UACLA,EAAK,GAAA;AAAA,QAAA;QAEPE,GAAAL,EAAA,GAAAC,EAGO,QAHPK,GAGO;AAAA,UAFLC,EAAoCC,GAAA;AAAA,YAAxB,MAAM;AAAA,YAAK,KAAKV,EAAA;AAAA,UAAA;UAC5BK,EAAwB,gBAAfV,EAAA,KAAK,GAAA,CAAA;AAAA,QAAA;UAFE,CAAAgB,EAAAC,CAAA,GAAA,GAAAjB,EAAA,KAAK,IAAIK,EAAA,KAAI,EAAA;AAAA,QAAA;;MAKjCK,EAqBM,OArBNQ,GAqBM;AAAA,QApBJR,EAMM,OANNS,GAMM;AAAA,UALJP,GAAAL,EAAA,GAAAC,EAGM,OAHNY,GAGM;AAAA,YAFJN,EAAoCC,GAAA;AAAA,cAAxB,MAAM;AAAA,cAAK,KAAKV,EAAA;AAAA,YAAA;YAC5BK,EAAwB,gBAAfV,EAAA,KAAK,GAAA,CAAA;AAAA,UAAA;YAFC,CAAAgB,EAAAC,CAAA,GAAA,GAAAjB,EAAA,KAAK,IAAIK,EAAA,KAAI,EAAA;AAAA,UAAA;gBAI9BG,EAAuEa,GAAA,MAAAC,EAAxD,GAAC,CAANC,MAAVb,EAAuE,KAAA;AAAA,YAApD,KAAKa;AAAA,YAAI,kBAAgBA,IAAC,IAAA,QAAA,OAAA;AAAA,UAAA;;QAE/Cb,EAYM,OAZNc,GAYM;AAAA,0BAXJd,EAAmB,OAAA,EAAd,OAAM,MAAA,GAAK,MAAA,EAAA;AAAA,0BAChBA,EAKM,OAAA,EALD,OAAM,UAAM;AAAA,YACfA,EAAe,KAAA,EAAZ,OAAM,KAAG;AAAA,YACZA,EAAK,GAAA;AAAA,YACLA,EAAK,GAAA;AAAA,YACLA,EAAK,GAAA;AAAA,UAAA;UAEPE,GAAAL,EAAA,GAAAC,EAGM,OAHNiB,GAGM;AAAA,YAFKrB,EAAA,cAATI,EAAsC,KAAAkB,GAArB,OAAEC,EAAGxB,EAAA,KAAS,GAAA,CAAA,WAC/BK,EAAqC,QAAAoB,GAAxB,OAAED,EAAGxB,EAAA,KAAS,GAAA,CAAA;AAAA,UAAA;YAFZ,CAAAa,EAAAC,CAAA,GAAA,GAAAd,EAAA,KAAS,IAAIC,EAAA,KAAM,EAAA;AAAA,UAAA;;;;;;"}
1
+ {"version":3,"file":"AdminMock2.vue.js","sources":["../../../../../src/views/system/config/components/AdminMock.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 缩小版后台(880×540 设计尺寸,外面 ScaleToFit 等比缩放):浏览器标签页、侧栏品牌位、页脚版权,\n// 都读草稿,改一项对应位置即时变并闪一下。\nimport { computed } from 'vue'\nimport SmartLogo from '#/components/SmartLogo.vue'\nimport AppWatermark from '#/components/AppWatermark.vue'\nimport { useUserStore } from '#/stores/user'\nimport { watermarkFromValues } from '#/lib/watermark'\nimport { LOGO_KEY } from '../groups'\nimport { useConfigDraft } from '../draft'\nimport { vFlash } from '../flash'\n\nconst { values } = useConfigDraft()\nconst title = computed(() => values['sys.site.title']?.trim() || 'SmartAdmin')\n// 版权留空时和登录页页脚一样回退到站点名\nconst copyright = computed(() => values['sys.site.copyright']?.trim() || title.value)\nconst hasUrl = computed(() => !!values['sys.site.copyrightUrl']?.trim())\nconst logo = computed(() => values[LOGO_KEY] ?? '')\n\n// 草稿里的水印设置 + 当前登录用户的真实信息,预览出来就是保存后自己会看到的样子。\n// 水印层是 fixed 定位,放在带 transform 的缩放舞台里,会被收进舞台自己的范围,不会盖到整个页面。\nconst user = useUserStore()\nconst wm = computed(() => watermarkFromValues(values))\nconst who = computed(() => ({\n name: user.userInfo?.name,\n account: user.userInfo?.account,\n org: user.userInfo?.orgName,\n phoneTail: user.userInfo?.phoneTail,\n}))\n</script>\n\n<template>\n <div class=\"mock\">\n <AppWatermark v-if=\"wm.enabled\" :settings=\"wm\" :who=\"who\" :z-index=\"5\" />\n <div class=\"chrome\">\n <span class=\"lights\">\n <i />\n <i />\n <i />\n </span>\n <span v-flash=\"`${title}|${logo}`\" class=\"btab\">\n <SmartLogo :size=\"16\" :src=\"logo\" />\n <span>{{ title }}</span>\n </span>\n </div>\n <div class=\"app\">\n <div class=\"side\">\n <div v-flash=\"`${title}|${logo}`\" class=\"brand\" data-testid=\"preview-brand\">\n <SmartLogo :size=\"30\" :src=\"logo\" />\n <span>{{ title }}</span>\n </div>\n <i v-for=\"n in 5\" :key=\"n\" :style=\"{ width: n % 2 ? '80%' : '62%' }\" />\n </div>\n <div class=\"main\">\n <div class=\"top\" />\n <div class=\"body\">\n <i class=\"w\" />\n <i />\n <i />\n <i />\n </div>\n <div v-flash=\"`${copyright}|${hasUrl}`\" class=\"foot\">\n <a v-if=\"hasUrl\">© {{ copyright }}</a>\n <span v-else>© {{ copyright }}</span>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.mock {\n display: flex;\n flex-direction: column;\n width: 880px;\n height: 540px;\n overflow: hidden;\n border-radius: 10px;\n background: var(--cfg-card);\n box-shadow: var(--shadow-2);\n color: var(--text-1);\n font-size: 14px;\n text-align: left;\n}\n.chrome {\n display: flex;\n flex: none;\n align-items: flex-end;\n gap: 10px;\n height: 38px;\n padding: 0 12px;\n background: var(--fill);\n}\n.lights {\n display: flex;\n align-self: center;\n gap: 6px;\n}\n.lights i {\n width: 11px;\n height: 11px;\n border-radius: 50%;\n background: var(--err);\n}\n.lights i:nth-child(2) {\n background: var(--warn);\n}\n.lights i:nth-child(3) {\n background: var(--ok);\n}\n.btab {\n display: flex;\n align-items: center;\n gap: 7px;\n max-width: 260px;\n height: 30px;\n padding: 0 14px;\n border-radius: 8px 8px 0 0;\n background: var(--cfg-card);\n font-size: 12.5px;\n}\n.btab span {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.app {\n display: grid;\n flex: 1;\n grid-template-columns: 196px 1fr;\n min-height: 0;\n}\n.side {\n padding: 16px 12px;\n border-right: 1px solid var(--separator);\n}\n.brand {\n display: flex;\n align-items: center;\n gap: 9px;\n padding: 4px 6px;\n margin-bottom: 14px;\n overflow: hidden;\n border-radius: 8px;\n font-size: 15px;\n font-weight: 600;\n white-space: nowrap;\n}\n.side i {\n display: block;\n height: 10px;\n margin: 16px 8px;\n border-radius: 5px;\n background: var(--fill);\n}\n.main {\n display: flex;\n flex-direction: column;\n background: var(--cfg-app);\n}\n.top {\n height: 48px;\n border-bottom: 1px solid var(--separator);\n background: var(--cfg-card);\n}\n.body {\n display: grid;\n flex: 1;\n grid-template-columns: repeat(3, 1fr);\n grid-auto-rows: 90px;\n gap: 14px;\n padding: 20px;\n}\n.body i {\n border-radius: 10px;\n background: var(--cfg-card);\n}\n.body i.w {\n grid-column: span 3;\n grid-row: span 2;\n}\n.foot {\n display: grid;\n place-items: center;\n height: 42px;\n border-radius: 6px;\n font-size: 12.5px;\n color: var(--text-3);\n}\n.foot a {\n color: var(--signal);\n}\n</style>\n"],"names":["values","useConfigDraft","title","computed","_a","copyright","hasUrl","logo","LOGO_KEY","user","useUserStore","wm","watermarkFromValues","who","_b","_c","_d","_openBlock","_createElementBlock","_hoisted_1","_createBlock","AppWatermark","_createElementVNode","_hoisted_2","_withDirectives","_hoisted_3","_createVNode","SmartLogo","_unref","vFlash","_hoisted_4","_hoisted_5","_hoisted_6","_Fragment","_renderList","n","_hoisted_7","_hoisted_8","_hoisted_9","_toDisplayString","_hoisted_10"],"mappings":"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"}
@@ -1,5 +1,8 @@
1
- import f from "./AdvancedSection2.vue.js";
1
+ import o from "./AdvancedSection2.vue.js";
2
+ /* empty css */
3
+ import t from "../../../../_virtual/_plugin-vue_export-helper.js";
4
+ const d = /* @__PURE__ */ t(o, [["__scopeId", "data-v-46963dc2"]]);
2
5
  export {
3
- f as default
6
+ d as default
4
7
  };
5
8
  //# sourceMappingURL=AdvancedSection.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedSection.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"AdvancedSection.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,39 +1,53 @@
1
- import { defineComponent as x, ref as m, watch as E, resolveDirective as N, openBlock as p, createElementBlock as T, Fragment as b, createVNode as n, unref as o, withCtx as a, createElementVNode as P, withDirectives as z, createBlock as D, createTextVNode as V, toDisplayString as A, h as l } from "vue";
2
- import { useMessage as B, NButton as f, NSpace as R, NPopconfirm as I } from "naive-ui";
3
- import { useI18n as K } from "vue-i18n";
4
- import { SmartTable as q } from "smart-naive-table";
5
- import F from "../../../../components/AppIcon.vue.js";
6
- import { useConfirm as L } from "../../../../composables/useConfirm.js";
7
- import { useAuthStore as M } from "../../../../stores/auth.js";
8
- import { configApi as g } from "../../../../api/index.js";
9
- import { translateError as U } from "../../../../utils/error.js";
10
- import O from "./ConfigFormModal.vue.js";
11
- import $ from "./SectionLayout.vue.js";
12
- import { configRevision as j, bumpConfigRevision as G } from "../groups.js";
13
- import { useConfigDraft as H } from "../draft.js";
14
- const J = { class: "fill-main" }, ce = /* @__PURE__ */ x({
1
+ import { defineComponent as z, computed as A, ref as f, watch as N, h as s, resolveDirective as B, openBlock as y, createElementBlock as R, Fragment as I, createVNode as n, unref as t, withCtx as a, createElementVNode as L, normalizeClass as P, withDirectives as D, createBlock as O, createTextVNode as V, toDisplayString as H } from "vue";
2
+ import { useMessage as F, NSpace as K, NButton as u, NPopconfirm as M } from "naive-ui";
3
+ import { useI18n as q } from "vue-i18n";
4
+ import { SmartTable as U } from "smart-naive-table";
5
+ import G from "../../../../components/AppIcon.vue.js";
6
+ import { useConfirm as W } from "../../../../composables/useConfirm.js";
7
+ import { useAuthStore as $ } from "../../../../stores/auth.js";
8
+ import { configApi as w } from "../../../../api/index.js";
9
+ import { translateError as j } from "../../../../utils/error.js";
10
+ import { SEARCH_ACTIONS as d, deriveHeaderFilters as J } from "../../../../utils/tableFilter.js";
11
+ import { TABLE_MIN_ROW_HEIGHT as Q, TABLE_TOOLBAR as X } from "../../../../utils/tableToolbar.js";
12
+ import Y from "../../../../components/TableTotal/index.vue.js";
13
+ import Z from "./ConfigFormModal.vue.js";
14
+ import ee from "./SectionLayout.vue.js";
15
+ import { configRevision as oe, bumpConfigRevision as te } from "../groups.js";
16
+ import { useConfigDraft as ie } from "../draft.js";
17
+ import { useConfigLayout as re } from "../layoutMode.js";
18
+ const Te = /* @__PURE__ */ z({
15
19
  __name: "AdvancedSection",
16
- setup(Q) {
17
- const { t: e } = K(), h = B(), { run: y } = L(), u = M(), v = H(), d = m(), k = (t) => g.page({ ...t, excludedKeys: v.claimedKeys.value });
18
- E(j, () => {
19
- var t;
20
- return (t = d.value) == null ? void 0 : t.refresh();
20
+ setup(ne) {
21
+ const { t: e } = q(), C = F(), { run: _ } = W(), p = $(), k = ie(), { nar: c, side: T } = re(), g = A(() => c.value ? "medium" : "small"), h = f(), E = (o) => w.page({ ...o, excludedKeys: k.claimedKeys.value });
22
+ N(oe, () => {
23
+ var o;
24
+ return (o = h.value) == null ? void 0 : o.refresh();
21
25
  });
22
- const w = [
26
+ const v = [
23
27
  { type: "index", title: () => e("common.rowNo"), width: 64, align: "center" },
24
- { key: "configKey", title: () => e("config.key"), search: !0, ellipsis: { tooltip: !0 } },
25
- { key: "name", title: () => e("config.name"), search: !0, ellipsis: { tooltip: !0 } },
28
+ {
29
+ key: "configKey",
30
+ title: () => e("config.key"),
31
+ search: { actions: d.fuzzy },
32
+ ellipsis: { tooltip: !0 }
33
+ },
34
+ {
35
+ key: "name",
36
+ title: () => e("config.name"),
37
+ search: { actions: d.fuzzy },
38
+ ellipsis: { tooltip: !0 }
39
+ },
26
40
  {
27
41
  key: "configValue",
28
42
  title: () => e("config.value"),
29
43
  ellipsis: { tooltip: !0 },
30
- render: (t) => t.configValue || "—"
44
+ render: (o) => o.configValue || "—"
31
45
  },
32
46
  {
33
47
  key: "groupCode",
34
48
  title: () => e("config.group"),
35
- search: !0,
36
- render: (t) => t.groupCode || "—"
49
+ search: { actions: d.exact },
50
+ render: (o) => o.groupCode || "—"
37
51
  },
38
52
  { key: "sort", title: () => e("config.sort"), width: 80 },
39
53
  { key: "createTime", title: () => e("common.createTime"), format: "datetime" },
@@ -43,93 +57,107 @@ const J = { class: "fill-main" }, ce = /* @__PURE__ */ x({
43
57
  width: 140,
44
58
  fixed: "right",
45
59
  hideInSetting: !0,
46
- render: (t) => l(R, { size: 4, wrapItem: !1 }, () => [
47
- u.hasPerm("PUT:/api/v1/sys/config/{id}") ? l(
48
- f,
49
- { size: "small", quaternary: !0, type: "primary", onClick: () => C(t) },
60
+ render: (o) => s(K, { size: 4, wrapItem: !1 }, () => [
61
+ p.hasPerm("PUT:/api/v1/sys/config/{id}") ? s(
62
+ u,
63
+ {
64
+ size: g.value,
65
+ quaternary: !0,
66
+ type: "primary",
67
+ onClick: () => b(o)
68
+ },
50
69
  () => e("common.edit")
51
70
  ) : null,
52
- u.hasPerm("DELETE:/api/v1/sys/config/{id}") ? l(
53
- I,
71
+ p.hasPerm("DELETE:/api/v1/sys/config/{id}") ? s(
72
+ M,
54
73
  {
55
74
  // popconfirm 当触发器,「执行→toast」交给 useConfirm().run(与 module 页一致)。
56
- onPositiveClick: () => y(() => g.remove(t.id), e("config.deleted")).then((i) => {
57
- i && G();
75
+ onPositiveClick: () => _(() => w.remove(o.id), e("config.deleted")).then((i) => {
76
+ i && te();
58
77
  })
59
78
  },
60
79
  {
61
- trigger: () => l(
62
- f,
63
- { size: "small", quaternary: !0, type: "error" },
80
+ trigger: () => s(
81
+ u,
82
+ { size: g.value, quaternary: !0, type: "error" },
64
83
  () => e("common.delete")
65
84
  ),
66
- default: () => e("config.deleteConfirm", { name: t.name })
85
+ default: () => e("config.deleteConfirm", { name: o.name })
67
86
  }
68
87
  ) : null
69
88
  ])
70
89
  }
71
- ], r = m(!1), s = m(null);
72
- function _() {
73
- s.value = null, r.value = !0;
90
+ ];
91
+ J(v);
92
+ const l = f(!1), m = f(null);
93
+ function S() {
94
+ m.value = null, l.value = !0;
74
95
  }
75
- function C(t) {
76
- s.value = t, r.value = !0;
96
+ function b(o) {
97
+ m.value = o, l.value = !0;
77
98
  }
78
- return (t, i) => {
79
- const S = N("auth");
80
- return p(), T(b, null, [
81
- n($, {
82
- title: o(e)("config.tab.advanced"),
83
- desc: o(e)("config.advanced.desc")
99
+ return (o, i) => {
100
+ const x = B("auth");
101
+ return y(), R(I, null, [
102
+ n(ee, {
103
+ title: t(e)("config.tab.advanced"),
104
+ desc: t(e)("config.advanced.desc")
84
105
  }, {
85
106
  default: a(() => [
86
- P("div", J, [
87
- n(o(q), {
88
- "flex-height": "",
89
- "virtual-scroll": "",
90
- "default-page-size": 100,
107
+ L("div", {
108
+ class: P(["fill-main", "adv", { "adv--fixed": !t(T) && !t(c) }])
109
+ }, [
110
+ n(t(U), {
111
+ toolbar: t(X),
112
+ "fill-height": !t(c),
113
+ "min-row-height": t(Q),
114
+ "card-on-narrow": "",
91
115
  ref_key: "tableRef",
92
- ref: d,
93
- columns: w,
94
- fetcher: k,
116
+ ref: h,
117
+ columns: v,
118
+ fetcher: E,
119
+ search: { container: "table" },
95
120
  "storage-key": "sys-config",
96
- onError: i[0] || (i[0] = (c) => o(h).error(o(U)(c)))
121
+ onError: i[0] || (i[0] = (r) => t(C).error(t(j)(r)))
97
122
  }, {
98
- toolbar: a(() => [
99
- z((p(), D(o(f), {
123
+ "pagination-prefix": a(({ itemCount: r }) => [
124
+ n(Y, { count: r }, null, 8, ["count"])
125
+ ]),
126
+ "toolbar-right": a(() => [
127
+ D((y(), O(t(u), {
100
128
  type: "primary",
101
- onClick: _
129
+ onClick: S
102
130
  }, {
103
131
  icon: a(() => [
104
- n(F, {
132
+ n(G, {
105
133
  icon: "ph:plus",
106
134
  size: 16
107
135
  })
108
136
  ]),
109
137
  default: a(() => [
110
- V(" " + A(o(e)("common.add")), 1)
138
+ V(" " + H(t(e)("common.add")), 1)
111
139
  ]),
112
140
  _: 1
113
141
  })), [
114
- [S, "POST:/api/v1/sys/config"]
142
+ [x, "POST:/api/v1/sys/config"]
115
143
  ])
116
144
  ]),
117
145
  _: 1
118
- }, 512)
119
- ])
146
+ }, 8, ["toolbar", "fill-height", "min-row-height"])
147
+ ], 2)
120
148
  ]),
121
149
  _: 1
122
150
  }, 8, ["title", "desc"]),
123
- n(O, {
124
- show: r.value,
125
- "onUpdate:show": i[1] || (i[1] = (c) => r.value = c),
126
- row: s.value
151
+ n(Z, {
152
+ show: l.value,
153
+ "onUpdate:show": i[1] || (i[1] = (r) => l.value = r),
154
+ row: m.value
127
155
  }, null, 8, ["show", "row"])
128
156
  ], 64);
129
157
  };
130
158
  }
131
159
  });
132
160
  export {
133
- ce as default
161
+ Te as default
134
162
  };
135
163
  //# sourceMappingURL=AdvancedSection2.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedSection2.vue.js","sources":["../../../../../src/views/system/config/components/AdvancedSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 高级:给开发者看的原始键值表。列出所有没被结构化表单认领的配置行——\n// 结构化分组里的零散键、业务模块自己加的配置都在这里;认领清单来自草稿(draft.claimedKeys)。\n// 列驱动搜索/分页/竞态交 SmartTable,新增/编辑弹窗是 ConfigFormModal。\nimport { h, ref, watch } from 'vue'\nimport { NButton, NSpace, NPopconfirm, 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 { useAuthStore } from '#/stores/auth'\nimport { configApi } from '#/api'\nimport { translateError } from '#/utils/error'\nimport type { SysConfig } from '#/types/api'\nimport ConfigFormModal from './ConfigFormModal.vue'\nimport SectionLayout from './SectionLayout.vue'\nimport { bumpConfigRevision, configRevision } from '../groups'\nimport { useConfigDraft } from '../draft'\n\nconst { t } = useI18n()\nconst message = useMessage()\nconst { run } = useConfirm()\nconst authStore = useAuthStore()\nconst draft = useConfigDraft()\nconst tableRef = ref<SmartTableInst<SysConfig>>()\n\n// 在库里排除已认领的键,分页总数才准\nconst fetchConfigs = (params: Parameters<typeof configApi.page>[0]) =>\n configApi.page({ ...params, excludedKeys: draft.claimedKeys.value })\n\n// 保存或增删改了配置行都刷当前页(不回第 1 页)\nwatch(configRevision, () => tableRef.value?.refresh())\n\nconst columns: SmartTableColumn<SysConfig>[] = [\n { type: 'index', title: () => t('common.rowNo'), width: 64, align: 'center' },\n { key: 'configKey', title: () => t('config.key'), search: true, ellipsis: { tooltip: true } },\n { key: 'name', title: () => t('config.name'), search: true, ellipsis: { tooltip: true } },\n {\n key: 'configValue',\n title: () => t('config.value'),\n ellipsis: { tooltip: true },\n render: r => r.configValue || '—',\n },\n {\n key: 'groupCode',\n title: () => t('config.group'),\n search: true,\n render: r => r.groupCode || '—',\n },\n { key: 'sort', title: () => t('config.sort'), width: 80 },\n { key: 'createTime', title: () => t('common.createTime'), format: 'datetime' },\n {\n key: 'op',\n title: () => t('common.operation'),\n width: 140,\n fixed: 'right',\n hideInSetting: true,\n render: r =>\n h(NSpace, { size: 4, wrapItem: false }, () => [\n authStore.hasPerm('PUT:/api/v1/sys/config/{id}')\n ? h(\n NButton,\n { size: 'small', quaternary: true, type: 'primary', onClick: () => openEdit(r) },\n () => t('common.edit'),\n )\n : null,\n authStore.hasPerm('DELETE:/api/v1/sys/config/{id}')\n ? h(\n NPopconfirm,\n {\n // popconfirm 当触发器,「执行→toast」交给 useConfirm().run(与 module 页一致)。\n onPositiveClick: () =>\n run(() => configApi.remove(r.id), t('config.deleted')).then(ok => {\n if (ok) bumpConfigRevision()\n }),\n },\n {\n trigger: () =>\n h(NButton, { size: 'small', quaternary: true, type: 'error' }, () =>\n t('common.delete'),\n ),\n default: () => t('config.deleteConfirm', { name: r.name }),\n },\n )\n : null,\n ]),\n },\n]\n\nconst show = ref(false)\nconst editing = ref<SysConfig | null>(null)\nfunction openAdd() {\n editing.value = null\n show.value = true\n}\nfunction openEdit(r: SysConfig) {\n editing.value = r\n show.value = true\n}\n</script>\n\n<template>\n <SectionLayout :title=\"t('config.tab.advanced')\" :desc=\"t('config.advanced.desc')\">\n <!-- .fill-main 接上内核的高度链(styles/layout.css):页面不滚,只有表体滚 -->\n <div class=\"fill-main\">\n <SmartTable\n flex-height\n virtual-scroll\n :default-page-size=\"100\"\n ref=\"tableRef\"\n :columns=\"columns\"\n :fetcher=\"fetchConfigs\"\n storage-key=\"sys-config\"\n @error=\"e => message.error(translateError(e))\"\n >\n <template #toolbar>\n <n-button v-auth=\"'POST:/api/v1/sys/config'\" type=\"primary\" @click=\"openAdd\">\n <template #icon><AppIcon icon=\"ph:plus\" :size=\"16\" /></template>\n {{ t('common.add') }}\n </n-button>\n </template>\n </SmartTable>\n </div>\n </SectionLayout>\n\n <ConfigFormModal v-model:show=\"show\" :row=\"editing\" />\n</template>\n"],"names":["t","useI18n","message","useMessage","run","useConfirm","authStore","useAuthStore","draft","useConfigDraft","tableRef","ref","fetchConfigs","params","configApi","watch","configRevision","_a","columns","r","h","NSpace","NButton","openEdit","NPopconfirm","ok","bumpConfigRevision","show","editing","openAdd","_createVNode","SectionLayout","_unref","_createElementVNode","_hoisted_1","SmartTable","_cache","e","translateError","_createBlock","AppIcon","_createTextVNode","ConfigFormModal","$event"],"mappings":"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"}
1
+ {"version":3,"file":"AdvancedSection2.vue.js","sources":["../../../../../src/views/system/config/components/AdvancedSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 高级:给开发者看的原始键值表。列出所有没被结构化表单认领的配置行——\n// 结构化分组里的零散键、业务模块自己加的配置都在这里;认领清单来自草稿(draft.claimedKeys)。\n// 列驱动搜索/分页/竞态交 SmartTable,新增/编辑弹窗是 ConfigFormModal。\nimport { computed, h, ref, watch } from 'vue'\nimport { NButton, NSpace, NPopconfirm, 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 { useAuthStore } from '#/stores/auth'\nimport { configApi } from '#/api'\nimport { translateError } from '#/utils/error'\nimport { SEARCH_ACTIONS, deriveHeaderFilters } from '#/utils/tableFilter'\nimport { TABLE_MIN_ROW_HEIGHT, TABLE_TOOLBAR } from '#/utils/tableToolbar'\nimport TableTotal from '#/components/TableTotal/index.vue'\nimport type { SysConfig } from '#/types/api'\nimport ConfigFormModal from './ConfigFormModal.vue'\nimport SectionLayout from './SectionLayout.vue'\nimport { bumpConfigRevision, configRevision } from '../groups'\nimport { useConfigDraft } from '../draft'\nimport { useConfigLayout } from '../layoutMode'\n\nconst { t } = useI18n()\nconst message = useMessage()\nconst { run } = useConfirm()\nconst authStore = useAuthStore()\nconst draft = useConfigDraft()\nconst { nar, side } = useConfigLayout()\n// 窄档卡片里的行内按钮放大,方便手指点\nconst btnSize = computed(() => (nar.value ? 'medium' : 'small'))\nconst tableRef = ref<SmartTableInst<SysConfig>>()\n\n// 在库里排除已认领的键,分页总数才准\nconst fetchConfigs = (params: Parameters<typeof configApi.page>[0]) =>\n configApi.page({ ...params, excludedKeys: draft.claimedKeys.value })\n\n// 保存或增删改了配置行都刷当前页(不回第 1 页)\nwatch(configRevision, () => tableRef.value?.refresh())\n\nconst columns: SmartTableColumn<SysConfig>[] = [\n { type: 'index', title: () => t('common.rowNo'), width: 64, align: 'center' },\n {\n key: 'configKey',\n title: () => t('config.key'),\n search: { actions: SEARCH_ACTIONS.fuzzy },\n ellipsis: { tooltip: true },\n },\n {\n key: 'name',\n title: () => t('config.name'),\n search: { actions: SEARCH_ACTIONS.fuzzy },\n ellipsis: { tooltip: true },\n },\n {\n key: 'configValue',\n title: () => t('config.value'),\n ellipsis: { tooltip: true },\n render: r => r.configValue || '—',\n },\n {\n key: 'groupCode',\n title: () => t('config.group'),\n search: { actions: SEARCH_ACTIONS.exact },\n render: r => r.groupCode || '—',\n },\n { key: 'sort', title: () => t('config.sort'), width: 80 },\n { key: 'createTime', title: () => t('common.createTime'), format: 'datetime' },\n {\n key: 'op',\n title: () => t('common.operation'),\n width: 140,\n fixed: 'right',\n hideInSetting: true,\n render: r =>\n h(NSpace, { size: 4, wrapItem: false }, () => [\n authStore.hasPerm('PUT:/api/v1/sys/config/{id}')\n ? h(\n NButton,\n {\n size: btnSize.value,\n quaternary: true,\n type: 'primary',\n onClick: () => openEdit(r),\n },\n () => t('common.edit'),\n )\n : null,\n authStore.hasPerm('DELETE:/api/v1/sys/config/{id}')\n ? h(\n NPopconfirm,\n {\n // popconfirm 当触发器,「执行→toast」交给 useConfirm().run(与 module 页一致)。\n onPositiveClick: () =>\n run(() => configApi.remove(r.id), t('config.deleted')).then(ok => {\n if (ok) bumpConfigRevision()\n }),\n },\n {\n trigger: () =>\n h(NButton, { size: btnSize.value, quaternary: true, type: 'error' }, () =>\n t('common.delete'),\n ),\n default: () => t('config.deleteConfirm', { name: r.name }),\n },\n )\n : null,\n ]),\n },\n]\nderiveHeaderFilters(columns)\n\nconst show = ref(false)\nconst editing = ref<SysConfig | null>(null)\nfunction openAdd() {\n editing.value = null\n show.value = true\n}\nfunction openEdit(r: SysConfig) {\n editing.value = r\n show.value = true\n}\n</script>\n\n<template>\n <SectionLayout :title=\"t('config.tab.advanced')\" :desc=\"t('config.advanced.desc')\">\n <!-- .fill-main 接上内核的高度链(styles/layout.css):页面不滚,只有表体滚。\n 窄档整页自然滚动:表收成卡片列表、不再定高;中档(单栏)给固定高度,宽档吃满剩余高度 -->\n <div :class=\"['fill-main', 'adv', { 'adv--fixed': !side && !nar }]\">\n <SmartTable\n :toolbar=\"TABLE_TOOLBAR\"\n :fill-height=\"!nar\"\n :min-row-height=\"TABLE_MIN_ROW_HEIGHT\"\n card-on-narrow\n ref=\"tableRef\"\n :columns=\"columns\"\n :fetcher=\"fetchConfigs\"\n :search=\"{ container: 'table' }\"\n storage-key=\"sys-config\"\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=\"'POST:/api/v1/sys/config'\" type=\"primary\" @click=\"openAdd\">\n <template #icon><AppIcon icon=\"ph:plus\" :size=\"16\" /></template>\n {{ t('common.add') }}\n </n-button>\n </template>\n </SmartTable>\n </div>\n </SectionLayout>\n\n <ConfigFormModal v-model:show=\"show\" :row=\"editing\" />\n</template>\n\n<style scoped>\n.adv--fixed {\n flex: none;\n height: 560px;\n}\n</style>\n"],"names":["t","useI18n","message","useMessage","run","useConfirm","authStore","useAuthStore","draft","useConfigDraft","nar","side","useConfigLayout","btnSize","computed","tableRef","ref","fetchConfigs","params","configApi","watch","configRevision","_a","columns","SEARCH_ACTIONS","r","h","NSpace","NButton","openEdit","NPopconfirm","ok","bumpConfigRevision","deriveHeaderFilters","show","editing","openAdd","_createVNode","SectionLayout","_unref","_createElementVNode","_normalizeClass","SmartTable","TABLE_TOOLBAR","TABLE_MIN_ROW_HEIGHT","_cache","e","translateError","_withCtx","itemCount","TableTotal","_createBlock","AppIcon","_createTextVNode","ConfigFormModal","$event"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import o from "./BrandSection2.vue.js";
2
2
  /* empty css */
3
3
  import t from "../../../../_virtual/_plugin-vue_export-helper.js";
4
- const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-8627a064"]]);
4
+ const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-442d28ac"]]);
5
5
  export {
6
- p as default
6
+ m as default
7
7
  };
8
8
  //# sourceMappingURL=BrandSection.vue.js.map