@ibiz-template/runtime 0.6.18 → 0.7.1

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 (111) hide show
  1. package/dist/index.esm.js +1033 -356
  2. package/dist/index.system.min.js +1 -1
  3. package/out/app-hub.d.ts +7 -0
  4. package/out/app-hub.d.ts.map +1 -1
  5. package/out/app-hub.js +11 -0
  6. package/out/application.d.ts +7 -0
  7. package/out/application.d.ts.map +1 -1
  8. package/out/application.js +9 -0
  9. package/out/command/app/app-func/app-func.d.ts.map +1 -1
  10. package/out/command/app/app-func/app-func.js +1 -0
  11. package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
  12. package/out/controller/common/control/md-control.controller.js +3 -0
  13. package/out/controller/control/chart/chart.controller.d.ts +38 -0
  14. package/out/controller/control/chart/chart.controller.d.ts.map +1 -1
  15. package/out/controller/control/chart/chart.controller.js +183 -0
  16. package/out/controller/control/chart/generator/base-series-generator.js +1 -1
  17. package/out/controller/control/form/form/form.controller.d.ts.map +1 -1
  18. package/out/controller/control/form/form/form.controller.js +4 -3
  19. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.state.d.ts +2 -2
  20. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.state.d.ts.map +1 -1
  21. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.state.js +2 -2
  22. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.d.ts +32 -1
  23. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.d.ts.map +1 -1
  24. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.js +63 -0
  25. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.d.ts +12 -0
  26. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.d.ts.map +1 -0
  27. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.js +13 -0
  28. package/out/controller/control/grid/grid/grid.controller.d.ts +5 -0
  29. package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
  30. package/out/controller/control/grid/grid/grid.controller.js +13 -10
  31. package/out/controller/control/search-bar/index.d.ts +3 -1
  32. package/out/controller/control/search-bar/index.d.ts.map +1 -1
  33. package/out/controller/control/search-bar/index.js +3 -1
  34. package/out/controller/control/search-bar/interface-util.d.ts +75 -0
  35. package/out/controller/control/search-bar/interface-util.d.ts.map +1 -0
  36. package/out/controller/control/search-bar/interface-util.js +274 -0
  37. package/out/controller/control/search-bar/search-bar-filter-items.controller.d.ts +1 -2
  38. package/out/controller/control/search-bar/search-bar-filter-items.controller.d.ts.map +1 -1
  39. package/out/controller/control/search-bar/search-bar-filter-items.controller.js +13 -10
  40. package/out/controller/control/search-bar/search-bar-filter-simple-items.controller.d.ts +37 -0
  41. package/out/controller/control/search-bar/search-bar-filter-simple-items.controller.d.ts.map +1 -0
  42. package/out/controller/control/search-bar/search-bar-filter-simple-items.controller.js +47 -0
  43. package/out/controller/control/search-bar/search-bar-filter.controller.d.ts +20 -5
  44. package/out/controller/control/search-bar/search-bar-filter.controller.d.ts.map +1 -1
  45. package/out/controller/control/search-bar/search-bar-filter.controller.js +13 -2
  46. package/out/controller/control/search-bar/search-bar.controller.d.ts +15 -2
  47. package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
  48. package/out/controller/control/search-bar/search-bar.controller.js +80 -30
  49. package/out/controller/control/search-bar/util.d.ts +35 -0
  50. package/out/controller/control/search-bar/util.d.ts.map +1 -0
  51. package/out/controller/control/search-bar/util.js +45 -0
  52. package/out/controller/control/tab-exp-panel/tab-exp-panel.controller.d.ts.map +1 -1
  53. package/out/controller/control/tab-exp-panel/tab-exp-panel.controller.js +1 -0
  54. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts +7 -0
  55. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts.map +1 -1
  56. package/out/interface/common/i-app-service/i-app-service.d.ts +7 -0
  57. package/out/interface/common/i-app-service/i-app-service.d.ts.map +1 -1
  58. package/out/interface/controller/controller/control/i-app-menu.controller.d.ts +8 -1
  59. package/out/interface/controller/controller/control/i-app-menu.controller.d.ts.map +1 -1
  60. package/out/interface/controller/event/argument/index.d.ts +1 -0
  61. package/out/interface/controller/event/argument/index.d.ts.map +1 -1
  62. package/out/interface/controller/event/argument/tab-change.event.d.ts +13 -0
  63. package/out/interface/controller/event/argument/tab-change.event.d.ts.map +1 -0
  64. package/out/interface/controller/event/control/i-tab-exp-panel.event.d.ts +15 -1
  65. package/out/interface/controller/event/control/i-tab-exp-panel.event.d.ts.map +1 -1
  66. package/out/interface/controller/state/control/i-chart.state.d.ts +28 -0
  67. package/out/interface/controller/state/control/i-chart.state.d.ts.map +1 -1
  68. package/out/interface/controller/state/control/i-md-control.state.d.ts +4 -0
  69. package/out/interface/controller/state/control/i-md-control.state.d.ts.map +1 -1
  70. package/out/interface/controller/state/control/index.d.ts +1 -1
  71. package/out/interface/controller/state/control/index.d.ts.map +1 -1
  72. package/out/interface/controller/state/control/index.js +1 -1
  73. package/out/interface/controller/state/control/search-bar/i-filter-node.d.ts +157 -0
  74. package/out/interface/controller/state/control/search-bar/i-filter-node.d.ts.map +1 -0
  75. package/out/interface/controller/state/control/search-bar/i-filter-node.js +1 -0
  76. package/out/interface/controller/state/control/search-bar/i-quick-search.d.ts +24 -0
  77. package/out/interface/controller/state/control/search-bar/i-quick-search.d.ts.map +1 -0
  78. package/out/interface/controller/state/control/search-bar/i-quick-search.js +1 -0
  79. package/out/interface/controller/state/control/search-bar/i-search-bar-group.d.ts +89 -0
  80. package/out/interface/controller/state/control/search-bar/i-search-bar-group.d.ts.map +1 -0
  81. package/out/interface/controller/state/control/search-bar/i-search-bar-group.js +1 -0
  82. package/out/interface/controller/state/control/search-bar/i-search-bar.state.d.ts +78 -0
  83. package/out/interface/controller/state/control/search-bar/i-search-bar.state.d.ts.map +1 -0
  84. package/out/interface/controller/state/control/search-bar/i-search-bar.state.js +1 -0
  85. package/out/interface/controller/state/control/search-bar/i-search-cond-ex.d.ts +65 -0
  86. package/out/interface/controller/state/control/search-bar/i-search-cond-ex.d.ts.map +1 -0
  87. package/out/interface/controller/state/control/search-bar/i-search-cond-ex.js +1 -0
  88. package/out/interface/controller/state/control/search-bar/i-search-cond.d.ts +43 -0
  89. package/out/interface/controller/state/control/search-bar/i-search-cond.d.ts.map +1 -0
  90. package/out/interface/controller/state/control/search-bar/i-search-cond.js +1 -0
  91. package/out/interface/controller/state/control/search-bar/index.d.ts +7 -0
  92. package/out/interface/controller/state/control/search-bar/index.d.ts.map +1 -0
  93. package/out/interface/controller/state/control/search-bar/index.js +1 -0
  94. package/out/service/service/code-list/code-list.service.d.ts +14 -0
  95. package/out/service/service/code-list/code-list.service.d.ts.map +1 -1
  96. package/out/service/service/code-list/code-list.service.js +39 -0
  97. package/out/service/service/control/md-control.service.d.ts.map +1 -1
  98. package/out/service/service/control/md-control.service.js +3 -0
  99. package/out/service/service/counter/counter.service.d.ts.map +1 -1
  100. package/out/service/service/counter/counter.service.js +5 -1
  101. package/out/service/utils/app-counter/app-counter.js +1 -1
  102. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts +81 -0
  103. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts.map +1 -1
  104. package/out/service/utils/dynamic-code-list/dynamic-code-list.js +127 -2
  105. package/package.json +2 -2
  106. package/out/controller/control/search-bar/use-searchcond.d.ts +0 -33
  107. package/out/controller/control/search-bar/use-searchcond.d.ts.map +0 -1
  108. package/out/controller/control/search-bar/use-searchcond.js +0 -117
  109. package/out/interface/controller/state/control/i-search-bar.state.d.ts +0 -224
  110. package/out/interface/controller/state/control/i-search-bar.state.d.ts.map +0 -1
  111. /package/out/interface/controller/{state/control/i-search-bar.state.js → event/argument/tab-change.event.js} +0 -0
