weaver-work-cli 0.1.23 → 0.1.25

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 (358) hide show
  1. package/README.md +33 -3
  2. package/dist/core/output.js +53 -1
  3. package/dist/internal/e10/auth/commands.js +210 -17
  4. package/dist/internal/e10/auth/crypto.js +52 -12
  5. package/dist/internal/e10/auth/xiaoe.js +117 -35
  6. package/dist/internal/e10/context.js +3 -3
  7. package/dist/internal/e10/request-runtime.js +46 -4
  8. package/dist/shortcuts/caizhilian/file-upload/metadata.js +124 -0
  9. package/dist/shortcuts/caizhilian/file-upload/multipart.js +47 -0
  10. package/dist/shortcuts/caizhilian/file-upload/protocol.js +116 -0
  11. package/dist/shortcuts/caizhilian/file-upload/receipt.js +37 -0
  12. package/dist/shortcuts/caizhilian/host.js +13 -5
  13. package/dist/shortcuts/caizhilian/operations/handlers/file-upload.js +72 -179
  14. package/dist/shortcuts/caizhilian/operations/handlers/fileops.js +67 -1
  15. package/dist/shortcuts/caizhilian/operations/handlers/folder.js +701 -4
  16. package/dist/shortcuts/caizhilian/operations/handlers/setting-attach.js +198 -0
  17. package/dist/shortcuts/caizhilian/operations/registry.js +5 -1
  18. package/dist/shortcuts/caizhilian/operations/shared.js +32 -0
  19. package/dist/shortcuts/caizhilian/operations/specs.js +67 -0
  20. package/dist/shortcuts/workflow/continuation.js +14 -9
  21. package/dist/shortcuts/workflow/endpoints.js +11 -1
  22. package/dist/shortcuts/workflow/index.js +55 -1
  23. package/dist/shortcuts/workflow/operations/flow-status.js +63 -0
  24. package/dist/shortcuts/workflow/operations/form.js +1822 -547
  25. package/dist/shortcuts/workflow/operations/read.js +414 -13
  26. package/dist/shortcuts/workflow/operations/shared.js +28 -0
  27. package/dist/shortcuts/workflow/operations/write.js +5 -5
  28. package/dist/shortcuts/workflow/operations.js +8 -6
  29. package/dist/shortcuts/workflow/stdout-compact.js +33 -0
  30. package/docs/caizhilian.md +12 -5
  31. package/docs/e10-auth.md +25 -3
  32. package/node_modules/@napi-rs/keyring/LICENSE +21 -0
  33. package/node_modules/@napi-rs/keyring/README.md +19 -0
  34. package/node_modules/@napi-rs/keyring/index.d.ts +166 -0
  35. package/node_modules/@napi-rs/keyring/index.js +514 -0
  36. package/node_modules/@napi-rs/keyring/keytar.d.ts +53 -0
  37. package/node_modules/@napi-rs/keyring/keytar.js +26 -0
  38. package/node_modules/@napi-rs/keyring/package.json +125 -0
  39. package/node_modules/@napi-rs/keyring-darwin-arm64/README.md +3 -0
  40. package/node_modules/@napi-rs/keyring-darwin-arm64/keyring.darwin-arm64.node +0 -0
  41. package/node_modules/@napi-rs/keyring-darwin-arm64/package.json +32 -0
  42. package/node_modules/commander/LICENSE +22 -0
  43. package/node_modules/commander/Readme.md +1149 -0
  44. package/node_modules/commander/esm.mjs +16 -0
  45. package/node_modules/commander/index.js +24 -0
  46. package/node_modules/commander/lib/argument.js +149 -0
  47. package/node_modules/commander/lib/command.js +2662 -0
  48. package/node_modules/commander/lib/error.js +39 -0
  49. package/node_modules/commander/lib/help.js +709 -0
  50. package/node_modules/commander/lib/option.js +367 -0
  51. package/node_modules/commander/lib/suggestSimilar.js +101 -0
  52. package/node_modules/commander/package-support.json +16 -0
  53. package/node_modules/commander/package.json +82 -0
  54. package/node_modules/commander/typings/esm.d.mts +3 -0
  55. package/node_modules/commander/typings/index.d.ts +1045 -0
  56. package/package.json +5 -1
  57. package/skills/weaver-e10-builder/SKILL.md +281 -0
  58. package/skills/weaver-e10-builder/_catalog.md +94 -0
  59. package/skills/weaver-e10-builder/actionflows/CONTEXT.md +71 -0
  60. package/skills/weaver-e10-builder/actionflows/SKILL.md +176 -0
  61. package/skills/weaver-e10-builder/actionflows/docs/adr/0001-generated-actionflow-cleanup-identity.md +5 -0
  62. package/skills/weaver-e10-builder/actionflows/docs/adr/0002-preserve-existing-actionflow-on-update.md +36 -0
  63. package/skills/weaver-e10-builder/actionflows/references/components/calendar/MeetingCreate.md +19 -0
  64. package/skills/weaver-e10-builder/actionflows/references/components/calendar/ScheduleCreate.md +17 -0
  65. package/skills/weaver-e10-builder/actionflows/references/components/database/DMLExecute.md +38 -0
  66. package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentCopy.md +17 -0
  67. package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentMove.md +17 -0
  68. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentCopy.md +17 -0
  69. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentDelete.md +17 -0
  70. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentEdit.md +17 -0
  71. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentMove.md +17 -0
  72. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentPermissionChange.md +17 -0
  73. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRenewal.md +17 -0
  74. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRevert.md +17 -0
  75. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSave.md +17 -0
  76. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscription.md +17 -0
  77. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionApprove.md +17 -0
  78. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionSendBack.md +17 -0
  79. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionWithdraw.md +17 -0
  80. package/skills/weaver-e10-builder/actionflows/references/components/document/FileFolderSave.md +17 -0
  81. package/skills/weaver-e10-builder/actionflows/references/components/document/GetAttachmentInfo.md +17 -0
  82. package/skills/weaver-e10-builder/actionflows/references/components/document/GetDocumentInfo.md +17 -0
  83. package/skills/weaver-e10-builder/actionflows/references/components/document/ModifyDocumentStatus.md +17 -0
  84. package/skills/weaver-e10-builder/actionflows/references/components/document/ReplaceAttachment.md +17 -0
  85. package/skills/weaver-e10-builder/actionflows/references/components/document/UpdatePrintNum.md +17 -0
  86. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbAdd.md +100 -0
  87. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbDelete.md +23 -0
  88. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbRecover.md +17 -0
  89. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbSaveVersion.md +17 -0
  90. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbUpdate.md +67 -0
  91. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/DateTrigger.md +32 -0
  92. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EbGetDataById.md +17 -0
  93. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EnquiryForm.md +107 -0
  94. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventButton.md +33 -0
  95. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventFormData.md +19 -0
  96. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -0
  97. package/skills/weaver-e10-builder/actionflows/references/components/http/Http.md +77 -0
  98. package/skills/weaver-e10-builder/actionflows/references/components/logic/Condition.md +23 -0
  99. package/skills/weaver-e10-builder/actionflows/references/components/logic/LogicFlowSet.md +17 -0
  100. package/skills/weaver-e10-builder/actionflows/references/components/logic/MultipleExecution.md +38 -0
  101. package/skills/weaver-e10-builder/actionflows/references/components/logic/Output.md +37 -0
  102. package/skills/weaver-e10-builder/actionflows/references/components/message/InnerMQSend.md +50 -0
  103. package/skills/weaver-e10-builder/actionflows/references/components/message/SendMessage.md +30 -0
  104. package/skills/weaver-e10-builder/actionflows/references/components/personnel/AlterPersonStatus.md +30 -0
  105. package/skills/weaver-e10-builder/actionflows/references/components/personnel/HrmEmployeeUpdate.md +34 -0
  106. package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelAlterType.md +38 -0
  107. package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelOnboarding.md +36 -0
  108. package/skills/weaver-e10-builder/actionflows/references/components/serverless/ServerlessAction.md +42 -0
  109. package/skills/weaver-e10-builder/actionflows/references/components/trigger/CustomTrigger.md +82 -0
  110. package/skills/weaver-e10-builder/actionflows/references/components/trigger/InnerMQListener.md +41 -0
  111. package/skills/weaver-e10-builder/actionflows/references/components/trigger/SimpleScheduler.md +19 -0
  112. package/skills/weaver-e10-builder/actionflows/references/components/trigger/WebHookTrigger.md +91 -0
  113. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAddSign.md +17 -0
  114. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAgreeRejectApply.md +17 -0
  115. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCommit.md +17 -0
  116. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveConsulTurnTodo.md +17 -0
  117. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCreate.md +17 -0
  118. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDelete.md +19 -0
  119. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoCirculate.md +17 -0
  120. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoForward.md +17 -0
  121. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoTurnTodo.md +17 -0
  122. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveEntrust.md +19 -0
  123. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveIntervention.md +17 -0
  124. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveMandatoryArchiving.md +17 -0
  125. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveManualCC.md +17 -0
  126. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRefuseRejectApply.md +17 -0
  127. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRejectApply.md +17 -0
  128. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSave.md +17 -0
  129. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSendBack.md +17 -0
  130. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveShareEntry.md +17 -0
  131. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveTrigger.md +99 -0
  132. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveWithdraw.md +17 -0
  133. package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkFlowDocEmpowerment.md +17 -0
  134. package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkflowToDoc.md +17 -0
  135. package/skills/weaver-e10-builder/actionflows/references/condition_rules.md +100 -0
  136. package/skills/weaver-e10-builder/actionflows/references/dynamic_capability_matrix.md +39 -0
  137. package/skills/weaver-e10-builder/actionflows/references/dynamic_resources.md +41 -0
  138. package/skills/weaver-e10-builder/actionflows/references/examples/enquiry-form-batch-insert-scene2.json +1043 -0
  139. package/skills/weaver-e10-builder/actionflows/references/function_rules.md +15 -0
  140. package/skills/weaver-e10-builder/actionflows/references/trigger_runtime_notes.md +53 -0
  141. package/skills/weaver-e10-builder/assets/dom-structure/Bar.json +341 -0
  142. package/skills/weaver-e10-builder/assets/dom-structure/BarStack.json +341 -0
  143. package/skills/weaver-e10-builder/assets/dom-structure/Bubble.json +323 -0
  144. package/skills/weaver-e10-builder/assets/dom-structure/Calendar.json +515 -0
  145. package/skills/weaver-e10-builder/assets/dom-structure/Circular.json +337 -0
  146. package/skills/weaver-e10-builder/assets/dom-structure/CollapsePanel.json +289 -0
  147. package/skills/weaver-e10-builder/assets/dom-structure/Comment.json +617 -0
  148. package/skills/weaver-e10-builder/assets/dom-structure/CountDown.json +755 -0
  149. package/skills/weaver-e10-builder/assets/dom-structure/DigitalPanel.json +191 -0
  150. package/skills/weaver-e10-builder/assets/dom-structure/EbButton.json +387 -0
  151. package/skills/weaver-e10-builder/assets/dom-structure/FastCreate.json +242 -0
  152. package/skills/weaver-e10-builder/assets/dom-structure/Gauge.json +282 -0
  153. package/skills/weaver-e10-builder/assets/dom-structure/HBar.json +336 -0
  154. package/skills/weaver-e10-builder/assets/dom-structure/HBarStack.json +337 -0
  155. package/skills/weaver-e10-builder/assets/dom-structure/Line.json +341 -0
  156. package/skills/weaver-e10-builder/assets/dom-structure/NList.json +712 -0
  157. package/skills/weaver-e10-builder/assets/dom-structure/NavBar.json +274 -0
  158. package/skills/weaver-e10-builder/assets/dom-structure/NavPanel.json +390 -0
  159. package/skills/weaver-e10-builder/assets/dom-structure/NewTab.json +606 -0
  160. package/skills/weaver-e10-builder/assets/dom-structure/Nightingale.json +336 -0
  161. package/skills/weaver-e10-builder/assets/dom-structure/PageHeader.json +205 -0
  162. package/skills/weaver-e10-builder/assets/dom-structure/Picture.json +209 -0
  163. package/skills/weaver-e10-builder/assets/dom-structure/Pie.json +338 -0
  164. package/skills/weaver-e10-builder/assets/dom-structure/ProgressChart.json +299 -0
  165. package/skills/weaver-e10-builder/assets/dom-structure/SearchGlobal.json +628 -0
  166. package/skills/weaver-e10-builder/assets/dom-structure/Slide.json +489 -0
  167. package/skills/weaver-e10-builder/assets/dom-structure/Treemap.json +324 -0
  168. package/skills/weaver-e10-builder/assets/factory/chart-dimensions.json +536 -0
  169. package/skills/weaver-e10-builder/assets/factory/example-btn-progress-collapse-configured.json +2515 -0
  170. package/skills/weaver-e10-builder/assets/factory/example-configured-2.json +13805 -0
  171. package/skills/weaver-e10-builder/assets/factory/example-configured.json +6735 -0
  172. package/skills/weaver-e10-builder/assets/factory/factory-bar-stack.json +326 -0
  173. package/skills/weaver-e10-builder/assets/factory/factory-bar.json +222 -0
  174. package/skills/weaver-e10-builder/assets/factory/factory-bubble.json +322 -0
  175. package/skills/weaver-e10-builder/assets/factory/factory-calendar.json +325 -0
  176. package/skills/weaver-e10-builder/assets/factory/factory-circular.json +320 -0
  177. package/skills/weaver-e10-builder/assets/factory/factory-collapse-panel.json +132 -0
  178. package/skills/weaver-e10-builder/assets/factory/factory-comment.json +388 -0
  179. package/skills/weaver-e10-builder/assets/factory/factory-count-down.json +198 -0
  180. package/skills/weaver-e10-builder/assets/factory/factory-digital-panel.json +108 -0
  181. package/skills/weaver-e10-builder/assets/factory/factory-eb-button.json +150 -0
  182. package/skills/weaver-e10-builder/assets/factory/factory-fast-create.json +62 -0
  183. package/skills/weaver-e10-builder/assets/factory/factory-gauge.json +312 -0
  184. package/skills/weaver-e10-builder/assets/factory/factory-h-bar-stack.json +328 -0
  185. package/skills/weaver-e10-builder/assets/factory/factory-h-bar.json +326 -0
  186. package/skills/weaver-e10-builder/assets/factory/factory-line.json +212 -0
  187. package/skills/weaver-e10-builder/assets/factory/factory-nav-bar.json +167 -0
  188. package/skills/weaver-e10-builder/assets/factory/factory-nav-menu.json +144 -0
  189. package/skills/weaver-e10-builder/assets/factory/factory-nav-panel.json +338 -0
  190. package/skills/weaver-e10-builder/assets/factory/factory-new-tab.json +163 -0
  191. package/skills/weaver-e10-builder/assets/factory/factory-nightingale.json +312 -0
  192. package/skills/weaver-e10-builder/assets/factory/factory-nlist.json +112 -0
  193. package/skills/weaver-e10-builder/assets/factory/factory-page-header.json +171 -0
  194. package/skills/weaver-e10-builder/assets/factory/factory-picture.json +169 -0
  195. package/skills/weaver-e10-builder/assets/factory/factory-pie.json +212 -0
  196. package/skills/weaver-e10-builder/assets/factory/factory-progress-chart.json +162 -0
  197. package/skills/weaver-e10-builder/assets/factory/factory-search-global.json +104 -0
  198. package/skills/weaver-e10-builder/assets/factory/factory-slide.json +164 -0
  199. package/skills/weaver-e10-builder/assets/factory/factory-treemap.json +322 -0
  200. package/skills/weaver-e10-builder/assets/icons.db +0 -0
  201. package/skills/weaver-e10-builder/assets/sample/.claude/settings.local.json +8 -0
  202. package/skills/weaver-e10-builder/assets/sample/api/formApi.js +510 -0
  203. package/skills/weaver-e10-builder/assets/sample/config/config.js +0 -0
  204. package/skills/weaver-e10-builder/assets/sample/config/configLoad.js +0 -0
  205. package/skills/weaver-e10-builder/assets/sample/config/configLoad_default.js +0 -0
  206. package/skills/weaver-e10-builder/assets/sample/config/config_default.js +0 -0
  207. package/skills/weaver-e10-builder/assets/sample/entry.js +22 -0
  208. package/skills/weaver-e10-builder/assets/sample/eslint.config.cjs +48 -0
  209. package/skills/weaver-e10-builder/assets/sample/memo.md +0 -0
  210. package/skills/weaver-e10-builder/assets/sample/readme.js +8 -0
  211. package/skills/weaver-e10-builder/references/app/guide-app-publish.md +92 -0
  212. package/skills/weaver-e10-builder/references/auth/guide-auth.md +88 -0
  213. package/skills/weaver-e10-builder/references/coding/guide-edit-backfill.md +189 -0
  214. package/skills/weaver-e10-builder/references/coding/guide-form-crud.md +262 -0
  215. package/skills/weaver-e10-builder/references/coding/guide-page-code.md +244 -0
  216. package/skills/weaver-e10-builder/references/coding/guide-page-export.md +119 -0
  217. package/skills/weaver-e10-builder/references/coding/ref-compile-rules.md +130 -0
  218. package/skills/weaver-e10-builder/references/common/guide-plan-template.md +164 -0
  219. package/skills/weaver-e10-builder/references/common/map.md +153 -0
  220. package/skills/weaver-e10-builder/references/common/ref-cli-commands.md +635 -0
  221. package/skills/weaver-e10-builder/references/components/@weapp-Button.md +104 -0
  222. package/skills/weaver-e10-builder/references/components/base-Badge.md +100 -0
  223. package/skills/weaver-e10-builder/references/components/base-Dialog.md +358 -0
  224. package/skills/weaver-e10-builder/references/components/base-Empty.md +58 -0
  225. package/skills/weaver-e10-builder/references/components/base-Tag.md +112 -0
  226. package/skills/weaver-e10-builder/references/components/display-Alert.md +64 -0
  227. package/skills/weaver-e10-builder/references/components/display-Avatar.md +150 -0
  228. package/skills/weaver-e10-builder/references/components/display-Calendar.md +263 -0
  229. package/skills/weaver-e10-builder/references/components/display-Carousel.md +115 -0
  230. package/skills/weaver-e10-builder/references/components/display-Collapse.md +299 -0
  231. package/skills/weaver-e10-builder/references/components/display-FilePreview.md +49 -0
  232. package/skills/weaver-e10-builder/references/components/display-Icon.md +66 -0
  233. package/skills/weaver-e10-builder/references/components/display-List.md +320 -0
  234. package/skills/weaver-e10-builder/references/components/display-Pagination.md +41 -0
  235. package/skills/weaver-e10-builder/references/components/display-Spin.md +34 -0
  236. package/skills/weaver-e10-builder/references/components/display-Steps.md +89 -0
  237. package/skills/weaver-e10-builder/references/components/display-Table.md +160 -0
  238. package/skills/weaver-e10-builder/references/components/display-Title.md +117 -0
  239. package/skills/weaver-e10-builder/references/components/form-Checkbox.md +161 -0
  240. package/skills/weaver-e10-builder/references/components/form-DepartmentBrowser-api.md +52 -0
  241. package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser-api.md +51 -0
  242. package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser.md +51 -0
  243. package/skills/weaver-e10-builder/references/components/form-Input.md +123 -0
  244. package/skills/weaver-e10-builder/references/components/form-Radio.md +145 -0
  245. package/skills/weaver-e10-builder/references/components/form-Select.md +191 -0
  246. package/skills/weaver-e10-builder/references/components/form-Switch.md +46 -0
  247. package/skills/weaver-e10-builder/references/components/form-Upload.md +53 -0
  248. package/skills/weaver-e10-builder/references/components/generic-Echarts.md +102 -0
  249. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-components.md +130 -0
  250. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-css.md +127 -0
  251. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-factory.md +460 -0
  252. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-version.md +111 -0
  253. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer.md +288 -0
  254. package/skills/weaver-e10-builder/references/esb-interface/guide-import.md +34 -0
  255. package/skills/weaver-e10-builder/references/form/guide-create-form.md +248 -0
  256. package/skills/weaver-e10-builder/references/form/guide-ebuilder-filter.md +73 -0
  257. package/skills/weaver-e10-builder/references/form/guide-ebuilder-scope.md +82 -0
  258. package/skills/weaver-e10-builder/references/form/guide-field-linkage.md +123 -0
  259. package/skills/weaver-e10-builder/references/form/guide-form-archive-permission.md +175 -0
  260. package/skills/weaver-e10-builder/references/form/guide-form-association.md +124 -0
  261. package/skills/weaver-e10-builder/references/form/guide-form-button.md +169 -0
  262. package/skills/weaver-e10-builder/references/form/guide-form-data.md +78 -0
  263. package/skills/weaver-e10-builder/references/form/guide-form-formula-functions.md +343 -0
  264. package/skills/weaver-e10-builder/references/form/guide-form-layout-incremental.md +90 -0
  265. package/skills/weaver-e10-builder/references/form/guide-form-layout-planning.md +68 -0
  266. package/skills/weaver-e10-builder/references/form/guide-form-linkage.md +269 -0
  267. package/skills/weaver-e10-builder/references/form/guide-form-message.md +74 -0
  268. package/skills/weaver-e10-builder/references/form/guide-form-physical-table.md +146 -0
  269. package/skills/weaver-e10-builder/references/form/guide-form-serial-mark.md +47 -0
  270. package/skills/weaver-e10-builder/references/form/guide-form-sub-detail.md +82 -0
  271. package/skills/weaver-e10-builder/references/form/guide-form-view-permission.md +38 -0
  272. package/skills/weaver-e10-builder/references/form/guide-form-view.md +371 -0
  273. package/skills/weaver-e10-builder/references/form/guide-formula-linkage.md +281 -0
  274. package/skills/weaver-e10-builder/references/form/guide-list-columns.md +52 -0
  275. package/skills/weaver-e10-builder/references/form/guide-list-custom-text.md +52 -0
  276. package/skills/weaver-e10-builder/references/form/guide-list-stats.md +136 -0
  277. package/skills/weaver-e10-builder/references/form/guide-virtual-form.md +156 -0
  278. package/skills/weaver-e10-builder/references/form/ref-form-fields.md +293 -0
  279. package/skills/weaver-e10-builder/references/form/style-templates.md +97 -0
  280. package/skills/weaver-e10-builder/references/hrm/guide-matrix.md +245 -0
  281. package/skills/weaver-e10-builder/references/hrm/guide-org-employee.md +155 -0
  282. package/skills/weaver-e10-builder/references/menu/system-menus.md +75 -0
  283. package/skills/weaver-e10-builder/references/report/add-dataset-registration-guide.md +139 -0
  284. package/skills/weaver-e10-builder/references/report/ai-report-workflow.md +412 -0
  285. package/skills/weaver-e10-builder/references/report/api-report-build-fast-path.md +275 -0
  286. package/skills/weaver-e10-builder/references/report/app-datasource-lookup-guide.md +230 -0
  287. package/skills/weaver-e10-builder/references/report/cell-config-echo-guide.md +163 -0
  288. package/skills/weaver-e10-builder/references/report/cell-transform-guide.md +147 -0
  289. package/skills/weaver-e10-builder/references/report/condition-format-guide.md +140 -0
  290. package/skills/weaver-e10-builder/references/report/cross-dataset-filter-guide.md +304 -0
  291. package/skills/weaver-e10-builder/references/report/dataset-query-filter-guide.md +235 -0
  292. package/skills/weaver-e10-builder/references/report/dataset-sidebar-ops-guide.md +280 -0
  293. package/skills/weaver-e10-builder/references/report/dataset-table-field-contract-guide.md +339 -0
  294. package/skills/weaver-e10-builder/references/report/datasource-metadata-guide.md +365 -0
  295. package/skills/weaver-e10-builder/references/report/datasource-selection-and-parent-filter-guide.md +148 -0
  296. package/skills/weaver-e10-builder/references/report/date-range-query-reference.md +102 -0
  297. package/skills/weaver-e10-builder/references/report/default-header-style-guide.md +70 -0
  298. package/skills/weaver-e10-builder/references/report/designer-blank-prevention-guide.md +111 -0
  299. package/skills/weaver-e10-builder/references/report/event-hreflink-guide.md +184 -0
  300. package/skills/weaver-e10-builder/references/report/field-bind-exact-match-guide.md +208 -0
  301. package/skills/weaver-e10-builder/references/report/formula-cell-api-guide.md +258 -0
  302. package/skills/weaver-e10-builder/references/report/guide-report-build.md +131 -0
  303. package/skills/weaver-e10-builder/references/report/guide-report-modify.md +100 -0
  304. package/skills/weaver-e10-builder/references/report/guide-report-multisource.md +143 -0
  305. package/skills/weaver-e10-builder/references/report/guide-report-query.md +98 -0
  306. package/skills/weaver-e10-builder/references/report/hidden-row-and-header-merge-guide.md +100 -0
  307. package/skills/weaver-e10-builder/references/report/layout-showlocation-freeze-guide.md +167 -0
  308. package/skills/weaver-e10-builder/references/report/preaggregate-auto-disable-guide.md +107 -0
  309. package/skills/weaver-e10-builder/references/report/query-condition-api-guide.md +890 -0
  310. package/skills/weaver-e10-builder/references/report/ref-report-commands.md +122 -0
  311. package/skills/weaver-e10-builder/references/report/ref-report-pitfalls.md +226 -0
  312. package/skills/weaver-e10-builder/references/report/report-baseinfo-defaults-guide.md +117 -0
  313. package/skills/weaver-e10-builder/references/report/report-building-guide.md +511 -0
  314. package/skills/weaver-e10-builder/references/report/report-config-schema.md +445 -0
  315. package/skills/weaver-e10-builder/references/report/report-create-modes-guide.md +182 -0
  316. package/skills/weaver-e10-builder/references/report/report-data-model.md +447 -0
  317. package/skills/weaver-e10-builder/references/report/report-delivery-contract.md +101 -0
  318. package/skills/weaver-e10-builder/references/report/report-designer-feature-map.md +500 -0
  319. package/skills/weaver-e10-builder/references/report/report-internal-error-guide.md +78 -0
  320. package/skills/weaver-e10-builder/references/report/report-knowledge-base.md +389 -0
  321. package/skills/weaver-e10-builder/references/report/report-lifecycle-api-guide.md +392 -0
  322. package/skills/weaver-e10-builder/references/report/report-list-page-ops-guide.md +191 -0
  323. package/skills/weaver-e10-builder/references/report/report-permission-guide.md +365 -0
  324. package/skills/weaver-e10-builder/references/report/report-requirement-analysis-template.md +202 -0
  325. package/skills/weaver-e10-builder/references/report/report-self-check-guide.md +164 -0
  326. package/skills/weaver-e10-builder/references/report/safe-partial-save-guide.md +151 -0
  327. package/skills/weaver-e10-builder/references/report/snowflake-id-precision-guide.md +84 -0
  328. package/skills/weaver-e10-builder/references/report/spec-build-schema.md +294 -0
  329. package/skills/weaver-e10-builder/references/report/targeted-fix-guide.md +97 -0
  330. package/skills/weaver-e10-builder/references/report/user-request-scope-only-guide.md +82 -0
  331. package/skills/weaver-e10-builder/references/workflow/guide-function-management.md +154 -0
  332. package/skills/weaver-e10-builder/references/workflow/guide-opinion-settings.md +126 -0
  333. package/skills/weaver-e10-builder/references/workflow/guide-workflow-action.md +174 -0
  334. package/skills/weaver-e10-builder/references/workflow/guide-workflow-auth-resp.md +224 -0
  335. package/skills/weaver-e10-builder/references/workflow/guide-workflow-condition.md +447 -0
  336. package/skills/weaver-e10-builder/references/workflow/guide-workflow-node-layout.md +181 -0
  337. package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc-setting.md +248 -0
  338. package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc.md +68 -0
  339. package/skills/weaver-e10-builder/references/workflow/guide-workflow.md +527 -0
  340. package/skills/weaver-e10-builder/references/workflow/operator-matrix.md +76 -0
  341. package/skills/weaver-e10-caizhilian/SKILL.md +14 -4
  342. package/skills/weaver-e10-caizhilian/references/file-upload.md +100 -295
  343. package/skills/weaver-e10-caizhilian/references/files.md +15 -0
  344. package/skills/weaver-e10-caizhilian/references/folder.md +31 -3
  345. package/skills/weaver-e10-caizhilian/references/setting-attach.md +48 -3
  346. package/skills/weaver-e10-caizhilian/references/source-manifest.json +634 -25
  347. package/skills/weaver-e10-jiuchuanhui/SKILL.md +9 -1
  348. package/skills/weaver-e10-shared/SKILL.md +19 -5
  349. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +25 -5
  350. package/skills/weaver-e10-workflow/SKILL.md +28 -47
  351. package/skills/weaver-e10-workflow/references/source-manifest.json +46 -36
  352. package/skills/weaver-e10-workflow/references/workflow-batch.md +2 -4
  353. package/skills/weaver-e10-workflow/references/workflow-create.md +261 -86
  354. package/skills/weaver-e10-workflow/references/workflow-edit.md +2 -1
  355. package/skills/weaver-e10-workflow/references/workflow-memory.md +3 -6
  356. package/skills/weaver-e10-workflow/references/workflow-operate.md +2 -1
  357. package/skills/weaver-e10-workflow/references/workflow-query.md +11 -9
  358. package/skills/weaver-e10-workflow/references/workflow-share.md +2 -0
