refactor: extract image form to standalone page and implement tags view store
- Created ImageForm.vue as standalone page for add/edit image functionality - Removed dialog-based image form from VmImages.vue - Implemented tagsViewStore for global tab state management - Added automatic tab closing on form cancel/back - Fixed data persistence issue when switching between image edits - Removed quick actions section from ImageForm - Updated router configuration for new image form route
This commit is contained in:
+31
-19
@@ -41,7 +41,7 @@ const routes = [
|
||||
},
|
||||
component: () => import('../views/ticket/TicketChat.vue'),
|
||||
},
|
||||
|
||||
|
||||
// ACS管理路由
|
||||
{
|
||||
path: 'acs',
|
||||
@@ -130,7 +130,19 @@ const routes = [
|
||||
meta: {
|
||||
title: '节点管理'
|
||||
}
|
||||
},{
|
||||
},
|
||||
{
|
||||
path: 'nodes/form',
|
||||
name: 'ServerForm',
|
||||
component: () => import('@/views/acs/nodes/ServerForm.vue'),
|
||||
meta: { title: '服务器表单', activeMenu: '/acs/nodes', hidden: true }
|
||||
},
|
||||
{
|
||||
path: 'images/form',
|
||||
name: 'ImageForm',
|
||||
component: () => import('@/views/acs/images/ImageForm.vue'),
|
||||
meta: { title: '镜像表单', activeMenu: '/acs/images/vm', hidden: true }
|
||||
}, {
|
||||
path: 'guacamole',
|
||||
name: 'Guacamole',
|
||||
component: () => import('../views/acs/guacamole/Guacamole.vue'),
|
||||
@@ -365,7 +377,7 @@ const routes = [
|
||||
title: '管理员权限'
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
path: 'file',
|
||||
name: 'SystemFile',
|
||||
@@ -374,7 +386,7 @@ const routes = [
|
||||
title: '文件管理'
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
path: 'domain-whitelist',
|
||||
name: 'DomainWhitelist',
|
||||
@@ -492,21 +504,21 @@ const routes = [
|
||||
title: '容器详情',
|
||||
hidden: true
|
||||
}
|
||||
},{
|
||||
path:'servers/container/console',
|
||||
name:'ContainerConsole',
|
||||
component:()=>import('../views/acs/nodes/containerConsole.vue'),
|
||||
meta:{
|
||||
title:'终端容器',
|
||||
hidden:true
|
||||
}, {
|
||||
path: 'servers/container/console',
|
||||
name: 'ContainerConsole',
|
||||
component: () => import('../views/acs/nodes/containerConsole.vue'),
|
||||
meta: {
|
||||
title: '终端容器',
|
||||
hidden: true
|
||||
}
|
||||
},{
|
||||
path:'servers/container/files',
|
||||
name:'ContainerFiles',
|
||||
component:()=>import('../views/acs/nodes/containFile.vue'),
|
||||
meta:{
|
||||
title:'容器文件管理',
|
||||
hidden:true
|
||||
}, {
|
||||
path: 'servers/container/files',
|
||||
name: 'ContainerFiles',
|
||||
component: () => import('../views/acs/nodes/containFile.vue'),
|
||||
meta: {
|
||||
title: '容器文件管理',
|
||||
hidden: true
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -540,7 +552,7 @@ const router = createRouter({
|
||||
router.beforeEach((to, from, next) => {
|
||||
// 设置页面标题
|
||||
document.title = to.meta.title ? `${to.meta.title} - 007UI管理系统` : '007UI管理系统'
|
||||
|
||||
|
||||
// 这里可以添加登录验证逻辑
|
||||
const isAuthenticated = localStorage.getItem('token')
|
||||
if (to.path !== '/login' && !isAuthenticated) {
|
||||
|
||||
Reference in New Issue
Block a user