瀏覽代碼

菜单改造

liujiejie 2 月之前
父節點
當前提交
8590fcae9f
共有 9 個文件被更改,包括 270 次插入198 次删除
  1. 9 0
      src/App.vue
  2. 二進制
      src/assets/headerBorder.png
  3. 二進制
      src/assets/headerText.png
  4. 二進制
      src/assets/headr.png
  5. 0 1
      src/components/HeaderCom.vue
  6. 2 2
      src/components/map/index.vue
  7. 50 9
      src/views/home/Index.vue
  8. 207 184
      src/views/home/components/MenuHD.vue
  9. 2 2
      vue.config.js

+ 9 - 0
src/App.vue

@@ -20,6 +20,15 @@ export default {
 };
 </script>
 <style lang="scss">
+// ::v-deep body .el-menu--horizontal .el-menu .el-menu-item {
+//   color: #000 !important;
+//   background-color: #fff !important;
+// }
+// ::v-deep body .el-menu--horizontal .el-menu .el-submenu__title {
+//   color: #000 !important;
+//   background-color: #fff !important;
+// }
+
 body {
   width: 100%;
   height: 100%;

二進制
src/assets/headerBorder.png


二進制
src/assets/headerText.png


二進制
src/assets/headr.png


+ 0 - 1
src/components/HeaderCom.vue

@@ -194,7 +194,6 @@ export default {
   justify-content: space-between;
   align-items: center;
   height: 60px;
-  background: #fff;
   padding: 0 20px;
 
   .header-logo {

+ 2 - 2
src/components/map/index.vue

@@ -223,9 +223,9 @@ export default {
       layers: [
         new TileLayer({
           source: new XYZ({
-            url: "http://106.120.102.238:18000/tiles/{z}/{x}/{y}.png", //外网
+            // url: "http://106.120.102.238:18000/tiles/{z}/{x}/{y}.png", //外网
             // url: "http://127.0.0.1:8010/tiles/{z}/{x}/{y}.png", //本地
-            // url: "http://192.168.50.235/tiles/{z}/{x}/{y}.png", //内网
+            url: "http://192.168.50.235/tiles/{z}/{x}/{y}.png", //内网
             // url: "http://10.96.137.5:9080/tiles/{z}/{x}/{y}.png", //大~#@唐
           }),
         }),

+ 50 - 9
src/views/home/Index.vue

@@ -1,16 +1,30 @@
 <template>
   <div class="homeWrap" v-loading="loading">
-    <el-container>
+    <el-container v-if="isShowHd">
+      <el-main>
+        <el-header>
+          <div class="headerHDBox">
+            <HeaderCom class="headerRight" @setLoding="setLoding"></HeaderCom>
+            <Menu class="menuBox"></Menu>
+            <HeaderCom class="headerRight" @setLoding="setLoding"></HeaderCom>
+          </div>
+        </el-header>
+
+        <!-- <MenuTag></MenuTag> -->
+        <!-- 主体内容-->
+        <transition name="slide-fade">
+          <div class="main-content">
+            <router-view />
+          </div>
+        </transition>
+      </el-main>
+    </el-container>
+    <el-container v-else="!isShowHd">
       <Menu></Menu>
       <el-main>
-        <HeaderCom @setLoding="setLoding"></HeaderCom>
+        <HeaderCom class="headerBox" @setLoding="setLoding"></HeaderCom>
         <!-- <MenuTag></MenuTag> -->
         <!-- 主体内容-->
-        <!-- <el-scrollbar>
-          <ul>
-            <li v-for="(item, index) in history" :key="index">{{ item }}</li>
-          </ul>
-        </el-scrollbar> -->
         <transition name="slide-fade">
           <div class="main-content">
             <router-view />
@@ -23,7 +37,7 @@
 
 <script>
 import HeaderCom from "@/components/HeaderCom.vue";
-import Menu from "./components/Menu.vue";
+import Menu from "./components/MenuHD.vue";
 import MenuTag from "@/components/MenuTag.vue";
 
 export default {
@@ -36,6 +50,7 @@ export default {
     return {
       // history: ["11", "22", "33"],
       loading: false,
+      isShowHd: true,
     };
   },
   mounted() {},
@@ -66,7 +81,33 @@ export default {
     }
   }
 }
-
+::v-deep.el-header {
+  padding: 0 !important;
+  background: #1b3b7f;
+  color: #fff !important;
+  .headerHDBox {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    background: url("../../assets/headerBorder.png") center center;
+    background-size: contain;
+    background-repeat: repeat-x; /* 水平方向重复 */
+  }
+  .menuBox {
+    flex: 1;
+    overflow-x: scroll;
+    align-items: center;
+    justify-content: center;
+    display: flex;
+    // background: url("../../assets/headerBorder.png") no-repeat center center;
+    // background-size: 100% 100%; /* 强行拉伸,可能会导致图片变形 */
+  }
+  .headerRight {
+  }
+}
+.headerBox {
+  background: #fff;
+}
 .slide-fade-enter-active {
   transition: all 0.3s ease-out;
 }

+ 207 - 184
src/views/home/components/MenuHD.vue

@@ -1,70 +1,72 @@
 <template>
-  <el-aside :width="!isCollapse ? '250px' : '100px'" class="asideBox">
-    <div class="homeBox"></div>
-    <el-menu
-      collapse-transition
-      ref="menu"
-      class="mt-3 el-menu-vertical-demo"
-      @open="handleOpen"
-      @close="handleClose"
-      background-color="#eff1f3"
-      text-color="#000"
-      :active-text-color="activeTextColor"
-      :router="true"
-      :default-active="defaultActive"
-      :collapse="isCollapse"
-      :default-openeds="openMenus"
-    >
-      <template v-for="item in routerList">
-        <el-submenu
-          v-if="
-            item.children && item.children.length && item.meta?.hidden === false
-          "
-          :index="item.path"
-        >
-          <template slot="title">
-            <i v-if="isElPrefix(item.iconName)" class="el-icon-menu"></i>
-            <i v-else class="svnIcon">
-              <svg-icon :icon-class="item.iconName" />
-            </i>
-            <span>{{ item.name }}</span>
-          </template>
-          <el-menu-item
-            v-for="child in item.children"
-            v-if="child.meta?.hidden === false"
-            :key="child.id"
-            :index="`${child.path}?id=${child.id}`"
-            @click="handleChangeMenuUrl(child, `${child.path}?id=${child.id}`)"
-          >
-            <i v-if="isElPrefix(child.iconName)" class="el-icon-menu"></i>
-            <i v-else class="svnIcon">
-              <svg-icon :icon-class="child.iconName" />
-            </i>
-            <span>{{ child.name }}</span>
-          </el-menu-item>
-        </el-submenu>
-        <el-menu-item
-          v-else-if="item.meta?.hidden === false"
-          :key="item.id"
-          :index="`${item.path}?id=${item.id}`"
-          @click="handleChangeMenuUrl(item, `${item.path}?id=${item.id}`)"
-        >
-          <i v-if="isElPrefix(item.iconName)" class="el-icon-menu"></i>
-          <i v-else-if="item.iconName" class="svnIcon">
+  <!-- <el-aside :width="!isCollapse ? '250px' : '100px'" class="asideBox"> -->
+  <el-menu
+    collapse-transition
+    ref="menu"
+    mode="horizontal"
+    class="mt-3 el-menu-vertical-demo"
+    @open="handleOpen"
+    @close="handleClose"
+    :active-text-color="activeTextColor"
+    :router="true"
+    :default-active="defaultActive"
+    :default-openeds="openMenus"
+  >
+    <!-- background-color="#eff1f300" text-color="#fff" -->
+    <template v-for="(item, indexMenu) in routerList">
+      <!-- 判断是否是中间位置 -->
+      <el-menu-item v-if="indexMenu === Math.floor(routerList.length / 2) + 1">
+        <span class="headerText">风电机组健康度诊断平台</span>
+      </el-menu-item>
+      <el-submenu
+        v-if="
+          item.children && item.children.length && item.meta?.hidden === false
+        "
+        :index="item.path"
+      >
+        <template slot="title">
+          <!-- <i v-if="isElPrefix(item.iconName)" class="el-icon-menu"></i>
+          <i v-else class="svnIcon">
             <svg-icon :icon-class="item.iconName" />
-          </i>
-          <i class="svnIcon" v-else-if="item.path === '/home/laserRangeFinder'">
-            <svg-icon
-              style="width: 22px; height: 22px"
-              icon-class="laserRangeFinder"
-            />
-          </i>
+          </i> -->
           <span>{{ item.name }}</span>
+        </template>
+        <el-menu-item
+          v-for="child in item.children"
+          v-if="child.meta?.hidden === false"
+          :key="child.id"
+          :index="`${child.path}?id=${child.id}`"
+          @click="handleChangeMenuUrl(child, `${child.path}?id=${child.id}`)"
+        >
+          <!-- <i v-if="isElPrefix(child.iconName)" class="el-icon-menu"></i>
+          <i v-else class="svnIcon">
+            <svg-icon :icon-class="child.iconName" />
+          </i> -->
+          <span>{{ child.name }}</span>
         </el-menu-item>
-      </template>
-    </el-menu>
-
-    <div class="foldBox flexCenter">
+      </el-submenu>
+      <el-menu-item
+        v-else-if="item.meta?.hidden === false"
+        :key="item.id"
+        :index="`${item.path}?id=${item.id}`"
+        @click="handleChangeMenuUrl(item, `${item.path}?id=${item.id}`)"
+      >
+        <!-- <i v-if="isElPrefix(item.iconName)" class="el-icon-menu"></i>
+        <i v-else-if="item.iconName" class="svnIcon">
+          <svg-icon :icon-class="item.iconName" />
+        </i>
+        <i class="svnIcon" v-else-if="item.path === '/home/laserRangeFinder'">
+          <svg-icon
+            style="width: 22px; height: 22px"
+            icon-class="laserRangeFinder"
+          />
+        </i> -->
+        <span>{{ item.name }}</span>
+      </el-menu-item>
+    </template>
+  </el-menu>
+
+  <!-- <div class="foldBox flexCenter">
       <span
         v-show="isCollapse"
         class="el-icon-s-unfold icon"
@@ -76,7 +78,7 @@
         :value="isExpanded"
         @change="toggleAllMenus"
       >
-        <!-- :inactive-text="isExpanded ? '收起全部菜单' : '展开全部菜单'" -->
+        :inactive-text="isExpanded ? '收起全部菜单' : '展开全部菜单'"
       </el-switch>
       <span
         v-show="!isCollapse"
@@ -84,8 +86,8 @@
         @click.stop="isCollapse = true"
         >收起</span
       >
-    </div>
-  </el-aside>
+    </div> -->
+  <!-- </el-aside> -->
 </template>
 
 <script>
@@ -256,130 +258,151 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-.el-menu-vertical-demo:not(.el-menu--collapse) {
-  width: 200px;
-  min-height: 400px;
+.el-menu-vertical-demo {
+  // overflow-x: scroll;
+}
+::v-deep.el-menu {
+  background-color: #eff1f300 !important;
+}
+::v-deep.headerText {
+  pointer-events: none;
+  background-image: url("../../../assets/headerText.png") !important;
+  background-size: 100% 100%;
+  color: #fff;
+  font-size: 16px;
+  font-weight: 600;
+  text-align: center;
+  display: block;
+  width: 100%;
+  height: 85%;
+  padding: 0px 30px;
+  // width: 200px;
+}
+
+::v-deep.mt-3 {
+  margin-top: 0px !important;
+  padding-left: 20px;
 }
 .stop-animation,
 .active-animation {
   font-size: 0px;
 }
 
-.asideBox {
-  height: 100vh;
-  overflow-y: scroll;
-  position: relative;
-  padding-bottom: 40px;
-  padding-top: 16px;
-  box-sizing: border-box;
-  display: flex;
-  align-items: flex-start;
-  justify-content: flex-start;
-  flex-direction: column;
-  border-right: 1px solid #d8d8d8;
-  position: relative;
-
-  .homeBox {
-    width: 100%;
-    padding: 0 20px;
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-    justify-content: flex-start;
-    box-sizing: border-box;
-
-    .logoItem {
-      display: flex;
-      width: 100%;
-      cursor: pointer;
-      box-sizing: border-box;
-
-      span {
-        line-height: 50px;
-        margin: 0 auto;
-      }
-
-      .logoImg {
-        img {
-          height: 100%;
-          width: inherit;
-        }
-
-        width: 50px;
-        height: 50px;
-      }
-    }
-
-    .search {
-      display: flex;
-      width: 100%;
-      align-items: center;
-      justify-content: center;
-
-      .el-icon-search {
-        margin-top: 28px;
-      }
-
-      .el-input {
-        width: inherit;
-      }
-    }
-
-    .frame {
-      display: flex;
-      justify-content: space-between;
-      align-items: center;
-      color: #666;
-      width: 100%;
-      margin-top: 20px;
-      margin-bottom: 10px;
-      cursor: pointer;
-
-      .homeIndex {
-        display: flex;
-        justify-content: center;
-        align-items: center;
-        font-size: 18px;
-
-        .home_active {
-          margin-right: 2px;
-        }
-
-        p {
-          color: #666;
-          font-size: 18px;
-        }
-      }
-
-      &:hover {
-        p {
-          color: #19436d;
-        }
-
-        transition: width 0.5s ease, transform 0.5s ease;
-        transform-origin: left;
-      }
-
-      .left {
-        left: 50%;
-        transform: scaleX(0);
-      }
-
-      .right {
-        left: 0;
-        transform: scaleX(0);
-      }
-    }
-  }
-
-  .el-menu {
-    margin-bottom: 10px;
-    border: none;
-    overflow-y: auto;
-    width: 100% !important;
-    height: 100%;
-  }
-}
+// .asideBox {
+//   height: 100vh;
+//   overflow-y: scroll;
+//   position: relative;
+//   padding-bottom: 40px;
+//   padding-top: 16px;
+//   box-sizing: border-box;
+//   display: flex;
+//   align-items: flex-start;
+//   justify-content: flex-start;
+//   flex-direction: column;
+//   border-right: 1px solid #d8d8d8;
+//   position: relative;
+
+//   .homeBox {
+//     width: 100%;
+//     padding: 0 20px;
+//     display: flex;
+//     flex-direction: column;
+//     align-items: flex-start;
+//     justify-content: flex-start;
+//     box-sizing: border-box;
+
+//     .logoItem {
+//       display: flex;
+//       width: 100%;
+//       cursor: pointer;
+//       box-sizing: border-box;
+
+//       span {
+//         line-height: 50px;
+//         margin: 0 auto;
+//       }
+
+//       .logoImg {
+//         img {
+//           height: 100%;
+//           width: inherit;
+//         }
+
+//         width: 50px;
+//         height: 50px;
+//       }
+//     }
+
+//     .search {
+//       display: flex;
+//       width: 100%;
+//       align-items: center;
+//       justify-content: center;
+
+//       .el-icon-search {
+//         margin-top: 28px;
+//       }
+
+//       .el-input {
+//         width: inherit;
+//       }
+//     }
+
+//     .frame {
+//       display: flex;
+//       justify-content: space-between;
+//       align-items: center;
+//       color: #666;
+//       width: 100%;
+//       margin-top: 20px;
+//       margin-bottom: 10px;
+//       cursor: pointer;
+
+//       .homeIndex {
+//         display: flex;
+//         justify-content: center;
+//         align-items: center;
+//         font-size: 18px;
+
+//         .home_active {
+//           margin-right: 2px;
+//         }
+
+//         p {
+//           color: #666;
+//           font-size: 18px;
+//         }
+//       }
+
+//       &:hover {
+//         p {
+//           color: #19436d;
+//         }
+
+//         transition: width 0.5s ease, transform 0.5s ease;
+//         transform-origin: left;
+//       }
+
+//       .left {
+//         left: 50%;
+//         transform: scaleX(0);
+//       }
+
+//       .right {
+//         left: 0;
+//         transform: scaleX(0);
+//       }
+//     }
+//   }
+
+//   .el-menu {
+//     margin-bottom: 10px;
+//     border: none;
+//     overflow-y: auto;
+//     width: 100% !important;
+//     height: 100%;
+//   }
+// }
 
 .flexCenter {
   display: flex;

+ 2 - 2
vue.config.js

@@ -66,8 +66,8 @@ module.exports = {
         // target: "http://192.168.5.4:16200", // 石月
         // target: "http://192.168.50.235:16200", // 内网
         // target: "http://192.168.5.15:16200",
-        // target: "http://192.168.50.235:16500", //演示环境
-        target: "http://106.120.102.238:26500", //外网演示环境
+        target: "http://192.168.50.235:16500", //演示环境
+        // target: "http://106.120.102.238:26500", //外网演示环境
         // target: "http://106.120.102.238:16700", // 外网16700  生产16600
         // target: "http://10.96.137.5",
         changeOrigin: true,