person-card.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <template>
  2. <view class="test">
  3. <view class="content">
  4. <view class="top-bg">
  5. <image :src="info.avatar" mode="widthFix"></image>
  6. </view>
  7. <view class="info">
  8. <image class="avatar" :src="info.avatar"></image>
  9. <view class="nickname">{{ info.nickname || '' }}</view>
  10. <view class="realname">
  11. <text class="left">真实姓名</text>
  12. <text class="right">{{ info.real_name || '' }}</text>
  13. </view>
  14. <view class="phone">
  15. <text class="left">联系方式</text>
  16. <text class="right">{{ info.mobile }}</text>
  17. </view>
  18. </view>
  19. <view class="level-info">
  20. <view class="level-items" :class="{ open: open }">
  21. <view class="level-item">
  22. <text class="left">代理级别</text>
  23. <text class="right">{{ info.level }}</text>
  24. </view>
  25. <view class="level-item">
  26. <text class="left">邀请人</text>
  27. <text class="right">{{ info.recom_nickname }}</text>
  28. </view>
  29. <view class="level-item">
  30. <text class="left">上级代理</text>
  31. <text class="right">{{ info.up_nickname || '' }}</text>
  32. </view>
  33. </view>
  34. <view class="level-lock basecolor" @tap="toogle">{{ open ? '收起' : '显示更多' }}</view>
  35. </view>
  36. <view class="team-info">
  37. <view @tap="toAuthCard">
  38. <text class="left">授权书</text>
  39. <text class="cuIcon-right"></text>
  40. </view>
  41. <view>
  42. <text class="left">团队人数</text>
  43. <text class="right">{{ info.team_num || '0' }}人</text>
  44. </view>
  45. </view>
  46. </view>
  47. </view>
  48. </template>
  49. <script>
  50. import { _API_TeamPerData } from '@/apis/team.js'
  51. export default {
  52. data() {
  53. return {
  54. title: '个人名片',
  55. info: {},
  56. open: false,
  57. id: '',
  58. }
  59. },
  60. onLoad(opt) {
  61. if (opt.self) { // 如果是用户查看自己的命片
  62. this.title = '我的名片'
  63. }
  64. this.id = opt.id
  65. _API_TeamPerData({ id: opt.id }).then(res => {
  66. this.info = res.data
  67. if (this.title !== '我的名片') {
  68. if (this.info.real_name) {
  69. this.info.real_name = this.info.real_name.replace(/./g, '*').replace(/^\*/, this.info.real_name[0])
  70. } else {
  71. this.info.real_name = '***'
  72. }
  73. }
  74. })
  75. },
  76. methods: {
  77. toogle() {
  78. this.open = !this.open
  79. },
  80. toAuthCard() {
  81. uni.navigateTo({ url: `../auth-card/auth-card?id=${this.id}` })
  82. }
  83. }
  84. }
  85. </script>
  86. <style lang="scss">
  87. .test {
  88. @include page();
  89. .content {
  90. .top-bg {
  91. height: 300rpx;
  92. overflow: hidden;
  93. filter: blur(8rpx);
  94. image {
  95. width: 100%;
  96. transform: translateY(-25%);
  97. }
  98. }
  99. .info {
  100. @include flex(column);
  101. height: 270rpx;
  102. font-size: 26rpx;
  103. position: relative;
  104. background: #FFFFFF;
  105. justify-content: flex-end;
  106. border-bottom: 1rpx solid $app-base-bg;
  107. .avatar {
  108. top: 0;
  109. left: 50%;
  110. width: 108rpx;
  111. height: 108rpx;
  112. position: absolute;
  113. border-radius: 8rpx;
  114. transform: translate(-50%, -50%);
  115. }
  116. >view {
  117. @include flex();
  118. width: 100%;
  119. padding: 0 30rpx;
  120. line-height: 72rpx;
  121. box-sizing: border-box;
  122. justify-content: flex-start;
  123. &.nickname {
  124. margin-bottom: 12rpx;
  125. justify-content: center;
  126. }
  127. .left {
  128. width: 300rpx;
  129. }
  130. }
  131. }
  132. .level-info {
  133. background: #FFFFFF;
  134. margin-bottom: 20rpx;
  135. .level-items {
  136. height: 0;
  137. overflow: hidden;
  138. &.open {
  139. height: 270rpx;
  140. }
  141. >view {
  142. @include flex();
  143. width: 100%;
  144. height: 90rpx;
  145. padding: 0 30rpx;
  146. box-sizing: border-box;
  147. justify-content: flex-start;
  148. border-bottom: 1rpx solid $app-base-bg;
  149. .left {
  150. width: 300rpx;
  151. }
  152. }
  153. }
  154. .level-lock {
  155. @include flex();
  156. height: 60rpx;
  157. }
  158. }
  159. .team-info {
  160. >view {
  161. @include flex();
  162. width: 100%;
  163. height: 90rpx;
  164. padding: 0 30rpx;
  165. font-size: 32rpx;
  166. background: #FFFFFF;
  167. box-sizing: border-box;
  168. justify-content: space-between;
  169. border-bottom: 1rpx solid $app-base-bg;
  170. .left {
  171. width: 300rpx;
  172. }
  173. }
  174. }
  175. }
  176. }
  177. </style>