@liujitcn/kratos-admin-system 0.0.21 → 0.0.24

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 (106) hide show
  1. package/dist/package/declarations/src/api/system/base_language.d.ts +5 -4
  2. package/dist/package/declarations/src/api/system/base_translation.d.ts +7 -4
  3. package/dist/package/declarations/src/api/system/ops_monitoring.d.ts +19 -0
  4. package/dist/package/declarations/src/api/system/ops_monitoring_sse.d.ts +12 -0
  5. package/dist/package/declarations/src/components/DynamicTranslationCell.vue.d.ts +9 -32
  6. package/dist/package/declarations/src/components/DynamicTranslationEditor.vue.d.ts +3 -6
  7. package/dist/package/declarations/src/components/dynamicTranslation.d.ts +11 -17
  8. package/dist/package/declarations/src/locales/generated.d.ts +6536 -0
  9. package/dist/package/declarations/src/rpc/base/v1/ai_session.d.ts +12 -2
  10. package/dist/package/declarations/src/rpc/base/v1/ai_tool.d.ts +9 -1
  11. package/dist/package/declarations/src/rpc/base/v1/config.d.ts +35 -0
  12. package/dist/package/declarations/src/rpc/system/admin/v1/auth.d.ts +1 -1
  13. package/dist/package/declarations/src/rpc/system/admin/v1/base_config.d.ts +23 -7
  14. package/dist/package/declarations/src/rpc/system/admin/v1/base_dict.d.ts +7 -77
  15. package/dist/package/declarations/src/rpc/system/admin/v1/base_job.d.ts +9 -1
  16. package/dist/package/declarations/src/rpc/system/admin/v1/base_language.d.ts +7 -2
  17. package/dist/package/declarations/src/rpc/system/admin/v1/base_menu.d.ts +5 -40
  18. package/dist/package/declarations/src/rpc/system/admin/v1/base_migration.d.ts +6 -6
  19. package/dist/package/declarations/src/rpc/system/admin/v1/base_role.d.ts +13 -1
  20. package/dist/package/declarations/src/rpc/system/admin/v1/base_translation.d.ts +54 -81
  21. package/dist/package/declarations/src/rpc/system/admin/v1/base_user.d.ts +11 -1
  22. package/dist/package/declarations/src/rpc/system/admin/v1/code_gen.d.ts +11 -11
  23. package/dist/package/declarations/src/rpc/system/admin/v1/code_gen_table.d.ts +11 -1
  24. package/dist/package/declarations/src/rpc/system/admin/v1/common.d.ts +13 -0
  25. package/dist/package/declarations/src/rpc/system/admin/v1/ops_monitoring.d.ts +222 -0
  26. package/dist/package/declarations/src/views/tool/ops-monitoring/index.vue.d.ts +3 -0
  27. package/dist/package/src/api/base/ai_message.ts +2 -2
  28. package/dist/package/src/api/system/base_language.ts +13 -15
  29. package/dist/package/src/api/system/base_translation.ts +17 -6
  30. package/dist/package/src/api/system/ops_monitoring.ts +88 -0
  31. package/dist/package/src/api/system/ops_monitoring_sse.ts +49 -0
  32. package/dist/package/src/components/DynamicTranslationCell.vue +199 -126
  33. package/dist/package/src/components/DynamicTranslationEditor.vue +109 -78
  34. package/dist/package/src/components/dynamicTranslation.ts +11 -31
  35. package/dist/package/src/locales/README.md +7 -5
  36. package/dist/package/src/locales/en-US.json +876 -872
  37. package/dist/package/src/locales/es-ES.json +900 -895
  38. package/dist/package/src/locales/fr-FR.json +896 -891
  39. package/dist/package/src/locales/generated.ts +22 -0
  40. package/dist/package/src/locales/ja-JP.json +876 -872
  41. package/dist/package/src/locales/ko-KR.json +881 -876
  42. package/dist/package/src/locales/zh-CN.json +876 -872
  43. package/dist/package/src/locales/zh-TW.json +876 -871
  44. package/dist/package/src/module.ts +3 -17
  45. package/dist/package/src/rpc/base/v1/ai_session.ts +13 -2
  46. package/dist/package/src/rpc/base/v1/ai_tool.ts +10 -1
  47. package/dist/package/src/rpc/base/v1/config.ts +47 -0
  48. package/dist/package/src/rpc/system/admin/v1/auth.ts +1 -1
  49. package/dist/package/src/rpc/system/admin/v1/base_config.ts +24 -7
  50. package/dist/package/src/rpc/system/admin/v1/base_dict.ts +7 -79
  51. package/dist/package/src/rpc/system/admin/v1/base_job.ts +10 -1
  52. package/dist/package/src/rpc/system/admin/v1/base_language.ts +8 -2
  53. package/dist/package/src/rpc/system/admin/v1/base_menu.ts +5 -41
  54. package/dist/package/src/rpc/system/admin/v1/base_migration.ts +8 -8
  55. package/dist/package/src/rpc/system/admin/v1/base_role.ts +14 -1
  56. package/dist/package/src/rpc/system/admin/v1/base_translation.ts +54 -81
  57. package/dist/package/src/rpc/system/admin/v1/base_user.ts +12 -1
  58. package/dist/package/src/rpc/system/admin/v1/code_gen.ts +11 -11
  59. package/dist/package/src/rpc/system/admin/v1/code_gen_table.ts +12 -1
  60. package/dist/package/src/rpc/system/admin/v1/common.ts +21 -0
  61. package/dist/package/src/rpc/system/admin/v1/ops_monitoring.ts +255 -0
  62. package/dist/package/src/views/ai/chat/components/ChatPanel.vue +36 -36
  63. package/dist/package/src/views/ai/chat/components/SessionPanel.vue +6 -6
  64. package/dist/package/src/views/ai/chat/components/XSender.vue +20 -20
  65. package/dist/package/src/views/ai/chat/index.vue +33 -32
  66. package/dist/package/src/views/ai/chat/message.ts +16 -15
  67. package/dist/package/src/views/base/api/index.vue +55 -56
  68. package/dist/package/src/views/base/area/index.vue +18 -19
  69. package/dist/package/src/views/base/config/index.vue +143 -133
  70. package/dist/package/src/views/base/dept/index.vue +42 -43
  71. package/dist/package/src/views/base/dict/index.vue +49 -45
  72. package/dist/package/src/views/base/dict/item.vue +54 -49
  73. package/dist/package/src/views/base/job/index.vue +51 -52
  74. package/dist/package/src/views/base/job/log.vue +18 -18
  75. package/dist/package/src/views/{tool → base}/language/index.vue +51 -47
  76. package/dist/package/src/views/base/log/index.vue +40 -40
  77. package/dist/package/src/views/base/menu/index.vue +220 -177
  78. package/dist/package/src/views/base/migration/index.vue +24 -24
  79. package/dist/package/src/views/base/post/index.vue +42 -43
  80. package/dist/package/src/views/base/role/index.vue +54 -55
  81. package/dist/package/src/views/base/tenant/index.vue +42 -43
  82. package/dist/package/src/views/base/user/components/dept-tree.vue +1 -1
  83. package/dist/package/src/views/base/user/index.vue +69 -71
  84. package/dist/package/src/views/profile/components/base.vue +9 -9
  85. package/dist/package/src/views/profile/components/password.vue +19 -20
  86. package/dist/package/src/views/profile/components/security.vue +20 -20
  87. package/dist/package/src/views/profile/index.vue +3 -3
  88. package/dist/package/src/views/tool/api-doc/index.vue +1 -1
  89. package/dist/package/src/views/tool/code-gen/code-preview/index.vue +13 -13
  90. package/dist/package/src/views/tool/code-gen/columns/index.vue +89 -89
  91. package/dist/package/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue +5 -5
  92. package/dist/package/src/views/tool/code-gen/components/CodeGenProgressDialog.vue +21 -21
  93. package/dist/package/src/views/tool/code-gen/components/CodePreviewPane.vue +5 -5
  94. package/dist/package/src/views/tool/code-gen/config.ts +60 -60
  95. package/dist/package/src/views/tool/code-gen/preview/data.ts +2 -2
  96. package/dist/package/src/views/tool/code-gen/preview/index.vue +30 -31
  97. package/dist/package/src/views/tool/code-gen/proto/index.vue +43 -43
  98. package/dist/package/src/views/tool/code-gen/table/index.vue +95 -95
  99. package/dist/package/src/views/tool/ops-monitoring/index.vue +1175 -0
  100. package/dist/package/src/views/tool/project-doc/index.vue +7 -7
  101. package/package.json +2 -2
  102. package/dist/package/declarations/src/rpc/base/v1/enum.d.ts +0 -43
  103. package/dist/package/declarations/src/rpc/system/common/v1/enum.d.ts +0 -67
  104. package/dist/package/src/rpc/base/v1/enum.ts +0 -54
  105. package/dist/package/src/rpc/system/common/v1/enum.ts +0 -80
  106. /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.codegen.progress.title')"
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.codegen.progress.value.current", { table: task.current_table_name }) }}
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.codegen.progress.value.steps", { completed: task.completed_steps, total: task.total_steps })
29
+ t("system.code.gen.progress.value.steps", { completed: task.completed_steps, total: task.total_steps })
30
30
  }}</span>
