ソースを参照

commit -m 新品橱窗

zhengjinyi 3 年 前
コミット
7599f4406c

+ 7 - 0
components/cm-module/cm-seller/home.vue

@@ -12,6 +12,8 @@
 			<notice :list="newsList" v-if="isNavRequest && newsList.length>0 "></notice>
 			<!-- 直播 -->
 			<page-special :templateData="templateData" v-if="isLiveRequest"></page-special>
+			<!-- 新品橱窗 -->
+			<hot-floor :list="hotListPageFloor" :usserIdentity="userIdentity" v-if="isRequest"></hot-floor>
 		</view>	
 		<!-- 楼层 -->
 		<view class="container-section tui-skeleton">
@@ -32,6 +34,7 @@
 	import banner from '@/components/cm-module/homeIndex/banner.vue'
 	import navbars from '@/components/cm-module/homeIndex/navbars.vue'
 	import notice from '@/components/cm-module/homeIndex/notice.vue'
+	import hotFloor from '@/components/cm-module/homeIndex/hotFloor.vue'
 	import pageFloor from '@/components/cm-module/homeIndex/pageFloor.vue'
 	import pageSpecial from '@/components/cm-module/homeIndex/pageSpecial.vue'
 	import supplierList from '@/components/cm-module/homeIndex/supplierList.vue'
@@ -43,6 +46,7 @@
 			banner,
 			navbars,
 			notice,
+			hotFloor,
 			pageFloor,
 			pageSpecial,
 			supplierList
@@ -71,6 +75,7 @@
 				navBarsList:[],//导航分类
 				newsList:[],				// 公告
 				templateData:{},
+				hotListPageFloor:[],					// 新品橱窗
 				pageList:[],//楼层
 				supplierObj:{},//供应商列表
 				isScrollTop:false,
