@lcap/nasl 0.3.9 → 0.3.10-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/out/service/create/errHandles.js +7 -2
  2. package/out/service/create/errHandles.js.map +1 -1
  3. package/out/service/debugger/debugger.d.ts +3 -0
  4. package/out/service/debugger/debugger.js +95 -0
  5. package/out/service/debugger/debugger.js.map +1 -0
  6. package/out/service/logic/logic.d.ts +27 -0
  7. package/out/service/logic/logic.js +20 -0
  8. package/out/service/logic/logic.js.map +1 -1
  9. package/out/service/page/element.d.ts +9 -0
  10. package/out/service/page/element.js +6 -0
  11. package/out/service/page/element.js.map +1 -1
  12. package/out/service/permission/api.d.ts +57 -0
  13. package/out/service/permission/api.js +41 -0
  14. package/out/service/permission/api.js.map +1 -0
  15. package/out/service/permission/index.d.ts +2 -0
  16. package/out/service/permission/index.js +17 -0
  17. package/out/service/permission/index.js.map +1 -0
  18. package/out/service/webFile/index.js +5 -0
  19. package/out/service/webFile/index.js.map +1 -1
  20. package/out/types/app/App.d.ts +4 -1
  21. package/out/types/app/App.js +24 -0
  22. package/out/types/app/App.js.map +1 -1
  23. package/out/types/app/Service.d.ts +2 -2
  24. package/out/types/app/Service.js +28 -3
  25. package/out/types/app/Service.js.map +1 -1
  26. package/out/types/cache.d.ts +6 -0
  27. package/out/types/cache.js +54 -0
  28. package/out/types/cache.js.map +1 -0
  29. package/out/types/common/Vertex.d.ts +25 -0
  30. package/out/types/common/Vertex.js +40 -0
  31. package/out/types/common/Vertex.js.map +1 -1
  32. package/out/types/data/Entity.js +1 -0
  33. package/out/types/data/Entity.js.map +1 -1
  34. package/out/types/data/Enum.d.ts +5 -0
  35. package/out/types/data/Enum.js +5 -0
  36. package/out/types/data/Enum.js.map +1 -1
  37. package/out/types/data/Interface.js +5 -3
  38. package/out/types/data/Interface.js.map +1 -1
  39. package/out/types/data/genBlock/genCreateBlock.js +5 -5
  40. package/out/types/data/genBlock/genCreateBlock.js.map +1 -1
  41. package/out/types/data/genBlock/genCurdBlock.js +3 -3
  42. package/out/types/data/genBlock/genCurdBlock.js.map +1 -1
  43. package/out/types/data/genBlock/genEnumSelectBlock.d.ts +1 -1
  44. package/out/types/data/genBlock/genEnumSelectBlock.js +2 -2
  45. package/out/types/data/genBlock/genEnumSelectBlock.js.map +1 -1
  46. package/out/types/data/genBlock/genGridViewBlock.js +12 -1
  47. package/out/types/data/genBlock/genGridViewBlock.js.map +1 -1
  48. package/out/types/data/genBlock/genListViewBlock.js +2 -2
  49. package/out/types/data/genBlock/genSelectBlock.js +2 -2
  50. package/out/types/data/genBlock/genTableBlock.js +14 -3
  51. package/out/types/data/genBlock/genTableBlock.js.map +1 -1
  52. package/out/types/data/genBlock/genUpdateBlock.js +5 -5
  53. package/out/types/data/genBlock/genUpdateBlock.js.map +1 -1
  54. package/out/types/data/systemTypes.js +47 -0
  55. package/out/types/data/systemTypes.js.map +1 -1
  56. package/out/types/enum.d.ts +6 -0
  57. package/out/types/enum.js +11 -0
  58. package/out/types/enum.js.map +1 -0
  59. package/out/types/generator/hotReload.d.ts +2 -0
  60. package/out/types/generator/hotReload.js +12 -1
  61. package/out/types/generator/hotReload.js.map +1 -1
  62. package/out/types/index.d.ts +7 -1
  63. package/out/types/index.js +11 -2
  64. package/out/types/index.js.map +1 -1
  65. package/out/types/logic/BreakPoint.d.ts +42 -0
  66. package/out/types/logic/BreakPoint.js +155 -0
  67. package/out/types/logic/BreakPoint.js.map +1 -0
  68. package/out/types/logic/Debugger.d.ts +156 -0
  69. package/out/types/logic/Debugger.js +912 -0
  70. package/out/types/logic/Debugger.js.map +1 -0
  71. package/out/types/logic/Logic.d.ts +40 -0
  72. package/out/types/logic/Logic.js +130 -31
  73. package/out/types/logic/Logic.js.map +1 -1
  74. package/out/types/logic/LogicItem.d.ts +21 -1
  75. package/out/types/logic/LogicItem.js +227 -24
  76. package/out/types/logic/LogicItem.js.map +1 -1
  77. package/out/types/logic/Param.d.ts +1 -0
  78. package/out/types/logic/Param.js +38 -20
  79. package/out/types/logic/Param.js.map +1 -1
  80. package/out/types/logic/Return.js +14 -19
  81. package/out/types/logic/Return.js.map +1 -1
  82. package/out/types/logic/Variable.js +14 -19
  83. package/out/types/logic/Variable.js.map +1 -1
  84. package/out/types/logic/translator.js +0 -2
  85. package/out/types/logic/translator.js.map +1 -1
  86. package/out/types/nuims/Nuims.d.ts +1 -1
  87. package/out/types/nuims/Nuims.js +11 -4
  88. package/out/types/nuims/Nuims.js.map +1 -1
  89. package/out/types/page/Element.d.ts +5 -0
  90. package/out/types/page/Element.js +114 -130
  91. package/out/types/page/Element.js.map +1 -1
  92. package/out/types/page/Event.js.map +1 -1
  93. package/out/types/page/Page.d.ts +1 -0
  94. package/out/types/page/Page.js +59 -27
  95. package/out/types/page/Page.js.map +1 -1
  96. package/out/types/page/View.d.ts +17 -3
  97. package/out/types/page/View.js +53 -37
  98. package/out/types/page/View.js.map +1 -1
  99. package/out/types/page/ViewParam.d.ts +1 -0
  100. package/out/types/page/ViewParam.js +23 -4
  101. package/out/types/page/ViewParam.js.map +1 -1
  102. package/out/types/page/ViewVariable.js +13 -18
  103. package/out/types/page/ViewVariable.js.map +1 -1
  104. package/out/types/permission/Permission.d.ts +41 -0
  105. package/out/types/permission/Permission.js +122 -0
  106. package/out/types/permission/Permission.js.map +1 -0
  107. package/package.json +2 -2
  108. package/src/service/create/errHandles.js +6 -2
  109. package/src/service/debugger/debugger.js +90 -0
  110. package/src/service/developPermission/api.js +37 -0
  111. package/src/service/developPermission/index.js +13 -0
  112. package/src/service/logic/logic.js +20 -0
  113. package/src/service/page/element.js +6 -0
  114. package/src/service/permission/api.js +38 -0
  115. package/src/service/permission/index.js +13 -0
  116. package/src/service/webFile/index.js +6 -1
  117. package/src/types/app/App.ts +27 -1
  118. package/src/types/app/Service.ts +32 -3
  119. package/src/types/cache.ts +50 -0
  120. package/src/types/common/Vertex.ts +30 -0
  121. package/src/types/data/Entity.ts +1 -0
  122. package/src/types/data/Enum.ts +5 -0
  123. package/src/types/data/Interface.ts +4 -3
  124. package/src/types/data/genBlock/genCreateBlock.ts +5 -5
  125. package/src/types/data/genBlock/genCurdBlock.ts +3 -3
  126. package/src/types/data/genBlock/genEnumSelectBlock.ts +2 -2
  127. package/src/types/data/genBlock/genGridViewBlock.ts +12 -1
  128. package/src/types/data/genBlock/genListViewBlock.ts +2 -2
  129. package/src/types/data/genBlock/genSelectBlock.ts +2 -2
  130. package/src/types/data/genBlock/genTableBlock.ts +14 -3
  131. package/src/types/data/genBlock/genUpdateBlock.ts +5 -5
  132. package/src/types/data/systemTypes.ts +47 -0
  133. package/src/types/enum.ts +6 -0
  134. package/src/types/generator/hotReload.ts +10 -0
  135. package/src/types/index.ts +7 -1
  136. package/src/types/logic/BreakPoint.ts +200 -0
  137. package/src/types/logic/Debugger.ts +1140 -0
  138. package/src/types/logic/Logic.ts +133 -28
  139. package/src/types/logic/LogicItem.ts +250 -28
  140. package/src/types/logic/Param.ts +26 -8
  141. package/src/types/logic/Return.ts +4 -9
  142. package/src/types/logic/Variable.ts +4 -8
  143. package/src/types/logic/translator.d.ts +16 -0
  144. package/src/types/logic/translator.js +144 -88
  145. package/src/types/logic/translator_backup.js +5 -16
  146. package/src/types/nuims/Nuims.ts +11 -5
  147. package/src/types/page/Element.ts +63 -75
  148. package/src/types/page/Event.ts +0 -3
  149. package/src/types/page/Page.ts +73 -40
  150. package/src/types/page/View.ts +45 -18
  151. package/src/types/page/ViewParam.ts +22 -3
  152. package/src/types/page/ViewVariable.ts +4 -8
  153. package/src/types/permission/Permission.ts +112 -0
  154. package/tsconfig.json +1 -1
