header.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. <script setup>
  2. /**
  3. * element-plus字体
  4. */
  5. import {
  6. ArrowDown
  7. }
  8. from '@element-plus/icons-vue';
  9. import {
  10. Store
  11. } from '@/store/index'
  12. store = Store()
  13. /*
  14. *全屏方法引入
  15. */
  16. import screenfull from "screenfull";
  17. </script>
  18. <template>
  19. <div class="header">
  20. <!-- logo标题 -->
  21. <div></div>
  22. <!-- 导航菜单 -->
  23. <div>
  24. <el-menu :default-active="activeIndex" mode="horizontal" ellipsis="false" background-color="rgb(16,96,210)" text-color="#fff" active-text-color="#fff">
  25. <el-menu-item index="0">
  26. <router-link to="/home/Map3d">三维地图</router-link>
  27. </el-menu-item>
  28. <el-menu-item index="1">
  29. <router-link to="/home/SysAdmin">系统管理</router-link>
  30. </el-menu-item>
  31. <!-- <el-menu-item index="2">
  32. <router-link to="/home/table">数据维护</router-link>
  33. </el-menu-item>
  34. <el-menu-item index="3">
  35. <router-link to="/home/test">嵌套页面</router-link>
  36. </el-menu-item> -->
  37. </el-menu>
  38. </div>
  39. <!-- 用户信息 -->
  40. <div>
  41. <ul>
  42. <el-tooltip class="box-item" effect="dark" content="全屏" placement="bottom" trigger="click">
  43. <li @click="fullscreen()">
  44. <i :class="
  45. isfullscreen == '全屏'
  46. ? 'iconfont icon-quanping'
  47. : 'iconfont icon-cancel-full-screen'
  48. "></i>{{ isfullscreen }}
  49. </li>
  50. </el-tooltip>
  51. <li>
  52. <el-dropdown size="medium">
  53. <div class="avatar-wrapper">
  54. <el-avatar shape="circle" style="width: 30rem;height:30rem;">
  55. <img src="@/assets/images/logo.ico" />
  56. </el-avatar>
  57. <span style="font-size: 16rem;">{{ userName }}</span>
  58. <el-icon>
  59. <ArrowDown />
  60. </el-icon>
  61. </div>
  62. <template #dropdown>
  63. <span slot="slot" class="text"></span>
  64. <el-dropdown-menu>
  65. <!-- <el-dropdown-item command="system">个人中心</el-dropdown-item> -->
  66. <el-dropdown-item command="system" @click="modifypassword">修改密码</el-dropdown-item>
  67. <el-dropdown-item command="logout" divided @click="logout">退出登录</el-dropdown-item>
  68. </el-dropdown-menu>
  69. </template>
  70. </el-dropdown>
  71. </li>
  72. </ul>
  73. </div>
  74. </div>
  75. </template>
  76. <script>
  77. let store = undefined
  78. export default {
  79. /* 数据 */
  80. data() {
  81. return {
  82. appName: '金田智慧产业应用事业部基础框架',
  83. userName: store.realName,
  84. activeIndex: "0",
  85. isfullscreen: '全屏', //控制是否全屏
  86. }
  87. },
  88. /* 方法 */
  89. methods: {
  90. //修改密码弹出框
  91. modifypassword() {
  92. this.$parent.modifyMoudle()
  93. },
  94. //全屏或退出全屏事件
  95. fullscreen() {
  96. screenfull.toggle();
  97. if (!screenfull.isEnabled) {
  98. this.$Message.error("该浏览器不支持全屏功能");
  99. }
  100. if (this.isfullscreen == '全屏') {
  101. this.isfullscreen = '退出全屏'
  102. } else {
  103. this.isfullscreen = '全屏'
  104. }
  105. },
  106. //退出登录事件
  107. logout() {
  108. this.$router.replace({
  109. path: '/login'
  110. });
  111. //去掉卷帘对比
  112. let sliderDiv = document.getElementById("image_slider");
  113. if (sliderDiv) {
  114. document.body.removeChild(sliderDiv);
  115. }
  116. //去掉分屏对比
  117. let mapView2 = document.getElementById("cesiumContainer2");
  118. if (mapView2) {
  119. mapView2.style.display = "none";
  120. mapView2.innerHTML = "";
  121. }
  122. },
  123. }
  124. }
  125. </script>
  126. <style lang="scss" scoped>
  127. $fontColor: #fff;
  128. $fullsize: calc(100% - 0rem);
  129. $header-title-bg: url(@/assets/images/header/header-title-bg.png) 0rem no-repeat;
  130. $header-title: url(@/assets/images/header/header-1.png) 0rem no-repeat;
  131. $header-bg: url(@/assets/images/header/header-bg.png) 0rem no-repeat;
  132. $header-bg-color: linear-gradient(100deg,
  133. rgb(16, 96, 210) 30%,
  134. rgb(16, 106, 250) 70%);
  135. ::v-deep .el-popper__arrow::before {
  136. background: rgba(5, 45, 115, 0.8) !important;
  137. }
  138. .text::before {
  139. position: absolute;
  140. width: 0rem;
  141. height: 0rem;
  142. left: calc(50% - 5rem);
  143. top: -5rem;
  144. content: "";
  145. transform: rotate(45deg);
  146. z-index: 10;
  147. box-sizing: border-box;
  148. border-bottom: 5rem solid transparent;
  149. border-right: 5rem solid transparent;
  150. border-top: 5rem solid rgba(5, 45, 115, 0.8);
  151. border-left: 5rem solid rgba(5, 45, 115, 0.8);
  152. // background: rgba(5, 45, 115, .8) !important;
  153. }
  154. .el-dropdown-menu {
  155. background-color: rgba(5, 45, 115, 0.8) !important;
  156. }
  157. ::v-deep .el-dropdown-menu__item {
  158. color: #fff !important;
  159. }
  160. ::v-deep .el-dropdown-menu__item--divided {
  161. border: 0 !important;
  162. }
  163. ::v-deep .el-dropdown-menu__item:hover {
  164. color: rgb(255, 255, 255) !important;
  165. background-color: rgba(255, 255, 255, 0.3) !important;
  166. }
  167. //routerlink下划线
  168. a {
  169. text-decoration: none;
  170. color: #000;
  171. }
  172. .header {
  173. display: flex;
  174. width: $fullsize;
  175. height: 70rem;
  176. background: $header-title, $header-title-bg, $header-bg, $header-bg-color;
  177. background-size: 470rem 70rem, 700rem 70rem, 100% 70rem, 100% 70rem;
  178. background-repeat: no-repeat;
  179. user-select: none;
  180. position: absolute;
  181. z-index: 999;
  182. &>div:nth-child(1) {
  183. width: 470rem;
  184. height: $fullsize;
  185. }
  186. &>div:nth-child(2) {
  187. width: calc(100% - 590rem);
  188. height: calc(100% - 0rem);
  189. padding-left: 100rem;
  190. & ul li {
  191. font-weight: bolder;
  192. font-size: 15rem;
  193. &:hover {
  194. color: rgb(110, 210, 255) !important;
  195. transform: scale(1.03);
  196. }
  197. & i {
  198. padding-right: 5rem;
  199. }
  200. }
  201. .el-menu {
  202. border: 0;
  203. height: 70rem;
  204. background-color: transparent;
  205. .el-menu-item {
  206. background-color: transparent;
  207. transition: all 0.5s;
  208. }
  209. }
  210. }
  211. &>div:nth-child(3) {
  212. position: absolute;
  213. height: 70rem;
  214. right: 0rem;
  215. & ul {
  216. margin: 0rem;
  217. color: rgb(255, 255, 255);
  218. display: block;
  219. overflow: hidden;
  220. white-space: nowrap; //处理块元素中的空白符和换行符的,这个属性保证图片不换行
  221. & li {
  222. list-style: none;
  223. display: inline-block; //使li对象显示为一行
  224. padding: 0rem 15rem;
  225. height: 70rem;
  226. line-height: 70rem;
  227. cursor: pointer;
  228. color: rgb(255, 255, 255);
  229. &:hover {
  230. color: rgb(110, 210, 255);
  231. transition: all 0.5s;
  232. }
  233. & i {
  234. padding-right: 10rem;
  235. }
  236. }
  237. }
  238. }
  239. }
  240. .el-avatar>img {
  241. width: 30rem;
  242. height: 30rem;
  243. }
  244. .avatar-wrapper {
  245. display: flex;
  246. align-items: center;
  247. white-space: nowrap;
  248. cursor: pointer;
  249. color: $textActiveColor;
  250. height: 70rem;
  251. line-height: 70rem;
  252. .el-avatar {
  253. --el-avatar-bg-color: #ffffff;
  254. margin: 0rem 10rem !important;
  255. }
  256. }
  257. </style>