详情小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

201 lines
5.1 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. <template>
  2. <view>
  3. <!-- 头部搜索框 -->
  4. <view class="head-bar">
  5. <view class="lf-flex search" @click="$url('/pages/userList/userList?name=搜索')">
  6. <text class="lf-iconfont icon-linedesign-12 lf-font-30 lf-m-l-20"></text>
  7. <view class="lf-m-l-10 lf-font-24">搜索</view>
  8. </view>
  9. <!-- <view class="botton" @click="$url('/pages/signIn/signIn')">签到</view> -->
  10. </view>
  11. <!-- 上墙部分 -->
  12. <view class="up-the-wall">
  13. <view class="lf-row-between">
  14. <view class="lf-font-32 lf-color-black">最新上墙</view>
  15. <!-- <view class="lf-color-999" @click="$url('/pages/wallMember/wallMember')">
  16. <text class="lf-font-28">查看全部</text>
  17. <text class="lf-iconfont icon-xiangyou"></text>
  18. </view> -->
  19. </view>
  20. <scroll-view class="scroll-bar" :scroll-x="true">
  21. <view class="lf-flex">
  22. <!-- <view class="user-item" @click="$url('/pages/upTheWall/upTheWall')">
  23. <lf-image class="add-icon" src="../../static/images/add_icon.png"></lf-image>
  24. <view class="lf-m-t-12 lf-color-555 lf-font-24 lf-line-1">我要上墙</view>
  25. </view> -->
  26. <view class="user-item" v-for="(item, index) in members_wall" :key="item.id" @click="$url('/pages/my/memberDetails?id='+ item.number)">
  27. <image class="avatar" :src="item.user.avatar"></image>
  28. <view class="lf-m-t-12 lf-color-555 lf-font-24 lf-line-1">编号{{ item.number }}</view>
  29. </view>
  30. </view>
  31. </scroll-view>
  32. </view>
  33. <self-line />
  34. <!-- 推荐单身 -->
  35. <view>
  36. <view class="lf-row-between lf-p-30 lf-p-32 lf-p-b-20">
  37. <view class="lf-font-32 lf-color-black">推荐单身</view>
  38. <view class="lf-color-999" @click="$url('/pages/userList/userList?name=最新')">
  39. <text class="lf-font-28">最新</text>
  40. <text class="lf-iconfont icon-xiangyou"></text>
  41. </view>
  42. </view>
  43. <lf-user-list :list='members'></lf-user-list>
  44. </view>
  45. <!-- 加载 -->
  46. <view class="loading-more">
  47. <text :class="{'loading-more-text': loading_class}">{{ loading_text }}</text>
  48. </view>
  49. <!-- 回到顶部 -->
  50. <u-back-top :scrollTop="pageScrollTop"></u-back-top>
  51. </view>
  52. </template>
  53. <script>
  54. import lfUserList from '@/components/lf-userList/lf-userList.vue';
  55. export default {
  56. components: { lfUserList },
  57. data() {
  58. return {
  59. members_wall: [],
  60. members: [],
  61. page: 1,
  62. page_size: 10,
  63. isPage: true,
  64. loading_text: '正在加载中',
  65. loading_class: true
  66. }
  67. },
  68. onLoad(){
  69. // #ifdef H5
  70. this.href_str = JSON.stringify(location.href);
  71. let options = this.strToObj();
  72. console.log("options", options)
  73. if(options.code){
  74. this.login(options.code)
  75. }else if(this.$isRight(uni.getStorageSync('user_info'))){
  76. this.getMembersWall();
  77. this.getMembers();
  78. }
  79. // #endif
  80. },
  81. methods: {
  82. strToObj(){
  83. let val = this.href_str;
  84. let obj = {};
  85. if(!val) return obj;
  86. if(val.indexOf('?') < 0) return obj;
  87. let indexA = val.indexOf('?') + 1;
  88. let str = val.substr(indexA);
  89. str = str.substr(0, str.length - 1);
  90. let indexB = str.indexOf('#');
  91. if(indexB >= 0){
  92. str = str.substr(0, indexB);
  93. }
  94. let arr = str.split('&');
  95. arr.map(item => {
  96. let a = item.split('=');
  97. obj[a[0]] = a[1];
  98. });
  99. return obj;
  100. },
  101. login(code){
  102. this.$http(this.API.API_OFFICIAL_LOGIN, {
  103. code: code,
  104. scopes: 'snsapi_userinfo'
  105. }).then(res => {
  106. console.log(res)
  107. uni.setStorageSync('user_info', res?.data?.user);
  108. this.getMembersWall();
  109. this.getMembers();
  110. }).catch(err => {
  111. console.log(err)
  112. })
  113. },
  114. getMembers(){
  115. this.$http(this.API.API_MEMBERS_ALL, {
  116. page: this.page,
  117. pagesize: this.page_size
  118. }).then(res => {
  119. let members = res.data.members.data || [];
  120. let isPage = this.$isRight(res.data.members.next_page_url);
  121. this.isPage = isPage;
  122. if(!isPage){
  123. this.loading_class = false;
  124. this.loading_text = '已加载全部数据~';
  125. }
  126. this.members = members;
  127. })
  128. },
  129. getMembersWall(){
  130. this.$http(this.API.API_MEMBERS_WALL, {
  131. page: 1,
  132. pagesize: 12
  133. }).then(res => {
  134. this.members_wall = res.data.members_wall.data || [];
  135. })
  136. }
  137. }
  138. }
  139. </script>
  140. <style lang="scss" scoped>
  141. .head-bar{
  142. width: 750rpx;
  143. height: max-content;
  144. padding: 21rpx 32rpx;
  145. display: flex;
  146. justify-content: space-between;
  147. box-sizing: border-box;
  148. .search{
  149. // width: 530rpx;
  150. width: 100%;
  151. height: 62rpx;
  152. background: #F7F7F7;
  153. border-radius: 32rpx;
  154. color: #999999;
  155. }
  156. .botton{
  157. width: 140rpx;
  158. height: 62rpx;
  159. background: #F7F7F7;
  160. border-radius: 32rpx;
  161. text-align: center;
  162. line-height: 62rpx;
  163. color: #222222;
  164. }
  165. }
  166. .up-the-wall{
  167. width: 750rpx;
  168. height: max-content;
  169. padding: 21rpx 32rpx 0;
  170. .scroll-bar{
  171. width: 100%;
  172. height: 164rpx;
  173. padding: 30rpx 0;
  174. .user-item{
  175. width: 136rpx;
  176. margin-right: 40rpx;
  177. display: flex;
  178. justify-content: center;
  179. flex-wrap: wrap;
  180. &:last-child{
  181. margin-right: 0rpx;
  182. }
  183. }
  184. .add-icon{
  185. width: 110rpx;
  186. height: 110rpx;
  187. border-radius: 50%;
  188. }
  189. .avatar{
  190. width: 110rpx;
  191. height: 110rpx;
  192. border: 5rpx solid #E21196;
  193. border-radius: 50%;
  194. box-sizing: border-box;
  195. }
  196. }
  197. }
  198. </style>