weaver-e10-builder 1.5.6 → 1.5.9
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.
- package/dist/commands/actionflow.d.ts.map +1 -1
- package/dist/commands/actionflow.js +6 -0
- package/dist/commands/actionflow.js.map +1 -1
- package/dist/commands/app.d.ts.map +1 -1
- package/dist/commands/app.js +259 -0
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/form-add-detail-table.d.ts.map +1 -1
- package/dist/commands/form-add-detail-table.js +13 -2
- package/dist/commands/form-add-detail-table.js.map +1 -1
- package/dist/commands/form-button.d.ts.map +1 -1
- package/dist/commands/form-button.js +6 -4
- package/dist/commands/form-button.js.map +1 -1
- package/dist/commands/form-formula-linkage.d.ts.map +1 -1
- package/dist/commands/form-formula-linkage.js +4 -4
- package/dist/commands/form-formula-linkage.js.map +1 -1
- package/dist/commands/form-list-filter.d.ts +3 -0
- package/dist/commands/form-list-filter.d.ts.map +1 -1
- package/dist/commands/form-list-filter.js +88 -24
- package/dist/commands/form-list-filter.js.map +1 -1
- package/dist/commands/form-list-search-group.d.ts.map +1 -1
- package/dist/commands/form-list-search-group.js +54 -64
- package/dist/commands/form-list-search-group.js.map +1 -1
- package/dist/commands/form-list-stats.d.ts.map +1 -1
- package/dist/commands/form-list-stats.js +29 -4
- package/dist/commands/form-list-stats.js.map +1 -1
- package/dist/commands/form-list-utils.d.ts +46 -1
- package/dist/commands/form-list-utils.d.ts.map +1 -1
- package/dist/commands/form-list-utils.js +140 -47
- package/dist/commands/form-list-utils.js.map +1 -1
- package/dist/commands/form-list.d.ts.map +1 -1
- package/dist/commands/form-list.js +141 -71
- package/dist/commands/form-list.js.map +1 -1
- package/dist/commands/form-message.d.ts +3 -0
- package/dist/commands/form-message.d.ts.map +1 -0
- package/dist/commands/form-message.js +341 -0
- package/dist/commands/form-message.js.map +1 -0
- package/dist/commands/form-view.d.ts.map +1 -1
- package/dist/commands/form-view.js +31 -4
- package/dist/commands/form-view.js.map +1 -1
- package/dist/commands/form.js +1 -1
- package/dist/commands/form.js.map +1 -1
- package/dist/commands/matrix.d.ts.map +1 -1
- package/dist/commands/matrix.js +80 -42
- package/dist/commands/matrix.js.map +1 -1
- package/dist/commands/org.d.ts.map +1 -1
- package/dist/commands/org.js +61 -0
- package/dist/commands/org.js.map +1 -1
- package/dist/commands/role.d.ts.map +1 -1
- package/dist/commands/role.js +69 -9
- package/dist/commands/role.js.map +1 -1
- package/dist/commands/wf-form.d.ts.map +1 -1
- package/dist/commands/wf-form.js +5 -5
- package/dist/commands/wf-form.js.map +1 -1
- package/dist/commands/workflow-node-validate.d.ts.map +1 -1
- package/dist/commands/workflow-node-validate.js +159 -15
- package/dist/commands/workflow-node-validate.js.map +1 -1
- package/dist/core/crypto.d.ts +19 -0
- package/dist/core/crypto.d.ts.map +1 -1
- package/dist/core/crypto.js +70 -35
- package/dist/core/crypto.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.js +3 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
- package/dist/services/actionflow/components/custom_trigger.d.ts.map +1 -1
- package/dist/services/actionflow/components/custom_trigger.js +2 -0
- package/dist/services/actionflow/components/custom_trigger.js.map +1 -1
- package/dist/services/actionflow/components/event_button.d.ts.map +1 -1
- package/dist/services/actionflow/components/event_button.js +2 -0
- package/dist/services/actionflow/components/event_button.js.map +1 -1
- package/dist/services/actionflow/components/event_form_data.d.ts.map +1 -1
- package/dist/services/actionflow/components/event_form_data.js +2 -0
- package/dist/services/actionflow/components/event_form_data.js.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.d.ts +23 -0
- package/dist/services/actionflow/components/form_data_builder.d.ts.map +1 -0
- package/dist/services/actionflow/components/form_data_builder.js +106 -0
- package/dist/services/actionflow/components/form_data_builder.js.map +1 -0
- package/dist/services/actionflow/components/hrm_actions.d.ts +1 -0
- package/dist/services/actionflow/components/hrm_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/hrm_actions.js +136 -44
- package/dist/services/actionflow/components/hrm_actions.js.map +1 -1
- package/dist/services/actionflow/components/inner_mq_listener.d.ts.map +1 -1
- package/dist/services/actionflow/components/inner_mq_listener.js +2 -0
- package/dist/services/actionflow/components/inner_mq_listener.js.map +1 -1
- package/dist/services/actionflow/components/webhook_trigger.d.ts.map +1 -1
- package/dist/services/actionflow/components/webhook_trigger.js +6 -5
- package/dist/services/actionflow/components/webhook_trigger.js.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.js +6 -3
- package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
- package/dist/services/actionflow/context_preflight.d.ts +3 -3
- package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
- package/dist/services/actionflow/context_preflight.js +45 -24
- package/dist/services/actionflow/context_preflight.js.map +1 -1
- package/dist/services/actionflow/context_provider.d.ts +7 -0
- package/dist/services/actionflow/context_provider.d.ts.map +1 -1
- package/dist/services/actionflow/context_provider.js +13 -1
- package/dist/services/actionflow/context_provider.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts +16 -1
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +414 -63
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/hrm_source.d.ts +2 -0
- package/dist/services/actionflow/hrm_source.d.ts.map +1 -1
- package/dist/services/actionflow/hrm_source.js +4 -0
- package/dist/services/actionflow/hrm_source.js.map +1 -1
- package/dist/services/actionflow/param_group_dto.d.ts.map +1 -1
- package/dist/services/actionflow/param_group_dto.js +17 -3
- package/dist/services/actionflow/param_group_dto.js.map +1 -1
- package/dist/services/actionflow/param_type.d.ts +14 -0
- package/dist/services/actionflow/param_type.d.ts.map +1 -0
- package/dist/services/actionflow/param_type.js +69 -0
- package/dist/services/actionflow/param_type.js.map +1 -0
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +121 -41
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +83 -50
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/app-publish.d.ts +227 -0
- package/dist/services/app-publish.d.ts.map +1 -0
- package/dist/services/app-publish.js +403 -0
- package/dist/services/app-publish.js.map +1 -0
- package/dist/services/form-button-position.d.ts.map +1 -1
- package/dist/services/form-button-position.js +7 -1
- package/dist/services/form-button-position.js.map +1 -1
- package/dist/services/form-field-drop.d.ts.map +1 -1
- package/dist/services/form-field-drop.js +7 -0
- package/dist/services/form-field-drop.js.map +1 -1
- package/dist/services/form-formula-linkage.d.ts +24 -3
- package/dist/services/form-formula-linkage.d.ts.map +1 -1
- package/dist/services/form-formula-linkage.js +24 -5
- package/dist/services/form-formula-linkage.js.map +1 -1
- package/dist/services/form-layout-insert.js +1 -1
- package/dist/services/form-layout-insert.js.map +1 -1
- package/dist/services/form-list-search-group.d.ts +89 -0
- package/dist/services/form-list-search-group.d.ts.map +1 -0
- package/dist/services/form-list-search-group.js +260 -0
- package/dist/services/form-list-search-group.js.map +1 -0
- package/dist/services/form-list-search.d.ts +110 -0
- package/dist/services/form-list-search.d.ts.map +1 -0
- package/dist/services/form-list-search.js +231 -0
- package/dist/services/form-list-search.js.map +1 -0
- package/dist/services/form-list-stats.d.ts +21 -1
- package/dist/services/form-list-stats.d.ts.map +1 -1
- package/dist/services/form-list-stats.js +86 -12
- package/dist/services/form-list-stats.js.map +1 -1
- package/dist/services/form-message.d.ts +273 -0
- package/dist/services/form-message.d.ts.map +1 -0
- package/dist/services/form-message.js +575 -0
- package/dist/services/form-message.js.map +1 -0
- package/dist/services/form-sub-detail.d.ts.map +1 -1
- package/dist/services/form-sub-detail.js +5 -1
- package/dist/services/form-sub-detail.js.map +1 -1
- package/dist/services/form-view.d.ts +34 -2
- package/dist/services/form-view.d.ts.map +1 -1
- package/dist/services/form-view.js +74 -8
- package/dist/services/form-view.js.map +1 -1
- package/dist/services/matrix-fields.d.ts +42 -0
- package/dist/services/matrix-fields.d.ts.map +1 -0
- package/dist/services/matrix-fields.js +102 -0
- package/dist/services/matrix-fields.js.map +1 -0
- package/dist/services/org-browser.d.ts +60 -0
- package/dist/services/org-browser.d.ts.map +1 -0
- package/dist/services/org-browser.js +62 -0
- package/dist/services/org-browser.js.map +1 -0
- package/dist/services/quick-date-range.d.ts +22 -0
- package/dist/services/quick-date-range.d.ts.map +1 -0
- package/dist/services/quick-date-range.js +134 -0
- package/dist/services/quick-date-range.js.map +1 -0
- package/dist/services/role-member.d.ts +73 -2
- package/dist/services/role-member.d.ts.map +1 -1
- package/dist/services/role-member.js +141 -9
- package/dist/services/role-member.js.map +1 -1
- package/package.json +1 -1
- package/skill-docs/SKILL.md +20 -21
- package/skill-docs/_catalog.md +90 -86
- package/skill-docs/actionflows/SKILL.md +2 -1
- package/skill-docs/actionflows/references/components/message/InnerMQSend.md +6 -0
- package/skill-docs/actionflows/references/components/personnel/HrmEmployeeUpdate.md +3 -1
- package/skill-docs/actionflows/references/components/personnel/PersonnelAlterType.md +38 -0
- package/skill-docs/actionflows/references/components/personnel/PersonnelOnboarding.md +36 -34
- package/skill-docs/actionflows/references/components/trigger/WebHookTrigger.md +4 -2
- package/skill-docs/references/app/guide-app-publish.md +92 -0
- package/skill-docs/references/common/guide-plan-template.md +150 -246
- package/skill-docs/references/common/map.md +153 -0
- package/skill-docs/references/common/ref-cli-commands.md +28 -8
- package/skill-docs/references/form/guide-form-message.md +57 -0
- package/skill-docs/references/form/guide-form-view.md +7 -2
- package/skill-docs/references/form/guide-formula-linkage.md +1 -1
- package/skill-docs/references/form/guide-list-stats.md +55 -2
- package/skill-docs/references/hrm/guide-matrix.md +30 -2
- package/skill-docs/references/workflow/guide-workflow.md +20 -2
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
import { genSfId, normalizeNumericFrontId } from './id_generator.js';
|
|
7
7
|
import fs from 'node:fs';
|
|
8
8
|
import { get, getCompiler, getNodePost } from './components/index.js';
|
|
9
|
+
import { buildEsbFormDataDto, buildEsbFormField } from './components/form_data_builder.js';
|
|
9
10
|
import { findInMetadata, getTargetFormFields, getWorkflowDetailNames, getTargetDetailFields, getWorkflowDetailFields, getWorkflowFieldIds, workflowFieldId, getWorkflowContextFields, getWorkflowContextFieldsByKey } from './runtime_metadata.js';
|
|
10
|
-
import { buildPersonFormula,
|
|
11
|
+
import { buildPersonFormula, buildAssignBean, attachEsbAssign, resolveEnumConstant, resolveParamKey, resolveSourceFieldLabel, resolveSourceFieldType, normalizeConstantAssignment, lookupTargetFieldMeta, formulaFixedForAssignSwitch, formulaSystemVar, formulaContext, assignFlatContextDirect, getFormulaFn, formulaFunction, contextRootForComponent, contextTableNameForRoot, normalizeContextParamKey, resolveFormSettingBasisParentName, contextMetaForReference, resolvedContextRoot, protocolParamKey, } from './formula_service.js';
|
|
11
12
|
import { buildFormulaReference, buildUpdateFieldCondition } from './components/action_eb_update_compiler.js';
|
|
12
13
|
import { resolveCustomTriggerDtoId } from './custom_trigger_context.js';
|
|
13
14
|
import { resolveSystemParameter, isDateSystemParameter } from './system_params.js';
|
|
@@ -349,7 +350,10 @@ function handleSpecial(draftKey, special, val, result, meta, appId, idx, eventId
|
|
|
349
350
|
function handleBasisValue(val, result, meta, appId, eventId) {
|
|
350
351
|
if (!val || typeof val !== 'object')
|
|
351
352
|
return;
|
|
352
|
-
|
|
353
|
+
const resolved = val._resolvedContext && typeof val._resolvedContext === 'object' ? val._resolvedContext : {};
|
|
354
|
+
const sourceComponent = String(resolved.componentType || meta?._context_component_type || meta?._upstream_component_type || 'ApproveTrigger');
|
|
355
|
+
const sourceMeta = contextMetaForReference(meta, val, sourceComponent);
|
|
356
|
+
let bvKey = String(val.paramKey || val.key || val.value || resolved.paramKey || '').trim();
|
|
353
357
|
let bvLabel = String(val.label || val.name || '');
|
|
354
358
|
// 明细表依据值 paramKey 必须带 [](早期正确产物 FormData.{wfId}.{明细表id}[])。
|
|
355
359
|
// plan 允许省略 [],编译器检测上下文存在数组版本时自动补齐(真机验证 2026-08-19:漏 [] 前端定位不到明细表标红)。
|
|
@@ -360,6 +364,8 @@ function handleBasisValue(val, result, meta, appId, eventId) {
|
|
|
360
364
|
if (keyIndex[arrKey] && !keyIndex[bvKey])
|
|
361
365
|
bvKey = arrKey;
|
|
362
366
|
}
|
|
367
|
+
const basisRoot = resolvedContextRoot(resolved, sourceComponent, sourceComponent === 'CustomTrigger' ? contextRootForComponent('CustomTrigger') : 'FormData');
|
|
368
|
+
bvKey = protocolParamKey(sourceComponent === 'CustomTrigger' ? normalizeContextParamKey(bvKey, sourceComponent) : bvKey, basisRoot, sourceComponent);
|
|
363
369
|
if (bvKey) {
|
|
364
370
|
const idx = bvKey.lastIndexOf('.');
|
|
365
371
|
const bkHead = idx >= 0 ? bvKey.slice(0, idx) : '';
|
|
@@ -378,21 +384,28 @@ function handleBasisValue(val, result, meta, appId, eventId) {
|
|
|
378
384
|
const fBiz = genSfId();
|
|
379
385
|
const srcId = eventId || String(meta?._upstream_node_id || '');
|
|
380
386
|
const wnBv = String(meta?._upstream_workflow_name || '');
|
|
381
|
-
const
|
|
382
|
-
const
|
|
387
|
+
const resolvedParentName = String(resolved.parentName || '').replace(/^(?:FormData|ApprovalData|SelectParams)\./, '');
|
|
388
|
+
const bvParent = resolvedParentName || (wnBv ? `${wnBv}.${bvLabel}[]` : `${bvLabel}[]`);
|
|
389
|
+
const bvfType = String(resolved.fieldType || resolveSourceFieldType(bvKey, sourceMeta));
|
|
390
|
+
const basisPath = `${basisRoot}.${bvKey}`;
|
|
391
|
+
const explicitId = String(resolved.fieldId || val.frontId || val.fieldId || '').trim();
|
|
392
|
+
const legacyId = /^\d+$/.test(tail) ? tail : bvKey;
|
|
393
|
+
const basisId = sourceComponent === 'CustomTrigger'
|
|
394
|
+
? resolveCustomTriggerDtoId(bvKey, meta?._custom_trigger_data, String(resolved.dimension || 'table'))
|
|
395
|
+
: (sourceComponent === 'WebHookTrigger' && /^\d+$/.test(explicitId) ? explicitId : legacyId);
|
|
383
396
|
const bvfConfig = {
|
|
384
|
-
paramKey: bvKey, isMultCom:
|
|
385
|
-
fieldInfo: { paramKey: bvKey, tablePrimaryKey:
|
|
386
|
-
tableName:
|
|
397
|
+
paramKey: bvKey, isMultCom: Boolean(resolved.isMultCom), comType: sourceComponent, switchType: 'assign', parentComId: 0, formulaVersion: 'V1',
|
|
398
|
+
fieldInfo: { paramKey: bvKey, tablePrimaryKey: basisRoot },
|
|
399
|
+
tableName: String(resolved.tableName || contextTableNameForRoot(basisRoot)), paramType: bvfType, parentName: bvParent, multName: '', multKey: '',
|
|
387
400
|
multTypeObj: {
|
|
388
401
|
allName: bvParent, currentName: bvParent,
|
|
389
|
-
currentParamKey:
|
|
402
|
+
currentParamKey: basisPath, allParamKey: basisPath,
|
|
390
403
|
},
|
|
391
404
|
comId: srcId, newParentName: bvParent,
|
|
392
405
|
};
|
|
393
406
|
const bvf = {
|
|
394
|
-
frontId: normalizeNumericFrontId(
|
|
395
|
-
source: srcId, type: '3', value:
|
|
407
|
+
frontId: normalizeNumericFrontId(basisId, '依据值 FormulaBean.frontId'), formulaType: bvfType, name: bvLabel, businessId: fBiz, id: fId,
|
|
408
|
+
source: srcId, type: '3', value: basisPath, childs: [], config: bvfConfig, parentId: '0',
|
|
396
409
|
};
|
|
397
410
|
// 依据值公式同样需要 esbAssign.wId 指向当前数据动作节点(设计器动态赋值定位用)。
|
|
398
411
|
attachEsbAssign(bvf, meta, srcId);
|
|
@@ -443,7 +456,7 @@ export function fillSetting(result, updates, mapping, constants, formula, meta,
|
|
|
443
456
|
const sourceType = field.type ?? '';
|
|
444
457
|
fieldType = { String: 'Text', string: 'Text', Number: 'NumberComponent', number: 'NumberComponent' }[sourceType] ?? (sourceType || 'Text');
|
|
445
458
|
}
|
|
446
|
-
main[String(fid)] =
|
|
459
|
+
main[String(fid)] = buildEsbFormField(String(fid), u, fieldType, meta, appId, String(eventId), 'OPERATE_EQUAL', componentType, false, assignmentMode);
|
|
447
460
|
}
|
|
448
461
|
}
|
|
449
462
|
if (mapping && typeof mapping === 'object' && !Array.isArray(mapping)) {
|
|
@@ -456,7 +469,7 @@ export function fillSetting(result, updates, mapping, constants, formula, meta,
|
|
|
456
469
|
const tfid = String(targetFieldId.target || '');
|
|
457
470
|
if (!tfid)
|
|
458
471
|
throw new Error(`mapping 系统变量值缺少目标字段 id: 应传 {'target':'<目标字段id>', 'systemValue':'currentUser'}`);
|
|
459
|
-
main[tfid] =
|
|
472
|
+
main[tfid] = buildEsbFormField(tfid, { kind: 'system_variable', key: svKey }, 'Text', meta, appId, String(eventId), 'OPERATE_EQUAL', componentType, false, assignmentMode);
|
|
460
473
|
continue;
|
|
461
474
|
}
|
|
462
475
|
const declaredKind = String(targetFieldId.kind || targetFieldId.assignmentKind || 'context');
|
|
@@ -489,6 +502,19 @@ export function fillSetting(result, updates, mapping, constants, formula, meta,
|
|
|
489
502
|
if (targetFieldId[key] !== undefined)
|
|
490
503
|
assignment[key] = targetFieldId[key];
|
|
491
504
|
}
|
|
505
|
+
// 参数设置组件的字段身份来自用户实际选中的 ParamBean。
|
|
506
|
+
// 预检会把该行的真实 id 写入 _resolvedContext.fieldId;映射编译时
|
|
507
|
+
// 必须把这个 id 继续带到 FormulaBean.frontId,不能让
|
|
508
|
+
// assignFlatContextDirect 退回 paramKey/paramName 尾段。
|
|
509
|
+
const selectedParamId = targetFieldId._resolvedContext?.fieldId
|
|
510
|
+
|| targetFieldId.frontId
|
|
511
|
+
|| targetFieldId.fieldId;
|
|
512
|
+
if (selectedParamId !== undefined && selectedParamId !== null && String(selectedParamId).trim() !== '') {
|
|
513
|
+
assignment.frontId = String(selectedParamId);
|
|
514
|
+
}
|
|
515
|
+
if (targetFieldId._resolvedContext && typeof targetFieldId._resolvedContext === 'object') {
|
|
516
|
+
assignment._resolvedContext = { ...targetFieldId._resolvedContext };
|
|
517
|
+
}
|
|
492
518
|
if (targetFieldId.source !== undefined)
|
|
493
519
|
assignment.source = targetFieldId.source;
|
|
494
520
|
if (targetFieldId.comId !== undefined)
|
|
@@ -512,7 +538,7 @@ export function fillSetting(result, updates, mapping, constants, formula, meta,
|
|
|
512
538
|
const srcFt = resolveSourceFieldType(srcParamKey, meta);
|
|
513
539
|
const targetMeta = lookupTargetFieldMeta(raw, result);
|
|
514
540
|
const targetFt = String(targetMeta?.componentKey || targetMeta?.type || srcFt || 'Text');
|
|
515
|
-
main[raw] =
|
|
541
|
+
main[raw] = buildEsbFormField(raw, assignment, targetFt, meta, appId, String(eventId), operate, componentType, false, assignmentMode);
|
|
516
542
|
}
|
|
517
543
|
else {
|
|
518
544
|
let raw = String(targetFieldId);
|
|
@@ -530,7 +556,7 @@ export function fillSetting(result, updates, mapping, constants, formula, meta,
|
|
|
530
556
|
const srcFt = resolveSourceFieldType(refKey, meta);
|
|
531
557
|
const targetMeta = lookupTargetFieldMeta(raw, result);
|
|
532
558
|
const targetFt = String(targetMeta?.componentKey || targetMeta?.type || srcFt || 'Text');
|
|
533
|
-
main[raw] =
|
|
559
|
+
main[raw] = buildEsbFormField(raw, assignment, targetFt, meta, appId, String(eventId), operate, componentType, false, assignmentMode);
|
|
534
560
|
}
|
|
535
561
|
}
|
|
536
562
|
}
|
|
@@ -549,7 +575,7 @@ export function fillSetting(result, updates, mapping, constants, formula, meta,
|
|
|
549
575
|
// 固定枚举值的外层 fieldType 必须是目标组件类型(例如 Select),
|
|
550
576
|
// 与手工保存 JSON 一致;使用默认 Text 会导致设计器下拉回显为空。
|
|
551
577
|
const targetFieldType = String(fieldMeta?.componentKey || fieldMeta?.type || ft);
|
|
552
|
-
main[tfid] =
|
|
578
|
+
main[tfid] = buildEsbFormField(tfid, assignment, targetFieldType, meta, appId, String(eventId), operateC, componentType, false, assignmentMode);
|
|
553
579
|
}
|
|
554
580
|
}
|
|
555
581
|
if (formula && typeof formula === 'object' && !Array.isArray(formula)) {
|
|
@@ -560,7 +586,7 @@ export function fillSetting(result, updates, mapping, constants, formula, meta,
|
|
|
560
586
|
if (String(fspec.kind || '') === 'function') {
|
|
561
587
|
const fieldMeta = lookupTargetFieldMeta(String(targetFieldId), result);
|
|
562
588
|
const targetFieldType = String(fieldMeta?.componentKey || fieldMeta?.type || fspec.resultType || 'Number');
|
|
563
|
-
main[String(targetFieldId)] =
|
|
589
|
+
main[String(targetFieldId)] = buildEsbFormField(String(targetFieldId), fspec, targetFieldType, meta, appId, String(eventId), 'OPERATE_EQUAL', componentType, false, assignmentMode);
|
|
564
590
|
continue;
|
|
565
591
|
}
|
|
566
592
|
const op = fspec.op || 'add';
|
|
@@ -609,15 +635,11 @@ export function fillSetting(result, updates, mapping, constants, formula, meta,
|
|
|
609
635
|
main[fidS] = { formFieldKey: '', value: { original: false, operate: 'OPERATE_EQUAL', fieldKey: fidS, multiSelect: false } };
|
|
610
636
|
}
|
|
611
637
|
}
|
|
612
|
-
result.setting = {
|
|
638
|
+
result.setting = buildEsbFormDataDto(main, [], {
|
|
613
639
|
opType: result.opType ?? 'insert',
|
|
614
640
|
updatePolicy: result.updatePolicy ?? 'ALL',
|
|
615
|
-
dataDrWithCalc: false,
|
|
616
|
-
main,
|
|
617
|
-
detail: [],
|
|
618
|
-
deleteMainFields: [],
|
|
619
641
|
updateFieldCondition: { updateField: [] },
|
|
620
|
-
};
|
|
642
|
+
});
|
|
621
643
|
}
|
|
622
644
|
// ── filter 筛选条件树 ───────────────────────────────────────
|
|
623
645
|
function isFilterGroup(value) {
|
|
@@ -1313,12 +1335,15 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1313
1335
|
// 明细项依据值:引用整个明细表,source=event 节点 id, frontId=明细表 id。
|
|
1314
1336
|
if (item.basisValue && typeof item.basisValue === 'object') {
|
|
1315
1337
|
const bvVal = item.basisValue;
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
const
|
|
1319
|
-
const
|
|
1320
|
-
|
|
1321
|
-
|
|
1338
|
+
const resolved = bvVal._resolvedContext && typeof bvVal._resolvedContext === 'object'
|
|
1339
|
+
? bvVal._resolvedContext : {};
|
|
1340
|
+
const sourceComponent = String(resolved.componentType || meta?._context_component_type || meta?._upstream_component_type || 'ApproveTrigger');
|
|
1341
|
+
const sourceMeta = contextMetaForReference(meta, bvVal, sourceComponent);
|
|
1342
|
+
let bvKey = String(bvVal.paramKey || bvVal.key || resolved.paramKey || '').trim();
|
|
1343
|
+
const isCustomTriggerSource = sourceComponent === 'CustomTrigger';
|
|
1344
|
+
const basisContextRoot = resolvedContextRoot(resolved, sourceComponent, isCustomTriggerSource ? contextRootForComponent('CustomTrigger') : 'FormData');
|
|
1345
|
+
const basisTableName = String(resolved.tableName || contextTableNameForRoot(basisContextRoot));
|
|
1346
|
+
bvKey = protocolParamKey(isCustomTriggerSource ? normalizeContextParamKey(bvKey, 'CustomTrigger') : bvKey, basisContextRoot, sourceComponent);
|
|
1322
1347
|
if (bvKey && !bvKey.includes('[]')) {
|
|
1323
1348
|
const wfId = String(meta?._workflow_id || '');
|
|
1324
1349
|
const keyIndex = wfId ? getWorkflowContextFieldsByKey()[wfId] || {} : {};
|
|
@@ -1328,18 +1353,13 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1328
1353
|
}
|
|
1329
1354
|
const bvLabel = String(bvVal.label || bvVal.name || bvKey);
|
|
1330
1355
|
if (bvKey) {
|
|
1331
|
-
const bvType = resolveSourceFieldType(bvKey,
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
prefix = String(meta._upstream_workflow_name || '');
|
|
1335
|
-
if (!prefix)
|
|
1336
|
-
prefix = String(meta._upstream_form_name || '');
|
|
1337
|
-
}
|
|
1338
|
-
const parentName = prefix ? `${prefix}.${bvLabel}[]` : `${bvLabel}[]`;
|
|
1356
|
+
const bvType = String(resolved.fieldType || resolveSourceFieldType(bvKey, sourceMeta));
|
|
1357
|
+
const resolvedParentName = String(resolved.parentName || '').replace(/^(?:FormData|ApprovalData|SelectParams)\./, '');
|
|
1358
|
+
const parentName = resolvedParentName || resolveFormSettingBasisParentName(bvKey, bvLabel, sourceMeta);
|
|
1339
1359
|
// CustomTrigger 的明细依据值也是表维度上下文,frontId 必须取
|
|
1340
1360
|
// CustFormTableDto.id,不能把 detail1 这类 paramKey 尾段直接当成 ID。
|
|
1341
1361
|
const customTriggerTableId = isCustomTriggerSource
|
|
1342
|
-
? resolveCustomTriggerDtoId(bvKey, meta?._custom_trigger_data, 'table')
|
|
1362
|
+
? resolveCustomTriggerDtoId(bvKey, meta?._custom_trigger_data, String(resolved.dimension || 'table'))
|
|
1343
1363
|
: '';
|
|
1344
1364
|
const legacyBvSubformId = bvKey.includes('[]')
|
|
1345
1365
|
? bvKey.split('[]')[0].includes('.')
|
|
@@ -1348,7 +1368,20 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1348
1368
|
: bvKey;
|
|
1349
1369
|
// CustomTrigger 无法定位 DTO 表对象时按统一规则留空;不能回退到
|
|
1350
1370
|
// detail1 这类业务 paramKey,否则既不是真实 ID,也会触发数字校验。
|
|
1351
|
-
|
|
1371
|
+
// WebHook 的明细依据值来自 ParamGroupSettingBean 的父参数行。
|
|
1372
|
+
// 这里必须使用该行的真实 id;不能把 detailOne/detailTwo 这种
|
|
1373
|
+
// paramKey 尾段误当作 FormulaBean.frontId。
|
|
1374
|
+
const explicitBasisId = String(resolved.fieldId
|
|
1375
|
+
|| bvVal.frontId
|
|
1376
|
+
|| bvVal.fieldId
|
|
1377
|
+
|| '').trim();
|
|
1378
|
+
const isWebhookSource = sourceComponent === 'WebHookTrigger';
|
|
1379
|
+
const bvSubformId = isCustomTriggerSource
|
|
1380
|
+
? customTriggerTableId
|
|
1381
|
+
: isWebhookSource && /^\d+$/.test(explicitBasisId)
|
|
1382
|
+
? explicitBasisId
|
|
1383
|
+
: legacyBvSubformId;
|
|
1384
|
+
const basisValuePath = `${basisContextRoot}.${bvKey}`;
|
|
1352
1385
|
ele.basisValue = {
|
|
1353
1386
|
frontId: normalizeNumericFrontId(bvSubformId, '明细依据值 FormulaBean.frontId'),
|
|
1354
1387
|
formulaType: bvType,
|
|
@@ -1357,7 +1390,7 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1357
1390
|
id: genSfId(),
|
|
1358
1391
|
source: String(eventId),
|
|
1359
1392
|
type: '3',
|
|
1360
|
-
value:
|
|
1393
|
+
value: basisValuePath,
|
|
1361
1394
|
childs: [],
|
|
1362
1395
|
config: {
|
|
1363
1396
|
paramKey: bvKey,
|
|
@@ -1369,10 +1402,10 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1369
1402
|
multKey: '',
|
|
1370
1403
|
multTypeObj: {
|
|
1371
1404
|
allName: parentName, currentName: parentName,
|
|
1372
|
-
currentParamKey:
|
|
1405
|
+
currentParamKey: basisValuePath, allParamKey: basisValuePath,
|
|
1373
1406
|
},
|
|
1374
1407
|
comId: String(eventId),
|
|
1375
|
-
comType:
|
|
1408
|
+
comType: sourceComponent,
|
|
1376
1409
|
newParentName: parentName,
|
|
1377
1410
|
tableName: basisTableName,
|
|
1378
1411
|
fieldInfo: { paramKey: bvKey, tablePrimaryKey: basisContextRoot },
|
|
@@ -1416,7 +1449,7 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1416
1449
|
assignment.detailLabel = refDetail;
|
|
1417
1450
|
const targetMeta = targetDetailFields[raw] || {};
|
|
1418
1451
|
const targetType = String(targetMeta.componentKey || targetMeta.type || 'Text');
|
|
1419
|
-
eleData[raw] =
|
|
1452
|
+
eleData[raw] = buildEsbFormField(raw, assignment, targetType, meta, appId, eventId, operate, nodeType, true, '');
|
|
1420
1453
|
}
|
|
1421
1454
|
else {
|
|
1422
1455
|
let raw = String(targetFieldId);
|
|
@@ -1431,7 +1464,7 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1431
1464
|
assignment = { kind: 'context', paramKey: String(sourceKey), label: resolveSourceFieldLabel(String(sourceKey), meta, String(sourceKey)) };
|
|
1432
1465
|
const targetMeta = targetDetailFields[raw] || {};
|
|
1433
1466
|
const targetType = String(targetMeta.componentKey || targetMeta.type || 'Text');
|
|
1434
|
-
eleData[raw] =
|
|
1467
|
+
eleData[raw] = buildEsbFormField(raw, assignment, targetType, meta, appId, eventId, operate, nodeType, true, '');
|
|
1435
1468
|
}
|
|
1436
1469
|
}
|
|
1437
1470
|
}
|
|
@@ -1442,7 +1475,7 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1442
1475
|
const value = resolveEnumConstant(valueRaw, targetMeta);
|
|
1443
1476
|
const [assignment, ft] = normalizeConstantAssignment(value, 'Text');
|
|
1444
1477
|
const targetType = String(targetMeta.componentKey || targetMeta.type || ft);
|
|
1445
|
-
eleData[targetFieldId] =
|
|
1478
|
+
eleData[targetFieldId] = buildEsbFormField(targetFieldId, assignment, targetType, meta, appId, eventId, 'OPERATE_EQUAL', nodeType, true, '');
|
|
1446
1479
|
}
|
|
1447
1480
|
}
|
|
1448
1481
|
const formula = item.formula || {};
|
|
@@ -1456,7 +1489,7 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1456
1489
|
continue;
|
|
1457
1490
|
const targetMeta = targetDetailFields[String(targetFieldId)] || {};
|
|
1458
1491
|
const targetType = String(targetMeta.componentKey || targetMeta.type || formulaSpec.resultType || 'Text');
|
|
1459
|
-
eleData[String(targetFieldId)] =
|
|
1492
|
+
eleData[String(targetFieldId)] = buildEsbFormField(String(targetFieldId), formulaSpec, targetType, meta, appId, eventId, 'OPERATE_EQUAL', nodeType, true, '');
|
|
1460
1493
|
}
|
|
1461
1494
|
}
|
|
1462
1495
|
// detail 自动按名补全
|
|
@@ -1512,7 +1545,7 @@ export function autoFillDetailMapping(eleData, item, targetFormId, meta, appId,
|
|
|
1512
1545
|
const assignment = { kind: 'context', paramKey: srcPk, label: tname };
|
|
1513
1546
|
if (bvLabel)
|
|
1514
1547
|
assignment.detailLabel = bvLabel;
|
|
1515
|
-
eleData[tidS] =
|
|
1548
|
+
eleData[tidS] = buildEsbFormField(tidS, assignment, String(tmeta.componentKey || tmeta.type || 'Text'), meta, appId, eventId, 'OPERATE_EQUAL', nodeType, true, '');
|
|
1516
1549
|
}
|
|
1517
1550
|
}
|
|
1518
1551
|
// ── convert_node ────────────────────────────────────────────
|
|
@@ -1567,7 +1600,7 @@ export function convertNode(draftAction, isEvent = false, meta = null, appId = '
|
|
|
1567
1600
|
delete nodeData.setting;
|
|
1568
1601
|
const main = (setting || {}).main || {};
|
|
1569
1602
|
const detailOut = (setting || {}).detail || [];
|
|
1570
|
-
nodeData.formData =
|
|
1603
|
+
nodeData.formData = buildEsbFormDataDto(main, detailOut);
|
|
1571
1604
|
// ApproveCreateDTO 没有使用 fields;目标字段仅用于编译 mapping,不能写入保存 DTO。
|
|
1572
1605
|
if (nodeType !== 'ApproveCreate') {
|
|
1573
1606
|
const fieldsMetaKey = String(formDataPayload.fieldsMetaKey || '_bizFields');
|
|
@@ -1588,7 +1621,7 @@ export function convertNode(draftAction, isEvent = false, meta = null, appId = '
|
|
|
1588
1621
|
}
|
|
1589
1622
|
else if (formDataPayload && typeof formDataPayload === 'object') {
|
|
1590
1623
|
// 声明 formDataPayload 的组件即使没有字段映射,也显式携带表单数据容器。
|
|
1591
|
-
nodeData.formData ??=
|
|
1624
|
+
nodeData.formData ??= buildEsbFormDataDto();
|
|
1592
1625
|
if (nodeType !== 'ApproveCreate')
|
|
1593
1626
|
nodeData.fields ??= { main: [], detail: [] };
|
|
1594
1627
|
nodeData.formDataId ??= genSfId();
|
|
@@ -1639,7 +1672,7 @@ export function convertNode(draftAction, isEvent = false, meta = null, appId = '
|
|
|
1639
1672
|
continue;
|
|
1640
1673
|
const targetFieldMeta = lookupTargetFieldMeta(raw, nodeData);
|
|
1641
1674
|
const targetFieldType = String(targetFieldMeta?.componentKey || targetFieldMeta?.type || 'Text');
|
|
1642
|
-
main[raw] =
|
|
1675
|
+
main[raw] = buildEsbFormField(raw, { kind: 'context', paramKey: String(sourceKey), label: String(sourceKey) }, targetFieldType, meta || {}, appId, eventNodeId || nidStr, operate, nodeType, false, assignmentMode);
|
|
1643
1676
|
}
|
|
1644
1677
|
}
|
|
1645
1678
|
if (pendingConstants && typeof pendingConstants === 'object') {
|
|
@@ -1656,7 +1689,7 @@ export function convertNode(draftAction, isEvent = false, meta = null, appId = '
|
|
|
1656
1689
|
rawV = resolveEnumConstant(rawV, targetFieldMeta);
|
|
1657
1690
|
const [assignment, ft] = normalizeConstantAssignment(rawV, 'Text');
|
|
1658
1691
|
const targetFieldType = String(targetFieldMeta?.componentKey || targetFieldMeta?.type || ft);
|
|
1659
|
-
main[targetFieldId] =
|
|
1692
|
+
main[targetFieldId] = buildEsbFormField(targetFieldId, assignment, targetFieldType, meta || {}, appId, eventNodeId || nidStr, operateC, nodeType, false, assignmentMode);
|
|
1660
1693
|
}
|
|
1661
1694
|
}
|
|
1662
1695
|
nodeData.setting.main = main;
|