浏览代码

commit -m 超级会员

zhengjinyi 3 年之前
父节点
当前提交
40d4ce65e0

+ 0 - 456
components/cm-module/listTemplate/classifyProductList.vue

@@ -1,456 +0,0 @@
-<!-- 金刚区商品模块 -->
-<template>
-	<view class="container commodity-list-wrapper" :style="{'overflow':(showSkeleton? 'hidden' : 'auto'),'height': (showSkeleton? windowHeight + 'px' : 'auto')}">
-		<list-skeleton v-if="showSkeleton" :listType='0'></list-skeleton>
-		<scroll-view :style="{'height':scrollHeight+'px'}" @scrolltolower="toLower" scroll-y v-if="listData.length > 0">
-			<view v-for="(item,index) in listData" :key="index" :id="item.id" class="all-type-list-content commodity-list" @click.stop="navToDetailPage(item.productID)">
-				<image mode='widthFix' :src="item.mainImage"  class="list-img" alt="list-img"></image>
-				<view class="list-details-info">
-					<text class="list-details-title">{{item.name}}</text>
-					<text class="list-details-specs">规格:{{item.unit}}</text>
-					<view class="list-details-specs" v-if="item.productCode!=''&&item.productCode!=null">商品编码:{{item.productCode}}</view>
-					<view class="list-details-price">
-						<template v-if="userIdentity == 3">
-							<view class="floor-item-act" v-if="item.actStatus==1">>
-								<template>
-									<view class="floor-tags" v-if="PromotionsFormat(item.promotions)">
-										{{item.promotions.name}}
-										<text v-if="item.price1TextFlag != '1' && item.supplierId === shopId">:¥{{ item.price | NumFormat }}</text>
-									</view>
-									<view class="floor-tags" v-else>{{item.promotions.name}}</view>	
-								</template>
-							</view>
-							<view class="floor-item-act" v-if="item.actStatus ==0">
-								<view class="floor-tags" v-if="item.actStatus ==0  &&  item.ladderPriceFlag==1">阶梯价格</view>	
-							</view>
-						</template>
-						<template v-else>
-							<view class="floor-item-act" v-if="item.actStatus==1">
-								<template>
-									<view class="floor-tags" v-if="PromotionsFormat(item.promotions)">
-										{{item.promotions.name}}
-										<text v-if="hasLogin && userIdentity == 2 && item.price1TextFlag != '1'">:¥{{ item.price | NumFormat }}</text>
-									</view>
-									<view class="floor-tags" v-else>{{item.promotions.name}}</view>	
-								</template>
-							</view>
-							<view class="floor-item-act" v-if="item.actStatus ==0">
-								<view class="floor-tags" v-if="item.actStatus ==0  &&  item.ladderPriceFlag==1">阶梯价格</view>	
-							</view>
-						</template>
-						<view v-if="hasLogin" class="list-price">
-							<view v-if="userIdentity == 1">
-								<text class="price-larger" :class="PromotionsFormat(item.promotions) ? 'none' : ''">
-								  ¥{{ (PromotionsFormat(item.promotions) ? item.price1 : item.retailPrice) | NumFormat }}
-								</text>
-							</view>	
-							<view v-if="userIdentity == 4">
-								<view class="price-larger" v-if="item.price1TextFlag == '1'">
-									<text class="txt">¥未公开价格</text>
-								</view>
-								<view v-else>
-									<view class="price-larger" v-if="item.price1TextFlag == '2'">
-										<text class="txt">¥价格仅会员可见</text>
-									</view>
-									<template v-else>
-										<text class="price-larger" :class="PromotionsFormat(item.promotions) ? 'none' : ''">
-										  ¥{{ (PromotionsFormat(item.promotions) ? item.price1 : item.retailPrice) | NumFormat }}
-										</text>
-									</template>
-								</view>
-							</view>
-							<view v-if="userIdentity == 2">
-								<view class="price-larger" v-if="item.price1TextFlag == '1'">
-									<text class="txt">¥未公开价格</text>
-								</view>
-								<template v-else>
-									<text class="price-larger" :class="PromotionsFormat(item.promotions) ? 'none' : ''">
-									  ¥{{ (PromotionsFormat(item.promotions) ? item.price1 : item.retailPrice) | NumFormat }}
-									</text>
-								</template>
-							</view>
-						</view>	
-						<view  v-else class="list-login-now">
-							<text class="p-no">¥</text>
-							<uni-stars :stars="parseInt(item.price1Grade)" :font-size='36' :width-info="180"></uni-stars>
-						</view>
-					</view>
-				</view>
-			</view>
-			<view v-if="showLoading && listData.length > 4">
-				<view class="loading-wrapper loading-wrapper-now" v-if="loadingNow">{{loadingText}}<text v-if="loadingText === '已至底部'">‧ ‧ ‧</text></view>
-				<view class="loading-wrapper loading-wrapper-btm" v-else>———<text class="btm-text">已至底部</text>———</view>
-			</view>
-		</scroll-view>
-		<view class="empty-container" v-if="showEmpty">
-			<image class="empty-container-image" src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AY2ZjAABpmnBICH4247.png"></image>
-			<text class="error-text">{{emptyText}}</text>
-		</view>
-		<!-- 透明模态层 -->
-		<modal-layer v-if='isModallayer'></modal-layer>
-	</view>
-</template>
-
-<script>
-	import listSkeleton from '@/components/cm-module/listTemplate/listSkeleton'
-	import modalLayer from "@/components/modal-layer"
-	import uniStars from '@/components/uni-stars/uni-stars.vue'
-	import { mapState,mapMutations } from 'vuex';
-	export default{
-		name:'CommodityList',
-		components:{
-			listSkeleton,
-			modalLayer,
-			uniStars
-		},
-		props: {
-			emptyText: {
-				type: String
-			},
-			serverUrl: {
-				type: String
-			},
-			classifyID: {
-				type:Number
-			}
-		},
-		data(){
-			return{
-				clubStatus:'',
-				isModallayer:false,
-				windowHeight: '',
-				showSkeleton: true,
-				showEmpty: false,
-				userID: 0,
-				userIdentity:'',
-				scrollHeight: '',
-				listData: [],
-				showLoading: false,
-				loadingNow: true,
-				loadingText: '上拉加载更多',
-				pageSize: 20,
-				pageNum: 1,
-				totalPage: 1,
-				hasNextPage:false,
-				pullFlag: true,
-				cartNum: 0,
-			}
-		},
-		created() {		
-			// console.log(this.typeId)
-			this.setScrollHeight();		
-			this.$api.getComStorage('userInfo').then((resolve) =>{
-				this.clubStatus = resolve.clubStatus
-				this.userID = resolve.userId ? resolve.userId :0;
-				this.userIdentity = resolve.userIdentity
-				this.getListFromServer();
-			}).catch(error =>{
-				this.getListFromServer();
-			})
-		},
-		filters: {
-			NumFormat:function(text) {//处理金额
-				return Number(text).toFixed(2);
-			},
-		},		
-		computed: {
-			...mapState(['hasLogin','userInfo'])
-		},
-		methods:{
-			toLower() {
-				if(this.hasNextPage && this.pullFlag) {
-					this.getListFromServer(true);
-				}
-			},
-			setScrollHeight() {
-				const {windowHeight, pixelRatio} = wx.getSystemInfoSync();
-				this.windowHeight = windowHeight - 1;
-				this.scrollHeight = windowHeight - 1;
-			},
-			getListFromServer(loadMore) {
-				this.getQueryGoodslist(loadMore)
-			},
-			getQueryGoodslist(loadMore){
-				this.showLoading = true;
-				this.loadingNow = true;
-				this.loadingText = '加载中';
-				if(loadMore) { this.pageNum += 1; }
-				let params ={
-						classifyId:this.classifyID,
-						userId:this.userID,
-						pageNum:this.pageNum,
-						pageSize:this.pageSize,
-					}
-				this.CommonService.GetHomeClassify(params).then(response =>{	
-					const resList = response.data.results;
-					if(resList && resList.length > 0){
-						this.showEmpty = false
-						this.hasNextPage = response.data.hasNextPage;
-						if(loadMore) {
-							this.listData = [...this.listData,...resList];
-							this.getProductPrice()
-							this.showSkeleton = false
-						} else {
-							this.listData = [...resList];
-							this.getProductPrice()
-							this.showSkeleton = false
-						}
-						// 防上拉暴滑
-						this.pullFlag = false;
-						setTimeout(()=>{ this.pullFlag = true; },500)
-						// 底部提示文案
-						if(this.hasNextPage) {
-							this.loadingText = '上拉加载更多';
-						} else {
-							this.showLoading = true;
-							this.loadingNow = false;
-							this.loadingText = '已至底部';
-						}
-					} else {
-						if(!loadMore) { this.showEmpty = true; }
-					}
-					
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000);
-				})
-			},
-			getProductPrice(){//获取价格
-				let productIdArr = [];
-				this.listData.map(item=>{// 0公开价格 1不公开价格 2仅对资质机构公开
-					productIdArr.push(item.productID)
-				})
-				this.productIds = productIdArr.join(",");
-				this.ProductService.querySearchProductPrice(
-					{
-						userId: this.userID,
-						productIds:this.productIds,
-						source: 2
-					}
-				).then(response =>{
-					if (response.data) {
-						this.listData = this.ReturnNewProducts(this.listData,response.data);
-					}
-					this.priceLoading = false;
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
-				})
-			},
-			ReturnNewProducts(Array,list){//处理对应商品ID的商品价格
-				let NewArray = []
-				Array.map(item=>{
-					for (let i = 0; i < list.length; i++) {
-						if( item.productID == list[i].productId ){
-							NewArray.push(Object.assign(item,list[i])) 
-						}
-					}
-				});
-				return NewArray
-			},
-			navToDetailPage(id) {
-				this.isModallayer = true;
-				this.$api.navigateTo(`/pages/goods/product?id=${id}`);
-				this.isModallayer = false;
-			},
-			PromotionsFormat(promo){//促销活动类型数据处理
-				if(promo!=null){
-					if(promo.type == 1 && promo.mode == 1){
-						return true
-					}else{
-						return false
-					}
-				}
-				return false
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.commodity-list-wrapper {
-		scroll-view {
-			height: 100%;
-			border-top: 2rpx solid rgba(0,0,0,0.07);
-		}
-		.empty-container-image {
-			margin-top: -300rpx;
-		}
-		.toIndexPage {
-			bottom: 390rpx;
-		}
-		.show-more-btn {
-			width: 276rpx;
-			height: 52rpx;
-			line-height: 52rpx;
-			border: 2rpx solid #D8D8D8;
-			background: #F7F7F7;
-			font-size: 26rpx;
-			margin: 26rpx 0;
-			position: absolute;
-			left: 50%;
-			margin-left: -138rpx;
-		}
-	}
-	.all-type-list-content {
-		height: 216rpx;
-		padding: 24rpx;
-		background: #fff;
-		margin-bottom: 2rpx;
-		display: flex;
-		flex-direction: row;
-		box-sizing: content-box;
-		.list-img {
-			width: 210rpx;
-			height: 218rpx !important;
-			margin-right: 26rpx;
-			border-radius: 10rpx;
-			border: 2rpx solid #f3f3f3;
-		}
-	}
-	.list-details-info {
-		width: 466rpx;
-		display: flex;
-		flex-direction: column;
-		font-size: 26rpx;
-		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;
-		}
-		.list-details-specs {
-			margin-top: 8rpx;
-			color: #666666;
-		}
-		.list-details-miniQuantity {
-			margin-top: 7rpx;
-		}
-	}
-	.list-details-price {
-		width: 100%;
-		height: 54rpx;
-		line-height: 54rpx;
-		position: absolute;
-		bottom: -10rpx;
-		right: 0;
-		.floor-item-act{
-			height: 54rpx;
-			text-align: center;
-			box-sizing: border-box;
-			float: right;
-			padding: 11rpx 0;
-			.coupon-tags{
-				height: 32rpx;
-				box-sizing: border-box;
-				border-radius: 8rpx;
-				background-color: #fff1eb;
-				line-height: 28rpx;
-				color: #f94b4b;
-				text-align: center;
-				display: inline-block;
-				padding:0 10rpx;
-				font-size: $font-size-20;
-				border: 1px solid #f94b4b;
-				float: left;
-				margin-right: 12rpx;
-			}
-			.floor-tags{
-				height: 32rpx;
-				box-sizing: border-box;
-				border-radius: 8rpx;
-				background-color: #FFFFFF;
-				line-height: 28rpx;
-				color: $color-system;
-				text-align: center;
-				display: inline-block;
-				padding:0 16rpx;
-				font-size: $font-size-20;
-				border: 1px solid #E15616;
-				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 {
-			color: #F8C499;
-			float: left;
-			line-height: 54rpx;
-			.p-no{
-				float: left;
-				font-size: $font-size-24;
-				color: $text-color;
-			}
-		}
-		.login-now {
-			padding: 10rpx 10rpx 10rpx 0;
-		}
-		.list-price {
-			color: #FF2A2A;
-			height: 44rpx;
-			float: left;
-			.price-larger {
-				width: 100%;
-				height: 44rpx;
-				font-size: 32rpx;
-				&.none{
-					text-decoration: line-through;
-					color: #999999;
-				}
-				&.small{
-					font-size: $font-size-24;
-				}
-				.txt{
-					font-size: $font-size-24;
-					display: inline-block;
-					line-height: 44rpx;
-					text-align: left;
-					float: left;
-				}
-			}
-		}
-		.add-cart-btn {
-			width: 156rpx;
-			height: 64rpx;
-			line-height: 64rpx;
-			border-radius: 32rpx;
-			color: #fff;
-			font-size: 26rpx;
-			margin-right: 0;
-			background:linear-gradient(45deg,rgba(255,41,41,1) 0%,rgba(255,109,27,1) 100%);
-		}
-	}
-	.cart-icon {
-		width: 92rpx;
-		height: 92rpx;
-		border-radius: 50%;
-		background: rgba(255, 147, 0, 0.5);
-		position: fixed;
-		right: 24rpx;
-		bottom: 30%;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		cursor: pointer;
-		image {
-			width: 58rpx;
-			height: 58rpx;
-		}
-		text {
-			font-size: 28rpx;
-			position: absolute;
-			top: -10rpx;
-			right: 0;
-		}
-	}
-</style>

+ 936 - 832
components/cm-module/listTemplate/immediatelyList.vue

@@ -1,44 +1,65 @@
 <template>
-	<view class="container commodity-list-wrapper" :style="{'overflow':(showSkeleton? 'hidden' : 'auto'),'height': (showSkeleton? windowHeight + 'px' : 'auto')}">
+	<view
+		class="container commodity-list-wrapper"
+		:style="{ overflow: showSkeleton ? 'hidden' : 'auto', height: showSkeleton ? windowHeight + 'px' : 'auto' }"
+	>
 		<view class="good-search clearfix" v-if="searchStatus">
 			<view class="nav-tab-bar u-f-ajc">
-				<block v-for="(tab,index) in tabBars" :key='tab.id' :class="{ current: tabIndex === index }">
-					<view class="tabstyle u-f-ajc" :class="{'addstyle':tabIndex==index}" @tap="changeTab(index)">
-						{{tab.name}}<i v-if='(tabIndex==index)' class='nav-tab-line iconfont icon-gou'></i>
+				<block v-for="(tab, index) in tabBars" :key="tab.id" :class="{ current: tabIndex === index }">
+					<view class="tabstyle u-f-ajc" :class="{ addstyle: tabIndex == index }" @tap="changeTab(index)">
+						{{ tab.name }}<i v-if="tabIndex == index" class="nav-tab-line iconfont icon-gou"></i>
 					</view>
 				</block>
 			</view>
 			<view class="search-from name">
 				<text class="iconfont icon-iconfonticonfontsousuo1"></text>
-					<input class="input"  
-						   type="text" 
-						   :focus="isFocus"
-						   confirm-type="search" 
-						   v-model="searchInputVal" 
-						   placeholder="请输入商品关键词" 
-						   @input="onShowClose" 
-						   @confirm="searchOpertor(tabIndex)"
-						   maxlength="20"/>
+				<input
+					class="input"
+					type="text"
+					:focus="isFocus"
+					confirm-type="search"
+					v-model="searchInputVal"
+					placeholder="请输入商品关键词"
+					@input="onShowClose"
+					@confirm="searchOpertor(tabIndex)"
+					maxlength="20"
+				/>
 				<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText(tabIndex)"></text>
 			</view>
 		</view>
 		<list-skeleton v-if="showSkeleton"></list-skeleton>
-		<view class="empty-container" v-if="isShowEmpty" >
-			<image class="empty-container-image" src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AY2ZjAABpmnBICH4247.png"></image>
-			<text class="error-text">{{isShowEmptyText}}</text>
+		<view class="empty-container" v-if="isShowEmpty">
+			<image
+				class="empty-container-image"
+				src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AY2ZjAABpmnBICH4247.png"
+			></image>
+			<text class="error-text">{{ isShowEmptyText }}</text>
 		</view>
 		<!-- 单一商品 -->
-		<view class="product-container" v-else >
-			<view :class="tabIndex" v-if="tabIndex === 0"  :style="{paddingTop:searchStatus?'128rpx':''}">
-				<scroll-view :style="{'height':scrollHeight+'px'}" @scrolltolower="scrolltolower(tabIndex)" scroll-y v-if="listData.length > 0">
-					<view v-for="(pros,index) in listData" :key="index" :id="pros.productId" class="all-type-list-content commodity-list" @click.stop="navToDetailPage(pros.productId)"  >
-					    <image mode='widthFix' :src="pros.image"  class="list-img" alt="list-img"></image>
+		<view class="product-container" v-else>
+			<view :class="tabIndex" v-if="tabIndex === 0" :style="{ paddingTop: searchStatus ? '128rpx' : '' }">
+				<scroll-view
+					:style="{ height: scrollHeight + 'px' }"
+					@scrolltolower="scrolltolower(tabIndex)"
+					scroll-y
+					v-if="listData.length > 0"
+				>
+					<view
+						v-for="(pros, index) in listData"
+						:key="index"
+						:id="pros.productId"
+						class="all-type-list-content commodity-list"
+						@click.stop="navToDetailPage(pros.productId)"
+					>
+						<image mode="widthFix" :src="pros.image" class="list-img" alt="list-img"></image>
 						<view class="list-details-info">
-							<text class="list-details-title">{{isInterceptHtmlFn(pros.name)}}</text>
-							<text class="list-details-specs">规格:{{pros.unit ? pros.unit : ''}}</text>
-							<text class="list-details-miniQuantity list-details-specs">起订量:{{pros.minBuyNumber}}</text>
-							<view class="list-details-specs" v-if="pros.code!=''&& pros.code!=null">
-								<view>商品编码:{{pros.code}}</view>
+							<text class="list-details-title">{{ isInterceptHtmlFn(pros.name) }}</text>
+							<text class="list-details-specs">规格:{{ pros.unit ? pros.unit : '' }}</text>
+							<text class="list-details-miniQuantity list-details-specs"
+								>起订量:{{ pros.minBuyNumber }}</text
+							>
+							<view class="list-details-specs" v-if="pros.code != '' && pros.code != null">
+								<view>商品编码:{{ pros.code }}</view>
 							</view>
 							<view class="list-details-price">
 								<template v-if="priceLoading">
@@ -47,968 +68,1051 @@
 								<template v-else>
 									<view class="list-shop">
 										<view class="list-price">
-											<text class="price-larger" :class="PromotionsFormat(pros.promotions) ? 'none' : ''">
-												¥{{ (PromotionsFormat(pros.promotions) ? pros.originalPrice : pros.price) | NumFormat }}
+											<text
+												class="price-larger"
+												:class="PromotionsFormat(pros.promotions) ? 'none' : ''"
+											>
+												¥{{
+													(PromotionsFormat(pros.promotions)
+														? pros.originalPrice
+														: pros.price) | NumFormat
+												}}
 											</text>
 										</view>
 									</view>
 									<button class="add-cart-btn" @click.stop="operationHanld(pros)">数量</button>
 								</template>
 							</view>
-							<view class="list-details-price"> 
-								<view class="floor-item-act" v-if="pros.actStatus==1">
+							<view class="list-details-price">
+								<view class="floor-item-act" v-if="pros.actStatus == 1">
 									<template>
 										<view class="floor-tags" v-if="PromotionsFormat(pros.promotions)">
-											{{pros.promotions.name}}<text>:¥{{ pros.price | NumFormat }}</text>
+											{{ pros.promotions.name }}<text>:¥{{ pros.price | NumFormat }}</text>
 										</view>
-										<view class="floor-tags" v-else>{{pros.promotions.name}}</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>	
+									<view class="floor-tags" v-if="pros.actStatus == 0 && pros.ladderPriceFlag == 1"
+										>阶梯价格</view
+									>
 								</view>
-							</view>	
+							</view>
 						</view>
 					</view>
 					<view v-if="showLoading && listData.length > 4 && !showRegularBtn">
-						<view class="loading-wrapper loading-wrapper-now" v-if="loadingNow">{{loadingText}}<text v-if="loadingText === '已至底部'">‧ ‧ ‧</text></view>
-						<view class="loading-wrapper loading-wrapper-btm" v-else>———<text class="btm-text">已至底部</text>———</view>
+						<view class="loading-wrapper loading-wrapper-now" v-if="loadingNow"
+							>{{ loadingText }}<text v-if="loadingText === '已至底部'">‧ ‧ ‧</text></view
+						>
+						<view class="loading-wrapper loading-wrapper-btm" v-else
+							>———<text class="btm-text">已至底部</text>———</view
+						>
 					</view>
 				</scroll-view>
 			</view>
 			<!-- 组合商品 -->
-			<view :class="tabIndex"  v-if="tabIndex === 1">
-				<scroll-view :style="{'height':scrollHeight+'px',paddingTop:searchStatus?'112rpx':''}" @scrolltolower="scrolltolower(tabIndex)" scroll-y>
-					<view class="all-zuhe-list" v-for="(item,index) in combinationProduct" :key="index" :id="item.id">
-						<view class="zuhe_title" :class="index%2==0 ? 'active' : ''">{{item.name}}</view>
-						<view v-for="(pros,proIndex) in item.combinationProductList" :class="index%2==0 ? 'stylecontent' : ''" :key="proIndex" :id="pros.productId" class="zuhe-list-content commodity-list" >
-							<view class="list-details-info" >
-								<text class="list-details-title zuhe_list_text">商品编码:{{pros.code}}</text>
-								<text class="list-details-specs zuhe_list_text" @click.stop="navToDetailPage(pros.productId)">{{pros.name}}</text>
+			<view :class="tabIndex" v-if="tabIndex === 1">
+				<scroll-view
+					:style="{ height: scrollHeight + 'px', paddingTop: searchStatus ? '112rpx' : '' }"
+					@scrolltolower="scrolltolower(tabIndex)"
+					scroll-y
+				>
+					<view class="all-zuhe-list" v-for="(item, index) in combinationProduct" :key="index" :id="item.id">
+						<view class="zuhe_title" :class="index % 2 == 0 ? 'active' : ''">{{ item.name }}</view>
+						<view
+							v-for="(pros, proIndex) in item.combinationProductList"
+							:class="index % 2 == 0 ? 'stylecontent' : ''"
+							:key="proIndex"
+							:id="pros.productId"
+							class="zuhe-list-content commodity-list"
+						>
+							<view class="list-details-info">
+								<text class="list-details-title zuhe_list_text">商品编码:{{ pros.code }}</text>
+								<text
+									class="list-details-specs zuhe_list_text"
+									@click.stop="navToDetailPage(pros.productId)"
+									>{{ pros.name }}</text
+								>
 								<view class="list-details-price zuhe_list_price">
 									<view class="list-shop com">
-										<view class="list-price zuhe_list_price" >
-											<view class="zuhe_price-larger zuhe_list_text" >
+										<view class="list-price zuhe_list_price">
+											<view class="zuhe_price-larger zuhe_list_text">
 												<view class="list-price-none" v-if="pros.repurchaseFlag == 1">
 													<text class="price-none">价格:¥{{ pros.originalPrice }}</text>
-													<text class="iconfont icon-wenhao" @click.stop="repurchModel"></text>
+													<text
+														class="iconfont icon-wenhao"
+														@click.stop="repurchModel"
+													></text>
 												</view>
 												<view class="price-larger">价格:¥{{ pros.price | NumFormat }}</view>
 											</view>
-											<view class="zuhe_price-larger zuhe_list_text" >
-												<view class="floor-item-act" v-if="pros.actStatus==1">
+											<view class="zuhe_price-larger zuhe_list_text">
+												<view class="floor-item-act" v-if="pros.actStatus == 1">
 													<template>
-														<view class="floor-tags" v-if="PromotionsFormat(pros.promotions)">
-															{{pros.promotions.name}}<text>:¥{{ pros.price | NumFormat }}</text>
+														<view
+															class="floor-tags"
+															v-if="PromotionsFormat(pros.promotions)"
+														>
+															{{ pros.promotions.name
+															}}<text>:¥{{ pros.price | NumFormat }}</text>
 														</view>
-														<view class="floor-tags" v-else>{{pros.promotions.name}}</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>	
+												<view class="floor-item-act" v-if="pros.actStatus == 0">
+													<view
+														class="floor-tags"
+														v-if="pros.actStatus == 0 && pros.ladderPriceFlag == 1"
+														>阶梯价格</view
+													>
 												</view>
 												<view class="count">
 													<view class="number-box">
-														<view  class="iconfont icon-jianhao"  @click.stop="changeCountSub(item,pros)"></view>
-														<input class="btn-input" type="number" maxlength='6' v-model="pros.initProductNum" @blur="changeNnmber($event,item,pros)">
-														<view  class="iconfont icon-jiahao"   @click.stop="changeCountAdd(item,pros)"></view>
+														<view
+															class="iconfont icon-jianhao"
+															@click.stop="changeCountSub(item, pros)"
+														></view>
+														<input
+															class="btn-input"
+															type="number"
+															maxlength="6"
+															v-model="pros.initProductNum"
+															@blur="changeNnmber($event, item, pros)"
+														/>
+														<view
+															class="iconfont icon-jiahao"
+															@click.stop="changeCountAdd(item, pros)"
+														></view>
 													</view>
-												</view>	
+												</view>
 											</view>
-											<view class="list-price-all" :style="{'overflow':'hidden'}">
-												<view class="price-two zuhe_list_text" >总价:<text class="zuhe_list_zj">¥ {{ pros.totalPrice | NumFormat }}</text></view>
+											<view class="list-price-all" :style="{ overflow: 'hidden' }">
+												<view class="price-two zuhe_list_text"
+													>总价:<text class="zuhe_list_zj"
+														>¥ {{ pros.totalPrice | NumFormat }}</text
+													></view
+												>
 											</view>
 										</view>
 									</view>
 								</view>
 							</view>
 						</view>
-						<view class="foot_conten" >
+						<view class="foot_conten">
 							<view class="zuhe_foot-box">
 								<view class="">
-									<text>种类:{{item.productKind}}</text>
-									<text >总数:{{item.productTotalNum}}</text>
+									<text>种类:{{ item.productKind }}</text>
+									<text>总数:{{ item.productTotalNum }}</text>
 								</view>
-								<text>总额:<text class="foot_text">{{ item.productTotalAmount | NumFormat }}</text></text>
+								<text
+									>总额:<text class="foot_text">{{
+										item.productTotalAmount | NumFormat
+									}}</text></text
+								>
 							</view>
-							<button type="default" class="buycart" @click.stop="operationHanld(item)">加入购物车</button>
+							<button type="default" class="buycart" @click.stop="operationHanld(item)">
+								加入购物车
+							</button>
 						</view>
 					</view>
 					<view v-if="showLoading && combinationProduct.length > 4 && !showRegularBtn">
-						<view class="loading-wrapper loading-wrapper-now" v-if="loadingNow">{{loadingText}}<text v-if="loadingText === '已至底部'">‧ ‧ ‧</text></view>
-						<view class="loading-wrapper loading-wrapper-btm" v-else>———<text class="btm-text">已至底部</text>———</view>
+						<view class="loading-wrapper loading-wrapper-now" v-if="loadingNow"
+							>{{ loadingText }}<text v-if="loadingText === '已至底部'">‧ ‧ ‧</text></view
+						>
+						<view class="loading-wrapper loading-wrapper-btm" v-else
+							>———<text class="btm-text">已至底部</text>———</view
+						>
 					</view>
 				</scroll-view>
 			</view>
 		</view>
 		<!-- 可拖动悬浮按钮 -->
-		<cm-drag :cartNum="cartQuantity" 
-				 :isDock="true"
-				 :existTabBar="true" 
-				 @btnClick="btnClick" 
-				 @btnTouchstart="btnTouchstart" 
-				 @btnTouchend="btnTouchend">
-		</cm-drag>		
+		<cm-drag
+			:cartNum="cartQuantity"
+			:isDock="true"
+			:existTabBar="true"
+			@btnClick="btnClick"
+			@btnTouchstart="btnTouchstart"
+			@btnTouchend="btnTouchend"
+		>
+		</cm-drag>
 		<!-- 透明模态层 -->
-		<modal-layer v-if='isModallayer'></modal-layer>
+		<modal-layer v-if="isModallayer"></modal-layer>
 	</view>
 </template>
 
 <script>
-	import listSkeleton from '@/components/cm-module/listTemplate/listSkeleton'
-	import modalLayer from "@/components/modal-layer"
-	import uniStars from '@/components/uni-stars/uni-stars.vue'
-	import cmDrag from '@/components/cm-custom/cm-drag.vue'
-	import { mapState,mapMutations } from 'vuex';
-	export default{
-		name:'productList',
-		components:{
-			listSkeleton,
-			modalLayer,
-			uniStars,
-			cmDrag
-		},
-		props: {
-			searchStatus:{
-				type:Boolean,
-				default:false
-			}
-		},
-		data(){
-			return{
-				isShowClose:false,
-				searchInputVal:'',
-				isModallayer:false,
-				windowHeight: '',
-				showSkeleton: false,
-				priceLoading:true,
-				isShowEmpty: false,
-				isShowEmptyText: '搜索相关商品',
-				clubUserId: '',
-				identity:'',
-				isFocus:false,
-				scrollHeight: '',
-				listData: [],
-				combinationProduct:[],
-				zuheProductList:[],//组合商品列表
-				showLoading: false,
-				loadingNow: true,
-				loadingText: '上拉加载更多',
-				pageSize: 20,
-				zuhepageSize:5,
-				pageNum: 1,
-				totalPage:1,
-				hasNextPage: false,
-				pullFlag: true,
-				fromRegularPurchasePage: false,
-				cartQuantity: 0,
-				showRegularBtn: false,
-				isPrecedence:false,
-				ladderPriceList:[],//是否 阶梯,
-				tabIndex:0,
-				goodsList:[],
-				tabBars:[
-					{name:'单一',id:'danyi'},
-					{name:'组合',id:'zuhe'}
-				],
-				 isShow: false,
-			}
-		},
-		created() {
-			this.setScrollHeight();		
-			this.$api.getComStorage('userInfo').then((resolve) =>{
-				if(resolve.userIdentity == 1){
+import listSkeleton from '@/components/cm-module/listTemplate/listSkeleton'
+import modalLayer from '@/components/modal-layer'
+import uniStars from '@/components/uni-stars/uni-stars.vue'
+import cmDrag from '@/components/cm-custom/cm-drag.vue'
+import { mapState, mapMutations } from 'vuex'
+export default {
+	name: 'productList',
+	components: {
+		listSkeleton,
+		modalLayer,
+		uniStars,
+		cmDrag
+	},
+	props: {
+		searchStatus: {
+			type: Boolean,
+			default: false
+		}
+	},
+	data() {
+		return {
+			isShowClose: false,
+			searchInputVal: '',
+			isModallayer: false,
+			windowHeight: '',
+			showSkeleton: false,
+			priceLoading: true,
+			isShowEmpty: false,
+			isShowEmptyText: '搜索相关商品',
+			clubUserId: '',
+			identity: '',
+			isFocus: false,
+			scrollHeight: '',
+			listData: [],
+			combinationProduct: [],
+			zuheProductList: [], //组合商品列表
+			showLoading: false,
+			loadingNow: true,
+			loadingText: '上拉加载更多',
+			pageSize: 20,
+			zuhepageSize: 5,
+			pageNum: 1,
+			totalPage: 1,
+			hasNextPage: false,
+			pullFlag: true,
+			fromRegularPurchasePage: false,
+			cartQuantity: 0,
+			showRegularBtn: false,
+			isPrecedence: false,
+			ladderPriceList: [], //是否 阶梯,
+			tabIndex: 0,
+			goodsList: [],
+			tabBars: [{ name: '单一', id: 'danyi' }, { name: '组合', id: 'zuhe' }],
+			isShow: false
+		}
+	},
+	created() {
+		this.setScrollHeight()
+		this.$api
+			.getComStorage('userInfo')
+			.then(resolve => {
+				if (resolve.userIdentity == 1) {
 					this.identity = 1
 				}
-			}).catch(error =>{
-				console.log(error)
 			})
-			this.$api.getComStorage('orderUserInfo').then((resolve) =>{
-				this.clubUserId = resolve.userID
+			.catch(error => {
+				console.log(error)
 			})
-			this.getProductAgainInfo()
-			this.isFocus = true
-		},
-		filters: {
-			NumFormat:function(text) {//处理金额
-				return Number(text).toFixed(2);
-			},
+		this.$api.getComStorage('orderUserInfo').then(resolve => {
+			this.clubUserId = resolve.userID
+		})
+		this.getProductAgainInfo()
+		this.isFocus = true
+	},
+	filters: {
+		NumFormat: function(text) {
+			//处理金额
+			return Number(text).toFixed(2)
+		}
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo'])
+	},
+	methods: {
+		scrolltolower(tabIndex) {
+			if (tabIndex == 0) {
+				if (this.totalPage > this.listData.length && this.pullFlag) {
+					this.getProductAgainInfo(true)
+				}
+			} else if (tabIndex == 1) {
+				if (this.hasNextPage && this.pullFlag) {
+					this.getcombinationProduct(true)
+				}
+			}
 		},
-		computed: {
-			...mapState(['hasLogin','userInfo'])
+		setScrollHeight() {
+			const { windowHeight, pixelRatio } = wx.getSystemInfoSync()
+			this.windowHeight = windowHeight - 1
+			this.scrollHeight = windowHeight - 1
 		},
-		methods:{
-			scrolltolower(tabIndex) {
-				if(tabIndex ==0){
-					if(this.totalPage>this.listData.length && this.pullFlag) {
-						this.getProductAgainInfo(true);
-					}
-				}else if(tabIndex==1){
-					if(this.hasNextPage && this.pullFlag) {
-						this.getcombinationProduct(true);
-					}
-				}
-			},
-			setScrollHeight() {
-				const {windowHeight, pixelRatio} = wx.getSystemInfoSync();
-				this.windowHeight = windowHeight - 1;
-				this.scrollHeight = windowHeight - 1;
-			},
-			getProductAgainInfo(loadMore) {
-				this.showLoading = true;
-				this.priceLoading = true;
-				this.loadingNow = true;
-				this.loadingText = '加载中';
-				this.isShowEmpty = false;				
-				if(loadMore) {this.pageNum += 1;}
-				this.ProductService.GetProductSearchList(
-					{
-						identity:this.identity,
-						keyword:this.searchInputVal,
-						pageNum:this.pageNum,
-						pageSize:this.pageSize,
-						sortField:'',
-						sortType:'',
-					}
-				)
-				.then(response =>{
+		getProductAgainInfo(loadMore) {
+			this.showLoading = true
+			this.priceLoading = true
+			this.loadingNow = true
+			this.loadingText = '加载中'
+			this.isShowEmpty = false
+			if (loadMore) {
+				this.pageNum += 1
+			}
+			this.ProductService.GetProductSearchList({
+				identity: this.identity,
+				keyword: this.searchInputVal,
+				pageNum: this.pageNum,
+				pageSize: this.pageSize,
+				sortField: '',
+				sortType: ''
+			})
+				.then(response => {
 					this.isShowWrapper = true
-					const resData = JSON.parse(response.data);
-					const resList = resData.items;
-					if(resList && resList.length > 0){
-						this.totalPage = resData.total;
-						this.showEmpty = false;
-						if(loadMore) {
-							this.listData = [...this.listData,...resList];
+					const resData = JSON.parse(response.data)
+					const resList = resData.items
+					if (resList && resList.length > 0) {
+						this.totalPage = resData.total
+						this.showEmpty = false
+						if (loadMore) {
+							this.listData = [...this.listData, ...resList]
 							this.getProductPrice()
 						} else {
-							this.listData = [...resList];
+							this.listData = [...resList]
 							this.getProductPrice()
-							this.showSkeleton = false;
+							this.showSkeleton = false
 						}
 						// 防上拉暴滑
-						this.pullFlag = false;
-						setTimeout(()=>{ this.pullFlag = true; },500)
+						this.pullFlag = false
+						setTimeout(() => {
+							this.pullFlag = true
+						}, 500)
 						// 底部提示文案
-						if(this.totalPage>this.listData.length) {
-							this.loadingText = '上拉加载更多';
+						if (this.totalPage > this.listData.length) {
+							this.loadingText = '上拉加载更多'
 						} else {
-							this.showLoading = true;
-							this.loadingNow = false;
+							this.showLoading = true
+							this.loadingNow = false
 						}
 					} else {
-						if(!loadMore) {
-							this.isShowEmpty = true;
-							this.isShowEmptyText ='暂无相关商品'
+						if (!loadMore) {
+							this.isShowEmpty = true
+							this.isShowEmptyText = '暂无相关商品'
 						}
 					}
 				})
-				.catch(error =>{
-					this.$util.msg(error.msg,2000);
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
 				})
-			},
-			getProductPrice(){//获取商品或者活动价格
-				let productIdArr = [];
-				let productIds ='';
-				this.listData.map(item=>{// 0公开价格 1不公开价格 2仅对资质机构公开
-					productIdArr.push(item.productId)
+		},
+		getProductPrice() {
+			//获取商品或者活动价格
+			let productIdArr = []
+			let productIds = ''
+			this.listData.map(item => {
+				// 0公开价格 1不公开价格 2仅对资质机构公开
+				productIdArr.push(item.productId)
+			})
+			productIds = productIdArr.join(',')
+			this.ProductService.querySearchProductPrice({
+				userId: this.clubUserId,
+				productIds: productIds,
+				source: 2
+			})
+				.then(response => {
+					this.listData = this.ReturnNewProducts(this.listData, response.data)
+					this.priceLoading = false
 				})
-				productIds = productIdArr.join(",");
-				this.ProductService.querySearchProductPrice(
-					{
-						userId: this.clubUserId,
-						productIds:productIds,
-						source: 2
-					}
-				).then(response =>{
-					this.listData = this.ReturnNewProducts(this.listData,response.data);
-					this.priceLoading = false;
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
 				})
-			},
-			ReturnNewProducts(Array,list){//合并字段
-				let NewArray = []
-				Array.map(item=>{
-					for (let i = 0; i < list.length; i++) {
-						if( item.productId == list[i].productId ){
-							NewArray.push(Object.assign(item,list[i])) 
-						}
-					}
-				});
-				return NewArray
-			},
-			searchOpertor(tabIndex){//搜索商品
-				if(tabIndex == 0){
-					if(this.searchInputVal == ''){
-						this.$util.msg('请输入商品关键词',2000)
-					}else{
-						this.pageNum = 1
-						this.showSkeleton = true;
-						this.getProductAgainInfo();
-						this.isFocus = false
+		},
+		ReturnNewProducts(Array, list) {
+			//合并字段
+			let NewArray = []
+			Array.map(item => {
+				for (let i = 0; i < list.length; i++) {
+					if (item.productId == list[i].productId) {
+						NewArray.push(Object.assign(item, list[i]))
 					}
-				}else{
+				}
+			})
+			return NewArray
+		},
+		searchOpertor(tabIndex) {
+			//搜索商品
+			if (tabIndex == 0) {
+				if (this.searchInputVal == '') {
+					this.$util.msg('请输入商品关键词', 2000)
+				} else {
 					this.pageNum = 1
-					this.showSkeleton = true;
-					this.getcombinationProduct();
+					this.showSkeleton = true
+					this.getProductAgainInfo()
 					this.isFocus = false
 				}
-			},
-			getcombinationProduct(loadMore){//组合搜索商品
-				this.showLoading = true;
-				this.loadingNow = true;
-				this.loadingText = '加载中';
-				this.isShowEmpty = false;				
-				if(loadMore) {this.pageNum += 1;}
-				this.ProductService.GetSearchCombinationProduct(
-					{
-						clubUserId:this.clubUserId,
-						pageNum:this.pageNum,
-						pageSize:this.zuhepageSize,
-						searchWord:this.searchInputVal,
-						}
-					)
-				.then(response =>{
+			} else {
+				this.pageNum = 1
+				this.showSkeleton = true
+				this.getcombinationProduct()
+				this.isFocus = false
+			}
+		},
+		getcombinationProduct(loadMore) {
+			//组合搜索商品
+			this.showLoading = true
+			this.loadingNow = true
+			this.loadingText = '加载中'
+			this.isShowEmpty = false
+			if (loadMore) {
+				this.pageNum += 1
+			}
+			this.ProductService.GetSearchCombinationProduct({
+				clubUserId: this.clubUserId,
+				pageNum: this.pageNum,
+				pageSize: this.zuhepageSize,
+				searchWord: this.searchInputVal
+			})
+				.then(response => {
 					this.isShowWrapper = true
-					const responseData = response.data;
+					const responseData = response.data
 					console.log(responseData)
-					if(responseData.results && responseData.results.length > 0){
-						this.hasNextPage = responseData.hasNextPage;
-						this.isShowEmpty = false;
-						if(loadMore) {
-							this.combinationProduct = [...this.combinationProduct,...responseData.results];
+					if (responseData.results && responseData.results.length > 0) {
+						this.hasNextPage = responseData.hasNextPage
+						this.isShowEmpty = false
+						if (loadMore) {
+							this.combinationProduct = [...this.combinationProduct, ...responseData.results]
 						} else {
-							this.combinationProduct = [...responseData.results];
-							
-							this.showSkeleton = false;
+							this.combinationProduct = [...responseData.results]
+
+							this.showSkeleton = false
 						}
 						// 防上拉暴滑
-						this.pullFlag = false;
-						setTimeout(()=>{
-							this.pullFlag = true;
-						},500)
+						this.pullFlag = false
+						setTimeout(() => {
+							this.pullFlag = true
+						}, 500)
 						// 底部提示文案
-						if(this.hasNextPage) {
-							this.loadingText = '上拉加载更多';
+						if (this.hasNextPage) {
+							this.loadingText = '上拉加载更多'
 						} else {
-							this.showLoading = true;
-							this.loadingNow = false;
+							this.showLoading = true
+							this.loadingNow = false
 						}
 					} else {
-						this.isShowEmpty = true;
-						this.isShowEmptyText ='暂无相关商品'
+						this.isShowEmpty = true
+						this.isShowEmptyText = '暂无相关商品'
 					}
 				})
-				.catch(error =>{
-					this.$util.msg(error.msg,2000);
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
 				})
-			},
-			changeCountAdd(item,pros){//商品数量加加
-				if(pros.initProductNum == 0){
-					pros.initProductNum = pros.minBuyNumber
-					this.processActivityPrice(pros)
-				}else if(pros.initProductNum >= pros.minBuyNumber){
-					pros.initProductNum++
-					this.processActivityPrice(pros)
-				}
-				this.totalPeice(item)
-				this.totalCount(item)
-				this.totalKind(item)
-			},
-			changeCountSub(item,pros){//商品数量减减
-				if(pros.initProductNum==0){
-					this.$util.msg(`采购数量不能小于0`,2000);
-					return
-				}else if(pros.initProductNum == pros.minBuyNumber){
-					pros.initProductNum = 0;
-					this.processActivityPrice(pros);
-				}else{
-					pros.initProductNum--
-					this.processActivityPrice(pros)
-					}
-				this.totalPeice(item)
-				this.totalCount(item)
-				this.totalKind(item)
-			},
-			changeNnmber(e,item,pros){//输入商品数量更新
-				let _value = e.detail.value;
-				if(!this.$api.isNumber(_value)){
-					pros.initProductNum = pros.minBuyNumber
-				}else if(_value < pros.minBuyNumber){	
-					this.$util.msg(`该商品最小起订量为${pros.minBuyNumber}`,2000);
-					pros.initProductNum = pros.minBuyNumber
-				}else{
-					pros.initProductNum = parseInt(e.detail.value)
-					this.processActivityPrice(pros)
+		},
+		changeCountAdd(item, pros) {
+			//商品数量加加
+			if (pros.initProductNum == 0) {
+				pros.initProductNum = pros.minBuyNumber
+				this.processActivityPrice(pros)
+			} else if (pros.initProductNum >= pros.minBuyNumber) {
+				pros.initProductNum++
+				this.processActivityPrice(pros)
+			}
+			this.totalPeice(item)
+			this.totalCount(item)
+			this.totalKind(item)
+		},
+		changeCountSub(item, pros) {
+			//商品数量减减
+			if (pros.initProductNum == 0) {
+				this.$util.msg('采购数量不能小于0', 2000)
+				return
+			} else if (pros.initProductNum == pros.minBuyNumber) {
+				pros.initProductNum = 0
+				this.processActivityPrice(pros)
+			} else {
+				pros.initProductNum--
+				this.processActivityPrice(pros)
+			}
+			this.totalPeice(item)
+			this.totalCount(item)
+			this.totalKind(item)
+		},
+		changeNnmber(e, item, pros) {
+			//输入商品数量更新
+			let _value = e.detail.value
+			if (!this.$api.isNumber(_value)) {
+				pros.initProductNum = pros.minBuyNumber
+			} else if (_value < pros.minBuyNumber) {
+				this.$util.msg(`该商品最小起订量为${pros.minBuyNumber}`, 2000)
+				pros.initProductNum = pros.minBuyNumber
+			} else {
+				pros.initProductNum = parseInt(e.detail.value)
+				this.processActivityPrice(pros)
+			}
+			this.totalPeice(item)
+			this.totalCount(item)
+			this.totalKind(item)
+		},
+		totalPeice(item) {
+			//计算总价格,每次调用此方法,将初始值为0,遍历价格并累加
+			let prosPrice = 0
+			let productsList = []
+			productsList = item.combinationProductList
+			productsList.forEach(pros => {
+				prosPrice += pros.price * pros.initProductNum
+				item.productTotalAmount = prosPrice
+			})
+			// console.log(prosPrice)
+		},
+		totalCount(item) {
+			//计算总数量
+			let prosAllCount = 0
+			let productsList = []
+			productsList = item.combinationProductList
+			productsList.forEach(pros => {
+				prosAllCount += parseInt(pros.initProductNum)
+				item.productTotalNum = prosAllCount
+			})
+			// console.log(prosAllCount)
+		},
+		totalKind(item) {
+			//计算商品种类
+			let productsList = []
+			let checkList = []
+			productsList = item.combinationProductList
+			productsList.forEach(pros => {
+				if (pros.initProductNum > 0) {
+					checkList.push(pros)
+					item.productKind = checkList.length
+				} else {
+					item.productKind = checkList.length
 				}
-				this.totalPeice(item)
-				this.totalCount(item)
-				this.totalKind(item)
-			},
-			totalPeice(item){	//计算总价格,每次调用此方法,将初始值为0,遍历价格并累加
-				let prosPrice=0;
-				let productsList =[];
-				productsList=item.combinationProductList;
-				productsList.forEach(pros=>{	
-					prosPrice+=pros.price*pros.initProductNum;
-					item.productTotalAmount = prosPrice;
-				})
-				// console.log(prosPrice)
-			},
-			totalCount(item){//计算总数量
-				let prosAllCount=0
-				let productsList =[];
-				productsList = item.combinationProductList
-				productsList.forEach(pros=>{
-					prosAllCount+=parseInt(pros.initProductNum);
-					item.productTotalNum = prosAllCount
-				})
-				// console.log(prosAllCount)
-			},	
-			totalKind(item){//计算商品种类
-				let productsList =[];
-				let checkList = [];
-				productsList=item.combinationProductList;
-				productsList.forEach(pros=>{	
-					if(pros.initProductNum>0){
-						checkList.push(pros)
-						item.productKind = checkList.length;
-					}else{
-						item.productKind = checkList.length;
+			})
+		},
+		processActivityPrice(pros) {
+			//单独处理活动价格和阶梯价格
+			let ladderPriceList = pros.ladderPrices
+			if (pros.ladderPriceFlag == '0' || pros.actStatus == 1) {
+				pros.totalPrice = pros.initProductNum * pros.price
+			} else {
+				ladderPriceList.forEach((item, index) => {
+					if (pros.initProductNum >= item.buyNum) {
+						pros.price = item.buyPrice
+						pros.totalPrice = pros.initProductNum * item.buyPrice
 					}
 				})
-			},
-			processActivityPrice(pros){//单独处理活动价格和阶梯价格
-				let ladderPriceList = pros.ladderPrices;
-				if(pros.ladderPriceFlag == '0' || pros.actStatus == 1){
-					pros.totalPrice = pros.initProductNum*pros.price
-				}else{
-					ladderPriceList.forEach((item,index)=>{
-						if(pros.initProductNum>=item.buyNum){
-							pros.price = item.buyPrice
-							pros.totalPrice = pros.initProductNum*item.buyPrice
-						}
-					})
-				}
-			},
-			operationHanld(prop){
-				this.$emit('operationConfim',prop);
-			},
-			alertjieti(pros){
-				this.$emit('alertjietiConfim',pros);
-			},
-			changeTab(index){
-				this.tabIndex = index;
-				if(index == 0){
-					this.pageNum = 1
-					this.getProductAgainInfo()
-				}else{
-					this.getcombinationProduct()
-				}
-				// this.$emit('changetab',index);
-			},
-			navToDetailPage(id) {
-				this.isModallayer = true;
-				this.$api.navigateTo(`/pages/goods/product?id=${id}`);
-				this.isModallayer = false;
-			},
-			repurchModel(){
-				this.$util.modal('','此商品的价格有变化,原来的购买价已不适用','知道了','',false,() =>{})
-			},
-			onShowClose () {//输入框失去焦点时触发
-				if(this.searchInputVal != ''){
-					this.isShowClose = true
-				}else{					
-					this.isShowClose = false
-				}
-			},
-			delInputText(tabIndex){//清除输入框内容
-				if(tabIndex==0){
-					this.searchInputVal = '';
-					this.listData =[];
-					this.isFocus = true
-					this.isShowClose = false;
-					this.loadingNow = false;
-					this.isShowEmpty = true;
-					this.isShowEmptyText ='暂无相关商品'
-				}else{
-					this.searchInputVal = '';
-					this.isShowClose = false;
-					this.isFocus = true
-					this.getcombinationProduct();
-				}
-			},
-			isInterceptHtmlFn(text){
-				let name = this.$reg.interceptHtmlFn(text)
-				return name
-			},
-			PromotionsFormat(promo){//促销活动类型数据处理
-				if(promo!=null){
-					if(promo.type == 1 && promo.mode == 1){
-						return true
-					}else{
-						return false
-					}
+			}
+		},
+		operationHanld(prop) {
+			this.$emit('operationConfim', prop)
+		},
+		alertjieti(pros) {
+			this.$emit('alertjietiConfim', pros)
+		},
+		changeTab(index) {
+			this.tabIndex = index
+			if (index == 0) {
+				this.pageNum = 1
+				this.getProductAgainInfo()
+			} else {
+				this.getcombinationProduct()
+			}
+			// this.$emit('changetab',index);
+		},
+		navToDetailPage(id) {
+			this.isModallayer = true
+			this.$api.navigateTo(`/pages/goods/product?id=${id}`)
+			this.isModallayer = false
+		},
+		repurchModel() {
+			this.$util.modal('', '此商品的价格有变化,原来的购买价已不适用', '知道了', '', false, () => {})
+		},
+		onShowClose() {
+			//输入框失去焦点时触发
+			if (this.searchInputVal != '') {
+				this.isShowClose = true
+			} else {
+				this.isShowClose = false
+			}
+		},
+		delInputText(tabIndex) {
+			//清除输入框内容
+			if (tabIndex == 0) {
+				this.searchInputVal = ''
+				this.listData = []
+				this.isFocus = true
+				this.isShowClose = false
+				this.loadingNow = false
+				this.isShowEmpty = true
+				this.isShowEmptyText = '暂无相关商品'
+			} else {
+				this.searchInputVal = ''
+				this.isShowClose = false
+				this.isFocus = true
+				this.getcombinationProduct()
+			}
+		},
+		isInterceptHtmlFn(text) {
+			let name = this.$reg.interceptHtmlFn(text)
+			return name
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
 				}
-				return false
-			},
-			btnClick() {
-				this.$emit('goCartPage')
-			},
-			btnTouchstart() {
-				// console.log('btnTouchstart');
-			},
-			btnTouchend() {
-				// console.log('btnTouchend');
 			}
+			return false
+		},
+		btnClick() {
+			this.$emit('goCartPage')
+		},
+		btnTouchstart() {
+			// console.log('btnTouchstart');
+		},
+		btnTouchend() {
+			// console.log('btnTouchend');
 		}
 	}
+}
 </script>
 
 <style lang="scss">
-	
-	.all-zuhe-list{
-		background: #FFFFFF;
-	}
-	.foot_conten{
-		width: 655rpx;
-		background: #fff;
-		font-size: 28rpx;
-		height: 80rpx;
-		// line-height: 80rpx;
-		display: inherit;
-		padding: 10px;
-		overflow: hidden;
-		margin: 20rpx auto;
+.all-zuhe-list {
+	background: #ffffff;
+}
+.foot_conten {
+	width: 655rpx;
+	background: #fff;
+	font-size: 28rpx;
+	height: 80rpx;
+	// line-height: 80rpx;
+	display: inherit;
+	padding: 10px;
+	overflow: hidden;
+	margin: 20rpx auto;
+}
+.zuhe_foot-box {
+	float: left;
+	overflow: hidden;
+	white-space: nowrap;
+	// text-overflow: ellipsis;
+	width: 490rpx;
+}
+.zuhe_foot-box text {
+	margin-right: 36rpx;
+}
+.foot_text {
+	color: #ff2a2a;
+}
+.foot_conten .buycart {
+	width: 162rpx;
+	height: 64rpx;
+	background: #efaf00 !important;
+	color: #fff;
+	font-size: 26rpx;
+	border-radius: 36rpx;
+	text-align: center;
+	line-height: 64rpx;
+	float: right;
+}
+.price-none {
+	font-size: 24rpx;
+	color: #666666;
+}
+.zuhe_title {
+	background: #ffffff;
+	height: 76rpx;
+	font-size: 28rpx;
+	color: #1675e1;
+	border-bottom: 4rpx solid #1675e1;
+	line-height: 76rpx;
+	padding-left: 30rpx;
+	&.active {
+		color: #e15616;
+		border-bottom: 4rpx solid #e15616;
 	}
-	.zuhe_foot-box{
-		float: left;
-		overflow: hidden;
-		white-space: nowrap;
-		// text-overflow: ellipsis;
-		width: 490rpx;
-	}
-	.zuhe_foot-box text{
-		margin-right: 36rpx;
-	}
-	.foot_text{
-		color: #FF2A2A;
+}
+.tabstyle {
+	width: 128rpx;
+	height: 76rpx;
+	font-size: 26rpx;
+	display: inline-block;
+	border-radius: 10rpx;
+	text-align: center;
+	line-height: 76rpx;
+	border: 2rpx solid #eeeeee;
+	position: relative;
+	margin-right: 12rpx;
+	&.addstyle {
+		background: $btn-confirm;
+		color: #ffffff;
+		&::before {
+			content: '';
+			width: 0;
+			height: 0;
+			border-top: 20rpx solid transparent;
+			border-right: 20rpx solid #ffffff;
+			border-left: 20rpx solid transparent;
+			border-bottom: 20rpx solid #ffffff;
+			position: absolute;
+			right: 0;
+			bottom: 0;
+		}
 	}
-	.foot_conten .buycart{
-		width: 162rpx;
-		height: 64rpx;
-		background: #EFAF00 !important;
-		color: #fff;
-		font-size: 26rpx;
-		border-radius: 36rpx;
+	.icon-gou {
+		width: 36rpx;
+		height: 36rpx;
+		line-height: 36rpx;
 		text-align: center;
-		line-height: 64rpx;
-		float: right;
+		color: #e15616;
+		position: absolute;
+		bottom: -5rpx;
+		right: -5rpx;
+		font-weight: bold;
+		font-size: $font-size-28;
 	}
-	.price-none{
-		font-size: 24rpx;
-		color: #666666;
-		}
-	.zuhe_title{
-		background:#FFFFFF;
-		height: 76rpx;
-		font-size: 28rpx;
-		color: #1675E1;
-		border-bottom: 4rpx solid #1675E1 ;
-		line-height: 76rpx;
-		padding-left: 30rpx;
-		&.active{
-			color: #E15616;
-			border-bottom: 4rpx solid #E15616;
-		}
+}
+.commodity-list-wrapper {
+	scroll-view {
+		height: 100%;
 	}
-	.tabstyle{
-		width: 128rpx;
-		height: 76rpx;
+	.show-more-btn {
+		width: 276rpx;
+		height: 52rpx;
+		line-height: 52rpx;
+		border: 2rpx solid #d8d8d8;
+		background: #f7f7f7;
 		font-size: 26rpx;
-		display: inline-block;
-		border-radius: 10rpx;
-		text-align: center;
-		line-height: 76rpx;
-		border: 2rpx solid #EEEEEE;
+		margin: 26rpx 0;
+		position: absolute;
+		left: 50%;
+		margin-left: -138rpx;
+	}
+}
+.good-search {
+	height: 80rpx;
+	width: 100%;
+	padding: 24rpx;
+	background: #ffffff;
+	display: flex;
+	align-items: center;
+	margin-bottom: 20rpx;
+	position: fixed;
+	top: 0;
+	left: 0;
+	z-index: 19;
+	.search-from {
+		width: 420rpx;
+		height: 80rpx;
+		background: #f7f7f7;
+		border-radius: 40rpx;
+		float: left;
 		position: relative;
-		margin-right: 12rpx;
-		&.addstyle{
-			background: $btn-confirm;
-			color: #FFFFFF;
-			&::before{
-				content: "";
-				width: 0;
-				height: 0;
-				border-top: 20rpx solid transparent;
-				border-right: 20rpx solid #FFFFFF;
-				border-left: 20rpx solid transparent;
-				border-bottom: 20rpx solid #FFFFFF;
-				position: absolute;
-				right: 0;
-				bottom: 0;
-			}
+		.input {
+			width: 340rpx;
+			height: 80rpx;
+			float: left;
+			line-height: 80rpx;
+			color: $text-color;
+			font-size: $font-size-24;
 		}
-		.icon-gou{
-			width: 36rpx;
-			height: 36rpx;
-			line-height: 36rpx;
+		.icon-iconfonticonfontsousuo1 {
+			width: 64rpx;
+			height: 80rpx;
+			line-height: 80rpx;
 			text-align: center;
-			color: #E15616;	
-			position: absolute;
-			bottom: -5rpx;
-			right: -5rpx;
-			font-weight: bold;
-			font-size: $font-size-28;
-		}
-	}
-	.commodity-list-wrapper {
-		scroll-view {
-			height: 100%;
+			display: block;
+			font-size: $font-size-38;
+			float: left;
+			color: #999999;
 		}
-		.show-more-btn {
-			width: 276rpx;
-			height: 52rpx;
-			line-height: 52rpx;
-			border: 2rpx solid #D8D8D8;
-			background: #F7F7F7;
-			font-size: 26rpx;
-			margin: 26rpx 0;
+		.icon-shanchu1 {
+			font-size: $font-size-32;
+			color: #999999;
 			position: absolute;
-			left: 50%;
-			margin-left: -138rpx;
+			width: 120rpx;
+			height: 80rpx;
+			line-height: 80rpx;
+			top: 0;
+			right: 0;
+			text-align: center;
+			z-index: 10;
 		}
 	}
-	.good-search{
-		height: 80rpx;
+	.search-btn {
+		// width: 120rpx;
+		line-height: 64rpx;
+		text-align: center;
+		font-size: $font-size-28;
+		color: $color-system;
+		float: left;
+		background: #ffffff;
+		margin-left: 10rpx;
+	}
+}
+.all-type-list-content {
+	// height: 240rpx;
+	padding: 24rpx;
+	background: #fff;
+	margin-bottom: 2rpx;
+	display: flex;
+	flex-direction: row;
+	box-sizing: content-box;
+	.list-img {
+		width: 312rpx;
+		height: 207rpx !important;
+		margin-right: 26rpx;
+		border-radius: 10rpx;
+		border: 2rpx solid #f3f3f3;
+	}
+}
+.zuhe-list-content {
+	width: 655rpx;
+	// height: 214rpx;
+	background: #fff;
+	border: 2rpx solid #def4ff;
+	display: flex;
+	flex-direction: row;
+	box-sizing: content-box;
+	margin-top: 10rpx;
+	border-radius: 14rpx;
+	margin: 10rpx auto;
+	padding: 20rpx;
+	&.stylecontent {
+		border: 2rpx solid #fff0de;
+	}
+}
+
+.list-details-info {
+	width: 100%;
+	flex-direction: column;
+	font-size: 26rpx;
+	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;
+	}
+	.list-details-specs {
 		width: 100%;
-		padding: 24rpx;
-		background: #FFFFFF;
-		display: flex;
-		align-items: center;
-		margin-bottom: 20rpx;
-		position: fixed;
-		top: 0;
-		left: 0;
-		z-index: 19;
-		.search-from{
-			width: 420rpx;
-			height: 80rpx;
-			background: #F7F7F7;
-			border-radius: 40rpx;
+		display: inline-block;
+		margin: 5rpx 0;
+		color: #666666;
+	}
+	.list-details-miniQuantity {
+		width: 100%;
+		display: inline-block;
+		margin-top: 7rpx;
+	}
+}
+.list-details-price {
+	width: 100%;
+	.floor-item-act {
+		height: 54rpx;
+		text-align: center;
+		box-sizing: border-box;
+		float: left;
+		padding: 11rpx 0;
+		.coupon-tags {
+			height: 32rpx;
+			box-sizing: border-box;
+			border-radius: 8rpx;
+			background-color: #fff1eb;
+			line-height: 28rpx;
+			color: #f94b4b;
+			text-align: center;
+			display: inline-block;
+			padding: 0 10rpx;
+			font-size: $font-size-20;
+			border: 1px solid #f94b4b;
 			float: left;
-			position: relative;
-			.input{
-				width: 340rpx;
-				height: 80rpx;
-				float: left;
-				line-height: 80rpx;
-				color: $text-color;
-				font-size: $font-size-24;
-			}
-			.icon-iconfonticonfontsousuo1{
-				width: 64rpx;
-				height: 80rpx;
-				line-height: 80rpx;
-				text-align: center;
-				display: block;
-				font-size: $font-size-38;
-				float: left;
-				color: #999999;
-			}
-			.icon-shanchu1{
-				font-size: $font-size-32;
-				color: #999999;
-				position: absolute;
-				width: 120rpx;
-				height: 80rpx;
-				line-height: 80rpx;
-				top: 0;
-				right: 0;
-				text-align: center;
-				z-index: 10;
-			}
+			margin-right: 12rpx;
 		}
-		.search-btn{
-			// width: 120rpx;
-			line-height: 64rpx;
-			text-align: center;
-			font-size: $font-size-28;
+		.floor-tags {
+			height: 32rpx;
+			box-sizing: border-box;
+			border-radius: 8rpx;
+			background-color: #ffffff;
+			line-height: 28rpx;
 			color: $color-system;
+			text-align: center;
+			display: inline-block;
+			padding: 0 16rpx;
+			font-size: $font-size-20;
+			border: 1px solid #e15616;
 			float: left;
-			background: #FFFFFF;
-			margin-left: 10rpx;
 		}
 	}
-	.all-type-list-content {
-		// height: 240rpx;
-		padding: 24rpx;
-		background: #fff;
-		margin-bottom: 2rpx;
-		display: flex;
-		flex-direction: row;
-		box-sizing: content-box;
-		.list-img {
-			width: 312rpx;
-			height: 207rpx !important;
-			margin-right: 26rpx;
-			border-radius: 10rpx;
-			border: 2rpx solid #f3f3f3;
-		}
+	.price-icon {
+		width: 22rpx;
+		height: 28rpx;
+		vertical-align: middle;
+		margin-right: 10rpx;
 	}
-	.zuhe-list-content{
-		width: 655rpx;
-		// height: 214rpx;
-		background: #fff;
-		border: 2rpx solid #DEF4FF;
-		display: flex;
-		flex-direction: row;
-		box-sizing: content-box;
-		margin-top: 10rpx;
-		border-radius: 14rpx;
-		margin: 10rpx auto;
-		padding: 20rpx;
-		&.stylecontent{
-			border: 2rpx solid #FFF0DE;
-		}
+	.price-icon + text {
+		font-size: 25rpx;
+		vertical-align: middle;
 	}
-	
-	.list-details-info {
-		width: 100%;
-		flex-direction: column;
-		font-size: 26rpx;
-		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;
+	.list-login-now {
+		width: 375rpx;
+		color: #f8c499;
+		.p-no {
+			float: left;
+			font-size: $font-size-24;
+			color: $color-system;
+			margin-right: 10rpx;
 		}
-		.list-details-specs {
-			width: 100%;
-			display: inline-block;
-			margin: 5rpx 0;
-			color: #666666;
+	}
+	.login-now {
+		padding: 10rpx 10rpx 10rpx 0;
+	}
+	.list-none {
+		margin-top: 15rpx;
+		.price-small {
+			font-size: $font-size-24;
+			line-height: 40rpx;
+			color: #ff2a2a;
 		}
-		.list-details-miniQuantity {
+	}
+	.list-price-loding {
+		font-size: $font-size-24;
+		line-height: 54rpx;
+		color: #ff2a2a;
+	}
+	.list-shop {
+		float: left;
+		overflow: hidden;
+		&.com {
 			width: 100%;
-			display: inline-block;
-			margin-top: 7rpx;
 		}
-	}
-	.list-details-price {
-		width: 100%;
-		.floor-item-act{
-			height: 54rpx;
-			text-align: center;
-			box-sizing: border-box;
+		.list-price {
+			color: #ff2a2a;
 			float: left;
-			padding: 11rpx 0;
-			.coupon-tags{
-				height: 32rpx;
-				box-sizing: border-box;
-				border-radius: 8rpx;
-				background-color: #fff1eb;
-				line-height: 28rpx;
-				color: #f94b4b;
-				text-align: center;
-				display: inline-block;
-				padding:0 10rpx;
-				font-size: $font-size-20;
-				border: 1px solid #f94b4b;
-				float: left;
-				margin-right: 12rpx;
-			}
-			.floor-tags{
-				height: 32rpx;
-				box-sizing: border-box;
-				border-radius: 8rpx;
-				background-color: #FFFFFF;
-				line-height: 28rpx;
-				color: $color-system;
-				text-align: center;
+			line-height: 54rpx;
+			align-items: center;
+			justify-content: center;
+			.price-larger {
+				font-size: $font-size-26;
 				display: inline-block;
-				padding:0 16rpx;
-				font-size: $font-size-20;
-				border: 1px solid #E15616;
-				float: left;
+				&.none {
+					text-decoration: line-through;
+					color: #999999;
+				}
 			}
-		}
-		.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;
-			.p-no{
+			.list-price-all {
+				width: 100%;
 				float: left;
-				font-size: $font-size-24;
-				color: $color-system;
-				margin-right: 10rpx;
 			}
-		}
-		.login-now {
-			padding: 10rpx 10rpx 10rpx 0;
-		}
-		.list-none{
-			margin-top: 15rpx;
-			.price-small{
-				font-size:$font-size-24;
-				line-height: 40rpx;
-				color: #FF2A2A;
-			}
-		}
-		.list-price-loding{
-			font-size:$font-size-24;
-			line-height: 54rpx;
-			color: #FF2A2A;
-		}
-		.list-shop{
-			float: left;
-			overflow: hidden;
-			&.com{
+			.zuhe_price-larger {
 				width: 100%;
-			}
-			.list-price {
-				color: #FF2A2A;
 				float: left;
-				line-height:54rpx ;
-				align-items: center;
-				justify-content: center;
+				height: 54rpx;
+				color: #666666;
 				.price-larger {
-					font-size: $font-size-26;
-					display: inline-block;
-					&.none{
-						text-decoration: line-through;
-						color: #999999;
-					}
-				}
-				.list-price-all{
-					width: 100%;
-					float: left;
-				}
-				.zuhe_price-larger{
-					width: 100%;
-					float: left;
-					height: 54rpx;
-					color: #666666;
-					.price-larger{
-						float: left;
-						margin-right: 20rpx;
-					}
-					
-				}
-				.price-two{
-					color: #666666;
 					float: left;
-					
-				}
-				.zuhe_list_zj{
-					color: #FF2A2A;
-				}
-				.price-view{
-					display: inline-block;
-					width: 40rpx;
-					border-radius: 10rpx;
-					font-size: $font-size-22;
-					text-align: center;
-					color: #FFFFFF;
-					height: 36rpx;
-					line-height: 36rpx;
-					margin-right: 8rpx;
-					&.ladder{
-						background: linear-gradient(135deg,rgba(255,0,0,1) 0%,rgba(242,143,49,1) 100%);
-					}
-					&.activity{
-						background: linear-gradient(135deg,rgba(128,0,255,1) 0%,rgba(242,49,153,1) 100%);
-					}
+					margin-right: 20rpx;
 				}
 			}
-			.zuhe_list_price .price-view{
-				margin-left:20rpx;
+			.price-two {
+				color: #666666;
 				float: left;
-				margin-top: 5rpx;
 			}
-			.zuhe_list_price{
-				width: 100%;
-				overflow: hidden;
-				margin-top: 10rpx;
+			.zuhe_list_zj {
+				color: #ff2a2a;
 			}
-			.count{
-				float: right;
-				border: 1px solid #EEEEEE;
+			.price-view {
+				display: inline-block;
+				width: 40rpx;
 				border-radius: 10rpx;
-				.number-box{
-					display: flex;
-					justify-content: center;
-					align-items: center;
-					.iconfont{
-						font-size: $font-size-24;
-						padding:0 16rpx;
-						color: $text-color;
-						text-align: center;
-						line-height: 48rpx;
-						font-weight: bold;
-					}
-					.btn-input{
-						width: 100rpx;
-						height: 48rpx;
-						line-height: 48rpx;
-						background: #F8F8F8;
-						border-radius: 4rpx;
-						text-align: center;
-						font-size: $font-size-24;
-						border-right: 1px solid #EEEEEE;
-						border-left: 1px solid #EEEEEE;
-					}
-				}
-			}
-			.list-price-none{
-				width: 100%;
-				.price-none{
-					text-decoration: line-through;
-					color: #999999;
-					display: inline-block;
+				font-size: $font-size-22;
+				text-align: center;
+				color: #ffffff;
+				height: 36rpx;
+				line-height: 36rpx;
+				margin-right: 8rpx;
+				&.ladder {
+					background: linear-gradient(135deg, rgba(255, 0, 0, 1) 0%, rgba(242, 143, 49, 1) 100%);
 				}
-				.icon-wenhao{
-					font-size: $font-size-32;
-					color: #0091FF;
-					margin-left: 6rpx;
+				&.activity {
+					background: linear-gradient(135deg, rgba(128, 0, 255, 1) 0%, rgba(242, 49, 153, 1) 100%);
 				}
 			}
 		}
-		.add-cart-btn {
-			flex: 4;
-			width: 140rpx;
-			height: 54rpx;
-			line-height: 54rpx;
-			border-radius: 27rpx;
-			color: #fff;
-			font-size: 24rpx;
-			margin-right: 0;
-			background:#FFFFFF;
-			border: 1px solid #C9C9C9;
-			color: $text-color;
+		.zuhe_list_price .price-view {
+			margin-left: 20rpx;
+			float: left;
+			margin-top: 5rpx;
+		}
+		.zuhe_list_price {
+			width: 100%;
+			overflow: hidden;
+			margin-top: 10rpx;
 		}
-		.zuhe_btn{
+		.count {
 			float: right;
+			border: 1px solid #eeeeee;
+			border-radius: 10rpx;
+			.number-box {
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				.iconfont {
+					font-size: $font-size-24;
+					padding: 0 16rpx;
+					color: $text-color;
+					text-align: center;
+					line-height: 48rpx;
+					font-weight: bold;
+				}
+				.btn-input {
+					width: 100rpx;
+					height: 48rpx;
+					line-height: 48rpx;
+					background: #f8f8f8;
+					border-radius: 4rpx;
+					text-align: center;
+					font-size: $font-size-24;
+					border-right: 1px solid #eeeeee;
+					border-left: 1px solid #eeeeee;
+				}
+			}
+		}
+		.list-price-none {
+			width: 100%;
+			.price-none {
+				text-decoration: line-through;
+				color: #999999;
+				display: inline-block;
+			}
+			.icon-wenhao {
+				font-size: $font-size-32;
+				color: #0091ff;
+				margin-left: 6rpx;
+			}
 		}
 	}
-	.zuhe_list_price{
-		display: block !important;
+	.add-cart-btn {
+		flex: 4;
+		width: 140rpx;
+		height: 54rpx;
+		line-height: 54rpx;
+		border-radius: 27rpx;
+		color: #fff;
+		font-size: 24rpx;
+		margin-right: 0;
+		background: #ffffff;
+		border: 1px solid #c9c9c9;
+		color: $text-color;
 	}
-	.zuhe_list_text{
-		margin-top: 0;
+	.zuhe_btn {
+		float: right;
 	}
+}
+.zuhe_list_price {
+	display: block !important;
+}
+.zuhe_list_text {
+	margin-top: 0;
+}
 </style>

+ 813 - 692
pages/search/search.vue

@@ -2,12 +2,23 @@
 	<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="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">
+				<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>
@@ -15,19 +26,34 @@
 			</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"/>
+				<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="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>
+			<view :class="'s-' + themeClass" v-if="serachRecordList.length > 0">
+				<view class="header"> 搜索历史<text class="iconfont icon-shanchu" @click="confirmDetele"></text> </view>
 				<view class="list">
 					<view class="list-main">
-						<view v-for="(item,index) in serachRecordList" :key="index" @click="keywordsClick(item.searchWord)">{{item.searchWord}}</view>
+						<view
+							v-for="(item, index) in serachRecordList"
+							:key="index"
+							@click="keywordsClick(item.searchWord)"
+							>{{ item.searchWord }}</view
+						>
 					</view>
 				</view>
 			</view>
@@ -36,69 +62,107 @@
 				<view class="list">
 					<view class="list-title">产品</view>
 					<view class="list-main">
-						<view v-for="(item,index) in productHotSearch" :key="index" @click="keywordsClickPath(item)" :class="item.isHot == '1' ? 'list-active' : ''">
-							{{item.name}}
-							<text class="iconfont icon-resou" v-if="item.isHot === '1'"></text>
+						<view
+							v-for="(item, index) in productHotSearch"
+							:key="index"
+							@click="keywordsClickPath(item)"
+							:class="item.isHot == '1' ? 'list-active' : ''"
+						>
+							{{ item.name }} <text class="iconfont icon-resou" v-if="item.isHot === '1'"></text>
 						</view>
 					</view>
 				</view>
 				<view class="list">
 					<view class="list-title">仪器</view>
 					<view class="list-main">
-						<view v-for="(item,index) in instrumentHotSearch" :key="index" @click="keywordsClickPath(item)" :class="item.isHot == '1' ? 'list-active' : ''">
-							{{item.name}}
-							<text class="iconfont icon-resou" v-if="item.isHot === '1'"></text>
+						<view
+							v-for="(item, index) in instrumentHotSearch"
+							:key="index"
+							@click="keywordsClickPath(item)"
+							:class="item.isHot == '1' ? 'list-active' : ''"
+						>
+							{{ item.name }} <text class="iconfont icon-resou" v-if="item.isHot === '1'"></text>
 						</view>
 					</view>
 				</view>
 			</view>
 		</view>
-		<view v-else class="commodity-list-wrapper"  :style="{'overflow':'auto','height':(listData.length>4? windowHeight + 'px' : 'auto')}">
-			<scroll-view :style="{'height':(listData.length>4? scrollHeight+'px' : 'auto')}" @scrolltolower="scrolltolower" scroll-y v-if="!showEmpty">
-				<view v-for="(item,index) in listData" :key="index" :id="item.id" class="all-type-list-content commodity-list" @click.stop="navToDetailPage(item.productId)">
-					<image mode='widthFix' :src="item.image"  class="list-img" alt="list-img"></image>
+		<view
+			v-else
+			class="commodity-list-wrapper"
+			:style="{ overflow: 'auto', height: listData.length > 4 ? windowHeight + 'px' : 'auto' }"
+		>
+			<scroll-view
+				:style="{ height: listData.length > 4 ? scrollHeight + 'px' : 'auto' }"
+				@scrolltolower="scrolltolower"
+				scroll-y
+				v-if="!showEmpty"
+			>
+				<view
+					v-for="(item, index) in listData"
+					:key="index"
+					:id="item.id"
+					class="all-type-list-content commodity-list"
+					@click.stop="navToDetailPage(item.productId)"
+				>
+					<image mode="widthFix" :src="item.image" class="list-img" alt="list-img"></image>
 					<view class="list-details-info">
 						<view class="list-details-title">
 							<text class="mclap-tag" v-if="item.beautyActFlag == 1">美博会</text>
-							<text class="mclap" :class="item.beautyActFlag == 1 ? 'indent' : ''">{{isInterceptHtmlFn(item.name)}}</text>
+							<text class="mclap" :class="item.beautyActFlag == 1 ? 'indent' : ''">{{
+								isInterceptHtmlFn(item.name)
+							}}</text>
 						</view>
-						<text class="list-details-specs">规格:{{item.unit}}</text>
-						<view class="list-details-specs" v-if="item.code!=''&&item.code!=null">
-							<view>商品编码:{{item.code}}</view>
+						<text class="list-details-specs">规格:{{ item.unit }}</text>
+						<view class="list-details-specs" v-if="item.code != '' && item.code != null">
+							<view>商品编码:{{ item.code }}</view>
 						</view>
 						<view class="list-details-price">
 							<template v-if="userIdentity == 3">
-								<view class="floor-item-act" v-if="item.actStatus==1">
-									<template v-if="item.actStatus==1">
+								<view class="floor-item-act" v-if="item.actStatus == 1">
+									<template v-if="item.actStatus == 1">
 										<view class="floor-tags" v-if="PromotionsFormat(item.promotions)"></view>
-										<view class="floor-tags" v-else>{{item.promotions.name}}</view>	
+										<view class="floor-tags" v-else>{{ item.promotions.name }}</view>
 									</template>
 								</view>
-								<view class="floor-item-act" v-if="item.actStatus ==0">
-									<view class="floor-tags" v-if="item.actStatus ==0  &&  item.ladderPriceFlag==1">阶梯价格</view>	
+								<view class="floor-item-act" v-if="item.actStatus == 0">
+									<view class="floor-tags" v-if="item.actStatus == 0 && item.ladderPriceFlag == 1"
+										>阶梯价格</view
+									>
 								</view>
 							</template>
 							<template v-else>
-								<view class="floor-item-act" v-if="item.actStatus==1">
-									<template v-if="item.actStatus==1">
+								<view class="floor-item-act" v-if="item.actStatus == 1">
+									<template v-if="item.actStatus == 1">
 										<view class="floor-tags" v-if="PromotionsFormat(item.promotions)">
-											{{item.promotions.name}}
-											<text v-if="hasLogin && userIdentity == 2 && item.priceFlag != 1">:¥{{ item.price | NumFormat }}</text>
+											{{ item.promotions.name }}
+											<text v-if="hasLogin && userIdentity == 2 && item.priceFlag != 1"
+												>:¥{{ item.price | NumFormat }}</text
+											>
 										</view>
-										<view class="floor-tags" v-else>{{item.promotions.name}}</view>	
-									</template>	
+										<view class="floor-tags" v-else>{{ item.promotions.name }}</view>
+									</template>
 								</view>
-								<view class="floor-item-act" v-if="item.actStatus ==0">
-									<view class="floor-tags" v-if="item.actStatus ==0  &&  item.ladderPriceFlag==1">阶梯价格</view>	
+								<view class="floor-item-act" v-if="item.actStatus == 0">
+									<view class="floor-tags" v-if="item.actStatus == 0 && item.ladderPriceFlag == 1"
+										>阶梯价格</view
+									>
 								</view>
 							</template>
 							<view v-if="hasLogin" class="list-price">
 								<template v-if="userIdentity == 1">
 									<text v-if="priceLoading" class="price-larger small">正在获取价格...</text>
-									<text v-else class="price-larger" :class="PromotionsFormat(item.promotions) ? 'none' : ''">
-										¥{{ (PromotionsFormat(item.promotions) ? item.originalPrice : item.price) | NumFormat}}
+									<text
+										v-else
+										class="price-larger"
+										:class="PromotionsFormat(item.promotions) ? 'none' : ''"
+									>
+										¥{{
+											(PromotionsFormat(item.promotions) ? item.originalPrice : item.price)
+												| NumFormat
+										}}
 									</text>
-								</template>	
+								</template>
 								<template v-if="userIdentity == 4">
 									<view class="price-larger" v-if="item.priceFlag == 1">
 										<text class="txt">¥未公开价格</text>
@@ -108,8 +172,15 @@
 										<view class="price-larger" v-if="item.priceFlag == 2">
 											<text class="txt">¥价格仅会员可见</text>
 										</view>
-										<text v-else class="price-larger" :class="PromotionsFormat(item.promotions) ? 'none' : ''">
-											¥{{ (PromotionsFormat(item.promotions) ? item.originalPrice : item.price) | NumFormat}}
+										<text
+											v-else
+											class="price-larger"
+											:class="PromotionsFormat(item.promotions) ? 'none' : ''"
+										>
+											¥{{
+												(PromotionsFormat(item.promotions) ? item.originalPrice : item.price)
+													| NumFormat
+											}}
 										</text>
 									</template>
 								</template>
@@ -119,12 +190,19 @@
 											<text class="txt">¥未公开价格</text>
 										</view>
 										<text v-else-if="priceLoading" class="price-larger small">正在获取价格...</text>
-										<text v-else class="price-larger" :class="PromotionsFormat(item.promotions) ? 'none' : ''">
-											¥{{ (PromotionsFormat(item.promotions) ? item.originalPrice : item.price) | NumFormat}}
+										<text
+											v-else
+											class="price-larger"
+											:class="PromotionsFormat(item.promotions) ? 'none' : ''"
+										>
+											¥{{
+												(PromotionsFormat(item.promotions) ? item.originalPrice : item.price)
+													| NumFormat
+											}}
 										</text>
 									</template>
 									<template v-else>
-										<view  class="list-login-now">
+										<view class="list-login-now">
 											<text class="p-no">¥</text>
 											<uni-grader :grade="Number(item.priceGrade)"></uni-grader>
 										</view>
@@ -135,12 +213,19 @@
 										<text class="txt">¥未公开价格</text>
 									</view>
 									<text v-else-if="priceLoading" class="price-larger small">正在获取价格...</text>
-									<text v-else class="price-larger" :class="PromotionsFormat(item.promotions) ? 'none' : ''">
-										¥{{ (PromotionsFormat(item.promotions) ? item.originalPrice : item.price) | NumFormat}}
+									<text
+										v-else
+										class="price-larger"
+										:class="PromotionsFormat(item.promotions) ? 'none' : ''"
+									>
+										¥{{
+											(PromotionsFormat(item.promotions) ? item.originalPrice : item.price)
+												| NumFormat
+										}}
 									</text>
 								</template>
-							</view>	
-							<view  v-else class="list-login-now">
+							</view>
+							<view v-else class="list-login-now">
 								<text class="p-no">¥</text>
 								<uni-grader :grade="Number(item.priceGrade)"></uni-grader>
 							</view>
@@ -148,747 +233,783 @@
 					</view>
 				</view>
 				<view v-if="showLoading && listData.length > 4">
-					<view class="loading-wrapper loading-wrapper-now" v-if="loadingNow">{{loadingText}}<text v-if="loadingText === '已至底部'">‧ ‧ ‧</text></view>
-					<view class="loading-wrapper loading-wrapper-btm" v-else>———<text class="btm-text">已至底部</text>———</view>
+					<view class="loading-wrapper loading-wrapper-now" v-if="loadingNow"
+						>{{ loadingText }}<text v-if="loadingText === '已至底部'">‧ ‧ ‧</text></view
+					>
+					<view class="loading-wrapper loading-wrapper-btm" v-else
+						>———<text class="btm-text">已至底部</text>———</view
+					>
 				</view>
 			</scroll-view>
 			<view class="empty-container" v-if="showEmpty">
-				<image class="empty-container-image" src="https://img.caimei365.com/group1/M00/03/8D/Cmis215XHXWAHCoqAAELHadZ9Xg365.png"></image>
+				<image
+					class="empty-container-image"
+					src="https://img.caimei365.com/group1/M00/03/8D/Cmis215XHXWAHCoqAAELHadZ9Xg365.png"
+				></image>
 				<text class="error-text">抱歉,没有相关商品!</text>
 			</view>
 		</view>
 		<!-- 透明模态层 -->
-		<modal-layer v-if='isModallayer'></modal-layer>
+		<modal-layer v-if="isModallayer"></modal-layer>
 	</view>
 </template>
 
 <script>
-	import { mapState,mapMutations } from 'vuex'
-	import modalLayer from "@/components/modal-layer"
-	import uniGrader from '@/components/uni-grade/uni-grade.vue'
-	import authorize from '@/common/config/authorize.js'
-	import wxLogin from "@/common/config/wxLogin.js"
-	
-	export default {
-		components: {
-			modalLayer,
-			uniGrader
-		},
-		data() {
-			return {
-				shopId:0,
-				userId:0,
-				tabValue:'产品',
-				themeClass: 'block',
-				show:false,
-				userIdentity:'',	
-				searchKeyType:1,
-				isShowClose:false,	//是否显示清空输入框图标
-				isSearchHistory:false,//是都显示搜索历史
-				serachRecordList:[],//历史搜索记录
-				instrumentHotSearch:[],
-				productHotSearch:[],
-				isShowWrapper:false,
-				isModallayer:false,
-				isFocus:false,
-				priceLoading:true,
-				windowHeight: '',
-				showEmpty: false,
-				scrollHeight: '',
-				listData: [],
-				productIds:'',//查询价格的商品ID
-				showLoading: false,
-				loadingNow: true,
-				loadingText: '上拉加载更多',
-				pullFlag: true,
-				listQuery:{
-					identity:0,
-					keyword:'',
-					sortField:'',
-					sortType:'',
-					pageNum: 1,
-					pageSize: 20,
-				},
-				total:0
-			}
-		},
-		computed: {
-			...mapState(['hasLogin','userInfo','isWxAuthorize','hasLogin','userInfo','identity'])
-		},
-		onLoad(option) {
-			console.log(option)
-			if(option.type =='share'){
-				wxLogin.wxLoginAuthorize()
-			}
-			this.$api.getStorage().then((resolve) =>{
-				this.userId = resolve.userId ? resolve.userId : 0;
-				this.shopId = resolve.shopId ? resolve.shopId : 0;
-				this.userIdentity = resolve.userIdentity;
-				this.listQuery.identity = this.identity;
-				if(option.keyWord){
-					this.listQuery.keyword = option.keyWord
-					this.setSearchHistoryAdd()
-					this.getListFromServer()
-					this.isFocus = false
-				}else{
-					this.isFocus = true
-					this.initGetSerachRecord()
-				}
-			})	
-		},
-		filters: {
-			NumFormat:function(text) {//处理金额
-				return Number(text).toFixed(2);
+import { mapState, mapMutations } from 'vuex'
+import modalLayer from '@/components/modal-layer'
+import uniGrader from '@/components/uni-grade/uni-grade.vue'
+import authorize from '@/common/config/authorize.js'
+import wxLogin from '@/common/config/wxLogin.js'
+
+export default {
+	components: {
+		modalLayer,
+		uniGrader
+	},
+	data() {
+		return {
+			shopId: 0,
+			userId: 0,
+			tabValue: '产品',
+			themeClass: 'block',
+			show: false,
+			userIdentity: '',
+			searchKeyType: 1,
+			isShowClose: false, //是否显示清空输入框图标
+			isSearchHistory: false, //是都显示搜索历史
+			serachRecordList: [], //历史搜索记录
+			instrumentHotSearch: [],
+			productHotSearch: [],
+			isShowWrapper: false,
+			isModallayer: false,
+			isFocus: false,
+			priceLoading: true,
+			windowHeight: '',
+			showEmpty: false,
+			scrollHeight: '',
+			listData: [],
+			productIds: '', //查询价格的商品ID
+			showLoading: false,
+			loadingNow: true,
+			loadingText: '上拉加载更多',
+			pullFlag: true,
+			listQuery: {
+				identity: 0,
+				keyword: '',
+				sortField: '',
+				sortType: '',
+				pageNum: 1,
+				pageSize: 20
 			},
-		},
-		methods:{
-			GetHomeHotSearchTerms(){//金刚区分类
-				this.CommonService.GetHomeHotSearchTerms({}).then(response =>{
+			total: 0
+		}
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo', 'isWxAuthorize', 'hasLogin', 'userInfo', 'identity'])
+	},
+	onLoad(option) {
+		console.log(option)
+		if (option.type == 'share') {
+			wxLogin.wxLoginAuthorize()
+		}
+		this.$api.getStorage().then(resolve => {
+			this.userId = resolve.userId ? resolve.userId : 0
+			this.shopId = resolve.shopId ? resolve.shopId : 0
+			this.userIdentity = resolve.userIdentity
+			this.listQuery.identity = this.identity
+			if (option.keyWord) {
+				this.listQuery.keyword = option.keyWord
+				this.setSearchHistoryAdd()
+				this.getListFromServer()
+				this.isFocus = false
+			} else {
+				this.isFocus = true
+				this.initGetSerachRecord()
+			}
+		})
+	},
+	filters: {
+		NumFormat: function(text) {
+			//处理金额
+			return Number(text).toFixed(2)
+		}
+	},
+	methods: {
+		GetHomeHotSearchTerms() {
+			//金刚区分类
+			this.CommonService.GetHomeHotSearchTerms({})
+				.then(response => {
 					let data = response.data
 					console.log(data)
 					this.instrumentHotSearch = data.instrumentHotSearch
 					this.productHotSearch = data.productHotSearch
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
 				})
-			},
-			initGetSerachRecord(){//查询搜索历史记录
-				this.ProductService.GetProductSearchHistory({userId:this.userId}).then(response =>{
-					if(response.code == 0){
-						this.serachRecordList = response.data
-					}
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
 				})
-			},
-			subMitSearch() {//搜索
-				if (this.listQuery.keyword == '') {
-					this.$util.msg('请输入搜索关键词',2000);
-				}else{
-					switch(this.searchKeyType){
-						case 1:
-							this.listData =[]
-							this.setSearchHistoryAdd()
-							this.getListFromServer()
-							this.isFocus = false
-							// 友盟埋点商品搜索点击
-							if(process.env.NODE_ENV != 'development'){
-								this.$uma.trackEvent('Um_Event_SearchProductSubmit', {
-									Um_Key_Keyword: `${this.listQuery.keyword}`,
-									Um_Key_PageName: '商品',
-									Um_Key_SourcePage: '搜索商品',
-								})
-							}
-							break;
-						case 2:
-							this.setSearchHistoryAdd()
-							this.$api.navigateTo(`/pages/search/search-supplier?keyWord=${this.listQuery.keyword}`);
-							break;
-						case 3:
-							this.setSearchHistoryAdd()
-							this.$api.navigateTo(`/pages/search/search-instrument?keyWord=${this.listQuery.keyword}`);
-							break;
-					}
-				}
-			},
-			scrolltolower() {
-				if(this.total>this.listData.length && this.pullFlag) {
-					this.getListFromServer(true);
+		},
+		initGetSerachRecord() {
+			//查询搜索历史记录
+			this.ProductService.GetProductSearchHistory({ userId: this.userId }).then(response => {
+				if (response.code == 0) {
+					this.serachRecordList = response.data
 				}
-			},
-			getListFromServer(loadMore) {
-				this.showLoading = true;
-				this.loadingNow = true;
-				this.loadingText = '加载中';
-				this.showEmpty = false;				
-				if(loadMore) {
-					this.listQuery.pageNum += 1;
+			})
+		},
+		subMitSearch() {
+			//搜索
+			if (this.listQuery.keyword == '') {
+				this.$util.msg('请输入搜索关键词', 2000)
+			} else {
+				switch (this.searchKeyType) {
+					case 1:
+						this.listData = []
+						this.setSearchHistoryAdd()
+						this.getListFromServer()
+						this.isFocus = false
+						// 友盟埋点商品搜索点击
+						if (process.env.NODE_ENV != 'development') {
+							this.$uma.trackEvent('Um_Event_SearchProductSubmit', {
+								Um_Key_Keyword: `${this.listQuery.keyword}`,
+								Um_Key_PageName: '商品',
+								Um_Key_SourcePage: '搜索商品'
+							})
+						}
+						break
+					case 2:
+						this.setSearchHistoryAdd()
+						this.$api.navigateTo(`/pages/search/search-supplier?keyWord=${this.listQuery.keyword}`)
+						break
+					case 3:
+						this.setSearchHistoryAdd()
+						this.$api.navigateTo(`/pages/search/search-instrument?keyWord=${this.listQuery.keyword}`)
+						break
 				}
-				this.ProductService.GetProductSearchList(this.listQuery).then(response =>{
+			}
+		},
+		scrolltolower() {
+			if (this.total > this.listData.length && this.pullFlag) {
+				this.getListFromServer(true)
+			}
+		},
+		getListFromServer(loadMore) {
+			this.showLoading = true
+			this.loadingNow = true
+			this.loadingText = '加载中'
+			this.showEmpty = false
+			if (loadMore) {
+				this.listQuery.pageNum += 1
+			}
+			this.ProductService.GetProductSearchList(this.listQuery)
+				.then(response => {
 					this.isShowWrapper = true
-					const resData = JSON.parse(response.data);
-					const resList = resData.items;
+					const resData = JSON.parse(response.data)
+					const resList = resData.items
 					console.log(resList)
-					if(resList && resList.length > 0){
-						this.total = resData.total;
-						this.showEmpty = false;
-						if(loadMore) {
-							this.listData = [...this.listData,...resList];
+					if (resList && resList.length > 0) {
+						this.total = resData.total
+						this.showEmpty = false
+						if (loadMore) {
+							this.listData = [...this.listData, ...resList]
 							this.getProductPrice()
 						} else {
-							this.listData = [...resList];
+							this.listData = [...resList]
 							this.getProductPrice()
 						}
 						// 防上拉暴滑
-						this.pullFlag = false;
-						setTimeout(()=>{ this.pullFlag = true; },500)
+						this.pullFlag = false
+						setTimeout(() => {
+							this.pullFlag = true
+						}, 500)
 						// 底部提示文案
-						if(this.totalPage>this.listData.length) {
-							this.loadingText = '上拉加载更多';
+						if (this.totalPage > this.listData.length) {
+							this.loadingText = '上拉加载更多'
 						} else {
-							this.showLoading = true;
-							this.loadingNow = false;
+							this.showLoading = true
+							this.loadingNow = false
 						}
 					} else {
-						if(!loadMore) {
-							this.showEmpty = true;
+						if (!loadMore) {
+							this.showEmpty = true
 						}
 					}
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000);
 				})
-			},
-			setSearchHistoryAdd(){//添加搜索记录
-				if (!this.hasLogin) {return false;}
-				this.ProductService.GetAddProductSearchHistory({userId: this.userId,keyword:this.listQuery.keyword}).then(response =>{
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		setSearchHistoryAdd() {
+			//添加搜索记录
+			if (!this.hasLogin) {
+				return false
+			}
+			this.ProductService.GetAddProductSearchHistory({ userId: this.userId, keyword: this.listQuery.keyword })
+				.then(response => {
 					//此为每次搜索同时添加用户的搜索记录
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000);
 				})
-			},
-			getProductPrice(){//获取价格
-				let productIdArr = [];
-				this.listData.map(item=>{// 0公开价格 1不公开价格 2仅对资质机构公开
-					productIdArr.push(item.productId)
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
 				})
-				this.productIds = productIdArr.join(",");
-				this.ProductService.querySearchProductPrice(
-					{
-						userId: this.userId,
-						productIds:this.productIds,
-						source:2,// 来源 1 WWW 2 小程序
-					}
-				).then(response =>{
+		},
+		getProductPrice() {
+			//获取价格
+			let productIdArr = []
+			this.listData.map(item => {
+				// 0公开价格 1不公开价格 2仅对资质机构公开
+				productIdArr.push(item.productId)
+			})
+			this.productIds = productIdArr.join(',')
+			this.ProductService.querySearchProductPrice({
+				userId: this.userId,
+				productIds: this.productIds,
+				source: 2 // 来源 1 WWW 2 小程序
+			})
+				.then(response => {
 					if (response.data) {
-						this.listData = this.ReturnNewProducts(this.listData,response.data);
+						this.listData = this.ReturnNewProducts(this.listData, response.data)
 					}
-					this.priceLoading = false;
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
+					this.priceLoading = false
 				})
-			},
-			ReturnNewProducts(Array,list){//处理对应商品ID的商品价格
-				let NewArray = []
-				Array.map(item=>{
-					for (let i = 0; i < list.length; i++) {
-						if( item.productId == list[i].productId ){
-							NewArray.push(Object.assign(item,list[i])) 
-						}
-					}
-				});
-				return NewArray
-			},
-			PromotionsFormat(promo){//促销活动类型数据处理
-				if(promo!=null){
-					if(promo.type == 1 && promo.mode == 1){
-						return true
-					}else{
-						return false
-					}
-				}
-				return false
-			},
-			onShowClose () {//输入框输入时触发
-				this.inputEmpty(this.listQuery.keyword)
-			},
-			onFocus () { //输入框获取焦点时触发
-				this.inputEmpty(this.listQuery.keyword)
-				this.initGetSerachRecord()
-			},
-			delInputText () { //清除输入框内容
-				this.listQuery.keyword = ''
-				this.isShowClose = false
-				this.isShowWrapper = false
-				this.inputEmpty(this.listQuery.keyword)
-				this.initGetSerachRecord()
-			},
-			keywordsClick (item) {//关键词搜索与历史搜索
-				this.listQuery.keyword = item;
-				this.isShowClose = true;
-				this.isFocus = false
-				this.subMitSearch();
-			},
-			keywordsClickPath(item){
-				this.$api.FlooryNavigateTo(item)
-			},
-			confirmDetele() {//清空历史记录
-				this.$util.modal('提示','确定删除历史记录?','确定','取消',true,() =>{
-					this.ProductService.GetDeleteProductSearchHistory({userId:this.userId}).then(response =>{
-						this.$util.msg('删除成功',2000,true,'success')
-						this.serachRecordList=[];
-					}).catch(error =>{
-						this.$util.msg(error.msg,2000)
-					})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
 				})
-			},
-			inputEmpty(val){
-				this.isShowWrapper = false
-				if(val != ''){
-					this.isShowClose = true
-					this.isFocus = true
-				}else{					
-					this.isShowClose = false
-					this.isFocus = true
+		},
+		ReturnNewProducts(Array, list) {
+			//处理对应商品ID的商品价格
+			let NewArray = []
+			Array.map(item => {
+				for (let i = 0; i < list.length; i++) {
+					if (item.productId == list[i].productId) {
+						NewArray.push(Object.assign(item, list[i]))
+					}
 				}
-			},
-			isInterceptHtmlFn(text){
-				let name = this.$reg.interceptHtmlFn(text)
-				return name
-			},
-			navToDetailPage(id) {
-				this.isModallayer = true;
-				this.$api.navigateTo(`/pages/goods/product?id=${id}`);
-				this.isModallayer = false;
-			},
-			setScrollHeight() {
-				const {windowHeight, pixelRatio} = wx.getSystemInfoSync();
-				this.windowHeight = windowHeight - 1;
-				this.scrollHeight = windowHeight - 1;
-			},
-			toLoginPage() {
-				let searchLoginType = 'search'
-				uni.navigateTo({
-					url:`/pages/login/login?type=${searchLoginType}`
-				})
-			},
-			selectTabs(index){//选择搜索项
-				this.show = false
-				this.searchKeyType = index
-				switch(index){
-					case 1:
-						this.tabValue='产品'
-						break;
-					case 2:
-						this.tabValue='供应商'
-						break;
-					case 3:
-						this.tabValue='项目仪器'
-						break;
+			})
+			return NewArray
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
 				}
-			},
-			topBubble() {//显隐搜索项
-				this.show = !this.show;
-			},
+			}
+			return false
+		},
+		onShowClose() {
+			//输入框输入时触发
+			this.inputEmpty(this.listQuery.keyword)
+		},
+		onFocus() {
+			//输入框获取焦点时触发
+			this.inputEmpty(this.listQuery.keyword)
+			this.initGetSerachRecord()
+		},
+		delInputText() {
+			//清除输入框内容
+			this.listQuery.keyword = ''
+			this.isShowClose = false
+			this.isShowWrapper = false
+			this.inputEmpty(this.listQuery.keyword)
+			this.initGetSerachRecord()
+		},
+		keywordsClick(item) {
+			//关键词搜索与历史搜索
+			this.listQuery.keyword = item
+			this.isShowClose = true
+			this.isFocus = false
+			this.subMitSearch()
+		},
+		keywordsClickPath(item) {
+			this.$api.FlooryNavigateTo(item)
+		},
+		confirmDetele() {
+			//清空历史记录
+			this.$util.modal('提示', '确定删除历史记录?', '确定', '取消', true, () => {
+				this.ProductService.GetDeleteProductSearchHistory({ userId: this.userId })
+					.then(response => {
+						this.$util.msg('删除成功', 2000, true, 'success')
+						this.serachRecordList = []
+					})
+					.catch(error => {
+						this.$util.msg(error.msg, 2000)
+					})
+			})
+		},
+		inputEmpty(val) {
+			this.isShowWrapper = false
+			if (val != '') {
+				this.isShowClose = true
+				this.isFocus = true
+			} else {
+				this.isShowClose = false
+				this.isFocus = true
+			}
+		},
+		isInterceptHtmlFn(text) {
+			let name = this.$reg.interceptHtmlFn(text)
+			return name
 		},
-		onShareAppMessage(res){//分享转发
-			if (res.from === 'button') {
-		      // 来自页面内转发按钮
-		    }
-			return {
-			  title: `点击查看“${this.listQuery.keyword}”相关的商品`,
-			  path: `pages/search/search?type=share&keyWord=${this.listQuery.keyword}`
+		navToDetailPage(id) {
+			this.isModallayer = true
+			this.$api.navigateTo(`/pages/goods/product?id=${id}`)
+			this.isModallayer = false
+		},
+		setScrollHeight() {
+			const { windowHeight, pixelRatio } = wx.getSystemInfoSync()
+			this.windowHeight = windowHeight - 1
+			this.scrollHeight = windowHeight - 1
+		},
+		toLoginPage() {
+			let searchLoginType = 'search'
+			uni.navigateTo({
+				url: `/pages/login/login?type=${searchLoginType}`
+			})
+		},
+		selectTabs(index) {
+			//选择搜索项
+			this.show = false
+			this.searchKeyType = index
+			switch (index) {
+				case 1:
+					this.tabValue = '产品'
+					break
+				case 2:
+					this.tabValue = '供应商'
+					break
+				case 3:
+					this.tabValue = '项目仪器'
+					break
 			}
 		},
-		onShow() {
-			this.setScrollHeight();
-			this.GetHomeHotSearchTerms()
+		topBubble() {
+			//显隐搜索项
+			this.show = !this.show
+		}
+	},
+	onShareAppMessage(res) {
+		//分享转发
+		if (res.from === 'button') {
+			// 来自页面内转发按钮
 		}
+		return {
+			title: `点击查看“${this.listQuery.keyword}”相关的商品`,
+			path: `pages/search/search?type=share&keyWord=${this.listQuery.keyword}`
+		}
+	},
+	onShow() {
+		this.setScrollHeight()
+		this.GetHomeHotSearchTerms()
 	}
+}
 </script>
 
 <style lang="scss">
-	@import "@/uni.scss";
-	page{
-		background-color: #F7F7F7 !important;
+@import '@/uni.scss';
+page {
+	background-color: #f7f7f7 !important;
+}
+.search-main {
+	width: 100%;
+	height: 88rpx;
+	position: fixed;
+	top: 0;
+	left: 0;
+	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;
+		}
 	}
-	.search-main{
-		width: 100%;
-		height: 88rpx;
-		position: fixed;
-		top: 0;
-		left: 0;
-		background: #FFFFFF;
-		z-index: 1001;
+	.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;
 		box-sizing: border-box;
-		padding: 9rpx 0;
-		.search-tab{
-			width: 160rpx;
+		.icon-sousuo {
+			width: 70rpx;
 			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;
-			}
+			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;
 		}
-		.gosearch-btn{
-			width: 470rpx;
+		.input {
+			width: 400rpx;
 			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;
-			box-sizing: border-box;
-			.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;
+			box-sizing: border-box;
+			padding-right: 66rpx;
 		}
 	}
-	.search-container{
-		padding-top: 96rpx;
+	.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;
+}
+.s-block {
+	background: #ffffff;
+	&.hot {
+		border-top: 20rpx solid #f7f7f7;
 	}
-	.s-block{
-		background: #FFFFFF;
-		&.hot{
-			border-top: 20rpx solid #F7F7F7;
+	.header {
+		font-size: 32rpx;
+		padding: 40rpx 24rpx 22rpx 24rpx;
+		line-height: 42rpx;
+		font-size: 30rpx;
+		font-weight: bold;
+		position: relative;
+		width: 100%;
+		float: left;
+		box-sizing: border-box;
+		.icon-shanchu {
+			font-size: 36rpx;
+			color: #333333;
+			float: right;
+			padding: 0 10rpx;
+			z-index: 10;
+			font-weight: normal;
 		}
-		.header{
-			font-size: 32rpx;
-			padding:40rpx 24rpx 22rpx 24rpx;
-			line-height: 42rpx;
-			font-size: 30rpx;
-			font-weight: bold;
-			position: relative;
+	}
+	.list {
+		width: 100%;
+		height: auot;
+		float: left;
+		padding: 0 24rpx 30rpx 24rpx;
+		box-sizing: border-box;
+		.list-title {
 			width: 100%;
-			float: left;
-			box-sizing: border-box;
-			.icon-shanchu{
-				font-size: 36rpx;
-				color: #333333;
-				float: right;
-				padding: 0 10rpx;
-				z-index: 10;
-				font-weight: normal;
-			}
+			height: 40rpx;
+			font-size: $font-size-26;
+			color: #333;
 		}
-		.list{
+		.list-main {
 			width: 100%;
-			height: auot;
 			float: left;
-			padding: 0 24rpx 30rpx 24rpx;
-			box-sizing: border-box;
-			.list-title{
-				width: 100%;
-				height: 40rpx;
-				font-size: $font-size-26;
-				color: #333;
-			}
-			.list-main{
-				width: 100%;
-				float: left;
-				display: flex;
-				flex-wrap: wrap;
-				view{
-					color: #8A8A8A;
-					font-size: 24rpx;
-					box-sizing: border-box;
-					text-align: center;
-					height: 48rpx;
-					line-height: 48rpx;
-					border-radius: 24rpx;
-					margin:12rpx 12rpx 12rpx 0;
-					padding:.0 20rpx;
-					white-space: nowrap;
-					text-overflow: ellipsis;
-					background-color: #F3F3F3;
-					.iconfont{
-						font-size: $font-size-30;
-						color: #e15616;
-						margin-left: 12rpx;
-					}
-					&.list-active{
-						background-color: #fef6f3;
-						color: #e15616;
-					}
-				}
-			}
-		}
-	}
-	.s-circle{
-		margin-top: 30rpx;
-		.header{
-			font-size: 32rpx;
-			padding: 30rpx;
-			border-bottom: 2rpx solid #F9F9F9;
-			position: relative;
-			image{
-				width: 36rpx;
-				height: 36rpx;
-				padding: 10rpx;
-				position: absolute;
-				right: 40rpx;
-				top: 24rpx;
-			}
-		}
-		.list{
 			display: flex;
 			flex-wrap: wrap;
-			padding: 0 30rpx 20rpx;
-			view{
-				padding: 8rpx 30rpx;
-				margin: 20rpx 30rpx 0 0;
-				font-size: 28rpx;
-				color: #8A8A8A;
-				background-color: #F7F7F7;
+			view {
+				color: #8a8a8a;
+				font-size: 24rpx;
 				box-sizing: border-box;
 				text-align: center;
-				border-radius: 20rpx;
-			}
-		}
-	}
-	.wanted-block{
-		margin-top: 30rpx;
-		.header{
-			font-size: 32rpx;
-			padding: 30rpx;
-		}
-		.list{
-			display: flex;
-			flex-wrap: wrap;
-			view{
-				width: 50%;
-				color: #8A8A8A;
-				font-size: 28rpx;
-				box-sizing: border-box;
-				text-align: center;
-				padding: 20rpx 0;
-				border-top: 2rpx solid #FFF;
-				border-left: 2rpx solid #FFF;
-				background-color: #F7F7F7;
-				overflow: hidden;
+				height: 48rpx;
+				line-height: 48rpx;
+				border-radius: 24rpx;
+				margin: 12rpx 12rpx 12rpx 0;
+				padding: 0 20rpx;
 				white-space: nowrap;
 				text-overflow: ellipsis;
+				background-color: #f3f3f3;
+				.iconfont {
+					font-size: $font-size-30;
+					color: #e15616;
+					margin-left: 12rpx;
+				}
+				&.list-active {
+					background-color: #fef6f3;
+					color: #e15616;
+				}
 			}
 		}
 	}
-	.wanted-circle{
-		margin-top: 30rpx;
-		.header{
-			font-size: 32rpx;
-			padding: 30rpx;
-		}
-		.list{
-			display: flex;
-			flex-wrap: wrap;
-			padding: 0 30rpx 20rpx;
-			view{
-				padding: 8rpx 30rpx;
-				margin: 20rpx 30rpx 0 0;
-				font-size: 28rpx;
-				color: #8A8A8A;
-				background-color: #F7F7F7;
-				box-sizing: border-box;
-				text-align: center;
-				border-radius: 20rpx;
-			}
+}
+.s-circle {
+	margin-top: 30rpx;
+	.header {
+		font-size: 32rpx;
+		padding: 30rpx;
+		border-bottom: 2rpx solid #f9f9f9;
+		position: relative;
+		image {
+			width: 36rpx;
+			height: 36rpx;
+			padding: 10rpx;
+			position: absolute;
+			right: 40rpx;
+			top: 24rpx;
 		}
 	}
-	.commodity-list-wrapper {
-		scroll-view {
-			height: 100%;
-			overflow: scroll;
-		}	
-		.empty-container-image {
-			margin-top: -300rpx;
-		}
-		.toIndexPage {
-			bottom: 390rpx;
-		}
-		.show-more-btn {
-			width: 276rpx;
-			height: 52rpx;
-			line-height: 52rpx;
-			border: 2rpx solid #D8D8D8;
-			background: #F7F7F7;
-			font-size: 26rpx;
-			margin: 26rpx 0;
-			position: absolute;
-			left: 50%;
-			margin-left: -138rpx;
+	.list {
+		display: flex;
+		flex-wrap: wrap;
+		padding: 0 30rpx 20rpx;
+		view {
+			padding: 8rpx 30rpx;
+			margin: 20rpx 30rpx 0 0;
+			font-size: 28rpx;
+			color: #8a8a8a;
+			background-color: #f7f7f7;
+			box-sizing: border-box;
+			text-align: center;
+			border-radius: 20rpx;
 		}
 	}
-	.all-type-list-content {
-		height: 216rpx;
-		padding: 24rpx;
-		background: #fff;
-		margin-bottom: 2rpx;
+}
+.wanted-block {
+	margin-top: 30rpx;
+	.header {
+		font-size: 32rpx;
+		padding: 30rpx;
+	}
+	.list {
 		display: flex;
-		flex-direction: row;
-		box-sizing: content-box;
-		.list-img {
-			width: 210rpx;
-			height: 218rpx !important;
-			margin-right: 26rpx;
-			border-radius: 10rpx;
-			border: 2rpx solid #f3f3f3;
+		flex-wrap: wrap;
+		view {
+			width: 50%;
+			color: #8a8a8a;
+			font-size: 28rpx;
+			box-sizing: border-box;
+			text-align: center;
+			padding: 20rpx 0;
+			border-top: 2rpx solid #fff;
+			border-left: 2rpx solid #fff;
+			background-color: #f7f7f7;
+			overflow: hidden;
+			white-space: nowrap;
+			text-overflow: ellipsis;
 		}
 	}
-	.list-details-info {
-		width: 466rpx;
+}
+.wanted-circle {
+	margin-top: 30rpx;
+	.header {
+		font-size: 32rpx;
+		padding: 30rpx;
+	}
+	.list {
 		display: flex;
-		flex-direction: column;
+		flex-wrap: wrap;
+		padding: 0 30rpx 20rpx;
+		view {
+			padding: 8rpx 30rpx;
+			margin: 20rpx 30rpx 0 0;
+			font-size: 28rpx;
+			color: #8a8a8a;
+			background-color: #f7f7f7;
+			box-sizing: border-box;
+			text-align: center;
+			border-radius: 20rpx;
+		}
+	}
+}
+.commodity-list-wrapper {
+	scroll-view {
+		height: 100%;
+		overflow: scroll;
+	}
+	.empty-container-image {
+		margin-top: -300rpx;
+	}
+	.toIndexPage {
+		bottom: 390rpx;
+	}
+	.show-more-btn {
+		width: 276rpx;
+		height: 52rpx;
+		line-height: 52rpx;
+		border: 2rpx solid #d8d8d8;
+		background: #f7f7f7;
 		font-size: 26rpx;
+		margin: 26rpx 0;
+		position: absolute;
+		left: 50%;
+		margin-left: -138rpx;
+	}
+}
+.all-type-list-content {
+	height: 216rpx;
+	padding: 24rpx;
+	background: #fff;
+	margin-bottom: 2rpx;
+	display: flex;
+	flex-direction: row;
+	box-sizing: content-box;
+	.list-img {
+		width: 210rpx;
+		height: 218rpx !important;
+		margin-right: 26rpx;
+		border-radius: 10rpx;
+		border: 2rpx solid #f3f3f3;
+	}
+}
+.list-details-info {
+	width: 466rpx;
+	display: flex;
+	flex-direction: column;
+	font-size: 26rpx;
+	position: relative;
+	.list-details-title {
 		position: relative;
-		.list-details-title {
-			position: relative;
-			.mclap{
-				line-height: 38rpx;
-				text-overflow: ellipsis;
-				overflow: hidden;
-				display: -webkit-box;
-				-webkit-line-clamp: 2;
-				line-clamp: 2;
-				-webkit-box-orient: vertical;
-				&.indent{
-					text-indent: 95rpx;
-				}
-			}
-			.mclap-tag{
-				display: block;
-				width: 84rpx;
-				height: 32rpx;
-				background-image: linear-gradient(270deg, #f9c023 0%, #f83600 100%);
-				border-radius: 4rpx 48rpx 4px 4px;
-				line-height: 32rpx;
-				font-size: $font-size-22;
-				color: #FFFFFF;
-				text-align: center;
-				position: absolute;
-				left: 0;
-				top: 0;
+		.mclap {
+			line-height: 38rpx;
+			text-overflow: ellipsis;
+			overflow: hidden;
+			display: -webkit-box;
+			-webkit-line-clamp: 2;
+			line-clamp: 2;
+			-webkit-box-orient: vertical;
+			&.indent {
+				text-indent: 95rpx;
 			}
 		}
-		.list-details-specs {
-			margin-top: 8rpx;
-			color: #666666;
-		}
-		.list-details-miniQuantity {
-			margin-top: 7rpx;
+		.mclap-tag {
+			display: block;
+			width: 84rpx;
+			height: 32rpx;
+			background-image: linear-gradient(270deg, #f9c023 0%, #f83600 100%);
+			border-radius: 4rpx 48rpx 4px 4px;
+			line-height: 32rpx;
+			font-size: $font-size-22;
+			color: #ffffff;
+			text-align: center;
+			position: absolute;
+			left: 0;
+			top: 0;
 		}
 	}
-	.list-details-price {
-		width: 100%;
+	.list-details-specs {
+		margin-top: 8rpx;
+		color: #666666;
+	}
+	.list-details-miniQuantity {
+		margin-top: 7rpx;
+	}
+}
+.list-details-price {
+	width: 100%;
+	height: 54rpx;
+	line-height: 54rpx;
+	position: absolute;
+	bottom: -10rpx;
+	right: 0;
+	.floor-item-act {
 		height: 54rpx;
-		line-height: 54rpx;
-		position: absolute;
-		bottom: -10rpx;
-		right: 0;
-		.floor-item-act{
-			height: 54rpx;
-			text-align: center;
+		text-align: center;
+		box-sizing: border-box;
+		float: right;
+		padding: 11rpx 0;
+		.coupon-tags {
+			height: 32rpx;
 			box-sizing: border-box;
-			float: right;
-			padding: 11rpx 0;
-			.coupon-tags{
-				height: 32rpx;
-				box-sizing: border-box;
-				border-radius: 8rpx;
-				background-color: #fff1eb;
-				line-height: 28rpx;
-				color: #f94b4b;
-				text-align: center;
-				display: inline-block;
-				padding:0 10rpx;
-				font-size: $font-size-20;
-				border: 1px solid #f94b4b;
-				float: left;
-				margin-right: 12rpx;
-			}
-			.floor-tags{
-				height: 32rpx;
-				box-sizing: border-box;
-				border-radius: 8rpx;
-				background-color: #FFFFFF;
-				line-height: 28rpx;
-				color: $color-system;
-				text-align: center;
-				display: inline-block;
-				padding:0 16rpx;
-				font-size: $font-size-20;
-				border: 1px solid #E15616;
-				float: left;
-			}
-		}
-		.price-icon {
-			width: 22rpx;
-			height: 28rpx;
-			vertical-align: middle;
-			margin-right: 10rpx;
+			border-radius: 8rpx;
+			background-color: #fff1eb;
+			line-height: 28rpx;
+			color: #f94b4b;
+			text-align: center;
+			display: inline-block;
+			padding: 0 10rpx;
+			font-size: $font-size-20;
+			border: 1px solid #f94b4b;
+			float: left;
+			margin-right: 12rpx;
 		}
-		.price-icon + text {
-			font-size: 25rpx;
-			vertical-align: middle;
+		.floor-tags {
+			height: 32rpx;
+			box-sizing: border-box;
+			border-radius: 8rpx;
+			background-color: #ffffff;
+			line-height: 28rpx;
+			color: $color-system;
+			text-align: center;
+			display: inline-block;
+			padding: 0 16rpx;
+			font-size: $font-size-20;
+			border: 1px solid #e15616;
+			float: left;
 		}
-		.list-login-now {
-			color: #F8C499;
+	}
+	.price-icon {
+		width: 22rpx;
+		height: 28rpx;
+		vertical-align: middle;
+		margin-right: 10rpx;
+	}
+	.price-icon + text {
+		font-size: 25rpx;
+		vertical-align: middle;
+	}
+	.list-login-now {
+		color: #f8c499;
+		float: left;
+		line-height: 54rpx;
+		.p-no {
 			float: left;
-			line-height: 54rpx;
-			.p-no{
-				float: left;
+			font-size: $font-size-24;
+			color: $text-color;
+		}
+	}
+	.login-now {
+		padding: 10rpx 10rpx 10rpx 0;
+	}
+	.list-price {
+		color: #ff2a2a;
+		height: 44rpx;
+		float: left;
+		.price-larger {
+			width: 100%;
+			font-size: 32rpx;
+			&.none {
+				text-decoration: line-through;
+				color: #999999;
+			}
+			&.small {
 				font-size: $font-size-24;
-				color: $text-color;
 			}
-		}
-		.login-now {
-			padding: 10rpx 10rpx 10rpx 0;
-		}
-		.list-price {
-			color: #FF2A2A;
-			height: 44rpx;
-			float: left;
-			.price-larger {
-				width: 100%;
-				font-size: 32rpx;
-				&.none{
-					text-decoration: line-through;
-					color: #999999;
-				}
-				&.small{
-					font-size: $font-size-24;
-				}
-				.txt{
-					font-size: $font-size-24;
-					display: inline-block;
-					line-height: 44rpx;
-					text-align: left;
-					float: left;
-				}
+			.txt {
+				font-size: $font-size-24;
+				display: inline-block;
+				line-height: 44rpx;
+				text-align: left;
+				float: left;
 			}
 		}
 	}
+}
 </style>

+ 398 - 432
pages/seller/remarks/add.vue

@@ -1,491 +1,457 @@
 <template>
-	<view class="container qualifications" :style="{paddingBottom :isIphoneX ? (218+68)+'rpx' : '218rpx'}">
-		<view class="qualifications-title">
-			若发货商品内存在仪器类商品,建议填写下列商品信息。
-		</view>
-		<view class="qualifications-content">
-			<view class="list" v-for="(item,index) in qualificationsList" :key="index">
-				<view class="list-view-title">
-					<view class="title-left">商品{{ index+1 }}</view>
-					<view class="title-right" v-if="(index+1) > 1" @click="deleteLogistItemFn(item,index)">
-						删除商品
-					</view>
-				</view>
-				<view class="list-view">
-					<view class="list-view-label">商品</view>
-					<view class="list-view-text">
-						<picker @change="bindPickerChange(item,$event)" :value="index" :range="productActions" range-key="name">
-							<input class="input" type="text" v-model="item.productName" placeholder="请选择商品" disabled="true">
-							<text class="iconfont icon-xiayibu"></text>
-						</picker>
-					</view>
-				</view>
-				<view class="list-view">
-					<view class="list-view-label">SN码</view>
-					<view class="list-view-text">
-						<input class="input" type="text" v-model="item.sn" placeholder="请输入商品SN码" @blur="hanldSnCodeChecked">
-					</view>
+	<view class="container qualifications" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0' }">
+		<view class="remarks-content">
+			<view class="list-view-title">
+				<view class="list-view-h1"><text>*</text>文字备注</view>
+			</view>
+			<view class="remarks-textarea">
+				<textarea
+					class="textarea"
+					v-model="remarksParams.note"
+					value=""
+					placeholder="文字备注,500字以内"
+					maxlength="500"
+					@input="conInput"
+				/>
+				<text class="limit-text">{{ min }}/{{ max }}</text>
+			</view>
+			<view class="list-view-title">
+				<view class="list-view-h1">上传图片</view>
+				<view class="list-view-p">(可上传与客户的聊天截图或其他重要图片资料,最多10张)</view>
+			</view>
+			<view class="list-view-upload clearfix">
+				<view class="photo-item" v-for="(image, imageIndex) in remarksParams.imageList" :key="imageIndex">
+					<image
+						:src="image"
+						mode="aspectFill"
+						@click.stop="previewImg(remarksParams.imageList, imageIndex)"
+					></image>
+					<text
+						class="iconfont icon-iconfontguanbi"
+						@click.stop="deletePhotoFn(remarksParams.imageList, imageIndex)"
+					></text>
 				</view>
-				<view class="list-view" v-for="(file,fileIndex) in item.fileList" :key="fileIndex">
-					<view class="list-view-label">资质文件</view>
-					<view class="list-view-text">
-						<view class="input">{{ file.fileName }}</view>
-						<text class="iconfont icon-iconfontguanbi" @click.stop="deleteFileFn(item.fileList,index)"></text>
-					</view>
-				</view>	
-				<view class="list-view" >
-					<view class="list-view-label">资质文件</view>
-					<view class="list-view-text">
-						<view class="list-view-file" @click="uploadFile(item.fileList)">上传</view>
-					</view>
-				</view>	
-				<view class="list-view-title none">图片<text class="none">(若不方便上传文件,可用图片代替)</text></view>
-				<view class="list-view-upload clearfix">
-					<view class="photo-item" v-for="(image, imageIndex) in item.imageList" :key="index">
-						<image :src="image" mode="aspectFill" @click.stop="previewImg(item.imageList,imageIndex)"></image>
-						<text class="iconfont icon-iconfontguanbi" @click.stop="deletePhotoFn(item.imageList,imageIndex)"></text>
-					</view>
-					<view class="photo-item add" @click.stop="uploadPhotoFn(item.imageList)" v-if="item.imageList.length<10 || item.imageList.length == 0">
-						<text class="iconfont icon-jiahao"></text>
-					</view>
+				<view
+					class="photo-item add"
+					@click.stop="uploadPhotoFn(remarksParams.imageList)"
+					v-if="remarksParams.imageList.length < 10 || remarksParams.imageList.length == 0"
+				>
+					<text class="iconfont icon-jiahao"></text>
 				</view>
 			</view>
-			<view class="list-btn" v-if="qualificationsList.length < productActions.length">
-				<view class="btn add-btn" @click="addListFn">
-					<text class="iconfont icon-jiahao"></text>
-					<text>添加商品</text>
+			<view class="list-view-title">
+				<view class="list-view-h1">上传文件</view>
+				<view class="list-view-p">(可上传与客户相关的文件资料,最多10份,支持word,excel,ppt和pdf格式文件)</view>
+			</view>
+			<view class="list-view" v-for="(file, fileIndex) in remarksParams.fileList" :key="fileIndex">
+				<view class="list-view-text">
+					<view class="input">{{ file.fileName }}</view>
+					<view class="delbtn" @click.stop="deleteFileFn(item.fileList, index)">删除</view>
 				</view>
 			</view>
+			<view class="list-view">
+				<view class="list-view-file" @click="uploadFile(remarksParams.fileList)">选择文件</view>
+			</view>
 		</view>
-		<view class="qualifications-btn" :style="{paddingBottom :isIphoneX ? '68rpx' : '0'}">
-			<view class="edit-button-canel" @click="editButtonCanel">暂不填写</view>
+		<view class="remarks-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0' }">
 			<view class="edit-button" @click="editButtonConfim">确定</view>
 		</view>
 	</view>
 </template>
 
 <script>
-	import { mapState,mapMutations } from 'vuex'
-	import authorize from '@/common/config/authorize.js' 
-	import { uploadFileImage , uploadFilePdfDocDocx } from "@/services/public.js"
-	
-	var isPreviewImg;
-	export default{
-		data() {
-			return{
-				isIphoneX:this.$store.state.isIphoneX,
-				shopOrderId:0,
-				logisticsBatchId:0,
-				productActions:[],
-				qualificationsList:[
-					{
-						productName:'',
-						recordId:'',
-						sn:'',
-						fileList:[],
-						imageList:[]
-					}
-				]
-			}
-		},
-		onLoad(option) {
-			console.log(option)
-			if(option.type == 'add'){
-				this.logisticsBatchId = option.logisticsBatchId
-				this.shopOrderId = option.shopOrderId
-				this.GetSupplierLogisticsRecord()
-			}else{
-				this.logisticsBatchId = option.logisticsBatchId
-				this.shopOrderId = option.shopOrderId
-				this.GetSupplierLogisticsRecord()
-				this.GetSupplierQualificationData()
-			}
-		},
-		methods:{
-			...mapMutations(['login']),
-			GetSupplierQualificationData(){//编辑回显商品资质信息
-				this.ShopService.GetSupplierQualificationData(
-					{ 
-						logisticsBatchId : this.logisticsBatchId ,
-					}
-				)
-				.then(response =>{
+import { mapState, mapMutations } from 'vuex'
+import authorize from '@/common/config/authorize.js'
+import { uploadFileImage, uploadFilePdfDocDocx } from '@/services/public.js'
+
+var isPreviewImg
+export default {
+	data() {
+		return {
+			isIphoneX: this.$store.state.isIphoneX,
+			shopOrderId: 0,
+			logisticsBatchId: 0,
+			productActions: [],
+			remarksParams: {
+				note: '',
+				fileList: [],
+				imageList: []
+			},
+			min: 0,
+			max: 500
+		}
+	},
+	onLoad(option) {
+		console.log(option)
+		if (option.type == 'add') {
+			this.logisticsBatchId = option.logisticsBatchId
+			this.shopOrderId = option.shopOrderId
+			this.GetSupplierLogisticsRecord()
+		} else {
+			this.logisticsBatchId = option.logisticsBatchId
+			this.shopOrderId = option.shopOrderId
+			this.GetSupplierLogisticsRecord()
+			this.GetSupplierQualificationData()
+		}
+	},
+	methods: {
+		...mapMutations(['login']),
+		GetSupplierQualificationData() {
+			//编辑回显商品资质信息
+			this.ShopService.GetSupplierQualificationData({
+				logisticsBatchId: this.logisticsBatchId
+			})
+				.then(response => {
 					const data = response.data
-					if(data && data.length > 0){
+					if (data && data.length > 0) {
 						this.qualificationsList = data
 						this.isEmpty = false
-					}else{
+					} else {
 						this.isEmpty = true
 					}
 				})
-				.catch(error =>{
-					this.$util.msg(error.msg,2000);
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
 				})
-			},
-			GetSupplierLogisticsRecord(){//添加商品资质初始化查询商品信息
-				this.ShopService.GetSupplierLogisticsRecord(
-					{ 
-						logisticsBatchId : this.logisticsBatchId
-					}
-				)
-				.then(response =>{
+		},
+		GetSupplierLogisticsRecord() {
+			//添加商品资质初始化查询商品信息
+			this.ShopService.GetSupplierLogisticsRecord({
+				logisticsBatchId: this.logisticsBatchId
+			})
+				.then(response => {
 					const data = response.data
-					data.forEach((el,index) => {
+					data.forEach((el, index) => {
 						let obj = {
-								value : el.id,
-								name : el.productName
+							value: el.id,
+							name: el.productName
 						}
 						this.productActions.push(obj)
 					})
 				})
-				.catch(error =>{
-					this.$util.msg(error.msg,2000);
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
 				})
-			},
-			editButtonConfim(){//确定
-				// 校验物流公司不能为空
-				let isRecordId = false
-				let isSnCode = false
-				let isFileList = false
-				let isImageList = false
-				let params = [];//参数
-				this.qualificationsList.forEach((el,index) => {
-					if(el.recordId == ''){ isRecordId = true }
-					if(el.sn == ''){ isSnCode = true }
-					if(el.fileList == ''){ isFileList = true }
-					if(el.imageList == ''){ isImageList = true }
-					let paramsObject = {
-							recordId : el.recordId,
-							sn : el.sn,
-							files : el.fileList,
-							images : el.imageList
-						}
-					params.push(paramsObject)	
-				})
-				if(isRecordId){
-					this.$util.msg('请选择商品',2000);
-					return
+		},
+		editButtonConfim() {
+			//确定
+			// 校验物流公司不能为空
+			let isRecordId = false
+			let isSnCode = false
+			let isFileList = false
+			let isImageList = false
+			let params = [] //参数
+			this.qualificationsList.forEach((el, index) => {
+				if (el.recordId == '') {
+					isRecordId = true
 				}
-				if(isSnCode){
-					this.$util.msg('请输入商品SN码',2000);
-					return
+				if (el.sn == '') {
+					isSnCode = true
 				}
-				if(isFileList && isImageList){
-					this.$util.msg('请上传商品资质文件',2000);
-					return
+				if (el.fileList == '') {
+					isFileList = true
 				}
-				console.log('params========>',params)
-				this.ShopService.GetSupplierQualificationUpdata(
-					{
-						params:JSON.stringify(params)
-					}
-				)
-				.then(response =>{
-					this.$util.msg('保存成功',3000,true,'success')
-					setTimeout(()=>{
+				if (el.imageList == '') {
+					isImageList = true
+				}
+				let paramsObject = {
+					recordId: el.recordId,
+					sn: el.sn,
+					files: el.fileList,
+					images: el.imageList
+				}
+				params.push(paramsObject)
+			})
+			if (isRecordId) {
+				this.$util.msg('请选择商品', 2000)
+				return
+			}
+			if (isSnCode) {
+				this.$util.msg('请输入商品SN码', 2000)
+				return
+			}
+			if (isFileList && isImageList) {
+				this.$util.msg('请上传商品资质文件', 2000)
+				return
+			}
+			console.log('params========>', params)
+			this.ShopService.GetSupplierQualificationUpdata({
+				params: JSON.stringify(params)
+			})
+				.then(response => {
+					this.$util.msg('保存成功', 3000, true, 'success')
+					setTimeout(() => {
 						this.$api.navigateTo(`/pages/supplier/deliver/deliver-record?shopOrderId=${this.shopOrderId}`)
-					},2000)
-				})
-				.catch(error =>{
-					this.$util.msg(error.msg,2000);
-				})
-			},
-			bindPickerChange: function(item,e) {//选择筛选条件
-				item.recordId =  this.productActions[e.target.value].value
-				item.productName = this.productActions[e.target.value].name
-			},
-			addListFn(){//添加
-				let obj ={
-						productName:'',
-						recordId:'',
-						sn:'',
-						fileList:[],
-						imageList:[]
-					};
-				this.qualificationsList.push(obj)
-			},
-			deleteLogistItemFn(item,index){
-				this.$util.modal('提示','确认删除物流信息吗?','确定','取消',true,() =>{
-					this.qualificationsList.splice(index, 1);
+					}, 2000)
 				})
-			},
-			uploadFile(array){//上传资质文件
-				console.log(array)
-				uploadFilePdfDocDocx().then(res =>{
-					let data =  JSON.parse(res.data).data
-					let obj = {
-							fileName:uni.getStorageSync('fileName'),
-							ossName:data.ossName
-						}
-					array.push(obj)
-					console.log('array',array)
-				})
-			},
-			uploadPhotoFn(array){//添加图片
-				uploadFileImage().then(res =>{
-					array.push(JSON.parse(res.data).data)
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
 				})
-			},
-			deleteFileFn(array,index){//删除文件
-				this.UploadService.PostFileDelete(
-					{
-						ossName:array[index].ossName,
-					}
-				)
-				.then(res=>{
-					array.splice(index, 1);
-				})
-				.catch(error =>{
-					console.log('删除文件异常提示===>',error.msg)
+		},
+		bindPickerChange: function(item, e) {
+			//选择筛选条件
+			item.recordId = this.productActions[e.target.value].value
+			item.productName = this.productActions[e.target.value].name
+		},
+		addListFn() {
+			//添加
+			let obj = {
+				productName: '',
+				recordId: '',
+				sn: '',
+				fileList: [],
+				imageList: []
+			}
+			this.qualificationsList.push(obj)
+		},
+		deleteLogistItemFn(item, index) {
+			this.$util.modal('提示', '确认删除物流信息吗?', '确定', '取消', true, () => {
+				this.qualificationsList.splice(index, 1)
+			})
+		},
+		uploadFile(array) {
+			//上传资质文件
+			console.log(array)
+			uploadFilePdfDocDocx().then(res => {
+				let data = JSON.parse(res.data).data
+				let obj = {
+					fileName: uni.getStorageSync('fileName'),
+					ossName: data.ossName
+				}
+				array.push(obj)
+				console.log('array', array)
+			})
+		},
+		uploadPhotoFn(array) {
+			//添加图片
+			uploadFileImage().then(res => {
+				array.push(JSON.parse(res.data).data)
+			})
+		},
+		deleteFileFn(array, index) {
+			//删除文件
+			this.UploadService.PostFileDelete({
+				ossName: array[index].ossName
+			})
+				.then(res => {
+					array.splice(index, 1)
 				})
-				
-			},
-			deletePhotoFn(array,index){//删除图片
-				array.splice(index, 1);
-			},
-			previewImg (image,index) {//顶部商品图片预览
-				isPreviewImg = true
-				let previewUrls = image
-				uni.previewImage({
-					current: index, 	//图片索引
-					urls: previewUrls, //必须是http图片,本地图片无效
-					longPressActions:''
+				.catch(error => {
+					console.log('删除文件异常提示===>', error.msg)
 				})
-			},
-			hanldSnCodeChecked(e){
-				if(!this.$reg.isNoChinese(e.detail.value)){
-					this.$util.msg('SN码格式错误',2000);
-					return
-				}
-			},
-			editButtonCanel(){
-				this.$api.navigateTo(`/pages/supplier/deliver/deliver-record?shopOrderId=${this.shopOrderId}`)
-			},
 		},
-		onShow() {
-			
+		deletePhotoFn(array, index) {
+			//删除图片
+			array.splice(index, 1)
+		},
+		previewImg(image, index) {
+			//顶部商品图片预览
+			isPreviewImg = true
+			let previewUrls = image
+			uni.previewImage({
+				current: index, //图片索引
+				urls: previewUrls, //必须是http图片,本地图片无效
+				longPressActions: ''
+			})
+		},
+		conInput(e) {
+			//备注文字字数限制
+			let value = e.detail.value
+			let len = parseInt(value.length)
+			if (len > this.max) return
+			this.min = len
+			if (this.min == 200) {
+				this.$util.msg('您输入的字数已达上限', 2000)
+			}
 		}
-	}
+	},
+	onShow() {}
+}
 </script>
 
 <style lang="scss">
-	page {
+page {
+	height: auto;
+	background: #ffffff;
+}
+.remarks-content {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	padding:0 24rpx;
+	.list-view-title {
+		width: 100%;
 		height: auto;
-		background:#F7F7F7;
+		margin-bottom: 16rpx;
+		margin-top: 40rpx;
+		.list-view-h1 {
+			line-height: 40rpx;
+			font-size: $font-size-28;
+			color: #333333;
+			text-align: left;
+			text {
+				color: #ff2a2a;
+			}
+		}
+		.list-view-p {
+			line-height: 30rpx;
+			color: #fea785;
+			font-size: $font-size-20;
+		}
 	}
-	.qualifications-title{
+	.remarks-textarea {
 		width: 100%;
-		height: 72rpx;
-		line-height: 72rpx;
-		font-size: $font-size-24;
-		background-image: linear-gradient(270deg, #ffffff 0%, rgba(225,86,22,0.1) 51%, #ffffff 100%);
-		color: $color-system;
-		text-align: center;
+		height: 340rpx;
+		padding: 16rpx;
+		margin: 20rpx 0 0 0 ;
+		border-radius: 6rpx;
+		position: relative;
+		border: 1px solid #b2b2b2;
+		box-sizing: border-box;
+		.textarea {
+			width: 100%;
+			height: 100%;
+			line-height: 36rpx;
+			font-size: $font-size-26;
+			color: $text-color;
+			z-index: 1;
+		}
+		.limit-text {
+			position: absolute;
+			right: 20rpx;
+			bottom: 16rpx;
+			line-height: 44rpx;
+			font-size: $font-size-24;
+			color: #b2b2b2;
+		}
 	}
-	.qualifications-content{
+	.list-view {
 		width: 100%;
 		height: auto;
-		.list{
+		margin-top: 20rpx;
+		.list-view-file {
+			width: 132rpx;
+			height: 44rpx;
+			line-height: 44rpx;
+			font-size: $font-size-20;
+			text-align: center;
+			color: #ffffff;
+			background-color: $color-system;
+			border-radius: 8rpx;
+			float: left;
+			margin-top: 10rpx;
+		}
+		.list-view-text {
 			width: 100%;
-			height: auto;
-			background-color: #FFFFFF;
-			box-sizing: border-box;
-			margin-bottom: 20rpx;
-			padding: 0 24rpx;
-			.list-view-title{
-				width: 100%;
-				height: 92rpx;
-				border-bottom: 1px solid #E1E1E1;
-				line-height: 92rpx;
-				font-size: $font-size-30;
+			float: left;
+			.input {
+				width: 560rpx;
+				height: 44rpx;
+				box-sizing: border-box;
+				line-height: 44rpx;
 				color: #333333;
-				text-align: left;
-				.title-left{
-					float: left;
-				}
-				.title-right{
-					float: right;
-					color: $color-system;
-					font-size: $font-size-24;
-				}
-				&.none{
-					border-bottom: none;
-				}
-				.none{
-					color: #666666;
-				}
+				text-overflow: ellipsis;
+				overflow: hidden;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
+				float: left;
 			}
-			.list-view{
-				width: 100%;
-				height: 92rpx;
-				border-bottom: 1px solid #E1E1E1;
-				line-height: 92rpx;
-				font-size: $font-size-30;
-				.list-view-label{
-					width: 192rpx;
-					color: #666666;
-					float: left;
-				}
-				.list-view-text{
-					width: 510rpx;
-					float: right;
-					position: relative;
-					.input{
-						width: 510rpx;
-						height: 92rpx;
-						box-sizing: border-box;
-						line-height: 92rpx;
-						color: #333333;
-						text-overflow: ellipsis;
-						overflow: hidden;
-						display: -webkit-box;
-						-webkit-line-clamp: 1;
-						line-clamp: 1;
-						-webkit-box-orient: vertical;
-						padding-right: 40rpx;
-					}
-					.icon-xiayibu{
-						width: 40rpx;
-						height: 80rpx;
-						display: block;
-						position: absolute;
-						right: 0;
-						top: 0;
-						font-size: $font-size-32;
-						color: #B2B2B2;
-						text-align: center;
-					}
-					.icon-iconfontguanbi{
-						width: 40rpx;
-						height: 40rpx;
-						border-radius: 50%;
-						background-color: #f94b4b;
-						display: block;
-						position: absolute;
-						right: 0;
-						top: 28rpx;
-						font-size: $font-size-24;
-						color: #FFFFFF;
-						line-height: 40rpx;
-						text-align: center;
-					}
-					.list-view-file{
-						width: 88rpx;
-						height: 44rpx;
-						line-height: 44rpx;
-						font-size: $font-size-20;
-						text-align: center;
-						color: #FFFFFF;
-						background-color: $color-system;
-						border-radius: 4rpx;
-						position: absolute;
-						right: 0;
-						top: 25rpx;
-					}
-				}
+			.delbtn {
+				width:96rpx;
+				height: 44rpx;
+				border-radius: 8rpx;
+				background-color: #FFF2EC;
+				font-size: $font-size-24;
+				color: #E15616;
+				line-height: 44rpx;
+				text-align: center;
+				float: left;
 			}
-			.list-view-upload{
-				width: 100%;
-				height: auto;	
-				padding: 10rpx 0;
-				.photo-item{
-					display: inline-block;
-					width: 112rpx;
-					height: 112rpx;
-					margin: 10rpx 0;
-					margin-right: 25rpx;
-					border-radius: 10rpx;
-					border:1px solid #F5F5F5;
-					position: relative;
-					float: left;
-					&.add{
-						width: 112rpx;
-						height: 112rpx;
-						border-color: #b2b2b2;
-						text-align: center;
-						line-height: 112rpx;
-						margin-right: 0rpx;
-						.icon-jiahao{
-							font-size: $font-size-44;
-							color:#b2b2b2 ;
-							font-weight: bold;
-						}
-					}
-					.icon-iconfontguanbi{
-						width: 30rpx;
-						height: 30rpx;
-						border-radius:50%;
-						display: block;
-						position: absolute;
-						right: -10rpx;
-						top: -10rpx;
-						background: #f94b4b;
-						text-align: center;
-						line-height: 30rpx;
-						color: #FFFFFF;
-						font-size: $font-size-22;
-					}
-					image{
-						width: 112rpx;
-						height: 112rpx;
-						border-radius: 10rpx;
-					}
-				}	
-				.photo-list{
-					width: 100%;
-					height: 116rpx;
-					overflow: hidden;
-					white-space: nowrap;
-					display: flex;
-					align-items: flex-start;
-				}
-				.scoll-wrapper{
-					display:flex;
-					align-items: flex-start;
+		}
+	}
+	.list-view-upload {
+		width: 100%;
+		height: auto;
+		.photo-item {
+			display: inline-block;
+			width: 112rpx;
+			height: 112rpx;
+			margin: 10rpx 0;
+			margin-right: 25rpx;
+			border-radius: 10rpx;
+			border: 1px solid #f5f5f5;
+			position: relative;
+			float: left;
+			&.add {
+				width: 112rpx;
+				height: 112rpx;
+				border-color: #b2b2b2;
+				text-align: center;
+				line-height: 112rpx;
+				margin-right: 0rpx;
+				.icon-jiahao {
+					font-size: $font-size-44;
+					color: #b2b2b2;
+					font-weight: bold;
 				}
 			}
-		}
-		.list-btn{
-			width: 702rpx;
-			height: 56rpx;
-			margin: 0 auto;
-			.btn{
-				width: 236rpx;
-				height: 56rpx;
-				border-radius: 28rpx;
-				border: 1px solid $color-system;
-				line-height: 56rpx;
+			.icon-iconfontguanbi {
+				width: 30rpx;
+				height: 30rpx;
+				border-radius: 50%;
+				display: block;
+				position: absolute;
+				right: -10rpx;
+				top: -10rpx;
+				background: #f94b4b;
 				text-align: center;
-				color: $color-system;
-				margin: 0 auto;
+				line-height: 30rpx;
+				color: #ffffff;
+				font-size: $font-size-22;
+			}
+			image {
+				width: 112rpx;
+				height: 112rpx;
+				border-radius: 10rpx;
 			}
 		}
-	}
-	.qualifications-btn{
-		width: 100%;
-		padding-top: 20rpx;
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		background-color: #FFFFFF;
-		.edit-button-canel{
+		.photo-list {
 			width: 100%;
-			height: 88rpx;
-			line-height: 88rpx;
-			text-align: center;
-			color: #e15616;
-			font-size: $font-size-24;
-		}
-		.edit-button{
-			width: 600rpx;
-			height: 90rpx;
-			background: $btn-confirm;
-			line-height: 90rpx;
-			text-align: center;
-			color: #FFFFFF;
-			font-size: $font-size-30;
-			margin: 0 auto;
-			border-radius: 45rpx;
+			height: 116rpx;
+			overflow: hidden;
+			white-space: nowrap;
+			display: flex;
+			align-items: flex-start;
 		}
 	}
+}
+.remarks-btn {
+	width: 100%;
+	padding-top: 20rpx;
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	background-color: #ffffff;
+	.edit-button-canel {
+		width: 100%;
+		height: 88rpx;
+		line-height: 88rpx;
+		text-align: center;
+		color: #e15616;
+		font-size: $font-size-24;
+	}
+	.edit-button {
+		width: 600rpx;
+		height: 90rpx;
+		background: $btn-confirm;
+		line-height: 90rpx;
+		text-align: center;
+		color: #ffffff;
+		font-size: $font-size-30;
+		margin: 0 auto;
+		border-radius: 45rpx;
+	}
+}
 </style>

+ 312 - 203
pages/seller/remarks/details.vue

@@ -1,241 +1,350 @@
 <template>
-	<view class="container qualifications" :style="{paddingBottom :isIphoneX ? (150+68)+'rpx' : '150rpx'}">
-		<view class="qualifications-content" v-if="!isEmpty">
-			<view class="list" v-for="(item,index) in qualificationsList" :key="index">
-				<view class="list-view-title">商品{{ index+1 }}</view>
-				<view class="list-view">
-					<view class="list-view-label">商品</view>
-					<view class="list-view-text">{{ item.productName }}</view>
+	<view class="container qualifications" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0' }">
+		<view class="remarks-content">
+			<view class="list-view-title"> <view class="list-view-h1">文字备注</view> </view>
+			<view class="remarks-textarea"> {{ remarksParams.note }} </view>
+			<view class="list-view-title"> <view class="list-view-h1">上传图片</view> </view>
+			<view class="list-view-upload clearfix">
+				<view class="photo-item" v-for="(image, imageIndex) in remarksParams.imageList" :key="imageIndex">
+					<image
+						:src="image"
+						mode="aspectFill"
+						@click.stop="previewImg(remarksParams.imageList, imageIndex)"
+					></image>
 				</view>
-				<view class="list-view">
-					<view class="list-view-label">SN码</view>
-					<view class="list-view-text">{{ item.sn }}</view>
-				</view>
-				<view class="list-view" v-for="(file,fileIndex) in item.fileList" :key="fileIndex">
-					<view class="list-view-label">资质文件</view>
-					<view class="list-view-text">{{ file.fileName }}</view>
-				</view>	
-				<view class="list-view-title none">图片</view>
-				<view class="list-view-upload clearfix">
-					<view class="photo-item" v-for="(image, imageIndex) in item.imageList" :key="index">
-						<image :src="image" mode="aspectFill" @click.stop="previewImg(item.imageList,imageIndex)"></image>
-					</view>
-				</view>
-			</view>
-			<view class="qualifications-btn" :style="{paddingBottom :isIphoneX ? '68rpx' : '0'}">
-				<view class="edit-button" @click="editSubmitFn('edit')">编辑</view>
 			</view>
-		</view>
-		<view v-else class="cart-content empty">
-			<view  class="empty-container">
-				<image class="empty-container-image" src="https://static.caimei365.com/app/img/icon/icon-ques-empty@2x.png" mode="aspectFit"></image>
-				<text class="error-text">暂无商品资质信息</text>
-				<view class="login-btn"  @click="editSubmitFn('add')">去补充</view>
+			<view class="list-view-title"> <view class="list-view-h1">上传文件</view> </view>
+			<view class="list-view" v-for="(file, fileIndex) in remarksParams.fileList" :key="fileIndex">
+				<view class="list-view-text">
+					<view class="input">{{ file.name }}</view>
+				</view>
 			</view>
 		</view>
 	</view>
 </template>
 
 <script>
-	import { mapState,mapMutations } from 'vuex'
-	import authorize from '@/common/config/authorize.js' 
-	var isPreviewImg;
-	export default{
-		data() {
-			return{
-				logisticsBatchId:0,
-				shopOrderId:0,
-				isIphoneX:this.$store.state.isIphoneX,
-				isEmpty:false,
-				qualificationsList:[]
-			}
-		},
-		onLoad(option) {
+import { mapState, mapMutations } from 'vuex'
+import authorize from '@/common/config/authorize.js'
+import { uploadFileImage, uploadFilePdfDocDocx } from '@/services/public.js'
+
+var isPreviewImg
+export default {
+	data() {
+		return {
+			isIphoneX: this.$store.state.isIphoneX,
+			shopOrderId: 0,
+			logisticsBatchId: 0,
+			productActions: [],
+			remarksParams: {
+				note:
+					'本期采美网给大家带来重磅消息:中国医美知名上游品牌半岛医疗正式入驻采美啦!!!本期采美网给大家带来重磅消息:中国医美知名上游品牌半岛医疗正式入驻采美啦!!!本期采美网给大家带来重磅消息:中国医美知名上游品牌半岛医疗正式入驻采美啦!!!本期采美网给大家带来重磅消息:中国医美知名上游品牌半岛医疗正式入驻采美啦!!!本期采美网给大家带来重磅消息:中国医美知名上游品牌半岛医疗正式入驻采美啦!!!本期采美网给大家带来重磅消息:中国医美知名上游品牌半岛医疗正式入驻采美啦!!!本期采美网给大家带来重磅消息:中国医美知名上游品牌半岛医疗正式入驻采美啦!!!本期采美网给大家带来重磅消息本期采美网给大家带来重磅消息本期采美网给大家带来重磅消息本期采美网给大家带来重磅消息本期采美网给大家带来重磅消息本期采美网给大家带来重磅消息:中国医美知名上游品牌半岛医疗正式入驻采美啦!!!',
+				fileList: [
+					{
+						name: '任正非:除了胜利,我们已无路可走.pdf',
+					},
+					{
+						name: '任正非:除了胜利,我们已无路可走.pdf',
+					},
+					{
+						name: '任正非:除了胜利,我们已无路可走.pdf',
+					},
+					{
+						name: '任正非:除了胜利,我们已无路可走.pdf',
+					},
+				],
+				imageList: [
+					'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',
+					'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',
+					'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'
+				]
+			},
+			min: 0,
+			max: 500
+		}
+	},
+	onLoad(option) {
+		console.log(option)
+		if (option.type == 'add') {
+			this.logisticsBatchId = option.logisticsBatchId
 			this.shopOrderId = option.shopOrderId
+			this.GetSupplierLogisticsRecord()
+		} else {
 			this.logisticsBatchId = option.logisticsBatchId
-			console.log('shopOrderId',this.shopOrderId)
-			this.GetSupplierQualificationData(option.logisticsBatchId)
-		},
-		methods:{
-			...mapMutations(['login']),
-			GetSupplierQualificationData(logisticsBatchId){
-				this.ShopService.GetSupplierQualificationData(
-					{ 
-						logisticsBatchId : logisticsBatchId ,
-					}
-				)
-				.then(response =>{
+			this.shopOrderId = option.shopOrderId
+			this.GetSupplierLogisticsRecord()
+			this.GetSupplierQualificationData()
+		}
+	},
+	methods: {
+		...mapMutations(['login']),
+		GetSupplierQualificationData() {
+			//编辑回显商品资质信息
+			this.ShopService.GetSupplierQualificationData({
+				logisticsBatchId: this.logisticsBatchId
+			})
+				.then(response => {
 					const data = response.data
-					if(data && data.length > 0){
+					if (data && data.length > 0) {
 						this.qualificationsList = data
 						this.isEmpty = false
-					}else{
+					} else {
 						this.isEmpty = true
 					}
 				})
-				.catch(error =>{
-					this.$util.msg(error.msg,2000);
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
 				})
-			},
-			editSubmitFn(type){
-				switch(type){
-					case 'edit':
-						this.$api.navigateTo(`/pages/supplier/deliver/qualifications-add?type=edit&logisticsBatchId=${this.logisticsBatchId}&shopOrderId=${this.shopOrderId}`)
-						break;
-					case 'add':
-						this.$api.navigateTo(`/pages/supplier/deliver/qualifications-add?type=add&logisticsBatchId=${this.logisticsBatchId}&shopOrderId=${this.shopOrderId}`)
-						break;
+		},
+		GetSupplierLogisticsRecord() {
+			//添加商品资质初始化查询商品信息
+			this.ShopService.GetSupplierLogisticsRecord({
+				logisticsBatchId: this.logisticsBatchId
+			})
+				.then(response => {
+					const data = response.data
+					data.forEach((el, index) => {
+						let obj = {
+							value: el.id,
+							name: el.productName
+						}
+						this.productActions.push(obj)
+					})
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		editButtonConfim() {
+			//确定
+			// 校验物流公司不能为空
+			let isRecordId = false
+			let isSnCode = false
+			let isFileList = false
+			let isImageList = false
+			let params = [] //参数
+			this.qualificationsList.forEach((el, index) => {
+				if (el.recordId == '') {
+					isRecordId = true
 				}
-			},
-			previewImg (Array,index) {//顶部商品图片预览
-				console.log(Array)
-				isPreviewImg = true
-				let previewUrls = Array
-				uni.previewImage({
-					current: index, 	//图片索引
-					urls: previewUrls, //必须是http图片,本地图片无效
-					longPressActions:''
+				if (el.sn == '') {
+					isSnCode = true
+				}
+				if (el.fileList == '') {
+					isFileList = true
+				}
+				if (el.imageList == '') {
+					isImageList = true
+				}
+				let paramsObject = {
+					recordId: el.recordId,
+					sn: el.sn,
+					files: el.fileList,
+					images: el.imageList
+				}
+				params.push(paramsObject)
+			})
+			if (isRecordId) {
+				this.$util.msg('请选择商品', 2000)
+				return
+			}
+			if (isSnCode) {
+				this.$util.msg('请输入商品SN码', 2000)
+				return
+			}
+			if (isFileList && isImageList) {
+				this.$util.msg('请上传商品资质文件', 2000)
+				return
+			}
+			console.log('params========>', params)
+			this.ShopService.GetSupplierQualificationUpdata({
+				params: JSON.stringify(params)
+			})
+				.then(response => {
+					this.$util.msg('保存成功', 3000, true, 'success')
+					setTimeout(() => {
+						this.$api.navigateTo(`/pages/supplier/deliver/deliver-record?shopOrderId=${this.shopOrderId}`)
+					}, 2000)
 				})
-			},
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+				})
+		},
+		bindPickerChange: function(item, e) {
+			//选择筛选条件
+			item.recordId = this.productActions[e.target.value].value
+			item.productName = this.productActions[e.target.value].name
 		},
-		onShow() {
-			
+		addListFn() {
+			//添加
+			let obj = {
+				productName: '',
+				recordId: '',
+				sn: '',
+				fileList: [],
+				imageList: []
+			}
+			this.qualificationsList.push(obj)
+		},
+		deleteLogistItemFn(item, index) {
+			this.$util.modal('提示', '确认删除物流信息吗?', '确定', '取消', true, () => {
+				this.qualificationsList.splice(index, 1)
+			})
+		},
+		uploadFile(array) {
+			//上传资质文件
+			console.log(array)
+			uploadFilePdfDocDocx().then(res => {
+				let data = JSON.parse(res.data).data
+				let obj = {
+					fileName: uni.getStorageSync('fileName'),
+					ossName: data.ossName
+				}
+				array.push(obj)
+				console.log('array', array)
+			})
+		},
+		uploadPhotoFn(array) {
+			//添加图片
+			uploadFileImage().then(res => {
+				array.push(JSON.parse(res.data).data)
+			})
+		},
+		deleteFileFn(array, index) {
+			//删除文件
+			this.UploadService.PostFileDelete({
+				ossName: array[index].ossName
+			})
+				.then(res => {
+					array.splice(index, 1)
+				})
+				.catch(error => {
+					console.log('删除文件异常提示===>', error.msg)
+				})
+		},
+		deletePhotoFn(array, index) {
+			//删除图片
+			array.splice(index, 1)
+		},
+		previewImg(image, index) {
+			//顶部商品图片预览
+			isPreviewImg = true
+			let previewUrls = image
+			uni.previewImage({
+				current: index, //图片索引
+				urls: previewUrls, //必须是http图片,本地图片无效
+				longPressActions: ''
+			})
+		},
+		conInput(e) {
+			//备注文字字数限制
+			let value = e.detail.value
+			let len = parseInt(value.length)
+			if (len > this.max) return
+			this.min = len
+			if (this.min == 200) {
+				this.$util.msg('您输入的字数已达上限', 2000)
+			}
 		}
-	}
+	},
+	onShow() {}
+}
 </script>
 
 <style lang="scss">
-	page {
+page {
+	height: auto;
+	background: #ffffff;
+}
+.remarks-content {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	padding: 0 24rpx;
+	.list-view-title {
+		width: 100%;
 		height: auto;
-		background:#F7F7F7;
+		margin-bottom: 16rpx;
+		margin-top: 40rpx;
+		.list-view-h1 {
+			line-height: 40rpx;
+			font-size: $font-size-28;
+			color: #333333;
+			text-align: left;
+		}
+	}
+	.remarks-textarea {
+		width: 100%;
+		height: 340rpx;
+		padding: 16rpx;
+		margin: 20rpx 0 0 0;
+		border-radius: 6rpx;
+		position: relative;
+		border: 1px solid #b2b2b2;
+		box-sizing: border-box;
+		overflow-y: scroll;
+		line-height: 38rpx;
+		font-size: $font-size-26;
+		color: #333333;
 	}
-	.qualifications-content{
+	.list-view {
 		width: 100%;
 		height: auto;
-		.list{
+		margin-top: 20rpx;
+		.list-view-text {
 			width: 100%;
-			height: auto;
-			background-color: #FFFFFF;
-			box-sizing: border-box;
-			margin-bottom: 20rpx;
-			padding: 0 24rpx;
-			.list-view-title{
-				width: 100%;
-				height: 92rpx;
-				border-bottom: 1px solid #E1E1E1;
-				line-height: 92rpx;
-				font-size: $font-size-30;
+			float: left;
+			.input {
+				width: 560rpx;
+				height: 50rpx;
+				box-sizing: border-box;
+				line-height: 50rpx;
 				color: #333333;
-				text-align: left;
-				&.none{
-					border-bottom: none;
-					color: #666666;
-				}
-			}
-			.list-view{
-				width: 100%;
-				height: 92rpx;
-				border-bottom: 1px solid #E1E1E1;
-				line-height: 92rpx;
-				font-size: $font-size-30;
-				.list-view-label{
-					width: 192rpx;
-					color: #666666;
-					float: left;
-				}
-				.list-view-text{
-					width: 510rpx;
-					color: #333333;
-					text-overflow: ellipsis;
-					overflow: hidden;
-					display: -webkit-box;
-					-webkit-line-clamp: 1;
-					line-clamp: 1;
-					-webkit-box-orient: vertical;
-					float: right;
-				}
+				text-overflow: ellipsis;
+				overflow: hidden;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				line-clamp: 1;
+				-webkit-box-orient: vertical;
+				float: left;
+				font-size: 26rpx;
 			}
-			.list-view-upload{
-				width: 100%;
-				height: auto;	
-				padding: 10rpx 0;
-				.photo-item{
-					display: inline-block;
-					width: 112rpx;
-					height: 112rpx;
-					margin: 10rpx 0;
-					margin-right: 25rpx;
-					border-radius: 10rpx;
-					border:1px solid #F5F5F5;
-					position: relative;
-					float: left;
-					&.add{
-						width: 112rpx;
-						height: 112rpx;
-						border-color: #FFC684;
-						text-align: center;
-						line-height: 112rpx;
-						margin-right: 0rpx;
-						.icon-jiahao{
-							font-size: $font-size-44;
-							color:#FFC684 ;
-							font-weight: bold;
-						}
-					}
-					.icon-iconfontguanbi{
-						width: 30rpx;
-						height: 30rpx;
-						border-radius:50%;
-						display: block;
-						position: absolute;
-						right: -10rpx;
-						top: -10rpx;
-						background: #f94b4b;
-						text-align: center;
-						line-height: 30rpx;
-						color: #FFFFFF;
-						font-size: $font-size-22;
-					}
-					image{
-						width: 112rpx;
-						height: 112rpx;
-						border-radius: 10rpx;
-					}
-				}	
-				.photo-list{
-					width: 100%;
-					height: 116rpx;
-					overflow: hidden;
-					white-space: nowrap;
-					display: flex;
-					align-items: flex-start;
-				}
-				.scoll-wrapper{
-					display:flex;
-					align-items: flex-start;
-				}
+		}
+	}
+	.list-view-upload {
+		width: 100%;
+		height: auto;
+		.photo-item {
+			display: inline-block;
+			width: 112rpx;
+			height: 112rpx;
+			margin: 10rpx 0;
+			margin-right: 25rpx;
+			border-radius: 10rpx;
+			border: 1px solid #f5f5f5;
+			position: relative;
+			float: left;
+			image {
+				width: 112rpx;
+				height: 112rpx;
+				border-radius: 10rpx;
 			}
 		}
-		.qualifications-btn{
+		.photo-list {
 			width: 100%;
-			height: 90rpx;
-			padding-top: 60rpx;
-			position: fixed;
-			bottom: 0;
-			left: 0;
-			background-color: #FFFFFF;
-			.edit-button{
-				width: 600rpx;
-				height: 90rpx;
-				background: $btn-confirm;
-				line-height: 90rpx;
-				text-align: center;
-				color: #FFFFFF;
-				font-size: 30rpx;
-				margin: 0 auto;
-				border-radius: 45rpx;
-			}
+			height: 116rpx;
+			overflow: hidden;
+			white-space: nowrap;
+			display: flex;
+			align-items: flex-start;
 		}
 	}
-	
+}
 </style>

+ 54 - 59
pages/seller/remarks/list.vue

@@ -4,19 +4,15 @@
 			<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-remarks-empty@2x.png'"
-					></image>
+					<image class="empty-container-image" :src="StaticUrl + '/icon/icon-remarks-empty@2x.png'"></image>
 					<text class="error-text">暂无任何资料备注~</text>
 				</view>
 				<!-- 列表 -->
-				<view class="tui-remarks-cell  tui-mtop" v-for="(remark, index) in remarksList" :key="index">
+				<view class="tui-remarks-cell  tui-mtop" v-for="(remark, index) in remarksList" :key="index" @click.stop="details(remark)">
 					<view class="tui-remarks-time">{{ remark.time }}</view>
 					<view class="tui-remarks-content">{{ remark.content }}</view>
 					<view class="tui-remarks-button">
-						<view class="btn">修改</view>
-						<view class="btn">删除</view>
+						<view class="btn">修改</view> <view class="btn" @click="deleteRemark(remark)">删除</view>
 					</view>
 				</view>
 				<!--加载loadding-->
@@ -30,9 +26,7 @@
 			<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="tui-button" @click="handleAllUnder"
-							>添加资料备注</view
-						>
+						<view class="tui-button" @click="handleAllUnder">添加资料备注</view>
 					</view>
 				</view>
 			</view>
@@ -65,7 +59,7 @@ const defaultListQuery = {
 export default {
 	components: {
 		tuiLoadmore,
-		tuiNomore,
+		tuiNomore
 	},
 	data() {
 		return {
@@ -93,44 +87,54 @@ export default {
 			listQuery: Object.assign({}, defaultListQuery),
 			remarksList: [
 				{
-					time:'2021.09.07  16:20:10',
-					content:'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...',
+					time: '2021.09.07  16:20:10',
+					content:
+						'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...'
 				},
 				{
-					time:'2021.09.07  16:20:10',
-					content:'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...',
+					time: '2021.09.07  16:20:10',
+					content:
+						'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...'
 				},
 				{
-					time:'2021.09.07  16:20:10',
-					content:'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...',
+					time: '2021.09.07  16:20:10',
+					content:
+						'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...'
 				},
 				{
-					time:'2021.09.07  16:20:10',
-					content:'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...',
+					time: '2021.09.07  16:20:10',
+					content:
+						'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...'
 				},
 				{
-					time:'2021.09.07  16:20:10',
-					content:'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...',
+					time: '2021.09.07  16:20:10',
+					content:
+						'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...'
 				},
 				{
-					time:'2021.09.07  16:20:10',
-					content:'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...',
+					time: '2021.09.07  16:20:10',
+					content:
+						'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...'
 				},
 				{
-					time:'2021.09.07  16:20:10',
-					content:'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...',
+					time: '2021.09.07  16:20:10',
+					content:
+						'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...'
 				},
 				{
-					time:'2021.09.07  16:20:10',
-					content:'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...',
+					time: '2021.09.07  16:20:10',
+					content:
+						'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...'
 				},
 				{
-					time:'2021.09.07  16:20:10',
-					content:'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...',
+					time: '2021.09.07  16:20:10',
+					content:
+						'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...'
 				},
 				{
-					time:'2021.09.07  16:20:10',
-					content:'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...',
+					time: '2021.09.07  16:20:10',
+					content:
+						'半岛超声炮是目前国内唯一一台获得NMPA认证的“国产超声刀”,采用大焦域和超脉冲技术的方式,利用超声波能量精准加热皮下SMAS筋膜层、真皮层、浅脂肪层...'
 				}
 			],
 			handleData: {},
@@ -149,7 +153,7 @@ export default {
 			nomoreText: '上拉显示更多',
 			contentModalText: '', //操作文字提示语句
 			modal: false,
-			userIdentity:0,
+			userIdentity: 0
 		}
 	},
 	onLoad() {
@@ -237,22 +241,13 @@ export default {
 					this.$util.msg(error.msg, 2000)
 				})
 		},
+		deleteRemark() {
+			this.modal = true
+			this.contentModalText = '确定删除这条备注信息吗?'
+		},
 		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 = '确定要取消收藏吗?'
-			}
+			//跳转添加资料备注
+			this.$api.navigateTo('/pages/seller/remarks/add')
 		},
 		handleClick(e) {
 			//取消收藏
@@ -440,7 +435,7 @@ export default {
 		},
 		details(id) {
 			this.$api.navigateTo(`/pages/seller/remarks/details?id=${id}`)
-		},
+		}
 	},
 	onPageScroll(e) {
 		//实时获取到滚动的值
@@ -465,10 +460,10 @@ export default {
 <style lang="scss">
 @import '@/uni.scss';
 page {
-	background: #F7F7F7;
+	background: #f7f7f7;
 }
 .empty-container {
-	z-index: 9999;
+	z-index: 99;
 }
 .remarks-content {
 	width: 100%;
@@ -476,21 +471,21 @@ page {
 	position: relative;
 	padding: 0;
 	box-sizing: border-box;
-	padding:24rpx;
+	padding: 24rpx;
 	.empty-container-image {
 		width: 260rpx;
 		height: 260rpx;
 		margin-top: -300rpx;
 	}
-	.tui-remarks-cell{
+	.tui-remarks-cell {
 		width: 100%;
 		height: 316rpx;
 		border-radius: 16rpx;
-		background: #FFFFFF;
+		background: #ffffff;
 		margin-bottom: 24rpx;
 		box-sizing: border-box;
 		padding: 25rpx 32rpx;
-		.tui-remarks-time{
+		.tui-remarks-time {
 			width: 100%;
 			height: 37rpx;
 			line-height: 37rpx;
@@ -499,7 +494,7 @@ page {
 			color: #666666;
 			margin-bottom: 24rpx;
 		}
-		.tui-remarks-content{
+		.tui-remarks-content {
 			width: 100%;
 			line-height: 44rpx;
 			text-align: left;
@@ -513,16 +508,16 @@ page {
 			-webkit-box-orient: vertical;
 			margin-bottom: 24rpx;
 		}
-		.tui-remarks-button{
+		.tui-remarks-button {
 			width: 100%;
 			height: 48rpx;
-			.btn{
+			.btn {
 				width: 104rpx;
-				height: 48rpx;
+				line-height: 48rpx;
 				box-sizing: border-box;
 				border: 1px solid #707070;
 				text-align: center;
-				border-radius: 25rpx;
+				border-radius: 30rpx;
 				color: #666666;
 				font-size: $font-size-24;
 				float: right;

+ 15 - 15
pages/supplier/deliver/qualifications-add.vue

@@ -41,7 +41,7 @@
 				</view>	
 				<view class="list-view-title none">图片<text class="none">(若不方便上传文件,可用图片代替)</text></view>
 				<view class="list-view-upload clearfix">
-					<view class="photo-item" v-for="(image, imageIndex) in item.imageList" :key="index">
+					<view class="photo-item" v-for="(image, imageIndex) in item.imageList" :key="imageIndex">
 						<image :src="image" mode="aspectFill" @click.stop="previewImg(item.imageList,imageIndex)"></image>
 						<text class="iconfont icon-iconfontguanbi" @click.stop="deletePhotoFn(item.imageList,imageIndex)"></text>
 					</view>
@@ -67,9 +67,9 @@
 <script>
 	import { mapState,mapMutations } from 'vuex'
 	import authorize from '@/common/config/authorize.js' 
-	import { uploadFileImage , uploadFilePdfDocDocx } from "@/services/public.js"
+	import { uploadFileImage , uploadFilePdfDocDocx } from '@/services/public.js'
 	
-	var isPreviewImg;
+	var isPreviewImg
 	export default{
 		data() {
 			return{
@@ -119,7 +119,7 @@
 					}
 				})
 				.catch(error =>{
-					this.$util.msg(error.msg,2000);
+					this.$util.msg(error.msg,2000)
 				})
 			},
 			GetSupplierLogisticsRecord(){//添加商品资质初始化查询商品信息
@@ -139,7 +139,7 @@
 					})
 				})
 				.catch(error =>{
-					this.$util.msg(error.msg,2000);
+					this.$util.msg(error.msg,2000)
 				})
 			},
 			editButtonConfim(){//确定
@@ -148,7 +148,7 @@
 				let isSnCode = false
 				let isFileList = false
 				let isImageList = false
-				let params = [];//参数
+				let params = []//参数
 				this.qualificationsList.forEach((el,index) => {
 					if(el.recordId == ''){ isRecordId = true }
 					if(el.sn == ''){ isSnCode = true }
@@ -163,15 +163,15 @@
 					params.push(paramsObject)	
 				})
 				if(isRecordId){
-					this.$util.msg('请选择商品',2000);
+					this.$util.msg('请选择商品',2000)
 					return
 				}
 				if(isSnCode){
-					this.$util.msg('请输入商品SN码',2000);
+					this.$util.msg('请输入商品SN码',2000)
 					return
 				}
 				if(isFileList && isImageList){
-					this.$util.msg('请上传商品资质文件',2000);
+					this.$util.msg('请上传商品资质文件',2000)
 					return
 				}
 				console.log('params========>',params)
@@ -187,7 +187,7 @@
 					},2000)
 				})
 				.catch(error =>{
-					this.$util.msg(error.msg,2000);
+					this.$util.msg(error.msg,2000)
 				})
 			},
 			bindPickerChange: function(item,e) {//选择筛选条件
@@ -201,12 +201,12 @@
 						sn:'',
 						fileList:[],
 						imageList:[]
-					};
+					}
 				this.qualificationsList.push(obj)
 			},
 			deleteLogistItemFn(item,index){
 				this.$util.modal('提示','确认删除物流信息吗?','确定','取消',true,() =>{
-					this.qualificationsList.splice(index, 1);
+					this.qualificationsList.splice(index, 1)
 				})
 			},
 			uploadFile(array){//上传资质文件
@@ -233,7 +233,7 @@
 					}
 				)
 				.then(res=>{
-					array.splice(index, 1);
+					array.splice(index, 1)
 				})
 				.catch(error =>{
 					console.log('删除文件异常提示===>',error.msg)
@@ -241,7 +241,7 @@
 				
 			},
 			deletePhotoFn(array,index){//删除图片
-				array.splice(index, 1);
+				array.splice(index, 1)
 			},
 			previewImg (image,index) {//顶部商品图片预览
 				isPreviewImg = true
@@ -254,7 +254,7 @@
 			},
 			hanldSnCodeChecked(e){
 				if(!this.$reg.isNoChinese(e.detail.value)){
-					this.$util.msg('SN码格式错误',2000);
+					this.$util.msg('SN码格式错误',2000)
 					return
 				}
 			},

+ 0 - 4
services/activity.service.js

@@ -10,8 +10,4 @@ export default class ActivityService {
 	GetRepeatActivityBrandList (data = {}) {
 		return this.AjaxService.get({ url:'/repeat/activityProduct', data, isLoading: true })
 	}
-	/* 美博会 活动楼层 */
-	GetRepeatActivityFloorData (data = {}) {
-		return this.AjaxService.get({ url:'/activity/data', data, isLoading: true })
-	}
 }

+ 93 - 93
services/common.service.js

@@ -7,62 +7,62 @@ export default class CommonService {
 		this.name = 'CommonService'
 	}
 	/* 首页导航模块商品列表 */
-	GetHomeClassify (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/home/classify', 
-			data, 
-			isLoading: true ,
+	GetHomeClassify(data = {}) {
+		return this.AjaxService.get({
+			url: '/home/classify',
+			data,
+			isLoading: true,
 		})
 	}
 	/* 首页初始化 */
-	GetHomeModulesDataInfo (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/home/modules', 
-			data, 
-			isLoading: false ,
+	GetHomeModulesDataInfo(data = {}) {
+		return this.AjaxService.get({
+			url: '/home/modules',
+			data,
+			isLoading: false,
 		})
 	}
 	/* 首页楼层数据 */
-	GetHomeDataInfo (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/commodity/home/floor', 
-			data, 
-			isLoading: false ,
-			isHost:true
+	GetHomeDataInfo(data = {}) {
+		return this.AjaxService.get({
+			url: '/commodity/home/floor',
+			data,
+			isLoading: false,
+			isHost: true
 		})
 	}
 	/* 首页楼层查看更多数据 */
-	GetHomeFloorContentDetails (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/commodity/page/floor/details', 
-			data, 
-			isLoading: false ,
-			isHost:true
+	GetHomeFloorContentDetails(data = {}) {
+		return this.AjaxService.get({
+			url: '/commodity/page/floor/details',
+			data,
+			isLoading: false,
+			isHost: true
 		})
 	}
 	/* 二级页楼层查看更多数据 */
-	GePageFloorContentDetails (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/commodity/page/floor/centre', 
-			data, 
-			isLoading: false ,
-			isHost:true
+	GePageFloorContentDetails(data = {}) {
+		return this.AjaxService.get({
+			url: '/commodity/page/floor/centre',
+			data,
+			isLoading: false,
+			isHost: true
 		})
 	}
 	/* 首页顶部三个模块数据 */
-	GetHomeTopDataInfo (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/home/top/data', 
-			data, 
-			isLoading: false ,
+	GetHomeTopDataInfo(data = {}) {
+		return this.AjaxService.get({
+			url: '/home/top/data',
+			data,
+			isLoading: false,
 		})
 	}
 	/* 获取其他服务信息 */
-	QueryAfterSale (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/home/afterSale', 
-			data, 
-			isLoading: false ,
+	QueryAfterSale(data = {}) {
+		return this.AjaxService.get({
+			url: '/home/afterSale',
+			data,
+			isLoading: false,
 		})
 	}
 	/* 首页金刚区分类 */
@@ -73,88 +73,88 @@ export default class CommonService {
 	// 		isLoading: false ,
 	// 	})
 	// }
-	GetHomeInit (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/commodity/home/init', 
-			data, 
-			isLoading: false ,
-			isHost:true
+	GetHomeInit(data = {}) {
+		return this.AjaxService.get({
+			url: '/commodity/home/init',
+			data,
+			isLoading: false,
+			isHost: true
 		})
 	}
 	/* 首页金刚区二级分类 */
-	GetHomeSubMenu (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/home/subMenu', 
-			data, 
-			isLoading: false ,
+	GetHomeSubMenu(data = {}) {
+		return this.AjaxService.get({
+			url: '/home/subMenu',
+			data,
+			isLoading: false,
 		})
 	}
 	/* 首页楼层 */
-	GetHomeFloorInfo (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/home/floor', 
-			data, 
-			isLoading: false ,
+	GetHomeFloorInfo(data = {}) {
+		return this.AjaxService.get({
+			url: '/home/floor',
+			data,
+			isLoading: false,
 		})
 	}
 	/* 直播专题页图片 */
-	GetHomeLiveAdvertising (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/home/live/advertising', 
-			data, 
-			isLoading: false ,
+	GetHomeLiveAdvertising(data = {}) {
+		return this.AjaxService.get({
+			url: '/home/live/advertising',
+			data,
+			isLoading: false,
 		})
 	}
 	/* 搜索热门关键词 */
-	GetHomeHotSearchTerms (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/home/hotSearchTerms', 
-			data, 
-			isLoading: false ,
+	GetHomeHotSearchTerms(data = {}) {
+		return this.AjaxService.get({
+			url: '/home/hotSearchTerms',
+			data,
+			isLoading: false,
 		})
 	}
 	/* 二级列表楼层 */
-	GetInstrumentPageData (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/commodity/classify/product', 
-			data, 
-			isLoading: false ,
-			isHost:true
+	GetInstrumentPageData(data = {}) {
+		return this.AjaxService.get({
+			url: '/commodity/classify/product',
+			data,
+			isLoading: false,
+			isHost: true
 		})
 	}
 	/* 一级分类 */
-	GetFirstClassly (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/commodity/classify', 
-			data, 
-			isLoading: false ,
-			isHost:true
+	GetFirstClassly(data = {}) {
+		return this.AjaxService.get({
+			url: '/commodity/classify',
+			data,
+			isLoading: false,
+			isHost: true
 		})
 	}
 	/* 根据一级分类获取二、三级分类 */
-	GetProductChildrenClassly (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/product/bigType/classify', 
-			data, 
-			isLoading: false ,
+	GetProductChildrenClassly(data = {}) {
+		return this.AjaxService.get({
+			url: '/product/bigType/classify',
+			data,
+			isLoading: false,
 		})
 	}
 	/* 根据一、二、三级分类ID查询单条分类 */
-	GetProductOneClassly (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/commodity/type/id', 
-			data, 
-			isLoading: false ,
-			isHost:true
+	GetProductOneClassly(data = {}) {
+		return this.AjaxService.get({
+			url: '/commodity/type/id',
+			data,
+			isLoading: false,
+			isHost: true
 		})
 	}
 	/*活动页面获取楼层*/
-	GetActivityFloorData (data = {}) {
-		return this.AjaxService.get({ 
-			url:'/commodity/page/floor', 
-			data, 
-			isLoading: false ,
-			isHost:true
+	GetActivityFloorData(data = {}) {
+		return this.AjaxService.get({
+			url: '/commodity/page/floor',
+			data,
+			isLoading: false,
+			isHost: true
 		})
 	}
 }

+ 0 - 6
services/other.service.js

@@ -17,12 +17,6 @@ export default class OtherService {
 			isHost:true
 		})
 	}
-	/**
-	 * 正品联盟
-	 */
-	QueryHomeMemberList (data) {
-		return this.AjaxService.get({ url:'/home/member', data, isLoading: true })
-	}
 	/**
 	 * 协议
 	 */

+ 159 - 159
services/public.js

@@ -14,179 +14,179 @@ import $reg from '@/common/config/common.js'
  * @param:pageNum	页码
  * @param:pageSize	每页显示条数
  */
-export function searchQueryTinyType(url,params) {
-	return new Promise(function(resolve,reject) {
-		request.lodingGet(url,params, res => {
-			if(res.code == 0){
-				resolve(res);
-			}else{
-				reject(res)
-			}
-		})
-	});
+export function searchQueryTinyType(url, params) {
+    return new Promise(function(resolve, reject) {
+        request.lodingGet(url, params, res => {
+            if (res.code == 0) {
+                resolve(res)
+            } else {
+                reject(res)
+            }
+        })
+    })
 }
 /**
  *上传图片
  */
 export function uploadFileImage() {
-	return new Promise(function(resolve,reject) {
-		uni.chooseImage({
-			count: 1, //默认1
-			sizeType: ['original','compressed'], //可以指定是原图还是压缩图,默认二者都有
-			sourceType: ['album'], //从相册选择
-			success: (res) => {
-				const tempFilePaths = res.tempFilePaths;
-				wx.showLoading({ title: '上传中~' })
-				const uploadTask = uni.uploadFile({
-					url : requestUrl+'/formData/MultiPictareaddData',
-					filePath: tempFilePaths[0],
-					name: 'file',
-					header: {
-					    "Content-Type": "multipart/form-data",
-					},
-					formData: {
-						'user': 'test'
-					},
-					success: function (res) {
-						wx.hideLoading()
-						resolve(res);
-					},
-					error : function(e){
-						wx.hideLoading()
-						reject(res)
-					}
-				})
-			}
-		});
-	});
+    return new Promise(function(resolve, reject) {
+        uni.chooseImage({
+            count: 1, //默认1
+            sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+            sourceType: ['album'], //从相册选择
+            success: (res) => {
+                const tempFilePaths = res.tempFilePaths
+                wx.showLoading({ title: '上传中~' })
+                const uploadTask = uni.uploadFile({
+                    url: requestUrl + '/formData/MultiPictareaddData',
+                    filePath: tempFilePaths[0],
+                    name: 'file',
+                    header: {
+                        'Content-Type': 'multipart/form-data',
+                    },
+                    formData: {
+                        'user': 'test'
+                    },
+                    success: function(res) {
+                        wx.hideLoading()
+                        resolve(res)
+                    },
+                    error: function(e) {
+                        wx.hideLoading()
+                        reject(res)
+                    }
+                })
+            }
+        })
+    })
 }
 /**
  *上传文件
  * 限制pdf,doc,docx
  */
 export function uploadFilePdfDocDocx() {
-	return new Promise(function(resolve,reject) {
-		wx.chooseMessageFile({
-			count: 1,
-			type: 'file',
-			success (res) {
-				// tempFilePath可以作为img标签的src属性显示图片
-				const tempFilePaths = res.tempFiles
-				const size = tempFilePaths[0].size;//获取图片的大小,单位B
-				const filename = res.tempFiles[0].name;
-				const newfilename = filename + ""; 
-				const url = requestUrl+'/file/upload';
-				uni.setStorageSync('fileName',filename)
-				console.log('filename',filename)
-				 //截取
-				let fixFile = newfilename.substr(newfilename.lastIndexOf('.'));
-			    console.log(fixFile);
-				//统一转成小写  
-				let lowFixFile = fixFile.toLowerCase();
-				if ( lowFixFile != '.pdf' && lowFixFile != '.doc' && lowFixFile != '.docx' ){ //限制了文件类型
-					uni.showToast({
-						title: '文件格式不正确!',
-						icon:'none',
-						mask:true,
-						duration: 3000
-					});
-					return;
-				}
-				if(size > 51200000){//限制了文件的大小50M
-					uni.showToast({
-						title: '文件大小不能超过50M',
-						icon:'none',
-						mask:true,
-						duration: 3000
-					});
-					return;
-				}
-				wx.showLoading({ title: '上传中~' })
-				wx.uploadFile({
-					url : url,
-					filePath: tempFilePaths[0].path,
-					name: 'file',
-					header: {
-					    "Content-Type": "multipart/form-data",
-					},
-					formData: {
-						'user': 'test'
-					},
-					success: function (res) {
-						wx.hideLoading()
-						resolve(res);
-					},
-					error : function(err){
-						wx.hideLoading()
-						reject(err)
-					}
-				})
-			}
-		})
-	});
+    return new Promise(function(resolve, reject) {
+        wx.chooseMessageFile({
+            count: 1,
+            type: 'file',
+            success(res) {
+                // tempFilePath可以作为img标签的src属性显示图片
+                const tempFilePaths = res.tempFiles
+                const size = tempFilePaths[0].size //获取图片的大小,单位B
+                const filename = res.tempFiles[0].name
+                const newfilename = filename + ''
+                const url = requestUrl + '/file/upload'
+                uni.setStorageSync('fileName', filename)
+                console.log('filename', filename)
+                //截取
+                let fixFile = newfilename.substr(newfilename.lastIndexOf('.'))
+                console.log(fixFile)
+                //统一转成小写  
+                let lowFixFile = fixFile.toLowerCase()
+                if (lowFixFile != '.pdf' && lowFixFile != '.doc' && lowFixFile != '.docx') { //限制了文件类型
+                    uni.showToast({
+                        title: '文件格式不正确!',
+                        icon: 'none',
+                        mask: true,
+                        duration: 3000
+                    })
+                    return
+                }
+                if (size > 51200000) { //限制了文件的大小50M
+                    uni.showToast({
+                        title: '文件大小不能超过50M',
+                        icon: 'none',
+                        mask: true,
+                        duration: 3000
+                    })
+                    return
+                }
+                wx.showLoading({ title: '上传中~' })
+                wx.uploadFile({
+                    url: url,
+                    filePath: tempFilePaths[0].path,
+                    name: 'file',
+                    header: {
+                        'Content-Type': 'multipart/form-data',
+                    },
+                    formData: {
+                        'user': 'test'
+                    },
+                    success: function(res) {
+                        wx.hideLoading()
+                        resolve(res)
+                    },
+                    error: function(err) {
+                        wx.hideLoading()
+                        reject(err)
+                    }
+                })
+            }
+        })
+    })
 }
 
 /**
  *上传文件,仅限制PDF文件格式
  */
 export function uploadFilePdf() {
-	return new Promise(function(resolve,reject) {
-		wx.chooseMessageFile({
-			count: 1,
-			type: 'file',
-			success (res) {
-				// tempFilePath可以作为img标签的src属性显示图片
-				const tempFilePaths = res.tempFiles
-				const size = tempFilePaths[0].size;//获取图片的大小,单位B
-				const filename = res.tempFiles[0].name;
-				const newfilename = filename + ""; 
-				const url = requestUrl+'/file/upload';
-				uni.setStorageSync('fileName',filename)
-				console.log('filename',filename)
-				//截取
-				let fixFile = newfilename.substr(newfilename.lastIndexOf('.'));
-				console.log(fixFile);
-				//统一转成小写  
-				let lowFixFile = fixFile.toLowerCase();
-				if ( lowFixFile != '.pdf' ){ //限制了文件类型
-					uni.showToast({
-						title: '文件必须为".pdf"格式!',
-						icon:'none',
-						mask:true,
-						duration: 3000
-					});
-					return;
-				}
-				if( size > 20480000 ){//限制了文件的大小20MB
-					uni.showToast({
-						title: '文件大小不能超过20M',
-						icon:'none',
-						mask:true,
-						duration: 3000
-					});
-					return;
-				}
-				wx.showLoading({ title: '上传中~' })
-				wx.uploadFile({
-					url : url,
-					filePath: tempFilePaths[0].path,
-					name: 'file',
-					header: {
-					    "Content-Type": "multipart/form-data",
-					},
-					formData: {
-						'user': 'test'
-					},
-					success: function (res) {
-						wx.hideLoading()
-						resolve(res);
-					},
-					error : function(err){
-						wx.hideLoading()
-						reject(err)
-					}
-				})
-			}
-		})
-	});
-}
+    return new Promise(function(resolve, reject) {
+        wx.chooseMessageFile({
+            count: 1,
+            type: 'file',
+            success(res) {
+                // tempFilePath可以作为img标签的src属性显示图片
+                const tempFilePaths = res.tempFiles
+                const size = tempFilePaths[0].size //获取图片的大小,单位B
+                const filename = res.tempFiles[0].name
+                const newfilename = filename + ''
+                const url = requestUrl + '/file/upload'
+                uni.setStorageSync('fileName', filename)
+                console.log('filename', filename)
+                //截取
+                let fixFile = newfilename.substr(newfilename.lastIndexOf('.'))
+                console.log(fixFile)
+                //统一转成小写  
+                let lowFixFile = fixFile.toLowerCase()
+                if (lowFixFile != '.pdf') { //限制了文件类型
+                    uni.showToast({
+                        title: '文件必须为".pdf"格式!',
+                        icon: 'none',
+                        mask: true,
+                        duration: 3000
+                    })
+                    return
+                }
+                if (size > 20480000) { //限制了文件的大小20MB
+                    uni.showToast({
+                        title: '文件大小不能超过20M',
+                        icon: 'none',
+                        mask: true,
+                        duration: 3000
+                    })
+                    return
+                }
+                wx.showLoading({ title: '上传中~' })
+                wx.uploadFile({
+                    url: url,
+                    filePath: tempFilePaths[0].path,
+                    name: 'file',
+                    header: {
+                        'Content-Type': 'multipart/form-data',
+                    },
+                    formData: {
+                        'user': 'test'
+                    },
+                    success: function(res) {
+                        wx.hideLoading()
+                        resolve(res)
+                    },
+                    error: function(err) {
+                        wx.hideLoading()
+                        reject(err)
+                    }
+                })
+            }
+        })
+    })
+}

+ 0 - 7
services/sellse.service.js

@@ -313,11 +313,4 @@ export default class SellerService {
 	SellerCartdelete (data = {}) {
 		return this.AjaxService.post({ url:'/seller/deleteSellerCart', data, isLoading: true })
 	}
-	/**
-	 *@协销邀请运营人员
-	 *@param userID  机构userID
-	 */
-	SellerBindingOperation (data = {}) {
-		return this.AjaxService.post({ url:'/seller/bindingOperation', data, isLoading: true })
-	}
 }

+ 112 - 112
store/index.js

@@ -5,118 +5,118 @@ import authorize from '../common/config/authorize.js'
 
 Vue.use(Vuex)
 const store = new Vuex.Store({
-	state: {
-		isWxAuthorize:false,
-		hasLogin: false,
-		userInfo: {},
-		identity:0,
-		wechatUserInfo:{},
-		cartNumber:0,
-		isIphoneX:false,
-		isActivity:false,
-		isLoginType:0,
-		isLoginProductId:0
-	},
-	mutations: {
-		login(state, provider) {//用户身份 1、协销 2、资质机构 3、供应商 4.个人机构
-			state.hasLogin = true;
-			state.userInfo = provider;
-			uni.setStorage({//缓存用户登陆状态
-			    key: 'userInfo',
-			    data: provider
-			})
-		},
-		logout(state) {
-			state.hasLogin = false;
-			state.userInfo = {};
-			uni.removeStorage({
-		        key: 'userInfo'
-		    })
-			uni.removeStorage({
-			    key: 'token'
-			})
-		},
-		wxLogin(state,provider) {
-			state.isWxAuthorize = true
-			state.wechatUserInfo = provider;
-			uni.setStorage({//缓存用户登陆状态 
-			    key: 'wechatUserInfo',
-			    data: provider
-			})
-			uni.setStorageSync('_WX_State',1)
-		},
-		updateStatus(state,provider){
-			let TIME = api.formatDate()
-			console.log(`${TIME}`,provider)
-			state.userInfo = provider;
-			if(state.userInfo){
-				if(provider.userIdentity){
-					state.identity = provider.userIdentity
-				}else if(provider.userID == 5261 || provider.userID == 10947 || provider.userID == 11579){
-					state.identity = 1;
-				}else{
-					state.identity = 0;
-				}
-			}
-			console.log('用户类型',state.identity)
-			uni.setStorage({//缓存用户登陆状态
-			    key: 'userInfo',
-			    data: provider
-			})
-		},
-		updateAllNum(state,num){
-			if(num>=100){
-				uni.setTabBarBadge({
-				  index: 2,
-				  text:'99+'
-				})
-			}else if(num>0){
-				uni.setTabBarBadge({
-				  index: 2,
-				  text:String(num)
-				})
-			}else{
-				uni.removeTabBarBadge({
-					index: 2,
-				})
-			}
-		},
-		setActivity(state,variable){// 记录活动弹窗状态
-			state.isActivity = variable;
-		},
-		setChangeVar(state,variable){
-			state.isIphoneX = variable;
-		},
-		setIsIphone(state,variable){// 记录设备信息是否为IphoneX
-			state.isIphone = variable;
-		},
-		setLoginType(state,variable){// 记录登录跳转类型
-			state.isLoginType = variable;
-			console.log(state.isLoginType);
-		},
-		setLoginProductId(state,variable){// 记录跳转商品ID
-			state.isLoginProductId = variable;
-			console.log(state.isLoginProductId);
-		},
-		setLoginOrderId(state,variable){// 记录跳转订单ID
-			state.isLoginOrderId = variable;
-			console.log(state.isLoginOrderId);
-		}
-	},
-	actions:{
-		setVariableFun:function(context,vData){
-			context.commit('setChangeVar',vData)
-		},
-		setIsIphoneFun:function(context,vData){
-			context.commit('setIsIphone',vData)
-		},
-		setActivityFn:function(context,vData){
-			context.commit('setActivity',vData)
-		},
-		// setLoginTypeFn:function(context,vData){
-		// 	context.commit('setLoginType',vData)
-		// }
-	}
+    state: {
+        isWxAuthorize: false,
+        hasLogin: false,
+        userInfo: {},
+        identity: 0,
+        wechatUserInfo: {},
+        cartNumber: 0,
+        isIphoneX: false,
+        isActivity: false,
+        isLoginType: 0,
+        isLoginProductId: 0
+    },
+    mutations: {
+        login(state, provider) { //用户身份 1、协销 2、资质机构 3、供应商 4.个人机构
+            state.hasLogin = true
+            state.userInfo = provider
+            uni.setStorage({ //缓存用户登陆状态
+                key: 'userInfo',
+                data: provider
+            })
+        },
+        logout(state) {
+            state.hasLogin = false
+            state.userInfo = {}
+            uni.removeStorage({
+                key: 'userInfo'
+            })
+            uni.removeStorage({
+                key: 'token'
+            })
+        },
+        wxLogin(state, provider) {
+            state.isWxAuthorize = true
+            state.wechatUserInfo = provider
+            uni.setStorage({ //缓存用户登陆状态 
+                key: 'wechatUserInfo',
+                data: provider
+            })
+            uni.setStorageSync('_WX_State', 1)
+        },
+        updateStatus(state, provider) {
+            let TIME = api.formatDate()
+            console.log(`${TIME}`, provider)
+            state.userInfo = provider
+            if (state.userInfo) {
+                if (provider.userIdentity) {
+                    state.identity = provider.userIdentity
+                } else if (provider.userID == 5261 || provider.userID == 10947 || provider.userID == 11579) {
+                    state.identity = 1
+                } else {
+                    state.identity = 0
+                }
+            }
+            console.log('用户类型', state.identity)
+            uni.setStorage({ //缓存用户登陆状态
+                key: 'userInfo',
+                data: provider
+            })
+        },
+        updateAllNum(state, num) {
+            if (num >= 100) {
+                uni.setTabBarBadge({
+                    index: 2,
+                    text: '99+'
+                })
+            } else if (num > 0) {
+                uni.setTabBarBadge({
+                    index: 2,
+                    text: String(num)
+                })
+            } else {
+                uni.removeTabBarBadge({
+                    index: 2,
+                })
+            }
+        },
+        setActivity(state, variable) { // 记录活动弹窗状态
+            state.isActivity = variable
+        },
+        setChangeVar(state, variable) {
+            state.isIphoneX = variable
+        },
+        setIsIphone(state, variable) { // 记录设备信息是否为IphoneX
+            state.isIphone = variable
+        },
+        setLoginType(state, variable) { // 记录登录跳转类型
+            state.isLoginType = variable
+            console.log(state.isLoginType)
+        },
+        setLoginProductId(state, variable) { // 记录跳转商品ID
+            state.isLoginProductId = variable
+            console.log(state.isLoginProductId)
+        },
+        setLoginOrderId(state, variable) { // 记录跳转订单ID
+            state.isLoginOrderId = variable
+            console.log(state.isLoginOrderId)
+        }
+    },
+    actions: {
+        setVariableFun: function(context, vData) {
+            context.commit('setChangeVar', vData)
+        },
+        setIsIphoneFun: function(context, vData) {
+            context.commit('setIsIphone', vData)
+        },
+        setActivityFn: function(context, vData) {
+            context.commit('setActivity', vData)
+        },
+        // setLoginTypeFn:function(context,vData){
+        // 	context.commit('setLoginType',vData)
+        // }
+    }
 })
 
 export default store