ZZ 1 月之前
父節點
當前提交
1bc48f952f

+ 7 - 0
mer_uniapp/api/fastMail.js

@@ -83,3 +83,10 @@ export function getExpressSpce() {
 export function getExpressTip() {
 	return request.get(`express/tip`);
 }
+
+/**
+ * 获取小费列表
+ */
+export function getExpressInfo() {
+	return request.get(`express/info`);
+}

+ 1 - 1
mer_uniapp/components/WaterfallsFlow/WaterfallsFlow.vue

@@ -1,5 +1,5 @@
 <template>
-	<view>
+	<view class="flex-1">
 		<!--    left    -->
 		<view>
 			<view id="left" v-if="allList.length">

+ 941 - 0
mer_uniapp/components/discoverDetails/index-bak.vue

@@ -0,0 +1,941 @@
+<template>
+	<view class="tab-conts" :data-theme="theme">
+		<!-- 0-待审核,1-审核通过,2-审核失败,3-平台关闭 -->
+		<view v-if="noteDetails.auditStatus == 0 || noteDetails.auditStatus == 2 || noteDetails.auditStatus == 3"
+			class="approval_status">
+			<view class="status_count" :class="noteDetails.auditStatus == 0 ? 'status1' : 'status0'">
+				<view class="status_title">
+					<text class="iconfont"
+						:class="(noteDetails.auditStatus == 2 || noteDetails.auditStatus == 3) ? 'icon-tishi' : 'icon-shijian'"></text>
+					<text v-if="noteDetails.auditStatus == 2" class="title">审核未通过,内容仅自己可见</text>
+					<text v-if="noteDetails.auditStatus == 3" class="title">平台关闭,内容仅自己可见</text>
+					<text v-if="noteDetails.auditStatus == 0" class="title">正在审核,内容仅自己可见</text>
+				</view>
+				<view v-if="noteDetails.auditStatus == 2 || noteDetails.auditStatus == 3" class="status_info">
+					{{noteDetails.refusal}}
+				</view>
+				<view v-if="noteDetails.auditStatus == 0" class="status_info">
+					发布的内容审核通过后,将展示在首页!
+				</view>
+			</view>
+		</view>
+		<view class="follow_count"
+			:class="(type=='list' || type =='follow' || !noteDetails.platReplySwitch)?'bodyNo':''">
+			<view class="list_count">
+				<view class="imageBox">
+					<swiper v-if="noteDetails.type ===1 && noteDetails.image && noteDetails.image.split(',').length>1"
+						:indicator-dots="indicatorDots" indicator-active-color="#e93323" :circular="circular"
+						:interval="interval" :duration="duration" :style="{height:imageH + 'px'}">
+						<block v-for="(item,index) in noteDetails.image.split(',')" :key='index'>
+							<swiper-item class="cover">
+								<!-- <image class="w-full" show-menu-by-longpress :src="item"
+									:mode="isAuto ?  'aspectFill' : 'heightFix'" :style="{height:imageH + 'px'}"
+									@tap="proview(item)"></image> -->
+								<easy-loadimage mode="heightFix" :image-src="item"
+									:height="imageH*2+'rpx'"></easy-loadimage>
+							</swiper-item>
+						</block>
+					</swiper>
+					<view
+						v-if="noteDetails.type ===2 || (noteDetails.type ===1 &&noteDetails.image && noteDetails.image.split(',').length===1)">
+						<view class="cover" @click="goDetail(noteDetails)">
+							<easy-loadimage mode="heightFix" :image-src="noteDetails.cover"></easy-loadimage>
+							<view v-if="noteDetails.type ===2" class="circle">
+								<text class="iconfont icon-24gf-play"></text>
+							</view>
+						</view>
+					</view>
+				</view>
+				<!-- 查看TA提到的宝贝 -->
+				<view class="pro_describle">
+					<view class="product_info">
+						<view class="noteTitle">{{noteDetails.title}}</view>
+						<view>
+							<view class="text"
+								v-if="noteDetails.isMore || (noteDetails.content && noteDetails.content.length<=70)">
+								<text class="info">{{noteDetails.content}}</text>
+							</view>
+							<view class="text mt10" v-else>
+								<text v-show="noteDetails.content"
+									class="info">{{noteDetails.content && noteDetails.content.slice(0,70)}}...</text>
+								<text class="more" v-if="noteDetails.content && noteDetails.content.length>70"
+									@click.stop="moreTap(noteDetails,i)">
+									展开</text>
+							</view>
+						</view>
+					</view>
+					<view class="topicList acea-row"
+						v-if="noteDetails.topicList && noteDetails.topicList.length>0">
+						<view style="line-height: 1.2;" @click="goTopic(item.id)" v-for="(item, j) in noteDetails.topicList" :key="j">
+							<text class="icon">#</text><text class="text">{{item.name}}</text>
+						</view>
+					</view>
+					<view v-if="type==='detail'" class="create_time">{{noteDetails.createTime}}</view>
+					<scroll-view v-if="noteDetails.productList && noteDetails.productList.length" scroll-x="true" class="white-nowrap vertical-middle w-full mt-22 mb-12"
+						show-scrollbar="false">
+						<mentioned :list="noteDetails.productList" @close="popup" class=""></mentioned>
+					</scroll-view>
+				</view>
+			</view>
+		</view>
+
+		<view class="footer_bar acea-row fixed release_bar_detail" style="bottom: 0;">
+			<view class="acea-row items-center">
+				<view class="author mr-16" @click="goUser(noteDetails)">
+					<image v-if="noteDetails.authorLevelIcon" class="level_icon" :src="noteDetails.authorLevelIcon"
+						alt="">
+						<image class="picture"
+							:src="noteDetails.authorAvatar || urlDomain+'crmebimage/presets/morenT.png'">
+						</image>
+						<view class="name acea-row">
+							<text>{{noteDetails.authorName}}</text>
+						</view>
+				</view>
+				<!-- 1关注 -->
+				<view v-if="noteDetails.authorId!==uid && type !=='follow'" @click.stop="followAuthor(noteDetails)">
+					<view v-if="!noteDetails.isConcerned" class="author-follow flex-around-center font-color"><text
+							class="iconfont icon-shangpinshuliang-jia"></text>
+						<view class="line-heightOne">关注</view>
+					</view>
+					<view v-else class="author-focused flex-around-center">
+						<view class="line-heightOne">已关注</view>
+					</view>
+				</view>
+				<!-- 管理 -->
+				<view class="manageCount" v-if="noteDetails.authorId==uid && type==='detail'">
+					<view class="follow_btn author-focused flex-around-center" @click.stop="handleManage">
+						<view class="line-heightOne">管理</view>
+					</view>
+				</view>
+			</view>
+			<!-- 末尾处分享、关注、评论 -->
+			<view class="foot_bar">
+				<view class="item">
+					<view class="item_count" @click.stop="likeToggle(noteDetails)">
+						<text class="iconfont"
+							:class="noteDetails.userIsLike ? 'icon-shoucang1' : 'icon-dianzan'"></text>
+						<text>{{noteDetails.likeNum > 0 ? noteDetails.likeNum < 10000 ? noteDetails.likeNum : (noteDetails.likeNum / 10000).toFixed(2) : '点赞'}}</text>
+					</view>
+					<!--  -->
+					<view v-if="noteDetails.platReplySwitch" class="item_count" @click="openCommon(noteDetails)">
+						<text class="iconfont icon-pinglun"></text>
+						<text>{{noteDetails.replyNum > 0 ? noteDetails.replyNum : '评论'}}</text>
+					</view>
+				</view>
+				<!-- #ifdef MP -->
+				<button v-if="noteDetails.auditStatus == 1" class="time iconfont icon-fenxiang ml-20" open-type="share"
+					hover-class='none' :data-id="noteDetails.id" :data-cover="noteDetails.cover" :data-uid="uid"
+					:data-title="noteDetails.title" @click="shareFriend(noteDetails)"></button>
+				<!-- #endif -->
+				<!-- #ifdef APP -->
+				<button v-if="noteDetails.auditStatus == 1" @click="appShare('WXSceneSession',noteDetails)"
+					class="time iconfont icon-fenxiang ml-20" hover-class='none'></button>
+				<!-- #endif -->
+				<!-- #ifdef H5 -->
+				<button v-if="noteDetails.auditStatus == 1  && isWeixin" @click="appShare('WXSceneSession',noteDetails)"
+					class="time iconfont icon-fenxiang ml-20" hover-class='none'></button>
+				<button></button>
+				<!-- #endif -->
+			</view>
+
+		</view>
+
+		<!-- 分享按钮 -->
+		<image v-if="H5ShareBox" class="shareImg" :src="urlDomain+'crmebimage/presets/share-info.png'"
+			@click="H5ShareBox = false">
+		</image>
+
+		<!-- 商品列表 -->
+		<uni-popup type="bottom" ref="goods">
+			<mentioned v-if="popupShow" :list="proList" @close="popup" class=""></mentioned>
+		</uni-popup>
+
+		<!-- 评论弹窗 -->
+		<uni-popup type="bottom" ref="comment">
+			<view
+				:style="'width: 100%; background-color: #fff; border-top-left-radius: 10px; border-top-right-radius: 10px;'">
+				<discoverComment v-if="showComment" @getReplyNum="getReplyNum" :noteId="noteDetails.id"
+					fromTo="popupView" :noteDetails="noteDetails" @close="close" :isShowCommentView="isShowCommentView">
+				</discoverComment>
+			</view>
+		</uni-popup>
+
+		<!-- 管理弹窗 -->
+		<uni-popup type="bottom" ref="manageRef">
+			<view class="manage">
+				<popup-header title="内容管理" @close="closeManage"></popup-header>
+				<navigator hover-class="none" :url="'/pages/discover/discover_release/index?noteId='+noteDetails.id"
+					class="items">
+					<text>编辑</text>
+				</navigator>
+				<view class="items" @click.stop="deleteTopic(noteDetails)">
+					<text>删除</text>
+				</view>
+				<view disabled="true" class="items" @click.stop="replySwitch(noteDetails)">
+					<text>{{noteDetails.replyStatus ==1 ? '禁止评论' : '开启评论'}}</text>
+				</view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+	import discoverComment from '@/components/discoverComment/index.vue';
+	import {
+		mapGetters
+	} from "vuex";
+	import {
+		toLogin
+	} from '@/libs/login.js';
+	import {
+		discoverNoteLike
+	} from '@/libs/follow.js';
+	import {
+		noteDelApi,
+		noteReplySwitchApi
+	} from '@/api/discover.js';
+	import {
+		discoverFollowAuthor
+	} from '@/libs/follow.js';
+	import {
+		Debounce
+	} from '@/utils/validate.js'
+	import mentioned from '@/components/mentioned.vue';
+	import easyLoadimage from '@/components/base/easy-loadimage.vue';
+	import popupHeader from '@/components/popupHeader.vue'
+	import animationType from '@/utils/animationType.js'
+	import {
+		HTTP_H5_URL
+	} from '@/config/app.js';
+	let app = getApp();
+	export default {
+		computed: mapGetters(['globalData', 'isLogin', 'userInfo', 'uid', 'bottomNavigationIsCustom']),
+		components: {
+			discoverComment,
+			easyLoadimage,
+			mentioned,
+			popupHeader
+		},
+		data() {
+			return {
+				urlDomain: this.$Cache.get("imgHost"),
+				H5ShareBox: false,
+				isMore: false,
+				theme: app.globalData.theme,
+				popupShow: false, //商品弹窗
+				showManage: false, //管理展示
+				indicatorDots: true,
+				circular: true,
+				autoplay: true,
+				interval: 5000,
+				duration: 500,
+				currents: "1",
+				controls: true,
+				isPlay: true,
+				videoContext: '',
+				proList: [], //商品列表
+				showComment: false, //评论弹窗
+				imageList: [], //轮播图
+				isPay: false, //是否买过。true买过
+				isWeixin: false, //是否是微信
+				noteIndex: 0, //当前的索引
+				noteDetails: this.noteRecommendList,
+				windowWidth: 0, //获取屏幕宽度🌟💗
+			}
+		},
+		props: {
+			/* 内容详情 */
+			noteRecommendList: {
+				type: Object,
+				default: function() {
+					return {};
+				},
+			},
+			/* 跳入组件类型,关注 follow 推荐页list,详情detail */
+			type: {
+				type: String,
+				default: function() {
+					return '';
+				},
+			},
+			imageH: {
+				type: Number,
+				default: function() {
+					return 0;
+				},
+			},
+			// 评论列表是否出现在详情视图内,出现就展示弹窗
+			isShowCommentView: {
+				type: Boolean,
+				default: function() {
+					return false;
+				},
+			}
+		},
+		watch: {
+			noteRecommendList: {
+				immediate: true,
+				deep: true,
+				handler(nVal, oVal) {
+					this.noteDetails = nVal
+					if (this.noteDetails.productList && this.noteDetails.productList.length !== 0) {
+						this.noteDetails.isPay = this.noteDetails.productList.some(function(items) {
+							if (items.isPay == 1) {
+								return true;
+							}
+						})
+					}
+				}
+			}
+		},
+		onLoad() {
+			this.windowWidth = uni.getSystemInfoSync().screenWidth; //获取屏幕宽度
+			this.isWeixin = this.$wechat.isWeixin()
+			this.computedHeight()
+		},
+		// 滚动监听
+		onPageScroll(e) {
+			// 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
+			uni.$emit('scroll');
+		},
+		methods: {
+			//关闭操作管理
+			closeManage() {
+				this.$refs.manageRef.close();
+			},
+			//操作管理
+			handleManage() {
+				this.$refs.manageRef.open('bottom');
+			},
+			appShare(scene, noteDetails) {
+				let that = this
+				let data = noteDetails;
+				// #ifdef APP-PLUS
+				uni.showLoading({
+					title: '加载中',
+					mask: true
+				});
+				let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
+				let curRoute = routes[routes.length - 1].$page.fullPath // 获取当前页面路由,也就是最后一个打开的页面路由
+				uni.share({
+					provider: "weixin",
+					scene: scene,
+					type: 0,
+					href: `${HTTP_H5_URL}${curRoute}&sd=${that.uid}&id=${data.id}`,
+					title: data.title || '',
+					summary: data.content || '',
+					imageUrl: data.cover || '',
+					success: function(res) {
+						uni.showToast({
+							title: '分享成功',
+							icon: 'success'
+						})
+						uni.hideLoading();
+					},
+					fail: function(err) {
+						uni.hideLoading();
+						uni.showToast({
+							title: '分享失败',
+							icon: 'none',
+							duration: 2000
+						})
+					},
+				});
+				uni.hideLoading();
+				// #endif
+				// #ifdef H5
+				if (that.$wechat.isWeixin()) {
+					uni.showLoading({
+						title: '加载中',
+						mask: true
+					});
+					let configAppMessage = {
+						desc: data.content || '',
+						title: data.title || '',
+						link: `/pages/goods/goods_details/index?id=${that.noteDetails.id}&mt=0&sd=${that.uid}`,
+						imgUrl: data.cover || ''
+					};
+					uni.hideLoading();
+					that.$wechat.wechatEvevt(["updateAppMessageShareData", "updateTimelineShareData"],
+						configAppMessage);
+				} else {
+					this.H5ShareBox = true;
+				}
+				// #endif
+			},
+			//分享信息
+			shareFriend(item) {
+				this.noteDetails = item
+			},
+			//修改完评论之后的数量
+			getReplyNum(n) {
+				//this.noteRecommendListNew[this.noteIndex].replyNum = n;
+			},
+			// 关注作者
+			followAuthor: Debounce(function(noteDetails) {
+				if (this.isLogin) {
+					discoverFollowAuthor(noteDetails.authorId).then(() => {
+						this.$set(noteDetails, 'isConcerned', !noteDetails.isConcerned);
+					});
+				} else {
+					toLogin();
+				}
+			}),
+			moreTap(noteDetails, i) {
+				this.$set(noteDetails, 'isMore', true);
+			},
+			popup() {
+				this.$refs.goods.close();
+				this.popupShow = false;
+			},
+			/*查看提到的宝贝*/
+			openMore(item) {
+				//此处为了处理小程序的兼容性,在父组件中去调取子组件的内容
+				if (this.type === 'follow') {
+					this.$emit('getPro', item);
+				} else {
+					this.proList = item.productList;
+					this.$refs.goods.open('bottom');
+					this.popupShow = true;
+				}
+			},
+			//禁止评论
+			replySwitch(noteDetails) {
+				if (!noteDetails.platReplySwitch && noteDetails.replyStatus === 3) {
+					this.$util.Tips({
+						title: '平台设置不可评论'
+					});
+				} else {
+					noteReplySwitchApi(noteDetails.id).then(res => {
+						this.$emit('onChangeReplyStatus', noteDetails.replyStatus)
+					}).catch(err => {
+						uni.showToast({
+							title: err,
+							icon: 'none'
+						})
+					});
+				}
+			},
+			// 去个人主人
+			goUser(noteDetails) {
+				// #ifdef MP || H5
+				uni.navigateTo({
+					url: `/pages/discover/discover_user/index?id=${noteDetails.authorId}`
+				})
+				// #endif  
+				// #ifdef APP-PLUS
+				uni.navigateTo({
+					animationType: animationType.type,
+					animationDuration: animationType.duration,
+					url: `/pages/discover/discover_user/index?id=${noteDetails.authorId}`
+				})
+				// #endif
+			},
+			// 删除内容
+			deleteTopic(noteDetails) {
+				let that = this;
+				uni.showModal({
+					content: '确定要删除该内容么?',
+					success: function(res) {
+						if (res.confirm) {
+							noteDelApi(noteDetails.id).then(res => {
+								that.$util.Tips({
+									title: '删除成功'
+								});
+								setTimeout(function() {
+									uni.redirectTo({
+										url: '/pages/discover/discover_user/index'
+									})
+								}, 1000);
+							}).catch(err => {
+								uni.showToast({
+									title: err,
+									icon: 'none'
+								})
+							});
+						} else if (res.cancel) {
+							console.log('用户点击取消');
+						}
+					}
+				});
+
+			},
+			//点赞
+			likeToggle: Debounce(function(item) {
+				if (this.isLogin) {
+					discoverNoteLike(item.id).then(() => {
+						this.$set(item, 'userIsLike', !item.userIsLike);
+						if (!item.userIsLike) {
+							item.likeNum--;
+							item.likeNum = item.likeNum == 0 ? 0 : item.likeNum
+						} else {
+							item.likeNum++;
+						}
+					});
+				} else {
+					toLogin();
+				}
+			}),
+			close() {
+				this.$refs.comment.close('bottom');
+				this.showComment = false;
+			},
+			//打开评论弹窗
+			openCommon(item) {
+				if (!this.isLogin) {
+					toLogin();
+				} else {
+					//如果评论列表展示在视图中,就展示评论输入框
+					//如果没在试图中,就展示评论弹窗
+					if (this.isShowCommentView) {
+						this.$emit('getComment', item);
+					} else {
+						uni.hideTabBar();
+						this.$refs.comment.open('bottom');
+						this.showComment = true
+
+					}
+				}
+			},
+			goTopic(id) {
+				// #ifdef MP || H5
+				uni.navigateTo({
+					url: `/pages/discover/discover_note_topic/index?topicId=${id}`
+				})
+				// #endif  
+				// #ifdef APP-PLUS
+				uni.navigateTo({
+					animationType: animationType.type,
+					animationDuration: animationType.duration,
+					url: `/pages/discover/discover_note_topic/index?topicId=${id}`
+				})
+				// #endif
+			},
+			goDetail(noteDetails) {
+				if (noteDetails.type === 2) {
+					uni.navigateTo({
+						//#ifdef APP
+						url: '/pages/discover/discover_video/appVideo/index?noteId=' + noteDetails.id+`&sd=${this.uid}`,
+						//#endif
+						//#ifndef APP
+						url: '/pages/discover/discover_video/routineVideo/index?noteId=' + noteDetails.id+`&sd=${this.uid}`,
+						//#endif
+
+					});
+				}
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.author-follow{
+		background: none !important;
+		@include coupons_border_color(theme);
+	}
+	.footer_bar {
+		background-color: #fff;
+		flex-shrink: 0;
+		width: 100%;
+		position: fixed; // input 所在盒子设置绝对定位
+		left: 0;
+		z-index: 9;
+		display: flex;
+		bottom: constant(safe-area-inset-bottom); ///兼容 IOS<11.2/
+		bottom: env(safe-area-inset-bottom); ///兼容 IOS>11.2/
+		align-items: center;
+		justify-content: space-between;
+		padding: 0 24rpx;
+		border-top: 1px solid #F5F5F5;
+	}
+
+	.release_bar_detail {
+		height: calc(90rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
+		height: calc(90rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
+		padding-bottom: constant(safe-area-inset-bottom); ///兼容 IOS<11.2/
+		padding-bottom: env(safe-area-inset-bottom); ///兼容 IOS>11.2/
+		background-color: #fff;
+	}
+
+	.author {
+		display: flex;
+		align-items: center;
+		position: relative;
+
+		.level_icon {
+			position: absolute;
+			width: 20rpx;
+			height: 20rpx;
+			margin: 4rpx 0 0 -4rpx;
+			border: none;
+			z-index: 1;
+			bottom: 2rpx;
+			left: 50rpx;
+		}
+
+		.picture,
+		uni-image {
+			width: 60rpx;
+			height: 60rpx;
+			border-radius: 100%;
+		}
+
+		.name {
+			margin-left: 20rpx;
+			color: #282828;
+			font-size: 32rpx;
+			font-weight: bold;
+			align-items: center;
+		}
+	}
+
+
+	/deep/.uni-swiper-dots-horizontal {
+		bottom: 40rpx !important;
+	}
+
+	.shareImg {
+		z-index: 1000;
+		position: fixed;
+		left: 0;
+		top: 0;
+		width: 100%;
+		height: 100%;
+	}
+
+	.isPay {
+		padding: 3rpx 5rpx;
+		@include main_color(theme);
+		@include coupons_border_color(theme);
+		font-size: 20rpx;
+		border-radius: 3px 3px 3px 3px;
+	}
+
+	.more {
+		font-weight: 600;
+		margin-left: 6rpx;
+	}
+
+	.ml24 {
+		margin-left: 24rpx;
+	}
+
+	.follow_btn {
+		color: #282828 !important;
+		border: 1px solid #282828 !important;
+	}
+
+	.approval_status {
+		padding: 24rpx 24rpx 0 24rpx;
+
+		.status_count {
+			padding: 26rpx 30rpx 20rpx;
+			border-radius: 10rpx;
+
+			.title {
+				margin-left: 10rpx;
+				font-size: 28rpx;
+				font-weight: bold;
+			}
+
+			&.status0 {
+				background: #FDF3F2;
+
+				.title {
+					color: #E93323;
+				}
+			}
+
+			&.status1 {
+				background: #FFF4EB;
+
+				.title {
+					color: #FC8327;
+				}
+			}
+
+			.iconfont {
+				font-size: 30rpx;
+			}
+
+			.icon-shijian {
+				color: #FC8327;
+			}
+
+			.icon-tishi {
+				color: #E93323;
+			}
+
+			.status_info {
+				font-size: 22rpx;
+				color: #666666;
+				margin: 10rpx 0 0 36rpx;
+			}
+		}
+	}
+
+	.createTime {
+		font-size: 24rpx;
+		font-family: PingFang SC-Regular, PingFang SC;
+		font-weight: 400;
+		color: #999999;
+	}
+
+	.tab-conts {
+		// /deep/.container {
+		// 	padding-bottom: calc(100rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
+		// 	padding-bottom: calc(100rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
+		// }
+	}
+
+	.bodyNo {
+		border: none !important;
+	}
+
+	.foot_bar {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+
+		.item {
+			display: flex;
+			align-items: center;
+			color: #282828;
+
+			&.icon-fenxiang {
+				font-size: 46rpx;
+			}
+		}
+
+		.item_count {
+			font-size: 26rpx;
+			display: flex;
+			align-items: center;
+			margin-left: 30rpx;
+
+			&:first-child {
+				margin-left: 0;
+			}
+
+			.iconfont {
+				font-size: 40rpx;
+				margin-right: 5rpx;
+			}
+
+			.icon-shoucang1 {
+				@include main_color(theme);
+			}
+		}
+	}
+
+	.create_time {
+		color: #909399;
+		font-size: 22rpx;
+		margin-top: 28rpx;
+	}
+
+	.pro_describle {
+		overflow-x: hidden;
+
+		.product_info {
+			// line-height: 45rpx;
+			margin-top: 30rpx;
+
+			.noteTitle {
+				font-size: 30rpx;
+				font-family: PingFang SC-Medium, PingFang SC;
+				font-weight: 700;
+				color: #282828;
+				margin-bottom: 14rpx;
+			}
+
+			.text {
+				font-size: 28rpx;
+				color: #282828;
+				text-align: justify;
+				text-justify: newspaper;
+				word-break: break-all;
+			}
+
+			.unfold_btn {
+				margin-left: 30rpx;
+				font-size: 30rpx;
+				color: #282828;
+				font-weight: bold;
+			}
+		}
+
+		.topicList {
+            margin-right: -20rpx;
+			>view {
+				display: flex;
+				align-items: center;
+				border-radius: 30rpx;
+				margin-right: 20rpx;
+				// line-height: 62rpx;
+				// height: 62rpx;
+			
+				@include main_color(theme);
+
+				.text {
+					font-size: 28rpx;
+				}
+
+				.icon {
+					font-size: 35rpx;
+				}
+			}
+		}
+	}
+
+	.imageBox {
+		width: 702rpx;
+		// height: 702rpx;
+		position: relative;
+
+		swiper {
+			width: 100%;
+			height: 100%;
+			position: relative;
+		}
+
+		.cover {
+			width: 702rpx;
+			position: relative;
+			border-radius: 10px 10px 10px 10px;
+
+			/deep/image,
+			/deep/.easy-loadimage,
+			uni-image {
+				width: 702rpx;
+				border-radius: 10px 10px 10px 10px;
+				overflow: hidden;
+			}
+
+			.circle {
+				width: 100rpx;
+				height: 100rpx;
+				border-radius: 50%;
+				background: rgba(0, 0, 0, .5);
+				position: absolute;
+				top: 50%;
+				left: 50%;
+				margin-left: -50rpx;
+				margin-top: -50rpx;
+				z-index: 10;
+				line-height: 50px;
+				text-align: center;
+				color: #fff;
+			}
+		}
+
+		.slide-image {
+			width: 100%;
+			height: 100%;
+			border-radius: 16rpx;
+		}
+
+		.pages {
+			position: absolute;
+			background-color: #fff;
+			height: 34rpx;
+			padding: 0 10rpx;
+			border-radius: 3rpx;
+			right: 30rpx;
+			bottom: 30rpx;
+			line-height: 34rpx;
+			font-size: 24rpx;
+			color: #050505;
+		}
+	}
+
+	.tab-cont {
+		background: #fff;
+	}
+
+	.follow_count {
+		padding: 30rpx 24rpx 20rpx 24rpx;
+		border-bottom: 1px solid #F5F5F5;
+
+		.title {
+			padding: 0 10rpx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+		}
+
+		.author {
+			display: flex;
+			align-items: center;
+			position: relative;
+
+			.level_icon {
+				position: absolute;
+				width: 26rpx;
+				height: 26rpx;
+				margin: 4rpx 0 0 6rpx;
+				border: none;
+				z-index: 1;
+				bottom: 2rpx;
+				left: 50rpx;
+			}
+
+			.picture,
+			uni-image {
+				width: 78rpx;
+				height: 78rpx;
+				border-radius: 100%;
+			}
+
+			.name {
+				margin-left: 20rpx;
+				color: #282828;
+				font-size: 32rpx;
+				font-weight: bold;
+				align-items: center;
+			}
+		}
+
+		.icon-fenxiang {
+			font-size: 40rpx !important;
+		}
+
+		.time {
+			color: #282828;
+			font-size: 46rpx;
+		}
+
+		.product {
+			margin-top: 20rpx;
+			border-radius: 16rpx;
+		}
+
+
+	}
+
+	.manage {
+		width: 100%;
+		background: #ffffff;
+		box-shadow: 0 2rpx 15rpx rgba(0, 0, 0, 0.1);
+		padding: 30rpx 24rpx;
+		z-index: 10;
+		border-radius: 40rpx 40rpx 0 0;
+
+		.items {
+			// border-bottom: 1px solid #EEEEEE;
+			color: #333333;
+			font-size: 28rpx;
+			display: flex;
+			justify-content: center;
+			margin-bottom: 64rpx;
+
+			&:last-child {
+				border-bottom: none;
+			}
+
+			.iconfont {
+				margin: 0 16rpx 0;
+			}
+		}
+	}
+</style>

+ 12 - 5
mer_uniapp/components/discoverDetails/index.vue

@@ -25,14 +25,14 @@
 				<view class="imageBox">
 					<swiper v-if="noteDetails.type ===1 && noteDetails.image && noteDetails.image.split(',').length>1"
 						:indicator-dots="indicatorDots" indicator-active-color="#e93323" :circular="circular"
-						:interval="interval" :duration="duration" :style="{height:imageH + 'px'}">
+						:interval="interval" :duration="duration" :style="{height:430 + 'px'}">
 						<block v-for="(item,index) in noteDetails.image.split(',')" :key='index'>
 							<swiper-item class="cover">
 								<!-- <image class="w-full" show-menu-by-longpress :src="item"
 									:mode="isAuto ?  'aspectFill' : 'heightFix'" :style="{height:imageH + 'px'}"
 									@tap="proview(item)"></image> -->
 								<easy-loadimage mode="heightFix" :image-src="item"
-									:height="imageH*2+'rpx'"></easy-loadimage>
+									:height="430*2+'rpx'"></easy-loadimage>
 							</swiper-item>
 						</block>
 					</swiper>
@@ -241,6 +241,7 @@
 				noteIndex: 0, //当前的索引
 				noteDetails: this.noteRecommendList,
 				windowWidth: 0, //获取屏幕宽度🌟💗
+				heightH: 0
 			}
 		},
 		props: {
@@ -260,9 +261,7 @@
 			},
 			imageH: {
 				type: Number,
-				default: function() {
-					return 0;
-				},
+				default: 0
 			},
 			// 评论列表是否出现在详情视图内,出现就展示弹窗
 			isShowCommentView: {
@@ -286,6 +285,10 @@
 						})
 					}
 				}
+			},
+			imageH(nval, oval) {
+				this.heightH = nval
+				console.log(this.heightH, 'chulailelelelelle')
 			}
 		},
 		onLoad() {
@@ -293,6 +296,10 @@
 			this.isWeixin = this.$wechat.isWeixin()
 			this.computedHeight()
 		},
