@ibiz-template/runtime 0.2.13 → 0.2.16

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 (46) hide show
  1. package/dist/index.esm.js +106 -71
  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.js +1 -1
  5. package/out/controller/control/form/edit-form/edit-form.controller.d.ts +3 -3
  6. package/out/controller/control/form/edit-form/edit-form.controller.d.ts.map +1 -1
  7. package/out/controller/control/form/edit-form/edit-form.controller.js +24 -8
  8. package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
  9. package/out/controller/control/grid/grid/grid.controller.js +0 -4
  10. package/out/controller/control/medit-view-panel/medit-view-panel.controller.d.ts +3 -8
  11. package/out/controller/control/medit-view-panel/medit-view-panel.controller.d.ts.map +1 -1
  12. package/out/controller/control/medit-view-panel/medit-view-panel.controller.js +28 -39
  13. package/out/controller/control/panel/panel/panel-item.controller.d.ts +8 -9
  14. package/out/controller/control/panel/panel/panel-item.controller.d.ts.map +1 -1
  15. package/out/controller/control/panel/panel/panel-item.controller.js +2 -2
  16. package/out/controller/control/wizard-panel/wizard-panel.controller.d.ts +8 -0
  17. package/out/controller/control/wizard-panel/wizard-panel.controller.d.ts.map +1 -1
  18. package/out/controller/control/wizard-panel/wizard-panel.controller.js +58 -15
  19. package/out/interface/common/i-data-ability-params/i-data-ability-params.d.ts +7 -0
  20. package/out/interface/common/i-data-ability-params/i-data-ability-params.d.ts.map +1 -1
  21. package/out/interface/controller/controller/control/i-control.controller.d.ts +9 -0
  22. package/out/interface/controller/controller/control/i-control.controller.d.ts.map +1 -1
  23. package/out/interface/controller/controller/control/i-edit-form.controller.d.ts +10 -1
  24. package/out/interface/controller/controller/control/i-edit-form.controller.d.ts.map +1 -1
  25. package/out/interface/controller/controller/control/i-md-control.controller.d.ts +2 -2
  26. package/out/interface/controller/controller/control/i-md-control.controller.d.ts.map +1 -1
  27. package/out/interface/controller/controller/control/i-medit-view-panel.controller.d.ts +6 -0
  28. package/out/interface/controller/controller/control/i-medit-view-panel.controller.d.ts.map +1 -1
  29. package/out/interface/controller/state/control/i-medit-view-panel.state.d.ts +5 -0
  30. package/out/interface/controller/state/control/i-medit-view-panel.state.d.ts.map +1 -1
  31. package/out/interface/controller/state/control/panel-item/i-panel-item.state.d.ts +8 -0
  32. package/out/interface/controller/state/control/panel-item/i-panel-item.state.d.ts.map +1 -1
  33. package/package.json +8 -7
  34. package/src/controller/common/control/md-control.controller.ts +1 -1
  35. package/src/controller/control/form/edit-form/edit-form.controller.ts +27 -10
  36. package/src/controller/control/grid/grid/grid.controller.ts +0 -3
  37. package/src/controller/control/medit-view-panel/medit-view-panel.controller.ts +30 -46
  38. package/src/controller/control/panel/panel/panel-item.controller.ts +7 -7
  39. package/src/controller/control/wizard-panel/wizard-panel.controller.ts +67 -18
  40. package/src/interface/common/i-data-ability-params/i-data-ability-params.ts +8 -0
  41. package/src/interface/controller/controller/control/i-control.controller.ts +10 -0
  42. package/src/interface/controller/controller/control/i-edit-form.controller.ts +11 -1
  43. package/src/interface/controller/controller/control/i-md-control.controller.ts +2 -2
  44. package/src/interface/controller/controller/control/i-medit-view-panel.controller.ts +8 -1
  45. package/src/interface/controller/state/control/i-medit-view-panel.state.ts +6 -0
  46. package/src/interface/controller/state/control/panel-item/i-panel-item.state.ts +9 -0
@@ -19,12 +19,12 @@ export interface MDCtrlLoadParams extends IDataAbilityParams {
19
19
  }
20
20
  export interface MDCtrlRemoveParams extends IDataAbilityParams {
21
21
  /**
22
- * 是否静默删除
22
+ * 是否不需要刷新(默认为否,如果不需要刷新传true)
23
23
  * @author lxm
24
24
  * @date 2023-08-17 06:04:23
25
25
  * @type {boolean}
26
26
  */
27
- silent?: boolean;
27
+ notRefresh?: boolean;
28
28
  }
