@ibiz-template/runtime 0.2.18-dev.0 → 0.2.18-dev.2

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 (57) hide show
  1. package/dist/index.esm.js +117 -27
  2. package/dist/index.system.min.js +2 -2
  3. package/dist/index.system.min.js.map +1 -1
  4. package/out/controller/control/form/form/form.controller.d.ts.map +1 -1
  5. package/out/controller/control/form/form/form.controller.js +5 -0
  6. package/out/controller/control/form/form-detail/form-button/form-button.controller.d.ts.map +1 -1
  7. package/out/controller/control/form/form-detail/form-button/form-button.controller.js +1 -0
  8. package/out/controller/control/form/form-detail/form-detail/form-detail.controller.d.ts +6 -0
  9. package/out/controller/control/form/form-detail/form-detail/form-detail.controller.d.ts.map +1 -1
  10. package/out/controller/control/form/form-detail/form-detail/form-detail.controller.js +12 -0
  11. package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts +12 -0
  12. package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts.map +1 -1
  13. package/out/controller/control/form/form-detail/form-item/form-item.controller.js +28 -0
  14. package/out/interface/controller/event/argument/form-detail.event.d.ts +26 -0
  15. package/out/interface/controller/event/argument/form-detail.event.d.ts.map +1 -0
  16. package/out/interface/controller/event/argument/form-detail.event.js +1 -0
  17. package/out/interface/controller/event/argument/index.d.ts +1 -0
  18. package/out/interface/controller/event/argument/index.d.ts.map +1 -1
  19. package/out/interface/controller/event/control/i-form.event.d.ts +13 -1
  20. package/out/interface/controller/event/control/i-form.event.d.ts.map +1 -1
  21. package/out/interface/controller/event/view/i-map-view.event.d.ts +12 -0
  22. package/out/interface/controller/event/view/i-map-view.event.d.ts.map +1 -0
  23. package/out/interface/controller/event/view/i-map-view.event.js +1 -0
  24. package/out/interface/controller/event/view/index.d.ts +1 -0
  25. package/out/interface/controller/event/view/index.d.ts.map +1 -1
  26. package/out/interface/controller/event/view/index.js +1 -0
  27. package/out/interface/controller/state/view/i-map-view.state.d.ts +11 -0
  28. package/out/interface/controller/state/view/i-map-view.state.d.ts.map +1 -0
  29. package/out/interface/controller/state/view/i-map-view.state.js +1 -0
  30. package/out/interface/controller/state/view/i-pickup-md-view.state.d.ts +9 -0
  31. package/out/interface/controller/state/view/i-pickup-md-view.state.d.ts.map +1 -1
  32. package/out/interface/controller/state/view/index.d.ts +1 -0
  33. package/out/interface/controller/state/view/index.d.ts.map +1 -1
  34. package/out/interface/controller/state/view/index.js +1 -0
  35. package/out/model/utils/util.d.ts.map +1 -1
  36. package/out/model/utils/util.js +7 -2
  37. package/out/service/dto/method.dto.d.ts +14 -0
  38. package/out/service/dto/method.dto.d.ts.map +1 -1
  39. package/out/service/dto/method.dto.js +63 -23
  40. package/out/utils/handlebars/handlebars.d.ts.map +1 -1
  41. package/out/utils/handlebars/handlebars.js +3 -1
  42. package/package.json +3 -3
  43. package/src/controller/control/form/form/form.controller.ts +9 -0
  44. package/src/controller/control/form/form-detail/form-button/form-button.controller.ts +1 -0
  45. package/src/controller/control/form/form-detail/form-detail/form-detail.controller.ts +13 -0
  46. package/src/controller/control/form/form-detail/form-item/form-item.controller.ts +30 -0
  47. package/src/interface/controller/event/argument/form-detail.event.ts +27 -0
  48. package/src/interface/controller/event/argument/index.ts +1 -0
  49. package/src/interface/controller/event/control/i-form.event.ts +14 -1
  50. package/src/interface/controller/event/view/i-map-view.event.ts +12 -0
  51. package/src/interface/controller/event/view/index.ts +1 -0
  52. package/src/interface/controller/state/view/i-map-view.state.ts +10 -0
  53. package/src/interface/controller/state/view/i-pickup-md-view.state.ts +10 -0
  54. package/src/interface/controller/state/view/index.ts +1 -0
  55. package/src/model/utils/util.ts +7 -2
  56. package/src/service/dto/method.dto.ts +70 -26
  57. package/src/utils/handlebars/handlebars.ts +3 -1
@@ -344,6 +344,10 @@ export class FormItemController
344
344
  async setDataValue(value: unknown, name?: string): Promise<void> {
345
345
  name = name || this.name;
346
346
  await this.form.setDataValue(name, value);
347
+ this.form.evt.emit('onFormDetailEvent', {
348
+ formDetailName: this.model.id!,
349
+ formDetailEventName: 'onChange',
350
+ });
347
351
  }
348
352
 
