Procházet zdrojové kódy

Merge branch 'master' of http://39.105.58.247:3100/yidiandao/ydd_front

zhaoyun před 1 měsícem
rodič
revize
4645312f4c

+ 18 - 2
mer_uniapp/api/discover.js

@@ -242,6 +242,14 @@ export function editSignatureApi(data){
 }
 
 /**
+ * 二手交易内容编辑学校
+ * 
+*/
+export function editSchoolApi(data){
+  return request.post(`community/user/edit/school`, data);
+}
+
+/**
  * 获取逛逛内容评论平台开关设置
  * 
 */
@@ -258,9 +266,17 @@ export function replyDeleteApi(replyId){
 }
 
 /**
- * 逛逛内容评论删除
+ * 表白墙轮播图信息
  * 
 */
-export function getReplyInfo(){
+export function getCommunityInfo(){
   return request.get(`community/info`);
+}
+
+/**
+ * 二手交易轮播图信息S
+ * 
+*/
+export function getSecondHandInfo(){
+  return request.get(`secondHand/info`);
 }

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

@@ -3,7 +3,7 @@
 		<view>
 			<view id="left" v-if="allList.length">
 				<view v-for="(item,index) in allList" :key="index" class="wf-itemsss">
-					<discoverFlowItem :items="item" v-if="fromType==1" :fromTo="fromTo" @changeLikeToggle="(item)=>changeLikeToggle(false, index, item)" ></discoverFlowItem>
+					<discoverFlowItem :column="column" :items="item" v-if="fromType==1" :fromTo="fromTo" @changeLikeToggle="(item)=>changeLikeToggle(false, index, item)" ></discoverFlowItem>
 					<WaterfallsFlowItem v-else :item="item" :isStore="isStore" :type="type"/>
 				</view>
 			</view>

+ 26 - 14
mer_uniapp/components/discoverDetails/index.vue

@@ -25,21 +25,21 @@
 				<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:430 + 'px'}">
+						:interval="interval" :duration="duration" :style="{height:heightH + '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="430*2+'rpx'"></easy-loadimage>
+									:style="{height:heightH + 'px'}"></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 class="cover" @click="goDetail(noteDetails)"  :style="{height:heightH + 'px'}">
+							<easy-loadimage mode="heightFix" :image-src="noteDetails.cover" :style="{height:heightH + 'px'}"></easy-loadimage>
 							<view v-if="noteDetails.type ===2" class="circle">
 								<text class="iconfont icon-24gf-play"></text>
 							</view>
@@ -261,7 +261,9 @@
 			},
 			imageH: {
 				type: Number,
-				default: 0
+				default: function() {
+					return 0;
+				},
 			},
 			// 评论列表是否出现在详情视图内,出现就展示弹窗
 			isShowCommentView: {
@@ -284,21 +286,13 @@
 							}
 						})
 					}
+					this.computedHeight()
 				}
-			},
-			imageH(nval, oval) {
-				this.heightH = nval
-				console.log(this.heightH, 'chulailelelelelle')
 			}
 		},
 		onLoad() {
 			this.windowWidth = uni.getSystemInfoSync().screenWidth; //获取屏幕宽度
 			this.isWeixin = this.$wechat.isWeixin()
-			this.computedHeight()
-		},
-		onBackPress(options) {
-			console.log(options, 11111111111)
-			this.heightH = 0
 		},
 		// 滚动监听
 		onPageScroll(e) {
@@ -531,6 +525,24 @@
 					});
 				}
 			},
+			// 计算图片高度
+			computedHeight() {
+				let that = this;
+				if (this.noteDetails.image) {
+					let windowWidth = uni.getSystemInfoSync().windowWidth;
+					uni.getImageInfo({
+						src: that.$util.setDomain(this.noteDetails.image.split(',')[0]),
+						success: (image) => {
+							let imageH = parseInt(image.height * windowWidth / image.width);
+							if (imageH > 500) {
+								this.heightH = 500;
+							} else {
+								this.heightH = imageH;
+							}
+						}
+					})
+				}
+			},
 		}
 	}
 </script>

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

@@ -4,7 +4,7 @@
 			<view class="flex-y-center mb-20">
 				<image class="type-image mr-20" :src="items.icon" mode=""></image>
 				<view>
-					<view class="info-dzi mb-10 fs-24">{{items.authorName}}<text class="ml-14 mr-14">·</text>北京大学</view>
+					<view class="info-dzi mb-10 fs-24">{{items.authorName}}<text class="ml-14 mr-14">·</text>{{items.school || '北京大学'}}</view>
 					<view class="info-xzi">
 						<text>{{items.id}}楼</text>
 						<text>{{items.createTime || ''}}</text>
@@ -101,6 +101,10 @@
 			tab: {
 				type: Number,
 				default: 1
+			},
+			column: {
+				type: Boolean,
+				default: false
 			}
 		},
 		data() {
@@ -120,7 +124,7 @@
 				this.$emit('changeLikeToggle', item)
 			},
 			goDetail(item) {
-				if (item.type == 1) {
+				if (item.type == 1 || this.column) {
 					uni.navigateTo({
 						url: `/pages/discover/discover_details/index?noteId=${item.id}`
 					});

+ 7 - 0
mer_uniapp/pages.json

@@ -633,6 +633,13 @@
 					"navigationStyle": "custom",
 					"enablePullDownRefresh": false
 				}
+			},{
+				"path": "trade_fair_user/index",
+				"style": {
+					"navigationBarTitleText": "个人主页",
+					"navigationStyle": "custom",
+					"enablePullDownRefresh": false
+				}
 			}]
 		},
 		{

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 6 - 1327
mer_uniapp/pages/confession_wall/home/index.vue


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

@@ -112,13 +112,13 @@
 						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;
 							} else {
 								this.imageH = imageH;
 							}
+							console.log(this.imageH, 'inlailellelel')
 						}
 					})
 				}

+ 31 - 9
mer_uniapp/pages/discover/discover_release/index.vue

@@ -4,7 +4,7 @@
 		<form v-if="!topicShow" @submit="formSubmit" report-submit='true'>
 			<view class="release_content">
 				<view class="release_item">
