@ibiz-template/runtime 0.1.35 → 0.1.36

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 (42) hide show
  1. package/dist/index.esm.js +363 -70
  2. package/dist/index.system.min.js +1 -1
  3. package/dist/index.system.min.js.map +1 -1
  4. package/out/constant/index.d.ts +1 -0
  5. package/out/constant/index.d.ts.map +1 -1
  6. package/out/constant/index.js +1 -0
  7. package/out/constant/value-op.d.ts +82 -0
  8. package/out/constant/value-op.d.ts.map +1 -0
  9. package/out/constant/value-op.js +83 -0
  10. package/out/controller/control/form/search-form/search-form.controller.d.ts +2 -2
  11. package/out/controller/control/form/search-form/search-form.controller.d.ts.map +1 -1
  12. package/out/controller/control/form/search-form/search-form.controller.js +11 -3
  13. package/out/controller/control/md-ctrl/md-ctrl.controller.d.ts +38 -3
  14. package/out/controller/control/md-ctrl/md-ctrl.controller.d.ts.map +1 -1
  15. package/out/controller/control/md-ctrl/md-ctrl.controller.js +110 -3
  16. package/out/controller/control/search-bar/search-bar-filter.controller.d.ts +65 -0
  17. package/out/controller/control/search-bar/search-bar-filter.controller.d.ts.map +1 -0
  18. package/out/controller/control/search-bar/search-bar-filter.controller.js +48 -0
  19. package/out/controller/control/search-bar/search-bar.controller.d.ts +63 -4
  20. package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
  21. package/out/controller/control/search-bar/search-bar.controller.js +143 -9
  22. package/out/engine/md-view.engine.d.ts.map +1 -1
  23. package/out/engine/md-view.engine.js +2 -23
  24. package/out/interface/controller/controller/control/i-search-bar.controller.d.ts +8 -0
  25. package/out/interface/controller/controller/control/i-search-bar.controller.d.ts.map +1 -1
  26. package/out/interface/controller/controller/control/i-search-form.controller.d.ts +2 -2
  27. package/out/interface/controller/controller/control/i-search-form.controller.d.ts.map +1 -1
  28. package/out/interface/controller/state/control/i-search-bar.state.d.ts +75 -0
  29. package/out/interface/controller/state/control/i-search-bar.state.d.ts.map +1 -1
  30. package/out/service/service/entity/method/method.js +2 -2
  31. package/package.json +3 -3
  32. package/src/constant/index.ts +1 -0
  33. package/src/constant/value-op.ts +82 -0
  34. package/src/controller/control/form/search-form/search-form.controller.ts +11 -3
  35. package/src/controller/control/md-ctrl/md-ctrl.controller.ts +136 -3
  36. package/src/controller/control/search-bar/search-bar-filter.controller.ts +112 -0
  37. package/src/controller/control/search-bar/search-bar.controller.ts +165 -9
  38. package/src/engine/md-view.engine.ts +2 -27
  39. package/src/interface/controller/controller/control/i-search-bar.controller.ts +10 -1
  40. package/src/interface/controller/controller/control/i-search-form.controller.ts +2 -2
  41. package/src/interface/controller/state/control/i-search-bar.state.ts +86 -0
  42. package/src/service/service/entity/method/method.ts +2 -2
@@ -3,5 +3,6 @@ export { ViewType } from './view-type';
3
3
  export { ViewMode } from './view-mode';
4
4
  export { SysUIActionTag } from './sys-uiaction-tag';
5
5
  export { ViewCallTag } from './view-call-tag';
6
+ export { ValueOP } from './value-op';
6
7
  export * from './studio-event';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constant/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constant/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
@@ -3,4 +3,5 @@ export { ViewType } from './view-type';
3
3
  export { ViewMode } from './view-mode';
4
4
  export { SysUIActionTag } from './sys-uiaction-tag';
5
5
  export { ViewCallTag } from './view-call-tag';
6
+ export { ValueOP } from './value-op';
6
7
  export * from './studio-event';
