@gct-paas/excel 0.1.40-beta.3 → 0.1.40-beta.30

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 (228) hide show
  1. package/README.md +3 -4
  2. package/dist/{BaseComponent-B9o59n-h.js → BaseComponent-EzX32ZdY.js} +2 -2
  3. package/dist/{VueVideoPlayer-CAWYWBHi.js → VueVideoPlayer-BuuQaqyI.js} +2 -2
  4. package/dist/{align-editor-a4DQt4Un.js → align-editor-DWHHVeY1.js} +1 -1
  5. package/dist/{barcode-design-CBqUEPYu.js → barcode-design-B0WcJSEI.js} +2 -2
  6. package/dist/base/index.es.js +742 -306
  7. package/dist/{diagonal-design-u23896Ky.js → diagonal-design-D6uOJZmP.js} +2 -2
  8. package/dist/{dynamic-table-action-BWI4Gaqi.js → dynamic-table-action-D-ub6KoK.js} +1316 -502
  9. package/dist/{dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-BvrrN6te.js → dynamic-table-action.vue_vue_type_style_index_0_scoped_8710052f_lang-BCLE4joQ.js} +3076 -1680
  10. package/dist/{edit.utils-CXmmCnxE-XxpC8ALV.js → edit.utils-CXmmCnxE-CXdATd1V.js} +1 -1
  11. package/dist/excel.css +6292 -5112
  12. package/dist/{exceljs.min-DfbB110X.js → exceljs.min-BXhhaToT.js} +2 -2
  13. package/dist/{font-editor-BtSCLMrM.js → font-editor-_HTdKFX6.js} +3 -3
  14. package/dist/{image-design-CtE-Lw7N.js → image-design-4Ee8rZqa.js} +3 -8
  15. package/dist/{index-I1r5pfu5.js → index-7AmrbQlC.js} +2 -2
  16. package/dist/{index-IVc1dOet.js → index-8ZnBcx1k.js} +6 -5
  17. package/dist/{index-CYLAVQfT.js → index-B4LuUmbW.js} +2 -2
  18. package/dist/{index-BFg5eUdY.js → index-BCCIwSnM.js} +1 -1
  19. package/dist/{index-BMoz_QhA.js → index-BHJxBByd.js} +1 -1
  20. package/dist/{index-Bc61F6Hm.js → index-BLf1U1A9.js} +5 -7
  21. package/dist/{index-DVEe11uM.js → index-BYq7x5n6.js} +1 -1
  22. package/dist/{index-BfBuxgcp.js → index-B_DPnVrC.js} +2 -2
  23. package/dist/{index-CL9K9orM.js → index-Bbyb-owd.js} +6 -3
  24. package/dist/{index-3WwCV4xR.js → index-BlMiHVOC.js} +1 -1
  25. package/dist/{index-BKXb3VJc.js → index-BnOOLcX1.js} +2 -2
  26. package/dist/{index-B0cdcIWq.js → index-Bnt54Sc6.js} +2 -2
  27. package/dist/{index-Dyomjz3y.js → index-CH_C9ijO.js} +2 -2
  28. package/dist/{index-aNV9T6LI.js → index-CMdXdyvs.js} +2 -2
  29. package/dist/{index-CdHVHaxO.js → index-CQ0_Kx1_.js} +2 -2
  30. package/dist/{index-DdWefZMa.js → index-Cb7Fh_E2.js} +2 -2
  31. package/dist/{index-Bnb70qEi.js → index-CtVFTmHZ.js} +3 -3
  32. package/dist/{index-CPTGioxl.js → index-D3KiKYMR.js} +1 -1
  33. package/dist/{index-BRQkrFQ9.js → index-D87CVHA-.js} +2 -2
  34. package/dist/{index-BGAcYDx-.js → index-DM0OEvdI.js} +1 -1
  35. package/dist/{index-Ca9TLzUh.js → index-DPTR_QJn.js} +1 -1
  36. package/dist/{index-CAdDeEzJ.js → index-DVzaxa5k.js} +2 -2
  37. package/dist/{index-BP-LhXXV.js → index-DcXbL-0o.js} +6 -5
  38. package/dist/{index-CIa37rQm.js → index-Dn0qfALy.js} +3 -2
  39. package/dist/{index-CVsoaxTR.js → index-Dnz3YPDV.js} +2 -2
  40. package/dist/{index-BC8hQ4vo.js → index-DoWp9uDw.js} +2 -2
  41. package/dist/{index-CeEhYXl9.js → index-Dstr-PNj.js} +2 -2
  42. package/dist/{index-9S48hpoJ.js → index-DzqaKW6e.js} +2 -2
  43. package/dist/{index-ixQwAcB1.js → index-GoAXo3fT.js} +37707 -30077
  44. package/dist/{index-731OYkrc.js → index-Jy2tofdo.js} +3 -3
  45. package/dist/{index-7aS5L4ot.js → index-KRo2-iQv.js} +6 -3
  46. package/dist/{index-CpPk8P3L.js → index-KuhYPy5i.js} +1 -1
  47. package/dist/{index-DNj0vFvx.js → index-YlEOHde0.js} +1 -1
  48. package/dist/{index-51LtNdZ2.js → index-toqlO_-B.js} +1 -1
  49. package/dist/index.es.js +50 -46
  50. package/dist/{online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-CRyGHP7k.js → online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-DAAF0eOB.js} +33 -3
  51. package/dist/{pagination-design-CmbsdlMe.js → pagination-design-DANnqQdI.js} +2 -2
  52. package/dist/paper-widget-design-BrE7Bb4V.js +4 -0
  53. package/dist/{print-runtime-instance-DQysbz5n.js → print-runtime-instance-PabaORE2.js} +1 -1
  54. package/dist/{print-snapshot-renderer-DWHjMsOC.js → print-snapshot-renderer-DQr2G7Hv.js} +3 -3
  55. package/dist/{qrcode-design-CX0_2mLC.js → qrcode-design-BEA1JchI.js} +1 -1
  56. package/dist/{revo-grid.entry-DbmWFi7p.js → revo-grid.entry-Bj-4xHie.js} +1 -1
  57. package/dist/{revogr-attribution_7.entry-BWQDu7fq.js → revogr-attribution_7.entry-NvaozwYj.js} +3 -3
  58. package/dist/{revogr-clipboard_3.entry-BtTYHFZi.js → revogr-clipboard_3.entry-CkRbECsx.js} +2 -2
  59. package/dist/{revogr-data_4.entry-CWPXyZ7g.js → revogr-data_4.entry-Dbbd8Mpz.js} +2 -2
  60. package/dist/{revogr-filter-panel.entry-5gYct0XI.js → revogr-filter-panel.entry-lcMbXUNb.js} +1 -1
  61. package/dist/seal-design-CX-ZxOn3.js +4 -0
  62. package/dist/{serialnumber-design-aSqL4gX6.js → serialnumber-design-B608oYcy.js} +1 -1
  63. package/dist/shared/index.es.js +30 -27
  64. package/dist/{single-field-drop-C67wLHxK.js → single-field-drop-CkUP3H7u.js} +2 -3
  65. package/dist/{size-editor-BHGTPLir.js → size-editor-Bl-lUcdU.js} +1 -1
  66. package/dist/src/adapter/adapter.d.ts +1 -1
  67. package/dist/src/adapter/index.d.ts +2 -0
  68. package/dist/src/adapter/web/inventory-scan-columns.d.ts +6 -0
  69. package/dist/src/{nocode-web-render/src/render/sub-table/material-balance/mb-web-render.d.ts → adapter/web/material-balance-render.d.ts} +1 -1
  70. package/dist/src/{nocode-web-render/src/render/sub-table/material-balance → adapter/web}/material-consume-modal.vue.d.ts +1 -1
  71. package/dist/src/adapter/web/material-consume-render.d.ts +25 -0
  72. package/dist/src/{nocode-web-render/src/render/common → adapter/web}/open-util.d.ts +1 -1
  73. package/dist/src/{nocode-web-render/src/render/sub-table/stocktake/stocktake-web-render.d.ts → adapter/web/stocktake-render.d.ts} +2 -2
  74. package/dist/src/{nocode-web-render/src/render/sub-table/common → adapter/web}/sub-table-render.d.ts +2 -5
  75. package/dist/src/domain/document-business/business/product-release/profile.d.ts +2 -0
  76. package/dist/src/domain/document-business/business/product-release/service.d.ts +2 -0
  77. package/dist/src/domain/document-business/index.d.ts +2 -0
  78. package/dist/src/domain/document-business/registry.d.ts +2 -0
  79. package/dist/src/domain/document-business/runtime/field-query-runtime.d.ts +4 -0
  80. package/dist/src/domain/document-business/types.d.ts +24 -0
  81. package/dist/src/domain/field/number/product-release-qty-manifest.d.ts +2 -0
  82. package/dist/src/domain/field/query-filter.d.ts +15 -0
  83. package/dist/src/domain/table/business/material/material-balance/profile/fields.d.ts +2 -0
  84. package/dist/src/domain/table/business/material/material-consume/profile/fields.d.ts +2 -0
  85. package/dist/src/domain/table/business/material/material-substitution/profile/field-keys.d.ts +25 -10
  86. package/dist/src/domain/table/business/material/material-substitution/runtime/row-change-handlers.d.ts +4 -0
  87. package/dist/src/domain/table/business/material/material-substitution/runtime/select-loaders.d.ts +8 -0
  88. package/dist/src/domain/table/business/preprocess/pretreatment-list/profile/field-keys.d.ts +1 -7
  89. package/dist/src/domain/table/business/sterilize/entrust-steril-batch-list/profile/fields.d.ts +2 -0
  90. package/dist/src/domain/table/business/warehouse/shared/autofill-source-labels.d.ts +19 -0
  91. package/dist/src/domain/table/design/autofill-expander.d.ts +2 -0
  92. package/dist/src/domain/table/design/hooks/on-field-attach.d.ts +6 -0
  93. package/dist/src/domain/table/index.d.ts +1 -1
  94. package/dist/src/domain/table/types.d.ts +2 -0
  95. package/dist/src/index.d.ts +2 -0
  96. package/dist/src/nocode-base/src/components/document-sub-table-action/dynamic-table-action.vue.d.ts +0 -2
  97. package/dist/src/nocode-base/src/components/document-sub-table-action/sub-table-action.vue.d.ts +0 -3
  98. package/dist/src/nocode-base/src/components/document-sub-table-action/type.d.ts +0 -4
  99. package/dist/src/nocode-base/src/components/material-consume/types.d.ts +1 -5
  100. package/dist/src/nocode-base/src/core/factory/sub-table-factory.d.ts +2 -0
  101. package/dist/src/nocode-base/src/core/sub-table/allocate-table-core.d.ts +2 -1
  102. package/dist/src/nocode-base/src/core/sub-table/profile-driven-sub-table-core.d.ts +3 -3
  103. package/dist/src/nocode-base/src/core/sub-table/sub-table-core.d.ts +2 -5
  104. package/dist/src/nocode-base/src/hooks/form-model/form-model-controller.d.ts +2 -0
  105. package/dist/src/nocode-base/src/hooks/inspection-module-qty.d.ts +4 -0
  106. package/dist/src/nocode-base/src/hooks/material-consume/bom-validator.d.ts +2 -2
  107. package/dist/src/nocode-base/src/hooks/material-consume/material-consume-table-controller.d.ts +18 -20
  108. package/dist/src/nocode-base/src/hooks/material-consume/mc-render.d.ts +1 -28
  109. package/dist/src/nocode-base/src/hooks/material-consume/tmpl-bom-controller.d.ts +20 -7
  110. package/dist/src/nocode-base/src/hooks/material-consume/types.d.ts +2 -0
  111. package/dist/src/nocode-base/src/hooks/material-consume-object/bom-validator.d.ts +4 -3
  112. package/dist/src/nocode-base/src/hooks/material-consume-object/initialize-autofill.d.ts +19 -0
  113. package/dist/src/nocode-base/src/hooks/material-consume-object/object-validation-controller.d.ts +24 -0
  114. package/dist/src/nocode-base/src/hooks/render-page/initialize-runtime.d.ts +9 -8
  115. package/dist/src/nocode-base/src/hooks/render-page/sterilization-date.d.ts +1 -1
  116. package/dist/src/nocode-base/src/hooks/render-page/types.d.ts +4 -1
  117. package/dist/src/nocode-base/src/hooks/useRenderPageFactory.d.ts +10 -6
  118. package/dist/src/nocode-base/src/hooks/validation/createValidateFactory.d.ts +1 -0
  119. package/dist/src/nocode-base/src/interface/ref-loader.d.ts +12 -1
  120. package/dist/src/nocode-base/src/interface/render.d.ts +4 -1
  121. package/dist/src/nocode-base/src/interface/transform.d.ts +17 -1
  122. package/dist/src/nocode-base/src/runtime/designer-default-values.d.ts +23 -0
  123. package/dist/src/nocode-base/src/runtime/formula-utils.d.ts +2 -0
  124. package/dist/src/nocode-base/src/runtime/multi-sheet-runtime.d.ts +3 -1
  125. package/dist/src/nocode-base/src/runtime/runtime-context.d.ts +4 -0
  126. package/dist/src/nocode-base/src/runtime/runtime-default-value-validation.d.ts +23 -0
  127. package/dist/src/nocode-base/src/runtime/runtime-field-initializer.d.ts +1 -0
  128. package/dist/src/nocode-base/src/runtime/runtime-form-state-store.d.ts +6 -2
  129. package/dist/src/nocode-base/src/runtime/runtime-instance-registry.d.ts +3 -0
  130. package/dist/src/nocode-base/src/runtime/table-row-identity.d.ts +2 -0
  131. package/dist/src/nocode-base/src/types/common/base.d.ts +6 -2
  132. package/dist/src/nocode-base/src/types/render/mc-render.d.ts +2 -15
  133. package/dist/src/nocode-base/src/types/render/sub-table-render.d.ts +5 -11
  134. package/dist/src/online-form/src/views/__cell_widgets__/cell-widget-design.vue.d.ts +2 -0
  135. package/dist/src/online-form/src/views/__cell_widgets__/common/default-value-rdo-editor/base-vxe-table.vue.d.ts +1 -1
  136. package/dist/src/online-form/src/views/__cell_widgets__/common/default-value-rdo-editor/default-value-rdo-editor.vue.d.ts +4 -4
  137. package/dist/src/online-form/src/views/__cell_widgets__/common/default-value-rdo-editor/rdo-table-dropdown.vue.d.ts +3 -3
  138. package/dist/src/online-form/src/views/__cell_widgets__/common/display-fields-editor/display-fields.util.d.ts +2 -2
  139. package/dist/src/online-form/src/views/__cell_widgets__/common/quick-search-editor/quick-search.util.d.ts +8 -0
  140. package/dist/src/online-form/src/views/__cell_widgets__/fake-field/fake-option-select.vue.d.ts +1 -0
  141. package/dist/src/online-form/src/views/designer/constants/index.d.ts +1 -0
  142. package/dist/src/online-form/src/views/designer/conversions/normalize-paper-grid.d.ts +3 -0
  143. package/dist/src/online-form/src/views/designer/hooks/useAllSpreadSheets.d.ts +23 -0
  144. package/dist/src/online-form/src/views/designer/hooks/useSpreadSheet.d.ts +11 -3
  145. package/dist/src/online-form/src/views/designer/modules/base/designer-wrapper.vue.d.ts +1 -0
  146. package/dist/src/{nocode-web-render/src/components/print-fill-background-selector.vue.d.ts → online-form/src/views/designer/modules/duplicate-field-notice.vue.d.ts} +1 -1
  147. package/dist/src/online-form/src/views/designer/modules/panel/panel-data-init-config/object-init/hooks/useObjectInit.d.ts +1 -0
  148. package/dist/src/{nocode-web-render/src/render/parse-rule → online-form/src/views/designer/modules/panel/sub-table/comps}/add-rule-btn.vue.d.ts +1 -1
  149. package/dist/src/online-form/src/views/designer/modules/panel/sub-table/comps/use-dynamic-sub-table-panel.d.ts +6 -0
  150. package/dist/src/online-form/src/views/designer/modules/panel/sub-table/panel-check-table/select-check-ds-modal.vue.d.ts +3 -3
  151. package/dist/src/{nocode-web-render/src/render/sub-table/material-consume/bom-modal.vue.d.ts → online-form/src/views/designer/modules/xlsx-import-summary.vue.d.ts} +7 -7
  152. package/dist/src/online-form/src/views/designer/types/index.d.ts +3 -1
  153. package/dist/src/online-form/src/views/designer/types/sheets.d.ts +2 -0
  154. package/dist/src/online-form/src/views/designer/utils/cell-field-placements.d.ts +12 -0
  155. package/dist/src/online-form/src/views/designer/utils/placed-fields.d.ts +9 -0
  156. package/dist/src/online-form/src/views/designer/utils/template-placed-fields.d.ts +7 -0
  157. package/dist/src/online-form/src/views/designer/utils/xlsx-parser.d.ts +9 -3
  158. package/dist/src/online-form/src/views/render/__components__/_field_/_base_/cell/cell-auto-complete.vue.d.ts +2 -2
  159. package/dist/src/online-form/src/views/render/__components__/_field_/_base_/cell/cell-date-picker.vue.d.ts +2 -2
  160. package/dist/src/online-form/src/views/render/__components__/_field_/_base_/cell/cell-text-input.vue.d.ts +2 -2
  161. package/dist/src/online-form/src/views/render/__components__/_field_/_base_/cell/cell-textarea.vue.d.ts +2 -2
  162. package/dist/src/online-form/src/views/render/__components__/_field_/seal/component/seal-floating-field.vue.d.ts +0 -1
  163. package/dist/src/online-form/src/views/render/__components__/_field_/seal/component/seal-runtime-layer.vue.d.ts +0 -1
  164. package/dist/src/online-form/src/views/render/__components__/_field_/seal/component/use-seal-stamp.d.ts +1 -4
  165. package/dist/src/online-form/src/views/render/__components__/_field_/trace/common/base-vxe-table.vue.d.ts +1 -1
  166. package/dist/src/online-form/src/views/render/__components__/_field_/trace/composables/useReferenceLabel.d.ts +4 -0
  167. package/dist/src/shared/components/ColorPicker/src/ColorPicker.vue.d.ts +1 -1
  168. package/dist/src/shared/components/Signature/logic/index.d.ts +14 -0
  169. package/dist/src/shared/enum/field-type.d.ts +10 -3
  170. package/dist/src/shared/enum/index.d.ts +2 -0
  171. package/dist/src/shared/enum/product-type.d.ts +9 -0
  172. package/dist/src/shared/enum/production-identification.d.ts +19 -0
  173. package/dist/src/{nocode-web-render/src → shared}/hooks/useWebUpload.d.ts +1 -1
  174. package/dist/src/shared/index.d.ts +1 -0
  175. package/dist/src/shared/types/index.d.ts +1 -0
  176. package/dist/src/shared/types/upload.d.ts +11 -0
  177. package/dist/src/shared/utils/cell-wrap.d.ts +9 -0
  178. package/dist/src/shared/utils/grid-size.d.ts +2 -0
  179. package/dist/src/shared/utils/lot2sn.d.ts +14 -1
  180. package/dist/src/shared/utils/query-filter.d.ts +24 -0
  181. package/dist/src/shared/utils/withRequestCache.d.ts +27 -0
  182. package/dist/{sub-table-factory-DTtDvr17.js → sub-table-factory-GzYKYE9t.js} +230 -156
  183. package/dist/{text-design-Dz0Qf2O3.js → text-design-V3TQuLps.js} +5 -4
  184. package/dist/{throttle-Cpk1LoGk-CgtsG2CV.js → throttle-Cpk1LoGk-CFMeLNb-.js} +1 -1
  185. package/dist/{timediff-design-D9JfNqH8.js → timediff-design-DRum3zZt.js} +1 -1
  186. package/dist/{trace-like-wrapper-BXgr0Uv3.js → trace-like-wrapper-D1Gzs1mF.js} +5 -2
  187. package/dist/{value-editor.vue_vue_type_style_index_0_lang-doohzADY.js → value-editor.vue_vue_type_style_index_0_lang-DoOuCca5.js} +2 -2
  188. package/dist/{widget-barcode-XF3nCU9v.js → widget-barcode-CNrl2NxY.js} +4 -4
  189. package/dist/{widget-diagonal-DSym7fks.js → widget-diagonal-CqjD1SwW.js} +3 -4
  190. package/dist/{widget-image-CmjwkVs7.js → widget-image-Xjl5W2Fp.js} +5 -7
  191. package/dist/{widget-line-BX64xVfU.js → widget-line-BUVVnwrU.js} +2 -2
  192. package/dist/{widget-pagination-BV89Lvjt.js → widget-pagination-DjMXWioI.js} +5 -5
  193. package/dist/{widget-power-DoSfQv92.js → widget-power-Dck9H8a9.js} +3 -4
  194. package/dist/{widget-qrcode-UGcRLC56.js → widget-qrcode-Cu8BwE24.js} +3 -3
  195. package/dist/{widget-rangelimit-CUHD__1H.js → widget-rangelimit-DLxebCKf.js} +3 -4
  196. package/dist/{widget-serialnumber-CAkZR5Xl.js → widget-serialnumber-DecFCGS0.js} +1 -1
  197. package/dist/{widget-text-DtYVTThu.js → widget-text-DV3yKKsx.js} +5 -5
  198. package/dist/{widget-timediff-DX_IoCMO.js → widget-timediff-BIwewJ39.js} +2 -2
  199. package/package.json +2 -6
  200. package/dist/AntdIcon-DCIaV352.js +0 -1108
  201. package/dist/index-DeHX7rte.js +0 -4306
  202. package/dist/mb-render-Bs9S9oFn.js +0 -270
  203. package/dist/paper-widget-design-DIhsk1I9.js +0 -4
  204. package/dist/seal-design-BhzgwVju.js +0 -4
  205. package/dist/src/nocode-web-render/src/hooks/index.d.ts +0 -2
  206. package/dist/src/nocode-web-render/src/hooks/userFormPrint.d.ts +0 -15
  207. package/dist/src/nocode-web-render/src/index.d.ts +0 -6
  208. package/dist/src/nocode-web-render/src/logic/index.d.ts +0 -1
  209. package/dist/src/nocode-web-render/src/render/common/index.d.ts +0 -2
  210. package/dist/src/nocode-web-render/src/render/common/modal-manager.d.ts +0 -20
  211. package/dist/src/nocode-web-render/src/render/index.d.ts +0 -10
  212. package/dist/src/nocode-web-render/src/render/parse-rule/index.d.ts +0 -3
  213. package/dist/src/nocode-web-render/src/render/parse-rule/parse-rule-modal.vue.d.ts +0 -15
  214. package/dist/src/nocode-web-render/src/render/sub-table/allocate/allocate-web-render.d.ts +0 -4
  215. package/dist/src/nocode-web-render/src/render/sub-table/allocate/index.d.ts +0 -1
  216. package/dist/src/nocode-web-render/src/render/sub-table/common/multi-rows-modal.vue.d.ts +0 -15
  217. package/dist/src/nocode-web-render/src/render/sub-table/common/scan-modal.vue.d.ts +0 -19
  218. package/dist/src/nocode-web-render/src/render/sub-table/index.d.ts +0 -3
  219. package/dist/src/nocode-web-render/src/render/sub-table/material-balance/index.d.ts +0 -1
  220. package/dist/src/nocode-web-render/src/render/sub-table/material-consume/index.d.ts +0 -4
  221. package/dist/src/nocode-web-render/src/render/sub-table/material-consume/mc-web-render.d.ts +0 -42
  222. package/dist/src/nocode-web-render/src/render/sub-table/stocktake/index.d.ts +0 -2
  223. package/dist/src/nocode-web-render/src/types/hooks/index.d.ts +0 -1
  224. package/dist/src/nocode-web-render/src/types/index.d.ts +0 -1
  225. package/dist/web-render/index.d.ts +0 -1
  226. package/dist/web-render/index.es.js +0 -596
  227. /package/dist/src/{nocode-web-render/src/adapter/index.d.ts → adapter/web/setup.d.ts} +0 -0
  228. /package/dist/src/{nocode-web-render/src/logic/utils.d.ts → adapter/web/upload.d.ts} +0 -0
