123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- <template>
- <view class="discover_recommend">
- <scroll-view v-if="noteRecommendList.length>0" scroll-y="true" :show-scrollbar="false" class="scroll-view" :style="'height:'+swiperHeight+'px'"
- id="recommendList" @scrolltolower="onTouchmoveRecommend" @scroll="followScroll">
- <discover-details v-if="noteRecommendList.length>0" @getIsMore="getIsMore" @getComment="getComment"
- type="list" :noteRecommendList="noteRecommendList"></discover-details>
- <view class='loadingicon acea-row row-center-wrapper'>
- <text class='loading iconfont icon-jiazai' :hidden='loading==false && noteDetails'></text>{{loadTitle}}
- </view>
- </scroll-view>
- <view class="empty-boxs" v-if="isShow">
- <emptyPage title="内容不存在,可能被删除了噢~" mTop="31%" :imgSrc="urlDomain+'crmebimage/presets/noguanzhu.png'"></emptyPage>
- <view class="btn" url="/pages/discover_index/index" @click="back">返回首页</view>
- </view>
- <!-- 评论 -->
- <uni-popup type="bottom" ref="comment">
- <view
- :style="'width: '+ windowWidth +'px; background-color: #fff; border-top-left-radius: 10px; border-top-right-radius: 10px;'">
- <discoverComment v-if="showComment" @getReplyNum="getReplyNum" :noteId="noteDetails.id"
- :noteDetails="noteDetails" @close="close">
- </discoverComment>
- </view>
- </uni-popup>
- </view>
- </template>
- <script>
- import emptyPage from '@/components/emptyPage.vue'
- import discoverDetails from '@/components/discoverDetails/index.vue'
- import discoverComment from '@/components/discoverComment/index.vue'
- import {
- noteRecommendApi,
- noteDetailApi
- } from '@/api/discover.js';
- export default {
- components: {
- discoverDetails,
- discoverComment,
- emptyPage
- },
- data() {
- return {
- urlDomain: this.$Cache.get("imgHost"),
- windowWidth: 0, //获取屏幕宽度🌟💗
- swiperHeight: 0,
- noteRecommendList: [], // 发现内容推荐列表
- loaded: false,
- loading: false,
- loadTitle: '加载更多',
- where: {
- page: 1,
- limit: 10,
- noteId: '' //内容id
- },
- noteDetails: {}, //内容详情
- isShow: false, //内容是否被删掉
- showComment: false, //评论弹窗
- windowHeight: 0,
- isWidth: 0
- }
- },
- onLoad: function(options) {
- this.windowWidth = uni.getSystemInfoSync().screenWidth; //获取屏幕宽度
- this.where.noteId = options.noteId ? options.noteId : '';
- this.getNoteRecommend(); // 推荐
- this.getNoteDetail(options.noteId);
- },
- created() {
- var that = this;
- // 获取设备宽度
- uni.getSystemInfo({
- success(e) {
- that.isWidth = e.windowWidth / 6;
- that.windowHeight = e.windowHeight;
- that.swiperHeight = that.windowHeight
- that.$set(that, 'swiperHeight', that.windowHeight);
- }
- });
- },
- onReachBottom() {
- this.getNoteRecommend(); // 推荐
- },
- // 滚动监听
- onPageScroll(e) {
- // 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
- uni.$emit('scroll');
- },
- /**
- * 用户点击右上角分享
- */
- // #ifdef MP
- onShareAppMessage: function(res) {
- let data = res.target.dataset;
- return {
- title: data.title || '',
- imageUrl: data.cover || '',
- path: 'pages/discover/discover_details/index?noteId=' + data.id + '&sd=' + data.uid,
- }
- },
- // #endif
- methods: {
- /**
- * 列表滑动中用到的方法
- */
- followScroll() {
- uni.$emit('scroll');
- },
- onTouchmoveRecommend(e) {
- this.getNoteRecommend();
- },
- close() {
- uni.showTabBar();
- this.showComment = false;
- this.$refs.comment.close();
- },
- getReplyNum(n) {
- this.noteDetails.replyNum = n;
- },
- // 点击评论
- getComment(item) {
- this.showComment = false;
- this.noteDetails = item;
- uni.hideTabBar();
- this.$refs.comment.open('bottom');
- this.showComment = true;
-
- },
- //返回首页
- back() {
- uni.switchTab({
- url: '/pages/discover_index/index'
- })
- this.$util.backPageRefresh();
- },
- getIsMore(i) {
- this.noteRecommendList[i].isMore = true;
- },
- //此页面,最上面展示当前内容的详情,底下为推荐的内容列表
- // 内容详情
- getNoteDetail(noteId) {
- this.loading = true;
- noteDetailApi(noteId).then(res => {
- this.noteRecommendList.unshift(res.data)
- this.noteDetails = res.data
- this.loading = false;
- }).catch(err => {
- this.isShow = true;
- uni.showToast({
- title: err,
- icon: 'none'
- })
- this.loading = false;
- });
- },
- // 内容发现推荐列表
- getNoteRecommend: function() {
- let that = this;
- if (that.loadend) return;
- if (that.loading) return;
- that.loading = true;
- that.loadTitle = '';
- that.where.title = encodeURIComponent(this.searchValue);
- noteRecommendApi(that.where).then(res => {
- that.$set(that.where, 'page', that.where.page + 1);
- this.noteRecommendList = this.noteRecommendList.concat(res.data.list || []);
- that.loadend = that.where.page > res.data.totalPage;
- that.loading = false;
- that.loadTitle = that.loadend ? '已全部加载' : '加载更多';
- this.noteRecommendList.map(item => {
- item.isMore = false;
- })
- }).catch(err => {
- that.loading = false;
- uni.showToast({
- title: err,
- icon: 'none'
- })
- });
- },
- }
- }
- </script>
- <style lang="scss" scoped>
- .btn {
- width: 440rpx;
- text-align: center;
- padding: 15rpx 0;
- @include main_color(theme);
- @include coupons_border_color(theme);
- border-radius: 40rpx;
- margin: 44rpx auto 0;
- font-size: 32rpx;
- }
- .discover_recommend {
- background-color: #fff;
- /deep/.no-border {
- bottom: 40rpx;
- }
- }
- </style>
|