@gct-paas/excel 0.1.39-beta.5 → 0.1.39-beta.50

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 (141) hide show
  1. package/dist/{BaseComponent-B8_qg2he.js → BaseComponent-BUJvWlGa.js} +2 -2
  2. package/dist/{VueVideoPlayer-B-X9Kvhp.js → VueVideoPlayer-D8FyMaIo.js} +2 -2
  3. package/dist/{align-editor-1IbAiPBg.js → align-editor-CnZd9SQ2.js} +1 -1
  4. package/dist/{barcode-design-DCm1U-OU.js → barcode-design-CZfYwt7_.js} +2 -2
  5. package/dist/base/index.es.js +644 -269
  6. package/dist/{diagonal-design-DBk2s8UD.js → diagonal-design-CIU8Y2yp.js} +2 -2
  7. package/dist/{dynamic-table-action-JSevwsex.js → dynamic-table-action-DD1zKzOS.js} +1069 -365
  8. package/dist/{dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-ClcBVLO0.js → dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-bwZ-XvGB.js} +1024 -1402
  9. package/dist/{edit.utils-CXmmCnxE-88-QvdIv.js → edit.utils-CXmmCnxE-B6M7wc9T.js} +1 -1
  10. package/dist/excel.css +612 -347
  11. package/dist/{exceljs.min-M28cAz_z.js → exceljs.min-CJ903Wl8.js} +2 -2
  12. package/dist/{font-editor-nCQk5D1K.js → font-editor-DelOsrtK.js} +3 -3
  13. package/dist/{image-design-B84grap7.js → image-design-Czp9FCg8.js} +2 -2
  14. package/dist/{index-XBuNXPu0.js → index-B1hntPs8.js} +2 -2
  15. package/dist/{index-ZEwe0MJj.js → index-B5oC3UEo.js} +2 -2
  16. package/dist/{index-CBiaZr1j.js → index-B6FNe4Vb.js} +2 -2
  17. package/dist/{index-CFjE5779.js → index-BB6faESW.js} +3 -2
  18. package/dist/{index-H_BLk7PI.js → index-BDNK7vET.js} +2 -2
  19. package/dist/{index-CX6LqGJP.js → index-BH6aCDNQ.js} +1 -1
  20. package/dist/{index-DkvjFyW6.js → index-BIkbXEXo.js} +2 -2
  21. package/dist/{index-jRA6sXVY.js → index-BN7tYGxz.js} +1 -1
  22. package/dist/{index-BrkoN2-J.js → index-BZEvR4RB.js} +6 -5
  23. package/dist/{index-Co1E4H0G.js → index-BfhXiBqt.js} +2 -2
  24. package/dist/{index-tZd-Us4e.js → index-Blh6hUMV.js} +2 -2
  25. package/dist/{index-D7IBmbmp.js → index-BliFxab-.js} +2 -2
  26. package/dist/{index-BSXafKJS.js → index-Bnf2-6c3.js} +2 -2
  27. package/dist/{index-Doz8Gf_5.js → index-BzEfeZ5q.js} +1 -1
  28. package/dist/{index-CGsTW2E9.js → index-C0lsZwMP.js} +2 -2
  29. package/dist/{index-bfXiwTE7.js → index-CHkRG7hP.js} +2487 -2004
  30. package/dist/{index-DHHyy4mL.js → index-CNHEKg4J.js} +1 -1
  31. package/dist/{index-I2HpU1BP.js → index-CR0hWIUT.js} +3 -3
  32. package/dist/{index-CCsNdL4I.js → index-CR7z2-EH.js} +2 -2
  33. package/dist/{index-B53fgzJo.js → index-CWdF0QHj.js} +2 -2
  34. package/dist/{index-wcY1RYL_.js → index-Cs5yHX4a.js} +2 -2
  35. package/dist/{index-UCNknVxk.js → index-D38XWtM-.js} +1 -1
  36. package/dist/{index-DCzL4GOP.js → index-D_0_rAZw.js} +53 -5
  37. package/dist/{index-CKWcaJGI.js → index-DlAvbYfP.js} +5 -7
  38. package/dist/{index-DEN3-esb.js → index-DlqmhUPR.js} +6 -3
  39. package/dist/{index-DT87VrvR.js → index-DlyYkAON.js} +2 -2
  40. package/dist/{index-MJFci9IB.js → index-DtNhXlsx.js} +1 -1
  41. package/dist/{index-BvJ7ZgvI.js → index-DxNCoSQy.js} +2 -2
  42. package/dist/{index-D0Q-6EtG.js → index-GEvNTYZs.js} +1 -1
  43. package/dist/{index-CCp6-NXH.js → index-YJomFrkE.js} +3 -3
  44. package/dist/{index-CUHfI8cg.js → index-d4mevitw.js} +1 -1
  45. package/dist/{index-_-ORWa-m.js → index-f3SdK5BU.js} +1 -1
  46. package/dist/{index-DEl0sxMk.js → index-o892WfU2.js} +6 -5
  47. package/dist/{index-DPOE78Jf.js → index-qoXtNC9W.js} +2 -2
  48. package/dist/{index-ChncMTkv.js → index-t6ehS00B.js} +1 -1
  49. package/dist/index.es.js +2 -2
  50. package/dist/{mb-render-BZDgmpm9.js → mb-render-xzFolqdN.js} +9 -3
  51. package/dist/{online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-Ciue53Ue.js → online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-CmqZAqu1.js} +8 -1
  52. package/dist/{pagination-design-BYqVZGdA.js → pagination-design-Dop8MV9G.js} +2 -2
  53. package/dist/paper-widget-design-08DdkPnA.js +4 -0
  54. package/dist/{print-runtime-instance-D3BJGzia.js → print-runtime-instance-Cua5hUF_.js} +1 -1
  55. package/dist/{print-snapshot-renderer-MzkjvlA8.js → print-snapshot-renderer-DhWN9RW4.js} +3 -3
  56. package/dist/{qrcode-design-B0YGEijA.js → qrcode-design-BCtXtAat.js} +1 -1
  57. package/dist/{revo-grid.entry-DdE6cuGJ.js → revo-grid.entry-CyW8Da8E.js} +1 -1
  58. package/dist/{revogr-attribution_7.entry-Er1fVrov.js → revogr-attribution_7.entry-BkB6U7q_.js} +3 -3
  59. package/dist/{revogr-clipboard_3.entry-COq2SN-B.js → revogr-clipboard_3.entry-Ddigm8oN.js} +2 -2
  60. package/dist/{revogr-data_4.entry--CfGDdVK.js → revogr-data_4.entry-CTpmK1ZW.js} +2 -2
  61. package/dist/{revogr-filter-panel.entry-DoNXkBy6.js → revogr-filter-panel.entry-bP4NeSP9.js} +1 -1
  62. package/dist/seal-design-BNxXxnUL.js +4 -0
  63. package/dist/{serialnumber-design-fMRSi9jn.js → serialnumber-design-kT8DU_Tq.js} +1 -1
  64. package/dist/shared/index.es.js +23 -21
  65. package/dist/{single-field-drop-BycxT2Kf.js → single-field-drop-YItPwvI8.js} +2 -2
  66. package/dist/{size-editor-BKJfYgbR.js → size-editor-Drr9F87G.js} +1 -1
  67. package/dist/src/domain/table/business/material/material-balance/profile/fields.d.ts +2 -0
  68. package/dist/src/domain/table/business/preprocess/pretreatment-list/profile/field-keys.d.ts +1 -7
  69. package/dist/src/domain/table/business/sterilize/entrust-steril-batch-list/profile/fields.d.ts +2 -0
  70. package/dist/src/nocode-base/src/core/factory/sub-table-factory.d.ts +2 -0
  71. package/dist/src/nocode-base/src/core/sub-table/allocate-table-core.d.ts +2 -1
  72. package/dist/src/nocode-base/src/core/sub-table/sub-table-core.d.ts +2 -1
  73. package/dist/src/nocode-base/src/hooks/form-model/form-model-controller.d.ts +2 -0
  74. package/dist/src/nocode-base/src/hooks/material-consume/bom-validator.d.ts +2 -2
  75. package/dist/src/nocode-base/src/hooks/material-consume/material-consume-table-controller.d.ts +18 -14
  76. package/dist/src/nocode-base/src/hooks/material-consume/tmpl-bom-controller.d.ts +20 -7
  77. package/dist/src/nocode-base/src/hooks/material-consume/types.d.ts +2 -0
  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/initialize-autofill.d.ts +19 -0
  80. package/dist/src/nocode-base/src/hooks/material-consume-object/object-validation-controller.d.ts +24 -0
  81. package/dist/src/nocode-base/src/interface/render.d.ts +3 -1
  82. package/dist/src/nocode-base/src/interface/transform.d.ts +14 -1
  83. package/dist/src/nocode-base/src/runtime/async-task-coordinator.d.ts +6 -2
  84. package/dist/src/nocode-base/src/runtime/formula-utils.d.ts +2 -0
  85. package/dist/src/nocode-base/src/runtime/multi-sheet-runtime.d.ts +3 -1
  86. package/dist/src/nocode-base/src/runtime/runtime-context.d.ts +4 -0
  87. package/dist/src/nocode-base/src/runtime/runtime-field-initializer.d.ts +1 -1
  88. package/dist/src/nocode-base/src/runtime/runtime-form-state-store.d.ts +6 -2
  89. package/dist/src/nocode-base/src/runtime/runtime-validation-service.d.ts +1 -0
  90. package/dist/src/nocode-base/src/runtime/table-row-identity.d.ts +2 -0
  91. package/dist/src/nocode-base/src/types/render/mc-render.d.ts +1 -1
  92. package/dist/src/nocode-base/src/types/render/sub-table-render.d.ts +5 -1
  93. package/dist/src/nocode-web-render/src/render/sub-table/common/inventory-scan-columns.d.ts +6 -0
  94. package/dist/src/nocode-web-render/src/render/sub-table/material-consume/mc-web-render.d.ts +1 -1
  95. package/dist/src/online-form/src/views/__cell_widgets__/cell-widget-design.vue.d.ts +2 -0
  96. package/dist/src/online-form/src/views/__cell_widgets__/common/display-fields-editor/display-fields.util.d.ts +2 -2
  97. package/dist/src/online-form/src/views/__cell_widgets__/common/quick-search-editor/quick-search.util.d.ts +8 -0
  98. package/dist/src/online-form/src/views/__cell_widgets__/fake-field/fake-option-select.vue.d.ts +1 -0
  99. package/dist/src/online-form/src/views/designer/conversions/normalize-paper-grid.d.ts +3 -0
  100. package/dist/src/online-form/src/views/designer/hooks/useAllSpreadSheets.d.ts +23 -0
  101. package/dist/src/online-form/src/views/designer/hooks/useSpreadSheet.d.ts +9 -1
  102. package/dist/src/online-form/src/views/designer/modules/base/designer-wrapper.vue.d.ts +1 -0
  103. package/dist/src/online-form/src/views/designer/modules/duplicate-field-notice.vue.d.ts +2 -0
  104. package/dist/src/online-form/src/views/designer/modules/panel/panel-data-init-config/object-init/hooks/useObjectInit.d.ts +1 -0
  105. package/dist/src/online-form/src/views/designer/modules/panel/sub-table/comps/use-dynamic-sub-table-panel.d.ts +6 -0
  106. package/dist/src/online-form/src/views/designer/modules/xlsx-import-summary.vue.d.ts +11 -0
  107. package/dist/src/online-form/src/views/designer/types/index.d.ts +2 -0
  108. package/dist/src/online-form/src/views/designer/types/sheets.d.ts +2 -0
  109. package/dist/src/online-form/src/views/designer/utils/cell-field-placements.d.ts +12 -0
  110. package/dist/src/online-form/src/views/designer/utils/xlsx-parser.d.ts +9 -3
  111. package/dist/src/online-form/src/views/render/__components__/_field_/trace/composables/useReferenceLabel.d.ts +4 -0
  112. package/dist/src/online-form/src/views/render/__components__/_field_/trace/utils/use-rule-props.d.ts +0 -3
  113. package/dist/src/shared/enum/field-type.d.ts +2 -0
  114. package/dist/src/shared/enum/index.d.ts +2 -0
  115. package/dist/src/shared/enum/product-type.d.ts +9 -0
  116. package/dist/src/shared/enum/production-identification.d.ts +19 -0
  117. package/dist/src/shared/utils/cell-wrap.d.ts +9 -0
  118. package/dist/src/shared/utils/grid-size.d.ts +2 -0
  119. package/dist/src/shared/utils/lot2sn.d.ts +14 -1
  120. package/dist/src/shared/utils/query-filter.d.ts +24 -0
  121. package/dist/{sub-table-factory-BxG7QiiX.js → sub-table-factory-Bo2zXOND.js} +38 -18
  122. package/dist/{text-design-BQKYk7aD.js → text-design-gYIB2wsK.js} +5 -4
  123. package/dist/{throttle-Cpk1LoGk-BI0wP2Le.js → throttle-Cpk1LoGk-BR0FKbBO.js} +1 -1
  124. package/dist/{timediff-design-O1IfzLVD.js → timediff-design-D3K1m5ks.js} +1 -1
  125. package/dist/{trace-like-wrapper-CdKGpstE.js → trace-like-wrapper-BryJKIYo.js} +5 -2
  126. package/dist/{value-editor.vue_vue_type_style_index_0_lang-CCv0wmKI.js → value-editor.vue_vue_type_style_index_0_lang-CaA8tQLH.js} +2 -2
  127. package/dist/web-render/index.es.js +3 -3
  128. package/dist/{widget-barcode-CK68yjvd.js → widget-barcode-DhkLWypr.js} +4 -4
  129. package/dist/{widget-diagonal-9F-6feRM.js → widget-diagonal-BulDr3sI.js} +3 -3
  130. package/dist/{widget-image-2GcRCaIf.js → widget-image-ykQnNE7R.js} +5 -5
  131. package/dist/{widget-line-flwy9kew.js → widget-line-W6QxVu26.js} +2 -2
  132. package/dist/{widget-pagination-pxpEH1UB.js → widget-pagination-YZ4EqrKZ.js} +5 -5
  133. package/dist/{widget-power-pFQ7lwCW.js → widget-power-BNVlBaZt.js} +3 -3
  134. package/dist/{widget-qrcode-D_Ri0RG2.js → widget-qrcode-CNTsZ7Hc.js} +3 -3
  135. package/dist/{widget-rangelimit-DB97heRc.js → widget-rangelimit-CBD2VPdN.js} +3 -3
  136. package/dist/{widget-serialnumber-I35Sov0R.js → widget-serialnumber-D8pTdCZ_.js} +1 -1
  137. package/dist/{widget-text-C93W0WWM.js → widget-text-C7HTZj71.js} +5 -5
  138. package/dist/{widget-timediff-S4X81H7c.js → widget-timediff-plJKpQ66.js} +2 -2
  139. package/package.json +2 -2
  140. package/dist/paper-widget-design-BcSUNaAF.js +0 -4
  141. package/dist/seal-design-CHOawN-k.js +0 -4
