top.vue 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <el-row class='flex flex-align-center flex-justify-between top '>
  3. <el-col :span='12'>
  4. <div class='flex flex-justify-start flex-align-center padding'>
  5. <img class="ml-10" src="../assets/svg/top.svg"/>
  6. <el-breadcrumb class='ml-10' separator="/">
  7. <el-breadcrumb-item v-for='item in nav.menus' :key='item.id'>
  8. <a :href="item.path">{{ item.name }}</a>
  9. </el-breadcrumb-item>
  10. </el-breadcrumb>
  11. </div>
  12. </el-col>
  13. <el-col :span='12'>
  14. <div class='flex-child-average flex-justify-end flex padding-right '>
  15. <div class='padding flex flex-align-center'>
  16. <el-avatar :size="30"
  17. :src="user.info && user.info.avatarUrl ? user.info.avatarUrl : 'https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png'"
  18. class='mr-10'/>
  19. <el-dropdown @command='dropDown'>
  20. <span class="flex flex-center">
  21. {{ user.info.nikeName }} / ({{ user.info.typeName }})
  22. <el-icon class="el-icon--right">
  23. <arrow-down/>
  24. </el-icon>
  25. </span>
  26. <template #dropdown>
  27. <el-dropdown-menu>
  28. <el-dropdown-item command='info'>个人中心</el-dropdown-item>
  29. <el-dropdown-item command='logout'>退出登录</el-dropdown-item>
  30. </el-dropdown-menu>
  31. </template>
  32. </el-dropdown>
  33. </div>
  34. </div>
  35. </el-col>
  36. </el-row>
  37. </template>
  38. <script>
  39. import navStore from '../store/nav.js'
  40. import {useStore} from '../store/user.js'
  41. export default {
  42. name: 'top',
  43. setup() {
  44. const nav = navStore()
  45. const user = useStore()
  46. return {nav, user}
  47. },
  48. created() {
  49. },
  50. methods: {
  51. dropDown(res) {
  52. if (res === 'info') {
  53. this.$message.success('个人中心')
  54. } else if (res === 'logout') {
  55. this.$api.login.logout().then(res => {
  56. if (res.success === 'true') {
  57. this.nav.cleanMenu()
  58. this.$message.success('退出登录')
  59. this.$router.replace('/login')
  60. } else {
  61. this.$message.error(res.msg)
  62. }
  63. })
  64. }
  65. }
  66. }
  67. }
  68. </script>
  69. <style lang='scss' scoped>
  70. .top {
  71. height: 60px;
  72. z-index: 1;
  73. background-color: white;
  74. top: 0;
  75. left: 240px;
  76. right: 0;
  77. position: fixed;
  78. border-bottom: whitesmoke solid 1px;
  79. box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.1);
  80. }
  81. .avatar {
  82. background-color: #c4c3c3;
  83. width: 30px;
  84. height: 30px;
  85. border-radius: 15px;
  86. }
  87. </style>