App.vue 3.05 KB
<template>
  <div id="app">
    <router-view />
  </div>
</template>

<script>
import menu from "./util/menuList";
export default {
  name: "App",
  data() {
    return {};
  },
  mounted() {
    // 权限验证 动态路由
    if (window.location.href.indexOf("login") < 0) {
      let permission = this.$store.state.progressList;
      console.log(this.$store.state);
      let menuList = [];
      this.$router.options.routes[0].children = [];
      let routerUserDetail = {
        path: "/userDetail/:id",
        name: "userDetail",
        component: e => require(["@/components/userDetail"], e)
      };
      let routerTeacherDetail = {
        path: "/teacher/:id",
        name: "teacherDetail",
        component: e => require(["@/components/teacherDetail"], e)
      };
      menu.forEach(i => {
        let p = false;
        let t = [];
        i.list.forEach(j => {
          let find = permission.find(x => {
            return x.cover === j.cover;
          });
          if (find) {
            j.router.meta = {};
            j.router.meta.readonly = !!find.readonly;
            j.router.meta.delete = !!find.delete;
            j.router.meta.export = !!find.export;
            j.router.meta.refund = !!find.refund;
            j.router.meta.distribution = !!find.distribution;
            j.router.meta.classManage = !!find.classManage;
            j.router.meta.classManageUnlimited = !!find.classManageUnlimited;
            j.router.meta.classTakeUnlimited = !!find.classTakeUnlimited;
            j.router.meta.promoter = !!find.promoter;
            j.router.meta.import = !!find.import;
            t.push(j);
            if (find.cover === "3-1") {
              routerTeacherDetail.meta = {};
              routerTeacherDetail.meta.readonly = find.readonly;
              routerTeacherDetail.meta.delete = !!find.delete;
              this.$router.options.routes[0].children.push(routerTeacherDetail);
            }
            if (find.cover === "3-2") {
              routerUserDetail.meta = {};
              routerUserDetail.meta.readonly = find.readonly;
              routerUserDetail.meta.delete = !!find.delete;
              this.$router.options.routes[0].children.push(routerUserDetail);
            }
            this.$router.options.routes[0].children.push(j.router);
            p = true;
          }
        });
        if (p) {
          i.list = t;
          menuList.push(i);
        }
      });
      this.$router.addRoutes([this.$router.options.routes[0]]); //调用add;
      this.$store.dispatch("setMenu", menuList);
    }
  }
};
</script>

<style >
#app {
  height: 100%;
}
html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}
.el-collapse-item__arrow {
  margin-left: 0;
}

.fl {
  float: left;
}

.fr {
  float: right;
}

.clearfix {
  *zoom: 1;
}

.clearfix:after {
  content: "";
  display: block;
  height: 0;
  visibility: hidden;
  clear: both;
}

.page-div {
  padding-top: 20px;
}

.cell-link {
  /*color: #409EFF;*/
  text-decoration: underline;
  cursor: pointer;
  user-select: none;
}
/* #app .el-main .menu-block{
  height: 170vh;
} */
</style>