@ibiz-template/runtime 0.6.0 → 0.6.1-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/index.esm.js +343 -83
  2. package/dist/index.system.min.js +1 -1
  3. package/out/command/app/open-app-view/open-app-view.d.ts +1 -1
  4. package/out/command/app/open-app-view/open-app-view.d.ts.map +1 -1
  5. package/out/command/app/open-app-view/open-app-view.js +3 -3
  6. package/out/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.d.ts +2 -1
  7. package/out/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.d.ts.map +1 -1
  8. package/out/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.js +1 -0
  9. package/out/controller/control/app-menu/app-menu.controller.d.ts +1 -1
  10. package/out/controller/control/app-menu/app-menu.controller.d.ts.map +1 -1
  11. package/out/controller/control/app-menu/app-menu.controller.js +2 -2
  12. package/out/controller/control/gantt/gantt.controller.d.ts +50 -14
  13. package/out/controller/control/gantt/gantt.controller.d.ts.map +1 -1
  14. package/out/controller/control/gantt/gantt.controller.js +285 -41
  15. package/out/controller/control/gantt/gantt.service.d.ts +7 -9
  16. package/out/controller/control/gantt/gantt.service.d.ts.map +1 -1
  17. package/out/controller/control/gantt/gantt.service.js +29 -9
  18. package/out/controller/control/tab-exp-panel/tab-exp-panel.controller.d.ts.map +1 -1
  19. package/out/controller/control/tab-exp-panel/tab-exp-panel.controller.js +1 -0
  20. package/out/controller/notification/internal-message.controller.d.ts.map +1 -1
  21. package/out/controller/notification/internal-message.controller.js +2 -3
  22. package/out/engine/view-base.engine.d.ts.map +1 -1
  23. package/out/engine/view-base.engine.js +8 -3
  24. package/out/interface/controller/common/i-nav-view-msg/i-nav-view-msg.d.ts +9 -0
  25. package/out/interface/controller/common/i-nav-view-msg/i-nav-view-msg.d.ts.map +1 -1
  26. package/out/interface/controller/event/control/i-gantt.event.d.ts +10 -0
  27. package/out/interface/controller/event/control/i-gantt.event.d.ts.map +1 -1
  28. package/out/interface/util/i-open-view-util/i-open-view-util.d.ts +1 -1
  29. package/out/interface/util/i-open-view-util/i-open-view-util.d.ts.map +1 -1
  30. package/out/service/vo/gantt-node-data/gantt-node-data-util.js +1 -1
  31. package/package.json +2 -2
  32. package/src/command/app/open-app-view/open-app-view.ts +3 -2
  33. package/src/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.ts +1 -0
  34. package/src/controller/control/app-menu/app-menu.controller.ts +2 -0
  35. package/src/controller/control/gantt/gantt.controller.ts +354 -53
  36. package/src/controller/control/gantt/gantt.service.ts +38 -17
  37. package/src/controller/control/tab-exp-panel/tab-exp-panel.controller.ts +1 -0
  38. package/src/controller/notification/internal-message.controller.ts +2 -3
  39. package/src/engine/view-base.engine.ts +10 -3
  40. package/src/interface/controller/common/i-nav-view-msg/i-nav-view-msg.ts +10 -0
  41. package/src/interface/controller/event/control/i-gantt.event.ts +8 -1
  42. package/src/interface/util/i-open-view-util/i-open-view-util.ts +1 -0
  43. package/src/service/vo/gantt-node-data/gantt-node-data-util.ts +1 -1
@@ -235,6 +235,7 @@ export class TabExpPanelController extends ControlController {
235
235
  params,
236
236
  viewId: tabViewPanel.embeddedAppDEViewId,
237
237
  isCache: this.isCache,
238
+ modalOptions: { replace: true },
238
239
  };
239
240
  }
240
241
  }
