@liujitcn/kratos-admin-system 0.0.49 → 0.0.50

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 (94) hide show
  1. package/README.md +44 -8
  2. package/dist/package/declarations/src/api/system/admin/v1/base_i18n_custom.d.ts +18 -0
  3. package/dist/package/declarations/src/api/system/admin/v1/base_tenant.d.ts +2 -2
  4. package/dist/package/declarations/src/api/system/admin/v1/base_tenant_project.d.ts +23 -0
  5. package/dist/package/declarations/src/api/system/admin/v1/base_tenant_project_grant.d.ts +16 -0
  6. package/dist/package/declarations/src/components/tenant-project/ProjectGrantDialog.vue.d.ts +8 -0
  7. package/dist/package/declarations/src/components/tenant-project/TenantProjectManager.vue.d.ts +29 -0
  8. package/dist/package/declarations/src/components/tenant-project/TenantProjectSelect.vue.d.ts +31 -0
  9. package/dist/package/declarations/src/components/tenant-project/TenantProjectText.vue.d.ts +19 -0
  10. package/dist/package/declarations/src/components/tenant-project/tenant-project-manager-data.d.ts +14 -0
  11. package/dist/package/declarations/src/components/tenant-project/tenant-project-manager.d.ts +40 -0
  12. package/dist/package/declarations/src/index.d.ts +2 -0
  13. package/dist/package/declarations/src/locales/generated.d.ts +172 -0
  14. package/dist/package/declarations/src/rpc/base/v1/config.d.ts +11 -0
  15. package/dist/package/declarations/src/rpc/system/admin/v1/base_i18n_custom.d.ts +105 -0
  16. package/dist/package/declarations/src/rpc/system/admin/v1/base_tenant.d.ts +10 -1
  17. package/dist/package/declarations/src/rpc/system/admin/v1/base_tenant_project.d.ts +141 -0
  18. package/dist/package/declarations/src/rpc/system/admin/v1/base_tenant_project_grant.d.ts +105 -0
  19. package/dist/package/declarations/src/views/ai/chat/components/SessionPanel.vue.d.ts +2 -2
  20. package/dist/package/declarations/src/views/base/i18n-custom/index.vue.d.ts +3 -0
  21. package/dist/package/declarations/src/views/base/project-grant/index.vue.d.ts +3 -0
  22. package/dist/package/declarations/src/views/base/tenant-project/index.vue.d.ts +3 -0
  23. package/dist/package/src/api/system/admin/v1/base_i18n_custom.ts +72 -0
  24. package/dist/package/src/api/system/admin/v1/base_tenant.ts +3 -2
  25. package/dist/package/src/api/system/admin/v1/base_tenant_project.ts +94 -0
  26. package/dist/package/src/api/system/admin/v1/base_tenant_project_grant.ts +63 -0
  27. package/dist/package/src/components/tenant-project/ProjectGrantDialog.vue +108 -0
  28. package/dist/package/src/components/tenant-project/TenantProjectManager.vue +452 -0
  29. package/dist/package/src/components/tenant-project/TenantProjectSelect.vue +83 -0
  30. package/dist/package/src/components/tenant-project/TenantProjectText.vue +37 -0
  31. package/dist/package/src/components/tenant-project/tenant-project-manager-data.ts +26 -0
  32. package/dist/package/src/components/tenant-project/tenant-project-manager.ts +48 -0
  33. package/dist/package/src/index.ts +12 -0
  34. package/dist/package/src/locales/README.md +1 -1
  35. package/dist/package/src/locales/en-US.json +45 -2
  36. package/dist/package/src/locales/ja-JP.json +45 -2
  37. package/dist/package/src/locales/zh-CN.json +45 -2
  38. package/dist/package/src/locales/zh-TW.json +45 -2
  39. package/dist/package/src/module.ts +3 -3
  40. package/dist/package/src/rpc/base/v1/config.ts +12 -0
  41. package/dist/package/src/rpc/system/admin/v1/base_i18n_custom.ts +126 -0
  42. package/dist/package/src/rpc/system/admin/v1/base_tenant.ts +11 -1
  43. package/dist/package/src/rpc/system/admin/v1/base_tenant_project.ts +166 -0
  44. package/dist/package/src/rpc/system/admin/v1/base_tenant_project_grant.ts +128 -0
  45. package/dist/package/src/views/ai/chat/components/XSender.vue +4 -3
  46. package/dist/package/src/views/base/api-log/index.vue +3 -3
  47. package/dist/package/src/views/base/config/index.vue +3 -3
  48. package/dist/package/src/views/base/data-access-log/index.vue +3 -3
  49. package/dist/package/src/views/base/dept/index.vue +10 -45
  50. package/dist/package/src/views/base/dict/index.vue +3 -3
  51. package/dist/package/src/views/base/dict/item.vue +3 -3
  52. package/dist/package/src/views/base/file/index.vue +12 -3
  53. package/dist/package/src/views/base/i18n-custom/index.vue +321 -0
  54. package/dist/package/src/views/base/job/index.vue +3 -3
  55. package/dist/package/src/views/base/login-log/index.vue +13 -4
  56. package/dist/package/src/views/base/login-policy/index.vue +97 -34
  57. package/dist/package/src/views/base/menu/index.vue +3 -3
  58. package/dist/package/src/views/base/message/index.vue +9 -32
  59. package/dist/package/src/views/base/message-category/index.vue +2 -4
  60. package/dist/package/src/views/base/oauth-client/index.vue +8 -42
  61. package/dist/package/src/views/base/online-session/index.vue +8 -27
  62. package/dist/package/src/views/base/operation-log/index.vue +3 -3
  63. package/dist/package/src/views/base/permission-log/index.vue +3 -3
  64. package/dist/package/src/views/base/policy-evaluation-log/index.vue +3 -3
  65. package/dist/package/src/views/base/post/index.vue +9 -42
  66. package/dist/package/src/views/base/project-grant/index.vue +336 -0
  67. package/dist/package/src/views/base/role/index.vue +13 -47
  68. package/dist/package/src/views/base/tenant/index.vue +163 -19
  69. package/dist/package/src/views/base/tenant-project/index.vue +12 -0
  70. package/dist/package/src/views/base/user/index.vue +30 -51
  71. package/dist/package/src/views/profile/components/login-log.vue +15 -2
  72. package/dist/package/src/views/profile/components/password.vue +1 -1
  73. package/dist/package/src/views/profile/components/security.vue +2 -2
  74. package/dist/package/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue +2 -2
  75. package/dist/package/src/views/tool/code-gen/config.ts +2 -1
  76. package/package.json +2 -2
  77. /package/dist/package/declarations/src/components/{ChangePasswordForm.vue.d.ts → account/ChangePasswordForm.vue.d.ts} +0 -0
  78. /package/dist/package/declarations/src/components/{ForcedPasswordDialog.vue.d.ts → account/ForcedPasswordDialog.vue.d.ts} +0 -0
  79. /package/dist/package/declarations/src/components/{Ai.vue.d.ts → ai/Ai.vue.d.ts} +0 -0
  80. /package/dist/package/declarations/src/components/{DynamicI18nCell.vue.d.ts → i18n/DynamicI18nCell.vue.d.ts} +0 -0
  81. /package/dist/package/declarations/src/components/{DynamicI18nEditor.vue.d.ts → i18n/DynamicI18nEditor.vue.d.ts} +0 -0
  82. /package/dist/package/declarations/src/components/{dynamicI18n.d.ts → i18n/dynamicI18n.d.ts} +0 -0
  83. /package/dist/package/declarations/src/components/{LogTable.vue.d.ts → log/LogTable.vue.d.ts} +0 -0
  84. /package/dist/package/declarations/src/components/{log.d.ts → log/log.d.ts} +0 -0
  85. /package/dist/package/declarations/src/components/{Notification.vue.d.ts → notification/Notification.vue.d.ts} +0 -0
  86. /package/dist/package/src/components/{ChangePasswordForm.vue → account/ChangePasswordForm.vue} +0 -0
  87. /package/dist/package/src/components/{ForcedPasswordDialog.vue → account/ForcedPasswordDialog.vue} +0 -0
  88. /package/dist/package/src/components/{Ai.vue → ai/Ai.vue} +0 -0
  89. /package/dist/package/src/components/{DynamicI18nCell.vue → i18n/DynamicI18nCell.vue} +0 -0
  90. /package/dist/package/src/components/{DynamicI18nEditor.vue → i18n/DynamicI18nEditor.vue} +0 -0
  91. /package/dist/package/src/components/{dynamicI18n.ts → i18n/dynamicI18n.ts} +0 -0
  92. /package/dist/package/src/components/{LogTable.vue → log/LogTable.vue} +0 -0
  93. /package/dist/package/src/components/{log.ts → log/log.ts} +0 -0
  94. /package/dist/package/src/components/{Notification.vue → notification/Notification.vue} +0 -0
