NNowhZzU
2023-12-25 fcd7ece15a86fc0cb526ee801ff8262b0db22dee
north-glass-erp/northglass-erp/src/layout/MainErpView.vue
@@ -6,6 +6,7 @@
import {onMounted, reactive, ref, watch} from "vue"
import deepClone from "@/utils/deepClone"
import userInfo from '@/stores/userInfo'
import {Close, Grid, Histogram, MessageBox, SwitchButton} from "@element-plus/icons-vue";
const store=userInfo()
const router = useRouter()
@@ -61,6 +62,17 @@
})
let openFlag = $ref(null)
//原始菜单打开
const openMenu = (menuID) => {
    if(menuID===openFlag){
      openFlag = null
    }else {
      openFlag = menuID
    }
}
</script>
<template>
@@ -71,27 +83,34 @@
          <img src="../assets/northGlass.ico" alt="" style="max-width: 100%;max-height: 100%">
          <h3 style="margin: 1rem  ;font-weight: bold;width: 20vw;"> 欢迎{{ user }}使用北玻ERP系统!</h3>
          <span style="height: 70%;width: 78vw;margin-top: 1rem;" >
            <el-button class="sys-quit" @click="quit"  type="info" round>退出</el-button>
            <el-button  class="sys-quit" @click="quit"  type="info" round>
              <el-icon size="large"><SwitchButton  size=""/></el-icon>
            </el-button>
          </span>
        </div>
      </el-header>
      <el-container >
        <el-aside width="160px" style="margin-top: 1.5rem;height: 90% " >
          <el-menu
        <el-aside width="160px" style="height: 97%; " >
<!--          <el-menu
              style=" border-radius:0.5rem;border: 0.01rem solid #409EFF;margin-bottom: 0.5rem"
              @open="handleOpen"
              ref="menu"
              active-color="#ffd04b"
              background-color="#545c64"
              class="el-menu-vertical-demo"
              background-color="#409EFF"
              default-active="2"
              text-color="#fff">
            <el-sub-menu
                v-for="items in menuList"
                :index="items.id"
                :key="items.id">
              <template #title>
                <span>{{items.menuName}}</span>
                <el-icon v-if="items.id==1"><Grid/></el-icon>
                <el-icon v-if="items.id==2"><Histogram/></el-icon>
                <el-icon v-if="items.id==3"><MessageBox/></el-icon>
                <span style="font-weight: bold;">{{items.menuName}}</span>
              </template>
              <router-link
                  v-show="items.id==menuItem.menuID"
@@ -103,7 +122,25 @@
              </router-link>
            </el-sub-menu>
          </el-menu>
          </el-menu>-->
          <div class="menu"  >
              <div v-for="items in menuList">
                <div class='menu_title' @click="openMenu(items.id)"  >{{items.menuName}}<span class='indicator' >▼</span></div>
                <ul class='enter-x-left' v-show="openFlag==items.id">
                  <li v-for="menuItem in menuItemList"
                      v-show="items.id==menuItem.menuID"
                      style="margin-bottom: 2px"
                  >
                    <router-link
                        :to="{path:menuItem.url}">
                      {{ menuItem.itemName}}
                    </router-link>
                  </li>
                </ul>
              </div>
          </div>
        </el-aside>
        <el-main>
@@ -146,4 +183,176 @@
  float: right;
  height: 99%;
}
/*------------*/
.menu div div{
  width: 138px;
  height: 35px;
  line-height: 35px;
  background: #C6E2FF;
  color: #000000;
  font-size: 16px;
  padding-left: 15px;
  transition: all 0.3s ease;
  cursor: pointer;
  position: relative;
  font-weight: bold;
  overflow: hidden;
  border-bottom: 12px ;
  margin-bottom:4px;
  text-align: left;
  cursor: pointer;
  border-radius:8px;
  /*   outline: none; */
  background-color:#5CADFE;
  box-shadow: 0 8px 16px 0 rgba(0,0,0,0), 0 6px 5px 0 rgba(0,0,0,0.19);
}
.menu {
  width: 138px;
  height: 33px;
  line-height: 25px;
  color: #000000;
  font-size: 16px;
  padding-left: 15px;
  padding-right: 2px;
}
ul {
  height: auto;
  margin: 1px auto;
  text-align: center;
}
ul li {
  height: 28px;
  line-height: 30px;
  background: rgb(128, 128, 128);
  color: #000000;
  padding-left: 36px;
  cursor: pointer;
  overflow: hidden;
  text-align: left;
  border-radius:8px;
  /*   outline: none; */
  background: #5CADFE;
  box-shadow: 0 8px 16px 0 rgba(0,0,0,0), 0 6px 5px 0 rgba(0,0,0,0.19);
}
ul li:hover {
  background:#5CADFE ;
  color: #ffffff;
}
ul li a {
  text-decoration: none;
  color: #000000;
  font-size: 14px;
}
ul li a:hover {
  color: #ffffff;
}
.item_divider {
  width: 118px;
  height: 0px;
  /* background-color: white;
  opacity: 0.8; */
  margin-bottom:2px;
}
.item a{
  width: 138px;
  height: 35px;
  display: block;
  text-decoration: none;
  color: white;
  font-size: 14px;
  text-decoration: none;
}
.menu_title {
  width: 138px;
  height: 35px;
  line-height: 35px;
  background: #fafafa;
  color: rgb(128, 128, 128);
  font-size: 16px;
  padding-left: 15px;
  transition: all 0.3s ease;
  cursor: pointer;
  position: relative;
  font-weight: bold;
  overflow: hidden;
}
.menu_title:hover {
  /* background: #dedede; */
  color: #ffffff;
}
.indicator {
  display: block;
  width: 50px;
  height: 35px;
  font-weight: bold;
  position: absolute;
  right: 0px;
  top: 0px;
  transition: all 0.3s ease;
  text-align: center;
}
/* 动画效果 */
.enter-x-left {
  z-index: 9;
  opacity: 0;
  animation: enter-x-left 0.4s ease-in-out 0.3s;
  animation-fill-mode: forwards;
  transform: translateX(-50px);
  transition: all 0.3s ease;
}
.enter-x-left:nth-child(1){
  animation-delay: 0.1s;
}
.enter-x-left:nth-child(2){
  animation-delay: 0.2s;
}
.enter-x-left:nth-child(3) {
  animation-delay: 0.3s;
}
.enter-x-left:nth-child(4){
  animation-delay: 0.4s;
}
@keyframes enter-x-left {
  to {
    opacity: 1;
    transform: translateX(0);
  }
}
</style>