weaver-e10-builder 1.0.2-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/README.md +200 -0
  2. package/dist/commands/app.d.ts +3 -0
  3. package/dist/commands/app.d.ts.map +1 -0
  4. package/dist/commands/app.js +305 -0
  5. package/dist/commands/app.js.map +1 -0
  6. package/dist/commands/auth.d.ts +3 -0
  7. package/dist/commands/auth.d.ts.map +1 -0
  8. package/dist/commands/auth.js +386 -0
  9. package/dist/commands/auth.js.map +1 -0
  10. package/dist/commands/check.d.ts +3 -0
  11. package/dist/commands/check.d.ts.map +1 -0
  12. package/dist/commands/check.js +106 -0
  13. package/dist/commands/check.js.map +1 -0
  14. package/dist/commands/compile.d.ts +3 -0
  15. package/dist/commands/compile.d.ts.map +1 -0
  16. package/dist/commands/compile.js +134 -0
  17. package/dist/commands/compile.js.map +1 -0
  18. package/dist/commands/docx.d.ts +3 -0
  19. package/dist/commands/docx.d.ts.map +1 -0
  20. package/dist/commands/docx.js +54 -0
  21. package/dist/commands/docx.js.map +1 -0
  22. package/dist/commands/form-button.d.ts +3 -0
  23. package/dist/commands/form-button.d.ts.map +1 -0
  24. package/dist/commands/form-button.js +441 -0
  25. package/dist/commands/form-button.js.map +1 -0
  26. package/dist/commands/form-data.d.ts +3 -0
  27. package/dist/commands/form-data.d.ts.map +1 -0
  28. package/dist/commands/form-data.js +197 -0
  29. package/dist/commands/form-data.js.map +1 -0
  30. package/dist/commands/form-ebuilder-columns.d.ts +3 -0
  31. package/dist/commands/form-ebuilder-columns.d.ts.map +1 -0
  32. package/dist/commands/form-ebuilder-columns.js +118 -0
  33. package/dist/commands/form-ebuilder-columns.js.map +1 -0
  34. package/dist/commands/form-ebuilder-filter.d.ts +3 -0
  35. package/dist/commands/form-ebuilder-filter.d.ts.map +1 -0
  36. package/dist/commands/form-ebuilder-filter.js +135 -0
  37. package/dist/commands/form-ebuilder-filter.js.map +1 -0
  38. package/dist/commands/form-ebuilder-scope.d.ts +3 -0
  39. package/dist/commands/form-ebuilder-scope.d.ts.map +1 -0
  40. package/dist/commands/form-ebuilder-scope.js +321 -0
  41. package/dist/commands/form-ebuilder-scope.js.map +1 -0
  42. package/dist/commands/form-ebuilder-search.d.ts +3 -0
  43. package/dist/commands/form-ebuilder-search.d.ts.map +1 -0
  44. package/dist/commands/form-ebuilder-search.js +252 -0
  45. package/dist/commands/form-ebuilder-search.js.map +1 -0
  46. package/dist/commands/form-formula.d.ts +12 -0
  47. package/dist/commands/form-formula.d.ts.map +1 -0
  48. package/dist/commands/form-formula.js +252 -0
  49. package/dist/commands/form-formula.js.map +1 -0
  50. package/dist/commands/form-layout-init.d.ts +15 -0
  51. package/dist/commands/form-layout-init.d.ts.map +1 -0
  52. package/dist/commands/form-layout-init.js +162 -0
  53. package/dist/commands/form-layout-init.js.map +1 -0
  54. package/dist/commands/form-layout.d.ts +3 -0
  55. package/dist/commands/form-layout.d.ts.map +1 -0
  56. package/dist/commands/form-layout.js +236 -0
  57. package/dist/commands/form-layout.js.map +1 -0
  58. package/dist/commands/form-list-click.d.ts +3 -0
  59. package/dist/commands/form-list-click.d.ts.map +1 -0
  60. package/dist/commands/form-list-click.js +154 -0
  61. package/dist/commands/form-list-click.js.map +1 -0
  62. package/dist/commands/form-list-event.d.ts +3 -0
  63. package/dist/commands/form-list-event.d.ts.map +1 -0
  64. package/dist/commands/form-list-event.js +203 -0
  65. package/dist/commands/form-list-event.js.map +1 -0
  66. package/dist/commands/form-list-filter.d.ts +9 -0
  67. package/dist/commands/form-list-filter.d.ts.map +1 -0
  68. package/dist/commands/form-list-filter.js +107 -0
  69. package/dist/commands/form-list-filter.js.map +1 -0
  70. package/dist/commands/form-list-group.d.ts +11 -0
  71. package/dist/commands/form-list-group.d.ts.map +1 -0
  72. package/dist/commands/form-list-group.js +100 -0
  73. package/dist/commands/form-list-group.js.map +1 -0
  74. package/dist/commands/form-list-permission.d.ts +3 -0
  75. package/dist/commands/form-list-permission.d.ts.map +1 -0
  76. package/dist/commands/form-list-permission.js +127 -0
  77. package/dist/commands/form-list-permission.js.map +1 -0
  78. package/dist/commands/form-list-search-group.d.ts +3 -0
  79. package/dist/commands/form-list-search-group.d.ts.map +1 -0
  80. package/dist/commands/form-list-search-group.js +132 -0
  81. package/dist/commands/form-list-search-group.js.map +1 -0
  82. package/dist/commands/form-list-stats.d.ts +11 -0
  83. package/dist/commands/form-list-stats.d.ts.map +1 -0
  84. package/dist/commands/form-list-stats.js +139 -0
  85. package/dist/commands/form-list-stats.js.map +1 -0
  86. package/dist/commands/form-list-unit.d.ts +3 -0
  87. package/dist/commands/form-list-unit.d.ts.map +1 -0
  88. package/dist/commands/form-list-unit.js +95 -0
  89. package/dist/commands/form-list-unit.js.map +1 -0
  90. package/dist/commands/form-list-utils.d.ts +32 -0
  91. package/dist/commands/form-list-utils.d.ts.map +1 -0
  92. package/dist/commands/form-list-utils.js +76 -0
  93. package/dist/commands/form-list-utils.js.map +1 -0
  94. package/dist/commands/form-list.d.ts +3 -0
  95. package/dist/commands/form-list.d.ts.map +1 -0
  96. package/dist/commands/form-list.js +624 -0
  97. package/dist/commands/form-list.js.map +1 -0
  98. package/dist/commands/form-permission.d.ts +3 -0
  99. package/dist/commands/form-permission.d.ts.map +1 -0
  100. package/dist/commands/form-permission.js +193 -0
  101. package/dist/commands/form-permission.js.map +1 -0
  102. package/dist/commands/form-relate.d.ts +14 -0
  103. package/dist/commands/form-relate.d.ts.map +1 -0
  104. package/dist/commands/form-relate.js +140 -0
  105. package/dist/commands/form-relate.js.map +1 -0
  106. package/dist/commands/form-serial-mark.d.ts +18 -0
  107. package/dist/commands/form-serial-mark.d.ts.map +1 -0
  108. package/dist/commands/form-serial-mark.js +167 -0
  109. package/dist/commands/form-serial-mark.js.map +1 -0
  110. package/dist/commands/form-table-view.d.ts +3 -0
  111. package/dist/commands/form-table-view.d.ts.map +1 -0
  112. package/dist/commands/form-table-view.js +217 -0
  113. package/dist/commands/form-table-view.js.map +1 -0
  114. package/dist/commands/form-validate.d.ts +3 -0
  115. package/dist/commands/form-validate.d.ts.map +1 -0
  116. package/dist/commands/form-validate.js +122 -0
  117. package/dist/commands/form-validate.js.map +1 -0
  118. package/dist/commands/form-view-permission.d.ts +3 -0
  119. package/dist/commands/form-view-permission.d.ts.map +1 -0
  120. package/dist/commands/form-view-permission.js +86 -0
  121. package/dist/commands/form-view-permission.js.map +1 -0
  122. package/dist/commands/form-view.d.ts +3 -0
  123. package/dist/commands/form-view.d.ts.map +1 -0
  124. package/dist/commands/form-view.js +145 -0
  125. package/dist/commands/form-view.js.map +1 -0
  126. package/dist/commands/form.d.ts +3 -0
  127. package/dist/commands/form.d.ts.map +1 -0
  128. package/dist/commands/form.js +2467 -0
  129. package/dist/commands/form.js.map +1 -0
  130. package/dist/commands/icon.d.ts +3 -0
  131. package/dist/commands/icon.d.ts.map +1 -0
  132. package/dist/commands/icon.js +82 -0
  133. package/dist/commands/icon.js.map +1 -0
  134. package/dist/commands/matrix.d.ts +3 -0
  135. package/dist/commands/matrix.d.ts.map +1 -0
  136. package/dist/commands/matrix.js +587 -0
  137. package/dist/commands/matrix.js.map +1 -0
  138. package/dist/commands/menu-permission.d.ts +3 -0
  139. package/dist/commands/menu-permission.d.ts.map +1 -0
  140. package/dist/commands/menu-permission.js +188 -0
  141. package/dist/commands/menu-permission.js.map +1 -0
  142. package/dist/commands/menu.d.ts +16 -0
  143. package/dist/commands/menu.d.ts.map +1 -0
  144. package/dist/commands/menu.js +269 -0
  145. package/dist/commands/menu.js.map +1 -0
  146. package/dist/commands/project.d.ts +3 -0
  147. package/dist/commands/project.d.ts.map +1 -0
  148. package/dist/commands/project.js +345 -0
  149. package/dist/commands/project.js.map +1 -0
  150. package/dist/commands/role.d.ts +3 -0
  151. package/dist/commands/role.d.ts.map +1 -0
  152. package/dist/commands/role.js +224 -0
  153. package/dist/commands/role.js.map +1 -0
  154. package/dist/commands/user.d.ts +3 -0
  155. package/dist/commands/user.d.ts.map +1 -0
  156. package/dist/commands/user.js +49 -0
  157. package/dist/commands/user.js.map +1 -0
  158. package/dist/commands/workflow-action.d.ts +3 -0
  159. package/dist/commands/workflow-action.d.ts.map +1 -0
  160. package/dist/commands/workflow-action.js +1821 -0
  161. package/dist/commands/workflow-action.js.map +1 -0
  162. package/dist/commands/workflow-advanced.d.ts +3 -0
  163. package/dist/commands/workflow-advanced.d.ts.map +1 -0
  164. package/dist/commands/workflow-advanced.js +290 -0
  165. package/dist/commands/workflow-advanced.js.map +1 -0
  166. package/dist/commands/workflow-condition.d.ts +7 -0
  167. package/dist/commands/workflow-condition.d.ts.map +1 -0
  168. package/dist/commands/workflow-condition.js +562 -0
  169. package/dist/commands/workflow-condition.js.map +1 -0
  170. package/dist/commands/workflow-message.d.ts +3 -0
  171. package/dist/commands/workflow-message.d.ts.map +1 -0
  172. package/dist/commands/workflow-message.js +399 -0
  173. package/dist/commands/workflow-message.js.map +1 -0
  174. package/dist/commands/workflow-node-overtime.d.ts +3 -0
  175. package/dist/commands/workflow-node-overtime.d.ts.map +1 -0
  176. package/dist/commands/workflow-node-overtime.js +150 -0
  177. package/dist/commands/workflow-node-overtime.js.map +1 -0
  178. package/dist/commands/workflow-node-reject.d.ts +3 -0
  179. package/dist/commands/workflow-node-reject.d.ts.map +1 -0
  180. package/dist/commands/workflow-node-reject.js +115 -0
  181. package/dist/commands/workflow-node-reject.js.map +1 -0
  182. package/dist/commands/workflow-node-sign.d.ts +15 -0
  183. package/dist/commands/workflow-node-sign.d.ts.map +1 -0
  184. package/dist/commands/workflow-node-sign.js +100 -0
  185. package/dist/commands/workflow-node-sign.js.map +1 -0
  186. package/dist/commands/workflow-node-validate.d.ts +16 -0
  187. package/dist/commands/workflow-node-validate.d.ts.map +1 -0
  188. package/dist/commands/workflow-node-validate.js +169 -0
  189. package/dist/commands/workflow-node-validate.js.map +1 -0
  190. package/dist/commands/workflow-node.d.ts +3 -0
  191. package/dist/commands/workflow-node.d.ts.map +1 -0
  192. package/dist/commands/workflow-node.js +347 -0
  193. package/dist/commands/workflow-node.js.map +1 -0
  194. package/dist/commands/workflow-numbering.d.ts +17 -0
  195. package/dist/commands/workflow-numbering.d.ts.map +1 -0
  196. package/dist/commands/workflow-numbering.js +191 -0
  197. package/dist/commands/workflow-numbering.js.map +1 -0
  198. package/dist/commands/workflow-plan-range.d.ts +3 -0
  199. package/dist/commands/workflow-plan-range.d.ts.map +1 -0
  200. package/dist/commands/workflow-plan-range.js +116 -0
  201. package/dist/commands/workflow-plan-range.js.map +1 -0
  202. package/dist/commands/workflow-setting.d.ts +3 -0
  203. package/dist/commands/workflow-setting.d.ts.map +1 -0
  204. package/dist/commands/workflow-setting.js +440 -0
  205. package/dist/commands/workflow-setting.js.map +1 -0
  206. package/dist/commands/workflow-title.d.ts +14 -0
  207. package/dist/commands/workflow-title.d.ts.map +1 -0
  208. package/dist/commands/workflow-title.js +106 -0
  209. package/dist/commands/workflow-title.js.map +1 -0
  210. package/dist/commands/workflow.d.ts +26 -0
  211. package/dist/commands/workflow.d.ts.map +1 -0
  212. package/dist/commands/workflow.js +2359 -0
  213. package/dist/commands/workflow.js.map +1 -0
  214. package/dist/core/auth.d.ts +36 -0
  215. package/dist/core/auth.d.ts.map +1 -0
  216. package/dist/core/auth.js +351 -0
  217. package/dist/core/auth.js.map +1 -0
  218. package/dist/core/client.d.ts +27 -0
  219. package/dist/core/client.d.ts.map +1 -0
  220. package/dist/core/client.js +100 -0
  221. package/dist/core/client.js.map +1 -0
  222. package/dist/core/crypto.d.ts +11 -0
  223. package/dist/core/crypto.d.ts.map +1 -0
  224. package/dist/core/crypto.js +102 -0
  225. package/dist/core/crypto.js.map +1 -0
  226. package/dist/core/edition.d.ts +4 -0
  227. package/dist/core/edition.d.ts.map +1 -0
  228. package/dist/core/edition.js +19 -0
  229. package/dist/core/edition.js.map +1 -0
  230. package/dist/index.d.ts +3 -0
  231. package/dist/index.d.ts.map +1 -0
  232. package/dist/index.js +118 -0
  233. package/dist/index.js.map +1 -0
  234. package/dist/services/action-detail.d.ts +112 -0
  235. package/dist/services/action-detail.d.ts.map +1 -0
  236. package/dist/services/action-detail.js +443 -0
  237. package/dist/services/action-detail.js.map +1 -0
  238. package/dist/services/condition-rules.d.ts +45 -0
  239. package/dist/services/condition-rules.d.ts.map +1 -0
  240. package/dist/services/condition-rules.js +207 -0
  241. package/dist/services/condition-rules.js.map +1 -0
  242. package/dist/services/form-create.d.ts +102 -0
  243. package/dist/services/form-create.d.ts.map +1 -0
  244. package/dist/services/form-create.js +835 -0
  245. package/dist/services/form-create.js.map +1 -0
  246. package/dist/services/form-ebuilder-filter.d.ts +60 -0
  247. package/dist/services/form-ebuilder-filter.d.ts.map +1 -0
  248. package/dist/services/form-ebuilder-filter.js +562 -0
  249. package/dist/services/form-ebuilder-filter.js.map +1 -0
  250. package/dist/services/form-table-view.d.ts +117 -0
  251. package/dist/services/form-table-view.d.ts.map +1 -0
  252. package/dist/services/form-table-view.js +882 -0
  253. package/dist/services/form-table-view.js.map +1 -0
  254. package/dist/services/form-view-permission.d.ts +30 -0
  255. package/dist/services/form-view-permission.d.ts.map +1 -0
  256. package/dist/services/form-view-permission.js +208 -0
  257. package/dist/services/form-view-permission.js.map +1 -0
  258. package/dist/services/form-view.d.ts +41 -0
  259. package/dist/services/form-view.d.ts.map +1 -0
  260. package/dist/services/form-view.js +334 -0
  261. package/dist/services/form-view.js.map +1 -0
  262. package/dist/services/formula-detail.d.ts +31 -0
  263. package/dist/services/formula-detail.d.ts.map +1 -0
  264. package/dist/services/formula-detail.js +66 -0
  265. package/dist/services/formula-detail.js.map +1 -0
  266. package/dist/services/rich-types.d.ts +35 -0
  267. package/dist/services/rich-types.d.ts.map +1 -0
  268. package/dist/services/rich-types.js +105 -0
  269. package/dist/services/rich-types.js.map +1 -0
  270. package/dist/services/workflow-layout.d.ts +118 -0
  271. package/dist/services/workflow-layout.d.ts.map +1 -0
  272. package/dist/services/workflow-layout.js +279 -0
  273. package/dist/services/workflow-layout.js.map +1 -0
  274. package/dist/services/workflow-operator.d.ts +36 -0
  275. package/dist/services/workflow-operator.d.ts.map +1 -0
  276. package/dist/services/workflow-operator.js +65 -0
  277. package/dist/services/workflow-operator.js.map +1 -0
  278. package/dist/types.d.ts +53 -0
  279. package/dist/types.d.ts.map +1 -0
  280. package/dist/types.js +2 -0
  281. package/dist/types.js.map +1 -0
  282. package/dist/utils/column-name.d.ts +13 -0
  283. package/dist/utils/column-name.d.ts.map +1 -0
  284. package/dist/utils/column-name.js +45 -0
  285. package/dist/utils/column-name.js.map +1 -0
  286. package/ecodecmd/package.json +27 -0
  287. package/ecodecmd/src/build.js +709 -0
  288. package/ecodecmd/src/compile.js +81 -0
  289. package/ecodecmd/src/index.js +48 -0
  290. package/ecodecmd/src/init.js +73 -0
  291. package/ecodecmd/src/lib/@babel/plugin-proposal-object-rest-spread@7.5.5/index.js +1795 -0
  292. package/ecodecmd/src/lib/@babel/plugin-proposal-optional-chaining@7.6.0/index.js +135 -0
  293. package/ecodecmd/src/lib/@babel/preset-env-standalone@7.5.5/babel-preset-env.js +76043 -0
  294. package/ecodecmd/src/lib/@babel/standalone@7.5.5/babel.js +90802 -0
  295. package/ecodecmd/src/lib/exec.js +77 -0
  296. package/ecodecmd/src/loaddep.js +154 -0
  297. package/ecodecmd/src/util/compress.js +58 -0
  298. package/ecodecmd/src/util/crypto-util.js +19 -0
  299. package/ecodecmd/src/util/index.js +153 -0
  300. package/ecodecmd/src/util/snowflake.js +144 -0
  301. package/package.json +43 -0