31
- <span>{{ t("system.codegen.progress.value.createdAt", { time: formatTime(task.created_at) }) }}</span>
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.codegen.progress.value.finishedAt", { time: formatTime(task.finished_at) })
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.codegen.progress.action.copyError')" placement="top">
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.codegen.progress.action.copyError')"
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.codegen.table.field.status')" width="86" align="center">
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.codegen.progress.field.step')" min-width="130" />
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.codegen.preview.field.path')"
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.codegen.progress.field.result')"
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.codegen.progress.field.output')" width="90" align="center">
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.codegen.progress.message.unavailableTitle')"
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.codegen.progress.action.reload") }}</el-button>
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.codegen.progress.message.unavailable");
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.codegen.progress.status.running"), type: "warning" };
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.codegen.progress.status.succeeded"), type: "success" };
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.codegen.progress.status.failed"), type: "danger" };
215
- return { label: t("system.codegen.progress.status.pending"), type: "info" };
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.codegen.progress.message.copied"));
254
+ ElMessage.success(t("system.code.gen.progress.message.copied"));
255
255
  } catch {
256
- ElMessage.error(t("system.codegen.progress.message.copyFailed"));
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.codegen.preview.field.path')" min-width="320" show-overflow-tooltip />
9
- <el-table-column prop="action" :label="t('system.codegen.preview.field.action')" width="100" />
10
- <el-table-column :label="t('system.codegen.table.field.status')" width="100" align="center">
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.codegen.preview.status.exists" : "system.codegen.preview.status.pendingCreate") }}
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.codegen.preview.field.message')" min-width="220" show-overflow-tooltip />
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/common/v1/enum";
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.codegen.pageType.normal"), value: "normal" },
17
- { label: t("system.codegen.pageType.tree"), value: "tree" },
18
- { label: t("system.codegen.pageType.treeLazy"), value: "tree_lazy" },
19
- { label: t("system.codegen.pageType.leftTree"), value: "left_tree" }
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.codegen.source.static"), value: "static" },
32
- { label: t("system.codegen.source.dict"), value: "dict" },
33
- { label: t("system.codegen.source.table"), value: "table" }
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.codegen.operator.eq"), value: "eq" },
41
- { label: t("system.codegen.operator.like"), value: "like" },
42
- { label: t("system.codegen.operator.between"), value: "between" }
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.codegen.component.input"), value: "input" },
50
- { label: t("system.codegen.component.inputNumber"), value: "input-number" },
51
- { label: t("system.codegen.component.select"), value: "select" },
52
- { label: t("system.codegen.component.treeSelect"), value: "tree-select" },
53
- { label: t("system.codegen.component.datePicker"), value: "date-picker" }
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.codegen.component.text"), value: "text" },
61
- { label: t("system.codegen.component.switch"), value: "switch" },
62
- { label: t("system.codegen.component.selectShort"), value: "select" },
63
- { label: t("system.codegen.component.tree"), value: "tree-select" },
64
- { label: t("system.codegen.component.image"), value: "image" },
65
- { label: t("system.codegen.component.money"), value: "money" },
66
- { label: t("system.codegen.component.date"), value: "date" }
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.codegen.component.input",
73
- password: "system.codegen.component.password",
74
- textarea: "system.codegen.component.textarea",
75
- "input-number": "system.codegen.component.inputNumber",
76
- segmented: "system.codegen.component.segmented",
77
- switch: "system.codegen.component.switch",
78
- checkbox: "system.codegen.component.checkbox",
79
- select: "system.codegen.component.select",
80
- dict: "system.codegen.component.dict",
81
- "radio-group": "system.codegen.component.radioGroup",
82
- "checkbox-group": "system.codegen.component.checkboxGroup",
83
- "tree-select": "system.codegen.component.treeSelect",
84
- "date-picker": "system.codegen.component.datePicker",
85
- "cron-expression": "system.codegen.component.cron",
86
- transfer: "system.codegen.component.transfer",
87
- "image-upload": "system.codegen.component.imageUpload",
88
- "images-upload": "system.codegen.component.imagesUpload",
89
- "file-upload": "system.codegen.component.fileUpload",
90
- "files-upload": "system.codegen.component.filesUpload",
91
- "rich-text": "system.codegen.component.richText",
92
- "dynamic-list": "system.codegen.component.dynamicList",
93
- "kv-list": "system.codegen.component.kvList",
94
- slot: "system.codegen.component.slot"
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.codegen.validation.tableRequired"), trigger: "change" }],
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.codegen.validation.moduleRequired"),
114
+ message: t("system.code.gen.validation.module_required"),
115
115
  trigger: "change"
116
116
  }