-					<view class="title mb30">
+					<view class="title mb30" v-if="!fair">
 						<input placeholder='填写标题会有更多赞噢~' name="title" placeholder-class='placeholder' v-model="formData.title" maxlength="20" />
 					</view>
 					<view class="textarea">
@@ -41,7 +41,7 @@
 								<view class="text">添加图片</view>
 							</view>
 
-							<view v-if="image.length === 0 && !formData.video" class="pictrue acea-row row-center-wrapper row-column add"
+							<view v-if="image.length === 0 && !formData.video && !fair" class="pictrue acea-row row-center-wrapper row-column add"
 							 @click="upload('video',1)">
 								<view><text class='iconfont icon-tianjiashipin'></text></view>
 								<view class="text">添加视频</view>
@@ -89,15 +89,28 @@
 							</view>
 						</view>
 					</view>
-					<view v-if="!replyPlatformSwitch" class='item acea-row row-between-wrapper'>
-						<view class='name color28'>总平台禁止评论</view>
-					</view>
-					<view v-else class='item acea-row row-between-wrapper'>
-						<view class='name color28'><text class="iconfont icon-pinglun3"></text>是否禁止评论</view>
+					<view class='item acea-row row-between-wrapper' v-if="fair">
+						<view class='name color28'><text class="iconfont icon-qiandai"></text>价格
+						</view>
 						<view class="select">
-							<switch @change="switch1Change" :checked="replyStatus" :color="indicatorBg" style="transform:scale(0.7)" />
+							<view class="select_count">
+								<text class="select-input">¥</text>
+								<input class="text w-128 select-input" type="number" :maxlength="6" :placeholder="'价格'" placeholder-class="placeholder" v-model="formData.price" />
+								<text @change="bindSexChange" class="iconfont icon-xiangyou"></text>
+							</view>
 						</view>
 					</view>
+					<template v-if="!fair">
+						<view v-if="!replyPlatformSwitch" class='item acea-row row-between-wrapper'>
+							<view class='name color28'>总平台禁止评论</view>
+						</view>
+						<view v-else class='item acea-row row-between-wrapper'>
+							<view class='name color28'><text class="iconfont icon-pinglun3"></text>是否禁止评论</view>
+							<view class="select">
+								<switch @change="switch1Change" :checked="replyStatus" :color="indicatorBg" style="transform:scale(0.7)" />
+							</view>
+						</view>
+					</template>
 				</view>
 			</view>
 			<button class="release_btn button" form-type="submit">发布</button>
@@ -203,7 +216,8 @@
 				replyStatus: false, //开关
 				showVideo: false, //预览视频弹窗
 				replyPlatformSwitch: false, //评论总开关状态,true开启,false关闭
