海南旅游项目 前端仓库
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.

250 lines
7.0 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
5 years ago
5 years ago
5 years ago
  1. <template>
  2. <view>
  3. <view class="flex-direction justify-between align-center text-center lf-p-t-30 lf-p-b-30" style="height: 340rpx;position: relative;">
  4. <view>
  5. <image :src="userInfo.avatar" mode="aspectFill" style="width: 200rpx;height: 200rpx;border-radius: 50%;border: 2rpx solid #FFFFFF;" @click="lookImg('')"></image>
  6. </view>
  7. <view class="lf-font-36 align-center text-center text-white lf-m-t-30">
  8. {{userInfo.nickname}}
  9. </view>
  10. <image class="bg-img" :src="userInfo.avatar" mode="aspectFill" style="filter: blur(3px);"></image>
  11. </view>
  12. <view class="list">
  13. <view class="lf-row-between list-item" hover-class="lf-opacity" @click="$url('/pages/order/order')">
  14. <view class="lf-row-center">
  15. <image class="icon-img" src="../../static/center/order.png"></image>
  16. <text class="lf-text-vertical lf-m-l-20 lf-font-28 lf-color-black">我的订单</text>
  17. </view>
  18. <view>
  19. <text class="lf-iconfont lf-icon-xiangyou lf-text-vertical"></text>
  20. </view>
  21. </view>
  22. <view class="lf-row-between list-item" hover-class="lf-opacity" @click="$url('/pages/message/index')">
  23. <view class="lf-row-center">
  24. <image class="icon-img" src="../../static/center/message.png"></image>
  25. <text class="lf-text-vertical lf-m-l-16 lf-font-28 lf-color-black">消息中心</text>
  26. </view>
  27. <view>
  28. <text class="lf-iconfont lf-icon-xiangyou lf-text-vertical"></text>
  29. </view>
  30. </view>
  31. <view class="lf-row-between list-item" hover-class="lf-opacity">
  32. <view class="lf-row-center">
  33. <image class="icon-img" src="../../static/center/feedback.png"></image>
  34. <text class="lf-text-vertical lf-m-l-16 lf-font-28 lf-color-black">意见反馈</text>
  35. </view>
  36. <view>
  37. <text class="lf-iconfont lf-icon-xiangyou lf-text-vertical"></text>
  38. </view>
  39. <button class="feedback-btn" open-type="feedback"></button>
  40. </view>
  41. <view class="lf-row-between list-item" hover-class="lf-opacity" @click="$url('/pages/collect/index')">
  42. <view class="lf-row-center">
  43. <image class="icon-img" src="../../static/center/collect.png"></image>
  44. <text class="lf-text-vertical lf-m-l-16 lf-font-28 lf-color-black">我的收藏</text>
  45. </view>
  46. <view>
  47. <text class="lf-iconfont lf-icon-xiangyou lf-text-vertical"></text>
  48. </view>
  49. </view>
  50. <view class="lf-row-between list-item" hover-class="lf-opacity" @click="$url('/pages/about/index')">
  51. <view class="lf-row-center">
  52. <image class="icon-img" src="../../static/center/about.png"></image>
  53. <text class="lf-text-vertical lf-m-l-16 lf-font-28 lf-color-black">关于我们</text>
  54. </view>
  55. <view>
  56. <text class="lf-iconfont lf-icon-xiangyou lf-text-vertical"></text>
  57. </view>
  58. </view>
  59. <view class="lf-row-between list-item" hover-class="lf-opacity">
  60. <view class="lf-row-center">
  61. <image class="icon-img" src="../../static/center/service.png"></image>
  62. <text class="lf-text-vertical lf-m-l-16 lf-font-28 lf-color-black">联系客服</text>
  63. </view>
  64. <view>
  65. <text class="lf-iconfont lf-icon-xiangyou lf-text-vertical"></text>
  66. </view>
  67. <button class="feedback-btn" open-type="contact"></button>
  68. </view>
  69. </view>
  70. <view class="lf-p-t-35" style="background-color: #F6F6F6;">
  71. <!-- <view class="lf-p-t-40 lf-p-b-20 text-center details-title">
  72. <view class="lf-font-32 details-text flex justify-between align-center text-center" style="color: #222;position: relative;left: 270rpx;">
  73. <view class="rhombus lf-m-l-30"></view>
  74. <view>为你推荐</view>
  75. <view class="rhombus lf-m-r-30"></view>
  76. </view>
  77. </view> -->
  78. <lf-title-line title="为你推荐"></lf-title-line>
  79. <lf-waterfall :list="list"></lf-waterfall>
  80. <view class="loading-more">
  81. <text :class="{'loading-more-text': loading_class}" v-if="list.length">{{ loading_text }}</text>
  82. <lf-nocontent v-else></lf-nocontent>
  83. </view>
  84. </view>
  85. <!-- 回到顶部 -->
  86. <u-back-top :scroll-top="pageScrollTop" :custom-style="{background: 'rgba(51, 51 51, 0.3)'}"></u-back-top>
  87. </view>
  88. </template>
  89. <script>
  90. import lfTitleLine from '@/components/lf-title-line/lf-title-line.vue';
  91. export default {
  92. components: {
  93. lfTitleLine
  94. },
  95. data() {
  96. return {
  97. loading_class: false,
  98. loading_text: '已加载全部数据~',
  99. list: [],
  100. page: 1,
  101. isPage: false,
  102. showLogin: true,
  103. userInfo: {
  104. avatar: '',
  105. nickname:'',
  106. id: ''
  107. }
  108. }
  109. },
  110. computed: {
  111. hidePhone(){
  112. return function(tel){
  113. if(tel.length == 11){
  114. var reg = /^(\d{3})\d{4}(\d{4})$/;
  115. var new_phone = tel.replace(reg, "$1****$2");
  116. return new_phone;
  117. }else{
  118. return tel;
  119. }
  120. }
  121. },
  122. isRight(){
  123. return function(val){
  124. return this.$shared.isRight(val);
  125. }
  126. }
  127. },
  128. methods: {
  129. // 检查当前用户登录状态
  130. verifyUserInfo(){
  131. let userInfo = uni.getStorageSync('userinfo') || {};
  132. this.userInfo = uni.getStorageSync('userinfo') || {}
  133. if(!userInfo.id || !userInfo.nickname || !userInfo.avatar){
  134. if(this.showLogin){
  135. this.showLogin = false;
  136. this.$url('/pages/login/index?type=userinfo');
  137. }else{
  138. this.showLogin = true;
  139. this.$url('/pages/index/index', {type: 'switch'});
  140. }
  141. }
  142. },
  143. getRecommond() {
  144. this.$http(this.API.API_RECOMMOND,{page: this.page}).then(res => {
  145. let isPage = res.data.next_page_url == null?false:true;
  146. this.isPage = isPage;
  147. if(!isPage){
  148. this.loadingClass = false;
  149. this.loadingText = '没有更多数据啦~';
  150. }
  151. if(this.page == 1){
  152. this.list = res.data.data;
  153. }else{
  154. this.list.push(...res.data.data);
  155. }
  156. uni.stopPullDownRefresh();
  157. console.log(this.list)
  158. }).catch(err => {
  159. })
  160. },
  161. // 预览图片
  162. lookImg(img){
  163. this.$u.throttle(() => {
  164. uni.previewImage({
  165. urls: [img]
  166. })
  167. }, 200);
  168. },
  169. },
  170. onReachBottom(){
  171. if(this.isPage){
  172. this.page = this.page + 1;
  173. this.getRecommond();
  174. }
  175. },
  176. onShow() {
  177. this.verifyUserInfo()
  178. this.getRecommond()
  179. }
  180. }
  181. </script>
  182. <style lang="scss">
  183. .rhombus{
  184. width: 16rpx;
  185. height: 16rpx;
  186. transform: rotateZ(45deg);
  187. background: #222;
  188. }
  189. .details-title {
  190. position: relative;
  191. &::after {
  192. position: absolute;
  193. left: 144rpx;
  194. top: 60rpx;
  195. content: '';
  196. width: 69%;
  197. height: 1rpx;
  198. border-bottom: 1rpx solid rgba(0, 0, 0, 0.08)
  199. }
  200. .details-text {
  201. position: relative;
  202. // display: inline-block;
  203. width: 264rpx;
  204. background-color: #f5f5f9;
  205. z-index: 9;
  206. }
  207. }
  208. .list{
  209. margin-top: 20rpx;
  210. padding: 0 32rpx;
  211. background-color: #FFFFFF;
  212. width: 100%;
  213. height: auto;
  214. }
  215. .list-item{
  216. border-bottom: 1rpx solid #EEEEEE;
  217. height: 110rpx;
  218. box-sizing: border-box;
  219. position: relative;
  220. .icon-img{
  221. width: 50rpx;
  222. height: 50rpx;
  223. }
  224. .feedback-btn{
  225. position: absolute;
  226. width: 100%;
  227. height: 100%;
  228. z-index: 1;
  229. background: transparent;
  230. }
  231. &:last-child{
  232. border-bottom: none;
  233. }
  234. }
  235. .bg-img{
  236. width: 100%;
  237. height: 100%;
  238. position: absolute;
  239. top: 0;
  240. left: 0;
  241. z-index: -1;
  242. }
  243. </style>