浏览代码

commit -m 搜搜列表加

zhengjinyi 3 年之前
父节点
当前提交
bdcf273645

+ 165 - 0
components/cm-module/creatOrder/sellerClubVisible.vue

@@ -0,0 +1,165 @@
+<template name="Visible">
+	<view class="orderVisible-template">
+		<!-- 订单对机构是否可见 -->
+		<view class="visible-title" @tap.stop="showPopup">
+			<text class="orderVisible">订单对机构是否可见</text>
+			<view class="visible-right">
+				<text class="text-l">{{ orderVisibleText }}</text> <text class="iconfont icon-xiayibu"></text>
+			</view>
+		</view>
+		<!-- 优惠券 -->
+		<tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup">
+			<view class="tui-popup-box clearfix">
+				<view class="tui-popup-content">
+					<radio-group @change="radioChange">
+						<label class="uni-list-cell uni-list-cell-pd" v-for="(item, index) in items" :key="item.value">
+							<view class="uni-list-text">{{ item.name }}</view>
+							<view class="uni-list-radio">
+								<radio
+									:value="item.value"
+									:checked="index === current"
+									color="#E15616"
+									style="transform:scale(0.7)"
+								/>
+							</view>
+						</label>
+					</radio-group>
+				</view>
+				<view class="tui-right-flex tui-popup-btn">
+					<view class="tui-flex-1"> <view class="tui-button" @click="hidePopup">确定</view> </view>
+				</view>
+			</view>
+		</tui-bottom-popup>
+	</view>
+</template>
+
+<script>
+export default {
+	name: 'Visible',
+	props: {},
+	data() {
+		return {
+			StaticUrl: this.$Static, //静态图片路径
+			isIphoneX: this.$store.state.isIphoneX,
+			popupShow: false,
+			orderVisibleText: '可见',
+			orderVisibleValue: '1',
+			items: [
+				{
+					value: '1',
+					name: '可见',
+					checked: 'true'
+				},
+				{
+					value: '2',
+					name: '不可见'
+				}
+			],
+			current: 0
+		}
+	},
+	created() {},
+	methods: {
+		showPopup() {
+			this.popupShow = true
+		},
+		radioChange: function(evt) {
+			for (let i = 0; i < this.items.length; i++) {
+				if (this.items[i].value === evt.detail.value) {
+					this.current = i
+					this.orderVisibleText = this.items[i].name
+					this.orderVisibleValue = Number(this.items[i].value)
+					break
+				}
+			}
+		},
+		hidePopup() {
+			this.popupShow = false
+			this.$emit('handleClubVisible', this.orderVisibleValue)
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.orderVisible-template {
+	width: 100%;
+	height: auto;
+	background: #ffffff;
+	float: left;
+	.visible-title {
+		width: 702rpx;
+		padding: 0 24rpx;
+		height: 88rpx;
+		line-height: 88rpx;
+		position: relative;
+		font-size: $font-size-28;
+		font-weight: bold;
+		border-bottom: 1px solid #ebebeb;
+		.orderVisible {
+			font-size: $font-size-28;
+			color: $text-color;
+			font-weight: bold;
+		}
+		.visible-right {
+			float: right;
+			color: #2a81ff;
+			.text-l {
+				margin-right: 40rpx;
+			}
+			.iconfont {
+				width: 50rpx;
+				height: 88rpx;
+				line-height: 88rpx;
+				color: #999999;
+				display: block;
+				position: absolute;
+				right: 0;
+				top: 0;
+			}
+		}
+	}
+}
+.tui-popup-box {
+	position: relative;
+	box-sizing: border-box;
+	min-height: 220rpx;
+	padding: 24rpx 24rpx 0 24rpx;
+	.tui-popup-content {
+		width: 100%;
+		height: 168rpx;
+		.uni-list-cell {
+			width: 100%;
+			height: 66rpx;
+			line-height: 66rpx;
+			display: block;
+			.uni-list-radio {
+				float: right;
+				height: 66rpx;
+			}
+			.uni-list-text {
+				float: left;
+				height: 66rpx;
+				font-size: $font-size-28;
+				color: #333;
+			}
+		}
+	}
+	.tui-popup-btn {
+		width: 100%;
+		height: auto;
+		float: left;
+		margin-top: 24rpx;
+		.tui-button {
+			width: 100%;
+			height: 88rpx;
+			background: $btn-confirm;
+			line-height: 88rpx;
+			text-align: center;
+			color: #ffffff;
+			font-size: $font-size-28;
+			border-radius: 44rpx;
+		}
+	}
+}
+</style>

+ 21 - 17
components/cm-module/creatOrder/sellerCoupon.vue

@@ -73,7 +73,7 @@
 
 <script>
 	export default{
-		name:"coupon",
+		name:'coupon',
 		props:{
 			couponList:{
 				type:Array
@@ -95,25 +95,25 @@
 		},
 		filters:{
 			NumFormat(value) {//处理金额
-				return Number(value).toFixed(2);
+				return Number(value).toFixed(2)
 			},
 			TypeFormat(value) {
 				switch (value) {
 					case 0:
-						return  '活动券';
-						break;
+						return  '活动券'
+						break
 					case 1:
-						return  '品类券';
-						break;
+						return  '品类券'
+						break
 					case 2:
-						return  '用户专享券';
-						break;
+						return  '用户专享券'
+						break
 					case 3:
-						return  '店铺券';
-						break;
+						return  '店铺券'
+						break
 					case 4:
-						return  '新用户券';
-						break;
+						return  '新用户券'
+						break
 				}
 			}
 		},	
@@ -143,10 +143,10 @@
 				}
 			},
 			checkedCoupon(idx){// 选择优惠券
-				this.checkedIndex = idx;
+				this.checkedIndex = idx
 				this.dataList.forEach((el,index) => {
 					if(this.checkedIndex == index){
-						el.ischecked = !el.ischecked;
+						el.ischecked = !el.ischecked
 					}else{
 						el.ischecked = false
 					}
@@ -157,14 +157,18 @@
 				this.$parent.isExchangePopup = true
 			},
 			showPopup(){
-				this.popupShow = true
+				if(this.$parent.rebatecheck){
+					this.$util.msg('返佣订单不能使用优惠券',2000)
+				}else{
+					this.popupShow = true
+				}
 			},
 			hidePopup(){
 				this.popupShow = false
 				let coupon = {
 						couponAmount:0,
 						clubCouponId:0,
-					};
+					}
 				this.dataList.forEach((el,index) => {
 					if(el.ischecked){
 						coupon.couponAmount = el.couponAmount
@@ -172,7 +176,7 @@
 					}
 				})
 				this.coupon = coupon
-				this.$emit('handleChoiceaCoupon',this.coupon);
+				this.$emit('handleChoiceaCoupon',this.coupon)
 			}
 		}
 	}

+ 18 - 9
components/cm-module/creatOrder/sellerFreight.vue

@@ -71,12 +71,20 @@
 			}
 		},
 		created(){
-			console.log('this.freightDatas',this.freightDatas)
 			this.infoData(this.freightDatas)
 		},
