@gct-paas/excel 0.1.28-beta.2 → 0.1.28-beta.21

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 (224) hide show
  1. package/dist/{VueVideoPlayer-B6X1JmEL.js → VueVideoPlayer-DCU2I_H7.js} +2 -2
  2. package/dist/{agg-design-DZpDRz0Y.js → agg-design-RbW6fgNa.js} +1 -1
  3. package/dist/{agg-props-ockP_cAM.js → agg-props-CfoEBrRu.js} +1 -1
  4. package/dist/{agg-style-C7nWM2if.js → agg-style-CgbQAKr0.js} +1 -1
  5. package/dist/{align-editor-DpWvsI_x.js → align-editor-B80IEr3w.js} +1 -1
  6. package/dist/{attach-fields-editor-BbWYEXfG.js → attach-fields-editor-BIiVvohl.js} +2 -2
  7. package/dist/{barcode-design-D1hSeWVJ.js → barcode-design-DOLYhwbG.js} +2 -2
  8. package/dist/base/index.es.js +886 -703
  9. package/dist/{base-font-editor-DFHc_3JJ.js → base-font-editor-e9sd4IkJ.js} +2 -2
  10. package/dist/{boolean-design-UO0nUx1k.js → boolean-design-Dlu6lW8d.js} +8 -7
  11. package/dist/{boolean-props--l1hf_NI.js → boolean-props-s96hsuRe.js} +3 -3
  12. package/dist/{boolean-style-Dqwd3N4b.js → boolean-style-f5mMhRME.js} +4 -4
  13. package/dist/{cell-upload-PkWTiWYW.js → cell-upload-DYgGT9In.js} +8 -11
  14. package/dist/{date-range-editor-CVQsTg3G.js → date-range-editor-BUGosnLi.js} +2 -2
  15. package/dist/{date-time-design-DmeUPsi-.js → date-time-design-BdZ_d-PG.js} +25 -6
  16. package/dist/{date-time-props-DqAAdD7L.js → date-time-props-tlQ_cWpv.js} +3 -3
  17. package/dist/{date-time-style-BTtKVpV4.js → date-time-style--7vBwDaL.js} +1 -1
  18. package/dist/{decimal-design-DQ-61MMF.js → decimal-design-C0K5wkAw.js} +1 -1
  19. package/dist/{decimal-display-mode-CPL-jNCK.js → decimal-display-mode-C3qGt4Zt.js} +2 -2
  20. package/dist/{decimal-props-DUeC4_o5.js → decimal-props-PGR7K6rT.js} +4 -4
  21. package/dist/{decimal-style-B-0QILJa.js → decimal-style-D2u4XTHf.js} +1 -1
  22. package/dist/{default-value-editor.vue_vue_type_script_setup_true_name_default-value-editor_lang-CeTlpjT4.js → default-value-editor.vue_vue_type_script_setup_true_name_default-value-editor_lang-BWpYVxPc.js} +2 -2
  23. package/dist/{diagonal-design-Cx7RTy6_.js → diagonal-design-BrGfDqGb.js} +2 -2
  24. package/dist/{double-design-Bpuy9Ss3.js → double-design-B1Uiy26Z.js} +1 -1
  25. package/dist/{double-props-BLp5rMS0.js → double-props-yH1fU0x4.js} +6 -4
  26. package/dist/{double-style-BQT4UDRo.js → double-style-BVx9woku.js} +1 -1
  27. package/dist/{dynamic-table-action-CT_aYOca.js → dynamic-table-action-Bg2X8eeh.js} +586 -380
  28. package/dist/{dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-SAa6KGYz.js → dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-B-KhKgs2.js} +700 -332
  29. package/dist/{edit.utils-CXmmCnxE-CrBcZqbG.js → edit.utils-CXmmCnxE-C46O9P-0.js} +1 -1
  30. package/dist/{enum-design-DTh9UhHf.js → enum-design-D7-yLeJb.js} +11 -4
  31. package/dist/{enum-props-J-3PLabW.js → enum-props-COQQfulB.js} +68 -47
  32. package/dist/{enum-style-h5lmzZD_.js → enum-style-CcebnktY.js} +3 -3
  33. package/dist/excel.css +1373 -722
  34. package/dist/{exceljs.min-mW_Nqru2.js → exceljs.min-Muu74e_A.js} +2 -2
  35. package/dist/{expression-design-Cbi_6pnX.js → expression-design-DIJRzVab.js} +1 -1
  36. package/dist/{expression-props-DuvdDUWt.js → expression-props-Dd1_kGVD.js} +1 -1
  37. package/dist/{expression-style-CcdTrGye.js → expression-style-Bp-2sfOx.js} +1 -1
  38. package/dist/{file-design-Cix4ztNq.js → file-design-DLIY-29d.js} +1 -1
  39. package/dist/{file-props-DvZgFCjv.js → file-props-QGxoOGHI.js} +5 -4
  40. package/dist/{file-style-DTXliETB.js → file-style-CQZsWmvF.js} +1 -1
  41. package/dist/{font-editor-D_4CECiK.js → font-editor-DyrF1wB8.js} +3 -3
  42. package/dist/{image-design-BxFQTm4-.js → image-design-4odCIiI7.js} +3 -2
  43. package/dist/{image-design-IaQbw4Bv.js → image-design-eVwFd3tD.js} +1 -1
  44. package/dist/{image-props-BmLfiJIb.js → image-props-cT1RL-gD.js} +1 -1
  45. package/dist/{image-style-BuGQiWh9.js → image-style-MnNoeDW2.js} +1 -1
  46. package/dist/{index-hkXYQoCV.js → index-2I_EN7Yx.js} +6 -6
  47. package/dist/{index-DnxIXenr.js → index-2gNIJ0-V.js} +2 -2
  48. package/dist/{index-Dl48Dmuf.js → index-3JgiYInP.js} +1 -1
  49. package/dist/{index-CvefH3Ld.js → index-BBnBDqub.js} +1 -1
  50. package/dist/{index-V3KPtSlA.js → index-BC-6IALL.js} +1 -1
  51. package/dist/{index-DIHeOfRf.js → index-BEKNxaNo.js} +1 -1
  52. package/dist/{index-T_P3hv-X.js → index-BITMorpM.js} +2 -2
  53. package/dist/{index-DuELqbrc.js → index-BcLaruk3.js} +1 -1
  54. package/dist/{index-C7XazAkv.js → index-BeFplGKa.js} +121 -455
  55. package/dist/{index-CO1Iw_97.js → index-BhgnUKpp.js} +1 -1
  56. package/dist/{index-VU8yct3A.js → index-BidsDLhX.js} +1 -1
  57. package/dist/{index-5E89tzgQ.js → index-Bn9kqGy7.js} +1 -1
  58. package/dist/{index-PgmRu5Zh.js → index-C-e2nOug.js} +1 -1
  59. package/dist/{index-CYc23F99.js → index-CBIz0i4u.js} +1 -1
  60. package/dist/{index-1kSDRqJL.js → index-CEa50csS.js} +1 -1
  61. package/dist/{index-CSGDQQxf.js → index-CLKf0Gla.js} +6 -6
  62. package/dist/{index-HHW_GvS9.js → index-CMN7FUpJ.js} +1 -1
  63. package/dist/{index-aZhb-M_v.js → index-CO1k5u4I.js} +1 -1
  64. package/dist/{index-BKQgEYOt.js → index-CRbhhL-C.js} +1 -1
  65. package/dist/{index-CmfE-VkX.js → index-CaNmok7V.js} +1 -1
  66. package/dist/{index-BCFgHqQ4.js → index-Cjfws4Sx.js} +1 -1
  67. package/dist/{index-BuucdbMD.js → index-CnH58RKA.js} +1 -1
  68. package/dist/{index-BSWx0ysi.js → index-DCucm9qw.js} +1 -1
  69. package/dist/{index-DJsySg7Z.js → index-DJRgFTjP.js} +1 -1
  70. package/dist/{index-CdoJjtvt.js → index-DS3Z0wlu.js} +2 -2
  71. package/dist/{index-BRifPJNN.js → index-DW9FL8UO.js} +2 -2
  72. package/dist/{index-DG8SGSHV.js → index-DlGnj7bK.js} +1 -1
  73. package/dist/{index-hcp9zj3F.js → index-QFP7aiss.js} +7621 -3448
  74. package/dist/{index-uIR6j0YE.js → index-bk4bX2Xm.js} +1 -1
  75. package/dist/{index-DAVndG-D.js → index-islXi0nD.js} +2 -2
  76. package/dist/{index-DayP0trN.js → index-kCtDgCx3.js} +1 -1
  77. package/dist/{index-6AnvwL1T.js → index-oabZhVuL.js} +1 -1
  78. package/dist/{index-BUEsJ6db.js → index-tWQfSOrQ.js} +1 -1
  79. package/dist/index.es.js +45 -45
  80. package/dist/{integer-design-B48BapfF.js → integer-design-BD-LDEV_.js} +1 -1
  81. package/dist/{integer-props-G5n3P-Vt.js → integer-props-DZvJ_bdU.js} +4 -4
  82. package/dist/{integer-style-yziEYd90.js → integer-style-CxTdmZsN.js} +1 -1
  83. package/dist/{mb-render-DiWQ5hOn.js → mb-render-B9PVK2lM.js} +2 -1
  84. package/dist/{number-input-ex-6e_-B7y7.js → number-input-ex-BpIoI25j.js} +1 -1
  85. package/dist/{org-design-DEibx7uD.js → org-design-DWZI8xev.js} +1 -1
  86. package/dist/{org-props-uZzEnRfn.js → org-props-D0D94kmP.js} +2 -2
  87. package/dist/{org-style-CtYMw9ob.js → org-style-B_7Bhmgz.js} +1 -1
  88. package/dist/{pagination-design-CdnyxoR4.js → pagination-design-CWNP4U9A.js} +2 -2
  89. package/dist/paper-widget-design-CMzzcWw8.js +4 -0
  90. package/dist/{qrcode-design-Bh_lT1Yn.js → qrcode-design-DeCNb5kH.js} +1 -1
  91. package/dist/quick-search.util-DbpUfahg.js +77 -0
  92. package/dist/{ref-autofill-editor-99WrBySm.js → ref-autofill-editor-DQnrKJfB.js} +152 -115
  93. package/dist/{ref-design-C7LbDVQz.js → ref-design-BQ8o1gKm.js} +1 -1
  94. package/dist/{ref-props-BGzOHDvi.js → ref-props-BnrWZt61.js} +22 -13
  95. package/dist/{ref-style-C1-VGUt9.js → ref-style-BHBHe1mo.js} +1 -1
  96. package/dist/{regex-editor-BAjvqlvo.js → regex-editor-ChABNYS9.js} +94 -67
  97. package/dist/{revo-grid.entry-Cg-4cMIo.js → revo-grid.entry-DIdL7jYD.js} +1 -1
  98. package/dist/{revogr-attribution_7.entry-DzamtFvo.js → revogr-attribution_7.entry-DBPjWGup.js} +3 -3
  99. package/dist/{revogr-clipboard_3.entry-CIxDfW07.js → revogr-clipboard_3.entry-MYdZD9tl.js} +2 -2
  100. package/dist/{revogr-data_4.entry-BNENcgpR.js → revogr-data_4.entry-C4rrqPT4.js} +2 -2
  101. package/dist/{revogr-filter-panel.entry-BrYsomo0.js → revogr-filter-panel.entry-BAU18Dos.js} +1 -1
  102. package/dist/{select-render-type-editor.vue_vue_type_script_setup_true_lang-Dg2h8nwx.js → select-render-type-editor.vue_vue_type_script_setup_true_lang-D_WfbMb1.js} +2 -2
  103. package/dist/{serialnumber-design-BsAogg1u.js → serialnumber-design-CckdQzWc.js} +1 -1
  104. package/dist/shared/index.es.js +22 -22
  105. package/dist/{signature-design-sSyiIxFB.js → signature-design-TKvCOON-.js} +1 -1
  106. package/dist/{signature-props-CYmd9GVl.js → signature-props-D1pC6hm4.js} +3 -3
  107. package/dist/{signature-style-wLJo19Kd.js → signature-style-BLrwnz_M.js} +1 -1
  108. package/dist/{single-field-drop-CilJB5DX.js → single-field-drop-C-PadB1d.js} +2 -2
  109. package/dist/{size-editor-DnyvSWUn.js → size-editor-szo7icZ-.js} +1 -1
  110. package/dist/src/adapter/adapter.d.ts +10 -0
  111. package/dist/src/adapter/setup.d.ts +11 -0
  112. package/dist/src/domain/table/business/warehouse/warehouse-inventory/profile/field-keys.d.ts +0 -2
  113. package/dist/src/index.d.ts +1 -2
  114. package/dist/src/nocode-base/src/core/sub-table/allocate-table-core.d.ts +3 -4
  115. package/dist/src/nocode-base/src/core/sub-table/index.d.ts +2 -0
  116. package/dist/src/nocode-base/src/core/sub-table/pretreatment-list-table-core.d.ts +3 -12
  117. package/dist/src/nocode-base/src/core/sub-table/profile-driven-sub-table-core.d.ts +19 -17
  118. package/dist/src/nocode-base/src/core/sub-table/sterilize-batch-table-core.d.ts +3 -14
  119. package/dist/src/nocode-base/src/core/sub-table/stocktake-table-core.d.ts +6 -5
  120. package/dist/src/nocode-base/src/core/sub-table/sub-table-core.d.ts +11 -0
  121. package/dist/src/nocode-base/src/core/sub-table/utils/scan/index.d.ts +3 -0
  122. package/dist/src/nocode-base/src/core/sub-table/utils/scan/inventory-scan-api.d.ts +9 -0
  123. package/dist/src/nocode-base/src/core/sub-table/utils/scan/production-identification-scan-api.d.ts +9 -0
  124. package/dist/src/nocode-base/src/core/sub-table/utils/scan/scan-helpers.d.ts +38 -0
  125. package/dist/src/nocode-base/src/core/sub-table/utils/stocktake/stocktake-calc.d.ts +6 -59
  126. package/dist/src/nocode-base/src/core/sub-table/warehouse-in-table-core.d.ts +11 -0
  127. package/dist/src/nocode-base/src/core/sub-table/warehouse-out-table-core.d.ts +21 -0
  128. package/dist/src/nocode-base/src/hooks/index.d.ts +1 -1
  129. package/dist/src/nocode-base/src/hooks/label-parse-rule/type.d.ts +6 -0
  130. package/dist/src/nocode-base/src/hooks/material-consume/bom-validator.d.ts +15 -74
  131. package/dist/src/nocode-base/src/hooks/material-consume/material-consume-table-controller.d.ts +32 -19
  132. package/dist/src/nocode-base/src/hooks/material-consume/tmpl-bom-controller.d.ts +4 -4
  133. package/dist/src/nocode-base/src/hooks/material-consume/types.d.ts +15 -0
  134. package/dist/src/nocode-base/src/hooks/material-consume-object/bom-validator.d.ts +38 -0
  135. package/dist/src/nocode-base/src/hooks/material-consume-object/index.d.ts +2 -0
  136. package/dist/src/nocode-base/src/hooks/material-consume-object/use-tmpl-bom.d.ts +13 -0
  137. package/dist/src/nocode-base/src/hooks/material-date/material-date.d.ts +14 -0
  138. package/dist/src/nocode-base/src/hooks/useRenderPageFactory.d.ts +6 -0
  139. package/dist/src/nocode-base/src/hooks/validation/useFormValidator.d.ts +2 -0
  140. package/dist/src/nocode-base/src/interface/device-query.d.ts +31 -0
  141. package/dist/src/nocode-base/src/interface/index.d.ts +1 -0
  142. package/dist/src/nocode-base/src/interface/render.d.ts +1 -0
  143. package/dist/src/nocode-base/src/interface/transform.d.ts +1 -1
  144. package/dist/src/nocode-base/src/types/business/index.d.ts +11 -1
  145. package/dist/src/nocode-base/src/types/business/pretreatment-list.d.ts +3 -1
  146. package/dist/src/nocode-base/src/types/business/sterilize-batch.d.ts +3 -1
  147. package/dist/src/nocode-base/src/types/business/stocktake.d.ts +3 -1
  148. package/dist/src/nocode-base/src/types/common/base.d.ts +4 -0
  149. package/dist/src/nocode-base/src/types/render/sub-table-render.d.ts +7 -0
  150. package/dist/src/nocode-web-render/src/render/parse-rule/add-rule-btn.vue.d.ts +2 -0
  151. package/dist/src/nocode-web-render/src/render/parse-rule/parse-rule-modal.vue.d.ts +1 -0
  152. package/dist/src/nocode-web-render/src/render/sub-table/common/scan-modal.vue.d.ts +0 -1
  153. package/dist/src/nocode-web-render/src/render/sub-table/common/sub-table-render.d.ts +2 -1
  154. package/dist/src/nocode-web-render/src/render/sub-table/stocktake/index.d.ts +0 -1
  155. package/dist/src/nocode-web-render/src/render/sub-table/stocktake/stocktake-web-render.d.ts +11 -1
  156. package/dist/src/online-form/src/views/__cell_widgets__/cell-widget-dependency.vue.d.ts +1 -0
  157. package/dist/src/online-form/src/views/__cell_widgets__/common/display-fields-editor/display-fields-editor.vue.d.ts +3 -3
  158. package/dist/src/online-form/src/views/__cell_widgets__/common/display-fields-editor/display-fields.util.d.ts +6 -0
  159. package/dist/src/online-form/src/views/__cell_widgets__/common/quick-search-editor/quick-search.util.d.ts +11 -3
  160. package/dist/src/online-form/src/views/designer/constants/index.d.ts +2 -4
  161. package/dist/src/online-form/src/views/designer/hooks/useAllSpreadSheets.d.ts +473 -0
  162. package/dist/src/online-form/src/views/designer/hooks/useModelFields.d.ts +7 -0
  163. package/dist/src/online-form/src/views/designer/hooks/useSpreadSheet.d.ts +622 -2
  164. package/dist/src/online-form/src/views/designer/modules/modals/add-dependency-modal/add-dependency-modal.vue.d.ts +5 -1
  165. package/dist/src/online-form/src/views/designer/modules/panel/comps/signature-config/config-modal.vue.d.ts +2 -0
  166. package/dist/src/online-form/src/views/designer/modules/panel/comps/signature-config/field-tree-select.vue.d.ts +1 -0
  167. package/dist/src/online-form/src/views/designer/modules/panel/comps/signature-config/index.d.ts +1 -1
  168. package/dist/src/online-form/src/views/designer/modules/panel/material-consumption/policy-items/consume-item.vue.d.ts +20 -0
  169. package/dist/src/online-form/src/views/designer/modules/panel/material-consumption/policy-items/qty-item/bom-formula-editor.vue.d.ts +18 -0
  170. package/dist/src/online-form/src/views/designer/modules/panel/material-consumption/policy-items/qty-item/qty-item.vue.d.ts +15 -0
  171. package/dist/src/online-form/src/views/designer/modules/panel/material-consumption/policy-items/substitute-item.vue.d.ts +23 -0
  172. package/dist/src/online-form/src/views/designer/modules/panel/panel-data-init-config/object-init/hooks/useObjectInit.d.ts +62 -0
  173. package/dist/src/online-form/src/views/designer/modules/panel/panel-data-init-config/object-init/index.d.ts +0 -1
  174. package/dist/src/online-form/src/views/designer/modules/panel/sub-table/comps/use-dynamic-sub-table-panel.d.ts +292 -0
  175. package/dist/src/online-form/src/views/designer/modules/panel/sub-table/material-consumption/bom-modal.vue.d.ts +1 -1
  176. package/dist/src/online-form/src/views/designer/modules/panel/sub-table/material-consumption/edit-parse-rule.vue.d.ts +1 -0
  177. package/dist/src/online-form/src/views/designer/types/index.d.ts +5 -15
  178. package/dist/src/online-form/src/views/designer/utils/design-readonly-modal.d.ts +3 -0
  179. package/dist/src/online-form/src/views/inline-cell/use-inline-icon-catalog.d.ts +2 -3
  180. package/dist/src/online-form/src/views/render/__components__/_field_/trace/composables/assoc-filter.d.ts +5 -4
  181. package/dist/src/online-form/src/views/render/__components__/_field_/trace/utils/columns.d.ts +2 -1
  182. package/dist/src/shared/components/Signature/card-signer.vue.d.ts +14 -0
  183. package/dist/src/shared/components/Signature/logic/index.d.ts +1 -0
  184. package/dist/src/shared/components/Signature/security-config.d.ts +6 -0
  185. package/dist/src/shared/components/Signature/ui/password-signer.vue.d.ts +1 -0
  186. package/dist/src/shared/components/Signature/ui/sign-switcher-modal.vue.d.ts +8 -5
  187. package/dist/src/shared/components/Signature/ui/sign-switcher.vue.d.ts +1 -0
  188. package/dist/src/shared/components/field-transfer/components/field-transfer-modal.vue.d.ts +2 -0
  189. package/dist/src/shared/components/field-transfer/components/modal-wrapper.vue.d.ts +2 -0
  190. package/dist/src/shared/components/field-transfer/useFieldTransfer.d.ts +2 -0
  191. package/dist/src/shared/components/rdo-tree-select/rdo-tree-select.vue.d.ts +1 -0
  192. package/dist/src/shared/enum/field-type.d.ts +12 -0
  193. package/dist/src/shared/utils/lot2sn.d.ts +22 -0
  194. package/dist/{text-design-7Cct8yh2.js → text-design-C8gY_Ud0.js} +5 -5
  195. package/dist/{text-design-DKPFi1Rh.js → text-design-DUOCvsW-.js} +2 -2
  196. package/dist/{text-props-a-16iwJu.js → text-props-D-KBRHkK.js} +5 -5
  197. package/dist/{text-style-CRqOGAZr.js → text-style-D75O3cAI.js} +1 -1
  198. package/dist/{throttle-Cpk1LoGk-BYyz4gtI.js → throttle-Cpk1LoGk-D40m8Nov.js} +1 -1
  199. package/dist/{timediff-design-JHt1-ug6.js → timediff-design-Brg2Aoo2.js} +1 -1
  200. package/dist/{trace-design-DAHDTG5n.js → trace-design-Bphl0RjB.js} +33 -9
  201. package/dist/{trace-props-B5FBtpNR.js → trace-props-DkH0QJYT.js} +63 -35
  202. package/dist/{trace-style-CgdePCcv.js → trace-style-DZx1slRE.js} +1 -1
  203. package/dist/{user-design-BRIV937X.js → user-design-fMF_h4IG.js} +4 -4
  204. package/dist/{user-props-BJVjolL7.js → user-props-u0p3vKkm.js} +2 -2
  205. package/dist/{user-style-D17ZPHqU.js → user-style-dhqwLgPW.js} +1 -1
  206. package/dist/{value-editor.vue_vue_type_style_index_0_lang-J3MR2K39.js → value-editor.vue_vue_type_style_index_0_lang-C1Y-__ux.js} +2 -2
  207. package/dist/{version-select-Bw8yzDaH.js → version-select-Cx1oBH6h.js} +1 -1
  208. package/dist/web-render/index.es.js +397 -24
  209. package/dist/{widget-barcode-IbgHM5xo.js → widget-barcode-D8F4NNVm.js} +4 -4
  210. package/dist/{widget-diagonal-juPAlqEe.js → widget-diagonal-DxWX94Uz.js} +3 -3
  211. package/dist/{widget-image-Dnaej-nk.js → widget-image-BZQOltF7.js} +6 -5
  212. package/dist/{widget-line-DL9jw_oY.js → widget-line-DrYIib_u.js} +4 -4
  213. package/dist/{widget-pagination-BlRJo3n4.js → widget-pagination-M80nEc3Z.js} +5 -5
  214. package/dist/{widget-power-CIC6itUt.js → widget-power-D7jJhsVT.js} +3 -3
  215. package/dist/{widget-qrcode-BWEOVEZg.js → widget-qrcode-CY6qnSPs.js} +3 -3
  216. package/dist/{widget-rangelimit-C4KG56d-.js → widget-rangelimit-CZ6cWnwZ.js} +3 -3
  217. package/dist/{widget-serialnumber-DnfRRyBY.js → widget-serialnumber-DHmkrctf.js} +1 -1
  218. package/dist/{widget-text-C7d0ZrX3.js → widget-text-C4e7Ec_2.js} +5 -5
  219. package/dist/{widget-timediff-FAvqRtXk.js → widget-timediff-B4JkGADo.js} +2 -2
  220. package/package.json +12 -1
  221. package/dist/paper-widget-design-gmMHiQFV.js +0 -4
  222. package/dist/src/nocode-base/src/hooks/material-stocktake/index.d.ts +0 -1
  223. package/dist/src/nocode-base/src/hooks/material-stocktake/useMaterialStocktake.d.ts +0 -8
  224. package/dist/src/online-form/src/views/designer/modules/panel/panel-data-init-config/object-init/object-init-modal.vue.d.ts +0 -26
