@ibiz-template/runtime 0.5.7-alpha.9 → 0.6.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/index.esm.js +326 -58
  2. package/dist/index.system.min.js +1 -1
  3. package/out/controller/control/search-bar/search-bar-filter.controller.d.ts +43 -5
  4. package/out/controller/control/search-bar/search-bar-filter.controller.d.ts.map +1 -1
  5. package/out/controller/control/search-bar/search-bar-filter.controller.js +79 -6
  6. package/out/controller/control/search-bar/search-bar.controller.d.ts +10 -1
  7. package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
  8. package/out/controller/control/search-bar/search-bar.controller.js +26 -8
  9. package/out/controller/control/search-bar/use-searchcond.d.ts.map +1 -1
  10. package/out/controller/control/search-bar/use-searchcond.js +7 -1
  11. package/out/controller/notification/internal-message.controller.d.ts +21 -2
  12. package/out/controller/notification/internal-message.controller.d.ts.map +1 -1
  13. package/out/controller/notification/internal-message.controller.js +91 -3
  14. package/out/controller/notification/notice.controller.d.ts +3 -1
  15. package/out/controller/notification/notice.controller.d.ts.map +1 -1
  16. package/out/controller/notification/notice.controller.js +6 -0
  17. package/out/interface/controller/controller/notice/i-internal-message.controller.d.ts +59 -3
  18. package/out/interface/controller/controller/notice/i-internal-message.controller.d.ts.map +1 -1
  19. package/out/interface/controller/controller/notice/i-notice.controller.d.ts +16 -0
  20. package/out/interface/controller/controller/notice/i-notice.controller.d.ts.map +1 -1
  21. package/out/interface/controller/controller/notice/index.d.ts +2 -2
  22. package/out/interface/controller/controller/notice/index.d.ts.map +1 -1
  23. package/out/interface/controller/state/control/i-grid.state.d.ts +7 -0
  24. package/out/interface/controller/state/control/i-grid.state.d.ts.map +1 -1
  25. package/out/interface/controller/state/control/i-search-bar.state.d.ts +7 -0
  26. package/out/interface/controller/state/control/i-search-bar.state.d.ts.map +1 -1
  27. package/out/interface/provider/i-internal-message.provider.d.ts +1 -1
  28. package/out/interface/provider/i-internal-message.provider.d.ts.map +1 -1
  29. package/out/interface/service/service/i-app-de.service.d.ts +1 -1
  30. package/out/interface/service/service/i-app-de.service.d.ts.map +1 -1
  31. package/out/interface/service/service/i-internal-message.service.d.ts +16 -1
  32. package/out/interface/service/service/i-internal-message.service.d.ts.map +1 -1
  33. package/out/interface/util/i-notification-util/i-notification-util.d.ts +7 -0
  34. package/out/interface/util/i-notification-util/i-notification-util.d.ts.map +1 -1
  35. package/out/logic-scheduler/executor/app-de-ui-logic-executor.js +1 -1
  36. package/out/logic-scheduler/executor/app-ui-logic-executor.js +2 -2
  37. package/out/service/de-service-util.d.ts +1 -1
  38. package/out/service/de-service-util.d.ts.map +1 -1
  39. package/out/service/de-service-util.js +2 -2
  40. package/out/service/service/control/control.service.d.ts +10 -2
  41. package/out/service/service/control/control.service.d.ts.map +1 -1
  42. package/out/service/service/control/control.service.js +17 -1
  43. package/out/service/service/control/md-control.service.d.ts +2 -2
  44. package/out/service/service/control/md-control.service.d.ts.map +1 -1
  45. package/out/service/service/entity/de.service.d.ts +1 -1
  46. package/out/service/service/entity/de.service.d.ts.map +1 -1
  47. package/out/service/service/entity/de.service.js +2 -2
  48. package/out/service/service/entity/method/de-action.d.ts +6 -6
  49. package/out/service/service/entity/method/de-action.d.ts.map +1 -1
  50. package/out/service/service/entity/method/de-action.js +16 -16
  51. package/out/service/service/entity/method/fetch.d.ts +1 -1
  52. package/out/service/service/entity/method/fetch.d.ts.map +1 -1
  53. package/out/service/service/entity/method/fetch.js +2 -2
  54. package/out/service/service/entity/method/method.d.ts +2 -2
  55. package/out/service/service/entity/method/method.d.ts.map +1 -1
  56. package/out/service/service/entity/method/method.js +4 -4
  57. package/out/service/service/internal-message/internal-message.service.d.ts +16 -1
  58. package/out/service/service/internal-message/internal-message.service.d.ts.map +1 -1
  59. package/out/service/service/internal-message/internal-message.service.js +42 -0
  60. package/out/service/utils/util/util.d.ts.map +1 -1
  61. package/out/service/utils/util/util.js +21 -1
  62. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
  63. package/out/service/vo/tree-node-data/tree-data-set-node-data.js +3 -0
  64. package/out/ui-logic/index.d.ts.map +1 -1
  65. package/out/ui-logic/index.js +1 -2
  66. package/package.json +5 -5
  67. package/src/controller/control/search-bar/search-bar-filter.controller.ts +90 -10
  68. package/src/controller/control/search-bar/search-bar.controller.ts +33 -18
  69. package/src/controller/control/search-bar/use-searchcond.ts +9 -2
  70. package/src/controller/notification/internal-message.controller.ts +102 -6
  71. package/src/controller/notification/notice.controller.ts +9 -1
  72. package/src/interface/controller/controller/notice/i-internal-message.controller.ts +66 -3
  73. package/src/interface/controller/controller/notice/i-notice.controller.ts +18 -0
  74. package/src/interface/controller/controller/notice/index.ts +2 -2
  75. package/src/interface/controller/state/control/i-grid.state.ts +8 -0
  76. package/src/interface/controller/state/control/i-search-bar.state.ts +8 -0
  77. package/src/interface/provider/i-internal-message.provider.ts +1 -2
  78. package/src/interface/service/service/i-app-de.service.ts +1 -0
  79. package/src/interface/service/service/i-internal-message.service.ts +18 -1
  80. package/src/interface/util/i-notification-util/i-notification-util.ts +9 -0
  81. package/src/logic-scheduler/executor/app-de-ui-logic-executor.ts +1 -1
  82. package/src/logic-scheduler/executor/app-ui-logic-executor.ts +2 -2
  83. package/src/service/de-service-util.ts +2 -1
  84. package/src/service/service/control/control.service.ts +20 -2
  85. package/src/service/service/control/md-control.service.ts +2 -2
  86. package/src/service/service/entity/de.service.ts +2 -1
  87. package/src/service/service/entity/method/de-action.ts +16 -7
  88. package/src/service/service/entity/method/fetch.ts +2 -1
  89. package/src/service/service/entity/method/method.ts +5 -0
  90. package/src/service/service/internal-message/internal-message.service.ts +46 -2
  91. package/src/service/utils/util/util.ts +20 -1
  92. package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +2 -0
  93. package/src/ui-logic/index.ts +1 -2
