@liujitcn/kratos-admin-system 0.0.31 → 0.0.32

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 (306) hide show
  1. package/README.md +34 -20
  2. package/dist/package/declarations/src/api/base/{notification.d.ts → v1/notification.d.ts} +3 -1
  3. package/dist/package/declarations/src/api/system/admin/v1/base_api_log.d.ts +10 -0
  4. package/dist/package/declarations/src/api/system/{base_area.d.ts → admin/v1/base_area.d.ts} +1 -1
  5. package/dist/package/declarations/src/api/system/{base_config.d.ts → admin/v1/base_config.d.ts} +5 -1
  6. package/dist/package/declarations/src/api/system/admin/v1/base_data_access_log.d.ts +10 -0
  7. package/dist/package/declarations/src/api/system/admin/v1/base_dict.d.ts +20 -0
  8. package/dist/package/declarations/src/api/system/admin/v1/base_dict_item.d.ts +18 -0
  9. package/dist/package/declarations/src/api/system/{base_job.d.ts → admin/v1/base_job.d.ts} +4 -5
  10. package/dist/package/declarations/src/api/system/admin/v1/base_job_log.d.ts +9 -0
  11. package/dist/package/declarations/src/api/system/{base_language.d.ts → admin/v1/base_language.d.ts} +3 -3
  12. package/dist/package/declarations/src/api/system/admin/v1/base_log.d.ts +8 -0
  13. package/dist/package/declarations/src/api/system/admin/v1/base_login_log.d.ts +10 -0
  14. package/dist/package/declarations/src/api/system/admin/v1/base_login_policy.d.ts +19 -0
  15. package/dist/package/declarations/src/api/system/admin/v1/base_operation_log.d.ts +10 -0
  16. package/dist/package/declarations/src/api/system/admin/v1/base_permission_log.d.ts +10 -0
  17. package/dist/package/declarations/src/api/system/admin/v1/base_policy_evaluation_log.d.ts +10 -0
  18. package/dist/package/declarations/src/api/system/admin/v1/base_table_archive.d.ts +20 -0
  19. package/dist/package/declarations/src/api/system/admin/v1/base_table_archive_record.d.ts +11 -0
  20. package/dist/package/declarations/src/api/system/admin/v1/base_table_archive_restore.d.ts +14 -0
  21. package/dist/package/declarations/src/api/system/admin/v1/base_table_backup.d.ts +20 -0
  22. package/dist/package/declarations/src/api/system/admin/v1/base_table_backup_record.d.ts +11 -0
  23. package/dist/package/declarations/src/api/system/admin/v1/base_table_backup_restore.d.ts +14 -0
  24. package/dist/package/declarations/src/api/system/admin/v1/base_table_source.d.ts +11 -0
  25. package/dist/package/declarations/src/api/system/admin/v1/cache.d.ts +7 -0
  26. package/dist/package/declarations/src/api/system/base_redact_field.d.ts +20 -0
  27. package/dist/package/declarations/src/api/system/base_redact_policy.d.ts +19 -0
  28. package/dist/package/declarations/src/api/system/base_redact_rule.d.ts +22 -0
  29. package/dist/package/declarations/src/components/ChangePasswordForm.vue.d.ts +3 -0
  30. package/dist/package/declarations/src/components/DynamicI18nCell.vue.d.ts +5 -1
  31. package/dist/package/declarations/src/components/ForcedPasswordDialog.vue.d.ts +3 -0
  32. package/dist/package/declarations/src/components/{AuditLogTable.vue.d.ts → LogTable.vue.d.ts} +14 -7
  33. package/dist/package/declarations/src/components/dynamicI18n.d.ts +4 -7
  34. package/dist/package/declarations/src/components/log.d.ts +20 -0
  35. package/dist/package/declarations/src/config/base-log-fallback.d.ts +7 -0
  36. package/dist/package/declarations/src/config/database-backup.d.ts +12 -0
  37. package/dist/package/declarations/src/config/index.d.ts +7 -0
  38. package/dist/package/declarations/src/config/types.d.ts +56 -0
  39. package/dist/package/declarations/src/locales/generated.d.ts +1084 -500
  40. package/dist/package/declarations/src/rpc/base/v1/login.d.ts +5 -3
  41. package/dist/package/declarations/src/rpc/base/v1/notification.d.ts +25 -0
  42. package/dist/package/declarations/src/rpc/system/admin/v1/auth.d.ts +13 -0
  43. package/dist/package/declarations/src/rpc/system/admin/v1/base_api.d.ts +2 -0
  44. package/dist/package/declarations/src/rpc/system/admin/v1/base_api_log.d.ts +84 -0
  45. package/dist/package/declarations/src/rpc/system/admin/v1/base_config.d.ts +38 -0
  46. package/dist/package/declarations/src/rpc/system/admin/v1/base_data_access_log.d.ts +112 -0
  47. package/dist/package/declarations/src/rpc/system/admin/v1/base_dict.d.ts +0 -101
  48. package/dist/package/declarations/src/rpc/system/admin/v1/base_dict_item.d.ts +107 -0
  49. package/dist/package/declarations/src/rpc/system/admin/v1/base_job.d.ts +5 -56
  50. package/dist/package/declarations/src/rpc/system/admin/v1/base_job_log.d.ts +60 -0
  51. package/dist/package/declarations/src/rpc/system/admin/v1/base_log.d.ts +77 -0
  52. package/dist/package/declarations/src/rpc/system/admin/v1/base_login_log.d.ts +92 -0
  53. package/dist/package/declarations/src/rpc/system/admin/v1/base_login_policy.d.ts +169 -41
  54. package/dist/package/declarations/src/rpc/system/admin/v1/base_operation_log.d.ts +106 -0
  55. package/dist/package/declarations/src/rpc/system/admin/v1/base_permission_log.d.ts +118 -0
  56. package/dist/package/declarations/src/rpc/system/admin/v1/base_policy_evaluation_log.d.ts +119 -0
  57. package/dist/package/declarations/src/rpc/system/admin/v1/base_redact_common.d.ts +9 -0
  58. package/dist/package/declarations/src/rpc/system/admin/v1/base_redact_field.d.ts +161 -0
  59. package/dist/package/declarations/src/rpc/system/admin/v1/base_redact_policy.d.ts +150 -0
  60. package/dist/package/declarations/src/rpc/system/admin/v1/base_redact_rule.d.ts +111 -0
  61. package/dist/package/declarations/src/rpc/system/admin/v1/base_table_archive.d.ts +90 -0
  62. package/dist/package/declarations/src/rpc/system/admin/v1/base_table_archive_record.d.ts +82 -0
  63. package/dist/package/declarations/src/rpc/system/admin/v1/base_table_archive_restore.d.ts +76 -0
  64. package/dist/package/declarations/src/rpc/system/admin/v1/base_table_backup.d.ts +74 -0
  65. package/dist/package/declarations/src/rpc/system/admin/v1/base_table_backup_record.d.ts +69 -0
  66. package/dist/package/declarations/src/rpc/system/admin/v1/base_table_backup_restore.d.ts +76 -0
  67. package/dist/package/declarations/src/rpc/system/admin/v1/base_table_source.d.ts +16 -0
  68. package/dist/package/declarations/src/rpc/system/admin/v1/base_user.d.ts +15 -0
  69. package/dist/package/declarations/src/rpc/system/admin/v1/cache.d.ts +47 -0
  70. package/dist/package/declarations/src/rpc/system/admin/v1/code_gen_column.d.ts +2 -0
  71. package/dist/package/declarations/src/rpc/system/admin/v1/code_gen_table.d.ts +8 -0
  72. package/dist/package/declarations/src/rpc/system/common/v1/common.d.ts +26 -0
  73. package/dist/package/declarations/src/rpc/system/config/v1/system_config.d.ts +8 -0
  74. package/dist/package/declarations/src/{api/system → utils}/code_gen_i18n.d.ts +1 -2
  75. package/dist/package/declarations/src/{api/system → utils}/code_gen_sse.d.ts +1 -1
  76. package/dist/package/declarations/src/utils/notification-response.d.ts +5 -0
  77. package/dist/package/declarations/src/{api/system → utils}/ops_monitoring_sse.d.ts +1 -1
  78. package/dist/package/declarations/src/{api/system → utils}/runtime_log_sse.d.ts +1 -1
  79. package/dist/package/declarations/src/views/base/backup-management/archive-config/index.vue.d.ts +3 -0
  80. package/dist/package/declarations/src/views/base/backup-management/archive-record/index.vue.d.ts +3 -0
  81. package/dist/package/declarations/src/views/base/backup-management/archive-restore/index.vue.d.ts +3 -0
  82. package/dist/package/declarations/src/views/base/backup-management/backup-config/index.vue.d.ts +3 -0
  83. package/dist/package/declarations/src/views/base/backup-management/backup-record/index.vue.d.ts +3 -0
  84. package/dist/package/declarations/src/views/base/backup-management/backup-restore/index.vue.d.ts +3 -0
  85. package/dist/package/declarations/src/views/base/login-policy/format.d.ts +2 -0
  86. package/dist/package/declarations/src/views/base/redact-field/index.vue.d.ts +3 -0
  87. package/dist/package/declarations/src/views/base/redact-policy/index.vue.d.ts +3 -0
  88. package/dist/package/declarations/src/views/base/redact-rule/index.vue.d.ts +3 -0
  89. package/dist/package/declarations/src/views/base/runtime-config/index.vue.d.ts +3 -0
  90. package/dist/package/declarations/src/views/tool/cache/index.vue.d.ts +3 -0
  91. package/dist/package/src/api/base/v1/notification.ts +99 -0
  92. package/dist/package/src/api/system/admin/v1/base_api_log.ts +33 -0
  93. package/dist/package/src/api/system/{base_area.ts → admin/v1/base_area.ts} +1 -1
  94. package/dist/package/src/api/system/{base_config.ts → admin/v1/base_config.ts} +20 -0
  95. package/dist/package/src/api/system/admin/v1/base_data_access_log.ts +33 -0
  96. package/dist/package/src/api/system/{base_dict.ts → admin/v1/base_dict.ts} +0 -60
  97. package/dist/package/src/api/system/admin/v1/base_dict_item.ts +72 -0
  98. package/dist/package/src/api/system/{base_job.ts → admin/v1/base_job.ts} +11 -22
  99. package/dist/package/src/api/system/admin/v1/base_job_log.ts +32 -0
  100. package/dist/package/src/api/system/{base_language.ts → admin/v1/base_language.ts} +3 -3
  101. package/dist/package/src/api/system/admin/v1/base_log.ts +23 -0
  102. package/dist/package/src/api/system/admin/v1/base_login_log.ts +33 -0
  103. package/dist/package/src/api/system/admin/v1/base_login_policy.ts +67 -0
  104. package/dist/package/src/api/system/{base_message.ts → admin/v1/base_message.ts} +29 -9
  105. package/dist/package/src/api/system/{base_message_category.ts → admin/v1/base_message_category.ts} +30 -7
  106. package/dist/package/src/api/system/admin/v1/base_operation_log.ts +33 -0
  107. package/dist/package/src/api/system/admin/v1/base_permission_log.ts +33 -0
  108. package/dist/package/src/api/system/admin/v1/base_policy_evaluation_log.ts +33 -0
  109. package/dist/package/src/api/system/admin/v1/base_table_archive.ts +70 -0
  110. package/dist/package/src/api/system/admin/v1/base_table_archive_record.ts +33 -0
  111. package/dist/package/src/api/system/admin/v1/base_table_archive_restore.ts +44 -0
  112. package/dist/package/src/api/system/admin/v1/base_table_backup.ts +70 -0
  113. package/dist/package/src/api/system/admin/v1/base_table_backup_record.ts +33 -0
  114. package/dist/package/src/api/system/admin/v1/base_table_backup_restore.ts +44 -0
  115. package/dist/package/src/api/system/admin/v1/base_table_source.ts +33 -0
  116. package/dist/package/src/api/system/admin/v1/cache.ts +22 -0
  117. package/dist/package/src/api/system/{code_gen_column.ts → admin/v1/code_gen_column.ts} +19 -3
  118. package/dist/package/src/api/system/{code_gen_table.ts → admin/v1/code_gen_table.ts} +13 -4
  119. package/dist/package/src/api/system/base_redact_field.ts +25 -0
  120. package/dist/package/src/api/system/base_redact_policy.ts +24 -0
  121. package/dist/package/src/api/system/base_redact_rule.ts +27 -0
  122. package/dist/package/src/components/Ai.vue +1 -1
  123. package/dist/package/src/components/ChangePasswordForm.vue +143 -0
  124. package/dist/package/src/components/DynamicI18nCell.vue +28 -8
  125. package/dist/package/src/components/DynamicI18nEditor.vue +1 -1
  126. package/dist/package/src/components/ForcedPasswordDialog.vue +40 -0
  127. package/dist/package/src/components/LogTable.vue +190 -0
  128. package/dist/package/src/components/Notification.vue +112 -7
  129. package/dist/package/src/components/dynamicI18n.ts +5 -9
  130. package/dist/package/src/components/log.ts +87 -0
  131. package/dist/package/src/config/base-log-fallback.ts +26 -0
  132. package/dist/package/src/config/database-backup.ts +57 -0
  133. package/dist/package/src/config/index.ts +26 -0
  134. package/dist/package/src/config/types.ts +59 -0
  135. package/dist/package/src/locales/README.md +2 -1
  136. package/dist/package/src/locales/en-US.json +285 -127
  137. package/dist/package/src/locales/ja-JP.json +285 -127
  138. package/dist/package/src/locales/zh-CN.json +285 -127
  139. package/dist/package/src/locales/zh-TW.json +285 -127
  140. package/dist/package/src/module.ts +3 -1
  141. package/dist/package/src/rpc/base/v1/login.ts +4 -2
  142. package/dist/package/src/rpc/base/v1/notification.ts +28 -0
  143. package/dist/package/src/rpc/system/admin/v1/auth.ts +13 -0
  144. package/dist/package/src/rpc/system/admin/v1/base_api.ts +2 -0
  145. package/dist/package/src/rpc/system/admin/v1/base_api_log.ts +102 -0
  146. package/dist/package/src/rpc/system/admin/v1/base_config.ts +42 -0
  147. package/dist/package/src/rpc/system/admin/v1/base_data_access_log.ts +135 -0
  148. package/dist/package/src/rpc/system/admin/v1/base_dict.ts +0 -112
  149. package/dist/package/src/rpc/system/admin/v1/base_dict_item.ts +126 -0
  150. package/dist/package/src/rpc/system/admin/v1/base_job.ts +5 -62
  151. package/dist/package/src/rpc/system/admin/v1/base_job_log.ts +75 -0
  152. package/dist/package/src/rpc/system/admin/v1/base_log.ts +90 -0
  153. package/dist/package/src/rpc/system/admin/v1/base_login_log.ts +113 -0
  154. package/dist/package/src/rpc/system/admin/v1/base_login_policy.ts +191 -42
  155. package/dist/package/src/rpc/system/admin/v1/base_operation_log.ts +127 -0
  156. package/dist/package/src/rpc/system/admin/v1/base_permission_log.ts +142 -0
  157. package/dist/package/src/rpc/system/admin/v1/base_policy_evaluation_log.ts +143 -0
  158. package/dist/package/src/rpc/system/admin/v1/base_redact_common.ts +17 -0
  159. package/dist/package/src/rpc/system/admin/v1/base_redact_field.ts +182 -0
  160. package/dist/package/src/rpc/system/admin/v1/base_redact_policy.ts +174 -0
  161. package/dist/package/src/rpc/system/admin/v1/base_redact_rule.ts +131 -0
  162. package/dist/package/src/rpc/system/admin/v1/base_table_archive.ts +109 -0
  163. package/dist/package/src/rpc/system/admin/v1/base_table_archive_record.ts +95 -0
  164. package/dist/package/src/rpc/system/admin/v1/base_table_archive_restore.ts +93 -0
  165. package/dist/package/src/rpc/system/admin/v1/base_table_backup.ts +91 -0
  166. package/dist/package/src/rpc/system/admin/v1/base_table_backup_record.ts +82 -0
  167. package/dist/package/src/rpc/system/admin/v1/base_table_backup_restore.ts +91 -0
  168. package/dist/package/src/rpc/system/admin/v1/base_table_source.ts +26 -0
  169. package/dist/package/src/rpc/system/admin/v1/base_user.ts +15 -0
  170. package/dist/package/src/rpc/system/admin/v1/cache.ts +59 -0
  171. package/dist/package/src/rpc/system/admin/v1/code_gen_column.ts +2 -0
  172. package/dist/package/src/rpc/system/admin/v1/code_gen_table.ts +8 -0
  173. package/dist/package/src/rpc/system/common/v1/common.ts +35 -0
  174. package/dist/package/src/rpc/system/config/v1/system_config.ts +16 -0
  175. package/dist/package/src/{api/system → utils}/code_gen_i18n.ts +1 -1
  176. package/dist/package/src/{api/system → utils}/code_gen_sse.ts +1 -1
  177. package/dist/package/src/utils/notification-response.ts +22 -0
  178. package/dist/package/src/{api/system → utils}/ops_monitoring_sse.ts +1 -1
  179. package/dist/package/src/{api/system → utils}/runtime_log_sse.ts +1 -1
  180. package/dist/package/src/views/ai/chat/components/AiMarkdown.vue +1 -1
  181. package/dist/package/src/views/ai/chat/components/ChatPanel.vue +2 -4
  182. package/dist/package/src/views/ai/chat/components/XSender.vue +1 -1
  183. package/dist/package/src/views/ai/chat/index.vue +3 -3
  184. package/dist/package/src/views/ai/chat/message.ts +3 -8
  185. package/dist/package/src/views/base/api/index.vue +4 -4
  186. package/dist/package/src/views/base/api-log/index.vue +56 -45
  187. package/dist/package/src/views/base/area/index.vue +1 -1
  188. package/dist/package/src/views/base/backup-management/archive-config/index.vue +151 -0
  189. package/dist/package/src/views/base/backup-management/archive-record/index.vue +44 -0
  190. package/dist/package/src/views/base/backup-management/archive-restore/index.vue +59 -0
  191. package/dist/package/src/views/base/backup-management/backup-config/index.vue +119 -0
  192. package/dist/package/src/views/base/backup-management/backup-record/index.vue +41 -0
  193. package/dist/package/src/views/base/backup-management/backup-restore/index.vue +66 -0
  194. package/dist/package/src/views/base/config/index.vue +16 -25
  195. package/dist/package/src/views/base/dashboard/index.vue +68 -66
  196. package/dist/package/src/views/base/data-access-log/index.vue +64 -52
  197. package/dist/package/src/views/base/dept/index.vue +11 -11
  198. package/dist/package/src/views/base/dict/index.vue +5 -5
  199. package/dist/package/src/views/base/dict/item.vue +12 -12
  200. package/dist/package/src/views/base/file/index.vue +220 -16
  201. package/dist/package/src/views/base/job/index.vue +5 -5
  202. package/dist/package/src/views/base/job/log.vue +38 -11
  203. package/dist/package/src/views/base/language/index.vue +1 -1
  204. package/dist/package/src/views/base/login-log/index.vue +49 -45
  205. package/dist/package/src/views/base/login-policy/format.ts +4 -0
  206. package/dist/package/src/views/base/login-policy/index.vue +496 -185
  207. package/dist/package/src/views/base/menu/index.vue +17 -17
  208. package/dist/package/src/views/base/message/index.vue +149 -19
  209. package/dist/package/src/views/base/message-category/index.vue +41 -10
  210. package/dist/package/src/views/base/migration/index.vue +2 -2
  211. package/dist/package/src/views/base/oauth-client/index.vue +19 -9
  212. package/dist/package/src/views/base/operation-log/index.vue +54 -50
  213. package/dist/package/src/views/base/permission-log/index.vue +57 -52
  214. package/dist/package/src/views/base/policy-evaluation-log/index.vue +61 -50
  215. package/dist/package/src/views/base/post/index.vue +11 -11
  216. package/dist/package/src/views/base/redact-field/index.vue +59 -0
  217. package/dist/package/src/views/base/redact-policy/index.vue +92 -0
  218. package/dist/package/src/views/base/redact-rule/index.vue +51 -0
  219. package/dist/package/src/views/base/role/index.vue +9 -9
  220. package/dist/package/src/views/base/runtime-config/index.vue +479 -0
  221. package/dist/package/src/views/base/tenant/index.vue +9 -9
  222. package/dist/package/src/views/base/user/components/dept-tree.vue +1 -1
  223. package/dist/package/src/views/base/user/index.vue +86 -47
  224. package/dist/package/src/views/message/inbox/index.vue +38 -11
  225. package/dist/package/src/views/profile/components/base.vue +84 -8
  226. package/dist/package/src/views/profile/components/password.vue +2 -228
  227. package/dist/package/src/views/profile/components/security.vue +3 -3
  228. package/dist/package/src/views/profile/components/session.vue +10 -2
  229. package/dist/package/src/views/profile/index.vue +10 -9
  230. package/dist/package/src/views/tool/api-doc/index.vue +3 -3
  231. package/dist/package/src/views/tool/cache/index.vue +352 -0
  232. package/dist/package/src/views/tool/code-gen/code-preview/index.vue +4 -4
  233. package/dist/package/src/views/tool/code-gen/columns/index.vue +16 -16
  234. package/dist/package/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue +2 -2
  235. package/dist/package/src/views/tool/code-gen/components/CodeGenProgressDialog.vue +2 -2
  236. package/dist/package/src/views/tool/code-gen/config.ts +2 -0
  237. package/dist/package/src/views/tool/code-gen/preview/index.vue +9 -9
  238. package/dist/package/src/views/tool/code-gen/proto/index.vue +10 -12
  239. package/dist/package/src/views/tool/code-gen/table/index.vue +71 -15
  240. package/dist/package/src/views/tool/ops-monitoring/index.vue +31 -96
  241. package/dist/package/src/views/tool/project-doc/index.vue +2 -2
  242. package/dist/package/src/views/tool/runtime-log/index.vue +6 -6
  243. package/package.json +7 -2
  244. package/dist/package/declarations/src/api/system/base_audit_log.d.ts +0 -55
  245. package/dist/package/declarations/src/api/system/base_dict.d.ts +0 -32
  246. package/dist/package/declarations/src/api/system/base_login_policy.d.ts +0 -10
  247. package/dist/package/declarations/src/components/auditLog.d.ts +0 -9
  248. package/dist/package/declarations/src/rpc/system/admin/v1/base_audit_log.d.ts +0 -640
  249. package/dist/package/src/api/base/notification.ts +0 -69
  250. package/dist/package/src/api/system/base_audit_log.ts +0 -168
  251. package/dist/package/src/api/system/base_login_policy.ts +0 -32
  252. package/dist/package/src/components/AuditLogTable.vue +0 -105
  253. package/dist/package/src/components/auditLog.ts +0 -46
  254. package/dist/package/src/rpc/system/admin/v1/base_audit_log.ts +0 -737
  255. /package/dist/package/declarations/src/api/base/{ai_message.d.ts → v1/ai_message.d.ts} +0 -0
  256. /package/dist/package/declarations/src/api/base/{ai_session.d.ts → v1/ai_session.d.ts} +0 -0
  257. /package/dist/package/declarations/src/api/base/{ai_tool.d.ts → v1/ai_tool.d.ts} +0 -0
  258. /package/dist/package/declarations/src/api/base/{oauth.d.ts → v1/oauth.d.ts} +0 -0
  259. /package/dist/package/declarations/src/api/base/{sse.d.ts → v1/sse.d.ts} +0 -0
  260. /package/dist/package/declarations/src/api/system/{auth.d.ts → admin/v1/auth.d.ts} +0 -0
  261. /package/dist/package/declarations/src/api/system/{base_api.d.ts → admin/v1/base_api.d.ts} +0 -0
  262. /package/dist/package/declarations/src/api/system/{base_dashboard.d.ts → admin/v1/base_dashboard.d.ts} +0 -0
  263. /package/dist/package/declarations/src/api/system/{base_dept.d.ts → admin/v1/base_dept.d.ts} +0 -0
  264. /package/dist/package/declarations/src/api/system/{base_file.d.ts → admin/v1/base_file.d.ts} +0 -0
  265. /package/dist/package/declarations/src/api/system/{base_i18n.d.ts → admin/v1/base_i18n.d.ts} +0 -0
  266. /package/dist/package/declarations/src/api/system/{base_menu.d.ts → admin/v1/base_menu.d.ts} +0 -0
  267. /package/dist/package/declarations/src/api/system/{base_message.d.ts → admin/v1/base_message.d.ts} +0 -0
  268. /package/dist/package/declarations/src/api/system/{base_message_category.d.ts → admin/v1/base_message_category.d.ts} +0 -0
  269. /package/dist/package/declarations/src/api/system/{base_migration.d.ts → admin/v1/base_migration.d.ts} +0 -0
  270. /package/dist/package/declarations/src/api/system/{base_post.d.ts → admin/v1/base_post.d.ts} +0 -0
  271. /package/dist/package/declarations/src/api/system/{base_role.d.ts → admin/v1/base_role.d.ts} +0 -0
  272. /package/dist/package/declarations/src/api/system/{base_session.d.ts → admin/v1/base_session.d.ts} +0 -0
  273. /package/dist/package/declarations/src/api/system/{base_tenant.d.ts → admin/v1/base_tenant.d.ts} +0 -0
  274. /package/dist/package/declarations/src/api/system/{base_user.d.ts → admin/v1/base_user.d.ts} +0 -0
  275. /package/dist/package/declarations/src/api/system/{code_gen.d.ts → admin/v1/code_gen.d.ts} +0 -0
  276. /package/dist/package/declarations/src/api/system/{code_gen_column.d.ts → admin/v1/code_gen_column.d.ts} +0 -0
  277. /package/dist/package/declarations/src/api/system/{code_gen_proto.d.ts → admin/v1/code_gen_proto.d.ts} +0 -0
  278. /package/dist/package/declarations/src/api/system/{code_gen_table.d.ts → admin/v1/code_gen_table.d.ts} +0 -0
  279. /package/dist/package/declarations/src/api/system/{oauth_client.d.ts → admin/v1/oauth_client.d.ts} +0 -0
  280. /package/dist/package/declarations/src/api/system/{ops_monitoring.d.ts → admin/v1/ops_monitoring.d.ts} +0 -0
  281. /package/dist/package/declarations/src/api/system/{project_document.d.ts → admin/v1/project_document.d.ts} +0 -0
  282. /package/dist/package/declarations/src/api/system/{runtime_log.d.ts → admin/v1/runtime_log.d.ts} +0 -0
  283. /package/dist/package/src/api/base/{ai_message.ts → v1/ai_message.ts} +0 -0
  284. /package/dist/package/src/api/base/{ai_session.ts → v1/ai_session.ts} +0 -0
  285. /package/dist/package/src/api/base/{ai_tool.ts → v1/ai_tool.ts} +0 -0
  286. /package/dist/package/src/api/base/{oauth.ts → v1/oauth.ts} +0 -0
  287. /package/dist/package/src/api/base/{sse.ts → v1/sse.ts} +0 -0
  288. /package/dist/package/src/api/system/{auth.ts → admin/v1/auth.ts} +0 -0
  289. /package/dist/package/src/api/system/{base_api.ts → admin/v1/base_api.ts} +0 -0
  290. /package/dist/package/src/api/system/{base_dashboard.ts → admin/v1/base_dashboard.ts} +0 -0
  291. /package/dist/package/src/api/system/{base_dept.ts → admin/v1/base_dept.ts} +0 -0
  292. /package/dist/package/src/api/system/{base_file.ts → admin/v1/base_file.ts} +0 -0
  293. /package/dist/package/src/api/system/{base_i18n.ts → admin/v1/base_i18n.ts} +0 -0
  294. /package/dist/package/src/api/system/{base_menu.ts → admin/v1/base_menu.ts} +0 -0
  295. /package/dist/package/src/api/system/{base_migration.ts → admin/v1/base_migration.ts} +0 -0
  296. /package/dist/package/src/api/system/{base_post.ts → admin/v1/base_post.ts} +0 -0
  297. /package/dist/package/src/api/system/{base_role.ts → admin/v1/base_role.ts} +0 -0
  298. /package/dist/package/src/api/system/{base_session.ts → admin/v1/base_session.ts} +0 -0
  299. /package/dist/package/src/api/system/{base_tenant.ts → admin/v1/base_tenant.ts} +0 -0
  300. /package/dist/package/src/api/system/{base_user.ts → admin/v1/base_user.ts} +0 -0
  301. /package/dist/package/src/api/system/{code_gen.ts → admin/v1/code_gen.ts} +0 -0
  302. /package/dist/package/src/api/system/{code_gen_proto.ts → admin/v1/code_gen_proto.ts} +0 -0
  303. /package/dist/package/src/api/system/{oauth_client.ts → admin/v1/oauth_client.ts} +0 -0
  304. /package/dist/package/src/api/system/{ops_monitoring.ts → admin/v1/ops_monitoring.ts} +0 -0
  305. /package/dist/package/src/api/system/{project_document.ts → admin/v1/project_document.ts} +0 -0
  306. /package/dist/package/src/api/system/{runtime_log.ts → admin/v1/runtime_log.ts} +0 -0