@@ -0,0 +1,88 @@
1
+ # 鉴权与多环境管理
2
+
3
+ > e10-cli 支持多环境 Profile 切换,auth 文件和 config 按环境隔离存储。
4
+
5
+ ## 目录结构
6
+
7
+ ```
8
+ ~/.e10-cli/
9
+ ├── profile ← 当前激活的 profile 名
10
+ └── profiles/
11
+ ├── yunteams/
12
+ │ ├── auth ← 加密的认证凭证
13
+ │ └── config.json ← baseUrl + passportUrl
14
+ └── mulinquan/
15
+ ├── auth
16
+ └── config.json
17
+ ```
18
+
19
+ ## 命令参考
20
+
21
+ ### 登录认证
22
+
23
+ | 命令 | 说明 |
24
+ |------|------|
25
+ | `e10-cli auth set --eteamsid <id> --base-url <url>` | 直接写入 ETEAMSID(**当前唯一可用方式**)。ETEAMSID 从浏览器 DevTools → Application → Cookies 复制。自动解析 userId + tenantKey |
26
+ | `e10-cli auth status` | 查看当前登录状态(含 profile 名、cookie 有效性) |
27
+
28
+ > ⚠️ `e10-cli auth login`(浏览器 OIDC 登录)**暂未实现,已禁用**,执行会提示"开发中"。当前一律用 `auth set`。
29
+
30
+ ### Profile 管理
31
+
32
+ | 命令 | 说明 |
33
+ |------|------|
34
+ | `e10-cli auth profile list` | 列出本地所有 Profile |
35
+ | `e10-cli auth profile current` | 查看当前激活的 Profile |
36
+ | `e10-cli auth profile use <name>` | 切换到指定 Profile(不存在则自动创建) |
37
+
38
+ **单次覆盖**:所有命令支持 `--profile <name>` 临时用指定 profile(auth + config baseUrl),不切换全局激活态:
39
+ ```bash
40
+ e10-cli --profile e-cology form list <appId> # 只用这一次,不改变当前环境
41
+ ```
42
+
43
+ ## 典型用法
44
+
45
+ ```bash
46
+ # 在 yunteams 环境登录
47
+ e10-cli auth set --eteamsid "PCACCOUNT_xxx" --base-url "https://weapp.yunteams.cn"
48
+ # → 自动创建/切换到 profile: yunteams
49
+
50
+ # 切到 mulinquan
51
+ e10-cli auth set --eteamsid "PCACCOUNT_yyy" --base-url "https://weapp.mulinquan.cn"
52
+ # → 自动创建/切换到 profile: mulinquan
53
+
54
+ # 查看所有环境
55
+ e10-cli auth profile list
56
+
57
+ # 切回 yunteams
58
+ e10-cli auth profile use yunteams
59
+
60
+ # 查看当前
61
+ e10-cli auth status
62
+ ```
63
+
64
+ ## 全局选项
65
+
66
+ | 选项 | 说明 |
67
+ |------|------|
68
+ | `--auth <path>` | 临时指定 auth 文件路径(覆盖 profile) |
69
+ | `--base-url <url>` | 临时指定平台地址 |
70
+ | `--json` | JSON 格式输出 |
71
+
72
+ ## Profile 命名规则
73
+
74
+ `auth set` 时根据 `baseUrl` 域名自动生成 profile 名:
75
+ - `https://weapp.yunteams.cn` → `yunteams`
76
+ - `https://weapp.mulinquan.cn` → `mulinquan`
77
+
78
+ 也可用 `auth profile use <自定义名>` 手动创建命名。
79
+
80
+ ## 凭证加密
81
+
82
+ Auth 文件使用 AES-256-GCM 加密存储,密钥存于 **OS keychain**(每机一把动态密钥,源码不含密钥),headless 无 keychain 后端时回退到 `~/.e10-cli/.key`(0600)。详见 `core/crypto.ts`。格式:
83
+ ```json
84
+ { "enc": true, "v": 1, "data": "<base64>" }
85
+ ```
86
+
87
+ > 与 `e10-login` 共用同一 keychain 条目(service=`e10-cli`/account=`auth-key`),auth 文件在 e10-cli 与 e10-login 间互通——用任一登录后另一个可直接用。
88
+ > ⚠️ 从硬编码密钥迁移到动态密钥后,旧版 auth 文件无法解密,需重新登录(`auth login` 或 `auth set --eteamsid`)。
@@ -0,0 +1,189 @@
1
+ # 编辑回显指南
2
+
3
+ 编辑已有数据时,需要将表单数据加载回表单控件中。`getSimpleData` 对特殊类型统一返回 ID,可直接用于表单回显,但选择器组件需要额外提取 name 信息。
4
+
5
+ ---
6
+
7
+ ## 核心流程
8
+
9
+ ### 第一步:加载时同时获取两份数据
10
+
11
+ ```js
12
+ // loadData 中用 Promise.all 同时获取两份数据
13
+ function loadData() {
14
+ Promise.all([
15
+ getSimpleData(OBJ_ID, USER_ID),
16
+ getAllData(OBJ_ID, USER_ID),
17
+ ]).then(function ([simpleRows, allRows]) {
18
+ setData(withDisplayNames(simpleRows, statusMap));
19
+ setRawData(allRows); // 保存原始数据用于编辑回显
20
+ });
21
+ }
22
+ ```
23
+
24
+ ### 第二步:编辑按钮点击时回填表单
25
+
26
+ ```js
27
+ function handleEdit(rowData) {
28
+ var dataId = rowData._raw.id; // Table 回调的 rowData 有 _raw,不是 getSimpleData 返回的行
29
+
30
+ // 1. 从 rawData(原始接口数据) 中查找对应记录
31
+ var rawEntry = rawData.find(function (r) {
32
+ return r.mainTable && r.mainTable.id && r.mainTable.id.fieldValue === dataId;
33
+ });
34
+
35
+ // 2. 用 getSimpleData 的值填充表单(所有特殊字段已是 ID,可直接用)
36
+ var editForm = {};
37
+ Object.keys(emptyForm).forEach(function (key) {
38
+ editForm[key] = rowData._raw[key] || '';
39
+ });
40
+
41
+ // 3. 从 rawEntry.mainTable 中提取 name 信息(选择器组件需要 [{id, name}] 格式)
42
+ var newSelectedPerson = [];
43
+ var newSelectedDept = [];
44
+ var newUploadedFiles = [];
45
+
46
+ if (rawEntry && rawEntry.mainTable) {
47
+ Object.keys(rawEntry.mainTable).forEach(function (key) {
48
+ var val = rawEntry.mainTable[key];
49
+ if (!val) return;
50
+
51
+ if (Array.isArray(val) && val.length > 0) {
52
+ var fieldId = val[0].fieldId;
53
+ var fieldType = val[0].fieldType;
54
+
55
+ if (fieldId === F.person) {
56
+ newSelectedPerson = val.map(function (v) {
57
+ return { id: v.fieldOptionId, name: v.fieldOptionName };
58
+ });
59
+ } else if (fieldId === F.dept) {
60
+ newSelectedDept = val.map(function (v) {
61
+ return { id: v.fieldOptionId, name: v.fieldOptionName };
62
+ });
63
+ } else if (fieldId === F.attachment) {
64
+ newUploadedFiles = val.map(function (v) {
65
+ return { fileid: v.fieldOptionId, name: v.fieldOptionName };
66
+ });
67
+ } else if (fieldType === 'Select' || fieldType === 'RadioBox' || fieldType === 'CheckBox') {
68
+ // getSimpleData 已返回 ID,此处从 rawEntry 再次确认(多选时覆盖)
69
+ editForm[fieldId] = val.map(function (v) { return v.fieldOptionId; }).join(',');
70
+ }
71
+ }
72
+ });
73
+ }
74
+
75
+ // 4. 一次性设置所有状态
76
+ setForm(editForm);
77
+ setSelectedPerson(newSelectedPerson);
78
+ setSelectedDept(newSelectedDept);
79
+ setUploadedFiles(newUploadedFiles);
80
+ setModalVisible(true);
81
+ }
82
+ ```
83
+
84
+ ---
85
+
86
+ ## 关键点总结
87
+
88
+ | 要点 | 说明 |
89
+ |------|------|
90
+ | `getAllData` 返回结构中 `id` 在 `mainTable` 内部 | 查找原始记录必须是 `r.mainTable.id.fieldValue`,**不能**写成 `r.id.fieldValue` |
91
+ | `Browser`(人员/部门) 的 `value` | 需要 `[{id, name}]` 格式 |
92
+ | `Upload`(附件) 的 `data` | 需要 `[{fileid, name}]` 格式 |
93
+ | `Select` 下拉框的 `value` | 需要匹配 `fieldOptionId`(即 `opt.valueKey`),不能是显示名 |
94
+ | Table 的 `onRowClick` 回调 | `rowData._raw` 引用了原始数据行,`rowData._raw.id` 是 dataId |
95
+ | 表单字段值来源 | 从 `getSimpleData` 取值(已是 ID),选择器显示名从 `getAllData` 提取 |
96
+
97
+ ---
98
+
99
+ ## getSimpleData vs getAllData 结构对比
100
+
101
+ ### getSimpleData 返回(扁平,纯 ID,用于写入)
102
+
103
+ ```json
104
+ [
105
+ {
106
+ "1290462231772995585": "张三", // Text:直接就是值
107
+ "1290462231772995586": "1290462231772995612", // Select:选项 ID
108
+ "1290462231772995589": "2765550234448235905", // Employee:用户 ID
109
+ "id": "1290469928435908609"
110
+ }
111
+ ]
112
+ ```
113
+
114
+ 所有特殊字段统一返回 `fieldOptionId`(纯 ID),直接用于 `formToSave`。
115
+
116
+ ### getAllData 返回(含名称,用于展示/回显)
117
+
118
+ ```json
119
+ {
120
+ "mainTable": {
121
+ "sjhfa391": { // ← key 是随机哈希,不是 fieldId!
122
+ "fieldId": "1290462231772995590",
123
+ "fieldType": "Text",
124
+ "fieldValue": "13800138000"
125
+ },
126
+ "zssj98f9d": [{ // ← Employee 是数组!
127
+ "fieldId": "1290462231772995589",
128
+ "fieldType": "Employee",
129
+ "fieldOptionId": "2765550234448235905",
130
+ "fieldOptionName": "张三"
131
+ }],
132
+ "bm1d630": [{ // ← Select 也是数组!
133
+ "fieldId": "1290462231772995586",
134
+ "fieldType": "Select",
135
+ "fieldOptionId": "1290462231772995612",
136
+ "fieldOptionName": "技术部"
137
+ }],
138
+ "id": { // ← 只有 id 的 key 是 "id"
139
+ "fieldId": "5",
140
+ "fieldType": "Text",
141
+ "fieldValue": "1290469928435908609"
142
+ }
143
+ }
144
+ }
145
+ ```
146
+
147
+ ### 三个关键规则
148
+
149
+ | 规则 | 说明 |
150
+ |------|------|
151
+ | **key 是随机哈希** | `mainTable` 的 key(如 `sjhfa391`)是随机字符串,**不能**用 `mainTable[fieldId]` 直接取值 |
152
+ | **只能用 fieldId 匹配** | 必须遍历 `Object.values(mainTable)`,通过 `val.fieldId` 或 `val[0].fieldId` 匹配目标字段 |
153
+ | **数组 vs 对象** | Employee / Select / FileComponent / RadioBox / CheckBox → **数组** `[{...}]`;Text / Number / DateComponent → **对象** `{...}` |
154
+ | **只有 id 是 deterministic** | 数据行 ID 的 key 固定为 `"id"`,可直接用 `mainTable.id.fieldValue` |
155
+
156
+ ### 字段值 → 组件 props 映射表
157
+
158
+ > 这是整个编辑回显最容易出错的一步。getAllData 中的字段形状各不相同,映射到组件 props 的方式也不同。
159
+
160
+ | 字段类型 | getAllData 中的形状 | 目标组件 | 需要的 props 格式 | 映射方式 |
161
+ |---------|-------------------|---------|-----------------|---------|
162
+ | Employee | `[{fieldOptionId, fieldOptionName}]` | `Browser` | `value={[{id, name}]}` | `v.fieldOptionId → id`,`v.fieldOptionName → name` |
163
+ | Department | `[{fieldOptionId, fieldOptionName}]` | `Browser` | `value={[{id, name}]}` | 同上 |
164
+ | FileComponent | `[{fieldOptionId, fieldOptionName}]` | `Upload` | `data={[{fileid, name}]}` | `v.fieldOptionId → fileid`,`v.fieldOptionName → name` |
165
+ | Select(单选) | `[{fieldOptionId}]` | `<select>` | `value="fieldOptionId"` | 取 `val[0].fieldOptionId` |
166
+ | Select(多选) | `[{...}, {...}]` → 多个 | `<select multiple>` | 逗号分隔串 | `val.map(...).join(',')` |
167
+ | Text / Number | `{fieldValue}` | `<input>` | `value="fieldValue"` | 直接用 `getSimpleData` 的值 |
168
+
169
+ ### 正确的字段提取方式
170
+
171
+ ```js
172
+ // 查找 mainTable 中 fieldId 匹配的字段值
173
+ function findField(mainTable, targetFieldId) {
174
+ var keys = Object.keys(mainTable);
175
+ for (var i = 0; i < keys.length; i++) {
176
+ var val = mainTable[keys[i]];
177
+ if (!val) continue;
178
+ // 数组类型(Employee/Select 等)取 val[0].fieldId
179
+ if (Array.isArray(val) && val.length > 0 && val[0].fieldId === targetFieldId) {
180
+ return val;
181
+ }
182
+ // 普通类型(Text/DateComponent 等)取 val.fieldId
183
+ if (!Array.isArray(val) && val.fieldId === targetFieldId) {
184
+ return val;
185
+ }
186
+ }
187
+ return null;
188
+ }
189
+ ```
@@ -0,0 +1,262 @@
1
+ # 表单数据操作指南
2
+
3
+ Ebuilder 项目没有后端,但可以通过读写 Ebuilder 的表单来实现数据交互。所有 CRUD 接口已实现在 `/api/formApi.js` 中。
4
+
5
+ > 应用已注册的表单信息及字段用 `e10-cli form read <objId> --app-id <appId> --out fields.json` 导出(机器可读 JSON),为空说明还没注册。
6
+
7
+ ---
8
+
9
+ ## 〇、非对称设计(读写分离)
10
+
11
+ **这是整份指南最核心的概念,每次写表单页面之前必须理解。**
12
+
13
+ `getSimpleData` 对所有特殊类型(Select / RadioBox / CheckBox / Employee / Department / FileComponent)**统一返回 ID**(`fieldOptionId`)。好处是写入简单——直接拿 ID 原样写入,不用做任何转换。代价是展示麻烦——ID 是长数字,用户完全看不懂。
14
+
15
+ ```
16
+ 写入路径(简单):getSimpleData → form 直接用 ID → saveFormData/updateFormData
17
+ 展示路径(复杂):getSimpleData → ID → 映射为名称 → 表格渲染
18
+ ```
19
+
20
+ **不同字段类型,名称来源不同**:
21
+
22
+ | 字段类型 | getSimpleData 返回值 | 名称来源 |
23
+ |---------|---------------------|---------|
24
+ | 普通文本/数字/日期 | `"名称"` / `123` / `"2026-01-01"` | 直接展示 |
25
+ | Select / RadioBox / CheckBox | `"1283421826353889337"`(ID) | `getFieldOptions` 映射 `valueKey → name` |
26
+ | Employee / Department | `"5140559860850691459"`(用户ID) | `getAllData` 提取 `fieldOptionName` |
27
+ | FileComponent | `"fileid1,fileid2"`(文件ID串) | 上传组件的 `name` 字段 |
28
+
29
+ > **铁律:表格里永远不要直接渲染 `row[字段ID]`。** 用户看到一列长数字 = 你漏掉了名称转换。
30
+
31
+ ---
32
+
33
+ ## 一、四个 API 的职责
34
+
35
+ | API | 职责 |
36
+ |-----|------|
37
+ | `getAllData` | 做源(含 `fieldOptionName`,用于提取名称信息) |
38
+ | `getSimpleData` | 做读写(纯 ID,不含名称) |
39
+ | `withDisplayNames` | 做展示(ID → 名称转换) |
40
+ | `getFieldOptions` | 做下拉(拿 `valueKey` + `name`) |
41
+
42
+ ---
43
+
44
+ ## 二、核心规则:读取用 ID,展示用名称
45
+
46
+ **最容易出错的点,每次编码前务必理解:**
47
+
48
+ `getSimpleData` 对所有特殊类型(Select/RadioBox/CheckBox/Employee/Department/FileComponent)**统一返回 ID**(`fieldOptionId`),读写一致。
49
+
50
+ > 写完代码逐条自检,90% 的 bug 都是这几个:
51
+ > 1. `if (row[roomField] === '101')` — Select 字段值是 `fieldOptionId`(长数字如 `"1283421826353889337"`),永远不等于选项名称
52
+ > 2. `{row[empField]}` 直接渲染 — Employee/Department 返回的是长数字 ID,人名需从 `getAllData` 提取 `fieldOptionName`
53
+ > 3. 表格里直接显示 `row[fieldId]` — 用户看到一列长数字。展示用 `withDisplayNames()`
54
+
55
+ - **写入保存** → 直接用 `getSimpleData` 的返回值,所有字段都是 ID,无需转换
56
+ - **表格展示** → 用 `withDisplayNames()` 把 ID 转成名称,否则用户看到的是数字
57
+
58
+ ---
59
+
60
+ ## 三、读取表单数据
61
+
62
+ ### 3.1 getSimpleData — 获取简单格式数据
63
+
64
+ ```js
65
+ import { getSimpleData } from '../api/formApi.js';
66
+ const CONFIG = {
67
+ objId: '12556432068......',
68
+ userId: TEAMS.currentUser.id
69
+ };
70
+ const data = await getSimpleData(CONFIG.objId, CONFIG.userId);
71
+ ```
72
+
73
+ 返回格式:
74
+ ```js
75
+ [
76
+ {
77
+ "4765111450482898127": "具体的数据内容",
78
+ "4765111450482898155": "具体的数据内容",
79
+ "id":"1259017552222814208" // 表单数据固有的数据ID字段,fieldId固定为"id"
80
+ },
81
+ {.....}
82
+ ]
83
+ ```
84
+
85
+ `getSimpleData` 返回的是扁平对象,字段 ID 作为 key 直接挂载在行上,**没有 `_raw` 层**。直接用 `item[字段ID]` 访问。
86
+
87
+ > 注意:Table 组件的 `onRowClick` 回调参数中会带 `_raw`(引用原始数据行),仅在编辑回显等场景通过回调参数访问,不要主动去构造 `_raw`。
88
+
89
+ ### 3.2 withDisplayNames — ID → 名称转换(表格展示用)
90
+
91
+ 用于在表格中把 Select/Employee/Department 等字段的 ID 转成可读名称。
92
+
93
+ 推荐写法:
94
+ ```js
95
+ import { getSimpleData, withDisplayNames, getFieldOptions } from '../api/formApi.js';
96
+
97
+ function TemplatePage() {
98
+ const [data, setData] = useState([]);
99
+ const [loading, setLoading] = useState(true);
100
+
101
+ useEffect(function () {
102
+ Promise.all([
103
+ getSimpleData(CONFIG.objId, CONFIG.userId),
104
+ // 为每个需要展示名称的 Select 字段调用 getFieldOptions
105
+ getFieldOptions(F.status, OBJ_ID),
106
+ ]).then(function ([rows, statusOpts]) {
107
+ setData(withDisplayNames(rows, { [F.status]: statusOpts }));
108
+ }).catch(function () {})
109
+ .finally(function () { setLoading(false); });
110
+ }, []);
111
+ // ......
112
+ ```
113
+
114
+ ### 3.3 getFieldOptions — 获取选项列表
115
+
116
+ 动态获取 Select/RadioBox/CheckBox 字段的可选值:
117
+
118
+ ```js
119
+ import { getFieldOptions } from './api/formApi.js';
120
+ ```
121
+
122
+ 返回结构:
123
+ ```js
124
+ [
125
+ {
126
+ "valueKey": "1263421826353889337",
127
+ "name": "已入职"
128
+ },{
129
+ "valueKey": "1263421826353889338",
130
+ "name": "已离职"
131
+ }
132
+ ]
133
+ ```
134
+
135
+ ---
136
+
137
+ ## 四、字段类型对应组件
138
+
139
+ `form read --out fields.json` 导出的字段列表会告诉你每个字段的类型和 ID,有一些特殊的类型你必须选用对应的组件进行输入:
140
+
141
+ | 字段类型 | 对应组件 |
142
+ |---------|---------|
143
+ | Employee | `Browser` — 人员选择框(`module="hrm" type="resource"`) |
144
+ | Department | `Browser` — 部门选择框(`module="hrm" type="department"`) |
145
+ | FileComponent | `Upload` — 文件上传(参考 `references/components/form-Upload.md`) |
146
+
147
+ ---
148
+
149
+ ## 五、数据写入
150
+
151
+ ### 5.1 formData 格式
152
+
153
+ **一定是字段 ID 作为 key 的格式**,字段 ID 是纯数字组成的字符串,不包含任何其他符号。必须对照 `form read --out fields.json` 导出的字段来写,不要自己编造。
154
+
155
+ ```
156
+ {
157
+ "4765111450482898127": "数据内容1",
158
+ "4765111450482898155": "数据内容2"
159
+ }
160
+ ```
161
+
162
+ ### 5.2 三个写接口
163
+
164
+ **新增:**
165
+ ```js
166
+ export async function saveFormData(objId, formData, userId)
167
+ ```
168
+
169
+ **更新(多一个 dataId 参数):**
170
+ ```js
171
+ export async function updateFormData(objId, formData, dataId, userId)
172
+ ```
173
+
174
+ **删除:**
175
+ ```js
176
+ export async function deleteFormData(objId, dataId, userId)
177
+ ```
178
+
179
+ ### 5.3 调用方式
180
+
181
+ ```js
182
+ if (editingId) {
183
+ promise = updateFormData(OBJ_ID, formToSave, editingId, USER_ID);
184
+ } else {
185
+ promise = saveFormData(OBJ_ID, formToSave, USER_ID);
186
+ }
187
+ ```
188
+
189
+ ### 5.4 写入时直接使用 form 的值(已全部为 ID)
190
+
191
+ `getSimpleData` 对所有特殊类型(Select/Employee/Department/FileComponent)统一返回 ID。编辑保存时无需跳过任何字段,`form` 中的值可直接写入。
192
+
193
+ ```js
194
+ var formToSave = {};
195
+
196
+ // 所有字段统一处理,getSimpleData 已返回 ID
197
+ Object.keys(form).forEach(function (key) {
198
+ var val = form[key];
199
+ if (val !== '' && val !== null && val !== undefined) {
200
+ formToSave[key] = val;
201
+ }
202
+ });
203
+
204
+ // 用户操作选择器时用新值覆盖
205
+ if (selectedPerson.length > 0) {
206
+ formToSave[F.person] = selectedPerson[0].id;
207
+ }
208
+ if (selectedDept.length > 0) {
209
+ formToSave[F.dept] = selectedDept[0].id;
210
+ }
211
+ if (uploadedFiles.length > 0) {
212
+ formToSave[F.attachment] = uploadedFiles.map(function (f) { return f.fileid; }).join(',');
213
+ }
214
+ ```
215
+
216
+ ---
217
+
218
+ ## 六、三个高频编码错误
219
+
220
+ 编写 Ebuilder 页面时,以下三个错误非常高发,生成代码前务必检查:
221
+
222
+ ### 错误 1:数据访问用错层级
223
+
224
+ `getSimpleData` 返回的每一行直接用 `item[字段ID]`,**没有 `_raw` 层**。
225
+
226
+ ```js
227
+ // 错误
228
+ var title = item._raw[F.title];
229
+
230
+ // 正确
231
+ var title = item[F.title];
232
+ ```
233
+
234
+ ### 错误 2:Select 字段用名称做判断
235
+
236
+ `getSimpleData` 对 Select/RadioBox/CheckBox 字段返回的是**选项 ID**(`fieldOptionId`,即 `valueKey`),如 `"1283421826353889337"`,不是显示名称。
237
+
238
+ ```js
239
+ // 错误
240
+ if (item[F.status] === '已完成') { ... } // 显示名称永远不匹配
241
+
242
+ // 正确
243
+ if (item[F.status] === '1283421826353889337') { ... } // 用选项 ID
244
+ ```
245
+
246
+ **表格中显示名称**请使用 `withDisplayNames()`,不要在表格列渲染时逐行查 ID。
247
+
248
+ ### 错误 3:React state 直接修改
249
+
250
+ 直接修改对象属性再 `setForm` 不会触发 React 重新渲染。
251
+
252
+ ```js
253
+ // 错误
254
+ form[F.name] = value;
255
+ setForm(form);
256
+
257
+ // 正确
258
+ var newForm = {};
259
+ Object.keys(form).forEach(function (k) { newForm[k] = form[k]; });
260
+ newForm[F.name] = value;
261
+ setForm(newForm);
262
+ ```