@@ -1,5 +1,6 @@
1
1
  import { IAppDataEntity, ISearchBarFilter } from '@ibiz/model-core';
2
- import { IEditorContainerController, IEditorController, IEditorProvider } from '../../../interface';
2
+ import { IEditorContainerController, IEditorController, IEditorProvider, IFilterLeafNode } from '../../../interface';
3
+ import { SearchBarController } from './search-bar.controller';
3
4
  /** 不需要编辑器的OP */
4
5
  export declare const ExcludeOPs: string[];
5
6
  /**
@@ -12,11 +13,11 @@ export declare const ExcludeOPs: string[];
12
13
  */
13
14
  export declare class SearchBarFilterController implements IEditorContainerController {
14
15
  model: ISearchBarFilter;
15
- appDataEntity: IAppDataEntity;
16
+ protected searchbar: SearchBarController;
16
17
  unitName: string | undefined;
17
18
  valueFormat: string | undefined;
18
- context: IContext;
19
- params: IParams;
19
+ get context(): IContext;
20
+ get params(): IParams;
20
21
  dataType: number | undefined;
21
22
  /**
22
23
  * 编辑器控制器
@@ -61,7 +62,16 @@ export declare class SearchBarFilterController implements IEditorContainerContro
61
62
  * @type {boolean}
62
63
  */
63
64
  noEditor: boolean;
64
- constructor(model: ISearchBarFilter, appDataEntity: IAppDataEntity, context: IContext, params: IParams);
65
+ /**
66
+ * 值项
67
+ * @author lxm
68
+ * @date 2024-02-04 06:25:42
69
+ * @readonly
70
+ * @type {(string | undefined)}
71
+ */
72
+ get valueItem(): string | undefined;
73
+ get appDataEntity(): IAppDataEntity;
74
+ constructor(model: ISearchBarFilter, searchbar: SearchBarController);
65
75
  /**
66
76
  * 初始化
67
77
  * @author lxm
@@ -69,5 +79,33 @@ export declare class SearchBarFilterController implements IEditorContainerContro
69
79
  * @return {*} {Promise<void>}
70
80
  */
71
81
  init(): Promise<void>;
82
+ /**
83
+ * 格式化给多数据查询接口的值
84
+ * @author lxm
85
+ * @date 2024-02-04 11:31:32
86
+ * @param {*} value
87
+ * @return {*} {*}
88
+ */
89
+ formatValue(node: IData): unknown;
90
+ /**
91
+ * 计算要递给编辑器的参数
92
+ * @author lxm
93
+ * @date 2024-02-04 06:35:28
94
+ * @param {IFilterLeafNode} node
95
+ * @return {*} {{ value: unknown; data: IData }}
96
+ */
97
+ calcEditorProps(node: IFilterLeafNode): {
98
+ value: unknown;
99
+ data: IData;
100
+ };
101
+ /**
102
+ * 编辑器值变更处理
103
+ * @author lxm
104
+ * @date 2024-02-04 06:42:04
105
+ * @param {IFilterLeafNode} node
106
+ * @param {unknown} value
107
+ * @param {string} [name]
108
+ */
109
+ onEditorChange(node: IFilterLeafNode, value: unknown, name?: string): void;
72
110
  }
73
111
  //# sourceMappingURL=search-bar-filter.controller.d.ts.map
