@byteluck-fe/model-driven-engine 4.37.0-lx1 → 5.3.1-1-zt

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 (32) hide show
  1. package/README.md +30 -30
  2. package/dist/esm/common/ActionManager.js +4 -4
  3. package/dist/esm/common/Engine.js +111 -185
  4. package/dist/esm/common/Runtime.js +9 -5
  5. package/dist/esm/common/Store.js +15 -13
  6. package/dist/esm/common/checkerValue.js +1 -1
  7. package/dist/esm/common/proxyState.js +52 -45
  8. package/dist/esm/plugins/CalcPlugin.js +43 -43
  9. package/dist/esm/plugins/ControlsEventPlugin.js +11 -1
  10. package/dist/esm/plugins/StylePlugin.js +32 -10
  11. package/dist/esm/utils/runtimeUtils.js +2 -1
  12. package/dist/index.umd.js +40 -6
  13. package/dist/types/common/ActionManager.d.ts +14 -14
  14. package/dist/types/common/DataManager.d.ts +10 -10
  15. package/dist/types/common/Engine.d.ts +201 -209
  16. package/dist/types/common/OkWorker.d.ts +13 -13
  17. package/dist/types/common/Plugin.d.ts +6 -6
  18. package/dist/types/common/Runtime.d.ts +31 -31
  19. package/dist/types/common/Store.d.ts +54 -54
  20. package/dist/types/common/checkerValue.d.ts +3 -3
  21. package/dist/types/common/index.d.ts +2 -2
  22. package/dist/types/common/proxyState.d.ts +30 -33
  23. package/dist/types/index.d.ts +3 -3
  24. package/dist/types/plugins/CalcPlugin.d.ts +121 -121
  25. package/dist/types/plugins/ControlsEventPlugin.d.ts +17 -15
  26. package/dist/types/plugins/ES6ModulePlugin.d.ts +27 -27
  27. package/dist/types/plugins/LifecycleEventPlugin.d.ts +15 -15
  28. package/dist/types/plugins/StylePlugin.d.ts +13 -12
  29. package/dist/types/plugins/index.d.ts +5 -5
  30. package/dist/types/utils/index.d.ts +1 -1
  31. package/dist/types/utils/runtimeUtils.d.ts +5 -5
  32. package/package.json +10 -6
package/README.md CHANGED
@@ -1,30 +1,30 @@
1
- # Engine
2
- 运行态引擎
3
-
4
- ```
5
- │ index.ts // 入口文件
6
-
7
- ├─common // 引擎相关
8
- │ ActionManager.ts // utils操作管理
9
- │ checkerValue.ts // 表单值校验器
10
- │ DataManager.ts // 数据源容器
11
- │ Engine.ts // 引擎
12
- │ index.ts // 入口
13
- │ OkWorker.ts // 无用
14
- │ Plugin.ts // 插件
15
- │ proxyState.ts // 劫持引擎表单数据
16
- │ Runtime.ts // 控件注册和创建
17
- │ Store.ts // 数据管理
18
-
19
- ├─plugins
20
- │ CalcPlugin.ts // 计算公式插件
21
- │ ControlsEventPlugin.ts // 控件二开事件插件
22
- │ ES6ModulePlugin.ts //
23
- │ index.ts
24
- │ LifecycleEventPlugin.ts // 页面生命周期事件
25
- │ StylePlugin.ts // css二开
26
-
27
- └─utils
28
- index.ts
29
- runtimeUtils.ts // 工具函数
30
- ```
1
+ # Engine
2
+ 运行态引擎
3
+
4
+ ```
5
+ │ index.ts // 入口文件
6
+
7
+ ├─common // 引擎相关
8
+ │ ActionManager.ts // utils操作管理
9
+ │ checkerValue.ts // 表单值校验器
10
+ │ DataManager.ts // 数据源容器
11
+ │ Engine.ts // 引擎
12
+ │ index.ts // 入口
13
+ │ OkWorker.ts // 无用
14
+ │ Plugin.ts // 插件
15
+ │ proxyState.ts // 劫持引擎表单数据
16
+ │ Runtime.ts // 控件注册和创建
17
+ │ Store.ts // 数据管理
18
+
19
+ ├─plugins
20
+ │ CalcPlugin.ts // 计算公式插件
21
+ │ ControlsEventPlugin.ts // 控件二开事件插件
22
+ │ ES6ModulePlugin.ts //
23
+ │ index.ts
24
+ │ LifecycleEventPlugin.ts // 页面生命周期事件
25
+ │ StylePlugin.ts // css二开
26
+
27
+ └─utils
28
+ index.ts
29
+ runtimeUtils.ts // 工具函数
30
+ ```
@@ -182,11 +182,11 @@ export var ActionManager = /*#__PURE__*/ function() {
182
182
  _class_call_check(this, ActionManager);
183
183
  _define_property(this, "actionMap", new Map());
184
184
  _define_property(this, "buildinActions", {});
185
- /**
186
- * 执行action的时候,作为第二个参数传递给方法,可以通过外部挂载
185
+ /**
186
+ * 执行action的时候,作为第二个参数传递给方法,可以通过外部挂载
187
187
  */ _define_property(this, "actionUtils", {});
188
- /**
189
- * 用于存储es module解析出来的源码,CustomVueControlPlugin
188
+ /**
189
+ * 用于存储es module解析出来的源码,CustomVueControlPlugin
190
190
  */ _define_property(this, "sources", {});
191
191
  }
