@liujitcn/kratos-admin-system 0.0.39 → 0.0.41

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 (39) hide show
  1. package/README.md +22 -0
  2. package/dist/package/declarations/src/api/system/admin/v1/base_config.d.ts +1 -5
  3. package/dist/package/declarations/src/components/DynamicI18nCell.vue.d.ts +2 -8
  4. package/dist/package/declarations/src/components/DynamicI18nEditor.vue.d.ts +20 -3
  5. package/dist/package/declarations/src/components/dynamicI18n.d.ts +2 -2
  6. package/dist/package/declarations/src/locales/generated.d.ts +5797 -5813
  7. package/dist/package/declarations/src/rpc/system/admin/v1/base_config.d.ts +4 -40
  8. package/dist/package/declarations/src/utils/code-gen-progress.d.ts +3 -0
  9. package/dist/package/declarations/src/views/tool/code-gen/components/CodeGenGenerateConfirm.vue.d.ts +11 -0
  10. package/dist/package/declarations/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue.d.ts +5 -9
  11. package/dist/package/declarations/src/views/tool/code-gen/config.d.ts +3 -0
  12. package/dist/package/src/api/system/admin/v1/base_config.ts +0 -20
  13. package/dist/package/src/components/DynamicI18nCell.vue +55 -220
  14. package/dist/package/src/components/DynamicI18nEditor.vue +150 -146
  15. package/dist/package/src/components/dynamicI18n.ts +10 -6
  16. package/dist/package/src/config/index.ts +1 -3
  17. package/dist/package/src/locales/en-US.json +1430 -1434
  18. package/dist/package/src/locales/ja-JP.json +1430 -1434
  19. package/dist/package/src/locales/zh-CN.json +1429 -1433
  20. package/dist/package/src/locales/zh-TW.json +1429 -1433
  21. package/dist/package/src/module.ts +0 -1
  22. package/dist/package/src/rpc/system/admin/v1/base_config.ts +3 -43
  23. package/dist/package/src/utils/code-gen-progress.ts +15 -0
  24. package/dist/package/src/views/base/config/index.vue +183 -48
  25. package/dist/package/src/views/base/dict/index.vue +6 -9
  26. package/dist/package/src/views/base/dict/item.vue +6 -15
  27. package/dist/package/src/views/base/job/index.vue +16 -17
  28. package/dist/package/src/views/base/menu/index.vue +78 -15
  29. package/dist/package/src/views/tool/code-gen/columns/index.vue +17 -25
  30. package/dist/package/src/views/tool/code-gen/components/CodeGenGenerateConfirm.vue +115 -0
  31. package/dist/package/src/views/tool/code-gen/components/CodeGenLocaleEditor.vue +27 -186
  32. package/dist/package/src/views/tool/code-gen/components/CodeGenProgressDialog.vue +2 -0
  33. package/dist/package/src/views/tool/code-gen/config.ts +15 -1
  34. package/dist/package/src/views/tool/code-gen/table/index.vue +69 -40
  35. package/package.json +3 -2
  36. package/dist/package/declarations/src/config/database-backup.d.ts +0 -12
  37. package/dist/package/declarations/src/views/base/runtime-config/index.vue.d.ts +0 -3
  38. package/dist/package/src/config/database-backup.ts +0 -57
  39. package/dist/package/src/views/base/runtime-config/index.vue +0 -479
package/README.md CHANGED
@@ -164,3 +164,25 @@ pnpm --filter @liujitcn/kratos-admin-system type:check
164
164
  pnpm --filter @liujitcn/kratos-admin-system build:package
165
165
  pnpm --filter @liujitcn/kratos-admin-system pack
