Преглед на файлове

!1804 解决生成代码界面的编辑时,没有修改表名的情况下点保存时,表名丢失的问题。并在后端增加一个判断:仅当表名发生了变化时,才更新字段设置。
Merge pull request !1804 from hwjmyz/v2-20250612

zuohuaijun преди 1 година
родител
ревизия
1207785a87
променени са 2 файла, в които са добавени 13 реда и са изтрити 7 реда
  1. 8 3
      Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs
  2. 5 4
      Web/src/views/system/codeGen/component/editCodeGenDialog.vue

+ 8 - 3
Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs

@@ -87,13 +87,18 @@ public class SysCodeGenService : IDynamicApiController, ITransient
         var isExist = await _db.Queryable<SysCodeGen>().AnyAsync(u => u.TableName == input.TableName && u.Id != input.Id);
         if (isExist) throw Oops.Oh(ErrorCodeEnum.D1400);
 
+        var oldRecord = await _db.Queryable<SysCodeGen>().FirstAsync(u => u.Id == input.Id);
+
         if (input.TableUniqueList?.Count > 0) input.TableUniqueConfig = JSON.Serialize(input.TableUniqueList);
         var codeGen = input.Adapt<SysCodeGen>();
         await _db.Updateable(codeGen).ExecuteCommandAsync();
 
-        // 更新配置表
-        await _codeGenConfigService.DeleteCodeGenConfig(codeGen.Id);
-        _codeGenConfigService.AddList(GetColumnList(input.Adapt<AddCodeGenInput>()), codeGen);
+        // 仅当数据表名称发生了变化,才更新配置表
+        if (oldRecord.TableName != input.TableName)
+        {
+            await _codeGenConfigService.DeleteCodeGenConfig(codeGen.Id);
+            _codeGenConfigService.AddList(GetColumnList(input.Adapt<AddCodeGenInput>()), codeGen);
+        }
     }
 
     /// <summary>

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

@@ -208,7 +208,7 @@ onMounted(async () => {
 // db改变
 const dbChanged = async () => {
 	if (state.ruleForm.configId === '') return;
-  state.tableData = await getAPI(SysCodeGenApi).apiSysCodeGenTableListConfigIdGet(state.ruleForm.configId as string).then(res => res.data.result ?? []);
+    state.tableData = await getAPI(SysCodeGenApi).apiSysCodeGenTableListConfigIdGet(state.ruleForm.configId as string).then(res => res.data.result ?? []);
 
 	let db = state.dbData.filter((u: any) => u.configId == state.ruleForm.configId);
 	state.ruleForm.connectionString = db[0].connectionString;
@@ -220,7 +220,7 @@ const tableChanged = (item: any) => {
 	state.ruleForm.tableName = item.tableName;
 	state.ruleForm.entityName = item.entityName;
 	state.ruleForm.busName = item.tableComment;
-  state.ruleForm.tableUniqueList = [];
+    state.ruleForm.tableUniqueList = [];
 	getColumnInfoList();
 };
 
@@ -279,8 +279,9 @@ const cancel = () => {
 const submit = () => {
 	ruleFormRef.value.validate(async (valid: boolean) => {
 		if (!valid) return;
-    if (state.ruleForm.tableUniqueList?.length === 0) state.ruleForm.tableUniqueList = null;
-		state.ruleForm.tableName = state.ruleForm.entityName;
+    	if (state.ruleForm.tableUniqueList?.length === 0) state.ruleForm.tableUniqueList = null;
+		state.ruleForm.tableName = state.ruleForm.entityName?? state.ruleForm.tableName;
+		
 		if (state.ruleForm.id != undefined && state.ruleForm.id > 0) {
 			await getAPI(SysCodeGenApi).apiSysCodeGenUpdatePost(state.ruleForm as UpdateCodeGenInput);
 		} else {