weaver-e10-builder 1.5.1 → 1.5.2

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 (48) hide show
  1. package/dist/commands/form-add-physical-field.d.ts +3 -0
  2. package/dist/commands/form-add-physical-field.d.ts.map +1 -0
  3. package/dist/commands/form-add-physical-field.js +125 -0
  4. package/dist/commands/form-add-physical-field.js.map +1 -0
  5. package/dist/commands/form-list-permission.js +1 -1
  6. package/dist/commands/form-list-permission.js.map +1 -1
  7. package/dist/commands/form-physical-table.d.ts +3 -0
  8. package/dist/commands/form-physical-table.d.ts.map +1 -0
  9. package/dist/commands/form-physical-table.js +195 -0
  10. package/dist/commands/form-physical-table.js.map +1 -0
  11. package/dist/commands/form.d.ts.map +1 -1
  12. package/dist/commands/form.js +35 -412
  13. package/dist/commands/form.js.map +1 -1
  14. package/dist/commands/org.d.ts.map +1 -1
  15. package/dist/commands/org.js +131 -7
  16. package/dist/commands/org.js.map +1 -1
  17. package/dist/commands/workflow-operator-sign.js +1 -1
  18. package/dist/commands/workflow-operator-sign.js.map +1 -1
  19. package/dist/index.js +4 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/services/form-field-build.d.ts +71 -0
  22. package/dist/services/form-field-build.d.ts.map +1 -0
  23. package/dist/services/form-field-build.js +436 -0
  24. package/dist/services/form-field-build.js.map +1 -0
  25. package/dist/services/form-physical-table.d.ts +115 -0
  26. package/dist/services/form-physical-table.d.ts.map +1 -0
  27. package/dist/services/form-physical-table.js +153 -0
  28. package/dist/services/form-physical-table.js.map +1 -0
  29. package/dist/services/org-employee.d.ts +105 -1
  30. package/dist/services/org-employee.d.ts.map +1 -1
  31. package/dist/services/org-employee.js +186 -5
  32. package/dist/services/org-employee.js.map +1 -1
  33. package/package.json +1 -1
  34. package/skill-docs/SKILL.md +5 -5
  35. package/skill-docs/_catalog.md +1 -0
  36. package/skill-docs/references/common/ref-cli-commands.md +8 -2
  37. package/skill-docs/references/form/guide-form-association.md +1 -1
  38. package/skill-docs/references/form/guide-form-linkage.md +2 -2
  39. package/skill-docs/references/form/guide-form-physical-table.md +146 -0
  40. package/skill-docs/references/hrm/guide-org-employee.md +71 -3
  41. package/skill-docs/references/report/cell-config-echo-guide.md +1 -1
  42. package/skill-docs/references/report/dataset-query-filter-guide.md +3 -3
  43. package/skill-docs/references/report/date-range-query-reference.md +2 -2
  44. package/skill-docs/references/report/query-condition-api-guide.md +11 -11
  45. package/skill-docs/references/report/report-designer-feature-map.md +1 -1
  46. package/skill-docs/references/report/report-permission-guide.md +2 -2
  47. package/skill-docs/references/workflow/guide-workflow-odoc-setting.md +6 -6
  48. package/skill-docs/references/workflow/guide-workflow.md +1 -1
