@gct-paas/excel 0.1.40-beta.12 → 0.1.40-beta.13

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 (94) hide show
  1. package/dist/{BaseComponent-gj20uBnJ.js → BaseComponent-BNYlBwRp.js} +2 -2
  2. package/dist/{VueVideoPlayer-BeylL5J6.js → VueVideoPlayer-CA8iKJQb.js} +2 -2
  3. package/dist/{align-editor-r0dHXFka.js → align-editor-BLoPPjyE.js} +1 -1
  4. package/dist/{barcode-design-CYvf_EAE.js → barcode-design-Dqvxi5NV.js} +2 -2
  5. package/dist/base/index.es.js +175 -174
  6. package/dist/{diagonal-design-oDhnFV7y.js → diagonal-design-DG-Dx4ts.js} +2 -2
  7. package/dist/{dynamic-table-action-DQwZUD0_.js → dynamic-table-action-Bank1QhA.js} +713 -133
  8. package/dist/{dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-8yB6zly8.js → dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-CMUJIaqF.js} +507 -1096
  9. package/dist/{edit.utils-CXmmCnxE-Cu6obgSA.js → edit.utils-CXmmCnxE-CjdKEddt.js} +1 -1
  10. package/dist/excel.css +127 -84
  11. package/dist/{exceljs.min-Cw2hDE6L.js → exceljs.min-UvFp3sV4.js} +2 -2
  12. package/dist/{font-editor-B_0EZdyd.js → font-editor-DnMEr3MH.js} +3 -3
  13. package/dist/{image-design-FDLY6DFg.js → image-design-CwtJAv3F.js} +2 -2
  14. package/dist/{index-C4ZaFHIk.js → index-3MWFMn8S.js} +3 -3
  15. package/dist/{index-D1QJAMGR.js → index-Aza4NNmK.js} +2 -2
  16. package/dist/{index-DEHsGK91.js → index-B5OUUXeo.js} +1 -1
  17. package/dist/{index-BdFPuj12.js → index-B9lsZxiJ.js} +1 -1
  18. package/dist/{index-BuAaPDLl.js → index-BBn6MJSx.js} +2 -2
  19. package/dist/{index-CRIhEnfm.js → index-BKQuT0fA.js} +1 -1
  20. package/dist/{index-CQTRWLPa.js → index-BPY-u_dg.js} +3 -2
  21. package/dist/{index-Go0PUrqy.js → index-BQYnbcBb.js} +1 -1
  22. package/dist/{index-CFVecFFb.js → index-BVs40sek.js} +2 -2
  23. package/dist/{index-DcjvPNF5.js → index-B_XnofhV.js} +2 -2
  24. package/dist/{index-BCsDTwbK.js → index-BeVxjuh9.js} +1 -1
  25. package/dist/{index-Z9jq6KeM.js → index-BggSZyva.js} +2 -2
  26. package/dist/{index-KxrgWfEL.js → index-BqKnOPo_.js} +1 -1
  27. package/dist/{index-B2bvlNJo.js → index-BtRVxr4g.js} +2 -2
  28. package/dist/{index-BZd3wYPr.js → index-C5Ldbkko.js} +2 -2
  29. package/dist/{index-D3xW5qOp.js → index-CGZ_QXnT.js} +2 -2
  30. package/dist/{index-73QPpTaL.js → index-CHKEoI0-.js} +3 -3
  31. package/dist/{index-C0TsnxJJ.js → index-CJiS8qwY.js} +2 -2
  32. package/dist/{index-Dyfxs8FQ.js → index-CKRFb60x.js} +2 -2
  33. package/dist/{index-CxcaWxbW.js → index-C_Yhjehy.js} +2 -2
  34. package/dist/{index-7u6Pmaax.js → index-CaT3CiHe.js} +1 -1
  35. package/dist/{index-CdKmjzHb.js → index-Cd_mJxU6.js} +3 -3
  36. package/dist/{index-DOmpZ2Vn.js → index-Cq-XyRHo.js} +2 -2
  37. package/dist/{index-DGODLCja.js → index-CszU9umD.js} +1 -1
  38. package/dist/{index-DgLLlaiF.js → index-CwADS2FU.js} +1 -1
  39. package/dist/{index-CiCgngBb.js → index-D29NlAJu.js} +2 -2
  40. package/dist/{index-BtTM4eCk.js → index-D5aotGHm.js} +2 -2
  41. package/dist/{index-ZJQMS_Ik.js → index-DFSzmsEj.js} +2 -2
  42. package/dist/{index-xJJRBQFw.js → index-DLjQtnue.js} +1745 -1644
  43. package/dist/{index-C1EtpaAY.js → index-D_SKDlr_.js} +2 -2
  44. package/dist/{index-4cLi3g2p.js → index-DyW4nBh7.js} +2 -2
  45. package/dist/{index-xeRTb7EG.js → index-VbBHe0-r.js} +3 -3
  46. package/dist/{index-Bh8Vsmje.js → index-XT4AMdYd.js} +4 -4
  47. package/dist/{index-Cg1LuaLW.js → index-bu7pivuw.js} +2 -2
  48. package/dist/{index-DJiuJgNx.js → index-d8vCiBu7.js} +1 -1
  49. package/dist/index.es.js +2 -2
  50. package/dist/{mb-render-_IUbyYCY.js → mb-render-CAIFQRQe.js} +1 -1
  51. package/dist/{online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-CnQiVFDN.js → online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-Mtk2wCxy.js} +1 -1
  52. package/dist/{pagination-design-BpXq_uV5.js → pagination-design-BEykgAvG.js} +2 -2
  53. package/dist/paper-widget-design-ooxHgZry.js +4 -0
  54. package/dist/{print-runtime-instance-MOb76qZn.js → print-runtime-instance-4ZDfLM5V.js} +1 -1
  55. package/dist/{print-snapshot-renderer-oKcwQUgc.js → print-snapshot-renderer-zOa_XHc0.js} +3 -3
  56. package/dist/{qrcode-design-CkkXDXcD.js → qrcode-design-CvYHvmMW.js} +1 -1
  57. package/dist/{revo-grid.entry-BZADj2ve.js → revo-grid.entry-CAz8pEMB.js} +1 -1
  58. package/dist/{revogr-attribution_7.entry-DbQASE7d.js → revogr-attribution_7.entry-RBj_kk6o.js} +3 -3
  59. package/dist/{revogr-clipboard_3.entry-BUDhUelS.js → revogr-clipboard_3.entry-B_WeVhDK.js} +2 -2
  60. package/dist/{revogr-data_4.entry-0V57Lz9p.js → revogr-data_4.entry-VaYdG5rT.js} +2 -2
  61. package/dist/{revogr-filter-panel.entry-BJEYteeW.js → revogr-filter-panel.entry-BCwmMUrv.js} +1 -1
  62. package/dist/seal-design-CG41_ii2.js +4 -0
  63. package/dist/{serialnumber-design-BbjW4gnZ.js → serialnumber-design-DHQVyTpR.js} +1 -1
  64. package/dist/shared/index.es.js +22 -22
  65. package/dist/{single-field-drop-DBjHYyMO.js → single-field-drop-D9h6cfEW.js} +2 -2
  66. package/dist/{size-editor-CcYZKUn5.js → size-editor-CYH_vGEJ.js} +1 -1
  67. package/dist/src/nocode-base/src/runtime/multi-sheet-runtime.d.ts +3 -1
  68. package/dist/src/nocode-base/src/runtime/runtime-context.d.ts +4 -0
  69. package/dist/src/online-form/src/views/__cell_widgets__/common/quick-search-editor/quick-search.util.d.ts +8 -0
  70. package/dist/src/online-form/src/views/designer/hooks/useAllSpreadSheets.d.ts +11 -0
  71. package/dist/src/online-form/src/views/designer/modules/base/designer-wrapper.vue.d.ts +1 -0
  72. package/dist/src/online-form/src/views/designer/modules/duplicate-field-notice.vue.d.ts +2 -0
  73. package/dist/src/online-form/src/views/designer/types/sheets.d.ts +2 -0
  74. package/dist/{sub-table-factory-CUn9Ys8U.js → sub-table-factory-B0zWW-QG.js} +2 -2
  75. package/dist/{text-design-CJ-LzwEP.js → text-design-DOQAiCNS.js} +2 -2
  76. package/dist/{throttle-Cpk1LoGk-BVommE6v.js → throttle-Cpk1LoGk-CMJVKhfH.js} +1 -1
  77. package/dist/{timediff-design-DLlIUaqv.js → timediff-design-BpVtGq2d.js} +1 -1
  78. package/dist/{trace-like-wrapper-3MK6tjpN.js → trace-like-wrapper-CfQ-z7OG.js} +2 -2
  79. package/dist/{value-editor.vue_vue_type_style_index_0_lang-CmqBS9Ol.js → value-editor.vue_vue_type_style_index_0_lang-dI4Svbwa.js} +2 -2
  80. package/dist/web-render/index.es.js +3 -3
  81. package/dist/{widget-barcode-BzrOK6u9.js → widget-barcode-Q35uB5iK.js} +4 -4
  82. package/dist/{widget-diagonal-DXnNY3TR.js → widget-diagonal-DqhdnkvW.js} +3 -3
  83. package/dist/{widget-image-qlZU5zfL.js → widget-image-BXD0sEE3.js} +5 -5
  84. package/dist/{widget-line-BkFVTPZE.js → widget-line-DH-692Ln.js} +2 -2
  85. package/dist/{widget-pagination-BI7Vtnio.js → widget-pagination-fIAO2QPA.js} +5 -5
  86. package/dist/{widget-power-CQaD6Z_a.js → widget-power-DWVhbXTd.js} +3 -3
  87. package/dist/{widget-qrcode-DNpnyMCx.js → widget-qrcode-Bo1KSkKG.js} +3 -3
  88. package/dist/{widget-rangelimit-DE7-MYZD.js → widget-rangelimit-BFKtZq_w.js} +3 -3
  89. package/dist/{widget-serialnumber-CyMnA-nP.js → widget-serialnumber-DZqKmj9h.js} +1 -1
  90. package/dist/{widget-text-BpZ7YJtP.js → widget-text-CY_4aox8.js} +5 -5
  91. package/dist/{widget-timediff-DSEwFrr9.js → widget-timediff-CPMbymXT.js} +2 -2
  92. package/package.json +2 -2
  93. package/dist/paper-widget-design-CSOyFSja.js +0 -4
  94. package/dist/seal-design-BMrCPheX.js +0 -4