29
29
  /**
30
30
  * 多数据部件控制器
@@ -1 +1 @@
1
- {"version":3,"file":"i-md-control.controller.d.ts","sourceRoot":"","sources":["../../../../../src/interface/controller/controller/control/i-md-control.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB,CACnC,CAAC,SAAS,UAAU,GAAG,UAAU,EACjC,CAAC,SAAS,eAAe,GAAG,eAAe,EAC3C,CAAC,SAAS,eAAe,GAAG,eAAe,CAC3C,SAAQ,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnC;;;;;OAKG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAEhD;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjD;;;;;OAKG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;;;;OAKG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;;;;;OAMG;IACH,UAAU,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;;;OAKG;IACH,OAAO,IAAI,KAAK,EAAE,CAAC;IAEnB;;;;;;;OAOG;IACH,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvC;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC"}
1
+ {"version":3,"file":"i-md-control.controller.d.ts","sourceRoot":"","sources":["../../../../../src/interface/controller/controller/control/i-md-control.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB,CACnC,CAAC,SAAS,UAAU,GAAG,UAAU,EACjC,CAAC,SAAS,eAAe,GAAG,eAAe,EAC3C,CAAC,SAAS,eAAe,GAAG,eAAe,CAC3C,SAAQ,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnC;;;;;OAKG;IACH,IAAI,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAEhD;;;;;OAKG;IACH,MAAM,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjD;;;;;OAKG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;;;;OAKG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;;;;;OAMG;IACH,UAAU,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;;;OAKG;IACH,OAAO,IAAI,KAAK,EAAE,CAAC;IAEnB;;;;;;;OAOG;IACH,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvC;;;;;;OAMG;IACH,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC"}
@@ -10,5 +10,11 @@ import { IMDControlController } from './i-md-control.controller';
10
10
  * @extends {IMDControlController<IDEMultiEditViewPanel, IMEditViewPanelState, IMEditViewPanelEvent>}
11
11
  */
12
12
  export interface IMEditViewPanelController<T extends IDEMultiEditViewPanel = IDEMultiEditViewPanel, S extends IMEditViewPanelState = IMEditViewPanelState, E extends IMEditViewPanelEvent = IMEditViewPanelEvent> extends IMDControlController<T, S, E> {
13
+ /**
14
+ * 处理添加
15
+ *
16
+ * @memberof IMEditViewPanelController
17
+ */
18
+ handleAdd(): Promise<void>;
13
19
  }
14
20
  //# sourceMappingURL=i-medit-view-panel.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"i-medit-view-panel.controller.d.ts","sourceRoot":"","sources":["../../../../../src/interface/controller/controller/control/i-medit-view-panel.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB,CACxC,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,EACvD,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EACrD,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,CACrD,SAAQ,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;CAAG"}