@@ -0,0 +1,82 @@
1
+ /**
2
+ * 值操作
3
+ * @author lxm
4
+ * @date 2023-10-13 11:37:48
5
+ * @export
6
+ * @enum {number}
7
+ */
8
+ export declare enum ValueOP {
9
+ /**
10
+ * 等于
11
+ */
12
+ 'EQ' = "EQ",
13
+ /**
14
+ * 不等于
15
+ */
16
+ 'NOT_EQ' = "NOTEQ",
17
+ /**
18
+ * 大于
19
+ */
20
+ 'GT' = "GT",
21
+ /**
22
+ * 大于等于
23
+ */
24
+ 'GT_AND_EQ' = "GTANDEQ",
25
+ /**
26
+ * 小于
27
+ */
28
+ 'LT' = "LT",
29
+ /**
30
+ * 小于等于
31
+ */
32
+ 'LT_AND_EQ' = "LTANDEQ",
33
+ /**
34
+ * 值为空
35
+ */
36
+ 'IS_NULL' = "ISNULL",
37
+ /**
38
+ * 值不为空
39
+ */
40
+ 'IS_NOT_NULL' = "ISNOTNULL",
41
+ /**
42
+ * 值在范围中
43
+ */
44
+ 'IN' = "IN",
45
+ /**
46
+ * 值不在范围中
47
+ */
48
+ 'NOT_IN' = "NOTIN",
49
+ /**
50
+ * 文本包含
51
+ */
52
+ 'LIKE' = "LIKE",
53
+ /**
54
+ * 文本左包含
55
+ */
56
+ 'LIFT_LIKE' = "LIFTLIKE",
57
+ /**
58
+ * 文本右包含
59
+ */
60
+ 'RIGHT_LIKE' = "RIGHT_LIKE",
61
+ /**
62
+ * 子数据(递归)
63
+ */
64
+ 'CHILD_OF' = "CHILDOF",
65
+ /**
66
+ * 自定义文本包含
67
+ */
68
+ 'USER_LIKE' = "USERLIKE",
69
+ /**
70
+ * 位与操作(BitAnd)(仅限整数形)
71
+ */
72
+ 'BIT_AND' = "BITAND",
73
+ /**
74
+ * 存在引用数据
75
+ */
76
+ 'EXISTS' = "EXISTS",
77
+ /**
78
+ * 不存在引用数据
79
+ */
80
+ 'NOT_EXISTS' = "NOTEXISTS"
81
+ }
82
+ //# sourceMappingURL=value-op.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-op.d.ts","sourceRoot":"","sources":["../../src/constant/value-op.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AACH,oBAAY,OAAO;IACjB;;OAEG;IACH,IAAI,OAAO;IACX;;OAEG;IACH,QAAQ,UAAU;IAClB;;OAEG;IACH,IAAI,OAAO;IACX;;OAEG;IACH,WAAW,YAAY;IACvB;;OAEG;IACH,IAAI,OAAO;IACX;;OAEG;IACH,WAAW,YAAY;IACvB;;OAEG;IACH,SAAS,WAAW;IACpB;;OAEG;IACH,aAAa,cAAc;IAC3B;;OAEG;IACH,IAAI,OAAO;IACX;;OAEG;IACH,QAAQ,UAAU;IAClB;;OAEG;IACH,MAAM,SAAS;IACf;;OAEG;IACH,WAAW,aAAa;IACxB;;OAEG;IACH,YAAY,eAAe;IAC3B;;OAEG;IACH,UAAU,YAAY;IACtB;;OAEG;IACH,WAAW,aAAa;IACxB;;OAEG;IACH,SAAS,WAAW;IACpB;;OAEG;IACH,QAAQ,WAAW;IACnB;;OAEG;IACH,YAAY,cAAc;CAC3B"}
@@ -0,0 +1,83 @@
1
+ /* eslint-disable no-shadow */
2
+ /**
3
+ * 值操作
4
+ * @author lxm
5
+ * @date 2023-10-13 11:37:48
6
+ * @export
7
+ * @enum {number}
8
+ */
9
+ export var ValueOP;
10
+ (function (ValueOP) {
11
+ /**
12
+ * 等于
13
+ */
14
+ ValueOP["EQ"] = "EQ";
15
+ /**
16
+ * 不等于
17
+ */
18
+ ValueOP["NOT_EQ"] = "NOTEQ";
19
+ /**
20
+ * 大于
21
+ */
22
+ ValueOP["GT"] = "GT";
23
+ /**
24
+ * 大于等于
25
+ */
26
+ ValueOP["GT_AND_EQ"] = "GTANDEQ";
27
+ /**
28
+ * 小于
29
+ */
30
+ ValueOP["LT"] = "LT";
31
+ /**
32
+ * 小于等于
33
+ */
34
+ ValueOP["LT_AND_EQ"] = "LTANDEQ";
35
+ /**
36
+ * 值为空
37
+ */
38
+ ValueOP["IS_NULL"] = "ISNULL";
39
+ /**
40
+ * 值不为空
41
+ */
42
+ ValueOP["IS_NOT_NULL"] = "ISNOTNULL";
43
+ /**
44
+ * 值在范围中
45
+ */
46
+ ValueOP["IN"] = "IN";
47
+ /**
48
+ * 值不在范围中
49
+ */
50
+ ValueOP["NOT_IN"] = "NOTIN";
51
+ /**
52
+ * 文本包含
53
+ */
54
+ ValueOP["LIKE"] = "LIKE";
55
+ /**
56
+ * 文本左包含
57
+ */
58
+ ValueOP["LIFT_LIKE"] = "LIFTLIKE";
59
+ /**
60
+ * 文本右包含
61
+ */
62
+ ValueOP["RIGHT_LIKE"] = "RIGHT_LIKE";
63
+ /**
64
+ * 子数据(递归)
65
+ */
66
+ ValueOP["CHILD_OF"] = "CHILDOF";
67
+ /**
68
+ * 自定义文本包含
69
+ */
70
+ ValueOP["USER_LIKE"] = "USERLIKE";
71
+ /**
72
+ * 位与操作(BitAnd)(仅限整数形)
73
+ */
74
+ ValueOP["BIT_AND"] = "BITAND";
75
+ /**
76
+ * 存在引用数据
77
+ */
78
+ ValueOP["EXISTS"] = "EXISTS";
79
+ /**
80
+ * 不存在引用数据
81
+ */
82
+ ValueOP["NOT_EXISTS"] = "NOTEXISTS";
83
+ })(ValueOP || (ValueOP = {}));
@@ -32,13 +32,13 @@ export declare class SearchFormController extends FormController<IDESearchForm,
32
32
  */
