@ibiz-template/runtime 0.5.3-beta.1 → 0.5.3-beta.11

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 (229) hide show
  1. package/dist/index.esm.js +1870 -553
  2. package/dist/index.system.min.js +1 -1
  3. package/out/app-hub.d.ts +12 -2
  4. package/out/app-hub.d.ts.map +1 -1
  5. package/out/app-hub.js +22 -2
  6. package/out/application.js +1 -1
  7. package/out/command/app/open-app-view/open-app-view.d.ts.map +1 -1
  8. package/out/command/app/open-app-view/open-app-view.js +8 -1
  9. package/out/controller/common/editor/editor.controller.d.ts +24 -0
  10. package/out/controller/common/editor/editor.controller.d.ts.map +1 -1
  11. package/out/controller/common/editor/editor.controller.js +50 -0
  12. package/out/controller/common/view/view.controller.d.ts.map +1 -1
  13. package/out/controller/common/view/view.controller.js +5 -2
  14. package/out/controller/constant/control/index.d.ts +1 -0
  15. package/out/controller/constant/control/index.d.ts.map +1 -1
  16. package/out/controller/constant/control/index.js +1 -0
  17. package/out/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.d.ts +5 -0
  18. package/out/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.d.ts.map +1 -0
  19. package/out/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.js +6 -0
  20. package/out/controller/control/chart/chart.controller.js +1 -1
  21. package/out/controller/control/form/edit-form/edit-form.controller.js +1 -1
  22. package/out/controller/control/form/form/form.controller.d.ts.map +1 -1
  23. package/out/controller/control/form/form/form.controller.js +4 -1
  24. package/out/controller/control/form/form-detail/form-detail/form-detail.controller.d.ts.map +1 -1
  25. package/out/controller/control/form/form-detail/form-detail/form-detail.controller.js +4 -0
  26. package/out/controller/control/form/form-detail/form-tab-page/form-tab-page.controller.d.ts +8 -0
  27. package/out/controller/control/form/form-detail/form-tab-page/form-tab-page.controller.d.ts.map +1 -1
  28. package/out/controller/control/form/form-detail/form-tab-page/form-tab-page.controller.js +10 -0
  29. package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.controller.d.ts +8 -0
  30. package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.controller.d.ts.map +1 -1
  31. package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.controller.js +15 -0
  32. package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.state.d.ts +7 -0
  33. package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.state.d.ts.map +1 -1
  34. package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.state.js +10 -0
  35. package/out/controller/control/grid/grid/grid.service.d.ts.map +1 -1
  36. package/out/controller/control/grid/grid/grid.service.js +1 -10
  37. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts +7 -0
  38. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts.map +1 -1
  39. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js +11 -2
  40. package/out/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.d.ts +0 -7
  41. package/out/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.d.ts.map +1 -1
  42. package/out/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.js +0 -9
  43. package/out/controller/control/tree/tree.controller.d.ts +17 -0
  44. package/out/controller/control/tree/tree.controller.d.ts.map +1 -1
  45. package/out/controller/control/tree/tree.controller.js +22 -0
  46. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.d.ts +1 -0
  47. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.d.ts.map +1 -1
  48. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.js +1 -0
  49. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.d.ts +10 -0
  50. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.d.ts.map +1 -1
  51. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.js +12 -0
  52. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.d.ts +34 -0
  53. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.d.ts.map +1 -1
  54. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.js +68 -0
  55. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.d.ts +205 -0
  56. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.d.ts.map +1 -0
  57. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.js +345 -0
  58. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.d.ts +3 -0
  59. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.d.ts.map +1 -1
  60. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.js +14 -1
  61. package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.d.ts +16 -8
  62. package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.d.ts.map +1 -1
  63. package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.js +26 -12
  64. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts +59 -0
  65. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts.map +1 -1
  66. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.js +240 -1
  67. package/out/controller/utils/jsonschema/entity.d.ts.map +1 -1
  68. package/out/controller/utils/jsonschema/entity.js +4 -1
  69. package/out/de-logic/utils/handle-src-val.d.ts +15 -0
  70. package/out/de-logic/utils/handle-src-val.d.ts.map +1 -1
  71. package/out/de-logic/utils/handle-src-val.js +10 -1
  72. package/out/global/global-util/global-util.d.ts +8 -1
  73. package/out/global/global-util/global-util.d.ts.map +1 -1
  74. package/out/global/global-util/global-util.js +8 -1
  75. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts +4 -3
  76. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts.map +1 -1
  77. package/out/interface/controller/common/i-icon/i-icon.d.ts +1 -0
  78. package/out/interface/controller/common/i-icon/i-icon.d.ts.map +1 -1
  79. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts +23 -1
  80. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts.map +1 -1
  81. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts +17 -0
  82. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts.map +1 -1
  83. package/out/interface/controller/state/control/i-drbar.state.d.ts +7 -0
  84. package/out/interface/controller/state/control/i-drbar.state.d.ts.map +1 -1
  85. package/out/interface/controller/state/control/i-drtab.state.d.ts +7 -0
  86. package/out/interface/controller/state/control/i-drtab.state.d.ts.map +1 -1
  87. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts +60 -2
  88. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts.map +1 -1
  89. package/out/interface/provider/i-async-action.provider.d.ts +3 -2
  90. package/out/interface/provider/i-async-action.provider.d.ts.map +1 -1
  91. package/out/interface/service/i-transaction/i-transaction.d.ts +83 -0
  92. package/out/interface/service/i-transaction/i-transaction.d.ts.map +1 -0
  93. package/out/interface/service/i-transaction/i-transaction.js +1 -0
  94. package/out/interface/service/index.d.ts +1 -0
  95. package/out/interface/service/index.d.ts.map +1 -1
  96. package/out/interface/service/service/i-app-de.service.d.ts +9 -3
  97. package/out/interface/service/service/i-app-de.service.d.ts.map +1 -1
  98. package/out/interface/util/i-view-stack/i-view-stack.d.ts +53 -0
  99. package/out/interface/util/i-view-stack/i-view-stack.d.ts.map +1 -0
  100. package/out/interface/util/i-view-stack/i-view-stack.js +1 -0
  101. package/out/interface/util/index.d.ts +1 -0
  102. package/out/interface/util/index.d.ts.map +1 -1
  103. package/out/plugin/index.d.ts +1 -1
  104. package/out/plugin/index.d.ts.map +1 -1
  105. package/out/plugin/remote-plugin-item/remote-plugin-item.d.ts +46 -0
  106. package/out/plugin/remote-plugin-item/remote-plugin-item.d.ts.map +1 -1
  107. package/out/register/helper/app-menu-item-register.d.ts.map +1 -1
  108. package/out/register/helper/app-menu-item-register.js +1 -6
  109. package/out/register/helper/panel-item-register.d.ts.map +1 -1
  110. package/out/register/helper/panel-item-register.js +36 -30
  111. package/out/service/dto/method.dto.d.ts +1 -12
  112. package/out/service/dto/method.dto.d.ts.map +1 -1
  113. package/out/service/dto/method.dto.js +8 -20
  114. package/out/service/mqtt/mqtt.service.js +2 -2
  115. package/out/service/service/auth/v7-auth.service.d.ts +1 -2
  116. package/out/service/service/auth/v7-auth.service.d.ts.map +1 -1
  117. package/out/service/service/auth/v7-auth.service.js +29 -7
  118. package/out/service/service/entity/de.service.d.ts +1 -2
  119. package/out/service/service/entity/de.service.d.ts.map +1 -1
  120. package/out/service/service/entity/de.service.js +5 -2
  121. package/out/service/service/entity/method/de-action.d.ts +13 -1
  122. package/out/service/service/entity/method/de-action.d.ts.map +1 -1
  123. package/out/service/service/entity/method/de-action.js +167 -59
  124. package/out/service/service/entity/method/fetch.d.ts.map +1 -1
  125. package/out/service/service/entity/method/fetch.js +24 -21
  126. package/out/service/service/entity/method/method-renturn.d.ts.map +1 -1
  127. package/out/service/service/entity/method/method-renturn.js +6 -0
  128. package/out/service/utils/de-cache/de-cache.d.ts +11 -1
  129. package/out/service/utils/de-cache/de-cache.d.ts.map +1 -1
  130. package/out/service/utils/de-cache/de-cache.js +122 -18
  131. package/out/service/utils/de-dq-cond/ps-model-cond-engine-base.d.ts.map +1 -1
  132. package/out/service/utils/de-dq-cond/ps-model-cond-engine-base.js +4 -0
  133. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts +1 -1
  134. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts.map +1 -1
  135. package/out/service/utils/dynamic-code-list/dynamic-code-list.js +34 -27
  136. package/out/service/utils/res-path/res-path.d.ts +2 -2
  137. package/out/service/utils/res-path/res-path.d.ts.map +1 -1
  138. package/out/service/utils/res-path/res-path.js +1 -1
  139. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts +6 -0
  140. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
  141. package/out/service/vo/tree-node-data/tree-data-set-node-data.js +93 -41
  142. package/out/service/vo/tree-node-data/tree-node-data.d.ts.map +1 -1
  143. package/out/service/vo/tree-node-data/tree-node-data.js +3 -0
  144. package/out/ui-action/provider/front-ui-action-provider.d.ts +1 -1
  145. package/out/ui-action/provider/front-ui-action-provider.d.ts.map +1 -1
  146. package/out/ui-action/provider/front-ui-action-provider.js +5 -1
  147. package/out/ui-logic/ui-logic-node/debug-param-node/debug-param-node.js +1 -1
  148. package/out/ui-logic/ui-logic-node/raw-js-code-node/raw-js-code-node.d.ts.map +1 -1
  149. package/out/ui-logic/ui-logic-node/raw-js-code-node/raw-js-code-node.js +0 -1
  150. package/out/utils/index.d.ts +1 -0
  151. package/out/utils/index.d.ts.map +1 -1
  152. package/out/utils/index.js +1 -0
  153. package/out/utils/script/script-function.js +1 -1
  154. package/out/utils/ui-domain/transaction.d.ts +66 -0
  155. package/out/utils/ui-domain/transaction.d.ts.map +1 -0
  156. package/out/utils/ui-domain/transaction.js +94 -0
  157. package/out/utils/ui-domain/ui-domain.d.ts +50 -6
  158. package/out/utils/ui-domain/ui-domain.d.ts.map +1 -1
  159. package/out/utils/ui-domain/ui-domain.js +68 -9
  160. package/out/utils/view-stack/view-stack.d.ts +29 -0
  161. package/out/utils/view-stack/view-stack.d.ts.map +1 -0
  162. package/out/utils/view-stack/view-stack.js +47 -0
  163. package/package.json +5 -5
  164. package/src/app-hub.ts +27 -2
  165. package/src/application.ts +1 -1
  166. package/src/command/app/open-app-view/open-app-view.ts +8 -1
  167. package/src/controller/common/editor/editor.controller.ts +54 -0
  168. package/src/controller/common/view/view.controller.ts +7 -2
  169. package/src/controller/constant/control/index.ts +1 -0
  170. package/src/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.ts +5 -0
  171. package/src/controller/control/chart/chart.controller.ts +1 -1
  172. package/src/controller/control/form/edit-form/edit-form.controller.ts +1 -1
  173. package/src/controller/control/form/form/form.controller.ts +11 -1
  174. package/src/controller/control/form/form-detail/form-detail/form-detail.controller.ts +4 -0
  175. package/src/controller/control/form/form-detail/form-tab-page/form-tab-page.controller.ts +14 -0
  176. package/src/controller/control/form/form-detail/form-tab-panel/form-tab-panel.controller.ts +16 -0
  177. package/src/controller/control/form/form-detail/form-tab-panel/form-tab-panel.state.ts +9 -1
  178. package/src/controller/control/grid/grid/grid.service.ts +1 -11
  179. package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts +12 -2
  180. package/src/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.ts +0 -10
  181. package/src/controller/control/tree/tree.controller.ts +35 -0
  182. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/index.ts +1 -0
  183. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.ts +22 -0
  184. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.ts +88 -2
  185. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.ts +522 -0
  186. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.ts +18 -1
  187. package/src/controller/control/tree-grid-ex/tree-grid-ex-row.state.ts +43 -12
  188. package/src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts +305 -2
  189. package/src/controller/utils/jsonschema/entity.ts +4 -1
  190. package/src/de-logic/utils/handle-src-val.ts +29 -1
  191. package/src/global/global-util/global-util.ts +9 -0
  192. package/src/interface/common/i-app-hub-service/i-app-hub-service.ts +4 -3
  193. package/src/interface/controller/common/i-icon/i-icon.ts +1 -0
  194. package/src/interface/controller/controller/control/i-tree-grid-ex.controller.ts +27 -2
  195. package/src/interface/controller/event/control/i-tree-grid-ex.event.ts +15 -1
  196. package/src/interface/controller/state/control/i-drbar.state.ts +8 -0
  197. package/src/interface/controller/state/control/i-drtab.state.ts +8 -0
  198. package/src/interface/controller/state/control/i-tree-grid-ex.state.ts +64 -2
  199. package/src/interface/provider/i-async-action.provider.ts +3 -2
  200. package/src/interface/service/i-transaction/i-transaction.ts +88 -0
  201. package/src/interface/service/index.ts +4 -0
  202. package/src/interface/service/service/i-app-de.service.ts +10 -3
  203. package/src/interface/util/i-view-stack/i-view-stack.ts +53 -0
  204. package/src/interface/util/index.ts +1 -0
  205. package/src/plugin/index.ts +4 -1
  206. package/src/plugin/remote-plugin-item/remote-plugin-item.ts +43 -0
  207. package/src/register/helper/app-menu-item-register.ts +1 -5
  208. package/src/register/helper/panel-item-register.ts +43 -37
  209. package/src/service/dto/method.dto.ts +7 -20
  210. package/src/service/mqtt/mqtt.service.ts +2 -2
  211. package/src/service/service/auth/v7-auth.service.ts +39 -19
  212. package/src/service/service/entity/de.service.ts +7 -9
  213. package/src/service/service/entity/method/de-action.ts +186 -64
  214. package/src/service/service/entity/method/fetch.ts +28 -29
  215. package/src/service/service/entity/method/method-renturn.ts +6 -0
  216. package/src/service/utils/de-cache/de-cache.ts +128 -19
  217. package/src/service/utils/de-dq-cond/ps-model-cond-engine-base.ts +4 -0
  218. package/src/service/utils/dynamic-code-list/dynamic-code-list.ts +35 -32
  219. package/src/service/utils/res-path/res-path.ts +2 -2
  220. package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +111 -46
  221. package/src/service/vo/tree-node-data/tree-node-data.ts +3 -0
  222. package/src/ui-action/provider/front-ui-action-provider.ts +10 -1
  223. package/src/ui-logic/ui-logic-node/debug-param-node/debug-param-node.ts +1 -1
  224. package/src/ui-logic/ui-logic-node/raw-js-code-node/raw-js-code-node.ts +0 -1
  225. package/src/utils/index.ts +1 -0
  226. package/src/utils/script/script-function.ts +1 -1
  227. package/src/utils/ui-domain/transaction.ts +100 -0
  228. package/src/utils/ui-domain/ui-domain.ts +73 -9
  229. package/src/utils/view-stack/view-stack.ts +64 -0
