Header.vue 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <template>
  2. <div class="header">
  3. <el-row class="header-content">
  4. <el-col :span="4" class="header-brand">
  5. <a href="/">应用市场</a>
  6. </el-col>
  7. <el-col :span="14">
  8. <search class="header-search"></search>
  9. </el-col>
  10. <el-col :span="6">
  11. <div class="pull-right">
  12. <el-button type="text" icon="el-icon-circle-plus-outline" class="header-btn mr-5" @click="goAppSubmitPage">提交应用</el-button>
  13. <el-button type="text" class="header-btn" @click="goLoginPage" v-if="!isLogin">登录</el-button>
  14. <el-dropdown v-if="isLogin">
  15. <span class="el-dropdown-link">
  16. {{userInfo.userName}}<i class="el-icon-arrow-down el-icon--right"></i>
  17. </span>
  18. <el-dropdown-menu slot="dropdown">
  19. <el-dropdown-item><nuxt-link to="/my/home">我的账号</nuxt-link></el-dropdown-item>
  20. <el-dropdown-item><nuxt-link to="/my/apps">我的应用</nuxt-link></el-dropdown-item>
  21. </el-dropdown-menu>
  22. </el-dropdown>
  23. </div>
  24. </el-col>
  25. </el-row>
  26. </div>
  27. </template>
  28. <style scoped>
  29. .header {
  30. height: 64px;
  31. line-height: 64px;
  32. box-shadow: 0 0 8px rgba(0,0,0,.08);
  33. overflow: hidden;
  34. font-size: 14px;
  35. background: #fff;
  36. width: 100%;
  37. position: fixed;
  38. top: 0;
  39. left: 0;
  40. z-index: 100;
  41. }
  42. .header-content {
  43. max-width: 1206px;
  44. margin: 0 auto;
  45. }
  46. .header-brand {
  47. float: left;
  48. font-family: Andale Mono,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Geneva,Arial,sans-serif;
  49. font-size: 21px;
  50. color: rgba(0,0,0,.65);
  51. letter-spacing: -1px;
  52. font-weight: 400;
  53. text-transform: uppercase;
  54. }
  55. .header-search {
  56. width: 668px
  57. }
  58. .header-btn {
  59. color: rgba(0,0,0,.65);
  60. }
  61. .header-btn:focus,.header-btn:hover {
  62. color: #409EFF;
  63. }
  64. </style>
  65. <script>
  66. import Search from './Search.vue'
  67. export default{
  68. components:{
  69. Search
  70. },
  71. computed: {
  72. isLogin () {
  73. return this.$store.state.account.user.logged
  74. },
  75. userInfo () {
  76. return this.$store.state.account.user.data
  77. }
  78. },
  79. methods: {
  80. goAppSubmitPage () {
  81. this.$router.push({ path: '/app/submit' })
  82. },
  83. goLoginPage () {
  84. // TODO add login operations
  85. const user = { userName: 'ABC', icon: '/icon.jpg', pass: '123456' }
  86. this.$store.commit('account/REQUEST_USER_INFO_SUCCESS', user)
  87. this.$message({
  88. message: '模拟登录成功',
  89. type: 'success'
  90. });
  91. }
  92. }
  93. }
  94. </script>