diff --git a/src/i18n/langs/zh.json b/src/i18n/langs/zh.json index d4d07593d..6efff686a 100644 --- a/src/i18n/langs/zh.json +++ b/src/i18n/langs/zh.json @@ -96,6 +96,8 @@ "NoSQLProtocol": "非关系数据库" }, "assets": { + "All": "所有", + "CloudPlatform": "云平台", "AddAccount": "添加账号", "Account": "账号", "Defaults": "默认值", diff --git a/src/router/console/assets.js b/src/router/console/assets.js index 02a59fcd4..8106c6807 100644 --- a/src/router/console/assets.js +++ b/src/router/console/assets.js @@ -55,21 +55,21 @@ export default [ { path: '', name: 'HostList', - component: () => import('@/views/assets/Host/HostList.vue'), + component: () => import('@/views/assets/Asset/AssetList/HostList.vue'), hidden: true, meta: { title: i18n.t('route.HostList'), activeMenu: '/console/assets/assets' } }, { path: 'create', name: 'HostCreate', - component: () => import('@/views/assets/Host/HostCreateUpdate.vue'), + component: () => import('@/views/assets/Asset/AssetCreateUpdate/HostCreateUpdate.vue'), hidden: true, meta: { title: i18n.t('route.AssetCreate'), activeMenu: '/console/assets/assets' } }, { path: ':id/update', name: 'HostUpdate', - component: () => import('@/views/assets/Host/HostCreateUpdate.vue'), + component: () => import('@/views/assets/Asset/AssetCreateUpdate/HostCreateUpdate.vue'), hidden: true, meta: { title: i18n.t('route.AssetUpdate'), activeMenu: '/console/assets/assets' } } @@ -85,21 +85,111 @@ export default [ { path: '', name: 'DatabaseList', - component: () => import('@/views/assets/Database/HostList.vue'), + component: () => import('@/views/assets/Asset/AssetList/DatabaseList.vue'), hidden: true, meta: { title: i18n.t('route.HostList'), activeMenu: '/console/assets/assets' } }, { path: 'create', name: 'DatabaseCreate', - component: () => import('@/views/assets/Database/DatabaseCreateUpdate.vue'), + component: () => import('@/views/assets/Asset/AssetCreateUpdate/DatabaseCreateUpdate.vue'), hidden: true, meta: { title: i18n.t('route.AssetCreate'), activeMenu: '/console/assets/assets' } }, { path: ':id/update', name: 'DatabaseUpdate', - component: () => import('@/views/assets/Database/DatabaseCreateUpdate.vue'), + component: () => import('@/views/assets/Asset/AssetCreateUpdate/DatabaseCreateUpdate.vue'), + hidden: true, + meta: { title: i18n.t('route.AssetUpdate'), activeMenu: '/console/assets/assets' } + } + ] + }, + { + path: 'networking', + component: empty, + redirect: '', + hidden: true, + meta: { title: i18n.t('route.networking'), permissions: ['assets.view_asset'] }, + children: [ + { + path: '', + name: 'DatabaseList', + component: () => import('@/views/assets/Asset/AssetList/NetworkList.vue'), + hidden: true, + meta: { title: i18n.t('route.HostList'), activeMenu: '/console/assets/assets' } + }, + { + path: 'create', + name: 'DatabaseCreate', + component: () => import('@/views/assets/Asset/AssetCreateUpdate/NetworkingCreateUpdate.vue'), + hidden: true, + meta: { title: i18n.t('route.AssetCreate'), activeMenu: '/console/assets/assets' } + }, + { + path: ':id/update', + name: 'DatabaseUpdate', + component: () => import('@/views/assets/Asset/AssetCreateUpdate/NetworkingCreateUpdate.vue'), + hidden: true, + meta: { title: i18n.t('route.AssetUpdate'), activeMenu: '/console/assets/assets' } + } + ] + }, + { + path: 'CloudCreate', + component: empty, + redirect: '', + hidden: true, + meta: { title: i18n.t('route.networking'), permissions: ['assets.view_asset'] }, + children: [ + { + path: '', + name: 'CloudsPlatformList', + component: () => import('@/views/assets/Asset/AssetList/CloudsPlatformList.vue'), + hidden: true, + meta: { title: i18n.t('route.HostList'), activeMenu: '/console/assets/assets' } + }, + { + path: 'create', + name: 'CloudCreate', + component: () => import('@/views/assets/Asset/AssetCreateUpdate/CloudsPlatformCreateUpdate.vue'), + hidden: true, + meta: { title: i18n.t('route.AssetCreate'), activeMenu: '/console/assets/assets' } + }, + { + path: ':id/update', + name: 'CloudCreate', + component: () => import('@/views/assets/Asset/AssetCreateUpdate/CloudsPlatformCreateUpdate.vue'), + hidden: true, + meta: { title: i18n.t('route.AssetUpdate'), activeMenu: '/console/assets/assets' } + } + ] + }, + { + path: 'web', + component: empty, + redirect: '', + hidden: true, + meta: { title: i18n.t('route.networking'), permissions: ['assets.view_asset'] }, + children: [ + { + path: '', + name: 'WebList', + component: () => import('@/views/assets/Asset/AssetList/WebList.vue'), + hidden: true, + meta: { title: i18n.t('route.HostList'), activeMenu: '/console/assets/assets' } + }, + { + path: 'create', + name: 'WebCreate', + component: () => import('@/views/assets/Asset/AssetCreateUpdate/WebCreateUpdate.vue'), + hidden: true, + meta: { title: i18n.t('route.AssetCreate'), activeMenu: '/console/assets/assets' } + }, + { + path: ':id/update', + name: 'WebUpdate', + component: () => import('@/views/assets/Asset/AssetCreateUpdate/WebCreateUpdate.vue'), hidden: true, meta: { title: i18n.t('route.AssetUpdate'), activeMenu: '/console/assets/assets' } } diff --git a/src/views/assets/Asset/AssetCreateUpdate/CloudsPlatformCreateUpdate.vue b/src/views/assets/Asset/AssetCreateUpdate/CloudsPlatformCreateUpdate.vue new file mode 100644 index 000000000..d4553e919 --- /dev/null +++ b/src/views/assets/Asset/AssetCreateUpdate/CloudsPlatformCreateUpdate.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/src/views/assets/Database/DatabaseCreateUpdate.vue b/src/views/assets/Asset/AssetCreateUpdate/DatabaseCreateUpdate.vue similarity index 53% rename from src/views/assets/Database/DatabaseCreateUpdate.vue rename to src/views/assets/Asset/AssetCreateUpdate/DatabaseCreateUpdate.vue index fcdb76d30..d4553e919 100644 --- a/src/views/assets/Database/DatabaseCreateUpdate.vue +++ b/src/views/assets/Asset/AssetCreateUpdate/DatabaseCreateUpdate.vue @@ -29,15 +29,39 @@ export default { createSuccessNextRoute: { name: 'AssetDetail' }, hasDetailInMsg: false, fields: [ - [this.$t('common.Basic'), ['platform', 'hostname', 'ip', 'port', 'db_name']], + [this.$t('common.Basic'), ['name', 'ip', 'platform', 'db_name']], + [this.$t('assets.Protocols'), ['protocols']], [this.$t('assets.Domain'), ['domain']], [this.$t('assets.Node'), ['nodes']], [this.$t('assets.Label'), ['labels']], [this.$t('common.Other'), ['is_active', 'comment']] ], - fieldsMeta: { - ...assetFieldsMeta + fieldsMeta: assetFieldsMeta(this) + } + }, + mounted() { + this.setPlatformInitial() + }, + methods: { + async setPlatformInitial() { + const nodesInitial = [] + if (this.$route.query['node']) { + nodesInitial.push(this.$route.query.node) } + const platformId = this.$route.query['platform'] || 1 + const url = `/api/v1/assets/platforms/${platformId}/` + this.platform = await this.$axios.get(url) + const initial = { + is_active: true, + platform: parseInt(platformId), + protocols: this.platform.protocols_default, + nodes: nodesInitial, + domain: this.platform.domain_default + } + const constraints = this.platform['type_constraints'] + this.fieldsMeta.protocols.el.choices = constraints['protocols'] + this.initial = initial + this.loading = false } } } diff --git a/src/views/assets/Host/HostCreateUpdate.vue b/src/views/assets/Asset/AssetCreateUpdate/HostCreateUpdate.vue similarity index 97% rename from src/views/assets/Host/HostCreateUpdate.vue rename to src/views/assets/Asset/AssetCreateUpdate/HostCreateUpdate.vue index 3c7a8f459..a50b656f8 100644 --- a/src/views/assets/Host/HostCreateUpdate.vue +++ b/src/views/assets/Asset/AssetCreateUpdate/HostCreateUpdate.vue @@ -4,7 +4,7 @@ + + diff --git a/src/views/assets/Asset/AssetCreateUpdate/WebCreateUpdate.vue b/src/views/assets/Asset/AssetCreateUpdate/WebCreateUpdate.vue new file mode 100644 index 000000000..a50b656f8 --- /dev/null +++ b/src/views/assets/Asset/AssetCreateUpdate/WebCreateUpdate.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/src/views/assets/Asset/AssetList/AllList.vue b/src/views/assets/Asset/AssetList/AllList.vue new file mode 100644 index 000000000..e7b556ee9 --- /dev/null +++ b/src/views/assets/Asset/AssetList/AllList.vue @@ -0,0 +1,295 @@ + + + + + diff --git a/src/views/assets/Asset/AssetList/CloudsPlatformList.vue b/src/views/assets/Asset/AssetList/CloudsPlatformList.vue new file mode 100644 index 000000000..ba0f13d92 --- /dev/null +++ b/src/views/assets/Asset/AssetList/CloudsPlatformList.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/src/views/assets/Asset/AssetList/DatabaseList.vue b/src/views/assets/Asset/AssetList/DatabaseList.vue new file mode 100644 index 000000000..f96465065 --- /dev/null +++ b/src/views/assets/Asset/AssetList/DatabaseList.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/src/views/assets/Asset/AssetList/HostList.vue b/src/views/assets/Asset/AssetList/HostList.vue new file mode 100644 index 000000000..fa6f990f7 --- /dev/null +++ b/src/views/assets/Asset/AssetList/HostList.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/src/views/assets/Asset/AssetList/NetworkList.vue b/src/views/assets/Asset/AssetList/NetworkList.vue new file mode 100644 index 000000000..453906355 --- /dev/null +++ b/src/views/assets/Asset/AssetList/NetworkList.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/src/views/assets/Asset/AssetList/WebList.vue b/src/views/assets/Asset/AssetList/WebList.vue new file mode 100644 index 000000000..da95f5e99 --- /dev/null +++ b/src/views/assets/Asset/AssetList/WebList.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/src/views/assets/Asset/AssetList/AssetBulkUpdateDialog.vue b/src/views/assets/Asset/AssetList/components/AssetBulkUpdateDialog.vue similarity index 100% rename from src/views/assets/Asset/AssetList/AssetBulkUpdateDialog.vue rename to src/views/assets/Asset/AssetList/components/AssetBulkUpdateDialog.vue diff --git a/src/views/assets/Database/HostList.vue b/src/views/assets/Asset/AssetList/components/BaseList.vue similarity index 63% rename from src/views/assets/Database/HostList.vue rename to src/views/assets/Asset/AssetList/components/BaseList.vue index f0e5a4193..fa6cbe878 100644 --- a/src/views/assets/Database/HostList.vue +++ b/src/views/assets/Asset/AssetList/components/BaseList.vue @@ -1,40 +1,61 @@ diff --git a/src/views/assets/Asset/AssetList/NodeAssetsUpdateDialog.vue b/src/views/assets/Asset/AssetList/components/NodeAssetsUpdateDialog.vue similarity index 100% rename from src/views/assets/Asset/AssetList/NodeAssetsUpdateDialog.vue rename to src/views/assets/Asset/AssetList/components/NodeAssetsUpdateDialog.vue diff --git a/src/views/assets/Asset/AssetList/PlatformDialog.vue b/src/views/assets/Asset/AssetList/components/PlatformDialog.vue similarity index 99% rename from src/views/assets/Asset/AssetList/PlatformDialog.vue rename to src/views/assets/Asset/AssetList/components/PlatformDialog.vue index 7dc162a83..b6c0f1800 100644 --- a/src/views/assets/Asset/AssetList/PlatformDialog.vue +++ b/src/views/assets/Asset/AssetList/components/PlatformDialog.vue @@ -128,6 +128,7 @@ export default { host: 'HostCreate', database: 'DatabaseCreate', cloud: 'CloudCreate', + web: 'WebCreate', remote_app: 'RemoteAppCreate' } const route = mapper[platform.category.value] || 'HostCreate' diff --git a/src/views/assets/Asset/AssetList/TreeMenu.vue b/src/views/assets/Asset/AssetList/components/TreeMenu.vue similarity index 100% rename from src/views/assets/Asset/AssetList/TreeMenu.vue rename to src/views/assets/Asset/AssetList/components/TreeMenu.vue diff --git a/src/views/assets/Asset/AssetList/index.vue b/src/views/assets/Asset/AssetList/index.vue index cb32d08a1..9635e2da3 100644 --- a/src/views/assets/Asset/AssetList/index.vue +++ b/src/views/assets/Asset/AssetList/index.vue @@ -1,306 +1,66 @@ - diff --git a/src/views/assets/Host/HostList.vue b/src/views/assets/Host/HostList.vue deleted file mode 100644 index f0e5a4193..000000000 --- a/src/views/assets/Host/HostList.vue +++ /dev/null @@ -1,107 +0,0 @@ - - - - -