1
+ {"version":3,"file":"i-medit-view-panel.controller.d.ts","sourceRoot":"","sources":["../../../../../src/interface/controller/controller/control/i-medit-view-panel.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB,CACxC,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,EACvD,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EACrD,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,CACrD,SAAQ,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrC;;;;OAIG;IACH,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B"}
@@ -25,5 +25,10 @@ export interface IMEditViewPanelState extends IMDControlState {
25
25
  *
26
26
  */
27
27
  activeTab: string;
28
+ /**
29
+ * 是否需要滚动
30
+ *
31
+ */
32
+ isNeedScroll: boolean;
28
33
  }
29
34
  //# sourceMappingURL=i-medit-view-panel.state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"i-medit-view-panel.state.d.ts","sourceRoot":"","sources":["../../../../../src/interface/controller/state/control/i-medit-view-panel.state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,WAAW,YAAY;IAE3B,EAAE,EAAE,MAAM,CAAC;IAEX,OAAO,EAAE,KAAK,CAAC;IAEf,MAAM,EAAE,KAAK,CAAC;IAEd,IAAI,EAAE,SAAS,CAAC;IAEhB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D;;;OAGG;IACH,YAAY,EAAE,YAAY,EAAE,CAAC;IAE7B;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"i-medit-view-panel.state.d.ts","sourceRoot":"","sources":["../../../../../src/interface/controller/state/control/i-medit-view-panel.state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,WAAW,YAAY;IAE3B,EAAE,EAAE,MAAM,CAAC;IAEX,OAAO,EAAE,KAAK,CAAC;IAEf,MAAM,EAAE,KAAK,CAAC;IAEd,IAAI,EAAE,SAAS,CAAC;IAEhB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D;;;OAGG;IACH,YAAY,EAAE,YAAY,EAAE,CAAC;IAE7B;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAC;CACvB"}
@@ -16,6 +16,14 @@ export interface IPanelItemState extends IColState {
16
16
  * @type {IPanelItemClass}
17
17
  */
18
18
  class: IPanelItemClass;
19
+ /**
20
+ * 是否必填
21
+ *
22
+ * @author chitanda
23
+ * @date 2023-11-11 09:11:53
24
+ * @type {boolean}
25
+ */
26
+ required: boolean;
19
27
  }
20
28
  export interface IPanelItemClass {
21
29
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"i-panel-item.state.d.ts","sourceRoot":"","sources":["../../../../../../src/interface/controller/state/control/panel-item/i-panel-item.state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD;;;;;;;OAOG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;;;;OAKG;IACH,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;OAKG;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB"}
1
+ {"version":3,"file":"i-panel-item.state.d.ts","sourceRoot":"","sources":["../../../../../../src/interface/controller/state/control/panel-item/i-panel-item.state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD;;;;;;;OAOG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;;;;OAKG;IACH,KAAK,EAAE,eAAe,CAAC;IAEvB;;;;;;OAMG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;OAKG;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;OAKG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/runtime",
3
- "version": "0.2.13",
3
+ "version": "0.2.16",
4
4
  "description": "控制器包",
5
5
  "type": "module",
6
6
  "main": "out/index.js",
@@ -29,11 +29,11 @@
29
29
  "author": "chitanda",
30
30
  "license": "MIT",
31
31
  "devDependencies": {
32
- "@ibiz-template/core": "^0.2.13",
32
+ "@ibiz-template/core": "^0.2.15",
33
33
  "@ibiz/model-core": "^0.0.20",
34
- "@types/path-browserify": "^1.0.0",
35
- "@types/qs": "^6.9.8",
36
- "@types/systemjs": "^6.13.3",
34
+ "@types/path-browserify": "^1.0.2",
35
+ "@types/qs": "^6.9.10",
36
+ "@types/systemjs": "^6.13.5",
37
37
  "async-validator": "^4.2.5",
38
38
  "dayjs": "^1.11.10",
39
39
  "echarts": "^5.4.3",
@@ -46,7 +46,7 @@
46
46
  "ramda": "^0.29.1"
47
47
  },
48
48
  "peerDependencies": {
49
- "@ibiz-template/core": "^0.1.0",
49
+ "@ibiz-template/core": "^0.2.13",
50
50
  "@ibiz/model-core": "^0.0.20",
51
51
  "async-validator": "^4.2.5",
52
52
  "dayjs": "^1.11.7",
@@ -58,5 +58,6 @@
58
58
  "qs": "^6.11.0",
59
59
  "qx-util": "^0.4.8",
60
60
  "ramda": "^0.29.0"
61
- }
61
+ },
62
+ "gitHead": "da5f79d37f6d81f1dc34eb4fa2e4b07bb08d6249"
62
63
  }
@@ -318,7 +318,7 @@ export class MDControlController<
318
318
  }
319
319
 
320
320
  // 刷新数据,补全这一页缺少的数据
321
- if (needRefresh) {
321
+ if (needRefresh && !args?.notRefresh) {
322
322
  await this.refresh();
323
323
  }
324
324
  } catch (error) {
@@ -17,6 +17,7 @@ import {
17
17
  IEditViewState,
18
18
  IEditViewEvent,
19
19
  IDataAbilityParams,
20
+ FormSaveParams,
20
21
  } from '../../../../interface';
21
22
  import { calcDeCodeNameById, hasDeCodeName } from '../../../../model';
22
23
  import { Srfuf, ControlVO } from '../../../../service';
@@ -231,10 +232,11 @@ export class EditFormController
231
232
  * @author lxm
232
233
  * @date 2022-08-31 22:08:40
233
234
  */
234
- async save(args?: IDataAbilityParams): Promise<IData> {
235
+ async save(args?: FormSaveParams): Promise<IData> {
236
+ const silent = args?.silent === true;
235
237
  // 如果数据正在处理中,则延迟保存
236
238
  if (this.state.processing) {
237
- const data = await awaitTimeout(500, this.save.bind(this));
239
+ const data = await awaitTimeout(500, this.save.bind(this), [args]);
238
240
  return data!;
239
241
  }
240
242
 
@@ -242,7 +244,10 @@ export class EditFormController
242
244
  if (!isValid) {
243
245
  throw new RuntimeError('请检查表单填写!');
244
246
  }
245
- await this.startLoading();
247
+
248
+ if (!silent) {
249
+ await this.startLoading();
250
+ }
246
251
  await this.evt.emit('onBeforeSave', undefined);
247
252
 
248
253
  const { context, data } = this.handlerAbilityParams(args);
@@ -261,20 +266,31 @@ export class EditFormController
261
266
  });
262
267
  throw error;
263
268
  } finally {
264
- await this.endLoading();
269
+ if (!silent) {
270
+ await this.endLoading();
271
+ }
265
272
  }
266
273
 
274
+ const noFillBack = args?.noFillBack === true;
267
275
  // 保存结束后合并修改临时主键
268
276
  if (res.data) {
269
- mergeInLeft(this.data, res.data);
277
+ // 回填数据的合并后台数据
278
+ if (noFillBack) {
279
+ // 自动保存不回填数据的时候只更新更新时间
280
+ this.data.updatedate = res.data.updatedate;
281
+ } else {
282
+ mergeInLeft(this.data, res.data);
283
+ }
270
284
  this.data.tempsrfkey = this.data.srfkey;
271
285
  }
272
286
  this.state.modified = false;
273
287
  await this.evt.emit('onSaveSuccess', undefined);
274
288
  this.formStateNotify(FormNotifyState.SAVE);
275
- this.actionNotification(`${isCreate ? 'CREATE' : 'UPDATE'}SUCCESS`, {
276
- default: `${this.data.srfmajortext || ''}保存成功`,
277
- });
289
+ if (!silent) {
290
+ this.actionNotification(`${isCreate ? 'CREATE' : 'UPDATE'}SUCCESS`, {
291
+ default: `${this.data.srfmajortext || ''}保存成功`,
292
+ });
293
+ }
278
294
  if (this.view.modal.mode === 'ROUTE') {
279
295
  ibiz.mc.command.send(
280
296
  this.data.$origin,
@@ -342,7 +358,7 @@ export class EditFormController
342
358
  * @date 2022-09-01 09:09:36
343
359
  * @returns {*}
344
360
  */
345
- async goBack(): Promise<void> {
361
+ async goBack(): Promise<IData> {
346
362
  await this.startLoading();
347
363
  let res;
348
364
  try {
@@ -354,6 +370,7 @@ export class EditFormController
354
370
  if (res.data) {
355
371
  mergeInLeft(this.data, res.data);
356
372
  }
373
+ return this.data;
357
374
  }
358
375
 
359
376
  /**
@@ -493,7 +510,7 @@ export class EditFormController
493
510
  if (this.model.enableAutoSave) {
494
511
  // 自动保存静默,报错直接控制台输出
495
512
  try {
496
- await this.save();
513
+ await this.save({ silent: true, noFillBack: true });
497
514
  } catch (error) {
498
515
  ibiz.log.error(error);
499
516
  }
@@ -500,7 +500,6 @@ export class GridController
500
500
  if (!isValid) {
501
501
  throw new RuntimeError('行数据校验不通过,保存取消');
502
502
  }
503
- await this.startLoading();
504
503
  let res;
505
504
  const deName = calcDeCodeNameById(this.model.appDataEntityId!);
506
505
  const tempContext = this.context.clone();
@@ -516,8 +515,6 @@ export class GridController
516
515
  data: rowState.data,
517
516
  });
518
517
  throw error;
519
- } finally {
520
- await this.endLoading();
521
518
  }
522
519
  // 后续处理
523
520
  const index = this.findRowStateIndex(data);
@@ -10,8 +10,7 @@ import {
10
10
  IPanelUiItem,
11
11
  DataChangeEvent,
12
12
  } from '../../../interface';
13
- import { calcDeCodeNameById } from '../../../model';
14
- import { ControlVO, Srfuf } from '../../../service';
13
+ import { ControlVO } from '../../../service';
15
14
  import { MDControlController } from '../../common';
16
15
  import { MEditViewPanelService } from './medit-view-panel.service';
17
16
 
@@ -32,12 +31,6 @@ export class MEditViewPanelController
32
31
  {
33
32
  declare service: MEditViewPanelService;
34
33
 
35
- /**
36
- * 是否显示底部按钮
37
- *
38
- */
39
- showButton: boolean = true;
40
-
41
34
  /**
42
35
  * 当前应用视图参数对象
43
36
  *
@@ -56,6 +49,7 @@ export class MEditViewPanelController
56
49
  this.state.panelUiItems = [];
57
50
  this.state.activeTab = '';
58
51
  this.state.size = 1000;
52
+ this.state.isNeedScroll = false;
59
53
  }
60
54
 
61
55
  /**
@@ -99,12 +93,17 @@ export class MEditViewPanelController
99
93
  items: ControlVO[],
100
94
  ): Promise<ControlVO[]> {
101
95
  await super.afterLoad(args, items);
96
+ // 找出临时UI数据
97
+ const tempPanelUiItems = this.state.panelUiItems.filter(UiItem => {
98
+ return UiItem.id.startsWith('mockId:');
99
+ });
102
100
  this.state.panelUiItems = [];
103
- this.doItems(items);
101
+ this.doItems(items, tempPanelUiItems);
104
102
  // 设置默认激活
105
103
  if (
106
104
  this.model.panelStyle === 'TAB_TOP' &&
107
- this.state.panelUiItems.length > 0
105
+ this.state.panelUiItems.length > 0 &&
106
+ tempPanelUiItems.length === 0
108
107
  ) {
109
108
  this.state.activeTab = this.state.panelUiItems[0].id;
110
109
  }
@@ -158,11 +157,14 @@ export class MEditViewPanelController
158
157
  * @author: zhujiamin
159
158
  * @Date: 2023-10-16 15:00:02
160
159
  */
161
- doItems(datas: ControlVO[]): void {
160
+ doItems(datas: ControlVO[], tempPanelUiItems?: IPanelUiItem[]): void {
162
161
  datas.forEach((arg: ControlVO) => {
163
162
  const item = this.handlePanelItemParams(arg);
164
163
  this.state.panelUiItems.push(item);
165
164
  });
165
+ if (tempPanelUiItems) {
166
+ this.state.panelUiItems.push(...tempPanelUiItems);
167
+ }
166
168
  }
167
169
 
168
170
  /**
@@ -172,6 +174,7 @@ export class MEditViewPanelController
172
174
  * @Date: 2023-10-16 15:18:01
173
175
  */
174
176
  async handleAdd(): Promise<void> {
177
+ this.state.isNeedScroll = true;
175
178
  this.doItems([{ srfuf: 0 } as ControlVO]);
176
179
  if (this.model.panelStyle === 'TAB_TOP') {
177
180
  // 上分页添加后激活最后一个
@@ -188,6 +191,7 @@ export class MEditViewPanelController
188
191
  * @Date: 2023-10-16 15:23:59
189
192
  */
190
193
  async handleDelete(item: IPanelUiItem): Promise<void> {
194
+ this.state.isNeedScroll = false;
191
195
  // 新建的界面上删除即可
192
196
  if (item.data.srfuf === 0) {
193
197
  // 删除items中已删除的项
@@ -196,7 +200,7 @@ export class MEditViewPanelController
196
200
  });
197
201
  this.state.panelUiItems.splice(index, 1);
198
202
  } else {
199
- await this.remove({ data: [item.data] });
203
+ await this.remove({ data: [item.data], notRefresh: true });
200
204
  }
201
205
  }
202
206
 
@@ -253,53 +257,33 @@ export class MEditViewPanelController
253
257
  onViewDataChange(args: DataChangeEvent, id: string): void {
254
258
  // 新建的保存成功后该部件需要保存来更新数据
255
259
  if (args.eventName === 'onSaveSuccess') {
256
- this.save(args.data[0] as ControlVO, id);
260
+ this.handleDataChange(args.data[0] as ControlVO, id);
257
261
  }
258
262
  }
259
263
 
260
264
  /**
261
- * 保存
265
+ * 处理数据变化
262
266
  *
263
267
  * @param {ControlVO} data
264
268
  * @returns {*} {Promise<void>}
265
269
  */
266
- async save(data: ControlVO, id: string): Promise<void> {
270
+ async handleDataChange(data: ControlVO, id: string): Promise<void> {
267
271
  const panelUiItemIndex = this.state.panelUiItems.findIndex(
268
272
  item => item.id === id,
269
273
  );
270
- if (!panelUiItemIndex) {
274
+ if (panelUiItemIndex < 0) {
271
275
  throw new RuntimeError('编辑视图面板部件UI数据不存在');
272
276
  }
273
- await this.startLoading();
274
- let res;
275
- const isCreate = data.srfuf === Srfuf.CREATE;
276
- const deName = calcDeCodeNameById(this.model.appDataEntityId!);
277
- const tempContext = this.context.clone();
278
- tempContext[deName] = data.srfkey;
279
- try {
280
- res = isCreate
281
- ? await this.service.create(tempContext, data)
282
- : await this.service.update(tempContext, data);
283
- } catch (error) {
284
- await this.evt.emit('onSaveError', undefined);
285
- this.actionNotification(`${isCreate ? 'CREATE' : 'UPDATE'}ERROR`, {
286
- error: error as Error,
287
- data: this.state.panelUiItems[panelUiItemIndex].data,
288
- });
289
- throw error;
290
- } finally {
291
- await this.endLoading();
277
+ const tempUiItem = this.state.panelUiItems[panelUiItemIndex];
278
+ if (tempUiItem.id.startsWith('mockId:')) {
279
+ this.state.panelUiItems[panelUiItemIndex] =
280
+ this.handlePanelItemParams(data);
281
+ } else {
282
+ tempUiItem.srfmajortext = data.srfmajortext!;
283
+ }
284
+ if (this.model.panelStyle === 'TAB_TOP') {
285
+ // 上分页保存后激活保存的这一个
286
+ this.state.activeTab = this.state.panelUiItems[panelUiItemIndex].id;
292
287
  }
293
- // 后续处理
294
- const index = this.state.items.findIndex(
295
- item => item.srfkey === data.srfkey,
296
- );
297
- this.state.items.splice(index, 1, res.data);
298
- this.state.panelUiItems.splice(
299
- panelUiItemIndex,
300
- 1,
301
- this.handlePanelItemParams(res.data),
302
- );
303
- await this.evt.emit('onSaveSuccess', undefined);
304
288
  }
305
289
  }
@@ -4,12 +4,12 @@ import {
4
4
  IPanelItemController,
5
5
  IPanelController,
6
6
  IPanelDataContainerController,
7
+ IPanelItemState,
7
8
  } from '../../../../interface';
8
9
  import { calcLayoutHeightWidth, calcDynaClass } from '../../../../model';
9
10
  import { verifyPanelGroupLogic } from '../../../../utils';
10
11
  import { PanelNotifyState } from '../../../constant';
11
12
  import { PanelItemState } from './panel-item.state';
12
- import { PanelController } from './panel.controller';
13
13
 
14
14
  export class PanelItemController<T extends IPanelItem = IPanelItem>
15
15
  implements IPanelItemController
@@ -19,9 +19,9 @@ export class PanelItemController<T extends IPanelItem = IPanelItem>
19
19
  *
20
20
  * @author chitanda
21
21
  * @date 2023-01-04 09:01:04
22
- * @type {PanelItemState}
22
+ * @type {IPanelItemState}
23
23
  */
24
- state: PanelItemState;
24
+ state: IPanelItemState;
25
25
 
26
26
  /**
27
27
  * 数据父容器
@@ -72,13 +72,13 @@ export class PanelItemController<T extends IPanelItem = IPanelItem>
72
72
  * @author lxm
73
73
  * @date 2023-04-27 06:37:12
74
74
  * @param {T} model 面板成员模型
75
- * @param {PanelController} panel 面板控制器
76
- * @param {PanelItemController} [parent] 父容器控制器
75
+ * @param {IPanelController} panel 面板控制器
76
+ * @param {IPanelItemController} [parent] 父容器控制器
77
77
  */
78
78
  constructor(
79
79
  public readonly model: T,
80
- public readonly panel: PanelController,
81
- public readonly parent?: PanelItemController,
80
+ public readonly panel: IPanelController,
81
+ public readonly parent?: IPanelItemController,
82
82
  ) {
83
83
  this.state = this.createState();
84
84
  }
@@ -207,6 +207,29 @@ export class WizardPanelController
207
207
  }
208
208
  }
209
209
 
210
+ /**
211
+ * 根据tag获取应该激活的向导表单
212
+ * @param {string} tag
213
+ * @return {*}
214
+ * @author: zhujiamin
215
+ * @Date: 2023-11-10 18:35:37
216
+ */
217
+ getWizardFormByTag(tag: string): IDEWizardForm | undefined {
218
+ if (!this.model.dewizard?.dewizardForms) {
219
+ throw new RuntimeError(`没有配置向导表单集合`);
220
+ return;
221
+ }
222
+ const wizardForm = this.model.dewizard.dewizardForms.find(
223
+ (form: IDEWizardForm) => {
224
+ return form.formTag === tag;
225
+ },
226
+ );
227
+ if (!wizardForm) {
228
+ throw new RuntimeError(`找不到标识为${tag}的向导表单`);
229
+ }
230
+ return wizardForm;
231
+ }
232
+
210
233
  /**
211
234
  * 执行初始化操作,存在初始化实体行为的时候加载数据并把主键放入上下文
212
235
  *
@@ -221,8 +244,22 @@ export class WizardPanelController
221
244
  if (res.data && res.data.srfkey) {
222
245
  this.context[deName] = res.data.srfkey;
223
246
  }
247
+ // 初始化时状态向导面板根据状态属性去决定当前激活哪个表单
248
+ if (
249
+ res.data &&
250
+ this.model.stateAppDEFieldId &&
251
+ res.data[this.model.stateAppDEFieldId]
252
+ ) {
253
+ const activeForm = this.getWizardFormByTag(
254
+ res.data[this.model.stateAppDEFieldId],
255
+ );
256
+ if (activeForm) {
257
+ this.state.activeFormTag = activeForm.formTag!;
258
+ }
259
+ }
224
260
  }
225
- if (this.firstForm) {
261
+ // 没有激活的表单标识就选配置的首表单
262
+ if (!this.state.activeFormTag && this.firstForm) {
226
263
  this.state.activeFormTag = this.firstForm.formTag!;
227
264
  this.tagHistory.push(this.firstForm.formTag!);
228
265
  }
@@ -250,10 +287,20 @@ export class WizardPanelController
250
287
  */
251
288
  async onPrevClick(): Promise<void> {
252
289
  // 先执行表单返回行为
253
- await this.activeFormController.goBack();
254
- // 返回上一个表单
255
- this.tagHistory.pop();
256
- const prevTag = this.tagHistory[this.tagHistory.length - 1];
290
+ const data = await this.activeFormController.goBack();
291
+ let prevTag;
292
+ // 返回上一个表单优先级 stateAppDEFieldId > tagHistory
293
+ if (this.model.stateAppDEFieldId && data[this.model.stateAppDEFieldId]) {
294
+ const wizardForm = this.getWizardFormByTag(
295
+ data[this.model.stateAppDEFieldId],
296
+ );
297
+ if (wizardForm) {
298
+ prevTag = data[this.model.stateAppDEFieldId];
299
+ }
300
+ } else {
301
+ prevTag = this.tagHistory[this.tagHistory.length - 1];
302
+ this.tagHistory.pop();
303
+ }
257
304
  if (!prevTag) {
258
305
  throw new RuntimeError('没有上一个表单');
259
306
  }
@@ -272,15 +319,21 @@ export class WizardPanelController
272
319
  const data = await this.activeFormController.save();
273
320
  let nextTag;
274
321
  if (data.srfnextform) {
275
- const wizardForm = this.model.dewizard!.dewizardForms!.find(
276
- (_wizardForm: IDEWizardForm) => {
277
- return _wizardForm.formTag === data.srfnextform;
278
- },
322
+ const wizardForm = this.getWizardFormByTag(data.srfnextform);
323
+ if (wizardForm) {
324
+ nextTag = data.srfnextform;
325
+ this.tagHistory.push(nextTag);
326
+ }
327
+ } else if (
328
+ this.model.stateAppDEFieldId &&
329
+ data[this.model.stateAppDEFieldId]
330
+ ) {
331
+ const wizardForm = this.getWizardFormByTag(
332
+ data[this.model.stateAppDEFieldId],
279
333
  );
280
- if (!wizardForm) {
281
- throw new RuntimeError(`找不到标识为${data.srfnextform}的向导表单`);
334
+ if (wizardForm) {
335
+ nextTag = data[this.model.stateAppDEFieldId];
282
336
  }
283
- nextTag = data.srfnextform;
284
337
  } else {
285
338
  // 通过步骤找,找到下一个步骤对应的第一个向导表单
286
339
  const { formTag } = this.activeWizardForm!;
@@ -293,12 +346,8 @@ export class WizardPanelController
293
346
  if (!nextWizardStep) {
294
347
  throw new RuntimeError('找不到下一个向导步骤');
295
348
  }
296
- const nextWizardForm = this.model.dewizard!.dewizardForms!.find(
297
- (wizardForm: IDEWizardForm) => {
298
- return wizardForm.formTag === nextWizardStep.stepTag;
299
- },
300
- );
301
- if (nextWizardForm) {
349
+ const nextWizardForm = this.getWizardFormByTag(nextWizardStep.stepTag!);
350
+ if (nextWizardForm && nextWizardForm.formTag) {
302
351
  nextTag = nextWizardForm.formTag;
303
352
  }
304
353
  }
@@ -30,4 +30,12 @@ export interface IDataAbilityParams {
30
30
  * @type {IData[]}
31
31
  */
32
32
  data?: IData[] | IData;
33
+
34
+ /**
35
+ * 是否静默执行,不出loading效果,不弹成功提示
36
+ * @author lxm
37
+ * @date 2023-11-10 06:35:27
38
+ * @type {boolean}
39
+ */
40
+ silent?: boolean;
33
41
  }
@@ -4,6 +4,7 @@ import { IControlState } from '../../state';
4
4
  import { IController } from '../i.controller';
5
5
  import { IViewController } from '../view/i-view.controller';
6
6
  import { IViewLayoutPanelController } from './i-view-layout-panel.controller';
7
+ import { ControlLogicScheduler } from '../../../../logic-scheduler';
7
8
 
8
9
  /**
9
10
  * 部件控制器
@@ -34,6 +35,15 @@ export interface IControlController<
34
35
  */
35
36
  layoutPanel?: IViewLayoutPanelController;
36
37
 
38
+ /**
39
+ * 部件逻辑调度器
40
+ *
41
+ * @author chitanda
42
+ * @date 2023-11-11 10:11:16
43
+ * @type {ControlLogicScheduler}
44
+ */
45
+ scheduler?: ControlLogicScheduler;
46
+
37
47
  /**
38
48
  * 开始加载
39
49
  *
@@ -4,6 +4,16 @@ import { IEditFormEvent } from '../../event';
4
4
  import { IEditFormState } from '../../state';
5
5
  import { IFormController } from './i-form.controller';
6
6
 
7
+ export interface FormSaveParams extends IDataAbilityParams {
8
+ /**
9
+ * 保存之后是否不合并后台回来的数据
10
+ * @author lxm
11
+ * @date 2023-11-11 11:28:23
12
+ * @type {boolean}
13
+ */
14
+ noFillBack?: boolean;
15
+ }
16
+
7
17
  /**
8
18
  * 编辑表单控制器
9
19
  * @author lxm
@@ -28,7 +38,7 @@ export interface IEditFormController
28
38
  * @date 2023-05-16 12:59:03
29
39
  * @return {*} {Promise<IData>}
30
40
  */
31
- save(args?: IDataAbilityParams): Promise<IData>;
41
+ save(args?: FormSaveParams): Promise<IData>;
32
42
 
33
43
  /**
34
44
  * 删除表单数据
@@ -22,12 +22,12 @@ export interface MDCtrlLoadParams extends IDataAbilityParams {
22
22
 
23
23
  export interface MDCtrlRemoveParams extends IDataAbilityParams {
24
24
  /**
25
- * 是否静默删除
25
+ * 是否不需要刷新(默认为否,如果不需要刷新传true)
26
26
  * @author lxm
27
27
  * @date 2023-08-17 06:04:23
28
28
  * @type {boolean}
29
29
  */
30
- silent?: boolean;
30
+ notRefresh?: boolean;
31
31
  }
32
32
 
33
33
  /**
@@ -14,4 +14,11 @@ export interface IMEditViewPanelController<
14
14
  T extends IDEMultiEditViewPanel = IDEMultiEditViewPanel,
15
15
  S extends IMEditViewPanelState = IMEditViewPanelState,
16
16
  E extends IMEditViewPanelEvent = IMEditViewPanelEvent,
17
- > extends IMDControlController<T, S, E> {}
17
+ > extends IMDControlController<T, S, E> {
18
+ /**
19
+ * 处理添加
20
+ *
21
+ * @memberof IMEditViewPanelController
22
+ */
23
+ handleAdd(): Promise<void>;
24
+ }