@ibiz-template/runtime 0.5.3-beta.4 → 0.5.3-beta.6
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.
- package/dist/index.esm.js +1079 -284
- package/dist/index.system.min.js +1 -1
- package/out/app-hub.d.ts +12 -2
- package/out/app-hub.d.ts.map +1 -1
- package/out/app-hub.js +22 -2
- package/out/command/app/open-app-view/open-app-view.js +2 -2
- package/out/controller/constant/control/index.d.ts +1 -0
- package/out/controller/constant/control/index.d.ts.map +1 -1
- package/out/controller/constant/control/index.js +1 -0
- package/out/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.d.ts +5 -0
- package/out/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.d.ts.map +1 -0
- package/out/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.js +6 -0
- package/out/controller/control/form/form/form.controller.d.ts.map +1 -1
- package/out/controller/control/form/form/form.controller.js +4 -1
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.d.ts +1 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.d.ts.map +1 -1
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.js +1 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.d.ts +10 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.d.ts.map +1 -1
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.js +12 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.d.ts +34 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.d.ts.map +1 -1
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.js +68 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.d.ts +205 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.d.ts.map +1 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.js +345 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.d.ts +3 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.d.ts.map +1 -1
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.js +14 -1
- package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.d.ts +16 -8
- package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.d.ts.map +1 -1
- package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.js +26 -12
- package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts +59 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts.map +1 -1
- package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.js +238 -1
- package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts +4 -3
- package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts.map +1 -1
- package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts +23 -1
- package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts.map +1 -1
- package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts +17 -0
- package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts.map +1 -1
- package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts +60 -2
- package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts.map +1 -1
- package/out/interface/provider/i-async-action.provider.d.ts +3 -2
- package/out/interface/provider/i-async-action.provider.d.ts.map +1 -1
- package/out/register/helper/app-menu-item-register.d.ts.map +1 -1
- package/out/register/helper/app-menu-item-register.js +1 -6
- package/out/register/helper/panel-item-register.d.ts.map +1 -1
- package/out/register/helper/panel-item-register.js +36 -30
- package/out/service/dto/method.dto.d.ts +0 -9
- package/out/service/dto/method.dto.d.ts.map +1 -1
- package/out/service/dto/method.dto.js +8 -13
- package/out/service/service/entity/method/fetch.d.ts.map +1 -1
- package/out/service/service/entity/method/fetch.js +22 -20
- package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts +1 -1
- package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts.map +1 -1
- package/out/service/utils/dynamic-code-list/dynamic-code-list.js +25 -26
- package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts +6 -0
- package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
- package/out/service/vo/tree-node-data/tree-data-set-node-data.js +93 -41
- package/out/utils/ui-domain/ui-domain.d.ts +32 -6
- package/out/utils/ui-domain/ui-domain.d.ts.map +1 -1
- package/out/utils/ui-domain/ui-domain.js +46 -9
- package/package.json +4 -4
- package/src/app-hub.ts +27 -2
- package/src/command/app/open-app-view/open-app-view.ts +2 -2
- package/src/controller/constant/control/index.ts +1 -0
- package/src/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.ts +5 -0
- package/src/controller/control/form/form/form.controller.ts +11 -1
- package/src/controller/control/tree-grid-ex/tree-grid-ex-column/index.ts +1 -0
- package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.ts +22 -0
- package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.ts +88 -2
- package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.ts +522 -0
- package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.ts +18 -1
- package/src/controller/control/tree-grid-ex/tree-grid-ex-row.state.ts +43 -12
- package/src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts +296 -1
- package/src/interface/common/i-app-hub-service/i-app-hub-service.ts +4 -3
- package/src/interface/controller/controller/control/i-tree-grid-ex.controller.ts +27 -2
- package/src/interface/controller/event/control/i-tree-grid-ex.event.ts +15 -1
- package/src/interface/controller/state/control/i-tree-grid-ex.state.ts +64 -2
- package/src/interface/provider/i-async-action.provider.ts +3 -2
- package/src/register/helper/app-menu-item-register.ts +1 -5
- package/src/register/helper/panel-item-register.ts +43 -37
- package/src/service/dto/method.dto.ts +8 -14
- package/src/service/service/entity/method/fetch.ts +26 -25
- package/src/service/utils/dynamic-code-list/dynamic-code-list.ts +24 -32
- package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +111 -46
- package/src/utils/ui-domain/ui-domain.ts +49 -9
|
@@ -27,15 +27,6 @@ export class MethodDto {
|
|
|
27
27
|
this.dto = dto;
|
|
28
28
|
this.inSelfLoop = inSelfLoop;
|
|
29
29
|
this.dtoMap = new Map();
|
|
30
|
-
/**
|
|
31
|
-
* 当前 DTO 是否已经计算过关系相关逻辑
|
|
32
|
-
*
|
|
33
|
-
* @link this.calcRs
|
|
34
|
-
* @author chitanda
|
|
35
|
-
* @date 2023-12-26 16:12:18
|
|
36
|
-
* @protected
|
|
37
|
-
*/
|
|
38
|
-
this.isCalcRs = false;
|
|
39
30
|
if (dto) {
|
|
40
31
|
this.app = ibiz.hub.getApp(entity.appId);
|
|
41
32
|
this.fields = dto.appDEMethodDTOFields || [];
|
|
@@ -168,7 +159,12 @@ export class MethodDto {
|
|
|
168
159
|
if (this.isLocalMode && !this.inSelfLoop) {
|
|
169
160
|
this.service.local.clear();
|
|
170
161
|
}
|
|
171
|
-
|
|
162
|
+
const uiDomain = ibiz.uiDomainManager.get(context.srfsessionid);
|
|
163
|
+
if (uiDomain && uiDomain.state.rsInit !== true) {
|
|
164
|
+
await this.calcRs(context);
|
|
165
|
+
uiDomain.calcParentRs();
|
|
166
|
+
uiDomain.state.rsInit = true;
|
|
167
|
+
}
|
|
172
168
|
return Promise.all(data.map(async (datum) => {
|
|
173
169
|
const all = this.fields
|
|
174
170
|
.filter(field => field.type === 'DTOS')
|
|
@@ -184,7 +180,7 @@ export class MethodDto {
|
|
|
184
180
|
}
|
|
185
181
|
const dto = await this.getFieldDto(context, field);
|
|
186
182
|
const items = datum[key];
|
|
187
|
-
if (items) {
|
|
183
|
+
if (items && items.length > 0) {
|
|
188
184
|
const pKey = datum[this.entity.keyAppDEFieldId];
|
|
189
185
|
if (field.refPickupAppDEFieldId) {
|
|
190
186
|
// 特殊处理,在子包内设置父对象标识
|
|
@@ -222,10 +218,9 @@ export class MethodDto {
|
|
|
222
218
|
* @return {*} {Promise<void>}
|
|
223
219
|
*/
|
|
224
220
|
async calcRs(context, depth = 0) {
|
|
225
|
-
if (
|
|
221
|
+
if (depth > 10) {
|
|
226
222
|
return;
|
|
227
223
|
}
|
|
228
|
-
this.isCalcRs = true;
|
|
229
224
|
depth += 1;
|
|
230
225
|
const uiDomain = ibiz.uiDomainManager.get(context.srfsessionid);
|
|
231
226
|
const dtoFields = this.fields.filter(field => field.type === 'DTOS');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../../src/service/service/entity/method/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,EAAgB,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD;;;;;;;;GAQG;AACH,qBAAa,WAAY,SAAQ,MAAM;IAC7B,MAAM,EAAE,aAAa,CAAC;IAExB,IAAI,CACR,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,EACxB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../../src/service/service/entity/method/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,EAAgB,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD;;;;;;;;GAQG;AACH,qBAAa,WAAY,SAAQ,MAAM;IAC7B,MAAM,EAAE,aAAa,CAAC;IAExB,IAAI,CACR,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,EACxB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;IAqDvC;;;;;;;;;OASG;IACG,WAAW,CACf,IAAI,EAAE,gBAAgB,GAAG,IAAI,EAC7B,MAAM,EAAE,YAAY,EACpB,cAAc,GAAE,MAAM,EAA0C,GAC/D,OAAO,CAAC,WAAW,EAAE,CAAC;IAwCzB;;;;;;;OAOG;cACa,gBAAgB,CAC9B,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;CAkBlC"}
|
|
@@ -18,31 +18,33 @@ export class FetchMethod extends Method {
|
|
|
18
18
|
async exec(context, params, params2) {
|
|
19
19
|
// 过滤参数,必须是对象
|
|
20
20
|
const searchParams = params && !isArray(params) ? params : params2 || {};
|
|
21
|
+
// 根据数据集合来源查询数据
|
|
22
|
+
let res;
|
|
21
23
|
if (this.isLocalMode) {
|
|
22
24
|
const cond = DEDQCondUtil.getCond(this.method);
|
|
23
25
|
const items = await this.searchLocal(cond, new SearchFilter(context, searchParams));
|
|
24
|
-
|
|
26
|
+
res = new HttpResponse(items, 200);
|
|
25
27
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
28
|
+
else {
|
|
29
|
+
switch (this.method.dataSetType) {
|
|
30
|
+
case 'INDEXDE':
|
|
31
|
+
case 'CODELIST':
|
|
32
|
+
case 'MULTIFORM':
|
|
33
|
+
res = await this.fetchCodeListSet(context, searchParams);
|
|
34
|
+
break;
|
|
35
|
+
case 'REMOTE':
|
|
36
|
+
{
|
|
37
|
+
const path = this.calcPath(context);
|
|
38
|
+
res = await this.request(path, context, params, params2);
|
|
39
|
+
}
|
|
40
|
+
break;
|
|
41
|
+
default:
|
|
42
|
+
throw new ModelError(this.method, `数据来源类型${this.method.dataSetType}暂未支持`);
|
|
43
|
+
}
|
|
44
|
+
// 转换实体对象
|
|
45
|
+
const items = res.data || [];
|
|
46
|
+
res.data = items.map(item => this.createEntity(item));
|
|
42
47
|
}
|
|
43
|
-
// 转换实体对象
|
|
44
|
-
const items = res.data || [];
|
|
45
|
-
res.data = items.map(item => this.createEntity(item));
|
|
46
48
|
// 计算属性逻辑,每条数据走一遍
|
|
47
49
|
if (res.data) {
|
|
48
50
|
await execFieldLogics(this.entity, 'compute', context, res.data, searchParams);
|
|
@@ -112,7 +112,7 @@ export declare class DynamicCodeListCache {
|
|
|
112
112
|
*
|
|
113
113
|
* @return {codeListItem[] | undefined}
|
|
114
114
|
*/
|
|
115
|
-
protected prepareTreeData(items: IData[]
|
|
115
|
+
protected prepareTreeData(items: IData[]): CodeListItem[] | undefined;
|
|
116
116
|
/**
|
|
117
117
|
* 获取动态的代码项
|
|
118
118
|
*
|
|
@@ -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;IA6DhD;;;;;;;;;OASG;cACa,IAAI,CAClB,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC;IAuE1B;;;;OAIG;IACH,SAAS,CAAC,eAAe,
|
|
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;IA6DhD;;;;;;;;;OASG;cACa,IAAI,CAClB,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC;IAuE1B;;;;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"}
|
|
@@ -154,17 +154,17 @@ export class DynamicCodeListCache {
|
|
|
154
154
|
const res = await app.deService.exec(appDataEntityId, appDEDataSetId, context, undefined, tempParams);
|
|
155
155
|
let resultItems = [];
|
|
156
156
|
if (res.data.length) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
resultItems = tempItems;
|
|
162
|
-
}
|
|
157
|
+
if (pvalueAppDEFieldId) {
|
|
158
|
+
const tempItems = this.prepareTreeData(res.data);
|
|
159
|
+
if (tempItems) {
|
|
160
|
+
resultItems = tempItems;
|
|
163
161
|
}
|
|
164
|
-
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
res.data.forEach((item) => {
|
|
165
165
|
resultItems.push(this.convertData(item));
|
|
166
|
-
}
|
|
167
|
-
}
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
168
|
}
|
|
169
169
|
return Object.freeze(resultItems);
|
|
170
170
|
}
|
|
@@ -173,25 +173,24 @@ export class DynamicCodeListCache {
|
|
|
173
173
|
*
|
|
174
174
|
* @return {codeListItem[] | undefined}
|
|
175
175
|
*/
|
|
176
|
-
prepareTreeData(items
|
|
177
|
-
const { pvalueAppDEFieldId } = this.codeList;
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
return item[pvalueAppDEFieldId] === pValue;
|
|
183
|
-
}
|
|
184
|
-
// 没有传父value,只需要找出来没有父值属性的
|
|
185
|
-
return !item[pvalueAppDEFieldId];
|
|
176
|
+
prepareTreeData(items) {
|
|
177
|
+
const { valueAppDEFieldId, pvalueAppDEFieldId } = this.codeList;
|
|
178
|
+
const map = {};
|
|
179
|
+
const nestedList = [];
|
|
180
|
+
items.forEach((data) => {
|
|
181
|
+
map[data[valueAppDEFieldId]] = this.convertData(data);
|
|
186
182
|
});
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
183
|
+
items.forEach((data) => {
|
|
184
|
+
const parent = map[data[pvalueAppDEFieldId]];
|
|
185
|
+
if (parent) {
|
|
186
|
+
parent.children = parent.children || [];
|
|
187
|
+
parent.children.push(map[data[valueAppDEFieldId]]);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
nestedList.push(map[data[valueAppDEFieldId]]);
|
|
191
|
+
}
|
|
194
192
|
});
|
|
193
|
+
return nestedList;
|
|
195
194
|
}
|
|
196
195
|
/**
|
|
197
196
|
* 获取动态的代码项
|
|
@@ -14,6 +14,12 @@ export declare class TreeDataSetNodeData extends TreeNodeData implements ITreeNo
|
|
|
14
14
|
_id: string;
|
|
15
15
|
_value: string;
|
|
16
16
|
_deData: IData;
|
|
17
|
+
/**
|
|
18
|
+
* 克隆方法
|
|
19
|
+
* @author lxm
|
|
20
|
+
* @date 2024-01-12 02:37:46
|
|
21
|
+
*/
|
|
22
|
+
clone: () => TreeDataSetNodeData;
|
|
17
23
|
constructor(model: IDETreeDataSetNode, parentNodeData: ITreeNodeData | undefined, opts: {
|
|
18
24
|
data: IData;
|
|
19
25
|
leaf: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-data-set-node-data.d.ts","sourceRoot":"","sources":["../../../../src/service/vo/tree-node-data/tree-data-set-node-data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG3E,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"tree-data-set-node-data.d.ts","sourceRoot":"","sources":["../../../../src/service/vo/tree-node-data/tree-data-set-node-data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG3E,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMhD;;;;;;;GAOG;AACH,qBAAa,mBAAoB,SAAQ,YAAa,YAAW,aAAa;IACpE,KAAK,EAAE,MAAM,CAAC;IAEd,GAAG,EAAE,MAAM,CAAC;IAEZ,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,EAAE,KAAK,CAAC;IAEvB;;;;OAIG;IACK,KAAK,EAAE,MAAM,mBAAmB,CAAC;gBAGvC,KAAK,EAAE,kBAAkB,EACzB,cAAc,EAAE,aAAa,GAAG,SAAS,EACzC,IAAI,EAAE;QACJ,IAAI,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,OAAO,CAAC;QACd,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB;IA4KH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,KAAK,GAAG,SAAS;IAiBhE;;;;;;;OAOG;IACH,SAAS,CAAC,kBAAkB,CAC1B,QAAQ,EAAE,mBAAmB,GAC5B,MAAM,GAAG,SAAS;IAYrB;;;;;;;OAOG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,GAAG,SAAS;CAStE"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { updateKeyDefine } from '@ibiz-template/core';
|
|
2
|
-
import { isNil } from 'ramda';
|
|
2
|
+
import { clone, isNil } from 'ramda';
|
|
3
3
|
import { calcDeCodeNameById } from '../../../model';
|
|
4
4
|
import { ScriptFactory } from '../../../utils';
|
|
5
5
|
import { TreeNodeData } from './tree-node-data';
|
|
6
6
|
import { fieldValueToBoolean } from '../../utils';
|
|
7
|
+
/** 克隆时赋值排除的字段 */
|
|
8
|
+
const CloneExcludeKeys = ['_id', '_value', '_text', '_deData', 'clone'];
|
|
7
9
|
/**
|
|
8
10
|
* 实体数据集树节点数据
|
|
9
11
|
*
|
|
@@ -18,12 +20,6 @@ export class TreeDataSetNodeData extends TreeNodeData {
|
|
|
18
20
|
super(model, parentNodeData, opts);
|
|
19
21
|
const { data } = opts;
|
|
20
22
|
this._deData = data;
|
|
21
|
-
this._text = model.textAppDEFieldId
|
|
22
|
-
? data[model.textAppDEFieldId]
|
|
23
|
-
: data.srfmajortext;
|
|
24
|
-
this._value = model.idAppDEFieldId
|
|
25
|
-
? data[model.idAppDEFieldId]
|
|
26
|
-
: data.srfkey;
|
|
27
23
|
// id小写
|
|
28
24
|
const selfId = `${model.id}@${data.srfkey}`.toLowerCase();
|
|
29
25
|
Object.defineProperty(this, '_id', {
|
|
@@ -33,6 +29,24 @@ export class TreeDataSetNodeData extends TreeNodeData {
|
|
|
33
29
|
enumerable: true,
|
|
34
30
|
configurable: true,
|
|
35
31
|
});
|
|
32
|
+
// 文本值
|
|
33
|
+
Object.defineProperty(this, '_text', {
|
|
34
|
+
get() {
|
|
35
|
+
return model.textAppDEFieldId
|
|
36
|
+
? data[model.textAppDEFieldId]
|
|
37
|
+
: data.srfmajortext;
|
|
38
|
+
},
|
|
39
|
+
enumerable: true,
|
|
40
|
+
configurable: true,
|
|
41
|
+
});
|
|
42
|
+
// value值
|
|
43
|
+
Object.defineProperty(this, '_value', {
|
|
44
|
+
get() {
|
|
45
|
+
return model.idAppDEFieldId ? data[model.idAppDEFieldId] : data.srfkey;
|
|
46
|
+
},
|
|
47
|
+
enumerable: true,
|
|
48
|
+
configurable: true,
|
|
49
|
+
});
|
|
36
50
|
// 实体节点额外添加上自己的实体上下文
|
|
37
51
|
if (model.appDataEntityId) {
|
|
38
52
|
const deName = calcDeCodeNameById(model.appDataEntityId);
|
|
@@ -48,19 +62,18 @@ export class TreeDataSetNodeData extends TreeNodeData {
|
|
|
48
62
|
}
|
|
49
63
|
/** 数据项和实体属性映射 */
|
|
50
64
|
const dataItemKeyMap = new Map();
|
|
51
|
-
|
|
52
|
-
dataItemKeyMap.set('srfmajortext', 'srfmajortext');
|
|
65
|
+
const dataItemDefaultMap = new Map();
|
|
53
66
|
(_a = model.detreeNodeDataItems) === null || _a === void 0 ? void 0 : _a.forEach(dataItem => {
|
|
54
|
-
const
|
|
55
|
-
//
|
|
67
|
+
const dataItemKey = dataItem.id.toLowerCase();
|
|
68
|
+
// *后台实体属性
|
|
56
69
|
const deFieldKey = dataItem.appDEFieldId.toLowerCase();
|
|
57
|
-
dataItemKeyMap.set(
|
|
70
|
+
dataItemKeyMap.set(dataItemKey, deFieldKey);
|
|
58
71
|
// *设置默认值
|
|
59
|
-
if (dataItem.defaultValue
|
|
60
|
-
|
|
72
|
+
if (dataItem.defaultValue) {
|
|
73
|
+
dataItemDefaultMap.set(dataItemKey, dataItem.defaultValue);
|
|
61
74
|
}
|
|
62
75
|
});
|
|
63
|
-
/**
|
|
76
|
+
/** 表格列和数据项的映射 */
|
|
64
77
|
const nodeColumnKeyMap = new Map();
|
|
65
78
|
(_b = model.detreeNodeColumns) === null || _b === void 0 ? void 0 : _b.forEach(column => {
|
|
66
79
|
const columnKey = column.detreeColumnId; // 不配树表格列不会有这个模型
|
|
@@ -69,22 +82,69 @@ export class TreeDataSetNodeData extends TreeNodeData {
|
|
|
69
82
|
ibiz.log.error('模型异常缺少detreeColumnId或者dataItemName', column);
|
|
70
83
|
}
|
|
71
84
|
else {
|
|
72
|
-
nodeColumnKeyMap.set(columnKey,
|
|
85
|
+
nodeColumnKeyMap.set(columnKey, dataItemKey);
|
|
73
86
|
}
|
|
74
87
|
});
|
|
88
|
+
/**
|
|
89
|
+
* 获取对应key最终映射的实体属性字段,undefined就是没有映射实体属性
|
|
90
|
+
* @author lxm
|
|
91
|
+
* @date 2024-01-12 01:48:09
|
|
92
|
+
* @param {(string | symbol)} key
|
|
93
|
+
* @return {*} {(string | symbol | undefined)}
|
|
94
|
+
*/
|
|
95
|
+
const getDeKey = (key) => {
|
|
96
|
+
// 表格列映射的实体数据属性名称
|
|
97
|
+
if (nodeColumnKeyMap.has(key)) {
|
|
98
|
+
return dataItemKeyMap.get(nodeColumnKeyMap.get(key));
|
|
99
|
+
}
|
|
100
|
+
// 数据项映射的实体数据属性名称
|
|
101
|
+
if (dataItemKeyMap.has(key)) {
|
|
102
|
+
return dataItemKeyMap.get(key);
|
|
103
|
+
}
|
|
104
|
+
// 实体属性上可枚举的属性,返回该属性名称
|
|
105
|
+
if (Object.prototype.hasOwnProperty.call(this._deData, key)) {
|
|
106
|
+
return key;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* 获取对应属性的默认值,纯显示用的
|
|
111
|
+
* @author lxm
|
|
112
|
+
* @date 2024-01-12 02:36:53
|
|
113
|
+
* @param {(string | symbol)} key
|
|
114
|
+
* @return {*} {unknown}
|
|
115
|
+
*/
|
|
116
|
+
const getKeyDefault = (key) => {
|
|
117
|
+
// 表格列映射的数据项的默认值
|
|
118
|
+
if (nodeColumnKeyMap.has(key)) {
|
|
119
|
+
return dataItemDefaultMap.get(nodeColumnKeyMap.get(key));
|
|
120
|
+
}
|
|
121
|
+
// 数据项映射的默认值
|
|
122
|
+
if (dataItemDefaultMap.has(key)) {
|
|
123
|
+
return dataItemDefaultMap.get(key);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
this.clone = () => {
|
|
127
|
+
const cloneData = clone(this._deData);
|
|
128
|
+
const cloneNodeData = new TreeDataSetNodeData(model, this._parent, {
|
|
129
|
+
data: cloneData,
|
|
130
|
+
leaf: this._leaf,
|
|
131
|
+
navContext: this._context,
|
|
132
|
+
navParams: this._params,
|
|
133
|
+
});
|
|
134
|
+
Object.keys(this).forEach(key => {
|
|
135
|
+
const deKey = getDeKey(key);
|
|
136
|
+
// 非实体的映射属性,且不是排除的属性时,从原来那边赋值过来
|
|
137
|
+
if (isNil(deKey) && !CloneExcludeKeys.includes(key)) {
|
|
138
|
+
cloneNodeData[key] = this[key];
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
return cloneNodeData;
|
|
142
|
+
};
|
|
75
143
|
return new Proxy(this, {
|
|
76
144
|
set(target, p, value) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
target._deData[
|
|
80
|
-
}
|
|
81
|
-
else if (dataItemKeyMap.has(p)) {
|
|
82
|
-
// 通过树节点数据项标识设置
|
|
83
|
-
target._deData[dataItemKeyMap.get(p)] = value;
|
|
84
|
-
}
|
|
85
|
-
else if (Object.prototype.hasOwnProperty.call(target._deData, p)) {
|
|
86
|
-
// 通过实体数据属性标识设置
|
|
87
|
-
target._deData[p] = value;
|
|
145
|
+
const deKey = getDeKey(p);
|
|
146
|
+
if (!isNil(deKey)) {
|
|
147
|
+
target._deData[deKey] = value;
|
|
88
148
|
}
|
|
89
149
|
else {
|
|
90
150
|
target[p] = value;
|
|
@@ -92,21 +152,13 @@ export class TreeDataSetNodeData extends TreeNodeData {
|
|
|
92
152
|
return true;
|
|
93
153
|
},
|
|
94
154
|
get(target, p, _receiver) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
return target._deData[nodeColumnKeyMap.get(p)];
|
|
101
|
-
}
|
|
102
|
-
// 通过树节点数据项标识获取
|
|
103
|
-
if (dataItemKeyMap.has(p)) {
|
|
104
|
-
return target._deData[dataItemKeyMap.get(p)];
|
|
105
|
-
}
|
|
106
|
-
// 通过实体数据属性标识获取
|
|
107
|
-
if (target._deData[p] !== undefined) {
|
|
108
|
-
return target._deData[p];
|
|
155
|
+
const deKey = getDeKey(p);
|
|
156
|
+
if (!isNil(deKey)) {
|
|
157
|
+
return isNil(target._deData[deKey])
|
|
158
|
+
? getKeyDefault(p)
|
|
159
|
+
: target._deData[deKey];
|
|
109
160
|
}
|
|
161
|
+
return target[p];
|
|
110
162
|
},
|
|
111
163
|
ownKeys(target) {
|
|
112
164
|
// 整合所有并排除重复
|
|
@@ -17,14 +17,33 @@ export declare class UIDomain {
|
|
|
17
17
|
*/
|
|
18
18
|
readonly id: string;
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
20
|
+
* 状态
|
|
21
|
+
*
|
|
22
|
+
* @author chitanda
|
|
23
|
+
* @date 2024-01-15 19:01:51
|
|
24
|
+
* @type {{ rsInit: boolean }} 关系是否已经初始化
|
|
25
|
+
*/
|
|
26
|
+
readonly state: {
|
|
27
|
+
rsInit: boolean;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* DTO 子父关系映射
|
|
21
31
|
*
|
|
22
32
|
* @author chitanda
|
|
23
33
|
* @date 2023-12-26 15:12:13
|
|
24
34
|
* @protected
|
|
25
|
-
* @type {Map<string, IAppDERS[]>}
|
|
35
|
+
* @type {Map<string, IAppDERS[]>} Map<子实体, 当前实体的父关系>
|
|
26
36
|
*/
|
|
27
37
|
protected rsMap: Map<string, IAppDERS[]>;
|
|
38
|
+
/**
|
|
39
|
+
* DTO 父子关系映射
|
|
40
|
+
*
|
|
41
|
+
* @author chitanda
|
|
42
|
+
* @date 2024-01-15 17:01:42
|
|
43
|
+
* @protected
|
|
44
|
+
* @type {Map<string, IAppDERS[]>}
|
|
45
|
+
*/
|
|
46
|
+
protected rs2Map: Map<string, IAppDERS[]>;
|
|
28
47
|
/**
|
|
29
48
|
* Creates an instance of UIDomain.
|
|
30
49
|
*
|
|
@@ -39,19 +58,26 @@ export declare class UIDomain {
|
|
|
39
58
|
*
|
|
40
59
|
* @author chitanda
|
|
41
60
|
* @date 2023-12-26 15:12:31
|
|
42
|
-
* @param {string}
|
|
61
|
+
* @param {string} appDataEntityId
|
|
43
62
|
* @param {IAppDERS} configs
|
|
44
63
|
*/
|
|
45
|
-
setDERConfig(
|
|
64
|
+
setDERConfig(appDataEntityId: string, configs: IAppDERS[]): void;
|
|
46
65
|
/**
|
|
47
66
|
* 获取当前界面域下,具体实体的关系(在数据加载完成之后才有值)
|
|
48
67
|
*
|
|
49
68
|
* @author chitanda
|
|
50
69
|
* @date 2023-12-26 16:12:07
|
|
51
|
-
* @param {string}
|
|
70
|
+
* @param {string} appDataEntityId
|
|
52
71
|
* @return {*} {IAppDERS[]}
|
|
53
72
|
*/
|
|
54
|
-
getDERConfig(
|
|
73
|
+
getDERConfig(appDataEntityId: string): IAppDERS[];
|
|
74
|
+
/**
|
|
75
|
+
* 根据模型给的子实体中的父关系模型,计算每个实体的子关系模型
|
|
76
|
+
*
|
|
77
|
+
* @author chitanda
|
|
78
|
+
* @date 2024-01-15 19:01:49
|
|
79
|
+
*/
|
|
80
|
+
calcParentRs(): void;
|
|
55
81
|
/**
|
|
56
82
|
* 界面域销毁
|
|
57
83
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-domain.d.ts","sourceRoot":"","sources":["../../../src/utils/ui-domain/ui-domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C;;;;;;;GAOG;AACH,qBAAa,QAAQ;IACnB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAa;IAErD;;;;;;;OAOG;gBACS,EAAE,CAAC,EAAE,MAAM;IAQvB;;;;;;;OAOG;IACH,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"ui-domain.d.ts","sourceRoot":"","sources":["../../../src/utils/ui-domain/ui-domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C;;;;;;;GAOG;AACH,qBAAa,QAAQ;IACnB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAqB;IAExD;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAa;IAErD;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAa;IAEtD;;;;;;;OAOG;gBACS,EAAE,CAAC,EAAE,MAAM;IAQvB;;;;;;;OAOG;IACH,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI;IAIhE;;;;;;;OAOG;IACH,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,QAAQ,EAAE;IAOjD;;;;;OAKG;IACH,YAAY,IAAI,IAAI;IAepB;;;;;OAKG;IACH,OAAO,IAAI,IAAI;CAWhB"}
|
|
@@ -18,14 +18,31 @@ export class UIDomain {
|
|
|
18
18
|
*/
|
|
19
19
|
constructor(id) {
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* 状态
|
|
22
|
+
*
|
|
23
|
+
* @author chitanda
|
|
24
|
+
* @date 2024-01-15 19:01:51
|
|
25
|
+
* @type {{ rsInit: boolean }} 关系是否已经初始化
|
|
26
|
+
*/
|
|
27
|
+
this.state = { rsInit: false };
|
|
28
|
+
/**
|
|
29
|
+
* DTO 子父关系映射
|
|
22
30
|
*
|
|
23
31
|
* @author chitanda
|
|
24
32
|
* @date 2023-12-26 15:12:13
|
|
25
33
|
* @protected
|
|
26
|
-
* @type {Map<string, IAppDERS[]>}
|
|
34
|
+
* @type {Map<string, IAppDERS[]>} Map<子实体, 当前实体的父关系>
|
|
27
35
|
*/
|
|
28
36
|
this.rsMap = new Map();
|
|
37
|
+
/**
|
|
38
|
+
* DTO 父子关系映射
|
|
39
|
+
*
|
|
40
|
+
* @author chitanda
|
|
41
|
+
* @date 2024-01-15 17:01:42
|
|
42
|
+
* @protected
|
|
43
|
+
* @type {Map<string, IAppDERS[]>}
|
|
44
|
+
*/
|
|
45
|
+
this.rs2Map = new Map();
|
|
29
46
|
if (id) {
|
|
30
47
|
this.id = id;
|
|
31
48
|
}
|
|
@@ -38,26 +55,46 @@ export class UIDomain {
|
|
|
38
55
|
*
|
|
39
56
|
* @author chitanda
|
|
40
57
|
* @date 2023-12-26 15:12:31
|
|
41
|
-
* @param {string}
|
|
58
|
+
* @param {string} appDataEntityId
|
|
42
59
|
* @param {IAppDERS} configs
|
|
43
60
|
*/
|
|
44
|
-
setDERConfig(
|
|
45
|
-
this.rsMap.set(
|
|
61
|
+
setDERConfig(appDataEntityId, configs) {
|
|
62
|
+
this.rsMap.set(appDataEntityId, configs);
|
|
46
63
|
}
|
|
47
64
|
/**
|
|
48
65
|
* 获取当前界面域下,具体实体的关系(在数据加载完成之后才有值)
|
|
49
66
|
*
|
|
50
67
|
* @author chitanda
|
|
51
68
|
* @date 2023-12-26 16:12:07
|
|
52
|
-
* @param {string}
|
|
69
|
+
* @param {string} appDataEntityId
|
|
53
70
|
* @return {*} {IAppDERS[]}
|
|
54
71
|
*/
|
|
55
|
-
getDERConfig(
|
|
56
|
-
if (this.rsMap.has(
|
|
57
|
-
return this.rsMap.get(
|
|
72
|
+
getDERConfig(appDataEntityId) {
|
|
73
|
+
if (this.rsMap.has(appDataEntityId)) {
|
|
74
|
+
return this.rsMap.get(appDataEntityId);
|
|
58
75
|
}
|
|
59
76
|
return [];
|
|
60
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* 根据模型给的子实体中的父关系模型,计算每个实体的子关系模型
|
|
80
|
+
*
|
|
81
|
+
* @author chitanda
|
|
82
|
+
* @date 2024-01-15 19:01:49
|
|
83
|
+
*/
|
|
84
|
+
calcParentRs() {
|
|
85
|
+
this.rs2Map.clear();
|
|
86
|
+
this.rsMap.forEach((configs, appDataEntityId) => {
|
|
87
|
+
configs.forEach(config => {
|
|
88
|
+
config.minorAppDataEntityId = appDataEntityId;
|
|
89
|
+
const major = config.majorAppDataEntityId;
|
|
90
|
+
if (!this.rs2Map.has(major)) {
|
|
91
|
+
this.rs2Map.set(major, []);
|
|
92
|
+
}
|
|
93
|
+
this.rs2Map.get(major).push(config);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
console.log(Array.from(this.rs2Map.values()));
|
|
97
|
+
}
|
|
61
98
|
/**
|
|
62
99
|
* 界面域销毁
|
|
63
100
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibiz-template/runtime",
|
|
3
|
-
"version": "0.5.3-beta.
|
|
3
|
+
"version": "0.5.3-beta.6",
|
|
4
4
|
"description": "控制器包",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "out/index.js",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@ibiz-template/core": "^0.5.2",
|
|
33
|
-
"@ibiz/model-core": "^0.1.
|
|
33
|
+
"@ibiz/model-core": "^0.1.3",
|
|
34
34
|
"@types/path-browserify": "^1.0.2",
|
|
35
35
|
"@types/qs": "^6.9.11",
|
|
36
36
|
"@types/systemjs": "^6.13.5",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
49
|
"@ibiz-template/core": "^0.5.0-beta.0",
|
|
50
|
-
"@ibiz/model-core": "^0.1.
|
|
50
|
+
"@ibiz/model-core": "^0.1.3",
|
|
51
51
|
"async-validator": "^4.2.5",
|
|
52
52
|
"dayjs": "^1.11.7",
|
|
53
53
|
"echarts": "^5.4.3",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"qx-util": "^0.4.8",
|
|
60
60
|
"ramda": "^0.29.0"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "fd9a03832183acb0fbdfc3592b1ff820257c2783"
|
|
63
63
|
}
|
package/src/app-hub.ts
CHANGED
|
@@ -66,6 +66,16 @@ export class AppHub implements IAppHubService {
|
|
|
66
66
|
*/
|
|
67
67
|
protected view2appMap: Map<string, string> = new Map();
|
|
68
68
|
|
|
69
|
+
/**
|
|
70
|
+
* 当前注册的应用视图优先级
|
|
71
|
+
*
|
|
72
|
+
* @author chitanda
|
|
73
|
+
* @date 2024-01-15 15:01:57
|
|
74
|
+
* @protected
|
|
75
|
+
* @type {Map<string, number>}
|
|
76
|
+
*/
|
|
77
|
+
protected view2appPriorityMap: Map<string, number> = new Map();
|
|
78
|
+
|
|
69
79
|
/**
|
|
70
80
|
* 实例化的应用视图模型
|
|
71
81
|
*
|
|
@@ -176,13 +186,28 @@ export class AppHub implements IAppHubService {
|
|
|
176
186
|
* 设置应用视图所属应用
|
|
177
187
|
*
|
|
178
188
|
* @author chitanda
|
|
179
|
-
* @date
|
|
189
|
+
* @date 2024-01-15 15:01:41
|
|
180
190
|
* @param {string} tag 视图 codeName 或者视图 id
|
|
181
191
|
* @param {string} [appId=ibiz.env.appId]
|
|
192
|
+
* @param {number} [priority=-1] 视图的优先级,值越小优先级越高。1为最高优先级
|
|
182
193
|
*/
|
|
183
|
-
setAppView(
|
|
194
|
+
setAppView(
|
|
195
|
+
tag: string,
|
|
196
|
+
appId: string = ibiz.env.appId,
|
|
197
|
+
priority: number = -1,
|
|
198
|
+
): void {
|
|
184
199
|
const id = this.calcAppViewId(tag);
|
|
200
|
+
if (this.view2appMap.has(id)) {
|
|
201
|
+
const _priority = this.view2appPriorityMap.get(id);
|
|
202
|
+
// 已经存在优先级高的视图直接跳过,若优先级相同或更高则覆盖
|
|
203
|
+
if (_priority && _priority < priority) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
185
207
|
this.view2appMap.set(id, appId);
|
|
208
|
+
if (priority !== -1) {
|
|
209
|
+
this.view2appPriorityMap.set(id, priority);
|
|
210
|
+
}
|
|
186
211
|
}
|
|
187
212
|
|
|
188
213
|
/**
|
|
@@ -73,9 +73,9 @@ export class OpenAppViewCommand {
|
|
|
73
73
|
const { openMode = 'INDEXVIEWTAB' } = appView;
|
|
74
74
|
const viewOpenMode = opts.openMode || openMode;
|
|
75
75
|
if (viewOpenMode !== undefined && viewOpenMode !== 'INDEXVIEWTAB') {
|
|
76
|
-
//
|
|
76
|
+
// 除了走路由的,其他情况toRouteDepth转为undefined,避免影响后续操作
|
|
77
77
|
if (context.toRouteDepth) {
|
|
78
|
-
|
|
78
|
+
context.toRouteDepth = undefined;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
switch (viewOpenMode) {
|