@ibiz-template/runtime 0.1.29-dev.0 → 0.1.30
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 +866 -603
- package/dist/index.system.min.js +1 -1
- package/dist/index.system.min.js.map +1 -1
- package/out/command/app/open-app-view/open-app-view.d.ts +1 -1
- package/out/command/app/open-app-view/open-app-view.d.ts.map +1 -1
- package/out/command/app/open-app-view/open-app-view.js +16 -5
- package/out/config/global-config.js +1 -1
- package/out/controller/common/control/control.controller.d.ts +18 -0
- package/out/controller/common/control/control.controller.d.ts.map +1 -1
- package/out/controller/common/control/control.controller.js +29 -1
- package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
- package/out/controller/common/control/md-control.controller.js +2 -1
- package/out/controller/control/dashboard/dashboard.controller.d.ts.map +1 -1
- package/out/controller/control/dashboard/dashboard.controller.js +2 -6
- package/out/controller/control/dashboard/portlet/index.d.ts +1 -0
- package/out/controller/control/dashboard/portlet/index.d.ts.map +1 -1
- package/out/controller/control/dashboard/portlet/index.js +1 -0
- package/out/controller/control/dashboard/portlet/menu-portlet/index.d.ts +2 -0
- package/out/controller/control/dashboard/portlet/menu-portlet/index.d.ts.map +1 -0
- package/out/controller/control/dashboard/portlet/menu-portlet/index.js +1 -0
- package/out/controller/control/dashboard/portlet/menu-portlet/menu-portlet.controller.d.ts +5 -0
- package/out/controller/control/dashboard/portlet/menu-portlet/menu-portlet.controller.d.ts.map +1 -0
- package/out/controller/control/dashboard/portlet/menu-portlet/menu-portlet.controller.js +3 -0
- package/out/controller/control/exp-bar/exp-bar.controller.d.ts +10 -0
- package/out/controller/control/exp-bar/exp-bar.controller.d.ts.map +1 -1
- package/out/controller/control/exp-bar/exp-bar.controller.js +29 -2
- package/out/controller/control/exp-bar/tree-exp-bar.controller.d.ts.map +1 -1
- package/out/controller/control/exp-bar/tree-exp-bar.controller.js +1 -1
- package/out/controller/control/form/edit-form/edit-form.controller.d.ts +11 -2
- package/out/controller/control/form/edit-form/edit-form.controller.d.ts.map +1 -1
- package/out/controller/control/form/edit-form/edit-form.controller.js +56 -2
- package/out/controller/control/form/edit-form/edit-form.service.js +1 -1
- package/out/controller/control/form/form/form.controller.d.ts.map +1 -1
- package/out/controller/control/form/form/form.controller.js +2 -6
- package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
- package/out/controller/control/grid/grid/grid.controller.js +5 -10
- package/out/controller/control/tab-exp-panel/tab-exp-panel.controller.d.ts +10 -0
- package/out/controller/control/tab-exp-panel/tab-exp-panel.controller.d.ts.map +1 -1
- package/out/controller/control/tab-exp-panel/tab-exp-panel.controller.js +19 -0
- package/out/controller/control/toolbar/toolbar.controllerr.d.ts.map +1 -1
- package/out/controller/control/toolbar/toolbar.controllerr.js +8 -8
- package/out/controller/control/tree/tree.service.d.ts.map +1 -1
- package/out/controller/control/tree/tree.service.js +6 -11
- package/out/engine/md-view.engine.d.ts.map +1 -1
- package/out/engine/md-view.engine.js +5 -4
- package/out/global/global-util/global-util.d.ts +8 -0
- package/out/global/global-util/global-util.d.ts.map +1 -1
- package/out/global/global-util/global-util.js +8 -0
- package/out/interface/common/i-error-handler/i-error-handler.d.ts +17 -0
- package/out/interface/common/i-error-handler/i-error-handler.d.ts.map +1 -0
- package/out/interface/common/i-error-handler/i-error-handler.js +1 -0
- package/out/interface/common/i-global-config/i-global-view-config.d.ts +5 -3
- package/out/interface/common/i-global-config/i-global-view-config.d.ts.map +1 -1
- package/out/interface/common/index.d.ts +1 -0
- package/out/interface/common/index.d.ts.map +1 -1
- package/out/interface/controller/common/i-nav-view-msg/i-nav-view-msg.d.ts +9 -0
- package/out/interface/controller/common/i-nav-view-msg/i-nav-view-msg.d.ts.map +1 -1
- package/out/interface/controller/state/view/i-edit-view.state.d.ts +8 -0
- package/out/interface/controller/state/view/i-edit-view.state.d.ts.map +1 -1
- package/out/logic-scheduler/executor/app-ui-logic-executor.d.ts.map +1 -1
- package/out/logic-scheduler/executor/app-ui-logic-executor.js +10 -4
- package/out/logic-scheduler/trigger/item-dyna-logic-trigger.d.ts.map +1 -1
- package/out/logic-scheduler/trigger/item-dyna-logic-trigger.js +1 -4
- package/out/model/data-entity/data-entity.js +2 -2
- package/out/register/helper/control-register.d.ts.map +1 -1
- package/out/register/helper/control-register.js +6 -1
- package/out/service/app-data-entity/app-data-entity.d.ts.map +1 -1
- package/out/service/app-data-entity/app-data-entity.js +4 -0
- package/out/service/service/entity/method/method-renturn.d.ts.map +1 -1
- package/out/service/service/entity/method/method-renturn.js +4 -0
- package/out/ui-action/provider/ui-action-provider-base.js +1 -1
- package/out/utils/error-handler/default-error-handler.d.ts +13 -0
- package/out/utils/error-handler/default-error-handler.d.ts.map +1 -0
- package/out/utils/error-handler/default-error-handler.js +36 -0
- package/out/utils/error-handler/error-handler-center.d.ts +41 -0
- package/out/utils/error-handler/error-handler-center.d.ts.map +1 -0
- package/out/utils/error-handler/error-handler-center.js +59 -0
- package/out/utils/error-handler/index.d.ts +3 -0
- package/out/utils/error-handler/index.d.ts.map +1 -0
- package/out/utils/error-handler/index.js +2 -0
- package/out/utils/index.d.ts +1 -0
- package/out/utils/index.d.ts.map +1 -1
- package/out/utils/index.js +1 -0
- package/out/utils/promise/promise.d.ts +15 -0
- package/out/utils/promise/promise.d.ts.map +1 -0
- package/out/utils/promise/promise.js +38 -0
- package/package.json +2 -2
- package/src/command/app/open-app-view/open-app-view.ts +18 -5
- package/src/config/global-config.ts +1 -1
- package/src/controller/common/control/control.controller.ts +31 -2
- package/src/controller/common/control/md-control.controller.ts +2 -1
- package/src/controller/control/dashboard/dashboard.controller.ts +2 -6
- package/src/controller/control/dashboard/portlet/index.ts +1 -0
- package/src/controller/control/dashboard/portlet/menu-portlet/index.ts +1 -0
- package/src/controller/control/dashboard/portlet/menu-portlet/menu-portlet.controller.ts +4 -0
- package/src/controller/control/exp-bar/exp-bar.controller.ts +30 -2
- package/src/controller/control/exp-bar/tree-exp-bar.controller.ts +1 -0
- package/src/controller/control/form/edit-form/edit-form.controller.ts +71 -3
- package/src/controller/control/form/edit-form/edit-form.service.ts +1 -1
- package/src/controller/control/form/form/form.controller.ts +2 -6
- package/src/controller/control/grid/grid/grid.controller.ts +5 -9
- package/src/controller/control/tab-exp-panel/tab-exp-panel.controller.ts +20 -0
- package/src/controller/control/toolbar/toolbar.controllerr.ts +14 -8
- package/src/controller/control/tree/tree.service.ts +8 -9
- package/src/engine/md-view.engine.ts +6 -4
- package/src/global/global-util/global-util.ts +15 -0
- package/src/interface/common/i-error-handler/i-error-handler.ts +16 -0
- package/src/interface/common/i-global-config/i-global-view-config.ts +5 -3
- package/src/interface/common/index.ts +1 -0
- package/src/interface/controller/common/i-nav-view-msg/i-nav-view-msg.ts +10 -0
- package/src/interface/controller/state/view/i-edit-view.state.ts +10 -1
- package/src/logic-scheduler/executor/app-ui-logic-executor.ts +13 -4
- package/src/logic-scheduler/trigger/item-dyna-logic-trigger.ts +1 -4
- package/src/model/data-entity/data-entity.ts +2 -2
- package/src/register/helper/control-register.ts +6 -1
- package/src/service/app-data-entity/app-data-entity.ts +5 -0
- package/src/service/service/entity/method/method-renturn.ts +4 -0
- package/src/ui-action/provider/ui-action-provider-base.ts +1 -1
- package/src/utils/error-handler/default-error-handler.ts +40 -0
- package/src/utils/error-handler/error-handler-center.ts +61 -0
- package/src/utils/error-handler/index.ts +2 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/promise/promise.ts +41 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 事件处理工具
|
|
3
|
+
*
|
|
4
|
+
* @author lxm
|
|
5
|
+
* @date 2022-09-21 18:09:31
|
|
6
|
+
* @export
|
|
7
|
+
* @class ErrorHandler
|
|
8
|
+
*/
|
|
9
|
+
export class ErrorHandlerCenter {
|
|
10
|
+
constructor() {
|
|
11
|
+
/**
|
|
12
|
+
* 处理器集合
|
|
13
|
+
* @author lxm
|
|
14
|
+
* @date 2023-09-26 04:56:29
|
|
15
|
+
* @type {IErrorHandler[]}
|
|
16
|
+
*/
|
|
17
|
+
this.handlers = [];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 注册处理器(后注册的优先级更高)
|
|
21
|
+
* @author lxm
|
|
22
|
+
* @date 2023-09-26 04:59:06
|
|
23
|
+
* @param {IErrorHandler} handler
|
|
24
|
+
*/
|
|
25
|
+
register(handler) {
|
|
26
|
+
this.handlers.unshift(handler);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 处理单个报错
|
|
30
|
+
* @author lxm
|
|
31
|
+
* @date 2023-09-26 05:18:18
|
|
32
|
+
* @protected
|
|
33
|
+
* @param {unknown} error
|
|
34
|
+
*/
|
|
35
|
+
handleSingle(error) {
|
|
36
|
+
const find = this.handlers.find(item => {
|
|
37
|
+
return !!item.handle(error);
|
|
38
|
+
});
|
|
39
|
+
if (!find) {
|
|
40
|
+
ibiz.log.error('没有找到能处理该错误的处理器', error);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 按顺序检测处理器,最先满足条件的处理该异常
|
|
45
|
+
* @author lxm
|
|
46
|
+
* @date 2023-09-26 05:01:08
|
|
47
|
+
* @param {unknown} error
|
|
48
|
+
*/
|
|
49
|
+
handle(error) {
|
|
50
|
+
if (error instanceof Array) {
|
|
51
|
+
error.forEach(item => {
|
|
52
|
+
this.handleSingle(item);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.handleSingle(error);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/error-handler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/out/utils/index.d.ts
CHANGED
|
@@ -10,4 +10,5 @@ export * from './value-rule/value-rule';
|
|
|
10
10
|
export * from './script/index';
|
|
11
11
|
export { TextUtil } from './text-util/text-util';
|
|
12
12
|
export { RawValueUtil } from './raw-value-util/raw-value-util';
|
|
13
|
+
export { handleAllSettled } from './promise/promise';
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
package/out/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,yCAAyC,CAAC;AACjD,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,yCAAyC,CAAC;AACjD,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/out/utils/index.js
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 异步等待所有promise完成后才会结束异步
|
|
3
|
+
* 只返回成功的promise的返回值集合
|
|
4
|
+
* - 如果isThrow为true,有异常时抛出异常
|
|
5
|
+
* - 如果isThrow为false,有异常时用全局异常处理弹提示,逻辑不会中断
|
|
6
|
+
* @author lxm
|
|
7
|
+
* @date 2023-09-26 06:57:33
|
|
8
|
+
* @export
|
|
9
|
+
* @template T
|
|
10
|
+
* @param {(Iterable<T | PromiseLike<T>>)} values
|
|
11
|
+
* @param {boolean} [isThrow=true]
|
|
12
|
+
* @return {*} {Promise<Awaited<T>[]>}
|
|
13
|
+
*/
|
|
14
|
+
export declare function handleAllSettled<T>(values: Iterable<T | PromiseLike<T>>, isThrow?: boolean): Promise<Awaited<T>[]>;
|
|
15
|
+
//# sourceMappingURL=promise.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../src/utils/promise/promise.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,MAAM,EAAE,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EACpC,OAAO,UAAO,GACb,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAwBvB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 异步等待所有promise完成后才会结束异步
|
|
3
|
+
* 只返回成功的promise的返回值集合
|
|
4
|
+
* - 如果isThrow为true,有异常时抛出异常
|
|
5
|
+
* - 如果isThrow为false,有异常时用全局异常处理弹提示,逻辑不会中断
|
|
6
|
+
* @author lxm
|
|
7
|
+
* @date 2023-09-26 06:57:33
|
|
8
|
+
* @export
|
|
9
|
+
* @template T
|
|
10
|
+
* @param {(Iterable<T | PromiseLike<T>>)} values
|
|
11
|
+
* @param {boolean} [isThrow=true]
|
|
12
|
+
* @return {*} {Promise<Awaited<T>[]>}
|
|
13
|
+
*/
|
|
14
|
+
export async function handleAllSettled(values, isThrow = true) {
|
|
15
|
+
const allResults = await Promise.allSettled(values);
|
|
16
|
+
const successResult = [];
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
|
+
const errorResult = [];
|
|
19
|
+
allResults.forEach(item => {
|
|
20
|
+
if (item.status === 'fulfilled') {
|
|
21
|
+
successResult.push(item.value);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
errorResult.push(item.reason);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
// 有报错时根据是否抛出处理,抛出就抛,不抛就拿全局的异常处理弹提示。
|
|
28
|
+
if (errorResult.length > 0) {
|
|
29
|
+
const error = errorResult.length === 1 ? errorResult[0] : errorResult;
|
|
30
|
+
if (isThrow) {
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
ibiz.util.error.handle(error);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return successResult;
|
|
38
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibiz-template/runtime",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.30",
|
|
4
4
|
"description": "控制器包",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "out/index.js",
|
|
@@ -57,5 +57,5 @@
|
|
|
57
57
|
"qx-util": "^0.4.8",
|
|
58
58
|
"ramda": "^0.29.0"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "882d7335b02b0ada912b08bfc81debc91f48ff49"
|
|
61
61
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { ModelError, RuntimeError } from '@ibiz-template/core';
|
|
2
2
|
import { IAppRedirectView } from '@ibiz/model-core';
|
|
3
|
+
import { clone } from 'ramda';
|
|
3
4
|
import { IModalData, IOpenViewOptions, IViewConfig } from '../../../interface';
|
|
4
5
|
import { calcDeCodeNameById } from '../../../model';
|
|
5
6
|
import { openRedirectView } from '../../../utils';
|
|
7
|
+
import { Srfuf } from '../../../service';
|
|
6
8
|
|
|
7
9
|
/**
|
|
8
10
|
* 打开应用视图
|
|
@@ -32,20 +34,31 @@ export class OpenAppViewCommand {
|
|
|
32
34
|
*/
|
|
33
35
|
async exec(
|
|
34
36
|
appViewId: string,
|
|
35
|
-
|
|
37
|
+
_context: IContext,
|
|
36
38
|
params: IParams = {},
|
|
37
39
|
opts: IOpenViewOptions = {},
|
|
38
40
|
): Promise<IModalData | void> {
|
|
41
|
+
const context = clone(_context);
|
|
39
42
|
const appView = await ibiz.hub.config.view.get(appViewId!);
|
|
40
43
|
if (!appView) {
|
|
41
44
|
throw new RuntimeError(`应用视图[${appViewId}]不存在`);
|
|
42
45
|
}
|
|
43
46
|
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
if (
|
|
48
|
+
(context.srfkey || params.srfuf === Srfuf.CREATE) &&
|
|
49
|
+
appView.appDataEntityId
|
|
50
|
+
) {
|
|
46
51
|
const deName = calcDeCodeNameById(appView.appDataEntityId);
|
|
47
|
-
|
|
48
|
-
context.srfkey
|
|
52
|
+
// 识别上下文的srfkey并转成对应视图实体名称,然后置空srfkey
|
|
53
|
+
if (context.srfkey) {
|
|
54
|
+
context[deName] = context.srfkey;
|
|
55
|
+
context.srfkey = undefined;
|
|
56
|
+
}
|
|
57
|
+
// 识别参数的 srfuf=0 时为新建。置空和当前要打开视图同实体的主键,避免同上下文导致后一个页面识别为了编辑。然后置空srfuf
|
|
58
|
+
if (params.srfuf === Srfuf.CREATE) {
|
|
59
|
+
context[deName] = undefined;
|
|
60
|
+
delete params.srfuf;
|
|
61
|
+
}
|
|
49
62
|
}
|
|
50
63
|
|
|
51
64
|
if (appView.redirectView) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { IControl, IControlLogic, IViewLayoutPanel } from '@ibiz/model-core';
|
|
2
2
|
import { NoticeError } from '@ibiz-template/core';
|
|
3
3
|
import { isNil } from 'ramda';
|
|
4
|
+
import { notNilEmpty } from 'qx-util';
|
|
4
5
|
import { BaseController } from '..';
|
|
5
6
|
import { CTX } from '../../ctx';
|
|
6
7
|
import {
|
|
@@ -19,7 +20,7 @@ import {
|
|
|
19
20
|
} from '../../../interface';
|
|
20
21
|
import { ControlLogicScheduler } from '../../../logic-scheduler';
|
|
21
22
|
import { getControlProvider } from '../../../register';
|
|
22
|
-
import { ScriptFactory } from '../../../utils';
|
|
23
|
+
import { convertNavData, ScriptFactory } from '../../../utils';
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
26
|
* 部件控制器
|
|
@@ -63,6 +64,16 @@ export class ControlController<
|
|
|
63
64
|
|
|
64
65
|
layoutPanel?: IViewLayoutPanelController;
|
|
65
66
|
|
|
67
|
+
/**
|
|
68
|
+
* 部件参数
|
|
69
|
+
*
|
|
70
|
+
* @author zk
|
|
71
|
+
* @date 2023-09-26 03:09:21
|
|
72
|
+
* @type {IData}
|
|
73
|
+
* @memberof ControlController
|
|
74
|
+
*/
|
|
75
|
+
controlParams: IData = {};
|
|
76
|
+
|
|
66
77
|
/**
|
|
67
78
|
* 子适配器
|
|
68
79
|
* @author lxm
|
|
@@ -130,7 +141,8 @@ export class ControlController<
|
|
|
130
141
|
const provider = await getControlProvider(this.controlPanel);
|
|
131
142
|
this.providers[this.controlPanel.name!] = provider!;
|
|
132
143
|
}
|
|
133
|
-
|
|
144
|
+
// 处理上下文和导航参数
|
|
145
|
+
this.handleControlParams();
|
|
134
146
|
// 部件逻辑初始化
|
|
135
147
|
this.initControlScheduler(this.model.controlLogics);
|
|
136
148
|
}
|
|
@@ -222,6 +234,23 @@ export class ControlController<
|
|
|
222
234
|
}
|
|
223
235
|
}
|
|
224
236
|
|
|
237
|
+
/**
|
|
238
|
+
* 部件参数解析
|
|
239
|
+
*
|
|
240
|
+
* @author zk
|
|
241
|
+
* @date 2023-09-27 07:09:08
|
|
242
|
+
* @protected
|
|
243
|
+
* @memberof ControlController
|
|
244
|
+
*/
|
|
245
|
+
protected handleControlParams(): void {
|
|
246
|
+
const { ctrlParams } = this.model.controlParam!;
|
|
247
|
+
let params = {};
|
|
248
|
+
if (notNilEmpty(ctrlParams)) {
|
|
249
|
+
params = convertNavData(ctrlParams!, this.params, this.context);
|
|
250
|
+
}
|
|
251
|
+
Object.assign(this.controlParams, params);
|
|
252
|
+
}
|
|
253
|
+
|
|
225
254
|
/**
|
|
226
255
|
* 初始化部件逻辑调度器
|
|
227
256
|
* @author lxm
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
} from '../../../interface';
|
|
11
11
|
import { calcDeCodeNameById } from '../../../model';
|
|
12
12
|
import { MDControlService, Srfuf } from '../../../service';
|
|
13
|
+
import { handleAllSettled } from '../../../utils';
|
|
13
14
|
import { ControllerEvent } from '../../utils';
|
|
14
15
|
import { ControlController } from './control.controller';
|
|
15
16
|
|
|
@@ -282,7 +283,7 @@ export class MDControlController<
|
|
|
282
283
|
let needRefresh = false;
|
|
283
284
|
try {
|
|
284
285
|
const deName = calcDeCodeNameById(this.model.appDataEntityId!);
|
|
285
|
-
await
|
|
286
|
+
await handleAllSettled(
|
|
286
287
|
data.map(async item => {
|
|
287
288
|
// 新建未保存的数据直接走后续删除处理逻辑
|
|
288
289
|
if (item.srfuf !== Srfuf.CREATE) {
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
IPortletContainerController,
|
|
13
13
|
} from '../../../interface';
|
|
14
14
|
import { getPortletProvider } from '../../../register';
|
|
15
|
+
import { handleAllSettled } from '../../../utils';
|
|
15
16
|
import { ControlController } from '../../common';
|
|
16
17
|
import { getOriginData } from '../../utils';
|
|
17
18
|
|
|
@@ -113,15 +114,10 @@ export class DashboardController
|
|
|
113
114
|
*/
|
|
114
115
|
async dataChangeNotify(data: IData): Promise<void> {
|
|
115
116
|
// 通知所有成员项去处理成员项相关逻辑
|
|
116
|
-
|
|
117
|
+
await handleAllSettled(
|
|
117
118
|
Object.values(this.portlets).map(async portlet => {
|
|
118
119
|
return portlet.dataChangeNotify(data);
|
|
119
120
|
}),
|
|
120
121
|
);
|
|
121
|
-
const rejectedValue = values.find(item => item.status === 'rejected');
|
|
122
|
-
if (rejectedValue) {
|
|
123
|
-
ibiz.log.error('dataChangeNotify报错', values);
|
|
124
|
-
throw (rejectedValue as PromiseRejectedResult).reason;
|
|
125
|
-
}
|
|
126
122
|
}
|
|
127
123
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './menu-portlet.controller';
|
|
@@ -152,6 +152,25 @@ export class ExpBarControlController<
|
|
|
152
152
|
return control;
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
+
/**
|
|
156
|
+
* 是否缓存
|
|
157
|
+
*
|
|
158
|
+
* @author zk
|
|
159
|
+
* @date 2023-09-27 09:09:59
|
|
160
|
+
* @readonly
|
|
161
|
+
* @type {boolean}
|
|
162
|
+
* @memberof ExpBarControlController
|
|
163
|
+
*/
|
|
164
|
+
get isCache(): boolean {
|
|
165
|
+
if (this.controlParams.expcache === 'CACHE') {
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
if (this.controlParams.expcache === 'NO_CACHE') {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
return ibiz.config.view.expCacheMode.includes(this.model.controlType!);
|
|
172
|
+
}
|
|
173
|
+
|
|
155
174
|
/**
|
|
156
175
|
* 创建完成
|
|
157
176
|
*
|
|
@@ -274,7 +293,10 @@ export class ExpBarControlController<
|
|
|
274
293
|
}
|
|
275
294
|
// 此时不需要导航占位push路由,只要有个key触发绘制下级视图就行。
|
|
276
295
|
this._evt.emit('onNavViewChange', {
|
|
277
|
-
navViewMsg: {
|
|
296
|
+
navViewMsg: {
|
|
297
|
+
key: this.state.srfnav,
|
|
298
|
+
isCache: this.isCache,
|
|
299
|
+
},
|
|
278
300
|
context: this.context,
|
|
279
301
|
});
|
|
280
302
|
} else if (selectItem) {
|
|
@@ -297,7 +319,12 @@ export class ExpBarControlController<
|
|
|
297
319
|
if (!data) {
|
|
298
320
|
// 导航视图传空让他导航占位绘制空界面
|
|
299
321
|
this.state.srfnav = '';
|
|
300
|
-
this._evt.emit('onNavViewChange', {
|
|
322
|
+
this._evt.emit('onNavViewChange', {
|
|
323
|
+
navViewMsg: {
|
|
324
|
+
key: '',
|
|
325
|
+
isCache: this.isCache,
|
|
326
|
+
},
|
|
327
|
+
});
|
|
301
328
|
return;
|
|
302
329
|
}
|
|
303
330
|
// 默认选中并激活第一项
|
|
@@ -401,6 +428,7 @@ export class ExpBarControlController<
|
|
|
401
428
|
context: result.context,
|
|
402
429
|
params: result.params,
|
|
403
430
|
viewId: viewModelId,
|
|
431
|
+
isCache: this.isCache,
|
|
404
432
|
};
|
|
405
433
|
}
|
|
406
434
|
|
|
@@ -5,14 +5,18 @@ import {
|
|
|
5
5
|
RuntimeError,
|
|
6
6
|
mergeDefaultInLeft,
|
|
7
7
|
} from '@ibiz-template/core';
|
|
8
|
-
import { IDEEditForm } from '@ibiz/model-core';
|
|
8
|
+
import { IAppDEEditView, IDEEditForm } from '@ibiz/model-core';
|
|
9
9
|
import { debounce } from 'lodash-es';
|
|
10
|
+
import { clone } from 'ramda';
|
|
10
11
|
import {
|
|
11
12
|
IEditFormState,
|
|
12
13
|
IEditFormEvent,
|
|
13
14
|
IEditFormController,
|
|
15
|
+
IViewController,
|
|
16
|
+
IEditViewState,
|
|
17
|
+
IEditViewEvent,
|
|
14
18
|
} from '../../../../interface';
|
|
15
|
-
import { hasDeCodeName } from '../../../../model';
|
|
19
|
+
import { calcDeCodeNameById, hasDeCodeName } from '../../../../model';
|
|
16
20
|
import { Srfuf, ControlVO } from '../../../../service';
|
|
17
21
|
import { ScriptFactory } from '../../../../utils';
|
|
18
22
|
import { FormNotifyState } from '../../../constant';
|
|
@@ -40,6 +44,14 @@ export class EditFormController
|
|
|
40
44
|
*/
|
|
41
45
|
service!: EditFormService;
|
|
42
46
|
|
|
47
|
+
get view(): IViewController<IAppDEEditView, IEditViewState, IEditViewEvent> {
|
|
48
|
+
return this.ctx.view as IViewController<
|
|
49
|
+
IAppDEEditView,
|
|
50
|
+
IEditViewState,
|
|
51
|
+
IEditViewEvent
|
|
52
|
+
>;
|
|
53
|
+
}
|
|
54
|
+
|
|
43
55
|
/**
|
|
44
56
|
* 初始化方法
|
|
45
57
|
*
|
|
@@ -108,6 +120,57 @@ export class EditFormController
|
|
|
108
120
|
return this.data;
|
|
109
121
|
}
|
|
110
122
|
|
|
123
|
+
/**
|
|
124
|
+
* 拷贝模式加载数据
|
|
125
|
+
*
|
|
126
|
+
* @author chitanda
|
|
127
|
+
* @date 2023-09-26 19:09:21
|
|
128
|
+
* @return {*} {Promise<IData>}
|
|
129
|
+
*/
|
|
130
|
+
protected async copy(): Promise<IData> {
|
|
131
|
+
const context = clone(this.context);
|
|
132
|
+
const queryParams: IParams = clone(this.params);
|
|
133
|
+
|
|
134
|
+
const appDataEntity = await ibiz.hub.getAppDataEntity(
|
|
135
|
+
this.model.appDataEntityId!,
|
|
136
|
+
);
|
|
137
|
+
const key = appDataEntity.keyAppDEFieldId;
|
|
138
|
+
if (key && this.params[key]) {
|
|
139
|
+
const deCodeName = calcDeCodeNameById(this.model.appDataEntityId!);
|
|
140
|
+
context[deCodeName] = this.params[key];
|
|
141
|
+
delete queryParams[key];
|
|
142
|
+
delete this.params[key];
|
|
143
|
+
delete queryParams.srfcopymode;
|
|
144
|
+
delete this.params.srfcopymode;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
let res;
|
|
148
|
+
try {
|
|
149
|
+
await this.startLoading();
|
|
150
|
+
await this.evt.emit('onBeforeLoad', undefined);
|
|
151
|
+
res = await this.service.get(context, queryParams);
|
|
152
|
+
} catch (error) {
|
|
153
|
+
await this.evt.emit('onLoadError', undefined);
|
|
154
|
+
this.actionNotification('GETERROR', {
|
|
155
|
+
error: error as Error,
|
|
156
|
+
});
|
|
157
|
+
throw error;
|
|
158
|
+
} finally {
|
|
159
|
+
await this.endLoading();
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
res.data.$origin.srfsourcekey = undefined;
|
|
163
|
+
|
|
164
|
+
this.state.modified = false;
|
|
165
|
+
this.state.data = res.data;
|
|
166
|
+
this.formStateNotify(FormNotifyState.LOAD);
|
|
167
|
+
|
|
168
|
+
await this.evt.emit('onLoadSuccess', undefined);
|
|
169
|
+
this.actionNotification('GETSUCCESS');
|
|
170
|
+
this.state.isLoaded = true;
|
|
171
|
+
return this.data;
|
|
172
|
+
}
|
|
173
|
+
|
|
111
174
|
/**
|
|
112
175
|
* 部件加载数据行为
|
|
113
176
|
*
|
|
@@ -115,6 +178,11 @@ export class EditFormController
|
|
|
115
178
|
* @date 2022-08-19 14:08:50
|
|
116
179
|
*/
|
|
117
180
|
async load(): Promise<IData> {
|
|
181
|
+
// 复制模式独立处理
|
|
182
|
+
const copyMode = this.params.srfcopymode;
|
|
183
|
+
if (copyMode) {
|
|
184
|
+
return this.copy();
|
|
185
|
+
}
|
|
118
186
|
const isLoadDraft = !hasDeCodeName(
|
|
119
187
|
this.context,
|
|
120
188
|
this.model.appDataEntityId!,
|
|
@@ -124,7 +192,7 @@ export class EditFormController
|
|
|
124
192
|
return this.loadDraft();
|
|
125
193
|
}
|
|
126
194
|
|
|
127
|
-
const queryParams =
|
|
195
|
+
const queryParams = clone(this.params);
|
|
128
196
|
|
|
129
197
|
let res;
|
|
130
198
|
try {
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
import { findChildFormDetails } from '../../../../model';
|
|
12
12
|
import { getFormDetailProvider } from '../../../../register';
|
|
13
13
|
import { ControlVO } from '../../../../service';
|
|
14
|
+
import { handleAllSettled } from '../../../../utils';
|
|
14
15
|
import { ControlController } from '../../../common';
|
|
15
16
|
import { FormNotifyState } from '../../../constant';
|
|
16
17
|
import { ControllerEvent, isValueChange } from '../../../utils';
|
|
@@ -97,16 +98,11 @@ export abstract class FormController<
|
|
|
97
98
|
*/
|
|
98
99
|
async dataChangeNotify(names: string[]): Promise<void> {
|
|
99
100
|
// 通知所有成员项去处理成员项相关逻辑
|
|
100
|
-
|
|
101
|
+
await handleAllSettled(
|
|
101
102
|
Object.values(this.details).map(async detail => {
|
|
102
103
|
return detail.dataChangeNotify(names);
|
|
103
104
|
}),
|
|
104
105
|
);
|
|
105
|
-
const rejectedValue = values.find(item => item.status === 'rejected');
|
|
106
|
-
if (rejectedValue) {
|
|
107
|
-
ibiz.log.error('dataChangeNotify报错', values);
|
|
108
|
-
throw (rejectedValue as PromiseRejectedResult).reason;
|
|
109
|
-
}
|
|
110
106
|
}
|
|
111
107
|
|
|
112
108
|
/**
|
|
@@ -32,7 +32,7 @@ import { ControlVO, Srfuf } from '../../../../service';
|
|
|
32
32
|
import { MDControlController } from '../../../common';
|
|
33
33
|
import { GridNotifyState } from '../../../constant';
|
|
34
34
|
import { getDefaultValue, isValueChange } from '../../../utils';
|
|
35
|
-
import { ScriptFactory } from '../../../../utils';
|
|
35
|
+
import { handleAllSettled, ScriptFactory } from '../../../../utils';
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
38
|
* 表格控制器
|
|
@@ -267,10 +267,11 @@ export class GridController
|
|
|
267
267
|
): Promise<ControlVO[]> {
|
|
268
268
|
await super.afterLoad(args, items);
|
|
269
269
|
// 每次表格刷新时通知表格属性列,加载代码表,避免动态代码表更新不及时
|
|
270
|
-
await
|
|
270
|
+
await handleAllSettled(
|
|
271
271
|
Object.values(this.fieldColumns).map(async fieldColumn => {
|
|
272
272
|
await fieldColumn.loadCodeList();
|
|
273
273
|
}),
|
|
274
|
+
false,
|
|
274
275
|
);
|
|
275
276
|
|
|
276
277
|
// 生成表格row对象
|
|
@@ -536,7 +537,7 @@ export class GridController
|
|
|
536
537
|
return;
|
|
537
538
|
}
|
|
538
539
|
|
|
539
|
-
|
|
540
|
+
await handleAllSettled(
|
|
540
541
|
needSaveData.map(data => {
|
|
541
542
|
return this.save(data);
|
|
542
543
|
}),
|
|
@@ -695,16 +696,11 @@ export class GridController
|
|
|
695
696
|
*/
|
|
696
697
|
async dataChangeNotify(row: GridRowState, names: string[]): Promise<void> {
|
|
697
698
|
// 通知所有编辑项去处理编辑项相关逻辑
|
|
698
|
-
|
|
699
|
+
await handleAllSettled(
|
|
699
700
|
Object.values(this.editColumns).map(async column => {
|
|
700
701
|
return column.dataChangeNotify(row, names);
|
|
701
702
|
}),
|
|
702
703
|
);
|
|
703
|
-
const rejectedValue = values.find(item => item.status === 'rejected');
|
|
704
|
-
if (rejectedValue) {
|
|
705
|
-
ibiz.log.error('dataChangeNotify报错', values);
|
|
706
|
-
throw (rejectedValue as PromiseRejectedResult).reason;
|
|
707
|
-
}
|
|
708
704
|
}
|
|
709
705
|
|
|
710
706
|
/**
|
|
@@ -38,6 +38,25 @@ export class TabExpPanelController
|
|
|
38
38
|
*/
|
|
39
39
|
isShowIcon = false;
|
|
40
40
|
|
|
41
|
+
/**
|
|
42
|
+
* 是否缓存
|
|
43
|
+
*
|
|
44
|
+
* @author zk
|
|
45
|
+
* @date 2023-09-27 09:09:59
|
|
46
|
+
* @readonly
|
|
47
|
+
* @type {boolean}
|
|
48
|
+
* @memberof ExpBarControlController
|
|
49
|
+
*/
|
|
50
|
+
get isCache(): boolean {
|
|
51
|
+
if (this.controlParams.expcache === 'CACHE') {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
if (this.controlParams.expcache === 'NO_CACHE') {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return ibiz.config.view.expCacheMode.includes(this.model.controlType!);
|
|
58
|
+
}
|
|
59
|
+
|
|
41
60
|
/**
|
|
42
61
|
* 初始化state的属性
|
|
43
62
|
*
|
|
@@ -235,6 +254,7 @@ export class TabExpPanelController
|
|
|
235
254
|
context,
|
|
236
255
|
params,
|
|
237
256
|
viewId: tabViewPanel.embeddedAppDEViewId,
|
|
257
|
+
isCache: this.isCache,
|
|
238
258
|
};
|
|
239
259
|
}
|
|
240
260
|
}
|