@@ -1,11 +1,11 @@
1
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 { aj as CellWidgetViewState, F as FIELD_TYPE, bm as RenderModeEnum, Z as FormTypeEnum, bG as BpmnNodeTypeEnum, cz as getFieldPlaceholder, bY as MobileFillTypeEnum, C as ComponentTypeEnum, a0 as PlatformEnum, cA as isReferenceOptionActive, p as api, bw as uuid2, c6 as calcUtils, bk as findRuntimeTableRow, ca as ensureTableRowKeys, c3 as bindRuntimeTableColumns, bj as getRowId, cB as FRONT_ROW_KEY, cp as isTableRowKeyMatch, by as isAttachFieldActive, cC as filterRulesByTrigger, cD as isEmptyValue$1, c7 as decodeTableCellRowKey, c9 as ensureFrontRowKey, b2 as getParseRuleInfo, aH as transformUtils, aZ as materialCheck, a_ as getLotLockedReason, a$ as validateReinspectionDate, bp as FormulaRuleFieldKeyEnum, h as SubTableType, b3 as getParseRuleValue, cE as buildError, I as CreateType, bn as findRuntimeParentRow, aK as Dependency_ENUM, aJ as ASSIGNMENTSTRATEGY_ENUM, bL as commonUtils, aO as DeviceLink, a9 as _export_sfc, cj as getRenderedRuntimeTableCell, A as CellType, ct as relocateDeletedRowsToEnd, cF as resetTableRowIdentity, K as useModal, cG as q, cH as QUICK_FILL_ALLOWED_FIELDS, cI as groupFixedTableRows, cJ as processQuickFillRows, cK as getIsGroupEmpty } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-8yB6zly8.js";
3
- import { cloneDeep, isEmpty, has, pickBy, isNil, mergeWith, omit, last, pick, merge } from "lodash-es";
2
+ import { ag as CellWidgetViewState, F as FIELD_TYPE, bd as RenderModeEnum, Y as FormTypeEnum, bt as BpmnNodeTypeEnum, ck as getFieldPlaceholder, bK as MobileFillTypeEnum, C as ComponentTypeEnum, bc as findRuntimeTableRow, aU as renderUtils, $ as PlatformEnum, p as api, bm as uuid2, bU as calcUtils, bY as ensureTableRowKeys, bR as bindRuntimeTableColumns, bb as getRowId, cl as FRONT_ROW_KEY, cb as isTableRowKeyMatch, av as RangeCompareOp, au as RangeValidateMode, bV as decodeTableCellRowKey, bX as ensureFrontRowKey, a$ as getParseRuleInfo, aE as transformUtils, aW as materialCheck, aX as getLotLockedReason, aY as validateReinspectionDate, bg as FormulaRuleFieldKeyEnum, h as SubTableType, b0 as getParseRuleValue, I as CreateType, be as findRuntimeParentRow, aH as Dependency_ENUM, aG as ASSIGNMENTSTRATEGY_ENUM, bx as commonUtils, aL as DeviceLink, a8 as _export_sfc, c5 as getRenderedRuntimeTableCell, A as CellType, cm as resetTableRowIdentity, K as useModal, cn as q, co as QUICK_FILL_ALLOWED_FIELDS, cp as groupFixedTableRows, cq as processQuickFillRows, cr as getIsGroupEmpty } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-CMUJIaqF.js";
4
3
  import dayjs from "dayjs";
4
+ import { cloneDeep, isEmpty, has, isNil, pickBy, mergeWith, omit, last, pick, merge } from "lodash-es";
5
5
  import { a as useNamespace, I as Icon } from "./AntdIcon-DCIaV352.js";
6
6
  import "@gct-paas/form-base";
7
7
  import { Modal, message } from "ant-design-vue";