33
33
  load(): Promise<IData>;
34
34
  /**
35
- * 获取搜索表单的视图过滤参数
35
+ * 获取搜索表单的过滤参数
36
36
  *
37
37
  * @author lxm
38
38
  * @date 2022-09-22 17:09:21
39
39
  * @returns {*} {IParams}
40
40
  */
41
- getParams(): IParams;
41
+ getFilterParams(): IParams;
42
42
  /**
43
43
  * 执行搜索行为
44
44
  * @author lxm
@@ -1 +1 @@
1
- {"version":3,"file":"search-form.controller.d.ts","sourceRoot":"","sources":["../../../../../src/controller/control/form/search-form/search-form.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;;;;;GASG;AACH,qBAAa,oBACX,SAAQ,cAAc,CAAC,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,CACxE,YAAW,qBAAqB;IAEhC;;;;;;OAMG;IACH,OAAO,EAAG,iBAAiB,CAAC;cAEZ,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;cAS1B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAS1C;;;;;;OAMG;IACG,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC;IAwB5B;;;;;;OAMG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;;OAKG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;;;;OAKG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;;;;;OAMG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtD;;;;;;OAMG;IACG,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAOnD"}
1
+ {"version":3,"file":"search-form.controller.d.ts","sourceRoot":"","sources":["../../../../../src/controller/control/form/search-form/search-form.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;;;;;GASG;AACH,qBAAa,oBACX,SAAQ,cAAc,CAAC,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,CACxE,YAAW,qBAAqB;IAEhC;;;;;;OAMG;IACH,OAAO,EAAG,iBAAiB,CAAC;cAEZ,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;cAS1B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAS1C;;;;;;OAMG;IACG,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC;IAwB5B;;;;;;OAMG;IACH,eAAe,IAAI,OAAO;IAY1B;;;;;OAKG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;;;;OAKG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C;;;;;OAKG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;;;;;OAMG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtD;;;;;;OAMG;IACG,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAOnD"}
@@ -59,14 +59,22 @@ export class SearchFormController extends FormController {
59
59
  return this.data;
60
60
  }
61
61
  /**
62
- * 获取搜索表单的视图过滤参数
62
+ * 获取搜索表单的过滤参数
63
63
  *
64
64
  * @author lxm
65
65
  * @date 2022-09-22 17:09:21
66
66
  * @returns {*} {IParams}
67
67
  */
