@gct-paas/word 0.1.52-beta.1 → 0.1.52-beta.11

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 (162) hide show
  1. package/dist/assets/svgs/table/index.d.ts +1 -1
  2. package/dist/base/divider/src/divider.vue.d.ts +1 -1
  3. package/dist/base/input/src/input.vue.d.ts +4 -4
  4. package/dist/base/input/src/text-area.vue.d.ts +2 -2
  5. package/dist/base/rdo-tree-select/src/rdo-tree-select.vue.d.ts +1 -1
  6. package/dist/base/table/src/table.vue.d.ts +1 -1
  7. package/dist/capabilities/model-field-runtime/types/field.d.ts +2 -0
  8. package/dist/core/cursor/render/cursor-renderer.vue.d.ts +2 -2
  9. package/dist/core/data/DataManager.d.ts +27 -7
  10. package/dist/core/data/derived-fields.d.ts +20 -0
  11. package/dist/core/data/emit-source.d.ts +15 -0
  12. package/dist/core/data/enricher-types.d.ts +8 -1
  13. package/dist/core/data/enrichers/build-field-enrichers.d.ts +24 -1
  14. package/dist/core/data/enrichers/enrich-design-defaults.d.ts +19 -0
  15. package/dist/core/data/enrichers/label-enricher.d.ts +62 -0
  16. package/dist/core/data/enrichers/static-label-enrichers.d.ts +9 -0
  17. package/dist/core/data/pipeline-logger.d.ts +72 -0
  18. package/dist/core/data/post-change-pipeline.d.ts +15 -65
  19. package/dist/core/layout/handlers/FieldHandler.d.ts +1 -1
  20. package/dist/core/layout/handlers/fields/FieldBaseHandler.d.ts +7 -0
  21. package/dist/core/model/document/wtcRegionRef.d.ts +2 -2
  22. package/dist/core/model/logic/subtable/repeating/RepeatingRegion.d.ts +19 -4
  23. package/dist/core/utils/expand.d.ts +1 -1
  24. package/dist/domain/active/active-types.d.ts +4 -0
  25. package/dist/domain/constants/field-state.d.ts +45 -0
  26. package/dist/domain/field/field-binding.d.ts +4 -0
  27. package/dist/domain/field/field-props-schema-type.d.ts +10 -4
  28. package/dist/domain/field/field-type.d.ts +33 -1
  29. package/dist/domain/table/business/{check-table → check/check-table}/index.d.ts +1 -0
  30. package/dist/domain/table/business/{check-table/profile.d.ts → check/check-table/profile/index.d.ts} +1 -1
  31. package/dist/domain/table/business/check/check-table/runtime/check-table-label-enricher.d.ts +4 -0
  32. package/dist/domain/table/business/check/check-table/runtime/check-table-value-fields.d.ts +3 -0
  33. package/dist/domain/table/business/check/check-table/runtime/index.d.ts +2 -0
  34. package/dist/domain/table/business/check/check-table/runtime/register-handlers.d.ts +1 -0
  35. package/dist/domain/table/business/{material-balance/profile.d.ts → material/material-balance/profile/index.d.ts} +1 -1
  36. package/dist/domain/table/business/{material-consume/profile.d.ts → material/material-consume/profile/index.d.ts} +1 -1
  37. package/dist/domain/table/business/warehouse/warehouse-allocate/actions/change-parse-rule.d.ts +7 -0
  38. package/dist/domain/table/business/warehouse/warehouse-allocate/actions/index.d.ts +2 -0
  39. package/dist/domain/table/business/warehouse/warehouse-allocate/actions/scan.d.ts +7 -0
  40. package/dist/domain/table/business/warehouse/warehouse-allocate/index.d.ts +2 -0
  41. package/dist/domain/table/business/warehouse/warehouse-allocate/profile/field-keys.d.ts +28 -0
  42. package/dist/domain/table/business/warehouse/warehouse-allocate/profile/fields.d.ts +2 -0
  43. package/dist/domain/table/business/warehouse/warehouse-allocate/profile/index.d.ts +3 -0
  44. package/dist/domain/table/business/warehouse/warehouse-allocate/runtime/before-btn-click.d.ts +5 -0
  45. package/dist/domain/table/business/warehouse/warehouse-allocate/runtime/register-handlers.d.ts +1 -0
  46. package/dist/domain/table/business/warehouse/warehouse-allocate/runtime/row-change-handlers.d.ts +9 -0
  47. package/dist/domain/table/business/warehouse/warehouse-in-out/profile/fields.d.ts +2 -0
  48. package/dist/domain/table/business/warehouse/warehouse-in-out/profile/index.d.ts +2 -0
  49. package/dist/domain/table/business/warehouse/warehouse-inventory/actions/change-parse-rule.d.ts +7 -0
  50. package/dist/domain/table/business/warehouse/warehouse-inventory/actions/index.d.ts +2 -0
  51. package/dist/domain/table/business/warehouse/warehouse-inventory/actions/scan.d.ts +7 -0
  52. package/dist/domain/table/business/{warehouse-inventory → warehouse/warehouse-inventory}/index.d.ts +2 -0
  53. package/dist/domain/table/business/warehouse/warehouse-inventory/profile/field-keys.d.ts +69 -0
  54. package/dist/domain/table/business/warehouse/warehouse-inventory/profile/fields.d.ts +2 -0
  55. package/dist/domain/table/business/{warehouse-inventory/profile.d.ts → warehouse/warehouse-inventory/profile/index.d.ts} +1 -1
  56. package/dist/domain/table/business/warehouse/warehouse-inventory/runtime/index.d.ts +3 -0
  57. package/dist/domain/table/business/warehouse/warehouse-inventory/runtime/register-handlers.d.ts +1 -0
  58. package/dist/domain/table/business/warehouse/warehouse-inventory/runtime/remote-sync-apply.d.ts +9 -0
  59. package/dist/domain/table/business/warehouse/warehouse-inventory/runtime/row-change-handlers.d.ts +22 -0
  60. package/dist/domain/table/business/warehouse/warehouse-inventory/runtime/scan-config.d.ts +38 -0
  61. package/dist/domain/table/business/warehouse/warehouse-inventory/runtime/stocktake-calc.d.ts +74 -0
  62. package/dist/domain/table/business/warehouse/warehouse-inventory/runtime/warehouse-context.d.ts +3 -0
  63. package/dist/domain/table/data/dynamic-table/{profile.d.ts → profile/index.d.ts} +1 -1
  64. package/dist/domain/table/data/fixed-table/{profile.d.ts → profile/index.d.ts} +1 -1
  65. package/dist/domain/table/data/two-d-table/{profile.d.ts → profile/index.d.ts} +1 -1
  66. package/dist/domain/table/{hooks → design/hooks}/on-field-attach.d.ts +2 -2
  67. package/dist/domain/table/design/hooks/on-repeating-default-props.d.ts +3 -0
  68. package/dist/domain/table/{hooks → design/hooks}/on-subtable-create.d.ts +4 -4
  69. package/dist/domain/table/design/label.d.ts +2 -0
  70. package/dist/domain/table/design/ribbon-options.d.ts +8 -0
  71. package/dist/domain/table/{_shared → design}/sub-model-matcher.d.ts +5 -0
  72. package/dist/domain/table/{_shared → design/theme}/region-item-theme.d.ts +1 -1
  73. package/dist/domain/table/design/validate-table-selection.d.ts +28 -0
  74. package/dist/domain/table/index.d.ts +11 -7
  75. package/dist/domain/table/registry.d.ts +3 -13
  76. package/dist/domain/table/runtime/api/biz-service-api.d.ts +8 -0
  77. package/dist/domain/table/runtime/engines/init-load-engine.d.ts +16 -0
  78. package/dist/domain/table/runtime/engines/linkage-engine.d.ts +67 -0
  79. package/dist/domain/table/runtime/engines/main-field-bind-engine.d.ts +7 -0
  80. package/dist/domain/table/runtime/engines/remote-sync-engine.d.ts +38 -0
  81. package/dist/domain/table/runtime/engines/row-runtime-engine.d.ts +20 -0
  82. package/dist/domain/table/runtime/engines/rule-engine.d.ts +35 -0
  83. package/dist/domain/table/runtime/runtime-handlers.d.ts +72 -0
  84. package/dist/domain/table/runtime/table-runtime-context.d.ts +48 -0
  85. package/dist/domain/table/runtime/table-runtime-utils.d.ts +56 -0
  86. package/dist/domain/table/runtime/table-runtime.d.ts +67 -0
  87. package/dist/domain/table/types.d.ts +192 -64
  88. package/dist/domain/widget/component-type.d.ts +1 -1
  89. package/dist/index.es.js +79250 -74547
  90. package/dist/runtime/canvas/table/render/material-consume/index.d.ts +1 -1
  91. package/dist/runtime/canvas/table/render/material-consume/material-consume-table-controller.d.ts +9 -14
  92. package/dist/runtime/canvas/table/render/material-consume/material-consume.util.d.ts +11 -0
  93. package/dist/runtime/canvas/table/render/material-consume/tmpl-bom-controller.d.ts +1 -1
  94. package/dist/runtime/canvas/table/render/table-structure-overlay/sub-table-action.vue.d.ts +1 -1
  95. package/dist/runtime/designer/ribbon/components/sub-table-form-modal.vue.d.ts +1 -0
  96. package/dist/runtime/designer/toolkit/renderer/field-palette/field-palette.vue.d.ts +15 -0
  97. package/dist/runtime/designer/toolkit/renderer/field-palette/index.d.ts +14 -0
  98. package/dist/runtime/interface/computed.d.ts +15 -31
  99. package/dist/runtime/interface/fetchers.d.ts +6 -2
  100. package/dist/runtime/renderer/dialogs/device-scan/device-scan-dialog.vue.d.ts +9 -9
  101. package/dist/runtime/renderer/dropdowns/components/tables/columns/business/product-ndo.d.ts +11 -0
  102. package/dist/runtime/renderer/dropdowns/components/tables/rdo-table-dropdown.vue.d.ts +9 -9
  103. package/dist/runtime/renderer/dropdowns/components/tables/strategy/selectStrategy.d.ts +2 -2
  104. package/dist/runtime/renderer/dropdowns/components/tables/table-dropdown.vue.d.ts +9 -9
  105. package/dist/sdk/doc-runtime/check-table/index.d.ts +2 -2
  106. package/dist/sdk/doc-runtime/check-table/map-check-table-item-infos.d.ts +2 -6
  107. package/dist/sdk/doc-runtime/check-table/resolve-check-table-item-infos.d.ts +5 -5
  108. package/dist/sdk/doc-runtime/check-table/types.d.ts +1 -1
  109. package/dist/sdk/doc-runtime/composables/useDocOperations.d.ts +5 -0
  110. package/dist/sdk/doc-runtime/factories/document-initializer.d.ts +20 -11
  111. package/dist/sdk/doc-runtime/utils/wait-for-data-settle.d.ts +1 -1
  112. package/dist/sdk/types/index.d.ts +6 -1
  113. package/dist/suites/edhr/check-table/check-table-dyn-value.d.ts +17 -1
  114. package/dist/suites/edhr/component/use-marker-render-colors.d.ts +7 -0
  115. package/dist/suites/edhr/manifest/field/_common_/basic.d.ts +7 -1
  116. package/dist/suites/edhr/manifest/field/material/location-manifest.d.ts +2 -0
  117. package/dist/suites/edhr/manifest/field/material/warehouse-manifest.d.ts +2 -0
  118. package/dist/suites/edhr/manifest/field/object-type/material-consume-manifest.d.ts +2 -0
  119. package/dist/suites/edhr/manifest/field/object-type/qty-consumed-manifest.d.ts +2 -0
  120. package/dist/suites/edhr/manifest/field/object-type/qty-manifest.d.ts +2 -0
  121. package/dist/suites/edhr/manifest/field/object-type/qty-required-manifest.d.ts +2 -0
  122. package/dist/suites/edhr/manifest/field/trace/production-identifier-manifest.d.ts +2 -0
  123. package/dist/suites/edhr/panel-schema/check-table/CheckTablePanel.vue.d.ts +8 -0
  124. package/dist/suites/edhr/panel-schema/check-table/add-ds-btn.vue.d.ts +14 -0
  125. package/dist/suites/edhr/panel-schema/check-table/types.d.ts +20 -0
  126. package/dist/suites/edhr/panel-schema/data-init/object-init/object-init.vue.d.ts +9 -0
  127. package/dist/suites/edhr/panel-schema/index.d.ts +2 -0
  128. package/dist/suites/edhr/panel-schema/material-consume-table/parse-rule-editor.vue.d.ts +1 -1
  129. package/dist/suites/edhr/panel-schema/warehouse-allocate-table/WarehouseAllocateTablePanel.vue.d.ts +8 -0
  130. package/dist/suites/edhr/panel-schema/warehouse-allocate-table/warehouse-allocate-table.basic.d.ts +1 -0
  131. package/dist/suites/edhr/panel-schema/warehouse-inventory-table/WarehouseInventoryTablePanel.vue.d.ts +8 -0
  132. package/dist/suites/edhr/panel-schema/warehouse-inventory-table/warehouse-inventory-table.basic.d.ts +1 -0
  133. package/dist/suites/shared/hooks/usePanelProps.d.ts +2 -0
  134. package/dist/suites/shared/panel/config/editor/qrcode-parse-editor/barcode-parsing-rules-string-editor.vue.d.ts +21 -0
  135. package/dist/suites/shared/panel/config/editor/qrcode-parse-editor/qrcode-parse-editor.vue.d.ts +17 -0
  136. package/dist/suites/shared/panel/config/editor/qrcode-parse-editor/qrcode-parse-modal.vue.d.ts +20 -0
  137. package/dist/suites/shared/panel/config/editor/qrcode-parse-editor/utils.d.ts +5 -0
  138. package/dist/types/main.type.d.ts +43 -0
  139. package/dist/types/warehouse-allocate.type.d.ts +38 -0
  140. package/dist/types/warehouse-inventory.type.d.ts +33 -0
  141. package/dist/utils/TriggerUtil.d.ts +1 -1
  142. package/dist/utils/func/core.d.ts +4 -0
  143. package/dist/utils/func/form.d.ts +1 -5
  144. package/dist/word.css +558 -328
  145. package/package.json +2 -2
  146. package/dist/core/data/data-path-suffix.d.ts +0 -9
  147. package/dist/domain/table/_shared/linkage-engine.d.ts +0 -25
  148. package/dist/domain/table/_shared/rule-engine.d.ts +0 -9
  149. package/dist/domain/table/_shared/runtime-engine.d.ts +0 -12
  150. package/dist/domain/table/_shared/table-runtime-shared.d.ts +0 -45
  151. package/dist/domain/table/business/warehouse-in-out/fields.d.ts +0 -2
  152. package/dist/domain/table/business/warehouse-in-out/profile.d.ts +0 -2
  153. package/dist/domain/table/business/warehouse-transfer/index.d.ts +0 -1
  154. package/dist/domain/table/business/warehouse-transfer/profile.d.ts +0 -3
  155. package/dist/runtime/canvas/table/render/material-consume/mc-render.d.ts +0 -47
  156. package/dist/runtime/canvas/table/render/material-consume/mc-web-render.d.ts +0 -21
  157. package/dist/runtime/canvas/table/render/material-consume/sync-material-info.d.ts +0 -2
  158. /package/dist/domain/table/business/{material-balance → material/material-balance}/index.d.ts +0 -0
  159. /package/dist/domain/table/business/{material-consume → material/material-consume}/index.d.ts +0 -0
  160. /package/dist/domain/table/business/{warehouse-in-out → warehouse/warehouse-in-out}/index.d.ts +0 -0
  161. /package/dist/domain/table/{_shared → design}/autofill-expander.d.ts +0 -0
  162. /package/dist/domain/table/{_shared → design/theme}/table-theme.d.ts +0 -0