package/README.md CHANGED
@@ -33,15 +33,23 @@ packages/modules/system
33
33
 
34
34
  | 路径 | 作用 |
35
35
  | ----------------------- | ------------------------------------------------------- |
36
- | `src/index.ts` | npm 主入口,导出 System 模块和 AI 扩展契约。 |
36
+ | `src/index.ts` | npm 主入口,导出 System 模块、AI 扩展契约和租户项目管理组件。 |
37
37
  | `src/module.ts` | 注册 System 页面、AI 顶部入口、个人中心菜单和路由行为。 |
38
38
  | `src/ai.ts` | 定义 AI 流程卡片扩展名称、类型和读取入口。 |
39
- | `src/components/Ai.vue` | System 提供的 AI 顶部工具入口。 |
40
- | `src/components/ChangePasswordForm.vue` | 个人中心与强制改密弹窗共用的修改密码表单。 |
41
- | `src/components/ForcedPasswordDialog.vue` | 登录成功后在当前业务页面展示的强制改密弹窗。 |
42
- | `src/components/DynamicI18nCell.vue` | 翻译资源列表单元格,悬停预览当前语言之外的内容。 |
43
- | `src/components/DynamicI18nEditor.vue` | 动态资源多语言编辑器。 |
44
- | `src/components/dynamicI18n.ts` | 动态资源翻译状态和表单辅助类型。 |
39
+ | `src/components/ai/Ai.vue` | System 提供的 AI 顶部工具入口。 |
40
+ | `src/components/account/ChangePasswordForm.vue` | 个人中心与强制改密弹窗共用的修改密码表单。 |
41
+ | `src/components/account/ForcedPasswordDialog.vue` | 登录成功后在当前业务页面展示的强制改密弹窗。 |
42
+ | `src/components/i18n/DynamicI18nCell.vue` | 翻译资源列表单元格,悬停预览当前语言之外的内容。 |
43
+ | `src/components/i18n/DynamicI18nEditor.vue` | 动态资源多语言编辑器。 |
44
+ | `src/components/i18n/dynamicI18n.ts` | 动态资源翻译状态和表单辅助类型。 |
45
+ | `src/components/log/LogTable.vue` | 日志列表的通用表格组件。 |
46
+ | `src/components/log/log.ts` | 日志列表列和查询辅助函数。 |
47
+ | `src/components/notification/Notification.vue` | System 提供的站内信顶部工具入口。 |
48
+ | `src/components/tenant-project/TenantProjectSelect.vue` | 租户项目树选择器,默认租户显示“租户 / 项目”,普通租户显示当前租户项目。 |
49
+ | `src/components/tenant-project/TenantProjectText.vue` | 租户项目列表展示组件,按当前租户身份自动组合名称。 |
50
+ | `src/components/tenant-project/TenantProjectManager.vue` | 可复用的租户项目管理组件,支持追加列、业务数据加载、操作和作用域插槽。 |
51
+ | `src/components/tenant-project/tenant-project-manager.ts` | 租户项目管理组件的扩展类型、双键上下文和数据合并辅助函数。 |
52
+ | `src/components/tenant-project/ProjectGrantDialog.vue` | 岗位、角色、部门和用户的项目授权弹窗。 |
45
53
  | `src/rpc/**/*.ts` | System 页面与 API 自包含的 RPC 类型。 |
46
54
  | `src/typings/*.d.ts` | 声明 System 页面使用的 Markdown 和 Swagger 模块。 |
47
55
  | `package.json` | 声明依赖以及公开的模块入口、API 和 RPC 子路径。 |
@@ -61,6 +69,7 @@ packages/modules/system
61
69
  | `src/api/base/v1/sse.ts` | SSE 服务请求。 |
62
70
  | `src/api/system/admin/v1/auth.ts` | 个人中心认证服务请求。 |
63
71
  | `src/api/system/admin/v1/base_*.ts` | System 基础服务请求。 |
72
+ | `src/api/system/admin/v1/base_i18n_custom.ts` | 管理端固定文案自定义翻译请求。 |
64
73
  | `src/api/system/admin/v1/code_gen*.ts` | 代码生成服务请求。 |
65
74
  | `src/api/system/admin/v1/oauth_client.ts` | 开放授权客户端服务请求。 |
66
75
  | `src/api/system/admin/v1/ops_monitoring.ts` | 运维监控服务请求。 |
