@ibiz-template/runtime 0.1.34 → 0.1.36
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/index.esm.js +472 -152
- package/dist/index.system.min.js +1 -1
- package/dist/index.system.min.js.map +1 -1
- package/out/constant/index.d.ts +1 -0
- package/out/constant/index.d.ts.map +1 -1
- package/out/constant/index.js +1 -0
- package/out/constant/value-op.d.ts +82 -0
- package/out/constant/value-op.d.ts.map +1 -0
- package/out/constant/value-op.js +83 -0
- package/out/controller/control/form/search-form/search-form.controller.d.ts +2 -2
- package/out/controller/control/form/search-form/search-form.controller.d.ts.map +1 -1
- package/out/controller/control/form/search-form/search-form.controller.js +11 -3
- package/out/controller/control/md-ctrl/md-ctrl.controller.d.ts +38 -3
- package/out/controller/control/md-ctrl/md-ctrl.controller.d.ts.map +1 -1
- package/out/controller/control/md-ctrl/md-ctrl.controller.js +110 -3
- package/out/controller/control/search-bar/search-bar-filter.controller.d.ts +65 -0
- package/out/controller/control/search-bar/search-bar-filter.controller.d.ts.map +1 -0
- package/out/controller/control/search-bar/search-bar-filter.controller.js +48 -0
- package/out/controller/control/search-bar/search-bar.controller.d.ts +63 -4
- package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
- package/out/controller/control/search-bar/search-bar.controller.js +143 -9
- package/out/de-logic/de-logic-context.d.ts +25 -5
- package/out/de-logic/de-logic-context.d.ts.map +1 -1
- package/out/de-logic/de-logic-context.js +27 -5
- package/out/de-logic/de-logic-node/data-set-node/data-set-node.d.ts.map +1 -1
- package/out/de-logic/de-logic-node/data-set-node/data-set-node.js +2 -2
- package/out/de-logic/de-logic-node/de-action-node/de-action-node.js +1 -1
- package/out/de-logic/de-logic-param/de-logic-param.js +1 -1
- package/out/de-logic/utils/handle-src-val.js +2 -2
- package/out/engine/md-view.engine.d.ts.map +1 -1
- package/out/engine/md-view.engine.js +2 -23
- package/out/interface/controller/controller/control/i-search-bar.controller.d.ts +8 -0
- package/out/interface/controller/controller/control/i-search-bar.controller.d.ts.map +1 -1
- package/out/interface/controller/controller/control/i-search-form.controller.d.ts +2 -2
- package/out/interface/controller/controller/control/i-search-form.controller.d.ts.map +1 -1
- package/out/interface/controller/state/control/i-search-bar.state.d.ts +75 -0
- package/out/interface/controller/state/control/i-search-bar.state.d.ts.map +1 -1
- package/out/interface/service/service/i-app-de.service.d.ts +3 -3
- package/out/interface/service/service/i-app-de.service.d.ts.map +1 -1
- package/out/service/service/entity/de.service.d.ts +5 -4
- package/out/service/service/entity/de.service.d.ts.map +1 -1
- package/out/service/service/entity/de.service.js +9 -5
- package/out/service/service/entity/method/method.js +2 -2
- package/out/ui-logic/ui-logic-context.d.ts +1 -11
- package/out/ui-logic/ui-logic-context.d.ts.map +1 -1
- package/out/ui-logic/ui-logic-context.js +7 -11
- package/out/ui-logic/ui-logic-node/data-set-node/data-set-node.d.ts.map +1 -1
- package/out/ui-logic/ui-logic-node/data-set-node/data-set-node.js +6 -2
- package/out/ui-logic/ui-logic-node/de-action-node/de-action-node.js +1 -1
- package/out/ui-logic/ui-logic-node/de-ui-action-node/de-ui-action-node.d.ts.map +1 -1
- package/out/ui-logic/ui-logic-node/de-ui-action-node/de-ui-action-node.js +1 -1
- package/out/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.d.ts.map +1 -1
- package/out/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.js +1 -2
- package/out/ui-logic/ui-logic-param/ui-logic-param.d.ts.map +1 -1
- package/out/ui-logic/ui-logic-param/ui-logic-param.js +3 -2
- package/out/ui-logic/utils/handle-src-val.d.ts.map +1 -1
- package/out/ui-logic/utils/handle-src-val.js +3 -7
- package/package.json +3 -3
- package/src/constant/index.ts +1 -0
- package/src/constant/value-op.ts +82 -0
- package/src/controller/control/form/search-form/search-form.controller.ts +11 -3
- package/src/controller/control/md-ctrl/md-ctrl.controller.ts +136 -3
- package/src/controller/control/search-bar/search-bar-filter.controller.ts +112 -0
- package/src/controller/control/search-bar/search-bar.controller.ts +165 -9
- package/src/de-logic/de-logic-context.ts +42 -5
- package/src/de-logic/de-logic-node/data-set-node/data-set-node.ts +2 -3
- package/src/de-logic/de-logic-node/de-action-node/de-action-node.ts +1 -1
- package/src/de-logic/de-logic-param/de-logic-param.ts +1 -1
- package/src/de-logic/utils/handle-src-val.ts +2 -2
- package/src/engine/md-view.engine.ts +2 -27
- package/src/interface/controller/controller/control/i-search-bar.controller.ts +10 -1
- package/src/interface/controller/controller/control/i-search-form.controller.ts +2 -2
- package/src/interface/controller/state/control/i-search-bar.state.ts +86 -0
- package/src/interface/service/service/i-app-de.service.ts +3 -3
- package/src/service/service/entity/de.service.ts +15 -6
- package/src/service/service/entity/method/method.ts +2 -2
- package/src/ui-logic/ui-logic-context.ts +7 -11
- package/src/ui-logic/ui-logic-node/data-set-node/data-set-node.ts +6 -3
- package/src/ui-logic/ui-logic-node/de-action-node/de-action-node.ts +1 -1
- package/src/ui-logic/ui-logic-node/de-ui-action-node/de-ui-action-node.ts +2 -0
- package/src/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.ts +3 -4
- package/src/ui-logic/ui-logic-param/ui-logic-param.ts +3 -2
- package/src/ui-logic/utils/handle-src-val.ts +3 -7
|
@@ -49,13 +49,13 @@ export class Method {
|
|
|
49
49
|
let res = null;
|
|
50
50
|
switch (requestMethod) {
|
|
51
51
|
case 'POST':
|
|
52
|
-
res = await this.app.net.post(this.mergeRequestPath(path, methodName), notNilEmpty(data) ? data : params);
|
|
52
|
+
res = await this.app.net.post(this.mergeRequestPath(path, methodName), notNilEmpty(data) ? data : params || {});
|
|
53
53
|
break;
|
|
54
54
|
case 'GET':
|
|
55
55
|
res = await this.app.net.get(this.mergeRequestPath(path, methodName), data || params);
|
|
56
56
|
break;
|
|
57
57
|
case 'PUT': {
|
|
58
|
-
res = await this.app.net.put(this.mergeRequestPath(path, methodName), notNilEmpty(data) ? data : params);
|
|
58
|
+
res = await this.app.net.put(this.mergeRequestPath(path, methodName), notNilEmpty(data) ? data : params || {});
|
|
59
59
|
break;
|
|
60
60
|
}
|
|
61
61
|
case 'DELETE':
|
|
@@ -29,17 +29,7 @@ export declare class UILogicContext {
|
|
|
29
29
|
/**
|
|
30
30
|
* 视图参数
|
|
31
31
|
*/
|
|
32
|
-
get
|
|
33
|
-
/**
|
|
34
|
-
* Creates an instance of DELogicContext.
|
|
35
|
-
* @author lxm
|
|
36
|
-
* @date 2023-03-24 09:15:14
|
|
37
|
-
* @param {Map<string, DELogicParam>} deLogicParams 实体逻辑参数集合
|
|
38
|
-
* @param {IParams} context 上下文
|
|
39
|
-
* @param {IData} data 数据对象
|
|
40
|
-
* @param {IParams} viewParams 视图参数
|
|
41
|
-
* @param {IParams} [opt] 额外参数
|
|
42
|
-
*/
|
|
32
|
+
get viewParam(): IParams;
|
|
43
33
|
/**
|
|
44
34
|
* Creates an instance of UILogicContext.
|
|
45
35
|
* @author lxm
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-logic-context.d.ts","sourceRoot":"","sources":["../../src/ui-logic/ui-logic-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D;;;;;;;GAOG;AACH,qBAAa,cAAc;
|
|
1
|
+
{"version":3,"file":"ui-logic-context.d.ts","sourceRoot":"","sources":["../../src/ui-logic/ui-logic-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D;;;;;;;GAOG;AACH,qBAAa,cAAc;IA4CvB,OAAO,CAAC,aAAa;IACd,UAAU,EAAE,cAAc;IA5CnC;;;;;OAKG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,IAAI,OAAO,IAAI,QAAQ,CAKtB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,KAAK,CAEhB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAKvB;IAED;;;;;;OAMG;gBAEO,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACzC,UAAU,EAAE,cAAc;IAGnC;;;;;;;OAOG;IAEH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAEjC;;;;;;OAMG;IACH,MAAM,EAAE,OAAO,CAAQ;IAEvB;;;;;;OAMG;IACH,SAAS,EAAE,OAAO,CAAS;IAE3B;;;;;;;OAOG;IACH,gBAAgB,EAAE,MAAM,CAAa;IAErC;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAInC;;;;;OAKG;IACH,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQtC;;;;;;OAMG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAIxC"}
|
|
@@ -11,6 +11,9 @@ export class UILogicContext {
|
|
|
11
11
|
* 上下文
|
|
12
12
|
*/
|
|
13
13
|
get context() {
|
|
14
|
+
if (Object.prototype.hasOwnProperty.call(this.params, 'context')) {
|
|
15
|
+
return this.params.context;
|
|
16
|
+
}
|
|
14
17
|
return this.parameters.context;
|
|
15
18
|
}
|
|
16
19
|
/**
|
|
@@ -22,19 +25,12 @@ export class UILogicContext {
|
|
|
22
25
|
/**
|
|
23
26
|
* 视图参数
|
|
24
27
|
*/
|
|
25
|
-
get
|
|
28
|
+
get viewParam() {
|
|
29
|
+
if (Object.prototype.hasOwnProperty.call(this.params, 'viewParam')) {
|
|
30
|
+
return this.params.viewParam;
|
|
31
|
+
}
|
|
26
32
|
return this.parameters.params;
|
|
27
33
|
}
|
|
28
|
-
/**
|
|
29
|
-
* Creates an instance of DELogicContext.
|
|
30
|
-
* @author lxm
|
|
31
|
-
* @date 2023-03-24 09:15:14
|
|
32
|
-
* @param {Map<string, DELogicParam>} deLogicParams 实体逻辑参数集合
|
|
33
|
-
* @param {IParams} context 上下文
|
|
34
|
-
* @param {IData} data 数据对象
|
|
35
|
-
* @param {IParams} viewParams 视图参数
|
|
36
|
-
* @param {IParams} [opt] 额外参数
|
|
37
|
-
*/
|
|
38
34
|
/**
|
|
39
35
|
* Creates an instance of UILogicContext.
|
|
40
36
|
* @author lxm
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-set-node.d.ts","sourceRoot":"","sources":["../../../../src/ui-logic/ui-logic-node/data-set-node/data-set-node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data-set-node.d.ts","sourceRoot":"","sources":["../../../../src/ui-logic/ui-logic-node/data-set-node/data-set-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACH,qBAAa,WAAY,SAAQ,WAAW;IAClC,KAAK,EAAE,mBAAmB,CAAC;IAE7B,IAAI,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAsB/C"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RuntimeModelError } from '@ibiz-template/core';
|
|
1
2
|
import { UILogicNode } from '../ui-logic-node';
|
|
2
3
|
/**
|
|
3
4
|
* 数据集合节点
|
|
@@ -11,9 +12,12 @@ import { UILogicNode } from '../ui-logic-node';
|
|
|
11
12
|
export class DataSetNode extends UILogicNode {
|
|
12
13
|
async exec(ctx) {
|
|
13
14
|
const { dstAppDEDataSetId, dstAppDataEntityId, dstDEUILogicParamId, retDEUILogicParamId, } = this.model;
|
|
14
|
-
|
|
15
|
+
if (!dstDEUILogicParamId) {
|
|
16
|
+
throw new RuntimeModelError(this.model, '缺少配置过滤参数');
|
|
17
|
+
}
|
|
18
|
+
const queryParams = ctx.params[dstDEUILogicParamId];
|
|
15
19
|
const app = ibiz.hub.getApp(ctx.context.srfappid);
|
|
16
|
-
const res = await app.deService.exec(dstAppDataEntityId, dstAppDEDataSetId, ctx.context,
|
|
20
|
+
const res = await app.deService.exec(dstAppDataEntityId, dstAppDEDataSetId, ctx.context, queryParams);
|
|
17
21
|
if (res.ok) {
|
|
18
22
|
ctx.params[retDEUILogicParamId] = res.data;
|
|
19
23
|
}
|
|
@@ -20,7 +20,7 @@ export class DEActionNode extends UILogicNode {
|
|
|
20
20
|
}
|
|
21
21
|
const requestData = ctx.params[dstDEUILogicParamId];
|
|
22
22
|
const app = ibiz.hub.getApp(ctx.context.srfappid);
|
|
23
|
-
const res = await app.deService.exec(dstAppDataEntityId, dstAppDEActionId, ctx.context, requestData, ctx.
|
|
23
|
+
const res = await app.deService.exec(dstAppDataEntityId, dstAppDEActionId, ctx.context, requestData, ctx.viewParam);
|
|
24
24
|
if (res.ok) {
|
|
25
25
|
ctx.params[retDEUILogicParamId] = res.data;
|
|
26
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de-ui-action-node.d.ts","sourceRoot":"","sources":["../../../../src/ui-logic/ui-logic-node/de-ui-action-node/de-ui-action-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,WAAW;IACrC,KAAK,EAAE,gBAAgB,CAAC;IAE1B,IAAI,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"de-ui-action-node.d.ts","sourceRoot":"","sources":["../../../../src/ui-logic/ui-logic-node/de-ui-action-node/de-ui-action-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,WAAW;IACrC,KAAK,EAAE,gBAAgB,CAAC;IAE1B,IAAI,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAuB/C"}
|
|
@@ -27,6 +27,6 @@ export class DEUIActionNode extends UILogicNode {
|
|
|
27
27
|
actionData = [param];
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
await UIActionUtil.execAndResolved(dstAppDEUIActionId, Object.assign(Object.assign({}, parameters), { data: actionData }));
|
|
30
|
+
await UIActionUtil.execAndResolved(dstAppDEUIActionId, Object.assign(Object.assign({}, parameters), { context: ctx.context, params: ctx.viewParam, data: actionData }));
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-de-logic-node.d.ts","sourceRoot":"","sources":["../../../../src/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IACzC,KAAK,EAAE,iBAAiB,CAAC;IAE3B,IAAI,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"execute-de-logic-node.d.ts","sourceRoot":"","sources":["../../../../src/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IACzC,KAAK,EAAE,iBAAiB,CAAC;IAE3B,IAAI,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAqC/C"}
|
|
@@ -27,8 +27,7 @@ export class ExecuteDELogicNode extends UILogicNode {
|
|
|
27
27
|
if (!dstParam) {
|
|
28
28
|
throw new RuntimeError(`没有找到传入参数${dstDEUILogicParamId}`);
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
const result = await execDELogicById(dstAppDELogicId, dstAppDataEntityId, dstParam.context, dstParam.data, dstParam.params);
|
|
30
|
+
const result = await execDELogicById(dstAppDELogicId, dstAppDataEntityId, ctx.context, dstParam, ctx.params);
|
|
32
31
|
// 如果有返回值参数返回值填入。
|
|
33
32
|
if (retDEUILogicParamId) {
|
|
34
33
|
ctx.params[retDEUILogicParamId] = result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-logic-param.d.ts","sourceRoot":"","sources":["../../../src/ui-logic/ui-logic-param/ui-logic-param.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;;GAOG;AACH,qBAAa,YAAY;IAQJ,KAAK,EAAE,eAAe;IAPzC;;;;;;OAMG;gBACgB,KAAK,EAAE,eAAe;IAEzC;;;;;;OAMG;IACH,IAAI,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"ui-logic-param.d.ts","sourceRoot":"","sources":["../../../src/ui-logic/ui-logic-param/ui-logic-param.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;;GAOG;AACH,qBAAa,YAAY;IAQJ,KAAK,EAAE,eAAe;IAPzC;;;;;;OAMG;gBACgB,KAAK,EAAE,eAAe;IAEzC;;;;;;OAMG;IACH,IAAI,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAsE/B;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;CAWjC"}
|
|
@@ -28,7 +28,8 @@ export class UILogicParam {
|
|
|
28
28
|
calc(ctx) {
|
|
29
29
|
const tag = this.model.id;
|
|
30
30
|
const m = this.model;
|
|
31
|
-
const {
|
|
31
|
+
const { parameters } = ctx;
|
|
32
|
+
const { context, params, data } = parameters;
|
|
32
33
|
const app = ibiz.hub.getApp(context.srfappid);
|
|
33
34
|
// 特殊变量的特殊处理
|
|
34
35
|
if (m.codeName === 'layoutPanel') {
|
|
@@ -103,7 +104,7 @@ export class UILogicParam {
|
|
|
103
104
|
}
|
|
104
105
|
else if (m.viewNavDataParam) {
|
|
105
106
|
// 视图导航数据
|
|
106
|
-
ctx.params[tag] =
|
|
107
|
+
ctx.params[tag] = params;
|
|
107
108
|
}
|
|
108
109
|
else if (m.viewSessionParam) {
|
|
109
110
|
throw new ModelError(m, `未支持的逻辑参数类型: 当前视图会话`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-src-val.d.ts","sourceRoot":"","sources":["../../../src/ui-logic/utils/handle-src-val.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,KAAK,YAAY,GAAG;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,YAAY,GACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"handle-src-val.d.ts","sourceRoot":"","sources":["../../../src/ui-logic/utils/handle-src-val.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,KAAK,YAAY,GAAG;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,YAAY,GACzB,OAAO,CAyDT"}
|
|
@@ -15,16 +15,12 @@ export function handleSrcVal(ctx, srcValParams) {
|
|
|
15
15
|
// 没有源值类型就是逻辑参数
|
|
16
16
|
const srcValueType = srcValParams.srcValueType || 'SRCDLPARAM';
|
|
17
17
|
// 取属性值
|
|
18
|
-
|
|
18
|
+
const srcField = srcFieldName;
|
|
19
19
|
let value;
|
|
20
20
|
switch (srcValueType) {
|
|
21
21
|
// 源逻辑参数
|
|
22
22
|
case 'SRCDLPARAM':
|
|
23
23
|
value = ctx.params[srcDEUILogicParamId];
|
|
24
|
-
// 如果是实体参数对象则转换成小写。
|
|
25
|
-
if (ctx.isEntityParam(srcDEUILogicParamId)) {
|
|
26
|
-
srcField = srcField === null || srcField === void 0 ? void 0 : srcField.toLowerCase();
|
|
27
|
-
}
|
|
28
24
|
break;
|
|
29
25
|
// 空值类型
|
|
30
26
|
case 'NULLVALUE':
|
|
@@ -37,13 +33,13 @@ export function handleSrcVal(ctx, srcValParams) {
|
|
|
37
33
|
return ibiz.util.rawValue.format(srcValue);
|
|
38
34
|
case 'WEBCONTEXT': // 网页请求上下文
|
|
39
35
|
case 'VIEWPARAM': // 视图参数
|
|
40
|
-
value = ctx.
|
|
36
|
+
value = ctx.parameters.params;
|
|
41
37
|
break;
|
|
42
38
|
case 'APPLICATION': // 系统全局对象
|
|
43
39
|
case 'SESSION': // 用户全局对象
|
|
44
40
|
case 'APPDATA': // 应用上下文
|
|
45
41
|
case 'DATACONTEXT': // 数据上下文
|
|
46
|
-
value = ctx.context;
|
|
42
|
+
value = ctx.parameters.context;
|
|
47
43
|
break;
|
|
48
44
|
// 当前环境参数
|
|
49
45
|
case 'ENVPARAM':
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibiz-template/runtime",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.36",
|
|
4
4
|
"description": "控制器包",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "out/index.js",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"author": "chitanda",
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@ibiz-template/core": "^0.1.
|
|
32
|
+
"@ibiz-template/core": "^0.1.36",
|
|
33
33
|
"@ibiz/model-core": "^0.0.19",
|
|
34
34
|
"@types/path-browserify": "^1.0.0",
|
|
35
35
|
"@types/qs": "^6.9.8",
|
|
@@ -57,5 +57,5 @@
|
|
|
57
57
|
"qx-util": "^0.4.8",
|
|
58
58
|
"ramda": "^0.29.0"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "d19f35594e34c2e934ae10d094c47c92faa25a8f"
|
|
61
61
|
}
|
package/src/constant/index.ts
CHANGED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/* eslint-disable no-shadow */
|
|
2
|
+
/**
|
|
3
|
+
* 值操作
|
|
4
|
+
* @author lxm
|
|
5
|
+
* @date 2023-10-13 11:37:48
|
|
6
|
+
* @export
|
|
7
|
+
* @enum {number}
|
|
8
|
+
*/
|
|
9
|
+
export enum ValueOP {
|
|
10
|
+
/**
|
|
11
|
+
* 等于
|
|
12
|
+
*/
|
|
13
|
+
'EQ' = 'EQ',
|
|
14
|
+
/**
|
|
15
|
+
* 不等于
|
|
16
|
+
*/
|
|
17
|
+
'NOT_EQ' = 'NOTEQ',
|
|
18
|
+
/**
|
|
19
|
+
* 大于
|
|
20
|
+
*/
|
|
21
|
+
'GT' = 'GT',
|
|
22
|
+
/**
|
|
23
|
+
* 大于等于
|
|
24
|
+
*/
|
|
25
|
+
'GT_AND_EQ' = 'GTANDEQ',
|
|
26
|
+
/**
|
|
27
|
+
* 小于
|
|
28
|
+
*/
|
|
29
|
+
'LT' = 'LT',
|
|
30
|
+
/**
|
|
31
|
+
* 小于等于
|
|
32
|
+
*/
|
|
33
|
+
'LT_AND_EQ' = 'LTANDEQ',
|
|
34
|
+
/**
|
|
35
|
+
* 值为空
|
|
36
|
+
*/
|
|
37
|
+
'IS_NULL' = 'ISNULL',
|
|
38
|
+
/**
|
|
39
|
+
* 值不为空
|
|
40
|
+
*/
|
|
41
|
+
'IS_NOT_NULL' = 'ISNOTNULL',
|
|
42
|
+
/**
|
|
43
|
+
* 值在范围中
|
|
44
|
+
*/
|
|
45
|
+
'IN' = 'IN',
|
|
46
|
+
/**
|
|
47
|
+
* 值不在范围中
|
|
48
|
+
*/
|
|
49
|
+
'NOT_IN' = 'NOTIN',
|
|
50
|
+
/**
|
|
51
|
+
* 文本包含
|
|
52
|
+
*/
|
|
53
|
+
'LIKE' = 'LIKE',
|
|
54
|
+
/**
|
|
55
|
+
* 文本左包含
|
|
56
|
+
*/
|
|
57
|
+
'LIFT_LIKE' = 'LIFTLIKE',
|
|
58
|
+
/**
|
|
59
|
+
* 文本右包含
|
|
60
|
+
*/
|
|
61
|
+
'RIGHT_LIKE' = 'RIGHT_LIKE',
|
|
62
|
+
/**
|
|
63
|
+
* 子数据(递归)
|
|
64
|
+
*/
|
|
65
|
+
'CHILD_OF' = 'CHILDOF',
|
|
66
|
+
/**
|
|
67
|
+
* 自定义文本包含
|
|
68
|
+
*/
|
|
69
|
+
'USER_LIKE' = 'USERLIKE',
|
|
70
|
+
/**
|
|
71
|
+
* 位与操作(BitAnd)(仅限整数形)
|
|
72
|
+
*/
|
|
73
|
+
'BIT_AND' = 'BITAND',
|
|
74
|
+
/**
|
|
75
|
+
* 存在引用数据
|
|
76
|
+
*/
|
|
77
|
+
'EXISTS' = 'EXISTS',
|
|
78
|
+
/**
|
|
79
|
+
* 不存在引用数据
|
|
80
|
+
*/
|
|
81
|
+
'NOT_EXISTS' = 'NOTEXISTS',
|
|
82
|
+
}
|
|
@@ -82,14 +82,22 @@ export class SearchFormController
|
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
/**
|
|
85
|
-
*
|
|
85
|
+
* 获取搜索表单的过滤参数
|
|
86
86
|
*
|
|
87
87
|
* @author lxm
|
|
88
88
|
* @date 2022-09-22 17:09:21
|
|
89
89
|
* @returns {*} {IParams}
|
|
90
90
|
*/
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
getFilterParams(): IParams {
|
|
92
|
+
const filterParams: IParams = {};
|
|
93
|
+
Object.keys(this.state.data).forEach(key => {
|
|
94
|
+
const value = this.state.data[key];
|
|
95
|
+
// 排除空值
|
|
96
|
+
if (value !== null && value !== undefined && value !== '') {
|
|
97
|
+
filterParams[key] = value;
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
return filterParams;
|
|
93
101
|
}
|
|
94
102
|
|
|
95
103
|
/**
|
|
@@ -3,12 +3,16 @@ import {
|
|
|
3
3
|
IUIActionGroup,
|
|
4
4
|
IUIActionGroupDetail,
|
|
5
5
|
} from '@ibiz/model-core';
|
|
6
|
+
import { RuntimeModelError } from '@ibiz-template/core';
|
|
7
|
+
import { isNil } from 'ramda';
|
|
6
8
|
import {
|
|
7
9
|
IMobMDCtrlEvent,
|
|
8
10
|
IMobMDCtrlController,
|
|
9
11
|
IMobMdCtrlState,
|
|
10
12
|
IMobMDCtrlRowState,
|
|
11
13
|
MDCtrlLoadParams,
|
|
14
|
+
IMDControlGroupState,
|
|
15
|
+
CodeListItem,
|
|
12
16
|
} from '../../../interface';
|
|
13
17
|
import { MDCtrlService } from './md-ctrl.service';
|
|
14
18
|
import { MobMDCtrlRowState } from './md-ctrl-row.state';
|
|
@@ -31,6 +35,16 @@ export class MDCtrlController
|
|
|
31
35
|
this.state.mdctrlActiveMode = 1;
|
|
32
36
|
}
|
|
33
37
|
|
|
38
|
+
/**
|
|
39
|
+
* 分组代码表项集合
|
|
40
|
+
*
|
|
41
|
+
* @author zk
|
|
42
|
+
* @date 2023-10-11 04:10:06
|
|
43
|
+
* @type {readonly}
|
|
44
|
+
* @memberof MDCtrlController
|
|
45
|
+
*/
|
|
46
|
+
groupCodeListItems?: readonly CodeListItem[];
|
|
47
|
+
|
|
34
48
|
protected async onCreated(): Promise<void> {
|
|
35
49
|
await super.onCreated();
|
|
36
50
|
this.service = new MDCtrlService(this.model);
|
|
@@ -86,7 +100,10 @@ export class MDCtrlController
|
|
|
86
100
|
await this.load({ isInitialLoad: true });
|
|
87
101
|
}
|
|
88
102
|
|
|
89
|
-
afterLoad(
|
|
103
|
+
async afterLoad(
|
|
104
|
+
args: MDCtrlLoadParams,
|
|
105
|
+
items: ControlVO[],
|
|
106
|
+
): Promise<IData[]> {
|
|
90
107
|
if (args.isInitialLoad) {
|
|
91
108
|
this.state.rows = [];
|
|
92
109
|
}
|
|
@@ -99,6 +116,8 @@ export class MDCtrlController
|
|
|
99
116
|
}),
|
|
100
117
|
);
|
|
101
118
|
}
|
|
119
|
+
await this.initGroupCodeListItems();
|
|
120
|
+
await this.handleDataGroup();
|
|
102
121
|
return super.afterLoad(args, items);
|
|
103
122
|
}
|
|
104
123
|
|
|
@@ -108,7 +127,7 @@ export class MDCtrlController
|
|
|
108
127
|
* @author zk
|
|
109
128
|
* @date 2023-05-26 02:05:46
|
|
110
129
|
* @param {IData[]} items
|
|
111
|
-
* @memberof
|
|
130
|
+
* @memberof MDCtrlController
|
|
112
131
|
*/
|
|
113
132
|
setData(items: IData[]): void {
|
|
114
133
|
const rows = items.map(item => {
|
|
@@ -124,7 +143,7 @@ export class MDCtrlController
|
|
|
124
143
|
* @author zk
|
|
125
144
|
* @date 2023-05-26 02:05:35
|
|
126
145
|
* @return {*} {IData[]}
|
|
127
|
-
* @memberof
|
|
146
|
+
* @memberof MDCtrlController
|
|
128
147
|
*/
|
|
129
148
|
getAllData(): IData[] {
|
|
130
149
|
return this.state.rows.map(row => row.data);
|
|
@@ -196,4 +215,118 @@ export class MDCtrlController
|
|
|
196
215
|
containerState.update(row.data.getOrigin());
|
|
197
216
|
row.uaColStates[group.id!] = containerState;
|
|
198
217
|
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* 处理数据分组
|
|
221
|
+
*
|
|
222
|
+
* @memberof MDCtrlController
|
|
223
|
+
*/
|
|
224
|
+
protected async handleDataGroup(): Promise<void> {
|
|
225
|
+
const { enableGroup, groupMode, groupAppDEFieldId } = this.model;
|
|
226
|
+
if (enableGroup && groupMode) {
|
|
227
|
+
if (!groupAppDEFieldId) {
|
|
228
|
+
throw new RuntimeModelError(this.model, '分组属性没有配置');
|
|
229
|
+
}
|
|
230
|
+
if (groupMode === 'AUTO') {
|
|
231
|
+
this.handleAutoGroup();
|
|
232
|
+
} else if (groupMode === 'CODELIST') {
|
|
233
|
+
await this.handleCodeListGroup();
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* 处理自动分组
|
|
240
|
+
*
|
|
241
|
+
* @memberof MDCtrlController
|
|
242
|
+
*/
|
|
243
|
+
protected handleAutoGroup(): void {
|
|
244
|
+
const { groupAppDEFieldId } = this.model;
|
|
245
|
+
if (groupAppDEFieldId) {
|
|
246
|
+
const { items } = this.state;
|
|
247
|
+
const groupMap: Map<string, MobMDCtrlRowState[]> = new Map();
|
|
248
|
+
items.forEach((item: IData) => {
|
|
249
|
+
const groupVal = item[groupAppDEFieldId];
|
|
250
|
+
if (isNil(groupVal)) {
|
|
251
|
+
// 分组无值的不显示
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
if (!groupMap.has(groupVal)) {
|
|
256
|
+
groupMap.set(groupVal, []);
|
|
257
|
+
}
|
|
258
|
+
groupMap
|
|
259
|
+
.get(groupVal)!
|
|
260
|
+
.push(new MobMDCtrlRowState(item as ControlVO, this));
|
|
261
|
+
});
|
|
262
|
+
const groups: IMDControlGroupState[] = [];
|
|
263
|
+
groupMap.forEach((value: IData[], key: string) => {
|
|
264
|
+
groups.push({
|
|
265
|
+
caption: key,
|
|
266
|
+
key,
|
|
267
|
+
children: [...value],
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
this.state.groups = groups;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* 加载并初始化分组代码表项集合
|
|
276
|
+
* @author lxm
|
|
277
|
+
* @date 2023-08-29 05:11:39
|
|
278
|
+
* @protected
|
|
279
|
+
* @return {*} {Promise<void>}
|
|
280
|
+
*/
|
|
281
|
+
protected async initGroupCodeListItems(): Promise<void> {
|
|
282
|
+
const { groupCodeListId } = this.model;
|
|
283
|
+
if (!groupCodeListId) {
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
const app = ibiz.hub.getApp(this.context.srfappid);
|
|
287
|
+
this.groupCodeListItems = await app.codeList.get(
|
|
288
|
+
groupCodeListId,
|
|
289
|
+
this.context,
|
|
290
|
+
this.params,
|
|
291
|
+
);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* 处理代码表分组
|
|
296
|
+
*
|
|
297
|
+
* @memberof MDCtrlController
|
|
298
|
+
*/
|
|
299
|
+
protected async handleCodeListGroup(): Promise<void> {
|
|
300
|
+
const { groupAppDEFieldId, groupCodeListId } = this.model;
|
|
301
|
+
if (!groupCodeListId) {
|
|
302
|
+
throw new RuntimeModelError(this.model, '分组代码表没有配置');
|
|
303
|
+
}
|
|
304
|
+
const { items } = this.state;
|
|
305
|
+
const groupMap: Map<string | number, MobMDCtrlRowState[]> = new Map();
|
|
306
|
+
this.groupCodeListItems!.forEach(item => {
|
|
307
|
+
groupMap.set(item.value, []);
|
|
308
|
+
});
|
|
309
|
+
items.forEach((item: IData) => {
|
|
310
|
+
const groupVal = item[groupAppDEFieldId!];
|
|
311
|
+
const groupArr = groupMap.get(groupVal);
|
|
312
|
+
if (groupArr) {
|
|
313
|
+
groupArr.push(new MobMDCtrlRowState(item as ControlVO, this));
|
|
314
|
+
}
|
|
315
|
+
// 不在代码表里数据忽略
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
const groups: IMDControlGroupState[] = [];
|
|
319
|
+
groupMap.forEach((arr, key) => {
|
|
320
|
+
// 标题
|
|
321
|
+
const codeListItem = this.groupCodeListItems!.find(
|
|
322
|
+
item => item.value === key,
|
|
323
|
+
)!;
|
|
324
|
+
groups.push({
|
|
325
|
+
caption: codeListItem.text,
|
|
326
|
+
key: codeListItem.value,
|
|
327
|
+
children: arr,
|
|
328
|
+
});
|
|
329
|
+
});
|
|
330
|
+
this.state.groups = groups;
|
|
331
|
+
}
|
|
199
332
|
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { RuntimeModelError } from '@ibiz-template/core';
|
|
2
|
+
import { IAppDEField, ISearchBarFilter } from '@ibiz/model-core';
|
|
3
|
+
import {
|
|
4
|
+
IEditorContainerController,
|
|
5
|
+
IEditorController,
|
|
6
|
+
IEditorProvider,
|
|
7
|
+
} from '../../../interface';
|
|
8
|
+
import { findFieldById } from '../../../model';
|
|
9
|
+
import { getEditorProvider } from '../../../register';
|
|
10
|
+
import { SearchBarController } from './search-bar.controller';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 搜索栏过滤项控制器
|
|
14
|
+
* @author lxm
|
|
15
|
+
* @date 2023-10-12 05:49:19
|
|
16
|
+
* @export
|
|
17
|
+
* @class SearchBarFilterController
|
|
18
|
+
* @implements {IEditorContainerController}
|
|
19
|
+
*/
|
|
20
|
+
export class SearchBarFilterController implements IEditorContainerController {
|
|
21
|
+
unitName: string | undefined;
|
|
22
|
+
|
|
23
|
+
valueFormat: string | undefined;
|
|
24
|
+
|
|
25
|
+
get context(): IContext {
|
|
26
|
+
return this.searchBar.context;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
get params(): IParams {
|
|
30
|
+
return this.searchBar.params;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
dataType: number | undefined;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* 编辑器控制器
|
|
37
|
+
*
|
|
38
|
+
* @author lxm
|
|
39
|
+
* @date 2022-08-24 20:08:42
|
|
40
|
+
* @type {IEditorController}
|
|
41
|
+
*/
|
|
42
|
+
editor?: IEditorController;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* 编辑器适配器
|
|
46
|
+
*
|
|
47
|
+
* @author lxm
|
|
48
|
+
* @date 2022-08-24 20:08:42
|
|
49
|
+
*/
|
|
50
|
+
editorProvider?: IEditorProvider;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* 过滤的属性名称(有实体属性的是属性codeName小写,没有就是项名称)
|
|
54
|
+
* @author lxm
|
|
55
|
+
* @date 2023-10-13 02:51:39
|
|
56
|
+
* @type {string}
|
|
57
|
+
*/
|
|
58
|
+
fieldName: string;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* 属性显示的标题
|
|
62
|
+
* @author lxm
|
|
63
|
+
* @date 2023-10-13 03:02:42
|
|
64
|
+
* @type {string}
|
|
65
|
+
*/
|
|
66
|
+
label: string;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* 配置的属性搜索模式对应的值操作
|
|
70
|
+
* @author lxm
|
|
71
|
+
* @date 2023-10-13 03:22:10
|
|
72
|
+
* @type {string}
|
|
73
|
+
*/
|
|
74
|
+
valueOP?: string;
|
|
75
|
+
|
|
76
|
+
constructor(
|
|
77
|
+
public model: ISearchBarFilter,
|
|
78
|
+
public searchBar: SearchBarController,
|
|
79
|
+
) {
|
|
80
|
+
// 实体属性
|
|
81
|
+
let field: IAppDEField | undefined;
|
|
82
|
+
if (model.appDEFieldId) {
|
|
83
|
+
field = findFieldById(searchBar.appDataEntity, model.appDEFieldId)!;
|
|
84
|
+
}
|
|
85
|
+
this.fieldName = field ? field.codeName!.toLowerCase() : model.id!;
|
|
86
|
+
|
|
87
|
+
// 属性标题
|
|
88
|
+
this.label = model.caption || field?.logicName || model.id!;
|
|
89
|
+
|
|
90
|
+
this.valueOP = model.defsearchMode?.valueOP;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* 初始化
|
|
95
|
+
* @author lxm
|
|
96
|
+
* @date 2023-10-12 05:47:19
|
|
97
|
+
* @return {*} {Promise<void>}
|
|
98
|
+
*/
|
|
99
|
+
async init(): Promise<void> {
|
|
100
|
+
if (!this.model.editor) {
|
|
101
|
+
throw new RuntimeModelError(this.model, '缺少编辑器模型');
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
this.editorProvider = await getEditorProvider(this.model.editor);
|
|
105
|
+
if (this.editorProvider) {
|
|
106
|
+
this.editor = await this.editorProvider.createController(
|
|
107
|
+
this.model.editor,
|
|
108
|
+
this,
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|