68
- getParams() {
69
- return Object.assign({}, this.data.getOrigin());
68
+ getFilterParams() {
69
+ const filterParams = {};
70
+ Object.keys(this.state.data).forEach(key => {
71
+ const value = this.state.data[key];
72
+ // 排除空值
73
+ if (value !== null && value !== undefined && value !== '') {
74
+ filterParams[key] = value;
75
+ }
76
+ });
77
+ return filterParams;
70
78
  }
71
79
  /**
72
80
  * 执行搜索行为
@@ -1,5 +1,5 @@
1
1
  import { IDEMobMDCtrl, IUIActionGroup, IUIActionGroupDetail } from '@ibiz/model-core';
2
- import { IMobMDCtrlEvent, IMobMDCtrlController, IMobMdCtrlState, IMobMDCtrlRowState, MDCtrlLoadParams } from '../../../interface';
2
+ import { IMobMDCtrlEvent, IMobMDCtrlController, IMobMdCtrlState, IMobMDCtrlRowState, MDCtrlLoadParams, CodeListItem } from '../../../interface';
3
3
  import { MDCtrlService } from './md-ctrl.service';
4
4
  import { MobMDCtrlRowState } from './md-ctrl-row.state';
5
5
  import { MDControlController } from '../../common';
@@ -7,6 +7,15 @@ import { ControlVO } from '../../../service';
7
7
  export declare class MDCtrlController extends MDControlController<IDEMobMDCtrl, IMobMdCtrlState, IMobMDCtrlEvent> implements IMobMDCtrlController {
8
8
  service: MDCtrlService;
9
9
  protected initState(): void;
10
+ /**
11
+ * 分组代码表项集合
12
+ *
13
+ * @author zk
14
+ * @date 2023-10-11 04:10:06
15
+ * @type {readonly}
16
+ * @memberof MDCtrlController
17
+ */
18
+ groupCodeListItems?: readonly CodeListItem[];
10
19
  protected onCreated(): Promise<void>;
11
20
  /**
12
21
  * 设置排序
@@ -40,7 +49,7 @@ export declare class MDCtrlController extends MDControlController<IDEMobMDCtrl,
40
49
  * @author zk
41
50
  * @date 2023-05-26 02:05:46
42
51
  * @param {IData[]} items
43
- * @memberof ListController
52
+ * @memberof MDCtrlController
44
53
  */
45
54
  setData(items: IData[]): void;
46
55
  /**
@@ -49,7 +58,7 @@ export declare class MDCtrlController extends MDControlController<IDEMobMDCtrl,
49
58
  * @author zk
50
59
  * @date 2023-05-26 02:05:35
51
60
  * @return {*} {IData[]}
52
- * @memberof ListController
61
+ * @memberof MDCtrlController
53
62
  */
54
63
  getAllData(): IData[];
55
64
  /**
@@ -73,5 +82,31 @@ export declare class MDCtrlController extends MDControlController<IDEMobMDCtrl,
73
82
  */
74
83
  protected initActionStates(row: MobMDCtrlRowState): void;
75
84
  protected initUIActionGroup(row: MobMDCtrlRowState, group: IUIActionGroup): void;
85
+ /**
86
+ * 处理数据分组
87
+ *
88
+ * @memberof MDCtrlController
89
+ */
90
+ protected handleDataGroup(): Promise<void>;
91
+ /**
92
+ * 处理自动分组
93
+ *
94
+ * @memberof MDCtrlController
95
+ */
96
+ protected handleAutoGroup(): void;
97
+ /**
98
+ * 加载并初始化分组代码表项集合
99
+ * @author lxm
100
+ * @date 2023-08-29 05:11:39
101
+ * @protected
102
+ * @return {*} {Promise<void>}
103
+ */
104
+ protected initGroupCodeListItems(): Promise<void>;
105
+ /**
106
+ * 处理代码表分组
107
+ *
108
+ * @memberof MDCtrlController
109
+ */
110
+ protected handleCodeListGroup(): Promise<void>;
76
111
  }
