@liujitcn/kratos-admin-system 0.0.21 → 0.0.23
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/dist/package/declarations/src/api/system/base_language.d.ts +5 -4
- package/dist/package/declarations/src/api/system/base_translation.d.ts +7 -4
- package/dist/package/declarations/src/api/system/ops_monitoring.d.ts +19 -0
- package/dist/package/declarations/src/api/system/ops_monitoring_sse.d.ts +12 -0
- package/dist/package/declarations/src/components/DynamicTranslationCell.vue.d.ts +9 -32
- package/dist/package/declarations/src/components/DynamicTranslationEditor.vue.d.ts +3 -6
- package/dist/package/declarations/src/components/dynamicTranslation.d.ts +11 -17
- package/dist/package/declarations/src/locales/generated.d.ts +6536 -0
- package/dist/package/declarations/src/rpc/base/v1/ai_session.d.ts +12 -2
- package/dist/package/declarations/src/rpc/base/v1/ai_tool.d.ts +9 -1
- package/dist/package/declarations/src/rpc/base/v1/config.d.ts +35 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/auth.d.ts +1 -1
- package/dist/package/declarations/src/rpc/system/admin/v1/base_config.d.ts +23 -7
- package/dist/package/declarations/src/rpc/system/admin/v1/base_dict.d.ts +7 -77
- package/dist/package/declarations/src/rpc/system/admin/v1/base_job.d.ts +9 -1
- package/dist/package/declarations/src/rpc/system/admin/v1/base_language.d.ts +7 -2
- package/dist/package/declarations/src/rpc/system/admin/v1/base_menu.d.ts +5 -40
- package/dist/package/declarations/src/rpc/system/admin/v1/base_migration.d.ts +6 -6
- package/dist/package/declarations/src/rpc/system/admin/v1/base_role.d.ts +13 -1
- package/dist/package/declarations/src/rpc/system/admin/v1/base_translation.d.ts +54 -81
- package/dist/package/declarations/src/rpc/system/admin/v1/base_user.d.ts +11 -1
- package/dist/package/declarations/src/rpc/system/admin/v1/code_gen.d.ts +11 -11
- package/dist/package/declarations/src/rpc/system/admin/v1/code_gen_table.d.ts +11 -1
- package/dist/package/declarations/src/rpc/system/admin/v1/common.d.ts +13 -0
- package/dist/package/declarations/src/rpc/system/admin/v1/ops_monitoring.d.ts +222 -0
- package/dist/package/declarations/src/views/tool/ops-monitoring/index.vue.d.ts +3 -0
- package/dist/package/src/api/base/ai_message.ts +2 -2
- package/dist/package/src/api/system/base_language.ts +13 -15
- package/dist/package/src/api/system/base_translation.ts +17 -6
- package/dist/package/src/api/system/ops_monitoring.ts +88 -0
- package/dist/package/src/api/system/ops_monitoring_sse.ts +49 -0
- package/dist/package/src/components/DynamicTranslationCell.vue +199 -126
- package/dist/package/src/components/DynamicTranslationEditor.vue +109 -78
- package/dist/package/src/components/dynamicTranslation.ts +11 -31
- package/dist/package/src/locales/README.md +7 -5
- package/dist/package/src/locales/en-US.json +876 -872
- package/dist/package/src/locales/es-ES.json +900 -895
- package/dist/package/src/locales/fr-FR.json +896 -891
- package/dist/package/src/locales/generated.ts +22 -0
- package/dist/package/src/locales/ja-JP.json +876 -872
- package/dist/package/src/locales/ko-KR.json +881 -876
- package/dist/package/src/locales/zh-CN.json +876 -872
- package/dist/package/src/locales/zh-TW.json +876 -871
- package/dist/package/src/module.ts +3 -17
- package/dist/package/src/rpc/base/v1/ai_session.ts +13 -2
- package/dist/package/src/rpc/base/v1/ai_tool.ts +10 -1
- package/dist/package/src/rpc/base/v1/config.ts +47 -0
- package/dist/package/src/rpc/system/admin/v1/auth.ts +1 -1
- package/dist/package/src/rpc/system/admin/v1/base_config.ts +24 -7
- package/dist/package/src/rpc/system/admin/v1/base_dict.ts +7 -79
- package/dist/package/src/rpc/system/admin/v1/base_job.ts +10 -1
- package/dist/package/src/rpc/system/admin/v1/base_language.ts +8 -2
- package/dist/package/src/rpc/system/admin/v1/base_menu.ts +5 -41
- package/dist/package/src/rpc/system/admin/v1/base_migration.ts +8 -8
- package/dist/package/src/rpc/system/admin/v1/base_role.ts +14 -1
- package/dist/package/src/rpc/system/admin/v1/base_translation.ts +54 -81
- package/dist/package/src/rpc/system/admin/v1/base_user.ts +12 -1
- package/dist/package/src/rpc/system/admin/v1/code_gen.ts +11 -11
- package/dist/package/src/rpc/system/admin/v1/code_gen_table.ts +12 -1
- package/dist/package/src/rpc/system/admin/v1/common.ts +21 -0
- package/dist/package/src/rpc/system/admin/v1/ops_monitoring.ts +255 -0
- package/dist/package/src/views/ai/chat/components/ChatPanel.vue +36 -36
- package/dist/package/src/views/ai/chat/components/SessionPanel.vue +6 -6
- package/dist/package/src/views/ai/chat/components/XSender.vue +20 -20
- package/dist/package/src/views/ai/chat/index.vue +33 -32
- package/dist/package/src/views/ai/chat/message.ts +16 -15
- package/dist/package/src/views/base/api/index.vue +55 -56
- package/dist/package/src/views/base/area/index.vue +18 -19
- package/dist/package/src/views/base/config/index.vue +143 -133
- package/dist/package/src/views/base/dept/index.vue +42 -43
- package/dist/package/src/views/base/dict/index.vue +49 -45
- package/dist/package/src/views/base/dict/item.vue +54 -49
- package/dist/package/src/views/base/job/index.vue +51 -52
- package/dist/package/src/views/base/job/log.vue +18 -18
- package/dist/package/src/views/{tool → base}/language/index.vue +51 -47
- package/dist/package/src/views/base/log/index.vue +40 -40
- package/dist/package/src/views/base/menu/index.vue +220 -177
- package/dist/package/src/views/base/migration/index.vue +24 -24
- package/dist/package/src/views/base/post/index.vue +42 -43
- package/dist/package/src/views/base/role/index.vue +54 -55
- package/dist/package/src/views/base/tenant/index.vue +42 -43
- package/dist/package/src/views/base/user/components/dept-tree.vue +1 -1
- package/dist/package/src/views/base/user/index.vue +69 -71
- package/dist/package/src/views/profile/components/base.vue +9 -9
- package/dist/package/src/views/profile/components/password.vue +19 -20
- package/dist/package/src/views/profile/components/security.vue +20 -20
- package/dist/package/src/views/profile/index.vue +3 -3
- package/dist/package/src/views/tool/api-doc/index.vue +1 -1
- package/dist/package/src/views/tool/code-gen/code-preview/index.vue +13 -13
- package/dist/package/src/views/tool/code-gen/columns/index.vue +89 -89
- package/dist/package/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue +5 -5
- package/dist/package/src/views/tool/code-gen/components/CodeGenProgressDialog.vue +21 -21
- package/dist/package/src/views/tool/code-gen/components/CodePreviewPane.vue +5 -5
- package/dist/package/src/views/tool/code-gen/config.ts +60 -60
- package/dist/package/src/views/tool/code-gen/preview/data.ts +2 -2
- package/dist/package/src/views/tool/code-gen/preview/index.vue +30 -31
- package/dist/package/src/views/tool/code-gen/proto/index.vue +43 -43
- package/dist/package/src/views/tool/code-gen/table/index.vue +95 -95
- package/dist/package/src/views/tool/ops-monitoring/index.vue +1175 -0
- package/dist/package/src/views/tool/project-doc/index.vue +7 -7
- package/package.json +2 -2
- package/dist/package/declarations/src/rpc/base/v1/enum.d.ts +0 -43
- package/dist/package/declarations/src/rpc/system/common/v1/enum.d.ts +0 -67
- package/dist/package/src/rpc/base/v1/enum.ts +0 -54
- package/dist/package/src/rpc/system/common/v1/enum.ts +0 -80
- /package/dist/package/declarations/src/views/{tool → base}/language/index.vue.d.ts +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<ProDialog
|
|
3
3
|
:model-value="modelValue"
|
|
4
|
-
:title="t('system.
|
|
4
|
+
:title="t('system.code.gen.progress.title')"
|
|
5
5
|
width="min(1080px, 94vw)"
|
|
6
6
|
top="4vh"
|
|
7
7
|
:close-on-click-modal="false"
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<div>
|
|
15
15
|
<strong>{{ task.message }}</strong>
|
|
16
16
|
<span v-if="task.current_table_name">
|
|
17
|
-
{{ t("system.
|
|
17
|
+
{{ t("system.code.gen.progress.value.current", { table: task.current_table_name }) }}
|
|
18
18
|
</span>
|
|
19
19
|
</div>
|
|
20
20
|
<el-tag :type="statusMeta(task.status).type" effect="plain">{{ statusMeta(task.status).label }}</el-tag>
|
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
/>
|
|
27
27
|
<div class="task-meta">
|
|
28
28
|
<span>{{
|
|
29
|
-
t("system.
|
|
29
|
+
t("system.code.gen.progress.value.steps", { completed: task.completed_steps, total: task.total_steps })
|
|
30
30
|
}}</span>
|
|
31
|
-
<span>{{ t("system.
|
|
31
|
+
<span>{{ t("system.code.gen.progress.value.created_at", { time: formatTime(task.created_at) }) }}</span>
|
|
32
32
|
<span v-if="task.finished_at">{{
|
|
33
|
-
t("system.
|
|
33
|
+
t("system.code.gen.progress.value.finished_at", { time: formatTime(task.finished_at) })
|
|
34
34
|
}}</span>
|
|
35
35
|
</div>
|
|
36
36
|
|
|
@@ -47,17 +47,17 @@
|
|
|
47
47
|
</template>
|
|
48
48
|
<div v-if="table.message" class="table-message">
|
|
49
49
|
<span>{{ table.message }}</span>
|
|
50
|
-
<el-tooltip :content="t('system.
|
|
50
|
+
<el-tooltip :content="t('system.code.gen.progress.action.copy_error')" placement="top">
|
|
51
51
|
<el-button
|
|
52
52
|
:icon="CopyDocument"
|
|
53
53
|
link
|
|
54
|
-
:aria-label="t('system.
|
|
54
|
+
:aria-label="t('system.code.gen.progress.action.copy_error')"
|
|
55
55
|
@click.stop="copyMessage(table.message)"
|
|
56
56
|
/>
|
|
57
57
|
</el-tooltip>
|
|
58
58
|
</div>
|
|
59
59
|
<el-table :data="table.steps" row-key="id" size="small" border>
|
|
60
|
-
<el-table-column :label="t('system.
|
|
60
|
+
<el-table-column :label="t('system.code.gen.table.field.status')" width="86" align="center">
|
|
61
61
|
<template #default="{ row }">
|
|
62
62
|
<el-icon :class="{ 'is-loading': row.status === CodeGenTaskStepStatus.CODE_GEN_TASK_STEP_STATUS_RUNNING }">
|
|
63
63
|
<Loading v-if="row.status === CodeGenTaskStepStatus.CODE_GEN_TASK_STEP_STATUS_RUNNING" />
|
|
@@ -68,20 +68,20 @@
|
|
|
68
68
|
</el-icon>
|
|
69
69
|
</template>
|
|
70
70
|
</el-table-column>
|
|
71
|
-
<el-table-column prop="label" :label="t('system.
|
|
71
|
+
<el-table-column prop="label" :label="t('system.code.gen.progress.field.step')" min-width="130" />
|
|
72
72
|
<el-table-column
|
|
73
73
|
prop="path"
|
|
74
|
-
:label="t('system.
|
|
74
|
+
:label="t('system.code.gen.preview.field.path')"
|
|
75
75
|
min-width="260"
|
|
76
76
|
show-overflow-tooltip
|
|
77
77
|
/>
|
|
78
78
|
<el-table-column
|
|
79
79
|
prop="message"
|
|
80
|
-
:label="t('system.
|
|
80
|
+
:label="t('system.code.gen.progress.field.result')"
|
|
81
81
|
min-width="180"
|
|
82
82
|
show-overflow-tooltip
|
|
83
83
|
/>
|
|
84
|
-
<el-table-column :label="t('system.
|
|
84
|
+
<el-table-column :label="t('system.code.gen.progress.field.output')" width="90" align="center">
|
|
85
85
|
<template #default="{ row }">
|
|
86
86
|
<el-button v-if="row.output" :icon="Document" link @click="showOutput(row.label, row.output)" />
|
|
87
87
|
</template>
|
|
@@ -93,11 +93,11 @@
|
|
|
93
93
|
<el-result
|
|
94
94
|
v-else-if="errorMessage"
|
|
95
95
|
icon="error"
|
|
96
|
-
:title="t('system.
|
|
96
|
+
:title="t('system.code.gen.progress.message.unavailable_title')"
|
|
97
97
|
:sub-title="errorMessage"
|
|
98
98
|
>
|
|
99
99
|
<template #extra>
|
|
100
|
-
<el-button type="primary" @click="startTracking">{{ t("system.
|
|
100
|
+
<el-button type="primary" @click="startTracking">{{ t("system.code.gen.progress.action.reload") }}</el-button>
|
|
101
101
|
</template>
|
|
102
102
|
</el-result>
|
|
103
103
|
</div>
|
|
@@ -192,7 +192,7 @@ function applyTask(latest: CodeGenTask) {
|
|
|
192
192
|
function markUnavailable() {
|
|
193
193
|
stopTracking();
|
|
194
194
|
task.value = undefined;
|
|
195
|
-
errorMessage.value = t("system.
|
|
195
|
+
errorMessage.value = t("system.code.gen.progress.message.unavailable");
|
|
196
196
|
emit("unavailable");
|
|
197
197
|
}
|
|
198
198
|
|
|
@@ -207,12 +207,12 @@ function stopTracking() {
|
|
|
207
207
|
/** 返回状态标签配置。 */
|
|
208
208
|
function statusMeta(status: CodeGenTaskStatus): StatusMeta {
|
|
209
209
|
if (status === CodeGenTaskStatus.CODE_GEN_TASK_STATUS_RUNNING)
|
|
210
|
-
return { label: t("system.
|
|
210
|
+
return { label: t("system.code.gen.progress.status.running"), type: "warning" };
|
|
211
211
|
if (status === CodeGenTaskStatus.CODE_GEN_TASK_STATUS_SUCCEEDED)
|
|
212
|
-
return { label: t("system.
|
|
212
|
+
return { label: t("system.code.gen.progress.status.succeeded"), type: "success" };
|
|
213
213
|
if (status === CodeGenTaskStatus.CODE_GEN_TASK_STATUS_FAILED)
|
|
214
|
-
return { label: t("system.
|
|
215
|
-
return { label: t("system.
|
|
214
|
+
return { label: t("system.code.gen.progress.status.failed"), type: "danger" };
|
|
215
|
+
return { label: t("system.code.gen.progress.status.pending"), type: "info" };
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
/** 返回进度条状态。 */
|
|
@@ -251,9 +251,9 @@ function showOutput(title: string, output: string) {
|
|
|
251
251
|
async function copyMessage(message: string) {
|
|
252
252
|
try {
|
|
253
253
|
await navigator.clipboard.writeText(message);
|
|
254
|
-
ElMessage.success(t("system.
|
|
254
|
+
ElMessage.success(t("system.code.gen.progress.message.copied"));
|
|
255
255
|
} catch {
|
|
256
|
-
ElMessage.error(t("system.
|
|
256
|
+
ElMessage.error(t("system.code.gen.progress.message.copy_failed"));
|
|
257
257
|
}
|
|
258
258
|
}
|
|
259
259
|
|
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
<pre class="code-preview">{{ row.content || row.message }}</pre>
|
|
6
6
|
</template>
|
|
7
7
|
</el-table-column>
|
|
8
|
-
<el-table-column prop="path" :label="t('system.
|
|
9
|
-
<el-table-column prop="action" :label="t('system.
|
|
10
|
-
<el-table-column :label="t('system.
|
|
8
|
+
<el-table-column prop="path" :label="t('system.code.gen.preview.field.path')" min-width="320" show-overflow-tooltip />
|
|
9
|
+
<el-table-column prop="action" :label="t('system.code.gen.preview.field.action')" width="100" />
|
|
10
|
+
<el-table-column :label="t('system.code.gen.table.field.status')" width="100" align="center">
|
|
11
11
|
<template #default="{ row }">
|
|
12
12
|
<el-tag :type="row.exists ? 'info' : 'success'" effect="plain">
|
|
13
|
-
{{ t(row.exists ? "system.
|
|
13
|
+
{{ t(row.exists ? "system.code.gen.preview.status.exists" : "system.code.gen.preview.status.pending_create") }}
|
|
14
14
|
</el-tag>
|
|
15
15
|
</template>
|
|
16
16
|
</el-table-column>
|
|
17
|
-
<el-table-column prop="message" :label="t('system.
|
|
17
|
+
<el-table-column prop="message" :label="t('system.code.gen.preview.field.message')" min-width="220" show-overflow-tooltip />
|
|
18
18
|
</el-table>
|
|
19
19
|
</template>
|
|
20
20
|
|
|
@@ -8,15 +8,15 @@ import type {
|
|
|
8
8
|
CodeGenColumnQueryConfig
|
|
9
9
|
} from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/code_gen_column";
|
|
10
10
|
import type { CodeGenLeftTreeConfig, CodeGenTableForm } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/code_gen_table";
|
|
11
|
-
import { CodeGenTableStatus } from "@liujitcn/kratos-admin-system/rpc/system/
|
|
11
|
+
import { CodeGenTableStatus } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/code_gen_table";
|
|
12
12
|
|
|
13
13
|
/** 代码生成表配置页面类型选项。 */
|
|
14
14
|
export function codeGenPageTypeOptions(): ProFormOption[] {
|
|
15
15
|
return [
|
|
16
|
-
{ label: t("system.
|
|
17
|
-
{ label: t("system.
|
|
18
|
-
{ label: t("system.
|
|
19
|
-
{ label: t("system.
|
|
16
|
+
{ label: t("system.code.gen.page_type.normal"), value: "normal" },
|
|
17
|
+
{ label: t("system.code.gen.page_type.tree"), value: "tree" },
|
|
18
|
+
{ label: t("system.code.gen.page_type.tree_lazy"), value: "tree_lazy" },
|
|
19
|
+
{ label: t("system.code.gen.page_type.left_tree"), value: "left_tree" }
|
|
20
20
|
];
|
|
21
21
|
}
|
|
22
22
|
|
|
@@ -28,70 +28,70 @@ export function isCodeGenTreePageType(pageType?: string) {
|
|
|
28
28
|
/** 左树数据源类型选项。 */
|
|
29
29
|
export function codeGenSourceTypeOptions(): ProFormOption[] {
|
|
30
30
|
return [
|
|
31
|
-
{ label: t("system.
|
|
32
|
-
{ label: t("system.
|
|
33
|
-
{ label: t("system.
|
|
31
|
+
{ label: t("system.code.gen.source.static"), value: "static" },
|
|
32
|
+
{ label: t("system.code.gen.source.dict"), value: "dict" },
|
|
33
|
+
{ label: t("system.code.gen.source.table"), value: "table" }
|
|
34
34
|
];
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
/** 查询操作符选项。 */
|
|
38
38
|
export function codeGenQueryOperatorOptions(): ProFormOption[] {
|
|
39
39
|
return [
|
|
40
|
-
{ label: t("system.
|
|
41
|
-
{ label: t("system.
|
|
42
|
-
{ label: t("system.
|
|
40
|
+
{ label: t("system.code.gen.operator.eq"), value: "eq" },
|
|
41
|
+
{ label: t("system.code.gen.operator.like"), value: "like" },
|
|
42
|
+
{ label: t("system.code.gen.operator.between"), value: "between" }
|
|
43
43
|
];
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
/** 查询组件选项。 */
|
|
47
47
|
export function codeGenQueryComponentOptions(): ProFormOption[] {
|
|
48
48
|
return [
|
|
49
|
-
{ label: t("system.
|
|
50
|
-
{ label: t("system.
|
|
51
|
-
{ label: t("system.
|
|
52
|
-
{ label: t("system.
|
|
53
|
-
{ label: t("system.
|
|
49
|
+
{ label: t("system.code.gen.component.input"), value: "input" },
|
|
50
|
+
{ label: t("system.code.gen.component.input_number"), value: "input-number" },
|
|
51
|
+
{ label: t("system.code.gen.component.select"), value: "select" },
|
|
52
|
+
{ label: t("system.code.gen.component.tree_select"), value: "tree-select" },
|
|
53
|
+
{ label: t("system.code.gen.component.date_picker"), value: "date-picker" }
|
|
54
54
|
];
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
/** 列表展示组件选项。 */
|
|
58
58
|
export function codeGenListComponentOptions(): ProFormOption[] {
|
|
59
59
|
return [
|
|
60
|
-
{ label: t("system.
|
|
61
|
-
{ label: t("system.
|
|
62
|
-
{ label: t("system.
|
|
63
|
-
{ label: t("system.
|
|
64
|
-
{ label: t("system.
|
|
65
|
-
{ label: t("system.
|
|
66
|
-
{ label: t("system.
|
|
60
|
+
{ label: t("system.code.gen.component.text"), value: "text" },
|
|
61
|
+
{ label: t("system.code.gen.component.switch"), value: "switch" },
|
|
62
|
+
{ label: t("system.code.gen.component.select_short"), value: "select" },
|
|
63
|
+
{ label: t("system.code.gen.component.tree"), value: "tree-select" },
|
|
64
|
+
{ label: t("system.code.gen.component.image"), value: "image" },
|
|
65
|
+
{ label: t("system.code.gen.component.money"), value: "money" },
|
|
66
|
+
{ label: t("system.code.gen.component.date"), value: "date" }
|
|
67
67
|
];
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
/** ProForm 全量组件类型对应的中文名称。 */
|
|
71
71
|
const codeGenFormComponentLabelKeys: Record<ProFormComponentType, string> = {
|
|
72
|
-
input: "system.
|
|
73
|
-
password: "system.
|
|
74
|
-
textarea: "system.
|
|
75
|
-
"input-number": "system.
|
|
76
|
-
segmented: "system.
|
|
77
|
-
switch: "system.
|
|
78
|
-
checkbox: "system.
|
|
79
|
-
select: "system.
|
|
80
|
-
dict: "system.
|
|
81
|
-
"radio-group": "system.
|
|
82
|
-
"checkbox-group": "system.
|
|
83
|
-
"tree-select": "system.
|
|
84
|
-
"date-picker": "system.
|
|
85
|
-
"cron-expression": "system.
|
|
86
|
-
transfer: "system.
|
|
87
|
-
"image-upload": "system.
|
|
88
|
-
"images-upload": "system.
|
|
89
|
-
"file-upload": "system.
|
|
90
|
-
"files-upload": "system.
|
|
91
|
-
"rich-text": "system.
|
|
92
|
-
"dynamic-list": "system.
|
|
93
|
-
"kv-list": "system.
|
|
94
|
-
slot: "system.
|
|
72
|
+
input: "system.code.gen.component.input",
|
|
73
|
+
password: "system.code.gen.component.password",
|
|
74
|
+
textarea: "system.code.gen.component.textarea",
|
|
75
|
+
"input-number": "system.code.gen.component.input_number",
|
|
76
|
+
segmented: "system.code.gen.component.segmented",
|
|
77
|
+
switch: "system.code.gen.component.switch",
|
|
78
|
+
checkbox: "system.code.gen.component.checkbox",
|
|
79
|
+
select: "system.code.gen.component.select",
|
|
80
|
+
dict: "system.code.gen.component.dict",
|
|
81
|
+
"radio-group": "system.code.gen.component.radio_group",
|
|
82
|
+
"checkbox-group": "system.code.gen.component.checkbox_group",
|
|
83
|
+
"tree-select": "system.code.gen.component.tree_select",
|
|
84
|
+
"date-picker": "system.code.gen.component.date_picker",
|
|
85
|
+
"cron-expression": "system.code.gen.component.cron",
|
|
86
|
+
transfer: "system.code.gen.component.transfer",
|
|
87
|
+
"image-upload": "system.code.gen.component.image_upload",
|
|
88
|
+
"images-upload": "system.code.gen.component.images_upload",
|
|
89
|
+
"file-upload": "system.code.gen.component.file_upload",
|
|
90
|
+
"files-upload": "system.code.gen.component.files_upload",
|
|
91
|
+
"rich-text": "system.code.gen.component.rich_text",
|
|
92
|
+
"dynamic-list": "system.code.gen.component.dynamic_list",
|
|
93
|
+
"kv-list": "system.code.gen.component.kv_list",
|
|
94
|
+
slot: "system.code.gen.component.slot"
|
|
95
95
|
};
|
|
96
96
|
|
|
97
97
|
/** 表单录入组件选项,保持与 ProForm 支持类型完整一致。 */
|
|
@@ -105,40 +105,40 @@ export function codeGenFormComponentOptions(): ProFormOption[] {
|
|
|
105
105
|
/** 代码生成表配置校验规则。 */
|
|
106
106
|
export function codeGenTableRules(): FormRules {
|
|
107
107
|
return {
|
|
108
|
-
name: [{ required: true, max: 128, message: t("system.
|
|
108
|
+
name: [{ required: true, max: 128, message: t("system.code.gen.validation.table_required"), trigger: "change" }],
|
|
109
109
|
business_module: [
|
|
110
110
|
{
|
|
111
111
|
required: true,
|
|
112
112
|
max: 64,
|
|
113
113
|
pattern: /^[a-z][a-z0-9_]*$/,
|
|
114
|
-
message: t("system.
|
|
114
|
+
message: t("system.code.gen.validation.module_required"),
|
|
115
115
|
trigger: "change"
|
|
116
116
|
}
|
|
117
117
|
],
|
|
118
|
-
comment: [{ max: 128, message: t("system.
|
|
118
|
+
comment: [{ max: 128, message: t("system.code.gen.validation.comment_length"), trigger: "blur" }],
|
|
119
119
|
parent_menu_id: [
|
|
120
|
-
{ required: true, type: "number", min: 1, message: t("system.
|
|
120
|
+
{ required: true, type: "number", min: 1, message: t("system.code.gen.validation.parent_menu_required"), trigger: "change" }
|
|
121
121
|
],
|
|
122
|
-
page_type: [{ required: true, max: 32, message: t("system.
|
|
123
|
-
parent_column: [{ required: true, max: 64, message: t("system.
|
|
122
|
+
page_type: [{ required: true, max: 32, message: t("system.code.gen.validation.page_type_required"), trigger: "change" }],
|
|
123
|
+
parent_column: [{ required: true, max: 64, message: t("system.code.gen.validation.parent_column_required"), trigger: "change" }],
|
|
124
124
|
tree_label_column: [
|
|
125
|
-
{ required: true, max: 64, message: t("system.
|
|
125
|
+
{ required: true, max: 64, message: t("system.code.gen.validation.tree_label_required"), trigger: "change" }
|
|
126
126
|
],
|
|
127
|
-
remark: [{ max: 500, message: t("system.
|
|
127
|
+
remark: [{ max: 500, message: t("system.code.gen.validation.remark_length"), trigger: "blur" }],
|
|
128
128
|
"left_tree_config.table_name": [
|
|
129
|
-
{ required: true, message: t("system.
|
|
129
|
+
{ required: true, message: t("system.code.gen.validation.left_tree_table_required"), trigger: "change" }
|
|
130
130
|
],
|
|
131
131
|
"left_tree_config.filter_column": [
|
|
132
|
-
{ required: true, message: t("system.
|
|
132
|
+
{ required: true, message: t("system.code.gen.validation.filter_column_required"), trigger: "change" }
|
|
133
133
|
],
|
|
134
134
|
"left_tree_config.parent_column": [
|
|
135
|
-
{ required: true, message: t("system.
|
|
135
|
+
{ required: true, message: t("system.code.gen.validation.left_tree_parent_required"), trigger: ["blur", "change"] }
|
|
136
136
|
],
|
|
137
137
|
"left_tree_config.label_column": [
|
|
138
|
-
{ required: true, message: t("system.
|
|
138
|
+
{ required: true, message: t("system.code.gen.validation.left_tree_label_required"), trigger: ["blur", "change"] }
|
|
139
139
|
],
|
|
140
140
|
"left_tree_config.value_column": [
|
|
141
|
-
{ required: true, message: t("system.
|
|
141
|
+
{ required: true, message: t("system.code.gen.validation.left_tree_value_required"), trigger: ["blur", "change"] }
|
|
142
142
|
]
|
|
143
143
|
};
|
|
144
144
|
}
|
|
@@ -171,7 +171,7 @@ export function createDefaultCodeGenTableForm(): CodeGenTableForm {
|
|
|
171
171
|
gen_frontend: true,
|
|
172
172
|
gen_sql: true,
|
|
173
173
|
parent_menu_id: 0,
|
|
174
|
-
status: CodeGenTableStatus.
|
|
174
|
+
status: CodeGenTableStatus.CODE_GEN_TABLE_STATUS_DRAFT,
|
|
175
175
|
remark: "",
|
|
176
176
|
i18n_config: new Map()
|
|
177
177
|
};
|
|
@@ -84,7 +84,7 @@ export function createCodeGenLeftTreeOptions(config?: CodeGenLeftTreeConfig): Pr
|
|
|
84
84
|
inactive_value: "",
|
|
85
85
|
lazy: config.lazy
|
|
86
86
|
};
|
|
87
|
-
return createCodeGenPreviewOptions(config.label_column || t("system.
|
|
87
|
+
return createCodeGenPreviewOptions(config.label_column || t("system.code.gen.preview.value.category"), option, new Map());
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
/** 创建页面列表所需的模拟业务记录。 */
|
|
@@ -217,7 +217,7 @@ function createCodeGenPreviewOptions(
|
|
|
217
217
|
});
|
|
218
218
|
}
|
|
219
219
|
return Array.from({ length: 4 }, (_, optionIndex) => ({
|
|
220
|
-
label: t("system.
|
|
220
|
+
label: t("system.code.gen.preview.value.option", { source: sourceLabel, index: optionIndex + 1 }),
|
|
221
221
|
value: `${sourceLabel}-${optionIndex + 1}`
|
|
222
222
|
}));
|
|
223
223
|
}
|
|
@@ -58,7 +58,6 @@
|
|
|
58
58
|
top="4vh"
|
|
59
59
|
:model="previewFormModel"
|
|
60
60
|
:fields="formFields"
|
|
61
|
-
label-width="116px"
|
|
62
61
|
:gutter="20"
|
|
63
62
|
:col-span="12"
|
|
64
63
|
@confirm="handleSubmit"
|
|
@@ -68,13 +67,13 @@
|
|
|
68
67
|
<PasswordStrength :password="String(previewFormModel[passwordFieldName])" />
|
|
69
68
|
</template>
|
|
70
69
|
<template #codeGenPreviewSlot="{ field }">
|
|
71
|
-
<el-input v-model="previewFormModel[field.prop]" :placeholder="t('system.
|
|
72
|
-
<template #append>{{ t("system.
|
|
70
|
+
<el-input v-model="previewFormModel[field.prop]" :placeholder="t('system.code.gen.preview.placeholder.custom_slot')">
|
|
71
|
+
<template #append>{{ t("system.code.gen.preview.value.custom") }}</template>
|
|
73
72
|
</el-input>
|
|
74
73
|
</template>
|
|
75
74
|
</FormDialog>
|
|
76
75
|
</template>
|
|
77
|
-
<el-empty v-else-if="!loading" :description="t('system.
|
|
76
|
+
<el-empty v-else-if="!loading" :description="t('system.code.gen.preview.message.empty_page')" />
|
|
78
77
|
</div>
|
|
79
78
|
</template>
|
|
80
79
|
|
|
@@ -150,8 +149,8 @@ const dialog = reactive({
|
|
|
150
149
|
|
|
151
150
|
/** 模拟数据新增或编辑弹窗标题。 */
|
|
152
151
|
const dialogTitle = computed(() =>
|
|
153
|
-
t(dialog.editing ? "system.
|
|
154
|
-
resource: snapshot.value?.table.comment || t("system.
|
|
152
|
+
t(dialog.editing ? "system.code.gen.preview.title.edit" : "system.code.gen.preview.title.create", {
|
|
153
|
+
resource: snapshot.value?.table.comment || t("system.code.gen.preview.value.data")
|
|
155
154
|
})
|
|
156
155
|
);
|
|
157
156
|
|
|
@@ -195,7 +194,7 @@ const leftTreeTitle = computed(
|
|
|
195
194
|
snapshot.value?.table.left_tree_config?.comment ||
|
|
196
195
|
leftTreeTableComment.value ||
|
|
197
196
|
snapshot.value?.table.left_tree_config?.table_name ||
|
|
198
|
-
t("system.
|
|
197
|
+
t("system.code.gen.preview.title.category_list")
|
|
199
198
|
);
|
|
200
199
|
|
|
201
200
|
/** 当前实体已经存在或已经选择生成的 Proto 维护能力。 */
|
|
@@ -318,11 +317,11 @@ const formFields = computed<ProFormField[]>(() => {
|
|
|
318
317
|
...(isTreeParent ? { disabled: Boolean(previewFormModel[primaryColumn.value]) } : {})
|
|
319
318
|
},
|
|
320
319
|
options,
|
|
321
|
-
checkboxLabel: component === "checkbox" ? t("system.
|
|
320
|
+
checkboxLabel: component === "checkbox" ? t("system.code.gen.preview.value.enable_field", { field: label }) : undefined,
|
|
322
321
|
slotName: component === "slot" ? "codeGenPreviewSlot" : undefined,
|
|
323
322
|
visible: component === "password" ? model => !model[primaryColumn.value] : undefined,
|
|
324
323
|
rules: column.form_config?.required
|
|
325
|
-
? [{ required: true, message: t("system.
|
|
324
|
+
? [{ required: true, message: t("system.code.gen.preview.validation.required", { field: label }) }]
|
|
326
325
|
: undefined,
|
|
327
326
|
colSpan: resolvePreviewColSpan(component)
|
|
328
327
|
};
|
|
@@ -331,7 +330,7 @@ const formFields = computed<ProFormField[]>(() => {
|
|
|
331
330
|
field,
|
|
332
331
|
{
|
|
333
332
|
prop: "passwordStrength",
|
|
334
|
-
label: t("system.
|
|
333
|
+
label: t("system.code.gen.preview.field.password_strength"),
|
|
335
334
|
component: "slot",
|
|
336
335
|
slotName: "passwordStrength",
|
|
337
336
|
visible: model => !model[primaryColumn.value]
|
|
@@ -344,7 +343,7 @@ const formFields = computed<ProFormField[]>(() => {
|
|
|
344
343
|
const treeParentOptions = computed<ProFormOption[]>(() => {
|
|
345
344
|
if (!snapshot.value?.table.parent_column || (pageType.value !== "tree" && pageType.value !== "tree_lazy")) return [];
|
|
346
345
|
const treeRows = buildCodeGenPreviewTree(mockRows.value, primaryColumn.value, snapshot.value.table.parent_column);
|
|
347
|
-
return [{ label: t("system.
|
|
346
|
+
return [{ label: t("system.code.gen.preview.value.top_level"), value: 0 }, ...mapPreviewRowsToOptions(treeRows)];
|
|
348
347
|
});
|
|
349
348
|
|
|
350
349
|
// 路由生成对象变化时重新载入对应预览。
|
|
@@ -503,8 +502,8 @@ function handleSubmit() {
|
|
|
503
502
|
}
|
|
504
503
|
const successMessage = t(
|
|
505
504
|
editingRowKey.value !== undefined
|
|
506
|
-
? "system.
|
|
507
|
-
: "system.
|
|
505
|
+
? "system.code.gen.preview.message.update_success"
|
|
506
|
+
: "system.code.gen.preview.message.create_success"
|
|
508
507
|
);
|
|
509
508
|
handleCloseDialog();
|
|
510
509
|
await nextTick();
|
|
@@ -516,13 +515,13 @@ function handleSubmit() {
|
|
|
516
515
|
/** 删除一条或多条模拟记录。 */
|
|
517
516
|
async function handleDelete(rows: CodeGenPreviewRow[]) {
|
|
518
517
|
if (!rows.length) {
|
|
519
|
-
ElMessage.warning(t("
|
|
518
|
+
ElMessage.warning(t("common.message.select_delete_item"));
|
|
520
519
|
return;
|
|
521
520
|
}
|
|
522
521
|
try {
|
|
523
522
|
await ElMessageBox.confirm(
|
|
524
|
-
t("system.
|
|
525
|
-
t("system.
|
|
523
|
+
t("system.code.gen.preview.dialog.confirm_delete", { count: rows.length }),
|
|
524
|
+
t("system.code.gen.preview.title.delete_confirm"),
|
|
526
525
|
{
|
|
527
526
|
confirmButtonText: t("common.action.confirm"),
|
|
528
527
|
cancelButtonText: t("common.action.cancel"),
|
|
@@ -536,7 +535,7 @@ async function handleDelete(rows: CodeGenPreviewRow[]) {
|
|
|
536
535
|
mockRows.value = mockRows.value.filter(row => !keys.has(String(row[primaryColumn.value])));
|
|
537
536
|
await nextTick();
|
|
538
537
|
refreshTable();
|
|
539
|
-
ElMessage.success(t("system.
|
|
538
|
+
ElMessage.success(t("system.code.gen.preview.message.delete_success"));
|
|
540
539
|
}
|
|
541
540
|
|
|
542
541
|
/** 创建当前页面类型使用的完整模拟数据。 */
|
|
@@ -547,7 +546,7 @@ function createMockRows() {
|
|
|
547
546
|
|
|
548
547
|
/** 同步预览页签和浏览器标题。 */
|
|
549
548
|
function syncWorkspaceTitle() {
|
|
550
|
-
const title = snapshot.value?.table.comment || snapshot.value?.table.name || t("system.
|
|
549
|
+
const title = snapshot.value?.table.comment || snapshot.value?.table.name || t("system.code.gen.preview.title.data_list");
|
|
551
550
|
tabsStore.setTabsTitle(title);
|
|
552
551
|
document.title = `${title} - ${import.meta.env.VITE_GLOB_APP_TITLE}`;
|
|
553
552
|
}
|
|
@@ -688,26 +687,26 @@ function createPreviewFormProps(
|
|
|
688
687
|
switch (component) {
|
|
689
688
|
case "input":
|
|
690
689
|
return {
|
|
691
|
-
placeholder: t("system.
|
|
690
|
+
placeholder: t("system.code.gen.preview.placeholder.input", { field: label }),
|
|
692
691
|
clearable: true,
|
|
693
692
|
style: fullWidthStyle
|
|
694
693
|
};
|
|
695
694
|
case "password":
|
|
696
695
|
return {
|
|
697
|
-
placeholder: t("system.
|
|
696
|
+
placeholder: t("system.code.gen.preview.placeholder.input", { field: label }),
|
|
698
697
|
clearable: true,
|
|
699
698
|
showPassword: true,
|
|
700
699
|
style: fullWidthStyle
|
|
701
700
|
};
|
|
702
701
|
case "textarea":
|
|
703
|
-
return { placeholder: t("system.
|
|
702
|
+
return { placeholder: t("system.code.gen.preview.placeholder.input", { field: label }), rows: 4 };
|
|
704
703
|
case "input-number":
|
|
705
704
|
return { min: 0, controlsPosition: "right", style: fullWidthStyle };
|
|
706
705
|
case "segmented":
|
|
707
706
|
return { block: true };
|
|
708
707
|
case "select":
|
|
709
708
|
return {
|
|
710
|
-
placeholder: t("system.
|
|
709
|
+
placeholder: t("system.code.gen.preview.placeholder.select", { field: label }),
|
|
711
710
|
clearable: true,
|
|
712
711
|
filterable: true,
|
|
713
712
|
checkStrictly: true,
|
|
@@ -715,7 +714,7 @@ function createPreviewFormProps(
|
|
|
715
714
|
};
|
|
716
715
|
case "tree-select":
|
|
717
716
|
return {
|
|
718
|
-
placeholder: t("system.
|
|
717
|
+
placeholder: t("system.code.gen.preview.placeholder.select", { field: label }),
|
|
719
718
|
clearable: true,
|
|
720
719
|
filterable: true,
|
|
721
720
|
checkStrictly: true,
|
|
@@ -725,22 +724,22 @@ function createPreviewFormProps(
|
|
|
725
724
|
case "date-picker":
|
|
726
725
|
return {
|
|
727
726
|
type: "datetime",
|
|
728
|
-
placeholder: t("system.
|
|
727
|
+
placeholder: t("system.code.gen.preview.placeholder.select", { field: label }),
|
|
729
728
|
style: fullWidthStyle
|
|
730
729
|
};
|
|
731
730
|
case "transfer":
|
|
732
|
-
return { titles: [t("system.
|
|
731
|
+
return { titles: [t("system.code.gen.preview.value.available"), t("system.code.gen.preview.value.selected")] };
|
|
733
732
|
case "image-upload":
|
|
734
733
|
case "images-upload":
|
|
735
734
|
case "file-upload":
|
|
736
735
|
case "files-upload":
|
|
737
736
|
return { disabled: true };
|
|
738
737
|
case "dynamic-list":
|
|
739
|
-
return { inputProps: { placeholder: t("system.
|
|
738
|
+
return { inputProps: { placeholder: t("system.code.gen.preview.placeholder.input", { field: label }) } };
|
|
740
739
|
case "kv-list":
|
|
741
740
|
return {
|
|
742
|
-
keyInputProps: { placeholder: t("system.
|
|
743
|
-
valueInputProps: { placeholder: t("system.
|
|
741
|
+
keyInputProps: { placeholder: t("system.code.gen.preview.value.key") },
|
|
742
|
+
valueInputProps: { placeholder: t("system.code.gen.preview.value.value") }
|
|
744
743
|
};
|
|
745
744
|
default:
|
|
746
745
|
return option?.source_value ? { placeholder: option.source_value } : {};
|
|
@@ -758,9 +757,9 @@ function createPreviewSearchProps(column: CodeGenColumn) {
|
|
|
758
757
|
const props: Record<string, any> = { clearable: true, style: { width: "100%" } };
|
|
759
758
|
if (column.query_config?.component === "date-picker") {
|
|
760
759
|
props.type = column.query_config.operator === "between" ? "datetimerange" : "datetime";
|
|
761
|
-
props.rangeSeparator = t("system.
|
|
762
|
-
props.startPlaceholder = t("
|
|
763
|
-
props.endPlaceholder = t("
|
|
760
|
+
props.rangeSeparator = t("system.code.gen.preview.value.range_separator");
|
|
761
|
+
props.startPlaceholder = t("common.placeholder.start_date");
|
|
762
|
+
props.endPlaceholder = t("common.placeholder.end_date");
|
|
764
763
|
}
|
|
765
764
|
if (column.query_config?.component === "tree-select") {
|
|
766
765
|
props.checkStrictly = true;
|