@@ -1,13 +1,13 @@
1
- import { E as api, $ as PlatformEnum, F as FIELD_TYPE, bi as getRowId, bj as findRuntimeTableRow, b8 as RenderModeEnum, C as ComponentTypeEnum, bv as assembleRules, bw as isAttachFieldActive, aI as Dependency_ENUM, bk as calculateFormula, aH as ASSIGNMENTSTRATEGY_ENUM, R as getParseFormulaVarInfos, bx as fetchHistoryConsume, by as isBomGranted, aW as renderUtils, bu as uuid2, bz as parseFrontConfig, aL as CheckDsTypeEnum, aF as transformUtils, bA as baseDataUtils, bB as initializeSealFields, Y as FormTypeEnum, bC as normalizeToArray, bD as safeParseArray, bE as BpmnNodeTypeEnum, bF as mergeByMultiKey, a8 as _export_sfc, bG as evaluateInspectionDecisionRule, bH as areValidationCommentsEqual, bI as useNocodeEmitter, bJ as commonUtils, aJ as EntityModelCategoryEnum } from "../dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-ClcBVLO0.js";
2
- import { aO, aQ, a$, a1, bK, bL, B, bM, y, ai, bN, bO, bP, bh, bQ, aT, ay, aP, aM, aN, bR, aj, an, bS, bT, aG, a3, ah, az, aR, a0, al, L, bU, bV, bW, O, p, P, aa, o, Q, A, bX, bY, ax, aw, a6, a2, a4, a5, a7, f, bZ, am, aq, ak, b_, b$, c0, c1, bg, c2, c3, c4, c5, c6, c7, c8, c9, ca, cb, bl, cc, cd, aZ, ce, b0, b1, cf, cg, ch, ci, cj, ck, cl, cm, cn, co, aY, cp, b2, be, cq, cr, cs, ao, t, aS, ct, cu, bm, a_ } from "../dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-ClcBVLO0.js";
3
- import { P as getRuntimeDataFieldId, z as parseRuntimeFieldPath, Q as buildRuntimeFieldPath, T as resolveRuntimeFieldProps, U as resolveRuntimeFieldState, V as getRuntimeDependencyOutputKey, W as isRowAddedInCurrentFormChange, o as MaterialConsumptionPatternEnum, X as MaterialConsumeTableController, Y as setFormulaParamsConfig, Z as normalizeRuntime, H as createRuntimeInstanceContext, R as RuntimeFormStateStore, $ as RuntimeSheetService, g as getBusinessFieldKey, a0 as validateObjectBomQtyOnSubmit, a1 as closeValidatorPopovers, a2 as enrichFormChangeRowDetails, N as NCB_PROVIDE, I as RuntimeInstanceRegistry, a3 as useMaterialBalance, a4 as collectFormChangeFieldLocations, a5 as nextFormChangeRowViewHistoryId } from "../dynamic-table-action-JSevwsex.js";
4
- import { B as B2, a6 as a62, e, _, a7 as a72, L as L2, a8, O as O2, E, a9, aa as aa2, ab, ac, ad, M, a, ae, b, af, ag, ah as ah2, ai as ai2, aj as aj2, ak as ak2, al as al2, am as am2, w, an as an2, m, ao as ao2, c, ap, aq as aq2, ar, as, l, x, at, au, av, aw as aw2, f as f2, y as y2, d, ax as ax2, ay as ay2, az as az2, aA, aB, aC, p as p2, r, aD, q, j, aE, s, aF, C, F, u, t as t2, G, i, k, A as A2, h, v } from "../dynamic-table-action-JSevwsex.js";
1
+ import { E as api, _ as PlatformEnum, F as FIELD_TYPE, bc as getRowId, bd as findRuntimeTableRow, b5 as RenderModeEnum, C as ComponentTypeEnum, aF as Dependency_ENUM, aE as ASSIGNMENTSTRATEGY_ENUM, bn as fetchHistoryConsume, bo as isBomGranted, aT as renderUtils, bm as uuid2, bp as parseFrontConfig, aI as CheckDsTypeEnum, aC as transformUtils, bq as baseDataUtils, X as FormTypeEnum, br as normalizeToArray, bs as safeParseArray, bt as BpmnNodeTypeEnum, bu as mergeByMultiKey, a7 as _export_sfc, bv as evaluateInspectionDecisionRule, bw as useNocodeEmitter, bx as commonUtils, aG as EntityModelCategoryEnum } from "../dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-bwZ-XvGB.js";
2
+ import { aL, aN, a_, a0, by, bz, B, bA, y, af, bB, bC, bD, bb, bE, aQ, av, aM, aJ, aK, bF, ag, ak, bG, bH, aD, a2, ae, aw, aO, $, ai, L, bI, bJ, bK, O, p, P, a9, o, Q, A, bL, bM, au, at, a5, a1, a3, a4, a6, f, bN, aj, an, ah, bO, bP, bQ, bR, ba, bS, bT, bU, bV, bW, bX, bY, bZ, b_, b$, be, c0, c1, aW, c2, a$, b0, c3, c4, c5, c6, c7, c8, c9, ca, cb, cc, aV, cd, b1, b8, ce, cf, al, t, cg, aP, ch, ci, bf, aX } from "../dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-bwZ-XvGB.js";
3
+ import { a2 as getRuntimeDataFieldId, O as parseRuntimeFieldPath, a3 as buildRuntimeFieldPath, a4 as resolveRuntimeFieldProps, a5 as resolveRuntimeFieldState, a6 as assembleRules, a7 as isAttachFieldActive, P as calculateFormula, a8 as getRuntimeDependencyOutputKey, a9 as isRowAddedInCurrentFormChange, aa as resolveFormulaData, c as getParseFormulaVarInfos, w as MaterialConsumptionPatternEnum, ab as MaterialConsumeTableController, ac as setFormulaParamsConfig, ad as normalizeRuntime, V as createRuntimeInstanceContext, ae as initializeSealFields, U as RuntimeFormStateStore, af as RuntimeSheetService, g as getBusinessFieldKey, ag as validateObjectBomQtyOnSubmit, ah as areValidationCommentsEqual, ai as closeValidatorPopovers, aj as enrichFormChangeRowDetails, N as NCB_PROVIDE, W as RuntimeInstanceRegistry, ak as useMaterialBalance, al as collectFormChangeFieldLocations, am as nextFormChangeRowViewHistoryId } from "../dynamic-table-action-DD1zKzOS.js";
4
+ import { B as B2, an as an2, k, a1 as a12, ao, $ as $2, ap, a0 as a02, F, aq, ar, as, at as at2, au as au2, M, a, av as av2, b, aw as aw2, ax, ay, az, aA, aB, aC, aD as aD2, C, aE, t as t2, aF, d, aG, aH, aI, aJ as aJ2, r, E, aK as aK2, aL as aL2, aM as aM2, aN as aN2, l, G, j, aO as aO2, aP as aP2, aQ as aQ2, aR, aS, aT, aU, y as y2, v, aV as aV2, z, p as p2, aW as aW2, s, aX as aX2, R, S, u, A as A2, T, o as o2, q, Q as Q2, m, x } from "../dynamic-table-action-DD1zKzOS.js";
5
5
  import { toRaw, watch, toRef, computed, defineComponent, openBlock, createElementBlock, createElementVNode, toDisplayString, ref, provide, onUnmounted, markRaw, reactive, onBeforeUnmount } from "vue";
