ehr-form-engine 1.0.0-beta.4 → 1.0.0-beta.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 (92) hide show
  1. package/README.md +32 -2
  2. package/dist/index.cjs.js +5 -31
  3. package/dist/index.es.js +34295 -34415
  4. package/dist/src/components/ConfigProvider/index.d.ts +4 -0
  5. package/dist/src/components/ConfigProvider/index.vue.d.ts +24 -0
  6. package/dist/src/components/Core/index.d.ts +4 -3
  7. package/dist/src/components/Core/index.vue.d.ts +32 -3
  8. package/dist/src/components/Dependency/Operator/index.vue.d.ts +2 -2
  9. package/dist/src/components/Dependency/types/emits.d.ts +1 -1
  10. package/dist/src/components/Designer/Panel/Form/index.vue.d.ts +2 -0
  11. package/dist/src/components/Designer/Panel/Table/index.vue.d.ts +3 -1
  12. package/dist/src/components/Designer/Panel/Upload/index.vue.d.ts +3 -1
  13. package/dist/src/components/Designer/Template/Form/index.vue.d.ts +6 -2
  14. package/dist/src/components/Designer/Toolbar/index.vue.d.ts +31 -3
  15. package/dist/src/components/Designer/index.d.ts +3 -2
  16. package/dist/src/components/Designer/index.vue.d.ts +16 -5
  17. package/dist/src/components/Designer/types/emits.d.ts +15 -0
  18. package/dist/src/components/Designer/types/props.d.ts +22 -5
  19. package/dist/src/components/Designer/types/types.d.ts +1 -0
  20. package/dist/src/components/Modal/types/props.d.ts +2 -2
  21. package/dist/src/components/Panel/ContainerProperty/index.vue.d.ts +2 -3
  22. package/dist/src/components/Panel/Designer/index.vue.d.ts +37 -5
  23. package/dist/src/components/Panel/FieldProperty/index.vue.d.ts +2 -3
  24. package/dist/src/components/Panel/TableProperty/index.vue.d.ts +2 -3
  25. package/dist/src/components/Panel/UploadProperty/index.vue.d.ts +2 -3
  26. package/dist/src/components/Panel/types/designer.d.ts +9 -0
  27. package/dist/src/components/Panel/types/emits.d.ts +6 -5
  28. package/dist/src/components/Panel/types/index.d.ts +1 -0
  29. package/dist/src/components/Panel/types/props.d.ts +12 -12
  30. package/dist/src/components/Render/Core/index.d.ts +3 -0
  31. package/dist/src/components/Render/Core/index.vue.d.ts +63 -0
  32. package/dist/src/components/Render/Form/index.vue.d.ts +39 -3
  33. package/dist/src/components/Render/MobileTable/index.d.ts +3 -0
  34. package/dist/src/components/Render/MobileTable/index.vue.d.ts +28 -0
  35. package/dist/src/components/Render/Table/index.d.ts +13 -0
  36. package/dist/src/components/Render/Table/index.vue.d.ts +47 -2
  37. package/dist/src/components/Render/TableForm/index.vue.d.ts +1 -0
  38. package/dist/src/components/Render/Upload/index.vue.d.ts +76 -5
  39. package/dist/src/components/Render/Uploads/index.vue.d.ts +5 -3
  40. package/dist/src/components/Render/index.d.ts +5 -0
  41. package/dist/src/components/Render/injection-keys.d.ts +7 -0
  42. package/dist/src/components/Render/types/emits.d.ts +31 -0
  43. package/dist/src/components/Render/types/props.d.ts +60 -6
  44. package/dist/src/components/Render/types/types.d.ts +39 -0
  45. package/dist/src/components/Render/validators/FormValidator.d.ts +28 -0
  46. package/dist/src/components/Render/validators/TableValidator.d.ts +28 -0
  47. package/dist/src/components/Render/validators/UploadValidator.d.ts +28 -0
  48. package/dist/src/components/Render/validators/ValidatorFactory.d.ts +22 -0
  49. package/dist/src/components/Render/validators/index.d.ts +21 -0
  50. package/dist/src/components/Render/validators/types.d.ts +36 -0
  51. package/dist/src/components/index.d.ts +12 -5
  52. package/dist/src/composables/index.d.ts +3 -0
  53. package/dist/src/composables/useConfig.d.ts +37 -0
  54. package/dist/src/composables/useDesigner.d.ts +45 -0
  55. package/dist/src/composables/usePropertyPanel.d.ts +52 -0
  56. package/dist/src/data/common/allTemplateData.d.ts +2 -2
  57. package/dist/src/data/common/dataMap.d.ts +22 -1
  58. package/dist/src/data/common/formAndTableTemplateData.d.ts +2 -2
  59. package/dist/src/data/common/formTemplateData.d.ts +2 -2
  60. package/dist/src/data/common/tableColumnData.d.ts +8 -8
  61. package/dist/src/data/components/componentMap.d.ts +1 -0
  62. package/dist/src/data/data/archiveComponents.d.ts +3 -0
  63. package/dist/src/data/data/contactComponents.d.ts +3 -0
  64. package/dist/src/data/data/educationComponents.d.ts +3 -0
  65. package/dist/src/data/data/healthComponents.d.ts +3 -0
  66. package/dist/src/data/data/hrTableComponentsData.d.ts +2 -2
  67. package/dist/src/data/data/hukouComponents.d.ts +3 -0
  68. package/dist/src/data/data/idCardComponents.d.ts +3 -0
  69. package/dist/src/data/data/index.d.ts +9 -2
  70. package/dist/src/data/data/jobIntentionComponents.d.ts +3 -0
  71. package/dist/src/data/data/otherInfoComponents.d.ts +3 -0
  72. package/dist/src/data/data/personalBaseComponents.d.ts +3 -0
  73. package/dist/src/data/data/tableComponentsData.d.ts +2 -2
  74. package/dist/src/data/data/uploadComponentsData.d.ts +2 -2
  75. package/dist/src/plugins/vxe-grid.d.ts +5 -0
  76. package/dist/src/styles/css.d.ts +4 -0
  77. package/dist/src/types/base.types.d.ts +145 -0
  78. package/dist/src/types/component.types.d.ts +103 -0
  79. package/dist/src/types/config.d.ts +190 -0
  80. package/dist/src/types/designer.types.d.ts +51 -0
  81. package/dist/src/types/index.d.ts +17 -1
  82. package/dist/src/types/schema.guards.d.ts +63 -0
  83. package/dist/src/types/schema.types.d.ts +438 -0
  84. package/dist/src/types/types.d.ts +5 -461
  85. package/dist/src/types/utility.types.d.ts +35 -0
  86. package/dist/src/utils/device.d.ts +12 -0
  87. package/dist/src/utils/index.d.ts +2 -0
  88. package/dist/src/utils/schemaIndex.d.ts +81 -0
  89. package/dist/style.css +1 -1
  90. package/package.json +34 -21
  91. package/dist/src/components/utils/sleep.d.ts +0 -1
  92. package/dist/src/data/data/hrComponentsData.d.ts +0 -3
