weaver-e10-builder 1.5.15 → 1.5.16

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 (129) hide show
  1. package/dist/commands/form-add-detail-table.d.ts.map +1 -1
  2. package/dist/commands/form-add-detail-table.js +37 -17
  3. package/dist/commands/form-add-detail-table.js.map +1 -1
  4. package/dist/commands/form-list-custom.d.ts +5 -0
  5. package/dist/commands/form-list-custom.d.ts.map +1 -0
  6. package/dist/commands/form-list-custom.js +24 -0
  7. package/dist/commands/form-list-custom.js.map +1 -0
  8. package/dist/commands/form-list-search-group.d.ts.map +1 -1
  9. package/dist/commands/form-list-search-group.js +101 -7
  10. package/dist/commands/form-list-search-group.js.map +1 -1
  11. package/dist/commands/form-list.d.ts.map +1 -1
  12. package/dist/commands/form-list.js +45 -1
  13. package/dist/commands/form-list.js.map +1 -1
  14. package/dist/commands/form-permission.d.ts.map +1 -1
  15. package/dist/commands/form-permission.js +10 -8
  16. package/dist/commands/form-permission.js.map +1 -1
  17. package/dist/commands/form.d.ts.map +1 -1
  18. package/dist/commands/form.js +54 -5
  19. package/dist/commands/form.js.map +1 -1
  20. package/dist/commands/menu.d.ts.map +1 -1
  21. package/dist/commands/menu.js +98 -1
  22. package/dist/commands/menu.js.map +1 -1
  23. package/dist/commands/report-cell.d.ts +3 -0
  24. package/dist/commands/report-cell.d.ts.map +1 -0
  25. package/dist/commands/report-cell.js +365 -0
  26. package/dist/commands/report-cell.js.map +1 -0
  27. package/dist/commands/wf-form.d.ts +2 -0
  28. package/dist/commands/wf-form.d.ts.map +1 -1
  29. package/dist/commands/wf-form.js +10 -9
  30. package/dist/commands/wf-form.js.map +1 -1
  31. package/dist/commands/workflow-base-command.js +1 -1
  32. package/dist/commands/workflow-base-command.js.map +1 -1
  33. package/dist/commands/workflow-basic-info.d.ts +5 -0
  34. package/dist/commands/workflow-basic-info.d.ts.map +1 -0
  35. package/dist/commands/workflow-basic-info.js +47 -0
  36. package/dist/commands/workflow-basic-info.js.map +1 -0
  37. package/dist/commands/workflow-create-workflow.d.ts.map +1 -1
  38. package/dist/commands/workflow-create-workflow.js +49 -83
  39. package/dist/commands/workflow-create-workflow.js.map +1 -1
  40. package/dist/commands/workflow-function-settings.d.ts.map +1 -1
  41. package/dist/commands/workflow-function-settings.js +3 -2
  42. package/dist/commands/workflow-function-settings.js.map +1 -1
  43. package/dist/commands/workflow.d.ts.map +1 -1
  44. package/dist/commands/workflow.js +19 -37
  45. package/dist/commands/workflow.js.map +1 -1
  46. package/dist/index.js +4 -0
  47. package/dist/index.js.map +1 -1
  48. package/dist/services/form-field-build.d.ts +13 -0
  49. package/dist/services/form-field-build.d.ts.map +1 -1
  50. package/dist/services/form-field-build.js +18 -0
  51. package/dist/services/form-field-build.js.map +1 -1
  52. package/dist/services/form-field-dataset.d.ts +101 -0
  53. package/dist/services/form-field-dataset.d.ts.map +1 -0
  54. package/dist/services/form-field-dataset.js +180 -0
  55. package/dist/services/form-field-dataset.js.map +1 -0
  56. package/dist/services/form-field-template.d.ts +15 -10
  57. package/dist/services/form-field-template.d.ts.map +1 -1
  58. package/dist/services/form-field-template.js +30 -15
  59. package/dist/services/form-field-template.js.map +1 -1
  60. package/dist/services/form-layout-insert.d.ts +22 -0
  61. package/dist/services/form-layout-insert.d.ts.map +1 -1
  62. package/dist/services/form-layout-insert.js +88 -8
  63. package/dist/services/form-layout-insert.js.map +1 -1
  64. package/dist/services/form-list-search-custom.d.ts +25 -0
  65. package/dist/services/form-list-search-custom.d.ts.map +1 -0
  66. package/dist/services/form-list-search-custom.js +98 -0
  67. package/dist/services/form-list-search-custom.js.map +1 -0
  68. package/dist/services/form-list-search-group.d.ts +36 -2
  69. package/dist/services/form-list-search-group.d.ts.map +1 -1
  70. package/dist/services/form-list-search-group.js +89 -10
  71. package/dist/services/form-list-search-group.js.map +1 -1
  72. package/dist/services/form-list-search.d.ts +1 -0
  73. package/dist/services/form-list-search.d.ts.map +1 -1
  74. package/dist/services/form-list-search.js +5 -2
  75. package/dist/services/form-list-search.js.map +1 -1
  76. package/dist/services/form-permission-archive.d.ts +15 -2
  77. package/dist/services/form-permission-archive.d.ts.map +1 -1
  78. package/dist/services/form-permission-archive.js +22 -3
  79. package/dist/services/form-permission-archive.js.map +1 -1
  80. package/dist/services/form-physical-table.d.ts +17 -0
  81. package/dist/services/form-physical-table.d.ts.map +1 -1
  82. package/dist/services/form-physical-table.js +19 -0
  83. package/dist/services/form-physical-table.js.map +1 -1
  84. package/dist/services/form-sub-detail.d.ts +11 -0
  85. package/dist/services/form-sub-detail.d.ts.map +1 -1
  86. package/dist/services/form-sub-detail.js +23 -0
  87. package/dist/services/form-sub-detail.js.map +1 -1
  88. package/dist/services/menu-catalog.d.ts +11 -0
  89. package/dist/services/menu-catalog.d.ts.map +1 -1
  90. package/dist/services/menu-catalog.js +32 -0
  91. package/dist/services/menu-catalog.js.map +1 -1
  92. package/dist/services/report/cell-edit.d.ts +53 -0
  93. package/dist/services/report/cell-edit.d.ts.map +1 -0
  94. package/dist/services/report/cell-edit.js +137 -0
  95. package/dist/services/report/cell-edit.js.map +1 -0
  96. package/dist/services/report/cell-event.d.ts +28 -0
  97. package/dist/services/report/cell-event.d.ts.map +1 -0
  98. package/dist/services/report/cell-event.js +71 -0
  99. package/dist/services/report/cell-event.js.map +1 -0
  100. package/dist/services/report/cell-filter.d.ts +46 -0
  101. package/dist/services/report/cell-filter.d.ts.map +1 -0
  102. package/dist/services/report/cell-filter.js +153 -0
  103. package/dist/services/report/cell-filter.js.map +1 -0
  104. package/dist/services/workflow-basic-info.d.ts +27 -0
  105. package/dist/services/workflow-basic-info.d.ts.map +1 -0
  106. package/dist/services/workflow-basic-info.js +170 -0
  107. package/dist/services/workflow-basic-info.js.map +1 -0
  108. package/dist/services/workflow-function-management.d.ts +1 -1
  109. package/dist/services/workflow-function-settings.d.ts +1 -0
  110. package/dist/services/workflow-function-settings.d.ts.map +1 -1
  111. package/dist/services/workflow-function-settings.js +10 -2
  112. package/dist/services/workflow-function-settings.js.map +1 -1
  113. package/dist/services/workflow-watermark-template.d.ts +8 -0
  114. package/dist/services/workflow-watermark-template.d.ts.map +1 -0
  115. package/dist/services/workflow-watermark-template.js +78 -0
  116. package/dist/services/workflow-watermark-template.js.map +1 -0
  117. package/package.json +1 -1
  118. package/skill-docs/SKILL.md +4 -4
  119. package/skill-docs/references/common/ref-cli-commands.md +696 -695
  120. package/skill-docs/references/form/guide-form-archive-permission.md +5 -2
  121. package/skill-docs/references/form/guide-form-layout-incremental.md +6 -4
  122. package/skill-docs/references/form/guide-form-view.md +423 -374
  123. package/skill-docs/references/form/ref-form-fields.md +1 -1
  124. package/skill-docs/references/report/cross-dataset-filter-guide.md +33 -19
  125. package/skill-docs/references/report/event-hreflink-guide.md +30 -0
  126. package/skill-docs/references/report/ref-report-commands.md +14 -0
  127. package/skill-docs/references/report/report-designer-feature-map.md +2 -2
  128. package/skill-docs/references/workflow/guide-function-settings.md +112 -55
  129. package/skill-docs/references/workflow/guide-workflow.md +632 -630