@@ -0,0 +1,436 @@
1
+ import { getRichType, richIdUnits } from './rich-types.js';
2
+ import { placeholderFromFormat } from './form-create.js';
3
+ import { resolveDetailTable } from './form-sub-detail.js';
4
+ import { applyFieldPatches } from './form-field-patch.js';
5
+ import { createMultilangLabel } from './form-i18n-label.js';
6
+ /**
7
+ * 「字段定义 → 平台 jsonObj」的构造器。
8
+ *
9
+ * **这是唯一一份**。`form add-field` 与按物理表加字段的命令(`form add-physical-field`)都走它 ——
10
+ * 此前这段逻辑内联在 `commands/form.ts` 的 add-field action 里(约 340 行),
11
+ * 一旦要出第二个入口就会变成两处真相,所以原样搬到这里,行为一字未改。
12
+ *
13
+ * 搬动时只做了三处**等价**改写:
14
+ * 1. `client/baseUrl/...` 改为从入参取(原来是闭包变量)
15
+ * 2. `auth.userId` / `auth.tenantKey` → 入参 `userId` / `tenantKey`
16
+ * 3. `console.error(...) + process.exit(1)` → `throw new Error(...)`,
17
+ * 由调用方接住后打印并 `process.exit(1)`。**库函数不该直接退进程。**
18
+ *
19
+ * 字段落点由 `formTableId` 决定:主表的 id = 主表;某张附属物理表的 id = 落到「字段管理 → 其他」
20
+ * 里那张表上。
21
+ */
22
+ /** 平台系统字段 id(非业务字段)。`defaultEBuilderDataTitle` 用来筛业务字段。 */
23
+ export const SYSTEM_FIELD_IDS = new Set([
24
+ 'name', 'creator', 'create_time', 'update_time', 'id',
25
+ 'updater', 'data_status', 'flow_status', 'current_step',
26
+ 'batchpubtags', 'batchmytags', 'operate', 'data_read_status',
27
+ 'flow_system_number',
28
+ ]);
29
+ // EBuilder dataTitle(关联字段标题栏)默认解析:优先字段名含「名称」的业务字段,无则第一个业务字段。
30
+ // 需求:默认选带"名称"二字的字段(如 客户名称/类型名称),没有就默认选第一个。
31
+ export function defaultEBuilderDataTitle(fields) {
32
+ const isBiz = (id) => /^\d{15,}$/.test(id) && !SYSTEM_FIELD_IDS.has(id);
33
+ const biz = (fields || []).filter((f) => isBiz(String(f.fieldId ?? '')));
34
+ const byName = biz.find((f) => String(f.fieldName ?? f.title ?? '').includes('名称'));
35
+ return byName?.fieldId || biz[0]?.fieldId || 'name';
36
+ }
37
+ /** 构造字段的 jsonObj。致命错误一律抛出(不退出进程)。 */
38
+ export async function buildFieldJsonObject(ctx) {
39
+ const { client, baseUrl, appId, objId, userId, tenantKey, fieldType, fieldName, title, formId, fieldId, startId, endId } = ctx;
40
+ const cmdOpts = ctx.opts;
41
+ const sformId = cmdOpts.sformId || '';
42
+ const dataTitle = cmdOpts.dataTitle || '';
43
+ const formName = cmdOpts.formName || '';
44
+ const keys = { dataKey: ctx.dataKey, columnName: ctx.columnName };
45
+ // Build jsonObj based on field type
46
+ const jsonObj = {
47
+ type: fieldType,
48
+ title: title || fieldName,
49
+ formTableId: ctx.formTableId, fieldId, groupId: '-1', formId,
50
+ showOrder: '0.00',
51
+ dataKey: keys.dataKey,
52
+ columnName: keys.columnName,
53
+ };
54
+ // 明细表字段:--sub-form-id 时 jsonObj 带 subFormId —— **字段落点由它决定**。
55
+ // 必须用 resolveDetailTable 而不是直接查 getEbField:后者列不出空明细表,
56
+ // 用户把明细字段删光后就再也加不回去(详见 services/form-sub-detail.ts)。
57
+ if (cmdOpts.subFormId) {
58
+ const sub = await resolveDetailTable(client, baseUrl, appId, objId, formId, cmdOpts.subFormId);
59
+ if (!sub) {
60
+ throw new Error(`未找到明细表 subFormId=${cmdOpts.subFormId}(getEbField 与 querySubForms 均无此表,请确认 id)`);
61
+ }
62
+ Object.assign(jsonObj, { subFormId: cmdOpts.subFormId });
63
+ // 空表拿不到物理表 id,保持主表的值不动:实测带主表 formTableId 一样落进明细表。
64
+ if (sub.formTableId)
65
+ jsonObj.formTableId = sub.formTableId;
66
+ }
67
+ // 富组件:映射到平台真实 type/componentKey + 附加配置(对齐 batch/save/formField 抓包)。
68
+ // 之前 jsonObj 只有 type 没有 componentKey → 平台 FormFieldDto.getComponentKey() 为 null → NPE。
69
+ const rich = getRichType(fieldType);
70
+ if (rich) {
71
+ jsonObj.type = rich.platformType;
72
+ jsonObj.componentKey = rich.platformComponentKey;
73
+ if (rich.build) {
74
+ const extra = richIdUnits(fieldType, {}) - 1;
75
+ let extraIds = [];
76
+ if (extra > 0) {
77
+ const extraRes = await client.post(`${baseUrl}/api/form/local/generatorIds?size=${extra}&apid=${appId}`, {});
78
+ extraIds = (extraRes?.data?.generatorIds || []).map(String);
79
+ }
80
+ const extraCfg = await rich.build({
81
+ def: {
82
+ multiple: cmdOpts.multiple,
83
+ browserType: cmdOpts.browserType,
84
+ browserFormSource: cmdOpts.browserFormSource,
85
+ }, fieldId, formId, formTableId: ctx.formTableId, dataKey: keys.dataKey, columnName: keys.columnName,
86
+ showOrder: '0.00', extraIds,
87
+ });
88
+ Object.assign(jsonObj, extraCfg);
89
+ }
90
+ }
91
+ // 非富组件也补 componentKey(平台要求,否则 FormFieldDto.getComponentKey() 为 null → NPE)。
92
+ // 富组件已在上方设置 platformComponentKey;此处 fallback 到类型名(平台对常见类型有归一容错)。
93
+ if (!jsonObj.componentKey)
94
+ jsonObj.componentKey = fieldType;
95
+ // Number/Money decimal precision: --precision 指定,缺省 Number=0 整数、Money=2、百分比=1
96
+ // 百分比:--percent → numberType=percentage;默认值:--default → content+isDefault
97
+ // 实测:设默认值必须连 isDelimiter/stepMode/step/isCapital 一起,否则平台丢默认(只设 content+isDefault 不落库)
98
+ if (fieldType === 'Number' || fieldType === 'Money') {
99
+ const defaultPrec = fieldType === 'Money' ? '2' : '0';
100
+ const isPercent = fieldType === 'Number' && cmdOpts.percent === true;
101
+ // 注意:commander 把 --default 映射到 opts.default(非 defaultValue)
102
+ const hasDefault = cmdOpts.default !== undefined && cmdOpts.default !== null && cmdOpts.default !== '';
103
+ // 千分位:Money 默认开(--no-delimiter 关闭)、Number 默认关(--delimiter 开启)
104
+ const isDelim = fieldType === 'Money' ? cmdOpts.delimiter !== false : cmdOpts.delimiter === true;
105
+ const isCap = cmdOpts.capital === true;
106
+ const patch = {
107
+ pointSize: cmdOpts.precision !== undefined ? cmdOpts.precision : (isPercent ? '1' : defaultPrec),
108
+ isDefault: hasDefault,
109
+ isDelimiter: isDelim,
110
+ isCapital: isCap,
111
+ capitalFormat: 'onlyUpperCase',
112
+ capitalPosition: 'outside',
113
+ capitalSetting: 'system',
114
+ capitalPrecision: 'yuan',
115
+ isExchangeRates: false,
116
+ };
117
+ if (fieldType === 'Number')
118
+ patch.numberType = isPercent ? 'percentage' : 'number';
119
+ // content 始终带(无默认值时空串)——浏览器抓包 Number 字段 getFormField 恒有 content:"",
120
+ // 缺 content 在 FLOW 渲染异常(与多行文本同因)。
121
+ if (fieldType === 'Number')
122
+ patch.content = hasDefault ? String(cmdOpts.default) : '';
123
+ if (hasDefault) {
124
+ patch.stepMode = false;
125
+ patch.step = 1;
126
+ }
127
+ Object.assign(jsonObj, patch);
128
+ }
129
+ if (fieldType === 'TextArea') {
130
+ // 多行文本:对齐浏览器抓包——content 恒 ""(无默认值时空串)、maxLen=4000。
131
+ // 缺 content 在 FLOW 渲染异常;maxLen 不发则前端最大长度回显异常。
132
+ Object.assign(jsonObj, { content: '', maxLen: 4000 });
133
+ }
134
+ const isDateRange = fieldType === 'DateRange' || fieldType === 'DateInterval';
135
+ if (fieldType === 'EInvoice') {
136
+ Object.assign(jsonObj, {
137
+ isSingle: false,
138
+ invoiceType: 1,
139
+ });
140
+ delete jsonObj.maxLen;
141
+ delete jsonObj.unique;
142
+ delete jsonObj.scan;
143
+ delete jsonObj.readonlyTransLink;
144
+ }
145
+ else if (fieldType === 'Date' || fieldType === 'DateTime') {
146
+ // 日期:默认精度 年月日(yyyy-MM-dd,对齐浏览器抓包);DateTime:默认带时:分(yyyy-MM-dd HH:mm 不含秒)。
147
+ // 默认值不填(isDefault:false);--format 覆盖精度。
148
+ const isDt = fieldType === 'DateTime';
149
+ const fmt = cmdOpts.format || (isDt ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd');
150
+ Object.assign(jsonObj, {
151
+ type: 'Date',
152
+ format: fmt,
153
+ placeholder: placeholderFromFormat(fmt),
154
+ timePanelStyle: { type: 'system' },
155
+ isDefault: false,
156
+ });
157
+ // 日期限制:--min-field 最早不得早于 / --max-field 最晚不得晚于另一字段(对齐抓包 min.dateField)。
158
+ // 目标字段 fieldId 从 getFields mainFields 按字段名解析。
159
+ if (cmdOpts.minField || cmdOpts.maxField) {
160
+ try {
161
+ const tfd = await client.post(`${baseUrl}/api/ebuilder/form/dataset/v1/getFields`, {
162
+ objId, userid: userId, tenantKey,
163
+ });
164
+ const tfields = tfd?.data?.mainFields || [];
165
+ const minTarget = cmdOpts.minField ? tfields.find((f) => f.fieldName === cmdOpts.minField)?.fieldId : '';
166
+ const maxTarget = cmdOpts.maxField ? tfields.find((f) => f.fieldName === cmdOpts.maxField)?.fieldId : '';
167
+ if (minTarget) {
168
+ jsonObj.min = { type: 'dateField', checkValue: String(minTarget) };
169
+ jsonObj.earlyDate = true;
170
+ }
171
+ if (maxTarget) {
172
+ jsonObj.max = { type: 'dateField', checkValue: String(maxTarget) };
173
+ jsonObj.lateDate = true;
174
+ }
175
+ }
176
+ catch { /* 解析失败则不加限制 */ }
177
+ }
178
+ delete jsonObj.maxLen;
179
+ delete jsonObj.unique;
180
+ delete jsonObj.scan;
181
+ delete jsonObj.readonlyTransLink;
182
+ }
183
+ else if (fieldType === 'SubCompany') {
184
+ Object.assign(jsonObj, {
185
+ componentKey: 'Subcompany', isSingle: cmdOpts.multiple ? false : true,
186
+ displayType: 'space', defaultExtend: { type: 'custom', relation: 'current' },
187
+ viewDataDetail: true, showDimension: true,
188
+ pcDisplaySelectedCount: { type: 'default' },
189
+ mobileDisplaySelectedCount: { type: 'default' },
190
+ });
191
+ delete jsonObj.maxLen;
192
+ delete jsonObj.unique;
193
+ delete jsonObj.scan;
194
+ delete jsonObj.readonlyTransLink;
195
+ }
196
+ else if (fieldType === 'City') {
197
+ // 城市/地区选择(对齐浏览器 payload:region 模式 + 系统级联层级 + 字母索引)
198
+ Object.assign(jsonObj, {
199
+ isSingle: false,
200
+ levelSetting: 'system',
201
+ isDefault: false,
202
+ useLetterIndex: true,
203
+ mode: 'region',
204
+ });
205
+ delete jsonObj.maxLen;
206
+ delete jsonObj.unique;
207
+ delete jsonObj.scan;
208
+ delete jsonObj.readonlyTransLink;
209
+ }
210
+ else if (fieldType === 'EBuilder') {
211
+ if (!sformId) {
212
+ throw new Error('EBuilder 类型必须指定 --sform-id(目标表单 objId)');
213
+ }
214
+ // Resolve formName from target form if not provided
215
+ let resolvedFormName = formName;
216
+ if (!resolvedFormName) {
217
+ try {
218
+ const tlist = await client.get(`${baseUrl}/api/bs/ebuilder/form/obj/getList/${appId}?apid=${appId}`, { ebbusinessid: appId });
219
+ const tf = (tlist?.data || []).find((f) => String(f.id) === String(sformId));
220
+ resolvedFormName = tf?.formName || tf?.name || sformId;
221
+ }
222
+ catch {
223
+ resolvedFormName = sformId;
224
+ }
225
+ }
226
+ // Resolve dataTitle:纯数字 fieldId 直接用;'name'/字段名 → 查目标表字段。
227
+ // 未传 --data-title 时按 name 处理:默认优先字段名含「名称」的业务字段(如 客户名称/类型名称),无则第一个业务字段。
228
+ let resolvedDataTitle = dataTitle || 'name';
229
+ if (!/^\d{15,}$/.test(resolvedDataTitle)) {
230
+ try {
231
+ const tfd = await client.post(`${baseUrl}/api/ebuilder/form/dataset/v1/getFields`, {
232
+ objId: sformId, userid: userId, tenantKey,
233
+ });
234
+ const tfields = tfd?.data?.mainFields || [];
235
+ if (resolvedDataTitle === 'name') {
236
+ resolvedDataTitle = defaultEBuilderDataTitle(tfields);
237
+ }
238
+ else {
239
+ const m = tfields.find((f) => f.fieldName === resolvedDataTitle)
240
+ || tfields.find((f) => String(f.fieldName || '').includes(resolvedDataTitle));
241
+ resolvedDataTitle = m?.fieldId || resolvedDataTitle;
242
+ }
243
+ }
244
+ catch { /* 解析失败保留原值 */ }
245
+ }
246
+ Object.assign(jsonObj, {
247
+ sformId,
248
+ dataTitle: resolvedDataTitle || 'name',
249
+ formName: resolvedFormName,
250
+ virtualForm: false,
251
+ displayType: 'line',
252
+ isAddForRelation: true,
253
+ isSingle: cmdOpts.multiple ? false : true, // 默认单选;--multiple 多选
254
+ viewDataDetail: true,
255
+ pcDisplaySelectedCount: { type: 'default' },
256
+ mobileDisplaySelectedCount: { type: 'default' },
257
+ quickAddParams: [],
258
+ relateViewData: [],
259
+ relateField: null,
260
+ appId,
261
+ virtualTable: false,
262
+ });
263
+ }
264
+ else if (fieldType === 'Flow') {
265
+ // 浏览-流程字段(对齐浏览器 payload:type=Flow + relateExt.module=workflow)
266
+ if (!sformId) {
267
+ throw new Error('Flow 类型必须指定 --sform-id(目标流程绑定的表单 objId)');
268
+ }
269
+ let resolvedFormName = formName;
270
+ if (!resolvedFormName) {
271
+ try {
272
+ const tlist = await client.get(`${baseUrl}/api/bs/ebuilder/form/obj/getList/${appId}?apid=${appId}`, { ebbusinessid: appId });
273
+ const tf = (tlist?.data || []).find((f) => String(f.id) === String(sformId));
274
+ resolvedFormName = tf?.formName || tf?.name || sformId;
275
+ }
276
+ catch {
277
+ resolvedFormName = sformId;
278
+ }
279
+ }
280
+ Object.assign(jsonObj, {
281
+ isAddForRelation: true,
282
+ sformId,
283
+ formName: resolvedFormName,
284
+ conditionOperate: 'and',
285
+ filterParams: '{}',
286
+ filterQueryParams: '{}',
287
+ columnFields: [],
288
+ displayType: 'line',
289
+ viewDataDetail: true,
290
+ pcDisplaySelectedCount: { type: 'default' },
291
+ mobileDisplaySelectedCount: { type: 'default' },
292
+ relateExt: { module: 'workflow' },
293
+ relateField: null,
294
+ quickAddParams: [],
295
+ });
296
+ }
297
+ else if (isDateRange) {
298
+ // 日期区间:补 start/end 两个 DateComponent + rangeInterval(对齐浏览器 payload)
299
+ const format = cmdOpts.format || 'yyyy-MM-dd';
300
+ const rangeTitle = title || fieldName;
301
+ const start = {
302
+ componentKey: 'DateComponent', content: '', describe: '', earlyDate: 'false',
303
+ format, isDefault: 'false', lateDate: 'false',
304
+ placeholder: placeholderFromFormat(format),
305
+ position: '', relateMultiple: 'false', required: 'false', size: 'medium',
306
+ title: `${rangeTitle}(开始时间)`, fieldId: startId,
307
+ min: { type: 'currentHour' }, max: { type: 'currentHour' },
308
+ };
309
+ const end = { ...start, title: `${rangeTitle}(结束时间)`, fieldId: endId };
310
+ Object.assign(jsonObj, {
311
+ isDefault: false,
312
+ start, end,
313
+ hasDisplayFormat: true,
314
+ rangeInterval: { limitType: 'max', timeUnit: 'day' },
315
+ });
316
+ }
317
+ else if (fieldType === 'IDCard') {
318
+ // 身份证号:平台原生简单字段,浏览器抓包 payload 极简(type/title/formTableId/dataKey/
319
+ // columnName/fieldId/formId/showOrder/groupId 即全部)——无 componentKey、无文本长度配置。
320
+ delete jsonObj.componentKey;
321
+ delete jsonObj.maxLen;
322
+ delete jsonObj.unique;
323
+ delete jsonObj.scan;
324
+ delete jsonObj.readonlyTransLink;
325
+ }
326
+ else {
327
+ // 文本最大长度:--max-len 指定,缺省 Text=100、TextArea=4000(对齐浏览器抓包;TextArea 在上面分支已设 content:"")
328
+ const defaultMaxLen = fieldType === 'TextArea' ? 4000 : 100;
329
+ const maxLen = cmdOpts.maxLen !== undefined ? Number(cmdOpts.maxLen) : defaultMaxLen;
330
+ Object.assign(jsonObj, {
331
+ maxLen: Number.isFinite(maxLen) && maxLen > 0 ? maxLen : defaultMaxLen,
332
+ unique: false, scan: false,
333
+ readonlyTransLink: false,
334
+ });
335
+ }
336
+ // 人员/部门多选:默认单选,--multiple 改多选(isSingle:false)。EBuilder 已在上文分支设过。
337
+ if (fieldType === 'Employee' || fieldType === 'Department') {
338
+ jsonObj.isSingle = cmdOpts.multiple ? false : true;
339
+ }
340
+ // 下拉多选是独立类型 SelectMultiple(非 Select + 开关)。浏览器抓包:type:"SelectMultiple",
341
+ // 无 componentKey/maxLen/unique/scan(else 分支给 Select 加的 junk 要清掉),options 单独配。
342
+ if (fieldType === 'Select' && cmdOpts.multiple) {
343
+ jsonObj.type = 'SelectMultiple';
344
+ jsonObj.componentKey = 'SelectMultiple';
345
+ delete jsonObj.maxLen;
346
+ delete jsonObj.unique;
347
+ delete jsonObj.scan;
348
+ delete jsonObj.readonlyTransLink;
349
+ }
350
+ // Select 绑定选项预设模板:--option-template(ID 或名称)。
351
+ // 浏览器抓包(2026-09-09):jsonObj 带 templateId+templateName+publicTemplate:false+options:[](选项不内联),
352
+ // 平台渲染时按模板拉选项。模板管理见 `form option-template`。
353
+ if (fieldType === 'Select' && cmdOpts.optionTemplate) {
354
+ // 先清 else 分支给文本类加的 junk + options 占位(模板字段不发选项)
355
+ delete jsonObj.maxLen;
356
+ delete jsonObj.unique;
357
+ delete jsonObj.scan;
358
+ delete jsonObj.readonlyTransLink;
359
+ const tplIdOrName = cmdOpts.optionTemplate;
360
+ // 解析模板:纯数字按 ID 直查详情;否则在 custom+system 列表按名称精确匹配
361
+ let tplId = '';
362
+ let tplName = '';
363
+ const readTpl = async (id) => {
364
+ const r = await client.post(`${baseUrl}/api/form/datasources/queryDataSourcesByTemplateValueKey`, { templateId: id });
365
+ return r?.formDataTemplate?.id ? r.formDataTemplate : null;
366
+ };
367
+ if (/^\d+$/.test(tplIdOrName)) {
368
+ const t = await readTpl(tplIdOrName);
369
+ if (!t)
370
+ throw new Error(`选项模板 ${tplIdOrName} 不存在`);
371
+ tplId = String(t.id);
372
+ tplName = String(t.name);
373
+ }
374
+ else {
375
+ for (const type of ['custom', 'system']) {
376
+ const list = await client.post(`${baseUrl}/api/form/datasources/queryDataList`, { pageNo: 1, pageSize: 100, name: tplIdOrName, type });
377
+ const hit = (list?.templatePage?.result || []).find((r) => r.name === tplIdOrName);
378
+ if (hit) {
379
+ tplId = String(hit.id);
380
+ tplName = String(hit.name);
381
+ break;
382
+ }
383
+ }
384
+ if (!tplId)
385
+ throw new Error(`未找到名为「${tplIdOrName}」的选项模板(custom+system 均已查)`);
386
+ }
387
+ Object.assign(jsonObj, {
388
+ hideScore: true,
389
+ optionBackgroundStyle: 'default',
390
+ options: [],
391
+ templateScore: {},
392
+ currentLevel: '1',
393
+ templateId: tplId,
394
+ templateName: tplName,
395
+ publicTemplate: false,
396
+ parentId: [],
397
+ });
398
+ if (cmdOpts.multiple) {
399
+ console.error('提示:模板下拉当前按单选(currentLevel=1)绑定;多选+模板组合未验证');
400
+ }
401
+ }
402
+ // 默认值 / 数据库字段名 / 描述:与 edit-field 共用同一套补丁规则。
403
+ // 放在最后 —— 前面各类型分支会写 content(如 TextArea 恒置 ''),先打补丁会被冲掉。
404
+ const patch = applyFieldPatches(jsonObj, {
405
+ defaultValue: cmdOpts.default,
406
+ dataKey: cmdOpts.dataKey,
407
+ columnName: cmdOpts.columnName,
408
+ desc: cmdOpts.desc,
409
+ });
410
+ if (patch.errors.length > 0) {
411
+ // 原实现在这里逐行 console.error 后 process.exit(1);变成抛出,由调用方统一打印。
412
+ // 文案与顺序保持不变(多行拼在一个 Error 里)。
413
+ throw new Error([...patch.errors.map((e) => ` ❌ ${e}`), ' 已中止,未做任何改动。'].join('\n'));
414
+ }
415
+ for (const w of patch.warnings)
416
+ console.error(` ⚠ ${w}`);
417
+ // 必填**只存在于布局 comp 里**(`config.required`)—— 字段记录没有这个键。所以下面那句
418
+ // 只是形式上的补齐,真正生效的是布局落点:增量插入的 `overrides.required`,
419
+ // 或 --reinit 时 configs 里那条 newFieldConfig。两处都写全了用户才看不出差别。
420
+ if (cmdOpts.required === true)
421
+ jsonObj.required = true;
422
+ // 字段标题在平台里存的是**多语言标签 id**(字段记录的 `labelObj.title`),不是文本本身。
423
+ // 不建标签也能显示(设计器退回读 `title`),但只要有谁引用了标签而这个标签不存在,
424
+ // 标题就会**静默变空** —— 平台既不校验也不报错。所以顺手建一个真的,不留自造 id 的口子。
425
+ // 建失败只告警:字段本身才是主操作,不该被标签服务拖垮。
426
+ try {
427
+ const titleLabelId = await createMultilangLabel(client, baseUrl, title || fieldName, 'ebuilderform');
428
+ jsonObj.labelObj = { ...(jsonObj.labelObj || {}), title: titleLabelId };
429
+ jsonObj.titleLabelId = titleLabelId;
430
+ }
431
+ catch (e) {
432
+ console.error(` ⚠ 标题的多语言标签未建立(字段不受影响,设计器会退回用 title 显示): ${e.message}`);
433
+ }
434
+ return jsonObj;
435
+ }
436
+ //# sourceMappingURL=form-field-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-field-build.js","sourceRoot":"","sources":["../../src/services/form-field-build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import type { ApiClient } from '../core/client.js';
2
+ /**
3
+ * 多物理表 —— 一个表单的字段分散在多张物理表上(字段数过多时的容量兜底)。
4
+ *
5
+ * 设计器里的落点是「字段管理 → **其他**」页签,与「主表」「明细表」并列。
6
+ *
7
+ * ## 与「明细表」是两根轴,别混
8
+ *
9
+ * | | 明细表(`form add-detail-table`) | **物理表(本文件)** |
10
+ * |---|---|---|
11
+ * | 建表端点 | `saveSubForm` | **`saveFormTable`** |
12
+ * | 标志 | `isSubForm: true` | **`isSubForm: false`** |
13
+ * | `tableType` | `MAIN` | **`SUBSIDIARY`** |
14
+ * | 语义 | 一对多业务建模 | 一个表单自己的字段拆到多张表 |
15
+ *
16
+ * ## ⚠ `id` 这个键在 `saveFormTable` 里是**表 id**
17
+ *
18
+ * 改名时传 `formTable.id` = 表记录 id;建档时不传,由平台分配。
19
+ * (对比:`batch/save/formField` 的 `formTableList[].id` 是 **formId**、`.formTableId` 才是表 id ——
20
+ * 那条路本 CLI 不再走,见下。)
21
+ *
22
+ * ## 往表里加字段**不在本文件**
23
+ *
24
+ * 加字段走 `form add-physical-field` → `services/form-field-build.ts`,机制是
25
+ * `saveFormFieldNew` + jsonObj 里的 `formTableId`。
26
+ *
27
+ * 曾经这里还有一条「建表时用 `batch/save/formField` + `formTableList` 连字段一起建、并靠改
28
+ * `formTableId` 搬字段」的路,**两个原因废弃**:
29
+ * 1. 改已有字段的 formTableId 被平台明确拒绝:`此字段不属于当前物理表,不能更改位置`
30
+ * 2. 那条路对形状不全的字段会**回 200 却静默不落库**(实测 DateTime / Attachment 等就中招)
31
+ *
32
+ * ## 抓包来源
33
+ *
34
+ * 2026-10-08,mulinquan app `1320953875231211521` / 表单 objId `1320953905305272320`,
35
+ * 以及自建临时表单上的实机验证(建表/改名/删表/加字段全通)。
36
+ */
37
+ export declare const FIELD_MANAGE = "/api/ebuilder/form/form/field/manage";
38
+ /** 附属物理表的 `tableType`。主物理表是 `MAIN`。 */
39
+ export declare const SUB_TABLE_TYPE = "SUBSIDIARY";
40
+ /** 一张物理表的标识。`formTableId` 是**表记录 id**,不是 formId。 */
41
+ export interface FormTableRef {
42
+ formTableId: string;
43
+ /** 显示名,设计器里那排 chip 上的字(如「物理表1」)。 */
44
+ name: string;
45
+ /** 数据库表名(如 `uf_ryxxb_6_1`)。 */
46
+ tableName: string;
47
+ }
48
+ interface Scope {
49
+ formId: string;
50
+ appId: string;
51
+ objId: string;
52
+ }
53
+ /** 建表 / 改名共用的报文。**带 `formTableId` 就是改名,不带就是新建。** */
54
+ export declare function buildSaveFormTablePayload(scope: Scope, table: {
55
+ name: string;
56
+ tableName: string;
57
+ formTableId?: string;
58
+ }): any;
59
+ /** 删表报文。`ids` 是**表 id** 的数组,不是 formId。 */
60
+ export declare function buildDeleteFormTablePayload(scope: Scope, formTableIds: string[]): any;
61
+ /**
62
+ * 从 `saveFormTable` 的响应里取新建/改名后的表 id。
63
+ *
64
+ * ⚠ **故意不认 `data.id` / `data.formTable.id`** —— 那个 `id` 在这个子系统里另有含义
65
+ * (在 `formTableList` 里它是 **formId**)。猜错不是报错,而是把字段**静默绑到别的表上**,
66
+ * 属于本项目明令避免的失败模式。只认键名明确叫 formTableId 的。
67
+ *
68
+ * 实机验证(2026-10-08,mulinquan 临时表单):建表/改名都返回
69
+ * `{"code":200,"msg":"接口返回成功","status":true,"data":{"formTableId":"..."},"fail":false}`
70
+ * 认不出来就返回空串,由调用方把原始响应打出来给人看。
71
+ */
72
+ export declare function extractFormTableId(response: any): string;
73
+ /** 读全量字段(扁平记录,含 `formTableId`)—— 用来回读确认字段到底落在哪张表上。 */
74
+ export declare function readFieldRecords(client: ApiClient, baseUrl: string, appId: string, scope: Scope): Promise<any[]>;
75
+ /** 一个表单的一张物理表。`formTableId` 是**表记录 id**(不是 formId)。 */
76
+ export interface PhysicalTable {
77
+ formTableId: string;
78
+ /** 显示名 —— 设计器「字段管理」那排 chip 上的字。主表的这幅名字就是表单名。 */
79
+ name: string;
80
+ tableName: string;
81
+ /** `MAIN`(主表)或 `SUBSIDIARY`(附属物理表)。 */
82
+ tableType: string;
83
+ /** 平台内置表(如系统业务表),一般不该动。 */
84
+ systemTable: boolean;
85
+ dataCount: number;
86
+ }
87
+ /**
88
+ * 列出一个表单的**全部物理表**(含主表)—— 就是设计器「字段管理」那排 chip 的数据源。
89
+ *
90
+ * ⚠ 响应里每条记录的 `id` 键是 **formId**、`formTableId` 才是表 id(本子系统里 `id` 反复是这个陷阱,
91
+ * 建表响应也一样)。只读 `formTableId`。
92
+ *
93
+ * 实机验证(2026-10-08,mulinquan 表单 `1323898521989193728`)返回三条:主表(MAIN) + 表1/表2(SUBSIDIARY),
94
+ * 显示名与建表时给的一致 —— 这条接口是「formTableId 建完只能靠记」那个缺口的补法。
95
+ */
96
+ export declare function listFormTables(client: ApiClient, baseUrl: string, appId: string, scope: Scope): Promise<PhysicalTable[]>;
97
+ /**
98
+ * `fieldId → 所在物理表`。`records` 来自 {@link readFieldRecords}(扁平记录,带 `formTableId`)。
99
+ *
100
+ * ⚠ 实测:**主表字段的记录里 `formTableId` 可能整个键都不在**(同一张主表上,走 `form create` 建的
101
+ * 字段没这个键、走 `saveFormFieldNew` 建的有)。附属表的字段则都带自己的表 id。
102
+ * 所以取不到 / 对不上任何一张已知表时**一律归主表** —— 平台不写就是「默认那张」,
103
+ * 比留空或编一个表名诚实。
104
+ */
105
+ export declare function mapFieldsToTables(records: any[], tables: PhysicalTable[]): Record<string, PhysicalTable>;
106
+ /** 建表(不传 formTableId)或改名(传 formTableId)。 */
107
+ export declare function saveFormTable(client: ApiClient, baseUrl: string, appId: string, scope: Scope, table: {
108
+ name: string;
109
+ tableName: string;
110
+ formTableId?: string;
111
+ }): Promise<any>;
112
+ /** 删表。 */
113
+ export declare function deleteFormTables(client: ApiClient, baseUrl: string, appId: string, scope: Scope, formTableIds: string[]): Promise<any>;
114
+ export {};
115
+ //# sourceMappingURL=form-physical-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-physical-table.d.ts","sourceRoot":"","sources":["../../src/services/form-physical-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,eAAO,MAAM,YAAY,yCAAyC,CAAC;AAEnE,uCAAuC;AACvC,eAAO,MAAM,cAAc,eAAe,CAAC;AAE3C,oDAAoD;AACpD,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oDAAoD;AACpD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/D,GAAG,CAcL;AAED,0CAA0C;AAC1C,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,GAAG,CAOrF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAUxD;AAED,sDAAsD;AACtD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAC9D,OAAO,CAAC,GAAG,EAAE,CAAC,CAahB;AAED,uDAAuD;AACvD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAC9D,OAAO,CAAC,aAAa,EAAE,CAAC,CAiB1B;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,GACtC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAY/B;AAED,4CAA4C;AAC5C,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAC/D,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/D,OAAO,CAAC,GAAG,CAAC,CAMd;AAED,UAAU;AACV,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,GACtF,OAAO,CAAC,GAAG,CAAC,CAMd"}