@ibiz-template/runtime 0.5.0-beta.4 → 0.5.0-beta.5
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 +548 -142
- package/dist/index.system.min.js +1 -1
- package/out/controller/control/app-menu/app-menu.controller.d.ts +34 -1
- package/out/controller/control/app-menu/app-menu.controller.d.ts.map +1 -1
- package/out/controller/control/app-menu/app-menu.controller.js +47 -5
- package/out/controller/control/gantt/gantt.controller.d.ts.map +1 -1
- package/out/controller/control/gantt/gantt.controller.js +3 -3
- package/out/controller/control/grid/grid/entity-schema.d.ts +16 -0
- package/out/controller/control/grid/grid/entity-schema.d.ts.map +1 -0
- package/out/controller/control/grid/grid/entity-schema.js +81 -0
- package/out/controller/control/grid/grid/grid.controller.d.ts +14 -0
- package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
- package/out/controller/control/grid/grid/grid.controller.js +43 -1
- package/out/controller/control/grid/grid/grid.service.js +1 -1
- package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js +1 -1
- package/out/controller/control/search-bar/entity-schema.d.ts +13 -0
- package/out/controller/control/search-bar/entity-schema.d.ts.map +1 -0
- package/out/controller/control/search-bar/entity-schema.js +151 -0
- package/out/controller/control/search-bar/search-bar-filter.controller.d.ts +9 -0
- package/out/controller/control/search-bar/search-bar-filter.controller.d.ts.map +1 -1
- package/out/controller/control/search-bar/search-bar-filter.controller.js +26 -6
- package/out/controller/control/search-bar/search-bar.controller.d.ts +29 -1
- package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
- package/out/controller/control/search-bar/search-bar.controller.js +55 -8
- 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 +2 -1
- package/out/controller/utils/index.d.ts +1 -0
- package/out/controller/utils/index.d.ts.map +1 -1
- package/out/controller/utils/index.js +1 -0
- package/out/controller/utils/jsonschema/entity.d.ts +11 -0
- package/out/controller/utils/jsonschema/entity.d.ts.map +1 -0
- package/out/controller/utils/jsonschema/entity.js +16 -0
- package/out/controller/utils/jsonschema/index.d.ts +2 -0
- package/out/controller/utils/jsonschema/index.d.ts.map +1 -0
- package/out/controller/utils/jsonschema/index.js +1 -0
- package/out/interface/provider/i-app-menu-item.provider.d.ts +31 -0
- package/out/interface/provider/i-app-menu-item.provider.d.ts.map +1 -0
- package/out/interface/provider/i-app-menu-item.provider.js +1 -0
- package/out/interface/provider/index.d.ts +1 -0
- package/out/interface/provider/index.d.ts.map +1 -1
- package/out/interface/service/i-data-entity/i-data-entity.d.ts +0 -17
- package/out/interface/service/i-data-entity/i-data-entity.d.ts.map +1 -1
- package/out/register/helper/app-menu-item-register.d.ts +25 -0
- package/out/register/helper/app-menu-item-register.d.ts.map +1 -0
- package/out/register/helper/app-menu-item-register.js +52 -0
- package/out/register/helper/index.d.ts +1 -0
- package/out/register/helper/index.d.ts.map +1 -1
- package/out/register/helper/index.js +1 -0
- package/out/service/app-data-entity/app-data-entity.d.ts +0 -9
- package/out/service/app-data-entity/app-data-entity.d.ts.map +1 -1
- package/out/service/app-data-entity/app-data-entity.js +11 -41
- package/out/service/de-service-util.js +1 -1
- package/out/service/service/entity/method/de-action.d.ts +11 -0
- package/out/service/service/entity/method/de-action.d.ts.map +1 -1
- package/out/service/service/entity/method/de-action.js +31 -4
- package/out/service/utils/de-cache/de-cache.js +3 -3
- package/out/utils/open-redirect-view/open-redirect-view.d.ts +17 -4
- package/out/utils/open-redirect-view/open-redirect-view.d.ts.map +1 -1
- package/out/utils/open-redirect-view/open-redirect-view.js +20 -4
- package/package.json +3 -3
- package/src/controller/control/app-menu/app-menu.controller.ts +64 -6
- package/src/controller/control/gantt/gantt.controller.ts +3 -3
- package/src/controller/control/grid/grid/entity-schema.ts +105 -0
- package/src/controller/control/grid/grid/grid.controller.ts +57 -1
- package/src/controller/control/grid/grid/grid.service.ts +1 -1
- package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts +1 -1
- package/src/controller/control/search-bar/entity-schema.ts +178 -0
- package/src/controller/control/search-bar/search-bar-filter.controller.ts +32 -9
- package/src/controller/control/search-bar/search-bar.controller.ts +69 -9
- package/src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts +2 -2
- package/src/controller/utils/index.ts +1 -0
- package/src/controller/utils/jsonschema/entity.ts +19 -0
- package/src/controller/utils/jsonschema/index.ts +1 -0
- package/src/interface/provider/i-app-menu-item.provider.ts +40 -0
- package/src/interface/provider/index.ts +1 -0
- package/src/interface/service/i-data-entity/i-data-entity.ts +0 -19
- package/src/register/helper/app-menu-item-register.ts +65 -0
- package/src/register/helper/index.ts +1 -0
- package/src/service/app-data-entity/app-data-entity.ts +11 -46
- package/src/service/de-service-util.ts +1 -1
- package/src/service/service/entity/method/de-action.ts +44 -4
- package/src/service/utils/de-cache/de-cache.ts +3 -3
- package/src/utils/open-redirect-view/open-redirect-view.ts +31 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { clone, isNil } from 'ramda';
|
|
2
|
-
import { DataTypes
|
|
2
|
+
import { DataTypes } from '@ibiz-template/core';
|
|
3
3
|
import { createUUID } from 'qx-util';
|
|
4
4
|
import { Srfuf } from '../constant';
|
|
5
5
|
import { findModelChild } from '../../model';
|
|
@@ -24,7 +24,6 @@ export class AppDataEntity {
|
|
|
24
24
|
* @param {(IData | AppDataEntity)} [data={}]
|
|
25
25
|
*/
|
|
26
26
|
constructor(entity, data = {}) {
|
|
27
|
-
let history = new HistoryList(data instanceof AppDataEntity ? clone(data._data) : clone(data));
|
|
28
27
|
Object.defineProperty(this, '_entity', {
|
|
29
28
|
enumerable: false,
|
|
30
29
|
configurable: true,
|
|
@@ -33,19 +32,7 @@ export class AppDataEntity {
|
|
|
33
32
|
Object.defineProperty(this, '_data', {
|
|
34
33
|
enumerable: false,
|
|
35
34
|
configurable: true,
|
|
36
|
-
|
|
37
|
-
return history.data;
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
Object.defineProperty(this, 'history', {
|
|
41
|
-
enumerable: false,
|
|
42
|
-
configurable: true,
|
|
43
|
-
set(v) {
|
|
44
|
-
history = v;
|
|
45
|
-
},
|
|
46
|
-
get() {
|
|
47
|
-
return history;
|
|
48
|
-
},
|
|
35
|
+
value: data instanceof AppDataEntity ? clone(data._data) : clone(data),
|
|
49
36
|
});
|
|
50
37
|
Object.defineProperty(this, 'srfdeid', {
|
|
51
38
|
get() {
|
|
@@ -117,19 +104,17 @@ export class AppDataEntity {
|
|
|
117
104
|
*/
|
|
118
105
|
defineProperties() {
|
|
119
106
|
var _a;
|
|
120
|
-
|
|
121
|
-
const self = this; // _data 不可以解构,或重新声明变量会断掉引用
|
|
122
|
-
const { convertVal } = this;
|
|
107
|
+
const { _data, convertVal } = this;
|
|
123
108
|
const properties = {};
|
|
124
|
-
const keys = Object.keys(
|
|
109
|
+
const keys = Object.keys(_data);
|
|
125
110
|
keys.forEach(key => {
|
|
126
111
|
properties[key] = {
|
|
127
112
|
enumerable: true,
|
|
128
113
|
set(val) {
|
|
129
|
-
|
|
114
|
+
_data[key] = val;
|
|
130
115
|
},
|
|
131
116
|
get() {
|
|
132
|
-
return
|
|
117
|
+
return _data[key];
|
|
133
118
|
},
|
|
134
119
|
};
|
|
135
120
|
});
|
|
@@ -138,14 +123,14 @@ export class AppDataEntity {
|
|
|
138
123
|
properties[key] = {
|
|
139
124
|
enumerable: true,
|
|
140
125
|
set(val) {
|
|
141
|
-
|
|
126
|
+
_data[key] = convertVal(val, field.stdDataType);
|
|
142
127
|
},
|
|
143
128
|
get() {
|
|
144
|
-
return
|
|
129
|
+
return _data[key];
|
|
145
130
|
},
|
|
146
131
|
};
|
|
147
132
|
// 初始值转换
|
|
148
|
-
|
|
133
|
+
_data[key] = convertVal(_data[key], field.stdDataType);
|
|
149
134
|
});
|
|
150
135
|
Object.defineProperties(this, properties);
|
|
151
136
|
}
|
|
@@ -157,9 +142,8 @@ export class AppDataEntity {
|
|
|
157
142
|
* @return {*} {AppDataEntity}
|
|
158
143
|
*/
|
|
159
144
|
clone() {
|
|
160
|
-
const entity = new AppDataEntity(this._entity);
|
|
145
|
+
const entity = new AppDataEntity(this._entity, this._data);
|
|
161
146
|
entity.srfkey = this.srfkey;
|
|
162
|
-
entity.history = clone(this.history);
|
|
163
147
|
return entity;
|
|
164
148
|
}
|
|
165
149
|
/**
|
|
@@ -183,23 +167,9 @@ export class AppDataEntity {
|
|
|
183
167
|
delete _data[key];
|
|
184
168
|
}
|
|
185
169
|
});
|
|
186
|
-
|
|
170
|
+
Object.assign(this._data, _data);
|
|
187
171
|
return this;
|
|
188
172
|
}
|
|
189
|
-
/**
|
|
190
|
-
* 实体对象销毁
|
|
191
|
-
*
|
|
192
|
-
* @author chitanda
|
|
193
|
-
* @date 2023-12-28 21:12:24
|
|
194
|
-
*/
|
|
195
|
-
destroy() {
|
|
196
|
-
this.history.destroy();
|
|
197
|
-
Object.defineProperty(this, '_entity', {
|
|
198
|
-
enumerable: false,
|
|
199
|
-
configurable: true,
|
|
200
|
-
value: null,
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
173
|
/**
|
|
204
174
|
* 根据属性的数据类型转换值
|
|
205
175
|
* @author lxm
|
|
@@ -49,7 +49,7 @@ export class DEServiceUtil {
|
|
|
49
49
|
* @return {*} {Promise<IAppDEService>}
|
|
50
50
|
*/
|
|
51
51
|
async getService(context, id) {
|
|
52
|
-
const sandboxId = context.srfsessionid;
|
|
52
|
+
const sandboxId = context.srfsessionid || 'applocation';
|
|
53
53
|
if (!this.cache.has(sandboxId)) {
|
|
54
54
|
this.cache.set(sandboxId, new Map());
|
|
55
55
|
}
|
|
@@ -132,5 +132,16 @@ export declare class DEActionMethod extends Method {
|
|
|
132
132
|
* @return {*} {Promise<IHttpResponse>}
|
|
133
133
|
*/
|
|
134
134
|
removeBatchTemp(_context: IParams, _params?: IParams): Promise<IHttpResponse>;
|
|
135
|
+
/**
|
|
136
|
+
* 在新建、更新时,根据界面域下的关系,自动填充相关父属性
|
|
137
|
+
*
|
|
138
|
+
* @author chitanda
|
|
139
|
+
* @date 2024-01-02 15:01:30
|
|
140
|
+
* @protected
|
|
141
|
+
* @param {IContext} context
|
|
142
|
+
* @param {IDataEntity} data
|
|
143
|
+
* @return {*} {IDataEntity}
|
|
144
|
+
*/
|
|
145
|
+
protected attach(context: IContext, data: IDataEntity): IDataEntity;
|
|
135
146
|
}
|
|
136
147
|
//# sourceMappingURL=de-action.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de-action.d.ts","sourceRoot":"","sources":["../../../../../src/service/service/entity/method/de-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EACZ,aAAa,EAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,MAAM;IAChC,MAAM,EAAE,YAAY,CAAC;IAE7B;;;;;;;OAOG;IACG,WAAW,CACf,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,GACpB,OAAO,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC;IAQrB,IAAI,CACR,OAAO,EAAE,QAAQ,EACjB,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,EACtB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAsF/B;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,QAAQ,EACjB,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,EACtB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAatC;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAYtC;;;;;;;;;OASG;IACG,MAAM,CACV,OAAO,EAAE,QAAQ,EACjB,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,EACtB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAiBtC;;;;;;;;OAQG;IACG,GAAG,CACP,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAatC;;;;;;;;OAQG;IACG,QAAQ,CACZ,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAUhC;;;;;;;;OAQG;IACG,UAAU,CACd,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,GACtB,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"de-action.d.ts","sourceRoot":"","sources":["../../../../../src/service/service/entity/method/de-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EACZ,aAAa,EAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,MAAM;IAChC,MAAM,EAAE,YAAY,CAAC;IAE7B;;;;;;;OAOG;IACG,WAAW,CACf,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,GACpB,OAAO,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC;IAQrB,IAAI,CACR,OAAO,EAAE,QAAQ,EACjB,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,EACtB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAsF/B;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,QAAQ,EACjB,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,EACtB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAatC;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAYtC;;;;;;;;;OASG;IACG,MAAM,CACV,OAAO,EAAE,QAAQ,EACjB,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,EACtB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAiBtC;;;;;;;;OAQG;IACG,GAAG,CACP,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAatC;;;;;;;;OAQG;IACG,QAAQ,CACZ,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAUhC;;;;;;;;OAQG;IACG,UAAU,CACd,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,GACtB,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAuBtC;;;;;;;;OAQG;IACG,YAAY,CAChB,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAatC;;;;;;;;OAQG;IACG,UAAU,CACd,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAmBtC;;;;;;;;OAQG;IACG,UAAU,CACd,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,GACtB,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IA0BtC;;;;;;;;OAQG;IACG,OAAO,CACX,OAAO,EAAE,QAAQ,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAoBtC;;;;;;OAMG;IACG,eAAe,CACnB,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,aAAa,CAAC;IAezB;;;;;;;;;OASG;IACH,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,GAAG,WAAW;CAiBpE"}
|
|
@@ -211,10 +211,10 @@ export class DEActionMethod extends Method {
|
|
|
211
211
|
const addData = this.createEntity(entity);
|
|
212
212
|
let resultData;
|
|
213
213
|
if (isArray(addData)) {
|
|
214
|
-
resultData = await Promise.all(addData.map(item => this.service.local.add(context, item)));
|
|
214
|
+
resultData = await Promise.all(addData.map(item => this.service.local.add(context, this.attach(context, item))));
|
|
215
215
|
}
|
|
216
216
|
else {
|
|
217
|
-
resultData = await this.service.local.add(context, addData);
|
|
217
|
+
resultData = await this.service.local.add(context, this.attach(context, addData));
|
|
218
218
|
}
|
|
219
219
|
return new HttpResponse(resultData);
|
|
220
220
|
}
|
|
@@ -286,10 +286,10 @@ export class DEActionMethod extends Method {
|
|
|
286
286
|
const updateData = this.createEntity(entity);
|
|
287
287
|
let resultData;
|
|
288
288
|
if (isArray(updateData)) {
|
|
289
|
-
resultData = await Promise.all(updateData.map(item => this.service.local.update(context, item)));
|
|
289
|
+
resultData = await Promise.all(updateData.map(item => this.service.local.update(context, this.attach(context, item))));
|
|
290
290
|
}
|
|
291
291
|
else {
|
|
292
|
-
resultData = await this.service.local.update(context, updateData);
|
|
292
|
+
resultData = await this.service.local.update(context, this.attach(context, updateData));
|
|
293
293
|
}
|
|
294
294
|
if (resultData) {
|
|
295
295
|
return new HttpResponse(resultData);
|
|
@@ -350,4 +350,31 @@ export class DEActionMethod extends Method {
|
|
|
350
350
|
// }
|
|
351
351
|
return new HttpResponse(true);
|
|
352
352
|
}
|
|
353
|
+
/**
|
|
354
|
+
* 在新建、更新时,根据界面域下的关系,自动填充相关父属性
|
|
355
|
+
*
|
|
356
|
+
* @author chitanda
|
|
357
|
+
* @date 2024-01-02 15:01:30
|
|
358
|
+
* @protected
|
|
359
|
+
* @param {IContext} context
|
|
360
|
+
* @param {IDataEntity} data
|
|
361
|
+
* @return {*} {IDataEntity}
|
|
362
|
+
*/
|
|
363
|
+
attach(context, data) {
|
|
364
|
+
const sandboxId = context.srfsessionid;
|
|
365
|
+
const uiDomain = ibiz.uiDomainManager.get(sandboxId);
|
|
366
|
+
const configs = uiDomain.getDERConfig(this.entity.id);
|
|
367
|
+
if (configs.length > 0) {
|
|
368
|
+
configs.forEach(config => {
|
|
369
|
+
const { majorDECodeName, pickupDEFName } = config;
|
|
370
|
+
const majorLowerCodeName = majorDECodeName.toLowerCase();
|
|
371
|
+
const pickupLowerDEFName = pickupDEFName.toLowerCase();
|
|
372
|
+
const majorkey = context[majorLowerCodeName];
|
|
373
|
+
if (majorkey) {
|
|
374
|
+
data[pickupLowerDEFName] = majorkey;
|
|
375
|
+
}
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
return data;
|
|
379
|
+
}
|
|
353
380
|
}
|
|
@@ -422,9 +422,9 @@ export class DECache {
|
|
|
422
422
|
* @date 2023-12-22 13:12:17
|
|
423
423
|
*/
|
|
424
424
|
clear() {
|
|
425
|
-
this.cacheMap.forEach(item => {
|
|
426
|
-
|
|
427
|
-
});
|
|
425
|
+
// this.cacheMap.forEach(item => {
|
|
426
|
+
// item.destroy();
|
|
427
|
+
// });
|
|
428
428
|
this.cacheMap.clear();
|
|
429
429
|
}
|
|
430
430
|
/**
|
|
@@ -23,14 +23,27 @@ export declare function openRedirectView(appView: IAppRedirectView, context: ICo
|
|
|
23
23
|
* 本地打开工作流重定向视图
|
|
24
24
|
*
|
|
25
25
|
* @description 工作流 appredirectview 特殊处理,全局通过 appredirectview 跳转工作流重定向,均使用此方法
|
|
26
|
-
* @author
|
|
27
|
-
* @date
|
|
26
|
+
* @author zk
|
|
27
|
+
* @date 2024-01-02 11:01:16
|
|
28
|
+
* @export
|
|
29
|
+
* @param {IContext} context
|
|
30
|
+
* @param {string} linkUrl
|
|
31
|
+
* @param {IOpenViewOptions} [opts={}]
|
|
32
|
+
* @return {*} {Promise<void>}
|
|
33
|
+
*/
|
|
34
|
+
export declare function toLocalOpenWFRedirectView(context: IContext, linkUrl: string, opts?: IOpenViewOptions): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* 获取本地打开工作流重定向视图的相关信息
|
|
37
|
+
*
|
|
38
|
+
* @author zk
|
|
39
|
+
* @date 2024-01-02 11:01:38
|
|
28
40
|
* @export
|
|
29
|
-
* @param {IAppDERedirectView} appView
|
|
30
41
|
* @param {IContext} context
|
|
31
42
|
* @param {string} linkUrl
|
|
43
|
+
* @param {IOpenViewOptions} [opts={}]
|
|
44
|
+
* @return {*} {Promise<ToViewParams>}
|
|
32
45
|
*/
|
|
33
|
-
export declare function
|
|
46
|
+
export declare function getLocalOpenWFRedirectView(context: IContext, linkUrl: string, opts?: IOpenViewOptions): Promise<ToViewParams>;
|
|
34
47
|
/**
|
|
35
48
|
* 获取处理后的重定向视图最终要跳转视图的相关信息
|
|
36
49
|
* @author lxm
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-redirect-view.d.ts","sourceRoot":"","sources":["../../../src/utils/open-redirect-view/open-redirect-view.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAK/D,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,EACpB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,UAAU,CAAC,CAOrB;AAED
|
|
1
|
+
{"version":3,"file":"open-redirect-view.d.ts","sourceRoot":"","sources":["../../../src/utils/open-redirect-view/open-redirect-view.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAK/D,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,EACpB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,UAAU,CAAC,CAOrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAoDvB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,EACpB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAAC,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAsG3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,QAAQ,EACjB,MAAM,GAAE,OAAY,EACpB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,UAAU,CAAC,CA+BrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,MAAM,CAAC,CA6CjB"}
|
|
@@ -23,14 +23,30 @@ export async function openRedirectView(appView, context, params = {}, opts = {})
|
|
|
23
23
|
* 本地打开工作流重定向视图
|
|
24
24
|
*
|
|
25
25
|
* @description 工作流 appredirectview 特殊处理,全局通过 appredirectview 跳转工作流重定向,均使用此方法
|
|
26
|
-
* @author
|
|
27
|
-
* @date
|
|
26
|
+
* @author zk
|
|
27
|
+
* @date 2024-01-02 11:01:16
|
|
28
28
|
* @export
|
|
29
|
-
* @param {IAppDERedirectView} appView
|
|
30
29
|
* @param {IContext} context
|
|
31
30
|
* @param {string} linkUrl
|
|
31
|
+
* @param {IOpenViewOptions} [opts={}]
|
|
32
|
+
* @return {*} {Promise<void>}
|
|
32
33
|
*/
|
|
33
34
|
export async function toLocalOpenWFRedirectView(context, linkUrl, opts = {}) {
|
|
35
|
+
const toView = await getLocalOpenWFRedirectView(context, linkUrl, opts);
|
|
36
|
+
await ibiz.commands.execute(OpenAppViewCommand.TAG, toView.viewId, toView.context, toView.params, toView.opts);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 获取本地打开工作流重定向视图的相关信息
|
|
40
|
+
*
|
|
41
|
+
* @author zk
|
|
42
|
+
* @date 2024-01-02 11:01:38
|
|
43
|
+
* @export
|
|
44
|
+
* @param {IContext} context
|
|
45
|
+
* @param {string} linkUrl
|
|
46
|
+
* @param {IOpenViewOptions} [opts={}]
|
|
47
|
+
* @return {*} {Promise<ToViewParams>}
|
|
48
|
+
*/
|
|
49
|
+
export async function getLocalOpenWFRedirectView(context, linkUrl, opts = {}) {
|
|
34
50
|
const i = linkUrl.lastIndexOf('?');
|
|
35
51
|
const queryStr = decodeURIComponent(linkUrl.substring(i + 1, linkUrl.length));
|
|
36
52
|
const params = qs.parse(queryStr, { delimiter: ';' });
|
|
@@ -123,7 +139,7 @@ export async function getDERedirectToView(appView, context, params = {}, opts =
|
|
|
123
139
|
return { type: 'url', url: linkUrl };
|
|
124
140
|
}
|
|
125
141
|
if (linkUrl.startsWith('appredirectview?')) {
|
|
126
|
-
const toView = await
|
|
142
|
+
const toView = await getLocalOpenWFRedirectView(context, linkUrl, opts);
|
|
127
143
|
return Object.assign({ type: 'view' }, toView);
|
|
128
144
|
}
|
|
129
145
|
throw new RuntimeError(`未支持的linkUrl格式:${linkUrl}`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibiz-template/runtime",
|
|
3
|
-
"version": "0.5.0-beta.
|
|
3
|
+
"version": "0.5.0-beta.5",
|
|
4
4
|
"description": "控制器包",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "out/index.js",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"author": "chitanda",
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@ibiz-template/core": "^0.5.0-beta.
|
|
32
|
+
"@ibiz-template/core": "^0.5.0-beta.5",
|
|
33
33
|
"@ibiz/model-core": "^0.1.0",
|
|
34
34
|
"@types/path-browserify": "^1.0.2",
|
|
35
35
|
"@types/qs": "^6.9.11",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"qx-util": "^0.4.8",
|
|
60
60
|
"ramda": "^0.29.0"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "36616d6d81c619f3cc135c4c9c52cf607b357adc"
|
|
63
63
|
}
|
|
@@ -10,9 +10,12 @@ import {
|
|
|
10
10
|
IAppMenuEvent,
|
|
11
11
|
IAppMenuController,
|
|
12
12
|
IAppService,
|
|
13
|
+
IAppMenuItemProvider,
|
|
13
14
|
} from '../../../interface';
|
|
14
15
|
import { AppCounter } from '../../../service';
|
|
15
16
|
import { ControlController } from '../../common';
|
|
17
|
+
import { getAppMenuItemProvider } from '../../../register';
|
|
18
|
+
import { CTX } from '../../ctx';
|
|
16
19
|
|
|
17
20
|
/**
|
|
18
21
|
* 应用菜单控制器
|
|
@@ -34,6 +37,22 @@ export class AppMenuController
|
|
|
34
37
|
this.state.menuItemsState = {};
|
|
35
38
|
}
|
|
36
39
|
|
|
40
|
+
/**
|
|
41
|
+
* 所有菜单项,平铺开
|
|
42
|
+
* @author lxm
|
|
43
|
+
* @date 2023-12-29 02:43:35
|
|
44
|
+
* @type {IAppMenuItem[]}
|
|
45
|
+
*/
|
|
46
|
+
allAppMenuItems!: IAppMenuItem[];
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* 菜单项适配器集合
|
|
50
|
+
* @author lxm
|
|
51
|
+
* @date 2023-07-19 04:14:50
|
|
52
|
+
* @type {{ [key: string]: IProvider }}
|
|
53
|
+
*/
|
|
54
|
+
itemProviders: { [key: string]: IAppMenuItemProvider } = {};
|
|
55
|
+
|
|
37
56
|
/**
|
|
38
57
|
* 视图层级
|
|
39
58
|
*
|
|
@@ -45,10 +64,15 @@ export class AppMenuController
|
|
|
45
64
|
return this.view.modal.routeDepth;
|
|
46
65
|
}
|
|
47
66
|
|
|
67
|
+
constructor(model: IAppMenu, context: IContext, params: IParams, ctx: CTX) {
|
|
68
|
+
super(model, context, params, ctx);
|
|
69
|
+
this.flattenAllItems();
|
|
70
|
+
}
|
|
71
|
+
|
|
48
72
|
protected async onCreated(): Promise<void> {
|
|
49
73
|
await super.onCreated();
|
|
50
|
-
|
|
51
74
|
this.app = await ibiz.hub.getApp(this.context.srfappid);
|
|
75
|
+
await this.initAppMenuItemProviders();
|
|
52
76
|
|
|
53
77
|
// 初始化菜单项状态
|
|
54
78
|
this.model.appMenuItems?.forEach(item => {
|
|
@@ -56,6 +80,24 @@ export class AppMenuController
|
|
|
56
80
|
});
|
|
57
81
|
}
|
|
58
82
|
|
|
83
|
+
/**
|
|
84
|
+
* 初始化菜单项的适配器
|
|
85
|
+
* @author lxm
|
|
86
|
+
* @date 2023-12-29 02:50:20
|
|
87
|
+
* @protected
|
|
88
|
+
* @return {*} {Promise<void>}
|
|
89
|
+
*/
|
|
90
|
+
protected async initAppMenuItemProviders(): Promise<void> {
|
|
91
|
+
await Promise.all(
|
|
92
|
+
this.allAppMenuItems.map(async item => {
|
|
93
|
+
const provider = await getAppMenuItemProvider(item);
|
|
94
|
+
if (provider) {
|
|
95
|
+
this.itemProviders[item.id!] = provider;
|
|
96
|
+
}
|
|
97
|
+
}),
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
59
101
|
/**
|
|
60
102
|
* 菜单项点击回调,触发对应的应用功能
|
|
61
103
|
*
|
|
@@ -82,6 +124,12 @@ export class AppMenuController
|
|
|
82
124
|
event,
|
|
83
125
|
});
|
|
84
126
|
|
|
127
|
+
// 如果有适配器,走适配器的点击处理
|
|
128
|
+
const provider = this.itemProviders[id];
|
|
129
|
+
if (provider && provider.onClick) {
|
|
130
|
+
return provider.onClick(menuItem, event as MouseEvent, this);
|
|
131
|
+
}
|
|
132
|
+
|
|
85
133
|
if (!menuItem.appFuncId) {
|
|
86
134
|
throw new RuntimeModelError(menuItem, '没有配置应用功能');
|
|
87
135
|
}
|
|
@@ -139,11 +187,11 @@ export class AppMenuController
|
|
|
139
187
|
|
|
140
188
|
/**
|
|
141
189
|
* 所有项平铺
|
|
142
|
-
* @
|
|
143
|
-
* @
|
|
144
|
-
* @
|
|
190
|
+
* @author lxm
|
|
191
|
+
* @date 2023-12-29 02:42:39
|
|
192
|
+
* @protected
|
|
145
193
|
*/
|
|
146
|
-
|
|
194
|
+
protected flattenAllItems(): void {
|
|
147
195
|
const result: IAppMenuItem[] = [];
|
|
148
196
|
const flattenMenus = (menuItems: IAppMenuItem[]): void => {
|
|
149
197
|
menuItems.forEach(item => {
|
|
@@ -154,7 +202,17 @@ export class AppMenuController
|
|
|
154
202
|
});
|
|
155
203
|
};
|
|
156
204
|
flattenMenus(this.model.appMenuItems!);
|
|
157
|
-
|
|
205
|
+
this.allAppMenuItems = result;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* 所有项平铺
|
|
210
|
+
* @return {*}
|
|
211
|
+
* @author: zhujiamin
|
|
212
|
+
* @Date: 2022-09-09 16:48:21
|
|
213
|
+
*/
|
|
214
|
+
getAllItems(): IAppMenuItem[] {
|
|
215
|
+
return this.allAppMenuItems;
|
|
158
216
|
}
|
|
159
217
|
|
|
160
218
|
/**
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
} from '../../../interface';
|
|
12
12
|
import { GanttService } from './gantt.service';
|
|
13
13
|
import { TreeGridExController } from '../tree-grid-ex';
|
|
14
|
+
import { calcDeCodeNameById } from '../../../model';
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* 甘特图控制器
|
|
@@ -37,7 +38,6 @@ export class GanttController
|
|
|
37
38
|
*/
|
|
38
39
|
protected initState(): void {
|
|
39
40
|
super.initState();
|
|
40
|
-
this.state.rootNodes = [];
|
|
41
41
|
this.state.ganttStyle = {};
|
|
42
42
|
}
|
|
43
43
|
|
|
@@ -123,9 +123,9 @@ export class GanttController
|
|
|
123
123
|
? this.transformNodeDataItem(nodeModel, data)
|
|
124
124
|
: data;
|
|
125
125
|
if (Object.keys(newData).length > 0) {
|
|
126
|
-
const
|
|
126
|
+
const deName = calcDeCodeNameById(nodeModel.appDataEntityId!);
|
|
127
127
|
const tempContext = Object.assign(this.context.clone(), {
|
|
128
|
-
[
|
|
128
|
+
[deName]: currentNode.srfkey,
|
|
129
129
|
});
|
|
130
130
|
const response = await this.service.execDeService(
|
|
131
131
|
nodeModel.appDataEntityId!,
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { IDEGridDataItem, IDEGridFieldColumn } from '@ibiz/model-core';
|
|
2
|
+
import { GridController } from './grid.controller';
|
|
3
|
+
|
|
4
|
+
const TypeToDataType: { [p: string]: number } = {
|
|
5
|
+
string: 25,
|
|
6
|
+
number: 6,
|
|
7
|
+
integer: 9,
|
|
8
|
+
date: 5,
|
|
9
|
+
} as const;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* 根据json模型计算出表格列模型
|
|
13
|
+
* @author lxm
|
|
14
|
+
* @date 2024-01-02 10:27:40
|
|
15
|
+
* @export
|
|
16
|
+
* @param {IData} json
|
|
17
|
+
* @param {SearchBarController} c
|
|
18
|
+
* @return {*} {ISearchBarFilter[]}
|
|
19
|
+
*/
|
|
20
|
+
export async function calcColumnModelBySchema(
|
|
21
|
+
json: IData,
|
|
22
|
+
c: GridController,
|
|
23
|
+
): Promise<
|
|
24
|
+
| { degridColumns: IDEGridFieldColumn[]; degridDataItems: IDEGridDataItem[] }
|
|
25
|
+
| undefined
|
|
26
|
+
> {
|
|
27
|
+
if (!json.properties) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const { properties } = json;
|
|
31
|
+
if (!(Object.keys(properties).length > 0)) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const addFields: {
|
|
36
|
+
key: string;
|
|
37
|
+
description: string;
|
|
38
|
+
type: string;
|
|
39
|
+
}[] = [];
|
|
40
|
+
Object.keys(properties).forEach((key: string) => {
|
|
41
|
+
let type: string;
|
|
42
|
+
|
|
43
|
+
switch (properties[key].type) {
|
|
44
|
+
case 'string':
|
|
45
|
+
type = 'string';
|
|
46
|
+
if (properties[key].format === 'date-time') {
|
|
47
|
+
type = 'date';
|
|
48
|
+
}
|
|
49
|
+
break;
|
|
50
|
+
case 'integer':
|
|
51
|
+
type = 'integer';
|
|
52
|
+
break;
|
|
53
|
+
case 'number':
|
|
54
|
+
type = 'number';
|
|
55
|
+
break;
|
|
56
|
+
default:
|
|
57
|
+
ibiz.log.error(`未支持的类型${properties[key].type}`);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
addFields.push({
|
|
62
|
+
key,
|
|
63
|
+
description: properties[key].description,
|
|
64
|
+
type,
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
// 属性codeName对应的属性id
|
|
69
|
+
const codeNameToId: { [p: string]: string } = {};
|
|
70
|
+
const dataEntity = await ibiz.hub.getAppDataEntity(
|
|
71
|
+
c.model.appDataEntityId!,
|
|
72
|
+
c.model.appId,
|
|
73
|
+
);
|
|
74
|
+
dataEntity.appDEFields?.forEach(field => {
|
|
75
|
+
codeNameToId[field.codeName!.toLowerCase()] = field.id!;
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
const addColumns: IDEGridFieldColumn[] = [];
|
|
79
|
+
const addDataItems: IDEGridDataItem[] = [];
|
|
80
|
+
|
|
81
|
+
addFields.forEach(item => {
|
|
82
|
+
addColumns.push({
|
|
83
|
+
appId: c.model.appId,
|
|
84
|
+
appDEFieldId: codeNameToId[item.key],
|
|
85
|
+
id: item.key,
|
|
86
|
+
codeName: item.key,
|
|
87
|
+
columnType: 'DEFGRIDCOLUMN',
|
|
88
|
+
width: 150,
|
|
89
|
+
widthUnit: 'PX',
|
|
90
|
+
valueType: 'SIMPLE',
|
|
91
|
+
caption: item.description,
|
|
92
|
+
dataItemName: item.key,
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
addDataItems.push({
|
|
96
|
+
appId: c.model.appId,
|
|
97
|
+
appDEFieldId: codeNameToId[item.key],
|
|
98
|
+
id: item.key,
|
|
99
|
+
valueType: 'SIMPLE',
|
|
100
|
+
dataType: TypeToDataType[item.type],
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
return { degridColumns: addColumns, degridDataItems: addDataItems };
|
|
105
|
+
}
|
|
@@ -40,8 +40,14 @@ import { getGridColumnProvider } from '../../../../register';
|
|
|
40
40
|
import { ControlVO, Srfuf } from '../../../../service';
|
|
41
41
|
import { MDControlController } from '../../../common';
|
|
42
42
|
import { GridNotifyState } from '../../../constant';
|
|
43
|
-
import {
|
|
43
|
+
import {
|
|
44
|
+
exportData,
|
|
45
|
+
getDefaultValue,
|
|
46
|
+
getEntitySchema,
|
|
47
|
+
isValueChange,
|
|
48
|
+
} from '../../../utils';
|
|
44
49
|
import { handleAllSettled, ScriptFactory } from '../../../../utils';
|
|
50
|
+
import { calcColumnModelBySchema } from './entity-schema';
|
|
45
51
|
|
|
46
52
|
/**
|
|
47
53
|
* 表格控制器
|
|
@@ -81,6 +87,14 @@ export class GridController
|
|
|
81
87
|
*/
|
|
82
88
|
isMultistageHeader: boolean = false;
|
|
83
89
|
|
|
90
|
+
/**
|
|
91
|
+
* 是否添加jsonschema里定义的表格列
|
|
92
|
+
* @author lxm
|
|
93
|
+
* @date 2024-01-02 05:27:16
|
|
94
|
+
* @type {boolean}
|
|
95
|
+
*/
|
|
96
|
+
addSchemaColumn: boolean = false;
|
|
97
|
+
|
|
84
98
|
/**
|
|
85
99
|
* 所有表格列控制器集合
|
|
86
100
|
*
|
|
@@ -221,6 +235,8 @@ export class GridController
|
|
|
221
235
|
* @returns {*} {Promise<void>}
|
|
222
236
|
*/
|
|
223
237
|
protected async onCreated(): Promise<void> {
|
|
238
|
+
await this.initByEntitySchema();
|
|
239
|
+
|
|
224
240
|
await super.onCreated();
|
|
225
241
|
|
|
226
242
|
this.service = new GridService(this.model);
|
|
@@ -241,6 +257,46 @@ export class GridController
|
|
|
241
257
|
await this.initGroup();
|
|
242
258
|
}
|
|
243
259
|
|
|
260
|
+
/**
|
|
261
|
+
* 根据jsonschema初始化自定义表格列
|
|
262
|
+
* @author lxm
|
|
263
|
+
* @date 2024-01-02 04:41:23
|
|
264
|
+
* @return {*} {Promise<void>}
|
|
265
|
+
*/
|
|
266
|
+
async initByEntitySchema(): Promise<void> {
|
|
267
|
+
if (!this.addSchemaColumn) {
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
const json = await getEntitySchema(
|
|
272
|
+
this.model.appDataEntityId!,
|
|
273
|
+
this.context,
|
|
274
|
+
);
|
|
275
|
+
if (!json) {
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
const result = await calcColumnModelBySchema(json, this);
|
|
280
|
+
if (result && result.degridColumns.length > 0) {
|
|
281
|
+
const { degridColumns, degridDataItems } = result;
|
|
282
|
+
// 修改模型之前拷贝一份,避免污染原始数据
|
|
283
|
+
(this as IData).model = clone(this.model);
|
|
284
|
+
this.model.degridColumns = [
|
|
285
|
+
...(this.model.degridColumns || []).filter(item => {
|
|
286
|
+
return degridColumns.findIndex(x => x.id === item.id) === -1;
|
|
287
|
+
}),
|
|
288
|
+
...degridColumns,
|
|
289
|
+
];
|
|
290
|
+
|
|
291
|
+
this.model.degridDataItems = [
|
|
292
|
+
...(this.model.degridDataItems || []).filter(item => {
|
|
293
|
+
return degridDataItems.findIndex(x => x.id === item.id) === -1;
|
|
294
|
+
}),
|
|
295
|
+
...degridDataItems!,
|
|
296
|
+
];
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
244
300
|
/**
|
|
245
301
|
* 初始化表格分组
|
|
246
302
|
* @author lxm
|