6
- import { cloneDeep, defaults, isEmpty, merge } from "lodash-es";
6
+ import { isEqual, cloneDeep, defaults, isEmpty, merge } from "lodash-es";
7
7
  import "dayjs";
8
- import { S as SubTableCoreFactory, R as RuntimeInstanceController } from "../sub-table-factory-BxG7QiiX.js";
9
- import { A as A3, D, M as M2, a as a10, P as P2, b as b3, c as c10, d as d2, e as e2, W, f as f3, g, h as h2 } from "../sub-table-factory-BxG7QiiX.js";
10
- import { B as B3, F as F2, M as M3, a as a11, u as u2 } from "../mb-render-BZDgmpm9.js";
8
+ import { S as SubTableCoreFactory, R as RuntimeInstanceController } from "../sub-table-factory-Bo2zXOND.js";
9
+ import { A as A3, D, M as M2, a as a7, P as P2, b as b2, c, d as d2, e, W, f as f2, g, h } from "../sub-table-factory-Bo2zXOND.js";
10
+ import { B as B3, F as F2, M as M3, a as a8, u as u2 } from "../mb-render-xzFolqdN.js";
11
11
  const InstanceStatusValues = {
12
12
  /** 作废状态 */
13
13
  ABANDON: "ABANDON",
@@ -190,7 +190,7 @@ class RuntimeFieldInitializer {
190
190
  await Promise.resolve();
191
191
  this.scheduled = false;
192
192
  if (!signal.aborted && !this.disposed) await this.initialize();
193
- }).catch((error) => console.error("业务字段初始化失败", error)).finally(() => this.tasks.delete("initialize:structure"));
193
+ }).catch(() => void 0).finally(() => this.tasks.delete("initialize:structure"));
194
194
  });
195
195
  }
196
196
  record;
@@ -203,7 +203,7 @@ class RuntimeFieldInitializer {
203
203
  disposed = false;
204
204
  scheduled = false;
205
205
  unsubscribe;
206
- /** 初次加载等待全部目标;失败保留在任务中心,不能把未完成的默认值当成可提交数据。 */
206
+ /** 初次加载等待全部目标;默认值请求失败保留在任务中心供诊断,但不阻止提交。 */
207
207
  async initialize() {
208
208
  if (this.disposed || this.info.renderPurpose || this.info.platformType === PlatformEnum.INTEGRATION_PAAS_DP)
209
209
  return;
@@ -247,7 +247,8 @@ class RuntimeFieldInitializer {
247
247
  modelKey: props.modelKey,
248
248
  subModelKey: props.subModelKey
249
249
  },
250
- sheetId
250
+ sheetId,
251
+ blockOnFailure: false
251
252
  }
252
253
  ).finally(() => this.tasks.delete(key));
253
254
  pending.push(task);
@@ -259,7 +260,7 @@ class RuntimeFieldInitializer {
259
260
  this.record.asyncTasks.cancel(key);
260
261
  this.tasks.delete(key);
261
262
  }
262
- await Promise.all(pending);
263
+ await Promise.allSettled(pending);
263
264
  }
264
265
  request(key, fetch) {
265
266
  const existing = this.requests.get(key);
@@ -384,7 +385,7 @@ function getSourceFields(record, expression, currentSubtable) {
384
385
  });
385
386
  }
386
387
  function isEmptyValue(value) {
387
- return value === void 0 || value === null || value === "";
388
+ return value === void 0 || value === null || typeof value === "string" && value.trim() === "" || Array.isArray(value) && value.length === 0;
388
389
  }
