weaver-e10-builder 1.6.15 → 1.7.0

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 (348) hide show
  1. package/dist/cli-register.d.ts +8 -1
  2. package/dist/cli-register.d.ts.map +1 -1
  3. package/dist/cli-register.js +238 -86
  4. package/dist/cli-register.js.map +1 -1
  5. package/dist/commands/actionflow.d.ts +1 -0
  6. package/dist/commands/actionflow.d.ts.map +1 -1
  7. package/dist/commands/actionflow.js +17 -1
  8. package/dist/commands/actionflow.js.map +1 -1
  9. package/dist/commands/designer-custom-page.d.ts +3 -0
  10. package/dist/commands/designer-custom-page.d.ts.map +1 -0
  11. package/dist/commands/designer-custom-page.js +56 -0
  12. package/dist/commands/designer-custom-page.js.map +1 -0
  13. package/dist/commands/designer-event.d.ts.map +1 -1
  14. package/dist/commands/designer-event.js +70 -5
  15. package/dist/commands/designer-event.js.map +1 -1
  16. package/dist/commands/designer-list-advanced.d.ts +3 -0
  17. package/dist/commands/designer-list-advanced.d.ts.map +1 -0
  18. package/dist/commands/designer-list-advanced.js +53 -0
  19. package/dist/commands/designer-list-advanced.js.map +1 -0
  20. package/dist/commands/designer-list-controls.d.ts +3 -0
  21. package/dist/commands/designer-list-controls.d.ts.map +1 -0
  22. package/dist/commands/designer-list-controls.js +39 -0
  23. package/dist/commands/designer-list-controls.js.map +1 -0
  24. package/dist/commands/designer-permission.d.ts +3 -0
  25. package/dist/commands/designer-permission.d.ts.map +1 -0
  26. package/dist/commands/designer-permission.js +32 -0
  27. package/dist/commands/designer-permission.js.map +1 -0
  28. package/dist/commands/designer-tabbar.d.ts +3 -0
  29. package/dist/commands/designer-tabbar.d.ts.map +1 -0
  30. package/dist/commands/designer-tabbar.js +24 -0
  31. package/dist/commands/designer-tabbar.js.map +1 -0
  32. package/dist/commands/ecode.d.ts +9 -0
  33. package/dist/commands/ecode.d.ts.map +1 -0
  34. package/dist/commands/ecode.js +81 -0
  35. package/dist/commands/ecode.js.map +1 -0
  36. package/dist/commands/form-base-setting.d.ts +3 -0
  37. package/dist/commands/form-base-setting.d.ts.map +1 -0
  38. package/dist/commands/form-base-setting.js +192 -0
  39. package/dist/commands/form-base-setting.js.map +1 -0
  40. package/dist/commands/form-field-linkage.d.ts +5 -0
  41. package/dist/commands/form-field-linkage.d.ts.map +1 -1
  42. package/dist/commands/form-field-linkage.js +82 -16
  43. package/dist/commands/form-field-linkage.js.map +1 -1
  44. package/dist/commands/form-list-columns.d.ts.map +1 -1
  45. package/dist/commands/form-list-columns.js +4 -0
  46. package/dist/commands/form-list-columns.js.map +1 -1
  47. package/dist/commands/form-list-config.d.ts.map +1 -1
  48. package/dist/commands/form-list-config.js +19 -3
  49. package/dist/commands/form-list-config.js.map +1 -1
  50. package/dist/commands/form-list-permission.d.ts.map +1 -1
  51. package/dist/commands/form-list-permission.js +34 -1
  52. package/dist/commands/form-list-permission.js.map +1 -1
  53. package/dist/commands/form-obj-meta.d.ts.map +1 -1
  54. package/dist/commands/form-obj-meta.js +194 -1
  55. package/dist/commands/form-obj-meta.js.map +1 -1
  56. package/dist/commands/form-table-view.d.ts.map +1 -1
  57. package/dist/commands/form-table-view.js +14 -4
  58. package/dist/commands/form-table-view.js.map +1 -1
  59. package/dist/commands/matrix-person.d.ts +3 -0
  60. package/dist/commands/matrix-person.d.ts.map +1 -0
  61. package/dist/commands/matrix-person.js +95 -0
  62. package/dist/commands/matrix-person.js.map +1 -0
  63. package/dist/commands/matrix.d.ts.map +1 -1
  64. package/dist/commands/matrix.js +3 -1
  65. package/dist/commands/matrix.js.map +1 -1
  66. package/dist/commands/page-combination.d.ts.map +1 -1
  67. package/dist/commands/page-combination.js +15 -0
  68. package/dist/commands/page-combination.js.map +1 -1
  69. package/dist/commands/page-management.d.ts +3 -0
  70. package/dist/commands/page-management.d.ts.map +1 -0
  71. package/dist/commands/page-management.js +16 -0
  72. package/dist/commands/page-management.js.map +1 -0
  73. package/dist/commands/page.d.ts.map +1 -1
  74. package/dist/commands/page.js +8 -9
  75. package/dist/commands/page.js.map +1 -1
  76. package/dist/commands/report-cell.d.ts.map +1 -1
  77. package/dist/commands/report-cell.js +215 -0
  78. package/dist/commands/report-cell.js.map +1 -1
  79. package/dist/commands/report-code.d.ts +9 -0
  80. package/dist/commands/report-code.d.ts.map +1 -0
  81. package/dist/commands/report-code.js +105 -0
  82. package/dist/commands/report-code.js.map +1 -0
  83. package/dist/commands/report.d.ts.map +1 -1
  84. package/dist/commands/report.js +70 -17
  85. package/dist/commands/report.js.map +1 -1
  86. package/dist/core/client.d.ts +12 -0
  87. package/dist/core/client.d.ts.map +1 -1
  88. package/dist/core/client.js +23 -2
  89. package/dist/core/client.js.map +1 -1
  90. package/dist/index.js +15 -5
  91. package/dist/index.js.map +1 -1
  92. package/dist/services/action-detail.d.ts +2 -0
  93. package/dist/services/action-detail.d.ts.map +1 -1
  94. package/dist/services/action-detail.js +11 -5
  95. package/dist/services/action-detail.js.map +1 -1
  96. package/dist/services/actionflow/build_workflow_draft.d.ts +1 -1
  97. package/dist/services/actionflow/build_workflow_draft.d.ts.map +1 -1
  98. package/dist/services/actionflow/build_workflow_draft.js +28 -24
  99. package/dist/services/actionflow/build_workflow_draft.js.map +1 -1
  100. package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
  101. package/dist/services/actionflow/components/action_eb_update_compiler.js +2 -15
  102. package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
  103. package/dist/services/actionflow/components/custom_set_form.d.ts.map +1 -1
  104. package/dist/services/actionflow/components/custom_set_form.js +1 -9
  105. package/dist/services/actionflow/components/custom_set_form.js.map +1 -1
  106. package/dist/services/actionflow/components/dml_execute.d.ts.map +1 -1
  107. package/dist/services/actionflow/components/dml_execute.js +3 -4
  108. package/dist/services/actionflow/components/dml_execute.js.map +1 -1
  109. package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
  110. package/dist/services/actionflow/components/document_actions.js +0 -3
  111. package/dist/services/actionflow/components/document_actions.js.map +1 -1
  112. package/dist/services/actionflow/components/form_data_builder.d.ts.map +1 -1
  113. package/dist/services/actionflow/components/form_data_builder.js +27 -5
  114. package/dist/services/actionflow/components/form_data_builder.js.map +1 -1
  115. package/dist/services/actionflow/components/hrm_actions.d.ts.map +1 -1
  116. package/dist/services/actionflow/components/hrm_actions.js +1 -3
  117. package/dist/services/actionflow/components/hrm_actions.js.map +1 -1
  118. package/dist/services/actionflow/components/index.d.ts +1 -1
  119. package/dist/services/actionflow/components/index.d.ts.map +1 -1
  120. package/dist/services/actionflow/components/index.js +1 -1
  121. package/dist/services/actionflow/components/index.js.map +1 -1
  122. package/dist/services/actionflow/components/inner_mq_listener.js +1 -1
  123. package/dist/services/actionflow/components/inner_mq_listener.js.map +1 -1
  124. package/dist/services/actionflow/components/inner_mq_send.d.ts.map +1 -1
  125. package/dist/services/actionflow/components/inner_mq_send.js +6 -2
  126. package/dist/services/actionflow/components/inner_mq_send.js.map +1 -1
  127. package/dist/services/actionflow/components/multiple_execution.d.ts +1 -2
  128. package/dist/services/actionflow/components/multiple_execution.d.ts.map +1 -1
  129. package/dist/services/actionflow/components/multiple_execution.js +55 -276
  130. package/dist/services/actionflow/components/multiple_execution.js.map +1 -1
  131. package/dist/services/actionflow/components/output.d.ts.map +1 -1
  132. package/dist/services/actionflow/components/output.js +3 -7
  133. package/dist/services/actionflow/components/output.js.map +1 -1
  134. package/dist/services/actionflow/components/send_message.d.ts.map +1 -1
  135. package/dist/services/actionflow/components/send_message.js +6 -10
  136. package/dist/services/actionflow/components/send_message.js.map +1 -1
  137. package/dist/services/actionflow/components/serverless_action.d.ts.map +1 -1
  138. package/dist/services/actionflow/components/serverless_action.js +3 -2
  139. package/dist/services/actionflow/components/serverless_action.js.map +1 -1
  140. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
  141. package/dist/services/actionflow/components/workflow_actions.js +0 -3
  142. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  143. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  144. package/dist/services/actionflow/context_preflight.js +12 -9
  145. package/dist/services/actionflow/context_preflight.js.map +1 -1
  146. package/dist/services/actionflow/filter_rules.js +4 -4
  147. package/dist/services/actionflow/filter_rules.js.map +1 -1
  148. package/dist/services/actionflow/formula_service.d.ts +0 -13
  149. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  150. package/dist/services/actionflow/formula_service.js +45 -267
  151. package/dist/services/actionflow/formula_service.js.map +1 -1
  152. package/dist/services/actionflow/generation_service.d.ts.map +1 -1
  153. package/dist/services/actionflow/generation_service.js +10 -12
  154. package/dist/services/actionflow/generation_service.js.map +1 -1
  155. package/dist/services/actionflow/id_generator.d.ts +2 -2
  156. package/dist/services/actionflow/id_generator.d.ts.map +1 -1
  157. package/dist/services/actionflow/id_generator.js +5 -11
  158. package/dist/services/actionflow/id_generator.js.map +1 -1
  159. package/dist/services/actionflow/loop_context.d.ts +12 -0
  160. package/dist/services/actionflow/loop_context.d.ts.map +1 -0
  161. package/dist/services/actionflow/loop_context.js +134 -0
  162. package/dist/services/actionflow/loop_context.js.map +1 -0
  163. package/dist/services/actionflow/param_group_dto.d.ts +7 -0
  164. package/dist/services/actionflow/param_group_dto.d.ts.map +1 -1
  165. package/dist/services/actionflow/param_group_dto.js +128 -16
  166. package/dist/services/actionflow/param_group_dto.js.map +1 -1
  167. package/dist/services/actionflow/param_mapping_basis.js +2 -2
  168. package/dist/services/actionflow/param_mapping_basis.js.map +1 -1
  169. package/dist/services/actionflow/preflight_service.d.ts +1 -0
  170. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  171. package/dist/services/actionflow/preflight_service.js +88 -291
  172. package/dist/services/actionflow/preflight_service.js.map +1 -1
  173. package/dist/services/actionflow/readback_verifier.d.ts.map +1 -1
  174. package/dist/services/actionflow/readback_verifier.js +21 -2
  175. package/dist/services/actionflow/readback_verifier.js.map +1 -1
  176. package/dist/services/actionflow/save_workflow_draft.d.ts +2 -3
  177. package/dist/services/actionflow/save_workflow_draft.d.ts.map +1 -1
  178. package/dist/services/actionflow/save_workflow_draft.js +14 -16
  179. package/dist/services/actionflow/save_workflow_draft.js.map +1 -1
  180. package/dist/services/actionflow/update_service.d.ts +5 -0
  181. package/dist/services/actionflow/update_service.d.ts.map +1 -1
  182. package/dist/services/actionflow/update_service.js +126 -3
  183. package/dist/services/actionflow/update_service.js.map +1 -1
  184. package/dist/services/actionflow/workflow_compiler.d.ts +1 -2
  185. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  186. package/dist/services/actionflow/workflow_compiler.js +79 -105
  187. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  188. package/dist/services/designer-custom-page.d.ts +11 -0
  189. package/dist/services/designer-custom-page.d.ts.map +1 -0
  190. package/dist/services/designer-custom-page.js +227 -0
  191. package/dist/services/designer-custom-page.js.map +1 -0
  192. package/dist/services/designer-event.d.ts +7 -2
  193. package/dist/services/designer-event.d.ts.map +1 -1
  194. package/dist/services/designer-event.js +357 -33
  195. package/dist/services/designer-event.js.map +1 -1
  196. package/dist/services/designer-list-advanced.d.ts +9 -0
  197. package/dist/services/designer-list-advanced.d.ts.map +1 -0
  198. package/dist/services/designer-list-advanced.js +64 -0
  199. package/dist/services/designer-list-advanced.js.map +1 -0
  200. package/dist/services/designer-list-controls.d.ts +2 -0
  201. package/dist/services/designer-list-controls.d.ts.map +1 -0
  202. package/dist/services/designer-list-controls.js +85 -0
  203. package/dist/services/designer-list-controls.js.map +1 -0
  204. package/dist/services/designer-list-presentation.d.ts +2 -0
  205. package/dist/services/designer-list-presentation.d.ts.map +1 -0
  206. package/dist/services/designer-list-presentation.js +45 -0
  207. package/dist/services/designer-list-presentation.js.map +1 -0
  208. package/dist/services/designer-list-runtime.d.ts +2 -0
  209. package/dist/services/designer-list-runtime.d.ts.map +1 -0
  210. package/dist/services/designer-list-runtime.js +80 -0
  211. package/dist/services/designer-list-runtime.js.map +1 -0
  212. package/dist/services/designer-list-search.d.ts +2 -0
  213. package/dist/services/designer-list-search.d.ts.map +1 -0
  214. package/dist/services/designer-list-search.js +72 -0
  215. package/dist/services/designer-list-search.js.map +1 -0
  216. package/dist/services/designer-permission.d.ts +52 -0
  217. package/dist/services/designer-permission.d.ts.map +1 -0
  218. package/dist/services/designer-permission.js +316 -0
  219. package/dist/services/designer-permission.js.map +1 -0
  220. package/dist/services/designer-tabbar.d.ts +11 -0
  221. package/dist/services/designer-tabbar.d.ts.map +1 -0
  222. package/dist/services/designer-tabbar.js +114 -0
  223. package/dist/services/designer-tabbar.js.map +1 -0
  224. package/dist/services/ecode-check.d.ts +50 -0
  225. package/dist/services/ecode-check.d.ts.map +1 -0
  226. package/dist/services/ecode-check.js +408 -0
  227. package/dist/services/ecode-check.js.map +1 -0
  228. package/dist/services/esb-interface/importer.d.ts +35 -1
  229. package/dist/services/esb-interface/importer.d.ts.map +1 -1
  230. package/dist/services/esb-interface/importer.js +77 -1
  231. package/dist/services/esb-interface/importer.js.map +1 -1
  232. package/dist/services/form-base-setting.d.ts +88 -0
  233. package/dist/services/form-base-setting.d.ts.map +1 -0
  234. package/dist/services/form-base-setting.js +272 -0
  235. package/dist/services/form-base-setting.js.map +1 -0
  236. package/dist/services/form-list-columns.d.ts.map +1 -1
  237. package/dist/services/form-list-columns.js +12 -3
  238. package/dist/services/form-list-columns.js.map +1 -1
  239. package/dist/services/form-list-config.d.ts +40 -3
  240. package/dist/services/form-list-config.d.ts.map +1 -1
  241. package/dist/services/form-list-config.js +207 -25
  242. package/dist/services/form-list-config.js.map +1 -1
  243. package/dist/services/form-list-fields.d.ts.map +1 -1
  244. package/dist/services/form-list-fields.js +3 -1
  245. package/dist/services/form-list-fields.js.map +1 -1
  246. package/dist/services/form-log-setting.d.ts +55 -0
  247. package/dist/services/form-log-setting.d.ts.map +1 -0
  248. package/dist/services/form-log-setting.js +108 -0
  249. package/dist/services/form-log-setting.js.map +1 -0
  250. package/dist/services/form-obj-lang.d.ts +45 -0
  251. package/dist/services/form-obj-lang.d.ts.map +1 -0
  252. package/dist/services/form-obj-lang.js +127 -0
  253. package/dist/services/form-obj-lang.js.map +1 -0
  254. package/dist/services/form-obj-meta.d.ts +34 -0
  255. package/dist/services/form-obj-meta.d.ts.map +1 -1
  256. package/dist/services/form-obj-meta.js +81 -12
  257. package/dist/services/form-obj-meta.js.map +1 -1
  258. package/dist/services/form-table-view.d.ts +8 -2
  259. package/dist/services/form-table-view.d.ts.map +1 -1
  260. package/dist/services/form-table-view.js +22 -5
  261. package/dist/services/form-table-view.js.map +1 -1
  262. package/dist/services/form-view.d.ts +1 -1
  263. package/dist/services/form-view.d.ts.map +1 -1
  264. package/dist/services/form-view.js +38 -13
  265. package/dist/services/form-view.js.map +1 -1
  266. package/dist/services/matrix-person.d.ts +37 -0
  267. package/dist/services/matrix-person.d.ts.map +1 -0
  268. package/dist/services/matrix-person.js +57 -0
  269. package/dist/services/matrix-person.js.map +1 -0
  270. package/dist/services/org-browser.d.ts +32 -0
  271. package/dist/services/org-browser.d.ts.map +1 -1
  272. package/dist/services/org-browser.js +90 -12
  273. package/dist/services/org-browser.js.map +1 -1
  274. package/dist/services/page-combination.d.ts +1 -1
  275. package/dist/services/page-combination.d.ts.map +1 -1
  276. package/dist/services/page-combination.js +43 -10
  277. package/dist/services/page-combination.js.map +1 -1
  278. package/dist/services/page-management.d.ts +67 -0
  279. package/dist/services/page-management.d.ts.map +1 -0
  280. package/dist/services/page-management.js +166 -0
  281. package/dist/services/page-management.js.map +1 -0
  282. package/dist/services/page-permission.d.ts +2 -2
  283. package/dist/services/page-permission.d.ts.map +1 -1
  284. package/dist/services/page-permission.js +22 -9
  285. package/dist/services/page-permission.js.map +1 -1
  286. package/dist/services/report/cell-transform.d.ts +62 -0
  287. package/dist/services/report/cell-transform.d.ts.map +1 -0
  288. package/dist/services/report/cell-transform.js +192 -0
  289. package/dist/services/report/cell-transform.js.map +1 -0
  290. package/dist/services/report/code-block.d.ts +45 -0
  291. package/dist/services/report/code-block.d.ts.map +1 -0
  292. package/dist/services/report/code-block.js +92 -0
  293. package/dist/services/report/code-block.js.map +1 -0
  294. package/dist/services/report/dataset.d.ts +40 -0
  295. package/dist/services/report/dataset.d.ts.map +1 -1
  296. package/dist/services/report/dataset.js +171 -1
  297. package/dist/services/report/dataset.js.map +1 -1
  298. package/dist/services/report/lifecycle.d.ts.map +1 -1
  299. package/dist/services/report/lifecycle.js +24 -3
  300. package/dist/services/report/lifecycle.js.map +1 -1
  301. package/dist/services/workflow-base-settings.d.ts.map +1 -1
  302. package/dist/services/workflow-base-settings.js +19 -5
  303. package/dist/services/workflow-base-settings.js.map +1 -1
  304. package/ecode-ui/README.md +9 -0
  305. package/ecode-ui/ui-types.zip +0 -0
  306. package/ecode-ui/version.json +7 -0
  307. package/package.json +4 -1
  308. package/skill-docs/SKILL.md +19 -5
  309. package/skill-docs/_catalog.md +22 -1
  310. package/skill-docs/actionflows/SKILL.md +15 -11
  311. package/skill-docs/actionflows/references/components/database/DMLExecute.md +4 -0
  312. package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +1 -1
  313. package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +2 -0
  314. package/skill-docs/actionflows/references/components/logic/MultipleExecution.md +9 -30
  315. package/skill-docs/actionflows/references/components/message/InnerMQSend.md +7 -3
  316. package/skill-docs/actionflows/references/components/serverless/ServerlessAction.md +4 -0
  317. package/skill-docs/actionflows/references/components/trigger/CustomTrigger.md +6 -6
  318. package/skill-docs/actionflows/references/components/trigger/InnerMQListener.md +46 -41
  319. package/skill-docs/actionflows/references/components/trigger/WebHookTrigger.md +4 -0
  320. package/skill-docs/actionflows/references/dynamic_capability_matrix.md +3 -4
  321. package/skill-docs/actionflows/references/function_rules.md +5 -1
  322. package/skill-docs/actionflows/references/trigger_runtime_notes.md +1 -1
  323. package/skill-docs/assets/factory/factory-custom-page.json +339 -0
  324. package/skill-docs/references/common/ref-cli-commands.md +34 -5
  325. package/skill-docs/references/ebuilder-designer/component-permission.md +131 -0
  326. package/skill-docs/references/ebuilder-designer/events/actions-interaction.md +132 -108
  327. package/skill-docs/references/ebuilder-designer/events/guide-events.md +112 -57
  328. package/skill-docs/references/ebuilder-designer/guide-custom-page.md +176 -0
  329. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +2 -0
  330. package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +2 -0
  331. package/skill-docs/references/ebuilder-designer/guide-designer.md +304 -296
  332. package/skill-docs/references/ebuilder-designer/guide-list.md +339 -0
  333. package/skill-docs/references/ebuilder-designer/guide-page-combination.md +162 -142
  334. package/skill-docs/references/ebuilder-designer/guide-page-management.md +90 -0
  335. package/skill-docs/references/ebuilder-designer/guide-page-permission.md +151 -145
  336. package/skill-docs/references/ebuilder-designer/guide-tabbar.md +57 -0
  337. package/skill-docs/references/esb-interface/guide-import.md +38 -34
  338. package/skill-docs/references/form/guide-create-form.md +13 -0
  339. package/skill-docs/references/form/guide-form-base-setting.md +78 -0
  340. package/skill-docs/references/form/guide-form-view.md +77 -13
  341. package/skill-docs/references/form/guide-list-columns.md +8 -0
  342. package/skill-docs/references/hrm/guide-matrix.md +16 -0
  343. package/skill-docs/references/report/cell-transform-guide.md +17 -3
  344. package/skill-docs/references/report/code-block-guide.md +54 -0
  345. package/skill-docs/references/report/dataset-sidebar-ops-guide.md +8 -0
  346. package/skill-docs/references/report/ref-report-commands.md +7 -1
  347. package/skill-docs/references/report/report-designer-feature-map.md +1 -1
  348. package/skill-docs/references/report/report-list-page-ops-guide.md +2 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"designer-tabbar.js","sourceRoot":"","sources":["../../src/commands/designer-tabbar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * ECode 页面本地检查。
4
+ *
5
+ * 与 `compile` 互补:`compile` 用 Babel 验语法/平台写法,`ecode check` 用 weapp-ui
6
+ * 的真实类型验“组件是否存在、属性是否正确、枚举取值是否合法”。
7
+ */
8
+ export declare function registerEcodeCommands(program: Command): void;
9
+ //# sourceMappingURL=ecode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecode.d.ts","sourceRoot":"","sources":["../../src/commands/ecode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkE5D"}
@@ -0,0 +1,81 @@
1
+ import { resolve } from 'node:path';
2
+ import { checkEcodeProject, countEcodeTypeFiles, ensureTypeScript, prepareEcodeTypes, } from '../services/ecode-check.js';
3
+ /**
4
+ * ECode 页面本地检查。
5
+ *
6
+ * 与 `compile` 互补:`compile` 用 Babel 验语法/平台写法,`ecode check` 用 weapp-ui
7
+ * 的真实类型验“组件是否存在、属性是否正确、枚举取值是否合法”。
8
+ */
9
+ export function registerEcodeCommands(program) {
10
+ const ecode = program
11
+ .command('ecode')
12
+ .description('ECode 页面本地检查(离线,不访问平台)');
13
+ ecode
14
+ .command('init')
15
+ .description('准备 ECode 类型底座(解压到本机缓存;只在使用 ECode 时运行一次)')
16
+ .option('--force', '强制重新解压')
17
+ .option('--json', 'JSON 输出')
18
+ .action(async (options) => {
19
+ try {
20
+ const ts = await ensureTypeScript({ install: true });
21
+ const prep = await prepareEcodeTypes({ force: options.force });
22
+ const files = countEcodeTypeFiles(prep.root);
23
+ if (options.json || program.opts().json) {
24
+ console.log(JSON.stringify({ ...prep, files, typescript: ts.version }, null, 2));
25
+ return;
26
+ }
27
+ console.log(prep.prepared ? '✅ ECode 类型底座已准备' : '✅ ECode 类型底座已就绪(跳过解压)');
28
+ console.log(` 组件库: @weapp/ui ${prep.version}`);
29
+ console.log(` 编译器: TypeScript ${ts.version}`);
30
+ console.log(` 缓存: ${prep.root}`);
31
+ console.log(` 文件: ${files} 耗时: ${prep.elapsedMs}ms`);
32
+ }
33
+ catch (error) {
34
+ console.error(`准备 ECode 类型底座失败: ${error.message}`);
35
+ process.exitCode = 1;
36
+ }
37
+ });
38
+ ecode
39
+ .command('check')
40
+ .description('用 weapp-ui 的真实类型检查页面代码:组件不存在 / 属性不存在 / 枚举取值不合法')
41
+ .argument('[dir]', '页面工程目录(含 entry.js)', process.cwd())
42
+ .option('--json', 'JSON 输出')
43
+ .option('--max <n>', '最多输出多少条', '50')
44
+ .action(async (dir, options) => {
45
+ const target = resolve(process.cwd(), dir);
46
+ const maxIssues = Math.max(1, Number.parseInt(options.max ?? '50', 10) || 50);
47
+ try {
48
+ const result = await checkEcodeProject(target, { maxIssues });
49
+ if (options.json || program.opts().json) {
50
+ console.log(JSON.stringify(result, null, 2));
51
+ }
52
+ else {
53
+ console.log(`ECode 类型检查 @weapp/ui ${result.libraryVersion}`);
54
+ console.log(`目录: ${result.dir}`);
55
+ if (result.typesPrepared)
56
+ console.log(`类型底座: 首次解压 → ${result.typesRoot}(以后不再重复)`);
57
+ console.log(`文件: ${result.files} 耗时: ${result.elapsedMs}ms`);
58
+ console.log('');
59
+ if (result.issues.length === 0) {
60
+ console.log('✅ 类型检查通过');
61
+ }
62
+ else {
63
+ for (const issue of result.issues) {
64
+ console.log(`❌ ${issue.file}:${issue.line} ${issue.code} ${issue.message}`);
65
+ if (issue.hint)
66
+ console.log(` → ${issue.hint}`);
67
+ }
68
+ console.log('');
69
+ console.log(`共 ${result.issues.length} 个问题`);
70
+ }
71
+ }
72
+ if (!result.ok)
73
+ process.exitCode = 1;
74
+ }
75
+ catch (error) {
76
+ console.error(`ECode 类型检查失败: ${error.message}`);
77
+ process.exitCode = 1;
78
+ }
79
+ });
80
+ }
81
+ //# sourceMappingURL=ecode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecode.js","sourceRoot":"","sources":["../../src/commands/ecode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,KAAK,GAAG,OAAO;SAClB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAEzC,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC;SAC3B,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;SAC3B,MAAM,CAAC,KAAK,EAAE,OAA4C,EAAE,EAAE;QAC7D,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAsB,CAAC,IAAI,EAAE,CAAC;gBAC5D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjF,OAAO;YACT,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,oBAAqB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,QAAQ,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACtD,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;SAC3B,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC;SACpC,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,OAAyC,EAAE,EAAE;QACvE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAC9D,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAsB,CAAC,IAAI,EAAE,CAAC;gBAC5D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;gBACjC,IAAI,MAAM,CAAC,aAAa;oBAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,SAAS,UAAU,CAAC,CAAC;gBAClF,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,KAAK,SAAS,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACN,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;wBAClC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;wBAC9E,IAAI,KAAK,CAAC,IAAI;4BAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;oBACpD,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iBAAkB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerFormBaseSettingCommands(form: Command, program: Command): void;
3
+ //# sourceMappingURL=form-base-setting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-base-setting.d.ts","sourceRoot":"","sources":["../../src/commands/form-base-setting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmHpC,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAkGrF"}
@@ -0,0 +1,192 @@
1
+ import { AuthSession } from '../core/auth.js';
2
+ import { ApiClient } from '../core/client.js';
3
+ import { resolveFormId } from '../services/form-id.js';
4
+ import { parseOnOff } from '../services/form-permission-edit.js';
5
+ import { BASE_SETTING_PARTS, MODE_VALUE_LABELS, optionsOf, readBaseSetting, setBaseSetting, } from '../services/form-base-setting.js';
6
+ function partLabel(part) {
7
+ return part === 'data' ? '数据设置' : '字段设置';
8
+ }
9
+ function attrOf(option) {
10
+ return option.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
11
+ }
12
+ /** 该键是不是某段的「设置类型」;缺键等价于读取系统设置。 */
13
+ function isModeKey(part, key) {
14
+ return optionsOf(part).some((o) => o.section?.modeKey === key);
15
+ }
16
+ function formatValue(part, change, which) {
17
+ const value = change[which];
18
+ if (change.auto)
19
+ return MODE_VALUE_LABELS[String(value)] ?? '读取系统设置';
20
+ const spec = optionsOf(part).find((o) => o.option === change.option);
21
+ if (value === undefined) {
22
+ if (isModeKey(part, change.key))
23
+ return '读取系统设置';
24
+ if (spec?.kind === 'boolean')
25
+ return '继承系统设置';
26
+ return '-';
27
+ }
28
+ if (spec?.kind === 'enum')
29
+ return spec.values?.[String(value)] ?? String(value);
30
+ if (value === true)
31
+ return '开';
32
+ if (value === false)
33
+ return '关';
34
+ return String(value);
35
+ }
36
+ async function context(program, appId, objId) {
37
+ const opts = program.opts();
38
+ const auth = await AuthSession.fromOptions(opts);
39
+ if (!auth)
40
+ throw new Error('无法加载认证');
41
+ const client = new ApiClient(auth);
42
+ const baseUrl = auth.getBaseUrl();
43
+ const formId = await resolveFormId(client, baseUrl, appId, objId);
44
+ if (!formId)
45
+ throw new Error(`无法获取表单 formId(objId=${objId})`);
46
+ return { opts, client, baseUrl, formId };
47
+ }
48
+ function showValue(value) {
49
+ return typeof value === 'object' ? JSON.stringify(value) : String(value);
50
+ }
51
+ function assertPart(value) {
52
+ if (value === undefined)
53
+ return undefined;
54
+ if (!BASE_SETTING_PARTS.includes(value)) {
55
+ throw new Error(`--part 仅支持 ${BASE_SETTING_PARTS.join(' / ')}`);
56
+ }
57
+ return value;
58
+ }
59
+ /** 收集本次点名的设置(CLI 选项名 → 值),并确定它属于哪一段。 */
60
+ function collectOptions(all, raw, explicitPart) {
61
+ const provided = [];
62
+ for (const { part, options } of all) {
63
+ for (const spec of options) {
64
+ const value = raw[attrOf(spec.option)];
65
+ if (value === undefined)
66
+ continue;
67
+ let parsed;
68
+ if (spec.kind === 'boolean') {
69
+ parsed = parseOnOff(value, `--${spec.option}`);
70
+ }
71
+ else {
72
+ const v = String(value);
73
+ if (!Object.keys(spec.values || {}).includes(v)) {
74
+ throw new Error(`--${spec.option} 只接受 ${Object.keys(spec.values || {}).join(' / ')}`);
75
+ }
76
+ parsed = v;
77
+ }
78
+ provided.push({ part, spec, value: parsed });
79
+ }
80
+ }
81
+ if (!provided.length) {
82
+ throw new Error('至少指定一项设置;可用:`form base-setting set --help`');
83
+ }
84
+ const parts = new Set(provided.map((p) => p.part));
85
+ if (parts.size > 1) {
86
+ throw new Error(`不能同时改多段设置:${[...parts].map(partLabel).join(' / ')},请分开执行或加 --part`);
87
+ }
88
+ const inferred = [...parts][0];
89
+ if (explicitPart && explicitPart !== inferred) {
90
+ throw new Error(`--${provided[0].spec.option} 属于「${partLabel(inferred)}」,不是「${partLabel(explicitPart)}」`);
91
+ }
92
+ const values = {};
93
+ for (const p of provided)
94
+ values[p.spec.option] = p.value;
95
+ return { part: explicitPart ?? inferred, values };
96
+ }
97
+ export function registerFormBaseSettingCommands(form, program) {
98
+ const baseSetting = form.command('base-setting')
99
+ .description('表单功能设置:字段设置(浏览框数据获取最新标题)/ 数据设置(字段联动、明细表按钮等)');
100
+ const all = BASE_SETTING_PARTS.map((part) => ({ part, options: optionsOf(part) }));
101
+ baseSetting.command('get')
102
+ .description('查看表单功能设置当前值')
103
+ .argument('<objId>', '表单 objId')
104
+ .argument('<appId>', '应用 ID')
105
+ .option('--part <p>', '设置分段:field 字段设置(默认)/ data 数据设置')
106
+ .option('--json', 'JSON 输出')
107
+ .action(async (objId, appId, raw) => {
108
+ try {
109
+ const part = assertPart(raw.part) ?? 'field';
110
+ const ctx = await context(program, appId, objId);
111
+ const setting = await readBaseSetting(ctx.client, ctx.baseUrl, appId, objId, ctx.formId, part);
112
+ const values = {};
113
+ for (const spec of optionsOf(part)) {
114
+ values[spec.option] = spec.kind === 'boolean' ? setting[spec.key] === true : setting[spec.key];
115
+ }
116
+ if (raw.json || ctx.opts.json) {
117
+ console.log(JSON.stringify({
118
+ objId, appId, formId: ctx.formId, part, values, setting,
119
+ }, null, 2));
120
+ return;
121
+ }
122
+ console.log(`表单 ${objId} 功能设置·${partLabel(part)}`);
123
+ for (const spec of optionsOf(part)) {
124
+ const value = setting[spec.key];
125
+ const isMode = spec.section?.modeKey === spec.key;
126
+ const inherited = !isMode && spec.section && setting[spec.section.modeKey] !== 'custom';
127
+ const shown = inherited
128
+ ? '继承系统设置'
129
+ : spec.kind === 'boolean'
130
+ ? (value === true ? '开' : '关')
131
+ : value === undefined
132
+ ? (isMode ? '读取系统设置' : '-')
133
+ : (spec.values?.[String(value)] ?? String(value));
134
+ console.log(` ${spec.label.padEnd(20)} ${shown} (${spec.key})`);
135
+ }
136
+ for (const [key, value] of Object.entries(setting)) {
137
+ if (optionsOf(part).some((o) => o.key === key))
138
+ continue;
139
+ console.log(` ${key.padEnd(28)} ${showValue(value)}`);
140
+ }
141
+ }
142
+ catch (error) {
143
+ console.error(error.message);
144
+ process.exitCode = 1;
145
+ }
146
+ });
147
+ const set = baseSetting.command('set')
148
+ .description('修改表单功能设置:只改点名的项,其余键原样回写,保存后回读校验')
149
+ .argument('<objId>', '表单 objId')
150
+ .argument('<appId>', '应用 ID')
151
+ .option('--part <p>', '设置分段:field 字段设置(默认)/ data 数据设置;不给则按选项推断');
152
+ for (const { part, options } of all) {
153
+ for (const spec of options) {
154
+ const placeholder = spec.kind === 'boolean' ? '<on|off>' : `<${Object.keys(spec.values || {}).join('|')}>`;
155
+ set.option(`--${spec.option} ${placeholder}`, `${spec.label}(${partLabel(part)}:${spec.key})`);
156
+ }
157
+ }
158
+ set.option('--json', 'JSON 输出');
159
+ set.action(async (objId, appId, raw) => {
160
+ try {
161
+ const explicitPart = assertPart(raw.part);
162
+ const picked = collectOptions(all, raw, explicitPart);
163
+ const ctx = await context(program, appId, objId);
164
+ const result = await setBaseSetting(ctx.client, ctx.baseUrl, appId, objId, ctx.formId, picked.part, picked.values);
165
+ if (raw.json || ctx.opts.json) {
166
+ console.log(JSON.stringify({
167
+ objId, appId, formId: ctx.formId, part: result.part,
168
+ unchanged: result.unchanged, changes: result.changes,
169
+ }, null, 2));
170
+ return;
171
+ }
172
+ if (result.unchanged) {
173
+ const names = optionsOf(result.part)
174
+ .filter((o) => picked.values[o.option] !== undefined)
175
+ .map((o) => `${o.label}已是目标值`);
176
+ console.log(`${names.join(';')},未修改`);
177
+ return;
178
+ }
179
+ for (const change of result.changes) {
180
+ const suffix = change.auto
181
+ ? '(自动切换,该段为读取系统设置时单项不生效)'
182
+ : '(已回读校验)';
183
+ console.log(`${change.label}:${formatValue(result.part, change, 'from')} → ${formatValue(result.part, change, 'to')}${suffix}`);
184
+ }
185
+ }
186
+ catch (error) {
187
+ console.error(error.message);
188
+ process.exitCode = 1;
189
+ }
190
+ });
191
+ }
192
+ //# sourceMappingURL=form-base-setting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-base-setting.js","sourceRoot":"","sources":["../../src/commands/form-base-setting.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Command } from 'commander';
2
+ import { ApiClient } from '../core/client.js';
2
3
  import type { LinkageEffect } from '../services/form-linkage-condition.js';
3
4
  /** 改联动的报文:形状 = 新建报文 + `id`,`dataSources` 原样回传读回的那份。 */
4
5
  export declare function buildFieldLinkageUpdatePayload(record: any, p: {
@@ -15,6 +16,9 @@ export declare function buildFieldLinkageUpdatePayload(record: any, p: {
15
16
  fissionState: number;
16
17
  }>;
17
18
  }): any;
19
+ /** 查询真实的 EnquiryForm 上下文,取选中参数行 id,不能用数据源字段 id 冒充。 */
20
+ export declare function hydrateEnquiryFieldIds(client: ApiClient, baseUrl: string, appId: string, objId: string, formName: string, fields: any[]): Promise<string>;
21
+ export declare function hydrateLinkageEventFieldIds(client: ApiClient, baseUrl: string, appId: string, formId: string, formName: string, allFields: any[], selected: any[]): Promise<void>;
18
22
  interface FormDetail {
19
23
  id: string;
20
24
  name: string;
@@ -49,6 +53,7 @@ export declare function buildQuickSaveDesign(p: {
49
53
  srcFormObjId: string;
50
54
  srcFormName: string;
51
55
  srcTableName?: string;
56
+ sourceTableContextId?: string;
52
57
  conditions: QuickCondition[];
53
58
  queryFields: any[];
54
59
  assigns: QuickAssign[];
@@ -1 +1 @@
1
- {"version":3,"file":"form-field-linkage.d.ts","sourceRoot":"","sources":["../../src/commands/form-field-linkage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAqG3E,uDAAuD;AACvD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;IAC7D,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IACzE,cAAc,EAAE,GAAG,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAC9C,uBAAuB;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChG,GAAG,GAAG,CAwBN;AAkBD,UAAU,UAAU;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,EAAE,CAAA;CAAE;AA0ChE,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAK/C;AAkBD,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CA4WtF;AAqeD,UAAU,WAAW;IAAG,QAAQ,EAAE,GAAG,CAAC;IAAC,WAAW,EAAE,GAAG,CAAC;IAAC,OAAO,CAAC,EAAE,UAAU,CAAC;CAAE;AA8EhF,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,GAAG,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE;IACtC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IACpE,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,GAAG,EAAE,CAAC;IAC3E,YAAY,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IACjE,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,WAAW,EAAE,GAAG,EAAE,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAC;IAC3C,sDAAsD;IACtD,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB;;;;OAIG;IACH,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzB,GAAG,GAAG,CA6RN"}
1
+ {"version":3,"file":"form-field-linkage.d.ts","sourceRoot":"","sources":["../../src/commands/form-field-linkage.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  import { resolveFormRecord } from '../services/form-id.js';
3
3
  import { AuthSession } from '../core/auth.js';
4
4
  import { ApiClient } from '../core/client.js';
5
- import { genSfId, normalizeNumericFrontId } from '../services/actionflow/id_generator.js';
5
+ import { genSfId, requireContextFieldId } from '../services/actionflow/id_generator.js';
6
6
  // 查询条件的算子与字段类型族:与动作流 EnquiryForm 共用同一套(filter_rules.ts)。
7
7
  import { conditionFieldFamily, normalizeFilterOperator } from '../services/actionflow/filter_rules.js';
8
8
  // 生效维度/触发时机与函数联动共用同一套解析,避免两处各写一份。
@@ -138,6 +138,53 @@ export function buildFieldLinkageUpdatePayload(record, p) {
138
138
  customParam: { appId: p.appId, objId: p.objId },
139
139
  };
140
140
  }
141
+ /** 查询真实的 EnquiryForm 上下文,取选中参数行 id,不能用数据源字段 id 冒充。 */
142
+ export async function hydrateEnquiryFieldIds(client, baseUrl, appId, objId, formName, fields) {
143
+ const queryFields = fields.map((field) => ({ id: esbFieldIdOf(field), content: String(field.fieldName), formId: objId, fieldGroup: { name: formName, id: objId } }));
144
+ const response = await client.post(`${baseUrl}/api/bs/esb/setting/component/getComponentContext`, {
145
+ type: 'EnquiryForm', data: {
146
+ currentApplication: appId, applicationId: appId, type: 'EnquiryForm', opType: 'list',
147
+ dataSource: { id: objId, text: formName, type: 'LOGIC', groupId: 'weaver-ebuilder-form-service', isPhysical: true, usage: 'all', detailTable: false, objType: 'physical', module: 'ebuilder', appId },
148
+ queryFields,
149
+ },
150
+ });
151
+ if (response?.code !== 200 || !Array.isArray(response.data))
152
+ throw new Error(`查询 ${formName} 组件上下文失败:${response?.msg || '未返回参数'}`);
153
+ const rows = response.data.filter((group) => String(group?.primaryKey || '') === 'FormData').flatMap((group) => Array.isArray(group?.tableData) ? group.tableData : []);
154
+ const findId = (paramKey) => {
155
+ const matches = rows.filter((row) => String(row?.paramKey || '') === paramKey);
156
+ if (matches.length !== 1)
157
+ throw new Error(`查询上下文中 '${paramKey}' 未唯一匹配,请确认选择的字段`);
158
+ return requireContextFieldId(matches[0].id, `上下文字段 '${paramKey}' frontId`);
159
+ };
160
+ for (const field of fields)
161
+ field.contextFieldId = findId(`${objId}[].${esbFieldIdOf(field)}`);
162
+ const tables = rows.filter((row) => String(row?.paramKey || '') === `${objId}[]`);
163
+ if (tables.length > 1)
164
+ throw new Error(`查询上下文中 '${objId}[]' 存在多个表参数`);
165
+ return tables.length ? requireContextFieldId(tables[0].id, `查询结果表 '${objId}' frontId`) : '';
166
+ }
167
+ export async function hydrateLinkageEventFieldIds(client, baseUrl, appId, formId, formName, allFields, selected) {
168
+ if (!selected.length)
169
+ return;
170
+ const fields = allFields.filter((field) => /^\d+$/.test(String(field.fieldId))).map((field) => ({
171
+ id: String(field.fieldId), orderNum: 1, paramName: field.dataKey || field.fieldKey || '', showName: field.fieldName,
172
+ paramType: 'string', multipleSelect: field.multiSelect === true || field.multiSelect === 'true', componentKey: field.fieldKey || '', required: false,
173
+ }));
174
+ const response = await client.post(`${baseUrl}/api/bs/esb/setting/component/getComponentContext`, {
175
+ type: 'FieldLinkage', data: { ownForm: [{ id: formId, name: formName }], ownModule: 'ebuilderform', ownApplication: [{ id: appId, name: appId }], formFields: [{ id: genSfId(), formId, showName: formName, orderNum: 0, fields, main: true }] },
176
+ });
177
+ if (response?.code !== 200 || !Array.isArray(response.data))
178
+ throw new Error(`查询字段联动触发上下文失败:${response?.msg || '未返回参数'}`);
179
+ const rows = response.data.filter((group) => String(group?.primaryKey || '') === 'FormData').flatMap((group) => Array.isArray(group?.tableData) ? group.tableData : []);
180
+ for (const field of selected) {
181
+ const key = `${formId}.${String(field.fieldId)}`;
182
+ const matches = rows.filter((row) => String(row?.paramKey || '') === key);
183
+ if (matches.length !== 1)
184
+ throw new Error(`字段联动上下文 '${key}' 未唯一匹配`);
185
+ field.contextFieldId = requireContextFieldId(matches[0].id, `字段联动 '${key}' frontId`);
186
+ }
187
+ }
141
188
  async function getFormId(client, baseUrl, appId, objId) {
142
189
  const f = await resolveFormRecord(client, baseUrl, appId, objId);
143
190
  if (!f?.formId)
@@ -588,6 +635,12 @@ export function registerFormFieldLinkageCommands(form, program) {
588
635
  console.error('需要 --hops 或 --source-form/--query-field');
589
636
  process.exit(1);
590
637
  }
638
+ for (const hop of hops) {
639
+ const selected = { fieldName: hop.queryFieldName, esbId: hop.queryEsbId, contextFieldId: '' };
640
+ await hydrateEnquiryFieldIds(client, baseUrl, appId, hop.srcFormObjId, hop.srcFormName, [selected]);
641
+ hop.contextFieldId = selected.contextFieldId;
642
+ }
643
+ await hydrateLinkageEventFieldIds(client, baseUrl, appId, selfFormId, selfFormName, selfFields, [triggerField]);
591
644
  // orgId
592
645
  const formRes = await client.post(`${baseUrl}/api/ebuilder/form/form/formmanage/getForm?apid=${appId}`, { module: 'ebuilderform', form: { id: selfFormId }, baseSettingPartType: 'basic', customParam: { appId, objId } }, { ebbusinessid: selfFormId });
593
646
  const orgId = String(formRes?.data?.form?.orgId || '');
@@ -604,7 +657,7 @@ export function registerFormFieldLinkageCommands(form, program) {
604
657
  const sceneId = String(appRes?.data?.activeVersion || '');
605
658
  console.error(` ESB app: ${esbAppId} scene: ${sceneId}`);
606
659
  // 2. saveDesign(FieldLinkage + N EnquiryForm chained + Output)
607
- const design = buildSaveDesign({ esbAppId, sceneId, lightId: FIELD_LINKAGE_LIGHT_ID, appName: linkageName, selfFormId, selfFormName, appId, orgId, triggerFieldId: triggerField.fieldId, triggerFieldName: triggerField.fieldName, triggerFieldKey: triggerField.fieldKey || '', selfFields, hops, targetFieldId: targetField.fieldId, targetFieldKey: targetField.fieldKey || '' });
660
+ const design = buildSaveDesign({ esbAppId, sceneId, lightId: FIELD_LINKAGE_LIGHT_ID, appName: linkageName, selfFormId, selfFormName, appId, orgId, triggerFieldId: triggerField.fieldId, triggerContextId: triggerField.contextFieldId, triggerFieldName: triggerField.fieldName, triggerFieldKey: triggerField.fieldKey || '', selfFields, hops, targetFieldId: targetField.fieldId, targetFieldKey: targetField.fieldKey || '' });
608
661
  const designRes = await client.post(`${baseUrl}${ESB_DESIGN_API}/saveDesign`, design, { ebbusinessid: esbAppId });
609
662
  if (designRes?.code !== 200 || !designRes?.status) {
610
663
  console.error(`saveDesign 失败: ${designRes?.msg}`);
@@ -656,7 +709,7 @@ function buildOutputFormulaValue(p) {
656
709
  dataType: 'attribute', arrs: false, paramTypeString: 'STRING', dataTypeSting: 'ATTRIBUTE',
657
710
  formulaId: '0', name: String(p.srcField.fieldName), source: p.sourceWId,
658
711
  value: `FormData.${p.srcFormObjId}[${rowRef}].${sid}`, type: '3', formulaType: 'string',
659
- frontId: genSfId(), businessId: genSfId(), id: formulaId, applicationId: p.esbAppId,
712
+ frontId: requireContextFieldId(p.srcField.contextFieldId, `查询结果字段 '${p.srcField.fieldName}' frontId`), businessId: genSfId(), id: formulaId, applicationId: p.esbAppId,
660
713
  childs: [{
661
714
  formulaType: 'string', name: '0', id: genSfId(), position: rowRef,
662
715
  type: '1', value: '0', childs: [],
@@ -692,12 +745,12 @@ function buildSaveDesign(p) {
692
745
  const isFormRef = i === 0; // 第一跳过滤引用本表触发字段(form field),后续跳引用前一跳查询结果(query result)
693
746
  // 过滤值引用
694
747
  const filterValue = isFormRef
695
- ? { paramKey: `${p.selfFormId}.${p.triggerFieldId}`, paramName: p.triggerFieldId, showName: p.triggerFieldName, paramType: 'string', dataType: 'node', arrs: false, paramTypeString: 'STRING', dataTypeSting: 'NODE', paramId: p.triggerFieldId, name: p.triggerFieldName, source: eventId, value: formDataTrigger, type: '3', formulaType: 'string', frontId: normalizeNumericFrontId(p.triggerFieldId, '字段联动 FormulaBean.frontId'), config: { paramKey: `${p.selfFormId}.${p.triggerFieldId}`, paramType: 'string', parentName: `${p.selfFormName}.${p.triggerFieldName}`, newParentName: `${p.selfFormName}.${p.triggerFieldName}`, comId: eventId, isMultCom: false, tableName: '表单数据', fieldInfo: { tablePrimaryKey: 'FormData', paramKey: `${p.selfFormId}.${p.triggerFieldId}` } }, applicationId: p.esbAppId, fieldType: 'string' }
748
+ ? { paramKey: `${p.selfFormId}.${p.triggerFieldId}`, paramName: p.triggerFieldId, showName: p.triggerFieldName, paramType: 'string', dataType: 'node', arrs: false, paramTypeString: 'STRING', dataTypeSting: 'NODE', paramId: p.triggerFieldId, name: p.triggerFieldName, source: eventId, value: formDataTrigger, type: '3', formulaType: 'string', frontId: requireContextFieldId(p.triggerContextId, '字段联动 FormulaBean.frontId'), config: { paramKey: `${p.selfFormId}.${p.triggerFieldId}`, paramType: 'string', parentName: `${p.selfFormName}.${p.triggerFieldName}`, newParentName: `${p.selfFormName}.${p.triggerFieldName}`, comId: eventId, isMultCom: false, tableName: '表单数据', fieldInfo: { tablePrimaryKey: 'FormData', paramKey: `${p.selfFormId}.${p.triggerFieldId}` } }, applicationId: p.esbAppId, fieldType: 'string' }
696
749
  : (() => {
697
750
  const prevHop = p.hops[i - 1];
698
751
  const bizId = genSfId();
699
752
  const pk = `${prevHop.srcFormObjId}[].${prevHop.queryEsbId}`;
700
- return { paramKey: pk, paramName: prevHop.queryEsbId, showName: prevHop.queryFieldName, paramType: 'string', dataType: 'attribute', arrs: false, paramTypeString: 'STRING', dataTypeSting: 'ATTRIBUTE', formulaId: '0', name: prevHop.queryFieldName, source: prevWId, value: `FormData.${prevHop.srcFormObjId}[${bizId}].${prevHop.queryEsbId}`, type: '3', formulaType: 'string', config: { paramKey: pk, paramType: 'string', parentName: `${prevHop.srcFormName}[].${prevHop.queryFieldName}`, newParentName: `${prevHop.srcFormName}[].${prevHop.queryFieldName}`, comId: prevWId, isMultCom: false, tableName: '表单数据', fieldInfo: { tablePrimaryKey: 'FormData', paramKey: pk }, switchType: 'assign' }, applicationId: p.esbAppId, fieldType: 'string' };
753
+ return { paramKey: pk, paramName: prevHop.queryEsbId, showName: prevHop.queryFieldName, paramType: 'string', dataType: 'attribute', arrs: false, paramTypeString: 'STRING', dataTypeSting: 'ATTRIBUTE', formulaId: '0', name: prevHop.queryFieldName, source: prevWId, value: `FormData.${prevHop.srcFormObjId}[${bizId}].${prevHop.queryEsbId}`, type: '3', formulaType: 'string', frontId: requireContextFieldId(prevHop.contextFieldId, '查询结果字段 frontId'), config: { paramKey: pk, paramType: 'string', parentName: `${prevHop.srcFormName}[].${prevHop.queryFieldName}`, newParentName: `${prevHop.srcFormName}[].${prevHop.queryFieldName}`, comId: prevWId, isMultCom: false, tableName: '表单数据', fieldInfo: { tablePrimaryKey: 'FormData', paramKey: pk }, switchType: 'assign' }, applicationId: p.esbAppId, fieldType: 'string' };
701
754
  })();
702
755
  enquiryActions.push({
703
756
  id: eqWId, wId: eqWId, nodeType: 'Normal', comType: 'EnquiryForm', type: 'EnquiryForm',
@@ -728,7 +781,7 @@ function buildSaveDesign(p) {
728
781
  outputStatus: '1', pageAction: '0', reminder: '0', fixedData: [], triggerFlag: false, nextAction: false, customOutputData: '', currentApplication: p.esbAppId,
729
782
  fieldLinkCustomParamSetting: {
730
783
  customId: '', formType: 'output', businessModule: '',
731
- tableList: [{ id: genSfId(), formId: p.selfFormId, showName: p.selfFormName, orderNum: 0, main: true, isMain: true, fields: [{ id: genSfId(), paramName: '', showName: '', paramType: 'string', isRequired: false, fieldComments: '', skipNull: '0', assignFieldId: p.targetFieldId, fieldPath: `${p.selfFormId}.${p.targetFieldId}`, fieldType: 'Ebuilder', formulaValue: buildOutputFormulaValue({ srcFormObjId: lastHop.srcFormObjId, srcFormName: lastHop.srcFormName, srcField: { fieldId: lastHop.queryFieldId, fieldName: lastHop.queryFieldName, esbId: lastHop.queryEsbId }, sourceWId: prevWId, esbAppId: p.esbAppId }) }] }],
784
+ tableList: [{ id: genSfId(), formId: p.selfFormId, showName: p.selfFormName, orderNum: 0, main: true, isMain: true, fields: [{ id: genSfId(), paramName: '', showName: '', paramType: 'string', isRequired: false, fieldComments: '', skipNull: '0', assignFieldId: p.targetFieldId, fieldPath: `${p.selfFormId}.${p.targetFieldId}`, fieldType: 'Ebuilder', formulaValue: buildOutputFormulaValue({ srcFormObjId: lastHop.srcFormObjId, srcFormName: lastHop.srcFormName, srcField: { fieldId: lastHop.queryFieldId, fieldName: lastHop.queryFieldName, esbId: lastHop.queryEsbId, contextFieldId: lastHop.contextFieldId }, sourceWId: prevWId, esbAppId: p.esbAppId }) }] }],
732
785
  deleteTableIds: [], appId: p.esbAppId,
733
786
  }, applicationId: p.esbAppId,
734
787
  },
@@ -768,7 +821,7 @@ function buildContextFormula(field, srcFormObjId, srcFormName, eqWId) {
768
821
  return {
769
822
  paramType: 'string', formulaType: 'string', name: String(field.fieldName),
770
823
  businessId: genSfId(), selectType: '-1', id: genSfId(), source: eqWId, type: '3',
771
- value: valuePath,
824
+ value: valuePath, frontId: requireContextFieldId(field.contextFieldId, '查询结果条件字段 frontId'),
772
825
  config: {
773
826
  paramKey, isMultCom: false, comType: 'EnquiryForm', parentComId: '0',
774
827
  fieldInfo: { paramKey, tablePrimaryKey: 'FormData' },
@@ -817,7 +870,7 @@ function buildSelfContextFormula(field, selfFormId, selfFormName, eventId, esbAp
817
870
  paramTypeString: 'STRING', dataTypeSting: 'NODE', paramId: fid,
818
871
  hideParamNameInSelect: false, hideParam: false, readonlyParam: false, sensitiveFlag: false, newdata: false,
819
872
  parentName, name: String(field.fieldName),
820
- source: eventId, value: valuePath, type: '3', formulaType: 'string', frontId: fid,
873
+ source: eventId, value: valuePath, type: '3', formulaType: 'string', frontId: requireContextFieldId(field.contextFieldId, '字段联动上下文 frontId'),
821
874
  config: {
822
875
  paramKey, paramType: 'string', parentName, newParentName: parentName,
823
876
  multKey: '', multName: '',
@@ -953,6 +1006,12 @@ async function updatePreconditionOrExit(p) {
953
1006
  const srcFields = await getFormFields(p.client, p.baseUrl, srcObjId, p.auth.userId, p.auth.tenantKey);
954
1007
  const selfFields = await getFormFields(p.client, p.baseUrl, p.objId, p.auth.userId, p.auth.tenantKey);
955
1008
  const conds = parsePreconditionListOrExit(p.precondition || [], srcFields, selfFields);
1009
+ const sourceRefs = conds.flatMap((condition) => [condition.field, ...(condition.refField && !condition.refSelf ? [condition.refField] : [])]);
1010
+ const ownerAppId = String(design.event?.data?.ownApplication?.[0]?.id || enquiry?.data?.dataSource?.appId || '');
1011
+ if (!ownerAppId)
1012
+ throw new Error('字段联动未返回所属应用 ID,无法查询组件上下文');
1013
+ await hydrateEnquiryFieldIds(p.client, p.baseUrl, ownerAppId, srcObjId, srcFormName, [...new Set(sourceRefs)]);
1014
+ await hydrateLinkageEventFieldIds(p.client, p.baseUrl, ownerAppId, String(design.event?.data?.ownForm?.[0]?.id || p.record?.formId || ''), String(design.event?.data?.ownForm?.[0]?.name || ''), selfFields, conds.filter((condition) => condition.refSelf && condition.refField).map((condition) => condition.refField));
956
1015
  const info = await savePreconditionOrExit({
957
1016
  client: p.client, baseUrl: p.baseUrl, conds,
958
1017
  srcFormObjId: srcObjId, srcFormName, eqWId: String(enquiry.wId),
@@ -1001,6 +1060,7 @@ async function addQuickLinkage(p) {
1001
1060
  const refField = c.literal && c.literal.startsWith('@') ? findFieldId(selfFields, c.literal.slice(1)) : undefined;
1002
1061
  return { field: c.field, func: c.func, literal: refField ? undefined : c.literal, range: c.range, refField };
1003
1062
  });
1063
+ const preconditions = cmdOpts.precondition.length ? parsePreconditionListOrExit(cmdOpts.precondition, srcFields, selfFields) : [];
1004
1064
  const assigns = cmdOpts.assign.map(parseAssignExpr);
1005
1065
  const assignPairs = assigns.map(a => {
1006
1066
  const t = splitAssignTarget(a.target);
@@ -1039,12 +1099,18 @@ async function addQuickLinkage(p) {
1039
1099
  ...queryNames,
1040
1100
  ...assigns.map(a => a.src),
1041
1101
  ...[...basis.values()].map((f) => f.fieldName),
1102
+ ...preconditions.flatMap((condition) => [condition.field.fieldName, ...(condition.refField && !condition.refSelf ? [condition.refField.fieldName] : [])]),
1042
1103
  ])];
1043
1104
  const queryFields = queryFieldList.map(n => findFieldId(srcFields, n, { allowSystem: true }));
1044
1105
  if (queryFields.length === 0) {
1045
1106
  console.error('需要 --query-fields 或 --assign 指定查询字段');
1046
1107
  process.exit(1);
1047
1108
  }
1109
+ const sourceTableContextId = await hydrateEnquiryFieldIds(client, baseUrl, appId, cmdOpts.sourceForm, srcFormName, queryFields);
1110
+ await hydrateLinkageEventFieldIds(client, baseUrl, appId, selfFormId, selfFormName, selfFields, [...condList, ...preconditions].filter((item) => item.refField && (item.refSelf || !('refSelf' in item))).map((item) => item.refField));
1111
+ if (assignPairs.some((item) => item.subForm && !basis.has(item.subForm.id)) && !sourceTableContextId) {
1112
+ throw new Error('查询结果上下文未返回表参数的真实 ID,无法设置明细依据值');
1113
+ }
1048
1114
  // orgId:ESB app 必须归属机构,否则 saveDesign 失败
1049
1115
  const formRes = await client.post(`${baseUrl}/api/ebuilder/form/form/formmanage/getForm?apid=${appId}`, { module: 'ebuilderform', form: { id: selfFormId }, baseSettingPartType: 'basic', customParam: { appId, objId } }, { ebbusinessid: selfFormId });
1050
1116
  const orgId = String(formRes?.data?.form?.orgId || '');
@@ -1065,13 +1131,13 @@ async function addQuickLinkage(p) {
1065
1131
  const design = buildQuickSaveDesign({
1066
1132
  esbAppId, sceneId, lightId: FIELD_LINKAGE_LIGHT_ID, appName: linkageName,
1067
1133
  selfFormId, selfFormName, appId, selfFields,
1068
- srcFormObjId: cmdOpts.sourceForm, srcFormName, srcTableName,
1134
+ srcFormObjId: cmdOpts.sourceForm, srcFormName, srcTableName, sourceTableContextId,
1069
1135
  conditions: condList,
1070
1136
  queryFields, assigns: assignPairs,
1071
1137
  details: selfDetails, basis,
1072
1138
  });
1073
- if (cmdOpts.precondition.length > 0) {
1074
- const conds = parsePreconditionListOrExit(cmdOpts.precondition, srcFields, selfFields);
1139
+ if (preconditions.length > 0) {
1140
+ const conds = preconditions;
1075
1141
  const info = await savePreconditionOrExit({
1076
1142
  client, baseUrl, conds,
1077
1143
  srcFormObjId: String(cmdOpts.sourceForm), srcFormName,
@@ -1235,7 +1301,7 @@ export function buildQuickSaveDesign(p) {
1235
1301
  paramType: 'string', dataType: 'node', arrs: false, paramTypeString: 'STRING', dataTypeSting: 'NODE',
1236
1302
  paramId: rfId, name: String(rf.fieldName), source: eventId,
1237
1303
  value: `FormData.${p.selfFormId}.${rfId}`, type: '3', formulaType: 'string',
1238
- frontId: normalizeNumericFrontId(rfId, '字段联动 FormulaBean.frontId'),
1304
+ frontId: requireContextFieldId(rf.contextFieldId, '字段联动 FormulaBean.frontId'),
1239
1305
  config: {
1240
1306
  paramKey: `${p.selfFormId}.${rfId}`, paramType: 'string',
1241
1307
  parentName: `${p.selfFormName}.${rf.fieldName}`, newParentName: `${p.selfFormName}.${rf.fieldName}`,
@@ -1321,7 +1387,7 @@ export function buildQuickSaveDesign(p) {
1321
1387
  fieldType: 'string', formulaType: 'string', applicationId: p.esbAppId, switchType: 'sub',
1322
1388
  config: {
1323
1389
  originValue: 'esbAssignSelf', switchType: 'sub', id: 'esbAssignSelf',
1324
- content: `${sf.fieldName}(依据值本身)`, source: eqWId, frontId: genSfId(),
1390
+ content: `${sf.fieldName}(依据值本身)`, source: eqWId, frontId: requireContextFieldId(sf.contextFieldId, '依据值字段 frontId'),
1325
1391
  value: `FormData.${p.srcFormObjId}[].${sid}`, paramKey,
1326
1392
  config: baseFormulaValue(sf).config, level: 0, basisType: 'formSetting',
1327
1393
  },
@@ -1346,7 +1412,7 @@ export function buildQuickSaveDesign(p) {
1346
1412
  hideParamNameInSelect: false, hideParam: false, readonlyParam: false, sensitiveFlag: false, newdata: false,
1347
1413
  parentName: `${p.srcFormName}[].${field.fieldName}`, name: String(field.fieldName),
1348
1414
  source: eqWId, value: `FormData.${p.srcFormObjId}[].${fid}`, type: '3', formulaType: 'string',
1349
- frontId: genSfId(),
1415
+ frontId: requireContextFieldId(field.contextFieldId, '依据值字段 frontId'),
1350
1416
  config: {
1351
1417
  paramKey, paramType: 'string',
1352
1418
  parentName: `${p.srcFormName}[].${field.fieldName}`, newParentName: `${p.srcFormName}[].${field.fieldName}`,
@@ -1385,7 +1451,7 @@ export function buildQuickSaveDesign(p) {
1385
1451
  newParentName: srcTableParentName,
1386
1452
  });
1387
1453
  const buildTableBasisValue = () => ({
1388
- frontId: p.srcFormObjId,
1454
+ frontId: requireContextFieldId(p.sourceTableContextId, '查询结果表 frontId'),
1389
1455
  formulaType: 'json',
1390
1456
  name: srcTableLabel,
1391
1457
  businessId: genSfId(),
@@ -1416,7 +1482,7 @@ export function buildQuickSaveDesign(p) {
1416
1482
  value: sid,
1417
1483
  childs: [],
1418
1484
  config: {
1419
- frontId: genSfId(),
1485
+ frontId: requireContextFieldId(sf.contextFieldId, '依据值下级字段 frontId'),
1420
1486
  paramKey: `${p.srcFormObjId}[].${sid}`,
1421
1487
  basisType: 'formSetting',
1422
1488
  switchType: 'sub',