@gct-paas/excel 0.1.39-beta.16 → 0.1.39-beta.18

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 (60) hide show
  1. package/dist/{BaseComponent-BukKy-Ta.js → BaseComponent-DlErT5t9.js} +1 -1
  2. package/dist/{barcode-design-CHZzFsEC.js → barcode-design-ejpO4TWN.js} +1 -1
  3. package/dist/base/index.es.js +198 -43
  4. package/dist/{diagonal-design-OOMfRYA4.js → diagonal-design-Bs9gWcVz.js} +1 -1
  5. package/dist/excel.css +7 -32
  6. package/dist/{exceljs.min-qTeeIg1c.js → exceljs.min-Cr5_l7GW.js} +1 -1
  7. package/dist/{font-editor-DxwZPPcW.js → font-editor-CpisAVLZ.js} +1 -1
  8. package/dist/{index-BDal31rR.js → index-265Zuy2Y.js} +1 -1
  9. package/dist/{index-xEEcgELT.js → index-50OBRcTM.js} +1 -1
  10. package/dist/{index-CiRn_aRr.js → index-9S_12I_m.js} +1 -1
  11. package/dist/{index-DNTr3TAQ.js → index-B0_PuKlp.js} +1 -1
  12. package/dist/{index-CuNImaHo.js → index-B9mMKdWV.js} +1 -1
  13. package/dist/{index-CBZ8lhDg.js → index-BDQQZex8.js} +1 -1
  14. package/dist/{index-BLfLEJTY.js → index-BDXjjYXb.js} +57 -139
  15. package/dist/{index-CzmRYqq8.js → index-BHmTVYqD.js} +3 -3
  16. package/dist/{index-CzQ0z_Gd.js → index-BK1OplGc.js} +1 -1
  17. package/dist/{index-BzWTFxln.js → index-BLFfeKcf.js} +1 -1
  18. package/dist/{index-CLE6hZJS.js → index-BO6dvJRn.js} +1 -1
  19. package/dist/{index-DP10nlTM.js → index-BQGtju-p.js} +1 -1
  20. package/dist/{index-Cis2UVwi.js → index-BaQfzPpW.js} +1 -1
  21. package/dist/{index-oPtrKoRH.js → index-BhRaNTnf.js} +1 -1
  22. package/dist/{index-HLHblia-.js → index-BkEEB8UX.js} +2 -2
  23. package/dist/{index-CKqMs7mS.js → index-Bq15nkZU.js} +1 -1
  24. package/dist/{index-ZYhlGCsX.js → index-CSinNyyL.js} +1 -1
  25. package/dist/{index-BAHY8J4O.js → index-CabjW1sn.js} +2 -2
  26. package/dist/{index-BEVwLj0C.js → index-DAxqwkuO.js} +1 -1
  27. package/dist/{index-DU9LUfhQ.js → index-DQhVTdNc.js} +1 -1
  28. package/dist/{index-Jq1d5kcw.js → index-Dg5modjI.js} +2 -2
  29. package/dist/{index-cd2rFLa1.js → index-UMo1va8T.js} +1 -1
  30. package/dist/{index-C2tzE0Pa.js → index-_y43fj3W.js} +2 -2
  31. package/dist/{index-BQ7NWxQc.js → index-em0rzOJO.js} +1 -1
  32. package/dist/index.es.js +1 -1
  33. package/dist/{pagination-design-CrHZBsDW.js → pagination-design-D_QjDeiL.js} +1 -1
  34. package/dist/paper-widget-design-BuH_G9AK.js +4 -0
  35. package/dist/{print-runtime-instance-Bvde5aY8.js → print-runtime-instance-BVl0QFuC.js} +1 -1
  36. package/dist/{print-snapshot-renderer-RSs6kMHp.js → print-snapshot-renderer-CwlqVc2E.js} +3 -3
  37. package/dist/{qrcode-design-CHT6_pT-.js → qrcode-design-DlAjNGZV.js} +1 -1
  38. package/dist/seal-design-CFxljXVw.js +4 -0
  39. package/dist/{single-field-drop-CpKHTM2p.js → single-field-drop-CILrDdkn.js} +1 -1
  40. package/dist/src/nocode-base/src/hooks/material-consume-object/object-validation-controller.d.ts +24 -0
  41. package/dist/src/online-form/src/views/render/__components__/_field_/trace/utils/use-rule-props.d.ts +0 -3
  42. package/dist/{sub-table-factory-DtG-HO2a.js → sub-table-factory-CGAWlYDu.js} +1 -1
  43. package/dist/{text-design-Yi24e6iF.js → text-design-DaLE4WYR.js} +1 -1
  44. package/dist/{trace-like-wrapper-DayZkwvZ.js → trace-like-wrapper-C4E9e2Je.js} +1 -1
  45. package/dist/{value-editor.vue_vue_type_style_index_0_lang-EiOW4b3N.js → value-editor.vue_vue_type_style_index_0_lang-C5hFF1Ud.js} +1 -1
  46. package/dist/{widget-barcode-BrN3dVIE.js → widget-barcode-D8sXBO3u.js} +2 -2
  47. package/dist/{widget-diagonal-DKD-DBzk.js → widget-diagonal-CoiPow-N.js} +2 -2
  48. package/dist/{widget-image-CgaOXQWN.js → widget-image-CkfwiupS.js} +1 -1
  49. package/dist/{widget-line-DMT-WUJa.js → widget-line-BHHhjt39.js} +1 -1
  50. package/dist/{widget-pagination-G1-plSoL.js → widget-pagination-2D_pMT3X.js} +2 -2
  51. package/dist/{widget-power-4broQpTr.js → widget-power-BWjDuOSj.js} +2 -2
  52. package/dist/{widget-qrcode-GQ83IJo5.js → widget-qrcode-DxARlp5Q.js} +2 -2
  53. package/dist/{widget-rangelimit-CoDlaJyU.js → widget-rangelimit-DUyFFT_x.js} +2 -2
  54. package/dist/{widget-serialnumber-CUYfiN4D.js → widget-serialnumber-CeQt5Nwg.js} +1 -1
  55. package/dist/{widget-text-BTh60jMy.js → widget-text-Ci9WHuOm.js} +3 -3
  56. package/dist/{widget-timediff-3Xg2As8I.js → widget-timediff-BNrCLWLE.js} +1 -1
  57. package/package.json +1 -1
  58. package/dist/paper-widget-design-CRwvgntz.js +0 -4
  59. package/dist/seal-design-O8r6naAH.js +0 -4
  60. package/dist/{dynamic-table-action-B-Tw4RYj.js → dynamic-table-action-BXNnUUIX.js} +144 -144