+		watch: {
+			freightDatas: {
+				handler: function (el) {//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+					this.freightDatas = el
+					this.infoData(this.freightDatas)
+				},
+				deep: true
+			}
+		},
 		methods:{
 			infoData(data){//初始化运费
-				console.log(data)
+				console.log('初始化运费',data)
 				switch(data.postageFlag){
 					case 1:
 						this.current = 0
@@ -89,19 +97,16 @@
 						this.freightData.postage = data.postage
 						this.freightMoney = this.hanldFreight
 						this.freightText = ''
-						console.log('11111111111')
 						break
 					case 0:
 						this.current = 1
 						this.freightData.postageFlag = data.postageFlag
 						this.freightText = '包邮'
-						console.log('000000000000')
 						break
 					case -1:
 						this.current = 2
 						this.freightData.postageFlag = data.postageFlag
 						this.freightText = '到付'
-						console.log('-=1-1-1-1-1-1-')
 						break
 				}
 			},
@@ -135,15 +140,19 @@
 			showTip(){//显示运费弹窗
 				this.$emit('showFreightAlert')
 			},
-			hideSpec() {//关闭选择数量确认弹窗
+			hideSpec() {//关闭编辑运费弹窗
 				this.specClass = 'hide'
 				setTimeout(() => {
 					this.specClass = 'none'
 				}, 200)
 			},
-			hanldOperationConfim(data){//显示选择数量确认弹窗
-				this.specClass = 'show'
-				this.freightMoney = this.hanldFreight
+			hanldOperationConfim(data){//显示编辑运费弹窗
+				if(this.$parent.rebatecheck){
+					this.$util.msg('返佣订单不能编辑运费',2000)
+				}else{
+					this.specClass = 'show'
+					this.freightMoney = this.hanldFreight
+				}
 			},
 			radioChange(e) {//运费选择切换
 				this.freightData.postageFlag = parseInt(e.target.value)

+ 4 - 4
components/cm-module/homeIndex/banner.vue

@@ -22,7 +22,7 @@
 					<text class="iconfont icon-zhengpin"><text class="sm">正品保证</text></text>
 				</view>
 				<view class="item ce">
-					<text class="iconfont icon-jigou"><text class="sm">5000+机构</text></text>
+					<text class="iconfont icon-jigou"><text class="sm">6000+机构</text></text>
 				</view>
 				<view class="item ri">
 					<text class="iconfont icon-gongyingshang"><text class="sm">100+供应商</text></text>
@@ -34,7 +34,7 @@
 
 <script>
 	export default{
-		name:"address",
+		name:'address',
 		props:{
 			list:{
 				type:Array
@@ -53,8 +53,8 @@
 		},
 		methods:{
 			swiperChange(e) {//轮播图切换
-				const index = e.detail.current;
-				this.current = index;
+				const index = e.detail.current
+				this.current = index
 			},
 			NavToDetailPage(floor) {//跳转
 				this.$api.FlooryNavigateTo(floor)

+ 205 - 198
components/uni-search/cat-search.vue

@@ -1,228 +1,235 @@
 <template name="headerNavbar">
 	<!-- 自定义导航栏 -->
-	<view class='navbar-wrap' :style="{height:navbarHeight+'px',paddingTop:statusBarHeight+'px'}"> 
-		<view class="navbar-text" :style="{top:navbarBtn.top + statusBarHeight+'px;',height:navbarBtn.height+'px;',fontSize:fontSizeSetting+'px;'}">
-	    	<view class="gosearch-btn" :style="{paddingLeft:navbarBtn.height+'px;',left:navbarBtn.height/2+'px;',borderRadius:(navbarBtn.height/2)+'px;',width:(375-navbarBtn.width)-20+'px;',lineHeight:navbarBtn.height+'px;'}">
-				<text class="iconfont icon-sousuo" :style="{width:navbarBtn.height+'px;',height:navbarBtn.height+'px;',lineHeight:navbarBtn.height+'px;'}"></text>
-				<view class="input" @click="this.$api.navigateTo(clickPath)">搜索商品/项目仪器</view>
+	<view class="navbar-wrap" :style="{ height: navbarHeight + 'px', paddingTop: statusBarHeight + 'px' }">
+		<view
+			class="navbar-text"
+			:style="{
+				top: navbarBtn.top + statusBarHeight + 'px;',
+				height: navbarBtn.height + 'px;',
+				fontSize: fontSizeSetting + 'px;'
+			}"
+			@click="this.$api.navigateTo(clickPath)"
+		>
+			<view
+				class="gosearch-btn"
+				:style="{
+					paddingLeft: navbarBtn.height + 'px;',
+					left: navbarBtn.height / 2 + 'px;',
+					borderRadius: navbarBtn.height / 2 + 'px;',
+					width: 375 - navbarBtn.width - 20 + 'px;',
+					lineHeight: navbarBtn.height + 'px;'
+				}"
+			>
+				<text
+					class="iconfont icon-sousuo"
+					:style="{
+						width: navbarBtn.height + 'px;',
+						height: navbarBtn.height + 'px;',
+						lineHeight: navbarBtn.height + 'px;'
+					}"
+				></text>
+				<view class="input">搜索商品/项目仪器</view>
 			</view>
-	  	</view>
+		</view>
 		<view class="category-tab">
-			<view class="category-tab-item" :class="categoryTabIndex ==1 ? 'active' : ''" @click="categoryTabClick(1)">产品</view>
-			<view class="category-tab-item" :class="categoryTabIndex ==2 ? 'active' : ''" @click="categoryTabClick(2)">仪器</view>
+			<view class="category-tab-item" :class="categoryTabIndex == 1 ? 'active' : ''" @click="categoryTabClick(1)"
+				>产品</view
+			>
+			<view class="category-tab-item" :class="categoryTabIndex == 2 ? 'active' : ''" @click="categoryTabClick(2)"
+				>仪器</view
+			>
 		</view>
 	</view>
 </template>
 
 <script>
-	var self;
-	export default{
-		name:'headerNavbar',
-		props:{
-		    navbarData: { // 由父页面传递的数据
-				type: Object
-		    },
-			systeminfo:{
-				type:Object
-			},
-			headerBtnPosi:{
-				type:Object
-			},
-			page:{
-				type:Number
-			},
-			headerTitle:{
-				type:String
-			},
-			type:{
-				type:String
-			},
+var self
+export default {
+	name: 'headerNavbar',
+	props: {
+		navbarData: {
+			// 由父页面传递的数据
+			type: Object
 		},
-		data() {
-			return{
-				headerType:'',
-				clickPath:'/pages/search/search',
-				haveBack: true, // 是否有返回按钮,true 有 false 没有 若从分享页进入则为 false
-			    statusBarHeight: 0, // 状态栏高度
-			    navbarHeight: 0, // 顶部导航栏高度,
-			    navbarBtn: { // 胶囊位置信息
-			      height: 0,
-			      width: 0,
-			      top: 0,
-			      bottom: 0,
-			      right: 0
-				},
-				platform:'',
-				fontSizeSetting:0,
-				categoryTabIndex:1
-			}
+		systeminfo: {
+			type: Object
 		},
-		created() {
-			this.headerType = this.type
-			this.fontSizeSetting = this.systeminfo.fontSizeSetting
-			let statusBarHeight = this.systeminfo.statusBarHeight // 状态栏高度
-			let headerPosi = this.headerBtnPosi // 胶囊位置信息
-		    /**
-		     * wx.getMenuButtonBoundingClientRect() 坐标信息以屏幕左上角为原点
-		     * 菜单按键宽度: 87
-		     * 菜单按键高度: 32
-		     * 菜单按键左边界坐标: 278
-		     * 菜单按键上边界坐标: 26
-		     * 菜单按键右边界坐标: 365
-		     * 菜单按键下边界坐标: 58
-		     */
-			let btnPosi = { // 胶囊实际位置,坐标信息不是左上角原点
-			      height: headerPosi.height,
-			      width: headerPosi.width,
-			      // 胶囊top - 状态栏高度
-			      top: headerPosi.top - statusBarHeight,
-			      // 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
-			      bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
-			      // 屏幕宽度 - 胶囊right
-			      right: this.systeminfo.screenWidth - headerPosi.right
-			}
-			console.log(btnPosi)
-			let haveBack;
-			if (getCurrentPages().length === 1) { // 当只有一个页面时
-			     haveBack = false;
-			} else {
-			     haveBack = true;
-			}
-		    this.haveBack=haveBack, // 获取是否是通过分享进入的小程序
-		    this.statusBarHeight=statusBarHeight,
-		    this.navbarHeight= headerPosi.bottom + btnPosi.bottom, // 原胶囊bottom + 现胶囊bottom
-			this.$parent.navbarHeight = this.navbarHeight
-			this.$parent.statusBarHeight = this.statusBarHeight
-			// console.log(this.navbarHeight);
-		    this.navbarBtn=btnPosi
+		headerBtnPosi: {
+			type: Object
 		},
-		onLoad(){
-			
+		page: {
+			type: Number
 		},
-		methods:{
-			_goBack: function () {
-		      	uni.navigateBack({
-		        	delta: this.page
-		      	});
-		    },
-		    _goHome: function () {
-		      	uni.switchTab({
-		        	url: '/pages/tabBar/home/index'
-		      	})
-		    },
-			categoryTabClick(index){
-				this.categoryTabIndex = index 
-				this.$emit('click',this.categoryTabIndex)
+		headerTitle: {
+			type: String
+		},
+		type: {
+			type: String
+		}
+	},
+	data() {
+		return {
+			headerType: '',
+			clickPath: '/pages/search/search',
+			haveBack: true, // 是否有返回按钮,true 有 false 没有 若从分享页进入则为 false
+			statusBarHeight: 0, // 状态栏高度
+			navbarHeight: 0, // 顶部导航栏高度,
+			navbarBtn: {
+				// 胶囊位置信息
+				height: 0,
+				width: 0,
+				top: 0,
+				bottom: 0,
+				right: 0
 			},
+			platform: '',
+			fontSizeSetting: 0,
+			categoryTabIndex: 1
+		}
+	},
+	created() {
+		this.headerType = this.type
+		this.fontSizeSetting = this.systeminfo.fontSizeSetting
+		let statusBarHeight = this.systeminfo.statusBarHeight // 状态栏高度
+		let headerPosi = this.headerBtnPosi // 胶囊位置信息
+		/**
+		 * wx.getMenuButtonBoundingClientRect() 坐标信息以屏幕左上角为原点
+		 * 菜单按键宽度: 87
+		 * 菜单按键高度: 32
+		 * 菜单按键左边界坐标: 278
+		 * 菜单按键上边界坐标: 26
+		 * 菜单按键右边界坐标: 365
+		 * 菜单按键下边界坐标: 58
+		 */
+		let btnPosi = {
+			// 胶囊实际位置,坐标信息不是左上角原点
+			height: headerPosi.height,
+			width: headerPosi.width,
+			// 胶囊top - 状态栏高度
+			top: headerPosi.top - statusBarHeight,
+			// 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
+			bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
+			// 屏幕宽度 - 胶囊right
+			right: this.systeminfo.screenWidth - headerPosi.right
+		}
+		console.log(btnPosi)
+		let haveBack
+		if (getCurrentPages().length === 1) {
+			// 当只有一个页面时
+			haveBack = false
+		} else {
+			haveBack = true
+		}
+		;(this.haveBack = haveBack), // 获取是否是通过分享进入的小程序
+			(this.statusBarHeight = statusBarHeight),
+			(this.navbarHeight = headerPosi.bottom + btnPosi.bottom), // 原胶囊bottom + 现胶囊bottom
+			(this.$parent.navbarHeight = this.navbarHeight)
+		this.$parent.statusBarHeight = this.statusBarHeight
+		// console.log(this.navbarHeight);
+		this.navbarBtn = btnPosi
+	},
+	onLoad() {},
+	methods: {
+		_goBack: function() {
+			uni.navigateBack({
+				delta: this.page
+			})
+		},
+		_goHome: function() {
+			uni.switchTab({
+				url: '/pages/tabBar/home/index'
+			})
 		},
-		onShow(){
-	
+		categoryTabClick(index) {
+			this.categoryTabIndex = index
+			this.$emit('click', this.categoryTabIndex)
 		}
-	}
+	},
+	onShow() {}
+}
 </script>
 
 <style lang="scss">
-	.navbar-wrap {
-		 position: fixed;
-		 width: 100%;
-		 top: 0;
-		 z-index: 100000;
-		 background-color: #FFFFFF;
-		 box-sizing: border-box;
-		 &.bg-color{
-			animation: showColor 0.3s ease-in-out both;
-		 }
-		 &.no-color{
-		    animation: hideColor 0.3s ease-in-out both;
-		 }
+.navbar-wrap {
+	position: fixed;
+	width: 100%;
+	top: 0;
+	z-index: 100000;
+	background-color: #ffffff;
+	box-sizing: border-box;
+	&.bg-color {
+		animation: showColor 0.3s ease-in-out both;
 	}
-	
-	.navbar-text {
-		 width: 100%;
-		 color: #000000;
-		 font-weight: 500;
-		 position: fixed;
+	&.no-color {
+		animation: hideColor 0.3s ease-in-out both;
 	}
-	.gosearch-btn{
+}
+
+.navbar-text {
+	width: 100%;
+	color: #000000;
+	font-weight: 500;
+	position: fixed;
+}
+.gosearch-btn {
+	height: 100%;
+	background: rgba(255, 255, 255, 0.6);
+	font-size: 28rpx;
+	color: #999999;
+	position: relative;
+	box-sizing: border-box;
+	position: absolute;
+	top: 0;
+	border: 0.5px solid rgba(0, 0, 0, 0.1);
+	.icon-sousuo {
 		height: 100%;
-		background: rgba(255, 255, 255, 0.6);
-		font-size: 28rpx;
+		text-align: center;
+		display: block;
+		position: absolute;
+		left: 0;
+		top: 0;
+		font-size: 34rpx;
 		color: #999999;
+		z-index: 10;
+	}
+	.input {
+		height: 100%;
+		float: left;
+		font-size: $font-size-24;
+		text-align: left;
+	}
+}
+.category-tab {
+	width: 100%;
+	height: 76rpx;
+	display: flex;
+	border-bottom: 1px solid #eee;
+	position: absolute;
+	bottom: -76rpx;
+	background-color: #ffffff;
+	.category-tab-item {
+		flex: 1;
+		font-size: $font-size-30;
+		line-height: 76rpx;
+		text-align: center;
+		color: #93979f;
 		position: relative;
-		box-sizing: border-box;
-		position:absolute ;
-		top: 0;
-		border: 0.5px solid rgba(0, 0, 0, 0.1);
-		.icon-sousuo{
-			height: 100%;
-			text-align: center;
-			display: block;
+		&::before {
+			content: '';
+			width: 57rpx;
+			height: 4rpx;
+			background-color: #fff;
 			position: absolute;
-			left: 0;
-			top: 0;
-			font-size: 34rpx;
-			color: #999999;
-			z-index: 10;
-		}
-		.input{
-			height: 100%;
-			float: left;
-			font-size: $font-size-24;
-			text-align: left;
+			bottom: 0;
+			left: 50%;
+			margin-left: -28rpx;
 		}
-	}
-	.category-tab{
-		width: 100%;
-		height: 76rpx;
-		display: flex;
-		border-bottom: 1px solid #EEE;
-		position: absolute;
-		bottom: -76rpx;
-		background-color: #FFFFFF;
-		.category-tab-item{
-			flex: 1;
-			font-size: $font-size-30;
-			line-height: 76rpx;
-			text-align: center;
-			color: #93979f;
-			position: relative;
-			&::before{
-				content: '';
-				width:57rpx;
-				height: 4rpx;
-				background-color: #FFF;
-				position: absolute;
-				bottom: 0;
-				left: 50%;
-				margin-left: -28rpx;
-			}
-			&.active{
-				color: #E15616;
-				&::before{
-					background-color: #E15616;
-				}
+		&.active {
+			color: #e15616;
+			&::before {
+				background-color: #e15616;
 			}
 		}
 	}
+}
 </style>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

+ 7 - 0
pages.json

@@ -148,6 +148,13 @@
                         "navigationBarTitleText": "美业资料详情",
                         "enablePullDownRefresh": false
                     }
+                },
+                {
+                    "path": "goods-supporting",
+                    "style": {
+                        "navigationBarTitleText": "配套商品",
+                        "enablePullDownRefresh": false
+                    }
                 }
             ]
         },

+ 296 - 79
pages/goods/goods-classify.vue

@@ -157,8 +157,10 @@
 										</template>
 										<template v-if="pros.svipProductFlag == 1">
 											<view class="svip-tags">
-												<view class="tags" :class="{ none : vipFlag == 0 }">SVIP</view>
-												<view class="price" v-if="isShowVipFlag(pros)">{{ pros.svipPriceTag }}</view>
+												<view class="tags" :class="{ none: vipFlag == 0 }">SVIP</view>
+												<view class="price" v-if="isShowVipFlag(pros)">{{
+													pros.svipPriceTag
+												}}</view>
 											</view>
 										</template>
 									</view>
@@ -240,7 +242,7 @@
 											</view>
 										</template>
 									</template>
-									<template v-if="userIdentity == 2 || (userIdentity == 4 && vipFlag == 1) ">
+									<template v-if="userIdentity == 2 || (userIdentity == 4 && vipFlag == 1)">
 										<view class="price-larger" v-if="pros.priceFlag == 1">
 											<text class="txt">¥未公开价格</text>
 										</view>
@@ -279,46 +281,99 @@
 		</template>
 		<!--右抽屉-->
 		<tui-drawer mode="right" :visible="rightDrawer" @close="closeDrawer">
-			<view class="drawer-container clearfix" :style="{ paddingTop: CustomBar + 'px' }">
-				<view class="drawer-title">{{ classData.name }}</view>
-				<view class="drawer-main">
-					<template v-if="classData.smallTypeList">
-						<view class="drawer-item-cell" v-for="(item, index) in classData.smallTypeList" :key="index">
-							<view class="drawer-item-title">{{ item.name }}</view>
-							<view class="drawer-item-main" v-if="item.tinyTypeList">
-								<text
-									class="drawer-item-text"
-									:class="tiny.isChecked ? 'checked' : ''"
-									v-for="(tiny, tinyIndex) in item.tinyTypeList"
-									:key="tinyIndex"
-									@click="SearchCondition(3, item, tiny)"
-									>{{ tiny.name }}</text
+			<view
+				class="drawer-container clearfix"
+				scroll-y
+				:style="{ paddingTop: CustomBar + 'px', paddingBottom: isIphoneX ? '180rpx' : '146rpx' }"
+			>
+				<scroll-view class="tui-drawer-scroll" scroll-y :style="{ height: drawerH + 'px' }">
+					<view class="drawer-title">
+						<view class="drawer-title-h1">{{ classData.name }}</view>
+					</view>
+					<view class="drawer-main">
+						<view class="drawer-main-cell clearfix">
+							<template v-if="classData.smallTypeList">
+								<view
+									class="drawer-item-cell"
+									v-for="(item, index) in classData.smallTypeList"
+									:key="index"
 								>
+									<view class="drawer-item-title">{{ item.name }}</view>
+									<view class="drawer-item-main" v-if="item.tinyTypeList">
+										<text
+											class="drawer-item-text"
+											:class="tiny.isChecked ? 'checked' : ''"
+											v-for="(tiny, tinyIndex) in item.tinyTypeList"
+											:key="tinyIndex"
+											@click="SearchCondition(3, item, tiny)"
+											>{{ tiny.name }}</text
+										>
+									</view>
+									<view class="drawer-item-main" v-else>
+										<text
+											class="drawer-item-text"
+											:class="item.isChecked ? 'checked' : ''"
+											@click="SearchCondition(2, item)"
+											>全部商品</text
+										>
+									</view>
+								</view>
+							</template>
+							<template v-else>
+								<view class="drawer-item-cell">
+									<view class="drawer-item-main none">
+										<text
+											class="drawer-item-text"
+											:class="classData.isChecked ? 'checked' : ''"
+											@click="SearchCondition(1, classData)"
+											>全部商品</text
+										>
+									</view>
+								</view>
+							</template>
+						</view>
+					</view>
+					<view class="drawer-title">
+						<view class="drawer-title-h1">品牌</view>
+						<view class="drawer-title-p"
+							>已选中<text class="text">{{ checkedBrandLength }}</text
+							>个品牌</view
+						>
+					</view>
+					<view class="drawer-main">
+						<view class="drawer-main-brand clearfix">
+							<view class="drawer-brand-list">全部</view>
+							<view
+								class="drawer-brand-list"
+								:class="brand.isChecked ? 'checked' : ''"
+								v-for="(brand, index) in brandLists"
+								:key="index"
+								@click="choiceBrand(brand, index)"
+							>
+								{{ brand.name }}
 							</view>
-							<view class="drawer-item-main" v-else>
-								<text
-									class="drawer-item-text"
-									:class="item.isChecked ? 'checked' : ''"
-									@click="SearchCondition(2, item)"
-									>全部商品</text
-								>
+							<view class="drawer-brand-more" v-if="!isShowAllBrands" @click="showAllBrands"
+								>查看全部<text class="iconfont icon-xiangxiajiantou"></text
+							></view>
+						</view>
+						<view class="drawer-main-radio">
+							<view class="drawer-radio-name">新品</view>
+							<view class="drawer-radio-input" @click="choiceNewType">
+								<text class="iconfont" :class="isChoiceNewType ? 'icon-yixuanze' : 'icon-weixuanze'"></text>
 							</view>
 						</view>
-					</template>
-					<template v-else>
-						<view class="drawer-item-cell">
-							<view class="drawer-item-main none">
+						<view class="drawer-main-radio">
+							<view class="drawer-radio-name">促销商品</view>
+							<view class="drawer-radio-input" @click="choiceActiType">
 								<text
-									class="drawer-item-text"
-									:class="classData.isChecked ? 'checked' : ''"
-									@click="SearchCondition(1, classData)"
-									>全部商品</text
-								>
+									class="iconfont"
+									:class="isChoiceActiType ? 'icon-yixuanze' : 'icon-weixuanze'"
+								></text>
 							</view>
 						</view>
-					</template>
-				</view>
-				<view class="drawer-input btn" :style="{ bottom: isIphoneX ? '68rpx' : '34rpx' }">
+					</view>
+				</scroll-view>
+				<view class="drawer-input btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
 					<view class="drawer-btn clear" @click="closeDrawer">取消</view>
 					<view class="drawer-btn comfrim" @click="handSearchList">确定</view>
 				</view>
@@ -358,12 +413,15 @@ export default {
 			shopId: 0,
 			tabIndex: 0,
 			isModallayer: false,
+			isShowAllBrands: false,
 			isSearchSalesFirst: true,
 			isSearchMoodFirst: true,
 			isSearchPriceFirst: true,
 			isSearchSales: true,
 			isSearchMood: true,
 			isSearchPrice: true,
+			isChoiceNewType: false,
+			isChoiceActiType: false,
 			headerBtnPosi: this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
 			systeminfo: this.setSysteminfo(), //获取设备信息
 			CustomBar: this.CustomBar, // 顶部导航栏高度
@@ -376,6 +434,42 @@ export default {
 			vipFlag: 0,
 			userIdentity: 0,
 			listData: [],
+			brandLists: [
+				{ name: '斯蒂芬斯', isChecked: false },
+				{ name: 'Beautsecre', isChecked: false },
+				{ name: '意大利DEP', isChecked: false },
+				{ name: '美生美', isChecked: false },
+				{ name: '三诺激光', isChecked: false },
+				{ name: '三诺激光', isChecked: false },
+				{ name: '三诺激光三诺激光', isChecked: false },
+				{ name: '三诺激光三诺激光三诺激光', isChecked: false },
+				{ name: '斯蒂芬斯', isChecked: false },
+				{ name: 'Beautsecre', isChecked: false },
+				{ name: '意大利DEP', isChecked: false },
+				{ name: '美生美', isChecked: false },
+				{ name: '三诺激光', isChecked: false },
+				{ name: '三诺激光', isChecked: false },
+				{ name: '三诺激光三诺激光', isChecked: false },
+				{ name: '三诺激光三诺激光三诺激光', isChecked: false },
+				{ name: '斯蒂芬斯', isChecked: false },
+				{ name: 'Beautsecre', isChecked: false },
+				{ name: '意大利DEP', isChecked: false },
+				{ name: '美生美', isChecked: false },
+				{ name: '三诺激光', isChecked: false },
+				{ name: '三诺激光', isChecked: false },
+				{ name: '三诺激光三诺激光', isChecked: false },
+				{ name: '三诺激光三诺激光三诺激光', isChecked: false },
+				{ name: '斯蒂芬斯', isChecked: false },
+				{ name: 'Beautsecre', isChecked: false },
+				{ name: '意大利DEP', isChecked: false },
+				{ name: '美生美', isChecked: false },
+				{ name: '三诺激光', isChecked: false },
+				{ name: '三诺激光', isChecked: false },
+				{ name: '三诺激光三诺激光', isChecked: false },
+				{ name: '三诺激光三诺激光三诺激光', isChecked: false }
+			],
+			checkedBrandList: [],
+			checkedBrandLength: 0,
 			windowHeight: '',
 			scrollHeight: '',
 			listQuery: Object.assign({}, defaultListQuery),
@@ -388,7 +482,9 @@ export default {
 			rightDrawer: false,
 			classifyType: 0,
 			classData: {},
-			searchCheckedId: null
+			searchCheckedId: null,
+			height:0,
+			drawerH:0 // 抽屉内部scrollview高度
 		}
 	},
 	computed: {
@@ -604,7 +700,6 @@ export default {
 			} else {
 				this.listQuery.id = this.searchCheckedId
 			}
-			this.leftDrawer = false
 			this.rightDrawer = false
 			this.GetProductListInfo()
 		},
@@ -679,8 +774,38 @@ export default {
 				}
 			}
 		},
+		showAllBrands() {
+			// 查看全部品牌
+			this.isShowAllBrands = true
+		},
+		choiceBrand(brand, index) {
+			// 选择品牌
+			brand.isChecked = !brand.isChecked
+			if (brand.isChecked) {
+				this.checkedBrandList.push(brand)
+			} else {
+				this.checkedBrandList.splice(index, 1)
+			}
+			this.checkedBrandLength = this.checkedBrandList.length
+			console.log('checkedBrandList', this.checkedBrandList)
+		},
+		choiceNewType() {
+			// 选择筛选项新品
+			this.isChoiceNewType = !this.isChoiceNewType
+		},
+		choiceActiType() {
+			// 选择筛选项促销商品
+			this.isChoiceActiType = !this.isChoiceActiType
+		},
 		SetScrollHeight() {
+			let obj = {}
 			const { windowHeight, pixelRatio } = wx.getSystemInfoSync()
+			uni.getSystemInfo({
+				success: res => {
+					this.height = obj.top ? obj.top + obj.height + 8 : res.statusBarHeight + 44
+					this.drawerH = res.windowHeight - uni.upx2px(180) - this.height
+				}
+			})
 			this.windowHeight = windowHeight - 1
 			this.scrollHeight = windowHeight - 1
 		},
@@ -695,7 +820,6 @@ export default {
 		},
 		closeDrawer(e) {
 			//关闭抽屉
-			this.leftDrawer = false
 			this.rightDrawer = false
 		},
 		setSysteminfo() {
@@ -1019,63 +1143,157 @@ page {
 
 /*screen*/
 .drawer-container {
-	width: 560rpx;
+	width: 580rpx;
 	height: 100%;
 	padding: 80rpx 0;
+	overflow: hidden;
 	box-sizing: border-box;
+	background-color: #f7f7f7;
 	.drawer-title {
 		width: 100%;
 		height: 72rpx;
 		line-height: 72rpx;
 		box-sizing: border-box;
 		padding: 0 30rpx;
-		text-align: left;
-		font-size: $font-size-26;
-		color: #e15616;
-		font-weight: bold;
+		float: left;
 		background-color: #f7f7f7;
+		.drawer-title-h1 {
+			font-size: $font-size-26;
+			color: #e15616;
+			font-weight: bold;
+			text-align: left;
+			float: left;
+		}
+		.drawer-title-p {
+			font-size: $font-size-24;
+			float: right;
+			color: #333333;
+			.text {
+				color: #e15616;
+			}
+		}
 	}
 	.drawer-main {
 		width: 100%;
 		height: auto;
 		box-sizing: border-box;
-		padding: 0 30rpx;
-		.drawer-item-cell {
+		float: left;
+		.drawer-main-cell {
 			width: 100%;
 			height: auto;
-			float: left;
-			.drawer-item-title {
-				width: 100%;
-				height: 82rpx;
-				line-height: 82rpx;
-				text-align: left;
-				font-size: $font-size-26;
-				color: $text-color;
-				float: left;
-			}
-			.drawer-item-main {
+			box-sizing: border-box;
+			padding: 12rpx 24rpx 24rpx 24rpx;
+			background-color: #ffffff;
+			.drawer-item-cell {
 				width: 100%;
 				height: auto;
 				float: left;
-				&.none {
-					margin-top: 24rpx;
+				.drawer-item-title {
+					width: 100%;
+					height: 82rpx;
+					line-height: 82rpx;
+					text-align: left;
+					font-size: $font-size-26;
+					color: $text-color;
+					float: left;
 				}
-				.drawer-item-text {
-					display: inline-block;
+				.drawer-item-main {
+					width: 100%;
+					height: auto;
 					float: left;
-					padding: 0 30rpx;
-					height: 56rpx;
-					border-radius: 28rpx;
-					background-color: #f7f7f7;
-					line-height: 56rpx;
-					text-align: center;
-					color: #999999;
-					font-size: $font-size-26;
-					margin-right: 24rpx;
-					margin-bottom: 24rpx;
-					&.checked {
-						background-color: #fef6f3;
-						color: $color-system;
+					&.none {
+						margin-top: 24rpx;
+					}
+					.drawer-item-text {
+						display: inline-block;
+						float: left;
+						padding: 0 30rpx;
+						height: 56rpx;
+						border-radius: 28rpx;
+						background-color: #f7f7f7;
+						line-height: 56rpx;
+						text-align: center;
+						color: #999999;
+						font-size: $font-size-26;
+						margin-right: 24rpx;
+						margin-bottom: 24rpx;
+						&.checked {
+							background-color: #fef6f3;
+							color: $color-system;
+						}
+					}
+				}
+			}
+		}
+		.drawer-main-brand {
+			width: 100%;
+			height: auto;
+			box-sizing: border-box;
+			padding: 12rpx 24rpx 24rpx 24rpx;
+			background-color: #ffffff;
+			.drawer-brand-list {
+				width: 160rpx;
+				height: 56rpx;
+				line-height: 56rpx;
+				text-align: center;
+				font-size: 26rpx;
+				background-color: #f7f7f7;
+				color: #999999;
+				border-radius: 30rpx;
+				box-sizing: border-box;
+				padding: 0 15rpx;
+				float: left;
+				margin: 12rpx 24rpx 12rpx 0;
+				text-overflow: ellipsis;
+				overflow: hidden;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
+				&.checked {
+					background-color: #fef6f3;
+					color: #e15616;
+				}
+				&:nth-child(3n) {
+					margin-right: 0;
+				}
+			}
+			.drawer-brand-more {
+				width: 100%;
+				height: 42rpx;
+				line-height: 42rpx;
+				float: left;
+				font-size: $font-size-24;
+				color: #999999;
+				text-align: center;
+			}
+		}
+		.drawer-main-radio {
+			width: 100%;
+			height: 72rpx;
+			background-color: #ffffff;
+			margin-top: 20rpx;
+			box-sizing: border-box;
+			padding: 0 24rpx;
+			.drawer-radio-name {
+				float: left;
+				line-height: 72rpx;
+				font-size: $font-size-26;
+				color: #333333;
+			}
+			.drawer-radio-input {
+				width: 72rpx;
+				height: 72rpx;
+				float: right;
+				line-height: 72rpx;
+				text-align: right;
+				.iconfont {
+					font-size: $font-size-36;
+					&.icon-weixuanze {
+						color: #b2b2b2;
+					}
+					&.icon-yixuanze {
+						color: #e15616;
 					}
 				}
 			}
@@ -1083,20 +1301,19 @@ page {
 	}
 	.drawer-input {
 		width: 100%;
-		height: 80rpx;
 		float: left;
 		box-sizing: border-box;
-		padding: 0 10rpx;
+		padding: 24rpx 10rpx 0 10rpx;
 		border: 1px solid rgba(0, 0, 0, 0.2);
 		border-radius: 4rpx;
-		margin-bottom: 30rpx;
 		position: relative;
+		background-color: #ffffff;
 		&.btn {
 			border: none;
-			margin-top: 40rpx;
 			display: flex;
-			position: absolute;
+			position: fixed;
 			left: 0;
+			bottom: 0;
 		}
 		.drawer-btn {
 			width: 210rpx;

+ 1050 - 0
pages/goods/goods-supporting.vue

@@ -0,0 +1,1050 @@
+<template>
+	<view class="container product clearfix">
+		<view class="product-content" :style="{ paddingBottom: popupShow ? '68rpx' : '0' }">
+			<view :class="{ 'tui-order-list': scrollTop >= 0 }" class="clearfix">
+				<!-- 空白页 -->
+				<view class="empty-container" v-if="isEmpty">
+					<image
+						class="empty-container-image"
+						:src="StaticUrl + '/icon/icon-collection-empty@2x.png'"
+					></image>
+					<text class="error-text">暂无收藏商品~</text>
+				</view>
+				<!-- 列表 -->
+				<view class="tui-cart-cell  tui-mtop" v-for="(pros, index) in productList" :key="index">
+					<view class="tui-goods-item">
+						<view class="tui-goods-main">
+							<view class="tui-goods-checkBox">
+								<view
+									class="checkbox iconfont"
+									:class="[pros.isChecked ? 'icon-yixuanze' : 'icon-weixuanze']"
+									@click="checkedSoperv(pros)"
+								>
+								</view>
+							</view>
+							<view class="tui-goods-image" @click.stop="navToDetailPage(pros.productId)"
+								><image :src="pros.image" class="tui-goods-img" />
+							</view>
+							<view
+								class="tui-goods-info"
+								@click.stop="navToDetailPage(pros.productId)"
+							>
+								<text class="list-details-title">{{ pros.name }}</text>
+								<text class="list-details-specs">规格:{{ pros.unit != null ? pros.unit : '' }}</text>
+								<template v-if="userIdentity == 4">
+									<view class="list-details-price" v-if="pros.priceFlag == 1">
+										<view class="list-none"><view class="price-small">¥未公开价格</view></view>
+									</view>
+									<view class="list-details-price" v-else-if="pros.priceFlag == 2">
+										<view class="list-none"><view class="price-small">¥价格仅会员可见</view></view>
+									</view>
+									<template v-else>
+										<view class="list-details-price">
+											<view class="list-price">
+												<text
+													class="price-larger"
+													:class="
+														PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
+															? 'none'
+															: ''
+													"
+												>
+													¥{{
+														(PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
+															? pros.originalPrice
+															: pros.price) | NumFormat
+													}}
+												</text>
+											</view>
+											<view class="add-cart-btn">
+												<view class="number-box">
+													<view
+														class="iconfont icon-jianhao"
+														@click="changeCountSub(item, pros)"
+													></view>
+													<input
+														class="btn-input"
+														type="number"
+														maxlength="4"
+														v-model="pros.number"
+														@blur="changeNnmber($event, item, pros)"
+														@focus="changeInput(pros)"
+													/>
+													<view
+														class="iconfont icon-jiahao"
+														@click="changeCountAdd(item, pros)"
+													></view>
+												</view>
+											</view>
+										</view>
+										<view class="list-details-price none">
+											<view class="floor-item-act">
+												<view class="coupon-tags" v-if="item.product.couponsLogo">优惠券</view>
+												<template v-if="pros.actStatus == 1">
+													<view
+														class="floor-tags"
+														v-if="pros.actStatus == 1 && PromotionsFormat(pros.promotions)"
+													>
+														{{ pros.promotions.name }}
+														<text
+															v-if="hasLogin && userIdentity == 2 && 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 == 0 }">SVIP</view>
+														<view class="price" v-if="isShowVipFlag(pros)">{{
+															pros.svipPriceTag
+														}}</view>
+													</view>
+												</template>
+											</view>
+										</view>
+									</template>
+								</template>
+								<template v-else>
+									<view class="list-details-price" v-if="pros.priceFlag == 1">
+										<view class="list-none"><view class="price-small">¥未公开价格</view></view>
+									</view>
+									<template v-else>
+										<view class="list-details-price">
+											<view class="list-price">
+												<text
+													class="price-larger"
+													:class="
+														PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
+															? 'none'
+															: ''
+													"
+												>
+													¥{{
+														(PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
+															? pros.originalPrice
+															: pros.price) | NumFormat
+													}}
+												</text>
+											</view>
+											<view class="add-cart-btn">
+												<view class="number-box">
+													<view
+														class="iconfont icon-jianhao"
+														@click="changeCountSub(item, pros)"
+													></view>
+													<input
+														class="btn-input"
+														type="number"
+														maxlength="4"
+														v-model="pros.number"
+														@blur="changeNnmber($event, item, pros)"
+														@focus="changeInput(pros)"
+													/>
+													<view
+														class="iconfont icon-jiahao"
+														@click="changeCountAdd(item, pros)"
+													></view>
+												</view>
+											</view>
+										</view>
+										<view class="list-details-price none">
+											<view class="floor-item-act">
+												<template v-if="pros.actStatus == 1">
+													<view
+														class="floor-tags"
+														v-if="pros.actStatus == 1 && PromotionsFormat(pros.promotions)"
+													>
+														{{ pros.promotions.name }}
+														<text
+															v-if="hasLogin && userIdentity == 2 && 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 == 0 }">SVIP</view>
+														<view class="price" v-if="isShowVipFlag(pros)">{{
+															pros.svipPriceTag
+														}}</view>
+													</view>
+												</template>
+											</view>
+										</view>
+									</template>
+								</template>
+							</view>
+						</view>
+					</view>
+				</view>
+				<!--加载loadding-->
+				<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+				<tui-nomore :visible="!pullUpOn" :backgroundColor="'#ffffff'" :text="nomoreText"></tui-nomore>
+				<!--加载loadding-->
+			</view>
+		</view>
+		<!-- 取消收藏操作 -->
+		<tui-bottom-popup :radius="false" :mask="false" :show="popupShow">
+			<view class="tui-popup-box clearfix">
+				<view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }">
+					<view class="tui-flex-1">
+						<view class="superv-header-checked">
+							<view class="oltext" @click="isCheckedAll">
+								<view
+									class="checkbox iconfont"
+									:class="[isAllChecked ? 'icon-yixuanze' : 'icon-weixuanze']"
+								></view>
+								<view class="text">全选</view>
+							</view>
+						</view>
+						<view class="tui-button buy" @click="handleAllUnder">立即购买</view>
+						<view class="tui-button add" @click="handleAllUnder">加入购物车</view>
+					</view>
+				</view>
+			</view>
+		</tui-bottom-popup>
+		<!-- 弹窗提示 -->
+		<tui-modal
+			:show="modal"
+			@click="handleClick"
+			@cancel="hideMobel"
+			:content="contentModalText"
+			:button="modalButton"
+			color="#333"
+			:size="32"
+			shape="circle"
+			:maskClosable="false"
+		>
+		</tui-modal>
+	</view>
+</template>
+<script>
+import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
+import tuiNomore from '@/components/tui-components/nomore/nomore'
+
+import { mapState, mapMutations } from 'vuex'
+const defaultListQuery = {
+	userId: 0,
+	pageNum: 1,
+	pageSize: 10
+}
+export default {
+	components: {
+		tuiLoadmore,
+		tuiNomore
+	},
+	data() {
+		return {
+			StaticUrl: this.$Static,
+			isIphoneX: this.$store.state.isIphoneX,
+			modalButton: [
+				{
+					text: '取消',
+					type: 'gray',
+					plain: true //是否空心
+				},
+				{
+					text: '确认',
+					customStyle: {
+						color: '#fff',
+						bgColor: 'linear-gradient(90deg, #F28F31 0%, #E15616 100%)'
+					},
+					plain: false
+				}
+			],
+			totalRecord: 0,
+			cartQuantity: 0,
+			popupShow: true,
+			listQuery: Object.assign({}, defaultListQuery),
+			productList: [],
+			handleData: {},
+			number: 0,
+			buyRetailPrice: 0,
+			buyRetailPriceStep: 1,
+			isQuantity: false,
+			scrollTop: 0,
+			isEmpty: false,
+			isAllChecked: false,
+			loadding: false,
+			pullUpOn: true,
+			pullFlag: true,
+			hasNextPage: false,
+			navbarHeight: '',
+			nomoreText: '上拉显示更多',
+			contentModalText: '', //操作文字提示语句
+			modal: false,
+			vipFlag: 0,
+			userIdentity: 0
+		}
+	},
+	onLoad() {
+		this.initGetStotage()
+	},
+	filters: {
+		NumFormat: function(value) {
+			//处理金额
+			if (!value) return '0.00'
+			let number = Number(value).toFixed(2)
+			return number
+		}
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo'])
+	},
+	methods: {
+		...mapMutations(['login', 'logout']),
+		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.GetProductListInfo()
+			this.shoppingHeaderCartNumber()
+		},
+		GetProductListInfo() {
+			this.productList = []
+			this.listQuery.pageNum = 1
+			this.ProductService.getProductUserLikeList(this.listQuery)
+				.then(response => {
+					let data = response.data
+					if (data.results && data.results.length > 0) {
+						this.isEmpty = false
+						this.hasNextPage = data.hasNextPage
+						this.totalRecord = data.totalRecord
+						this.productList = data.results
+						this.pullFlag = false
+						setTimeout(() => {
+							this.pullFlag = true
+						}, 500)
+						if (this.hasNextPage) {
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						} else {
+							if (this.productList.length < 8) {
+								this.pullUpOn = true
+							} else {
+								this.pullUpOn = false
+								this.loadding = false
+								this.nomoreText = '已至底部'
+							}
+						}
+					} else {
+						this.isEmpty = true
+					}
+					this.isRequest = true
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		GetOnReachBottomData(index) {
+			//上拉加载
+			this.listQuery.pageNum += 1
+			this.ProductService.getProductUserLikeList(this.listQuery)
+				.then(response => {
+					let data = response.data
+					if (data.results && data.results.length > 0) {
+						this.hasNextPage = data.hasNextPage
+						this.productList = this.productList.concat(data.results)
+						this.pullFlag = false // 防上拉暴滑
+						setTimeout(() => {
+							this.pullFlag = true
+						}, 500)
+						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)
+				})
+		},
+		shoppingHeaderCartNumber() {
+			// 获取用户购物车储量
+			this.ProductService.shoppingHeaderCartNumber({
+				userId: this.listQuery.userId
+			})
+				.then(response => {
+					this.cartQuantity = response.data.length
+				})
+				.catch(error => {
+					console.log('获取购物车数量失败')
+				})
+		},
+		handleAllUnder() {
+			//批量下架操作
+			let checkedArray = []
+			this.productIds = ''
+			if (this.isProductChecked) {
+				this.productList.forEach(el => {
+					if (el.isChecked) {
+						checkedArray.push(el)
+					}
+				})
+				checkedArray.forEach(el => {
+					this.productIds += el.productId + ','
+				})
+				this.modal = true
+				this.contentModalText = '确定要取消收藏吗?'
+			}
+		},
+		handleClick(e) {
+			//取消收藏
+			if (e.index == 1) {
+				this.handleDeleteUserLike()
+			}
+			this.modal = false
+		},
+		handleDeleteUserLike() {
+			//操作取消收藏
+			this.ProductService.getDeleteUserLike({
+				productIds: this.productIds,
+				userId: this.listQuery.userId
+			})
+				.then(response => {
+					this.$util.msg('取消收藏成功', 2000, true, 'success')
+					setTimeout(() => {
+						this.GetProductListInfo()
+					}, 2000)
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		hideMobel() {
+			this.modal = false
+		},
+		updateCheckAllBtn() {
+			//勾选单个判断全选
+			let goodsCheckedLength = 0
+			this.productList.forEach(item => {
+				if (item.isChecked) {
+					goodsCheckedLength++
+				}
+			})
+			this.isAllChecked = goodsCheckedLength === this.productList.length
+			if (goodsCheckedLength > 0) {
+				this.isProductChecked = true
+			} else {
+				this.isProductChecked = false
+			}
+		},
+		updateBothCheckBtn() {
+			//全选勾选判断
+			this.productList.forEach(item => {
+				item.isChecked = this.isAllChecked
+			})
+		},
+		isCheckedAll() {
+			//全选
+			this.isAllChecked = !this.isAllChecked
+			if (this.isAllChecked) {
+				this.isProductChecked = true
+			} else {
+				this.isProductChecked = false
+			}
+			this.updateBothCheckBtn()
+		},
+		checkedSoperv(item) {
+			//选择
+			item.isChecked = !item.isChecked
+			console.log(item)
+			this.updateCheckAllBtn()
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
+				}
+			}
+			return false
+		},
+		changeCountAdd() {
+			//popup弹窗数量增加按钮
+			if (this.buyRetailPriceStep == 2) {
+				this.number += this.minBuyNumber
+			} else {
+				this.number++
+			}
+			this.calculatPerice()
+		},
+		changeCountSub() {
+			//popup弹窗数量减按钮
+			if (this.number <= this.minBuyNumber) {
+				this.number = this.minBuyNumber
+				this.isQuantity = true
+				this.$util.msg(`该商品最小起订量为${this.minBuyNumber}`, 2000)
+				return
+			} else {
+				if (this.buyRetailPriceStep == 2) {
+					this.number -= this.minBuyNumber
+				} else {
+					this.number--
+				}
+				this.calculatPerice()
+				this.isQuantity = false
+			}
+		},
+		changeNumber(e) {
+			let _value = e.detail.value
+			if (!this.$api.isNumber(_value)) {
+				this.number = this.minBuyNumber
+			} else if (_value < this.minBuyNumber) {
+				this.$util.msg(`该商品最小起订量为${this.minBuyNumber}`, 2000)
+				this.number = this.minBuyNumber
+			} else if (_value % this.minBuyNumber != 0) {
+				this.$util.msg('购买量必须为起订量的整数倍', 2000)
+				this.number = this.minBuyNumber
+			} else {
+				this.number = e.detail.value
+				this.calculatPerice()
+			}
+		},
+		calculatPerice() {
+			//判断是否为阶梯价然后做计算价格处理
+			if (this.handleData.ladderPriceFlag == 1) {
+				this.handleData.ladderPrices.forEach((item, index) => {
+					if (this.number >= item.buyNum) {
+						this.buyRetailPrice = item.buyPrice
+					}
+				})
+			}
+		},
+		toConfirmation() {
+			//跳转确认订单页面
+			this.popupShow1 = false
+			let productStp = {
+				allPrice: this.number * this.buyRetailPrice,
+				allCount: this.number,
+				productID: this.handleData.productId,
+				productCount: this.number
+			}
+			this.$api.navigateTo(
+				`/pages/user/order/create-order?type=prodcut&data=${JSON.stringify({ data: productStp })}`
+			)
+		},
+		getAddProductCart() {
+			//增加购物车成功和toast弹窗提示成功
+			this.ProductService.shoppingAddCart({
+				productID: this.handleData.productId,
+				userID: this.listQuery.userId,
+				productCount: this.number
+			})
+				.then(response => {
+					this.popupShow1 = false
+					this.$util.msg('加入购物车成功', 1500, true, 'success')
+					this.shoppingHeaderCartNumber()
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		showPopup(index, pros) {
+			// 弹窗显示
+			switch (index) {
+				case 0:
+					this.popupShow = true
+					break
+				case 1:
+					this.popupShow1 = true
+					this.handleData = pros
+					console.log(this.handleData)
+					this.buyRetailPrice = this.handleData.price
+					this.buyRetailPriceStep = this.handleData.step
+					if (this.handleData.ladderPriceFlag == 1) {
+						this.number = this.handleData.maxBuyNumber ? this.handleData.maxBuyNumber : 1
+					} else {
+						this.number = this.handleData.minBuyNumber
+					}
+					break
+			}
+		},
+		hidePopup(index) {
+			// 弹窗隐藏
+			switch (index) {
+				case 0:
+					this.popupShow = false
+					break
+				case 1:
+					this.popupShow1 = false
+					break
+			}
+		},
+		isShowVipFlag(pros) {
+			// 超级会员价格显示控制
+			if (pros.priceFlag != 1) {
+				if (this.userIdentity == 4 && this.vipFlag == 1) {
+					return true
+				} else if (this.userIdentity == 2) {
+					return true
+				}
+			}
+		},
+		navToDetailPage(id) {
+			this.isModallayer = true
+			this.$api.navigateTo(`/pages/goods/product?id=${id}`)
+			this.isModallayer = false
+		},
+		btnClick() {
+			this.$api.switchTabTo('/pages/tabBar/cart/index')
+		},
+		btnTouchstart() {
+			// console.log('btnTouchstart');
+		},
+		btnTouchend() {
+			// console.log('btnTouchend');
+		}
+	},
+	onPageScroll(e) {
+		//实时获取到滚动的值
+	},
+	onReachBottom() {
+		if (this.hasNextPage) {
+			this.loadding = true
+			this.pullUpOn = true
+			this.GetOnReachBottomData()
+		}
+	},
+	onPullDownRefresh() {
+		setTimeout(() => {
+			this.listQuery.pageNum = 1
+			uni.stopPullDownRefresh()
+		}, 200)
+	},
+	onShow() {}
+}
+</script>
+
+<style lang="scss">
+@import '@/uni.scss';
+page {
+	background: #fff;
+}
+.empty-container {
+	z-index: 9999;
+}
+.tui-header {
+	width: 100%;
+	font-size: 16px;
+	font-weight: 500;
+	height: 32px;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	position: relative;
+	padding: 0 40rpx;
+}
+.header-sit {
+	width: 100%;
+	box-sizing: border-box;
+	height: 80rpx;
+	line-height: 80rpx;
+	box-sizing: border-box;
+	padding: 0 40rpx;
+	text-align: left;
+	font-size: $font-size-40;
+	color: #ffffff;
+	font-weight: 600;
+	font-family: '正楷';
+	margin-top: 30rpx;
+	.iconfont {
+		font-size: 42rpx;
+		margin-left: 30rpx;
+	}
+}
+.mine {
+	width: 100%;
+	height: 100%;
+	position: relative;
+}
+.product-content {
+	width: 100%;
+	height: auto;
+	position: relative;
+	padding: 0;
+	box-sizing: border-box;
+	.empty-container-image {
+		width: 260rpx;
+		height: 260rpx;
+		margin-top: -300rpx;
+	}
+}
+.tui-goods-item {
+	padding: 30rpx 20rpx 0 20rpx;
+	box-sizing: border-box;
+	position: relative;
+	.tui-goods-main {
+		display: flex;
+		width: 100%;
+		height: 100%;
+		border-bottom: 1px solid #ebebeb;
+		padding-bottom: 24rpx;
+	}
+}
+.tui-goods-checkBox {
+	display: flex;
+	align-items: center;
+	margin: 0 15rpx;
+	.checkbox {
+		display: flex;
+		margin: 0;
+		padding: 0;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		box-sizing: border-box;
+		text-align: center;
+		text-decoration: none;
+		border-radius: 0;
+		-webkit-tap-highlight-color: transparent;
+		overflow: hidden;
+		background-color: #ffffff;
+		font-size: 36rpx;
+		color: $color-system;
+	}
+	.text {
+		font-size: $font-size-24;
+		margin-left: 10rpx;
+	}
+}
+.tui-goods-image {
+	width: 180rpx;
+	height: 180rpx !important;
+	border-radius: 12rpx;
+	.tui-goods-img {
+		width: 180rpx;
+		height: 180rpx !important;
+		border-radius: 12rpx;
+		flex-shrink: 0;
+		display: block;
+	}
+}
+.tui-goods-info {
+	width: 460rpx;
+	padding-left: 20rpx;
+	box-sizing: border-box;
+	position: relative;
+	.list-details-title {
+		line-height: 38rpx;
+		text-overflow: ellipsis;
+		overflow: hidden;
+		display: -webkit-box;
+		-webkit-line-clamp: 2;
+		line-clamp: 2;
+		-webkit-box-orient: vertical;
+		font-size: 26rpx;
+		color: #333333;
+	}
+	.list-details-specs {
+		width: 100%;
+		display: inline-block;
+		margin-top: 8rpx;
+		color: #999999;
+		font-size: 24rpx;
+	}
+	.list-details-price {
+		width: 100%;
+		line-height: 54rpx;
+		float: left;
+		&.none {
+			height: 32rpx;
+			line-height: 32rpx;
+		}
+		.floor-item-act {
+			height: 54rpx;
+			text-align: center;
+			box-sizing: border-box;
+			float: left;
+		}
+		.price-icon {
+			width: 22rpx;
+			height: 28rpx;
+			vertical-align: middle;
+			margin-right: 10rpx;
+		}
+		.price-icon + text {
+			font-size: 25rpx;
+			vertical-align: middle;
+		}
+		.list-login-now {
+			width: 375rpx;
+			color: #f8c499;
+			position: absolute;
+			bottom: 0;
+			.p-no {
+				float: left;
+				font-size: $font-size-24;
+				color: $color-system;
+				margin-right: 10rpx;
+			}
+		}
+		.login-now {
+			padding: 10rpx 10rpx 10rpx 0;
+		}
+		.list-none {
+			margin-top: 20rpx;
+			.price-small {
+				font-size: $font-size-26;
+				line-height: 40rpx;
+				color: #ff2a2a;
+			}
+		}
+		.list-price {
+			color: #ff2a2a;
+			float: left;
+			line-height: 54rpx;
+			align-items: center;
+			justify-content: center;
+			.price-larger {
+				font-size: $font-size-30;
+				display: inline-block;
+				&.none {
+					text-decoration: line-through;
+					color: #999999;
+				}
+			}
+		}
+		.add-cart-btn {
+			float: right;
+			width: 186rpx;
+			height: 54rpx;
+			line-height: 54rpx;
+			border-radius: 30rpx;
+			color: #fff;
+			font-size: 24rpx;
+			margin-right: 0;
+			background: #ffffff;
+			color: $text-color;
+			text-align: center;
+			.number-box {
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				border: 2rpx solid #ffe6dc;
+				border-radius: 30rpx;
+				.iconfont {
+					font-size: $font-size-24;
+					padding: 0 18rpx;
+					color: #999999;
+					text-align: center;
+					line-height: 48rpx;
+					font-weight: bold;
+					background: #fef6f3;
+					&.icon-jianhao {
+						border-radius: 30rpx 0 0 30rpx;
+					}
+					&.icon-jiahao {
+						border-radius: 0 30rpx 30rpx 0;
+					}
+				}
+				.btn-input {
+					width: 62rpx;
+					height: 48rpx;
+					line-height: 48rpx;
+					background: #fff;
+					border-radius: 4rpx;
+					text-align: center;
+					font-size: $font-size-24;
+				}
+			}
+		}
+	}
+}
+.tui-popup-box {
+	position: relative;
+	box-sizing: border-box;
+	min-height: 168rpx;
+	padding: 6rpx 24rpx;
+	.tui-popup-content {
+		padding-top: 30rpx;
+	}
+}
+.layer-smimg {
+	width: 114rpx;
+	height: 114rpx;
+	float: left;
+	border-radius: 10rpx;
+	margin-right: 24rpx;
+	image {
+		width: 114rpx;
+		height: 114rpx;
+		border-radius: 10rpx;
+	}
+}
+.layer-nunbox {
+	justify-content: space-between;
+	align-items: center;
+	width: 536rpx;
+	height: 88rpx;
+	padding: 13rpx 0 0 0;
+	float: left;
+	.layer-nunbox-t {
+		width: 100%;
+		height: 44rpx;
+		position: relative;
+		display: flex;
+		.layer-nunbox-text {
+			line-height: 44rpx;
+			font-size: $font-size-28;
+		}
+		.number-box {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			border: 2rpx solid #ffe6dc;
+			border-radius: 30rpx;
+			height: 48rpx;
+			margin-left: 20rpx;
+			.iconfont {
+				font-size: $font-size-24;
+				padding: 0 18rpx;
+				color: #999999;
+				text-align: center;
+				line-height: 48rpx;
+				font-weight: bold;
+				background: #fef6f3;
+				&.icon-jianhao {
+					border-radius: 30rpx 0 0 30rpx;
+				}
+				&.icon-jiahao {
+					border-radius: 0 30rpx 30rpx 0;
+				}
+			}
+			.btn-input {
+				width: 62rpx;
+				height: 48rpx;
+				line-height: 48rpx;
+				background: #ffffff;
+				border-radius: 4rpx;
+				text-align: center;
+				font-size: $font-size-28;
+			}
+		}
+		.product-step {
+			position: absolute;
+			left: 45rpx;
+			bottom: 0;
+			height: 44rpx;
+			background: #ffffff;
+		}
+	}
+	.layer-nunbox-b {
+		width: 100%;
+		height: 44rpx;
+		margin-top: 13rpx;
+	}
+	.text {
+		line-height: 44rpx;
+		font-size: $font-size-28;
+		.p {
+			color: #ff2a2a;
+		}
+		.p:first-child {
+			margin-left: 30rpx;
+		}
+		.p.sm {
+			font-size: $font-size-24;
+		}
+	}
+}
+.tui-popup-btn {
+	width: 100%;
+	height: auto;
+	float: left;
+	box-sizing: border-box;
+	margin-top: 30rpx;
+	.superv-header-checked {
+		float: left;
+		font-size: $font-size-30;
+		.oltext {
+			width: 120rpx;
+			float: left;
+			color: #666666;
+			display: flex;
+			margin-left: 10rpx;
+			.checkbox {
+				display: flex;
+				margin: 0;
+				padding: 0;
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				box-sizing: border-box;
+				text-align: center;
+				text-decoration: none;
+				border-radius: 0;
+				-webkit-tap-highlight-color: transparent;
+				overflow: hidden;
+				font-size: 34rpx;
+				color: $color-system;
+				line-height: 80rpx;
+			}
+			.text {
+				float: left;
+				line-height: 80rpx;
+				margin-left: 15rpx;
+			}
+		}
+		.ortext {
+			width: 120rpx;
+			float: right;
+			color: $color-system;
+			text-align: right;
+		}
+	}
+	.tui-button {
+		width: 210rpx;
+		height: 88rpx;
+		float: right;
+		background: #e1e1e1;
+		line-height: 88rpx;
+		text-align: center;
+		color: #ffffff;
+		font-size: $font-size-28;
+		border-radius: 44rpx;
+		margin-left: 32rpx;
+		&.add {
+			background: #ffe6dc;
+			color: #e15616;
+		}
+		&.buy {
+			background: $btn-confirm;
+		}
+	}
+	.tui-flex-btn {
+		width: 100%;
+		height: 88rpx;
+		display: flex;
+		box-sizing: border-box;
+		padding: 0 34rpx;
+		.button {
+			width: 280rpx;
+			height: 88rpx;
+			color: #fff;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			font-size: $font-size-28;
+			border-radius: 44rpx;
+			&.buy {
+				background: $btn-confirm;
+				margin-left: 78rpx;
+			}
+			&.add {
+				background: #ffe6dc;
+				color: #e15616;
+			}
+		}
+	}
+}
+</style>

+ 70 - 3
pages/goods/product.vue

@@ -169,6 +169,16 @@
 						<text class="title">参数:</text> <text class="name">品牌 起订量 分类...</text>
 						<text class="iconfont icon-xiayibu"></text>
 					</view>
+					<!-- 配套商品 -->
+					<view class="product-supporting" v-if="userIdentity == 2 || userIdentity == 4">
+						<view class="product-supporting-title">配套商品(20)</view>
+						<view class="product-supporting-list">
+							<view class="list" v-for="(supporting, index) in supportingList" :key="index">
+								<image class="list-image" :src="supporting" mode=""></image>
+							</view>
+							<text class="iconfont icon-xiayibu"  @click.stop="handleSupporting"></text>
+						</view>
+					</view>
 					<!-- 优惠券 -->
 					<view
 						class="product-parameter coupon"
@@ -613,7 +623,7 @@ export default {
 			userId: 0,
 			shopId: 0,
 			shopID: 0,
-			vipFlag:0,
+			vipFlag: 0,
 			productId: 0,
 			userIdentity: 0, // 用户类型
 			goodsData: {}, // 自定义数据
@@ -664,7 +674,13 @@ export default {
 			navbar: [{ name: '未领取', num: 0 }, { name: '已领取', num: 0 }],
 			isPreviewImage: false,
 			opentype: '',
-			collectionType: false
+			collectionType: false,
+			supportingList: [
+				'https://img.caimei365.com/group1/M00/00/10/rB-lGGCHqP-AIE9-AAEQHiqWjQY981.png',
+				'https://img.caimei365.com/group1/M00/00/10/rB-lGGCHqP-AIE9-AAEQHiqWjQY981.png',
+				'https://img.caimei365.com/group1/M00/00/10/rB-lGGCHqP-AIE9-AAEQHiqWjQY981.png',
+				'https://img.caimei365.com/group1/M00/00/10/rB-lGGCHqP-AIE9-AAEQHiqWjQY981.png'
+			]
 		}
 	},
 	computed: {
@@ -817,7 +833,7 @@ export default {
 					// setTimeout(() => {
 					//     this.getSectionProps()
 					// }, 2000)
-					if(this.hasLogin){
+					if (this.hasLogin) {
 						this.shoppingHeaderCartNumber()
 					}
 					this.queryProductDetilsCoupons()
@@ -1204,6 +1220,10 @@ export default {
 					break
 			}
 		},
+		handleSupporting() {
+			// 跳转组合商品页面
+			this.$api.navigateTo('/pages/goods/goods-supporting')
+		},
 		// 获取每个tab对应区域的区间
 		async getSectionProps() {
 			const sectionPropsArr = [],
@@ -1705,6 +1725,53 @@ page {
 		line-height: 40rpx;
 	}
 }
+.product-supporting {
+	width: 100%;
+	height: 274rpx;
+	box-sizing: border-box;
+	padding: 30rpx 24rpx;
+	background-color: #ffffff;
+	border-bottom: 20rpx solid #f7f7f7;
+	.product-supporting-title {
+		width: 100%;
+		height: 40rpx;
+		text-align: left;
+		line-height: 40rpx;
+		font-size: $font-size-28;
+		color: #333333;
+	}
+	.product-supporting-list {
+		width: 100%;
+		height: 154rpx;
+		box-sizing: border-box;
+		padding: 13rpx 0;
+		position: relative;
+		.icon-xiayibu {
+			line-height: 154rpx;
+			display: inline-block;
+			position: absolute;
+			width: 80rpx;
+			top: 0;
+			right: 0;
+			color: #b2b2b2;
+			text-align: right;
+		}
+		.list {
+			width: 128rpx;
+			height: 128rpx;
+			margin-right: 24rpx;
+			float: left;
+			border: 1px solid #e1e1e1;
+			border-radius: 8rpx;
+			.list-image {
+				width: 100%;
+				height: 100%;
+				display: block;
+				border-radius: 8rpx;
+			}
+		}
+	}
+}
 .product-parameter {
 	width: 702rpx;
 	height: 90rpx;

+ 645 - 111
pages/search/search.vue

@@ -1,48 +1,114 @@
 <template>
 	<view class="search-container">
 		<view class="search-main">
-			<view class="search-tab">
-				<view class="search-tab-btn" @click="topBubble">
-					<text>{{ tabValue }}</text> <text class="iconfont icon-xiangxiajiantou"></text>
+			<view class="tui-header-tab">
+				<view class="search-tab">
+					<view class="search-tab-btn" @click="topBubble">
+						<text>{{ tabValue }}</text> <text class="iconfont icon-xiangxiajiantou"></text>
+					</view>
+					<tui-bubble-popup
+						:show="show"
+						:mask="true"
+						position="absolute"
+						direction="top"
+						@close="topBubble"
+						width="140rpx"
+						left="10rpx"
+						bottom="0rpx"
+						translateY="100%"
+						triangleRight="60rpx"
+						triangleTop="-22rpx"
+						:maskBgColor="maskBgColor"
+					>
+						<view class="tui-menu-item" @tap="selectTabs(1)">产品</view>
+						<!-- <view class="tui-menu-item" @tap="selectTabs(2)">供应商</view> -->
+						<view class="tui-menu-item" @tap="selectTabs(3)">项目仪器</view>
+					</tui-bubble-popup>
 				</view>
-				<tui-bubble-popup
-					:show="show"
-					:mask="true"
-					position="absolute"
-					direction="top"
-					@close="topBubble"
-					width="140rpx"
-					left="10rpx"
-					bottom="0rpx"
-					translateY="100%"
-					triangleRight="60rpx"
-					triangleTop="-22rpx"
-					:maskBgColor="maskBgColor"
-				>
-					<view class="tui-menu-item" @tap="selectTabs(1)">产品</view>
-					<!-- <view class="tui-menu-item" @tap="selectTabs(2)">供应商</view> -->
-					<view class="tui-menu-item" @tap="selectTabs(3)">项目仪器</view>
-				</tui-bubble-popup>
+				<view class="gosearch-btn">
+					<text class="iconfont icon-sousuo"></text>
+					<input
+						class="input"
+						maxlength="20"
+						:focus="isFocus"
+						type="text"
+						value=""
+						confirm-type="search"
+						@focus="onFocus"
+						@input="onShowClose"
+						@confirm="subMitSearch()"
+						placeholder="请输入搜索关键字"
+						v-model.trim="listQuery.keyword"
+					/>
+					<text class="iconfont icon-shanchu1" v-if="isShowClose" @click.stop="delInputText()"></text>
+				</view>
+				<view class="search-btn" @click="subMitSearch()">搜索</view>
 			</view>
-			<view class="gosearch-btn">
-				<text class="iconfont icon-sousuo"></text>
-				<input
-					class="input"
-					maxlength="20"
-					:focus="isFocus"
-					type="text"
-					value=""
-					confirm-type="search"
-					@focus="onFocus"
-					@input="onShowClose"
-					@confirm="subMitSearch()"
-					placeholder="请输入搜索关键字"
-					v-model.trim="listQuery.keyword"
-				/>
-				<text class="iconfont icon-shanchu1" v-if="isShowClose" @click.stop="delInputText()"></text>
+			<!-- 筛选条件排序 -->
+			<view class="tui-header-screen">
+				<view class="tui-screen-top">
+					<view
+						class="tui-top-item"
+						:class="[tabIndex == 0 ? 'tui-active' : '']"
+						@tap="handleScreen"
+						data-index="0"
+						>综合</view
+					>
+					<view
+						class="tui-top-item tui-icon-ml"
+						:class="[tabIndex == 1 ? 'tui-active' : '']"
+						data-index="1"
+						@tap="handleScreen"
+					>
+						<view>销量</view> <text class="iconfont icon-shangxiajiantou" v-if="isSearchSalesFirst"></text>
+						<template v-else>
+							<tui-icon
+								:name="isSearchSales ? 'turningdown' : 'turningup'"
+								:size="18"
+								:color="tabIndex == 1 ? '#e15616' : '#999'"
+								tui-icon-class="tui-ml"
+							></tui-icon>
+						</template>
+					</view>
+					<view
+						class="tui-top-item tui-icon-ml"
+						:class="[tabIndex == 2 ? 'tui-active' : '']"
+						data-index="2"
+						@tap="handleScreen"
+					>
+						<view>人气</view> <text class="iconfont icon-shangxiajiantou" v-if="isSearchMoodFirst"></text>
+						<template v-else>
+							<tui-icon
+								:name="isSearchMood ? 'turningdown' : 'turningup'"
+								:size="18"
+								:color="tabIndex == 2 ? '#e15616' : '#999'"
+								tui-icon-class="tui-ml"
+							></tui-icon>
+						</template>
+					</view>
+					<view
+						class="tui-top-item tui-icon-ml"
+						:class="[tabIndex == 3 ? 'tui-active' : '']"
+						data-index="3"
+						@tap="handleScreen"
+					>
+						<view>价格</view> <text class="iconfont icon-shangxiajiantou" v-if="isSearchPriceFirst"></text>
+						<template v-else>
+							<tui-icon
+								:name="isSearchPrice ? 'turningdown' : 'turningup'"
+								:size="18"
+								:color="tabIndex == 3 ? '#e15616' : '#999'"
+								tui-icon-class="tui-ml"
+							></tui-icon>
+						</template>
+					</view>
+					<view class="tui-top-item" @tap="handleScreen" data-index="4">
+						<view>筛选</view> <text class="iconfont icon-shaixuan"></text>
+					</view>
+				</view>
 			</view>
-			<view class="search-btn" @click="subMitSearch()">搜索</view>
 		</view>
+		<!-- 搜索历史记录 -->
 		<view class="search-container-history" v-if="!isShowWrapper">
 			<view :class="'s-' + themeClass" v-if="serachRecordList.length > 0">
 				<view class="header"> 搜索历史<text class="iconfont icon-shanchu" @click="confirmDetele"></text> </view>
@@ -57,7 +123,7 @@
 					</view>
 				</view>
 			</view>
-			<view class="s-block hot clearfix">
+			<view class="s-block clearfix">
 				<view class="header">热门搜索</view>
 				<view class="list">
 					<view class="list-title">产品</view>
@@ -176,8 +242,10 @@
 									</template>
 									<template v-if="pros.svipProductFlag == 1">
 										<view class="svip-tags">
-											<view class="tags" :class="{ none : vipFlag == 0 }">SVIP</view>
-											<view class="price" v-if="isShowVipFlag(pros)">{{ pros.svipPriceTag }}</view>
+											<view class="tags" :class="{ none: vipFlag == 0 }">SVIP</view>
+											<view class="price" v-if="isShowVipFlag(pros)">{{
+												pros.svipPriceTag
+											}}</view>
 										</view>
 									</template>
 								</view>
@@ -294,6 +362,58 @@
 				<text class="error-text">抱歉,没有相关商品!</text>
 			</view>
 		</view>
+		<!--筛选条件右抽屉-->
+		<tui-drawer mode="right" :visible="rightDrawer" @close="closeDrawer">
+			<view class="drawer-title">
+				<view class="drawer-title-h1">品牌</view>
+				<view class="drawer-title-p">已选中<text class="text">{{ checkedBrandLength }}</text>个品牌</view>
+			</view>
+			<view
+				class="drawer-container clearfix"
+				scroll-y
+				:style="{ paddingBottom: isIphoneX ? '180rpx' : '146rpx' }"
+				@scroll="drawerScroll(event)"
+			>
+				<scroll-view class="tui-drawer-scroll" scroll-y :style="{ height: drawerH + 'px' }">
+					<view class="drawer-main">
+						<view class="drawer-main-brand clearfix">
+							<view class="drawer-brand-list">全部</view>
+							<view
+								class="drawer-brand-list"
+								:class="brand.isChecked ? 'checked':''"
+								v-for="(brand, index) in brandLists"
+								:key="index"
+								@click="choiceBrand(brand,index)"
+							>
+								{{ brand.name }}
+							</view>
+							<view class="drawer-brand-more" v-if="!isShowAllBrands" @click="showAllBrands"
+								>查看全部<text class="iconfont icon-xiangxiajiantou"></text
+							></view>
+						</view>
+						<view class="drawer-main-radio">
+							<view class="drawer-radio-name">新品</view>
+							<view class="drawer-radio-input" @click="choiceNewType">
+								<text class="iconfont" :class="isChoiceNewType ? 'icon-yixuanze' : 'icon-weixuanze'"></text>
+							</view>
+						</view>
+						<view class="drawer-main-radio">
+							<view class="drawer-radio-name">促销商品</view>
+							<view class="drawer-radio-input" @click="choiceActiType">
+								<text
+									class="iconfont"
+									:class="isChoiceActiType ? 'icon-yixuanze' : 'icon-weixuanze'"
+								></text>
+							</view>
+						</view>
+					</view>
+				</scroll-view>
+				<view class="drawer-input btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
+					<view class="drawer-btn clear" @click="closeDrawer">重置</view>
+					<view class="drawer-btn comfrim" @click="handSearchList">确定</view>
+				</view>
+			</view>
+		</tui-drawer>
 		<!-- 透明模态层 -->
 		<modal-layer v-if="isModallayer"></modal-layer>
 	</view>
@@ -313,14 +433,27 @@ export default {
 	},
 	data() {
 		return {
+			CustomBar: this.CustomBar, // 顶部导航栏高度
+			isIphoneX: this.$store.state.isIphoneX,
 			shopId: 0,
 			userId: 0,
 			tabValue: '产品',
 			themeClass: 'block',
 			show: false,
-			vipFlag:0,
+			vipFlag: 0,
 			userIdentity: 0,
 			searchKeyType: 1,
+			tabIndex: 0,
+			rightDrawer: false,
+			isShowAllBrands: false,
+			isSearchSalesFirst: true,
+			isSearchMoodFirst: true,
+			isSearchPriceFirst: true,
+			isSearchSales: true,
+			isSearchMood: true,
+			isSearchPrice: true,
+			isChoiceNewType: false,
+			isChoiceActiType: false,
 			isShowClose: false, //是否显示清空输入框图标
 			isSearchHistory: false, //是都显示搜索历史
 			serachRecordList: [], //历史搜索记录
@@ -334,6 +467,18 @@ export default {
 			showEmpty: false,
 			scrollHeight: '',
 			listData: [],
+			brandLists: [
+				{ name: '斯蒂芬斯',isChecked:false },
+				{ name: 'Beautsecre',isChecked:false },
+				{ name: '意大利DEP',isChecked:false },
+				{ name: '美生美',isChecked:false },
+				{ name: '三诺激光',isChecked:false },
+				{ name: '三诺激光',isChecked:false },
+				{ name: '三诺激光三诺激光',isChecked:false },
+				{ name: '三诺激光三诺激光三诺激光',isChecked:false }
+			],
+			checkedBrandList:[],
+			checkedBrandLength:0,
 			productIds: '', //查询价格的商品ID
 			showLoading: false,
 			loadingNow: true,
@@ -342,16 +487,20 @@ export default {
 			listQuery: {
 				identity: 0,
 				keyword: '',
-				sortField: '',
-				sortType: '',
 				pageNum: 1,
-				pageSize: 20
+				pageSize: 20,
+				sortField: '',
+				sortType: 1,
+				newType: 1,
+				actiType: 1
 			},
-			total: 0
+			total: 0,
+			height:0,
+			drawerH:0 // 抽屉内部scrollview高度
 		}
 	},
 	computed: {
-		...mapState(['hasLogin', 'userInfo', 'isWxAuthorize', 'hasLogin', 'userInfo', 'identity'])
+		...mapState(['hasLogin', 'userInfo', 'isWxAuthorize', 'hasLogin', 'userInfo', 'identity']),
 	},
 	onLoad(option) {
 		console.log(option)
@@ -534,6 +683,65 @@ export default {
 			})
 			return NewArray
 		},
+		handleScreen(e) {
+			let index = e.currentTarget.dataset.index
+			console.log(index)
+			if (index == 0) {
+				this.tabIndex = 0
+				this.isSearchSalesFirst = true
+				this.isSearchMoodFirst = true
+				this.isSearchPriceFirst = true
+				this.listQuery.sortType = 1
+				this.listQuery.sortField = ''
+			} else if (index == 1) {
+				this.tabIndex = 1
+				this.isSearchSalesFirst = false
+				this.isSearchMoodFirst = true
+				this.isSearchPriceFirst = true
+				this.isSearchSales = !this.isSearchSales
+				if (this.isSearchSales) {
+					this.listQuery.sortType = 1
+				} else {
+					this.listQuery.sortType = 0
+				}
+				this.listQuery.sortField = 'p_sales'
+			} else if (index == 2) {
+				this.tabIndex = 2
+				this.isSearchSalesFirst = true
+				this.isSearchPriceFirst = true
+				this.isSearchMoodFirst = false
+				this.isSearchMood = !this.isSearchMood
+				if (this.isSearchMood) {
+					this.listQuery.sortType = 1
+				} else {
+					this.listQuery.sortType = 0
+				}
+				this.listQuery.sortField = 'p_favorite'
+			} else if (index == 3) {
+				this.tabIndex = 3
+				this.isSearchSalesFirst = true
+				this.isSearchMoodFirst = true
+				this.isSearchPriceFirst = false
+				this.isSearchPrice = !this.isSearchPrice
+				if (this.isSearchPrice) {
+					this.listQuery.sortType = 1
+				} else {
+					this.listQuery.sortType = 0
+				}
+				this.listQuery.sortField = 'p_price'
+			} else if (index == 4) {
+				this.showRightDrawer()
+			}
+			this.getListFromServer()
+		},
+		showRightDrawer() {
+			//弹出右侧抽屉
+			this.rightDrawer = true
+		},
+		closeDrawer(e) {
+			//关闭抽屉
+			this.rightDrawer = false
+		},
 		PromotionsFormat(promo) {
 			//促销活动类型数据处理
 			if (promo != null) {
@@ -615,7 +823,14 @@ export default {
 			this.isModallayer = false
 		},
 		setScrollHeight() {
+			let obj = {}
 			const { windowHeight, pixelRatio } = wx.getSystemInfoSync()
+			uni.getSystemInfo({
+				success: res => {
+					this.height = obj.top ? obj.top + obj.height + 8 : res.statusBarHeight + 44
+					this.drawerH = res.windowHeight - uni.upx2px(180) - this.height
+				}
+			})
 			this.windowHeight = windowHeight - 1
 			this.scrollHeight = windowHeight - 1
 		},
@@ -641,6 +856,29 @@ export default {
 					break
 			}
 		},
+		showAllBrands() {
+			// 查看全部品牌
+			this.isShowAllBrands = true
+		},
+		choiceBrand(brand,index) {
+			// 选择品牌
+			brand.isChecked = !brand.isChecked
+			if(brand.isChecked){
+				this.checkedBrandList.push(brand)
+			}else{
+				this.checkedBrandList.splice(index,1)
+			}
+			this.checkedBrandLength = this.checkedBrandList.length
+			console.log('checkedBrandList',this.checkedBrandList)
+		},
+		choiceNewType() {
+			// 选择筛选项新品
+			this.isChoiceNewType = !this.isChoiceNewType
+		},
+		choiceActiType() {
+			// 选择筛选项促销商品
+			this.isChoiceActiType = !this.isChoiceActiType
+		},
 		topBubble() {
 			//显隐搜索项
 			this.show = !this.show
@@ -677,85 +915,229 @@ page {
 	background: #ffffff;
 	z-index: 1001;
 	box-sizing: border-box;
-	padding: 9rpx 0;
-	.search-tab {
-		width: 160rpx;
-		height: 70rpx;
-		line-height: 70rpx;
-		color: #666666;
-		font-size: $font-size-24;
-		text-align: center;
-		float: left;
-		position: relative;
-		.icon-xiangxiajiantou {
-			margin-left: 10rpx;
-			font-size: $font-size-30;
-		}
-	}
-	.gosearch-btn {
-		width: 470rpx;
-		height: 100%;
-		float: left;
-		border-radius: 40rpx;
-		background: #f0f0f0;
-		margin: 0 auto;
-		padding: 0 20rpx;
-		font-size: 28rpx;
-		line-height: 70rpx;
-		padding-left: 70rpx;
-		color: #8a8a8a;
-		background: #f7f7f7;
-		position: relative;
+	.tui-header-tab {
+		height: 88rpx;
 		box-sizing: border-box;
-		.icon-sousuo {
-			width: 70rpx;
+		padding: 9rpx 0;
+		float: left;
+		.search-tab {
+			width: 160rpx;
 			height: 70rpx;
 			line-height: 70rpx;
+			color: #666666;
+			font-size: $font-size-24;
 			text-align: center;
-			display: block;
-			position: absolute;
-			left: 0;
-			top: 0;
-			font-size: 34rpx;
-			color: #8a8a8a;
-			z-index: 10;
-		}
-		.icon-shanchu1 {
-			font-size: 36rpx;
-			color: #8a8a8a;
-			position: absolute;
-			right: 10rpx;
-			top: 0;
-			padding: 0 10rpx;
-			z-index: 100;
+			float: left;
+			position: relative;
+			.icon-xiangxiajiantou {
+				margin-left: 10rpx;
+				font-size: $font-size-30;
+			}
 		}
-		.input {
-			width: 400rpx;
+		.gosearch-btn {
+			width: 470rpx;
 			height: 100%;
 			float: left;
-			font-size: $font-size-24;
+			border-radius: 40rpx;
+			background: #f0f0f0;
+			margin: 0 auto;
+			padding: 0 20rpx;
+			font-size: 28rpx;
+			line-height: 70rpx;
+			padding-left: 70rpx;
+			color: #8a8a8a;
+			background: #f7f7f7;
+			position: relative;
 			box-sizing: border-box;
-			padding-right: 66rpx;
+			.icon-sousuo {
+				width: 70rpx;
+				height: 70rpx;
+				line-height: 70rpx;
+				text-align: center;
+				display: block;
+				position: absolute;
+				left: 0;
+				top: 0;
+				font-size: 34rpx;
+				color: #8a8a8a;
+				z-index: 10;
+			}
+			.icon-shanchu1 {
+				font-size: 36rpx;
+				color: #8a8a8a;
+				position: absolute;
+				right: 10rpx;
+				top: 0;
+				padding: 0 10rpx;
+				z-index: 100;
+			}
+			.input {
+				width: 400rpx;
+				height: 100%;
+				float: left;
+				font-size: $font-size-24;
+				box-sizing: border-box;
+				padding-right: 66rpx;
+			}
+		}
+		.search-btn {
+			width: 120rpx;
+			height: 70rpx;
+			line-height: 70rpx;
+			float: right;
+			text-align: center;
+			color: #666666;
+			font-size: $font-size-24;
 		}
-	}
-	.search-btn {
-		width: 120rpx;
-		height: 70rpx;
-		line-height: 70rpx;
-		float: right;
-		text-align: center;
-		color: #666666;
-		font-size: $font-size-24;
 	}
 }
 .search-container {
-	padding-top: 96rpx;
+	padding-top: 89rpx;
+}
+/*screen*/
+.tui-header-screen {
+	width: 100%;
+	height: 88rpx;
+	float: left;
+	box-sizing: border-box;
+	background: #fff;
+}
+.tui-screen-top,
+.tui-screen-bottom {
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+	font-size: 28rpx;
+	color: #999999;
+}
+.tui-screen-top {
+	height: 88rpx;
+	position: relative;
+	background: #fff;
+	border-bottom: 1px solid #efefef;
+}
+.tui-top-item {
+	height: 28rpx;
+	line-height: 28rpx;
+	flex: 1;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+}
+.icon-shangxiajiantou {
+	font-size: 20rpx;
+	color: #999999;
+	margin-left: 8rpx;
+}
+.tui-topitem-active {
+	color: #e15616;
+}
+
+.tui-screen-bottom {
+	height: 100rpx;
+	padding: 0 30rpx;
+	box-sizing: border-box;
+	font-size: 24rpx;
+	align-items: center;
+	overflow: hidden;
+}
+
+.tui-bottom-text {
+	line-height: 26rpx;
+	max-width: 82%;
+	white-space: nowrap;
+	overflow: hidden;
+	text-overflow: ellipsis;
+}
+
+.tui-bottom-item {
+	flex: 1;
+	width: 0;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	padding: 0 12rpx;
+	box-sizing: border-box;
+	background: #f7f7f7;
+	margin-right: 20rpx;
+	white-space: nowrap;
+	height: 60rpx;
+	border-radius: 40rpx;
+}
+
+.tui-bottom-item:last-child {
+	margin-right: 0;
+}
+
+.tui-btmItem-active {
+	background: #fcedea !important;
+	color: #e15616;
+	font-weight: bold;
+	position: relative;
+}
+
+.tui-btmItem-active::after {
+	content: '';
+	position: absolute;
+	border: 1rpx solid #e15616;
+	width: 100%;
+	height: 100%;
+	border-radius: 40rpx;
+	left: 0;
+	top: 0;
+}
+
+.tui-btmItem-tap {
+	position: relative;
+	border-bottom-left-radius: 0;
+	border-bottom-right-radius: 0;
+}
+
+.tui-btmItem-tap::after {
+	content: '';
+	position: absolute;
+	width: 100%;
+	height: 22rpx;
+	background: #f7f7f7;
+	left: 0;
+	top: 58rpx;
+}
+.tui-active {
+	color: #e15616;
+}
+.tui-icon-ml .tui-icon-class {
+	margin-left: 6rpx;
+}
+
+.tui-ml {
+	margin-left: 6rpx;
+}
+
+.tui-seizeaseat-20 {
+	height: 20rpx;
+}
+
+.tui-seizeaseat-30 {
+	height: 30rpx;
+}
+
+.tui-icon-middle .tui-icon-class {
+	vertical-align: middle;
+}
+
+.tui-middle {
+	vertical-align: middle;
+}
+.search-container-history {
+	width: 100%;
+	min-height: 300rpx;
+	position: fixed;
+	top: 88rpx;
+	left: 0;
+	z-index: 9999;
 }
 .s-block {
 	background: #ffffff;
-	&.hot {
-		border-top: 20rpx solid #f7f7f7;
-	}
 	.header {
 		font-size: 32rpx;
 		padding: 40rpx 24rpx 22rpx 24rpx;
@@ -898,6 +1280,7 @@ page {
 	}
 }
 .commodity-list-wrapper {
+	padding-top: 88rpx;
 	scroll-view {
 		height: 100%;
 		overflow: scroll;
@@ -1041,4 +1424,155 @@ page {
 		}
 	}
 }
+// 筛选抽屉样式
+.drawer-title {
+	width: 580rpx;
+	height: 72rpx;
+	line-height: 72rpx;
+	box-sizing: border-box;
+	padding: 0 30rpx;
+	background-color: #f7f7f7;
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 99;
+	.drawer-title-h1 {
+		font-size: $font-size-26;
+		color: #e15616;
+		font-weight: bold;
+		text-align: left;
+		float: left;
+	}
+	.drawer-title-p {
+		font-size: $font-size-24;
+		float: right;
+		color: #333333;
+		.text {
+			color: #e15616;
+		}
+	}
+}
+.drawer-container {
+	width: 580rpx;
+	height: 100%;
+	box-sizing: border-box;
+	background-color: #f7f7f7;
+	overflow: hidden;
+	position: relative;
+	padding-top: 72rpx;
+	.drawer-main {
+		width: 100%;
+		height: auto;
+		box-sizing: border-box;
+		.drawer-main-brand {
+			width: 100%;
+			height: auto;
+			box-sizing: border-box;
+			padding: 12rpx 24rpx 24rpx 24rpx;
+			background-color: #ffffff;
+			.drawer-brand-list {
+				width: 160rpx;
+				height: 56rpx;
+				line-height: 56rpx;
+				text-align: center;
+				font-size: 26rpx;
+				background-color: #f7f7f7;
+				color: #999999;
+				border-radius: 30rpx;
+				box-sizing: border-box;
+				padding: 0 15rpx;
+				float: left;
+				margin: 12rpx 24rpx 12rpx 0;
+				text-overflow: ellipsis;
+				overflow: hidden;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
+				&.checked{
+					background-color: #FEF6F3;
+					color: #E15616;
+				}
+				&:nth-child(3n) {
+					margin-right: 0;
+				}
+			}
+			.drawer-brand-more {
+				width: 100%;
+				height: 42rpx;
+				line-height: 42rpx;
+				float: left;
+				font-size: $font-size-24;
+				color: #999999;
+				text-align: center;
+			}
+		}
+		.drawer-main-radio {
+			width: 100%;
+			height: 72rpx;
+			background-color: #ffffff;
+			margin-top: 20rpx;
+			box-sizing: border-box;
+			padding: 0 24rpx;
+			.drawer-radio-name {
+				float: left;
+				line-height: 72rpx;
+				font-size: $font-size-26;
+				color: #333333;
+			}
+			.drawer-radio-input {
+				width: 72rpx;
+				height: 72rpx;
+				float: right;
+				line-height: 72rpx;
+				text-align: right;
+				.iconfont {
+					font-size: $font-size-36;
+					&.icon-weixuanze {
+						color: #b2b2b2;
+					}
+					&.icon-yixuanze {
+						color: #e15616;
+					}
+				}
+			}
+		}
+	}
+	.drawer-input {
+		width: 100%;
+		float: left;
+		box-sizing: border-box;
+		padding: 24rpx 10rpx 0 10rpx;
+		border: 1px solid rgba(0, 0, 0, 0.2);
+		border-radius: 4rpx;
+		position: relative;
+		background-color: #ffffff;
+		&.btn {
+			border: none;
+			display: flex;
+			position: fixed;
+			left: 0;
+			bottom: 0;
+		}
+		.drawer-btn {
+			width: 210rpx;
+			height: 84rpx;
+			border-radius: 42rpx;
+			background: $btn-confirm;
+			line-height: 84rpx;
+			text-align: center;
+			font-size: $font-size-26;
+			color: #ffffff;
+			flex: 1;
+			margin: 0 10rpx;
+			&.comfrim {
+				background: $btn-confirm;
+			}
+			&.clear {
+				background: #ffe6dc;
+				color: #e15616;
+			}
+		}
+	}
+}
 </style>

+ 55 - 41
pages/seller/order/create-order.vue

@@ -1,17 +1,17 @@
 <template>
-	<view class="container order clearfix" :style="{paddingBottom :isIphoneX ? '170rpx' : '134rpx'}">
+	<view class="container order clearfix" :style="{paddingBottom :isIphoneX ? '190rpx' : '134rpx'}">
 		<!-- 地址选择 -->
 		<choice-address ref="choiceAddress" v-if="isAddress" :addressData="addressData"></choice-address>
 		<!-- 商品 -->
 		<seller-goodsList ref='goods' v-if="isRequest" :goodsData="goodsData" @handleGoodList="handChangeInputGoodsList"></seller-goodsList>
 		<!-- 返佣订单 -->
-		<view class="Rebate" @click="RebateChang" v-if="goodsData.length==1 && secondflag && isDepositFlg">
+		<view class="Rebate" @click="RebateChang" v-if="goodsData.length==1 && secondflag">
 			<text class="rebate-title">返佣订单</text>
 			<text class="iconfont" :class="rebatecheck?'icon-yixuanze':'icon-weixuanze'" ></text>
 		</view>
 		<!-- 发票信息 -->
 		<seller-invoice ref="invoice" 
-						v-if="isRequest && isDepositFlg" 
+						v-if="isRequest" 
 						:invoiceDatas="invoiceData" 
 						@handleChoiceaInvoice="handleChoiceaInvoiceData">
 		</seller-invoice>
@@ -25,7 +25,7 @@
 		<sellerExchangeCoupon v-if="isExchangePopup"></sellerExchangeCoupon>
 		<!-- 运费 -->
 		<seller-freight ref="freight" 
-						v-if="isFreight && isDepositFlg" 
+						v-if="isFreight" 
 						:freightDatas="freightData" 
 						@handleChoiceaFreight="handleChoiceaFreightData" 
 						@showFreightAlert="handFreightAlertShow">
@@ -58,9 +58,11 @@
 				</view>
 			</view>
 		</view>
+		<!-- 选择对机构是否可见 -->
+		<sellerClubVisible v-if="isRequest" @handleClubVisible="handleClubVisibleData"></sellerClubVisible>
 		<!-- 售后条例 -->
 		<seller-regulations  ref="regulations"
-							 v-if="isRequest && isDepositFlg && seconDepositFlg" 
+							 v-if="isRequest && seconDepositFlg" 
 							:regulaDatas="clauseList" 
 							@handleData="handleClauseData">
 		</seller-regulations>
@@ -141,6 +143,7 @@
 	import freightAlert from '@/components/cm-module/modelAlert/freightAlert.vue'
 	import sellerCoupon from '@/components/cm-module/creatOrder/sellerCoupon'
 	import sellerExchangeCoupon from '@/components/cm-module/creatOrder/sellerExchangeCoupon'
+	import sellerClubVisible from '@/components/cm-module/creatOrder/sellerClubVisible'
 	import sellerRegulations from '@/components/cm-module/creatOrder/sellerRegulations.vue'
 	
 	export default {
@@ -151,6 +154,7 @@
 			sellerFreight,
 			sellerCoupon,
 			sellerExchangeCoupon,
+			sellerClubVisible,
 			freightAlert,
 			sellerRegulations
 		},
@@ -233,18 +237,17 @@
 				couponList:[],		  	  // 初始化优惠券信息
 				invoiceData:{type:0},	  // 初始化发票信息
 				freightData:{},			  // 邮费数据
+				handleFreightData:{},	  // 监听邮费数据
 				orderInfo:[],			  // 提交的商品信息
 				payInfo:{},				  // 订单信息
 				rechargeGoods:false,
-				isDepositFlg:true,
-				depositIds : [6060,6061,6062,6063,6064,6065,6066,6067,6068,6069],//定金&充值余额商品ID
 				clauseList:[],
 				seconDepositFlg:true,
 				rebatecheck:false,
 				isCouponShow:false,		  // 是否显示可选优惠券
 				secondflag:true,
 				isCouponModel:false,	  // 兑换优惠券成功提示
-				ExchangeCouponData:{}	  // 兑换优惠券信息
+				ExchangeCouponData:{},	  // 兑换优惠券信息
 			}
 		},
 		onLoad(option){//商品数据
@@ -297,15 +300,6 @@
 					}
 					this.orderShouldPayFee = this.allPrice - this.couponAmount
 					this.totalDiscountAmount = this.reducedPrice + this.couponAmount
-					this.goodsData.forEach(item =>{
-						item.cartList.forEach(pros =>{
-							if(this.depositIds.indexOf(pros.productId)>=0){
-								this.isDepositFlg = false
-							}else{
-								this.isDepositFlg = true
-							}
-						})
-					})
 					this.getAddressData()
 				}).catch(error =>{
 					this.$util.msg(error.msg,2000)
@@ -342,9 +336,8 @@
 			getFreightData(){//获取邮费信息
 				this.OrderService.GetOrderPostage(this.postageParam).then(response =>{
 					let data = response.data
-					this.freightData = data
+					this.freightData = this.handleFreightData = data
 					this.isFreight = true
-					console.log('this.freightData',this.freightData)
 					if(data.postageFlag== 1){
 						this.orderShouldPayFee = this.allPrice + data.postage
 						this.attributePallPrice()
@@ -384,11 +377,11 @@
 			},
 			handleChoiceaFreightData(data){//获取运费信息
 				if(data.postageFlag == 1){
-					this.freightData = data
+					this.handleFreightData = data
 					this.orderShouldPayFee = this.allPrice + parseInt(data.postage)
 					this.attributePallPrice()
 				}else{
-					this.freightData = data
+					this.handleFreightData = data
 					this.orderShouldPayFee = this.allPrice
 					this.attributePallPrice()
 				}
@@ -400,32 +393,39 @@
 				console.log('优惠券信息',data)
 				this.couponAmount = data.couponAmount
 				this.totalDiscountAmount = this.reducedPrice + this.couponAmount
-				this.clubCouponId = data.clubCouponId
+				this.confirmParam.clubCouponId = data.clubCouponId
 				this.attributePallPrice()
 			},
+			handleClubVisibleData(data){// 订单对机构是否可见
+				console.log('对机构是否可见',data)
+			},
 			checkedBalabce(){//勾选使用余额
-				if(this.userMoney > 0){
-					this.ischecked = !this.ischecked
-					if(this.ischecked){
-						this.confirmParam.payInfo.balancePayFlag = 1
-						this.attributePallPrice()
-					}else{
-						this.confirmParam.payInfo.balancePayFlag = 0
-						if( this.freightData.postageFlag == 1 ){
-							this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage) - this.couponAmount
+				if(this.rebatecheck){
+					this.$util.msg('返佣订单不能使用余额抵扣',2000)
+				}else{
+					if(this.userMoney > 0){
+						this.ischecked = !this.ischecked
+						if(this.ischecked){
+							this.confirmParam.payInfo.balancePayFlag = 1
+							this.attributePallPrice()
 						}else{
-							this.orderShouldPayFee = this.allPrice - this.couponAmount
+							this.confirmParam.payInfo.balancePayFlag = 0
+							if( this.handleFreightData.postageFlag == 1 ){
+								this.orderShouldPayFee = this.allPrice + parseInt(this.handleFreightData.postage) - this.couponAmount
+							}else{
+								this.orderShouldPayFee = this.allPrice - this.couponAmount
+							}
 						}
+						console.log('最终订单支付金额',this.orderShouldPayFee)
+						console.log('优惠券金额',this.couponAmount)
+					}else{
+						return
 					}
-					console.log('最终订单支付金额',this.orderShouldPayFee)
-					console.log('优惠券金额',this.couponAmount)
-				}else{
-					return
 				}
 			},	
 			attributePallPrice(){//计算价格
-				if( this.freightData.postageFlag == 1){
-					this.attributeHashfreight(this.freightData.postage)
+				if( this.handleFreightData.postageFlag == 1){
+					this.attributeHashfreight(this.handleFreightData.postage)
 				}else{
 					this.attributeNofreight()
 				}
@@ -500,8 +500,8 @@
 					})
 					return {shopId:el.shopId,note:el.note?el.note:'',productInfo:productInfo}
 				})
-				this.confirmParam.payInfo.postage = parseInt(this.freightData.postage).toFixed(2)
-				this.confirmParam.payInfo.postageFlag = parseInt(this.freightData.postageFlag)
+				this.confirmParam.payInfo.postage = parseInt(this.handleFreightData.postage).toFixed(2)
+				this.confirmParam.payInfo.postageFlag = parseInt(this.handleFreightData.postageFlag)
 				this.confirmParam.payInfo.orderShouldPayFee = this.orderShouldPayFee.toFixed(2)
 				this.confirmParam.payInfo = JSON.stringify(this.confirmParam.payInfo)
 				this.confirmParam.orderInfo = JSON.stringify(this.confirmParam.orderInfo)
@@ -534,12 +534,26 @@
 			RebateChang(){//  返佣订单勾选
 				this.rebatecheck = !this.rebatecheck
 				if(this.rebatecheck){
+					this.ischecked = false
 					this.confirmParam.payInfo.rebateFlag=1
+					this.confirmParam.payInfo.balancePayFlag = 0
+					this.couponAmount = 0
+					this.confirmParam.clubCouponId = 0
+					this.orderShouldPayFee = this.allPrice + parseInt(this.freightData.postage) - this.couponAmount
+					this.totalDiscountAmount = this.reducedPrice + this.couponAmount
+					this.$refs.coupon.coupon.couponAmount = 0
+					this.$refs.freight.infoData(this.freightData)
+					this.$refs.freight.freightData = this.handleFreightData = this.freightData
 				}else{
 					this.confirmParam.payInfo.rebateFlag=0
+					this.confirmParam.clubCouponId = this.couponList[0].clubCouponId 
+					this.totalDiscountAmount = this.reducedPrice + this.couponAmount
+					this.$refs.coupon.coupon.couponAmount = this.couponAmount = this.couponList[0].couponAmount
+					this.$refs.freight.infoData(this.handleFreightData)
+					
 				}
-				console.log(this.confirmParam.payInfo.rebateFlag)
 			},
+			
 			handFreightAlertShow(){//显示邮费弹窗
 				this.isfreightTip = true
 			},

+ 6 - 3
pages/seller/order/order-details.vue

@@ -10,6 +10,7 @@
 		<view class="container-details" :style="{ paddingTop: navbarHeight + 'px' }">
 			<view class="status-text">
 				<view class="view-type">{{ information.status | TextFormat }}</view>
+				<view class="status-visible">订单对机构可见</view>
 				<view class="Rebate " v-if="information.rebateFlag == 1">返佣</view>
 				<text class="bage-buss btn" v-if="information.orderSubmitType == 3 || information.orderSubmitType == 4"
 					>协销</text
@@ -594,6 +595,11 @@ page {
 		float: left;
 		color: #ff2a2a;
 	}
+	.status-visible{
+		float: left;
+		color: #999999;
+		margin-left: 20rpx;
+	}
 	.bage-buss {
 		display: inline-block;
 		width: 72rpx;
@@ -603,7 +609,6 @@ page {
 		line-height: 32rpx;
 		text-align: center;
 		color: #ffffff;
-		margin-top: 10rpx;
 		float: right;
 		font-size: $font-size-24;
 	}
@@ -616,7 +621,6 @@ page {
 		line-height: 32rpx;
 		text-align: center;
 		color: #ffffff;
-		margin-top: 10rpx;
 		float: right;
 		font-size: $font-size-24;
 	}
@@ -629,7 +633,6 @@ page {
 		line-height: 32rpx;
 		text-align: center;
 		color: #ffffff;
-		margin-top: 10rpx;
 		float: right;
 		font-size: $font-size-24;
 		margin-left: 20rpx;

+ 3 - 1
pages/user/account/account-bean.vue

@@ -140,7 +140,9 @@
 						11:'退款回收',
 						12:'登录奖励',
                         13:'查看商品资料',
-                        14:'购买超级会员'
+                        14:'购买超级会员',
+                        15:'系统退回',
+                        16:'系统扣除',
 					}
 				Object.keys(stateTextObject).forEach(function(key){
 					if(key == state){

+ 46 - 19
pages/user/collection/collection.vue

@@ -54,10 +54,10 @@
 											<view class="list-price">
 												<text
 													class="price-larger"
-													:class="PromotionsFormat(pros.promotions) ? 'none' : ''"
+													:class="PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1 ? 'none' : ''"
 												>
 													¥{{
-														(PromotionsFormat(pros.promotions)
+														(PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
 															? pros.originalPrice
 															: pros.price) | NumFormat
 													}}
@@ -68,17 +68,28 @@
 											>
 										</view>
 										<view class="list-details-price none">
-											<view class="floor-item-act" v-if="pros.actStatus == 1">
+											<view class="floor-item-act">
 												<view class="coupon-tags" v-if="item.product.couponsLogo">优惠券</view>
-												<template>
-													<view class="floor-tags" v-if="PromotionsFormat(pros.promotions)">
+												<template v-if="pros.actStatus == 1">
+													<view
+														class="floor-tags"
+														v-if="pros.actStatus == 1 && PromotionsFormat(pros.promotions)"
+													>
 														{{ pros.promotions.name }}
-														<text v-if="pros.priceFlag != 1"
+														<text v-if="hasLogin && userIdentity == 2 && 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 == 0 }">SVIP</view>
+														<view class="price" v-if="isShowVipFlag(pros)">{{
+															pros.svipPriceTag
+														}}</view>
+													</view>
+												</template>
 											</view>
 										</view>
 									</template>
@@ -92,10 +103,10 @@
 											<view class="list-price">
 												<text
 													class="price-larger"
-													:class="PromotionsFormat(pros.promotions) ? 'none' : ''"
+													:class="PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1 ? 'none' : ''"
 												>
 													¥{{
-														(PromotionsFormat(pros.promotions)
+														(PromotionsFormat(pros.promotions) || pros.svipProductFlag == 1
 															? pros.originalPrice
 															: pros.price) | NumFormat
 													}}
@@ -106,23 +117,27 @@
 											>
 										</view>
 										<view class="list-details-price none">
-											<view class="floor-item-act" v-if="pros.actStatus == 1">
-												<template>
-													<view class="floor-tags" v-if="PromotionsFormat(pros.promotions)">
+											<view class="floor-item-act">
+												<template v-if="pros.actStatus == 1">
+													<view
+														class="floor-tags"
+														v-if="pros.actStatus == 1 && PromotionsFormat(pros.promotions)"
+													>
 														{{ pros.promotions.name }}
-														<text v-if="pros.priceFlag != 1"
+														<text v-if="hasLogin && userIdentity == 2 && pros.priceFlag != 1"
 															>:¥{{ pros.price | NumFormat }}</text
 														>
 													</view>
 													<view class="floor-tags" v-else>{{ pros.promotions.name }}</view>
 												</template>
-											</view>
-											<view class="floor-item-act" v-if="pros.actStatus == 0">
-												<view
-													class="floor-tags"
-													v-if="pros.actStatus == 0 && pros.ladderPriceFlag == 1"
-													>阶梯价格</view
-												>
+												<template v-if="pros.svipProductFlag == 1">
+													<view class="svip-tags">
+														<view class="tags" :class="{ none: vipFlag == 0 }">SVIP</view>
+														<view class="price" v-if="isShowVipFlag(pros)">{{
+															pros.svipPriceTag
+														}}</view>
+													</view>
+												</template>
 											</view>
 										</view>
 									</template>
@@ -286,6 +301,7 @@ export default {
 			nomoreText: '上拉显示更多',
 			contentModalText: '', //操作文字提示语句
 			modal: false,
+			vipFlag:0,
 			userIdentity:0,
 		}
 	},
@@ -308,6 +324,7 @@ export default {
 		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.GetProductListInfo()
 			this.shoppingHeaderCartNumber()
@@ -589,6 +606,16 @@ export default {
 					break
 			}
 		},
+		isShowVipFlag(pros) {
+			// 超级会员价格显示控制
+			if (this.hasLogin && pros.priceFlag != 1) {
+				if (this.userIdentity == 4 && this.vipFlag == 1) {
+					return true
+				} else if (this.userIdentity == 2) {
+					return true
+				}
+			}
+		},
 		navToDetailPage(id) {
 			this.isModallayer = true
 			this.$api.navigateTo(`/pages/goods/product?id=${id}`)

+ 106 - 2
pages/user/order/create-order.vue

@@ -105,6 +105,18 @@
 				</view>
 			</view>
 		</view>
+		<!-- 提示弹窗 -->
+		<tui-modal
+		   :show="showModal"
+		   @click="handleClick"
+		   @cancel="hideMobel"
+		   :content="contentModalText"
+		   :button="modalButton"
+		   color="#333"
+		   :size="28"
+		   shape="circle"
+		   :maskClosable="false"
+		></tui-modal>
 	</view>
 </template>
 <script>
@@ -196,7 +208,26 @@
 				isCouponShow:false,		  // 是否显示可选优惠券
 				isCheckedBeans:false,     // 是否抵扣采美豆
 				isCouponModel:false,	  // 兑换优惠券成功提示
-				ExchangeCouponData:{}	  // 兑换优惠券信息
+				ExchangeCouponData:{},	  // 兑换优惠券信息
+				contentModalText: '采购金额过小,将扣除500采美豆,建议您前往采美旗下“呵呵商城”小程序购买小额商品。',     //操作文字提示语句
+				modalButton: [
+					{
+						text: '前往呵呵商城',
+						type: 'gray',
+						plain: true //是否空心
+					},
+					{
+						text: '继续提交',
+						customStyle: {
+							color: '#fff',
+							bgColor: 'linear-gradient(90deg, #F28F31 0%, #E15616 100%)'
+						},
+						plain: false
+					}
+				],
+				showModal: false,
+				showModalType:1,
+				showModalstauts:1
 			}
 		},
 		onLoad(option){//商品数据
@@ -501,7 +532,48 @@
 				console.log('最终订单支付金额',this.orderShouldPayFee)
 				console.log('优惠券金额',this.couponAmount)
 			},
-			orderSubmitMit(){// 提交订单
+			orderSubmitMit(){// 提交订单按钮点击事件
+				if(this.showModalstauts == 0){
+					this.showModal = true
+					this.contentModalText = '采购金额过小,将扣除500采美豆,建议您前往采美旗下“呵呵商城”小程序购买小额商品。'    //操作文字提示语句
+					this.modalButton= [
+						{
+							text: '前往呵呵商城',
+							type: 'gray',
+							plain: true //是否空心
+						},
+						{
+							text: '继续提交',
+							customStyle: {
+								color: '#fff',
+								bgColor: 'linear-gradient(90deg, #F28F31 0%, #E15616 100%)'
+							},
+							plain: false
+						}
+					]
+				}else if(this.showModalstauts == 1){
+					this.showModal = true
+					this.contentModalText = '您已有2个采购金额过小的订单,本次不能再进行采购。建议您前往采美旗下“呵呵商城”小程序购买小额商品。'   //操作文字提示语句
+					this.modalButton=[
+						{
+							text: '了解',
+							type: 'gray',
+							plain: true //是否空心
+						},
+						{
+							text: '前往呵呵商城',
+							customStyle: {
+								color: '#fff',
+								bgColor: 'linear-gradient(90deg, #F28F31 0%, #E15616 100%)'
+							},
+							plain: false
+						}
+					]
+				}else{
+					this.handleClickOrderSubmitMit()
+				}
+			},
+			handleClickOrderSubmitMit(){// 提交订单
 				if(this.isSubLoading){ return }
 				if(this.confirmParam.addressId == ''){
 					this.$util.msg('请先添加收货地址~',2000)
@@ -571,6 +643,38 @@
 					this.CartCreateOrderInfo()
 				}
 			},
+			handleClick(e){// 采购量过小提示弹窗
+				if (e.index == 1) {
+					if(this.showModalstauts == 0){
+						this.showModal = false
+						this.handleClickOrderSubmitMit()
+					}else{
+						this.showModal = false
+						this.handleClickHeHeMiniApplet()
+					}
+				}else{
+					if(this.showModalstauts == 0){
+						this.showModal = false
+						this.handleClickHeHeMiniApplet()
+					}else{
+						this.showModal = false
+					}
+				}
+			},
+			handleClickHeHeMiniApplet(){ // 跳转呵呵商城小程序
+				uni.navigateToMiniProgram({
+					appId: 'wx2c3b0a7f343235b1',
+					path: '/pages/tabBar/index/index',
+					extraData: {
+						'data1': 'test'
+					},
+					envVersion: 'develop',
+					success(res) {
+						// 打开成功
+						console.log(res)
+					}
+				})
+			},
 			hideFreight(){//关闭邮费弹窗
 				this.isfreightTip = false
 			},