top-box.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <template>
  2. <view>
  3. <view class="no-login" v-if="!userinfo.token" @click="goLogin">
  4. <view class="avatar"><image src="../../static/no-login.png"></image></view>
  5. <view class="context">您好,请授权登录</view>
  6. </view>
  7. <view class="login" @click="getnickName" v-else>
  8. <view class="avatar"><image :src="userinfo.avatar ? userinfo.avatar : defaultimg"></image></view>
  9. <view class="info">
  10. <view class="name">{{userinfo.nickName || '小狸'}}</view>
  11. <view class="phone">
  12. <view><image src="../../static/ucenter/icon2.png"></image></view>
  13. <view>{{userinfo.telephone}}</view>
  14. </view>
  15. </view>
  16. <view class="join">
  17. <image src="../../static/ucenter/icon1.png"></image>
  18. <view class="days">已加入{{days}}天</view>
  19. </view>
  20. </view>
  21. </view>
  22. </template>
  23. <script>
  24. export default {
  25. name:"top-box",
  26. props:['userinfo','days'],
  27. data(){
  28. return{
  29. defaultimg:'../../static/no-login.png',
  30. }
  31. },
  32. methods:{
  33. getnickName(){
  34. if(this.$store.state.users.avatar == null){
  35. uni.navigateTo({
  36. url:'/pages/ucenter/set_avatar'
  37. })
  38. }
  39. },
  40. goLogin(){
  41. uni.navigateTo({
  42. url:'/pages/public/login'
  43. })
  44. }
  45. }
  46. }
  47. </script>
  48. <style lang="scss" scoped>
  49. .no-login{
  50. margin-top: 15rpx;
  51. display: flex;
  52. .avatar image{
  53. width: 70rpx;
  54. height: 70rpx;
  55. margin: 0 20rpx;
  56. }
  57. .context{
  58. color: #58be6b;
  59. font-size: 32rpx;
  60. font-weight: bold;
  61. line-height: 70rpx;
  62. }
  63. }
  64. .login{
  65. margin-top: 15rpx;
  66. display: flex;
  67. .avatar image{
  68. width: 110rpx;
  69. height: 110rpx;
  70. margin: 0 30rpx;
  71. border-radius: 50%;
  72. }
  73. .info{
  74. display: flex;
  75. flex-direction: column;
  76. height: 100rpx;
  77. justify-content: space-around;
  78. padding-top: 10rpx;
  79. margin-left: 5rpx;
  80. .name{
  81. color: #1d2129;
  82. font-size: 36rpx;
  83. font-weight: bold;
  84. }
  85. .phone{
  86. display: flex;
  87. font-size: 24rpx;
  88. color: #86909c;
  89. line-height: 36rpx;
  90. image{
  91. width: 36rpx;
  92. height: 36rpx;
  93. }
  94. }
  95. }
  96. .join{
  97. display: flex;
  98. padding-top: 15rpx;
  99. margin-left: 20rpx;
  100. position: relative;
  101. image{
  102. width: 42rpx;
  103. height: 48rpx;
  104. position: absolute;
  105. }
  106. .days{
  107. background-color: #f5f5f5;
  108. height: 44rpx;
  109. padding: 0 20rpx;
  110. margin-left: 20rpx;
  111. margin-top: 5rpx;
  112. border-top-right-radius:20rpx;
  113. border-bottom-right-radius:20rpx;
  114. font-size: 24rpx;
  115. color: #86909c;
  116. line-height: 44rpx;
  117. }
  118. }
  119. }
  120. </style>