77
112
  //# sourceMappingURL=md-ctrl.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"md-ctrl.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/md-ctrl/md-ctrl.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C,qBAAa,gBACX,SAAQ,mBAAmB,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,CAC1E,YAAW,oBAAoB;IAEvB,OAAO,EAAE,aAAa,CAAC;IAE/B,SAAS,CAAC,SAAS,IAAI,IAAI;cAQX,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ1C;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI;IAcnD;;;;;OAKG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B;;;;;;;OAOG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAgBvE;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI;IAQ7B;;;;;;;OAOG;IACH,UAAU,IAAI,KAAK,EAAE;IAIrB;;;;;;;;;OASG;IACG,aAAa,CACjB,MAAM,EAAE,oBAAoB,EAC5B,GAAG,EAAE,kBAAkB,EACvB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC;IAWhB;;;;;;;OAOG;IACH,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI;IAUxD,SAAS,CAAC,iBAAiB,CACzB,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,cAAc,GACpB,IAAI;CAoBR"}
1
+ {"version":3,"file":"md-ctrl.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/md-ctrl/md-ctrl.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAEhB,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C,qBAAa,gBACX,SAAQ,mBAAmB,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,CAC1E,YAAW,oBAAoB;IAEvB,OAAO,EAAE,aAAa,CAAC;IAE/B,SAAS,CAAC,SAAS,IAAI,IAAI;IAQ3B;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;cAE7B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ1C;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI;IAcnD;;;;;OAKG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B;;;;;;;OAOG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,SAAS,CACb,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,KAAK,EAAE,CAAC;IAkBnB;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI;IAQ7B;;;;;;;OAOG;IACH,UAAU,IAAI,KAAK,EAAE;IAIrB;;;;;;;;;OASG;IACG,aAAa,CACjB,MAAM,EAAE,oBAAoB,EAC5B,GAAG,EAAE,kBAAkB,EACvB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC;IAWhB;;;;;;;OAOG;IACH,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI;IAUxD,SAAS,CAAC,iBAAiB,CACzB,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,cAAc,GACpB,IAAI;IAqBP;;;;OAIG;cACa,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAchD;;;;OAIG;IACH,SAAS,CAAC,eAAe,IAAI,IAAI;IA+BjC;;;;;;OAMG;cACa,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAavD;;;;OAIG;cACa,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;CAiCrD"}
@@ -1,3 +1,5 @@
1
+ import { RuntimeModelError } from '@ibiz-template/core';
2
+ import { isNil } from 'ramda';
1
3
  import { MDCtrlService } from './md-ctrl.service';
2
4
  import { MobMDCtrlRowState } from './md-ctrl-row.state';
3
5
  import { MDControlController } from '../../common';
@@ -64,7 +66,7 @@ export class MDCtrlController extends MDControlController {
64
66
  async refresh() {
65
67
  await this.load({ isInitialLoad: true });
66
68
  }
67
- afterLoad(args, items) {
69
+ async afterLoad(args, items) {
68
70
  if (args.isInitialLoad) {
69
71
  this.state.rows = [];
70
72
  }
@@ -75,6 +77,8 @@ export class MDCtrlController extends MDControlController {
75
77
  return row;
76
78
  }));
77
79
  }
80
+ await this.initGroupCodeListItems();
81
+ await this.handleDataGroup();
78
82
  return super.afterLoad(args, items);
79
83
  }
80
84
  /**
@@ -83,7 +87,7 @@ export class MDCtrlController extends MDControlController {
83
87
  * @author zk
84
88
  * @date 2023-05-26 02:05:46
85
89
  * @param {IData[]} items
86
- * @memberof ListController
90
+ * @memberof MDCtrlController
87
91
  */
