@gct-paas/excel 0.1.40-beta.6 → 0.1.40-beta.8

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 (108) hide show
  1. package/dist/{BaseComponent-Dfx-Xuv4.js → BaseComponent-CELRDc47.js} +2 -2
  2. package/dist/{VueVideoPlayer-DHqhqgGs.js → VueVideoPlayer-CQ3WMohj.js} +2 -2
  3. package/dist/{align-editor-hvllGvX8.js → align-editor-BjxHuSxl.js} +1 -1
  4. package/dist/{barcode-design-CzlfYJ3s.js → barcode-design-BDHtEF3j.js} +2 -2
  5. package/dist/base/index.es.js +265 -109
  6. package/dist/{diagonal-design-DCVidBZD.js → diagonal-design-DLxRO_uM.js} +2 -2
  7. package/dist/{dynamic-table-action-Dn_iw4tV.js → dynamic-table-action-C_1EGXMe.js} +153 -148
  8. package/dist/{dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-Cz-fpECL.js → dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-B7k5famp.js} +544 -495
  9. package/dist/{edit.utils-CXmmCnxE-BUEfsAZ3.js → edit.utils-CXmmCnxE-C1w2rhHM.js} +1 -1
  10. package/dist/excel.css +16 -16
  11. package/dist/{exceljs.min-9FX7NALn.js → exceljs.min-rIUD8u2M.js} +2 -2
  12. package/dist/{font-editor-ClqMOFPr.js → font-editor-DWmzS_0C.js} +3 -3
  13. package/dist/{image-design-Cx1YIea4.js → image-design-Cjob0qMO.js} +2 -2
  14. package/dist/{index-BKnroXXX.js → index--kolAY9o.js} +3 -3
  15. package/dist/{index-mCrtpdq2.js → index-2X2QGo0A.js} +255 -85
  16. package/dist/{index-Cj_t_73x.js → index-B9a9T8if.js} +1 -1
  17. package/dist/{index-DCv60fUG.js → index-BHxDpc-C.js} +2 -2
  18. package/dist/{index-a6chYhIK.js → index-BLpDtBBv.js} +2 -2
  19. package/dist/{index-D7ZzvopL.js → index-BeYN1fxt.js} +2 -2
  20. package/dist/{index-D4zDlgqU.js → index-BgsXETEd.js} +1 -1
  21. package/dist/{index-lf11EIvP.js → index-BlLeFC1A.js} +2 -2
  22. package/dist/{index-DkXBzlUL.js → index-Bn5H-iFV.js} +2 -2
  23. package/dist/{index-Dp2q7ZPo.js → index-Bw67kX4Y.js} +2 -2
  24. package/dist/{index-BkoKoZbl.js → index-ByeVrxVl.js} +1 -1
  25. package/dist/{index-BjSWHyj1.js → index-BzBMhjxB.js} +1 -1
  26. package/dist/{index-BRc6frrP.js → index-C-F1u_o7.js} +2 -2
  27. package/dist/{index-BLrixMsM.js → index-CAekmaIN.js} +2 -2
  28. package/dist/{index-BgzCdSQH.js → index-CHS101Sz.js} +3 -3
  29. package/dist/{index-BWHnHAjs.js → index-CIkhaEj4.js} +1 -1
  30. package/dist/{index-NJZaG-sl.js → index-CQ0BwWRP.js} +2 -2
  31. package/dist/{index-CVG3Z6rp.js → index-CQkWk_7M.js} +3 -3
  32. package/dist/{index-CjCFTTI3.js → index-CfyXGhk3.js} +1 -1
  33. package/dist/{index-BM1sPB29.js → index-Cn2_Yd7q.js} +1 -1
  34. package/dist/{index-DYyVGkv3.js → index-DJj0H4QE.js} +2 -2
  35. package/dist/{index-Cl_94fZQ.js → index-DMOi4nAC.js} +2 -2
  36. package/dist/{index-B9xwdsWY.js → index-DQNLZ671.js} +4 -4
  37. package/dist/{index-CG5LAGQp.js → index-DdxuhIJY.js} +2 -2
  38. package/dist/{index-NqYSNDX9.js → index-DiNxihKr.js} +2 -2
  39. package/dist/{index-Dru8lW-_.js → index-DqomTxsG.js} +1 -1
  40. package/dist/{index-CcB9d0A-.js → index-DxW-5l6p.js} +2 -2
  41. package/dist/{index-B3KkYxiX.js → index-DxaR4DCk.js} +2 -2
  42. package/dist/{index-CWjwF2wn.js → index-LOpDQbHn.js} +2 -2
  43. package/dist/{index-COmm7d4j.js → index-RV5ozdPP.js} +1 -1
  44. package/dist/{index-q_pMlfx9.js → index-Refavqkv.js} +3 -3
  45. package/dist/{index-vEKEZcff.js → index-U90xa0_k.js} +2 -2
  46. package/dist/{index-B4c_0M_d.js → index-nGGsFW_9.js} +2 -2
  47. package/dist/{index-BdYI71iy.js → index-poil0x4K.js} +2 -2
  48. package/dist/{index-CyPwg8fV.js → index-w6agN1-G.js} +1 -1
  49. package/dist/index.es.js +2 -2
  50. package/dist/{mb-render-DjSdDuaL.js → mb-render-wAlqnYW9.js} +1 -1
  51. package/dist/{online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-QrM7rL99.js → online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-BLEHWjXh.js} +1 -1
  52. package/dist/{pagination-design-DJEw5vlL.js → pagination-design-CuM2_cOO.js} +2 -2
  53. package/dist/paper-widget-design-OVR0zocz.js +4 -0
  54. package/dist/{print-runtime-instance-BtxZfq51.js → print-runtime-instance-xGsbD9K-.js} +1 -1
  55. package/dist/{print-snapshot-renderer-0D5MUsR6.js → print-snapshot-renderer-DYUY1xCI.js} +3 -3
  56. package/dist/{qrcode-design-9jPH-S8z.js → qrcode-design-CO631M71.js} +1 -1
  57. package/dist/{revo-grid.entry-BhCFcCVS.js → revo-grid.entry-B7SWMhl1.js} +1 -1
  58. package/dist/{revogr-attribution_7.entry-icpuI3V8.js → revogr-attribution_7.entry-BkqynH6l.js} +3 -3
  59. package/dist/{revogr-clipboard_3.entry-Dm2_h2RL.js → revogr-clipboard_3.entry-DAHR-Vx9.js} +2 -2
  60. package/dist/{revogr-data_4.entry-DlVEyI7J.js → revogr-data_4.entry-CVh6lcCy.js} +2 -2
  61. package/dist/{revogr-filter-panel.entry-MJr7PMnd.js → revogr-filter-panel.entry-BBhV4Xqa.js} +1 -1
  62. package/dist/seal-design-BnXd0buM.js +4 -0
  63. package/dist/{serialnumber-design-BsfJH6Kp.js → serialnumber-design-DxGYVdk3.js} +1 -1
  64. package/dist/shared/index.es.js +9 -9
  65. package/dist/{single-field-drop-DXjppxDh.js → single-field-drop-DpHqYP0Z.js} +2 -2
  66. package/dist/{size-editor-DzQdRb-7.js → size-editor-D0jQ3Lrf.js} +1 -1
  67. package/dist/src/domain/document-business/business/product-release/profile.d.ts +2 -0
  68. package/dist/src/domain/document-business/business/product-release/service.d.ts +2 -0
  69. package/dist/src/domain/document-business/index.d.ts +2 -0
  70. package/dist/src/domain/document-business/registry.d.ts +2 -0
  71. package/dist/src/domain/document-business/runtime/field-query-runtime.d.ts +4 -0
  72. package/dist/src/domain/document-business/types.d.ts +24 -0
  73. package/dist/src/domain/field/number/product-release-qty-manifest.d.ts +2 -0
  74. package/dist/src/domain/field/query-filter.d.ts +15 -0
  75. package/dist/src/domain/table/business/material/material-substitution/profile/field-keys.d.ts +13 -11
  76. package/dist/src/domain/table/business/material/material-substitution/runtime/select-loaders.d.ts +8 -0
  77. package/dist/src/nocode-base/src/core/sub-table/profile-driven-sub-table-core.d.ts +3 -3
  78. package/dist/src/nocode-base/src/hooks/material-consume-object/bom-validator.d.ts +4 -3
  79. package/dist/src/nocode-base/src/hooks/material-consume-object/object-validation-controller.d.ts +24 -0
  80. package/dist/src/nocode-base/src/hooks/render-page/initialize-runtime.d.ts +1 -0
  81. package/dist/src/nocode-base/src/hooks/useRenderPageFactory.d.ts +3 -0
  82. package/dist/src/nocode-base/src/interface/ref-loader.d.ts +12 -1
  83. package/dist/src/nocode-base/src/types/common/base.d.ts +2 -0
  84. package/dist/src/online-form/src/views/__cell_widgets__/common/display-fields-editor/display-fields.util.d.ts +2 -2
  85. package/dist/src/online-form/src/views/designer/constants/index.d.ts +1 -0
  86. package/dist/src/shared/enum/field-type.d.ts +7 -0
  87. package/dist/src/shared/utils/withRequestCache.d.ts +27 -0
  88. package/dist/{sub-table-factory-Ddx70uYs.js → sub-table-factory-dhsoO5eF.js} +194 -85
  89. package/dist/{text-design-DmLrMqdk.js → text-design-CCJVszh9.js} +2 -2
  90. package/dist/{throttle-Cpk1LoGk-DLVGpnFw.js → throttle-Cpk1LoGk-D7Z-44El.js} +1 -1
  91. package/dist/{timediff-design-CYqz1SKQ.js → timediff-design-DE0Lb5-J.js} +1 -1
  92. package/dist/{trace-like-wrapper-CVl0Vm8r.js → trace-like-wrapper-u1qMVyxo.js} +2 -2
  93. package/dist/{value-editor.vue_vue_type_style_index_0_lang-B0aWEk5D.js → value-editor.vue_vue_type_style_index_0_lang-BDK70sFY.js} +2 -2
  94. package/dist/web-render/index.es.js +3 -3
  95. package/dist/{widget-barcode-DwYihxgd.js → widget-barcode-BiqBkpJf.js} +4 -4
  96. package/dist/{widget-diagonal-DWdxDYVl.js → widget-diagonal-DEPOR_xL.js} +3 -3
  97. package/dist/{widget-image-D1SXIbMU.js → widget-image-CT0b6oE3.js} +5 -5
  98. package/dist/{widget-line-BNTbSFkx.js → widget-line-CencIyCA.js} +2 -2
  99. package/dist/{widget-pagination-25CKNe-i.js → widget-pagination-CLokA4N9.js} +5 -5
  100. package/dist/{widget-power-BSjWdgM3.js → widget-power-BPxteor_.js} +3 -3
  101. package/dist/{widget-qrcode-Kbe9Skrd.js → widget-qrcode-gYHAR233.js} +3 -3
  102. package/dist/{widget-rangelimit-TWPoG8DX.js → widget-rangelimit-BJKYDkcT.js} +3 -3
  103. package/dist/{widget-serialnumber-uNkQzBIT.js → widget-serialnumber-BCPB7hqo.js} +1 -1
  104. package/dist/{widget-text-DH4r60jo.js → widget-text-D_CGo-mQ.js} +5 -5
  105. package/dist/{widget-timediff-Bv8VCgrv.js → widget-timediff-cBekBImJ.js} +2 -2
  106. package/package.json +1 -1
  107. package/dist/paper-widget-design-C3rm4SzP.js +0 -4
  108. package/dist/seal-design-CtzWGxnH.js +0 -4
