sidebar.vue 3.46 KB

<script>
  var store = require('../../../vuex/store');
  var MT = require('../../../vuex/mutation-types');

  module.exports = {
    store: store,
    data: function () {
      return {
        // 数据传输
        menuList:{},
        // 显示的菜单的信息
        showObj:{
          oneGuid:'',// 一级显示的
          twoGuid:''// 二级显示的
        },
      };
    },
    methods: { 
      // 获得当前用户信息
      getOnlineUser: function () {
        var self = this;
        if(self.$store.state.user.curMenuRole!=null && self.$store.state.user.curMenuRole.oneMenus!=null){ 
            self.getRoleMenu();
        }else{
          Ajax.get('/online').then(function (resp) {
            self.$store.dispatch(MT.SET_ONLINE_USER, resp.data);
            self.getRoleMenu();
          });
        }
      },     
      // 获得菜单的数据权限
      getRoleMenu:function(){
        var self = this;
        self.$set('menuList',self.$store.state.user.curMenuRole);
        // 刚登录的时候,默认把第一个大菜单展开
        if(self.menuList!=null && self.menuList.oneMenus!=null){
          for (var key in self.menuList.oneMenus) { 
            // 一级菜单
            self.showObj.oneGuid = self.menuList.oneMenus[key].guid;
            // 一级菜单下的第1个二级菜单
            self.showObj.twoGuid = self.getFirtMenu(self.showObj.oneGuid);

            break;
          } 
        }
      },
      // 点击一级菜单
      clickOne:function(oneGuid){
        var self = this;
        if(oneGuid==self.showObj.oneGuid){
          self.showObj.oneGuid = "";
          self.showObj.twoGuid = "";
        }else{
          self.showObj.oneGuid = oneGuid;
          self.showObj.twoGuid = self.getFirtMenu(oneGuid);
        }
      },
      // 点击二级菜单
      clickTow:function(towGuid,type){
        var self = this;
        self.showObj.twoGuid = towGuid;
        self.addAuditLog(type);
      },
      // 获得某个一级菜单下第一个对象的guid
      getFirtMenu:function(oneGuid){
        var self = this;

        var twoGuid = "";
        if(self.menuList.twoMenus[oneGuid]!=null){
          for (var key in self.menuList.twoMenus[oneGuid]) { 
            // 一级菜单
            twoGuid = self.menuList.twoMenus[oneGuid][key].guid;
            break;
          }
        }
        return twoGuid;
      }, 
      addAuditLog:function(type){
        var self = this;
        Ajax.post('/sitemessage/operauditlogAddAuditLog',{'type':type,'userId':self.$store.state.user.userId,'userName':self.$store.state.user.userName})
        .then(function (resp) {
          });
      }
    },
    created: function(){
      // 获得菜单的权限
      this.getOnlineUser();
    }
  };
</script>
<template>
  <div class="menu-list menu-list-sub" style="min-height: 500px;background: 0;">
    <ul class="has-sub" style="background-color: #fff;">
      <!--循环的代码段-->
      <li :class='one.guid==showObj.oneGuid?"active":""' v-for="one in menuList.oneMenus">
        <!--一级菜单:相当于点击该组的第一个菜单-->
        <a class="menu-tit" v-on:click="clickOne(one.guid)"  >{{one.name}}</a>
        <!--二级菜单:子菜单-->
        <ul >
          <li v-for="two in menuList.twoMenus[one.guid]">
            <a :class="two.guid==showObj.twoGuid?'active':''" v-on:click="clickTow(two.guid,two.name)"  
              v-link="two.syscalldescribe1">{{two.name}}</a>
          </li>
        </ul>
      </li>
    </ul>
</template>