192
192
  _create_class(ActionManager, [
@@ -325,7 +325,7 @@ function _ts_generator(thisArg, body) {
325
325
  }
326
326
  }
327
327
  import { isDataBind } from '@byteluck-fe/model-driven-core';
328
- import { CONTROL_BASE_TYPE, CONTROL_TYPE, DEFAULT_LOCALE, error, genNonDuplicateId, isString, JSONCopy, log, RulesMessage, updateValueFromKeys, warn, Watcher, isBuiltInControls } from '@byteluck-fe/model-driven-shared';
328
+ import { CONTROL_BASE_TYPE, CONTROL_TYPE, DEFAULT_LOCALE, error, genNonDuplicateId, isString, JSONCopy, log, updateValueFromKeys, warn, Watcher, isBuiltInControls } from '@byteluck-fe/model-driven-shared';
329
329
  import { Runtime } from './Runtime';
330
330
  import { Store } from './Store';
331
331
  import { findItem, proxyState } from './proxyState';
@@ -351,18 +351,18 @@ var Engine = /*#__PURE__*/ function(Watcher) {
351
351
  _this = _call_super(this, Engine), _define_property(_this, "store", void 0), _define_property(_this, "rawStore", {}), _define_property(_this, "parent", void 0), // 提供注册运行态控件以及实例化控件的能力
352
352
  _define_property(_this, "runtime", void 0), // 提供子线程处理脚本以及修改数据的能力
353
353
  // public worker: OkWorker
354
- _define_property(_this, "isMounted", false), _define_property(_this, "id", genNonDuplicateId(8)), _define_property(_this, "externalParams", void 0), // 提供外部注册插件,在不同的hooks触发时执行固定函数的能力
354
+ _define_property(_this, "isMounted", false), _define_property(_this, "id", genNonDuplicateId(8)), _define_property(_this, "externalParams", void 0), _define_property(_this, "children", void 0), // 提供外部注册插件,在不同的hooks触发时执行固定函数的能力
355
355
  _define_property(_this, "__plugins", void 0), _define_property(_this, "__pluginsApplied", false), _define_property(_this, "$options", void 0), _define_property(_this, "actionManager", new ActionManager()), _define_property(_this, "dataManager", void 0), _define_property(_this, "_jobTasks", []), _define_property(_this, "createControlInstance", _this.createInstance);
356
356
  _this.$options = Object.freeze(props);
357
357
  var _this_$options = _this.$options, _this_$options_autoMount = _this_$options.autoMount, autoMount = _this_$options_autoMount === void 0 ? true : _this_$options_autoMount, schema = _this_$options.schema, beforeCreateInstance = _this_$options.beforeCreateInstance, externalParams = _this_$options.externalParams, _this_$options_language = _this_$options.// fieldModel,
358
- language, language = _this_$options_language === void 0 ? DEFAULT_LOCALE : _this_$options_language, _this_$options_debug = _this_$options.debug, debug = _this_$options_debug === void 0 ? false : _this_$options_debug;
359
- RulesMessage.setLocale(language);
358
+ language, language = _this_$options_language === void 0 ? DEFAULT_LOCALE : _this_$options_language, _this_$options_debug = _this_$options.debug, debug = _this_$options_debug === void 0 ? false : _this_$options_debug, messagesI18n = _this_$options.messagesI18n, children = _this_$options.children;
360
359
  _this.debug = debug;
361
360
  _this.runtime = new Runtime({
362
361
  schema: schema,
363
362
  beforeCreateInstance: beforeCreateInstance
364
363
  });
365
364
  _this.externalParams = externalParams;
365
+ _this.children = children;
366
366
  _this.store = new Store({
367
367
  instance: _this.runtime.instance
368
368
  });
@@ -437,7 +437,7 @@ var Engine = /*#__PURE__*/ function(Watcher) {
437
437
  {
438
438
  key: "_proxyStateBeforeSetCallback",
439
439
  value: function _proxyStateBeforeSetCallback(state, key, newValue, oldValue) {
440
- var _findItem = findItem(key, this), instance = _findItem.instance, rowIndex = _findItem.rowIndex;
440
+ var instance = findItem(this.runtime.flatInstances, key, this.runtime.instanceMap);
441
441
  // 找不到控件说明不是改动控件上的字段,直接通过
442
442
  if (!instance) {
443
443
  return newValue;
@@ -487,8 +487,7 @@ var Engine = /*#__PURE__*/ function(Watcher) {
487
487
  key: "_handlerArrayUpdate",
488
488
  value: function _handlerArrayUpdate(state, key, type, args, result) {
489
489
  var _this = this;
490
- var instanceItem = findItem(key, this);
491
- var subtable = instanceItem.instance;
490
+ var subtable = findItem(this.runtime.flatInstances, key, this.runtime.instanceMap);
492
491
  // if (!(subtable instanceof RuntimeListControl)) return
493
492
  if (!((subtable === null || subtable === void 0 ? void 0 : subtable.controlType) === CONTROL_BASE_TYPE.LIST)) return;
494
493
  // 新增多行方法
@@ -519,7 +518,6 @@ var Engine = /*#__PURE__*/ function(Watcher) {
519
518
  createdNewRows = createRows(newRowLengths);
520
519
  createdNewRowsData = args;
521
520
  (_subtable_children = subtable.children)[type].apply(_subtable_children, _to_consumable_array(createdNewRows));
522
- this.runtime.getFlatInstances();
523
521
  break;
524
522
  case 'splice':
525
523
  if (args.length > 2) {
@@ -537,7 +535,6 @@ var Engine = /*#__PURE__*/ function(Watcher) {
537
535
  start,
538
536
  replace
539
537
  ].concat(_to_consumable_array(createdNewRows)));
540
- this.runtime.getFlatInstances();
541
538
  // newValues.forEach((item: any, index) => {
542
539
  // let newIndex = start + index
543
540
  // this.setStates(item, newIndex, options)
@@ -553,14 +550,12 @@ var Engine = /*#__PURE__*/ function(Watcher) {
553
550
  isDeleteLastOne = true;
554
551
  }
555
552
  (_subtable_children2 = subtable.children)[type].apply(_subtable_children2, _to_consumable_array(args));
556
- this.runtime.getFlatInstances();
557
553
  }
558
554
  break;
559
555
  default:
560
556
  var // @ts-ignore
561
557
  _subtable_children3;
562
558
  (_subtable_children3 = subtable.children)[type].apply(_subtable_children3, _to_consumable_array(args));
563
- this.runtime.getFlatInstances();
564
559
  break;
565
560
  }
566
561
  if (type === 'splice') {
@@ -575,12 +570,19 @@ var Engine = /*#__PURE__*/ function(Watcher) {
575
570
  }
576
571
  var subtableData = this.getState(subtable.id);
577
572
  this._handlerSubtableUpdateUid(subtableData);
573
+ this.runtime.getFlatInstances();
574
+ var rowIndexs = createdNewRows.map(function(item) {
575
+ var _item_children_, _item_children;
576
+ var subControl = item === null || item === void 0 ? void 0 : (_item_children = item.children) === null || _item_children === void 0 ? void 0 : (_item_children_ = _item_children[0]) === null || _item_children_ === void 0 ? void 0 : _item_children_.children[0];
577
+ return _this.getInstanceRowIndex(subControl);
578
+ });
578
579
  this.emit('list-change', {
579
580
  instance: subtable,
580
581
  value: subtableData,
581
582
  options: Object.assign({}, options, {
582
583
  changed: createdNewRows,
583
584
  data: createdNewRowsData,
585
+ rowIndexs: rowIndexs,
584
586
  deleted: deleted !== null && deleted !== void 0 ? deleted : [],
585
587
  jsonValue: JSON.stringify(subtableData),
586
588
  isDeleteLastOne: isDeleteLastOne,
@@ -609,11 +611,12 @@ var Engine = /*#__PURE__*/ function(Watcher) {
609
611
  {
610
612
  key: "_handlerObjectUpdate",
611
613
  value: function _handlerObjectUpdate(state, key, value, oldValue) {
612
- var _findItem = findItem(key, this), instance = _findItem.instance, rowIndex = _findItem.rowIndex;
614
+ var _this = this;
615
+ var instance = findItem(this.runtime.flatInstances, key, this.runtime.instanceMap);
613
616
  if (!instance) {
614
617
  return;
615
618
  }
616
- var index = rowIndex;
619
+ var index = this.getInstanceRowIndex(instance);
617
620
  var options = eventOptionsTemp || {};
618
621
  // if (instance instanceof RuntimeListControl) {
619
622
  if (instance.controlType === CONTROL_BASE_TYPE.LIST && instance.type === CONTROL_TYPE.SUBTABLE) {
@@ -629,7 +632,6 @@ var Engine = /*#__PURE__*/ function(Watcher) {
629
632
  row && newRows.push(row);
630
633
  }
631
634
  (_instance_children = instance.children).push.apply(_instance_children, _to_consumable_array(newRows));
632
- this.runtime.getFlatInstances();
633
635
  // 这里已经能拿到控件实例,所以在这里触发setStates,触发每一行每一个控件的change事件
634
636
  // for (let i = 0; i < newValue.length; i++) {
635
637
  // this.setStates(newValue[i], i, options)
@@ -637,8 +639,14 @@ var Engine = /*#__PURE__*/ function(Watcher) {
637
639
  var deleted = oldValue !== null && oldValue !== void 0 ? oldValue : [];
638
640
  if ((options === null || options === void 0 ? void 0 : options.setData) === true) {
639
641
  deleted = [];
640
- }
642
+ } else {}
643
+ this.runtime.getFlatInstances();
641
644
  this._handlerSubtableUpdateUid(newValue);
645
+ var rowIndexs = newRows.map(function(item) {
646
+ var _item_children_, _item_children;
647
+ var subControl = item === null || item === void 0 ? void 0 : (_item_children = item.children) === null || _item_children === void 0 ? void 0 : (_item_children_ = _item_children[0]) === null || _item_children_ === void 0 ? void 0 : _item_children_.children[0];
648
+ return _this.getInstanceRowIndex(subControl);
649
+ });
642
650
  this.emit('list-change', {
643
651
  instance: instance,
644
652
  value: value,
@@ -646,6 +654,7 @@ var Engine = /*#__PURE__*/ function(Watcher) {
646
654
  // @ts-ignore
647
655
  changed: newRows,
648
656
  data: newValue,
657
+ rowIndexs: rowIndexs,
649
658
  deleted: deleted,
650
659
  // deleted: oldValue ?? [],
651
660
  type: 'push',
@@ -949,9 +958,9 @@ var Engine = /*#__PURE__*/ function(Watcher) {
949
958
  }
950
959
  },
951
960
  {
952
- /**
953
- * 设置payload的options,提供在不是使用标准api修改state的时候可以传递options,会在本次任务执行完成之后清空
954
- * @param options 需要携带的options
961
+ /**
962
+ * 设置payload的options,提供在不是使用标准api修改state的时候可以传递options,会在本次任务执行完成之后清空
963
+ * @param options 需要携带的options
955
964
  * */ key: "setPayloadOptions",
956
965
  value: function setPayloadOptions(options) {
957
966
  eventOptionsTemp = options;
@@ -968,9 +977,9 @@ var Engine = /*#__PURE__*/ function(Watcher) {
968
977
  }
969
978
  },
970
979
  {
971
- /**
972
- * 向Store设置一组值,明细表必须全量赋值,并触发事件(触发事件是根据组件在页面中的顺序逐个触发)
973
- * @param states
980
+ /**
981
+ * 向Store设置一组值,明细表必须全量赋值,并触发事件(触发事件是根据组件在页面中的顺序逐个触发)
982
+ * @param states
974
983
  */ key: "setStates",
975
984
  value: function setStates(states, rowIndex, options) {
976
985
  var _this = this;
@@ -997,55 +1006,11 @@ var Engine = /*#__PURE__*/ function(Watcher) {
997
1006
  }
998
1007
  },
999
1008
  {
1000
- //理想-获取表单头部信息
1001
- key: "getTitleField",
1002
- value: function getTitleField(key) {
1003
- var titleData = Object.values(this.store.state).filter(function(a) {
1004
- return a.submit_user;
1005
- })[0];
1006
- if (key) {
1007
- return titleData[key];
1008
- } else {
1009
- return titleData;
1010
- }
1011
- }
1012
- },
1013
- {
1014
- //理想-获取系统字段
1015
- key: "getSystemField",
1016
- value: function getSystemField(key) {
1017
- var _this_externalParams;
1018
- var systemCodesMap = [
1019
- 'creator',
1020
- 'process_location',
1021
- 'create_time',
1022
- 'uid',
1023
- 'update_time',
1024
- 'process_status',
1025
- 'process_instance_id',
1026
- 'process_key'
1027
- ];
1028
- var arr = ((_this_externalParams = this.externalParams) === null || _this_externalParams === void 0 ? void 0 : _this_externalParams.data.data_set.values.filter(function(a) {
1029
- return systemCodesMap.some(function(k) {
1030
- return k == a.code;
1031
- });
1032
- })) || [];
1033
- if (key) {
1034
- var _arr_filter_;
1035
- return (_arr_filter_ = arr.filter(function(a) {
1036
- return a.code == key;
1037
- })[0]) === null || _arr_filter_ === void 0 ? void 0 : _arr_filter_.value;
1038
- } else {
1039
- return arr;
1040
- }
1041
- }
1042
- },
1043
- {
1044
- /**
1045
- * 通过dataCode和fieldCode来获取控件的值
1046
- * @param dataCode 模型编码 - 如果是主表的话就是主表的模型编码,明细子表的话就是子表的模型编码
1047
- * @param fieldCode 字段编码 - 控件绑定的数据项的编码
1048
- * @param rowIndex 行下标 - 如果是明细子表中的控件需要提供
1009
+ /**
1010
+ * 通过dataCode和fieldCode来获取控件的值
1011
+ * @param dataCode 模型编码 - 如果是主表的话就是主表的模型编码,明细子表的话就是子表的模型编码
1012
+ * @param fieldCode 字段编码 - 控件绑定的数据项的编码
1013
+ * @param rowIndex 行下标 - 如果是明细子表中的控件需要提供
1049
1014
  * */ key: "getField",
1050
1015
  value: function getField(dataCode, fieldCode, rowIndex) {
1051
1016
  if (!fieldCode) {
@@ -1117,27 +1082,31 @@ var Engine = /*#__PURE__*/ function(Watcher) {
1117
1082
  var _controlIdMapping_key2;
1118
1083
  obj[(_controlIdMapping_key2 = controlIdMapping[key]) === null || _controlIdMapping_key2 === void 0 ? void 0 : _controlIdMapping_key2.dataBind.fieldCode] = getFieldData[key];
1119
1084
  } else if ((_controlIdMapping_key1 = controlIdMapping[key]) === null || _controlIdMapping_key1 === void 0 ? void 0 : (_controlIdMapping_key_dataBind1 = _controlIdMapping_key1.dataBind) === null || _controlIdMapping_key_dataBind1 === void 0 ? void 0 : _controlIdMapping_key_dataBind1.dataCode) {
1120
- var _controlIdMapping_key3;
1121
- // 明细字表只循环一层明细子表未递归
1122
- obj[(_controlIdMapping_key3 = controlIdMapping[key]) === null || _controlIdMapping_key3 === void 0 ? void 0 : _controlIdMapping_key3.dataBind.dataCode] = getFieldData[key].map(function(item) {
1123
- var objChi = {};
1124
- for(var keyChi in item){
1125
- var _controlIdMapping_key_children_keyChi;
1126
- var fieldCode = (_controlIdMapping_key_children_keyChi = controlIdMapping[key].children[keyChi]) === null || _controlIdMapping_key_children_keyChi === void 0 ? void 0 : _controlIdMapping_key_children_keyChi.dataBind.fieldCode;
1127
- //未绑定字段的控件,直接抛弃
1128
- if (fieldCode !== '') {
1129
- if (fieldCode) {
1130
- objChi[fieldCode] = item[keyChi];
1131
- } else {
1132
- for(var keyChi1 in item[keyChi]){
1133
- var _controlIdMapping_key_children_keyChi1;
1134
- objChi[(_controlIdMapping_key_children_keyChi1 = controlIdMapping[key].children[keyChi]) === null || _controlIdMapping_key_children_keyChi1 === void 0 ? void 0 : _controlIdMapping_key_children_keyChi1.dataBind[keyChi1].fieldCode] = item[keyChi][keyChi1];
1085
+ if (!Array.isArray(getFieldData[key])) {
1086
+ // obj[controlIdMapping[key]?.dataBind.dataCode] = ''
1087
+ } else {
1088
+ var _controlIdMapping_key3, _getFieldData_key;
1089
+ // 明细字表只循环一层明细子表未递归
1090
+ obj[(_controlIdMapping_key3 = controlIdMapping[key]) === null || _controlIdMapping_key3 === void 0 ? void 0 : _controlIdMapping_key3.dataBind.dataCode] = (_getFieldData_key = getFieldData[key]) === null || _getFieldData_key === void 0 ? void 0 : _getFieldData_key.map(function(item) {
1091
+ var objChi = {};
1092
+ for(var keyChi in item){
1093
+ var _controlIdMapping_key_children_keyChi;
1094
+ var fieldCode = (_controlIdMapping_key_children_keyChi = controlIdMapping[key].children[keyChi]) === null || _controlIdMapping_key_children_keyChi === void 0 ? void 0 : _controlIdMapping_key_children_keyChi.dataBind.fieldCode;
1095
+ //未绑定字段的控件,直接抛弃
1096
+ if (fieldCode !== '') {
1097
+ if (fieldCode) {
1098
+ objChi[fieldCode] = item[keyChi];
1099
+ } else {
1100
+ for(var keyChi1 in item[keyChi]){
1101
+ var _controlIdMapping_key_children_keyChi1;
1102
+ objChi[(_controlIdMapping_key_children_keyChi1 = controlIdMapping[key].children[keyChi]) === null || _controlIdMapping_key_children_keyChi1 === void 0 ? void 0 : _controlIdMapping_key_children_keyChi1.dataBind[keyChi1].fieldCode] = item[keyChi][keyChi1];
1103
+ }
1135
1104
  }
1136
1105
  }
1137
1106
  }
1138
- }
1139
- return objChi;
1140
- });
1107
+ return objChi;
1108
+ });
1109
+ }
1141
1110
  } else if (controlIdMapping[key]) {
1142
1111
  // 兼容一个控件需要绑定多个字段的情况
1143
1112
  for(var keyChi in getFieldData[key]){
@@ -1156,13 +1125,13 @@ var Engine = /*#__PURE__*/ function(Watcher) {
1156
1125
  }
1157
1126
  },
1158
1127
  {
1159
- /**
1160
- * 通过dataCode和fieldCode来设置控件的值
1161
- * @param dataCode 模型编码 - 如果是主表的话就是主表的模型编码,明细子表的话就是子表的模型编码
1162
- * @param fieldCode 字段编码 - 控件绑定的数据项的编码
1163
- * @param value 修改的值
1164
- * @param rowIndex 行下标 - 如果是明细子表中的控件需要提供
1165
- * @param options 触发事件携带的参数
1128
+ /**
1129
+ * 通过dataCode和fieldCode来设置控件的值
1130
+ * @param dataCode 模型编码 - 如果是主表的话就是主表的模型编码,明细子表的话就是子表的模型编码
1131
+ * @param fieldCode 字段编码 - 控件绑定的数据项的编码
1132
+ * @param value 修改的值
1133
+ * @param rowIndex 行下标 - 如果是明细子表中的控件需要提供
1134
+ * @param options 触发事件携带的参数
1166
1135
  * */ key: "setField",
1167
1136
  value: function setField(dataCode, fieldCode, value, rowIndex, options) {
1168
1137
  var dataBindMapping = this.getDataBindMapping(dataCode, fieldCode);
@@ -1190,12 +1159,12 @@ var Engine = /*#__PURE__*/ function(Watcher) {
1190
1159
  }
1191
1160
  },
1192
1161
  {
1193
- /**
1194
- * 通过dataCode和 state来给一组控件赋值,并触发事件携带options
1195
- * @param dataCode 需要赋值的目标模型
1196
- * @param state 赋值对象,以fieldCode为key组成的对象
1197
- * @param rowIndex 行下标,给明细子表赋值时指定赋值某行
1198
- * @param options 触发事件携带的参数
1162
+ /**
1163
+ * 通过dataCode和 state来给一组控件赋值,并触发事件携带options
1164
+ * @param dataCode 需要赋值的目标模型
1165
+ * @param state 赋值对象,以fieldCode为key组成的对象
1166
+ * @param rowIndex 行下标,给明细子表赋值时指定赋值某行
1167
+ * @param options 触发事件携带的参数
1199
1168
  * */ key: "setFields",
1200
1169
  value: function setFields(dataCode, state, rowIndex, options) {
1201
1170
  var _this = this;
@@ -1236,10 +1205,10 @@ var Engine = /*#__PURE__*/ function(Watcher) {
1236
1205
  }
1237
1206
  },
1238
1207
  {
1239
- /**
1240
- * 通过dataCode来将state转化为标准的state结构
1241
- * @param dataCode 需要转换的目标模型code
1242
- * @param state 值对象,以fieldCode为key组成的对象
1208
+ /**
1209
+ * 通过dataCode来将state转化为标准的state结构
1210
+ * @param dataCode 需要转换的目标模型code
1211
+ * @param state 值对象,以fieldCode为key组成的对象
1243
1212
  * */ key: "buildFields",
1244
1213
  value: function buildFields(dataCode, state) {
1245
1214
  var _this = this;
@@ -1280,10 +1249,10 @@ var Engine = /*#__PURE__*/ function(Watcher) {
1280
1249
  }
1281
1250
  },
1282
1251
  {
1283
- /**
1284
- * 向Store设置一组值,并触发事件携带options
1285
- * @param dataSet
1286
- * @options 传递给关联事件中 EventPayload中的options,一般在plugin中监听使用
1252
+ /**
1253
+ * 向Store设置一组值,并触发事件携带options
1254
+ * @param dataSet
1255
+ * @options 传递给关联事件中 EventPayload中的options,一般在plugin中监听使用
1287
1256
  */ key: "setData",
1288
1257
  value: function setData(dataSet, options) {
1289
1258
  var _this = this;
@@ -1416,23 +1385,24 @@ var Engine = /*#__PURE__*/ function(Watcher) {
1416
1385
  this.setStates(newState, undefined, _object_spread({
1417
1386
  setData: true
1418
1387
  }, options));
1388
+ this.runtime.getFlatInstances();
1419
1389
  this.debugLog("engine setData方法执行完成。");
1420
1390
  }
1421
1391
  },
1422
1392
  {
1423
- /**
1424
- * 获取控件的dataBind
1425
- * @param controlId
1393
+ /**
1394
+ * 获取控件的dataBind
1395
+ * @param controlId
1426
1396
  * */ key: "getDataBind",
1427
1397
  value: function getDataBind(controlId) {
1428
1398
  return this.store.getDataBind(controlId);
1429
1399
  }
1430
1400
  },
1431
1401
  {
1432
- /**
1433
- * 获取组件实例,传入rowIndex代表获取明细表内的控件实例,rowIndex传入-1代表获取表头内的实例
1434
- * @param controlId
1435
- * @param rowIndex
1402
+ /**
1403
+ * 获取组件实例,传入rowIndex代表获取明细表内的控件实例,rowIndex传入-1代表获取表头内的实例
1404
+ * @param controlId
1405
+ * @param rowIndex
1436
1406
  */ key: "getInstance",
1437
1407
  value: function getInstance(controlId, rowIndex) {
1438
1408
  var instances = this.getInstances(controlId, rowIndex === -1);
@@ -1451,10 +1421,10 @@ var Engine = /*#__PURE__*/ function(Watcher) {
1451
1421
  }
1452
1422
  },
1453
1423
  {
1454
- /**
1455
- * 获取组件实例,明细表中的组件将会得到数组, 第二个参数为(false/不传入)则获取到的是明细表内不包含表头内实例的所有控件实例,传入true则获取到包含表头内实例的所有控件实例,表头内实例永远在下标0的位置
1456
- * @param controlId
1457
- * @param header 明细表内是否获取表头的控件
1424
+ /**
1425
+ * 获取组件实例,明细表中的组件将会得到数组, 第二个参数为(false/不传入)则获取到的是明细表内不包含表头内实例的所有控件实例,传入true则获取到包含表头内实例的所有控件实例,表头内实例永远在下标0的位置
1426
+ * @param controlId
1427
+ * @param header 明细表内是否获取表头的控件
1458
1428
  */ // getInstances(
1459
1429
  // controlId?: string,
1460
1430
  // header: boolean = false
@@ -1520,12 +1490,16 @@ var Engine = /*#__PURE__*/ function(Watcher) {
1520
1490
  var instances = Array.from(this.runtime.instanceMap[controlId] || []);
1521
1491
  if (header) {
1522
1492
  // 如果能从flatInstances里边取到,就通过getInstanceInSubtableHeader方法取,取不到则换一种方式
1523
- if (instances.length) {
1524
- var instance = instances[0];
1525
- var headerInstance = this.findSubtableHeadersControl(instance.id);
1526
- if (headerInstance !== undefined) {
1527
- instances.unshift(headerInstance);
1528
- }
1493
+ // if (instances.length) {
1494
+ // const instance: RuntimeControl = instances[0]
1495
+ // const headerInstance = this.findSubtableHeadersControl(instance.id)
1496
+ // if (headerInstance !== undefined) {
1497
+ // instances.unshift(headerInstance)
1498
+ // }
1499
+ // }
1500
+ var headerInstance = this.findSubtableHeadersControl(controlId);
1501
+ if (headerInstance !== undefined) {
1502
+ instances.unshift(headerInstance);
1529
1503
  }
1530
1504
  }
1531
1505
  // @ts-ignore
@@ -1576,54 +1550,6 @@ var Engine = /*#__PURE__*/ function(Watcher) {
1576
1550
  }
1577
1551
  }
1578
1552
  },
1579
- {
1580
- /**
1581
- * 前端二开新增方法,支持给多选控件动态赋值选项和默认值
1582
- * ctx.setInstance('zQX4ViR3c0', 'options', [{ label:'初级:N<2年', value: '初级' },{ label:'高级:N>2年', value: '高级' }]);
1583
- * ctx.setState('zQX4ViR3c0',['初级'])
1584
- * 将以上两个方法封装成一个新的方法setInstanceAndState
1585
- * ctx.setInstanceAndState('uexLafJeGH', 'options', [{ label:'初级:N<2年', value: '初级' ,checked: true},{ label:'初级:N>2年', value: '高级' }]);
1586
- * 可同时设置选项和默认值
1587
- * @param instance
1588
- * @param props
1589
- * @param value
1590
- * @param rowIndex
1591
- */ key: "setInstanceAndState",
1592
- value: function setInstanceAndState(instance, props, value, rowIndex) {
1593
- this.setInstance(instance, props, value, rowIndex);
1594
- if (value && Array.isArray(value)) {
1595
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1596
- try {
1597
- for(var _iterator = value[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
1598
- var item = _step.value;
1599
- if (item.checked) {
1600
- var instanceId = '';
1601
- if (typeof instance !== 'string') {
1602
- instanceId = instance.id;
1603
- } else {
1604
- instanceId = instance;
1605
- }
1606
- this.setState(instanceId, item.value, rowIndex);
1607
- break;
1608
- }
1609
- }
1610
- } catch (err) {
1611
- _didIteratorError = true;
1612
- _iteratorError = err;
1613
- } finally{
1614
- try {
1615
- if (!_iteratorNormalCompletion && _iterator.return != null) {
1616
- _iterator.return();
1617
- }
1618
- } finally{
1619
- if (_didIteratorError) {
1620
- throw _iteratorError;
1621
- }
1622
- }
1623
- }
1624
- }
1625
- }
1626
- },
1627
1553
  {
1628
1554
  key: "getControlIdMapping",
1629
1555
  value: function getControlIdMapping() {
@@ -1638,7 +1564,7 @@ var Engine = /*#__PURE__*/ function(Watcher) {
1638
1564
  }
1639
1565
  var mapping = this.store.dataBindMapping[dataCode];
1640
1566
  if (!mapping) {
1641
- warn("No corresponding dataCode=".concat(dataCode, " was found"));
1567
+ // warn(`No corresponding dataCode=${dataCode} was found`)
1642
1568
  return;
1643
1569
  }
1644
1570
  if (!fieldCode) {
@@ -1648,7 +1574,7 @@ var Engine = /*#__PURE__*/ function(Watcher) {
1648
1574
  return item.fieldCode === fieldCode;
1649
1575
  });
1650
1576
  if (!dataBindMapping) {
1651
- warn("No corresponding fieldCode=".concat(fieldCode, " was found"));
1577
+ // warn(`No corresponding fieldCode=${fieldCode} was found`)
1652
1578
  return;
1653
1579
  }
1654
1580
  return dataBindMapping;
@@ -1674,27 +1600,27 @@ var Engine = /*#__PURE__*/ function(Watcher) {
1674
1600
  },
1675
1601
  {
1676
1602
  key: "assertInstance",
1677
- value: /**
1678
- * 判断控件的类型,返回当前控件的正确类型
1603
+ value: /**
1604
+ * 判断控件的类型,返回当前控件的正确类型
1679
1605
  * */ function assertInstance(instance, types) {
1680
1606
  return isString(types) ? instance.type === types : types.includes(instance.type);
1681
1607
  }
1682
1608
  },
1683
1609
  {
1684
1610
  key: "assertInstanceIsCustomControl",
1685
- value: /**
1686
- * 判断控件或控件类型是一个自定义控件
1611
+ value: /**
1612
+ * 判断控件或控件类型是一个自定义控件
1687
1613
  * */ function assertInstanceIsCustomControl(instance) {
1688
1614
  return !isBuiltInControls(isString(instance) ? instance : instance.type);
1689
1615
  }
1690
1616
  },
1691
1617
  {
1692
1618
  key: "getInstanceRowIndex",
1693
- value: /**
1694
- * 获取控件在明细子表中的行下标,
1695
- * 如果控件在表头内,则返回-1
1696
- * 如果控件在表内,则返回行下标
1697
- * 如果控件不在明细表内,则返回undefined
1619
+ value: /**
1620
+ * 获取控件在明细子表中的行下标,
1621
+ * 如果控件在表头内,则返回-1
1622
+ * 如果控件在表内,则返回行下标
1623
+ * 如果控件不在明细表内,则返回undefined
1698
1624
  * */ // public getInstanceRowIndex(
1699
1625
  // instance: ControlRuntimeInstance<ControlsKeys> | RuntimeControl
1700
1626
  // ) {
@@ -110,6 +110,7 @@ export var Runtime = /*#__PURE__*/ function(RegisterControls) {
110
110
  var instanceMap = {};
111
111
  var controlParentIdMap = {};
112
112
  loop(this._instance, '', function(item, parentId) {
113
+ var _item_parent;
113
114
  // 3.4.1 避免将subtable-row 放到 _flatInstances 中
114
115
  //4.3.0-lh2 将自处注释掉,为使instance.parent能取到父级
115
116
  // if (item.type === 'subtable-row' || item.type === 'subtable-column') {
@@ -129,6 +130,9 @@ export var Runtime = /*#__PURE__*/ function(RegisterControls) {
129
130
  }
130
131
  }
131
132
  instances.push(item);
133
+ if (((_item_parent = item.parent) === null || _item_parent === void 0 ? void 0 : _item_parent.type) === CONTROL_TYPE.SUBTABLE_COLUMN && item.parent.parent === undefined) {
134
+ return;
135
+ }
132
136
  instanceMap[item.id].push(item);
133
137
  });
134
138
  this._flatInstances = instances;
@@ -277,16 +281,16 @@ function loop(control, parentId, callback) {
277
281
  if (hasHeaderOrFooterControl(item, 'headers')) {
278
282
  loop(item.props.headers, item.id, callback);
279
283
  }
280
- if (hasHeaderOrFooterControl(item, 'footers')) {
281
- loop(item.props.footers, item.id, callback);
282
- }
284
+ // if (hasHeaderOrFooterControl(item, 'footers')) {
285
+ // loop((item.props as any).footers, item.id, callback)
286
+ // }
283
287
  });
284
288
  }
285
289
  function hasHeaderOrFooterControl(control, checkType) {
286
290
  return checkType in control.props && isArray(control.props[checkType]);
287
291
  }
288
- /**
289
- * 控件是否在视图中隐藏,遍历查找所有parent
292
+ /**
293
+ * 控件是否在视图中隐藏,遍历查找所有parent
290
294
  * */ function getControlIsHide(control) {
291
295
  if (control.props.isHide) {
292
296
  return true;