@@ -4,6 +4,7 @@ import { ApiClient } from '../core/client.js';
4
4
  import { parseLayoutJson } from '../services/form-layout-source/json.js';
5
5
  import { toColumnName, toTableName, resolveFieldKeys } from '../utils/column-name.js';
6
6
  import { createCustomPhysicalForm, applyInitialFieldsToNewForm, collectDetailEBuilderFields, defaultSwitchOptions, placeholderFromFormat, reapplyGroupLayout, queryFormStorageSetting } from '../services/form-create.js';
7
+ import { resolveSubFormIdByFieldId } from '../services/form-sub-detail.js';
7
8
  import { getRichType, richIdUnits, BROWSER_KINDS } from '../services/rich-types.js';
8
9
  import { BROWSER_BEAN_SEARCH, browserBeanRows, resolveBrowserByName } from '../services/browser.js';
9
10
  import { dropFieldComponents, prepareLayoutForSave } from '../services/form-field-drop.js';
@@ -2738,7 +2739,7 @@ export function registerFormCommands(program) {
2738
2739
  }
2739
2740
  });
2740
2741
  form.command('edit-field')
2741
- .description('编辑已有字段的属性')
2742
+ .description('编辑已有字段的属性(主表 / 明细表字段均可;明细字段按 fieldId 自动定位所属明细表)')
2742
2743
  .argument('<objId>', '表单 objId')