349
353
  /**
@@ -371,4 +375,30 @@ export class FormItemController
371
375
  data[this.name] = defaultVal;
372
376
  }
373
377
  }
378
+
379
+ /**
380
+ * 聚焦事件
381
+ * @author lxm
382
+ * @date 2023-10-11 05:03:26
383
+ */
384
+ onFocus(event: MouseEvent): void {
385
+ this.form.evt.emit('onFormDetailEvent', {
386
+ formDetailName: this.model.id!,
387
+ formDetailEventName: 'onFocus',
388
+ event,
389
+ });
390
+ }
391
+
392
+ /**
393
+ * 失焦事件
394
+ * @author lxm
395
+ * @date 2023-10-11 05:03:26
396
+ */
397
+ onBlur(event: MouseEvent): void {
398
+ this.form.evt.emit('onFormDetailEvent', {
399
+ formDetailName: this.model.id!,
400
+ formDetailEventName: 'onBlur',
401
+ event,
402
+ });
403
+ }
374
404
  }
@@ -0,0 +1,27 @@
1
+ import { EventBase } from './base.event';
2
+
3
+ /**
4
+ * 表单成员事件
5
+ * @author lxm
6
+ * @date 2023-08-09 10:52:48
7
+ * @export
8
+ * @interface FormDetailEvent
9
+ * @extends {EventBase}
10
+ */
11
+ export interface FormDetailEvent extends EventBase {
12
+ /**
13
+ * 触发的表单成员名称
14
+ * @author lxm
15
+ * @date 2023-03-26 02:02:16
16
+ * @type {string}
17
+ */
18
+ formDetailName: string;
19
+
20
+ /**
21
+ * 触发的表单成员事件的名称
22
+ * @author lxm
23
+ * @date 2023-07-26 11:00:37
24
+ * @type {string}
25
+ */
26
+ formDetailEventName: string;
27
+ }
@@ -8,3 +8,4 @@ export type { ControlTriggerEvent } from './control-trigger.event';
8
8
  export type { NavViewChangeEvent } from './nav-view-change.event';
9
9
  export type { RowEditChangeEvent } from './row-edit-change.event';
10
10
  export type { PanelItemEvent } from './panel-item.event';
11
+ export type { FormDetailEvent } from './form-detail.event';
@@ -1,4 +1,5 @@
1
- import { EventBase } from '../argument';
1
+ import { PartialWithObject } from '@ibiz-template/core';
2
+ import { EventBase, FormDetailEvent } from '../argument';
2
3
  import { IControlEvent } from './i-control.event';
3
4
 
4
5
  /**
@@ -51,4 +52,16 @@ export interface IFormEvent extends IControlEvent {
51
52
  event: EventBase;
52
53
  emitArgs: undefined;
53
54
  };
55
+
56
+ /**
57
+ * 表单里的成员事件监听
58
+ * @author lxm
59
+ * @date 2023-03-26 06:15:06
60
+ * @param {EventBase} event
61
+ * @return {*} {Promise<void>}
62
+ */
63
+ onFormDetailEvent: {
64
+ event: FormDetailEvent;
65
+ emitArgs: PartialWithObject<FormDetailEvent, EventBase>;
66
+ };
54
67
  }
@@ -0,0 +1,12 @@
1
+ import { IMDViewEvent } from './i-md-view.event';
2
+
3
+ /**
4
+ * 地图视图事件
5
+ *
6
+ * @author lxm
7
+ * @date 2022-09-13 10:09:00
8
+ * @export
9
+ * @interface IMapViewEvent
10
+ * @extends {IMDViewEvent}
11
+ */
12
+ export type IMapViewEvent = IMDViewEvent;
@@ -41,3 +41,4 @@ export * from './i-tree-grid-view.event';
41
41
  export * from './i-tree-grid-ex-view.event';
42
42
  export * from './i-medit-view9.event';
43
43
  export * from './i-chart-exp-view.event';
44
+ export * from './i-map-view.event';
@@ -0,0 +1,10 @@
1
+ import { IMDViewState } from './i-md-view.state';
2
+
3
+ /**
4
+ * 地图视图UI状态
5
+ *
6
+ * @export
7
+ * @class IMapViewState
8
+ * @extends {IMDViewState}
9
+ */
10
+ export interface IMapViewState extends IMDViewState {}
@@ -19,4 +19,14 @@ export interface IPickupMDViewState extends IMDViewState {
19
19
  * @memberof IPickupMDViewState
20
20
  */
21
21
  singleSelect: boolean;
22
+
23
+ /**
24
+ * 选择数据
25
+ *
26
+ * @author zk
27
+ * @date 2023-11-13 05:11:46
28
+ * @type {IData[]}
29
+ * @memberof IPickupMDViewState
30
+ */
31
+ selectedData: IData[];
22
32
  }
@@ -42,3 +42,4 @@ export * from './i-tree-grid-view.state';
42
42
  export * from './i-tree-grid-ex-view.state';
43
43
  export * from './i-medit-view9.state';
44
44
  export * from './i-chart-exp-view.state';