389
390
  function getRulePaths(record, props, targetFieldId, modelKey, scopeFieldId = targetFieldId) {
390
391
  const subtableField = props.subFieldKey;
@@ -690,13 +691,30 @@ class RuntimeRuleCompiler {
690
691
  const expression = assignment?.expression || props.formulaExpr;
691
692
  if (!expression || !targetFieldId) return;
692
693
  const strategy = assignment?.strategy ?? ASSIGNMENTSTRATEGY_ENUM.alwaysCover;
693
- if (!isLegacyFormula && strategy === ASSIGNMENTSTRATEGY_ENUM.notCoveredForever) {
694
- listRuntimeFieldRows(this.record, subFieldKey, scopeFieldId).forEach((target) => {
695
- const row = this.getWritableRow(target.row, props);
696
- if (isEmptyValue(row[targetFieldId])) return;
697
- const path = formState.getFieldPath(row, targetFieldId);
694
+ let assignmentStates = /* @__PURE__ */ new WeakMap();
695
+ const readInputs = (target) => cloneDeep(resolveFormulaData(expression, target.row, formState.state));
696
+ const rememberTarget = (target, inputs) => {
697
+ const row = props.isFieldModel ? target.row._OPCT : target.row;
698
+ const path = formState.getFieldPath(row ?? target.row, targetFieldId);
699
+ assignmentStates.set(toRaw(target.row), { inputs, path });
700
+ if (strategy === ASSIGNMENTSTRATEGY_ENUM.notCoveredForever && !isEmptyValue(row?.[targetFieldId]))
698
701
  formState.markUserModified(path);
699
- });
702
+ };
703
+ const resetAssignmentState = () => {
704
+ assignmentStates = /* @__PURE__ */ new WeakMap();
705
+ listRuntimeFieldRows(this.record, subFieldKey, scopeFieldId).forEach(
706
+ (target) => rememberTarget(target, readInputs(target))
707
+ );
708
+ };
709
+ if (!isLegacyFormula) {
710
+ resetAssignmentState();
711
+ this.unregisters.push(
712
+ formState.subscribe((change) => {
713
+ if (change.source !== "restore" || change.restoreScope === "fields" || change.paths.every((path) => path.endsWith("_lb_")))
714
+ return;
715
+ resetAssignmentState();
716
+ })
717
+ );
700
718
  }
701
719
  this.unregisters.push(
702
720
  dependencies.register({
@@ -705,20 +723,42 @@ class RuntimeRuleCompiler {
705
723
  sheetId,
706
724
  sourceFields: getSourceFields(this.record, expression, subFieldKey),
707
725
  structureFields,
708
- run: async (change, execution) => {
726
+ run: async (_change, execution) => {
709
727
  if (this.disposed) return;
710
- if (!isLegacyFormula && change.revision === 0 && change.source === "system") return;
711
728
  if (!this.canWriteFormulas()) return;
712
729
  const results = await Promise.all(
713
730
  listRuntimeFieldRows(this.record, subFieldKey, scopeFieldId).map(async (target) => {
714
731
  const row = this.getWritableRow(target.row, props);
715
732
  const path = formState.getFieldPath(row, targetFieldId);
716
- if (!isLegacyFormula && strategy !== ASSIGNMENTSTRATEGY_ENUM.alwaysCover && formState.isUserModified(path))
733
+ const inputs = isLegacyFormula ? void 0 : readInputs(target);
734
+ const previous = assignmentStates.get(toRaw(target.row));
735
+ if (!isLegacyFormula) {
736
+ if (!previous) rememberTarget(target);
737
+ else if (previous.path !== path && formState.isUserModified(previous.path)) {
738
+ formState.markUserModified(path);
739
+ formState.clearUserModified(previous.path);
740
+ }
741
+ }
742
+ if (!isLegacyFormula && strategy !== ASSIGNMENTSTRATEGY_ENUM.alwaysCover && formState.isUserModified(path)) {
743
+ assignmentStates.set(toRaw(target.row), { inputs, path });
744
+ return;
745
+ }
746
+ if (!isLegacyFormula && previous?.inputs && !previous.pending && isEqual(previous.inputs, inputs))
717
747
  return;
718
- const result = await calculateFormula(expression, row, formState.state);
719
- const empty = isEmptyValue(result) || typeof result === "string" && result.trim() === "" || Array.isArray(result) && result.length === 0;
748
+ if (!isLegacyFormula)
749
+ assignmentStates.set(toRaw(target.row), {
750
+ inputs: previous?.inputs,
751
+ path,
752
+ pending: true
753
+ });
754
+ const result = await calculateFormula(
755
+ expression,
756
+ isLegacyFormula ? row : target.row,
757
+ formState.state
758
+ );
759
+ const empty = isEmptyValue(result);
720
760
  const value = isLegacyFormula ? empty ? null : Number(result) : formatDateCompliance(result, props.newSpecificConfig?.mappingType);
721
- return { target, row, path, value };
761
+ return { target, row, path, value, inputs };
722
762
  })
723
763
  );
724
764
  if (!this.canWriteFormulas() || !execution.isCurrent()) return;
@@ -726,7 +766,9 @@ class RuntimeRuleCompiler {
726
766
  "formula",
727
767
  () => results.forEach((result) => {
728
768
  if (!result) return;
729
- const { target, row, path, value } = result;
769
+ const { target, row, path, value, inputs } = result;
770
+ if (!isLegacyFormula)
771
+ assignmentStates.set(toRaw(target.row), { inputs, path });
730
772
  if (!isLegacyFormula && strategy !== ASSIGNMENTSTRATEGY_ENUM.alwaysCover && formState.isUserModified(path))
731
773
  return;
732
774
  if (Object.is(row[targetFieldId], value)) return;
@@ -744,7 +786,12 @@ class RuntimeRuleCompiler {
744
786
  }
745
787
  getWritableRow(row, props) {
746
788
  if (!props.isFieldModel) return row;
747
- if (!row._OPCT) this.record.formState.setObjectField(row, "_OPCT", { _DICT: {} }, "restore");
789
+ if (!row._OPCT)
790
+ this.record.formState.transaction(
791
+ "restore",
792
+ () => this.record.formState.setObjectField(row, "_OPCT", { _DICT: {} }, "restore"),
793
+ { restoreScope: "fields" }
794
+ );
748
795
  return row._OPCT;
749
796
  }
750
797
  /** 公式变更记录也属于实例生命周期,未打开的 Sheet 不再漏记。 */
@@ -805,6 +852,10 @@ class FormTmplBomController {
805
852
  field2TableMap = {};
806
853
  /** 默认物料消耗模式 */
807
854
  defaultMCPattern = MaterialConsumptionPatternEnum.RECORD;
855
+ /** 表单实例身份与 BOM 数据是否存在无关,模板展示也会创建完整控制器。 */
856
+ hasFormInstance = false;
857
+ /** 按页面中的表解析后的配置,页面与打印共用。 */
858
+ resolvedTmplBomList = [];
808
859
  constructor() {
809
860
  }
810
861
  /**
@@ -822,7 +873,9 @@ class FormTmplBomController {
822
873
  productQty: this.productQty,
823
874
  historyData: this.historyData,
824
875
  field2TableMap: this.field2TableMap,
825
- defaultMCPattern: this.defaultMCPattern
876
+ defaultMCPattern: this.defaultMCPattern,
877
+ hasFormInstance: this.hasFormInstance,
878
+ resolvedTmplBomList: this.resolvedTmplBomList
826
879
  })
827
880
  );
828
881
  (view.tmplBomList ?? []).forEach((config) => {
@@ -874,11 +927,11 @@ class FormTmplBomController {
874
927
  * @readonly
875
928
  */
876
929
  get bomEntries() {
877
- return this.formInstBom?.bomEntries;
930
+ return this.formInstBom?.bomEntries ?? [];
878
931
  }
879
932
  /** 表单模板bom信息配置列表 */
880
933
  get tmplBomList() {
881
- return this.formInstBom?.formTmplBomList;
934
+ return this.resolvedTmplBomList;
882
935
  }
883
936
  /**
884
937
  * bom那边指定的当前工序的开关
@@ -887,30 +940,55 @@ class FormTmplBomController {
887
940
  get enableSequenceLoading() {
888
941
  return !!this.formInstBom?.sequenceEntries?.[0]?.enabled_;
889
942
  }
890
- /**
891
- * 初始化模板的物料消耗的配置
892
- */
943
+ createDefaultConfig(table) {
944
+ return {
945
+ table_key_: `${table.tableKey}:${table.masterSubField}`,
946
+ material_loading_model_enabled_: false,
947
+ material_consumption_pattern_: MaterialConsumptionPatternEnum.RECORD,
948
+ bom_init_enabled_: false,
949
+ personal_bom_enabled_: false,
950
+ sequence_loading_enabled_: false,
951
+ entries_: []
952
+ };
953
+ }
954
+ /** 有实例时读取实例配置,无实例时仅创建默认展示控制器。 */
893
955
  async init(data) {
894
- if (!data.formInstBom) {
895
- return;
956
+ this.hasFormInstance = data.hasFormInstance;
957
+ this.operationId = data.operationId ?? "";
958
+ this.materialNo = data.materialNo ?? "";
959
+ this.formInstBom = this.hasFormInstance ? data.formInstBom ?? null : null;
960
+ this.productQty = this.formInstBom ? data.productQty ?? 0 : data.productQty;
961
+ this.historyData = [];
962
+ this.defaultMCPattern = MaterialConsumptionPatternEnum.RECORD;
963
+ this.tableControllers = {};
964
+ this.field2TableMap = {};
965
+ const instanceConfigs = new Map(
966
+ (this.formInstBom?.formTmplBomList ?? []).filter((config) => !config.deleted_ && config.table_key_).map((config) => [config.table_key_, config])
967
+ );
968
+ this.resolvedTmplBomList = data.materialConsumeTableList.map((table) => {
969
+ const key = `${table.tableKey}:${table.masterSubField}`;
970
+ const source = instanceConfigs.get(key);
971
+ if (!source) return this.createDefaultConfig(table);
972
+ const config = cloneDeep(source);
973
+ config.entries_ ??= [];
974
+ return config;
975
+ });
976
+ if (this.formInstBom) {
977
+ if (this.formInstBom.productionIdentificationId && this.operationId) {
978
+ this.historyData = await fetchHistoryConsume({
979
+ production_identification_id_: this.formInstBom.productionIdentificationId,
980
+ routing_operation_id_: this.operationId
981
+ });
982
+ }
983
+ const isGranted = await isBomGranted();
984
+ this.defaultMCPattern = isGranted ? MaterialConsumptionPatternEnum.BOM : MaterialConsumptionPatternEnum.RECORD;
896
985
  }
897
- this.operationId = data.operationId;
898
- this.materialNo = data.materialNo;
899
- this.formInstBom = data.formInstBom;
900
- this.productQty = data.productQty ?? 0;
901
- this.historyData = await fetchHistoryConsume({
902
- production_identification_id_: this.formInstBom.productionIdentificationId,
903
- routing_operation_id_: this.operationId
986
+ data.materialConsumeTableList.forEach((table, index) => {
987
+ const config = this.resolvedTmplBomList[index];
988
+ const controller = new MaterialConsumeTableController(this, config);
989
+ this.tableControllers[table.tableKey] = controller;
990
+ this.field2TableMap[table.masterSubField] = table.tableKey;
904
991
  });
905
- const isGranted = await isBomGranted();
906
- this.defaultMCPattern = isGranted ? MaterialConsumptionPatternEnum.BOM : MaterialConsumptionPatternEnum.RECORD;
907
- this.tableControllers = {};
908
- this.tmplBomList.forEach((cur) => {
909
- const controller = new MaterialConsumeTableController(this, cur);
910
- const [tableKey, fieldKey] = cur.table_key_.split(":");
911
- this.tableControllers[tableKey] = controller;
912
- this.field2TableMap[fieldKey] = tableKey;
913
- }, {});
914
992
  }
915
993
  /**
916
994
  * 根据字段key获取子表控制器
@@ -955,9 +1033,31 @@ class FormTmplBomController {
955
1033
  });
956
1034
  });
957
1035
  }
1036
+ /** 全部 Sheet 的消耗表统一在 LOADED 前准备。 */
1037
+ initializeFormState(opts) {
1038
+ Object.entries(this.field2TableMap).forEach(([field, tableKey]) => {
1039
+ const controller = this.tableControllers[tableKey];
1040
+ if (!controller) return;
1041
+ controller.prepareInitialData({
1042
+ formState: opts.formState,
1043
+ field,
1044
+ dataStatus: opts.dataStatus,
1045
+ defaultRowData: renderUtils.getDefaultValueInfo({
1046
+ defaultDataMap: opts.defaultDataMap,
1047
+ key: field
1048
+ })
1049
+ });
1050
+ });
1051
+ }
1052
+ /** 钩子若修改数量依赖,在创建 Store 和分页前按原规则重算。 */
1053
+ finalizeInitialQuantities() {
1054
+ Object.values(this.tableControllers).forEach((controller) => {
1055
+ controller.syncQtyRequiredFromBomIfChanged();
1056
+ });
1057
+ }
958
1058
  async submitValidate() {
959
1059
  const results = await Promise.all(
960
- Object.values(this.tableControllers).map((c11) => c11.submitValidate())
1060
+ Object.values(this.tableControllers).map((c10) => c10.submitValidate())
961
1061
  );
962
1062
  const fields = {};
963
1063
  let isValid = true;
@@ -971,6 +1071,79 @@ class FormTmplBomController {
971
1071
  };
972
1072
  }
973
1073
  }
1074
+ async function prepareObjectProductDefaults({
1075
+ enabled,
1076
+ fields,
1077
+ objectInitialValues = [],
1078
+ onWarning
1079
+ }) {
1080
+ const defaults2 = /* @__PURE__ */ new WeakMap();
1081
+ if (!enabled) return defaults2;
1082
+ const requests = /* @__PURE__ */ new Map();
1083
+ const tasks = [];
1084
+ function fetchProduct(productId) {
1085
+ const existing = requests.get(productId);
1086
+ if (existing) return existing;
1087
+ const request = (async () => {
1088
+ const result = await api.apaas.modelComprehensive.getBizServiceModelCategoryModelKeyBsKey(
1089
+ {
1090
+ modelCategory: "entity",
1091
+ modelKey: "em_product",
1092
+ bsKey: "rdoGetVersionById"
1093
+ },
1094
+ // 沿用现有接口约定,传完整默认值,不拆分版本 ID。
1095
+ { id: productId }
1096
+ );
1097
+ const product = result?.data;
1098
+ if (!product || typeof product !== "object" || Array.isArray(product) || Object.keys(product).length === 0) {
1099
+ return void 0;
1100
+ }
1101
+ return { ...product, _DICT: result?.dict ?? product._DICT };
1102
+ })();
1103
+ requests.set(productId, request);
1104
+ return request;
1105
+ }
1106
+ for (const entry of fields) {
1107
+ if (!entry || typeof entry !== "object") continue;
1108
+ const field = entry;
1109
+ if (typeof field.fieldId !== "string" || !field.belongingObject || field.fieldType !== FIELD_TYPE.PRODUCT || field.isFieldModel || field.subFieldKey || field.subModelKey) {
1110
+ continue;
1111
+ }
1112
+ const configured = objectInitialValues.find(
1113
+ (item) => item.objectField === field.belongingObject
1114
+ );
1115
+ if (!configured?.values || !Object.prototype.hasOwnProperty.call(configured.values, field.fieldId)) {
1116
+ continue;
1117
+ }
1118
+ const productDefault = {
1119
+ value: configured.values[field.fieldId]
1120
+ };
1121
+ defaults2.set(entry, productDefault);
1122
+ const productId = productDefault.value;
1123
+ const needsAutofill = field.enableAutofill !== false && field.autofillRules?.some((rule) => !!rule.toField);
1124
+ if (!needsAutofill || typeof productId !== "string" || productId === "") continue;
1125
+ tasks.push(
1126
+ fetchProduct(productId).then(
1127
+ (sourceData) => {
1128
+ if (!sourceData) {
1129
+ const objectName = configured.objectFieldName || field.belongingObject;
1130
+ onWarning?.(
1131
+ `「数据 → 对象初始化 → ${objectName} → 配置」中的默认物料未查到详情(字段 ${field.fieldId},物料 ${productId}),已跳过自动填充。`
1132
+ );
1133
+ return;
1134
+ }
1135
+ productDefault.sourceData = sourceData;
1136
+ },
1137
+ (error) => {
1138
+ const reason = error instanceof Error ? error.message : String(error);
1139
+ throw new Error(`对象初始化数据填充失败,字段 ${field.fieldId}:${reason}`);
1140
+ }
1141
+ )
1142
+ );
1143
+ }
1144
+ await Promise.all(tasks);
1145
+ return defaults2;
1146
+ }
974
1147
  async function getModelQueries(opts) {
975
1148
  const isEdhr = await isEdhrSuite();
976
1149
  if (!isEdhr || !opts.mainMaterialNo) {
@@ -1115,13 +1288,14 @@ function createRuntimeInstanceInitializer(props, payload, getConsumeData) {
1115
1288
  let runtimeFormStateStore;
1116
1289
  let scriptRunner;
1117
1290
  try {
1118
- const normalizedRuntime = normalizeRuntime(selfInfo?.runtimeJson || "{}");
1291
+ const normalizedRuntime = normalizeRuntime(selfInfo?.runtimeJson || "{}", selfInfo.formType);
1119
1292
  const tid = result.tid;
1120
1293
  const uniqueId = `${tid}_${uuid2(8)}`;
1121
1294
  const runtimeContext = createRuntimeInstanceContext({
1122
1295
  uniqueId,
1123
1296
  instanceId: id,
1124
1297
  templateId: tid,
1298
+ formType: selfInfo.formType,
1125
1299
  runtime: normalizedRuntime,
1126
1300
  defaultData: {}
1127
1301
  });
@@ -1263,6 +1437,8 @@ function createRuntimeInstanceInitializer(props, payload, getConsumeData) {
1263
1437
  }
1264
1438
  await tmplBomC.init({
1265
1439
  formInstBom: selfInfo.formInstBom,
1440
+ materialConsumeTableList: businessIndex.materialConsumeTableList,
1441
+ hasFormInstance: isFormInstance,
1266
1442
  operationId: paramsConfig?.routingOperationId,
1267
1443
  materialNo,
1268
1444
  productQty: paramsConfig?.productQty
@@ -1334,7 +1510,16 @@ function createRuntimeInstanceInitializer(props, payload, getConsumeData) {
1334
1510
  params: { id: paramsConfig?.warehouseId }
1335
1511
  }
1336
1512
  ]);
1513
+ const objectProductDefaults = await prepareObjectProductDefaults({
1514
+ enabled: fillModeType === RenderModeEnum.FormMode && selfInfo.dataStatus !== "STASH" && selfInfo.dataStatus !== "SUBMIT",
1515
+ fields: fieldInfoMap.useDefaultValueFields,
1516
+ objectInitialValues: runtimeContext.formConfig.objectInitialValues,
1517
+ onWarning: (content) => {
1518
+ window.NocodeAdapter.openUtil?.message({ type: "warning", content, duration: 8 });
1519
+ }
1520
+ });
1337
1521
  const defaultDataMap = renderUtils.getDefaultValueMapByField({
1522
+ objectProductDefaults,
1338
1523
  defaultValueFields: fieldInfoMap.useDefaultValueFields,
1339
1524
  mainMaterialNo: paramsConfig?.materialNo || selfInfo.materialNo,
1340
1525
  mainRelatedLotNo: paramsConfig?.relatedLotNo,
@@ -1424,6 +1609,21 @@ function createRuntimeInstanceInitializer(props, payload, getConsumeData) {
1424
1609
  });
1425
1610
  initializeSealFields(floatingFields, formState);
1426
1611
  }
1612
+ tmplBomC.initializeFormState({
1613
+ formState,
1614
+ dataStatus: selfInfo.dataStatus,
1615
+ defaultDataMap
1616
+ });
1617
+ await transformUtils.getEventInitDataLoaded({
1618
+ formConfig: runtimeContext.formConfig,
1619
+ formState,
1620
+ viewMode: fillModeType,
1621
+ dataStatus: selfInfo.dataStatus,
1622
+ ofCtx: { formPrint: payload.formPrint, id: result.id }
1623
+ }).catch((error) => {
1624
+ console.error("Error in getEventInitDataLoaded:", error);
1625
+ });
1626
+ tmplBomC.finalizeInitialQuantities();
1427
1627
  runtimeFormStateStore = new RuntimeFormStateStore(
1428
1628
  formState,
1429
1629
  // 子表信息覆盖普通/固定/检验表、二维关联列以及各类业务表;不能只依赖已放置字段。
@@ -1542,6 +1742,18 @@ function bindRuntimeBusinessServices(runtimeRegistry, record, dataStatus) {
1542
1742
  uniqueId,
1543
1743
  () => MaterialConsumeTableController.render?.destroyAllModals(uniqueId)
1544
1744
  );
1745
+ runtimeRegistry.registerDisposable(
1746
+ uniqueId,
1747
+ watch(
1748
+ () => record.context.activeSheetId,
1749
+ (next, previous) => {
1750
+ if (next !== previous) {
1751
+ MaterialConsumeTableController.render?.destroyAllModals(uniqueId);
1752
+ }
1753
+ },
1754
+ { flush: "sync" }
1755
+ )
1756
+ );
1545
1757
  if (!mcList.length) return;
1546
1758
  const tmplBomC = record.context.services.tmplBomController;
1547
1759
  if (!tmplBomC) return;
@@ -1559,18 +1771,13 @@ function bindRuntimeBusinessServices(runtimeRegistry, record, dataStatus) {
1559
1771
  }
1560
1772
  }),
1561
1773
  mainFormState: computed(() => record.formState.state),
1562
- dataStatus,
1563
- defaultRowData: renderUtils.getDefaultValueInfo({
1564
- defaultDataMap: record.context.defaultData,
1565
- key: field
1566
- })
1774
+ dataStatus
1567
1775
  });
1568
1776
  stops.push(
1569
1777
  watch(
1570
1778
  () => controller.materialNoNum,
1571
1779
  () => {
1572
- if (controller.dataStatus === "SUBMIT") return;
1573
- controller.syncQtyRequiredFromBom();
1780
+ controller.syncQtyRequiredFromBomIfChanged();
1574
1781
  },
1575
1782
  { immediate: true }
1576
1783
  )
@@ -1838,7 +2045,13 @@ function createRuntimePersistenceAccess(runtimeRegistry, props, payload) {
1838
2045
  const signatureKeys = (runtimeRecord.context.businessIndex.useSignatureFields || []).map(
1839
2046
  (item) => item.fieldId
1840
2047
  );
1841
- const idsFormState = transformUtils.getFormDataIdsMap(newFormState, signatureKeys);
2048
+ const idsFormState = transformUtils.getFormDataIdsMap(
2049
+ newFormState,
2050
+ signatureKeys,
2051
+ (path) => runtimeRecord.fields.findByPath(path).some(
2052
+ ({ widget, subFieldKey }) => subFieldKey !== path && [FIELD_TYPE.DATE, FIELD_TYPE.DATE_TIME].includes(widget?.props.fieldType)
2053
+ )
2054
+ );
1842
2055
  if (saveToken ? !runtimeRecord.persistence.completeSave(saveToken) : requestedRevision !== runtimeRecord.formState.revision) {
1843
2056
  return false;
1844
2057
  }
@@ -1915,6 +2128,139 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1915
2128
  }
1916
2129
  });
1917
2130
  const InspectionDecisionPromptModal = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-9c14035f"]]);
2131
+ function createMaterialConsumeObjectValidation(options) {
2132
+ const { record, getInfo, isCurrent, shouldSkip, applyComments } = options;
2133
+ let enabled = false;
2134
+ let disposed = false;
2135
+ let submitting = 0;
2136
+ let generation = 0;
2137
+ let lastRevision = -1;
2138
+ let timer;
2139
+ let paths = /* @__PURE__ */ new Set();
2140
+ const unlocated = /* @__PURE__ */ new Set();
2141
+ const alive = () => !disposed && isCurrent();
2142
+ function cancelLive() {
2143
+ generation++;
2144
+ if (timer !== void 0) clearTimeout(timer);
2145
+ timer = void 0;
2146
+ }
2147
+ function calcObjectError(error) {
2148
+ const info = getInfo();
2149
+ const modelKey = info?.modelKey || record.context.businessIndex.modelDisplay.key;
2150
+ const descriptor = record.fields.findField({ modelKey, fieldId: error.field });
2151
+ const props = descriptor?.widget?.props;
2152
+ if (!props?.field || descriptor?.subFieldKey || props.subFieldKey) {
2153
+ const key = modelKey + "." + error.field;
2154
+ if (!unlocated.has(key)) {
2155
+ unlocated.add(key);
2156
+ console.warn("物料消耗对象错误未定位到主表控件,保留在校验清单:", key);
2157
+ }
2158
+ return { error, path: void 0 };
2159
+ }
2160
+ const path = buildRuntimeFieldPath({
2161
+ ...props,
2162
+ modelKey: props.modelKey ?? info?.modelKey,
2163
+ fieldId: props.field
2164
+ });
2165
+ return { error: { ...error, field: path }, path };
2166
+ }
2167
+ function replaceObjectFields(fields) {
2168
+ if (!alive()) return;
2169
+ const next = { ...getInfo()?.mcValidatorMessageMap ?? {} };
2170
+ paths.forEach((path) => delete next[path]);
2171
+ Object.assign(next, fields);
2172
+ paths = new Set(Object.keys(fields));
2173
+ applyComments(next);
2174
+ }
2175
+ function replaceTableFields(fields) {
2176
+ if (!alive()) return;
2177
+ const current = getInfo()?.mcValidatorMessageMap ?? {};
2178
+ const next = { ...fields ?? {} };
2179
+ paths.forEach((path) => {
2180
+ if (current[path]) {
2181
+ next[path] = [...next[path] ?? [], ...current[path]];
2182
+ }
2183
+ });
2184
+ applyComments(next);
2185
+ }
2186
+ function clear() {
2187
+ cancelLive();
2188
+ enabled = false;
2189
+ lastRevision = -1;
2190
+ replaceObjectFields({});
2191
+ }
2192
+ async function validate(live = false) {
2193
+ cancelLive();
2194
+ if (!alive()) return;
2195
+ if (shouldSkip()) {
2196
+ clear();
2197
+ return { isValid: true };
2198
+ }
2199
+ const ticket = generation;
2200
+ const revision = record.formState.revision;
2201
+ const info = getInfo();
2202
+ const display = record.context.businessIndex.modelDisplay;
2203
+ const errors = await validateObjectBomQtyOnSubmit({
2204
+ formState: record.formState.state,
2205
+ objectFieldList: record.context.formConfig.objectFieldList,
2206
+ formInstBom: record.context.services.tmplBomController?.formInstBom,
2207
+ showModelName: display.name,
2208
+ showModelKey: display.key || info?.modelKey || ""
2209
+ });
2210
+ if (!alive() || generation !== ticket || record.formState.revision !== revision || live && getInfo()?.renderModeType !== RenderModeEnum.FormMode)
2211
+ return;
2212
+ const fields = {};
2213
+ const comments = {};
2214
+ for (const source of errors) {
2215
+ const adapted = calcObjectError(source);
2216
+ (fields[adapted.error.field] ??= []).push(adapted.error);
2217
+ if (adapted.path) (comments[adapted.path] ??= []).push(adapted.error);
2218
+ }
2219
+ enabled = !!record.context.formConfig.objectFieldList?.length;
2220
+ lastRevision = revision;
2221
+ replaceObjectFields(comments);
2222
+ return { isValid: !errors.length, fields: Object.keys(fields).length ? fields : void 0 };
2223
+ }
2224
+ function requestLive() {
2225
+ cancelLive();
2226
+ if (!alive() || !enabled || submitting > 0 || getInfo()?.renderModeType !== RenderModeEnum.FormMode)
2227
+ return;
2228
+ const ticket = generation;
2229
+ timer = setTimeout(() => {
2230
+ timer = void 0;
2231
+ void (async () => {
2232
+ await record.controller?.waitUntilPrepared();
2233
+ await record.asyncTasks.waitForRequired();
2234
+ if (!alive() || generation !== ticket || submitting > 0 || getInfo()?.renderModeType !== RenderModeEnum.FormMode)
2235
+ return;
2236
+ await validate(true);
2237
+ })().catch((error) => {
2238
+ if (alive()) console.error("物料消耗对象实时校验失败", error);
2239
+ });
2240
+ }, 300);
2241
+ }
2242
+ return {
2243
+ validate,
2244
+ requestLive,
2245
+ replaceTableFields,
2246
+ clear,
2247
+ beginSubmit() {
2248
+ submitting++;
2249
+ cancelLive();
2250
+ },
2251
+ endSubmit() {
2252
+ submitting--;
2253
+ if (alive() && submitting === 0 && enabled && lastRevision !== record.formState.revision)
2254
+ requestLive();
2255
+ },
2256
+ dispose() {
2257
+ disposed = true;
2258
+ cancelLive();
2259
+ paths.clear();
2260
+ unlocated.clear();
2261
+ }
2262
+ };
2263
+ }
1918
2264
  function applyValidationComments(info, comments, kind) {
1919
2265
  if (!info) return;
1920
2266
  const locationKey = kind === "field" ? "validatorLocationList" : "mcValidatorLocationList";
@@ -1932,6 +2278,29 @@ function applyValidationComments(info, comments, kind) {
1932
2278
  info[messageKey] = map;
1933
2279
  }
1934
2280
  function createRuntimeValidationBinding(runtimeRegistry, getInfo, platformType) {
2281
+ const objectValidations = /* @__PURE__ */ new WeakMap();
2282
+ function getObjectValidation(record) {
2283
+ const existing = objectValidations.get(record);
2284
+ if (existing) return existing;
2285
+ const uniqueId = record.context.uniqueId;
2286
+ const validation = createMaterialConsumeObjectValidation({
2287
+ record,
2288
+ getInfo: () => getInfo(uniqueId),
2289
+ isCurrent: () => runtimeRegistry.get(uniqueId) === record,
2290
+ shouldSkip: () => {
2291
+ const skip = syncInspectionDecisionRule(uniqueId);
2292
+ if (skip) clearInspectionValidationState(uniqueId);
2293
+ return skip;
2294
+ },
2295
+ applyComments: (fields) => applyValidationComments(getInfo(uniqueId), fields, "material")
2296
+ });
2297
+ objectValidations.set(record, validation);
2298
+ runtimeRegistry.registerDisposable(uniqueId, () => {
2299
+ validation.dispose();
2300
+ objectValidations.delete(record);
2301
+ });
2302
+ return validation;
2303
+ }
1935
2304
  const inspectionDecisionMatched = /* @__PURE__ */ new WeakMap();
1936
2305
  const inspectionDecisionPrompting = /* @__PURE__ */ new WeakSet();
1937
2306
  function openInspectionDecisionPrompt(uniqueId, content) {
@@ -1972,11 +2341,14 @@ function createRuntimeValidationBinding(runtimeRegistry, getInfo, platformType)
1972
2341
  return matched;
1973
2342
  }
1974
2343
  function clearInspectionValidationState(uniqueId) {
2344
+ const record = runtimeRegistry.get(uniqueId);
2345
+ if (record) objectValidations.get(record)?.clear();
1975
2346
  applyValidationComments(getInfo(uniqueId), null, "field");
1976
2347
  applyValidationComments(getInfo(uniqueId), null, "material");
1977
2348
  }
1978
2349
  function bindFormValidationSync(uniqueId) {
1979
2350
  const record = runtimeRegistry.require(uniqueId);
2351
+ const objects = getObjectValidation(record);
1980
2352
  syncInspectionDecisionRule(uniqueId);
1981
2353
  const stop = record.formState.subscribe(() => {
1982
2354
  if (runtimeRegistry.get(uniqueId) !== record) return;
@@ -1987,6 +2359,7 @@ function createRuntimeValidationBinding(runtimeRegistry, getInfo, platformType)
1987
2359
  uniqueId,
1988
2360
  !suppressed && info.renderModeType === RenderModeEnum.FormMode
1989
2361
  );
2362
+ objects.requestLive();
1990
2363
  if (suppressed) return;
1991
2364
  if (info.renderModeType === RenderModeEnum.FormMode) {
1992
2365
  record.validation.requestLive("change");
@@ -2019,48 +2392,43 @@ function createRuntimeValidationBinding(runtimeRegistry, getInfo, platformType)
2019
2392
  }
2020
2393
  async function runSubmissionValidation(uniqueId) {
2021
2394
  const record = runtimeRegistry.require(uniqueId);
2022
- const formState = record.formState.state;
2023
- const bomC = record.context.services.tmplBomController;
2024
- if (syncInspectionDecisionRule(uniqueId)) {
2025
- clearInspectionValidationState(uniqueId);
2026
- return { isValid: true };
2027
- }
2028
- const res = await record.validation.validate();
2029
- if (!res || runtimeRegistry.get(uniqueId) !== record) return;
2030
- const revision = record.formState.revision;
2031
- if (bomC) {
2032
- const bomRes = await bomC.submitValidate();
2033
- if (runtimeRegistry.get(uniqueId) !== record || record.formState.revision !== revision)
2034
- return;
2035
- applyValidationComments(getInfo(uniqueId), bomRes.fields ?? null, "material");
2036
- if (!bomRes.isValid) {
2037
- merge(res, bomRes);
2038
- return res;
2395
+ const objects = getObjectValidation(record);
2396
+ objects.beginSubmit();
2397
+ try {
2398
+ if (syncInspectionDecisionRule(uniqueId)) {
2399
+ clearInspectionValidationState(uniqueId);
2400
+ return { isValid: true };
2039
2401
  }
2040
- const info = getInfo(uniqueId);
2041
- const display = record.context.businessIndex.modelDisplay;
2042
- display.name;
2043
- const showModelKey = display.key || info?.modelKey || "";
2044
- const objErrs = await validateObjectBomQtyOnSubmit({
2045
- formState: formState ?? {},
2046
- objectFieldList: record.context.formConfig.objectFieldList,
2047
- formInstBom: bomC.formInstBom,
2048
- showModelKey
2049
- });
2050
- if (runtimeRegistry.get(uniqueId) !== record || record.formState.revision !== revision)
2051
- return;
2052
- if (objErrs.length) {
2053
- const fields = {};
2054
- objErrs.forEach((e3) => {
2055
- (fields[e3.field] ??= []).push(e3);
2056
- });
2057
- const objectBomRes = { isValid: false, fields };
2058
- merge(res, objectBomRes);
2059
- applyValidationComments(info, { ...info?.validatorMessageMap ?? {}, ...fields }, "field");
2060
- return res;
2402
+ const res = await record.validation.validate();
2403
+ if (!res || runtimeRegistry.get(uniqueId) !== record) return;
2404
+ const revision = record.formState.revision;
2405
+ const bomC = record.context.services.tmplBomController;
2406
+ if (bomC) {
2407
+ const bomRes = await bomC.submitValidate();
2408
+ if (runtimeRegistry.get(uniqueId) !== record || record.formState.revision !== revision)
2409
+ return;
2410
+ objects.replaceTableFields(bomRes.fields);
2411
+ if (!bomRes.isValid) {
2412
+ merge(res, bomRes);
2413
+ return res;
2414
+ }
2415
+ const objectRes = await objects.validate();
2416
+ if (!objectRes || runtimeRegistry.get(uniqueId) !== record || record.formState.revision !== revision)
2417
+ return;
2418
+ if (!objectRes.isValid) {
2419
+ const fields = { ...res.fields ?? {} };
2420
+ for (const [path, errors] of Object.entries(objectRes.fields ?? {})) {
2421
+ fields[path] = [...fields[path] ?? [], ...errors];
2422
+ }
2423
+ return { ...res, isValid: false, fields };
2424
+ }
2425
+ } else {
2426
+ objects.clear();
2061
2427
  }
2428
+ return res;
2429
+ } finally {
2430
+ objects.endSubmit();
2062
2431
  }
2063
- return res;
2064
2432
  }
2065
2433
  function updateRenderModeType(uniqueId, mode, updateButton = false) {
2066
2434
  const record = runtimeRegistry.require(uniqueId);
@@ -2078,7 +2446,9 @@ function createRuntimeValidationBinding(runtimeRegistry, getInfo, platformType)
2078
2446
  if (!isCurrent() || runtimeRegistry.get(uniqueId) !== record) return;
2079
2447
  await record.validation.settleAfterModeSwitch(mode === RenderModeEnum.FormMode);
2080
2448
  }).catch((error) => {
2081
- if (runtimeRegistry.get(uniqueId) === record) console.error("表单模式准备失败", error);
2449
+ if (runtimeRegistry.get(uniqueId) !== record) return;
2450
+ if (error instanceof Error && error.message.startsWith("以下异步任务执行失败:")) return;
2451
+ console.error("表单模式准备失败", error);
2082
2452
  });
2083
2453
  }
2084
2454
  async function prepareInitialView(record) {
@@ -2274,8 +2644,12 @@ function useRenderPageFactory(props, payload) {
2274
2644
  onValidate: () => runSubmissionValidation(uniqueId),
2275
2645
  onValidationFailed: (result) => record.sheetService.navigateFirstError(Object.keys(result.fields ?? {})),
2276
2646
  onGetSubmitData: (formState) => {
2277
- record.context.services.subTableCoreFactory?.prepareSubmitFormState(formState);
2278
- return transformUtils.getSubmitFormData(formState, record.context.businessIndex);
2647
+ const subTableFactory = record.context.services.subTableCoreFactory;
2648
+ subTableFactory?.prepareSubmitFormState(formState);
2649
+ return transformUtils.getSubmitFormData(formState, {
2650
+ ...record.context.businessIndex,
2651
+ businessTableFields: subTableFactory?.getBusinessTableFields() ?? []
2652
+ });
2279
2653
  }
2280
2654
  })
2281
2655
  );
@@ -2472,7 +2846,7 @@ function useEbrWikiFactoryV2(props, payload) {
2472
2846
  }
2473
2847
  watch(
2474
2848
  [() => props.materialNo, () => edhrCounter.value],
2475
- async ([newMaterialNo, _2]) => {
2849
+ async ([newMaterialNo, _]) => {
2476
2850
  if (isEmpty(newMaterialNo)) return;
2477
2851
  loading.value = true;
2478
2852
  clear();
@@ -2651,7 +3025,7 @@ function useEbrWikiFactoryV2(props, payload) {
2651
3025
  );
2652
3026
  watch(
2653
3027
  [() => selectSelfInfo.value, () => instanceCounter.value],
2654
- ([newSelectSelfInfo, _2]) => {
3028
+ ([newSelectSelfInfo, _]) => {
2655
3029
  if (newSelectSelfInfo && payload.pageType === "record-change") {
2656
3030
  emitter.emit(EmitterEnum.__on_select_ebr_doc_instance_id, {
2657
3031
  instanceId: newSelectSelfInfo.id
@@ -3007,9 +3381,9 @@ class FormAnnotationController {
3007
3381
  const items = this.normalizeAllResponse(res);
3008
3382
  this.applyAnnotationItems(items, () => true);
3009
3383
  return items;
3010
- } catch (e3) {
3011
- console.error("加载所有批注信息 error", e3);
3012
- throw e3;
3384
+ } catch (e2) {
3385
+ console.error("加载所有批注信息 error", e2);
3386
+ throw e2;
3013
3387
  }
3014
3388
  };
3015
3389
  handleOpenAnnotation = async () => {
@@ -3056,250 +3430,251 @@ function filterAnnotationItemsUpToCurrent(items) {
3056
3430
  });
3057
3431
  }
3058
3432
  export {
3059
- aO as AITooltips,
3433
+ aL as AITooltips,
3060
3434
  A3 as AllocateTableCore,
3061
3435
  B3 as BaseFormModelFetcher,
3062
- aQ as BinarizeMethodOptions,
3063
- a$ as BindCmpStyleEnum,
3064
- a1 as BooleanShowMode,
3436
+ aN as BinarizeMethodOptions,
3437
+ a_ as BindCmpStyleEnum,
3438
+ a0 as BooleanShowMode,
3065
3439
  B2 as BorderTD,
3066
3440
  BpmnNodeTypeEnum,
3067
- bK as BpmnSignatureTypeEnum,
3068
- bL as ButtonTypeEnum,
3441
+ by as BpmnSignatureTypeEnum,
3442
+ bz as ButtonTypeEnum,
3069
3443
  B as BwipCodeType,
3070
- bM as CHECK_TABLE_MEDPRO_PROTOCOL_KEY,
3444
+ bA as CHECK_TABLE_MEDPRO_PROTOCOL_KEY,
3071
3445
  y as CellType,
3072
- ai as CellWidgetViewState,
3446
+ af as CellWidgetViewState,
3073
3447
  CheckDsTypeEnum,
3074
- bN as CodeRunner,
3448
+ bB as CodeRunner,
3075
3449
  ComponentTypeEnum,
3076
- bO as Config_Fields,
3077
- bP as ControlStatusEnum,
3078
- bh as DEVICE_GROUP_QUERY_KEY,
3079
- bQ as DEVICE_SEARCH_API,
3080
- aT as DateFormat,
3081
- ay as DecimalDisplayMode,
3082
- aP as DenoiseMethodOptions,
3083
- a62 as DeviceConnector,
3084
- aM as DeviceLink,
3085
- e as DeviceLinkTmplUtil,
3086
- aN as DeviceParamsTypeTitle,
3450
+ bC as Config_Fields,
3451
+ bD as ControlStatusEnum,
3452
+ bb as DEVICE_GROUP_QUERY_KEY,
3453
+ bE as DEVICE_SEARCH_API,
3454
+ aQ as DateFormat,
3455
+ av as DecimalDisplayMode,
3456
+ aM as DenoiseMethodOptions,
3457
+ an2 as DeviceConnector,
3458
+ aJ as DeviceLink,
3459
+ k as DeviceLinkTmplUtil,
3460
+ aK as DeviceParamsTypeTitle,
3087
3461
  D as DevicePartConsumeTableCore,
3088
- bR as DeviceStatus,
3089
- aj as DiagonalDirection,
3090
- an as DiagonalVertex,
3091
- _ as DocumentLayout,
3092
- a72 as DocumentLoading,
3093
- L2 as DocumentPaper,
3094
- a8 as DynamicQuickFillModal,
3095
- O2 as DynamicTableAction,
3096
- bS as EBR_PROVIDE_ENUM,
3097
- bT as EFieldBizTypeEnum,
3098
- E as EMPTY_PRODUCT_VERSION_ID,
3099
- aG as EmptySymbol,
3100
- a3 as FallbackSignTypeEnum,
3101
- ah as FieldSysVarDefaultValueEnum,
3462
+ bF as DeviceStatus,
3463
+ ag as DiagonalDirection,
3464
+ ak as DiagonalVertex,
3465
+ a12 as DocumentLayout,
3466
+ ao as DocumentLoading,
3467
+ $2 as DocumentPaper,
3468
+ ap as DynamicQuickFillModal,
3469
+ a02 as DynamicTableAction,
3470
+ bG as EBR_PROVIDE_ENUM,
3471
+ bH as EFieldBizTypeEnum,
3472
+ F as EMPTY_PRODUCT_VERSION_ID,
3473
+ aD as EmptySymbol,
3474
+ a2 as FallbackSignTypeEnum,
3475
+ ae as FieldSysVarDefaultValueEnum,
3102
3476
  FillingTypeEnum,
3103
- a9 as FixedQuickFillModal,
3477
+ aq as FixedQuickFillModal,
3104
3478
  FormAnnotationController,
3105
3479
  F2 as FormModelController,
3106
3480
  FormTmplBomController,
3107
- aa2 as FormTmplConfigController,
3481
+ ar as FormTmplConfigController,
3108
3482
  FormTypeEnum,
3109
- az as ImageDisplayModeEnum,
3483
+ aw as ImageDisplayModeEnum,
3110
3484
  InstanceStatusValues,
3111
- aR as JoinModelTypeEum,
3112
- ab as LEGACY_RUNTIME_FORM_CONFIG_KEYS,
3113
- ac as LEGACY_RUNTIME_SHEET_ID,
3114
- ad as LEGACY_RUNTIME_SHEET_TITLE,
3115
- a0 as LabelPosition,
3116
- al as LineDirection,
3485
+ aO as JoinModelTypeEum,
3486
+ as as LEGACY_RUNTIME_FORM_CONFIG_KEYS,
3487
+ at2 as LEGACY_RUNTIME_SHEET_ID,
3488
+ au2 as LEGACY_RUNTIME_SHEET_TITLE,
3489
+ $ as LabelPosition,
3490
+ ai as LineDirection,
3117
3491
  L as LineType,
3118
- bU as MAX_FRONT_ROW_KEY_LENGTH,
3492
+ bI as MAX_FRONT_ROW_KEY_LENGTH,
3119
3493
  M as MAX_RUNTIME_SHEETS,
3120
3494
  a as MAX_RUNTIME_SHEET_TITLE_LENGTH,
3121
3495
  M3 as MBRender,
3122
- ae as MCDataUtil,
3123
- a11 as MCRender,
3496
+ av2 as MCDataUtil,
3497
+ a8 as MCRender,
3124
3498
  b as MULTI_SHEET_SCHEMA_VERSION,
3125
3499
  MaterialConsumeTableController,
3126
3500
  MaterialConsumptionPatternEnum,
3127
3501
  M2 as MaterialRequisitionTableCore,
3128
3502
  MaterialStatusEnum,
3129
- a10 as MaterialSubstitutionTableCore,
3130
- bV as MobileFillTypeEnum,
3503
+ a7 as MaterialSubstitutionTableCore,
3504
+ bJ as MobileFillTypeEnum,
3131
3505
  NCB_PROVIDE,
3132
- af as OCR_MODEL_PRECISION_ENUM_KEY,
3133
- bW as OfficeTypeEnum,
3506
+ aw2 as OCR_MODEL_PRECISION_ENUM_KEY,
3507
+ bK as OfficeTypeEnum,
3134
3508
  O as Orientation,
3135
3509
  p as PageSizeEnum,
3136
3510
  P as PaginationFormat,
3137
- aa as PaperSizeMap,
3511
+ a9 as PaperSizeMap,
3138
3512
  o as PaperWidgeType,
3139
3513
  Q as PaperWidgeValueType,
3140
3514
  A as ParamModelTypeEnum,
3141
3515
  P2 as PartStocktakeTableCore,
3142
3516
  PlatformEnum,
3143
- bX as PosEnum,
3144
- b3 as PretreatmentListTableCore,
3145
- c10 as ProfileDrivenSubTableCore,
3146
- bY as RUNTIME_COLUMN_ROW_KEY,
3147
- ax as RangeCompareOp,
3148
- aw as RangeValidateMode,
3517
+ bL as PosEnum,
3518
+ b2 as PretreatmentListTableCore,
3519
+ c as ProfileDrivenSubTableCore,
3520
+ bM as RUNTIME_COLUMN_ROW_KEY,
3521
+ au as RangeCompareOp,
3522
+ at as RangeValidateMode,
3149
3523
  RenderModeEnum,
3150
- ag as RuntimeAsyncTaskCoordinator,
3151
- ah2 as RuntimeDependencyService,
3152
- ai2 as RuntimeFieldRegistry,
3524
+ ax as RuntimeAsyncTaskCoordinator,
3525
+ ay as RuntimeDependencyService,
3526
+ az as RuntimeFieldRegistry,
3153
3527
  RuntimeFormStateStore,
3154
3528
  RuntimeInstanceController,
3155
- aj2 as RuntimeInstanceEventBus,
3529
+ aA as RuntimeInstanceEventBus,
3156
3530
  RuntimeInstanceRegistry,
3157
- ak2 as RuntimePersistenceCoordinator,
3531
+ aB as RuntimePersistenceCoordinator,
3158
3532
  RuntimeRuleCompiler,
3159
3533
  RuntimeSheetService,
3160
- al2 as RuntimeValidationService,
3161
- a6 as SignShowTypeEnum,
3162
- a2 as SignatureImageDirectionEnum,
3163
- a4 as SignatureNumberTypeEnum,
3164
- a5 as SignatureTimeTypeEnum,
3165
- a7 as SignatureTypeEnum,
3534
+ aC as RuntimeValidationService,
3535
+ a5 as SignShowTypeEnum,
3536
+ a1 as SignatureImageDirectionEnum,
3537
+ a3 as SignatureNumberTypeEnum,
3538
+ a4 as SignatureTimeTypeEnum,
3539
+ a6 as SignatureTypeEnum,
3166
3540
  d2 as SterilizeBatchTableCore,
3167
- e2 as StocktakeTableCore,
3168
- am2 as SubTableCore,
3541
+ e as StocktakeTableCore,
3542
+ aD2 as SubTableCore,
3169
3543
  SubTableCoreFactory,
3170
3544
  f as SubTableType,
3171
- bZ as SummaryApproveHisTypeEnum,
3172
- am as TimeDiffFormat,
3173
- aq as ViewTypeEnum,
3545
+ bN as SummaryApproveHisTypeEnum,
3546
+ aj as TimeDiffFormat,
3547
+ an as ViewTypeEnum,
3174
3548
  W as WarehouseInTableCore,
3175
- f3 as WarehouseInboundTableCore,
3549
+ f2 as WarehouseInboundTableCore,
3176
3550
  g as WarehouseOutTableCore,
3177
- h2 as WarehouseOutboundTableCore,
3178
- ak as WidgetImageSizeMode,
3179
- b_ as applyCheckDsDataToRuntime,
3180
- w as applyConsumeObjectTraceChange,
3181
- b$ as applyMedProCheckDsDataToRuntime,
3551
+ h as WarehouseOutboundTableCore,
3552
+ ah as WidgetImageSizeMode,
3553
+ bO as applyCheckDsDataToRuntime,
3554
+ C as applyConsumeObjectTraceChange,
3555
+ bP as applyMedProCheckDsDataToRuntime,
3182
3556
  baseDataUtils,
3183
- c0 as bindRuntimeTableColumns,
3184
- c1 as buildDeviceBaseQuery,
3185
- bg as buildDeviceFilterQuery,
3186
- an2 as buildFormChangeDisplayRows,
3187
- m as buildObjectLotExtraQuery,
3557
+ bQ as bindRuntimeTableColumns,
3558
+ bR as buildDeviceBaseQuery,
3559
+ ba as buildDeviceFilterQuery,
3560
+ aE as buildFormChangeDisplayRows,
3561
+ t2 as buildObjectLotExtraQuery,
3188
3562
  buildRuntimeFieldPath,
3189
- c2 as calcFillData,
3190
- c3 as calcUtils,
3563
+ bS as calcFillData,
3564
+ bT as calcUtils,
3191
3565
  calculateFormula,
3192
3566
  collectAnnotationItemsByLocation,
3193
3567
  collectFormChangeFieldLocations,
3194
3568
  commonUtils,
3195
3569
  convertHistoricalAnnotationLocation,
3196
- ao2 as convertV1Runtime,
3197
- c as createRuntimeDocumentV2,
3570
+ aF as convertV1Runtime,
3571
+ d as createRuntimeDocumentV2,
3198
3572
  createRuntimeInstanceContext,
3199
- c4 as decodeTableCellRowKey,
3200
- ap as detailsHaveFormChangeRowOps,
3201
- c5 as encodeTableCellRowKey,
3573
+ bU as decodeTableCellRowKey,
3574
+ aG as detailsHaveFormChangeRowOps,
3575
+ bV as encodeTableCellRowKey,
3202
3576
  enrichFormChangeRowDetails,
3203
- c6 as ensureFrontRowKey,
3204
- c7 as ensureTableRowKeys,
3205
- aq2 as extractFormChangeRowDetails,
3206
- c8 as extractKeywordFromQueryData,
3207
- c9 as fetchCheckDsDataForTable,
3208
- ca as fetchCustomCheckDsData,
3577
+ bW as ensureFrontRowKey,
3578
+ bX as ensureTableRowKeys,
3579
+ aH as extractFormChangeRowDetails,
3580
+ bY as extractKeywordFromQueryData,
3581
+ bZ as fetchCheckDsDataForTable,
3582
+ b_ as fetchCustomCheckDsData,
3209
3583
  fetchHistoryConsume,
3210
- cb as fetchMedProCheckDsData,
3584
+ b$ as fetchMedProCheckDsData,
3211
3585
  fetchOperationReceiveQty,
3212
3586
  fetchUdi,
3213
3587
  filterAnnotationItemsUpToCurrent,
3214
- bl as findRuntimeParentRow,
3215
- cc as findRuntimeTableCell,
3588
+ be as findRuntimeParentRow,
3589
+ c0 as findRuntimeTableCell,
3216
3590
  findRuntimeTableRow,
3217
3591
  getAppInfo,
3218
3592
  getBusinessFieldKey,
3219
- cd as getCheckTableSnapshotKey,
3220
- ar as getFormChangeRowKey,
3221
- as as getFormChangeRowOp,
3222
- aZ as getLotLockedReason,
3223
- l as getObjectBomMaterialLotQuery,
3224
- x as getObjectBomProductQuery,
3593
+ c1 as getCheckTableSnapshotKey,
3594
+ aI as getFormChangeRowKey,
3595
+ aJ2 as getFormChangeRowOp,
3596
+ aW as getLotLockedReason,
3597
+ r as getObjectBomMaterialLotQuery,
3598
+ E as getObjectBomProductQuery,
3225
3599
  getParseFormulaVarInfos,
3226
- ce as getParseRuleConfig,
3227
- b0 as getParseRuleInfo,
3228
- b1 as getParseRuleValue,
3229
- cf as getReinspectionDate,
3230
- cg as getRenderedRuntimeTableCell,
3600
+ c2 as getParseRuleConfig,
3601
+ a$ as getParseRuleInfo,
3602
+ b0 as getParseRuleValue,
3603
+ c3 as getReinspectionDate,
3604
+ c4 as getRenderedRuntimeTableCell,
3231
3605
  getRuntimeDataFieldId,
3232
3606
  getRuntimeDependencyOutputKey,
3233
- at as getSubTableQuickFillInfo,
3607
+ aK2 as getSubTableQuickFillInfo,
3234
3608
  getSuiteKey,
3235
- ch as handleOldConfig,
3236
- ci as hasAnyCheckTableSnapshot,
3237
- cj as hasByTableCheckTableSnapshot,
3238
- ck as hasSharedCheckTableSnapshot,
3239
- au as isAnnLocationSelected,
3240
- av as isBlank,
3609
+ c5 as handleOldConfig,
3610
+ c6 as hasAnyCheckTableSnapshot,
3611
+ c7 as hasByTableCheckTableSnapshot,
3612
+ c8 as hasSharedCheckTableSnapshot,
3613
+ aL2 as isAnnLocationSelected,
3614
+ aM2 as isBlank,
3241
3615
  isBomGranted,
3242
3616
  isEdhrSuite,
3243
3617
  isEqmSuite,
3244
- aw2 as isFormChangeGhostRow,
3245
- cl as isMedProSuite,
3618
+ aN2 as isFormChangeGhostRow,
3619
+ c9 as isMedProSuite,
3246
3620
  isRowAddedInCurrentFormChange,
3247
- cm as isTableRowKeyMatch,
3248
- cn as jsonSchemaUtils,
3249
- co as judgeUnique,
3250
- aY as materialCheck,
3251
- cp as migrateDiagonalDirectionToVertex,
3621
+ ca as isTableRowKeyMatch,
3622
+ cb as jsonSchemaUtils,
3623
+ cc as judgeUnique,
3624
+ aV as materialCheck,
3625
+ cd as migrateDiagonalDirectionToVertex,
3252
3626
  nextFormChangeRowViewHistoryId,
3253
- f2 as normalizeAIOcrTmpl,
3254
- y2 as normalizeHistoricalAutofillRow,
3255
- d as normalizeHistoricalBusinessRow,
3256
- ax2 as normalizeHistoricalFieldConfig,
3257
- b2 as normalizeRefLoaderResult,
3627
+ l as normalizeAIOcrTmpl,
3628
+ G as normalizeHistoricalAutofillRow,
3629
+ j as normalizeHistoricalBusinessRow,
3630
+ aO2 as normalizeHistoricalFieldConfig,
3631
+ b1 as normalizeRefLoaderResult,
3258
3632
  normalizeRuntime,
3259
3633
  parseFrontConfig,
3260
3634
  parseRuntimeFieldPath,
3261
3635
  parseUdi,
3262
- ay2 as pickObjectFieldKeys,
3263
- az2 as recordSubtableRowAdd,
3264
- aA as recordSubtableRowDelete,
3265
- be as refUtils,
3266
- cq as relocateDeletedRowsToEnd,
3636
+ aP2 as pickObjectFieldKeys,
3637
+ aQ2 as recordSubtableRowAdd,
3638
+ aR as recordSubtableRowDelete,
3639
+ b8 as refUtils,
3640
+ aS as relocateDeletedRowsToEnd,
3267
3641
  renderUtils,
3268
- cr as requestMedProCheckDsData,
3269
- cs as requestNonMedProCheckDsData,
3270
- aB as resolveAnnotationFieldLocation,
3271
- ao as resolveDiagonalVertex,
3642
+ ce as requestMedProCheckDsData,
3643
+ cf as requestNonMedProCheckDsData,
3644
+ aT as resolveAnnotationFieldLocation,
3645
+ al as resolveDiagonalVertex,
3272
3646
  t as resolveFieldRenderComponent,
3273
- aC as resolveFormChangeRowUi,
3274
- p2 as resolveObjectBomEntry,
3275
- r as resolveObjectFieldKeys,
3276
- aD as resolveRowFormChangeMark,
3647
+ aU as resolveFormChangeRowUi,
3648
+ y2 as resolveObjectBomEntry,
3649
+ v as resolveObjectFieldKeys,
3650
+ aV2 as resolveRowFormChangeMark,
3277
3651
  resolveUdiQuery,
3278
- q as runWithFillProduct,
3279
- j as setSelectAnnotationId,
3280
- aE as setSelectMobileTdId,
3652
+ z as runWithFillProduct,
3653
+ p2 as setSelectAnnotationId,
3654
+ aW2 as setSelectMobileTdId,
3281
3655
  s as setSelectValidatorId,
3282
- aS as sqlUtils,
3283
- ct as stockCheck,
3284
- aF as stripLegacyFormConfigFromPaper,
3656
+ cg as splitRuntimeDataPath,
3657
+ aP as sqlUtils,
3658
+ ch as stockCheck,
3659
+ aX2 as stripLegacyFormConfigFromPaper,
3285
3660
  transformUtils,
3286
- C as useDependency,
3661
+ R as useDependency,
3287
3662
  useEbrWikiFactoryV2,
3288
- F as useFieldPresentation,
3663
+ S as useFieldPresentation,
3289
3664
  u2 as useFormModel,
3290
3665
  u as useFormTmplConfig,
3291
3666
  useMaterialBalance,
3292
3667
  useNocodeEmitter,
3293
- t2 as useNocodeFormWidget,
3294
- cu as useOnlineFormActionButton,
3295
- bm as useOnlineFormTransformField2Component,
3668
+ A2 as useNocodeFormWidget,
3669
+ ci as useOnlineFormActionButton,
3670
+ bf as useOnlineFormTransformField2Component,
3296
3671
  useRenderPageFactory,
3297
- G as useRuntimeEditorFlusher,
3298
- i as useRuntimeInstanceServices,
3299
- k as useRuntimeRowState,
3300
- A2 as useStyles,
3301
- h as useWidgetStaticAttrs,
3302
- v as validateObjectBomForScan,
3672
+ T as useRuntimeEditorFlusher,
3673
+ o2 as useRuntimeInstanceServices,
3674
+ q as useRuntimeRowState,
3675
+ Q2 as useStyles,
3676
+ m as useWidgetStaticAttrs,
3677
+ x as validateObjectBomForScan,
3303
3678
  validateObjectBomQtyOnSubmit,
3304
- a_ as validateReinspectionDate
3679
+ aX as validateReinspectionDate
3305
3680
  };