2743
2744
  .argument('<appId>', '应用 ID')
2744
2745
  .argument('<fieldId>', '字段 ID')
@@ -2805,15 +2806,32 @@ export function registerFormCommands(program) {
2805
2806
  console.error('无法获取 formId,请确认 fieldId 和 appId 正确');
2806
2807
  process.exit(1);
2807
2808
  }
2808
- // Get formTableId for the payload
2809
- const formTableId = formInfo?.formTableId || '';
2809
+ // Get formTableId for the payload(明细字段以读回记录里的子表 formTableId 为准,见下方覆盖)
2810
+ let formTableId = formInfo?.formTableId || '';
2810
2811
  // 读当前字段配置,作为**写回基底**。
2811
2812
  // `saveFormFieldNew` 是全量覆盖:没带上的键会被服务端按默认值重置,所以基底必须尽量完整。
2812
2813
  // `getFormFieldPage` 返回的是**扁平记录**(属性直接铺平,没有嵌套 jsonObj),
2813
2814
  // 它本身就是该字段的属性集 —— 判定逻辑见 services/form-edit-base.ts。
2814
2815
  // **读不到就中止**,绝不用 getFields 拼一个最小定义顶上(那会把真实类型改成 Text)。
2815
- const pageRecords = await fetchFieldPageRecords(client, baseUrl, appId, formId).catch(() => null);
2816
- const baseResult = resolveEditBasePure(pageRecords, fieldId);
2816
+ //
2817
+ // 明细字段**不在**主表查询结果里(不带 subFormId 只返主表字段)。读不到时先用
2818
+ // getEbField 反查所属 subFormId,再按明细表读一次 —— 明细字段的编码/标题同样要能改。
2819
+ let pageRecords = await fetchFieldPageRecords(client, baseUrl, appId, formId).catch(() => null);
2820
+ let baseResult = resolveEditBasePure(pageRecords, fieldId);
2821
+ let detailSubFormId = '';
2822
+ if (baseResult.ok === false) {
2823
+ detailSubFormId = await resolveSubFormIdByFieldId(client, baseUrl, appId, resolvedObjId, fieldId)
2824
+ .catch(() => '');
2825
+ if (detailSubFormId) {
2826
+ const detailRecords = await fetchFieldPageRecords(client, baseUrl, appId, formId, detailSubFormId)
2827
+ .catch(() => null);
2828
+ const detailBase = resolveEditBasePure(detailRecords, fieldId);
2829
+ if (detailBase.ok) {
2830
+ baseResult = detailBase;
2831
+ pageRecords = detailRecords;
2832
+ }
2833
+ }
2834
+ }
2817
2835
  if (baseResult.ok === false) {
2818
2836
  const seen = await peekViaGetFields(client, baseUrl, resolvedObjId, fieldId, auth);
2819
2837
  console.error(`${describeEditBaseFailure(baseResult, fieldId)},已中止,未做任何改动。`);
@@ -2831,6 +2849,11 @@ export function registerFormCommands(program) {
2831
2849
  if (rec?.formId)
2832
2850
  formId = rec.formId;
2833
2851
  }
2852
+ // 明细字段的物理表是**子表**的 formTableId,类型/富组件补配置必须用它(主表的会指错)。
2853
+ if (jsonObj.formTableId)
2854
+ formTableId = String(jsonObj.formTableId);
2855
+ if (detailSubFormId && !jsonObj.subFormId)
2856
+ jsonObj.subFormId = detailSubFormId;
2834
2857
  // 写回前的最后一道闸:没有 type 就绝不落库。
2835
2858
  // saveFormFieldNew 是全量覆盖,缺 type 会被服务端按默认类型(Text)补上。
2836
2859
  if (!jsonObj.type && !editOpts.type) {
@@ -3119,6 +3142,32 @@ export function registerFormCommands(program) {
3119
3142
  };
3120
3143
  const data = await client.post(`${baseUrl}/api/ebuilder/form/form/field/manage/saveFormFieldNew?apid=${appId}`, payload, { ebbusinessid: formId });
3121
3144
  if (data?.code === 200 && data?.status) {
3145
+ // 回读校验:字段编码 / 列名 / 标题这类结构性改动,平台可能返回 200 却不落库。
3146
+ // 只认回读结果,读不到或不一致都按失败处理(明细字段按 subFormId 读)。
3147
+ const expected = [];
3148
+ if (editOpts.title)
3149
+ expected.push({ key: 'title', value: editOpts.title, label: 'title' });
3150
+ if (editOpts.dataKey !== undefined)
3151
+ expected.push({ key: 'dataKey', value: editOpts.dataKey.trim(), label: 'dataKey' });
3152
+ if (editOpts.columnName !== undefined)
3153
+ expected.push({ key: 'columnName', value: editOpts.columnName.trim(), label: 'columnName' });
3154
+ if (editOpts.desc !== undefined)
3155
+ expected.push({ key: 'describe', value: editOpts.desc, label: 'describe' });
3156
+ if (expected.length) {
3157
+ const subForRead = detailSubFormId || String(jsonObj.subFormId || '');
3158
+ const rows = await fetchFieldPageRecords(client, baseUrl, appId, formId, subForRead || undefined)
3159
+ .catch(() => null);
3160
+ const rec = (rows || []).find((r) => String(r?.fieldId) === String(fieldId));
3161
+ if (!rec) {
3162
+ console.error(`回读校验失败: 读不到字段 ${fieldId}(${subForRead ? `明细表 ${subForRead}` : '主表'}),无法确认改动已落库。`);
3163
+ process.exit(1);
3164
+ }
3165
+ const mismatches = expected.filter((e) => String(rec[e.key] ?? '') !== e.value);
3166
+ if (mismatches.length) {
3167
+ console.error(`回读校验失败: ${mismatches.map((m) => `${m.label} 期望「${m.value}」实际「${String(rec[m.key] ?? '')}」`).join(';')}`);
3168
+ process.exit(1);
3169
+ }
3170
+ }
3122
3171
  const changes = [];
3123
3172
  if (editOpts.title)
3124
3173
  changes.push(`title="${editOpts.title}"`);