+		onBackPress(options) {
+			console.log(options, 11111111111)
+			this.heightH = 0
+		},
 		// 滚动监听
 		onPageScroll(e) {
 			// 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件

+ 2 - 2
mer_uniapp/components/discoverFlowItem/discoverFlowItem.vue

@@ -7,7 +7,7 @@
 					<view class="info-dzi mb-10 fs-24">{{items.authorName}}<text class="ml-14 mr-14">·</text>北京大学</view>
 					<view class="info-xzi">
 						<text>{{items.id}}楼</text>
-						<text>3-23 13:22:04</text>
+						<text>{{items.createTime || ''}}</text>
 					</view>
 				</view>
 			</view>
@@ -44,7 +44,7 @@
 
 						<view class="like_count">
 							<text class="iconfont" :class="items.userIsLike ? 'icon-shoucang1' : 'icon-dianzan'"></text>
-							<text class="collect">{{items.likeNum ? items.likeNum < 10000 ? items.likeNum : (items.likeNum / 10000).toFixed(2) + 'w' : '' }}</text>
+							<text class="collect">{{items.likeNum ? items.likeNum < 10000 ? items.likeNum : (items.likeNum / 10000).toFixed(2) + 'w' : '0' }}</text>
 						</view>
 					</view>
 				</view>

+ 98 - 35
mer_uniapp/pages/confession_wall/home/index.vue

@@ -1,7 +1,7 @@
 <template>
 	<view :data-theme="theme" class="discover_index">
 		<view class="page_con">
-			<view class="discover-header bg--w111-fff relative z-999 mb-10">
+			<view class="discover-header relative z-999">
 				<!-- #ifdef APP || MP -->
 				<view class="mp-header" :style="{ height: navH + 'rpx'}">
 					<view class="sys-head" :style="{ height: sysHeight+'px' }"></view>
@@ -17,7 +17,7 @@
 					</view>
 				</view>
 				<!--  #endif -->
-				<view class="discover-navTab acea-row row-middle">
+				<view class="discover-navTab acea-row row-middle bg--w111-fff" style="margin: 4rpx 0;">
 					<view class="acea-row row-center-wrapper" :style="[textBoxStyle]">
 						<view style="margin-right: 52rpx;" :class="tabActive == 0 ? 'on' : ''" class="nav-item" @click="tabActive=0;showCateDrawer = false">本校</view>
 						<view :class="tabActive == 1 ? 'on' : ''" class="nav-item pb-10" @click="tabActive=1;">同城</view>
@@ -27,7 +27,7 @@
 					<!-- #endif -->
 				</view>
 				<!-- 话题分类 -->
-				<view class="longTab" scroll-y enhanced>
+				<view class="longTab mb-10" scroll-y enhanced>
 					<view class="flex h-116">
 						<view class="flex-1 h-full flex-center longTab-item" :style="{background: index === tabClick ? '#EEF4FF' : ''}"
 						 v-for="(item, index) in categoryList" :key="index" :id="'id' + index" @click.stop="selectMenu(item, index, true)">
@@ -47,35 +47,44 @@
 					</view>
 				</view>
 				<!-- banner轮播图 -->
-				<view style="margin-top: 10rpx;">
-					<swiper style="height: 116rpx;" :indicator-dots="true" :autoplay="true" :interval="2500" :duration="500" circular="true">
+				<view class="mb-10" v-if="bannerList.length">
+					<swiper :indicator-dots="true" :autoplay="true" :interval="2500" :duration="500" circular="true">
 						<block v-for="(item,index) in bannerList" :key='item.id'>
 							<swiper-item>
 								<view class="swiper-item">
-									<image class="banner-img" src="/static/img/img1.png" />
+									<image class="banner-img" :src="item.imageUrl" mode="widthFix" />
 								</view>
 							</swiper-item>
 						</block>
 					</swiper>
 				</view>
 				<!-- 提示 -->
-				<view class="flex-y-center bg--w111-fff mt-10 mb-10 pl-32">
+				<view v-if="wallHeadline.length" class="flex-y-center bg--w111-fff mb-10 pl-32">
 					<!-- 左侧固定图片 -->
 					<text class='iconfont icon-laba ' style="font-size: 24rpx;margin-right: 20rpx;"></text>
 
 					<!-- 右侧文字轮播区域 -->
 					<view class="flex-1 h-40 mt-10" style="overflow: hidden;">
-						<swiper :indicator-dots="false" :autoplay="true" interval="2500" :duration="500" vertical="true" circular="true">
+						<swiper class="swiper" :indicator-dots="false" circular :autoplay="true" :interval="3000" vertical>
 							<block v-for="(item,index) in wallHeadline" :key='index'>
 								<swiper-item catchtouchmove='catchTouchMove'>
-									<view class='newsTitle'>
-										{{item.title}}
+									<view class='newsTitle swiper-item'>
+										{{item.synopsis}}
 									</view>
 								</swiper-item>
 							</block>
 						</swiper>
 					</view>
 				</view>
+				<scroll-view class="bg--w111-fff pt-10 pb-10 pl-32" scroll-x style="white-space: nowrap; vertical-align: middle;border-top-right-radius: 23rpx;"
+				 show-scrollbar="false">
+					<view class='flex-y-center'>
+						<text v-for="(item,index) in navList" :key="index" class='wall-nav' :class='active==item.id ? "wall-nav-on": ""'
+						 @click="tabSelect(item.id, index)">
+							<text>{{item.name}}</text>
+						</text>
+					</view>
+				</scroll-view>
 			</view>
 			<view class="discover-box">
 				<!-- 发现 -->
@@ -121,7 +130,7 @@
 							 refresher-enabled="true" :refresher-triggered="triggered" @refresherrefresh="onRefresh" @refresherpulling="onPulling"
 							 @refresherrestore="onRestore" @refresherabort="onAbort">
 								<view class="goods padbottom">
-									<view class="goods-wrap" id="goods" v-if="noteRecommendList.length">
+									<view class="goods-wrap flex-1" id="goods" v-if="noteRecommendList.length">
 										<view>
 											<WaterfallsFlow v-if="noteRecommendList.length" :wfList="noteRecommendList" :fromType="1">
 											</WaterfallsFlow>
@@ -309,9 +318,9 @@
 				}
 			})
 			getReplyInfo().then(res => {
-				// this.bannerList = []
-				// this.wallHeadline = []
-				console.log(res.data)
+				this.bannerList = res.data.banner
+				this.wallHeadline = res.data.headline
+				console.log(res.data, 111111111111111)
 			}).catch(err => {
 				console.log(err)
 			})
