@ibiz-template/runtime 0.2.7 → 0.2.9

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 (191) hide show
  1. package/dist/index.esm.js +912 -327
  2. package/dist/index.system.min.js +1 -1
  3. package/dist/index.system.min.js.map +1 -1
  4. package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
  5. package/out/controller/common/control/md-control.controller.js +21 -22
  6. package/out/controller/control/form/edit-form/edit-form.controller.d.ts.map +1 -1
  7. package/out/controller/control/form/edit-form/edit-form.controller.js +6 -0
  8. package/out/controller/control/form/form-detail/form-detail/form-detail.controller.d.ts +11 -11
  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 +22 -16
  11. package/out/controller/control/form/form-detail/form-group-panel/form-group-panel.controller.d.ts +1 -1
  12. package/out/controller/control/form/form-detail/form-group-panel/form-group-panel.controller.d.ts.map +1 -1
  13. package/out/controller/control/form/form-detail/form-group-panel/form-group-panel.controller.js +2 -2
  14. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-content-type.controller.js +4 -2
  15. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.d.ts +20 -0
  16. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.d.ts.map +1 -1
  17. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.js +57 -1
  18. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.d.ts +1 -1
  19. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.d.ts.map +1 -1
  20. package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
  21. package/out/controller/control/grid/grid/grid.controller.js +19 -36
  22. package/out/controller/control/index.d.ts +1 -0
  23. package/out/controller/control/index.d.ts.map +1 -1
  24. package/out/controller/control/index.js +1 -0
  25. package/out/controller/control/map/index.d.ts +3 -0
  26. package/out/controller/control/map/index.d.ts.map +1 -0
  27. package/out/controller/control/map/index.js +2 -0
  28. package/out/controller/control/map/map.controller.d.ts +45 -0
  29. package/out/controller/control/map/map.controller.d.ts.map +1 -0
  30. package/out/controller/control/map/map.controller.js +135 -0
  31. package/out/controller/control/map/map.service.d.ts +25 -0
  32. package/out/controller/control/map/map.service.d.ts.map +1 -0
  33. package/out/controller/control/map/map.service.js +55 -0
  34. package/out/controller/control/panel/panel/panel-item.controller.d.ts +3 -3
  35. package/out/controller/control/panel/panel/panel-item.controller.d.ts.map +1 -1
  36. package/out/controller/control/panel/panel/panel-item.controller.js +22 -16
  37. package/out/controller/control/panel/panel/panel.controller.d.ts.map +1 -1
  38. package/out/controller/control/panel/panel/panel.controller.js +4 -20
  39. package/out/controller/utils/data-file-util/data-file-util.d.ts +45 -0
  40. package/out/controller/utils/data-file-util/data-file-util.d.ts.map +1 -0
  41. package/out/controller/utils/data-file-util/data-file-util.js +121 -0
  42. package/out/controller/utils/index.d.ts +1 -0
  43. package/out/controller/utils/index.d.ts.map +1 -1
  44. package/out/controller/utils/index.js +1 -0
  45. package/out/global/global-util/global-util.d.ts +2 -2
  46. package/out/global/global-util/global-util.d.ts.map +1 -1
  47. package/out/interface/controller/controller/control/i-map.controller.d.ts +15 -0
  48. package/out/interface/controller/controller/control/i-map.controller.d.ts.map +1 -0
  49. package/out/interface/controller/controller/control/index.d.ts +1 -0
  50. package/out/interface/controller/controller/control/index.d.ts.map +1 -1
  51. package/out/interface/controller/controller/control/index.js +1 -0
  52. package/out/interface/controller/controller/control/panel-item/i-panel-data-container.controller.d.ts +1 -1
  53. package/out/interface/controller/controller/control/panel-item/i-panel-data-container.controller.d.ts.map +1 -1
  54. package/out/interface/controller/event/control/i-map.event.d.ts +54 -0
  55. package/out/interface/controller/event/control/i-map.event.d.ts.map +1 -0
  56. package/out/interface/controller/event/control/i-map.event.js +1 -0
  57. package/out/interface/controller/event/control/index.d.ts +1 -0
  58. package/out/interface/controller/event/control/index.d.ts.map +1 -1
  59. package/out/interface/controller/event/control/index.js +1 -0
  60. package/out/interface/controller/state/control/i-map.state.d.ts +132 -0
  61. package/out/interface/controller/state/control/i-map.state.d.ts.map +1 -0
  62. package/out/interface/controller/state/control/i-map.state.js +1 -0
  63. package/out/interface/controller/state/control/index.d.ts +1 -0
  64. package/out/interface/controller/state/control/index.d.ts.map +1 -1
  65. package/out/interface/controller/state/control/index.js +1 -0
  66. package/out/interface/index.d.ts +2 -1
  67. package/out/interface/index.d.ts.map +1 -1
  68. package/out/interface/index.js +2 -1
  69. package/out/interface/provider/i-ui-login-node.provider.d.ts +23 -0
  70. package/out/interface/provider/i-ui-login-node.provider.d.ts.map +1 -0
  71. package/out/interface/provider/i-ui-login-node.provider.js +1 -0
  72. package/out/interface/provider/index.d.ts +1 -0
  73. package/out/interface/provider/index.d.ts.map +1 -1
  74. package/out/interface/ui-login/i-ui-logic-context.d.ts +85 -0
  75. package/out/interface/ui-login/i-ui-logic-context.d.ts.map +1 -0
  76. package/out/interface/ui-login/i-ui-logic-context.js +1 -0
  77. package/out/interface/ui-login/index.d.ts +2 -0
  78. package/out/interface/ui-login/index.d.ts.map +1 -0
  79. package/out/interface/ui-login/index.js +1 -0
  80. package/out/interface/util/{i-export-excel/i-export-excel.d.ts → i-excel-util/i-excel-util.d.ts} +4 -4
  81. package/out/interface/util/i-excel-util/i-excel-util.d.ts.map +1 -0
  82. package/out/interface/util/i-excel-util/i-excel-util.js +1 -0
  83. package/out/interface/util/index.d.ts +1 -1
  84. package/out/interface/util/index.d.ts.map +1 -1
  85. package/out/model/panel/index.d.ts +1 -0
  86. package/out/model/panel/index.d.ts.map +1 -1
  87. package/out/model/panel/index.js +1 -0
  88. package/out/model/panel/panel-field.d.ts +11 -0
  89. package/out/model/panel/panel-field.d.ts.map +1 -0
  90. package/out/model/panel/panel-field.js +35 -0
  91. package/out/model/utils/util.d.ts +12 -1
  92. package/out/model/utils/util.d.ts.map +1 -1
  93. package/out/model/utils/util.js +18 -0
  94. package/out/register/helper/common-register.js +1 -1
  95. package/out/register/helper/index.d.ts +3 -2
  96. package/out/register/helper/index.d.ts.map +1 -1
  97. package/out/register/helper/index.js +3 -2
  98. package/out/register/helper/ui-logic-node-register.d.ts +25 -0
  99. package/out/register/helper/ui-logic-node-register.d.ts.map +1 -0
  100. package/out/register/helper/ui-logic-node-register.js +37 -0
  101. package/out/service/mqtt/mqtt.service.d.ts +2 -0
  102. package/out/service/mqtt/mqtt.service.d.ts.map +1 -1
  103. package/out/service/mqtt/mqtt.service.js +3 -0
  104. package/out/service/service/entity/method/de-action.d.ts.map +1 -1
  105. package/out/service/service/entity/method/de-action.js +3 -0
  106. package/out/service/service/entity/method/fetch.d.ts.map +1 -1
  107. package/out/service/service/entity/method/fetch.js +1 -1
  108. package/out/service/vo/index.d.ts +2 -0
  109. package/out/service/vo/index.d.ts.map +1 -1
  110. package/out/service/vo/index.js +2 -0
  111. package/out/service/vo/map-data/index.d.ts +2 -0
  112. package/out/service/vo/map-data/index.d.ts.map +1 -0
  113. package/out/service/vo/map-data/index.js +1 -0
  114. package/out/service/vo/map-data/map-data.d.ts +17 -0
  115. package/out/service/vo/map-data/map-data.d.ts.map +1 -0
  116. package/out/service/vo/map-data/map-data.js +87 -0
  117. package/out/service/vo/panel-data/index.d.ts +2 -0
  118. package/out/service/vo/panel-data/index.d.ts.map +1 -0
  119. package/out/service/vo/panel-data/index.js +1 -0
  120. package/out/service/vo/panel-data/panel-data.d.ts +21 -0
  121. package/out/service/vo/panel-data/panel-data.d.ts.map +1 -0
  122. package/out/service/vo/panel-data/panel-data.js +73 -0
  123. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
  124. package/out/service/vo/tree-node-data/tree-data-set-node-data.js +6 -2
  125. package/out/ui-logic/ui-logic-context.d.ts +7 -2
  126. package/out/ui-logic/ui-logic-context.d.ts.map +1 -1
  127. package/out/ui-logic/ui-logic-context.js +5 -0
  128. package/out/ui-logic/ui-logic-node/index.d.ts +1 -0
  129. package/out/ui-logic/ui-logic-node/index.d.ts.map +1 -1
  130. package/out/ui-logic/ui-logic-node/index.js +1 -0
  131. package/out/ui-logic/ui-logic-node/pf-plugin-node/pf-plugin-node.d.ts +17 -0
  132. package/out/ui-logic/ui-logic-node/pf-plugin-node/pf-plugin-node.d.ts.map +1 -0
  133. package/out/ui-logic/ui-logic-node/pf-plugin-node/pf-plugin-node.js +19 -0
  134. package/out/ui-logic/ui-logic.d.ts.map +1 -1
  135. package/out/ui-logic/ui-logic.js +3 -1
  136. package/out/utils/script/script-function.d.ts.map +1 -1
  137. package/out/utils/script/script-function.js +7 -1
  138. package/package.json +4 -4
  139. package/src/controller/common/control/md-control.controller.ts +29 -23
  140. package/src/controller/control/form/edit-form/edit-form.controller.ts +6 -0
  141. package/src/controller/control/form/form-detail/form-detail/form-detail.controller.ts +35 -25
  142. package/src/controller/control/form/form-detail/form-group-panel/form-group-panel.controller.ts +2 -2
  143. package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-content-type.controller.ts +2 -2
  144. package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.ts +66 -1
  145. package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.ts +1 -1
  146. package/src/controller/control/grid/grid/grid.controller.ts +20 -36
  147. package/src/controller/control/index.ts +1 -0
  148. package/src/controller/control/map/index.ts +2 -0
  149. package/src/controller/control/map/map.controller.ts +163 -0
  150. package/src/controller/control/map/map.service.ts +79 -0
  151. package/src/controller/control/panel/panel/panel-item.controller.ts +27 -17
  152. package/src/controller/control/panel/panel/panel.controller.ts +4 -21
  153. package/src/controller/utils/data-file-util/data-file-util.ts +156 -0
  154. package/src/controller/utils/index.ts +1 -0
  155. package/src/global/global-util/global-util.ts +2 -2
  156. package/src/interface/controller/controller/control/i-map.controller.ts +15 -0
  157. package/src/interface/controller/controller/control/index.ts +1 -0
  158. package/src/interface/controller/controller/control/panel-item/i-panel-data-container.controller.ts +1 -1
  159. package/src/interface/controller/event/control/i-map.event.ts +48 -0
  160. package/src/interface/controller/event/control/index.ts +1 -0
  161. package/src/interface/controller/state/control/i-map.state.ts +148 -0
  162. package/src/interface/controller/state/control/index.ts +1 -0
  163. package/src/interface/index.ts +2 -1
  164. package/src/interface/provider/i-ui-login-node.provider.ts +23 -0
  165. package/src/interface/provider/index.ts +1 -0
  166. package/src/interface/ui-login/i-ui-logic-context.ts +95 -0
  167. package/src/interface/ui-login/index.ts +1 -0
  168. package/src/interface/util/{i-export-excel/i-export-excel.ts → i-excel-util/i-excel-util.ts} +3 -3
  169. package/src/interface/util/index.ts +1 -1
  170. package/src/model/panel/index.ts +1 -0
  171. package/src/model/panel/panel-field.ts +49 -0
  172. package/src/model/utils/util.ts +20 -0
  173. package/src/register/helper/common-register.ts +1 -1
  174. package/src/register/helper/index.ts +3 -2
  175. package/src/register/helper/ui-logic-node-register.ts +52 -0
  176. package/src/service/mqtt/mqtt.service.ts +3 -2
  177. package/src/service/service/entity/method/de-action.ts +4 -1
  178. package/src/service/service/entity/method/fetch.ts +7 -1
  179. package/src/service/vo/index.ts +2 -0
  180. package/src/service/vo/map-data/index.ts +1 -0
  181. package/src/service/vo/map-data/map-data.ts +123 -0
  182. package/src/service/vo/panel-data/index.ts +1 -0
  183. package/src/service/vo/panel-data/panel-data.ts +93 -0
  184. package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +6 -2
  185. package/src/ui-logic/ui-logic-context.ts +7 -2
  186. package/src/ui-logic/ui-logic-node/index.ts +1 -0
  187. package/src/ui-logic/ui-logic-node/pf-plugin-node/pf-plugin-node.ts +24 -0
  188. package/src/ui-logic/ui-logic.ts +3 -0
  189. package/src/utils/script/script-function.ts +6 -1
  190. package/out/interface/util/i-export-excel/i-export-excel.d.ts.map +0 -1
  191. /package/out/interface/{util/i-export-excel/i-export-excel.js → controller/controller/control/i-map.controller.js} +0 -0