@@ -133,6 +133,7 @@ export class DynamicCodeListCache {
133
133
  */
134
134
  protected convertData(data: IData): CodeListItem {
135
135
  const result = {} as CodeListItem;
136
+
136
137
  const {
137
138
  valueAppDEFieldId,
138
139
  textAppDEFieldId,
@@ -142,6 +143,8 @@ export class DynamicCodeListCache {
142
143
  iconPathXAppDEFieldId,
143
144
  disableAppDEFieldId,
144
145
  dataAppDEFieldId,
146
+ clsAppDEFieldId,
147
+ colorAppDEFieldId,
145
148
  } = this.codeList;
146
149
  // 值属性
147
150
  const value = valueAppDEFieldId ? data[valueAppDEFieldId] : data.srfkey;
@@ -177,6 +180,14 @@ export class DynamicCodeListCache {
177
180
  if (disableAppDEFieldId) {
178
181
  result.disableSelect = fieldValueToBoolean(data[disableAppDEFieldId]);
179
182
  }
183
+ // 样式表属性
184
+ if (clsAppDEFieldId) {
185
+ result.textCls = data[clsAppDEFieldId];
186
+ }
187
+ // 颜色值属性
188
+ if (colorAppDEFieldId) {
189
+ result.color = data[colorAppDEFieldId];
190
+ }
180
191
  // 数据属性
181
192
  if (dataAppDEFieldId && data[dataAppDEFieldId]) {
182
193
  try {
@@ -262,16 +273,16 @@ export class DynamicCodeListCache {
262
273
  );
263
274
  let resultItems: CodeListItem[] = [];
264
275
  if (res.data.length) {
265
- res.data.forEach((item: IData) => {
266
- if (pvalueAppDEFieldId) {
267
- const tempItems = this.prepareTreeData(res.data as IData[]);
268
- if (tempItems) {
269
- resultItems = tempItems;
270
- }
271
- } else {
272
- resultItems.push(this.convertData(item));
276
+ if (pvalueAppDEFieldId) {
277
+ const tempItems = this.prepareTreeData(res.data as IData[]);
278
+ if (tempItems) {
279
+ resultItems = tempItems;
273
280
  }
274
- });
281
+ } else {
282
+ res.data.forEach((item: IData) => {
283
+ resultItems.push(this.convertData(item));
284
+ });
285
+ }
275
286
  }
276
287
  return Object.freeze(resultItems) as CodeListItem[];
277
288
  }
@@ -281,31 +292,23 @@ export class DynamicCodeListCache {
281
292
  *
282
293
  * @return {codeListItem[] | undefined}
283
294
  */
284
- protected prepareTreeData(
285
- items: IData[],
286
- pValue?: string | number,
287
- ): CodeListItem[] | undefined {
288
- const { pvalueAppDEFieldId } = this.codeList;
289
- let filteredData: IData[] = [];
290
- filteredData = items.filter(item => {
291
- if (pValue) {
292
- // 有传父value去后台数据里找出来子项pValue等于父value的
293
- return item[pvalueAppDEFieldId!] === pValue;
294
- }
295
- // 没有传父value,只需要找出来没有父值属性的
296
- return !item[pvalueAppDEFieldId!];
295
+ protected prepareTreeData(items: IData[]): CodeListItem[] | undefined {
296
+ const { valueAppDEFieldId, pvalueAppDEFieldId } = this.codeList;
297
+ const map: { [id: string]: CodeListItem } = {};
298
+ const nestedList: CodeListItem[] = [];
299
+ items.forEach((data: IData) => {
300
+ map[data[valueAppDEFieldId as string]] = this.convertData(data);
297
301
  });
298
- if (filteredData.length === 0) {
299
- return;
300
- }
301
- return filteredData.map(data => {
302
- const tempCodeListItem = this.convertData(data);
303
- tempCodeListItem.children = this.prepareTreeData(
304
- items,
305
- tempCodeListItem.value,
306
- );
307
- return tempCodeListItem;
302
+ items.forEach((data: IData) => {
303
+ const parent = map[data[pvalueAppDEFieldId as string]];
304
+ if (parent) {
305
+ parent.children = parent.children || [];
306
+ parent.children.push(map[data[valueAppDEFieldId as string]]);
307
+ } else {
308
+ nestedList.push(map[data[valueAppDEFieldId as string]]);
309
+ }
308
310
  });
311
+ return nestedList;
309
312
  }
310
313
 
311
314
  /**
@@ -12,12 +12,12 @@ const reg = /\$\{(.*?)\}/g;
12
12
  * @author lxm
13
13
  * @date 2023-07-12 07:02:52
14
14
  * @export
15
- * @param {IContext} context
15
+ * @param {IParams} context
16
16
  * @param {IAppDataEntity} entity
17
17
  * @return {*} {({ path: string; keys: string[] } | undefined)}
18
18
  */
19
19
  export function getMatchResPath(
20
- context: IContext,
20
+ context: IParams,
21
21
  entity: IAppDataEntity,
22
22
  ): { path: string; keys: string[] } | undefined {
23
23
  const pathItems = entity.requestPaths || [];
@@ -1,13 +1,16 @@
1
1
  /* eslint-disable no-constructor-return */
2
2
  import { IDETreeDataSetNode, IDETreeNodeDataItem } from '@ibiz/model-core';
3
3
  import { updateKeyDefine } from '@ibiz-template/core';
4
- import { isNil } from 'ramda';
4
+ import { clone, isNil } from 'ramda';
5
5
  import { IIcon, ITreeNodeData } from '../../../interface';
6
6
  import { calcDeCodeNameById } from '../../../model';
7
7
  import { ScriptFactory } from '../../../utils';
8
8
  import { TreeNodeData } from './tree-node-data';
9
9
  import { fieldValueToBoolean } from '../../utils';
10
10
 
11
+ /** 克隆时赋值排除的字段 */
12
+ const CloneExcludeKeys = ['_id', '_value', '_text', '_deData', 'clone'];
13
+
11
14
  /**
12
15
  * 实体数据集树节点数据
13
16
  *
@@ -17,13 +20,20 @@ import { fieldValueToBoolean } from '../../utils';
17
20
  * @implements {ITreeNodeData}
18
21
  */
19
22
  export class TreeDataSetNodeData extends TreeNodeData implements ITreeNodeData {
20
- _text: string;
23
+ declare _text: string;
24
+
25
+ declare _id: string;
21
26
 
22
- _id!: string;
27
+ declare _value: string;
23
28
 
24
- _value: string;
29
+ declare _deData: IData;
25
30
 
26
- _deData: IData;
31
+ /**
32
+ * 克隆方法
33
+ * @author lxm
34
+ * @date 2024-01-12 02:37:46
35
+ */
36
+ declare clone: () => TreeDataSetNodeData;
27
37
 
28
38
  constructor(
29
39
  model: IDETreeDataSetNode,
@@ -38,12 +48,6 @@ export class TreeDataSetNodeData extends TreeNodeData implements ITreeNodeData {
38
48
  super(model, parentNodeData, opts);
39
49
  const { data } = opts;
40
50
  this._deData = data;
41
- this._text = model.textAppDEFieldId
42
- ? data[model.textAppDEFieldId]
43
- : data.srfmajortext;
44
- this._value = model.idAppDEFieldId
45
- ? data[model.idAppDEFieldId]
46
- : data.srfkey;
47
51
 
48
52
  // id小写
49
53
  const selfId = `${model.id}@${data.srfkey}`.toLowerCase();
@@ -55,6 +59,26 @@ export class TreeDataSetNodeData extends TreeNodeData implements ITreeNodeData {
55
59
  configurable: true,
56
60
  });
57
61
 
62
+ // 文本值
63
+ Object.defineProperty(this, '_text', {
64
+ get() {
65
+ return model.textAppDEFieldId
66
+ ? data[model.textAppDEFieldId]
67
+ : data.srfmajortext;
68
+ },
69
+ enumerable: true,
70
+ configurable: true,
71
+ });
72
+
73
+ // value值
74
+ Object.defineProperty(this, '_value', {
75
+ get() {
76
+ return model.idAppDEFieldId ? data[model.idAppDEFieldId] : data.srfkey;
77
+ },
78
+ enumerable: true,
79
+ configurable: true,
80
+ });
81
+
58
82
  // 实体节点额外添加上自己的实体上下文
59
83
  if (model.appDataEntityId) {
60
84
  const deName = calcDeCodeNameById(model.appDataEntityId);
@@ -73,22 +97,21 @@ export class TreeDataSetNodeData extends TreeNodeData implements ITreeNodeData {
73
97
 
74
98
  /** 数据项和实体属性映射 */
75
99
  const dataItemKeyMap = new Map<string | symbol, string | symbol>();
76
- dataItemKeyMap.set('srfkey', 'srfkey');
77
- dataItemKeyMap.set('srfmajortext', 'srfmajortext');
78
-
100
+ const dataItemDefaultMap = new Map<string | symbol, unknown>();
79
101
  model.detreeNodeDataItems?.forEach(dataItem => {
80
- const uiKey = dataItem.id!.toLowerCase();
81
- // 后台实体属性
102
+ const dataItemKey = dataItem.id!.toLowerCase();
103
+
104
+ // *后台实体属性
82
105
  const deFieldKey = dataItem.appDEFieldId!.toLowerCase();
83
- dataItemKeyMap.set(uiKey, deFieldKey);
106
+ dataItemKeyMap.set(dataItemKey, deFieldKey);
84
107
 
85
108
  // *设置默认值
86
- if (dataItem.defaultValue && isNil(data[deFieldKey])) {
87
- data[deFieldKey] = dataItem.defaultValue;
109
+ if (dataItem.defaultValue) {
110
+ dataItemDefaultMap.set(dataItemKey, dataItem.defaultValue);
88
111
  }
89
112
  });
90
113
 
91
- /** 表格列和数据项的映射从而算出实体属性的映射 */
114
+ /** 表格列和数据项的映射 */
92
115
  const nodeColumnKeyMap = new Map<string | symbol, string | symbol>();
93
116
  model.detreeNodeColumns?.forEach(column => {
94
117
  const columnKey = column.detreeColumnId!; // 不配树表格列不会有这个模型
@@ -96,45 +119,87 @@ export class TreeDataSetNodeData extends TreeNodeData implements ITreeNodeData {
96
119
  if (!columnKey || !dataItemKey) {
97
120
  ibiz.log.error('模型异常缺少detreeColumnId或者dataItemName', column);
98
121
  } else {
99
- nodeColumnKeyMap.set(columnKey, dataItemKeyMap.get(dataItemKey)!);
122
+ nodeColumnKeyMap.set(columnKey, dataItemKey);
100
123
  }
101
124
  });
102
125
 
126
+ /**
127
+ * 获取对应key最终映射的实体属性字段,undefined就是没有映射实体属性
128
+ * @author lxm
129
+ * @date 2024-01-12 01:48:09
130
+ * @param {(string | symbol)} key
131
+ * @return {*} {(string | symbol | undefined)}
132
+ */
133
+ const getDeKey = (key: string | symbol): string | symbol | undefined => {
134
+ // 表格列映射的实体数据属性名称
135
+ if (nodeColumnKeyMap.has(key)) {
136
+ return dataItemKeyMap.get(nodeColumnKeyMap.get(key)!);
137
+ }
138
+ // 数据项映射的实体数据属性名称
139
+ if (dataItemKeyMap.has(key)) {
140
+ return dataItemKeyMap.get(key);
141
+ }
142
+ // 实体属性上可枚举的属性,返回该属性名称
143
+ if (Object.prototype.hasOwnProperty.call(this._deData, key)) {
144
+ return key;
145
+ }
146
+ };
147
+
148
+ /**
149
+ * 获取对应属性的默认值,纯显示用的
150
+ * @author lxm
151
+ * @date 2024-01-12 02:36:53
152
+ * @param {(string | symbol)} key
153
+ * @return {*} {unknown}
154
+ */
155
+ const getKeyDefault = (key: string | symbol): unknown => {
156
+ // 表格列映射的数据项的默认值
157
+ if (nodeColumnKeyMap.has(key)) {
158
+ return dataItemDefaultMap.get(nodeColumnKeyMap.get(key)!);
159
+ }
160
+ // 数据项映射的默认值
161
+ if (dataItemDefaultMap.has(key)) {
162
+ return dataItemDefaultMap.get(key);
163
+ }
164
+ };
165
+
166
+ this.clone = (): TreeDataSetNodeData => {
167
+ const cloneData = clone(this._deData);
168
+ const cloneNodeData = new TreeDataSetNodeData(model, this._parent, {
169
+ data: cloneData,
170
+ leaf: this._leaf,
171
+ navContext: this._context,
172
+ navParams: this._params,
173
+ });
174
+ Object.keys(this).forEach(key => {
175
+ const deKey = getDeKey(key);
176
+ // 非实体的映射属性,且不是排除的属性时,从原来那边赋值过来
177
+ if (isNil(deKey) && !CloneExcludeKeys.includes(key)) {
178
+ (cloneNodeData as IData)[key] = (this as IData)[key];
179
+ }
180
+ });
181
+ return cloneNodeData;
182
+ };
183
+
103
184
  return new Proxy<TreeDataSetNodeData>(this, {
104
185
  set(target, p, value): boolean {
105
- if (nodeColumnKeyMap.has(p)) {
106
- // 通过树表格列标识设置
107
- target._deData[nodeColumnKeyMap.get(p)!] = value;
108
- } else if (dataItemKeyMap.has(p)) {
109
- // 通过树节点数据项标识设置
110
- target._deData[dataItemKeyMap.get(p)!] = value;
111
- } else if (Object.prototype.hasOwnProperty.call(target._deData, p)) {
112
- // 通过实体数据属性标识设置
113
- target._deData[p] = value;
186
+ const deKey = getDeKey(p);
187
+ if (!isNil(deKey)) {
188
+ target._deData[deKey] = value;
114
189
  } else {
115
190
  (target as IData)[p] = value;
116
191
  }
117
192
  return true;
118
193
  },
119
-
120
194
  get(target, p, _receiver): unknown {
121
- if ((target as IData)[p] !== undefined) {
122
- return (target as IData)[p];
123
- }
124
- // 通过树表格列标识获取
125
- if (nodeColumnKeyMap.has(p)) {
126
- return target._deData[nodeColumnKeyMap.get(p)!];
127
- }
128
- // 通过树节点数据项标识获取
129
- if (dataItemKeyMap.has(p)) {
130
- return target._deData[dataItemKeyMap.get(p)!];
131
- }
132
- // 通过实体数据属性标识获取
133
- if (target._deData[p] !== undefined) {
134
- return target._deData[p];
195
+ const deKey = getDeKey(p);
196
+ if (!isNil(deKey)) {
197
+ return isNil(target._deData[deKey])
198
+ ? getKeyDefault(p)
199
+ : target._deData[deKey];
135
200
  }
201
+ return (target as IData)[p];
136
202
  },
137
-
138
203
  ownKeys(target): ArrayLike<string | symbol> {
139
204
  // 整合所有并排除重复
140
205
  const allKeys = [
@@ -86,6 +86,9 @@ export abstract class TreeNodeData implements ITreeNodeData {
86
86
  if (sysImage.imagePath) {
87
87
  icon.imagePath = sysImage.imagePath;
88
88
  }
89
+ if (sysImage.rawContent) {
90
+ icon.htmlStr = sysImage.rawContent;
91
+ }
89
92
  }
90
93
  return Object.values(icon).length > 0 ? icon : undefined;
91
94
  }
@@ -196,8 +196,15 @@ export class FrontUIActionProvider extends UIActionProviderBase {
196
196
  */
197
197
  protected async executeDataImport(
198
198
  action: IAppDEUIAction,
199
- _args: IUILogicParams,
199
+ args: IUILogicParams,
200
200
  ): Promise<IUIActionResult> {
201
+ // 处理参数
202
+ const { resultContext, resultParams } = await this.handleParams(
203
+ action,
204
+ args.context,
205
+ args.data,
206
+ args.params,
207
+ );
201
208
  const appDataEntity = await ibiz.hub.getAppDataEntity(
202
209
  action.appDataEntityId!,
203
210
  action.appId,
@@ -216,6 +223,8 @@ export class FrontUIActionProvider extends UIActionProviderBase {
216
223
  dismiss: () => modal.dismiss(),
217
224
  appDataEntity,
218
225
  dataImport: appDEDataImport,
226
+ context: resultContext,
227
+ params: resultParams,
219
228
  },
220
229
  {
221
230
  width: 'auto',
@@ -21,6 +21,6 @@ export class DebugParamNode extends UILogicNode {
21
21
  throw new RuntimeModelError(this.model, '缺少目标参数对象配置');
22
22
  }
23
23
  const param = ctx.params[dstDEUILogicParamId];
24
- console.log(`逻辑节点${name}操作参数值:`, param);
24
+ ibiz.log.debug(`逻辑节点${name}操作参数值:`, param);
25
25
  }
26
26
  }
@@ -7,7 +7,6 @@ export class RawJSCodeNode extends UILogicNode {
7
7
  declare model: IDEUIRawCodeLogic;
8
8
 
9
9
  async exec(ctx: UILogicContext): Promise<void> {
10
- console.log(ctx);
11
10
  ScriptFactory.execScriptFn(
12
11
  {
13
12
  view: ctx.view,
@@ -18,4 +18,5 @@ export { ThemeUtil } from './theme-util/theme-util';
18
18
  export { UIDomain } from './ui-domain/ui-domain';
19
19
  export { UIDomainManager } from './ui-domain-manager/ui-domain-manager';
20
20
  export { RawValueUtil } from './raw-value-util/raw-value-util';
21
+ export { ViewStack } from './view-stack/view-stack';
21
22
  export { handleAllSettled } from './promise/promise';
@@ -31,7 +31,7 @@ export class ScriptFunction {
31
31
  try {
32
32
  return fn.apply({}, args);
33
33
  } catch (error) {
34
- console.log('报错脚本', code);
34
+ ibiz.log.error('报错脚本', code);
35
35
  throw error;
36
36
  }
37
37
  };
@@ -0,0 +1,100 @@
1
+ import { ITransaction, ITransactionState } from '../../interface';
2
+
3
+ /**
4
+ * 界面域下简单数据事务
5
+ *
6
+ * @author chitanda
7
+ * @date 2024-01-17 15:01:39
8
+ * @export
9
+ * @class Transaction
10
+ */
11
+ export class Transaction implements ITransaction {
12
+ /**
13
+ * 待提交队列
14
+ *
15
+ * @author chitanda
16
+ * @date 2024-01-17 15:01:38
17
+ * @protected
18
+ */
19
+ protected commitQueue: Map<string, () => void> = new Map();
20
+
21
+ /**
22
+ * 事务状态
23
+ *
24
+ * @author chitanda
25
+ * @date 2024-01-17 15:01:45
26
+ * @type {ITransactionState}
27
+ */
28
+ readonly state: ITransactionState = {
29
+ isOpen: false,
30
+ isChange: false,
31
+ };
32
+
33
+ /**
34
+ * 开启事务
35
+ *
36
+ * @description 事务开启后,所有的数据操作都会被缓存,直到事务提交或者回滚
37
+ * @author chitanda
38
+ * @date 2024-01-17 15:01:46
39
+ */
40
+ open(): void {
41
+ if (this.state.isOpen) {
42
+ ibiz.log.warn('事务已经开启, 单个界面域只能开启一个事务');
43
+ return;
44
+ }
45
+ this.state.isOpen = true;
46
+ }
47
+
48
+ /**
49
+ * 新增变更事务回调,事务提交时会按照添加顺序倒序执行
50
+ *
51
+ * @author chitanda
52
+ * @date 2024-01-17 16:01:50
53
+ * @param {string} id 回调标识,用于去重。一个数据只能有一个回调
54
+ * @param {() => void} commit
55
+ */
56
+ change(id: string, commit: () => void): void {
57
+ this.state.isChange = true;
58
+ this.commitQueue.set(id, commit);
59
+ }
60
+
61
+ /**
62
+ * 提交事务
63
+ *
64
+ * @author chitanda
65
+ * @date 2024-01-17 15:01:05
66
+ */
67
+ commit(): void {
68
+ // 倒序提交
69
+ const commitQueue = Array.from(this.commitQueue.values()).reverse();
70
+ for (const commit of commitQueue) {
71
+ commit();
72
+ }
73
+ this.commitQueue.clear();
74
+ this.state.isChange = false;
75
+ }
76
+
77
+ /**
78
+ * 回滚事务
79
+ *
80
+ * @author chitanda
81
+ * @date 2024-01-17 19:01:43
82
+ */
83
+ rollback(): void {
84
+ this.commitQueue.clear();
85
+ this.state.isChange = false;
86
+ }
87
+
88
+ /**
89
+ * 关闭事务
90
+ *
91
+ * @author chitanda
92
+ * @date 2024-01-17 15:01:02
93
+ */
94
+ close(): void {
95
+ if (this.state.isChange) {
96
+ throw new Error('当前事务未提交,不可以直接关闭事务');
97
+ }
98
+ this.state.isOpen = false;
99
+ }
100
+ }
@@ -1,5 +1,6 @@
1
1
  import { IAppDERS } from '@ibiz/model-core';
2
2
  import { createUUID } from 'qx-util';
3
+ import { Transaction } from './transaction';
3
4
 
4
5
  /**
5
6
  * 界面域
@@ -20,15 +21,43 @@ export class UIDomain {
20
21
  readonly id: string;
21
22
 
22
23
  /**
23
- * DTO 父子关系映射
24
+ * 状态
25
+ *
26
+ * @author chitanda
27
+ * @date 2024-01-15 19:01:51
28
+ * @type {{ rsInit: boolean }} 关系是否已经初始化
29
+ */
30
+ readonly state: { rsInit: boolean } = { rsInit: false };
31
+
32
+ /**
33
+ * DTO 子父关系映射
24
34
  *
25
35
  * @author chitanda
26
36
  * @date 2023-12-26 15:12:13
27
37
  * @protected
28
- * @type {Map<string, IAppDERS[]>}
38
+ * @type {Map<string, IAppDERS[]>} Map<子实体, 当前实体的父关系>
29
39
  */
30
40
  protected rsMap: Map<string, IAppDERS[]> = new Map();
31
41
 
42
+ /**
43
+ * DTO 父子关系映射
44
+ *
45
+ * @author chitanda
46
+ * @date 2024-01-15 17:01:42
47
+ * @protected
48
+ * @type {Map<string, IAppDERS[]>}
49
+ */
50
+ protected rs2Map: Map<string, IAppDERS[]> = new Map();
51
+
52
+ /**
53
+ * 当前界面域下唯一事务
54
+ *
55
+ * @author chitanda
56
+ * @date 2024-01-17 15:01:07
57
+ * @type {Transaction}
58
+ */
59
+ readonly transaction: Transaction = new Transaction();
60
+
32
61
  /**
33
62
  * Creates an instance of UIDomain.
34
63
  *
@@ -50,11 +79,11 @@ export class UIDomain {
50
79
  *
51
80
  * @author chitanda
52
81
  * @date 2023-12-26 15:12:31
53
- * @param {string} entity
82
+ * @param {string} appDataEntityId
54
83
  * @param {IAppDERS} configs
55
84
  */
56
- setDERConfig(deCodeName: string, configs: IAppDERS[]): void {
57
- this.rsMap.set(deCodeName, configs);
85
+ setDERConfig(appDataEntityId: string, configs: IAppDERS[]): void {
86
+ this.rsMap.set(appDataEntityId, configs);
58
87
  }
59
88
 
60
89
  /**
@@ -62,16 +91,51 @@ export class UIDomain {
62
91
  *
63
92
  * @author chitanda
64
93
  * @date 2023-12-26 16:12:07
65
- * @param {string} deCodeName
94
+ * @param {string} appDataEntityId
95
+ * @return {*} {IAppDERS[]}
96
+ */
97
+ getDERConfig(appDataEntityId: string): IAppDERS[] {
98
+ if (this.rsMap.has(appDataEntityId)) {
99
+ return this.rsMap.get(appDataEntityId)!;
100
+ }
101
+ return [];
102
+ }
103
+
104
+ /**
105
+ * 查询指定主实体下的所有子实体关系
106
+ *
107
+ * @author chitanda
108
+ * @date 2024-01-17 16:01:21
109
+ * @param {string} appDataEntityId
66
110
  * @return {*} {IAppDERS[]}
67
111
  */
68
- getDERConfig(deCodeName: string): IAppDERS[] {
69
- if (this.rsMap.has(deCodeName)) {
70
- return this.rsMap.get(deCodeName)!;
112
+ getDERConfigByMajor(appDataEntityId: string): IAppDERS[] {
113
+ if (this.rs2Map.has(appDataEntityId)) {
114
+ return this.rs2Map.get(appDataEntityId)!;
71
115
  }
72
116
  return [];
73
117
  }
74
118
 
119
+ /**
120
+ * 根据模型给的子实体中的父关系模型,计算每个实体的子关系模型
121
+ *
122
+ * @author chitanda
123
+ * @date 2024-01-15 19:01:49
124
+ */
125
+ calcParentRs(): void {
126
+ this.rs2Map.clear();
127
+ this.rsMap.forEach((configs, appDataEntityId) => {
128
+ configs.forEach(config => {
129
+ config.minorAppDataEntityId = appDataEntityId;
130
+ const major = config.majorAppDataEntityId!;
131
+ if (!this.rs2Map.has(major)) {
132
+ this.rs2Map.set(major, []);
133
+ }
134
+ this.rs2Map.get(major)!.push(config);
135
+ });
136
+ });
137
+ }
138
+
75
139
  /**
76
140
  * 界面域销毁
77
141
  *