管道基础大数据平台系统开发-【前端】-新系統界面
surprise
2024-02-05 c215c89ecda16e4d32593f3e942fe871898071e9
src/components/navMenu.vue
@@ -1,5 +1,8 @@
<template>
  <div class="NavBox">
  <div
    class="NavBox"
    @click.stop
  >
    <div class="topBox">
      <div class="topTitle"></div>
      <div class="topMenu">
@@ -9,7 +12,7 @@
            @click="setMenuMove(index, item)"
            v-for="(item, index) in listMenu"
          >
            <div>
            <div style="display: flex;align-items: center">
              <div class="ImgMenu">
                <div
                  class="menuImage"
@@ -24,7 +27,7 @@
              </div>
            </div>
            <div
              class="secondMenuDiv"
              class="secondMenuDiv   subpage_Div"
              v-show="index == showFlag ? true :false"
            >
              <div
@@ -39,6 +42,17 @@
        </div>
      </div>
      <div class="topUser">
        <div class="userLanguage">
          <div
            class="userImage theme"
            @click="themeChange"
          ></div>
          <div
            class="userImage user2"
            @click="switchLang"
          ></div>
        </div>
        <div class="userName">
          <div class="userImage user1"></div>
          <div class="userText">
@@ -49,21 +63,7 @@
              class="elLink"
            >{{ $t('common.logout') }}</el-link>
          </div>
        </div>
        <div
          @click="switchLang"
          class="userLanguage"
        >
          <div class="userImage user2"></div>
          <div class="TextLanguage">
            <el-link
              :underline="false"
              class="elLink"
            >{{$t("common.language")}}</el-link>
          </div>
        </div>
      </div>
    </div>
