mirror of
https://github.com/jumpserver/lina.git
synced 2025-09-01 15:07:43 +00:00
perf: 修改用户的概览页
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-card class="box-card">
|
<el-card class="box-card" shadow="never">
|
||||||
<div slot="header" class="title">
|
<div slot="header" class="title">
|
||||||
<span>{{ i18n.t('common.Announcement') }}</span>
|
<span>{{ i18n.t('common.Announcement') }}</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -52,11 +52,7 @@ ul,li {
|
|||||||
list-style: none
|
list-style: none
|
||||||
}
|
}
|
||||||
.box-card {
|
.box-card {
|
||||||
box-shadow: 0 2px 4px 0 rgb(54 58 80 / 32%);
|
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
&:hover {
|
|
||||||
box-shadow: 0 4px 5px 0 rgb(54 58 80 / 42%);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
.title {
|
.title {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
|
@@ -1,82 +0,0 @@
|
|||||||
<template>
|
|
||||||
<HomeCard v-bind="cardConfig" :table-config="tableConfig" />
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import HomeCard from './HomeCard.vue'
|
|
||||||
import { SystemUserFormatter } from '@/components/TableFormatters'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'Assect',
|
|
||||||
components: {
|
|
||||||
HomeCard
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
cardConfig: {
|
|
||||||
title: this.$t('route.AssetAclList'),
|
|
||||||
icon: 'fa-inbox'
|
|
||||||
},
|
|
||||||
tableConfig: {
|
|
||||||
url: '/api/v1/terminal/my-login-assets/?limit=5',
|
|
||||||
columns: [
|
|
||||||
'hostname', 'ip', 'system_users', 'platform', 'comment', 'actions'
|
|
||||||
],
|
|
||||||
columnsMeta: {
|
|
||||||
hostname: {
|
|
||||||
label: this.$t('perms.hostName'),
|
|
||||||
showOverflowTooltip: true
|
|
||||||
},
|
|
||||||
ip: {
|
|
||||||
sortable: false
|
|
||||||
},
|
|
||||||
system_users: {
|
|
||||||
showOverflowTooltip: true,
|
|
||||||
align: 'center',
|
|
||||||
label: this.$t('assets.SystemUsers'),
|
|
||||||
width: '150px',
|
|
||||||
formatter: SystemUserFormatter,
|
|
||||||
formatterArgs: {
|
|
||||||
getUrl: ({ row }) => {
|
|
||||||
return `/api/v1/perms/users/assets/${row.id}/system-users/?cache_policy=1`
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
platform: {
|
|
||||||
label: this.$t('assets.Platform')
|
|
||||||
},
|
|
||||||
comment: {
|
|
||||||
label: this.$t('sessions.comment'),
|
|
||||||
showOverflowTooltip: true
|
|
||||||
},
|
|
||||||
actions: {
|
|
||||||
width: '70px',
|
|
||||||
formatterArgs: {
|
|
||||||
hasDelete: false,
|
|
||||||
loading: false,
|
|
||||||
hasClone: false,
|
|
||||||
hasUpdate: false,
|
|
||||||
extraActions: [
|
|
||||||
{
|
|
||||||
name: 'connect',
|
|
||||||
fa: 'fa-terminal',
|
|
||||||
type: 'primary',
|
|
||||||
can: ({ row }) => row.is_active,
|
|
||||||
callback: ({ row }) => {
|
|
||||||
window.open(`/luna/?login_to=${row.id}`, '_blank')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
hasSelection: false,
|
|
||||||
paginationSize: 5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
</style>
|
|
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="HomeCard">
|
<div id="HomeCard">
|
||||||
<el-card class="box-card">
|
<el-card class="box-card" shadow="never">
|
||||||
<div v-show="title || btnText" slot="header" class="clearfix">
|
<div v-show="title || btnText" slot="header" class="clearfix">
|
||||||
<span v-show="title" class="head-title">{{ title }}</span>
|
<span v-show="title" class="head-title">{{ title }}</span>
|
||||||
<el-button
|
<el-button
|
||||||
@@ -81,16 +81,13 @@ export default {
|
|||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
box-shadow: 0 2px 4px 0 rgb(54 58 80 / 32%);
|
//box-shadow: 0 2px 4px 0 rgb(54 58 80 / 32%);
|
||||||
transition: all 0.4s ease;
|
transition: all 0.4s ease;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
&>>> .el-card__header {
|
&>>> .el-card__header {
|
||||||
padding: 20px 20px 0;
|
padding: 20px 20px 0;
|
||||||
border-bottom: 0;
|
border-bottom: 0;
|
||||||
}
|
}
|
||||||
&:hover {
|
|
||||||
box-shadow: 0 4px 5px 0 rgb(54 58 80 / 42%);
|
|
||||||
}
|
|
||||||
&:nth-child(n) {
|
&:nth-child(n) {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-card class="box-card">
|
<el-card class="box-card" shadow="never">
|
||||||
<div slot="header" class="title">
|
<div slot="header" class="title">
|
||||||
<span>{{ i18n.t('route.LoginLog') }}</span>
|
<span>{{ i18n.t('route.LoginLog') }}</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -42,12 +42,14 @@ export default {
|
|||||||
tableConfig: {
|
tableConfig: {
|
||||||
url: '/api/v1/audits/my-login-logs/?limit=5',
|
url: '/api/v1/audits/my-login-logs/?limit=5',
|
||||||
columns: [
|
columns: [
|
||||||
'ip', 'datetime'
|
'city', 'datetime'
|
||||||
],
|
],
|
||||||
columnsMeta: {
|
columnsMeta: {
|
||||||
ip: {
|
city: {
|
||||||
label: this.$t('audits.LoginIP'),
|
showOverflowTooltip: true,
|
||||||
showOverflowTooltip: true
|
formatter: (row) => {
|
||||||
|
return <span>{ row.city }({ row.ip })</span>
|
||||||
|
}
|
||||||
},
|
},
|
||||||
datetime: {
|
datetime: {
|
||||||
showOverflowTooltip: true
|
showOverflowTooltip: true
|
||||||
@@ -63,11 +65,8 @@ export default {
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.box-card {
|
.box-card {
|
||||||
box-shadow: 0 2px 4px 0 rgb(54 58 80 / 32%);
|
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
&:hover {
|
|
||||||
box-shadow: 0 4px 5px 0 rgb(54 58 80 / 42%);
|
|
||||||
}
|
|
||||||
&>>> .el-card__header {
|
&>>> .el-card__header {
|
||||||
margin-bottom: -10px;
|
margin-bottom: -10px;
|
||||||
}
|
}
|
@@ -9,7 +9,7 @@ import { toSafeLocalDateStr } from '@/utils/common'
|
|||||||
import { DetailFormatter } from '@/components/TableFormatters'
|
import { DetailFormatter } from '@/components/TableFormatters'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Hannouncement',
|
name: 'HomeAnnouncement',
|
||||||
components: {
|
components: {
|
||||||
HomeCard
|
HomeCard
|
||||||
},
|
},
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-card class="box-card">
|
<el-card class="box-card" shadow="never">
|
||||||
<div slot="header" class="title">
|
<div slot="header" class="title">
|
||||||
<span>{{ i18n.t('common.nav.Profile') }}</span>
|
<span>{{ i18n.t('common.nav.Profile') }}</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -49,11 +49,7 @@ ul,li {
|
|||||||
list-style: none
|
list-style: none
|
||||||
}
|
}
|
||||||
.box-card {
|
.box-card {
|
||||||
box-shadow: 0 2px 4px 0 rgb(54 58 80 / 32%);
|
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
&:hover {
|
|
||||||
box-shadow: 0 4px 5px 0 rgb(54 58 80 / 42%);
|
|
||||||
}
|
|
||||||
&>>> .el-card__header {
|
&>>> .el-card__header {
|
||||||
padding-top: 20px;
|
padding-top: 20px;
|
||||||
}
|
}
|
||||||
|
@@ -8,8 +8,7 @@
|
|||||||
<el-row>
|
<el-row>
|
||||||
<el-col :md="16" :xs="24" style="padding-right: 20px;">
|
<el-col :md="16" :xs="24" style="padding-right: 20px;">
|
||||||
<Session />
|
<Session />
|
||||||
<Assect />
|
<Ticket v-if="hasValidLicense" />
|
||||||
<Ticket />
|
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :md="8" :xs="24">
|
<el-col :md="8" :xs="24">
|
||||||
<User />
|
<User />
|
||||||
@@ -27,12 +26,10 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { Page } from '@/layout/components'
|
import { Page } from '@/layout/components'
|
||||||
import store from '@/store'
|
|
||||||
import User from './components/User'
|
import User from './components/User'
|
||||||
import Announcement from './components/Announcement'
|
import Announcement from './components/Announcement'
|
||||||
import Ticket from './components/Ticket'
|
import Ticket from './components/Ticket'
|
||||||
import Log from './components/Log'
|
import Log from './components/LoginLog'
|
||||||
import Assect from './components/Assect'
|
|
||||||
import Session from './components/Session'
|
import Session from './components/Session'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -43,16 +40,14 @@ export default {
|
|||||||
Announcement,
|
Announcement,
|
||||||
Ticket,
|
Ticket,
|
||||||
Log,
|
Log,
|
||||||
Assect,
|
|
||||||
Session
|
Session
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
rootShow: true
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
getasValidLicense() {
|
hasValidLicense() {
|
||||||
return this.$store.getters.hasValidLicense
|
return this.$store.getters.hasValidLicense
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -60,11 +55,6 @@ export default {
|
|||||||
this.init()
|
this.init()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
init() {
|
|
||||||
store.dispatch('permission/getRootPerms', 'aaaa').then(res => {
|
|
||||||
this.rootShow = res
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user