header.vue 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  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. <li @click="fullscreen()">
  43. <i :class="isfullscreen == '全屏'? 'iconfont icon-quanping': 'iconfont icon-cancel-full-screen'"></i>
  44. {{ isfullscreen }}
  45. </li>
  46. <li>
  47. <el-dropdown size="medium">
  48. <div class="avatar-wrapper">
  49. <el-avatar shape="circle" style="width: 30rem;height:30rem;">
  50. <img src="@/assets/images/logo.ico" />
  51. </el-avatar>
  52. <span style="font-size: 16rem;">{{ userName }}</span>
  53. <el-icon>
  54. <ArrowDown />
  55. </el-icon>
  56. </div>
  57. <template #dropdown>
  58. <span slot="slot" class="text"></span>
  59. <el-dropdown-menu>
  60. <!-- <el-dropdown-item command="system">个人中心</el-dropdown-item> -->
  61. <el-dropdown-item command="system" @click="modifypassword">修改密码</el-dropdown-item>
  62. <el-dropdown-item command="logout" divided @click="logout">退出登录</el-dropdown-item>
  63. </el-dropdown-menu>
  64. </template>
  65. </el-dropdown>
  66. </li>
  67. </ul>
  68. </div>
  69. </div>
  70. </template>
  71. <script>
  72. let store = undefined
  73. export default {
  74. /* 数据 */
  75. data() {
  76. return {
  77. appName: '金田智慧产业应用事业部基础框架',
  78. userName: store.realName,
  79. activeIndex: "0",
  80. isfullscreen: '全屏', //控制是否全屏
  81. }
  82. },
  83. /* 方法 */
  84. methods: {
  85. //修改密码弹出框
  86. modifypassword() {
  87. this.$parent.modifyMoudle()
  88. },
  89. //全屏或退出全屏事件
  90. fullscreen() {
  91. screenfull.toggle();
  92. if (!screenfull.isEnabled) {
  93. this.$Message.error("该浏览器不支持全屏功能");
  94. }
  95. if (this.isfullscreen == '全屏') {
  96. this.isfullscreen = '退出全屏'
  97. } else {
  98. this.isfullscreen = '全屏'
  99. }
  100. },
  101. //退出登录事件
  102. logout() {
  103. this.$router.replace({
  104. path: '/login'
  105. });
  106. //去掉卷帘对比
  107. let sliderDiv = document.getElementById("image_slider");
  108. if (sliderDiv) {
  109. document.body.removeChild(sliderDiv);
  110. }
  111. //去掉分屏对比
  112. let mapView2 = document.getElementById("cesiumContainer2");
  113. if (mapView2) {
  114. mapView2.style.display = "none";
  115. mapView2.innerHTML = "";
  116. }
  117. },
  118. //全屏
  119. fullele() {
  120. return (
  121. document.fullscreenElement ||
  122. document.webkitFullscreenElement ||
  123. document.msFullscreenElement ||
  124. document.mozFullScreenElement ||
  125. null
  126. );
  127. },
  128. //判断是否全屏
  129. isFullScreen() {
  130. return !!(document.webkitIsFullScreen || this.fullele());
  131. },
  132. },
  133. mounted() {
  134. let that = this
  135. window.addEventListener('resize', function() {
  136. if (!that.isFullScreen()) {
  137. // 非全屏状态
  138. //业务逻辑
  139. that.isfullscreen = '全屏'
  140. }
  141. });
  142. }
  143. }
  144. </script>
  145. <style lang="scss" scoped>
  146. $fontColor: #fff;
  147. $fullsize: calc(100% - 0rem);
  148. $header-title-bg: url(@/assets/images/header/header-title-bg.png) 0rem no-repeat;
  149. $header-title: url(@/assets/images/header/header-1.webp) 0rem no-repeat;
  150. $header-bg: url(@/assets/images/header/header-bg.png) 0rem no-repeat;
  151. $header-bg-color: linear-gradient(100deg,
  152. rgb(16, 96, 210) 30%,
  153. rgb(16, 106, 250) 70%);
  154. ::v-deep .el-popper__arrow::before {
  155. background: rgba(5, 45, 115, 0.8) !important;
  156. }
  157. .text::before {
  158. position: absolute;
  159. width: 0rem;
  160. height: 0rem;
  161. left: calc(50% - 5rem);
  162. top: -5rem;
  163. content: "";
  164. transform: rotate(45deg);
  165. z-index: 10;
  166. box-sizing: border-box;
  167. border-bottom: 5rem solid transparent;
  168. border-right: 5rem solid transparent;
  169. border-top: 5rem solid rgba(5, 45, 115, 0.8);
  170. border-left: 5rem solid rgba(5, 45, 115, 0.8);
  171. // background: rgba(5, 45, 115, .8) !important;
  172. }
  173. .el-dropdown-menu {
  174. background-color: rgba(5, 45, 115, 0.8) !important;
  175. }
  176. ::v-deep .el-dropdown-menu__item {
  177. color: #fff !important;
  178. }
  179. ::v-deep .el-dropdown-menu__item--divided {
  180. border: 0 !important;
  181. }
  182. ::v-deep .el-dropdown-menu__item:hover {
  183. color: rgb(255, 255, 255) !important;
  184. background-color: rgba(255, 255, 255, 0.3) !important;
  185. }
  186. //routerlink下划线
  187. a {
  188. text-decoration: none;
  189. color: #000;
  190. }
  191. .header {
  192. display: flex;
  193. width: $fullsize;
  194. height: 70rem;
  195. background: $header-title, $header-title-bg, $header-bg, $header-bg-color;
  196. background-size: 470rem 70rem, 700rem 70rem, 100% 70rem, 100% 70rem;
  197. background-repeat: no-repeat;
  198. user-select: none;
  199. position: absolute;
  200. z-index: 999;
  201. &>div:nth-child(1) {
  202. width: 470rem;
  203. height: $fullsize;
  204. }
  205. &>div:nth-child(2) {
  206. width: calc(100% - 590rem);
  207. height: calc(100% - 0rem);
  208. padding-left: 100rem;
  209. & ul li {
  210. font-weight: bolder;
  211. font-size: 15rem;
  212. &:hover {
  213. color: rgb(110, 210, 255) !important;
  214. transform: scale(1.03);
  215. }
  216. & i {
  217. padding-right: 5rem;
  218. }
  219. }
  220. .el-menu {
  221. border: 0;
  222. height: 70rem;
  223. background-color: transparent;
  224. .el-menu-item {
  225. background-color: transparent;
  226. transition: all 0.5s;
  227. }
  228. }
  229. }
  230. &>div:nth-child(3) {
  231. position: absolute;
  232. height: 70rem;
  233. right: 0rem;
  234. & ul {
  235. margin: 0rem;
  236. color: rgb(255, 255, 255);
  237. display: block;
  238. overflow: hidden;
  239. white-space: nowrap; //处理块元素中的空白符和换行符的,这个属性保证图片不换行
  240. & li {
  241. list-style: none;
  242. display: inline-block; //使li对象显示为一行
  243. padding: 0rem 15rem;
  244. height: 70rem;
  245. line-height: 70rem;
  246. cursor: pointer;
  247. color: rgb(255, 255, 255);
  248. &:hover {
  249. color: rgb(110, 210, 255);
  250. transition: all 0.5s;
  251. }
  252. & i {
  253. padding-right: 10rem;
  254. }
  255. }
  256. }
  257. }
  258. }
  259. .el-avatar>img {
  260. width: 30rem;
  261. height: 30rem;
  262. }
  263. .avatar-wrapper {
  264. display: flex;
  265. align-items: center;
  266. white-space: nowrap;
  267. cursor: pointer;
  268. color:$fontColor;
  269. height: 70rem;
  270. line-height: 70rem;
  271. .el-avatar {
  272. --el-avatar-bg-color: #ffffff;
  273. margin: 0rem 10rem !important;
  274. }
  275. }
  276. </style>