@ibiz-template/runtime 0.4.9 → 0.4.11

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 (104) hide show
  1. package/dist/index.esm.js +847 -211
  2. package/dist/index.system.min.js +2 -2
  3. package/out/controller/control/form/edit-form/edit-form.controller.d.ts.map +1 -1
  4. package/out/controller/control/form/edit-form/edit-form.controller.js +27 -16
  5. package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.d.ts +1 -1
  6. package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.js +1 -1
  7. package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts +8 -0
  8. package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts.map +1 -1
  9. package/out/controller/control/form/form-detail/form-item/form-item.controller.js +14 -0
  10. package/out/controller/control/gantt/gantt.controller.d.ts +55 -1
  11. package/out/controller/control/gantt/gantt.controller.d.ts.map +1 -1
  12. package/out/controller/control/gantt/gantt.controller.js +150 -0
  13. package/out/controller/control/gantt/gantt.service.d.ts +69 -6
  14. package/out/controller/control/gantt/gantt.service.d.ts.map +1 -1
  15. package/out/controller/control/gantt/gantt.service.js +196 -5
  16. package/out/controller/control/wizard-panel/wizard-panel.controller.d.ts +8 -1
  17. package/out/controller/control/wizard-panel/wizard-panel.controller.d.ts.map +1 -1
  18. package/out/controller/control/wizard-panel/wizard-panel.controller.js +22 -7
  19. package/out/interface/controller/controller/control/i-drbar.controller.d.ts +7 -0
  20. package/out/interface/controller/controller/control/i-drbar.controller.d.ts.map +1 -1
  21. package/out/interface/controller/event/view/i-de-index-view.event.d.ts +12 -0
  22. package/out/interface/controller/event/view/i-de-index-view.event.d.ts.map +1 -0
  23. package/out/interface/controller/event/view/i-de-index-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/control/i-drbar.state.d.ts +28 -7
  28. package/out/interface/controller/state/control/i-drbar.state.d.ts.map +1 -1
  29. package/out/interface/controller/state/control/i-gantt.state.d.ts +94 -3
  30. package/out/interface/controller/state/control/i-gantt.state.d.ts.map +1 -1
  31. package/out/interface/controller/state/view/i-de-index-view.state.d.ts +19 -0
  32. package/out/interface/controller/state/view/i-de-index-view.state.d.ts.map +1 -0
  33. package/out/interface/controller/state/view/i-de-index-view.state.js +1 -0
  34. package/out/interface/controller/state/view/i-edit-view2.state.d.ts +8 -0
  35. package/out/interface/controller/state/view/i-edit-view2.state.d.ts.map +1 -1
  36. package/out/interface/controller/state/view/index.d.ts +1 -0
  37. package/out/interface/controller/state/view/index.d.ts.map +1 -1
  38. package/out/interface/controller/state/view/index.js +1 -0
  39. package/out/interface/service/service/i-auth.service.d.ts +8 -0
  40. package/out/interface/service/service/i-auth.service.d.ts.map +1 -1
  41. package/out/register/helper/ui-action-register.d.ts.map +1 -1
  42. package/out/register/helper/ui-action-register.js +6 -1
  43. package/out/service/service/auth/v7-auth.service.d.ts +1 -0
  44. package/out/service/service/auth/v7-auth.service.d.ts.map +1 -1
  45. package/out/service/service/auth/v7-auth.service.js +23 -3
  46. package/out/service/service/entity/de.service.d.ts.map +1 -1
  47. package/out/service/service/entity/de.service.js +1 -8
  48. package/out/service/service/entity/method/de-action.d.ts.map +1 -1
  49. package/out/service/service/entity/method/de-action.js +5 -5
  50. package/out/service/utils/de-cache/de-cache.d.ts +19 -0
  51. package/out/service/utils/de-cache/de-cache.d.ts.map +1 -1
  52. package/out/service/utils/de-cache/de-cache.js +54 -4
  53. package/out/service/vo/gantt-node-data/gantt-code-list-node-data.d.ts +19 -0
  54. package/out/service/vo/gantt-node-data/gantt-code-list-node-data.d.ts.map +1 -0
  55. package/out/service/vo/gantt-node-data/gantt-code-list-node-data.js +14 -0
  56. package/out/service/vo/gantt-node-data/gantt-data-set-node-data.d.ts +19 -0
  57. package/out/service/vo/gantt-node-data/gantt-data-set-node-data.d.ts.map +1 -0
  58. package/out/service/vo/gantt-node-data/gantt-data-set-node-data.js +14 -0
  59. package/out/service/vo/gantt-node-data/gantt-node-data-util.d.ts +9 -0
  60. package/out/service/vo/gantt-node-data/gantt-node-data-util.d.ts.map +1 -0
  61. package/out/service/vo/gantt-node-data/gantt-node-data-util.js +19 -0
  62. package/out/service/vo/gantt-node-data/gantt-static-node-data.d.ts +17 -0
  63. package/out/service/vo/gantt-node-data/gantt-static-node-data.d.ts.map +1 -0
  64. package/out/service/vo/gantt-node-data/gantt-static-node-data.js +13 -0
  65. package/out/service/vo/gantt-node-data/index.d.ts +4 -0
  66. package/out/service/vo/gantt-node-data/index.d.ts.map +1 -0
  67. package/out/service/vo/gantt-node-data/index.js +3 -0
  68. package/out/service/vo/index.d.ts +1 -0
  69. package/out/service/vo/index.d.ts.map +1 -1
  70. package/out/service/vo/index.js +1 -0
  71. package/out/ui-action/provider/index.d.ts.map +1 -1
  72. package/out/ui-action/provider/index.js +4 -0
  73. package/out/ui-action/provider/loginout-ui-action-provider.d.ts +16 -0
  74. package/out/ui-action/provider/loginout-ui-action-provider.d.ts.map +1 -0
  75. package/out/ui-action/provider/loginout-ui-action-provider.js +25 -0
  76. package/package.json +5 -5
  77. package/src/controller/control/form/edit-form/edit-form.controller.ts +48 -32
  78. package/src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts +1 -1
  79. package/src/controller/control/form/form-detail/form-item/form-item.controller.ts +15 -0
  80. package/src/controller/control/gantt/gantt.controller.ts +179 -1
  81. package/src/controller/control/gantt/gantt.service.ts +305 -6
  82. package/src/controller/control/wizard-panel/wizard-panel.controller.ts +27 -7
  83. package/src/interface/controller/controller/control/i-drbar.controller.ts +8 -0
  84. package/src/interface/controller/event/view/i-de-index-view.event.ts +12 -0
  85. package/src/interface/controller/event/view/index.ts +1 -0
  86. package/src/interface/controller/state/control/i-drbar.state.ts +32 -8
  87. package/src/interface/controller/state/control/i-gantt.state.ts +106 -4
  88. package/src/interface/controller/state/view/i-de-index-view.state.ts +19 -0
  89. package/src/interface/controller/state/view/i-edit-view2.state.ts +10 -1
  90. package/src/interface/controller/state/view/index.ts +1 -0
  91. package/src/interface/service/service/i-auth.service.ts +9 -0
  92. package/src/register/helper/ui-action-register.ts +7 -1
  93. package/src/service/service/auth/v7-auth.service.ts +30 -3
  94. package/src/service/service/entity/de.service.ts +2 -1
  95. package/src/service/service/entity/method/de-action.ts +5 -4
  96. package/src/service/utils/de-cache/de-cache.ts +64 -3
  97. package/src/service/vo/gantt-node-data/gantt-code-list-node-data.ts +68 -0
  98. package/src/service/vo/gantt-node-data/gantt-data-set-node-data.ts +68 -0
  99. package/src/service/vo/gantt-node-data/gantt-node-data-util.ts +26 -0
  100. package/src/service/vo/gantt-node-data/gantt-static-node-data.ts +50 -0
  101. package/src/service/vo/gantt-node-data/index.ts +3 -0
  102. package/src/service/vo/index.ts +1 -0
  103. package/src/ui-action/provider/index.ts +4 -0
  104. package/src/ui-action/provider/loginout-ui-action-provider.ts +31 -0