@@ -1 +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,EAEL,cAAc,EACd,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAK5B,gBAAgB;AAChB,eAAO,MAAM,UAAU,EAAE,MAAM,EAGrB,CAAC;AAEX;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,0BAA0B;IA6DjE,KAAK,EAAE,gBAAgB;IACvB,aAAa,EAAE,cAAc;IA7DtC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAE7B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC,OAAO,EAAE,QAAQ,CAAC;IAElB,MAAM,EAAE,OAAO,CAAC;IAEhB,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;IAEjB;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,CAAS;gBAGjB,KAAK,EAAE,gBAAgB,EACvB,aAAa,EAAE,cAAc,EACpC,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,OAAO;IAyBjB;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAe5B"}
1
+ {"version":3,"file":"search-bar-filter.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/search-bar/search-bar-filter.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,cAAc,EACd,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,eAAe,EACf,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,gBAAgB;AAChB,eAAO,MAAM,UAAU,EAAE,MAAM,EAGrB,CAAC;AAIX;;;;;;;GAOG;AACH,qBAAa,yBAA0B,YAAW,0BAA0B;IAgFjE,KAAK,EAAE,gBAAgB;IAC9B,SAAS,CAAC,SAAS,EAAE,mBAAmB;IAhF1C,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;IAEjB;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,CAAS;IAE1B;;;;;;OAMG;IACH,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,IAAI,aAAa,IAAI,cAAc,CAElC;gBAGQ,KAAK,EAAE,gBAAgB,EACpB,SAAS,EAAE,mBAAmB;IAqB1C;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3B;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO;IAgBjC;;;;;;OAMG;IACH,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,KAAK,CAAA;KAAE;IAevE;;;;;;;OAOG;IACH,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;CAO3E"}
@@ -1,12 +1,15 @@
1
+ /* eslint-disable no-template-curly-in-string */
1
2
  import { RuntimeModelError } from '@ibiz-template/core';
2
3
  import { findFieldById } from '../../../model';
3
4
  import { getEditorProvider } from '../../../register';
4
5
  import { ValueOP } from '../../../constant';
6
+ import { ScriptFactory } from '../../../utils';
5
7
  /** 不需要编辑器的OP */
6
8
  export const ExcludeOPs = [
7
9
  ValueOP.IS_NULL,
8
10
  ValueOP.IS_NOT_NULL,
9
11
  ];
12
+ const ScriptValueRegex = /\$\{[^}]*\}/; // 匹配${xxx}格式字符串
10
13
  /**
11
14
  * 搜索栏过滤项控制器
12
15
  * @author lxm
@@ -16,10 +19,29 @@ export const ExcludeOPs = [
16
19
  * @implements {IEditorContainerController}
17
20
  */
18
21
  export class SearchBarFilterController {
19
- constructor(model, appDataEntity, context, params) {
22
+ get context() {
23
+ return this.searchbar.context;
24
+ }
25
+ get params() {
26
+ return this.searchbar.params;
27
+ }
28
+ /**
29
+ * 值项
30
+ * @author lxm
31
+ * @date 2024-02-04 06:25:42
32
+ * @readonly
33
+ * @type {(string | undefined)}
34
+ */
35
+ get valueItem() {
36
+ return this.editor ? this.editor.valueItem : undefined;
37
+ }
38
+ get appDataEntity() {
39
+ return this.searchbar.appDataEntity;
40
+ }
41
+ constructor(model, searchbar) {
20
42
  var _a;
21
43
  this.model = model;
22
- this.appDataEntity = appDataEntity;
44
+ this.searchbar = searchbar;
23
45
  /**
24
46
  * 不需要编辑器
25
47
  * @author lxm
@@ -27,13 +49,10 @@ export class SearchBarFilterController {
27
49
  * @type {boolean}
28
50
  */
29
51
  this.noEditor = false;
30
- // 上下文、参数
31
- this.context = context;
32
- this.params = params;
33
52
  // 实体属性
34
53
  let field;
35
54
  if (model.appDEFieldId) {
36
- field = findFieldById(appDataEntity, model.appDEFieldId);
55
+ field = findFieldById(this.appDataEntity, model.appDEFieldId);
37
56
  }
38
57
  this.fieldName = field ? field.codeName.toLowerCase() : model.id;
39
58
  // 属性标题
@@ -62,4 +81,58 @@ export class SearchBarFilterController {
62
81
  }
63
82
  }
64
83
  }
84
+ /**
85
+ * 格式化给多数据查询接口的值
86
+ * @author lxm
87
+ * @date 2024-02-04 11:31:32
88
+ * @param {*} value
89
+ * @return {*} {*}
90
+ */
91
+ formatValue(node) {
92
+ const { value, valueItem } = node;
93
+ if (this.valueItem && valueItem) {
94
+ delete node.valueItem;
95
+ return valueItem;
96
+ }
97
+ // 脚本转换
98
+ if (ScriptValueRegex.test(value)) {
99
+ return ScriptFactory.execSingleLine(`\`${value}\``, Object.assign({}, this.searchbar.getEventArgs()));
100
+ }
101
+ return value;
102
+ }
103
+ /**
104
+ * 计算要递给编辑器的参数
105
+ * @author lxm
106
+ * @date 2024-02-04 06:35:28
107
+ * @param {IFilterLeafNode} node
108
+ * @return {*} {{ value: unknown; data: IData }}
109
+ */
110
+ calcEditorProps(node) {
111
+ const tempData = {};
112
+ let editorValue = node.value;
113
+ if (node.disabled && ScriptValueRegex.test(editorValue)) {
114
+ editorValue = editorValue.replace('${context.srfpersonid}', '当前用户');
115
+ editorValue = editorValue.replace('${context.srforgid}', '当前组织');
116
+ }
117
+ if (this.valueItem) {
118
+ tempData[this.valueItem] = node.valueItem;
119
+ }
120
+ return { value: editorValue, data: tempData };
121
+ }
122
+ /**
123
+ * 编辑器值变更处理
124
+ * @author lxm
125
+ * @date 2024-02-04 06:42:04
126
+ * @param {IFilterLeafNode} node
127
+ * @param {unknown} value
128
+ * @param {string} [name]
129
+ */
130
+ onEditorChange(node, value, name) {
131
+ if (this.valueItem && name === this.valueItem) {
132
+ node.valueItem = value;
133
+ }
134
+ else {
135
+ node.value = value;
136
+ }
137
+ }
65
138
  }