88
92
  setData(items) {
89
93
  const rows = items.map(item => {
@@ -98,7 +102,7 @@ export class MDCtrlController extends MDControlController {
98
102
  * @author zk
99
103
  * @date 2023-05-26 02:05:35
100
104
  * @return {*} {IData[]}
101
- * @memberof ListController
105
+ * @memberof MDCtrlController
102
106
  */
103
107
  getAllData() {
104
108
  return this.state.rows.map(row => row.data);
@@ -157,4 +161,107 @@ export class MDCtrlController extends MDControlController {
157
161
  containerState.update(row.data.getOrigin());
158
162
  row.uaColStates[group.id] = containerState;
159
163
  }
164
+ /**
165
+ * 处理数据分组
166
+ *
167
+ * @memberof MDCtrlController
168
+ */
169
+ async handleDataGroup() {
170
+ const { enableGroup, groupMode, groupAppDEFieldId } = this.model;
171
+ if (enableGroup && groupMode) {
172
+ if (!groupAppDEFieldId) {
173
+ throw new RuntimeModelError(this.model, '分组属性没有配置');
174
+ }
175
+ if (groupMode === 'AUTO') {
176
+ this.handleAutoGroup();
177
+ }
178
+ else if (groupMode === 'CODELIST') {
179
+ await this.handleCodeListGroup();
180
+ }
181
+ }
182
+ }
183
+ /**
184
+ * 处理自动分组
185
+ *
186
+ * @memberof MDCtrlController
187
+ */
188
+ handleAutoGroup() {
189
+ const { groupAppDEFieldId } = this.model;
190
+ if (groupAppDEFieldId) {
191
+ const { items } = this.state;
192
+ const groupMap = new Map();
193
+ items.forEach((item) => {
194
+ const groupVal = item[groupAppDEFieldId];
195
+ if (isNil(groupVal)) {
196
+ // 分组无值的不显示
197
+ return;
198
+ }
199
+ if (!groupMap.has(groupVal)) {
200
+ groupMap.set(groupVal, []);
201
+ }
202
+ groupMap
203
+ .get(groupVal)
204
+ .push(new MobMDCtrlRowState(item, this));
205
+ });
206
+ const groups = [];
207
+ groupMap.forEach((value, key) => {
208
+ groups.push({
209
+ caption: key,
210
+ key,
211
+ children: [...value],
212
+ });
213
+ });
214
+ this.state.groups = groups;
215
+ }
216
+ }
217
+ /**
218
+ * 加载并初始化分组代码表项集合
219
+ * @author lxm
220
+ * @date 2023-08-29 05:11:39
221
+ * @protected
222
+ * @return {*} {Promise<void>}
223
+ */
224
+ async initGroupCodeListItems() {
225
+ const { groupCodeListId } = this.model;
226
+ if (!groupCodeListId) {
227
+ return;
228
+ }
229
+ const app = ibiz.hub.getApp(this.context.srfappid);
230
+ this.groupCodeListItems = await app.codeList.get(groupCodeListId, this.context, this.params);
231
+ }
232
+ /**
233
+ * 处理代码表分组
234
+ *
235
+ * @memberof MDCtrlController
236
+ */
237
+ async handleCodeListGroup() {
238
+ const { groupAppDEFieldId, groupCodeListId } = this.model;
239
+ if (!groupCodeListId) {
240
+ throw new RuntimeModelError(this.model, '分组代码表没有配置');
241
+ }
242
+ const { items } = this.state;
243
+ const groupMap = new Map();
244
+ this.groupCodeListItems.forEach(item => {
245
+ groupMap.set(item.value, []);
246
+ });
247
+ items.forEach((item) => {
248
+ const groupVal = item[groupAppDEFieldId];
249
+ const groupArr = groupMap.get(groupVal);
250
+ if (groupArr) {
251
+ groupArr.push(new MobMDCtrlRowState(item, this));
252
+ }
253
+ // 不在代码表里数据忽略
254
+ });
255
+ const groups = [];
256
+ groupMap.forEach((arr, key) => {
257
+ // 标题
258
+ const codeListItem = this.groupCodeListItems.find(item => item.value === key);
259
+ groups.push({
260
+ caption: codeListItem.text,
261
+ key: codeListItem.value,
262
+ children: arr,
263
+ });
264
+ });
265
+ this.state.groups = groups;
266
+ }
160
267
  }
@@ -0,0 +1,65 @@
1
+ import { ISearchBarFilter } from '@ibiz/model-core';
2
+ import { IEditorContainerController, IEditorController, IEditorProvider } from '../../../interface';
3
+ import { SearchBarController } from './search-bar.controller';
4
+ /**
5
+ * 搜索栏过滤项控制器
6
+ * @author lxm
7
+ * @date 2023-10-12 05:49:19
8
+ * @export
9
+ * @class SearchBarFilterController
10
+ * @implements {IEditorContainerController}
11
+ */
12
+ export declare class SearchBarFilterController implements IEditorContainerController {
13
+ model: ISearchBarFilter;
14
+ searchBar: SearchBarController;
15
+ unitName: string | undefined;
16
+ valueFormat: string | undefined;
17
+ get context(): IContext;
18
+ get params(): IParams;
19
+ dataType: number | undefined;
20
+ /**
21
+ * 编辑器控制器
22
+ *
23
+ * @author lxm
24
+ * @date 2022-08-24 20:08:42
25
+ * @type {IEditorController}
26
+ */
27
+ editor?: IEditorController;
28
+ /**
29
+ * 编辑器适配器
30
+ *
31
+ * @author lxm
32
+ * @date 2022-08-24 20:08:42
33
+ */
34
+ editorProvider?: IEditorProvider;
35
+ /**
36
+ * 过滤的属性名称(有实体属性的是属性codeName小写,没有就是项名称)
37
+ * @author lxm
38
+ * @date 2023-10-13 02:51:39
39
+ * @type {string}
40
+ */
41
+ fieldName: string;
42
+ /**
43
+ * 属性显示的标题
44
+ * @author lxm
45
+ * @date 2023-10-13 03:02:42
46
+ * @type {string}
47
+ */
48
+ label: string;
49
+ /**
50
+ * 配置的属性搜索模式对应的值操作
51
+ * @author lxm
52
+ * @date 2023-10-13 03:22:10
53
+ * @type {string}
54
+ */
55
+ valueOP?: string;
56
+ constructor(model: ISearchBarFilter, searchBar: SearchBarController);
57
+ /**
58
+ * 初始化
59
+ * @author lxm
60
+ * @date 2023-10-12 05:47:19
61
+ * @return {*} {Promise<void>}
62
+ */
63
+ init(): Promise<void>;
64
+ }
65
+ //# sourceMappingURL=search-bar-filter.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-bar-filter.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/search-bar/search-bar-filter.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,0BAA0B;IAyDjE,KAAK,EAAE,gBAAgB;IACvB,SAAS,EAAE,mBAAmB;IAzDvC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAE7B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC,IAAI,OAAO,IAAI,QAAQ,CAEtB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAE7B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAE3B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,eAAe,CAAC;IAEjC;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;gBAGR,KAAK,EAAE,gBAAgB,EACvB,SAAS,EAAE,mBAAmB;IAevC;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAa5B"}
@@ -0,0 +1,48 @@
1
+ import { RuntimeModelError } from '@ibiz-template/core';
2
+ import { findFieldById } from '../../../model';
3
+ import { getEditorProvider } from '../../../register';
4
+ /**
5
+ * 搜索栏过滤项控制器
6
+ * @author lxm
7
+ * @date 2023-10-12 05:49:19
8
+ * @export
9
+ * @class SearchBarFilterController
10
+ * @implements {IEditorContainerController}
11
+ */
12
+ export class SearchBarFilterController {
13
+ get context() {
14
+ return this.searchBar.context;
15
+ }
16
+ get params() {
17
+ return this.searchBar.params;
18
+ }
19
+ constructor(model, searchBar) {
20
+ var _a;
21
+ this.model = model;
22
+ this.searchBar = searchBar;
23
+ // 实体属性
24
+ let field;
25
+ if (model.appDEFieldId) {
26
+ field = findFieldById(searchBar.appDataEntity, model.appDEFieldId);
27
+ }
28
+ this.fieldName = field ? field.codeName.toLowerCase() : model.id;
29
+ // 属性标题
30
+ this.label = model.caption || (field === null || field === void 0 ? void 0 : field.logicName) || model.id;
31
+ this.valueOP = (_a = model.defsearchMode) === null || _a === void 0 ? void 0 : _a.valueOP;
32
+ }
33
+ /**
34
+ * 初始化
35
+ * @author lxm
36
+ * @date 2023-10-12 05:47:19
37
+ * @return {*} {Promise<void>}
38
+ */
39
+ async init() {
40
+ if (!this.model.editor) {
41
+ throw new RuntimeModelError(this.model, '缺少编辑器模型');
42
+ }
43
+ this.editorProvider = await getEditorProvider(this.model.editor);
44
+ if (this.editorProvider) {
45
+ this.editor = await this.editorProvider.createController(this.model.editor, this);
46
+ }
47
+ }
48
+ }
@@ -1,6 +1,7 @@
1
- import { ISearchBar } from '@ibiz/model-core';
2
- import { ISearchBarState, ISearchBarEvent, ISearchBarController } from '../../../interface';
1
+ import { IAppDataEntity, ISearchBar } from '@ibiz/model-core';
2
+ import { ISearchBarState, ISearchBarEvent, ISearchBarController, IFilterNode } from '../../../interface';
3
3
  import { ControlController } from '../../common';
4
+ import { SearchBarFilterController } from './search-bar-filter.controller';
4
5
  /**
5
6
  * 搜索栏控制器
6
7
  *
@@ -12,14 +13,36 @@ import { ControlController } from '../../common';
12
13
  */
13
14
  export declare class SearchBarController extends ControlController<ISearchBar, ISearchBarState, ISearchBarEvent> implements ISearchBarController {
14
15
  /**
15
- * 占位符
16
+ * 快速搜索占位符
16
17
  * @return {*}
17
18
  * @author: zhujiamin
18
19
  * @Date: 2023-08-11 14:13:10
19
20
  */
20
21
  placeHolder: string;
22
+ /**
23
+ * 过滤项控制器集合
24
+ * @author lxm
25
+ * @date 2023-10-13 03:31:26
26
+ * @type {SearchBarFilterController[]}
27
+ */
28
+ filterControllers: SearchBarFilterController[];
29
+ /**
30
+ * 实体模型
31
+ * @author lxm
32
+ * @date 2023-10-13 02:49:59
33
+ * @type {IAppDataEntity}
34
+ */
35
+ appDataEntity: IAppDataEntity;
21
36
  protected initState(): void;
22
37
  protected onCreated(): Promise<void>;
38
+ /**
39
+ * 计算快速搜索的占位
40
+ * @author lxm
41
+ * @date 2023-10-16 03:49:47
42
+ * @protected
43
+ * @return {*} {void}
44
+ */
45
+ protected calcQuickSearchPlaceholder(): void;
23
46
  /**
24
47
  * 处理输入
25
48
  * @param {string} val
@@ -34,6 +57,42 @@ export declare class SearchBarController extends ControlController<ISearchBar, I
34
57
  * @author: zhujiamin
35
58
  * @Date: 2023-06-01 18:08:18
36
59
  */
37
- handleSearch(): void;
60
+ onSearch(): void;
61
+ /**
62
+ * 获取搜索栏的过滤参数(包括快速搜索,快速分组和过滤器的参数)
63
+ * @author lxm
64
+ * @date 2023-10-16 03:54:07
65
+ * @return {*} {IParams}
66
+ */
67
+ getFilterParams(): IParams;
68
+ /**
69
+ * 重置过滤器
70
+ * @author lxm
71
+ * @date 2023-10-16 03:52:44
72
+ */
73
+ resetFilter(): void;
74
+ /**
75
+ * 初始化过滤项控制器
76
+ * @author lxm
77
+ * @date 2023-10-13 03:33:17
78
+ * @protected
79
+ * @return {*} {Promise<void>}
80
+ */
81
+ protected initSearchBarFilters(): Promise<void>;
82
+ /**
83
+ * 计算过滤项参数
84
+ * @author lxm
85
+ * @date 2023-10-13 05:53:35
86
+ * @return {*} {IData}
87
+ */
88
+ calcFilters(): IData | undefined;
89
+ /**
90
+ * 格式化过滤项
91
+ * @author lxm
92
+ * @date 2023-10-16 03:45:41
93
+ * @param {IFilterNode} node
94
+ * @return {*} {IData}
95
+ */
96
+ formatFilters(node: IFilterNode): IData;
38
97
  }
39
98
  //# sourceMappingURL=search-bar.controller.d.ts.map