@@ -0,0 +1,203 @@
1
+ import { AuthSession } from '../core/auth.js';
2
+ import { ApiClient } from '../core/client.js';
3
+ import { fetchFields, loadMobileConfig } from './form-list-utils.js';
4
+ /** 32-char hex uuid(对齐平台事件 id 格式) */
5
+ function uuid32() {
6
+ const hex = '0123456789abcdef';
7
+ let s = '';
8
+ for (let i = 0; i < 32; i++)
9
+ s += hex[Math.floor(Math.random() * 16)];
10
+ return s;
11
+ }
12
+ /**
13
+ * 字段事件 / 行事件(list-event)命令。
14
+ * 走 saveNListConfig config.eventGroup(明文 JSON,config+mConfig 都要写)。
15
+ * 结构 `[[{type:CLICKDATA, events:[{type:NewPage, linkInfo}]}]]`。
16
+ * NewPage 两种 linkInfo 变体:
17
+ * ① 选页面(--add-page):page.pageId 有值、pageType:LAYOUT —— 点击行打开固定页面
18
+ * ② 选字段(--add-field):page.pageId 空、pageType:LINK、urlLinkType:1 —— URL 取自行内字段值
19
+ *
20
+ * 行事件打开方式(linkInfo.openMode 为权威值,page.openMode 恒为 "4" 与打开方式无关):
21
+ * 当前页面=4 / 新窗口=0 / 弹出窗口=5 / 右侧滑出=1 / 右侧推出=7
22
+ * 弹出(5)/滑出(1)/推出(7) 带 modalWidth/modalHeight;滑出(1)/推出(7) 额外带 winSizeNew(滑出宽度百分比)。
23
+ */
24
+ /** 行事件打开方式:语义名 → openMode 值(也接受直接传数字字符串) */
25
+ const OPEN_MODE_MAP = {
26
+ '当前页面': '4', 'current-page': '4', 'current': '4', '4': '4',
27
+ '新窗口': '0', 'new-window': '0', 'new': '0', '0': '0',
28
+ '弹出窗口': '5', 'popup': '5', '弹窗': '5', '5': '5',
29
+ '右侧滑出': '1', 'slide-out': '1', '滑出': '1', '1': '1',
30
+ '右侧推出': '7', 'push-out': '7', '推出': '7', '7': '7',
31
+ };
32
+ /** openMode 值 → 中文(读回展示用) */
33
+ const OPEN_MODE_CN = {
34
+ '4': '当前页面', '0': '新窗口', '5': '弹出窗口', '1': '右侧滑出', '7': '右侧推出',
35
+ };
36
+ export function registerListEventCommand(form, program) {
37
+ form.command('list-event')
38
+ .description('查看/配置行事件(点击行数据 NewPage 打开页面/字段URL)')
39
+ .argument('<objId>', '表单 objId')
40
+ .argument('<appId>', '应用 ID')
41
+ .argument('<listId>', '台账列表 ID')
42
+ .option('--add-page <json>', '选页面方式:\'{"pageId":"目标页/视图id","pageName":"我的任务","openMode":"右侧滑出"}\' 点击行打开固定页面')
43
+ .option('--add-field <json>', '选字段方式:\'{"urlFieldId":"字段id"}\' URL取自行内字段值(urlFieldText/Type自动补)')
44
+ .option('--open-mode <mode>', '行事件打开方式:当前页面/新窗口/弹出窗口/右侧滑出/右侧推出(缺省右侧滑出)。也可在 --add-page JSON 里写 "openMode"')
45
+ .option('--modal-width <pct>', '弹出/滑出/推出的弹窗宽(缺省 50%,如 "80%")')
46
+ .option('--modal-height <pct>', '弹出/滑出/推出的弹窗高(缺省 50%)')
47
+ .option('--win-size <pct>', '右侧滑出/推出的滑出宽度(缺省 100%,如 "60%")')
48
+ .option('--clear', '清空行事件')
49
+ .option('--pc-only', '目标明确只使用 PC;移动端配置不存在时允许继续')
50
+ .option('--json', 'JSON 格式输出当前行事件')
51
+ .action(async (objId, appId, listId, cmdOpts) => {
52
+ const opts = program.opts();
53
+ const auth = await AuthSession.fromOptions(opts);
54
+ if (!auth)
55
+ process.exit(1);
56
+ const client = new ApiClient(auth);
57
+ const baseUrl = auth.getBaseUrl();
58
+ const isJson = cmdOpts.json || opts.json;
59
+ const getRes = await client.get(`${baseUrl}/api/bs/ebuilder/form/list/getNListConfig/${listId}?apid=${appId}&tpaid=${listId}&terminalType=PC`);
60
+ if (getRes?.code !== 200 || !getRes?.status) {
61
+ console.error(`查询配置失败: ${getRes?.msg}`);
62
+ process.exit(1);
63
+ }
64
+ const cfg = getRes?.data || {};
65
+ // eventGroup 读回可能是 [[...]] 或空
66
+ const eg = cfg.eventGroup;
67
+ const isEmpty = !eg || (Array.isArray(eg) && eg.length === 0);
68
+ if (!cmdOpts.addPage && !cmdOpts.addField && !cmdOpts.clear) {
69
+ if (isJson) {
70
+ console.log(JSON.stringify(eg || [], null, 2));
71
+ return;
72
+ }
73
+ if (isEmpty) {
74
+ console.log('当前无行事件');
75
+ return;
76
+ }
77
+ try {
78
+ const groups = Array.isArray(eg) ? eg : JSON.parse(eg);
79
+ for (const grp of groups || []) {
80
+ for (const ev of grp || []) {
81
+ const link = ev.events?.[0]?.linkInfo;
82
+ const page = link?.page || {};
83
+ const openModeCn = OPEN_MODE_CN[String(link?.openMode)] || (link?.openMode ? link.openMode : '');
84
+ const mode = page.pageType === 'LINK'
85
+ ? `选字段(urlFieldId=${link.urlFieldId} urlFieldText=${link.urlFieldText})`
86
+ : `选页面(pageId=${page.pageId} pageName=${page.pageName || link.name}${openModeCn ? ` 打开方式=${openModeCn}` : ''})`;
87
+ console.log(` [${ev.type}] ${ev.name || ''} → ${ev.events?.[0]?.type}(${mode}) actionDesc=${ev.actionDesc || ''}`);
88
+ }
89
+ }
90
+ }
91
+ catch {
92
+ console.log(`(eventGroup 解析失败,原始: ${JSON.stringify(eg).slice(0, 200)})`);
93
+ }
94
+ return;
95
+ }
96
+ if (cmdOpts.clear) {
97
+ cfg.eventGroup = [];
98
+ }
99
+ else if (cmdOpts.addPage) {
100
+ let rule;
101
+ try {
102
+ rule = JSON.parse(cmdOpts.addPage);
103
+ }
104
+ catch {
105
+ console.error('--add-page JSON 解析失败');
106
+ process.exit(1);
107
+ }
108
+ // pageId 缺省 "1/<objId>"(表单新建布局);"0/<objId>"=显示布局
109
+ const pageId = rule.pageId || `1/${objId}`;
110
+ const pageName = rule.pageName || '目标页';
111
+ // pageViewType 从 pageId 前缀推导("1/<objId>"新建→"1"、"0/<objId>"显示→"0"),缺省 "1"
112
+ const pageViewType = /^[01]\//.test(pageId) ? pageId.split('/')[0] : '1';
113
+ // 行事件打开方式(linkInfo.openMode 为权威值):当前页面=4 / 新窗口=0 / 弹出窗口=5 / 右侧滑出=1 / 右侧推出=7
114
+ // 缺省右侧滑出(1)(不指定=滑出)。rule.openMode / cmdOpts.openMode 可传语义名或数字。
115
+ const modeRaw = String(rule.openMode || cmdOpts.openMode || '右侧滑出');
116
+ const openMode = OPEN_MODE_MAP[modeRaw] || modeRaw;
117
+ const useModal = ['5', '1', '7'].includes(openMode); // 弹出/滑出/推出 带弹窗宽高
118
+ const useWinSize = ['1', '7'].includes(openMode); // 滑出/推出 带滑出宽度 winSizeNew
119
+ const modalWidth = rule.modalWidth || cmdOpts.modalWidth || '50%';
120
+ const modalHeight = rule.modalHeight || cmdOpts.modalHeight || '50%';
121
+ const winSizeNew = rule.winSize || cmdOpts.winSize || '100%';
122
+ // linkInfo 对齐浏览器行事件抓包:page.openMode 恒 "4"(页面默认打开方式,与行事件打开方式无关,五份抓包恒为 4);
123
+ // 补 flatToBottom/isRelationCustomPage/isNew/selectLayout/selectMobileLayout/isPcMobileSameLayout;
124
+ // 滑出模式带 winSizeNew(缺 microCode——抓包里没有)。
125
+ const linkInfo = {
126
+ page: { pageType: 'LAYOUT', pageId, pageName, parentId: `Form_${objId}`, openMode: '4', appid: appId, pageViewType, dsDataset: {} },
127
+ openMode,
128
+ params: [],
129
+ flatToBottom: false,
130
+ isRelationCustomPage: false,
131
+ isNew: true,
132
+ selectLayout: { isPcMobileSameLayout: true },
133
+ selectMobileLayout: { isPcMobileSameLayout: true },
134
+ name: pageName,
135
+ icon: { path: '#icon-eBuilder-o', style: { color: '#5d9cec', fillType: 'borderColor', borderColor: '#5d9cec' } },
136
+ isPcMobileSameLayout: true,
137
+ };
138
+ if (useModal) {
139
+ linkInfo.modalWidth = modalWidth;
140
+ linkInfo.modalHeight = modalHeight;
141
+ }
142
+ if (useWinSize) {
143
+ linkInfo.winSizeNew = winSizeNew;
144
+ }
145
+ cfg.eventGroup = [[{
146
+ type: 'CLICKDATA', name: '单击每一条数据', id: uuid32(), disableDelete: true,
147
+ events: [{ id: uuid32(), type: 'NewPage', linkInfo }],
148
+ actionDesc: `布局:${pageName}`,
149
+ }]];
150
+ }
151
+ else if (cmdOpts.addField) {
152
+ let rule;
153
+ try {
154
+ rule = JSON.parse(cmdOpts.addField);
155
+ }
156
+ catch {
157
+ console.error('--add-field JSON 解析失败');
158
+ process.exit(1);
159
+ }
160
+ if (!rule.urlFieldId) {
161
+ console.error('--add-field JSON 需要 urlFieldId(行内字段 id)');
162
+ process.exit(1);
163
+ }
164
+ const fields = await fetchFields(client, baseUrl, objId);
165
+ const cf = fields.find((f) => String(f.id) === String(rule.urlFieldId));
166
+ if (!cf) {
167
+ console.error(`字段 ${rule.urlFieldId} 在表单 ${objId} 中不存在`);
168
+ process.exit(1);
169
+ }
170
+ const urlFieldText = rule.urlFieldText || cf.text || cf.name;
171
+ const urlFieldType = rule.urlFieldType || cf.type || 'String';
172
+ const linkInfo = {
173
+ page: { pageId: '', pageName: '', pageType: 'LINK' },
174
+ openMode: '4', params: [], urlLinkType: '1',
175
+ urlFieldId: rule.urlFieldId, urlFieldText, urlFieldType,
176
+ urlObjId: objId, urlFieldName: `field_${rule.urlFieldId}`, paramsMode: '1',
177
+ };
178
+ cfg.eventGroup = [[{
179
+ type: 'CLICKDATA', name: '单击每一条数据', id: uuid32(), disableDelete: true,
180
+ events: [{ id: uuid32(), type: 'NewPage', linkInfo }],
181
+ actionDesc: `自定义字段:${urlFieldText}`,
182
+ }]];
183
+ }
184
+ // 保存前读回真实移动端 mConfig 原样回传,避免把移动端行事件清空
185
+ const { mobileConfig, mobilePreserved } = await loadMobileConfig(client, baseUrl, appId, listId, cmdOpts.pcOnly);
186
+ // 浏览器抓包:config.eventGroup 与 mConfig.eventGroup 都写(PC + 移动端同结构)。移动端存在时同步写。
187
+ if (mobilePreserved && Array.isArray(cfg.eventGroup)) {
188
+ mobileConfig.eventGroup = cfg.eventGroup;
189
+ }
190
+ const saveRes = await client.post(`${baseUrl}/api/bs/ebuilder/form/list/saveNListConfig?apid=${appId}`, {
191
+ listId, appId, terminalType: 'PC', config: cfg, mConfig: mobileConfig,
192
+ });
193
+ if (saveRes?.code === 200 && saveRes?.status) {
194
+ console.log(isJson ? JSON.stringify({ success: true, listId }) : '行事件已保存');
195
+ console.log(` 移动端配置: ${mobilePreserved ? '保持原样' : '目标为 PC-only'}`);
196
+ }
197
+ else {
198
+ console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
199
+ process.exit(1);
200
+ }
201
+ });
202
+ }
203
+ //# sourceMappingURL=form-list-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-list-event.js","sourceRoot":"","sources":["../../src/commands/form-list-event.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * 视图数据条件(list-filter)命令。
4
+ * 走 saveNListConfig config.filter(明文条件树,非独立接口——同事 e10-list-view skill 实证:
5
+ * conditionEditor/saveOrUpdate 表单级不挂视图、saveBaseinfo 带 conditionData 都是错误端点)。
6
+ * 条件树结构与统计 rootdata 同构,filterIsNull:true(统计 rootdata 为 false)。
7
+ */
8
+ export declare function registerListFilterCommand(form: Command, program: Command): void;
9
+ //# sourceMappingURL=form-list-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-list-filter.d.ts","sourceRoot":"","sources":["../../src/commands/form-list-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CA2E/E"}
@@ -0,0 +1,107 @@
1
+ import { AuthSession } from '../core/auth.js';
2
+ import { ApiClient } from '../core/client.js';
3
+ import { fetchFields, loadMobileConfig, buildConditionTree } from './form-list-utils.js';
4
+ /**
5
+ * 视图数据条件(list-filter)命令。
6
+ * 走 saveNListConfig config.filter(明文条件树,非独立接口——同事 e10-list-view skill 实证:
7
+ * conditionEditor/saveOrUpdate 表单级不挂视图、saveBaseinfo 带 conditionData 都是错误端点)。
8
+ * 条件树结构与统计 rootdata 同构,filterIsNull:true(统计 rootdata 为 false)。
9
+ */
10
+ export function registerListFilterCommand(form, program) {
11
+ form.command('list-filter')
12
+ .description('查看/配置视图数据条件(台账只显示满足条件的数据)')
13
+ .argument('<objId>', '表单 objId')
14
+ .argument('<appId>', '应用 ID')
15
+ .argument('<listId>', '台账列表 ID')
16
+ .option('--add <json>', '设置视图数据条件: \'{"conditions":[{"fieldId":"...","func":"eq","value":"研发valueKey","text":"研发"}]}\' func=eq 等于/notEq/in/like/gt/lt/between(单选Select实测用eq)')
17
+ .option('--clear', '清空视图数据条件')
18
+ .option('--pc-only', '目标明确只使用 PC;移动端配置不存在时允许继续')
19
+ .option('--json', 'JSON 格式输出当前视图数据条件')
20
+ .action(async (objId, appId, listId, cmdOpts) => {
21
+ const opts = program.opts();
22
+ const auth = await AuthSession.fromOptions(opts);
23
+ if (!auth)
24
+ process.exit(1);
25
+ const client = new ApiClient(auth);
26
+ const baseUrl = auth.getBaseUrl();
27
+ const isJson = cmdOpts.json || opts.json;
28
+ const getRes = await client.get(`${baseUrl}/api/bs/ebuilder/form/list/getNListConfig/${listId}?apid=${appId}&tpaid=${listId}&terminalType=PC`);
29
+ if (getRes?.code !== 200 || !getRes?.status) {
30
+ console.error(`查询配置失败: ${getRes?.msg}`);
31
+ process.exit(1);
32
+ }
33
+ const cfg = getRes?.data || {};
34
+ // 读回的 filter 可能是对象或明文字符串,统一解析
35
+ const parseFilter = (raw) => {
36
+ if (raw == null)
37
+ return null;
38
+ if (typeof raw === 'string') {
39
+ try {
40
+ return JSON.parse(raw);
41
+ }
42
+ catch {
43
+ return null;
44
+ }
45
+ }
46
+ return raw;
47
+ };
48
+ let f = parseFilter(cfg.filter);
49
+ const isEmpty = !f || (typeof f === 'object' && !Array.isArray(f) && Object.keys(f).length === 0);
50
+ if (!cmdOpts.add && !cmdOpts.clear) {
51
+ if (isJson) {
52
+ console.log(JSON.stringify(f || {}, null, 2));
53
+ return;
54
+ }
55
+ if (isEmpty) {
56
+ console.log('当前无视图数据条件(显示全部数据)');
57
+ return;
58
+ }
59
+ console.log(`视图数据条件: ${f.rootStr || '(无 rootStr)'}`);
60
+ for (const d of f.datas || []) {
61
+ console.log(` - ${d.text} ${d.conditions?.func} value='${d.conditions?.value}' text='${d.conditions?.text}' (fieldId=${d.id})`);
62
+ }
63
+ return;
64
+ }
65
+ if (cmdOpts.clear) {
66
+ cfg.filter = {};
67
+ }
68
+ else if (cmdOpts.add) {
69
+ let rule;
70
+ try {
71
+ rule = JSON.parse(cmdOpts.add);
72
+ }
73
+ catch {
74
+ console.error('--add JSON 解析失败');
75
+ process.exit(1);
76
+ }
77
+ if (!Array.isArray(rule.conditions) || rule.conditions.length === 0) {
78
+ console.error('--add JSON 需要 conditions 数组(至少 1 条)');
79
+ process.exit(1);
80
+ }
81
+ const fields = await fetchFields(client, baseUrl, objId);
82
+ // 校验条件字段都存在
83
+ for (const c of rule.conditions) {
84
+ if (!fields.find((x) => String(x.id) === String(c.fieldId))) {
85
+ console.error(`条件字段 ${c.fieldId} 在表单 ${objId} 中不存在`);
86
+ process.exit(1);
87
+ }
88
+ }
89
+ const treeStr = buildConditionTree(rule.conditions, fields, objId, true);
90
+ cfg.filter = JSON.parse(treeStr); // 明文条件树对象存入 config.filter
91
+ }
92
+ // 保存前读回真实移动端 mConfig 原样回传,避免把移动端台账条件清空
93
+ const { mobileConfig, mobilePreserved } = await loadMobileConfig(client, baseUrl, appId, listId, cmdOpts.pcOnly);
94
+ const saveRes = await client.post(`${baseUrl}/api/bs/ebuilder/form/list/saveNListConfig?apid=${appId}`, {
95
+ listId, appId, terminalType: 'PC', config: cfg, mConfig: mobileConfig,
96
+ });
97
+ if (saveRes?.code === 200 && saveRes?.status) {
98
+ console.log(isJson ? JSON.stringify({ success: true, listId }) : '视图数据条件已保存');
99
+ console.log(` 移动端配置: ${mobilePreserved ? '保持原样' : '目标为 PC-only'}`);
100
+ }
101
+ else {
102
+ console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
103
+ process.exit(1);
104
+ }
105
+ });
106
+ }
107
+ //# sourceMappingURL=form-list-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-list-filter.js","sourceRoot":"","sources":["../../src/commands/form-list-filter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * 启用分组(list-group)命令。
4
+ * 走 saveNListConfig config.enableGroup(对象 {enable, groupField, groupSize})。
5
+ * 实测(sjr 2026-08-20):saveNListConfig 存 enableGroup 持久化成功(读回 enable/groupField.id/groupSize 全对),
6
+ * 不走 designer/layout/save LZW(同事 e10-list-view skill 说"视图级不持久化、走 layout/save"在 sjr 不成立)。
7
+ * groupField 必须用完整字段对象(来自 ds/fields 查询,保留 id/text/type/compType/dbFieldType/formInfo/browserParams 等)。
8
+ * 禁用时保留 groupField + groupSize,只把 enable 改 false(避免丢重新启用所需的字段定义)。
9
+ */
10
+ export declare function registerListGroupCommand(form: Command, program: Command): void;
11
+ //# sourceMappingURL=form-list-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-list-group.d.ts","sourceRoot":"","sources":["../../src/commands/form-list-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CA4E9E"}
@@ -0,0 +1,100 @@
1
+ import { AuthSession } from '../core/auth.js';
2
+ import { ApiClient } from '../core/client.js';
3
+ import { fetchFields, loadMobileConfig } from './form-list-utils.js';
4
+ /**
5
+ * 启用分组(list-group)命令。
6
+ * 走 saveNListConfig config.enableGroup(对象 {enable, groupField, groupSize})。
7
+ * 实测(sjr 2026-08-20):saveNListConfig 存 enableGroup 持久化成功(读回 enable/groupField.id/groupSize 全对),
8
+ * 不走 designer/layout/save LZW(同事 e10-list-view skill 说"视图级不持久化、走 layout/save"在 sjr 不成立)。
9
+ * groupField 必须用完整字段对象(来自 ds/fields 查询,保留 id/text/type/compType/dbFieldType/formInfo/browserParams 等)。
10
+ * 禁用时保留 groupField + groupSize,只把 enable 改 false(避免丢重新启用所需的字段定义)。
11
+ */
12
+ export function registerListGroupCommand(form, program) {
13
+ form.command('list-group')
14
+ .description('查看/配置台账启用分组(按某字段分组聚合显示)')
15
+ .argument('<objId>', '表单 objId')
16
+ .argument('<appId>', '应用 ID')
17
+ .argument('<listId>', '台账列表 ID')
18
+ .option('--enable', '启用分组(需配 --group-field)')
19
+ .option('--group-field <fieldId>', '分组字段 ID(启用/换分组字段时必填)')
20
+ .option('--group-size <n>', '分组聚合大小', '100')
21
+ .option('--disable', '禁用分组(保留 groupField/groupSize,仅 enable=false)')
22
+ .option('--pc-only', '目标明确只使用 PC;移动端配置不存在时允许继续')
23
+ .option('--json', 'JSON 格式输出当前启用分组配置')
24
+ .action(async (objId, appId, listId, cmdOpts) => {
25
+ const opts = program.opts();
26
+ const auth = await AuthSession.fromOptions(opts);
27
+ if (!auth)
28
+ process.exit(1);
29
+ const client = new ApiClient(auth);
30
+ const baseUrl = auth.getBaseUrl();
31
+ const isJson = cmdOpts.json || opts.json;
32
+ const getRes = await client.get(`${baseUrl}/api/bs/ebuilder/form/list/getNListConfig/${listId}?apid=${appId}&tpaid=${listId}&terminalType=PC`);
33
+ if (getRes?.code !== 200 || !getRes?.status) {
34
+ console.error(`查询配置失败: ${getRes?.msg}`);
35
+ process.exit(1);
36
+ }
37
+ const cfg = getRes?.data || {};
38
+ const eg = cfg.enableGroup || null;
39
+ if (!cmdOpts.enable && !cmdOpts.disable && !cmdOpts.groupField) {
40
+ if (isJson) {
41
+ console.log(JSON.stringify(eg || {}, null, 2));
42
+ return;
43
+ }
44
+ if (!eg || eg.enable !== true) {
45
+ console.log(`当前未启用分组${eg?.groupField ? `(上次分组字段: ${eg.groupField.text || eg.groupField.id})` : ''}`);
46
+ return;
47
+ }
48
+ console.log(`启用分组: 字段=${eg.groupField?.text || eg.groupField?.id} (fieldId=${eg.groupField?.id}) groupSize=${eg.groupSize}`);
49
+ return;
50
+ }
51
+ if (cmdOpts.disable) {
52
+ // 禁用:保留 groupField/groupSize,仅 enable=false
53
+ cfg.enableGroup = { ...(eg || {}), enable: false };
54
+ if (!cfg.enableGroup.groupField) {
55
+ console.error('当前无分组字段,无需禁用');
56
+ process.exit(1);
57
+ }
58
+ }
59
+ else {
60
+ // 启用/换分组字段
61
+ if (!cmdOpts.groupField) {
62
+ console.error('启用分组需用 --group-field 指定分组字段 ID');
63
+ process.exit(1);
64
+ }
65
+ const fields = await fetchFields(client, baseUrl, objId);
66
+ const grpField = fields.find((f) => String(f.id) === String(cmdOpts.groupField));
67
+ if (!grpField) {
68
+ console.error(`分组字段 ${cmdOpts.groupField} 在表单 ${objId} 中不存在`);
69
+ process.exit(1);
70
+ }
71
+ const size = parseInt(cmdOpts.groupSize || '100', 10);
72
+ if (!Number.isFinite(size) || size <= 0) {
73
+ console.error(`--group-size 须为正整数`);
74
+ process.exit(1);
75
+ }
76
+ // 保留上次 groupSize(未传时),但显式 --group-size 优先
77
+ const prevSize = eg?.groupSize && Number.isFinite(Number(eg.groupSize)) ? Number(eg.groupSize) : 100;
78
+ cfg.enableGroup = {
79
+ enable: true,
80
+ groupField: grpField, // 完整字段对象
81
+ groupSize: cmdOpts.groupSize !== undefined ? size : prevSize,
82
+ };
83
+ }
84
+ // 保存前读回真实移动端 mConfig 原样回传
85
+ const { mobileConfig, mobilePreserved } = await loadMobileConfig(client, baseUrl, appId, listId, cmdOpts.pcOnly);
86
+ const saveRes = await client.post(`${baseUrl}/api/bs/ebuilder/form/list/saveNListConfig?apid=${appId}`, {
87
+ listId, appId, terminalType: 'PC', config: cfg, mConfig: mobileConfig,
88
+ });
89
+ if (saveRes?.code === 200 && saveRes?.status) {
90
+ const result = cfg.enableGroup;
91
+ console.log(isJson ? JSON.stringify({ success: true, listId, enable: result.enable, groupField: result.groupField?.id, groupSize: result.groupSize }) : `启用分组已保存: enable=${result.enable} 字段=${result.groupField?.text || result.groupField?.id} groupSize=${result.groupSize}`);
92
+ console.log(` 移动端配置: ${mobilePreserved ? '保持原样' : '目标为 PC-only'}`);
93
+ }
94
+ else {
95
+ console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
96
+ process.exit(1);
97
+ }
98
+ });
99
+ }
100
+ //# sourceMappingURL=form-list-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-list-group.js","sourceRoot":"","sources":["../../src/commands/form-list-group.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerListPermissionCommand(form: Command, program: Command): void;
3
+ //# sourceMappingURL=form-list-permission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-list-permission.d.ts","sourceRoot":"","sources":["../../src/commands/form-list-permission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAqFnF"}
@@ -0,0 +1,127 @@
1
+ import { AuthSession } from '../core/auth.js';
2
+ import { ApiClient } from '../core/client.js';
3
+ /**
4
+ * 台账视图权限(list-permission)命令。
5
+ * 走 list/permission/save + list/permission/getList(专用端点,非 designer/layout/save LZW,
6
+ * 也非 saveNListConfig config.rights——同事 e10-list-view skill 说走 layout/save 在 sjr 不成立)。
7
+ * 存:POST list/permission/save?apid&tpaid&objId body {listId, listPermissions:[...]},头 ebBusinessId=appId + enableTrans:0
8
+ * 读:GET list/permission/getList/{listId}?apid&tpaid&objId
9
+ * 语义:full-replace(整列覆盖,omit 即删除)。已存条目带 id、新条目 id:"",平台生成 id。
10
+ * selectedType 实测:all(所有人 dataid="0") / user(人员 dataid=userId) / matrix(矩阵,结构复杂用 --add-raw)。
11
+ */
12
+ const PERM_HEADERS = (appId) => ({ ebbusinessid: appId, enabletrans: '0' });
13
+ function allEntry() {
14
+ return { id: '', dataid: '0', name: '', selectedType: 'all', relation: '0', containExtra: '0',
15
+ levelScope: { minShowlevel: '', maxShowlevel: '' }, jobLevel: '0', jobLevelTextSpan: '',
16
+ orgVirtualType: '', orgVirtualTypeSpan: '', roleLevel: '3', opened: 1, thirdPartyFlag: 0 };
17
+ }
18
+ function userEntry(userId, name) {
19
+ return { id: '', selectedType: 'user', name, dataid: userId,
20
+ levelScope: { minShowlevel: '', maxShowlevel: '' }, relation: '0', jobLevel: '', jobLevelText: '',
21
+ jobLevelTextSpan: '', opened: 1, roleLevel: '1', containExtra: '0' };
22
+ }
23
+ export function registerListPermissionCommand(form, program) {
24
+ form.command('list-permission')
25
+ .description('查看/配置台账视图查看权限(谁能看这个台账)')
26
+ .argument('<objId>', '表单 objId')
27
+ .argument('<appId>', '应用 ID')
28
+ .argument('<listId>', '台账列表 ID')
29
+ .option('--add-all', '添加「所有人」权限')
30
+ .option('--add-user <userId>', '添加人员权限(人员 ID,配合 --name)')
31
+ .option('--name <name>', '人员/角色名称(--add-user 时填显示名)')
32
+ .option('--add-raw <json>', '添加原始权限对象(matrix/role/dept 等高级类型,整对象 JSON)')
33
+ .option('--remove <id>', '按权限 id 移除一条')
34
+ .option('--clear', '清空所有权限')
35
+ .option('--json', 'JSON 格式输出当前权限')
36
+ .action(async (objId, appId, listId, cmdOpts) => {
37
+ const opts = program.opts();
38
+ const auth = await AuthSession.fromOptions(opts);
39
+ if (!auth)
40
+ process.exit(1);
41
+ const client = new ApiClient(auth);
42
+ const baseUrl = auth.getBaseUrl();
43
+ const isJson = cmdOpts.json || opts.json;
44
+ const readUrl = `${baseUrl}/api/bs/ebuilder/form/list/permission/getList/${listId}?apid=${appId}&tpaid=${listId}&objId=${objId}`;
45
+ const saveUrl = `${baseUrl}/api/bs/ebuilder/form/list/permission/save?apid=${appId}&tpaid=${listId}&objId=${objId}`;
46
+ const read = async () => {
47
+ const r = await client.get(readUrl, PERM_HEADERS(appId));
48
+ if (r?.code !== 200)
49
+ throw new Error(`读取权限失败: ${r?.msg || '未知'}`);
50
+ return Array.isArray(r?.data) ? r.data : [];
51
+ };
52
+ let perms = await read();
53
+ // 无修改参数 → 列出
54
+ if (!cmdOpts.addAll && !cmdOpts.addUser && !cmdOpts.addRaw && !cmdOpts.remove && !cmdOpts.clear) {
55
+ if (isJson) {
56
+ console.log(JSON.stringify(perms, null, 2));
57
+ return;
58
+ }
59
+ if (perms.length === 0) {
60
+ console.log('当前无视图权限');
61
+ return;
62
+ }
63
+ console.log(`视图权限 (${perms.length}):`);
64
+ for (const p of perms) {
65
+ const label = p.selectedType === 'all' ? '所有人' : p.selectedType === 'user' ? `人员: ${p.name || ''}` : p.selectedType === 'matrix' ? `矩阵: ${p.name || ''}` : `${p.selectedType}: ${p.name || ''}`;
66
+ console.log(` [${p.id}] ${label} dataid=${p.dataid || '-'}`);
67
+ }
68
+ return;
69
+ }
70
+ if (cmdOpts.clear) {
71
+ perms = [];
72
+ }
73
+ else {
74
+ if (cmdOpts.remove) {
75
+ const before = perms.length;
76
+ perms = perms.filter((p) => String(p.id) !== String(cmdOpts.remove));
77
+ if (perms.length === before) {
78
+ console.error(`权限 id ${cmdOpts.remove} 不存在`);
79
+ process.exit(1);
80
+ }
81
+ }
82
+ if (cmdOpts.addAll) {
83
+ if (!perms.find((p) => p.selectedType === 'all'))
84
+ perms.push(allEntry());
85
+ }
86
+ if (cmdOpts.addUser) {
87
+ if (!cmdOpts.name) {
88
+ console.error('--add-user 需配合 --name 给显示名');
89
+ process.exit(1);
90
+ }
91
+ if (!perms.find((p) => p.selectedType === 'user' && String(p.dataid) === String(cmdOpts.addUser))) {
92
+ perms.push(userEntry(cmdOpts.addUser, cmdOpts.name));
93
+ }
94
+ }
95
+ if (cmdOpts.addRaw) {
96
+ let raw;
97
+ try {
98
+ raw = JSON.parse(cmdOpts.addRaw);
99
+ }
100
+ catch {
101
+ console.error('--add-raw JSON 解析失败');
102
+ process.exit(1);
103
+ }
104
+ raw.id = '';
105
+ perms.push(raw);
106
+ }
107
+ }
108
+ const saveRes = await client.post(saveUrl, { listId, listPermissions: perms }, PERM_HEADERS(appId));
109
+ if (saveRes?.code !== 200 || !saveRes?.status) {
110
+ console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
111
+ process.exit(1);
112
+ }
113
+ // 读回验证
114
+ const after = await read();
115
+ if (isJson) {
116
+ console.log(JSON.stringify({ success: true, listId, count: after.length, permissions: after }, null, 2));
117
+ }
118
+ else {
119
+ console.log(`视图权限已保存 (${after.length} 条):`);
120
+ for (const p of after) {
121
+ const label = p.selectedType === 'all' ? '所有人' : p.selectedType === 'user' ? `人员: ${p.name || ''}` : `${p.selectedType}: ${p.name || ''}`;
122
+ console.log(` [${p.id}] ${label}`);
123
+ }
124
+ }
125
+ });
126
+ }
127
+ //# sourceMappingURL=form-list-permission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-list-permission.js","sourceRoot":"","sources":["../../src/commands/form-list-permission.ts"],"names":[],"mappings":"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"}