@@ -1,14 +1,13 @@
1
- import { o as api, $ as PlatformEnum, F as FIELD_TYPE, bg as getRowId, bh as findRuntimeTableRow, b6 as RenderModeEnum, C as ComponentTypeEnum, bt as assembleRules, bu as isAttachFieldActive, aI as Dependency_ENUM, bi as calculateFormula, aH as ASSIGNMENTSTRATEGY_ENUM, R as getParseFormulaVarInfos, bv as fetchHistoryConsume, bw as isBomGranted, aU as renderUtils, bs as uuid2, bx as parseFrontConfig, aL as CheckDsTypeEnum, aF as transformUtils, by as baseDataUtils, bz as initializeSealFields, Y as FormTypeEnum, bA as normalizeToArray, bB as safeParseArray, bC as BpmnNodeTypeEnum, bD as mergeByMultiKey, a8 as _export_sfc, bE as evaluateInspectionDecisionRule, bF as areValidationCommentsEqual, bG as useNocodeEmitter, bH as commonUtils, aJ as EntityModelCategoryEnum } from "../dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-BvrrN6te.js";
2
- import { aO, aQ, aZ, a1, bI, bJ, B, bK, z, ai, bL, bM, bN, bf, bO, aR, ay, aP, aM, aN, bP, aj, an, bQ, bR, aG, a3, ah, az, bS, a0, al, L, bT, bU, bV, O, q, P, aa, p, Q, E, bW, bX, ax, aw, a6, a2, a4, a5, a7, f, bY, am, aq, ak, bZ, b_, b$, c0, be, c1, c2, c3, c4, c5, c6, c7, c8, c9, ca, bj, cb, cc, aX, cd, a_, a$, ce, cf, cg, ch, ci, cj, ck, cl, cm, cn, aW, co, b0, bc, cp, cq, cr, ao, u, cs, ct, cu, bk, aY } from "../dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-BvrrN6te.js";
3
- import { Q as getRuntimeDataFieldId, C as parseRuntimeFieldPath, T as buildRuntimeFieldPath, U as resolveRuntimeFieldProps, V as resolveRuntimeFieldState, W as getRuntimeDependencyOutputKey, X as isRowAddedInCurrentFormChange, q as MaterialConsumptionPatternEnum, Y as MaterialConsumeTableController, Z as setFormulaParamsConfig, $ as normalizeRuntime, J as createRuntimeInstanceContext, R as RuntimeFormStateStore, a0 as RuntimeSheetService, g as getBusinessFieldKey, a1 as validateObjectBomQtyOnSubmit, a2 as closeValidatorPopovers, a3 as enrichFormChangeRowDetails, N as NCB_PROVIDE, K as RuntimeInstanceRegistry, a4 as useMaterialBalance, a5 as collectFormChangeFieldLocations, a6 as nextFormChangeRowViewHistoryId } from "../dynamic-table-action-BWI4Gaqi.js";
4
- import { B as B2, a7 as a72, h, _, a8, O as O2, a9, P as P2, E as E2, aa as aa2, ab, ac, ad, ae, M, a, af, d, ag, ah as ah2, ai as ai2, aj as aj2, ak as ak2, al as al2, am as am2, an as an2, y, ao as ao2, p as p2, ap, e, aq as aq2, ar, as, at, o, z as z2, au, av, aw as aw2, ax as ax2, i, A, f as f2, ay as ay2, az as az2, aA, aB, aC, aD, t, r, aE, w, l, aF, s, aG as aG2, G, H, u as u2, x, I, k, m, F, j, v } from "../dynamic-table-action-BWI4Gaqi.js";
1
+ import { p as api, a4 as PlatformEnum, by as getRuntimeDataFieldId, F as FIELD_TYPE, bz as listRuntimeFieldRows, bm as getRowId, bn as findRuntimeTableRow, bl as parseRuntimeFieldPath, bA as buildRuntimeFieldPath, bo as RenderModeEnum, C as ComponentTypeEnum, aE as findFieldMain, c as getProfileByTableType, d as getBusinessProfileByRefModelType, b as isBusinessSubTableProfile, aA as RangeValidateMode, bB as isAttachFieldActive, aQ as Dependency_ENUM, aP as ASSIGNMENTSTRATEGY_ENUM, bC as fetchHistoryConsume, bD as isBomGranted, b3 as renderUtils, bx as uuid2, bE as parseFrontConfig, aT as CheckDsTypeEnum, aN as transformUtils, bF as DesignerDefaultValues, bG as baseDataUtils, a1 as FormTypeEnum, bH as normalizeToArray, M as getBusinessFieldKey, bI as safeParseArray, bJ as BpmnNodeTypeEnum, bK as mergeByMultiKey, ae as _export_sfc, bL as evaluateInspectionDecisionRule, bM as RuntimeDefaultValueValidation, bN as useNocodeEmitter, bO as commonUtils, aR as EntityModelCategoryEnum } from "../dynamic-table-action.vue_vue_type_style_index_0_scoped_8710052f_lang-BCLE4joQ.js";
2
+ import { aW, aY, ba, a6, bP, bQ, B, bR, H, am, bS, bT, bU, bk, bV, a$, aF, aX, aU, aV, bW, an, ar, bX, bY, aO, a8, al, aG, aZ, a5, ap, L, bZ, b_, b$, O, t, P, ag, q, Y, K, c0, c1, aB, ab, a7, a9, aa, ac, h, c2, aq, au, ao, c3, c4, c5, c6, aJ, c7, c8, c9, ca, cb, cc, cd, ce, cf, cg, bp, ch, ci, b6, cj, bb, bc, ck, cl, cm, cn, co, cp, cq, cr, cs, ct, b5, cu, bd, aK, cv, cw, as, y, cx, a_, cy, cz, bq, b7 } from "../dynamic-table-action.vue_vue_type_style_index_0_scoped_8710052f_lang-BCLE4joQ.js";
3
+ import { l as findFieldProfile, a6 as resolveRuntimeFieldProps, a7 as resolveRuntimeFieldState, a8 as assembleRules, S as calculateFormula, a9 as getRuntimeDependencyOutputKey, aa as isRowAddedInCurrentFormChange, ab as resolveFormulaData, g as getParseFormulaVarInfos, z as MaterialConsumptionPatternEnum, ac as MaterialConsumeTableController, ad as setFormulaParamsConfig, ae as normalizeRuntime, Y as createRuntimeInstanceContext, af as initializeSealFields, X as RuntimeFormStateStore, ag as RuntimeSheetService, ah as validateObjectBomQtyOnSubmit, ai as areValidationCommentsEqual, aj as closeValidatorPopovers, ak as enrichFormChangeRowDetails, R as NCB_PROVIDE, Z as RuntimeInstanceRegistry, al as useMaterialBalance, am as collectFormChangeFieldLocations, an as nextFormChangeRowViewHistoryId } from "../dynamic-table-action-D-ub6KoK.js";
4
+ import { ao as ao2, B as B2, ap as ap2, o, a5 as a52, aq as aq2, a3, ar as ar2, a4, J, as as as2, F, at, au as au2, av, aw, M, a, a0, ax, a1, d, ay, az, aA, aB as aB2, aC, aD, aE, aF as aF2, H as H2, aG as aG2, x, aH, e, aI, aJ as aJ2, aK as aK2, aL, w, I, aM, aN, aO as aO2, aP, p, K as K2, m, aQ, aR, aS, aT, aU as aU2, aV as aV2, aW as aW2, C, y as y2, aX as aX2, E, t as t2, aY as aY2, s, aZ as aZ2, U, V, u, k, G, W, r, v, T, q as q2, A } from "../dynamic-table-action-D-ub6KoK.js";
5
5
  import { toRaw, watch, toRef, computed, defineComponent, openBlock, createElementBlock, createElementVNode, toDisplayString, shallowRef, markRaw, ref, provide, onUnmounted, reactive, onBeforeUnmount } from "vue";
