Navi.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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" id="v-step-0"><a href="http://helper.seecoder.cn" target="_self">HELPER</a></li>
  7. <li class="nav__item nav__item-left" id="v-step-1"><a :href="coder" target="_self">CODER</a></li>
  8. <li class="nav__item nav__item-left" id="v-step-2"><a :href="eval" target="_self">EVALUATOR</a></li>
  9. <li class="nav__item nav__item-left" id="v-step-3"><a :href="devcloud" target="_self">DEVCLOUD</a></li>
  10. </ul>
  11. <!-- <el-input placeholder="搜索课程" class="nav__search" disabled>-->
  12. <!-- <el-button slot="append" icon="el-icon-search" disabled></el-button>-->
  13. <!-- </el-input>-->
  14. <ul class="nav__list nav__list-right" v-if="isLogin">
  15. <li class="nav__item">
  16. <router-link to="/person/info" v-if="!isAdmin" id="v-step-3">个人中心</router-link>
  17. <router-link to="/admin/checkApplications" v-else>平台管理</router-link>
  18. </li>
  19. <!-- <li class="nav__item">-->
  20. <!-- <router-link to="/rookie/first" v-if="!isAdmin" id="v-step-4">通关模式</router-link>-->
  21. <!-- </li>-->
  22. <li class="nav__item">
  23. <el-popover
  24. placement="bottom-start"
  25. width="120"
  26. trigger="hover"
  27. popper-class="drop-container">
  28. <div class="drop-info">
  29. <div class="drop-info__item drop-info__name">{{userName}}</div>
  30. <div class="drop-info__item">({{userPhone}})</div>
  31. </div>
  32. <el-menu
  33. class="el-menu-vertical-demo drop-list">
  34. <el-menu-item index="2" v-if="isTeacher" disabled>
  35. 教师界面
  36. </el-menu-item>
  37. <el-menu-item index="3" @click="logout">
  38. 退出登录
  39. </el-menu-item>
  40. </el-menu>
  41. <img slot="reference" class="nav__photo" src="/image/default-photo.jpg"/>
  42. </el-popover>
  43. </li>
  44. </ul>
  45. <ul class="nav__list nav__list-right" v-else>
  46. <li class="nav__item"><router-link to="/login">登录</router-link></li>
  47. <li class="nav__item"><router-link to="/register">注册</router-link></li>
  48. </ul>
  49. <!-- <v-tour class="v-tour-style" name="myTour" :steps="steps" :options="myOptions"></v-tour>-->
  50. </div>
  51. </nav>
  52. </template>
  53. <script>
  54. export default {
  55. name: 'Navi',
  56. data () {
  57. return {
  58. isLogin: !!this.$store.state.token,
  59. isTeacher: this.$store.state.user.role === 'TEACHER',
  60. isAdmin: this.$store.state.user.role === 'ADMIN',
  61. userName: this.$store.state.user.name,
  62. userPhone: this.$store.state.user.phone,
  63. myOptions: {
  64. useKeyboardNavigation: false, // 不使用←、→和ESC键来导航tour
  65. startTimeout: 1000, // 1秒后执行
  66. labels: {
  67. buttonSkip: '跳过',
  68. buttonPrevious: '上一步',
  69. buttonNext: '下一步',
  70. buttonStop: '关闭'
  71. }
  72. },
  73. steps: [
  74. {
  75. target: '#v-step-0', // We're using document.querySelector() under the hood
  76. content: '这里是帮助,里面会有一些帮助你的文档'
  77. },
  78. {
  79. target: '#v-step-1',
  80. content: '这里是做题系统,可以在上面进行做题编程'
  81. },
  82. {
  83. target: '#v-step-2',
  84. content: '这里是开发平台'
  85. },
  86. {
  87. target: '#v-step-3',
  88. content: '这里是个人中心,里面会有你的基本信息、学习数据等'
  89. },
  90. {
  91. target: '#v-step-4',
  92. content: '这里是通关模式,你可以获取题库的推荐,进行每日一题的训练'
  93. }
  94. ]
  95. }
  96. },
  97. // mounted () {
  98. // this.$tours.myTour.start()
  99. // },
  100. methods: {
  101. logout () {
  102. this.$store.commit('saveToken', null)
  103. this.$store.commit('saveUser', {})
  104. this.$cookies.remove('token', { maxAge: 24 * 60 * 60 })
  105. this.$cookies.remove('user', { maxAge: 24 * 60 * 60 })
  106. this.refresh()
  107. this.$router.push('/')
  108. },
  109. refresh () {
  110. this.isLogin = !!this.$store.state.token
  111. this.isTeacher = this.$store.state.user.role === 'TEACHER'
  112. this.isAdmin = this.$store.state.user.role === 'ADMIN'
  113. this.userName = this.$store.state.user.name
  114. this.userPhone = this.$store.state.user.phone
  115. }
  116. },
  117. computed: {
  118. coder () {
  119. return this.$store.state.token ? 'https://coder.seec.seecoder.cn?id_token=' + this.$store.state.token : 'https://coder.seec.seecoder.cn'
  120. },
  121. eval () {
  122. return this.$store.state.token ? 'https://eval.seec.seecoder.cn?id_token=' + this.$store.state.token : 'https://eval.seec.seecoder.cn'
  123. },
  124. devcloud () {
  125. return this.$store.state.token ? 'https://devcloud.seec.seecoder.cn?id_token=' + this.$store.state.token : 'https://devcloud.seec.seecoder.cn'
  126. }
  127. }
  128. }
  129. </script>
  130. <style scoped>
  131. </style>