weaver-e10-builder 1.5.13 → 1.5.15

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 (340) hide show
  1. package/dist/commands/actionflow.d.ts.map +1 -1
  2. package/dist/commands/actionflow.js +1 -0
  3. package/dist/commands/actionflow.js.map +1 -1
  4. package/dist/commands/designer-setters.d.ts.map +1 -1
  5. package/dist/commands/designer-setters.js +148 -47
  6. package/dist/commands/designer-setters.js.map +1 -1
  7. package/dist/commands/form-add-detail-table.d.ts.map +1 -1
  8. package/dist/commands/form-add-detail-table.js +53 -7
  9. package/dist/commands/form-add-detail-table.js.map +1 -1
  10. package/dist/commands/form-browser-definition.d.ts +14 -0
  11. package/dist/commands/form-browser-definition.d.ts.map +1 -0
  12. package/dist/commands/form-browser-definition.js +493 -0
  13. package/dist/commands/form-browser-definition.js.map +1 -0
  14. package/dist/commands/form-code.d.ts +5 -0
  15. package/dist/commands/form-code.d.ts.map +1 -0
  16. package/dist/commands/form-code.js +276 -0
  17. package/dist/commands/form-code.js.map +1 -0
  18. package/dist/commands/form-engine-linkage.d.ts +3 -0
  19. package/dist/commands/form-engine-linkage.d.ts.map +1 -0
  20. package/dist/commands/form-engine-linkage.js +199 -0
  21. package/dist/commands/form-engine-linkage.js.map +1 -0
  22. package/dist/commands/form-formula.d.ts.map +1 -1
  23. package/dist/commands/form-formula.js +7 -19
  24. package/dist/commands/form-formula.js.map +1 -1
  25. package/dist/commands/form-layout-template-advanced.d.ts +3 -0
  26. package/dist/commands/form-layout-template-advanced.d.ts.map +1 -0
  27. package/dist/commands/form-layout-template-advanced.js +115 -0
  28. package/dist/commands/form-layout-template-advanced.js.map +1 -0
  29. package/dist/commands/form-layout-template-easy.d.ts +3 -0
  30. package/dist/commands/form-layout-template-easy.d.ts.map +1 -0
  31. package/dist/commands/form-layout-template-easy.js +59 -0
  32. package/dist/commands/form-layout-template-easy.js.map +1 -0
  33. package/dist/commands/form-layout.d.ts.map +1 -1
  34. package/dist/commands/form-layout.js +77 -0
  35. package/dist/commands/form-layout.js.map +1 -1
  36. package/dist/commands/form-list-filter.js +1 -1
  37. package/dist/commands/form-list-filter.js.map +1 -1
  38. package/dist/commands/form-list-utils.d.ts +5 -0
  39. package/dist/commands/form-list-utils.d.ts.map +1 -1
  40. package/dist/commands/form-list-utils.js +23 -3
  41. package/dist/commands/form-list-utils.js.map +1 -1
  42. package/dist/commands/form-permission.d.ts.map +1 -1
  43. package/dist/commands/form-permission.js +55 -19
  44. package/dist/commands/form-permission.js.map +1 -1
  45. package/dist/commands/form-physical-table.d.ts.map +1 -1
  46. package/dist/commands/form-physical-table.js +8 -2
  47. package/dist/commands/form-physical-table.js.map +1 -1
  48. package/dist/commands/form.d.ts.map +1 -1
  49. package/dist/commands/form.js +143 -5
  50. package/dist/commands/form.js.map +1 -1
  51. package/dist/commands/menu.d.ts +68 -2
  52. package/dist/commands/menu.d.ts.map +1 -1
  53. package/dist/commands/menu.js +186 -41
  54. package/dist/commands/menu.js.map +1 -1
  55. package/dist/commands/page.d.ts.map +1 -1
  56. package/dist/commands/page.js +29 -6
  57. package/dist/commands/page.js.map +1 -1
  58. package/dist/commands/special.d.ts.map +1 -1
  59. package/dist/commands/special.js +3 -2
  60. package/dist/commands/special.js.map +1 -1
  61. package/dist/commands/wf-form.d.ts.map +1 -1
  62. package/dist/commands/wf-form.js +76 -31
  63. package/dist/commands/wf-form.js.map +1 -1
  64. package/dist/commands/workflow-auth-resp.js +2 -2
  65. package/dist/commands/workflow-auth-resp.js.map +1 -1
  66. package/dist/commands/workflow-base-command.d.ts +4 -0
  67. package/dist/commands/workflow-base-command.d.ts.map +1 -0
  68. package/dist/commands/workflow-base-command.js +6 -0
  69. package/dist/commands/workflow-base-command.js.map +1 -0
  70. package/dist/commands/workflow-base-settings.d.ts +3 -0
  71. package/dist/commands/workflow-base-settings.d.ts.map +1 -0
  72. package/dist/commands/workflow-base-settings.js +76 -0
  73. package/dist/commands/workflow-base-settings.js.map +1 -0
  74. package/dist/commands/workflow-condition.d.ts.map +1 -1
  75. package/dist/commands/workflow-condition.js +59 -450
  76. package/dist/commands/workflow-condition.js.map +1 -1
  77. package/dist/commands/workflow-export.d.ts +9 -0
  78. package/dist/commands/workflow-export.d.ts.map +1 -0
  79. package/dist/commands/workflow-export.js +121 -0
  80. package/dist/commands/workflow-export.js.map +1 -0
  81. package/dist/commands/workflow-function-settings.d.ts +3 -0
  82. package/dist/commands/workflow-function-settings.d.ts.map +1 -0
  83. package/dist/commands/workflow-function-settings.js +47 -0
  84. package/dist/commands/workflow-function-settings.js.map +1 -0
  85. package/dist/commands/workflow-node.d.ts.map +1 -1
  86. package/dist/commands/workflow-node.js +28 -53
  87. package/dist/commands/workflow-node.js.map +1 -1
  88. package/dist/commands/workflow-operator-batch.d.ts +3 -0
  89. package/dist/commands/workflow-operator-batch.d.ts.map +1 -0
  90. package/dist/commands/workflow-operator-batch.js +35 -0
  91. package/dist/commands/workflow-operator-batch.js.map +1 -0
  92. package/dist/commands/workflow-setting.d.ts.map +1 -1
  93. package/dist/commands/workflow-setting.js +137 -406
  94. package/dist/commands/workflow-setting.js.map +1 -1
  95. package/dist/commands/workflow-subprocess.d.ts.map +1 -1
  96. package/dist/commands/workflow-subprocess.js +21 -33
  97. package/dist/commands/workflow-subprocess.js.map +1 -1
  98. package/dist/commands/workflow.d.ts.map +1 -1
  99. package/dist/commands/workflow.js +18 -33
  100. package/dist/commands/workflow.js.map +1 -1
  101. package/dist/index.js +18 -1
  102. package/dist/index.js.map +1 -1
  103. package/dist/services/actionflow/browser_source.d.ts +9 -0
  104. package/dist/services/actionflow/browser_source.d.ts.map +1 -0
  105. package/dist/services/actionflow/browser_source.js +12 -0
  106. package/dist/services/actionflow/browser_source.js.map +1 -0
  107. package/dist/services/actionflow/components/date_trigger.js +1 -1
  108. package/dist/services/actionflow/components/date_trigger.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 +178 -25
  111. package/dist/services/actionflow/components/document_actions.js.map +1 -1
  112. package/dist/services/actionflow/components/enquiry_form.js +1 -1
  113. package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
  114. package/dist/services/actionflow/components/logic_flow_set.d.ts.map +1 -1
  115. package/dist/services/actionflow/components/logic_flow_set.js +80 -8
  116. package/dist/services/actionflow/components/logic_flow_set.js.map +1 -1
  117. package/dist/services/actionflow/components/meeting_create.d.ts.map +1 -1
  118. package/dist/services/actionflow/components/meeting_create.js +1 -0
  119. package/dist/services/actionflow/components/meeting_create.js.map +1 -1
  120. package/dist/services/actionflow/components/schedule_create.d.ts.map +1 -1
  121. package/dist/services/actionflow/components/schedule_create.js +2 -0
  122. package/dist/services/actionflow/components/schedule_create.js.map +1 -1
  123. package/dist/services/actionflow/components/time_batch_trigger.js +1 -1
  124. package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
  125. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
  126. package/dist/services/actionflow/components/workflow_actions.js +6 -2
  127. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  128. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  129. package/dist/services/actionflow/context_preflight.js +103 -6
  130. package/dist/services/actionflow/context_preflight.js.map +1 -1
  131. package/dist/services/actionflow/form_source.d.ts +2 -0
  132. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  133. package/dist/services/actionflow/form_source.js +8 -0
  134. package/dist/services/actionflow/form_source.js.map +1 -1
  135. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  136. package/dist/services/actionflow/formula_service.js +35 -19
  137. package/dist/services/actionflow/formula_service.js.map +1 -1
  138. package/dist/services/actionflow/logicflow_source.d.ts +5 -0
  139. package/dist/services/actionflow/logicflow_source.d.ts.map +1 -0
  140. package/dist/services/actionflow/logicflow_source.js +15 -0
  141. package/dist/services/actionflow/logicflow_source.js.map +1 -0
  142. package/dist/services/actionflow/preflight_service.d.ts +15 -0
  143. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  144. package/dist/services/actionflow/preflight_service.js +558 -26
  145. package/dist/services/actionflow/preflight_service.js.map +1 -1
  146. package/dist/services/actionflow/runtime_metadata.d.ts +8 -0
  147. package/dist/services/actionflow/runtime_metadata.d.ts.map +1 -1
  148. package/dist/services/actionflow/runtime_metadata.js +25 -0
  149. package/dist/services/actionflow/runtime_metadata.js.map +1 -1
  150. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  151. package/dist/services/actionflow/workflow_compiler.js +50 -10
  152. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  153. package/dist/services/actionflow/workflow_source.d.ts +2 -0
  154. package/dist/services/actionflow/workflow_source.d.ts.map +1 -1
  155. package/dist/services/actionflow/workflow_source.js +7 -0
  156. package/dist/services/actionflow/workflow_source.js.map +1 -1
  157. package/dist/services/auth-resp-condition.d.ts +7 -3
  158. package/dist/services/auth-resp-condition.d.ts.map +1 -1
  159. package/dist/services/auth-resp-condition.js +58 -63
  160. package/dist/services/auth-resp-condition.js.map +1 -1
  161. package/dist/services/browser.d.ts +5 -0
  162. package/dist/services/browser.d.ts.map +1 -1
  163. package/dist/services/browser.js +16 -4
  164. package/dist/services/browser.js.map +1 -1
  165. package/dist/services/condition-rules.d.ts +2 -30
  166. package/dist/services/condition-rules.d.ts.map +1 -1
  167. package/dist/services/condition-rules.js +3 -219
  168. package/dist/services/condition-rules.js.map +1 -1
  169. package/dist/services/designer-dataset.d.ts +45 -0
  170. package/dist/services/designer-dataset.d.ts.map +1 -0
  171. package/dist/services/designer-dataset.js +156 -0
  172. package/dist/services/designer-dataset.js.map +1 -0
  173. package/dist/services/form-association.d.ts +7 -0
  174. package/dist/services/form-association.d.ts.map +1 -1
  175. package/dist/services/form-association.js +22 -1
  176. package/dist/services/form-association.js.map +1 -1
  177. package/dist/services/form-code.d.ts +53 -0
  178. package/dist/services/form-code.d.ts.map +1 -0
  179. package/dist/services/form-code.js +370 -0
  180. package/dist/services/form-code.js.map +1 -0
  181. package/dist/services/form-create.d.ts +20 -0
  182. package/dist/services/form-create.d.ts.map +1 -1
  183. package/dist/services/form-create.js +73 -1
  184. package/dist/services/form-create.js.map +1 -1
  185. package/dist/services/form-field-build.d.ts +1 -1
  186. package/dist/services/form-field-build.d.ts.map +1 -1
  187. package/dist/services/form-field-build.js +20 -1
  188. package/dist/services/form-field-build.js.map +1 -1
  189. package/dist/services/form-field-drop.d.ts +2 -0
  190. package/dist/services/form-field-drop.d.ts.map +1 -1
  191. package/dist/services/form-field-drop.js +2 -0
  192. package/dist/services/form-field-drop.js.map +1 -1
  193. package/dist/services/form-layout-detail-insert.d.ts +58 -0
  194. package/dist/services/form-layout-detail-insert.d.ts.map +1 -0
  195. package/dist/services/form-layout-detail-insert.js +293 -0
  196. package/dist/services/form-layout-detail-insert.js.map +1 -0
  197. package/dist/services/form-layout-insert.d.ts.map +1 -1
  198. package/dist/services/form-layout-insert.js +34 -2
  199. package/dist/services/form-layout-insert.js.map +1 -1
  200. package/dist/services/form-layout-source/compile.d.ts.map +1 -1
  201. package/dist/services/form-layout-source/compile.js +11 -4
  202. package/dist/services/form-layout-source/compile.js.map +1 -1
  203. package/dist/services/form-layout-template-advanced.d.ts +330 -0
  204. package/dist/services/form-layout-template-advanced.d.ts.map +1 -0
  205. package/dist/services/form-layout-template-advanced.js +1437 -0
  206. package/dist/services/form-layout-template-advanced.js.map +1 -0
  207. package/dist/services/form-layout-template-easy.d.ts +34 -0
  208. package/dist/services/form-layout-template-easy.d.ts.map +1 -0
  209. package/dist/services/form-layout-template-easy.js +159 -0
  210. package/dist/services/form-layout-template-easy.js.map +1 -0
  211. package/dist/services/form-layout-template-flow.d.ts +23 -0
  212. package/dist/services/form-layout-template-flow.d.ts.map +1 -0
  213. package/dist/services/form-layout-template-flow.js +99 -0
  214. package/dist/services/form-layout-template-flow.js.map +1 -0
  215. package/dist/services/form-permission-archive.d.ts +23 -1
  216. package/dist/services/form-permission-archive.d.ts.map +1 -1
  217. package/dist/services/form-permission-archive.js +54 -2
  218. package/dist/services/form-permission-archive.js.map +1 -1
  219. package/dist/services/form-physical-table.d.ts +10 -0
  220. package/dist/services/form-physical-table.d.ts.map +1 -1
  221. package/dist/services/form-physical-table.js +20 -0
  222. package/dist/services/form-physical-table.js.map +1 -1
  223. package/dist/services/form-view-linkage-functions.d.ts +19 -0
  224. package/dist/services/form-view-linkage-functions.d.ts.map +1 -0
  225. package/dist/services/form-view-linkage-functions.js +90 -0
  226. package/dist/services/form-view-linkage-functions.js.map +1 -0
  227. package/dist/services/matrix-condition.d.ts +32 -1
  228. package/dist/services/matrix-condition.d.ts.map +1 -1
  229. package/dist/services/matrix-condition.js +169 -6
  230. package/dist/services/matrix-condition.js.map +1 -1
  231. package/dist/services/menu-catalog.d.ts +24 -1
  232. package/dist/services/menu-catalog.d.ts.map +1 -1
  233. package/dist/services/menu-catalog.js +49 -2
  234. package/dist/services/menu-catalog.js.map +1 -1
  235. package/dist/services/workflow-base-settings.d.ts +117 -0
  236. package/dist/services/workflow-base-settings.d.ts.map +1 -0
  237. package/dist/services/workflow-base-settings.js +504 -0
  238. package/dist/services/workflow-base-settings.js.map +1 -0
  239. package/dist/services/workflow-condition-core.d.ts +48 -0
  240. package/dist/services/workflow-condition-core.d.ts.map +1 -0
  241. package/dist/services/workflow-condition-core.js +316 -0
  242. package/dist/services/workflow-condition-core.js.map +1 -0
  243. package/dist/services/workflow-context.d.ts +10 -0
  244. package/dist/services/workflow-context.d.ts.map +1 -0
  245. package/dist/services/workflow-context.js +15 -0
  246. package/dist/services/workflow-context.js.map +1 -0
  247. package/dist/services/workflow-export.d.ts +80 -0
  248. package/dist/services/workflow-export.d.ts.map +1 -0
  249. package/dist/services/workflow-export.js +150 -0
  250. package/dist/services/workflow-export.js.map +1 -0
  251. package/dist/services/workflow-field-permission-route.d.ts +75 -0
  252. package/dist/services/workflow-field-permission-route.d.ts.map +1 -0
  253. package/dist/services/workflow-field-permission-route.js +52 -0
  254. package/dist/services/workflow-field-permission-route.js.map +1 -0
  255. package/dist/services/workflow-field-permission.d.ts +18 -0
  256. package/dist/services/workflow-field-permission.d.ts.map +1 -0
  257. package/dist/services/workflow-field-permission.js +40 -0
  258. package/dist/services/workflow-field-permission.js.map +1 -0
  259. package/dist/services/workflow-function-settings.d.ts +31 -0
  260. package/dist/services/workflow-function-settings.d.ts.map +1 -0
  261. package/dist/services/workflow-function-settings.js +191 -0
  262. package/dist/services/workflow-function-settings.js.map +1 -0
  263. package/dist/services/workflow-node-layout.d.ts +11 -10
  264. package/dist/services/workflow-node-layout.d.ts.map +1 -1
  265. package/dist/services/workflow-node-layout.js +24 -62
  266. package/dist/services/workflow-node-layout.js.map +1 -1
  267. package/dist/services/workflow-operator-batch-condition.d.ts +23 -0
  268. package/dist/services/workflow-operator-batch-condition.d.ts.map +1 -0
  269. package/dist/services/workflow-operator-batch-condition.js +56 -0
  270. package/dist/services/workflow-operator-batch-condition.js.map +1 -0
  271. package/dist/services/workflow-sign-file-settings.d.ts +16 -0
  272. package/dist/services/workflow-sign-file-settings.d.ts.map +1 -0
  273. package/dist/services/workflow-sign-file-settings.js +80 -0
  274. package/dist/services/workflow-sign-file-settings.js.map +1 -0
  275. package/dist/services/workflow-submit-confirm.d.ts +14 -0
  276. package/dist/services/workflow-submit-confirm.d.ts.map +1 -0
  277. package/dist/services/workflow-submit-confirm.js +29 -0
  278. package/dist/services/workflow-submit-confirm.js.map +1 -0
  279. package/dist/services/workflow-tab-config.d.ts +3 -3
  280. package/dist/services/workflow-tab-config.d.ts.map +1 -1
  281. package/dist/services/workflow-tab-config.js +14 -12
  282. package/dist/services/workflow-tab-config.js.map +1 -1
  283. package/dist/services/workflow-tabs-editor.d.ts +28 -0
  284. package/dist/services/workflow-tabs-editor.d.ts.map +1 -0
  285. package/dist/services/workflow-tabs-editor.js +130 -0
  286. package/dist/services/workflow-tabs-editor.js.map +1 -0
  287. package/package.json +1 -1
  288. package/skill-docs/SKILL.md +155 -154
  289. package/skill-docs/_catalog.md +106 -97
  290. package/skill-docs/actionflows/references/components/document/GetDocumentInfo.md +17 -17
  291. package/skill-docs/actionflows/references/components/logic/LogicFlowSet.md +23 -17
  292. package/skill-docs/assets/form-template/style-templates-advanced-base-example.json +1420 -0
  293. package/skill-docs/assets/form-template/style-templates-advanced-base.css +33 -0
  294. package/skill-docs/assets/form-template/style-templates-advanced-blue-crystal-example.json +1094 -0
  295. package/skill-docs/assets/form-template/style-templates-advanced-document-example.json +1251 -0
  296. package/skill-docs/assets/form-template/style-templates-advanced-grid-example.json +39 -0
  297. package/skill-docs/assets/form-template/style-templates-advanced-page-example.json +38 -0
  298. package/skill-docs/assets/form-template/style-templates-advanced-placements-example.json +30 -0
  299. package/skill-docs/assets/form-template/style-templates-advanced-standard-example.json +53 -0
  300. package/skill-docs/assets/form-template/style-templates-advanced-structure-example.json +25 -0
  301. package/skill-docs/assets/form-template/style-templates-advanced-table-example.json +1420 -0
  302. package/skill-docs/references/code-block/guide-code-block.md +141 -0
  303. package/skill-docs/references/code-block/guide-layout-css.md +107 -0
  304. package/skill-docs/references/code-block/ref-controls.md +60 -0
  305. package/skill-docs/references/code-block/ref-coverage.md +32 -0
  306. package/skill-docs/references/code-block/ref-details.md +57 -0
  307. package/skill-docs/references/code-block/ref-events-validation.md +42 -0
  308. package/skill-docs/references/code-block/ref-foundations-fields.md +56 -0
  309. package/skill-docs/references/code-block/ref-recipes.md +164 -0
  310. package/skill-docs/references/code-block/ref-troubleshooting.md +49 -0
  311. package/skill-docs/references/code-block/ref-ui-global.md +47 -0
  312. package/skill-docs/references/common/guide-plan-template.md +168 -167
  313. package/skill-docs/references/common/map.md +2 -1
  314. package/skill-docs/references/common/ref-cli-commands.md +67 -22
  315. package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +8 -4
  316. package/skill-docs/references/form/form-template/style-templates-advanced-css-guide.md +167 -0
  317. package/skill-docs/references/form/form-template/style-templates-advanced.md +315 -0
  318. package/skill-docs/references/form/form-template/style-templates-easy.md +55 -0
  319. package/skill-docs/references/form/form-template/style-templates-flow.md +27 -0
  320. package/skill-docs/references/form/form-template/style-templates.md +29 -0
  321. package/skill-docs/references/form/guide-browser-definition.md +148 -0
  322. package/skill-docs/references/form/guide-create-form.md +258 -250
  323. package/skill-docs/references/form/guide-form-archive-permission.md +29 -6
  324. package/skill-docs/references/form/guide-form-formula-functions.md +354 -354
  325. package/skill-docs/references/form/guide-form-layout-incremental.md +28 -0
  326. package/skill-docs/references/form/guide-form-layout-planning.md +11 -0
  327. package/skill-docs/references/form/guide-form-layout-source.md +4 -0
  328. package/skill-docs/references/form/guide-form-linkage.md +295 -259
  329. package/skill-docs/references/form/guide-form-physical-table.md +2 -0
  330. package/skill-docs/references/form/guide-form-view.md +3 -0
  331. package/skill-docs/references/form/ref-form-fields.md +301 -293
  332. package/skill-docs/references/form/ref-list-filter-date-params.md +83 -0
  333. package/skill-docs/references/menu/system-menus.md +12 -0
  334. package/skill-docs/references/workflow/condition-core-contract.md +63 -0
  335. package/skill-docs/references/workflow/guide-base-auth-share-remind.md +126 -0
  336. package/skill-docs/references/workflow/guide-function-settings.md +55 -0
  337. package/skill-docs/references/workflow/guide-workflow-condition.md +476 -447
  338. package/skill-docs/references/workflow/guide-workflow-node-layout.md +6 -0
  339. package/skill-docs/references/workflow/guide-workflow.md +630 -527
  340. package/skill-docs/references/form/style-templates.md +0 -97
