<template> <div id="app"> <div class="app_head" :class="{stuWidth:$route.path == '/student'}"> <div class="logo"></div> <span style="margin-left: 10px; color: #fff; font-weight: 600" >PBL项目管理平台</span > <div class="user_head" v-if="this.$store.state.isLogin"> <div class="noticeBox"> <i class="noticeI" @click="goTo('/works')"></i> <span v-if="this.$store.state.nCount != 0">{{ this.$store.state.nCount > 99 ? "99+" : this.$store.state.nCount }}</span> </div> <span class="user_name">{{ this.$store.state.userInfo ? this.$store.state.userInfo.name : "用户" }}</span> <div> <i class="exitI"></i> <el-button type="text" style="color: white" @click="exit" >退出</el-button > </div> </div> </div> <div style="height: calc(100% - 67.5px)"> <!-- main 内容 --> <keep-alive v-if="$route.meta.keepAlive"> <!-- 这里是会被缓存的视图组件 --> <router-view v-if="$route.meta.keepAlive" :class="{ pb_body: isShowNav }" /> </keep-alive> <!-- 这里是不被缓存的视图组件 --> <router-view v-if="!$route.meta.keepAlive" :class="{ pb_body: isShowNav }" /> <!-- 底部导航 --> <footer-nav v-if="isShowNav" :luyou="this.$store.state.luyou" ></footer-nav> </div> </div> </template> <script> import leftBar from "./components/tools/leftBar"; import { Message } from "element-ui"; export default { name: "App", data() { return { isShowNav: true, // 是否显示导航 Tab navTabs: [ "/class", "/course", "/data", "/notice", "/student", "/works", "/course/courseDetail", "/library", // "/course/addCourse", // "/ask", // "/ask/askList", ], // 导航 }; }, components: { "footer-nav": leftBar, }, created: function () { this.routerP(); // this.getnCount(); setInterval(() => { // this.getnCount(); }, 60000); }, methods: { isLogin() { const loading = this.$loading.service({ background: "rgba(255, 255, 255)", target: document.querySelector("body"), }); var _isLogin = this.$cookies.get("tlogin"); var userInfo = this.$cookies.get("teacherInfo"); // if (_isLogin == "1" && userInfo) { loading.close(); this.$store.commit("update", ["isLogin", true]); // var info = JSON.parse(window.sessionStorage.getItem("userInfo")); this.$store.commit("update", ["userInfo", userInfo]); let router_path = this.$route.path; if(router_path == "/"){ this.$router.push("/course"); } // } else { // this.$store.commit("update", ["isLogin", false]); // Message({ // message: "未登录,请登录", // type: "warning", // }); // setTimeout(() => { // loading.close(); // this.$router.push("/login"); // }, 2000); // } }, getnCount() { let params = { bid: this.$store.state.userInfo.userid, }; this.ajax .get(this.$store.state.api + "getNcount", params) .then((res) => { console.log(res); if (res.data[0].length > 0) { this.$store.commit("update", ["nCount", res.data[0][0].num]); } else { this.$store.commit("update", ["nCount", 0]); } }) .catch((err) => { console.error(err); }); }, routerP() { const { navTabs } = this.$data; let router_path = this.$route.path; console.log(router_path); if (router_path != "/login") { this.isLogin(); } var a = 0; for (var i = 0; i < navTabs.length; i++) { if (router_path == navTabs[i]) { this.isShowNav = true; a = 1; break; } } if (a == 0) { this.isShowNav = false; } }, exit() { sessionStorage.clear(); this.$cookies.remove("tlogin"); this.$cookies.remove("teacherInfo"); this.$store.commit("update", ["isLogin", false]); this.$store.commit("update", ["userInfo", {}]); Message({ message: "退出成功", type: "success", }); this.$router.push("/login"); }, goTo(path) { this.$router.push(path); }, }, watch: { $route(to, from) { const { navTabs } = this.$data; const toPath = to.path; const fromName = from.name; var a = 0; for (var i = 0; i < navTabs.length; i++) { if (toPath == navTabs[i]) { this.isShowNav = true; a = 1; break; } } if (a == 0) { this.isShowNav = false; } }, }, }; </script> <style> * { margin: 0; padding: 0; } body { font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif; } #app { height: 100%; width: 100%; background: #e6eaf0; /* min-width: 1380px; */ min-width: 1000px; } .app_head { height: 67.5px; width: 100%; background-color: rgb(61, 103, 188); display: flex; align-items: center; min-width: 1000px; } .logo { height: 50px; width: 50px; background: url("./assets/logo.png"); background-size: 100% 100%; margin-left: 20px; } .pb_body { margin-left: 220px; width: calc(100% - 240px); /* min-width: 1140px; */ min-width: 745px; display: inline-block; height: calc(100% - 100px); min-height: 750px; background: #fff; margin-top: 20px; border-radius: 5px; position: absolute; } .pb_head { font-size: 26px; /* font-weight: 600; */ width: 95%; margin: 10px auto; padding: 10px 5px; border-bottom: 3px solid #eee; } .pb_content { /* height: 100%; */ } .pb_content_body { width: 94%; margin: 10px auto; /* overflow: auto; height: calc(100% - 120px); */ } .user_head { display: flex; align-items: center; margin-left: auto; margin-right: 20px; font-size: 18px; font-weight: 600; } .user_head .user_name { color: #fff; margin-right: 10px; } .user_head div { display: flex; align-items: center; cursor: pointer; } .user_head .exitI { background-image: url("./assets/exit.png"); width: 25px; height: 25px; background-size: 100% 100%; margin-top: 1px; line-height: 25px; vertical-align: text-top; background-repeat: no-repeat; } .noticeBox { position: relative; margin-right: 10px; } .user_head .noticeI { background-image: url("./assets/icon/noticeA.png"); width: 25px; height: 25px; background-size: 100% 100%; margin-top: 1px; line-height: 25px; vertical-align: text-top; background-repeat: no-repeat; cursor: pointer; } .noticeBox span { position: absolute; background: red; width: 15px; height: 15px; border-radius: 30px; color: #fff; text-align: center; font-size: 12px; display: flex; align-items: center; justify-content: center; top: -3px; right: -3px; } .stuWidth{ min-width: 1180px; } </style>