8
- import { u as useFormModel } from "./mb-render-_IUbyYCY.js";
8
+ import { u as useFormModel } from "./mb-render-CAIFQRQe.js";
9
9
  var MaterialConsumptionPatternEnum = /* @__PURE__ */ ((MaterialConsumptionPatternEnum2) => {
10
10
  MaterialConsumptionPatternEnum2["RECORD"] = "record";
11
11
  MaterialConsumptionPatternEnum2["BOM"] = "bom";
@@ -772,6 +772,49 @@ function getSubTableQuickFillInfo(subTableFieldId, mobileTdIdGroups) {
772
772
  if (!subTableFieldId) return;
773
773
  return assignWidgetInfo(MobileFillTypeEnum.SUB_TABLE, { rowSubFieldKey: subTableFieldId });
774
774
  }
775
+ function getCurrentFormData(_rule, options) {
776
+ if (!_rule._subtableFieldId) return options?.formData;
777
+ return findRuntimeTableRow(options?.formData?.[_rule._subtableFieldId], _rule._rowKey);
778
+ }
779
+ function isSameOptionValue(current, expected) {
780
+ if (typeof expected === "boolean") {
781
+ return renderUtils.getBoolValue(current) === expected;
782
+ }
783
+ if (current === void 0 || current === null || current === "") {
784
+ return false;
785
+ }
786
+ return String(current) === String(expected);
787
+ }
788
+ function isAttachFieldActive(attach, formData) {
789
+ if (attach?.parent && !isAttachFieldActive(attach.parent, formData)) return false;
790
+ if (!attach?.belongFieldId || isNil(attach.optionValue)) {
791
+ return true;
792
+ }
793
+ const row = attach.subtableFieldId ? findRuntimeTableRow(formData?.[attach.subtableFieldId], attach.rowKey) : formData;
794
+ if (attach.subtableFieldId && (!attach.rowKey || !row || row === formData)) {
795
+ return false;
796
+ }
797
+ const raw = row?.[attach.belongFieldId];
798
+ if (attach.multiple) {
799
+ const current = renderUtils.getValue(raw, true);
800
+ if (!Array.isArray(current)) return false;
801
+ return current.some((v) => isSameOptionValue(v, attach.optionValue));
802
+ }
803
+ return isSameOptionValue(raw, attach.optionValue);
804
+ }
805
+ function isReferenceOptionActive(referenceInfo, rowFormData) {
806
+ if (!referenceInfo?.belongFieldId || isNil(referenceInfo.optionValue)) {
807
+ return true;
808
+ }
809
+ return isAttachFieldActive(
810
+ {
811
+ belongFieldId: referenceInfo.belongFieldId,
812
+ optionValue: referenceInfo.optionValue,
813
+ multiple: referenceInfo.multiple
814
+ },
815
+ rowFormData
816
+ );
817
+ }
775
818
  function fieldChromeStyles(state) {
776
819
  const required4 = state === "required";
777
820
  const disabled = state === "disabled";
@@ -1056,7 +1099,7 @@ function normalizeSheetMetadata(sheet) {
1056
1099
  };
1057
1100
  return { ...sheet, paper, nodes, dataCenter: { [ComponentTypeEnum.PAPER]: paper, ...nodes } };
1058
1101
  }
1059
- function normalizeRuntime(runtime) {
1102
+ function normalizeRuntime(runtime, formType) {
1060
1103
  if (typeof runtime === "string") {
1061
1104
  if (!runtime.trim()) throw new Error("运行时数据不能为空");
1062
1105
  try {
@@ -1067,7 +1110,16 @@ function normalizeRuntime(runtime) {
1067
1110
  }
1068
1111
  assertObject(runtime, "运行时数据格式无效");
1069
1112
  if (runtime.schemaVersion == null || runtime.schemaVersion === 1) {
1070
- const normalized = convertV1Runtime(runtime);
1113
+ const legacyRuntime = formType === FormTypeEnum.FILE && runtime[ComponentTypeEnum.PAPER] == null ? {
1114
+ ...runtime,
1115
+ [ComponentTypeEnum.PAPER]: {
1116
+ id: ComponentTypeEnum.PAPER,
1117
+ component: ComponentTypeEnum.PAPER,
1118
+ props: {},
1119
+ nextIds: []
1120
+ }
1121
+ } : runtime;
1122
+ const normalized = convertV1Runtime(legacyRuntime);
1071
1123
  normalized.sheets.forEach(validateSheetGraph);
1072
1124
  return { ...normalized, sheets: normalized.sheets.map(normalizeSheetMetadata) };
1073
1125
  }
@@ -1204,6 +1256,7 @@ function createRuntimeInstanceContext(options) {
1204
1256
  uniqueId: options.uniqueId,
1205
1257
  instanceId: options.instanceId,
1206
1258
  templateId: options.templateId,
1259
+ formType: options.formType,
1207
1260
  schemaVersion: options.runtime.schemaVersion,
1208
1261
  formConfig: options.runtime.formConfig,
1209
1262
  defaultData: options.defaultData,
@@ -1293,7 +1346,7 @@ class RuntimeSheetService {
1293
1346
  this.calculatingDepth += 1;
1294
1347
  let succeeded = false;
1295
1348
  try {
1296
- const pageData = RuntimeSheetService.calculatePages(sheet.dataCenter, this.formState.state);
1349
+ const pageData = this.context.formType === FormTypeEnum.FILE ? [] : RuntimeSheetService.calculatePages(sheet.dataCenter, this.formState.state);
1297
1350
  this.assertAlive();
1298
1351
  sheet.pageData = pageData;
1299
1352
  sheet.paginationError = void 0;
@@ -2147,7 +2200,7 @@ function format(template) {
2147
2200
  function isNativeStringType(type4) {
2148
2201
  return type4 === "string" || type4 === "url" || type4 === "hex" || type4 === "email" || type4 === "date" || type4 === "pattern";
2149
2202
  }
2150
- function isEmptyValue(value, type4) {
2203
+ function isEmptyValue$1(value, type4) {
2151
2204
  if (value === void 0 || value === null) {
2152
2205
  return true;
2153
2206
  }
@@ -2306,7 +2359,7 @@ function deepMerge(target, source) {
2306
2359
  return target;
2307
2360
  }
2308
2361
  var required$1 = function required(rule, value, source, errors, options, type4) {
2309
- if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type4 || rule.type))) {
2362
+ if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue$1(value, type4 || rule.type))) {
2310
2363
  errors.push(format(options.messages.required, rule.fullField));
2311
2364
  }
2312
2365
  };
@@ -2493,11 +2546,11 @@ var string = function string2(rule, value, callback, source, options) {
2493
2546
  var errors = [];
2494
2547
  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
2495
2548
  if (validate) {
2496
- if (isEmptyValue(value, "string") && !rule.required) {
2549
+ if (isEmptyValue$1(value, "string") && !rule.required) {
2497
2550
  return callback();
2498
2551
  }
2499
2552
  rules.required(rule, value, source, errors, options, "string");
2500
- if (!isEmptyValue(value, "string")) {
2553
+ if (!isEmptyValue$1(value, "string")) {
2501
2554
  rules.type(rule, value, source, errors, options);
2502
2555
  rules.range(rule, value, source, errors, options);
2503
2556
  rules.pattern(rule, value, source, errors, options);
@@ -2512,7 +2565,7 @@ var method2 = function method3(rule, value, callback, source, options) {
2512
2565
  var errors = [];
2513
2566
  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
2514
2567
  if (validate) {
2515
- if (isEmptyValue(value) && !rule.required) {
2568
+ if (isEmptyValue$1(value) && !rule.required) {
2516
2569
  return callback();
2517
2570
  }
2518
2571
  rules.required(rule, value, source, errors, options);
@@ -2529,7 +2582,7 @@ var number2 = function number3(rule, value, callback, source, options) {
2529
2582
  if (value === "") {
2530
2583
  value = void 0;
2531
2584
  }
2532
- if (isEmptyValue(value) && !rule.required) {
2585
+ if (isEmptyValue$1(value) && !rule.required) {
2533
2586
  return callback();
2534
2587
  }
2535
2588
  rules.required(rule, value, source, errors, options);
@@ -2544,7 +2597,7 @@ var _boolean = function _boolean2(rule, value, callback, source, options) {
2544
2597
  var errors = [];
2545
2598
  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
2546
2599
  if (validate) {
2547
- if (isEmptyValue(value) && !rule.required) {
2600
+ if (isEmptyValue$1(value) && !rule.required) {
2548
2601
  return callback();
2549
2602
  }
2550
2603
  rules.required(rule, value, source, errors, options);
@@ -2558,11 +2611,11 @@ var regexp2 = function regexp3(rule, value, callback, source, options) {
2558
2611
  var errors = [];
2559
2612
  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
2560
2613
  if (validate) {
2561
- if (isEmptyValue(value) && !rule.required) {
2614
+ if (isEmptyValue$1(value) && !rule.required) {
2562
2615
  return callback();
2563
2616
  }
2564
2617
  rules.required(rule, value, source, errors, options);
2565
- if (!isEmptyValue(value)) {
2618
+ if (!isEmptyValue$1(value)) {
2566
2619
  rules.type(rule, value, source, errors, options);
2567
2620
  }
2568
2621
  }
@@ -2572,7 +2625,7 @@ var integer2 = function integer3(rule, value, callback, source, options) {
2572
2625
  var errors = [];
2573
2626
  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
2574
2627
  if (validate) {
2575
- if (isEmptyValue(value) && !rule.required) {
2628
+ if (isEmptyValue$1(value) && !rule.required) {
2576
2629
  return callback();
2577
2630
  }
2578
2631
  rules.required(rule, value, source, errors, options);
@@ -2587,7 +2640,7 @@ var floatFn = function floatFn2(rule, value, callback, source, options) {
2587
2640
  var errors = [];
2588
2641
  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
2589
2642
  if (validate) {
2590
- if (isEmptyValue(value) && !rule.required) {
2643
+ if (isEmptyValue$1(value) && !rule.required) {
2591
2644
  return callback();
2592
2645
  }
2593
2646
  rules.required(rule, value, source, errors, options);
@@ -2617,7 +2670,7 @@ var object2 = function object3(rule, value, callback, source, options) {
2617
2670
  var errors = [];
2618
2671
  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
2619
2672
  if (validate) {
2620
- if (isEmptyValue(value) && !rule.required) {
2673
+ if (isEmptyValue$1(value) && !rule.required) {
2621
2674
  return callback();
2622
2675
  }
2623
2676
  rules.required(rule, value, source, errors, options);
@@ -2632,7 +2685,7 @@ var enumerable2 = function enumerable3(rule, value, callback, source, options) {
2632
2685
  var errors = [];
2633
2686
  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
2634
2687
  if (validate) {
2635
- if (isEmptyValue(value) && !rule.required) {
2688
+ if (isEmptyValue$1(value) && !rule.required) {
2636
2689
  return callback();
2637
2690
  }
2638
2691
  rules.required(rule, value, source, errors, options);
@@ -2646,11 +2699,11 @@ var pattern2 = function pattern3(rule, value, callback, source, options) {
2646
2699
  var errors = [];
2647
2700
  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
2648
2701
  if (validate) {
2649
- if (isEmptyValue(value, "string") && !rule.required) {
2702
+ if (isEmptyValue$1(value, "string") && !rule.required) {
2650
2703
  return callback();
2651
2704
  }
2652
2705
  rules.required(rule, value, source, errors, options);
2653
- if (!isEmptyValue(value, "string")) {
2706
+ if (!isEmptyValue$1(value, "string")) {
2654
2707
  rules.pattern(rule, value, source, errors, options);
2655
2708
  }
2656
2709
  }
@@ -2660,11 +2713,11 @@ var date2 = function date3(rule, value, callback, source, options) {
2660
2713
  var errors = [];
2661
2714
  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
2662
2715
  if (validate) {
2663
- if (isEmptyValue(value, "date") && !rule.required) {
2716
+ if (isEmptyValue$1(value, "date") && !rule.required) {
2664
2717
  return callback();
2665
2718
  }
2666
2719
  rules.required(rule, value, source, errors, options);
2667
- if (!isEmptyValue(value, "date")) {
2720
+ if (!isEmptyValue$1(value, "date")) {
2668
2721
  var dateObject;
2669
2722
  if (value instanceof Date) {
2670
2723
  dateObject = value;
@@ -2690,11 +2743,11 @@ var type2 = function type3(rule, value, callback, source, options) {
2690
2743
  var errors = [];
2691
2744
  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
2692
2745
  if (validate) {
2693
- if (isEmptyValue(value, ruleType) && !rule.required) {
2746
+ if (isEmptyValue$1(value, ruleType) && !rule.required) {
2694
2747
  return callback();
2695
2748
  }
2696
2749
  rules.required(rule, value, source, errors, options, ruleType);
2697
- if (!isEmptyValue(value, ruleType)) {
2750
+ if (!isEmptyValue$1(value, ruleType)) {
2698
2751
  rules.type(rule, value, source, errors, options);
2699
2752
  }
2700
2753
  }
@@ -2704,7 +2757,7 @@ var any = function any2(rule, value, callback, source, options) {
2704
2757
  var errors = [];
2705
2758
  var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
2706
2759
  if (validate) {
2707
- if (isEmptyValue(value) && !rule.required) {
2760
+ if (isEmptyValue$1(value) && !rule.required) {
2708
2761
  return callback();
2709
2762
  }
2710
2763
  rules.required(rule, value, source, errors, options);
@@ -3041,6 +3094,518 @@ Schema.register = function register(type4, validator) {
3041
3094
  Schema.warning = warning;
3042
3095
  Schema.messages = messages;
3043
3096
  Schema.validators = validators;
3097
+ const stampKeys = [
3098
+ "sealId",
3099
+ "sealName",
3100
+ "sealType",
3101
+ "sealImage",
3102
+ "sealUserId",
3103
+ "sealUserName",
3104
+ "sealUserTime"
3105
+ ];
3106
+ function isSealPosition(value) {
3107
+ if (!value || typeof value !== "object") return false;
3108
+ const p = value;
3109
+ return typeof p.sheetId === "string" && !!p.sheetId && Number.isInteger(p.pageIndex) && p.pageIndex >= 0 && Number.isFinite(p.leftMm) && p.leftMm >= 0 && Number.isFinite(p.topMm) && p.topMm >= 0;
3110
+ }
3111
+ function readSealValue(raw, fallback) {
3112
+ let parsed = {};
3113
+ try {
3114
+ const value = typeof raw === "string" ? JSON.parse(raw || "{}") : raw;
3115
+ if (value && typeof value === "object" && !Array.isArray(value)) parsed = value;
3116
+ } catch {
3117
+ }
3118
+ const stamp = Object.fromEntries(
3119
+ stampKeys.map((key) => [key, typeof parsed[key] === "string" ? parsed[key] : ""])
3120
+ );
3121
+ return {
3122
+ ...stamp,
3123
+ sealPosition: { ...isSealPosition(parsed.sealPosition) ? parsed.sealPosition : fallback }
3124
+ };
3125
+ }
3126
+ function isSealStamped(raw) {
3127
+ try {
3128
+ const value = typeof raw === "string" ? JSON.parse(raw || "{}") : raw;
3129
+ return !!value && typeof value.sealId === "string" && !!value.sealId && typeof value.sealImage === "string" && !!value.sealImage;
3130
+ } catch {
3131
+ return false;
3132
+ }
3133
+ }
3134
+ function isValidSealValue(raw) {
3135
+ try {
3136
+ const value = typeof raw === "string" ? JSON.parse(raw || "{}") : raw;
3137
+ return !!value && stampKeys.every((key) => typeof value[key] === "string") && isSealPosition(value.sealPosition) && (stampKeys.every((key) => !value[key]) || stampKeys.every((key) => !!value[key]));
3138
+ } catch {
3139
+ return false;
3140
+ }
3141
+ }
3142
+ function moveSealValue(raw, fallback, position) {
3143
+ return JSON.stringify({ ...readSealValue(raw, fallback), sealPosition: { ...position } });
3144
+ }
3145
+ function stampSealValue(raw, fallback, stamp) {
3146
+ const current = readSealValue(raw, fallback);
3147
+ const next = readSealValue({ ...stamp, sealPosition: current.sealPosition }, fallback);
3148
+ return JSON.stringify(next);
3149
+ }
3150
+ function clearSealValue(raw, fallback) {
3151
+ return JSON.stringify(
3152
+ readSealValue({ sealPosition: readSealValue(raw, fallback).sealPosition }, fallback)
3153
+ );
3154
+ }
3155
+ function normalizeSealDiameter(value) {
3156
+ const diameter = Number(value);
3157
+ return Number.isFinite(diameter) && diameter > 0 ? Math.min(diameter, 200) : 42;
3158
+ }
3159
+ function clampSealPosition(position, widthMm, heightMm, diameterMm) {
3160
+ return {
3161
+ ...position,
3162
+ leftMm: Math.max(0, Math.min(position.leftMm, Math.max(0, widthMm - diameterMm))),
3163
+ topMm: Math.max(0, Math.min(position.topMm, Math.max(0, heightMm - diameterMm)))
3164
+ };
3165
+ }
3166
+ function initializeSealFields(fields, formData) {
3167
+ for (const { props } of fields) {
3168
+ if (!props.field || props.isFieldModel || props.subFieldKey) continue;
3169
+ const raw = formData[props.field];
3170
+ if (raw == null || raw === "") {
3171
+ formData[props.field] = JSON.stringify(readSealValue("", props.sealPosition));
3172
+ continue;
3173
+ }
3174
+ try {
3175
+ const parsed = typeof raw === "string" ? JSON.parse(raw) : raw;
3176
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) continue;
3177
+ if (!isSealPosition(parsed.sealPosition)) {
3178
+ formData[props.field] = JSON.stringify({
3179
+ ...parsed,
3180
+ sealPosition: { ...props.sealPosition }
3181
+ });
3182
+ } else if (typeof raw !== "string") {
3183
+ formData[props.field] = JSON.stringify(parsed);
3184
+ }
3185
+ } catch {
3186
+ }
3187
+ }
3188
+ }
3189
+ const { identify, calculate: calculate$1 } = {
3190
+ identify: (expression) => window.NocodeAdapter.utils?.formulaIdentify?.(expression) ?? [],
3191
+ calculate: (expression, data) => window.NocodeAdapter.utils?.formulaCalculate?.(expression, data)
3192
+ };
3193
+ const getFieldDataValue = (parseInfo, formData) => {
3194
+ const getTextValue = (processedKey, value) => {
3195
+ const textValue = value ?? formData?.[processedKey] ?? "";
3196
+ return Array.isArray(textValue) ? textValue.join() : textValue;
3197
+ };
3198
+ const { type: type4, processed, hashValue } = parseInfo;
3199
+ if (type4 === "hash") {
3200
+ const tableData = toRaw(formData?.[hashValue] || []);
3201
+ return tableData.filter((d) => !d.deleted_).map((row) => getTextValue(processed, row?.[processed])).filter((i) => !isNil(i));
3202
+ }
3203
+ return getTextValue(processed, formData?.[processed]);
3204
+ };
3205
+ const parseFormulaVar = (formulaVar) => {
3206
+ const result = {
3207
+ original: formulaVar,
3208
+ type: "",
3209
+ processed: "",
3210
+ hashValue: "",
3211
+ dataType: ""
3212
+ };
3213
+ if (/^\$([^$]+)\$\.(.+)$/.test(formulaVar)) {
3214
+ const match = formulaVar.match(/^\$([^$]+)\$\.(.+)$/);
3215
+ result.type = "hash";
3216
+ result.processed = match[2];
3217
+ result.hashValue = match[1];
3218
+ result.dataType = "globType";
3219
+ } else if (/^_\.(.+)$/.test(formulaVar)) {
3220
+ const match = formulaVar.match(/^_\.(.+)$/);
3221
+ result.type = "underscore";
3222
+ result.processed = match[1];
3223
+ result.dataType = "currentRowType";
3224
+ } else {
3225
+ result.type = "plain";
3226
+ result.processed = formulaVar;
3227
+ result.dataType = "globType";
3228
+ }
3229
+ return result;
3230
+ };
3231
+ const getParseFormulaVarInfos = (expr) => {
3232
+ const rowArgs = expr ? identify(expr) : [];
3233
+ return {
3234
+ rowArgs,
3235
+ parseInfos: rowArgs.map((curr) => parseFormulaVar(curr))
3236
+ };
3237
+ };
3238
+ const calculateFormula = async (expr, formData, instanceFormState) => {
3239
+ const rowArgs = identify(expr);
3240
+ const formulaData = isEmpty(rowArgs) ? {} : rowArgs.reduce((total, curr) => {
3241
+ const parseInfo = parseFormulaVar(curr);
3242
+ total[curr] = getFieldDataValue(
3243
+ parseInfo,
3244
+ parseInfo.dataType === "currentRowType" ? formData : instanceFormState
3245
+ );
3246
+ return total;
3247
+ }, {});
3248
+ return calculate$1(expr, formulaData);
3249
+ };
3250
+ const isEmptyValue = (value) => {
3251
+ return value === void 0 || value === null || typeof value === "string" && value.trim() === "" || Array.isArray(value) && value.length === 0;
3252
+ };
3253
+ const compareByOp = (left, right, op) => {
3254
+ switch (op) {
3255
+ case RangeCompareOp.LT:
3256
+ return left < right;
3257
+ case RangeCompareOp.LE:
3258
+ return left <= right;
3259
+ case RangeCompareOp.GT:
3260
+ return left > right;
3261
+ case RangeCompareOp.GE:
3262
+ default:
3263
+ return left >= right;
3264
+ }
3265
+ };
3266
+ const rangeCompareMessage = (op, val) => {
3267
+ switch (op) {
3268
+ case RangeCompareOp.LT:
3269
+ return $t("sys.fieldValueNotGreaterOrEqual", { val });
3270
+ case RangeCompareOp.LE:
3271
+ return $t("sys.fieldValueNoMoreThan", { val });
3272
+ case RangeCompareOp.GT:
3273
+ return $t("sys.fieldValueNotLessOrEqual", { val });
3274
+ case RangeCompareOp.GE:
3275
+ default:
3276
+ return $t("sys.fieldValueNotLessThan", { val });
3277
+ }
3278
+ };
3279
+ const toUnixTimestamp = (input) => {
3280
+ if (isNil(input) || input === "") return null;
3281
+ const asNumber = typeof input === "number" || typeof input === "string" && /^-?\d+(\.\d+)?$/.test(input.trim());
3282
+ if (asNumber) {
3283
+ const n = Number(input);
3284
+ if (Number.isNaN(n)) return null;
3285
+ const parsed2 = n > 1e12 ? dayjs(n) : dayjs.unix(n);
3286
+ return parsed2.isValid() ? parsed2.unix() : null;
3287
+ }
3288
+ const parsed = dayjs(input);
3289
+ return parsed.isValid() ? parsed.unix() : null;
3290
+ };
3291
+ const buildError = (validatorInfo, message2) => JSON.stringify({ ...validatorInfo, message: message2 });
3292
+ function areValidationCommentsEqual(left, right) {
3293
+ const serialize = (comments) => JSON.stringify(
3294
+ comments,
3295
+ (_key, value) => value && typeof value === "object" && "message" in value ? { ...value, message: value.message } : value
3296
+ );
3297
+ return serialize(left) === serialize(right);
3298
+ }
3299
+ const createRule = (validator, message2, trigger = "change") => ({
3300
+ required: true,
3301
+ validator,
3302
+ message: message2,
3303
+ trigger
3304
+ });
3305
+ function relocateDeletedRowsToEnd(rows = []) {
3306
+ const active = [];
3307
+ const deleted = [];
3308
+ for (const row of rows) {
3309
+ if (row?.deleted_) deleted.push(row);
3310
+ else active.push(row);
3311
+ }
3312
+ return [...active, ...deleted];
3313
+ }
3314
+ function filterRulesByTrigger(rules2, trigger) {
3315
+ return rules2.filter((rule) => {
3316
+ const ruleTrigger = rule.trigger;
3317
+ if (!ruleTrigger) return trigger === "change";
3318
+ if (trigger === "blur") {
3319
+ return ruleTrigger === "blur" || ruleTrigger === "change";
3320
+ }
3321
+ return ruleTrigger === trigger;
3322
+ });
3323
+ }
3324
+ function assembleRules(input) {
3325
+ const { showRequired, fieldType, validatorInfo, props } = input;
3326
+ const {
3327
+ minlength,
3328
+ maxlength,
3329
+ regex,
3330
+ regexHint,
3331
+ validateTrue,
3332
+ validateFalse,
3333
+ enableRangeValidate,
3334
+ maxValidateMode,
3335
+ minValidateMode,
3336
+ maxCompareOp,
3337
+ minCompareOp,
3338
+ minValue,
3339
+ maxValue,
3340
+ minFormulaExpr,
3341
+ maxFormulaExpr,
3342
+ minDate,
3343
+ maxDate,
3344
+ minDateFormulaExpr,
3345
+ maxDateFormulaExpr,
3346
+ maxDateValidateMode,
3347
+ minDateValidateMode
3348
+ } = props;
3349
+ const resolvedMaxCompareOp = maxCompareOp ?? RangeCompareOp.LE;
3350
+ const resolvedMinCompareOp = minCompareOp ?? RangeCompareOp.GE;
3351
+ const RuleProps = [];
3352
+ if (props.bizType === FIELD_TYPE.SEAL) {
3353
+ if (showRequired) {
3354
+ RuleProps.push(
3355
+ createRule(
3356
+ (_rule, value) => isSealStamped(value),
3357
+ buildError(
3358
+ { ...validatorInfo, validationCode: "seal-required" },
3359
+ $t("sys.fieldRequired")
3360
+ ),
3361
+ "manual"
3362
+ )
3363
+ );
3364
+ }
3365
+ RuleProps.push(
3366
+ createRule(
3367
+ (_rule, value) => isEmptyValue(value) || isValidSealValue(value),
3368
+ buildError(validatorInfo, $t("sys.seal.invalid"))
3369
+ )
3370
+ );
3371
+ return RuleProps;
3372
+ }
3373
+ if (showRequired) {
3374
+ RuleProps.push(
3375
+ createRule(
3376
+ (_rule, value) => !isEmptyValue(value),
3377
+ buildError(validatorInfo, $t("sys.fieldRequired")),
3378
+ "manual"
3379
+ )
3380
+ );
3381
+ }
3382
+ if (!isNil(minlength)) {
3383
+ RuleProps.push(
3384
+ createRule((_rule, value) => {
3385
+ if (isEmptyValue(value)) return true;
3386
+ return String(value).length >= minlength;
3387
+ }, buildError(validatorInfo, $t("sys.fieldLengthNotLessThan", { len: minlength })))
3388
+ );
3389
+ }
3390
+ const effectiveMaxlength = isNil(maxlength) && fieldType === FIELD_TYPE.TEXT ? 1024 : maxlength;
3391
+ if (!isNil(effectiveMaxlength)) {
3392
+ RuleProps.push(
3393
+ createRule((_rule, value) => {
3394
+ if (isEmptyValue(value)) return true;
3395
+ return String(value).length <= effectiveMaxlength;
3396
+ }, buildError(validatorInfo, $t("sys.fieldLengthNoMoreThan", { len: effectiveMaxlength })))
3397
+ );
3398
+ }
3399
+ if (regex) {
3400
+ RuleProps.push(
3401
+ createRule((_rule, value) => {
3402
+ if (isEmptyValue(value)) return true;
3403
+ return new RegExp(regex).test(value);
3404
+ }, buildError(validatorInfo, regexHint ?? $t("sys.fieldFormatError")))
3405
+ );
3406
+ }
3407
+ if (validateTrue) {
3408
+ RuleProps.push({
3409
+ required: true,
3410
+ trigger: "manual",
3411
+ validator: (_rule, value) => value === true,
3412
+ message: buildError(validatorInfo, $t("sys.fieldValueNeedTrue"))
3413
+ });
3414
+ }
3415
+ if (validateFalse) {
3416
+ RuleProps.push({
3417
+ required: true,
3418
+ trigger: "manual",
3419
+ validator: (_rule, value) => value === false,
3420
+ message: buildError(validatorInfo, $t("sys.fieldValueNeedFalse"))
3421
+ });
3422
+ }
3423
+ const configuredMinCoversZero = enableRangeValidate && minValidateMode === RangeValidateMode.Fixed_Number && !isEmptyValue(minValue) && Number(minValue) >= 0 && (resolvedMinCompareOp === RangeCompareOp.GE || resolvedMinCompareOp === RangeCompareOp.GT);
3424
+ if (input.defaultMinValue === 0 && !configuredMinCoversZero) {
3425
+ RuleProps.push(
3426
+ createRule(
3427
+ (_rule, value) => isEmptyValue(value) || Number(value) >= 0,
3428
+ buildError(validatorInfo, rangeCompareMessage(RangeCompareOp.GE, 0))
3429
+ )
3430
+ );
3431
+ }
3432
+ if (!enableRangeValidate) {
3433
+ return RuleProps;
3434
+ }
3435
+ if (minValidateMode === RangeValidateMode.Fixed_Number && !isEmptyValue(minValue)) {
3436
+ RuleProps.push(
3437
+ createRule((_rule, value) => {
3438
+ if (isEmptyValue(value)) return true;
3439
+ return compareByOp(Number(value), Number(minValue), resolvedMinCompareOp);
3440
+ }, buildError(validatorInfo, rangeCompareMessage(resolvedMinCompareOp, minValue)))
3441
+ );
3442
+ }
3443
+ if (minValidateMode === RangeValidateMode.Variable_Validate && minFormulaExpr) {
3444
+ RuleProps.push({
3445
+ required: true,
3446
+ trigger: "change",
3447
+ validator: async (_rule, value, _callback, _source, options) => {
3448
+ const currentFormData = getCurrentFormData(_rule, options);
3449
+ const formulaValue = await calculateFormula(
3450
+ minFormulaExpr,
3451
+ currentFormData,
3452
+ options?.formData
3453
+ );
3454
+ if (isEmptyValue(formulaValue)) {
3455
+ return Promise.resolve();
3456
+ }
3457
+ const parsedMin = parseFloat(formulaValue);
3458
+ if (!isNaN(parsedMin)) {
3459
+ if (isEmptyValue(value)) {
3460
+ return Promise.resolve();
3461
+ }
3462
+ if (!compareByOp(Number(value), parsedMin, resolvedMinCompareOp)) {
3463
+ return Promise.reject(
3464
+ new Error(
3465
+ buildError(validatorInfo, rangeCompareMessage(resolvedMinCompareOp, parsedMin))
3466
+ )
3467
+ );
3468
+ }
3469
+ }
3470
+ return Promise.resolve();
3471
+ }
3472
+ });
3473
+ }
3474
+ if (maxValidateMode === RangeValidateMode.Fixed_Number && !isEmptyValue(maxValue)) {
3475
+ RuleProps.push(
3476
+ createRule((_rule, value) => {
3477
+ if (isEmptyValue(value)) return true;
3478
+ return compareByOp(Number(value), Number(maxValue), resolvedMaxCompareOp);
3479
+ }, buildError(validatorInfo, rangeCompareMessage(resolvedMaxCompareOp, maxValue)))
3480
+ );
3481
+ }
3482
+ if (maxValidateMode === RangeValidateMode.Variable_Validate && maxFormulaExpr) {
3483
+ RuleProps.push({
3484
+ required: true,
3485
+ trigger: "change",
3486
+ validator: async (_rule, value, _callback, _source, options) => {
3487
+ const currentFormData = getCurrentFormData(_rule, options);
3488
+ const formulaValue = await calculateFormula(
3489
+ maxFormulaExpr,
3490
+ currentFormData,
3491
+ options?.formData
3492
+ );
3493
+ if (isEmptyValue(formulaValue)) {
3494
+ return Promise.resolve();
3495
+ }
3496
+ const parsedMax = parseFloat(formulaValue);
3497
+ if (!isNaN(parsedMax)) {
3498
+ if (isEmptyValue(value)) {
3499
+ return Promise.resolve();
3500
+ }
3501
+ if (!compareByOp(Number(value), parsedMax, resolvedMaxCompareOp)) {
3502
+ return Promise.reject(
3503
+ new Error(
3504
+ buildError(validatorInfo, rangeCompareMessage(resolvedMaxCompareOp, parsedMax))
3505
+ )
3506
+ );
3507
+ }
3508
+ }
3509
+ return Promise.resolve();
3510
+ }
3511
+ });
3512
+ }
3513
+ if (minDateValidateMode === RangeValidateMode.Fixed_Number && minDate) {
3514
+ RuleProps.push(
3515
+ createRule((_rule, value) => {
3516
+ if (isEmptyValue(value)) return true;
3517
+ const inputTime = dayjs(value).unix();
3518
+ const minTimestamp = dayjs(minDate).unix();
3519
+ if (!dayjs(value).isValid() || !dayjs(minDate).isValid()) return true;
3520
+ return compareByOp(inputTime, minTimestamp, resolvedMinCompareOp);
3521
+ }, buildError(validatorInfo, rangeCompareMessage(resolvedMinCompareOp, minDate)))
3522
+ );
3523
+ }
3524
+ if (maxDateValidateMode === RangeValidateMode.Fixed_Number && maxDate) {
3525
+ RuleProps.push(
3526
+ createRule((_rule, value) => {
3527
+ if (isEmptyValue(value)) return true;
3528
+ const inputTime = dayjs(value).unix();
3529
+ const maxTimestamp = dayjs(maxDate).unix();
3530
+ if (!dayjs(value).isValid() || !dayjs(maxDate).isValid()) return true;
3531
+ return compareByOp(inputTime, maxTimestamp, resolvedMaxCompareOp);
3532
+ }, buildError(validatorInfo, rangeCompareMessage(resolvedMaxCompareOp, maxDate)))
3533
+ );
3534
+ }
3535
+ if (minDateValidateMode === RangeValidateMode.Variable_Validate && minDateFormulaExpr) {
3536
+ RuleProps.push({
3537
+ required: true,
3538
+ trigger: "change",
3539
+ validator: async (_rule, value, _callback, _source, options) => {
3540
+ const currentFormData = getCurrentFormData(_rule, options);
3541
+ const formulaValue = await calculateFormula(
3542
+ minDateFormulaExpr,
3543
+ currentFormData,
3544
+ options?.formData
3545
+ );
3546
+ const limitTime = toUnixTimestamp(formulaValue);
3547
+ if (limitTime !== null) {
3548
+ if (isEmptyValue(value)) {
3549
+ return Promise.resolve();
3550
+ }
3551
+ if (!dayjs(value).isValid()) {
3552
+ return Promise.resolve();
3553
+ }
3554
+ const inputTime = dayjs(value).unix();
3555
+ const fmt = fieldType === FIELD_TYPE.DATE_TIME ? "YYYY-MM-DD HH:mm:ss" : "YYYY-MM-DD";
3556
+ if (!compareByOp(inputTime, limitTime, resolvedMinCompareOp)) {
3557
+ return Promise.reject(
3558
+ new Error(
3559
+ buildError(
3560
+ validatorInfo,
3561
+ rangeCompareMessage(resolvedMinCompareOp, dayjs.unix(limitTime).format(fmt))
3562
+ )
3563
+ )
3564
+ );
3565
+ }
3566
+ }
3567
+ return Promise.resolve();
3568
+ }
3569
+ });
3570
+ }
3571
+ if (maxDateValidateMode === RangeValidateMode.Variable_Validate && maxDateFormulaExpr) {
3572
+ RuleProps.push({
3573
+ required: true,
3574
+ trigger: "change",
3575
+ validator: async (_rule, value, _callback, _source, options) => {
3576
+ const currentFormData = getCurrentFormData(_rule, options);
3577
+ const formulaValue = await calculateFormula(
3578
+ maxDateFormulaExpr,
3579
+ currentFormData,
3580
+ options?.formData
3581
+ );
3582
+ const limitTime = toUnixTimestamp(formulaValue);
3583
+ if (limitTime !== null) {
3584
+ if (isEmptyValue(value)) {
3585
+ return Promise.resolve();
3586
+ }
3587
+ if (!dayjs(value).isValid()) {
3588
+ return Promise.resolve();
3589
+ }
3590
+ const inputTime = dayjs(value).unix();
3591
+ const fmt = fieldType === FIELD_TYPE.DATE_TIME ? "YYYY-MM-DD HH:mm:ss" : "YYYY-MM-DD";
3592
+ if (!compareByOp(inputTime, limitTime, resolvedMaxCompareOp)) {
3593
+ return Promise.reject(
3594
+ new Error(
3595
+ buildError(
3596
+ validatorInfo,
3597
+ rangeCompareMessage(resolvedMaxCompareOp, dayjs.unix(limitTime).format(fmt))
3598
+ )
3599
+ )
3600
+ );
3601
+ }
3602
+ }
3603
+ return Promise.resolve();
3604
+ }
3605
+ });
3606
+ }
3607
+ return RuleProps;
3608
+ }
3044
3609
  function resolveKeepExceptionHighlight(formValue, fieldValue) {
3045
3610
  if (typeof fieldValue === "boolean") {
3046
3611
  return fieldValue;
@@ -3166,7 +3731,7 @@ function clearResolvedManualErrors(map, resolvePayload) {
3166
3731
  if (!payload) continue;
3167
3732
  const hasManual = filterRulesByTrigger(payload.rules, "manual").length > 0;
3168
3733
  const hasLive = filterRulesByTrigger(payload.rules, "change").length > 0;
3169
- if (hasManual && !hasLive && !isEmptyValue$1(payload.value)) {
3734
+ if (hasManual && !hasLive && !isEmptyValue(payload.value)) {
3170
3735
  delete next[path];
3171
3736
  }
3172
3737
  }
@@ -3180,7 +3745,7 @@ function mergeLiveValidation(current, liveResult, livePaths, resolvePayload) {
3180
3745
  continue;
3181
3746
  }
3182
3747
  const payload = resolvePayload(path);
3183
- const keepManualComment = !!payload && filterRulesByTrigger(payload.rules, "manual").length > 0 && isEmptyValue$1(payload.value) && !!base[path]?.length;
3748
+ const keepManualComment = !!payload && filterRulesByTrigger(payload.rules, "manual").length > 0 && isEmptyValue(payload.value) && !!base[path]?.length;
3184
3749
  if (!keepManualComment) {
3185
3750
  delete base[path];
3186
3751
  }
@@ -3223,7 +3788,7 @@ function mergeDisplayValidation(current, displayResult, ruleKeys, validatedPaths
3223
3788
  next[path] = displayResult[path];
3224
3789
  } else {
3225
3790
  const payload = resolvePayload(path);
3226
- const keepManualComment = !!payload && filterRulesByTrigger(payload.rules, "manual").length > 0 && isEmptyValue$1(payload.value) && !!next[path]?.length;
3791
+ const keepManualComment = !!payload && filterRulesByTrigger(payload.rules, "manual").length > 0 && isEmptyValue(payload.value) && !!next[path]?.length;
3227
3792
  if (!keepManualComment) delete next[path];
3228
3793
  }
3229
3794
  }
@@ -10437,117 +11002,132 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
10437
11002
  });
10438
11003
  const DynamicTableAction = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-53d7e66c"]]);
10439
11004
  export {
10440
- setFormulaParamsConfig as $,
10441
- getObjectBomProductQuery as A,
11005
+ DocumentPaper as $,
11006
+ runWithFillProduct as A,
10442
11007
  BorderTD as B,
10443
- normalizeHistoricalAutofillRow as C,
11008
+ useNocodeFormWidget as C,
10444
11009
  DEFAULT_BOOLEAN_FIELD_WIDTH as D,
10445
- EMPTY_PRODUCT_VERSION_ID as E,
10446
- parseRuntimeFieldPath as F,
10447
- useStyles as G,
10448
- useDependency as H,
10449
- useFieldPresentation as I,
10450
- useRuntimeEditorFlusher as J,
10451
- createRuntimeInstanceContext as K,
10452
- RuntimeInstanceRegistry as L,
11010
+ applyConsumeObjectTraceChange as E,
11011
+ getObjectBomProductQuery as F,
11012
+ EMPTY_PRODUCT_VERSION_ID as G,
11013
+ normalizeHistoricalAutofillRow as H,
11014
+ readSealValue as I,
11015
+ isSealStamped as J,
11016
+ stampSealValue as K,
11017
+ isValidSealValue as L,
10453
11018
  MAX_RUNTIME_SHEETS as M,
10454
- NCB_PROVIDE as N,
10455
- RequiredQtyCalcRule as O,
10456
- DocumentPaper as P,
10457
- DynamicTableAction as Q,
10458
- RuntimeFormStateStore as R,
10459
- ScanParamType as S,
10460
- getRuntimeDataFieldId as T,
10461
- buildRuntimeFieldPath as U,
10462
- resolveRuntimeFieldProps as V,
10463
- resolveRuntimeFieldState as W,
10464
- getRuntimeDependencyOutputKey as X,
10465
- isRowAddedInCurrentFormChange as Y,
10466
- MaterialConsumeTableController as Z,
10467
- _sfc_main$5 as _,
11019
+ clearSealValue as N,
11020
+ parseRuntimeFieldPath as O,
11021
+ NCB_PROVIDE as P,
11022
+ calculateFormula as Q,
11023
+ useStyles as R,
11024
+ useDependency as S,
11025
+ useFieldPresentation as T,
11026
+ useRuntimeEditorFlusher as U,
11027
+ RuntimeFormStateStore as V,
11028
+ createRuntimeInstanceContext as W,
11029
+ RuntimeInstanceRegistry as X,
11030
+ ScanParamType as Y,
11031
+ RequiredQtyCalcRule as Z,
11032
+ moveSealValue as _,
10468
11033
  MAX_RUNTIME_SHEET_TITLE_LENGTH as a,
10469
- normalizeRuntime as a0,
10470
- RuntimeSheetService as a1,
10471
- validateObjectBomQtyOnSubmit as a2,
10472
- closeValidatorPopovers as a3,
10473
- enrichFormChangeRowDetails as a4,
10474
- useMaterialBalance as a5,
10475
- collectFormChangeFieldLocations as a6,
10476
- nextFormChangeRowViewHistoryId as a7,
10477
- DeviceConnector as a8,
10478
- DocumentLoading as a9,
10479
- pickObjectFieldKeys as aA,
10480
- recordSubtableRowAdd as aB,
10481
- recordSubtableRowDelete as aC,
10482
- resolveAnnotationFieldLocation as aD,
10483
- resolveFormChangeRowUi as aE,
10484
- resolveRowFormChangeMark as aF,
10485
- setSelectMobileTdId as aG,
10486
- stripLegacyFormConfigFromPaper as aH,
10487
- SubTableActionMenuTypeEnum as aI,
10488
- getMenuByAction as aJ,
10489
- SubTableActionEnum as aK,
10490
- resolveScanFillData as aL,
10491
- buildDefaultMapFromProfile as aM,
10492
- buildFieldStatusFromProfile as aN,
10493
- getRowHandlersForFieldChange as aO,
10494
- getInsertSubMenu as aP,
10495
- resolveScanAdjustType as aQ,
10496
- resolveScanQty as aR,
10497
- toDateOnly as aS,
10498
- hasSubtableBusinessData as aT,
10499
- getCopySubMenu as aU,
10500
- resolveScanParsedValue as aV,
10501
- isProductBatchEmptyRow as aW,
10502
- DynamicQuickFillModal as aa,
10503
- FixedQuickFillModal as ab,
10504
- FormTmplConfigController as ac,
10505
- LEGACY_RUNTIME_FORM_CONFIG_KEYS as ad,
10506
- LEGACY_RUNTIME_SHEET_ID as ae,
10507
- LEGACY_RUNTIME_SHEET_TITLE as af,
10508
- MCDataUtil as ag,
10509
- OCR_MODEL_PRECISION_ENUM_KEY as ah,
10510
- RuntimeAsyncTaskCoordinator as ai,
10511
- RuntimeDependencyService as aj,
10512
- RuntimeFieldRegistry as ak,
10513
- RuntimeInstanceEventBus as al,
10514
- RuntimePersistenceCoordinator as am,
10515
- RuntimeValidationService as an,
10516
- SubTableCore as ao,
10517
- buildFormChangeDisplayRows as ap,
10518
- convertV1Runtime as aq,
10519
- detailsHaveFormChangeRowOps as ar,
10520
- extractFormChangeRowDetails as as,
10521
- getFormChangeRowKey as at,
10522
- getFormChangeRowOp as au,
10523
- getSubTableQuickFillInfo as av,
10524
- isAnnLocationSelected as aw,
10525
- isBlank as ax,
10526
- isFormChangeGhostRow as ay,
10527
- normalizeHistoricalFieldConfig as az,
11034
+ buildDefaultMapFromProfile as a$,
11035
+ DynamicTableAction as a0,
11036
+ _sfc_main$5 as a1,
11037
+ getRuntimeDataFieldId as a2,
11038
+ buildRuntimeFieldPath as a3,
11039
+ resolveRuntimeFieldProps as a4,
11040
+ resolveRuntimeFieldState as a5,
11041
+ assembleRules as a6,
11042
+ isAttachFieldActive as a7,
11043
+ getRuntimeDependencyOutputKey as a8,
11044
+ isRowAddedInCurrentFormChange as a9,
11045
+ RuntimePersistenceCoordinator as aA,
11046
+ RuntimeValidationService as aB,
11047
+ SubTableCore as aC,
11048
+ buildFormChangeDisplayRows as aD,
11049
+ convertV1Runtime as aE,
11050
+ detailsHaveFormChangeRowOps as aF,
11051
+ extractFormChangeRowDetails as aG,
11052
+ getFormChangeRowKey as aH,
11053
+ getFormChangeRowOp as aI,
11054
+ getSubTableQuickFillInfo as aJ,
11055
+ isAnnLocationSelected as aK,
11056
+ isBlank as aL,
11057
+ isFormChangeGhostRow as aM,
11058
+ normalizeHistoricalFieldConfig as aN,
11059
+ pickObjectFieldKeys as aO,
11060
+ recordSubtableRowAdd as aP,
11061
+ recordSubtableRowDelete as aQ,
11062
+ relocateDeletedRowsToEnd as aR,
11063
+ resolveAnnotationFieldLocation as aS,
11064
+ resolveFormChangeRowUi as aT,
11065
+ resolveRowFormChangeMark as aU,
11066
+ setSelectMobileTdId as aV,
11067
+ stripLegacyFormConfigFromPaper as aW,
11068
+ SubTableActionMenuTypeEnum as aX,
11069
+ getMenuByAction as aY,
11070
+ SubTableActionEnum as aZ,
11071
+ resolveScanFillData as a_,
11072
+ MaterialConsumeTableController as aa,
11073
+ setFormulaParamsConfig as ab,
11074
+ normalizeRuntime as ac,
11075
+ initializeSealFields as ad,
11076
+ RuntimeSheetService as ae,
11077
+ validateObjectBomQtyOnSubmit as af,
11078
+ areValidationCommentsEqual as ag,
11079
+ closeValidatorPopovers as ah,
11080
+ enrichFormChangeRowDetails as ai,
11081
+ useMaterialBalance as aj,
11082
+ collectFormChangeFieldLocations as ak,
11083
+ nextFormChangeRowViewHistoryId as al,
11084
+ DeviceConnector as am,
11085
+ DocumentLoading as an,
11086
+ DynamicQuickFillModal as ao,
11087
+ FixedQuickFillModal as ap,
11088
+ FormTmplConfigController as aq,
11089
+ LEGACY_RUNTIME_FORM_CONFIG_KEYS as ar,
11090
+ LEGACY_RUNTIME_SHEET_ID as as,
11091
+ LEGACY_RUNTIME_SHEET_TITLE as at,
11092
+ MCDataUtil as au,
11093
+ OCR_MODEL_PRECISION_ENUM_KEY as av,
11094
+ RuntimeAsyncTaskCoordinator as aw,
11095
+ RuntimeDependencyService as ax,
11096
+ RuntimeFieldRegistry as ay,
11097
+ RuntimeInstanceEventBus as az,
10528
11098
  bindFormulaCacheInvalidation as b,
11099
+ buildFieldStatusFromProfile as b0,
11100
+ getRowHandlersForFieldChange as b1,
11101
+ getInsertSubMenu as b2,
11102
+ resolveScanAdjustType as b3,
11103
+ resolveScanQty as b4,
11104
+ toDateOnly as b5,
11105
+ hasSubtableBusinessData as b6,
11106
+ getCopySubMenu as b7,
11107
+ resolveScanParsedValue as b8,
11108
+ isProductBatchEmptyRow as b9,
10529
11109
  currentParamsConfig as c,
10530
11110
  MULTI_SHEET_SCHEMA_VERSION as d,
10531
- createRuntimeDocumentV2 as e,
10532
- findFieldProfile as f,
10533
- getBusinessFieldKey as g,
10534
- normalizeHistoricalBusinessRow as h,
10535
- DeviceLinkTmplUtil as i,
10536
- normalizeAIOcrTmpl as j,
10537
- useWidgetStaticAttrs as k,
10538
- useRuntimeInstanceServices as l,
10539
- setSelectAnnotationId as m,
10540
- normalizeFieldWidth as n,
10541
- useRuntimeRowState as o,
10542
- getObjectBomMaterialLotQuery as p,
10543
- buildObjectLotExtraQuery as q,
10544
- resolveObjectFieldKeys as r,
11111
+ getBusinessFieldKey as e,
11112
+ createRuntimeDocumentV2 as f,
11113
+ getParseFormulaVarInfos as g,
11114
+ clampSealPosition as h,
11115
+ normalizeFieldWidth as i,
11116
+ findFieldProfile as j,
11117
+ normalizeHistoricalBusinessRow as k,
11118
+ DeviceLinkTmplUtil as l,
11119
+ normalizeAIOcrTmpl as m,
11120
+ normalizeSealDiameter as n,
11121
+ useWidgetStaticAttrs as o,
11122
+ useRuntimeInstanceServices as p,
11123
+ setSelectAnnotationId as q,
11124
+ useRuntimeRowState as r,
10545
11125
  setSelectValidatorId as s,
10546
- MaterialConsumptionPatternEnum as t,
11126
+ getObjectBomMaterialLotQuery as t,
10547
11127
  useFormTmplConfig as u,
10548
- validateObjectBomForScan as v,
10549
- resolveObjectBomEntry as w,
10550
- runWithFillProduct as x,
10551
- useNocodeFormWidget as y,
10552
- applyConsumeObjectTraceChange as z
11128
+ buildObjectLotExtraQuery as v,
11129
+ resolveObjectFieldKeys as w,
11130
+ MaterialConsumptionPatternEnum as x,
11131
+ validateObjectBomForScan as y,
11132
+ resolveObjectBomEntry as z
10553
11133
  };