45
+ export * from './i-map-view.state';
@@ -21,8 +21,13 @@ export function findModelChild(
21
21
  models: IModelObject[],
22
22
  id: string,
23
23
  ): IModelObject | null {
24
- if (models) {
25
- const model = models.find(item => item.id === id);
24
+ if (models && id) {
25
+ const model = models.find(item => {
26
+ if (item.id) {
27
+ return item.id.toLowerCase() === id.toLowerCase();
28
+ }
29
+ return false;
30
+ });
26
31
  if (model) {
27
32
  return model;
28
33
  }
@@ -9,6 +9,10 @@ import { Application } from '../../application';
9
9
  import { AppDataEntity } from '../app-data-entity/app-data-entity';
10
10
  import { findModelChild } from '../../model';
11
11
 
12
+ interface listMap {
13
+ [key: number]: IData;
14
+ }
15
+
12
16
  /**
13
17
  * 应用实体服务方法转换 DTO
14
18
  *
@@ -37,6 +41,35 @@ export class MethodDto {
37
41
  }
38
42
  }
39
43
 
44
+ /**
45
+ * 转换数组成ListMap
46
+ *
47
+ * @param {IData[]} arr
48
+ * @return {*} listMap
49
+ */
50
+ private convertArrayToListMap(arr: IData[]): listMap {
51
+ const result: listMap = {};
52
+ arr.forEach((obj, index) => {
53
+ result[index + 1] = obj;
54
+ });
55
+ return result;
56
+ }
57
+
58
+ /**
59
+ * 转换ListMap成数组
60
+ *
61
+ * @param {listMap} obj
62
+ * @return {*} IData[]
63
+ */
64
+ private convertListMapToArray(obj: listMap): IData[] {
65
+ const result: IData[] = [];
66
+ Object.keys(obj).forEach(key => {
67
+ const index = parseInt(key, 10);
68
+ result[index - 1] = obj[index];
69
+ });
70
+ return result;
71
+ }
72
+
40
73
  /**
41
74
  * 请求参数组合 DTO
42
75
  *
@@ -57,24 +90,31 @@ export class MethodDto {
57
90
  break;
58
91
  }
59
92
  case 'DTOS': {
60
- if (data[key] !== undefined) {
61
- break;
62
- }
63
- // 没有实体id的不处理
64
- if (!field.refAppDataEntityId) {
65
- break;
66
- }
67
- const dto = await this.getFieldDto(field);
68
- const service = await this.app!.deService.getService(
69
- field.refAppDataEntityId!,
70
- );
71
- const items: IData[] = service.local.getList(context);
72
- if (items) {
73
- const arr = [];
74
- for (let j = 0; j < items.length; j++) {
75
- arr.push(await dto.get(context, items[j]));
93
+ if (field.listMap) {
94
+ params[key] =
95
+ data[key] && data[key].length > 0
96
+ ? this.convertArrayToListMap(data[key])
97
+ : null;
98
+ } else {
99
+ if (data[key] !== undefined) {
100
+ break;
101
+ }
102
+ // 没有实体id的不处理
103
+ if (!field.refAppDataEntityId) {
104
+ break;
105
+ }
106
+ const dto = await this.getFieldDto(field);
107
+ const service = await this.app!.deService.getService(
108
+ field.refAppDataEntityId!,
109
+ );
110
+ const items: IData[] = service.local.getList(context);
111
+ if (items) {
112
+ const arr = [];
113
+ for (let j = 0; j < items.length; j++) {
114
+ arr.push(await dto.get(context, items[j]));
115
+ }
116
+ params[key] = arr;
76
117
  }
77
- params[key] = arr;
78
118
  }
79
119
  break;
80
120
  }
@@ -108,17 +148,21 @@ export class MethodDto {
108
148
  const all = this.fields
109
149
  .filter(field => field.type === 'DTOS')
110
150
  .map(async field => {
111
- // 没有实体id的不处理
112
- if (!field.refAppDataEntityId) {
113
- return;
114
- }
115
151
  const key = field.codeName!.toLowerCase();
116
- const dto = await this.getFieldDto(field);
117
- const items: IData[] = datum[key];
118
- if (items) {
119
- await dto.sets(context, items);
152
+ if (field.listMap && typeof datum[key] === 'object') {
153
+ datum[key] = this.convertListMapToArray(datum[key]);
120
154
  } else {
121
- await dto.sets(context, []);
155
+ // 没有实体id的不处理
156
+ if (!field.refAppDataEntityId) {
157
+ return;
158
+ }
159
+ const dto = await this.getFieldDto(field);
160
+ const items: IData[] = datum[key];
161
+ if (items) {
162
+ await dto.sets(context, items);
163
+ } else {
164
+ await dto.sets(context, []);
165
+ }
122
166
  }
123
167
  });
124
168
  for (let i = 0; i < all.length; i++) {
@@ -49,7 +49,9 @@ export class HandlebarsUtil {
49
49
  return this.p;
50
50
  }
51
51
  this.p = import('handlebars');
52
- this.hsb = await this.p;
52
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
+ const module = (await this.p) as any;
54
+ this.hsb = module.default || module;
53
55
  this.p = null;
54
56
  installHelpers(this.hsb);
55
57
  return this.hsb;