mirror of
https://github.com/jumpserver/lina.git
synced 2025-09-19 17:54:37 +00:00
perf: merge with remove
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
"date_created": "Date created",
|
"date_created": "Date created",
|
||||||
"created_by": "Created by",
|
"created_by": "Created by",
|
||||||
"host": "Asset",
|
"host": "Asset",
|
||||||
|
"account": "Account",
|
||||||
"system_user": "System user",
|
"system_user": "System user",
|
||||||
"username_group": "Username group",
|
"username_group": "Username group",
|
||||||
"hostname_group": "Hostname group",
|
"hostname_group": "Hostname group",
|
||||||
@@ -595,6 +596,23 @@
|
|||||||
"CurrentConnections": "Current connections",
|
"CurrentConnections": "Current connections",
|
||||||
"TodayFailedConnections": "Connections failed today",
|
"TodayFailedConnections": "Connections failed today",
|
||||||
"OnlineSessions": "Online sessions",
|
"OnlineSessions": "Online sessions",
|
||||||
|
"RealTimeData": "Real-time data",
|
||||||
|
"UserAssetActivity": "User/Asset activity",
|
||||||
|
"UserData": "User data",
|
||||||
|
"LoginUserToday": "Login user today",
|
||||||
|
"AssetData": "Asset data",
|
||||||
|
"LoginAssetToday": "Active assets today",
|
||||||
|
"WeekAdd": "New this week",
|
||||||
|
"ProportionOfAssetTypes": "Proportion of asset types",
|
||||||
|
"Proportion": "Proportion",
|
||||||
|
"LoginUserRanking": "Login user ranking",
|
||||||
|
"ActiveAssetRanking": "Active asset ranking",
|
||||||
|
"AssetName": "Asset name",
|
||||||
|
"NumberOfVisits": "Number of visits",
|
||||||
|
"ranking": "Ranking",
|
||||||
|
"Today": "Today",
|
||||||
|
"Last7Days": "Last 7 days",
|
||||||
|
"Last30Days": "Last30 days",
|
||||||
"OnlineUsers": "Online users",
|
"OnlineUsers": "Online users",
|
||||||
"ConnectUsers": "Connect users",
|
"ConnectUsers": "Connect users",
|
||||||
"TimesWeekUnit": "times/week",
|
"TimesWeekUnit": "times/week",
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
"date_created": "時間の作成",
|
"date_created": "時間の作成",
|
||||||
"created_by": "作成者",
|
"created_by": "作成者",
|
||||||
"host": "資産情報",
|
"host": "資産情報",
|
||||||
|
"account": "アカウント情報",
|
||||||
"users": "ユーザー",
|
"users": "ユーザー",
|
||||||
"system_user": "システムユーザー",
|
"system_user": "システムユーザー",
|
||||||
"username_group": "ユーザー名",
|
"username_group": "ユーザー名",
|
||||||
@@ -606,6 +607,23 @@
|
|||||||
"CurrentConnections": "現在の接続数",
|
"CurrentConnections": "現在の接続数",
|
||||||
"TodayFailedConnections": "今日の接続に失敗しました",
|
"TodayFailedConnections": "今日の接続に失敗しました",
|
||||||
"OnlineSessions": "オンラインセッション",
|
"OnlineSessions": "オンラインセッション",
|
||||||
|
"RealTimeData": "リアルタイムデータ",
|
||||||
|
"UserAssetActivity": "ユーザー/資産のアクティブ化",
|
||||||
|
"UserData": "ユーザデータ",
|
||||||
|
"LoginUserToday": "今日のログインユーザー数",
|
||||||
|
"AssetData": "資産データ",
|
||||||
|
"LoginAssetToday": "今日のアクティブ資産数",
|
||||||
|
"WeekAdd": "今週の追加",
|
||||||
|
"ProportionOfAssetTypes": "資産タイプの割合",
|
||||||
|
"Proportion": "占有率",
|
||||||
|
"LoginUserRanking": "ログインユーザーランキング",
|
||||||
|
"ActiveAssetRanking": "アクティブ資産ランキング",
|
||||||
|
"AssetName": "資産名",
|
||||||
|
"NumberOfVisits": "アクセス回数",
|
||||||
|
"ranking": "ランキング",
|
||||||
|
"Today": "今日",
|
||||||
|
"Last7Days": "7日",
|
||||||
|
"Last30Days": "30日",
|
||||||
"OnlineUsers": "オンラインユーザー",
|
"OnlineUsers": "オンラインユーザー",
|
||||||
"ConnectUsers": "ユーザーの接続",
|
"ConnectUsers": "ユーザーの接続",
|
||||||
"TimesWeekUnit": "回/週",
|
"TimesWeekUnit": "回/週",
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
"date_created": "创建时间",
|
"date_created": "创建时间",
|
||||||
"created_by": "创建者",
|
"created_by": "创建者",
|
||||||
"host": "资产信息",
|
"host": "资产信息",
|
||||||
|
"account": "账号信息",
|
||||||
"users": "用户",
|
"users": "用户",
|
||||||
"system_user": "系统用户",
|
"system_user": "系统用户",
|
||||||
"username_group": "用户名",
|
"username_group": "用户名",
|
||||||
@@ -627,6 +628,23 @@
|
|||||||
"CurrentConnections": "当前连接数",
|
"CurrentConnections": "当前连接数",
|
||||||
"TodayFailedConnections": "今日连接失败数",
|
"TodayFailedConnections": "今日连接失败数",
|
||||||
"OnlineSessions": "在线会话数",
|
"OnlineSessions": "在线会话数",
|
||||||
|
"RealTimeData": "实时数据",
|
||||||
|
"UserAssetActivity": "用户/资产活跃情况",
|
||||||
|
"UserData": "用户数据",
|
||||||
|
"LoginUserToday": "今日登录用户数",
|
||||||
|
"AssetData": "资产数据",
|
||||||
|
"LoginAssetToday": "今日活跃资产数",
|
||||||
|
"WeekAdd": "本周新增",
|
||||||
|
"ProportionOfAssetTypes": "资产类型占比",
|
||||||
|
"Proportion": "占比",
|
||||||
|
"LoginUserRanking": "登录用户排名",
|
||||||
|
"ActiveAssetRanking": "活跃资产排名",
|
||||||
|
"AssetName": "资产名称",
|
||||||
|
"NumberOfVisits": "访问次数",
|
||||||
|
"ranking": "排名",
|
||||||
|
"Today": "今天",
|
||||||
|
"Last7Days": "近7天",
|
||||||
|
"Last30Days": "近30天",
|
||||||
"OnlineUsers": "在线用户",
|
"OnlineUsers": "在线用户",
|
||||||
"ConnectUsers": "连接用户",
|
"ConnectUsers": "连接用户",
|
||||||
"TimesWeekUnit": "次/周",
|
"TimesWeekUnit": "次/周",
|
||||||
|
@@ -32,6 +32,7 @@
|
|||||||
<el-menu
|
<el-menu
|
||||||
class="left-menu"
|
class="left-menu"
|
||||||
:default-active="activeMenu"
|
:default-active="activeMenu"
|
||||||
|
:default-openeds="defaultOpensMenu"
|
||||||
:collapse="isCollapse"
|
:collapse="isCollapse"
|
||||||
:background-color="variables['menuBg']"
|
:background-color="variables['menuBg']"
|
||||||
:text-color="variables['menuText']"
|
:text-color="variables['menuText']"
|
||||||
@@ -75,6 +76,7 @@ export default {
|
|||||||
computed: {
|
computed: {
|
||||||
...mapGetters([
|
...mapGetters([
|
||||||
'currentViewRoute',
|
'currentViewRoute',
|
||||||
|
'defaultOpensMenu',
|
||||||
'sidebar'
|
'sidebar'
|
||||||
]),
|
]),
|
||||||
activeMenu() {
|
activeMenu() {
|
||||||
@@ -150,15 +152,18 @@ export default {
|
|||||||
.switch-view {
|
.switch-view {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
right: 0;
|
right: 16px;
|
||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
padding: 3px;
|
||||||
|
line-height: 10px;
|
||||||
|
border-radius: 3px;
|
||||||
&:hover {
|
&:hover {
|
||||||
color: var(--color-primary);
|
background: var(--menu-hover)!important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
|
margin-right: 0!important;
|
||||||
&:hover {
|
&:hover {
|
||||||
color: var(--color-primary);
|
color: var(--color-primary);
|
||||||
}
|
}
|
||||||
|
@@ -1,44 +0,0 @@
|
|||||||
import i18n from '@/i18n/i18n'
|
|
||||||
import empty from '@/layout/empty'
|
|
||||||
|
|
||||||
export default [
|
|
||||||
{
|
|
||||||
path: 'host-acl',
|
|
||||||
component: empty,
|
|
||||||
redirect: '',
|
|
||||||
meta: {
|
|
||||||
title: i18n.t('route.AssetAclList'),
|
|
||||||
licenseRequired: true,
|
|
||||||
resource: 'loginassetacl'
|
|
||||||
},
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
name: 'AssetAclList',
|
|
||||||
component: () => import('@/views/acl/AssetAcl/AssetAclList'),
|
|
||||||
meta: { title: i18n.t('route.AssetAclList') }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'create',
|
|
||||||
name: 'AssetAclCreate',
|
|
||||||
component: () => import('@/views/acl/AssetAcl/AssetAclCreateUpdate'),
|
|
||||||
hidden: true,
|
|
||||||
meta: { title: i18n.t('route.AssetAclCreate') }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: ':id',
|
|
||||||
name: 'AssetAclDetail',
|
|
||||||
component: () => import('@/views/acl/AssetAcl/AssetAclDetail'),
|
|
||||||
hidden: true,
|
|
||||||
meta: { title: i18n.t('route.AssetAclDetail') }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: ':id/update',
|
|
||||||
name: 'AssetAclUpdate',
|
|
||||||
component: () => import('@/views/acl/AssetAcl/AssetAclCreateUpdate'),
|
|
||||||
hidden: true,
|
|
||||||
meta: { title: i18n.t('route.AssetAclUpdate') }
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
@@ -7,7 +7,6 @@ import UsersRoute from './users'
|
|||||||
import AssetsRoute from './assets'
|
import AssetsRoute from './assets'
|
||||||
import PermsRoute from './perms'
|
import PermsRoute from './perms'
|
||||||
import TaskRoutes from './tasks'
|
import TaskRoutes from './tasks'
|
||||||
import AclRoutes from './acls'
|
|
||||||
import AccountRoutes from './accounts'
|
import AccountRoutes from './accounts'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -76,17 +75,6 @@ export default {
|
|||||||
},
|
},
|
||||||
children: PermsRoute
|
children: PermsRoute
|
||||||
},
|
},
|
||||||
{
|
|
||||||
path: '/console/acls',
|
|
||||||
component: empty,
|
|
||||||
name: 'Acl',
|
|
||||||
meta: {
|
|
||||||
licenseRequired: true,
|
|
||||||
title: i18n.t('route.Acl'),
|
|
||||||
icon: 'lock'
|
|
||||||
},
|
|
||||||
children: AclRoutes
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
path: '/console/tasks',
|
path: '/console/tasks',
|
||||||
component: empty,
|
component: empty,
|
||||||
|
@@ -38,5 +38,45 @@ export default [
|
|||||||
meta: { title: i18n.t('route.AssetPermissionDetail') }
|
meta: { title: i18n.t('route.AssetPermissionDetail') }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'host-acls',
|
||||||
|
component: empty,
|
||||||
|
redirect: '',
|
||||||
|
meta: {
|
||||||
|
title: i18n.t('route.AssetAclList'),
|
||||||
|
licenseRequired: true,
|
||||||
|
app: 'acls',
|
||||||
|
resource: 'loginassetacl'
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: '',
|
||||||
|
name: 'AssetAclList',
|
||||||
|
component: () => import('@/views/acl/AssetAcl/AssetAclList'),
|
||||||
|
meta: { title: i18n.t('route.AssetAclList') }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'create',
|
||||||
|
name: 'AssetAclCreate',
|
||||||
|
component: () => import('@/views/acl/AssetAcl/AssetAclCreateUpdate'),
|
||||||
|
hidden: true,
|
||||||
|
meta: { title: i18n.t('route.AssetAclCreate') }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: ':id',
|
||||||
|
name: 'AssetAclDetail',
|
||||||
|
component: () => import('@/views/acl/AssetAcl/AssetAclDetail'),
|
||||||
|
hidden: true,
|
||||||
|
meta: { title: i18n.t('route.AssetAclDetail') }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: ':id/update',
|
||||||
|
name: 'AssetAclUpdate',
|
||||||
|
component: () => import('@/views/acl/AssetAcl/AssetAclCreateUpdate'),
|
||||||
|
hidden: true,
|
||||||
|
meta: { title: i18n.t('route.AssetAclUpdate') }
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
const getters = {
|
const getters = {
|
||||||
sidebar: state => state.app.sidebar,
|
sidebar: state => state.app.sidebar,
|
||||||
|
defaultOpensMenu: state => state.app.defaultOpensMenu,
|
||||||
device: state => state.app.device,
|
device: state => state.app.device,
|
||||||
inited: state => state.app.inited,
|
inited: state => state.app.inited,
|
||||||
isMobile: state => state.app.device === 'mobile',
|
isMobile: state => state.app.device === 'mobile',
|
||||||
|
@@ -5,6 +5,8 @@ const state = {
|
|||||||
opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true,
|
opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true,
|
||||||
withoutAnimation: false
|
withoutAnimation: false
|
||||||
},
|
},
|
||||||
|
// 默认需要展开的菜单
|
||||||
|
defaultOpensMenu: ['/audit/sessions', '/audit/logs', '/workbench/ops'],
|
||||||
device: 'desktop',
|
device: 'desktop',
|
||||||
inited: false
|
inited: false
|
||||||
}
|
}
|
||||||
|
@@ -14,24 +14,23 @@ export default {
|
|||||||
return {
|
return {
|
||||||
initial: {
|
initial: {
|
||||||
action: 'login_confirm',
|
action: 'login_confirm',
|
||||||
system_users: {
|
|
||||||
name_group: '*',
|
|
||||||
protocol_group: '*',
|
|
||||||
username_group: '*'
|
|
||||||
},
|
|
||||||
users: {
|
users: {
|
||||||
username_group: '*'
|
username_group: '*'
|
||||||
},
|
},
|
||||||
assets: {
|
assets: {
|
||||||
hostname_group: '*',
|
hostname_group: '*',
|
||||||
ip_group: '*'
|
ip_group: '*'
|
||||||
|
},
|
||||||
|
accounts: {
|
||||||
|
name_group: '*',
|
||||||
|
username_group: '*'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
fields: [
|
fields: [
|
||||||
[this.$t('common.Basic'), ['name', 'priority']],
|
[this.$t('common.Basic'), ['name', 'priority']],
|
||||||
[this.$t('acl.users'), ['users']],
|
[this.$t('acl.users'), ['users']],
|
||||||
[this.$t('acl.host'), ['assets']],
|
[this.$t('acl.host'), ['assets']],
|
||||||
[this.$t('acl.system_user'), ['system_users']],
|
[this.$t('acl.account'), ['accounts']],
|
||||||
[this.$t('acl.action'), ['action', 'reviewers']],
|
[this.$t('acl.action'), ['action', 'reviewers']],
|
||||||
[this.$t('common.Other'), ['is_active', 'comment']]
|
[this.$t('common.Other'), ['is_active', 'comment']]
|
||||||
],
|
],
|
||||||
@@ -48,8 +47,8 @@ export default {
|
|||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
system_users: {
|
accounts: {
|
||||||
fields: ['name_group', 'username_group', 'protocol_group']
|
fields: ['name_group', 'username_group']
|
||||||
},
|
},
|
||||||
reviewers: {
|
reviewers: {
|
||||||
el: {
|
el: {
|
||||||
@@ -67,9 +66,8 @@ export default {
|
|||||||
afterGetFormValue(formValue) {
|
afterGetFormValue(formValue) {
|
||||||
formValue.assets.ip_group = formValue.assets.ip_group.toString()
|
formValue.assets.ip_group = formValue.assets.ip_group.toString()
|
||||||
formValue.assets.hostname_group = formValue.assets.hostname_group.toString()
|
formValue.assets.hostname_group = formValue.assets.hostname_group.toString()
|
||||||
formValue.system_users.name_group = formValue.system_users.name_group.toString()
|
formValue.accounts.name_group = formValue.accounts.name_group.toString()
|
||||||
formValue.system_users.protocol_group = formValue.system_users.protocol_group.toString()
|
formValue.accounts.username_group = formValue.accounts.username_group.toString()
|
||||||
formValue.system_users.username_group = formValue.system_users.username_group.toString()
|
|
||||||
formValue.users.username_group = formValue.users.username_group.toString()
|
formValue.users.username_group = formValue.users.username_group.toString()
|
||||||
return formValue
|
return formValue
|
||||||
},
|
},
|
||||||
@@ -80,14 +78,11 @@ export default {
|
|||||||
if (!Array.isArray(value.assets.hostname_group)) {
|
if (!Array.isArray(value.assets.hostname_group)) {
|
||||||
value.assets.hostname_group = value.assets.hostname_group ? value.assets.hostname_group.split(',') : []
|
value.assets.hostname_group = value.assets.hostname_group ? value.assets.hostname_group.split(',') : []
|
||||||
}
|
}
|
||||||
if (!Array.isArray(value.system_users.protocol_group)) {
|
if (!Array.isArray(value.accounts.name_group)) {
|
||||||
value.system_users.protocol_group = value.system_users.protocol_group ? value.system_users.protocol_group.split(',') : []
|
value.accounts.name_group = value.accounts.name_group ? value.accounts.name_group.split(',') : []
|
||||||
}
|
}
|
||||||
if (!Array.isArray(value.system_users.name_group)) {
|
if (!Array.isArray(value.accounts.username_group)) {
|
||||||
value.system_users.name_group = value.system_users.name_group ? value.system_users.name_group.split(',') : []
|
value.accounts.username_group = value.accounts.username_group ? value.accounts.username_group.split(',') : []
|
||||||
}
|
|
||||||
if (!Array.isArray(value.system_users.username_group)) {
|
|
||||||
value.system_users.username_group = value.system_users.username_group ? value.system_users.username_group.split(',') : []
|
|
||||||
}
|
}
|
||||||
if (!Array.isArray(value.users.username_group)) {
|
if (!Array.isArray(value.users.username_group)) {
|
||||||
value.users.username_group = value.users.username_group ? value.users.username_group.split(',') : []
|
value.users.username_group = value.users.username_group ? value.users.username_group.split(',') : []
|
||||||
|
@@ -18,8 +18,8 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
titleConfig: {
|
titleConfig: {
|
||||||
title: '资产类型占比',
|
title: this.$t('dashboard.ProportionOfAssetTypes'),
|
||||||
tip: '资产类型占比'
|
tip: this.$t('dashboard.ProportionOfAssetTypes')
|
||||||
},
|
},
|
||||||
config: {
|
config: {
|
||||||
data: []
|
data: []
|
||||||
|
@@ -26,19 +26,19 @@ export default {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
userConfig: {
|
userConfig: {
|
||||||
title: '用户数据',
|
title: this.$t('dashboard.UserData'),
|
||||||
tip: '用户数据',
|
tip: this.$t('dashboard.UserData'),
|
||||||
subTitle: '用户总数',
|
subTitle: this.$t('dashboard.UsersTotal'),
|
||||||
color: '#FFD260',
|
color: '#FFD260',
|
||||||
chartTitle: '今日登录用户数',
|
chartTitle: this.$t('dashboard.LoginUserToday'),
|
||||||
data: []
|
data: []
|
||||||
},
|
},
|
||||||
assetConfig: {
|
assetConfig: {
|
||||||
title: '资产数据',
|
title: this.$t('dashboard.AssetData'),
|
||||||
tip: '资产数据',
|
tip: this.$t('dashboard.AssetData'),
|
||||||
subTitle: '资产总数',
|
subTitle: this.$t('dashboard.AssetsTotal'),
|
||||||
color: themeColor,
|
color: themeColor,
|
||||||
chartTitle: '今日活跃资产数',
|
chartTitle: this.$t('dashboard.LoginAssetToday'),
|
||||||
data: []
|
data: []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -57,15 +57,15 @@ export default {
|
|||||||
`)
|
`)
|
||||||
const users = [
|
const users = [
|
||||||
{ name: this.$t('dashboard.ActiveUser'), value: data.total_count_users },
|
{ name: this.$t('dashboard.ActiveUser'), value: data.total_count_users },
|
||||||
{ name: this.$t('dashboard.DisabledUser'), value: data.total_count_today_login_users }
|
{ name: this.$t('dashboard.InActiveUser'), value: data.total_count_today_login_users }
|
||||||
]
|
]
|
||||||
this.$set(this.userConfig, 'data', users)
|
this.$set(this.userConfig, 'data', users)
|
||||||
this.$set(this.userConfig, 'total', data.total_count_users)
|
this.$set(this.userConfig, 'total', data.total_count_users)
|
||||||
this.$set(this.userConfig, 'active', data.total_count_today_login_users)
|
this.$set(this.userConfig, 'active', data.total_count_today_login_users)
|
||||||
this.$set(this.userConfig, 'weekAdd', data.total_count_users_this_week)
|
this.$set(this.userConfig, 'weekAdd', data.total_count_users_this_week)
|
||||||
const assets = [
|
const assets = [
|
||||||
{ name: this.$t('dashboard.ActiveUser'), value: data.total_count_assets },
|
{ name: this.$t('dashboard.ActiveAsset'), value: data.total_count_assets },
|
||||||
{ name: this.$t('dashboard.DisabledUser'), value: data.total_count_today_active_assets }
|
{ name: this.$t('dashboard.InActiveAsset'), value: data.total_count_today_active_assets }
|
||||||
]
|
]
|
||||||
this.$set(this.assetConfig, 'data', assets)
|
this.$set(this.assetConfig, 'data', assets)
|
||||||
this.$set(this.assetConfig, 'total', data.total_count_assets)
|
this.$set(this.assetConfig, 'total', data.total_count_assets)
|
||||||
|
@@ -20,34 +20,34 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
userConfig: {
|
userConfig: {
|
||||||
title: '登录用户排名',
|
title: this.$t('dashboard.LoginUserRanking'),
|
||||||
url: '/api/v1/index/?dates_login_times_top10_users=1',
|
url: '/api/v1/index/?dates_login_times_top10_users=1',
|
||||||
tip: '登录用户排名',
|
tip: this.$t('dashboard.LoginUserRanking'),
|
||||||
data: 'dates_login_times_top10_users',
|
data: 'dates_login_times_top10_users',
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
prop: 'user',
|
prop: 'user',
|
||||||
label: '用户名'
|
label: this.$t('users.Username')
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'total',
|
prop: 'total',
|
||||||
label: '登录次数'
|
label: this.$t('dashboard.LoginCount')
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
assetConfig: {
|
assetConfig: {
|
||||||
title: '活跃资产排名',
|
title: this.$t('dashboard.ActiveAssetRanking'),
|
||||||
url: '/api/v1/index/?dates_login_times_top10_assets=1',
|
url: '/api/v1/index/?dates_login_times_top10_assets=1',
|
||||||
tip: '活跃资产排名',
|
tip: this.$t('dashboard.ActiveAssetRanking'),
|
||||||
data: 'dates_login_times_top10_assets',
|
data: 'dates_login_times_top10_assets',
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
prop: 'asset',
|
prop: 'asset',
|
||||||
label: '资产名称'
|
label: this.$t('dashboard.AssetName')
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: 'total',
|
prop: 'total',
|
||||||
label: '访问次数'
|
label: this.$t('dashboard.NumberOfVisits')
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@@ -8,7 +8,7 @@
|
|||||||
<div class="num">{{ config.total }}</div>
|
<div class="num">{{ config.total }}</div>
|
||||||
<div class="add">
|
<div class="add">
|
||||||
<span class="add-num">
|
<span class="add-num">
|
||||||
本周新增:{{ config.weekAdd }}
|
{{ $tc('dashboard.WeekAdd') }}:{{ config.weekAdd }}
|
||||||
<svg-icon icon-class="broken-line" style="font-size: 18px;" />
|
<svg-icon icon-class="broken-line" style="font-size: 18px;" />
|
||||||
</span>
|
</span>
|
||||||
<span class="add-icon">
|
<span class="add-icon">
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
import * as echarts from 'echarts'
|
import * as echarts from 'echarts'
|
||||||
import Title from './Title.vue'
|
import Title from './Title.vue'
|
||||||
|
import { mix } from '@/utils/theme/color'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'LoginMetric',
|
name: 'LoginMetric',
|
||||||
@@ -32,8 +33,8 @@ export default {
|
|||||||
data: function() {
|
data: function() {
|
||||||
return {
|
return {
|
||||||
config: {
|
config: {
|
||||||
title: '用户/资产活跃情况 ',
|
title: this.$t('dashboard.UserAssetActivity'),
|
||||||
tip: '用户/资产活跃情况 '
|
tip: this.$t('dashboard.UserAssetActivity')
|
||||||
},
|
},
|
||||||
dataUrl: '',
|
dataUrl: '',
|
||||||
metricsData: {
|
metricsData: {
|
||||||
@@ -44,14 +45,22 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
themeColor() {
|
mixColors() {
|
||||||
const documentStyle = document.documentElement.style
|
const documentStyle = document.documentElement.style
|
||||||
|
const primary = documentStyle.getPropertyValue('--color-primary')
|
||||||
|
const colorValue = primary.replace(/#/g, '')
|
||||||
|
const TwoLevelColor = mix(colorValue, 'ffffff', 38)
|
||||||
|
const ThreeLevelColor = mix(colorValue, 'ffffff', 20)
|
||||||
|
const shadowColor = mix(colorValue, 'ffffff', 1)
|
||||||
return {
|
return {
|
||||||
primary: documentStyle.getPropertyValue('--color-primary')
|
primary,
|
||||||
|
TwoLevelColor,
|
||||||
|
ThreeLevelColor,
|
||||||
|
shadowColor
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
options() {
|
options() {
|
||||||
const { primary } = this.themeColor
|
const { primary, TwoLevelColor, ThreeLevelColor, shadowColor } = this.mixColors
|
||||||
return {
|
return {
|
||||||
title: {
|
title: {
|
||||||
show: false
|
show: false
|
||||||
@@ -149,20 +158,20 @@ export default {
|
|||||||
1,
|
1,
|
||||||
[{
|
[{
|
||||||
offset: 0,
|
offset: 0,
|
||||||
color: 'rgba(50, 220, 182, 0.6)'
|
color: primary
|
||||||
}, {
|
}, {
|
||||||
offset: 0.6,
|
offset: 0.6,
|
||||||
color: 'rgba(50, 220, 182, 0.2)'
|
color: TwoLevelColor
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
offset: 0.8,
|
offset: 0.8,
|
||||||
color: 'rgba(50, 220, 182, 0.1)'
|
color: ThreeLevelColor
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
false
|
false
|
||||||
),
|
),
|
||||||
shadowColor: 'rgba(50, 220, 182, 0.1)',
|
shadowColor: shadowColor,
|
||||||
shadowBlur: 6
|
shadowBlur: 5
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data: this.metricsData.dates_metrics_total_count_active_users
|
data: this.metricsData.dates_metrics_total_count_active_users
|
||||||
|
@@ -12,6 +12,8 @@
|
|||||||
<script>
|
<script>
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
import * as echarts from 'echarts'
|
import * as echarts from 'echarts'
|
||||||
|
import { mix } from '@/utils/theme/color'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
colors: {
|
colors: {
|
||||||
@@ -19,8 +21,10 @@ export default {
|
|||||||
default: () => {
|
default: () => {
|
||||||
const documentStyle = document.documentElement.style
|
const documentStyle = document.documentElement.style
|
||||||
const themeColor = documentStyle.getPropertyValue('--color-primary')
|
const themeColor = documentStyle.getPropertyValue('--color-primary')
|
||||||
|
const colorValue = themeColor.replace(/#/g, '')
|
||||||
|
const subCOlor = mix(colorValue, 'ffffff', 40)
|
||||||
return [
|
return [
|
||||||
themeColor, '#B3D6CE', '#F3B44B', 'rgba(243, 180, 75, 0.5)',
|
themeColor, subCOlor, '#F3B44B', 'rgba(243, 180, 75, 0.5)',
|
||||||
'#535C65', 'rgba(83, 92, 101, 0.5)', '#29448A', 'rgba(41, 68, 138, 0.5)'
|
'#535C65', 'rgba(83, 92, 101, 0.5)', '#29448A', 'rgba(41, 68, 138, 0.5)'
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,7 @@
|
|||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
class="table"
|
class="table"
|
||||||
>
|
>
|
||||||
<el-table-column :label="'排名'">
|
<el-table-column :label="$tc('dashboard.ranking')">
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
<span>{{ scope.$index + 1 }}</span>
|
<span>{{ scope.$index + 1 }}</span>
|
||||||
</template>
|
</template>
|
||||||
@@ -55,15 +55,15 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
const defaultOptions = [
|
const defaultOptions = [
|
||||||
{
|
{
|
||||||
label: '今天',
|
label: this.$t('dashboard.Today'),
|
||||||
value: '1'
|
value: '1'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '近7天',
|
label: this.$t('dashboard.Last7Days'),
|
||||||
value: '7'
|
value: '7'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '近30天',
|
label: this.$t('dashboard.Last30Days'),
|
||||||
value: '30'
|
value: '30'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -103,6 +103,7 @@ export default {
|
|||||||
.switch {
|
.switch {
|
||||||
background: #EFF0F1;
|
background: #EFF0F1;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
padding: 0 4px;
|
||||||
&>>> .el-radio-button {
|
&>>> .el-radio-button {
|
||||||
.el-radio-button__inner {
|
.el-radio-button__inner {
|
||||||
border: none;
|
border: none;
|
||||||
|
@@ -22,8 +22,8 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
config: {
|
config: {
|
||||||
title: '实时数据',
|
title: this.$t('dashboard.RealTimeData'),
|
||||||
tip: '实时数据'
|
tip: this.$t('dashboard.RealTimeData')
|
||||||
},
|
},
|
||||||
counter: {
|
counter: {
|
||||||
total_count_online_sessions: '.',
|
total_count_online_sessions: '.',
|
||||||
|
@@ -51,7 +51,7 @@ export default {
|
|||||||
fontSize: 24,
|
fontSize: 24,
|
||||||
color: '#646A73'
|
color: '#646A73'
|
||||||
},
|
},
|
||||||
subtext: '占比' + percentage + '%',
|
subtext: this.$t('dashboard.Proportion') + percentage + '%',
|
||||||
subtextStyle: {
|
subtextStyle: {
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
color: '#646A73'
|
color: '#646A73'
|
||||||
|
Reference in New Issue
Block a user