diff --git a/visualdev/Tnb.VisualDev.Engine/Core/FormDataParsing.cs b/visualdev/Tnb.VisualDev.Engine/Core/FormDataParsing.cs
index b4090022..6f585106 100644
--- a/visualdev/Tnb.VisualDev.Engine/Core/FormDataParsing.cs
+++ b/visualdev/Tnb.VisualDev.Engine/Core/FormDataParsing.cs
@@ -1,6 +1,8 @@
using JNPF.Common.Const;
using JNPF.Common.Core.Manager;
+using JNPF.Common.Dtos;
using JNPF.Common.Extension;
+using JNPF.Common.Filter;
using JNPF.Common.Manager;
using JNPF.Common.Models;
using JNPF.Common.Security;
@@ -18,6 +20,7 @@ using JNPF.VisualDev.Entitys;
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
using JNPF.VisualDev.Interfaces;
using JNPF.WorkFlow.Entitys.Entity;
+using Mapster;
using Newtonsoft.Json.Linq;
using SqlSugar;
@@ -1368,8 +1371,16 @@ public class FormDataParsing : ITransient
///
/// 表单类型1-纯表单、2-普通表单、3-工作流表单.
/// 数据主键.
+ /// 子表解析时调用 (控件联动可能需要主表的数据).
///
- public async Task>> GetKeyData(List formData, List> list, ColumnDesignModel? columnDesign = null, string actionType = "List", int webType = 2, string primaryKey = "F_Id")
+ public async Task>> GetKeyData(
+ List formData,
+ List> list,
+ ColumnDesignModel? columnDesign = null,
+ string actionType = "List",
+ int webType = 2,
+ string primaryKey = "F_Id",
+ Dictionary? mainData = null)
{
// 获取控件缓存数据
Dictionary templateData = await GetVisualDevCaCheData(formData);
@@ -1386,6 +1397,7 @@ public class FormDataParsing : ITransient
List>? userselectTemplateValue = new List>(); // 用户
List>? usersselectTemplateValue = new List>(); // 用户组件
List>? posselectTemplateValue = new List>(); // 岗位
+ List>? radioTemplateValue = new List>(); // 单选框
List>? checkboxTemplateValue = new List>(); // 复选框
List>? selectTemplateValue = new List>(); // 下拉框
List>? treeSelectTemplateValue = new List>(); // 树
@@ -1417,6 +1429,8 @@ public class FormDataParsing : ITransient
// 转换列表数据
foreach (Dictionary? dataMap in list)
{
+ var oldDataMap = dataMap.Copy();
+ if (mainData != null) oldDataMap.Add("JnpfKeyConst_MainData", mainData);
if (dataMap.ContainsKey(primaryKey)) dataMap["id"] = dataMap[primaryKey].ToString(); // 主键
int dicCount = dataMap.Keys.Count;
@@ -1571,17 +1585,20 @@ public class FormDataParsing : ITransient
case JnpfKeyConst.POSSELECT:
dataMap[strKey[i]] = GetTemplateDataValueByKey(posselectTemplateValue, templateValue, moreValue, form);
break;
+ case JnpfKeyConst.RADIO:
+ dataMap[strKey[i]] = GetTemplateDataValueByKey(radioTemplateValue, templateValue, moreValue, form, formData, oldDataMap);
+ break;
case JnpfKeyConst.CHECKBOX:
- dataMap[strKey[i]] = GetTemplateDataValueByKey(checkboxTemplateValue, templateValue, moreValue, form);
+ dataMap[strKey[i]] = GetTemplateDataValueByKey(checkboxTemplateValue, templateValue, moreValue, form, formData, oldDataMap);
break;
case JnpfKeyConst.SELECT:
- dataMap[strKey[i]] = GetTemplateDataValueByKey(selectTemplateValue, templateValue, moreValue, form);
+ dataMap[strKey[i]] = GetTemplateDataValueByKey(selectTemplateValue, templateValue, moreValue, form, formData, oldDataMap);
break;
case JnpfKeyConst.TREESELECT:
- dataMap[strKey[i]] = GetTemplateDataValueByKey(treeSelectTemplateValue, templateValue, moreValue, form);
+ dataMap[strKey[i]] = GetTemplateDataValueByKey(treeSelectTemplateValue, templateValue, moreValue, form, formData, oldDataMap);
break;
case JnpfKeyConst.CASCADER:
- dataMap[strKey[i]] = GetTemplateDataValueByKey(cascaderTemplateValue, templateValue, moreValue, form);
+ dataMap[strKey[i]] = GetTemplateDataValueByKey(cascaderTemplateValue, templateValue, moreValue, form, formData, oldDataMap);
break;
case JnpfKeyConst.GROUPSELECT:
dataMap[strKey[i]] = GetTemplateDataValueByKey(groupTemplateValue, templateValue, moreValue, form);
@@ -1892,8 +1909,10 @@ public class FormDataParsing : ITransient
/// 所有的缓存
/// 要转换的key
/// 组件
+ /// 所有组件(控件联动会用到)
+ /// 当前行数据(控件联动会用到)
///
- private string GetTemplateDataValueByKey(List> keyTData, KeyValuePair tValue, IEnumerable