@@ -108,6 +113,8 @@
 				this.CommonService.GetHomeDataInfo({userId:this.userID,soure:2}).then(response =>{
 					let data = response.data
 					this.pageList = data.homePageFloor
+					this.hotListPageFloor =  data.PageFloor
+					console.log('hotListPageFloor',this.hotListPageFloor)
 					this.supplierObj = data.supplierImage
 					this.isRequest = true
 				}).catch(error =>{

+ 2 - 2
components/cm-module/cm-seller/user.vue

@@ -82,12 +82,12 @@
 			</view>
 			<!-- 底部跳转 -->
 			<view class="foot-list">
-				<view class="list-cell-image" @click="navigator('/pages/user/coupon/coupon-activity')">
+				<!-- <view class="list-cell-image" @click="navigator('/pages/user/coupon/coupon-activity')">
 					<view class="text">
 						<view class="h1">美博会</view>
 						<view class="p">大额好券等你来领~</view>
 					</view>
-				</view>
+				</view> -->
 				<view class="list-cell-item">
 					<view class="list-cell"  v-for="(item, index) in firstList" :key="index" @click="navigator(item.path)" hover-class="cell-hover" :hover-stay-time="50">
 						<view class="cell-icon">

+ 288 - 0
components/cm-module/homeIndex/hotFloor.vue

@@ -0,0 +1,288 @@
+<template>
+	<view>
+		<view class="section_hot clearfix" v-for="(page, index) in list" :key="index">
+			<view class="tui-group-name">
+				<view class="tui-group-title">
+					<view class="tui-group-l">{{ page.title }}</view>
+				</view>
+				<view class="tui-sub__desc">{{ page.detail }}</view>
+				<view
+					class="tui-group-r"
+					@click="NavtoHotPage"
+				>
+				</view>
+			</view>
+			<template>
+				<templateL :pageData="page" :userIdentity="userIdentity"></templateL>
+			</template>
+		</view>
+	</view>
+</template>
+
+<script>
+import templateL from '@/components/cm-module/pageTemplate/templateL.vue'
+export default {
+	name: 'pageFloor',
+	components: {
+		templateL
+	},
+	props: {
+		list: {
+			type: Array
+		},
+		userIdentity: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			
+		}
+	},
+	created() {
+		console.log('this.list',this.list)
+	},
+	watch: {
+		list: {
+			handler: function (el) {//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.list = el
+			},
+			deep: true
+		}
+	},
+	methods: {
+		NavtoHotPage(){//跳新品橱窗页
+			this.$api.navigateTo('/pages/goods/good-hot')
+		},
+		NavToDetailPage(page) {
+			//跳转
+			this.$api.navigateTo(
+				`/pages/goods/good-floorMore?pageType=${this.pageType}&floorId=${page.id}&title=${
+					page.title
+				}`
+			)
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.section_hot {
+	width: 100%;
+	height: 1290rpx;
+	background: url(https://static.caimei365.com/app/img/hot/hot-bg.png);
+	background-size: cover;
+	box-sizing: border-box;
+	padding: 0 24rpx;
+	float: left;
+}
+.tui-group-name {
+	width: 100%;
+	height: 165rpx;
+	box-sizing: border-box;
+	padding: 40rpx 0 20rpx 0;
+	position: relative;
+	.tui-group-r {
+		width: 144rpx;
+		height: 54rpx;
+		background: url(https://static.caimei365.com/app/img/hot/hot-bt@2x.png);
+		background-size: cover;
+		position: absolute;
+		right: 16rpx;
+		top: 69rpx;
+	}
+}
+.tui-group-title {
+	width: 100%;
+	height: 50rpx;
+	line-height: 50rpx;
+	float: left;
+	.tui-group-l {
+		float: left;
+		font-size: 38rpx;
+		font-weight: bold;
+		text-align: left;
+		color: #ffffff;
+	}
+}
+.tui-sub__desc {
+	width: 100%;
+	float: left;
+	line-height: 50rpx;
+	color: #ffffff;
+	font-size: $font-size-28;
+}
+.section_page_main {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	.recommend-list {
+		width: 100%;
+		height: 1100rpx;
+		position: relative;
+		padding-bottom: 20rpx;
+		.tui-banner-swiper {
+			width: 100%;
+			margin: 0 auto;
+			height: 1100rpx;
+			overflow: hidden;
+			transform: translateY(0);
+			.floor-item {
+				width: 339rpx;
+				height: 516rpx;
+				margin-right: 20rpx;
+				font-size: $font-size-24;
+				color: $text-color;
+				background: #ffffff;
+				line-height: 36rpx;
+				border-radius: 16rpx;
+				margin-bottom: 20rpx;
+				float: left;
+				box-sizing: border-box;
+				position: relative;
+				&:nth-child(2n) {
+					margin-right: 0;
+				}
+				.item-img {
+					width: 339rpx;
+					height: 339rpx;
+					border-radius: 16rpx 16rpx 0 0;
+					display: block;
+					margin-bottom: 8rpx;
+				}
+				.floor-item_tag {
+					width: 100%;
+					height: 32rpx;
+					float: left;
+					margin: 20rpx 0;
+					padding: 0 20rpx;
+					box-sizing: border-box;
+					text {
+						display: inline-block;
+						padding: 0 8rpx;
+						border: 1px solid #e3ebf7;
+						border-radius: 8rpx;
+						color: #9aa5b5;
+						font-size: $font-size-22;
+						line-height: 32rpx;
+						text-align: center;
+						float: left;
+					}
+				}
+				.floor-item-content {
+					width: 100%;
+					padding: 0 20rpx;
+					box-sizing: border-box;
+				}
+				.floor-item-act {
+					display: block;
+					width: 100%;
+					height: 32rpx;
+					text-align: center;
+					box-sizing: border-box;
+				}
+				.title-none {
+					font-size: $font-size-26;
+					color: #ff2a2a;
+					line-height: 54rpx;
+				}
+				.title {
+					width: 100%;
+					height: 70rpx;
+					display: flex;
+					line-height: 35rpx;
+					flex-direction: column;
+					margin: 8rpx 0;
+					padding: 0;
+					position: relative;
+					.mclap {
+						width: 100%;
+						line-height: 35rpx;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						word-break: break-all;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 2;
+						overflow: hidden;
+						font-size: 26rpx;
+						&.indent {
+							text-indent: 95rpx;
+						}
+					}
+					.mclap-tag {
+						display: block;
+						width: 84rpx;
+						height: 32rpx;
+						background-image: linear-gradient(270deg, #f9c023 0%, #f83600 100%);
+						border-radius: 4rpx 48rpx 4px 4px;
+						line-height: 32rpx;
+						font-size: $font-size-22;
+						color: #ffffff;
+						text-align: center;
+						position: absolute;
+						left: 0;
+						top: 0;
+					}
+				}
+				.no-price {
+					height: 54rpx;
+					line-height: 54rpx;
+					display: flex;
+					box-sizing: border-box;
+					.p-no {
+						font-size: $font-size-28;
+						color: $text-color;
+						display: block;
+						float: left;
+					}
+					.p-stars {
+						float: left;
+					}
+				}
+				.price {
+					color: #ff2a2a;
+					line-height: 54rpx;
+					&.none {
+						text-decoration: line-through;
+						color: #999999;
+					}
+					.sm {
+						font-size: $font-size-24;
+					}
+					.big {
+						font-size: $font-size-28;
+					}
+				}
+			}
+		}
+	}
+	.swiper__recommenddots-box {
+		position: absolute;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		height: 60rpx;
+		.swiper__dots-item {
+			width: 8rpx;
+			height: 8rpx;
+			border-radius: 100%;
+			margin-left: 6px;
+			background-color: #FFFFFF;
+		}
+		.swiper__dots-long {
+			width: 32rpx;
+			height: 8rpx;
+			border-radius: 4rpx;
+			background-color: #FFFFFF;
+			transition: all 0.4s;
+		}
+	}
+}
+</style>

+ 407 - 0
components/cm-module/pageTemplate/templateL.vue

@@ -0,0 +1,407 @@
+<template>
+	<view class="section_page_main clearfix">
+		<view class="recommend-list" :style="hasLessProduct ? 'height:269px' : ''">
+			<swiper
+				class="tui-banner-swiper"
+				:autoplay="true"
+				:interval="6000"
+				:duration="200"
+				:circular="true"
+				@change="swiperChange"
+				:style="hasLessProduct ? 'height:269px' : ''"
+			>
+				<swiper-item v-for="(product, index) in productList" :key="index">
+					<view
+						class="floor-item ad_04 clearfix"
+						v-for="(pros, idx) in product"
+						:key="idx"
+						@click.stop="navToDetailPage(pros)"
+					>
+						<image class="item-img tui-skeleton-fillet" :src="pros.mainImage" mode="aspectFill"></image>
+						<template-Type :product="pros"></template-Type>
+						<view class="floor-item-content">
+							<view class="title tui-skeleton-rect">
+								<text class="mclap-tag" v-if="pros.beautyActFlag == '1'">美博会</text>
+								<text class="mclap" :class="pros.beautyActFlag == '1' ? 'indent' : ''"
+									>{{ pros.name }}
+								</text>
+							</view>
+							<view class="floor-item-price">
+								<template>
+									<template-Tags :product="pros"></template-Tags>
+								</template>
+								<view v-if="hasLogin">
+									<template v-if="pros.productCategory == 1">
+										<template-Price  :product="pros"></template-Price>
+									</template>
+									<template v-else>
+										<view class="price tui-skeleton-rect" v-if="pros.detailTalkFlag == '2'">
+											<text class="p sm">¥</text> <text class="p big">价格详聊</text>
+										</view>
+										<view class="price tui-skeleton-rect" v-else>
+											<text class="p sm">¥</text>
+											<text class="p big">{{ pros.price | NumFormat }}</text>
+										</view>
+									</template>
+								</view>
+								<view v-else class="no-price">
+									<template v-if="pros.productCategory == 1">
+										<view class="p-stars">
+											<text class="p-no">¥</text>
+											<uni-grader
+												:grade="Number(pros.priceGrade)"
+												:margin="14"
+											></uni-grader>
+										</view>
+									</template>
+									<template v-else>
+										<view class="p-stars"> <text class="p-no">¥登录可见</text> </view>
+									</template>
+								</view>
+							</view>
+						</view>
+					</view>
+				</swiper-item>
+			</swiper>
+			<view class="swiper__recommenddots-box" v-if="productList.length > 1">
+				<view
+					v-for="(item, idx) in productList"
+					:key="idx"
+					:class="[idx === swiperCurrent ? 'swiper__dots-long' : 'none']"
+					:data-index="swiperCurrent"
+					class="swiper__dots-item"
+				>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import uniGrader from '@/components/uni-grade/uni-grade.vue'
+import templateTags from '@/components/cm-module/pageTemplate/templateTags.vue'
+import templatePrice from '@/components/cm-module/pageTemplate/templatePrice.vue'
+import templateType from '@/components/cm-module/pageTemplate/templateType.vue'
+
+export default {
+	name: 'templateH',
+	components: {
+		uniGrader,
+		templateTags,
+		templatePrice,
+		templateType
+	},
+	props: {
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			shopId: 0,
+			floorData: {}
+		}
+	},
+	data() {
+		return {
+			shopId: 0,
+			productList: [],
+			current: 100,
+			swiperCurrent: 0,
+			pageSize: 4,
+			productCount: 0
+		}
+	},
+	filters: {
+		NumFormat: function(text) {
+			//处理金额
+			return Number(text).toFixed(2)
+		}
+	},
+	created() {
+		console.log('this.pageData',this.pageData)
+		this.initData(this.pageData)
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo', 'isActivity']),
+		hasLessProduct() {
+			return this.productCount <= 2
+		}
+	},
+	watch: {
+		pageData: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.pageData = el
+				this.initData(this.pageData)
+			},
+			deep: true
+		}
+	},
+	methods: {
+		async initData(data) {
+			const userInfo = await this.$api.getStorage()
+			this.shopId = userInfo.shopId ? userInfo.shopId : 0
+			this.productCount = data.newfloorlist.length
+			if (this.productCount > 0) {
+				this.productList.splice(0, this.productList.length)
+				for (var i = 0, j = data.newfloorlist.length; i < j; i += this.pageSize) {
+					this.productList.push(data.newfloorlist.slice(i, i + this.pageSize))
+				}
+			}
+			console.log('this.productList',this.productList)
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
+				}
+			}
+			return false
+		},
+		tabClick(index) {
+			//轮播图切换
+			this.current = index
+		},
+		swiperChange(e) {
+			//轮播切换
+			const index = e.detail.current
+			this.swiperCurrent = index
+		},
+		navToDetailPage(pros) {
+			//跳转商品详情页
+			uni.navigateTo({
+			  	url:`/pages/second/product/product-details?id=${pros.productId}`
+			})
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.section_hot {
+	width: 100%;
+	height: 1290rpx;
+	background: url(https://static.caimei365.com/app/img/hot/hot-bg.png);
+	background-size: cover;
+	box-sizing: border-box;
+	padding: 0 24rpx;
+	float: left;
+}
+.tui-group-name {
+	width: 100%;
+	height: 165rpx;
+	box-sizing: border-box;
+	padding: 40rpx 0 20rpx 0;
+	position: relative;
+	.tui-group-r {
+		width: 144rpx;
+		height: 54rpx;
+		background: url(https://static.caimei365.com/app/img/hot/hot-bt@2x.png);
+		background-size: cover;
+		position: absolute;
+		right: 16rpx;
+		top: 69rpx;
+	}
+}
+.tui-group-title {
+	width: 100%;
+	height: 50rpx;
+	line-height: 50rpx;
+	float: left;
+	.tui-group-l {
+		float: left;
+		font-size: 38rpx;
+		font-weight: bold;
+		text-align: left;
+		color: #ffffff;
+	}
+}
+.tui-sub__desc {
+	width: 100%;
+	float: left;
+	line-height: 50rpx;
+	color: #ffffff;
+	font-size: $font-size-28;
+}
+.section_page_main {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	.recommend-list {
+		width: 100%;
+		height: 1100rpx;
+		position: relative;
+		padding-bottom: 20rpx;
+		.tui-banner-swiper {
+			width: 100%;
+			margin: 0 auto;
+			height: 1100rpx;
+			overflow: hidden;
+			transform: translateY(0);
+			.floor-item {
+				width: 339rpx;
+				height: 516rpx;
+				margin-right: 20rpx;
+				font-size: $font-size-24;
+				color: $text-color;
+				background: #ffffff;
+				line-height: 36rpx;
+				border-radius: 16rpx;
+				margin-bottom: 20rpx;
+				float: left;
+				box-sizing: border-box;
+				position: relative;
+				&:nth-child(2n) {
+					margin-right: 0;
+				}
+				.item-img {
+					width: 339rpx;
+					height: 339rpx;
+					border-radius: 16rpx 16rpx 0 0;
+					display: block;
+					margin-bottom: 8rpx;
+				}
+				.floor-item_tag {
+					width: 100%;
+					height: 32rpx;
+					float: left;
+					margin: 20rpx 0;
+					padding: 0 20rpx;
+					box-sizing: border-box;
+					text {
+						display: inline-block;
+						padding: 0 8rpx;
+						border: 1px solid #e3ebf7;
+						border-radius: 8rpx;
+						color: #9aa5b5;
+						font-size: $font-size-22;
+						line-height: 32rpx;
+						text-align: center;
+						float: left;
+					}
+				}
+				.floor-item-content {
+					width: 100%;
+					padding: 0 20rpx;
+					box-sizing: border-box;
+				}
+				.floor-item-act {
+					display: block;
+					width: 100%;
+					height: 32rpx;
+					text-align: center;
+					box-sizing: border-box;
+				}
+				.title-none {
+					font-size: $font-size-26;
+					color: #ff2a2a;
+					line-height: 54rpx;
+				}
+				.title {
+					width: 100%;
+					height: 70rpx;
+					display: flex;
+					line-height: 35rpx;
+					flex-direction: column;
+					margin: 8rpx 0;
+					padding: 0;
+					position: relative;
+					.mclap {
+						width: 100%;
+						line-height: 35rpx;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						word-break: break-all;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 2;
+						overflow: hidden;
+						font-size: 26rpx;
+						&.indent {
+							text-indent: 95rpx;
+						}
+					}
+					.mclap-tag {
+						display: block;
+						width: 84rpx;
+						height: 32rpx;
+						background-image: linear-gradient(270deg, #f9c023 0%, #f83600 100%);
+						border-radius: 4rpx 48rpx 4px 4px;
+						line-height: 32rpx;
+						font-size: $font-size-22;
+						color: #ffffff;
+						text-align: center;
+						position: absolute;
+						left: 0;
+						top: 0;
+					}
+				}
+				.no-price {
+					height: 54rpx;
+					line-height: 54rpx;
+					display: flex;
+					box-sizing: border-box;
+					.p-no {
+						font-size: $font-size-28;
+						color: $text-color;
+						display: block;
+						float: left;
+					}
+					.p-stars {
+						float: left;
+					}
+				}
+				.price {
+					color: #ff2a2a;
+					line-height: 54rpx;
+					&.none {
+						text-decoration: line-through;
+						color: #999999;
+					}
+					.sm {
+						font-size: $font-size-24;
+					}
+					.big {
+						font-size: $font-size-28;
+					}
+				}
+			}
+		}
+	}
+	.swiper__recommenddots-box {
+		position: absolute;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		height: 60rpx;
+		.swiper__dots-item {
+			width: 8rpx;
+			height: 8rpx;
+			border-radius: 100%;
+			margin-left: 6px;
+			background-color: #FFFFFF;
+		}
+		.swiper__dots-long {
+			width: 32rpx;
+			height: 8rpx;
+			border-radius: 4rpx;
+			background-color: #FFFFFF;
+			transition: all 0.4s;
+		}
+	}
+}
+</style>

+ 9 - 8
components/cm-module/supplier/home.vue

@@ -9,9 +9,11 @@
 			<!-- 金刚区菜单 -->
 			<navbars :list="navBarsList" v-if="isNavRequest"></navbars>
 			<!-- 轮播公告 -->
-			<notice :list="newsList" v-if="isNavRequest && newsList.length>0"></notice>
+			<notice :list="newsList" v-if="isNavRequest && newsList.length>0 "></notice>
 			<!-- 直播 -->
 			<page-special :templateData="templateData" v-if="isLiveRequest"></page-special>
+			<!-- 新品橱窗 -->
+			<hot-floor :list="hotListPageFloor" :usserIdentity="userIdentity" v-if="isRequest"></hot-floor>
 		</view>	
 		<!-- 楼层 -->
 		<view class="container-section tui-skeleton">
@@ -32,6 +34,7 @@
 	import banner from '@/components/cm-module/homeIndex/banner.vue'
 	import navbars from '@/components/cm-module/homeIndex/navbars.vue'
 	import notice from '@/components/cm-module/homeIndex/notice.vue'
+	import hotFloor from '@/components/cm-module/homeIndex/hotFloor.vue'
 	import pageFloor from '@/components/cm-module/homeIndex/pageFloor.vue'
 	import pageSpecial from '@/components/cm-module/homeIndex/pageSpecial.vue'
 	import supplierList from '@/components/cm-module/homeIndex/supplierList.vue'
@@ -43,6 +46,7 @@
 			banner,
 			navbars,
 			notice,
+			hotFloor,
 			pageFloor,
 			pageSpecial,
 			supplierList
@@ -71,6 +75,7 @@
 				navBarsList:[],//导航分类
 				newsList:[],				// 公告
 				templateData:{},
+				hotListPageFloor:[],					// 新品橱窗
 				pageList:[],//楼层
 				supplierObj:{},//供应商列表
 				isScrollTop:false,
@@ -108,6 +113,8 @@
 				this.CommonService.GetHomeDataInfo({userId:this.userID,soure:2}).then(response =>{
 					let data = response.data
 					this.pageList = data.homePageFloor
+					this.hotListPageFloor =  data.PageFloor
+					console.log('hotListPageFloor',this.hotListPageFloor)
 					this.supplierObj = data.supplierImage
 					this.isRequest = true
 				}).catch(error =>{
@@ -115,7 +122,7 @@
 				})
 			},
 			getHomeInformation(){//初始化首页数据	
-				this.CommonService.GetHomeModulesDataInfo({ source:2 }).then(res =>{
+				this.CommonService.GetHomeModulesDataInfo({ source: 2 }).then(res =>{
 					let data = res.data
 					this.bannerImageList = data.bannerList
 					this.mallPageModules = data.mallPageModules
@@ -125,16 +132,10 @@
 					this.isNavRequest = true
 					this.GetHomeTopDataInfo()
 					this.GetHomeFloorInfo()
-                    this.initShoppingCartCount()
 				}).catch(error =>{
 					this.$util.msg(error.msg,2000)
 				})
 			},
-            initShoppingCartCount(){// 获取购物车数量
-                this.OrderService.ShoppingCartCount({ userId: this.userID}).then(res =>{
-                    this.$store.commit('updateAllNum',res.data)
-                })
-            },
 			handleClick(data){
 				this.$api.navigateTo('/pages/h5/activity/meobohui')
 				this.$store.commit('setActivity',data)

+ 104 - 0
components/thorui/tui-top-dropdown/tui-top-dropdown.vue

@@ -0,0 +1,104 @@
+<template>
+	<view>
+		<view
+			class="tui-top-dropdown tui-dropdown-box"
+			:class="[show ? 'tui-dropdown-show' : '']"
+			:style="{
+				height: height ? px(height) : 'auto',
+				backgroundColor: backgroundColor,
+				paddingBottom: px(paddingbtm),
+				transform: 'translateZ(0) translateY(' + (show ? px(translatey) : '-100%') + ')'
+			}"
+		>
+			<slot></slot>
+		</view>
+		<view @touchmove.stop.prevent class="tui-dropdown-mask" :class="[mask && show ? 'tui-mask-show' : '']" @tap="handleClose"></view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'tuiTopDropdown',
+	props: {
+		//是否需要mask
+		mask: {
+			type: Boolean,
+			default: true
+		},
+		//控制显示
+		show: {
+			type: Boolean,
+			default: false
+		},
+		//背景颜色
+		backgroundColor: {
+			type: String,
+			default: '#f2f2f2'
+		},
+		//padding-bottom  rpx
+		paddingbtm: {
+			type: Number,
+			default: 0
+		},
+		//高度 rpx
+		height: {
+			type: Number,
+			default: 580
+		},
+		//移动距离 需要计算
+		translatey: {
+			type: Number,
+			default: 0
+		}
+	},
+	methods: {
+		handleClose() {
+			if (!this.show) {
+				return;
+			}
+			this.$emit('close', {});
+		},
+		px(num) {
+			return uni.upx2px(num) + 'px';
+		}
+	}
+};
+</script>
+
+<style scoped>
+.tui-dropdown-box {
+	width: 100%;
+	position: fixed;
+	box-sizing: border-box;
+	border-bottom-right-radius: 24rpx;
+	border-bottom-left-radius: 24rpx;
+	transform: translateZ(0);
+	overflow: hidden;
+	/* visibility: hidden; */
+	transition: all 0.3s ease-in-out;
+	z-index: 996;
+	top: 0;
+}
+
+.tui-dropdown-show {
+	/* visibility: visible; */
+}
+
+.tui-dropdown-mask {
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 0;
+	background-color: rgba(0, 0, 0, 0.6);
+	z-index: 986;
+	transition: all 0.3s ease-in-out;
+	opacity: 0;
+	visibility: hidden;
+}
+
+.tui-mask-show {
+	opacity: 1;
+	visibility: visible;
+}
+</style>

+ 8 - 0
pages.json

@@ -168,6 +168,14 @@
                         "navigationBarTitleText": "配套商品",
                         "enablePullDownRefresh": false
                     }
+                },
+                {
+                    "path": "good-hot",
+                    "style": {
+                        "navigationBarTitleText": "新品橱窗",
+                        "enablePullDownRefresh": false,
+						"navigationStyle": "custom"
+                    }
                 }
             ]
         },

+ 861 - 0
pages/goods/good-hot.vue

@@ -0,0 +1,861 @@
+<template>
+	<view class="container floor clearfix">
+		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5"></tui-skeleton>
+		<view v-else>
+			<view class="container-topcontent">
+				<view class="topcontent-image" :style="{ paddingTop: StatusBar + 'px' }">
+					<view class="topcontent-title">
+						采美新品橱窗 <view class="topcontent-title-icon"> <text class="iconfont icon-fanhui"></text> </view>
+					</view>
+				</view>
+				<view class="topcontent-swiper" :style="{ top: StatusBar + 40 + 'px' }">
+					<view class="swiper-goods">
+						<view class="swiper-banner-box">
+							<swiper
+								class="tui-banner-swiper tui-banner tui-skeleton-fillet"
+								:autoplay="true"
+								:interval="5000"
+								:duration="500"
+								@change="swiperChange"
+								:circular="true"
+							>
+								<swiper-item
+									v-for="(item, index) in topGoodList"
+									:key="index"
+									@click.stop="NavToDetailPage(item)"
+								>
+									<view class="swiper-goods-image"> <image :src="item.image" mode="scaleToFill" /> </view>
+									<view class="swiper-goods-info">
+										<view class="swiper-goods-name"> {{ item.name }} </view>
+										<view class="swiper-goods-btn"> <view class="btn"> 立即购买 </view> </view>
+									</view>
+								</swiper-item>
+							</swiper>
+							<view class="swiper__dots-box" v-if="topGoodList.length > 1">
+								<view
+									v-for="(item, idx) in topGoodList"
+									:key="idx"
+									:class="[idx === current ? 'swiper__dots-long' : 'none']"
+									:data-index="current"
+									class="swiper__dots-item"
+								>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="container-screen">
+				<view class="container-screen-box"  @click="showDropShow">
+					<view class="screen-box-em">品牌</view>
+					<view class="screen-box-mi" v-if="!dropShow">
+						<view class="screen-list" :class="isAllcheckedBrand ? 'active' : ''">全部</view>
+						<view class="screen-list" v-for="(brand, index) in brandList" :key="index" v-if="index < 2">
+							{{ brand.name }}
+						</view>
+					</view>
+					<view class="screen-box-sp">
+						<text class="iconfont" :class="dropShow ? 'icon-xiangshangjiantou' : 'icon-xiangxiajiantou'"></text>
+					</view>
+				</view>
+				<view class="container-screen-popup" v-if="dropShow">
+					<!-- <uni-transition mode-class="slide-top" :show=""> -->
+					<view class="container-screen-popupbox">
+						<!--header 顶部下拉选择框-->
+						<scroll-view class="tui-scroll-box" scroll-y scroll-with-animation :scroll-top="scrollTop">
+							<view class="screen-list" :class="isAllcheckedBrand ? 'active' : ''" @click="choiceBrandAll">全部</view>
+							<view
+								class="screen-list"
+								v-for="(brand, index) in brandList"
+								:key="index"
+								@click="choiceBrand(brand, index)"
+								:class="brand.isChecked ? 'active' : ''"
+							>
+								{{ brand.name }}
+							</view>
+						</scroll-view>
+						<view class="container-screen-btnbox"> <view class="btns" @tap="btnCloseDrop">确定</view> </view>
+					</view>
+					<!-- </uni-transition> -->
+				</view>
+			</view>
+			<tui-skeleton
+				v-if="skeletonShow"
+				backgroundColor="#fafafa"
+				borderRadius="10rpx"
+				:isLoading="true"
+				:loadingType="5"
+			></tui-skeleton>
+			<!-- 楼层 -->
+			<view class="container-section tui-skeleton">
+				<view class="floor-item-banner ad_01" v-if="appletsBanner">
+					<image class="item-img-gg" :src="appletsBanner"></image>
+				</view>
+				<view class="section_page_main clearfix">
+					<view
+						class="floor-item clearfix"
+						v-for="(pros, idx) in productList"
+						:key="idx"
+						@click.stop="navToDetailPage(pros.productId)"
+					>
+						<image class="item-img tui-skeleton-fillet" :src="pros.image" mode="aspectFill"></image>
+						<view class="floor-item-type" v-if="pros.productType == 2">医疗器械</view>
+						<view class="floor-item-content">
+							<view class="title tui-skeleton-rect">
+								<text class="mclap-tag" v-if="pros.beautyActFlag == '1'">美博会</text>
+								<text class="mclap" :class="pros.beautyActFlag == '1' ? 'indent' : ''"
+									>{{ pros.name }}
+								</text>
+							</view>
+							<view class="floor-item-price">
+								<view class="floor-item-act">
+									<view class="coupon-tags">优惠券</view>
+									<template v-if="pros.actStatus === 1">
+										<view class="floor-tags" v-if="PromotionsFormat(pros.promotions)">
+											{{ pros.promotions.name }}
+											<text v-if="pros.priceFlag != 1">:¥{{ pros.price | NumFormat }}</text>
+										</view>
+										<view class="floor-tags" v-else>{{ pros.promotions.name }}</view>
+									</template>
+									<template v-if="pros.svipProductFlag == 1">
+										<view class="svip-tags">
+											<view class="tags" :class="{ none: vipFlag != 1 }">SVIP</view>
+											<view class="price" v-if="isShowVipFlag(pros)">{{ pros.svipPriceTag }}</view>
+										</view>
+									</template>
+								</view>
+								<view>
+									<template v-if="userIdentity === 4 && vipFlag != 1">
+										<view class="title-none" v-if="pros.priceFlag === 1">
+											<text class="p big">¥未公开价格</text>
+										</view>
+										<view class="title-none" v-if="pros.priceFlag === 2">
+											<text class="p big">¥价格仅会员可见</text>
+										</view>
+										<view
+											class="price tui-skeleton-rect"
+											v-if="pros.priceFlag === 0"
+											:class="PromotionsFormat(pros.promotions) ? 'none' : ''"
+										>
+											<text class="p sm">¥</text>
+											<text class="p big">
+												{{
+													(PromotionsFormat(pros.promotions) ? pros.originalPrice : pros.price)
+														| NumFormat
+												}}
+											</text>
+										</view>
+									</template>
+									<template v-else>
+										<view class="title-none" v-if="pros.priceFlag === 1">
+											<text class="p big">¥未公开价格</text>
+										</view>
+										<view
+											class="price tui-skeleton-rect"
+											v-else
+											:class="
+												PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1 ? 'none' : ''
+											"
+										>
+											<text class="p sm">¥</text>
+											<text class="p big">
+												{{
+													(PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
+														? pros.originalPrice
+														: pros.price) | NumFormat
+												}}
+											</text>
+										</view>
+									</template>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+				<!--加载loadding-->
+				<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+				<tui-nomore :visible="!pullUpOn" :backgroundColor="'#F7F7F7'" :text="nomoreText"></tui-nomore>
+				<!--加载loadding-->
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+export default {
+	data() {
+		return {
+			StatusBar: this.StatusBar,
+			skeletonShow:true,
+			dropShow: false,
+			vipFlag: 0,
+			userIdentity: 0,
+			productList: [],
+			brandList: [],
+			checkedBrandList: [],
+			isAllcheckedBrand: true,
+			topGoodList: [],
+			current: 0,
+			appletsBanner: '',
+			listQuery: {
+				userId: 0,
+				pageSize: 10,
+				pageNum: 1
+			},
+			NavigationBarTitle: '',
+			nomoreText: '上拉显示更多',
+			hasNextPage: false,
+			loadding: false,
+			pullUpOn: true,
+			pullFlag: true
+		}
+	},
+	onLoad(option) {
+		this.listQuery.couponId = option.couponId
+		this.initGetStotage()
+	},
+	filters: {
+		NumFormat: function(text) {
+			//处理金额
+			return Number(text).toFixed(2)
+		}
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo', 'identity'])
+	},
+	methods: {
+		async initGetStotage() {
+			// 初始化
+			const userInfo = await this.$api.getStorage()
+			this.listQuery.userId = userInfo.userId ? userInfo.userId : 0
+			this.vipFlag = userInfo.vipFlag ? userInfo.vipFlag : 0
+			this.userIdentity = userInfo.userIdentity ? userInfo.userIdentity : 0
+			this.GetHomeRecommend()
+			this.GetHomeNewBrandNames()
+			this.GetHomeNewFloorList()
+		},
+		GetHomeNewBrandNames(){
+			//新品商品品牌列表
+			this.CommonService.GetHomeNewBrandNames().then(response => {
+				this.brandList = response.data
+			})
+			.catch(error => {
+				console.log('获取新品橱窗推荐模块信息异常')
+			})
+		},
+		GetHomeRecommend() {
+			//新品橱窗顶部推荐
+			this.CommonService.GetHomeRecommend().then(response => {
+				this.topGoodList = response.data
+			})
+			.catch(error => {
+				console.log('获取新品橱窗推荐模块信息异常')
+			})
+		},
+		GetHomeNewFloorList() {
+			//楼层查看更多
+			this.CommonService.GetHomeNewFloorList(this.listQuery)
+				.then(response => {
+					let data = response.data
+					this.productList = data.results
+					this.hasNextPage = data.hasNextPage
+					this.skeletonShow = false
+					if (this.hasNextPage) {
+						this.pullUpOn = false
+						this.nomoreText = '上拉显示更多'
+					} else {
+						if (this.productList.length < 6) {
+							this.pullUpOn = true
+						} else {
+							this.pullUpOn = false
+							this.loadding = false
+							this.nomoreText = '已至底部'
+						}
+					}
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		OnReachBottomData() {
+			// 上滑加载
+			this.listQuery.pageNum += 1
+			this.CommonService.GetHomeNewFloorList(this.listQuery)
+				.then(response => {
+					let data = response.data
+					this.hasNextPage = data.hasNextPage
+					this.productList = this.productList.concat(data.results)
+					this.skeletonShow = false
+					if (this.hasNextPage) {
+						this.pullUpOn = false
+						this.nomoreText = '上拉显示更多'
+					} else {
+						this.pullUpOn = false
+						this.loadding = false
+						this.nomoreText = '已至底部'
+					}
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
+				}
+			}
+			return false
+		},
+		navToDetailPage(productId) {
+			//跳转商品详情页
+			this.$api.navigateTo(`/pages/goods/product?id=${productId}`)
+		},
+		isShowVipFlag(pros) {
+			// 超级会员价格显示控制
+			if (this.hasLogin && pros.priceFlag != 1) {
+				if (this.userIdentity == 4 && this.vipFlag == 1) {
+					return true
+				} else if (this.userIdentity == 2) {
+					return true
+				}
+			}
+		},
+		swiperChange(e) {
+			//轮播图切换
+			const index = e.detail.current
+			this.current = index
+		},
+		choiceBrand(brand, index) {
+			// 选择品牌
+			brand.isChecked = !brand.isChecked
+			if (brand.isChecked) {
+				this.checkedBrandList.push(brand.id)
+			} else {
+				this.checkedBrandList.splice(index, 1)
+			}
+			this.isAllcheckedBrand = false
+			this.checkedBrandLength = this.checkedBrandList.length
+			console.log('checkedBrandList', this.checkedBrandList)
+			this.listQuery.brandIds = this.checkedBrandList.join(',')
+			console.log('this.listQuery.brandIds', this.listQuery.brandIds)
+		},
+		choiceBrandAll() {
+			// 点击选择全部品牌
+			this.isAllcheckedBrand = true
+			this.listQuery.brandIds = ''
+			this.brandList.forEach(el => {
+				el.isChecked = false
+			})
+		},
+		showDropShow() {
+			this.dropShow = !this.dropShow
+		},
+		reset() {
+			let arr = this.proDropData
+			for (let item of arr) {
+				item.selected = false
+			}
+			this.proDropData = arr
+		},
+		btnCloseDrop() {
+			this.scrollTop = 1
+			this.$nextTick(() => {
+				this.scrollTop = 0
+			})
+			this.dropShow = false
+			this.proDropIndex = -1
+			this.reset()
+		}
+	},
+	onPullDownRefresh() {
+		setTimeout(() => {
+			this.productList = []
+			this.listQuery.pageNum = 1
+			this.GetHomeNewFloorList()
+			uni.stopPullDownRefresh()
+		}, 200)
+	},
+	onReachBottom() {
+		if (this.hasNextPage) {
+			this.loadding = true
+			this.pullUpOn = true
+			this.OnReachBottomData()
+		}
+	},
+	onShow() {}
+}
+</script>
+
+<style lang="scss">
+page {
+	background-color: #f7f7f7;
+}
+.container-home {
+	width: 100%;
+	height: auto;
+}
+.container-topcontent {
+	width: 100%;
+	height: 640rpx;
+	background: #ffffff;
+	box-sizing: border-box;
+	position: relative;
+	.topcontent-image {
+		width: 100%;
+		height: 430rpx;
+		background: url(https://static.caimei365.com/app/img/hot/hot-bg@2x.png);
+		background-size: cover;
+		box-sizing: border-box;
+		.topcontent-title {
+			width: 100%;
+			height: 80rpx;
+			line-height: 80rpx;
+			font-size: 38rpx;
+			color: #ffffff;
+			font-weight: bold;
+			text-align: center;
+			position: relative;
+		}
+		.topcontent-title-icon {
+			width: 50rpx;
+			height: 50rpx;
+			line-height: 50rpx;
+			position: absolute;
+			left: 24rpx;
+			top: 14rpx;
+			border-radius: 50%;
+			text-align: center;
+			background: rgba(255, 255, 255, 0.6);
+			border: 0.5px solid rgba(0, 0, 0, 0.1);
+			box-sizing: border-box;
+			z-index: 9999;
+			.iconfont {
+				height: 100%;
+				width: 100%;
+				font-size: 32rpx;
+				display: inline-block;
+				overflow: hidden;
+			}
+		}
+	}
+	.topcontent-swiper {
+		width: 100%;
+		height: auto;
+		position: absolute;
+		left: 0;
+	}
+	.swiper-goods {
+		width: 100%;
+		height: auto;
+		position: relative;
+		background-size: cover;
+	}
+	.swiper-banner-box {
+		width: 100%;
+		height: 360rpx;
+		position: relative;
+		background-size: cover;
+	}
+	.tui-banner-swiper {
+		width: 680rpx;
+		margin: 0 auto;
+		height: 340rpx;
+		background: url(https://static.caimei365.com/app/img/hot/hot-bg@3x.png);
+		background-size: cover;
+		border-radius: 24rpx;
+		overflow: hidden;
+		transform: translateY(0);
+		box-shadow: 0px 3px 6px rgba(225, 86, 22, 0.08);
+		margin-top: 16rpx;
+		padding: 12rpx;
+		.swiper-goods-image {
+			width: 336rpx;
+			height: 336rpx;
+			float: left;
+			image {
+				width: 336rpx;
+				height: 336rpx;
+				display: block;
+				border-radius: 8rpx;
+			}
+		}
+		.swiper-goods-info {
+			width: 326rpx;
+			height: 336rpx;
+			box-sizing: border-box;
+			padding:32rpx 24rpx;
+			float: right;
+			position: relative;
+			.swiper-goods-name {
+				width: 100%;
+				height: auto;
+				line-height: 44rpx;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				word-break: break-all;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 4;
+				overflow: hidden;
+				font-size: 28rpx;
+				color: #333333;
+				text-align: center;
+			}
+			.swiper-goods-btn {
+				width: 100%;
+				height: 64rpx;
+				position: absolute;
+				bottom: 60rpx;
+				left: 0;
+				.btn {
+					width: 200rpx;
+					height: 64rpx;
+					margin: 0 auto;
+					text-align: center;
+					line-height: 64rpx;
+					background-color: #f94b4b;
+					font-size: 26rpx;
+					color: #ffffff;
+					border-radius: 32rpx;
+				}
+			}
+		}
+	}
+	.swiper__dots-box {
+		position: absolute;
+		bottom: -60rpx;
+		left: 0;
+		right: 0;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		.swiper__dots-item {
+			width: 14rpx;
+			height: 8rpx;
+			border-radius: 4rpx;
+			margin-left: 6px;
+			background-color: rgba(225, 86, 22, 0.39);
+		}
+		.swiper__dots-long {
+			width: 40rpx;
+			height: 8rpx;
+			border-radius: 4rpx;
+			background-color: #e15616;
+			transition: all 0.4s;
+		}
+	}
+	.swiper-banner-msg {
+		width: 100%;
+		height: 54rpx;
+		box-sizing: border-box;
+		padding: 0 24rpx;
+		margin-top: 24rpx;
+		.content {
+			width: 100%;
+			height: 54rpx;
+			box-sizing: border-box;
+			padding: 0 34rpx;
+			background-color: #fff0e9;
+			border-radius: 16rpx;
+			.item {
+				width: 33.33%;
+				height: 54rpx;
+				line-height: 54rpx;
+				font-size: $font-size-24;
+				color: $color-system;
+				float: left;
+				&.le {
+					text-align: left;
+				}
+				&.ce {
+					text-align: center;
+				}
+				&.ri {
+					text-align: right;
+				}
+				.iconfont {
+					color: $color-system;
+					font-size: $font-size-32;
+					.sm {
+						font-size: $font-size-26;
+					}
+				}
+			}
+		}
+	}
+}
+.container-screen {
+	width: 100%;
+	height: 138rpx;
+	padding: 24rpx;
+	box-sizing: border-box;
+	background-color: #f7f7f7;
+	position: relative;
+	.container-screen-box {
+		width: 100%;
+		height: 100%;
+		background-color: #ffffff;
+		border-radius: 16rpx;
+		.screen-box-em {
+			float: left;
+			width: 134rpx;
+			line-height: 90rpx;
+			text-align: center;
+			color: #333333;
+			font-size: 30rpx;
+			font-weight: bold;
+		}
+		.screen-box-mi {
+			float: left;
+			width: 468rpx;
+			height: 100%;
+			box-sizing: border-box;
+			padding: 21rpx 0;
+			.screen-list {
+				width: 140rpx;
+				height: 48rpx;
+				padding: 0 12rpx;
+				float: left;
+				text-align: center;
+				box-sizing: border-box;
+				line-height: 48rpx;
+				font-size: 30rpx;
+				color: #666666;
+				border-radius: 24rpx;
+				margin-right: 20rpx;
+				text-overflow: ellipsis;
+				overflow: hidden;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
+				word-break: break-all;
+				&:last-child {
+					margin-right: 0;
+				}
+				&.active {
+					background-color: #ffe6dc;
+					color: #e15616;
+				}
+			}
+		}
+		.screen-box-sp {
+			float: right;
+			width: 100rpx;
+			line-height: 90rpx;
+			text-align: center;
+			.iconfont {
+				color: #999999;
+				font-size: 40rpx;
+			}
+		}
+	}
+	.container-screen-popup {
+		width: 100%;
+		height: 480rpx;
+		box-sizing: border-box;
+		padding: 24rpx;
+		position: absolute;
+		left: 0;
+		top: 86rpx;
+		z-index: 999;
+		.container-screen-popupbox {
+			width: 100%;
+			height: 100%;
+			box-sizing: border-box;
+			padding: 0 24rpx;
+			background-color: #ffffff;
+			border-radius: 0 0 16rpx 16rpx;
+			box-shadow: 0 10rpx 14rpx 0 rgba(86, 119, 252, 0.2);
+		}
+		.tui-scroll-box {
+			width: 100%;
+			height: 300rpx;
+			overflow: hidden;
+			.screen-list {
+				width: 140rpx;
+				height: 48rpx;
+				padding: 0 12rpx;
+				float: left;
+				text-align: center;
+				box-sizing: border-box;
+				line-height: 48rpx;
+				font-size: 30rpx;
+				color: #666666;
+				border-radius: 24rpx;
+				margin-right: 30rpx;
+				margin-bottom: 30rpx;
+				text-overflow: ellipsis;
+				overflow: hidden;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
+				word-break: break-all;
+				&:nth-child(4n) {
+					margin-right: 0;
+				}
+				&.active {
+					background-color: #ffe6dc;
+					color: #e15616;
+				}
+			}
+		}
+		.container-screen-btnbox {
+			width: 100%;
+			height: 84rpx;
+			margin-top: 15rpx;
+			.btns {
+				width: 314rpx;
+				height: 84rpx;
+				line-height: 84rpx;
+				border-radius: 42rpx;
+				text-align: center;
+				font-size: 30rpx;
+				color: #ffffff;
+				background: $btn-confirm;
+				margin: 0 auto;
+			}
+		}
+	}
+}
+.container-section {
+	width: 100%;
+	height: auto;
+	background-color: #f7f7f7;
+	box-sizing: border-box;
+	padding: 0 24rpx 24rpx 24rpx;
+}
+.floor-item-banner {
+	width: 100%;
+	height: 240rpx;
+	margin-bottom: 20rpx;
+	.item-img-gg {
+		width: 100%;
+		height: 240rpx;
+		display: block;
+		border-radius: 16rpx;
+	}
+}
+.section_page_main {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	.floor-item {
+		width: 339rpx;
+		height: 516rpx;
+		margin-right: 20rpx;
+		font-size: $font-size-24;
+		color: $text-color;
+		background: #ffffff;
+		line-height: 36rpx;
+		border-radius: 16rpx;
+		margin-bottom: 20rpx;
+		float: left;
+		box-sizing: border-box;
+		position: relative;
+		&:nth-child(2n) {
+			margin-right: 0;
+		}
+		.item-img {
+			width: 339rpx;
+			height: 339rpx;
+			border-radius: 16rpx 16rpx 0 0;
+			display: block;
+			margin-bottom: 8rpx;
+		}
+		.floor-item-type {
+			width: 64rpx;
+			height: 64rpx;
+			text-align: justify;
+			box-sizing: border-box;
+			padding: 10rpx;
+			border-radius: 0 0 8rpx 8rpx;
+			background-color: #33ccbf;
+			font-size: $font-size-22;
+			color: #ffffff;
+			line-height: 25rpx;
+			position: absolute;
+			top: 0;
+			right: 16rpx;
+		}
+		.floor-item-content {
+			width: 100%;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+		}
+		.floor-item-act {
+			display: block;
+			width: 100%;
+			height: 32rpx;
+			text-align: center;
+			box-sizing: border-box;
+		}
+		.title-none {
+			font-size: $font-size-26;
+			color: #ff2a2a;
+			line-height: 54rpx;
+		}
+		.title {
+			width: 100%;
+			height: 70rpx;
+			display: flex;
+			line-height: 35rpx;
+			flex-direction: column;
+			margin: 8rpx 0;
+			padding: 0;
+			position: relative;
+			.mclap {
+				width: 100%;
+				line-height: 35rpx;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				word-break: break-all;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 2;
+				overflow: hidden;
+				font-size: 26rpx;
+				&.indent {
+					text-indent: 95rpx;
+				}
+			}
+			.mclap-tag {
+				display: block;
+				width: 84rpx;
+				height: 32rpx;
+				background-image: linear-gradient(270deg, #f9c023 0%, #f83600 100%);
+				border-radius: 4rpx 48rpx 4px 4px;
+				line-height: 32rpx;
+				font-size: $font-size-22;
+				color: #ffffff;
+				text-align: center;
+				position: absolute;
+				left: 0;
+				top: 0;
+			}
+		}
+		.price {
+			color: #ff2a2a;
+			line-height: 54rpx;
+			&.none {
+				text-decoration: line-through;
+				color: #999999;
+			}
+			.sm {
+				font-size: $font-size-24;
+			}
+			.big {
+				font-size: $font-size-28;
+			}
+		}
+	}
+}
+</style>

+ 14 - 1
pages/second/form/form-presale.vue

@@ -315,7 +315,7 @@
 					{name:'医美',value:1},
 					{name:'非医美',value:3},
 				],
-				GoodsImagesList:[],
+				GoodsImagesList:['https://img.caimei365.com/group1/M00/04/0A/rB-lGGJ0lfeAYI29AAFbP2cQhCY71.jpeg'],
 				secondParams:{
 					publishIdentity:1, // 发布者身份 1 个人身份 2 公司身份
 					secondHandType:'',//一级分类
@@ -326,17 +326,29 @@
 					fixedYears:'',//出厂
 					companyName:'',//公司名称
 					maturityYears:'',//产品到期
+					price:'',//交易价
+					detailTalkFlag:1,//是否启用详聊
 					normalPrice:'',//市场价
 					originalPrice:'',//采购价
 					stock:'',//数量
 					productQuality:'',//商品成色
+					fileType:'', // 商品文件类型
 					contactName:'',//联系人
 					contactMobile:'',//联系方式
 					checkCode:'',// 联系人手机验证码
+					cardNumber:'',// 收款账号
+					authenticationImage:'', //身份证正面
+					authenticationBackImage:'', //身份证反面
+					licenseImage:'',//营业执照图片
+					commitmentImage:'',//承诺函图片
+					dockingPeopleName:'',//采美对接人姓名
+					dockingPeopleMobile:'',//采美对接人手机号
 					secondProductType:'',//
 					townId:'',//县区地址
 					address:'',//详细地址
 					image:'',//图片
+					fileName:'',
+					ossName:'',
 					productDetails:'',//商品详细信息
 					source:4//二手发布来源.1:WWW,2:小程序,3:后台,4:协销
 				 },
@@ -511,6 +523,7 @@
 					return
 				}
 				console.log(this.secondParams)
+				this.SecondHandProduct(this.secondParams)
 			},
 			SecondHandProduct(params){//提交发布
 				this.SecondService.SecondHandProduct(params).then(res=>{ 

+ 1 - 0
pages/second/form/form-seller.vue

@@ -782,6 +782,7 @@
 					return
 				}
 				console.log(this.secondParams)
+				this.SecondHandProduct(this.secondParams)
 			},
 			SecondHandProduct(params){//提交发布
 				this.SecondService.SecondHandProduct(params).then(res=>{ 

+ 14 - 1
pages/second/form/form.vue

@@ -315,7 +315,7 @@
 					{name:'医美',value:1},
 					{name:'非医美',value:3},
 				],
-				GoodsImagesList:[],
+				GoodsImagesList:['https://img.caimei365.com/group1/M00/04/0A/rB-lGGJ0lfeAYI29AAFbP2cQhCY71.jpeg'],
 				secondParams:{
 					publishIdentity:1, // 发布者身份 1 个人身份 2 公司身份
 					secondHandType:'',//一级分类
@@ -326,17 +326,29 @@
 					fixedYears:'',//出厂
 					companyName:'',//公司名称
 					maturityYears:'',//产品到期
+					price:'',//交易价
+					detailTalkFlag:1,//是否启用详聊
 					normalPrice:'',//市场价
 					originalPrice:'',//采购价
 					stock:'',//数量
 					productQuality:'',//商品成色
+					fileType:'', // 商品文件类型
 					contactName:'',//联系人
 					contactMobile:'',//联系方式
 					checkCode:'',// 联系人手机验证码
+					cardNumber:'',// 收款账号
+					authenticationImage:'', //身份证正面
+					authenticationBackImage:'', //身份证反面
+					licenseImage:'',//营业执照图片
+					commitmentImage:'',//承诺函图片
+					dockingPeopleName:'',//采美对接人姓名
+					dockingPeopleMobile:'',//采美对接人手机号
 					secondProductType:'',//
 					townId:'',//县区地址
 					address:'',//详细地址
 					image:'',//图片
+					fileName:'',
+					ossName:'',
 					productDetails:'',//商品详细信息
 					source:2//二手发布来源.1:WWW,2:小程序,3:后台,4:协销
 				 },
@@ -511,6 +523,7 @@
 					return
 				}
 				console.log(this.secondParams)
+				this.SecondHandProduct(this.secondParams)
 			},
 			SecondHandProduct(params){//提交发布
 				this.SecondService.SecondHandProduct(params).then(res=>{ 

+ 6 - 0
pages/tabBar/home/index.vue

@@ -14,6 +14,8 @@
 			<coupon v-if="isNavRequest && couponEntry == 1"></coupon>
 			<!-- 直播 -->
 			<page-special :templateData="templateData" v-if="isLiveRequest"></page-special>
+			<!-- 新品橱窗 -->
+			<hot-floor :list="hotListPageFloor" :usserIdentity="userIdentity" v-if="isRequest"></hot-floor>
 		</view>	
 		<!-- 楼层 -->
 		<view class="container-section tui-skeleton">
@@ -38,6 +40,7 @@
 	import notice from '@/components/cm-module/homeIndex/notice.vue'
 	import coupon from '@/components/cm-module/homeIndex/coupon.vue'
 	import pageFloor from '@/components/cm-module/homeIndex/pageFloor.vue'
+	import hotFloor from '@/components/cm-module/homeIndex/hotFloor.vue'
 	import pageSpecial from '@/components/cm-module/homeIndex/pageSpecial.vue'
 	import supplierList from '@/components/cm-module/homeIndex/supplierList.vue'
 	import activityAlert from '@/components/cm-module/activity/activity.vue'
@@ -52,6 +55,7 @@
 			notice,
 			coupon,
 			pageFloor,
+			hotFloor,
 			pageSpecial,
 			supplierList,
 			activityAlert,
@@ -81,6 +85,7 @@
 				navBarsList:[],				// 导航分类
 				newsList:[],				// 公告
 				templateData:{},
+				hotListPageFloor:[],					// 新品橱窗
 				pageList:[],				// 楼层
 				supplierObj:{},				// 供应商列表
 				isScrollTop:false,
@@ -147,6 +152,7 @@
 				this.CommonService.GetHomeDataInfo({userId:this.userID,soure:2}).then(response =>{
 					let data = response.data
 					this.pageList = data.homePageFloor
+					this.hotListPageFloor =  data.PageFloor
 					this.supplierObj = data.supplierImage
 					setTimeout(()=>{
 						this.isRequest = true

+ 27 - 0
services/common.service.js

@@ -175,4 +175,31 @@ export default class CommonService {
 			  
         })
     }
+    /* 新品橱窗推荐商品 */
+    GetHomeRecommend(data = {}) {
+	    return this.AjaxService.get({
+	        url: '/commodity/home/recommend',
+	        data,
+	        isLoading: true,
+			  
+	    })
+    }
+    /* 新品橱窗商品列表 */
+    GetHomeNewFloorList(data = {}) {
+	    return this.AjaxService.get({
+	        url: '/commodity/home/NewFloorList',
+	        data,
+	        isLoading: false,
+			  
+	    })
+    }
+    /* 获取新品橱窗商品品牌列表 */
+    GetHomeNewBrandNames(data = {}) {
+	    return this.AjaxService.get({
+	        url: '/commodity/home/BrandName',
+	        data,
+	        isLoading: false,
+			  
+	    })
+    }
 }

+ 2 - 2
services/config.env.js

@@ -3,8 +3,8 @@ if(process.env.NODE_ENV === 'development'){
     // 开发环境
     // URL_CONFIG = 'http://192.168.2.67:18002'	 //智捷联调地址
     // URL_CONFIG = 'http://192.168.2.68:18002'	 //涛涛联调地址
-    // URL_CONFIG = 'http://192.168.2.75:18002'	 //超超联调地址
-    URL_CONFIG = 'https://core-b.caimei365.com'
+    URL_CONFIG = 'http://192.168.2.75:18002'	 //超超联调地址
+    // URL_CONFIG = 'https://core-b.caimei365.com'
     // URL_CONFIG = 'https://core.caimei365.com'
 }else{
     // 生产环境