mirror of
https://github.com/jumpserver/lina.git
synced 2025-08-17 14:27:18 +00:00
perf: update menu
This commit is contained in:
parent
83bb13b806
commit
7394ff27a5
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
|
"[vue]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"prettier.printWidth": 100,
|
||||||
|
"prettier.singleAttributePerLine": true,
|
||||||
|
"editor.wordWrap": "on"
|
||||||
|
}
|
@ -422,7 +422,6 @@ export default {
|
|||||||
object = await this.getObjectDetail(this.iUrl, this.actionId)
|
object = await this.getObjectDetail(this.iUrl, this.actionId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log('Object 2: ', object)
|
|
||||||
if (object) {
|
if (object) {
|
||||||
object = _.cloneDeep(object)
|
object = _.cloneDeep(object)
|
||||||
this.$emit('update:object', object)
|
this.$emit('update:object', object)
|
||||||
@ -431,9 +430,11 @@ export default {
|
|||||||
return object
|
return object
|
||||||
},
|
},
|
||||||
async getObjectDetail(url, id) {
|
async getObjectDetail(url, id) {
|
||||||
|
if (!id) {
|
||||||
|
return
|
||||||
|
}
|
||||||
this.$log.debug('Get object detail: ', url)
|
this.$log.debug('Get object detail: ', url)
|
||||||
let data = await this.$axios.get(url, { params: { id }})
|
let data = await this.$axios.get(url, { params: { id }})
|
||||||
console.log('Is array: ', Array.isArray(data))
|
|
||||||
if (Array.isArray(data)) {
|
if (Array.isArray(data)) {
|
||||||
data = {}
|
data = {}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ import i18n from '@/i18n/i18n'
|
|||||||
import empty from '@/layout/empty'
|
import empty from '@/layout/empty'
|
||||||
import XPackRoutes from './xpack'
|
import XPackRoutes from './xpack'
|
||||||
|
|
||||||
const globalSubmenu = () => import('@/layout/globalOrg.vue')
|
|
||||||
export default [
|
export default [
|
||||||
{
|
{
|
||||||
path: 'assets',
|
path: 'assets',
|
||||||
@ -292,45 +291,6 @@ export default [
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
path: 'platforms',
|
|
||||||
component: globalSubmenu,
|
|
||||||
meta: {
|
|
||||||
permissions: ['assets.view_platform'],
|
|
||||||
resource: 'platform',
|
|
||||||
icon: 'platform',
|
|
||||||
disableOrgsChange: true
|
|
||||||
},
|
|
||||||
redirect: '',
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
name: 'PlatformList',
|
|
||||||
component: () => import('@/views/assets/Platform/PlatformList'),
|
|
||||||
meta: { title: i18n.t('PlatformList') }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'create',
|
|
||||||
component: () => import('@/views/assets/Platform/PlatformCreateUpdate.vue'), // Parent router-view
|
|
||||||
name: 'PlatformCreate',
|
|
||||||
hidden: true,
|
|
||||||
meta: { title: i18n.t('PlatformCreate') }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: ':id/update',
|
|
||||||
component: () => import('@/views/assets/Platform/PlatformCreateUpdate.vue'), // Parent router-view
|
|
||||||
name: 'PlatformUpdate',
|
|
||||||
hidden: true,
|
|
||||||
meta: { title: i18n.t('PlatformUpdate'), permissions: [] }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: ':id',
|
|
||||||
component: () => import('@/views/assets/Platform/PlatformDetail'), // Parent router-view
|
|
||||||
name: 'PlatformDetail',
|
|
||||||
hidden: true,
|
|
||||||
meta: { title: i18n.t('PlatformDetail') }
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
...XPackRoutes
|
...XPackRoutes
|
||||||
]
|
]
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
import i18n from '@/i18n/i18n'
|
import i18n from '@/i18n/i18n'
|
||||||
import empty from '@/layout/empty'
|
import empty from '@/layout/empty'
|
||||||
|
|
||||||
const globalSubmenu = () => import('@/layout/globalOrg.vue')
|
|
||||||
|
|
||||||
export default [
|
export default [
|
||||||
{
|
{
|
||||||
path: 'users',
|
path: 'users',
|
||||||
@ -91,64 +89,5 @@ export default [
|
|||||||
meta: { title: i18n.t('UserGroupDetail') }
|
meta: { title: i18n.t('UserGroupDetail') }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'roles',
|
|
||||||
component: globalSubmenu,
|
|
||||||
redirect: '',
|
|
||||||
meta: {
|
|
||||||
permissions: ['rbac.view_orgrole | rbac.view_systemrole'],
|
|
||||||
app: 'rbac',
|
|
||||||
disableOrgsChange: true,
|
|
||||||
licenseRequired: true,
|
|
||||||
icon: 'role'
|
|
||||||
},
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
component: () => import('@/views/users/Role/RoleList/index'),
|
|
||||||
name: 'RoleList',
|
|
||||||
meta: {
|
|
||||||
title: i18n.t('RoleList'),
|
|
||||||
app: 'rbac',
|
|
||||||
permissions: ['rbac.view_orgrole | rbac.view_systemrole']
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'create',
|
|
||||||
component: () => import('@/views/users/Role/RoleCreateUpdate'),
|
|
||||||
name: 'RoleCreate',
|
|
||||||
hidden: true,
|
|
||||||
meta: {
|
|
||||||
title: i18n.t('RoleCreate'),
|
|
||||||
permissions: [],
|
|
||||||
app: 'rbac',
|
|
||||||
resource: 'role'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: ':id/update',
|
|
||||||
component: () => import('@/views/users/Role/RoleCreateUpdate'),
|
|
||||||
name: 'RoleUpdate',
|
|
||||||
hidden: true,
|
|
||||||
meta: {
|
|
||||||
title: i18n.t('RoleUpdate'),
|
|
||||||
app: 'rbac',
|
|
||||||
permissions: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: ':id',
|
|
||||||
component: () => import('@/views/users/Role/RoleDetail/index'),
|
|
||||||
name: 'RoleDetail',
|
|
||||||
hidden: true,
|
|
||||||
meta: {
|
|
||||||
title: i18n.t('RoleDetail'),
|
|
||||||
app: 'rbac',
|
|
||||||
resource: 'role',
|
|
||||||
permissions: []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -2,6 +2,7 @@ import i18n from '@/i18n/i18n'
|
|||||||
import empty from '@/layout/empty'
|
import empty from '@/layout/empty'
|
||||||
|
|
||||||
const Setting = () => import('@/views/settings/index')
|
const Setting = () => import('@/views/settings/index')
|
||||||
|
const globalSubmenu = () => import('@/layout/globalOrg.vue')
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
path: '/settings',
|
path: '/settings',
|
||||||
@ -86,6 +87,106 @@ export default {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/settings/roles',
|
||||||
|
component: globalSubmenu,
|
||||||
|
redirect: '',
|
||||||
|
meta: {
|
||||||
|
permissions: ['rbac.view_orgrole | rbac.view_systemrole'],
|
||||||
|
app: 'rbac',
|
||||||
|
disableOrgsChange: true,
|
||||||
|
licenseRequired: true,
|
||||||
|
icon: 'role'
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: '',
|
||||||
|
component: () => import('@/views/users/Role/RoleList/index'),
|
||||||
|
name: 'RoleList',
|
||||||
|
meta: {
|
||||||
|
title: i18n.t('RoleList'),
|
||||||
|
app: 'rbac',
|
||||||
|
permissions: ['rbac.view_orgrole | rbac.view_systemrole']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'create',
|
||||||
|
component: () => import('@/views/users/Role/RoleCreateUpdate'),
|
||||||
|
name: 'RoleCreate',
|
||||||
|
hidden: true,
|
||||||
|
meta: {
|
||||||
|
title: i18n.t('RoleCreate'),
|
||||||
|
permissions: [],
|
||||||
|
app: 'rbac',
|
||||||
|
resource: 'role'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: ':id/update',
|
||||||
|
component: () => import('@/views/users/Role/RoleCreateUpdate'),
|
||||||
|
name: 'RoleUpdate',
|
||||||
|
hidden: true,
|
||||||
|
meta: {
|
||||||
|
title: i18n.t('RoleUpdate'),
|
||||||
|
app: 'rbac',
|
||||||
|
permissions: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: ':id',
|
||||||
|
component: () => import('@/views/users/Role/RoleDetail/index'),
|
||||||
|
name: 'RoleDetail',
|
||||||
|
hidden: true,
|
||||||
|
meta: {
|
||||||
|
title: i18n.t('RoleDetail'),
|
||||||
|
app: 'rbac',
|
||||||
|
resource: 'role',
|
||||||
|
permissions: []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/settings/platforms',
|
||||||
|
component: globalSubmenu,
|
||||||
|
meta: {
|
||||||
|
permissions: ['assets.view_platform'],
|
||||||
|
resource: 'platform',
|
||||||
|
icon: 'platform',
|
||||||
|
app: 'assets',
|
||||||
|
disableOrgsChange: true
|
||||||
|
},
|
||||||
|
redirect: '',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: '',
|
||||||
|
name: 'PlatformList',
|
||||||
|
component: () => import('@/views/assets/Platform/PlatformList'),
|
||||||
|
meta: { title: i18n.t('PlatformList'), permissions: ['assets.view_platform'] }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'create',
|
||||||
|
component: () => import('@/views/assets/Platform/PlatformCreateUpdate.vue'), // Parent router-view
|
||||||
|
name: 'PlatformCreate',
|
||||||
|
hidden: true,
|
||||||
|
meta: { title: i18n.t('PlatformCreate') }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: ':id/update',
|
||||||
|
component: () => import('@/views/assets/Platform/PlatformCreateUpdate.vue'), // Parent router-view
|
||||||
|
name: 'PlatformUpdate',
|
||||||
|
hidden: true,
|
||||||
|
meta: { title: i18n.t('PlatformUpdate'), permissions: [] }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: ':id',
|
||||||
|
component: () => import('@/views/assets/Platform/PlatformDetail'), // Parent router-view
|
||||||
|
name: 'PlatformDetail',
|
||||||
|
hidden: true,
|
||||||
|
meta: { title: i18n.t('PlatformDetail') }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: '/settings/notification',
|
path: '/settings/notification',
|
||||||
name: 'Msg',
|
name: 'Msg',
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<span>
|
<span>
|
||||||
<span v-if="iValue === '0'" class="risk-handler">
|
<span v-if="iValue === '0'" class="risk-handler">
|
||||||
<el-dropdown trigger="click" @command="handleDropdown" @visible-change="handleVisibleChange">
|
<el-dropdown
|
||||||
|
trigger="click"
|
||||||
|
@command="handleDropdown"
|
||||||
|
@visible-change="handleVisibleChange"
|
||||||
|
>
|
||||||
<el-button class="confirm action" size="mini">
|
<el-button class="confirm action" size="mini">
|
||||||
<i class="fa fa-check" />
|
<i class="fa fa-check" />
|
||||||
</el-button>
|
</el-button>
|
||||||
@ -17,12 +21,21 @@
|
|||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
<el-tooltip :content="$tc('IgnoreAlert')" :open-delay="400">
|
<el-tooltip :content="$tc('IgnoreAlert')" :open-delay="400">
|
||||||
<el-button class="ignore action" size="mini" @click="handleDropdown('ignore')">
|
<el-button
|
||||||
|
class="ignore action"
|
||||||
|
size="mini"
|
||||||
|
@click="handleDropdown('ignore')"
|
||||||
|
>
|
||||||
<svg-icon icon-class="ignore" />
|
<svg-icon icon-class="ignore" />
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</span>
|
</span>
|
||||||
<el-tooltip v-else :content="iLabel" :open-delay="400" class="platform-status">
|
<el-tooltip
|
||||||
|
v-else
|
||||||
|
:content="iLabel"
|
||||||
|
:open-delay="400"
|
||||||
|
class="platform-status"
|
||||||
|
>
|
||||||
<el-button size="mini" type="text" @click="showDetail">
|
<el-button size="mini" type="text" @click="showDetail">
|
||||||
<span class="detail-icon">
|
<span class="detail-icon">
|
||||||
<i v-if="iValue === '1'" class="fa fa-check-circle color-primary" />
|
<i v-if="iValue === '1'" class="fa fa-check-circle color-primary" />
|
||||||
@ -41,11 +54,11 @@
|
|||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import BaseFormatter from '@/components/Table/TableFormatters/base.vue'
|
|
||||||
import ReviewDraw from '@/views/pam/RiskDetect/RiskHandlerFormatter/ReviewDrawer.vue'
|
|
||||||
import ProcessingDialog from '@/components/Dialog/ProcessingDialog.vue'
|
import ProcessingDialog from '@/components/Dialog/ProcessingDialog.vue'
|
||||||
import { riskActions } from './const'
|
import BaseFormatter from '@/components/Table/TableFormatters/base.vue'
|
||||||
import { sleep } from '@/utils/time'
|
import { sleep } from '@/utils/time'
|
||||||
|
import ReviewDraw from '@/views/pam/RiskDetect/RiskHandlerFormatter/ReviewDrawer.vue'
|
||||||
|
import { riskActions } from './const'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'RiskSummaryFormatter',
|
name: 'RiskSummaryFormatter',
|
||||||
@ -74,7 +87,10 @@ export default {
|
|||||||
account: {},
|
account: {},
|
||||||
secretUrl: '',
|
secretUrl: '',
|
||||||
actions: [],
|
actions: [],
|
||||||
formatterArgs: Object.assign(this.formatterArgsDefault, this.col.formatterArgs)
|
formatterArgs: Object.assign(
|
||||||
|
this.formatterArgsDefault,
|
||||||
|
this.col.formatterArgs
|
||||||
|
)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -135,7 +151,10 @@ export default {
|
|||||||
row.status = { value: '3', label: this.$t('Processing') }
|
row.status = { value: '3', label: this.$t('Processing') }
|
||||||
let risk = {}
|
let risk = {}
|
||||||
try {
|
try {
|
||||||
risk = await this.$axios.post(`/api/v1/accounts/account-risks/handle/`, data)
|
risk = await this.$axios.post(
|
||||||
|
`/api/v1/accounts/account-risks/handle/`,
|
||||||
|
data
|
||||||
|
)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
row.status = { value: '4', label: this.$t('Failed') }
|
row.status = { value: '4', label: this.$t('Failed') }
|
||||||
this.$emit('processDone', { index: i, row })
|
this.$emit('processDone', { index: i, row })
|
||||||
@ -206,7 +225,7 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang='scss' scoped>
|
<style lang="scss" scoped>
|
||||||
.action.el-button--mini {
|
.action.el-button--mini {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 1px 4px;
|
padding: 1px 4px;
|
||||||
@ -236,5 +255,4 @@ export default {
|
|||||||
padding: 20px;
|
padding: 20px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -17,8 +17,15 @@ export default {
|
|||||||
tableConfig: {
|
tableConfig: {
|
||||||
url: '/api/v1/ops/tasks/',
|
url: '/api/v1/ops/tasks/',
|
||||||
columns: [
|
columns: [
|
||||||
'name', 'queue', 'count', 'state', 'date_last_publish', 'exec_cycle', 'next_exec_time', 'enabled'
|
'name', 'queue', 'count', 'state', 'date_last_publish',
|
||||||
|
'exec_cycle', 'next_exec_time', 'enabled'
|
||||||
],
|
],
|
||||||
|
columnsShow: {
|
||||||
|
default: [
|
||||||
|
'name', 'count', 'state', 'date_last_publish',
|
||||||
|
'exec_cycle', 'next_exec_time', 'enabled'
|
||||||
|
]
|
||||||
|
},
|
||||||
columnsMeta: {
|
columnsMeta: {
|
||||||
name: {
|
name: {
|
||||||
formatter: DetailFormatter,
|
formatter: DetailFormatter,
|
||||||
@ -69,8 +76,8 @@ export default {
|
|||||||
label: `${this.$t('Success')}/${this.$t('Total')}`,
|
label: `${this.$t('Success')}/${this.$t('Total')}`,
|
||||||
formatter: (row) => {
|
formatter: (row) => {
|
||||||
return <div>
|
return <div>
|
||||||
<span Class='text-primary'>{row.summary.success}</span>/
|
<span Class='text-primary'>{row.summary.success || 0}</span>/
|
||||||
<span>{row.summary.total}</span>
|
<span>{row.summary.total || 0}</span>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -107,7 +114,7 @@ export default {
|
|||||||
},
|
},
|
||||||
enabled: {
|
enabled: {
|
||||||
width: '120px',
|
width: '120px',
|
||||||
label: `${this.$t('Enable')}/${this.$t('Disable')}`,
|
label: `${this.$t('Enable')}`,
|
||||||
formatter: SwitchFormatter,
|
formatter: SwitchFormatter,
|
||||||
formatterArgs: {
|
formatterArgs: {
|
||||||
isDisplay(row) {
|
isDisplay(row) {
|
||||||
|
@ -21,6 +21,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
group: { name: '', comment: '', users: [] },
|
group: { name: '', comment: '', users: [] },
|
||||||
config: {
|
config: {
|
||||||
|
url: '/api/v1/users/groups/',
|
||||||
activeMenu: 'GroupInfo',
|
activeMenu: 'GroupInfo',
|
||||||
submenu: [
|
submenu: [
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<GenericListPage ref="listPage" :header-actions="headerActions" :table-config="tableConfig" />
|
<GenericListPage
|
||||||
|
ref="listPage"
|
||||||
|
:create-drawer="createDrawer"
|
||||||
|
:detail-drawer="detailDrawer"
|
||||||
|
:header-actions="headerActions"
|
||||||
|
:resource="$t('Group')"
|
||||||
|
:table-config="tableConfig"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { GenericListPage } from '@/layout///components'
|
||||||
import AmountFormatter from '@/components/Table/TableFormatters/AmountFormatter.vue'
|
import AmountFormatter from '@/components/Table/TableFormatters/AmountFormatter.vue'
|
||||||
import { GenericListPage } from '@/layout/components'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
@ -12,6 +19,8 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
createDrawer: () => import('./UserGroupCreateUpdate.vue'),
|
||||||
|
detailDrawer: () => import('./UserGroupDetail/index.vue'),
|
||||||
tableConfig: {
|
tableConfig: {
|
||||||
url: '/api/v1/users/groups/',
|
url: '/api/v1/users/groups/',
|
||||||
columns: ['name', 'users_amount', 'comment', 'actions'],
|
columns: ['name', 'users_amount', 'comment', 'actions'],
|
||||||
@ -26,17 +35,6 @@ export default {
|
|||||||
async: true,
|
async: true,
|
||||||
getItem(item) {
|
getItem(item) {
|
||||||
return item.is_service_account ? null : item.name
|
return item.is_service_account ? null : item.name
|
||||||
},
|
|
||||||
getRoute({ row }) {
|
|
||||||
return {
|
|
||||||
name: 'UserGroupDetail',
|
|
||||||
params: {
|
|
||||||
id: row.id
|
|
||||||
},
|
|
||||||
query: {
|
|
||||||
tab: 'GroupUser'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<GenericListDrawerPage
|
<GenericListPage
|
||||||
ref="GenericListPage"
|
ref="GenericListPage"
|
||||||
:header-actions="headerActions"
|
:header-actions="headerActions"
|
||||||
:quick-filters="quickFilters"
|
:quick-filters="quickFilters"
|
||||||
@ -13,23 +13,25 @@
|
|||||||
:visible.sync="updateSelectedDialogSetting.visible"
|
:visible.sync="updateSelectedDialogSetting.visible"
|
||||||
@update="handleDialogUpdate"
|
@update="handleDialogUpdate"
|
||||||
/>
|
/>
|
||||||
<InviteUsersDialog :setting="InviteDialogSetting" @close="handleInviteDialogClose" />
|
<InviteUsersDialog
|
||||||
|
:setting="InviteDialogSetting"
|
||||||
|
@close="handleInviteDialogClose"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapGetters } from 'vuex'
|
|
||||||
import { GenericUpdateFormDialog } from '@/layout/components'
|
|
||||||
import GenericListDrawerPage from '@/layout/components/GenericListDrawerPage/index.vue'
|
|
||||||
import { createSourceIdCache } from '@/api/common'
|
import { createSourceIdCache } from '@/api/common'
|
||||||
|
import { GenericListPage, GenericUpdateFormDialog } from '@/layout/components'
|
||||||
|
import AmountFormatter from '@/components/Table/TableFormatters/AmountFormatter.vue'
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
import { getDayFuture } from '@/utils/time'
|
import { getDayFuture } from '@/utils/time'
|
||||||
import InviteUsersDialog from './components/InviteUsersDialog'
|
import InviteUsersDialog from './components/InviteUsersDialog'
|
||||||
import AmountFormatter from '@/components/Table/TableFormatters/AmountFormatter.vue'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
InviteUsersDialog,
|
InviteUsersDialog,
|
||||||
GenericListDrawerPage,
|
GenericListPage,
|
||||||
GenericUpdateFormDialog
|
GenericUpdateFormDialog
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@ -79,7 +81,6 @@ export default {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
],
|
],
|
||||||
tableConfig: {
|
tableConfig: {
|
||||||
url: '/api/v1/users/users/',
|
url: '/api/v1/users/users/',
|
||||||
@ -233,6 +234,17 @@ export default {
|
|||||||
callback: () => {
|
callback: () => {
|
||||||
this.InviteDialogSetting.InviteDialogVisible = true
|
this.InviteDialogSetting.InviteDialogVisible = true
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: this.$t('Roles'),
|
||||||
|
title: this.$t('Roles'),
|
||||||
|
has: () => {
|
||||||
|
return this.publicSettings.XPACK_LICENSE_IS_VALID &&
|
||||||
|
this.$hasPerm(['rbac.view_orgrole | rbac.view_systemrole'],)
|
||||||
|
},
|
||||||
|
callback: () => {
|
||||||
|
this.$router.push({ name: 'RoleList' })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
hasBulkUpdate: true,
|
hasBulkUpdate: true,
|
||||||
|
Loading…
Reference in New Issue
Block a user