@gct-paas/excel 0.1.39-beta.0 → 0.1.39-beta.10

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 (104) hide show
  1. package/dist/AntdIcon-DCIaV352.js +1108 -0
  2. package/dist/{BaseComponent-BO75HbkD.js → BaseComponent-Dri2NRAY.js} +2 -2
  3. package/dist/{VueVideoPlayer-C49th9G_.js → VueVideoPlayer-DPJyefX-.js} +2 -2
  4. package/dist/{align-editor-CpscpDxA.js → align-editor-BvGUsoz3.js} +1 -1
  5. package/dist/{barcode-design-CKbMreUi.js → barcode-design-BIAenf34.js} +2 -2
  6. package/dist/base/index.es.js +142 -125
  7. package/dist/{diagonal-design-DEz3_fE8.js → diagonal-design-Bg0Wzojk.js} +2 -2
  8. package/dist/{dynamic-table-action-DFnvJWw-.js → dynamic-table-action-BQfJFJ4j.js} +257 -114
  9. package/dist/{dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-BDkKB_4N.js → dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-DZRtpBe8.js} +295 -215
  10. package/dist/{edit.utils-CXmmCnxE-evcsspEJ.js → edit.utils-CXmmCnxE-CvJGxh2v.js} +1 -1
  11. package/dist/excel.css +339 -143
  12. package/dist/{exceljs.min-CXjktZ33.js → exceljs.min-oMo9w3-p.js} +2 -2
  13. package/dist/{font-editor-DAcmrW2A.js → font-editor-JT-C4KUo.js} +3 -3
  14. package/dist/{image-design-BnDK5Jwf.js → image-design-A8_t4F3t.js} +2 -2
  15. package/dist/{index-D06X_Sz7.js → index-1Aq6q-wr.js} +3 -3
  16. package/dist/{index-CQ9v7Q0g.js → index-3clyu1Q_.js} +4 -4
  17. package/dist/{index-BRV9V8ld.js → index-B-Kwr44d.js} +1 -1
  18. package/dist/{index-D72ZxU1B.js → index-B8Vkmyc8.js} +3 -3
  19. package/dist/{index-CXBwY7ba.js → index-BE-3UQG0.js} +5 -4
  20. package/dist/{index-BJj0R1JE.js → index-BLmR9aiG.js} +1 -1
  21. package/dist/{index-DRF0yT-Y.js → index-BUK-p31i.js} +2 -2
  22. package/dist/{index-BA3994iB.js → index-B_GyS-E2.js} +1 -1
  23. package/dist/{index-CNBwsBrN.js → index-Bs8Xs0bo.js} +1 -1
  24. package/dist/{index-CeoXayAy.js → index-C3k8QiLF.js} +2 -2
  25. package/dist/{index-BvYfYS4D.js → index-CISAQtLd.js} +3 -3
  26. package/dist/{index-IAfu2tPO.js → index-CJdwj04Z.js} +1 -1
  27. package/dist/{index-4-w7U148.js → index-CJiOtrhx.js} +2 -2
  28. package/dist/{index-BlZQjpdp.js → index-CRloZ0HP.js} +2 -2
  29. package/dist/{index-BNjowwSy.js → index-CTASuQPn.js} +1 -1
  30. package/dist/{index-D1m06PsY.js → index-Caygbi4F.js} +2 -2
  31. package/dist/{index-DALo6h-z.js → index-CfGLFrkj.js} +1 -1
  32. package/dist/{index-CCNBotX0.js → index-Cls_jFJq.js} +26025 -25798
  33. package/dist/{index-kQi_q492.js → index-Cqcbgcw7.js} +2 -2
  34. package/dist/{index-BH4YqNzS.js → index-D1jXU0ka.js} +2 -2
  35. package/dist/{index-BRKs8S7h.js → index-D9444n1O.js} +2 -2
  36. package/dist/{index-D9SThznm.js → index-D9OUmbBs.js} +1 -1
  37. package/dist/{index-qKN7-uGo.js → index-DERot0lx.js} +3 -3
  38. package/dist/{index-vOd76hbp.js → index-DFNVqlgA.js} +1 -1
  39. package/dist/{index-DScv6Lhe.js → index-DIythXNr.js} +3 -3
  40. package/dist/{index-DWPgvBzt.js → index-DPHGDezJ.js} +1 -1
  41. package/dist/{index-H2lP-HBC.js → index-DT8qwYke.js} +2 -2
  42. package/dist/{index-C8AH07MC.js → index-DWVhXPb-.js} +2 -2
  43. package/dist/{index-KnPqm-JT.js → index-DY7Xkd8n.js} +2 -2
  44. package/dist/{index-BlFNgjr-.js → index-DkwkBWEP.js} +2 -2
  45. package/dist/{index-Dn7Za3rP.js → index-DmBx27M9.js} +2 -2
  46. package/dist/{index-ywxJkkJ_.js → index-DsLZqLga.js} +2 -2
  47. package/dist/{index-B0o6GTve.js → index-H2nF4SP8.js} +2 -2
  48. package/dist/{index-DUgFd0ON.js → index-afC-rHNa.js} +2 -2
  49. package/dist/{index-BVCrUywZ.js → index-bH6ERrWd.js} +2 -2
  50. package/dist/index.es.js +2 -2
  51. package/dist/{mb-render-jAsNtPqY.js → mb-render-DybPk-KF.js} +2 -2
  52. package/dist/{online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-CqKkoSRa.js → online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-BEX02BrW.js} +4 -1034
  53. package/dist/{pagination-design-6xxPBIk-.js → pagination-design-Ct6xpKO9.js} +2 -2
  54. package/dist/paper-widget-design-CEEWgUk_.js +4 -0
  55. package/dist/{print-runtime-instance-D8QAHAsd.js → print-runtime-instance-7aZCZWS4.js} +1 -1
  56. package/dist/{print-snapshot-renderer-BDrHYena.js → print-snapshot-renderer-DPFZBXE2.js} +3 -3
  57. package/dist/{qrcode-design-CBDd-S2d.js → qrcode-design-SOVTkKjY.js} +1 -1
  58. package/dist/{revo-grid.entry-Bygattd8.js → revo-grid.entry-EvEm_y2W.js} +1 -1
  59. package/dist/{revogr-attribution_7.entry-BqzhD1hP.js → revogr-attribution_7.entry-DgE6PR1L.js} +3 -3
  60. package/dist/{revogr-clipboard_3.entry-Wr7KhnJ_.js → revogr-clipboard_3.entry-CNDxeVhF.js} +2 -2
  61. package/dist/{revogr-data_4.entry-CrFW39f1.js → revogr-data_4.entry-DKwV9DMF.js} +2 -2
  62. package/dist/{revogr-filter-panel.entry-9khS41SL.js → revogr-filter-panel.entry-1SAhHHfl.js} +1 -1
  63. package/dist/seal-design-DukOrO2g.js +4 -0
  64. package/dist/{serialnumber-design-eXgfrjw9.js → serialnumber-design-Cs3B0ZNE.js} +1 -1
  65. package/dist/shared/index.es.js +6 -6
  66. package/dist/{single-field-drop-1eS6_6ko.js → single-field-drop-C-i51iU4.js} +3 -3
  67. package/dist/{size-editor-OEPrJU0W.js → size-editor-B2TfX4_r.js} +1 -1
  68. package/dist/src/nocode-base/src/core/sub-table/pretreatment-list-table-core.d.ts +1 -0
  69. package/dist/src/nocode-base/src/runtime/async-task-coordinator.d.ts +6 -2
  70. package/dist/src/nocode-base/src/runtime/multi-sheet-runtime.d.ts +2 -0
  71. package/dist/src/nocode-base/src/runtime/runtime-context.d.ts +2 -0
  72. package/dist/src/nocode-base/src/runtime/runtime-field-initializer.d.ts +1 -1
  73. package/dist/src/nocode-base/src/runtime/runtime-form-state-store.d.ts +6 -0
  74. package/dist/src/nocode-base/src/runtime/runtime-validation-service.d.ts +1 -0
  75. package/dist/src/nocode-base/src/runtime/table-row-identity.d.ts +11 -2
  76. package/dist/src/nocode-base/src/types/fields/i-sign.d.ts +1 -1
  77. package/dist/src/nocode-base/src/types/render/mc-render.d.ts +1 -1
  78. package/dist/src/nocode-web-render/src/render/sub-table/material-consume/mc-web-render.d.ts +1 -1
  79. package/dist/src/online-form/src/views/designer/conversions/normalize-paper-grid.d.ts +3 -0
  80. package/dist/src/online-form/src/views/designer/hooks/useAllSpreadSheets.d.ts +9 -9
  81. package/dist/src/online-form/src/views/render/sheet-tab-bar.vue.d.ts +5 -3
  82. package/dist/src/shared/components/Signature/logic/index.d.ts +1 -1
  83. package/dist/{sub-table-factory-D8KUikPE.js → sub-table-factory-CNkIUJTC.js} +20 -7
  84. package/dist/{text-design-BkvEuU7u.js → text-design-B-VmJzZy.js} +2 -2
  85. package/dist/{throttle-Cpk1LoGk-DxTostCa.js → throttle-Cpk1LoGk-Ch-cqj2G.js} +1 -1
  86. package/dist/{timediff-design-BFf9WtJn.js → timediff-design-DASqeRcJ.js} +1 -1
  87. package/dist/{trace-like-wrapper-SPo5HVCt.js → trace-like-wrapper-Cj-nluW3.js} +2 -2
  88. package/dist/{value-editor.vue_vue_type_style_index_0_lang-BzVvcoTa.js → value-editor.vue_vue_type_style_index_0_lang-D5fckkvA.js} +2 -2
  89. package/dist/web-render/index.es.js +3 -3
  90. package/dist/{widget-barcode-B_aUPEfd.js → widget-barcode-BOseDEJ_.js} +4 -4
  91. package/dist/{widget-diagonal-D32J64HV.js → widget-diagonal-CzWRf_zr.js} +4 -4
  92. package/dist/{widget-image-BOOWwiSe.js → widget-image-CNtyaz7J.js} +5 -5
  93. package/dist/{widget-line-xVHcCE1_.js → widget-line-CrOS0l_-.js} +2 -2
  94. package/dist/{widget-pagination-B0Bq_gL5.js → widget-pagination-wCWG30o6.js} +5 -5
  95. package/dist/{widget-power-TNCB2u1G.js → widget-power-ayN9em_Q.js} +4 -4
  96. package/dist/{widget-qrcode-gVSwYuKp.js → widget-qrcode-CZatrCp4.js} +3 -3
  97. package/dist/{widget-rangelimit-BO7Z_5N9.js → widget-rangelimit-CzboyNIZ.js} +4 -4
  98. package/dist/{widget-serialnumber-BX83djNf.js → widget-serialnumber-CHCW116y.js} +1 -1
  99. package/dist/{widget-text-CIqov_wj.js → widget-text-rVl_vy60.js} +5 -5
  100. package/dist/{widget-timediff-kFxxm2hM.js → widget-timediff-BhTa83S9.js} +2 -2
  101. package/package.json +1 -1
  102. package/dist/paper-widget-design-CUk1634i.js +0 -4
  103. package/dist/seal-design-DNrW57Za.js +0 -4
  104. package/dist/use-namespace-BxkK4ofX.js +0 -77
