123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- <template>
- <div class="admin">
- <div class="home-header">
- <div class="head-user menu-list">
- <ul>
- <li @click="toSelectSchool">
- <i class="el-icon-s-home"></i>
- <span>切换学校</span>
- </li>
- <li class="menu-item menu-item-account" @click="toResetPwd">
- <i class="icon icon-account"></i>
- <span :title="username">{{ username }}</span>
- </li>
- <li class="menu-item" @click="toLogout">
- <i class="icon icon-logout" title="退出登录"></i>
- </li>
- </ul>
- </div>
- </div>
- <div class="home-navs">
- <div class="head-logo">
- <div class="head-logo-content">
- <h1>知学知考</h1>
- </div>
- </div>
- <el-menu
- class="el-menu-home"
- active-text-color="#705eff"
- text-color="#383b4a"
- router
- :default-active="curRouteName"
- :default-openeds="curSubMenuNames"
- >
- <el-submenu
- v-for="submenu in menus"
- :key="submenu.url"
- :index="submenu.url"
- >
- <template slot="title">
- <span>{{ submenu.name }}</span>
- </template>
- <el-menu-item
- v-for="nav in submenu.children"
- :key="nav.url"
- :index="nav.url"
- :route="{ name: nav.url }"
- >
- <span>{{ nav.name }}</span>
- </el-menu-item>
- </el-submenu>
- </el-menu>
- </div>
- <div class="home-body">
- <div class="home-main">
- <div class="home-breadcrumb" v-if="breadcrumbs.length">
- <span class="breadcrumb-tips">
- <i class="icon icon-location"></i>
- <span>当前所在位置:</span>
- </span>
- <el-breadcrumb separator="/">
- <el-breadcrumb-item
- v-for="(bread, index) in breadcrumbs"
- :key="index"
- >{{ bread.name }}</el-breadcrumb-item
- >
- </el-breadcrumb>
- </div>
- <!-- home-view: page detail -->
- <div class="home-view">
- <router-view />
- </div>
- </div>
- </div>
- <!-- 修改密码 -->
- <reset-pwd
- ref="ResetPwd"
- :user-info="userInfo"
- @modified="resetPwdModified"
- ></reset-pwd>
- </div>
- </template>
- <script>
- import localNavs from "@/constants/adminNavs";
- import { SYS_ADMIN_NAME } from "@/constants/enumerate";
- import { logout } from "@/modules/login/api";
- import ResetPwd from "../../base/components/ResetPwd";
- export default {
- name: "home",
- components: { ResetPwd },
- data() {
- const user = this.$ls.get("user", { id: "", realName: "", roleList: [] });
- return {
- menus: [],
- privileges: [],
- curRouteName: "",
- curSubMenuNames: [],
- breadcrumbs: [],
- username: user.realName,
- userInfo: {
- pwdCount: 0,
- mobileNumber: 1,
- userId: user.id
- }
- };
- },
- watch: {
- $route(val) {
- if (val.name === "Admin") return;
- this.actCurNav();
- }
- },
- created() {
- const loginName = this.$ls.get("user", { loginName: "" }).loginName;
- if (loginName !== SYS_ADMIN_NAME) {
- this.$message.error("非法操作!");
- this.$router.replace({ name: "Login" });
- return;
- }
- if (this.$route.name === "Admin") {
- this.$router.replace({
- name: "AdminUserManage"
- });
- }
- this.initData();
- },
- methods: {
- initData() {
- this.privileges = localNavs;
- this.menus = this.getMenu();
- this.curSubMenuNames = this.menus.map(item => item.url);
- if (this.$route.name === "Admin") {
- const firstRouteName = this.getFirstRouter();
- this.$router.replace({
- name: firstRouteName
- });
- return;
- }
- this.actCurNav();
- },
- getFirstRouter() {
- let childNavs = this.privileges;
- let firstRouteName = "";
- while (childNavs.length) {
- firstRouteName = childNavs[0].url;
- childNavs = this.privileges.filter(
- item => item.parentId === childNavs[0].id
- );
- }
- return firstRouteName;
- },
- getMenu() {
- let menus = this.privileges.filter(item => item.parentId === "-1");
- const toTree = menus => {
- menus.forEach(menu => {
- const children = this.privileges.filter(
- item => item.parentId === menu.id
- );
- if (children.length) {
- menu.children = children;
- toTree(menu.children);
- }
- });
- };
- toTree(menus);
- return menus;
- },
- actCurNav() {
- this.curRouteName = this.$route.name;
- let breadcrumbs = [];
- let curBreadcrumb = this.privileges.find(
- item => item.url === this.curRouteName
- );
- breadcrumbs.push({ ...curBreadcrumb });
- while (curBreadcrumb && curBreadcrumb.parentId !== "-1") {
- curBreadcrumb = this.privileges.find(
- item => item.id === curBreadcrumb.parentId
- );
- if (curBreadcrumb) breadcrumbs.unshift({ ...curBreadcrumb });
- }
- this.breadcrumbs = breadcrumbs;
- },
- toLogout() {
- this.$confirm("确定要退出登录吗?", "提示", {
- type: "warning"
- })
- .then(() => {
- this.logoutAction();
- })
- .catch(() => {});
- },
- async logoutAction() {
- await logout();
- this.$ls.clear();
- this.$router.push({ name: "Login" });
- },
- toSelectSchool() {
- this.$router.push({ name: "SelectSchool" });
- },
- toResetPwd() {
- this.$refs.ResetPwd.open();
- },
- resetPwdModified() {
- this.logoutAction();
- }
- }
- };
- </script>
|