@@ -78,6 +87,7 @@ packages/modules/system
78
87
  | `src/views/base/api/index.vue` | API 资源管理页。 |
79
88
  | `src/views/base/area/index.vue` | 行政区域管理页。 |
80
89
  | `src/views/base/config/index.vue` | 系统配置管理页。 |
90
+ | `src/views/base/i18n-custom/index.vue` | 国际化自定义翻译管理页。 |
81
91
  | `src/views/base/runtime-config/index.vue` | 日志入库回退配置页。 |
82
92
  | `src/views/base/backup-management/archive-config/index.vue` | 数据归档配置页。 |
83
93
  | `src/views/base/backup-management/archive-record/index.vue` | 数据归档执行记录页。 |
@@ -96,6 +106,7 @@ packages/modules/system
96
106
  | `src/views/base/post/index.vue` | 岗位管理页。 |
97
107
  | `src/views/base/role/index.vue` | 角色管理页。 |
98
108
  | `src/views/base/tenant/index.vue` | 租户管理页。 |
109
+ | `src/views/base/project-grant/index.vue` | 项目授权管理页。 |
99
110
  | `src/views/base/user/index.vue` | 用户管理页。 |
100
111
  | `src/views/base/user/components/dept-tree.vue` | 用户页的部门树筛选组件。 |
101
112
  | `src/views/profile/` | 个人中心与安全设置页面。 |
@@ -117,6 +128,8 @@ packages/modules/system
117
128
  | `src/views/tool/runtime-log/index.vue` | 运行日志控制台、历史文件和下载页。 |
118
129
  | `src/views/tool/cache/index.vue` | 运行时缓存查询页,展示键、值、TTL 和时间元数据。 |
119
130
 
131
+ 租户管理页创建租户时会自动初始化并启用 `admin` 管理员账号;有全局初始化密码时复用该密码,没有配置时通过创建响应一次性展示随机初始密码。
132
+
120
133
  ## 接入
121
134
 
122
135
  宿主安装本包后,在模块清单中注册:
@@ -140,7 +153,29 @@ export const adminModules = [systemAdminModule];
140
153
 
141
154
  跨模块跳转使用 Vue Router;复用 System 代码时只引用 `package.json#exports` 公开的 npm 子路径。
142
155
 
143
- System 页面只通过 `systemAdminModule.views` 注册,不作为 npm 子路径公开。模块内组件当前也不对外开放;出现真实跨模块复用需求时,按具体组件文件增加显式导出,不提供 `components/*` 通配入口。
156
+ 租户项目管理组件通过 `TenantProjectManager` 公开。外部业务模块可以传入 `extraColumns`、`extraActions` 和 `loadExtraData`:追加列继续使用 `ColumnProps`,数据加载器接收当前页的 `tenant_id + project_id` 集合,单条操作回调接收同一组双键以及项目基础数据。组件也会透传表格具名插槽,并向行插槽增加 `tenantProject` 上下文;保存业务配置后可通过组件实例的 `refresh()` 刷新列表。按外部业务字段搜索或排序时,应由外部接口参与分页查询,不能只在当前页加载后过滤。
157
+
158
+ 外部项目可以在自己的页面中包装该组件,并通过菜单将项目管理页面的 `component` 指向包装页面:
159
+
160
+ ```vue
161
+ <template>
162
+ <TenantProjectManager
163
+ ref="manager"
164
+ :extra-columns="columns"
165
+ :extra-actions="actions"
166
+ :load-extra-data="loadExtraData"
167
+ />
168
+ <ProjectConfigDialog v-model="configVisible" :project="selectedProject" @saved="manager?.refresh()" />
169
+ </template>
170
+
171
+ <script setup lang="ts">
172
+ import { TenantProjectManager, type TenantProjectAction, type TenantProjectExtraDataLoader } from "@liujitcn/kratos-admin-system";
173
+ </script>
174
+ ```
175
+
176
+ 包装页面、业务 API 和弹窗仍属于外部模块;`apps/admin` 只在模块清单中加载该模块。
177
+
178
+ System 页面只通过 `systemAdminModule.views` 注册,不作为 npm 子路径公开。模块内组件默认不对外开放;`TenantProjectManager` 是显式公开的跨业务复用组件,其他组件仍保持内部使用。
144
179
 
145
180
  登录、菜单和用户信息等运行底座属于 core;个人中心、AI 助手及其顶部入口属于 System。System 可以引用 core 的公共导出,core 不得反向依赖 System;其他业务模块只能通过 `AdminModule.staticViews` 显式替换默认登录页或状态页。
146
181
 
@@ -150,6 +185,7 @@ System 的 API 与 RPC 都按 Proto 完整层级维护,API 文件名与对应
150
185
 
151
186
  - `system/base/dashboard/index`:后台工作台概览和趋势统计。
152
187
  - `system/base/file/index`:文件资产元数据查询和删除。
188
+ - `system/base/i18n-custom/index`:按位置、语言和语言键维护管理端固定文案覆盖。
153
189
 
154
190
  ## AI 扩展
155
191
 
