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 @@
-
-
-
-
-
-
-