@@ -0,0 +1,370 @@
1
+ import { createRequire } from 'node:module';
2
+ import { lzwCompress, lzwDecompress } from '../core/lzw.js';
3
+ import { losslessReviver } from '../core/client.js';
4
+ const require = createRequire(import.meta.url);
5
+ const { compileJsE10 } = require('../../ecodecmd/src/lib/exec.js');
6
+ export function decodeLayoutCode(encoded) {
7
+ if (!encoded)
8
+ return { js: { content: '', compiledContent: '' }, css: { content: '', compiledContent: '' } };
9
+ const value = JSON.parse(decodeURIComponent(encoded), losslessReviver);
10
+ return {
11
+ js: { content: '', compiledContent: '', ...(value.js || {}) },
12
+ css: { content: '', compiledContent: '', ...(value.css || {}) },
13
+ };
14
+ }
15
+ export function decodeFormEcode(encoded) {
16
+ if (!encoded)
17
+ return decodeLayoutCode(undefined);
18
+ const value = JSON.parse(lzwDecompress(encoded), losslessReviver);
19
+ return {
20
+ js: { content: '', compiledContent: '', ...(value.js || {}) },
21
+ css: { content: '', compiledContent: '', ...(value.css || {}) },
22
+ };
23
+ }
24
+ function transpile(source) {
25
+ if (!source.trim())
26
+ return '';
27
+ const result = compileJsE10(source, 'index.js');
28
+ if (result === false)
29
+ throw new Error('JavaScript 编译失败,未保存配置');
30
+ return result;
31
+ }
32
+ /**
33
+ * 布局源码的 `compiledContent` 与设计器保存的产物同构:
34
+ * 外壳(jsonp 导出 + load(pageId) + ebSdk/pageSdk/formSdk)和用户源码一起交给 Babel,
35
+ * 而不是先编译用户代码再手工套壳 —— 后者会留下 `try/catch`、额外 `"use strict"`
36
+ * 以及未转译的可选链,和设计器写出的代码不一致。
37
+ *
38
+ * 对照样本:设计器保存 `saveFormAndLayout` 时 formLayout.pageLayoutEncodes 内
39
+ * `sourceCode.ecode` 的 `js.compiledContent`。
40
+ */
41
+ function compileLayoutJs(source) {
42
+ const compiled = transpile(`(function () {
43
+ "use strict";
44
+ window.weappEcodesdk.jsonp.export("\${appId}", "index.js", function () {
45
+ var exports = {};
46
+ var require = window.weappEcodesdk.jsonp.require.bind(null, "\${appId}", "index.js");
47
+
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+
50
+ exports.load = void 0;
51
+
52
+ var load = function(pageId) {
53
+ var ebSdk = window.ebuilderSDK; //全局SDK
54
+ var pageSdk = window.ebuilderSDK?.getPageSDK?.(pageId); //当前页面SDK
55
+
56
+ var formSdk = arguments[0];
57
+ ${source}
58
+ };
59
+
60
+ exports.load = load;
61
+
62
+ return exports;
63
+ })
64
+ })();`);
65
+ // Babel 会在 IIFE 外补一条 "use strict";设计器产物里只有外壳内部那一条。
66
+ // 同时去掉 Babel 的函数名推断(function load),保持与设计器一致的外壳形态。
67
+ return compiled
68
+ .replace(/^"use strict";\s*/, '')
69
+ .replace('var load = function load(pageId)', 'var load = function(pageId)');
70
+ }
71
+ function wrapJs(source, layer) {
72
+ if (!source.trim())
73
+ return '';
74
+ if (layer === 'layout')
75
+ return compileLayoutJs(source);
76
+ // 表单级 ecode 仍沿用原有外壳(本次抓包只覆盖布局源码,不做无依据改动)。
77
+ const body = transpile(source);
78
+ return `(function () {\n "use strict";\n window.weappEcodesdk.jsonp.export("\${appId}", "index.js", function () {\n var exports = {};\n var require = window.weappEcodesdk.jsonp.require.bind(null, "\${appId}", "index.js");\n Object.defineProperty(exports, "__esModule", { value: true });\n exports.load = void 0;\n var load = function(formSdk) {\n try {\n${body}\n } catch(e) {\n window.weappUtils?.handleEcodeErrorData?.(e);\n console?.error?.(e);\n }\n };\n exports.load = load;\n return exports;\n });\n})();`;
79
+ }
80
+ /**
81
+ * CSS 里需要继续作用域到子规则的 at-rule。
82
+ * 其余 at-rule(@keyframes/@font-face/@import…)整块原样保留,不能把 at-rule 前导当成选择器。
83
+ */
84
+ const NESTED_AT_RULES = new Set(['media', 'supports', 'container', 'layer', 'document', 'scope', 'starting-style']);
85
+ /** 跳过块注释,返回注释后的下标;未闭合则到结尾。 */
86
+ function skipComment(source, start) {
87
+ const end = source.indexOf('*/', start + 2);
88
+ return end < 0 ? source.length : end + 2;
89
+ }
90
+ /** 跳过引号字符串(含转义),返回字符串后的下标;未闭合则到结尾。 */
91
+ function skipString(source, start) {
92
+ const quote = source[start];
93
+ let i = start + 1;
94
+ while (i < source.length) {
95
+ if (source[i] === '\\') {
96
+ i += 2;
97
+ continue;
98
+ }
99
+ if (source[i] === quote)
100
+ return i + 1;
101
+ i += 1;
102
+ }
103
+ return source.length;
104
+ }
105
+ /** 找规则前导的结束位置:顶层 `{`(块)或 `;`(at-rule 语句)。 */
106
+ function scanPreludeEnd(source, start) {
107
+ let i = start;
108
+ let paren = 0;
109
+ let bracket = 0;
110
+ while (i < source.length) {
111
+ const c = source[i];
112
+ if (c === '/' && source[i + 1] === '*') {
113
+ i = skipComment(source, i);
114
+ continue;
115
+ }
116
+ if (c === '"' || c === "'") {
117
+ i = skipString(source, i);
118
+ continue;
119
+ }
120
+ if (c === '(')
121
+ paren += 1;
122
+ else if (c === ')')
123
+ paren = Math.max(0, paren - 1);
124
+ else if (c === '[')
125
+ bracket += 1;
126
+ else if (c === ']')
127
+ bracket = Math.max(0, bracket - 1);
128
+ else if (c === '{' && paren === 0 && bracket === 0)
129
+ return { end: i, kind: 'block' };
130
+ else if (c === ';' && paren === 0 && bracket === 0)
131
+ return { end: i, kind: 'semicolon' };
132
+ i += 1;
133
+ }
134
+ return { end: source.length, kind: 'eof' };
135
+ }
136
+ /** 从 `{` 开始找配对的 `}`,跳过注释、字符串和嵌套块。 */
137
+ function findMatchingBrace(source, open) {
138
+ let i = open + 1;
139
+ let depth = 1;
140
+ while (i < source.length) {
141
+ const c = source[i];
142
+ if (c === '/' && source[i + 1] === '*') {
143
+ i = skipComment(source, i);
144
+ continue;
145
+ }
146
+ if (c === '"' || c === "'") {
147
+ i = skipString(source, i);
148
+ continue;
149
+ }
150
+ if (c === '{')
151
+ depth += 1;
152
+ else if (c === '}') {
153
+ depth -= 1;
154
+ if (depth === 0)
155
+ return i;
156
+ }
157
+ i += 1;
158
+ }
159
+ return -1;
160
+ }
161
+ /** 按顶层逗号拆选择器(跳过 `:is(...)`、属性选择器里的逗号)。 */
162
+ function splitSelectors(selector) {
163
+ const parts = [];
164
+ let start = 0;
165
+ let paren = 0;
166
+ let bracket = 0;
167
+ for (let i = 0; i < selector.length; i += 1) {
168
+ const c = selector[i];
169
+ if (c === '/' && selector[i + 1] === '*') {
170
+ i = skipComment(selector, i) - 1;
171
+ continue;
172
+ }
173
+ if (c === '"' || c === "'") {
174
+ i = skipString(selector, i) - 1;
175
+ continue;
176
+ }
177
+ if (c === '(')
178
+ paren += 1;
179
+ else if (c === ')')
180
+ paren = Math.max(0, paren - 1);
181
+ else if (c === '[')
182
+ bracket += 1;
183
+ else if (c === ']')
184
+ bracket = Math.max(0, bracket - 1);
185
+ else if (c === ',' && paren === 0 && bracket === 0) {
186
+ parts.push(selector.slice(start, i));
187
+ start = i + 1;
188
+ }
189
+ }
190
+ parts.push(selector.slice(start));
191
+ return parts;
192
+ }
193
+ function applyRule(prelude, inner, prefix) {
194
+ const trimmed = prelude.trim();
195
+ if (!trimmed)
196
+ return `${prelude}{${inner}}`;
197
+ if (trimmed.startsWith('@')) {
198
+ const name = (trimmed.match(/^@([\w-]+)/)?.[1] || '').toLowerCase();
199
+ // 容器型 at-rule 递归作用域;keyframes/font-face/import 等整块保留。
200
+ return NESTED_AT_RULES.has(name)
201
+ ? `${prelude}{${scopeCssInternal(inner, prefix)}}`
202
+ : `${prelude}{${inner}}`;
203
+ }
204
+ const selectors = splitSelectors(prelude)
205
+ .map((part) => part.trim())
206
+ .filter(Boolean)
207
+ .map((part) => `${prefix} ${part}`)
208
+ .join(',');
209
+ return `${selectors}{${inner}}`;
210
+ }
211
+ /** 递归作用域实现;尾部空白由导出的 `scopeCss` 在最外层统一裁掉。 */
212
+ function scopeCssInternal(source, prefix) {
213
+ if (!source.trim())
214
+ return '';
215
+ const out = [];
216
+ let i = 0;
217
+ while (i < source.length) {
218
+ const triviaStart = i;
219
+ // 规则之间的空白和注释原样保留。
220
+ while (i < source.length) {
221
+ if (source[i] === '/' && source[i + 1] === '*') {
222
+ i = skipComment(source, i);
223
+ continue;
224
+ }
225
+ if (/\s/.test(source[i])) {
226
+ i += 1;
227
+ continue;
228
+ }
229
+ break;
230
+ }
231
+ out.push(source.slice(triviaStart, i));
232
+ if (i >= source.length)
233
+ break;
234
+ const { end, kind } = scanPreludeEnd(source, i);
235
+ if (kind === 'eof') {
236
+ out.push(source.slice(i));
237
+ break;
238
+ }
239
+ if (kind === 'semicolon') {
240
+ out.push(source.slice(i, end + 1));
241
+ i = end + 1;
242
+ continue;
243
+ }
244
+ const close = findMatchingBrace(source, end);
245
+ if (close < 0) {
246
+ out.push(source.slice(i));
247
+ break;
248
+ }
249
+ out.push(applyRule(source.slice(i, end), source.slice(end + 1, close), prefix));
250
+ i = close + 1;
251
+ }
252
+ return out.join('');
253
+ }
254
+ /**
255
+ * 与表单源码编辑器一致:普通规则逐条加作用域前缀。
256
+ * 支持 @media/@supports 等容器 at-rule 递归处理,@keyframes 等整块保留;
257
+ * 注释、字符串和嵌套括号不会被误拆。
258
+ */
259
+ export function scopeCss(source, prefix) {
260
+ // 只在最外层去掉尾部空白(设计器编译产物没有尾随换行);
261
+ // 递归进 @media 时不能裁,否则会吃掉右花括号前的换行。
262
+ return scopeCssInternal(source, prefix).replace(/\s+$/, '');
263
+ }
264
+ export function updateCode(previous, change, layer, scopeId) {
265
+ if (layer === 'layout' && !scopeId)
266
+ throw new Error('布局源码缺少 pageId');
267
+ const next = {
268
+ js: { ...previous.js }, css: { ...previous.css },
269
+ };
270
+ if (change.js !== undefined) {
271
+ next.js.content = change.js;
272
+ next.js.compiledContent = wrapJs(change.js, layer);
273
+ if (layer === 'layout')
274
+ next.js.pageId = `if (${scopeId} == String(props.pageId))`;
275
+ next.js.name = 'index';
276
+ next.js.state = 'n';
277
+ }
278
+ if (change.css !== undefined) {
279
+ next.css.content = change.css;
280
+ next.css.compiledContent = scopeCss(change.css, layer === 'layout' ? `#ebpage_${scopeId}` : `#form_${scopeId}`);
281
+ next.css.name = 'index';
282
+ next.css.state = 'n';
283
+ }
284
+ return next;
285
+ }
286
+ /**
287
+ * 构造布局源码的保存报文。设计器真实入参是 pageLayoutEncodes/formStyleEncodes,
288
+ * 不是裸 pageLayouts/formStyle;后者会被服务端重新序列化并丢失 sourceCode 的附加字段。
289
+ */
290
+ export function buildLayoutSaveRequest(snapshot, target, formId, layoutId) {
291
+ const pageLayouts = snapshot?.formLayout?.pageLayouts;
292
+ if (!Array.isArray(pageLayouts))
293
+ throw new Error('布局快照缺少 pageLayouts');
294
+ const formLayout = {
295
+ ...snapshot.formLayout,
296
+ formId,
297
+ pageLayoutEncodes: lzwCompress(JSON.stringify(pageLayouts)),
298
+ formStyleEncodes: lzwCompress(JSON.stringify(snapshot.formLayout.formStyle || {})),
299
+ };
300
+ delete formLayout.pageLayouts;
301
+ delete formLayout.formStyle;
302
+ return {
303
+ module: target,
304
+ customParam: target === 'workflow'
305
+ ? { workflowId: '-1', layoutMultiId: layoutId }
306
+ : { terminal: '', objId: formId },
307
+ designerParam: { onlyLayout: false, convert: false },
308
+ form: snapshot.form,
309
+ formLayout,
310
+ };
311
+ }
312
+ const normalizeText = (value) => String(value ?? '').replace(/\r\n?/g, '\n');
313
+ /**
314
+ * 保存后的独立回读校验。设计器抓包确认服务端会原样保留 content/compiledContent/pageId,
315
+ * 所以按“发送值 vs 回读值”比较;换行差异归一化,其余差异视为失败。
316
+ */
317
+ export function assertLayoutReadback(expected, readback, pageId, changed) {
318
+ if (changed.js) {
319
+ if (normalizeText(readback.js.content) !== normalizeText(expected.js.content)) {
320
+ throw new Error('保存后布局 JS 源码读回不一致');
321
+ }
322
+ if (readback.js.pageId !== `if (${pageId} == String(props.pageId))`) {
323
+ throw new Error('保存后布局 JS 生效条件读回不一致');
324
+ }
325
+ if (normalizeText(readback.js.compiledContent) !== normalizeText(expected.js.compiledContent)) {
326
+ throw new Error('保存后布局 JS 编译结果读回不一致');
327
+ }
328
+ }
329
+ if (changed.css) {
330
+ if (normalizeText(readback.css.content) !== normalizeText(expected.css.content)) {
331
+ throw new Error('保存后布局 CSS 源码读回不一致');
332
+ }
333
+ if (normalizeText(readback.css.compiledContent) !== normalizeText(expected.css.compiledContent)) {
334
+ throw new Error('保存后布局 CSS 编译结果读回不一致');
335
+ }
336
+ }
337
+ }
338
+ /**
339
+ * 设计器读取布局源码 ecode 的路径是 JSON.parse(decodeURI(ecode))。
340
+ * 写入前和回读后都按同一路径校验,避免 encodeURIComponent 等编码让
341
+ * 源码面板显示为空、预览失效。
342
+ */
343
+ export function assertDesignerReadableLayoutCode(encoded) {
344
+ if (!encoded)
345
+ return;
346
+ let value;
347
+ try {
348
+ value = JSON.parse(decodeURI(encoded));
349
+ }
350
+ catch (error) {
351
+ throw new Error(`设计器无法解码布局源码:${error.message}`);
352
+ }
353
+ if (!value || typeof value !== 'object' || value.js == null || value.css == null) {
354
+ throw new Error('设计器无法解码布局源码:缺少 js/css 结构');
355
+ }
356
+ }
357
+ /**
358
+ * 布局源码 ecode 必须用 encodeURI,不能用 encodeURIComponent。
359
+ * 设计器读取时是 JSON.parse(decodeURI(ecode));decodeURI 不会还原 `%3A`(冒号),
360
+ * 用 encodeURIComponent 写出的 `"js"%3A{...}` 会直接报
361
+ * `Expected ':' after property name in JSON`。
362
+ * encodeURI 保留冒号/逗号原样,decodeURI 和 decodeURIComponent 都能正确解析。
363
+ */
364
+ export const encodeLayoutCode = (code) => {
365
+ const encoded = encodeURI(JSON.stringify(code));
366
+ assertDesignerReadableLayoutCode(encoded);
367
+ return encoded;
368
+ };
369
+ export const encodeFormEcode = (code) => lzwCompress(JSON.stringify(code));
370
+ //# sourceMappingURL=form-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-code.js","sourceRoot":"","sources":["../../src/services/form-code.ts"],"names":[],"mappings":"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"}
@@ -32,10 +32,16 @@ export interface InitialFieldDefinition {
32
32
  /** 多选:人员/部门/EBuilder/Browser 默认单选,multiple:true 改多选。
33
33
  * Browser(RelateBrowser) 由 rich-types browserBuild 读 def.multiple 定 isSingle。 */
34
34
  multiple?: boolean;
35
+ /** 通用关联浏览:按浏览数据源名称精确检索,优先于 browserType。 */
36
+ browserName?: string;
37
+ browserType?: string | Record<string, unknown>;
38
+ browserFormSource?: string;
35
39
  /** 独占一行:该字段布局 singleRow:true(整行显示,其余字段仍两列)。
36
40
  * 对齐平台 layout config 的 singleRow 属性(明细表/落单字段/分组内字段本来就独占)。 */
37
41
  singleRow?: boolean;
38
42
  formFields?: InitialFieldDefinition[];
43
+ /** DetailTable 的描述(设计器里明细标题旁的说明);**缺省为空**,不自动用明细名填充。 */
44
+ describe?: string;
39
45
  /** DetailTable 二级明细:关联同一主表下的另一张明细表及其字段。 */
40
46
  enableSubDetail?: boolean;
41
47
  defaultExpandRow?: boolean;
@@ -78,6 +84,20 @@ export declare function placeholderFromFormat(format: string): string;
78
84
  * 直接发给 initLayout 会被当作"隐藏且只读"而不生成列 → 明细表空。
79
85
  * 对齐浏览器 payload:子字段强制 可见 + 可编辑(保留 getConfig 原始 showOrder)。
80
86
  */
87
+ /**
88
+ * 开关字段的固定默认选项:开启=1 / 关闭=0。
89
+ *
90
+ * 平台把 Switch 的取值语义放在 `options` 里(与 Select 同一套 `Option` 结构);
91
+ * 不配时开关没有 1/0 映射,下游取值/条件容易对不上。所有创建入口都用这一份。
92
+ */
93
+ export declare function defaultSwitchOptions(fieldId: string, selectionIds?: string[]): any[];
94
+ /**
95
+ * 从 fields.json 的字段定义里收集**明细表内的 EBuilder 子字段**(带 `detailName` 标明属于哪张明细)。
96
+ *
97
+ * 明细子字段不在顶层 `fieldDefs` 里,建表时的 EBuilder 关联绑定如果只遍历顶层,
98
+ * 这些字段会建成 `isAddForRelation=false`、没有 `sformId`/`formName` 的裸关联字段。
99
+ */
100
+ export declare function collectDetailEBuilderFields(defs: any[]): any[];
81
101
  export declare function normalizeDetailTableChildren(configs: any[]): any[];
82
102
  export declare function queryFormStorageSetting(client: FormCreateClient, baseUrl: string, appId: string): Promise<FormStorageSetting>;
83
103
  export declare function resolveCustomPhysicalTableName(requested: string, setting: FormStorageSetting): CustomPhysicalTableName;
@@ -1 +1 @@
1
- {"version":3,"file":"form-create.d.ts","sourceRoot":"","sources":["../../src/services/form-create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-create.d.ts","sourceRoot":"","sources":["../../src/services/form-create.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
+ import { randomUUID } from 'node:crypto';
1
2
  import { pinyinInitials, toSubTableName, resolveFieldKeys } from '../utils/column-name.js';
2
3
  import { getRichType, richIdUnits } from './rich-types.js';
4
+ import { resolveBrowserByName } from './browser.js';
3
5
  // 路由切换(标准 bs / 专项 fs)。默认 bs —— 传 DEFAULT_EBUILDER_ROUTE 的调用方行为一字不变。
4
6
  import { ebuilderFormUrl, flattenFormList, DEFAULT_EBUILDER_ROUTE } from './special-route.js';
5
7
  import { FormSubDetailService } from './form-sub-detail.js';
@@ -23,6 +25,52 @@ export function placeholderFromFormat(format) {
23
25
  * 直接发给 initLayout 会被当作"隐藏且只读"而不生成列 → 明细表空。
24
26
  * 对齐浏览器 payload:子字段强制 可见 + 可编辑(保留 getConfig 原始 showOrder)。
25
27
  */
28
+ /**
29
+ * 开关字段的固定默认选项:开启=1 / 关闭=0。
30
+ *
31
+ * 平台把 Switch 的取值语义放在 `options` 里(与 Select 同一套 `Option` 结构);
32
+ * 不配时开关没有 1/0 映射,下游取值/条件容易对不上。所有创建入口都用这一份。
33
+ */
34
+ export function defaultSwitchOptions(fieldId, selectionIds = []) {
35
+ return [
36
+ { name: '开启', valueKey: '1' },
37
+ { name: '关闭', valueKey: '0' },
38
+ ].map((o, i) => ({
39
+ other: false,
40
+ // `saveFormFieldNew` 不像批量建表那样替空 selectionId 发号,单字段入口要自己传。
41
+ selectionId: selectionIds[i] || '',
42
+ defOption: false,
43
+ styleConfig: {},
44
+ archive: false,
45
+ divisionBranch: false,
46
+ subCompanyCatalogues: [],
47
+ // 不带 dataCount:平台会据此触发「选项是否已被数据使用」的 uf_ 表校验,
48
+ // 新建字段时那条 SQL 会失败(缺租户 key),导致 options 保存不下去。
49
+ optionNum: '1000000',
50
+ score: '0',
51
+ uid: randomUUID(),
52
+ children: [],
53
+ name: o.name,
54
+ isLimit: false,
55
+ valueKey: o.valueKey,
56
+ componentKey: 'Option',
57
+ order: i,
58
+ fieldId,
59
+ }));
60
+ }
61
+ /**
62
+ * 从 fields.json 的字段定义里收集**明细表内的 EBuilder 子字段**(带 `detailName` 标明属于哪张明细)。
63
+ *
64
+ * 明细子字段不在顶层 `fieldDefs` 里,建表时的 EBuilder 关联绑定如果只遍历顶层,
65
+ * 这些字段会建成 `isAddForRelation=false`、没有 `sformId`/`formName` 的裸关联字段。
66
+ */
67
+ export function collectDetailEBuilderFields(defs) {
68
+ return (defs || [])
69
+ .filter((d) => d?.componentKey === 'DetailTable')
70
+ .flatMap((dt) => (dt.formFields || [])
71
+ .filter((sf) => sf?.componentKey === 'EBuilder')
72
+ .map((sf) => ({ ...sf, detailName: dt.fieldName })));
73
+ }
26
74
  export function normalizeDetailTableChildren(configs) {
27
75
  for (const c of configs) {
28
76
  if (String(c.type) === 'DetailTable' && Array.isArray(c.children)) {
@@ -299,11 +347,14 @@ export function toInitialFieldDefinitions(fieldDefs) {
299
347
  componentKey: f.componentKey, fieldName: f.fieldName,
300
348
  required: f.required, readOnly: f.readOnly, unique: f.unique,
301
349
  hidden: f.hidden, formFields: f.formFields,
350
+ // DetailTable 描述:不写时为空;写了才透传。
351
+ describe: f.describe,
302
352
  enableSubDetail: f.enableSubDetail, defaultExpandRow: f.defaultExpandRow,
303
353
  subDetailConfig: f.subDetailConfig,
304
354
  precision: f.precision, pointSize: f.pointSize,
305
355
  percent: f.percent, defaultValue: f.defaultValue,
306
356
  group: f.group, multiple: f.multiple,
357
+ browserName: f.browserName, browserType: f.browserType, browserFormSource: f.browserFormSource,
307
358
  singleRow: f.singleRow,
308
359
  // 文本最大长度(Text 缺省 100、TextArea 缺省 4000)+ 日期精度 format(Date/DateTime)需透传。
309
360
  maxLen: f.maxLen, format: f.format,
@@ -320,6 +371,14 @@ export function toInitialFieldDefinitions(fieldDefs) {
320
371
  export async function applyInitialFieldsToNewForm(client, baseUrl, appId, objId, formId, fieldDefs, opts = {}) {
321
372
  const log = opts.log ?? ((m) => console.error(m));
322
373
  const defs = toInitialFieldDefinitions(fieldDefs);
374
+ for (const def of defs) {
375
+ if (!def.browserName)
376
+ continue;
377
+ if (def.componentKey !== 'Browser' && def.componentKey !== 'RelateBrowser') {
378
+ throw new Error(`字段「${def.fieldName}」的 browserName 仅适用于 Browser/RelateBrowser`);
379
+ }
380
+ def.browserType = await resolveBrowserByName(client, baseUrl, def.browserName, { ebbusinessid: formId });
381
+ }
323
382
  const fieldResult = await addInitialFieldsToCustomPhysicalForm(client, baseUrl, appId, objId, formId, defs, opts.tenantKey ?? '', opts.layoutType, opts.systemOverrides ?? []);
324
383
  log(` 字段+布局已写入: ${defs.length} 个字段`);
325
384
  const detailTables = fieldResult.detailTables || [];
@@ -497,6 +556,12 @@ export async function addInitialFieldsToCustomPhysicalForm(client, baseUrl, appI
497
556
  mode: 'region',
498
557
  });
499
558
  }
559
+ if (def.componentKey === 'Switch') {
560
+ Object.assign(baseField, {
561
+ switchType: 'switch', hasChild: false, childName: '',
562
+ options: defaultSwitchOptions(fieldId),
563
+ });
564
+ }
500
565
  mainFieldObjects.push(baseField);
501
566
  }
502
567
  // Date/DateTime 日期限制:minField 最早不得早于 / maxField 最晚不得晚于另一字段。
@@ -543,7 +608,8 @@ export async function addInitialFieldsToCustomPhysicalForm(client, baseUrl, appI
543
608
  id: subFormId,
544
609
  tableName: subTableName,
545
610
  name: dtDef.fieldName,
546
- describe: dtDef.fieldName,
611
+ // 描述缺省为空:之前用明细名填充,设计器里每个明细都顶着一行和标题重复的说明。
612
+ describe: dtDef.describe ?? '',
547
613
  dataKey: subKeys.dataKey,
548
614
  ...(subKeys.explicitColumnName ? { columnName: subKeys.columnName } : {}),
549
615
  dataCount: 0,
@@ -600,6 +666,12 @@ export async function addInitialFieldsToCustomPhysicalForm(client, baseUrl, appI
600
666
  dataKey: sfKeys.dataKey,
601
667
  columnName: sfKeys.columnName,
602
668
  };
669
+ if (sf.componentKey === 'Switch') {
670
+ Object.assign(sfObj, {
671
+ switchType: 'switch', hasChild: false, childName: '',
672
+ options: defaultSwitchOptions(sfObj.fieldId),
673
+ });
674
+ }
603
675
  // Field-type-specific attributes (matching browser-observed payload)
604
676
  if (sf.componentKey === 'Number') {
605
677
  const sfDef = sf;