@@ -0,0 +1,18 @@
1
+ import type { Empty } from "@liujitcn/kratos-admin-system/rpc/google/protobuf/empty";
2
+ import type { BaseI18nCustomForm, BaseI18nCustomService, CreateBaseI18nCustomRequest, DeleteBaseI18nCustomRequest, GetBaseI18nCustomRequest, PageBaseI18nCustomRequest, PageBaseI18nCustomResponse, SetBaseI18nCustomStatusRequest, UpdateBaseI18nCustomRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_i18n_custom";
3
+ /** Admin前端国际化自定义翻译服务。 */
4
+ export declare class BaseI18nCustomServiceImpl implements BaseI18nCustomService {
5
+ /** 查询国际化自定义翻译分页列表。 */
6
+ PageBaseI18nCustom(request: PageBaseI18nCustomRequest): Promise<PageBaseI18nCustomResponse>;
7
+ /** 查询国际化自定义翻译详情。 */
8
+ GetBaseI18nCustom(request: GetBaseI18nCustomRequest): Promise<BaseI18nCustomForm>;
9
+ /** 创建国际化自定义翻译。 */
10
+ CreateBaseI18nCustom(request: CreateBaseI18nCustomRequest): Promise<Empty>;
11
+ /** 更新国际化自定义翻译。 */
12
+ UpdateBaseI18nCustom(request: UpdateBaseI18nCustomRequest): Promise<Empty>;
13
+ /** 删除国际化自定义翻译。 */
14
+ DeleteBaseI18nCustom(request: DeleteBaseI18nCustomRequest): Promise<Empty>;
15
+ /** 设置国际化自定义翻译状态。 */
16
+ SetBaseI18nCustomStatus(request: SetBaseI18nCustomStatusRequest): Promise<Empty>;
17
+ }
18
+ export declare const defBaseI18nCustomService: BaseI18nCustomServiceImpl;
@@ -1,4 +1,4 @@
1
- import { type BaseTenantForm, type BaseTenantService, type CreateBaseTenantRequest, type DeleteBaseTenantRequest, type GetBaseTenantRequest, type OptionBaseTenantRequest, type PageBaseTenantRequest, type PageBaseTenantResponse, type SetBaseTenantStatusRequest, type UpdateBaseTenantRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_tenant";
1
+ import { type BaseTenantForm, type BaseTenantService, type CreateBaseTenantRequest, type CreateBaseTenantResponse, type DeleteBaseTenantRequest, type GetBaseTenantRequest, type OptionBaseTenantRequest, type PageBaseTenantRequest, type PageBaseTenantResponse, type SetBaseTenantStatusRequest, type UpdateBaseTenantRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_tenant";
2
2
  import type { SelectOptionResponse } from "@liujitcn/kratos-admin-system/rpc/common/v1/common";
3
3
  import type { Empty } from "@liujitcn/kratos-admin-system/rpc/google/protobuf/empty";
4
4
  /** Admin租户管理服务 */
@@ -10,7 +10,7 @@ export declare class BaseTenantServiceImpl implements BaseTenantService {
10
10
  /** 查询租户 */
11
11
  GetBaseTenant(request: GetBaseTenantRequest): Promise<BaseTenantForm>;
12
12
  /** 创建租户 */
13
- CreateBaseTenant(request: CreateBaseTenantRequest): Promise<Empty>;
13
+ CreateBaseTenant(request: CreateBaseTenantRequest): Promise<CreateBaseTenantResponse>;
14
14
  /** 更新租户 */
15
15
  UpdateBaseTenant(request: UpdateBaseTenantRequest): Promise<Empty>;
16
16
  /** 删除租户 */
@@ -0,0 +1,23 @@
1
+ import { type BaseTenantProjectForm, type BaseTenantProjectService, type CreateBaseTenantProjectRequest, type DeleteBaseTenantProjectRequest, type GetBaseTenantProjectRequest, type OptionBaseTenantProjectRequest, type TreeBaseTenantProjectRequest, type TreeBaseTenantProjectResponse, type PageBaseTenantProjectRequest, type PageBaseTenantProjectResponse, type SetBaseTenantProjectStatusRequest, type UpdateBaseTenantProjectRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_tenant_project";
2
+ import type { Empty } from "@liujitcn/kratos-admin-system/rpc/google/protobuf/empty";
3
+ import type { SelectOptionResponse } from "@liujitcn/kratos-admin-system/rpc/common/v1/common";
4
+ /** Admin项目服务。 */
5
+ export declare class BaseTenantProjectServiceImpl implements BaseTenantProjectService {
6
+ /** 查询项目下拉选择。 */
7
+ OptionBaseTenantProject(request: OptionBaseTenantProjectRequest): Promise<SelectOptionResponse>;
8
+ /** 查询项目分页列表。 */
9
+ PageBaseTenantProject(request: PageBaseTenantProjectRequest): Promise<PageBaseTenantProjectResponse>;
10
+ /** 查询当前账号可用的租户项目树。 */
11
+ TreeBaseTenantProject(request: TreeBaseTenantProjectRequest): Promise<TreeBaseTenantProjectResponse>;
12
+ /** 查询项目。 */
13
+ GetBaseTenantProject(request: GetBaseTenantProjectRequest): Promise<BaseTenantProjectForm>;
14
+ /** 创建项目。 */
15
+ CreateBaseTenantProject(request: CreateBaseTenantProjectRequest): Promise<Empty>;
16
+ /** 更新项目。 */
17
+ UpdateBaseTenantProject(request: UpdateBaseTenantProjectRequest): Promise<Empty>;
18
+ /** 删除项目。 */
19
+ DeleteBaseTenantProject(request: DeleteBaseTenantProjectRequest): Promise<Empty>;
20
+ /** 设置项目状态。 */
21
+ SetBaseTenantProjectStatus(request: SetBaseTenantProjectStatusRequest): Promise<Empty>;
22
+ }
23
+ export declare const defBaseTenantProjectService: BaseTenantProjectServiceImpl;
@@ -0,0 +1,16 @@
1
+ import { type BaseTenantProjectGrant, type BaseTenantProjectGrantService, type CreateBaseTenantProjectGrantRequest, type DeleteBaseTenantProjectGrantRequest, type GetBaseTenantProjectGrantRequest, type PageBaseTenantProjectGrantRequest, type PageBaseTenantProjectGrantResponse, type UpdateBaseTenantProjectGrantRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_tenant_project_grant";
2
+ import type { Empty } from "@liujitcn/kratos-admin-system/rpc/google/protobuf/empty";
3
+ /** Admin项目授权服务。 */
4
+ export declare class BaseTenantProjectGrantServiceImpl implements BaseTenantProjectGrantService {
5
+ /** 查询项目授权分页列表。 */
6
+ PageBaseTenantProjectGrant(request: PageBaseTenantProjectGrantRequest): Promise<PageBaseTenantProjectGrantResponse>;
7
+ /** 查询项目授权详情。 */
8
+ GetBaseTenantProjectGrant(request: GetBaseTenantProjectGrantRequest): Promise<BaseTenantProjectGrant>;
9
+ /** 新增项目授权。 */
10
+ CreateBaseTenantProjectGrant(request: CreateBaseTenantProjectGrantRequest): Promise<Empty>;
11
+ /** 更新项目授权的项目范围。 */
12
+ UpdateBaseTenantProjectGrant(request: UpdateBaseTenantProjectGrantRequest): Promise<Empty>;
13
+ /** 删除项目授权。 */
14
+ DeleteBaseTenantProjectGrant(request: DeleteBaseTenantProjectGrantRequest): Promise<Empty>;
15
+ }
16
+ export declare const defBaseTenantProjectGrantService: BaseTenantProjectGrantServiceImpl;
@@ -0,0 +1,8 @@
1
+ import type { BaseTenantProjectGrantSubjectType } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_tenant_project_grant";
2
+ /** 打开指定主体的授权表单,目标租户切换后重新加载直接授权。 */
3
+ declare function open(type: BaseTenantProjectGrantSubjectType, id: number, tenantId: number): Promise<void>;
4
+ declare const __VLS_export: import("vue").DefineComponent<{}, {
5
+ open: typeof open;
6
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
7
+ declare const _default: typeof __VLS_export;
8
+ export default _default;
@@ -0,0 +1,29 @@
1
+ import type { ColumnProps } from "@liujitcn/kratos-admin-core/components/ProTable/interface";
2
+ import { type TenantProjectAction, type TenantProjectManagerProps } from "./tenant-project-manager";
3
+ /** 刷新项目表格。 */
4
+ declare function refreshTable(): Promise<void>;
5
+ declare var __VLS_11: string, __VLS_12: any;
6
+ type __VLS_Slots = {} & {
7
+ [K in NonNullable<typeof __VLS_11>]?: (props: typeof __VLS_12) => any;
8
+ };
9
+ declare const __VLS_base: import("vue").DefineComponent<TenantProjectManagerProps, {
10
+ /** 刷新项目列表。 */
11
+ refresh: typeof refreshTable;
12
+ /** 兼容表格实例的刷新方法名称。 */
13
+ getTableList: typeof refreshTable;
14
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
15
+ "extra-data-error": (error: unknown) => any;
16
+ }, string, import("vue").PublicProps, Readonly<TenantProjectManagerProps> & Readonly<{
17
+ "onExtra-data-error"?: ((error: unknown) => any) | undefined;
18
+ }>, {
19
+ extraColumns: ColumnProps[];
20
+ extraActions: TenantProjectAction[];
21
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
22
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
23
+ declare const _default: typeof __VLS_export;
24
+ export default _default;
25
+ type __VLS_WithSlots<T, S> = T & {
26
+ new (): {
27
+ $slots: S;
28
+ };
29
+ };
@@ -0,0 +1,31 @@
1
+ import type { TreeBaseTenantProjectResponse_Option } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_tenant_project";
2
+ /** 租户项目选择值。 */
3
+ export interface TenantProjectSelection {
4
+ /** 节点唯一值。 */
5
+ value?: string;
6
+ /** 目标租户ID。 */
7
+ tenant_id?: number;
8
+ /** 目标项目ID。 */
9
+ project_id?: number;
10
+ /** 节点类型。 */
11
+ type?: "tenant" | "project";
12
+ }
13
+ /** 租户项目选择组件属性。 */
14
+ interface TenantProjectSelectProps {
15
+ /** 当前选中的租户项目。 */
16
+ modelValue?: TenantProjectSelection;
17
+ /** 外部传入的租户项目树。 */
18
+ options?: TreeBaseTenantProjectResponse_Option[];
19
+ }
20
+ declare const __VLS_export: import("vue").DefineComponent<TenantProjectSelectProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
21
+ change: (value: TenantProjectSelection | undefined) => any;
22
+ "update:modelValue": (value: TenantProjectSelection | undefined) => any;
23
+ }, string, import("vue").PublicProps, Readonly<TenantProjectSelectProps> & Readonly<{
24
+ onChange?: ((value: TenantProjectSelection | undefined) => any) | undefined;
25
+ "onUpdate:modelValue"?: ((value: TenantProjectSelection | undefined) => any) | undefined;
26
+ }>, {
27
+ options: TreeBaseTenantProjectResponse_Option[];
28
+ modelValue: TenantProjectSelection;
29
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
30
+ declare const _default: typeof __VLS_export;
31
+ export default _default;
@@ -0,0 +1,19 @@
1
+ import type { SelectOptionResponse_Option } from "@liujitcn/kratos-admin-core/rpc/common/v1/common";
2
+ /** 租户项目展示组件属性。 */
3
+ interface TenantProjectTextProps {
4
+ /** 包含租户和项目字段的列表行。 */
5
+ row: Record<string, any>;
6
+ /** 项目名称字段。 */
7
+ projectField?: string;
8
+ /** 租户名称字段。 */
9
+ tenantField?: string;
10
+ /** 租户选项,用于只有租户ID时解析名称。 */
11
+ tenantOptions?: SelectOptionResponse_Option[];
12
+ }
13
+ declare const __VLS_export: import("vue").DefineComponent<TenantProjectTextProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TenantProjectTextProps> & Readonly<{}>, {
14
+ projectField: string;
15
+ tenantField: string;
16
+ tenantOptions: SelectOptionResponse_Option[];
17
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
+ declare const _default: typeof __VLS_export;
19
+ export default _default;
@@ -0,0 +1,14 @@
1
+ import type { BaseTenantProject } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_tenant_project";
2
+ /** 租户项目业务数据查询键。 */
3
+ export interface TenantProjectKey {
4
+ /** 租户 ID。 */
5
+ tenant_id: number;
6
+ /** 公共项目 ID。 */
7
+ project_id: number;
8
+ }
9
+ /** 租户项目扩展数据,外层键由租户 ID 和项目 ID 组成。 */
10
+ export type TenantProjectExtraData = Record<string, Record<string, unknown>>;
11
+ /** 创建租户项目扩展数据的稳定键。 */
12
+ export declare function tenantProjectKey(tenantId: number, projectId: number): string;
13
+ /** 将外部业务字段合并到项目行,同时保护公共项目字段。 */
14
+ export declare function mergeTenantProjectExtraData(project: BaseTenantProject, extra?: Record<string, unknown>): BaseTenantProject & Record<string, unknown>;
@@ -0,0 +1,40 @@
1
+ import type { BaseTenantProject, PageBaseTenantProjectRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_tenant_project";
2
+ import type { ColumnProps, TableActionProps } from "@liujitcn/kratos-admin-core/components/ProTable/interface";
3
+ import type { TenantProjectExtraData, TenantProjectKey } from "./tenant-project-manager-data";
4
+ export { mergeTenantProjectExtraData, tenantProjectKey, type TenantProjectExtraData, type TenantProjectKey } from "./tenant-project-manager-data";
5
+ /** 租户项目单条业务上下文。 */
6
+ export interface TenantProjectContext<TData extends Record<string, unknown> = Record<string, unknown>> extends TenantProjectKey {
7
+ /** 公共项目基础数据。 */
8
+ project: BaseTenantProject;
9
+ /** 外部业务模块返回的当前项目数据。 */
10
+ data: TData;
11
+ }
12
+ /** 租户项目扩展字段批量加载上下文。 */
13
+ export interface TenantProjectExtraDataLoadContext {
14
+ /** 当前页全部项目键。 */
15
+ projects: TenantProjectKey[];
16
+ /** 当前项目列表查询参数。 */
17
+ query: PageBaseTenantProjectRequest;
18
+ }
19
+ /** 租户项目扩展数据加载器。 */
20
+ export type TenantProjectExtraDataLoader = (context: TenantProjectExtraDataLoadContext) => Promise<TenantProjectExtraData | undefined>;
21
+ /** 租户项目扩展操作按钮。 */
22
+ export type TenantProjectAction = Omit<TableActionProps, "disabled" | "hidden" | "params" | "onClick"> & {
23
+ /** 按项目上下文控制按钮显隐。 */
24
+ hidden?: boolean | ((context: TenantProjectContext) => boolean);
25
+ /** 按项目上下文控制按钮禁用。 */
26
+ disabled?: boolean | ((context: TenantProjectContext) => boolean);
27
+ /** 根据项目上下文生成按钮附加参数。 */
28
+ params?: (context: TenantProjectContext) => Record<string, any>;
29
+ /** 执行项目扩展操作。 */
30
+ onClick: (context: TenantProjectContext, params?: Record<string, any>) => void | Promise<void>;
31
+ };
32
+ /** 租户项目管理组件属性。 */
33
+ export interface TenantProjectManagerProps {
34
+ /** 追加到基础列表的表格列。 */
35
+ extraColumns?: ColumnProps[];
36
+ /** 追加到基础操作列的业务操作。 */
37
+ extraActions?: TenantProjectAction[];
38
+ /** 加载当前页外部业务字段。 */
39
+ loadExtraData?: TenantProjectExtraDataLoader;
40
+ }
@@ -1,3 +1,5 @@
1
1
  export { ADMIN_AI_EXTENSION, getAdminAiExtension } from "./ai";
2
2
  export type { AdminAiExtension } from "./ai";
3
+ export { default as TenantProjectManager } from "./components/tenant-project/TenantProjectManager.vue";
4
+ export { mergeTenantProjectExtraData, tenantProjectKey, type TenantProjectAction, type TenantProjectContext, type TenantProjectExtraData, type TenantProjectExtraDataLoadContext, type TenantProjectExtraDataLoader, type TenantProjectKey, type TenantProjectManagerProps } from "./components/tenant-project/tenant-project-manager";
3
5
  export { systemAdminModule } from "./module";
@@ -495,6 +495,7 @@ export declare const LOCALE_MESSAGES: {
495
495
  "system.base.login_policy.field.device_blacklist": string;
496
496
  "system.base.login_policy.field.device_whitelist": string;
497
497
  "system.base.login_policy.field.initial_password": string;
498
+ "system.base.login_policy.field.password_strength": string;
498
499
  "system.base.login_policy.field.ip_blacklist": string;
499
500
  "system.base.login_policy.field.ip_whitelist": string;
500
501
  "system.base.login_policy.field.lock_duration_minutes": string;
@@ -893,8 +894,14 @@ export declare const LOCALE_MESSAGES: {
893
894
  "system.base.tenant.field.contact_phone": string;
894
895
  "system.base.tenant.field.name": string;
895
896
  "system.base.tenant.message.phone_invalid": string;
897
+ "system.base.tenant.message.initial_credentials": string;
898
+ "system.base.tenant.message.initial_credentials_warning": string;
896
899
  "system.base.tenant.message.protected_delete": string;
897
900
  "system.base.tenant.message.protected_status": string;
901
+ "system.base.tenant.title.initial_credentials": string;
902
+ "system.base.tenant.tooltip.copy_credentials": string;
903
+ "system.base.tenant.tooltip.hide_password": string;
904
+ "system.base.tenant.tooltip.show_password": string;
898
905
  "system.base.user.action.create": string;
899
906
  "system.base.user.action.edit": string;
900
907
  "system.base.user.action.reset_password": string;
@@ -1521,6 +1528,42 @@ export declare const LOCALE_MESSAGES: {
1521
1528
  "system.sse.error.auth_expired": string;
1522
1529
  "system.sse.error.connection_closed": string;
1523
1530
  "system.sse.error.connection_failed": string;
1531
+ "system.base.tenant_project.field.name": string;
1532
+ "system.base.tenant_project.field.code": string;
1533
+ "system.base.tenant_project.grant": string;
1534
+ "system.base.tenant_project.all": string;
1535
+ "system.base.tenant_project.projects": string;
1536
+ "system.base.tenant_project_grant.title": string;
1537
+ "system.base.tenant_project_grant.field.subject_type": string;
1538
+ "system.base.tenant_project_grant.field.subject": string;
1539
+ "system.base.tenant_project_grant.field.scope": string;
1540
+ "system.base.tenant_project_grant.tooltip.scope": string;
1541
+ "system.base.tenant_project_grant.field.projects": string;
1542
+ "system.base.tenant_project_grant.all_projects": string;
1543
+ "system.base.tenant_project_grant.subject_type.post": string;
1544
+ "system.base.tenant_project_grant.subject_type.role": string;
1545
+ "system.base.tenant_project_grant.subject_type.dept": string;
1546
+ "system.base.tenant_project_grant.subject_type.user": string;
1547
+ "system.base.i18n_custom.resource": string;
1548
+ "system.base.i18n_custom.action.create": string;
1549
+ "system.base.i18n_custom.action.edit": string;
1550
+ "system.base.i18n_custom.field.site": string;
1551
+ "system.base.i18n_custom.field.key": string;
1552
+ "system.base.i18n_custom.field.locale": string;
1553
+ "system.base.i18n_custom.field.default_value": string;
1554
+ "system.base.i18n_custom.field.value": string;
1555
+ "system.base.i18n_custom.field.status": string;
1556
+ "system.base.i18n_custom.field.remark": string;
1557
+ "system.base.i18n_custom.site.system": string;
1558
+ "system.base.i18n_custom.site.admin": string;
1559
+ "system.base.i18n_custom.site.app": string;
1560
+ "system.base.i18n_custom.placeholder.site": string;
1561
+ "system.base.i18n_custom.placeholder.key": string;
1562
+ "system.base.i18n_custom.placeholder.locale": string;
1563
+ "system.base.i18n_custom.placeholder.value": string;
1564
+ "system.base.i18n_custom.placeholder.remark": string;
1565
+ "system.base.i18n_custom.message.confirm_status": string;
1566
+ "system.base.i18n_custom.message.confirm_delete": string;
1524
1567
  };
1525
1568
  readonly 'en-US': {
1526
1569
  "system.base.config.tab.basic": string;
@@ -2018,6 +2061,7 @@ export declare const LOCALE_MESSAGES: {
2018
2061
  "system.base.login_policy.field.device_blacklist": string;
2019
2062
  "system.base.login_policy.field.device_whitelist": string;
2020
2063
  "system.base.login_policy.field.initial_password": string;
2064
+ "system.base.login_policy.field.password_strength": string;
2021
2065
  "system.base.login_policy.field.ip_blacklist": string;
2022
2066
  "system.base.login_policy.field.ip_whitelist": string;
2023
2067
  "system.base.login_policy.field.lock_duration_minutes": string;
@@ -2416,8 +2460,14 @@ export declare const LOCALE_MESSAGES: {
2416
2460
  "system.base.tenant.field.contact_phone": string;
2417
2461
  "system.base.tenant.field.name": string;
2418
2462
  "system.base.tenant.message.phone_invalid": string;
2463
+ "system.base.tenant.message.initial_credentials": string;
2464
+ "system.base.tenant.message.initial_credentials_warning": string;
2419
2465
  "system.base.tenant.message.protected_delete": string;
2420
2466
  "system.base.tenant.message.protected_status": string;
2467
+ "system.base.tenant.title.initial_credentials": string;
2468
+ "system.base.tenant.tooltip.copy_credentials": string;
2469
+ "system.base.tenant.tooltip.hide_password": string;
2470
+ "system.base.tenant.tooltip.show_password": string;
2421
2471
  "system.base.user.action.create": string;
2422
2472
  "system.base.user.action.edit": string;
2423
2473
  "system.base.user.action.reset_password": string;
@@ -3044,6 +3094,42 @@ export declare const LOCALE_MESSAGES: {
3044
3094
  "system.sse.error.auth_expired": string;
3045
3095
  "system.sse.error.connection_closed": string;
3046
3096
  "system.sse.error.connection_failed": string;
3097
+ "system.base.tenant_project.field.name": string;
3098
+ "system.base.tenant_project.field.code": string;
3099
+ "system.base.tenant_project.grant": string;
3100
+ "system.base.tenant_project.all": string;
3101
+ "system.base.tenant_project.projects": string;
3102
+ "system.base.tenant_project_grant.title": string;
3103
+ "system.base.tenant_project_grant.field.subject_type": string;
3104
+ "system.base.tenant_project_grant.field.subject": string;
3105
+ "system.base.tenant_project_grant.field.scope": string;
3106
+ "system.base.tenant_project_grant.tooltip.scope": string;
3107
+ "system.base.tenant_project_grant.field.projects": string;
3108
+ "system.base.tenant_project_grant.all_projects": string;
3109
+ "system.base.tenant_project_grant.subject_type.post": string;
3110
+ "system.base.tenant_project_grant.subject_type.role": string;
3111
+ "system.base.tenant_project_grant.subject_type.dept": string;
3112
+ "system.base.tenant_project_grant.subject_type.user": string;
3113
+ "system.base.i18n_custom.resource": string;
3114
+ "system.base.i18n_custom.action.create": string;
3115
+ "system.base.i18n_custom.action.edit": string;
3116
+ "system.base.i18n_custom.field.site": string;
3117
+ "system.base.i18n_custom.field.key": string;
3118
+ "system.base.i18n_custom.field.locale": string;
3119
+ "system.base.i18n_custom.field.default_value": string;
3120
+ "system.base.i18n_custom.field.value": string;
3121
+ "system.base.i18n_custom.field.status": string;
3122
+ "system.base.i18n_custom.field.remark": string;
3123
+ "system.base.i18n_custom.site.system": string;
3124
+ "system.base.i18n_custom.site.admin": string;
3125
+ "system.base.i18n_custom.site.app": string;
3126
+ "system.base.i18n_custom.placeholder.site": string;
3127
+ "system.base.i18n_custom.placeholder.key": string;
3128
+ "system.base.i18n_custom.placeholder.locale": string;
3129
+ "system.base.i18n_custom.placeholder.value": string;
3130
+ "system.base.i18n_custom.placeholder.remark": string;
3131
+ "system.base.i18n_custom.message.confirm_status": string;
3132
+ "system.base.i18n_custom.message.confirm_delete": string;
3047
3133
  };
3048
3134
  readonly 'ja-JP': {
3049
3135
  "system.base.config.tab.basic": string;
@@ -3541,6 +3627,7 @@ export declare const LOCALE_MESSAGES: {
3541
3627
  "system.base.login_policy.field.device_blacklist": string;
3542
3628
  "system.base.login_policy.field.device_whitelist": string;
3543
3629
  "system.base.login_policy.field.initial_password": string;
3630
+ "system.base.login_policy.field.password_strength": string;
3544
3631
  "system.base.login_policy.field.ip_blacklist": string;
3545
3632
  "system.base.login_policy.field.ip_whitelist": string;
3546
3633
  "system.base.login_policy.field.lock_duration_minutes": string;
@@ -3939,8 +4026,14 @@ export declare const LOCALE_MESSAGES: {
3939
4026
  "system.base.tenant.field.contact_phone": string;
3940
4027
  "system.base.tenant.field.name": string;
3941
4028
  "system.base.tenant.message.phone_invalid": string;
4029
+ "system.base.tenant.message.initial_credentials": string;
4030
+ "system.base.tenant.message.initial_credentials_warning": string;
3942
4031
  "system.base.tenant.message.protected_delete": string;
3943
4032
  "system.base.tenant.message.protected_status": string;
4033
+ "system.base.tenant.title.initial_credentials": string;
4034
+ "system.base.tenant.tooltip.copy_credentials": string;
4035
+ "system.base.tenant.tooltip.hide_password": string;
4036
+ "system.base.tenant.tooltip.show_password": string;
3944
4037
  "system.base.user.action.create": string;
3945
4038
  "system.base.user.action.edit": string;
3946
4039
  "system.base.user.action.reset_password": string;
@@ -4567,6 +4660,42 @@ export declare const LOCALE_MESSAGES: {
4567
4660
  "system.sse.error.auth_expired": string;
4568
4661
  "system.sse.error.connection_closed": string;
4569
4662
  "system.sse.error.connection_failed": string;
4663
+ "system.base.tenant_project.field.name": string;
4664
+ "system.base.tenant_project.field.code": string;
4665
+ "system.base.tenant_project.grant": string;
4666
+ "system.base.tenant_project.all": string;
4667
+ "system.base.tenant_project.projects": string;
4668
+ "system.base.tenant_project_grant.title": string;
4669
+ "system.base.tenant_project_grant.field.subject_type": string;
4670
+ "system.base.tenant_project_grant.field.subject": string;
4671
+ "system.base.tenant_project_grant.field.scope": string;
4672
+ "system.base.tenant_project_grant.tooltip.scope": string;
4673
+ "system.base.tenant_project_grant.field.projects": string;
4674
+ "system.base.tenant_project_grant.all_projects": string;
4675
+ "system.base.tenant_project_grant.subject_type.post": string;
4676
+ "system.base.tenant_project_grant.subject_type.role": string;
4677
+ "system.base.tenant_project_grant.subject_type.dept": string;
4678
+ "system.base.tenant_project_grant.subject_type.user": string;
4679
+ "system.base.i18n_custom.resource": string;
4680
+ "system.base.i18n_custom.action.create": string;
4681
+ "system.base.i18n_custom.action.edit": string;
4682
+ "system.base.i18n_custom.field.site": string;
4683
+ "system.base.i18n_custom.field.key": string;
4684
+ "system.base.i18n_custom.field.locale": string;
4685
+ "system.base.i18n_custom.field.default_value": string;
4686
+ "system.base.i18n_custom.field.value": string;
4687
+ "system.base.i18n_custom.field.status": string;
4688
+ "system.base.i18n_custom.field.remark": string;
4689
+ "system.base.i18n_custom.site.system": string;
4690
+ "system.base.i18n_custom.site.admin": string;
4691
+ "system.base.i18n_custom.site.app": string;
4692
+ "system.base.i18n_custom.placeholder.site": string;
4693
+ "system.base.i18n_custom.placeholder.key": string;
4694
+ "system.base.i18n_custom.placeholder.locale": string;
4695
+ "system.base.i18n_custom.placeholder.value": string;
4696
+ "system.base.i18n_custom.placeholder.remark": string;
4697
+ "system.base.i18n_custom.message.confirm_status": string;
4698
+ "system.base.i18n_custom.message.confirm_delete": string;
4570
4699
  };
4571
4700
  readonly 'zh-TW': {
4572
4701
  "system.base.config.tab.basic": string;
@@ -5064,6 +5193,7 @@ export declare const LOCALE_MESSAGES: {
5064
5193
  "system.base.login_policy.field.device_blacklist": string;
5065
5194
  "system.base.login_policy.field.device_whitelist": string;
5066
5195
  "system.base.login_policy.field.initial_password": string;
5196
+ "system.base.login_policy.field.password_strength": string;
5067
5197
  "system.base.login_policy.field.ip_blacklist": string;
5068
5198
  "system.base.login_policy.field.ip_whitelist": string;
5069
5199
  "system.base.login_policy.field.lock_duration_minutes": string;
@@ -5462,8 +5592,14 @@ export declare const LOCALE_MESSAGES: {
5462
5592
  "system.base.tenant.field.contact_phone": string;
5463
5593
  "system.base.tenant.field.name": string;
5464
5594
  "system.base.tenant.message.phone_invalid": string;
5595
+ "system.base.tenant.message.initial_credentials": string;
5596
+ "system.base.tenant.message.initial_credentials_warning": string;
5465
5597
  "system.base.tenant.message.protected_delete": string;
5466
5598
  "system.base.tenant.message.protected_status": string;
5599
+ "system.base.tenant.title.initial_credentials": string;
5600
+ "system.base.tenant.tooltip.copy_credentials": string;
5601
+ "system.base.tenant.tooltip.hide_password": string;
5602
+ "system.base.tenant.tooltip.show_password": string;
5467
5603
  "system.base.user.action.create": string;
5468
5604
  "system.base.user.action.edit": string;
5469
5605
  "system.base.user.action.reset_password": string;
@@ -6090,6 +6226,42 @@ export declare const LOCALE_MESSAGES: {
6090
6226
  "system.sse.error.auth_expired": string;
6091
6227
  "system.sse.error.connection_closed": string;
6092
6228
  "system.sse.error.connection_failed": string;
6229
+ "system.base.tenant_project.field.name": string;
6230
+ "system.base.tenant_project.field.code": string;
6231
+ "system.base.tenant_project.grant": string;
6232
+ "system.base.tenant_project.all": string;
6233
+ "system.base.tenant_project.projects": string;
6234
+ "system.base.tenant_project_grant.title": string;
6235
+ "system.base.tenant_project_grant.field.subject_type": string;
6236
+ "system.base.tenant_project_grant.field.subject": string;
6237
+ "system.base.tenant_project_grant.field.scope": string;
6238
+ "system.base.tenant_project_grant.tooltip.scope": string;
6239
+ "system.base.tenant_project_grant.field.projects": string;
6240
+ "system.base.tenant_project_grant.all_projects": string;
6241
+ "system.base.tenant_project_grant.subject_type.post": string;
6242
+ "system.base.tenant_project_grant.subject_type.role": string;
6243
+ "system.base.tenant_project_grant.subject_type.dept": string;
6244
+ "system.base.tenant_project_grant.subject_type.user": string;
6245
+ "system.base.i18n_custom.resource": string;
6246
+ "system.base.i18n_custom.action.create": string;
6247
+ "system.base.i18n_custom.action.edit": string;
6248
+ "system.base.i18n_custom.field.site": string;
6249
+ "system.base.i18n_custom.field.key": string;
6250
+ "system.base.i18n_custom.field.locale": string;
6251
+ "system.base.i18n_custom.field.default_value": string;
6252
+ "system.base.i18n_custom.field.value": string;
6253
+ "system.base.i18n_custom.field.status": string;
6254
+ "system.base.i18n_custom.field.remark": string;
6255
+ "system.base.i18n_custom.site.system": string;
6256
+ "system.base.i18n_custom.site.admin": string;
6257
+ "system.base.i18n_custom.site.app": string;
6258
+ "system.base.i18n_custom.placeholder.site": string;
6259
+ "system.base.i18n_custom.placeholder.key": string;
6260
+ "system.base.i18n_custom.placeholder.locale": string;
6261
+ "system.base.i18n_custom.placeholder.value": string;
6262
+ "system.base.i18n_custom.placeholder.remark": string;
6263
+ "system.base.i18n_custom.message.confirm_status": string;
6264
+ "system.base.i18n_custom.message.confirm_delete": string;
6093
6265
  };
6094
6266
  };
6095
6267
  export type GeneratedLocale = keyof typeof LOCALE_MESSAGES;
@@ -29,6 +29,17 @@ export interface GetConfigResponse {
29
29
  configs: ConfigItem[];
30
30
  /** AI 助手是否可用 */
31
31
  ai_enabled: boolean;
32
+ /** 全部语言的自定义国际化覆盖项 */
33
+ i18n_customs: I18nCustomItem[];
34
+ }
35
+ /** 全部语言的自定义国际化覆盖项。 */
36
+ export interface I18nCustomItem {
37
+ /** 语言区域 */
38
+ locale: string;
39
+ /** 国际化语言键 */
40
+ key: string;
41
+ /** 自定义翻译内容 */
42
+ value: string;
32
43
  }
33
44
  /** Base系统配置公共服务 */
34
45
  export interface ConfigService {