@byteluck-fe/model-driven-engine 2.11.0-alpha.1 → 2.20.0-beta.1
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/README.md +30 -30
- package/dist/esm/common/ActionManager.js +4 -4
- package/dist/esm/common/Engine.js +52 -52
- package/dist/esm/common/Runtime.js +2 -2
- package/dist/esm/common/Store.js +4 -4
- package/dist/esm/common/proxyState.js +18 -18
- package/dist/esm/plugins/CalcPlugin.js +43 -43
- package/dist/index.umd.js +8 -8
- package/dist/types/common/ActionManager.d.ts +14 -14
- package/dist/types/common/DataManager.d.ts +10 -10
- package/dist/types/common/Engine.d.ts +194 -194
- package/dist/types/common/OkWorker.d.ts +13 -13
- package/dist/types/common/Plugin.d.ts +6 -6
- package/dist/types/common/Runtime.d.ts +31 -31
- package/dist/types/common/Store.d.ts +54 -54
- package/dist/types/common/checkerValue.d.ts +3 -3
- package/dist/types/common/index.d.ts +2 -2
- package/dist/types/common/proxyState.d.ts +30 -30
- package/dist/types/index.d.ts +3 -3
- package/dist/types/plugins/CalcPlugin.d.ts +121 -121
- package/dist/types/plugins/ControlsEventPlugin.d.ts +17 -17
- package/dist/types/plugins/ES6ModulePlugin.d.ts +27 -27
- package/dist/types/plugins/LifecycleEventPlugin.d.ts +15 -15
- package/dist/types/plugins/StylePlugin.d.ts +12 -12
- package/dist/types/plugins/index.d.ts +5 -5
- package/dist/types/utils/index.d.ts +1 -1
- package/dist/types/utils/runtimeUtils.d.ts +5 -5
- package/package.json +4 -4
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
|
+
```
|
|
@@ -186,11 +186,11 @@ export var ActionManager = /*#__PURE__*/ function() {
|
|
|
186
186
|
_class_call_check(this, ActionManager);
|
|
187
187
|
_define_property(this, "actionMap", new Map());
|
|
188
188
|
_define_property(this, "buildinActions", {});
|
|
189
|
-
/**
|
|
190
|
-
* 执行action的时候,作为第二个参数传递给方法,可以通过外部挂载
|
|
189
|
+
/**
|
|
190
|
+
* 执行action的时候,作为第二个参数传递给方法,可以通过外部挂载
|
|
191
191
|
*/ _define_property(this, "actionUtils", {});
|
|
192
|
-
/**
|
|
193
|
-
* 用于存储es module解析出来的源码,CustomVueControlPlugin
|
|
192
|
+
/**
|
|
193
|
+
* 用于存储es module解析出来的源码,CustomVueControlPlugin
|
|
194
194
|
*/ _define_property(this, "sources", {});
|
|
195
195
|
}
|
|
196
196
|
_create_class(ActionManager, [
|
|
@@ -978,9 +978,9 @@ var Engine = /*#__PURE__*/ function(Watcher) {
|
|
|
978
978
|
}
|
|
979
979
|
},
|
|
980
980
|
{
|
|
981
|
-
/**
|
|
982
|
-
* 设置payload的options,提供在不是使用标准api修改state的时候可以传递options,会在本次任务执行完成之后清空
|
|
983
|
-
* @param options 需要携带的options
|
|
981
|
+
/**
|
|
982
|
+
* 设置payload的options,提供在不是使用标准api修改state的时候可以传递options,会在本次任务执行完成之后清空
|
|
983
|
+
* @param options 需要携带的options
|
|
984
984
|
* */ key: "setPayloadOptions",
|
|
985
985
|
value: function setPayloadOptions(options) {
|
|
986
986
|
eventOptionsTemp = options;
|
|
@@ -997,9 +997,9 @@ var Engine = /*#__PURE__*/ function(Watcher) {
|
|
|
997
997
|
}
|
|
998
998
|
},
|
|
999
999
|
{
|
|
1000
|
-
/**
|
|
1001
|
-
* 向Store设置一组值,明细表必须全量赋值,并触发事件(触发事件是根据组件在页面中的顺序逐个触发)
|
|
1002
|
-
* @param states
|
|
1000
|
+
/**
|
|
1001
|
+
* 向Store设置一组值,明细表必须全量赋值,并触发事件(触发事件是根据组件在页面中的顺序逐个触发)
|
|
1002
|
+
* @param states
|
|
1003
1003
|
*/ key: "setStates",
|
|
1004
1004
|
value: function setStates(states, rowIndex, options) {
|
|
1005
1005
|
var _this = this;
|
|
@@ -1026,11 +1026,11 @@ var Engine = /*#__PURE__*/ function(Watcher) {
|
|
|
1026
1026
|
}
|
|
1027
1027
|
},
|
|
1028
1028
|
{
|
|
1029
|
-
/**
|
|
1030
|
-
* 通过dataCode和fieldCode来获取控件的值
|
|
1031
|
-
* @param dataCode 模型编码 - 如果是主表的话就是主表的模型编码,明细子表的话就是子表的模型编码
|
|
1032
|
-
* @param fieldCode 字段编码 - 控件绑定的数据项的编码
|
|
1033
|
-
* @param rowIndex 行下标 - 如果是明细子表中的控件需要提供
|
|
1029
|
+
/**
|
|
1030
|
+
* 通过dataCode和fieldCode来获取控件的值
|
|
1031
|
+
* @param dataCode 模型编码 - 如果是主表的话就是主表的模型编码,明细子表的话就是子表的模型编码
|
|
1032
|
+
* @param fieldCode 字段编码 - 控件绑定的数据项的编码
|
|
1033
|
+
* @param rowIndex 行下标 - 如果是明细子表中的控件需要提供
|
|
1034
1034
|
* */ key: "getField",
|
|
1035
1035
|
value: function getField(dataCode, fieldCode, rowIndex) {
|
|
1036
1036
|
if (!fieldCode) {
|
|
@@ -1141,13 +1141,13 @@ var Engine = /*#__PURE__*/ function(Watcher) {
|
|
|
1141
1141
|
}
|
|
1142
1142
|
},
|
|
1143
1143
|
{
|
|
1144
|
-
/**
|
|
1145
|
-
* 通过dataCode和fieldCode来设置控件的值
|
|
1146
|
-
* @param dataCode 模型编码 - 如果是主表的话就是主表的模型编码,明细子表的话就是子表的模型编码
|
|
1147
|
-
* @param fieldCode 字段编码 - 控件绑定的数据项的编码
|
|
1148
|
-
* @param value 修改的值
|
|
1149
|
-
* @param rowIndex 行下标 - 如果是明细子表中的控件需要提供
|
|
1150
|
-
* @param options 触发事件携带的参数
|
|
1144
|
+
/**
|
|
1145
|
+
* 通过dataCode和fieldCode来设置控件的值
|
|
1146
|
+
* @param dataCode 模型编码 - 如果是主表的话就是主表的模型编码,明细子表的话就是子表的模型编码
|
|
1147
|
+
* @param fieldCode 字段编码 - 控件绑定的数据项的编码
|
|
1148
|
+
* @param value 修改的值
|
|
1149
|
+
* @param rowIndex 行下标 - 如果是明细子表中的控件需要提供
|
|
1150
|
+
* @param options 触发事件携带的参数
|
|
1151
1151
|
* */ key: "setField",
|
|
1152
1152
|
value: function setField(dataCode, fieldCode, value, rowIndex, options) {
|
|
1153
1153
|
var dataBindMapping = this.getDataBindMapping(dataCode, fieldCode);
|
|
@@ -1175,12 +1175,12 @@ var Engine = /*#__PURE__*/ function(Watcher) {
|
|
|
1175
1175
|
}
|
|
1176
1176
|
},
|
|
1177
1177
|
{
|
|
1178
|
-
/**
|
|
1179
|
-
* 通过dataCode和 state来给一组控件赋值,并触发事件携带options
|
|
1180
|
-
* @param dataCode 需要赋值的目标模型
|
|
1181
|
-
* @param state 赋值对象,以fieldCode为key组成的对象
|
|
1182
|
-
* @param rowIndex 行下标,给明细子表赋值时指定赋值某行
|
|
1183
|
-
* @param options 触发事件携带的参数
|
|
1178
|
+
/**
|
|
1179
|
+
* 通过dataCode和 state来给一组控件赋值,并触发事件携带options
|
|
1180
|
+
* @param dataCode 需要赋值的目标模型
|
|
1181
|
+
* @param state 赋值对象,以fieldCode为key组成的对象
|
|
1182
|
+
* @param rowIndex 行下标,给明细子表赋值时指定赋值某行
|
|
1183
|
+
* @param options 触发事件携带的参数
|
|
1184
1184
|
* */ key: "setFields",
|
|
1185
1185
|
value: function setFields(dataCode, state, rowIndex, options) {
|
|
1186
1186
|
var _this = this;
|
|
@@ -1221,10 +1221,10 @@ var Engine = /*#__PURE__*/ function(Watcher) {
|
|
|
1221
1221
|
}
|
|
1222
1222
|
},
|
|
1223
1223
|
{
|
|
1224
|
-
/**
|
|
1225
|
-
* 通过dataCode来将state转化为标准的state结构
|
|
1226
|
-
* @param dataCode 需要转换的目标模型code
|
|
1227
|
-
* @param state 值对象,以fieldCode为key组成的对象
|
|
1224
|
+
/**
|
|
1225
|
+
* 通过dataCode来将state转化为标准的state结构
|
|
1226
|
+
* @param dataCode 需要转换的目标模型code
|
|
1227
|
+
* @param state 值对象,以fieldCode为key组成的对象
|
|
1228
1228
|
* */ key: "buildFields",
|
|
1229
1229
|
value: function buildFields(dataCode, state) {
|
|
1230
1230
|
var _this = this;
|
|
@@ -1265,10 +1265,10 @@ var Engine = /*#__PURE__*/ function(Watcher) {
|
|
|
1265
1265
|
}
|
|
1266
1266
|
},
|
|
1267
1267
|
{
|
|
1268
|
-
/**
|
|
1269
|
-
* 向Store设置一组值,并触发事件携带options
|
|
1270
|
-
* @param dataSet
|
|
1271
|
-
* @options 传递给关联事件中 EventPayload中的options,一般在plugin中监听使用
|
|
1268
|
+
/**
|
|
1269
|
+
* 向Store设置一组值,并触发事件携带options
|
|
1270
|
+
* @param dataSet
|
|
1271
|
+
* @options 传递给关联事件中 EventPayload中的options,一般在plugin中监听使用
|
|
1272
1272
|
*/ key: "setData",
|
|
1273
1273
|
value: function setData(dataSet, options) {
|
|
1274
1274
|
var _this = this;
|
|
@@ -1405,19 +1405,19 @@ var Engine = /*#__PURE__*/ function(Watcher) {
|
|
|
1405
1405
|
}
|
|
1406
1406
|
},
|
|
1407
1407
|
{
|
|
1408
|
-
/**
|
|
1409
|
-
* 获取控件的dataBind
|
|
1410
|
-
* @param controlId
|
|
1408
|
+
/**
|
|
1409
|
+
* 获取控件的dataBind
|
|
1410
|
+
* @param controlId
|
|
1411
1411
|
* */ key: "getDataBind",
|
|
1412
1412
|
value: function getDataBind(controlId) {
|
|
1413
1413
|
return this.store.getDataBind(controlId);
|
|
1414
1414
|
}
|
|
1415
1415
|
},
|
|
1416
1416
|
{
|
|
1417
|
-
/**
|
|
1418
|
-
* 获取组件实例,传入rowIndex代表获取明细表内的控件实例,rowIndex传入-1代表获取表头内的实例
|
|
1419
|
-
* @param controlId
|
|
1420
|
-
* @param rowIndex
|
|
1417
|
+
/**
|
|
1418
|
+
* 获取组件实例,传入rowIndex代表获取明细表内的控件实例,rowIndex传入-1代表获取表头内的实例
|
|
1419
|
+
* @param controlId
|
|
1420
|
+
* @param rowIndex
|
|
1421
1421
|
*/ key: "getInstance",
|
|
1422
1422
|
value: function getInstance(controlId, rowIndex) {
|
|
1423
1423
|
var instances = this.getInstances(controlId, rowIndex === -1);
|
|
@@ -1436,10 +1436,10 @@ var Engine = /*#__PURE__*/ function(Watcher) {
|
|
|
1436
1436
|
}
|
|
1437
1437
|
},
|
|
1438
1438
|
{
|
|
1439
|
-
/**
|
|
1440
|
-
* 获取组件实例,明细表中的组件将会得到数组, 第二个参数为(false/不传入)则获取到的是明细表内不包含表头内实例的所有控件实例,传入true则获取到包含表头内实例的所有控件实例,表头内实例永远在下标0的位置
|
|
1441
|
-
* @param controlId
|
|
1442
|
-
* @param header 明细表内是否获取表头的控件
|
|
1439
|
+
/**
|
|
1440
|
+
* 获取组件实例,明细表中的组件将会得到数组, 第二个参数为(false/不传入)则获取到的是明细表内不包含表头内实例的所有控件实例,传入true则获取到包含表头内实例的所有控件实例,表头内实例永远在下标0的位置
|
|
1441
|
+
* @param controlId
|
|
1442
|
+
* @param header 明细表内是否获取表头的控件
|
|
1443
1443
|
*/ // getInstances(
|
|
1444
1444
|
// controlId?: string,
|
|
1445
1445
|
// header: boolean = false
|
|
@@ -1611,27 +1611,27 @@ var Engine = /*#__PURE__*/ function(Watcher) {
|
|
|
1611
1611
|
},
|
|
1612
1612
|
{
|
|
1613
1613
|
key: "assertInstance",
|
|
1614
|
-
value: /**
|
|
1615
|
-
* 判断控件的类型,返回当前控件的正确类型
|
|
1614
|
+
value: /**
|
|
1615
|
+
* 判断控件的类型,返回当前控件的正确类型
|
|
1616
1616
|
* */ function assertInstance(instance, types) {
|
|
1617
1617
|
return isString(types) ? instance.type === types : types.includes(instance.type);
|
|
1618
1618
|
}
|
|
1619
1619
|
},
|
|
1620
1620
|
{
|
|
1621
1621
|
key: "assertInstanceIsCustomControl",
|
|
1622
|
-
value: /**
|
|
1623
|
-
* 判断控件或控件类型是一个自定义控件
|
|
1622
|
+
value: /**
|
|
1623
|
+
* 判断控件或控件类型是一个自定义控件
|
|
1624
1624
|
* */ function assertInstanceIsCustomControl(instance) {
|
|
1625
1625
|
return !isBuiltInControls(isString(instance) ? instance : instance.type);
|
|
1626
1626
|
}
|
|
1627
1627
|
},
|
|
1628
1628
|
{
|
|
1629
1629
|
key: "getInstanceRowIndex",
|
|
1630
|
-
value: /**
|
|
1631
|
-
* 获取控件在明细子表中的行下标,
|
|
1632
|
-
* 如果控件在表头内,则返回-1
|
|
1633
|
-
* 如果控件在表内,则返回行下标
|
|
1634
|
-
* 如果控件不在明细表内,则返回undefined
|
|
1630
|
+
value: /**
|
|
1631
|
+
* 获取控件在明细子表中的行下标,
|
|
1632
|
+
* 如果控件在表头内,则返回-1
|
|
1633
|
+
* 如果控件在表内,则返回行下标
|
|
1634
|
+
* 如果控件不在明细表内,则返回undefined
|
|
1635
1635
|
* */ // public getInstanceRowIndex(
|
|
1636
1636
|
// instance: ControlRuntimeInstance<ControlsKeys> | RuntimeControl
|
|
1637
1637
|
// ) {
|
|
@@ -301,8 +301,8 @@ function loop(control, parentId, callback) {
|
|
|
301
301
|
function hasHeaderOrFooterControl(control, checkType) {
|
|
302
302
|
return checkType in control.props && isArray(control.props[checkType]);
|
|
303
303
|
}
|
|
304
|
-
/**
|
|
305
|
-
* 控件是否在视图中隐藏,遍历查找所有parent
|
|
304
|
+
/**
|
|
305
|
+
* 控件是否在视图中隐藏,遍历查找所有parent
|
|
306
306
|
* */ function getControlIsHide(control) {
|
|
307
307
|
if (control.props.isHide) {
|
|
308
308
|
return true;
|
package/dist/esm/common/Store.js
CHANGED
|
@@ -69,10 +69,10 @@ var Store = /*#__PURE__*/ function() {
|
|
|
69
69
|
}
|
|
70
70
|
_create_class(Store, [
|
|
71
71
|
{
|
|
72
|
-
/**
|
|
73
|
-
* 使用该方法仅改变数据,不会表单触发事件。明细表可全量赋值也可根据rowIndex进行单独设置
|
|
74
|
-
* @param controlId 组件ID
|
|
75
|
-
* @param value
|
|
72
|
+
/**
|
|
73
|
+
* 使用该方法仅改变数据,不会表单触发事件。明细表可全量赋值也可根据rowIndex进行单独设置
|
|
74
|
+
* @param controlId 组件ID
|
|
75
|
+
* @param value
|
|
76
76
|
*/ key: "setState",
|
|
77
77
|
value: function setState(controlId, value, rowIndex) {
|
|
78
78
|
var _this = this;
|
|
@@ -101,11 +101,11 @@ function ArrayHandler(target, propertyKey, value, thisKey, callback) {
|
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
|
-
/**
|
|
105
|
-
* 返回proxy操作对象
|
|
106
|
-
* @param thisKey 当前对象在上级中的key
|
|
107
|
-
* @param callback 需要在修改的时候,触发的回调函数
|
|
108
|
-
* @param beforeSetCallback 需要在修改之前触发的回调函数,可以进行校验和对值的修改等等,最终的返回值不为undefined就会使用
|
|
104
|
+
/**
|
|
105
|
+
* 返回proxy操作对象
|
|
106
|
+
* @param thisKey 当前对象在上级中的key
|
|
107
|
+
* @param callback 需要在修改的时候,触发的回调函数
|
|
108
|
+
* @param beforeSetCallback 需要在修改之前触发的回调函数,可以进行校验和对值的修改等等,最终的返回值不为undefined就会使用
|
|
109
109
|
* */ function handler(thisKey, callback, beforeSetCallback) {
|
|
110
110
|
return {
|
|
111
111
|
__engineProxy__: true,
|
|
@@ -179,12 +179,12 @@ function ArrayHandler(target, propertyKey, value, thisKey, callback) {
|
|
|
179
179
|
}
|
|
180
180
|
};
|
|
181
181
|
}
|
|
182
|
-
/**
|
|
183
|
-
* 代理state数据
|
|
184
|
-
* @param state 数据对象
|
|
185
|
-
* @param callback 触发set时候的回调函数
|
|
186
|
-
* @param beforeSetCallback
|
|
187
|
-
* @param prevKey 递归对象的key
|
|
182
|
+
/**
|
|
183
|
+
* 代理state数据
|
|
184
|
+
* @param state 数据对象
|
|
185
|
+
* @param callback 触发set时候的回调函数
|
|
186
|
+
* @param beforeSetCallback
|
|
187
|
+
* @param prevKey 递归对象的key
|
|
188
188
|
* */ export function proxyState(state, callback, beforeSetCallback) {
|
|
189
189
|
var prevKey = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : "";
|
|
190
190
|
// 冻结的对象不需要再执行proxy,否则会报错
|
|
@@ -212,10 +212,10 @@ function flatInstanceForChildren(controls) {
|
|
|
212
212
|
});
|
|
213
213
|
return result;
|
|
214
214
|
}
|
|
215
|
-
/**
|
|
216
|
-
* 在flatInstance中通过key查找出对应的instance
|
|
217
|
-
* @param flatInstance 拍平的instance数组
|
|
218
|
-
* @param key 操作的数据在state的key - 可以是深层次的 subtable.0.input等
|
|
215
|
+
/**
|
|
216
|
+
* 在flatInstance中通过key查找出对应的instance
|
|
217
|
+
* @param flatInstance 拍平的instance数组
|
|
218
|
+
* @param key 操作的数据在state的key - 可以是深层次的 subtable.0.input等
|
|
219
219
|
* */ export function findItem(flatInstance, key, instanceMap) {
|
|
220
220
|
if (key === "") return undefined;
|
|
221
221
|
var keys = key.split(".");
|
|
@@ -272,9 +272,9 @@ function getArrayNewArgs(type, args, value) {
|
|
|
272
272
|
return args.slice(0, 2).concat(value);
|
|
273
273
|
}
|
|
274
274
|
}
|
|
275
|
-
/**
|
|
276
|
-
* TODO 数组劫持操作需要模仿vue3进行重构,不再直接劫持原生property
|
|
277
|
-
* 劫持数组api,达到操作数组api的时候,可以同步操作instance
|
|
275
|
+
/**
|
|
276
|
+
* TODO 数组劫持操作需要模仿vue3进行重构,不再直接劫持原生property
|
|
277
|
+
* 劫持数组api,达到操作数组api的时候,可以同步操作instance
|
|
278
278
|
* */ function hijackArrayProperty() {
|
|
279
279
|
proxyArrayApi.forEach(function(key) {
|
|
280
280
|
var oldApiHandler = Array.prototype[key];
|
|
@@ -59,11 +59,11 @@ import { CONTROL_TYPE, CALC_TOKEN_TYPE, CALC_AGGREGATE_TYPE } from "@byteluck-fe
|
|
|
59
59
|
import { format } from "mathjs";
|
|
60
60
|
var DisplayType;
|
|
61
61
|
(function(DisplayType) {
|
|
62
|
-
/**
|
|
63
|
-
* 完全等于
|
|
62
|
+
/**
|
|
63
|
+
* 完全等于
|
|
64
64
|
*/ DisplayType["EQ"] = "EQ";
|
|
65
|
-
/**
|
|
66
|
-
* 包含
|
|
65
|
+
/**
|
|
66
|
+
* 包含
|
|
67
67
|
* */ DisplayType["IN"] = "IN";
|
|
68
68
|
})(DisplayType || (DisplayType = {}));
|
|
69
69
|
export var CalcPlugin = /*#__PURE__*/ function() {
|
|
@@ -72,16 +72,16 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
72
72
|
_class_call_check(this, CalcPlugin);
|
|
73
73
|
_define_property(this, "engine", void 0);
|
|
74
74
|
_define_property(this, "options", void 0);
|
|
75
|
-
/**
|
|
76
|
-
* 所有的计算公式控件
|
|
75
|
+
/**
|
|
76
|
+
* 所有的计算公式控件
|
|
77
77
|
* */ // @ts-ignore
|
|
78
78
|
_define_property(this, "calcControls", []);
|
|
79
|
-
/**
|
|
80
|
-
* key=控件id value=控件修改后需要触发重新计算的计算公式控件组成的数组
|
|
81
|
-
* 存储为一个Map,用于在控件change的时候,重新计算依赖的calc
|
|
79
|
+
/**
|
|
80
|
+
* key=控件id value=控件修改后需要触发重新计算的计算公式控件组成的数组
|
|
81
|
+
* 存储为一个Map,用于在控件change的时候,重新计算依赖的calc
|
|
82
82
|
* */ _define_property(this, "dependenciesTriggerMap", new Map());
|
|
83
|
-
/**
|
|
84
|
-
* 隐藏以后需要被计算的控件
|
|
83
|
+
/**
|
|
84
|
+
* 隐藏以后需要被计算的控件
|
|
85
85
|
* */ _define_property(this, "hideNotRememberControlIds", []);
|
|
86
86
|
_define_property(this, "dontHasPermissionControlIds", []);
|
|
87
87
|
_define_property(this, "cacheComputedResult", {});
|
|
@@ -92,8 +92,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
92
92
|
_create_class(CalcPlugin, [
|
|
93
93
|
{
|
|
94
94
|
key: "getNeedHideRememberControlIds",
|
|
95
|
-
value: /**
|
|
96
|
-
* @description 获取显隐控制的需要被记住值的控件id
|
|
95
|
+
value: /**
|
|
96
|
+
* @description 获取显隐控制的需要被记住值的控件id
|
|
97
97
|
* */ function getNeedHideRememberControlIds() {
|
|
98
98
|
var _this_options;
|
|
99
99
|
if (!((_this_options = this.options) === null || _this_options === void 0 ? void 0 : _this_options.displayBoList)) {
|
|
@@ -110,8 +110,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
110
110
|
},
|
|
111
111
|
{
|
|
112
112
|
key: "getDontHasPermissionControlIds",
|
|
113
|
-
value: /**
|
|
114
|
-
* @description 获取权限控制的隐藏的字段,不需要参与计算
|
|
113
|
+
value: /**
|
|
114
|
+
* @description 获取权限控制的隐藏的字段,不需要参与计算
|
|
115
115
|
* */ function getDontHasPermissionControlIds() {
|
|
116
116
|
var _this_options;
|
|
117
117
|
if (!((_this_options = this.options) === null || _this_options === void 0 ? void 0 : _this_options.behavior)) {
|
|
@@ -127,9 +127,9 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
127
127
|
},
|
|
128
128
|
{
|
|
129
129
|
key: "controlNeedComputedValue",
|
|
130
|
-
value: /**
|
|
131
|
-
* @description 判断控件是否需要被计算
|
|
132
|
-
* @param control 控件
|
|
130
|
+
value: /**
|
|
131
|
+
* @description 判断控件是否需要被计算
|
|
132
|
+
* @param control 控件
|
|
133
133
|
* */ function controlNeedComputedValue(control) {
|
|
134
134
|
if (!control) {
|
|
135
135
|
return false;
|
|
@@ -149,9 +149,9 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
149
149
|
},
|
|
150
150
|
{
|
|
151
151
|
key: "getControlIsHide",
|
|
152
|
-
value: /**
|
|
153
|
-
* @description 获取控件是否被隐藏
|
|
154
|
-
* @param control 控件
|
|
152
|
+
value: /**
|
|
153
|
+
* @description 获取控件是否被隐藏
|
|
154
|
+
* @param control 控件
|
|
155
155
|
* */ function getControlIsHide(control) {
|
|
156
156
|
if (control.props.isHide) {
|
|
157
157
|
return true;
|
|
@@ -180,8 +180,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
180
180
|
},
|
|
181
181
|
{
|
|
182
182
|
key: "resetDependencies",
|
|
183
|
-
value: /**
|
|
184
|
-
* @description 重置依赖,获取所有的计算公式控件,并根据计算公式获取控件依赖关系
|
|
183
|
+
value: /**
|
|
184
|
+
* @description 重置依赖,获取所有的计算公式控件,并根据计算公式获取控件依赖关系
|
|
185
185
|
* */ function resetDependencies() {
|
|
186
186
|
this.calcControls = [];
|
|
187
187
|
this.dependenciesTriggerMap.clear();
|
|
@@ -191,8 +191,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
191
191
|
},
|
|
192
192
|
{
|
|
193
193
|
key: "allCalcControlComputed",
|
|
194
|
-
value: /**
|
|
195
|
-
* @description 执行所有计算公式控件的计算
|
|
194
|
+
value: /**
|
|
195
|
+
* @description 执行所有计算公式控件的计算
|
|
196
196
|
* */ function allCalcControlComputed() {
|
|
197
197
|
var _this = this;
|
|
198
198
|
this.calcControls.forEach(function(item) {
|
|
@@ -206,8 +206,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
206
206
|
},
|
|
207
207
|
{
|
|
208
208
|
key: "getAllCalcControl",
|
|
209
|
-
value: /**
|
|
210
|
-
* @description 获取所有的计算公式控件
|
|
209
|
+
value: /**
|
|
210
|
+
* @description 获取所有的计算公式控件
|
|
211
211
|
* */ function getAllCalcControl() {
|
|
212
212
|
this.calcControls = this.engine.runtime.flatInstances.filter(// @ts-ignore
|
|
213
213
|
function(item) {
|
|
@@ -217,8 +217,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
217
217
|
},
|
|
218
218
|
{
|
|
219
219
|
key: "getCalcDependencies",
|
|
220
|
-
value: /**
|
|
221
|
-
* @description 获取计算公式控件依赖,组成 依赖=>[计算公式] 的Map结构
|
|
220
|
+
value: /**
|
|
221
|
+
* @description 获取计算公式控件依赖,组成 依赖=>[计算公式] 的Map结构
|
|
222
222
|
* */ function getCalcDependencies() {
|
|
223
223
|
var _this = this;
|
|
224
224
|
this.calcControls.forEach(function(item) {
|
|
@@ -270,8 +270,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
270
270
|
},
|
|
271
271
|
{
|
|
272
272
|
key: "watchSchemaHideChange",
|
|
273
|
-
value: /**
|
|
274
|
-
* @description 监听控件的显隐事件,把显隐会影响的控件触发一遍计算
|
|
273
|
+
value: /**
|
|
274
|
+
* @description 监听控件的显隐事件,把显隐会影响的控件触发一遍计算
|
|
275
275
|
* */ function watchSchemaHideChange() {
|
|
276
276
|
var _this = this;
|
|
277
277
|
this.engine.on("schema-change", function(payload) {
|
|
@@ -287,8 +287,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
287
287
|
},
|
|
288
288
|
{
|
|
289
289
|
key: "watchSubtableChange",
|
|
290
|
-
value: /**
|
|
291
|
-
* @description 监听明细子表的change事件,把明细表会影响的控件触发一遍计算
|
|
290
|
+
value: /**
|
|
291
|
+
* @description 监听明细子表的change事件,把明细表会影响的控件触发一遍计算
|
|
292
292
|
* */ function watchSubtableChange() {
|
|
293
293
|
var _this = this;
|
|
294
294
|
this.engine.on("list-change", function(payload) {
|
|
@@ -315,8 +315,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
315
315
|
},
|
|
316
316
|
{
|
|
317
317
|
key: "watchControlChange",
|
|
318
|
-
value: /**
|
|
319
|
-
* @description 监听控件的change事件,当控件change的时候,取到控件会影响的计算公式,然后执行对应的计算
|
|
318
|
+
value: /**
|
|
319
|
+
* @description 监听控件的change事件,当控件change的时候,取到控件会影响的计算公式,然后执行对应的计算
|
|
320
320
|
* */ function watchControlChange() {
|
|
321
321
|
var _this = this;
|
|
322
322
|
this.engine.on("change", function(payload) {
|
|
@@ -351,8 +351,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
351
351
|
},
|
|
352
352
|
{
|
|
353
353
|
key: "controlInSubtable",
|
|
354
|
-
value: /**
|
|
355
|
-
* @description 控件在明细子表内
|
|
354
|
+
value: /**
|
|
355
|
+
* @description 控件在明细子表内
|
|
356
356
|
* */ function controlInSubtable(control) {
|
|
357
357
|
var _control_parent;
|
|
358
358
|
return ((_control_parent = control.parent) === null || _control_parent === void 0 ? void 0 : _control_parent.type) === CONTROL_TYPE.SUBTABLE_COLUMN;
|
|
@@ -360,8 +360,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
360
360
|
},
|
|
361
361
|
{
|
|
362
362
|
key: "computedCalcValue",
|
|
363
|
-
value: /**
|
|
364
|
-
* @description 执行计算公式的计算
|
|
363
|
+
value: /**
|
|
364
|
+
* @description 执行计算公式的计算
|
|
365
365
|
* */ // @ts-ignore
|
|
366
366
|
function computedCalcValue(control) {
|
|
367
367
|
var _this = this;
|
|
@@ -451,8 +451,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
451
451
|
},
|
|
452
452
|
{
|
|
453
453
|
key: "getNumberValue",
|
|
454
|
-
value: /**
|
|
455
|
-
* @description 获取数字值,因为计算公式可以依赖计算公式和金额,所以需要从value中取到对应的值
|
|
454
|
+
value: /**
|
|
455
|
+
* @description 获取数字值,因为计算公式可以依赖计算公式和金额,所以需要从value中取到对应的值
|
|
456
456
|
* */ function getNumberValue(value) {
|
|
457
457
|
if (typeof value === "object" && value) {
|
|
458
458
|
if ("result" in value) {
|
|
@@ -469,8 +469,8 @@ export var CalcPlugin = /*#__PURE__*/ function() {
|
|
|
469
469
|
},
|
|
470
470
|
{
|
|
471
471
|
key: "getAggregateTypeValue",
|
|
472
|
-
value: /**
|
|
473
|
-
* 计算明细子表最大值最小值平均值总和
|
|
472
|
+
value: /**
|
|
473
|
+
* 计算明细子表最大值最小值平均值总和
|
|
474
474
|
* */ function getAggregateTypeValue(values, type) {
|
|
475
475
|
if (!type || !values || !values.length) return 0;
|
|
476
476
|
switch(type){
|