6
- import { cloneDeep, defaults, isEmpty, merge, get } from "lodash-es";
6
+ import { isEqual, cloneDeep, defaults, isEmpty, merge, get } from "lodash-es";
7
7
  import "dayjs";
8
- import { S as SubTableCoreFactory, R as RuntimeInstanceController } from "../sub-table-factory-DTtDvr17.js";
9
- import { A as A2, D, M as M2, a as a10, P as P3, b, c, d as d2, e as e2, W, f as f3, g, h as h2 } from "../sub-table-factory-DTtDvr17.js";
10
- import { createDataSourceManager, getLegacyFieldFillTargets, createFieldFillRuntime, buildFieldFillRows, isFieldFillTargetProtected, getFieldFillColumn, buildDataSourceContext } from "@gct-paas/form-base";
11
- import { B as B3, F as F2, M as M3, a as a11, u as u3 } from "../mb-render-Bs9S9oFn.js";
8
+ import { S as SubTableCoreFactory, R as RuntimeInstanceController } from "../sub-table-factory-GzYKYE9t.js";
9
+ import { A as A2, D, M as M2, a as a2, P as P2, b, c, d as d2, e as e2, W as W2, f, g, h as h2 } from "../sub-table-factory-GzYKYE9t.js";
10
+ import { createDataSourceManager, getLegacyFieldFillTargets, createFieldFillRuntime, buildFieldFillTableRows, buildFieldFillRows, isFieldFillTargetProtected, getFieldFillTable, getFieldFillColumn, buildDataSourceContext } from "@gct-paas/form-base";
12
11
  const InstanceStatusValues = {
13
12
  /** 作废状态 */
14
13
  ABANDON: "ABANDON",
@@ -155,23 +154,31 @@ async function fetchOperationReceiveQty(paramsConfig) {
155
154
  const num = Number(raw);
156
155
  return Number.isNaN(num) ? void 0 : num;
157
156
  }
158
- function listRuntimeFieldRows(record, subFieldKey, targetFieldId) {
159
- if (!subFieldKey) {
160
- return [{ row: record.formState.state }];
161
- }
162
- const value = record.formState.state[subFieldKey];
163
- const table2DInfo = [
164
- ...record.context.businessIndex.subTable2DList,
165
- ...record.context.businessIndex.checkTable2DList
166
- ].find((item) => item.rowSubFieldKey === subFieldKey);
167
- const isChild = table2DInfo && (table2DInfo.crossFieldKeys ?? []).includes(targetFieldId);
168
- return Array.isArray(value) ? value.flatMap((row) => {
169
- if (row?.deleted_) return [];
170
- if (!isChild) return [{ row }];
171
- return (Array.isArray(row._2DTABLE_) ? row._2DTABLE_ : []).flatMap(
172
- (child) => child?.deleted_ ? [] : [{ row: child, parentRow: row }]
173
- );
174
- }) : [];
157
+ const INSPECTION_MODULE_QTY_API = {
158
+ modelCategory: "entity",
159
+ modelKey: "em_inspection_list",
160
+ bsKey: "getById"
161
+ };
162
+ function isRecord(value) {
163
+ return value !== null && typeof value === "object" && !Array.isArray(value);
164
+ }
165
+ function parseInspectionModuleQty(res) {
166
+ if (!isRecord(res) || res.ok === false) return void 0;
167
+ const payload = isRecord(res.data) ? res.data : res;
168
+ const row = isRecord(payload.data) ? payload.data : payload;
169
+ const raw = row.inspection_number_;
170
+ if (typeof raw !== "number" && typeof raw !== "string") return void 0;
171
+ if (typeof raw === "string" && raw.trim() === "") return void 0;
172
+ const qty = Number(raw);
173
+ return Number.isFinite(qty) ? qty : void 0;
174
+ }
175
+ async function fetchInspectionModuleQty(txnInstId) {
176
+ if (txnInstId == null || txnInstId === "") return void 0;
177
+ const res = await api.apaas.modelComprehensive.getBizServiceModelCategoryModelKeyBsKey(
178
+ INSPECTION_MODULE_QTY_API,
179
+ { id: txnInstId }
180
+ );
181
+ return parseInspectionModuleQty(res);
175
182
  }
176
183
  const isPresent = (value) => value !== void 0 && value !== null && value !== "";
177
184
  class RuntimeFieldInitializer {
@@ -213,7 +220,7 @@ class RuntimeFieldInitializer {
213
220
  for (const { widget, sheetId, referenceInfo } of this.record.fields.allWidgets()) {
214
221
  const props = widget.props;
215
222
  const fieldId = getRuntimeDataFieldId(props);
216
- const kind = props.fieldType === FIELD_TYPE.UDI || props.bizType === FIELD_TYPE.UDI ? "udi" : props.bizType === FIELD_TYPE.OPERATION_RECEIVE_QTY ? "receive" : props.tmplId && [FIELD_TYPE.INTEGER, FIELD_TYPE.LONG].includes(props.fieldType) ? "count" : this.info.isMockReport && props.fieldType === FIELD_TYPE.RECORD_NO && props.newSpecificConfig?.newSnNo ? "recordNo" : void 0;
223
+ const kind = props.fieldType === FIELD_TYPE.UDI || props.bizType === FIELD_TYPE.UDI ? "udi" : props.bizType === FIELD_TYPE.OPERATION_RECEIVE_QTY ? "receive" : props.fieldType === FIELD_TYPE.INSPECTION_MODULE_QTY || props.bizType === FIELD_TYPE.INSPECTION_MODULE_QTY ? "inspection" : props.tmplId && [FIELD_TYPE.INTEGER, FIELD_TYPE.LONG].includes(props.fieldType) ? "count" : this.info.isMockReport && props.fieldType === FIELD_TYPE.RECORD_NO && props.newSpecificConfig?.newSnNo ? "recordNo" : void 0;
217
224
  if (!kind || !fieldId || props.isFieldModel) continue;
218
225
  for (const { row } of listRuntimeFieldRows(
219
226
  this.record,
@@ -225,11 +232,13 @@ class RuntimeFieldInitializer {
225
232
  if (this.initialized.get(key) === toRaw(row)) continue;
226
233
  this.initialized.set(key, toRaw(row));
227
234
  if (props.subFieldKey ? row.id_ : (this.info.instanceStatus ?? this.metadata.instanceStatus) !== InstanceStatusValues.UNFILLED) {
228
- if (kind !== "recordNo") continue;
235
+ if (kind !== "recordNo" && kind !== "inspection") continue;
229
236
  }
230
237
  const previous = row[fieldId];
231
238
  if (kind === "udi" && isPresent(previous)) continue;
232
239
  const path = this.record.formState.getFieldPath(row, fieldId);
240
+ if (kind === "inspection" && (isPresent(previous) || this.record.formState.isUserModified(path)))
241
+ continue;
233
242
  this.tasks.add(key);
234
243
  const task = this.record.asyncTasks.run(
235
244
  key,
@@ -251,7 +260,11 @@ class RuntimeFieldInitializer {
251
260
  sheetId,
252
261
  blockOnFailure: false
253
262
  }
254
- ).finally(() => this.tasks.delete(key));
263
+ ).finally(() => {
264
+ this.tasks.delete(key);
265
+ if (kind === "inspection" && this.initialized.get(key) === toRaw(row) && !isPresent(row[fieldId]))
266
+ this.initialized.delete(key);
267
+ });
255
268
  pending.push(task);
256
269
  }
257
270
  }
@@ -263,18 +276,31 @@ class RuntimeFieldInitializer {
263
276
  }
264
277
  await Promise.allSettled(pending);
265
278
  }
266
- request(key, fetch) {
279
+ request(key, fetch, cacheResult = true) {
267
280
  const existing = this.requests.get(key);
268
281
  if (existing) return existing;
269
- const task = fetch().catch((error) => {
270
- this.requests.delete(key);
271
- throw error;
272
- });
282
+ const task = fetch().then(
283
+ (value) => {
284
+ if (!cacheResult) this.requests.delete(key);
285
+ return value;
286
+ },
287
+ (error) => {
288
+ this.requests.delete(key);
289
+ throw error;
290
+ }
291
+ );
273
292
  this.requests.set(key, task);
274
293
  return task;
275
294
  }
276
295
  async readDefault(kind, props) {
277
296
  if (kind === "recordNo") return props.newSpecificConfig.newSnNo;
297
+ if (kind === "inspection") {
298
+ return this.request(
299
+ `inspection:${this.metadata.txnInstId ?? ""}`,
300
+ () => fetchInspectionModuleQty(this.metadata.txnInstId),
301
+ false
302
+ );
303
+ }
278
304
  if (kind === "count") {
279
305
  const params = { ...JSON.parse(this.metadata.params || "{}"), ...this.info.paramsConfig };
280
306
  const name = params.materialNo || this.metadata.materialNo;
@@ -386,7 +412,7 @@ function getSourceFields(record, expression, currentSubtable) {
386
412
  });
387
413
  }
388
414
  function isEmptyValue(value) {
389
- return value === void 0 || value === null || value === "";
415
+ return value === void 0 || value === null || typeof value === "string" && value.trim() === "" || Array.isArray(value) && value.length === 0;
390
416
  }
391
417
  function getRulePaths(record, props, targetFieldId, modelKey, scopeFieldId = targetFieldId) {
392
418
  const subtableField = props.subFieldKey;
@@ -491,6 +517,13 @@ class RuntimeRuleCompiler {
491
517
  const props = widget.props ?? {};
492
518
  const targetFieldId = getRuntimeDataFieldId(props);
493
519
  if (!targetFieldId) return;
520
+ const fieldMain = findFieldMain(props.bizType, props.fieldType);
521
+ const tableProfile = getProfileByTableType(props.subModelType) ?? getBusinessProfileByRefModelType(props.subModelType);
522
+ const tableProps = tableProfile && isBusinessSubTableProfile(tableProfile) ? findFieldProfile(tableProfile, props.field)?.defaultProps : void 0;
523
+ const numeric = fieldMain?.render === "rd:number" || fieldMain?.render === "rd:double";
524
+ const defaultMinValue = numeric && [tableProps, fieldMain?.defaultProps].some(
525
+ (defaults2) => defaults2?.enableRangeValidate === true && defaults2.minValidateMode === RangeValidateMode.Fixed_Number && defaults2.minValue === 0
526
+ ) ? 0 : void 0;
494
527
  getRulePaths(
495
528
  this.record,
496
529
  props,
@@ -510,6 +543,7 @@ class RuntimeRuleCompiler {
510
543
  const rules = assembleRules({
511
544
  showRequired: state.required,
512
545
  fieldType: props.fieldType,
546
+ defaultMinValue,
513
547
  validatorInfo: {
514
548
  showModelName: props.newSpecificConfig?.newModelName,
515
549
  showModelKey: props.modelKey ?? this.basicInfo.modelKey,
@@ -694,13 +728,30 @@ class RuntimeRuleCompiler {
694
728
  const expression = assignment?.expression || props.formulaExpr;
695
729
  if (!expression || !targetFieldId) return;
696
730
  const strategy = assignment?.strategy ?? ASSIGNMENTSTRATEGY_ENUM.alwaysCover;
697
- if (!isLegacyFormula && strategy === ASSIGNMENTSTRATEGY_ENUM.notCoveredForever) {
698
- listRuntimeFieldRows(this.record, subFieldKey, scopeFieldId).forEach((target) => {
699
- const row = this.getWritableRow(target.row, props);
700
- if (isEmptyValue(row[targetFieldId])) return;
701
- const path = formState.getFieldPath(row, targetFieldId);
731
+ let assignmentStates = /* @__PURE__ */ new WeakMap();
732
+ const readInputs = (target) => cloneDeep(resolveFormulaData(expression, target.row, formState.state));
733
+ const rememberTarget = (target, inputs) => {
734
+ const row = props.isFieldModel ? target.row._OPCT : target.row;
735
+ const path = formState.getFieldPath(row ?? target.row, targetFieldId);
736
+ assignmentStates.set(toRaw(target.row), { inputs, path });
737
+ if (strategy === ASSIGNMENTSTRATEGY_ENUM.notCoveredForever && !isEmptyValue(row?.[targetFieldId]))
702
738
  formState.markUserModified(path);
703
- });
739
+ };
740
+ const resetAssignmentState = () => {
741
+ assignmentStates = /* @__PURE__ */ new WeakMap();
742
+ listRuntimeFieldRows(this.record, subFieldKey, scopeFieldId).forEach(
743
+ (target) => rememberTarget(target, readInputs(target))
744
+ );
745
+ };
746
+ if (!isLegacyFormula) {
747
+ resetAssignmentState();
748
+ this.unregisters.push(
749
+ formState.subscribe((change) => {
750
+ if (change.source !== "restore" || change.restoreScope === "fields" || change.paths.every((path) => path.endsWith("_lb_")))
751
+ return;
752
+ resetAssignmentState();
753
+ })
754
+ );
704
755
  }
705
756
  this.unregisters.push(
706
757
  dependencies.register({
@@ -709,20 +760,42 @@ class RuntimeRuleCompiler {
709
760
  sheetId,
710
761
  sourceFields: getSourceFields(this.record, expression, subFieldKey),
711
762
  structureFields,
712
- run: async (change, execution) => {
763
+ run: async (_change, execution) => {
713
764
  if (this.disposed) return;
714
- if (!isLegacyFormula && change.revision === 0 && change.source === "system") return;
715
765
  if (!this.canWriteFormulas()) return;
716
766
  const results = await Promise.all(
717
767
  listRuntimeFieldRows(this.record, subFieldKey, scopeFieldId).map(async (target) => {
718
768
  const row = this.getWritableRow(target.row, props);
719
769
  const path = formState.getFieldPath(row, targetFieldId);
720
- if (!isLegacyFormula && strategy !== ASSIGNMENTSTRATEGY_ENUM.alwaysCover && formState.isUserModified(path))
770
+ const inputs = isLegacyFormula ? void 0 : readInputs(target);
771
+ const previous = assignmentStates.get(toRaw(target.row));
772
+ if (!isLegacyFormula) {
773
+ if (!previous) rememberTarget(target);
774
+ else if (previous.path !== path && formState.isUserModified(previous.path)) {
775
+ formState.markUserModified(path);
776
+ formState.clearUserModified(previous.path);
777
+ }
778
+ }
779
+ if (!isLegacyFormula && strategy !== ASSIGNMENTSTRATEGY_ENUM.alwaysCover && formState.isUserModified(path)) {
780
+ assignmentStates.set(toRaw(target.row), { inputs, path });
721
781
  return;
722
- const result = await calculateFormula(expression, row, formState.state);
723
- const empty = isEmptyValue(result) || typeof result === "string" && result.trim() === "" || Array.isArray(result) && result.length === 0;
782
+ }
783
+ if (!isLegacyFormula && previous?.inputs && !previous.pending && isEqual(previous.inputs, inputs))
784
+ return;
785
+ if (!isLegacyFormula)
786
+ assignmentStates.set(toRaw(target.row), {
787
+ inputs: previous?.inputs,
788
+ path,
789
+ pending: true
790
+ });
791
+ const result = await calculateFormula(
792
+ expression,
793
+ isLegacyFormula ? row : target.row,
794
+ formState.state
795
+ );
796
+ const empty = isEmptyValue(result);
724
797
  const value = isLegacyFormula ? empty ? null : Number(result) : formatDateCompliance(result, props.newSpecificConfig?.mappingType);
725
- return { target, row, path, value };
798
+ return { target, row, path, value, inputs };
726
799
  })
727
800
  );
728
801
  if (!this.canWriteFormulas() || !execution.isCurrent()) return;
@@ -730,7 +803,9 @@ class RuntimeRuleCompiler {
730
803
  "formula",
731
804
  () => results.forEach((result) => {
732
805
  if (!result) return;
733
- const { target, row, path, value } = result;
806
+ const { target, row, path, value, inputs } = result;
807
+ if (!isLegacyFormula)
808
+ assignmentStates.set(toRaw(target.row), { inputs, path });
734
809
  if (!isLegacyFormula && strategy !== ASSIGNMENTSTRATEGY_ENUM.alwaysCover && formState.isUserModified(path))
735
810
  return;
736
811
  if (Object.is(row[targetFieldId], value)) return;
@@ -748,7 +823,12 @@ class RuntimeRuleCompiler {
748
823
  }
749
824
  getWritableRow(row, props) {
750
825
  if (!props.isFieldModel) return row;
751
- if (!row._OPCT) this.record.formState.setObjectField(row, "_OPCT", { _DICT: {} }, "restore");
826
+ if (!row._OPCT)
827
+ this.record.formState.transaction(
828
+ "restore",
829
+ () => this.record.formState.setObjectField(row, "_OPCT", { _DICT: {} }, "restore"),
830
+ { restoreScope: "fields" }
831
+ );
752
832
  return row._OPCT;
753
833
  }
754
834
  /** 公式变更记录也属于实例生命周期,未打开的 Sheet 不再漏记。 */
@@ -809,6 +889,10 @@ class FormTmplBomController {
809
889
  field2TableMap = {};
810
890
  /** 默认物料消耗模式 */
811
891
  defaultMCPattern = MaterialConsumptionPatternEnum.RECORD;
892
+ /** 表单实例身份与 BOM 数据是否存在无关,模板展示也会创建完整控制器。 */
893
+ hasFormInstance = false;
894
+ /** 按页面中的表解析后的配置,页面与打印共用。 */
895
+ resolvedTmplBomList = [];
812
896
  constructor() {
813
897
  }
814
898
  /**
@@ -826,7 +910,9 @@ class FormTmplBomController {
826
910
  productQty: this.productQty,
827
911
  historyData: this.historyData,
828
912
  field2TableMap: this.field2TableMap,
829
- defaultMCPattern: this.defaultMCPattern
913
+ defaultMCPattern: this.defaultMCPattern,
914
+ hasFormInstance: this.hasFormInstance,
915
+ resolvedTmplBomList: this.resolvedTmplBomList
830
916
  })
831
917
  );
832
918
  (view.tmplBomList ?? []).forEach((config) => {
@@ -878,11 +964,11 @@ class FormTmplBomController {
878
964
  * @readonly
879
965
  */
880
966
  get bomEntries() {
881
- return this.formInstBom?.bomEntries;
967
+ return this.formInstBom?.bomEntries ?? [];
882
968
  }
883
969
  /** 表单模板bom信息配置列表 */
884
970
  get tmplBomList() {
885
- return this.formInstBom?.formTmplBomList;
971
+ return this.resolvedTmplBomList;
886
972
  }
887
973
  /**
888
974
  * bom那边指定的当前工序的开关
@@ -891,30 +977,55 @@ class FormTmplBomController {
891
977
  get enableSequenceLoading() {
892
978
  return !!this.formInstBom?.sequenceEntries?.[0]?.enabled_;
893
979
  }
894
- /**
895
- * 初始化模板的物料消耗的配置
896
- */
980
+ createDefaultConfig(table) {
981
+ return {
982
+ table_key_: `${table.tableKey}:${table.masterSubField}`,
983
+ material_loading_model_enabled_: false,
984
+ material_consumption_pattern_: MaterialConsumptionPatternEnum.RECORD,
985
+ bom_init_enabled_: false,
986
+ personal_bom_enabled_: false,
987
+ sequence_loading_enabled_: false,
988
+ entries_: []
989
+ };
990
+ }
991
+ /** 有实例时读取实例配置,无实例时仅创建默认展示控制器。 */
897
992
  async init(data) {
898
- if (!data.formInstBom) {
899
- return;
900
- }
901
- this.operationId = data.operationId;
902
- this.materialNo = data.materialNo;
903
- this.formInstBom = data.formInstBom;
904
- this.productQty = data.productQty ?? 0;
905
- this.historyData = await fetchHistoryConsume({
906
- production_identification_id_: this.formInstBom.productionIdentificationId,
907
- routing_operation_id_: this.operationId
908
- });
909
- const isGranted = await isBomGranted();
910
- this.defaultMCPattern = isGranted ? MaterialConsumptionPatternEnum.BOM : MaterialConsumptionPatternEnum.RECORD;
993
+ this.hasFormInstance = data.hasFormInstance;
994
+ this.operationId = data.operationId ?? "";
995
+ this.materialNo = data.materialNo ?? "";
996
+ this.formInstBom = this.hasFormInstance ? data.formInstBom ?? null : null;
997
+ this.productQty = this.formInstBom ? data.productQty ?? 0 : data.productQty;
998
+ this.historyData = [];
999
+ this.defaultMCPattern = MaterialConsumptionPatternEnum.RECORD;
911
1000
  this.tableControllers = {};
912
- this.tmplBomList.forEach((cur) => {
913
- const controller = new MaterialConsumeTableController(this, cur);
914
- const [tableKey, fieldKey] = cur.table_key_.split(":");
915
- this.tableControllers[tableKey] = controller;
916
- this.field2TableMap[fieldKey] = tableKey;
917
- }, {});
1001
+ this.field2TableMap = {};
1002
+ const instanceConfigs = new Map(
1003
+ (this.formInstBom?.formTmplBomList ?? []).filter((config) => !config.deleted_ && config.table_key_).map((config) => [config.table_key_, config])
1004
+ );
1005
+ this.resolvedTmplBomList = data.materialConsumeTableList.map((table) => {
1006
+ const key = `${table.tableKey}:${table.masterSubField}`;
1007
+ const source = instanceConfigs.get(key);
1008
+ if (!source) return this.createDefaultConfig(table);
1009
+ const config = cloneDeep(source);
1010
+ config.entries_ ??= [];
1011
+ return config;
1012
+ });
1013
+ if (this.formInstBom) {
1014
+ if (this.formInstBom.productionIdentificationId && this.operationId) {
1015
+ this.historyData = await fetchHistoryConsume({
1016
+ production_identification_id_: this.formInstBom.productionIdentificationId,
1017
+ routing_operation_id_: this.operationId
1018
+ });
1019
+ }
1020
+ const isGranted = await isBomGranted();
1021
+ this.defaultMCPattern = isGranted ? MaterialConsumptionPatternEnum.BOM : MaterialConsumptionPatternEnum.RECORD;
1022
+ }
1023
+ data.materialConsumeTableList.forEach((table, index) => {
1024
+ const config = this.resolvedTmplBomList[index];
1025
+ const controller = new MaterialConsumeTableController(this, config);
1026
+ this.tableControllers[table.tableKey] = controller;
1027
+ this.field2TableMap[table.masterSubField] = table.tableKey;
1028
+ });
918
1029
  }
919
1030
  /**
920
1031
  * 根据字段key获取子表控制器
@@ -959,6 +1070,28 @@ class FormTmplBomController {
959
1070
  });
960
1071
  });
961
1072
  }
1073
+ /** 全部 Sheet 的消耗表统一在 LOADED 前准备。 */
1074
+ initializeFormState(opts) {
1075
+ Object.entries(this.field2TableMap).forEach(([field, tableKey]) => {
1076
+ const controller = this.tableControllers[tableKey];
1077
+ if (!controller) return;
1078
+ controller.prepareInitialData({
1079
+ formState: opts.formState,
1080
+ field,
1081
+ dataStatus: opts.dataStatus,
1082
+ defaultRowData: renderUtils.getDefaultValueInfo({
1083
+ defaultDataMap: opts.defaultDataMap,
1084
+ key: field
1085
+ })
1086
+ });
1087
+ });
1088
+ }
1089
+ /** 钩子若修改数量依赖,在创建 Store 和分页前按原规则重算。 */
1090
+ finalizeInitialQuantities() {
1091
+ Object.values(this.tableControllers).forEach((controller) => {
1092
+ controller.syncQtyRequiredFromBomIfChanged();
1093
+ });
1094
+ }
962
1095
  async submitValidate() {
963
1096
  const results = await Promise.all(
964
1097
  Object.values(this.tableControllers).map((c10) => c10.submitValidate())
@@ -975,6 +1108,79 @@ class FormTmplBomController {
975
1108
  };
976
1109
  }
977
1110
  }
1111
+ async function prepareObjectProductDefaults({
1112
+ enabled,
1113
+ fields,
1114
+ objectInitialValues = [],
1115
+ onWarning
1116
+ }) {
1117
+ const defaults2 = /* @__PURE__ */ new WeakMap();
1118
+ if (!enabled) return defaults2;
1119
+ const requests = /* @__PURE__ */ new Map();
1120
+ const tasks = [];
1121
+ function fetchProduct(productId) {
1122
+ const existing = requests.get(productId);
1123
+ if (existing) return existing;
1124
+ const request = (async () => {
1125
+ const result = await api.apaas.modelComprehensive.getBizServiceModelCategoryModelKeyBsKey(
1126
+ {
1127
+ modelCategory: "entity",
1128
+ modelKey: "em_product",
1129
+ bsKey: "rdoGetVersionById"
1130
+ },
1131
+ // 沿用现有接口约定,传完整默认值,不拆分版本 ID。
1132
+ { id: productId }
1133
+ );
1134
+ const product = result?.data;
1135
+ if (!product || typeof product !== "object" || Array.isArray(product) || Object.keys(product).length === 0) {
1136
+ return void 0;
1137
+ }
1138
+ return { ...product, _DICT: result?.dict ?? product._DICT };
1139
+ })();
1140
+ requests.set(productId, request);
1141
+ return request;
1142
+ }
1143
+ for (const entry of fields) {
1144
+ if (!entry || typeof entry !== "object") continue;
1145
+ const field = entry;
1146
+ if (typeof field.fieldId !== "string" || !field.belongingObject || field.fieldType !== FIELD_TYPE.PRODUCT || field.isFieldModel || field.subFieldKey || field.subModelKey) {
1147
+ continue;
1148
+ }
1149
+ const configured = objectInitialValues.find(
1150
+ (item) => item.objectField === field.belongingObject
1151
+ );
1152
+ if (!configured?.values || !Object.prototype.hasOwnProperty.call(configured.values, field.fieldId)) {
1153
+ continue;
1154
+ }
1155
+ const productDefault = {
1156
+ value: configured.values[field.fieldId]
1157
+ };
1158
+ defaults2.set(entry, productDefault);
1159
+ const productId = productDefault.value;
1160
+ const needsAutofill = field.enableAutofill !== false && field.autofillRules?.some((rule) => !!rule.toField);
1161
+ if (!needsAutofill || typeof productId !== "string" || productId === "") continue;
1162
+ tasks.push(
1163
+ fetchProduct(productId).then(
1164
+ (sourceData) => {
1165
+ if (!sourceData) {
1166
+ const objectName = configured.objectFieldName || field.belongingObject;
1167
+ onWarning?.(
1168
+ `「数据 → 对象初始化 → ${objectName} → 配置」中的默认物料未查到详情(字段 ${field.fieldId},物料 ${productId}),已跳过自动填充。`
1169
+ );
1170
+ return;
1171
+ }
1172
+ productDefault.sourceData = sourceData;
1173
+ },
1174
+ (error) => {
1175
+ const reason = error instanceof Error ? error.message : String(error);
1176
+ throw new Error(`对象初始化数据填充失败,字段 ${field.fieldId}:${reason}`);
1177
+ }
1178
+ )
1179
+ );
1180
+ }
1181
+ await Promise.all(tasks);
1182
+ return defaults2;
1183
+ }
978
1184
  async function getModelQueries(opts) {
979
1185
  const isEdhr = await isEdhrSuite();
980
1186
  if (!isEdhr || !opts.mainMaterialNo) {
@@ -1017,11 +1223,13 @@ async function fillSterilizationDate(txnInstId, metadata, formState) {
1017
1223
  const rows = formState[subFieldKey];
1018
1224
  if (Array.isArray(rows)) {
1019
1225
  rows.forEach((row) => {
1020
- if (row && typeof row === "object") row[field] = date;
1226
+ if (row && typeof row === "object" && !row[field]) {
1227
+ row[field] = date;
1228
+ }
1021
1229
  });
1022
1230
  }
1023
1231
  } else {
1024
- formState[field] = date;
1232
+ if (!formState[field]) formState[field] = date;
1025
1233
  }
1026
1234
  });
1027
1235
  }
@@ -1140,7 +1348,7 @@ function assertUniqueSubTableOwnership(sheets) {
1140
1348
  });
1141
1349
  }
1142
1350
  function createRuntimeInstanceInitializer(props, payload, getConsumeData) {
1143
- async function initializeRuntimeInstance(id, result) {
1351
+ async function initializeRuntimeInstance(id, result, options = {}) {
1144
1352
  if (isEmpty(result)) return;
1145
1353
  const { selfInfo, paramsConfig, fillModeType } = result || {};
1146
1354
  setFormulaParamsConfig({
@@ -1151,13 +1359,14 @@ function createRuntimeInstanceInitializer(props, payload, getConsumeData) {
1151
1359
  let runtimeFormStateStore;
1152
1360
  let scriptRunner;
1153
1361
  try {
1154
- const normalizedRuntime = normalizeRuntime(selfInfo?.runtimeJson || "{}");
1362
+ const normalizedRuntime = normalizeRuntime(selfInfo?.runtimeJson || "{}", selfInfo.formType);
1155
1363
  const tid = result.tid;
1156
1364
  const uniqueId = `${tid}_${uuid2(8)}`;
1157
1365
  const runtimeContext = createRuntimeInstanceContext({
1158
1366
  uniqueId,
1159
1367
  instanceId: id,
1160
1368
  templateId: tid,
1369
+ formType: selfInfo.formType,
1161
1370
  runtime: normalizedRuntime,
1162
1371
  defaultData: {}
1163
1372
  });
@@ -1299,6 +1508,8 @@ function createRuntimeInstanceInitializer(props, payload, getConsumeData) {
1299
1508
  }
1300
1509
  await tmplBomC.init({
1301
1510
  formInstBom: selfInfo.formInstBom,
1511
+ materialConsumeTableList: businessIndex.materialConsumeTableList,
1512
+ hasFormInstance: isFormInstance,
1302
1513
  operationId: paramsConfig?.routingOperationId,
1303
1514
  materialNo,
1304
1515
  productQty: paramsConfig?.productQty
@@ -1370,7 +1581,18 @@ function createRuntimeInstanceInitializer(props, payload, getConsumeData) {
1370
1581
  params: { id: paramsConfig?.warehouseId }
1371
1582
  }
1372
1583
  ]);
1584
+ const objectProductDefaults = await prepareObjectProductDefaults({
1585
+ enabled: fillModeType === RenderModeEnum.FormMode && selfInfo.dataStatus !== "STASH" && selfInfo.dataStatus !== "SUBMIT",
1586
+ fields: fieldInfoMap.useDefaultValueFields,
1587
+ objectInitialValues: runtimeContext.formConfig.objectInitialValues,
1588
+ onWarning: (content) => {
1589
+ window.NocodeAdapter.openUtil?.message({ type: "warning", content, duration: 8 });
1590
+ }
1591
+ });
1592
+ const defaultValueOrigins = new DesignerDefaultValues();
1373
1593
  const defaultDataMap = renderUtils.getDefaultValueMapByField({
1594
+ onDesignerDefault: (field, value) => defaultValueOrigins.add(field.subFieldKey, field.fieldId, value),
1595
+ objectProductDefaults,
1374
1596
  defaultValueFields: fieldInfoMap.useDefaultValueFields,
1375
1597
  mainMaterialNo: paramsConfig?.materialNo || selfInfo.materialNo,
1376
1598
  mainRelatedLotNo: paramsConfig?.relatedLotNo,
@@ -1399,6 +1621,7 @@ function createRuntimeInstanceInitializer(props, payload, getConsumeData) {
1399
1621
  tmplBomC.handleDefaultMap(defaultDataMap);
1400
1622
  runtimeContext.defaultData = defaultDataMap;
1401
1623
  const defaultData = transformUtils.getDefaultData({
1624
+ defaultValueOrigins,
1402
1625
  defaultDataMap,
1403
1626
  subTableInfo,
1404
1627
  viewMode: result.fillModeType,
@@ -1437,6 +1660,7 @@ function createRuntimeInstanceInitializer(props, payload, getConsumeData) {
1437
1660
  isMockReport: payload.isMockReport
1438
1661
  });
1439
1662
  const formState = transformUtils.conversionFormState({
1663
+ defaultValueOrigins,
1440
1664
  defaultData,
1441
1665
  paramData,
1442
1666
  customData,
@@ -1454,7 +1678,7 @@ function createRuntimeInstanceInitializer(props, payload, getConsumeData) {
1454
1678
  ]
1455
1679
  });
1456
1680
  if (fillModeType === RenderModeEnum.FormMode) {
1457
- if (!payload.isMockReport) {
1681
+ if (options.initializeValues !== false && !payload.isMockReport) {
1458
1682
  await fillSterilizationDate(selfInfo.txnInstId, fieldInfoMap.fieldMetadata, formState);
1459
1683
  }
1460
1684
  const floatingFields = sheetEntries.flatMap((entry) => {
@@ -1463,6 +1687,21 @@ function createRuntimeInstanceInitializer(props, payload, getConsumeData) {
1463
1687
  });
1464
1688
  initializeSealFields(floatingFields, formState);
1465
1689
  }
1690
+ tmplBomC.initializeFormState({
1691
+ formState,
1692
+ dataStatus: selfInfo.dataStatus,
1693
+ defaultDataMap
1694
+ });
1695
+ await transformUtils.getEventInitDataLoaded({
1696
+ formConfig: runtimeContext.formConfig,
1697
+ formState,
1698
+ viewMode: fillModeType,
1699
+ dataStatus: selfInfo.dataStatus,
1700
+ ofCtx: { formPrint: payload.formPrint, id: result.id }
1701
+ }).catch((error) => {
1702
+ console.error("Error in getEventInitDataLoaded:", error);
1703
+ });
1704
+ tmplBomC.finalizeInitialQuantities();
1466
1705
  runtimeFormStateStore = new RuntimeFormStateStore(
1467
1706
  formState,
1468
1707
  // 子表信息覆盖普通/固定/检验表、二维关联列以及各类业务表;不能只依赖已放置字段。
@@ -1521,6 +1760,7 @@ function createRuntimeInstanceInitializer(props, payload, getConsumeData) {
1521
1760
  // 注册表显式接收初始化阶段创建的 Store,避免通过 context.services 中转。
1522
1761
  runtimeFormStateStore,
1523
1762
  runtimeFieldMetadata: fieldInfoMap.fieldMetadata,
1763
+ defaultValueOrigins,
1524
1764
  // 与 Store 一起显式移交给实例记录,basicInfo 不再携带脚本服务。
1525
1765
  scriptRunner,
1526
1766
  basicInfo: {
@@ -1557,7 +1797,9 @@ function createRuntimeInstanceInitializer(props, payload, getConsumeData) {
1557
1797
  productSearchFields: payload?.deviceConfig?.defaultProductSearchFields ?? "",
1558
1798
  showPrintFieldBg: paramsConfig?.showPrintFieldBg,
1559
1799
  paramsConfig,
1560
- instanceStatus: selfInfo.instanceStatus
1800
+ businessType: selfInfo.businessType,
1801
+ instanceStatus: selfInfo.instanceStatus,
1802
+ dataStatus: selfInfo.dataStatus
1561
1803
  },
1562
1804
  selfInfo: runtimeSelfInfo
1563
1805
  };
@@ -1602,7 +1844,6 @@ function bindRuntimeBusinessServices(runtimeRegistry, record, dataStatus) {
1602
1844
  if (!controller) continue;
1603
1845
  const field = item.masterSubField;
1604
1846
  controller.bindRuntime({
1605
- ownerId: uniqueId,
1606
1847
  tableDataRef: computed({
1607
1848
  get: () => record.formState.state[field] ?? [],
1608
1849
  set: (val) => {
@@ -1610,18 +1851,13 @@ function bindRuntimeBusinessServices(runtimeRegistry, record, dataStatus) {
1610
1851
  }
1611
1852
  }),
1612
1853
  mainFormState: computed(() => record.formState.state),
1613
- dataStatus,
1614
- defaultRowData: renderUtils.getDefaultValueInfo({
1615
- defaultDataMap: record.context.defaultData,
1616
- key: field
1617
- })
1854
+ dataStatus
1618
1855
  });
1619
1856
  stops.push(
1620
1857
  watch(
1621
1858
  () => controller.materialNoNum,
1622
1859
  () => {
1623
- if (controller.dataStatus === "SUBMIT") return;
1624
- controller.syncQtyRequiredFromBom();
1860
+ controller.syncQtyRequiredFromBomIfChanged();
1625
1861
  },
1626
1862
  { immediate: true }
1627
1863
  )
@@ -1889,7 +2125,13 @@ function createRuntimePersistenceAccess(runtimeRegistry, props, payload) {
1889
2125
  const signatureKeys = (runtimeRecord.context.businessIndex.useSignatureFields || []).map(
1890
2126
  (item) => item.fieldId
1891
2127
  );
1892
- const idsFormState = transformUtils.getFormDataIdsMap(newFormState, signatureKeys);
2128
+ const idsFormState = transformUtils.getFormDataIdsMap(
2129
+ newFormState,
2130
+ signatureKeys,
2131
+ (path) => runtimeRecord.fields.findByPath(path).some(
2132
+ ({ widget, subFieldKey }) => subFieldKey !== path && [FIELD_TYPE.DATE, FIELD_TYPE.DATE_TIME].includes(widget?.props.fieldType)
2133
+ )
2134
+ );
1893
2135
  if (saveToken ? !runtimeRecord.persistence.completeSave(saveToken) : requestedRevision !== runtimeRecord.formState.revision) {
1894
2136
  return false;
1895
2137
  }
@@ -1966,6 +2208,139 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1966
2208
  }
1967
2209
  });
1968
2210
  const InspectionDecisionPromptModal = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-9c14035f"]]);
2211
+ function createMaterialConsumeObjectValidation(options) {
2212
+ const { record, getInfo, isCurrent, shouldSkip, applyComments } = options;
2213
+ let enabled = false;
2214
+ let disposed = false;
2215
+ let submitting = 0;
2216
+ let generation = 0;
2217
+ let lastRevision = -1;
2218
+ let timer;
2219
+ let paths = /* @__PURE__ */ new Set();
2220
+ const unlocated = /* @__PURE__ */ new Set();
2221
+ const alive = () => !disposed && isCurrent();
2222
+ function cancelLive() {
2223
+ generation++;
2224
+ if (timer !== void 0) clearTimeout(timer);
2225
+ timer = void 0;
2226
+ }
2227
+ function calcObjectError(error) {
2228
+ const info = getInfo();
2229
+ const modelKey = info?.modelKey || record.context.businessIndex.modelDisplay.key;
2230
+ const descriptor = record.fields.findField({ modelKey, fieldId: error.field });
2231
+ const props = descriptor?.widget?.props;
2232
+ if (!props?.field || descriptor?.subFieldKey || props.subFieldKey) {
2233
+ const key = modelKey + "." + error.field;
2234
+ if (!unlocated.has(key)) {
2235
+ unlocated.add(key);
2236
+ console.warn("物料消耗对象错误未定位到主表控件,保留在校验清单:", key);
2237
+ }
2238
+ return { error, path: void 0 };
2239
+ }
2240
+ const path = buildRuntimeFieldPath({
2241
+ ...props,
2242
+ modelKey: props.modelKey ?? info?.modelKey,
2243
+ fieldId: props.field
2244
+ });
2245
+ return { error: { ...error, field: path }, path };
2246
+ }
2247
+ function replaceObjectFields(fields) {
2248
+ if (!alive()) return;
2249
+ const next = { ...getInfo()?.mcValidatorMessageMap ?? {} };
2250
+ paths.forEach((path) => delete next[path]);
2251
+ Object.assign(next, fields);
2252
+ paths = new Set(Object.keys(fields));
2253
+ applyComments(next);
2254
+ }
2255
+ function replaceTableFields(fields) {
2256
+ if (!alive()) return;
2257
+ const current = getInfo()?.mcValidatorMessageMap ?? {};
2258
+ const next = { ...fields ?? {} };
2259
+ paths.forEach((path) => {
2260
+ if (current[path]) {
2261
+ next[path] = [...next[path] ?? [], ...current[path]];
2262
+ }
2263
+ });
2264
+ applyComments(next);
2265
+ }
2266
+ function clear() {
2267
+ cancelLive();
2268
+ enabled = false;
2269
+ lastRevision = -1;
2270
+ replaceObjectFields({});
2271
+ }
2272
+ async function validate(live = false) {
2273
+ cancelLive();
2274
+ if (!alive()) return;
2275
+ if (shouldSkip()) {
2276
+ clear();
2277
+ return { isValid: true };
2278
+ }
2279
+ const ticket = generation;
2280
+ const revision = record.formState.revision;
2281
+ const info = getInfo();
2282
+ const display = record.context.businessIndex.modelDisplay;
2283
+ const errors = await validateObjectBomQtyOnSubmit({
2284
+ formState: record.formState.state,
2285
+ objectFieldList: record.context.formConfig.objectFieldList,
2286
+ formInstBom: record.context.services.tmplBomController?.formInstBom,
2287
+ showModelName: display.name,
2288
+ showModelKey: display.key || info?.modelKey || ""
2289
+ });
2290
+ if (!alive() || generation !== ticket || record.formState.revision !== revision || live && getInfo()?.renderModeType !== RenderModeEnum.FormMode)
2291
+ return;
2292
+ const fields = {};
2293
+ const comments = {};
2294
+ for (const source of errors) {
2295
+ const adapted = calcObjectError(source);
2296
+ (fields[adapted.error.field] ??= []).push(adapted.error);
2297
+ if (adapted.path) (comments[adapted.path] ??= []).push(adapted.error);
2298
+ }
2299
+ enabled = !!record.context.formConfig.objectFieldList?.length;
2300
+ lastRevision = revision;
2301
+ replaceObjectFields(comments);
2302
+ return { isValid: !errors.length, fields: Object.keys(fields).length ? fields : void 0 };
2303
+ }
2304
+ function requestLive() {
2305
+ cancelLive();
2306
+ if (!alive() || !enabled || submitting > 0 || getInfo()?.renderModeType !== RenderModeEnum.FormMode)
2307
+ return;
2308
+ const ticket = generation;
2309
+ timer = setTimeout(() => {
2310
+ timer = void 0;
2311
+ void (async () => {
2312
+ await record.controller?.waitUntilPrepared();
2313
+ await record.asyncTasks.waitForRequired();
2314
+ if (!alive() || generation !== ticket || submitting > 0 || getInfo()?.renderModeType !== RenderModeEnum.FormMode)
2315
+ return;
2316
+ await validate(true);
2317
+ })().catch((error) => {
2318
+ if (alive()) console.error("物料消耗对象实时校验失败", error);
2319
+ });
2320
+ }, 300);
2321
+ }
2322
+ return {
2323
+ validate,
2324
+ requestLive,
2325
+ replaceTableFields,
2326
+ clear,
2327
+ beginSubmit() {
2328
+ submitting++;
2329
+ cancelLive();
2330
+ },
2331
+ endSubmit() {
2332
+ submitting--;
2333
+ if (alive() && submitting === 0 && enabled && lastRevision !== record.formState.revision)
2334
+ requestLive();
2335
+ },
2336
+ dispose() {
2337
+ disposed = true;
2338
+ cancelLive();
2339
+ paths.clear();
2340
+ unlocated.clear();
2341
+ }
2342
+ };
2343
+ }
1969
2344
  function applyValidationComments(info, comments, kind) {
1970
2345
  if (!info) return;
1971
2346
  const locationKey = kind === "field" ? "validatorLocationList" : "mcValidatorLocationList";
@@ -1983,6 +2358,29 @@ function applyValidationComments(info, comments, kind) {
1983
2358
  info[messageKey] = map;
1984
2359
  }
1985
2360
  function createRuntimeValidationBinding(runtimeRegistry, getInfo, platformType) {
2361
+ const objectValidations = /* @__PURE__ */ new WeakMap();
2362
+ function getObjectValidation(record) {
2363
+ const existing = objectValidations.get(record);
2364
+ if (existing) return existing;
2365
+ const uniqueId = record.context.uniqueId;
2366
+ const validation = createMaterialConsumeObjectValidation({
2367
+ record,
2368
+ getInfo: () => getInfo(uniqueId),
2369
+ isCurrent: () => runtimeRegistry.get(uniqueId) === record,
2370
+ shouldSkip: () => {
2371
+ const skip = syncInspectionDecisionRule(uniqueId);
2372
+ if (skip) clearInspectionValidationState(uniqueId);
2373
+ return skip;
2374
+ },
2375
+ applyComments: (fields) => applyValidationComments(getInfo(uniqueId), fields, "material")
2376
+ });
2377
+ objectValidations.set(record, validation);
2378
+ runtimeRegistry.registerDisposable(uniqueId, () => {
2379
+ validation.dispose();
2380
+ objectValidations.delete(record);
2381
+ });
2382
+ return validation;
2383
+ }
1986
2384
  const inspectionDecisionMatched = /* @__PURE__ */ new WeakMap();
1987
2385
  const inspectionDecisionPrompting = /* @__PURE__ */ new WeakSet();
1988
2386
  function openInspectionDecisionPrompt(uniqueId, content) {
@@ -2023,11 +2421,14 @@ function createRuntimeValidationBinding(runtimeRegistry, getInfo, platformType)
2023
2421
  return matched;
2024
2422
  }
2025
2423
  function clearInspectionValidationState(uniqueId) {
2424
+ const record = runtimeRegistry.get(uniqueId);
2425
+ if (record) objectValidations.get(record)?.clear();
2026
2426
  applyValidationComments(getInfo(uniqueId), null, "field");
2027
2427
  applyValidationComments(getInfo(uniqueId), null, "material");
2028
2428
  }
2029
2429
  function bindFormValidationSync(uniqueId) {
2030
2430
  const record = runtimeRegistry.require(uniqueId);
2431
+ const objects = getObjectValidation(record);
2031
2432
  syncInspectionDecisionRule(uniqueId);
2032
2433
  const stop = record.formState.subscribe(() => {
2033
2434
  if (runtimeRegistry.get(uniqueId) !== record) return;
@@ -2038,6 +2439,7 @@ function createRuntimeValidationBinding(runtimeRegistry, getInfo, platformType)
2038
2439
  uniqueId,
2039
2440
  !suppressed && info.renderModeType === RenderModeEnum.FormMode
2040
2441
  );
2442
+ objects.requestLive();
2041
2443
  if (suppressed) return;
2042
2444
  if (info.renderModeType === RenderModeEnum.FormMode) {
2043
2445
  record.validation.requestLive("change");
@@ -2070,48 +2472,43 @@ function createRuntimeValidationBinding(runtimeRegistry, getInfo, platformType)
2070
2472
  }
2071
2473
  async function runSubmissionValidation(uniqueId) {
2072
2474
  const record = runtimeRegistry.require(uniqueId);
2073
- const formState = record.formState.state;
2074
- const bomC = record.context.services.tmplBomController;
2075
- if (syncInspectionDecisionRule(uniqueId)) {
2076
- clearInspectionValidationState(uniqueId);
2077
- return { isValid: true };
2078
- }
2079
- const res = await record.validation.validate();
2080
- if (!res || runtimeRegistry.get(uniqueId) !== record) return;
2081
- const revision = record.formState.revision;
2082
- if (bomC) {
2083
- const bomRes = await bomC.submitValidate();
2084
- if (runtimeRegistry.get(uniqueId) !== record || record.formState.revision !== revision)
2085
- return;
2086
- applyValidationComments(getInfo(uniqueId), bomRes.fields ?? null, "material");
2087
- if (!bomRes.isValid) {
2088
- merge(res, bomRes);
2089
- return res;
2475
+ const objects = getObjectValidation(record);
2476
+ objects.beginSubmit();
2477
+ try {
2478
+ if (syncInspectionDecisionRule(uniqueId)) {
2479
+ clearInspectionValidationState(uniqueId);
2480
+ return { isValid: true };
2090
2481
  }
2091
- const info = getInfo(uniqueId);
2092
- const display = record.context.businessIndex.modelDisplay;
2093
- display.name;
2094
- const showModelKey = display.key || info?.modelKey || "";
2095
- const objErrs = await validateObjectBomQtyOnSubmit({
2096
- formState: formState ?? {},
2097
- objectFieldList: record.context.formConfig.objectFieldList,
2098
- formInstBom: bomC.formInstBom,
2099
- showModelKey
2100
- });
2101
- if (runtimeRegistry.get(uniqueId) !== record || record.formState.revision !== revision)
2102
- return;
2103
- if (objErrs.length) {
2104
- const fields = {};
2105
- objErrs.forEach((e3) => {
2106
- (fields[e3.field] ??= []).push(e3);
2107
- });
2108
- const objectBomRes = { isValid: false, fields };
2109
- merge(res, objectBomRes);
2110
- applyValidationComments(info, { ...info?.validatorMessageMap ?? {}, ...fields }, "field");
2111
- return res;
2482
+ const res = await record.validation.validate();
2483
+ if (!res || runtimeRegistry.get(uniqueId) !== record) return;
2484
+ const revision = record.formState.revision;
2485
+ const bomC = record.context.services.tmplBomController;
2486
+ if (bomC) {
2487
+ const bomRes = await bomC.submitValidate();
2488
+ if (runtimeRegistry.get(uniqueId) !== record || record.formState.revision !== revision)
2489
+ return;
2490
+ objects.replaceTableFields(bomRes.fields);
2491
+ if (!bomRes.isValid) {
2492
+ merge(res, bomRes);
2493
+ return res;
2494
+ }
2495
+ const objectRes = await objects.validate();
2496
+ if (!objectRes || runtimeRegistry.get(uniqueId) !== record || record.formState.revision !== revision)
2497
+ return;
2498
+ if (!objectRes.isValid) {
2499
+ const fields = { ...res.fields ?? {} };
2500
+ for (const [path, errors] of Object.entries(objectRes.fields ?? {})) {
2501
+ fields[path] = [...fields[path] ?? [], ...errors];
2502
+ }
2503
+ return { ...res, isValid: false, fields };
2504
+ }
2505
+ } else {
2506
+ objects.clear();
2112
2507
  }
2508
+ return res;
2509
+ } finally {
2510
+ objects.endSubmit();
2113
2511
  }
2114
- return res;
2115
2512
  }
2116
2513
  function updateRenderModeType(uniqueId, mode, updateButton = false) {
2117
2514
  const record = runtimeRegistry.require(uniqueId);
@@ -2146,6 +2543,7 @@ function createRuntimeValidationBinding(runtimeRegistry, getInfo, platformType)
2146
2543
  );
2147
2544
  if (!isCurrent() || runtimeRegistry.get(uniqueId) !== record) return;
2148
2545
  syncInspectionDecisionRule(uniqueId);
2546
+ record.defaultValueValidation?.requestCheck();
2149
2547
  await record.validation.validate("display");
2150
2548
  });
2151
2549
  await record.controller.waitUntilPrepared();
@@ -2230,6 +2628,16 @@ function createRuntimeDataSourceBinding(registry, payload) {
2230
2628
  }
2231
2629
  }
2232
2630
  }
2631
+ const tableColumns = /* @__PURE__ */ new Map();
2632
+ for (const [key, target] of targets) {
2633
+ if (!target.table) continue;
2634
+ const columns = tableColumns.get(target.table) ?? /* @__PURE__ */ new Map();
2635
+ columns.set(key.slice(target.table.length + 1), target.isFieldModel ? `_OPCT.${target.field}` : target.field);
2636
+ tableColumns.set(target.table, columns);
2637
+ }
2638
+ for (const table of tableColumns.keys()) {
2639
+ targets.set(table, { field: table, isFieldModel: false });
2640
+ }
2233
2641
  const fieldFillRuntime = markRaw(
2234
2642
  createFieldFillRuntime({
2235
2643
  preserveExistingValues: true,
@@ -2238,6 +2646,8 @@ function createRuntimeDataSourceBinding(registry, payload) {
2238
2646
  getContext,
2239
2647
  getForm: () => formState.state,
2240
2648
  getFormField: (key) => {
2649
+ const columns = tableColumns.get(key);
2650
+ if (columns) return getFieldFillTable(formState.state[key], columns);
2241
2651
  const target = targets.get(key);
2242
2652
  if (target?.table)
2243
2653
  return getFieldFillColumn(
@@ -2255,7 +2665,10 @@ function createRuntimeDataSourceBinding(registry, payload) {
2255
2665
  setField: (key, value, collection) => {
2256
2666
  if (registry.get(uniqueId) !== record) throw new Error(`字段填充实例已释放:${uniqueId}`);
2257
2667
  const target = targets.get(key);
2258
- if (target.table) {
2668
+ const columns = tableColumns.get(key);
2669
+ if (columns) {
2670
+ formState.setField(key, buildFieldFillTableRows(formState.state[key], value, columns), "async");
2671
+ } else if (target.table) {
2259
2672
  const field = target.isFieldModel ? `_OPCT.${target.field}` : target.field;
2260
2673
  formState.setField(
2261
2674
  target.table,
@@ -2302,7 +2715,7 @@ function createRuntimeDataSourceBinding(registry, payload) {
2302
2715
  record.dataSourceManager = void 0;
2303
2716
  fieldFillRuntime?.dispose();
2304
2717
  manager.dispose();
2305
- const { [uniqueId]: _2, ...rest } = dataSourceManagerMap.value;
2718
+ const { [uniqueId]: _, ...rest } = dataSourceManagerMap.value;
2306
2719
  dataSourceManagerMap.value = rest;
2307
2720
  });
2308
2721
  await initializeOnce();
@@ -2455,10 +2868,17 @@ function useRenderPageFactory(props, payload) {
2455
2868
  payload,
2456
2869
  getConsumeData
2457
2870
  );
2871
+ const initializedInstanceIds = /* @__PURE__ */ new Set();
2872
+ let currentInstanceIdsKey;
2458
2873
  const getInstanceData = createRuntimeRequestSource(props, payload);
2459
2874
  const pipeline = createRuntimeLoadPipeline(runtimeRegistry.loadState, {
2460
2875
  request: getInstanceData,
2461
- prepare: (sources) => prepareRuntimeBatch(sources, initializeRuntimeInstance),
2876
+ prepare: (sources) => prepareRuntimeBatch(
2877
+ sources,
2878
+ (id, source) => initializeRuntimeInstance(id, source, {
2879
+ initializeValues: !initializedInstanceIds.has(id)
2880
+ })
2881
+ ),
2462
2882
  install: async (prepared, isCurrent) => {
2463
2883
  clear();
2464
2884
  const installed = [];
@@ -2483,8 +2903,12 @@ function useRenderPageFactory(props, payload) {
2483
2903
  onValidate: () => runSubmissionValidation(uniqueId),
2484
2904
  onValidationFailed: (result) => record.sheetService.navigateFirstError(Object.keys(result.fields ?? {})),
2485
2905
  onGetSubmitData: (formState) => {
2486
- record.context.services.subTableCoreFactory?.prepareSubmitFormState(formState);
2487
- return transformUtils.getSubmitFormData(formState, record.context.businessIndex);
2906
+ const subTableFactory = record.context.services.subTableCoreFactory;
2907
+ subTableFactory?.prepareSubmitFormState(formState);
2908
+ return transformUtils.getSubmitFormData(formState, {
2909
+ ...record.context.businessIndex,
2910
+ businessTableFields: subTableFactory?.getBusinessTableFields() ?? []
2911
+ });
2488
2912
  }
2489
2913
  })
2490
2914
  );
@@ -2498,6 +2922,9 @@ function useRenderPageFactory(props, payload) {
2498
2922
  record.fieldInitializer = markRaw(
2499
2923
  new RuntimeFieldInitializer(record, res.basicInfo, res.selfInfo)
2500
2924
  );
2925
+ record.defaultValueValidation = markRaw(
2926
+ new RuntimeDefaultValueValidation(record, reactiveInfo, res.defaultValueOrigins)
2927
+ );
2501
2928
  bindRuntimeBusinessServices(runtimeRegistry, record, res.selfInfo.dataStatus);
2502
2929
  dataSourceBindings.push(bindDataSources(record, reactiveInfo, res.selfInfo));
2503
2930
  }
@@ -2515,7 +2942,10 @@ function useRenderPageFactory(props, payload) {
2515
2942
  record.formState.markClean();
2516
2943
  payload.onFormStateReady?.(record.formState);
2517
2944
  }
2518
- if (isCurrent()) finisher.value++;
2945
+ if (isCurrent()) {
2946
+ prepared.forEach(({ basicInfo }) => initializedInstanceIds.add(basicInfo.key));
2947
+ finisher.value++;
2948
+ }
2519
2949
  } catch (error) {
2520
2950
  const failedIds = /* @__PURE__ */ new Set();
2521
2951
  installed.forEach((record) => {
@@ -2540,6 +2970,11 @@ function useRenderPageFactory(props, payload) {
2540
2970
  const ids = (Array.isArray(requestIds) ? requestIds : [requestIds]).filter(
2541
2971
  (id) => typeof id === "string" && !!id
2542
2972
  );
2973
+ const instanceIdsKey = JSON.stringify([...new Set(ids)].sort());
2974
+ if (instanceIdsKey !== currentInstanceIdsKey) {
2975
+ initializedInstanceIds.clear();
2976
+ currentInstanceIdsKey = instanceIdsKey;
2977
+ }
2543
2978
  if (!ids.length) {
2544
2979
  pipeline.invalidate();
2545
2980
  clear();
@@ -2686,7 +3121,7 @@ function useEbrWikiFactoryV2(props, payload) {
2686
3121
  }
2687
3122
  watch(
2688
3123
  [() => props.materialNo, () => edhrCounter.value],
2689
- async ([newMaterialNo, _2]) => {
3124
+ async ([newMaterialNo, _]) => {
2690
3125
  if (isEmpty(newMaterialNo)) return;
2691
3126
  loading.value = true;
2692
3127
  clear();
@@ -2865,7 +3300,7 @@ function useEbrWikiFactoryV2(props, payload) {
2865
3300
  );
2866
3301
  watch(
2867
3302
  [() => selectSelfInfo.value, () => instanceCounter.value],
2868
- ([newSelectSelfInfo, _2]) => {
3303
+ ([newSelectSelfInfo, _]) => {
2869
3304
  if (newSelectSelfInfo && payload.pageType === "record-change") {
2870
3305
  emitter.emit(EmitterEnum.__on_select_ebr_doc_instance_id, {
2871
3306
  instanceId: newSelectSelfInfo.id
@@ -3270,250 +3705,251 @@ function filterAnnotationItemsUpToCurrent(items) {
3270
3705
  });
3271
3706
  }
3272
3707
  export {
3273
- aO as AITooltips,
3708
+ aW as AITooltips,
3274
3709
  A2 as AllocateTableCore,
3275
- B3 as BaseFormModelFetcher,
3276
- aQ as BinarizeMethodOptions,
3277
- aZ as BindCmpStyleEnum,
3278
- a1 as BooleanShowMode,
3710
+ ao2 as BaseFormModelFetcher,
3711
+ aY as BinarizeMethodOptions,
3712
+ ba as BindCmpStyleEnum,
3713
+ a6 as BooleanShowMode,
3279
3714
  B2 as BorderTD,
3280
3715
  BpmnNodeTypeEnum,
3281
- bI as BpmnSignatureTypeEnum,
3282
- bJ as ButtonTypeEnum,
3716
+ bP as BpmnSignatureTypeEnum,
3717
+ bQ as ButtonTypeEnum,
3283
3718
  B as BwipCodeType,
3284
- bK as CHECK_TABLE_MEDPRO_PROTOCOL_KEY,
3285
- z as CellType,
3286
- ai as CellWidgetViewState,
3719
+ bR as CHECK_TABLE_MEDPRO_PROTOCOL_KEY,
3720
+ H as CellType,
3721
+ am as CellWidgetViewState,
3287
3722
  CheckDsTypeEnum,
3288
- bL as CodeRunner,
3723
+ bS as CodeRunner,
3289
3724
  ComponentTypeEnum,
3290
- bM as Config_Fields,
3291
- bN as ControlStatusEnum,
3292
- bf as DEVICE_GROUP_QUERY_KEY,
3293
- bO as DEVICE_SEARCH_API,
3294
- aR as DateFormat,
3295
- ay as DecimalDisplayMode,
3296
- aP as DenoiseMethodOptions,
3297
- a72 as DeviceConnector,
3298
- aM as DeviceLink,
3299
- h as DeviceLinkTmplUtil,
3300
- aN as DeviceParamsTypeTitle,
3725
+ bT as Config_Fields,
3726
+ bU as ControlStatusEnum,
3727
+ bk as DEVICE_GROUP_QUERY_KEY,
3728
+ bV as DEVICE_SEARCH_API,
3729
+ a$ as DateFormat,
3730
+ aF as DecimalDisplayMode,
3731
+ aX as DenoiseMethodOptions,
3732
+ ap2 as DeviceConnector,
3733
+ aU as DeviceLink,
3734
+ o as DeviceLinkTmplUtil,
3735
+ aV as DeviceParamsTypeTitle,
3301
3736
  D as DevicePartConsumeTableCore,
3302
- bP as DeviceStatus,
3303
- aj as DiagonalDirection,
3304
- an as DiagonalVertex,
3305
- _ as DocumentLayout,
3306
- a8 as DocumentLoading,
3307
- O2 as DocumentPaper,
3308
- a9 as DynamicQuickFillModal,
3309
- P2 as DynamicTableAction,
3310
- bQ as EBR_PROVIDE_ENUM,
3311
- bR as EFieldBizTypeEnum,
3312
- E2 as EMPTY_PRODUCT_VERSION_ID,
3313
- aG as EmptySymbol,
3314
- a3 as FallbackSignTypeEnum,
3315
- ah as FieldSysVarDefaultValueEnum,
3737
+ bW as DeviceStatus,
3738
+ an as DiagonalDirection,
3739
+ ar as DiagonalVertex,
3740
+ a52 as DocumentLayout,
3741
+ aq2 as DocumentLoading,
3742
+ a3 as DocumentPaper,
3743
+ ar2 as DynamicQuickFillModal,
3744
+ a4 as DynamicTableAction,
3745
+ bX as EBR_PROVIDE_ENUM,
3746
+ bY as EFieldBizTypeEnum,
3747
+ J as EMPTY_PRODUCT_VERSION_ID,
3748
+ aO as EmptySymbol,
3749
+ a8 as FallbackSignTypeEnum,
3750
+ al as FieldSysVarDefaultValueEnum,
3316
3751
  FillingTypeEnum,
3317
- aa2 as FixedQuickFillModal,
3752
+ as2 as FixedQuickFillModal,
3318
3753
  FormAnnotationController,
3319
- F2 as FormModelController,
3754
+ F as FormModelController,
3320
3755
  FormTmplBomController,
3321
- ab as FormTmplConfigController,
3756
+ at as FormTmplConfigController,
3322
3757
  FormTypeEnum,
3323
- az as ImageDisplayModeEnum,
3758
+ aG as ImageDisplayModeEnum,
3324
3759
  InstanceStatusValues,
3325
- bS as JoinModelTypeEum,
3326
- ac as LEGACY_RUNTIME_FORM_CONFIG_KEYS,
3327
- ad as LEGACY_RUNTIME_SHEET_ID,
3328
- ae as LEGACY_RUNTIME_SHEET_TITLE,
3329
- a0 as LabelPosition,
3330
- al as LineDirection,
3760
+ aZ as JoinModelTypeEum,
3761
+ au2 as LEGACY_RUNTIME_FORM_CONFIG_KEYS,
3762
+ av as LEGACY_RUNTIME_SHEET_ID,
3763
+ aw as LEGACY_RUNTIME_SHEET_TITLE,
3764
+ a5 as LabelPosition,
3765
+ ap as LineDirection,
3331
3766
  L as LineType,
3332
- bT as MAX_FRONT_ROW_KEY_LENGTH,
3767
+ bZ as MAX_FRONT_ROW_KEY_LENGTH,
3333
3768
  M as MAX_RUNTIME_SHEETS,
3334
3769
  a as MAX_RUNTIME_SHEET_TITLE_LENGTH,
3335
- M3 as MBRender,
3336
- af as MCDataUtil,
3337
- a11 as MCRender,
3770
+ a0 as MBRender,
3771
+ ax as MCDataUtil,
3772
+ a1 as MCRender,
3338
3773
  d as MULTI_SHEET_SCHEMA_VERSION,
3339
3774
  MaterialConsumeTableController,
3340
3775
  MaterialConsumptionPatternEnum,
3341
3776
  M2 as MaterialRequisitionTableCore,
3342
3777
  MaterialStatusEnum,
3343
- a10 as MaterialSubstitutionTableCore,
3344
- bU as MobileFillTypeEnum,
3778
+ a2 as MaterialSubstitutionTableCore,
3779
+ b_ as MobileFillTypeEnum,
3345
3780
  NCB_PROVIDE,
3346
- ag as OCR_MODEL_PRECISION_ENUM_KEY,
3347
- bV as OfficeTypeEnum,
3781
+ ay as OCR_MODEL_PRECISION_ENUM_KEY,
3782
+ b$ as OfficeTypeEnum,
3348
3783
  O as Orientation,
3349
- q as PageSizeEnum,
3784
+ t as PageSizeEnum,
3350
3785
  P as PaginationFormat,
3351
- aa as PaperSizeMap,
3352
- p as PaperWidgeType,
3353
- Q as PaperWidgeValueType,
3354
- E as ParamModelTypeEnum,
3355
- P3 as PartStocktakeTableCore,
3786
+ ag as PaperSizeMap,
3787
+ q as PaperWidgeType,
3788
+ Y as PaperWidgeValueType,
3789
+ K as ParamModelTypeEnum,
3790
+ P2 as PartStocktakeTableCore,
3356
3791
  PlatformEnum,
3357
- bW as PosEnum,
3792
+ c0 as PosEnum,
3358
3793
  b as PretreatmentListTableCore,
3359
3794
  c as ProfileDrivenSubTableCore,
3360
- bX as RUNTIME_COLUMN_ROW_KEY,
3361
- ax as RangeCompareOp,
3362
- aw as RangeValidateMode,
3795
+ c1 as RUNTIME_COLUMN_ROW_KEY,
3796
+ aB as RangeCompareOp,
3797
+ RangeValidateMode,
3363
3798
  RenderModeEnum,
3364
- ah2 as RuntimeAsyncTaskCoordinator,
3365
- ai2 as RuntimeDependencyService,
3366
- aj2 as RuntimeFieldRegistry,
3799
+ az as RuntimeAsyncTaskCoordinator,
3800
+ aA as RuntimeDependencyService,
3801
+ aB2 as RuntimeFieldRegistry,
3367
3802
  RuntimeFormStateStore,
3368
3803
  RuntimeInstanceController,
3369
- ak2 as RuntimeInstanceEventBus,
3804
+ aC as RuntimeInstanceEventBus,
3370
3805
  RuntimeInstanceRegistry,
3371
- al2 as RuntimePersistenceCoordinator,
3806
+ aD as RuntimePersistenceCoordinator,
3372
3807
  RuntimeRuleCompiler,
3373
3808
  RuntimeSheetService,
3374
- am2 as RuntimeValidationService,
3375
- a6 as SignShowTypeEnum,
3376
- a2 as SignatureImageDirectionEnum,
3377
- a4 as SignatureNumberTypeEnum,
3378
- a5 as SignatureTimeTypeEnum,
3379
- a7 as SignatureTypeEnum,
3809
+ aE as RuntimeValidationService,
3810
+ ab as SignShowTypeEnum,
3811
+ a7 as SignatureImageDirectionEnum,
3812
+ a9 as SignatureNumberTypeEnum,
3813
+ aa as SignatureTimeTypeEnum,
3814
+ ac as SignatureTypeEnum,
3380
3815
  d2 as SterilizeBatchTableCore,
3381
3816
  e2 as StocktakeTableCore,
3382
- an2 as SubTableCore,
3817
+ aF2 as SubTableCore,
3383
3818
  SubTableCoreFactory,
3384
- f as SubTableType,
3385
- bY as SummaryApproveHisTypeEnum,
3386
- am as TimeDiffFormat,
3387
- aq as ViewTypeEnum,
3388
- W as WarehouseInTableCore,
3389
- f3 as WarehouseInboundTableCore,
3819
+ h as SubTableType,
3820
+ c2 as SummaryApproveHisTypeEnum,
3821
+ aq as TimeDiffFormat,
3822
+ au as ViewTypeEnum,
3823
+ W2 as WarehouseInTableCore,
3824
+ f as WarehouseInboundTableCore,
3390
3825
  g as WarehouseOutTableCore,
3391
3826
  h2 as WarehouseOutboundTableCore,
3392
- ak as WidgetImageSizeMode,
3393
- bZ as applyCheckDsDataToRuntime,
3394
- y as applyConsumeObjectTraceChange,
3395
- b_ as applyMedProCheckDsDataToRuntime,
3827
+ ao as WidgetImageSizeMode,
3828
+ c3 as applyCheckDsDataToRuntime,
3829
+ H2 as applyConsumeObjectTraceChange,
3830
+ c4 as applyMedProCheckDsDataToRuntime,
3396
3831
  baseDataUtils,
3397
- b$ as bindRuntimeTableColumns,
3398
- c0 as buildDeviceBaseQuery,
3399
- be as buildDeviceFilterQuery,
3400
- ao2 as buildFormChangeDisplayRows,
3401
- p2 as buildObjectLotExtraQuery,
3832
+ c5 as bindRuntimeTableColumns,
3833
+ c6 as buildDeviceBaseQuery,
3834
+ aJ as buildDeviceFilterQuery,
3835
+ aG2 as buildFormChangeDisplayRows,
3836
+ x as buildObjectLotExtraQuery,
3402
3837
  buildRuntimeFieldPath,
3403
- c1 as calcFillData,
3404
- c2 as calcUtils,
3838
+ c7 as calcFillData,
3839
+ c8 as calcUtils,
3405
3840
  calculateFormula,
3406
3841
  collectAnnotationItemsByLocation,
3407
3842
  collectFormChangeFieldLocations,
3408
3843
  commonUtils,
3409
3844
  convertHistoricalAnnotationLocation,
3410
- ap as convertV1Runtime,
3845
+ aH as convertV1Runtime,
3411
3846
  e as createRuntimeDocumentV2,
3412
3847
  createRuntimeInstanceContext,
3413
- c3 as decodeTableCellRowKey,
3414
- aq2 as detailsHaveFormChangeRowOps,
3415
- c4 as encodeTableCellRowKey,
3848
+ c9 as decodeTableCellRowKey,
3849
+ aI as detailsHaveFormChangeRowOps,
3850
+ ca as encodeTableCellRowKey,
3416
3851
  enrichFormChangeRowDetails,
3417
- c5 as ensureFrontRowKey,
3418
- c6 as ensureTableRowKeys,
3419
- ar as extractFormChangeRowDetails,
3420
- c7 as extractKeywordFromQueryData,
3421
- c8 as fetchCheckDsDataForTable,
3422
- c9 as fetchCustomCheckDsData,
3852
+ cb as ensureFrontRowKey,
3853
+ cc as ensureTableRowKeys,
3854
+ aJ2 as extractFormChangeRowDetails,
3855
+ cd as extractKeywordFromQueryData,
3856
+ ce as fetchCheckDsDataForTable,
3857
+ cf as fetchCustomCheckDsData,
3423
3858
  fetchHistoryConsume,
3424
- ca as fetchMedProCheckDsData,
3859
+ cg as fetchMedProCheckDsData,
3425
3860
  fetchOperationReceiveQty,
3426
3861
  fetchUdi,
3427
3862
  filterAnnotationItemsUpToCurrent,
3428
- bj as findRuntimeParentRow,
3429
- cb as findRuntimeTableCell,
3863
+ bp as findRuntimeParentRow,
3864
+ ch as findRuntimeTableCell,
3430
3865
  findRuntimeTableRow,
3431
3866
  getAppInfo,
3432
3867
  getBusinessFieldKey,
3433
- cc as getCheckTableSnapshotKey,
3434
- as as getFormChangeRowKey,
3435
- at as getFormChangeRowOp,
3436
- aX as getLotLockedReason,
3437
- o as getObjectBomMaterialLotQuery,
3438
- z2 as getObjectBomProductQuery,
3868
+ ci as getCheckTableSnapshotKey,
3869
+ aK2 as getFormChangeRowKey,
3870
+ aL as getFormChangeRowOp,
3871
+ b6 as getLotLockedReason,
3872
+ w as getObjectBomMaterialLotQuery,
3873
+ I as getObjectBomProductQuery,
3439
3874
  getParseFormulaVarInfos,
3440
- cd as getParseRuleConfig,
3441
- a_ as getParseRuleInfo,
3442
- a$ as getParseRuleValue,
3443
- ce as getReinspectionDate,
3444
- cf as getRenderedRuntimeTableCell,
3875
+ cj as getParseRuleConfig,
3876
+ bb as getParseRuleInfo,
3877
+ bc as getParseRuleValue,
3878
+ ck as getReinspectionDate,
3879
+ cl as getRenderedRuntimeTableCell,
3445
3880
  getRuntimeDataFieldId,
3446
3881
  getRuntimeDependencyOutputKey,
3447
- au as getSubTableQuickFillInfo,
3882
+ aM as getSubTableQuickFillInfo,
3448
3883
  getSuiteKey,
3449
- cg as handleOldConfig,
3450
- ch as hasAnyCheckTableSnapshot,
3451
- ci as hasByTableCheckTableSnapshot,
3452
- cj as hasSharedCheckTableSnapshot,
3453
- av as isAnnLocationSelected,
3454
- aw2 as isBlank,
3884
+ cm as handleOldConfig,
3885
+ cn as hasAnyCheckTableSnapshot,
3886
+ co as hasByTableCheckTableSnapshot,
3887
+ cp as hasSharedCheckTableSnapshot,
3888
+ aN as isAnnLocationSelected,
3889
+ aO2 as isBlank,
3455
3890
  isBomGranted,
3456
3891
  isEdhrSuite,
3457
3892
  isEqmSuite,
3458
- ax2 as isFormChangeGhostRow,
3459
- ck as isMedProSuite,
3893
+ aP as isFormChangeGhostRow,
3894
+ cq as isMedProSuite,
3460
3895
  isRowAddedInCurrentFormChange,
3461
- cl as isTableRowKeyMatch,
3462
- cm as jsonSchemaUtils,
3463
- cn as judgeUnique,
3464
- aW as materialCheck,
3465
- co as migrateDiagonalDirectionToVertex,
3896
+ cr as isTableRowKeyMatch,
3897
+ cs as jsonSchemaUtils,
3898
+ ct as judgeUnique,
3899
+ b5 as materialCheck,
3900
+ cu as migrateDiagonalDirectionToVertex,
3466
3901
  nextFormChangeRowViewHistoryId,
3467
- i as normalizeAIOcrTmpl,
3468
- A as normalizeHistoricalAutofillRow,
3469
- f2 as normalizeHistoricalBusinessRow,
3470
- ay2 as normalizeHistoricalFieldConfig,
3471
- b0 as normalizeRefLoaderResult,
3902
+ p as normalizeAIOcrTmpl,
3903
+ K2 as normalizeHistoricalAutofillRow,
3904
+ m as normalizeHistoricalBusinessRow,
3905
+ aQ as normalizeHistoricalFieldConfig,
3906
+ bd as normalizeRefLoaderResult,
3472
3907
  normalizeRuntime,
3473
3908
  parseFrontConfig,
3474
3909
  parseRuntimeFieldPath,
3475
3910
  parseUdi,
3476
- az2 as pickObjectFieldKeys,
3477
- aA as recordSubtableRowAdd,
3478
- aB as recordSubtableRowDelete,
3479
- bc as refUtils,
3480
- cp as relocateDeletedRowsToEnd,
3911
+ aR as pickObjectFieldKeys,
3912
+ aS as recordSubtableRowAdd,
3913
+ aT as recordSubtableRowDelete,
3914
+ aK as refUtils,
3915
+ aU2 as relocateDeletedRowsToEnd,
3481
3916
  renderUtils,
3482
- cq as requestMedProCheckDsData,
3483
- cr as requestNonMedProCheckDsData,
3484
- aC as resolveAnnotationFieldLocation,
3485
- ao as resolveDiagonalVertex,
3486
- u as resolveFieldRenderComponent,
3487
- aD as resolveFormChangeRowUi,
3488
- t as resolveObjectBomEntry,
3489
- r as resolveObjectFieldKeys,
3490
- aE as resolveRowFormChangeMark,
3917
+ cv as requestMedProCheckDsData,
3918
+ cw as requestNonMedProCheckDsData,
3919
+ aV2 as resolveAnnotationFieldLocation,
3920
+ as as resolveDiagonalVertex,
3921
+ y as resolveFieldRenderComponent,
3922
+ aW2 as resolveFormChangeRowUi,
3923
+ C as resolveObjectBomEntry,
3924
+ y2 as resolveObjectFieldKeys,
3925
+ aX2 as resolveRowFormChangeMark,
3491
3926
  resolveUdiQuery,
3492
- w as runWithFillProduct,
3493
- l as setSelectAnnotationId,
3494
- aF as setSelectMobileTdId,
3927
+ E as runWithFillProduct,
3928
+ t2 as setSelectAnnotationId,
3929
+ aY2 as setSelectMobileTdId,
3495
3930
  s as setSelectValidatorId,
3496
- cs as sqlUtils,
3497
- ct as stockCheck,
3498
- aG2 as stripLegacyFormConfigFromPaper,
3931
+ cx as splitRuntimeDataPath,
3932
+ a_ as sqlUtils,
3933
+ cy as stockCheck,
3934
+ aZ2 as stripLegacyFormConfigFromPaper,
3499
3935
  transformUtils,
3500
- G as useDependency,
3936
+ U as useDependency,
3501
3937
  useEbrWikiFactoryV2,
3502
- H as useFieldPresentation,
3503
- u3 as useFormModel,
3504
- u2 as useFormTmplConfig,
3938
+ V as useFieldPresentation,
3939
+ u as useFormModel,
3940
+ k as useFormTmplConfig,
3505
3941
  useMaterialBalance,
3506
3942
  useNocodeEmitter,
3507
- x as useNocodeFormWidget,
3508
- cu as useOnlineFormActionButton,
3509
- bk as useOnlineFormTransformField2Component,
3943
+ G as useNocodeFormWidget,
3944
+ cz as useOnlineFormActionButton,
3945
+ bq as useOnlineFormTransformField2Component,
3510
3946
  useRenderPageFactory,
3511
- I as useRuntimeEditorFlusher,
3512
- k as useRuntimeInstanceServices,
3513
- m as useRuntimeRowState,
3514
- F as useStyles,
3515
- j as useWidgetStaticAttrs,
3516
- v as validateObjectBomForScan,
3947
+ W as useRuntimeEditorFlusher,
3948
+ r as useRuntimeInstanceServices,
3949
+ v as useRuntimeRowState,
3950
+ T as useStyles,
3951
+ q2 as useWidgetStaticAttrs,
3952
+ A as validateObjectBomForScan,
3517
3953
  validateObjectBomQtyOnSubmit,
3518
- aY as validateReinspectionDate
3954
+ b7 as validateReinspectionDate
3519
3955
  };