@gct-paas/excel 0.1.40-beta.1 → 0.1.40-beta.11
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.
- package/dist/{BaseComponent-DXIDs5gk.js → BaseComponent-gj20uBnJ.js} +2 -2
- package/dist/{VueVideoPlayer-DhyIm-g1.js → VueVideoPlayer-BeylL5J6.js} +2 -2
- package/dist/{align-editor-BcbgVXRp.js → align-editor-r0dHXFka.js} +1 -1
- package/dist/{barcode-design-BiCt0aS7.js → barcode-design-CYvf_EAE.js} +2 -2
- package/dist/base/index.es.js +665 -264
- package/dist/{diagonal-design-DmvWALIE.js → diagonal-design-oDhnFV7y.js} +2 -2
- package/dist/{dynamic-table-action-fDIIzS2J.js → dynamic-table-action-DQwZUD0_.js} +458 -292
- package/dist/{dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-DhWpxyhm.js → dynamic-table-action.vue_vue_type_style_index_0_scoped_53d7e66c_lang-8yB6zly8.js} +1037 -692
- package/dist/{edit.utils-CXmmCnxE-DxArFSxZ.js → edit.utils-CXmmCnxE-Cu6obgSA.js} +1 -1
- package/dist/excel.css +3304 -4069
- package/dist/{exceljs.min-CjKNZPlo.js → exceljs.min-Cw2hDE6L.js} +2 -2
- package/dist/{font-editor-DseGyVgB.js → font-editor-B_0EZdyd.js} +3 -3
- package/dist/{image-design-Dr-L9AdG.js → image-design-FDLY6DFg.js} +2 -2
- package/dist/{index-B34ZIwqL.js → index-4cLi3g2p.js} +6 -3
- package/dist/{index-B29_mID7.js → index-73QPpTaL.js} +3 -3
- package/dist/{index-C6dFliaf.js → index-7u6Pmaax.js} +1 -1
- package/dist/{index-0W-MEvEf.js → index-B2bvlNJo.js} +2 -2
- package/dist/{index-DKf57IGi.js → index-BCsDTwbK.js} +1 -1
- package/dist/{index-DcjOJuDw.js → index-BZd3wYPr.js} +2 -2
- package/dist/{index-BdJ4ouEl.js → index-BdFPuj12.js} +1 -1
- package/dist/{index-BjI7JCne.js → index-Bh8Vsmje.js} +6 -5
- package/dist/{index-iRameN0x.js → index-BtTM4eCk.js} +2 -2
- package/dist/{index-C4tVTc9U.js → index-BuAaPDLl.js} +2 -2
- package/dist/{index-CAdGL3Vp.js → index-C0TsnxJJ.js} +2 -2
- package/dist/{index-CX_eR36M.js → index-C1EtpaAY.js} +2 -2
- package/dist/{index-CXh-4yX8.js → index-C4ZaFHIk.js} +3 -3
- package/dist/{index-Nytm1-X9.js → index-CFVecFFb.js} +53 -5
- package/dist/{index-r4MF8_-h.js → index-CQTRWLPa.js} +2 -2
- package/dist/{index-CewKz2Ro.js → index-CRIhEnfm.js} +1 -1
- package/dist/{index-CJ9CrORT.js → index-CdKmjzHb.js} +6 -5
- package/dist/{index-DNC5VG8P.js → index-Cg1LuaLW.js} +2 -2
- package/dist/{index-BY7RGawr.js → index-CiCgngBb.js} +2 -2
- package/dist/{index-JkPJqZ_5.js → index-CxcaWxbW.js} +2 -2
- package/dist/{index-BctQMMgh.js → index-D1QJAMGR.js} +2 -2
- package/dist/{index-lwjRRvDn.js → index-D3xW5qOp.js} +2 -2
- package/dist/{index-C8OPhJhI.js → index-DEHsGK91.js} +1 -1
- package/dist/{index-DKRpaNo1.js → index-DGODLCja.js} +1 -1
- package/dist/{index-DsCTXMxB.js → index-DJiuJgNx.js} +1 -1
- package/dist/{index-DrmR7WIs.js → index-DOmpZ2Vn.js} +2 -2
- package/dist/{index-CEmRRPE7.js → index-DcjvPNF5.js} +2 -2
- package/dist/{index-BxZ3M7eP.js → index-DgLLlaiF.js} +1 -1
- package/dist/{index-4acBM2Lp.js → index-Dyfxs8FQ.js} +2 -2
- package/dist/{index-BPgCZjqV.js → index-Go0PUrqy.js} +1 -1
- package/dist/{index-hcCJUBne.js → index-KxrgWfEL.js} +1 -1
- package/dist/{index-CScWLXnC.js → index-Z9jq6KeM.js} +2 -2
- package/dist/{index-D5IrgJyh.js → index-ZJQMS_Ik.js} +2 -2
- package/dist/{index-C70T1sVm.js → index-xJJRBQFw.js} +20225 -22256
- package/dist/{index-DqLVW6ej.js → index-xeRTb7EG.js} +3 -3
- package/dist/index.es.js +12 -10
- package/dist/{mb-render-BdRsSczc.js → mb-render-_IUbyYCY.js} +9 -3
- package/dist/{online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-D32c_U8J.js → online-form-model-select.vue_vue_type_script_setup_true_name_online-form-model-select_lang-CnQiVFDN.js} +8 -1
- package/dist/{pagination-design-9Z_iRIKM.js → pagination-design-BpXq_uV5.js} +2 -2
- package/dist/paper-widget-design-CSOyFSja.js +4 -0
- package/dist/{print-runtime-instance-BBOww4jg.js → print-runtime-instance-MOb76qZn.js} +1 -1
- package/dist/{print-snapshot-renderer-DGt44saz.js → print-snapshot-renderer-oKcwQUgc.js} +3 -3
- package/dist/{qrcode-design-qbUjPX-B.js → qrcode-design-CkkXDXcD.js} +1 -1
- package/dist/{revo-grid.entry-RzymRzb0.js → revo-grid.entry-BZADj2ve.js} +1 -1
- package/dist/{revogr-attribution_7.entry-CxTEXm8Q.js → revogr-attribution_7.entry-DbQASE7d.js} +3 -3
- package/dist/{revogr-clipboard_3.entry-DQEid83u.js → revogr-clipboard_3.entry-BUDhUelS.js} +2 -2
- package/dist/{revogr-data_4.entry-ASovYZWH.js → revogr-data_4.entry-0V57Lz9p.js} +2 -2
- package/dist/{revogr-filter-panel.entry-j_V74kgz.js → revogr-filter-panel.entry-BJEYteeW.js} +1 -1
- package/dist/seal-design-BMrCPheX.js +4 -0
- package/dist/{serialnumber-design-DXKTYOY7.js → serialnumber-design-BbjW4gnZ.js} +1 -1
- package/dist/shared/index.es.js +26 -24
- package/dist/{single-field-drop-CLjaHjL-.js → single-field-drop-DBjHYyMO.js} +2 -2
- package/dist/{size-editor-C62H_eRP.js → size-editor-CcYZKUn5.js} +1 -1
- package/dist/src/domain/document-business/business/product-release/profile.d.ts +2 -0
- package/dist/src/domain/document-business/business/product-release/service.d.ts +2 -0
- package/dist/src/domain/document-business/index.d.ts +2 -0
- package/dist/src/domain/document-business/registry.d.ts +2 -0
- package/dist/src/domain/document-business/runtime/field-query-runtime.d.ts +4 -0
- package/dist/src/domain/document-business/types.d.ts +24 -0
- package/dist/src/domain/field/number/product-release-qty-manifest.d.ts +2 -0
- package/dist/src/domain/field/query-filter.d.ts +15 -0
- package/dist/src/domain/table/business/material/material-balance/profile/fields.d.ts +2 -0
- package/dist/src/domain/table/business/material/material-consume/profile/fields.d.ts +2 -0
- package/dist/src/domain/table/business/material/material-substitution/profile/field-keys.d.ts +25 -10
- package/dist/src/domain/table/business/material/material-substitution/runtime/select-loaders.d.ts +8 -0
- package/dist/src/domain/table/business/preprocess/pretreatment-list/profile/field-keys.d.ts +1 -7
- package/dist/src/domain/table/business/sterilize/entrust-steril-batch-list/profile/fields.d.ts +2 -0
- package/dist/src/domain/table/business/warehouse/shared/autofill-source-labels.d.ts +19 -0
- package/dist/src/domain/table/design/autofill-expander.d.ts +2 -0
- package/dist/src/domain/table/design/hooks/on-field-attach.d.ts +6 -0
- package/dist/src/domain/table/index.d.ts +1 -1
- package/dist/src/domain/table/types.d.ts +2 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/nocode-base/src/core/sub-table/allocate-table-core.d.ts +2 -1
- package/dist/src/nocode-base/src/core/sub-table/pretreatment-list-table-core.d.ts +1 -0
- package/dist/src/nocode-base/src/core/sub-table/profile-driven-sub-table-core.d.ts +3 -3
- package/dist/src/nocode-base/src/core/sub-table/sub-table-core.d.ts +2 -1
- package/dist/src/nocode-base/src/hooks/form-model/form-model-controller.d.ts +2 -0
- package/dist/src/nocode-base/src/hooks/formula-params-cache.d.ts +15 -0
- package/dist/src/nocode-base/src/hooks/inspection-module-qty.d.ts +4 -0
- package/dist/src/nocode-base/src/hooks/material-consume/material-consume-table-controller.d.ts +1 -0
- package/dist/src/nocode-base/src/hooks/material-consume/tmpl-bom-controller.d.ts +12 -7
- package/dist/src/nocode-base/src/hooks/material-consume-object/bom-validator.d.ts +4 -3
- package/dist/src/nocode-base/src/hooks/material-consume-object/initialize-autofill.d.ts +17 -0
- package/dist/src/nocode-base/src/hooks/material-consume-object/object-validation-controller.d.ts +24 -0
- package/dist/src/nocode-base/src/hooks/render-page/initialize-runtime.d.ts +3 -7
- package/dist/src/nocode-base/src/hooks/render-page/sterilization-date.d.ts +3 -0
- package/dist/src/nocode-base/src/hooks/render-page/types.d.ts +4 -1
- package/dist/src/nocode-base/src/hooks/useCalcFunction.d.ts +8 -2
- package/dist/src/nocode-base/src/hooks/useRenderPageFactory.d.ts +7 -6
- package/dist/src/nocode-base/src/hooks/validation/createValidateFactory.d.ts +1 -0
- package/dist/src/nocode-base/src/interface/ref-loader.d.ts +12 -1
- package/dist/src/nocode-base/src/interface/render.d.ts +3 -1
- package/dist/src/nocode-base/src/interface/transform.d.ts +9 -1
- package/dist/src/nocode-base/src/runtime/async-task-coordinator.d.ts +6 -2
- package/dist/src/nocode-base/src/runtime/multi-sheet-runtime.d.ts +2 -0
- package/dist/src/nocode-base/src/runtime/runtime-field-initializer.d.ts +2 -1
- package/dist/src/nocode-base/src/runtime/runtime-validation-service.d.ts +1 -0
- package/dist/src/nocode-base/src/types/common/base.d.ts +2 -0
- package/dist/src/nocode-base/src/types/render/mc-render.d.ts +1 -1
- package/dist/src/nocode-base/src/types/render/sub-table-render.d.ts +5 -1
- package/dist/src/nocode-web-render/src/render/sub-table/common/inventory-scan-columns.d.ts +6 -0
- package/dist/src/nocode-web-render/src/render/sub-table/material-consume/mc-web-render.d.ts +1 -1
- package/dist/src/online-form/src/views/__cell_widgets__/cell-widget-design.vue.d.ts +1 -0
- package/dist/src/online-form/src/views/__cell_widgets__/common/display-fields-editor/display-fields.util.d.ts +2 -2
- package/dist/src/online-form/src/views/__cell_widgets__/fake-field/fake-option-select.vue.d.ts +1 -0
- package/dist/src/online-form/src/views/designer/constants/index.d.ts +1 -0
- package/dist/src/online-form/src/views/designer/conversions/normalize-paper-grid.d.ts +3 -0
- package/dist/src/online-form/src/views/designer/utils/placed-fields.d.ts +9 -0
- package/dist/src/online-form/src/views/designer/utils/template-placed-fields.d.ts +7 -0
- package/dist/src/online-form/src/views/render/__components__/_field_/seal/component/seal-floating-field.vue.d.ts +0 -1
- package/dist/src/online-form/src/views/render/__components__/_field_/seal/component/seal-runtime-layer.vue.d.ts +0 -1
- package/dist/src/online-form/src/views/render/__components__/_field_/seal/component/use-seal-stamp.d.ts +1 -4
- package/dist/src/online-form/src/views/render/__components__/_field_/trace/utils/use-rule-props.d.ts +0 -3
- package/dist/src/online-form/src/views/render/sheet-tab-bar.vue.d.ts +5 -3
- package/dist/src/shared/components/Signature/logic/index.d.ts +14 -0
- package/dist/src/shared/enum/field-type.d.ts +9 -2
- package/dist/src/shared/enum/index.d.ts +2 -0
- package/dist/src/shared/enum/product-type.d.ts +9 -0
- package/dist/src/shared/enum/production-identification.d.ts +19 -0
- package/dist/src/shared/utils/withRequestCache.d.ts +27 -0
- package/dist/{sub-table-factory-sn1Ek1c9.js → sub-table-factory-CUn9Ys8U.js} +229 -150
- package/dist/{text-design-CwHfwel0.js → text-design-CJ-LzwEP.js} +2 -2
- package/dist/{throttle-Cpk1LoGk-BHDq1lM3.js → throttle-Cpk1LoGk-BVommE6v.js} +1 -1
- package/dist/{timediff-design-8kCO3aXz.js → timediff-design-DLlIUaqv.js} +1 -1
- package/dist/{trace-like-wrapper-CxPz9Trr.js → trace-like-wrapper-3MK6tjpN.js} +2 -2
- package/dist/{value-editor.vue_vue_type_style_index_0_lang-CzEZ0CY7.js → value-editor.vue_vue_type_style_index_0_lang-CmqBS9Ol.js} +2 -2
- package/dist/web-render/index.es.js +3 -3
- package/dist/{widget-barcode-CRxh3tC2.js → widget-barcode-BzrOK6u9.js} +4 -4
- package/dist/{widget-diagonal-CO586oV2.js → widget-diagonal-DXnNY3TR.js} +3 -3
- package/dist/{widget-image-CE6kVnu5.js → widget-image-qlZU5zfL.js} +5 -5
- package/dist/{widget-line-Br4oIssb.js → widget-line-BkFVTPZE.js} +2 -2
- package/dist/{widget-pagination-BHwjrBV5.js → widget-pagination-BI7Vtnio.js} +5 -5
- package/dist/{widget-power-BySYsE15.js → widget-power-CQaD6Z_a.js} +3 -3
- package/dist/{widget-qrcode-D6b0T_Qa.js → widget-qrcode-DNpnyMCx.js} +3 -3
- package/dist/{widget-rangelimit-DTH7nrqC.js → widget-rangelimit-DE7-MYZD.js} +3 -3
- package/dist/{widget-serialnumber-DVtxhNC3.js → widget-serialnumber-CyMnA-nP.js} +1 -1
- package/dist/{widget-text-gBGybAXk.js → widget-text-BpZ7YJtP.js} +5 -5
- package/dist/{widget-timediff-aY-maVkE.js → widget-timediff-DSEwFrr9.js} +2 -2
- package/package.json +2 -2
- package/dist/paper-widget-design-BGotQsIf.js +0 -4
- package/dist/seal-design-DP1XaAY8.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 {
|
|
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
3
|
import { cloneDeep, isEmpty, has, pickBy, isNil, mergeWith, omit, last, pick, merge } from "lodash-es";
|
|
4
4
|
import dayjs from "dayjs";
|
|
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-
|
|
8
|
+
import { u as useFormModel } from "./mb-render-_IUbyYCY.js";
|
|
9
9
|
var MaterialConsumptionPatternEnum = /* @__PURE__ */ ((MaterialConsumptionPatternEnum2) => {
|
|
10
10
|
MaterialConsumptionPatternEnum2["RECORD"] = "record";
|
|
11
11
|
MaterialConsumptionPatternEnum2["BOM"] = "bom";
|
|
@@ -18,6 +18,61 @@ function normalizeFieldWidth(value, fallback = DEFAULT_FIELD_WIDTH) {
|
|
|
18
18
|
const width = Number(value);
|
|
19
19
|
return Number.isFinite(width) && width >= 0 ? width : fallback;
|
|
20
20
|
}
|
|
21
|
+
function isBlank$1(value) {
|
|
22
|
+
return value === void 0 || value === null || value === "";
|
|
23
|
+
}
|
|
24
|
+
function matchFieldKey(match, fieldKey) {
|
|
25
|
+
if (!match.fieldKey) return false;
|
|
26
|
+
const keys = Array.isArray(match.fieldKey) ? match.fieldKey : [match.fieldKey];
|
|
27
|
+
return keys.includes(fieldKey);
|
|
28
|
+
}
|
|
29
|
+
function findFieldProfile(profile, fieldKey) {
|
|
30
|
+
return profile?.fields?.find((item) => matchFieldKey(item.match, fieldKey));
|
|
31
|
+
}
|
|
32
|
+
function buildDefaultMapFromProfile(profile, paramsConfig) {
|
|
33
|
+
const result = {};
|
|
34
|
+
if (!profile?.contextAssignments?.length) return result;
|
|
35
|
+
const assignments = profile.contextAssignments.filter(
|
|
36
|
+
(item) => item.when === "onRowInit"
|
|
37
|
+
);
|
|
38
|
+
for (const assignment of assignments) {
|
|
39
|
+
const value = paramsConfig?.[assignment.paramKey];
|
|
40
|
+
if (isBlank$1(value)) continue;
|
|
41
|
+
result[assignment.fieldKey] = value;
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
function buildFieldStatusFromProfile(params) {
|
|
46
|
+
const { profile, field } = params;
|
|
47
|
+
const result = {};
|
|
48
|
+
if (!profile) return result;
|
|
49
|
+
const fieldProfile = findFieldProfile(profile, field);
|
|
50
|
+
if (fieldProfile?.defaultProps) {
|
|
51
|
+
if (fieldProfile.defaultProps.disabled === true || fieldProfile.defaultProps.fieldDisabled === true) {
|
|
52
|
+
result.disabled = true;
|
|
53
|
+
}
|
|
54
|
+
if (fieldProfile.defaultProps.readonly === true || fieldProfile.defaultProps.fieldReadonly === true) {
|
|
55
|
+
result.readonly = true;
|
|
56
|
+
}
|
|
57
|
+
if (fieldProfile.defaultProps.required === false) {
|
|
58
|
+
result.required = false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const rules2 = (profile.runtimeRules ?? []).filter(
|
|
62
|
+
(rule) => !rule.when || rule.when === "always" || rule.when === "onRowInit"
|
|
63
|
+
);
|
|
64
|
+
for (const rule of rules2) {
|
|
65
|
+
if (!rule.fields.includes(field)) continue;
|
|
66
|
+
if (rule.effect.readonly) result.readonly = true;
|
|
67
|
+
if (rule.effect.disabled) result.disabled = true;
|
|
68
|
+
if (rule.effect.required !== void 0) result.required = rule.effect.required;
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
function getRowHandlersForFieldChange(profile, changedField) {
|
|
73
|
+
if (!profile?.rowHandlers?.length) return [];
|
|
74
|
+
return profile.rowHandlers.filter((item) => item.when === "onFieldChange").filter((item) => !item.watch?.length || item.watch.includes(changedField)).map((item) => item.handler);
|
|
75
|
+
}
|
|
21
76
|
function hasSignatureValue(value) {
|
|
22
77
|
if (value === void 0 || value === null) return false;
|
|
23
78
|
if (typeof value !== "string") {
|
|
@@ -958,6 +1013,8 @@ function convertV1Runtime(runtime) {
|
|
|
958
1013
|
return { schemaVersion: 1, formConfig, sheets: [sheet] };
|
|
959
1014
|
}
|
|
960
1015
|
const MULTI_SHEET_SCHEMA_VERSION = 2;
|
|
1016
|
+
const MAX_RUNTIME_SHEETS = 100;
|
|
1017
|
+
const MAX_RUNTIME_SHEET_TITLE_LENGTH = 255;
|
|
961
1018
|
function assertObject(value, message2) {
|
|
962
1019
|
if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error(message2);
|
|
963
1020
|
}
|
|
@@ -1023,7 +1080,9 @@ function normalizeRuntime(runtime) {
|
|
|
1023
1080
|
if (!Array.isArray(runtime.sheets) || runtime.sheets.length === 0) {
|
|
1024
1081
|
throw new Error("多 Sheet 运行时至少需要一个工作表");
|
|
1025
1082
|
}
|
|
1026
|
-
if (runtime.sheets.length >
|
|
1083
|
+
if (runtime.sheets.length > MAX_RUNTIME_SHEETS) {
|
|
1084
|
+
throw new Error(`每份表单最多支持 ${MAX_RUNTIME_SHEETS} 个工作表`);
|
|
1085
|
+
}
|
|
1027
1086
|
const formConfig = runtime.formConfig ?? {};
|
|
1028
1087
|
assertObject(formConfig, "多 Sheet 运行时的 formConfig 格式无效");
|
|
1029
1088
|
const ids = /* @__PURE__ */ new Set();
|
|
@@ -1034,7 +1093,9 @@ function normalizeRuntime(runtime) {
|
|
|
1034
1093
|
const sheetId = String(rawSheet.sheetId ?? "").trim();
|
|
1035
1094
|
const title = String(rawSheet.title ?? "").trim();
|
|
1036
1095
|
if (!sheetId) throw new Error(`第 ${index + 1} 个工作表缺少 sheetId`);
|
|
1037
|
-
if (!title || title.length >
|
|
1096
|
+
if (!title || title.length > MAX_RUNTIME_SHEET_TITLE_LENGTH) {
|
|
1097
|
+
throw new Error(`工作表名称必须为 1 到 ${MAX_RUNTIME_SHEET_TITLE_LENGTH} 个字符:${title}`);
|
|
1098
|
+
}
|
|
1038
1099
|
if (ids.has(sheetId)) throw new Error(`重复的 sheetId:${sheetId}`);
|
|
1039
1100
|
if (titles.has(title)) throw new Error(`重复的工作表名称:${title}`);
|
|
1040
1101
|
ids.add(sheetId);
|
|
@@ -1587,9 +1648,15 @@ class RuntimeFormStateStore {
|
|
|
1587
1648
|
target = this.unwrap(target);
|
|
1588
1649
|
value = this.unwrap(value);
|
|
1589
1650
|
this.ensureIncomingRowKeys(target, fieldKey, value);
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1651
|
+
const valueChanged = !Object.is(toRaw(this.unwrap(target[fieldKey])), toRaw(value));
|
|
1652
|
+
const labelKey = `${fieldKey}_lb_`;
|
|
1653
|
+
const clearLabel = (value == null || value === "" || Array.isArray(value) && value.length === 0) && target[labelKey] != null;
|
|
1654
|
+
if (!valueChanged && !clearLabel) return;
|
|
1655
|
+
const paths = valueChanged ? [path] : [];
|
|
1656
|
+
if (clearLabel) paths.push(`${path}_lb_`);
|
|
1657
|
+
this.mutate(paths, source, () => {
|
|
1658
|
+
if (valueChanged) target[fieldKey] = value;
|
|
1659
|
+
if (clearLabel) target[labelKey] = null;
|
|
1593
1660
|
});
|
|
1594
1661
|
}
|
|
1595
1662
|
/** 合并当前行的一组关联字段,累计稳定业务路径,只提交一次变更。 */
|
|
@@ -1731,12 +1798,28 @@ class RuntimeFormStateStore {
|
|
|
1731
1798
|
incoming.forEach((savedRow) => {
|
|
1732
1799
|
const rowKey = savedRow?.[FRONT_ROW_KEY];
|
|
1733
1800
|
const savedId = savedRow?.id_;
|
|
1734
|
-
|
|
1801
|
+
let currentRow = target.find((row) => {
|
|
1735
1802
|
if (!row || typeof row !== "object") return false;
|
|
1736
1803
|
if (rowKey != null && isTableRowKeyMatch(rowKey, row[FRONT_ROW_KEY])) return true;
|
|
1737
1804
|
return savedId != null && row.id_ != null && String(row.id_) === String(savedId);
|
|
1738
1805
|
});
|
|
1739
|
-
|
|
1806
|
+
let matchedByGroup = false;
|
|
1807
|
+
if (!currentRow && Array.isArray(savedRow?._2DTABLE_) && savedRow.group_ != null && String(savedRow.group_).trim() !== "") {
|
|
1808
|
+
const matchingGroups = target.filter(
|
|
1809
|
+
(row) => Array.isArray(row?._2DTABLE_) && row.group_ != null && String(row.group_) === String(savedRow.group_)
|
|
1810
|
+
);
|
|
1811
|
+
if (matchingGroups.length === 1) {
|
|
1812
|
+
currentRow = matchingGroups[0];
|
|
1813
|
+
matchedByGroup = true;
|
|
1814
|
+
}
|
|
1815
|
+
}
|
|
1816
|
+
if (currentRow) {
|
|
1817
|
+
this.mergeSavedMetadata(
|
|
1818
|
+
currentRow,
|
|
1819
|
+
matchedByGroup ? { ...savedRow, [FRONT_ROW_KEY]: currentRow[FRONT_ROW_KEY] } : savedRow,
|
|
1820
|
+
path
|
|
1821
|
+
);
|
|
1822
|
+
}
|
|
1740
1823
|
});
|
|
1741
1824
|
return target;
|
|
1742
1825
|
}
|
|
@@ -1832,6 +1915,7 @@ class RuntimeAsyncTaskCoordinator {
|
|
|
1832
1915
|
fieldIdentity: options.fieldIdentity,
|
|
1833
1916
|
sheetId: options.sheetId,
|
|
1834
1917
|
required: options.required !== false,
|
|
1918
|
+
blockOnFailure: options.blockOnFailure !== false,
|
|
1835
1919
|
status: "pending",
|
|
1836
1920
|
sequence,
|
|
1837
1921
|
promise: task,
|
|
@@ -1875,7 +1959,7 @@ class RuntimeAsyncTaskCoordinator {
|
|
|
1875
1959
|
* 等待全部 required 任务达到稳定状态。
|
|
1876
1960
|
*
|
|
1877
1961
|
* 一轮任务完成后的字段回填可能触发新的公式或远程任务,因此这里循环读取任务表,直到
|
|
1878
|
-
* 没有新的 pending required
|
|
1962
|
+
* 没有新的 pending required 任务。稳定后只检查需要阻断提交的失败项。
|
|
1879
1963
|
*/
|
|
1880
1964
|
async waitForRequired(keyPrefix) {
|
|
1881
1965
|
const matches = (task) => task.required && (!keyPrefix || task.key.startsWith(keyPrefix));
|
|
@@ -1887,7 +1971,7 @@ class RuntimeAsyncTaskCoordinator {
|
|
|
1887
1971
|
await Promise.allSettled(pending.map((task) => task.promise));
|
|
1888
1972
|
}
|
|
1889
1973
|
const failed = Array.from(this.tasks.values()).filter(
|
|
1890
|
-
(task) => matches(task) && task.status === "rejected"
|
|
1974
|
+
(task) => matches(task) && task.blockOnFailure && task.status === "rejected"
|
|
1891
1975
|
);
|
|
1892
1976
|
if (failed.length) {
|
|
1893
1977
|
const details = failed.map((task) => {
|
|
@@ -3233,11 +3317,12 @@ class RuntimeValidationService {
|
|
|
3233
3317
|
this.pendingLive = this.pendingLive === "blur" ? "blur" : trigger;
|
|
3234
3318
|
if (this.liveTimer) clearTimeout(this.liveTimer);
|
|
3235
3319
|
this.liveTimer = void 0;
|
|
3236
|
-
if (immediate)
|
|
3320
|
+
if (immediate)
|
|
3321
|
+
void this.flushLive().catch((error) => this.logBackgroundError("字段校验失败", error));
|
|
3237
3322
|
else
|
|
3238
3323
|
this.liveTimer = setTimeout(() => {
|
|
3239
3324
|
this.liveTimer = void 0;
|
|
3240
|
-
void this.flushLive().catch((error) =>
|
|
3325
|
+
void this.flushLive().catch((error) => this.logBackgroundError("字段校验失败", error));
|
|
3241
3326
|
}, 300);
|
|
3242
3327
|
}
|
|
3243
3328
|
async flushLive() {
|
|
@@ -3259,11 +3344,17 @@ class RuntimeValidationService {
|
|
|
3259
3344
|
this.displayTimer = void 0;
|
|
3260
3345
|
const run = () => {
|
|
3261
3346
|
this.displayTimer = void 0;
|
|
3262
|
-
void this.validate("display").catch(
|
|
3347
|
+
void this.validate("display").catch(
|
|
3348
|
+
(error) => this.logBackgroundError("字段展示校验失败", error)
|
|
3349
|
+
);
|
|
3263
3350
|
};
|
|
3264
3351
|
if (immediate) run();
|
|
3265
3352
|
else this.displayTimer = setTimeout(run, 320);
|
|
3266
3353
|
}
|
|
3354
|
+
logBackgroundError(label, error) {
|
|
3355
|
+
if (error instanceof Error && error.message.startsWith("以下异步任务执行失败:")) return;
|
|
3356
|
+
console.error(label, error);
|
|
3357
|
+
}
|
|
3267
3358
|
pruneComments() {
|
|
3268
3359
|
if (!this.binding || this.disposed) return;
|
|
3269
3360
|
this.binding.applyComments(
|
|
@@ -4596,7 +4687,16 @@ class BomEntriesValidator {
|
|
|
4596
4687
|
memberIndexes.push(idx);
|
|
4597
4688
|
if (byLot && !row.material_no_) emptyLotIndexes.push(idx);
|
|
4598
4689
|
});
|
|
4599
|
-
const
|
|
4690
|
+
const targetExists = this.groupExistsInTable(arr, target);
|
|
4691
|
+
if (!targetExists) {
|
|
4692
|
+
const index = arr.findIndex((row2) => !row2.deleted_);
|
|
4693
|
+
const row = arr[index];
|
|
4694
|
+
const canReuse = row && !row.product_id_ && !row.bom_entry_id_ && !row.is_confirmed_ && arr.every((item, idx) => item.deleted_ || idx === index);
|
|
4695
|
+
if (canReuse) {
|
|
4696
|
+
emptyProductIndexes.push(index);
|
|
4697
|
+
}
|
|
4698
|
+
}
|
|
4699
|
+
const needInsert = !targetExists && emptyProductIndexes.length === 0;
|
|
4600
4700
|
const last2 = memberIndexes[memberIndexes.length - 1];
|
|
4601
4701
|
let groupInsertIndex = -1;
|
|
4602
4702
|
if (needInsert) {
|
|
@@ -5221,7 +5321,8 @@ class MaterialConsumeTableController {
|
|
|
5221
5321
|
constructor(tmplBomController, tmplBom, options = {}) {
|
|
5222
5322
|
this.tmplBomController = tmplBomController;
|
|
5223
5323
|
this.tmplBom = tmplBom;
|
|
5224
|
-
if (!options.printOnly
|
|
5324
|
+
if (!options.printOnly && this.hasFormInstance)
|
|
5325
|
+
this.initScanRule(this.tmplBom.barcode_parsing_rules_id_);
|
|
5225
5326
|
this.scanParamType = this.tmplBom.scan_param_type_;
|
|
5226
5327
|
markRaw(this);
|
|
5227
5328
|
this.bomEntriesValidator = new BomEntriesValidator(
|
|
@@ -5284,6 +5385,9 @@ class MaterialConsumeTableController {
|
|
|
5284
5385
|
get mcPattern() {
|
|
5285
5386
|
return this.tmplBom.material_consumption_pattern_ ?? this.tmplBomController.defaultMCPattern;
|
|
5286
5387
|
}
|
|
5388
|
+
get hasFormInstance() {
|
|
5389
|
+
return this.tmplBomController.hasFormInstance;
|
|
5390
|
+
}
|
|
5287
5391
|
/**
|
|
5288
5392
|
* 解析规则数据对象
|
|
5289
5393
|
*/
|
|
@@ -5536,6 +5640,10 @@ class MaterialConsumeTableController {
|
|
|
5536
5640
|
}
|
|
5537
5641
|
const isRecordPattern = this.mcPattern === MaterialConsumptionPatternEnum.RECORD && !this.tmplBom.personal_bom_enabled_;
|
|
5538
5642
|
console.log("parseScanStr", data);
|
|
5643
|
+
if (!data.lot && !data.uniqueCode) {
|
|
5644
|
+
this.error($t("sys.edhr.mcTable.lotOrUniqueCodeRequired"));
|
|
5645
|
+
return;
|
|
5646
|
+
}
|
|
5539
5647
|
const arr = await materialCheck({
|
|
5540
5648
|
material_no_: data.materialCode,
|
|
5541
5649
|
production_identification_name_: data.lot,
|
|
@@ -6030,7 +6138,16 @@ class MaterialConsumeTableController {
|
|
|
6030
6138
|
this.error(msg);
|
|
6031
6139
|
return;
|
|
6032
6140
|
}
|
|
6033
|
-
if (!value)
|
|
6141
|
+
if (!value) {
|
|
6142
|
+
if (row.product_id_ && !this.isCustomRequiredQty) {
|
|
6143
|
+
const util = this.bomEntriesValidator.findUtilByProductId(row.product_id_);
|
|
6144
|
+
if (util) {
|
|
6145
|
+
row.qty_required_ = util.total;
|
|
6146
|
+
}
|
|
6147
|
+
}
|
|
6148
|
+
this.updateDerivedQtyFields();
|
|
6149
|
+
return;
|
|
6150
|
+
}
|
|
6034
6151
|
try {
|
|
6035
6152
|
await validateReinspectionDate({
|
|
6036
6153
|
product_id_: option.product_id_ ?? row.product_id_,
|
|
@@ -6054,6 +6171,7 @@ class MaterialConsumeTableController {
|
|
|
6054
6171
|
const qty = oldGroupId && row.bom_entry_id_ === oldGroupId ? oldRequiredQty : this.getCustomGroupRequiredQty(row);
|
|
6055
6172
|
this.setCustomGroupRequiredQty(row, qty);
|
|
6056
6173
|
}
|
|
6174
|
+
this.updateDerivedQtyFields();
|
|
6057
6175
|
} else if (field === "qty_") {
|
|
6058
6176
|
this.updateDerivedQtyFields();
|
|
6059
6177
|
}
|
|
@@ -6688,11 +6806,12 @@ class SubTableCore {
|
|
|
6688
6806
|
/**
|
|
6689
6807
|
* 扫码多条候选时选择一行(1 条自动选中)
|
|
6690
6808
|
*/
|
|
6691
|
-
async pickScanRecord(records) {
|
|
6809
|
+
async pickScanRecord(records, options = {}) {
|
|
6692
6810
|
if (!records.length) return void 0;
|
|
6693
6811
|
if (records.length === 1) return records[0];
|
|
6694
6812
|
return this.render.openMultiRowsModal({
|
|
6695
|
-
rows: mapScanRecordsForPicker(records)
|
|
6813
|
+
rows: mapScanRecordsForPicker(records),
|
|
6814
|
+
...options
|
|
6696
6815
|
});
|
|
6697
6816
|
}
|
|
6698
6817
|
/**
|
|
@@ -6714,39 +6833,71 @@ class SubTableCore {
|
|
|
6714
6833
|
console.log(this.ctx.widget.props.tableTitle, "处理表单按钮点击事件", params);
|
|
6715
6834
|
}
|
|
6716
6835
|
}
|
|
6717
|
-
|
|
6718
|
-
|
|
6719
|
-
|
|
6720
|
-
|
|
6721
|
-
|
|
6722
|
-
|
|
6723
|
-
|
|
6836
|
+
const STORAGE_KEY = "gct:formula:params:v1";
|
|
6837
|
+
const PARAMS_CHANGED_EVENT = "gct:formula-params-updated:v1";
|
|
6838
|
+
function emptyConfig() {
|
|
6839
|
+
return {
|
|
6840
|
+
routingParamList: [],
|
|
6841
|
+
inspectionParamList: [],
|
|
6842
|
+
deviceParamList: []
|
|
6843
|
+
};
|
|
6724
6844
|
}
|
|
6725
|
-
|
|
6726
|
-
if (!
|
|
6727
|
-
|
|
6845
|
+
function normalizeList(value) {
|
|
6846
|
+
if (!Array.isArray(value)) return [];
|
|
6847
|
+
return value.filter(
|
|
6848
|
+
(item) => item !== null && typeof item === "object" && typeof item.customFieldKey === "string"
|
|
6849
|
+
);
|
|
6850
|
+
}
|
|
6851
|
+
function normalizeConfig(value) {
|
|
6852
|
+
const data = value !== null && typeof value === "object" ? value : {};
|
|
6853
|
+
return {
|
|
6854
|
+
routingParamList: normalizeList(data.routingParamList),
|
|
6855
|
+
inspectionParamList: normalizeList(data.inspectionParamList),
|
|
6856
|
+
deviceParamList: normalizeList(data.deviceParamList)
|
|
6857
|
+
};
|
|
6858
|
+
}
|
|
6859
|
+
let lastRaw;
|
|
6860
|
+
let cachedConfig = emptyConfig();
|
|
6861
|
+
function readFormulaParamsConfig() {
|
|
6862
|
+
const raw = window.localStorage.getItem(STORAGE_KEY);
|
|
6863
|
+
if (raw !== lastRaw) {
|
|
6864
|
+
try {
|
|
6865
|
+
cachedConfig = normalizeConfig(raw ? JSON.parse(raw) : null);
|
|
6866
|
+
} catch {
|
|
6867
|
+
cachedConfig = emptyConfig();
|
|
6868
|
+
}
|
|
6869
|
+
lastRaw = raw;
|
|
6870
|
+
}
|
|
6871
|
+
return cachedConfig;
|
|
6872
|
+
}
|
|
6873
|
+
const currentParamsConfig = {
|
|
6874
|
+
get routingParamList() {
|
|
6875
|
+
return readFormulaParamsConfig().routingParamList;
|
|
6876
|
+
},
|
|
6877
|
+
get inspectionParamList() {
|
|
6878
|
+
return readFormulaParamsConfig().inspectionParamList;
|
|
6728
6879
|
}
|
|
6729
|
-
const config = paramList?.find((e) => e.customFieldKey === key);
|
|
6730
|
-
if (!config) return null;
|
|
6731
|
-
const { upperLimit, lowerLimit } = config;
|
|
6732
|
-
if (lowerLimit == null || upperLimit == null) return null;
|
|
6733
|
-
const actual = Number(value);
|
|
6734
|
-
const min = Number(config.lowerLimit);
|
|
6735
|
-
const max = Number(config.upperLimit);
|
|
6736
|
-
if (![actual, min, max].every(Number.isFinite)) return null;
|
|
6737
|
-
return actual >= min && actual <= max;
|
|
6738
|
-
}
|
|
6739
|
-
const FORMULA_FUNCS = {
|
|
6740
|
-
RoutingParamCheck: (key, value) => CALC_IS_QUALIFIED(key, value, currentParamsConfig.routingParamList || []),
|
|
6741
|
-
InspectionParamCheck: (key, value) => CALC_IS_QUALIFIED(key, value, currentParamsConfig.inspectionParamList || []),
|
|
6742
|
-
DeviceParamCheck: (key, value) => CALC_IS_QUALIFIED(key, value, currentParamsConfig.deviceParamList || [])
|
|
6743
6880
|
};
|
|
6744
|
-
function
|
|
6745
|
-
const
|
|
6746
|
-
if (
|
|
6747
|
-
|
|
6748
|
-
|
|
6881
|
+
function setFormulaParamsConfig(paramsConfig = {}) {
|
|
6882
|
+
const raw = JSON.stringify(normalizeConfig(paramsConfig));
|
|
6883
|
+
if (window.localStorage.getItem(STORAGE_KEY) === raw) return;
|
|
6884
|
+
window.localStorage.setItem(STORAGE_KEY, raw);
|
|
6885
|
+
window.dispatchEvent(new Event(PARAMS_CHANGED_EVENT));
|
|
6886
|
+
}
|
|
6887
|
+
const boundCalculators = /* @__PURE__ */ new WeakSet();
|
|
6888
|
+
function bindFormulaCacheInvalidation(value) {
|
|
6889
|
+
if (typeof value !== "function") return;
|
|
6890
|
+
const calculator = value;
|
|
6891
|
+
if (typeof calculator.clear !== "function" || boundCalculators.has(calculator)) return;
|
|
6892
|
+
boundCalculators.add(calculator);
|
|
6893
|
+
const clearCache = () => calculator.clear();
|
|
6894
|
+
window.addEventListener(PARAMS_CHANGED_EVENT, clearCache);
|
|
6895
|
+
window.addEventListener("storage", (event) => {
|
|
6896
|
+
if (event.storageArea === window.localStorage && (event.key === STORAGE_KEY || event.key === null)) {
|
|
6897
|
+
clearCache();
|
|
6898
|
+
}
|
|
6749
6899
|
});
|
|
6900
|
+
clearCache();
|
|
6750
6901
|
}
|
|
6751
6902
|
function getGroupProductIds(entry) {
|
|
6752
6903
|
const ids = [entry.product_id_];
|
|
@@ -6920,7 +7071,7 @@ async function validateObjectBomQtyOnSubmit(opts) {
|
|
|
6920
7071
|
for (const obj of objectFieldList) {
|
|
6921
7072
|
if (!obj?.objectField) continue;
|
|
6922
7073
|
const objectBom = findObjectBom(formInstBom, obj.objectField);
|
|
6923
|
-
if (objectBom?.material_consumption_pattern_ === MaterialConsumptionPatternEnum.RECORD) {
|
|
7074
|
+
if (objectBom?.material_consumption_pattern_ === MaterialConsumptionPatternEnum.RECORD && !objectBom.personal_bom_enabled_) {
|
|
6924
7075
|
continue;
|
|
6925
7076
|
}
|
|
6926
7077
|
const { productKey, productFieldName, qtyKey, qtyRequiredKey, qtyFieldName } = pickObjectFieldKeys(obj.subFields, obj.objectField);
|
|
@@ -6981,150 +7132,6 @@ async function validateObjectBomQtyOnSubmit(opts) {
|
|
|
6981
7132
|
}
|
|
6982
7133
|
return errors;
|
|
6983
7134
|
}
|
|
6984
|
-
function isBlank(value) {
|
|
6985
|
-
return value == null || value === "";
|
|
6986
|
-
}
|
|
6987
|
-
function pickPresent(preferred, fallback) {
|
|
6988
|
-
return isBlank(preferred) ? fallback : preferred;
|
|
6989
|
-
}
|
|
6990
|
-
function resolveObjectFieldKeys(opts) {
|
|
6991
|
-
const obj = opts.objectFieldList?.find((item) => item.objectField === opts.belongingObject);
|
|
6992
|
-
const fromList = obj?.subFields ? pickObjectFieldKeys(obj.subFields, opts.belongingObject) : {};
|
|
6993
|
-
const fromFallback = pickObjectFieldKeys(opts.fallbackFields, opts.belongingObject, {
|
|
6994
|
-
requireUsed: false
|
|
6995
|
-
});
|
|
6996
|
-
return {
|
|
6997
|
-
productKey: pickPresent(fromList.productKey, fromFallback.productKey),
|
|
6998
|
-
productFieldName: fromList.productFieldName ?? fromFallback.productFieldName,
|
|
6999
|
-
materialNoKey: pickPresent(fromList.materialNoKey, fromFallback.materialNoKey),
|
|
7000
|
-
materialNoFieldName: fromList.materialNoFieldName ?? fromFallback.materialNoFieldName,
|
|
7001
|
-
qtyKey: pickPresent(fromList.qtyKey, fromFallback.qtyKey),
|
|
7002
|
-
qtyRequiredKey: pickPresent(fromList.qtyRequiredKey, fromFallback.qtyRequiredKey),
|
|
7003
|
-
qtyFieldName: fromList.qtyFieldName ?? fromFallback.qtyFieldName,
|
|
7004
|
-
bomEntryIdKey: pickPresent(fromList.bomEntryIdKey, fromFallback.bomEntryIdKey)
|
|
7005
|
-
};
|
|
7006
|
-
}
|
|
7007
|
-
function buildObjectLotExtraQuery(productId) {
|
|
7008
|
-
if (isBlank(productId)) return {};
|
|
7009
|
-
const versionId = String(productId).split(":").pop();
|
|
7010
|
-
if (!versionId) return {};
|
|
7011
|
-
return { "product_id_.versionEq": versionId };
|
|
7012
|
-
}
|
|
7013
|
-
function clearedLotFields(materialNoKey) {
|
|
7014
|
-
if (!materialNoKey) return {};
|
|
7015
|
-
return {
|
|
7016
|
-
[materialNoKey]: void 0,
|
|
7017
|
-
[`${materialNoKey}_id_`]: void 0,
|
|
7018
|
-
[`${materialNoKey}_lb_`]: void 0
|
|
7019
|
-
};
|
|
7020
|
-
}
|
|
7021
|
-
function shouldClearLotOnProductChange(opts) {
|
|
7022
|
-
const { prevProduct, nextProduct, lotValue } = opts;
|
|
7023
|
-
if (isBlank(prevProduct) && isBlank(nextProduct)) return false;
|
|
7024
|
-
if (prevProduct === nextProduct) return false;
|
|
7025
|
-
if (isBlank(prevProduct) && !isBlank(nextProduct) && !isBlank(lotValue)) {
|
|
7026
|
-
return false;
|
|
7027
|
-
}
|
|
7028
|
-
return true;
|
|
7029
|
-
}
|
|
7030
|
-
let fillingProduct = false;
|
|
7031
|
-
function runWithFillProduct(fn) {
|
|
7032
|
-
fillingProduct = true;
|
|
7033
|
-
try {
|
|
7034
|
-
fn();
|
|
7035
|
-
} finally {
|
|
7036
|
-
nextTick(() => {
|
|
7037
|
-
fillingProduct = false;
|
|
7038
|
-
});
|
|
7039
|
-
}
|
|
7040
|
-
}
|
|
7041
|
-
function resolveLotValidateParams(keys, formData, option) {
|
|
7042
|
-
return {
|
|
7043
|
-
product_id_: option?.product_id_ ?? option?._item?.product_id_ ?? (keys.productKey ? formData[keys.productKey] : void 0),
|
|
7044
|
-
material_no_: option?.name_ ?? option?.__VALUE__ ?? (keys.materialNoKey ? formData[keys.materialNoKey] : void 0),
|
|
7045
|
-
material_no_id_: option?.id_ ?? (keys.materialNoKey ? formData[`${keys.materialNoKey}_id_`] : void 0)
|
|
7046
|
-
};
|
|
7047
|
-
}
|
|
7048
|
-
async function applyConsumeObjectTraceChange(opts) {
|
|
7049
|
-
const { belongingObject, role, formData } = opts;
|
|
7050
|
-
if (!belongingObject || !formData) return {};
|
|
7051
|
-
const keys = resolveObjectFieldKeys({
|
|
7052
|
-
belongingObject,
|
|
7053
|
-
objectFieldList: opts.objectFieldList,
|
|
7054
|
-
fallbackFields: opts.fallbackFields
|
|
7055
|
-
});
|
|
7056
|
-
if (role === FIELD_TYPE.PRODUCT) {
|
|
7057
|
-
if (!("prevProduct" in opts) || fillingProduct) return {};
|
|
7058
|
-
const values = {};
|
|
7059
|
-
if (shouldClearLotOnProductChange({
|
|
7060
|
-
prevProduct: opts.prevProduct,
|
|
7061
|
-
nextProduct: opts.nextValue,
|
|
7062
|
-
lotValue: keys.materialNoKey ? formData[keys.materialNoKey] : void 0
|
|
7063
|
-
})) {
|
|
7064
|
-
Object.assign(values, clearedLotFields(keys.materialNoKey));
|
|
7065
|
-
}
|
|
7066
|
-
if (keys.bomEntryIdKey) {
|
|
7067
|
-
values[keys.bomEntryIdKey] = null;
|
|
7068
|
-
if (!isBlank(opts.nextValue) && opts.formInstBom) {
|
|
7069
|
-
const entry = resolveObjectBomEntry({
|
|
7070
|
-
formInstBom: opts.formInstBom,
|
|
7071
|
-
belongingObject,
|
|
7072
|
-
productId: String(opts.nextValue)
|
|
7073
|
-
});
|
|
7074
|
-
if (entry) values[keys.bomEntryIdKey] = entry.id_;
|
|
7075
|
-
}
|
|
7076
|
-
}
|
|
7077
|
-
opts.rowWriter.patchRow(values, "autofill");
|
|
7078
|
-
const lotValue = keys.materialNoKey ? formData[keys.materialNoKey] : void 0;
|
|
7079
|
-
if (!isBlank(opts.nextValue) && !isBlank(lotValue)) {
|
|
7080
|
-
try {
|
|
7081
|
-
await validateReinspectionDate({
|
|
7082
|
-
product_id_: String(opts.nextValue),
|
|
7083
|
-
material_no_: lotValue,
|
|
7084
|
-
material_no_id_: keys.materialNoKey ? formData[`${keys.materialNoKey}_id_`] : void 0
|
|
7085
|
-
});
|
|
7086
|
-
} catch (e) {
|
|
7087
|
-
return { abortReinspection: e?.message || String(e) };
|
|
7088
|
-
}
|
|
7089
|
-
}
|
|
7090
|
-
return {};
|
|
7091
|
-
}
|
|
7092
|
-
if (role === FIELD_TYPE.MATERIAL_NO) {
|
|
7093
|
-
if (opts.option?.is_locked_) {
|
|
7094
|
-
opts.rowWriter.patchRow(clearedLotFields(keys.materialNoKey), "autofill");
|
|
7095
|
-
return { abortLocked: opts.option.id_ };
|
|
7096
|
-
}
|
|
7097
|
-
const params = resolveLotValidateParams(keys, formData, opts.option);
|
|
7098
|
-
if (isBlank(params.material_no_) && isBlank(params.material_no_id_)) return {};
|
|
7099
|
-
try {
|
|
7100
|
-
await validateReinspectionDate(params);
|
|
7101
|
-
} catch (e) {
|
|
7102
|
-
opts.rowWriter.patchRow(clearedLotFields(keys.materialNoKey), "async");
|
|
7103
|
-
return { abortReinspection: e?.message || String(e) };
|
|
7104
|
-
}
|
|
7105
|
-
const values = {};
|
|
7106
|
-
const productId = opts.option?.product_id_ ?? opts.option?._item?.product_id_;
|
|
7107
|
-
if (keys.productKey && !isBlank(productId)) values[keys.productKey] = productId;
|
|
7108
|
-
if (keys.bomEntryIdKey && opts.formInstBom) {
|
|
7109
|
-
if (!isBlank(productId)) {
|
|
7110
|
-
const entry = resolveObjectBomEntry({
|
|
7111
|
-
formInstBom: opts.formInstBom,
|
|
7112
|
-
belongingObject,
|
|
7113
|
-
productId: String(productId)
|
|
7114
|
-
});
|
|
7115
|
-
if (entry) values[keys.bomEntryIdKey] = entry.id_;
|
|
7116
|
-
}
|
|
7117
|
-
}
|
|
7118
|
-
const patchRelatedFields = () => opts.rowWriter.patchRow(values, "autofill");
|
|
7119
|
-
if (keys.productKey && !isBlank(productId)) {
|
|
7120
|
-
runWithFillProduct(patchRelatedFields);
|
|
7121
|
-
} else {
|
|
7122
|
-
patchRelatedFields();
|
|
7123
|
-
}
|
|
7124
|
-
return {};
|
|
7125
|
-
}
|
|
7126
|
-
return {};
|
|
7127
|
-
}
|
|
7128
7135
|
function useRuntimeRowState(rowSource) {
|
|
7129
7136
|
const { formStateStore } = useRuntimeInstanceServices();
|
|
7130
7137
|
function requireStore() {
|
|
@@ -7877,6 +7884,150 @@ function useFormTmplConfig() {
|
|
|
7877
7884
|
injectController
|
|
7878
7885
|
};
|
|
7879
7886
|
}
|
|
7887
|
+
function isBlank(value) {
|
|
7888
|
+
return value == null || value === "";
|
|
7889
|
+
}
|
|
7890
|
+
function pickPresent(preferred, fallback) {
|
|
7891
|
+
return isBlank(preferred) ? fallback : preferred;
|
|
7892
|
+
}
|
|
7893
|
+
function resolveObjectFieldKeys(opts) {
|
|
7894
|
+
const obj = opts.objectFieldList?.find((item) => item.objectField === opts.belongingObject);
|
|
7895
|
+
const fromList = obj?.subFields ? pickObjectFieldKeys(obj.subFields, opts.belongingObject) : {};
|
|
7896
|
+
const fromFallback = pickObjectFieldKeys(opts.fallbackFields, opts.belongingObject, {
|
|
7897
|
+
requireUsed: false
|
|
7898
|
+
});
|
|
7899
|
+
return {
|
|
7900
|
+
productKey: pickPresent(fromList.productKey, fromFallback.productKey),
|
|
7901
|
+
productFieldName: fromList.productFieldName ?? fromFallback.productFieldName,
|
|
7902
|
+
materialNoKey: pickPresent(fromList.materialNoKey, fromFallback.materialNoKey),
|
|
7903
|
+
materialNoFieldName: fromList.materialNoFieldName ?? fromFallback.materialNoFieldName,
|
|
7904
|
+
qtyKey: pickPresent(fromList.qtyKey, fromFallback.qtyKey),
|
|
7905
|
+
qtyRequiredKey: pickPresent(fromList.qtyRequiredKey, fromFallback.qtyRequiredKey),
|
|
7906
|
+
qtyFieldName: fromList.qtyFieldName ?? fromFallback.qtyFieldName,
|
|
7907
|
+
bomEntryIdKey: pickPresent(fromList.bomEntryIdKey, fromFallback.bomEntryIdKey)
|
|
7908
|
+
};
|
|
7909
|
+
}
|
|
7910
|
+
function buildObjectLotExtraQuery(productId) {
|
|
7911
|
+
if (isBlank(productId)) return {};
|
|
7912
|
+
const versionId = String(productId).split(":").pop();
|
|
7913
|
+
if (!versionId) return {};
|
|
7914
|
+
return { "product_id_.versionEq": versionId };
|
|
7915
|
+
}
|
|
7916
|
+
function clearedLotFields(materialNoKey) {
|
|
7917
|
+
if (!materialNoKey) return {};
|
|
7918
|
+
return {
|
|
7919
|
+
[materialNoKey]: void 0,
|
|
7920
|
+
[`${materialNoKey}_id_`]: void 0,
|
|
7921
|
+
[`${materialNoKey}_lb_`]: void 0
|
|
7922
|
+
};
|
|
7923
|
+
}
|
|
7924
|
+
function shouldClearLotOnProductChange(opts) {
|
|
7925
|
+
const { prevProduct, nextProduct, lotValue } = opts;
|
|
7926
|
+
if (isBlank(prevProduct) && isBlank(nextProduct)) return false;
|
|
7927
|
+
if (prevProduct === nextProduct) return false;
|
|
7928
|
+
if (isBlank(prevProduct) && !isBlank(nextProduct) && !isBlank(lotValue)) {
|
|
7929
|
+
return false;
|
|
7930
|
+
}
|
|
7931
|
+
return true;
|
|
7932
|
+
}
|
|
7933
|
+
let fillingProduct = false;
|
|
7934
|
+
function runWithFillProduct(fn) {
|
|
7935
|
+
fillingProduct = true;
|
|
7936
|
+
try {
|
|
7937
|
+
fn();
|
|
7938
|
+
} finally {
|
|
7939
|
+
nextTick(() => {
|
|
7940
|
+
fillingProduct = false;
|
|
7941
|
+
});
|
|
7942
|
+
}
|
|
7943
|
+
}
|
|
7944
|
+
function resolveLotValidateParams(keys, formData, option) {
|
|
7945
|
+
return {
|
|
7946
|
+
product_id_: option?.product_id_ ?? option?._item?.product_id_ ?? (keys.productKey ? formData[keys.productKey] : void 0),
|
|
7947
|
+
material_no_: option?.name_ ?? option?.__VALUE__ ?? (keys.materialNoKey ? formData[keys.materialNoKey] : void 0),
|
|
7948
|
+
material_no_id_: option?.id_ ?? (keys.materialNoKey ? formData[`${keys.materialNoKey}_id_`] : void 0)
|
|
7949
|
+
};
|
|
7950
|
+
}
|
|
7951
|
+
async function applyConsumeObjectTraceChange(opts) {
|
|
7952
|
+
const { belongingObject, role, formData } = opts;
|
|
7953
|
+
if (!belongingObject || !formData) return {};
|
|
7954
|
+
const keys = resolveObjectFieldKeys({
|
|
7955
|
+
belongingObject,
|
|
7956
|
+
objectFieldList: opts.objectFieldList,
|
|
7957
|
+
fallbackFields: opts.fallbackFields
|
|
7958
|
+
});
|
|
7959
|
+
if (role === FIELD_TYPE.PRODUCT) {
|
|
7960
|
+
if (!("prevProduct" in opts) || fillingProduct) return {};
|
|
7961
|
+
const values = {};
|
|
7962
|
+
if (shouldClearLotOnProductChange({
|
|
7963
|
+
prevProduct: opts.prevProduct,
|
|
7964
|
+
nextProduct: opts.nextValue,
|
|
7965
|
+
lotValue: keys.materialNoKey ? formData[keys.materialNoKey] : void 0
|
|
7966
|
+
})) {
|
|
7967
|
+
Object.assign(values, clearedLotFields(keys.materialNoKey));
|
|
7968
|
+
}
|
|
7969
|
+
if (keys.bomEntryIdKey) {
|
|
7970
|
+
values[keys.bomEntryIdKey] = null;
|
|
7971
|
+
if (!isBlank(opts.nextValue) && opts.formInstBom) {
|
|
7972
|
+
const entry = resolveObjectBomEntry({
|
|
7973
|
+
formInstBom: opts.formInstBom,
|
|
7974
|
+
belongingObject,
|
|
7975
|
+
productId: String(opts.nextValue)
|
|
7976
|
+
});
|
|
7977
|
+
if (entry) values[keys.bomEntryIdKey] = entry.id_;
|
|
7978
|
+
}
|
|
7979
|
+
}
|
|
7980
|
+
opts.rowWriter.patchRow(values, "autofill");
|
|
7981
|
+
const lotValue = keys.materialNoKey ? formData[keys.materialNoKey] : void 0;
|
|
7982
|
+
if (!isBlank(opts.nextValue) && !isBlank(lotValue)) {
|
|
7983
|
+
try {
|
|
7984
|
+
await validateReinspectionDate({
|
|
7985
|
+
product_id_: String(opts.nextValue),
|
|
7986
|
+
material_no_: lotValue,
|
|
7987
|
+
material_no_id_: keys.materialNoKey ? formData[`${keys.materialNoKey}_id_`] : void 0
|
|
7988
|
+
});
|
|
7989
|
+
} catch (e) {
|
|
7990
|
+
return { abortReinspection: e?.message || String(e) };
|
|
7991
|
+
}
|
|
7992
|
+
}
|
|
7993
|
+
return {};
|
|
7994
|
+
}
|
|
7995
|
+
if (role === FIELD_TYPE.MATERIAL_NO) {
|
|
7996
|
+
if (opts.option?.is_locked_) {
|
|
7997
|
+
opts.rowWriter.patchRow(clearedLotFields(keys.materialNoKey), "autofill");
|
|
7998
|
+
return { abortLocked: opts.option.id_ };
|
|
7999
|
+
}
|
|
8000
|
+
const params = resolveLotValidateParams(keys, formData, opts.option);
|
|
8001
|
+
if (isBlank(params.material_no_) && isBlank(params.material_no_id_)) return {};
|
|
8002
|
+
try {
|
|
8003
|
+
await validateReinspectionDate(params);
|
|
8004
|
+
} catch (e) {
|
|
8005
|
+
opts.rowWriter.patchRow(clearedLotFields(keys.materialNoKey), "async");
|
|
8006
|
+
return { abortReinspection: e?.message || String(e) };
|
|
8007
|
+
}
|
|
8008
|
+
const values = {};
|
|
8009
|
+
const productId = opts.option?.product_id_ ?? opts.option?._item?.product_id_;
|
|
8010
|
+
if (keys.productKey && !isBlank(productId)) values[keys.productKey] = productId;
|
|
8011
|
+
if (keys.bomEntryIdKey && opts.formInstBom) {
|
|
8012
|
+
if (!isBlank(productId)) {
|
|
8013
|
+
const entry = resolveObjectBomEntry({
|
|
8014
|
+
formInstBom: opts.formInstBom,
|
|
8015
|
+
belongingObject,
|
|
8016
|
+
productId: String(productId)
|
|
8017
|
+
});
|
|
8018
|
+
if (entry) values[keys.bomEntryIdKey] = entry.id_;
|
|
8019
|
+
}
|
|
8020
|
+
}
|
|
8021
|
+
const patchRelatedFields = () => opts.rowWriter.patchRow(values, "autofill");
|
|
8022
|
+
if (keys.productKey && !isBlank(productId)) {
|
|
8023
|
+
runWithFillProduct(patchRelatedFields);
|
|
8024
|
+
} else {
|
|
8025
|
+
patchRelatedFields();
|
|
8026
|
+
}
|
|
8027
|
+
return {};
|
|
8028
|
+
}
|
|
8029
|
+
return {};
|
|
8030
|
+
}
|
|
7880
8031
|
const _hoisted_1$5 = ["data-merge", "data-fill-direction"];
|
|
7881
8032
|
const _hoisted_2$1 = {
|
|
7882
8033
|
key: 0,
|
|
@@ -8197,6 +8348,7 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
8197
8348
|
showDisplayStatus,
|
|
8198
8349
|
dataRelationShip
|
|
8199
8350
|
} = useWidgetStaticAttrs(props.widget);
|
|
8351
|
+
const isMockMaterialConsume = computed(() => !!dataRelationShip?.isMockReport && !!props.widget.props.isMaterialConsumeTable);
|
|
8200
8352
|
const sheetId = () => fields.value?.findWidgetById(props.widget.id)?.sheetId;
|
|
8201
8353
|
const subTableCore = props.subTableCore;
|
|
8202
8354
|
provide(NCB_PROVIDE.SUB_TABLE_CORE, subTableCore);
|
|
@@ -8337,6 +8489,9 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
8337
8489
|
key,
|
|
8338
8490
|
actionValue
|
|
8339
8491
|
}) => {
|
|
8492
|
+
if (isMockMaterialConsume.value && (key === SubTableActionEnum.SCAN || key === SubTableActionEnum.Insert1GroupAfter)) {
|
|
8493
|
+
return;
|
|
8494
|
+
}
|
|
8340
8495
|
switch (key) {
|
|
8341
8496
|
case "insertRowBefore":
|
|
8342
8497
|
handleAddRow({
|
|
@@ -8430,10 +8585,11 @@ const DocumentSubTable = /* @__PURE__ */ defineComponent({
|
|
|
8430
8585
|
showRowWatermark,
|
|
8431
8586
|
rowGroupKey
|
|
8432
8587
|
}) => {
|
|
8433
|
-
const
|
|
8588
|
+
const baseMenus = subTableCore?.calcSubTableActionMenu({
|
|
8434
8589
|
rowData,
|
|
8435
8590
|
showDelBtn
|
|
8436
8591
|
});
|
|
8592
|
+
const menus = isMockMaterialConsume.value ? [getMenuByAction(SubTableActionEnum.SCAN), getMenuByAction(SubTableActionEnum.Insert1GroupAfter), ...baseMenus ?? []] : baseMenus;
|
|
8437
8593
|
const annRowDetails = dataRelationShip?.annRowDetails;
|
|
8438
8594
|
const rowMark = dataIdx !== -1 && annRowDetails?.length ? resolveRowFormChangeMark(field, rowData, annRowDetails) : null;
|
|
8439
8595
|
const rowUi = resolveFormChangeRowUi(rowData, rowMark);
|
|
@@ -8746,7 +8902,7 @@ const MaterialConsumeTable = /* @__PURE__ */ defineComponent({
|
|
|
8746
8902
|
const {
|
|
8747
8903
|
showDisplayStatus,
|
|
8748
8904
|
dataRelationShip
|
|
8749
|
-
} = useWidgetStaticAttrs(props);
|
|
8905
|
+
} = useWidgetStaticAttrs(props.widget);
|
|
8750
8906
|
const sheetId = () => fields.value?.findWidgetById(props.widget.id)?.sheetId;
|
|
8751
8907
|
const formModelController = useFormModel().injectController();
|
|
8752
8908
|
const tableController = props.tableController;
|
|
@@ -8935,6 +9091,7 @@ const MaterialConsumeTable = /* @__PURE__ */ defineComponent({
|
|
|
8935
9091
|
}));
|
|
8936
9092
|
};
|
|
8937
9093
|
const handleAction = (action, rowData) => {
|
|
9094
|
+
if (!tableController.hasFormInstance) return;
|
|
8938
9095
|
switch (action) {
|
|
8939
9096
|
case MaterialConsumeActionType.CONFIRM:
|
|
8940
9097
|
tableController.confirm(rowData);
|
|
@@ -9007,6 +9164,7 @@ const MaterialConsumeTable = /* @__PURE__ */ defineComponent({
|
|
|
9007
9164
|
key,
|
|
9008
9165
|
actionValue
|
|
9009
9166
|
}) => {
|
|
9167
|
+
if (!tableController.hasFormInstance) return;
|
|
9010
9168
|
switch (key) {
|
|
9011
9169
|
case "rowEdit":
|
|
9012
9170
|
await tableController.editRow(rowData);
|
|
@@ -9377,7 +9535,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
9377
9535
|
createElementVNode("i", { class: "iconfont icon-zhuyi" }),
|
|
9378
9536
|
createElementVNode("ul", { class: "tips-list" }, [
|
|
9379
9537
|
createElementVNode("li", null, "可将Excel内容粘贴到表格中,支持使用复制、粘贴、删除快捷键"),
|
|
9380
|
-
createElementVNode("li", null, "
|
|
9538
|
+
createElementVNode("li", null, " 表单中支持快速填报的字段类型:文本、长文本、整数、长整数、小数、精度小数、日期、时间、日期时间、批次/SN、报废物料批次、枚举单选、枚举多选(选项间以“,”分割) ")
|
|
9381
9539
|
])
|
|
9382
9540
|
], -1)),
|
|
9383
9541
|
createElementVNode("div", {
|
|
@@ -9402,7 +9560,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
9402
9560
|
};
|
|
9403
9561
|
}
|
|
9404
9562
|
});
|
|
9405
|
-
const FixedQuickFillModal = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-
|
|
9563
|
+
const FixedQuickFillModal = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-58540cb3"]]);
|
|
9406
9564
|
const _hoisted_1$1 = {
|
|
9407
9565
|
key: 1,
|
|
9408
9566
|
class: "sub-table-action__subtitle"
|
|
@@ -10104,7 +10262,7 @@ const DocumentPaper = /* @__PURE__ */ defineComponent({
|
|
|
10104
10262
|
}) : null,
|
|
10105
10263
|
// 在[固定表]顶部的可见单元格上加装操作按钮
|
|
10106
10264
|
tableAction: (() => {
|
|
10107
|
-
const fixedTableActionVisible = fixedTableInfo?.quickFillVisible && !filledFixedTableKeys.value.includes(fixedTableInfo.subFieldKey);
|
|
10265
|
+
const fixedTableActionVisible = props.basicInfo.renderModeType !== RenderModeEnum.ViewMode && fixedTableInfo?.quickFillVisible && !filledFixedTableKeys.value.includes(fixedTableInfo.subFieldKey);
|
|
10108
10266
|
return () => fixedTableActionVisible ? createVNode(_sfc_main$2, {
|
|
10109
10267
|
"tdId": tdId,
|
|
10110
10268
|
"formState": formState.value,
|
|
@@ -10175,7 +10333,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
10175
10333
|
createElementVNode("i", { class: "iconfont icon-zhuyi" }),
|
|
10176
10334
|
createElementVNode("ul", { class: "tips-list" }, [
|
|
10177
10335
|
createElementVNode("li", null, "可将Excel内容粘贴到表格中,支持使用复制、粘贴、删除快捷键"),
|
|
10178
|
-
createElementVNode("li", null, "
|
|
10336
|
+
createElementVNode("li", null, "表单中支持快速填报的字段类型:文本、长文本、整数、长整数、小数、精度小数、日期、时间、日期时间、批次/SN、报废物料批次、枚举单选、枚举多选(选项间以“,”分割)"),
|
|
10179
10337
|
createElementVNode("li", null, "当前快速填报最多支持200行")
|
|
10180
10338
|
])
|
|
10181
10339
|
], -1)),
|
|
@@ -10195,7 +10353,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
10195
10353
|
};
|
|
10196
10354
|
}
|
|
10197
10355
|
});
|
|
10198
|
-
const DynamicQuickFillModal = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-
|
|
10356
|
+
const DynamicQuickFillModal = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-840aca0a"]]);
|
|
10199
10357
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
10200
10358
|
__name: "dynamic-table-action",
|
|
10201
10359
|
props: {
|
|
@@ -10279,109 +10437,117 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
10279
10437
|
});
|
|
10280
10438
|
const DynamicTableAction = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-53d7e66c"]]);
|
|
10281
10439
|
export {
|
|
10282
|
-
|
|
10283
|
-
|
|
10440
|
+
setFormulaParamsConfig as $,
|
|
10441
|
+
getObjectBomProductQuery as A,
|
|
10284
10442
|
BorderTD as B,
|
|
10285
|
-
|
|
10443
|
+
normalizeHistoricalAutofillRow as C,
|
|
10286
10444
|
DEFAULT_BOOLEAN_FIELD_WIDTH as D,
|
|
10287
10445
|
EMPTY_PRODUCT_VERSION_ID as E,
|
|
10288
|
-
|
|
10289
|
-
|
|
10290
|
-
|
|
10291
|
-
|
|
10292
|
-
|
|
10293
|
-
|
|
10294
|
-
|
|
10295
|
-
|
|
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,
|
|
10453
|
+
MAX_RUNTIME_SHEETS as M,
|
|
10296
10454
|
NCB_PROVIDE as N,
|
|
10297
|
-
|
|
10298
|
-
|
|
10299
|
-
|
|
10455
|
+
RequiredQtyCalcRule as O,
|
|
10456
|
+
DocumentPaper as P,
|
|
10457
|
+
DynamicTableAction as Q,
|
|
10300
10458
|
RuntimeFormStateStore as R,
|
|
10301
10459
|
ScanParamType as S,
|
|
10302
|
-
|
|
10303
|
-
|
|
10304
|
-
|
|
10305
|
-
|
|
10306
|
-
|
|
10307
|
-
|
|
10308
|
-
|
|
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,
|
|
10309
10467
|
_sfc_main$5 as _,
|
|
10310
|
-
|
|
10311
|
-
|
|
10312
|
-
|
|
10313
|
-
|
|
10314
|
-
|
|
10315
|
-
|
|
10316
|
-
|
|
10317
|
-
|
|
10318
|
-
|
|
10319
|
-
|
|
10320
|
-
|
|
10321
|
-
|
|
10322
|
-
|
|
10323
|
-
|
|
10324
|
-
|
|
10325
|
-
|
|
10326
|
-
|
|
10327
|
-
|
|
10328
|
-
|
|
10329
|
-
|
|
10330
|
-
|
|
10331
|
-
|
|
10332
|
-
|
|
10333
|
-
|
|
10334
|
-
|
|
10335
|
-
|
|
10336
|
-
|
|
10337
|
-
|
|
10338
|
-
|
|
10339
|
-
|
|
10340
|
-
|
|
10341
|
-
|
|
10342
|
-
|
|
10343
|
-
|
|
10344
|
-
|
|
10345
|
-
|
|
10346
|
-
|
|
10347
|
-
|
|
10348
|
-
|
|
10349
|
-
|
|
10350
|
-
|
|
10351
|
-
|
|
10352
|
-
|
|
10353
|
-
|
|
10354
|
-
|
|
10355
|
-
|
|
10356
|
-
|
|
10357
|
-
|
|
10358
|
-
|
|
10359
|
-
|
|
10360
|
-
|
|
10361
|
-
|
|
10362
|
-
|
|
10363
|
-
|
|
10364
|
-
|
|
10365
|
-
|
|
10366
|
-
|
|
10468
|
+
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,
|
|
10528
|
+
bindFormulaCacheInvalidation as b,
|
|
10529
|
+
currentParamsConfig as c,
|
|
10530
|
+
MULTI_SHEET_SCHEMA_VERSION as d,
|
|
10531
|
+
createRuntimeDocumentV2 as e,
|
|
10532
|
+
findFieldProfile as f,
|
|
10367
10533
|
getBusinessFieldKey as g,
|
|
10368
|
-
|
|
10369
|
-
|
|
10370
|
-
|
|
10371
|
-
|
|
10372
|
-
|
|
10373
|
-
|
|
10534
|
+
normalizeHistoricalBusinessRow as h,
|
|
10535
|
+
DeviceLinkTmplUtil as i,
|
|
10536
|
+
normalizeAIOcrTmpl as j,
|
|
10537
|
+
useWidgetStaticAttrs as k,
|
|
10538
|
+
useRuntimeInstanceServices as l,
|
|
10539
|
+
setSelectAnnotationId as m,
|
|
10374
10540
|
normalizeFieldWidth as n,
|
|
10375
|
-
|
|
10376
|
-
|
|
10377
|
-
|
|
10541
|
+
useRuntimeRowState as o,
|
|
10542
|
+
getObjectBomMaterialLotQuery as p,
|
|
10543
|
+
buildObjectLotExtraQuery as q,
|
|
10378
10544
|
resolveObjectFieldKeys as r,
|
|
10379
10545
|
setSelectValidatorId as s,
|
|
10380
|
-
|
|
10546
|
+
MaterialConsumptionPatternEnum as t,
|
|
10381
10547
|
useFormTmplConfig as u,
|
|
10382
10548
|
validateObjectBomForScan as v,
|
|
10383
|
-
|
|
10384
|
-
|
|
10385
|
-
|
|
10386
|
-
|
|
10549
|
+
resolveObjectBomEntry as w,
|
|
10550
|
+
runWithFillProduct as x,
|
|
10551
|
+
useNocodeFormWidget as y,
|
|
10552
|
+
applyConsumeObjectTraceChange as z
|
|
10387
10553
|
};
|