@liujitcn/kratos-admin-system 0.0.19 → 0.0.21
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.
- package/README.md +51 -50
- package/dist/package/declarations/src/api/system/base_language.d.ts +51 -0
- package/dist/package/declarations/src/api/system/base_translation.d.ts +7 -0
- package/dist/package/declarations/src/api/system/code_gen_i18n.d.ts +8 -0
- package/dist/package/declarations/src/components/DynamicTranslationCell.vue.d.ts +39 -0
- package/dist/package/declarations/src/components/DynamicTranslationEditor.vue.d.ts +23 -0
- package/dist/package/declarations/src/components/dynamicTranslation.d.ts +44 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/base_config.d.ts +5 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/base_dict.d.ts +79 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/base_language.d.ts +114 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/base_menu.d.ts +40 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/base_translation.d.ts +102 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/code_gen.d.ts +2 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/code_gen_column.d.ts +7 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/code_gen_table.d.ts +13 -0
- package/dist/package/declarations/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue.d.ts +23 -0
- package/dist/package/declarations/src/views/tool/code-gen/config.d.ts +7 -7
- package/dist/package/declarations/src/views/tool/language/index.vue.d.ts +3 -0
- package/dist/package/src/api/base/ai_message.ts +7 -12
- package/dist/package/src/api/base/sse.ts +3 -1
- package/dist/package/src/api/system/base_language.ts +137 -0
- package/dist/package/src/api/system/base_translation.ts +22 -0
- package/dist/package/src/api/system/code_gen_column.ts +17 -3
- package/dist/package/src/api/system/code_gen_i18n.ts +18 -0
- package/dist/package/src/api/system/code_gen_table.ts +12 -4
- package/dist/package/src/components/DynamicTranslationCell.vue +176 -0
- package/dist/package/src/components/DynamicTranslationEditor.vue +166 -0
- package/dist/package/src/components/dynamicTranslation.ts +86 -0
- package/dist/package/src/locales/README.md +28 -0
- package/dist/package/src/locales/en-US.json +929 -0
- package/dist/package/src/locales/es-ES.json +928 -0
- package/dist/package/src/locales/fr-FR.json +928 -0
- package/dist/package/src/locales/ja-JP.json +929 -0
- package/dist/package/src/locales/ko-KR.json +928 -0
- package/dist/package/src/locales/zh-CN.json +929 -0
- package/dist/package/src/locales/zh-TW.json +928 -0
- package/dist/package/src/module.ts +19 -1
- package/dist/package/src/rpc/system/admin/v1/base_config.ts +5 -0
- package/dist/package/src/rpc/system/admin/v1/base_dict.ts +81 -0
- package/dist/package/src/rpc/system/admin/v1/base_language.ts +135 -0
- package/dist/package/src/rpc/system/admin/v1/base_menu.ts +41 -0
- package/dist/package/src/rpc/system/admin/v1/base_translation.ts +117 -0
- package/dist/package/src/rpc/system/admin/v1/code_gen.ts +5 -1
- package/dist/package/src/rpc/system/admin/v1/code_gen_column.ts +8 -0
- package/dist/package/src/rpc/system/admin/v1/code_gen_table.ts +15 -0
- package/dist/package/src/views/ai/chat/components/AiMarkdown.vue +1 -6
- package/dist/package/src/views/ai/chat/components/ChatPanel.vue +70 -53
- package/dist/package/src/views/ai/chat/components/SessionPanel.vue +20 -9
- package/dist/package/src/views/ai/chat/components/XSender.vue +36 -23
- package/dist/package/src/views/ai/chat/index.vue +55 -39
- package/dist/package/src/views/ai/chat/message.ts +18 -17
- package/dist/package/src/views/base/api/index.vue +121 -83
- package/dist/package/src/views/base/area/index.vue +81 -31
- package/dist/package/src/views/base/config/index.vue +272 -78
- package/dist/package/src/views/base/dept/index.vue +110 -61
- package/dist/package/src/views/base/dict/index.vue +137 -58
- package/dist/package/src/views/base/dict/item.vue +147 -61
- package/dist/package/src/views/base/job/index.vue +134 -81
- package/dist/package/src/views/base/job/log.vue +21 -22
- package/dist/package/src/views/base/log/index.vue +68 -46
- package/dist/package/src/views/base/menu/index.vue +257 -156
- package/dist/package/src/views/base/migration/index.vue +49 -29
- package/dist/package/src/views/base/post/index.vue +128 -59
- package/dist/package/src/views/base/role/index.vue +145 -78
- package/dist/package/src/views/base/tenant/index.vue +132 -63
- package/dist/package/src/views/base/user/components/dept-tree.vue +2 -1
- package/dist/package/src/views/base/user/index.vue +192 -112
- package/dist/package/src/views/profile/components/base.vue +44 -27
- package/dist/package/src/views/profile/components/password.vue +43 -27
- package/dist/package/src/views/profile/components/security.vue +89 -53
- package/dist/package/src/views/profile/index.vue +10 -9
- package/dist/package/src/views/tool/api-doc/index.vue +6 -2
- package/dist/package/src/views/tool/code-gen/code-preview/index.vue +30 -14
- package/dist/package/src/views/tool/code-gen/columns/index.vue +382 -273
- package/dist/package/src/views/tool/code-gen/columns/option-copy.ts +1 -6
- package/dist/package/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue +118 -0
- package/dist/package/src/views/tool/code-gen/components/CodeGenProgressDialog.vue +65 -36
- package/dist/package/src/views/tool/code-gen/components/CodePreviewPane.vue +8 -5
- package/dist/package/src/views/tool/code-gen/config.ts +114 -77
- package/dist/package/src/views/tool/code-gen/preview/data.ts +19 -17
- package/dist/package/src/views/tool/code-gen/preview/index.vue +96 -58
- package/dist/package/src/views/tool/code-gen/proto/index.vue +110 -62
- package/dist/package/src/views/tool/code-gen/table/index.vue +197 -117
- package/dist/package/src/views/tool/language/index.vue +256 -0
- package/dist/package/src/views/tool/project-doc/index.vue +17 -15
- package/package.json +6 -2
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/** 翻译状态 */
|
|
2
|
+
export declare enum TranslationStatus {
|
|
3
|
+
TRANSLATION_STATUS_UNSPECIFIED = 0,
|
|
4
|
+
TRANSLATION_STATUS_PENDING = 1,
|
|
5
|
+
TRANSLATION_STATUS_MACHINE = 2,
|
|
6
|
+
TRANSLATION_STATUS_REVIEWED = 3
|
|
7
|
+
}
|
|
8
|
+
/** 翻译资源类型 */
|
|
9
|
+
export declare enum TranslationResourceType {
|
|
10
|
+
TRANSLATION_RESOURCE_TYPE_UNSPECIFIED = 0,
|
|
11
|
+
TRANSLATION_RESOURCE_TYPE_MENU = 1,
|
|
12
|
+
TRANSLATION_RESOURCE_TYPE_DICT = 2,
|
|
13
|
+
TRANSLATION_RESOURCE_TYPE_DICT_ITEM = 3,
|
|
14
|
+
TRANSLATION_RESOURCE_TYPE_CONFIG = 4
|
|
15
|
+
}
|
|
16
|
+
/** 系统配置翻译字段 */
|
|
17
|
+
export declare enum BaseConfigTranslationField {
|
|
18
|
+
BASE_CONFIG_TRANSLATION_FIELD_UNSPECIFIED = 0,
|
|
19
|
+
BASE_CONFIG_TRANSLATION_FIELD_NAME = 1,
|
|
20
|
+
BASE_CONFIG_TRANSLATION_FIELD_VALUE = 2
|
|
21
|
+
}
|
|
22
|
+
/** 生成翻译草稿请求 */
|
|
23
|
+
export interface GenerateTranslationDraftRequest {
|
|
24
|
+
/** 资源类型 */
|
|
25
|
+
resource_type: TranslationResourceType;
|
|
26
|
+
/** 已保存资源ID */
|
|
27
|
+
resource_id: number;
|
|
28
|
+
/** 目标语言代码 */
|
|
29
|
+
target_locale: string;
|
|
30
|
+
/** 系统配置翻译字段,配置资源必填 */
|
|
31
|
+
field: BaseConfigTranslationField;
|
|
32
|
+
}
|
|
33
|
+
/** 生成翻译草稿响应 */
|
|
34
|
+
export interface GenerateTranslationDraftResponse {
|
|
35
|
+
/** 资源类型 */
|
|
36
|
+
resource_type: TranslationResourceType;
|
|
37
|
+
/** 资源ID */
|
|
38
|
+
resource_id: number;
|
|
39
|
+
/** 语言区域 */
|
|
40
|
+
locale: string;
|
|
41
|
+
/** 机器翻译草稿 */
|
|
42
|
+
translation: string;
|
|
43
|
+
/** 翻译状态 */
|
|
44
|
+
translation_status: TranslationStatus;
|
|
45
|
+
/** 中文源文SHA-256 */
|
|
46
|
+
source_hash: string;
|
|
47
|
+
/** 机器翻译提供方 */
|
|
48
|
+
translation_provider: string;
|
|
49
|
+
/** 最近机器翻译时间 */
|
|
50
|
+
translated_at: string;
|
|
51
|
+
/** 系统配置翻译字段 */
|
|
52
|
+
field: BaseConfigTranslationField;
|
|
53
|
+
}
|
|
54
|
+
/** 系统配置单语言翻译 */
|
|
55
|
+
export interface BaseConfigTranslation {
|
|
56
|
+
/** 翻译记录ID */
|
|
57
|
+
id: number;
|
|
58
|
+
/** 系统配置ID */
|
|
59
|
+
config_id: number;
|
|
60
|
+
/** 语言区域 */
|
|
61
|
+
locale: string;
|
|
62
|
+
/** 翻译字段:name或value */
|
|
63
|
+
field: BaseConfigTranslationField;
|
|
64
|
+
/** 翻译文本 */
|
|
65
|
+
text: string;
|
|
66
|
+
/** 翻译审核状态 */
|
|
67
|
+
translation_status: TranslationStatus;
|
|
68
|
+
/** 中文源文SHA-256 */
|
|
69
|
+
source_hash: string;
|
|
70
|
+
/** 中文源文是否已变化 */
|
|
71
|
+
source_changed: boolean;
|
|
72
|
+
/** 机器翻译提供方 */
|
|
73
|
+
translation_provider: string;
|
|
74
|
+
/** 最近机器翻译时间 */
|
|
75
|
+
translated_at: string;
|
|
76
|
+
/** 审核人ID */
|
|
77
|
+
reviewed_by: number;
|
|
78
|
+
/** 审核时间 */
|
|
79
|
+
reviewed_at: string;
|
|
80
|
+
/** 创建人ID */
|
|
81
|
+
created_by: number;
|
|
82
|
+
/** 更新人ID */
|
|
83
|
+
updated_by: number;
|
|
84
|
+
/** 创建时间 */
|
|
85
|
+
created_at: string;
|
|
86
|
+
/** 更新时间 */
|
|
87
|
+
updated_at: string;
|
|
88
|
+
/** 删除时间 */
|
|
89
|
+
deleted_at: number;
|
|
90
|
+
}
|
|
91
|
+
/** 代码生成单语言国际化配置 */
|
|
92
|
+
export interface CodeGenLocaleConfig {
|
|
93
|
+
/** 业务或字段描述 */
|
|
94
|
+
comment: string;
|
|
95
|
+
/** 左树描述 */
|
|
96
|
+
left_tree_comment: string;
|
|
97
|
+
}
|
|
98
|
+
/** Admin翻译草稿服务 */
|
|
99
|
+
export interface BaseTranslationService {
|
|
100
|
+
/** 为单个已保存资源生成机器翻译草稿 */
|
|
101
|
+
GenerateTranslationDraft(request: GenerateTranslationDraftRequest): Promise<GenerateTranslationDraftResponse>;
|
|
102
|
+
}
|
|
@@ -66,6 +66,8 @@ export interface PreviewCodeGenResponse {
|
|
|
66
66
|
files: CodeGenPreviewFile[];
|
|
67
67
|
/** 本次生效输出路径 */
|
|
68
68
|
output_paths: CodeGenOutputPaths | undefined;
|
|
69
|
+
/** 正式生成前必须补齐的翻译配置 */
|
|
70
|
+
missing_translations: string[];
|
|
69
71
|
}
|
|
70
72
|
/** 启动代码生成任务条件 */
|
|
71
73
|
export interface StartCodeGenTaskRequest {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Empty } from "../../../google/protobuf/empty";
|
|
2
|
+
import type { CodeGenLocaleConfig } from "./base_translation";
|
|
2
3
|
/** 代码生成字段配置查询条件 */
|
|
3
4
|
export interface ListCodeGenColumnRequest {
|
|
4
5
|
/** 代码生成表配置ID */
|
|
@@ -77,6 +78,12 @@ export interface CodeGenColumn {
|
|
|
77
78
|
form_config: CodeGenColumnFormConfig | undefined;
|
|
78
79
|
/** 排序 */
|
|
79
80
|
sort: number;
|
|
81
|
+
/** 按语言区域索引的字段国际化配置 */
|
|
82
|
+
i18n_config: Map<string, CodeGenLocaleConfig>;
|
|
83
|
+
}
|
|
84
|
+
export interface CodeGenColumn_I18nConfigEntry {
|
|
85
|
+
key: string;
|
|
86
|
+
value: CodeGenLocaleConfig | undefined;
|
|
80
87
|
}
|
|
81
88
|
/** 代码生成字段查询条件配置 */
|
|
82
89
|
export interface CodeGenColumnQueryConfig {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Empty } from "../../../google/protobuf/empty";
|
|
2
2
|
import type { CodeGenTableStatus } from "../../common/v1/enum";
|
|
3
|
+
import type { CodeGenLocaleConfig } from "./base_translation";
|
|
3
4
|
/** 代码生成表配置分页查询条件 */
|
|
4
5
|
export interface PageCodeGenTableRequest {
|
|
5
6
|
/** 业务表名 */
|
|
@@ -65,6 +66,12 @@ export interface CodeGenTableForm {
|
|
|
65
66
|
status: CodeGenTableStatus;
|
|
66
67
|
/** 备注 */
|
|
67
68
|
remark: string;
|
|
69
|
+
/** 按语言区域索引的表级国际化配置 */
|
|
70
|
+
i18n_config: Map<string, CodeGenLocaleConfig>;
|
|
71
|
+
}
|
|
72
|
+
export interface CodeGenTableForm_I18nConfigEntry {
|
|
73
|
+
key: string;
|
|
74
|
+
value: CodeGenLocaleConfig | undefined;
|
|
68
75
|
}
|
|
69
76
|
/** 代码生成表配置创建条件 */
|
|
70
77
|
export interface CreateCodeGenTableRequest {
|
|
@@ -114,6 +121,12 @@ export interface CodeGenTable {
|
|
|
114
121
|
updated_at: string;
|
|
115
122
|
/** 是否可以还原生成结果 */
|
|
116
123
|
restore_available: boolean;
|
|
124
|
+
/** 按语言区域索引的表级国际化配置 */
|
|
125
|
+
i18n_config: Map<string, CodeGenLocaleConfig>;
|
|
126
|
+
}
|
|
127
|
+
export interface CodeGenTable_I18nConfigEntry {
|
|
128
|
+
key: string;
|
|
129
|
+
value: CodeGenLocaleConfig | undefined;
|
|
117
130
|
}
|
|
118
131
|
/** 左树右表页面配置 */
|
|
119
132
|
export interface CodeGenLeftTreeConfig {
|
package/dist/package/declarations/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CodeGenLocaleConfig } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_translation";
|
|
2
|
+
/** 代码生成多语言编辑器属性。 */
|
|
3
|
+
interface CodeGenLocaleEditorProps {
|
|
4
|
+
/** 按语言区域索引的生成配置。 */
|
|
5
|
+
modelValue: Map<string, CodeGenLocaleConfig>;
|
|
6
|
+
/** 中文业务或字段描述。 */
|
|
7
|
+
sourceComment?: string;
|
|
8
|
+
/** 是否编辑左树标题。 */
|
|
9
|
+
showLeftTreeComment?: boolean;
|
|
10
|
+
/** 中文左树标题。 */
|
|
11
|
+
sourceLeftTreeComment?: string;
|
|
12
|
+
}
|
|
13
|
+
declare const __VLS_export: import("vue").DefineComponent<CodeGenLocaleEditorProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
14
|
+
"update:modelValue": (value: Map<string, CodeGenLocaleConfig>) => any;
|
|
15
|
+
}, string, import("vue").PublicProps, Readonly<CodeGenLocaleEditorProps> & Readonly<{
|
|
16
|
+
"onUpdate:modelValue"?: ((value: Map<string, CodeGenLocaleConfig>) => any) | undefined;
|
|
17
|
+
}>, {
|
|
18
|
+
sourceComment: string;
|
|
19
|
+
showLeftTreeComment: boolean;
|
|
20
|
+
sourceLeftTreeComment: string;
|
|
21
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
22
|
+
declare const _default: typeof __VLS_export;
|
|
23
|
+
export default _default;
|
|
@@ -3,21 +3,21 @@ import type { ProFormOption } from "@liujitcn/kratos-admin-core/components/ProFo
|
|
|
3
3
|
import type { CodeGenColumnFormConfig, CodeGenColumnListConfig, CodeGenColumnOptionConfig, CodeGenColumnQueryConfig } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/code_gen_column";
|
|
4
4
|
import type { CodeGenLeftTreeConfig, CodeGenTableForm } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/code_gen_table";
|
|
5
5
|
/** 代码生成表配置页面类型选项。 */
|
|
6
|
-
export declare
|
|
6
|
+
export declare function codeGenPageTypeOptions(): ProFormOption[];
|
|
7
7
|
/** 判断页面类型是否使用树形表格配置。 */
|
|
8
8
|
export declare function isCodeGenTreePageType(pageType?: string): pageType is "tree" | "tree_lazy";
|
|
9
9
|
/** 左树数据源类型选项。 */
|
|
10
|
-
export declare
|
|
10
|
+
export declare function codeGenSourceTypeOptions(): ProFormOption[];
|
|
11
11
|
/** 查询操作符选项。 */
|
|
12
|
-
export declare
|
|
12
|
+
export declare function codeGenQueryOperatorOptions(): ProFormOption[];
|
|
13
13
|
/** 查询组件选项。 */
|
|
14
|
-
export declare
|
|
14
|
+
export declare function codeGenQueryComponentOptions(): ProFormOption[];
|
|
15
15
|
/** 列表展示组件选项。 */
|
|
16
|
-
export declare
|
|
16
|
+
export declare function codeGenListComponentOptions(): ProFormOption[];
|
|
17
17
|
/** 表单录入组件选项,保持与 ProForm 支持类型完整一致。 */
|
|
18
|
-
export declare
|
|
18
|
+
export declare function codeGenFormComponentOptions(): ProFormOption[];
|
|
19
19
|
/** 代码生成表配置校验规则。 */
|
|
20
|
-
export declare
|
|
20
|
+
export declare function codeGenTableRules(): FormRules;
|
|
21
21
|
/** 创建默认左树右表页面配置。 */
|
|
22
22
|
export declare function createDefaultCodeGenLeftTreeConfig(): CodeGenLeftTreeConfig;
|
|
23
23
|
/** 创建代码生成表配置默认表单。 */
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
declare const _default: typeof __VLS_export;
|
|
3
|
+
export default _default;
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
import service, {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
requestBaseURL
|
|
5
|
-
} from "@liujitcn/kratos-admin-core/request";
|
|
6
|
-
import type {
|
|
7
|
-
ListAiMessageRequest,
|
|
8
|
-
ListAiMessageResponse
|
|
9
|
-
} from "@liujitcn/kratos-admin-system/rpc/base/v1/ai_session";
|
|
1
|
+
import service, { getRequestAccessToken, handleAuthExpired, requestBaseURL } from "@liujitcn/kratos-admin-core/request";
|
|
2
|
+
import { getLocaleRequestHeaders, t } from "@liujitcn/kratos-admin-core";
|
|
3
|
+
import type { ListAiMessageRequest, ListAiMessageResponse } from "@liujitcn/kratos-admin-system/rpc/base/v1/ai_session";
|
|
10
4
|
import type {
|
|
11
5
|
AiMessageService,
|
|
12
6
|
DeleteAiMessageRequest,
|
|
@@ -28,7 +22,7 @@ export type AiMessageStreamOptions = {
|
|
|
28
22
|
|
|
29
23
|
/** 从 direct stream 错误响应中提取后端业务提示。 */
|
|
30
24
|
async function resolveStreamErrorMessage(response: Response): Promise<string> {
|
|
31
|
-
const fallbackMessage =
|
|
25
|
+
const fallbackMessage = t("system.ai.requestFailedWithStatus", { status: response.status });
|
|
32
26
|
const contentType = response.headers.get("Content-Type") ?? "";
|
|
33
27
|
if (contentType.includes("application/json")) {
|
|
34
28
|
try {
|
|
@@ -51,7 +45,8 @@ export async function SendAiMessageStream(request: SendAiMessageRequest, options
|
|
|
51
45
|
const accessToken = await getRequestAccessToken();
|
|
52
46
|
const headers: Record<string, string> = {
|
|
53
47
|
Accept: "text/event-stream",
|
|
54
|
-
"Content-Type": "application/json;charset=utf-8"
|
|
48
|
+
"Content-Type": "application/json;charset=utf-8",
|
|
49
|
+
...getLocaleRequestHeaders()
|
|
55
50
|
};
|
|
56
51
|
if (accessToken) headers.Authorization = accessToken;
|
|
57
52
|
|
|
@@ -65,7 +60,7 @@ export async function SendAiMessageStream(request: SendAiMessageRequest, options
|
|
|
65
60
|
// direct stream 不经过 axios 响应拦截器,需要在这里补齐登录失效处理。
|
|
66
61
|
if (response.status === 401 || response.status === 403) {
|
|
67
62
|
handleAuthExpired();
|
|
68
|
-
throw new Error("
|
|
63
|
+
throw new Error(t("core.auth.sessionExpired"));
|
|
69
64
|
}
|
|
70
65
|
if (!response.ok) {
|
|
71
66
|
throw new Error(await resolveStreamErrorMessage(response));
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EventStreamContentType, fetchEventSource, type EventSourceMessage } from "@microsoft/fetch-event-source";
|
|
2
2
|
import type { SubscribeSseRequest } from "@liujitcn/kratos-admin-system/rpc/base/v1/sse";
|
|
3
3
|
import { getRequestAccessToken, handleAuthExpired } from "@liujitcn/kratos-admin-core/request";
|
|
4
|
+
import { getLocaleRequestHeaders } from "@liujitcn/kratos-admin-core";
|
|
4
5
|
|
|
5
6
|
const SSE_URL = "/events";
|
|
6
7
|
|
|
@@ -105,7 +106,8 @@ export class SseServiceImpl {
|
|
|
105
106
|
openWhenHidden: true,
|
|
106
107
|
headers: {
|
|
107
108
|
Accept: EventStreamContentType,
|
|
108
|
-
Authorization: accessToken
|
|
109
|
+
Authorization: accessToken,
|
|
110
|
+
...getLocaleRequestHeaders()
|
|
109
111
|
},
|
|
110
112
|
async onopen(response) {
|
|
111
113
|
const contentType = response.headers.get("content-type") ?? "";
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import service from "@liujitcn/kratos-admin-core/request";
|
|
2
|
+
import { defLanguageService } from "@liujitcn/kratos-admin-core";
|
|
3
|
+
import { readonly, shallowRef } from "vue";
|
|
4
|
+
import {
|
|
5
|
+
type BaseLanguage,
|
|
6
|
+
type BaseLanguageForm,
|
|
7
|
+
type BaseLanguageService,
|
|
8
|
+
type CreateBaseLanguageRequest,
|
|
9
|
+
type DeleteBaseLanguageRequest,
|
|
10
|
+
type GetBaseLanguageRequest,
|
|
11
|
+
type OptionBaseLanguageRequest,
|
|
12
|
+
type OptionBaseLanguageResponse,
|
|
13
|
+
type PageBaseLanguageRequest,
|
|
14
|
+
type PageBaseLanguageResponse,
|
|
15
|
+
type SetBaseLanguageStatusRequest,
|
|
16
|
+
type UpdateBaseLanguageRequest
|
|
17
|
+
} from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_language";
|
|
18
|
+
import { Status } from "@liujitcn/kratos-admin-system/rpc/common/v1/enum";
|
|
19
|
+
import type { Empty } from "@liujitcn/kratos-admin-system/rpc/google/protobuf/empty";
|
|
20
|
+
|
|
21
|
+
const BASE_LANGUAGE_URL = "/v1/admin/base/language";
|
|
22
|
+
|
|
23
|
+
/** Admin语言服务。 */
|
|
24
|
+
export class BaseLanguageServiceImpl implements BaseLanguageService {
|
|
25
|
+
/** 查询语言选项。 */
|
|
26
|
+
OptionBaseLanguage(request: OptionBaseLanguageRequest = {}): Promise<OptionBaseLanguageResponse> {
|
|
27
|
+
return service<OptionBaseLanguageRequest, OptionBaseLanguageResponse>({
|
|
28
|
+
url: `${BASE_LANGUAGE_URL}/option`,
|
|
29
|
+
method: "get",
|
|
30
|
+
params: request
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** 查询语言分页列表。 */
|
|
35
|
+
PageBaseLanguage(request: PageBaseLanguageRequest): Promise<PageBaseLanguageResponse> {
|
|
36
|
+
return service<PageBaseLanguageRequest, PageBaseLanguageResponse>({
|
|
37
|
+
url: BASE_LANGUAGE_URL,
|
|
38
|
+
method: "get",
|
|
39
|
+
params: request
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** 查询语言详情。 */
|
|
44
|
+
GetBaseLanguage(request: GetBaseLanguageRequest): Promise<BaseLanguageForm> {
|
|
45
|
+
return service<GetBaseLanguageRequest, BaseLanguageForm>({
|
|
46
|
+
url: `${BASE_LANGUAGE_URL}/${request.id}`,
|
|
47
|
+
method: "get"
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** 创建语言。 */
|
|
52
|
+
CreateBaseLanguage(request: CreateBaseLanguageRequest): Promise<Empty> {
|
|
53
|
+
return service<BaseLanguageForm | undefined, Empty>({
|
|
54
|
+
url: BASE_LANGUAGE_URL,
|
|
55
|
+
method: "post",
|
|
56
|
+
data: request.base_language
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** 更新语言。 */
|
|
61
|
+
UpdateBaseLanguage(request: UpdateBaseLanguageRequest): Promise<Empty> {
|
|
62
|
+
return service<BaseLanguageForm | undefined, Empty>({
|
|
63
|
+
url: `${BASE_LANGUAGE_URL}/${request.base_language?.id ?? ""}`,
|
|
64
|
+
method: "put",
|
|
65
|
+
data: request.base_language
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** 删除语言。 */
|
|
70
|
+
DeleteBaseLanguage(request: DeleteBaseLanguageRequest): Promise<Empty> {
|
|
71
|
+
return service<DeleteBaseLanguageRequest, Empty>({
|
|
72
|
+
url: `${BASE_LANGUAGE_URL}/${request.id}`,
|
|
73
|
+
method: "delete"
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** 设置语言启用状态。 */
|
|
78
|
+
SetBaseLanguageStatus(request: SetBaseLanguageStatusRequest): Promise<Empty> {
|
|
79
|
+
return service<SetBaseLanguageStatusRequest, Empty>({
|
|
80
|
+
url: `${BASE_LANGUAGE_URL}/${request.id}/status`,
|
|
81
|
+
method: "put",
|
|
82
|
+
data: request
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export const defBaseLanguageService = new BaseLanguageServiceImpl();
|
|
88
|
+
|
|
89
|
+
const enabledBaseLanguages = shallowRef<BaseLanguage[]>([]);
|
|
90
|
+
let enabledBaseLanguagesRequest: Promise<BaseLanguage[]> | undefined;
|
|
91
|
+
|
|
92
|
+
/** 加载启用语言选项并在当前管理端会话内缓存。 */
|
|
93
|
+
export async function loadEnabledBaseLanguages(force = false): Promise<BaseLanguage[]> {
|
|
94
|
+
if (force) {
|
|
95
|
+
enabledBaseLanguagesRequest = undefined;
|
|
96
|
+
}
|
|
97
|
+
if (enabledBaseLanguagesRequest) return enabledBaseLanguagesRequest;
|
|
98
|
+
if (!force && enabledBaseLanguages.value.length) return enabledBaseLanguages.value;
|
|
99
|
+
|
|
100
|
+
enabledBaseLanguagesRequest = defLanguageService
|
|
101
|
+
.GetLanguage({})
|
|
102
|
+
.then(response => {
|
|
103
|
+
const languages = (response.languages ?? []).map(item => ({
|
|
104
|
+
id: 0,
|
|
105
|
+
language_code: item.language_code,
|
|
106
|
+
language_name: item.language_name,
|
|
107
|
+
native_name: item.native_name,
|
|
108
|
+
sort: item.sort,
|
|
109
|
+
is_primary: item.language_code === response.primary_language_code,
|
|
110
|
+
status: Status.ENABLE,
|
|
111
|
+
created_at: "",
|
|
112
|
+
updated_at: ""
|
|
113
|
+
}));
|
|
114
|
+
enabledBaseLanguages.value = languages;
|
|
115
|
+
return languages;
|
|
116
|
+
})
|
|
117
|
+
.finally(() => {
|
|
118
|
+
enabledBaseLanguagesRequest = undefined;
|
|
119
|
+
});
|
|
120
|
+
return enabledBaseLanguagesRequest;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/** 返回响应式的启用语言选项。 */
|
|
124
|
+
export function useEnabledBaseLanguages() {
|
|
125
|
+
return { languages: readonly(enabledBaseLanguages) };
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/** 返回当前缓存的启用语言选项快照。 */
|
|
129
|
+
export function getEnabledBaseLanguages(): BaseLanguage[] {
|
|
130
|
+
return enabledBaseLanguages.value;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/** 清除启用语言缓存,使下次使用时重新读取语言管理数据。 */
|
|
134
|
+
export function invalidateEnabledBaseLanguages() {
|
|
135
|
+
enabledBaseLanguages.value = [];
|
|
136
|
+
enabledBaseLanguagesRequest = undefined;
|
|
137
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import service from "@liujitcn/kratos-admin-core/request";
|
|
2
|
+
import type {
|
|
3
|
+
BaseTranslationService,
|
|
4
|
+
GenerateTranslationDraftRequest,
|
|
5
|
+
GenerateTranslationDraftResponse
|
|
6
|
+
} from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_translation";
|
|
7
|
+
|
|
8
|
+
const BASE_TRANSLATION_URL = "/v1/admin/base/translation";
|
|
9
|
+
|
|
10
|
+
/** BaseTranslationServiceImpl Admin 动态翻译草稿服务。 */
|
|
11
|
+
export class BaseTranslationServiceImpl implements BaseTranslationService {
|
|
12
|
+
/** GenerateTranslationDraft 为已保存资源生成机器翻译草稿。 */
|
|
13
|
+
GenerateTranslationDraft(request: GenerateTranslationDraftRequest): Promise<GenerateTranslationDraftResponse> {
|
|
14
|
+
return service<GenerateTranslationDraftRequest, GenerateTranslationDraftResponse>({
|
|
15
|
+
url: `${BASE_TRANSLATION_URL}/draft`,
|
|
16
|
+
method: "post",
|
|
17
|
+
data: request
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const defBaseTranslationService = new BaseTranslationServiceImpl();
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
type SaveCodeGenColumnRequest
|
|
9
9
|
} from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/code_gen_column";
|
|
10
10
|
import type { Empty } from "@liujitcn/kratos-admin-system/rpc/google/protobuf/empty";
|
|
11
|
+
import { normalizeCodeGenLocaleConfigMap, serializeCodeGenLocaleConfigMap } from "./code_gen_i18n";
|
|
11
12
|
|
|
12
13
|
const CODE_GEN_DATABASE_TABLE_URL = "/v1/admin/code-gen/database/table";
|
|
13
14
|
const CODE_GEN_TABLE_URL = "/v1/admin/code-gen/table";
|
|
@@ -23,11 +24,18 @@ export class CodeGenColumnServiceImpl implements CodeGenColumnService {
|
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
/** 查询代码生成字段配置。 */
|
|
26
|
-
ListCodeGenColumn(request: ListCodeGenColumnRequest): Promise<ListCodeGenColumnResponse> {
|
|
27
|
-
|
|
27
|
+
async ListCodeGenColumn(request: ListCodeGenColumnRequest): Promise<ListCodeGenColumnResponse> {
|
|
28
|
+
const response = await service<ListCodeGenColumnRequest, ListCodeGenColumnResponse>({
|
|
28
29
|
url: `${CODE_GEN_TABLE_URL}/${request.table_id}/column`,
|
|
29
30
|
method: "get"
|
|
30
31
|
});
|
|
32
|
+
return {
|
|
33
|
+
...response,
|
|
34
|
+
code_gen_columns: (response.code_gen_columns ?? []).map(column => ({
|
|
35
|
+
...column,
|
|
36
|
+
i18n_config: normalizeCodeGenLocaleConfigMap(column.i18n_config)
|
|
37
|
+
}))
|
|
38
|
+
};
|
|
31
39
|
}
|
|
32
40
|
|
|
33
41
|
/** 保存代码生成字段配置。 */
|
|
@@ -35,7 +43,13 @@ export class CodeGenColumnServiceImpl implements CodeGenColumnService {
|
|
|
35
43
|
return service<SaveCodeGenColumnRequest, Empty>({
|
|
36
44
|
url: `${CODE_GEN_TABLE_URL}/${request.table_id}/column`,
|
|
37
45
|
method: "put",
|
|
38
|
-
data:
|
|
46
|
+
data: {
|
|
47
|
+
...request,
|
|
48
|
+
code_gen_columns: request.code_gen_columns.map(column => ({
|
|
49
|
+
...column,
|
|
50
|
+
i18n_config: serializeCodeGenLocaleConfigMap(column.i18n_config)
|
|
51
|
+
}))
|
|
52
|
+
}
|
|
39
53
|
});
|
|
40
54
|
}
|
|
41
55
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CodeGenLocaleConfig } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_translation";
|
|
2
|
+
|
|
3
|
+
/** 代码生成国际化配置的 JSON 兼容形态。 */
|
|
4
|
+
type CodeGenLocaleConfigRecord = Record<string, CodeGenLocaleConfig>;
|
|
5
|
+
|
|
6
|
+
/** 将 REST 响应中的 JSON 对象规范为生成 RPC 声明使用的 Map。 */
|
|
7
|
+
export function normalizeCodeGenLocaleConfigMap(value: unknown): Map<string, CodeGenLocaleConfig> {
|
|
8
|
+
if (value instanceof Map) return new Map(value);
|
|
9
|
+
if (!value || typeof value !== "object") return new Map();
|
|
10
|
+
return new Map(Object.entries(value as CodeGenLocaleConfigRecord));
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** 将代码生成国际化 Map 转为后端可反序列化的 JSON 对象。 */
|
|
14
|
+
export function serializeCodeGenLocaleConfigMap(value: unknown): CodeGenLocaleConfigRecord {
|
|
15
|
+
if (value instanceof Map) return Object.fromEntries(value);
|
|
16
|
+
if (!value || typeof value !== "object") return {};
|
|
17
|
+
return value as CodeGenLocaleConfigRecord;
|
|
18
|
+
}
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
type UpdateCodeGenTableRequest
|
|
13
13
|
} from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/code_gen_table";
|
|
14
14
|
import type { Empty } from "@liujitcn/kratos-admin-system/rpc/google/protobuf/empty";
|
|
15
|
+
import { normalizeCodeGenLocaleConfigMap, serializeCodeGenLocaleConfigMap } from "./code_gen_i18n";
|
|
15
16
|
|
|
16
17
|
const CODE_GEN_TABLE_URL = "/v1/admin/code-gen/table";
|
|
17
18
|
const CODE_GEN_DATABASE_TABLE_URL = "/v1/admin/code-gen/database/table";
|
|
@@ -37,11 +38,12 @@ export class CodeGenTableServiceImpl implements CodeGenTableService {
|
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
/** 查询代码生成表配置。 */
|
|
40
|
-
GetCodeGenTable(request: GetCodeGenTableRequest): Promise<CodeGenTableForm> {
|
|
41
|
-
|
|
41
|
+
async GetCodeGenTable(request: GetCodeGenTableRequest): Promise<CodeGenTableForm> {
|
|
42
|
+
const response = await service<GetCodeGenTableRequest, CodeGenTableForm>({
|
|
42
43
|
url: `${CODE_GEN_TABLE_URL}/${request.id}`,
|
|
43
44
|
method: "get"
|
|
44
45
|
});
|
|
46
|
+
return { ...response, i18n_config: normalizeCodeGenLocaleConfigMap(response.i18n_config) };
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
/** 创建代码生成表配置。 */
|
|
@@ -49,7 +51,7 @@ export class CodeGenTableServiceImpl implements CodeGenTableService {
|
|
|
49
51
|
return service<CodeGenTableForm | undefined, Empty>({
|
|
50
52
|
url: CODE_GEN_TABLE_URL,
|
|
51
53
|
method: "post",
|
|
52
|
-
data: request.code_gen_table
|
|
54
|
+
data: serializeCodeGenTableForm(request.code_gen_table)
|
|
53
55
|
});
|
|
54
56
|
}
|
|
55
57
|
|
|
@@ -58,7 +60,7 @@ export class CodeGenTableServiceImpl implements CodeGenTableService {
|
|
|
58
60
|
return service<CodeGenTableForm | undefined, Empty>({
|
|
59
61
|
url: `${CODE_GEN_TABLE_URL}/${request.id}`,
|
|
60
62
|
method: "put",
|
|
61
|
-
data: request.code_gen_table
|
|
63
|
+
data: serializeCodeGenTableForm(request.code_gen_table)
|
|
62
64
|
});
|
|
63
65
|
}
|
|
64
66
|
|
|
@@ -72,3 +74,9 @@ export class CodeGenTableServiceImpl implements CodeGenTableService {
|
|
|
72
74
|
}
|
|
73
75
|
|
|
74
76
|
export const defCodeGenTableService = new CodeGenTableServiceImpl();
|
|
77
|
+
|
|
78
|
+
/** 将表配置中的 Map 转为 REST JSON 对象。 */
|
|
79
|
+
function serializeCodeGenTableForm(value?: CodeGenTableForm) {
|
|
80
|
+
if (!value) return value;
|
|
81
|
+
return { ...value, i18n_config: serializeCodeGenLocaleConfigMap(value.i18n_config) };
|
|
82
|
+
}
|