@@ -385,20 +394,22 @@
 				searchRight: 0,
 				statusWidth: 0,
 				searchHeight: 0,
-				bannerList: [{
-						id: 1
-					},
-					{
-						id: 2
-					}
-				],
-				wallHeadline: [{
-						title: '温馨提示,请注意保护好自身隐私,面基需要'
-					},
-					{
-						title: '%%%温馨提示,请注意保护好自身隐私,面基需要'
-					},
-				],
+				bannerList: [],
+				wallHeadline: [],
+				navList: [{
+					id: 0,
+					name: '默认'
+				}, {
+					id: 1,
+					name: '评论'
+				}, {
+					id: 2,
+					name: '点赞'
+				}, {
+					id: 3,
+					name: '有图'
+				}],
+				active: 0,
 			}
 		},
 		// 滚动监听
@@ -745,7 +756,8 @@
 					this.$set(this.discoverList, this.categoryId, {
 						where: {
 							...this.where,
-							categoryId: this.categoryId
+							categoryId: this.categoryId,
+							secondType: this.active
 						},
 						goods: []
 					})
@@ -815,6 +827,8 @@
 
 			// 点击列表头部
 			selectMenu(item, index, isScroll) {
+				if (tabClick == index) return
+				this.active = 0
 				this.triggeredDiscover = false;
 				this.categoryId = item.id;
 				this.swiperCurrent = index;
@@ -825,6 +839,11 @@
 				this.showCateDrawer = false
 				this.getDiscoverList();
 			},