@@ -1,4 +1,4 @@
1
- import { n as normalizeFieldWidth } from "./dynamic-table-action-B-Tw4RYj.js";
1
+ import { n as normalizeFieldWidth } from "./dynamic-table-action-BXNnUUIX.js";
2
2
  import { get, pick } from "lodash-es";
3
3
  import { F as FIELD_TYPE } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-BmECtuSE.js";
4
4
  import { f as fontStyleAttrs } from "./config.enum-B8UZQTON.js";
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, ref, computed, watch, openBlock, createElementBlock, normalizeStyle, normalizeClass, createElementVNode, toDisplayString, createCommentVNode } from "vue";
2
2
  import { pick } from "lodash-es";
3
- import { u as useSpreadSheet, h as useModelFields, l as loadBwip } from "./index-BLfLEJTY.js";
3
+ import { u as useSpreadSheet, h as useModelFields, l as loadBwip } from "./index-BDXjjYXb.js";
4
4
  import { Q as PaperWidgeValueType, a8 as _export_sfc } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-BmECtuSE.js";
5
5
  import "dayjs";
6
6
  import "ant-design-vue";
@@ -1,12 +1,12 @@
1
1
  import { E as api, $ as PlatformEnum, F as FIELD_TYPE, bj as getRowId, bk as findRuntimeTableRow, b9 as RenderModeEnum, C as ComponentTypeEnum, bw as assembleRules, bx as isAttachFieldActive, aI as Dependency_ENUM, bl as calculateFormula, aH as ASSIGNMENTSTRATEGY_ENUM, R as getParseFormulaVarInfos, by as fetchHistoryConsume, bz as isBomGranted, aW as renderUtils, bv as uuid2, bA as parseFrontConfig, aL as CheckDsTypeEnum, aF as transformUtils, bB as baseDataUtils, bC as initializeSealFields, Y as FormTypeEnum, bD as normalizeToArray, bE as safeParseArray, bF as BpmnNodeTypeEnum, bG as mergeByMultiKey, a8 as _export_sfc, bH as evaluateInspectionDecisionRule, bI as areValidationCommentsEqual, bJ as useNocodeEmitter, bK as commonUtils, aJ as EntityModelCategoryEnum } from "../dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-BmECtuSE.js";
