@ibiz-template/runtime 0.1.12-dev.0 → 0.1.12

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 (110) hide show
  1. package/dist/index.esm.js +452 -311
  2. package/dist/index.system.min.js +1 -1
  3. package/dist/index.system.min.js.map +1 -1
  4. package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
  5. package/out/controller/common/control/md-control.controller.js +9 -0
  6. package/out/controller/control/app-menu/app-menu.controller.d.ts +1 -1
  7. package/out/controller/control/app-menu/app-menu.controller.d.ts.map +1 -1
  8. package/out/controller/control/app-menu/app-menu.controller.js +2 -2
  9. package/out/controller/control/caption-bar/caption-bar.controller.d.ts.map +1 -1
  10. package/out/controller/control/caption-bar/caption-bar.controller.js +1 -2
  11. package/out/controller/control/chart/generator/chart-options-generator.d.ts.map +1 -1
  12. package/out/controller/control/chart/generator/chart-options-generator.js +5 -0
  13. package/out/controller/control/exp-bar/exp-bar.controller.d.ts.map +1 -1
  14. package/out/controller/control/exp-bar/exp-bar.controller.js +19 -0
  15. package/out/controller/control/form/edit-form/edit-form.controller.d.ts +7 -0
  16. package/out/controller/control/form/edit-form/edit-form.controller.d.ts.map +1 -1
  17. package/out/controller/control/form/edit-form/edit-form.controller.js +55 -19
  18. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-item.controller.d.ts +4 -2
  19. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-item.controller.d.ts.map +1 -1
  20. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-item.controller.js +22 -2
  21. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form.controller.d.ts +3 -62
  22. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form.controller.d.ts.map +1 -1
  23. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form.controller.js +7 -97
  24. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form-one/form-mdctrl-repeater-form-one.controller.d.ts +2 -48
  25. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form-one/form-mdctrl-repeater-form-one.controller.d.ts.map +1 -1
  26. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form-one/form-mdctrl-repeater-form-one.controller.js +2 -94
  27. package/out/controller/control/form/search-form/search-form.controller.js +1 -0
  28. package/out/controller/control/form/search-form/search-form.service.d.ts +1 -1
  29. package/out/controller/control/form/search-form/search-form.service.d.ts.map +1 -1
  30. package/out/controller/control/form/search-form/search-form.service.js +2 -3
  31. package/out/controller/control/grid/grid/grid-column.controller.d.ts +16 -0
  32. package/out/controller/control/grid/grid/grid-column.controller.d.ts.map +1 -1
  33. package/out/controller/control/grid/grid/grid-column.controller.js +22 -0
  34. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts +8 -0
  35. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts.map +1 -1
  36. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js +20 -1
  37. package/out/controller/control/index.d.ts +1 -0
  38. package/out/controller/control/index.d.ts.map +1 -1
  39. package/out/controller/control/index.js +1 -0
  40. package/out/controller/control/md-ctrl/index.d.ts +4 -0
  41. package/out/controller/control/md-ctrl/index.d.ts.map +1 -0
  42. package/out/controller/control/md-ctrl/index.js +3 -0
  43. package/out/controller/control/md-ctrl/md-ctrl-row.state.d.ts +34 -0
  44. package/out/controller/control/md-ctrl/md-ctrl-row.state.d.ts.map +1 -0
  45. package/out/controller/control/md-ctrl/md-ctrl-row.state.js +31 -0
  46. package/out/controller/control/md-ctrl/md-ctrl.controller.d.ts +77 -0
  47. package/out/controller/control/md-ctrl/md-ctrl.controller.d.ts.map +1 -0
  48. package/out/controller/control/md-ctrl/md-ctrl.controller.js +160 -0
  49. package/out/controller/control/md-ctrl/md-ctrl.service.d.ts +21 -0
  50. package/out/controller/control/md-ctrl/md-ctrl.service.d.ts.map +1 -0
  51. package/out/controller/control/md-ctrl/md-ctrl.service.js +40 -0
  52. package/out/controller/control/panel/panel/panel-item.controller.js +1 -1
  53. package/out/controller/control/panel/panel/panel.controller.d.ts.map +1 -1
  54. package/out/controller/control/panel/panel/panel.controller.js +4 -2
  55. package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
  56. package/out/controller/control/search-bar/search-bar.controller.js +15 -6
  57. package/out/engine/md-view.engine.d.ts.map +1 -1
  58. package/out/engine/md-view.engine.js +9 -3
  59. package/out/interface/controller/event/control/i-edit-form.event.d.ts +48 -3
  60. package/out/interface/controller/event/control/i-edit-form.event.d.ts.map +1 -1
  61. package/out/interface/controller/event/control/i-form.event.d.ts +27 -0
  62. package/out/interface/controller/event/control/i-form.event.d.ts.map +1 -1
  63. package/out/interface/controller/event/control/i-md-control.event.d.ts +57 -14
  64. package/out/interface/controller/event/control/i-md-control.event.d.ts.map +1 -1
  65. package/out/interface/controller/state/control/i-exp-bar-control.state.d.ts +7 -0
  66. package/out/interface/controller/state/control/i-exp-bar-control.state.d.ts.map +1 -1
  67. package/out/interface/controller/state/control/i-search-bar.state.d.ts +7 -0
  68. package/out/interface/controller/state/control/i-search-bar.state.d.ts.map +1 -1
  69. package/out/logic-scheduler/executor/app-ui-logic-executor.d.ts +3 -3
  70. package/out/logic-scheduler/executor/app-ui-logic-executor.d.ts.map +1 -1
  71. package/out/logic-scheduler/executor/app-ui-logic-executor.js +3 -3
  72. package/out/service/service/code-list/code-list.service.d.ts.map +1 -1
  73. package/out/service/service/code-list/code-list.service.js +1 -1
  74. package/out/service/utils/dynamic-code-list/dynamic-code-list.js +1 -1
  75. package/out/ui-action/uiaction-util.js +1 -1
  76. package/out/utils/script/script-function.d.ts.map +1 -1
  77. package/out/utils/script/script-function.js +3 -0
  78. package/package.json +3 -3
  79. package/src/controller/common/control/md-control.controller.ts +7 -0
  80. package/src/controller/control/app-menu/app-menu.controller.ts +6 -3
  81. package/src/controller/control/caption-bar/caption-bar.controller.ts +1 -2
  82. package/src/controller/control/chart/generator/chart-options-generator.ts +4 -0
  83. package/src/controller/control/exp-bar/exp-bar.controller.ts +25 -0
  84. package/src/controller/control/form/edit-form/edit-form.controller.ts +57 -24
  85. package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-item.controller.ts +41 -4
  86. package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form.controller.ts +11 -159
  87. package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form-one/form-mdctrl-repeater-form-one.controller.ts +2 -140
  88. package/src/controller/control/form/search-form/search-form.controller.ts +1 -1
  89. package/src/controller/control/form/search-form/search-form.service.ts +2 -3
  90. package/src/controller/control/grid/grid/grid-column.controller.ts +22 -0
  91. package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts +21 -1
  92. package/src/controller/control/index.ts +1 -0
  93. package/src/controller/control/md-ctrl/index.ts +3 -0
  94. package/src/controller/control/md-ctrl/md-ctrl-row.state.ts +40 -0
  95. package/src/controller/control/md-ctrl/md-ctrl.controller.ts +199 -0
  96. package/src/controller/control/md-ctrl/md-ctrl.service.ts +40 -0
  97. package/src/controller/control/panel/panel/panel-item.controller.ts +1 -1
  98. package/src/controller/control/panel/panel/panel.controller.ts +6 -2
  99. package/src/controller/control/search-bar/search-bar.controller.ts +21 -8
  100. package/src/engine/md-view.engine.ts +7 -3
  101. package/src/interface/controller/event/control/i-edit-form.event.ts +53 -3
  102. package/src/interface/controller/event/control/i-form.event.ts +30 -0
  103. package/src/interface/controller/event/control/i-md-control.event.ts +63 -15
  104. package/src/interface/controller/state/control/i-exp-bar-control.state.ts +8 -0
  105. package/src/interface/controller/state/control/i-search-bar.state.ts +8 -0
  106. package/src/logic-scheduler/executor/app-ui-logic-executor.ts +5 -5
  107. package/src/service/service/code-list/code-list.service.ts +1 -4
  108. package/src/service/utils/dynamic-code-list/dynamic-code-list.ts +1 -1
  109. package/src/ui-action/uiaction-util.ts +1 -1
  110. package/src/utils/script/script-function.ts +3 -0