+			tabSelect(active, e) {
+				if (this.active == active) return
+				this.active = active;
+				this.getDiscoverList();
+			},
 		}
 	}
 </script>
@@ -873,17 +892,13 @@
 
 	.banner-img {
 		width: 100%;
-		height: 116rpx;
-		background-size: 100% 100%;
+		height: 100%;
 	}
 
 	.newsTitle {
 		font-weight: 400;
 		font-size: 21rpx;
 		color: #646464;
-		white-space: nowrap;
-		overflow: hidden;
-		text-overflow: ellipsis;
 	}
 
 	.active-topic {
@@ -951,7 +966,7 @@
 		display: flex;
 		flex-wrap: wrap;
 		justify-content: space-between;
-		padding: 0 24rpx;
+		padding: 24rpx 24rpx 0 24rpx;
 		background: #ffffff;
 	}
 
@@ -1252,4 +1267,52 @@
 	.author-fans {
 		font-size: 24rpx !important;
 	}
+
+	.container {
+		overflow: hidden;
+		/* 隐藏超出部分 */
+	}
+
+	.swiper {
+		display: flex;
+		/* 使用flex布局 */
+		animation: scrollRight 10s linear infinite;
+		/* 应用动画 */
+	}
+
+	.swiper-item {
+		flex-shrink: 0;
+		/* 不允许缩小 */
+		width: 100%;
+		/* 每个item占满一行 */
+		height: 100%;
+	}
+
+	@keyframes scrollRight {
+		from {
+			transform: translateX(100%);
+		}
+
+		/* 从右向左移动 */
+		to {
+			transform: translateX(-100%);
+		}
+
+		/* 移出视图 */
+	}
+	.wall-nav {
+		font-weight: 500;
+		font-size: 23rpx;
+		color: #999999;
+	}
+	
+	.wall-nav~.wall-nav {
+		margin-left: 38rpx;
+	}
+	
+	.wall-nav-on {
+		font-weight: 600;
+		font-size: 27rpx;
+		color: #141414;
+	}
 </style>

