From 5e377c25728be3460ecdd04dbf2170ef957bcff5 Mon Sep 17 00:00:00 2001 From: ibuler Date: Tue, 26 Oct 2021 15:03:04 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BF=AE=E6=94=B9=E5=B7=A5=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/GenericDetailPage/index.vue | 1 + src/layout/components/NavHeader/index.vue | 3 +- src/router/index.js | 3 +- src/router/tickets.js | 116 ++++++++++-------- src/router/userPage.js | 2 +- .../tickets/RequestAssetPerm/Detail/index.vue | 1 + src/views/tickets/TicketDetail/index.vue | 26 +++- src/views/tickets/TicketListTable.vue | 2 +- 8 files changed, 94 insertions(+), 60 deletions(-) diff --git a/src/layout/components/GenericDetailPage/index.vue b/src/layout/components/GenericDetailPage/index.vue index d215d3f6f..fcf412b55 100644 --- a/src/layout/components/GenericDetailPage/index.vue +++ b/src/layout/components/GenericDetailPage/index.vue @@ -186,6 +186,7 @@ export default { const url = this.validActions.detailApiUrl return this.$axios.get(url, { disableFlashErrorMsg: true }).then(data => { this.$emit('update:object', data) + this.$emit('getObjectDone', data) }).catch(error => { if (error.response && error.response.status === 404) { const msg = this.$t('common.ObjectNotFoundOrDeletedMsg') diff --git a/src/layout/components/NavHeader/index.vue b/src/layout/components/NavHeader/index.vue index 04182ca2c..1cb76ee24 100644 --- a/src/layout/components/NavHeader/index.vue +++ b/src/layout/components/NavHeader/index.vue @@ -61,8 +61,7 @@ export default { }, showTickets() { return this.publicSettings.TICKETS_ENABLED && - this.publicSettings.XPACK_LICENSE_IS_VALID && - !this.isOrgAuditor + this.publicSettings['XPACK_LICENSE_IS_VALID'] } }, methods: { diff --git a/src/router/index.js b/src/router/index.js index 479f4c9b6..dfd5744af 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -167,7 +167,8 @@ export const allRoleRoutes = [ children: TicketsRoutes, hidden: true, meta: { - licenseRequired: true + licenseRequired: true, + permissions: [rolec.PERM_AUDIT] // hidden: ({ settings }) => { // return !settings.TICKETS_ENABLED // } diff --git a/src/router/tickets.js b/src/router/tickets.js index 76fbffea3..430324727 100644 --- a/src/router/tickets.js +++ b/src/router/tickets.js @@ -1,61 +1,71 @@ import i18n from '@/i18n/i18n' import empty from '@/layout/empty' +import rolec from '@/utils/role' export default [ { path: 'tickets', - name: 'TicketList', - component: () => import('@/views/tickets/TicketList'), - meta: { title: i18n.t('route.Tickets'), icon: 'check-square-o', activeMenu: '/tickets/tickets' }, - hidden: true - }, - { - path: 'tickets/:id', - name: 'TicketDetail', - component: () => import('@/views/tickets/TicketDetail/index'), - meta: { title: i18n.t('route.TicketDetail'), activeMenu: '/tickets/tickets' }, - hidden: true - }, - { - path: 'tickets/request-asset-perm/create', - name: 'RequestAssetPermTicketCreateUpdate', - component: () => import('@/views/tickets/RequestAssetPerm/RequestAssetPermTicketCreateUpdate'), - meta: { title: i18n.t('route.TicketCreate'), activeMenu: '/tickets/tickets' }, - hidden: true - }, - { - path: 'tickets/request-asset-perm/:id', - name: 'AssetsTicketDetail', - component: () => import('@/views/tickets/RequestAssetPerm/Detail/index'), - meta: { title: i18n.t('route.TicketDetail'), activeMenu: '/tickets/tickets' }, - hidden: true - }, - { - path: 'tickets/login-asset-confirm/:id', - name: 'loginAssetTicketDetail', - component: () => import('@/views/tickets/LoginAssetConfirm/Detail/index'), - meta: { title: i18n.t('route.TicketDetail'), activeMenu: '/tickets/tickets' }, - hidden: true - }, - { - path: 'tickets/request-application-perm/create', - name: 'RequestApplicationPermTicketCreateUpdate', - component: () => import('@/views/tickets/RequestApplicationPerm/RequestApplicationPermTicketCreateUpdate'), - meta: { title: i18n.t('route.TicketCreate'), activeMenu: '/tickets/tickets' }, - hidden: true - }, - { - path: 'tickets/request-application-perm/:id', - name: 'AppsTicketDetail', - component: () => import('@/views/tickets/RequestApplicationPerm/Detail/index'), - meta: { title: i18n.t('route.TicketDetail'), activeMenu: '/tickets/tickets' }, - hidden: true - }, - { - path: 'tickets/command-confirm/:id', - name: 'CommandConfirmDetail', - component: () => import('@/views/tickets/CommandConfirm/Detail/index'), - meta: { title: i18n.t('route.CommandConfirm'), activeMenu: '/tickets/tickets' }, - hidden: true + component: empty, + meta: { permissions: [rolec.PERM_AUDIT] }, + hidden: true, + redirect: '', + children: [ + { + path: '', + name: 'TicketList', + component: () => import('@/views/tickets/TicketList'), + meta: { title: i18n.t('route.Tickets'), icon: 'check-square-o', activeMenu: '/tickets/tickets', permissions: [rolec.PERM_AUDIT] }, + hidden: true + }, + { + path: 'request-asset-perm/create', + name: 'RequestAssetPermTicketCreateUpdate', + component: () => import('@/views/tickets/RequestAssetPerm/RequestAssetPermTicketCreateUpdate'), + meta: { title: i18n.t('route.TicketCreate'), activeMenu: '/tickets/tickets', permissions: [rolec.PERM_AUDIT] }, + hidden: true + }, + { + path: 'request-asset-perm/:id', + name: 'AssetsTicketDetail', + component: () => import('@/views/tickets/RequestAssetPerm/Detail/index'), + meta: { title: i18n.t('route.TicketDetail'), activeMenu: '/tickets/tickets', permissions: [rolec.PERM_AUDIT] }, + hidden: true + }, + { + path: 'login-asset-confirm/:id', + name: 'LoginAssetTicketDetail', + component: () => import('@/views/tickets/LoginAssetConfirm/Detail/index'), + meta: { title: i18n.t('route.TicketDetail'), activeMenu: '/tickets/tickets', permissions: [rolec.PERM_AUDIT] }, + hidden: true + }, + { + path: 'request-application-perm/create', + name: 'RequestApplicationPermTicketCreateUpdate', + component: () => import('@/views/tickets/RequestApplicationPerm/RequestApplicationPermTicketCreateUpdate'), + meta: { title: i18n.t('route.TicketCreate'), activeMenu: '/tickets/tickets', permissions: [rolec.PERM_AUDIT] }, + hidden: true + }, + { + path: 'request-application-perm/:id', + name: 'AppsTicketDetail', + component: () => import('@/views/tickets/RequestApplicationPerm/Detail/index'), + meta: { title: i18n.t('route.TicketDetail'), activeMenu: '/tickets/tickets', permissions: [rolec.PERM_AUDIT] }, + hidden: true + }, + { + path: 'command-confirm/:id', + name: 'CommandConfirmDetail', + component: () => import('@/views/tickets/CommandConfirm/Detail/index'), + meta: { title: i18n.t('route.CommandConfirm'), activeMenu: '/tickets/tickets', permissions: [rolec.PERM_AUDIT] }, + hidden: true + }, + { + path: ':id', + name: 'TicketDetail', + component: () => import('@/views/tickets/TicketDetail/index'), + meta: { title: i18n.t('route.TicketDetail'), activeMenu: '/tickets/tickets', permissions: [rolec.PERM_AUDIT] }, + hidden: true + } + ] }, { path: 'flows', diff --git a/src/router/userPage.js b/src/router/userPage.js index b9b21fbf1..93fcc4d21 100644 --- a/src/router/userPage.js +++ b/src/router/userPage.js @@ -105,7 +105,7 @@ export default [ }, { path: 'tickets/login-asset-confirm/:id', - name: 'loginAssetTicketDetail', + name: 'LoginAssetTicketDetail', component: () => import('@/views/tickets/LoginAssetConfirm/Detail/index'), meta: { title: i18n.t('route.TicketDetail'), activeMenu: '/tickets', permissions: [rolec.PERM_USE] }, hidden: true diff --git a/src/views/tickets/RequestAssetPerm/Detail/index.vue b/src/views/tickets/RequestAssetPerm/Detail/index.vue index a95bfc7ca..ceaca34ed 100644 --- a/src/views/tickets/RequestAssetPerm/Detail/index.vue +++ b/src/views/tickets/RequestAssetPerm/Detail/index.vue @@ -35,6 +35,7 @@ export default { } }, mounted() { + console.log('Ticket detail mounted', this.$route) }, methods: { getObjectName() { diff --git a/src/views/tickets/TicketDetail/index.vue b/src/views/tickets/TicketDetail/index.vue index 8d9ed98db..2b13dd8f2 100644 --- a/src/views/tickets/TicketDetail/index.vue +++ b/src/views/tickets/TicketDetail/index.vue @@ -1,5 +1,11 @@ @@ -22,7 +28,8 @@ export default { type_display: '', status: '', assignees_display: '', - date_created: '' + date_created: '', + done: 0 }, config: { activeMenu: 'TicketDetail', @@ -40,6 +47,21 @@ export default { methods: { getObjectName() { return this.ticket.title + }, + afterGetTicket(ticket) { + const ticketRouteMapper = { + 'apply_asset': 'AssetsTicketDetail', + 'apply_application': 'AppsTicketDetail', + 'login_confirm': 'LoginAssetTicketDetail', + 'login_asset_confirm': 'CommandConfirmDetail' + } + const routeName = ticketRouteMapper[ticket.type] + setTimeout(() => { + this.$router.push({ + name: routeName, + params: { id: this.$route.params['id'] } + }) + }) } } } diff --git a/src/views/tickets/TicketListTable.vue b/src/views/tickets/TicketListTable.vue index 809b36c32..91fea1e4e 100644 --- a/src/views/tickets/TicketListTable.vue +++ b/src/views/tickets/TicketListTable.vue @@ -37,7 +37,7 @@ export default { } else if (row.type === 'apply_application') { return 'AppsTicketDetail' } else if (row.type === 'login_asset_confirm') { - return 'loginAssetTicketDetail' + return 'LoginAssetTicketDetail' } else if (row.type === 'command_confirm') { return 'CommandConfirmDetail' } else {