@@ -165,4 +165,43 @@ export class CodeListService {
165
165
  // todo 预定义代码表
166
166
  return [];
167
167
  }
168
+ /**
169
+ * 获取代码表实例对象(动态代码表返回具体实例,静态代码表返回undefined)
170
+ *
171
+ * @param tag 代码表标识
172
+ * @returns 动态代码表实例|undefined
173
+ */
174
+ async getCodeListInstance(tag) {
175
+ let codeListInstance;
176
+ const codeList = this.allCodeLists.get(tag);
177
+ if (!codeList) {
178
+ throw new RuntimeError(`找不到${tag}代码表`);
179
+ }
180
+ if (codeList.codeListType === 'DYNAMIC') {
181
+ const codeName = codeList.codeName;
182
+ if (this.cache.has(codeName)) {
183
+ codeListInstance = this.cache.get(codeName);
184
+ }
185
+ else {
186
+ codeListInstance = new DynamicCodeListCache(codeList);
187
+ this.cache.set(codeName, codeListInstance);
188
+ await codeListInstance.init();
189
+ }
190
+ }
191
+ return codeListInstance;
192
+ }
193
+ /**
194
+ * 销毁(清除动态代码表监听)
195
+ *
196
+ * @author tony001
197
+ * @return {void}
198
+ */
199
+ destroy() {
200
+ const cacheList = Array.from(this.cache.values());
201
+ cacheList.forEach(item => {
202
+ if (item instanceof DynamicCodeListCache) {
203
+ item.destroy();
204
+ }
205
+ });
206
+ }
168
207
  }