@@ -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) => Interface.from(item, this));
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 状态
@@ -27,6 +27,7 @@ export const systemProperty: { [name: string]: any, } = {
27
27
  type: 'integer',
28
28
  format: 'long',
29
29
  editable: false,
30
+ required: true,
30
31
  display: {
31
32
  inTable: false,
32
33
  inFilter: false,
@@ -66,6 +66,11 @@ export class Enum extends Vertex {
66
66
  */
67
67
  @immutable()
68
68
  public readonly service: Service = undefined;
69
+ /**
70
+ * 节点是否为叶子节点
71
+ * 前端 UI 状态
72
+ */
73
+ public isLeaf = true;
69
74
  /**
70
75
  * 父节点
71
76
  */
@@ -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="请输入${property.label || property.name}"></van-datetime-picker></template>`;
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="请输入${property.label || property.name}"></van-datetime-picker></template>`;
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><u-text :text="${expression}"></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
- <u-text :text="${expression}"></u-text>
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="请输入${label}"></van-datetime-picker></template>`;
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="请输入${label}"></van-datetime-picker></template>`;
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 {
@@ -23,6 +23,7 @@ export const systemTypeList = [
23
23
  { kind: 'systemType', text: 'UploadEvent', value: '#/systemTypes/UploadEvent' },
24
24
  { kind: 'systemType', text: 'UploadErrorEvent', value: '#/systemTypes/UploadErrorEvent' },
25
25
  { kind: 'systemType', text: 'SortEvent', value: '#/systemTypes/SortEvent' },
26
+ { kind: 'systemType', text: 'PoiInfo', value: '#/systemTypes/PoiInfo' },
26
27
  ];
27
28
 
28
29
  export const systemTypeMap: { [name: string]: ObjectSchema } = {
@@ -1512,4 +1513,50 @@ export const systemTypeMap: { [name: string]: ObjectSchema } = {
1512
1513
  },
1513
1514
  ],
1514
1515
  },
1516
+ '#/systemTypes/PoiInfo': {
1517
+ name: 'PoiInfo',
1518
+ type: 'object',
1519
+ propertyList: [
1520
+ {
1521
+ typeKey: '#/basicTypes/String',
1522
+ type: 'string',
1523
+ format: '',
1524
+ name: 'source',
1525
+ description: '信息来源',
1526
+ isLeaf: true,
1527
+ },
1528
+ {
1529
+ typeKey: '#/basicTypes/String',
1530
+ type: 'string',
1531
+ format: '',
1532
+ name: 'id',
1533
+ description: 'POI点的id',
1534
+ isLeaf: true,
1535
+ },
1536
+ {
1537
+ typeKey: '#/basicTypes/String',
1538
+ type: 'string',
1539
+ format: '',
1540
+ name: 'name',
1541
+ description: '名称',
1542
+ isLeaf: true,
1543
+ },
1544
+ {
1545
+ typeKey: '#/basicTypes/String',
1546
+ type: 'string',
1547
+ format: '',
1548
+ name: 'location',
1549
+ description: '经纬度',
1550
+ isLeaf: true,
1551
+ },
1552
+ {
1553
+ typeKey: '#/basicTypes/String',
1554
+ type: 'string',
1555
+ format: '',
1556
+ name: 'address',
1557
+ description: '地址',
1558
+ isLeaf: true,
1559
+ },
1560
+ ],
1561
+ },
1515
1562
  };
@@ -0,0 +1,6 @@
1
+ export enum BusinessCode {
2
+ ElementExist = 402002,
3
+ ElementNotExist = 402004,
4
+ ParentElementNotExist = 402006,
5
+ HasReferenced = 402005,
6
+ }
@@ -1,11 +1,21 @@
1
1
  import webFileService from '../../service/webFile';
2
2
 
3
+ let saveLastModifiedEnabled = true;
4
+ export function enableSaveLastModified() {
5
+ saveLastModifiedEnabled = true;
6
+ }
7
+ export function disableSaveLastModified() {
8
+ saveLastModifiedEnabled = false;
9
+ }
10
+
3
11
  /**
4
12
  * 生成上次修改的缓存
5
13
  * @param serviceId
6
14
  * @param path
7
15
  */
8
16
  export function saveLastModified(serviceId: string, path?: string) {
17
+ if(!saveLastModifiedEnabled) return;
18
+
9
19
  return webFileService.saveFile({
10
20
  body: {
11
21
  serviceId,
@@ -20,6 +20,8 @@ export * from './data/dataTypes';
20
20
  export * from './data/dataTypeUtils';
21
21
  export { Interface } from './data/Interface';
22
22
  export { Category } from './data/GlobalLogicNode';
23
+ export { default as BreakPoint, BreakpointMeta } from './logic/BreakPoint';
24
+ export { Debugger } from './logic/Debugger';
23
25
  export { Logic } from './logic/Logic';
24
26
  export { LogicItem, LogicNode, ExpressionNode, evaluate } from './logic/LogicItem';
25
27
  export { BaseVariable, updateVariablesChildrenSchema, updateAllVariablesChildrenSchema } from './logic/BaseVariable';
@@ -28,7 +30,7 @@ export { Variable } from './logic/Variable';
28
30
  export { Return } from './logic/Return';
29
31
 
30
32
  export { Page } from './page/Page';
31
- export { View } from './page/View';
33
+ export { View, FrontEndsourceMap } from './page/View';
32
34
  export { ViewParam } from './page/ViewParam';
33
35
  export { ViewVariable } from './page/ViewVariable';
34
36
  export { Lifecycle } from './page/Lifecycle';
@@ -57,6 +59,7 @@ export { default as login } from './login';
57
59
  export * as utils from './utils';
58
60
  export * as genBlock from './data/genBlock';
59
61
  export * as generator from './generator';
62
+ export { Permission } from './permission/Permission';
60
63
 
61
64
  /**
62
65
  * 层级枚举
@@ -75,6 +78,7 @@ export enum LEVEL_ENUM {
75
78
 
76
79
  logic = 'logic',
77
80
  param = 'param',
81
+ timer = 'timer',
78
82
  variable = 'variable',
79
83
  return = 'return',
80
84
  interface = 'interface',
@@ -104,6 +108,7 @@ export enum LEVEL_ENUM {
104
108
  processComponent = 'processComponent',
105
109
  processParam = 'processParam',
106
110
  processReturn = 'processReturn',
111
+ processTimer = 'processTimer',
107
112
  processProperty = 'processProperty',
108
113
  processComponentReturn = 'processComponentReturn',
109
114
  processComponentVariable = 'processComponentVariable',
@@ -121,6 +126,7 @@ export const LEVEL_NAME_MAP = {
121
126
 
122
127
  logic: '逻辑',
123
128
  param: '输入参数',
129
+ timer: '定时任务',
124
130
  variable: '局部变量',
125
131
  return: '输出参数',
126
132
  interface: '接口',