@@ -16,7 +16,13 @@ export class ScriptFunction {
16
16
  this.calcArgKeys(argKeys, options);
17
17
  const fn = new Function(...this.argKeys, code);
18
18
  this.scriptFn = function callBack(...args) {
19
- return fn.apply({}, args);
19
+ try {
20
+ return fn.apply({}, args);
21
+ }
22
+ catch (error) {
23
+ console.log('报错脚本', code);
24
+ throw error;
25
+ }
20
26
  };
21
27
  }
22
28
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/runtime",
3
- "version": "0.2.7",
3
+ "version": "0.2.9",
4
4
  "description": "控制器包",
5
5
  "type": "module",
6
6
  "main": "out/index.js",
@@ -30,7 +30,7 @@
30
30
  "license": "MIT",
31
31
  "devDependencies": {
32
32
  "@ibiz-template/core": "^0.2.6",
33
- "@ibiz/model-core": "^0.0.19",
33
+ "@ibiz/model-core": "^0.0.20",
34
34
  "@types/path-browserify": "^1.0.0",
35
35
  "@types/qs": "^6.9.8",
36
36
  "@types/systemjs": "^6.13.3",
@@ -47,7 +47,7 @@
47
47
  },
48
48
  "peerDependencies": {
49
49
  "@ibiz-template/core": "^0.1.0",
50
- "@ibiz/model-core": "^0.0.19",
50
+ "@ibiz/model-core": "^0.0.20",
51
51
  "async-validator": "^4.2.5",
52
52
  "dayjs": "^1.11.7",
53
53
  "echarts": "^5.4.3",
@@ -59,5 +59,5 @@
59
59
  "qx-util": "^0.4.8",
60
60
  "ramda": "^0.29.0"
61
61
  },
