@liujitcn/kratos-admin-system 0.0.29 → 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 (332) hide show
  1. package/README.md +46 -15
  2. package/dist/package/declarations/src/api/base/v1/notification.d.ts +26 -0
  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_dashboard.d.ts +14 -0
  7. package/dist/package/declarations/src/api/system/admin/v1/base_data_access_log.d.ts +10 -0
  8. package/dist/package/declarations/src/api/system/admin/v1/base_dict.d.ts +20 -0
  9. package/dist/package/declarations/src/api/system/admin/v1/base_dict_item.d.ts +18 -0
  10. package/dist/package/declarations/src/api/system/admin/v1/base_file.d.ts +13 -0
  11. package/dist/package/declarations/src/api/system/{base_job.d.ts → admin/v1/base_job.d.ts} +4 -5
  12. package/dist/package/declarations/src/api/system/admin/v1/base_job_log.d.ts +9 -0
  13. package/dist/package/declarations/src/api/system/{base_language.d.ts → admin/v1/base_language.d.ts} +3 -3
  14. package/dist/package/declarations/src/api/system/admin/v1/base_log.d.ts +8 -0
  15. package/dist/package/declarations/src/api/system/admin/v1/base_login_log.d.ts +10 -0
  16. package/dist/package/declarations/src/api/system/admin/v1/base_login_policy.d.ts +19 -0
  17. package/dist/package/declarations/src/api/system/admin/v1/base_message.d.ts +24 -0
  18. package/dist/package/declarations/src/api/system/admin/v1/base_message_category.d.ts +21 -0
  19. package/dist/package/declarations/src/api/system/admin/v1/base_operation_log.d.ts +10 -0
  20. package/dist/package/declarations/src/api/system/admin/v1/base_permission_log.d.ts +10 -0
  21. package/dist/package/declarations/src/api/system/admin/v1/base_policy_evaluation_log.d.ts +10 -0
  22. package/dist/package/declarations/src/api/system/admin/v1/base_session.d.ts +11 -0
  23. package/dist/package/declarations/src/api/system/admin/v1/base_table_archive.d.ts +20 -0
  24. package/dist/package/declarations/src/api/system/admin/v1/base_table_archive_record.d.ts +11 -0
  25. package/dist/package/declarations/src/api/system/admin/v1/base_table_archive_restore.d.ts +14 -0
  26. package/dist/package/declarations/src/api/system/admin/v1/base_table_backup.d.ts +20 -0
  27. package/dist/package/declarations/src/api/system/admin/v1/base_table_backup_record.d.ts +11 -0
  28. package/dist/package/declarations/src/api/system/admin/v1/base_table_backup_restore.d.ts +14 -0
  29. package/dist/package/declarations/src/api/system/admin/v1/base_table_source.d.ts +11 -0
  30. package/dist/package/declarations/src/api/system/admin/v1/cache.d.ts +7 -0
  31. package/dist/package/declarations/src/api/system/admin/v1/oauth_client.d.ts +24 -0
  32. package/dist/package/declarations/src/api/system/base_redact_field.d.ts +20 -0
  33. package/dist/package/declarations/src/api/system/base_redact_policy.d.ts +19 -0
  34. package/dist/package/declarations/src/api/system/base_redact_rule.d.ts +22 -0
  35. package/dist/package/declarations/src/components/DynamicI18nCell.vue.d.ts +5 -1
  36. package/dist/package/declarations/src/components/ForcedPasswordDialog.vue.d.ts +3 -0
  37. package/dist/package/declarations/src/components/LogTable.vue.d.ts +52 -0
  38. package/dist/package/declarations/src/components/Notification.vue.d.ts +3 -0
  39. package/dist/package/declarations/src/components/dynamicI18n.d.ts +4 -7
  40. package/dist/package/declarations/src/components/log.d.ts +20 -0
  41. package/dist/package/declarations/src/config/base-log-fallback.d.ts +7 -0
  42. package/dist/package/declarations/src/config/database-backup.d.ts +12 -0
  43. package/dist/package/declarations/src/config/index.d.ts +7 -0
  44. package/dist/package/declarations/src/config/types.d.ts +56 -0
  45. package/dist/package/declarations/src/locales/generated.d.ts +1968 -88
  46. package/dist/package/declarations/src/rpc/base/v1/login.d.ts +151 -0
  47. package/dist/package/declarations/src/rpc/base/v1/notification.d.ts +306 -0
  48. package/dist/package/declarations/src/rpc/base/v1/oauth.d.ts +25 -0
  49. package/dist/package/declarations/src/rpc/base/v1/oauth_client.d.ts +23 -0
  50. package/dist/package/declarations/src/rpc/system/admin/v1/auth.d.ts +13 -0
  51. package/dist/package/declarations/src/rpc/system/admin/v1/base_api.d.ts +2 -0
  52. package/dist/package/declarations/src/rpc/system/admin/v1/base_api_log.d.ts +84 -0
  53. package/dist/package/declarations/src/rpc/system/admin/v1/base_config.d.ts +38 -0
  54. package/dist/package/declarations/src/rpc/system/admin/v1/base_dashboard.d.ts +60 -0
  55. package/dist/package/declarations/src/rpc/system/admin/v1/base_data_access_log.d.ts +112 -0
  56. package/dist/package/declarations/src/rpc/system/admin/v1/base_dict.d.ts +0 -101
  57. package/dist/package/declarations/src/rpc/system/admin/v1/base_dict_item.d.ts +107 -0
  58. package/dist/package/declarations/src/rpc/system/admin/v1/base_file.d.ts +73 -0
  59. package/dist/package/declarations/src/rpc/system/admin/v1/base_i18n.d.ts +10 -6
  60. package/dist/package/declarations/src/rpc/system/admin/v1/base_job.d.ts +10 -56
  61. package/dist/package/declarations/src/rpc/system/admin/v1/base_job_log.d.ts +60 -0
  62. package/dist/package/declarations/src/rpc/system/admin/v1/base_log.d.ts +66 -76
  63. package/dist/package/declarations/src/rpc/system/admin/v1/base_login_log.d.ts +92 -0
  64. package/dist/package/declarations/src/rpc/system/admin/v1/base_login_policy.d.ts +179 -0
  65. package/dist/package/declarations/src/rpc/system/admin/v1/base_message.d.ts +193 -0
  66. package/dist/package/declarations/src/rpc/system/admin/v1/base_message_category.d.ts +125 -0
  67. package/dist/package/declarations/src/rpc/system/admin/v1/base_operation_log.d.ts +106 -0
  68. package/dist/package/declarations/src/rpc/system/admin/v1/base_permission_log.d.ts +118 -0
  69. package/dist/package/declarations/src/rpc/system/admin/v1/base_policy_evaluation_log.d.ts +119 -0
  70. package/dist/package/declarations/src/rpc/system/admin/v1/base_redact_common.d.ts +9 -0
  71. package/dist/package/declarations/src/rpc/system/admin/v1/base_redact_field.d.ts +161 -0
  72. package/dist/package/declarations/src/rpc/system/admin/v1/base_redact_policy.d.ts +150 -0
  73. package/dist/package/declarations/src/rpc/system/admin/v1/base_redact_rule.d.ts +111 -0
  74. package/dist/package/declarations/src/rpc/system/admin/v1/base_session.d.ts +33 -0
  75. package/dist/package/declarations/src/rpc/system/admin/v1/base_table_archive.d.ts +90 -0
  76. package/dist/package/declarations/src/rpc/system/admin/v1/base_table_archive_record.d.ts +82 -0
  77. package/dist/package/declarations/src/rpc/system/admin/v1/base_table_archive_restore.d.ts +76 -0
  78. package/dist/package/declarations/src/rpc/system/admin/v1/base_table_backup.d.ts +74 -0
  79. package/dist/package/declarations/src/rpc/system/admin/v1/base_table_backup_record.d.ts +69 -0
  80. package/dist/package/declarations/src/rpc/system/admin/v1/base_table_backup_restore.d.ts +76 -0
  81. package/dist/package/declarations/src/rpc/system/admin/v1/base_table_source.d.ts +16 -0
  82. package/dist/package/declarations/src/rpc/system/admin/v1/base_user.d.ts +18 -3
  83. package/dist/package/declarations/src/rpc/system/admin/v1/cache.d.ts +47 -0
  84. package/dist/package/declarations/src/rpc/system/admin/v1/code_gen_column.d.ts +2 -0
  85. package/dist/package/declarations/src/rpc/system/admin/v1/code_gen_table.d.ts +8 -0
  86. package/dist/package/declarations/src/rpc/system/admin/v1/oauth_client.d.ts +145 -0
  87. package/dist/package/declarations/src/rpc/system/common/v1/common.d.ts +26 -0
  88. package/dist/package/declarations/src/rpc/system/config/v1/system_config.d.ts +8 -0
  89. package/dist/package/declarations/src/{api/system → utils}/code_gen_i18n.d.ts +1 -2
  90. package/dist/package/declarations/src/{api/system → utils}/code_gen_sse.d.ts +1 -1
  91. package/dist/package/declarations/src/utils/notification-response.d.ts +5 -0
  92. package/dist/package/declarations/src/{api/system → utils}/ops_monitoring_sse.d.ts +1 -1
  93. package/dist/package/declarations/src/{api/system → utils}/runtime_log_sse.d.ts +1 -1
  94. package/dist/package/declarations/src/views/base/api-log/index.vue.d.ts +3 -0
  95. package/dist/package/declarations/src/views/base/backup-management/archive-config/index.vue.d.ts +3 -0
  96. package/dist/package/declarations/src/views/base/backup-management/archive-record/index.vue.d.ts +3 -0
  97. package/dist/package/declarations/src/views/base/backup-management/archive-restore/index.vue.d.ts +3 -0
  98. package/dist/package/declarations/src/views/base/backup-management/backup-config/index.vue.d.ts +3 -0
  99. package/dist/package/declarations/src/views/base/backup-management/backup-record/index.vue.d.ts +3 -0
  100. package/dist/package/declarations/src/views/base/backup-management/backup-restore/index.vue.d.ts +3 -0
  101. package/dist/package/declarations/src/views/base/dashboard/index.vue.d.ts +3 -0
  102. package/dist/package/declarations/src/views/base/data-access-log/index.vue.d.ts +3 -0
  103. package/dist/package/declarations/src/views/base/file/index.vue.d.ts +3 -0
  104. package/dist/package/declarations/src/views/base/login-log/index.vue.d.ts +3 -0
  105. package/dist/package/declarations/src/views/base/login-policy/format.d.ts +2 -0
  106. package/dist/package/declarations/src/views/base/login-policy/index.vue.d.ts +3 -0
  107. package/dist/package/declarations/src/views/base/message/index.vue.d.ts +3 -0
  108. package/dist/package/declarations/src/views/base/message-category/index.vue.d.ts +3 -0
  109. package/dist/package/declarations/src/views/base/oauth-client/index.vue.d.ts +3 -0
  110. package/dist/package/declarations/src/views/base/operation-log/index.vue.d.ts +3 -0
  111. package/dist/package/declarations/src/views/base/permission-log/index.vue.d.ts +3 -0
  112. package/dist/package/declarations/src/views/base/policy-evaluation-log/index.vue.d.ts +3 -0
  113. package/dist/package/declarations/src/views/base/redact-field/index.vue.d.ts +3 -0
  114. package/dist/package/declarations/src/views/base/redact-policy/index.vue.d.ts +3 -0
  115. package/dist/package/declarations/src/views/base/redact-rule/index.vue.d.ts +3 -0
  116. package/dist/package/declarations/src/views/base/runtime-config/index.vue.d.ts +3 -0
  117. package/dist/package/declarations/src/views/message/inbox/index.vue.d.ts +3 -0
  118. package/dist/package/declarations/src/views/profile/components/session.vue.d.ts +3 -0
  119. package/dist/package/declarations/src/views/tool/cache/index.vue.d.ts +3 -0
  120. package/dist/package/src/api/base/v1/notification.ts +99 -0
  121. package/dist/package/src/api/base/{sse.ts → v1/sse.ts} +4 -4
  122. package/dist/package/src/api/system/{auth.ts → admin/v1/auth.ts} +1 -0
  123. package/dist/package/src/api/system/admin/v1/base_api_log.ts +33 -0
  124. package/dist/package/src/api/system/{base_area.ts → admin/v1/base_area.ts} +1 -1
  125. package/dist/package/src/api/system/{base_config.ts → admin/v1/base_config.ts} +20 -0
  126. package/dist/package/src/api/system/admin/v1/base_dashboard.ts +55 -0
  127. package/dist/package/src/api/system/admin/v1/base_data_access_log.ts +33 -0
  128. package/dist/package/src/api/system/{base_dict.ts → admin/v1/base_dict.ts} +0 -60
  129. package/dist/package/src/api/system/admin/v1/base_dict_item.ts +72 -0
  130. package/dist/package/src/api/system/admin/v1/base_file.ts +43 -0
  131. package/dist/package/src/api/system/{base_job.ts → admin/v1/base_job.ts} +11 -22
  132. package/dist/package/src/api/system/admin/v1/base_job_log.ts +32 -0
  133. package/dist/package/src/api/system/{base_language.ts → admin/v1/base_language.ts} +3 -3
  134. package/dist/package/src/api/system/admin/v1/base_log.ts +23 -0
  135. package/dist/package/src/api/system/admin/v1/base_login_log.ts +33 -0
  136. package/dist/package/src/api/system/admin/v1/base_login_policy.ts +67 -0
  137. package/dist/package/src/api/system/admin/v1/base_message.ts +90 -0
  138. package/dist/package/src/api/system/admin/v1/base_message_category.ts +80 -0
  139. package/dist/package/src/api/system/admin/v1/base_operation_log.ts +33 -0
  140. package/dist/package/src/api/system/admin/v1/base_permission_log.ts +33 -0
  141. package/dist/package/src/api/system/admin/v1/base_policy_evaluation_log.ts +33 -0
  142. package/dist/package/src/api/system/admin/v1/base_session.ts +33 -0
  143. package/dist/package/src/api/system/admin/v1/base_table_archive.ts +70 -0
  144. package/dist/package/src/api/system/admin/v1/base_table_archive_record.ts +33 -0
  145. package/dist/package/src/api/system/admin/v1/base_table_archive_restore.ts +44 -0
  146. package/dist/package/src/api/system/admin/v1/base_table_backup.ts +70 -0
  147. package/dist/package/src/api/system/admin/v1/base_table_backup_record.ts +33 -0
  148. package/dist/package/src/api/system/admin/v1/base_table_backup_restore.ts +44 -0
  149. package/dist/package/src/api/system/admin/v1/base_table_source.ts +33 -0
  150. package/dist/package/src/api/system/admin/v1/cache.ts +22 -0
  151. package/dist/package/src/api/system/{code_gen_column.ts → admin/v1/code_gen_column.ts} +19 -3
  152. package/dist/package/src/api/system/{code_gen_table.ts → admin/v1/code_gen_table.ts} +13 -4
  153. package/dist/package/src/api/system/admin/v1/oauth_client.ts +102 -0
  154. package/dist/package/src/api/system/base_redact_field.ts +25 -0
  155. package/dist/package/src/api/system/base_redact_policy.ts +24 -0
  156. package/dist/package/src/api/system/base_redact_rule.ts +27 -0
  157. package/dist/package/src/components/Ai.vue +1 -1
  158. package/dist/package/src/components/ChangePasswordForm.vue +143 -0
  159. package/dist/package/src/components/DynamicI18nCell.vue +28 -8
  160. package/dist/package/src/components/DynamicI18nEditor.vue +1 -1
  161. package/dist/package/src/components/ForcedPasswordDialog.vue +40 -0
  162. package/dist/package/src/components/LogTable.vue +190 -0
  163. package/dist/package/src/components/Notification.vue +301 -0
  164. package/dist/package/src/components/dynamicI18n.ts +5 -9
  165. package/dist/package/src/components/log.ts +87 -0
  166. package/dist/package/src/config/base-log-fallback.ts +26 -0
  167. package/dist/package/src/config/database-backup.ts +57 -0
  168. package/dist/package/src/config/index.ts +26 -0
  169. package/dist/package/src/config/types.ts +59 -0
  170. package/dist/package/src/locales/README.md +6 -3
  171. package/dist/package/src/locales/en-US.json +511 -29
  172. package/dist/package/src/locales/ja-JP.json +515 -33
  173. package/dist/package/src/locales/zh-CN.json +511 -29
  174. package/dist/package/src/locales/zh-TW.json +514 -32
  175. package/dist/package/src/module.ts +7 -2
  176. package/dist/package/src/rpc/base/v1/login.ts +174 -0
  177. package/dist/package/src/rpc/base/v1/notification.ts +343 -0
  178. package/dist/package/src/rpc/base/v1/oauth.ts +25 -0
  179. package/dist/package/src/rpc/base/v1/oauth_client.ts +33 -0
  180. package/dist/package/src/rpc/system/admin/v1/auth.ts +13 -0
  181. package/dist/package/src/rpc/system/admin/v1/base_api.ts +2 -0
  182. package/dist/package/src/rpc/system/admin/v1/base_api_log.ts +102 -0
  183. package/dist/package/src/rpc/system/admin/v1/base_config.ts +42 -0
  184. package/dist/package/src/rpc/system/admin/v1/base_dashboard.ts +81 -0
  185. package/dist/package/src/rpc/system/admin/v1/base_data_access_log.ts +135 -0
  186. package/dist/package/src/rpc/system/admin/v1/base_dict.ts +0 -112
  187. package/dist/package/src/rpc/system/admin/v1/base_dict_item.ts +126 -0
  188. package/dist/package/src/rpc/system/admin/v1/base_file.ts +88 -0
  189. package/dist/package/src/rpc/system/admin/v1/base_i18n.ts +10 -6
  190. package/dist/package/src/rpc/system/admin/v1/base_job.ts +10 -62
  191. package/dist/package/src/rpc/system/admin/v1/base_job_log.ts +75 -0
  192. package/dist/package/src/rpc/system/admin/v1/base_log.ts +67 -78
  193. package/dist/package/src/rpc/system/admin/v1/base_login_log.ts +113 -0
  194. package/dist/package/src/rpc/system/admin/v1/base_login_policy.ts +212 -0
  195. package/dist/package/src/rpc/system/admin/v1/base_message.ts +236 -0
  196. package/dist/package/src/rpc/system/admin/v1/base_message_category.ts +149 -0
  197. package/dist/package/src/rpc/system/admin/v1/base_operation_log.ts +127 -0
  198. package/dist/package/src/rpc/system/admin/v1/base_permission_log.ts +142 -0
  199. package/dist/package/src/rpc/system/admin/v1/base_policy_evaluation_log.ts +143 -0
  200. package/dist/package/src/rpc/system/admin/v1/base_redact_common.ts +17 -0
  201. package/dist/package/src/rpc/system/admin/v1/base_redact_field.ts +182 -0
  202. package/dist/package/src/rpc/system/admin/v1/base_redact_policy.ts +174 -0
  203. package/dist/package/src/rpc/system/admin/v1/base_redact_rule.ts +131 -0
  204. package/dist/package/src/rpc/system/admin/v1/base_session.ts +44 -0
  205. package/dist/package/src/rpc/system/admin/v1/base_table_archive.ts +109 -0
  206. package/dist/package/src/rpc/system/admin/v1/base_table_archive_record.ts +95 -0
  207. package/dist/package/src/rpc/system/admin/v1/base_table_archive_restore.ts +93 -0
  208. package/dist/package/src/rpc/system/admin/v1/base_table_backup.ts +91 -0
  209. package/dist/package/src/rpc/system/admin/v1/base_table_backup_record.ts +82 -0
  210. package/dist/package/src/rpc/system/admin/v1/base_table_backup_restore.ts +91 -0
  211. package/dist/package/src/rpc/system/admin/v1/base_table_source.ts +26 -0
  212. package/dist/package/src/rpc/system/admin/v1/base_user.ts +18 -3
  213. package/dist/package/src/rpc/system/admin/v1/cache.ts +59 -0
  214. package/dist/package/src/rpc/system/admin/v1/code_gen_column.ts +2 -0
  215. package/dist/package/src/rpc/system/admin/v1/code_gen_table.ts +8 -0
  216. package/dist/package/src/rpc/system/admin/v1/oauth_client.ts +174 -0
  217. package/dist/package/src/rpc/system/common/v1/common.ts +35 -0
  218. package/dist/package/src/rpc/system/config/v1/system_config.ts +16 -0
  219. package/dist/package/src/{api/system → utils}/code_gen_i18n.ts +1 -1
  220. package/dist/package/src/{api/system → utils}/code_gen_sse.ts +1 -1
  221. package/dist/package/src/utils/notification-response.ts +22 -0
  222. package/dist/package/src/{api/system → utils}/ops_monitoring_sse.ts +1 -1
  223. package/dist/package/src/{api/system → utils}/runtime_log_sse.ts +1 -1
  224. package/dist/package/src/views/ai/chat/components/AiMarkdown.vue +1 -1
  225. package/dist/package/src/views/ai/chat/components/ChatPanel.vue +4 -6
  226. package/dist/package/src/views/ai/chat/components/XSender.vue +1 -1
  227. package/dist/package/src/views/ai/chat/index.vue +3 -3
  228. package/dist/package/src/views/ai/chat/message.ts +2 -3
  229. package/dist/package/src/views/base/api/index.vue +4 -4
  230. package/dist/package/src/views/base/api-log/index.vue +94 -0
  231. package/dist/package/src/views/base/area/index.vue +1 -1
  232. package/dist/package/src/views/base/backup-management/archive-config/index.vue +151 -0
  233. package/dist/package/src/views/base/backup-management/archive-record/index.vue +44 -0
  234. package/dist/package/src/views/base/backup-management/archive-restore/index.vue +59 -0
  235. package/dist/package/src/views/base/backup-management/backup-config/index.vue +119 -0
  236. package/dist/package/src/views/base/backup-management/backup-record/index.vue +41 -0
  237. package/dist/package/src/views/base/backup-management/backup-restore/index.vue +66 -0
  238. package/dist/package/src/views/base/config/index.vue +19 -28
  239. package/dist/package/src/views/base/dashboard/index.vue +202 -0
  240. package/dist/package/src/views/base/data-access-log/index.vue +96 -0
  241. package/dist/package/src/views/base/dept/index.vue +11 -11
  242. package/dist/package/src/views/base/dict/index.vue +7 -7
  243. package/dist/package/src/views/base/dict/item.vue +14 -14
  244. package/dist/package/src/views/base/file/index.vue +323 -0
  245. package/dist/package/src/views/base/job/index.vue +63 -8
  246. package/dist/package/src/views/base/job/log.vue +38 -11
  247. package/dist/package/src/views/base/language/index.vue +3 -2
  248. package/dist/package/src/views/base/login-log/index.vue +96 -0
  249. package/dist/package/src/views/base/login-policy/format.ts +4 -0
  250. package/dist/package/src/views/base/login-policy/index.vue +530 -0
  251. package/dist/package/src/views/base/menu/index.vue +19 -19
  252. package/dist/package/src/views/base/message/index.vue +712 -0
  253. package/dist/package/src/views/base/message-category/index.vue +387 -0
  254. package/dist/package/src/views/base/migration/index.vue +2 -2
  255. package/dist/package/src/views/base/oauth-client/index.vue +421 -0
  256. package/dist/package/src/views/base/operation-log/index.vue +86 -0
  257. package/dist/package/src/views/base/permission-log/index.vue +90 -0
  258. package/dist/package/src/views/base/policy-evaluation-log/index.vue +93 -0
  259. package/dist/package/src/views/base/post/index.vue +11 -11
  260. package/dist/package/src/views/base/redact-field/index.vue +59 -0
  261. package/dist/package/src/views/base/redact-policy/index.vue +92 -0
  262. package/dist/package/src/views/base/redact-rule/index.vue +51 -0
  263. package/dist/package/src/views/base/role/index.vue +9 -9
  264. package/dist/package/src/views/base/runtime-config/index.vue +479 -0
  265. package/dist/package/src/views/base/tenant/index.vue +9 -9
  266. package/dist/package/src/views/base/user/components/dept-tree.vue +1 -1
  267. package/dist/package/src/views/base/user/index.vue +86 -47
  268. package/dist/package/src/views/message/inbox/index.vue +276 -0
  269. package/dist/package/src/views/profile/components/base.vue +90 -13
  270. package/dist/package/src/views/profile/components/password.vue +3 -229
  271. package/dist/package/src/views/profile/components/security.vue +477 -64
  272. package/dist/package/src/views/profile/components/session.vue +161 -0
  273. package/dist/package/src/views/profile/index.vue +45 -31
  274. package/dist/package/src/views/tool/api-doc/index.vue +3 -3
  275. package/dist/package/src/views/tool/cache/index.vue +352 -0
  276. package/dist/package/src/views/tool/code-gen/code-preview/index.vue +4 -4
  277. package/dist/package/src/views/tool/code-gen/columns/index.vue +16 -16
  278. package/dist/package/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue +2 -2
  279. package/dist/package/src/views/tool/code-gen/components/CodeGenProgressDialog.vue +2 -2
  280. package/dist/package/src/views/tool/code-gen/config.ts +3 -0
  281. package/dist/package/src/views/tool/code-gen/preview/index.vue +9 -9
  282. package/dist/package/src/views/tool/code-gen/proto/index.vue +10 -12
  283. package/dist/package/src/views/tool/code-gen/table/index.vue +71 -15
  284. package/dist/package/src/views/tool/ops-monitoring/index.vue +55 -116
  285. package/dist/package/src/views/tool/project-doc/index.vue +2 -2
  286. package/dist/package/src/views/tool/runtime-log/index.vue +6 -6
  287. package/package.json +7 -2
  288. package/dist/package/declarations/src/api/system/base_dict.d.ts +0 -32
  289. package/dist/package/declarations/src/api/system/base_log.d.ts +0 -9
  290. package/dist/package/src/api/system/base_log.ts +0 -32
  291. package/dist/package/src/views/base/log/index.vue +0 -339
  292. /package/dist/package/declarations/src/api/base/{ai_message.d.ts → v1/ai_message.d.ts} +0 -0
  293. /package/dist/package/declarations/src/api/base/{ai_session.d.ts → v1/ai_session.d.ts} +0 -0
  294. /package/dist/package/declarations/src/api/base/{ai_tool.d.ts → v1/ai_tool.d.ts} +0 -0
  295. /package/dist/package/declarations/src/api/base/{oauth.d.ts → v1/oauth.d.ts} +0 -0
  296. /package/dist/package/declarations/src/api/base/{sse.d.ts → v1/sse.d.ts} +0 -0
  297. /package/dist/package/declarations/src/api/system/{auth.d.ts → admin/v1/auth.d.ts} +0 -0
  298. /package/dist/package/declarations/src/api/system/{base_api.d.ts → admin/v1/base_api.d.ts} +0 -0
  299. /package/dist/package/declarations/src/api/system/{base_dept.d.ts → admin/v1/base_dept.d.ts} +0 -0
  300. /package/dist/package/declarations/src/api/system/{base_i18n.d.ts → admin/v1/base_i18n.d.ts} +0 -0
  301. /package/dist/package/declarations/src/api/system/{base_menu.d.ts → admin/v1/base_menu.d.ts} +0 -0
  302. /package/dist/package/declarations/src/api/system/{base_migration.d.ts → admin/v1/base_migration.d.ts} +0 -0
  303. /package/dist/package/declarations/src/api/system/{base_post.d.ts → admin/v1/base_post.d.ts} +0 -0
  304. /package/dist/package/declarations/src/api/system/{base_role.d.ts → admin/v1/base_role.d.ts} +0 -0
  305. /package/dist/package/declarations/src/api/system/{base_tenant.d.ts → admin/v1/base_tenant.d.ts} +0 -0
  306. /package/dist/package/declarations/src/api/system/{base_user.d.ts → admin/v1/base_user.d.ts} +0 -0
  307. /package/dist/package/declarations/src/api/system/{code_gen.d.ts → admin/v1/code_gen.d.ts} +0 -0
  308. /package/dist/package/declarations/src/api/system/{code_gen_column.d.ts → admin/v1/code_gen_column.d.ts} +0 -0
  309. /package/dist/package/declarations/src/api/system/{code_gen_proto.d.ts → admin/v1/code_gen_proto.d.ts} +0 -0
  310. /package/dist/package/declarations/src/api/system/{code_gen_table.d.ts → admin/v1/code_gen_table.d.ts} +0 -0
  311. /package/dist/package/declarations/src/api/system/{ops_monitoring.d.ts → admin/v1/ops_monitoring.d.ts} +0 -0
  312. /package/dist/package/declarations/src/api/system/{project_document.d.ts → admin/v1/project_document.d.ts} +0 -0
  313. /package/dist/package/declarations/src/api/system/{runtime_log.d.ts → admin/v1/runtime_log.d.ts} +0 -0
  314. /package/dist/package/declarations/src/{views/base/log/index.vue.d.ts → components/ChangePasswordForm.vue.d.ts} +0 -0
  315. /package/dist/package/src/api/base/{ai_message.ts → v1/ai_message.ts} +0 -0
  316. /package/dist/package/src/api/base/{ai_session.ts → v1/ai_session.ts} +0 -0
  317. /package/dist/package/src/api/base/{ai_tool.ts → v1/ai_tool.ts} +0 -0
  318. /package/dist/package/src/api/base/{oauth.ts → v1/oauth.ts} +0 -0
  319. /package/dist/package/src/api/system/{base_api.ts → admin/v1/base_api.ts} +0 -0
  320. /package/dist/package/src/api/system/{base_dept.ts → admin/v1/base_dept.ts} +0 -0
  321. /package/dist/package/src/api/system/{base_i18n.ts → admin/v1/base_i18n.ts} +0 -0
  322. /package/dist/package/src/api/system/{base_menu.ts → admin/v1/base_menu.ts} +0 -0
  323. /package/dist/package/src/api/system/{base_migration.ts → admin/v1/base_migration.ts} +0 -0
  324. /package/dist/package/src/api/system/{base_post.ts → admin/v1/base_post.ts} +0 -0
  325. /package/dist/package/src/api/system/{base_role.ts → admin/v1/base_role.ts} +0 -0
  326. /package/dist/package/src/api/system/{base_tenant.ts → admin/v1/base_tenant.ts} +0 -0
  327. /package/dist/package/src/api/system/{base_user.ts → admin/v1/base_user.ts} +0 -0
  328. /package/dist/package/src/api/system/{code_gen.ts → admin/v1/code_gen.ts} +0 -0
  329. /package/dist/package/src/api/system/{code_gen_proto.ts → admin/v1/code_gen_proto.ts} +0 -0
  330. /package/dist/package/src/api/system/{ops_monitoring.ts → admin/v1/ops_monitoring.ts} +0 -0
  331. /package/dist/package/src/api/system/{project_document.ts → admin/v1/project_document.ts} +0 -0
  332. /package/dist/package/src/api/system/{runtime_log.ts → admin/v1/runtime_log.ts} +0 -0
