Merge branch 'master-dev' into feature-Beta-dev-renpy
This commit is contained in:
commit
afc0d317ca
|
@ -1,12 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="user-wrapper" :class="theme">
|
<div class="user-wrapper" :class="theme">
|
||||||
<header-notice class="action"/>
|
<header-notice class="action" />
|
||||||
<a-dropdown>
|
<a-dropdown>
|
||||||
<span class="action action-full ant-dropdown-link user-dropdown-menu">
|
<span class="action action-full ant-dropdown-link user-dropdown-menu">
|
||||||
<img src="@/assets/images/header/avatar.png" alt="">
|
<img src="@/assets/images/header/avatar.png" alt="" />
|
||||||
</span>
|
</span>
|
||||||
<a-menu slot="overlay" class="user-dropdown-menu-wrapper">
|
<a-menu slot="overlay" class="user-dropdown-menu-wrapper">
|
||||||
<a-menu-item key="0">
|
<!-- <a-menu-item key="0">
|
||||||
<router-link :to="{ name: 'account-center' }">
|
<router-link :to="{ name: 'account-center' }">
|
||||||
<a-icon type="user"/>
|
<a-icon type="user"/>
|
||||||
<span>个人中心</span>
|
<span>个人中心</span>
|
||||||
|
@ -21,24 +21,24 @@
|
||||||
<a-menu-item key="3" @click="systemSetting">
|
<a-menu-item key="3" @click="systemSetting">
|
||||||
<a-icon type="tool"/>
|
<a-icon type="tool"/>
|
||||||
<span>系统设置</span>
|
<span>系统设置</span>
|
||||||
</a-menu-item>
|
</a-menu-item> -->
|
||||||
<a-menu-item key="4" @click="updatePassword">
|
<a-menu-item key="4" @click="updatePassword">
|
||||||
<a-icon type="setting"/>
|
<a-icon type="setting" />
|
||||||
<span>密码修改</span>
|
<span>Change Password</span>
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
<a-menu-item key="5" @click="updateCurrentDepart">
|
<!-- <a-menu-item key="5" @click="updateCurrentDepart">
|
||||||
<a-icon type="cluster"/>
|
<a-icon type="cluster"/>
|
||||||
<span>切换部门</span>
|
<span>切换部门</span>
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
<a-menu-item key="6" @click="clearCache">
|
<a-menu-item key="6" @click="clearCache">
|
||||||
<a-icon type="sync"/>
|
<a-icon type="sync"/>
|
||||||
<span>清理缓存</span>
|
<span>清理缓存</span>
|
||||||
</a-menu-item>
|
</a-menu-item> -->
|
||||||
</a-menu>
|
</a-menu>
|
||||||
</a-dropdown>
|
</a-dropdown>
|
||||||
<span class="action">
|
<span class="action">
|
||||||
<a class="logout_title" href="javascript:;" @click="handleLogout">
|
<a class="logout_title" href="javascript:;" @click="handleLogout">
|
||||||
<img src="@/assets/images/header/close.png" alt="">
|
<img src="@/assets/images/header/close.png" alt="" />
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
<user-password ref="userPassword"></user-password>
|
<user-password ref="userPassword"></user-password>
|
||||||
|
@ -48,201 +48,205 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import HeaderNotice from './HeaderNotice'
|
import HeaderNotice from './HeaderNotice'
|
||||||
import UserPassword from './UserPassword'
|
import UserPassword from './UserPassword'
|
||||||
import SettingDrawer from "@/components/setting/SettingDrawer";
|
import SettingDrawer from '@/components/setting/SettingDrawer'
|
||||||
import DepartSelect from './DepartSelect'
|
import DepartSelect from './DepartSelect'
|
||||||
import { mapActions, mapGetters,mapState } from 'vuex'
|
import { mapActions, mapGetters, mapState } from 'vuex'
|
||||||
import { mixinDevice } from '@/utils/mixin.js'
|
import { mixinDevice } from '@/utils/mixin.js'
|
||||||
import { getFileAccessHttpUrl,getAction } from "@/api/manage"
|
import { getFileAccessHttpUrl, getAction } from '@/api/manage'
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import { UI_CACHE_DB_DICT_DATA } from "@/store/mutation-types"
|
import { UI_CACHE_DB_DICT_DATA } from '@/store/mutation-types'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "UserMenu",
|
name: 'UserMenu',
|
||||||
mixins: [mixinDevice],
|
mixins: [mixinDevice],
|
||||||
data(){
|
data() {
|
||||||
return{
|
return {
|
||||||
// update-begin author:sunjianlei date:20200219 for: 头部菜单搜索规范命名 --------------
|
// update-begin author:sunjianlei date:20200219 for: 头部菜单搜索规范命名 --------------
|
||||||
searchMenuOptions:[],
|
searchMenuOptions: [],
|
||||||
searchMenuComp: 'span',
|
searchMenuComp: 'span',
|
||||||
searchMenuVisible: false,
|
searchMenuVisible: false,
|
||||||
// update-begin author:sunjianlei date:20200219 for: 头部菜单搜索规范命名 --------------
|
// update-begin author:sunjianlei date:20200219 for: 头部菜单搜索规范命名 --------------
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
HeaderNotice,
|
HeaderNotice,
|
||||||
UserPassword,
|
UserPassword,
|
||||||
DepartSelect,
|
DepartSelect,
|
||||||
SettingDrawer
|
SettingDrawer,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
theme: {
|
theme: {
|
||||||
type: String,
|
type: String,
|
||||||
required: false,
|
required: false,
|
||||||
default: 'dark'
|
default: 'dark',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
|
||||||
|
created() {
|
||||||
|
let lists = []
|
||||||
|
this.searchMenus(lists, this.permissionMenuList)
|
||||||
|
this.searchMenuOptions = [...lists]
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
//如果是单点登录模式
|
||||||
|
if (process.env.VUE_APP_SSO == 'true') {
|
||||||
|
let depart = this.userInfo().orgCode
|
||||||
|
if (!depart) {
|
||||||
|
this.updateCurrentDepart()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState({
|
||||||
|
// 后台菜单
|
||||||
|
permissionMenuList: (state) => state.user.permissionList,
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
/* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
|
||||||
|
watch: {
|
||||||
|
// update-begin author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框
|
||||||
|
device: {
|
||||||
|
immediate: true,
|
||||||
|
handler() {
|
||||||
|
this.searchMenuVisible = false
|
||||||
|
this.searchMenuComp = this.isMobile() ? 'a-modal' : 'span'
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
// update-end author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
|
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
|
||||||
created() {
|
showClick() {
|
||||||
let lists = []
|
this.searchMenuVisible = true
|
||||||
this.searchMenus(lists,this.permissionMenuList)
|
|
||||||
this.searchMenuOptions=[...lists]
|
|
||||||
},
|
},
|
||||||
mounted() {
|
hiddenClick() {
|
||||||
//如果是单点登录模式
|
this.shows = false
|
||||||
if (process.env.VUE_APP_SSO == 'true') {
|
|
||||||
let depart = this.userInfo().orgCode
|
|
||||||
if (!depart) {
|
|
||||||
this.updateCurrentDepart()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
...mapState({
|
|
||||||
// 后台菜单
|
|
||||||
permissionMenuList: state => state.user.permissionList
|
|
||||||
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
/* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
|
/* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
|
||||||
watch: {
|
...mapActions(['Logout']),
|
||||||
// update-begin author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框
|
...mapGetters(['nickname', 'avatar', 'userInfo']),
|
||||||
device: {
|
getAvatar() {
|
||||||
immediate: true,
|
return getFileAccessHttpUrl(this.avatar())
|
||||||
handler() {
|
|
||||||
this.searchMenuVisible = false
|
|
||||||
this.searchMenuComp = this.isMobile() ? 'a-modal' : 'span'
|
|
||||||
},
|
|
||||||
},
|
|
||||||
// update-end author:sunjianlei date:20200219 for: 菜单搜索改为动态组件,在手机端呈现出弹出框
|
|
||||||
},
|
},
|
||||||
methods: {
|
handleLogout() {
|
||||||
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
|
const that = this
|
||||||
showClick() {
|
|
||||||
this.searchMenuVisible = true
|
|
||||||
},
|
|
||||||
hiddenClick(){
|
|
||||||
this.shows = false
|
|
||||||
},
|
|
||||||
/* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
|
|
||||||
...mapActions(["Logout"]),
|
|
||||||
...mapGetters(["nickname", "avatar","userInfo"]),
|
|
||||||
getAvatar(){
|
|
||||||
return getFileAccessHttpUrl(this.avatar())
|
|
||||||
},
|
|
||||||
handleLogout() {
|
|
||||||
const that = this
|
|
||||||
|
|
||||||
this.$confirm({
|
this.$confirm({
|
||||||
title: 'Prompt',
|
title: 'Prompt',
|
||||||
content: 'Ensure Log Out?',
|
content: 'Ensure Log Out?',
|
||||||
cancelButtonProps: {
|
cancelButtonProps: {
|
||||||
props: {
|
props: {
|
||||||
type: 'warn'
|
type: 'warn',
|
||||||
}
|
|
||||||
},
|
},
|
||||||
onOk() {
|
},
|
||||||
return that.Logout({}).then(() => {
|
onOk() {
|
||||||
|
return that
|
||||||
|
.Logout({})
|
||||||
|
.then(() => {
|
||||||
// update-begin author:scott date:20211223 for:【JTC-198】退出登录体验不好
|
// update-begin author:scott date:20211223 for:【JTC-198】退出登录体验不好
|
||||||
//that.$router.push({ path: '/user/login' });
|
//that.$router.push({ path: '/user/login' });
|
||||||
window.location.reload()
|
window.location.reload()
|
||||||
// update-end author:scott date:20211223 for:【JTC-198】退出登录体验不好
|
// update-end author:scott date:20211223 for:【JTC-198】退出登录体验不好
|
||||||
}).catch(err => {
|
})
|
||||||
|
.catch((err) => {
|
||||||
that.$message.error({
|
that.$message.error({
|
||||||
title: 'Error',
|
title: 'Error',
|
||||||
description: err.message
|
description: err.message,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
onCancel() {
|
onCancel() {},
|
||||||
},
|
})
|
||||||
});
|
},
|
||||||
},
|
updatePassword() {
|
||||||
updatePassword(){
|
let username = this.userInfo().username
|
||||||
let username = this.userInfo().username
|
this.$refs.userPassword.show(username)
|
||||||
this.$refs.userPassword.show(username)
|
},
|
||||||
},
|
updateCurrentDepart() {
|
||||||
updateCurrentDepart(){
|
this.$refs.departSelect.show()
|
||||||
this.$refs.departSelect.show()
|
},
|
||||||
},
|
systemSetting() {
|
||||||
systemSetting(){
|
this.$refs.settingDrawer.showDrawer()
|
||||||
this.$refs.settingDrawer.showDrawer()
|
},
|
||||||
},
|
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
|
||||||
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
|
searchMenus(arr, menus) {
|
||||||
searchMenus(arr,menus){
|
for (let i of menus) {
|
||||||
for(let i of menus){
|
if (!i.hidden && 'layouts/RouteView' !== i.component) {
|
||||||
if(!i.hidden && "layouts/RouteView"!==i.component){
|
arr.push(i)
|
||||||
arr.push(i)
|
|
||||||
}
|
|
||||||
if(i.children&& i.children.length>0){
|
|
||||||
this.searchMenus(arr,i.children)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
if (i.children && i.children.length > 0) {
|
||||||
filterOption(input, option) {
|
this.searchMenus(arr, i.children)
|
||||||
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
|
||||||
},
|
|
||||||
// update_begin author:sunjianlei date:20191230 for: 解决外部链接打开失败的问题
|
|
||||||
searchMethods(value) {
|
|
||||||
let route = this.searchMenuOptions.filter(item => item.id === value)[0]
|
|
||||||
//update-begin-author:sunjianlei date:20220111 for: 【JTC-702】【菜单搜索】菜单搜索里点击跳转的菜单,无法将Token信息传递过去
|
|
||||||
if(route.component.includes('layouts/IframePageView')){
|
|
||||||
this.$router.push(route)
|
|
||||||
}else{
|
|
||||||
this.$router.push({ path: route.path })
|
|
||||||
}
|
}
|
||||||
//update-end-author:sunjianlei date:20220111 for: 【JTC-702】【菜单搜索】菜单搜索里点击跳转的菜单,无法将Token信息传递过去
|
}
|
||||||
this.searchMenuVisible = false
|
},
|
||||||
},
|
filterOption(input, option) {
|
||||||
// update_end author:sunjianlei date:20191230 for: 解决外部链接打开失败的问题
|
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||||
/*update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
|
},
|
||||||
/*update_begin author:liushaoqian date:20200507 for: 刷新缓存*/
|
// update_begin author:sunjianlei date:20191230 for: 解决外部链接打开失败的问题
|
||||||
clearCache(){
|
searchMethods(value) {
|
||||||
getAction("sys/dict/refleshCache").then((res) => {
|
let route = this.searchMenuOptions.filter((item) => item.id === value)[0]
|
||||||
|
//update-begin-author:sunjianlei date:20220111 for: 【JTC-702】【菜单搜索】菜单搜索里点击跳转的菜单,无法将Token信息传递过去
|
||||||
|
if (route.component.includes('layouts/IframePageView')) {
|
||||||
|
this.$router.push(route)
|
||||||
|
} else {
|
||||||
|
this.$router.push({ path: route.path })
|
||||||
|
}
|
||||||
|
//update-end-author:sunjianlei date:20220111 for: 【JTC-702】【菜单搜索】菜单搜索里点击跳转的菜单,无法将Token信息传递过去
|
||||||
|
this.searchMenuVisible = false
|
||||||
|
},
|
||||||
|
// update_end author:sunjianlei date:20191230 for: 解决外部链接打开失败的问题
|
||||||
|
/*update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
|
||||||
|
/*update_begin author:liushaoqian date:20200507 for: 刷新缓存*/
|
||||||
|
clearCache() {
|
||||||
|
getAction('sys/dict/refleshCache')
|
||||||
|
.then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
//重新加载缓存
|
//重新加载缓存
|
||||||
getAction("sys/dict/queryAllDictItems").then((res) => {
|
getAction('sys/dict/queryAllDictItems').then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
Vue.ls.remove(UI_CACHE_DB_DICT_DATA)
|
Vue.ls.remove(UI_CACHE_DB_DICT_DATA)
|
||||||
Vue.ls.set(UI_CACHE_DB_DICT_DATA, res.result, 7 * 24 * 60 * 60 * 1000)
|
Vue.ls.set(UI_CACHE_DB_DICT_DATA, res.result, 7 * 24 * 60 * 60 * 1000)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.$message.success("刷新缓存完成!");
|
this.$message.success('刷新缓存完成!')
|
||||||
}
|
}
|
||||||
}).catch(e=>{
|
|
||||||
this.$message.warn("刷新缓存失败!");
|
|
||||||
console.log("刷新失败",e)
|
|
||||||
})
|
})
|
||||||
}
|
.catch((e) => {
|
||||||
/*update_end author:liushaoqian date:20200507 for: 刷新缓存*/
|
this.$message.warn('刷新缓存失败!')
|
||||||
}
|
console.log('刷新失败', e)
|
||||||
}
|
})
|
||||||
|
},
|
||||||
|
/*update_end author:liushaoqian date:20200507 for: 刷新缓存*/
|
||||||
|
},
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
/* update_begin author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/
|
/* update_begin author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/
|
||||||
/* update-begin author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */
|
/* update-begin author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */
|
||||||
.user-wrapper .search-input {
|
.user-wrapper .search-input {
|
||||||
width: 180px;
|
width: 180px;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
|
|
||||||
/deep/ .ant-select-selection {
|
/deep/ .ant-select-selection {
|
||||||
background-color: inherit;
|
background-color: inherit;
|
||||||
border: 0;
|
border: 0;
|
||||||
border-bottom: 1px solid white;
|
border-bottom: 1px solid white;
|
||||||
&__placeholder, &__field__placeholder {
|
&__placeholder,
|
||||||
color: inherit;
|
&__field__placeholder {
|
||||||
}
|
color: inherit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* update-end author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */
|
}
|
||||||
/* update_end author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/
|
/* update-end author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */
|
||||||
|
/* update_end author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.logout_title {
|
.logout_title {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
|
@ -11,8 +11,9 @@
|
||||||
:customRow="customRow"
|
:customRow="customRow"
|
||||||
:rowClassName="() => (canSelect ? 'custom-table-row' : '')"
|
:rowClassName="() => (canSelect ? 'custom-table-row' : '')"
|
||||||
@change="handleTableChange"
|
@change="handleTableChange"
|
||||||
:scroll="{ y: 186 }"
|
:scroll="scroll"
|
||||||
>
|
>
|
||||||
|
<!-- :scroll="{ y: 186 }" -->
|
||||||
<!-- 处理 scopedSlots -->
|
<!-- 处理 scopedSlots -->
|
||||||
<template v-for="slotName of scopedSlotsKeys" :slot="slotName" slot-scope="text, record, index">
|
<template v-for="slotName of scopedSlotsKeys" :slot="slotName" slot-scope="text, record, index">
|
||||||
<slot :name="slotName" :text="text" :record="record" :index="index"></slot>
|
<slot :name="slotName" :text="text" :record="record" :index="index"></slot>
|
||||||
|
@ -58,6 +59,7 @@ export default {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
|
scroll: { type: Object },
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -49,8 +49,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import moment from 'moment'
|
import moment from 'moment'
|
||||||
import dateFormat from '@/components/jeecg/JEasyCron/format-date'
|
import { getAction } from '@/api/manage'
|
||||||
import { getAction, postAction, httpAction, deleteAction } from '@/api/manage'
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
value: {
|
value: {
|
||||||
|
@ -76,6 +75,17 @@ export default {
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getDbList()
|
this.getDbList()
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
$route: {
|
||||||
|
handler: function (val, oldVal) {
|
||||||
|
if (val.query && val.query.id) {
|
||||||
|
this.getDbList()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getBeforeHours(num) {
|
getBeforeHours(num) {
|
||||||
let currentTime = moment()
|
let currentTime = moment()
|
||||||
|
@ -94,8 +104,10 @@ export default {
|
||||||
// 如果url中有sourceId
|
// 如果url中有sourceId
|
||||||
if (sourceId) {
|
if (sourceId) {
|
||||||
const find = res.result.find((item) => item.sourceId == sourceId)
|
const find = res.result.find((item) => item.sourceId == sourceId)
|
||||||
if (find) {
|
if (find && find.hostId) {
|
||||||
this.value.hostId = find.hostId
|
this.value.hostId = find.hostId
|
||||||
|
} else {
|
||||||
|
this.value.hostId = `my${find.sourceId}`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!this.value.hostId) {
|
if (!this.value.hostId) {
|
||||||
|
@ -103,7 +115,7 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.DbOptions = res.result.map((item, index) => {
|
this.DbOptions = res.result.map((item, index) => {
|
||||||
let str = `my${index}`
|
let str = `my${item.sourceId}`
|
||||||
return {
|
return {
|
||||||
label: item.sourceName,
|
label: item.sourceName,
|
||||||
value: item.hostId || str,
|
value: item.hostId || str,
|
||||||
|
|
|
@ -98,7 +98,7 @@
|
||||||
<div class="email-top-content-li-right">
|
<div class="email-top-content-li-right">
|
||||||
<div class="email-top-content-li-right-title">Used Capacity</div>
|
<div class="email-top-content-li-right-title">Used Capacity</div>
|
||||||
<div class="email-top-content-li-right-val" style="color: #ade6ee; font-size: 26px; margin-top: 36px">
|
<div class="email-top-content-li-right-val" style="color: #ade6ee; font-size: 26px; margin-top: 36px">
|
||||||
{{ emailTotal.usage || 0 }}/<span style="font-size: 40px; vertical-align: middle">∞</span>
|
{{ emailSpace.usage || 0 }}/<span style="font-size: 40px; vertical-align: middle">∞</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="email-top-content-li-rect" style="background: #8351d4"></div>
|
<div class="email-top-content-li-rect" style="background: #8351d4"></div>
|
||||||
|
@ -239,7 +239,19 @@ export default {
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getEmailList()
|
this.getEmailList()
|
||||||
},
|
},
|
||||||
|
// activated() {
|
||||||
|
// this.getEmailList()
|
||||||
|
// },
|
||||||
watch: {
|
watch: {
|
||||||
|
$route: {
|
||||||
|
handler: function (val, oldVal) {
|
||||||
|
if (val.query && val.query.emailId) {
|
||||||
|
this.getEmailList()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true,
|
||||||
|
},
|
||||||
emailId(newValue, oldValue) {
|
emailId(newValue, oldValue) {
|
||||||
this.currId = newValue
|
this.currId = newValue
|
||||||
this.getEmailStatus()
|
this.getEmailStatus()
|
||||||
|
|
|
@ -237,6 +237,17 @@ export default {
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getServerList()
|
this.getServerList()
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
$route: {
|
||||||
|
handler: function (val, oldVal) {
|
||||||
|
if (val.query && val.query.serverId) {
|
||||||
|
this.getServerList()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleRefresh() {
|
handleRefresh() {
|
||||||
if (!this.userDefined) {
|
if (!this.userDefined) {
|
||||||
|
|
|
@ -280,6 +280,7 @@
|
||||||
<BoxTitle title="Alarm information"></BoxTitle>
|
<BoxTitle title="Alarm information"></BoxTitle>
|
||||||
<div
|
<div
|
||||||
class="alarm-info-list"
|
class="alarm-info-list"
|
||||||
|
style="margin-bottom: 15px"
|
||||||
v-infinite-scroll="handleInfiniteAlarmInfo"
|
v-infinite-scroll="handleInfiniteAlarmInfo"
|
||||||
:infinite-scroll-disabled="busy_alarm_info"
|
:infinite-scroll-disabled="busy_alarm_info"
|
||||||
:infinite-scroll-distance="10"
|
:infinite-scroll-distance="10"
|
||||||
|
@ -451,48 +452,58 @@ export default {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
watch: {
|
||||||
this.getSysServer((res) => {
|
$route: {
|
||||||
this.loading = false
|
handler: function (val, oldVal) {
|
||||||
if (res.success) {
|
if (val.query && val.query.serverId) {
|
||||||
this.ipagination.total = res.result.total
|
this.getData()
|
||||||
this.dataSource = res.result.records
|
|
||||||
if (this.$route.query.serverId) {
|
|
||||||
this.serverId = this.$route.query.serverId
|
|
||||||
this.currIndex = this.dataSource.findIndex((item) => item.sourceId === this.serverId)
|
|
||||||
this.currHostId = this.dataSource.find((item) => item.sourceId === this.serverId).hostId
|
|
||||||
this.currSourceId = this.dataSource.find((item) => item.sourceId === this.serverId).sourceId
|
|
||||||
this.currItemId = this.dataSource.find((item) => item.sourceId === this.serverId).cpuUsedItemId
|
|
||||||
} else {
|
|
||||||
this.currHostId = this.dataSource[0].hostId
|
|
||||||
this.currSourceId = this.dataSource[0].sourceId
|
|
||||||
this.currItemId = this.dataSource[0].cpuUsedItemId
|
|
||||||
this.currIndex = 0
|
|
||||||
}
|
}
|
||||||
this.getBasiclnfo(this.currHostId)
|
},
|
||||||
this.getCpuUtilizationData()
|
deep: true,
|
||||||
this.getTimeLineData()
|
immediate: true,
|
||||||
// this.EchartsTimeline()
|
},
|
||||||
this.getDetailsAlarmInfo((res) => {
|
|
||||||
this.loading_alarm_info = false
|
|
||||||
if (res.success) {
|
|
||||||
this.ipagination_alarm_info.total = res.result.total
|
|
||||||
this.dataSource_alarm_info = res.result.records
|
|
||||||
} else {
|
|
||||||
this.$message.warning('This operation fails. Contact your system administrator')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
this.$message.warning('This operation fails. Contact your system administrator')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
// this.$nextTick(() => {
|
|
||||||
// setTimeout(() => {
|
|
||||||
// this.drawGuageLoads()
|
|
||||||
// }, 0)
|
|
||||||
// })
|
|
||||||
},
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getData()
|
||||||
|
},
|
||||||
|
// activated() {},
|
||||||
methods: {
|
methods: {
|
||||||
|
getData() {
|
||||||
|
this.getSysServer((res) => {
|
||||||
|
this.loading = false
|
||||||
|
if (res.success) {
|
||||||
|
this.ipagination.total = res.result.total
|
||||||
|
this.dataSource = res.result.records
|
||||||
|
if (this.$route.query.serverId) {
|
||||||
|
this.serverId = this.$route.query.serverId
|
||||||
|
this.currIndex = this.dataSource.findIndex((item) => item.sourceId === this.serverId)
|
||||||
|
this.currHostId = this.dataSource.find((item) => item.sourceId === this.serverId).hostId
|
||||||
|
this.currSourceId = this.dataSource.find((item) => item.sourceId === this.serverId).sourceId
|
||||||
|
this.currItemId = this.dataSource.find((item) => item.sourceId === this.serverId).cpuUsedItemId
|
||||||
|
} else {
|
||||||
|
this.currHostId = this.dataSource[0].hostId
|
||||||
|
this.currSourceId = this.dataSource[0].sourceId
|
||||||
|
this.currItemId = this.dataSource[0].cpuUsedItemId
|
||||||
|
this.currIndex = 0
|
||||||
|
}
|
||||||
|
this.getBasiclnfo(this.currHostId)
|
||||||
|
this.getCpuUtilizationData()
|
||||||
|
this.getTimeLineData()
|
||||||
|
// this.EchartsTimeline()
|
||||||
|
this.getDetailsAlarmInfo((res) => {
|
||||||
|
this.loading_alarm_info = false
|
||||||
|
if (res.success) {
|
||||||
|
this.ipagination_alarm_info.total = res.result.total
|
||||||
|
this.dataSource_alarm_info = res.result.records
|
||||||
|
} else {
|
||||||
|
this.$message.warning('This operation fails. Contact your system administrator')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.$message.warning('This operation fails. Contact your system administrator')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
moment,
|
moment,
|
||||||
// Basic lnformation
|
// Basic lnformation
|
||||||
getBasiclnfo(sourceId) {
|
getBasiclnfo(sourceId) {
|
||||||
|
|
|
@ -166,6 +166,17 @@ export default {
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getServerList()
|
this.getServerList()
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
$route: {
|
||||||
|
handler: function (val, oldVal) {
|
||||||
|
if (val.query && val.query.serverId) {
|
||||||
|
this.getServerList()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleRefresh() {
|
handleRefresh() {
|
||||||
if (!this.userDefined) {
|
if (!this.userDefined) {
|
||||||
|
|
|
@ -74,35 +74,17 @@
|
||||||
<div class="service-content-center">
|
<div class="service-content-center">
|
||||||
<a-row :gutter="20">
|
<a-row :gutter="20">
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<BoxTitle title="Process CPU usage(%)">
|
<BoxTitle title="Process CPU usage(%)" />
|
||||||
<!-- <template slot="right">
|
|
||||||
<ul class="legend-list">
|
|
||||||
<li v-for="(item, index) in processCpu.legend" :key="index">
|
|
||||||
<div :style="`background:${processCpu.color[index]}`" class="li-icon"></div>
|
|
||||||
{{ item }}
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</template> -->
|
|
||||||
</BoxTitle>
|
|
||||||
<div class="service-content-center-item" id="processCpu"></div>
|
<div class="service-content-center-item" id="processCpu"></div>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<BoxTitle title="Process memory usage(%)">
|
<BoxTitle title="Process memory usage(%)" />
|
||||||
<!-- <template slot="right">
|
|
||||||
<ul class="legend-list">
|
|
||||||
<li v-for="(item, index) in processMenbry.legend" :key="index">
|
|
||||||
<div :style="`background:${processMenbry.color[index]}`" class="li-icon"></div>
|
|
||||||
{{ item }}
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</template> -->
|
|
||||||
</BoxTitle>
|
|
||||||
<div class="service-content-center-item" id="menbry"></div>
|
<div class="service-content-center-item" id="menbry"></div>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
</div>
|
</div>
|
||||||
<div class="service-content-table">
|
<div class="service-content-table">
|
||||||
<BoxTitle title="Service"></BoxTitle>
|
<BoxTitle title="Service" />
|
||||||
<div style="padding-top: 10px">
|
<div style="padding-top: 10px">
|
||||||
<TableList
|
<TableList
|
||||||
size="middle"
|
size="middle"
|
||||||
|
@ -112,6 +94,7 @@
|
||||||
:loading="loading"
|
:loading="loading"
|
||||||
:pagination="false"
|
:pagination="false"
|
||||||
:canSelect="false"
|
:canSelect="false"
|
||||||
|
:scroll="{ y: 186 }"
|
||||||
>
|
>
|
||||||
</TableList>
|
</TableList>
|
||||||
<!-- <a-pagination
|
<!-- <a-pagination
|
||||||
|
@ -303,6 +286,17 @@ export default {
|
||||||
setTimeout(() => {}, 0)
|
setTimeout(() => {}, 0)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
$route: {
|
||||||
|
handler: function (val, oldVal) {
|
||||||
|
if (val.query && val.query.serverId) {
|
||||||
|
this.getServerList()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true,
|
||||||
|
immediate: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleRefresh() {
|
handleRefresh() {
|
||||||
if (!this.userDefined) {
|
if (!this.userDefined) {
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
</template>
|
</template>
|
||||||
<!-- 标题结束 -->
|
<!-- 标题结束 -->
|
||||||
<!-- 内容 -->
|
<!-- 内容 -->
|
||||||
<a-spin :spinning="isGettingTreeData" style="margin-top: 80px; width: 100%; text-align: center;"> </a-spin>
|
<a-spin :spinning="isGettingTreeData" style="margin-top: 80px; width: 100%; text-align: center"> </a-spin>
|
||||||
<tree-with-line
|
<tree-with-line
|
||||||
v-if="treeData.length"
|
v-if="treeData.length"
|
||||||
:treeData="treeData"
|
:treeData="treeData"
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
<!-- 日志列表结束 -->
|
<!-- 日志列表结束 -->
|
||||||
<custom-modal title="Log" :width="950" v-model="visible" :footer="null">
|
<custom-modal title="Log" :width="950" v-model="visible" :footer="null">
|
||||||
<a-spin class="log-detail" :spinning="isGettingDetail">
|
<a-spin class="log-detail" :spinning="isGettingDetail">
|
||||||
<div v-for="(logItem, index) in logInfo" :key="index">
|
<div style="font-family: 宋体" v-for="(logItem, index) in logInfo" :key="index">
|
||||||
{{ logItem }}
|
{{ logItem }}
|
||||||
</div>
|
</div>
|
||||||
</a-spin>
|
</a-spin>
|
||||||
|
@ -74,42 +74,42 @@ const columns = [
|
||||||
title: 'NAME',
|
title: 'NAME',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 320,
|
width: 320,
|
||||||
dataIndex: 'fileName'
|
dataIndex: 'fileName',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'DATE',
|
title: 'DATE',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 200,
|
width: 200,
|
||||||
dataIndex: 'fileDate'
|
dataIndex: 'fileDate',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'SIZE',
|
title: 'SIZE',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 220,
|
width: 220,
|
||||||
dataIndex: 'fileSize'
|
dataIndex: 'fileSize',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'OPERATE',
|
title: 'OPERATE',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 200,
|
width: 200,
|
||||||
scopedSlots: {
|
scopedSlots: {
|
||||||
customRender: 'operate'
|
customRender: 'operate',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'LogManage',
|
name: 'LogManage',
|
||||||
mixins: [JeecgListMixin],
|
mixins: [JeecgListMixin],
|
||||||
components: {
|
components: {
|
||||||
TreeWithLine
|
TreeWithLine,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
this.columns = columns
|
this.columns = columns
|
||||||
return {
|
return {
|
||||||
disableMixinCreated: true,
|
disableMixinCreated: true,
|
||||||
url: {
|
url: {
|
||||||
list: '/logManage/findFiles'
|
list: '/logManage/findFiles',
|
||||||
},
|
},
|
||||||
isGettingTreeData: false, // 正在获取左侧树信息
|
isGettingTreeData: false, // 正在获取左侧树信息
|
||||||
treeData: [],
|
treeData: [],
|
||||||
|
@ -119,7 +119,7 @@ export default {
|
||||||
|
|
||||||
visible: false,
|
visible: false,
|
||||||
isGettingDetail: false,
|
isGettingDetail: false,
|
||||||
logInfo: []
|
logInfo: [],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
@ -148,11 +148,11 @@ export default {
|
||||||
*/
|
*/
|
||||||
buildTreeData(treeJson) {
|
buildTreeData(treeJson) {
|
||||||
const tree = []
|
const tree = []
|
||||||
treeJson.forEach(item => {
|
treeJson.forEach((item) => {
|
||||||
const treeNode = {
|
const treeNode = {
|
||||||
title: item.name,
|
title: item.name,
|
||||||
key: item.path,
|
key: item.path,
|
||||||
children: []
|
children: [],
|
||||||
}
|
}
|
||||||
if (item.children && item.children.length) {
|
if (item.children && item.children.length) {
|
||||||
treeNode.children.push(...this.buildTreeData(item.children))
|
treeNode.children.push(...this.buildTreeData(item.children))
|
||||||
|
@ -180,7 +180,7 @@ export default {
|
||||||
var params = this.getQueryParams() //查询条件
|
var params = this.getQueryParams() //查询条件
|
||||||
this.loading = true
|
this.loading = true
|
||||||
getAction(this.url.list, params)
|
getAction(this.url.list, params)
|
||||||
.then(res => {
|
.then((res) => {
|
||||||
this.dataSource = res
|
this.dataSource = res
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
|
@ -216,8 +216,8 @@ export default {
|
||||||
formData.append('fileName', fileName)
|
formData.append('fileName', fileName)
|
||||||
formData.append('localPath', filePath)
|
formData.append('localPath', filePath)
|
||||||
downloadFile('/logManage/downloadFile', fileName, formData, 'post')
|
downloadFile('/logManage/downloadFile', fileName, formData, 'post')
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
|
|
|
@ -28,6 +28,10 @@
|
||||||
{{ index + 1 }}
|
{{ index + 1 }}
|
||||||
</template>
|
</template>
|
||||||
</custom-table>
|
</custom-table>
|
||||||
|
<!-- 日志列表结束 -->
|
||||||
|
<custom-modal title="List Of File Deletion Failures" :width="950" v-model="visibleInfo" :footer="null">
|
||||||
|
<a-table :columns="columnsModal" :data-source="dataInfo" :pagination="false"> </a-table>
|
||||||
|
</custom-modal>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -163,11 +167,24 @@ const columns = [
|
||||||
dataIndex: 'status',
|
dataIndex: 'status',
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
const columnsModal = [
|
||||||
|
{
|
||||||
|
title: 'Index',
|
||||||
|
dataIndex: 'rowCount',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Information',
|
||||||
|
dataIndex: 'info',
|
||||||
|
align: 'left',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
mixins: [JeecgListMixin],
|
mixins: [JeecgListMixin],
|
||||||
data() {
|
data() {
|
||||||
this.columns = columns
|
this.columns = columns
|
||||||
|
this.columnsModal = columnsModal
|
||||||
return {
|
return {
|
||||||
queryParam: {
|
queryParam: {
|
||||||
collectStart: this.getBeforeDate(6),
|
collectStart: this.getBeforeDate(6),
|
||||||
|
@ -183,6 +200,8 @@ export default {
|
||||||
},
|
},
|
||||||
stationList: [],
|
stationList: [],
|
||||||
detectorList: [],
|
detectorList: [],
|
||||||
|
visibleInfo: false,
|
||||||
|
dataInfo: [],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
@ -264,7 +283,7 @@ export default {
|
||||||
cancelText: 'Cancel',
|
cancelText: 'Cancel',
|
||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
try {
|
try {
|
||||||
const { success, message } = await deleteAction('/gardsSampleData/deleteById', {
|
const { success, message, result } = await deleteAction('/gardsSampleData/deleteById', {
|
||||||
sampleId: this.selectedRowKeys[0],
|
sampleId: this.selectedRowKeys[0],
|
||||||
...this.delParams,
|
...this.delParams,
|
||||||
})
|
})
|
||||||
|
@ -273,6 +292,13 @@ export default {
|
||||||
that.loadData()
|
that.loadData()
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(message)
|
this.$message.error(message)
|
||||||
|
this.visibleInfo = true
|
||||||
|
this.dataInfo = result.map((item, index) => {
|
||||||
|
return {
|
||||||
|
rowCount: `${index + 1}`,
|
||||||
|
info: item,
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error)
|
console.error(error)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user