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
@@ -0,0 +1,110 @@
1
+ export declare const WATERMARK_FIELDS: readonly ["name", "account", "org", "phone", "time", "text"];
2
+ export type WatermarkField = (typeof WATERMARK_FIELDS)[number];
3
+ export declare const WATERMARK_TIME_FORMATS: readonly ["YYYY-MM-DD", "YYYY-MM-DD HH:mm", "YYYY-MM-DD HH:mm:ss", "MM-DD HH:mm"];
4
+ export type WatermarkTimeFormat = (typeof WATERMARK_TIME_FORMATS)[number];
5
+ export type WatermarkLayout = 'single' | 'multi';
6
+ export type WatermarkDensity = 'sparse' | 'normal' | 'dense';
7
+ export interface WatermarkSettings {
8
+ enabled: boolean;
9
+ /** 已按 WATERMARK_FIELDS 的固定顺序排好 */
10
+ fields: WatermarkField[];
11
+ /** 内容项含 text 时才印 */
12
+ text: string;
13
+ timeFormat: WatermarkTimeFormat;
14
+ layout: WatermarkLayout;
15
+ /** px,12–28 */
16
+ fontSize: number;
17
+ /** 不透明度百分比,2–30 */
18
+ opacity: number;
19
+ /** 度,-45–45 */
20
+ rotate: number;
21
+ density: WatermarkDensity;
22
+ /** 相邻两行错开半格 */
23
+ cross: boolean;
24
+ }
25
+ export declare const WATERMARK_LIMITS: {
26
+ readonly fontSize: {
27
+ readonly min: 12;
28
+ readonly max: 28;
29
+ };
30
+ readonly opacity: {
31
+ readonly min: 2;
32
+ readonly max: 30;
33
+ };
34
+ readonly rotate: {
35
+ readonly min: -45;
36
+ readonly max: 45;
37
+ };
38
+ readonly text: 40;
39
+ };
40
+ export declare const DEFAULT_WATERMARK: Readonly<WatermarkSettings>;
41
+ /** 配置键(与后端 ConfigSeed 的 WATERMARK_*_KEY 一一对应)。 */
42
+ export declare const WATERMARK_KEY: {
43
+ readonly enabled: "sys.watermark.enabled";
44
+ readonly fields: "sys.watermark.fields";
45
+ readonly text: "sys.watermark.text";
46
+ readonly timeFormat: "sys.watermark.timeFormat";
47
+ readonly layout: "sys.watermark.layout";
48
+ readonly fontSize: "sys.watermark.fontSize";
49
+ readonly opacity: "sys.watermark.opacity";
50
+ readonly rotate: "sys.watermark.rotate";
51
+ readonly density: "sys.watermark.density";
52
+ readonly cross: "sys.watermark.cross";
53
+ };
54
+ export declare const WATERMARK_KEYS: readonly string[];
55
+ /** 内容项:接受数组或逗号分隔串;丢掉未知项、去重、按固定顺序排。 */
56
+ export declare function normalizeWatermarkFields(raw: unknown): WatermarkField[];
57
+ /** 站点信息里的 watermark 节点(或任何半成品)→ 合法设置。 */
58
+ export declare function normalizeWatermark(raw?: Partial<Record<keyof WatermarkSettings, unknown>> | null): {
59
+ enabled: boolean;
60
+ fields: ("name" | "account" | "phone" | "org" | "time" | "text")[];
61
+ text: string;
62
+ timeFormat: "YYYY-MM-DD" | "YYYY-MM-DD HH:mm" | "YYYY-MM-DD HH:mm:ss" | "MM-DD HH:mm";
63
+ layout: WatermarkLayout;
64
+ fontSize: number;
65
+ opacity: number;
66
+ rotate: number;
67
+ density: WatermarkDensity;
68
+ cross: boolean;
69
+ };
70
+ /** 配置中心草稿(键值全是字符串)→ 合法设置。键不存在 = 沿用默认;空串的 fields = 一项都没勾。 */
71
+ export declare function watermarkFromValues(values: Record<string, string | undefined>): WatermarkSettings;
72
+ /** 用户自己的那部分内容;缺哪项那一项就不印。 */
73
+ export interface WatermarkWho {
74
+ name?: string | null;
75
+ account?: string | null;
76
+ org?: string | null;
77
+ /** 手机号后四位(整号不进浏览器存储) */
78
+ phoneTail?: string | null;
79
+ }
80
+ /** 按格式串格式化时间:只认 YYYY MM DD HH mm ss。 */
81
+ export declare function formatWatermarkTime(format: string, d: Date): string;
82
+ /** 内容项 → 要印出来的几段文字(按固定顺序;值为空的项跳过)。 */
83
+ export declare function watermarkParts(s: WatermarkSettings, who: WatermarkWho, now: Date): string[];
84
+ /** NWatermark 的入参子集。 */
85
+ export interface WatermarkProps {
86
+ content: string;
87
+ cross: boolean;
88
+ fontSize: number;
89
+ lineHeight: number;
90
+ rotate: number;
91
+ width: number;
92
+ height: number;
93
+ xGap: number;
94
+ yGap: number;
95
+ xOffset: number;
96
+ yOffset: number;
97
+ fontColor: string;
98
+ }
99
+ /**
100
+ * 设置 + 当前用户 + 此刻 → NWatermark 入参;没启用、或没有任何可印的内容时返回 null。
101
+ *
102
+ * NWatermark 的画法是:一格画布 (width + xGap) × (height + yGap),**先把整个画布绕左上角旋转**,
103
+ * 再在旋转后的坐标系里从 (xOffset, yOffset) 起画字。所以倾斜后文字会冲出画布的上沿或左沿被裁掉
104
+ * (负角度向上冲、正角度向左冲),光加间距救不了,必须用 xOffset / yOffset 把旋转后的包围盒平移回画布内:
105
+ * 先算文字块 w × h 旋转后的包围盒,平移量取「让包围盒左上角落在 (0,0)」,再换算回旋转前的坐标系。
106
+ * 一格的大小 = 包围盒 + 疏密档位的间距。
107
+ *
108
+ * 文字块的宽按最长一行估算(汉字一个字号宽,其余 0.58,再放 6% 余量),高多留一点放下降部。
109
+ */
110
+ export declare function buildWatermarkProps(s: WatermarkSettings, who: WatermarkWho, dark: boolean, now?: Date): WatermarkProps | null;
@@ -0,0 +1,151 @@
1
+ const K = ["name", "account", "org", "phone", "time", "text"], _ = [
2
+ "YYYY-MM-DD",
3
+ "YYYY-MM-DD HH:mm",
4
+ "YYYY-MM-DD HH:mm:ss",
5
+ "MM-DD HH:mm"
6
+ ], r = {
7
+ fontSize: { min: 12, max: 28 },
8
+ opacity: { min: 2, max: 30 },
9
+ rotate: { min: -45, max: 45 },
10
+ text: 40
11
+ }, F = Object.freeze({
12
+ enabled: !1,
13
+ fields: ["name", "account", "time"],
14
+ text: "",
15
+ timeFormat: "YYYY-MM-DD HH:mm",
16
+ layout: "single",
17
+ fontSize: 14,
18
+ opacity: 8,
19
+ rotate: -20,
20
+ density: "normal",
21
+ cross: !0
22
+ }), H = {
23
+ enabled: "sys.watermark.enabled",
24
+ fields: "sys.watermark.fields",
25
+ text: "sys.watermark.text",
26
+ timeFormat: "sys.watermark.timeFormat",
27
+ layout: "sys.watermark.layout",
28
+ fontSize: "sys.watermark.fontSize",
29
+ opacity: "sys.watermark.opacity",
30
+ rotate: "sys.watermark.rotate",
31
+ density: "sys.watermark.density",
32
+ cross: "sys.watermark.cross"
33
+ }, G = Object.values(H);
34
+ function d(t, e, n, o) {
35
+ const a = typeof t == "number" ? t : Number(t);
36
+ return t === "" || t === null || t === void 0 || !Number.isFinite(a) ? e : Math.min(o, Math.max(n, Math.trunc(a)));
37
+ }
38
+ const p = (t, e, n) => e.includes(t) ? t : n;
39
+ function I(t) {
40
+ const e = Array.isArray(t) ? t.map(String) : typeof t == "string" ? t.split(",").map((n) => n.trim()) : null;
41
+ return e ? K.filter((n) => e.includes(n)) : [...F.fields];
42
+ }
43
+ function O(t) {
44
+ const e = F, n = t ?? {}, o = typeof n.text == "string" ? n.text.trim() : "";
45
+ return {
46
+ enabled: n.enabled === !0,
47
+ fields: n.fields === void 0 ? [...e.fields] : I(n.fields),
48
+ text: o.slice(0, r.text),
49
+ timeFormat: p(n.timeFormat, _, e.timeFormat),
50
+ layout: p(n.layout, ["single", "multi"], e.layout),
51
+ fontSize: d(
52
+ n.fontSize,
53
+ e.fontSize,
54
+ r.fontSize.min,
55
+ r.fontSize.max
56
+ ),
57
+ opacity: d(
58
+ n.opacity,
59
+ e.opacity,
60
+ r.opacity.min,
61
+ r.opacity.max
62
+ ),
63
+ rotate: d(n.rotate, e.rotate, r.rotate.min, r.rotate.max),
64
+ density: p(n.density, ["sparse", "normal", "dense"], e.density),
65
+ cross: n.cross !== !1
66
+ };
67
+ }
68
+ function L(t) {
69
+ const e = (n) => t[H[n]];
70
+ return O({
71
+ enabled: e("enabled") === "true",
72
+ fields: e("fields"),
73
+ text: e("text"),
74
+ timeFormat: e("timeFormat"),
75
+ layout: e("layout"),
76
+ fontSize: e("fontSize"),
77
+ opacity: e("opacity"),
78
+ rotate: e("rotate"),
79
+ density: e("density"),
80
+ cross: e("cross") !== "false"
81
+ });
82
+ }
83
+ const m = (t) => String(t).padStart(2, "0");
84
+ function j(t, e) {
85
+ const n = {
86
+ YYYY: String(e.getFullYear()),
87
+ MM: m(e.getMonth() + 1),
88
+ DD: m(e.getDate()),
89
+ HH: m(e.getHours()),
90
+ mm: m(e.getMinutes()),
91
+ ss: m(e.getSeconds())
92
+ };
93
+ return t.replace(/YYYY|MM|DD|HH|mm|ss/g, (o) => n[o]);
94
+ }
95
+ function v(t, e, n) {
96
+ const o = {
97
+ name: e.name,
98
+ account: e.account,
99
+ org: e.org,
100
+ phone: e.phoneTail ? `*${e.phoneTail}` : null,
101
+ time: j(t.timeFormat, n),
102
+ text: t.text
103
+ };
104
+ return t.fields.map((a) => {
105
+ var s;
106
+ return (s = o[a]) == null ? void 0 : s.trim();
107
+ }).filter((a) => !!a);
108
+ }
109
+ const P = { sparse: 120, normal: 64, dense: 24 };
110
+ function $(t, e, n, o = /* @__PURE__ */ new Date()) {
111
+ if (!t.enabled) return null;
112
+ const a = v(t, e, o);
113
+ if (!a.length) return null;
114
+ const s = t.layout === "multi" ? a : [a.join(" · ")], M = Math.round(t.fontSize * 1.4), R = (i) => [...i].reduce((y, E) => y + (E.charCodeAt(0) > 255 ? t.fontSize : t.fontSize * 0.58), 0), c = Math.ceil(Math.max(...s.map(R)) * 1.06), l = M * s.length + Math.ceil(t.fontSize * 0.3), x = t.rotate * Math.PI / 180, u = Math.cos(x), f = Math.sin(x), Y = [
115
+ [0, 0],
116
+ [c, 0],
117
+ [0, l],
118
+ [c, l]
119
+ ].map(([i, y]) => [i * u - y * f, i * f + y * u]), h = Y.map((i) => i[0]), S = Y.map((i) => i[1]), g = Math.min(...h), z = Math.min(...S), T = Math.ceil(Math.max(...h) - g), W = Math.ceil(Math.max(...S) - z), b = -g, A = -z, D = P[t.density], k = t.opacity / 100;
120
+ return {
121
+ content: s.join(`
122
+ `),
123
+ cross: t.cross,
124
+ fontSize: t.fontSize,
125
+ lineHeight: M,
126
+ rotate: t.rotate,
127
+ width: c,
128
+ height: l,
129
+ xGap: T - c + D,
130
+ yGap: W - l + D,
131
+ xOffset: b * u + A * f + 0,
132
+ // + 0:不倾斜时把 -0 收成 0
133
+ yOffset: -b * f + A * u + 0,
134
+ fontColor: n ? `rgba(255,255,255,${k})` : `rgba(0,0,0,${k})`
135
+ };
136
+ }
137
+ export {
138
+ F as DEFAULT_WATERMARK,
139
+ K as WATERMARK_FIELDS,
140
+ H as WATERMARK_KEY,
141
+ G as WATERMARK_KEYS,
142
+ r as WATERMARK_LIMITS,
143
+ _ as WATERMARK_TIME_FORMATS,
144
+ $ as buildWatermarkProps,
145
+ j as formatWatermarkTime,
146
+ O as normalizeWatermark,
147
+ I as normalizeWatermarkFields,
148
+ L as watermarkFromValues,
149
+ v as watermarkParts
150
+ };
151
+ //# sourceMappingURL=watermark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watermark.js","sources":["../../src/lib/watermark.ts"],"sourcesContent":["// 水印:配置(sys.watermark.*)→ 设置对象 → NWatermark 的入参。\n// 管理员只决定「印哪几项、长什么样」,每个人具体印什么由前端按登录用户拼,所以同一份设置在每台浏览器上内容不同。\n// 取值规则与后端 ConfigService.LoadWatermarkAsync 一致:任何一项缺失、写错或越界都收口成默认值 / 边界,\n// 这样配置中心的草稿预览(读键值表)和线上真水印(读站点信息)走同一套收口。\n\nexport const WATERMARK_FIELDS = ['name', 'account', 'org', 'phone', 'time', 'text'] as const\nexport type WatermarkField = (typeof WATERMARK_FIELDS)[number]\n\nexport const WATERMARK_TIME_FORMATS = [\n 'YYYY-MM-DD',\n 'YYYY-MM-DD HH:mm',\n 'YYYY-MM-DD HH:mm:ss',\n 'MM-DD HH:mm',\n] as const\nexport type WatermarkTimeFormat = (typeof WATERMARK_TIME_FORMATS)[number]\n\nexport type WatermarkLayout = 'single' | 'multi'\nexport type WatermarkDensity = 'sparse' | 'normal' | 'dense'\n\nexport interface WatermarkSettings {\n enabled: boolean\n /** 已按 WATERMARK_FIELDS 的固定顺序排好 */\n fields: WatermarkField[]\n /** 内容项含 text 时才印 */\n text: string\n timeFormat: WatermarkTimeFormat\n layout: WatermarkLayout\n /** px,12–28 */\n fontSize: number\n /** 不透明度百分比,2–30 */\n opacity: number\n /** 度,-45–45 */\n rotate: number\n density: WatermarkDensity\n /** 相邻两行错开半格 */\n cross: boolean\n}\n\nexport const WATERMARK_LIMITS = {\n fontSize: { min: 12, max: 28 },\n opacity: { min: 2, max: 30 },\n rotate: { min: -45, max: 45 },\n text: 40,\n} as const\n\nexport const DEFAULT_WATERMARK: Readonly<WatermarkSettings> = Object.freeze({\n enabled: false,\n fields: ['name', 'account', 'time'] as WatermarkField[],\n text: '',\n timeFormat: 'YYYY-MM-DD HH:mm',\n layout: 'single',\n fontSize: 14,\n opacity: 8,\n rotate: -20,\n density: 'normal',\n cross: true,\n})\n\n/** 配置键(与后端 ConfigSeed 的 WATERMARK_*_KEY 一一对应)。 */\nexport const WATERMARK_KEY = {\n enabled: 'sys.watermark.enabled',\n fields: 'sys.watermark.fields',\n text: 'sys.watermark.text',\n timeFormat: 'sys.watermark.timeFormat',\n layout: 'sys.watermark.layout',\n fontSize: 'sys.watermark.fontSize',\n opacity: 'sys.watermark.opacity',\n rotate: 'sys.watermark.rotate',\n density: 'sys.watermark.density',\n cross: 'sys.watermark.cross',\n} as const\nexport const WATERMARK_KEYS: readonly string[] = Object.values(WATERMARK_KEY)\n\nfunction clampInt(raw: unknown, fallback: number, min: number, max: number) {\n const n = typeof raw === 'number' ? raw : Number(raw)\n if (raw === '' || raw === null || raw === undefined || !Number.isFinite(n)) return fallback\n return Math.min(max, Math.max(min, Math.trunc(n)))\n}\n\nconst oneOf = <T extends string>(v: unknown, all: readonly T[], fallback: T): T =>\n all.includes(v as T) ? (v as T) : fallback\n\n/** 内容项:接受数组或逗号分隔串;丢掉未知项、去重、按固定顺序排。 */\nexport function normalizeWatermarkFields(raw: unknown): WatermarkField[] {\n const list = Array.isArray(raw)\n ? raw.map(String)\n : typeof raw === 'string'\n ? raw.split(',').map(s => s.trim())\n : null\n if (!list) return [...DEFAULT_WATERMARK.fields]\n return WATERMARK_FIELDS.filter(f => list.includes(f))\n}\n\n/** 站点信息里的 watermark 节点(或任何半成品)→ 合法设置。 */\nexport function normalizeWatermark(raw?: Partial<Record<keyof WatermarkSettings, unknown>> | null) {\n const d = DEFAULT_WATERMARK\n const r = raw ?? {}\n const text = typeof r.text === 'string' ? r.text.trim() : ''\n return {\n enabled: r.enabled === true,\n fields: r.fields === undefined ? [...d.fields] : normalizeWatermarkFields(r.fields),\n text: text.slice(0, WATERMARK_LIMITS.text),\n timeFormat: oneOf(r.timeFormat, WATERMARK_TIME_FORMATS, d.timeFormat),\n layout: oneOf(r.layout, ['single', 'multi'] as const, d.layout),\n fontSize: clampInt(\n r.fontSize,\n d.fontSize,\n WATERMARK_LIMITS.fontSize.min,\n WATERMARK_LIMITS.fontSize.max,\n ),\n opacity: clampInt(\n r.opacity,\n d.opacity,\n WATERMARK_LIMITS.opacity.min,\n WATERMARK_LIMITS.opacity.max,\n ),\n rotate: clampInt(r.rotate, d.rotate, WATERMARK_LIMITS.rotate.min, WATERMARK_LIMITS.rotate.max),\n density: oneOf(r.density, ['sparse', 'normal', 'dense'] as const, d.density),\n cross: r.cross !== false,\n } satisfies WatermarkSettings\n}\n\n/** 配置中心草稿(键值全是字符串)→ 合法设置。键不存在 = 沿用默认;空串的 fields = 一项都没勾。 */\nexport function watermarkFromValues(values: Record<string, string | undefined>): WatermarkSettings {\n const v = (k: keyof typeof WATERMARK_KEY) => values[WATERMARK_KEY[k]]\n return normalizeWatermark({\n enabled: v('enabled') === 'true',\n fields: v('fields'),\n text: v('text'),\n timeFormat: v('timeFormat'),\n layout: v('layout'),\n fontSize: v('fontSize'),\n opacity: v('opacity'),\n rotate: v('rotate'),\n density: v('density'),\n cross: v('cross') !== 'false',\n })\n}\n\n/** 用户自己的那部分内容;缺哪项那一项就不印。 */\nexport interface WatermarkWho {\n name?: string | null\n account?: string | null\n org?: string | null\n /** 手机号后四位(整号不进浏览器存储) */\n phoneTail?: string | null\n}\n\nconst pad = (n: number) => String(n).padStart(2, '0')\n\n/** 按格式串格式化时间:只认 YYYY MM DD HH mm ss。 */\nexport function formatWatermarkTime(format: string, d: Date): string {\n const map: Record<string, string> = {\n YYYY: String(d.getFullYear()),\n MM: pad(d.getMonth() + 1),\n DD: pad(d.getDate()),\n HH: pad(d.getHours()),\n mm: pad(d.getMinutes()),\n ss: pad(d.getSeconds()),\n }\n return format.replace(/YYYY|MM|DD|HH|mm|ss/g, t => map[t]!)\n}\n\n/** 内容项 → 要印出来的几段文字(按固定顺序;值为空的项跳过)。 */\nexport function watermarkParts(s: WatermarkSettings, who: WatermarkWho, now: Date): string[] {\n const value: Record<WatermarkField, string | null | undefined> = {\n name: who.name,\n account: who.account,\n org: who.org,\n phone: who.phoneTail ? `*${who.phoneTail}` : null,\n time: formatWatermarkTime(s.timeFormat, now),\n text: s.text,\n }\n return s.fields.map(f => value[f]?.trim()).filter((x): x is string => !!x)\n}\n\n/** NWatermark 的入参子集。 */\nexport interface WatermarkProps {\n content: string\n cross: boolean\n fontSize: number\n lineHeight: number\n rotate: number\n width: number\n height: number\n xGap: number\n yGap: number\n xOffset: number\n yOffset: number\n fontColor: string\n}\n\nconst GAP: Record<WatermarkDensity, number> = { sparse: 120, normal: 64, dense: 24 }\n\n/**\n * 设置 + 当前用户 + 此刻 → NWatermark 入参;没启用、或没有任何可印的内容时返回 null。\n *\n * NWatermark 的画法是:一格画布 (width + xGap) × (height + yGap),**先把整个画布绕左上角旋转**,\n * 再在旋转后的坐标系里从 (xOffset, yOffset) 起画字。所以倾斜后文字会冲出画布的上沿或左沿被裁掉\n * (负角度向上冲、正角度向左冲),光加间距救不了,必须用 xOffset / yOffset 把旋转后的包围盒平移回画布内:\n * 先算文字块 w × h 旋转后的包围盒,平移量取「让包围盒左上角落在 (0,0)」,再换算回旋转前的坐标系。\n * 一格的大小 = 包围盒 + 疏密档位的间距。\n *\n * 文字块的宽按最长一行估算(汉字一个字号宽,其余 0.58,再放 6% 余量),高多留一点放下降部。\n */\nexport function buildWatermarkProps(\n s: WatermarkSettings,\n who: WatermarkWho,\n dark: boolean,\n now: Date = new Date(),\n): WatermarkProps | null {\n if (!s.enabled) return null\n const parts = watermarkParts(s, who, now)\n if (!parts.length) return null\n const lines = s.layout === 'multi' ? parts : [parts.join(' · ')]\n const lineHeight = Math.round(s.fontSize * 1.4)\n const textWidth = (line: string) =>\n [...line].reduce((w, c) => w + (c.charCodeAt(0) > 255 ? s.fontSize : s.fontSize * 0.58), 0)\n const width = Math.ceil(Math.max(...lines.map(textWidth)) * 1.06)\n const height = lineHeight * lines.length + Math.ceil(s.fontSize * 0.3)\n\n const rad = (s.rotate * Math.PI) / 180\n const cos = Math.cos(rad)\n const sin = Math.sin(rad)\n const corners = [\n [0, 0],\n [width, 0],\n [0, height],\n [width, height],\n ].map(([x, y]) => [x! * cos - y! * sin, x! * sin + y! * cos] as const)\n const xs = corners.map(c => c[0])\n const ys = corners.map(c => c[1])\n const minX = Math.min(...xs)\n const minY = Math.min(...ys)\n const boxW = Math.ceil(Math.max(...xs) - minX)\n const boxH = Math.ceil(Math.max(...ys) - minY)\n // 画布坐标系里要平移 (-minX, -minY);画字用的偏移在旋转后的坐标系里,换算 R(-θ)·T\n const tx = -minX\n const ty = -minY\n const gap = GAP[s.density]\n const alpha = s.opacity / 100\n return {\n content: lines.join('\\n'),\n cross: s.cross,\n fontSize: s.fontSize,\n lineHeight,\n rotate: s.rotate,\n width,\n height,\n xGap: boxW - width + gap,\n yGap: boxH - height + gap,\n xOffset: tx * cos + ty * sin + 0, // + 0:不倾斜时把 -0 收成 0\n yOffset: -tx * sin + ty * cos + 0,\n fontColor: dark ? `rgba(255,255,255,${alpha})` : `rgba(0,0,0,${alpha})`,\n }\n}\n"],"names":["WATERMARK_FIELDS","WATERMARK_TIME_FORMATS","WATERMARK_LIMITS","DEFAULT_WATERMARK","WATERMARK_KEY","WATERMARK_KEYS","clampInt","raw","fallback","min","max","n","oneOf","v","all","normalizeWatermarkFields","list","s","f","normalizeWatermark","d","r","text","watermarkFromValues","values","k","pad","formatWatermarkTime","format","map","t","watermarkParts","who","now","value","_a","x","GAP","buildWatermarkProps","dark","parts","lines","lineHeight","textWidth","line","w","c","width","height","rad","cos","sin","corners","xs","ys","minX","minY","boxW","boxH","tx","ty","gap","alpha"],"mappings":"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"}
@@ -77,10 +77,12 @@ declare const _default: {
77
77
  comfortable: string;
78
78
  compact: string;
79
79
  language: string;
80
- loginStyle: string;
81
80
  collapse: string;
82
81
  openMenu: string;
83
82
  switchModule: string;
83
+ appearance: string;
84
+ back: string;
85
+ forward: string;
84
86
  logout: string;
85
87
  personalCenter: string;
86
88
  clearCache: string;
@@ -110,6 +112,17 @@ declare const _default: {
110
112
  auto: string;
111
113
  themeColor: string;
112
114
  custom: string;
115
+ accentName: {
116
+ blue: string;
117
+ indigo: string;
118
+ purple: string;
119
+ teal: string;
120
+ green: string;
121
+ graphite: string;
122
+ custom: string;
123
+ };
124
+ accentDemoButton: string;
125
+ accentDemoLink: string;
113
126
  layout: string;
114
127
  layoutVertical: string;
115
128
  layoutVerticalMix: string;
@@ -118,6 +131,9 @@ declare const _default: {
118
131
  layoutTopHybridSidebarFirst: string;
119
132
  layoutTopHybridHeaderFirst: string;
120
133
  interface: string;
134
+ formStyle: string;
135
+ formStyleModal: string;
136
+ formStyleDrawer: string;
121
137
  showBreadcrumb: string;
122
138
  showTabs: string;
123
139
  fixedHeader: string;
@@ -125,19 +141,17 @@ declare const _default: {
125
141
  transitionNone: string;
126
142
  transitionFade: string;
127
143
  transitionFadeSlide: string;
128
- grayscale: string;
129
- watermark: string;
130
- watermarkText: string;
131
- watermarkPlaceholder: string;
132
- formStyle: string;
133
- formStyleModal: string;
134
- formStyleDrawer: string;
135
144
  resetConfirm: string;
136
145
  copyConfig: string;
137
146
  configCopied: string;
138
147
  searchPlaceholder: string;
139
148
  searchEmpty: string;
140
149
  searchHint: string;
150
+ descBreadcrumb: string;
151
+ descTabs: string;
152
+ descFixedHeader: string;
153
+ descPageTransition: string;
154
+ descCollapse: string;
141
155
  };
142
156
  tabs: {
143
157
  refresh: string;
@@ -199,9 +213,9 @@ declare const _default: {
199
213
  ssoDingtalk: string;
200
214
  sso: string;
201
215
  ssoComingSoon: string;
202
- skinAurora: string;
203
- skinSplit: string;
204
- skinSpotlight: string;
216
+ layoutLabel: string;
217
+ layoutToSolo: string;
218
+ layoutToSplit: string;
205
219
  };
206
220
  module: {
207
221
  choose: string;
@@ -226,6 +240,7 @@ declare const _default: {
226
240
  editTitle: string;
227
241
  deleteConfirm: string;
228
242
  disableConfirm: string;
243
+ builtinNoDisable: string;
229
244
  saved: string;
230
245
  deleted: string;
231
246
  };
@@ -284,6 +299,138 @@ declare const _default: {
284
299
  saved: string;
285
300
  deleted: string;
286
301
  };
302
+ menuTitle: {
303
+ module: {
304
+ system: string;
305
+ business: string;
306
+ };
307
+ catalog: {
308
+ org: string;
309
+ ops: string;
310
+ schedule: string;
311
+ audit: string;
312
+ ai: string;
313
+ };
314
+ page: {
315
+ workbench: string;
316
+ org: string;
317
+ position: string;
318
+ user: string;
319
+ role: string;
320
+ config: string;
321
+ dict: string;
322
+ menu: string;
323
+ module: string;
324
+ notice: string;
325
+ recycle: string;
326
+ monitor: string;
327
+ cache: string;
328
+ apiDocs: string;
329
+ job: string;
330
+ jobLog: string;
331
+ jobMonitor: string;
332
+ loginLog: string;
333
+ opLog: string;
334
+ exceptionLog: string;
335
+ session: string;
336
+ file: string;
337
+ aiModel: string;
338
+ aiUsage: string;
339
+ };
340
+ button: {
341
+ orgQuery: string;
342
+ orgCreate: string;
343
+ orgUpdate: string;
344
+ orgDelete: string;
345
+ orgCopy: string;
346
+ positionQuery: string;
347
+ positionCreate: string;
348
+ positionUpdate: string;
349
+ positionDelete: string;
350
+ userQuery: string;
351
+ userCreate: string;
352
+ userUpdate: string;
353
+ userDelete: string;
354
+ userResetPassword: string;
355
+ userToggle: string;
356
+ userImport: string;
357
+ userExport: string;
358
+ roleQuery: string;
359
+ roleCreate: string;
360
+ roleUpdate: string;
361
+ roleDelete: string;
362
+ roleGrantMenus: string;
363
+ roleDataScope: string;
364
+ roleGrantUsers: string;
365
+ ping: string;
366
+ configQuery: string;
367
+ configCreate: string;
368
+ configUpdate: string;
369
+ configDelete: string;
370
+ configUploadLogo: string;
371
+ sensitiveQuery: string;
372
+ sensitiveCreate: string;
373
+ sensitiveDelete: string;
374
+ mfaClear: string;
375
+ dictTypeQuery: string;
376
+ dictTypeCreate: string;
377
+ dictTypeUpdate: string;
378
+ dictTypeDelete: string;
379
+ dictItemQuery: string;
380
+ dictItemCreate: string;
381
+ dictItemUpdate: string;
382
+ dictItemDelete: string;
383
+ menuQuery: string;
384
+ menuCreate: string;
385
+ menuUpdate: string;
386
+ menuDelete: string;
387
+ moduleQuery: string;
388
+ moduleCreate: string;
389
+ moduleUpdate: string;
390
+ moduleDelete: string;
391
+ noticeQuery: string;
392
+ noticePublish: string;
393
+ noticeDelete: string;
394
+ recycleQuery: string;
395
+ recyclePurge: string;
396
+ recycleRestore: string;
397
+ monitorQuery: string;
398
+ cacheFlushAuth: string;
399
+ cacheFlushDict: string;
400
+ cacheFlushConfig: string;
401
+ cacheRebuildPortal: string;
402
+ apiDocsView: string;
403
+ jobQuery: string;
404
+ jobCreate: string;
405
+ jobUpdate: string;
406
+ jobDelete: string;
407
+ jobToggle: string;
408
+ jobRun: string;
409
+ jobLogQuery: string;
410
+ jobLogKill: string;
411
+ jobLogClear: string;
412
+ jobMonitorQuery: string;
413
+ loginLogQuery: string;
414
+ loginLogClear: string;
415
+ opLogQuery: string;
416
+ opLogClear: string;
417
+ opLogExport: string;
418
+ exceptionLogQuery: string;
419
+ exceptionLogClear: string;
420
+ sessionQuery: string;
421
+ sessionKick: string;
422
+ fileQuery: string;
423
+ fileUpload: string;
424
+ fileDelete: string;
425
+ fileDownload: string;
426
+ aiProviderQuery: string;
427
+ aiProviderCreate: string;
428
+ aiProviderUpdate: string;
429
+ aiProviderDelete: string;
430
+ aiProviderTest: string;
431
+ aiUsageQuery: string;
432
+ };
433
+ };
287
434
  iconPicker: {
288
435
  placeholder: string;
289
436
  title: string;
@@ -305,8 +452,11 @@ declare const _default: {
305
452
  fixedNone: string;
306
453
  expand: string;
307
454
  collapse: string;
455
+ total: string;
308
456
  zoom: string;
309
457
  zoomExit: string;
458
+ filterFallback: string;
459
+ filterTruncated: string;
310
460
  };
311
461
  workbench: {
312
462
  welcome: string;
@@ -352,6 +502,7 @@ declare const _default: {
352
502
  passwordHint: string;
353
503
  org: string;
354
504
  allOrgs: string;
505
+ orgFilter: string;
355
506
  orgPlaceholder: string;
356
507
  position: string;
357
508
  positionPlaceholder: string;
@@ -528,8 +679,9 @@ declare const _default: {
528
679
  leaveConfirm: string;
529
680
  tab: {
530
681
  brand: string;
531
- security: string;
532
682
  signin: string;
683
+ security: string;
684
+ watermark: string;
533
685
  sensitive: string;
534
686
  upload: string;
535
687
  job: string;
@@ -545,6 +697,41 @@ declare const _default: {
545
697
  copyrightPh: string;
546
698
  copyrightUrlHint: string;
547
699
  };
700
+ watermark: {
701
+ desc: string;
702
+ groupContent: string;
703
+ groupStyle: string;
704
+ enable: string;
705
+ enableHint: string;
706
+ content: string;
707
+ contentHint: string;
708
+ contentEmpty: string;
709
+ field: {
710
+ name: string;
711
+ account: string;
712
+ org: string;
713
+ phone: string;
714
+ time: string;
715
+ text: string;
716
+ };
717
+ text: string;
718
+ textHint: string;
719
+ textPlaceholder: string;
720
+ timeFormat: string;
721
+ layout: string;
722
+ layoutSingle: string;
723
+ layoutMulti: string;
724
+ fontSize: string;
725
+ opacity: string;
726
+ opacityHint: string;
727
+ rotate: string;
728
+ density: string;
729
+ sparse: string;
730
+ normal: string;
731
+ dense: string;
732
+ cross: string;
733
+ crossHint: string;
734
+ };
548
735
  logo: {
549
736
  title: string;
550
737
  edit: string;
@@ -572,6 +759,8 @@ declare const _default: {
572
759
  days: string;
573
760
  off: string;
574
761
  sep: string;
762
+ expand: string;
763
+ collapse: string;
575
764
  req: {
576
765
  upper: string;
577
766
  lower: string;
@@ -841,6 +1030,7 @@ declare const _default: {
841
1030
  };
842
1031
  dict: {
843
1032
  title: string;
1033
+ typeTitle: string;
844
1034
  code: string;
845
1035
  name: string;
846
1036
  searchName: string;
@@ -865,6 +1055,9 @@ declare const _default: {
865
1055
  itemDeleteConfirm: string;
866
1056
  itemSaved: string;
867
1057
  itemDeleted: string;
1058
+ codeImmutable: string;
1059
+ itemsSheetTitle: string;
1060
+ selectItem: string;
868
1061
  };
869
1062
  org: {
870
1063
  title: string;
@@ -878,6 +1071,7 @@ declare const _default: {
878
1071
  parentPlaceholder: string;
879
1072
  nameRequired: string;
880
1073
  codePlaceholder: string;
1074
+ codeImmutableHint: string;
881
1075
  addChild: string;
882
1076
  addTitle: string;
883
1077
  editTitle: string;
@@ -1012,6 +1206,7 @@ declare const _default: {
1012
1206
  name: string;
1013
1207
  sort: string;
1014
1208
  codePlaceholder: string;
1209
+ codeImmutableHint: string;
1015
1210
  nameRequired: string;
1016
1211
  addTitle: string;
1017
1212
  editTitle: string;
@@ -1041,10 +1236,17 @@ declare const _default: {
1041
1236
  deleted: string;
1042
1237
  grantMenus: string;
1043
1238
  grantSaved: string;
1044
- catalog: string;
1045
- menuCol: string;
1046
- buttonsCol: string;
1047
1239
  apiOnlyRow: string;
1240
+ grantSearch: string;
1241
+ grantSearchClear: string;
1242
+ grantSelectAll: string;
1243
+ noButtons: string;
1244
+ grantNoMatch: string;
1245
+ grantNoMatchElsewhere: string;
1246
+ grantNoMenus: string;
1247
+ grantSummary: string;
1248
+ grantSummarySplit: string;
1249
+ grantUnsaved: string;
1048
1250
  dataScope: string;
1049
1251
  scopeType: string;
1050
1252
  customOrgs: string;
@@ -1229,6 +1431,7 @@ declare const _default: {
1229
1431
  killed: string;
1230
1432
  clear: string;
1231
1433
  clearTitle: string;
1434
+ clearRange: string;
1232
1435
  clearAll: string;
1233
1436
  beforeDays: string;
1234
1437
  clearHint: string;
@@ -1316,6 +1519,7 @@ declare const _default: {
1316
1519
  enabled: string;
1317
1520
  disabled: string;
1318
1521
  pendingConfigTip: string;
1522
+ pendingConfig: string;
1319
1523
  provider: {
1320
1524
  code: string;
1321
1525
  codePlaceholder: string;
@@ -1358,6 +1562,7 @@ declare const _default: {
1358
1562
  atLeastOne: string;
1359
1563
  duplicateName: string;
1360
1564
  noDefault: string;
1565
+ defaultUniqueHint: string;
1361
1566
  };
1362
1567
  test: {
1363
1568
  action: string;
@@ -1711,6 +1916,7 @@ declare const _default: {
1711
1916
  copyToken: string;
1712
1917
  copyTokenHint: string;
1713
1918
  tokenCopied: string;
1919
+ tokenWarn: string;
1714
1920
  };
1715
1921
  userExport: {
1716
1922
  account: string;