@@ -0,0 +1,190 @@
1
+ import { InjectionKey } from 'vue';
2
+ import { ConfigProviderProps as AntConfigProviderProps } from 'ant-design-vue/es/config-provider';
3
+
4
+ /**
5
+ * 主题配置类型(继承自 Ant Design Vue ConfigProvider)
6
+ */
7
+ export type ThemeConfig = AntConfigProviderProps['theme'];
8
+ /**
9
+ * 上传文件数据类型
10
+ * 【关键】uid 字段用于唯一标识文件,业务端必须提供
11
+ */
12
+ export interface UploadFileData {
13
+ /**
14
+ * 文件 URL
15
+ */
16
+ url: string;
17
+ /**
18
+ * 文件名
19
+ */
20
+ name: string;
21
+ /**
22
+ * 文件大小(字节)
23
+ */
24
+ size?: number;
25
+ /**
26
+ * 文件类型(MIME)
27
+ */
28
+ type?: string;
29
+ /**
30
+ * 状态
31
+ */
32
+ status?: 'done' | 'uploading' | 'error';
33
+ /**
34
+ * 【关键】文件唯一标识
35
+ * 规则:
36
+ * - 后端返回的文件:使用后端提供的 ID 或 url
37
+ * - 新上传的文件:使用生成的唯一标识(如:Date.now() + Math.random())
38
+ * - 用途:业务端通过 uid 区分新增/删除/保留的文件
39
+ * @example 'file_1691234567890_abc123'
40
+ */
41
+ uid: string;
42
+ }
43
+ /**
44
+ * 上传处理函数类型
45
+ * 由业务应用注入,组件库只负责调用
46
+ */
47
+ export type UploadHandler = (files: File[], options: {
48
+ /** 上传字段类型 */
49
+ fieldType: string;
50
+ /** 进度回调 */
51
+ onProgress: (percent: number) => void;
52
+ }) => Promise<UploadFileData[]>;
53
+ /**
54
+ * 上传组件全局配置
55
+ */
56
+ export interface UploadGlobalConfig {
57
+ /**
58
+ * 【推荐】自定义上传处理函数
59
+ * 优先级高于 defaultUploadApiUrl
60
+ * 如果提供,组件库将使用此函数代替默认 xhr 上传
61
+ */
62
+ uploadHandler?: UploadHandler;
63
+ /**
64
+ * 【兼容保留】默认上传 API 地址
65
+ * 当 uploadHandler 未提供时,使用内置 xhr 上传
66
+ * @deprecated 建议使用 uploadHandler
67
+ */
68
+ defaultUploadApiUrl?: string;
69
+ /**
70
+ * 上传类型对应的宽度映射
71
+ * 可被组件 schema.pixel.width 覆盖
72
+ */
73
+ typeWidthMap?: Record<string, number>;
74
+ /**
75
+ * 上传类型对应的高度映射
76
+ * 可被组件 schema.pixel.height 覆盖
77
+ */
78
+ typeHeightMap?: Record<string, number>;
79
+ /**
80
+ * 默认单图上传接口路径后缀
81
+ * @default 'single'
82
+ */
83
+ singleUploadPath?: string;
84
+ /**
85
+ * 默认多图上传接口路径后缀
86
+ * @default 'multiple'
87
+ */
88
+ multipleUploadPath?: string;
89
+ }
90
+ /**
91
+ * 表格组件全局配置
92
+ */
93
+ export interface TableGlobalConfig {
94
+ /**
95
+ * 表格滚动加载的防抖延迟(毫秒)
96
+ * @default 800
97
+ */
98
+ scrollDebounceMs?: number;
99
+ /**
100
+ * 默认分页大小选项
101
+ * @default [10, 20, 50, 100]
102
+ */
103
+ pageSizeOptions?: number[];
104
+ /**
105
+ * 默认每页条数
106
+ * @default 20
107
+ */
108
+ defaultPageSize?: number;
109
+ }
110
+ /**
111
+ * 设计器全局配置
112
+ */
113
+ export interface DesignerGlobalConfig {
114
+ /**
115
+ * 是否启用组件拖拽动画
116
+ * @default true
117
+ */
118
+ enableDragAnimation?: boolean;
119
+ /**
120
+ * 拖拽动画持续时间(毫秒)
121
+ * @default 300
122
+ */
123
+ dragAnimationDurationMs?: number;
124
+ /**
125
+ * 属性面板宽度
126
+ * @default 300
127
+ */
128
+ propertyPanelWidth?: number;
129
+ }
130
+ /**
131
+ * 校验规则全局配置
132
+ */
133
+ export interface ValidationGlobalConfig {
134
+ /**
135
+ * 必填项错误消息模板
136
+ * @default '{field} 为必填项'
137
+ */
138
+ requiredMessageTemplate?: string;
139
+ /**
140
+ * 最小上传数量错误消息模板
141
+ * @default '{field} 至少需要上传 {min} 个附件'
142
+ */
143
+ minUploadCountMessageTemplate?: string;
144
+ /**
145
+ * 自定义校验规则扩展
146
+ */
147
+ customRules?: Record<string, {
148
+ pattern: RegExp;
149
+ message: string;
150
+ }>;
151
+ }
152
+ /**
153
+ * 组件库全局配置对象
154
+ */
155
+ export interface HrFormEngineConfig {
156
+ /**
157
+ * 上传组件配置
158
+ */
159
+ upload?: UploadGlobalConfig;
160
+ /**
161
+ * 表格组件配置
162
+ */
163
+ table?: TableGlobalConfig;
164
+ /**
165
+ * 设计器配置
166
+ */
167
+ designer?: DesignerGlobalConfig;
168
+ /**
169
+ * 校验规则配置
170
+ */
171
+ validation?: ValidationGlobalConfig;
172
+ /**
173
+ * 主题配置(透传给 Ant Design Vue ConfigProvider)
174
+ * 支持配置 algorithm: theme.darkAlgorithm 开启暗黑模式
175
+ */
176
+ theme?: ThemeConfig;
177
+ /**
178
+ * 是否开启调试模式
179
+ * @default false
180
+ */
181
+ debug?: boolean;
182
+ }
183
+ /**
184
+ * 配置注入 key
185
+ */
186
+ export declare const HR_FORM_ENGINE_CONFIG_KEY: InjectionKey<HrFormEngineConfig>;
187
+ /**
188
+ * 默认配置
189
+ */
190
+ export declare const DEFAULT_CONFIG: HrFormEngineConfig;
@@ -0,0 +1,51 @@
1
+ import { JsonSchemaType } from './schema.types';
2
+
3
+ /**
4
+ * Schema 节点索引项
5
+ * 用于 O(1) 时间复杂度的节点查找
6
+ */
7
+ export interface SchemaNodeIndex {
8
+ /** 节点本身 */
9
+ node: JsonSchemaType;
10
+ /** 父节点 ID(根节点为 null) */
11
+ parentId: null | string;
12
+ /** 节点在父容器中的索引路径 */
13
+ path: number[];
14
+ /** 节点深度(层级) */
15
+ depth: number;
16
+ /** 是否为叶子节点 */
17
+ isLeaf: boolean;
18
+ }
19
+ /**
20
+ * Schema 索引 Map
21
+ * key: 节点 ID
22
+ * value: 节点索引信息
23
+ */
24
+ export type SchemaIndexMap = Map<string, SchemaNodeIndex>;
25
+ /**
26
+ * 索引构建选项
27
+ */
28
+ export interface BuildIndexOptions {
29
+ /** 是否包含根节点 */
30
+ includeRoot?: boolean;
31
+ /** 最大深度(防止循环引用) */
32
+ maxDepth?: number;
33
+ }
34
+ /**
35
+ * 索引更新操作类型
36
+ */
37
+ export type IndexUpdateType = {
38
+ newIndex: number;
39
+ newParentId: string;
40
+ nodeId: string;
41
+ type: 'move';
42
+ } | {
43
+ node: JsonSchemaType;
44
+ parentId: string;
45
+ type: 'add';
46
+ } | {
47
+ nodeId: string;
48
+ type: 'remove';
49
+ } | {
50
+ type: 'rebuild';
51
+ };
@@ -1,2 +1,18 @@
1
+ export type { BindingConfig, ColumnDataType, DatePickerFormatType, DatePickerType, DependencyCondition, DependencyRuleType, DependencyRulesType, DragGroupType, FieldId, FieldValue, FormData, InputModeType, ItemTypeTag, LogicalOperator, PanelListType, PatternRule, RequiredRule, RuleItem, RulesType, SelectModeType, SelectPlacementType, SlotComponentConfig, SlotItem, SlotsType, TableActions, TableFieldType, TimerPickerFormatType, TriggerType, UploadListType, ValidatorType, } from './base.types';
2
+ export type { ColumnComponentProps, ComponentProps } from './component.types';
3
+ export type { BuildIndexOptions, IndexUpdateType, SchemaIndexMap, SchemaNodeIndex, } from './designer.types';
4
+ export { isColumnSchema, isColumnSchemaType, isContainerSchema, isContainerSchemaType, isFieldSchema, isFieldSchemaType, isTableSchema, isTableSchemaType, isUploadSchema, isUploadSchemaType, } from './schema.guards';
5
+ export type { BaseSchema, CascaderFieldSchema, CheckboxGroupFieldSchema, DatePickerFieldSchema, FieldSchema, InputFieldSchema, InputNumberFieldSchema, InputPasswordFieldSchema, RadioGroupFieldSchema, RangePickerFieldSchema, RateFieldSchema, SelectFieldSchema, SliderFieldSchema, SwitchFieldSchema, TextareaFieldSchema, TimePickerFieldSchema, TimeRangePickerFieldSchema, UploadFieldSchema, FieldSchemaType, CascaderColumnSchema, ColumnSchema, DatePickerColumnSchema, InputColumnSchema, InputNumberColumnSchema, SelectColumnSchema, TextareaColumnSchema, TimePickerColumnSchema, ColumnSchemaType, ContainerSchema, TableSchema, UploadSchema, UploadSetting, DraggableItemType, JsonSchemaType, DynamicRowVO, DynamicGridEditRender, DynamicGridProps, DynamicFormEditRender, DynamicFormProps, } from './schema.types';
6
+ export type { ColProp, LabelProp, Option, StrictProps, StrictRootType } from './utility.types';
1
7
  export * from './emits';