@@ -1 +1 @@
1
- {"version":3,"file":"edit-form.controller.d.ts","sourceRoot":"","sources":["../../../../../src/controller/control/form/edit-form/edit-form.controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/D,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,cAAc,EACf,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;;;;;GAQG;AACH,qBAAa,kBACX,SAAQ,cAAc,CAAC,WAAW,EAAE,cAAc,EAAE,cAAc,CAClE,YAAW,mBAAmB;IAE9B;;;;;OAKG;IACH,OAAO,EAAG,eAAe,CAAC;IAE1B,IAAI,IAAI,IAAI,eAAe,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC,CAM1E;IAED;;;;;;;OAOG;cACa,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;cAY1B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAS1C;;;;;OAKG;IACG,SAAS,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAiC1D;;;;;;OAMG;cACa,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC;IA+CtC;;;;;OAKG;IACG,IAAI,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA4CrD;;;;;OAKG;IACG,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAqEjD;;;;;;OAMG;IACG,MAAM,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IA4CzD;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC;IAe9B;;;;;;;OAOG;IACG,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+C7D;;;;;;;OAOG;IACG,OAAO,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBvD;;;;;;;OAOG;IACG,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BlD,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD;;;;;OAKG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;CAoBjC"}
1
+ {"version":3,"file":"edit-form.controller.d.ts","sourceRoot":"","sources":["../../../../../src/controller/control/form/edit-form/edit-form.controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/D,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,cAAc,EACf,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;;;;;GAQG;AACH,qBAAa,kBACX,SAAQ,cAAc,CAAC,WAAW,EAAE,cAAc,EAAE,cAAc,CAClE,YAAW,mBAAmB;IAE9B;;;;;OAKG;IACH,OAAO,EAAG,eAAe,CAAC;IAE1B,IAAI,IAAI,IAAI,eAAe,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC,CAM1E;IAED;;;;;;;OAOG;cACa,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;cAY1B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAS1C;;;;;OAKG;IACG,SAAS,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAiC1D;;;;;;OAMG;cACa,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC;IA+CtC;;;;;OAKG;IACG,IAAI,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA4CrD;;;;;OAKG;IACG,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAqEjD;;;;;;OAMG;IACG,MAAM,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IA4CzD;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC;IAe9B;;;;;;;OAOG;IACG,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+D7D;;;;;;;OAOG;IACG,OAAO,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBvD;;;;;;;OAOG;IACG,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BlD,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD;;;;;OAKG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B;;;;;OAKG;IACH,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;CAoBjC"}
@@ -326,24 +326,35 @@ export class EditFormController extends FormController {
326
326
  if (!formItemUpdate) {
327
327
  throw new RuntimeError(`没找到${formItemUpdateId}表单项更新`);
328
328
  }
329
- const { appDEMethodId, defiupdateDetails, customCode, scriptCode } = formItemUpdate;
329
+ const { appDEMethodId, defiupdateDetails, customCode, scriptCode, showBusyIndicator, } = formItemUpdate;
330
330
  const updateItems = defiupdateDetails === null || defiupdateDetails === void 0 ? void 0 : defiupdateDetails.map(item => item.id);
331
- let updateData; // 要修改的数据
332
- if (customCode && scriptCode) {
333
- // 脚本模式获取修改数据
334
- updateData = ScriptFactory.execScriptFn(Object.assign(Object.assign({}, this.getEventArgs()), { data: this.data }), scriptCode, {
335
- isAsync: false,
336
- });
331
+ try {
332
+ if (showBusyIndicator) {
333
+ this.startLoading();
334
+ }
335
+ let updateData; // 要修改的数据
336
+ if (customCode && scriptCode) {
337
+ // 脚本模式获取修改数据
338
+ updateData = ScriptFactory.execScriptFn(Object.assign(Object.assign({}, this.getEventArgs()), { data: this.data }), scriptCode, {
339
+ isAsync: false,
340
+ });
341
+ }
342
+ else {
343
+ // 后台服务获取修改数据
344
+ const params = Object.assign(Object.assign({}, this.params), this.data.getOrigin());
345
+ const res = await this.service.updateFormItem(appDEMethodId, this.context, params);
346
+ updateData = res.data;
347
+ }
348
+ // 修改表单项更新的值
349
+ if (updateData && (updateItems === null || updateItems === void 0 ? void 0 : updateItems.length)) {
350
+ await Promise.all(updateItems.map(itemName => this.setDataValue(itemName, updateData[itemName])));
351
+ }
352
+ await awaitTimeout(2000);
337
353
  }
338
- else {
339
- // 后台服务获取修改数据
340
- const params = Object.assign(Object.assign({}, this.params), this.data.getOrigin());
341
- const res = await this.service.updateFormItem(appDEMethodId, this.context, params);
342
- updateData = res.data;
343
- }
344
- // 修改表单项更新的值
345
- if (updateData && (updateItems === null || updateItems === void 0 ? void 0 : updateItems.length)) {
346
- await Promise.all(updateItems.map(itemName => this.setDataValue(itemName, updateData[itemName])));
354
+ finally {
355
+ if (showBusyIndicator) {
356
+ this.endLoading();
357
+ }
347
358
  }
348
359
  }
349
360
  /**
@@ -40,7 +40,7 @@ export declare class FormDRUIPartController extends FormDetailController<IDEForm
40
40
  */
41
41
  refreshItems: string[];
42
42
  /**
43
- * 参数项名称
43
+ * 参数项名称(这个模型暂不使用,相关场景可以通过配置导航参数实现)
44
44
  *
45
45
  * @author lxm
46
46
  * @date 2022-09-15 19:09:36
@@ -26,7 +26,7 @@ export class FormDRUIPartController extends FormDetailController {
26
26
  */
27
27
  this.refreshItems = ['srfkey'];
28
28
  /**
29
- * 参数项名称
29
+ * 参数项名称(这个模型暂不使用,相关场景可以通过配置导航参数实现)
30
30
  *
31
31
  * @author lxm
32
32
  * @date 2022-09-15 19:09:36
@@ -64,6 +64,14 @@ export declare class FormItemController extends FormDetailController<IDEFormItem
64
64
  * @type {(string | undefined)}
65
65
  */
66
66
  get valueItemName(): string | undefined;
67
+ /**
68
+ * 标签标题
69
+ * @author lxm
70
+ * @date 2023-12-12 09:48:21
71
+ * @readonly
72
+ * @type {(string | undefined)}
73
+ */
74
+ get labelCaption(): string | undefined;
67
75
  /**
68
76
  * Creates an instance of FormItemController.
69
77
  *
@@ -1 +1 @@
1
- {"version":3,"file":"form-item.controller.d.ts","sourceRoot":"","sources":["../../../../../../src/controller/control/form/form-detail/form-item/form-item.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAoB,MAAM,kBAAkB,CAAC;AAIjE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAEL,0BAA0B,EAC1B,iBAAiB,EACjB,eAAe,EACf,8BAA8B,EAC/B,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAOvD,qBAAa,kBACX,SAAQ,oBAAoB,CAAC,WAAW,CACxC,YAAW,0BAA0B;IAE7B,KAAK,EAAE,aAAa,CAAC;IAE7B,SAAS,CAAC,WAAW,IAAI,aAAa;IAItC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAE3B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,eAAe,CAAC;IAEjC;;;;;;;OAOG;IACH,OAAO,CAAC,SAAS,CAAU;IAE3B;;;;;;OAMG;IACH,KAAK,EAAE,KAAK,EAAE,CAAM;IAEpB;;;;;;OAMG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;;OAOG;IACH,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED;;;;;;OAMG;IACH,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAKtC;IAED;;;;;;;;OAQG;gBAED,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,cAAc,EACpB,MAAM,CAAC,EAAE,8BAA8B;IAKzC;;;;;;OAMG;IACH,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED;;;;;;OAMG;IACH,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED;;;;;;;OAOG;IACH,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED;;;;;;;OAOG;cACa,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBvC;;;;;;;OAOG;cACa,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB1C;;;;;;;OAOG;IACH,cAAc,IAAI,IAAI;IAQhB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B/C,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5D,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,GAAE,OAAe,GAAG,IAAI;IAO5E;;;;;;OAMG;IACG,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAyBlC;;;;;;;OAOG;IACG,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE;;;;;;OAMG;IACH,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,GAAE,KAAiB,GAAG,IAAI;IAmBjE;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAQhC;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAQ/B;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAOjC"}
1
+ {"version":3,"file":"form-item.controller.d.ts","sourceRoot":"","sources":["../../../../../../src/controller/control/form/form-detail/form-item/form-item.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAoB,MAAM,kBAAkB,CAAC;AAIjE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAEL,0BAA0B,EAC1B,iBAAiB,EACjB,eAAe,EACf,8BAA8B,EAC/B,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAOvD,qBAAa,kBACX,SAAQ,oBAAoB,CAAC,WAAW,CACxC,YAAW,0BAA0B;IAE7B,KAAK,EAAE,aAAa,CAAC;IAE7B,SAAS,CAAC,WAAW,IAAI,aAAa;IAItC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAE3B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,eAAe,CAAC;IAEjC;;;;;;;OAOG;IACH,OAAO,CAAC,SAAS,CAAU;IAE3B;;;;;;OAMG;IACH,KAAK,EAAE,KAAK,EAAE,CAAM;IAEpB;;;;;;OAMG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;;OAOG;IACH,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED;;;;;;OAMG;IACH,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAKtC;IAED;;;;;;OAMG;IACH,IAAI,YAAY,IAAI,MAAM,GAAG,SAAS,CAMrC;IAED;;;;;;;;OAQG;gBAED,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,cAAc,EACpB,MAAM,CAAC,EAAE,8BAA8B;IAKzC;;;;;;OAMG;IACH,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED;;;;;;OAMG;IACH,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED;;;;;;;OAOG;IACH,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED;;;;;;;OAOG;cACa,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBvC;;;;;;;OAOG;cACa,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB1C;;;;;;;OAOG;IACH,cAAc,IAAI,IAAI;IAQhB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B/C,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5D,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,GAAE,OAAe,GAAG,IAAI;IAO5E;;;;;;OAMG;IACG,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAyBlC;;;;;;;OAOG;IACG,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE;;;;;;OAMG;IACH,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,GAAE,KAAiB,GAAG,IAAI;IAmBjE;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAQhC;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAQ/B;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAOjC"}
@@ -47,6 +47,20 @@ export class FormItemController extends FormDetailController {
47
47
  }
48
48
  return undefined;
49
49
  }
50
+ /**
51
+ * 标签标题
52
+ * @author lxm
53
+ * @date 2023-12-12 09:48:21
54
+ * @readonly
55
+ * @type {(string | undefined)}
56
+ */
57
+ get labelCaption() {
58
+ const { captionItemName } = this.model;
59
+ if (captionItemName) {
60
+ return this.data[captionItemName];
61
+ }
62
+ return this.model.caption;
63
+ }
50
64
  /**
51
65
  * Creates an instance of FormItemController.
52
66
  *
@@ -1,7 +1,8 @@
1
1
  import { IDEGantt } from '@ibiz/model-core';
2
- import { IGanttController, IGanttEvent, IGanttState } from '../../../interface';
2
+ import { IGanttController, IGanttEvent, IGanttNodeData, IGanttState, MDCtrlLoadParams } from '../../../interface';
3
3
  import { MDControlController } from '../../common';
4
4
  import { GanttService } from './gantt.service';
5
+ import { ContextMenuController } from '../context-menu';
5
6
  /**
6
7
  * 甘特图控制器
7
8
  *
@@ -14,6 +15,59 @@ import { GanttService } from './gantt.service';
14
15
  */
15
16
  export declare class GanttController extends MDControlController<IDEGantt, IGanttState, IGanttEvent> implements IGanttController {
16
17
  service: GanttService;
18
+ /**
19
+ * 上下文菜单控制器
20
+ *
21
+ * @author tony001
22
+ * @date 2023-12-11 16:12:57
23
+ * @type {{ [p: string]: ContextMenuController }}
24
+ */
25
+ contextMenus: {
26
+ [p: string]: ContextMenuController;
27
+ };
28
+ /**
29
+ * 是否启用快速搜索
30
+ *
31
+ * @author tony001
32
+ * @date 2023-12-11 16:12:13
33
+ * @type {boolean}
34
+ */
35
+ enableQuickSearch: boolean;
36
+ /**
37
+ * 初始化状态
38
+ *
39
+ * @author tony001
40
+ * @date 2023-12-11 16:12:20
41
+ * @protected
42
+ */
43
+ protected initState(): void;
17
44
  protected onCreated(): Promise<void>;
45
+ /**
46
+ * 加载
47
+ *
48
+ * @author tony001
49
+ * @date 2023-12-12 11:12:08
50
+ * @param {MDCtrlLoadParams} [args={}]
51
+ * @return {*} {Promise<IGanttNodeData[]>}
52
+ */
53
+ load(args?: MDCtrlLoadParams): Promise<IGanttNodeData[]>;
54
+ /**
55
+ * 获取查询参数
56
+ *
57
+ * @author tony001
58
+ * @date 2023-12-12 11:12:22
59
+ * @param {IParams} [extraParams]
60
+ * @return {*} {Promise<IParams>}
61
+ */
62
+ getFetchParams(extraParams?: IParams): Promise<IParams>;
63
+ /**
64
+ * 加载节点
65
+ *
66
+ * @author tony001
67
+ * @date 2023-12-12 11:12:33
68
+ * @param {IGanttNodeData} [parentNode]
69
+ * @return {*} {Promise<IGanttNodeData[]>}
70
+ */
71
+ loadNodes(parentNode?: IGanttNodeData): Promise<IGanttNodeData[]>;
18
72
  }
19
73
  //# sourceMappingURL=gantt.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gantt.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/gantt/gantt.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;;;;;;;GASG;AACH,qBAAa,eACX,SAAQ,mBAAmB,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAC9D,YAAW,gBAAgB;IAEnB,OAAO,EAAE,YAAY,CAAC;cAEd,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAK3C"}
1
+ {"version":3,"file":"gantt.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/gantt/gantt.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,WAAW,EACX,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;;;;;GASG;AACH,qBAAa,eACX,SAAQ,mBAAmB,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAC9D,YAAW,gBAAgB;IAEnB,OAAO,EAAE,YAAY,CAAC;IAE9B;;;;;;OAMG;IACH,YAAY,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAAA;KAAE,CAAM;IAE1D;;;;;;OAMG;IACH,iBAAiB,EAAE,OAAO,CAAS;IAEnC;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,IAAI,IAAI;cAMX,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAoD1C;;;;;;;OAOG;IACG,IAAI,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAsBlE;;;;;;;OAOG;IACG,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ7D;;;;;;;OAOG;IACG,SAAS,CAAC,UAAU,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAqCxE"}
@@ -1,5 +1,8 @@
1
+ /* eslint-disable no-param-reassign */
2
+ import { recursiveIterate } from '@ibiz-template/core';
1
3
  import { MDControlController } from '../../common';
2
4
  import { GanttService } from './gantt.service';
5
+ import { ContextMenuController } from '../context-menu';
3
6
  /**
4
7
  * 甘特图控制器
5
8
  *
@@ -11,9 +14,156 @@ import { GanttService } from './gantt.service';
11
14
  * @implements {IGanttController}
12
15
  */
13
16
  export class GanttController extends MDControlController {
17
+ constructor() {
18
+ super(...arguments);
19
+ /**
20
+ * 上下文菜单控制器
21
+ *
22
+ * @author tony001
23
+ * @date 2023-12-11 16:12:57
24
+ * @type {{ [p: string]: ContextMenuController }}
25
+ */
26
+ this.contextMenus = {};
27
+ /**
28
+ * 是否启用快速搜索
29
+ *
30
+ * @author tony001
31
+ * @date 2023-12-11 16:12:13
32
+ * @type {boolean}
33
+ */
34
+ this.enableQuickSearch = false;
35
+ }
36
+ /**
37
+ * 初始化状态
38
+ *
39
+ * @author tony001
40
+ * @date 2023-12-11 16:12:20
41
+ * @protected
42
+ */
43
+ initState() {
44
+ super.initState();
45
+ this.state.size = 0;
46
+ this.state.query = '';
47
+ }
14
48
  async onCreated() {
49
+ var _a, _b;
15
50
  await super.onCreated();
51
+ // 快速搜索
52
+ if ((_a = this.model.detreeNodes) === null || _a === void 0 ? void 0 : _a[0].enableQuickSearch) {
53
+ this.enableQuickSearch = true;
54
+ }
55
+ // 计算快速搜索占位符
56
+ if (this.dataEntity) {
57
+ const searchFields = (_b = this.dataEntity.appDEFields) === null || _b === void 0 ? void 0 : _b.filter(field => {
58
+ return field.enableQuickSearch;
59
+ });
60
+ const placeHolders = [];
61
+ searchFields === null || searchFields === void 0 ? void 0 : searchFields.forEach(searchField => {
62
+ if ((searchField === null || searchField === void 0 ? void 0 : searchField.lnlanguageRes) && searchField.lnlanguageRes.lanResTag) {
63
+ placeHolders.push(ibiz.i18n.t(searchField.lnlanguageRes.lanResTag, searchField.logicName));
64
+ }
65
+ else if (searchField === null || searchField === void 0 ? void 0 : searchField.logicName) {
66
+ placeHolders.push(searchField.logicName);
67
+ }
68
+ });
69
+ if (placeHolders.length > 0) {
70
+ this.state.placeHolder = placeHolders.join('、');
71
+ }
72
+ }
16
73
  this.service = new GanttService(this.model);
17
74
  await this.service.init(this.context);
75
+ // 初始化上下文菜单控制器
76
+ this.model.detreeNodes.forEach(node => {
77
+ var _a, _b;
78
+ if ((_b = (_a = node.decontextMenu) === null || _a === void 0 ? void 0 : _a.detoolbarItems) === null || _b === void 0 ? void 0 : _b.length) {
79
+ this.contextMenus[node.decontextMenu.id] = new ContextMenuController(node.decontextMenu, this.context, this.params, this.ctx);
80
+ }
81
+ });
82
+ // 上下文菜单控制器初始化
83
+ await Promise.all(Object.values(this.contextMenus).map(menu => menu.created()));
84
+ }
85
+ /**
86
+ * 加载
87
+ *
88
+ * @author tony001
89
+ * @date 2023-12-12 11:12:08
90
+ * @param {MDCtrlLoadParams} [args={}]
91
+ * @return {*} {Promise<IGanttNodeData[]>}
92
+ */
93
+ async load(args = {}) {
94
+ const isInitialLoad = args.isInitialLoad === true;
95
+ if (isInitialLoad) {
96
+ await this.startLoading();
97
+ }
98
+ let nodes;
99
+ try {
100
+ nodes = await this.loadNodes();
101
+ }
102
+ finally {
103
+ if (isInitialLoad) {
104
+ await this.endLoading();
105
+ }
106
+ }
107
+ await this.afterLoad(args, nodes);
108
+ this.state.isLoaded = true;
109
+ await this.evt.emit('onLoadSuccess', {
110
+ isInitialLoad,
111
+ });
112
+ return nodes;
113
+ }
114
+ /**
115
+ * 获取查询参数
116
+ *
117
+ * @author tony001
118
+ * @date 2023-12-12 11:12:22
119
+ * @param {IParams} [extraParams]
120
+ * @return {*} {Promise<IParams>}
121
+ */
122
+ async getFetchParams(extraParams) {
123
+ const params = await super.getFetchParams(extraParams);
124
+ if (this.state.query) {
125
+ params.query = this.state.query;
126
+ }
127
+ return params;
128
+ }
129
+ /**
130
+ * 加载节点
131
+ *
132
+ * @author tony001
133
+ * @date 2023-12-12 11:12:33
134
+ * @param {IGanttNodeData} [parentNode]
135
+ * @return {*} {Promise<IGanttNodeData[]>}
136
+ */
137
+ async loadNodes(parentNode) {
138
+ const params = await this.getFetchParams();
139
+ const hasQuery = !!params.query;
140
+ this.state.isLoading = true;
141
+ let nodes;
142
+ try {
143
+ // 请求服务获取子节点数据
144
+ nodes =
145
+ (await this.service.fetchGanttChildNodes(parentNode, {
146
+ context: this.context.clone(),
147
+ params,
148
+ hasQuery,
149
+ defaultExpandedKeys: [],
150
+ })) || [];
151
+ }
152
+ finally {
153
+ this.state.isLoading = false;
154
+ }
155
+ // 有父节点绑定到父节点数据上,无父节点替换rootNodes
156
+ if (parentNode) {
157
+ parentNode.children = nodes;
158
+ }
159
+ else {
160
+ this.state.rootNodes = nodes;
161
+ }
162
+ // 更新items
163
+ this.state.items = [];
164
+ recursiveIterate({ children: this.state.rootNodes }, (node) => {
165
+ this.state.items.push(node);
166
+ });
167
+ return nodes;
18
168
  }
19
169
  }
@@ -1,14 +1,77 @@
1
- import { IDEGantt } from '@ibiz/model-core';
2
- import { MDControlService } from '../../../service';
1
+ import { IDETreeCodeListNode, IDETreeDataSetNode, IDETreeNode, IDETreeNodeRS } from '@ibiz/model-core';
2
+ import { IGanttNodeData } from '../../../interface';
3
+ import { TreeFetchOpts, TreeService } from '../tree';
3
4
  /**
4
5
  * 甘特图服务
5
6
  *
6
- * @author zhanghengfeng
7
- * @date 2023-12-08 15:12:34
7
+ * @author tony001
8
+ * @date 2023-12-11 16:12:57
8
9
  * @export
9
10
  * @class GanttService
10
- * @extends {MDControlService<IDEGantt>}
11
+ * @extends {TreeService}
11
12
  */
12
- export declare class GanttService extends MDControlService<IDEGantt> {
13
+ export declare class GanttService extends TreeService {
14
+ /**
15
+ * 获取子节点数据
16
+ *
17
+ * @author tony001
18
+ * @date 2023-12-11 18:12:58
19
+ * @param {(IGanttNodeData | undefined)} parentNodeData
20
+ * @param {TreeFetchOpts} opts
21
+ * @return {*} {(Promise<IGanttNodeData[] | undefined>)}
22
+ */
23
+ fetchGanttChildNodes(parentNodeData: IGanttNodeData | undefined, opts: TreeFetchOpts): Promise<IGanttNodeData[] | undefined>;
24
+ /**
25
+ * 通过节点类型加载节点数据
26
+ *
27
+ * @author tony001
28
+ * @date 2023-12-11 18:12:35
29
+ * @protected
30
+ * @param {IDETreeNode} nodeModel
31
+ * @param {(IDETreeNodeRS | undefined)} nodeRS
32
+ * @param {(ITreeNodeData | undefined)} parentNodeData
33
+ * @param {TreeFetchOpts} opts
34
+ * @return {*} {Promise<IGanttNodeData[]>}
35
+ */
36
+ protected fetchGanttNodeDatasByType(nodeModel: IDETreeNode, nodeRS: IDETreeNodeRS | undefined, parentNodeData: IGanttNodeData | undefined, opts: TreeFetchOpts): Promise<IGanttNodeData[]>;
37
+ /**
38
+ * 获取静态节点数据
39
+ *
40
+ * @author tony001
41
+ * @date 2023-12-11 18:12:06
42
+ * @protected
43
+ * @param {IDETreeNode} nodeModel
44
+ * @param {(IDETreeNodeRS | undefined)} nodeRS
45
+ * @param {(IGanttNodeData | undefined)} parentNodeData
46
+ * @param {TreeFetchOpts} opts
47
+ * @return {*} {Promise<IGanttNodeData>}
48
+ */
49
+ protected getStaticGanttNodeData(nodeModel: IDETreeNode, nodeRS: IDETreeNodeRS | undefined, parentNodeData: IGanttNodeData | undefined, opts: TreeFetchOpts): Promise<IGanttNodeData>;
50
+ /**
51
+ * 获取实体数据集数据
52
+ *
53
+ * @author tony001
54
+ * @date 2023-12-11 18:12:23
55
+ * @protected
56
+ * @param {IDETreeDataSetNode} nodeModel
57
+ * @param {(IDETreeNodeRS | undefined)} nodeRS
58
+ * @param {(IGanttNodeData | undefined)} parentNodeData
59
+ * @param {TreeFetchOpts} opts
60
+ * @return {*} {Promise<IGanttNodeData[]>}
61
+ */
62
+ protected getDEGanttNodeDatas(nodeModel: IDETreeDataSetNode, nodeRS: IDETreeNodeRS | undefined, parentNodeData: IGanttNodeData | undefined, opts: TreeFetchOpts): Promise<IGanttNodeData[]>;
63
+ /**
64
+ * 获取代码表节点数据
65
+ *
66
+ * @author tony001
67
+ * @date 2023-12-11 18:12:35
68
+ * @protected
69
+ * @param {IDETreeCodeListNode} nodeModel
70
+ * @param {(IDETreeNodeRS | undefined)} nodeRS
71
+ * @param {(IGanttNodeData | undefined)} parentNodeData
72
+ * @param {TreeFetchOpts} opts
73
+ * @return {*} {Promise<IGanttNodeData[]>}
74
+ */
75
+ protected getCodeListGanttNodeDatas(nodeModel: IDETreeCodeListNode, nodeRS: IDETreeNodeRS | undefined, parentNodeData: IGanttNodeData | undefined, opts: TreeFetchOpts): Promise<IGanttNodeData[]>;
13
76
  }
14
77
  //# sourceMappingURL=gantt.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gantt.service.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/gantt/gantt.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;;;GAQG;AACH,qBAAa,YAAa,SAAQ,gBAAgB,CAAC,QAAQ,CAAC;CAAG"}
1
+ {"version":3,"file":"gantt.service.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/gantt/gantt.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAOrD;;;;;;;;GAQG;AACH,qBAAa,YAAa,SAAQ,WAAW;IAC3C;;;;;;;;OAQG;IACG,oBAAoB,CACxB,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC;IA8CxC;;;;;;;;;;;OAWG;cACa,yBAAyB,CACvC,SAAS,EAAE,WAAW,EACtB,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,cAAc,EAAE,CAAC;IAoE5B;;;;;;;;;;;OAWG;cACa,sBAAsB,CACpC,SAAS,EAAE,WAAW,EACtB,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,cAAc,CAAC;IAU1B;;;;;;;;;;;OAWG;cACa,mBAAmB,CACjC,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,cAAc,EAAE,CAAC;IA6C5B;;;;;;;;;;;OAWG;cACa,yBAAyB,CACvC,SAAS,EAAE,mBAAmB,EAC9B,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,cAAc,EAAE,CAAC;CAmC7B"}
@@ -1,12 +1,203 @@
1
- import { MDControlService } from '../../../service';
1
+ import { ModelError } from '@ibiz-template/core';
2
+ import { getChildNodeRSs, getRootNode, getTreeNode } from '../../../model';
3
+ import { handleAllSettled } from '../../../utils';
4
+ import { TreeService } from '../tree';
5
+ import { GanttCodeListNodeData, GanttDataSetNodeData, GanttStaticNodeData, } from '../../../service';
2
6
  /**
3
7
  * 甘特图服务
4
8
  *
5
- * @author zhanghengfeng
6
- * @date 2023-12-08 15:12:34
9
+ * @author tony001
10
+ * @date 2023-12-11 16:12:57
7
11
  * @export
8
12
  * @class GanttService
9
- * @extends {MDControlService<IDEGantt>}
13
+ * @extends {TreeService}
10
14
  */
11
- export class GanttService extends MDControlService {
15
+ export class GanttService extends TreeService {
16
+ /**
17
+ * 获取子节点数据
18
+ *
19
+ * @author tony001
20
+ * @date 2023-12-11 18:12:58
21
+ * @param {(IGanttNodeData | undefined)} parentNodeData
22
+ * @param {TreeFetchOpts} opts
23
+ * @return {*} {(Promise<IGanttNodeData[] | undefined>)}
24
+ */
25
+ async fetchGanttChildNodes(parentNodeData, opts) {
26
+ const { hasQuery } = opts;
27
+ let childrenNodes = [];
28
+ if (!parentNodeData) {
29
+ // 没有父节点的加载根节点数据
30
+ const rootNode = getRootNode(this.model);
31
+ childrenNodes = await this.fetchGanttNodeDatasByType(rootNode, undefined, undefined, opts);
32
+ }
33
+ else {
34
+ // 有父节点的计算节点关系查询对应节点数据并合并
35
+ const childNodeRSs = getChildNodeRSs(this.model, {
36
+ parentId: parentNodeData.nodeId,
37
+ hasQuery,
38
+ });
39
+ if (childNodeRSs.length === 0) {
40
+ return;
41
+ }
42
+ const results = await handleAllSettled(childNodeRSs.map(async (childNodeRS) => {
43
+ const childNode = getTreeNode(this.model, childNodeRS.childDETreeNodeId);
44
+ return this.fetchGanttNodeDatasByType(childNode, childNodeRS, parentNodeData, opts);
45
+ }), false);
46
+ results.forEach(result => {
47
+ childrenNodes.push(...result);
48
+ });
49
+ }
50
+ return childrenNodes;
51
+ }
52
+ /**
53
+ * 通过节点类型加载节点数据
54
+ *
55
+ * @author tony001
56
+ * @date 2023-12-11 18:12:35
57
+ * @protected
58
+ * @param {IDETreeNode} nodeModel
59
+ * @param {(IDETreeNodeRS | undefined)} nodeRS
60
+ * @param {(ITreeNodeData | undefined)} parentNodeData
61
+ * @param {TreeFetchOpts} opts
62
+ * @return {*} {Promise<IGanttNodeData[]>}
63
+ */
64
+ async fetchGanttNodeDatasByType(nodeModel, nodeRS, parentNodeData, opts) {
65
+ // 有没有下级
66
+ const leaf = getChildNodeRSs(this.model, {
67
+ parentId: nodeModel.id,
68
+ hasQuery: opts.hasQuery,
69
+ }).length === 0;
70
+ const tempOpts = Object.assign(Object.assign({}, opts), { leaf });
71
+ // 根据类型查询节点数据
72
+ let result = [];
73
+ switch (nodeModel.treeNodeType) {
74
+ case 'STATIC':
75
+ {
76
+ const nodeData = await this.getStaticGanttNodeData(nodeModel, nodeRS, parentNodeData, tempOpts);
77
+ result = [nodeData];
78
+ }
79
+ break;
80
+ case 'DE':
81
+ result = await this.getDEGanttNodeDatas(nodeModel, nodeRS, parentNodeData, tempOpts);
82
+ break;
83
+ case 'CODELIST':
84
+ result = await this.getCodeListGanttNodeDatas(nodeModel, nodeRS, parentNodeData, tempOpts);
85
+ break;
86
+ default:
87
+ throw new ModelError(nodeModel, `${nodeModel.treeNodeType}节点类型未支持`);
88
+ }
89
+ // *查询回来之后,如果有子节点,看默认展开相关配置有时每个节点数据走一遍展开逻辑
90
+ const { expandFirstOnly, expanded, rootNode } = nodeModel;
91
+ const isExpandedRoot = rootNode && !this.model.rootVisible; // root节点不显示的时候默认展开其子节点
92
+ if (!leaf) {
93
+ await Promise.all(result.map(async (childNode, index) => {
94
+ if ((expanded && // 全展开合只展开首节点expanded都为true
95
+ (!expandFirstOnly || (expandFirstOnly && index === 0))) ||
96
+ isExpandedRoot) {
97
+ const subChildrenNodes = await this.fetchGanttChildNodes(childNode, opts);
98
+ childNode.children = subChildrenNodes;
99
+ }
100
+ }));
101
+ }
102
+ return result;
103
+ }
104
+ /**
105
+ * 获取静态节点数据
106
+ *
107
+ * @author tony001
108
+ * @date 2023-12-11 18:12:06
109
+ * @protected
110
+ * @param {IDETreeNode} nodeModel
111
+ * @param {(IDETreeNodeRS | undefined)} nodeRS
112
+ * @param {(IGanttNodeData | undefined)} parentNodeData
113
+ * @param {TreeFetchOpts} opts
114
+ * @return {*} {Promise<IGanttNodeData>}
115
+ */
116
+ async getStaticGanttNodeData(nodeModel, nodeRS, parentNodeData, opts) {
117
+ const nodeData = new GanttStaticNodeData(this.model, nodeModel, parentNodeData, { parentValueLevel: nodeRS === null || nodeRS === void 0 ? void 0 : nodeRS.parentValueLevel, leaf: !!opts.leaf });
118
+ return nodeData;
119
+ }
120
+ /**
121
+ * 获取实体数据集数据
122
+ *
123
+ * @author tony001
124
+ * @date 2023-12-11 18:12:23
125
+ * @protected
126
+ * @param {IDETreeDataSetNode} nodeModel
127
+ * @param {(IDETreeNodeRS | undefined)} nodeRS
128
+ * @param {(IGanttNodeData | undefined)} parentNodeData
129
+ * @param {TreeFetchOpts} opts
130
+ * @return {*} {Promise<IGanttNodeData[]>}
131
+ */
132
+ async getDEGanttNodeDatas(nodeModel, nodeRS, parentNodeData, opts) {
133
+ const { appDEDataSetId, appDataEntityId } = nodeModel;
134
+ // 处理查询参数,没有关系的时候不处理参数了
135
+ const { context, params, navContext, navParams } = nodeRS
136
+ ? this.getNodeRSFilterParams(nodeRS, parentNodeData, opts)
137
+ : {
138
+ context: opts.context,
139
+ params: opts.params,
140
+ navContext: {},
141
+ navParams: {},
142
+ };
143
+ // 设置查询长度
144
+ params.size = nodeModel.maxSize || 1000;
145
+ // 排序属性
146
+ if (nodeModel.sortAppDEFieldId) {
147
+ Object.assign(params, {
148
+ sort: `${nodeModel.sortAppDEFieldId.toLowerCase()},${nodeModel.sortDir ? nodeModel.sortDir.toLowerCase() : 'asc'}`,
149
+ });
150
+ }
151
+ // 请求实体数据
152
+ const response = await this.app.deService.exec(appDataEntityId, appDEDataSetId, context, params);
153
+ if (response.data.length) {
154
+ const nodeDatas = response.data.map((item) => {
155
+ return new GanttDataSetNodeData(this.model, nodeModel, parentNodeData, {
156
+ data: item,
157
+ leaf: !!opts.leaf,
158
+ navContext,
159
+ navParams,
160
+ });
161
+ });
162
+ return nodeDatas;
163
+ }
164
+ return [];
165
+ }
166
+ /**
167
+ * 获取代码表节点数据
168
+ *
169
+ * @author tony001
170
+ * @date 2023-12-11 18:12:35
171
+ * @protected
172
+ * @param {IDETreeCodeListNode} nodeModel
173
+ * @param {(IDETreeNodeRS | undefined)} nodeRS
174
+ * @param {(IGanttNodeData | undefined)} parentNodeData
175
+ * @param {TreeFetchOpts} opts
176
+ * @return {*} {Promise<IGanttNodeData[]>}
177
+ */
178
+ async getCodeListGanttNodeDatas(nodeModel, nodeRS, parentNodeData, opts) {
179
+ // 处理查询参数,没有关系的时候不处理参数了
180
+ const { context, params, navContext, navParams } = nodeRS
181
+ ? this.getNodeRSFilterParams(nodeRS, parentNodeData, opts)
182
+ : {
183
+ context: opts.context,
184
+ params: opts.params,
185
+ navContext: {},
186
+ navParams: {},
187
+ };
188
+ // 请求实体数据
189
+ const items = await this.app.codeList.get(nodeModel.codeListId, context, params);
190
+ if (items.length) {
191
+ const nodeDatas = items.map(item => {
192
+ return new GanttCodeListNodeData(this.model, nodeModel, parentNodeData, {
193
+ data: item,
194
+ leaf: !!opts.leaf,
195
+ navContext,
196
+ navParams,
197
+ });
198
+ });
199
+ return nodeDatas;
200
+ }
201
+ return [];
202
+ }
12
203
  }