@ibiz-template/runtime 0.6.0-alpha.4 → 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 (56) hide show
  1. package/dist/index.esm.js +358 -84
  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/controller/state/control/i-tree.state.d.ts +7 -0
  29. package/out/interface/controller/state/control/i-tree.state.d.ts.map +1 -1
  30. package/out/interface/controller/state/view/i-pickup-tree-view.state.d.ts +7 -0
  31. package/out/interface/controller/state/view/i-pickup-tree-view.state.d.ts.map +1 -1
  32. package/out/interface/util/i-open-view-util/i-open-view-util.d.ts +1 -1
  33. package/out/interface/util/i-open-view-util/i-open-view-util.d.ts.map +1 -1
  34. package/out/service/vo/gantt-node-data/gantt-node-data-util.js +1 -1
  35. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
  36. package/out/service/vo/tree-node-data/tree-data-set-node-data.js +8 -1
  37. package/out/service/vo/tree-node-data/tree-node-data.d.ts +1 -0
  38. package/out/service/vo/tree-node-data/tree-node-data.d.ts.map +1 -1
  39. package/out/service/vo/tree-node-data/tree-node-data.js +7 -0
  40. package/package.json +4 -4
  41. package/src/command/app/open-app-view/open-app-view.ts +3 -2
  42. package/src/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.ts +1 -0
  43. package/src/controller/control/app-menu/app-menu.controller.ts +2 -0
  44. package/src/controller/control/gantt/gantt.controller.ts +354 -53
  45. package/src/controller/control/gantt/gantt.service.ts +38 -17
  46. package/src/controller/control/tab-exp-panel/tab-exp-panel.controller.ts +1 -0
  47. package/src/controller/notification/internal-message.controller.ts +2 -3
  48. package/src/engine/view-base.engine.ts +10 -3
  49. package/src/interface/controller/common/i-nav-view-msg/i-nav-view-msg.ts +10 -0
  50. package/src/interface/controller/event/control/i-gantt.event.ts +8 -1
  51. package/src/interface/controller/state/control/i-tree.state.ts +8 -0
  52. package/src/interface/controller/state/view/i-pickup-tree-view.state.ts +8 -0
  53. package/src/interface/util/i-open-view-util/i-open-view-util.ts +1 -0
  54. package/src/service/vo/gantt-node-data/gantt-node-data-util.ts +1 -1
  55. package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +8 -1
  56. package/src/service/vo/tree-node-data/tree-node-data.ts +10 -0
package/dist/index.esm.js CHANGED
@@ -11620,6 +11620,13 @@ var TreeNodeData = class {
11620
11620
  this._params = { ...opts.navParams };
11621
11621
  }
11622
11622
  this._nodeId = model.id;
11623
+ Object.defineProperty(this, "srfnodeid", {
11624
+ get() {
11625
+ return this._id;
11626
+ },
11627
+ enumerable: true,
11628
+ configurable: true
11629
+ });
11623
11630
  }
11624
11631
  /**
11625
11632
  * 计算节点图标
@@ -11677,7 +11684,14 @@ var TreeCodeListNodeData = class extends TreeNodeData {
11677
11684
  // src/service/vo/tree-node-data/tree-data-set-node-data.ts
11678
11685
  import { updateKeyDefine } from "@ibiz-template/core";
11679
11686
  import { clone as clone16, isNil as isNil14 } from "ramda";
11680
- var CloneExcludeKeys = ["_id", "_value", "_text", "_deData", "clone"];
11687
+ var CloneExcludeKeys = [
11688
+ "_id",
11689
+ "srfnodeid",
11690
+ "_value",
11691
+ "_text",
11692
+ "_deData",
11693
+ "clone"
11694
+ ];
11681
11695
  var TreeDataSetNodeData = class _TreeDataSetNodeData extends TreeNodeData {
11682
11696
  constructor(model, parentNodeData, opts) {
11683
11697
  var _a, _b;
@@ -12253,7 +12267,7 @@ var calcDataItemValue = (fieldCodeName, nodeModel, data = {}) => {
12253
12267
  return nodeDataItem.detreeColumnId === fieldCodeName;
12254
12268
  });
12255
12269
  if (targetTreeNodeDataItem && targetTreeNodeDataItem.appDEFieldId) {
12256
- result = data[targetTreeNodeDataItem.appDEFieldId];
12270
+ result = data[targetTreeNodeDataItem.appDEFieldId.toLowerCase()];
12257
12271
  }
12258
12272
  return result;
12259
12273
  };
@@ -12675,7 +12689,7 @@ var _OpenAppViewCommand = class _OpenAppViewCommand {
12675
12689
  this.openIndexViewTab(appView, context, params);
12676
12690
  return { ok: true };
12677
12691
  }
12678
- return this.openIndexViewTab(appView, context, params);
12692
+ return this.openIndexViewTab(appView, context, params, opts);
12679
12693
  case "INDEXVIEWTAB_POPUPMODAL":
12680
12694
  return this.openIndexViewTabByModal(appView, context, params);
12681
12695
  case "POPUP":
@@ -12707,8 +12721,8 @@ var _OpenAppViewCommand = class _OpenAppViewCommand {
12707
12721
  * @param {IContext} [context]
12708
12722
  * @param {IParams} [params={}]
12709
12723
  */
