sidebar.vue 4.75 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);
      },
      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="active">
        <a class="menu-tit">权限管理</a>
        <ul>
          <li >
            <a v-link="{ path: '/authoritymenuconfig', activeClass:'active' }">菜单配置</a>
          </li>

          <li  >
            <a v-link="{ path: '/authorityRoleConfig', activeClass:'active' }">角色配置</a>
          </li>
          <li  >
            <a  v-link="{ path: '/userManagerList', activeClass:'active' }">用户管理</a>
          </li>
        </ul>
      </li>
      -->
      <!-- 审计运营商账号,是否显示审计日志菜单。根据一级菜单,二级菜单的正式id来判断 -->
      <li :class='one.guid==showObj.oneGuid?"active":""' v-for="one in menuList.oneMenus" v-if="one.guid=='5f10b0c3137c4b61bb8c90e5c334f2b2' && $store.state.user.userId=='737bffb91ebd4fb8a5975bc07775b958'"> 
        <a class="menu-tit" v-on:click="clickOne(one.guid)" style='padding:8px 4px;'>{{one.name}}</a> 
        <ul >
          <li v-for="two in menuList.twoMenus[one.guid]" v-if="two.guid=='f73e860568264631a2a717bee8deda72'">
            <a :class="two.guid==showObj.twoGuid?'active':''" v-on:click="clickTow(two.guid,two.name)" 
              v-link="two.syscalldescribe1" style='padding:8px 4px;'  >{{two.name}}</a>
          </li>
        </ul>
      </li>
       <!--循环的代码段-->
      <li :class='one.guid==showObj.oneGuid?"active":""' v-for="one in menuList.oneMenus" v-show="$store.state.user.userId != '737bffb91ebd4fb8a5975bc07775b958'">
        <a class="menu-tit" v-on:click="clickOne(one.guid)" style='padding:8px 4px;'>{{one.name}}</a>
        <ul >
          <li v-for="two in menuList.twoMenus[one.guid]" v-if="two.guid != 'f73e860568264631a2a717bee8deda72'">
            <a :class="two.guid==showObj.twoGuid?'active':''" v-on:click="clickTow(two.guid,two.name)" 
              v-link="two.syscalldescribe1" style='padding:8px 4px;'>{{two.name}}</a>
          </li>
        </ul>
      </li>
    </ul>
</template>