@@ -72,7 +72,7 @@ export class AppUILogicExecutor extends LogicExecutor {
72
72
  tempParams = convertNavData(navParams, params, context, data[0]);
73
73
  }
74
74
  // 打开视图
75
- await ibiz.commands.execute(OpenAppViewCommand.TAG, openView, tempContext, tempParams, rest);
75
+ return ibiz.commands.execute(OpenAppViewCommand.TAG, openView, tempContext, tempParams, rest);
76
76
  }
77
77
  /**
78
78
  * 执行应用预置界面逻辑newdata
@@ -95,7 +95,7 @@ export class AppUILogicExecutor extends LogicExecutor {
95
95
  newViewRef = await this.getWizardNewViewRef(appUILogic, parameters);
96
96
  if (!newViewRef) {
97
97
  // 选择视图取消操作直接返回
98
- return;
98
+ return { ok: false };
99
99
  }
100
100
  }
101
101
  else if (enableBatchAdd) {
@@ -133,7 +133,7 @@ export class AppUILogicExecutor extends LogicExecutor {
133
133
  tempParams = Object.assign(tempParams, _data.$origin);
134
134
  }
135
135
  // 打开视图
136
- await ibiz.commands.execute(OpenAppViewCommand.TAG, newViewRef.refAppViewId, tempContext, tempParams, rest);
136
+ return ibiz.commands.execute(OpenAppViewCommand.TAG, newViewRef.refAppViewId, tempContext, tempParams, rest);
137
137
  }
138
138
  /**
139
139
  * 获取向导新建视图引用
@@ -1 +1 @@
1
- {"version":3,"file":"code-list.service.d.ts","sourceRoot":"","sources":["../../../../src/service/service/code-list/code-list.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;;GAOG;AACH,qBAAa,eAAe;IAoBd,SAAS,CAAC,QAAQ,EAAE,YAAY;IAnB5C;;;;;OAKG;IACH,SAAS,CAAC,YAAY,4BAAmC;IAEzD;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,oBAAoB,CAAC,CAChE;gBAEU,QAAQ,EAAE,YAAY;IAE5C;;;;;;;OAOG;IACH,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,EAAE;IAc3D;;;;;;;;OAQG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAMzC;;;;;;;;OAQG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIlD;;;;;;;;;OASG;IACH,SAAS,CAAC,iBAAiB,CACzB,SAAS,EAAE,SAAS,EAAE,EACtB,aAAa,EAAE,OAAO,GACrB,QAAQ,CAAC,YAAY,CAAC,EAAE;IA0B3B;;;;;;;;OAQG;cACa,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,OAAY,EACrB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC;IAa1B;;;;;;;;;OASG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,OAAO,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;CAcpC"}
1
+ {"version":3,"file":"code-list.service.d.ts","sourceRoot":"","sources":["../../../../src/service/service/code-list/code-list.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;;GAOG;AACH,qBAAa,eAAe;IAoBd,SAAS,CAAC,QAAQ,EAAE,YAAY;IAnB5C;;;;;OAKG;IACH,SAAS,CAAC,YAAY,4BAAmC;IAEzD;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,oBAAoB,CAAC,CAChE;gBAEU,QAAQ,EAAE,YAAY;IAE5C;;;;;;;OAOG;IACH,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,EAAE;IAc3D;;;;;;;;OAQG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAMzC;;;;;;;;OAQG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIlD;;;;;;;;;OASG;IACH,SAAS,CAAC,iBAAiB,CACzB,SAAS,EAAE,SAAS,EAAE,EACtB,aAAa,EAAE,OAAO,GACrB,QAAQ,CAAC,YAAY,CAAC,EAAE;IAuB3B;;;;;;;;OAQG;cACa,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,OAAY,EACrB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC;IAa1B;;;;;;;;;OASG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,OAAO,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;CAcpC"}
@@ -91,7 +91,7 @@ export class CodeListService {
91
91
  // todo代码项其他属性,表单数据
92
92
  let text = codeItem.text;
93
93
  if (codeItem.textLanguageRes) {
94
- text = ibiz.i18n.t(codeItem.textLanguageRes.lanResTag, codeItem.textLanguageRes.defaultContent);
94
+ text = ibiz.i18n.t(codeItem.textLanguageRes.lanResTag, codeItem.text);
95
95
  }
96
96
  const _codeItem = {
97
97
  text,
@@ -88,7 +88,7 @@ export class DynamicCodeListCache {
88
88
  if (this.isPredefined) {
89
89
  // 特殊处理,避免预置代码表加载不全
90
90
  if (!params.size) {
91
- params.size = 10000;
91
+ params = Object.assign(Object.assign({}, params), { size: 10000 });
92
92
  }
93
93
  const res = await app.net.get(`/dictionaries/codelist/${this.codeList.codeName}`, params);
94
94
  return Object.freeze(res.data.items);
@@ -41,7 +41,7 @@ export class UIActionUtil {
41
41
  var _a, _b;
42
42
  const result = await this.exec(actionId, params);
43
43
  if (result.closeView) {
44
- params.view.closeView();
44
+ params.view.closeView({ ok: true });
45
45
  }
46
46
  else if (result.refresh) {
47
47
  switch (result.refreshMode) {
@@ -1 +1 @@
1
- {"version":3,"file":"script-function.d.ts","sourceRoot":"","sources":["../../../src/utils/script/script-function.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAmB,MAAM,iBAAiB,CAAC;AASvE,qBAAa,cAAc;IACzB,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE7B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAM;IAEjC,SAAS,CAAC,OAAO,EAAE,mBAAmB,CAAC;gBAGrC,OAAO,EAAE,MAAM,EAAE,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,mBAAoC;IAW/C;;;;;;;;OAQG;IACH,SAAS,CAAC,UAAU,CAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,GAC3B,MAAM;IAWT;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IA4B5E;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,GAAG,EAAE;IAuB7C;;;;;;;OAOG;IACH,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAyC9D;;;;;;OAMG;IACH,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;CAI/B"}
1
+ {"version":3,"file":"script-function.d.ts","sourceRoot":"","sources":["../../../src/utils/script/script-function.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAmB,MAAM,iBAAiB,CAAC;AASvE,qBAAa,cAAc;IACzB,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE7B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,CAAM;IAEjC,SAAS,CAAC,OAAO,EAAE,mBAAmB,CAAC;gBAGrC,OAAO,EAAE,MAAM,EAAE,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,mBAAoC;IAW/C;;;;;;;;OAQG;IACH,SAAS,CAAC,UAAU,CAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,GAC3B,MAAM;IAWT;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IA4B5E;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,GAAG,EAAE;IAuB7C;;;;;;;OAOG;IACH,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IA4C9D;;;;;;OAMG;IACH,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;CAI/B"}
@@ -120,6 +120,9 @@ export class ScriptFunction {
120
120
  openView: ibiz.openView,
121
121
  };
122
122
  break;
123
+ case 'viewParam': // 视图参数
124
+ param.viewParam = param.params;
125
+ break;
123
126
  case 'env': // 全局环境变量
124
127
  param.env = ibiz.env;
125
128
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/runtime",
3
- "version": "0.1.12-dev.0",
3
+ "version": "0.1.12",
4
4
  "description": "控制器包",
5
5
  "type": "module",
6
6
  "main": "out/index.js",
@@ -29,7 +29,7 @@
29
29
  "author": "chitanda",
30
30
  "license": "MIT",
31
31
  "devDependencies": {
32
- "@ibiz-template/core": "^0.1.12-dev.0",
32
+ "@ibiz-template/core": "^0.1.12",
33
33
  "@ibiz/model-core": "^0.0.15",
34
34
  "@types/path-browserify": "^1.0.0",
35
35
  "@types/qs": "^6.9.7",
@@ -55,5 +55,5 @@
55
55
  "qx-util": "^0.4.8",
56
56
  "ramda": "^0.29.0"
57
57
  },
58
- "gitHead": "a249a3aa80e42e2e67ff8654753d23095aec69c5"
58
+ "gitHead": "980e348c7fa465d0a62e655991c1bb816fca100a"
59
59
  }
@@ -157,6 +157,9 @@ export class MDControlController<
157
157
  await this._evt.emit('onLoadSuccess', {
158
158
  isInitialLoad,
159
159
  });
160
+ } catch (error) {
161
+ await this._evt.emit('onLoadError', undefined);
162
+ throw error;
160
163
  } finally {
161
164
  await this.endLoading();
162
165
  }
@@ -210,6 +213,7 @@ export class MDControlController<
210
213
  }
211
214
  }
212
215
 
216
+ await this._evt.emit('onBeforeRemove', undefined);
213
217
  await this.startLoading();
214
218
  let needRefresh = false;
215
219
  try {
@@ -241,6 +245,9 @@ export class MDControlController<
241
245
  if (needRefresh) {
242
246
  this.refresh();
243
247
  }
248
+ } catch (error) {
249
+ await this._evt.emit('onRemoveError', undefined);
250
+ throw error;
244
251
  } finally {
245
252
  await this.endLoading();
246
253
  }
@@ -64,7 +64,11 @@ export class AppMenuController
64
64
  * @param {string} id
65
65
  * @return {*} {Promise<void>}
66
66
  */
