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