@@ -1,5 +1,5 @@
1
- import { aJ, aF, u, cL, I, aK, aL, cM, au, aw, F, Y, ag, H, aE, bo, a$, cN, av, T, cO, X, W, bp, aa, V } from "../dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-Cz-fpECL.js";
2
- import { O, _, P, S, V as V2 } from "../online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-QrM7rL99.js";
1
+ import { aJ, aF, u, cM, I, aK, aL, cN, au, aw, F, Y, ag, H, aE, bp, b0, cO, av, T, cP, X, W, bq, aa, V } from "../dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-B7k5famp.js";
2
+ import { O, _, P, S, V as V2 } from "../online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-BLEHWjXh.js";
3
3
  var Platform = /* @__PURE__ */ ((Platform2) => {
4
4
  Platform2["WEB"] = "web";
5
5
  Platform2["MOBILE"] = "mobile";
@@ -57,11 +57,11 @@ export {
57
57
  ButtonStyle,
58
58
  ButtonType,
59
59
  ButtonType_vant,
60
- cL as CardControlEnum,
60
+ cM as CardControlEnum,
61
61
  I as CreateType,
62
62
  aK as Dependency_ENUM,
63
63
  aL as EntityModelCategoryEnum,
64
- cM as EntityModelTypeEnum,
64
+ cN as EntityModelTypeEnum,
65
65
  au as ExpressionModeEnum,
66
66
  aw as ExpressionTabEnum,
67
67
  F as FIELD_TYPE,
@@ -69,23 +69,23 @@ export {
69
69
  ag as FieldIconMap,
70
70
  H as FieldTypeToJs,
71
71
  aE as FormDesignEnum,
72
- bo as FormulaRuleFieldKeyEnum,
72
+ bp as FormulaRuleFieldKeyEnum,
73
73
  GctMqttTopsEnum,
74
74
  O as OnlineFormModelModal,
75
75
  _ as OnlineFormModelSelect,
76
76
  Platform,
77
77
  P as ProductTypeEnum,
78
- a$ as ProductionIdentificationTypeEnum,
79
- cN as RecordNoGenerateEnum,
78
+ b0 as ProductionIdentificationTypeEnum,
79
+ cO as RecordNoGenerateEnum,
80
80
  av as ReturnTypeEnum,
81
81
  S as SEARCH_SEVICE,
82
82
  SignatureTypeEnum,
83
83
  T as TRACE_FIELD_TYPES,
84
- cO as TagTypeEnum,
84
+ cP as TagTypeEnum,
85
85
  X as UniqueConstraintType,
86
86
  V2 as VersionSelect,
87
87
  W as WAREHOUSE_FIELD_TYPES,
88
- bp as formulaRuleFieldDict,
88
+ bq as formulaRuleFieldDict,
89
89
  aa as normalizeFieldType,
90
90
  V as onlineFormMasterModelTypeEnum
91
91
  };
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, openBlock, createBlock, unref, normalizeClass } from "vue";
2
2
  import { a as useNamespace } from "./AntdIcon-DCIaV352.js";
3
- import { m as useDrop, T as TransferType, h as useModelFields, o as getFieldIcon, S as SingleDrop } from "./index-mCrtpdq2.js";
4
- import { a9 as _export_sfc } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-Cz-fpECL.js";
3
+ import { m as useDrop, T as TransferType, h as useModelFields, o as getFieldIcon, S as SingleDrop } from "./index-2X2QGo0A.js";
4
+ import { a9 as _export_sfc } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-B7k5famp.js";
5
5
  const _sfc_main = /* @__PURE__ */ defineComponent({
6
6
  __name: "single-field-drop",
7
7
  props: {
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, computed, resolveComponent, openBlock, createElementBlock, createElementVNode, toDisplayString, createVNode } from "vue";
2
- import { a9 as _export_sfc } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-Cz-fpECL.js";
2
+ import { a9 as _export_sfc } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-B7k5famp.js";
3
3
  const _hoisted_1 = { class: "row" };
4
4
  const _hoisted_2 = { class: "row mt-6px" };
5
5
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -0,0 +1,2 @@
1
+ import { DocumentBusinessProfile } from '../../types';
2
+ export declare const productReleaseProfile: DocumentBusinessProfile;
@@ -0,0 +1,2 @@
1
+ /** 查询共线生产批下的全部批次;请求失败交由 Runtime 处理,不作为空结果缓存。 */
2
+ export declare function fetchCollinearContainerIds(containerId: string): Promise<string[]>;
@@ -0,0 +1,2 @@
1
+ export { resolveBusinessFieldFilters } from './runtime/field-query-runtime';
2
+ export type { BusinessFieldQueryContext, BusinessFieldQueryRule, DocumentBusinessProfile, } from './types';
@@ -0,0 +1,2 @@
1
+ import { DocumentBusinessProfile } from './types';
2
+ export declare function getDocumentBusinessProfile(businessType: string | undefined): DocumentBusinessProfile | undefined;
@@ -0,0 +1,4 @@
1
+ import { FieldQueryFilter } from '../../field/query-filter';
2
+ import { BusinessFieldQueryContext } from '../types';
3
+ /** 按业务场景与字段匹配规则;规则失败时保留原查询,失败结果不进入缓存。 */
4
+ export declare function resolveBusinessFieldFilters(context: BusinessFieldQueryContext): Promise<FieldQueryFilter[]>;
@@ -0,0 +1,24 @@
1
+ import { FIELD_TYPE } from '../../shared/enum';
2
+ import { FieldQueryFilter } from '../field/query-filter';
3
+ /** detail 业务类型、实例参数与当前查询字段;业务规则无需依赖组件。 */
4
+ export interface BusinessFieldQueryContext {
5
+ businessType?: string;
6
+ paramsConfig: Readonly<Record<string, unknown>>;
7
+ fieldType?: string;
8
+ }
9
+ export interface BusinessFieldQueryRule {
10
+ id: string;
11
+ match: {
12
+ fieldType: FIELD_TYPE;
13
+ };
14
+ /** 声明结果缓存的依赖参数,由 Runtime 统一执行缓存和请求去重。 */
15
+ cache?: {
16
+ key: (context: BusinessFieldQueryContext) => unknown;
17
+ ttlMs?: number;
18
+ };
19
+ resolveFilters: (context: BusinessFieldQueryContext) => Promise<readonly FieldQueryFilter[]>;
20
+ }
21
+ export interface DocumentBusinessProfile {
22
+ businessType: string;
23
+ fieldQueries: readonly BusinessFieldQueryRule[];
24
+ }
@@ -0,0 +1,2 @@
1
+ import { FieldMainSetItem } from '../types';
2
+ export declare const manifest: FieldMainSetItem;
@@ -0,0 +1,15 @@
1
+ /** 下拉接口使用的查询结构,与渲染组件解耦。 */
2
+ export interface FieldQuery {
3
+ queryData?: Record<string, unknown>;
4
+ exp?: string;
5
+ }
6
+ /** 空 values 明确表示无候选,空条件列表表示不追加过滤。 */
7
+ export interface FieldQueryFilter {
8
+ field: string;
9
+ operator: 'in';
10
+ values: readonly string[];
11
+ }
12
+ /** 空 in 可能被接口视为不筛选,使用占位值表达无候选。 */
13
+ export declare const EMPTY_QUERY_VALUE = "__excel_no_matching_query_value__";
14
+ /** 附加条件统一按 AND 合并;同字段 IN 条件取交集,保留已有搜索表达式。 */
15
+ export declare function mergeQueryFilters(query: FieldQuery, filters: readonly FieldQueryFilter[]): FieldQuery;
@@ -30,6 +30,8 @@ export declare const F: {
30
30
  readonly targetMaterialNoLb: "target_material_no__lb_";
31
31
  /** 替换物料 */
32
32
  readonly targetProduct: "target_product_id_";
33
+ /** 替换物料展示值 */
34
+ readonly targetProductLb: "target_product_id__lb_";
33
35
  /** 替换物料名称 */
34
36
  readonly targetProductName: "target_product_id_name_";
35
37
  /** 替换物料编码 */
@@ -44,7 +46,7 @@ export type MaterialSubstitutionFieldKey = (typeof F)[keyof typeof F];
44
46
  export declare const DISABLED_INPUT_FIELDS: readonly ["source_material_no_", "source_product_id_name_", "source_product_id_code_", "source_product_id_spec_", "source_qty_consumed_", "target_product_id_name_", "target_product_id_code_", "target_product_id_spec_"];
45
47
  export declare const CLEAR_ON_SOURCE_PRODUCT_EMPTY: readonly ["source_material_no_", "source_material_no__lb_", "source_product_id__lb_", "source_product_id_name_", "source_product_id_code_", "source_product_id_spec_", "source_qty_consumed_"];
46
48
  /** 替换物料批号清空 / 手输时需清空的物料字段 */
47
- export declare const CLEAR_ON_TARGET_MATERIAL_NO_EMPTY: readonly ["target_product_id_name_", "target_product_id_code_", "target_product_id_spec_"];
49
+ export declare const CLEAR_ON_TARGET_MATERIAL_NO_EMPTY: readonly ["target_product_id_", "target_product_id__lb_", "target_product_id_name_", "target_product_id_code_", "target_product_id_spec_"];
48
50
  /** 历史消耗选项 → 被替换物料行字段 */
49
51
  export declare const FILL_FROM_SOURCE_PRODUCT_OPTION: readonly [{
50
52
  readonly optionField: "material_name_";
@@ -69,6 +71,10 @@ export declare const FILL_FROM_SOURCE_PRODUCT_OPTION: readonly [{
69
71
  }];
70
72
  /** 替换物料批号选项 → 替换物料信息 */
71
73
  export declare const FILL_FROM_TARGET_MATERIAL_NO_OPTION: readonly [{
74
+ readonly optionField: "product_id_";
75
+ readonly toField: "target_product_id_";
76
+ readonly name: "物料";
77
+ }, {
72
78
  readonly optionField: "product_id_name_";
73
79
  readonly toField: "target_product_id_name_";
74
80
  readonly name: "物料名称";
@@ -83,27 +89,23 @@ export declare const FILL_FROM_TARGET_MATERIAL_NO_OPTION: readonly [{
83
89
  }];
84
90
  /** SN / 工序不影响扫码结果能否复用当前空行。 */
85
91
  export declare const SCAN_ROW_CONTENT_FIELDS: readonly ["source_material_no_", "source_product_id_", "target_material_no_", "target_product_id_"];
86
- /** 历史消耗选项 → 替换物料行字段 */
92
+ /** LOT/SN 选项 → 替换物料行字段;替换数量保留用户输入。 */
87
93
  export declare const FILL_FROM_TARGET_PRODUCT_OPTION: readonly [{
88
- readonly optionField: "material_name_";
94
+ readonly optionField: "name_";
89
95
  readonly toField: "target_material_no_";
90
96
  readonly name: "物料批号";
91
97
  }, {
92
- readonly optionField: "product_id_.name_";
98
+ readonly optionField: "product_id_name_";
93
99
  readonly toField: "target_product_id_name_";
94
100
  readonly name: "物料名称";
95
101
  }, {
96
- readonly optionField: "product_id_.code_";
102
+ readonly optionField: "product_id_code_";
97
103
  readonly toField: "target_product_id_code_";
98
104
  readonly name: "物料编码";
99
105
  }, {
100
- readonly optionField: "product_id_.spec_";
106
+ readonly optionField: "product_id_spec_";
101
107
  readonly toField: "target_product_id_spec_";
102
108
  readonly name: "物料规格";
103
- }, {
104
- readonly optionField: "qty_consumed_";
105
- readonly toField: "target_qty_consumed_";
106
- readonly name: "已消耗数量";
107
109
  }];
108
110
  /** 替换物料清空时同步清除批次、物料信息和数量。 */
109
- export declare const CLEAR_ON_TARGET_PRODUCT_EMPTY: readonly ["target_material_no_", "target_material_no__id_", "target_material_no__lb_", "target_product_id_name_", "target_product_id_code_", "target_product_id_spec_", "target_qty_consumed_"];
111
+ export declare const CLEAR_ON_TARGET_PRODUCT_EMPTY: readonly ["target_product_id__lb_", "target_material_no_", "target_material_no__id_", "target_material_no__lb_", "target_product_id_name_", "target_product_id_code_", "target_product_id_spec_", "target_qty_consumed_"];
@@ -0,0 +1,8 @@
1
+ import { RefCustomLoader } from '../../../../../../nocode-base/src/interface/ref-loader';
2
+ export declare function flattenMaterialConsumeRecord(item: Record<string, any>): Record<string, any>;
3
+ /** 同一条选中记录的批次名称、ID 和展示名必须一起回填。 */
4
+ export declare function buildTargetMaterialSelectionPatch(record: Record<string, any>): Record<string, unknown>;
5
+ /** 历史消耗只使用当前行生产 SN,未选、LOT 或无法确认类型时阻断查询。 */
6
+ export declare function createMaterialConsumeHistoryLoader(rowData: Record<string, any>, fieldName?: string): RefCustomLoader;
7
+ /** 替换料从 LOT/SN 选择,保存产品 ID,批次身份由行内批号字段保存。 */
8
+ export declare function createTargetMaterialLoader(rowData: Record<string, any>): RefCustomLoader;
@@ -80,9 +80,9 @@ export declare class MaterialRequisitionTableCore extends ProfileDrivenSubTableC
80
80
  }
81
81
  /**
82
82
  * 物料替换表 Core
83
- * - 原物料和替换料均从历史消耗中选择,并按当前 SN / 工序过滤
84
- * - 选择后回填对应批号、物料信息和消耗数量
85
- * - 替换物料批号回填替换物料信息
83
+ * - 被替换物料从当前行生产 SN 的历史消耗中选择,可按行内工序过滤
84
+ * - 替换物料从 LOT/SN 中选择,回填批次和物料信息,保留替换数量
85
+ * - 替换物料批号回填替换物料及其信息
86
86
  * - 条码映射结果优先填充空行,否则追加新行
87
87
  */
88
88
  export declare class MaterialSubstitutionTableCore extends ProfileDrivenSubTableCore {
@@ -62,9 +62,10 @@ export declare function getObjectBomMaterialLotQuery(opts: {
62
62
  } | null;
63
63
  /**
64
64
  * 表单提交:校验所有物料消耗对象(失败打在对应单元格,收集全部错误)
65
- * - 记录模式 / 人为指定 / 无配置:不校 BOM
66
- * - 未开人为指定:有物料则必须在实例 BOM 中
67
- * - 数量为空留给字段必填;有值且开了数量校验才校数量 vs 需求数量
65
+ * - 物料范围:无配置 / 人为指定 / 记录模式,不校验物料是否属于 BOM
66
+ * - 记录模式:仅开启人为指定时,继续执行数量校验
67
+ * - BOM 模式未开人为指定:有物料则必须在实例 BOM 中
68
+ * - 数量与需求数量均有值、非查看类型且开启数量校验时,执行数量规则
68
69
  * - 人为指定:用 objectBom.entries_[0];否则用 bomEntries 中与对象物料匹配的明细
69
70
  */
70
71
  export declare function validateObjectBomQtyOnSubmit(opts: {
@@ -0,0 +1,24 @@
1
+ import { IBasicInfoItem, ValidateFieldErrorMap } from '../../types';
2
+ import { RuntimeInstanceRecord } from '../../runtime';
3
+ type Options = {
4
+ record: RuntimeInstanceRecord;
5
+ getInfo(): IBasicInfoItem | undefined;
6
+ isCurrent(): boolean;
7
+ shouldSkip(): boolean;
8
+ applyComments(fields: ValidateFieldErrorMap): void;
9
+ };
10
+ type Result = {
11
+ isValid: boolean;
12
+ fields?: ValidateFieldErrorMap;
13
+ };
14
+ /** 实例级对象错误展示与刷新;数据变化由已有 Store 订阅传入。 */
15
+ export declare function createMaterialConsumeObjectValidation(options: Options): {
16
+ validate: (live?: boolean) => Promise<Result | undefined>;
17
+ requestLive: () => void;
18
+ replaceTableFields: (fields?: ValidateFieldErrorMap) => void;
19
+ clear: () => void;
20
+ beginSubmit(): void;
21
+ endSubmit(): void;
22
+ dispose(): void;
23
+ };
24
+ export {};
@@ -41,6 +41,7 @@ export declare function createRuntimeInstanceInitializer(props: IProps, payload:
41
41
  productSearchFields: string;
42
42
  showPrintFieldBg: any;
43
43
  paramsConfig: Record<string, any> | undefined;
44
+ businessType: any;
44
45
  instanceStatus: any;
45
46
  };
46
47
  selfInfo: RuntimeSelfInfo;
@@ -87,6 +87,7 @@ export declare function useRenderPageFactory(props: IProps, payload: IPayload):
87
87
  renderPurpose?: "print" | "pdf" | undefined;
88
88
  showPrintFieldBg?: boolean | undefined;
89
89
  paramsConfig?: Record<string, any> | undefined;
90
+ businessType?: string | undefined;
90
91
  instanceStatus?: string | undefined;
91
92
  }[], IBasicInfoItem[] | {
92
93
  key: string;
@@ -129,6 +130,7 @@ export declare function useRenderPageFactory(props: IProps, payload: IPayload):
129
130
  renderPurpose?: "print" | "pdf" | undefined;
130
131
  showPrintFieldBg?: boolean | undefined;
131
132
  paramsConfig?: Record<string, any> | undefined;
133
+ businessType?: string | undefined;
132
134
  instanceStatus?: string | undefined;
133
135
  }[]>;
134
136
  selfInfoList: import('vue').Ref<{
@@ -196,6 +198,7 @@ export declare function useRenderPageFactory(props: IProps, payload: IPayload):
196
198
  renderPurpose?: "print" | "pdf" | undefined;
197
199
  showPrintFieldBg?: boolean | undefined;
198
200
  paramsConfig?: Record<string, any> | undefined;
201
+ businessType?: string | undefined;
199
202
  instanceStatus?: string | undefined;
200
203
  } | undefined;
201
204
  updateRenderModeType: (uniqueId: string, mode: import('..').RenderModeEnum, updateButton?: boolean) => Promise<void>;
@@ -34,7 +34,18 @@ export type RefCustomLoaderRawResult = RefLoaderNormalizedResult | {
34
34
  dict?: any;
35
35
  pageSize?: number;
36
36
  } | any[];
37
- export type RefCustomLoader = (params: RefCustomLoaderParams) => Promise<RefCustomLoaderRawResult>;
37
+ export type RefCustomLoader = ((params: RefCustomLoaderParams) => Promise<RefCustomLoaderRawResult>) & {
38
+ /** 下拉展开前校验;未通过时由字段组件弹出 message 并阻止展开。 */
39
+ beforeOpen?: () => Promise<{
40
+ allowed: boolean;
41
+ message?: string;
42
+ }>;
43
+ /** 选项关联同一物料时,仍按批次等独立身份高亮。 */
44
+ getSelectedKey?: () => string | undefined;
45
+ getOptionKey?: (option: RefLoaderNormalizedResult['options'][number]) => string;
46
+ /** 选中后立即与主字段一起回填的关联数据。 */
47
+ getSelectionPatch?: (record: Record<string, any>) => Record<string, unknown>;
48
+ };
38
49
  /** 从 queryData 中提取快捷搜索关键字 */
39
50
  export declare function extractKeywordFromQueryData(queryData?: Record<string, any>): any;
40
51
  /** 将自定义数据源返回值标准化为 ref 组件消费结构 */
@@ -377,6 +377,8 @@ export interface IBasicInfoItem {
377
377
  showPrintFieldBg?: boolean;
378
378
  /** 填报入参(selfInfo.params + paramExtraProps) */
379
379
  paramsConfig?: Record<string, any>;
380
+ /** detail 返回的单据业务类型,供业务字段查询匹配场景。 */
381
+ businessType?: string;
380
382
  /** 实例状态 */
381
383
  instanceStatus?: string;
382
384
  }
@@ -5,13 +5,13 @@ export interface IDisplayField {
5
5
  _dfUnremovable?: boolean;
6
6
  [key: string]: any;
7
7
  }
8
- /** 支持显示字段配置的普通字段不再预置显示列。 */
8
+ /** 物料字段的设计端默认显示列。 */
9
9
  export declare const DEFAULT_DISPLAY_FIELDS_MAP: Record<string, string[]>;
10
10
  interface DefaultDisplayFieldConfig {
11
11
  keys: string[];
12
12
  unremovableKeys: string[];
13
13
  }
14
- export declare const getDefaultDisplayFieldConfig: (_fieldType?: string) => DefaultDisplayFieldConfig;
14
+ export declare const getDefaultDisplayFieldConfig: (fieldType?: string) => DefaultDisplayFieldConfig;
15
15
  /** 仅保留设备及批次类字段从历史搜索配置初始化显示列的行为。 */
16
16
  export declare const retainsLegacyDisplayFields: (fieldType?: string) => boolean;
17
17
  export declare function getDisplayFieldKey(item?: {
@@ -82,6 +82,7 @@ export declare const FieldTypeToCellWidgetMap: {
82
82
  scrap_material_no: CellWidgetCategory;
83
83
  destructive_test_qty: CellWidgetCategory;
84
84
  product_check_qty: CellWidgetCategory;
85
+ product_release_qty: CellWidgetCategory;
85
86
  material_check_qty: CellWidgetCategory;
86
87
  inspection_qty: CellWidgetCategory;
87
88
  inspection_module_qty: CellWidgetCategory;
@@ -327,6 +327,10 @@ export declare enum FIELD_TYPE {
327
327
  * 产品检验数量
328
328
  */
329
329
  PRODUCT_CHECK_QTY = "product_check_qty",
330
+ /**
331
+ * 放行数量
332
+ */
333
+ PRODUCT_RELEASE_QTY = "product_release_qty",
330
334
  /**
331
335
  * 材料检验数量
332
336
  */
@@ -568,6 +572,7 @@ export declare const FieldIconMap: {
568
572
  scrap_material_no: string;
569
573
  destructive_test_qty: string;
570
574
  product_check_qty: string;
575
+ product_release_qty: string;
571
576
  material_check_qty: string;
572
577
  inspection_qty: string;
573
578
  inspection_module_qty: string;
@@ -581,6 +586,8 @@ export declare const FieldIconMap: {
581
586
  qty_required: string;
582
587
  qty_consumed: string;
583
588
  qty: string;
589
+ object_type: string;
590
+ material_consume: string;
584
591
  model_relation: string;
585
592
  external_reference_no: string;
586
593
  warehouse: string;
@@ -0,0 +1,27 @@
1
+ type RequestFn<TParams, TResult> = (params: TParams) => Promise<TResult>;
2
+ interface CacheEntry<TResult> {
3
+ data: TResult;
4
+ expireAt: number;
5
+ }
6
+ export declare const withRequestCache: {
7
+ pendingMap: Map<string, Promise<any>>;
8
+ cacheMap: Map<string, CacheEntry<any>>;
9
+ defaultTTL: number;
10
+ /** 生成唯一 key */
11
+ getKey(url: string, params: any): string;
12
+ /**
13
+ * 处理带缓存与去重的请求
14
+ * @param url 唯一逻辑标识(非实际 API 地址)
15
+ * @param params 请求参数
16
+ * @param requestFn 实际请求函数
17
+ * @param ttl 可选,缓存有效期(毫秒)
18
+ */
19
+ handleRequest<TParams, TResult>(url: string, params: TParams, requestFn: RequestFn<TParams, TResult>, ttl?: number): Promise<TResult>;
20
+ /** 清空全部缓存 */
21
+ clearCache(): void;
22
+ /** 清空 pending 状态 */
23
+ clearPending(): void;
24
+ /** 定期清理过期缓存 */
25
+ cleanupExpiredCache(): void;
26
+ };
27
+ export {};