Procházet zdrojové kódy

chore: 优化参数传递方式

喵你个旺呀 před 1 rokem
rodič
revize
fc82777a08

+ 6 - 0
Admin.NET/Admin.NET.Core/Entity/SysCodeGen.cs

@@ -129,4 +129,10 @@ public partial class SysCodeGen : EntityBase
     [SugarColumn(ColumnDescription = "打印模版名称", Length = 32)]
     [MaxLength(32)]
     public string? PrintName { get; set; }
+
+    /// <summary>
+    /// 表唯一字段列表
+    /// </summary>
+    [SugarColumn(IsIgnore = true)]
+    public virtual List<TableUniqueConfigItem> TableUniqueList => string.IsNullOrWhiteSpace(TableUniqueConfig) ? null : JSON.Deserialize<List<TableUniqueConfigItem>>(TableUniqueConfig);
 }

+ 19 - 27
Admin.NET/Admin.NET.Core/Service/CodeGen/Dto/CodeGenConfig.cs

@@ -74,24 +74,29 @@ public class CodeGenConfig
     /// <summary>
     /// 外键实体名称(首字母小写)
     /// </summary>
-    public string LowerFkEntityName =>
-        string.IsNullOrWhiteSpace(FkEntityName) ? null : FkEntityName[..1].ToLower() + FkEntityName[1..];
+    public string LowerFkEntityName => string.IsNullOrWhiteSpace(FkEntityName) ? null : FkEntityName[..1].ToLower() + FkEntityName[1..];
 
+    /// <summary>
+    /// 外键链接字段
+    /// </summary>
+    public string FkLinkColumnName { get; set; }
+    
     /// <summary>
     /// 外键显示字段
     /// </summary>
+    [Newtonsoft.Json.JsonIgnore]
+    [System.Text.Json.Serialization.JsonIgnore]
     public string FkColumnName { get; set; }
-
+    
     /// <summary>
-    /// 外键链接字段
+    /// 外键显示字段
     /// </summary>
-    public string FkLinkColumnName { get; set; }
+    public List<string> FkColumnList { get; set; }
 
     /// <summary>
     /// 外键显示字段(首字母小写)
     /// </summary>
-    public string LowerFkColumnName =>
-        string.IsNullOrWhiteSpace(FkColumnName) ? null : FkColumnName[..1].ToLower() + FkColumnName[1..];
+    public List<string> LowerFkColumnList => FkColumnList?.Select(name => name[..1].ToLower() + name[1..]).ToList();
 
     /// <summary>
     /// 外键显示字段.NET类型
@@ -157,31 +162,18 @@ public class CodeGenConfig
     /// 是否是通用字段
     /// </summary>
     public string WhetherCommon { get; set; }
-
+    
     /// <summary>
-    /// 表的别名 Table as XXX
+    /// 外键显示字段
     /// </summary>
-    public string TableNickName
-    {
-        get
-        {
-            string str = "";
-            if (EffectType == "ForeignKey")
-            {
-                str = LowerFkEntityName + "_FK_" + LowerFkColumnName;
-            }
-            else if (EffectType == "Upload")
-            {
-                str = "sysFile_FK_" + LowerPropertyName;
-            }
-            return str;
-        }
-    }
-
+    [Newtonsoft.Json.JsonIgnore]
+    [System.Text.Json.Serialization.JsonIgnore]
+    public string DisplayColumn { get; set; }
+    
     /// <summary>
     /// 显示文本字段
     /// </summary>
-    public string DisplayColumn { get; set; }
+    public List<string> DisplayColumnList { get; set; }
 
     /// <summary>
     /// 选中值字段

+ 7 - 0
Admin.NET/Admin.NET.Core/Service/CodeGen/Dto/CodeGenInput.cs

@@ -74,8 +74,15 @@ public class CodeGenInput : BasePageInput
     /// <summary>
     /// 表唯一字段
     /// </summary>
+    [Newtonsoft.Json.JsonIgnore]
+    [System.Text.Json.Serialization.JsonIgnore]
     public virtual string TableUniqueConfig { get; set; }
     
+    /// <summary>
+    /// 表唯一字段列表
+    /// </summary>
+    public virtual List<TableUniqueConfigItem> TableUniqueList { get; set; }
+    
     /// <summary>
     /// 菜单应用分类(应用编码)
     /// </summary>

