@ibiz-template/runtime 0.1.21 → 0.1.22

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 (182) hide show
  1. package/dist/index.esm.js +902 -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/index.d.ts +1 -0
  61. package/out/interface/controller/controller/control/index.d.ts.map +1 -1
  62. package/out/interface/controller/controller/control/index.js +1 -0
  63. package/out/interface/controller/event/control/i-kanban.event.d.ts +3 -3
  64. package/out/interface/controller/event/control/i-kanban.event.d.ts.map +1 -1
  65. package/out/interface/controller/event/view/i-kanban-view.event.d.ts +1 -1
  66. package/out/interface/controller/state/control/i-kanban.state.d.ts +33 -0
  67. package/out/interface/controller/state/control/i-kanban.state.d.ts.map +1 -0
  68. package/out/interface/controller/state/control/i-kanban.state.js +1 -0
  69. package/out/interface/controller/state/control/i-md-control.state.d.ts +7 -0
  70. package/out/interface/controller/state/control/i-md-control.state.d.ts.map +1 -1
  71. package/out/interface/controller/state/control/index.d.ts +1 -0
  72. package/out/interface/controller/state/control/index.d.ts.map +1 -1
  73. package/out/interface/controller/state/control/index.js +1 -0
  74. package/out/interface/controller/state/view/i-kanban-view.state.d.ts +11 -0
  75. package/out/interface/controller/state/view/i-kanban-view.state.d.ts.map +1 -0
  76. package/out/interface/controller/state/view/i-kanban-view.state.js +1 -0
  77. package/out/interface/controller/state/view/index.d.ts +1 -0
  78. package/out/interface/controller/state/view/index.d.ts.map +1 -1
  79. package/out/interface/controller/state/view/index.js +1 -0
  80. package/out/service/dto/method.dto.d.ts.map +1 -1
  81. package/out/service/dto/method.dto.js +1 -2
  82. package/out/service/service/entity/method/method.d.ts.map +1 -1
  83. package/out/service/service/entity/method/method.js +3 -1
  84. package/out/service/vo/control.vo.d.ts +1 -0
  85. package/out/service/vo/control.vo.d.ts.map +1 -1
  86. package/out/service/vo/control.vo.js +18 -5
  87. package/out/service/vo/ui-map-field.d.ts +8 -0
  88. package/out/service/vo/ui-map-field.d.ts.map +1 -1
  89. package/out/service/vo/ui-map-field.js +3 -0
  90. package/out/ui-logic/ui-logic-link/ui-logic-link-single-cond/ui-logic-link-single-cond.js +1 -1
  91. package/out/ui-logic/ui-logic-node/append-param-node/append-param-node.d.ts +17 -0
  92. package/out/ui-logic/ui-logic-node/append-param-node/append-param-node.d.ts.map +1 -0
  93. package/out/ui-logic/ui-logic-node/append-param-node/append-param-node.js +25 -0
  94. package/out/ui-logic/ui-logic-node/copy-param-node/copy-param-node.d.ts +17 -0
  95. package/out/ui-logic/ui-logic-node/copy-param-node/copy-param-node.d.ts.map +1 -0
  96. package/out/ui-logic/ui-logic-node/copy-param-node/copy-param-node.js +23 -0
  97. package/out/ui-logic/ui-logic-node/data-set-node/data-set-node.d.ts +17 -0
  98. package/out/ui-logic/ui-logic-node/data-set-node/data-set-node.d.ts.map +1 -0
  99. package/out/ui-logic/ui-logic-node/data-set-node/data-set-node.js +21 -0
  100. package/out/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.d.ts +17 -0
  101. package/out/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.d.ts.map +1 -0
  102. package/out/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.js +37 -0
  103. package/out/ui-logic/ui-logic-node/index.d.ts +9 -0
  104. package/out/ui-logic/ui-logic-node/index.d.ts.map +1 -1
  105. package/out/ui-logic/ui-logic-node/index.js +9 -0
  106. package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.d.ts +56 -1
  107. package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.d.ts.map +1 -1
  108. package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.js +122 -12
  109. package/out/ui-logic/ui-logic-node/renew-param-node/renew-param-node.d.ts +17 -0
  110. package/out/ui-logic/ui-logic-node/renew-param-node/renew-param-node.d.ts.map +1 -0
  111. package/out/ui-logic/ui-logic-node/renew-param-node/renew-param-node.js +20 -0
  112. package/out/ui-logic/ui-logic-node/reset-param-node/reset-param-node.d.ts +17 -0
  113. package/out/ui-logic/ui-logic-node/reset-param-node/reset-param-node.d.ts.map +1 -0
  114. package/out/ui-logic/ui-logic-node/reset-param-node/reset-param-node.js +20 -0
  115. package/out/ui-logic/ui-logic-node/sort-param-node/sort-param-node.d.ts +17 -0
  116. package/out/ui-logic/ui-logic-node/sort-param-node/sort-param-node.d.ts.map +1 -0
  117. package/out/ui-logic/ui-logic-node/sort-param-node/sort-param-node.js +24 -0
  118. package/out/ui-logic/ui-logic-node/throw-exception-node/throw-exception-node.d.ts +17 -0
  119. package/out/ui-logic/ui-logic-node/throw-exception-node/throw-exception-node.d.ts.map +1 -0
  120. package/out/ui-logic/ui-logic-node/throw-exception-node/throw-exception-node.js +17 -0
  121. package/out/ui-logic/ui-logic-node/view-ctrl-fire-event-node/view-ctrl-fire-event-node.d.ts +16 -0
  122. package/out/ui-logic/ui-logic-node/view-ctrl-fire-event-node/view-ctrl-fire-event-node.d.ts.map +1 -0
  123. package/out/ui-logic/ui-logic-node/view-ctrl-fire-event-node/view-ctrl-fire-event-node.js +37 -0
  124. package/out/ui-logic/ui-logic-param/ui-logic-param.d.ts.map +1 -1
  125. package/out/ui-logic/ui-logic-param/ui-logic-param.js +2 -2
  126. package/out/ui-logic/ui-logic.d.ts.map +1 -1
  127. package/out/ui-logic/ui-logic.js +24 -6
  128. package/out/ui-logic/utils/handle-src-val.d.ts.map +1 -1
  129. package/out/ui-logic/utils/handle-src-val.js +7 -5
  130. package/out/utils/verify/de-rule-verify.js +1 -1
  131. package/package.json +5 -5
  132. package/src/constant/view-call-tag.ts +8 -0
  133. package/src/controller/control/data-view/data-view.controller.ts +93 -43
  134. package/src/controller/control/data-view/data-view.service.ts +5 -2
  135. package/src/controller/control/form/edit-form/edit-form.service.ts +1 -0
  136. package/src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts +10 -5
  137. package/src/controller/control/grid/grid/grid.controller.ts +1 -1
  138. package/src/controller/control/grid/grid/grid.service.ts +1 -0
  139. package/src/controller/control/index.ts +1 -0
  140. package/src/controller/control/kanban/index.ts +2 -0
  141. package/src/controller/control/kanban/kanban.controller.ts +370 -0
  142. package/src/controller/control/kanban/kanban.service.ts +33 -0
  143. package/src/controller/control/list/list.controller.ts +3 -0
  144. package/src/controller/control/list/list.service.ts +1 -0
  145. package/src/controller/control/md-ctrl/md-ctrl.service.ts +1 -0
  146. package/src/controller/control/pickup-view-panel/pickup-view-panel.controller.ts +3 -2
  147. package/src/controller/control/toolbar/toolbar.controllerr.ts +2 -2
  148. package/src/controller/ctx/ctx.ts +13 -0
  149. package/src/de-logic/utils/handle-src-val.ts +6 -4
  150. package/src/engine/view-base.engine.ts +2 -1
  151. package/src/interface/controller/controller/common/i-drag-change-info.ts +40 -0
  152. package/src/interface/controller/controller/common/index.ts +1 -0
  153. package/src/interface/controller/controller/control/i-data-view-control.controller.ts +5 -6
  154. package/src/interface/controller/controller/control/i-kanban.controller.ts +14 -0
  155. package/src/interface/controller/controller/control/index.ts +1 -0
  156. package/src/interface/controller/event/control/i-kanban.event.ts +3 -3
  157. package/src/interface/controller/event/view/i-kanban-view.event.ts +1 -1
  158. package/src/interface/controller/state/control/i-kanban.state.ts +35 -0
  159. package/src/interface/controller/state/control/i-md-control.state.ts +8 -0
  160. package/src/interface/controller/state/control/index.ts +1 -0
  161. package/src/interface/controller/state/view/i-kanban-view.state.ts +10 -0
  162. package/src/interface/controller/state/view/index.ts +1 -0
  163. package/src/service/dto/method.dto.ts +1 -2
  164. package/src/service/service/entity/method/method.ts +3 -1
  165. package/src/service/vo/control.vo.ts +19 -4
  166. package/src/service/vo/ui-map-field.ts +12 -0
  167. package/src/ui-logic/ui-logic-link/ui-logic-link-single-cond/ui-logic-link-single-cond.ts +1 -1
  168. package/src/ui-logic/ui-logic-node/append-param-node/append-param-node.ts +44 -0
  169. package/src/ui-logic/ui-logic-node/copy-param-node/copy-param-node.ts +31 -0
  170. package/src/ui-logic/ui-logic-node/data-set-node/data-set-node.ts +37 -0
  171. package/src/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.ts +57 -0
  172. package/src/ui-logic/ui-logic-node/index.ts +9 -0
  173. package/src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts +153 -17
  174. package/src/ui-logic/ui-logic-node/renew-param-node/renew-param-node.ts +25 -0
  175. package/src/ui-logic/ui-logic-node/reset-param-node/reset-param-node.ts +25 -0
  176. package/src/ui-logic/ui-logic-node/sort-param-node/sort-param-node.ts +29 -0
  177. package/src/ui-logic/ui-logic-node/throw-exception-node/throw-exception-node.ts +23 -0
  178. package/src/ui-logic/ui-logic-node/view-ctrl-fire-event-node/view-ctrl-fire-event-node.ts +47 -0
  179. package/src/ui-logic/ui-logic-param/ui-logic-param.ts +2 -5
  180. package/src/ui-logic/ui-logic.ts +32 -5
  181. package/src/ui-logic/utils/handle-src-val.ts +7 -5
  182. package/src/utils/verify/de-rule-verify.ts +1 -1
