diff --git a/src/components/AssetSelect/index.vue b/src/components/AssetSelect/index.vue
new file mode 100644
index 000000000..6f4a4e6e2
--- /dev/null
+++ b/src/components/AssetSelect/index.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/AutoDataForm/index.vue b/src/components/AutoDataForm/index.vue
index ee1ad6dd6..2b5a49663 100644
--- a/src/components/AutoDataForm/index.vue
+++ b/src/components/AutoDataForm/index.vue
@@ -131,6 +131,7 @@ export default {
field = this.generateFieldByName(name, field)
field = this.generateFieldByOther(field, fieldMeta)
field = Object.assign(field, this.fieldsMeta[name] || {})
+ console.log(field)
_.set(field, 'attrs.error', '')
return field
},
diff --git a/src/components/ListTable/index.vue b/src/components/ListTable/index.vue
index a75d38f43..b7400134d 100644
--- a/src/components/ListTable/index.vue
+++ b/src/components/ListTable/index.vue
@@ -45,6 +45,7 @@ import Dialog from '../Dialog'
import IBox from '../IBox'
import TableAction from './TableAction'
import { createSourceIdCache } from '@/api/common'
+import Emitter from '@/mixins/emitter'
export default {
name: 'ListTable',
@@ -54,6 +55,7 @@ export default {
Dialog,
IBox
},
+ mixins: [Emitter],
props: {
// 定义 table 的配置
tableConfig: {
@@ -116,6 +118,10 @@ export default {
},
handleSelectionChange(val) {
this.selectedRows = val
+ var obj = {}
+ val.forEach((item, index) => { obj[index] = item })
+ // 已知Bug,必须避免数组扁平化
+ this.dispatch('AssetSelect', 'SelectionChange', obj)
},
reloadTable() {
this.$refs.dataTable.$refs.dataTable.getList()
diff --git a/src/components/index.js b/src/components/index.js
index 17bb8a290..2b15faaaa 100644
--- a/src/components/index.js
+++ b/src/components/index.js
@@ -14,6 +14,7 @@ export { default as ListTable } from './ListTable'
export { default as RelationCard } from './RelationCard'
export { default as ActiveCard } from './ActiveCard'
export { default as Select2 } from './Select2'
+export { default as AssetSelect } from './AssetSelect'
export { default as SvgIcon } from './SvgIcon'
export { default as TreeTable } from './TreeTable'
export { default as IBox } from './IBox'
diff --git a/src/mixins/emitter.js b/src/mixins/emitter.js
new file mode 100644
index 000000000..9cc1b1c84
--- /dev/null
+++ b/src/mixins/emitter.js
@@ -0,0 +1,36 @@
+function broadcast(componentName, eventName, params) {
+ this.$children.forEach(child => {
+ var name = child.$options.componentName
+
+ if (name === componentName) {
+ child.$emit.apply(child, [eventName].concat(params))
+ } else {
+ broadcast.apply(child, [componentName, eventName].concat([params]))
+ }
+ })
+}
+// 已知Issues
+// https://github.com/ElemeFE/element/issues/17229
+
+export default {
+ methods: {
+ dispatch(componentName, eventName, params) {
+ var parent = this.$parent || this.$root
+ var name = parent.$options.componentName
+
+ while (parent && (!name || name !== componentName)) {
+ parent = parent.$parent
+
+ if (parent) {
+ name = parent.$options.componentName
+ }
+ }
+ if (parent) {
+ parent.$emit.apply(parent, [eventName].concat(params))
+ }
+ },
+ broadcast(componentName, eventName, params) {
+ broadcast.call(this, componentName, eventName, params)
+ }
+ }
+}
diff --git a/src/router/index.js b/src/router/index.js
index 1e139492f..e4c94a216 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -131,13 +131,13 @@ export const constantRoutes = [
{
path: 'domains',
name: 'DomainList',
- component: () => import('@/views/assets/DomainList.vue'),
+ component: () => import('@/views/assets/Domain/DomainList.vue'),
meta: { title: 'DomainList' }
},
{
path: 'domains/create',
name: 'DomainCreate',
- component: () => import('@/views/assets/DomainCreateUpdate.vue'),
+ component: () => import('@/views/assets/Domain/DomainCreateUpdate.vue'),
meta: { title: 'DomainList' },
hidden: true
},
@@ -151,54 +151,61 @@ export const constantRoutes = [
{
path: 'admin-users',
name: 'AdminUserList',
- component: () => import('@/views/assets/AdminUserList'),
+ component: () => import('@/views/assets/AdminUser/AdminUserList'),
meta: { title: 'AdminUserList' }
},
{
path: 'admin-users/create',
- component: () => import('@/views/assets/AdminUserCreateUpdate.vue'), // Parent router-view
+ component: () => import('@/views/assets/AdminUser/AdminUserCreateUpdate.vue'), // Parent router-view
name: 'AdminUserCreateUpdate',
meta: { title: 'AdminUserCreate' },
hidden: true
},
{
path: 'platform/update/:id',
- component: () => import('@/views/assets/PlatformCreateUpdate.vue'), // Parent router-view
+ component: () => import('@/views/assets/Platform/PlatformCreateUpdate.vue'), // Parent router-view
name: 'PlatformUpdate',
meta: { title: 'PlatformUpdate' },
hidden: true
},
+ {
+ path: 'platform/detail/:id',
+ component: () => import('@/views/assets/Platform/PlatformDetail.vue'), // Parent router-view
+ name: 'PlatformDetail',
+ meta: { title: 'PlatformDetail' },
+ hidden: true
+ },
{
path: 'platform/create',
- component: () => import('@/views/assets/PlatformCreateUpdate.vue'), // Parent router-view
+ component: () => import('@/views/assets/Platform/PlatformCreateUpdate.vue'), // Parent router-view
name: 'PlatformCreate',
meta: { title: 'PlatformCreate' },
hidden: true
},
{
path: 'cmd-filters/update/:id',
- component: () => import('@/views/assets/CommandFilterCreateUpdate.vue'), // Parent router-view
+ component: () => import('@/views/assets/CommandFilter/CommandFilterCreateUpdate.vue'), // Parent router-view
name: 'CommandFilterUpdate',
meta: { title: 'CommandFilterUpdate' },
hidden: true
},
{
path: 'cmd-filters/create',
- component: () => import('@/views/assets/CommandFilterCreateUpdate.vue'), // Parent router-view
+ component: () => import('@/views/assets/CommandFilter/CommandFilterCreateUpdate.vue'), // Parent router-view
name: 'CommandFilterCreate',
meta: { title: 'CommandFilterCreate' },
hidden: true
},
{
path: 'cmd-filters/:id',
- component: () => import('@/views/assets/CommandFilterDetail.vue'), // Parent router-view
+ component: () => import('@/views/assets/CommandFilter/CommandFilterDetail.vue'), // Parent router-view
name: 'CommandFilterDetail',
meta: { title: 'CommandFilterDetail' },
hidden: true
},
{
path: 'admin-users/:id',
- component: () => import('@/views/assets/AdminUserDetail.vue'), // Parent router-view
+ component: () => import('@/views/assets/AdminUser/AdminUserDetail.vue'), // Parent router-view
name: 'AdminUserDetail',
meta: { title: 'AdminUserDetail' },
hidden: true
@@ -210,22 +217,35 @@ export const constantRoutes = [
component: () => import('@/views/assets/SystemUserList.vue'),
meta: { title: 'SystemUserList' }
},
+ {
+ path: 'labels/create',
+ name: 'LabelCreate',
+ component: () => import('@/views/assets/Label/LabelCreateUpdate.vue'),
+ meta: { title: 'LabelCreate' },
+ hidden: true
+ },
+ {
+ path: 'labels/update/:id',
+ name: 'LabelUpdate',
+ component: () => import('@/views/assets/Label/LabelCreateUpdate.vue'),
+ meta: { title: 'LabelUpdate' }, hidden: true
+ },
{
path: 'labels',
name: 'LabelList',
- component: () => import('@/views/assets/LabelList.vue'),
+ component: () => import('@/views/assets/Label/LabelList.vue'),
meta: { title: 'LabelList' }
},
{
path: 'cmd-filters',
name: 'CommandFilterList',
- component: () => import('@/views/assets/CommandFilterList.vue'),
+ component: () => import('@/views/assets/CommandFilter/CommandFilterList.vue'),
meta: { title: 'CommandFilterList' }
},
{
path: 'platforms',
name: 'PlatformList',
- component: () => import('@/views/assets/PlatformList'),
+ component: () => import('@/views/assets/Platform/PlatformList'),
meta: { title: 'PlatformList' }
}
]
diff --git a/src/views/assets/AdminUserCreateUpdate.vue b/src/views/assets/AdminUser/AdminUserCreateUpdate.vue
similarity index 100%
rename from src/views/assets/AdminUserCreateUpdate.vue
rename to src/views/assets/AdminUser/AdminUserCreateUpdate.vue
diff --git a/src/views/assets/AdminUserDetail.vue b/src/views/assets/AdminUser/AdminUserDetail.vue
similarity index 100%
rename from src/views/assets/AdminUserDetail.vue
rename to src/views/assets/AdminUser/AdminUserDetail.vue
diff --git a/src/views/assets/AdminUserList.vue b/src/views/assets/AdminUser/AdminUserList.vue
similarity index 100%
rename from src/views/assets/AdminUserList.vue
rename to src/views/assets/AdminUser/AdminUserList.vue
diff --git a/src/views/assets/CommandFilterCreateUpdate.vue b/src/views/assets/CommandFilter/CommandFilterCreateUpdate.vue
similarity index 100%
rename from src/views/assets/CommandFilterCreateUpdate.vue
rename to src/views/assets/CommandFilter/CommandFilterCreateUpdate.vue
diff --git a/src/views/assets/CommandFilterDetail.vue b/src/views/assets/CommandFilter/CommandFilterDetail.vue
similarity index 100%
rename from src/views/assets/CommandFilterDetail.vue
rename to src/views/assets/CommandFilter/CommandFilterDetail.vue
diff --git a/src/views/assets/CommandFilterList.vue b/src/views/assets/CommandFilter/CommandFilterList.vue
similarity index 100%
rename from src/views/assets/CommandFilterList.vue
rename to src/views/assets/CommandFilter/CommandFilterList.vue
diff --git a/src/views/assets/DomainCreateUpdate.vue b/src/views/assets/Domain/DomainCreateUpdate.vue
similarity index 93%
rename from src/views/assets/DomainCreateUpdate.vue
rename to src/views/assets/Domain/DomainCreateUpdate.vue
index dbf946ba6..0a7300813 100644
--- a/src/views/assets/DomainCreateUpdate.vue
+++ b/src/views/assets/Domain/DomainCreateUpdate.vue
@@ -5,7 +5,7 @@
+
+
diff --git a/src/views/assets/LabelList.vue b/src/views/assets/Label/LabelList.vue
similarity index 100%
rename from src/views/assets/LabelList.vue
rename to src/views/assets/Label/LabelList.vue
diff --git a/src/views/assets/PlatformCreateUpdate.vue b/src/views/assets/Platform/PlatformCreateUpdate.vue
similarity index 100%
rename from src/views/assets/PlatformCreateUpdate.vue
rename to src/views/assets/Platform/PlatformCreateUpdate.vue
diff --git a/src/views/assets/PlatformDetail.vue b/src/views/assets/Platform/PlatformDetail.vue
similarity index 59%
rename from src/views/assets/PlatformDetail.vue
rename to src/views/assets/Platform/PlatformDetail.vue
index 3d973b709..f66ba92e4 100644
--- a/src/views/assets/PlatformDetail.vue
+++ b/src/views/assets/Platform/PlatformDetail.vue
@@ -1,13 +1,25 @@
-
+
+
+
+
+
+
+
+
+
+
+