weaver-e10-builder 1.6.12 → 1.6.14

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 (266) hide show
  1. package/dist/cli-register.d.ts +22 -0
  2. package/dist/cli-register.d.ts.map +1 -0
  3. package/dist/cli-register.js +352 -0
  4. package/dist/cli-register.js.map +1 -0
  5. package/dist/commands/actionflow.d.ts.map +1 -1
  6. package/dist/commands/actionflow.js +4 -0
  7. package/dist/commands/actionflow.js.map +1 -1
  8. package/dist/commands/designer-event.d.ts +3 -0
  9. package/dist/commands/designer-event.d.ts.map +1 -0
  10. package/dist/commands/designer-event.js +106 -0
  11. package/dist/commands/designer-event.js.map +1 -0
  12. package/dist/commands/designer-source.d.ts +3 -0
  13. package/dist/commands/designer-source.d.ts.map +1 -0
  14. package/dist/commands/designer-source.js +51 -0
  15. package/dist/commands/designer-source.js.map +1 -0
  16. package/dist/commands/form-browser-scope-rules.d.ts +2 -1
  17. package/dist/commands/form-browser-scope-rules.d.ts.map +1 -1
  18. package/dist/commands/form-browser-scope-rules.js +8 -4
  19. package/dist/commands/form-browser-scope-rules.js.map +1 -1
  20. package/dist/commands/form-browser-scope-tree.js +1 -1
  21. package/dist/commands/form-browser-scope-tree.js.map +1 -1
  22. package/dist/commands/form-field-linkage.d.ts.map +1 -1
  23. package/dist/commands/form-field-linkage.js +6 -11
  24. package/dist/commands/form-field-linkage.js.map +1 -1
  25. package/dist/commands/form-layout-detail-settings.d.ts +3 -0
  26. package/dist/commands/form-layout-detail-settings.d.ts.map +1 -0
  27. package/dist/commands/form-layout-detail-settings.js +36 -0
  28. package/dist/commands/form-layout-detail-settings.js.map +1 -0
  29. package/dist/commands/form-list-columns.d.ts.map +1 -1
  30. package/dist/commands/form-list-columns.js +258 -3
  31. package/dist/commands/form-list-columns.js.map +1 -1
  32. package/dist/commands/form-list-config.d.ts +9 -0
  33. package/dist/commands/form-list-config.d.ts.map +1 -0
  34. package/dist/commands/form-list-config.js +189 -0
  35. package/dist/commands/form-list-config.js.map +1 -0
  36. package/dist/commands/form-list-event.d.ts.map +1 -1
  37. package/dist/commands/form-list-event.js +2 -1
  38. package/dist/commands/form-list-event.js.map +1 -1
  39. package/dist/commands/form-list-filter.d.ts.map +1 -1
  40. package/dist/commands/form-list-filter.js +231 -3
  41. package/dist/commands/form-list-filter.js.map +1 -1
  42. package/dist/commands/form-list-hierarchy.d.ts.map +1 -1
  43. package/dist/commands/form-list-hierarchy.js +2 -1
  44. package/dist/commands/form-list-hierarchy.js.map +1 -1
  45. package/dist/commands/form-list-utils.d.ts.map +1 -1
  46. package/dist/commands/form-list-utils.js +4 -3
  47. package/dist/commands/form-list-utils.js.map +1 -1
  48. package/dist/commands/form-list.d.ts.map +1 -1
  49. package/dist/commands/form-list.js +2 -1
  50. package/dist/commands/form-list.js.map +1 -1
  51. package/dist/commands/form-nlist.d.ts.map +1 -1
  52. package/dist/commands/form-nlist.js +125 -1
  53. package/dist/commands/form-nlist.js.map +1 -1
  54. package/dist/commands/form-permission.d.ts.map +1 -1
  55. package/dist/commands/form-permission.js +743 -77
  56. package/dist/commands/form-permission.js.map +1 -1
  57. package/dist/commands/page-combination.d.ts +3 -0
  58. package/dist/commands/page-combination.d.ts.map +1 -0
  59. package/dist/commands/page-combination.js +86 -0
  60. package/dist/commands/page-combination.js.map +1 -0
  61. package/dist/commands/page-permission.d.ts +3 -0
  62. package/dist/commands/page-permission.d.ts.map +1 -0
  63. package/dist/commands/page-permission.js +46 -0
  64. package/dist/commands/page-permission.js.map +1 -0
  65. package/dist/index.js +19 -213
  66. package/dist/index.js.map +1 -1
  67. package/dist/services/actionflow/build_workflow_draft.d.ts.map +1 -1
  68. package/dist/services/actionflow/build_workflow_draft.js +8 -0
  69. package/dist/services/actionflow/build_workflow_draft.js.map +1 -1
  70. package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
  71. package/dist/services/actionflow/calendar_mapper.js +7 -4
  72. package/dist/services/actionflow/calendar_mapper.js.map +1 -1
  73. package/dist/services/actionflow/component_registry.d.ts.map +1 -1
  74. package/dist/services/actionflow/component_registry.js +18 -2
  75. package/dist/services/actionflow/component_registry.js.map +1 -1
  76. package/dist/services/actionflow/components/action_eb_delete.js +1 -1
  77. package/dist/services/actionflow/components/action_eb_delete.js.map +1 -1
  78. package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
  79. package/dist/services/actionflow/components/action_eb_update.js +9 -1
  80. package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
  81. package/dist/services/actionflow/components/approve_create.d.ts.map +1 -1
  82. package/dist/services/actionflow/components/approve_create.js +4 -3
  83. package/dist/services/actionflow/components/approve_create.js.map +1 -1
  84. package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
  85. package/dist/services/actionflow/components/document_actions.js +15 -48
  86. package/dist/services/actionflow/components/document_actions.js.map +1 -1
  87. package/dist/services/actionflow/components/enquiry_form.d.ts +0 -7
  88. package/dist/services/actionflow/components/enquiry_form.d.ts.map +1 -1
  89. package/dist/services/actionflow/components/enquiry_form.js +10 -54
  90. package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
  91. package/dist/services/actionflow/components/form_data_builder.d.ts +2 -0
  92. package/dist/services/actionflow/components/form_data_builder.d.ts.map +1 -1
  93. package/dist/services/actionflow/components/form_data_builder.js +53 -2
  94. package/dist/services/actionflow/components/form_data_builder.js.map +1 -1
  95. package/dist/services/actionflow/components/inner_mq_send.d.ts.map +1 -1
  96. package/dist/services/actionflow/components/inner_mq_send.js +8 -2
  97. package/dist/services/actionflow/components/inner_mq_send.js.map +1 -1
  98. package/dist/services/actionflow/components/send_message.d.ts.map +1 -1
  99. package/dist/services/actionflow/components/send_message.js +52 -1
  100. package/dist/services/actionflow/components/send_message.js.map +1 -1
  101. package/dist/services/actionflow/components/serverless_action.d.ts.map +1 -1
  102. package/dist/services/actionflow/components/serverless_action.js +39 -0
  103. package/dist/services/actionflow/components/serverless_action.js.map +1 -1
  104. package/dist/services/actionflow/components/simple_scheduler.d.ts.map +1 -1
  105. package/dist/services/actionflow/components/simple_scheduler.js +46 -12
  106. package/dist/services/actionflow/components/simple_scheduler.js.map +1 -1
  107. package/dist/services/actionflow/components/time_batch_trigger.js +4 -3
  108. package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
  109. package/dist/services/actionflow/context_discovery.d.ts +2 -0
  110. package/dist/services/actionflow/context_discovery.d.ts.map +1 -1
  111. package/dist/services/actionflow/context_discovery.js +32 -4
  112. package/dist/services/actionflow/context_discovery.js.map +1 -1
  113. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  114. package/dist/services/actionflow/context_preflight.js +24 -7
  115. package/dist/services/actionflow/context_preflight.js.map +1 -1
  116. package/dist/services/actionflow/form_source.d.ts +2 -0
  117. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  118. package/dist/services/actionflow/form_source.js +45 -10
  119. package/dist/services/actionflow/form_source.js.map +1 -1
  120. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  121. package/dist/services/actionflow/formula_service.js +28 -13
  122. package/dist/services/actionflow/formula_service.js.map +1 -1
  123. package/dist/services/actionflow/param_mapping_basis.d.ts +3 -0
  124. package/dist/services/actionflow/param_mapping_basis.d.ts.map +1 -0
  125. package/dist/services/actionflow/param_mapping_basis.js +61 -0
  126. package/dist/services/actionflow/param_mapping_basis.js.map +1 -0
  127. package/dist/services/actionflow/preflight_service.d.ts +10 -0
  128. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  129. package/dist/services/actionflow/preflight_service.js +149 -47
  130. package/dist/services/actionflow/preflight_service.js.map +1 -1
  131. package/dist/services/actionflow/runtime_metadata.d.ts +1 -0
  132. package/dist/services/actionflow/runtime_metadata.d.ts.map +1 -1
  133. package/dist/services/actionflow/runtime_metadata.js +3 -0
  134. package/dist/services/actionflow/runtime_metadata.js.map +1 -1
  135. package/dist/services/actionflow/trigger_common.d.ts.map +1 -1
  136. package/dist/services/actionflow/trigger_common.js +4 -7
  137. package/dist/services/actionflow/trigger_common.js.map +1 -1
  138. package/dist/services/actionflow/update_service.d.ts +6 -0
  139. package/dist/services/actionflow/update_service.d.ts.map +1 -1
  140. package/dist/services/actionflow/update_service.js +6 -38
  141. package/dist/services/actionflow/update_service.js.map +1 -1
  142. package/dist/services/actionflow/workflow_compiler.d.ts +1 -1
  143. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  144. package/dist/services/actionflow/workflow_compiler.js +34 -20
  145. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  146. package/dist/services/actionflow/workflow_request_level.d.ts +3 -0
  147. package/dist/services/actionflow/workflow_request_level.d.ts.map +1 -0
  148. package/dist/services/actionflow/workflow_request_level.js +11 -0
  149. package/dist/services/actionflow/workflow_request_level.js.map +1 -0
  150. package/dist/services/designer-event.d.ts +54 -0
  151. package/dist/services/designer-event.d.ts.map +1 -0
  152. package/dist/services/designer-event.js +312 -0
  153. package/dist/services/designer-event.js.map +1 -0
  154. package/dist/services/designer-source.d.ts +46 -0
  155. package/dist/services/designer-source.d.ts.map +1 -0
  156. package/dist/services/designer-source.js +145 -0
  157. package/dist/services/designer-source.js.map +1 -0
  158. package/dist/services/field-identity.d.ts +3 -0
  159. package/dist/services/field-identity.d.ts.map +1 -0
  160. package/dist/services/field-identity.js +8 -0
  161. package/dist/services/field-identity.js.map +1 -0
  162. package/dist/services/form-layout-detail-advanced.d.ts +10 -0
  163. package/dist/services/form-layout-detail-advanced.d.ts.map +1 -0
  164. package/dist/services/form-layout-detail-advanced.js +134 -0
  165. package/dist/services/form-layout-detail-advanced.js.map +1 -0
  166. package/dist/services/form-layout-detail-settings.d.ts +151 -0
  167. package/dist/services/form-layout-detail-settings.d.ts.map +1 -0
  168. package/dist/services/form-layout-detail-settings.js +131 -0
  169. package/dist/services/form-layout-detail-settings.js.map +1 -0
  170. package/dist/services/form-list-columns.d.ts +11 -0
  171. package/dist/services/form-list-columns.d.ts.map +1 -1
  172. package/dist/services/form-list-columns.js +12 -1
  173. package/dist/services/form-list-columns.js.map +1 -1
  174. package/dist/services/form-list-config.d.ts +93 -0
  175. package/dist/services/form-list-config.d.ts.map +1 -0
  176. package/dist/services/form-list-config.js +369 -0
  177. package/dist/services/form-list-config.js.map +1 -0
  178. package/dist/services/form-list-fields.d.ts +38 -0
  179. package/dist/services/form-list-fields.d.ts.map +1 -0
  180. package/dist/services/form-list-fields.js +261 -0
  181. package/dist/services/form-list-fields.js.map +1 -0
  182. package/dist/services/form-list-filter-http.d.ts +60 -0
  183. package/dist/services/form-list-filter-http.d.ts.map +1 -0
  184. package/dist/services/form-list-filter-http.js +137 -0
  185. package/dist/services/form-list-filter-http.js.map +1 -0
  186. package/dist/services/form-list-filter-sql.d.ts +74 -0
  187. package/dist/services/form-list-filter-sql.d.ts.map +1 -0
  188. package/dist/services/form-list-filter-sql.js +206 -0
  189. package/dist/services/form-list-filter-sql.js.map +1 -0
  190. package/dist/services/form-list-search-group.d.ts.map +1 -1
  191. package/dist/services/form-list-search-group.js +3 -2
  192. package/dist/services/form-list-search-group.js.map +1 -1
  193. package/dist/services/form-list-search.d.ts.map +1 -1
  194. package/dist/services/form-list-search.js +3 -13
  195. package/dist/services/form-list-search.js.map +1 -1
  196. package/dist/services/form-list-table-fields.d.ts +58 -0
  197. package/dist/services/form-list-table-fields.d.ts.map +1 -0
  198. package/dist/services/form-list-table-fields.js +265 -0
  199. package/dist/services/form-list-table-fields.js.map +1 -0
  200. package/dist/services/form-nlist-field-attrs.d.ts +43 -0
  201. package/dist/services/form-nlist-field-attrs.d.ts.map +1 -0
  202. package/dist/services/form-nlist-field-attrs.js +170 -0
  203. package/dist/services/form-nlist-field-attrs.js.map +1 -0
  204. package/dist/services/form-nlist.d.ts +25 -0
  205. package/dist/services/form-nlist.d.ts.map +1 -1
  206. package/dist/services/form-nlist.js +226 -2
  207. package/dist/services/form-nlist.js.map +1 -1
  208. package/dist/services/form-permission-edit.d.ts +115 -0
  209. package/dist/services/form-permission-edit.d.ts.map +1 -0
  210. package/dist/services/form-permission-edit.js +552 -0
  211. package/dist/services/form-permission-edit.js.map +1 -0
  212. package/dist/services/form-view.d.ts +3 -3
  213. package/dist/services/form-view.d.ts.map +1 -1
  214. package/dist/services/form-view.js +26 -12
  215. package/dist/services/form-view.js.map +1 -1
  216. package/dist/services/matrix-condition.d.ts +0 -30
  217. package/dist/services/matrix-condition.d.ts.map +1 -1
  218. package/dist/services/matrix-condition.js +3 -2
  219. package/dist/services/matrix-condition.js.map +1 -1
  220. package/dist/services/page-combination.d.ts +58 -0
  221. package/dist/services/page-combination.d.ts.map +1 -0
  222. package/dist/services/page-combination.js +296 -0
  223. package/dist/services/page-combination.js.map +1 -0
  224. package/dist/services/page-permission.d.ts +74 -0
  225. package/dist/services/page-permission.d.ts.map +1 -0
  226. package/dist/services/page-permission.js +287 -0
  227. package/dist/services/page-permission.js.map +1 -0
  228. package/dist/services/report/verify.d.ts.map +1 -1
  229. package/dist/services/report/verify.js +1 -7
  230. package/dist/services/report/verify.js.map +1 -1
  231. package/dist/services/workflow-function-management.d.ts +1 -1
  232. package/package.json +1 -1
  233. package/skill-docs/SKILL.md +14 -4
  234. package/skill-docs/_catalog.md +7 -0
  235. package/skill-docs/actionflows/SKILL.md +7 -3
  236. package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +5 -1
  237. package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +5 -1
  238. package/skill-docs/actionflows/references/components/ebuilder/DateTrigger.md +32 -32
  239. package/skill-docs/actionflows/references/components/ebuilder/EnquiryForm.md +5 -1
  240. package/skill-docs/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -19
  241. package/skill-docs/references/common/ref-cli-commands.md +27 -7
  242. package/skill-docs/references/ebuilder-designer/events/actions-integration.md +88 -0
  243. package/skill-docs/references/ebuilder-designer/events/actions-interaction.md +108 -0
  244. package/skill-docs/references/ebuilder-designer/events/guide-events.md +57 -0
  245. package/skill-docs/references/ebuilder-designer/guide-designer.md +296 -288
  246. package/skill-docs/references/ebuilder-designer/guide-page-combination.md +142 -0
  247. package/skill-docs/references/ebuilder-designer/guide-page-permission.md +145 -0
  248. package/skill-docs/references/ebuilder-designer/page-source/page-source-guide.md +129 -0
  249. package/skill-docs/references/ebuilder-designer/page-source/sdk-chart.md +49 -0
  250. package/skill-docs/references/ebuilder-designer/page-source/sdk-coverage.json +372 -0
  251. package/skill-docs/references/ebuilder-designer/page-source/sdk-date.md +54 -0
  252. package/skill-docs/references/ebuilder-designer/page-source/sdk-dialogs.md +279 -0
  253. package/skill-docs/references/ebuilder-designer/page-source/sdk-form.md +255 -0
  254. package/skill-docs/references/ebuilder-designer/page-source/sdk-foundations.md +401 -0
  255. package/skill-docs/references/ebuilder-designer/page-source/sdk-index.md +34 -0
  256. package/skill-docs/references/ebuilder-designer/page-source/sdk-list.md +297 -0
  257. package/skill-docs/references/ebuilder-designer/page-source/sdk-native.md +193 -0
  258. package/skill-docs/references/ebuilder-designer/page-source/sdk-navigation.md +156 -0
  259. package/skill-docs/references/ebuilder-designer/page-source/sdk-other.md +242 -0
  260. package/skill-docs/references/ebuilder-designer/page-source/sdk-refresh.md +132 -0
  261. package/skill-docs/references/ebuilder-designer/page-source/sdk-sql.md +39 -0
  262. package/skill-docs/references/form/guide-form-permission.md +185 -0
  263. package/skill-docs/references/form/guide-form-view.md +725 -423
  264. package/skill-docs/references/form/layout/detail-advanced.md +124 -0
  265. package/skill-docs/references/form/layout/detail-settings.md +106 -0
  266. package/skill-docs/references/form/layout/layout-overview.md +2 -0
