|
@@ -1,27 +1,28 @@
|
|
<template>
|
|
<template>
|
|
<div class="navbar">
|
|
<div class="navbar">
|
|
- <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
|
|
|
|
|
|
+ <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container"
|
|
|
|
+ @toggleClick="toggleSideBar"/>
|
|
|
|
|
|
<breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>
|
|
<breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>
|
|
<top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
|
|
<top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
|
|
|
|
|
|
<div class="right-menu">
|
|
<div class="right-menu">
|
|
-<!-- <template v-if="device!=='mobile'">-->
|
|
|
|
-<!-- <search id="header-search" class="right-menu-item" />-->
|
|
|
|
|
|
+ <!-- <template v-if="device!=='mobile'">-->
|
|
|
|
+ <!-- <search id="header-search" class="right-menu-item" />-->
|
|
|
|
|
|
-<!-- <el-tooltip content="源码地址" effect="dark" placement="bottom">-->
|
|
|
|
-<!-- <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />-->
|
|
|
|
-<!-- </el-tooltip>-->
|
|
|
|
|
|
+ <!-- <el-tooltip content="源码地址" effect="dark" placement="bottom">-->
|
|
|
|
+ <!-- <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />-->
|
|
|
|
+ <!-- </el-tooltip>-->
|
|
|
|
|
|
-<!-- <el-tooltip content="文档地址" effect="dark" placement="bottom">-->
|
|
|
|
-<!-- <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />-->
|
|
|
|
-<!-- </el-tooltip>-->
|
|
|
|
|
|
+ <!-- <el-tooltip content="文档地址" effect="dark" placement="bottom">-->
|
|
|
|
+ <!-- <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />-->
|
|
|
|
+ <!-- </el-tooltip>-->
|
|
|
|
|
|
<!-- 消息中心 -->
|
|
<!-- 消息中心 -->
|
|
<span v-show="alarmIconShow">
|
|
<span v-show="alarmIconShow">
|
|
<span v-if="isMessage" key="1">
|
|
<span v-if="isMessage" key="1">
|
|
<el-tooltip content="告警消息" placement="bottom">
|
|
<el-tooltip content="告警消息" placement="bottom">
|
|
- <a href='javascript:;' @click="showAlarm" >
|
|
|
|
|
|
+ <a href='javascript:;' @click="showAlarm">
|
|
<svg-icon icon-class="notice" class="right-menu-item1 hover-effect1"/>
|
|
<svg-icon icon-class="notice" class="right-menu-item1 hover-effect1"/>
|
|
</a>
|
|
</a>
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
@@ -35,18 +36,18 @@
|
|
|
|
|
|
|
|
|
|
<el-tooltip content="全屏" placement="bottom">
|
|
<el-tooltip content="全屏" placement="bottom">
|
|
- <screenfull id="screenfull" class="right-menu-item hover-effect" />
|
|
|
|
|
|
+ <screenfull id="screenfull" class="right-menu-item hover-effect"/>
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
-<!-- <el-tooltip content="布局大小" effect="dark" placement="bottom">-->
|
|
|
|
-<!-- <size-select id="size-select" class="right-menu-item hover-effect" />-->
|
|
|
|
-<!-- </el-tooltip>-->
|
|
|
|
|
|
+ <!-- <el-tooltip content="布局大小" effect="dark" placement="bottom">-->
|
|
|
|
+ <!-- <size-select id="size-select" class="right-menu-item hover-effect" />-->
|
|
|
|
+ <!-- </el-tooltip>-->
|
|
|
|
|
|
-<!-- </template>-->
|
|
|
|
|
|
+ <!-- </template>-->
|
|
|
|
|
|
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
|
|
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
|
|
<div class="avatar-wrapper">
|
|
<div class="avatar-wrapper">
|
|
<img src="@/assets/img1.jpg" class="user-avatar">
|
|
<img src="@/assets/img1.jpg" class="user-avatar">
|
|
- <i class="el-icon-caret-bottom" />
|
|
|
|
|
|
+ <i class="el-icon-caret-bottom"/>
|
|
</div>
|
|
</div>
|
|
<el-dropdown-menu slot="dropdown">
|
|
<el-dropdown-menu slot="dropdown">
|
|
<router-link to="/user/profile">
|
|
<router-link to="/user/profile">
|
|
@@ -74,17 +75,17 @@
|
|
max-height="700"
|
|
max-height="700"
|
|
:data="alarmList"
|
|
:data="alarmList"
|
|
>
|
|
>
|
|
- <vxe-table-column field="alarmContent" title="告警内容" />
|
|
|
|
|
|
+ <vxe-table-column field="alarmContent" title="告警内容"/>
|
|
<vxe-table-column field="createTime" title="时间" width="200px"/>
|
|
<vxe-table-column field="createTime" title="时间" width="200px"/>
|
|
<vxe-table-column title="操作" width="100px">
|
|
<vxe-table-column title="操作" width="100px">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
- <el-button
|
|
|
|
- size="mini"
|
|
|
|
- type="text"
|
|
|
|
- icon="el-icon-reading"
|
|
|
|
- @click="readDone(scope.row)"
|
|
|
|
- >查收
|
|
|
|
- </el-button>
|
|
|
|
|
|
+ <el-button
|
|
|
|
+ size="mini"
|
|
|
|
+ type="text"
|
|
|
|
+ icon="el-icon-reading"
|
|
|
|
+ @click="readDone(scope.row)"
|
|
|
|
+ >查收
|
|
|
|
+ </el-button>
|
|
</template>
|
|
</template>
|
|
</vxe-table-column>
|
|
</vxe-table-column>
|
|
</vxe-table>
|
|
</vxe-table>
|
|
@@ -97,7 +98,7 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
-import { mapGetters } from 'vuex'
|
|
|
|
|
|
+import {mapGetters} from 'vuex'
|
|
import Breadcrumb from '@/components/Breadcrumb'
|
|
import Breadcrumb from '@/components/Breadcrumb'
|
|
import TopNav from '@/components/TopNav'
|
|
import TopNav from '@/components/TopNav'
|
|
import Hamburger from '@/components/Hamburger'
|
|
import Hamburger from '@/components/Hamburger'
|
|
@@ -116,11 +117,11 @@ export default {
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
interval: null,
|
|
interval: null,
|
|
- isMessage:false,
|
|
|
|
- alarmIconShow:false,
|
|
|
|
- title:'告警消息',
|
|
|
|
- loading:false,
|
|
|
|
- alarmList:null,
|
|
|
|
|
|
+ isMessage: false,
|
|
|
|
+ alarmIconShow: false,
|
|
|
|
+ title: '告警消息',
|
|
|
|
+ loading: false,
|
|
|
|
+ alarmList: null,
|
|
// 是否显示弹出层
|
|
// 是否显示弹出层
|
|
open: false,
|
|
open: false,
|
|
message: 2
|
|
message: 2
|
|
@@ -168,26 +169,36 @@ export default {
|
|
}
|
|
}
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
- async getCurrentUser(){
|
|
|
|
|
|
+ async getCurrentUser() {
|
|
var user;
|
|
var user;
|
|
- await this.$axios.get('/sysUserController/getCurrentUser').then((res) => {
|
|
|
|
- user = res.data.sysUser
|
|
|
|
|
|
+ let sysTime1
|
|
|
|
+ let lk1
|
|
|
|
+ await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {
|
|
|
|
+ sysTime1 = res.data.sysTime
|
|
|
|
+ lk1 = res.data.lk
|
|
|
|
+ }).catch((error) => {
|
|
|
|
+ })
|
|
|
|
+ const searchParams1 = {
|
|
|
|
+ sysTime: sysTime1,
|
|
|
|
+ lk: lk1
|
|
|
|
+ }
|
|
|
|
+ await this.$axios.get('/sysUserController/getCurrentUser', {params: searchParams1}).then((res) => {
|
|
|
|
+ user = res.data.sysUser
|
|
// 用户信息+菜单权限加密存储
|
|
// 用户信息+菜单权限加密存储
|
|
let encryptUserInfo = userinfoEncrypt(JSON.stringify(res.data))
|
|
let encryptUserInfo = userinfoEncrypt(JSON.stringify(res.data))
|
|
- sessionStorage.setItem('active',encryptUserInfo)
|
|
|
|
- if (user.lastUpdatePwdTime==null){
|
|
|
|
|
|
+ sessionStorage.setItem('active', encryptUserInfo)
|
|
|
|
+ if (user.lastUpdatePwdTime == null) {
|
|
this.$message({
|
|
this.$message({
|
|
type: 'warning',
|
|
type: 'warning',
|
|
message: '需要修改初始密码!'
|
|
message: '需要修改初始密码!'
|
|
});
|
|
});
|
|
this.$router.push("/user/profile")
|
|
this.$router.push("/user/profile")
|
|
- }
|
|
|
|
- else{
|
|
|
|
|
|
+ } else {
|
|
var dateBegin = new Date(user.lastUpdatePwdTime);
|
|
var dateBegin = new Date(user.lastUpdatePwdTime);
|
|
var dateEnd = new Date();
|
|
var dateEnd = new Date();
|
|
var dateDiff = dateEnd.getTime() - dateBegin.getTime(); //时间差的毫秒数
|
|
var dateDiff = dateEnd.getTime() - dateBegin.getTime(); //时间差的毫秒数
|
|
var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
|
|
var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
|
|
- if (dayDiff>=30){
|
|
|
|
|
|
+ if (dayDiff >= 30) {
|
|
this.$message({
|
|
this.$message({
|
|
type: 'warning',
|
|
type: 'warning',
|
|
message: '密码超过30天需要修改!'
|
|
message: '密码超过30天需要修改!'
|
|
@@ -199,6 +210,30 @@ export default {
|
|
this.$message.error('获取当前用户数据出错' + error)
|
|
this.$message.error('获取当前用户数据出错' + error)
|
|
})
|
|
})
|
|
|
|
|
|
|
|
+ let sysTime2
|
|
|
|
+ let lk2
|
|
|
|
+ await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {
|
|
|
|
+ sysTime2 = res.data.sysTime
|
|
|
|
+ lk2 = res.data.lk
|
|
|
|
+ }).catch((error) => {
|
|
|
|
+ })
|
|
|
|
+ const searchParams2 = {
|
|
|
|
+ sysTime: sysTime2,
|
|
|
|
+ lk: lk2
|
|
|
|
+ }
|
|
|
|
+ // 检测用户密码是否符合要求
|
|
|
|
+ await this.$axios.get('/sysUserController/validatePasswordRule', {params: searchParams2}).then((res) => {
|
|
|
|
+ if (res.data != 'true'){
|
|
|
|
+ this.$message({
|
|
|
|
+ type: 'warning',
|
|
|
|
+ message: '密码规则不符合当前系统设定,请重新修改密码!'+res.data
|
|
|
|
+ })
|
|
|
|
+ this.$router.push("/user/profile")
|
|
|
|
+ }
|
|
|
|
+ }).catch((error) => {
|
|
|
|
+ this.$message.error('检测密码规则出错' + error)
|
|
|
|
+ })
|
|
|
|
+
|
|
let sysTime
|
|
let sysTime
|
|
let lk
|
|
let lk
|
|
await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {
|
|
await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {
|
|
@@ -212,12 +247,12 @@ export default {
|
|
sysTime: sysTime,
|
|
sysTime: sysTime,
|
|
lk: lk
|
|
lk: lk
|
|
}
|
|
}
|
|
- await this.$axios.get('/sysUserController/getUserRole',{params: searchParams}).then((res) => {
|
|
|
|
|
|
+ await this.$axios.get('/sysUserController/getUserRole', {params: searchParams}).then((res) => {
|
|
let userRole = res.data
|
|
let userRole = res.data
|
|
- if (userRole.roleId==1){
|
|
|
|
|
|
+ if (userRole.roleId == 1) {
|
|
this.getAlarmData()
|
|
this.getAlarmData()
|
|
// 系统管理员角色显示告警图标
|
|
// 系统管理员角色显示告警图标
|
|
- this.alarmIconShow=true
|
|
|
|
|
|
+ this.alarmIconShow = true
|
|
this.getAlarmData()
|
|
this.getAlarmData()
|
|
|
|
|
|
// 取消定时刷新告警,无法实现用户非活动状态超时登出
|
|
// 取消定时刷新告警,无法实现用户非活动状态超时登出
|
|
@@ -228,9 +263,8 @@ export default {
|
|
// this.getAlarmData()
|
|
// this.getAlarmData()
|
|
// }
|
|
// }
|
|
// }, 60000000)
|
|
// }, 60000000)
|
|
- }
|
|
|
|
- else{
|
|
|
|
- this.alarmIconShow=false
|
|
|
|
|
|
+ } else {
|
|
|
|
+ this.alarmIconShow = false
|
|
}
|
|
}
|
|
|
|
|
|
}).catch((error) => {
|
|
}).catch((error) => {
|
|
@@ -240,7 +274,7 @@ export default {
|
|
/**
|
|
/**
|
|
* 删除提交
|
|
* 删除提交
|
|
*/
|
|
*/
|
|
- readDone:debounce(async function(row){
|
|
|
|
|
|
+ readDone: debounce(async function (row) {
|
|
let sysTime
|
|
let sysTime
|
|
let lk
|
|
let lk
|
|
await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {
|
|
await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {
|
|
@@ -272,13 +306,13 @@ export default {
|
|
message: '查收失败!'
|
|
message: '查收失败!'
|
|
});
|
|
});
|
|
})
|
|
})
|
|
- },1000),
|
|
|
|
|
|
+ }, 1000),
|
|
// 取消按钮
|
|
// 取消按钮
|
|
cancel() {
|
|
cancel() {
|
|
this.getAlarmData()
|
|
this.getAlarmData()
|
|
this.open = false
|
|
this.open = false
|
|
},
|
|
},
|
|
- async getAlarmData(){
|
|
|
|
|
|
+ async getAlarmData() {
|
|
let sysTime
|
|
let sysTime
|
|
let lk
|
|
let lk
|
|
await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {
|
|
await this.$axios.get('/sysPolicyController/getLicenseKey').then((res) => {
|
|
@@ -292,13 +326,12 @@ export default {
|
|
}
|
|
}
|
|
this.loading = true
|
|
this.loading = true
|
|
// 查询告警消息
|
|
// 查询告警消息
|
|
- await this.$axios.get('/sysAlarmController/getAll',{params: searchParams}).then((res) => {
|
|
|
|
|
|
+ await this.$axios.get('/sysAlarmController/getAll', {params: searchParams}).then((res) => {
|
|
this.alarmList = res.data
|
|
this.alarmList = res.data
|
|
- if (res.data.length>0){
|
|
|
|
|
|
+ if (res.data.length > 0) {
|
|
// 改变消息图标
|
|
// 改变消息图标
|
|
this.isMessage = true;
|
|
this.isMessage = true;
|
|
- }
|
|
|
|
- else{
|
|
|
|
|
|
+ } else {
|
|
this.isMessage = false;
|
|
this.isMessage = false;
|
|
}
|
|
}
|
|
this.loading = false
|
|
this.loading = false
|
|
@@ -307,7 +340,7 @@ export default {
|
|
// this.$message.error(error)
|
|
// this.$message.error(error)
|
|
})
|
|
})
|
|
},
|
|
},
|
|
- showAlarm(){
|
|
|
|
|
|
+ showAlarm() {
|
|
this.open = true
|
|
this.open = true
|
|
},
|
|
},
|
|
toggleSideBar() {
|
|
toggleSideBar() {
|
|
@@ -315,7 +348,7 @@ export default {
|
|
},
|
|
},
|
|
async logout() {
|
|
async logout() {
|
|
this.$axios.post(
|
|
this.$axios.post(
|
|
- '/logout',{}
|
|
|
|
|
|
+ '/logout', {}
|
|
).then((res) => {
|
|
).then((res) => {
|
|
this.$message.success(res.data)
|
|
this.$message.success(res.data)
|
|
removeToken()
|
|
removeToken()
|
|
@@ -339,20 +372,22 @@ export default {
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
.right-menu-item1 {
|
|
.right-menu-item1 {
|
|
- position:relative;
|
|
|
|
- top:-15px;
|
|
|
|
|
|
+ position: relative;
|
|
|
|
+ top: -15px;
|
|
font-size: 18px;
|
|
font-size: 18px;
|
|
}
|
|
}
|
|
-.item{
|
|
|
|
- margin-tip:5px;
|
|
|
|
- margin-right:15px;
|
|
|
|
|
|
+
|
|
|
|
+.item {
|
|
|
|
+ margin-tip: 5px;
|
|
|
|
+ margin-right: 15px;
|
|
}
|
|
}
|
|
|
|
+
|
|
.navbar {
|
|
.navbar {
|
|
height: 50px;
|
|
height: 50px;
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
position: relative;
|
|
position: relative;
|
|
background: #fff;
|
|
background: #fff;
|
|
- box-shadow: 0 1px 4px rgba(0,21,41,.08);
|
|
|
|
|
|
+ box-shadow: 0 1px 4px rgba(0, 21, 41, .08);
|
|
|
|
|
|
.hamburger-container {
|
|
.hamburger-container {
|
|
line-height: 46px;
|
|
line-height: 46px;
|
|
@@ -360,7 +395,7 @@ export default {
|
|
float: left;
|
|
float: left;
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
transition: background .3s;
|
|
transition: background .3s;
|
|
- -webkit-tap-highlight-color:transparent;
|
|
|
|
|
|
+ -webkit-tap-highlight-color: transparent;
|
|
|
|
|
|
&:hover {
|
|
&:hover {
|
|
background: rgba(0, 0, 0, .025)
|
|
background: rgba(0, 0, 0, .025)
|
|
@@ -439,7 +474,8 @@ export default {
|
|
font-size: 18px;
|
|
font-size: 18px;
|
|
color: #5a5e66;
|
|
color: #5a5e66;
|
|
vertical-align: text-bottom;
|
|
vertical-align: text-bottom;
|
|
- top:0px;
|
|
|
|
|
|
+ top: 0px;
|
|
|
|
+
|
|
&.hover-effect1 {
|
|
&.hover-effect1 {
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
transition: background .3s;
|
|
transition: background .3s;
|