@@ -1 +1 @@
1
- {"version":3,"file":"internal-message.controller.d.ts","sourceRoot":"","sources":["../../../src/controller/notification/internal-message.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAQvD,qBAAa,yBAA0B,YAAW,0BAA0B;IAC1E,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAiB;IAE7D,KAAK,EAAE,MAAM,CAAK;IAElB,WAAW,EAAE,MAAM,CAAK;IAExB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAK;IAEjB,IAAI,EAAE,MAAM,CAAM;IAElB,QAAQ,EAAE,gBAAgB,EAAE,CAAM;IAElC,UAAU,UAAS;IAEnB,SAAS,CAAC,OAAO,yBAAgC;IAE3C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IASzC;;;;;OAKG;IACH,gBAAgB,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI;cAUrB,KAAK,CAAC,QAAQ,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C/D;;;;;OAKG;IACH,SAAS,CAAC,UAAU,IAAI,IAAI;IAkBtB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxD;;;;;;OAMG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAIjD"}
1
+ {"version":3,"file":"internal-message.controller.d.ts","sourceRoot":"","sources":["../../../src/controller/notification/internal-message.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAQvD,qBAAa,yBAA0B,YAAW,0BAA0B;IAC1E,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAiB;IAE7D,KAAK,EAAE,MAAM,CAAK;IAElB,WAAW,EAAE,MAAM,CAAK;IAExB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAK;IAEjB,IAAI,EAAE,MAAM,CAAM;IAElB,QAAQ,EAAE,gBAAgB,EAAE,CAAM;IAElC,UAAU,UAAS;IAEnB,SAAS,CAAC,OAAO,yBAAgC;IAE3C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IASzC;;;;;OAKG;IACH,gBAAgB,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI;cAUrB,KAAK,CAAC,QAAQ,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C/D;;;;;OAKG;IACH,SAAS,CAAC,UAAU,IAAI,IAAI;IAkBtB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxD;;;;;;OAMG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAIjD"}
@@ -134,10 +134,9 @@ export class InternalMessageController {
134
134
  if (!find) {
135
135
  return;
136
136
  }
137
- // todo 后台接口适配
138
137
  await this.service.markRead(message.id);
139
- // find.status = 'READ';
140
- // this.unreadCount -= 1;
138
+ find.status = 'READ';
139
+ this.unreadCount -= 1;
141
140
  this.evt.emit('unreadCountChange', this.unreadCount);
142
141
  this.evt.emit('dataChange');
143
142
  }
@@ -1 +1 @@
1
- {"version":3,"file":"view-base.engine.d.ts","sourceRoot":"","sources":["../../src/engine/view-base.engine.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,WAAW;IAmEpC,SAAS,CAAC,IAAI,EAAE,eAAe;IAlE3C;;;;;;;OAOG;IACH,SAAS,KAAK,OAAO,IAAI,kBAAkB,GAAG,SAAS,CAEtD;IAED;;;;;;;OAOG;IACH,SAAS,KAAK,WAAW,IAAI,kBAAkB,GAAG,SAAS,CAE1D;IAED;;;;;;;OAOG;IACH,SAAS,KAAK,YAAY,IAAI,kBAAkB,GAAG,SAAS,CAE3D;IAED;;;;;;;OAOG;IACH,SAAS,KAAK,aAAa,IAAI,kBAAkB,GAAG,SAAS,CAE5D;IAED;;;;;;;OAOG;IACH,SAAS,KAAK,eAAe,IAAI,0BAA0B,GAAG,SAAS,CAEtE;IAED;;;;;OAKG;gBACmB,IAAI,EAAE,eAAe;IAK3C;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,IAAI,IAAI;IAIhB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAMnC;;;;;;;OAOG;IACH,SAAS,CAAC,qBAAqB,IAAI,MAAM,EAAE;IA4B3C;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;IAqBnB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;IAOzE;;;;;OAKG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;IAI/B;;;;;OAKG;IACH,SAAS,CAAC,OAAO,IAAI,KAAK,EAAE;IAI5B;;;;;;;OAOG;IACH,SAAS,CAAC,qBAAqB,IAAI,OAAO;IAsB1C;;;;;;;;OAQG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAczC;;;;;;OAMG;IACH,SAAS,CAAC,qBAAqB,IAAI,OAAO;IAU1C;;;;;OAKG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBtC"}
1
+ {"version":3,"file":"view-base.engine.d.ts","sourceRoot":"","sources":["../../src/engine/view-base.engine.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,WAAW;IAmEpC,SAAS,CAAC,IAAI,EAAE,eAAe;IAlE3C;;;;;;;OAOG;IACH,SAAS,KAAK,OAAO,IAAI,kBAAkB,GAAG,SAAS,CAEtD;IAED;;;;;;;OAOG;IACH,SAAS,KAAK,WAAW,IAAI,kBAAkB,GAAG,SAAS,CAE1D;IAED;;;;;;;OAOG;IACH,SAAS,KAAK,YAAY,IAAI,kBAAkB,GAAG,SAAS,CAE3D;IAED;;;;;;;OAOG;IACH,SAAS,KAAK,aAAa,IAAI,kBAAkB,GAAG,SAAS,CAE5D;IAED;;;;;;;OAOG;IACH,SAAS,KAAK,eAAe,IAAI,0BAA0B,GAAG,SAAS,CAEtE;IAED;;;;;OAKG;gBACmB,IAAI,EAAE,eAAe;IAK3C;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,IAAI,IAAI;IAIhB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAMnC;;;;;;;OAOG;IACH,SAAS,CAAC,qBAAqB,IAAI,MAAM,EAAE;IAmC3C;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;IAqBnB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;IAOzE;;;;;OAKG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;IAI/B;;;;;OAKG;IACH,SAAS,CAAC,OAAO,IAAI,KAAK,EAAE;IAI5B;;;;;;;OAOG;IACH,SAAS,CAAC,qBAAqB,IAAI,OAAO;IAsB1C;;;;;;;;OAQG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAczC;;;;;;OAMG;IACH,SAAS,CAAC,qBAAqB,IAAI,OAAO;IAU1C;;;;;OAKG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBtC"}
@@ -116,9 +116,6 @@ export class ViewEngineBase {
116
116
  if (model.showCaptionBar === false) {
117
117
  names.push('view_captionbar');
118
118
  }
119
- if (!getControl(model, 'toolbar')) {
120
- names.push('view_toolbar', 'toolbar');
121
- }
122
119
  const toolBarList = ['lefttoolbar', 'righttoolbar', 'footertoolbar'];
123
120
  toolBarList.forEach(name => {
124
121
  if (!getControl(model, name)) {
@@ -132,6 +129,14 @@ export class ViewEngineBase {
132
129
  if (!this.calcViewFooterVisible()) {
133
130
  names.push('view_footer');
134
131
  }
132
+ if (!this.isExistAndInLayout('lefttoolbar') &&
133
+ !this.isExistAndInLayout('righttoolbar') &&
134
+ model.showCaptionBar === false) {
135
+ names.push('view_toolbar');
136
+ }
137
+ }
138
+ else if (!getControl(model, 'toolbar')) {
139
+ names.push('view_toolbar', 'toolbar');
135
140
  }
136
141
  return names;
137
142
  }
@@ -59,6 +59,15 @@ export interface INavViewMsg {
59
59
  * @memberof INavViewMsg
60
60
  */
61
61
  isCache?: boolean;
62
+ /**
63
+ * 视图打开参数
64
+ *
65
+ * @author zk
66
+ * @date 2024-02-06 02:02:15
67
+ * @type {boolean}
68
+ * @memberof INavViewMsg
69
+ */
70
+ modalOptions?: IData;
62
71
  /**
63
72
  * 是否404
64
73
  *
@@ -1 +1 @@
1
- {"version":3,"file":"i-nav-view-msg.d.ts","sourceRoot":"","sources":["../../../../../src/interface/controller/common/i-nav-view-msg/i-nav-view-msg.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,QAAQ,CAAC;IAEnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
1
+ {"version":3,"file":"i-nav-view-msg.d.ts","sourceRoot":"","sources":["../../../../../src/interface/controller/common/i-nav-view-msg/i-nav-view-msg.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,QAAQ,CAAC;IAEnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC;IAErB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
@@ -1,3 +1,5 @@
1
+ import { ITreeGridExRowState } from '../../state';
2
+ import { EventBase } from '../argument';
1
3
  import { ITreeGridExEvent } from './i-tree-grid-ex.event';
2
4
  /**
3
5
  * 甘特图事件
@@ -9,5 +11,13 @@ import { ITreeGridExEvent } from './i-tree-grid-ex.event';
9
11
  * @extends {IMDControlEvent}
10
12
  */
11
13
  export interface IGanttEvent extends ITreeGridExEvent {
14
+ onNewRow: {
15
+ event: {
16
+ row: ITreeGridExRowState;
17
+ } & EventBase;
18
+ emitArgs: {
19
+ row: ITreeGridExRowState;
20
+ };
21
+ };
12
22
  }
13
23
  //# sourceMappingURL=i-gantt.event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"i-gantt.event.d.ts","sourceRoot":"","sources":["../../../../../src/interface/controller/event/control/i-gantt.event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAY,SAAQ,gBAAgB;CAAG"}
1
+ {"version":3,"file":"i-gantt.event.d.ts","sourceRoot":"","sources":["../../../../../src/interface/controller/event/control/i-gantt.event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD,QAAQ,EAAE;QACR,KAAK,EAAE;YAAE,GAAG,EAAE,mBAAmB,CAAA;SAAE,GAAG,SAAS,CAAC;QAChD,QAAQ,EAAE;YAAE,GAAG,EAAE,mBAAmB,CAAA;SAAE,CAAC;KACxC,CAAC;CACH"}
@@ -28,7 +28,7 @@ export interface IOpenViewUtil {
28
28
  * @param {IParams} [params]
29
29
  * @return {*} {Promise<IModalData>}
30
30
  */
31
- root(appViewId: string, context: IContext, params?: IParams): Promise<IModalData>;
31
+ root(appViewId: string, context: IContext, params?: IParams, modalOptions?: IData): Promise<IModalData>;
32
32
  /**
33
33
  * 打开顶级视图(包含路由跳转后使用模态打开视图)
34
34
  *
@@ -1 +1 @@
1
- {"version":3,"file":"i-open-view-util.d.ts","sourceRoot":"","sources":["../../../../src/interface/util/i-open-view-util/i-open-view-util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;OAOG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAExC;;;;;;;;;OASG;IACH,IAAI,CACF,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;;;OASG;IACH,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;;;OASG;IACH,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;;;OASG;IACH,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;;;OASG;IACH,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;;;OASG;IACH,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC,CAAC;CACxB"}
1
+ {"version":3,"file":"i-open-view-util.d.ts","sourceRoot":"","sources":["../../../../src/interface/util/i-open-view-util/i-open-view-util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;OAOG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAExC;;;;;;;;;OASG;IACH,IAAI,CACF,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,EAChB,YAAY,CAAC,EAAE,KAAK,GACnB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;;;OASG;IACH,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;;;OASG;IACH,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;;;OASG;IACH,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;;;OASG;IACH,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;;;OASG;IACH,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC,CAAC;CACxB"}
@@ -13,7 +13,7 @@ export const calcDataItemValue = (fieldCodeName, nodeModel, data = {}) => {
13
13
  return nodeDataItem.detreeColumnId === fieldCodeName;
14
14
  });
15
15
  if (targetTreeNodeDataItem && targetTreeNodeDataItem.appDEFieldId) {
16
- result = data[targetTreeNodeDataItem.appDEFieldId];
16
+ result = data[targetTreeNodeDataItem.appDEFieldId.toLowerCase()];
17
17
  }
18
18
  return result;
19
19
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/runtime",
3
- "version": "0.6.0",
3
+ "version": "0.6.1-dev.0",
4
4
  "description": "控制器包",
5
5
  "type": "module",
6
6
  "main": "out/index.js",
@@ -67,5 +67,5 @@
67
67
  "qx-util": "^0.4.8",
68
68
  "ramda": "^0.29.0"
69
69
  },
70
- "gitHead": "fde8aab467f41640a2d9a20bd0237a3d956b69ae"
70
+ "gitHead": "f8ba90e9f1894aeb26b810945b14d2875be51a97"
71
71
  }
@@ -85,7 +85,7 @@ export class OpenAppViewCommand {
85
85
  this.openIndexViewTab(appView, context, params);
86
86
  return { ok: true };
87
87
  }
88
- return this.openIndexViewTab(appView, context, params);
88
+ return this.openIndexViewTab(appView, context, params, opts);
89
89
  case 'INDEXVIEWTAB_POPUPMODAL':
90
90
  return this.openIndexViewTabByModal(appView, context, params);
91
91
  case 'POPUP':
@@ -122,8 +122,9 @@ export class OpenAppViewCommand {
122
122
  appView: IViewConfig,
123
123
  context: IContext,
124
124
  params: IParams = {},
125
+ modalOptions: IData = {},
125
126
  ): Promise<IModalData> {
126
- return ibiz.openView.root(appView.id, context, params);
127
+ return ibiz.openView.root(appView.id, context, params, modalOptions);
127
128
  }
128
129
 
129
130
  /**
@@ -2,4 +2,5 @@
2
2
  export enum TreeGridExNotifyState {
3
3
  LOAD = 'LOAD',
4
4
  SAVE = 'SAVE',
5
+ DRAFT = 'DRAFT',
5
6
  }
@@ -110,6 +110,7 @@ export class AppMenuController
110
110
  id: string,
111
111
  event?: MouseEvent,
112
112
  useDepth: boolean = true,
113
+ opts: IData = {},
113
114
  ): Promise<void> {
114
115
  const menuItem = findRecursiveChild(this.model, id, {
115
116
  compareField: 'id',
@@ -147,6 +148,7 @@ export class AppMenuController
147
148
  menuItem.appFuncId,
148
149
  tempContext,
149
150
  this.params,
151
+ opts,
150
152
  );
151
153
  }
152
154
 
@@ -1,17 +1,34 @@
1
1
  /* eslint-disable no-param-reassign */
2
2
  /* eslint-disable no-prototype-builtins */
3
3
  /* eslint-disable @typescript-eslint/no-unused-vars */
4
- import { IDEGantt, IDETreeNode } from '@ibiz/model-core';
4
+ import {
5
+ IDEGantt,
6
+ IDETreeDataSetNode,
7
+ IDETreeNode,
8
+ IDETreeNodeRS,
9
+ } from '@ibiz/model-core';
10
+ import { awaitTimeout, RuntimeError } from '@ibiz-template/core';
5
11
  import {
6
12
  IGanttController,
7
13
  IGanttEvent,
8
14
  IGanttNodeData,
9
15
  IGanttState,
10
16
  IGanttStyle,
17
+ ITreeNodeData,
18
+ MDCtrlLoadParams,
19
+ MDCtrlRemoveParams,
11
20
  } from '../../../interface';
12
21
  import { GanttService } from './gantt.service';
13
- import { TreeGridExController } from '../tree-grid-ex';
14
- import { calcDeCodeNameById } from '../../../model';
22
+ import { TreeGridExController, TreeGridExRowState } from '../tree-grid-ex';
23
+ import { GanttDataSetNodeData, Srfuf } from '../../../service';
24
+ import {
25
+ calcDeCodeNameById,
26
+ getChildNodeRSs,
27
+ getRootNode,
28
+ } from '../../../model';
29
+ import { TreeGridExNotifyState } from '../../constant';
30
+ import { handleAllSettled } from '../../../utils';
31
+ import { ControllerEvent, isValueChange } from '../../utils';
15
32
 
16
33
  /**
17
34
  * 甘特图控制器
@@ -29,6 +46,10 @@ export class GanttController
29
46
  {
30
47
  declare service: GanttService;
31
48
 
49
+ protected get _evt(): ControllerEvent<IGanttEvent> {
50
+ return this.evt;
51
+ }
52
+
32
53
  /**
33
54
  * 初始化状态
34
55
  *
@@ -73,69 +94,349 @@ export class GanttController
73
94
  }
74
95
 
75
96
  /**
76
- * 转化节点数据项
77
- * vo -> do
78
- * @param {IDETreeNode} nodeModel 节点模型
79
- * @param {IData} data 数据
97
+ * 设置行属性的值
98
+ *
99
+ * @param {TreeGridExRowState} row
100
+ * @param {string} name
101
+ * @param {unknown} value
102
+ * @return {*} {Promise<void>}
80
103
  * @memberof GanttController
81
104
  */
82
- transformNodeDataItem(nodeModel: IDETreeNode, data: IData): IData {
83
- const dataItem: IData = {};
84
- nodeModel.detreeNodeDataItems?.forEach(item => {
85
- if (
86
- item.id &&
87
- item.appDEFieldId &&
88
- data.hasOwnProperty(item.id.toLowerCase())
89
- ) {
90
- Object.assign(dataItem, {
91
- [item.appDEFieldId.toLowerCase()]: data[item.id.toLowerCase()],
92
- });
93
- }
94
- });
95
- return dataItem;
105
+ async setRowValue(
106
+ row: TreeGridExRowState,
107
+ name: string,
108
+ value: unknown,
109
+ ): Promise<void> {
110
+ const { beginDataItemName, endDataItemName } = this.model;
111
+ if (
112
+ Object.prototype.hasOwnProperty.call(row.data, name) &&
113
+ !isValueChange((row.data as IData)[name], value)
114
+ ) {
115
+ // `表格行数据里没有属性${name}或者${name}的值未发生改变`
116
+ return;
117
+ }
118
+ // 改变值
119
+ (row.data as IData)[name] = value;
120
+ if (name === beginDataItemName) {
121
+ (row.data as IGanttNodeData)._beginDataItemValue = value as string;
122
+ } else if (name === endDataItemName) {
123
+ (row.data as IGanttNodeData)._endDataItemValue = value as string;
124
+ }
125
+ row.modified = true;
126
+ row.processing = true;
127
+
128
+ try {
129
+ await this.dataChangeNotify(row, [name]);
130
+ } finally {
131
+ row.processing = false;
132
+ }
96
133
  }
97
134
 
98
135
  /**
99
- * 更新节点数据
136
+ * 修改节点时间
100
137
  *
101
- * @param {(IGanttNodeData | IData)} nodeData 节点数据
102
- * @param {IData} data 更新数据
103
- * @param {boolean} [isTransformData=false] 是否转化数据项
104
- * @return {*}
138
+ * @param {IGanttNodeData} nodeData
105
139
  * @memberof GanttController
106
140
  */
107
- async updateNodeData(
108
- nodeData: IGanttNodeData | IData,
109
- data: IData,
110
- isTransformData: boolean = false,
141
+ async modifyNodeTime(
142
+ nodeData: IGanttNodeData,
143
+ { begin, end }: { begin?: string; end?: string },
111
144
  ): Promise<void> {
112
- const key = nodeData.srfkey ? 'srfkey' : '_id';
113
- const currentNode = this.state.items.find(
114
- item => item[key] === nodeData[key],
115
- );
116
- if (!currentNode || !currentNode.srfkey) {
117
- ibiz.log.error('找不到对应的动态实体树节点数据', nodeData);
145
+ if (nodeData._nodeType !== 'DE') {
146
+ throw new RuntimeError('不是实体甘特节点数据');
147
+ }
148
+ const rowState = this.getRowState(nodeData._id);
149
+ if (!rowState) {
150
+ throw new RuntimeError('行数据不存在');
151
+ }
152
+ const { beginDataItemName, endDataItemName } = this.model;
153
+ this.setRowValue(rowState, beginDataItemName!, begin);
154
+ this.setRowValue(rowState, endDataItemName!, end);
155
+ await this.save(rowState.data);
156
+ }
157
+
158
+ /**
159
+ * 保存
160
+ *
161
+ * @param {ITreeNodeData} nodeData
162
+ * @return {*} {Promise<void>}
163
+ * @memberof GanttController
164
+ */
165
+ async save(nodeData: ITreeNodeData): Promise<void> {
166
+ if (this.state.isSimple) {
167
+ ibiz.log.debug('简单模式,不保存');
118
168
  return;
119
169
  }
120
- const nodeModel = this.getNodeModel(currentNode._nodeId);
121
- if (nodeModel) {
122
- const newData = isTransformData
123
- ? this.transformNodeDataItem(nodeModel, data)
124
- : data;
125
- if (Object.keys(newData).length > 0) {
126
- const deName = calcDeCodeNameById(nodeModel.appDataEntityId!);
127
- const tempContext = Object.assign(this.context.clone(), {
128
- [deName]: currentNode.srfkey,
170
+
171
+ if (nodeData._nodeType !== 'DE') {
172
+ throw new RuntimeError('非实体节点数据不能保存');
173
+ }
174
+
175
+ const rowState = this.state.rows[nodeData._uuid];
176
+ if (!rowState) {
177
+ throw new RuntimeError('行数据不存在');
178
+ }
179
+
180
+ if (!rowState.modified) {
181
+ ibiz.log.debug('值没有发生改变');
182
+ return;
183
+ }
184
+
185
+ // 如果数据正在处理中,则延迟保存
186
+ if (rowState.processing) {
187
+ await awaitTimeout(500, this.save.bind(this), [nodeData]);
188
+ return;
189
+ }
190
+
191
+ const nodeModel = this.getNodeModel(nodeData._nodeId)!;
192
+ const { appDataEntityId } = nodeModel as IDETreeDataSetNode;
193
+ const isCreate = nodeData._deData!.srfuf === Srfuf.CREATE;
194
+
195
+ if (isCreate) {
196
+ return;
197
+ }
198
+
199
+ // 处理接口
200
+ const deName = calcDeCodeNameById(appDataEntityId!);
201
+ const tempContext = this.context.clone();
202
+ tempContext[deName] = nodeData._deData!.srfkey;
203
+
204
+ const app = ibiz.hub.getApp(this.context.srfappid);
205
+
206
+ let res;
207
+
208
+ try {
209
+ res = await app.deService.exec(
210
+ appDataEntityId!,
211
+ isCreate ? 'create' : 'update',
212
+ tempContext,
213
+ nodeData._deData,
214
+ );
215
+ } catch (error) {
216
+ await this._evt.emit('onSaveError', undefined);
217
+ this.actionNotification(`${isCreate ? 'CREATE' : 'UPDATE'}ERROR`, {
218
+ error: error as Error,
219
+ data: rowState.data,
220
+ });
221
+ throw error;
222
+ }
223
+ // 后续处理
224
+ rowState.data._deData = res.data;
225
+ rowState.modified = false;
226
+
227
+ this.gridStateNotify(rowState, TreeGridExNotifyState.SAVE);
228
+ await this._evt.emit('onSaveSuccess', undefined);
229
+ }
230
+
231
+ /**
232
+ * 删除
233
+ *
234
+ * @param {MDCtrlRemoveParams} [args]
235
+ * @return {*} {Promise<void>}
236
+ * @memberof GanttController
237
+ */
238
+ async remove(args?: MDCtrlRemoveParams): Promise<void> {
239
+ const { context, params, data } = this.handlerAbilityParams(args);
240
+ if (!data?.length) {
241
+ throw new RuntimeError('未选中数据');
242
+ }
243
+
244
+ // 删除确认提示
245
+ if (args?.silent !== true) {
246
+ const del = await ibiz.confirm.error({
247
+ title: '数据删除',
248
+ desc: '确认删除数据?',
249
+ });
250
+ if (!del) {
251
+ return;
252
+ }
253
+ }
254
+
255
+ await this._evt.emit('onBeforeRemove', undefined);
256
+ await this.startLoading();
257
+ let needRefresh = false;
258
+ let refreshNode!: IGanttNodeData;
259
+ try {
260
+ const app = ibiz.hub.getApp(this.context.srfappid);
261
+ await handleAllSettled(
262
+ (data as IGanttNodeData[]).map(async item => {
263
+ // 新建未保存的数据直接走后续删除处理逻辑
264
+ if (item._nodeType === 'DE') {
265
+ const tempContext = context.clone();
266
+ const nodeModel = this.getNodeModel(item._nodeId);
267
+ // 新建未保存的数据直接走后续删除处理逻辑
268
+ if (nodeModel && item._deData!.srfuf !== Srfuf.CREATE) {
269
+ const { appDataEntityId } = nodeModel as IDETreeDataSetNode;
270
+ const deName = calcDeCodeNameById(appDataEntityId!);
271
+ tempContext[deName] = item.srfkey;
272
+ // 删除后台的数据
273
+ await app.deService.exec(
274
+ appDataEntityId!,
275
+ 'remove',
276
+ tempContext,
277
+ params,
278
+ );
279
+ if (refreshNode) {
280
+ refreshNode = item;
281
+ }
282
+ needRefresh = true;
283
+ }
284
+ this.afterRemove(item as GanttDataSetNodeData);
285
+ }
286
+ }),
287
+ );
288
+
289
+ if (args?.silent !== true) {
290
+ this.actionNotification('REMOVESUCCESS', {
291
+ data,
292
+ default: `数据[${data
293
+ .map(item => item.srfmajortext)
294
+ .join('、')}]删除成功!`,
129
295
  });
130
- const response = await this.service.execDeService(
131
- nodeModel.appDataEntityId!,
132
- 'update',
133
- tempContext,
134
- newData,
135
- );
136
- if (response.status === 200) {
137
- this.refreshNodeChildren(nodeData, true);
296
+ }
297
+
298
+ // 刷新数据,补全这一页缺少的数据
299
+ if (needRefresh && !args?.notRefresh) {
300
+ await this.refreshNodeChildren(refreshNode, true);
301
+ }
302
+ } catch (error) {
303
+ await this._evt.emit('onRemoveError', undefined);
304
+ this.actionNotification('REMOVEERROR', {
305
+ error: error as Error,
306
+ data,
307
+ });
308
+ throw error;
309
+ } finally {
310
+ await this.endLoading();
311
+ }
312
+ this.state.selectedData = [];
313
+
314
+ await this._evt.emit('onRemoveSuccess', undefined);
315
+ }
316
+
317
+ /**
318
+ * 后台删除结束后界面删除逻辑
319
+ *
320
+ * @param {GanttDataSetNodeData} data
321
+ * @memberof GanttController
322
+ */
323
+ afterRemove(data: GanttDataSetNodeData): void {
324
+ // 删除 items 里的数据
325
+ const index = this.state.items.findIndex(item => item._uuid === data._uuid);
326
+ if (index !== -1) {
327
+ this.state.items.splice(index, 1);
328
+ }
329
+ // 删除rows里面的数据
330
+ if (this.state.rows[data._uuid]) {
331
+ delete this.state.rows[data._uuid];
332
+ }
333
+
334
+ // 如果是新建数据 从父中删除该项子数据
335
+ if (data._deData.srfuf === Srfuf.CREATE && data._parent) {
336
+ const parentNodeData = this.getNodeData(
337
+ data._parent._id,
338
+ ) as IGanttNodeData;
339
+ const childIndex = parentNodeData._children!.findIndex(
340
+ child => child._uuid === data._uuid,
341
+ );
342
+ if (childIndex !== -1) {
343
+ parentNodeData._children?.splice(childIndex, 1);
344
+ }
345
+ }
346
+ }
347
+
348
+ /**
349
+ * 新建行
350
+ *
351
+ * @param {MDCtrlLoadParams} [args={}]
352
+ * @return {*} {Promise<void>}
353
+ * @memberof GanttController
354
+ */
355
+ async newRow(args: MDCtrlLoadParams = {}): Promise<void> {
356
+ const { data } = args;
357
+ const { editShowMode } = ibiz.config.grid;
358
+
359
+ if (editShowMode === 'row') {
360
+ const editingRow = Object.values(this.state.rows).find(
361
+ item => item.showRowEdit,
362
+ );
363
+ if (editingRow) {
364
+ throw new RuntimeError('请先完成当前行编辑中的行的操作');
365
+ }
366
+ }
367
+
368
+ let parentModel: IDETreeNode | undefined;
369
+ let parentNodeData: IGanttNodeData;
370
+ if (data) {
371
+ const item = (Array.isArray(data) ? data[0] : data) as IGanttNodeData;
372
+ parentNodeData = this.getNodeData(item._id) as IGanttNodeData;
373
+ parentModel = this.getNodeModel(parentNodeData._nodeId);
374
+ } else {
375
+ parentNodeData = this.state.rootNodes[0] as IGanttNodeData;
376
+ parentModel = getRootNode(this.model);
377
+ }
378
+
379
+ if (parentModel) {
380
+ const nodeRSs = getChildNodeRSs(this.model, {
381
+ parentId: parentModel.id,
382
+ hasQuery: false,
383
+ });
384
+
385
+ let nodeRS: IDETreeNodeRS | undefined;
386
+ let nodeModel: IDETreeDataSetNode | undefined;
387
+
388
+ nodeRSs.forEach(_nodeRS => {
389
+ const childNode = this.getNodeModel(_nodeRS.childDETreeNodeId!);
390
+ if (childNode?.treeNodeType === 'DE' && childNode.appDataEntityId) {
391
+ nodeRS = _nodeRS;
392
+ nodeModel = childNode;
393
+ }
394
+ });
395
+
396
+ if (nodeModel) {
397
+ let draftData;
398
+ try {
399
+ draftData = await this.service.getNodeDraft(
400
+ nodeModel,
401
+ nodeRS,
402
+ parentNodeData,
403
+ {
404
+ hasQuery: false,
405
+ context: this.context.clone(),
406
+ params: this.params,
407
+ },
408
+ );
409
+ } catch (error) {
410
+ this.actionNotification('GETDRAFTERROR', {
411
+ error: error as Error,
412
+ });
413
+ throw error;
414
+ }
415
+
416
+ // 填充新建默认值
417
+ const defaultVal = this.calcDefaultValue(draftData, true);
418
+ Object.assign(draftData, defaultVal);
419
+
420
+ // 将子数据挂载到父数据下
421
+ const parentRow = this.getRowState(parentNodeData._id);
422
+
423
+ if (parentNodeData._children?.length) {
424
+ parentNodeData._children.push(draftData);
425
+ } else {
426
+ parentNodeData._children = [draftData];
427
+ }
428
+
429
+ this.state.items.push(draftData);
430
+ const rowState = new TreeGridExRowState(draftData, this);
431
+ this.state.rows[draftData._uuid] = rowState;
432
+ this.gridStateNotify(rowState, TreeGridExNotifyState.DRAFT);
433
+
434
+ if (editShowMode === 'row') {
435
+ this.switchRowEdit(rowState, true);
138
436
  }
437
+
438
+ this._evt.emit('onNewRow', { row: parentRow! });
439
+ this.actionNotification('GETDRAFTSUCCESS', { data: draftData });
139
440
  }
140
441
  }
141
442
  }