@@ -98,6 +98,10 @@ export declare abstract class CodeHelper {
98
98
  /** 异步加载 Babel(宿主实现) */
99
99
  static abstract loadBabel(): Promise<any>;
100
100
  }
101
+ /** Monaco 懒加载 */
102
+ export interface ExcelMonacoLoader {
103
+ loadMonaco: () => Promise<any>;
104
+ }
101
105
  /** 宿主注入的工具方法 */
102
106
  export interface ExcelHostUtils {
103
107
  /** 全局模态 / 抽屉等呈现控制器 */
@@ -118,6 +122,12 @@ export interface ExcelHostUtils {
118
122
  * - 业务:`window.NocodeAdapter.utils!.CodeHelper!.babel`
119
123
  */
120
124
  CodeHelper?: typeof CodeHelper;
125
+ /**
126
+ * Monaco 加载器(须由宿主注入)
127
+ * - 宿主:`setupExcel({ utils: { monacoLoader } })`
128
+ * - 业务:`await window.NocodeAdapter.utils!.monacoLoader!.loadMonaco()`
129
+ */
130
+ monacoLoader?: ExcelMonacoLoader;
121
131
  /** 打开公式编辑弹窗 */
122
132
  openFormulaEditor?: OpenFormulaEditor;
123
133
  formulaIdentify?: FormulaIdentify;
@@ -77,6 +77,10 @@ export interface ExcelSetupOptions {
77
77
  * CodeHelper:须由宿主注入实现类(包内仅抽象类型)
78
78
  * - `await setupExcel({ utils: { CodeHelper } })` 内调用 loadBabel,结果写入 babel
79
79
  * - 业务:`window.NocodeAdapter.utils!.CodeHelper!.babel`
80
+ *
81
+ * monacoLoader:须由宿主注入
82
+ * - 宿主:`setupExcel({ utils: { monacoLoader } })`
83
+ * - 业务:`await window.NocodeAdapter.utils!.monacoLoader!.loadMonaco()`
80
84
  */
81
85
  utils?: ExcelHostUtils;
82
86
  }
@@ -84,8 +88,15 @@ export interface ExcelSetupOptions {
84
88
  * 主工程 bootstrap 时调用一次(async:CodeHelper.loadBabel / AsyncGctOnlineComponents.init)。
85
89
  */
86
90
  export declare function setupExcel(options?: ExcelSetupOptions): Promise<typeof NocodeAdapter>;
91
+ /**
92
+ * 每个 Vue app(主应用 / Overlay 独立 app)都应调用一次。
93
+ * 安装 FormBaseModalPlugin(写入 modalManager.appContext),并兜底 globalProperties.$t,
94
+ * 避免命令式弹窗模板里出现 `$t is not a function`。
95
+ */
96
+ export declare function installFormBaseModal(app: App): void;
87
97
  /**
88
98
  * 将 setupExcel 注入的宿主组件注册到指定 Vue app(含 popup / dialog 独立应用)。
89
99
  * 例:`app.component('MobileBasicPopup', ...)` 后模板可直接使用 `<MobileBasicPopup>`。
100
+ * 无论是否有宿主组件,都会安装 FormBaseModalPlugin。
90
101
  */
91
102
  export declare function registerExcelHostComponents(app: App): void;
@@ -108,7 +108,5 @@ export declare const CLEAR_ON_PRODUCT_SWITCH: readonly ["production_identificati
108
108
  export declare const STOCKTAKE_DERIVED_WATCH_FIELDS: readonly ["stocktake_num_", "stock_num_"];
109
109
  /** 按批次+物料+仓库分组(initLoad / 汇总) */
110
110
  export declare const WAREHOUSE_IDENTITY_GROUP_KEYS: readonly ["production_identification_id_", "product_id_", "warehouse_id_"];
111
- /** 扫码合并键(含库位) */
112
- export declare const SCAN_MERGE_GROUP_KEYS: readonly ["production_identification_id_", "product_id_", "warehouse_id_", "location_id_"];
113
111
  /** 库存记录映射基础字段 */
114
112
  export declare const INVENTORY_BASE_FIELDS: readonly ["production_identification_id_", "product_id_", "product_id_name_", "product_id_code_", "product_id_spec_", "warehouse_id_"];
@@ -4,7 +4,6 @@ import { default as ApaasDpPrint } from './online-form/src/views/integration/apa
4
4
  import { default as ApaasDpPrintSheetView } from './online-form/src/views/integration/apaas_dp/designer/apaas-dp-print-sheet-view.vue';
5
5
  import { default as BomEditorModal } from './online-form/src/views/designer/modules/panel/sub-table/material-consumption/bom-modal.vue';
6
6
  import { default as SelectCheckDsModal } from './online-form/src/views/designer/modules/panel/sub-table/panel-check-table/select-check-ds-modal.vue';
7
- import { default as ObjectInitModal } from './online-form/src/views/designer/modules/panel/panel-data-init-config/object-init/object-init-modal.vue';
8
7
  import { default as OutParamModal } from './online-form/src/views/designer/modules/panel/panel-data-init-config/common/add-ipaas/out-param-modal.vue';
9
8
  import { default as InputParamModal } from './online-form/src/views/designer/modules/panel/panel-data-init-config/common/add-ipaas/input-param-modal.vue';
10
9
  import { default as SignatureConfigModal } from './online-form/src/views/designer/modules/panel/comps/signature-config/config-modal.vue';
@@ -27,4 +26,4 @@ export type { CellWidget } from './online-form/src/views/designer/types/cell-wid
27
26
  export type { PaperWidget } from './online-form/src/views/types/paper-widget';
28
27
  export type * from './online-form/src/views/designer/types';
29
28
  export { default as PanelTmplConfig } from './online-form/src/views/designer/modules/panel/panel-tmpl-config/panel-tmpl-config.vue';
30
- export { ApaasCollect, ApaasCollectSheetView, ApaasDpPrint, ApaasDpPrintSheetView, BomEditorModal, SelectCheckDsModal, ObjectInitModal, OutParamModal, InputParamModal, SignatureConfigModal, RenderFieldWrapper, };
29
+ export { ApaasCollect, ApaasCollectSheetView, ApaasDpPrint, ApaasDpPrintSheetView, BomEditorModal, SelectCheckDsModal, OutParamModal, InputParamModal, SignatureConfigModal, RenderFieldWrapper, };
@@ -1,10 +1,11 @@
1
1
  import { ProfileDrivenSubTableCore } from './profile-driven-sub-table-core';
2
2
  import { SubTableCore } from './sub-table-core';
3
+ import { ScanModalInput } from './utils/scan';
3
4
  /**
4
5
  * 库存调拨表 Core
5
6
  * - Profile:禁用字段 / 行默认值 / 物料清空
6
7
  * - 物料走库存选择(allocateProduct)+ FILL_FROM_INVENTORY_OPTION
7
- * - 保留扫码、提交源/目标仓校验、库位查询
8
+ * - 扫码:库存匹配,连续扫码每次新增一行
8
9
  */
9
10
  export declare class AllocateTableCore extends ProfileDrivenSubTableCore {
10
11
  /** 绘制UI相关工具 */
@@ -21,8 +22,6 @@ export declare class AllocateTableCore extends ProfileDrivenSubTableCore {
21
22
  value: any;
22
23
  option?: any;
23
24
  }): void;
24
- protected onScan({ str }: {
25
- str: string;
26
- }): Promise<void>;
25
+ protected onScan(input: ScanModalInput): Promise<void>;
27
26
  beforeBtnClick: SubTableCore['beforeBtnClick'];
28
27
  }
@@ -4,3 +4,5 @@ export * from './stocktake-table-core';
4
4
  export * from './allocate-table-core';
5
5
  export * from './sterilize-batch-table-core';
6
6
  export * from './pretreatment-list-table-core';
7
+ export * from './warehouse-in-table-core';
8
+ export * from './warehouse-out-table-core';
@@ -1,7 +1,7 @@
1
1
  import { ProfileDrivenSubTableCore } from './profile-driven-sub-table-core';
2
2
  import { SubTableCore } from './sub-table-core';
3
3
  import { IFieldStatus } from '../types';
4
- import { SubTableActionEnum } from '../../components/document-sub-table-action';
4
+ import { ScanModalInput } from './utils/scan';
5
5
  /**
6
6
  * 预处理表 Core
7
7
  * - Profile:禁用字段 / 身份字段清空
@@ -9,18 +9,11 @@ import { SubTableActionEnum } from '../../components/document-sub-table-action';
9
9
  * - 选中后 fillFromOption 回填
10
10
  */
11
11
  export declare class PretreatmentListTableCore extends ProfileDrivenSubTableCore {
12
- /** 触发扫码时的目标行 */
13
- private scanTargetRow?;
14
- /** 绘制UI相关工具,一期复用调拨表扫码弹窗 */
12
+ /** 绘制UI相关工具,复用调拨表扫码弹窗 */
15
13
  get render(): import('../..').ISubTableRender;
16
14
  compUnmount(): Promise<void>;
17
15
  init(): Promise<void>;
18
16
  calcSubTableActionMenu: SubTableCore['calcSubTableActionMenu'];
19
- handleMenuClick(params: {
20
- rowData: any;
21
- dataIdx: number;
22
- actionKey: SubTableActionEnum;
23
- }): void;
24
17
  calcFieldStatus(params: {
25
18
  rowData: any;
26
19
  field: string;
@@ -32,7 +25,5 @@ export declare class PretreatmentListTableCore extends ProfileDrivenSubTableCore
32
25
  value: any;
33
26
  option?: any;
34
27
  }): void;
35
- protected onScan({ str }: {
36
- str: string;
37
- }): Promise<void>;
28
+ protected onScan(input: ScanModalInput): Promise<void>;
38
29
  }
@@ -21,25 +21,14 @@ export declare class ProfileDrivenSubTableCore extends SubTableCore {
21
21
  }): void;
22
22
  }
23
23
  /**
24
- * 入库明细表 Core
25
- */
26
- export declare class WarehouseInTableCore extends ProfileDrivenSubTableCore {
27
- }
28
- /**
29
- * EQM 入库明细表 Core
24
+ * EQM 入库明细表 Core(备件主数据联动靠 autofillTemplates)
30
25
  */
31
26
  export declare class WarehouseInboundTableCore extends ProfileDrivenSubTableCore {
32
27
  }
33
28
  /**
34
- * 出库明细表 Core
35
- * - 物料走库存选择(allocateProduct)
36
- * - 选中后按 FILL_FROM_INVENTORY_OPTION 回填
37
- * - 查询条件带页面仓库 id
29
+ * EQM 出库:Profile + 库存 option 回填(备件库存选择组件就绪后生效)
38
30
  */
39
- export declare class WarehouseOutTableCore extends ProfileDrivenSubTableCore {
40
- get warehouseId(): any;
41
- handleFieldTd: SubTableCore['handleFieldTd'];
42
- calcFieldQuery: SubTableCore['calcFieldQuery'];
31
+ export declare class WarehouseOutboundTableCore extends ProfileDrivenSubTableCore {
43
32
  handleChange(params: {
44
33
  rowData: any;
45
34
  field: string;
@@ -48,13 +37,26 @@ export declare class WarehouseOutTableCore extends ProfileDrivenSubTableCore {
48
37
  }): void;
49
38
  }
50
39
  /**
51
- * EQM 出库 / 盘点 / 消耗:Profile 驱动(库存选择后续按备件能力补齐)
40
+ * EQM 备件盘点:Profile + 库存 option 回填,并刷新差异 / 状态
52
41
  */
53
- export declare class WarehouseOutboundTableCore extends ProfileDrivenSubTableCore {
54
- }
55
42
  export declare class PartStocktakeTableCore extends ProfileDrivenSubTableCore {
43
+ handleChange(params: {
44
+ rowData: any;
45
+ field: string;
46
+ value: any;
47
+ option?: any;
48
+ }): void;
56
49
  }
50
+ /**
51
+ * EQM 备件消耗:Profile + 库存 option 回填
52
+ */
57
53
  export declare class DevicePartConsumeTableCore extends ProfileDrivenSubTableCore {
54
+ handleChange(params: {
55
+ rowData: any;
56
+ field: string;
57
+ value: any;
58
+ option?: any;
59
+ }): void;
58
60
  }
59
61
  /** 生产收料表 Core */
60
62
  export declare class MaterialRequisitionTableCore extends ProfileDrivenSubTableCore {
@@ -1,24 +1,15 @@
1
1
  import { SubTableCore } from './sub-table-core';
2
2
  import { IFieldStatus } from '../types';
3
- import { SubTableActionEnum } from '../../components/document-sub-table-action';
3
+ import { ScanModalInput } from './utils/scan';
4
4
  /**
5
5
  * 委托灭菌生产批次列表核心
6
- * @export
7
- * @class SterilizeBatchTableCore
8
6
  */
9
7
  export declare class SterilizeBatchTableCore extends SubTableCore {
10
- /** 触发扫码时的目标行 */
11
- private scanTargetRow?;
12
- /** 绘制UI相关工具,一期复用调拨表扫码弹窗 */
8
+ /** 绘制UI相关工具,复用调拨表扫码弹窗 */
13
9
  get render(): import('../..').ISubTableRender;
14
10
  compUnmount(): Promise<void>;
15
11
  init(): Promise<void>;
16
12
  calcSubTableActionMenu: SubTableCore['calcSubTableActionMenu'];
17
- handleMenuClick(params: {
18
- rowData: any;
19
- dataIdx: number;
20
- actionKey: SubTableActionEnum;
21
- }): void;
22
13
  handleFieldTd: SubTableCore['handleFieldTd'];
23
14
  calcFieldStatus(params: {
24
15
  rowData: any;
@@ -26,7 +17,5 @@ export declare class SterilizeBatchTableCore extends SubTableCore {
26
17
  }): IFieldStatus;
27
18
  calcFieldDataSource: SubTableCore['calcFieldDataSource'];
28
19
  handleChange: SubTableCore['handleChange'];
29
- protected onScan({ str }: {
30
- str: string;
31
- }): Promise<void>;
20
+ protected onScan(input: ScanModalInput): Promise<void>;
32
21
  }
@@ -1,11 +1,12 @@
1
1
  import { ProfileDrivenSubTableCore } from './profile-driven-sub-table-core';
2
2
  import { SubTableCore } from './sub-table-core';
3
3
  import { IFieldStatus } from '../types';
4
+ import { ScanModalInput } from './utils/scan';
4
5
  /**
5
6
  * 库存盘点表 Core
6
7
  * - Profile:只读信息字段 / 行默认仓库 / 物料清空 / 盘点衍生
7
8
  * - 物料:allocateProduct + FILL_FROM_INVENTORY_OPTION
8
- * - 保留:按 row_source_ 禁用、自动加载、扫码合并
9
+ * - 扫码:库存生产标识匹配;同身份累加实盘,否则新增行
9
10
  */
10
11
  export declare class StocktakeTableCore extends ProfileDrivenSubTableCore {
11
12
  initData: any[];
@@ -35,8 +36,8 @@ export declare class StocktakeTableCore extends ProfileDrivenSubTableCore {
35
36
  value: any;
36
37
  option?: any;
37
38
  }): void;
38
- protected onScan({ barcode, type }: {
39
- barcode: any;
40
- type: any;
41
- }): Promise<void>;
39
+ /**
40
+ * 盘点扫码弹窗回传 { barcode, type };在此解析并走库存扫码接口
41
+ */
42
+ protected onScan(input: ScanModalInput): Promise<void>;
42
43
  }
@@ -176,6 +176,17 @@ export declare class SubTableCore {
176
176
  * @param opts
177
177
  */
178
178
  openScanModal(): Promise<void>;
179
+ /** 解析子表默认值(函数默认值先求值),扫码填空行时忽略这些字段 */
180
+ private resolveScanIgnoreValues;
181
+ /**
182
+ * 扫码入行:优先回填首个空壳占位行,否则追加到表尾。
183
+ * 对齐 Word appendOrFillScanRow,避免仅一行空壳时扫码落到第二行。
184
+ */
185
+ protected appendOrFillScanRow(row: Record<string, unknown>): void;
186
+ /**
187
+ * 扫码多条候选时选择一行(1 条自动选中)
188
+ */
189
+ protected pickScanRecord(records: Record<string, unknown>[]): Promise<Record<string, unknown> | undefined>;
179
190
  /**
180
191
  * 处理扫码弹窗回调
181
192
  * 参数由扫码弹窗决定
@@ -0,0 +1,3 @@
1
+ export * from './scan-helpers';
2
+ export * from './inventory-scan-api';
3
+ export * from './production-identification-scan-api';
@@ -0,0 +1,9 @@
1
+ import { IRuleParseData } from '../../../../hooks/label-parse-rule';
2
+ export declare const SCAN_NOT_FOUND_MSG = "\u626B\u63CF\u7684\u7269\u6599\u4E0D\u5B58\u5728";
3
+ export declare const SCAN_LOT_OR_UNIQUE_REQUIRED_MSG = "\u6761\u7801\u4E2D\u672A\u89E3\u6790\u5230\u7269\u6599\u6279\u53F7\u6216\u552F\u4E00\u7801";
4
+ /** 物料批号、唯一码至少有一个非空 */
5
+ export declare function hasLotOrUniqueCode(parsed: IRuleParseData): boolean;
6
+ /** 条码解析结果 + 当前仓库 → 扫码接口入参 */
7
+ export declare function buildInventoryScanRequestBody(parsed: IRuleParseData, warehouseId?: string): Record<string, unknown>;
8
+ /** 调用库存扫码匹配接口,返回 0/1/N 条候选 */
9
+ export declare function matchInventoryScanRecords(parsed: IRuleParseData, warehouseId?: string): Promise<Record<string, unknown>[]>;
@@ -0,0 +1,9 @@
1
+ import { IRuleParseData } from '../../../../hooks/label-parse-rule';
2
+ export declare const PRODUCTION_IDENTIFICATION_SCAN_NOT_FOUND_MSG = "\u626B\u63CF\u7684\u7269\u6599\u4E0D\u5B58\u5728";
3
+ export declare const PRODUCTION_IDENTIFICATION_SCAN_LOT_OR_UNIQUE_REQUIRED_MSG = "\u6761\u7801\u4E2D\u672A\u89E3\u6790\u5230\u7269\u6599\u6279\u53F7\u6216\u552F\u4E00\u7801";
4
+ /** 物料批号、唯一码至少有一个非空 */
5
+ export declare function hasProductionIdentificationScanKey(parsed: IRuleParseData): boolean;
6
+ /** 条码解析结果 → 扫码接口入参 */
7
+ export declare function buildProductionIdentificationScanBody(parsed: IRuleParseData): Record<string, unknown>;
8
+ /** 调用生产标识扫码匹配接口,返回 0/1/N 条候选 */
9
+ export declare function matchProductionIdentificationScanRecords(parsed: IRuleParseData): Promise<Record<string, unknown>[]>;
@@ -0,0 +1,38 @@
1
+ import { IRuleParseData } from '../../../../hooks/label-parse-rule';
2
+ /**
3
+ * 当前行是不是「空壳占位行」,有没有真正的业务内容。
4
+ * 对齐 Word hasSubtableBusinessData:忽略 front_row_key_ / group_ / deleted_ / _* 元数据。
5
+ * ignoreValues:行默认值(如仓库上下文)不算用户填报。
6
+ */
7
+ export declare function hasSubtableBusinessData(row: Record<string, unknown> | null | undefined, ignoreValues?: Record<string, unknown>): boolean;
8
+ /**
9
+ * 扫码入行:优先回填首个空壳占位行,否则在可见区末尾新增。
10
+ * 避免版面默认空行时直接 append 导致「第一行空、第二行有数据」。
11
+ */
12
+ export declare function appendOrFillScanRow(visibleRows: Record<string, unknown>[], row: Record<string, unknown>, ignoreValues?: Record<string, unknown>): Record<string, unknown>[];
13
+ /** 扫码数量调整方向(盘点加减实盘) */
14
+ export type ScanAdjustType = 'add' | 'minus';
15
+ /** 扫码弹窗回传 */
16
+ export type ScanModalInput = {
17
+ str?: string;
18
+ parsedValue?: unknown;
19
+ transformedData?: unknown;
20
+ barcode?: string;
21
+ type?: ScanAdjustType | string;
22
+ [key: string]: unknown;
23
+ };
24
+ /** 取扫码弹窗 parsedValue */
25
+ export declare function resolveScanParsedValue<T extends Record<string, unknown> = IRuleParseData>(input: ScanModalInput): T | undefined;
26
+ /** 取扫码弹窗 transformedData(字段映射结果) */
27
+ export declare function resolveScanFillData(input: ScanModalInput): Record<string, unknown>;
28
+ /** 取扫码数量调整方向,默认 add */
29
+ export declare function resolveScanAdjustType(input: ScanModalInput): ScanAdjustType;
30
+ /** 解析扫码数量,缺省为 1 */
31
+ export declare function resolveScanQty(parsedQty: unknown, recordQty?: unknown, fallback?: number): number;
32
+ /** 有效期格式化为 YYYY-MM-DD */
33
+ export declare function toDateOnly(value: unknown): string | undefined;
34
+ /** 多选弹框行展示字段 */
35
+ export declare function mapScanRecordsForPicker(records: Record<string, unknown>[]): {
36
+ productId: unknown;
37
+ materialNo: unknown;
38
+ }[];
@@ -7,68 +7,15 @@ export declare function buildStocktakeDerived(stocktakeNum?: number | null, stoc
7
7
  status: StocktakeStatusKey;
8
8
  statusLabel: string;
9
9
  };
10
- /** 盘点状态 key 对应展示文案 */
11
- export declare function getStocktakeStatusLabel(key: StocktakeStatusKey): string;
12
- /** 计算差异数量 */
13
- export declare function calcDiffNum(stocktakeNum?: number | null, stockNum?: number | null): number | undefined;
14
- /** 根据实盘数量与库存数量计算盘点状态 key */
15
- export declare function calcStocktakeStatus(stocktakeNum?: number | null, stockNum?: number | null): StocktakeStatusKey;
16
- /** 按批次+物料+仓库将接口明细拆成多组(扫码可能一次返回多种物料) */
17
- export declare function groupRecordsByInventoryIdentity(records: Record<string, unknown>[]): Record<string, unknown>[][];
18
- /**
19
- * 扫码记录处理结果
20
- * @property kind='accumulate' - 匹配到已有盘点行,执行数量累加
21
- * @property kind='skip-location-not-selected' - 因未选择仓位而跳过处理
22
- * @property kind='unprocessed' - 未匹配到已有盘点行,等待后续新增行处理
23
- */
24
- export type ScanRecordDisposition = {
25
- kind: 'accumulate';
26
- index: number;
27
- } | {
28
- kind: 'skip-location-not-selected';
29
- } | {
30
- kind: 'unprocessed';
31
- };
32
- /**
33
- * 判断单条扫码明细如何处理:
34
- * - 已有相同行且库位已选(或无库位字段)→ 累加条码 qty 到实盘数
35
- * - 已有相同物料行但库位未选 → 跳过
36
- * - 否则 → 待新建行
37
- */
38
- export declare function dispositionScanRecord(record: Record<string, unknown>, visibleRows: IWarehouseInventoryRow[], groupByWarehouse: boolean): ScanRecordDisposition;
39
- /**
40
- * 待新建明细:先按批次+物料+仓库分组,取第一组再组装 resolve 入参
41
- * - 页面无库位:该组全部明细 groupBy 累加
42
- * - 页面有库位 + 组内多条:整组走多库位候选(不自动填库位)
43
- * - 页面有库位 + 组内单条:自动填库位
44
- */
45
- export declare function pickRecordsForNewScanRow(unprocessed: Record<string, unknown>[], groupByWarehouse: boolean): {
46
- records: Record<string, unknown>[];
47
- productGroupCount: number;
48
- };
49
- /** 按条码 qty 与调整方向更新盘点数量;原值为空时视为 1 */
50
- export declare function applyScanQtyToStocktake(current: unknown, scanQty: unknown, type: 'add'): unknown;
51
- /** 扫码命中已有行:按 add/minus 调整 stocktake_num_ */
52
- export declare function accumulateScanQtyOnRow(visibleRows: IWarehouseInventoryRow[], rowIndex: number, scanQty: unknown, type: 'add'): {
53
- rows: IWarehouseInventoryRow[];
54
- mergedIndex: number;
55
- shouldWarning?: boolean;
56
- };
57
- /** 未处理明细新建行 */
58
- export declare function appendScanRowFromResolve(visibleRows: IWarehouseInventoryRow[], rowData: Record<string, unknown>): {
59
- rows: IWarehouseInventoryRow[];
60
- mergedIndex: number;
61
- };
10
+ /** 按条码 qty 与调整方向更新盘点数量;原值为空时视为 0 */
11
+ export declare function applyScanQtyToStocktake(current: unknown, scanQty: unknown, type?: 'add' | 'minus'): unknown;
12
+ /** 盘点数量下限 */
13
+ export declare const MIN_STOCKTAKE_NUM = 0;
14
+ /** 扣减导致实盘数量小于 0 时的拦截原因;add 或无需校验时返回 undefined */
15
+ export declare function getScanQtyDeductionBlockReason(current: unknown, scanQty: unknown, type?: 'add' | 'minus'): string | undefined;
62
16
  /**
63
17
  * 将明细转为盘点行
64
18
  * - 页面有库位字段:不 groupBy,一条明细一行
65
19
  * - 页面无库位字段:按 批次 + 物料 + 仓库 groupBy,stock_num_ 累加
66
20
  */
67
21
  export declare function groupInventoryToStocktakeRows(records: Record<string, unknown>[], groupByWarehouse: boolean): IWarehouseInventoryRow[];
68
- export declare function shouldAssignScanQty(options: {
69
- assignScanQty: boolean;
70
- scanQty: unknown;
71
- rowIndex: number;
72
- qtyAssignedRowIndexes: ReadonlySet<number>;
73
- }): boolean;
74
- export declare function resolveScanRecords(groupByWarehouse: boolean, records: any): any;
@@ -0,0 +1,11 @@
1
+ import { ProfileDrivenSubTableCore } from './profile-driven-sub-table-core';
2
+ import { SubTableCore } from './sub-table-core';
3
+ import { ScanModalInput } from './utils/scan';
4
+ /**
5
+ * 入库明细表 Core
6
+ * - 扫码:生产标识匹配,连续扫码每次新增一行
7
+ */
8
+ export declare class WarehouseInTableCore extends ProfileDrivenSubTableCore {
9
+ calcSubTableActionMenu: SubTableCore['calcSubTableActionMenu'];
10
+ protected onScan(input: ScanModalInput): Promise<void>;
11
+ }
@@ -0,0 +1,21 @@
1
+ import { ProfileDrivenSubTableCore } from './profile-driven-sub-table-core';
2
+ import { SubTableCore } from './sub-table-core';
3
+ import { ScanModalInput } from './utils/scan';
4
+ /**
5
+ * 出库明细表 Core
6
+ * - 物料走库存选择(allocateProduct)
7
+ * - 扫码:库存匹配;同物料+批次累加数量,否则新增行
8
+ */
9
+ export declare class WarehouseOutTableCore extends ProfileDrivenSubTableCore {
10
+ get warehouseId(): any;
11
+ handleFieldTd: SubTableCore['handleFieldTd'];
12
+ calcFieldQuery: SubTableCore['calcFieldQuery'];
13
+ calcSubTableActionMenu: SubTableCore['calcSubTableActionMenu'];
14
+ handleChange(params: {
15
+ rowData: any;
16
+ field: string;
17
+ value: any;
18
+ option?: any;
19
+ }): void;
20
+ protected onScan(input: ScanModalInput): Promise<void>;
21
+ }
@@ -13,7 +13,7 @@ export * from './device-link';
13
13
  export * from './form-model';
14
14
  export * from './form-tmpl-config';
15
15
  export * from './material-consume';
16
+ export * from './material-consume-object';
16
17
  export * from './label-parse-rule';
17
18
  export * from './material-balance';
18
19
  export * from './app-info';
19
- export * from './material-stocktake';
@@ -24,6 +24,12 @@ export interface IRuleParseData {
24
24
  qty?: number;
25
25
  /** 有效期 */
26
26
  expiration?: string;
27
+ /** 唯一码 */
28
+ uniqueCode?: string;
29
+ /** 工单编号 */
30
+ mfgOrderCode?: string;
31
+ /** 灭菌批次号 */
32
+ sterilizationLot?: string;
27
33
  /** 其他字段 */
28
34
  [k: string]: any;
29
35
  }
@@ -1,4 +1,10 @@
1
1
  import { IBomEntry, IMaterialConsumeData } from './types';
2
+ /** 行级校验错误:提交时挂到对应单元格,扫码/切组仍可读 message */
3
+ export declare class McRowValidateError extends Error {
4
+ readonly targetFieldId: 'product_id_' | 'material_no_' | 'qty_' | 'expiration_date_';
5
+ readonly row: IMaterialConsumeData;
6
+ constructor(message: string, targetFieldId: 'product_id_' | 'material_no_' | 'qty_' | 'expiration_date_', row: IMaterialConsumeData);
7
+ }
2
8
  /** 扫码校验通过后抛给填充层的完整计划(下标相对入参 arr) */
3
9
  export interface ScanFillPlan {
4
10
  target: BomEntryValidator;
@@ -83,17 +89,6 @@ export declare class BomEntryValidator {
83
89
  validateSpecifiedMaterialNo(row: IMaterialConsumeData): void;
84
90
  /** 整组指定批次校验:组内每一行有批次值的都检查 */
85
91
  validateSpecifiedMaterialNoForGroup(arr: IMaterialConsumeData[]): void;
86
- /**
87
- * 校验数量
88
- * @param arr
89
- * @return {*}
90
- */
91
- validateNum(arr: IMaterialConsumeData[]): Promise<void>;
92
- /**
93
- * 校验库存
94
- * @param row 当前行数据
95
- */
96
- validateStock(row: IMaterialConsumeData): Promise<void>;
97
92
  /**
98
93
  * 计算已经消耗的数量之和
99
94
  * @param arr
@@ -115,12 +110,6 @@ export declare class BomEntryValidator {
115
110
  * @param sequential 是否按顺序上料;eq 规则在非顺序模式下允许少上
116
111
  */
117
112
  validateGroupQty(arr: IMaterialConsumeData[], sequential?: boolean, groupNo?: number): Promise<void>;
118
- /**
119
- * 按顺序投料用
120
- * 检查数据中的当前明细的填报是否已经完成
121
- * @param arr
122
- */
123
- validateHasCompleted(arr: IMaterialConsumeData[]): Promise<void>;
124
113
  }
125
114
  export declare class BomEntriesValidator {
126
115
  entries: IBomEntry[];
@@ -146,8 +135,6 @@ export declare class BomEntriesValidator {
146
135
  mainMaterialNo: string,
147
136
  /** 物料消耗模式 */
148
137
  noBomMode: boolean);
149
- /** 当前批次/生产数量 */
150
- get materialNoNum(): number;
151
138
  /**
152
139
  * 翻译物料的code
153
140
  * @param productId
@@ -168,8 +155,6 @@ export declare class BomEntriesValidator {
168
155
  * @returns 有编辑行且只落在一组 → true;无编辑行 → false;跨多组编辑 → 抛错
169
156
  */
170
157
  hasEditingGroup(arr: IMaterialConsumeData[]): boolean;
171
- /** 取当前唯一编辑组的 BOM 明细 id;没有则 undefined */
172
- getEditingGroupId(arr: IMaterialConsumeData[]): string | undefined;
173
158
  /**
174
159
  * 行 → BOM 明细在 bomEntryValidators 中的下标,找不到返回 -1
175
160
  */
@@ -188,13 +173,6 @@ export declare class BomEntriesValidator {
188
173
  * 编辑行无物料时,用前后组夹出范围,取 (prev, next) 开区间起点。
189
174
  */
190
175
  findSequenceBomEntry(arr: IMaterialConsumeData[]): BomEntryValidator | undefined;
191
- /**
192
- * 检验是否符合顺序投料的顺序要求
193
- * @param row 当前编辑的行
194
- * @param arr 所有的数据
195
- * @return {*}
196
- */
197
- validateSequenceLoading(row: IMaterialConsumeData, arr: IMaterialConsumeData[]): Promise<void>;
198
176
  /** 表中是否已有该 BOM 组(有物料行或带 bom_entry_id_ 的空行) */
199
177
  private groupExistsInTable;
200
178
  /**
@@ -224,70 +202,33 @@ export declare class BomEntriesValidator {
224
202
  * 切组前校验当前编辑组:BOM 内 + 必填、有效期、替代料、混批、数量校验
225
203
  */
226
204
  validateCurrentGroupForSwitch(arr: IMaterialConsumeData[], current: BomEntryValidator): Promise<void>;
205
+ /**
206
+ * 行级错误(提交收集全部打标;切组/扫码抛第一条)
207
+ */
208
+ getRowFieldErrors(row: IMaterialConsumeData): McRowValidateError[];
227
209
  /**
228
210
  * 校验物料是否在bom里被使用
229
211
  * @param row 单行的数据
230
212
  */
231
213
  validateInBom(row: IMaterialConsumeData): void;
232
214
  /**
233
- * 检查数据是否完整
234
- * @param arr
215
+ * 检查数据是否完整(切组/扫码:遇错即抛)
235
216
  */
236
217
  validateDataCompleted(row: IMaterialConsumeData): void;
237
- /**
238
- * 校验替代料校验
239
- * @param arr
240
- */
241
- validateSubstitute(arr: IMaterialConsumeData[]): void;
242
- /**
243
- * 校验混批校验
244
- * @param arr
245
- */
246
- validateLotMixing(arr: IMaterialConsumeData[]): void;
247
- /**
248
- * 通用校验 3(扫码/写入前):用 row + 表内同行组数据对比混批次数,不改动原 validateLotMixing
249
- */
250
- validateLotMixingWithRow(row: IMaterialConsumeData, arr: IMaterialConsumeData[]): void;
251
- /**
252
- * 校验数量
253
- * @param arr
254
- */
255
- validateNum(arr: IMaterialConsumeData[]): Promise<void>;
256
- /**
257
- * 校验库存消耗
258
- * @param row
259
- */
260
- validateStock(row: IMaterialConsumeData): Promise<void>;
261
- /**
262
- * 检验整个数组是否符合bom配置的要求
263
- * @param arr
264
- */
265
- validate(arr: IMaterialConsumeData[]): Promise<void>;
218
+ /** 提交:收集全表行级错误,不中断。无物料且无组归属的占位行跳过 */
219
+ collectRowErrors(arr: IMaterialConsumeData[]): McRowValidateError[];
266
220
  /**
267
221
  * 检查扫描数据是否可以插入,通过后返回填充计划(记录模式无 plan)
268
222
  */
269
223
  validateScanCanInsert(row: IMaterialConsumeData, arr: IMaterialConsumeData[]): Promise<ScanFillPlan | undefined>;
270
- /**
271
- * 校验当前编辑行的数据
272
- * @param arr
273
- * @returns
274
- */
275
- validateEditRow(arr: IMaterialConsumeData[]): Promise<void>;
276
224
  /**
277
225
  * 顺序上料提交:表中最后一组之前,必须上料组不能缺失(仅结构/顺序,不校验数量)
278
226
  */
279
227
  private assertSubmitSequenceOrder;
280
228
  /**
281
- * 提交整表校验:必须上料组须存在;顺序上料校验组序;表中存在的组走整组校验(不含库存)
282
- */
283
- validateAllRows(arr: IMaterialConsumeData[]): Promise<void>;
284
- /**
285
- * 把扫描数据按情况插入到数组的位置,返回新数组
286
- * @param row
287
- * @param arr
288
- * @return {*}
229
+ * 提交组级校验:必须上料 / 顺序 / 替代料 / 混批 / 组数量。遇错即抛,不含行级必填。
289
230
  */
290
- mergeRowInArr(row: IMaterialConsumeData, arr: IMaterialConsumeData[]): IMaterialConsumeData[];
231
+ assertGroupRules(arr: IMaterialConsumeData[]): Promise<void>;
291
232
  /**
292
233
  * 获取BOM里面所有的主料,替换料的id集合
293
234
  */