@@ -121,6 +121,15 @@ export declare class SearchBarController extends ControlController<ISearchBar, I
121
121
  * @Date: 2023-06-01 18:08:18
122
122
  */
123
123
  onSearch(): void;
124
+ /**
125
+ * 找到过滤项控制器
126
+ * @author lxm
127
+ * @date 2024-02-04 11:29:31
128
+ * @param {(string | null)} fieldName
129
+ * @param {(string | null)} valueOP
130
+ * @return {*} {(SearchBarFilterController | undefined)}
131
+ */
132
+ findFilterController(fieldName: string | null, valueOP: string | null): SearchBarFilterController | undefined;
124
133
  /**
125
134
  * 获取搜索栏的过滤参数(包括快速搜索,快速分组和过滤器的参数)
126
135
  * @author lxm
@@ -148,7 +157,7 @@ export declare class SearchBarController extends ControlController<ISearchBar, I
148
157
  * @date 2023-10-13 05:53:35
149
158
  * @return {*} {IData}
150
159
  */
151
- calcFilters(): IData[] | undefined;
160
+ calcFilters(valueFormat?: boolean): IData[] | undefined;
152
161
  /**
153
162
  * 初始化搜索栏分组项(获取后台分组清单并合并模型)
154
163
  * @return {*}
@@ -1 +1 @@
1
- {"version":3,"file":"search-bar.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/search-bar/search-bar.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGhF,OAAO,EACL,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EAEhB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAWxD;;;;;;;;GAQG;AACH,qBAAa,mBACX,SAAQ,iBAAiB,CAAC,UAAU,EAAE,eAAe,EAAE,eAAe,CACtE,YAAW,oBAAoB;IAE/B;;;;;OAKG;IACH,WAAW,SAAM;IAEjB;;;;;OAKG;IACH,iBAAiB,EAAE,yBAAyB,EAAE,CAAM;IAEpD;;;;;OAKG;IACH,OAAO,EAAG,gBAAgB,CAAC;IAE3B;;;;;OAKG;IACH,gBAAgB,EAAE,sBAAsB,GAAG,IAAI,CAAQ;IAEvD;;;;;OAKG;IACH,oBAAoB,UAA8C;IAElE;;;;;OAKG;IACH,gBAAgB,UAAS;IAEzB;;;;;OAKG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;;;;OAKG;IACH,IAAI,gBAAgB,IAAI,gBAAgB,EAAE,CAEzC;IAED;;;;OAIG;IACH,gBAAgB,UAAS;IAEzB;;;;;OAKG;IACH,IAAI,IAAI,IAAI,eAAe,GAAG,SAAS,CAGtC;IAED;;;;;OAKG;IACH,aAAa,EAAG,cAAc,CAAC;IAE/B,SAAS,CAAC,SAAS,IAAI,IAAI;cAcX,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B1C;;;;;OAKG;IACG,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCzC;;;;;;OAMG;IACH,SAAS,CAAC,0BAA0B,IAAI,IAAI;IA2B5C;;;;;;OAMG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B;;;;;OAKG;IACH,QAAQ,IAAI,IAAI;IAIhB;;;;;OAKG;IACH,eAAe,IAAI,OAAO;IA4B1B;;;;OAIG;IACH,WAAW,IAAI,IAAI;IAKnB;;;;;;OAMG;cACa,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBrD;;;;;OAKG;IACH,WAAW,IAAI,KAAK,EAAE,GAAG,SAAS;IA6BlC;;;;;OAKG;IACG,iBAAiB,CAAC,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAoGlE;;;;;OAKG;IACH,gBAAgB,IAAI,IAAI;IAWxB;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCjC;;;;;OAKG;IACG,gBAAgB,CAAC,SAAS,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;CA2CzE"}
1
+ {"version":3,"file":"search-bar.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/search-bar/search-bar.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGhF,OAAO,EACL,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EAEhB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAWxD;;;;;;;;GAQG;AACH,qBAAa,mBACX,SAAQ,iBAAiB,CAAC,UAAU,EAAE,eAAe,EAAE,eAAe,CACtE,YAAW,oBAAoB;IAE/B;;;;;OAKG;IACH,WAAW,SAAM;IAEjB;;;;;OAKG;IACH,iBAAiB,EAAE,yBAAyB,EAAE,CAAM;IAEpD;;;;;OAKG;IACH,OAAO,EAAG,gBAAgB,CAAC;IAE3B;;;;;OAKG;IACH,gBAAgB,EAAE,sBAAsB,GAAG,IAAI,CAAQ;IAEvD;;;;;OAKG;IACH,oBAAoB,UAA8C;IAElE;;;;;OAKG;IACH,gBAAgB,UAAS;IAEzB;;;;;OAKG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;;;;OAKG;IACH,IAAI,gBAAgB,IAAI,gBAAgB,EAAE,CAEzC;IAED;;;;OAIG;IACH,gBAAgB,UAAS;IAEzB;;;;;OAKG;IACH,IAAI,IAAI,IAAI,eAAe,GAAG,SAAS,CAGtC;IAED;;;;;OAKG;IACH,aAAa,EAAG,cAAc,CAAC;IAE/B,SAAS,CAAC,SAAS,IAAI,IAAI;cAcX,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B1C;;;;;OAKG;IACG,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCzC;;;;;;OAMG;IACH,SAAS,CAAC,0BAA0B,IAAI,IAAI;IA2B5C;;;;;;OAMG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B;;;;;OAKG;IACH,QAAQ,IAAI,IAAI;IAIhB;;;;;;;OAOG;IACH,oBAAoB,CAClB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,yBAAyB,GAAG,SAAS;IAUxC;;;;;OAKG;IACH,eAAe,IAAI,OAAO;IA4B1B;;;;OAIG;IACH,WAAW,IAAI,IAAI;IAKnB;;;;;;OAMG;cACa,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYrD;;;;;OAKG;IACH,WAAW,CAAC,WAAW,UAAO,GAAG,KAAK,EAAE,GAAG,SAAS;IA4BpD;;;;;OAKG;IACG,iBAAiB,CAAC,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAoGlE;;;;;OAKG;IACH,gBAAgB,IAAI,IAAI;IAWxB;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCjC;;;;;OAKG;IACG,gBAAgB,CAAC,SAAS,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;CA2CzE"}
@@ -203,6 +203,23 @@ export class SearchBarController extends ControlController {
203
203
  onSearch() {
204
204
  this.evt.emit('onSearch', undefined);
205
205
  }
206
+ /**
207
+ * 找到过滤项控制器
208
+ * @author lxm
209
+ * @date 2024-02-04 11:29:31
210
+ * @param {(string | null)} fieldName
211
+ * @param {(string | null)} valueOP
212
+ * @return {*} {(SearchBarFilterController | undefined)}
213
+ */
214
+ findFilterController(fieldName, valueOP) {
215
+ return this.filterControllers.find(item => {
216
+ if (item.fieldName === fieldName) {
217
+ // 有配属性搜索模式的匹配才是,没配的都是指向没配的哪个过滤项
218
+ return item.valueOP ? item.valueOP === valueOP : true;
219
+ }
220
+ return false;
221
+ });
222
+ }
206
223
  /**
207
224
  * 获取搜索栏的过滤参数(包括快速搜索,快速分组和过滤器的参数)
208
225
  * @author lxm
@@ -251,7 +268,7 @@ export class SearchBarController extends ControlController {
251
268
  var _a;
252
269
  if ((_a = this.searchBarFilters) === null || _a === void 0 ? void 0 : _a.length) {
253
270
  this.searchBarFilters.forEach(item => {
254
- const filterController = new SearchBarFilterController(item, this.appDataEntity, this.context, this.params);
271
+ const filterController = new SearchBarFilterController(item, this);
255
272
  this.filterControllers.push(filterController);
256
273
  });
257
274
  await Promise.all(this.filterControllers.map(controller => controller.init()));
@@ -263,18 +280,19 @@ export class SearchBarController extends ControlController {
263
280
  * @date 2023-10-13 05:53:35
264
281
  * @return {*} {IData}
265
282
  */
