Merge remote-tracking branch 'origin/v3' into v3

This commit is contained in:
feng 2022-11-25 10:10:05 +08:00
commit 30213bc4c0
17 changed files with 88 additions and 51 deletions

View File

@ -713,7 +713,8 @@
"JobType": "作业类型",
"Comment": "备注",
"History": "执行历史",
"UseParameterDefine": "定义参数"
"UseParameterDefine": "定义参数",
"TaskDispatch": "任务下发成功"
},
"perms": {
"": "",

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#646A73" d="M1 3.5a1 1 0 0 1 1-1h20a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-13Zm2 1v11h18v-11H3Z" clip-rule="evenodd" fill-rule="evenodd"/><path fill-opacity=".2" fill="#000" d="M1 3.5a1 1 0 0 1 1-1h20a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-13Zm2 1v11h18v-11H3Z" clip-rule="evenodd" fill-rule="evenodd"/><path fill="#646A73" d="M5.5 9a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1Z" clip-rule="evenodd" fill-rule="evenodd"/><path fill-opacity=".2" fill="#000" d="M5.5 9a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1Z" clip-rule="evenodd" fill-rule="evenodd"/><path fill="#646A73" d="M5.5 13a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1Z" clip-rule="evenodd" fill-rule="evenodd"/><path fill-opacity=".2" fill="#000" d="M5.5 13a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1Z" clip-rule="evenodd" fill-rule="evenodd"/><path fill="#646A73" d="M11 19.5v-3h2v3h-2Z" clip-rule="evenodd" fill-rule="evenodd"/><path fill-opacity=".2" fill="#000" d="M11 19.5v-3h2v3h-2Z" clip-rule="evenodd" fill-rule="evenodd"/><path fill="#646A73" d="M12 12.5a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v1Z" clip-rule="evenodd" fill-rule="evenodd"/><path fill-opacity=".2" fill="#000" d="M12 12.5a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v1Z" clip-rule="evenodd" fill-rule="evenodd"/><path fill="#646A73" d="M19 8.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1Z" clip-rule="evenodd" fill-rule="evenodd"/><path fill-opacity=".2" fill="#000" d="M19 8.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 .5.5v1Z" clip-rule="evenodd" fill-rule="evenodd"/><path fill="#646A73" d="M18 21a.5.5 0 0 1-.5.5h-11A.5.5 0 0 1 6 21v-1a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 .5.5v1Z" clip-rule="evenodd" fill-rule="evenodd"/><path fill-opacity=".2" fill="#000" d="M18 21a.5.5 0 0 1-.5.5h-11A.5.5 0 0 1 6 21v-1a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 .5.5v1Z" clip-rule="evenodd" fill-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -25,7 +25,7 @@ export default {
<style lang="scss" scoped>
.app-main {
background-color: #f3f3f4;
min-height: calc(100vh - 50px);
min-height: calc(100vh - 0px);
width: 100%;
position: relative;
overflow: hidden;

View File

@ -87,6 +87,7 @@ export default {
width: 24px;
margin-right: 5px;
vertical-align: middle;
background: white;
}
.mobile .header-avatar {
display: none;

View File

@ -1,6 +1,6 @@
<template>
<el-dropdown :show-timeout="50" @command="handleCommand">
<span class="el-dropdown-link" style="vertical-align: sub;">
<span class="el-dropdown-link" style="vertical-align: middle;">
<svg-icon icon-class="question-mark" style="font-size: 16px;" />
</span>
<el-dropdown-menu slot="dropdown">
@ -8,6 +8,7 @@
<el-dropdown-item command="support">{{ $t('common.nav.Support') }}</el-dropdown-item>
<el-dropdown-item command="toolsDownload">{{ $t('common.nav.Download') }}</el-dropdown-item>
<el-dropdown-item v-if="!hasLicence" command="enterprise">{{ $t('common.nav.EnterpriseEdition') }}</el-dropdown-item>
<el-dropdown-item command="github">GITHUB</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
@ -47,6 +48,9 @@ export default {
case 'toolsDownload':
window.open('/core/download/', '_blank')
break
case 'github':
window.open('https://github.com/jumpserver/jumpserver', '_blank')
break
default:
window.open(this.URLSite.HELP_DOCUMENT_URL, '_blank')
break

View File

@ -1,7 +1,7 @@
<template>
<el-select
:value="currentOrgId"
class="org-select organization"
class="org-select organization autoWidth-select"
filterable
:placeholder="$tc('common.Select')"
@change="changeOrg"
@ -9,6 +9,9 @@
<template slot="prefix">
<svg-icon icon-class="organization" />
<span class="line" />
<span class="placeholder">
{{ (orgGroups.map(i => (i.options.find(item => item.id === currentOrg.id) || {}).name)).filter(Boolean) }}
</span>
</template>
<el-option-group
@ -148,7 +151,7 @@ export default {
.line {
width: 1px;
margin-left: 8px;
margin-left: 6px;
border: .5px solid #FFF;
}
@ -183,4 +186,26 @@ export default {
font-size: 12px;
line-height: 30px;
}
.autoWidth-select {
min-width: 140px;
&>>> input{
position: absolute;
}
&>>> .el-input__inner{
margin-left: 6px;
}
&>>> .el-input__prefix{
position: relative;
left: 0px;
box-sizing: border-box;
border: 1px solid #ffffff00;
padding: 0 30px 0 0;
height: 30px;
line-height: 30px;
.placeholder {
visibility: hidden;
}
}
}
</style>

View File

@ -180,6 +180,7 @@ export default {
font-size: 16px;
text-align: center;
color: #1F2329;
margin-right: 10px;
}
.icons-title {
display: inline-block;

View File

@ -1,6 +1,6 @@
<template>
<el-link :href="webTerminalUrl" target="_blank">
<svg-icon icon-class="terminal" />
<el-link :href="webTerminalUrl" target="_blank" style="padding-top: 1px;">
<svg-icon icon-class="terminal" style="font-size: 17px;" />
</el-link>
</template>

View File

@ -30,7 +30,12 @@
</ul>
<hamburger :is-active="sidebar.opened" class="hamburger-container is-show-menu" @toggleClick="toggleSideBar" />
<ul class="navbar-left">
<li v-if="showOrganize()" class="left-item" style="margin-left: 24px">
<li class="left-item">
<div class="nav-logo">
<Logo v-if="showLogo" :collapse="false" />
</div>
</li>
<li v-if="showOrganize()" class="left-item" style="margin-left: 21px">
<Organization class="organization" />
</li>
</ul>
@ -47,6 +52,7 @@ import WebTerminal from './WebTerminal'
import Tickets from './Tickets'
import Organization from './Organization'
import SystemSetting from './SystemSetting'
import Logo from '../NavLeft/Logo'
export default {
components: {
@ -57,7 +63,8 @@ export default {
Tickets,
WebTerminal,
SiteMessages,
SystemSetting
SystemSetting,
Logo
},
data() {
return {}
@ -70,6 +77,9 @@ export default {
return this.publicSettings['TICKETS_ENABLED'] &&
this.$hasLicense() &&
this.$hasPerm('tickets.view_ticket')
},
showLogo() {
return this.$store.state.settings.sidebarLogo
}
},
methods: {
@ -111,6 +121,9 @@ export default {
& >>> .org-select {
padding: 0;
}
.nav-logo {
width: 200px;
}
}
}
@ -129,10 +142,13 @@ export default {
display: inline-block;
padding-right: 10px;
padding-left: 10px;
vertical-align: middle;
vertical-align: top;
&>>> .svg-icon {
color: #FFF!important;
}
&>>> .el-badge {
vertical-align: top;
}
}
.header-icon {

View File

@ -74,9 +74,9 @@ export default {
& .sidebar-logo-text {
width: 150px;
height: 45px;
padding: 2px 0;
vertical-align: middle;
height: 50px;
padding: 3px 0;
vertical-align: top;
margin-right: 12px;
}
@ -93,8 +93,8 @@ export default {
}
&.collapse {
height: 55px;
line-height: 55px;
height: 50px;
line-height: 46px;
.sidebar-logo {
margin-right: 0;
}

View File

@ -1,9 +1,6 @@
<template>
<div :class="{'has-logo': showLogo, 'show-orgs': showOrgs}">
<div class="nav-header">
<div class="nav-logo">
<Logo v-if="showLogo" :collapse="isCollapse" />
</div>
<div class="active-mobile">
<ViewSwitcher mode="vertical" class="mobile-view-switch" />
<Organization v-if="$hasLicense()" class="organization" />
@ -60,7 +57,6 @@
<script>
import { mapGetters } from 'vuex'
import Logo from './Logo'
import SidebarItem from './SidebarItem'
import Hamburger from '@/components/Hamburger'
import ViewSwitcher from '../NavHeader/ViewSwitcher'
@ -70,7 +66,6 @@ import variables from '@/styles/variables.scss'
export default {
components: {
SidebarItem,
Logo,
Hamburger,
ViewSwitcher,
Organization
@ -140,7 +135,7 @@ export default {
.nav-title {
position: relative;
box-sizing: border-box;
padding: 17px 0 17px 20px;
padding: 14px 0 13px 20px;
font-size: 16px;
font-weight: 500;
color: #1F2329;

View File

@ -1,19 +1,18 @@
<template>
<div :class="classObj" class="app-wrapper">
<div v-if="device==='mobile' && sidebar.opened" class="drawer-bg" @click="handleClickOutside" />
<NavLeft class="sidebar-container disabled-when-print" />
<div :class="{'fixed-header': fixedHeader}" class="disabled-when-print">
<NavHeader />
</div>
<div :class="{hasTagsView: needTagsView}" class="main-container">
<div :class="{'fixed-header': fixedHeader}" class="disabled-when-print">
<NavHeader />
</div>
<NavLeft class="sidebar-container disabled-when-print" />
<app-main />
<Footer class="disabled-when-print" />
</div>
</div>
</template>
<script>
import { NavHeader, NavLeft, AppMain, Footer } from './components'
import { NavHeader, NavLeft, AppMain } from './components'
import ResizeMixin from './mixin/ResizeHandler'
export default {
@ -21,8 +20,7 @@ export default {
components: {
NavLeft,
NavHeader,
AppMain,
Footer
AppMain
},
mixins: [ResizeMixin],
computed: {
@ -86,14 +84,10 @@ export default {
top: 0;
right: 0;
z-index: 9;
width: calc(100% - #{$sideBarWidth});
width: 100%;
transition: width 0.28s;
}
.hideSidebar .fixed-header {
width: calc(100% - 50px)
}
.mobile .fixed-header {
width: 100%;
}

View File

@ -27,7 +27,7 @@ export default {
name: 'MyHome',
component: () => import('@/views/myhome'),
meta: {
icon: 'dashboard',
icon: 'overview',
title: i18n.t('route.Overview'),
permissions: []
}

View File

@ -9,7 +9,7 @@
.el-submenu, .el-menu-item.submenu-title-noDropdown {
background-color: $menuBg;
border-top: dashed 1px #f3f3f4;
border-top: solid 1px #f3f3f4;
.el-submenu__title {
color: $menuText;
@ -25,7 +25,6 @@
.el-menu-item, .el-submenu-sidebar .el-menu-item {
background-color: $subMenuBg;
color: $menuText;
list-style: circle inside;
&.submenu-title-noDropdown {
@ -37,9 +36,11 @@
font-weight: 600;
list-style-type: disc;
}
&:hover {
background-color: $subMenuHover;
color: $subMenuActiveText;
list-style-type: disc;
}
i {
color: $menuText;

View File

@ -1,10 +1,11 @@
@import "./variables";
#app {
.main-container {
position: relative;
min-height: 100%;
margin-top: 50px;
transition: margin-left .28s;
margin-left: $sideBarWidth;
position: relative;
}
.sidebar-container {
@ -14,7 +15,7 @@
height: 100%;
position: fixed;
font-size: 0;
top: 0;
top: 50px;
bottom: 0;
left: 0;
z-index: 1001;
@ -40,7 +41,7 @@
&.has-logo {
.el-scrollbar {
height: calc(100% - 157px);
height: calc(100% - 150px);
}
}

View File

@ -38,9 +38,9 @@ export default {
width: '96px',
formatter: (row) => {
if (row.is_finished) {
return <i Class='fa fa-check text-primary' />
return <i Class='fa fa-check text-primary'/>
}
return <i Class='fa fa-times text-danger' />
return <i Class='fa fa-times text-danger'/>
},
formatterArgs: {
width: '14px'
@ -51,12 +51,12 @@ export default {
width: '96px',
formatter: (row) => {
if (!row.is_finished) {
return <i Class='fa fa fa-spinner fa-spin' />
return <i Class='fa fa fa-spinner fa-spin'/>
}
if (row.is_success) {
return <i Class='fa fa-check text-primary' />
return <i Class='fa fa-check text-primary'/>
}
return <i Class='fa fa-times text-danger' />
return <i Class='fa fa-times text-danger'/>
},
formatterArgs: {
width: '14px'

View File

@ -8,7 +8,6 @@
<script>
import GenericListPage from '@/layout/components/GenericListPage'
import { ActionsFormatter, DateFormatter } from '@/components/TableFormatters'
import { openTaskPage } from '@/utils/jms'
import JobRunDialog from '@/views/ops/Job/JobRunDialog'
export default {
@ -41,7 +40,7 @@ export default {
if (row.is_periodic) {
return <span>{row.type}&nbsp;
<el-tooltip content={this.$t('ops.ThisPeriodic')}>
<i Class='fa fa-circle-o text-primary' />
<i Class='fa fa-circle-o text-primary'/>
</el-tooltip>
</span>
}
@ -119,10 +118,8 @@ export default {
this.$axios.post('/api/v1/ops/job-executions/', {
job: row.id,
parameters: parameters
}).then(data => {
this.$axios.get(`/api/v1/ops/job-executions/${data.id}/`).then(d => {
openTaskPage(d.task_id)
})
}).then(() => {
this.$message.success(this.$tc('ops.TaskDispatch'))
})
}
}