@@ -1,10 +1,10 @@
1
- import { reactive, toRaw, computed, watch, onScopeDispose, inject, h, shallowReactive, markRaw, ref, nextTick, toRef, provide, defineComponent, openBlock, createElementBlock, mergeProps, unref, createElementVNode, normalizeClass, renderSlot, createCommentVNode, createVNode, toDisplayString, onUnmounted, isVNode, onMounted, onBeforeMount, resolveComponent, createBlock, withCtx, Fragment, renderList, createTextVNode } from "vue";
2
- import { ai as CellWidgetViewState, F as FIELD_TYPE, b8 as RenderModeEnum, Y as FormTypeEnum, bE as BpmnNodeTypeEnum, cr as getFieldPlaceholder, bU as MobileFillTypeEnum, C as ComponentTypeEnum, $ as PlatformEnum, cs as isReferenceOptionActive, E as api, bu as uuid2, c2 as calcUtils, bj as findRuntimeTableRow, c4 as ensureTableRowKeys, b$ as bindRuntimeTableColumns, bi as getRowId, ct as FRONT_ROW_KEY, bw as isAttachFieldActive, cu as filterRulesByTrigger, cv as isEmptyValue$1, c3 as ensureFrontRowKey, b0 as getParseRuleInfo, aF as transformUtils, aY as materialCheck, aZ as getLotLockedReason, a_ as validateReinspectionDate, bn as FormulaRuleFieldKeyEnum, f as SubTableType, b1 as getParseRuleValue, cw as buildError, H as CreateType, bl as findRuntimeParentRow, aI as Dependency_ENUM, aH as ASSIGNMENTSTRATEGY_ENUM, bJ as commonUtils, aM as DeviceLink, a8 as _export_sfc, cd as getRenderedRuntimeTableCell, y as CellType, cm as relocateDeletedRowsToEnd, cx as resetTableRowIdentity, J as useModal, cy as q, cz as QUICK_FILL_ALLOWED_FIELDS, cA as groupFixedTableRows, cB as processQuickFillRows, cC as getIsGroupEmpty } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-BDkKB_4N.js";
1
+ import { reactive, toRaw, computed, watch, onScopeDispose, inject, h, shallowReactive, markRaw, ref, nextTick, toRef, provide, defineComponent, openBlock, createElementBlock, mergeProps, unref, createElementVNode, normalizeClass, renderSlot, createCommentVNode, createVNode, toDisplayString, Fragment, renderList, onUnmounted, isVNode, onMounted, onBeforeMount, resolveComponent, createBlock, withCtx, createTextVNode } from "vue";
2
+ import { ai as CellWidgetViewState, F as FIELD_TYPE, b8 as RenderModeEnum, Y as FormTypeEnum, bE as BpmnNodeTypeEnum, cv as getFieldPlaceholder, bV as MobileFillTypeEnum, C as ComponentTypeEnum, $ as PlatformEnum, cw as isReferenceOptionActive, E as api, bu as uuid2, c3 as calcUtils, bj as findRuntimeTableRow, c7 as ensureTableRowKeys, c0 as bindRuntimeTableColumns, bi as getRowId, cx as FRONT_ROW_KEY, cm as isTableRowKeyMatch, bw as isAttachFieldActive, cy as filterRulesByTrigger, cz as isEmptyValue$1, c4 as decodeTableCellRowKey, c6 as ensureFrontRowKey, b0 as getParseRuleInfo, aF as transformUtils, aY as materialCheck, aZ as getLotLockedReason, a_ as validateReinspectionDate, bn as FormulaRuleFieldKeyEnum, f as SubTableType, b1 as getParseRuleValue, cA as buildError, H as CreateType, bl as findRuntimeParentRow, aI as Dependency_ENUM, aH as ASSIGNMENTSTRATEGY_ENUM, bJ as commonUtils, aM as DeviceLink, a8 as _export_sfc, cg as getRenderedRuntimeTableCell, y as CellType, cq as relocateDeletedRowsToEnd, cB as resetTableRowIdentity, J as useModal, cC as q, cD as QUICK_FILL_ALLOWED_FIELDS, cE as groupFixedTableRows, cF as processQuickFillRows, cG as getIsGroupEmpty } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-DZRtpBe8.js";
3
3
  import { cloneDeep, isEmpty, has, pickBy, isNil, mergeWith, omit, last, pick, merge } from "lodash-es";