12710
- openIndexViewTab(appView, context, params = {}) {
12711
- return ibiz.openView.root(appView.id, context, params);
12724
+ openIndexViewTab(appView, context, params = {}, modalOptions = {}) {
12725
+ return ibiz.openView.root(appView.id, context, params, modalOptions);
12712
12726
  }
12713
12727
  /**
12714
12728
  * 模态路由打开视图,路由拼接于当前视图路由后。再由特殊解析呈现
@@ -12927,7 +12941,7 @@ function installCommand() {
12927
12941
  }
12928
12942
 
12929
12943
  // src/app-hub.ts
12930
- import { RuntimeError as RuntimeError65 } from "@ibiz-template/core";
12944
+ import { RuntimeError as RuntimeError66 } from "@ibiz-template/core";
12931
12945
 
12932
12946
  // src/application.ts
12933
12947
  import { Net, getToken } from "@ibiz-template/core";
@@ -13259,6 +13273,7 @@ var PanelNotifyState = /* @__PURE__ */ ((PanelNotifyState2) => {
13259
13273
  var TreeGridExNotifyState = /* @__PURE__ */ ((TreeGridExNotifyState2) => {
13260
13274
  TreeGridExNotifyState2["LOAD"] = "LOAD";
13261
13275
  TreeGridExNotifyState2["SAVE"] = "SAVE";
13276
+ TreeGridExNotifyState2["DRAFT"] = "DRAFT";
13262
13277
  return TreeGridExNotifyState2;
13263
13278
  })(TreeGridExNotifyState || {});
13264
13279
 
@@ -16145,7 +16160,7 @@ var AppMenuController = class extends ControlController {
16145
16160
  * @param {string} id
16146
16161
  * @return {*} {Promise<void>}
16147
16162
  */
16148
- async onClickMenuItem(id, event, useDepth = true) {
16163
+ async onClickMenuItem(id, event, useDepth = true, opts = {}) {
16149
16164
  const menuItem = findRecursiveChild(this.model, id, {
16150
16165
  compareField: "id",
16151
16166
  childrenFields: ["appMenuItems"]
@@ -16175,7 +16190,8 @@ var AppMenuController = class extends ControlController {
16175
16190
  AppFuncCommand.TAG,
16176
16191
  menuItem.appFuncId,
16177
16192
  tempContext,
16178
- this.params
16193
+ this.params,
16194
+ opts
16179
16195
  );
16180
16196
  }
16181
16197
  /**
@@ -29083,7 +29099,8 @@ var TabExpPanelController = class extends ControlController {
29083
29099
  context,
29084
29100
  params,
29085
29101
  viewId: tabViewPanel.embeddedAppDEViewId,
29086
- isCache: this.isCache
29102
+ isCache: this.isCache,
29103
+ modalOptions: { replace: true }
29087
29104
  };
29088
29105
  }
29089
29106
  };
@@ -33155,27 +33172,47 @@ var ReportPanelController = class extends ControlController {
33155
33172
  }
33156
33173
  };
33157
33174
 
33175
+ // src/controller/control/gantt/gantt.controller.ts
33176
+ import { awaitTimeout as awaitTimeout4, RuntimeError as RuntimeError65 } from "@ibiz-template/core";
33177
+
33158
33178
  // src/controller/control/gantt/gantt.service.ts
33159
33179
  import { ModelError as ModelError31 } from "@ibiz-template/core";
33160
33180
  var GanttService = class extends TreeService {
33161
33181
  /**
33162
- * 执行实体服务
33182
+ * 获取节点草稿
33163
33183
  *
33164
- * @protected
33165
- * @param {string} appDataEntityId 实体标识
33166
- * @param {string} actionName 行为标识
33167
- * @param {IContext} context 上下文
33168
- * @param {IParams} params 参数
33169
- * @return {*} {Promise<IHttpResponse<IData>>}
33184
+ * @param {IDETreeDataSetNode} nodeModel
33185
+ * @param {(IDETreeNodeRS | undefined)} nodeRS
33186
+ * @param {(IGanttNodeData | undefined)} parentNodeData
33187
+ * @param {TreeFetchOpts} opts
33188
+ * @return {*} {Promise<IGanttNodeData>}
33170
33189
  * @memberof GanttService
33171
33190
  */
33172
- execDeService(appDataEntityId, actionName, context, params) {
33173
- return this.app.deService.exec(
33191
+ async getNodeDraft(nodeModel, nodeRS, parentNodeData, opts) {
33192
+ var _a;
33193
+ const { appDataEntityId } = nodeModel;
33194
+ const { context, params, navContext, navParams } = nodeRS ? this.getNodeRSFilterParams(nodeRS, parentNodeData, opts) : {
33195
+ context: opts.context,
33196
+ params: opts.params,
33197
+ navContext: {},
33198
+ navParams: {}
33199
+ };
33200
+ const response = await this.app.deService.exec(
33174
33201
  appDataEntityId,
33175
- actionName,
33202
+ "getdraft",
33176
33203
  context,
33177
33204
  params
33178
33205
  );
33206
+ const { data } = response;
33207
+ if (((_a = nodeRS == null ? void 0 : nodeRS.parentDER1N) == null ? void 0 : _a.pickupDEFName) && parentNodeData) {
33208
+ data[nodeRS.parentDER1N.pickupDEFName] = parentNodeData._value;
33209
+ }
33210
+ return new GanttDataSetNodeData(this.model, nodeModel, parentNodeData, {
33211
+ data: response.data,
33212
+ leaf: true,
33213
+ navContext,
33214
+ navParams
33215
+ });
33179
33216
  }
33180
33217
  /**
33181
33218
  * 获取子节点数据
@@ -33409,6 +33446,9 @@ var GanttService = class extends TreeService {
33409
33446
 
33410
33447
  // src/controller/control/gantt/gantt.controller.ts
33411
33448
  var GanttController = class extends TreeGridExController {
33449
+ get _evt() {
33450
+ return this.evt;
33451
+ }
33412
33452
  /**
33413
33453
  * 初始化状态
33414
33454
  *
@@ -33450,59 +33490,289 @@ var GanttController = class extends TreeGridExController {
33450
33490
  this.state.ganttStyle = style;
33451
33491
  }
33452
33492
  /**
33453
- * 转化节点数据项
33454
- * vo -> do
33455
- * @param {IDETreeNode} nodeModel 节点模型
33456
- * @param {IData} data 数据
33493
+ * 设置行属性的值
33494
+ *
33495
+ * @param {TreeGridExRowState} row
33496
+ * @param {string} name
33497
+ * @param {unknown} value
33498
+ * @return {*} {Promise<void>}
33457
33499
  * @memberof GanttController
33458
33500
  */
33459
- transformNodeDataItem(nodeModel, data) {
33460
- var _a;
33461
- const dataItem = {};
33462
- (_a = nodeModel.detreeNodeDataItems) == null ? void 0 : _a.forEach((item) => {
33463
- if (item.id && item.appDEFieldId && data.hasOwnProperty(item.id.toLowerCase())) {
33464
- Object.assign(dataItem, {
33465
- [item.appDEFieldId.toLowerCase()]: data[item.id.toLowerCase()]
33466
- });
33467
- }
33468
- });
33469
- return dataItem;
33501
+ async setRowValue(row, name, value) {
33502
+ const { beginDataItemName, endDataItemName } = this.model;
33503
+ if (Object.prototype.hasOwnProperty.call(row.data, name) && !isValueChange(row.data[name], value)) {
33504
+ return;
33505
+ }
33506
+ row.data[name] = value;
33507
+ if (name === beginDataItemName) {
33508
+ row.data._beginDataItemValue = value;
33509
+ } else if (name === endDataItemName) {
33510
+ row.data._endDataItemValue = value;
33511
+ }
33512
+ row.modified = true;
33513
+ row.processing = true;
33514
+ try {
33515
+ await this.dataChangeNotify(row, [name]);
33516
+ } finally {
33517
+ row.processing = false;
33518
+ }
33470
33519
  }
33471
33520
  /**
33472
- * 更新节点数据
33521
+ * 修改节点时间
33473
33522
  *
33474
- * @param {(IGanttNodeData | IData)} nodeData 节点数据
33475
- * @param {IData} data 更新数据
33476
- * @param {boolean} [isTransformData=false] 是否转化数据项
33477
- * @return {*}
33523
+ * @param {IGanttNodeData} nodeData
33478
33524
  * @memberof GanttController
33479
33525
  */
33480
- async updateNodeData(nodeData, data, isTransformData = false) {
33481
- const key = nodeData.srfkey ? "srfkey" : "_id";
33482
- const currentNode = this.state.items.find(
33483
- (item) => item[key] === nodeData[key]
33484
- );
33485
- if (!currentNode || !currentNode.srfkey) {
33486
- ibiz.log.error("\u627E\u4E0D\u5230\u5BF9\u5E94\u7684\u52A8\u6001\u5B9E\u4F53\u6811\u8282\u70B9\u6570\u636E", nodeData);
33526
+ async modifyNodeTime(nodeData, { begin, end }) {
33527
+ if (nodeData._nodeType !== "DE") {
33528
+ throw new RuntimeError65("\u4E0D\u662F\u5B9E\u4F53\u7518\u7279\u8282\u70B9\u6570\u636E");
33529
+ }
33530
+ const rowState = this.getRowState(nodeData._id);
33531
+ if (!rowState) {
33532
+ throw new RuntimeError65("\u884C\u6570\u636E\u4E0D\u5B58\u5728");
33533
+ }
33534
+ const { beginDataItemName, endDataItemName } = this.model;
33535
+ this.setRowValue(rowState, beginDataItemName, begin);
33536
+ this.setRowValue(rowState, endDataItemName, end);
33537
+ await this.save(rowState.data);
33538
+ }
33539
+ /**
33540
+ * 保存
33541
+ *
33542
+ * @param {ITreeNodeData} nodeData
33543
+ * @return {*} {Promise<void>}
33544
+ * @memberof GanttController
33545
+ */
33546
+ async save(nodeData) {
33547
+ if (this.state.isSimple) {
33548
+ ibiz.log.debug("\u7B80\u5355\u6A21\u5F0F\uFF0C\u4E0D\u4FDD\u5B58");
33487
33549
  return;
33488
33550
  }
33489
- const nodeModel = this.getNodeModel(currentNode._nodeId);
33490
- if (nodeModel) {
33491
- const newData = isTransformData ? this.transformNodeDataItem(nodeModel, data) : data;
33492
- if (Object.keys(newData).length > 0) {
33493
- const deName = calcDeCodeNameById(nodeModel.appDataEntityId);
33494
- const tempContext = Object.assign(this.context.clone(), {
33495
- [deName]: currentNode.srfkey
33551
+ if (nodeData._nodeType !== "DE") {
33552
+ throw new RuntimeError65("\u975E\u5B9E\u4F53\u8282\u70B9\u6570\u636E\u4E0D\u80FD\u4FDD\u5B58");
33553
+ }
33554
+ const rowState = this.state.rows[nodeData._uuid];
33555
+ if (!rowState) {
33556
+ throw new RuntimeError65("\u884C\u6570\u636E\u4E0D\u5B58\u5728");
33557
+ }
33558
+ if (!rowState.modified) {
33559
+ ibiz.log.debug("\u503C\u6CA1\u6709\u53D1\u751F\u6539\u53D8");
33560
+ return;
33561
+ }
33562
+ if (rowState.processing) {
33563
+ await awaitTimeout4(500, this.save.bind(this), [nodeData]);
33564
+ return;
33565
+ }
33566
+ const nodeModel = this.getNodeModel(nodeData._nodeId);
33567
+ const { appDataEntityId } = nodeModel;
33568
+ const isCreate = nodeData._deData.srfuf === 0 /* CREATE */;
33569
+ if (isCreate) {
33570
+ return;
33571
+ }
33572
+ const deName = calcDeCodeNameById(appDataEntityId);
33573
+ const tempContext = this.context.clone();
33574
+ tempContext[deName] = nodeData._deData.srfkey;
33575
+ const app = ibiz.hub.getApp(this.context.srfappid);
33576
+ let res;
33577
+ try {
33578
+ res = await app.deService.exec(
33579
+ appDataEntityId,
33580
+ isCreate ? "create" : "update",
33581
+ tempContext,
33582
+ nodeData._deData
33583
+ );
33584
+ } catch (error) {
33585
+ await this._evt.emit("onSaveError", void 0);
33586
+ this.actionNotification("".concat(isCreate ? "CREATE" : "UPDATE", "ERROR"), {
33587
+ error,
33588
+ data: rowState.data
33589
+ });
33590
+ throw error;
33591
+ }
33592
+ rowState.data._deData = res.data;
33593
+ rowState.modified = false;
33594
+ this.gridStateNotify(rowState, "SAVE" /* SAVE */);
33595
+ await this._evt.emit("onSaveSuccess", void 0);
33596
+ }
33597
+ /**
33598
+ * 删除
33599
+ *
33600
+ * @param {MDCtrlRemoveParams} [args]
33601
+ * @return {*} {Promise<void>}
33602
+ * @memberof GanttController
33603
+ */
33604
+ async remove(args) {
33605
+ const { context, params, data } = this.handlerAbilityParams(args);
33606
+ if (!(data == null ? void 0 : data.length)) {
33607
+ throw new RuntimeError65("\u672A\u9009\u4E2D\u6570\u636E");
33608
+ }
33609
+ if ((args == null ? void 0 : args.silent) !== true) {
33610
+ const del = await ibiz.confirm.error({
33611
+ title: "\u6570\u636E\u5220\u9664",
33612
+ desc: "\u786E\u8BA4\u5220\u9664\u6570\u636E\uFF1F"
33613
+ });
33614
+ if (!del) {
33615
+ return;
33616
+ }
33617
+ }
33618
+ await this._evt.emit("onBeforeRemove", void 0);
33619
+ await this.startLoading();
33620
+ let needRefresh = false;
33621
+ let refreshNode;
33622
+ try {
33623
+ const app = ibiz.hub.getApp(this.context.srfappid);
33624
+ await handleAllSettled(
33625
+ data.map(async (item) => {
33626
+ if (item._nodeType === "DE") {
33627
+ const tempContext = context.clone();
33628
+ const nodeModel = this.getNodeModel(item._nodeId);
33629
+ if (nodeModel && item._deData.srfuf !== 0 /* CREATE */) {
33630
+ const { appDataEntityId } = nodeModel;
33631
+ const deName = calcDeCodeNameById(appDataEntityId);
33632
+ tempContext[deName] = item.srfkey;
33633
+ await app.deService.exec(
33634
+ appDataEntityId,
33635
+ "remove",
33636
+ tempContext,
33637
+ params
33638
+ );
33639
+ if (refreshNode) {
33640
+ refreshNode = item;
33641
+ }
33642
+ needRefresh = true;
33643
+ }
33644
+ this.afterRemove(item);
33645
+ }
33646
+ })
33647
+ );
33648
+ if ((args == null ? void 0 : args.silent) !== true) {
33649
+ this.actionNotification("REMOVESUCCESS", {
33650
+ data,
33651
+ default: "\u6570\u636E[".concat(data.map((item) => item.srfmajortext).join("\u3001"), "]\u5220\u9664\u6210\u529F!")
33496
33652
  });
33497
- const response = await this.service.execDeService(
33498
- nodeModel.appDataEntityId,
33499
- "update",
33500
- tempContext,
33501
- newData
33502
- );
33503
- if (response.status === 200) {
33504
- this.refreshNodeChildren(nodeData, true);
33653
+ }
33654
+ if (needRefresh && !(args == null ? void 0 : args.notRefresh)) {
33655
+ await this.refreshNodeChildren(refreshNode, true);
33656
+ }
33657
+ } catch (error) {
33658
+ await this._evt.emit("onRemoveError", void 0);
33659
+ this.actionNotification("REMOVEERROR", {
33660
+ error,
33661
+ data
33662
+ });
33663
+ throw error;
33664
+ } finally {
33665
+ await this.endLoading();
33666
+ }
33667
+ this.state.selectedData = [];
33668
+ await this._evt.emit("onRemoveSuccess", void 0);
33669
+ }
33670
+ /**
33671
+ * 后台删除结束后界面删除逻辑
33672
+ *
33673
+ * @param {GanttDataSetNodeData} data
33674
+ * @memberof GanttController
33675
+ */
33676
+ afterRemove(data) {
33677
+ var _a;
33678
+ const index = this.state.items.findIndex((item) => item._uuid === data._uuid);
33679
+ if (index !== -1) {
33680
+ this.state.items.splice(index, 1);
33681
+ }
33682
+ if (this.state.rows[data._uuid]) {
33683
+ delete this.state.rows[data._uuid];
33684
+ }
33685
+ if (data._deData.srfuf === 0 /* CREATE */ && data._parent) {
33686
+ const parentNodeData = this.getNodeData(
33687
+ data._parent._id
33688
+ );
33689
+ const childIndex = parentNodeData._children.findIndex(
33690
+ (child) => child._uuid === data._uuid
33691
+ );
33692
+ if (childIndex !== -1) {
33693
+ (_a = parentNodeData._children) == null ? void 0 : _a.splice(childIndex, 1);
33694
+ }
33695
+ }
33696
+ }
33697
+ /**
33698
+ * 新建行
33699
+ *
33700
+ * @param {MDCtrlLoadParams} [args={}]
33701
+ * @return {*} {Promise<void>}
33702
+ * @memberof GanttController
33703
+ */
33704
+ async newRow(args = {}) {
33705
+ var _a;
33706
+ const { data } = args;
33707
+ const { editShowMode } = ibiz.config.grid;
33708
+ if (editShowMode === "row") {
33709
+ const editingRow = Object.values(this.state.rows).find(
33710
+ (item) => item.showRowEdit
33711
+ );
33712
+ if (editingRow) {
33713
+ throw new RuntimeError65("\u8BF7\u5148\u5B8C\u6210\u5F53\u524D\u884C\u7F16\u8F91\u4E2D\u7684\u884C\u7684\u64CD\u4F5C");
33714
+ }
33715
+ }
33716
+ let parentModel;
33717
+ let parentNodeData;
33718
+ if (data) {
33719
+ const item = Array.isArray(data) ? data[0] : data;
33720
+ parentNodeData = this.getNodeData(item._id);
33721
+ parentModel = this.getNodeModel(parentNodeData._nodeId);
33722
+ } else {
33723
+ parentNodeData = this.state.rootNodes[0];
33724
+ parentModel = getRootNode(this.model);
33725
+ }
33726
+ if (parentModel) {
33727
+ const nodeRSs = getChildNodeRSs(this.model, {
33728
+ parentId: parentModel.id,
33729
+ hasQuery: false
33730
+ });
33731
+ let nodeRS;
33732
+ let nodeModel;
33733
+ nodeRSs.forEach((_nodeRS) => {
33734
+ const childNode = this.getNodeModel(_nodeRS.childDETreeNodeId);
33735
+ if ((childNode == null ? void 0 : childNode.treeNodeType) === "DE" && childNode.appDataEntityId) {
33736
+ nodeRS = _nodeRS;
33737
+ nodeModel = childNode;
33505
33738
  }
33739
+ });
33740
+ if (nodeModel) {
33741
+ let draftData;
33742
+ try {
33743
+ draftData = await this.service.getNodeDraft(
33744
+ nodeModel,
33745
+ nodeRS,
33746
+ parentNodeData,
33747
+ {
33748
+ hasQuery: false,
33749
+ context: this.context.clone(),
33750
+ params: this.params
33751
+ }
33752
+ );
33753
+ } catch (error) {
33754
+ this.actionNotification("GETDRAFTERROR", {
33755
+ error
33756
+ });
33757
+ throw error;
33758
+ }
33759
+ const defaultVal = this.calcDefaultValue(draftData, true);
33760
+ Object.assign(draftData, defaultVal);
33761
+ const parentRow = this.getRowState(parentNodeData._id);
33762
+ if ((_a = parentNodeData._children) == null ? void 0 : _a.length) {
33763
+ parentNodeData._children.push(draftData);
33764
+ } else {
33765
+ parentNodeData._children = [draftData];
33766
+ }
33767
+ this.state.items.push(draftData);
33768
+ const rowState = new TreeGridExRowState(draftData, this);
33769
+ this.state.rows[draftData._uuid] = rowState;
33770
+ this.gridStateNotify(rowState, "DRAFT" /* DRAFT */);
33771
+ if (editShowMode === "row") {
33772
+ this.switchRowEdit(rowState, true);
33773
+ }
33774
+ this._evt.emit("onNewRow", { row: parentRow });
33775
+ this.actionNotification("GETDRAFTSUCCESS", { data: draftData });
33506
33776
  }
33507
33777
  }
33508
33778
  }
@@ -33802,6 +34072,8 @@ var InternalMessageController = class {
33802
34072
  return;
33803
34073
  }
33804
34074
  await this.service.markRead(message.id);
34075
+ find.status = "READ";
34076
+ this.unreadCount -= 1;
33805
34077
  this.evt.emit("unreadCountChange", this.unreadCount);
33806
34078
  this.evt.emit("dataChange");
33807
34079
  }
@@ -34039,7 +34311,7 @@ var AppHub = class {
34039
34311
  this.registerAppView(appView);
34040
34312
  return appView;
34041
34313
  }
34042
- throw new RuntimeError65("\u89C6\u56FE[".concat(id, "]\u4E0D\u5B58\u5728"));
34314
+ throw new RuntimeError66("\u89C6\u56FE[".concat(id, "]\u4E0D\u5B58\u5728"));
34043
34315
  }
34044
34316
  /**
34045
34317
  * 根据视图模型路径,加参数重新计算视图模型
@@ -34060,7 +34332,7 @@ var AppHub = class {
34060
34332
  );
34061
34333
  return model;
34062
34334
  }
34063
- throw new RuntimeError65("\u89C6\u56FE[".concat(modelPath, "]\u4E0D\u5B58\u5728"));
34335
+ throw new RuntimeError66("\u89C6\u56FE[".concat(modelPath, "]\u4E0D\u5B58\u5728"));
34064
34336
  }
34065
34337
  /**
34066
34338
  * 根据应用实体代码名称查找应用视图
@@ -34091,7 +34363,7 @@ var AppHub = class {
34091
34363
  this.registerAppDataEntity(entity, appId2);
34092
34364
  return entity;
34093
34365
  }
34094
- throw new RuntimeError65("\u672A\u627E\u5230\u5E94\u7528\u5B9E\u4F53[".concat(id, "]"));
34366
+ throw new RuntimeError66("\u672A\u627E\u5230\u5E94\u7528\u5B9E\u4F53[".concat(id, "]"));
34095
34367
  }
34096
34368
  /**
34097
34369
  * 新建 hub 应用
@@ -34106,7 +34378,7 @@ var AppHub = class {
34106
34378
  return this.appMap.get(id);
34107
34379
  }
34108
34380
  if (!this.modelLoaderProvider) {
34109
- throw new RuntimeError65("\u8BF7\u5148\u6CE8\u518C\u6A21\u578B\u52A0\u8F7D\u9002\u914D\u5668");
34381
+ throw new RuntimeError66("\u8BF7\u5148\u6CE8\u518C\u6A21\u578B\u52A0\u8F7D\u9002\u914D\u5668");
34110
34382
  }
34111
34383
  const appModel = await this.modelLoaderProvider.getApp(id);
34112
34384
  const app = new Application(appModel);
@@ -34237,7 +34509,7 @@ var EngineFactory = class {
34237
34509
  };
34238
34510
 
34239
34511
  // src/engine/view-base.engine.ts
34240
- import { RuntimeError as RuntimeError66, findRecursiveChild as findRecursiveChild3 } from "@ibiz-template/core";
34512
+ import { RuntimeError as RuntimeError67, findRecursiveChild as findRecursiveChild3 } from "@ibiz-template/core";
34241
34513
  var ViewEngineBase = class {
34242
34514
  /**
34243
34515
  * 构造函数在视图控制器的构造函数逻辑内部执行
@@ -34345,9 +34617,6 @@ var ViewEngineBase = class {
34345
34617
  if (model.showCaptionBar === false) {
34346
34618
  names.push("view_captionbar");
34347
34619
  }
34348
- if (!getControl(model, "toolbar")) {
34349
- names.push("view_toolbar", "toolbar");
34350
- }
34351
34620
  const toolBarList = ["lefttoolbar", "righttoolbar", "footertoolbar"];
34352
34621
  toolBarList.forEach((name) => {
34353
34622
  if (!getControl(model, name)) {
@@ -34361,6 +34630,11 @@ var ViewEngineBase = class {
34361
34630
  if (!this.calcViewFooterVisible()) {
34362
34631
  names.push("view_footer");
34363
34632
  }
34633
+ if (!this.isExistAndInLayout("lefttoolbar") && !this.isExistAndInLayout("righttoolbar") && model.showCaptionBar === false) {
34634
+ names.push("view_toolbar");
34635
+ }
34636
+ } else if (!getControl(model, "toolbar")) {
34637
+ names.push("view_toolbar", "toolbar");
34364
34638
  }
34365
34639
  return names;
34366
34640
  }
@@ -34490,7 +34764,7 @@ var ViewEngineBase = class {
34490
34764
  const { appDataEntityId } = this.view.model;
34491
34765
  const { evt, context, params } = this.view;
34492
34766
  if (!appDataEntityId) {
34493
- throw new RuntimeError66("\u8BE5\u89C6\u56FE\u6CA1\u6709\u5B9E\u4F53\uFF0C\u65E0\u6CD5\u52A0\u8F7D\u5B9E\u4F53\u6570\u636E");
34767
+ throw new RuntimeError67("\u8BE5\u89C6\u56FE\u6CA1\u6709\u5B9E\u4F53\uFF0C\u65E0\u6CD5\u52A0\u8F7D\u5B9E\u4F53\u6570\u636E");
34494
34768
  }
34495
34769
  const app = ibiz.hub.getApp(context.srfappid);
34496
34770
  const res = await app.deService.exec(
@@ -35014,7 +35288,7 @@ var GlobalUtil = class {
35014
35288
  };
35015
35289
 
35016
35290
  // src/logic-scheduler/executor/logic-executor.ts
35017
- import { RuntimeError as RuntimeError67 } from "@ibiz-template/core";
35291
+ import { RuntimeError as RuntimeError68 } from "@ibiz-template/core";
35018
35292
  var LogicExecutor = class {
35019
35293
  /**
35020
35294
  * @author lxm
@@ -35035,7 +35309,7 @@ var LogicExecutor = class {
35035
35309
  */
35036
35310
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
35037
35311
  execute(_executeParams) {
35038
- throw new RuntimeError67("Method not implemented.");
35312
+ throw new RuntimeError68("Method not implemented.");
35039
35313
  }
35040
35314
  /**
35041
35315
  * 销毁方法
@@ -35472,7 +35746,7 @@ var LogicSchedulerCenter = class {
35472
35746
  };
35473
35747
 
35474
35748
  // src/logic-scheduler/trigger/logic-trigger.ts
35475
- import { RuntimeError as RuntimeError68 } from "@ibiz-template/core";
35749
+ import { RuntimeError as RuntimeError69 } from "@ibiz-template/core";
35476
35750
  var LogicTrigger = class {
35477
35751
  /**
35478
35752
  * @author lxm
@@ -35532,7 +35806,7 @@ var LogicTrigger = class {
35532
35806
  if (this.executor) {
35533
35807
  return this.executor.execute(executeParams);
35534
35808
  }
35535
- throw new RuntimeError68("".concat(this.logic.id, "\u6CA1\u6709\u7ED1\u5B9Aexecutor"));
35809
+ throw new RuntimeError69("".concat(this.logic.id, "\u6CA1\u6709\u7ED1\u5B9Aexecutor"));
35536
35810
  }
35537
35811
  /**
35538
35812
  * 销毁方法
@@ -35549,12 +35823,12 @@ var CustomTrigger = class extends LogicTrigger {
35549
35823
  };
35550
35824
 
35551
35825
  // src/logic-scheduler/trigger/item-dyna-logic-trigger.ts
35552
- import { RuntimeError as RuntimeError69 } from "@ibiz-template/core";
35826
+ import { RuntimeError as RuntimeError70 } from "@ibiz-template/core";
35553
35827
  var ItemDynaLogicTrigger = class extends LogicTrigger {
35554
35828
  bindExecutor(executor) {
35555
35829
  super.bindExecutor(executor);
35556
35830
  if (this.executor.type !== "SCRIPT") {
35557
- throw new RuntimeError69(
35831
+ throw new RuntimeError70(
35558
35832
  "\u9884\u5B9A\u4E49\u903B\u8F91\u7C7B\u578B".concat(this.type, "\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u53EA\u80FD\u662F\u811A\u672C")
35559
35833
  );
35560
35834
  }
@@ -35590,7 +35864,7 @@ var ItemDynaLogicTrigger = class extends LogicTrigger {
35590
35864
  };
35591
35865
 
35592
35866
  // src/logic-scheduler/trigger/timer-trigger.ts
35593
- import { RuntimeError as RuntimeError70, RuntimeModelError as RuntimeModelError72 } from "@ibiz-template/core";
35867
+ import { RuntimeError as RuntimeError71, RuntimeModelError as RuntimeModelError72 } from "@ibiz-template/core";
35594
35868
  var TimerTrigger = class extends LogicTrigger {
35595
35869
  constructor() {
35596
35870
  super(...arguments);
@@ -35602,7 +35876,7 @@ var TimerTrigger = class extends LogicTrigger {
35602
35876
  }
35603
35877
  this.timer = setInterval(() => {
35604
35878
  if (!this.scheduler.defaultParamsCb) {
35605
- throw new RuntimeError70("\u5B9A\u65F6\u5668\u7F3A\u5C11\u9ED8\u8BA4\u53C2\u6570\u56DE\u8C03");
35879
+ throw new RuntimeError71("\u5B9A\u65F6\u5668\u7F3A\u5C11\u9ED8\u8BA4\u53C2\u6570\u56DE\u8C03");
35606
35880
  }
35607
35881
  const params = this.scheduler.defaultParamsCb();
35608
35882
  this.executor.execute(params);
@@ -35619,7 +35893,7 @@ var TimerTrigger = class extends LogicTrigger {
35619
35893
  // src/logic-scheduler/executor/app-ui-logic-executor.ts
35620
35894
  import {
35621
35895
  ModelError as ModelError34,
35622
- RuntimeError as RuntimeError71,
35896
+ RuntimeError as RuntimeError72,
35623
35897
  RuntimeModelError as RuntimeModelError73
35624
35898
  } from "@ibiz-template/core";
35625
35899
  import { notNilEmpty as notNilEmpty9 } from "qx-util";
@@ -35657,7 +35931,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
35657
35931
  const { context, params, ...rest } = parameters;
35658
35932
  const { data } = parameters;
35659
35933
  if (!(data == null ? void 0 : data[0])) {
35660
- throw new RuntimeError71("opendata\u6CA1\u6709\u53EF\u64CD\u4F5C\u6570\u636E\uFF01");
35934
+ throw new RuntimeError72("opendata\u6CA1\u6709\u53EF\u64CD\u4F5C\u6570\u636E\uFF01");
35661
35935
  }
35662
35936
  const openViewRefs = appUILogic.openDataAppViews;
35663
35937
  let openViewRef;
@@ -35717,7 +35991,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
35717
35991
  const openViewRefs = appUILogic.openDataAppViews;
35718
35992
  const findView = openViewRefs == null ? void 0 : openViewRefs.find((item) => item.refMode === formTypeValue);
35719
35993
  if (!findView) {
35720
- throw new RuntimeError71(
35994
+ throw new RuntimeError72(
35721
35995
  "\u6CA1\u6709\u627E\u5230\u4E0E\u8868\u5355\u7C7B\u578B".concat(formTypeValue, "\u76F8\u5173\u7684\u5B9E\u4F53\u7684\u7F16\u8F91\u89C6\u56FE")
35722
35996
  );
35723
35997
  }
@@ -35842,7 +36116,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
35842
36116
  }
35843
36117
  const selectData = (_a = result.data) == null ? void 0 : _a[0];
35844
36118
  if (!selectData) {
35845
- throw new RuntimeError71("\u8BF7\u9009\u4E2D\u4E00\u6761\u6570\u636E");
36119
+ throw new RuntimeError72("\u8BF7\u9009\u4E2D\u4E00\u6761\u6570\u636E");
35846
36120
  }
35847
36121
  const indexType = selectData.srfkey;
35848
36122
  const findView = newDataAppViews == null ? void 0 : newDataAppViews.find(
@@ -35852,7 +36126,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
35852
36126
  }
35853
36127
  );
35854
36128
  if (!findView) {
35855
- throw new RuntimeError71(
36129
+ throw new RuntimeError72(
35856
36130
  "\u6CA1\u6709\u627E\u5230\u4E0E\u7D22\u5F15\u7C7B\u578B".concat(indexType, "\u76F8\u5173\u7684\u5B9E\u4F53\u7684\u7F16\u8F91\u89C6\u56FE")
35857
36131
  );
35858
36132
  }
@@ -35889,7 +36163,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
35889
36163
  }
35890
36164
  });
35891
36165
  if (pickParentFieldName === void 0) {
35892
- throw new RuntimeError71(
36166
+ throw new RuntimeError72(
35893
36167
  "\u6CA1\u6709\u627E\u5230".concat(pickParentDeName, "\u5728\u5F53\u524D\u5B9E\u4F53\u7684\u5916\u952E\u5C5E\u6027")
35894
36168
  );
35895
36169
  }