@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.
Files changed (195) hide show
  1. package/dist/index.esm.js +923 -204
  2. package/dist/index.system.min.js +1 -1
  3. package/dist/index.system.min.js.map +1 -1
  4. package/out/constant/view-call-tag.d.ts +9 -1
  5. package/out/constant/view-call-tag.d.ts.map +1 -1
  6. package/out/constant/view-call-tag.js +8 -0
  7. package/out/controller/control/data-view/data-view.controller.d.ts +25 -2
  8. package/out/controller/control/data-view/data-view.controller.d.ts.map +1 -1
  9. package/out/controller/control/data-view/data-view.controller.js +70 -30
  10. package/out/controller/control/data-view/data-view.service.d.ts +1 -1
  11. package/out/controller/control/data-view/data-view.service.d.ts.map +1 -1
  12. package/out/controller/control/data-view/data-view.service.js +2 -1
  13. package/out/controller/control/form/edit-form/edit-form.service.d.ts.map +1 -1
  14. package/out/controller/control/form/edit-form/edit-form.service.js +1 -0
  15. package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.d.ts.map +1 -1
  16. package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.js +8 -4
  17. package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
  18. package/out/controller/control/grid/grid/grid.controller.js +1 -1
  19. package/out/controller/control/grid/grid/grid.service.d.ts.map +1 -1
  20. package/out/controller/control/grid/grid/grid.service.js +1 -0
  21. package/out/controller/control/index.d.ts +1 -0
  22. package/out/controller/control/index.d.ts.map +1 -1
  23. package/out/controller/control/index.js +1 -0
  24. package/out/controller/control/kanban/index.d.ts +3 -0
  25. package/out/controller/control/kanban/index.d.ts.map +1 -0
  26. package/out/controller/control/kanban/index.js +2 -0
  27. package/out/controller/control/kanban/kanban.controller.d.ts +99 -0
  28. package/out/controller/control/kanban/kanban.controller.d.ts.map +1 -0
  29. package/out/controller/control/kanban/kanban.controller.js +310 -0
  30. package/out/controller/control/kanban/kanban.service.d.ts +24 -0
  31. package/out/controller/control/kanban/kanban.service.d.ts.map +1 -0
  32. package/out/controller/control/kanban/kanban.service.js +26 -0
  33. package/out/controller/control/list/list.controller.d.ts.map +1 -1
  34. package/out/controller/control/list/list.controller.js +3 -0
  35. package/out/controller/control/list/list.service.d.ts.map +1 -1
  36. package/out/controller/control/list/list.service.js +1 -0
  37. package/out/controller/control/md-ctrl/md-ctrl.service.d.ts.map +1 -1
  38. package/out/controller/control/md-ctrl/md-ctrl.service.js +1 -0
  39. package/out/controller/control/pickup-view-panel/pickup-view-panel.controller.d.ts.map +1 -1
  40. package/out/controller/control/pickup-view-panel/pickup-view-panel.controller.js +3 -2
  41. package/out/controller/control/toolbar/toolbar.controllerr.js +2 -2
  42. package/out/controller/ctx/ctx.d.ts +8 -0
  43. package/out/controller/ctx/ctx.d.ts.map +1 -1
  44. package/out/controller/ctx/ctx.js +12 -0
  45. package/out/de-logic/utils/handle-src-val.d.ts.map +1 -1
  46. package/out/de-logic/utils/handle-src-val.js +6 -4
  47. package/out/engine/view-base.engine.d.ts.map +1 -1
  48. package/out/engine/view-base.engine.js +2 -1
  49. package/out/interface/controller/controller/common/i-drag-change-info.d.ts +38 -0
  50. package/out/interface/controller/controller/common/i-drag-change-info.d.ts.map +1 -0
  51. package/out/interface/controller/controller/common/i-drag-change-info.js +1 -0
  52. package/out/interface/controller/controller/common/index.d.ts +1 -0
  53. package/out/interface/controller/controller/common/index.d.ts.map +1 -1
  54. package/out/interface/controller/controller/common/index.js +1 -0
  55. package/out/interface/controller/controller/control/i-data-view-control.controller.d.ts +1 -1
  56. package/out/interface/controller/controller/control/i-data-view-control.controller.d.ts.map +1 -1
  57. package/out/interface/controller/controller/control/i-kanban.controller.d.ts +14 -0
  58. package/out/interface/controller/controller/control/i-kanban.controller.d.ts.map +1 -0
  59. package/out/interface/controller/controller/control/i-kanban.controller.js +1 -0
  60. package/out/interface/controller/controller/control/i-panel.controller.d.ts +7 -0
  61. package/out/interface/controller/controller/control/i-panel.controller.d.ts.map +1 -1
  62. package/out/interface/controller/controller/control/index.d.ts +1 -0
  63. package/out/interface/controller/controller/control/index.d.ts.map +1 -1
  64. package/out/interface/controller/controller/control/index.js +1 -0
  65. package/out/interface/controller/controller/control/panel-item/i-panel-data-container.controller.d.ts +7 -0
  66. package/out/interface/controller/controller/control/panel-item/i-panel-data-container.controller.d.ts.map +1 -1
  67. package/out/interface/controller/event/control/i-kanban.event.d.ts +3 -3
  68. package/out/interface/controller/event/control/i-kanban.event.d.ts.map +1 -1
  69. package/out/interface/controller/event/view/i-kanban-view.event.d.ts +1 -1
  70. package/out/interface/controller/state/control/i-kanban.state.d.ts +33 -0
  71. package/out/interface/controller/state/control/i-kanban.state.d.ts.map +1 -0
  72. package/out/interface/controller/state/control/i-kanban.state.js +1 -0
  73. package/out/interface/controller/state/control/i-md-control.state.d.ts +7 -0
  74. package/out/interface/controller/state/control/i-md-control.state.d.ts.map +1 -1
  75. package/out/interface/controller/state/control/index.d.ts +1 -0
  76. package/out/interface/controller/state/control/index.d.ts.map +1 -1
  77. package/out/interface/controller/state/control/index.js +1 -0
  78. package/out/interface/controller/state/view/i-kanban-view.state.d.ts +11 -0
  79. package/out/interface/controller/state/view/i-kanban-view.state.d.ts.map +1 -0
  80. package/out/interface/controller/state/view/i-kanban-view.state.js +1 -0
  81. package/out/interface/controller/state/view/index.d.ts +1 -0
  82. package/out/interface/controller/state/view/index.d.ts.map +1 -1
  83. package/out/interface/controller/state/view/index.js +1 -0
  84. package/out/logic-scheduler/trigger/timer-trigger.d.ts +1 -2
  85. package/out/logic-scheduler/trigger/timer-trigger.d.ts.map +1 -1
  86. package/out/service/dto/method.dto.d.ts.map +1 -1
  87. package/out/service/dto/method.dto.js +1 -2
  88. package/out/service/service/entity/method/method.d.ts.map +1 -1
  89. package/out/service/service/entity/method/method.js +3 -1
  90. package/out/service/service/work-flow/work-flow.service.d.ts +11 -0
  91. package/out/service/service/work-flow/work-flow.service.d.ts.map +1 -1
  92. package/out/service/service/work-flow/work-flow.service.js +15 -0
  93. package/out/service/vo/control.vo.d.ts +1 -0
  94. package/out/service/vo/control.vo.d.ts.map +1 -1
  95. package/out/service/vo/control.vo.js +18 -5
  96. package/out/service/vo/ui-map-field.d.ts +8 -0
  97. package/out/service/vo/ui-map-field.d.ts.map +1 -1
  98. package/out/service/vo/ui-map-field.js +3 -0
  99. package/out/ui-logic/ui-logic-link/ui-logic-link-single-cond/ui-logic-link-single-cond.js +1 -1
  100. package/out/ui-logic/ui-logic-node/append-param-node/append-param-node.d.ts +17 -0
  101. package/out/ui-logic/ui-logic-node/append-param-node/append-param-node.d.ts.map +1 -0
  102. package/out/ui-logic/ui-logic-node/append-param-node/append-param-node.js +25 -0
  103. package/out/ui-logic/ui-logic-node/copy-param-node/copy-param-node.d.ts +17 -0
  104. package/out/ui-logic/ui-logic-node/copy-param-node/copy-param-node.d.ts.map +1 -0
  105. package/out/ui-logic/ui-logic-node/copy-param-node/copy-param-node.js +23 -0
  106. package/out/ui-logic/ui-logic-node/data-set-node/data-set-node.d.ts +17 -0
  107. package/out/ui-logic/ui-logic-node/data-set-node/data-set-node.d.ts.map +1 -0
  108. package/out/ui-logic/ui-logic-node/data-set-node/data-set-node.js +21 -0
  109. package/out/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.d.ts +17 -0
  110. package/out/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.d.ts.map +1 -0
  111. package/out/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.js +37 -0
  112. package/out/ui-logic/ui-logic-node/index.d.ts +9 -0
  113. package/out/ui-logic/ui-logic-node/index.d.ts.map +1 -1
  114. package/out/ui-logic/ui-logic-node/index.js +9 -0
  115. package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.d.ts +56 -1
  116. package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.d.ts.map +1 -1
  117. package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.js +122 -12
  118. package/out/ui-logic/ui-logic-node/renew-param-node/renew-param-node.d.ts +17 -0
  119. package/out/ui-logic/ui-logic-node/renew-param-node/renew-param-node.d.ts.map +1 -0
  120. package/out/ui-logic/ui-logic-node/renew-param-node/renew-param-node.js +20 -0
  121. package/out/ui-logic/ui-logic-node/reset-param-node/reset-param-node.d.ts +17 -0
  122. package/out/ui-logic/ui-logic-node/reset-param-node/reset-param-node.d.ts.map +1 -0
  123. package/out/ui-logic/ui-logic-node/reset-param-node/reset-param-node.js +20 -0
  124. package/out/ui-logic/ui-logic-node/sort-param-node/sort-param-node.d.ts +17 -0
  125. package/out/ui-logic/ui-logic-node/sort-param-node/sort-param-node.d.ts.map +1 -0
  126. package/out/ui-logic/ui-logic-node/sort-param-node/sort-param-node.js +24 -0
  127. package/out/ui-logic/ui-logic-node/throw-exception-node/throw-exception-node.d.ts +17 -0
  128. package/out/ui-logic/ui-logic-node/throw-exception-node/throw-exception-node.d.ts.map +1 -0
  129. package/out/ui-logic/ui-logic-node/throw-exception-node/throw-exception-node.js +17 -0
  130. package/out/ui-logic/ui-logic-node/view-ctrl-fire-event-node/view-ctrl-fire-event-node.d.ts +16 -0
  131. package/out/ui-logic/ui-logic-node/view-ctrl-fire-event-node/view-ctrl-fire-event-node.d.ts.map +1 -0
  132. package/out/ui-logic/ui-logic-node/view-ctrl-fire-event-node/view-ctrl-fire-event-node.js +37 -0
  133. package/out/ui-logic/ui-logic-param/ui-logic-param.d.ts.map +1 -1
  134. package/out/ui-logic/ui-logic-param/ui-logic-param.js +2 -2
  135. package/out/ui-logic/ui-logic.d.ts.map +1 -1
  136. package/out/ui-logic/ui-logic.js +24 -6
  137. package/out/ui-logic/utils/handle-src-val.d.ts.map +1 -1
  138. package/out/ui-logic/utils/handle-src-val.js +7 -5
  139. package/out/utils/verify/de-rule-verify.js +1 -1
  140. package/package.json +7 -7
  141. package/src/constant/view-call-tag.ts +8 -0
  142. package/src/controller/control/data-view/data-view.controller.ts +93 -43
  143. package/src/controller/control/data-view/data-view.service.ts +5 -2
  144. package/src/controller/control/form/edit-form/edit-form.service.ts +1 -0
  145. package/src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts +10 -5
  146. package/src/controller/control/grid/grid/grid.controller.ts +1 -1
  147. package/src/controller/control/grid/grid/grid.service.ts +1 -0
  148. package/src/controller/control/index.ts +1 -0
  149. package/src/controller/control/kanban/index.ts +2 -0
  150. package/src/controller/control/kanban/kanban.controller.ts +370 -0
  151. package/src/controller/control/kanban/kanban.service.ts +33 -0
  152. package/src/controller/control/list/list.controller.ts +3 -0
  153. package/src/controller/control/list/list.service.ts +1 -0
  154. package/src/controller/control/md-ctrl/md-ctrl.service.ts +1 -0
  155. package/src/controller/control/pickup-view-panel/pickup-view-panel.controller.ts +3 -2
  156. package/src/controller/control/toolbar/toolbar.controllerr.ts +2 -2
  157. package/src/controller/ctx/ctx.ts +13 -0
  158. package/src/de-logic/utils/handle-src-val.ts +6 -4
  159. package/src/engine/view-base.engine.ts +2 -1
  160. package/src/interface/controller/controller/common/i-drag-change-info.ts +40 -0
  161. package/src/interface/controller/controller/common/index.ts +1 -0
  162. package/src/interface/controller/controller/control/i-data-view-control.controller.ts +5 -6
  163. package/src/interface/controller/controller/control/i-kanban.controller.ts +14 -0
  164. package/src/interface/controller/controller/control/i-panel.controller.ts +8 -0
  165. package/src/interface/controller/controller/control/index.ts +1 -0
  166. package/src/interface/controller/controller/control/panel-item/i-panel-data-container.controller.ts +8 -0
  167. package/src/interface/controller/event/control/i-kanban.event.ts +3 -3
  168. package/src/interface/controller/event/view/i-kanban-view.event.ts +1 -1
  169. package/src/interface/controller/state/control/i-kanban.state.ts +35 -0
  170. package/src/interface/controller/state/control/i-md-control.state.ts +8 -0
  171. package/src/interface/controller/state/control/index.ts +1 -0
  172. package/src/interface/controller/state/view/i-kanban-view.state.ts +10 -0
  173. package/src/interface/controller/state/view/index.ts +1 -0
  174. package/src/logic-scheduler/trigger/timer-trigger.ts +2 -2
  175. package/src/service/dto/method.dto.ts +1 -2
  176. package/src/service/service/entity/method/method.ts +3 -1
  177. package/src/service/service/work-flow/work-flow.service.ts +28 -0
  178. package/src/service/vo/control.vo.ts +19 -4
  179. package/src/service/vo/ui-map-field.ts +12 -0
  180. package/src/ui-logic/ui-logic-link/ui-logic-link-single-cond/ui-logic-link-single-cond.ts +1 -1
  181. package/src/ui-logic/ui-logic-node/append-param-node/append-param-node.ts +44 -0
  182. package/src/ui-logic/ui-logic-node/copy-param-node/copy-param-node.ts +31 -0
  183. package/src/ui-logic/ui-logic-node/data-set-node/data-set-node.ts +37 -0
  184. package/src/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.ts +57 -0
  185. package/src/ui-logic/ui-logic-node/index.ts +9 -0
  186. package/src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts +153 -17
  187. package/src/ui-logic/ui-logic-node/renew-param-node/renew-param-node.ts +25 -0
  188. package/src/ui-logic/ui-logic-node/reset-param-node/reset-param-node.ts +25 -0
  189. package/src/ui-logic/ui-logic-node/sort-param-node/sort-param-node.ts +29 -0
  190. package/src/ui-logic/ui-logic-node/throw-exception-node/throw-exception-node.ts +23 -0
  191. package/src/ui-logic/ui-logic-node/view-ctrl-fire-event-node/view-ctrl-fire-event-node.ts +47 -0
  192. package/src/ui-logic/ui-logic-param/ui-logic-param.ts +2 -5
  193. package/src/ui-logic/ui-logic.ts +32 -5
  194. package/src/ui-logic/utils/handle-src-val.ts +7 -5
  195. package/src/utils/verify/de-rule-verify.ts +1 -1