@@ -14,7 +14,7 @@ export declare const TABLE_DATA_SVG: {
14
14
  export declare const TABLE_BUSINESS_SVG: {
15
15
  readonly 'warehouse-in-out': string;
16
16
  readonly 'warehouse-inventory': string;
17
- readonly 'warehouse-transfer': string;
17
+ readonly 'warehouse-allocate': string;
18
18
  readonly 'material-consume': string;
19
19
  readonly 'material-balance': string;
20
20
  readonly 'check-table': string;
@@ -7,8 +7,8 @@ declare function __VLS_template(): {
7
7
  };
8
8
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
9
9
  declare const __VLS_component: import('vue').DefineComponent<IDividerProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<IDividerProps> & Readonly<{}>, {
10
- vertical: boolean;
11
10
  color: string;
11
+ vertical: boolean;
12
12
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
13
13
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
14
14
  export default _default;
@@ -15,7 +15,7 @@ declare const __VLS_component: import('vue').DefineComponent<GctInputProps, {
15
15
  focus: () => void;
16
16
  blur: () => void;
17
17
  select: () => void;
18
- inputRef: import('vue').Ref<HTMLTextAreaElement | HTMLInputElement | null, HTMLTextAreaElement | HTMLInputElement | null>;
18
+ inputRef: import('vue').Ref<HTMLInputElement | HTMLTextAreaElement | null, HTMLInputElement | HTMLTextAreaElement | null>;
19
19
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
20
20
  input: (value: string | number, event: Event) => any;
21
21
  search: (value: string | number) => any;
@@ -47,12 +47,10 @@ declare const __VLS_component: import('vue').DefineComponent<GctInputProps, {
47
47
  readonly: boolean;
48
48
  disabled: boolean;
49
49
  size: import('./types').InputSize;
50
- autocomplete: string;
51
- spellcheck: boolean;
50
+ suffix: string;
52
51
  placeholder: string;
53
52
  modelValue: string | number;
54
53
  prefix: string;
55
- suffix: string;
56
54
  addonBefore: string;
57
55
  addonAfter: string;
58
56
  allowClear: boolean;
@@ -60,9 +58,11 @@ declare const __VLS_component: import('vue').DefineComponent<GctInputProps, {
60
58
  showPasswordToggle: boolean;
61
59
  maxLength: number;
62
60
  autofocus: boolean;
61
+ autocomplete: string;
63
62
  rows: number;
64
63
  bordered: boolean;
65
64
  showSearchButton: boolean;
65
+ spellcheck: boolean;
66
66
  customStyle: Record<string, string | number>;
67
67
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
68
68
  inputRef: HTMLInputElement;
@@ -42,16 +42,16 @@ declare const __VLS_component: import('vue').DefineComponent<GctInputProps, {
42
42
  name: string;
43
43
  readonly: boolean;
44
44
  disabled: boolean;
45
- autocomplete: string;
46
- spellcheck: boolean;
47
45
  placeholder: string;
48
46
  modelValue: string | number;
49
47
  allowClear: boolean;
50
48
  showCount: boolean;
51
49
  maxLength: number;
52
50
  autofocus: boolean;
51
+ autocomplete: string;
53
52
  rows: number;
54
53
  bordered: boolean;
54
+ spellcheck: boolean;
55
55
  customStyle: Record<string, string | number>;
56
56
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
57
57
  textareaRef: HTMLTextAreaElement;
@@ -22,13 +22,13 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
22
22
  "onUpdate:fullPathValue"?: ((value?: string | null | undefined) => any) | undefined;
23
23
  }>, {
24
24
  disabled: boolean;
25
+ modelCategory: string;
25
26
  pageSize: number;
26
27
  placeholder: string;
27
28
  popperWidth: number;
28
29
  allowClear: boolean;
29
30
  disabledParent: boolean;
30
31
  parentToDefault: boolean;
31
- modelCategory: string;
32
32
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
33
33
  dropdownRef: import('vue').CreateComponentPublicInstanceWithMixins<Record<string, any> & {}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, false, {}, {}, {}, {}, string, {}, any, import('vue').ComponentProvideOptions, {
34
34
  P: {};
@@ -31,9 +31,9 @@ declare const __VLS_component: import('vue').DefineComponent<TableProps, {}, {},
31
31
  onSelect?: ((keys: string[]) => any) | undefined;
32
32
  "onRow-click"?: ((row: TableRow) => any) | undefined;
33
33
  }>, {
34
- size: "small" | "middle" | "large";
35
34
  multiple: boolean;
36
35
  loading: boolean;
36
+ size: "small" | "middle" | "large";
37
37
  columns: TableColumn[];
38
38
  stripe: boolean;
39
39
  selectable: boolean;
@@ -26,6 +26,8 @@ export interface FieldMeta {
26
26
  bindInfo?: string;
27
27
  /** 主子关联 绑定子模型字段 */
28
28
  bindFieldKey?: string;
29
+ /** 对象字段所属对象 key */
30
+ belongingObject?: string;
29
31
  createTime: string;
30
32
  createUserName: string;
31
33
  modifyTime: string;
@@ -9,10 +9,10 @@ type __VLS_Props = {
9
9
  visible?: boolean;
10
10
  };
11
11
  declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
12
- caretWidth: number;
12
+ visible: boolean;
13
13
  caretColor: string;
14
+ caretWidth: number;
14
15
  blinkInterval: number;
15
16
  alwaysVisibleAfterEventMs: number;
16
- visible: boolean;
17
17
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
18
18
  export default _default;
@@ -1,6 +1,8 @@
1
1
  import { Doc } from '../view/Doc';
2
2
  import { PostChangePipelineContext } from './post-change-pipeline';
3
- export type EmitSource = 'user' | 'dependency' | 'enrichment' | 'parent';
3
+ import { EmitSource } from './emit-source';
4
+ export type { EmitSource } from './emit-source';
5
+ export { EMIT_SOURCE_DESC } from './emit-source';
4
6
  /** 单字段变更明细(path 作为 FieldChangeMap 的 key) */
5
7
  export interface FieldChangeDetail {
6
8
  oldValue: unknown;
@@ -62,10 +64,20 @@ export declare class DataManager {
62
64
  * 调度 layout,自动合并同一微任务队列中的多个操作
63
65
  */
64
66
  attachPostChangePipeline(ctx: PostChangePipelineContext): void;
65
- /** 文档初始化 / 刷新数据后,对已有 value 跑一轮后置 enrich */
67
+ /** 文档初始化 / 刷新数据后,对已有 value 跑一轮后置 enrich(不触发业务副作用) */
66
68
  runInitialPostChangeFlush(paths: JsonPath[]): Promise<void>;
67
69
  /** 等待已入队的 emit 批处理(含 postChange / enrich 写回)全部完成 */
68
70
  whenEmitSettled(): Promise<void>;
71
+ /**
72
+ * 提交前准备:排空流水线 → 物化未写入 rawData 的默认值 → 补全 _lb_ / _href_
73
+ * 避免秒存或懒读 defaults 导致提交缺标签。
74
+ */
75
+ prepareForSubmit(): Promise<void>;
76
+ /**
77
+ * 将 defaults Map 中尚未进入 rawData 的项物化写入(source: hydrate)。
78
+ * @returns 本次物化的路径列表
79
+ */
80
+ materializePendingDefaults(): JsonPath[];
69
81
  /**
70
82
  * 对已注册的组件依赖全量重算(refresh 后 depGraph 已重建,需等 readonly/赋值稳定后再 enrich/layout)
71
83
  */
@@ -111,6 +123,11 @@ export declare class DataManager {
111
123
  getHref<T = string>(path: JsonPath): T | null | undefined;
112
124
  /** 子表数组路径下未软删行数 */
113
125
  countActiveSubtableRows(arrayPath: JsonPath): number;
126
+ /**
127
+ * 统计 defaults 中按 `$.subFieldKey[i].*` 展开的检验项行数。
128
+ * 检验表纵向轴配置只进 defaults,rawData 可能尚未物化多行。
129
+ */
130
+ countDefaultsIndexedRows(subFieldKey: string): number;
114
131
  /** 版面可见行下标 → rawData 数组实际下标 */
115
132
  resolveSubtableVisibleIndex(arrayPath: JsonPath, visibleIndex: number): number;
116
133
  private assignField;
@@ -118,9 +135,10 @@ export declare class DataManager {
118
135
  * 根据 jsonpath 设置数据
119
136
  * @param path jsonpath 路径
120
137
  * @param value 要设置的值
138
+ * @param source 写入来源
121
139
  * @returns 是否设置成功
122
140
  */
123
- set(path: JsonPath, value: any, source?: EmitSource): boolean;
141
+ set(path: JsonPath, value: any, source: EmitSource): boolean;
124
142
  /**
125
143
  * 从带数字下标的 path 推断二维坐标(供 setMultiple / patch / 业务回填等无 modelRef 的场景)
126
144
  * - 单轴:$.f_ewb[0].f_name → y=0;$.f_ewblink[1].x → x=1(需能从 rawData 的交叉 key 识别轴,或命中 link 命名启发)
@@ -144,6 +162,8 @@ export declare class DataManager {
144
162
  */
145
163
  private get2DByCoords;
146
164
  private set2DByCoords;
165
+ /** 二维/检验表写字段后,额外 emit 带下标的字段路径,供 label enricher 等按字段匹配 */
166
+ private emit2DFieldPath;
147
167
  private cleanupCrossByAxisUid;
148
168
  /**
149
169
  * 复制轴行插入时:若 uid 与已有行重复,换新 uid 并复制关联交叉区行。
@@ -153,7 +173,7 @@ export declare class DataManager {
153
173
  /**
154
174
  * 将一个部分值对象合进整体
155
175
  */
156
- patch(data: PartialData): void;
176
+ patch(data: PartialData, source: EmitSource): void;
157
177
  /**
158
178
  * 根据 jsonpath 删除数据
159
179
  * @param path jsonpath 路径
@@ -166,13 +186,14 @@ export declare class DataManager {
166
186
  * @param callback 更新回调函数
167
187
  * @returns 是否更新成功
168
188
  */
169
- update<T = any>(path: JsonPath, callback: (value: T) => T): boolean;
189
+ update<T = any>(path: JsonPath, callback: (value: T) => T, source: EmitSource): boolean;
170
190
  /**
171
191
  * 根据 jsonpath 批量设置数据
172
192
  * @param updates 路径与值的映射对象
193
+ * @param source 写入来源
173
194
  * @returns 是否全部设置成功
174
195
  */
175
- setMultiple(updates: Record<JsonPath, any>, source?: EmitSource): boolean;
196
+ setMultiple(updates: Record<JsonPath, any>, source: EmitSource): boolean;
176
197
  /** 依赖赋值写回 rawData,不触发 emit(用于注册期常量公式立即执行) */
177
198
  private applyDependencyWrites;
178
199
  /**
@@ -363,4 +384,3 @@ export declare class DataManager {
363
384
  */
364
385
  clear(): void;
365
386
  }
366
- export {};
@@ -0,0 +1,20 @@
1
+ /** 与 rawData 并存的 label 后缀(展示用) */
2
+ export declare const LABEL_SUFFIX = "_lb_";
3
+ /** 与 rawData 并存的外链 href 后缀(超链接字段) */
4
+ export declare const HREF_SUFFIX = "_href_";
5
+ /** 版面超链接文字颜色 */
6
+ export declare const HYPERLINK_TEXT_COLOR = "#0563c1";
7
+ export declare function getLabelPath(path: string): string;
8
+ export declare function getHrefPath(path: string): string;
9
+ /** 派生数据路径(label / href),不参与 changedMap / 业务副作用 */
10
+ export declare function isDerivedDataPath(path: string): boolean;
11
+ /** 子表行内仅前端使用、不参与提交的字段 */
12
+ export declare const ROW_RUNTIME_META_KEYS: Set<string>;
13
+ /** 该字段 key 是否不参与提交 */
14
+ export declare function isSubmitExcludedKey(key: string): boolean;
15
+ /** 提交时是否保留该行字段(含空 label 剔除规则) */
16
+ export declare function shouldIncludeSubmitField(key: string, value: unknown): boolean;
17
+ /** 从对象中挑出可提交的字段 */
18
+ export declare function pickSubmitFields(record: Record<string, unknown>): Record<string, unknown>;
19
+ /** 剔除顶层不参与提交的 key */
20
+ export declare function omitSubmitExcludedTopLevel<T extends Record<string, unknown>>(data: T): Partial<T>;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 字段写入来源
3
+ *
4
+ * 用来区分「用户真的改了」还是「系统在补水/算公式」
5
+ * 从而决定要不要触发业务副作用,比如清空下游、remoteSync 等
6
+ *
7
+ * @property user - 用户手动操作触发(下拉、输入、扫码)
8
+ * @property hydrate - 打开表单、刷新、初始化填空(非用户操作,不能把「加载」当成「改字段」,两者是不同的)
9
+ * @property dependency - 数据变更触发后把别的字段值给算出来了(组件依赖)
10
+ * @property enrichment - Pipeline 进行数据补充,自动补的派生数据(超链接 _href_、标签 _lb_)
11
+ * @property parent - 子字段变了,通知父级监听,主要是内部使用
12
+ */
13
+ export type EmitSource = 'user' | 'hydrate' | 'dependency' | 'enrichment' | 'parent';
14
+ /** 各来源中文说明 */
15
+ export declare const EMIT_SOURCE_DESC: Record<EmitSource, string>;
@@ -1,6 +1,13 @@
1
+ import { EmitSource } from './emit-source';
2
+ /** enricher 执行时的批次上下文 */
3
+ export type EnrichContext = {
4
+ batchSource?: EmitSource;
5
+ oldValue?: unknown;
6
+ newValue?: unknown;
7
+ };
1
8
  export type DataEnricherRegistration = {
2
9
  id: string;
3
10
  valuePathTemplate: string;
4
11
  match: (path: string) => boolean;
5
- enrich: (path: string, value: unknown) => Promise<Record<string, unknown> | void>;
12
+ enrich: (path: string, value: unknown, ctx?: EnrichContext) => Promise<Record<string, unknown> | void>;
6
13
  };
@@ -2,6 +2,29 @@ import { Doc } from '../../view/Doc';
2
2
  import { Wr } from '../../model/document';
3
3
  import { PostChangePipelineContext } from '../post-change-pipeline';
4
4
  import { DataEnricherRegistration } from '../enricher-types';
5
+ import { FieldComputedConfig } from '../../../domain/field/field-props-schema-type';
6
+ /**
7
+ * 解析 enricher 用的 widget props
8
+ * 枚举等字段的运行时选项在 computedOptions,需先跑 manifest.propRules
9
+ */
10
+ export declare function resolveEnricherWidgetProps(instance: {
11
+ widgetMeta?: {
12
+ props?: Record<string, unknown>;
13
+ };
14
+ }, manifest?: {
15
+ computed?: FieldComputedConfig;
16
+ }): Record<string, unknown>;
17
+ /** 根据文档 widget 列表构建全部 enricher 注册项 */
5
18
  export declare function buildFieldEnricherRegistrations(instances: any[], ctx: PostChangePipelineContext, doc: Doc): DataEnricherRegistration[];
6
- /** 收集 init 后需 enrich 的运行时路径(按 rawData 实际行数展开) */
19
+ /**
20
+ * 将设计/初始化路径模板展开为运行时具体路径(含 [n] / [n_y][n_x])
21
+ */
22
+ export declare function expandInitPathTemplates(templatePath: string, rawData: Record<string, any>): string[];
23
+ /**
24
+ * 收集 init / 换数后需要跑 hydrate 的运行时路径(仅 rawData 中已有值的字段)
25
+ */
7
26
  export declare function collectInitialEnrichPaths(instances: Wr[], rawData: Record<string, any>): string[];
27
+ /** 收集子表指定行的 widget 字段路径(扫码 / 批量写行后补跑 label enrich) */
28
+ export declare function collectSubtableRowEnrichPaths(instances: Wr[], subFieldKey: string, rowIndexes: number[]): string[];
29
+ /** 子表指定行补跑 label / 派生字段 hydrate(enrichment 或整表 user 写入后不触发 enricher) */
30
+ export declare function hydrateSubtableRowLabels(doc: Doc, subFieldKey: string, rowIndexes: number[]): Promise<void>;
@@ -0,0 +1,19 @@
1
+ import { Doc } from '../../view/Doc';
2
+ import { FieldDataBindingMeta } from '../../../domain/field/field-binding';
3
+ import { FIELD_TYPE } from '../../../domain/field/field-type';
4
+ import { FieldManifest } from '../../../capabilities/field-manifest';
5
+ import { FieldMeta } from '../../../capabilities/model-field-runtime';
6
+ /** 单字段 defaults Map 补全 _lb_ */
7
+ export declare function enrichDesignDefaults(defaults: Record<string, any> | undefined, options: {
8
+ doc: Doc;
9
+ fieldBinding?: FieldDataBindingMeta | null;
10
+ widgetProps: Record<string, unknown>;
11
+ manifest?: FieldManifest;
12
+ loadFieldByKey: (modelKey: string, key: string) => Promise<FieldMeta | undefined>;
13
+ }): Promise<Record<string, any> | undefined>;
14
+ /** 填报 init:为 loadDefaultValuesByFields 产出的 defaults Map 批量补 _lb_ */
15
+ export declare function enrichWidgetDefaultsMap(defaultDataMap: Record<string, any>, instances: any[], options: {
16
+ doc: Doc;
17
+ getFieldManifest: (type: FIELD_TYPE) => FieldManifest | undefined;
18
+ loadFieldByKey: (modelKey: string, key: string) => Promise<FieldMeta | undefined>;
19
+ }): Promise<Record<string, any>>;
@@ -0,0 +1,62 @@
1
+ import { Doc } from '../../view/Doc';
2
+ import { WidgetMeta } from '../../widget/widget-meta';
3
+ import { FieldDataBindingMeta } from '../../../domain/field/field-binding';
4
+ import { FIELD_TYPE } from '../../../domain/field/field-type';
5
+ import { FieldManifest } from '../../../capabilities/field-manifest';
6
+ import { FieldMeta } from '../../../capabilities/model-field-runtime';
7
+ import { DataEnricherRegistration } from '../enricher-types';
8
+ import { DataManager } from '../DataManager';
9
+ import { apiFetchers } from '../../../runtime/interface/fetchers';
10
+ /** 单条 label 解析策略 */
11
+ type LabelResolveStrategy = {
12
+ type: 'dict';
13
+ dictFieldKey?: string;
14
+ } | {
15
+ type: 'options';
16
+ from: 'optionsJson' | 'computedOptions';
17
+ labelKey?: string;
18
+ multiple?: boolean;
19
+ } | {
20
+ type: 'api';
21
+ fetcher: keyof typeof apiFetchers;
22
+ fallback?: string;
23
+ } | {
24
+ type: 'static-map';
25
+ map: Record<string, string>;
26
+ };
27
+ /** resolveFieldLabel 运行时入参 */
28
+ interface LabelResolveContext {
29
+ path: string;
30
+ value: unknown;
31
+ dataManager: DataManager;
32
+ fieldBinding: FieldDataBindingMeta;
33
+ widgetProps: Record<string, unknown>;
34
+ manifest?: FieldManifest;
35
+ loadFieldByKey: (modelKey: string, key: string) => Promise<FieldMeta | undefined>;
36
+ }
37
+ type LabelEnricherOptions = Omit<DataEnricherRegistration, 'enrich'> & {
38
+ doc: Doc;
39
+ widgetMeta: WidgetMeta;
40
+ fieldBinding: FieldDataBindingMeta;
41
+ manifest?: FieldManifest;
42
+ loadFieldByKey: (modelKey: string, key: string) => Promise<FieldMeta | undefined>;
43
+ };
44
+ /** 该字段是否应注册 label-enricher */
45
+ export declare function fieldNeedsLabelEnrichment(fieldType: FIELD_TYPE, manifest?: FieldManifest): boolean;
46
+ /**
47
+ * 静态映射 enricher:value 字段 → 固定 label 字段
48
+ * 用于无 widget 的业务字段,如盘点 stocktake_status → stocktake_status__lb_
49
+ */
50
+ export declare function createStaticMapLabelEnricher(doc: Doc, options: {
51
+ id: string;
52
+ valueFieldKey: string;
53
+ labelFieldKey: string;
54
+ map: Record<string, string>;
55
+ }): DataEnricherRegistration;
56
+ /** 从 manifest 推导 label 解析策略链 */
57
+ export declare function resolveFieldLabelStrategies(fieldType: FIELD_TYPE, manifest?: FieldManifest): LabelResolveStrategy[] | undefined;
58
+ /** 按策略链解析 label */
59
+ export declare function resolveFieldLabel(strategies: LabelResolveStrategy[], ctx: LabelResolveContext): Promise<string | null | undefined>;
60
+ /** 为单个 widget 字段创建 label enricher 注册项 */
61
+ export declare function createLabelEnricher(reg: LabelEnricherOptions): DataEnricherRegistration;
62
+ export {};
@@ -0,0 +1,9 @@
1
+ import { Doc } from '../../view/Doc';
2
+ import { DataEnricherRegistration } from '../enricher-types';
3
+ /** 拿到 doc 后生成 enricher 注册项 */
4
+ type StaticLabelEnricherFactory = (doc: Doc) => DataEnricherRegistration;
5
+ /** 注册业务侧静态/定制 label enricher */
6
+ export declare function registerStaticLabelEnricher(factory: StaticLabelEnricherFactory): void;
7
+ /** 文档初始化时构建所有已注册的静态 label enricher */
8
+ export declare function buildStaticLabelEnrichers(doc: Doc): DataEnricherRegistration[];
9
+ export {};
@@ -0,0 +1,72 @@
1
+ import { EmitSource } from './emit-source';
2
+ export type PipelineLogNS = 'data.emit' | 'pipeline.hydrate' | 'pipeline.onChange' | 'pipeline.deps' | 'enricher.label' | 'enricher.hyperlink' | 'pipeline.afterFlush' | 'table.runtime' | 'init.lifecycle' | 'submit.prepare';
3
+ export type PipelineLogLevel = 'debug' | 'info' | 'warn' | 'error';
4
+ export interface PipelineLogEvent {
5
+ ns: PipelineLogNS;
6
+ level: PipelineLogLevel;
7
+ msg: string;
8
+ batchId?: string;
9
+ path?: string;
10
+ source?: EmitSource;
11
+ durationMs?: number;
12
+ meta?: Record<string, unknown>;
13
+ }
14
+ export interface PipelineLogger {
15
+ debug(msg: string, meta?: Record<string, unknown>): void;
16
+ info(msg: string, meta?: Record<string, unknown>): void;
17
+ warn(msg: string, meta?: Record<string, unknown>): void;
18
+ error(msg: string, meta?: Record<string, unknown>): void;
19
+ child(meta: Record<string, unknown>): PipelineLogger;
20
+ time(label: string): () => number;
21
+ }
22
+ interface PipelineLoggingConfig {
23
+ enabled: boolean;
24
+ level: PipelineLogLevel;
25
+ namespaces?: PipelineLogNS[];
26
+ }
27
+ /** 创建 pipeline 批次 id,用于串联同一次 flush 日志 */
28
+ export declare function createPipelineBatchId(prefix?: string): string;
29
+ /** 配置 pipeline 日志 */
30
+ export declare function configurePipelineLogging(options: Partial<PipelineLoggingConfig>): void;
31
+ /** 日志展示 来源枚举 → 中文 */
32
+ export declare function formatEmitSourceLabel(source: EmitSource): string;
33
+ export declare function truncatePipelineValue(value: unknown, maxLen?: number): unknown;
34
+ /** 单值展示(日志一行里用) */
35
+ export declare function formatPipelineValue(value: unknown): string;
36
+ export interface PipelineFieldChangeInput {
37
+ oldValue: unknown;
38
+ newValue: unknown;
39
+ source: EmitSource;
40
+ }
41
+ export interface FieldChangeLogMeta {
42
+ pathCount: number;
43
+ paths: string[];
44
+ changes: Array<{
45
+ path: string;
46
+ source: EmitSource;
47
+ old: unknown;
48
+ new: unknown;
49
+ text: string;
50
+ }>;
51
+ /** 拼进 log.msg 的简短摘要 */
52
+ brief: string;
53
+ omittedCount: number;
54
+ }
55
+ /**
56
+ * 把一批字段变更整理成 Console 可读的结构
57
+ * - brief:单条直接展示 path + 旧→新;多条展示前几条 +「等 N 项」
58
+ * - changes:展开可看每条明细
59
+ */
60
+ export declare function formatFieldChangesForLog(changedMap: Record<string, PipelineFieldChangeInput>, options?: {
61
+ maxItems?: number;
62
+ hydrateMode?: boolean;
63
+ }): FieldChangeLogMeta;
64
+ /** info 级日志附带字段明细(paths + changes + brief) */
65
+ export declare function fieldChangeLogMeta(changedMap: Record<string, PipelineFieldChangeInput>, options?: {
66
+ maxItems?: number;
67
+ hydrateMode?: boolean;
68
+ }): Record<string, unknown>;
69
+ export declare function createPipelineLogger(ns: PipelineLogNS, baseMeta?: Record<string, unknown>): PipelineLogger;
70
+ /** 开发构建默认开启 debug 级别 pipeline 日志 */
71
+ export declare function configurePipelineLoggingForDev(): void;
72
+ export {};
@@ -2,7 +2,8 @@ import { FIELD_TYPE } from '../../domain/field/field-type';
2
2
  import { FieldManifest } from '../../capabilities/field-manifest';
3
3
  import { FieldMeta } from '../../capabilities/model-field-runtime';
4
4
  import { Doc } from '../view/Doc';
5
- import { DataManager, EmitSource, FieldChangeMap } from './DataManager';
5
+ import { DataManager, FieldChangeMap } from './DataManager';
6
+ import { EmitSource } from './emit-source';
6
7
  /**
7
8
  * Pipeline 运行时上下文
8
9
  *
@@ -19,86 +20,35 @@ export type PostChangePipelineContext = {
19
20
  * 根据模型 key + 字段 key 获取字段 meta
20
21
  */
21
22
  loadFieldByKey: (modelKey: string, key: string) => Promise<FieldMeta | undefined>;
22
- /** 数据变更并完成 enrich 后的扩展钩子 */
23
+ /** 用户编辑并完成 enrich 后的业务副作用 */
23
24
  afterFlush?: (changedMap: FieldChangeMap, source: EmitSource) => void | Promise<void>;
24
25
  };
25
26
  /**
26
27
  * 数据变更后的处理流水线
27
28
  *
28
- * 主要职责:
29
- * 1. 等待依赖字段刷新完成
30
- * 2. 根据 changedPaths 找到对应 enrichers
31
- * 3. 执行 enrich 逻辑
32
- * 4. 将 enrich 结果再次写回 DataManager
33
- *
34
- * 典型场景:
35
- * - 自动填充字段
36
- * - 字段联动
37
- * - 数据增强
38
- * - 根据某字段自动计算其它字段
29
+ * 两个入口:
30
+ * - hydrate:装载/换数后激活,只跑 deps + enrichers
31
+ * - onChange:用户/依赖编辑,deps + enrichers +(仅 user)afterFlush
39
32
  */
40
33
  export declare class PostChangePipeline {
41
- /**
42
- * 数据管理器
43
- */
44
34
  private dataManager;
45
- /**
46
- * 文档实例
47
- */
48
35
  private doc;
49
- /**
50
- * 当前注册的 enrichers
51
- *
52
- * 每个 enricher:
53
- * - match(path) 判断是否处理该字段
54
- * - enrich(path, value) 生成补充数据
55
- */
56
36
  private enrichers;
57
- /**
58
- * 防止同一路径重复并发执行
59
- *
60
- * key:
61
- * path
62
- *
63
- * value:
64
- * 当前执行中的 Promise
65
- */
66
37
  private inFlight;
67
- /**
68
- * pipeline 上下文
69
- */
70
38
  private pipelineCtx?;
71
- constructor(
72
- /**
73
- * 数据管理器
74
- */
75
- dataManager: DataManager,
76
- /**
77
- * 文档实例
78
- */
79
- doc: Doc);
80
- /**
81
- * 设置 pipeline 上下文
82
- *
83
- * 设置后会重新构建 enrichers
84
- */
39
+ constructor(dataManager: DataManager, doc: Doc);
85
40
  setContext(ctx: PostChangePipelineContext): void;
86
- /**
87
- * 重建 enricher 注册列表
88
- *
89
- * 从当前文档中的 widget instances
90
- * 动态生成 enrichers
91
- */
92
41
  rebuildRegistrations(): void;
42
+ /** 装载/换数后:deps + enrichers,不触发业务副作用 */
43
+ hydrate(paths: string[]): Promise<void>;
44
+ /** 字段变更:deps + enrichers;仅 user 批次触发 afterFlush */
45
+ onChange(changedMap: FieldChangeMap, options?: {
46
+ runBusinessSideEffects?: boolean;
47
+ }): Promise<void>;
93
48
  /**
94
- * 变更后执行流水线
95
- *
96
- * @param changedMap 本批次字段变更 path → { oldValue, newValue, source }
97
- * @param source 批次级变更来源(兼容保留,单字段以 map 内 source 为准)
49
+ * @deprecated 请使用 hydrate / onChange
98
50
  */
99
51
  flush(changedMap: FieldChangeMap, source: EmitSource): Promise<void>;
100
- /**
101
- * 执行某个 path 对应的 enrichers
102
- */
52
+ private runCore;
103
53
  private runEnrichersForPath;
104
54
  }
@@ -3,5 +3,5 @@ import { LayoutContext } from '../LayoutContext';
3
3
  export declare class FieldHandler {
4
4
  static layout(context: LayoutContext, wr: WrText): void;
5
5
  /** 检验表交叉区 value_:按同行检验项 type_ 渲染,值路径固定 value_ */
6
- private static layoutCheckTableCrossValue;
6
+ private static layoutCheckTableValue;
7
7
  }
@@ -8,6 +8,13 @@ import { DataSlotIndex } from '../../../view/types';
8
8
  type ValueType = string | number | undefined | null;
9
9
  export declare class FieldBaseHandler extends RunHandlerBase {
10
10
  static hasValue(value: ValueType): boolean;
11
+ /** 将展示文案拆成逐字 run;空串 split 会得到 [],需单独处理 */
12
+ static toLayoutChars(label: unknown): string[];
13
+ /**
14
+ * 展示内容为空时补一个带 widgetMeta/valuePath 的占位 run
15
+ * 避免段落只剩默认 TextRun(isPlaceholder=true)导致 getWidgetInstances 收集不到
16
+ */
17
+ static ensureFieldWidgetAnchor(ctx: HandlerContext, layoutStyle: Partial<TextRun>, extra?: Partial<TextWidget>): void;
11
18
  static getModelRefId(context: LayoutContext, wr: WrText): string;
12
19
  static getDataSlotIndex(context: LayoutContext): DataSlotIndex | undefined;
13
20
  static getValue(ctx: HandlerContext, valuePath: string): any;
@@ -18,7 +18,7 @@
18
18
  *
19
19
  * 出入库明细等复用 repeating 存储,layout 层通过 widgetMeta.props.layoutType 区分。
20
20
  */
21
- export type SubTableRegionType = 'repeating' | 'bounded' | '2d-table' | 'check-table' | 'material-consume-table';
21
+ export type SubTableRegionType = 'repeating' | 'bounded' | '2d-table' | 'check-table' | 'material-consume-table' | 'warehouse-allocate-table';
22
22
  /** 表头 region 类型 */
23
23
  export type TableHeaderRegionType = 'table-header' | 'sub-table-header';
24
24
  /** 所有子表表格 region 类型 */
@@ -29,7 +29,7 @@ export declare const SUB_TABLE_REGION_TYPES: readonly ["repeating", "bounded", "
29
29
  * 子表 layout 类型
30
30
  * Ribbon 面板、子表主题色均使用此类型;主题配置见 @/domain/table 各 Profile.theme
31
31
  */
32
- export type SubTableLayoutType = 'dynamic-table' | 'fixed-table' | '2d-table' | 'check-table' | 'material-consume-table' | 'warehouse-in-out-table';
32
+ export type SubTableLayoutType = 'dynamic-table' | 'fixed-table' | '2d-table' | 'check-table' | 'material-consume-table' | 'warehouse-in-out-table' | 'warehouse-inventory-table' | 'warehouse-allocate-table';
33
33
  /** 表头 layout 类型 */
34
34
  export type TableHeaderLayoutType = 'table-header';
35
35
  /** 所有子表表格 layout 类型 */