4
4
  import dayjs from "dayjs";
5
- import { u as useNamespace } from "./use-namespace-BxkK4ofX.js";
5
+ import { a as useNamespace, I as Icon } from "./AntdIcon-DCIaV352.js";
6
6
  import { Modal, message } from "ant-design-vue";
7
- import { u as useFormModel } from "./mb-render-jAsNtPqY.js";
7
+ import { u as useFormModel } from "./mb-render-DybPk-KF.js";
8
8
  var MaterialConsumptionPatternEnum = /* @__PURE__ */ ((MaterialConsumptionPatternEnum2) => {
9
9
  MaterialConsumptionPatternEnum2["RECORD"] = "record";
10
10
  MaterialConsumptionPatternEnum2["BOM"] = "bom";
@@ -942,6 +942,8 @@ function convertV1Runtime(runtime) {
942
942
  return { schemaVersion: 1, formConfig, sheets: [sheet] };
943
943
  }
944
944
  const MULTI_SHEET_SCHEMA_VERSION = 2;
945
+ const MAX_RUNTIME_SHEETS = 100;
946
+ const MAX_RUNTIME_SHEET_TITLE_LENGTH = 255;
945
947
  function assertObject(value, message2) {
946
948
  if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error(message2);
947
949
  }
@@ -1007,7 +1009,9 @@ function normalizeRuntime(runtime) {
1007
1009
  if (!Array.isArray(runtime.sheets) || runtime.sheets.length === 0) {
1008
1010
  throw new Error("多 Sheet 运行时至少需要一个工作表");
1009
1011
  }
1010
- if (runtime.sheets.length > 10) throw new Error("每份表单最多支持 10 个工作表");
1012
+ if (runtime.sheets.length > MAX_RUNTIME_SHEETS) {
1013
+ throw new Error(`每份表单最多支持 ${MAX_RUNTIME_SHEETS} 个工作表`);
1014
+ }
1011
1015
  const formConfig = runtime.formConfig ?? {};
1012
1016
  assertObject(formConfig, "多 Sheet 运行时的 formConfig 格式无效");
1013
1017
  const ids = /* @__PURE__ */ new Set();
@@ -1018,7 +1022,9 @@ function normalizeRuntime(runtime) {
1018
1022
  const sheetId = String(rawSheet.sheetId ?? "").trim();
1019
1023
  const title = String(rawSheet.title ?? "").trim();
1020
1024
  if (!sheetId) throw new Error(`第 ${index + 1} 个工作表缺少 sheetId`);
1021
- if (!title || title.length > 20) throw new Error(`工作表名称必须为 1 到 20 个字符:${title}`);
1025
+ if (!title || title.length > MAX_RUNTIME_SHEET_TITLE_LENGTH) {
1026
+ throw new Error(`工作表名称必须为 1 到 ${MAX_RUNTIME_SHEET_TITLE_LENGTH} 个字符:${title}`);
1027
+ }
1022
1028
  if (ids.has(sheetId)) throw new Error(`重复的 sheetId:${sheetId}`);
1023
1029
  if (titles.has(title)) throw new Error(`重复的工作表名称:${title}`);
1024
1030
  ids.add(sheetId);
@@ -1149,6 +1155,7 @@ function createRuntimeInstanceContext(options) {
1149
1155
  fixedTableLenMap: {},
1150
1156
  fixedTableFieldMap: {}
1151
1157
  },
1158
+ duplicateFieldWarnings: [],
1152
1159
  services: {},
1153
1160
  activeSheetId,
1154
1161
  sheets
@@ -1588,6 +1595,14 @@ class RuntimeFormStateStore {
1588
1595
  const paths = Object.keys(values);
1589
1596
  this.mutate(paths, source, () => this.assignValues(this.reactiveState, values));
1590
1597
  }
1598
+ /**
1599
+ * 保存后只回填后端身份元数据,不能用仅含 id_/front_row_key_ 的数组覆盖当前业务行。
1600
+ * 二维内置复合键可通过原始子行键匹配保存前的本地行。
1601
+ */
1602
+ patchSavedMetadata(values) {
1603
+ const paths = Object.keys(values);
1604
+ this.mutate(paths, "restore", () => this.mergeSavedMetadata(this.reactiveState, values));
1605
+ }
1591
1606
  /**
1592
1607
  * 用新对象整体替换实例数据,删除旧对象中多余的顶层字段。
1593
1608
  * 草稿/接口恢复后会清空用户修改标记;restore 来源同时恢复为非脏状态。
@@ -1699,6 +1714,46 @@ class RuntimeFormStateStore {
1699
1714
  target[key] = incoming;
1700
1715
  });
1701
1716
  }
1717
+ mergeSavedMetadata(target, incoming, path = "") {
1718
+ if (Array.isArray(incoming)) {
1719
+ const isTableRows = this.subtableFields.has(path) || path.endsWith("._2DTABLE_");
1720
+ if (!isTableRows || !Array.isArray(target)) return incoming;
1721
+ incoming.forEach((savedRow) => {
1722
+ const rowKey = savedRow?.[FRONT_ROW_KEY];
1723
+ const savedId = savedRow?.id_;
1724
+ let currentRow = target.find((row) => {
1725
+ if (!row || typeof row !== "object") return false;
1726
+ if (rowKey != null && isTableRowKeyMatch(rowKey, row[FRONT_ROW_KEY])) return true;
1727
+ return savedId != null && row.id_ != null && String(row.id_) === String(savedId);
1728
+ });
1729
+ let matchedByGroup = false;
1730
+ if (!currentRow && Array.isArray(savedRow?._2DTABLE_) && savedRow.group_ != null && String(savedRow.group_).trim() !== "") {
1731
+ const matchingGroups = target.filter(
1732
+ (row) => Array.isArray(row?._2DTABLE_) && row.group_ != null && String(row.group_) === String(savedRow.group_)
1733
+ );
1734
+ if (matchingGroups.length === 1) {
1735
+ currentRow = matchingGroups[0];
1736
+ matchedByGroup = true;
1737
+ }
1738
+ }
1739
+ if (currentRow) {
1740
+ this.mergeSavedMetadata(
1741
+ currentRow,
1742
+ matchedByGroup ? { ...savedRow, [FRONT_ROW_KEY]: currentRow[FRONT_ROW_KEY] } : savedRow,
1743
+ path
1744
+ );
1745
+ }
1746
+ });
1747
+ return target;
1748
+ }
1749
+ if (!incoming || typeof incoming !== "object") return incoming;
1750
+ if (!target || typeof target !== "object" || Array.isArray(target)) return incoming;
1751
+ Object.entries(incoming).forEach(([key, value]) => {
1752
+ const childPath = path ? `${path}.${key}` : key;
1753
+ target[key] = this.mergeSavedMetadata(target[key], value, childPath);
1754
+ });
1755
+ return target;
1756
+ }
1702
1757
  /**
1703
1758
  * 所有写入口共用的表格身份边界:整表恢复/回填、数组插入、二维子行替换均在通知前补齐。
1704
1759
  * 只处理业务索引声明的表格及 _2DTABLE_,不把多选值、上传文件等数组当作表格。
@@ -1783,6 +1838,7 @@ class RuntimeAsyncTaskCoordinator {
1783
1838
  fieldIdentity: options.fieldIdentity,
1784
1839
  sheetId: options.sheetId,
1785
1840
  required: options.required !== false,
1841
+ blockOnFailure: options.blockOnFailure !== false,
1786
1842
  status: "pending",
1787
1843
  sequence,
1788
1844
  promise: task,
@@ -1826,7 +1882,7 @@ class RuntimeAsyncTaskCoordinator {
1826
1882
  * 等待全部 required 任务达到稳定状态。
1827
1883
  *
1828
1884
  * 一轮任务完成后的字段回填可能触发新的公式或远程任务,因此这里循环读取任务表,直到
1829
- * 没有新的 pending required 任务。稳定后统一检查失败项,使提交事务得到明确失败原因。
1885
+ * 没有新的 pending required 任务。稳定后只检查需要阻断提交的失败项。
1830
1886
  */
1831
1887
  async waitForRequired(keyPrefix) {
1832
1888
  const matches = (task) => task.required && (!keyPrefix || task.key.startsWith(keyPrefix));
@@ -1838,7 +1894,7 @@ class RuntimeAsyncTaskCoordinator {
1838
1894
  await Promise.allSettled(pending.map((task) => task.promise));
1839
1895
  }
1840
1896
  const failed = Array.from(this.tasks.values()).filter(
1841
- (task) => matches(task) && task.status === "rejected"
1897
+ (task) => matches(task) && task.blockOnFailure && task.status === "rejected"
1842
1898
  );
1843
1899
  if (failed.length) {
1844
1900
  const details = failed.map((task) => {
@@ -3184,11 +3240,12 @@ class RuntimeValidationService {
3184
3240
  this.pendingLive = this.pendingLive === "blur" ? "blur" : trigger;
3185
3241
  if (this.liveTimer) clearTimeout(this.liveTimer);
3186
3242
  this.liveTimer = void 0;
3187
- if (immediate) void this.flushLive().catch((error) => console.error("字段校验失败", error));
3243
+ if (immediate)
3244
+ void this.flushLive().catch((error) => this.logBackgroundError("字段校验失败", error));
3188
3245
  else
3189
3246
  this.liveTimer = setTimeout(() => {
3190
3247
  this.liveTimer = void 0;
3191
- void this.flushLive().catch((error) => console.error("字段校验失败", error));
3248
+ void this.flushLive().catch((error) => this.logBackgroundError("字段校验失败", error));
3192
3249
  }, 300);
3193
3250
  }
3194
3251
  async flushLive() {
@@ -3210,11 +3267,17 @@ class RuntimeValidationService {
3210
3267
  this.displayTimer = void 0;
3211
3268
  const run = () => {
3212
3269
  this.displayTimer = void 0;
3213
- void this.validate("display").catch((error) => console.error("字段展示校验失败", error));
3270
+ void this.validate("display").catch(
3271
+ (error) => this.logBackgroundError("字段展示校验失败", error)
3272
+ );
3214
3273
  };
3215
3274
  if (immediate) run();
3216
3275
  else this.displayTimer = setTimeout(run, 320);
3217
3276
  }
3277
+ logBackgroundError(label, error) {
3278
+ if (error instanceof Error && error.message.startsWith("以下异步任务执行失败:")) return;
3279
+ console.error(label, error);
3280
+ }
3218
3281
  pruneComments() {
3219
3282
  if (!this.binding || this.disposed) return;
3220
3283
  this.binding.applyComments(
@@ -3812,8 +3875,10 @@ const SNAPSHOT_SKIP = /* @__PURE__ */ new Set([
3812
3875
  ]);
3813
3876
  function rowIdentityKeys(row) {
3814
3877
  if (!row) return [];
3878
+ const frontRowKey = row[FRONT_ROW_KEY] != null && String(row[FRONT_ROW_KEY]).trim() !== "" ? String(row[FRONT_ROW_KEY]) : void 0;
3815
3879
  return [
3816
- row[FRONT_ROW_KEY] != null && String(row[FRONT_ROW_KEY]).trim() !== "" ? String(row[FRONT_ROW_KEY]) : void 0,
3880
+ frontRowKey,
3881
+ decodeTableCellRowKey(frontRowKey)?.cellRowKey,
3817
3882
  row.id_ != null && row.id_ !== "" ? String(row.id_) : void 0
3818
3883
  ].filter(Boolean);
3819
3884
  }
@@ -4547,7 +4612,16 @@ class BomEntriesValidator {
4547
4612
  memberIndexes.push(idx);
4548
4613
  if (byLot && !row.material_no_) emptyLotIndexes.push(idx);
4549
4614
  });
4550
- const needInsert = !this.groupExistsInTable(arr, target);
4615
+ const targetExists = this.groupExistsInTable(arr, target);
4616
+ if (!targetExists) {
4617
+ const index = arr.findIndex((row2) => !row2.deleted_);
4618
+ const row = arr[index];
4619
+ const canReuse = row && !row.product_id_ && !row.bom_entry_id_ && !row.is_confirmed_ && arr.every((item, idx) => item.deleted_ || idx === index);
4620
+ if (canReuse) {
4621
+ emptyProductIndexes.push(index);
4622
+ }
4623
+ }
4624
+ const needInsert = !targetExists && emptyProductIndexes.length === 0;
4551
4625
  const last2 = memberIndexes[memberIndexes.length - 1];
4552
4626
  let groupInsertIndex = -1;
4553
4627
  if (needInsert) {
@@ -7908,6 +7982,38 @@ function _sfc_render(_ctx, _cache) {
7908
7982
  }
7909
7983
  const DocumentLoading = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render], ["__scopeId", "data-v-d8b64b7b"]]);
7910
7984
  const _imports_0 = "data:image/png;base64,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";
7985
+ var ExclamationCircleOutlined$1 = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z" } }, { "tag": "path", "attrs": { "d": "M464 688a48 48 0 1096 0 48 48 0 10-96 0zm24-112h48c4.4 0 8-3.6 8-8V296c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8z" } }] }, "name": "exclamation-circle", "theme": "outlined" };
7986
+ function _objectSpread(target) {
7987
+ for (var i = 1; i < arguments.length; i++) {
7988
+ var source = arguments[i] != null ? Object(arguments[i]) : {};
7989
+ var ownKeys = Object.keys(source);
7990
+ if (typeof Object.getOwnPropertySymbols === "function") {
7991
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
7992
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
7993
+ }));
7994
+ }
7995
+ ownKeys.forEach(function(key) {
7996
+ _defineProperty(target, key, source[key]);
7997
+ });
7998
+ }
7999
+ return target;
8000
+ }
8001
+ function _defineProperty(obj, key, value) {
8002
+ if (key in obj) {
8003
+ Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true });
8004
+ } else {
8005
+ obj[key] = value;
8006
+ }
8007
+ return obj;
8008
+ }
8009
+ var ExclamationCircleOutlined = function ExclamationCircleOutlined2(props, context) {
8010
+ var p = _objectSpread({}, props, context.attrs);
8011
+ return createVNode(Icon, _objectSpread({}, p, {
8012
+ "icon": ExclamationCircleOutlined$1
8013
+ }), null);
8014
+ };
8015
+ ExclamationCircleOutlined.displayName = "ExclamationCircleOutlined";
8016
+ ExclamationCircleOutlined.inheritAttrs = false;
7911
8017
  const _hoisted_1$3 = { class: "nocode-document-layout-wrapper" };
7912
8018
  const _hoisted_2 = {
7913
8019
  key: 0,
@@ -7918,20 +8024,30 @@ const _hoisted_3 = {
7918
8024
  class: "nocode-common-loading-warp",
7919
8025
  role: "alert"
7920
8026
  };
7921
- const _hoisted_4 = { class: "px24px text-center color-[#ff4d4f]" };
8027
+ const _hoisted_4 = { class: "nocode-document-error" };
7922
8028
  const _hoisted_5 = {
8029
+ class: "nocode-document-error__icon",
8030
+ "aria-hidden": "true"
8031
+ };
8032
+ const _hoisted_6 = { key: 0 };
8033
+ const _hoisted_7 = { key: 1 };
8034
+ const _hoisted_8 = { class: "nocode-document-error__details" };
8035
+ const _hoisted_9 = { key: 0 };
8036
+ const _hoisted_10 = { key: 1 };
8037
+ const _hoisted_11 = {
7923
8038
  key: 2,
7924
8039
  class: "nocode-document-layout-container"
7925
8040
  };
7926
- const _hoisted_6 = {
8041
+ const _hoisted_12 = {
7927
8042
  key: 3,
7928
8043
  class: "nocode-common-loading-warp"
7929
8044
  };
7930
- const _hoisted_7 = { class: "w200px text-center color-[#666]" };
7931
- const _hoisted_8 = {
8045
+ const _hoisted_13 = { class: "w200px text-center color-[#666]" };
8046
+ const _hoisted_14 = {
7932
8047
  key: 4,
7933
8048
  class: "nocode-document-layout-footer"
7934
8049
  };
8050
+ const asyncTaskErrorPrefix = "以下异步任务执行失败:";
7935
8051
  const _sfc_main$5 = /* @__PURE__ */ defineComponent({
7936
8052
  __name: "document-layout",
7937
8053
  props: {
@@ -7940,16 +8056,41 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
7940
8056
  error: {}
7941
8057
  },
7942
8058
  setup(__props) {
8059
+ const props = __props;
8060
+ const isAsyncTaskError = computed(() => props.error?.startsWith(asyncTaskErrorPrefix) ?? false);
8061
+ const failedFields = computed(
8062
+ () => isAsyncTaskError.value ? props.error.slice(asyncTaskErrorPrefix.length).split("、").filter(Boolean) : []
8063
+ );
8064
+ const reloadPage = () => window.location.reload();
7943
8065
  return (_ctx, _cache) => {
7944
8066
  return openBlock(), createElementBlock("div", _hoisted_1$3, [
7945
8067
  __props.loading ? (openBlock(), createElementBlock("div", _hoisted_2, [
7946
8068
  createVNode(DocumentLoading)
7947
8069
  ])) : __props.error ? (openBlock(), createElementBlock("div", _hoisted_3, [
7948
- createElementVNode("div", _hoisted_4, toDisplayString(__props.error), 1)
7949
- ])) : __props.hasData ? (openBlock(), createElementBlock("div", _hoisted_5, [
8070
+ createElementVNode("div", _hoisted_4, [
8071
+ createElementVNode("div", _hoisted_5, [
8072
+ createVNode(unref(ExclamationCircleOutlined))
8073
+ ]),
8074
+ createElementVNode("h2", null, toDisplayString(isAsyncTaskError.value ? "部分字段加载失败" : "表单暂时无法打开"), 1),
8075
+ isAsyncTaskError.value ? (openBlock(), createElementBlock("p", _hoisted_6, " 有 " + toDisplayString(failedFields.value.length) + " 个字段未能完成加载。请重试;若问题持续,请联系管理员。 ", 1)) : (openBlock(), createElementBlock("p", _hoisted_7, "加载时遇到问题,请刷新页面重试。若问题持续,请联系管理员。")),
8076
+ createElementVNode("button", {
8077
+ type: "button",
8078
+ class: "nocode-document-error__retry",
8079
+ onClick: reloadPage
8080
+ }, " 重新加载 "),
8081
+ createElementVNode("details", _hoisted_8, [
8082
+ createElementVNode("summary", null, toDisplayString(isAsyncTaskError.value ? `查看失败字段(${failedFields.value.length})` : "查看错误详情"), 1),
8083
+ isAsyncTaskError.value ? (openBlock(), createElementBlock("ul", _hoisted_9, [
8084
+ (openBlock(true), createElementBlock(Fragment, null, renderList(failedFields.value, (field) => {
8085
+ return openBlock(), createElementBlock("li", { key: field }, toDisplayString(field), 1);
8086
+ }), 128))
8087
+ ])) : (openBlock(), createElementBlock("p", _hoisted_10, toDisplayString(__props.error), 1))
8088
+ ])
8089
+ ])
8090
+ ])) : __props.hasData ? (openBlock(), createElementBlock("div", _hoisted_11, [
7950
8091
  renderSlot(_ctx.$slots, "default")
7951
- ])) : (openBlock(), createElementBlock("div", _hoisted_6, [
7952
- createElementVNode("div", _hoisted_7, [
8092
+ ])) : (openBlock(), createElementBlock("div", _hoisted_12, [
8093
+ createElementVNode("div", _hoisted_13, [
7953
8094
  _cache[0] || (_cache[0] = createElementVNode("img", {
7954
8095
  class: "w100% h100%",
7955
8096
  src: _imports_0,
@@ -7958,7 +8099,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
7958
8099
  createElementVNode("span", null, toDisplayString(_ctx.$t("sys.noData")), 1)
7959
8100
  ])
7960
8101
  ])),
7961
- !__props.loading && !__props.error && __props.hasData && _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_8, [
8102
+ !__props.loading && !__props.error && __props.hasData && _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_14, [
7962
8103
  renderSlot(_ctx.$slots, "footer")
7963
8104
  ])) : createCommentVNode("", true)
7964
8105
  ]);
@@ -8622,7 +8763,7 @@ const MaterialConsumeTable = /* @__PURE__ */ defineComponent({
8622
8763
  const {
8623
8764
  showDisplayStatus,
8624
8765
  dataRelationShip
8625
- } = useWidgetStaticAttrs(props);
8766
+ } = useWidgetStaticAttrs(props.widget);
8626
8767
  const sheetId = () => fields.value?.findWidgetById(props.widget.id)?.sheetId;
8627
8768
  const formModelController = useFormModel().injectController();
8628
8769
  const tableController = props.tableController;
@@ -10155,109 +10296,111 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
10155
10296
  });
10156
10297
  const DynamicTableAction = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-53d7e66c"]]);
10157
10298
  export {
10158
- closeValidatorPopovers as $,
10159
- useFieldPresentation as A,
10299
+ RuntimeSheetService as $,
10300
+ useStyles as A,
10160
10301
  BorderTD as B,
10161
- useRuntimeEditorFlusher as C,
10302
+ useDependency as C,
10162
10303
  DEFAULT_BOOLEAN_FIELD_WIDTH as D,
10163
10304
  EMPTY_PRODUCT_VERSION_ID as E,
10164
- createRuntimeInstanceContext as F,
10165
- RuntimeInstanceRegistry as G,
10166
- RequiredQtyCalcRule as H,
10167
- registerFormulaFuncs as I,
10168
- DocumentPaper as J,
10169
- DynamicTableAction as K,
10170
- getRuntimeDataFieldId as L,
10171
- MULTI_SHEET_SCHEMA_VERSION as M,
10305
+ useFieldPresentation as F,
10306
+ useRuntimeEditorFlusher as G,
10307
+ createRuntimeInstanceContext as H,
10308
+ RuntimeInstanceRegistry as I,
10309
+ RequiredQtyCalcRule as J,
10310
+ registerFormulaFuncs as K,
10311
+ DocumentPaper as L,
10312
+ MAX_RUNTIME_SHEETS as M,
10172
10313
  NCB_PROVIDE as N,
10173
- buildRuntimeFieldPath as O,
10174
- resolveRuntimeFieldProps as P,
10175
- resolveRuntimeFieldState as Q,
10314
+ DynamicTableAction as O,
10315
+ getRuntimeDataFieldId as P,
10316
+ buildRuntimeFieldPath as Q,
10176
10317
  RuntimeFormStateStore as R,
10177
10318
  ScanParamType as S,
10178
- getRuntimeDependencyOutputKey as T,
10179
- isRowAddedInCurrentFormChange as U,
10180
- MaterialConsumeTableController as V,
10181
- setFormulaParamsConfig as W,
10182
- normalizeRuntime as X,
10183
- RuntimeSheetService as Y,
10184
- validateObjectBomQtyOnSubmit as Z,
10319
+ resolveRuntimeFieldProps as T,
10320
+ resolveRuntimeFieldState as U,
10321
+ getRuntimeDependencyOutputKey as V,
10322
+ isRowAddedInCurrentFormChange as W,
10323
+ MaterialConsumeTableController as X,
10324
+ setFormulaParamsConfig as Y,
10325
+ normalizeRuntime as Z,
10185
10326
  _sfc_main$5 as _,
10186
- normalizeHistoricalBusinessRow as a,
10187
- enrichFormChangeRowDetails as a0,
10188
- useMaterialBalance as a1,
10189
- collectFormChangeFieldLocations as a2,
10190
- nextFormChangeRowViewHistoryId as a3,
10191
- DeviceConnector as a4,
10192
- DocumentLoading as a5,
10193
- DynamicQuickFillModal as a6,
10194
- FixedQuickFillModal as a7,
10195
- FormTmplConfigController as a8,
10196
- LEGACY_RUNTIME_FORM_CONFIG_KEYS as a9,
10197
- resolveFormChangeRowUi as aA,
10198
- resolveRowFormChangeMark as aB,
10199
- setSelectMobileTdId as aC,
10200
- stripLegacyFormConfigFromPaper as aD,
10201
- SubTableActionMenuTypeEnum as aE,
10202
- getMenuByAction as aF,
10203
- SubTableActionEnum as aG,
10204
- resolveScanFillData as aH,
10205
- getInsertSubMenu as aI,
10206
- resolveScanAdjustType as aJ,
10207
- resolveScanQty as aK,
10208
- toDateOnly as aL,
10209
- getCopySubMenu as aM,
10210
- resolveScanParsedValue as aN,
10211
- isProductBatchEmptyRow as aO,
10212
- LEGACY_RUNTIME_SHEET_ID as aa,
10213
- LEGACY_RUNTIME_SHEET_TITLE as ab,
10214
- MCDataUtil as ac,
10215
- OCR_MODEL_PRECISION_ENUM_KEY as ad,
10216
- RuntimeAsyncTaskCoordinator as ae,
10217
- RuntimeDependencyService as af,
10218
- RuntimeFieldRegistry as ag,
10219
- RuntimeInstanceEventBus as ah,
10220
- RuntimePersistenceCoordinator as ai,
10221
- RuntimeValidationService as aj,
10222
- SubTableCore as ak,
10223
- buildFormChangeDisplayRows as al,
10224
- convertV1Runtime as am,
10225
- detailsHaveFormChangeRowOps as an,
10226
- extractFormChangeRowDetails as ao,
10227
- getFormChangeRowKey as ap,
10228
- getFormChangeRowOp as aq,
10229
- getSubTableQuickFillInfo as ar,
10230
- isAnnLocationSelected as as,
10231
- isBlank as at,
10232
- isFormChangeGhostRow as au,
10233
- normalizeHistoricalFieldConfig as av,
10234
- pickObjectFieldKeys as aw,
10235
- recordSubtableRowAdd as ax,
10236
- recordSubtableRowDelete as ay,
10237
- resolveAnnotationFieldLocation as az,
10238
- DeviceLinkTmplUtil as b,
10327
+ MAX_RUNTIME_SHEET_TITLE_LENGTH as a,
10328
+ validateObjectBomQtyOnSubmit as a0,
10329
+ closeValidatorPopovers as a1,
10330
+ enrichFormChangeRowDetails as a2,
10331
+ useMaterialBalance as a3,
10332
+ collectFormChangeFieldLocations as a4,
10333
+ nextFormChangeRowViewHistoryId as a5,
10334
+ DeviceConnector as a6,
10335
+ DocumentLoading as a7,
10336
+ DynamicQuickFillModal as a8,
10337
+ FixedQuickFillModal as a9,
10338
+ recordSubtableRowDelete as aA,
10339
+ resolveAnnotationFieldLocation as aB,
10340
+ resolveFormChangeRowUi as aC,
10341
+ resolveRowFormChangeMark as aD,
10342
+ setSelectMobileTdId as aE,
10343
+ stripLegacyFormConfigFromPaper as aF,
10344
+ SubTableActionMenuTypeEnum as aG,
10345
+ getMenuByAction as aH,
10346
+ SubTableActionEnum as aI,
10347
+ resolveScanFillData as aJ,
10348
+ getInsertSubMenu as aK,
10349
+ resolveScanAdjustType as aL,
10350
+ resolveScanQty as aM,
10351
+ toDateOnly as aN,
10352
+ getCopySubMenu as aO,
10353
+ resolveScanParsedValue as aP,
10354
+ isProductBatchEmptyRow as aQ,
10355
+ FormTmplConfigController as aa,
10356
+ LEGACY_RUNTIME_FORM_CONFIG_KEYS as ab,
10357
+ LEGACY_RUNTIME_SHEET_ID as ac,
10358
+ LEGACY_RUNTIME_SHEET_TITLE as ad,
10359
+ MCDataUtil as ae,
10360
+ OCR_MODEL_PRECISION_ENUM_KEY as af,
10361
+ RuntimeAsyncTaskCoordinator as ag,
10362
+ RuntimeDependencyService as ah,
10363
+ RuntimeFieldRegistry as ai,
10364
+ RuntimeInstanceEventBus as aj,
10365
+ RuntimePersistenceCoordinator as ak,
10366
+ RuntimeValidationService as al,
10367
+ SubTableCore as am,
10368
+ buildFormChangeDisplayRows as an,
10369
+ convertV1Runtime as ao,
10370
+ detailsHaveFormChangeRowOps as ap,
10371
+ extractFormChangeRowDetails as aq,
10372
+ getFormChangeRowKey as ar,
10373
+ getFormChangeRowOp as as,
10374
+ getSubTableQuickFillInfo as at,
10375
+ isAnnLocationSelected as au,
10376
+ isBlank as av,
10377
+ isFormChangeGhostRow as aw,
10378
+ normalizeHistoricalFieldConfig as ax,
10379
+ pickObjectFieldKeys as ay,
10380
+ recordSubtableRowAdd as az,
10381
+ MULTI_SHEET_SCHEMA_VERSION as b,
10239
10382
  createRuntimeDocumentV2 as c,
10240
- normalizeAIOcrTmpl as d,
10241
- useWidgetStaticAttrs as e,
10242
- useRuntimeInstanceServices as f,
10383
+ normalizeHistoricalBusinessRow as d,
10384
+ DeviceLinkTmplUtil as e,
10385
+ normalizeAIOcrTmpl as f,
10243
10386
  getBusinessFieldKey as g,
10244
- setSelectAnnotationId as h,
10245
- useRuntimeRowState as i,
10246
- getObjectBomMaterialLotQuery as j,
10247
- buildObjectLotExtraQuery as k,
10248
- MaterialConsumptionPatternEnum as l,
10249
- resolveObjectBomEntry as m,
10387
+ useWidgetStaticAttrs as h,
10388
+ useRuntimeInstanceServices as i,
10389
+ setSelectAnnotationId as j,
10390
+ useRuntimeRowState as k,
10391
+ getObjectBomMaterialLotQuery as l,
10392
+ buildObjectLotExtraQuery as m,
10250
10393
  normalizeFieldWidth as n,
10251
- runWithFillProduct as o,
10252
- useNocodeFormWidget as p,
10253
- applyConsumeObjectTraceChange as q,
10394
+ MaterialConsumptionPatternEnum as o,
10395
+ resolveObjectBomEntry as p,
10396
+ runWithFillProduct as q,
10254
10397
  resolveObjectFieldKeys as r,
10255
10398
  setSelectValidatorId as s,
10256
- getObjectBomProductQuery as t,
10399
+ useNocodeFormWidget as t,
10257
10400
  useFormTmplConfig as u,
10258
10401
  validateObjectBomForScan as v,
10259
- normalizeHistoricalAutofillRow as w,
10260
- parseRuntimeFieldPath as x,
10261
- useStyles as y,
10262
- useDependency as z
10402
+ applyConsumeObjectTraceChange as w,
10403
+ getObjectBomProductQuery as x,
10404
+ normalizeHistoricalAutofillRow as y,
10405
+ parseRuntimeFieldPath as z
10263
10406
  };