|
@@ -1,6 +1,6 @@
|
|
|
<template>
|
|
|
<el-container class="hc-layout-box">
|
|
|
- <el-aside :class="[isCollapse?'is-collapse':'', MenuBarKey]" :width="isCollapse?'90px':'250px'"
|
|
|
+ <el-aside :class="[isCollapse?'is-collapse':'']" :width="isCollapse?'90px':'250px'"
|
|
|
class="hc-aside-box">
|
|
|
<div class="hc-aside-logo-box" @click="logoClick">
|
|
|
<template v-if="appLogoIcon">
|
|
@@ -11,8 +11,7 @@
|
|
|
</div>
|
|
|
<div class="hc-aside-menu-box">
|
|
|
<el-scrollbar>
|
|
|
- <MenuBar :collapse="isCollapse" :cur="MenuBarKey" :datas="MenuBarData" :msgCount="msgCount"
|
|
|
- @change="MenuBarChange"/>
|
|
|
+ <MenuBar :collapse="isCollapse" :cur="MenuBarKey" :datas="MenuBarData" @change="MenuBarChange"/>
|
|
|
</el-scrollbar>
|
|
|
</div>
|
|
|
<div class="hc-aside-bar-box">
|
|
@@ -24,11 +23,9 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-aside>
|
|
|
- <el-container :class="MenuBarKey === 'home-index'?'home':''" class="hc-container-view">
|
|
|
+ <el-container class="hc-container-view">
|
|
|
<el-header class="hc-header-view">
|
|
|
- <div id="hc-header-page-name" class="hc-header-page-name">
|
|
|
- {{ RoutesTitle }}
|
|
|
- </div>
|
|
|
+ <div id="hc-header-page-name" class="hc-header-page-name">{{ RoutesTitle }}</div>
|
|
|
<div class="hc-header-top-menu-bar">
|
|
|
<TopMenuBar/>
|
|
|
</div>
|
|
@@ -50,8 +47,8 @@
|
|
|
<el-main id="hc-main-box" class="hc-main-box">
|
|
|
<router-view v-if="reloadRouter" v-slot="{ Component }">
|
|
|
<transition name="fade-transform">
|
|
|
- <keep-alive :max="10" exclude="home,home-index,home-config">
|
|
|
- <component :is="Component" :msgCount="msgCount"/>
|
|
|
+ <keep-alive :max="10" exclude="home">
|
|
|
+ <component :is="Component"/>
|
|
|
</keep-alive>
|
|
|
</transition>
|
|
|
</router-view>
|
|
@@ -95,7 +92,6 @@ const AppColor = ref(useAppState.getColor);
|
|
|
|
|
|
//顶部菜单数据和相关处理
|
|
|
const MenuBarKey = ref(BarMenuKey);
|
|
|
-const RoutesName = ref(BarMenuKey);
|
|
|
const RoutesTitle = ref(BarMenuTitle);
|
|
|
const MenuBarData = ref(useAppState.getMenus)
|
|
|
const isCollapse = ref(useAppState.getCollapse)
|
|
@@ -119,8 +115,6 @@ onMounted(() => {
|
|
|
const info = useAppState.getProjectContract || []
|
|
|
projectContractData(info);
|
|
|
useAppState.barMenuName = BarMenuTitle
|
|
|
- setIsCollapse(RoutesName.value)
|
|
|
- setInitSocket()
|
|
|
setLogoImageColor()
|
|
|
})
|
|
|
|
|
@@ -133,11 +127,9 @@ watch(() => [
|
|
|
useAppState.getCollapse,
|
|
|
], ([projectContractArr, userMenus, RouteName, RouteTitle, collapse]) => {
|
|
|
MenuBarData.value = userMenus
|
|
|
- RoutesName.value = RouteName ?? 'home-index'
|
|
|
MenuBarKey.value = RouteName ?? 'home-index'
|
|
|
RoutesTitle.value = RouteTitle ?? ''
|
|
|
isCollapse.value = collapse
|
|
|
- setIsCollapse(RoutesName.value)
|
|
|
projectContractData(projectContractArr || []);
|
|
|
useAppState.barMenuName = RouteTitle ?? ''
|
|
|
setAppName(appTitle.value)
|
|
@@ -162,14 +154,6 @@ const setLogoImageColor = () => {
|
|
|
setImageColorStyle('logo-icon', AppColor.value?.color)
|
|
|
}
|
|
|
|
|
|
-//设置折叠
|
|
|
-const setIsCollapse = (key) => {
|
|
|
- if (key === 'data-fill-wbs') {
|
|
|
- isCollapse.value = true
|
|
|
- useAppState.setCollapse(true)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
//是否折叠
|
|
|
const collapseChange = (bool) => {
|
|
|
isCollapse.value = bool
|
|
@@ -210,14 +194,10 @@ const projectContractData = (projectContractData) => {
|
|
|
useAppState.setContractInfo(letContractInfo)
|
|
|
useAppState.setProjectId(letProjectInfo?.id)
|
|
|
useAppState.setContractId(letContractInfo?.id)
|
|
|
- //发送消息
|
|
|
- socketSend(letProjectInfo?.id + ',' + letContractInfo?.id)
|
|
|
} else {
|
|
|
projectValue.value = String(contractId)
|
|
|
projectInfo.value = UserProjectInfo
|
|
|
contractInfo.value = UserContractInfo
|
|
|
- //发送消息
|
|
|
- socketSend(projectId + ',' + contractId)
|
|
|
}
|
|
|
} else {
|
|
|
projectContract.value = []
|
|
@@ -243,8 +223,6 @@ const projectContractChange = (val) => {
|
|
|
projectInfo.value = UserProjectInfo
|
|
|
contractInfo.value = UserContractInfo
|
|
|
window.$message?.info('切换了项目,数据更新中');
|
|
|
- //发送消息
|
|
|
- socketSend(val[0] + ',' + val[1])
|
|
|
//刷新路由
|
|
|
reloadRouter.value = false
|
|
|
nextTick(() => {
|
|
@@ -256,64 +234,14 @@ const projectContractChange = (val) => {
|
|
|
//菜单被点击
|
|
|
const MenuBarChange = (item) => {
|
|
|
MenuBarKey.value = item?.code;
|
|
|
- setIsCollapse(item?.code)
|
|
|
router.push({name: item?.code});
|
|
|
}
|
|
|
|
|
|
//首页
|
|
|
const logoClick = () => {
|
|
|
- router.push({name: 'home-index'});
|
|
|
-}
|
|
|
-
|
|
|
-//消息数量
|
|
|
-const msgCount = ref({
|
|
|
- allCount: 0,
|
|
|
- taskCount: 0,
|
|
|
- messageCount: 0,
|
|
|
- messageCount_1: 0,
|
|
|
- messageCount_2: 0,
|
|
|
- messageCount_3: 0,
|
|
|
- messageCount_4: 0,
|
|
|
- messageCount_5: 0,
|
|
|
-})
|
|
|
-
|
|
|
-//推送系统
|
|
|
-let socket;
|
|
|
-const setInitSocket = () => {
|
|
|
- const user_id = userInfo.value.user_id;
|
|
|
- socket = new WebSocket(website.socket + user_id);
|
|
|
- try {
|
|
|
- socket.onopen = function (evt) {
|
|
|
- console.log('websocket链接成功');
|
|
|
- };
|
|
|
- socket.onclose = function (evt) {
|
|
|
- console.log('websocket连接已断开')
|
|
|
- };
|
|
|
- socket.onmessage = function ({data}) {
|
|
|
- if (data) {
|
|
|
- msgCount.value = JSON.parse(data)
|
|
|
- }
|
|
|
- console.log(data, '消息信息')
|
|
|
- };
|
|
|
- socket.onerror = function ({data}) {
|
|
|
- console.log('发生错误:', data)
|
|
|
- };
|
|
|
- } catch {
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-//发送消息
|
|
|
-const socketSend = (msg) => {
|
|
|
- try {
|
|
|
- if (socket) {
|
|
|
- socket.send(msg);
|
|
|
- } else {
|
|
|
- setTimeout(() => {
|
|
|
- socket.send(msg);
|
|
|
- }, 1000)
|
|
|
- }
|
|
|
- } catch {
|
|
|
- }
|
|
|
+ router.push({
|
|
|
+ name: useAppState.homeUrl
|
|
|
+ });
|
|
|
}
|
|
|
</script>
|
|
|
|
|
@@ -347,39 +275,6 @@ const socketSend = (msg) => {
|
|
|
font-weight: bold;
|
|
|
}
|
|
|
}
|
|
|
- &.home {
|
|
|
- .hc-header-view .hc-header-content .hc-header-cascader-box {
|
|
|
- .el-cascader .el-input .el-input__wrapper {
|
|
|
- background-color: #00000000;
|
|
|
- border: 1px solid white;
|
|
|
- box-shadow: initial;
|
|
|
- .el-input__inner, .el-input__suffix {
|
|
|
- color: white;
|
|
|
- }
|
|
|
- }
|
|
|
- .el-cascader .el-input.is-focus .el-input__wrapper {
|
|
|
- box-shadow: initial;
|
|
|
- }
|
|
|
- }
|
|
|
- .hc-header-view .hc-header-top-menu-bar {
|
|
|
- padding-left: 0;
|
|
|
- .hc-top-menu-bar .bar-menu-content .bar-menu-btn {
|
|
|
- background: rgba(255, 255, 255, .2);
|
|
|
- border-color: rgba(255, 255, 255, .2);
|
|
|
- color: rgba(255, 255, 255, .7);
|
|
|
- backdrop-filter: blur(20px);
|
|
|
- -webkit-backdrop-filter: blur(20px);
|
|
|
- &:hover:not([class*='cur']) {
|
|
|
- background: var(--el-color-primary-light-9);
|
|
|
- color: #838791;
|
|
|
- }
|
|
|
- &:active:not([class*='cur']) {
|
|
|
- background: var(--el-color-primary-light-8);
|
|
|
- color: #838791;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
</style>
|