fix: 修复网关选择器显示ID和保存后网关类型不正确的问题

This commit is contained in:
2026-04-23 15:23:56 +08:00
parent 0bc0eabac0
commit c540e73082
2 changed files with 31 additions and 12 deletions
+1 -5
View File
@@ -313,11 +313,7 @@ func (s assetService) UpdateById(id string, m maps.Map) error {
}
if item.AccessGatewayId == "" {
if gatewayId, ok := m["gatewayId"]; ok && gatewayId != "" && gatewayId != "-" {
item.AccessGatewayId = gatewayId.(string)
} else {
item.AccessGatewayId = "-"
}
item.AccessGatewayId = "-"
}
return s.Transaction(context.Background(), func(ctx context.Context) error {
+30 -7
View File
@@ -86,14 +86,33 @@ const AssetsPost = function ({assetId, groupId, copy, onClose}: AssetsInfoProps)
} else if (!asset.tags) {
asset.tags = [] as any;
}
// 处理网关类型
if (asset.accessGatewayId && asset.accessGatewayId !== '-') {
asset.gatewayType = 'ssh';
setTimeout(() => {
formRef.current?.setFieldsValue({
gatewayType: 'ssh',
accessGatewayId: asset.accessGatewayId
});
}, 100);
// 获取网关名称
try {
const gateways = await sshGatewayApi.getAll();
const gateway = gateways.find(g => g.id === asset.accessGatewayId);
if (gateway) {
asset.gatewayType = 'ssh';
// 使用 setTimeout 确保表单已加载完成
setTimeout(() => {
formRef.current?.setFieldsValue({
gatewayType: 'ssh',
accessGatewayId: { value: asset.accessGatewayId, label: gateway.name }
});
}, 100);
} else {
// 网关不存在,设置为不使用网关
asset.gatewayType = '';
asset.accessGatewayId = undefined;
}
} catch (e) {
asset.gatewayType = '';
asset.accessGatewayId = undefined;
}
} else {
asset.gatewayType = '';
asset.accessGatewayId = undefined;
}
return asset;
}
@@ -109,6 +128,7 @@ const AssetsPost = function ({assetId, groupId, copy, onClose}: AssetsInfoProps)
},
groupId: groupId,
tags: [],
gatewayType: '',
} as Asset;
}
@@ -120,6 +140,9 @@ const AssetsPost = function ({assetId, groupId, copy, onClose}: AssetsInfoProps)
// 处理网关字段
if (!values['gatewayType']) {
values['accessGatewayId'] = '-';
} else if (values['accessGatewayId'] && typeof values['accessGatewayId'] === 'object') {
// 如果是对象,提取 value
values['accessGatewayId'] = values['accessGatewayId'].value;
}
delete values['gatewayType'];
if (!copy && values['id']) {