2
2
  import { aO, aQ, b0, a1, bL, bM, B, bN, y, ai, bO, bP, bQ, bi, bR, aT, ay, aP, aM, aN, bS, aj, an, bT, bU, aG, a3, ah, az, aR, a0, al, L, bV, bW, bX, O, p, P, aa, o, Q, A, bY, bZ, ax, aw, a6, a2, a4, a5, a7, f, b_, am, aq, ak, b$, c0, c1, c2, bh, c3, c4, c5, c6, c7, c8, c9, ca, cb, cc, bm, cd, ce, aZ, cf, b1, b2, cg, ch, ci, cj, ck, cl, cm, cn, co, cp, aY, cq, b3, bf, cr, cs, ct, ao, t, aS, cu, cv, bn, a_ } from "../dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-BmECtuSE.js";
3
- import { P as getRuntimeDataFieldId, z as parseRuntimeFieldPath, Q as buildRuntimeFieldPath, T as resolveRuntimeFieldProps, U as resolveRuntimeFieldState, V as getRuntimeDependencyOutputKey, W as isRowAddedInCurrentFormChange, o as MaterialConsumptionPatternEnum, X as MaterialConsumeTableController, Y as setFormulaParamsConfig, Z as normalizeRuntime, H as createRuntimeInstanceContext, R as RuntimeFormStateStore, $ as RuntimeSheetService, g as getBusinessFieldKey, a0 as validateObjectBomQtyOnSubmit, a1 as closeValidatorPopovers, a2 as enrichFormChangeRowDetails, N as NCB_PROVIDE, I as RuntimeInstanceRegistry, a3 as useMaterialBalance, a4 as collectFormChangeFieldLocations, a5 as nextFormChangeRowViewHistoryId } from "../dynamic-table-action-B-Tw4RYj.js";
4
- import { B as B2, a6 as a62, e, _, a7 as a72, L as L2, a8, O as O2, E, a9, aa as aa2, ab, ac, ad, M, a, ae, b, af, ag, ah as ah2, ai as ai2, aj as aj2, ak as ak2, al as al2, am as am2, w, an as an2, m, ao as ao2, c, ap, aq as aq2, ar, as, l, x, at, au, av, aw as aw2, f as f2, y as y2, d, ax as ax2, ay as ay2, az as az2, aA, aB, aC, p as p2, r, aD, q, j, aE, s, aF, C, F, u, t as t2, G, i, k, A as A2, h, v } from "../dynamic-table-action-B-Tw4RYj.js";
3
+ import { P as getRuntimeDataFieldId, z as parseRuntimeFieldPath, Q as buildRuntimeFieldPath, T as resolveRuntimeFieldProps, U as resolveRuntimeFieldState, V as getRuntimeDependencyOutputKey, W as isRowAddedInCurrentFormChange, o as MaterialConsumptionPatternEnum, X as MaterialConsumeTableController, Y as setFormulaParamsConfig, Z as normalizeRuntime, H as createRuntimeInstanceContext, R as RuntimeFormStateStore, $ as RuntimeSheetService, g as getBusinessFieldKey, a0 as validateObjectBomQtyOnSubmit, a1 as closeValidatorPopovers, a2 as enrichFormChangeRowDetails, N as NCB_PROVIDE, I as RuntimeInstanceRegistry, a3 as useMaterialBalance, a4 as collectFormChangeFieldLocations, a5 as nextFormChangeRowViewHistoryId } from "../dynamic-table-action-BXNnUUIX.js";
4
+ import { B as B2, a6 as a62, e, _, a7 as a72, L as L2, a8, O as O2, E, a9, aa as aa2, ab, ac, ad, M, a, ae, b, af, ag, ah as ah2, ai as ai2, aj as aj2, ak as ak2, al as al2, am as am2, w, an as an2, m, ao as ao2, c, ap, aq as aq2, ar, as, l, x, at, au, av, aw as aw2, f as f2, y as y2, d, ax as ax2, ay as ay2, az as az2, aA, aB, aC, p as p2, r, aD, q, j, aE, s, aF, C, F, u, t as t2, G, i, k, A as A2, h, v } from "../dynamic-table-action-BXNnUUIX.js";
5
5
  import { toRaw, watch, toRef, computed, defineComponent, openBlock, createElementBlock, createElementVNode, toDisplayString, ref, provide, onUnmounted, markRaw, reactive, onBeforeUnmount } from "vue";
6
6
  import { cloneDeep, defaults, isEmpty, merge } from "lodash-es";
7
7
  import "dayjs";