2
- export * from './types';
8
+ export * from './config';
9
+ /** @deprecated 使用 TableSchema 替代 */
10
+ export type TableSchemaType = import('./schema.types').TableSchema;
11
+ /** @deprecated 使用 UploadSchema 替代 */
12
+ export type UploadSchemaType = import('./schema.types').UploadSchema;
13
+ /** @deprecated 使用 ContainerSchema 替代 */
14
+ export type ContainerSchemaType = import('./schema.types').ContainerSchema;
15
+ /** @deprecated 使用 FieldSchema 替代 */
16
+ export type FieldSchemaTypeAlias = import('./schema.types').FieldSchema;
17
+ /** @deprecated 使用 ColumnSchema 替代 */
18
+ export type ColumnSchemaTypeAlias = import('./schema.types').ColumnSchema;
@@ -0,0 +1,63 @@
1
+ import { ValidComponentName, ValidColumnComponentName, JsonSchemaType, TableSchema, UploadSchema, ContainerSchema, FieldSchema, ColumnSchema } from './schema.types';
2
+ import { ItemTypeTag } from './base.types';
3
+
4
+ /**
5
+ * 检查值是否为有效的组件名称
6
+ */
7
+ export declare function isValidComponentName(value: unknown): value is ValidComponentName;
8
+ /**
9
+ * 检查值是否为有效的列组件名称
10
+ */
11
+ export declare function isValidColumnComponentName(value: unknown): value is ValidColumnComponentName;
12
+ /**
13
+ * 检查值是否为有效的拖拽项类型标签
14
+ */
15
+ export declare function isItemTypeTag(value: unknown): value is ItemTypeTag;
16
+ /**
17
+ * 检查值是否为 JsonSchemaType 的基础结构
18
+ * 注意:这只是基础检查,具体类型需要进一步判断
19
+ */
20
+ export declare function isJsonSchemaType(value: unknown): value is JsonSchemaType;
21
+ /**
22
+ * 检查值是否为 ColumnSchema
23
+ * 使用类型断言避免 TypeScript 过度收窄类型
24
+ */
25
+ export declare function isColumnSchema(value: unknown): value is ColumnSchema;
26
+ /** @deprecated 使用 isColumnSchema 替代 */
27
+ export declare const isColumnSchemaType: typeof isColumnSchema;
28
+ /**
29
+ * 检查值是否为 FieldSchema
30
+ * 使用类型断言避免 TypeScript 过度收窄类型
31
+ */
32
+ export declare function isFieldSchema(value: unknown): value is FieldSchema;
33
+ /** @deprecated 使用 isFieldSchema 替代 */
34
+ export declare const isFieldSchemaType: typeof isFieldSchema;
35
+ /**
36
+ * 检查值是否为 TableSchema
37
+ * 使用类型断言避免 TypeScript 过度收窄类型
38
+ */
39
+ export declare function isTableSchema(value: unknown): value is TableSchema;
40
+ /** @deprecated 使用 isTableSchema 替代 */
41
+ export declare const isTableSchemaType: typeof isTableSchema;
42
+ /**
43
+ * 检查值是否为 UploadSchema
44
+ * 使用类型断言避免 TypeScript 过度收窄类型
45
+ */
46
+ export declare function isUploadSchema(value: unknown): value is UploadSchema;
47
+ /** @deprecated 使用 isUploadSchema 替代 */
48
+ export declare const isUploadSchemaType: typeof isUploadSchema;
49
+ /**
50
+ * 检查值是否为 ContainerSchema
51
+ * 使用类型断言避免 TypeScript 过度收窄类型
52
+ */
53
+ export declare function isContainerSchema(value: unknown): value is ContainerSchema;
54
+ /** @deprecated 使用 isContainerSchema 替代 */
55
+ export declare const isContainerSchemaType: typeof isContainerSchema;
56
+ /**
57
+ * 检查组件是否需要选项数据
58
+ */
59
+ export declare function componentNeedsOptions(componentName: ValidComponentName): boolean;
60
+ /**
61
+ * 检查组件是否支持表格列
62
+ */
63
+ export declare function isValidColumnComponent(componentName: string): boolean;