You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

420 lines
17 KiB

<template>
<div id="monitorCenter" class="monitor-center-style">
<img :src="topImgUrl"/>
<div class="page-left-style" :style="{width:leftWidth + '%'}">
<!--<div class="page-left-style">-->
<div class="page-title-style" :class="{'party-page-title-style':isPartyCenter}">
<span class="text">{{title}}</span>
</div>
<div class="page-menu-style">
<template v-for="menu in menuAry">
<div v-if="menu.title !== ''"
:class="'menu-item-style' + (!menu.disable && menuPath === menu.path?' menu-select-style':'') + (menu.disable?' disable-menu-style':'')"
@click="menuClick(menu)" :key="menu.path"
>
<span class="menu-title-style">{{menu.title}}</span>
</div>
</template>
</div>
</div>
<div class="page-right-style" :style="{width:rightWidth + '%'}">
<!--<div class="page-right-style">-->
<div v-if="showWorkBenchButton" class="bench-top-btn-box-style">
<BenchBtnBox iconType="icon-lingdangxiaoxi" title="消息处理" :count="msgCount"
@btnClick="onBtnClick('noticeRemind')"/>
<BenchBtnBox iconType="icon-youjian" title="邮件查看" :count="mailCount" @btnClick="onBtnClick('mail')"/>
<BenchBtnBox iconType="icon-caidan" title="更多应用" btnType="popover" ref="systemListRef">
<system-list
:crmData="systemData"
@accessSubsystem="onAccessSubsystem"
@servicePlatform="servicePlatform"
/>
</BenchBtnBox>
<BenchBtnBox iconType="icon-huanfu" title="版面设置" @btnClick="onBtnClick('setting')"/>
</div>
<span class="text"><Time/></span>
<span class="text">
<!-- <div class="back-style" title="回到首页" @click="toMainPage"><a-icon type="home" theme="filled" /></div>-->
<PersonInfo :operateType="2"/>
</span>
</div>
<FusionModalPanel v-bind="modalProps" @callback="onModalCallback">
<component
v-if="modalProps.show === true && modalUrl !== ''"
:is="com"
v-bind="params"
ref="modalPanel"
></component>
</FusionModalPanel>
</div>
</template>
<script>
import Time from '../homePages/menuTop/time.vue';
import {Icon, Select} from 'ant-design-vue';
import {menuConfig} from '../../menuConfig';
import PersonInfo from '../homePages/menuTop/personInfo.vue';
import BenchBtnBox from './benchBtnBox.vue';
import GlobalParams from '../adminCenter/global_params';
const topImg01 = require('../../assets/images/secondPageTop01.png');
const topImg02 = require('../../assets/images/secondPageTop02.png');
const topImgPartyBuild = require('../../assets/images/topImgPartyBuild.png');
import FusionModalPanel from "../../../../components/common/fusionModal/FusionModalPanel";
import SystemList from "../adminCenter/SystemList";
export default{
data(){
return {
loading: true,
// menuAry: [{id: 1, value: "校园日常情况",path:"/monitorCenter/daily"}, {id: 2, value: "信息化应用情况",path:"/monitorCenter/information"}],
menuAry: [],
menuPath: "",
title: "",
rightWidth: 40,
screenWidth: document.body.clientWidth,
topImgUrl: "",
msgCount: 0,//消息徽标数
totalCount: 0,//总待办数量
mailCount: 0,//邮件徽标数
clickItem: "",
modalUrl: "",
params: null,
modalProps: {
modalTitle: "",
show: false,
CancelButton: true,
OKButton: true,
},
systemData: [],
layoutData: {},
showWorkBenchButton: true,//是否展示工作台顶部操作按钮
isPartyCenter: false,
}
},
computed: {
leftWidth: function () {
return 100 - this.rightWidth;
},
com: function () {
let url = this.modalUrl;
return () => import(`@/views/screenAdaptation/pages/adminCenter/${url}`);
},
},
watch: {
$route: {
handler(val, oldval){
this.emitRouteChange(val.path);
if (val.path === '/partyCenter/party') {
this.topImgUrl = topImgPartyBuild
this.isPartyCenter = true
} else {
this.isPartyCenter = false
}
},
// 深度观察监听
deep: true
}
},
beforeMount(){
//解决二级页面刷新后,顶部导航菜单消失问题
let menuOptions = this.$store.state.userStore.menuOptions;
if (menuOptions) {
this.title = menuOptions.title;
this.menuAry = menuOptions.menuAry;
this.menuPath = menuOptions.menuPath;
}
},
mounted(){
this.getHref()
this.emitRouteChange(this.$route.path);
this.$bus.on("topCountChange", this.changeCount);
this.$bus.on("totalCountChange", this.changeTotalCount);
this.$bus.on("systemDataChange", this.changeSystemData);
this.$bus.on("layOutSettingChange", this.changeLayOutSetting);
this.$bus.on("toDoBtnClick", this.toDoBtnClick);
},
methods: {
getHref(){
let href = window.location.href
href = window.location.href.slice(window.location.href.indexOf('#') + 1)
if (href === '/partyCenter/party') {
this.topImgUrl = topImgPartyBuild
this.isPartyCenter = true
} else {
this.isPartyCenter = false
}
},
filterMenuAry: function (path) {
const menuAry = menuConfig.filter(item => {
return item.path === path;
});
let childrenMenu = [];
if (menuAry && menuAry.length > 0) {
this.title = menuAry[0].title;
childrenMenu = menuAry[0].children && menuAry[0].children.length > 0 ? menuAry[0].children : [];
}
return childrenMenu;
},
//顶部子路由地址跳转
emitRouteChange: function (routePath) {
//let routePath = this.$route.path;
if (routePath && routePath !== "") {
let routePathAry = routePath.split("/");
if (routePathAry.length > 0) {
//过滤掉空元素
routePathAry = routePathAry.filter(path => {
return path !== ""
})
}
if (routePathAry.length > 1) {
//子路由
this.menuPath = routePath;
this.changeBackImg(this.menuPath);
this.$emit("modelChange", this.menuPath);
return;
}
//二级菜单路由重组
routePath = "/" + routePathAry[0];
}
this.menuAry = this.filterMenuAry(routePath);
this.menuPath = this.menuAry && this.menuAry.length > 0 ? this.menuAry[0].path : "";
this.$store.commit('userStore/setMenuOptions', {
title: this.title,
menuAry: this.menuAry,
menuPath: this.menuPath
});
this.changeBackImg(this.menuPath);
this.$emit("modelChange", this.menuPath);
},
menuClick: function (menu) {
if (!menu.disable) {
this.menuPath = menu.path;
this.changeBackImg(this.menuPath);
this.$emit("modelChange", this.menuPath);
}
},
changeBackImg: function (path) {
if (path.indexOf("workBench") > 0) {
//工作台
if (path === "/workBench/application") {
//更多应用
this.rightWidth = 30;
this.topImgUrl = topImg01;
this.showWorkBenchButton = false;
} else {
this.rightWidth = 40;
this.topImgUrl = topImg02;
this.showWorkBenchButton = true;
}
} else {
this.rightWidth = 30;
this.topImgUrl = topImg01;
this.showWorkBenchButton = false;
}
},
toMainPage: function () {
this.$router.replace({path: '/dynamic'});
},
//改变顶部按钮徽标数量
changeCount: function (config) {
this.msgCount = config[0].count;
this.mailCount = config[0].count;
},
//总待办数
changeTotalCount: function (totalCount) {
this.totalCount = totalCount;
},
//配置更多应用
changeSystemData: function (config) {
this.systemData = config;
},
//版面设置信息
changeLayOutSetting: function (config) {
this.layoutData = config;
},
//待办点击回调
toDoBtnClick: function (config) {
this.onBtnClick("noticeRemind", config)
},
//导航菜单点击回调
onBtnClick: function (type, extraParams = null) {
this.clickItem = type;
switch (type) {
case "noticeRemind":
this.params = {message: this.msgCount, todo: this.totalCount};
if (extraParams !== null) {
this.params.messageType = extraParams.messageType;
this.params.todoType = extraParams.todoType;
}
this.$set(this.modalProps, "modalTitle", "消息");
this.$set(this.modalProps, "modalWidth", "800px");
this.$set(this.modalProps, "modalClassName", "notice-style");
this.$set(this.modalProps, "OKButton", false);
this.$set(this.modalProps, "show", true);
this.modalUrl = "messageProcessing/MessageProcessingMain.vue";
break;
case "mail":
this.params = {mailCount: this.mailCount};
this.$set(this.modalProps, "modalTitle", "邮件");
this.$set(this.modalProps, "modalWidth", "794px");
this.$set(this.modalProps, "OKButton", false);
this.$set(this.modalProps, "show", true);
this.modalUrl = "mail/MailMain.vue";
break;
case "setting":
this.$set(this.modalProps, "modalTitle", "版面设置");
this.$set(this.modalProps, "modalWidth", "772px");
this.$set(this.modalProps, "modalClassName", "");
this.$set(this.modalProps, "OKButton", true);
this.$set(this.modalProps, "show", true);
this.params = {layout: this.layoutData};
this.modalUrl =
"ModuleAndLaySetting.vue";
break;
case "driver":
break;
}
},
onModalCallback: function (type) {
if (type === "ok") {
if (this.clickItem === "setting" && this.$refs.modalPanel) {
this.$refs.modalPanel.getModuleAndLayoutAndTheme();
}
this.$set(this.modalProps, "show", false);
} else {
this.clickItem = "";
this.$set(this.modalProps, "show", false);
}
},
onAccessSubsystem: function (systemData) {
this.$refs.systemListRef.clicked = false;
this.$bus.emit("accessSubsystem", systemData);
},
//跳转综合服务平台管理中心
servicePlatform: function (systemData) {
this.$refs.systemListRef.clicked = false;
//this.$router.replace({name:"servicePlatform",params:{id:systemData.id,name:systemData.title}});
this.$router.push({
path: '/workBench/servicePlatform/:id/:name',
name: 'servicePlatform',
params: {id: systemData.id, name: systemData.title}
});
}
},
beforeDestroy(){
this.$bus.off("topCountChange", this.changeCount)
this.$bus.off("totalCountChange", this.changeTotalCount)
this.$bus.off("systemDataChange", this.changeSystemData)
this.$bus.off("layOutSettingChange", this.changeLayOutSetting)
this.$bus.off("toDoBtnClick", this.toDoBtnClick)
},
components: {
AIcon: Icon,
ASelect: Select,
ASelectOption: Select.Option,
Time,
PersonInfo,
BenchBtnBox,
FusionModalPanel,
SystemList
}
}
</script>
<style scoped lang="scss">
@import "../../assets/scss/style";
.monitor-center-style {
width: 100%;
height: 130px;
img {
width: 100%;
height: 100%;
}
display: flex;
justify-content: space-between;
position: relative;
/*background-image: url('../../assets/images/secondPageTop01.png');*/
.page-left-style {
/*width: calc(100% - 480px);*/
display: flex;
position: absolute;
top: 0;
left: 0;
.page-title-style {
font-size: 18px;
width: 450px;
height: 126px;
line-height: 126px;
text-align: center;
color: white;
.text {
display: inline-block;
font-family: "Microsoft YaHei";
font-size: 32px;
}
}
.party-page-title-style {
font-weight: 550;
color: #FFF799 !important;
}
.page-menu-style {
font-size: 18px;
width: calc(100% - 450px);
height: 96px;
line-height: 96px;
text-align: center;
transform: skewX(-35deg);
margin-left: 10px;
display: flex;
justify-content: center;
align-items: center;
color: white;
.menu-item-style {
padding: 20px 20px;
height: 30px;
line-height: 30px;
display: flex;
justify-content: center;
align-items: center;
margin-left: 10px;
cursor: pointer;
.menu-title-style {
transform: skewX(35deg);
}
}
.menu-select-style {
background-color: #227cb5;
border: 1px solid $color-default-bright;
cursor: default;
}
.disable-menu-style {
cursor: auto;
}
}
}
.page-right-style {
position: absolute;
right: 0;
font-size: 18px;
/*width: 450px;*/
height: 66px;
line-height: 66px;
text-align: center;
display: flex;
justify-content: flex-end;
align-items: center;
padding-right: 10px;
.bench-top-btn-box-style {
display: flex;
height: 54px;
justify-content: center;
align-items: center;
}
.text {
margin-left: 5px;
}
}
}
</style>