+ 7 - 0
Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenConfigService.cs

@@ -33,6 +33,8 @@ public class SysCodeGenConfigService : IDynamicApiController, ITransient
             .Mapper(u =>
             {
                 u.NetType = (u.EffectType == "EnumSelector" || u.EffectType == "ConstSelector" ? u.DictTypeCode : u.NetType);
+                u.DisplayColumnList = u.DisplayColumn?.Split(",").ToList();
+                u.FkColumnList = u.FkColumnName?.Split(",").ToList();
             })
             .OrderBy(u => new { u.OrderNo, u.Id })
             .ToListAsync();
@@ -48,6 +50,11 @@ public class SysCodeGenConfigService : IDynamicApiController, ITransient
     public async Task UpdateCodeGenConfig(List<CodeGenConfig> inputList)
     {
         if (inputList == null || inputList.Count < 1) return;
+        inputList.ForEach(e =>
+        {
+            e.DisplayColumn = e.DisplayColumnList?.Count > 0 ? string.Join(",", e.DisplayColumnList) : null;
+            e.FkColumnName = e.FkColumnList?.Count > 0 ? string.Join(",", e.FkColumnList) : null;
+        });
         await _db.Updateable(inputList.Adapt<List<SysCodeGenConfig>>())
             .IgnoreColumns(u => new { u.ColumnLength, u.ColumnName, u.PropertyName })
             .ExecuteCommandAsync();

+ 7 - 33
Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs

@@ -5,7 +5,6 @@
 // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
 
 using System.IO.Compression;
-using NewLife.Serialization;
 
 namespace Admin.NET.Core.Service;
 
@@ -56,8 +55,9 @@ public class SysCodeGenService : IDynamicApiController, ITransient
     public async Task AddCodeGen(AddCodeGenInput input)
     {
         var isExist = await _db.Queryable<SysCodeGen>().Where(u => u.TableName == input.TableName).AnyAsync();
-        if (isExist)
-            throw Oops.Oh(ErrorCodeEnum.D1400);
+        if (isExist) throw Oops.Oh(ErrorCodeEnum.D1400);
+
+        if (input.TableUniqueList?.Count > 0) input.TableUniqueConfig = JSON.Serialize(input.TableUniqueList);
 
         var codeGen = input.Adapt<SysCodeGen>();
         var newCodeGen = await _db.Insertable(codeGen).ExecuteReturnEntityAsync();
@@ -76,9 +76,9 @@ public class SysCodeGenService : IDynamicApiController, ITransient
     public async Task UpdateCodeGen(UpdateCodeGenInput input)
     {
         var isExist = await _db.Queryable<SysCodeGen>().AnyAsync(u => u.TableName == input.TableName && u.Id != input.Id);
-        if (isExist)
-            throw Oops.Oh(ErrorCodeEnum.D1400);
+        if (isExist) throw Oops.Oh(ErrorCodeEnum.D1400);
 
+        if (input.TableUniqueList?.Count > 0) input.TableUniqueConfig = JSON.Serialize(input.TableUniqueList);
         var codeGen = input.Adapt<SysCodeGen>();
         await _db.Updateable(codeGen).ExecuteCommandAsync();
 
@@ -347,7 +347,6 @@ public class SysCodeGenService : IDynamicApiController, ITransient
         var tableFieldList = await _codeGenConfigService.GetList(new CodeGenConfig() { CodeGenId = input.Id }); // 字段集合
         var queryWhetherList = tableFieldList.Where(u => u.QueryWhether == YesNoEnum.Y.ToString()).ToList(); // 前端查询集合
         var joinTableList = tableFieldList.Where(u => u.EffectType == "Upload" || u.EffectType == "ForeignKey" || u.EffectType == "ApiTreeSelector").ToList(); // 需要连表查询的字段
-        (string joinTableNames, string lowerJoinTableNames) = GetJoinTableStr(joinTableList); // 获取连表的实体名和别名
 
         var data = new CustomViewEngine(_db)
         {
@@ -357,7 +356,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
             NameSpace = input.NameSpace,
             ClassName = input.TableName,
             PagePath = input.PagePath,
-            TableUniqueList = input.TableUniqueConfig?.ToJsonEntity<List<TableUniqueConfigItem>>() ?? new(),
+            TableUniqueList = input.TableUniqueList ?? new(),
             ProjectLastName = input.NameSpace.Split('.').Last(),
             QueryWhetherList = queryWhetherList,
             TableField = tableFieldList,
@@ -415,7 +414,6 @@ public class SysCodeGenService : IDynamicApiController, ITransient
         var tableFieldList = await _codeGenConfigService.GetList(new CodeGenConfig() { CodeGenId = input.Id }); // 字段集合
         var queryWhetherList = tableFieldList.Where(u => u.QueryWhether == YesNoEnum.Y.ToString()).ToList(); // 前端查询集合
         var joinTableList = tableFieldList.Where(u => u.EffectType == "Upload" || u.EffectType == "ForeignKey" || u.EffectType == "ApiTreeSelector").ToList(); // 需要连表查询的字段
-        (string joinTableNames, string lowerJoinTableNames) = GetJoinTableStr(joinTableList); // 获取连表的实体名和别名
 
         var data = new CustomViewEngine(_db)
         {
@@ -425,7 +423,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
             NameSpace = input.NameSpace,
             ClassName = input.TableName,
             PagePath = input.PagePath,
-            TableUniqueList = input.TableUniqueConfig?.ToJsonEntity<List<TableUniqueConfigItem>>() ?? new(),
+            TableUniqueList = input.TableUniqueList ?? new(),
             ProjectLastName = input.NameSpace.Split('.').Last(),
             QueryWhetherList = queryWhetherList,
             TableField = tableFieldList,
@@ -460,30 +458,6 @@ public class SysCodeGenService : IDynamicApiController, ITransient
         return result;
     }
 
-    /// <summary>
-    /// 获取连表的实体名和别名
-    /// </summary>
-    /// <param name="configs"></param>
-    /// <returns></returns>
-    private static (string, string) GetJoinTableStr(List<CodeGenConfig> configs)
-    {
-        var uploads = configs.Where(u => u.EffectType == "Upload").ToList();
-        var fks = configs.Where(u => u.EffectType == "ForeignKey").ToList();
-        string str = ""; // <Order, OrderItem, Custom>
-        string lowerStr = ""; // (o, i, c)
-        foreach (var item in uploads)
-        {
-            lowerStr += "sysFile_FK_" + item.LowerPropertyName + ",";
-            str += "SysFile,";
-        }
-        foreach (var item in fks)
-        {
-            lowerStr += item.LowerFkEntityName + "_FK_" + item.LowerFkColumnName + ",";
-            str += item.FkEntityName + ",";
-        }
-        return (str.TrimEnd(','), lowerStr.TrimEnd(','));
-    }
-
     /// <summary>
     /// 增加菜单
     /// </summary>

+ 4 - 5
Web/src/views/system/codeGen/component/editCodeGenDialog.vue

@@ -146,18 +146,18 @@
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 						<template v-if="state.ruleForm.tableUniqueList != undefined && state.ruleForm.tableUniqueList.length > 0">
 							<el-row :gutter="35" v-for="(v, k) in state.ruleForm.tableUniqueList" :key="k">
-								<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+								<el-col :xs="24" :sm="14" :md="14" :lg="14" :xl="14" class="mb20">
 									<el-form-item label="字段" :prop="`tableUniqueList[${k}].columns`" :rules="[{ required: true, message: `字段不能为空`, trigger: 'blur' }]">
 										<template #label>
 											<el-button icon="ele-Delete" type="danger" circle plain size="small" @click="() => state.ruleForm.tableUniqueList?.splice(k, 1)" />
 											<span class="ml5">字段</span>
 										</template>
-										<el-select v-model="state.ruleForm.tableUniqueList[k].columns" @change="(val: any) => changeTableUniqueColumn(val, k)" multiple filterable clearable class="w100">
+										<el-select v-model="state.ruleForm.tableUniqueList[k].columns" @change="(val: any) => changeTableUniqueColumn(val, k)" multiple filterable clearable collapse-tags collapse-tags-tooltip class="w100">
 											<el-option v-for="item in state.columnData" :key="item.columnName" :label="item.columnName + ' [' + item.columnComment + ']'" :value="item.columnName" />
 										</el-select>
 									</el-form-item>
 								</el-col>
-								<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+								<el-col :xs="24" :sm="10" :md="10" :lg="10" :xl="10" class="mb20">
 									<el-form-item label="描述信息" :prop="`tableUniqueList[${k}].message`" :rules="[{ required: true, message: `描述信息不能为空`, trigger: 'blur' }]">
 										<el-input v-model="state.ruleForm.tableUniqueList[k].message" clearable placeholder="请输入" />
 									</el-form-item>
@@ -264,7 +264,6 @@ const getGlobalComponentSize = computed(() => {
 // 打开弹窗
 const openDialog = (row: any) => {
 	state.ruleForm = JSON.parse(JSON.stringify(row));
-	state.ruleForm.tableUniqueList = JSON.parse(row.tableUniqueConfig ?? "[]");
   dbChanged().then(() => getColumnInfoList());
 	state.isShowDialog = true;
 	ruleFormRef.value?.resetFields();
@@ -285,7 +284,7 @@ const cancel = () => {
 const submit = () => {
 	ruleFormRef.value.validate(async (valid: boolean) => {
 		if (!valid) return;
-		state.ruleForm.tableUniqueConfig = state.ruleForm.tableUniqueList?.length > 0 ? JSON.stringify(state.ruleForm.tableUniqueList) : undefined;
+    if (state.ruleForm.tableUniqueList?.length === 0) state.ruleForm.tableUniqueList = null;
 		if (state.ruleForm.id != undefined && state.ruleForm.id > 0) {
 			await getAPI(SysCodeGenApi).apiSysCodeGenUpdatePost(state.ruleForm as UpdateCodeGenInput);
 		} else {

+ 8 - 10
Web/src/views/system/codeGen/component/fkDialog.vue

@@ -24,8 +24,8 @@
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-						<el-form-item label="显示字段" prop="columnNames" :rules="[{ required: true, message: '显示字段不能为空', trigger: 'blur' }]">
-							<el-select v-model="state.ruleForm.columnNames" multiple filterable class="w100">
+						<el-form-item label="显示字段" prop="fkColumnList" :rules="[{ required: true, message: '显示字段不能为空', trigger: 'blur' }]">
+							<el-select v-model="state.ruleForm.fkColumnList" multiple filterable class="w100">
 								<el-option v-for="item in state.columnData" :key="item.columnName" :label="item.columnName + ' [' + item.columnComment + ']'" :value="item.columnName" />
 							</el-select>
 						</el-form-item>
@@ -83,8 +83,8 @@ const DbChanged = async () => {
 const TableChanged = async () => {
 	state.columnData = [];
 	await getColumnInfoList();
-	state.ruleForm.columnNames = undefined;
-	state.ruleForm.linkColumnName = undefined;
+  state.ruleForm.fkColumnList = null;
+  state.ruleForm.linkColumnName = null;
 };
 
 const getDbList = async () => {
@@ -110,12 +110,12 @@ const openDialog = async (row: any) => {
 	rowdata = row;
 	if (rowdata.fkConfigId) {
 		await getDbList();
+    state.ruleForm.configId = rowdata.fkConfigId;
 		state.ruleForm.tableName = rowdata.fkTableName;
-		state.ruleForm.columnNames = rowdata.fkColumnName?.split(",");
-		state.ruleForm.linkColumnName = rowdata.fkLinkColumnName;
-		state.ruleForm.configId = rowdata.fkConfigId;
 		await DbChanged();
 		await TableChanged();
+    state.ruleForm.fkColumnList = rowdata.fkColumnList;
+    state.ruleForm.linkColumnName = rowdata.fkLinkColumnName;
 	}
 	state.isShowDialog = true;
 };
@@ -125,7 +125,7 @@ const closeDialog = () => {
 	rowdata.fkTableName = state.ruleForm.tableName;
 	let tableData = state.tableData.filter((x: any) => x.tableName == state.ruleForm.tableName);
 	rowdata.fkEntityName = tableData.length == 0 ? '' : tableData[0].entityName;
-	rowdata.fkColumnName = state.ruleForm.fkColumnName;
+	rowdata.fkColumnList = state.ruleForm.fkColumnList;
 	rowdata.fkLinkColumnName = state.ruleForm.linkColumnName;
 	rowdata.fkConfigId = state.ruleForm.configId;
 	let columnData = state.columnData.filter((x: any) => x.columnName == state.ruleForm.columnName);
@@ -148,8 +148,6 @@ const cancel = () => {
 const submit = () => {
 	ruleFormRef.value.validate(async (valid: boolean) => {
 		if (!valid) return;
-		state.ruleForm.fkColumnName = state.ruleForm.columnNames.join()
-		state.ruleForm.columnNames = undefined;
 		closeDialog();
 	});
 };

+ 13 - 15
Web/src/views/system/codeGen/component/genConfigDialog.vue

@@ -9,14 +9,14 @@
 			</template>
 			<el-table :data="state.tableData" style="width: 100%" v-loading="state.loading" border>
 				<el-table-column type="index" label="序号" width="55" align="center" />
-				<el-table-column prop="propertyName" label="实体属性" width="180" show-overflow-tooltip />
-				<el-table-column prop="columnComment" label="描述" width="180" show-overflow-tooltip>
+				<el-table-column prop="propertyName" label="实体属性" show-overflow-tooltip />
+				<el-table-column prop="columnComment" label="描述" show-overflow-tooltip>
 					<template #default="scope">
 						<el-input v-model="scope.row.columnComment" autocomplete="off" />
 					</template>
 				</el-table-column>
-				<el-table-column prop="netType" label="数据类型" min-width="90" show-overflow-tooltip />
-				<el-table-column prop="effectType" label="作用类型" width="140" show-overflow-tooltip>
+				<el-table-column prop="netType" label="数据类型" width="130" show-overflow-tooltip />
+				<el-table-column prop="effectType" label="作用类型" width="150" show-overflow-tooltip>
 					<template #default="scope">
 						<div class="effect-type-container">
 							<el-select v-model="scope.row.effectType" class="m-2" placeholder="Select" :disabled="judgeColumns(scope.row)" @change="effectTypeChange(scope.row, scope.$index)">
@@ -25,7 +25,6 @@
 							<el-button
 								v-if="scope.row.effectType === 'ApiTreeSelector' || scope.row.effectType === 'ForeignKey'"
 								:icon="Edit"
-								type="dashed"
 								title="修改"
 								link
 								@click="effectTypeChange(scope.row, scope.$index)"
@@ -33,7 +32,7 @@
 						</div>
 					</template>
 				</el-table-column>
-				<el-table-column prop="dictTypeCode" label="字典" width="180" show-overflow-tooltip>
+				<el-table-column prop="dictTypeCode" label="字典" width="150" show-overflow-tooltip>
 					<template #default="scope">
 						<el-select v-model="scope.row.dictTypeCode" class="m-2" :disabled="effectTypeEnable(scope.row)">
 							<el-option
@@ -44,45 +43,44 @@
 						</el-select>
 					</template>
 				</el-table-column>
-
-				<el-table-column prop="whetherTable" label="列表显示" width="85" align="center" show-overflow-tooltip>
+				<el-table-column prop="whetherTable" label="列表显示" width="70" align="center" show-overflow-tooltip>
 					<template #default="scope">
 						<el-checkbox v-model="scope.row.whetherTable" />
 					</template>
 				</el-table-column>
-				<el-table-column prop="whetherAddUpdate" label="增改" width="80" align="center" show-overflow-tooltip>
+				<el-table-column prop="whetherAddUpdate" label="增改" width="70" align="center" show-overflow-tooltip>
 					<template #default="scope">
 						<el-checkbox v-model="scope.row.whetherAddUpdate" :disabled="judgeColumns(scope.row)" />
 					</template>
 				</el-table-column>
-				<el-table-column prop="whetherImport" label="导入" width="80" align="center" show-overflow-tooltip>
+				<el-table-column prop="whetherImport" label="导入" width="70" align="center" show-overflow-tooltip>
 					<template #default="scope">
 						<el-checkbox v-model="scope.row.whetherImport" :disabled="judgeColumns(scope.row)" />
 					</template>
 				</el-table-column>
-				<el-table-column prop="whetherRequired" label="必填" width="80" align="center" show-overflow-tooltip>
+				<el-table-column prop="whetherRequired" label="必填" width="70" align="center" show-overflow-tooltip>
 					<template #default="scope">
 						<el-checkbox v-model="scope.row.whetherRequired" :disabled="judgeColumns(scope.row)" />
 					</template>
 				</el-table-column>
-				<el-table-column prop="whetherSortable" label="可排序" width="80" align="center" show-overflow-tooltip>
+				<el-table-column prop="whetherSortable" label="可排序" width="70" align="center" show-overflow-tooltip>
 					<template #default="scope">
 						<el-checkbox v-model="scope.row.whetherSortable" />
 					</template>
 				</el-table-column>
-				<el-table-column prop="queryWhether" label="是否是查询" min-width="80" align="center" show-overflow-tooltip>
+				<el-table-column prop="queryWhether" label="查询" width="70" align="center" show-overflow-tooltip>
 					<template #default="scope">
 						<el-switch v-model="scope.row.queryWhether" :active-value="true" :inactive-value="false" />
 					</template>
 				</el-table-column>
-				<el-table-column prop="queryType" label="查询方式" min-width="120" align="center" show-overflow-tooltip>
+				<el-table-column prop="queryType" label="查询方式" width="110" align="center" show-overflow-tooltip>
 					<template #default="scope">
 						<el-select v-model="scope.row.queryType" class="m-2" placeholder="Select" :disabled="!scope.row.queryWhether">
 							<el-option v-for="item in getDictDataByCode('code_gen_query_type')" :key="item.code" :label="item.value" :value="item.code" />
 						</el-select>
 					</template>
 				</el-table-column>
-				<el-table-column prop="orderNo" label="排序" width="100" show-overflow-tooltip>
+				<el-table-column prop="orderNo" label="排序" width="80" show-overflow-tooltip>
 					<template #default="scope">
 						<el-input v-model="scope.row.orderNo" autocomplete="off" type="number" />
 					</template>

+ 9 - 9
Web/src/views/system/codeGen/component/treeDialog.vue

@@ -24,8 +24,8 @@
 						</el-form-item>
 					</el-col>
 					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-						<el-form-item label="显示字段" prop="displayColumns" :rules="[{ required: true, message: '显示字段不能为空', trigger: 'blur' }]">
-							<el-select v-model="state.ruleForm.displayColumns" multiple filterable class="w100">
+						<el-form-item label="显示字段" prop="displayColumnList" :rules="[{ required: true, message: '显示字段不能为空', trigger: 'blur' }]">
+							<el-select v-model="state.ruleForm.displayColumnList" multiple filterable class="w100">
 								<el-option v-for="item in state.columnData" :key="item.columnName" :label="item.columnName + ' [' + item.columnComment + ']'" :value="item.columnName" />
 							</el-select>
 						</el-form-item>
@@ -90,7 +90,7 @@ const DbChanged = async () => {
 const TableChanged = async () => {
 	state.columnData = [];
 	await getColumnInfoList();
-	state.ruleForm.displayColumns = undefined;
+	state.ruleForm.displayColumnList = undefined;
 	state.ruleForm.valueColumn = undefined;
 	state.ruleForm.pidColumn = undefined;
 };
@@ -119,13 +119,15 @@ const openDialog = async (row: any) => {
 	ruleFormRef.value?.resetFields();
 	if (rowdata.fkConfigId) {
 		await getDbList();
+    state.ruleForm.configId = rowdata.fkConfigId;
 		state.ruleForm.tableName = rowdata.fkTableName;
-		state.ruleForm.displayColumns = rowdata.displayColumn?.split(",");
-		state.ruleForm.valueColumn = rowdata.valueColumn;
-		state.ruleForm.pidColumn = rowdata.pidColumn;
-		state.ruleForm.configId = rowdata.fkConfigId;
+
 		await DbChanged();
 		await TableChanged();
+
+    state.ruleForm.pidColumn = rowdata.pidColumn;
+    state.ruleForm.valueColumn = rowdata.valueColumn;
+    state.ruleForm.displayColumnList = rowdata.displayColumnList;
 	}
 };
 
@@ -160,8 +162,6 @@ const cancel = () => {
 const submit = () => {
 	ruleFormRef.value.validate(async (valid: boolean) => {
 		if (!valid) return;
-		state.ruleForm.displayColumn = state.ruleForm.displayColumns.join()
-		state.ruleForm.displayColumns = undefined;
 		closeDialog();
 	});
 };