-				videoContext: ''
+				videoContext: '',
+				fair: false
 			}
 		},
 		onShow() {
@@ -218,6 +232,7 @@
 			this.discoverTopicList = [];
 			this.$store.commit('DiscoverTopic', this.discoverTopicList);
 			this.indicatorBg = setThemeColor();
+			this.fair = options.fair ? options.fair : false
 			this.noteId = options.noteId ? Number(options.noteId) : 0;
 			if (this.noteId > 0) this.getDetail();
 			this.getCommunityCategoryList();
@@ -404,6 +419,9 @@
 				if (!that.formData.categoryId) return that.$util.Tips({
 					title: '请选择内容分类'
 				});
+				if (!that.formData.price && that.fair) return that.$util.Tips({
+					title: '请输入价格'
+				});
 				if (this.formData.type == 1) {
 					let images = [];
 					this.image.map(item => {
@@ -784,6 +802,10 @@
 				align-items: center;
 				justify-content: flex-end;
 			}
+			
+			.select-input {
+				color: $bg-color-primary;
+			}
 
 			.text {
 				margin-right: 15rpx;

+ 20 - 10
mer_uniapp/pages/discover/discover_user/index.vue

@@ -19,7 +19,11 @@
 							<view class="name acea-row">
 								<text>{{userInfo.isLogoff ? "用户已注销": (userInfo.nickname || '')}}</text>
 							</view>
-							<view v-if="userInfo.id" class="user_id">ID: {{userInfo.id || ''}}</view>
+							<!-- <view v-if="userInfo.id" class="user_id">ID: {{userInfo.id || ''}}</view> -->
+							<view class="flex-between-center mt-16" @click="onEdit('school')">
+								<view class="user_id">学校: {{school || '暂无'}}</view>
+								<text v-show="userInfo.id==uid" class="ml10 iconfont icon-fabuzhongcao"></text>
+							</view>
 						</view>
 					</view>
 					<view v-if="id && id!=uid" @click.stop="followAuthor">
@@ -35,7 +39,7 @@
 						</navigator>
 					</view>
 			</view>
-			<view class="acea-row plant_info" @click="onEdit">
+			<view class="acea-row plant_info" @click="onEdit('signature')">
 				<view v-if="!userInfo.signature && userInfo.id==uid">点击可编辑个性签名</view>
 				<view class="" v-if="userInfo.signature" style="width: 92%;">
 					<view class="acea-row" v-if="userInfo.isMore || userInfo.signature.length<=30">
@@ -93,11 +97,13 @@
 
 		<uni-popup ref="inputDialog" type="dialog">
 			<view v-if="isShowSignature" class="tui-modal-custom">
-				<view class="fs-32 fw-500 lh-44rpx text-center">编辑简介</view>
-				<view class="mt-24 bg--w111-f5f5f5 rd-16rpx p-24 h-342">
-					<textarea class="w-full fs-26" ref="myTextarea" v-model="signature" :focus="focus"
+				<view class="fs-32 fw-500 lh-44rpx text-center">{{fieldStr == 'signature' ? '编辑简介' : '编辑学校'}}</view>
+				<view class="mt-24 bg--w111-f5f5f5 rd-16rpx p-24">
+					<textarea v-if="fieldStr == 'signature'" class="w-full fs-26 h-342" ref="myTextarea" v-model="signature" :focus="focus"
 						 :always-embed="true" :adjust-position="true" cursor-spacing="85rpx"
 						placeholder="请输入内容" :maxlength="100" name="desc" />
+					<input v-if="fieldStr == 'school'" class="placeholder" type='text' v-model='school' :focus="focus"
+					 placeholder='请输入学校' placeholder-class='placeholder'></input>
 				</view>
 				<view class="flex-between-center mt-40">
 					<view class="w-244 h-72 rd-36rpx flex-center fs-26 font-color close-btn" @tap="handleInputClose">取消
@@ -131,7 +137,8 @@
 		authorNoteApi,
 		myNoteApi,
 		myLikeListApi,
-		editSignatureApi
+		editSignatureApi,
+		editSchoolApi
 	} from '@/api/discover.js';
 	import {
 		toLogin
@@ -172,7 +179,9 @@
 				isShow: false,
 				focus: false,
 				isShowSignature: false, // 是否显示简介编辑内容
-				signature: '' //弹窗中的签名
+				signature: '', //弹窗中的签名
+				school: '',
+				fieldStr: ''
 			}
 		},
 		created() {},
@@ -207,9 +216,8 @@
 			},
 			//个性签名保存
 			handleInputConfirm() {
-				editSignatureApi({
-					signature: this.signature
-				}).then(res => {
+				const api = this.fieldStr == 'signature' ? editSignatureApi({signature: this.signature}) : editSchoolApi({school: this.school});
+				api.then(res => {
 					uni.showToast({
 						title: res.data,
 						icon: 'none'
@@ -228,6 +236,7 @@
 			//编辑个性签名
 			onEdit() {
 				if (this.userInfo.id == this.uid) {
+					this.fieldStr = str;
 					this.isShowSignature = true;
 					this.signature = this.userInfo.signature;
 					this.$refs.inputDialog.open();
@@ -256,6 +265,7 @@
 				myHomeApi().then(res => {
 					this.userInfo = res.data;
 					this.signature = this.userInfo.signature
+					this.school = this.userInfo.school
 					this.isMore = false;
 				}).catch(err => {
 					uni.showToast({

+ 1 - 0
mer_uniapp/pages/goods/goods_list/index.vue

@@ -486,6 +486,7 @@
 			},
 		},
 		onReachBottom() {
+			console.log(1111111111111111)
 			if (this.tabIndex === 2) {
 				this.getMerStreet();
 			}

+ 131 - 89
mer_uniapp/pages/trade_fair/home/index.vue

@@ -2,12 +2,21 @@
 	<view :data-theme="theme" class="discover_index">
 		<view class="page_con" :style="{height: windowHeight + 'px'}">
 			<view class="discover-header relative z-999">
-				<!-- #ifdef MP -->
-				<view class="cart_nav">
-					<nav-bar iconColor='#fff' ref="navBarRef" :navTitle="'二手交易'" backgroundColor="#FF6702" :isBackgroundColor="false">
-					</nav-bar>
+				<!-- #ifdef APP || MP -->
+				<view class="mp-header" :style="{ height: navH + 'rpx'}">
+					<view class="sys-head mp-header" :style="{ height: sysHeight+'px' }"></view>
+					<view class="select_nav flex justify-center align-center" id="home" :style="{top: sysHeight+'px'}">
+						<text class="iconfont icon-fanhui2 px-20" @tap="returns"></text>
+						<image @click="goUser" class="avatar" :src="userInfo.avatar ? userInfo.avatar : urlDomain+'crmebimage/presets/morenT.png'">
+						</image>
+						<!-- <text class="iconfont icon-gengduo5 px-20" @tap.stop="showNav"></text> -->
+						<text class="nav_line"></text>
+					</view>
+					<view class="nav_title mp-header" :style="{ height:  '80rpx',lineHeight:  '80rpx', color: '#fff', top: sysHeight+'px' }">
+						二手交易
+					</view>
 				</view>
-				<!-- #endif -->
+				<!--  #endif -->
 				<view class="discover-navTab acea-row row-middle bg--w111-fff mt-4">
 					<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>
@@ -21,7 +30,8 @@
 				<view class='search acea-row '>
 					<view class='input acea-row row-middle'>
 						<text class='iconfont icon-sousuo2'></text>
-						<input class="placeholder" type='text' :value='searchValue' :focus="focus" placeholder='请输入标题' placeholder-class='placeholder' @input="setValue" confirm-type="search" @confirm="searchBut()"></input>
+						<input class="placeholder" type='text' :value='searchValue' :focus="focus" placeholder='请输入标题' placeholder-class='placeholder'
+						 @input="setValue" confirm-type="search" @confirm="searchBut()"></input>
 					</view>
 					<view class='bnt' @tap='searchBut'>搜索</view>
 				</view>
@@ -38,69 +48,38 @@
 					</swiper>
 				</view>
 				<!-- 话题分类 -->
-				<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)">
-							<view class="flex-col flex-center">
-								<image class="w-44 h-44 mb-10" :src="item.icon" mode=""></image>
-								<view class="wall-font f-s-24 f-w-500">{{item.name}}</view>
-							</view>
-						</view>
-						<view class="flex-1 h-full flex-center longTab-item">
-							<navigator hover-class='none' url='/pages/merchant/user_sgin/index' class="item">
-								<view class="flex-col flex-center">
-									<image class="w-44 h-44 mb-10" :src="'/static/img/ic-wall-type-4.png'" mode=""></image>
-									<view class="wall-font f-s-24 f-w-500">签到</view>
-								</view>
-							</navigator>
-						</view>
-					</view>
+				<view class="mb-10 longTab">
+					<swiper :indicator-dots="true" :interval="interval" indicator-active-color="rgba(255, 103, 2, 1)" :current="swperId"
+					 @change="swiperIdChange">
+						<block v-for="item in swperIndex" :key="item">
+							<swiper-item :item-id="`${item}`">
+								<scroll-view scroll-x="true" style="white-space: nowrap; display: flex" show-scrollbar="false">
+									<block>
+										<view class="flex-wrap flex-y-center pt-30">
+											<view class="flex-col flex-center longTab-item mb-20" style="width: 20%;" v-for="(val, valIndex) in categoryList"
+											 :key="valIndex" v-if="val.swperIndex == item">
+												<image class="w-44 h-44 mb-10" :src="val.icon" mode=""></image>
+												<view class="wall-font f-s-24 f-w-500">{{val.name}}</view>
+											</view>
+										</view>
+									</block>
+								</scroll-view>
+							</swiper-item>
+						</block>
+					</swiper>
 				</view>
 			</view>
 			<view class="discover-boxsss">
-				<!-- 发现 -->
-				<scroll-view scroll-y="true" @scroll="followScroll" class="main h-full">
-					<view class="tab-cont h-full" id="main">
-						<!-- 发现 -->
-						<view class="h-full">
-							<swiper class="h-full" :interval="interval" indicator-color="rgba(255,255,255,0.6)" :current="swiperCurrent" @change="swiperChange">
-								<block v-for="(item,index) in categoryList" :key="index">
-									<swiper-item class="h-full" :item-id="`${item.id}`">
-										<scroll-view @scroll="scrollLeft" scroll-y="true" :show-scrollbar="false" class="scroll-view h-full"
-										 id="goods" refresher-enabled="true" :refresher-threshold="100" :refresher-triggered="triggeredDiscover"
-										 @refresherrefresh="onRefreshDiscover" @refresherpulling="onPulling" @refresherrestore="onRestore"
-										 @refresherabort="onAbort">
-											<view class="goods padbottom">
-												<view class="goods-wrap flex-1" id="goods" v-if="discoverList[item.id] && discoverList[item.id].goods.length">
-													<view>
-														<WaterfallsFlow v-if="discoverList[item.id].goods.length" :wfList="discoverList[item.id].goods" :type="1">
-															<template slot-scope="{items}">
-																<WaterfallsFlowItem :item="items" :type="1" :isStore="1" />
-															</template>
-														</WaterfallsFlow>
-													</view>
-												</view>
-												
-												<view class='loadingicon acea-row row-center-wrapper'>
-													<text class='loading iconfont icon-jiazai' :hidden='loading==false'></text>{{discoverList[item.id] &&discoverList[item.id].goods.length>0?loadTitle:''}}
-												</view>
-												<view class="empty-boxs noContent" v-if="discoverList[item.id] && discoverList[item.id].goods.length == 0 && !loading">
-													<emptyPage title="暂无内容~" mTop="13%" :imgSrc="urlDomain+'crmebimage/presets/noguanzhu.png'">
-													</emptyPage>
-												</view>
-												<view class="footerBottoms"></view>
-											</view>
-										</scroll-view>
-									</swiper-item>
-								</block>
-							</swiper>
-						</view>
-					</view>
-				</scroll-view>
+				<view class='noCommodity h-full'>
+					<!-- <scroll-view scroll-y="true" :show-scrollbar="false" class="scroll-view h-full" refresher-enabled="true"
+					 :refresher-threshold="100" @scrolltolower="onScrollBottom"> -->
+					<recommend ref="recommendIndex" class="mt-40"></recommend>
+					<!-- </scroll-view> -->
+				</view>
 			</view>
 			<view class="publish" @click="publish" :class="bottomNavigationIsCustom?'bottom':''">
-				<image class="w-116 h-116" src="/static/img/ic-fatie.png" mode=""></image>
+				<view><text class='iconfont icon-paizhao w-116 h-116'></text></view>
+				<!-- <image class="w-116 h-116" src="/static/img/ic-fatie.png" mode=""></image> -->
 			</view>
 
 		</view>
@@ -118,6 +97,14 @@
 		<uni-popup type="bottom" ref="goods">
 			<mentioned v-if="popupShow" :list="proList" @close="popup" class=""></mentioned>
 		</uni-popup>
+		<!-- 学校 -->
+		<uni-popup ref="schoolRef" :is-mask-click="false">
+			<view class="w-full flex-center" :style="{height: windowHeight + 'px'}">
+				<navigator hover-class='none' url='/pages/trade_fair/trade_fair_user/index'>
+					<image src="/static/img/ic-school.png" mode="heightFix" style="height: 694rpx;width: 616rpx;"></image>
+				</navigator>
+			</view>
+		</uni-popup>
 	</view>
 </template>
 
@@ -136,7 +123,7 @@
 		recommendAuthorListApi,
 		discoverListApi,
 		followListApi,
-		getReplyInfo
+		getSecondHandInfo
 	} from '@/api/discover.js';
 	import {
 		discoverFollowAuthor,
@@ -148,6 +135,7 @@
 		silenceBindingSpread,
 		getUserSpread
 	} from '@/utils/index.js';
+	import recommend from "@/components/base/recommend.vue";
 	import onShare from "@/mixins/onShare";
 	import discoverComment from '@/components/discoverComment/index.vue';
 	import animationType from '@/utils/animationType.js'
@@ -174,7 +162,8 @@
 			discoverDetails,
 			discoverComment,
 			mentioned,
-			TitleBox
+			TitleBox,
+			recommend
 		},
 		computed: {
 			...mapGetters(['globalData', 'isLogin', 'userInfo', 'bottomNavigationIsCustom']),
@@ -218,14 +207,7 @@
 					this.$store.commit('UPDATE_USERINFO', {});
 				}
 			})
-			getReplyInfo().then(res => {
-				this.bannerList = res.data.banner
-				this.wallHeadline = res.data.headline
-				console.log(res.data, 111111111111111)
-			}).catch(err => {
-				console.log(err)
-			})
-			this.getDiscoverList();
+			// this.getDiscoverList();
 			this.getCommunityCategoryList();
 
 			this._freshing = false;
@@ -249,6 +231,8 @@
 				theme: app.globalData.theme,
 				marTop: 0,
 				categoryList: [], //分类列表
+				swperIndex: [],
+				swperId: 0,
 				categoryId: '-1', //分类id
 				swiperCurrent: 0, //分类索引
 				isScroll: false, //是否是滑动
@@ -319,6 +303,7 @@
 			uni.$emit('scroll');
 		},
 		onShow() {
+			this.getHandInfo()
 			this.showCateDrawer = false;
 			this.getTokenIsExist();
 			//分销绑定
@@ -390,6 +375,20 @@
 					})
 				}
 			},
+			getHandInfo() {
+				getSecondHandInfo().then(res => {
+					this.bannerList = res.data.banner
+					this.wallHeadline = res.data.headline
+					console.log(res.data, 111111111111111)
+					if (!res.data.school) {
+						this.$refs.schoolRef.open('top')
+					} else {
+						this.$refs.schoolRef.close()
+					}
+				}).catch(err => {
+					console.log(err)
+				})
+			},
 			getNavH(marTop) {
 				// #ifdef H5
 				this.marTop = 30;
@@ -569,14 +568,14 @@
 				if (this.isLogin) {
 					// #ifdef MP || H5
 					uni.navigateTo({
-						url: `/pages/discover/discover_release/index`
+						url: `/pages/discover/discover_release/index?fair=${true}`
 					})
 					// #endif  
 					// #ifdef APP-PLUS
 					uni.navigateTo({
 						animationType: animationType.type,
 						animationDuration: animationType.duration,
-						url: `/pages/discover/discover_release/index`
+						url: `/pages/discover/discover_release/index?fair=${true}`
 					})
 					// #endif
 				} else {
@@ -623,6 +622,16 @@
 					}
 				}
 			},
+			swiperIdChange(e) {
+				let {
+					current,
+					source,
+					currentItemId
+				} = e.detail;
+				if (source === 'autoplay' || source === 'touch') {
+					console.log(current, source, currentItemId)
+				}
+			},
 			/*******************发现列表滑动中用到的方法结束*********************/
 
 			// 去个人主人
@@ -632,14 +641,14 @@
 				} else {
 					// #ifdef MP || H5
 					uni.navigateTo({
-						url: '/pages/discover/discover_user/index'
+						url: `/pages/trade_fair/trade_fair_user/index`
 					})
 					// #endif  
 					// #ifdef APP-PLUS
 					uni.navigateTo({
 						animationType: animationType.type,
 						animationDuration: animationType.duration,
-						url: '/pages/discover/discover_user/index'
+						url: `/pages/trade_fair/trade_fair_user/index`
 					})
 					// #endif
 				}
@@ -716,13 +725,32 @@
 			},
 			//分类列表
 			getCommunityCategoryList() {
-				let data = [{
-					name: "全部",
-					id: '-1',
-					icon: '/static/img/ic-wall-type--1.png'
-				}];
 				communityCategoryListApi().then(res => {
-					this.categoryList = Array.from(new Set([...data, ...res.data]));
+					let arr = []
+					let arrs = []
+					arr.push(...res.data)
+					arr.push(...res.data)
+					arr.push(...res.data)
+					arr.push(...res.data)
+					arr.push(...res.data)
+					arr.push(...res.data)
+					arr.push(...res.data)
+					let swperIndex = 1;
+					let swperArr = [0];
+					arr.forEach((item, index) => {
+						item.id = index
+						if ((index + 1) > (swperIndex * 10)) {
+							swperIndex++
+							swperArr.push(swperIndex - 1)
+							item.swperIndex = (swperIndex - 1)
+						} else {
+							item.swperIndex = (swperIndex - 1)
+						}
+						arrs.push({ ...item
+						})
+					})
+					this.swperIndex = swperArr
+					this.categoryList = arrs
 				})
 			},
 
@@ -739,6 +767,9 @@
 				this.where.categoryId = item.id;
 				this.showCateDrawer = false
 				this.getDiscoverList();
+			},
+			onReachBottom() {
+				this.$refs.recommendIndex.get_host_product();
 			}
 		}
 	}
