Navi.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <template>
  2. <nav class="nav">
  3. <div class="nav__body">
  4. <router-link to="/"><img src="/image/seec-logo--full.png" class="nav__logo" /></router-link>
  5. <ul class="nav__list nav__list-left">
  6. <li class="nav__item nav__item-left"><a href="http://helper.seecoder.cn" target="_self">HELPER</a></li>
  7. <li class="nav__item nav__item-left"><a href="http://coder.seecoder.cn" target="_self">CODER</a></li>
  8. <li class="nav__item nav__item-left"><a href="http://developer.seecoder.cn" target="_self">DEVELOPER</a></li>
  9. </ul>
  10. <el-input placeholder="搜索课程" class="nav__search" disabled>
  11. <el-button slot="append" icon="el-icon-search" disabled></el-button>
  12. </el-input>
  13. <ul class="nav__list nav__list-right" v-if="isLogin">
  14. <li class="nav__item">
  15. <router-link to="/person/info" v-if="!isAdmin">个人中心</router-link>
  16. <router-link to="/admin/checkApplications" v-else>平台管理</router-link>
  17. </li>
  18. <li class="nav__item">
  19. <el-popover
  20. placement="bottom-start"
  21. width="120"
  22. trigger="hover"
  23. popper-class="drop-container">
  24. <div class="drop-info">
  25. <div class="drop-info__item drop-info__name">{{userName}}</div>
  26. <div class="drop-info__item">({{userPhone}})</div>
  27. </div>
  28. <el-menu
  29. class="el-menu-vertical-demo drop-list">
  30. <el-menu-item index="2" v-if="isTeacher">
  31. 教师界面
  32. </el-menu-item>
  33. <el-menu-item index="3" @click="logout">
  34. 退出登录
  35. </el-menu-item>
  36. </el-menu>
  37. <img slot="reference" class="nav__photo" src="/image/default-photo.jpg"/>
  38. </el-popover>
  39. </li>
  40. </ul>
  41. <ul class="nav__list nav__list-right" v-else>
  42. <li class="nav__item"><router-link to="/login">登录</router-link></li>
  43. <li class="nav__item"><router-link to="/register">注册</router-link></li>
  44. </ul>
  45. </div>
  46. </nav>
  47. </template>
  48. <script>
  49. import { mapMutations } from 'vuex'
  50. export default {
  51. name: "Navi",
  52. data(){
  53. return{
  54. isLogin: !!this.$store.state.token,
  55. isTeacher: this.$store.state.user.role === "TEACHER",
  56. isAdmin: this.$store.state.user.role === "ADMIN",
  57. userName: this.$store.state.user.name,
  58. userPhone: this.$store.state.user.phone
  59. }
  60. },
  61. mounted(){
  62. // if(this.$store.state.token){
  63. // localStorage.setItem('token', this.$store.state.token);
  64. // }else{
  65. // if(localStorage.getItem("token")){
  66. // this.$store.commit('saveToken', localStorage.getItem('token'));
  67. // }
  68. // }
  69. //
  70. // if(this.$store.state.user && this.$store.state.user.name){
  71. // localStorage.setItem('user', JSON.stringify(this.$store.state.user));
  72. // }else{
  73. // if(localStorage.getItem("user")){
  74. // this.$store.commit('saveUser', JSON.parse(localStorage.getItem('user')));
  75. // console.log(JSON.parse(localStorage.getItem('user')));
  76. // }
  77. // }
  78. //
  79. // this.refresh();
  80. },
  81. methods:{
  82. logout(){
  83. this.$store.commit("saveToken", null);
  84. this.$store.commit("saveUser", {});
  85. this.$cookies.remove('token', {maxAge: 24*60*60});
  86. this.$cookies.remove('user', {maxAge: 24*60*60});
  87. this.$cookies.removeAll();
  88. this.refresh();
  89. this.$router.push("/");
  90. },
  91. refresh(){
  92. this.isLogin = !!this.$store.state.token;
  93. this.isTeacher = this.$store.state.user.role === "TEACHER";
  94. this.isAdmin = this.$store.state.user.role === "ADMIN";
  95. this.userName = this.$store.state.user.name;
  96. this.userPhone = this.$store.state.user.phone;
  97. }
  98. }
  99. };
  100. </script>
  101. <style scoped>
  102. </style>