@@ -0,0 +1,261 @@
1
+ /**
2
+ * 列属性层(`getListFields` 读取;`saveListFieldById` / `saveListFields` 写入)。
3
+ *
4
+ * 和 `config.tableField` 不是一回事:这里存每列的宽度、对齐、冻结、显示名、注释、换行、统计等
5
+ * 属性,平台「字段设置」抽屉落的就是这一层。键名取自平台前端列设置面板的定义
6
+ * (showName / alignment / fixed / width / widthUnit / formulaType / formulaRange /
7
+ * hiddenColumn / wrapSetting / remark / viewDataDetail / plainTextDisplay)。
8
+ *
9
+ * 两条写入路径:
10
+ * - `saveListFieldById`(PC,默认):平台字段设置抽屉用的就是这个接口,单字段、**两端同时生效**;
11
+ * 对齐/注释这类属性只有走它能落库(`saveListFields` 会把 alignment 还原)。
12
+ * - `saveListFields`(`--terminal mobile`):按终端分别回写两块数组,只支持两端各自独立的属性。
13
+ */
14
+ const GET_LIST_FIELDS_PATH = '/api/bs/ebuilder/form/list/getListFields';
15
+ const SAVE_LIST_FIELDS_PATH = '/api/bs/ebuilder/form/list/saveListFields';
16
+ const SAVE_LIST_FIELD_BY_ID_PATH = '/api/bs/ebuilder/form/list/saveListFieldById';
17
+ const GET_VIEWLIST_PATH = '/api/bs/ebuilder/form/viewlist/getViewlist';
18
+ const GET_OBJ_PATH = '/api/bs/ebuilder/form/obj/getInfoById';
19
+ /** 只能走 saveListFieldById 的属性(saveListFields 会把它们还原/丢弃)。 */
20
+ export const PER_FIELD_ONLY_ATTRS = [
21
+ 'alignment', 'remark', 'plainTextDisplay', 'viewDataDetail', 'formulaType', 'formulaRange',
22
+ ];
23
+ /**
24
+ * 单字段保存的缺省属性。
25
+ *
26
+ * `getListFields` 对**从未改过**的列返回的是稀疏对象(没有 fixed / remark / hrefLink 等键),
27
+ * 而 `saveListFieldById` 要求完整对象——少键会直接 500。平台字段设置抽屉就是这么补的缺省值。
28
+ */
29
+ const LIST_FIELD_DEFAULTS = {
30
+ hrefType: '0',
31
+ hrefLink: '',
32
+ openType: '2',
33
+ pageWidth: 50,
34
+ alignment: 'left',
35
+ fixed: '0',
36
+ plainTextDisplay: 0,
37
+ hiddenColumn: 0,
38
+ formulaType: '',
39
+ formulaRange: '',
40
+ wrapSetting: 'whole',
41
+ remark: '',
42
+ conversionSet: '[]',
43
+ listFieldActions: [],
44
+ canNotLink: false,
45
+ viewDataDetail: 1,
46
+ haveActions: false,
47
+ showOrder: 0,
48
+ isSubForm: 0,
49
+ subFieldList: [],
50
+ };
51
+ function data(response, operation) {
52
+ if (response?.code !== 200 || response?.status === false || response?.fail === true) {
53
+ throw new Error(`${operation}失败: ${response?.msg || '平台未确认成功'}`);
54
+ }
55
+ return response?.data;
56
+ }
57
+ function canonical(value) {
58
+ return JSON.stringify(value, (_key, v) => (v && typeof v === 'object' && !Array.isArray(v)
59
+ ? Object.fromEntries(Object.keys(v).sort().map((key) => [key, v[key]]))
60
+ : v));
61
+ }
62
+ async function resolveFormId(client, baseUrl, appId, objId) {
63
+ const info = data(await client.get(`${baseUrl}${GET_OBJ_PATH}/${objId}?apid=${appId}`, { ebbusinessid: appId }), '读取表单');
64
+ const formId = String(info?.formId || '');
65
+ if (!formId)
66
+ throw new Error(`未找到表单 objId=${objId} 对应的 formId`);
67
+ return formId;
68
+ }
69
+ /** 从 getViewlist 取列表视图原对象,拼成 saveListFields 需要的 `list`。 */
70
+ async function loadListObject(client, baseUrl, appId, objId, listId, formId) {
71
+ const response = data(await client.get(`${baseUrl}${GET_VIEWLIST_PATH}/${objId}?apid=${appId}&objId=${objId}&type=tableView&appId=${appId}&tpaid=${listId}&module=tableView`, { ebbusinessid: appId }), '读取视图列表');
72
+ const detail = response?.tableView?.detail || [];
73
+ const def = detail.find((item) => String(item.id) === String(listId));
74
+ if (!def)
75
+ throw new Error(`视图列表里找不到 listId=${listId}(可能不是台账/列表视图)`);
76
+ const list = { ...def };
77
+ delete list.conditionData;
78
+ delete list.conditionId;
79
+ delete list.conditionText;
80
+ const formName = String(def.name || '');
81
+ Object.assign(list, {
82
+ icon: 'Icon-Business-form-o',
83
+ type: 'tableView',
84
+ realViewType: 'List',
85
+ baseFormId: formId,
86
+ appId,
87
+ isVirtualForm: false,
88
+ isVForm: false,
89
+ formId,
90
+ applyAuthParams: {},
91
+ dataset: { id: objId, text: formName, type: 'FORM', groupId: appId, appId, isPhysical: true },
92
+ });
93
+ return list;
94
+ }
95
+ export async function readListFieldsLayer(client, baseUrl, appId, objId, listId) {
96
+ const formId = await resolveFormId(client, baseUrl, appId, objId);
97
+ const response = data(await client.get(`${baseUrl}${GET_LIST_FIELDS_PATH}/${listId}?apid=${appId}&tpaid=${listId}&isVirtualForm=false&clientType=PC`, { ebbusinessid: appId }), '读取列属性');
98
+ const payload = response && typeof response === 'object' ? response : {};
99
+ const list = await loadListObject(client, baseUrl, appId, objId, listId, formId);
100
+ return {
101
+ list,
102
+ listFields: Array.isArray(payload.pc) ? payload.pc : [],
103
+ mobileListFields: Array.isArray(payload.mobile) ? payload.mobile : [],
104
+ mergeColumnInfoList: Array.isArray(payload.mergeColumnInfoList) ? payload.mergeColumnInfoList : [],
105
+ hasMerge: payload.hasMerge ?? 0,
106
+ };
107
+ }
108
+ export async function setListFieldAttrs(client, baseUrl, appId, objId, listId, fieldId, options) {
109
+ const terminal = options.terminal || 'pc';
110
+ if (!['pc', 'mobile'].includes(terminal))
111
+ throw new Error('--terminal 仅支持 pc/mobile');
112
+ if (terminal === 'mobile' && options.pcOnly)
113
+ throw new Error('修改移动端不能使用 --pc-only');
114
+ const entries = Object.entries(options.attrs).filter(([, value]) => value !== undefined);
115
+ if (!entries.length)
116
+ throw new Error('至少指定一个属性;可用:`form list-columns attr set --help`');
117
+ if (terminal === 'mobile') {
118
+ const unsupported = entries.map(([key]) => key).filter((key) => PER_FIELD_ONLY_ATTRS.includes(key));
119
+ if (unsupported.length) {
120
+ throw new Error(`${unsupported.join('、')} 只能整列设置、对两端同时生效,不支持 --terminal mobile;去掉 --terminal 再执行`);
121
+ }
122
+ }
123
+ const layer = await readListFieldsLayer(client, baseUrl, appId, objId, listId);
124
+ const target = terminal === 'pc' ? layer.listFields : layer.mobileListFields;
125
+ if (!target.length) {
126
+ throw new Error(`${terminal} 端还没有列属性配置(getListFields 为空);先用 form table-view ensure / form list-columns 配好显示列`);
127
+ }
128
+ const index = target.findIndex((column) => String(column.fieldId) === String(fieldId));
129
+ if (index < 0) {
130
+ throw new Error(`列 ${fieldId} 不在 ${terminal} 端列属性里。现有:${target.map((c) => `${c.fieldId}(${c.showName || ''})`).join('、')}`);
131
+ }
132
+ const columns = target.map((column) => ({ ...column }));
133
+ const changes = [];
134
+ for (const [key, value] of entries) {
135
+ if (canonical(columns[index][key]) === canonical(value))
136
+ continue;
137
+ changes.push({ fieldId, key, from: columns[index][key], to: value });
138
+ columns[index][key] = value;
139
+ }
140
+ if (!changes.length) {
141
+ return { success: true, listId, terminal, fieldId, unchanged: true, changes: [] };
142
+ }
143
+ let save;
144
+ if (terminal === 'pc') {
145
+ // 平台「字段设置」抽屉走的就是这个单字段接口:两端同时生效,对齐/注释也能落库
146
+ save = await client.post(`${baseUrl}${SAVE_LIST_FIELD_BY_ID_PATH}?apid=${appId}&tpaid=${listId}`, { ...LIST_FIELD_DEFAULTS, ...columns[index] }, { ebbusinessid: appId });
147
+ }
148
+ else {
149
+ const body = {
150
+ list: layer.list,
151
+ isVirtualForm: false,
152
+ listFields: layer.listFields,
153
+ mobileListFields: columns,
154
+ mergeColumnInfoList: layer.mergeColumnInfoList,
155
+ hasMerge: layer.hasMerge,
156
+ displayColumn: false,
157
+ };
158
+ save = await client.post(`${baseUrl}${SAVE_LIST_FIELDS_PATH}?apid=${appId}&tpaid=${listId}`, body, { ebbusinessid: appId });
159
+ }
160
+ if (save?.code !== 200 || save?.status === false || save?.fail === true) {
161
+ throw new Error(`保存列属性失败: ${save?.msg || '平台未确认成功'}`);
162
+ }
163
+ const after = await readListFieldsLayer(client, baseUrl, appId, objId, listId);
164
+ const afterColumns = terminal === 'pc' ? after.listFields : after.mobileListFields;
165
+ const saved = afterColumns.find((column) => String(column.fieldId) === String(fieldId));
166
+ if (!saved)
167
+ throw new Error(`已保存,但列 ${fieldId} 回读不存在`);
168
+ for (const change of changes) {
169
+ if (canonical(saved[change.key]) !== canonical(change.to)) {
170
+ throw new Error(`已保存,但列 ${fieldId} 的 ${change.key} 回读不一致:期望 ${canonical(change.to)},实际 ${canonical(saved[change.key])}`);
171
+ }
172
+ }
173
+ return { success: true, listId, terminal, fieldId, unchanged: false, changes };
174
+ }
175
+ /** 属性值域校验:只放行真实报文里出现过的取值;拿不准的(如 fixed=1)按同构放行但由回读兜底。 */
176
+ export function normalizeFieldAttrs(raw) {
177
+ const attrs = {};
178
+ const onOff = (value, name) => {
179
+ const text = String(value).toLowerCase();
180
+ if (['on', 'true', '1', 'yes'].includes(text))
181
+ return true;
182
+ if (['off', 'false', '0', 'no'].includes(text))
183
+ return false;
184
+ throw new Error(`${name} 只接受 on/off(或 true/false)`);
185
+ };
186
+ if (raw.align !== undefined) {
187
+ const value = String(raw.align);
188
+ if (!['left', 'center', 'right'].includes(value))
189
+ throw new Error('--align 只接受 left/center/right');
190
+ attrs.alignment = value;
191
+ }
192
+ if (raw.remark !== undefined)
193
+ attrs.remark = String(raw.remark);
194
+ if (raw.plainText !== undefined)
195
+ attrs.plainTextDisplay = onOff(raw.plainText, '--plain-text') ? 1 : 0;
196
+ if (raw.viewDataDetail !== undefined)
197
+ attrs.viewDataDetail = onOff(raw.viewDataDetail, '--view-data-detail') ? 1 : 0;
198
+ if (raw.formulaType !== undefined) {
199
+ const list = String(raw.formulaType).split(',').map((v) => v.trim()).filter(Boolean);
200
+ const invalid = list.filter((v) => v !== 'none' && !['sum', 'avg'].includes(v));
201
+ if (invalid.length)
202
+ throw new Error('--formula-type 只接受 sum(求和)/ avg(平均值),可用逗号叠加;传 none 清空');
203
+ attrs.formulaType = list.includes('none') ? '' : list.join(',');
204
+ }
205
+ if (raw.formulaRange !== undefined) {
206
+ const list = String(raw.formulaRange).split(',').map((v) => v.trim()).filter(Boolean);
207
+ const invalid = list.filter((v) => !['currentPage', 'allPage'].includes(v));
208
+ if (invalid.length)
209
+ throw new Error('--formula-range 只接受 currentPage(当前页)/ allPage(全部页),可用逗号叠加');
210
+ attrs.formulaRange = list.join(',');
211
+ }
212
+ if (raw.fixed !== undefined)
213
+ attrs.fixed = onOff(raw.fixed, '--fixed') ? '1' : '0';
214
+ if (raw.width !== undefined) {
215
+ const value = Number(raw.width);
216
+ if (!Number.isFinite(value) || value <= 0)
217
+ throw new Error('--width 必须为正数');
218
+ attrs.width = value;
219
+ }
220
+ if (raw.widthUnit !== undefined) {
221
+ const value = String(raw.widthUnit);
222
+ if (!['px', '%'].includes(value))
223
+ throw new Error('--width-unit 只接受 px/%');
224
+ attrs.widthUnit = value;
225
+ }
226
+ if (raw.editable !== undefined) {
227
+ const value = String(raw.editable);
228
+ if (!['0', '1'].includes(value))
229
+ throw new Error('--editable 只接受 0/1');
230
+ attrs.isEditField = Number(value);
231
+ }
232
+ if (raw.richEditor !== undefined)
233
+ attrs.richEditor = onOff(raw.richEditor, '--rich-editor');
234
+ if (raw.showName !== undefined) {
235
+ const value = String(raw.showName).trim();
236
+ if (!value)
237
+ throw new Error('--show-name 不能为空');
238
+ attrs.showName = value;
239
+ }
240
+ if (raw.wrap !== undefined) {
241
+ const value = String(raw.wrap);
242
+ if (!['whole', 'auto', 'disabled'].includes(value))
243
+ throw new Error('--wrap 只接受 whole(跟随全局)/auto(自动换行)/disabled(不换行)');
244
+ attrs.wrapSetting = value;
245
+ }
246
+ if (raw.hiddenColumn !== undefined) {
247
+ attrs.hiddenColumn = onOff(raw.hiddenColumn, '--hidden-column') ? 1 : 0;
248
+ }
249
+ if (raw.conversion !== undefined) {
250
+ const value = String(raw.conversion);
251
+ try {
252
+ JSON.parse(value);
253
+ }
254
+ catch {
255
+ throw new Error('--conversion 必须是 JSON 字符串(例如 "[]")');
256
+ }
257
+ attrs.conversionSet = value;
258
+ }
259
+ return attrs;
260
+ }
261
+ //# sourceMappingURL=form-list-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-list-fields.js","sourceRoot":"","sources":["../../src/services/form-list-fields.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import type { ApiClient } from '../core/client.js';
2
+ type Client = Pick<ApiClient, 'get' | 'post'>;
3
+ /**
4
+ * 视图数据条件 —— 自定义接口(`filter.type = "http"`)。
5
+ *
6
+ * 形状来自 2026-11-04 真机保存报文:
7
+ * ```json
8
+ * {"type":"http","isNewFilter":true,"version":1,
9
+ * "data":{"method":"GET","contentType":"multipart/form-data","condition":"","formDw":true,
10
+ * "sourceId":"<objId>","sqlContent":"","url":"https://…",
11
+ * "urlParams":[{"name":"a","value":"1"}],
12
+ * "headers":[{"name":"x-test","value":"hello"}],
13
+ * "payload":"{\"\"}",
14
+ * "formData":[{"name":"body","value":"bbooddyy"}]}}
15
+ * ```
16
+ * 同时 `config.rootStr = "自定义接口"`,PC 与移动端写同一份。
17
+ *
18
+ * 说明:抓包里 `condition` 是切模式前留下的数据集 ID;这里写成空串(http 模式不读它),
19
+ * 回读只断言我们实际写入的键,平台若回填其它值不算失败。
20
+ */
21
+ export declare const HTTP_METHODS: readonly ["GET", "POST", "PUT", "DELETE", "PATCH"];
22
+ export interface NameValue {
23
+ name: string;
24
+ value: string;
25
+ }
26
+ export interface HttpConditionSpec {
27
+ method: string;
28
+ url: string;
29
+ contentType?: string;
30
+ params?: NameValue[];
31
+ headers?: NameValue[];
32
+ formData?: NameValue[];
33
+ /** Body → JSON 编辑器的原始字符串 */
34
+ payload?: string;
35
+ /** 「变量值为空时不参与过滤」:开 → filterIsNull=false;关 → true;不给沿用 */
36
+ ignoreEmpty?: boolean;
37
+ }
38
+ export interface SetHttpConditionOptions {
39
+ pcOnly?: boolean;
40
+ }
41
+ export interface HttpConditionInfo {
42
+ active: boolean;
43
+ method?: string;
44
+ url?: string;
45
+ contentType?: string;
46
+ params?: NameValue[];
47
+ headers?: NameValue[];
48
+ formData?: NameValue[];
49
+ payload?: string;
50
+ filterIsNull?: boolean;
51
+ }
52
+ export declare function setHttpCondition(client: Client, baseUrl: string, appId: string, objId: string, listId: string, spec: HttpConditionSpec, options?: SetHttpConditionOptions): Promise<{
53
+ success: boolean;
54
+ filter: Record<string, any>;
55
+ filterIsNull: boolean;
56
+ warnings: string[];
57
+ }>;
58
+ export declare function getHttpCondition(client: Client, baseUrl: string, appId: string, objId: string, listId: string): Promise<HttpConditionInfo>;
59
+ export {};
60
+ //# sourceMappingURL=form-list-filter-http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-list-filter-http.d.ts","sourceRoot":"","sources":["../../src/services/form-list-filter-http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;AAE9C;;;;;;;;;;;;;;;;;GAiBG;AAEH,eAAO,MAAM,YAAY,oDAAqD,CAAC;AAE/E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA+BD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,EACvB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA8DvG;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CAgB5B"}
@@ -0,0 +1,137 @@
1
+ import { readViewConfig } from './form-list-config.js';
2
+ /**
3
+ * 视图数据条件 —— 自定义接口(`filter.type = "http"`)。
4
+ *
5
+ * 形状来自 2026-11-04 真机保存报文:
6
+ * ```json
7
+ * {"type":"http","isNewFilter":true,"version":1,
8
+ * "data":{"method":"GET","contentType":"multipart/form-data","condition":"","formDw":true,
9
+ * "sourceId":"<objId>","sqlContent":"","url":"https://…",
10
+ * "urlParams":[{"name":"a","value":"1"}],
11
+ * "headers":[{"name":"x-test","value":"hello"}],
12
+ * "payload":"{\"\"}",
13
+ * "formData":[{"name":"body","value":"bbooddyy"}]}}
14
+ * ```
15
+ * 同时 `config.rootStr = "自定义接口"`,PC 与移动端写同一份。
16
+ *
17
+ * 说明:抓包里 `condition` 是切模式前留下的数据集 ID;这里写成空串(http 模式不读它),
18
+ * 回读只断言我们实际写入的键,平台若回填其它值不算失败。
19
+ */
20
+ export const HTTP_METHODS = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'];
21
+ function requireData(response, operation) {
22
+ if (response?.code && response.code !== 200)
23
+ throw new Error(`${operation}失败: ${response.msg || response.code}`);
24
+ if (response?.status === false || response?.fail === true)
25
+ throw new Error(`${operation}失败: ${response?.msg || '平台未确认成功'}`);
26
+ if (!response?.data)
27
+ throw new Error(`${operation}失败: 返回结构无效`);
28
+ return response.data;
29
+ }
30
+ function normalizePairs(pairs, label) {
31
+ if (!pairs)
32
+ return [];
33
+ const seen = new Set();
34
+ return pairs.map((pair) => {
35
+ const name = String(pair.name || '').trim();
36
+ if (!name)
37
+ throw new Error(`${label}里有空参数名`);
38
+ if (seen.has(name))
39
+ throw new Error(`${label}参数名重复:${name}`);
40
+ seen.add(name);
41
+ return { name, value: String(pair.value ?? '') };
42
+ });
43
+ }
44
+ function auditUrl(url) {
45
+ const warnings = [];
46
+ if (!url.trim())
47
+ throw new Error('--url 不能为空');
48
+ if (url !== url.trim())
49
+ warnings.push('URL 首尾有空白字符,平台会原样保存,可能导致请求失败(已按原样写入)');
50
+ const trimmed = url.trim();
51
+ if (!/^https?:\/\//i.test(trimmed))
52
+ warnings.push('URL 不是 http(s) 开头,确认是否漏了协议');
53
+ if (trimmed.includes(' '))
54
+ warnings.push('URL 中间含空格,确认是否粘贴时混入了换行/空格');
55
+ return warnings;
56
+ }
57
+ export async function setHttpCondition(client, baseUrl, appId, objId, listId, spec, options = {}) {
58
+ const method = String(spec.method || '').toUpperCase();
59
+ if (!HTTP_METHODS.includes(method)) {
60
+ throw new Error(`--method 只支持 ${HTTP_METHODS.join(' / ')}`);
61
+ }
62
+ const warnings = auditUrl(spec.url);
63
+ const urlParams = normalizePairs(spec.params, 'Params');
64
+ const headers = normalizePairs(spec.headers, 'Headers');
65
+ const formData = normalizePairs(spec.formData, 'Body/formData');
66
+ const pc = await readViewConfig(client, baseUrl, appId, listId, 'pc');
67
+ const pcObjId = String(pc.objId ?? pc.dataset?.id ?? '');
68
+ if (pcObjId && pcObjId !== objId)
69
+ throw new Error(`视图不属于目标表单:配置 objId=${pcObjId},传入=${objId}`);
70
+ if (pc.dataset?.appId && String(pc.dataset.appId) !== appId)
71
+ throw new Error('视图不属于指定应用');
72
+ let mobile;
73
+ try {
74
+ mobile = await readViewConfig(client, baseUrl, appId, listId, 'mobile');
75
+ }
76
+ catch (error) {
77
+ if (!options.pcOnly)
78
+ throw error;
79
+ mobile = {};
80
+ }
81
+ const filter = {
82
+ type: 'http',
83
+ isNewFilter: true,
84
+ version: 1,
85
+ data: {
86
+ method,
87
+ contentType: spec.contentType || 'multipart/form-data',
88
+ condition: '',
89
+ formDw: true,
90
+ sourceId: objId,
91
+ sqlContent: '',
92
+ url: spec.url,
93
+ urlParams,
94
+ headers,
95
+ payload: spec.payload ?? '{"":""}',
96
+ formData,
97
+ },
98
+ };
99
+ const currentIsNull = pc.filterIsNull === undefined ? true : pc.filterIsNull;
100
+ const filterIsNull = spec.ignoreEmpty === undefined ? currentIsNull : !spec.ignoreEmpty;
101
+ const nextPc = { ...pc, filter, filterIsNull, rootStr: '自定义接口' };
102
+ const nextMobile = { ...mobile, filter: structuredClone(filter), filterIsNull, rootStr: '自定义接口' };
103
+ const save = await client.post(`${baseUrl}/api/bs/ebuilder/form/list/saveNListConfig?apid=${appId}`, {
104
+ listId,
105
+ appId,
106
+ terminalType: 'PC',
107
+ config: nextPc,
108
+ mConfig: nextMobile,
109
+ });
110
+ if (save?.code !== 200 || save?.status === false || save?.fail === true) {
111
+ throw new Error(`保存自定义接口条件失败: ${save?.msg || '平台未确认成功'}`);
112
+ }
113
+ const after = await readViewConfig(client, baseUrl, appId, listId, 'pc');
114
+ if (after.filter?.type !== 'http' || String(after.filter?.data?.url ?? '') !== spec.url) {
115
+ throw new Error('已保存,但视图条件回读不一致:期望 http + 相同 URL');
116
+ }
117
+ return { success: true, filter: after.filter, filterIsNull, warnings };
118
+ }
119
+ export async function getHttpCondition(client, baseUrl, appId, objId, listId) {
120
+ const pc = await readViewConfig(client, baseUrl, appId, listId, 'pc');
121
+ const filter = pc.filter;
122
+ if (!filter || filter.type !== 'http')
123
+ return { active: false };
124
+ const data = filter.data || {};
125
+ return {
126
+ active: true,
127
+ method: data.method,
128
+ url: data.url,
129
+ contentType: data.contentType,
130
+ params: Array.isArray(data.urlParams) ? data.urlParams : [],
131
+ headers: Array.isArray(data.headers) ? data.headers : [],
132
+ formData: Array.isArray(data.formData) ? data.formData : [],
133
+ payload: data.payload,
134
+ filterIsNull: pc.filterIsNull,
135
+ };
136
+ }
137
+ //# sourceMappingURL=form-list-filter-http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-list-filter-http.js","sourceRoot":"","sources":["../../src/services/form-list-filter-http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import type { ApiClient } from '../core/client.js';
2
+ type Client = Pick<ApiClient, 'get' | 'post'>;
3
+ /**
4
+ * 视图数据条件 —— SQL 条件(`filter.type = "sql_where"`)。
5
+ *
6
+ * 平台不是把 SQL 存在视图里,而是:
7
+ * 1. `POST /api/dw/directConn/addDataset` 建一个 `sqlfragments` 数据集(多库 SQL 都在这里);
8
+ * 2. 视图 `config.filter` 只记数据集 ID:`{type:"sql_where", data:{condition:<datasetId>, formDw:true, sourceId:<objId>}}`,
9
+ * 同时 `config.rootStr = "SQL"`。
10
+ *
11
+ * 上面的形状全部来自 2026-11-04 真机抓包 + 回读(数据集读回是明文 SQL,`getByDatasetId`)。
12
+ * 多库键名取自平台前端 `dw` bundle 的常量表(8 种全有)。
13
+ */
14
+ /** 平台 `sourceSql` 的键(顺序即 UI 顺序)。 */
15
+ export declare const SQL_DIALECTS: {
16
+ alias: string[];
17
+ key: string;
18
+ label: string;
19
+ }[];
20
+ export declare function dialectKey(name: string): string;
21
+ export declare function dialectLabel(key: string): string;
22
+ export interface SqlConditionSpec {
23
+ /** 基础 SQL(平台 `sqlQuery.sql`);不传时取第一条方言 SQL */
24
+ base?: string;
25
+ /** 平台键(mysqlSql/oracleSql/...)→ SQL 文本 */
26
+ dialects: {
27
+ key: string;
28
+ sql: string;
29
+ }[];
30
+ }
31
+ /** 解析 `--sql @file.json`:`{"base":"...","mysql":"...","oracle":"..."}`。 */
32
+ export declare function parseSqlFile(json: any): SqlConditionSpec;
33
+ /** 简单自检:花括号配对 + 别名提示(只告警不阻断,平台的语法以实际执行结果为准)。 */
34
+ export declare function auditSql(sql: string, where: string): string[];
35
+ export interface SetSqlConditionResult {
36
+ success: boolean;
37
+ listId: string;
38
+ datasetId: string;
39
+ base: string;
40
+ dialects: {
41
+ key: string;
42
+ label: string;
43
+ sql: string;
44
+ }[];
45
+ warnings: string[];
46
+ }
47
+ export interface SetSqlConditionOptions {
48
+ pcOnly?: boolean;
49
+ /** 直接绑定已存在的数据集(不新建);用于改回之前那份 SQL 条件 */
50
+ datasetId?: string;
51
+ /**
52
+ * 「变量值为空时不参与过滤」。
53
+ * 2026-11-04 抓包(同一视图、只改这个开关,其余字段逐字节相同):
54
+ * 开关关闭 → `filterIsNull: true`
55
+ * 开关打开 → `filterIsNull: false`
56
+ * 不传则沿用视图现有值。
57
+ */
58
+ ignoreEmpty?: boolean;
59
+ }
60
+ export declare function setSqlCondition(client: Client, baseUrl: string, appId: string, objId: string, listId: string, spec: SqlConditionSpec, options?: SetSqlConditionOptions): Promise<SetSqlConditionResult>;
61
+ export interface SqlConditionInfo {
62
+ active: boolean;
63
+ datasetId?: string;
64
+ base?: string;
65
+ dialects?: {
66
+ key: string;
67
+ label: string;
68
+ sql: string;
69
+ }[];
70
+ }
71
+ /** 读取视图上的 SQL 条件(视图 filter + 数据集正文)。 */
72
+ export declare function getSqlCondition(client: Client, baseUrl: string, appId: string, objId: string, listId: string): Promise<SqlConditionInfo>;
73
+ export {};
74
+ //# sourceMappingURL=form-list-filter-sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-list-filter-sql.d.ts","sourceRoot":"","sources":["../../src/services/form-list-filter-sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;AAE9C;;;;;;;;;;GAUG;AAEH,oCAAoC;AACpC,eAAO,MAAM,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EASzE,CAAC;AAKF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,gBAAgB,CAWxD;AAED,gDAAgD;AAChD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAO7D;AAWD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,gBAAgB,EACtB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAoGhC;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1D;AAED,wCAAwC;AACxC,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC,CAwB3B"}