From 9f6ded361c5882c84e0469c5bd78082304bc7679 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E5=8D=9A=E6=96=87?= <1179111926@qq.com>
Date: Thu, 7 Aug 2025 10:05:29 +0800
Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B5=E9=9D=A2?=
=?UTF-8?q?=E8=B7=B3=E8=BD=AC=E5=9C=B0=E5=9D=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../vgpu/views/monitor/overview/getOptions.js | 5 ++++-
.../web/projects/vgpu/views/task/admin/top.vue | 16 +++++-----------
packages/web/src/components/TextPlus.vue | 4 +++-
.../web/src/layout/components/Sidebar/index.vue | 5 ++++-
packages/web/src/layout/index.vue | 5 -----
5 files changed, 16 insertions(+), 19 deletions(-)
diff --git a/packages/web/projects/vgpu/views/monitor/overview/getOptions.js b/packages/web/projects/vgpu/views/monitor/overview/getOptions.js
index 54e6472..99289ac 100644
--- a/packages/web/projects/vgpu/views/monitor/overview/getOptions.js
+++ b/packages/web/projects/vgpu/views/monitor/overview/getOptions.js
@@ -2,6 +2,9 @@ import { timeParse } from '@/utils';
import { cloneDeep } from 'lodash';
import nodeApi from '~/vgpu/api/node';
import { ElMessage } from 'element-plus';
+import useParentAction from '~/vgpu/hooks/useParentAction';
+
+const { sendRouteChange } = useParentAction();
export const getResourceStatus = (statusConfig) => {
return {
@@ -278,7 +281,7 @@ export const handleChartClick = async (params, router) => {
if (node) {
const uuid = node.uid;
- router.push(`/admin/vgpu/node/admin/${uuid}?nodeName=${name}`);
+ sendRouteChange(`/admin/vgpu/node/admin/${uuid}?nodeName=${name}`);
} else {
ElMessage.error('节点未找到');
}
diff --git a/packages/web/projects/vgpu/views/task/admin/top.vue b/packages/web/projects/vgpu/views/task/admin/top.vue
index e27ec5b..4393d9e 100644
--- a/packages/web/projects/vgpu/views/task/admin/top.vue
+++ b/packages/web/projects/vgpu/views/task/admin/top.vue
@@ -9,7 +9,9 @@ import TabTop from '~/vgpu/components/TabTop.vue';
import { useRouter } from 'vue-router';
import nodeApi from '~/vgpu/api/node';
import { ElMessage } from 'element-plus';
+import useParentAction from '~/vgpu/hooks/useParentAction';
+const { sendRouteChange } = useParentAction();
const router = useRouter();
const handleChartClick = async (params) => {
@@ -20,23 +22,15 @@ const handleChartClick = async (params) => {
const node = list.find(node => node.name === name);
if (node) {
const uuid = node.uid;
- router.push(`/admin/vgpu/node/admin/${uuid}?nodeName=${name}`);
+ sendRouteChange(`/admin/vgpu/node/admin/${uuid}?nodeName=${name}`);
} else {
ElMessage.error('节点未找到');
}
} else if (activeTabKey === 'deviceuuid') {
- router.push({
- path: `/admin/vgpu/card/admin/${name}`,
- });
+ sendRouteChange(`/admin/vgpu/card/admin/${name}`);
} else {
const [containerName, podUid] = name.split(':');
- router.push({
- path: '/admin/vgpu/task/admin/detail',
- query: {
- name: containerName,
- podUid: podUid,
- },
- });
+ sendRouteChange(`/admin/vgpu/task/admin/detail?name=${containerName}&podUid=${podUid}`);
}
};
diff --git a/packages/web/src/components/TextPlus.vue b/packages/web/src/components/TextPlus.vue
index 3dcf78e..95d69ec 100644
--- a/packages/web/src/components/TextPlus.vue
+++ b/packages/web/src/components/TextPlus.vue
@@ -10,7 +10,9 @@
diff --git a/packages/web/src/layout/components/Sidebar/index.vue b/packages/web/src/layout/components/Sidebar/index.vue
index f8204a4..f18ed4b 100644
--- a/packages/web/src/layout/components/Sidebar/index.vue
+++ b/packages/web/src/layout/components/Sidebar/index.vue
@@ -41,7 +41,7 @@
'side-menus-item-children-item',
{ 'is-active': route.path.includes(child.path) },
]"
- @click="router.push(child.path)"
+ @click="sendRouteChange(child.path)"
>
{{ child.meta?.title }}
@@ -62,6 +62,9 @@
import { computed, onMounted, ref, nextTick, onBeforeUnmount } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { useStore } from 'vuex';
+import useParentAction from '~/vgpu/hooks/useParentAction';
+
+const { sendRouteChange } = useParentAction();
const route = useRoute();
const router = useRouter();
diff --git a/packages/web/src/layout/index.vue b/packages/web/src/layout/index.vue
index 99eeec9..028cbeb 100644
--- a/packages/web/src/layout/index.vue
+++ b/packages/web/src/layout/index.vue
@@ -50,11 +50,6 @@ export default {
const messageData = JSON.parse(event.data);
if (messageData.type === "ChangeTheRoute") {
// const { pathname, query } = parseUrl(messageData.data)
- // console.log(messageData.data, 'messageData.data')
- // this.router.push({
- // path: pathname,
- // query
- // });
this.router.replace(messageData.data)
}
} catch (e) { }
From 870463072fdb3dfdde943d98cf30b74167379142 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E5=8D=9A=E6=96=87?= <1179111926@qq.com>
Date: Thu, 7 Aug 2025 10:56:41 +0800
Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/web/projects/vgpu/api/poll.js | 8 +++
.../projects/vgpu/views/poll/admin/Detail.vue | 50 ++-----------------
.../projects/vgpu/views/task/admin/Detail.vue | 18 +++++--
packages/web/src/utils/index.js | 5 +-
4 files changed, 32 insertions(+), 49 deletions(-)
diff --git a/packages/web/projects/vgpu/api/poll.js b/packages/web/projects/vgpu/api/poll.js
index d0e7238..99069fd 100644
--- a/packages/web/projects/vgpu/api/poll.js
+++ b/packages/web/projects/vgpu/api/poll.js
@@ -43,6 +43,14 @@ class pollApi {
});
}
+ remove(data) {
+ return request({
+ url: apiPrefix + '/v1/resource/pool/removeNode',
+ method: 'POST',
+ data,
+ });
+ }
+
getDetailNodeList(data) {
return {
url: apiPrefix + '/v1/resource/pool/detail',
diff --git a/packages/web/projects/vgpu/views/poll/admin/Detail.vue b/packages/web/projects/vgpu/views/poll/admin/Detail.vue
index 511eba9..f54d5ac 100644
--- a/packages/web/projects/vgpu/views/poll/admin/Detail.vue
+++ b/packages/web/projects/vgpu/views/poll/admin/Detail.vue
@@ -172,11 +172,6 @@ const columns = [
dataIndex: 'diskSize',
render: ({ diskSize }) => `${bytesToGB(diskSize)}GiB`,
},
- {
- title: '所属资源池',
- dataIndex: 'resourcePools',
- render: ({ resourcePools }) => `${resourcePools.join('、')}`,
- },
{
title: '显卡数量',
dataIndex: 'cardCnt',
@@ -221,57 +216,23 @@ const rowAction = [
},
},
{
- title: '禁用',
- hidden: (row) => !row.isSchedulable,
+ title: '移除',
onClick: async (row) => {
- ElMessageBox.confirm(`确认对该节点进行禁用操作?`, '操作确认', {
+ ElMessageBox.confirm(`确定要移除当前节点吗?`, '操作确认', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(async () => {
try {
- await nodeApi.stop(
+ await pollApi.remove(
{
- nodeName: row.name,
- status: 'DISABLED'
+ node_id: row.nodeId,
}
).then(
() => {
setTimeout(() => {
- ElMessage.success('节点禁用成功');
- table.value.fetchData();
- }, 500);
- }
- )
- } catch (error) {
- ElMessage.error(error.message);
- }
- })
- .catch(() => { });
- },
- },
- {
- title: '开启',
- hidden: (row) => row.isSchedulable,
- disabled: (row) => row.isExternal,
- onClick: async (row) => {
- ElMessageBox.confirm(`确认对该节点进行开启调度操作?`, '操作确认', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning',
- })
- .then(async () => {
- try {
- await nodeApi.stop(
- {
- nodeName: row.name,
- status: 'ENABLE'
- }
- ).then(
- () => {
- setTimeout(() => {
- ElMessage.success('节点开启调度成功');
+ ElMessage.success('节点移除成功');
table.value.fetchData();
}, 500);
}
@@ -523,7 +484,6 @@ onMounted(async () => {