266
- calcFilters() {
283
+ calcFilters(valueFormat = true) {
267
284
  if (!this.enableFilter) {
268
285
  return;
269
286
  }
270
287
  const searchconds = calcSearchConds(this.state.filterNodes);
271
- if (searchconds) {
288
+ if (valueFormat && searchconds) {
272
289
  // 给多数据加载之前进行脚本值转换
273
290
  recursiveIterate(searchconds[0], (node) => {
274
- if (node.condtype === 'DEFIELD' &&
275
- !isNil(node.value) &&
276
- ScriptValueRegex.test(node.value)) {
277
- node.value = ScriptFactory.execSingleLine(`\`${node.value}\``, Object.assign({}, this.getEventArgs()));
291
+ if (node.condtype === 'DEFIELD' && !isNil(node.value)) {
292
+ const controller = this.findFilterController(node.fieldname, node.condop);
293
+ if (controller) {
294
+ node.value = controller.formatValue(node);
295
+ }
278
296
  }
279
297
  }, { childrenFields: ['searchconds'] });
280
298
  }
@@ -394,7 +412,7 @@ export class SearchBarController extends ControlController {
394
412
  */
395
413
  async handleSave() {
396
414
  if (this.grid && this.state.selectedSearchGroupItem) {
397
- const filters = this.calcFilters();
415
+ const filters = this.calcFilters(false);
398
416
  const saveParams = {
399
417
  searchconds: filters,
400
418
  sort: this.grid.state.sortQuery,
@@ -1 +1 @@
1
- {"version":3,"file":"use-searchcond.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/search-bar/use-searchcond.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,WAAW,EAAE,CAQpD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,KAAK,CAgBtD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,WAAW,CAmBrD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,WAAW,EAAE,GACzB,KAAK,EAAE,GAAG,SAAS,CAiBrB"}
1
+ {"version":3,"file":"use-searchcond.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/search-bar/use-searchcond.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,WAAW,EAAE,CAQpD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,KAAK,CAsBtD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,WAAW,CAoBrD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,WAAW,EAAE,GACzB,KAAK,EAAE,GAAG,SAAS,CAiBrB"}
@@ -31,12 +31,17 @@ export function formatFilters(node) {
31
31
  searchconds: node.children.map(item => formatFilters(item)),
32
32
  };
33
33
  }
34
- return {
34
+ const leafNode = node;
35
+ const temp = {
35
36
  condtype: 'DEFIELD',
36
37
  fieldname: node.field,
37
38
  condop: node.valueOP,
38
39
  value: node.value,
39
40
  };
41
+ if (leafNode.valueItem) {
42
+ temp.valueItem = leafNode.valueItem;
43
+ }
44
+ return temp;
40
45
  }
41
46
  /**
42
47
  * 根据格式化后的过滤项反推出过滤项树节点数据集合
@@ -59,6 +64,7 @@ export function parseFilters(data) {
59
64
  field: data.fieldname || null,
60
65
  valueOP: data.condop || null,
61
66
  value: data.value || null,
67
+ valueItem: data.valueItem || undefined,
62
68
  };
63
69
  }
64
70
  throw new RuntimeError(`无效的condtype:${data.condtype}`);
@@ -1,10 +1,11 @@
1
1
  import { IInternalMessage } from '@ibiz-template/core';
2
2
  import { QXEvent } from 'qx-util';
3
- import { IInternalMessageController, InternalMessageEvent } from '../../interface';
3
+ import { IInternalMessageController, IInternalMessageEvent } from '../../interface';
4
4
  import { InternalMessageService } from '../../service';
5
5
  export declare class InternalMessageController implements IInternalMessageController {
6
- readonly evt: QXEvent<InternalMessageEvent>;
6
+ readonly evt: QXEvent<IInternalMessageEvent>;
7
7
  total: number;
8
+ unreadCount: number;
8
9
  /**
9
10
  * 当前分页
10
11
  * @author lxm
@@ -14,10 +15,19 @@ export declare class InternalMessageController implements IInternalMessageContro
14
15
  page: number;
15
16
  size: number;
16
17
  messages: IInternalMessage[];
18
+ unreadOnly: boolean;
17
19
  protected service: InternalMessageService;
18
20
  init(): Promise<void>;
19
21
  load(): Promise<void>;
20
22
  loadMore(): Promise<void>;
23
+ refreshUnreadCount(): Promise<void>;
24
+ /**
25
+ * 切换是否只读
26
+ * @author lxm
27
+ * @date 2024-02-04 10:21:22
28
+ * @param {val} [boolean] 是否只读
29
+ */
30
+ toggleUnReadOnly(val?: boolean): void;
21
31
  protected fetch(loadMore?: boolean): Promise<void>;
22
32
  /**
23
33
  * 监听mqtt消息
@@ -26,5 +36,14 @@ export declare class InternalMessageController implements IInternalMessageContro
26
36
  * @protected
27
37
  */
28
38
  protected listenMqtt(): void;
39
+ markRead(message: IInternalMessage): Promise<void>;
40
+ /**
41
+ * 获取完整信息
42
+ * @author lxm
43
+ * @date 2024-01-30 05:03:25
44
+ * @param {string} id
45
+ * @return {*} {Promise<IInternalMessage>}
46
+ */
47
+ get(id: string): Promise<IInternalMessage>;
29
48
  }
30
49
  //# sourceMappingURL=internal-message.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal-message.controller.d.ts","sourceRoot":"","sources":["../../../src/controller/notification/internal-message.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD,qBAAa,yBAA0B,YAAW,0BAA0B;IAC1E,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAiB;IAE5D,KAAK,EAAE,MAAM,CAAK;IAElB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAK;IAEjB,IAAI,EAAE,MAAM,CAAM;IAElB,QAAQ,EAAE,gBAAgB,EAAE,CAAM;IAElC,SAAS,CAAC,OAAO,yBAAgC;IAE3C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;cAIf,KAAK,CAAC,QAAQ,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB/D;;;;;OAKG;IACH,SAAS,CAAC,UAAU,IAAI,IAAI;CAW7B"}
1
+ {"version":3,"file":"internal-message.controller.d.ts","sourceRoot":"","sources":["../../../src/controller/notification/internal-message.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAQvD,qBAAa,yBAA0B,YAAW,0BAA0B;IAC1E,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAiB;IAE7D,KAAK,EAAE,MAAM,CAAK;IAElB,WAAW,EAAE,MAAM,CAAK;IAExB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAK;IAEjB,IAAI,EAAE,MAAM,CAAM;IAElB,QAAQ,EAAE,gBAAgB,EAAE,CAAM;IAElC,UAAU,UAAS;IAEnB,SAAS,CAAC,OAAO,yBAAgC;IAE3C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IASzC;;;;;OAKG;IACH,gBAAgB,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI;cAUrB,KAAK,CAAC,QAAQ,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C/D;;;;;OAKG;IACH,SAAS,CAAC,UAAU,IAAI,IAAI;IAkBtB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxD;;;;;;OAMG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAIjD"}
@@ -1,9 +1,16 @@
1
1
  import { QXEvent } from 'qx-util';
2
2
  import { InternalMessageService } from '../../service';
3
+ function isHTML(str) {
4
+ if (str === '')
5
+ return false;
6
+ const doc = new DOMParser().parseFromString(str, 'text/html');
7
+ return Array.from(doc.body.childNodes).some(node => node.nodeType === 1);
8
+ }
3
9
  export class InternalMessageController {
4
10
  constructor() {
5
11
  this.evt = new QXEvent();
6
12
  this.total = 0;
13
+ this.unreadCount = 0;
7
14
  /**
8
15
  * 当前分页
9
16
  * @author lxm
@@ -13,18 +20,49 @@ export class InternalMessageController {
13
20
  this.page = 0;
14
21
  this.size = 20;
15
22
  this.messages = [];
23
+ this.unreadOnly = false;
16
24
  this.service = new InternalMessageService();
17
25
  }
18
26
  async init() {
19
- this.load();
27
+ await this.load();
20
28
  this.listenMqtt();
29
+ await this.refreshUnreadCount();
21
30
  }
22
31
  async load() {
23
- await this.fetch(false);
32
+ try {
33
+ await this.fetch(false);
34
+ }
35
+ catch (error) {
36
+ ibiz.log.error(error);
37
+ }
24
38
  }
25
39
  async loadMore() {
26
40
  await this.fetch(true);
27
41
  }
42
+ async refreshUnreadCount() {
43
+ try {
44
+ this.unreadCount = await this.service.getUnreadNum();
45
+ this.evt.emit('unreadCountChange', this.unreadCount);
46
+ }
47
+ catch (error) {
48
+ ibiz.log.error(error);
49
+ }
50
+ }
51
+ /**
52
+ * 切换是否只读
53
+ * @author lxm
54
+ * @date 2024-02-04 10:21:22
55
+ * @param {val} [boolean] 是否只读
56
+ */
57
+ toggleUnReadOnly(val) {
58
+ const nextVal = val === undefined ? !this.unreadOnly : val;
59
+ if (this.unreadOnly === nextVal) {
60
+ return;
61
+ }
62
+ this.unreadOnly = nextVal;
63
+ this.evt.emit('unreadOnlyChange', this.unreadOnly);
64
+ this.load();
65
+ }
28
66
  async fetch(loadMore = false) {
29
67
  // *计算查询参数
30
68
  if (loadMore === false) {
@@ -38,6 +76,24 @@ export class InternalMessageController {
38
76
  size: this.size,
39
77
  sort: 'update_time,desc',
40
78
  };
79
+ // 是否只搜索未读
80
+ if (this.unreadOnly) {
81
+ fetchParams.searchconds = [
82
+ {
83
+ condtype: 'GROUP',
84
+ condop: 'AND',
85
+ bnotmode: false,
86
+ searchconds: [
87
+ {
88
+ condop: 'EQ',
89
+ condtype: 'DEFIELD',
90
+ fieldname: 'status',
91
+ value: 'RECEIVED',
92
+ },
93
+ ],
94
+ },
95
+ ];
96
+ }
41
97
  const res = await this.service.fetch(fetchParams);
42
98
  this.total = res.total;
43
99
  if (loadMore) {
@@ -61,7 +117,39 @@ export class InternalMessageController {
61
117
  return;
62
118
  }
63
119
  // todo 目前会有一种情况,不带data,弹右下角消息提示
64
- ibiz.notification.info({ desc: msg.content, position: 'bottom-right' });
120
+ if (msg.content) {
121
+ ibiz.notification.info({
122
+ isHtmlDesc: isHTML(msg.content),
123
+ desc: msg.content,
124
+ position: 'bottom-right',
125
+ });
126
+ }
65
127
  });
66
128
  }
129
+ async markRead(message) {
130
+ if (message.status !== 'RECEIVED') {
131
+ return;
132
+ }
133
+ const find = this.messages.find(msg => msg.id === message.id);
134
+ if (!find) {
135
+ return;
136
+ }
137
+ // todo 后台接口适配
138
+ await this.service.markRead(message.id);
139
+ // find.status = 'READ';
140
+ // this.unreadCount -= 1;
141
+ this.evt.emit('unreadCountChange', this.unreadCount);
142
+ this.evt.emit('dataChange');
143
+ }
144
+ /**
145
+ * 获取完整信息
146
+ * @author lxm
147
+ * @date 2024-01-30 05:03:25
148
+ * @param {string} id
149
+ * @return {*} {Promise<IInternalMessage>}
150
+ */
151
+ async get(id) {
152
+ const res = await this.service.get(id);
153
+ return res.data;
154
+ }
67
155
  }
@@ -1,7 +1,9 @@
1
- import { INoticeController } from '../../interface';
1
+ import { QXEvent } from 'qx-util';
2
+ import { INoticeController, INoticeEvent } from '../../interface';
2
3
  import { AsyncActionController } from './async-action.controller';
3
4
  import { InternalMessageController } from './internal-message.controller';
4
5
  export declare class NoticeController implements INoticeController {
6
+ readonly evt: QXEvent<INoticeEvent>;
5
7
  total: number;
6
8
  asyncAction: AsyncActionController;
7
9
  internalMessage: InternalMessageController;
@@ -1 +1 @@
1
- {"version":3,"file":"notice.controller.d.ts","sourceRoot":"","sources":["../../../src/controller/notification/notice.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,KAAK,SAAK;IAEV,WAAW,wBAA+B;IAE1C,eAAe,4BAAmC;IAE5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAI5B"}
1
+ {"version":3,"file":"notice.controller.d.ts","sourceRoot":"","sources":["../../../src/controller/notification/notice.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,CAAiB;IAEpD,KAAK,SAAK;IAEV,WAAW,wBAA+B;IAE1C,eAAe,4BAAmC;IAE5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAS5B"}
@@ -1,7 +1,9 @@
1
+ import { QXEvent } from 'qx-util';
1
2
  import { AsyncActionController } from './async-action.controller';
2
3
  import { InternalMessageController } from './internal-message.controller';
3
4
  export class NoticeController {
4
5
  constructor() {
6
+ this.evt = new QXEvent();
5
7
  this.total = 0;
6
8
  this.asyncAction = new AsyncActionController();
7
9
  this.internalMessage = new InternalMessageController();
@@ -9,5 +11,9 @@ export class NoticeController {
9
11
  async init() {
10
12
  await this.internalMessage.init();
11
13
  await this.asyncAction.init();
14
+ this.internalMessage.evt.on('unreadCountChange', () => {
15
+ this.total = this.internalMessage.unreadCount;
16
+ this.evt.emit('totalChange', this.total);
17
+ });
12
18
  }
13
19
  }
@@ -6,13 +6,25 @@ import { QXEvent } from 'qx-util';
6
6
  * @date 2024-01-26 10:47:41
7
7
  * @interface InternalMessageEvent
8
8
  */
9
- export interface InternalMessageEvent {
9
+ export interface IInternalMessageEvent {
10
10
  /**
11
11
  * 所有数据的变更,新增,删除,更新都算
12
12
  * @author lxm
13
13
  * @date 2024-01-26 10:56:50
14
14
  */
15
15
  dataChange: () => void;
16
+ /**
17
+ * 未读数量变更
18
+ * @author lxm
19
+ * @date 2024-01-30 02:46:55
20
+ */
21
+ unreadCountChange: (num: number) => void;
22
+ /**
23
+ * 是否只显示未读变更
24
+ * @author lxm
25
+ * @date 2024-01-30 02:46:55
26
+ */
27
+ unreadOnlyChange: (val: boolean) => void;
16
28
  }
17
29
  /**
18
30
  * 站内信逻辑控制器
@@ -26,9 +38,9 @@ export interface IInternalMessageController {
26
38
  * 事件
27
39
  * @author lxm
28
40
  * @date 2024-01-26 10:48:53
29
- * @type {QXEvent<InternalMessageEvent>}
41
+ * @type {QXEvent<IInternalMessageEvent>}
30
42
  */
31
- readonly evt: QXEvent<InternalMessageEvent>;
43
+ readonly evt: QXEvent<IInternalMessageEvent>;
32
44
  /**
33
45
  * 总条数
34
46
  * @author lxm
@@ -50,6 +62,20 @@ export interface IInternalMessageController {
50
62
  * @type {IInternalMessage[]}
51
63
  */
52
64
  readonly messages: IInternalMessage[];
65
+ /**
66
+ * 未读消息个数
67
+ * @author lxm
68
+ * @date 2024-01-30 02:39:54
69
+ * @type {number}
70
+ */
71
+ readonly unreadCount: number;
72
+ /**
73
+ * 是否只查询未读的消息
74
+ * @author lxm
75
+ * @date 2024-02-04 10:26:00
76
+ * @type {boolean}
77
+ */
78
+ unreadOnly: boolean;
53
79
  /**
54
80
  * 加载(会重置数据)
55
81
  * @author lxm
@@ -64,5 +90,35 @@ export interface IInternalMessageController {
64
90
  * @return {*} {Promise<void>}
65
91
  */
66
92
  loadMore(): Promise<void>;
93
+ /**
94
+ * 刷新未读数据条数
95
+ * @author lxm
96
+ * @date 2024-02-04 09:37:58
97
+ * @return {*} {Promise<void>}
98
+ */
99
+ refreshUnreadCount(): Promise<void>;
100
+ /**
101
+ * 把某条消息记录标记为已读
102
+ * @author lxm
103
+ * @date 2024-01-30 02:31:17
104
+ * @param {IInternalMessage} message
105
+ * @return {*} {Promise<void>}
106
+ */
107
+ markRead(message: IInternalMessage): Promise<void>;
108
+ /**
109
+ * 获取完整消息
110
+ * @author lxm
111
+ * @date 2024-01-30 05:03:51
112
+ * @param {string} id
113
+ * @return {*} {Promise<IInternalMessage>}
114
+ */
115
+ get(id: string): Promise<IInternalMessage>;
116
+ /**
117
+ * 切换是否只读
118
+ * @author lxm
119
+ * @date 2024-02-04 10:21:22
120
+ * @param {val} [boolean] 是否只读
121
+ */
122
+ toggleUnReadOnly(val?: boolean): void;
67
123
  }
68
124
  //# sourceMappingURL=i-internal-message.controller.d.ts.map