@@ -0,0 +1,33 @@
1
+ import { IHttpResponse } from '@ibiz-template/core';
2
+ import { IDEKanban } from '@ibiz/model-core';
3
+ import { ControlVO } from '../../../service';
4
+ import { DataViewControlService } from '../data-view';
5
+
6
+ /**
7
+ * 看板(kanban)部件服务
8
+ *
9
+ * @export
10
+ * @class DataViewControlService
11
+ * @extends {MDControlService<IDEDataView>}
12
+ */
13
+ export class KanbanService extends DataViewControlService<IDEKanban> {
14
+ /**
15
+ * 更新分组数据
16
+ *
17
+ * @author lxm
18
+ * @date 2022-09-07 19:09:11
19
+ * @param {IParams} context 上下文
20
+ * @param {ControlVO} data 数据
21
+ * @returns {*}
22
+ */
23
+ async updateGroup(
24
+ context: IParams,
25
+ data: ControlVO,
26
+ ): Promise<IHttpResponse<ControlVO>> {
27
+ const updateAction =
28
+ this.model.updateGroupControlAction?.appDEMethodId || 'update';
29
+ let res = await this.exec(updateAction, context, data.getOrigin());
30
+ res = this.handleResponse(res);
31
+ return res as IHttpResponse<ControlVO>;
32
+ }
33
+ }
@@ -181,6 +181,7 @@ export class ListController
181
181
  childrenMap.forEach((value: IData[], key: string) => {
182
182
  groups.push({
183
183
  caption: key,
184
+ key,
184
185
  children: [...value],
185
186
  });
186
187
  });