@@ -66,9 +66,9 @@ import type {
66
66
  } from "@liujitcn/kratos-admin-core/components/ProTable/interface";
67
67
  import type { ProFormField, ProFormOption } from "@liujitcn/kratos-admin-core/components/ProForm/interface";
68
68
  import SelectIcon from "@liujitcn/kratos-admin-core/components/SelectIcon/index.vue";
69
- import { defBaseMenuService } from "@liujitcn/kratos-admin-system/api/system/base_menu";
70
- import { loadEnabledBaseLanguages } from "@liujitcn/kratos-admin-system/api/system/base_language";
71
- import { defBaseApiService } from "@liujitcn/kratos-admin-system/api/system/base_api";
69
+ import { defBaseMenuService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_menu";
70
+ import { loadEnabledBaseLanguages } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_language";
71
+ import { defBaseApiService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_api";
72
72
  import { useAuthButtons } from "@liujitcn/kratos-admin-core/auth";
73
73
  import type { BaseApi } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_api";
74
74
  import type {
@@ -96,7 +96,7 @@ defineOptions({
96
96
  inheritAttrs: false
97
97
  });
98
98
 
99
- const APP_MENU_ROOT_ID = 999;
99
+ const APP_MENU_ROOT_ID = 99000000;
100
100
 
101
101
  /**
102
102
  * 菜单表单状态,统一补齐 meta 字段,便于 ProForm 直接双向绑定。
@@ -113,7 +113,7 @@ const menuOptions = ref<ProFormOption[]>([]);
113
113
  const parentMenuTypeMap = ref(new Map<number, BaseMenuType>());
114
114
  const appMenuIds = ref(new Set<number>([APP_MENU_ROOT_ID]));
115
115
  const apiList = ref<BaseApi[]>([]);
116
- const i18nValues = ref<DynamicI18nValue[]>(normalizeDynamicI18ns(undefined, "title"));
116
+ const i18nValues = ref<DynamicI18nValue[]>(normalizeDynamicI18ns(undefined));
117
117
 
118
118
  const dialog = reactive({
119
119
  editing: false,
@@ -192,21 +192,21 @@ function isAppTab(parentId?: number) {
192
192
  return parentId === APP_MENU_ROOT_ID;
193
193
  }
194
194
 
195
- /** 根据三、五、七、九位编号识别菜单层级。 */
195
+ /** 根据固定八位编号中的非零层级槽位识别菜单层级。 */
196
196
  function getMenuLevel(menuId: number) {
197
- if (menuId >= 100 && menuId <= 999) return 1;
198
- if (menuId >= 10000 && menuId <= 99999) return 2;
199
- if (menuId >= 1000000 && menuId <= 9999999) return 3;
200
- if (menuId >= 100000000 && menuId <= 999999999) return 4;
201
- return 0;
197
+ if (menuId < 10000000 || menuId > 99999999) return 0;
198
+ if (menuId % 1000000 === 0) return 1;
199
+ if (menuId % 10000 === 0) return 2;
200
+ if (menuId % 100 === 0) return 3;
201
+ return 4;
202
202
  }
203
203
 
204
204
  /** 判断当前菜单是否还能继续新增下级节点。 */
205
205
  function canCreateChild(menu: BaseMenu) {
206
206
  const level = getMenuLevel(menu.id);
207
207
  if (menu.id === APP_MENU_ROOT_ID || isAppMenu(menu.parent_id)) return level >= 1 && level < 4;
208
- if (menu.type === BaseMenuType.BASE_MENU_TYPE_FOLDER) return level === 1 || level === 2;
209
- if (menu.type === BaseMenuType.BASE_MENU_TYPE_MENU) return level === 2 || level === 3;
208
+ if (menu.type === BaseMenuType.BASE_MENU_TYPE_FOLDER) return level === 1 || level === 2 || level === 3;
209
+ if (menu.type === BaseMenuType.BASE_MENU_TYPE_MENU) return level === 2 || level === 3 || level === 4;
210
210
  return false;
211
211
  }
212
212
 
@@ -219,18 +219,18 @@ const availableMenuTypeOptions = computed(() => {
219
219
  if (isAppMenu(formData.parent_id)) return menuTypeOptions.value.filter(item => item.value === BaseMenuType.BASE_MENU_TYPE_MENU);
220
220
  if (formData.id > 0 && parentLevel === 0)
221
221
  return menuTypeOptions.value.filter(item => item.value === BaseMenuType.BASE_MENU_TYPE_FOLDER);
222
- if (dialog.parentType === BaseMenuType.BASE_MENU_TYPE_FOLDER && parentLevel === 1)
222
+ if (dialog.parentType === BaseMenuType.BASE_MENU_TYPE_FOLDER && (parentLevel === 1 || parentLevel === 2))
223
223
  return menuTypeOptions.value.filter(
224
224
  item =>
225
225
  item.value === BaseMenuType.BASE_MENU_TYPE_FOLDER ||
226
226
  item.value === BaseMenuType.BASE_MENU_TYPE_MENU ||
227
227
  item.value === BaseMenuType.BASE_MENU_TYPE_EXT_LINK
228
228
  );
229
- if (dialog.parentType === BaseMenuType.BASE_MENU_TYPE_FOLDER && parentLevel === 2)
229
+ if (dialog.parentType === BaseMenuType.BASE_MENU_TYPE_FOLDER && parentLevel === 3)
230
230
  return menuTypeOptions.value.filter(
231
231
  item => item.value === BaseMenuType.BASE_MENU_TYPE_MENU || item.value === BaseMenuType.BASE_MENU_TYPE_EXT_LINK
232
232
  );
233
- if (dialog.parentType === BaseMenuType.BASE_MENU_TYPE_MENU && (parentLevel === 2 || parentLevel === 3))
233
+ if (dialog.parentType === BaseMenuType.BASE_MENU_TYPE_MENU && (parentLevel === 2 || parentLevel === 3 || parentLevel === 4))
234
234
  return menuTypeOptions.value.filter(item => item.value === BaseMenuType.BASE_MENU_TYPE_BUTTON);
235
235
  return [];
236
236
  });
@@ -1145,7 +1145,7 @@ function resetForm(data?: Partial<BaseMenuForm>) {
1145
1145
  formDialogRef.value?.resetFields();
1146
1146
  formDialogRef.value?.clearValidate();
1147
1147
  Object.assign(formData, normalizeMenuForm(data));
1148
- i18nValues.value = normalizeDynamicI18ns(data?.i18ns as DynamicI18nRecord[] | undefined, "title");
1148
+ i18nValues.value = normalizeDynamicI18ns(data?.i18ns as DynamicI18nRecord[] | undefined);
1149
1149
  }
1150
1150
 
1151
1151
  /** 提交菜单表单,并在成功后关闭弹窗、刷新表格。 */
@@ -6,11 +6,12 @@
6
6
  ref="formDialogRef"
7
7
  :title="t(dialog.titleKey)"
8
8
  width="900px"
9
+ destroy-on-close
9
10
  :model="formState"
10
11
  :fields="formFields"
11
12
  :rules="rules"
12
13
  @confirm="handleSubmit"
13
- @close="handleClose"
14
+ @closed="handleClose"
14
15
  >
15
16
  <template #audiences>
16
17
  <div class="audiences-editor">
@@ -45,24 +46,72 @@
45
46
  </div>
46
47
  </template>
47
48
  </FormDialog>
48
- <el-dialog v-model="detail.visible" :title="t('system.base.message.detail.title')" width="900px">
49
+ <ProDialog
50
+ v-model="content.visible"
51
+ :title="content.data?.base_message?.title || t('system.base.message.content.title')"
52
+ width="760px"
53
+ destroy-on-close
54
+ :show-footer="false"
55
+ >
56
+ <el-skeleton v-if="content.loading" :rows="8" animated />
57
+ <template v-else-if="content.data">
58
+ <div class="message-content-meta">
59
+ <span>{{ content.data.base_message?.category_name || "-" }}</span>
60
+ <span>{{ content.data.base_message?.created_at || "-" }}</span>
61
+ </div>
62
+ <RichTextPreview
63
+ v-if="content.data.form?.content_format === MessageContentFormat.MESSAGE_CONTENT_FORMAT_RICH_TEXT"
64
+ class="message-content-body"
65
+ :model-value="content.data.form?.content ?? ''"
66
+ />
67
+ <pre v-else class="message-content-body">{{ content.data.form?.content ?? "" }}</pre>
68
+ </template>
69
+ </ProDialog>
70
+ <ProDialog
71
+ v-model="detail.visible"
72
+ :title="t('system.base.message.send_detail.title')"
73
+ width="min(1200px, calc(100vw - 32px))"
74
+ :show-footer="false"
75
+ >
49
76
  <template v-if="detail.data">
50
77
  <el-descriptions :column="2" border>
51
78
  <el-descriptions-item :label="t('system.base.message.field.title')">{{
52
79
  detail.data.base_message?.title
53
80
  }}</el-descriptions-item>
81
+ <el-descriptions-item :label="t('system.base.message.field.category')">{{
82
+ detail.data.base_message?.category_name
83
+ }}</el-descriptions-item>
54
84
  <el-descriptions-item :label="t('common.field.status')">{{
55
85
  optionLabel(statusOptions, detail.data.base_message?.status)
56
86
  }}</el-descriptions-item>
87
+ <el-descriptions-item :label="t('system.base.message.field.sender')">{{
88
+ detail.data.base_message?.sender_name
89
+ }}</el-descriptions-item>
57
90
  <el-descriptions-item :label="t('system.base.message.field.delivered_total')">{{
58
91
  detail.data.base_message?.delivered_total
59
92
  }}</el-descriptions-item>
60
93
  <el-descriptions-item :label="t('system.base.message.field.recipient_total')">{{
61
94
  detail.data.base_message?.recipient_total
62
95
  }}</el-descriptions-item>
96
+ <el-descriptions-item :label="t('system.base.message.field.failed_total')">{{
97
+ detail.data.base_message?.failed_total
98
+ }}</el-descriptions-item>
99
+ <el-descriptions-item :label="t('system.base.message.field.published_at')">{{
100
+ detail.data.base_message?.published_at || "-"
101
+ }}</el-descriptions-item>
102
+ <el-descriptions-item :label="t('system.base.message.field.scheduled_at')">{{
103
+ detail.data.base_message?.scheduled_at || "-"
104
+ }}</el-descriptions-item>
63
105
  </el-descriptions>
64
106
  <el-table :data="detail.data.dispatches" style="margin-top: 16px" size="small">
65
107
  <el-table-column prop="id" label="ID" width="90" />
108
+ <el-table-column prop="audience_type" :label="t('system.base.message.field.audience_type')" width="120">
109
+ <template #default="scope">{{ optionLabel(audienceOptions, scope.row.audience_type) }}</template>
110
+ </el-table-column>
111
+ <el-table-column prop="audience_id" :label="t('system.base.message.field.audience_id')" width="110" />
112
+ <el-table-column prop="include_children" :label="t('system.base.message.field.include_children')" width="120">
113
+ <template #default="scope">{{ scope.row.include_children ? t("common.value.yes") : t("common.value.no") }}</template>
114
+ </el-table-column>
66
115
  <el-table-column prop="status" :label="t('common.field.status')" width="120" />
67
116
  <el-table-column prop="matched_total" :label="t('system.base.message.field.matched_total')" width="110" />
68
117
  <el-table-column prop="inserted_total" :label="t('system.base.message.field.inserted_total')" width="110" />
@@ -87,14 +136,16 @@
87
136
  </el-table-column>
88
137
  </el-table>
89
138
  </template>
90
- </el-dialog>
139
+ </ProDialog>
91
140
  </div>
92
141
  </template>
93
142
 
94
143
  <script setup lang="ts">
95
- import { computed, onMounted, reactive, ref, watch } from "vue";
144
+ import { computed, h, onMounted, reactive, ref, watch } from "vue";
96
145
  import ProTable from "@liujitcn/kratos-admin-core/components/ProTable";
146
+ import ProDialog from "@liujitcn/kratos-admin-core/components/Dialog/ProDialog.vue";
97
147
  import FormDialog from "@liujitcn/kratos-admin-core/components/Dialog/FormDialog.vue";
148
+ import RichTextPreview from "@liujitcn/kratos-admin-core/components/RichTextPreview/index.vue";
98
149
  import type { ColumnProps, HeaderActionProps, ProTableInstance } from "@liujitcn/kratos-admin-core/components/ProTable/interface";
99
150
  import type { ProFormField, ProFormOption } from "@liujitcn/kratos-admin-core/components/ProForm/interface";
100
151
  import { useAuthButtons } from "@liujitcn/kratos-admin-core/auth";
@@ -102,9 +153,9 @@ import { buildPageRequest, normalizeSelectedIds } from "@liujitcn/kratos-admin-c
102
153
  import { DEFAULT_TENANT_CODE, requestTenantOptions } from "@liujitcn/kratos-admin-core/tenant";
103
154
  import { useUserStore } from "@liujitcn/kratos-admin-core/stores/runtime";
104
155
  import { t } from "@liujitcn/kratos-admin-core";
105
- import { defBaseMessageService } from "@liujitcn/kratos-admin-system/api/system/base_message";
106
- import { defBaseMessageCategoryService } from "@liujitcn/kratos-admin-system/api/system/base_message_category";
107
- import { defBaseTenantService } from "@liujitcn/kratos-admin-system/api/system/base_tenant";
156
+ import { defBaseMessageService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_message";
157
+ import { defBaseMessageCategoryService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_message_category";
158
+ import { defBaseTenantService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_tenant";
108
159
  import type {
109
160
  BaseMessage,
110
161
  BaseMessageDetail,
@@ -145,6 +196,7 @@ const formDialogRef = ref<InstanceType<typeof FormDialog>>();
145
196
  const categoryOptions = ref<ProFormOption[]>([]);
146
197
  const tenantOptions = ref<ProFormOption[]>([]);
147
198
  const dialog = reactive({ visible: false, titleKey: "common.action.create" });
199
+ const content = reactive<{ visible: boolean; loading: boolean; data?: BaseMessageDetail }>({ visible: false, loading: false });
148
200
  const detail = reactive<{ visible: boolean; data?: BaseMessageDetail }>({ visible: false });
149
201
  const formState = reactive<MessageFormState>(defaultForm());
150
202
 
@@ -171,7 +223,10 @@ const statusOptions = computed<ProFormOption[]>(() => [
171
223
  { label: t("system.base.message.status.published"), value: MessageStatus.MESSAGE_STATUS_PUBLISHED },
172
224
  { label: t("system.base.message.status.revoked"), value: MessageStatus.MESSAGE_STATUS_REVOKED }
173
225
  ]);
174
- onMounted(() => void loadTenantOptions());
226
+ onMounted(() => {
227
+ void loadCategoryOptions();
228
+ void loadTenantOptions();
229
+ });
175
230
  watch(
176
231
  () => formState.action_type,
177
232
  value => {
@@ -244,7 +299,11 @@ const formFields = computed<ProFormField[]>(() => [
244
299
  label: t("system.base.message.field.content"),
245
300
  labelTooltip: t("system.base.message.tooltip.content"),
246
301
  component: "rich-text",
247
- props: { height: "320px", editorConfig: { placeholder: t("system.base.message.placeholder.content") } },
302
+ props: {
303
+ height: "320px",
304
+ uploadType: "message",
305
+ editorConfig: { placeholder: t("system.base.message.placeholder.content") }
306
+ },
248
307
  colSpan: 24
249
308
  },
250
309
  {
@@ -310,8 +369,42 @@ const columns = computed<ColumnProps[]>(() => [
310
369
  }
311
370
  ] satisfies ColumnProps[])
312
371
  : []),
313
- { prop: "title", label: t("system.base.message.field.title"), minWidth: 220, search: { el: "input" } },
314
- { prop: "category_name", label: t("system.base.message.field.category"), minWidth: 130 },
372
+ {
373
+ prop: "title",
374
+ label: t("system.base.message.field.title"),
375
+ minWidth: 220,
376
+ search: { el: "input" },
377
+ render: scope => {
378
+ const row = scope.row as BaseMessage;
379
+ return h(
380
+ "a",
381
+ {
382
+ href: "#",
383
+ title: row.title,
384
+ style: {
385
+ display: "block",
386
+ maxWidth: "100%",
387
+ overflow: "hidden",
388
+ color: "var(--el-color-primary)",
389
+ textDecoration: "none",
390
+ textOverflow: "ellipsis",
391
+ whiteSpace: "nowrap"
392
+ },
393
+ onClick: (event: MouseEvent) => {
394
+ event.preventDefault();
395
+ void openContent(row.id);
396
+ }
397
+ },
398
+ row.title
399
+ );
400
+ }
401
+ },
402
+ {
403
+ prop: "category_name",
404
+ label: t("system.base.message.field.category"),
405
+ minWidth: 130,
406
+ search: { el: "select", key: "category_id", enum: categoryOptions.value }
407
+ },
315
408
  {
316
409
  prop: "priority",
317
410
  label: t("system.base.message.field.priority"),
@@ -330,7 +423,8 @@ const columns = computed<ColumnProps[]>(() => [
330
423
  {
331
424
  prop: "operation",
332
425
  label: t("common.field.operation"),
333
- width: 260,
426
+ width: 380,
427
+ className: "message-operation-column",
334
428
  fixed: "right",
335
429
  cellType: "actions",
336
430
  actions: [
@@ -343,7 +437,7 @@ const columns = computed<ColumnProps[]>(() => [
343
437
  onClick: scope => openDialog((scope.row as BaseMessage).id)
344
438
  },
345
439
  {
346
- label: t("system.base.message.detail.action"),
440
+ label: t("system.base.message.send_detail.action"),
347
441
  link: true,
348
442
  icon: View,
349
443
  onClick: scope => openDetail((scope.row as BaseMessage).id)
@@ -399,7 +493,7 @@ const headerActions = computed<HeaderActionProps[]>(() => [
399
493
  onClick: () => openDialog()
400
494
  },
401
495
  {
402
- label: t("common.action.batch_delete"),
496
+ label: t("common.action.delete"),
403
497
  type: "danger",
404
498
  icon: Delete,
405
499
  hidden: !BUTTONS.value["base:message:delete"],
@@ -465,7 +559,6 @@ async function loadTenantOptions() {
465
559
  if (!isDefaultTenant.value) return;
466
560
  const result = await defBaseTenantService.OptionBaseTenant({ keyword: "" });
467
561
  tenantOptions.value = result.list.map(item => ({ label: item.label, value: item.value }));
468
- await loadCategoryOptions();
469
562
  }
470
563
 
471
564
  /** 加载消息分类选项。 */
@@ -505,12 +598,26 @@ async function handleSubmit() {
505
598
  proTable.value?.getTableList();
506
599
  }
507
600
 
508
- /** 打开消息详情并加载投递进度。 */
601
+ /** 打开发送详情并加载投递进度。 */
509
602
  async function openDetail(id: number) {
510
603
  detail.data = await defBaseMessageService.GetBaseMessage({ id });
511
604
  detail.visible = true;
512
605
  }
513
606
 
607
+ /** 打开消息正文并单独展示内容。 */
608
+ async function openContent(id: number) {
609
+ content.visible = true;
610
+ content.loading = true;
611
+ content.data = undefined;
612
+ try {
613
+ content.data = await defBaseMessageService.GetBaseMessage({ id });
614
+ } catch {
615
+ content.visible = false;
616
+ } finally {
617
+ content.loading = false;
618
+ }
619
+ }
620
+
514
621
  /** 重试失败的消息投递任务并刷新详情。 */
515
622
  async function retryDispatch(id: number) {
516
623
  await defBaseMessageService.RetryBaseMessageDispatch({ id });
@@ -522,7 +629,7 @@ async function retryDispatch(id: number) {
522
629
  /** 删除草稿消息。 */
523
630
  async function handleDelete(value: BaseMessage | BaseMessage[] | number | number[]) {
524
631
  const ids = normalizeSelectedIds(value as Parameters<typeof normalizeSelectedIds>[0]);
525
- await ElMessageBox.confirm(t("common.confirm.delete"), t("common.tips"), { type: "warning" });
632
+ await ElMessageBox.confirm(t("common.confirm.delete"), t("common.title.warning"), { type: "warning" });
526
633
  await defBaseMessageService.DeleteBaseMessage({ id: ids.join(",") });
527
634
  ElMessage.success(t("common.message.operation_success"));
528
635
  proTable.value?.getTableList();
@@ -530,7 +637,7 @@ async function handleDelete(value: BaseMessage | BaseMessage[] | number | number
530
637
 
531
638
  /** 发布消息。 */
532
639
  async function publishMessage(row: BaseMessage) {
533
- await ElMessageBox.confirm(t("system.base.message.confirm.publish"), t("common.tips"), { type: "warning" });
640
+ await ElMessageBox.confirm(t("system.base.message.confirm.publish"), t("common.title.warning"), { type: "warning" });
534
641
  await defBaseMessageService.PublishBaseMessage({ id: row.id });
535
642
  proTable.value?.getTableList();
536
643
  }
@@ -543,7 +650,7 @@ async function cancelSchedule(row: BaseMessage) {
543
650
 
544
651
  /** 撤回消息。 */
545
652
  async function revokeMessage(row: BaseMessage) {
546
- await ElMessageBox.confirm(t("system.base.message.confirm.revoke"), t("common.tips"), { type: "warning" });
653
+ await ElMessageBox.confirm(t("system.base.message.confirm.revoke"), t("common.title.warning"), { type: "warning" });
547
654
  await defBaseMessageService.RevokeBaseMessage({ id: row.id });
548
655
  proTable.value?.getTableList();
549
656
  }
@@ -579,4 +686,27 @@ function optionLabel(options: ProFormOption[], value: unknown) {
579
686
  .audience-id {
580
687
  width: 160px;
581
688
  }
689
+
690
+ .message-content-meta {
691
+ display: flex;
692
+ align-items: center;
693
+ gap: 12px;
694
+ margin-bottom: 16px;
695
+ color: var(--el-text-color-secondary);
696
+ font-size: 13px;
697
+ }
698
+
699
+ .message-content-body {
700
+ max-height: 60vh;
701
+ margin: 0;
702
+ overflow: auto;
703
+ padding: 12px;
704
+ border: 1px solid var(--el-border-color-lighter);
705
+ color: var(--el-text-color-primary);
706
+ overflow-wrap: anywhere;
707
+ }
708
+
709
+ pre.message-content-body {
710
+ white-space: pre-wrap;
711
+ }
582
712
  </style>
@@ -26,7 +26,7 @@ import { buildPageRequest, normalizeSelectedIds } from "@liujitcn/kratos-admin-c
26
26
  import { DEFAULT_TENANT_CODE } from "@liujitcn/kratos-admin-core/tenant";
27
27
  import { useUserStore } from "@liujitcn/kratos-admin-core/stores/runtime";
28
28
  import { t } from "@liujitcn/kratos-admin-core";
29
- import { defBaseMessageCategoryService } from "@liujitcn/kratos-admin-system/api/system/base_message_category";
29
+ import { defBaseMessageCategoryService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_message_category";
30
30
  import type {
31
31
  BaseMessageCategory,
32
32
  BaseMessageCategoryForm,
@@ -207,7 +207,7 @@ const columns = computed<ColumnProps[]>(() => [
207
207
  display: "inline-block",
208
208
  width: "18px",
209
209
  height: "18px",
210
- borderRadius: "4px",
210
+ borderRadius: "var(--admin-page-radius)",
211
211
  backgroundColor: (scope.row as BaseMessageCategory).color || "var(--el-fill-color-light)"
212
212
  }
213
213
  })
@@ -270,7 +270,7 @@ const headerActions = computed<HeaderActionProps[]>(() => [
270
270
  onClick: () => openDialog()
271
271
  },
272
272
  {
273
- label: t("common.action.batch_delete"),
273
+ label: t("common.action.delete"),
274
274
  type: "danger",
275
275
  icon: Delete,
276
276
  hidden: !isDefaultTenant.value || !BUTTONS.value["base:message-category:delete"],
@@ -324,18 +324,49 @@ async function handleSubmit() {
324
324
 
325
325
  /** 删除消息分类。 */
326
326
  async function handleDelete(value: BaseMessageCategory | BaseMessageCategory[] | number | number[]) {
327
- const ids = normalizeSelectedIds(value as Parameters<typeof normalizeSelectedIds>[0]);
328
- await ElMessageBox.confirm(t("common.confirm.delete"), t("common.tips"), { type: "warning" });
329
- await defBaseMessageCategoryService.DeleteBaseMessageCategory({ id: ids.join(",") });
327
+ const idList = Array.isArray(value)
328
+ ? value.map(item => (typeof item === "object" ? item.id : item))
329
+ : typeof value === "object"
330
+ ? [value.id]
331
+ : normalizeSelectedIds(value);
332
+ const ids = idList.join(",");
333
+ if (!ids) {
334
+ ElMessage.warning(t("common.message.select_delete_item"));
335
+ return;
336
+ }
337
+ await ElMessageBox.confirm(t("common.confirm.delete"), t("common.title.warning"), { type: "warning" });
338
+ await defBaseMessageCategoryService.DeleteBaseMessageCategory({ id: ids });
339
+ await proTable.value?.getTableList();
330
340
  ElMessage.success(t("common.message.operation_success"));
331
- proTable.value?.getTableList();
332
341
  }
333
342
 
334
343
  /** 设置消息分类状态。 */
335
344
  async function handleSetStatus(row: BaseMessageCategory) {
336
345
  const status = row.status === Status.STATUS_ENABLE ? Status.STATUS_DISABLE : Status.STATUS_ENABLE;
337
- await defBaseMessageCategoryService.SetBaseMessageCategoryStatus({ id: row.id, status });
338
- return true;
346
+ const action = t(status === Status.STATUS_ENABLE ? "common.status.enabled" : "common.status.disabled");
347
+ const name = row.name || row.code || `ID:${row.id}`;
348
+ try {
349
+ await ElMessageBox.confirm(
350
+ t("common.dialog.status_change", {
351
+ action,
352
+ resource: t("system.base.message_category.resource"),
353
+ field: t("system.base.message_category.field.name"),
354
+ value: name
355
+ }),
356
+ t("common.title.notice"),
357
+ {
358
+ confirmButtonText: t("common.action.confirm"),
359
+ cancelButtonText: t("common.action.cancel"),
360
+ type: "warning"
361
+ }
362
+ );
363
+ await defBaseMessageCategoryService.SetBaseMessageCategoryStatus({ id: row.id, status });
364
+ ElMessage.success(t("common.message.status_success", { action }));
365
+ await proTable.value?.getTableList();
366
+ return true;
367
+ } catch {
368
+ return false;
369
+ }
339
370
  }
340
371
 
341
372
  /** 关闭消息分类表单。 */
@@ -349,7 +380,7 @@ function priorityLabel(priority: MessagePriority) {
349
380
  return priorityOptions.value.find(item => item.value === priority)?.label ?? "";
350
381
  }
351
382
 
352
- /** 解析消息分类图标,兼容历史数据中的未知图标名。 */
383
+ /** 解析消息分类图标,未知图标使用默认图标。 */
353
384
  function resolveCategoryIcon(icon: string) {
354
385
  return categoryIcons[icon] ?? CollectionTag;
355
386
  }
@@ -180,7 +180,7 @@ import { CopyDocument, Document, DocumentAdd, DocumentRemove, Files, Refresh, Se
180
180
  import MarkdownPreview from "@liujitcn/kratos-admin-core/components/MarkdownPreview/index.vue";
181
181
  import { useGlobalStore } from "@liujitcn/kratos-admin-core/stores/runtime";
182
182
  import { buildPageRequest } from "@liujitcn/kratos-admin-core/table";
183
- import { defBaseMigrationService } from "@liujitcn/kratos-admin-system/api/system/base_migration";
183
+ import { defBaseMigrationService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_migration";
184
184
  import type {
185
185
  BaseMigration,
186
186
  BaseMigrationListItem,
@@ -643,7 +643,7 @@ onMounted(() => {
643
643
  font-weight: 500;
644
644
  color: var(--admin-page-text-secondary);
645
645
  background: var(--admin-page-card-bg-muted);
646
- border-radius: 4px;
646
+ border-radius: var(--admin-page-radius);
647
647
  }
648
648
 
649
649
  .sql-panel {
@@ -33,8 +33,8 @@ import { useAuthButtons } from "@liujitcn/kratos-admin-core/auth";
33
33
  import { buildPageRequest, normalizeSelectedIds } from "@liujitcn/kratos-admin-core/table";
34
34
  import { t } from "@liujitcn/kratos-admin-core";
35
35
  import { copyText } from "@liujitcn/kratos-admin-core/security";
36
- import { defOauthClientService } from "@liujitcn/kratos-admin-system/api/system/oauth_client";
37
- import { defBaseTenantService } from "@liujitcn/kratos-admin-system/api/system/base_tenant";
36
+ import { defOauthClientService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/oauth_client";
37
+ import { defBaseTenantService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_tenant";
38
38
  import type { BaseApi } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_api";
39
39
  import {
40
40
  OauthClientCryptoType,
@@ -47,6 +47,12 @@ import { Status } from "@liujitcn/kratos-admin-system/rpc/common/v1/enum";
47
47
  import { useUserStore } from "@liujitcn/kratos-admin-core/stores/runtime";
48
48
  import { DEFAULT_TENANT_CODE, requestTenantOptions } from "@liujitcn/kratos-admin-core/tenant";
49
49
 
50
+ /** 开放授权客户端表单状态,新增时租户保持未选择。 */
51
+ type OauthClientFormState = Omit<OauthClientForm, "tenant_id"> & {
52
+ /** 绑定租户ID。 */
53
+ tenant_id?: number;
54
+ };
55
+
50
56
  defineOptions({
51
57
  name: "OauthClient",
52
58
  inheritAttrs: false
@@ -65,9 +71,9 @@ const dialog = reactive({
65
71
  visible: false
66
72
  });
67
73
 
68
- const formData = reactive<OauthClientForm>({
74
+ const formData = reactive<OauthClientFormState>({
69
75
  id: 0,
70
- tenant_id: 0,
76
+ tenant_id: undefined,
71
77
  client_name: "",
72
78
  crypto_type: OauthClientCryptoType.OAUTH_CLIENT_CRYPTO_TYPE_SM4,
73
79
  ip_whitelist: "",
@@ -102,7 +108,7 @@ const rules = computed(() => ({
102
108
  tenant_id: [
103
109
  {
104
110
  required: isDefaultTenant.value,
105
- message: t("common.validation.required_select", { field: t("system.base.oauth_client.field.tenant") }),
111
+ message: t("common.validation.required_select", { field: t("common.field.tenant") }),
106
112
  trigger: "change"
107
113
  }
108
114
  ],
@@ -133,9 +139,13 @@ const rules = computed(() => ({
133
139
  const formFields = computed<ProFormField[]>(() => [
134
140
  {
135
141
  prop: "tenant_id",
136
- label: t("system.base.oauth_client.field.tenant"),
142
+ label: t("common.field.tenant"),
137
143
  component: "select",
138
- props: { filterable: true, disabled: Boolean(formData.id) },
144
+ props: {
145
+ filterable: true,
146
+ disabled: Boolean(formData.id),
147
+ placeholder: t("common.placeholder.select")
148
+ },
139
149
  options: tenantOptions.value,
140
150
  visible: () => isDefaultTenant.value
141
151
  },
@@ -178,7 +188,7 @@ const columns = computed<ColumnProps[]>(() => [
178
188
  ? ([
179
189
  {
180
190
  prop: "tenant_id",
181
- label: t("system.base.oauth_client.field.tenant"),
191
+ label: t("common.field.tenant"),
182
192
  minWidth: 130,
183
193
  search: { el: "select", key: "tenant_id", props: { filterable: true }, order: 1 },
184
194
  enum: requestTenantOptions,
@@ -304,7 +314,7 @@ function resetForm() {
304
314
  formDialogRef.value?.clearValidate();
305
315
  Object.assign(formData, {
306
316
  id: 0,
307
- tenant_id: 0,
317
+ tenant_id: undefined,
308
318
  client_name: "",
309
319
  crypto_type: OauthClientCryptoType.OAUTH_CLIENT_CRYPTO_TYPE_SM4,
310
320
  ip_whitelist: "",