117
117
  ],
118
- comment: [{ max: 128, message: t("system.codegen.validation.commentLength"), trigger: "blur" }],
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.codegen.validation.parentMenuRequired"), trigger: "change" }
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.codegen.validation.pageTypeRequired"), trigger: "change" }],
123
- parent_column: [{ required: true, max: 64, message: t("system.codegen.validation.parentColumnRequired"), trigger: "change" }],
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.codegen.validation.treeLabelRequired"), trigger: "change" }
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.codegen.validation.remarkLength"), trigger: "blur" }],
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.codegen.validation.leftTreeTableRequired"), trigger: "change" }
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.codegen.validation.filterColumnRequired"), trigger: "change" }
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.codegen.validation.leftTreeParentRequired"), trigger: ["blur", "change"] }
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.codegen.validation.leftTreeLabelRequired"), trigger: ["blur", "change"] }
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.codegen.validation.leftTreeValueRequired"), trigger: ["blur", "change"] }
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.DRAFT_CGTS,
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.codegen.preview.value.category"), option, new Map());
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.codegen.preview.value.option", { source: sourceLabel, index: optionIndex + 1 }),
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.codegen.preview.placeholder.customSlot')">
72
- <template #append>{{ t("system.codegen.preview.value.custom") }}</template>
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.codegen.preview.message.emptyPage')" />
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.codegen.preview.title.edit" : "system.codegen.preview.title.create", {
154
- resource: snapshot.value?.table.comment || t("system.codegen.preview.value.data")
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.codegen.preview.title.categoryList")
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.codegen.preview.value.enableField", { field: label }) : undefined,
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.codegen.preview.validation.required", { field: label }) }]
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.codegen.preview.field.passwordStrength"),
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.codegen.preview.value.topLevel"), value: 0 }, ...mapPreviewRowsToOptions(treeRows)];
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.codegen.preview.message.updateSuccess"
507
- : "system.codegen.preview.message.createSuccess"
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("system.common.message.selectDeleteItem"));
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.codegen.preview.dialog.confirmDelete", { count: rows.length }),
525
- t("system.codegen.preview.title.deleteConfirm"),
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.codegen.preview.message.deleteSuccess"));
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.codegen.preview.title.dataList");
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.codegen.preview.placeholder.input", { field: label }),
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.codegen.preview.placeholder.input", { field: label }),
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.codegen.preview.placeholder.input", { field: label }), rows: 4 };
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.codegen.preview.placeholder.select", { field: label }),
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.codegen.preview.placeholder.select", { field: label }),
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.codegen.preview.placeholder.select", { field: label }),
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.codegen.preview.value.available"), t("system.codegen.preview.value.selected")] };
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.codegen.preview.placeholder.input", { field: label }) } };
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.codegen.preview.value.key") },
743
- valueInputProps: { placeholder: t("system.codegen.preview.value.value") }
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.codegen.preview.value.rangeSeparator");
762
- props.startPlaceholder = t("system.common.placeholder.startDate");
763
- props.endPlaceholder = t("system.common.placeholder.endDate");
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;