perf: 修改工单

This commit is contained in:
ibuler
2021-10-26 15:03:04 +08:00
committed by 老广
parent d50b1201e7
commit 5e377c2572
8 changed files with 94 additions and 60 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -35,6 +35,7 @@ export default {
}
},
mounted() {
console.log('Ticket detail mounted', this.$route)
},
methods: {
getObjectName() {

View File

@@ -1,5 +1,11 @@
<template>
<GenericDetailPage :object.sync="ticket" :active-menu.sync="config.activeMenu" v-bind="config" v-on="$listeners">
<GenericDetailPage
:object.sync="ticket"
:active-menu.sync="config.activeMenu"
v-bind="config"
@getObjectDone="afterGetTicket"
v-on="$listeners"
>
<component :is="config.activeMenu" :object="ticket" />
</GenericDetailPage>
</template>
@@ -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'] }
})
})
}
}
}

View File

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