@@ -771,7 +802,7 @@
 		position: fixed;
 		font-size: 18px;
 		line-height: 58rpx;
-		z-index: 1000;
+		z-index: 99999;
 		left: 14rpx;
 	}
 
@@ -780,10 +811,17 @@
 		color: #fff;
 		font-size: 36rpx;
 		position: fixed;
+		z-index: 9999;
 		text-align: center;
 		left: 0;
 		right: 0;
-		margin: auto;
+		margin-top: -1px;
+	}
+	
+	.sys-head {
+		width: 100%;
+		position: fixed;
+		z-index: 9999;
 	}
 
 	.banner-img {
@@ -868,7 +906,7 @@
 
 	.publish {
 		position: fixed;
-		z-index: 9999;
+		z-index: 999;
 		width: 100rpx;
 		height: 100rpx;
 		opacity: 1;
@@ -1212,17 +1250,18 @@
 		font-size: 27rpx;
 		color: #141414;
 	}
-	
+
 	.discover-boxsss {
 		background-color: #fff;
 		width: 100%;
 		flex: 1;
 	}
-	
+
 	.search {
 		background-color: #fff;
 		padding: 0rpx 10rpx 10rpx 38rpx;
 	}
+
 	.search .input {
 		width: 590rpx;
 		background-color: #f7f7f7;
@@ -1231,14 +1270,17 @@
 		box-sizing: border-box;
 		height: 66rpx;
 	}
+
 	.search .input input {
 		width: 460rpx;
 		font-size: 28rpx;
 	}
+
 	.search .input .iconfont {
 		color: #000;
 		font-size: 35rpx;
 	}
+
 	.search .bnt {
 		text-align: center;
 		height: 66rpx;

+ 683 - 0
mer_uniapp/pages/trade_fair/trade_fair_user/index.vue

@@ -0,0 +1,683 @@
+<template>
+	<view class="container" :data-theme="theme">
+		<!-- :style="userInfo.avatar?{ backgroundImage: `url(${userInfo.avatar})` }: ''" -->
+		<!-- #ifdef MP || APP -->
+		<NavBar navTitle="个人主页" :isBackgroundColor="false" iconColor='#fff'></NavBar>
+		<!-- #endif -->
+		<view class="header">
+			<view class="header-bg" :style="{'background-image': userInfo.avatar}">
+				<img :src="userInfo.avatar" alt="">
+				<view class="header-bg-mc"></view>
+			</view>
+
+			<view class="user_wrapper flex-between-center">
+				<image v-if="userInfo.userLevelIcon" class="level_icon" :src="userInfo.userLevelIcon" alt="">
+					<view class="flex-y-center row-middle">
+						<image :src="userInfo.avatar || urlDomain+'crmebimage/presets/morenT.png'" class="picture">
+						</image>
+						<view class="user_text flex-1">
+							<view class="name acea-row">
+								<text>{{userInfo.isLogoff ? "用户已注销": (userInfo.nickname || '')}}</text>
+							</view>
+							<!-- <view v-if="userInfo.id" class="user_id">ID: {{userInfo.id || ''}}</view> -->
+							<view class="flex-between-center mt-16" @click="onEdit('school')">
+								<view class="user_id">学校: {{school || '暂无'}}</view>
+								<text v-show="userInfo.id==uid" class="ml10 iconfont icon-fabuzhongcao"></text>
+							</view>
+						</view>
+					</view>
+					<view v-if="id && id!=uid" @click.stop="followAuthor">
+						<button v-if="!userInfo.isConcerned" class="follow_btn focus">
+							<text class="iconfont icon-jiahao2"></text>关注
+						</button>
+						<button v-else class="follow_btn focused">已关注</button>
+					</view>
+					<view v-if="userInfo.id==uid">
+						<navigator hover-class="none" :url="`/pages/discover/discover_release/index?fair=${true}`"
+							class="follow_btn focus bg-color">
+							去发布
+						</navigator>
+					</view>
+			</view>
+			<view class="acea-row plant_info" @click="onEdit('signature')">
+				<view v-if="!userInfo.signature && userInfo.id==uid">点击可编辑个性签名</view>
+				<view class="" v-if="userInfo.signature" style="width: 92%;">
+					<view class="acea-row" v-if="userInfo.isMore || userInfo.signature.length<=30">
+						<text class="signature">{{userInfo.signature}}</text>
+						<text v-if="userInfo.isMore" class="more" @click.stop="moreTap">收起</text>
+					</view>
+					<view v-else class="acea-row">
+						<text class="info signature">{{userInfo.signature.slice(0,23)}}...</text>
+						<text class="more" @click.stop="moreTap"> 展开</text>
+					</view>
+				</view>
+				<text v-show="userInfo.id==uid" class="ml10 iconfont icon-fabuzhongcao"></text>
+			</view>
+
+			<view class="plant_info" style="padding-bottom: 30rpx;">
+				<view class="count_wrapper acea-row">
+					<navigator :url="!id ? '/pages/discover/discover_follow/index?type=follow' : ''" class="item"
+						hover-class="none">
+						<text class="mr10">{{userInfo.concernedNum}}</text> 关注
+					</navigator>
+					<navigator :url="!id ? '/pages/discover/discover_follow/index?type=fans' : ''" class="item"
+						hover-class="none">
+						<text class="mr10">{{userInfo.fansNum}}</text> 粉丝
+					</navigator>
+					<view class="item">
+						<text class="mr10">{{userInfo.likeNum}}</text> 获赞
+					</view>
+				</view>
+			</view>
+			<view v-if="!id && isShow" class="tab_count relative">
+				<text @click.stop="changeTab(0)" :class="tab==0 ? 'on' : ''">我发布的</text>
+				<text @click.stop="changeTab(1)" :class="tab==1 ? 'on' : ''">我想要的</text>
+				<text @click.stop="changeTab(2)" :class="tab==2 ? 'on' : ''">我收藏的</text>
+			</view>
+		</view>
+		<view class="main">
+			<view class="tab-conts">
+				<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>
+					</view>
+				</view>
+				<view class="empty-boxs noContent" v-if="list.length == 0 && !loading">
+					<emptyPage title="暂无更多内容~" mTop="13%" :imgSrc="urlDomain+'crmebimage/presets/noguanzhu.png'">
+					</emptyPage>
+				</view>
+				<view class='loadingicon acea-row row-center-wrapper'>
+					<text class='loading iconfont icon-jiazai' :hidden='loading==false'></text>
+					<view class="end" :hidden="loading || list.length == 0"><text
+							:class="loaded ? 'loaded' : ''">{{loadTitle}}</text>
+					</view>
+				</view>
+			</view>
+		</view>
+
+		<uni-popup ref="inputDialog" type="dialog">
+			<view v-if="isShowSignature" class="tui-modal-custom">
+				<view class="fs-32 fw-500 lh-44rpx text-center">{{fieldStr == 'signature' ? '编辑简介' : '编辑学校'}}</view>
+				<view class="mt-24 bg--w111-f5f5f5 rd-16rpx p-24">
+					<textarea v-if="fieldStr == 'signature'" class="w-full fs-26 h-342" ref="myTextarea" v-model="signature" :focus="focus"
+						 :always-embed="true" :adjust-position="true" cursor-spacing="85rpx"
+						placeholder="请输入内容" :maxlength="100" name="desc" />
+					<input v-if="fieldStr == 'school'" class="placeholder" type='text' v-model='school' :focus="focus"
+					 placeholder='请输入学校' placeholder-class='placeholder'></input>
+				</view>
+				<view class="flex-between-center mt-40">
+					<view class="w-244 h-72 rd-36rpx flex-center fs-26 font-color close-btn" @tap="handleInputClose">取消
+					</view>
+					<view class="w-244 h-72 rd-36rpx flex-center bg-color text--w111-fff fs-26"
+						@tap="handleInputConfirm">保存
+					</view>
+				</view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+	// +----------------------------------------------------------------------
+	// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+	// +----------------------------------------------------------------------
+	// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+	// +----------------------------------------------------------------------
+	// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+	// +----------------------------------------------------------------------
+	// | Author: CRMEB Team <admin@crmeb.com>
+	// +----------------------------------------------------------------------
+	import WaterfallsFlow from '@/components/WaterfallsFlow/WaterfallsFlow.vue'
+	import WaterfallsFlowItem from '@/components/discoverFlowItem/discoverFlowItem.vue'
+	import emptyPage from '@/components/emptyPage.vue';
+	import NavBar from '@/components/navBar.vue';
+	import {
+		userHomeApi,
+		myHomeApi,
+		authorNoteApi,
+		myNoteApi,
+		myLikeListApi,
+		editSignatureApi,
+		editSchoolApi
+	} from '@/api/discover.js';
+	import {
+		toLogin
+	} from '@/libs/login.js';
+	import {
+		mapGetters
+	} from "vuex";
+	import {
+		discoverFollowAuthor
+	} from '@/libs/follow.js';
+	const app = getApp();
+	let sysHeight = uni.getSystemInfoSync().statusBarHeight;
+	export default {
+		components: {
+			WaterfallsFlow,
+			WaterfallsFlowItem,
+			emptyPage,
+			NavBar
+		},
+		data() {
+			return {
+				sysHeight: sysHeight,
+				urlDomain: this.$Cache.get("imgHost"),
+				theme: app.globalData.theme,
+				list: [], // 内容列表
+				loadTitle: '加载更多',
+				loading: false,
+				loaded: false,
+				isShowAuth: false, //是否隐藏授权
+				isAuto: false, //没有授权的不会自动授权
+				userInfo: {},
+				where: {
+					page: 1,
+					limit: 10
+				},
+				tab: 0,
+				id: '', //作者id
+				isShow: false,
+				focus: false,
+				isShowSignature: false, // 是否显示简介编辑内容
+				signature: '', //弹窗中的签名
+				school: '',
+				fieldStr: ''
+			}
+		},
+		created() {},
+		computed: {
+			...mapGetters(['isLogin', 'uid']),
+		},
+		watch: {},
+		onLoad: function(options) {
+			this.id = options.id ? options.id : '';
+		},
+		onShow() {
+			if (this.id) {
+				this.isShow = false
+				this.getUserHome(this.id);
+				this.authorNoteList();
+			} else {
+				this.isShow = true
+				this.getMyHome();
+				this.myNoteList();
+			}
+		},
+		onReady() {},
+		mounted: function() {},
+		methods: {
+			moreTap() {
+				this.$set(this.userInfo, 'isMore', !this.userInfo.isMore)
+			},
+			//个性签名取消
+			handleInputClose() {
+				this.$refs.inputDialog.close()
+				this.isShowSignature = false;
+			},
+			//个性签名保存
+			handleInputConfirm() {
+				const api = this.fieldStr == 'signature' ? editSignatureApi({signature: this.signature}) : editSchoolApi({school: this.school});
+				api.then(res => {
+					uni.showToast({
+						title: res.data,
+						icon: 'none'
+					})
+					this.getMyHome();
+				}).catch(err => {
+					uni.showToast({
+						title: err,
+						icon: 'none'
+					})
+				});
+				// 关闭窗口后,恢复默认内容
+				this.$refs.inputDialog.close()
+				this.isShowSignature = false;
+			},
+			//编辑个性签名
+			onEdit(str) {
+				if (this.userInfo.id == this.uid) {
+					this.fieldStr = str;
+					this.isShowSignature = true;
+					this.signature = this.userInfo.signature;
+					this.$refs.inputDialog.open();
+				}
+
+			},
+			//回退页面之后重新加载页面
+			reFresh() {
+				this.loading = false;
+				this.loaded = false;
+				this.where = {
+					page: 1,
+					limit: 10
+				}
+				this.list = []
+				if (this.id) {
+					this.getUserHome(this.id);
+					this.authorNoteList();
+				} else {
+					this.getMyHome();
+					this.myNoteList();
+				}
+			},
+			//获取我的用户信息
+			getMyHome() {
+				myHomeApi().then(res => {
+					this.userInfo = res.data;
+					this.signature = this.userInfo.signature
+					this.school = this.userInfo.school
+					this.isMore = false;
+				}).catch(err => {
+					uni.showToast({
+						title: err,
+						icon: 'none'
+					})
+				});
+			},
+			//逛逛用户主页
+			getUserHome(id) {
+				userHomeApi(id).then(res => {
+					this.userInfo = res.data
+				}).catch(err => {
+					uni.showToast({
+						title: err,
+						icon: 'none'
+					})
+				});
+			},
+			// 关注作者
+			followAuthor: function() {
+				if (this.isLogin) {
+					if (this.userInfo.isLogoff) return;
+					discoverFollowAuthor(this.id).then(() => {
+						this.$set(this.userInfo, 'isConcerned', !this.userInfo.isConcerned);
+					});
+				} else {
+					toLogin();
+				}
+			},
+			changeTab(tab) {
+				this.tab = tab
+				this.where.page = 1
+				this.loaded = this.loading = false
+				this.list = []
+				if (tab === 0) {
+					this.myNoteList();
+				} else {
+					this.myLikeList();
+				}
+			},
+			// 获取我的点赞作品
+			myLikeList: function() {
+				let that = this;
+				if (that.loaded || that.loading) return;
+				that.loading = true;
+				that.loadTitle = '';
+				myLikeListApi(that.where).then(res => {
+					let list = res.data.list;
+					let goods = that.$util.SplitArray(list, that.list);
+					that.loaded = list.length < that.where.limit;
+					that.loading = false;
+					that.loadTitle = that.loaded ? '到底了' : '加载更多';
+					that.$set(that, 'list', goods);
+					that.$set(that.where, 'page', that.where.page + 1);
+				}).catch(err => {
+					that.loading = false;
+					uni.showToast({
+						title: err,
+						icon: 'none'
+					})
+				})
+			},
+			// 获取我的的作品 
+			myNoteList: function() {
+				let that = this;
+				if (that.loaded || that.loading) return;
+				that.loading = true;
+				that.loadTitle = '';
+				myNoteApi(that.where).then(res => {
+					let list = res.data.list;
+					let goods = that.$util.SplitArray(list, that.list);
+					that.loaded = list.length < that.where.limit;
+					that.loading = false;
+					that.loadTitle = that.loaded ? '到底了' : '加载更多';
+					that.$set(that, 'list', goods);
+					that.$set(that.where, 'page', that.where.page + 1);
+				}).catch(err => {
+					that.loading = false;
+					uni.showToast({
+						title: err,
+						icon: 'none'
+					})
+				})
+			},
+			// 作者的作品
+			authorNoteList: function() {
+				let that = this;
+				if (that.loaded || that.loading) return;
+				that.loading = true;
+				that.loadTitle = '';
+				this.where.authorId = this.id
+				authorNoteApi(this.where.authorId, that.where).then(res => {
+					let list = res.data.list;
+					let goods = that.$util.SplitArray(list, that.list);
+					that.loaded = list.length < that.where.limit;
+					that.loading = false;
+					that.loadTitle = that.loaded ? '到底了' : '加载更多';
+					that.$set(that, 'list', goods);
+					that.$set(that.where, 'page', that.where.page + 1);
+				}).catch(err => {
+					that.loading = false;
+					uni.showToast({
+						title: err,
+						icon: 'none'
+					})
+				})
+			}
+		},
+		onReachBottom() {
+			if (this.id) {
+				this.authorNoteList();
+			} else {
+				if (this.tab === 0) {
+					this.myNoteList();
+				} else {
+					this.myLikeList();
+				}
+			}
+		},
+		onPullDownRefresh() {},
+		// 滚动监听
+		onPageScroll(e) {
+			// 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
+			uni.$emit('scroll');
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.close-btn {
+		@include coupons_border_color(theme);
+	}
+
+	.tui-modal-custom {
+		width: 600rpx;
+		position: relative;
+		box-sizing: border-box;
+		padding: 40rpx;
+		border-radius: 16px;
+		background-color: #fff;
+		z-index: 9999;
+
+		.h-342 {
+			min-height: 268rpx;
+			max-height: 268rpx;
+			;
+			overflow-y: scroll;
+		}
+	}
+
+	.signature {
+		overflow: hidden;
+		display: -webkit-box;
+		-webkit-line-clamp: 5;
+		-webkit-box-orient: vertical;
+		text-overflow: ellipsis;
+		width: 88%;
+	}
+
+	.goods-wrap {
+		padding-top: 24rpx;
+	}
+
+	.more {
+		font-weight: 600;
+		margin-left: 8rpx;
+	}
+
+	.container {
+		background: #ffffff;
+		min-height: 100vh;
+	}
+
+	.header-bg {
+		position: absolute;
+		width: 100%;
+		height: 650rpx;
+		top: 0;
+		/* #ifdef MP || APP-PLUS */
+		z-index: -1;
+		/* #endif */
+		/* #ifdef H5 */
+		z-index: 0;
+		/* #endif */
+		z-index: 0;
+		filter: blur(0);
+		overflow: hidden;
+
+		img {
+			width: 100%;
+			height: 100%;
+			filter: blur(16rpx);
+			transform: scale(1.5);
+		}
+
+		.header-bg-mc {
+			position: absolute;
+			top: 0;
+			width: 100%;
+			height: 100%;
+			background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.1) 39%, rgba(0, 0, 0, 0.7) 100%);
+		}
+	}
+
+	.header {
+		width: 750rpx;
+		padding: 20rpx 0 0;
+		box-sizing: border-box;
+		background: linear-gradient(360deg, #72798E 0%, #384857 99%);
+		opacity: 1;
+
+		.tab_count {
+			text-align: center;
+			background: #ffffff;
+			padding: 30rpx 0 15rpx 0;
+			border-radius: 12px 12px 0 0;
+
+			text {
+				font-size: 28rpx;
+				color: #999999;
+				margin: 0 30rpx;
+				position: relative;
+				padding-bottom: 14rpx;
+
+				&.on {
+					font-size: 32rpx;
+					color: #282828;
+					font-weight: bold;
+
+					&::after {
+						content: "";
+						width: 80%;
+						height: 5rpx;
+						@include main_bg_color(theme);
+						position: absolute;
+						bottom: 0;
+						left: 12rpx;
+					}
+
+					.underline {
+						opacity: 1;
+					}
+				}
+			}
+		}
+
+		.user_wrapper {
+			align-items: center;
+			justify-content: space-between;
+			padding: 0 34rpx;
+			position: relative;
+
+			.level_icon {
+				position: absolute;
+				width: 38rpx;
+				height: 38rpx;
+				margin: 4rpx 0 0 6rpx;
+				border: none;
+				z-index: 11;
+				bottom: 2rpx;
+				left: 124rpx;
+			}
+
+			.image,
+			uni-image,
+			image {
+				width: 140rpx;
+				height: 140rpx;
+				border-radius: 100%;
+				border: 4rpx solid #ffffff;
+			}
+
+			.user_text {
+				margin-left: 30rpx;
+				color: #FFFFFF;
+
+				.name {
+					font-size: 34rpx;
+					font-weight: bold;
+					align-items: center;
+				}
+
+				.user_id {
+					text-overflow: ellipsis;
+					white-space: nowrap;
+					overflow: hidden;
+					max-width: 300rpx;
+					font-size: 24rpx;
+				}
+			}
+		}
+
+		.plant_info {
+			position: relative;
+			padding: 0 34rpx;
+			margin-top: 30rpx;
+			justify-content: space-between;
+			color: #ffffff;
+			font-size: 24rpx;
+
+			.count_wrapper {
+				color: #FFFFFF;
+				font-size: 24rpx;
+
+				.item {
+					text-align: center;
+					margin-right: 60rpx;
+
+					&:last-child {
+						margin-right: 0;
+					}
+
+					text {
+						font-size: 30rpx;
+						margin-top: 10rpx;
+					}
+				}
+			}
+		}
+
+		.iconfont {
+			font-size: 24rpx;
+			margin-right: 12rpx;
+		}
+
+		.follow_btn {
+			color: #ffffff;
+			font-size: 26rpx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			width: 146rpx;
+			height: 62rpx;
+			@include linear-gradient(theme);
+			border-radius: 33rpx;
+
+			.icon-fabu {
+				font-size: 24rpx;
+			}
+
+			&.focused {
+				background: transparent;
+				color: #FFFFFF;
+				border: 1px solid #FFFFFF;
+			}
+		}
+	}
+
+	.main {
+		background: #ffffff;
+		position: relative;
+	}
+
+	.goods {
+		// display: flex;
+		// flex-wrap: wrap;
+		// justify-content: space-between;
+		// width: 750rpx;
+		padding: 0 24rpx;
+	}
+
+	.empty {
+		margin: 130rpx 0 150rpx;
+		text-align: center;
+
+		image,
+		uni-image {
+			display: inline-block;
+			width: 414rpx;
+			height: 305rpx;
+		}
+
+		text {
+			display: block;
+			color: #999999;
+			font-size: 26rpx;
+		}
+	}
+
+	.end {
+		margin-top: 50rpx 0;
+		text-align: center;
+
+		text {
+			color: #999999;
+			font-size: 22rpx;
+			position: relative;
+
+			&.loaded {
+
+				&::before,
+				&::after {
+					content: "";
+					display: inline-block;
+					width: 22rpx;
+					height: 1rpx;
+					background: #999999;
+					position: absolute;
+					top: 18rpx;
+					opacity: .5;
+				}
+
+				&::before {
+					left: -30rpx;
+				}
+
+				&::after {
+					right: -30rpx;
+				}
+			}
+		}
+	}
+</style>

binární
mer_uniapp/static/img/ic-school.png


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů