smart-admin-web 10.14.0 → 10.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/README.md +6 -6
  2. package/dist/api/index.d.ts +41 -2
  3. package/dist/api/index.js +36 -15
  4. package/dist/api/index.js.map +1 -1
  5. package/dist/api/schema.d.ts +418 -6
  6. package/dist/assets/icons/ph-subset.json.js +7 -7
  7. package/dist/assets/smart-logo.svg.js +5 -0
  8. package/dist/assets/smart-logo.svg.js.map +1 -0
  9. package/dist/components/AppIcon.vue.js +9 -9
  10. package/dist/components/AppIcon.vue.js.map +1 -1
  11. package/dist/components/AppWatermark.vue.d.ts +14 -0
  12. package/dist/components/AppWatermark.vue.js +38 -0
  13. package/dist/components/AppWatermark.vue.js.map +1 -0
  14. package/dist/components/AppWatermark2.vue.js +5 -0
  15. package/dist/components/AppWatermark2.vue.js.map +1 -0
  16. package/dist/components/Chart/PieChart.vue.d.ts +1 -1
  17. package/dist/components/Chart/echarts.js +15 -20
  18. package/dist/components/Chart/echarts.js.map +1 -1
  19. package/dist/components/CronEditor/index.vue.js +1 -1
  20. package/dist/components/CronEditor/index2.vue.js +2 -1
  21. package/dist/components/CronEditor/index2.vue.js.map +1 -1
  22. package/dist/components/DetailPage/index.vue.js +2 -2
  23. package/dist/components/DetailPage/index2.vue.js.map +1 -1
  24. package/dist/components/DictTag/index.vue.js.map +1 -1
  25. package/dist/components/ErrorBoundary/index.vue.js +2 -2
  26. package/dist/components/ErrorBoundary/index2.vue.js +1 -1
  27. package/dist/components/ErrorBoundary/index2.vue.js.map +1 -1
  28. package/dist/components/FormContainer/index.vue.js +91 -56
  29. package/dist/components/FormContainer/index.vue.js.map +1 -1
  30. package/dist/components/ImportWizard/index.vue.js +1 -1
  31. package/dist/components/ImportWizard/index2.vue.js +44 -41
  32. package/dist/components/ImportWizard/index2.vue.js.map +1 -1
  33. package/dist/components/MenuSearch.vue.js +2 -2
  34. package/dist/components/MenuSearch2.vue.js +19 -18
  35. package/dist/components/MenuSearch2.vue.js.map +1 -1
  36. package/dist/components/PasswordStrength/index.vue.js +2 -2
  37. package/dist/components/PasswordStrength/index2.vue.js +20 -18
  38. package/dist/components/PasswordStrength/index2.vue.js.map +1 -1
  39. package/dist/components/SmartLogo.vue.d.ts +3 -0
  40. package/dist/components/SmartLogo.vue.js +1 -1
  41. package/dist/components/SmartLogo2.vue.js +22 -64
  42. package/dist/components/SmartLogo2.vue.js.map +1 -1
  43. package/dist/{views/system/config/components/GroupExtraConfig.vue.d.ts → components/TableTotal/index.vue.d.ts} +1 -4
  44. package/dist/components/{SelectTable → TableTotal}/index.vue.js +1 -1
  45. package/dist/components/TableTotal/index2.vue.js +16 -0
  46. package/dist/components/TableTotal/index2.vue.js.map +1 -0
  47. package/dist/components/TableZoomButton/index.vue.js.map +1 -1
  48. package/dist/components/UserPicker/index.vue.js +2 -2
  49. package/dist/components/UserPicker/index2.vue.js +176 -117
  50. package/dist/components/UserPicker/index2.vue.js.map +1 -1
  51. package/dist/composables/useBatchDelete.js.map +1 -1
  52. package/dist/composables/useLayoutMenu.js +17 -16
  53. package/dist/composables/useLayoutMenu.js.map +1 -1
  54. package/dist/composables/useLoginHero.d.ts +2 -0
  55. package/dist/composables/useLoginHero.js +22 -0
  56. package/dist/composables/useLoginHero.js.map +1 -0
  57. package/dist/composables/useModule.js +39 -29
  58. package/dist/composables/useModule.js.map +1 -1
  59. package/dist/composables/usePageTitle.js +16 -14
  60. package/dist/composables/usePageTitle.js.map +1 -1
  61. package/dist/composables/useShellBreakpoint.d.ts +19 -0
  62. package/dist/composables/useShellBreakpoint.js +37 -0
  63. package/dist/composables/useShellBreakpoint.js.map +1 -0
  64. package/dist/composables/useSite.d.ts +20 -0
  65. package/dist/composables/useSite.js +18 -13
  66. package/dist/composables/useSite.js.map +1 -1
  67. package/dist/composables/useTabTitle.js.map +1 -1
  68. package/dist/composables/useTableTitle.d.ts +6 -0
  69. package/dist/composables/useTableTitle.js +11 -0
  70. package/dist/composables/useTableTitle.js.map +1 -0
  71. package/dist/composables/useTableZoom.d.ts +5 -0
  72. package/dist/composables/useTableZoom.js.map +1 -1
  73. package/dist/composables/useTheme.d.ts +2 -2
  74. package/dist/composables/useTheme.js +23 -20
  75. package/dist/composables/useTheme.js.map +1 -1
  76. package/dist/createSmartAdmin.d.ts +12 -2
  77. package/dist/createSmartAdmin.js +72 -60
  78. package/dist/createSmartAdmin.js.map +1 -1
  79. package/dist/index.d.ts +5 -2
  80. package/dist/index.js +223 -208
  81. package/dist/index.js.map +1 -1
  82. package/dist/layouts/AccentPicker.vue.js +8 -0
  83. package/dist/layouts/AccentPicker.vue.js.map +1 -0
  84. package/dist/layouts/AccentPicker2.vue.js +131 -0
  85. package/dist/layouts/AccentPicker2.vue.js.map +1 -0
  86. package/dist/layouts/AppHeader.vue.d.ts +8 -1
  87. package/dist/layouts/AppHeader.vue.js +2 -2
  88. package/dist/layouts/AppHeader2.vue.js +317 -235
  89. package/dist/layouts/AppHeader2.vue.js.map +1 -1
  90. package/dist/layouts/NoticeBell.vue.js +2 -2
  91. package/dist/layouts/NoticeBell2.vue.js +1 -1
  92. package/dist/layouts/NoticeBell2.vue.js.map +1 -1
  93. package/dist/layouts/PersonalLayout.vue.js +2 -2
  94. package/dist/layouts/PersonalLayout2.vue.js +69 -47
  95. package/dist/layouts/PersonalLayout2.vue.js.map +1 -1
  96. package/dist/layouts/SettingsDrawer.vue.js +3 -3
  97. package/dist/layouts/SettingsDrawer2.vue.js +261 -325
  98. package/dist/layouts/SettingsDrawer2.vue.js.map +1 -1
  99. package/dist/layouts/TabsBar.vue.js +2 -2
  100. package/dist/layouts/TabsBar2.vue.js +97 -69
  101. package/dist/layouts/TabsBar2.vue.js.map +1 -1
  102. package/dist/layouts/components/SideNav.vue.d.ts +3 -0
  103. package/dist/layouts/components/SideNav.vue.js +1 -1
  104. package/dist/layouts/components/SideNav2.vue.js +54 -26
  105. package/dist/layouts/components/SideNav2.vue.js.map +1 -1
  106. package/dist/layouts/default.vue.js +1 -1
  107. package/dist/layouts/default2.vue.js +170 -140
  108. package/dist/layouts/default2.vue.js.map +1 -1
  109. package/dist/lib/favicon.d.ts +1 -0
  110. package/dist/lib/favicon.js +12 -0
  111. package/dist/lib/favicon.js.map +1 -0
  112. package/dist/lib/loginHero.d.ts +16 -0
  113. package/dist/lib/loginHero.js +33 -0
  114. package/dist/lib/loginHero.js.map +1 -0
  115. package/dist/lib/logoCrop.d.ts +25 -0
  116. package/dist/lib/logoCrop.js +22 -0
  117. package/dist/lib/logoCrop.js.map +1 -0
  118. package/dist/lib/runtime.d.ts +2 -0
  119. package/dist/lib/runtime.js +1 -1
  120. package/dist/lib/runtime.js.map +1 -1
  121. package/dist/lib/securityRules.d.ts +26 -0
  122. package/dist/lib/securityRules.js +86 -0
  123. package/dist/lib/securityRules.js.map +1 -0
  124. package/dist/lib/watermark.d.ts +110 -0
  125. package/dist/lib/watermark.js +151 -0
  126. package/dist/lib/watermark.js.map +1 -0
  127. package/dist/locales/en-US.d.ts +462 -42
  128. package/dist/locales/en-US.js +491 -78
  129. package/dist/locales/en-US.js.map +1 -1
  130. package/dist/locales/kernelMenuTitles.d.ts +1 -0
  131. package/dist/locales/kernelMenuTitles.js +128 -0
  132. package/dist/locales/kernelMenuTitles.js.map +1 -0
  133. package/dist/locales/menuTitle.d.ts +3 -0
  134. package/dist/locales/menuTitle.js +14 -12
  135. package/dist/locales/menuTitle.js.map +1 -1
  136. package/dist/locales/zh-CN.d.ts +462 -42
  137. package/dist/locales/zh-CN.js +490 -81
  138. package/dist/locales/zh-CN.js.map +1 -1
  139. package/dist/router/index.js +41 -32
  140. package/dist/router/index.js.map +1 -1
  141. package/dist/router/namedPage.d.ts +4 -0
  142. package/dist/router/namedPage.js +7 -7
  143. package/dist/router/namedPage.js.map +1 -1
  144. package/dist/router/viewRegistry.js +12 -12
  145. package/dist/router/viewRegistry.js.map +1 -1
  146. package/dist/stores/app.d.ts +0 -12
  147. package/dist/stores/app.js +11 -12
  148. package/dist/stores/app.js.map +1 -1
  149. package/dist/stores/tabs.js.map +1 -1
  150. package/dist/stores/user.d.ts +10 -0
  151. package/dist/stores/user.js.map +1 -1
  152. package/dist/style.css +1 -1
  153. package/dist/theme/accentTokens.d.ts +27 -0
  154. package/dist/theme/accentTokens.js +54 -0
  155. package/dist/theme/accentTokens.js.map +1 -0
  156. package/dist/theme/accents.d.ts +21 -1
  157. package/dist/theme/accents.js +11 -2
  158. package/dist/theme/accents.js.map +1 -1
  159. package/dist/theme/mix.d.ts +58 -7
  160. package/dist/theme/mix.js +115 -30
  161. package/dist/theme/mix.js.map +1 -1
  162. package/dist/theme/naive-theme.d.ts +5 -2
  163. package/dist/theme/naive-theme.js +405 -75
  164. package/dist/theme/naive-theme.js.map +1 -1
  165. package/dist/utils/jwt.d.ts +8 -0
  166. package/dist/utils/jwt.js +14 -0
  167. package/dist/utils/jwt.js.map +1 -0
  168. package/dist/utils/menuIcon.d.ts +2 -0
  169. package/dist/utils/menuIcon.js +8 -0
  170. package/dist/utils/menuIcon.js.map +1 -0
  171. package/dist/utils/oauthBrand.d.ts +34 -9
  172. package/dist/utils/oauthBrand.js +70 -74
  173. package/dist/utils/oauthBrand.js.map +1 -1
  174. package/dist/utils/tableFilter.d.ts +88 -0
  175. package/dist/utils/tableFilter.js +116 -0
  176. package/dist/utils/tableFilter.js.map +1 -0
  177. package/dist/utils/tableToolbar.d.ts +18 -0
  178. package/dist/utils/tableToolbar.js +11 -0
  179. package/dist/utils/tableToolbar.js.map +1 -0
  180. package/dist/utils/treeFilter.d.ts +20 -0
  181. package/dist/utils/treeFilter.js +24 -0
  182. package/dist/utils/treeFilter.js.map +1 -0
  183. package/dist/views/dashboard/ShortcutPicker.vue.js +1 -1
  184. package/dist/views/dashboard/ShortcutPicker2.vue.js +73 -48
  185. package/dist/views/dashboard/ShortcutPicker2.vue.js.map +1 -1
  186. package/dist/views/dashboard/biz.vue.js +1 -1
  187. package/dist/views/dashboard/biz2.vue.js +310 -257
  188. package/dist/views/dashboard/biz2.vue.js.map +1 -1
  189. package/dist/views/dashboard/workbench.vue.js +2 -2
  190. package/dist/views/dashboard/workbench2.vue.js +141 -155
  191. package/dist/views/dashboard/workbench2.vue.js.map +1 -1
  192. package/dist/views/embed/iframe.vue.js +2 -2
  193. package/dist/views/embed/iframe2.vue.js +22 -15
  194. package/dist/views/embed/iframe2.vue.js.map +1 -1
  195. package/dist/views/error/404.vue.js +2 -2
  196. package/dist/views/error/4042.vue.js +33 -24
  197. package/dist/views/error/4042.vue.js.map +1 -1
  198. package/dist/views/error/BootError.vue.js +1 -1
  199. package/dist/views/error/BootError2.vue.js +59 -48
  200. package/dist/views/error/BootError2.vue.js.map +1 -1
  201. package/dist/views/error/MissingRoute.vue.js +2 -2
  202. package/dist/views/error/MissingRoute2.vue.js +34 -15
  203. package/dist/views/error/MissingRoute2.vue.js.map +1 -1
  204. package/dist/views/login/LoginForm.vue.d.ts +7 -1
  205. package/dist/views/login/LoginForm.vue.js +2 -2
  206. package/dist/views/login/LoginForm2.vue.js +580 -488
  207. package/dist/views/login/LoginForm2.vue.js.map +1 -1
  208. package/dist/views/login/components/LoginDesk.vue.d.ts +36 -0
  209. package/dist/views/login/components/LoginDesk.vue.js +9 -0
  210. package/dist/views/login/components/LoginDesk.vue.js.map +1 -0
  211. package/dist/views/login/components/LoginDesk2.vue.js +100 -0
  212. package/dist/views/login/components/LoginDesk2.vue.js.map +1 -0
  213. package/dist/views/login/components/LoginHeroPanel.vue.d.ts +18 -0
  214. package/dist/views/login/components/LoginHeroPanel.vue.js +8 -0
  215. package/dist/views/login/components/LoginHeroPanel.vue.js.map +1 -0
  216. package/dist/views/login/components/LoginHeroPanel2.vue.js +61 -0
  217. package/dist/views/login/components/LoginHeroPanel2.vue.js.map +1 -0
  218. package/dist/views/login/index.vue.js +1 -1
  219. package/dist/views/login/index2.vue.js +141 -71
  220. package/dist/views/login/index2.vue.js.map +1 -1
  221. package/dist/views/login/layout.d.ts +11 -0
  222. package/dist/views/login/layout.js +27 -0
  223. package/dist/views/login/layout.js.map +1 -0
  224. package/dist/views/mfa/index.vue.js +2 -2
  225. package/dist/views/mfa/index2.vue.js +367 -321
  226. package/dist/views/mfa/index2.vue.js.map +1 -1
  227. package/dist/views/module/index.vue.js +2 -2
  228. package/dist/views/module/index2.vue.js +132 -99
  229. package/dist/views/module/index2.vue.js.map +1 -1
  230. package/dist/views/oauth/callback.vue.js +2 -2
  231. package/dist/views/oauth/callback2.vue.js +65 -51
  232. package/dist/views/oauth/callback2.vue.js.map +1 -1
  233. package/dist/views/personal/bindings.vue.js +2 -2
  234. package/dist/views/personal/bindings2.vue.js +98 -94
  235. package/dist/views/personal/bindings2.vue.js.map +1 -1
  236. package/dist/views/personal/notice2.vue.js +103 -76
  237. package/dist/views/personal/notice2.vue.js.map +1 -1
  238. package/dist/views/personal/password2.vue.js +47 -40
  239. package/dist/views/personal/password2.vue.js.map +1 -1
  240. package/dist/views/personal/profile.vue.js +3 -3
  241. package/dist/views/personal/profile2.vue.js +24 -18
  242. package/dist/views/personal/profile2.vue.js.map +1 -1
  243. package/dist/views/personal/security.vue.js +2 -2
  244. package/dist/views/personal/security2.vue.js +65 -53
  245. package/dist/views/personal/security2.vue.js.map +1 -1
  246. package/dist/views/personal/sessions.vue.js +2 -2
  247. package/dist/views/personal/sessions2.vue.js +67 -62
  248. package/dist/views/personal/sessions2.vue.js.map +1 -1
  249. package/dist/views/system/ai-model/components/ProviderCard.vue.js +2 -2
  250. package/dist/views/system/ai-model/components/ProviderCard2.vue.js +142 -130
  251. package/dist/views/system/ai-model/components/ProviderCard2.vue.js.map +1 -1
  252. package/dist/views/system/ai-model/components/ProviderForm.vue.js +2 -2
  253. package/dist/views/system/ai-model/components/ProviderForm2.vue.js +71 -70
  254. package/dist/views/system/ai-model/components/ProviderForm2.vue.js.map +1 -1
  255. package/dist/views/system/ai-model/index.vue.js +2 -2
  256. package/dist/views/system/ai-model/index2.vue.js +99 -99
  257. package/dist/views/system/ai-model/index2.vue.js.map +1 -1
  258. package/dist/views/system/ai-model/presets.d.ts +1 -1
  259. package/dist/views/system/ai-model/presets.js +18 -18
  260. package/dist/views/system/ai-model/presets.js.map +1 -1
  261. package/dist/views/system/ai-usage/index.vue.js +2 -2
  262. package/dist/views/system/ai-usage/index2.vue.js +356 -258
  263. package/dist/views/system/ai-usage/index2.vue.js.map +1 -1
  264. package/dist/views/system/api-docs/index.vue.js +5 -2
  265. package/dist/views/system/api-docs/index.vue.js.map +1 -1
  266. package/dist/views/system/api-docs/index2.vue.js +92 -42
  267. package/dist/views/system/api-docs/index2.vue.js.map +1 -1
  268. package/dist/views/system/cache/index.vue.js +2 -2
  269. package/dist/views/system/cache/index2.vue.js +74 -80
  270. package/dist/views/system/cache/index2.vue.js.map +1 -1
  271. package/dist/views/system/config/components/AdminMock.vue.js +8 -0
  272. package/dist/views/system/config/components/AdminMock.vue.js.map +1 -0
  273. package/dist/views/system/config/components/AdminMock2.vue.js +93 -0
  274. package/dist/views/system/config/components/AdminMock2.vue.js.map +1 -0
  275. package/dist/views/system/config/components/AdvancedSection.vue.js +8 -0
  276. package/dist/views/system/config/components/AdvancedSection.vue.js.map +1 -0
  277. package/dist/views/system/config/components/AdvancedSection2.vue.js +163 -0
  278. package/dist/views/system/config/components/AdvancedSection2.vue.js.map +1 -0
  279. package/dist/views/system/config/components/BrandSection.vue.d.ts +7 -0
  280. package/dist/views/system/config/components/BrandSection.vue.js +8 -0
  281. package/dist/views/system/config/components/BrandSection.vue.js.map +1 -0
  282. package/dist/views/system/config/components/BrandSection2.vue.js +266 -0
  283. package/dist/views/system/config/components/BrandSection2.vue.js.map +1 -0
  284. package/dist/views/system/config/components/CfgGroup.vue.d.ts +18 -0
  285. package/dist/views/system/config/components/CfgGroup.vue.js +8 -0
  286. package/dist/views/system/config/components/CfgGroup.vue.js.map +1 -0
  287. package/dist/views/system/config/components/CfgGroup2.vue.js +22 -0
  288. package/dist/views/system/config/components/CfgGroup2.vue.js.map +1 -0
  289. package/dist/views/system/config/components/CfgRow.vue.d.ts +26 -0
  290. package/dist/views/system/config/components/CfgRow.vue.js +9 -0
  291. package/dist/views/system/config/components/CfgRow.vue.js.map +1 -0
  292. package/dist/views/system/config/components/CfgRow2.vue.js +54 -0
  293. package/dist/views/system/config/components/CfgRow2.vue.js.map +1 -0
  294. package/dist/views/system/config/components/CfgSegment.vue.d.ts +28 -0
  295. package/dist/views/system/config/components/CfgSegment.vue.js +8 -0
  296. package/dist/views/system/config/components/CfgSegment.vue.js.map +1 -0
  297. package/dist/views/system/config/components/CfgSegment2.vue.js +45 -0
  298. package/dist/views/system/config/components/CfgSegment2.vue.js.map +1 -0
  299. package/dist/views/system/config/components/ConfigFormModal.vue.js +4 -1
  300. package/dist/views/system/config/components/ConfigFormModal.vue.js.map +1 -1
  301. package/dist/views/system/config/components/ConfigFormModal2.vue.js +72 -60
  302. package/dist/views/system/config/components/ConfigFormModal2.vue.js.map +1 -1
  303. package/dist/views/system/config/components/JobSection.vue.js +8 -0
  304. package/dist/views/system/config/components/JobSection.vue.js.map +1 -0
  305. package/dist/views/system/config/components/JobSection2.vue.js +140 -0
  306. package/dist/views/system/config/components/JobSection2.vue.js.map +1 -0
  307. package/dist/views/system/config/components/LoginMock.vue.d.ts +8 -0
  308. package/dist/views/system/config/components/LoginMock.vue.js +8 -0
  309. package/dist/views/system/config/components/LoginMock.vue.js.map +1 -0
  310. package/dist/views/system/config/components/LoginMock2.vue.js +132 -0
  311. package/dist/views/system/config/components/LoginMock2.vue.js.map +1 -0
  312. package/dist/views/system/config/components/LogoCropper.vue.d.ts +10 -0
  313. package/dist/views/system/config/components/LogoCropper.vue.js +8 -0
  314. package/dist/views/system/config/components/LogoCropper.vue.js.map +1 -0
  315. package/dist/views/system/config/components/LogoCropper2.vue.js +122 -0
  316. package/dist/views/system/config/components/LogoCropper2.vue.js.map +1 -0
  317. package/dist/views/system/config/components/LogoEditor.vue.js +8 -0
  318. package/dist/views/system/config/components/LogoEditor.vue.js.map +1 -0
  319. package/dist/views/system/config/components/LogoEditor2.vue.js +161 -0
  320. package/dist/views/system/config/components/LogoEditor2.vue.js.map +1 -0
  321. package/dist/views/system/config/components/ProviderSheet.vue.d.ts +17 -0
  322. package/dist/views/system/config/components/ProviderSheet.vue.js +8 -0
  323. package/dist/views/system/config/components/ProviderSheet.vue.js.map +1 -0
  324. package/dist/views/system/config/components/ProviderSheet2.vue.js +343 -0
  325. package/dist/views/system/config/components/ProviderSheet2.vue.js.map +1 -0
  326. package/dist/{layouts/SettingRow.vue.d.ts → views/system/config/components/ScaleToFit.vue.d.ts} +2 -1
  327. package/dist/views/system/config/components/ScaleToFit.vue.js +8 -0
  328. package/dist/views/system/config/components/ScaleToFit.vue.js.map +1 -0
  329. package/dist/views/system/config/components/ScaleToFit2.vue.js +41 -0
  330. package/dist/views/system/config/components/ScaleToFit2.vue.js.map +1 -0
  331. package/dist/views/system/config/components/SectionLayout.vue.d.ts +30 -0
  332. package/dist/views/system/config/components/SectionLayout.vue.js +8 -0
  333. package/dist/views/system/config/components/SectionLayout.vue.js.map +1 -0
  334. package/dist/views/system/config/components/SectionLayout2.vue.js +69 -0
  335. package/dist/views/system/config/components/SectionLayout2.vue.js.map +1 -0
  336. package/dist/views/system/config/components/SecuritySection.vue.js +8 -0
  337. package/dist/views/system/config/components/SecuritySection.vue.js.map +1 -0
  338. package/dist/views/system/config/components/SecuritySection2.vue.js +417 -0
  339. package/dist/views/system/config/components/SecuritySection2.vue.js.map +1 -0
  340. package/dist/views/system/config/components/SensitiveSection.vue.js +8 -0
  341. package/dist/views/system/config/components/SensitiveSection.vue.js.map +1 -0
  342. package/dist/views/system/config/components/SensitiveSection2.vue.js +214 -0
  343. package/dist/views/system/config/components/SensitiveSection2.vue.js.map +1 -0
  344. package/dist/views/system/config/components/SigninSection.vue.js +8 -0
  345. package/dist/views/system/config/components/SigninSection.vue.js.map +1 -0
  346. package/dist/views/system/config/components/SigninSection2.vue.js +201 -0
  347. package/dist/views/system/config/components/SigninSection2.vue.js.map +1 -0
  348. package/dist/views/system/config/components/UploadSection.vue.js +8 -0
  349. package/dist/views/system/config/components/UploadSection.vue.js.map +1 -0
  350. package/dist/views/system/config/components/UploadSection2.vue.js +176 -0
  351. package/dist/views/system/config/components/UploadSection2.vue.js.map +1 -0
  352. package/dist/views/system/config/components/WatermarkSection.vue.js +8 -0
  353. package/dist/views/system/config/components/WatermarkSection.vue.js.map +1 -0
  354. package/dist/views/system/config/components/WatermarkSection2.vue.js +284 -0
  355. package/dist/views/system/config/components/WatermarkSection2.vue.js.map +1 -0
  356. package/dist/views/system/config/draft.d.ts +148 -0
  357. package/dist/views/system/config/draft.js +170 -0
  358. package/dist/views/system/config/draft.js.map +1 -0
  359. package/dist/views/system/config/flash.d.ts +2 -0
  360. package/dist/views/system/config/flash.js +9 -0
  361. package/dist/views/system/config/flash.js.map +1 -0
  362. package/dist/views/system/config/groups.d.ts +38 -7
  363. package/dist/views/system/config/groups.js +104 -14
  364. package/dist/views/system/config/groups.js.map +1 -1
  365. package/dist/views/system/config/index.vue.js +6 -2
  366. package/dist/views/system/config/index.vue.js.map +1 -1
  367. package/dist/views/system/config/index2.vue.js +201 -111
  368. package/dist/views/system/config/index2.vue.js.map +1 -1
  369. package/dist/views/system/config/layoutMode.d.ts +23 -0
  370. package/dist/views/system/config/layoutMode.js +28 -0
  371. package/dist/views/system/config/layoutMode.js.map +1 -0
  372. package/dist/views/system/config/providerForm.d.ts +33 -0
  373. package/dist/views/system/config/providerForm.js +63 -0
  374. package/dist/views/system/config/providerForm.js.map +1 -0
  375. package/dist/views/system/dict/index.vue.js +2 -2
  376. package/dist/views/system/dict/index2.vue.js +471 -366
  377. package/dist/views/system/dict/index2.vue.js.map +1 -1
  378. package/dist/views/system/file/index2.vue.js +91 -76
  379. package/dist/views/system/file/index2.vue.js.map +1 -1
  380. package/dist/views/system/job/index.vue.js +3 -3
  381. package/dist/views/system/job/index2.vue.js +897 -828
  382. package/dist/views/system/job/index2.vue.js.map +1 -1
  383. package/dist/views/system/job-log/components/AttemptTable.vue.d.ts +8 -0
  384. package/dist/views/system/job-log/components/AttemptTable.vue.js +5 -0
  385. package/dist/views/system/job-log/components/AttemptTable.vue.js.map +1 -0
  386. package/dist/views/system/job-log/components/AttemptTable2.vue.js +54 -0
  387. package/dist/views/system/job-log/components/AttemptTable2.vue.js.map +1 -0
  388. package/dist/views/system/job-log/index.vue.js +2 -2
  389. package/dist/views/system/job-log/index2.vue.js +193 -207
  390. package/dist/views/system/job-log/index2.vue.js.map +1 -1
  391. package/dist/views/system/job-log/runStatus.d.ts +13 -0
  392. package/dist/views/system/job-log/runStatus.js +26 -0
  393. package/dist/views/system/job-log/runStatus.js.map +1 -0
  394. package/dist/views/system/job-monitor/index.vue.js +2 -2
  395. package/dist/views/system/job-monitor/index2.vue.js +172 -180
  396. package/dist/views/system/job-monitor/index2.vue.js.map +1 -1
  397. package/dist/views/system/log/exception/index.vue.js +2 -2
  398. package/dist/views/system/log/exception/index2.vue.js +135 -96
  399. package/dist/views/system/log/exception/index2.vue.js.map +1 -1
  400. package/dist/views/system/log/login/index2.vue.js +62 -41
  401. package/dist/views/system/log/login/index2.vue.js.map +1 -1
  402. package/dist/views/system/log/op/index.vue.js +2 -2
  403. package/dist/views/system/log/op/index2.vue.js +200 -162
  404. package/dist/views/system/log/op/index2.vue.js.map +1 -1
  405. package/dist/views/system/menu/components/ButtonManager.vue.js +2 -2
  406. package/dist/views/system/menu/components/ButtonManager2.vue.js +206 -190
  407. package/dist/views/system/menu/components/ButtonManager2.vue.js.map +1 -1
  408. package/dist/views/system/menu/components/MenuFormModal.vue.js +2 -2
  409. package/dist/views/system/menu/components/MenuFormModal2.vue.js +127 -118
  410. package/dist/views/system/menu/components/MenuFormModal2.vue.js.map +1 -1
  411. package/dist/views/system/menu/index.vue.js +1 -1
  412. package/dist/views/system/menu/index2.vue.js +216 -183
  413. package/dist/views/system/menu/index2.vue.js.map +1 -1
  414. package/dist/views/system/module/index.vue.js +1 -1
  415. package/dist/views/system/module/index2.vue.js +177 -144
  416. package/dist/views/system/module/index2.vue.js.map +1 -1
  417. package/dist/views/system/monitor/index.vue.js +2 -2
  418. package/dist/views/system/monitor/index2.vue.js +134 -149
  419. package/dist/views/system/monitor/index2.vue.js.map +1 -1
  420. package/dist/views/system/notice/index.vue.js +1 -1
  421. package/dist/views/system/notice/index2.vue.js +209 -181
  422. package/dist/views/system/notice/index2.vue.js.map +1 -1
  423. package/dist/views/system/org/index.vue.js +1 -1
  424. package/dist/views/system/org/index2.vue.js +278 -248
  425. package/dist/views/system/org/index2.vue.js.map +1 -1
  426. package/dist/views/system/position/index.vue.js +5 -2
  427. package/dist/views/system/position/index.vue.js.map +1 -1
  428. package/dist/views/system/position/index2.vue.js +128 -92
  429. package/dist/views/system/position/index2.vue.js.map +1 -1
  430. package/dist/views/system/recycle/index.vue.js +2 -2
  431. package/dist/views/system/recycle/index2.vue.js +90 -67
  432. package/dist/views/system/recycle/index2.vue.js.map +1 -1
  433. package/dist/views/system/role/components/GrantMenuSheet.vue.d.ts +20 -0
  434. package/dist/views/system/role/components/GrantMenuSheet.vue.js +8 -0
  435. package/dist/views/system/role/components/GrantMenuSheet.vue.js.map +1 -0
  436. package/dist/views/system/role/components/GrantMenuSheet2.vue.js +117 -0
  437. package/dist/views/system/role/components/GrantMenuSheet2.vue.js.map +1 -0
  438. package/dist/views/system/role/components/GrantMenuTable.vue.d.ts +6 -4
  439. package/dist/views/system/role/components/GrantMenuTable.vue.js +2 -2
  440. package/dist/views/system/role/components/GrantMenuTable2.vue.js +279 -177
  441. package/dist/views/system/role/components/GrantMenuTable2.vue.js.map +1 -1
  442. package/dist/views/system/role/components/MatchText.vue.d.ts +7 -0
  443. package/dist/views/system/role/components/MatchText.vue.js +8 -0
  444. package/dist/views/system/role/components/MatchText.vue.js.map +1 -0
  445. package/dist/views/system/role/components/MatchText2.vue.js +29 -0
  446. package/dist/views/system/role/components/MatchText2.vue.js.map +1 -0
  447. package/dist/views/system/role/components/grantMenuGroups.d.ts +36 -0
  448. package/dist/views/system/role/components/grantMenuGroups.js +110 -48
  449. package/dist/views/system/role/components/grantMenuGroups.js.map +1 -1
  450. package/dist/views/system/role/index.vue.js +5 -2
  451. package/dist/views/system/role/index.vue.js.map +1 -1
  452. package/dist/views/system/role/index2.vue.js +181 -165
  453. package/dist/views/system/role/index2.vue.js.map +1 -1
  454. package/dist/views/system/session/index2.vue.js +75 -49
  455. package/dist/views/system/session/index2.vue.js.map +1 -1
  456. package/dist/views/system/user/components/ResetPasswordModal.vue.js +2 -2
  457. package/dist/views/system/user/components/ResetPasswordModal2.vue.js +2 -0
  458. package/dist/views/system/user/components/ResetPasswordModal2.vue.js.map +1 -1
  459. package/dist/views/system/user/components/UserFormModal.vue.js +2 -2
  460. package/dist/views/system/user/components/UserFormModal2.vue.js +77 -76
  461. package/dist/views/system/user/components/UserFormModal2.vue.js.map +1 -1
  462. package/dist/views/system/user/index.vue.js +2 -2
  463. package/dist/views/system/user/index2.vue.js +362 -275
  464. package/dist/views/system/user/index2.vue.js.map +1 -1
  465. package/package.json +6 -8
  466. package/dist/components/SelectTable/index.vue.d.ts +0 -76
  467. package/dist/components/SelectTable/index2.vue.js +0 -256
  468. package/dist/components/SelectTable/index2.vue.js.map +0 -1
  469. package/dist/composables/useTableRowSort.d.ts +0 -20
  470. package/dist/composables/useTableRowSort.js +0 -59
  471. package/dist/composables/useTableRowSort.js.map +0 -1
  472. package/dist/layouts/LayoutModeCards.vue.js +0 -8
  473. package/dist/layouts/LayoutModeCards.vue.js.map +0 -1
  474. package/dist/layouts/LayoutModeCards2.vue.js +0 -67
  475. package/dist/layouts/LayoutModeCards2.vue.js.map +0 -1
  476. package/dist/layouts/SettingRow.vue.js +0 -8
  477. package/dist/layouts/SettingRow.vue.js.map +0 -1
  478. package/dist/layouts/SettingRow2.vue.js +0 -23
  479. package/dist/layouts/SettingRow2.vue.js.map +0 -1
  480. package/dist/views/login/skins/AuroraGlass.vue.js +0 -8
  481. package/dist/views/login/skins/AuroraGlass.vue.js.map +0 -1
  482. package/dist/views/login/skins/AuroraGlass2.vue.js +0 -80
  483. package/dist/views/login/skins/AuroraGlass2.vue.js.map +0 -1
  484. package/dist/views/login/skins/SplitPanel.vue.js +0 -8
  485. package/dist/views/login/skins/SplitPanel.vue.js.map +0 -1
  486. package/dist/views/login/skins/SplitPanel2.vue.js +0 -85
  487. package/dist/views/login/skins/SplitPanel2.vue.js.map +0 -1
  488. package/dist/views/login/skins/Spotlight.vue.js +0 -8
  489. package/dist/views/login/skins/Spotlight.vue.js.map +0 -1
  490. package/dist/views/login/skins/Spotlight2.vue.js +0 -36
  491. package/dist/views/login/skins/Spotlight2.vue.js.map +0 -1
  492. package/dist/views/login/skins.d.ts +0 -8
  493. package/dist/views/login/skins.js +0 -13
  494. package/dist/views/login/skins.js.map +0 -1
  495. package/dist/views/system/config/components/ExternalAuthConfig.vue.js +0 -8
  496. package/dist/views/system/config/components/ExternalAuthConfig.vue.js.map +0 -1
  497. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js +0 -218
  498. package/dist/views/system/config/components/ExternalAuthConfig2.vue.js.map +0 -1
  499. package/dist/views/system/config/components/GroupExtraConfig.vue.js +0 -8
  500. package/dist/views/system/config/components/GroupExtraConfig.vue.js.map +0 -1
  501. package/dist/views/system/config/components/GroupExtraConfig2.vue.js +0 -108
  502. package/dist/views/system/config/components/GroupExtraConfig2.vue.js.map +0 -1
  503. package/dist/views/system/config/components/HighSensConfig.vue.js +0 -5
  504. package/dist/views/system/config/components/HighSensConfig.vue.js.map +0 -1
  505. package/dist/views/system/config/components/HighSensConfig2.vue.js +0 -134
  506. package/dist/views/system/config/components/HighSensConfig2.vue.js.map +0 -1
  507. package/dist/views/system/config/components/JobConfig.vue.js +0 -5
  508. package/dist/views/system/config/components/JobConfig.vue.js.map +0 -1
  509. package/dist/views/system/config/components/JobConfig2.vue.js +0 -116
  510. package/dist/views/system/config/components/JobConfig2.vue.js.map +0 -1
  511. package/dist/views/system/config/components/OtherConfig.vue.js +0 -5
  512. package/dist/views/system/config/components/OtherConfig.vue.js.map +0 -1
  513. package/dist/views/system/config/components/OtherConfig2.vue.js +0 -121
  514. package/dist/views/system/config/components/OtherConfig2.vue.js.map +0 -1
  515. package/dist/views/system/config/components/SecurityConfig.vue.js +0 -8
  516. package/dist/views/system/config/components/SecurityConfig.vue.js.map +0 -1
  517. package/dist/views/system/config/components/SecurityConfig2.vue.js +0 -456
  518. package/dist/views/system/config/components/SecurityConfig2.vue.js.map +0 -1
  519. package/dist/views/system/config/components/SysBaseConfig.vue.js +0 -5
  520. package/dist/views/system/config/components/SysBaseConfig.vue.js.map +0 -1
  521. package/dist/views/system/config/components/SysBaseConfig2.vue.js +0 -107
  522. package/dist/views/system/config/components/SysBaseConfig2.vue.js.map +0 -1
  523. package/dist/views/system/config/components/UploadConfig.vue.d.ts +0 -3
  524. package/dist/views/system/config/components/UploadConfig.vue.js +0 -5
  525. package/dist/views/system/config/components/UploadConfig.vue.js.map +0 -1
  526. package/dist/views/system/config/components/UploadConfig2.vue.js +0 -135
  527. package/dist/views/system/config/components/UploadConfig2.vue.js.map +0 -1
  528. /package/dist/components/{SelectTable → TableTotal}/index.vue.js.map +0 -0
  529. /package/dist/layouts/{LayoutModeCards.vue.d.ts → AccentPicker.vue.d.ts} +0 -0
  530. /package/dist/views/{login/skins/AuroraGlass.vue.d.ts → system/config/components/AdminMock.vue.d.ts} +0 -0
  531. /package/dist/views/{login/skins/SplitPanel.vue.d.ts → system/config/components/AdvancedSection.vue.d.ts} +0 -0
  532. /package/dist/views/{login/skins/Spotlight.vue.d.ts → system/config/components/JobSection.vue.d.ts} +0 -0
  533. /package/dist/views/system/config/components/{ExternalAuthConfig.vue.d.ts → LogoEditor.vue.d.ts} +0 -0
  534. /package/dist/views/system/config/components/{HighSensConfig.vue.d.ts → SecuritySection.vue.d.ts} +0 -0
  535. /package/dist/views/system/config/components/{JobConfig.vue.d.ts → SensitiveSection.vue.d.ts} +0 -0
  536. /package/dist/views/system/config/components/{OtherConfig.vue.d.ts → SigninSection.vue.d.ts} +0 -0
  537. /package/dist/views/system/config/components/{SecurityConfig.vue.d.ts → UploadSection.vue.d.ts} +0 -0
  538. /package/dist/views/system/config/components/{SysBaseConfig.vue.d.ts → WatermarkSection.vue.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index2.vue.js","sources":["../../../../src/views/system/notice/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 消息通知管理(NoticeController 管理端):发布广播通知 + 分页列表 + 删除。\n// 用户侧(未读角标/我的通知/标记已读)在顶栏铃铛(AppHeader.vue),不在本页。\nimport { computed, h, onMounted, reactive, ref } from 'vue'\nimport {\n NButton,\n NCheckbox,\n NDynamicInput,\n NInput,\n NModal,\n NPopconfirm,\n NForm,\n NFormItem,\n NSelect,\n NTag,\n NSpace,\n NText,\n useMessage,\n type FormInst,\n type FormRules,\n} 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 FormContainer from '#/components/FormContainer/index.vue'\nimport MarkdownEditor from '#/components/MarkdownEditor/index.vue'\nimport MarkdownView from '#/components/MarkdownEditor/MarkdownView.vue'\nimport { useConfirm } from '#/composables/useConfirm'\nimport { useAuthStore } from '#/stores/auth'\nimport { noticeApi, roleApi, userApi } from '#/api'\nimport {\n NoticeType,\n ReceiverType,\n type NoticeAction,\n type NoticePublishInput,\n type SysNotice,\n} from '#/types/api'\nimport { isSiteRelativeUrl } from '#/lib/noticeActions'\nimport { translateError } from '#/utils/error'\nimport { fmtDateTime } from '#/utils/format'\n\nconst { t } = useI18n()\nconst message = useMessage()\nconst { run } = useConfirm()\nconst authStore = useAuthStore()\nconst tableRef = ref<SmartTableInst<SysNotice>>()\n\nconst typeLabel = (ty: NoticeType) =>\n ty === NoticeType.Announcement\n ? t('notice.typeAnnouncement')\n : ty === NoticeType.Message\n ? t('notice.typeMessage')\n : t('notice.typeNotice')\nconst tagType = (ty: NoticeType) =>\n ty === NoticeType.Announcement ? 'warning' : ty === NoticeType.Message ? 'success' : 'info'\n\nconst columns: SmartTableColumn<SysNotice>[] = [\n { type: 'index', title: () => t('common.rowNo'), width: 64, align: 'center' },\n { key: 'title', title: () => t('notice.noticeTitle'), search: true },\n {\n key: 'type',\n title: () => t('notice.type'),\n width: 90,\n render: r =>\n h(NTag, { size: 'small', type: tagType(r.type), bordered: false }, () => typeLabel(r.type)),\n },\n { key: 'content', title: () => t('notice.content'), ellipsis: { tooltip: true } },\n {\n key: 'actionsJson',\n title: () => t('notice.actions'),\n width: 100,\n render: r => {\n const n = actionCount(r.actionsJson)\n return n ? t('notice.actionCount', { count: n }) : '—'\n },\n },\n {\n key: 'createTime',\n title: () => t('notice.publishTime'),\n width: 170,\n render: r => fmtDateTime(r.createTime),\n },\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 h(\n NButton,\n { size: 'small', quaternary: true, type: 'primary', onClick: () => openView(r) },\n () => t('notice.view'),\n ),\n authStore.hasPerm('DELETE:/api/v1/sys/notice/{id}')\n ? h(\n NPopconfirm,\n {\n onPositiveClick: () =>\n run(() => noticeApi.remove(r.id), t('notice.deleted')).then(ok => {\n if (ok) tableRef.value?.refresh()\n }),\n },\n {\n trigger: () =>\n h(NButton, { size: 'small', quaternary: true, type: 'error' }, () =>\n t('common.delete'),\n ),\n default: () => t('notice.deleteConfirm', { title: r.title }),\n },\n )\n : null,\n ]),\n },\n]\n\n// ── 发布弹窗 ──\nconst show = ref(false)\nconst formRef = ref<FormInst | null>(null)\nconst rules: FormRules = {\n title: {\n required: true,\n whitespace: true,\n message: () => t('notice.titleRequired'),\n trigger: ['input', 'blur'],\n },\n receiverIds: {\n // 定向发送必须选接收对象;全体广播无需(validator 读实时 form.receiverType)\n validator: () => form.receiverType === ReceiverType.All || (form.receiverIds?.length ?? 0) > 0,\n message: () => t('notice.receiverRequired'),\n trigger: ['change', 'blur'],\n },\n actions: {\n // 与后端同一条规则:文案非空、站内路径单个 / 开头;服务端仍会再校验一遍(45004)\n validator: () => form.actions.every(a => a.label.trim() && isSiteRelativeUrl(a.url.trim())),\n message: () => t('error.notice.actionInvalid'),\n trigger: ['input', 'blur'],\n },\n}\n// 表单里 actions 恒为数组(n-dynamic-input 不吃 null);提交时空数组不传\ntype PublishForm = Omit<NoticePublishInput, 'actions'> & { actions: NoticeAction[] }\nconst blank = (): PublishForm => ({\n title: '',\n content: '',\n type: NoticeType.Notice,\n receiverType: ReceiverType.All,\n receiverIds: [],\n actions: [],\n})\nconst form = reactive<PublishForm>(blank())\n\n// ── 动作按钮编辑(最多 5 条) ──\nconst MAX_ACTIONS = 5\nconst newAction = (): NoticeAction => ({\n label: '',\n method: 'GET',\n url: '',\n style: 'default',\n confirm: false,\n comment: false,\n})\nconst methodOptions = [\n { label: 'GET', value: 'GET' },\n { label: 'POST', value: 'POST' },\n]\nconst styleOptions = [\n { label: () => t('notice.actionStyleDefault'), value: 'default' },\n { label: () => t('notice.actionStylePrimary'), value: 'primary' },\n { label: () => t('notice.actionStyleError'), value: 'error' },\n]\n/** 管理端列表只展示条数;JSON 坏了按 0 算,不让一行脏数据拖垮整页。 */\nfunction actionCount(json?: string | null): number {\n if (!json) return 0\n try {\n const v: unknown = JSON.parse(json)\n return Array.isArray(v) ? v.length : 0\n } catch {\n return 0\n }\n}\nconst typeOptions = [\n { label: () => t('notice.typeNotice'), value: NoticeType.Notice },\n { label: () => t('notice.typeAnnouncement'), value: NoticeType.Announcement },\n { label: () => t('notice.typeMessage'), value: NoticeType.Message },\n]\nconst receiverTypeOptions = [\n { label: () => t('notice.receiverAll'), value: ReceiverType.All },\n { label: () => t('notice.receiverRole'), value: ReceiverType.Role },\n { label: () => t('notice.receiverUser'), value: ReceiverType.User },\n]\nconst roleOptions = ref<{ label: string; value: number }[]>([])\nconst userOptions = ref<{ label: string; value: number }[]>([])\nconst receiverOptions = computed(() =>\n form.receiverType === ReceiverType.Role\n ? roleOptions.value\n : form.receiverType === ReceiverType.User\n ? userOptions.value\n : [],\n)\n// 接收对象下拉源:各拉一页足量(与用户页同款)。发布弹窗低频,进页面时预取。\nonMounted(async () => {\n try {\n const { items } = await roleApi.page({ page: 1, pageSize: 200 })\n roleOptions.value = items.map(r => ({ label: r.name, value: r.id }))\n } catch {\n /* 静默:角色下拉是配角 */\n }\n try {\n const { items } = await userApi.page({ page: 1, pageSize: 200 })\n userOptions.value = items.map(u => ({ label: `${u.name}(${u.account})`, value: u.id }))\n } catch {\n /* 静默:用户下拉是配角 */\n }\n})\n\nfunction openPublish() {\n Object.assign(form, blank())\n show.value = true\n}\n\n// ── 查看(只读渲染 Markdown 正文)──\nconst showView = ref(false)\nconst viewRow = ref<SysNotice | null>(null)\nfunction openView(r: SysNotice) {\n viewRow.value = r\n showView.value = true\n}\nasync function savePublish() {\n await formRef.value?.validate()\n try {\n // 空列表不传:后端 null 与 [] 同义,但 schema 契约里它是可选字段,别把 [] 当成\"有动作\"\n const actions = form.actions.length ? form.actions : undefined\n await noticeApi.publish({ ...form, actions })\n message.success(t('notice.published'))\n await tableRef.value?.refresh()\n } catch (e) {\n message.error(translateError(e))\n return false\n }\n}\n</script>\n\n<template>\n <!-- .fill-page:高度链在 styles/layout.css,卡片吃满内容区,滚动只发生在表体里。 -->\n <div class=\"fill-page\">\n <SmartTable\n :default-page-size=\"100\"\n ref=\"tableRef\"\n :columns=\"columns\"\n :fetcher=\"noticeApi.page\"\n flex-height\n virtual-scroll\n storage-key=\"sys-notice\"\n @error=\"e => message.error(translateError(e))\"\n >\n <template #toolbar>\n <n-button v-auth=\"'POST:/api/v1/sys/notice'\" type=\"primary\" @click=\"openPublish\">\n <template #icon><AppIcon icon=\"ph:megaphone\" :size=\"16\" /></template>\n {{ t('notice.publish') }}\n </n-button>\n </template>\n </SmartTable>\n\n <FormContainer\n v-model:show=\"show\"\n :title=\"t('notice.publishTitle')\"\n :width=\"820\"\n :on-confirm=\"savePublish\"\n :confirm-text=\"t('notice.publish')\"\n >\n <n-form ref=\"formRef\" :model=\"form\" :rules=\"rules\" label-placement=\"left\" :label-width=\"80\">\n <n-form-item :label=\"t('notice.type')\">\n <n-select v-model:value=\"form.type\" :options=\"typeOptions\" style=\"width: 160px\" />\n </n-form-item>\n <n-form-item :label=\"t('notice.receiver')\">\n <n-select\n v-model:value=\"form.receiverType\"\n :options=\"receiverTypeOptions\"\n style=\"width: 160px\"\n @update:value=\"form.receiverIds = []\"\n />\n </n-form-item>\n <n-form-item\n v-if=\"form.receiverType !== ReceiverType.All\"\n path=\"receiverIds\"\n :label=\"\n form.receiverType === ReceiverType.Role\n ? t('notice.receiverRole')\n : t('notice.receiverUser')\n \"\n >\n <n-select\n v-model:value=\"form.receiverIds\"\n :options=\"receiverOptions\"\n multiple\n filterable\n clearable\n :placeholder=\"t('notice.receiverPlaceholder')\"\n />\n </n-form-item>\n <n-form-item :label=\"t('notice.noticeTitle')\" path=\"title\">\n <n-input v-model:value=\"form.title\" :placeholder=\"t('notice.noticeTitle')\" />\n </n-form-item>\n <n-form-item :label=\"t('notice.content')\">\n <MarkdownEditor v-model:value=\"form.content\" />\n </n-form-item>\n <n-form-item :label=\"t('notice.actions')\" path=\"actions\">\n <div class=\"notice-actions-editor\">\n <n-dynamic-input\n v-model:value=\"form.actions\"\n :max=\"MAX_ACTIONS\"\n :on-create=\"newAction\"\n item-style=\"margin-bottom: 8px\"\n >\n <template #default=\"{ value }\">\n <div class=\"notice-action-row\">\n <n-input\n v-model:value=\"value.label\"\n :placeholder=\"t('notice.actionLabel')\"\n style=\"width: 150px\"\n />\n <n-select\n v-model:value=\"value.method\"\n :options=\"methodOptions\"\n style=\"width: 96px\"\n />\n <n-input\n v-model:value=\"value.url\"\n :placeholder=\"t('notice.actionUrl')\"\n style=\"flex: 1; min-width: 180px\"\n />\n <n-select\n v-model:value=\"value.style\"\n :options=\"styleOptions\"\n style=\"width: 96px\"\n />\n <n-checkbox v-model:checked=\"value.confirm\">\n {{ t('notice.actionNeedConfirm') }}\n </n-checkbox>\n <n-checkbox v-model:checked=\"value.comment\">\n {{ t('notice.actionNeedComment') }}\n </n-checkbox>\n </div>\n </template>\n <template #create-button-default>{{ t('notice.actionAdd') }}</template>\n </n-dynamic-input>\n <n-text depth=\"3\" class=\"notice-actions-hint\">{{ t('notice.actionsHint') }}</n-text>\n </div>\n </n-form-item>\n </n-form>\n </FormContainer>\n\n <n-modal\n v-model:show=\"showView\"\n preset=\"card\"\n :title=\"viewRow?.title || t('notice.detailTitle')\"\n style=\"width: 720px; max-width: 92vw\"\n >\n <MarkdownView :value=\"viewRow?.content\" />\n </n-modal>\n </div>\n</template>\n\n<style scoped>\n.notice-actions-editor {\n width: 100%;\n}\n.notice-action-row {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n width: 100%;\n}\n.notice-actions-hint {\n display: block;\n margin-top: 4px;\n font-size: 12px;\n line-height: 1.4;\n}\n</style>\n"],"names":["MAX_ACTIONS","t","useI18n","message","useMessage","run","useConfirm","authStore","useAuthStore","tableRef","ref","typeLabel","ty","NoticeType","tagType","columns","r","h","NTag","n","actionCount","fmtDateTime","NSpace","NButton","openView","NPopconfirm","noticeApi","ok","_a","show","formRef","rules","form","ReceiverType","a","isSiteRelativeUrl","blank","reactive","newAction","methodOptions","styleOptions","json","v","typeOptions","receiverTypeOptions","roleOptions","userOptions","receiverOptions","computed","onMounted","items","roleApi","userApi","u","openPublish","showView","viewRow","savePublish","actions","_b","e","translateError","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","SmartTable","_cache","_createBlock","AppIcon","_createTextVNode","FormContainer","$event","NForm","NFormItem","NSelect","NInput","MarkdownEditor","_createElementVNode","_hoisted_2","NDynamicInput","_withCtx","value","_hoisted_3","NCheckbox","NText","NModal","MarkdownView"],"mappings":"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"}
1
+ {"version":3,"file":"index2.vue.js","sources":["../../../../src/views/system/notice/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// 消息通知管理(NoticeController 管理端):发布广播通知 + 分页列表 + 删除。\n// 用户侧(未读角标/我的通知/标记已读)在顶栏铃铛(AppHeader.vue),不在本页。\nimport { computed, h, onMounted, reactive, ref } from 'vue'\nimport {\n NButton,\n NCheckbox,\n NDynamicInput,\n NInput,\n NModal,\n NPopconfirm,\n NForm,\n NFormItem,\n NSelect,\n NTag,\n NSpace,\n NText,\n useMessage,\n type FormInst,\n type FormRules,\n} from 'naive-ui'\nimport { useMediaQuery } from '@vueuse/core'\nimport { useI18n } from 'vue-i18n'\nimport { SmartTable, type SmartTableColumn, type SmartTableInst } from 'smart-naive-table'\nimport AppIcon from '#/components/AppIcon.vue'\nimport FormContainer from '#/components/FormContainer/index.vue'\nimport MarkdownEditor from '#/components/MarkdownEditor/index.vue'\nimport MarkdownView from '#/components/MarkdownEditor/MarkdownView.vue'\nimport { useConfirm } from '#/composables/useConfirm'\nimport { useAuthStore } from '#/stores/auth'\nimport { noticeApi, roleApi, userApi } from '#/api'\nimport {\n NoticeType,\n ReceiverType,\n type NoticeAction,\n type NoticePublishInput,\n type SysNotice,\n} from '#/types/api'\nimport { isSiteRelativeUrl } from '#/lib/noticeActions'\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 { fmtDateTime } from '#/utils/format'\n\nconst { t } = useI18n()\nconst message = useMessage()\nconst { run } = useConfirm()\nconst authStore = useAuthStore()\nconst tableRef = ref<SmartTableInst<SysNotice>>()\n\nconst typeLabel = (ty: NoticeType) =>\n ty === NoticeType.Announcement\n ? t('notice.typeAnnouncement')\n : ty === NoticeType.Message\n ? t('notice.typeMessage')\n : t('notice.typeNotice')\n// 窄屏:表单标签放上方、选择框通栏(底部抽屉里横排标签太挤);宽 / 中档沿用左标签\nconst narrowForm = useMediaQuery('(max-width: 640px)')\nconst formLayout = computed(() =>\n narrowForm.value\n ? { labelPlacement: 'top' as const, labelWidth: undefined }\n : { labelPlacement: 'left' as const, labelWidth: 80 },\n)\nconst selectStyle = computed(() => (narrowForm.value ? undefined : 'width: 160px'))\n\n/** 列表里的正文摘要:去掉 Markdown 标记,压成一行(只影响展示,存的仍是 Markdown 原文)。 */\nconst brief = (s?: string | null) =>\n (s ?? '')\n .replace(/```/g, '')\n .replace(/[#>*`]/g, '')\n .replace(/!?\\[([^\\]]*)\\]\\([^)]*\\)/g, '$1')\n .replace(/\\s+/g, ' ')\n .trim()\n\nconst tagType = (ty: NoticeType) =>\n ty === NoticeType.Announcement ? 'warning' : ty === NoticeType.Message ? 'success' : 'info'\n\nconst columns: SmartTableColumn<SysNotice>[] = [\n { type: 'index', title: () => t('common.rowNo'), width: 64, align: 'center' },\n {\n key: 'title',\n title: () => t('notice.noticeTitle'),\n search: { actions: SEARCH_ACTIONS.fuzzy },\n render: r => h('span', { style: 'font-weight: 500' }, r.title),\n },\n {\n key: 'type',\n title: () => t('notice.type'),\n width: 90,\n render: r =>\n h(NTag, { size: 'small', type: tagType(r.type), bordered: false }, () => typeLabel(r.type)),\n },\n {\n key: 'content',\n title: () => t('notice.content'),\n ellipsis: { tooltip: true },\n render: r => h('span', { class: 'muted' }, brief(r.content)),\n },\n {\n key: 'actionsJson',\n title: () => t('notice.actions'),\n width: 100,\n render: r => {\n const n = actionCount(r.actionsJson)\n return n\n ? h('span', { class: 'muted' }, t('notice.actionCount', { count: n }))\n : h('span', { class: 'faint' }, '—')\n },\n },\n {\n key: 'createTime',\n title: () => t('notice.publishTime'),\n width: 170,\n render: r =>\n h('span', { class: 'num muted', style: 'white-space: nowrap' }, fmtDateTime(r.createTime)),\n },\n {\n key: 'op',\n title: () => t('common.operation'),\n width: 140,\n align: 'right',\n fixed: 'right',\n hideInSetting: true,\n render: r =>\n h(NSpace, { size: 2, justify: 'end', wrapItem: false }, () => [\n h(\n NButton,\n { size: 'small', quaternary: true, type: 'primary', onClick: () => openView(r) },\n () => t('notice.view'),\n ),\n authStore.hasPerm('DELETE:/api/v1/sys/notice/{id}')\n ? h(\n NPopconfirm,\n {\n onPositiveClick: () =>\n run(() => noticeApi.remove(r.id), t('notice.deleted')).then(ok => {\n if (ok) tableRef.value?.refresh()\n }),\n },\n {\n trigger: () =>\n h(NButton, { size: 'small', quaternary: true, type: 'error' }, () =>\n t('common.delete'),\n ),\n default: () => t('notice.deleteConfirm', { title: r.title }),\n },\n )\n : null,\n ]),\n },\n]\nderiveHeaderFilters(columns)\n\n// ── 发布弹窗 ──\nconst show = ref(false)\nconst formRef = ref<FormInst | null>(null)\nconst rules: FormRules = {\n title: {\n required: true,\n whitespace: true,\n message: () => t('notice.titleRequired'),\n trigger: ['input', 'blur'],\n },\n receiverIds: {\n // 定向发送必须选接收对象;全体广播无需(validator 读实时 form.receiverType)\n validator: () => form.receiverType === ReceiverType.All || (form.receiverIds?.length ?? 0) > 0,\n message: () => t('notice.receiverRequired'),\n trigger: ['change', 'blur'],\n },\n actions: {\n // 与后端同一条规则:文案非空、站内路径单个 / 开头;服务端仍会再校验一遍(45004)\n validator: () => form.actions.every(a => a.label.trim() && isSiteRelativeUrl(a.url.trim())),\n message: () => t('error.notice.actionInvalid'),\n trigger: ['input', 'blur'],\n },\n}\n// 表单里 actions 恒为数组(n-dynamic-input 不吃 null);提交时空数组不传\ntype PublishForm = Omit<NoticePublishInput, 'actions'> & { actions: NoticeAction[] }\nconst blank = (): PublishForm => ({\n title: '',\n content: '',\n type: NoticeType.Notice,\n receiverType: ReceiverType.All,\n receiverIds: [],\n actions: [],\n})\nconst form = reactive<PublishForm>(blank())\n\n// ── 动作按钮编辑(最多 5 条) ──\nconst MAX_ACTIONS = 5\nconst newAction = (): NoticeAction => ({\n label: '',\n method: 'GET',\n url: '',\n style: 'default',\n confirm: false,\n comment: false,\n})\nconst methodOptions = [\n { label: 'GET', value: 'GET' },\n { label: 'POST', value: 'POST' },\n]\nconst styleOptions = [\n { label: () => t('notice.actionStyleDefault'), value: 'default' },\n { label: () => t('notice.actionStylePrimary'), value: 'primary' },\n { label: () => t('notice.actionStyleError'), value: 'error' },\n]\n/** 管理端列表只展示条数;JSON 坏了按 0 算,不让一行脏数据拖垮整页。 */\nfunction actionCount(json?: string | null): number {\n if (!json) return 0\n try {\n const v: unknown = JSON.parse(json)\n return Array.isArray(v) ? v.length : 0\n } catch {\n return 0\n }\n}\nconst typeOptions = [\n { label: () => t('notice.typeNotice'), value: NoticeType.Notice },\n { label: () => t('notice.typeAnnouncement'), value: NoticeType.Announcement },\n { label: () => t('notice.typeMessage'), value: NoticeType.Message },\n]\nconst receiverTypeOptions = [\n { label: () => t('notice.receiverAll'), value: ReceiverType.All },\n { label: () => t('notice.receiverRole'), value: ReceiverType.Role },\n { label: () => t('notice.receiverUser'), value: ReceiverType.User },\n]\nconst roleOptions = ref<{ label: string; value: number }[]>([])\nconst userOptions = ref<{ label: string; value: number }[]>([])\nconst receiverOptions = computed(() =>\n form.receiverType === ReceiverType.Role\n ? roleOptions.value\n : form.receiverType === ReceiverType.User\n ? userOptions.value\n : [],\n)\n// 接收对象下拉源:各拉一页足量(与用户页同款)。发布弹窗低频,进页面时预取。\nonMounted(async () => {\n try {\n const { items } = await roleApi.page({ page: 1, pageSize: 200 })\n roleOptions.value = items.map(r => ({ label: r.name, value: r.id }))\n } catch {\n /* 静默:角色下拉是配角 */\n }\n try {\n const { items } = await userApi.page({ page: 1, pageSize: 200 })\n userOptions.value = items.map(u => ({ label: `${u.name}(${u.account})`, value: u.id }))\n } catch {\n /* 静默:用户下拉是配角 */\n }\n})\n\nfunction openPublish() {\n Object.assign(form, blank())\n show.value = true\n}\n\n// ── 查看(只读渲染 Markdown 正文)──\nconst showView = ref(false)\nconst viewRow = ref<SysNotice | null>(null)\nfunction openView(r: SysNotice) {\n viewRow.value = r\n showView.value = true\n}\nasync function savePublish() {\n await formRef.value?.validate()\n try {\n // 空列表不传:后端 null 与 [] 同义,但 schema 契约里它是可选字段,别把 [] 当成\"有动作\"\n const actions = form.actions.length ? form.actions : undefined\n await noticeApi.publish({ ...form, actions })\n message.success(t('notice.published'))\n await tableRef.value?.refresh()\n } catch (e) {\n message.error(translateError(e))\n return false\n }\n}\n</script>\n\n<template>\n <!-- .fill-page:高度链在 styles/layout.css,卡片吃满内容区,滚动只发生在表体里。 -->\n <div class=\"fill-page\">\n <SmartTable\n :toolbar=\"TABLE_TOOLBAR\"\n ref=\"tableRef\"\n :columns=\"columns\"\n :fetcher=\"noticeApi.page\"\n :search=\"{ container: 'table' }\"\n fill-height\n :min-row-height=\"TABLE_MIN_ROW_HEIGHT\"\n card-on-narrow\n storage-key=\"sys-notice\"\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/notice'\" type=\"primary\" @click=\"openPublish\">\n <template #icon><AppIcon icon=\"ph:megaphone\" :size=\"16\" /></template>\n {{ t('notice.publish') }}\n </n-button>\n </template>\n </SmartTable>\n\n <FormContainer\n v-model:show=\"show\"\n :title=\"t('notice.publishTitle')\"\n :width=\"820\"\n :on-confirm=\"savePublish\"\n :confirm-text=\"t('notice.publish')\"\n >\n <n-form\n ref=\"formRef\"\n :model=\"form\"\n :rules=\"rules\"\n require-mark-placement=\"left\"\n v-bind=\"formLayout\"\n >\n <n-form-item :label=\"t('notice.type')\" required>\n <n-select v-model:value=\"form.type\" :options=\"typeOptions\" :style=\"selectStyle\" />\n </n-form-item>\n <n-form-item :label=\"t('notice.receiver')\" required>\n <n-select\n v-model:value=\"form.receiverType\"\n :options=\"receiverTypeOptions\"\n :style=\"selectStyle\"\n @update:value=\"form.receiverIds = []\"\n />\n </n-form-item>\n <n-form-item\n v-if=\"form.receiverType !== ReceiverType.All\"\n path=\"receiverIds\"\n required\n :label=\"\n form.receiverType === ReceiverType.Role\n ? t('notice.receiverRole')\n : t('notice.receiverUser')\n \"\n >\n <n-select\n v-model:value=\"form.receiverIds\"\n :options=\"receiverOptions\"\n multiple\n filterable\n clearable\n :placeholder=\"t('notice.receiverPlaceholder')\"\n />\n </n-form-item>\n <n-form-item :label=\"t('notice.noticeTitle')\" path=\"title\">\n <n-input v-model:value=\"form.title\" :placeholder=\"t('notice.noticeTitle')\" />\n </n-form-item>\n <n-form-item :label=\"t('notice.content')\">\n <MarkdownEditor v-model:value=\"form.content\" />\n </n-form-item>\n <n-form-item :label=\"t('notice.actions')\" path=\"actions\">\n <div class=\"notice-actions-editor\">\n <n-dynamic-input\n v-model:value=\"form.actions\"\n :max=\"MAX_ACTIONS\"\n :on-create=\"newAction\"\n item-style=\"margin-bottom: 8px\"\n >\n <template #default=\"{ value }\">\n <div class=\"notice-action-row\">\n <n-input\n v-model:value=\"value.label\"\n :placeholder=\"t('notice.actionLabel')\"\n class=\"act-label\"\n />\n <n-select\n v-model:value=\"value.method\"\n :options=\"methodOptions\"\n style=\"width: 96px\"\n />\n <n-input\n v-model:value=\"value.url\"\n :placeholder=\"t('notice.actionUrl')\"\n class=\"act-url mono\"\n />\n <n-select\n v-model:value=\"value.style\"\n :options=\"styleOptions\"\n style=\"width: 96px\"\n />\n <n-checkbox v-model:checked=\"value.confirm\">\n {{ t('notice.actionNeedConfirm') }}\n </n-checkbox>\n <n-checkbox v-model:checked=\"value.comment\">\n {{ t('notice.actionNeedComment') }}\n </n-checkbox>\n </div>\n </template>\n <template #create-button-default>{{ t('notice.actionAdd') }}</template>\n </n-dynamic-input>\n <n-text depth=\"3\" class=\"notice-actions-hint\">{{ t('notice.actionsHint') }}</n-text>\n </div>\n </n-form-item>\n </n-form>\n </FormContainer>\n\n <n-modal\n v-model:show=\"showView\"\n preset=\"card\"\n :title=\"viewRow?.title || t('notice.detailTitle')\"\n :bordered=\"false\"\n :segmented=\"{ content: true }\"\n style=\"width: 720px; max-width: 92vw\"\n >\n <MarkdownView :value=\"viewRow?.content\" />\n </n-modal>\n </div>\n</template>\n\n<style scoped>\n.notice-actions-editor {\n width: 100%;\n}\n.notice-action-row {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n width: 100%;\n}\n.notice-actions-hint {\n display: block;\n margin-top: 8px;\n font-size: 13px;\n line-height: 1.6;\n}\n.act-label {\n width: 150px;\n}\n.act-url {\n flex: 1;\n min-width: 180px;\n}\n/* 窄屏:文案与地址各占一整行,其余控件折到下面 */\n@media (max-width: 640px) {\n .act-label,\n .act-url {\n flex: 1 1 100%;\n width: auto;\n }\n}\n\n/* 辅助字样(表格单元格由库渲染,用 :deep;表单里的输入框是自己的元素,直接命中) */\n.mono,\n:deep(.mono) {\n font-family: var(--font-mono);\n font-size: 13.5px;\n letter-spacing: 0;\n}\n:deep(.muted) {\n color: var(--text-2);\n}\n:deep(.faint) {\n color: var(--text-3);\n}\n:deep(.num) {\n font-variant-numeric: tabular-nums;\n}\n</style>\n"],"names":["MAX_ACTIONS","useI18n","message","useMessage","run","useConfirm","authStore","useAuthStore","tableRef","ref","typeLabel","ty","NoticeType","narrowForm","useMediaQuery","formLayout","computed","selectStyle","brief","s","tagType","columns","SEARCH_ACTIONS","h","r","NTag","n","actionCount","fmtDateTime","NSpace","NButton","openView","NPopconfirm","noticeApi","ok","_a","deriveHeaderFilters","show","formRef","rules","form","ReceiverType","a","isSiteRelativeUrl","blank","reactive","newAction","methodOptions","styleOptions","json","v","typeOptions","receiverTypeOptions","roleOptions","userOptions","receiverOptions","onMounted","items","roleApi","userApi","u","openPublish","showView","viewRow","savePublish","actions","_b","e","translateError","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","SmartTable","TABLE_TOOLBAR","TABLE_MIN_ROW_HEIGHT","_cache","_withCtx","itemCount","TableTotal","_createBlock","AppIcon","_createTextVNode","FormContainer","$event","_mergeProps","NFormItem","NSelect","NInput","MarkdownEditor","_createElementVNode","_hoisted_2","NDynamicInput","value","_hoisted_3","NCheckbox","NText","NModal","MarkdownView"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import o from "./index2.vue.js";
2
2
  /* empty css */
3
3
  import t from "../../../_virtual/_plugin-vue_export-helper.js";
4
- const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-72e7ef38"]]);
4
+ const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-9e192f12"]]);
5
5
  export {
6
6
  m as default
7
7
  };