@@ -1,7 +1,7 @@
1
1
  import { IMDViewEvent } from './i-md-view.event';
2
2
 
3
3
  /**
4
- * 看板视图事件
4
+ * 看板kanban视图事件
5
5
  *
6
6
  * @author lxm
7
7
  * @date 2022-09-13 10:09:00
@@ -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
  }
@@ -32,3 +32,4 @@ export * from './i-dashboard.state';
32
32
  export * from './i-calendar.state';
33
33
  export * from './i-calendar-exp-bar.state';
34
34
  export * from './i-context-menu.state';
35
+ export * from './i-kanban.state';
@@ -0,0 +1,10 @@
1
+ import { IMDViewState } from './i-md-view.state';
2
+
3
+ /**
4
+ * kanban看板视图UI状态
5
+ *
6
+ * @export
7
+ * @class IKanbanViewState
8
+ * @extends {IMDViewState}
9
+ */
10
+ export interface IKanbanViewState extends IMDViewState {}
@@ -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: NodeJS.Timer | null = null;
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 (notNilEmpty(data[key])) {
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
- this.linkProperty(key, value, mapField.isOriginField);
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' || uiKey === 'srfkey') {
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
- return this.$origin[dataKey];
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
- this.$origin[dataKey] = val;
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
  }
@@ -33,7 +33,7 @@ export class UILogicLinkSingleCond extends UILogicLinkCond {
33
33
  readonly dstParam: string;
34
34
 
35
35
  get dstField(): string {
36
- return this.model.dstFieldName!.toLowerCase();
36
+ return this.model.dstFieldName!;
37
37
  }
38
38
 
39
39
  get op(): string {
@@ -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
- await Promise.all(
21
- nodeParams.map(nodeParam => {
22
- switch (nodeParam.paramAction) {
23
- // 设置变量
24
- case 'SETPARAMVALUE':
25
- return this.setParamValue(nodeParam, ctx);
26
- default:
27
- throw new ModelError(
28
- nodeParam,
29
- `暂未支持逻辑处理参数操作${nodeParam.paramAction}`,
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 {DELogicContext} ctx
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?.toLowerCase();
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
  }