@@ -1 +1 @@
1
- {"version":3,"file":"md-control.service.d.ts","sourceRoot":"","sources":["../../../../src/service/service/control/md-control.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgB,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,gBAAgB,CAC3B,CAAC,SAAS,cAAc,GAAG,cAAc,CACzC,SAAQ,cAAc,CAAC,CAAC,CAAC;IACzB;;;;;;;;OAQG;IACG,KAAK,CACT,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;IAQtC;;;;;;;;OAQG;IACG,GAAG,CACP,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAOpC;;;;;;;;OAQG;IACG,QAAQ,CACZ,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAQpC;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC;IAOzB;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAQpC;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAQpC;;;;;;;;OAQG;IACG,WAAW,CACf,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,SAAS,EAAE,GAChB,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;IAYtC;;;;;;;;;OASG;IACG,UAAU,CACd,WAAW,EAAE,aAAa,EAC1B,QAAQ,EAAE,OAAO,EACjB,OAAO,GAAE,OAAY,GACpB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAU/B;;;;;;;OAOG;IACH,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa;CAwBvD"}
1
+ {"version":3,"file":"md-control.service.d.ts","sourceRoot":"","sources":["../../../../src/service/service/control/md-control.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgB,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBAAa,gBAAgB,CAC3B,CAAC,SAAS,cAAc,GAAG,cAAc,CACzC,SAAQ,cAAc,CAAC,CAAC,CAAC;IACzB;;;;;;;;OAQG;IACG,KAAK,CACT,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;IAQtC;;;;;;;;OAQG;IACG,GAAG,CACP,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAOpC;;;;;;;;OAQG;IACG,QAAQ,CACZ,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAQpC;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC;IAOzB;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAQpC;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAQpC;;;;;;;;OAQG;IACG,WAAW,CACf,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,SAAS,EAAE,GAChB,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC;IAYtC;;;;;;;;;OASG;IACG,UAAU,CACd,WAAW,EAAE,aAAa,EAC1B,QAAQ,EAAE,OAAO,EACjB,OAAO,GAAE,OAAY,GACpB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAU/B;;;;;;;OAOG;IACH,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa;CA2BvD"}
@@ -152,6 +152,9 @@ export class MDControlService extends ControlService {
152
152
  if (res.headers['x-total']) {
153
153
  res.total = Number(res.headers['x-total']);
154
154
  }
155
+ if (res.headers['x-total-pages']) {
156
+ res.totalPages = Number(res.headers['x-total-pages']);
157
+ }
155
158
  }
156
159
  if (res.ok) {
157
160
  if (isArray(res.data)) {
@@ -1 +1 @@
1
- {"version":3,"file":"counter.service.d.ts","sourceRoot":"","sources":["../../../../src/service/service/counter/counter.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAa;IAEjE;;;;;;;OAOG;WACU,UAAU,CACrB,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,QAAQ,EAClB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC;IAgBtB;;;;;;;;;;OAUG;WACU,eAAe,CAC1B,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,QAAQ,EAClB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC;CAOvB"}
1
+ {"version":3,"file":"counter.service.d.ts","sourceRoot":"","sources":["../../../../src/service/service/counter/counter.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;;GAOG;AACH,qBAAa,cAAc;IACzB;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAa;IAEjE;;;;;;;OAOG;WACU,UAAU,CACrB,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,QAAQ,EAClB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC;IAoBtB;;;;;;;;;;OAUG;WACU,eAAe,CAC1B,KAAK,EAAE,cAAc,EACrB,OAAO,CAAC,EAAE,QAAQ,EAClB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,UAAU,CAAC;CAOvB"}
@@ -19,7 +19,11 @@ export class CounterService {
19
19
  * @return {*} {Promise<AppCounter>}
20
20
  */
21
21
  static async getCounter(model, context, params) {
22
- const id = model.id;
22
+ let id = model.id;
23
+ // 可由外部传入自定义标识,应用同时存在子关系的A\B单数据页面,计数器对象应该不一样
24
+ if (params && params.customId) {
25
+ id = params.customId;
26
+ }
23
27
  if (this.counterMap.has(id)) {
24
28
  const counter = this.counterMap.get(id);
25
29
  if (counter.isDestroyed === false) {
@@ -197,6 +197,6 @@ export class AppCounter {
197
197
  this.context.destroy();
198
198
  this.destroyInterval();
199
199
  this.evt.reset();
200
- ibiz.mc.command.change.on(this.countChange);
200
+ ibiz.mc.command.change.off(this.countChange);
201
201
  }
202
202
  }
@@ -1,4 +1,6 @@
1
1
  import { IAppCodeList } from '@ibiz/model-core';
2
+ import { IPortalMessage } from '@ibiz-template/core';
3
+ import { QXEvent } from 'qx-util';
2
4
  import { Application } from '../../../application';
3
5
  import { CodeListItem } from '../../../interface';
4
6
  /**
@@ -70,6 +72,34 @@ export declare class DynamicCodeListCache {
70
72
  * @type {boolean}
71
73
  */
72
74
  protected isPredefined: boolean;
75
+ /**
76
+ * 应用上下文
77
+ *
78
+ * @author tony001
79
+ * @date 2024-04-10 15:04:25
80
+ * @protected
81
+ * @type {IContext}
82
+ */
83
+ protected context: IContext;
84
+ /**
85
+ * 视图参数
86
+ *
87
+ * @author tony001
88
+ * @date 2024-04-10 15:04:39
89
+ * @protected
90
+ * @type {IParams}
91
+ */
92
+ protected params: IParams;
93
+ /**
94
+ * 事件对象
95
+ *
96
+ * @author tony001
97
+ * @date 2024-04-10 17:04:00
98
+ * @protected
99
+ */
100
+ protected evt: QXEvent<{
101
+ change: (data: CodeListItem[]) => void;
102
+ }>;
73
103
  /**
74
104
  * 初始化promise
75
105
  *
@@ -79,6 +109,16 @@ export declare class DynamicCodeListCache {
79
109
  */
80
110
  protected initPromise?: Promise<void>;
81
111
  constructor(codeList: IAppCodeList);
112
+ /**
113
+ * 设置上下文以及查询参数
114
+ *
115
+ * @author tony001
116
+ * @date 2024-04-10 15:04:04
117
+ * @protected
118
+ * @param {IContext} [context]
119
+ * @param {IParams} [params]
120
+ */
121
+ protected setParams(context?: IContext, params?: IParams): void;
82
122
  /**
83
123
  * 初始化
84
124
  *
@@ -125,6 +165,47 @@ export declare class DynamicCodeListCache {
125
165
  * @returns {*} {Promise<IData[]>}
126
166
  */
127
167
  get(context: IContext, params?: IParams): Promise<CodeListItem[]>;
168
+ /**
169
+ * 接受代码表实体数据变更,刷新代码表
170
+ *
171
+ * @author tony001
172
+ * @date 2024-04-10 15:04:42
173
+ * @protected
174
+ * @param {IPortalMessage} msg
175
+ */
176
+ protected codelistChange(msg: IPortalMessage): void;
177
+ /**
178
+ * 刷新代码表数据
179
+ *
180
+ * @author tony001
181
+ * @date 2024-04-10 17:04:20
182
+ * @return {*} {Promise<void>}
183
+ */
184
+ refresh(): Promise<void>;
185
+ /**
186
+ * 代码表数据变更事件监听
187
+ *
188
+ * @author tony001
189
+ * @date 2024-04-10 17:04:52
190
+ * @param {(data: CodeListItem[]) => void} fn
191
+ * @param {boolean} [immediate=true] 当有数据时,立即触发一次回调
192
+ */
193
+ onChange(fn: (data: CodeListItem[]) => void, immediate?: boolean): void;
194
+ /**
195
+ * 取消代码表数据变更监听
196
+ *
197
+ * @author tony001
198
+ * @date 2024-04-10 17:04:57
199
+ * @param {(data: CodeListItem[]) => void} fn
200
+ */
201
+ offChange(fn: (data: CodeListItem[]) => void): void;
202
+ /**
203
+ * 销毁(取消数据变更监听)
204
+ *
205
+ * @author tony001
206
+ * @date 2024-04-10 15:04:11
207
+ */
208
+ destroy(): void;
128
209
  }
129
210
  export {};
130
211
  //# sourceMappingURL=dynamic-code-list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-code-list.d.ts","sourceRoot":"","sources":["../../../../src/service/utils/dynamic-code-list/dynamic-code-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD;;;;;;GAMG;AACH,KAAK,SAAS,GAAG;IACf;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IAEvB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACnC,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,oBAAoB;IAC/B,SAAS,CAAC,GAAG,EAAG,WAAW,CAAC;IAE5B;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC;IAEjC;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,yBAAgC;IAE/C;;;;;;;OAOG;IACH,SAAS,CAAC,YAAY,EAAE,OAAO,CAAS;IAExC;;;;;;OAMG;IACH,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAE1B,QAAQ,EAAE,YAAY;IAIlC;;;;;;OAMG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB3B;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,YAAY;IAwEhD,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,YAAY;IAetD,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE;IAS9C;;;;;;;;;OASG;cACa,IAAI,CAClB,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC;IAuF1B;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS;IAmBrE;;;;;;;;OAQG;IACG,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAE,OAAY,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAyC5E"}
1
+ {"version":3,"file":"dynamic-code-list.d.ts","sourceRoot":"","sources":["../../../../src/service/utils/dynamic-code-list/dynamic-code-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAEL,cAAc,EAGf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,OAAO,EAAe,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAC;AAK/D;;;;;;GAMG;AACH,KAAK,SAAS,GAAG;IACf;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IAEvB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACnC,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,oBAAoB;IAC/B,SAAS,CAAC,GAAG,EAAG,WAAW,CAAC;IAE5B;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC;IAEjC;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,yBAAgC;IAE/C;;;;;;;OAOG;IACH,SAAS,CAAC,YAAY,EAAE,OAAO,CAAS;IAExC;;;;;;;OAOG;IACH,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAwB;IAEnD;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAM;IAE/B;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;QAAE,MAAM,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,IAAI,CAAA;KAAE,CAAC,CAClD;IAEhB;;;;;;OAMG;IACH,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAE1B,QAAQ,EAAE,YAAY;IAUlC;;;;;;;;OAQG;IACH,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI;IAS/D;;;;;;OAMG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB3B;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,YAAY;IAwEhD,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,YAAY;IAetD,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE;IAS9C;;;;;;;;;OASG;cACa,IAAI,CAClB,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC;IAwF1B;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,GAAG,SAAS;IAmBrE;;;;;;;;OAQG;IACG,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAE,OAAY,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA0C3E;;;;;;;OAOG;IACH,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAenD;;;;;;OAMG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B;;;;;;;OAOG;IACH,QAAQ,CACN,EAAE,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,IAAI,EAClC,SAAS,GAAE,OAAc,GACxB,IAAI;IASP;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,IAAI,GAAG,IAAI;IAInD;;;;;OAKG;IACH,OAAO,IAAI,IAAI;CAMhB"}
@@ -1,7 +1,9 @@
1
- import { ModelError, RuntimeModelError } from '@ibiz-template/core';
2
- import { isNil } from 'ramda';
1
+ import { IBizContext, ModelError, RuntimeModelError, } from '@ibiz-template/core';
2
+ import { clone, isNil } from 'ramda';
3
+ import { QXEvent, notNilEmpty } from 'qx-util';
3
4
  import { convertNavData, ScriptFactory } from '../../../utils';
4
5
  import { fieldValueToBoolean } from '../../utils';
6
+ import { calcDeCodeNameById } from '../../../model';
5
7
  /**
6
8
  * 动态代码表缓存对象
7
9
  *
@@ -29,7 +31,56 @@ export class DynamicCodeListCache {
29
31
  * @type {boolean}
30
32
  */
31
33
  this.isPredefined = false;
34
+ /**
35
+ * 应用上下文
36
+ *
37
+ * @author tony001
38
+ * @date 2024-04-10 15:04:25
39
+ * @protected
40
+ * @type {IContext}
41
+ */
42
+ this.context = IBizContext.create();
43
+ /**
44
+ * 视图参数
45
+ *
46
+ * @author tony001
47
+ * @date 2024-04-10 15:04:39
48
+ * @protected
49
+ * @type {IParams}
50
+ */
51
+ this.params = {};
52
+ /**
53
+ * 事件对象
54
+ *
55
+ * @author tony001
56
+ * @date 2024-04-10 17:04:00
57
+ * @protected
58
+ */
59
+ this.evt = new QXEvent();
32
60
  this.codeList = codeList;
61
+ // 动态代码表监听数据变化
62
+ this.codelistChange = this.codelistChange.bind(this);
63
+ const { appDataEntityId, appDEDataSetId } = this.codeList;
64
+ if (appDataEntityId && appDEDataSetId) {
65
+ ibiz.mc.command.change.on(this.codelistChange);
66
+ }
67
+ }
68
+ /**
69
+ * 设置上下文以及查询参数
70
+ *
71
+ * @author tony001
72
+ * @date 2024-04-10 15:04:04
73
+ * @protected
74
+ * @param {IContext} [context]
75
+ * @param {IParams} [params]
76
+ */
77
+ setParams(context, params) {
78
+ if (context) {
79
+ this.context = clone(context);
80
+ }
81
+ if (params) {
82
+ this.params = clone(params);
83
+ }
33
84
  }
34
85
  /**
35
86
  * 初始化
@@ -148,6 +199,7 @@ export class DynamicCodeListCache {
148
199
  * @returns {*} {Promise<CodeListItem[]>}
149
200
  */
150
201
  async load(context, params = {}) {
202
+ this.setParams(context, params);
151
203
  const app = ibiz.hub.getApp(context.srfappid);
152
204
  const { appDataEntityId, appDEDataSetId, minorSortAppDEFieldId, minorSortDir, pvalueAppDEFieldId, customCond, } = this.codeList;
153
205
  // *处理查询参数
@@ -283,4 +335,77 @@ export class DynamicCodeListCache {
283
335
  delete cacheData.promise;
284
336
  return result;
285
337
  }
338
+ /**
339
+ * 接受代码表实体数据变更,刷新代码表
340
+ *
341
+ * @author tony001
342
+ * @date 2024-04-10 15:04:42
343
+ * @protected
344
+ * @param {IPortalMessage} msg
345
+ */
346
+ codelistChange(msg) {
347
+ const data = msg.data;
348
+ const { appDataEntityId } = this.codeList;
349
+ if (appDataEntityId) {
350
+ const codeName = calcDeCodeNameById(appDataEntityId);
351
+ if (data &&
352
+ data.srfdecodename &&
353
+ data.srfdecodename.toLowerCase() === codeName) {
354
+ this.refresh();
355
+ }
356
+ }
357
+ }
358
+ /**
359
+ * 刷新代码表数据
360
+ *
361
+ * @author tony001
362
+ * @date 2024-04-10 17:04:20
363
+ * @return {*} {Promise<void>}
364
+ */
365
+ async refresh() {
366
+ // 删除缓存数据
367
+ const key = JSON.stringify(this.context) + JSON.stringify(this.params);
368
+ this.cache.delete(key);
369
+ // 重新加载数据
370
+ const result = await this.get(this.context, this.params);
371
+ this.evt.emit('change', result);
372
+ }
373
+ /**
374
+ * 代码表数据变更事件监听
375
+ *
376
+ * @author tony001
377
+ * @date 2024-04-10 17:04:52
378
+ * @param {(data: CodeListItem[]) => void} fn
379
+ * @param {boolean} [immediate=true] 当有数据时,立即触发一次回调
380
+ */
381
+ onChange(fn, immediate = true) {
382
+ this.evt.on('change', fn);
383
+ const key = JSON.stringify(this.context) + JSON.stringify(this.params);
384
+ const cacheData = this.cache.get(key);
385
+ if (immediate && notNilEmpty(cacheData)) {
386
+ fn(cacheData.items);
387
+ }
388
+ }
389
+ /**
390
+ * 取消代码表数据变更监听
391
+ *
392
+ * @author tony001
393
+ * @date 2024-04-10 17:04:57
394
+ * @param {(data: CodeListItem[]) => void} fn
395
+ */
396
+ offChange(fn) {
397
+ this.evt.off('change', fn);
398
+ }
399
+ /**
400
+ * 销毁(取消数据变更监听)
401
+ *
402
+ * @author tony001
403
+ * @date 2024-04-10 15:04:11
404
+ */
405
+ destroy() {
406
+ const { appDataEntityId, appDEDataSetId } = this.codeList;
407
+ if (appDataEntityId && appDEDataSetId) {
408
+ ibiz.mc.command.change.off(this.codelistChange);
409
+ }
410
+ }
286
411
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/runtime",
3
- "version": "0.6.18",
3
+ "version": "0.7.1",
4
4
  "description": "控制器包",
5
5
  "type": "module",
6
6
  "main": "out/index.js",
@@ -35,7 +35,7 @@
35
35
  "animejs": "^3.2.2"
36
36
  },
37
37
  "devDependencies": {
38
- "@ibiz-template/core": "^0.6.18",
38
+ "@ibiz-template/core": "^0.7.1",
39
39
  "@ibiz/model-core": "^0.1.20",
40
40
  "@types/animejs": "^3.1.12",
41
41
  "@types/path-browserify": "^1.0.2",
@@ -1,33 +0,0 @@
1
- import { IFilterNode } from '../../../interface';
2
- /**
3
- * 获取初始过滤项树节点数据集合
4
- * @return {*}
5
- * @author: zhujiamin
6
- * @Date: 2023-12-21 17:29:47
7
- */
8
- export declare function getOriginFilterNodes(): IFilterNode[];
9
- /**
10
- * 格式化过滤项 (后续如果修改这里的逻辑记得把下方的反推函数parseFilters也跟着修改!)
11
- * @author lxm
12
- * @date 2023-10-16 03:45:41
13
- * @param {IFilterNode} node
14
- * @return {*} {IData}
15
- */
16
- export declare function formatFilters(node: IFilterNode): IData;
17
- /**
18
- * 根据格式化后的过滤项反推出过滤项树节点数据集合
19
- * @param {IData} data
20
- * @return {*}
21
- * @author: zhujiamin
22
- * @Date: 2023-12-28 09:47:45
23
- */
24
- export declare function parseFilters(data: IData): IFilterNode;
25
- /**
26
- * 根据filterNodes计算出SearchConds
27
- * @param {IData} data
28
- * @return {*}
29
- * @author: zhujiamin
30
- * @Date: 2023-12-28 09:47:45
31
- */
32
- export declare function calcSearchConds(filterNodes: IFilterNode[]): IData[] | undefined;
33
- //# sourceMappingURL=use-searchcond.d.ts.map
@@ -1 +0,0 @@
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;AAKlE;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,WAAW,EAAE,CAQpD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,KAAK,CA+BtD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,WAAW,CA+BrD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,WAAW,EAAE,GACzB,KAAK,EAAE,GAAG,SAAS,CAoBrB"}
@@ -1,117 +0,0 @@
1
- import { RuntimeError, recursiveIterate } from '@ibiz-template/core';
2
- import { isNil } from 'ramda';
3
- import { ValueOP } from '../../../constant';
4
- const ExcludeOPs = [ValueOP.IS_NULL, ValueOP.IS_NOT_NULL];
5
- /**
6
- * 获取初始过滤项树节点数据集合
7
- * @return {*}
8
- * @author: zhujiamin
9
- * @Date: 2023-12-21 17:29:47
10
- */
11
- export function getOriginFilterNodes() {
12
- return [
13
- {
14
- leaf: false,
15
- logicType: 'AND',
16
- children: [{ leaf: true, field: null, valueOP: null, value: null }],
17
- },
18
- ];
19
- }
20
- /**
21
- * 格式化过滤项 (后续如果修改这里的逻辑记得把下方的反推函数parseFilters也跟着修改!)
22
- * @author lxm
23
- * @date 2023-10-16 03:45:41
24
- * @param {IFilterNode} node
25
- * @return {*} {IData}
26
- */
27
- export function formatFilters(node) {
28
- if (!node.leaf) {
29
- if (node.logicType === 'ITEMS') {
30
- return {
31
- condtype: 'ITEMS',
32
- fieldname: node.field,
33
- condop: node.valueOP,
34
- searchconds: node.children.map(item => formatFilters(item)),
35
- };
36
- }
37
- return {
38
- condtype: 'GROUP',
39
- condop: node.logicType,
40
- bnotmode: false,
41
- searchconds: node.children.map(item => formatFilters(item)),
42
- };
43
- }
44
- const leafNode = node;
45
- const temp = {
46
- condtype: 'DEFIELD',
47
- fieldname: node.field,
48
- condop: node.valueOP,
49
- value: node.value,
50
- };
51
- if (leafNode.valueItem) {
52
- temp.valueItem = leafNode.valueItem;
53
- }
54
- return temp;
55
- }
56
- /**
57
- * 根据格式化后的过滤项反推出过滤项树节点数据集合
58
- * @param {IData} data
59
- * @return {*}
60
- * @author: zhujiamin
61
- * @Date: 2023-12-28 09:47:45
62
- */
63
- export function parseFilters(data) {
64
- if (data.condtype === 'GROUP') {
65
- return {
66
- leaf: false,
67
- logicType: data.condop === 'AND' ? 'AND' : 'OR',
68
- children: (data.searchconds || []).map((item) => parseFilters(item)),
69
- };
70
- }
71
- if (data.condtype === 'ITEMS') {
72
- return {
73
- leaf: false,
74
- logicType: 'ITEMS',
75
- field: data.fieldname || null,
76
- valueOP: data.condop || null,
77
- children: (data.searchconds || []).map((item) => parseFilters(item)),
78
- };
79
- }
80
- if (data.condtype === 'DEFIELD') {
81
- return {
82
- leaf: true,
83
- field: data.fieldname || null,
84
- valueOP: data.condop || null,
85
- value: data.value || null,
86
- valueItem: data.valueItem || undefined,
87
- };
88
- }
89
- throw new RuntimeError(`无效的condtype:${data.condtype}`);
90
- }
91
- /**
92
- * 根据filterNodes计算出SearchConds
93
- * @param {IData} data
94
- * @return {*}
95
- * @author: zhujiamin
96
- * @Date: 2023-12-28 09:47:45
97
- */
98
- export function calcSearchConds(filterNodes) {
99
- let hasFilter = false; // 是否有过滤项
100
- let hasError = false; // 是否有过滤项格式不正确
101
- recursiveIterate(filterNodes[0], (node) => {
102
- if (node.leaf) {
103
- if ((node.field && node.valueOP && !isNil(node.value)) ||
104
- (node.field && node.valueOP && ExcludeOPs.includes(node.valueOP))) {
105
- hasFilter = true;
106
- }
107
- else {
108
- // 如果过滤项不给
109
- hasError = true;
110
- }
111
- }
112
- });
113
- if (hasFilter && !hasError) {
114
- const filter = [formatFilters(filterNodes[0])];
115
- return filter;
116
- }
117
- }