@@ -211,6 +212,7 @@ export class ListController
211
212
  );
212
213
  groups.push({
213
214
  caption: codeListItem.text,
215
+ key: codeListItem.value,
214
216
  children: [...value],
215
217
  });
216
218
  keys.push(codeListItem.value as string);
@@ -221,6 +223,7 @@ export class ListController
221
223
  if (otherGroup.length > 0) {
222
224
  groups.push({
223
225
  caption: '其他',
226
+ key: '其他',
224
227
  children: [...otherGroup],
225
228
  });
226
229
  }
@@ -28,6 +28,7 @@ export class ListService extends MDControlService<IDEList> {
28
28
  const deFieldKey = deField.toLowerCase();
29
29
  mapField = new UIMapField(uiKey, deFieldKey, {
30
30
  isOriginField: true,
31
+ dataType: item.dataType,
31
32
  });
32
33
  } else {
33
34
  // 前台属性
@@ -29,6 +29,7 @@ export class MDCtrlService extends MDControlService<IDEMobMDCtrl> {
29
29
  const deFieldKey = deField.toLowerCase();
30
30
  mapField = new UIMapField(uiKey, deFieldKey, {
31
31
  isOriginField: true,
32
+ dataType: item.dataType,
32
33
  });
33
34
  } else {
34
35
  // 前台属性
@@ -1,4 +1,5 @@
1
1
  import { IAppDEGridView, IDEPickupViewPanel } from '@ibiz/model-core';
2
+ import { ViewCallTag } from '../../../constant';
2
3
  import {
3
4
  IPickupViewPanelState,
4
5
  IPickupViewPanelEvent,
@@ -119,7 +120,7 @@ export class PickupViewPanelController
119
120
  * @memberof PickupViewPanelController
120
121
  */
121
122
  async getSelectedData(): Promise<IData[]> {
122
- const items: IData[] = await this.embedView.call('GetData');
123
+ const items: IData[] = await this.embedView.call(ViewCallTag.GET_DATA);
123
124
  return items;
124
125
  }
125
126
 
@@ -132,7 +133,7 @@ export class PickupViewPanelController
132
133
  * @memberof PickupViewPanelController
133
134
  */
134
135
  async getAllData(): Promise<IData[]> {
135
- const items: IData[] = await this.embedView.call('GetAllData');
136
+ const items: IData[] = await this.embedView.call(ViewCallTag.GET_ALL_DATA);
136
137
  return items;
137
138
  }
138
139
  }
@@ -5,7 +5,7 @@ import {
5
5
  IDETBUIActionItem,
6
6
  IControlLogic,
7
7
  } from '@ibiz/model-core';
8
- import { ViewMode } from '../../../constant';
8
+ import { ViewCallTag, ViewMode } from '../../../constant';
9
9
  import {
10
10
  IToolbarState,
11
11
  IToolbarEvent,
@@ -69,7 +69,7 @@ export class ToolbarController<
69
69
  // 执行界面行为
70
70
  if (item.itemType === 'DEUIACTION') {
71
71
  const actionId = (item as IDETBUIActionItem).uiactionId;
72
- const res = await this.ctx.view.call('GetData');
72
+ const res = await this.ctx.view.call(ViewCallTag.GET_DATA);
73
73
  const data = res || [];
74
74
  const args = this.getEventArgs();
75
75
  args.params = Object.assign(param, args.params);
@@ -42,6 +42,15 @@ export class CTX<V extends IViewController = IViewController> {
42
42
  */
43
43
  view!: V;
44
44
 
45
+ /**
46
+ * 是否已经销毁
47
+ *
48
+ * @author chitanda
49
+ * @date 2023-09-11 11:09:57
50
+ * @protected
51
+ */
52
+ protected isDestroyed = false;
53
+
45
54
  /**
46
55
  * CTX事件
47
56
  * @author lxm
@@ -90,6 +99,7 @@ export class CTX<V extends IViewController = IViewController> {
90
99
  this.controllersMap.clear();
91
100
  this.view = null as any;
92
101
  this.state = null as any;
102
+ this.isDestroyed = true;
93
103
  }
94
104
 
95
105
  /**
@@ -118,6 +128,9 @@ export class CTX<V extends IViewController = IViewController> {
118
128
  * @date 2023-03-27 01:59:35
119
129
  */
120
130
  endLoading(): void {
131
+ if (this.isDestroyed) {
132
+ return;
133
+ }
121
134
  this.view.endLoading();
122
135
  }
123
136
 
@@ -56,12 +56,14 @@ export function handleSrcVal(
56
56
  // 直接值
57
57
  case 'SRCVALUE':
58
58
  return srcValue;
59
- // 视图参数
60
- case 'VIEWPARAM':
59
+ case 'WEBCONTEXT': // 网页请求上下文
60
+ case 'VIEWPARAM': // 视图参数
61
61
  value = ctx.viewParams;
62
62
  break;
63
- // 应用上下文
64
- case 'APPDATA':
63
+ case 'APPLICATION': // 系统全局对象
64
+ case 'SESSION': // 用户全局对象
65
+ case 'APPDATA': // 应用上下文
66
+ case 'DATACONTEXT': // 数据上下文
65
67
  value = ctx.context;
66
68
  break;
67
69
  // 当前环境参数
@@ -1,4 +1,5 @@
1
1
  import { RuntimeError } from '@ibiz-template/core';
2
+ import { ViewCallTag } from '../constant';
2
3
  import {
3
4
  IViewController,
4
5
  IToolbarController,
@@ -119,7 +120,7 @@ export class ViewEngineBase implements IViewEngine {
119
120
  }
120
121
 
121
122
  async call(key: string, _args?: IData): Promise<IData | null | undefined> {
122
- if (key === 'GetData') {
123
+ if (key === ViewCallTag.GET_DATA) {
123
124
  return this.getData();
124
125
  }
125
126
  return undefined;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * 拖拽变更信息
3
+ * @author lxm
4
+ * @date 2023-08-30 04:23:41
5
+ * @export
6
+ * @interface IDragChangeInfo
7
+ */
8
+ export interface IDragChangeInfo {
9
+ /**
10
+ * 变更前的分组标识
11
+ * @author lxm
12
+ * @date 2023-08-30 04:24:25
13
+ * @type {string}
14
+ */
15
+ from: string | number;
16
+
17
+ /**
18
+ * 变更后的分组标识
19
+ * @author lxm
20
+ * @date 2023-08-30 04:24:45
21
+ * @type {string}
22
+ */
23
+ to: string | number;
24
+
25
+ /**
26
+ * 变更前的索引位置
27
+ * @author lxm
28
+ * @date 2023-08-30 04:25:02
29
+ * @type {number}
30
+ */
31
+ fromIndex: number;
32
+
33
+ /**
34
+ * 变更后的索引位置
35
+ * @author lxm
36
+ * @date 2023-08-30 04:24:53
37
+ * @type {number}
38
+ */
39
+ toIndex: number;
40
+ }
@@ -1 +1,2 @@
1
1
  export * from './i-enforceable.controller';
2
+ export * from './i-drag-change-info';
@@ -10,12 +10,11 @@ import { IMDControlController } from './i-md-control.controller';
10
10
  * @interface IDataViewControlController
11
11
  * @extends {IMDControlController<IDEDataView, IDataViewControlState, IDataViewControlEvent>}
12
12
  */
13
- export interface IDataViewControlController
14
- extends IMDControlController<
15
- IDEDataView,
16
- IDataViewControlState,
17
- IDataViewControlEvent
18
- > {
13
+ export interface IDataViewControlController<
14
+ T extends IDEDataView = IDEDataView,
15
+ S extends IDataViewControlState = IDataViewControlState,
16
+ E extends IDataViewControlEvent = IDataViewControlEvent,
17
+ > extends IMDControlController<T, S, E> {
19
18
  /**
20
19
  * 加载更多
21
20
  *
@@ -0,0 +1,14 @@
1
+ import { IDEKanban } from '@ibiz/model-core';
2
+ import { IKanbanEvent } from '../../event';
3
+ import { IKanbanState } from '../../state';
4
+ import { IDataViewControlController } from './i-data-view-control.controller';
5
+
6
+ /**
7
+ * 看板部件控制器
8
+ *
9
+ * @export
10
+ * @interface IDataViewControlController
11
+ * @extends {IMDControlController<IDEDataView, IDataViewControlState, IDataViewControlEvent>}
12
+ */
13
+ export interface IKanbanController
14
+ extends IDataViewControlController<IDEKanban, IKanbanState, IKanbanEvent> {}
@@ -30,3 +30,4 @@ export * from './portlet/index';
30
30
  export * from './i-calendar.controller';
31
31
  export * from './i-calendar-exp-bar.controller';
32
32
  export * from './i-context-menu.controller';
33
+ export * from './i-kanban.controller';
@@ -1,11 +1,11 @@
1
- import { IMDControlEvent } from './i-md-control.event';
1
+ import { IDataViewControlEvent } from './i-data-view-control.event';
2
2
 
3
3
  /**
4
- * 看板部件事件
4
+ * 看板(kanban)部件事件
5
5
  *
6
6
  * @author lxm
7
7
  * @date 2022-08-30 16:08:43
8
8
  * @export
9
9
  * @interface IMDControlEvent
10
10
  */
11
- export type IKanbanEvent = IMDControlEvent;
11
+ export type IKanbanEvent = IDataViewControlEvent;
@@ -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';
@@ -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;
@@ -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
+ }