@@ -71,13 +71,14 @@
</template>
<script>
import { logout, selectMenuRecursive } from '@/api/api';
import { logout, selectMenuRecursive, sign_insertOpLog } from '@/api/api';
import { removeToken, getToken } from '@/utils/auth';
import customElMenu from '../components/customElMenu.vue';
import { queryMenuTree, getPerms } from '../api/api';
import colorChange from '../views/maintenance/colorChange.vue';
import { containsCoordinate } from 'ol/extent';
import Vue from 'vue';
import $ from 'jquery'
export default {
  name: 'navMenu',
  //import引入的组件需要注入到对象中才能使用
@@ -87,6 +88,7 @@
  },
  data() {
    return {
      themeColor: true,
      oriData: [], //原始树数据
      dirData: [], //el树数据
@@ -109,15 +111,70 @@
      changeSelectdiv: false,
      listMenu: [],
      showFlag: null,
      language: true
      language: true,
      nowPage: [
        {
          name: '/Archive',
          index: 3
        },
        {
          name: '/dataApplication',
          index: 3
        },
        {
          name: '/ExportMap',
          index: 3
        },
        {
          name: '/Synthesis',
          index: 3
        },
        {
          name: '/dataController',
          index: 4
        },
        {
          name: '/mochaitmo',
          index: 5
        }
      ]
    };
  },
  created() { },
  mounted() {
    this.$store.state.themeflag = false;
    $("#app").removeClass("Black_theme");
    this.getMenuTree();
    if (sessionStorage.getItem('changeliSelect')) {
      this.$set(this, 'changeliSelect', sessionStorage.getItem('changeliSelect'))
      // this.changeliSelect = sessionStorage.getItem('changeliSelect')
    }
    document.body.addEventListener('click', () => {
      this.showFlag = null;
    }, false);
    // this.$bus.$on('closeMenuSecond', res => {
    //   this.showFlag = null;
    // })
    window.addEventListener('message', (e) => {
      this.showFlag = null;
    })
  },
  computed: {},
  methods: {
    closeSecondMenu() {
      this.showFlag = null
    },
    themeChange() {
      this.$store.state.themeflag = !this.$store.state.themeflag;
      if (this.$store.state.themeflag == true) {
        $("#app").addClass("Black_theme");
      } else {
        $("#app").removeClass("Black_theme");
      }
    },
    async getCookies() {
      var boolean = this.getTimeCookies();
      if (boolean != true) {
@@ -128,12 +185,19 @@
        const data = await getPerms();
        this.$store.state.permsEntity = data.result;
      }
      this.$store.state.uname = JSON.parse(
        localStorage.getItem('LFToken')
      ).uname;
      this.$store.state.unid = JSON.parse(
        localStorage.getItem('LFToken')
      ).userid;
      this.$router.push('/');
    },
    getTimeCookies() {
      if (!localStorage.getItem('LFToken')) {
        return false
      }
      var time1 = new Date(JSON.parse(localStorage.getItem('LFToken')).time);
      var time2 = new Date();
      if (time2 > time1) {
@@ -142,29 +206,46 @@
        return true;
      }
    },
    //主题切换
    setThemeColors() { },
    async signInsertOpLog(m1, m2) {
      var obj = {
        m1: m1,
        m2: m2,
      }
      const data = await sign_insertOpLog(obj);
    },
    //鼠标移入菜单事件
    setMenuMove(index, item) {
      if (item.perms != null) {
      if (item.perms != null && item.perms != "") {
        this.$router.push(item.url);
        if (this.showFlag != null) {
          this.changeliSelect = '%%';
          this.showFlag = null;
        }
        if (item.url == "Thematic") {
          this.signInsertOpLog("综合展示", item.cnName)
        }
        this.changeSelectStyle = index;
        sessionStorage.setItem('changeSelectStyle', index)
      } else {
        if (this.showFlag != index) {
          this.showFlag = index;
        } else {
          this.showFlag = null;
        }
      }
      //
      if (index === 4 || index === 5 || index === 6) {
        sessionStorage.removeItem('changeliSelect')
        this.$set(this, 'changeliSelect', null)
      }
      this.changeSelectStyle = index;
    },
    closeAllChildren() {
      var val = this.listMenu
@@ -186,18 +267,29 @@
      }
    },
    setLiClick(res, index) {
      this.changeSelectStyle = index;
      sessionStorage.setItem('changeSelectStyle', index)
      sessionStorage.removeItem('hanleselectmochaitmo')
      sessionStorage.removeItem('hanleselectindex')
      // this.signInsertOpLog(this.listMenu[index].cnName, res.cnName)
      setTimeout(() => {
        this.changeliSelect = res.cnName;
        if (res.url.indexOf('http') != -1) {
          if (this.$store.reporturl == null) {
            this.$store.reporturl = res.url;
            this.$router.push('/WareInspection');
          } else {
            this.$bus.$emit('changeNaveUrl', res.url);
          }
        sessionStorage.setItem('changeliSelect', res.cnName)
        if (res.url.indexOf('{fmeHost}') != -1) {
          this.$store.reporturl = res.url;
          sessionStorage.setItem('iframehttpurl', this.$store.reporturl)
          this.$router.push('/QualityInspection');
          // if (location.href.indexOf('/WareInspection') == -1) {
          //   this.$store.reporturl = res.url;
          //   this.$router.push('/WareInspection');
          // } else {
          //   this.$bus.$emit('changeNaveUrl', res.url);
          // }
        } else {
          this.$store.reporturl = null;
          sessionStorage.setItem('iframehttpurl', null)
          // sessionStorage.setItem('changeliSelect', null)
          this.$router.push(res.url);
          this.$store.commit('currentPerms', res.perms);
        }
@@ -221,7 +313,10 @@
          that.setMenuTree(menuLists);
        } else {
          alert('暂无菜单栏数据');
          this.$message({
            message: '暂无菜单栏数据',
            type: 'warning'
          });
        }
      }
    },
@@ -230,17 +325,35 @@
      for (var i in res) {
        res[i].checkClass = res[i].css + '1';
        res[i].show = false; //控制显隐
        if (res[i].perms == null) {
        if (res[i].perms == null || res[i].perms == "") {
          const result = await selectMenuRecursive({ id: res[i].id });
          if (result.code == 200) {
            res[i].children = result.result.filter((value) => {
              return value.pid == res[i].id;
            });
              return value.isShow == 1;
            })
              .filter((value) => {
                return value.pid == res[i].id;
              });
          }
          this.listMenu.push(res[i]);
          this.changeSelectStyle = this.listMenu.length - 1;
          // this.changeSelectStyle = this.listMenu.length - 1;
          // this.changeSelectStyle = 0
          // const nowPage = this.nowPage
          // if (sessionStorage.getItem('routerName')) {
          //   for (let index = 0; index < nowPage.length; index++) {
          //     if (this.$route.path === nowPage[index].name) {
          //       this.$set(this, 'changeSelectStyle', nowPage[index].index)
          //     }
          //   }
          // } else {
          //   this.changeSelectStyle = this.listMenu.length - 1;
          // }
          this.changeSelectStyle = sessionStorage.getItem('changeSelectStyle')
          // var strartMneu = res[i].children[0];
          // this.$store.commit('currentPerms', strartMneu.perms);
          // this.changeliSelect = strartMneu.cnName;
@@ -263,7 +376,10 @@
          return father.pid == 1; // 返回一级菜单
        });
      } else {
        alert('暂无菜单栏数据');
        this.$message({
          message: '暂无菜单栏数据',
          type: 'warning'
        });
      }
    },
    logOut() {
@@ -298,6 +414,7 @@
        //语言换成zh
        this.lang = 'zh';
        this.language = true;
        this.$store.state.language = true;
        //菜单换为zh
        this.$store.commit('changeLang', 'zh');
        //i18换成zh
@@ -307,6 +424,7 @@
      else {
        this.lang = 'en';
        this.language = false;
        this.$store.state.language = false;
        this.$i18n.locale = this.lang;
        this.$store.commit('changeLang', 'en'); //传递点击的节点
      }
@@ -321,8 +439,8 @@
        };
        Window.ws = null;
      }
      if (index.indexOf('http') != -1) {
debugger
      if (index.indexOf('{fmeHost}') != -1) {
        this.$router.push('/databaseMonitoring');
        this.$store.commit('getIframe', index);
      } else if (isNaN(Number(index))) {
@@ -347,210 +465,4 @@
  },
};
</script>
<style lang="less" scoped>
//@import url(); 引入公共css类
.NavBox {
  width: 100%;
  height: 100%;
  background-image: linear-gradient(rgb(34, 33, 33), rgb(27, 31, 78));
  .topBox {
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: space-around;
    align-items: center;
    .topTitle {
      width: 435px;
      height: 70px;
      background: url("../assets/img/LOGO.png") no-repeat center;
    }
    .topMenu {
      width: auto;
      flex: 1;
      height: 100px;
      .menuContent {
        width: 100%;
        height: 100%;
        display: flex;
        .contentDiv {
          margin-left: 1%;
        }
      }
      .ImgMenu {
        width: 100%;
        height: auto;
        display: flex;
        justify-content: center;
      }
      .menuImage {
        width: 70px;
        height: 70px;
      }
      .menulabel {
        font-size: 14px;
        font-family: Source Han Sans CN;
        font-weight: 500;
        color: #ffffff;
        text-align: center;
        width: 120px;
      }
      .changeStyle {
        color: #fec801;
      }
      .m1 {
        background: url("../assets/img/menu/menu11.png") no-repeat;
        background-size: 100% 100%;
      }
      .m2 {
        background: url("../assets/img/menu/menu21.png") no-repeat;
        background-size: 100% 100%;
      }
      .m3 {
        background: url("../assets/img/menu/menu31.png") no-repeat;
        background-size: 100% 100%;
      }
      .m4 {
        background: url("../assets/img/menu/menu41.png") no-repeat;
        background-size: 100% 100%;
      }
      .m5 {
        background: url("../assets/img/menu/menu51.png") no-repeat;
        background-size: 100% 100%;
      }
      .m6 {
        background: url("../assets/img/menu/menu61.png") no-repeat;
        background-size: 100% 100%;
      }
      .m7 {
        background: url("../assets/img/menu/qwyzt.png") no-repeat;
        background-size: 100% 100%;
      }
      .m11 {
        background: url("../assets/img/menu/menu12.png") no-repeat;
        background-size: 100% 100%;
      }
      .m21 {
        background: url("../assets/img/menu/menu22.png") no-repeat;
        background-size: 100% 100%;
      }
      .m31 {
        background: url("../assets/img/menu/menu32.png") no-repeat;
        background-size: 100% 100%;
      }
      .m41 {
        background: url("../assets/img/menu/menu42.png") no-repeat;
        background-size: 100% 100%;
      }
      .m51 {
        background: url("../assets/img/menu/menu52.png") no-repeat;
        background-size: 100% 100%;
      }
      .m61 {
        background: url("../assets/img/menu/menu62.png") no-repeat;
        background-size: 100% 100%;
      }
      .m71 {
        background: url("../assets/img/menu/qwyzt-h.png") no-repeat;
        background-size: 100% 100%;
      }
    }
    .topUser {
      height: 70px;
      .userName {
        margin: 0px 10px;
        display: flex;
        justify-content: space-between;
        height: 30px;
      }
      .userLanguage {
        margin: 0px 10px;
        margin-top: 10px;
        display: flex;
        height: 30px;
      }
      .userImage {
        width: 30px;
        height: 30px;
        float: left;
        margin-right: 10px;
      }
      .user1 {
        background: url("../assets/img/user.png") no-repeat;
        background-size: 100% 100%;
      }
      .user2 {
        background: url("../assets/img/EN.png") no-repeat;
        background-size: 100% 100%;
      }
      .userText {
        font-size: 15px;
        line-height: 30px;
        font-family: Microsoft YaHei;
        font-weight: 400;
        color: #ffffff;
        text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.35);
      }
      .TextLanguage {
        font-size: 15px;
        line-height: 30px;
        font-family: Microsoft YaHei;
        font-weight: 400;
        color: #ffffff;
        text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.35);
      }
    }
    .elLink {
      margin-left: 5px;
      font-size: 15px;
      margin-bottom: 4px;
    }
  }
  .secondMenuDiv {
    position: absolute;
    z-index: 1024;
    margin-top: 10px;
    border: 1px solid white;
    border-radius: 5px;
    div {
      line-height: 30px;
      background: #303030;
      padding: 10px;
      font-size: 18px;
      font-family: Microsoft YaHei;
      font-weight: 400;
      color: #ffffff;
      line-height: 49px;
      min-width: 120px;
    }
    .changeLiStyle {
      color: #fec801;
      background: linear-gradient(180deg, #002992, #080472);
    }
  }
  /deep/.el-link.el-link--default:hover {
    color: #409eff !important;
  }
  /deep/ .el-link.el-link--default {
    color: white !important;
  }
  /deep/ ul.el-menu-vertical-demo.el-menu {
    // 添加背景颜色
    background-image: rgba(255, 255, 255, 0.1) !important;
  }
  /deep/ li.el-menu-item.is-active {
    // 添加样式,只针对导航栏首菜单
    background-color: transparent;
  }
}
</style>