+ 224 - 0
mer_uniapp/pages/discover/discover_details/index-bak.vue

@@ -0,0 +1,224 @@
+<template>
+	<view class="discover-details">
+		<!-- #ifdef MP || APP-PLUS-->
+		<!-- <nav-bar iconColor='#fff' navTitle='内容详情' :isBackgroundColor="false" ref="navBarRef" :isHeight="false">
+		</nav-bar> -->
+		<!--  #endif -->
+		<discover-details v-if="noteDetail && !loading" :noteRecommendList="noteDetail" type="detail"
+			@getComment="getComment" @onChangeReplyStatus="onChangeReplyStatus" :imageH="imageH"
+			:isShowCommentView="isShowCommentView"></discover-details>
+		<view class='loadingicon acea-row row-center-wrapper' :hidden='loading==false'>
+			<text class='loading iconfont icon-jiazai'></text>
+		</view>
+
+		<view class="commen_details borderPad" id="myElement">
+			<view v-if="noteDetail.platReplySwitch" class="commen_count" id="commen_count">
+				评论<span class="ml10">{{noteDetail.replyNum == 0 ? '' : noteDetail.replyNum}}</span></view>
+			<view>
+				<discoverComment v-if="noteDetail" :noteId="noteId" :noteDetails="noteDetail" :isClickBtn="isClickBtn"
+					fromTo="pageView" :isShowCommentView="isShowCommentView" @closeModelComment="closeModelComment">
+				</discoverComment>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import discoverDetails from '@/components/discoverDetails/index.vue'
+	import discoverComment from '@/components/discoverComment/index.vue'
+	import navBar from '@/components/navBar';
+	import {
+		noteDetailApi
+	} from '@/api/discover.js';
+	import {
+		silenceBindingSpread,
+		getUserSpread
+	} from '@/utils/index.js';
+	import {
+		mapGetters
+	} from "vuex";
+	import onShare from "../../../mixins/onShare";
+	export default {
+		components: {
+			discoverDetails,
+			discoverComment,
+			navBar
+		},
+		mixins: [onShare],
+		computed: mapGetters(['isLogin', 'uid', 'globalData']),
+		data() {
+			return {
+				noteDetail: {}, //内容详情
+				content: '',
+				bottomVal: 0,
+				placeholder: "快来说点儿什么吧...",
+				loading: false,
+				isShowComment: false, //真实评论弹窗显示隐藏
+				noteId: 0,
+				showComment: false, //评论弹窗
+				imageH: 0, //图片高度
+				appear: false,
+				elementId: 'myElement',
+				observer: null,
+				isShowCommentView: false, //评论列表是否出现
+				isClickBtn: false, //是否点击了评论按钮,
+				title: '内容详情'
+			}
+		},
+		onLoad: function(options) {
+			let pages = getCurrentPages()
+
+			this.noteId = Number(options.noteId);
+			this.getNoteDetail(options.noteId);
+
+			//分销码
+			getUserSpread(options);
+		},
+		onReady() {
+			setTimeout(() => {
+				// 创建监听器
+				this.observer = uni.createIntersectionObserver(this);
+				// 监听评论列表是否出现
+				this.observer.relativeToViewport('#myElement').observe('#commen_count', (res) => {
+					// res.intersectionRatio 为相交区域和元素的比例
+					if (res.intersectionRatio > 0) {
+						this.isShowCommentView = true
+						// 元素进入可视区域
+					} else {
+						this.isShowCommentView = false
+						this.isClickBtn = false
+						// 元素离开可视区域
+					}
+				});
+			}, 500)
+		},
+		onUnload() {
+			// 页面销毁时,停止监听
+			if (this.observer) {
+				this.observer.disconnect();
+			}
+		},
+		onShow() {
+			//分销绑定
+			silenceBindingSpread(this.isLogin, this.globalData.spread);
+		},
+		methods: {
+
+			// 计算图片高度
+			computedHeight() {
+				let that = this;
+				if (this.noteDetail.image) {
+					let windowWidth = uni.getSystemInfoSync().windowWidth;
+					uni.getImageInfo({
+						src: that.$util.setDomain(this.noteDetail.image.split(',')[0]),
+						success: (image) => {
+							let imageH = parseInt(image.height * windowWidth / image.width);
+							if (imageH > 500) {
+								this.isAuto = false;
+								this.imageH = 500;
+							} else {
+								this.imageH = imageH;
+							}
+						}
+					})
+				}
+			},
+			getReplyNum(n) {
+				this.noteRecommendListNew[this.noteIndex].replyNum = n;
+			},
+			//触发评论输入框出现
+			getComment(item) {
+				this.showComment = true;
+				this.isClickBtn = true
+				this.noteDetails = item;
+			},
+			closeModelComment() {
+				this.isClickBtn = false
+			},
+			//关闭评论回调
+			onChangeReplyStatus(replyStatus) {
+				if (replyStatus === 1) {
+					this.$set(this.noteDetail, 'replyStatus', 2)
+					this.$util.Tips({
+						title: '禁止成功'
+					});
+				} else {
+					this.$set(this.noteDetail, 'replyStatus', 1)
+					this.$util.Tips({
+						title: '开启成功'
+					});
+				}
+			},
+			// 内容详情
+			getNoteDetail(noteId) {
+				noteDetailApi(noteId).then(res => {
+					this.loading = true;
+					this.noteDetail = res.data;
+					this.noteRecommendList = res.data;
+					this.computedHeight()
+					this.loading = false;
+				}).catch(err => {
+					this.loading = false;
+					uni.showToast({
+						title: err,
+						icon: 'none'
+					})
+				});
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	/deep/.container {
+		padding-bottom: 0 !important;
+	}
+
+	.commen_details {
+		/deep/.container {
+			height: auto !important;
+		}
+
+		/deep/.main_content {
+			padding: 30rpx 0 !important;
+		}
+	}
+
+	.commen_count {
+		font-size: 26rpx;
+		color: #282828;
+		margin: 40rpx 0 0 0;
+		// min-height: 1px;
+	}
+
+	.discover-details {
+		padding-bottom: calc(80rpx+ constant(safe-area-inset-bottom)) !important; ///兼容 IOS<11.2/
+		padding-bottom: calc(80rpx + env(safe-area-inset-bottom));
+		background-color: #fff;
+	}
+
+	.details {
+		padding-bottom: calc(40rpx+ constant(safe-area-inset-bottom)) !important; ///兼容 IOS<11.2/
+		padding-bottom: calc(40rpx + env(safe-area-inset-bottom));
+	}
+
+	.lang {
+		width: 560rpx !important;
+	}
+
+	.send {
+		font-size: 26rpx;
+		color: #ffffff;
+		width: 120rpx;
+		height: 62rpx;
+		line-height: 62rpx;
+		text-align: center;
+		@include linear-gradient(theme);
+		border-radius: 30rpx;
+		text-align: center;
+	}
+
+	.details {
+		background-color: #fff;
+	}
+</style>

+ 6 - 6
mer_uniapp/pages/discover/discover_details/index.vue

@@ -4,9 +4,8 @@
 		<!-- <nav-bar iconColor='#fff' navTitle='内容详情' :isBackgroundColor="false" ref="navBarRef" :isHeight="false">
 		</nav-bar> -->
 		<!--  #endif -->
-		<discover-details v-if="noteDetail && !loading" :noteRecommendList="noteDetail" type="detail"
-			@getComment="getComment" @onChangeReplyStatus="onChangeReplyStatus" :imageH="imageH"
-			:isShowCommentView="isShowCommentView"></discover-details>
+		<discover-details v-if="noteDetail && !loading" :noteRecommendList="noteDetail" type="detail" @getComment="getComment"
+		 @onChangeReplyStatus="onChangeReplyStatus" :imageH="imageH" :isShowCommentView="isShowCommentView"></discover-details>
 		<view class='loadingicon acea-row row-center-wrapper' :hidden='loading==false'>
 			<text class='loading iconfont icon-jiazai'></text>
 		</view>
@@ -15,8 +14,8 @@
 			<view v-if="noteDetail.platReplySwitch" class="commen_count" id="commen_count">
 				评论<span class="ml10">{{noteDetail.replyNum == 0 ? '' : noteDetail.replyNum}}</span></view>
 			<view>
-				<discoverComment v-if="noteDetail" :noteId="noteId" :noteDetails="noteDetail" :isClickBtn="isClickBtn"
-					fromTo="pageView" :isShowCommentView="isShowCommentView" @closeModelComment="closeModelComment">
+				<discoverComment v-if="noteDetail" :noteId="noteId" :noteDetails="noteDetail" :isClickBtn="isClickBtn" fromTo="pageView"
+				 :isShowCommentView="isShowCommentView" @closeModelComment="closeModelComment">
 				</discoverComment>
 			</view>
 		</view>
@@ -113,6 +112,7 @@
 						src: that.$util.setDomain(this.noteDetail.image.split(',')[0]),
 						success: (image) => {
 							let imageH = parseInt(image.height * windowWidth / image.width);
+							console.log(imageH, 'inlailellelel')
 							if (imageH > 500) {
 								this.isAuto = false;
 								this.imageH = 500;
@@ -221,4 +221,4 @@
 	.details {
 		background-color: #fff;
 	}
-</style>
+</style>

+ 3 - 4
mer_uniapp/pages/discover/discover_release/index.vue

@@ -430,10 +430,9 @@
 				this.formData.topicIds = this.discoverTopicList.map(val => val.id).join(',');
 
 
-
-				if (!that.formData.cover) return that.$util.Tips({
-					title: '请上传封面图'
-				});
+				// if (!that.formData.cover) return that.$util.Tips({
+				// 	title: '请上传封面图'
+				// });
 
 
 				uni.showLoading({

+ 1 - 1
mer_uniapp/pages/discover/discover_search_list/index.vue

@@ -9,7 +9,7 @@
 				<view class='bnt' @tap='searchBut'>搜索</view>
 			</view>
 			<view class="tab-cont">
-				<view v-if="discoverList.length" class="goods-wrap">
+				<view v-if="discoverList.length" class="goods-wrap flex-1">
 					<view class="goods">
 						<WaterfallsFlow :wfList='discoverList' :type="1" :fromType="1" :isStore="1">
 						</WaterfallsFlow>

+ 5 - 5
mer_uniapp/pages/discover/discover_user/index.vue

@@ -72,7 +72,7 @@
 		</view>
 		<view class="main">
 			<view class="tab-conts">
-				<view v-if="list.length > 0" class="goods-wrap">
+				<view v-if="list.length > 0" class="goods-wrap flex-1">
 					<view class="goods">
 						<WaterfallsFlow v-if="list.length" :wfList="list" :fromType="1" fromTo="home">
 						</WaterfallsFlow>
@@ -608,10 +608,10 @@
 	}
 
 	.goods {
-		display: flex;
-		flex-wrap: wrap;
-		justify-content: space-between;
-		width: 750rpx;
+		// display: flex;
+		// flex-wrap: wrap;
+		// justify-content: space-between;
+		// width: 750rpx;
 		padding: 0 24rpx;
 	}
 

+ 11 - 9
mer_uniapp/pages/index/index.vue

@@ -72,7 +72,7 @@
 			<view class="content-tab">
 				<view class="tab-list">
 					<view class="tab-item flex-col flex-between-center" v-for="(item, index) in cateList" :key="index" @tap="onCateListClick(item)">
-						<image class="tab-image" :style="{width: !item.isHighLight ? '80rpx' : ''}" :src="item.icon" mode="widthFix"></image>
+						<image class="tab-image" :style="{width: !item.isHighLight ? '80rpx' : ''}" :src="item.imageUrl" mode="widthFix"></image>
 						<text :class="item.isHighLight || item.color ? 'tab-text' : 'tab-text2' " :style="{color: item.color || ''}">{{item.name}}</text>
 					</view>
 				</view>
@@ -192,6 +192,7 @@
 				bannerList: [],
 				messageList: [],
 				cateList: [],
+				cateId: 0,
 				proList: [],
 				labelList: [{
 					id: 1,
@@ -267,19 +268,20 @@
 				}).then(res => {
 					this.bannerList = res.data.banner;
 					this.proList = res.data.proList;
-					console.log(this.proList)
+					console.log(res.data)
 					this.messageList = res.data.headline;
-					this.cateList = res.data.cateList;
+					this.cateList = res.data.navigatList;
+					this.cateId = res.data.cateId
 					this.cateList.push({
 						id: 999,
 						name: '今日吃啥',
-						icon: '/static/img/ic-random.png',
+						imageUrl: '/static/img/ic-random.png',
 						color: '#FF9805'
 					});
 					getMerchantList({
 						latitude: uni.getStorageSync('user_latitude'),
 						longitude: uni.getStorageSync('user_longitude'),
-						cateId: this.cateList[0].id
+						cateId: this.cateId
 					}).then(res => {
 						this.merchantList = res.data.list;
 						console.log('商品信息:', this.merchantList);
@@ -303,7 +305,7 @@
 				this.$util.navigateTo('/pages/goods/goods_search/index');
 			},
 			goGenDuo() {
-				this.$util.navigateTo(`/pages/goods/goods_list/index?cateId=${this.cateList[0].id}`);
+				this.$util.navigateTo(`/pages/goods/goods_list/index?cateId=${this.cateId}`);
 			},
 			//配送时间转换
 			convertMinutes(minutes) {
@@ -333,9 +335,9 @@
 				if (!this.isLogin) {
 					this.openAuto();
 				} else {
-					if (item.link) {
+					if (item.linkUrl) {
 						uni.navigateTo({
-							url: item.link + `?id=${item.id}&navTitle=${item.name}`
+							url: item.linkUrl + `&navTitle=${item.name}`
 						})
 					}
 				}
@@ -356,7 +358,7 @@
 							getMerchantList({
 								latitude: res.latitude,
 								longitude: res.longitude,
-								cateId: this.cateList[0].id								
+								cateId: this.cateId							
 							}).then(data => {
 								this.merchantList = data.data.list;
 								console.log('商品信息:', this.merchantList);

+ 43 - 11
mer_uniapp/pages/merchant/home/index.vue

@@ -34,19 +34,24 @@
 						<view class="store-addr">
 							<text style="font-size: 23rpx;color: #141414;">商家地址:{{ merchanInfo.addressDetail }}</text>
 						</view>
-						<view v-if="merchanInfo.headline.legend" class="store-tip" style="padding: 10rpx 30rpx 10rpx 15px ;height: 48rpx;">
-							<swiper :indicator-dots="false" :autoplay="true" interval="2500" :duration="500" vertical="true" circular="true">
-								<block v-for="(item,index) in merchanInfo.headline" :key='index'>
-									<swiper-item catchtouchmove='catchTouchMove'>
-										<view class='text acea-row row-between-wrapper'>
-											<view class='newsTitle'>
-												<text class='iconfont icon-laba ' style="font-size: 24rpx;margin-right: 10rpx;"></text>
+						
+						<!-- 提示 -->
+						<view v-if="merchanInfo.headline.length" class="store-tip flex-y-center mt-10 mb-10 pl-32">
+							<!-- 左侧固定图片 -->
+							<text class='iconfont icon-laba ' style="font-size: 24rpx;margin-right: 20rpx;"></text>
+						
+							<!-- 右侧文字轮播区域 -->
+							<view class="flex-1 h-40 mt-10" style="overflow: hidden;">
+								<swiper class="swiper" :indicator-dots="false" circular :autoplay="true" :interval="3000" vertical>
+									<block v-for="(item,index) in merchanInfo.headline" :key='index'>
+										<swiper-item catchtouchmove='catchTouchMove'>
+											<view class='newsTitle swiper-item'>
 												<text>{{item.title}}</text>
 											</view>
-										</view>
-									</swiper-item>
-								</block>
-							</swiper>
+										</swiper-item>
+									</block>
+								</swiper>
+							</view>
 						</view>
 					</view>
 				</view>
@@ -1990,4 +1995,31 @@
 		color: #999;
 		text-align: center;
 	}
+	
+	.swiper {
+		display: flex;
+		/* 使用flex布局 */
+		animation: scrollRight 10s linear infinite;
+		/* 应用动画 */
+	}
+	
+	.swiper-item {
+		flex-shrink: 0;
+		/* 不允许缩小 */
+		width: 100%;
+		/* 每个item占满一行 */
+	}
+	
+	@keyframes scrollRight {
+		from {
+			transform: translateX(100%);
+		}
+	
+		/* 从右向左移动 */
+		to {
+			transform: translateX(-100%);
+		}
+	
+		/* 移出视图 */
+	}
 </style>

+ 27 - 5
mer_uniapp/pages/substitute_fast_mail/home/index.vue

@@ -17,6 +17,18 @@
 					</block>
 				</scroll-view>
 			</view> -->
+		<!-- banner轮播图 -->
+		<view class="mb-10" v-if="bannerList.length">
+			<swiper :indicator-dots="true" :autoplay="true" :interval="2500" :duration="500" circular="true">
+				<block v-for="(item,index) in bannerList" :key='item.id'>
+					<swiper-item>
+						<view class="swiper-item">
+							<image class="banner-img" :src="item.imageUrl" mode="widthFix" />
+						</view>
+					</swiper-item>
+				</block>
+			</swiper>
+		</view>
 		<navigator url="/pages/address/user_address_list/index">
 			<view class="fast-top flex-between-center">
 				<view>
@@ -39,8 +51,8 @@
 		</view>
 		<!-- </navigator> -->
 		<scroll-view scroll-y scroll-with-animation style="flex: 1;overflow: hidden;">
-			<view class="fast-box" :class="index !== fastMailData.length - 1 ? 'qie-ge' : ''"
-			 v-for="(item, index) in fastMailData" :key="index">
+			<view class="fast-box" :class="index !== fastMailData.length - 1 ? 'qie-ge' : ''" v-for="(item, index) in fastMailData"
+			 :key="index">
 				<view class="flex-between-center mb-20">
 					<view>
 						<view class="fast-yz">{{item.postName}}</view>
@@ -132,7 +144,8 @@
 		preExpressApi,
 		loadPreExpressApi,
 		loadPreExpressDelApi,
-		expressCreate
+		expressCreate,
+		getExpressInfo
 	} from '@/api/fastMail.js';
 	import {
 		getAddressDefault,
@@ -179,7 +192,8 @@
 				active: 0,
 				scrollLeft: 0,
 				addressItem: {},
-				orderPrice: 0
+				orderPrice: 0,
+				bannerList: []
 			};
 		},
 		onLoad() {
@@ -193,6 +207,9 @@
 				console.log('地址', res)
 				this.addressItem = res.data || {}
 			})
+			getExpressInfo().then(res => {
+				this.bannerList = res.data.banner
+			})
 			// this.getPreExpressApi()
 		},
 		/**
@@ -393,7 +410,7 @@
 		background-color: $bg-color-primary;
 		margin-right: 20rpx;
 	}
-	
+
 	.qie-ge {
 		border-bottom: 2rpx solid #D6D7DC;
 	}
@@ -530,4 +547,9 @@
 			}
 		}
 	}
+
+	.banner-img {
+		width: 100%;
+		height: 100%;
+	}
 </style>

+ 3 - 2
mer_uniapp/utils/util.js

@@ -1263,8 +1263,9 @@ export default {
 	 */
 	setDomain: function(url) {
 		url = url ? url.toString() : '';
-		if (url.indexOf("https://") > -1) return url;
-		else return url.replace('http://', 'https://');
+		return url
+		// if (url.indexOf("https://") > -1) return url;
+		// else return url.replace('http://', 'https://');
 	},
 
 	/**