|
@@ -3,34 +3,69 @@
|
|
|
<div class="head-logo">
|
|
|
<svg-icon icon-class="zhihui-logo" @click="topHome()" />
|
|
|
</div>
|
|
|
- <div v-for="item in headList" :key="item.path" class="nav-tag" :class="{'active-nav-tag':activeNavTag === item.name}" @click="changeNavTag(item)">
|
|
|
+ <div
|
|
|
+ v-for="item in headList"
|
|
|
+ :key="item.path"
|
|
|
+ class="nav-tag"
|
|
|
+ :class="{ 'active-nav-tag': activeNavTag === item.name }"
|
|
|
+ @click="changeNavTag(item)"
|
|
|
+ >
|
|
|
<div v-if="item.icon" class="icon">
|
|
|
- <div v-show="notice && item.name.search(/个人工作台/)>=0" class="if-notice" />
|
|
|
+ <div
|
|
|
+ v-show="notice && item.name.search(/个人工作台/) >= 0"
|
|
|
+ class="if-notice"
|
|
|
+ />
|
|
|
<svg-icon :icon-class="item.icon" />
|
|
|
</div>
|
|
|
<div class="name">{{ item.name }}</div>
|
|
|
</div>
|
|
|
- <div @mouseleave="target = true">
|
|
|
+<!-- <div @mouseleave="target = true">
|
|
|
<div :class="[target ? 'nav-div1' : 'nav-div2']">
|
|
|
- <el-tooltip v-if="!target" class="item" effect="dark" content="工具集合" placement="right">
|
|
|
- <div class="div-child" @click="goto('Interface')"><svg-icon icon-class="b_工具集合" /></div>
|
|
|
+ <el-tooltip
|
|
|
+ v-if="!target"
|
|
|
+ class="item"
|
|
|
+ effect="dark"
|
|
|
+ content="工具集合"
|
|
|
+ placement="right"
|
|
|
+ >
|
|
|
+ <div class="div-child" @click="goto('Interface')">
|
|
|
+ <svg-icon icon-class="b_工具集合" />
|
|
|
+ </div>
|
|
|
</el-tooltip>
|
|
|
- <el-tooltip v-if="!target" class="item" effect="dark" content="环境平台" placement="right">
|
|
|
- <div class="div-child" @click="goto('env')"><svg-icon icon-class="b_环境平台" /></div>
|
|
|
+ <el-tooltip
|
|
|
+ v-if="!target"
|
|
|
+ class="item"
|
|
|
+ effect="dark"
|
|
|
+ content="环境平台"
|
|
|
+ placement="right"
|
|
|
+ >
|
|
|
+ <div class="div-child" @click="goto('env')">
|
|
|
+ <svg-icon icon-class="b_环境平台" />
|
|
|
+ </div>
|
|
|
</el-tooltip>
|
|
|
</div>
|
|
|
<div class="nav-div3 nav-circular" />
|
|
|
<div class="nav-div4 nav-circular" @mouseenter="target = false" />
|
|
|
- </div>
|
|
|
+ </div>-->
|
|
|
<!-- <div v-show="navTagType === 2" class="nav-tag-type" @click="setNavTagType(1)">
|
|
|
<i class="el-icon-notebook-2" style="transform: rotate(90deg);" />
|
|
|
</div>
|
|
|
<div v-show="navTagType === 1" class="nav-tag-type" @click="setNavTagType(2)">
|
|
|
<i class="el-icon-notebook-2" />
|
|
|
</div> -->
|
|
|
- <el-tooltip class="item" effect="dark" content="用户指导手册" placement="right">
|
|
|
- <el-link class="user-tip" href="https://base3.xiaojukeji.com/docs/zhihui/" target="_blank">
|
|
|
- <svg-icon style="width: 24px; height: 24px;" icon-class="question" />
|
|
|
+ <HeaderMenu />
|
|
|
+ <el-tooltip
|
|
|
+ class="item"
|
|
|
+ effect="dark"
|
|
|
+ content="用户指导手册"
|
|
|
+ placement="right"
|
|
|
+ >
|
|
|
+ <el-link
|
|
|
+ class="user-tip"
|
|
|
+ href="https://base3.xiaojukeji.com/docs/zhihui/"
|
|
|
+ target="_blank"
|
|
|
+ >
|
|
|
+ <svg-icon style="width: 24px; height: 24px" icon-class="question" />
|
|
|
</el-link>
|
|
|
</el-tooltip>
|
|
|
<div v-if="userInfo" class="user-info">
|
|
@@ -47,11 +82,15 @@
|
|
|
:value="navTagType === 1"
|
|
|
:size="size"
|
|
|
class="mr10"
|
|
|
- @change="setNavTagType(navTagType === 2 ? 1: 2)"
|
|
|
+ @change="setNavTagType(navTagType === 2 ? 1 : 2)"
|
|
|
/>
|
|
|
<span class="label-text">左侧导航</span>
|
|
|
- <el-tooltip effect="dark" content="可设置为“左侧导航”或“顶部导航”" placement="top-start">
|
|
|
- <i class="el-icon-info" style="vertical-align: text-bottom;" />
|
|
|
+ <el-tooltip
|
|
|
+ effect="dark"
|
|
|
+ content="可设置为“左侧导航”或“顶部导航”"
|
|
|
+ placement="top-start"
|
|
|
+ >
|
|
|
+ <i class="el-icon-info" style="vertical-align: text-bottom" />
|
|
|
</el-tooltip>
|
|
|
</div>
|
|
|
<div class="label line">
|
|
@@ -59,11 +98,19 @@
|
|
|
:value="openPageHandle === 'blank'"
|
|
|
:size="size"
|
|
|
class="mr10"
|
|
|
- @change="setOpenPageHandle(openPageHandle === 'blank' ? 'self' : 'blank')"
|
|
|
+ @change="
|
|
|
+ setOpenPageHandle(
|
|
|
+ openPageHandle === 'blank' ? 'self' : 'blank'
|
|
|
+ )
|
|
|
+ "
|
|
|
/>
|
|
|
<span class="label-text">详情页新标签页打开</span>
|
|
|
- <el-tooltip effect="dark" content="可设置详情页在“新标签页打开“,或”当前标签页“打开。" placement="top-start">
|
|
|
- <i class="el-icon-info" style="vertical-align: text-bottom;" />
|
|
|
+ <el-tooltip
|
|
|
+ effect="dark"
|
|
|
+ content="可设置详情页在“新标签页打开“,或”当前标签页“打开。"
|
|
|
+ placement="top-start"
|
|
|
+ >
|
|
|
+ <i class="el-icon-info" style="vertical-align: text-bottom" />
|
|
|
</el-tooltip>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -79,14 +126,17 @@
|
|
|
</div>
|
|
|
<div class="label">
|
|
|
<span class="outLogin" @click="layout()">
|
|
|
- <i class="el-icon-switch-button icon" style="margin-right:4px" />
|
|
|
+ <i
|
|
|
+ class="el-icon-switch-button icon"
|
|
|
+ style="margin-right: 4px"
|
|
|
+ />
|
|
|
<span class="label">退出</span>
|
|
|
</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
- <img :src="userInfo.phoneUrl">
|
|
|
+ <img :src="userInfo.phoneUrl" />
|
|
|
</a-popover>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -94,16 +144,18 @@
|
|
|
<script>
|
|
|
import { mapGetters } from 'vuex'
|
|
|
import routes from '@/router/newRouter'
|
|
|
+import HeaderMenu from './components/menu'
|
|
|
import websocket from '@/views/workbench/mixins/websocket'
|
|
|
import { memberGetLoginInMemberInfoByLdap } from '@/api/projectIndex'
|
|
|
import { logoutUrl, envUrl } from '@/apiConfig/requestIP.js'
|
|
|
import { verifyIsAdmin } from '@/api/configure.js'
|
|
|
+
|
|
|
export default {
|
|
|
mixins: [websocket],
|
|
|
data() {
|
|
|
return {
|
|
|
size: 'small',
|
|
|
- headList: routes.filter(item => item.name !== '业务线'),
|
|
|
+ headList: routes.filter((item) => item.name !== '业务线'),
|
|
|
userInfo: null,
|
|
|
memberCheck: false,
|
|
|
target: true,
|
|
@@ -144,13 +196,16 @@ export default {
|
|
|
// 先对父元素进行查找
|
|
|
this.$store.dispatch('global/setActiveNavTag', element.name)
|
|
|
} else if (element.children) {
|
|
|
- const child = element.children.find(item => item.name === routeName) // 对子元素进行查找
|
|
|
- child ? this.$store.dispatch('global/setActiveNavTag', element.name) : '' // 父元素的名字设为路径
|
|
|
+ const child = element.children.find((item) => item.name === routeName) // 对子元素进行查找
|
|
|
+ child
|
|
|
+ ? this.$store.dispatch('global/setActiveNavTag', element.name)
|
|
|
+ : '' // 父元素的名字设为路径
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
// 切换二级导航
|
|
|
changeNavTag(nav) {
|
|
|
+ window.log({ c: 'entry', d: nav.key })
|
|
|
this.$store.dispatch('global/setActiveNavTag', nav.name) // 设置二级导航的类别
|
|
|
this.$router.push({ name: nav.name }) // 跳转
|
|
|
},
|
|
@@ -203,6 +258,9 @@ export default {
|
|
|
link.href = link.href.replace(/favicon-tips.ico/, 'favicon.ico')
|
|
|
}
|
|
|
}
|
|
|
+ },
|
|
|
+ components: {
|
|
|
+ HeaderMenu
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
@@ -210,9 +268,11 @@ export default {
|
|
|
.mr10 {
|
|
|
margin-right: 10px;
|
|
|
}
|
|
|
+
|
|
|
.mb16 {
|
|
|
margin-bottom: 16px;
|
|
|
}
|
|
|
+
|
|
|
.head-wrapper {
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
@@ -225,16 +285,19 @@ export default {
|
|
|
color: #333;
|
|
|
padding-top: 17px;
|
|
|
}
|
|
|
+
|
|
|
.head-logo {
|
|
|
height: 40px;
|
|
|
width: 40px;
|
|
|
margin-bottom: 42px;
|
|
|
+
|
|
|
.svg-icon {
|
|
|
cursor: pointer;
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
.nav-tag {
|
|
|
width: 100%;
|
|
|
font-size: 14px;
|
|
@@ -243,6 +306,7 @@ export default {
|
|
|
margin-bottom: 20px;
|
|
|
padding: 5px 0 9px 0;
|
|
|
cursor: pointer;
|
|
|
+
|
|
|
.icon {
|
|
|
position: relative;
|
|
|
color: #ffffff;
|
|
@@ -251,6 +315,7 @@ export default {
|
|
|
margin: 7px auto;
|
|
|
font-size: 32px;
|
|
|
}
|
|
|
+
|
|
|
.svg-icon {
|
|
|
position: absolute;
|
|
|
top: 0;
|
|
@@ -258,30 +323,35 @@ export default {
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
}
|
|
|
+
|
|
|
.if-notice {
|
|
|
position: absolute;
|
|
|
z-index: 1;
|
|
|
height: 8px;
|
|
|
width: 8px;
|
|
|
- background-color: #E02020;
|
|
|
+ background-color: #e02020;
|
|
|
border-radius: 50%;
|
|
|
top: 0;
|
|
|
right: 0;
|
|
|
transform: translateY(-50%);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
.active-nav-tag {
|
|
|
- background-color: #1E89F7;
|
|
|
+ background-color: #1e89f7;
|
|
|
}
|
|
|
+
|
|
|
.nav-tag-type {
|
|
|
margin-top: auto;
|
|
|
color: #ffffff;
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
+
|
|
|
.user-tip {
|
|
|
- margin-top: auto;
|
|
|
+ margin-top: 20px;
|
|
|
margin-bottom: 20px;
|
|
|
}
|
|
|
+
|
|
|
.user-info {
|
|
|
height: 30px;
|
|
|
width: 30px;
|
|
@@ -293,64 +363,79 @@ export default {
|
|
|
overflow: hidden;
|
|
|
// margin-top: auto;
|
|
|
margin-bottom: 30px;
|
|
|
+
|
|
|
img {
|
|
|
height: 30px;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
.user-admin-one {
|
|
|
// height: 190px;
|
|
|
.title {
|
|
|
cursor: no-drop;
|
|
|
+
|
|
|
.icon {
|
|
|
margin-right: 5px;
|
|
|
font-size: 12px;
|
|
|
- color: #409EFF;
|
|
|
+ color: #409eff;
|
|
|
}
|
|
|
+
|
|
|
.label {
|
|
|
color: #444;
|
|
|
font-size: 14px;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
.line {
|
|
|
margin-bottom: 10px;
|
|
|
min-height: 21px;
|
|
|
+
|
|
|
&.clickText {
|
|
|
cursor: pointer;
|
|
|
margin-bottom: 16px;
|
|
|
+
|
|
|
.label {
|
|
|
- color: #409EFF;
|
|
|
+ color: #409eff;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
.item {
|
|
|
margin-left: 18px;
|
|
|
cursor: pointer;
|
|
|
+
|
|
|
.label {
|
|
|
color: #444;
|
|
|
font-size: 12px;
|
|
|
+
|
|
|
.label-text {
|
|
|
display: inline-block;
|
|
|
vertical-align: bottom;
|
|
|
- margin-right: 4px
|
|
|
+ margin-right: 4px;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
.fontSize14 {
|
|
|
font-size: 14px;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
.outLogin {
|
|
|
display: inline-block;
|
|
|
margin-top: 5px;
|
|
|
+
|
|
|
.icon {
|
|
|
display: inline-block;
|
|
|
- color: #409EFF;
|
|
|
+ color: #409eff;
|
|
|
font-size: 14px;
|
|
|
}
|
|
|
+
|
|
|
.label {
|
|
|
- color: #409EFF;
|
|
|
+ color: #409eff;
|
|
|
font-size: 14px;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
// width: 95px;
|
|
|
// display: flex;
|
|
|
// flex-direction: column;
|
|
@@ -383,57 +468,102 @@ export default {
|
|
|
<style lang="scss" scoped>
|
|
|
.head-popover {
|
|
|
box-shadow: 10px 0px 11px #dedede;
|
|
|
+
|
|
|
/deep/ .ant-popover-inner-content {
|
|
|
padding: 0;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
.nav-div1 {
|
|
|
- width:25px;height:50px;border-radius: 0 50px 50px 0;line-height:50px;background: #6cb5ff; position: absolute; bottom: 172px; left: 0;border: 1px solid #6cb5ff;animation:myfirsts 0.5s;
|
|
|
+ width: 25px;
|
|
|
+ height: 50px;
|
|
|
+ border-radius: 0 50px 50px 0;
|
|
|
+ line-height: 50px;
|
|
|
+ background: #6cb5ff;
|
|
|
+ position: absolute;
|
|
|
+ bottom: 172px;
|
|
|
+ left: 0;
|
|
|
+ border: 1px solid #6cb5ff;
|
|
|
+ animation: myfirsts 0.5s;
|
|
|
}
|
|
|
+
|
|
|
.nav-div2 {
|
|
|
- bottom: 137px; width:60px; height:120px; line-height:120px;border-radius: 0 80px 80px 0;;background: #6cb5ff; position: absolute; left: 0;animation:myfirst 1s;
|
|
|
+ bottom: 137px;
|
|
|
+ width: 60px;
|
|
|
+ height: 120px;
|
|
|
+ line-height: 120px;
|
|
|
+ border-radius: 0 80px 80px 0;
|
|
|
+ background: #6cb5ff;
|
|
|
+ position: absolute;
|
|
|
+ left: 0;
|
|
|
+ animation: myfirst 1s;
|
|
|
}
|
|
|
-@keyframes myfirst
|
|
|
-{
|
|
|
- from {bottom: 172px; width:25px; height:50px; line-height:50px;}
|
|
|
- to {bottom: 137px; width:60px; height:120px; line-height:120px;}
|
|
|
+
|
|
|
+@keyframes myfirst {
|
|
|
+ from {
|
|
|
+ bottom: 172px;
|
|
|
+ width: 25px;
|
|
|
+ height: 50px;
|
|
|
+ line-height: 50px;
|
|
|
+ }
|
|
|
+ to {
|
|
|
+ bottom: 137px;
|
|
|
+ width: 60px;
|
|
|
+ height: 120px;
|
|
|
+ line-height: 120px;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-@keyframes myfirsts
|
|
|
-{
|
|
|
- from {bottom: 137px; width:60px; height:120px; line-height:120px;}
|
|
|
- to {bottom: 172px; width:25px; height:50px; line-height:50px;}
|
|
|
+@keyframes myfirsts {
|
|
|
+ from {
|
|
|
+ bottom: 137px;
|
|
|
+ width: 60px;
|
|
|
+ height: 120px;
|
|
|
+ line-height: 120px;
|
|
|
+ }
|
|
|
+ to {
|
|
|
+ bottom: 172px;
|
|
|
+ width: 25px;
|
|
|
+ height: 50px;
|
|
|
+ line-height: 50px;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.nav-div3 {
|
|
|
- width:25px;
|
|
|
- height:50px;
|
|
|
- line-height:50px;
|
|
|
- background: #FFF;
|
|
|
+ width: 25px;
|
|
|
+ height: 50px;
|
|
|
+ line-height: 50px;
|
|
|
+ background: #fff;
|
|
|
bottom: 172px;
|
|
|
- border: 1px solid #FFF;
|
|
|
+ border: 1px solid #fff;
|
|
|
opacity: 0.63;
|
|
|
}
|
|
|
+
|
|
|
.nav-div4 {
|
|
|
- width:20px;
|
|
|
- height:40px;
|
|
|
- line-height:45px;
|
|
|
- background: #FFF;
|
|
|
+ width: 20px;
|
|
|
+ height: 40px;
|
|
|
+ line-height: 45px;
|
|
|
+ background: #fff;
|
|
|
bottom: 177px;
|
|
|
- border: 1px solid #FFF;
|
|
|
+ border: 1px solid #fff;
|
|
|
}
|
|
|
+
|
|
|
.div-child {
|
|
|
text-align: right;
|
|
|
margin-right: 19px;
|
|
|
line-height: 61px;
|
|
|
cursor: pointer;
|
|
|
opacity: 1;
|
|
|
- animation:myfirs 3s;
|
|
|
+ animation: myfirs 3s;
|
|
|
}
|
|
|
-@keyframes myfirs
|
|
|
-{
|
|
|
- from {opacity: 0}
|
|
|
- to {opacity: 1}
|
|
|
+
|
|
|
+@keyframes myfirs {
|
|
|
+ from {
|
|
|
+ opacity: 0;
|
|
|
+ }
|
|
|
+ to {
|
|
|
+ opacity: 1;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.nav-circular {
|