From 27cffad5ce70aafd38fd91faa5b33712003b3f87 Mon Sep 17 00:00:00 2001 From: OrangeM21 Date: Sun, 26 Apr 2020 21:16:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[hotfix]=E7=A7=BB=E5=8A=A8=E8=B5=84?= =?UTF-8?q?=E4=BA=A7=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/index.js | 47 ++++++++----------- .../{ => AdminUser}/AdminUserCreateUpdate.vue | 0 .../{ => AdminUser}/AdminUserDetail.vue | 0 .../assets/{ => AdminUser}/AdminUserList.vue | 0 .../CommandFilterCreateUpdate.vue | 0 .../CommandFilterDetail.vue | 0 .../{ => CommandFilter}/CommandFilterList.vue | 0 .../{ => Domain}/DomainCreateUpdate.vue | 0 src/views/assets/{ => Domain}/DomainList.vue | 0 .../{ => Platform}/PlatformCreateUpdate.vue | 0 .../assets/{ => Platform}/PlatformDetail.vue | 16 ++++++- .../assets/{ => Platform}/PlatformList.vue | 0 12 files changed, 34 insertions(+), 29 deletions(-) rename src/views/assets/{ => AdminUser}/AdminUserCreateUpdate.vue (100%) rename src/views/assets/{ => AdminUser}/AdminUserDetail.vue (100%) rename src/views/assets/{ => AdminUser}/AdminUserList.vue (100%) rename src/views/assets/{ => CommandFilter}/CommandFilterCreateUpdate.vue (100%) rename src/views/assets/{ => CommandFilter}/CommandFilterDetail.vue (100%) rename src/views/assets/{ => CommandFilter}/CommandFilterList.vue (100%) rename src/views/assets/{ => Domain}/DomainCreateUpdate.vue (100%) rename src/views/assets/{ => Domain}/DomainList.vue (100%) rename src/views/assets/{ => Platform}/PlatformCreateUpdate.vue (100%) rename src/views/assets/{ => Platform}/PlatformDetail.vue (59%) rename src/views/assets/{ => Platform}/PlatformList.vue (100%) diff --git a/src/router/index.js b/src/router/index.js index 80d99b242..b183ce144 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 @@ -213,19 +220,19 @@ export const constantRoutes = [ { path: 'labels', name: 'LabelList', - component: () => import('@/views/assets/LabelList.vue'), + component: () => import('@/views/assets//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' } } ] @@ -416,20 +423,6 @@ export const constantRoutes = [ name: 'Storage', component: () => import('@/views/sessions/Storage'), hidden: true - }, - { - path: 'replay-storage/create', - name: 'CreateReplyStorage', - component: () => import('@/views/sessions/ReplyStorageCreate'), - meta: { title: 'CreateReplyStorage' }, - hidden: true - }, - { - path: 'command-storage/create', - name: 'CreateCommandStorage', - component: () => import('@/views/sessions/CommandStorageCreate'), - meta: { title: 'CreateCommandStorage' }, - hidden: true } ] }, 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 100% rename from src/views/assets/DomainCreateUpdate.vue rename to src/views/assets/Domain/DomainCreateUpdate.vue diff --git a/src/views/assets/DomainList.vue b/src/views/assets/Domain/DomainList.vue similarity index 100% rename from src/views/assets/DomainList.vue rename to src/views/assets/Domain/DomainList.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 @@ + + 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 f70598470..cef3d0b8a 100644 --- a/src/components/ListTable/index.vue +++ b/src/components/ListTable/index.vue @@ -45,6 +45,7 @@ import AutoDataTable from '../AutoDataTable' import Dialog from '../Dialog' import TableAction from './TableAction' import { createSourceIdCache } from '@/api/common' +import Emitter from '@/mixins/emitter' export default { name: 'ListTable', @@ -53,6 +54,7 @@ export default { TableAction, Dialog }, + mixins: [Emitter], props: { // 定义 table 的配置 tableConfig: { @@ -115,6 +117,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 21bb26775..c4a8a5fe0 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' 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 b183ce144..1a2eb1624 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -217,10 +217,23 @@ 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' } }, { diff --git a/src/views/assets/Domain/DomainCreateUpdate.vue b/src/views/assets/Domain/DomainCreateUpdate.vue index dbf946ba6..0a7300813 100644 --- a/src/views/assets/Domain/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