@lcap/nasl 0.3.9-beta → 0.3.10-beta.oom2
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/out/service/create/errHandles.js +7 -2
- package/out/service/create/errHandles.js.map +1 -1
- package/out/service/debugger/debugger.d.ts +3 -0
- package/out/service/debugger/debugger.js +95 -0
- package/out/service/debugger/debugger.js.map +1 -0
- package/out/service/logic/logic.d.ts +27 -0
- package/out/service/logic/logic.js +20 -0
- package/out/service/logic/logic.js.map +1 -1
- package/out/service/page/element.d.ts +9 -0
- package/out/service/page/element.js +6 -0
- package/out/service/page/element.js.map +1 -1
- package/out/service/permission/api.d.ts +57 -0
- package/out/service/permission/api.js +41 -0
- package/out/service/permission/api.js.map +1 -0
- package/out/service/permission/index.d.ts +2 -0
- package/out/service/permission/index.js +17 -0
- package/out/service/permission/index.js.map +1 -0
- package/out/service/webFile/index.js +5 -0
- package/out/service/webFile/index.js.map +1 -1
- package/out/types/app/App.d.ts +4 -0
- package/out/types/app/App.js +29 -0
- package/out/types/app/App.js.map +1 -1
- package/out/types/app/Service.d.ts +2 -2
- package/out/types/app/Service.js +28 -3
- package/out/types/app/Service.js.map +1 -1
- package/out/types/cache.d.ts +6 -0
- package/out/types/cache.js +54 -0
- package/out/types/cache.js.map +1 -0
- package/out/types/common/Vertex.d.ts +25 -0
- package/out/types/common/Vertex.js +40 -0
- package/out/types/common/Vertex.js.map +1 -1
- package/out/types/data/Entity.js +1 -0
- package/out/types/data/Entity.js.map +1 -1
- package/out/types/data/Enum.d.ts +5 -0
- package/out/types/data/Enum.js +5 -0
- package/out/types/data/Enum.js.map +1 -1
- package/out/types/data/Interface.js +5 -3
- package/out/types/data/Interface.js.map +1 -1
- package/out/types/data/genBlock/genCreateBlock.js +5 -5
- package/out/types/data/genBlock/genCreateBlock.js.map +1 -1
- package/out/types/data/genBlock/genCurdBlock.js +3 -3
- package/out/types/data/genBlock/genCurdBlock.js.map +1 -1
- package/out/types/data/genBlock/genEnumSelectBlock.d.ts +1 -1
- package/out/types/data/genBlock/genEnumSelectBlock.js +2 -2
- package/out/types/data/genBlock/genEnumSelectBlock.js.map +1 -1
- package/out/types/data/genBlock/genGridViewBlock.js +12 -1
- package/out/types/data/genBlock/genGridViewBlock.js.map +1 -1
- package/out/types/data/genBlock/genListViewBlock.js +2 -2
- package/out/types/data/genBlock/genSelectBlock.js +2 -2
- package/out/types/data/genBlock/genTableBlock.js +14 -3
- package/out/types/data/genBlock/genTableBlock.js.map +1 -1
- package/out/types/data/genBlock/genUpdateBlock.js +5 -5
- package/out/types/data/genBlock/genUpdateBlock.js.map +1 -1
- package/out/types/data/systemTypes.js +47 -0
- package/out/types/data/systemTypes.js.map +1 -1
- package/out/types/enum.d.ts +6 -0
- package/out/types/enum.js +11 -0
- package/out/types/enum.js.map +1 -0
- package/out/types/generator/hotReload.d.ts +2 -0
- package/out/types/generator/hotReload.js +12 -1
- package/out/types/generator/hotReload.js.map +1 -1
- package/out/types/index.d.ts +5 -1
- package/out/types/index.js +8 -2
- package/out/types/index.js.map +1 -1
- package/out/types/logic/BreakPoint.d.ts +42 -0
- package/out/types/logic/BreakPoint.js +155 -0
- package/out/types/logic/BreakPoint.js.map +1 -0
- package/out/types/logic/Debugger.d.ts +156 -0
- package/out/types/logic/Debugger.js +912 -0
- package/out/types/logic/Debugger.js.map +1 -0
- package/out/types/logic/Logic.d.ts +28 -0
- package/out/types/logic/Logic.js +116 -31
- package/out/types/logic/Logic.js.map +1 -1
- package/out/types/logic/LogicItem.d.ts +1 -0
- package/out/types/logic/LogicItem.js +43 -24
- package/out/types/logic/LogicItem.js.map +1 -1
- package/out/types/logic/Param.d.ts +1 -0
- package/out/types/logic/Param.js +38 -20
- package/out/types/logic/Param.js.map +1 -1
- package/out/types/logic/Return.js +14 -19
- package/out/types/logic/Return.js.map +1 -1
- package/out/types/logic/Variable.js +14 -19
- package/out/types/logic/Variable.js.map +1 -1
- package/out/types/logic/translator.js +0 -2
- package/out/types/logic/translator.js.map +1 -1
- package/out/types/nuims/Nuims.d.ts +1 -1
- package/out/types/nuims/Nuims.js +11 -4
- package/out/types/nuims/Nuims.js.map +1 -1
- package/out/types/page/Element.d.ts +8 -0
- package/out/types/page/Element.js +145 -129
- package/out/types/page/Element.js.map +1 -1
- package/out/types/page/Event.js.map +1 -1
- package/out/types/page/Page.d.ts +1 -0
- package/out/types/page/Page.js +71 -37
- package/out/types/page/Page.js.map +1 -1
- package/out/types/page/View.d.ts +1 -1
- package/out/types/page/View.js +50 -42
- package/out/types/page/View.js.map +1 -1
- package/out/types/page/ViewParam.d.ts +1 -0
- package/out/types/page/ViewParam.js +23 -4
- package/out/types/page/ViewParam.js.map +1 -1
- package/out/types/page/ViewVariable.js +13 -18
- package/out/types/page/ViewVariable.js.map +1 -1
- package/out/types/permission/Permission.d.ts +41 -0
- package/out/types/permission/Permission.js +122 -0
- package/out/types/permission/Permission.js.map +1 -0
- package/package.json +2 -3
- package/src/service/create/errHandles.js +6 -2
- package/src/service/developPermission/api.js +37 -0
- package/src/service/developPermission/index.js +13 -0
- package/src/service/logic/logic.js +20 -0
- package/src/service/page/element.js +6 -0
- package/src/service/permission/api.js +38 -0
- package/src/service/permission/index.js +13 -0
- package/src/service/webFile/index.js +6 -1
- package/src/types/app/App.ts +32 -1
- package/src/types/app/Service.ts +32 -3
- package/src/types/cache.ts +50 -0
- package/src/types/common/Vertex.ts +30 -0
- package/src/types/data/Entity.ts +1 -0
- package/src/types/data/Enum.ts +5 -0
- package/src/types/data/Interface.ts +4 -3
- package/src/types/data/genBlock/genCreateBlock.ts +5 -5
- package/src/types/data/genBlock/genCurdBlock.ts +3 -3
- package/src/types/data/genBlock/genEnumSelectBlock.ts +2 -2
- package/src/types/data/genBlock/genGridViewBlock.ts +12 -1
- package/src/types/data/genBlock/genListViewBlock.ts +2 -2
- package/src/types/data/genBlock/genSelectBlock.ts +2 -2
- package/src/types/data/genBlock/genTableBlock.ts +14 -3
- package/src/types/data/genBlock/genUpdateBlock.ts +5 -5
- package/src/types/data/systemTypes.ts +47 -0
- package/src/types/enum.ts +6 -0
- package/src/types/generator/hotReload.ts +10 -0
- package/src/types/index.ts +5 -1
- package/src/types/logic/Logic.ts +109 -28
- package/src/types/logic/LogicItem.ts +48 -28
- package/src/types/logic/Param.ts +26 -8
- package/src/types/logic/Return.ts +4 -9
- package/src/types/logic/Variable.ts +4 -8
- package/src/types/logic/translator.js +0 -4
- package/src/types/logic/translator_backup.js +5 -16
- package/src/types/nuims/Nuims.ts +11 -5
- package/src/types/page/Element.ts +101 -73
- package/src/types/page/Event.ts +0 -3
- package/src/types/page/Page.ts +86 -49
- package/src/types/page/View.ts +31 -22
- package/src/types/page/ViewParam.ts +22 -3
- package/src/types/page/ViewVariable.ts +4 -8
- package/src/types/permission/Permission.ts +112 -0
|
@@ -85,4 +85,24 @@ export default {
|
|
|
85
85
|
method: 'post',
|
|
86
86
|
},
|
|
87
87
|
},
|
|
88
|
+
//定时任务接口
|
|
89
|
+
validateTimer: {
|
|
90
|
+
url: {
|
|
91
|
+
path: '/api/v1/cron/validate',
|
|
92
|
+
method: 'post',
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
testTimer: {
|
|
96
|
+
url: {
|
|
97
|
+
path: '/api/v1/cron/test',
|
|
98
|
+
method: 'post',
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
//更新接口缓存
|
|
102
|
+
updateCronCache: {
|
|
103
|
+
url: {
|
|
104
|
+
path: '/proxy/graph/api/v1/graph/cache',
|
|
105
|
+
method: 'post',
|
|
106
|
+
},
|
|
107
|
+
},
|
|
88
108
|
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
attachPermissionResourceAction: {
|
|
3
|
+
url: {
|
|
4
|
+
method: 'put',
|
|
5
|
+
path: '/proxy/graph/api/v1/graph/role/attachResource',
|
|
6
|
+
query: {},
|
|
7
|
+
},
|
|
8
|
+
},
|
|
9
|
+
detachPermissionResourceAction: {
|
|
10
|
+
url: {
|
|
11
|
+
method: 'put',
|
|
12
|
+
path: '/proxy/graph/api/v1/graph/role/detachResource',
|
|
13
|
+
query: {},
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
getRoles: {
|
|
17
|
+
url: {
|
|
18
|
+
method: 'get',
|
|
19
|
+
path: '/proxy/graph/api/v1/graph/role/list',
|
|
20
|
+
query: {},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
createRole: {
|
|
24
|
+
url: {
|
|
25
|
+
method: 'post',
|
|
26
|
+
path: '/proxy/graph/api/v1/graph/role/add',
|
|
27
|
+
query: {},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
updateRole: {
|
|
31
|
+
url: {
|
|
32
|
+
method: 'put',
|
|
33
|
+
path: '/proxy/graph/api/v1/graph/role/update',
|
|
34
|
+
query: {},
|
|
35
|
+
},
|
|
36
|
+
config: { noErrorTip: true },
|
|
37
|
+
},
|
|
38
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { createService } from '../create';
|
|
2
|
+
import api from './api';
|
|
3
|
+
|
|
4
|
+
// 兼容 node 运行环境
|
|
5
|
+
const global = typeof window !== 'undefined' ? window : this;
|
|
6
|
+
const service = createService(api, {
|
|
7
|
+
headers: {
|
|
8
|
+
// 单环境配置下默认使用生产环境
|
|
9
|
+
Env: !(global && global.appInfo && global.appInfo.multiEnvEnable) ? 'online' : 'dev',
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
export default service;
|
|
@@ -12,6 +12,11 @@ service.saveFile = async function (options) {
|
|
|
12
12
|
},
|
|
13
13
|
});
|
|
14
14
|
if (!result) {
|
|
15
|
+
// 新应用可能会并发调用多次 saveFile, 导致创建多次
|
|
16
|
+
options = { ...options,
|
|
17
|
+
config: {
|
|
18
|
+
noErrorTip: true,
|
|
19
|
+
} };
|
|
15
20
|
return service.createFile(options);
|
|
16
21
|
} else {
|
|
17
22
|
return service.updateFile(options);
|
|
@@ -20,4 +25,4 @@ service.saveFile = async function (options) {
|
|
|
20
25
|
|
|
21
26
|
export default service;
|
|
22
27
|
|
|
23
|
-
export const loadCacheService = createService(loadCacheApi);
|
|
28
|
+
export const loadCacheService = createService(loadCacheApi);
|
package/src/types/app/App.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { excludedInJSON, immutable } from '../decorators';
|
|
2
|
-
import { LEVEL_ENUM, Vertex, Service, WebService, MicroService, SERVICE_TYPE, utils, History, updateGenericTypeList } from '..';
|
|
2
|
+
import { LEVEL_ENUM, Vertex, Service, WebService, MicroService, SERVICE_TYPE, utils, History, updateGenericTypeList, vertexsMap, Entity, Structure, Enum, dataTypesMap, BaseVariable, variablesMap, updateDataTypeList } from '..';
|
|
3
3
|
import appService from '../../service/app';
|
|
4
4
|
|
|
5
5
|
interface AppLoadAllOptions {
|
|
@@ -262,6 +262,37 @@ export class App extends Vertex {
|
|
|
262
262
|
from(source: any) {
|
|
263
263
|
return new App(source);
|
|
264
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* 清理内存,避免内存泄漏
|
|
267
|
+
*/
|
|
268
|
+
clear() {
|
|
269
|
+
function traverse(obj: any, callback: (obj: any) => void) {
|
|
270
|
+
if(typeof obj !== 'object' || obj === null) return;
|
|
271
|
+
if(obj.id && !vertexsMap.has(obj.id)) return;
|
|
272
|
+
|
|
273
|
+
if(Array.isArray(obj))
|
|
274
|
+
obj.forEach((item) => {
|
|
275
|
+
traverse(item, callback);
|
|
276
|
+
})
|
|
277
|
+
else {
|
|
278
|
+
callback(obj);
|
|
279
|
+
Object.values(obj).forEach((item) => {
|
|
280
|
+
traverse(item, callback);
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
traverse(this, (obj: any) => {
|
|
286
|
+
vertexsMap.delete(obj?.id);
|
|
287
|
+
|
|
288
|
+
if(obj instanceof Entity || obj instanceof Structure || obj instanceof Enum)
|
|
289
|
+
delete dataTypesMap[obj.schemaRef];
|
|
290
|
+
|
|
291
|
+
if(obj instanceof BaseVariable)
|
|
292
|
+
variablesMap.delete(obj.id);
|
|
293
|
+
});
|
|
294
|
+
updateDataTypeList();
|
|
295
|
+
}
|
|
265
296
|
}
|
|
266
297
|
|
|
267
298
|
export default App;
|
package/src/types/app/Service.ts
CHANGED
|
@@ -166,6 +166,11 @@ export class Service extends Vertex {
|
|
|
166
166
|
* 加载服务所有的接口列表
|
|
167
167
|
*/
|
|
168
168
|
async loadInterfaces() {
|
|
169
|
+
// 接口列表中的旧接口可能已经已经不存在,需要从 vetexsMap 中清理掉
|
|
170
|
+
this.interfaces.forEach((it) => {
|
|
171
|
+
it.destroy();
|
|
172
|
+
});
|
|
173
|
+
|
|
169
174
|
const RESOLVER_NAMES = ['getAll', 'get', 'create', 'update', 'delete', 'count', 'import', 'export', 'batchDelete', 'batchCreate', 'batchUpdate'];
|
|
170
175
|
|
|
171
176
|
let interfaces: Array<Interface> = await interfaceService.loadList({
|
|
@@ -379,10 +384,15 @@ ${Object.keys(themeVariables).map((key) => ` ${key}: ${themeVariables[key]};`
|
|
|
379
384
|
`;
|
|
380
385
|
}
|
|
381
386
|
|
|
382
|
-
async loadPages() {
|
|
387
|
+
async loadPages(enableCache = true) {
|
|
388
|
+
this.pages.forEach((page) => {
|
|
389
|
+
page.destroy();
|
|
390
|
+
});
|
|
391
|
+
|
|
383
392
|
const result: Array<Page> = await pageService.loadPages({
|
|
384
393
|
query: {
|
|
385
394
|
serviceId: this.id,
|
|
395
|
+
enableCache,
|
|
386
396
|
},
|
|
387
397
|
config: {
|
|
388
398
|
mock: config.mock,
|
|
@@ -768,17 +778,35 @@ export class MicroService extends Service {
|
|
|
768
778
|
/**
|
|
769
779
|
* 加载服务所有的接口列表
|
|
770
780
|
*/
|
|
771
|
-
async loadInterfaces() {
|
|
781
|
+
async loadInterfaces(enableCache = true) {
|
|
782
|
+
const logicMap = new Map();
|
|
783
|
+
// 旧接口列表中,可能存在已经被删掉的接口,需要从 vertexsMap 中删除
|
|
784
|
+
this.interfaces.forEach((it) => {
|
|
785
|
+
logicMap.set(it.id, it.logic);
|
|
786
|
+
it.destroy();
|
|
787
|
+
});
|
|
788
|
+
|
|
772
789
|
let interfaces: Array<Interface> = await interfaceService.loadList({
|
|
773
790
|
query: {
|
|
774
791
|
serviceId: this.id,
|
|
792
|
+
enableCache,
|
|
775
793
|
},
|
|
776
794
|
headers: {
|
|
777
795
|
IdeVersion: 2.3,
|
|
778
796
|
},
|
|
779
797
|
});
|
|
780
798
|
|
|
781
|
-
interfaces = interfaces.map((item) =>
|
|
799
|
+
interfaces = interfaces.map((item) => {
|
|
800
|
+
if(logicMap.has(item.id)) {
|
|
801
|
+
item.logic = logicMap.get(item.id);
|
|
802
|
+
logicMap.delete(item.id);
|
|
803
|
+
}
|
|
804
|
+
return Interface.from(item, this);
|
|
805
|
+
});
|
|
806
|
+
// 清理掉已不存在的逻辑
|
|
807
|
+
for(const logic of logicMap.values()) {
|
|
808
|
+
logic.destroy();
|
|
809
|
+
}
|
|
782
810
|
|
|
783
811
|
interfaces.forEach((i) => {
|
|
784
812
|
if (i.serviceType === 'export') {
|
|
@@ -786,6 +814,7 @@ export class MicroService extends Service {
|
|
|
786
814
|
i.logic = logic;
|
|
787
815
|
}
|
|
788
816
|
});
|
|
817
|
+
|
|
789
818
|
this.assign({ interfaces });
|
|
790
819
|
this.mountResolverOnEntity();
|
|
791
820
|
this.mountResolverOnInterface();
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { config, View, Logic } from '.';
|
|
2
|
+
import { BusinessCode } from './enum';
|
|
3
|
+
|
|
4
|
+
export async function refreshInterfaces() {
|
|
5
|
+
await config.defaultApp?.firstMicroService?.loadInterfaces(false);
|
|
6
|
+
config.defaultApp?.firstMicroService?.emit('interfacesChange');
|
|
7
|
+
config.defaultApp?.emit('cache.refreshed');
|
|
8
|
+
config.defaultApp?.emit('cleanDesigners');
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export async function refreshPages() {
|
|
12
|
+
await config.defaultApp?.firstWebService.loadPages(false);
|
|
13
|
+
await config.defaultApp?._loadViewsDetail();
|
|
14
|
+
config.defaultApp?.firstWebService.emit('pageTreeChange');
|
|
15
|
+
config.defaultApp?.emit('cache.refreshed');
|
|
16
|
+
config.defaultApp?.emit('cleanDesigners');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export async function refreshView(view: View) {
|
|
20
|
+
try {
|
|
21
|
+
await view.loadAll(false);
|
|
22
|
+
view.emit('change');
|
|
23
|
+
config.defaultApp?.emit('cache.refreshed');
|
|
24
|
+
config.defaultApp?.emit('cleanDesigners');
|
|
25
|
+
} catch(err: any) {
|
|
26
|
+
const code = err?.code;
|
|
27
|
+
if(code === BusinessCode.ElementNotExist) // 节点不存在
|
|
28
|
+
await refreshPages();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export async function refreshHtml(view: View) {
|
|
34
|
+
try {
|
|
35
|
+
await view.$html?.load();
|
|
36
|
+
view.emit('change');
|
|
37
|
+
config.defaultApp?.emit('cache.refreshed');
|
|
38
|
+
} catch(err: any) {
|
|
39
|
+
const code = err?.code;
|
|
40
|
+
if(code === BusinessCode.ElementNotExist) // 节点不存在
|
|
41
|
+
await refreshView(view);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export async function refreshLogic(logic: Logic) {
|
|
47
|
+
await logic.load(); // logic.load() 会根据后端返回的code, 调用 refreshView, refreshPages 或 refreshInterfaces
|
|
48
|
+
logic.emit('change');
|
|
49
|
+
config.defaultApp?.emit('cache.refreshed');
|
|
50
|
+
}
|
|
@@ -93,6 +93,36 @@ export class Vertex extends EventEmitter {
|
|
|
93
93
|
*/
|
|
94
94
|
@excludedInJSON()
|
|
95
95
|
public expanded: boolean = false;
|
|
96
|
+
/**
|
|
97
|
+
* 节点是否显示
|
|
98
|
+
* 前端 UI 状态
|
|
99
|
+
*/
|
|
100
|
+
@excludedInJSON()
|
|
101
|
+
public hidden: boolean = false;
|
|
102
|
+
/**
|
|
103
|
+
* 页面树节点是否显示
|
|
104
|
+
* 前端 UI 状态
|
|
105
|
+
*/
|
|
106
|
+
@excludedInJSON()
|
|
107
|
+
public pageTreeNodeHidden: boolean = false;
|
|
108
|
+
/**
|
|
109
|
+
* 逻辑树节点是否显示
|
|
110
|
+
* 前端 UI 状态
|
|
111
|
+
*/
|
|
112
|
+
@excludedInJSON()
|
|
113
|
+
public logicTreeNodeHidden: boolean = false;
|
|
114
|
+
/**
|
|
115
|
+
* 数据树节点是否显示
|
|
116
|
+
* 前端 UI 状态
|
|
117
|
+
*/
|
|
118
|
+
@excludedInJSON()
|
|
119
|
+
public dataTreeNodeHidden: boolean = false;
|
|
120
|
+
/**
|
|
121
|
+
* 数据树节点是否展开
|
|
122
|
+
* 前端 UI 状态
|
|
123
|
+
*/
|
|
124
|
+
@excludedInJSON()
|
|
125
|
+
public logicTreeNodeExpanded: boolean = false;
|
|
96
126
|
/**
|
|
97
127
|
* 是否为叶子节点
|
|
98
128
|
* 前端 UI 状态
|
package/src/types/data/Entity.ts
CHANGED
package/src/types/data/Enum.ts
CHANGED
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
} from '..';
|
|
6
6
|
import { interfaceService } from '../../service/data';
|
|
7
7
|
import { findUsageService } from '../../service/common';
|
|
8
|
+
import { catchFn } from '../logic/Logic';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* 接口类
|
|
@@ -199,9 +200,9 @@ export class Interface extends Vertex {
|
|
|
199
200
|
*/
|
|
200
201
|
@action('删除接口')
|
|
201
202
|
async delete(none?: void, actionOptions?: ActionOptions) {
|
|
202
|
-
config.defaultApp?.emit('saving');
|
|
203
|
+
if(this.id) config.defaultApp?.emit('saving');
|
|
203
204
|
|
|
204
|
-
if (this.logic)
|
|
205
|
+
if (this.logic && this.serviceType?.toLowerCase() !== 'export')
|
|
205
206
|
await this.logic.delete();
|
|
206
207
|
|
|
207
208
|
if (this.id) {
|
|
@@ -245,7 +246,7 @@ export class Interface extends Vertex {
|
|
|
245
246
|
operationDesc: actionOptions?.actionDesc || `修改接口"${this.name}"`,
|
|
246
247
|
},
|
|
247
248
|
body,
|
|
248
|
-
});
|
|
249
|
+
}).catch(catchFn(this.logic));
|
|
249
250
|
await then?.();
|
|
250
251
|
await config.defaultApp?.history.load();
|
|
251
252
|
config.defaultApp?.emit('saved');
|
|
@@ -29,7 +29,7 @@ export function genCreateFormTemplate(entity: Entity, nameGroup: NameGroup, sele
|
|
|
29
29
|
const lowerEntityName = utils.firstLowerCase(relationEntity.name);
|
|
30
30
|
formItem += `
|
|
31
31
|
<u-select clearable placeholder="请选择${label}" :data-source="${selectNameGroupMap.get(relationEntity.id).load}"
|
|
32
|
-
text-field="${lowerEntityName}.${displayedProperty.name}" value-field="${lowerEntityName}.${relationProperty.name}" pageable remote-paging v-model="${nameGroup.model}.${property.name}">
|
|
32
|
+
text-field="${lowerEntityName}.${displayedProperty.name}" value-field="${lowerEntityName}.${relationProperty.name}" :pageable="true" :remote-paging="true" v-model="${nameGroup.model}.${property.name}">
|
|
33
33
|
</u-select>
|
|
34
34
|
`;
|
|
35
35
|
} else
|
|
@@ -51,7 +51,7 @@ export function genCreateFormTemplate(entity: Entity, nameGroup: NameGroup, sele
|
|
|
51
51
|
} else if (property.typeKey === '#/basicTypes/DateTime') {
|
|
52
52
|
formItem += `<u-date-time-picker clearable :date.sync="${nameGroup.model}.${property.name}" placeholder="请输入${label}"></u-date-time-picker>`;
|
|
53
53
|
} else if (dataTypesMap[property.typeKey].type === 'enum') {
|
|
54
|
-
formItem += genEnumSelectBlock(dataTypesMap[property.typeKey] as Enum, `${nameGroup.model}.${property.name}`, '', `请选择${label}
|
|
54
|
+
formItem += genEnumSelectBlock(dataTypesMap[property.typeKey] as Enum, `${nameGroup.model}.${property.name}`, '', `请选择${label}`, true);
|
|
55
55
|
} else {
|
|
56
56
|
formItem += `<u-input v-model="${nameGroup.model}.${property.name}" placeholder="请输入${label}"></u-input>`;
|
|
57
57
|
}
|
|
@@ -94,7 +94,7 @@ export function genH5CreateFormTemplate(entity: Entity, nameGroup: NameGroup, se
|
|
|
94
94
|
<template #input><van-cascader title="请选择${label}" placeholder="请选择${label}"
|
|
95
95
|
v-model="${nameGroup.model}.${property.name}" :data-source="${selectNameGroupMap.get(relationEntity.id).load}"
|
|
96
96
|
text-field="${lowerEntityName}.${displayedProperty.name}" value-field="${lowerEntityName}.${relationProperty.name}"
|
|
97
|
-
pageable remote-paging></van-cascader></template>
|
|
97
|
+
:pageable="true" :remote-paging="true"></van-cascader></template>
|
|
98
98
|
`;
|
|
99
99
|
} else
|
|
100
100
|
return '';
|
|
@@ -112,9 +112,9 @@ export function genH5CreateFormTemplate(entity: Entity, nameGroup: NameGroup, se
|
|
|
112
112
|
} else if (property.typeKey === '#/basicTypes/Date') {
|
|
113
113
|
formItem += `<template #input><van-calendar v-model="${nameGroup.model}.${property.name}" title="请输入${property.label || property.name}"></van-calendar></template>`;
|
|
114
114
|
} else if (property.typeKey === '#/basicTypes/Time') {
|
|
115
|
-
formItem += `<template #input><van-datetime-picker type="time" v-model="${nameGroup.model}.${property.name}" title="
|
|
115
|
+
formItem += `<template #input><van-datetime-picker type="time" v-model="${nameGroup.model}.${property.name}" title="请选择${property.label || property.name}" label-field=""></van-datetime-picker></template>`;
|
|
116
116
|
} else if (property.typeKey === '#/basicTypes/DateTime') {
|
|
117
|
-
formItem += `<template #input><van-datetime-picker type="datetime" v-model="${nameGroup.model}.${property.name}" title="
|
|
117
|
+
formItem += `<template #input><van-datetime-picker type="datetime" v-model="${nameGroup.model}.${property.name}" title="请选择${property.label || property.name}" label-field=""></van-datetime-picker></template>`;
|
|
118
118
|
} else if (dataTypesMap[property.typeKey].type === 'enum') {
|
|
119
119
|
formItem += '<template #input>' + genEnumSelectBlock(dataTypesMap[property.typeKey] as Enum, `${nameGroup.model}.${property.name}`, '', `请选择${property.label || property.name}`) + '</template>';
|
|
120
120
|
} else {
|
|
@@ -25,7 +25,7 @@ function genFilterTemplate(entity: Entity, nameGroup: NameGroup, selectNameGroup
|
|
|
25
25
|
const lowerEntityName = utils.firstLowerCase(relationEntity.name);
|
|
26
26
|
formItem += `
|
|
27
27
|
<u-select clearable placeholder="请选择${label}" :data-source="${selectNameGroupMap.get(relationEntity.id).load}"
|
|
28
|
-
text-field="${lowerEntityName}.${displayedProperty.name}" value-field="${lowerEntityName}.${relationProperty.name}" pageable remote-paging v-model="filter.${property.name}">
|
|
28
|
+
text-field="${lowerEntityName}.${displayedProperty.name}" value-field="${lowerEntityName}.${relationProperty.name}" :pageable="true" :remote-paging="true" v-model="filter.${property.name}">
|
|
29
29
|
</u-select>
|
|
30
30
|
`;
|
|
31
31
|
} else
|
|
@@ -111,7 +111,7 @@ function genSaveModalTemplate(entity: Entity, nameGroup: NameGroup, selectNameGr
|
|
|
111
111
|
const lowerEntityName = utils.firstLowerCase(relationEntity.name);
|
|
112
112
|
formItem += `
|
|
113
113
|
<u-select clearable placeholder="请选择${label}" :data-source="${selectNameGroupMap.get(relationEntity.id).load}"
|
|
114
|
-
text-field="${lowerEntityName}.${displayedProperty.name}" value-field="${lowerEntityName}.${relationProperty.name}" pageable remote-paging v-model="input.${property.name}">
|
|
114
|
+
text-field="${lowerEntityName}.${displayedProperty.name}" value-field="${lowerEntityName}.${relationProperty.name}" :pageable="true" :remote-paging="true" v-model="input.${property.name}">
|
|
115
115
|
</u-select>
|
|
116
116
|
`;
|
|
117
117
|
} else
|
|
@@ -137,7 +137,7 @@ function genSaveModalTemplate(entity: Entity, nameGroup: NameGroup, selectNameGr
|
|
|
137
137
|
} else if (property.typeKey === '#/basicTypes/DateTime') {
|
|
138
138
|
formItem += `<u-date-time-picker clearable :date.sync="input.${property.name}" placeholder="请输入${label}"></u-date-time-picker>`;
|
|
139
139
|
} else if (dataTypesMap[property.typeKey].type === 'enum') {
|
|
140
|
-
formItem += genEnumSelectBlock(dataTypesMap[property.typeKey] as Enum, `input.${property.name}`, '', `请选择${label}
|
|
140
|
+
formItem += genEnumSelectBlock(dataTypesMap[property.typeKey] as Enum, `input.${property.name}`, '', `请选择${label}`, true);
|
|
141
141
|
} else {
|
|
142
142
|
formItem += `<u-input v-model="input.${property.name}" placeholder="请输入${label}"></u-input>`;
|
|
143
143
|
}
|
|
@@ -7,14 +7,14 @@ import { config, Enum } from '../..';
|
|
|
7
7
|
* @param size 尺寸属性的内容
|
|
8
8
|
* @param placeholder 占位符的内容
|
|
9
9
|
*/
|
|
10
|
-
export function genEnumSelectBlock(enumeration: Enum, vModel?: string, size?: string, placeholder?: string) {
|
|
10
|
+
export function genEnumSelectBlock(enumeration: Enum, vModel?: string, size?: string, placeholder?: string, hiddenAll?: boolean) {
|
|
11
11
|
if (config.scope === 'h5')
|
|
12
12
|
return `<van-cascader ${vModel ? ` v-model="${vModel}"` : ''}${placeholder ? ` title="${placeholder}" placeholder="${placeholder}"` : ''}
|
|
13
13
|
:data-source="ID_ENUM_LIST_${enumeration.id}"></van-cascader>`;
|
|
14
14
|
|
|
15
15
|
return `<u-select clearable${vModel ? ` v-model="${vModel}"` : ''}${size ? ` size="${size}"` : ''}${placeholder ? ` placeholder="${placeholder}"` : ''}
|
|
16
16
|
:data-source="ID_ENUM_LIST_${enumeration.id}">
|
|
17
|
-
<u-select-item text="全部"></u-select-item>
|
|
17
|
+
${hiddenAll ? '' : '<u-select-item text="全部"></u-select-item>'}
|
|
18
18
|
</u-select>`;
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -31,8 +31,19 @@ export function genGridViewCardTemplate(property: EntityProperty) {
|
|
|
31
31
|
} else
|
|
32
32
|
expression = getExpression(property, `scope.item.${lowerEntityName}.${property.name}`);
|
|
33
33
|
|
|
34
|
+
const getText = (property: EntityProperty) => {
|
|
35
|
+
if (property.typeKey === '#/basicTypes/Boolean') {
|
|
36
|
+
return `
|
|
37
|
+
<u-text v-if="${expression}" text="是"></u-text>
|
|
38
|
+
<u-text v-if="!${expression}" text="否"></u-text>
|
|
39
|
+
`;
|
|
40
|
+
} else {
|
|
41
|
+
return `<u-text :text="${expression}"></u-text>`;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
34
45
|
return `<u-linear-layout gap="small">
|
|
35
|
-
<u-text text="${title}:"></u-text
|
|
46
|
+
<u-text text="${title}:"></u-text>${getText(property)}
|
|
36
47
|
</u-linear-layout>`;
|
|
37
48
|
}
|
|
38
49
|
|
|
@@ -11,7 +11,7 @@ export function genListViewTemplate(property: EntityProperty, nameGroup: NameGro
|
|
|
11
11
|
|
|
12
12
|
return `<u-list-view ref="listView" :data-source="${nameGroup.load}" data-schema="${nameGroup.structure}"
|
|
13
13
|
text-field="${nameGroup.lowerEntity}.${property.name}"
|
|
14
|
-
value-field="${nameGroup.lowerEntity}.id" pageable remote-paging>
|
|
14
|
+
value-field="${nameGroup.lowerEntity}.id" :pageable="true" :remote-paging="true">
|
|
15
15
|
<template #item="scope">
|
|
16
16
|
<u-linear-layout>
|
|
17
17
|
<u-text :text="${expression}"></u-text>
|
|
@@ -25,7 +25,7 @@ export function genH5ListViewTemplate(property: EntityProperty, nameGroup: NameG
|
|
|
25
25
|
|
|
26
26
|
return `<van-list-view ref="listView" :data-source="${nameGroup.load}" data-schema="${nameGroup.structure}"
|
|
27
27
|
text-field="${nameGroup.lowerEntity}.${property.name}"
|
|
28
|
-
value-field="${nameGroup.lowerEntity}.id" pageable="auto-more" remote-paging>
|
|
28
|
+
value-field="${nameGroup.lowerEntity}.id" pageable="auto-more" :remote-paging="true">
|
|
29
29
|
<template #item="scope">
|
|
30
30
|
<van-cell :value="${expression}" isLink></van-cell>
|
|
31
31
|
</template>
|
|
@@ -8,14 +8,14 @@ import {
|
|
|
8
8
|
export function genSelectTemplate(property: EntityProperty, nameGroup: NameGroup) {
|
|
9
9
|
return `<u-select clearable placeholder="请选择" ref="select" :data-source="${nameGroup.load}" data-schema="${nameGroup.structure}"
|
|
10
10
|
text-field="${nameGroup.lowerEntity}.${property.name}"
|
|
11
|
-
value-field="${nameGroup.lowerEntity}.id" pageable remote-paging>
|
|
11
|
+
value-field="${nameGroup.lowerEntity}.id" :pageable="true" :remote-paging="true">
|
|
12
12
|
</u-select>`;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
export function genH5SelectTemplate(property: EntityProperty, nameGroup: NameGroup) {
|
|
16
16
|
return `<van-cascader title="请选择" placeholder="请选择" ref="select" :data-source="${nameGroup.load}" data-schema="${nameGroup.structure}"
|
|
17
17
|
text-field="${nameGroup.lowerEntity}.${property.name}"
|
|
18
|
-
value-field="${nameGroup.lowerEntity}.id" pageable remote-paging>
|
|
18
|
+
value-field="${nameGroup.lowerEntity}.id" :pageable="true" :remote-paging="true">
|
|
19
19
|
</van-cascader>`;
|
|
20
20
|
}
|
|
21
21
|
|
|
@@ -34,10 +34,21 @@ export function genTableColumnTemplate(property: EntityProperty) {
|
|
|
34
34
|
} else
|
|
35
35
|
expression = getExpression(property, `scope.item.${lowerEntityName}.${property.name}`);
|
|
36
36
|
|
|
37
|
+
const getText = (property: EntityProperty) => {
|
|
38
|
+
if (property.typeKey === '#/basicTypes/Boolean') {
|
|
39
|
+
return `
|
|
40
|
+
<u-text v-if="${expression}" text="是"></u-text>
|
|
41
|
+
<u-text v-if="!${expression}" text="否"></u-text>
|
|
42
|
+
`;
|
|
43
|
+
} else {
|
|
44
|
+
return `<u-text :text="${expression}"></u-text>`;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
37
48
|
return `<u-table-view-column title="${title}">
|
|
38
49
|
<template #cell="scope">
|
|
39
50
|
<u-linear-layout gap="small">
|
|
40
|
-
|
|
51
|
+
${getText(property)}
|
|
41
52
|
</u-linear-layout>
|
|
42
53
|
</template>
|
|
43
54
|
</u-table-view-column>`;
|
|
@@ -54,7 +65,7 @@ export function genTableTemplate(entity: Entity, nameGroup: NameGroup) {
|
|
|
54
65
|
|
|
55
66
|
return `<u-table-view ref="tableView" :data-source="${nameGroup.load}" data-schema="${nameGroup.structure}"
|
|
56
67
|
value-field="${nameGroup.lowerEntity}.id"
|
|
57
|
-
pageable remote-paging>
|
|
68
|
+
:pageable="true" :remote-paging="true" :show-sizer="true">
|
|
58
69
|
<u-table-view-column type="index" width="60" title="序号"></u-table-view-column>
|
|
59
70
|
|
|
60
71
|
${propertyList.map((property) => genTableColumnTemplate(property) + '\n').join('')}
|
|
@@ -281,7 +292,7 @@ export function genTableColumnBlock(property: EntityProperty, view: View) {
|
|
|
281
292
|
|
|
282
293
|
return `
|
|
283
294
|
<template>
|
|
284
|
-
<u-table-view ref="tableView" :data-source="${nameGroup.load}" pageable remote-paging data-schema="${nameGroup.structure}">
|
|
295
|
+
<u-table-view ref="tableView" :data-source="${nameGroup.load}" :pageable="true" :remote-paging="true" :show-sizer="true" data-schema="${nameGroup.structure}">
|
|
285
296
|
${propertyList.map((property) => genTableColumnTemplate(property) + '\n').join('')}
|
|
286
297
|
</u-table-view>
|
|
287
298
|
</template>
|
|
@@ -40,7 +40,7 @@ export function genUpdateFormTemplate(
|
|
|
40
40
|
const lowerEntityName = utils.firstLowerCase(relationEntity.name);
|
|
41
41
|
formItem += `
|
|
42
42
|
<u-select clearable placeholder="请选择${label}" :data-source="${selectNameGroupMap.get(relationEntity.id).load}"
|
|
43
|
-
text-field="${lowerEntityName}.${displayedProperty.name}" value-field="${lowerEntityName}.${relationProperty.name}" pageable remote-paging v-model="${nameGroup.model}.${property.name}">
|
|
43
|
+
text-field="${lowerEntityName}.${displayedProperty.name}" value-field="${lowerEntityName}.${relationProperty.name}" :pageable="true" :remote-paging="true" v-model="${nameGroup.model}.${property.name}">
|
|
44
44
|
</u-select>
|
|
45
45
|
`;
|
|
46
46
|
} else
|
|
@@ -62,7 +62,7 @@ export function genUpdateFormTemplate(
|
|
|
62
62
|
} else if (property.typeKey === '#/basicTypes/DateTime') {
|
|
63
63
|
formItem += `<u-date-time-picker clearable :date.sync="${nameGroup.model}.${property.name}" placeholder="请输入${label}"></u-date-time-picker>`;
|
|
64
64
|
} else if (dataTypesMap[property.typeKey].type === 'enum') {
|
|
65
|
-
formItem += genEnumSelectBlock(dataTypesMap[property.typeKey] as Enum, `${nameGroup.model}.${property.name}`, '', `请选择${label}
|
|
65
|
+
formItem += genEnumSelectBlock(dataTypesMap[property.typeKey] as Enum, `${nameGroup.model}.${property.name}`, '', `请选择${label}`, true);
|
|
66
66
|
} else {
|
|
67
67
|
formItem += `<u-input v-model="${nameGroup.model}.${property.name}" placeholder="请输入${label}"></u-input>`;
|
|
68
68
|
}
|
|
@@ -105,7 +105,7 @@ export function genH5UpdateFormTemplate(entity: Entity, nameGroup: NameGroup, se
|
|
|
105
105
|
<template #input><van-cascader title="请选择${label}" placeholder="请选择${label}"
|
|
106
106
|
v-model="${nameGroup.model}.${property.name}" :data-source="${selectNameGroupMap.get(relationEntity.id).load}"
|
|
107
107
|
text-field="${lowerEntityName}.${displayedProperty.name}" value-field="${lowerEntityName}.${relationProperty.name}"
|
|
108
|
-
pageable remote-paging></van-cascader></template>
|
|
108
|
+
:pageable="true" :remote-paging="true"></van-cascader></template>
|
|
109
109
|
`;
|
|
110
110
|
} else
|
|
111
111
|
return '';
|
|
@@ -125,9 +125,9 @@ export function genH5UpdateFormTemplate(entity: Entity, nameGroup: NameGroup, se
|
|
|
125
125
|
} else if (property.typeKey === '#/basicTypes/Date') {
|
|
126
126
|
formItem += `<template #input><van-calendar clearable :date.sync="${nameGroup.model}.${property.name}" placeholder="请输入${label}"></van-calendar></template>`;
|
|
127
127
|
} else if (property.typeKey === '#/basicTypes/Time') {
|
|
128
|
-
formItem += `<template #input><van-datetime-picker type="time" v-model="${nameGroup.model}.${property.name}" title="
|
|
128
|
+
formItem += `<template #input><van-datetime-picker type="time" v-model="${nameGroup.model}.${property.name}" title="请选择${label}" label-field=""></van-datetime-picker></template>`;
|
|
129
129
|
} else if (property.typeKey === '#/basicTypes/DateTime') {
|
|
130
|
-
formItem += `<template #input><van-datetime-picker type="datetime" v-model="${nameGroup.model}.${property.name}" title="
|
|
130
|
+
formItem += `<template #input><van-datetime-picker type="datetime" v-model="${nameGroup.model}.${property.name}" title="请选择${label}" label-field=""></van-datetime-picker></template>`;
|
|
131
131
|
} else if (dataTypesMap[property.typeKey].type === 'enum') {
|
|
132
132
|
formItem += '<template #input>' + genEnumSelectBlock(dataTypesMap[property.typeKey] as Enum, `${nameGroup.model}.${property.name}`, '', `请选择${label}`) + '</template>';
|
|
133
133
|
} else {
|