首页工作流节点引用多选与保存回显完善:isMultiParameter 全链路透传 + valueSource 数组化/label + 旧 DSL 兼容
- isMultiParameter 节点级开关从节点库透传至引用下拉,支持多选勾选/去重/逐条删除/清空 - valueSource 契约统一为数组并补 label(节点名.字段中文名),覆盖用户引用、表单展示标记与旧 DSL 单对象 - ModelField 递归透传 multi,object/array 嵌套子字段同样支持多选 - 保存/回显兼容旧 DSL 单对象 valueSource,重开自动升级为数组 - modelRequestParamsPath 每项新增 label 字段,后端按 path 重组请求参数 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -229,14 +229,20 @@ const getVisibleFields = (node: any): any[] => {
|
||||
return collectHomeFormFields(node);
|
||||
};
|
||||
|
||||
// 引用来源展示:valueSource.nodeId 定位上游节点名 + 字段
|
||||
// 引用来源展示:valueSource 统一数组 [{ nodeId, field }](兼容旧 DSL 单对象),逐项定位上游节点名 + 字段
|
||||
const getSourceDisplay = (field: any): string => {
|
||||
const vs = field?.valueSource;
|
||||
if (!vs || typeof vs !== 'object') return '';
|
||||
const arr = Array.isArray(vs) ? vs : [vs];
|
||||
const nodes = props.detail?.nodeInputParams || [];
|
||||
const srcNode = nodes.find((n: any) => String(n?.id) === String(vs.nodeId));
|
||||
const nodeName = srcNode?.name || srcNode?.nodeName || (vs.nodeId ? `节点 ${vs.nodeId}` : '上游节点');
|
||||
return vs.field ? `${nodeName} · ${vs.field}` : nodeName;
|
||||
const parts = arr
|
||||
.filter((r: any) => r && typeof r === 'object')
|
||||
.map((r: any) => {
|
||||
const srcNode = nodes.find((n: any) => String(n?.id) === String(r.nodeId));
|
||||
const nodeName = srcNode?.name || srcNode?.nodeName || (r.nodeId ? `节点 ${r.nodeId}` : '上游节点');
|
||||
return r.field ? `${nodeName} · ${r.field}` : nodeName;
|
||||
});
|
||||
return parts.join(',');
|
||||
};
|
||||
|
||||
const isFileField = (field: any): boolean => {
|
||||
|
||||
Reference in New Issue
Block a user