Просмотр исходного кода

!1380 修复-> 代码生成 -> 配置-> 外键设置窗口值不刷新问题
Merge pull request !1380 from CyrusZhou/next

zuohuaijun 2 лет назад
Родитель
Сommit
c5d5e65801

+ 7 - 0
Admin.NET/Admin.NET.Core/Entity/SysCodeGenConfig.cs

@@ -60,6 +60,13 @@ public partial class SysCodeGenConfig : EntityBase
     [MaxLength(64)]
     public string? EffectType { get; set; }
 
+    /// <summary>
+    /// 外键库标识
+    /// </summary>
+    [SugarColumn(ColumnDescription = "外键库标识", Length = 20)]
+    [MaxLength(20)]
+    public string? FkConfigId { get; set; }
+
     /// <summary>
     /// 外键实体名称
     /// </summary>

+ 5 - 0
Admin.NET/Admin.NET.Core/Service/CodeGen/Dto/CodeGenConfig.cs

@@ -56,6 +56,11 @@ public class CodeGenConfig
     /// </summary>
     public string EffectType { get; set; }
 
+    /// <summary>
+    /// 外键库标识
+    /// </summary>
+    public string FkConfigId { get; set; }
+
     /// <summary>
     /// 外键实体名称
     /// </summary>

+ 17 - 2
Web/src/views/system/codeGen/component/fkDialog.vue

@@ -104,8 +104,17 @@ const getColumnInfoList = async () => {
 };
 
 // 打开弹窗
-const openDialog = (row: any) => {
+const openDialog = async (row: any) => {
 	rowdata = row;
+	if (rowdata.fkConfigId) {
+		await getDbList();
+		state.ruleForm.tableName = rowdata.fkTableName;
+		state.ruleForm.columnName = rowdata.fkColumnName;
+		state.ruleForm.linkColumnName = rowdata.fkLinkColumnName;
+		state.ruleForm.configId = rowdata.fkConfigId;
+		await DbChanged();
+		await TableChanged();
+	}
 	state.isShowDialog = true;
 };
 
@@ -116,15 +125,21 @@ const closeDialog = () => {
 	rowdata.fkEntityName = tableData.length == 0 ? '' : tableData[0].entityName;
 	rowdata.fkColumnName = state.ruleForm.columnName;
 	rowdata.fkLinkColumnName = state.ruleForm.linkColumnName;
+	rowdata.fkConfigId = state.ruleForm.configId;
 	let columnData = state.columnData.filter((x) => x.columnName == state.ruleForm.columnName);
 	rowdata.fkColumnNetType = columnData.length == 0 ? '' : columnData[0].netType;
 	emits('submitRefreshFk', rowdata);
-	state.isShowDialog = false;
+	cancel();
 };
 
 // 取消
 const cancel = () => {
 	state.isShowDialog = false;
+	ruleFormRef.value?.resetFields();
+	state.ruleForm = {};
+	state.dbData.value = [];
+	state.tableData.value = [];
+	state.columnData.value = [];
 };
 
 // 提交

+ 21 - 4
Web/src/views/system/codeGen/component/genConfigDialog.vue

@@ -16,11 +16,21 @@
 					</template>
 				</el-table-column>
 				<el-table-column prop="netType" label="数据类型" min-width="90" show-overflow-tooltip />
-				<el-table-column prop="effectType" label="作用类型" width="120" show-overflow-tooltip>
+				<el-table-column prop="effectType" label="作用类型" width="140" show-overflow-tooltip>
 					<template #default="scope">
-						<el-select v-model="scope.row.effectType" class="m-2" placeholder="Select" :disabled="judgeColumns(scope.row)" @change="effectTypeChange(scope.row, scope.$index)">
-							<el-option v-for="item in state.effectTypeList" :key="item.code" :label="item.value" :value="item.code" />
-						</el-select>
+						<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)">
+								<el-option v-for="item in state.effectTypeList" :key="item.code" :label="item.value" :value="item.code" />
+							</el-select>
+							<el-button
+								v-if="scope.row.effectType === 'ApiTreeSelect' || scope.row.effectType === 'fk'"
+								:icon="Edit"
+								type="dashed"
+								title="修改"
+								link
+								@click="effectTypeChange(scope.row, scope.$index)"
+							/>
+						</div>
 					</template>
 				</el-table-column>
 				<el-table-column prop="dictTypeCode" label="字典" width="180" show-overflow-tooltip>
@@ -91,6 +101,7 @@ import treeDialog from '/@/views/system/codeGen/component/treeDialog.vue';
 import { getAPI } from '/@/utils/axios-utils';
 import { SysCodeGenConfigApi, SysConstApi, SysDictDataApi, SysDictTypeApi, SysEnumApi } from '/@/api-services/api';
 import { CodeGenConfig } from '/@/api-services/models/code-gen-config';
+import { Edit } from '@element-plus/icons-vue'
 
 const emits = defineEmits(['handleQuery']);
 const fkDialogRef = ref();
@@ -292,3 +303,9 @@ const isOrNotSelect = () => {
 // 导出对象
 defineExpose({ openDialog });
 </script>
+<style scoped>
+.effect-type-container {
+  display: flex;
+  align-items: center;
+}
+</style>

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

@@ -110,10 +110,20 @@ const getColumnInfoList = async () => {
 };
 
 // 打开弹窗
-const openDialog = (row: any) => {
+const openDialog = async (row: any) => {
 	rowdata = row;
 	state.isShowDialog = true;
 	ruleFormRef.value?.resetFields();
+	if (rowdata.fkConfigId) {
+		await getDbList();
+		state.ruleForm.tableName = rowdata.fkTableName;
+		state.ruleForm.displayColumn = rowdata.displayColumn;
+		state.ruleForm.valueColumn = rowdata.valueColumn;
+		state.ruleForm.pidColumn = rowdata.pidColumn;
+		state.ruleForm.configId = rowdata.fkConfigId;
+		await DbChanged();
+		await TableChanged();
+	}
 };
 
 // 关闭弹窗
@@ -128,13 +138,19 @@ const closeDialog = () => {
 	rowdata.displayColumn = state.ruleForm.displayColumn;
 	rowdata.valueColumn = state.ruleForm.valueColumn;
 	rowdata.pidColumn = state.ruleForm.pidColumn;
+	rowdata.fkConfigId = state.ruleForm.configId;
 	emits('submitRefreshFk', rowdata);
-	state.isShowDialog = false;
+	cancel();
 };
 
 // 取消
 const cancel = () => {
 	state.isShowDialog = false;
+	ruleFormRef.value?.resetFields();
+	state.ruleForm = {};
+	state.dbData.value = [];
+	state.tableData.value = [];
+	state.columnData.value = [];
 };
 
 // 提交