@@ -0,0 +1,96 @@
1
+ <template>
2
+ <LogTable ref="page" :config="config" />
3
+ </template>
4
+
5
+ <script setup lang="ts">
6
+ import { computed, ref } from "vue";
7
+ import type { ColumnProps } from "@liujitcn/kratos-admin-core/components/ProTable/interface";
8
+ import { t } from "@liujitcn/kratos-admin-core";
9
+ import { buildPageRequest } from "@liujitcn/kratos-admin-core/table";
10
+ import LogTable, { type LogTableConfig } from "@liujitcn/kratos-admin-system/components/LogTable.vue";
11
+ import {
12
+ createLogEnumOptions,
13
+ formatLogCount,
14
+ formatLogDuration,
15
+ logDateSearch,
16
+ logDetailColumn,
17
+ logEnumLabel,
18
+ requestLogTrace
19
+ } from "@liujitcn/kratos-admin-system/components/log";
20
+ import { defBaseDataAccessLogService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_data_access_log";
21
+ import { BaseLogResult } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_log";
22
+ import { BaseDataAccessType } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_data_access_log";
23
+ import type { BaseDataAccessLog, PageBaseDataAccessLogRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_data_access_log";
24
+
25
+ defineOptions({ name: "BaseDataAccessLog", inheritAttrs: false });
26
+
27
+ const page = ref<InstanceType<typeof LogTable>>();
28
+ const resultOptions = computed(() => createLogEnumOptions([
29
+ [BaseLogResult.BASE_LOG_RESULT_UNSPECIFIED, t("system.base.log.result.unspecified")],
30
+ [BaseLogResult.BASE_LOG_RESULT_SUCCESS, t("system.base.log.result.success")],
31
+ [BaseLogResult.BASE_LOG_RESULT_FAILURE, t("system.base.log.result.failure")],
32
+ [BaseLogResult.BASE_LOG_RESULT_ERROR, t("system.base.log.result.error")]
33
+ ]));
34
+ const accessTypeOptions = computed(() => createLogEnumOptions([
35
+ [BaseDataAccessType.BASE_DATA_ACCESS_TYPE_UNSPECIFIED, t("system.base.log.access_type.unspecified")],
36
+ [BaseDataAccessType.BASE_DATA_ACCESS_TYPE_LIST, t("system.base.log.access_type.list")],
37
+ [BaseDataAccessType.BASE_DATA_ACCESS_TYPE_DETAIL, t("system.base.log.access_type.detail")],
38
+ [BaseDataAccessType.BASE_DATA_ACCESS_TYPE_QUERY, t("system.base.log.access_type.query")],
39
+ [BaseDataAccessType.BASE_DATA_ACCESS_TYPE_EXPORT, t("system.base.log.access_type.export")],
40
+ [BaseDataAccessType.BASE_DATA_ACCESS_TYPE_DOWNLOAD, t("system.base.log.access_type.download")],
41
+ [BaseDataAccessType.BASE_DATA_ACCESS_TYPE_IMPORT, t("system.base.log.access_type.import")]
42
+ ]));
43
+ const columns = computed<ColumnProps[]>(() => [
44
+ { prop: "resource_type", label: t("system.base.log.field.resource_type"), minWidth: 150, search: { el: "input" } },
45
+ { prop: "table_name", label: t("system.base.log.field.table_name"), minWidth: 150 },
46
+ { prop: "access_type", label: t("system.base.log.field.access_type"), minWidth: 120, search: { el: "select", enum: accessTypeOptions.value }, render: scope => logEnumLabel(accessTypeOptions.value, (scope.row as BaseDataAccessLog).access_type) },
47
+ { prop: "affected_rows", label: t("system.base.log.field.affected_rows"), minWidth: 110 },
48
+ { prop: "sensitive", label: t("system.base.log.field.sensitive"), minWidth: 110, search: { el: "switch" }, render: scope => (scope.row as BaseDataAccessLog).sensitive ? t("common.value.yes") : t("common.value.no") },
49
+ { prop: "result", label: t("system.base.log.field.result"), minWidth: 110, search: { el: "select", enum: resultOptions.value }, render: scope => logEnumLabel(resultOptions.value, (scope.row as BaseDataAccessLog).result) },
50
+ { prop: "occurred_at", label: t("system.base.log.field.occurred_at"), minWidth: 190, search: logDateSearch(t) },
51
+ logDetailColumn(t("common.action.view"), id => page.value?.handleOpenDialog(id))
52
+ ]);
53
+
54
+ const config = computed<LogTableConfig>(() => ({
55
+ columns: columns.value,
56
+ detailTitle: t("system.base.log.data_access.title.detail"),
57
+ closeText: t("common.action.close"),
58
+ trace: requestLogTrace,
59
+ detailFields: [
60
+ { key: "id", label: t("system.base.log.field.id") },
61
+ { key: "tenant_id", label: t("system.base.log.field.tenant_id") },
62
+ { key: "tenant_code", label: t("system.base.log.field.tenant_code") },
63
+ { key: "user_id", label: t("system.base.log.field.user_id") },
64
+ { key: "user_name", label: t("system.base.log.field.user_name") },
65
+ { key: "resource_type", label: t("system.base.log.field.resource_type") },
66
+ { key: "resource_id", label: t("system.base.log.field.resource_id") },
67
+ { key: "access_type", label: t("system.base.log.field.access_type"), enum: accessTypeOptions.value },
68
+ { key: "data_source", label: t("system.base.log.field.data_source") },
69
+ { key: "table_name", label: t("system.base.log.field.table_name") },
70
+ { key: "field_scope", label: t("system.base.log.field.field_scope"), span: 2, code: true },
71
+ { key: "data_scope", label: t("system.base.log.field.data_scope") },
72
+ { key: "affected_rows", label: t("system.base.log.field.affected_rows"), format: value => formatLogCount(value, t) },
73
+ { key: "sensitive", label: t("system.base.log.field.sensitive"), format: value => (value ? t("common.value.yes") : t("common.value.no")) },
74
+ { key: "sql_digest", label: t("system.base.log.field.sql_digest") },
75
+ { key: "sql_text", label: t("system.base.log.field.sql_text"), span: 2, code: true },
76
+ { key: "result", label: t("system.base.log.field.result"), enum: resultOptions.value },
77
+ { key: "latency_ms", label: t("system.base.log.field.latency_ms"), format: value => formatLogDuration(value, t) },
78
+ { key: "reason_code", label: t("system.base.log.field.reason_code") },
79
+ { key: "request_id", label: t("system.base.log.field.request_id") },
80
+ { key: "trace_id", label: t("system.base.log.field.trace_id") },
81
+ { key: "occurred_at", label: t("system.base.log.field.occurred_at") },
82
+ { key: "created_at", label: t("system.base.log.field.created_at") }
83
+ ],
84
+ request: requestTable,
85
+ get: getDetail
86
+ }));
87
+
88
+ async function requestTable(params: Record<string, unknown>) {
89
+ const response = await defBaseDataAccessLogService.PageBaseDataAccessLog(buildPageRequest(params as unknown as PageBaseDataAccessLogRequest));
90
+ return { list: response.base_data_access_logs as unknown as Record<string, unknown>[], total: response.total };
91
+ }
92
+
93
+ async function getDetail(id: string) {
94
+ return (await defBaseDataAccessLogService.GetBaseDataAccessLog({ id })) as unknown as Record<string, unknown>;
95
+ }
96
+ </script>
@@ -16,7 +16,7 @@
16
16
  <FormDialog
17
17
  v-model="dialog.visible"
18
18
  ref="formDialogRef"
19
- :title="t(dialog.titleKey, { resource: t('system.base.dept.resource') })"
19
+ :title="t(dialog.titleKey, { resource: t('common.field.department') })"
20
20
  width="600px"
21
21
  :model="formData"
22
22
  :fields="formFields"
@@ -36,8 +36,8 @@ import ProTable from "@liujitcn/kratos-admin-core/components/ProTable";
36
36
  import FormDialog from "@liujitcn/kratos-admin-core/components/Dialog/FormDialog.vue";
37
37
  import type { ProFormField, ProFormOption } from "@liujitcn/kratos-admin-core/components/ProForm/interface";
38
38
  import { useAuthButtons } from "@liujitcn/kratos-admin-core/auth";
39
- import { defBaseDeptService } from "@liujitcn/kratos-admin-system/api/system/base_dept";
40
- import { defBaseTenantService } from "@liujitcn/kratos-admin-system/api/system/base_tenant";
39
+ import { defBaseDeptService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_dept";
40
+ import { defBaseTenantService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_tenant";
41
41
  import { useUserStore } from "@liujitcn/kratos-admin-core/stores/runtime";
42
42
  import type { BaseDept, BaseDeptForm } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_dept";
43
43
  import type { SelectOptionResponse_Option, TreeOptionResponse_Option } from "@liujitcn/kratos-admin-system/rpc/common/v1/common";
@@ -139,7 +139,7 @@ const formFields = computed<ProFormField[]>(() => [
139
139
  label: t("common.field.tenant"),
140
140
  component: "select",
141
141
  props: {
142
- placeholder: t("common.validation.required_select", { field: t("common.field.tenant") }),
142
+ placeholder: t("common.placeholder.select"),
143
143
  filterable: true,
144
144
  disabled: Boolean(formData.id),
145
145
  onChange: handleFormTenantChange
@@ -427,7 +427,7 @@ function handleSubmit() {
427
427
  request.then(() => {
428
428
  ElMessage.success(
429
429
  t(submitData.id ? "common.message.update_success" : "common.message.create_success", {
430
- resource: t("system.base.dept.resource")
430
+ resource: t("common.field.department")
431
431
  })
432
432
  );
433
433
  handleCloseDialog();
@@ -447,7 +447,7 @@ async function handleBeforeSetStatus(row: BaseDept) {
447
447
  await ElMessageBox.confirm(
448
448
  t("common.dialog.status_change", {
449
449
  action: text,
450
- resource: t("system.base.dept.resource"),
450
+ resource: t("common.field.department"),
451
451
  field: t("system.base.dept.field.name"),
452
452
  value: deptName
453
453
  }),
@@ -486,9 +486,9 @@ function handleDelete(selected?: number | string | Array<number | string> | Base
486
486
 
487
487
  const confirmMessage = deptList.length
488
488
  ? deptList.length === 1
489
- ? `${t("common.dialog.delete_single", { resource: t("system.base.dept.resource") })}\n${t("common.dialog.resource_field", { field: t("system.base.dept.field.name"), value: deptList[0].name || `ID:${deptList[0].id}` })}`
490
- : t("common.dialog.delete_batch", { count: deptList.length, unit: "", resource: t("system.base.dept.resource") })
491
- : t("common.dialog.delete_selected", { resource: t("system.base.dept.resource") });
489
+ ? `${t("common.dialog.delete_single", { resource: t("common.field.department") })}\n${t("common.dialog.resource_field", { field: t("system.base.dept.field.name"), value: deptList[0].name || `ID:${deptList[0].id}` })}`
490
+ : t("common.dialog.delete_batch", { count: deptList.length, unit: "", resource: t("common.field.department") })
491
+ : t("common.dialog.delete_selected", { resource: t("common.field.department") });
492
492
 
493
493
  ElMessageBox.confirm(confirmMessage, t("common.title.warning"), {
494
494
  confirmButtonText: t("common.action.confirm"),
@@ -497,12 +497,12 @@ function handleDelete(selected?: number | string | Array<number | string> | Base
497
497
  }).then(
498
498
  () => {
499
499
  defBaseDeptService.DeleteBaseDept({ id: deptIds }).then(() => {
500
- ElMessage.success(t("common.message.delete_success", { resource: t("system.base.dept.resource") }));
500
+ ElMessage.success(t("common.message.delete_success", { resource: t("common.field.department") }));
501
501
  refreshTable();
502
502
  });
503
503
  },
504
504
  () => {
505
- ElMessage.info(t("common.dialog.cancel_delete", { resource: t("system.base.dept.resource") }));
505
+ ElMessage.info(t("common.dialog.cancel_delete", { resource: t("common.field.department") }));
506
506
  }
507
507
  );
508
508
  }
@@ -45,8 +45,8 @@ import ProTable from "@liujitcn/kratos-admin-core/components/ProTable";
45
45
  import FormDialog from "@liujitcn/kratos-admin-core/components/Dialog/FormDialog.vue";
46
46
  import type { ProFormField, ProFormOption } from "@liujitcn/kratos-admin-core/components/ProForm/interface";
47
47
  import { useAuthButtons } from "@liujitcn/kratos-admin-core/auth";
48
- import { defBaseDictService } from "@liujitcn/kratos-admin-system/api/system/base_dict";
49
- import { loadEnabledBaseLanguages } from "@liujitcn/kratos-admin-system/api/system/base_language";
48
+ import { defBaseDictService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_dict";
49
+ import { loadEnabledBaseLanguages } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_language";
50
50
  import type { BaseDict, BaseDictForm, PageBaseDictRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_dict";
51
51
  import router, { navigateTo } from "@liujitcn/kratos-admin-core/navigation";
52
52
  import { Status } from "@liujitcn/kratos-admin-system/rpc/common/v1/enum";
@@ -70,7 +70,7 @@ defineOptions({
70
70
  const { BUTTONS } = useAuthButtons();
71
71
  const proTable = ref<ProTableInstance>();
72
72
  const formDialogRef = ref<InstanceType<typeof FormDialog>>();
73
- const i18nValues = ref<DynamicI18nValue[]>(normalizeDynamicI18ns(undefined, "name"));
73
+ const i18nValues = ref<DynamicI18nValue[]>(normalizeDynamicI18ns(undefined));
74
74
  const dialog = reactive({
75
75
  editing: false,
76
76
  visible: false
@@ -143,7 +143,7 @@ function renderDictNameCell(scope: RenderScope<BaseDict>) {
143
143
  const row = scope.row;
144
144
  return h(DynamicI18nCell, {
145
145
  source: row.name,
146
- targetType: I18nTargetType.I18N_TARGET_TYPE_BASE_DICT,
146
+ targetType: I18nTargetType.I18N_TARGET_TYPE_BASE_DICT_NAME,
147
147
  targetId: row.id,
148
148
  i18ns: row.i18ns
149
149
  });
@@ -261,7 +261,7 @@ async function handleOpenDialog(dictId?: number) {
261
261
 
262
262
  const data = await defBaseDictService.GetBaseDict({ id: dictId });
263
263
  Object.assign(formData, data);
264
- i18nValues.value = normalizeDynamicI18ns(data.i18ns as DynamicI18nRecord[], "name");
264
+ i18nValues.value = normalizeDynamicI18ns(data.i18ns as DynamicI18nRecord[]);
265
265
  }
266
266
 
267
267
  /**
@@ -283,7 +283,7 @@ function resetForm() {
283
283
  formData.name = "";
284
284
  formData.i18ns = [];
285
285
  formData.status = Status.STATUS_ENABLE;
286
- i18nValues.value = normalizeDynamicI18ns(undefined, "name");
286
+ i18nValues.value = normalizeDynamicI18ns(undefined);
287
287
  }
288
288
 
289
289
  /**
@@ -296,7 +296,7 @@ function handleSubmit() {
296
296
  const submitData = JSON.parse(JSON.stringify(formData)) as BaseDictForm;
297
297
  submitData.i18ns = serializeDynamicI18ns(
298
298
  i18nValues.value,
299
- I18nTargetType.I18N_TARGET_TYPE_BASE_DICT,
299
+ I18nTargetType.I18N_TARGET_TYPE_BASE_DICT_NAME,
300
300
  submitData.id
301
301
  );
302
302
  const request = submitData.id
@@ -61,13 +61,13 @@ import ProTable from "@liujitcn/kratos-admin-core/components/ProTable";
61
61
  import FormDialog from "@liujitcn/kratos-admin-core/components/Dialog/FormDialog.vue";
62
62
  import type { ProFormField, ProFormOption } from "@liujitcn/kratos-admin-core/components/ProForm/interface";
63
63
  import { useAuthButtons } from "@liujitcn/kratos-admin-core/auth";
64
- import { defBaseDictService } from "@liujitcn/kratos-admin-system/api/system/base_dict";
65
- import { loadEnabledBaseLanguages } from "@liujitcn/kratos-admin-system/api/system/base_language";
64
+ import { defBaseDictItemService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_dict_item";
65
+ import { loadEnabledBaseLanguages } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_language";
66
66
  import type {
67
67
  BaseDictItem,
68
68
  BaseDictItemForm,
69
69
  PageBaseDictItemRequest
70
- } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_dict";
70
+ } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_dict_item";
71
71
  import { Status } from "@liujitcn/kratos-admin-system/rpc/common/v1/enum";
72
72
  import { I18nTargetType } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_i18n";
73
73
  import { buildPageRequest, normalizeSelectedIds } from "@liujitcn/kratos-admin-core/table";
@@ -90,7 +90,7 @@ const route = useRoute();
90
90
  const { BUTTONS } = useAuthButtons();
91
91
  const proTable = ref<ProTableInstance>();
92
92
  const formDialogRef = ref<InstanceType<typeof FormDialog>>();
93
- const i18nValues = ref<DynamicI18nValue[]>(normalizeDynamicI18ns(undefined, "label"));
93
+ const i18nValues = ref<DynamicI18nValue[]>(normalizeDynamicI18ns(undefined));
94
94
 
95
95
  const dictId = ref(Number(route.query.dictId ?? 0));
96
96
 
@@ -204,7 +204,7 @@ function renderDictItemLabelCell(scope: RenderScope<BaseDictItem>) {
204
204
  const row = scope.row;
205
205
  return h(DynamicI18nCell, {
206
206
  source: row.label,
207
- targetType: I18nTargetType.I18N_TARGET_TYPE_BASE_DICT_ITEM,
207
+ targetType: I18nTargetType.I18N_TARGET_TYPE_BASE_DICT_ITEM_LABEL,
208
208
  targetId: row.id,
209
209
  i18ns: row.i18ns
210
210
  });
@@ -307,7 +307,7 @@ watch(
307
307
  */
308
308
  async function requestBaseDictItemTable(params: PageBaseDictItemRequest) {
309
309
  await loadEnabledBaseLanguages();
310
- const data = await defBaseDictService.PageBaseDictItem({ ...buildPageRequest(params), dict_id: dictId.value });
310
+ const data = await defBaseDictItemService.PageBaseDictItem({ ...buildPageRequest(params), dict_id: dictId.value });
311
311
  return { data: { list: data.base_dict_items ?? [], total: data.total } };
312
312
  }
313
313
 
@@ -328,9 +328,9 @@ async function handleOpenDialog(dictItemId?: number) {
328
328
  dialog.visible = true;
329
329
  if (!dictItemId) return;
330
330
 
331
- const data = await defBaseDictService.GetBaseDictItem({ id: dictItemId });
331
+ const data = await defBaseDictItemService.GetBaseDictItem({ id: dictItemId });
332
332
  Object.assign(formData, data);
333
- i18nValues.value = normalizeDynamicI18ns(data.i18ns as DynamicI18nRecord[], "label");
333
+ i18nValues.value = normalizeDynamicI18ns(data.i18ns as DynamicI18nRecord[]);
334
334
  }
335
335
 
336
336
  /**
@@ -355,7 +355,7 @@ function resetForm() {
355
355
  formData.tag_type = "";
356
356
  formData.sort = 1;
357
357
  formData.status = Status.STATUS_ENABLE;
358
- i18nValues.value = normalizeDynamicI18ns(undefined, "label");
358
+ i18nValues.value = normalizeDynamicI18ns(undefined);
359
359
  }
360
360
 
361
361
  /**
@@ -369,12 +369,12 @@ function handleSubmit() {
369
369
  const submitData = JSON.parse(JSON.stringify(formData)) as BaseDictItemForm;
370
370
  submitData.i18ns = serializeDynamicI18ns(
371
371
  i18nValues.value,
372
- I18nTargetType.I18N_TARGET_TYPE_BASE_DICT_ITEM,
372
+ I18nTargetType.I18N_TARGET_TYPE_BASE_DICT_ITEM_LABEL,
373
373
  submitData.id
374
374
  );
375
375
  const request = submitData.id
376
- ? defBaseDictService.UpdateBaseDictItem({ base_dict_item: submitData })
377
- : defBaseDictService.CreateBaseDictItem({ base_dict_item: submitData });
376
+ ? defBaseDictItemService.UpdateBaseDictItem({ base_dict_item: submitData })
377
+ : defBaseDictItemService.CreateBaseDictItem({ base_dict_item: submitData });
378
378
  request.then(() => {
379
379
  ElMessage.success(
380
380
  t(submitData.id ? "system.base.dict.item.message.update_success" : "system.base.dict.item.message.create_success")
@@ -402,7 +402,7 @@ async function handleBeforeSetStatus(row: BaseDictItem) {
402
402
  type: "warning"
403
403
  }
404
404
  );
405
- await defBaseDictService.SetBaseDictItemStatus({ id: row.id, status: nextStatus });
405
+ await defBaseDictItemService.SetBaseDictItemStatus({ id: row.id, status: nextStatus });
406
406
  ElMessage.success(t("common.message.status_success", { action }));
407
407
  refreshTable();
408
408
  return true;
@@ -443,7 +443,7 @@ function handleDelete(selected?: number | string | Array<number | string> | Base
443
443
  type: "warning"
444
444
  }).then(
445
445
  () => {
446
- defBaseDictService.DeleteBaseDictItem({ id: dictItemIds }).then(() => {
446
+ defBaseDictItemService.DeleteBaseDictItem({ id: dictItemIds }).then(() => {
447
447
  ElMessage.success(t("system.base.dict.item.message.delete_success"));
448
448
  refreshTable();
449
449
  });
@@ -0,0 +1,323 @@
1
+ <template>
2
+ <div class="table-box">
3
+ <ProTable
4
+ ref="proTable"
5
+ row-key="id"
6
+ :columns="columns"
7
+ :request-api="requestBaseFileTable"
8
+ />
9
+
10
+ <ProDialog
11
+ v-model="detailVisible"
12
+ :title="detail?.file_name || t('system.base.file.detail')"
13
+ width="min(960px, calc(100vw - 32px))"
14
+ top="5vh"
15
+ destroy-on-close
16
+ :show-footer="false"
17
+ @closed="resetDetail"
18
+ >
19
+ <el-skeleton v-if="!detail" :rows="8" animated />
20
+ <template v-else>
21
+ <section class="file-preview" aria-live="polite">
22
+ <el-skeleton v-if="previewLoading" :rows="8" animated />
23
+ <template v-else-if="previewUrl && previewKind === 'image'">
24
+ <img class="file-preview__image" :src="previewUrl" :alt="detail.file_name" />
25
+ </template>
26
+ <video v-else-if="previewUrl && previewKind === 'video'" class="file-preview__media" controls :src="previewUrl">
27
+ {{ t("system.base.file.message.preview_unsupported") }}
28
+ </video>
29
+ <audio v-else-if="previewUrl && previewKind === 'audio'" class="file-preview__audio" controls :src="previewUrl">
30
+ {{ t("system.base.file.message.preview_unsupported") }}
31
+ </audio>
32
+ <iframe
33
+ v-else-if="previewUrl && previewKind === 'pdf'"
34
+ class="file-preview__document"
35
+ :src="previewUrl"
36
+ :title="detail.file_name"
37
+ />
38
+ <pre v-else-if="previewKind === 'text' && !previewError" class="file-preview__text">{{ previewText }}</pre>
39
+ <el-result
40
+ v-else-if="previewError"
41
+ class="file-preview__result"
42
+ icon="error"
43
+ :title="t('system.base.file.message.preview_failed')"
44
+ :sub-title="t('system.base.file.message.preview_retry_download')"
45
+ />
46
+ <el-result
47
+ v-else
48
+ class="file-preview__result"
49
+ icon="info"
50
+ :title="t('system.base.file.message.preview_unsupported')"
51
+ :sub-title="t('system.base.file.message.preview_download_hint')"
52
+ />
53
+ </section>
54
+
55
+ <el-descriptions class="file-meta" :column="2" border size="small">
56
+ <el-descriptions-item :label="t('system.base.file.field.name')" :span="2">
57
+ <span class="file-meta__value" :title="detail.file_name">{{ detail.file_name }}</span>
58
+ </el-descriptions-item>
59
+ <el-descriptions-item :label="t('system.base.file.field.mime')">{{ detail.mime_type || "-" }}</el-descriptions-item>
60
+ <el-descriptions-item :label="t('system.base.file.field.size')">{{ formatFileSize(detail.size) }}</el-descriptions-item>
61
+ <el-descriptions-item :label="t('system.base.file.field.path')" :span="2">
62
+ <code class="file-meta__value">{{ detail.link_url }}</code>
63
+ </el-descriptions-item>
64
+ <el-descriptions-item :label="t('system.base.file.field.hash')" :span="2">
65
+ <code class="file-meta__value">{{ detail.content_hash || "-" }}</code>
66
+ </el-descriptions-item>
67
+ </el-descriptions>
68
+
69
+ <div class="file-detail__actions">
70
+ <el-button type="primary" :icon="Download" @click="downloadDetail">
71
+ {{ t("common.action.download") }}
72
+ </el-button>
73
+ </div>
74
+ </template>
75
+ </ProDialog>
76
+ </div>
77
+ </template>
78
+
79
+ <script setup lang="ts">
80
+ import { computed, ref } from "vue";
81
+ import { Download, Delete, View } from "@element-plus/icons-vue";
82
+ import ProTable from "@liujitcn/kratos-admin-core/components/ProTable";
83
+ import ProDialog from "@liujitcn/kratos-admin-core/components/Dialog/ProDialog.vue";
84
+ import type { ColumnProps, ProTableInstance } from "@liujitcn/kratos-admin-core/components/ProTable/interface";
85
+ import { useAuthButtons } from "@liujitcn/kratos-admin-core/auth";
86
+ import { buildPageRequest } from "@liujitcn/kratos-admin-core/table";
87
+ import { t } from "@liujitcn/kratos-admin-core";
88
+ import { defFileService } from "@liujitcn/kratos-admin-core/api/base/v1/file";
89
+ import { defBaseFileService } from "@liujitcn/kratos-admin-system/api/system/admin/v1/base_file";
90
+ import type { BaseFile, PageBaseFileRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_file";
91
+
92
+ defineOptions({ name: "BaseFile", inheritAttrs: false });
93
+
94
+ const { BUTTONS } = useAuthButtons();
95
+ const proTable = ref<ProTableInstance>();
96
+ const detailVisible = ref(false);
97
+ const detail = ref<BaseFile>();
98
+ const previewLoading = ref(false);
99
+ const previewError = ref(false);
100
+ const previewUrl = ref("");
101
+ const previewText = ref("");
102
+ let viewRequestId = 0;
103
+
104
+ /** 文件内容预览类型。 */
105
+ type PreviewKind = "image" | "video" | "audio" | "pdf" | "text" | "unsupported";
106
+
107
+ const previewKind = computed<PreviewKind>(() => (detail.value ? getPreviewKind(detail.value) : "unsupported"));
108
+
109
+ const columns = computed<ColumnProps[]>(() => [
110
+ { prop: "file_name", label: t("system.base.file.field.name"), minWidth: 220, search: { el: "input" } },
111
+ { prop: "extension", label: t("system.base.file.field.extension"), width: 100, search: { el: "input" } },
112
+ { prop: "mime_type", label: t("system.base.file.field.mime"), minWidth: 180 },
113
+ { prop: "size", label: t("system.base.file.field.size"), width: 120, render: scope => formatFileSize((scope.row as BaseFile).size) },
114
+ { prop: "content_hash", label: t("system.base.file.field.hash"), minWidth: 220 },
115
+ { prop: "tenant_id", label: t("system.base.file.field.tenant"), width: 100 },
116
+ { prop: "created_at", label: t("common.field.created_at"), minWidth: 180 },
117
+ {
118
+ prop: "operation",
119
+ label: t("common.field.operation"),
120
+ width: 150,
121
+ fixed: "right",
122
+ cellType: "actions",
123
+ actions: [
124
+ {
125
+ label: t("common.action.view"),
126
+ type: "primary",
127
+ link: true,
128
+ icon: View,
129
+ hidden: () => !BUTTONS.value["base:file:info"],
130
+ onClick: scope => handleView(scope.row as BaseFile)
131
+ },
132
+ {
133
+ label: t("common.action.delete"),
134
+ type: "danger",
135
+ link: true,
136
+ icon: Delete,
137
+ hidden: () => !BUTTONS.value["base:file:delete"],
138
+ onClick: scope => handleDelete(scope.row as BaseFile)
139
+ }
140
+ ]
141
+ }
142
+ ]);
143
+
144
+ /** 请求文件资产分页列表。 */
145
+ async function requestBaseFileTable(params: PageBaseFileRequest) {
146
+ const data = await defBaseFileService.PageBaseFile(buildPageRequest(params));
147
+ return { data: { list: data.base_files ?? [], total: data.total } };
148
+ }
149
+
150
+ /** 查看文件资产详情。 */
151
+ async function handleView(row: BaseFile) {
152
+ const requestId = ++viewRequestId;
153
+ detailVisible.value = true;
154
+ detail.value = undefined;
155
+ resetPreview();
156
+ try {
157
+ const loadedDetail = await defBaseFileService.GetBaseFile({ id: row.id });
158
+ if (requestId !== viewRequestId) return;
159
+ detail.value = loadedDetail;
160
+ await loadPreview(loadedDetail, requestId);
161
+ } catch {
162
+ if (requestId === viewRequestId) detailVisible.value = false;
163
+ }
164
+ }
165
+
166
+ /** 加载文件内容并准备浏览器预览。 */
167
+ async function loadPreview(file: BaseFile, requestId: number) {
168
+ const kind = getPreviewKind(file);
169
+ if (kind === "unsupported") return;
170
+
171
+ previewLoading.value = true;
172
+ previewError.value = false;
173
+ try {
174
+ const blob = await defFileService.GetFileBlob(file.link_url, file.file_name);
175
+ if (!isViewActive(file, requestId)) return;
176
+ const previewBlob = new Blob([blob], { type: file.mime_type || blob.type || "application/octet-stream" });
177
+ if (kind === "text") {
178
+ const text = await previewBlob.text();
179
+ if (isViewActive(file, requestId)) previewText.value = text;
180
+ } else {
181
+ previewUrl.value = URL.createObjectURL(previewBlob);
182
+ }
183
+ } catch {
184
+ if (isViewActive(file, requestId)) previewError.value = true;
185
+ } finally {
186
+ if (requestId === viewRequestId) previewLoading.value = false;
187
+ }
188
+ }
189
+
190
+ /** 下载当前详情文件。 */
191
+ async function downloadDetail() {
192
+ if (!detail.value) return;
193
+ await defFileService.DownloadFile(detail.value.link_url, detail.value.file_name);
194
+ }
195
+
196
+ /** 关闭详情时释放预览资源并清空状态。 */
197
+ function resetDetail() {
198
+ viewRequestId += 1;
199
+ detail.value = undefined;
200
+ resetPreview();
201
+ }
202
+
203
+ /** 清理当前预览状态。 */
204
+ function resetPreview() {
205
+ if (previewUrl.value) URL.revokeObjectURL(previewUrl.value);
206
+ previewUrl.value = "";
207
+ previewText.value = "";
208
+ previewError.value = false;
209
+ previewLoading.value = false;
210
+ }
211
+
212
+ /** 根据 MIME 类型选择安全的在线预览方式。 */
213
+ function getPreviewKind(file: BaseFile): PreviewKind {
214
+ const mimeType = file.mime_type.toLowerCase().split(";", 1)[0];
215
+ if (mimeType.startsWith("image/")) return "image";
216
+ if (mimeType.startsWith("video/")) return "video";
217
+ if (mimeType.startsWith("audio/")) return "audio";
218
+ if (mimeType === "application/pdf") return "pdf";
219
+ if (mimeType.startsWith("text/") || mimeType === "application/json") return "text";
220
+ return "unsupported";
221
+ }
222
+
223
+ /** 判断异步预览请求是否仍对应当前打开的文件详情。 */
224
+ function isViewActive(file: BaseFile, requestId: number) {
225
+ return detailVisible.value && requestId === viewRequestId && detail.value?.id === file.id;
226
+ }
227
+
228
+ /** 删除文件资产。 */
229
+ async function handleDelete(row: BaseFile) {
230
+ try {
231
+ await ElMessageBox.confirm(
232
+ t("system.base.file.confirm_delete", { name: row.file_name }),
233
+ t("common.title.warning"),
234
+ { type: "warning", confirmButtonText: t("common.action.confirm"), cancelButtonText: t("common.action.cancel") }
235
+ );
236
+ await defBaseFileService.DeleteBaseFile({ id: row.id });
237
+ ElMessage.success(t("common.message.delete_success", { resource: t("system.base.file.resource") }));
238
+ proTable.value?.getTableList();
239
+ } catch {
240
+ // 用户取消确认或接口失败时由请求层展示错误。
241
+ }
242
+ }
243
+
244
+ function formatFileSize(size: number) {
245
+ if (!size) return "0 B";
246
+ const units = ["B", "KB", "MB", "GB"];
247
+ let value = size;
248
+ let index = 0;
249
+ while (value >= 1024 && index < units.length - 1) {
250
+ value /= 1024;
251
+ index += 1;
252
+ }
253
+ return `${value.toFixed(index === 0 ? 0 : 2)} ${units[index]}`;
254
+ }
255
+ </script>
256
+
257
+ <style scoped lang="scss">
258
+ .file-preview {
259
+ min-height: 220px;
260
+ display: grid;
261
+ place-items: center;
262
+ padding: 16px;
263
+ border: 1px solid var(--el-border-color-lighter);
264
+ background: var(--el-fill-color-lighter);
265
+ }
266
+
267
+ .file-preview__image {
268
+ display: block;
269
+ max-width: 100%;
270
+ max-height: 48vh;
271
+ object-fit: contain;
272
+ }
273
+
274
+ .file-preview__media {
275
+ display: block;
276
+ width: min(100%, 760px);
277
+ max-height: 48vh;
278
+ }
279
+
280
+ .file-preview__audio {
281
+ width: min(100%, 560px);
282
+ }
283
+
284
+ .file-preview__document {
285
+ display: block;
286
+ width: 100%;
287
+ height: 48vh;
288
+ border: 0;
289
+ }
290
+
291
+ .file-preview__text {
292
+ width: 100%;
293
+ max-height: 48vh;
294
+ margin: 0;
295
+ overflow: auto;
296
+ white-space: pre-wrap;
297
+ overflow-wrap: anywhere;
298
+ text-align: left;
299
+ color: var(--el-text-color-primary);
300
+ }
301
+
302
+ .file-preview__result {
303
+ padding: 24px 0;
304
+ }
305
+
306
+ .file-meta {
307
+ margin-top: 16px;
308
+ }
309
+
310
+ .file-meta__value {
311
+ display: block;
312
+ max-width: 100%;
313
+ overflow: hidden;
314
+ text-overflow: ellipsis;
315
+ white-space: nowrap;
316
+ }
317
+
318
+ .file-detail__actions {
319
+ display: flex;
320
+ justify-content: flex-end;
321
+ margin-top: 16px;
322
+ }
323
+ </style>