@ibiz-template/runtime 0.1.21 → 0.1.23-alpha.0
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 +923 -204
- package/dist/index.system.min.js +1 -1
- package/dist/index.system.min.js.map +1 -1
- package/out/constant/view-call-tag.d.ts +9 -1
- package/out/constant/view-call-tag.d.ts.map +1 -1
- package/out/constant/view-call-tag.js +8 -0
- package/out/controller/control/data-view/data-view.controller.d.ts +25 -2
- package/out/controller/control/data-view/data-view.controller.d.ts.map +1 -1
- package/out/controller/control/data-view/data-view.controller.js +70 -30
- package/out/controller/control/data-view/data-view.service.d.ts +1 -1
- package/out/controller/control/data-view/data-view.service.d.ts.map +1 -1
- package/out/controller/control/data-view/data-view.service.js +2 -1
- package/out/controller/control/form/edit-form/edit-form.service.d.ts.map +1 -1
- package/out/controller/control/form/edit-form/edit-form.service.js +1 -0
- package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.d.ts.map +1 -1
- package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.js +8 -4
- package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
- package/out/controller/control/grid/grid/grid.controller.js +1 -1
- package/out/controller/control/grid/grid/grid.service.d.ts.map +1 -1
- package/out/controller/control/grid/grid/grid.service.js +1 -0
- package/out/controller/control/index.d.ts +1 -0
- package/out/controller/control/index.d.ts.map +1 -1
- package/out/controller/control/index.js +1 -0
- package/out/controller/control/kanban/index.d.ts +3 -0
- package/out/controller/control/kanban/index.d.ts.map +1 -0
- package/out/controller/control/kanban/index.js +2 -0
- package/out/controller/control/kanban/kanban.controller.d.ts +99 -0
- package/out/controller/control/kanban/kanban.controller.d.ts.map +1 -0
- package/out/controller/control/kanban/kanban.controller.js +310 -0
- package/out/controller/control/kanban/kanban.service.d.ts +24 -0
- package/out/controller/control/kanban/kanban.service.d.ts.map +1 -0
- package/out/controller/control/kanban/kanban.service.js +26 -0
- package/out/controller/control/list/list.controller.d.ts.map +1 -1
- package/out/controller/control/list/list.controller.js +3 -0
- package/out/controller/control/list/list.service.d.ts.map +1 -1
- package/out/controller/control/list/list.service.js +1 -0
- package/out/controller/control/md-ctrl/md-ctrl.service.d.ts.map +1 -1
- package/out/controller/control/md-ctrl/md-ctrl.service.js +1 -0
- package/out/controller/control/pickup-view-panel/pickup-view-panel.controller.d.ts.map +1 -1
- package/out/controller/control/pickup-view-panel/pickup-view-panel.controller.js +3 -2
- package/out/controller/control/toolbar/toolbar.controllerr.js +2 -2
- package/out/controller/ctx/ctx.d.ts +8 -0
- package/out/controller/ctx/ctx.d.ts.map +1 -1
- package/out/controller/ctx/ctx.js +12 -0
- package/out/de-logic/utils/handle-src-val.d.ts.map +1 -1
- package/out/de-logic/utils/handle-src-val.js +6 -4
- package/out/engine/view-base.engine.d.ts.map +1 -1
- package/out/engine/view-base.engine.js +2 -1
- package/out/interface/controller/controller/common/i-drag-change-info.d.ts +38 -0
- package/out/interface/controller/controller/common/i-drag-change-info.d.ts.map +1 -0
- package/out/interface/controller/controller/common/i-drag-change-info.js +1 -0
- package/out/interface/controller/controller/common/index.d.ts +1 -0
- package/out/interface/controller/controller/common/index.d.ts.map +1 -1
- package/out/interface/controller/controller/common/index.js +1 -0
- package/out/interface/controller/controller/control/i-data-view-control.controller.d.ts +1 -1
- package/out/interface/controller/controller/control/i-data-view-control.controller.d.ts.map +1 -1
- package/out/interface/controller/controller/control/i-kanban.controller.d.ts +14 -0
- package/out/interface/controller/controller/control/i-kanban.controller.d.ts.map +1 -0
- package/out/interface/controller/controller/control/i-kanban.controller.js +1 -0
- package/out/interface/controller/controller/control/i-panel.controller.d.ts +7 -0
- package/out/interface/controller/controller/control/i-panel.controller.d.ts.map +1 -1
- package/out/interface/controller/controller/control/index.d.ts +1 -0
- package/out/interface/controller/controller/control/index.d.ts.map +1 -1
- package/out/interface/controller/controller/control/index.js +1 -0
- package/out/interface/controller/controller/control/panel-item/i-panel-data-container.controller.d.ts +7 -0
- package/out/interface/controller/controller/control/panel-item/i-panel-data-container.controller.d.ts.map +1 -1
- package/out/interface/controller/event/control/i-kanban.event.d.ts +3 -3
- package/out/interface/controller/event/control/i-kanban.event.d.ts.map +1 -1
- package/out/interface/controller/event/view/i-kanban-view.event.d.ts +1 -1
- package/out/interface/controller/state/control/i-kanban.state.d.ts +33 -0
- package/out/interface/controller/state/control/i-kanban.state.d.ts.map +1 -0
- package/out/interface/controller/state/control/i-kanban.state.js +1 -0
- package/out/interface/controller/state/control/i-md-control.state.d.ts +7 -0
- package/out/interface/controller/state/control/i-md-control.state.d.ts.map +1 -1
- package/out/interface/controller/state/control/index.d.ts +1 -0
- package/out/interface/controller/state/control/index.d.ts.map +1 -1
- package/out/interface/controller/state/control/index.js +1 -0
- package/out/interface/controller/state/view/i-kanban-view.state.d.ts +11 -0
- package/out/interface/controller/state/view/i-kanban-view.state.d.ts.map +1 -0
- package/out/interface/controller/state/view/i-kanban-view.state.js +1 -0
- package/out/interface/controller/state/view/index.d.ts +1 -0
- package/out/interface/controller/state/view/index.d.ts.map +1 -1
- package/out/interface/controller/state/view/index.js +1 -0
- package/out/logic-scheduler/trigger/timer-trigger.d.ts +1 -2
- package/out/logic-scheduler/trigger/timer-trigger.d.ts.map +1 -1
- package/out/service/dto/method.dto.d.ts.map +1 -1
- package/out/service/dto/method.dto.js +1 -2
- package/out/service/service/entity/method/method.d.ts.map +1 -1
- package/out/service/service/entity/method/method.js +3 -1
- package/out/service/service/work-flow/work-flow.service.d.ts +11 -0
- package/out/service/service/work-flow/work-flow.service.d.ts.map +1 -1
- package/out/service/service/work-flow/work-flow.service.js +15 -0
- package/out/service/vo/control.vo.d.ts +1 -0
- package/out/service/vo/control.vo.d.ts.map +1 -1
- package/out/service/vo/control.vo.js +18 -5
- package/out/service/vo/ui-map-field.d.ts +8 -0
- package/out/service/vo/ui-map-field.d.ts.map +1 -1
- package/out/service/vo/ui-map-field.js +3 -0
- package/out/ui-logic/ui-logic-link/ui-logic-link-single-cond/ui-logic-link-single-cond.js +1 -1
- package/out/ui-logic/ui-logic-node/append-param-node/append-param-node.d.ts +17 -0
- package/out/ui-logic/ui-logic-node/append-param-node/append-param-node.d.ts.map +1 -0
- package/out/ui-logic/ui-logic-node/append-param-node/append-param-node.js +25 -0
- package/out/ui-logic/ui-logic-node/copy-param-node/copy-param-node.d.ts +17 -0
- package/out/ui-logic/ui-logic-node/copy-param-node/copy-param-node.d.ts.map +1 -0
- package/out/ui-logic/ui-logic-node/copy-param-node/copy-param-node.js +23 -0
- package/out/ui-logic/ui-logic-node/data-set-node/data-set-node.d.ts +17 -0
- package/out/ui-logic/ui-logic-node/data-set-node/data-set-node.d.ts.map +1 -0
- package/out/ui-logic/ui-logic-node/data-set-node/data-set-node.js +21 -0
- package/out/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.d.ts +17 -0
- package/out/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.d.ts.map +1 -0
- package/out/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.js +37 -0
- package/out/ui-logic/ui-logic-node/index.d.ts +9 -0
- package/out/ui-logic/ui-logic-node/index.d.ts.map +1 -1
- package/out/ui-logic/ui-logic-node/index.js +9 -0
- package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.d.ts +56 -1
- package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.d.ts.map +1 -1
- package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.js +122 -12
- package/out/ui-logic/ui-logic-node/renew-param-node/renew-param-node.d.ts +17 -0
- package/out/ui-logic/ui-logic-node/renew-param-node/renew-param-node.d.ts.map +1 -0
- package/out/ui-logic/ui-logic-node/renew-param-node/renew-param-node.js +20 -0
- package/out/ui-logic/ui-logic-node/reset-param-node/reset-param-node.d.ts +17 -0
- package/out/ui-logic/ui-logic-node/reset-param-node/reset-param-node.d.ts.map +1 -0
- package/out/ui-logic/ui-logic-node/reset-param-node/reset-param-node.js +20 -0
- package/out/ui-logic/ui-logic-node/sort-param-node/sort-param-node.d.ts +17 -0
- package/out/ui-logic/ui-logic-node/sort-param-node/sort-param-node.d.ts.map +1 -0
- package/out/ui-logic/ui-logic-node/sort-param-node/sort-param-node.js +24 -0
- package/out/ui-logic/ui-logic-node/throw-exception-node/throw-exception-node.d.ts +17 -0
- package/out/ui-logic/ui-logic-node/throw-exception-node/throw-exception-node.d.ts.map +1 -0
- package/out/ui-logic/ui-logic-node/throw-exception-node/throw-exception-node.js +17 -0
- package/out/ui-logic/ui-logic-node/view-ctrl-fire-event-node/view-ctrl-fire-event-node.d.ts +16 -0
- package/out/ui-logic/ui-logic-node/view-ctrl-fire-event-node/view-ctrl-fire-event-node.d.ts.map +1 -0
- package/out/ui-logic/ui-logic-node/view-ctrl-fire-event-node/view-ctrl-fire-event-node.js +37 -0
- 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 +2 -2
- package/out/ui-logic/ui-logic.d.ts.map +1 -1
- package/out/ui-logic/ui-logic.js +24 -6
- package/out/ui-logic/utils/handle-src-val.d.ts.map +1 -1
- package/out/ui-logic/utils/handle-src-val.js +7 -5
- package/out/utils/verify/de-rule-verify.js +1 -1
- package/package.json +7 -7
- package/src/constant/view-call-tag.ts +8 -0
- package/src/controller/control/data-view/data-view.controller.ts +93 -43
- package/src/controller/control/data-view/data-view.service.ts +5 -2
- package/src/controller/control/form/edit-form/edit-form.service.ts +1 -0
- package/src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts +10 -5
- package/src/controller/control/grid/grid/grid.controller.ts +1 -1
- package/src/controller/control/grid/grid/grid.service.ts +1 -0
- package/src/controller/control/index.ts +1 -0
- package/src/controller/control/kanban/index.ts +2 -0
- package/src/controller/control/kanban/kanban.controller.ts +370 -0
- package/src/controller/control/kanban/kanban.service.ts +33 -0
- package/src/controller/control/list/list.controller.ts +3 -0
- package/src/controller/control/list/list.service.ts +1 -0
- package/src/controller/control/md-ctrl/md-ctrl.service.ts +1 -0
- package/src/controller/control/pickup-view-panel/pickup-view-panel.controller.ts +3 -2
- package/src/controller/control/toolbar/toolbar.controllerr.ts +2 -2
- package/src/controller/ctx/ctx.ts +13 -0
- package/src/de-logic/utils/handle-src-val.ts +6 -4
- package/src/engine/view-base.engine.ts +2 -1
- package/src/interface/controller/controller/common/i-drag-change-info.ts +40 -0
- package/src/interface/controller/controller/common/index.ts +1 -0
- package/src/interface/controller/controller/control/i-data-view-control.controller.ts +5 -6
- package/src/interface/controller/controller/control/i-kanban.controller.ts +14 -0
- package/src/interface/controller/controller/control/i-panel.controller.ts +8 -0
- package/src/interface/controller/controller/control/index.ts +1 -0
- package/src/interface/controller/controller/control/panel-item/i-panel-data-container.controller.ts +8 -0
- package/src/interface/controller/event/control/i-kanban.event.ts +3 -3
- package/src/interface/controller/event/view/i-kanban-view.event.ts +1 -1
- package/src/interface/controller/state/control/i-kanban.state.ts +35 -0
- package/src/interface/controller/state/control/i-md-control.state.ts +8 -0
- package/src/interface/controller/state/control/index.ts +1 -0
- package/src/interface/controller/state/view/i-kanban-view.state.ts +10 -0
- package/src/interface/controller/state/view/index.ts +1 -0
- package/src/logic-scheduler/trigger/timer-trigger.ts +2 -2
- package/src/service/dto/method.dto.ts +1 -2
- package/src/service/service/entity/method/method.ts +3 -1
- package/src/service/service/work-flow/work-flow.service.ts +28 -0
- package/src/service/vo/control.vo.ts +19 -4
- package/src/service/vo/ui-map-field.ts +12 -0
- package/src/ui-logic/ui-logic-link/ui-logic-link-single-cond/ui-logic-link-single-cond.ts +1 -1
- package/src/ui-logic/ui-logic-node/append-param-node/append-param-node.ts +44 -0
- package/src/ui-logic/ui-logic-node/copy-param-node/copy-param-node.ts +31 -0
- package/src/ui-logic/ui-logic-node/data-set-node/data-set-node.ts +37 -0
- package/src/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.ts +57 -0
- package/src/ui-logic/ui-logic-node/index.ts +9 -0
- package/src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts +153 -17
- package/src/ui-logic/ui-logic-node/renew-param-node/renew-param-node.ts +25 -0
- package/src/ui-logic/ui-logic-node/reset-param-node/reset-param-node.ts +25 -0
- package/src/ui-logic/ui-logic-node/sort-param-node/sort-param-node.ts +29 -0
- package/src/ui-logic/ui-logic-node/throw-exception-node/throw-exception-node.ts +23 -0
- package/src/ui-logic/ui-logic-node/view-ctrl-fire-event-node/view-ctrl-fire-event-node.ts +47 -0
- package/src/ui-logic/ui-logic-param/ui-logic-param.ts +2 -5
- package/src/ui-logic/ui-logic.ts +32 -5
- package/src/ui-logic/utils/handle-src-val.ts +7 -5
- package/src/utils/verify/de-rule-verify.ts +1 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { IButtonContainerState } from '../../common';
|
|
2
|
+
import { IDataViewControlState } from './i-data-view-control.state';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 看板部件(kanban)部件状态
|
|
6
|
+
*
|
|
7
|
+
* @export
|
|
8
|
+
* @interface IDataViewControlState
|
|
9
|
+
* @extends {IMDControlState}
|
|
10
|
+
*/
|
|
11
|
+
export interface IKanbanState extends IDataViewControlState {
|
|
12
|
+
/**
|
|
13
|
+
* 可拖拽的
|
|
14
|
+
* @author lxm
|
|
15
|
+
* @date 2023-08-29 04:18:04
|
|
16
|
+
* @type {boolean}
|
|
17
|
+
*/
|
|
18
|
+
draggable: boolean;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* 是否正在更新
|
|
22
|
+
* @author lxm
|
|
23
|
+
* @date 2023-09-11 09:09:30
|
|
24
|
+
* @type {boolean}
|
|
25
|
+
*/
|
|
26
|
+
updating: boolean;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* 分组界面行为组状态
|
|
30
|
+
*
|
|
31
|
+
* @type {(IButtonContainerState)}
|
|
32
|
+
* @memberof PortletPartState
|
|
33
|
+
*/
|
|
34
|
+
groupActionGroupState?: IButtonContainerState;
|
|
35
|
+
}
|
|
@@ -106,4 +106,12 @@ export interface IMDControlGroupState {
|
|
|
106
106
|
* @memberof IMDControlGroupState
|
|
107
107
|
*/
|
|
108
108
|
caption: string;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* 分组唯一标识(分组属性对应的值)
|
|
112
|
+
* @author lxm
|
|
113
|
+
* @date 2023-08-30 04:37:05
|
|
114
|
+
* @type {string}
|
|
115
|
+
*/
|
|
116
|
+
key: string | number;
|
|
109
117
|
}
|
|
@@ -36,4 +36,5 @@ export * from './i-panel-view.state';
|
|
|
36
36
|
export * from './i-calendar-view.state';
|
|
37
37
|
export * from './i-calendar-exp-view.state';
|
|
38
38
|
export * from './i-pickup-md-view.state';
|
|
39
|
+
export * from './i-kanban-view.state';
|
|
39
40
|
export * from './i-form-pickup-data-view.state';
|
|
@@ -12,7 +12,7 @@ import { LogicTrigger } from './logic-trigger';
|
|
|
12
12
|
export class TimerTrigger extends LogicTrigger {
|
|
13
13
|
declare type: 'TIMER';
|
|
14
14
|
|
|
15
|
-
protected timer:
|
|
15
|
+
protected timer: number | null = null;
|
|
16
16
|
|
|
17
17
|
start(): void {
|
|
18
18
|
this.timer = setInterval(() => {
|
|
@@ -21,7 +21,7 @@ export class TimerTrigger extends LogicTrigger {
|
|
|
21
21
|
}
|
|
22
22
|
const params = this.scheduler.defaultParamsCb();
|
|
23
23
|
this.executor!.execute(params);
|
|
24
|
-
}, this.logic.timer);
|
|
24
|
+
}, this.logic.timer) as unknown as number;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
destroy(): void {
|
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
IAppDEMethodDTOField,
|
|
6
6
|
} from '@ibiz/model-core';
|
|
7
7
|
import { ModelError } from '@ibiz-template/core';
|
|
8
|
-
import { notNilEmpty } from 'qx-util';
|
|
9
8
|
import { Application } from '../../application';
|
|
10
9
|
import { AppDataEntity } from '../app-data-entity/app-data-entity';
|
|
11
10
|
import { findModelChild } from '../../model';
|
|
@@ -58,7 +57,7 @@ export class MethodDto {
|
|
|
58
57
|
break;
|
|
59
58
|
}
|
|
60
59
|
case 'DTOS': {
|
|
61
|
-
if (
|
|
60
|
+
if (data[key] !== undefined) {
|
|
62
61
|
break;
|
|
63
62
|
}
|
|
64
63
|
// 没有实体id的不处理
|
|
@@ -117,12 +117,14 @@ export abstract class Method {
|
|
|
117
117
|
case 'GET':
|
|
118
118
|
res = await this.app.net.get(`${path}/${methodName}`, data);
|
|
119
119
|
break;
|
|
120
|
-
case 'PUT':
|
|
120
|
+
case 'PUT': {
|
|
121
121
|
res = await this.app.net.put(
|
|
122
122
|
`${path}/${methodName}`,
|
|
123
123
|
notNilEmpty(data) ? data : params,
|
|
124
124
|
);
|
|
125
|
+
const entity = this.createEntity(data);
|
|
125
126
|
break;
|
|
127
|
+
}
|
|
126
128
|
case 'DELETE':
|
|
127
129
|
res = await this.app.net.delete(`${path}/${methodName}`, data);
|
|
128
130
|
break;
|
|
@@ -278,6 +278,32 @@ export class WorkFlowService implements IWorkFlowService {
|
|
|
278
278
|
);
|
|
279
279
|
}
|
|
280
280
|
|
|
281
|
+
/**
|
|
282
|
+
* 后加签
|
|
283
|
+
*
|
|
284
|
+
* @author lxm
|
|
285
|
+
* @date 2022-09-30 17:09:51
|
|
286
|
+
* @param {IParams} context 路径参数
|
|
287
|
+
* @param {IParams} params 请求参数
|
|
288
|
+
* @param {IData} data 数据
|
|
289
|
+
* @returns {*} {Promise<IHttpResponse<IData>>}
|
|
290
|
+
*/
|
|
291
|
+
async wfAddStepAfter(
|
|
292
|
+
context: IParams,
|
|
293
|
+
params: IParams,
|
|
294
|
+
data: IData,
|
|
295
|
+
): Promise<IHttpResponse<IData>> {
|
|
296
|
+
return ibiz.net.post(
|
|
297
|
+
`${this.getBaseUrl()}/${
|
|
298
|
+
context[this.model.codeName!.toLowerCase()]
|
|
299
|
+
}/tasks/${params.taskId}/aftersign`,
|
|
300
|
+
{
|
|
301
|
+
...params,
|
|
302
|
+
activedata: this.getActiveData(data, context),
|
|
303
|
+
},
|
|
304
|
+
);
|
|
305
|
+
}
|
|
306
|
+
|
|
281
307
|
/**
|
|
282
308
|
* 回退
|
|
283
309
|
*
|
|
@@ -356,6 +382,8 @@ export class WorkFlowService implements IWorkFlowService {
|
|
|
356
382
|
return this.wfReassign(context, params, data);
|
|
357
383
|
case 'addstepbefore':
|
|
358
384
|
return this.wfAddStepBefore(context, params, data);
|
|
385
|
+
case 'addstepafter':
|
|
386
|
+
return this.wfAddStepAfter(context, params, data);
|
|
359
387
|
case 'sendback':
|
|
360
388
|
return this.wfSendBack(context, params, data);
|
|
361
389
|
case 'sendcopy':
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DataTypes } from '@ibiz-template/core';
|
|
1
2
|
import { clone, isNil } from 'ramda';
|
|
2
3
|
import { Srfuf } from '../constant';
|
|
3
4
|
import { UIMapField } from './ui-map-field';
|
|
@@ -141,7 +142,10 @@ export class ControlVO {
|
|
|
141
142
|
this.$dataUIMap.forEach((mapField, key) => {
|
|
142
143
|
const value = mapField.dataKey;
|
|
143
144
|
// 关联映射属性
|
|
144
|
-
|
|
145
|
+
const forceNumber =
|
|
146
|
+
mapField.dataType !== undefined &&
|
|
147
|
+
DataTypes.isNumber(mapField.dataType);
|
|
148
|
+
this.linkProperty(key, value, mapField.isOriginField, forceNumber);
|
|
145
149
|
});
|
|
146
150
|
|
|
147
151
|
// 映射属性里没有涉及到的建立直接关联,用于使用实体属性也要取到值的场景。
|
|
@@ -162,15 +166,17 @@ export class ControlVO {
|
|
|
162
166
|
* @param {string} uiKey 界面字段
|
|
163
167
|
* @param {string} dataKey 数据字段
|
|
164
168
|
* @param {boolean} [isOriginField=true] 是否是后台存储字段,是的话存取都在$origin里
|
|
169
|
+
* @param {boolean} [forceNumber=false] 是否强制转换成数值,是的话set的时候转成数值
|
|
165
170
|
* @returns {*}
|
|
166
171
|
*/
|
|
167
172
|
private linkProperty(
|
|
168
173
|
uiKey: string,
|
|
169
174
|
dataKey: string,
|
|
170
175
|
isOriginField: boolean = true,
|
|
176
|
+
forceNumber: boolean = false,
|
|
171
177
|
): void {
|
|
172
178
|
// srfuf和srfkey不做处理
|
|
173
|
-
if (uiKey === 'srfuf'
|
|
179
|
+
if (uiKey === 'srfuf') {
|
|
174
180
|
return;
|
|
175
181
|
}
|
|
176
182
|
|
|
@@ -183,10 +189,19 @@ export class ControlVO {
|
|
|
183
189
|
enumerable: true,
|
|
184
190
|
configurable: true,
|
|
185
191
|
get() {
|
|
186
|
-
|
|
192
|
+
// srfkey 视图id优先,拿不到实体属性则拿界面属性(前端id)
|
|
193
|
+
return uiKey === 'srfkey'
|
|
194
|
+
? this.$origin[dataKey] || this.$origin[uiKey]
|
|
195
|
+
: this.$origin[dataKey];
|
|
187
196
|
},
|
|
188
197
|
set(val) {
|
|
189
|
-
|
|
198
|
+
// 非空且强制转数值时,转换值的类型
|
|
199
|
+
let val2 = forceNumber && !isNil(val) ? Number(val) : val;
|
|
200
|
+
if (Number.isNaN(val2)) {
|
|
201
|
+
val2 = val; // NaN时还原值
|
|
202
|
+
ibiz.log.error(`${val}不能转换成数字`);
|
|
203
|
+
}
|
|
204
|
+
this.$origin[dataKey] = val2;
|
|
190
205
|
},
|
|
191
206
|
});
|
|
192
207
|
} else {
|
|
@@ -27,6 +27,14 @@ export class UIMapField {
|
|
|
27
27
|
*/
|
|
28
28
|
dataKey: string;
|
|
29
29
|
|
|
30
|
+
/**
|
|
31
|
+
* 数据类型
|
|
32
|
+
* @author lxm
|
|
33
|
+
* @date 2023-09-11 07:30:31
|
|
34
|
+
* @type {number}
|
|
35
|
+
*/
|
|
36
|
+
dataType?: number;
|
|
37
|
+
|
|
30
38
|
/**
|
|
31
39
|
* 是否存储到origin里面(默认false)
|
|
32
40
|
*
|
|
@@ -50,6 +58,7 @@ export class UIMapField {
|
|
|
50
58
|
dataKey: string,
|
|
51
59
|
opts: {
|
|
52
60
|
isOriginField?: boolean;
|
|
61
|
+
dataType?: number;
|
|
53
62
|
} = {},
|
|
54
63
|
) {
|
|
55
64
|
this.uiKey = uiKey;
|
|
@@ -57,5 +66,8 @@ export class UIMapField {
|
|
|
57
66
|
if (!isNil(opts.isOriginField)) {
|
|
58
67
|
this.isOriginField = opts.isOriginField;
|
|
59
68
|
}
|
|
69
|
+
if (!isNil(opts.dataType)) {
|
|
70
|
+
this.dataType = opts.dataType;
|
|
71
|
+
}
|
|
60
72
|
}
|
|
61
73
|
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { RuntimeModelError } from '@ibiz-template/core';
|
|
2
|
+
import { IDEUIAppendParamLogic } from '@ibiz/model-core';
|
|
3
|
+
import { UILogicContext } from '../../ui-logic-context';
|
|
4
|
+
import { handleSrcVal } from '../../utils';
|
|
5
|
+
import { UILogicNode } from '../ui-logic-node';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 附加到数组参数
|
|
9
|
+
*
|
|
10
|
+
* @author lxm
|
|
11
|
+
* @date 2023-02-09 21:02:20
|
|
12
|
+
* @export
|
|
13
|
+
* @class AppendParamNode
|
|
14
|
+
* @extends {DELogicNode}
|
|
15
|
+
*/
|
|
16
|
+
export class AppendParamNode extends UILogicNode {
|
|
17
|
+
declare model: IDEUIAppendParamLogic;
|
|
18
|
+
|
|
19
|
+
async exec(ctx: UILogicContext): Promise<void> {
|
|
20
|
+
const {
|
|
21
|
+
dstDEUILogicParamId,
|
|
22
|
+
srcDEUILogicParamId,
|
|
23
|
+
dstIndex,
|
|
24
|
+
srcIndex,
|
|
25
|
+
srcSize,
|
|
26
|
+
} = this.model;
|
|
27
|
+
if (!dstDEUILogicParamId || !srcDEUILogicParamId) {
|
|
28
|
+
throw new RuntimeModelError(
|
|
29
|
+
this.model,
|
|
30
|
+
'缺少目标参数对象或者源参数对象配置',
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
const srcVal = handleSrcVal(ctx, this.model) as IData[];
|
|
34
|
+
const insertIndex = dstIndex || 0;
|
|
35
|
+
const _srcIndex = srcIndex || 0;
|
|
36
|
+
const _srcSize = srcSize || srcVal.length;
|
|
37
|
+
|
|
38
|
+
ctx.params[dstDEUILogicParamId].splice(
|
|
39
|
+
insertIndex,
|
|
40
|
+
0,
|
|
41
|
+
...srcVal.slice(_srcIndex, _srcSize),
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { RuntimeModelError } from '@ibiz-template/core';
|
|
2
|
+
import { IDEUICopyParamLogic } from '@ibiz/model-core';
|
|
3
|
+
import { clone } from 'ramda';
|
|
4
|
+
import { UILogicContext } from '../../ui-logic-context';
|
|
5
|
+
import { handleSrcVal } from '../../utils';
|
|
6
|
+
import { UILogicNode } from '../ui-logic-node';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* 拷贝参数
|
|
10
|
+
*
|
|
11
|
+
* @author lxm
|
|
12
|
+
* @date 2023-02-09 21:02:20
|
|
13
|
+
* @export
|
|
14
|
+
* @class CopyParamNode
|
|
15
|
+
* @extends {UILogicNode}
|
|
16
|
+
*/
|
|
17
|
+
export class CopyParamNode extends UILogicNode {
|
|
18
|
+
declare model: IDEUICopyParamLogic;
|
|
19
|
+
|
|
20
|
+
async exec(ctx: UILogicContext): Promise<void> {
|
|
21
|
+
const { dstDEUILogicParamId, srcDEUILogicParamId } = this.model;
|
|
22
|
+
if (!dstDEUILogicParamId || !srcDEUILogicParamId) {
|
|
23
|
+
throw new RuntimeModelError(
|
|
24
|
+
this.model,
|
|
25
|
+
'缺少目标参数对象或者源参数对象配置',
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
const srcVal = handleSrcVal(ctx, this.model);
|
|
29
|
+
ctx.params[dstDEUILogicParamId] = clone(srcVal);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { IDEUIDEDataSetLogic } from '@ibiz/model-core';
|
|
2
|
+
import { UILogicContext } from '../../ui-logic-context';
|
|
3
|
+
import { UILogicNode } from '../ui-logic-node';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 数据集合节点
|
|
7
|
+
*
|
|
8
|
+
* @author lxm
|
|
9
|
+
* @date 2023-02-09 21:02:00
|
|
10
|
+
* @export
|
|
11
|
+
* @class DataSetNode
|
|
12
|
+
* @extends {UILogicNode}
|
|
13
|
+
*/
|
|
14
|
+
export class DataSetNode extends UILogicNode {
|
|
15
|
+
declare model: IDEUIDEDataSetLogic;
|
|
16
|
+
|
|
17
|
+
async exec(ctx: UILogicContext): Promise<void> {
|
|
18
|
+
const {
|
|
19
|
+
dstAppDEDataSetId,
|
|
20
|
+
dstAppDataEntityId,
|
|
21
|
+
dstDEUILogicParamId,
|
|
22
|
+
retDEUILogicParamId,
|
|
23
|
+
} = this.model;
|
|
24
|
+
const requestData = ctx.params[dstDEUILogicParamId!];
|
|
25
|
+
const app = ibiz.hub.getApp(ctx.context.srfappid);
|
|
26
|
+
const res = await app.deService.exec(
|
|
27
|
+
dstAppDataEntityId!,
|
|
28
|
+
dstAppDEDataSetId!,
|
|
29
|
+
ctx.context,
|
|
30
|
+
requestData,
|
|
31
|
+
ctx.viewParams,
|
|
32
|
+
);
|
|
33
|
+
if (res.ok) {
|
|
34
|
+
ctx.params[retDEUILogicParamId!] = res.data;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { RuntimeError, RuntimeModelError } from '@ibiz-template/core';
|
|
2
|
+
import { IDEUIDELogicLogic } from '@ibiz/model-core';
|
|
3
|
+
import { execDELogicById } from '../../../de-logic';
|
|
4
|
+
import { UILogicContext } from '../../ui-logic-context';
|
|
5
|
+
import { UILogicNode } from '../ui-logic-node';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 执行实体逻辑节点
|
|
9
|
+
*
|
|
10
|
+
* @author lxm
|
|
11
|
+
* @date 2023-02-09 21:02:00
|
|
12
|
+
* @export
|
|
13
|
+
* @class ThrowExceptionNode
|
|
14
|
+
* @extends {UILogicNode}
|
|
15
|
+
*/
|
|
16
|
+
export class ExecuteDELogicNode extends UILogicNode {
|
|
17
|
+
declare model: IDEUIDELogicLogic;
|
|
18
|
+
|
|
19
|
+
async exec(ctx: UILogicContext): Promise<void> {
|
|
20
|
+
const {
|
|
21
|
+
dstAppDELogicId,
|
|
22
|
+
dstAppDataEntityId,
|
|
23
|
+
dstDEUILogicParamId,
|
|
24
|
+
retDEUILogicParamId,
|
|
25
|
+
} = this.model;
|
|
26
|
+
|
|
27
|
+
// 配置报错
|
|
28
|
+
if (!dstAppDataEntityId) {
|
|
29
|
+
throw new RuntimeModelError(this.model, '没有配置实体');
|
|
30
|
+
}
|
|
31
|
+
if (!dstAppDELogicId) {
|
|
32
|
+
throw new RuntimeModelError(this.model, '没有配置实体逻辑');
|
|
33
|
+
}
|
|
34
|
+
if (!dstDEUILogicParamId) {
|
|
35
|
+
throw new RuntimeModelError(this.model, '没有配置传入逻辑参数');
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const dstParam = ctx.params[dstDEUILogicParamId];
|
|
39
|
+
if (!dstParam) {
|
|
40
|
+
throw new RuntimeError(`没有找到传入参数${dstDEUILogicParamId}`);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// todo 需要传入参数格式约束
|
|
44
|
+
const result = await execDELogicById(
|
|
45
|
+
dstAppDELogicId,
|
|
46
|
+
dstAppDataEntityId,
|
|
47
|
+
dstParam.context,
|
|
48
|
+
dstParam.data,
|
|
49
|
+
dstParam.params,
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
// 如果有返回值参数返回值填入。
|
|
53
|
+
if (retDEUILogicParamId) {
|
|
54
|
+
ctx.params[retDEUILogicParamId] = result;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -8,3 +8,12 @@ export { ViewCtrlInvokeNode } from './view-ctrl-invoke-node/view-ctrl-invoke-nod
|
|
|
8
8
|
export { BindParamNode } from './bind-param-node/bind-param-node';
|
|
9
9
|
export { MsgBoxNode } from './msg-box-node/msg-box-node';
|
|
10
10
|
export { DebugParamNode } from './debug-param-node/debug-param-node';
|
|
11
|
+
export { ResetParamNode } from './reset-param-node/reset-param-node';
|
|
12
|
+
export { CopyParamNode } from './copy-param-node/copy-param-node';
|
|
13
|
+
export { AppendParamNode } from './append-param-node/append-param-node';
|
|
14
|
+
export { SortParamNode } from './sort-param-node/sort-param-node';
|
|
15
|
+
export { RenewParamNode } from './renew-param-node/renew-param-node';
|
|
16
|
+
export { DataSetNode } from './data-set-node/data-set-node';
|
|
17
|
+
export { ThrowExceptionNode } from './throw-exception-node/throw-exception-node';
|
|
18
|
+
export { ViewCtrlFireEventNode } from './view-ctrl-fire-event-node/view-ctrl-fire-event-node';
|
|
19
|
+
export { ExecuteDELogicNode } from './execute-de-logic-node/execute-de-logic-node';
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
/* eslint-disable no-await-in-loop */
|
|
1
2
|
import { ModelError } from '@ibiz-template/core';
|
|
2
3
|
import { IDEUILogicNodeParam } from '@ibiz/model-core';
|
|
4
|
+
import { clone } from 'ramda';
|
|
3
5
|
import { UILogicContext } from '../../ui-logic-context';
|
|
4
6
|
import { handleSrcVal } from '../../utils';
|
|
5
7
|
import { UILogicNode } from '../ui-logic-node';
|
|
@@ -16,21 +18,45 @@ import { UILogicNode } from '../ui-logic-node';
|
|
|
16
18
|
export class PrepareJSParamNode extends UILogicNode {
|
|
17
19
|
async exec(ctx: UILogicContext): Promise<void> {
|
|
18
20
|
const nodeParams = this.model.deuilogicNodeParams;
|
|
19
|
-
if (nodeParams?.length) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
if (!nodeParams?.length) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
for (const nodeParam of nodeParams) {
|
|
25
|
+
switch (nodeParam.paramAction) {
|
|
26
|
+
// 设置变量
|
|
27
|
+
case 'SETPARAMVALUE':
|
|
28
|
+
await this.setParamValue(nodeParam, ctx);
|
|
29
|
+
break;
|
|
30
|
+
// 重置变量
|
|
31
|
+
case 'RESETPARAM':
|
|
32
|
+
await this.resetParam(nodeParam, ctx);
|
|
33
|
+
break;
|
|
34
|
+
// 拷贝变量
|
|
35
|
+
case 'COPYPARAM':
|
|
36
|
+
await this.copyParam(nodeParam, ctx);
|
|
37
|
+
break;
|
|
38
|
+
// 绑定参数
|
|
39
|
+
case 'BINDPARAM':
|
|
40
|
+
await this.bindParam(nodeParam, ctx);
|
|
41
|
+
break;
|
|
42
|
+
// 重新建立变量
|
|
43
|
+
case 'RENEWPARAM':
|
|
44
|
+
await this.renewParam(nodeParam, ctx);
|
|
45
|
+
break;
|
|
46
|
+
// 附加到数组变量
|
|
47
|
+
case 'APPENDPARAM':
|
|
48
|
+
await this.appendParam(nodeParam, ctx);
|
|
49
|
+
break;
|
|
50
|
+
// 排序数组变量
|
|
51
|
+
case 'SORTPARAM':
|
|
52
|
+
await this.sortParam(nodeParam, ctx);
|
|
53
|
+
break;
|
|
54
|
+
default:
|
|
55
|
+
throw new ModelError(
|
|
56
|
+
nodeParam,
|
|
57
|
+
`暂未支持逻辑处理参数操作${nodeParam.paramAction}`,
|
|
58
|
+
);
|
|
59
|
+
}
|
|
34
60
|
}
|
|
35
61
|
}
|
|
36
62
|
|
|
@@ -40,7 +66,7 @@ export class PrepareJSParamNode extends UILogicNode {
|
|
|
40
66
|
* @date 2023-03-17 03:34:02
|
|
41
67
|
* @protected
|
|
42
68
|
* @param {IPSDELogicNodeParam} nodeParam
|
|
43
|
-
* @param {
|
|
69
|
+
* @param {UILogicContext} ctx
|
|
44
70
|
*/
|
|
45
71
|
protected setParamValue(
|
|
46
72
|
nodeParam: IDEUILogicNodeParam,
|
|
@@ -48,7 +74,7 @@ export class PrepareJSParamNode extends UILogicNode {
|
|
|
48
74
|
): void {
|
|
49
75
|
const { dstFieldName, dstDEUILogicParamId } = nodeParam;
|
|
50
76
|
// 目标参数
|
|
51
|
-
const dstField = dstFieldName
|
|
77
|
+
const dstField = dstFieldName;
|
|
52
78
|
// 源参数
|
|
53
79
|
const srcVal = handleSrcVal(ctx, nodeParam);
|
|
54
80
|
if (dstField) {
|
|
@@ -57,4 +83,114 @@ export class PrepareJSParamNode extends UILogicNode {
|
|
|
57
83
|
ctx.params[dstDEUILogicParamId!] = srcVal;
|
|
58
84
|
}
|
|
59
85
|
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* 拷贝变量
|
|
89
|
+
* @author lxm
|
|
90
|
+
* @date 2023-03-24 09:50:02
|
|
91
|
+
* @protected
|
|
92
|
+
* @param {IDEUILogicNodeParam} nodeParam
|
|
93
|
+
* @param {UILogicContext} ctx
|
|
94
|
+
* @return {*} {*}
|
|
95
|
+
*/
|
|
96
|
+
protected copyParam(
|
|
97
|
+
nodeParam: IDEUILogicNodeParam,
|
|
98
|
+
ctx: UILogicContext,
|
|
99
|
+
): void {
|
|
100
|
+
const { dstDEUILogicParamId } = nodeParam;
|
|
101
|
+
const srcVal = handleSrcVal(ctx, nodeParam);
|
|
102
|
+
ctx.params[dstDEUILogicParamId!] = clone(srcVal);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* 绑定参数
|
|
107
|
+
* @author lxm
|
|
108
|
+
* @date 2023-06-13 05:43:43
|
|
109
|
+
* @protected
|
|
110
|
+
* @param {IDEUILogicNodeParam} nodeParam
|
|
111
|
+
* @param {UILogicContext} ctx
|
|
112
|
+
*/
|
|
113
|
+
protected bindParam(
|
|
114
|
+
nodeParam: IDEUILogicNodeParam,
|
|
115
|
+
ctx: UILogicContext,
|
|
116
|
+
): void {
|
|
117
|
+
const srcVal = handleSrcVal(ctx, nodeParam);
|
|
118
|
+
ctx.params[nodeParam.dstDEUILogicParamId!] = srcVal;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* 重置变量
|
|
123
|
+
* @author lxm
|
|
124
|
+
* @date 2023-03-24 09:46:57
|
|
125
|
+
* @protected
|
|
126
|
+
* @param {IDEUILogicNodeParam} nodeParam
|
|
127
|
+
* @param {UILogicContext} ctx
|
|
128
|
+
*/
|
|
129
|
+
protected resetParam(
|
|
130
|
+
nodeParam: IDEUILogicNodeParam,
|
|
131
|
+
ctx: UILogicContext,
|
|
132
|
+
): void {
|
|
133
|
+
const { dstDEUILogicParamId } = nodeParam;
|
|
134
|
+
ctx.resetParam(dstDEUILogicParamId!);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* 重新建立变量
|
|
139
|
+
* @author lxm
|
|
140
|
+
* @date 2023-03-24 09:46:47
|
|
141
|
+
* @protected
|
|
142
|
+
* @param {IDEUILogicNodeParam} nodeParam
|
|
143
|
+
* @param {UILogicContext} ctx
|
|
144
|
+
*/
|
|
145
|
+
protected renewParam(
|
|
146
|
+
nodeParam: IDEUILogicNodeParam,
|
|
147
|
+
ctx: UILogicContext,
|
|
148
|
+
): void {
|
|
149
|
+
const { dstDEUILogicParamId } = nodeParam;
|
|
150
|
+
ctx.renewParam(dstDEUILogicParamId!);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* 附加到数组变量
|
|
155
|
+
* @author lxm
|
|
156
|
+
* @date 2023-03-24 09:46:47
|
|
157
|
+
* @protected
|
|
158
|
+
* @param {IDEUILogicNodeParam} nodeParam
|
|
159
|
+
* @param {UILogicContext} ctx
|
|
160
|
+
*/
|
|
161
|
+
protected appendParam(
|
|
162
|
+
nodeParam: IDEUILogicNodeParam,
|
|
163
|
+
ctx: UILogicContext,
|
|
164
|
+
): void {
|
|
165
|
+
const { dstDEUILogicParamId, dstIndex, srcIndex, srcSize } = nodeParam;
|
|
166
|
+
const srcVal = handleSrcVal(ctx, nodeParam) as IData[];
|
|
167
|
+
const insertIndex = dstIndex || 0;
|
|
168
|
+
const _srcIndex = srcIndex || 0;
|
|
169
|
+
const _srcSize = srcSize || srcVal.length;
|
|
170
|
+
ctx.params[dstDEUILogicParamId!].splice(
|
|
171
|
+
insertIndex,
|
|
172
|
+
0,
|
|
173
|
+
...srcVal.slice(_srcIndex, _srcSize),
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* 排序数组变量
|
|
179
|
+
* @author lxm
|
|
180
|
+
* @date 2023-03-24 10:23:01
|
|
181
|
+
* @protected
|
|
182
|
+
* @param {IDEUILogicNodeParam} nodeParam
|
|
183
|
+
* @param {UILogicContext} ctx
|
|
184
|
+
*/
|
|
185
|
+
protected sortParam(
|
|
186
|
+
nodeParam: IDEUILogicNodeParam,
|
|
187
|
+
ctx: UILogicContext,
|
|
188
|
+
): void {
|
|
189
|
+
const { dstDEUILogicParamId, dstFieldName, dstSortDir } = nodeParam;
|
|
190
|
+
const key = dstFieldName!;
|
|
191
|
+
const arr = ctx.params[dstDEUILogicParamId!] as IData[];
|
|
192
|
+
arr.sort((a, b) => {
|
|
193
|
+
return dstSortDir === 'ASC' ? a[key] - b[key] : b[key] - a[key];
|
|
194
|
+
});
|
|
195
|
+
}
|
|
60
196
|
}
|