<template> <!--<div class="navbar navbar-default" mode="horizontal" style="height:10px; background-image: linear-gradient(to right, #4776E7 0%, #5A8BFF 100%)">--> <div style="height:100%; background-image: linear-gradient(to right, #4776E7 0%, #5A8BFF 100%)"> <div class="navbar navbar-left" style="padding-left: 1%;color: white;"> <span style="font-size: 20px;">{{headTitle}}</span> </div> <div class="right-menu"> <div class="container-fluid"> <div class="navbar navbar-right"> <span class="glyphicon glyphicon-user" style="color: white;padding-right: 3px"></span><span style="color: white;padding-right: 10px">{{user_name}}</span> <span class="glyphicon glyphicon-calendar" style="color: white"></span><span style="color: white; padding-right: 10px"> {{dateTime}}</span> <el-tooltip v-if='!show' class="item" effect="dark" :content="$t('TheLayoutHeader.lock')" placement="bottom-end"> <i class="el-icon-lock" aria-hidden="true" @click="pageLock" style="color: white;font-size: 15px;padding-right: 8px"></i> <!--<i class="el-icon-lock" aria-hidden="true" @click="pageLock" style="color: white;font-size: 15px;padding-right: 8px"></i>--> <!--<button class="btn btn-default navbar-btn" @click="pageLock"><i class="el-icon-lock" aria-hidden="true"></i></button>--> </el-tooltip> <el-tooltip v-if='show' class="item" effect="dark" :content="$t('TheLayoutHeader.unlock')" placement="bottom-end"> <!--<button class="btn btn-default navbar-btn" @click="pageUnlock"><i class="el-icon-unlock" aria-hidden="true"></i></button>--> <!--<i class="el-icon-unlock" aria-hidden="true" @click="pageUnlock" style="color: white; font-size: 15px;padding-right: 8px"></i>--> <i class="el-icon-unlock" aria-hidden="true" @click="pageUnlock" style="color: white; font-size: 15px;padding-right: 8px"></i> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('TheLayoutHeader.logout')" placement="bottom-end"> <!--<button class="btn btn-default navbar-btn" @click="userLogout" style="width: 35px; margin-right: 8px;"><i class="fa fa-sign-out" aria-hidden="true"></i></button>--> <!--<i class="fa fa-sign-out" aria-hidden="true" @click="userLogout" style="color: white; font-size: 15px;padding-right: 10px"></i>--> <i class="fa fa-sign-out" aria-hidden="true" @click="userLogout" style="color: white; font-size: 15px;padding-right: 10px"></i> </el-tooltip> </div> </div> <div v-if="false" class="mask"> <div class="container-fluid"> <div class="navbar-right"> <el-tooltip class="item" effect="dark" :content="$t('TheLayoutHeader.unlock')" placement="bottom-end"> <!--<button class="btn btn-default navbar-btn" @click="pageUnlock"><i class="el-icon-unlock" aria-hidden="true"></i></button>--> <!--<i class="el-icon-unlock" aria-hidden="true" @click="pageUnlock" style="color: white; font-size: 15px;padding-right: 8px"></i>--> <i class="el-icon-unlock" aria-hidden="true" @click="pageUnlock" style="color: white; font-size: 15px;padding-right: 8px"></i> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('TheLayoutHeader.logout')" placement="bottom-end"> <!--<button class="btn btn-default navbar-btn" @click="userLogout" style="width: 35px; margin-right: 8px;"><i class="fa fa-sign-out" aria-hidden="true"></i></button>--> <!--<i class="fa fa-sign-out" aria-hidden="true" @click="userLogout" style="color: white; font-size: 15px;padding-right: 10px"></i>--> <i class="fa fa-sign-out" aria-hidden="true" @click="userLogout" style="color: white; font-size: 15px;padding-right: 10px"></i> </el-tooltip> </div> </div> </div> </div> <CommandExecuteContext v-bind:commands="commandContext"></CommandExecuteContext> </div> </template> <script> import {LANGUAGE_LOCALSTORAGE, USER_NAME, LOCKED} from '../../utils/constantCollection' import UserService from '../../domain/services/UserService' import HelperUtil from '../../utils/HelperUtil' import UserCommands from '../../commands/UserCommands' import CommandExecuteContext from '../../commands/CommandExecuteContext' import { EventBus } from '../../domain/EventBus' export default { name: 'TheLayoutHeader', data: function () { return { flag: true } }, // 创建期间 beforeCreate () { }, created () { if (window.sessionStorage.getItem(LOCKED) !== '0') { this.show = true } else { this.show = false } this.startTimer() }, components: { CommandExecuteContext }, data () { let dateTime const user_name = window.sessionStorage.getItem(USER_NAME) let timer let timeOut = '' // 界面锁定定时器 let min_screen = window.innerWidth < 768 const lang = localStorage.getItem(LANGUAGE_LOCALSTORAGE) || 'zh-cn' return { // 命令 // headTitle: HelperUtil.getSystemParams('headTitle'), headTitle: configSelf.headTitle, commandContext: {}, confirmFlag: { confirm: false }, fromUrl: '/TheLayout', user_name: user_name, dateTime: dateTime, langDrop: false, lang: lang, show: false, dialogFormVisible: false, form: { name: '', password: '' }, formLabelWidth: '80px', loginFlag: false } }, methods: { /*** * @Description : 注销 * @author : zf * @date : 2019/03/13 14:56 */ userLogout: function () { let _this = this UserService.logout().then((result) => { HelperUtil.toLoginPage() _this.InfoTip.successTip(_this, HelperUtil.getStatusCodeObjectByCode(_this.successCode.OTHERS_CODE)) }).catch((err) => { _this.InfoTip.errorTip(_this, err) }) }, // 改变语言 changeLanguage (language) { localStorage.setItem('user-language', language) this.$i18n.locale = language this.lang = language this.timeFormate(new Date()) EventBus.$emit('ws', language) window.localStorage.setItem('user-language',this.lang) }, clickLangue () { let langDropIcon = document.getElementById('langDropIcon') if (this.langDrop) { langDropIcon.style.transform = 'rotate(0deg)' } else { langDropIcon.style.transform = 'rotate(-180deg)' } this.langDrop = !this.langDrop }, // 获取当前时间函数 timeFormate (timeStamp) { let year = new Date(timeStamp).getFullYear() let month = new Date(timeStamp).getMonth() + 1 < 10 ? '0' + (new Date(timeStamp).getMonth() + 1) : new Date(timeStamp).getMonth() + 1 let date = new Date(timeStamp).getDate() < 10 ? '0' + new Date(timeStamp).getDate() : new Date(timeStamp).getDate() let hh = new Date(timeStamp).getHours() < 10 ? '0' + new Date(timeStamp).getHours() : new Date(timeStamp).getHours() let mm = new Date(timeStamp).getMinutes() < 10 ? '0' + new Date(timeStamp).getMinutes() : new Date(timeStamp).getMinutes() // let ss =new Date(timeStamp).getSeconds() < 10? "0" + new Date(timeStamp).getSeconds(): new Date(timeStamp).getSeconds(); // return year + "年" + month + "月" + date +"日"+" "+hh+":"+mm ; this.dateTime = year + this.$t('TheLayoutHeader.year') + month + this.$t('TheLayoutHeader.month') + date + this.$t('TheLayoutHeader.day') + ' ' + hh + ':' + mm }, // 定时器函数 nowTimes () { this.timeFormate(new Date()) clearInterval(this.timer) this.timer = setInterval(this.nowTimes, 30 * 1000) }, /*** * @Description : 界面锁定/解锁 * @author : zf * @date : 2019/05/27 14:41 */ pageLock () { window.sessionStorage.setItem(LOCKED, '1') this.show = true this.InfoTip.successTip(this, HelperUtil.getStatusCodeObjectByCode(this.successCode.LOCKED_CODE)) }, pageUnlock () { this.confirmCommand.execute() }, /*** * @Description : 定时锁定界面 * @author : zf * @date : 2019/05/27 15:20 */ startTimer () { let _this = this clearInterval(_this.timeOut) _this.timeOut = setInterval(function () { if (_this.show === false) { _this.pageLock() } }, 1000 * 60 * 60) // 15分钟定时锁定 } }, computed: { // 解锁认证命令 confirmCommand () { this.confirmFlag.confirm = false this.flag = false return UserCommands.confirmUserCommand(this.commandContext, this.confirmFlag) } }, watch: { // 监听解锁认证 commandContext (newVal, oldVal) { if (JSON.stringify(newVal) === '{}') { if (this.confirmFlag.confirm === true) { window.sessionStorage.setItem(LOCKED, '0') if (window.sessionStorage.getItem(LOCKED) !== '0') { this.show = true } else { this.show = false this.InfoTip.successTip(this, HelperUtil.getStatusCodeObjectByCode(this.successCode.UNLOCKED_CODE)) } } } deep: true } }, // 挂载完成时 mounted () { this.nowTimes() window.addEventListener('keydown', this.startTimer) window.addEventListener('click', this.startTimer) window.addEventListener('mousedown ', this.startTimer) window.addEventListener('mousemove', this.startTimer) window.addEventListener('scroll', this.startTimer) }, // 清除定时器,不然会导致页面崩溃 beforeDestroy () { window.removeEventListener('keydown', this.startTimer) window.removeEventListener('click', this.startTimer) window.removeEventListener('mousedown ', this.startTimer) window.removeEventListener('mousemove', this.startTimer) window.removeEventListener('scroll', this.startTimer) if (this.timer) { clearInterval(this.timer) } if (this.timeOut) { clearInterval(this.timeOut) } } } </script> <style scoped lang="scss"> .navbar { height: 50px; line-height: 50px; border-radius: 0px !important; .hamburger-container { line-height: 58px; height: 50px; float: left; padding: 0 10px; } .breadcrumb-container { float: left; } .right-menu { float: right; height: 100%; &:focus { outline: none; } .right-menu-item { display: inline-block; margin: 0 8px; } .international { vertical-align: top; } .avatar-container { height: 50px; margin-right: 30px; .avatar-wrapper { cursor: pointer; margin-top: 5px; position: relative; .user-avatar { width: 40px; height: 40px; border-radius: 10px; } .el-icon-caret-bottom { position: absolute; right: -20px; top: 25px; font-size: 12px; } } } } } .header { color: #ffffff; line-height: 60px; user-select: none; div { display: inline-block; } .logo { width: 240px; border-right: 1px solid #C0C4CC; margin-left: -20px; text-align: center; font-size: 25px; cursor: pointer; .image { width: 40px; height: 40px; vertical-align: middle; } } .logo-hide { width: 65px; .text { display: none; } } .content { padding: 0 20px; .toggle { font-size: 14px; cursor: pointer; } } .right { float: right; .right-item { display: inline-block; padding: 0 10px; min-width: 60px; text-align: center; font-size: 14px; cursor: pointer; .drop-icon { transition: transform 0.2s; } } .right-item:hover { background-color: rgba(255, 255, 255, 0.3); } .user-info { color: #ffffff; } } } @media (max-width: 768px) { .header { .logo { border: none; } .content { float: left; margin-left: -20px; } } } .mask { position: fixed; left: 0; right: 0; top: 0; bottom: 0; background: rgba(0, 0, 0, 0); z-index: 998; color: white; } </style>