62
- "gitHead": "2533d04e6de6b0d5b20759a0bb3951491c520ca3"
62
+ "gitHead": "1502d43393de4cc75f670d0ba22d901e158e0c00"
63
63
  }
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable max-classes-per-file */
2
2
  import { isElementSame, RuntimeError } from '@ibiz-template/core';
3
- import { IAppDataEntity, IMDControl } from '@ibiz/model-core';
3
+ import { IAppDataEntity, IAppDEDataImport, IMDControl } from '@ibiz/model-core';
4
+ import { debounce } from 'lodash-es';
4
5
  import {
5
6
  IMDControlController,
6
7
  IMDControlEvent,
@@ -89,7 +90,12 @@ export class MDControlController<
89
90
  this.dataEntity.appDEFields?.forEach(field => {
90
91
  this.fieldIdNameMap.set(field.id!, field.name!);
91
92
  });
92
- this.onDataChange = this.onDataChange.bind(this);
93
+
94
+ const fn = this.onDataChange.bind(this);
95
+ this.onDataChange = debounce(msg => {
96
+ fn(msg);
97
+ }, 300);
98
+
93
99
  ibiz.mc.command.change.on(this.onDataChange);
94
100
 
95
101
  // 设置默认排序
@@ -422,27 +428,27 @@ export class MDControlController<
422
428
  * @returns {*} {Promise<void>}
423
429
  */
424
430
  async importData(): Promise<void> {
425
- // const { appEntity, dataImport } = this.model;
426
- // let templateUrl = `${appEntity.deNamePlural}/importtemplate`;
427
- // let importUrl = `${appEntity.deNamePlural}/importdata2`;
428
- // if (dataImport) {
429
- // templateUrl += `?srfimporttag=${dataImport.codeName}`;
430
- // importUrl += `?srfimporttag=${dataImport.codeName}`;
431
- // }
432
- // const modal = ibiz.overlay.createModal(
433
- // 'DataImport',
434
- // {
435
- // dismiss: () => modal.dismiss(),
436
- // templateUrl,
437
- // importUrl,
438
- // },
439
- // {
440
- // width: 'auto',
441
- // placement: 'center',
442
- // },
443
- // );
444
- // modal.present();
445
- // await modal.onWillDismiss();
431
+ const { appDataEntityId, dedataImportId } = this.model;
432
+ const appDataEntity = await ibiz.hub.getAppDataEntity(appDataEntityId!);
433
+ const dataImport = appDataEntity.appDEDataImports?.find(
434
+ (importItem: IAppDEDataImport) => importItem.id === dedataImportId,
435
+ );
436
+ if (!dataImport) {
437
+ throw new RuntimeError('无导入模型!');
438
+ }
439
+ const modal = ibiz.overlay.createModal(
440
+ 'DataImport',
441
+ {
442
+ dismiss: () => modal.dismiss(),
443
+ appDataEntity,
444
+ },
445
+ {
446
+ width: 'auto',
447
+ placement: 'center',
448
+ },
449
+ );
450
+ modal.present();
451
+ await modal.onWillDismiss();
446
452
  }
447
453
 
448
454
  /**
@@ -428,6 +428,9 @@ export class EditFormController
428
428
  const { context, params } = this.handlerAbilityParams(args);
429
429
  try {
430
430
  await this.service.wfStart(context, params, this.data);
431
+ if (this.view.modal.mode === 'ROUTE') {
432
+ ibiz.mc.command.send(this.data.$origin, 'OBJECTUPDATED');
433
+ }
431
434
  } catch (error) {
432
435
  this.actionNotification('WFSTARTERROR', {
433
436
  error: error as Error,
@@ -457,6 +460,9 @@ export class EditFormController
457
460
  const { context, params } = this.handlerAbilityParams(args);
458
461
  try {
459
462
  await this.service.wfSubmit(context, params, this.data);
463
+ if (this.view.modal.mode === 'ROUTE') {
464
+ ibiz.mc.command.send(this.data.$origin, 'OBJECTUPDATED');
465
+ }
460
466
  } catch (error) {
461
467
  this.actionNotification('WFSUBMITERROR', {
462
468
  error: error as Error,
@@ -82,6 +82,22 @@ export class FormDetailController<T extends IDEFormDetail = IDEFormDetail>
82
82
  return [...this.state.class.label, ...this.state.class.labelDyna];
83
83
  }
84
84
 
85
+ /**
86
+ * 动态逻辑结果
87
+ * @author lxm
88
+ * @date 2023-09-21 03:36:37
89
+ * @protected
90
+ */
91
+ protected dynaLogicResult: {
92
+ visible?: boolean;
93
+ disabled?: boolean;
94
+ required?: boolean;
95
+ } = {
96
+ visible: undefined,
97
+ disabled: undefined,
98
+ required: undefined,
99
+ };
100
+
85
101
  /**
86
102
  * Creates an instance of FormDetailController.
87
103
  * @author lxm
@@ -267,20 +283,22 @@ export class FormDetailController<T extends IDEFormDetail = IDEFormDetail>
267
283
  * @param {IData} data
268
284
  */
269
285
  calcDetailDisabled(data: IData): void {
270
- let enable = !this.dynaLogicResult.disabled;
286
+ let { disabled } = this.dynaLogicResult;
271
287
 
272
288
  // 上层计算为启用时计算预定义项启用逻辑
273
- if (enable && this.form.scheduler) {
289
+ if (disabled !== true && this.form.scheduler) {
274
290
  const itemEnable = this.form.scheduler.triggerItemEnable(this.model.id!, {
275
291
  data: [data],
276
292
  });
277
293
  if (itemEnable !== undefined) {
278
- enable = itemEnable;
294
+ disabled = !itemEnable;
279
295
  }
280
296
  }
281
297
 
282
- // 修改state
283
- this.state.disabled = !enable;
298
+ // 有值的时候才会去修改state
299
+ if (disabled !== undefined) {
300
+ this.state.disabled = disabled;
301
+ }
284
302
  }
285
303
 
286
304
  /**
@@ -292,7 +310,7 @@ export class FormDetailController<T extends IDEFormDetail = IDEFormDetail>
292
310
  let { visible } = this.dynaLogicResult;
293
311
 
294
312
  // 上层计算为显示时计算预定义项显示逻辑
295
- if (visible && this.form.scheduler) {
313
+ if (visible !== false && this.form.scheduler) {
296
314
  const itemVIsible = this.form.scheduler.triggerItemVisible(
297
315
  this.model.id!,
298
316
  {
@@ -304,8 +322,10 @@ export class FormDetailController<T extends IDEFormDetail = IDEFormDetail>
304
322
  }
305
323
  }
306
324
 
307
- // 修改state
308
- this.state.visible = visible;
325
+ // 有值的时候才会去修改state
326
+ if (visible !== undefined) {
327
+ this.state.visible = visible;
328
+ }
309
329
  }
310
330
 
311
331
  /**
@@ -314,10 +334,10 @@ export class FormDetailController<T extends IDEFormDetail = IDEFormDetail>
314
334
  * @param {IData} data
315
335
  */
316
336
  calcDetailRequired(data: IData): void {
317
- let allowEmpty = !this.dynaLogicResult.required;
337
+ let { required } = this.dynaLogicResult;
318
338
 
319
339
  // 上层计算为启用时计算预定义项空输入逻辑
320
- if (allowEmpty && this.form.scheduler) {
340
+ if (required !== true && this.form.scheduler) {
321
341
  const itemAllowEmpty = this.form.scheduler.triggerItemBlank(
322
342
  this.model.id!,
323
343
  {
@@ -325,23 +345,13 @@ export class FormDetailController<T extends IDEFormDetail = IDEFormDetail>
325
345
  },
326
346
  );
327
347
  if (itemAllowEmpty !== undefined) {
328
- allowEmpty = itemAllowEmpty;
348
+ required = !itemAllowEmpty;
329
349
  }
330
350
  }
331
351
 
332
- // 修改state
333
- this.state.required = !allowEmpty;
352
+ // 有值的时候才会去修改state
353
+ if (required !== undefined) {
354
+ this.state.required = required;
355
+ }
334
356
  }
335
-
336
- /**
337
- * 动态逻辑结果
338
- * @author lxm
339
- * @date 2023-09-21 03:36:37
340
- * @protected
341
- */
342
- protected dynaLogicResult = {
343
- visible: true,
344
- disabled: false,
345
- required: false,
346
- };
347
357
  }
@@ -57,8 +57,8 @@ export class FormGroupPanelController<
57
57
  await this.initActionStates();
58
58
  }
59
59
 
60
- async formStateNotify(_state: FormNotifyState): Promise<void> {
61
- super.calcDynamicLogic([], true);
60
+ async formStateNotify(state: FormNotifyState): Promise<void> {
61
+ super.formStateNotify(state);
62
62
  // 只在加载后台数据之后,更新界面行为组状态
63
63
  if (this.state.actionGroupState) {
64
64
  this.state.actionGroupState.update(this.form.data.getOrigin());
@@ -86,7 +86,7 @@ export class FormMDCtrlContentTypeController {
86
86
  if (index < 0) {
87
87
  return;
88
88
  }
89
- this.parent.state.contentCtrlData.splice(index, 1);
89
+ this.parent.state.contentCtrlData?.splice(index, 1);
90
90
  this.parent.setFormDataValue();
91
91
  }
92
92
 
@@ -99,7 +99,7 @@ export class FormMDCtrlContentTypeController {
99
99
  * @memberof FormMDCtrlContentTypeController
100
100
  */
101
101
  onDataInsert(data?: IData): void {
102
- this.parent.state.contentCtrlData.push(data || {});
102
+ this.parent.state.contentCtrlData?.push(data || {});
103
103
  this.parent.setFormDataValue();
104
104
  }
105
105
 
@@ -1,4 +1,5 @@
1
1
  import { IDEFormMDCtrl } from '@ibiz/model-core';
2
+ import { clone } from 'ramda';
2
3
  import { FormDetailController } from '../form-detail';
3
4
  import { FormMDCtrlContentTypeController } from './form-mdctrl-content-type.controller';
4
5
  import { FormMDCtrlDataViewController } from './form-mdctrl-data-view/form-mdctrl-data-view.controller';
@@ -33,6 +34,30 @@ export class FormMDCtrlController extends FormDetailController<IDEFormMDCtrl> {
33
34
 
34
35
  declare form: EditFormController;
35
36
 
37
+ /**
38
+ * 是否显示添加按钮
39
+ *
40
+ * @memberof FormMDCtrlController
41
+ */
42
+ get isCreate(): boolean {
43
+ if (this.model.buildInActions) {
44
+ return [1, 3, 5, 7].includes(this.model.buildInActions);
45
+ }
46
+ return false;
47
+ }
48
+
49
+ /**
50
+ * 是否显示删除按钮
51
+ *
52
+ * @memberof FormMDCtrlController
53
+ */
54
+ get isDelete(): boolean {
55
+ if (this.model.buildInActions) {
56
+ return [4, 5, 6, 7].includes(this.model.buildInActions);
57
+ }
58
+ return false;
59
+ }
60
+
36
61
  /**
37
62
  * Creates an instance of FormMDCtrlController.
38
63
  *
@@ -126,7 +151,7 @@ export class FormMDCtrlController extends FormDetailController<IDEFormMDCtrl> {
126
151
  const name =
127
152
  this.model.appDEFieldId || this.model.fieldName || this.model.id;
128
153
  if (name) {
129
- this.form.setDataValue(name, this.state.contentCtrlData);
154
+ this.form.setDataValue(name, clone(this.state.contentCtrlData));
130
155
  }
131
156
  }
132
157
 
@@ -151,4 +176,44 @@ export class FormMDCtrlController extends FormDetailController<IDEFormMDCtrl> {
151
176
  setDefaultValue(): void {
152
177
  // todo 设置默认值
153
178
  }
179
+
180
+ /**
181
+ * 表单数据变更通知
182
+ *
183
+ * @author lxm
184
+ * @date 2022-09-20 18:09:56
185
+ * @param {string[]} names
186
+ */
187
+ async dataChangeNotify(names: string[]): Promise<void> {
188
+ await super.dataChangeNotify(names);
189
+ const { resetItemNames } = this.model;
190
+ const mdctrlName =
191
+ this.model.appDEFieldId || this.model.fieldName || this.model.id!;
192
+
193
+ // 重置项,变更时自己的值置空
194
+ let isReset = false;
195
+ if (resetItemNames && resetItemNames.length > 0) {
196
+ resetItemNames.forEach((resetItemName: string) => {
197
+ if (names.includes(resetItemName)) {
198
+ isReset = true;
199
+ }
200
+ });
201
+ }
202
+ if (isReset) {
203
+ this.state.contentCtrlData = null;
204
+ this.setFormDataValue();
205
+ }
206
+
207
+ // 刚加载初始化时的值不校验,只校验自身值变更
208
+ if (names.includes(mdctrlName)) {
209
+ this.validate();
210
+ }
211
+
212
+ // 有表单项更新,且是自身变更时,触发表单项更新
213
+ if (names.includes(mdctrlName) && this.model.deformItemUpdateId) {
214
+ await (this.form as EditFormController).updateFormItem(
215
+ this.model.deformItemUpdateId,
216
+ );
217
+ }
218
+ }
154
219
  }
@@ -12,5 +12,5 @@ export class FormMDCtrlState extends FormDetailState {
12
12
  *
13
13
  * @type {Array<IData>}
14
14
  */
15
- contentCtrlData: Array<IData> | IData = [];
15
+ contentCtrlData: Array<IData> | IData | null = [];
16
16
  }
@@ -32,7 +32,7 @@ import { getGridColumnProvider } from '../../../../register';
32
32
  import { ControlVO, Srfuf } from '../../../../service';
33
33
  import { MDControlController } from '../../../common';
34
34
  import { GridNotifyState } from '../../../constant';
35
- import { getDefaultValue, isValueChange } from '../../../utils';
35
+ import { exportData, getDefaultValue, isValueChange } from '../../../utils';
36
36
  import { handleAllSettled, ScriptFactory } from '../../../../utils';
37
37
 
38
38
  /**
@@ -525,10 +525,6 @@ export class GridController
525
525
  rowState.data = res.data;
526
526
  rowState.modified = false;
527
527
 
528
- this.actionNotification(`${isCreate ? 'CREATE' : 'UPDATE'}SUCCESS`, {
529
- default: `${res.data.srfmajortext || ''}保存成功`,
530
- data: res.data,
531
- });
532
528
  this.gridStateNotify(rowState, GridNotifyState.SAVE);
533
529
  await this.evt.emit('onSaveSuccess', undefined);
534
530
  }
@@ -922,28 +918,28 @@ export class GridController
922
918
  this.fieldColumns;
923
919
  // 数据格式化
924
920
  const formatExcelData = (data: IData[]): IData[] => {
925
- const codeListMap: Map<string, readonly CodeListItem[]> = new Map();
926
- Object.keys(items).forEach((key: string) => {
927
- if (items[key].codeList) {
928
- codeListMap.set(key, items[key].codeListItems!);
929
- }
930
- });
921
+ // const codeListMap: Map<string, readonly CodeListItem[]> = new Map();
922
+ // Object.keys(items).forEach((key: string) => {
923
+ // if (items[key].codeList) {
924
+ // codeListMap.set(key, items[key].codeListItems!);
925
+ // }
926
+ // });
931
927
  const cloneData = clone(
932
928
  data.map(item => {
933
929
  return item.getOrigin();
934
930
  }),
935
931
  );
936
- cloneData.forEach(item => {
937
- const fields = Object.keys(item);
938
- fields.forEach((key: string) => {
939
- if (codeListMap.get(key)) {
940
- item[key] =
941
- codeListMap.get(key)!.find(_item => {
942
- return _item.value === item[key];
943
- })?.text || item[key];
944
- }
945
- });
946
- });
932
+ // cloneData.forEach(item => {
933
+ // const fields = Object.keys(item);
934
+ // fields.forEach((key: string) => {
935
+ // if (codeListMap.get(key)) {
936
+ // item[key] =
937
+ // codeListMap.get(key)!.find(_item => {
938
+ // return _item.value === item[key];
939
+ // })?.text || item[key];
940
+ // }
941
+ // });
942
+ // });
947
943
  return cloneData;
948
944
  };
949
945
  const getExportData = async (): Promise<IData[]> => {
@@ -977,7 +973,7 @@ export class GridController
977
973
  const formatArrayData = (
978
974
  filterVal: string[],
979
975
  tableData: IData[],
980
- ): IData[] => {
976
+ ): IData[][] => {
981
977
  return tableData.map(v => {
982
978
  return filterVal.map(j => {
983
979
  return v[j];
@@ -994,19 +990,7 @@ export class GridController
994
990
  );
995
991
  // 二维数组
996
992
  const data = formatArrayData(filterVal, await getExportData());
997
- if (!ibiz.util.getExportExcel) {
998
- throw new RuntimeError('ibiz.util.getExportExcel不存在');
999
- }
1000
- const exportExcel = await ibiz.util.getExportExcel();
1001
- if (!exportExcel) {
1002
- throw new RuntimeError('导出模块加载错误');
1003
- }
1004
- exportExcel.exportJsonToExcel({
1005
- header, // 表头内容 数组格式
1006
- data, // 具体数据 这是个二维数组
1007
- filename: this.model.logicName!, // 文件名称
1008
- autoWidth: true, // 单元格是否自适应
1009
- });
993
+ await exportData(header, data, this.model.logicName!);
1010
994
  }
1011
995
 
1012
996
  /**
@@ -22,3 +22,4 @@ export * from './kanban/index';
22
22
  export * from './tree-grid-ex/index';
23
23
  export * from './tree-grid/index';
24
24
  export * from './medit-view-panel/index';
25
+ export * from './map/index';
@@ -0,0 +1,2 @@
1
+ export * from './map.controller';
2
+ export * from './map.service';
@@ -0,0 +1,163 @@
1
+ import { ISysMap } from '@ibiz/model-core';
2
+ import { MapService } from './map.service';
3
+ import {
4
+ IMapController,
5
+ IMapData,
6
+ IMapEvent,
7
+ IMapState,
8
+ MDCtrlLoadParams,
9
+ } from '../../../interface';
10
+ import { MDControlController } from '../../common';
11
+
12
+ export class MapController
13
+ extends MDControlController<ISysMap, IMapState, IMapEvent>
14
+ implements IMapController
15
+ {
16
+ declare service: MapService;
17
+
18
+ protected initState(): void {
19
+ super.initState();
20
+ this.state.size = 1000;
21
+ this.state.pointData = [];
22
+ this.state.areaData = [];
23
+ this.calcDefaultOptions();
24
+ }
25
+
26
+ protected async onCreated(): Promise<void> {
27
+ await super.onCreated();
28
+ this.service = new MapService(this.model);
29
+ await this.service.init(this.context);
30
+ }
31
+
32
+ /**
33
+ * 部件加载数据行为
34
+ *
35
+ * @author lxm
36
+ * @date 2022-08-19 14:08:50
37
+ */
38
+ async load(args: MDCtrlLoadParams = {}): Promise<IData[]> {
39
+ if (this.state.isSimple) {
40
+ return [];
41
+ }
42
+ await this.startLoading();
43
+ try {
44
+ // *初始加载需要重置分页
45
+ const isInitialLoad = args.isInitialLoad === true;
46
+
47
+ // *查询参数处理
48
+ const { context } = this.handlerAbilityParams(args);
49
+ const params = await this.getFetchParams(args?.viewParam);
50
+ context.srfareacode = this.state.areaCode;
51
+
52
+ const res = await this.service.fetchAll(context, params);
53
+
54
+ this.state.items = res.data;
55
+
56
+ await this.afterLoad(args, res.data);
57
+
58
+ this.state.isLoaded = true;
59
+ await this._evt.emit('onLoadSuccess', {
60
+ isInitialLoad,
61
+ });
62
+ } catch (error) {
63
+ await this._evt.emit('onLoadError', undefined);
64
+ this.actionNotification('FETCHERROR', {
65
+ error: error as Error,
66
+ });
67
+ throw error;
68
+ } finally {
69
+ await this.endLoading();
70
+ }
71
+
72
+ this.actionNotification('FETCHSUCCESS');
73
+ return this.state.items;
74
+ }
75
+
76
+ async afterLoad(args: MDCtrlLoadParams, items: IData[]): Promise<IData[]> {
77
+ const result = (await super.afterLoad(args, items)) as IMapData[];
78
+
79
+ const tempareaData: IMapData[] = [];
80
+ const temppointData: IMapData[] = [];
81
+ result.forEach(item => {
82
+ if (item._type === 'area') {
83
+ tempareaData.push(item);
84
+ } else if (item._type === 'point') {
85
+ temppointData.push(item);
86
+ }
87
+ });
88
+ this.state.pointData = temppointData;
89
+ this.state.areaData = tempareaData;
90
+
91
+ return result;
92
+ }
93
+
94
+ /**
95
+ * 计算默认选项
96
+ * @author lxm
97
+ * @date 2023-11-01 03:23:33
98
+ */
99
+ calcDefaultOptions(): void {
100
+ this.state.strAreaCode = false;
101
+ this.state.defaultAreaCode = 100000;
102
+
103
+ if (this.model.controlParam?.ctrlParams) {
104
+ const { ctrlParams } = this.model.controlParam;
105
+ Object.keys(ctrlParams).forEach(key => {
106
+ const value = ctrlParams[key];
107
+ switch (key.toLowerCase()) {
108
+ case 'defaultareacode':
109
+ this.state.defaultAreaCode = value;
110
+ break;
111
+ case 'strareacode':
112
+ this.state.strAreaCode = value === 'true';
113
+ break;
114
+ case 'jsonbaseurl':
115
+ this.state.jsonBaseUrl = value;
116
+ break;
117
+ default:
118
+ break;
119
+ }
120
+ });
121
+ }
122
+
123
+ // 根据strAreaCode格式化默认区域代码的数值还是字符串
124
+ this.state.defaultAreaCode = this.state.strAreaCode
125
+ ? `${this.state.defaultAreaCode}`
126
+ : Number(this.state.defaultAreaCode);
127
+
128
+ this.state.areaCode = this.state.defaultAreaCode;
129
+ }
130
+
131
+ /**
132
+ * 地图变更事件处理
133
+ * @author lxm
134
+ * @date 2023-10-31 05:28:36
135
+ * @param {(string | number)} areaCode
136
+ */
137
+ onMapChange(areaCode: string | number): void {
138
+ // 修改预置视图参数,然后加载
139
+ this.state.areaCode = areaCode;
140
+ this.load({});
141
+ this.evt.emit('onMapChange', { areaCode });
142
+ }
143
+
144
+ /**
145
+ * 地图区域点击事件处理
146
+ * @author lxm
147
+ * @date 2023-10-31 05:30:54
148
+ * @param {IMapData} mapData
149
+ */
150
+ onAreaClick(mapData: IMapData): void {
151
+ this.evt.emit('onAreaClick', { data: [mapData] });
152
+ }
153
+
154
+ /**
155
+ * 地图散点点击事件处理
156
+ * @author lxm
157
+ * @date 2023-10-31 05:30:58
158
+ * @param {IMapData} mapData
159
+ */
160
+ onPointClick(mapData: IMapData): void {
161
+ this.evt.emit('onPointClick', { data: [mapData] });
162
+ }
163
+ }