67
- async onClickMenuItem(id: string, event?: MouseEvent): Promise<void> {
67
+ async onClickMenuItem(
68
+ id: string,
69
+ event?: MouseEvent,
70
+ useDepth: boolean = true,
71
+ ): Promise<void> {
68
72
  const menuItem = findRecursiveChild(this.model, id, {
69
73
  compareField: 'id',
70
74
  childrenFields: ['appMenuItems'],
@@ -83,8 +87,7 @@ export class AppMenuController
83
87
  }
84
88
 
85
89
  const tempContext = this.context.clone();
86
-
87
- if (this.routeDepth) {
90
+ if (this.routeDepth && useDepth) {
88
91
  Object.assign(tempContext, {
89
92
  toRouteDepth: this.routeDepth + 1,
90
93
  });
@@ -24,8 +24,7 @@ export class CaptionBarController
24
24
  if (this.view.model.capLanguageRes) {
25
25
  this.state.caption = ibiz.i18n.t(
26
26
  this.view.model.capLanguageRes.lanResTag!,
27
- this.view.model.capLanguageRes.defaultContent ||
28
- this.view.model.caption,
27
+ this.view.model.caption,
29
28
  );
30
29
  } else {
31
30
  this.state.caption = this.view.model.caption!;
@@ -199,6 +199,10 @@ export class ChartOptionsGenerator {
199
199
  const { showLegend, legendPos } = chartLegend;
200
200
  const legendOption: EChartsOption['legend'] = {};
201
201
  legendOption.show = showLegend;
202
+ // 图表单序列不应出图例
203
+ if (this.model.dechartSerieses?.length === 1) {
204
+ legendOption.show = false;
205
+ }
202
206
  const position = legendPos?.toLowerCase();
203
207
  if (position === 'left' || position === 'right') {
204
208
  legendOption.left = position;
@@ -164,6 +164,31 @@ export class ExpBarControlController<
164
164
  protected async onCreated(): Promise<void> {
165
165
  await super.onCreated();
166
166
  this.childNames.push(this.model.xdataControlName!);
167
+ const appDataEntity = await ibiz.hub.getAppDataEntity(
168
+ this.model.appDataEntityId!,
169
+ this.context.srfappid,
170
+ )!;
171
+ if (appDataEntity) {
172
+ const searchFields = appDataEntity.appDEFields?.filter(field => {
173
+ return field.enableQuickSearch;
174
+ });
175
+ const placeHolders: string[] = [];
176
+ searchFields?.forEach(searchField => {
177
+ if (searchField?.lnlanguageRes && searchField.lnlanguageRes.lanResTag) {
178
+ placeHolders.push(
179
+ ibiz.i18n.t(
180
+ searchField.lnlanguageRes.lanResTag,
181
+ searchField.logicName,
182
+ ),
183
+ );
184
+ } else if (searchField?.logicName) {
185
+ placeHolders.push(searchField.logicName);
186
+ }
187
+ });
188
+ if (placeHolders.length > 0) {
189
+ this.state.placeHolder = placeHolders.join('、');
190
+ }
191
+ }
167
192
  }
168
193
 
169
194
  /**
@@ -59,6 +59,43 @@ export class EditFormController
59
59
  }) as () => Promise<void>;
60
60
  }
61
61
 
62
+ /**
63
+ * 加载草稿行为
64
+ * @author lxm
65
+ * @date 2023-08-25 02:45:11
66
+ * @return {*} {Promise<IData>}
67
+ */
68
+ async loadDraft(): Promise<IData> {
69
+ const queryParams = { ...this.params };
70
+ // 新建默认值给到graft接口,接口会回来
71
+ const params = await this.getDraftParams(); // 新建默认值
72
+ Object.assign(queryParams, params);
73
+
74
+ let res;
75
+ try {
76
+ await this.startLoading();
77
+ await this.evt.emit('onBeforeLoadDraft', { params: queryParams });
78
+ res = await this.service.getDraft(this.context, queryParams);
79
+ } catch (error) {
80
+ await this.evt.emit('onLoadDraftError', undefined);
81
+ throw error;
82
+ } finally {
83
+ await this.endLoading();
84
+ }
85
+
86
+ // !getDraft的时候不替换,进行合并,空值不覆盖
87
+ mergeInLeft(this.data, res.data);
88
+
89
+ // 处理后台导致的新建默认值丢失
90
+ mergeDefaultInLeft(this.data, params);
91
+
92
+ this.formStateNotify(FormNotifyState.DRAFT);
93
+
94
+ await this.evt.emit('onLoadDraftSuccess', undefined);
95
+ this.state.isLoaded = true;
96
+ return this.data;
97
+ }
98
+
62
99
  /**
63
100
  * 部件加载数据行为
64
101
  *
@@ -70,42 +107,30 @@ export class EditFormController
70
107
  this.context,
71
108
  this.model.appDataEntityId!,
72
109
  );
73
- const queryParams = { ...this.params };
74
-
75
- // 新建默认值给到graft接口,接口会回来
76
- let params: IData = {};
110
+ // 加载草稿单独走一个方法
77
111
  if (isLoadDraft) {
78
- params = await this.getDraftParams();
79
- Object.assign(queryParams, params);
112
+ return this.loadDraft();
80
113
  }
81
114
 
82
- await this.startLoading();
115
+ const queryParams = { ...this.params };
116
+
83
117
  let res;
84
118
  try {
85
- res = isLoadDraft
86
- ? await this.service.getDraft(this.context, queryParams)
87
- : await this.service.get(this.context, queryParams);
119
+ await this.startLoading();
120
+ await this.evt.emit('onBeforeLoad', undefined);
121
+ res = await this.service.get(this.context, queryParams);
122
+ } catch (error) {
123
+ await this.evt.emit('onLoadError', undefined);
124
+ throw error;
88
125
  } finally {
89
126
  await this.endLoading();
90
127
  }
91
128
 
92
- if (isLoadDraft) {
93
- // !getDraft的时候不替换,进行合并,空值不覆盖
94
- mergeInLeft(this.data, res.data);
95
- } else {
96
- this.state.data = res.data;
97
- }
98
129
  this.state.modified = false;
99
130
  this.state.data = res.data;
100
- mergeDefaultInLeft(this.data, params);
101
- this.formStateNotify(
102
- isLoadDraft ? FormNotifyState.DRAFT : FormNotifyState.LOAD,
103
- );
131
+ this.formStateNotify(FormNotifyState.LOAD);
104
132
 
105
- await this.evt.emit(
106
- isLoadDraft ? 'onLoadDraftSuccess' : 'onLoadSuccess',
107
- undefined,
108
- );
133
+ await this.evt.emit('onLoadSuccess', undefined);
109
134
  this.state.isLoaded = true;
110
135
  return this.data;
111
136
  }
@@ -128,12 +153,16 @@ export class EditFormController
128
153
  throw new RuntimeError('请检查表单填写!');
129
154
  }
130
155
  await this.startLoading();
156
+ await this.evt.emit('onBeforeSave', undefined);
131
157
  let res;
132
158
  try {
133
159
  res =
134
160
  this.data.srfuf === Srfuf.CREATE
135
161
  ? await this.service.create(this.context, this.data)
136
162
  : await this.service.update(this.context, this.data);
163
+ } catch (error) {
164
+ await this.evt.emit('onSaveError', undefined);
165
+ throw error;
137
166
  } finally {
138
167
  await this.endLoading();
139
168
  }
@@ -159,6 +188,7 @@ export class EditFormController
159
188
  // 新建数据清空数据
160
189
  let res: IHttpResponse | undefined;
161
190
  let ok: boolean = false;
191
+ await this.evt.emit('onBeforeRemove', undefined);
162
192
  // 新建的数据不用进行后台删除
163
193
  if (this.data.srfuf === Srfuf.UPDATE) {
164
194
  ok = await ibiz.modal.confirm({
@@ -172,6 +202,9 @@ export class EditFormController
172
202
  await this.startLoading();
173
203
  try {
174
204
  res = await this.service.remove(this.context, this.params);
205
+ } catch (error) {
206
+ await this.evt.emit('onRemoveError', undefined);
207
+ throw error;
175
208
  } finally {
176
209
  await this.endLoading();
177
210
  }
@@ -1,7 +1,12 @@
1
- import { IControl, IDEFormMDCtrl } from '@ibiz/model-core';
1
+ import { IControl, IDEFormDetail, IDEFormMDCtrl } from '@ibiz/model-core';
2
2
  import { IFormController } from '../../../../../../../interface';
3
+ import { findChildFormDetails } from '../../../../../../../model';
4
+ import { getFormDetailProvider } from '../../../../../../../register';
3
5
  import { CTX } from '../../../../../../ctx';
4
6
  import { EditFormController } from '../../../../edit-form';
7
+ import { FormController } from '../../../../form';
8
+ import { FormGroupPanelController } from '../../../form-group-panel';
9
+ import { FormItemController } from '../../../form-item';
5
10
 
6
11
  /**
7
12
  * 表单多数据部件项控制器
@@ -28,9 +33,41 @@ export class FormMDCtrlItemController
28
33
  this.state.isSimple = true;
29
34
  }
30
35
 
31
- public async onInit(): Promise<void> {
32
- await this.initDetailControllers(
33
- (this.model as IDEFormMDCtrl).deformDetails,
36
+ protected async initDetailControllers(
37
+ details: IDEFormDetail[] = (this.model as IDEFormMDCtrl).deformDetails!,
38
+ form: FormController = this,
39
+ parent: FormGroupPanelController | undefined = undefined,
40
+ ): Promise<void> {
41
+ await Promise.all(
42
+ details.map(async detail => {
43
+ // 生成表单成员控制器
44
+ const detailProvider = await getFormDetailProvider(detail);
45
+ if (!detailProvider) {
46
+ return;
47
+ }
48
+ form.providers[detail.id!] = detailProvider;
49
+ const detailController = await detailProvider.createController(
50
+ detail,
51
+ form,
52
+ parent,
53
+ );
54
+ form.details[detail.id!] = detailController;
55
+ if (
56
+ detail.detailType === 'FORMITEM' ||
57
+ detail.detailType === 'MDCTRL'
58
+ ) {
59
+ form.formItems.push(detailController as FormItemController);
60
+ }
61
+ // 有子成员的生成子控制器
62
+ const childDetails = findChildFormDetails(detail);
63
+ if (childDetails.length) {
64
+ await this.initDetailControllers(
65
+ childDetails,
66
+ form,
67
+ detailController as FormGroupPanelController,
68
+ );
69
+ }
70
+ }),
34
71
  );
35
72
  }
36
73
  }
@@ -1,15 +1,5 @@
1
- // import { useCtx } from '@ibiz-template/vue3-util';
2
- import { IDEFormDetail } from '@ibiz/model-core';
3
- // import { reactive } from 'vue';
4
- import { FormController } from '../../../../form';
5
- import { FormGroupPanelController } from '../../../form-group-panel';
6
1
  import { FormMDCtrlContentTypeController } from '../../form-mdctrl-content-type.controller';
7
2
  import { FormMDCtrlItemController } from './form-mdctrl-repeater-form-item.controller';
8
- import { FormItemController } from '../../../form-item';
9
- import { IFormDetailController } from '../../../../../../../interface';
10
- import { findChildFormDetails } from '../../../../../../../model';
11
- import { getFormDetailProvider } from '../../../../../../../register';
12
- import { CTX } from '../../../../../../ctx';
13
3
 
14
4
  /**
15
5
  * 表单多数据部件表格类型控制器
@@ -22,108 +12,6 @@ import { CTX } from '../../../../../../ctx';
22
12
  * @implements {IFormController}
23
13
  */
24
14
  export class FormMDCtrlRepeaterFormController extends FormMDCtrlContentTypeController {
25
- /**
26
- * 表单项控制器的集合(二维数组)
27
- *
28
- * @author zk
29
- * @date 2023-07-25 05:07:56
30
- * @type {Array<Array<FormItemController>>}
31
- * @memberof FormMDCtrlController
32
- */
33
- formDetails: Array<
34
- Array<{ name: string; detailType: string; c: IFormDetailController }>
35
- > = [];
36
-
37
- /**
38
- * 表单ctx
39
- *
40
- * @author zk
41
- * @date 2023-07-31 12:07:00
42
- * @private
43
- * @type {CTX}
44
- * @memberof FormMDCtrlRepeaterFormController
45
- */
46
- private formCtx!: CTX;
47
-
48
- /**
49
- * uiState
50
- *
51
- * @author zk
52
- * @date 2023-07-31 12:07:07
53
- * @type {{ isInit: boolean }}
54
- * @memberof FormMDCtrlRepeaterFormController
55
- */
56
- state: { isInit: boolean } = { isInit: false };
57
-
58
- /**
59
- * 初始化表单成员控制器
60
- *
61
- * @author lxm
62
- * @date 2022-08-24 21:08:48
63
- * @protected
64
- */
65
- protected async initFormMDCtrlItemControllers(
66
- details: IDEFormDetail[],
67
- index: number,
68
- form: FormController = this.parent.form,
69
- data: IData = {},
70
- parent: FormGroupPanelController | undefined = undefined,
71
- ): Promise<IData> {
72
- const formData = data;
73
- // const formData = reactive(data);
74
-
75
- const formController = new FormMDCtrlItemController(
76
- this.model,
77
- this.parent.form.context,
78
- this.parent.form.params,
79
- this.formCtx,
80
- formData,
81
- );
82
- await formController.onInit();
83
- formController.evt.on('onFormDataChange', arg => {
84
- if (arg.data.length > 0) {
85
- this.onDataItemChange(arg.data[0], index);
86
- }
87
- });
88
-
89
- formController.state.isLoaded = true;
90
- await Promise.all(
91
- details.map(async detail => {
92
- // 生成表单成员控制器
93
- const detailProvider = await getFormDetailProvider(detail);
94
- if (!detailProvider) {
95
- return;
96
- }
97
- form.providers[detail.id!] = detailProvider;
98
- const detailController = await detailProvider.createController(
99
- detail,
100
- formController,
101
- parent,
102
- );
103
- if (!this.formDetails[index]) {
104
- this.formDetails[index] = [];
105
- }
106
- this.formDetails[index].push({
107
- name: detail.id!,
108
- detailType: detail.detailType!,
109
- c: detailController,
110
- });
111
- // 有子成员的生成子控制器
112
- const childDetails = findChildFormDetails(detail);
113
- if (childDetails.length) {
114
- await this.initFormMDCtrlItemControllers(
115
- childDetails,
116
- index,
117
- formController,
118
- data,
119
- detailController as FormGroupPanelController,
120
- );
121
- }
122
- }),
123
- );
124
- return data;
125
- }
126
-
127
15
  /**
128
16
  * 数据插入
129
17
  *
@@ -132,10 +20,7 @@ export class FormMDCtrlRepeaterFormController extends FormMDCtrlContentTypeContr
132
20
  * @memberof FormMDCtrlRepeaterFormController
133
21
  */
134
22
  async onDataInsert(): Promise<void> {
135
- const data = await this.initFormMDCtrlItemControllers(
136
- this.model.deformDetails!,
137
- this.data.length,
138
- );
23
+ const data = {};
139
24
  super.onDataInsert(data);
140
25
  }
141
26
 
@@ -152,41 +37,9 @@ export class FormMDCtrlRepeaterFormController extends FormMDCtrlContentTypeContr
152
37
  return;
153
38
  }
154
39
  super.onDataRemove(index);
155
- this.formDetails.splice(index, 1);
156
40
  }
157
41
 
158
- /**
159
- * 初始化formCtx
160
- *
161
- * @author zk
162
- * @date 2023-07-29 05:07:21
163
- * @memberof FormMDCtrlRepeaterFormController
164
- */
165
- useFormMdCtrlCtx(): void {
166
- // this.formCtx = useCtx();
167
- }
168
-
169
- /**
170
- * 初始化数据
171
- *
172
- * @author zk
173
- * @date 2023-07-31 12:07:37
174
- * @memberof FormMDCtrlRepeaterFormController
175
- */
176
- async initData(): Promise<void> {
177
- super.initData();
178
- await Promise.all(
179
- this.data.map(async (item, index) => {
180
- await this.initFormMDCtrlItemControllers(
181
- this.model.deformDetails!,
182
- index,
183
- this.parent.form,
184
- item,
185
- );
186
- }),
187
- );
188
- this.state.isInit = true;
189
- }
42
+ formControllerArray: Array<FormMDCtrlItemController> = [];
190
43
 
191
44
  /**
192
45
  * 表单项值规则校验
@@ -196,18 +49,17 @@ export class FormMDCtrlRepeaterFormController extends FormMDCtrlContentTypeContr
196
49
  * @memberof FormMDCtrlRepeaterFormController
197
50
  */
198
51
  async validate(): Promise<boolean> {
199
- const values: Promise<boolean>[] = [];
200
- this.formDetails.forEach(details => {
201
- details.forEach(detail => {
202
- if (detail.detailType === 'FORMITEM') {
203
- const c = detail.c as FormItemController;
204
- values.push(c.validate());
205
- }
206
- });
207
- });
208
-
52
+ const values: Promise<boolean>[] = this.formControllerArray.map(
53
+ (c: FormMDCtrlItemController) => {
54
+ return c.validate();
55
+ },
56
+ );
209
57
  const results = await Promise.all(values);
210
58
  // 找不到value为false即全部是true
211
59
  return results.findIndex(value => !value) === -1;
212
60
  }
61
+
62
+ setFromController(c: FormMDCtrlItemController): void {
63
+ this.formControllerArray.push(c);
64
+ }
213
65
  }