166
166
  ```
167
+
168
+ ### 扩展系统配置表单
169
+
170
+ 系统配置类型选择“表单”后,按配置 Key 从 `runtimeConfigDefinitions` 查找定义,使用 `createModel()` 创建默认模型,再用后台 `value` 中的 JSON 对象覆盖默认字段,最终由 `ProForm` 渲染。切换 Key 会重新创建模型和表单控件;保存前执行字段校验,再将模型序列化为 JSON。未注册的 Key 显示不可用提示,不能提交表单值。
171
+
172
+ 新增表单时,在业务模块中定义 `RuntimeConfigDefinition`,并在模块初始化时调用 `registerRuntimeConfig(definition)` 注册一次,无需修改系统配置页面。System 内置定义放在 `src/config` 并加入 `runtimeConfigDefinitions`。注册必须在打开配置页面之前完成,Key 必须唯一,并与后端消费配置时使用的 Key 一致。
173
+
174
+ ```ts
175
+ import { registerRuntimeConfig } from "@liujitcn/kratos-admin-system/config";
176
+ import { notificationConfig } from "./config/notification";
177
+
178
+ registerRuntimeConfig(notificationConfig);
179
+ ```
180
+
181
+ 每个定义维护 `key`、`titleKey`、`descriptionKey`、`icon`、`createModel` 和 `fields`,可参考 `src/config/base-log-fallback.ts`。字段通过 `prop` 绑定模型,`component` 指定控件,`props` 传递参数,`options` 提供选项;单选用 `radio-group` 或 `select`,多选用 `checkbox-group` 或 `select` 配合 `props.multiple: true`,数组字段默认值应为 `[]`。服务器目录路径目前使用 `input`,保存的路径由后端解释。
182
+
183
+ 标题、提示和校验分别通过 `labelKey`、`labelTooltipKey`、`rules.messageKey` 翻译,相关 Key 需加入模块语言包。选项文案通过 `options: () => [...]` 在函数中调用 `t()`,不要在模块初始化时固定翻译结果。新增定义需要构建发布前端;后端仍需实现对应配置的读取和业务处理。
184
+
185
+ 字段国际化默认入口使用 Element Plus 标准按钮搭配 Languages 翻译图标(与顶部语言切换一致),保留悬停说明和无障碍名称;ProForm 单行输入框通过 el-input 的 append 插槽展示,多行及独立场景使用普通按钮,不使用自定义拼接样式。自定义 trigger 插槽(如列表文字入口)保持原有展示。
186
+
187
+ 国际化编辑弹窗使用 Element Plus 横向表单,语言标签在左侧统一占 100px,输入框及翻译操作位于右侧;单行和多行编辑均保持左右布局。
188
+ 代码生成进度弹窗统一补齐 HTTP 和 SSE 快照中被 ProtoJSON 省略的零值计数,任务及表级进度在生成初期显示 0,避免出现 NaN。
@@ -1,4 +1,4 @@
1
- import { type BaseConfigForm, type BaseConfigService, type CreateBaseConfigRequest, type DeleteBaseConfigRequest, type GetBaseConfigByKeyRequest, type BaseConfigValue, type GetBaseConfigRequest, type PageBaseConfigRequest, type PageBaseConfigResponse, type RefreshBaseConfigCacheRequest, type SetBaseConfigStatusRequest, type UpdateBaseConfigByKeyRequest, type UpdateBaseConfigRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_config";
1
+ import { type BaseConfigForm, type BaseConfigService, type CreateBaseConfigRequest, type DeleteBaseConfigRequest, type GetBaseConfigRequest, type PageBaseConfigRequest, type PageBaseConfigResponse, type RefreshBaseConfigCacheRequest, type SetBaseConfigStatusRequest, type UpdateBaseConfigRequest } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_config";
2
2
  import type { Empty } from "@liujitcn/kratos-admin-system/rpc/google/protobuf/empty";
3
3
  /** Admin系统配置服务 */
4
4
  export declare class BaseConfigServiceImpl implements BaseConfigService {
@@ -8,14 +8,10 @@ export declare class BaseConfigServiceImpl implements BaseConfigService {
8
8
  PageBaseConfig(request: PageBaseConfigRequest): Promise<PageBaseConfigResponse>;
9
9
  /** 查询系统配置 */
10
10
  GetBaseConfig(request: GetBaseConfigRequest): Promise<BaseConfigForm>;
11
- /** 按配置键查询隐藏系统配置。 */
12
- GetBaseConfigByKey(request: GetBaseConfigByKeyRequest): Promise<BaseConfigValue>;
13
11
  /** 创建系统配置 */
14
12
  CreateBaseConfig(request: CreateBaseConfigRequest): Promise<Empty>;
15
13
  /** 更新系统配置 */
16
14
  UpdateBaseConfig(request: UpdateBaseConfigRequest): Promise<Empty>;
17
- /** 按配置键更新隐藏系统配置。 */
18
- UpdateBaseConfigByKey(request: UpdateBaseConfigByKeyRequest): Promise<Empty>;
19
15
  /** 删除系统配置 */
20
16
  DeleteBaseConfig(request: DeleteBaseConfigRequest): Promise<Empty>;
21
17
  /** 设置状态 */
@@ -1,16 +1,10 @@
1
- import type { BaseI18n } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_i18n";
2
- import { I18nTargetType } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_i18n";
3
- /** DynamicI18nCellProps 动态翻译列表单元格属性。 */
1
+ import type { BaseI18n, I18nTargetType } from "@liujitcn/kratos-admin-system/rpc/system/admin/v1/base_i18n";
2
+ /** 列表国际化字段入口,未启用非主语言时退回普通文本。 */
4
3
  interface DynamicI18nCellProps {
5
- /** 资源源文。 */
6
4
  source: string;
7
- /** 统一翻译表目标类型。 */
8
5
  targetType?: I18nTargetType;
9
- /** 目标资源编号。 */
10
6
  targetId?: number;
11
- /** 资源列表返回的非主语言翻译。 */
12
7
  i18ns?: BaseI18n[];
13
- /** 是否允许编辑翻译。 */
14
8
  editable?: boolean;
15
9
  }
16
10
  declare const __VLS_export: import("vue").DefineComponent<DynamicI18nCellProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DynamicI18nCellProps> & Readonly<{}>, {
@@ -1,20 +1,37 @@
1
1
  import { type DynamicI18nValue } from "./dynamicI18n";
2
- /** DynamicI18nEditorProps 动态翻译编辑器属性。 */
2
+ /** 字段旁国际化入口及本地草稿编辑弹窗。 */
3
3
  interface DynamicI18nEditorProps {
4
4
  modelValue: DynamicI18nValue[];
5
- /** 当前语言源文本。 */
6
5
  source?: string;
7
6
  maxlength?: number;
8
7
  multiline?: boolean;
8
+ disabled?: boolean;
9
+ readonly?: boolean;
9
10
  }
10
- declare const __VLS_export: import("vue").DefineComponent<DynamicI18nEditorProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ /** 打开编辑窗口,未填写译文使用原值展示,不提前写入主表单。 */
12
+ declare function openDialog(): void;
13
+ declare var __VLS_1: {
14
+ open: typeof openDialog;
15
+ };
16
+ type __VLS_Slots = {} & {
17
+ trigger?: (props: typeof __VLS_1) => any;
18
+ };
19
+ declare const __VLS_base: import("vue").DefineComponent<DynamicI18nEditorProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
20
  "update:modelValue": (value: DynamicI18nValue[]) => any;
12
21
  }, string, import("vue").PublicProps, Readonly<DynamicI18nEditorProps> & Readonly<{
13
22
  "onUpdate:modelValue"?: ((value: DynamicI18nValue[]) => any) | undefined;
14
23
  }>, {
24
+ disabled: boolean;
15
25
  source: string;
16
26
  maxlength: number;
17
27
  multiline: boolean;
28
+ readonly: boolean;
18
29
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
30
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
19
31
  declare const _default: typeof __VLS_export;
20
32
  export default _default;
33
+ type __VLS_WithSlots<T, S> = T & {
34
+ new (): {
35
+ $slots: S;
36
+ };
37
+ };
@@ -25,8 +25,8 @@ export declare function getEditableLanguageOptions(): DynamicLanguageOption[];
25
25
  export declare function getLanguageLabel(locale: string): string;
26
26
  /** normalizeDynamicI18ns 将后端翻译记录补齐为全部非主语言编辑状态。 */
27
27
  export declare function normalizeDynamicI18ns(records: DynamicI18nRecord[] | undefined, locales?: string[]): DynamicI18nValue[];
28
- /** serializeDynamicI18ns 将编辑状态转换回后端资源翻译结构。 */
29
- export declare function serializeDynamicI18ns(values: DynamicI18nValue[], targetType: I18nTargetType, targetId: number): Array<{
28
+ /** serializeDynamicI18ns 按启用语言序列化译文,未填写时保存原值。 */
29
+ export declare function serializeDynamicI18ns(values: DynamicI18nValue[], targetType: I18nTargetType, targetId: number, source: string): Array<{
30
30
  id: number;
31
31
  target_type: I18nTargetType;
32
32
  target_id: number;