From fdd3be5a918a35a9a5c4526ec07a2ed619de1a2e Mon Sep 17 00:00:00 2001 From: lijiahangmax Date: Fri, 30 May 2025 01:29:28 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E5=A4=8D=E5=88=B6=E4=B8=BB=E6=9C=BA.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- orion-visor-ui/src/api/asset/host.ts | 9 ++- .../host-list/components/host-form-drawer.vue | 25 +++++---- .../host-list/components/host-form-info.vue | 55 +++++++++++-------- 3 files changed, 54 insertions(+), 35 deletions(-) diff --git a/orion-visor-ui/src/api/asset/host.ts b/orion-visor-ui/src/api/asset/host.ts index 790998ef..772fa21a 100644 --- a/orion-visor-ui/src/api/asset/host.ts +++ b/orion-visor-ui/src/api/asset/host.ts @@ -1,4 +1,4 @@ -import type { HostSpecExtraModel, HostExtraUpdateRequest } from './host-extra'; +import type { HostExtraUpdateRequest, HostSpecExtraModel } from './host-extra'; import type { TableData } from '@arco-design/web-vue'; import type { DataGrid, OrderDirection, Pagination } from '@/types/global'; import axios from 'axios'; @@ -114,6 +114,13 @@ export function updateHost(request: HostUpdateRequest) { return axios.put('/asset/host/update', request); } +/** + * 复制主机 + */ +export function copyHost(request: HostUpdateRequest) { + return axios.post('/asset/host/copy', request); +} + /** * 通过 id 更新主机状态 */ diff --git a/orion-visor-ui/src/views/asset/host-list/components/host-form-drawer.vue b/orion-visor-ui/src/views/asset/host-list/components/host-form-drawer.vue index 5e4431cb..50a56879 100644 --- a/orion-visor-ui/src/views/asset/host-list/components/host-form-drawer.vue +++ b/orion-visor-ui/src/views/asset/host-list/components/host-form-drawer.vue @@ -21,7 +21,7 @@ + @updated="onUpdateHostInfo" /> + @updated="onUpdateHostSpec" /> ('info'); @@ -72,6 +70,7 @@ const hostId = ref(); const types = ref([]); const infoRef = ref(); + const hostViewUpdated = ref(false); const emits = defineEmits(['reload']); @@ -93,7 +92,7 @@ // 打开复制 const openCopy = (id: number) => { - init('复制主机', id); + init('复制主机', undefined); nextTick(() => { infoRef.value.openCopy(id); }); @@ -104,9 +103,9 @@ title.value = _title; activeTab.value = 'info'; hostId.value = id; + hostViewUpdated.value = false; types.value = []; checkHostGroup(); - resetCounter(); setVisible(true); }; @@ -123,14 +122,20 @@ defineExpose({ openAdd, openUpdate, openCopy }); // 更新主机信息 - const updateHostInfo = (id: number) => { + const onUpdateHostInfo = (id: number) => { hostId.value = id; - incrUpdatedCount(); + hostViewUpdated.value = true; + }; + + // 更新主机信息 + const onUpdateHostSpec = () => { + hostViewUpdated.value = true; }; // 处理关闭 const handleClose = () => { - if (updatedCount.value) { + // 修改主机视图信息后刷新列表 + if (hostViewUpdated.value) { emits('reload'); } }; diff --git a/orion-visor-ui/src/views/asset/host-list/components/host-form-info.vue b/orion-visor-ui/src/views/asset/host-list/components/host-form-info.vue index 95598396..0a45dae8 100644 --- a/orion-visor-ui/src/views/asset/host-list/components/host-form-info.vue +++ b/orion-visor-ui/src/views/asset/host-list/components/host-form-info.vue @@ -5,28 +5,6 @@ label-align="right" :auto-label-width="true" :rules="hostFormRules"> - - - - - - - - - - - - + + + + + + + + + + + + ({}); @@ -135,6 +136,7 @@ // 打开复制 const openCopy = async (id: number) => { renderForm({ ...defaultForm() }); + isCopy.value = true; await fetchHostRender(id); }; @@ -188,7 +190,12 @@ if (error) { return; } - if (!formModel.value.id) { + if (isCopy.value) { + // 复制 + const { data } = await copyHost(formModel.value); + Message.success('复制成功'); + emits('updated', data); + } else if (!formModel.value.id) { // 新增 const { data } = await createHost(formModel.value); Message.success('创建成功');