8
- import { S as SubTableCoreFactory, R as RuntimeInstanceController } from "../sub-table-factory-DtG-HO2a.js";
9
- import { A as A3, D, M as M2, a as a10, P as P2, b as b4, c as c10, d as d2, e as e2, W, f as f3, g, h as h2 } from "../sub-table-factory-DtG-HO2a.js";
8
+ import { S as SubTableCoreFactory, R as RuntimeInstanceController } from "../sub-table-factory-CGAWlYDu.js";
9
+ import { A as A3, D, M as M2, a as a10, P as P2, b as b4, c as c10, d as d2, e as e2, W, f as f3, g, h as h2 } from "../sub-table-factory-CGAWlYDu.js";
10
10
  import { B as B3, F as F2, M as M3, a as a11, u as u2 } from "../mb-render-DjXYXimz.js";
11
11
  const InstanceStatusValues = {
12
12
  /** 作废状态 */
@@ -2047,6 +2047,139 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2047
2047
  }
2048
2048
  });
2049
2049
  const InspectionDecisionPromptModal = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-9c14035f"]]);
2050
+ function createMaterialConsumeObjectValidation(options) {
2051
+ const { record, getInfo, isCurrent, shouldSkip, applyComments } = options;
2052
+ let enabled = false;
2053
+ let disposed = false;
2054
+ let submitting = 0;
2055
+ let generation = 0;
2056
+ let lastRevision = -1;
2057
+ let timer;
2058
+ let paths = /* @__PURE__ */ new Set();
2059
+ const unlocated = /* @__PURE__ */ new Set();
2060
+ const alive = () => !disposed && isCurrent();
2061
+ function cancelLive() {
2062
+ generation++;
2063
+ if (timer !== void 0) clearTimeout(timer);
2064
+ timer = void 0;
2065
+ }
2066
+ function calcObjectError(error) {
2067
+ const info = getInfo();
2068
+ const modelKey = info?.modelKey || record.context.businessIndex.modelDisplay.key;
2069
+ const descriptor = record.fields.findField({ modelKey, fieldId: error.field });
2070
+ const props = descriptor?.widget?.props;
2071
+ if (!props?.field || descriptor?.subFieldKey || props.subFieldKey) {
2072
+ const key = modelKey + "." + error.field;
2073
+ if (!unlocated.has(key)) {
2074
+ unlocated.add(key);
2075
+ console.warn("物料消耗对象错误未定位到主表控件,保留在校验清单:", key);
2076
+ }
2077
+ return { error, path: void 0 };
2078
+ }
2079
+ const path = buildRuntimeFieldPath({
2080
+ ...props,
2081
+ modelKey: props.modelKey ?? info?.modelKey,
2082
+ fieldId: props.field
2083
+ });
2084
+ return { error: { ...error, field: path }, path };
2085
+ }
2086
+ function replaceObjectFields(fields) {
2087
+ if (!alive()) return;
2088
+ const next = { ...getInfo()?.mcValidatorMessageMap ?? {} };
2089
+ paths.forEach((path) => delete next[path]);
2090
+ Object.assign(next, fields);
2091
+ paths = new Set(Object.keys(fields));
2092
+ applyComments(next);
2093
+ }
2094
+ function replaceTableFields(fields) {
2095
+ if (!alive()) return;
2096
+ const current = getInfo()?.mcValidatorMessageMap ?? {};
2097
+ const next = { ...fields ?? {} };
2098
+ paths.forEach((path) => {
2099
+ if (current[path]) {
2100
+ next[path] = [...next[path] ?? [], ...current[path]];
2101
+ }
2102
+ });
2103
+ applyComments(next);
2104
+ }
2105
+ function clear() {
2106
+ cancelLive();
2107
+ enabled = false;
2108
+ lastRevision = -1;
2109
+ replaceObjectFields({});
2110
+ }
2111
+ async function validate(live = false) {
2112
+ cancelLive();
2113
+ if (!alive()) return;
2114
+ if (shouldSkip()) {
2115
+ clear();
2116
+ return { isValid: true };
2117
+ }
2118
+ const ticket = generation;
2119
+ const revision = record.formState.revision;
2120
+ const info = getInfo();
2121
+ const display = record.context.businessIndex.modelDisplay;
2122
+ const errors = await validateObjectBomQtyOnSubmit({
2123
+ formState: record.formState.state,
2124
+ objectFieldList: record.context.formConfig.objectFieldList,
2125
+ formInstBom: record.context.services.tmplBomController?.formInstBom,
2126
+ showModelName: display.name,
2127
+ showModelKey: display.key || info?.modelKey || ""
2128
+ });
2129
+ if (!alive() || generation !== ticket || record.formState.revision !== revision || live && getInfo()?.renderModeType !== RenderModeEnum.FormMode)
2130
+ return;
2131
+ const fields = {};
2132
+ const comments = {};
2133
+ for (const source of errors) {
2134
+ const adapted = calcObjectError(source);
2135
+ (fields[adapted.error.field] ??= []).push(adapted.error);
2136
+ if (adapted.path) (comments[adapted.path] ??= []).push(adapted.error);
2137
+ }
2138
+ enabled = !!record.context.formConfig.objectFieldList?.length;
2139
+ lastRevision = revision;
2140
+ replaceObjectFields(comments);
2141
+ return { isValid: !errors.length, fields: Object.keys(fields).length ? fields : void 0 };
2142
+ }
2143
+ function requestLive() {
2144
+ cancelLive();
2145
+ if (!alive() || !enabled || submitting > 0 || getInfo()?.renderModeType !== RenderModeEnum.FormMode)
2146
+ return;
2147
+ const ticket = generation;
2148
+ timer = setTimeout(() => {
2149
+ timer = void 0;
2150
+ void (async () => {
2151
+ await record.controller?.waitUntilPrepared();
2152
+ await record.asyncTasks.waitForRequired();
2153
+ if (!alive() || generation !== ticket || submitting > 0 || getInfo()?.renderModeType !== RenderModeEnum.FormMode)
2154
+ return;
2155
+ await validate(true);
2156
+ })().catch((error) => {
2157
+ if (alive()) console.error("物料消耗对象实时校验失败", error);
2158
+ });
2159
+ }, 300);
2160
+ }
2161
+ return {
2162
+ validate,
2163
+ requestLive,
2164
+ replaceTableFields,
2165
+ clear,
2166
+ beginSubmit() {
2167
+ submitting++;
2168
+ cancelLive();
2169
+ },
2170
+ endSubmit() {
2171
+ submitting--;
2172
+ if (alive() && submitting === 0 && enabled && lastRevision !== record.formState.revision)
2173
+ requestLive();
2174
+ },
2175
+ dispose() {
2176
+ disposed = true;
2177
+ cancelLive();
2178
+ paths.clear();
2179
+ unlocated.clear();
2180
+ }
2181
+ };
2182
+ }
2050
2183
  function applyValidationComments(info, comments, kind) {
2051
2184
  if (!info) return;
2052
2185
  const locationKey = kind === "field" ? "validatorLocationList" : "mcValidatorLocationList";
@@ -2064,6 +2197,29 @@ function applyValidationComments(info, comments, kind) {
2064
2197
  info[messageKey] = map;
2065
2198
  }
2066
2199
  function createRuntimeValidationBinding(runtimeRegistry, getInfo, platformType) {
2200
+ const objectValidations = /* @__PURE__ */ new WeakMap();
2201
+ function getObjectValidation(record) {
2202
+ const existing = objectValidations.get(record);
2203
+ if (existing) return existing;
2204
+ const uniqueId = record.context.uniqueId;
2205
+ const validation = createMaterialConsumeObjectValidation({
2206
+ record,
2207
+ getInfo: () => getInfo(uniqueId),
2208
+ isCurrent: () => runtimeRegistry.get(uniqueId) === record,
2209
+ shouldSkip: () => {
2210
+ const skip = syncInspectionDecisionRule(uniqueId);
2211
+ if (skip) clearInspectionValidationState(uniqueId);
2212
+ return skip;
2213
+ },
2214
+ applyComments: (fields) => applyValidationComments(getInfo(uniqueId), fields, "material")
2215
+ });
2216
+ objectValidations.set(record, validation);
2217
+ runtimeRegistry.registerDisposable(uniqueId, () => {
2218
+ validation.dispose();
2219
+ objectValidations.delete(record);
2220
+ });
2221
+ return validation;
2222
+ }
2067
2223
  const inspectionDecisionMatched = /* @__PURE__ */ new WeakMap();
2068
2224
  const inspectionDecisionPrompting = /* @__PURE__ */ new WeakSet();
2069
2225
  function openInspectionDecisionPrompt(uniqueId, content) {
@@ -2104,11 +2260,14 @@ function createRuntimeValidationBinding(runtimeRegistry, getInfo, platformType)
2104
2260
  return matched;
2105
2261
  }
2106
2262
  function clearInspectionValidationState(uniqueId) {
2263
+ const record = runtimeRegistry.get(uniqueId);
2264
+ if (record) objectValidations.get(record)?.clear();
2107
2265
  applyValidationComments(getInfo(uniqueId), null, "field");
2108
2266
  applyValidationComments(getInfo(uniqueId), null, "material");
2109
2267
  }
2110
2268
  function bindFormValidationSync(uniqueId) {
2111
2269
  const record = runtimeRegistry.require(uniqueId);
2270
+ const objects = getObjectValidation(record);
2112
2271
  syncInspectionDecisionRule(uniqueId);
2113
2272
  const stop = record.formState.subscribe(() => {
2114
2273
  if (runtimeRegistry.get(uniqueId) !== record) return;
@@ -2119,6 +2278,7 @@ function createRuntimeValidationBinding(runtimeRegistry, getInfo, platformType)
2119
2278
  uniqueId,
2120
2279
  !suppressed && info.renderModeType === RenderModeEnum.FormMode
2121
2280
  );
2281
+ objects.requestLive();
2122
2282
  if (suppressed) return;
2123
2283
  if (info.renderModeType === RenderModeEnum.FormMode) {
2124
2284
  record.validation.requestLive("change");
@@ -2151,48 +2311,43 @@ function createRuntimeValidationBinding(runtimeRegistry, getInfo, platformType)
2151
2311
  }
2152
2312
  async function runSubmissionValidation(uniqueId) {
2153
2313
  const record = runtimeRegistry.require(uniqueId);
2154
- const formState = record.formState.state;
2155
- const bomC = record.context.services.tmplBomController;
2156
- if (syncInspectionDecisionRule(uniqueId)) {
2157
- clearInspectionValidationState(uniqueId);
2158
- return { isValid: true };
2159
- }
2160
- const res = await record.validation.validate();
2161
- if (!res || runtimeRegistry.get(uniqueId) !== record) return;
2162
- const revision = record.formState.revision;
2163
- if (bomC) {
2164
- const bomRes = await bomC.submitValidate();
2165
- if (runtimeRegistry.get(uniqueId) !== record || record.formState.revision !== revision)
2166
- return;
2167
- applyValidationComments(getInfo(uniqueId), bomRes.fields ?? null, "material");
2168
- if (!bomRes.isValid) {
2169
- merge(res, bomRes);
2170
- return res;
2314
+ const objects = getObjectValidation(record);
2315
+ objects.beginSubmit();
2316
+ try {
2317
+ if (syncInspectionDecisionRule(uniqueId)) {
2318
+ clearInspectionValidationState(uniqueId);
2319
+ return { isValid: true };
2171
2320
  }
2172
- const info = getInfo(uniqueId);
2173
- const display = record.context.businessIndex.modelDisplay;
2174
- display.name;
2175
- const showModelKey = display.key || info?.modelKey || "";
2176
- const objErrs = await validateObjectBomQtyOnSubmit({
2177
- formState: formState ?? {},
2178
- objectFieldList: record.context.formConfig.objectFieldList,
2179
- formInstBom: bomC.formInstBom,
2180
- showModelKey
2181
- });
2182
- if (runtimeRegistry.get(uniqueId) !== record || record.formState.revision !== revision)
2183
- return;
2184
- if (objErrs.length) {
2185
- const fields = {};
2186
- objErrs.forEach((e3) => {
2187
- (fields[e3.field] ??= []).push(e3);
2188
- });
2189
- const objectBomRes = { isValid: false, fields };
2190
- merge(res, objectBomRes);
2191
- applyValidationComments(info, { ...info?.validatorMessageMap ?? {}, ...fields }, "field");
2192
- return res;
2321
+ const res = await record.validation.validate();
2322
+ if (!res || runtimeRegistry.get(uniqueId) !== record) return;
2323
+ const revision = record.formState.revision;
2324
+ const bomC = record.context.services.tmplBomController;
2325
+ if (bomC) {
2326
+ const bomRes = await bomC.submitValidate();
2327
+ if (runtimeRegistry.get(uniqueId) !== record || record.formState.revision !== revision)
2328
+ return;
2329
+ objects.replaceTableFields(bomRes.fields);
2330
+ if (!bomRes.isValid) {
2331
+ merge(res, bomRes);
2332
+ return res;
2333
+ }
2334
+ const objectRes = await objects.validate();
2335
+ if (!objectRes || runtimeRegistry.get(uniqueId) !== record || record.formState.revision !== revision)
2336
+ return;
2337
+ if (!objectRes.isValid) {
2338
+ const fields = { ...res.fields ?? {} };
2339
+ for (const [path, errors] of Object.entries(objectRes.fields ?? {})) {
2340
+ fields[path] = [...fields[path] ?? [], ...errors];
2341
+ }
2342
+ return { ...res, isValid: false, fields };
2343
+ }
2344
+ } else {
2345
+ objects.clear();
2193
2346
  }
2347
+ return res;
2348
+ } finally {
2349
+ objects.endSubmit();
2194
2350
  }
2195
- return res;
2196
2351
  }
2197
2352
  function updateRenderModeType(uniqueId, mode, updateButton = false) {
2198
2353
  const record = runtimeRegistry.require(uniqueId);
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, computed, openBlock, createBlock } from "vue";
2
- import { h as useModelFields, D as Diagonal } from "./index-BLfLEJTY.js";
2
+ import { h as useModelFields, D as Diagonal } from "./index-BDXjjYXb.js";
3
3
  import { ao as resolveDiagonalVertex, a8 as _export_sfc } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-BmECtuSE.js";
4
4
  import "lodash-es";
5
5
  import "dayjs";
package/dist/excel.css CHANGED
@@ -22388,32 +22388,7 @@ svg[data-v-9a7c8184] {
22388
22388
  .base-vxe-search-form-container .ant-input-affix-wrapper[data-v-b48ca019] .ant-input {
22389
22389
  background: #f6f8fa;
22390
22390
  }
22391
- .parse-select__dropdown-icon[data-v-a5fb261e],
22392
- .parse-select__scan-icon[data-v-a5fb261e],
22393
- .parse-select__switch-icon[data-v-a5fb261e] {
22394
- display: none;
22395
- }
22396
- .parse-select__switch-icon[data-v-a5fb261e] {
22397
- color: #026ac8;
22398
- cursor: pointer;
22399
- }
22400
- .parse-select--scan .parse-select__scan-icon[data-v-a5fb261e] {
22401
- display: block;
22402
- }
22403
- .parse-select--dropdown .parse-select__dropdown-icon[data-v-a5fb261e] {
22404
- display: block;
22405
- }
22406
- .parse-select--allow-switch[data-v-a5fb261e] .ant-select-arrow {
22407
- pointer-events: auto;
22408
- }
22409
- .parse-select--allow-switch[data-v-a5fb261e] .ant-select-arrow:hover .parse-select__scan-icon,
22410
- .parse-select--allow-switch[data-v-a5fb261e] .ant-select-arrow:hover .parse-select__dropdown-icon {
22411
- display: none;
22412
- }
22413
- .parse-select--allow-switch[data-v-a5fb261e] .ant-select-arrow:hover .parse-select__switch-icon {
22414
- display: flex;
22415
- }
22416
- .cell-trace-tree-select[data-v-692ed2d7] .ant-select-selection-search {
22391
+ .cell-trace-tree-select[data-v-f00b4ba0] .ant-select-selection-search {
22417
22392
  z-index: 1;
22418
22393
  }
22419
22394
  .gct-edhr-sop-simple-popover {
@@ -22908,7 +22883,7 @@ svg[data-v-9a7c8184] {
22908
22883
  margin-top: 4px;
22909
22884
  padding-top: 4px;
22910
22885
  }
22911
- .search-more[data-v-c752697f] {
22886
+ .search-more[data-v-8b3e2bc3] {
22912
22887
  display: flex;
22913
22888
  align-items: center;
22914
22889
  justify-content: center;
@@ -22919,22 +22894,22 @@ svg[data-v-9a7c8184] {
22919
22894
  font-size: 14px;
22920
22895
  line-height: 24px;
22921
22896
  }
22922
- .trace-device__dropdown[data-v-c752697f] {
22897
+ .trace-device__dropdown[data-v-8b3e2bc3] {
22923
22898
  height: 568px;
22924
22899
  padding: 6px 10px;
22925
22900
  }
22926
- .trace-device__search-form[data-v-c752697f] {
22901
+ .trace-device__search-form[data-v-8b3e2bc3] {
22927
22902
  height: 44px;
22928
22903
  }
22929
- .trace-device__search-form[data-v-c752697f] .ant-select-selector {
22904
+ .trace-device__search-form[data-v-8b3e2bc3] .ant-select-selector {
22930
22905
  width: 259px;
22931
22906
  }
22932
- .trace-device__search-form .ant-input-affix-wrapper[data-v-c752697f] {
22907
+ .trace-device__search-form .ant-input-affix-wrapper[data-v-8b3e2bc3] {
22933
22908
  height: 32px;
22934
22909
  border: none;
22935
22910
  background: #f6f8fa;
22936
22911
  }
22937
- .trace-device__search-form .ant-input-affix-wrapper[data-v-c752697f] .ant-input {
22912
+ .trace-device__search-form .ant-input-affix-wrapper[data-v-8b3e2bc3] .ant-input {
22938
22913
  background: #f6f8fa;
22939
22914
  }
22940
22915
  .content-highlight[data-v-b59a242d]::after {
@@ -1,5 +1,5 @@
1
1
  import { M as commonjsGlobal, N as getDefaultExportFromCjs } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-BmECtuSE.js";
2
- import { c as commonjsRequire } from "./index-BLfLEJTY.js";
2
+ import { c as commonjsRequire } from "./index-BDXjjYXb.js";
3
3
  function _mergeNamespaces(n, m) {
4
4
  for (var i = 0; i < m.length; i++) {
5
5
  const e = m[i];
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, resolveComponent, openBlock, createElementBlock, createElementVNode, createVNode, unref, normalizeClass, withCtx, normalizeStyle } from "vue";
2
2
  import { A as AlignEditor } from "./align-editor-wPpZ_4zH.js";
3
3
  import { pick } from "lodash-es";
4
- import { z as _sfc_main$1, C as ColorPicker } from "./index-BLfLEJTY.js";
4
+ import { z as _sfc_main$1, C as ColorPicker } from "./index-BDXjjYXb.js";
5
5
  import { a8 as _export_sfc } from "./dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-BmECtuSE.js";
6
6
  const _hoisted_1 = { class: "ks-row-middle mb-6px" };
7
7
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -4,7 +4,7 @@ import "vue";
4
4
  import { pick } from "lodash-es";
5
5
  import "dayjs";
6
6
  import "ant-design-vue";
7
- import { n as normalizeSpacerWidth, g as getFieldWidget } from "./index-BLfLEJTY.js";
7
+ import { n as normalizeSpacerWidth, g as getFieldWidget } from "./index-BDXjjYXb.js";
8
8
  class CombineFields {
9
9
  component = ComponentTypeEnum.CombineFields;
10
10
  wrapperCmpConfig({ data }) {
@@ -3,7 +3,7 @@ import "vue";
3
3
  import { pick, has, isEmpty, cloneDeep, get } from "lodash-es";
4
4
  import "dayjs";
5
5
  import "ant-design-vue";
6
- import { A as AsyncGctOnlineComponents } from "./index-BLfLEJTY.js";
6
+ import { A as AsyncGctOnlineComponents } from "./index-BDXjjYXb.js";
7
7
  class Tr {
8
8
  component = "tr";
9
9
  wrapperCmpConfig({ data, parent }) {
@@ -3,7 +3,7 @@ import { C as ComponentTypeEnum, b0 as BindCmpStyleEnum } from "./dynamic-table-
3
3
  import "vue";
4
4
  import "dayjs";
5
5
  import "ant-design-vue";
6
- import { B as BaseComponent } from "./BaseComponent-BukKy-Ta.js";
6
+ import { B as BaseComponent } from "./BaseComponent-DlErT5t9.js";
7
7
  class Textarea extends BaseComponent {
8
8
  component = ComponentTypeEnum.Textarea;
9
9
  wrapperCmpConfig({ data }) {
@@ -3,7 +3,7 @@ import { C as ComponentTypeEnum, O as Orientation, a1 as BooleanShowMode, a0 as
3
3
  import "vue";
4
4
  import "dayjs";
5
5
  import "ant-design-vue";
6
- import { B as BaseComponent } from "./BaseComponent-BukKy-Ta.js";
6
+ import { B as BaseComponent } from "./BaseComponent-DlErT5t9.js";
7
7
  class DynValue extends BaseComponent {
8
8
  component = ComponentTypeEnum.DynValue;
9
9
  wrapperCmpConfig({ data }) {
@@ -3,7 +3,7 @@ import { C as ComponentTypeEnum } from "./dynamic-table-action.vue_vue_type_styl
3
3
  import "vue";
4
4
  import "dayjs";
5
5
  import "ant-design-vue";
6
- import { B as BaseComponent } from "./BaseComponent-BukKy-Ta.js";
6
+ import { B as BaseComponent } from "./BaseComponent-DlErT5t9.js";
7
7
  class Userpicker extends BaseComponent {
8
8
  component = ComponentTypeEnum.Userpicker;
9
9
  wrapperCmpConfig({ data }) {
@@ -3,7 +3,7 @@ import { C as ComponentTypeEnum, ay as DecimalDisplayMode, ax as RangeCompareOp,
3
3
  import "vue";
4
4
  import "dayjs";
5
5
  import "ant-design-vue";
6
- import { B as BaseComponent } from "./BaseComponent-BukKy-Ta.js";
6
+ import { B as BaseComponent } from "./BaseComponent-DlErT5t9.js";
7
7
  class InputDouble extends BaseComponent {
8
8
  component = ComponentTypeEnum.InputDouble;
9
9
  wrapperCmpConfig({ data }) {