zhengjinyi 5 years ago
parent
commit
292a65b528

+ 9 - 0
App.vue

@@ -122,6 +122,15 @@ image,
 video {
 	// box-sizing: border-box;
 }
+// page {
+//   width: 100%;
+//   height: 100%;
+//   background: #fff;
+//   filter: grayscale(100%);
+//   filter: gray;
+//   filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
+//   --toast-default-width: 114px;
+// }
 page{
 	height: 100%;
 	background-color: #FFFFFF;

+ 0 - 0
api/seller.js


+ 9 - 1
common/css/iconfont.scss

@@ -4,7 +4,7 @@
 	font-family: iconfont;
 	font-weight: normal;
 	font-style: normal;
-	src: url('https://at.alicdn.com/t/font_1519039_hxmzf2vrwg.ttf') format('truetype');
+	src: url('https://at.alicdn.com/t/font_1519039_22khhigq2s1.ttf') format('truetype');
 }
 .iconfont {
 	font-family: "iconfont" !important;
@@ -13,6 +13,14 @@
 	-webkit-font-smoothing: antialiased;
 	-moz-osx-font-smoothing: grayscale;
 }
+.icon-dingdanxuanzhong:before {
+  content: "\e6c2";
+}
+
+.icon-xieboke:before {
+  content: "\e629";
+}
+
 .icon-shenhebutongguo:before {
   content: "\e624";
 }

+ 387 - 0
components/module/listTemplate/buyagainList.vue

@@ -0,0 +1,387 @@
+<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>
+		<view class="product-container" v-if="!isShowEmpty">
+			<scroll-view :style="{'height':scrollHeight+'px'}" @scrolltolower="scrolltolower" scroll-y v-if="productList.length > 0">
+				<view v-for="(item,index) in productList" :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>
+						<text class="list-details-miniQuantity">起订量:{{item.minBuyNumber}}</text>
+						<view class="list-details-price" v-if="item.price1TextFlag == 1">
+							<view class="list-none">
+								<view class="price-small">该商品尚未公开价格</view>
+								<view class="price-small">购买请致电:0755-22907771</view>
+							</view>
+						</view>
+						<view class="list-details-price" v-else>
+							<view class="list-shop">
+								<view class="list-price" >
+									<text class="price-view activity" v-if="item.isShowActFlg">活动价</text>
+									<text class="price-view ladder" v-if="item.ladderPriceFlag == 1">阶梯价</text>
+									<text class="price-larger">¥{{item.retailPrice.toFixed(2)}}</text>
+								</view>
+								<view class="list-price-none" v-if="item.repurchasePriceState">
+									<text class="price-none">¥{{item.discountPrice}}</text>
+									<text class="iconfont icon-wenhao" @click.stop="repurchModel"></text>
+								</view>
+							</view>
+							<button class="add-cart-btn" @click.stop="operationHanld(item)">选择数量</button>
+						</view>
+					</view>
+				</view>
+				<button class="show-more-btn" v-if="showRegularBtn" @click="getListFromServer(true)">查看更多</button>
+				<view v-if="showLoading && productList.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>
+			</scroll-view>
+		</view>
+		<view class="empty-container" v-else>
+			<image class="empty-container-image" src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AWdWzAAGlgAP0das422.png" mode="aspectFit"></image>
+			<text class="error-text">您还没有购买过任何商品哟~</text>
+			<button class="submit-btn toIndexPage" @click="toIndexPage">去逛逛</button>
+		</view>
+		<view class="cart-icon" v-if="!isShowEmpty" @click="toCartPage">
+			<text v-if="cartQuantity > 0" class="uni-badge uni-badge-error uni-small uni-badge--small icon-num">
+				{{cartQuantity >= 100 ? '99+' : cartQuantity}}
+			</text>
+			<image src='../../../static/icon-cart-active@3x.png' mode="widthFix"></image>
+		</view>
+		<!-- 透明模态层 -->
+		<modal-layer v-if='isModallayer'></modal-layer>
+	</view>
+</template>
+
+<script>
+	import listSkeleton from '@/components/module/listTemplate/listSkeleton'
+	import modalLayer from "@/components/modal-layer"
+	import uniStars from '@/components/uni-stars/uni-stars.vue'
+	import { queryAgaingoodslist } from "@/api/product.js"
+	import { mapState,mapMutations } from 'vuex';
+	export default{
+		name:'productList',
+		components:{
+			listSkeleton,
+			modalLayer,
+			uniStars
+		},
+		props: {
+			emptyText: {
+				type: String
+			},
+		},
+		data(){
+			return{
+				isModallayer:false,
+				windowHeight: '',
+				showSkeleton: true,
+				isShowEmpty: false,
+				userID: '',
+				scrollHeight: '',
+				productList: [],
+				showLoading: false,
+				loadingNow: true,
+				loadingText: '上拉加载更多',
+				pageSize: 10,
+				pageNum: 1,
+				hasNextPage: false,
+				pullFlag: true,
+				fromRegularPurchasePage: false,
+				cartQuantity: 0,
+				showRegularBtn: false,
+				isPrecedence:false
+			}
+		},
+		created() {
+			this.setScrollHeight();		
+			this.$api.getStorage().then((resolve) =>{
+				this.userID = resolve.userID
+				this.getProductAgainInfo()
+			})
+		},
+		computed: {
+			...mapState(['hasLogin','userInfo'])
+		},
+		methods:{
+			scrolltolower() {
+				if(this.hasNextPage && this.pullFlag) {
+					this.getProductAgainInfo(true);
+				}
+			},
+			setScrollHeight() {
+				const {windowHeight, pixelRatio} = wx.getSystemInfoSync();
+				this.windowHeight = windowHeight - 1;
+				this.scrollHeight = windowHeight - 1;
+			},
+			getProductAgainInfo(loadMore) {
+				this.showLoading = true;
+				this.loadingNow = true;
+				this.loadingText = '加载中';
+				this.isShowEmpty = false;				
+				if(loadMore) {this.pageNum += 1;}
+				let params = {userId:this.userID,pageNum:this.pageNum,pageSize:this.pageSize}
+				queryAgaingoodslist(params).then(response =>{
+					this.isShowWrapper = true
+					this.cartQuantity = response.data.cartQuantity
+					const responseData = response.data.pageDate;
+					if(responseData.results && responseData.results.length > 0){
+						this.hasNextPage = responseData.hasNextPage;
+						this.isShowEmpty = false;
+						if(loadMore) {
+							this.productList = [...this.productList,...responseData.results];
+						} else {
+							this.productList = [...responseData.results];
+							this.showSkeleton = false;
+						}
+						//价格显示处理
+						let isActFlg,newProductList=[];
+						this.productList.map((item, index)=> {
+							if(item.actFlag == 1){
+								isActFlg = true
+							}else if(item.actFlag == 1 && item.ladderPriceFlag == 1){
+								isActFlg = true
+							}else{
+								isActFlg = false
+							}
+							newProductList.push(Object.assign({},item,{isShowActFlg:isActFlg}))
+						})
+						this.productList = newProductList
+						console.log(this.productList)
+						// 防上拉暴滑
+						this.pullFlag = false;
+						setTimeout(()=>{
+							this.pullFlag = true;
+						},500)
+						// 底部提示文案
+						if(this.hasNextPage) {
+							this.loadingText = '上拉加载更多';
+						} else {
+							this.showLoading = true;
+							this.loadingNow = false;
+						}
+					} else {
+						if(!loadMore) {
+							this.isShowEmpty = true;
+						}
+					}
+				}).catch(response =>{
+					this.$util.msg(response.msg,3000);
+				})
+			},
+			operationHanld(prop){
+				this.$emit('operationConfim',prop)
+			},
+			navToDetailPage(id) {
+				this.isModallayer = true;
+				this.$api.navigateTo(`/pages/goods/product?id=${id}`);
+				this.isModallayer = false;
+			},
+			toCartPage() {
+				uni.switchTab({
+					url: '/pages/tabBar/cart/cart'
+				})
+			},
+			toIndexPage() {
+				uni.switchTab({
+					url: '/pages/tabBar/home/home' 
+				})
+			},
+			repurchModel(){
+				this.$util.modal('','此商品成本有变化原来的购买价已不适用','知道了','',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: 240rpx;
+		padding: 24rpx;
+		background: #fff;
+		margin-bottom: 2rpx;
+		display: flex;
+		flex-direction: row;
+		box-sizing: content-box;
+		.list-img {
+			width: 240rpx;
+			height: 240rpx !important;
+			margin-right: 26rpx;
+			border-radius: 10rpx;
+			border: 2rpx solid #f3f3f3;
+		}
+	}
+	.list-details-info {
+		width: 442rpx;
+		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%;
+			display: inline-block;
+			margin-top: 8rpx;
+			color: #999999;
+		}
+		.list-details-miniQuantity {
+			width: 100%;
+			display: inline-block;
+			margin-top: 7rpx;
+		}
+	}
+	.list-details-price {
+		width: 100%;
+		display: flex;
+		flex-direction: row;
+		justify-content: space-between;		
+		.price-icon {
+			width: 22rpx;
+			height: 28rpx;
+			vertical-align: middle;
+			margin-right: 10rpx;
+		}
+		.price-icon + text {
+			font-size: 25rpx;
+			vertical-align: middle;
+		}
+		.list-login-now {
+			width: 375rpx;
+			color: #F8C499;
+			position: absolute;
+			bottom: 0;
+			.p-no{
+				float: left;
+				font-size: $font-size-24;
+				color: $color-system;
+				margin-right: 10rpx;
+			}
+		}
+		.login-now {
+			padding: 10rpx 10rpx 10rpx 0;
+		}
+		.list-none{
+			margin-top: 30rpx;
+			.price-small{
+				font-size:$font-size-24;
+				line-height: 40rpx;
+				color: #FF2A2A;
+			}
+		}
+		
+		.list-shop{
+			width: 100%;
+			height: auto;
+			flex: 6;
+			.list-price {
+				width: 100%;
+				color: #FF2A2A;
+				float: left;
+				line-height:36rpx ;
+				align-items: center;
+				justify-content: center;
+				.price-larger {
+					margin-top: 20rpx;
+					font-size: $font-size-30;
+					display: inline-block;
+				}
+				.price-view{
+					display: inline-block;
+					width: 78rpx;
+					border-radius: 18rpx;
+					font-size: $font-size-20;
+					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%);
+					}
+				}
+			}
+			.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;
+				}
+			}
+		}
+		.add-cart-btn {
+			flex: 4;
+			width: 156rpx;
+			height: 64rpx;
+			line-height: 64rpx;
+			border-radius: 32rpx;
+			color: #fff;
+			font-size: 26rpx;
+			margin-right: 0;
+			background:linear-gradient(135deg,rgba(242,143,49,1) 0%,rgba(225,86,22,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>

+ 301 - 0
market/pages/address/address.vue

@@ -0,0 +1,301 @@
+<template>
+	<view class="container clearfix">
+		<view v-if="isEmpty" class="empty-container">
+			<image class="empty-container-image" src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AFmO1AAGxLZjSeDg040.png" mode="aspectFit"></image>
+			<view class="txt">您还没有收货地址</view>
+			<view class="txt">点击底部按钮添加收货地址吧~~</view>
+			<view class="login-btn" @click="addAddress('add')">添加新地址</view>
+		</view>
+		<view v-else class="address-list" :style="{'height': scrollHeight + 'px'}">
+			<scroll-view scroll-y="true" :style="{'height': scrollHeight + 'px'}">
+				<view class="list" v-for="(item, index) in addressList" :key="index" @click="checkAddress(item)">
+					<view class="wrapper">
+						<view class="u-box">
+							<text class="name">{{item.shouHuoRen}}</text>
+							<text class="mobile">{{item.mobile}}</text>
+						</view>
+						<view class="u-box b-b">
+							<text class="address">收货地址:{{item.province}}{{item.city}}{{item.town}}{{item.address}}</text>
+						</view>
+						<view class="u-box b-t">
+							<view v-if="item.defaultFlag == 1" class="tag-left">
+								<view class="tag">默认地址</view>
+							</view>
+							<view v-else class="tag-left"></view>
+							<view class="tag-right">
+								<view class="t-b"  @click.stop="deleteAddress(item.addressID)">
+									<text class="iconfont icon-shanchu"></text>
+									<text class="txt">删除</text>
+								</view>
+								<view class="t-b"  @click.stop="addAddress('edit',item)">
+									<text class="iconfont icon-bianji"></text>
+									<text class="txt">编辑</text>
+								</view>
+								
+							</view>
+						</view>
+					</view>
+				</view>
+			</scroll-view>
+			<view class="add-btn" @click="addAddress('add')">添加新地址</view>
+		</view>
+		<!-- 删除弹窗 -->
+		<model-alert v-if="isShowDelModal"
+					 :alertText='alertText' 
+					 @btnConfirm ='confirmDetele'>
+		</model-alert>
+	</view>
+</template>
+
+<script>
+	import authorize from '@/common/config/authorize.js'	
+	import modelAlert from '@/components/module/modelAlert/modelAlert.vue'
+	import { queryAddressList , deleteNewAddress } from '@/api/cart.js'
+	export default {
+		components:{
+			modelAlert
+		},
+		data() {
+			return {
+				isSelect:false,
+				isEmpty:false,
+				isLoadMore:false,
+				userID:'',
+				pageNum:1,
+				pageSize:10,
+				addressList: [],
+				hasNextPage:false,
+				allowDataStatus:true,
+				wrapperHeight:'100%',
+				scrollHeight:'',
+				currPage:'',//当前页面
+				prevPage:''//上一个页面
+			}
+		},
+		onLoad(option){	
+			if(option.type=='select'){this.isSelect = true;}
+			this.setScrollHeight();
+		},
+		onReachBottom() {
+			// console.log('滑动到页面底部')
+			if(this.isLoadMore) {
+				this.initAddressList();
+			}
+		},
+		methods: {
+			setScrollHeight() {	// 窗口高度 - 底部距离
+				setTimeout(()=> {
+					const query = wx.createSelectorQuery().in(this);
+					query.selectAll('.add-btn').boundingClientRect();
+					query.exec(res => {
+						if(res[0][0]){
+							let winHeight = this.$api.getWindowHeight(),
+								eleTop = res[0][0].top - 1;
+								this.scrollHeight =  eleTop;
+						}
+					})
+				}, 500)
+			},
+			initAddressList(){	
+				let params = {pageNum:this.pageNum,pageSize:this.pageSize,userID:this.userID}
+				queryAddressList(params).then(response =>{
+					if(response.data.results == ''){
+						this.isEmpty = true
+					}else{
+						this.isEmpty = false
+						let results =[];
+						results = response.data.results;
+						this.addressList = this.addressList.concat(results);
+						this.pageNum = response.index +1;
+						if(this.pageNum === response.totalPage + 1 ){
+							this.isLoadMore = false;
+						} else {
+							this.isLoadMore = true;
+						}
+					}
+				}).catch(response =>{
+					this.$util.msg(res.msg,2000)
+				})
+			},
+			//选择地址
+			checkAddress(item){
+				//是否需要返回地址(从订单确认页跳过来选收货地址)
+				if(!this.isSelect){return ;}
+				uni.setStorageSync('selectAddress',item)
+				var pages = getCurrentPages();
+				var prevPage = pages[pages.length - 2];  //上一个页面	
+					prevPage.setData({select:'select'})
+				uni.navigateBack();
+			},
+			addAddress(type,item){
+				uni.navigateTo({
+					url: `/pages/user/address/addressManage?type=${type}&data=${JSON.stringify(item)}`
+				})
+			},
+			//删除收货地址
+			deleteAddress(id){
+				console.log('删除地址的ID',id)
+				this.$util.modal('','确定要删除该地址?','确定','取消',true,() =>{
+					deleteNewAddress({addressID:id,userID:this.userID}).then(response =>{
+						console.log('11111111111')
+						this.$util.msg('删除成功',2000)
+						setTimeout(() =>{
+							this.pageNum = 1;
+							this.addressList = [];
+							this.initAddressList();
+						},2000)
+					}).catch(response =>{
+						this.$util.msg(response.msg,2000);
+						setTimeout(function(){
+							uni.switchTab({
+								url:'/pages/tabBar/home/home'
+							})
+						},1000)
+					})
+				})
+			}
+		},
+		onShow() {
+			this.$api.getStorage().then((resolve) =>{
+				this.userID = resolve.userID
+				this.pageNum = 1;
+				this.addressList = [];
+				this.initAddressList();
+				var pages = getCurrentPages();
+				var prevPage = pages[pages.length - 2];  //上一个页面	
+					// prevPage.setData({select:''})
+			})
+		}
+	}
+</script>
+
+<style lang='scss'>
+	page {
+		height: auto;
+	}
+	page,.container{
+		/* padding-bottom: 120upx; */
+		background: #F7F7F7;
+		border-top: 1px solid #EBEBEB;
+	}
+	.container{
+		position: relative;
+	}
+	.list{
+		display: flex;
+		align-items: center;
+		width: 702rpx;
+		height: auto;
+		padding: 24rpx;
+		background: #FFFFFF;
+		position: relative;
+		border-bottom: 1px solid #EBEBEB;
+	}
+	.wrapper{
+		display: flex;
+		flex-direction: column;
+		flex: 1;
+	}
+	.u-box.b-b{
+		
+	}
+	.u-box.b-b{
+		margin-bottom:24rpx;
+	}
+	.u-box.b-t{
+		margin-bottom:0;
+	}
+	.u-box{
+		display: flex;
+		align-items: center;
+		font-size: $font-size-28;
+		color: $text-color;
+		line-height: 40rpx;
+		margin-bottom: 12rpx;
+		.name{
+			margin-right: 40rpx;
+			font-weight: bold;
+		}
+		.mobile{
+			font-weight: bold;
+		}
+		.tag-left{
+			flex: 6;
+			.tag{
+				width: 120rpx;
+				height: 40rpx;
+				background: $color-system;
+				border-radius: 20rpx;
+				font-size: $font-size-24;
+				color: #FFFFFF;
+				line-height: 40rpx;
+				text-align: center;
+				padding: 0 6rpx;
+			}
+		}
+		.tag-right{
+			flex: 4;
+			display: flex;
+			text-align: right;
+			.t-b{
+				flex: 1;
+				line-height: 40rpx;
+				.txt{
+					font-size: $font-size-24;
+					color: $text-color;
+					line-height: 40rpx;
+				}
+			}
+			.icon-shanchu{
+				color:#FF2A2A ;
+				margin-right: 8rpx;
+			}
+			.icon-bianji{
+				color: #2A7AFF;
+				margin-right: 8rpx;
+			}
+		}
+		.address{
+			font-size: $font-size-28;
+			color: $text-color;
+			line-height: 40rpx;
+			-o-text-overflow: ellipsis;
+			text-overflow: ellipsis;
+			display: -webkit-box;
+			word-break: break-all;
+			-webkit-box-orient: vertical;
+			-webkit-line-clamp: 2;
+			overflow: hidden;
+		}
+	}
+	.add-btn{
+		position: fixed;
+		left: 24rpx;
+		right: 24rpx;
+		bottom: 34rpx;
+		z-index: 95;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		width: 702rpx;
+		height: 88rpx;
+		font-size: $font-size-28;
+		line-height: 88rpx;
+		color: #FFFFFF;
+		text-align: center;
+		background: $btn-confirm;
+		border-radius: 14rpx;
+	}
+	.adds-btn{
+		width: 702rpx;
+		height: 88rpx;
+		font-size: 28rpx;
+		line-height: 88rpx;
+		color: #FFFFFF;
+		margin: 0 auto;
+		text-align: center;
+		background: #000000;
+		border-radius: 14rpx;
+	}
+</style>
+

+ 261 - 0
market/pages/address/addressManage.vue

@@ -0,0 +1,261 @@
+<template>
+	<view class="container clearfix">
+		<view class="add-content">
+			<view class="text-input b-b">
+				<input class="input" type="text" v-model="addressData.shouHuoRen" @input="onShouHuoRen" placeholder="收货人姓名" placeholder-class="placeholder" />
+			</view>
+			<view class="text-input b-b">
+				<input class="input" type="number" maxlength="11" v-model="addressData.mobile"  @input="onMobile" placeholder="手机号码" placeholder-class="placeholder" />
+			</view>
+			<view class="text-input b-b" @click="showMulLinkageThreePicker">
+				<text class="input">
+					{{addressData.allAddress}}
+				</text>		
+				<text class="iconfont icon-xiayibu"></text>
+			</view>
+			<view class="text-textarea b-b"> 
+				<view class="textarea show" v-if="isShowInput">{{addressData.addressDetail ?addressData.addressDetail :'详细地址:如道路、门牌号、小区、楼房号、单元室等'}}</view>
+				<textarea 	v-else
+							class="textarea" 
+							type="text" 
+							v-model="addressData.addressDetail" 
+							placeholder="详细地址:如道路、门牌号、小区、楼房号、单元室等" 
+							placeholder-class="placeholder"
+							maxlength="50"
+							@input="onTextareaInput"
+							:class="isShowInput ? '':''"
+				/>
+			</view>
+			<view class="text-input default-row">
+				<text class="tit">设为默认地址</text>
+				<switch :checked="switchDefault" color="#5FB00A" @change="switchChange" style="transform:scale(0.8)" />
+			</view>
+			<button class="add-btn" :disabled="isConfirm" :class="[isConfirm == true ? 'disabled':'']" @click="confirm">{{buttonText}}</button>
+		</view>
+		<mpvue-city-picker :themeColor="themeColor" 
+							ref="mpvueCityPicker" 
+						    :pickerValueDefault="cityPickerValueDefault"
+							@onCancel="onCancel" 
+							@onConfirm="onConfirm">
+		</mpvue-city-picker>
+
+	</view>
+</template>
+
+<script>	
+	import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue'
+	import authorize from '@/common/config/authorize.js'	
+	import { addNewAddress,updateAddress } from '@/api/cart.js'
+	export default {
+		components:{
+			mpvueCityPicker
+		},
+		data() {
+			return {
+				buttonText:'保存',
+				addType:1,				//记录添加地址的类型
+				isConfirm:true,
+				isShowInput:false,
+				switchDefault:false,
+				addressData:{
+					addressID:'',
+					allAddress:'所在地区',
+					userID: '',			//用户id ,只在新增收货地址时传
+					shouHuoRen: '',		//收货人
+					mobile:'',			//收货人手机
+					townID:'',			//区ID
+					addressDetail: '',	//地址
+					defaultFlag:0,		//是否默认收货地址(0 不是默认,1 默认)
+				},
+				params:{}				//参数
+			}
+		},
+		onLoad(option){
+			console.log(option.data)
+			let title = '添加新地址'
+			if(option.type==='edit'){
+				title = '编辑收货地址'
+				this.isConfirm = false;
+				this.addType = 2;				
+				this.addressData = JSON.parse(option.data)
+				this.addressData.allAddress = `${this.addressData.province}-${this.addressData.city}-${this.addressData.town}`
+				this.addressData.addressDetail = this.addressData.address 
+				this.addressData.defaultFlag = this.addressData.defaultFlag;
+				if(this.addressData.defaultFlag == 1){
+					this.switchDefault = true
+				}else{
+					this.switchDefault = false
+				}
+			}
+			uni.setNavigationBarTitle({
+				title
+			})
+		},
+		methods: {			
+			switchChange(e){
+				// console.log('==========',e.detail.value);
+				if(e.detail.value== true){
+					this.addressData.defaultFlag = 1;
+				}else{
+					this.addressData.defaultFlag = 0;
+				}
+			},
+			// 三级联动选择
+			showMulLinkageThreePicker() {
+				this.isShowInput = true
+				this.$refs.mpvueCityPicker.show()
+			},
+			onConfirm(e) {
+				// console.log('地址',e);
+				this.addressData.allAddress = e.name;
+				this.addressData.townID = e.cityCode;	
+			},			
+			//提交
+			confirm(){
+				let data = this.addressData;
+				if(!data.shouHuoRen){
+					this.$util.msg('请填写收货人');
+				}
+				if(data.address =='所在地区'){
+					this.$util.msg('请选择所在地区');
+				}
+				if(!/(^1[0-9][0-9]{9}$)/.test(data.mobile)){
+					this.$util.msg('请输入正确的手机号码');
+					return;
+				}
+				if(this.addType ==1){
+					this.params ={
+							userID:data.userID  ,		//用户id ,只在新增收货地址时传
+							shouHuoRen:data.shouHuoRen ,//收货人
+							townID:data.townID,			//区ID
+							addressDetail:data.addressDetail,//地址
+							mobile:data.mobile,			//手机
+							defaultFlag:data.defaultFlag//是否默认收货地址(0 不是默认,1 默认)
+						}
+					this.postAddressData(this.params)	
+				}else{
+					this.params =  this.addressData;
+					this.postAddressData(this.params)
+				}
+			},
+			postAddressData(res){
+				this.btnText(true)
+				addNewAddress(res).then( response=>{
+					this.$util.msg('添加成功',2000);
+					this.btnText(false)
+					setTimeout(()=>{
+						uni.navigateBack();
+					},2000)
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000);
+					setTimeout(function(){
+						uni.switchTab({
+							url:'/pages/tabBar/home/home'
+						})
+					},1000)
+				})
+			},
+			btnText(flg){
+				if(flg){
+					this.isConfirm = true;
+					this.buttonText = '保存中...'
+				}else{
+					this.isConfirm = false;
+					this.buttonText = '保存'
+				}
+			},
+			onShouHuoRen(e){
+			   this.addressData.shouHuoRen = e.detail.value;
+			   // console.log(this.addressData.shouHuoRen)
+			   this.initInput();
+			},
+			onMobile(e){
+			   this.addressData.mobile = e.detail.value;
+			   // console.log(this.addressData.mobile)
+			   this.initInput();
+			},
+			onTextareaInput(e){
+			   this.addressData.addressDetail = e.detail.value;
+			   // console.log(this.addressData.addressDetail)
+			   this.initInput();
+			},
+			initInput(){
+				if(this.addressData.shouHuoRen !== "" && this.addressData.mobile !=="" && this.addressData.addressDetail !==""){
+					this.isConfirm =false;
+				}else{
+					this.isConfirm =true;
+				}
+			}
+		},
+		onShow() {
+			this.$api.getStorage().then((resolve) =>{
+				this.addressData.userID = resolve.userID
+			})
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{
+		height: auto;
+		background: $bg-color;
+		border-top: 1px solid #EBEBEB;
+	}
+	.add-content{
+		width: 702rpx;
+		padding:0 24rpx;
+	}
+	.icon-xiayibu{
+		font-size: 36rpx;
+		color: $text-color;
+	}
+	.text-textarea{
+		width: 654rpx;
+		height: 216rpx;
+		padding: 24rpx;
+		background: #F7F7F7;
+		.textarea{
+			width: 100%;
+			height: 100%;
+			font-size: $font-size-28;
+			color: $text-color;
+			z-index: 1;
+		}
+		.textarea.hide{
+			opacity: 0;
+		}
+		.textarea.show{
+			color: #999999;
+		}
+	}
+	.default-row{
+		background: #FFFFFF;
+		margin-top: 16upx;
+		.tit{
+			font-size: $font-size-28;
+			line-height: 40rpx;
+			color: #333333;
+			flex: 1;
+		}
+		switch{
+			transform: translateX(16upx) scale(.9);
+		}
+	}
+	.add-btn{
+		width: 702rpx;
+		height: 88rpx;
+		font-size: $font-size-28;
+		line-height: 88rpx;
+		color: #FFFFFF;
+		margin: 0 auto;
+		text-align: center;
+		background: $btn-confirm;
+		border-radius: 14rpx;
+		margin-top: 80rpx;
+	}
+	.add-btn.disabled{
+		background: #F8F8F8;
+		border-radius: 14rpx;
+	}
+</style>
+

+ 385 - 0
market/pages/cart/buyagain.vue

@@ -0,0 +1,385 @@
+<template>
+	<view class="container all-type-list-wrapper">
+		<buyagain-list ref="productList" @operationConfim="hanldOperationConfim"></buyagain-list>
+		<!--底部选择模态层弹窗组件 -->
+		<view class="popup spec" :class="specClass"  @touchmove.stop.prevent="discard" @tap="hideSpec">
+			<!-- 遮罩层 -->
+			<view class="mask"></view>
+			<view class="layer" @tap.stop="discard">
+				<view class="content">
+					<view class="layer-smimg">
+						<image :src="handleData.mainImage" mode=""></image>
+					</view>
+					<view class="layer-nunbox">
+						<view class="layer-nunbox-t">
+							<view class="layer-nunbox-text">数量:</view>
+							<view class="number-box">
+								<view  class="iconfont icon-jianhao" :class="[isQuantity==true?'disabled':'']" @click="changeCountSub()"></view>
+								<input class="btn-input" type="number" v-model="number" maxlength='4'  @blur="changeNumber($event)">
+								<view  class="iconfont icon-jiahao"  :class="[isStock==true?'disabled':'']" @click="changeCountAdd()"></view>
+							</view>
+						</view>
+						<view class="layer-nunbox-b">
+							<view class="text">单价:
+								<text class="p sm">¥</text>
+								<text class="p bg">{{buyRetailPrice.toFixed(2)}}</text>
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="btn">
+					<view class="button buy" @click="toConfirmation">立即购买</view>
+					<view class="button add" @click="getAddProductCart">加入购物车</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import buyagainList from '@/components/module/listTemplate/buyagainList'
+	import { shoppingAddCart } from "@/api/cart.js" 
+	export default{
+		components:{
+			buyagainList
+		},
+		data(){
+			return{
+				userID: '',
+				serverUrl: '',
+				emptyText: '',
+				lastPageType: '',
+				lastPageVal: '',
+				specClass: '',//规格弹窗css类,控制开关动画
+				handleData:{},
+				isQuantity:false,
+				isStock:false,
+				minBuyNumber:0,
+				number:0,
+				buyRetailPrice:0
+			}
+		},
+		onLoad() {
+
+		},
+		methods:{
+			hanldOperationConfim(data){//显示选择数量确认弹窗
+				console.log(data)
+				this.specClass = 'show';
+				this.handleData = data
+				this.number = data.minBuyNumber
+				this.minBuyNumber = data.minBuyNumber
+				this.buyRetailPrice = data.retailPrice;
+			},
+			hideSpec() {//关闭选择数量确认弹窗
+				this.specClass = 'hide';
+				setTimeout(() => {
+					this.specClass = 'none';
+				}, 200);
+			},
+			changeCountAdd(){//popup弹窗数量增加按钮
+				this.number++
+				if(this.handleData.ladderPriceFlag == '1'){
+					this.handleData.productLadderPrices.forEach((item,index)=>{
+						if(this.number>=item.buyNum){
+							this.buyRetailPrice = item.buyPrice
+						}
+					})
+				}
+			},
+			changeCountSub(){//popup弹窗数量减按钮
+				if(this.number<=this.minBuyNumber){
+					this.number= this.minBuyNumber
+					this.isQuantity =true
+					this.$util.msg(`该商品最小起订量为${this.minBuyNumber}`,2000);
+					return
+				}else{
+					this.number--
+					if(this.handleData.ladderPriceFlag == '1'){
+						this.handleData.productLadderPrices.forEach((item,index)=>{
+							if(this.number>=item.buyNum){
+								this.buyRetailPrice = item.buyPrice
+							}
+						})
+					}
+					this.isQuantity =false
+				}
+			 },
+			changeNumber(e){
+				let _value = e.detail.value;
+				if(!this.$api.isNumber(_value)){
+					this.number = this.minBuyNumber
+				}else if(_value < this.minBuyNumber){	
+					this.$util.msg(`该商品最小起订量为${this.minBuyNumber}`,2000);
+					this.number = this.minBuyNumber
+				}else{
+					this.number = e.detail.value
+				}
+			},
+			toConfirmation(){//跳转确认订单页面
+				this.specClass = 'hide';
+				let productStp ={
+						allPrice:this.number*this.buyRetailPrice,
+						allCount:this.number,
+						id:this.handleData.productID,
+						productCount:this.number
+				}	
+				this.$api.navigateTo(`/pages/user/order/create-order?type=prodcut&data=${JSON.stringify({data:productStp})}`)
+				setTimeout(() => {
+					this.specClass = 'none';
+				}, 200);
+			},
+			getAddProductCart(){//增加购物车成功和toast弹窗提示成功
+				console.log(this.number)
+				shoppingAddCart({productID:this.handleData.productID,userID:this.userID,productCount:this.number}).then(response => {
+					this.specClass = 'hide';
+					this.$util.msg(response.msg,1500,true,'success')
+					setTimeout(() => {this.specClass = 'none'}, 200)
+					this.$refs.productList.cartQuantity = response.data
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000);
+				})
+			},
+			discard(){
+				//丢弃
+			}
+		},
+		onShow() {
+			let pages = getCurrentPages(),thisPage = pages[pages.length - 1];
+			this.$api.getStorage().then((resolve) =>{
+				this.userID = resolve.userID
+			})
+		},
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background: $sub-bg-color;
+		.all-type-list-wrapper {
+			display: flex;
+			flex-direction: column;
+		}
+	}
+	/* 加入购物模态层*/
+	@keyframes showPopup {
+		0% {
+			opacity: 0;
+		}
+		100% {
+			opacity: 1;
+		}
+	}
+	@keyframes hidePopup {
+		0% {
+			opacity: 1;
+		}
+		100% {
+			opacity: 0;
+		}
+	}
+	@keyframes showLayer {
+		0% {
+			transform: translateY(0);
+		}
+		100% {
+			transform: translateY(-100%);
+		}
+	}
+	@keyframes hideLayer {
+		0% {
+			transform: translateY(-100%);
+		}
+		100% {
+			transform: translateY(0);
+		}
+	}
+	@keyframes showAmnation {
+		0% {
+			top: -12rpx;
+			opacity: 0;
+		}
+		50% {
+			top: -60rpx;
+			opacity: 1;
+		}
+		100% {
+			top: -100rpx;
+			opacity: 0;
+		}
+	}
+	@keyframes hideAmnation {
+		0% {
+			top: -100rpx;
+			opacity: 0;
+		}
+		100% {
+			top: -12rpx;
+			opacity: 0;
+		}
+	}
+	.popup {
+		position: fixed;
+		top: 0;
+		width: 100%;
+		height: 100%;
+		z-index: 999;
+		display: none;
+		.mask{
+			position: fixed;
+			top: 0;
+			width: 100%;
+			height: 100%;
+			z-index: 21;
+			background-color: rgba(0, 0, 0, 0.6);
+		}
+		.layer {
+			position: fixed;
+			z-index: 22;
+			bottom: -294rpx;
+			width: 702rpx;
+			padding: 24rpx 24rpx 36rpx 24rpx;
+			height: 236rpx;
+			border-radius: 30rpx 30rpx 0 0;
+			background-color: #fff;
+			display: flex;
+			flex-wrap: wrap;
+			align-content: space-between;
+			.content {
+				width: 100%;
+			}
+			.btn {
+				width: 100%;
+				height: 88rpx;
+				display: flex;
+				.button {
+					width: 340rpx;
+					height: 88rpx;
+					color: #fff;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					font-size: $font-size-28;
+					border-radius: 14rpx;
+					&.buy{
+						background: $btn-confirm;
+					}
+					&.add{
+						background: rgba(239, 175, 0, 1);
+						margin-left: 20rpx;
+					}
+				}
+			}
+		}
+		
+		&.show {
+			display: block;
+			.mask{
+				animation: showPopup 0.2s linear both;
+			}
+			.layer {
+				animation: showLayer 0.2s linear both;
+			}
+		}
+		&.hide {
+			display: block;
+			.mask{
+				animation: hidePopup 0.2s linear both;
+			}
+			
+			.layer {
+				animation: hideLayer 0.2s linear both;
+			}
+		}
+		&.none {
+			display: none;
+		}
+		&.service {
+			.row {
+				margin: 30upx 0;
+				.title {
+					font-size: 30upx;
+					margin: 10upx 0;
+				}
+				.description {
+					font-size: 28upx;
+					color: #999;
+				}
+			}
+		}
+		.layer-smimg{
+			width: 114rpx;
+			height: 114rpx;
+			float: left;
+			border-radius: 10rpx;
+			margin-right: 24rpx;
+			image{
+				width: 114rpx;
+				height: 114rpx;	
+				border-radius: 10rpx;
+			}
+		}
+		.layer-nunbox{
+			justify-content: space-between;
+			align-items: center;
+			width: 536rpx;
+			height: 88rpx;
+			padding: 13rpx 0 0 0;
+			float: left;
+			.layer-nunbox-t{
+				width: 100%;
+				height:44rpx;
+				position:relative;
+				display: flex;
+				.layer-nunbox-text{
+					line-height: 44rpx;
+					font-size: $font-size-28;
+				}
+				.number-box{
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					.iconfont{
+						font-size: $font-size-32;
+						padding:0 20rpx;
+						font-size: $text-color;
+					}
+					.btn-input{
+						width: 62rpx;
+						height: 48rpx;
+						line-height: 48rpx;
+						background: #F8F8F8;
+						border-radius: 4rpx;
+						text-align: center;
+						font-size: $font-size-28;
+					}
+				}
+				.product-step{
+					position: absolute;
+					left: 45rpx;
+					bottom: 0;
+					height: 44rpx;
+					background: #FFFFFF;
+				}
+			}
+			.layer-nunbox-b{
+				width: 100%;
+				height:44rpx;
+				margin-top: 13rpx;
+			}
+			.text{
+				line-height: 44rpx;
+				font-size: $font-size-28;
+				.p{
+					color: #FF2A2A;
+				}
+				.p:first-child{
+					margin-left: 30rpx;
+				}
+				.p.sm{
+					font-size: $font-size-24;
+				}
+			}
+		}
+	}	
+</style>

+ 1003 - 0
market/pages/cart/cart.vue

@@ -0,0 +1,1003 @@
+<template>
+	<view class="container cart clearfix">	
+		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="9"></tui-skeleton>
+		<view class="container-cart-main tui-skeleton">
+			<view v-if="!isEmpty" class="container-cart">
+				<scroll-view class="cart-content"  scroll-y  @scrolltolower="toLower">
+					<view class="goods-list">
+						<view v-for="(item, index) in goodsList" :key="index" class="goods-item">
+							<view class="shoptitle">
+								<!--选择商店的全部商品 :disabled="isNnder"-->
+								<view class="checkbox-box">
+									<button class="checkbox iconfont" 
+											:class="[item.checked ?'icon-gouxuanl':'icon-weigouxuan']" 									
+											@click.stop="checkShop(item)" :disabled="item.isDisabled && !isshowDelbtn">
+									</button>
+								</view>
+								<view class="text">{{item.name}}</view> 
+							</view>
+							<view class="productlist">
+								<view 	class="goods-pros" 
+										v-for="(pros,idx) in item.productsList" 
+										:key="idx"														
+								>
+									<view class="goods-pros-t">
+										<!--选择商品-->
+										<view class="checkbox-box" :class="[pros.validFlag == '3' && !isshowDelbtn ?'disabled' : '']">
+											<button class="checkbox iconfont" 
+													:disabled="pros.validFlag == '3' && !isshowDelbtn"
+													:class="[pros.productsChecked ?'icon-gouxuanl':'icon-weigouxuan']" 
+													@click.stop="ischeck(item,pros,idx)">
+											</button>
+										</view>
+										<view class="pros-img" @click.stop="navToListPage(pros.productID)"	><image :src="pros.mainImage" alt="" /></view>
+										<view class="pros-product">
+											<view class="producttitle" @click.stop="navToListPage(pros.id)"	>
+												<text v-if="pros.validFlag == '3'" class="no-text">商品已下架</text>{{pros.name}}
+											</view>
+											<view class="productspec">规格:{{pros.unit}}</view>
+											<view class="productprice">
+												<!--使用过滤器对总价改变-->
+												<view 	class="price" 
+														:class="[pros.validFlag == '3' ?'disabled' : '']">
+														<text :class="[pros.validFlag == '3' ?'disabled' : 'money-sign']">¥</text>{{pros.retailPrice.toFixed(2)}}
+												</view>
+												<view class="count" v-if="pros.validFlag == '2'"  :class="[isshowDelbtn ? 'none':'show']">
+													<view class="number-box">
+														<view  class="iconfont icon-jianhao" :class="[pros.validFlag == '3'?'disabled':'']" @click="changeCountSub(item,pros)"></view>
+														<input class="btn-input" type="number" maxlength='4' v-model="pros.productCount" @blur="changeNnmber($event,item,pros)">
+														<view  class="iconfont icon-jiahao"  :class="[pros.validFlag == '3'?'disabled':'']" @click="changeCountAdd(item,pros)"></view>
+													</view>
+												</view>
+											</view>
+										</view>	
+									</view>
+								</view>
+							</view>	
+							<view class="goods-pros-b" :class="[isshowDelbtn ? 'none':'show']" >
+								<view class="sum">合计:<text class="money"><text class="money-sign">¥</text>{{item.totalPrice.toFixed(2)}}</text></view>
+							</view>
+						</view>
+					</view>	
+					<!--加载loadding-->
+					<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+					<tui-nomore :visible="!pullUpOn" bgcolor="#F7F7F7" :text='nomoreText'></tui-nomore>
+					<!--加载loadding-->
+				</scroll-view>
+				<!-- 脚部菜单 -->
+				<view class="footer">
+					<view class="footer-le">
+						<view class="foot-check checkbox-box" @tap.stop="checkAll()">
+							<button class="checkbox iconfont" :class="[isCheckAll?'icon-gouxuan':'icon-weigouxuan']"></button> 
+							<view class="text">全选</view>
+						</view>
+						<view class="foot-check-delbtn">
+							<button class="delBtn" @tap.stop="showDelManager">删除</button>
+						</view>
+						<view class="sum">总价:<text class="money-sign">¥</text><text class="money">{{allPrice.toFixed(2)}}</text></view>
+					</view>
+					<view v-if="!isshowDelbtn" class="footer-ri" >
+						<view class="btn" @tap="toConfirmation">去结算({{allCount}})</view>
+					</view>
+					<view v-else class="footer-del">
+						<view class="btn btn-cancel" @tap.stop="hideDelManage">取消</view>
+						<view class="btn btn-confirm" @tap.stop="deleteList">删除</view>
+					</view>
+				</view>
+			</view>
+			<view v-if="isEmpty" class="cart-content empty">
+				<view  class="empty-container">
+					<image class="empty-container-image" src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AWdWzAAGlgAP0das422.png" mode="aspectFit"></image>
+					<text class="error-text">购物车空空如也,快去商城逛逛吧~</text>
+					<view class="login-btn"  @click="goIndex">去商城</view>
+				</view>
+			</view>
+		</view>
+		<!-- 透明模态层 -->
+		<modal-layer v-if='modallayer'></modal-layer>
+	</view>
+</template>
+<script>
+	import tuiSkeleton from "@/components/tui-skeleton/tui-skeleton"
+	import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
+	import tuiNomore from "@/components/tui-components/nomore/nomore"
+	import modalLayer from "@/components/modal-layer"
+	import { mapState,mapMutations } from 'vuex';
+	import { queryShoppingCartList,shoppingCartUpdate,shoppingCartDelete } from "@/api/cart.js" 
+	
+	export default{
+		components:{
+			tuiSkeleton,
+			tuiLoadmore,
+			tuiNomore,
+			modalLayer
+		},
+		data(){
+			return{
+				userID:'',
+				alertType:'',
+				isStock:'',
+				goodsList:[],	//购物车的商品
+				delGoodsList:'',//要删除的商品
+				setGoodData:'', //确认订单的商品
+				isCheckAll:false,//是否全选
+				allPrice:0,//所有价格
+				allCount:0,//被选中的产品数量
+				isNnder:true,
+				isModallayer:false,
+				skeletonShow:true,
+				isshowDelbtn:false,
+				isDisabled: false, // 供应商/店铺全选是否禁用状态
+				isEmpty:false,//显示空购物车
+				scrollHeight: 'auto',
+				nomoreText: '上拉显示更多',
+				hasNextPage: false,
+				loadding: false,
+				pullUpOn: true,
+				pullFlag: true,
+				pageSize: 10,
+				pageNum: 1,
+			}
+		},
+		onLoad(){
+			this.setScrollHeight();
+		},
+		computed: {
+			...mapState(['hasLogin','userInfo'])
+		},
+		filters:{//单件商品的价格 × 数量
+		    totalprice(val,count){
+		        return (val * count).toFixed(2)
+		    }
+		},	
+		methods:{
+			initData(){
+				this.isModallayer = false //遮罩层 防止多次点击
+				this.skeletonShow = true //预加载圆圈
+				this.isCheckAll=false//是否全选
+				this.$api.getStorage().then((resolve) => {
+					this.userID = resolve.userID;
+					this.initGetCartGoodsList();
+				})	
+			},
+			initLogin(){
+				this.$api.redirectTo('/pages/login/login-accont?type=4')
+			},
+			setScrollHeight() {
+				// 窗口高度-footer高度
+				const {windowHeight, pixelRatio} = uni.getSystemInfoSync();
+				setTimeout(()=> {
+					const query = uni.createSelectorQuery().in(this);
+					query.selectAll('.footer').boundingClientRect();
+					query.exec(res => {
+						this.windowHeight = windowHeight;
+						if(res[0][0]) {
+							this.scrollHeight = windowHeight - res[0][0].height;
+						}
+					})
+				}, 500)
+			},
+			initGetCartGoodsList(){//初始化购物车 index:1
+				let params = {userID:this.userID,pageNum:1,pageSize:this.pageSize}
+				queryShoppingCartList(params).then(response =>{
+					this.skeletonShow = false
+					this.$store.commit('updateAllNum',response.data.cartQuantity)
+					const resultsData = response.data.pageDate;	
+					if(resultsData.results&&resultsData.results.length > 0){
+						this.isEmpty =false
+						this.hasNextPage = resultsData.hasNextPage;
+						this.goodsList = resultsData.results;
+						this.goodsList.forEach((item,index) => {
+							let productsListLength = item.productsList.length,
+								invalidLength = 0;
+							item.productsList.forEach(pros => {
+								pros.shopID = item.shopID;
+								if(pros.validFlag == '3') {invalidLength++;}
+							})
+							item.isDisabled = invalidLength === productsListLength;
+						})
+						this.pullFlag = false;
+						setTimeout(()=>{this.pullFlag = true;},500)
+						if(this.hasNextPage){
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						}else{
+							if(this.goodsList.length < 4){
+								this.pullUpOn = true
+							}else{
+								this.pullUpOn = false
+								this.nomoreText = '已至底部'
+							}
+						}
+					} else {
+						this.goodsList = [];
+						this.isEmpty =true
+					}
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000);
+				})
+			},		
+			getOnReachBottomData(){//上拉加载
+				this.pageNum+=1
+				let params = {userID:this.userID,pageNum:this.pageNum,pageSize:this.pageSize}
+				queryShoppingCartList(params).then(response =>{
+					let resultsData = response.data.pageDate
+					this.hasNextPage = resultsData.hasNextPage;
+					this.goodsList = this.goodsList.concat(resultsData.results)
+					this.pullFlag = false;// 防上拉暴滑
+					setTimeout(()=>{this.pullFlag = true;},500)
+					if(this.hasNextPage){
+						this.pullUpOn = false
+						this.nomoreText = '上拉显示更多'
+					}else{
+						this.loadding = false
+						this.pullUpOn = false
+						this.nomoreText = '已至底部'
+					}
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000);
+				})
+			},
+			ischeck(item,pro){//为未选中的时候改变为true,反之为true
+				pro.productsChecked = !pro.productsChecked;
+				this.updateProductCheckedAllBtn(item);
+				this.updateCheckAllBtn();
+			},
+			updateProductCheckedAllBtn(item) {// 单独每个供应商的勾选判断
+				let productsList = item.productsList,
+					productsCheckedLength = 0,
+					disabledLength = 0;
+				if(this.isshowDelbtn) {
+					productsList.forEach(pros => {
+						if(pros.productsChecked) {
+							productsCheckedLength++;
+						}
+					})
+				} else {
+					productsList.forEach(pros => {
+						if(pros.productsChecked && pros.validFlag != '3') {
+							productsCheckedLength++;
+						}
+						if(pros.validFlag == '3') {
+							disabledLength++;
+						}
+					})
+				}
+				item.checked = productsCheckedLength === productsList.length - disabledLength;
+			},
+			updateCheckAllBtn() {// 全选勾选判断
+				let goodsCheckedLength = 0,
+					disabledListLength = 0,
+					goodsList = this.goodsList;
+				goodsList.forEach(item => {
+					if(item.checked) {
+						goodsCheckedLength++;
+					}
+					if(item.isDisabled && !this.isshowDelbtn) {
+						disabledListLength++;
+					}
+				})
+				this.isCheckAll = goodsCheckedLength === goodsList.length - disabledListLength;
+			},
+			checkShop(item){//与单选商品类似
+				item.checked = !item.checked;
+				this.setProductChecked(item);
+				this.updateCheckAllBtn();
+			},
+			setProductChecked(item) {
+				let products = item.productsList;
+				products.forEach(pros=>{
+					if(item.checked) {
+						if(pros.validFlag =='3'){
+							// 无效
+							this.isNnder = true;
+							pros.productsChecked = this.isshowDelbtn ?true :false;
+						}else{
+							// 有效
+							this.isNnder = false;
+							pros.productsChecked = true;
+						}
+					} else {
+						pros.productsChecked = false;
+					}
+				})
+			},
+			updateBothCheckBtn() {
+				if(this.isshowDelbtn) {
+					// 当管理删除按钮出现时,失效的商品可被选择
+					this.goodsList.forEach((item)=>{
+						item.checked = this.isCheckAll;
+						this.setProductChecked(item);
+					})
+				} else {
+					this.goodsList.forEach((item)=>{
+						item.checked = this.isCheckAll && !item.isDisabled;
+						this.setProductChecked(item);
+					})
+				}
+			},
+			checkAll(){//全选方法内调用方法
+			    this.isCheckAll = !this.isCheckAll;
+				this.updateBothCheckBtn();     
+			},
+			totalShopPeice(){//每次所属会所下的商品增减重新计算合计价格&减去含有下架的商品
+				let prosPrice=0;
+				let validPrice =0;
+				let validList=[];
+				let productsList=[];
+				this.goodsList.map((item,index)=>{
+					productsList=item.productsList;
+					prosPrice=productsList.reduce((p,e)=>p+e.retailPrice*e.productCount,0);
+					productsList.forEach(pros =>{
+						if(pros.validFlag =='3'){
+							validList.push(pros)
+							validPrice = validList.reduce((p,e)=>p+e.retailPrice*e.productCount,0);
+							item.totalPrice = prosPrice - validPrice
+						}else{
+							item.totalPrice = prosPrice
+						}
+					})
+				})
+			},
+			totalPeice(){	//计算总价格,每次调用此方法,将初始值为0,遍历价格并累加
+			    this.allPrice = 0
+				let prosPrice=0;
+				let validPrice=0;
+				let validList =[];
+				let productsList =[];
+			    this.goodsList.forEach((item,index)=>{
+					productsList=item.productsList;
+					productsList.forEach(pros=>{	
+						if(pros.productsChecked){
+							prosPrice+=pros.retailPrice*pros.productCount;
+							if(pros.validFlag =='3'){
+								validList.push(pros)
+								validPrice = validList.reduce((p,e)=>p+e.retailPrice*e.productCount,0);
+								this.allPrice = prosPrice - validPrice
+							}else{
+								this.allPrice = prosPrice
+							}
+						}	
+					})
+			    })
+			},
+			totalCount(){//计算总数量
+			    this.allCount = 0
+				let prosAllCount=0
+				let validCount = 0
+				let validList =[];
+				let productsList =[];
+			    this.goodsList.forEach(item=>{
+					productsList = item.productsList
+					productsList.forEach(pros=>{
+						if(pros.productsChecked){
+							prosAllCount+=parseInt(pros.productCount);
+							if(pros.validFlag =='3'){
+								validList.push(pros)
+								validList.forEach(val =>{
+									validCount += val.productCount
+								})
+								this.allCount = prosAllCount - validCount
+							}else{
+								this.allCount = prosAllCount
+							}
+						}
+					})
+			    })
+			},		
+			changeCountAdd(item,pros){//商品数量加加
+				if(pros.productCount>=pros.stock){
+					pros.productCount= pros.stock
+					this.isStock =true
+					return
+				}else{
+					pros.productCount++
+					this.processActivityPrice(pros)
+					this.isStock =false
+				}
+				
+				this.updateShoppogNum(pros)
+				this.totalShopPeice();
+			},
+			changeCountSub(item,pros){//商品数量减减
+				if(pros.productCount<=pros.minBuyNumber){
+					pros.productCount= pros.minBuyNumber
+					this.$util.msg(`该商品最小起订量为${pros.minBuyNumber}`,2000);
+					return
+				}else{
+					pros.productCount--
+					this.processActivityPrice(pros)
+				}
+				this.updateShoppogNum(pros)
+				this.totalShopPeice();
+			},
+			changeNnmber(e,item,pros){//输入商品数量更新
+				let _value = e.detail.value;
+				if(!this.$api.isNumber(_value)){
+					pros.productCount = pros.minBuyNumber
+				}else if(_value < pros.minBuyNumber){	
+					this.$util.msg(`该商品最小起订量为${pros.minBuyNumber}`,2000);
+					pros.productCount = pros.minBuyNumber
+				}else{
+					pros.productCount = e.detail.value
+					this.processActivityPrice(pros)
+				}
+				this.updateShoppogNum(pros)
+				this.totalShopPeice();
+			},
+			processActivityPrice(pros){//单独处理活动价格和阶梯价格
+				let ladderPriceList = pros.ladderPriceList;
+				if(pros.ladderPriceFlag == '0' || pros.actFlag == 1){
+					pros.retailPrice = pros.retailPrice
+				}else{
+					ladderPriceList.forEach((item,index)=>{
+						if(pros.productCount>=item.buyNum){
+							pros.retailPrice = item.buyPrice
+						}
+					})
+				}
+			},
+			updateShoppogNum(pros){//加减购物车商品更新到后台
+				let params ={userID:this.userID,productID:pros.productID,productCount:pros.productCount}
+				shoppingCartUpdate(params).then(response =>{
+					this.isshowDelbtn = false;
+					this.initGetCartGoodsList();
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000);
+				})
+			 },
+			toConfirmation(){//跳转确认订单页面
+				let setGoodsList=[];
+				this.goodsList.forEach(res=>{
+					let products = res.productsList
+					products.forEach(pros=>{
+						if(pros.productsChecked){
+						    setGoodsList.push(pros.productID)
+						}
+					})
+				})
+				if(setGoodsList == ''){
+					this.$util.msg("请先选择结算商品~",2000);
+					return
+				}else{
+					/**
+					 * @获取勾选的商品ID拼接字符串逗号隔开,最后一个逗号去掉
+					 * @获取勾选的商品分类ID拼接字符串格式逗号隔开,最后一个逗号去掉
+					 */
+					let productID = '';
+					this.goodsList.forEach(el=>{
+						el.productsList.forEach(pros=>{
+							if(pros.productsChecked){
+							   productID += pros.productID+','
+							}
+						})
+					})
+					let cartPramsData={
+							allPrice:this.allPrice,
+							allCount:this.allCount,
+							productID:productID.substring(0,productID.lastIndexOf(',')),
+							productCount:''
+					}
+					this.$api.navigateTo(`/pages/user/order/create-order?data=${JSON.stringify({data:cartPramsData})}`)
+				}
+			},
+			setOrderGoods(){//本地获取勾选商品信息***暂时丢弃***
+				let setGoodData = {}
+				let prosPrice =0;
+				let prosCount =0;
+				let goodsArr = this.goodsList.map(el => {
+					el.productsList = el.productsList.filter(item => item.productsChecked)
+					prosPrice=el.productsList.reduce((p,e)=>p+e.retailPrice*e.productCount,0);
+					el.productsList.forEach(pros=>{
+						el.totalCount += pros.productCount;
+					})
+					el.totalPrice = prosPrice
+					return el
+				}).filter(el => el.productsList && el.productsList.length !==0);
+				setGoodData = {
+					allPrice:this.allPrice,
+					allCount:this.allCount,
+					goodList:goodsArr
+				}
+				return setGoodData
+			},
+			showDelManager(){//显示删除商品管理
+				this.isshowDelbtn = true;
+				this.isNnder = true;
+				if(this.isCheckAll) {
+					this.updateBothCheckBtn();	
+				} else {
+					// 失效也被勾选
+					this.goodsList.forEach(item => {
+						if(item.checked) {
+							item.productsList.forEach(pros => {
+								pros.productsChecked = true;
+							})
+						}
+					})
+					this.updateCheckAllBtn();
+				}
+			},
+			hideDelManage(){//隐藏删除商品管理			
+				this.isshowDelbtn = false;
+				if(this.isCheckAll) {
+					this.updateBothCheckBtn();	
+				} else {
+					// 失效商品取消勾选
+					this.goodsList.forEach(item => {
+						if(item.isDisabled) {
+							item.checked = false;
+						}
+						item.productsList.forEach(pros => {
+							if(pros.validFlag == '3') {
+								pros.productsChecked = false;
+							}
+						})
+					})
+					this.updateCheckAllBtn();
+				}
+			},
+			deleteList(){//删除购物车商品	
+				this.delGoodsList=[];
+				this.goodsList.forEach(delitem=>{
+					let products = delitem.productsList
+					products.forEach(pros=>{
+						if(pros.productsChecked){
+						    this.delGoodsList += pros.productID+','
+						}
+					})
+				})
+				// console.log(this.delGoodsList);
+				if(this.delGoodsList.length == 0){
+					this.$util.msg("请选择要删除的商品~",2000);
+					return
+				}else{				
+					this.$util.modal('','确定删除选中的商品吗?','确定','取消',true,() =>{
+						shoppingCartDelete({userID:this.userID,productIDs:this.delGoodsList}).then(response =>{
+							console.log(response)
+							this.$util.msg('删除成功',2000);
+							setTimeout(()=>{
+								this.isshowDelbtn = false;
+								this.initGetCartGoodsList();
+							},2000)
+						}).catch(response =>{
+							this.$util.msg(response.msg,2000)
+						})
+					})
+				}
+			},
+			goIndex(){
+				uni.switchTab({
+				    url: '/pages/tabBar/home/home'
+				});
+			},
+			goNavto(url){
+				uni.navigateTo ({
+					url
+				})
+			},
+			navToListPage(id){
+				this.isModallayer = true;
+				this.$api.navigateTo(`/pages/goods/product?id=${id}`)
+			}
+		},
+		watch:{//深度监听所有数据,每次改变重新计算总价和总数
+		    goodsList:{
+		        deep:true,
+		        handler(val,oldval){
+		            this.totalPeice()
+		            this.totalCount()
+		        }
+		    }
+		},
+		onReachBottom() {
+			if(this.hasNextPage){
+				this.loadding = true
+				this.pullUpOn = true
+				this.getOnReachBottomData()
+			}	
+		},
+		onPullDownRefresh() {//下拉刷新
+			this.initGetCartGoodsList()
+			uni.stopPullDownRefresh()
+		},
+		onShow(){
+			if(!this.hasLogin){
+				this.initLogin()
+			}else{
+				this.initData()
+			}
+		},
+	}
+</script>
+
+<style lang="scss">
+	page{
+		background: #f7f7f7;
+	}
+	.cart-content{
+		position: relative;
+		padding-bottom:74rpx;
+	}
+	.container-cart-main.none{
+		display: none;
+	}
+	.container-cart-main.show{
+		display: block;
+	}
+	.cart-content.empty.none{
+		display: none;
+	}
+	.cart-content.empty.show{
+		display: block;
+	}
+	.container-cart.show{
+		display: block;
+	}
+	.container-cart.none{
+		display: none;
+	}
+	.empty-container.none{
+		display: none;
+	}
+	.empty-container.show{
+		display: flex;
+	}
+	.checkbox-box{
+		display: flex;
+		align-items: center;
+		.checkbox{
+			display: flex;
+			margin: 0;
+			padding: 0;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			box-sizing: border-box;
+			text-align: center;
+			text-decoration: none;
+			border-radius: 0;
+			-webkit-tap-highlight-color: transparent;
+			overflow: hidden;
+			background-color:#FFFFFF;
+			font-size: 36rpx;
+			color:$color-system;
+		}
+		&.disabled{
+			.checkbox{
+				color:#999999
+			}
+		}
+		.text{
+			font-size: $font-size-24;
+			margin-left: 10rpx;
+		}
+	}
+	.goods-list{
+		width: 100%;
+		height: auto;
+		border-top: 1px solid #EBEBEB;
+		background-color: #F7F7F7;
+		.goods-item{
+			width: 702rpx;
+			padding: 0 24rpx;
+			background: #FFFFFF;
+			margin-bottom: 24rpx;
+		}
+		.shoptitle{
+			display: flex;
+			align-items: center;
+			height: 80rpx;
+			// border-bottom: 1px solid #EBEBEB;
+			line-height: 80rpx;
+			.checkbox-box{
+				margin-left: 18rpx;
+			}
+			.text{
+				margin-left: 37rpx;
+				font-size: $font-size-28;
+				color: $text-color;
+				text-align: left;
+				font-weight: bold;
+			}
+		}
+		.goods-pros{
+			width: 100%;
+			height: auto;
+		}	
+		.goods-pros-t{
+			display: flex;
+			align-items: center;
+			width: 100%;
+			height: 217rpx;
+			padding:0 0 26rpx 0;
+			.checkbox-box{
+				margin-left: 22rpx;
+			}
+			.pros-img{
+				width: 210rpx;
+				height: 100%;
+				border-radius: 10rpx;
+				margin:0 26rpx 0 38rpx;
+				border:1px solid #f3f3f3;
+				image{
+					width: 100%;
+					height: 100%;
+					border-radius: 10rpx;
+				}
+			}
+		}
+		.goods-pros-b{
+			width:622rpx;
+			margin-left: 84rpx;
+			height: 40rpx;
+			padding:0 0 26rpx 0;
+			// border-top: 1px solid #EBEBEB;
+			&.show{
+				display: block;
+			}
+			&.none{
+				display: none;
+			}
+			.sum{
+				font-size: $font-size-28;
+				line-height: 40rpx;
+				color: $text-color;
+				display: flex;
+				justify-content: flex-end;
+				.money{
+					color: #FF2A2A;
+					font-size: $font-size-28;
+				}
+				.money-sign{
+					font-size: $font-size-24;
+					color: #FF2A2A;
+				}
+			}
+		}
+		.pros-product{
+			width: 386rpx;
+			height: 100%;
+			line-height: 36rpx;
+			font-size: $font-size-26;	
+			position: relative;
+			.producttitle{
+				width: 100%;
+				display: inline-block;
+				height: auto;							
+				text-overflow:ellipsis;
+				display: -webkit-box;
+				word-break: break-all;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 2;
+				overflow: hidden;
+				margin-bottom: 8rpx;
+				.no-text{
+					display: inline-block;
+					height:36rpx;
+					padding: 0 12rpx;
+					line-height: 36rpx;
+					background:linear-gradient(315deg,rgba(231,0,0,1) 0%,rgba(255,104,1,1) 100%);
+					border-radius:18rpx;
+					text-align: center;
+					color: #FFFFFF;
+					font-size: $font-size-24;
+					margin-right: 24rpx;
+				}
+			}
+			.productspec{
+				height: 36rpx;
+				color: #999999;
+			}
+			.productprice{
+				height: 48rpx;
+				position: absolute;
+				width: 100%;
+				bottom: 0;
+				.price{
+					line-height: 48rpx;
+					font-size: $font-size-28;
+					width: 48%;
+					color: #FF2A2A;
+					float: left;
+					&.disabled{
+						color: #999999;
+					}
+					.money-sign{
+						font-size: $font-size-24;
+						color: #FF2A2A;
+					}
+				}
+				.count{
+					height: 100%;
+					float: right;
+					position: relative;
+					&.show{
+						display: block;
+					}
+					&.none{
+						display: none;
+					}
+					.number-box{
+						display: flex;
+						justify-content: center;
+						align-items: center;
+						.iconfont{
+							font-size: $font-size-24;
+							padding:0 20rpx;
+							color: $text-color;
+							text-align: center;
+							line-height: 48rpx;
+							font-weight: bold;
+						}
+						.btn-input{
+							width: 62rpx;
+							height: 48rpx;
+							line-height: 48rpx;
+							background: #F8F8F8;
+							border-radius: 4rpx;
+							text-align: center;
+							font-size: $font-size-24;
+						}
+					}
+					.uni-numbox{
+						position: absolute;
+						left: 45rpx;
+						bottom: 0;
+						.uni-numbox-minus, .uni-numbox-plus{
+							width: 50rpx;
+							line-height: 40rpx;
+						}
+						.uni-numbox-value {
+							font-size: $font-size-28;
+							width: 60rpx;
+						}
+					}
+				}
+			}
+		}
+	}
+	.footer{
+		width: 100%;
+		background-color: #FFFFFF;
+		height: 110rpx;
+		position: fixed;
+		bottom: 0rpx;
+		z-index: 10;
+		.footer-le{
+			width: 490rpx;
+			height: 100%;
+			padding:0 30rpx;
+			float: left;
+			.text{
+				font-weight: bold;
+			}
+			.foot-check{
+				width: 100rpx;
+				float: left;
+				line-height: 110rpx;
+				font-size: $font-size-24;
+				.checkbox{
+					width: 40rpx;
+					text-align: center;
+				}
+				.text{
+					width: 60rpx;
+					float: right;
+				}
+			}
+			.foot-check-delbtn{
+				float: left;
+				.delBtn{
+					margin: 0;
+					padding: 0;
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					box-sizing: border-box;
+					font-size: $font-size-24;
+					text-align: center;
+					text-decoration: none;
+					border-radius: 0;
+					-webkit-tap-highlight-color: transparent;
+					overflow: hidden;
+					background-color:#FFFFFF;
+					color: #FF2A2A;
+					padding: 0 24rpx;
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					line-height: 110rpx;
+					font-weight: bold;
+					&.none{
+						display: none;	
+					}
+				}
+			}
+			.sum{
+				font-size: $font-size-28;
+				line-height: 110rpx;
+				color: $text-color;
+				display: flex;
+				justify-content: flex-end;
+				.money{
+					color: #FF2A2A;
+				}
+				.money-sign{
+					font-size: $font-size-24;
+					color: #FF2A2A;
+				}
+			}
+		}
+		.footer-ri{
+			width: 200rpx;
+			height: 100%;
+			background:linear-gradient(135deg,rgba(242,143,49,1) 0%,rgba(225,86,22,1) 100%);
+			float: right;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			z-index: 999;
+			&.none{
+				display: none;
+			}
+			.btn{
+				width: 200rpx;
+				height: 100%;
+				font-size: $font-size-28;
+				line-height: 110rpx;
+				color: #FFFFFF;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+			}
+		}
+		.footer-del{
+			width: 400rpx;
+			height: 100%;
+			position: absolute;
+			padding-left: 200rpx;
+			background: #FFFFFF;
+			right: 0;
+			top: 0;
+			z-index: 1000;
+			&.show{
+				animation: showDelbtn 0s linear both;
+			}
+			&.none{
+				animation: hideDelbtn 0s linear both;
+			}
+			.btn{
+				width: 50%;
+				height: 100%;
+				line-height: 110rpx;
+				font-size: $font-size-28;
+				color: #FFFFFF;
+				text-align: center;
+				float: left;
+			}
+			.btn.btn-cancel{
+				background:#EEC1AB;
+			}
+			.btn.btn-confirm{
+				background:#FF2A2A;
+			}
+			@keyframes showDelbtn {
+				0% {
+					transform: translateX(0);
+				}
+				100% {
+					transform: translateX(-100%);
+				}
+			}
+			@keyframes hideDelbtn {
+				0% {
+					transform: translateX(-100%);
+				}
+				100% {
+					transform: translateX(0);
+				}
+			}
+		}
+	}
+</style>

+ 179 - 27
market/pages/club/club-list.vue

@@ -1,6 +1,48 @@
 <template>
 	<view class="container club clearfix">
-		
+		<view class="club-search clearfix">
+			<view class="search-from name">
+				<text class="iconfont icon-iconfonticonfontsousuo1"></text>
+				<input class="input" type="text" v-model="linkman" placeholder="请输入机构名称搜索" maxlength="12"/>
+			</view>
+			<view class="search-btn">
+				<button class="search-btn" type="default" @click.stop="searchOpertor">搜索</button>
+			</view>
+		</view>
+		<view class="club-main">
+			<view v-if="isEmpty" class="empty-container">
+				<view class="txt">暂无数据</view>
+			</view>
+			<view v-else class="club-list">
+				<scroll-view scroll-y="true" >
+					<view class="list" v-for="(item, index) in clubList" :key="index">
+						<view class="list-left">
+							<view class="list-head"><image :src="item.headimgurl ? item.headimgurl : '../../../static/temp/logo@3x.png'" mode=""></image></view>
+						</view>
+						<view class="list-item">
+							<view class="list-title">
+								<text>{{item.name}}</text>
+							</view>
+							<view class="list-opea">
+								<view class="btn org" @click.stop="_goImmediately(item.clubID)">
+									<text>立即下单</text>
+								</view>
+								<view class="btn gre" @click.stop="_goBuyagain(item.clubID)">
+									<text>再次购买</text>
+								</view>
+								<view class="btn yel" @click.stop="_goHistory(item.clubID)">
+									<text>订单列表</text>
+								</view>
+							</view>
+						</view>
+					</view>
+					<!--加载loadding-->
+					<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+					<tui-nomore :visible="!pullUpOn" bgcolor="#F7F7F7" :text='nomoreText'></tui-nomore>
+					<!--加载loadding-->
+				</scroll-view>
+			</view>
+		</view>
 	</view>
 </template>
 
@@ -36,8 +78,13 @@
 				deleteAddressId:'',
 				currPage:'',//当前页面
 				prevPage:'',//上一个页面
-				clubList:[],
-				isIphoneX:this.$store.state.isIphoneX,
+				tabCurrentIndex:0,
+				clubList:[
+					{headimgurl:'../../../static/temp/logo@3x.png',name:'上海默默美容会所管理机构',linkName:'郑先生',mobile:'13979770617',clubID:123},
+					{headimgurl:'../../../static/temp/logo@3x.png',name:'上海默默美容会所管理机构',linkName:'郑先生',mobile:'13979770617',clubID:321},
+					{headimgurl:'../../../static/temp/logo@3x.png',name:'上海默默美容会所管理机构',linkName:'郑先生',mobile:'13979770617',clubID:456},
+					{headimgurl:'../../../static/temp/logo@3x.png',name:'上海默默美容会所管理机构',linkName:'郑先生',mobile:'13979770617',clubID:567},
+				],
 			}
 		},
 		onLoad(){				
@@ -110,30 +157,15 @@
 					this.$util.msg(response.msg,2000)
 				})
 			},
-			rexpStautsColor(status) {
-			  let textColor = ''
-			  switch (status) {
-				case '1':
-				  textColor = '#55BB00'
-				  break
-				case '2':
-				  textColor = '#0056BB'
-				  break
-				case '3':
-				  textColor = '#BB0000'
-				  break
-			  }
-			  return textColor
-			},  
-			iconStautsColor(status) {
-			  let textColor = ''
-			  if(status == '2'){
-				   textColor = '#09BB07'
-			  }else{
-				   textColor = '#DDDDDD'
-			  }
-			  return textColor
+			_goImmediately(id){
+				this.$api.navigateTo(`/market/pages/order/order-immediately?id=${id}`)
 			},
+			_goBuyagain(id){
+				this.$api.navigateTo(`/market/pages/cart/buyagain?id=${id}`)
+			},
+			_goHistory(id){
+				this.$api.navigateTo(`/market/pages/order/order-history?id=${id}`)
+			}
 		},
 		onReachBottom() {
 			if(this.hasNextPage){
@@ -144,7 +176,12 @@
 		},
 		onShow() {
 			this.$api.getCommonStorage('clubInfo').then(response =>{
-
+				console.log(response)
+				this.clubID = response.clubID
+				this.clubName = response.name
+				this.clubImage = response.image
+				this.pageNum = 1;
+				// this.initclubList();
 			})
 		}
 	}
@@ -159,5 +196,120 @@
 		background: #F7F7F7;
 		border-top: 1px solid #EBEBEB;
 	}
+	.container{
+		position: relative;
+	}
+	.club-search{
+		height: 64rpx;
+		width: 702rpx;
+		padding: 24rpx;
+		background: #FFFFFF;
+		display: flex;
+		align-items: center;
+		margin-bottom: 20rpx;
+		.search-from{
+			width: 582rpx;
+			height: 64rpx;
+			background: #F7F7F7;
+			border-radius: 14rpx;
+			float: left;
+			.iconfont{
+				width: 64rpx;
+				height: 64rpx;
+				line-height: 64rpx;
+				text-align: center;
+				display: block;
+				font-size: $font-size-38;
+				float: left;
+				color: #999999;
+			}
+			.input{
+				width: 500rpx;
+				height: 64rpx;
+				float: left;
+				line-height: 64rpx;
+				color: $text-color;
+				font-size: $font-size-24;
+			}
+		}
+		.search-btn{
+			width: 120rpx;
+			line-height: 64rpx;
+			text-align: center;
+			font-size: $font-size-28;
+			color: $color-system;
+			float: left;
+			background: #FFFFFF;
+		}
+	}
+	.club-main{
+		.list{
+			align-items: center;
+			width: 702rpx;
+			height: auto;
+			padding: 24rpx;
+			background: #FFFFFF;
+			position: relative;
+			border-bottom: 1px solid #EBEBEB;
+			display: flex;
+			.list-left{
+				height: 140rpx;
+				flex: 2;
+				.list-head{
+					width: 140rpx;
+					height: 140rpx;
+					image{
+						width: 140rpx;
+						height: 140rpx;
+					}
+				}
+			}
+			.list-item{
+				height: 140rpx;
+				flex: 8;
+				display: flex;
+				flex-direction:column ;
+				.list-title{
+					flex: 2;
+					line-height: 40rpx;
+					width: 100%;
+					font-size: $font-size-28;
+					color: $text-color;
+					text-align: left;
+					padding-left: 24rpx;
+				}
+				.list-opea{
+					width: 100%;
+					display: flex;
+					color: #166CE1;
+					flex-direction: row;
+					align-items: center;
+					justify-content: center;
+					.btn{
+						width: 156rpx;
+						height: 60rpx;
+						line-height: 60rpx;
+						border-radius: 14rpx;
+						font-size: $font-size-24;
+						color: $text-color;
+						text-align: center;
+						margin: 0 12rpx;
+						&.org{
+							background:$color-system ;
+							color: #FFFFFF;
+						}
+						&.gre{
+							background:$color-system ;
+							color: #FFFFFF;
+						}
+						&.yel{
+							background:#FFFFFF ;
+							border: 1px solid $text-color;
+						}
+					}
+				}
+			}
+		}
+	}
 </style>
 

+ 161 - 109
market/pages/club/list.vue

@@ -1,46 +1,42 @@
 <template>
 	<view class="container club clearfix" :style="{paddingBottom:isIphoneX?'140rpx':'98rpx'}">
-		<view class="club-top clearfix">
-			<view class="club-search">
-				<view class="search-wrap">
-					<view class="search-from name">
-						<input class="input" type="text" v-model="linkman" placeholder="请输入姓名" maxlength="6"/>
-					</view>
-					<view class="search-from search">
-						<button class="search-btn" type="default" @click.stop="searchOpertor">搜索</button>
-					</view>
-				</view>
+		<view class="club-search clearfix">
+			<view class="search-from name">
+				<text class="iconfont icon-iconfonticonfontsousuo1"></text>
+				<input class="input" type="text" v-model="linkman" placeholder="请输入机构名称搜索" maxlength="12"/>
+			</view>
+			<view class="search-btn">
+				<button class="search-btn" type="default" @click.stop="searchOpertor">搜索</button>
 			</view>
 		</view>
 		<view class="club-main">
 			<view v-if="isEmpty" class="empty-container">
-				<view class="txt">暂无运营人员</view>
+				<view class="txt">暂无数据</view>
 			</view>
 			<view v-else class="club-list">
 				<scroll-view scroll-y="true" >
-					<view class="list" v-for="(item, index) in clubList" :key="index" @click.stop="showclubModel(item)">
+					<view class="list" v-for="(item, index) in clubList" :key="index">
 						<view class="list-left">
 							<view class="list-head"><image :src="item.headimgurl ? item.headimgurl : '../../../static/temp/logo@3x.png'" mode=""></image></view>
 							<view class="list-tel">
-								<text class="txt">{{item.linkName}}</text>
-								<text class="txt">{{item.mobile}}</text>
+								<text class="txt">{{item.name}}</text>
+								<text class="txt sm"><text class="txt-le">{{item.linkName}}</text>{{item.mobile}}</text>
 							</view>
 						</view>
-						<view class="list-opea">
-							<view class="opea-type">
-								<view class="opea-type-cell" v-if="item.effectiveFlag != null">
-									<text class="iconfont icon-iconfontweixin" :style="{color: iconStautsColor(item.status)}"></text>
-									<text :style="{color: rexpStautsColor(item.effectiveFlag)}">{{ rexpStautsText(item.effectiveFlag) }}</text>
-								</view>
-								<view class="opea-type-cell none" v-else>
-									<text>- -</text>
-								</view>
+						<view class="list-opea" v-if="tabCurrentIndex===2">
+							<view class="opea-type-dell" @click.stop="checkData(item.clubID)">
+								<text class="iconfont icon-xieboke"></text>
+								<text>修改资料</text>
 							</view>
-							<view class="opea-del">
-								<view class="opea-type-cell" @click.stop="deleteclub(item.id)">
-									<text class="iconfont icon-shanchu"></text>
-									<text>删除</text>
-								</view>
+							<view class="opea-type-dell or" @click.stop="orderHistory(item.clubID)">
+								<text class="iconfont icon-dingdanxuanzhong"></text>
+								<text>历史订单</text>
+							</view>
+						</view>
+						<view class="list-opea" v-else>
+							<view class="opea-type-cell" @click.stop="checkData(item.clubID)">
+								<text class="iconfont icon-xieboke"></text>
+								<text>修改资料</text>
 							</view>
 						</view>
 					</view>
@@ -53,12 +49,17 @@
 		</view>
 		<view class="tabBar" :style="{height:isIphoneX?'140rpx':'98rpx'}">
 			<view class="tabBar_list" :style="{paddingBottom:isIphoneX?'40rpx':''}">
-				<view  class="tabBar_item" v-for="(item,index) in  tabBarList" 
-					   :key="index" 
-					   :class="{ 'current' : tabCurrentIndex === index}"  
-					   @click="tabClick(index)" >
-					<text class="iconfont" :class="item.icon"></text>
-					<view class="tabBar_name">{{item.name}}</view>
+				<view  class="tabBar_item" :class="{ 'current' : tabCurrentIndex === 0}"   @click="tabClick(0)" >
+					<text class="iconfont icon-lishidingdan"></text>
+					<view class="tabBar_name">待审核</view>
+				</view>
+				<view  class="tabBar_item" :class="{ 'current1' : tabCurrentIndex === 1}"   @click="tabClick(1)" >
+					<text class="iconfont icon-shenhebutongguo"></text>
+					<view class="tabBar_name">审核未通过</view>
+				</view>
+				<view  class="tabBar_item" :class="{ 'current2' : tabCurrentIndex === 2}"   @click="tabClick(2)" >
+					<text class="iconfont icon-shenhetongguo"></text>
+					<view class="tabBar_name">已上线</view>
 				</view>
 			</view>
 		</view>
@@ -97,13 +98,13 @@
 				deleteAddressId:'',
 				currPage:'',//当前页面
 				prevPage:'',//上一个页面
-				tabBarList:[
-					{name:'待审核',icon:'icon-lishidingdan'},
-					{name:'审核未通过',icon:'icon-shenhebutongguo'},
-					{name:'已上线',icon:'icon-shenhetongguo'}
-				],
 				tabCurrentIndex:0,
-				clubList:[],
+				clubList:[
+					{headimgurl:'../../../static/temp/logo@3x.png',name:'上海默默美容会所管理机构',linkName:'郑先生',mobile:'13979770617',clubID:123},
+					{headimgurl:'../../../static/temp/logo@3x.png',name:'上海默默美容会所管理机构',linkName:'郑先生',mobile:'13979770617',clubID:321},
+					{headimgurl:'../../../static/temp/logo@3x.png',name:'上海默默美容会所管理机构',linkName:'郑先生',mobile:'13979770617',clubID:456},
+					{headimgurl:'../../../static/temp/logo@3x.png',name:'上海默默美容会所管理机构',linkName:'郑先生',mobile:'13979770617',clubID:567},
+				],
 				isIphoneX:this.$store.state.isIphoneX,
 				show_index:0,//控制显示那个组件
 			}
@@ -193,19 +194,26 @@
 			  }
 			  return textColor
 			},  
-			iconStautsColor(status) {
-			  let textColor = ''
-			  if(status == '2'){
-				   textColor = '#09BB07'
-			  }else{
-				   textColor = '#DDDDDD'
-			  }
-			  return textColor
-			},
 			tabClick(index) {//商品详情&&供应商信息tab切换
 				this.tabCurrentIndex = index;
 				console.log(this.tabCurrentIndex)
 			},
+			checkData(id){
+				switch(this.tabCurrentIndex){
+					case 0:
+						this.$api.navigateTo(`/market/pages/login/information?id=${id}`)
+						break;
+					case 1:
+						this.$api.navigateTo(`/market/pages/login/apply?id=${id}`)
+						break;
+					case 2:
+						this.$api.navigateTo(`/market/pages/login/information?id=${id}`)
+						break;
+				}
+			},
+			orderHistory(id){
+				this.$api.navigateTo(`/market/pages/order/order-history?id=${id}`)
+			}
 		},
 		onReachBottom() {
 			if(this.hasNextPage){
@@ -221,7 +229,7 @@
 				this.clubName = response.name
 				this.clubImage = response.image
 				this.pageNum = 1;
-				this.initclubList();
+				// this.initclubList();
 			})
 		}
 	}
@@ -239,79 +247,111 @@
 	.container{
 		position: relative;
 	}
-	.list{
-		display: flex;
-		align-items: center;
+	.club-search{
+		height: 64rpx;
 		width: 702rpx;
-		height: 92rpx;
 		padding: 24rpx;
 		background: #FFFFFF;
-		position: relative;
-		border-bottom: 1px solid #EBEBEB;
-		.list-left{
+		display: flex;
+		align-items: center;
+		margin-bottom: 20rpx;
+		.search-from{
+			width: 582rpx;
+			height: 64rpx;
+			background: #F7F7F7;
+			border-radius: 14rpx;
+			float: left;
+			.iconfont{
+				width: 64rpx;
+				height: 64rpx;
+				line-height: 64rpx;
+				text-align: center;
+				display: block;
+				font-size: $font-size-38;
+				float: left;
+				color: #999999;
+			}
+			.input{
+				width: 500rpx;
+				height: 64rpx;
+				float: left;
+				line-height: 64rpx;
+				color: $text-color;
+				font-size: $font-size-24;
+			}
+		}
+		.search-btn{
+			width: 120rpx;
+			line-height: 64rpx;
+			text-align: center;
+			font-size: $font-size-28;
+			color: $color-system;
+			float: left;
+			background: #FFFFFF;
+		}
+	}
+	.club-main{
+		.list{
 			display: flex;
-			flex: 4;
-			.list-head{
-				width: 92rpx;
-				height: 92rpx;
-				border-radius: 14rpx;
-				image{
+			align-items: center;
+			width: 702rpx;
+			height: 92rpx;
+			padding: 24rpx;
+			background: #FFFFFF;
+			position: relative;
+			border-bottom: 1px solid #EBEBEB;
+			.list-left{
+				display: flex;
+				flex: 8;
+				.list-head{
 					width: 92rpx;
 					height: 92rpx;
 					border-radius: 14rpx;
+					image{
+						width: 92rpx;
+						height: 92rpx;
+						border-radius: 14rpx;
+					}
 				}
-			}
-			.list-tel{
-				margin-left: 18rpx;
-				.txt{
-					display: flex;
-					flex: 1;
-					font-size: $font-size-28;
-					color: $text-color;
-					line-height: 46rpx;
+				.list-tel{
+					margin-left: 18rpx;
+					.txt{
+						display: flex;
+						flex: 1;
+						font-size: $font-size-28;
+						color: $text-color;
+						line-height: 46rpx;
+						&.sm{
+							font-size: $font-size-24;
+							color: #666666;
+							.txt-le{
+								margin-right: 26rpx;
+							}
+						}
+					}
 				}
 			}
-		}
-		.list-opea{
-			flex:6;
-			.opea-type{
+			.list-opea{
+				display: flex;
+				flex: 2;
+				color: #166CE1;
 				flex-direction: column;
-				align-items: center;
-				margin-left: 20rpx;
-				float: left;
 				.opea-type-cell{
-					width: 186rpx;
-					height: 64rpx;
-					padding:0 16rpx;
-					border-radius: 10rpx;
-					border: 1px solid #DDDDDD;
-					line-height: 64rpx;
-					font-size: $font-size-24;
-					.icon-iconfontweixin{
-						margin-right: 8rpx;
-						font-size: $font-size-32;
-					}
-					&.none{
-						text-align: center;
+					font-size: 24rpx;
+					.iconfont{
+						font-size: 34rpx;
+						margin-right: 5rpx;
 					}
 				}
-			}
-			.opea-del{
-				float: right;
-				flex-direction: column;
-				align-items: center;
-				.opea-type-cell{
-					width: 86rpx;
-					height: 64rpx;
-					padding:0 24rpx;
-					border-radius: 10rpx;
-					border: 1px solid #DDDDDD;
-					line-height: 64rpx;
-					font-size: $font-size-24;
-					color: #FF0000;
-					.icon-shanchu{
-						font-size: $font-size-32;
-						margin-right: 6rpx;
+				.opea-type-dell{
+					line-height: 46rpx;
+					font-size: 24rpx;
+					&.or{
+						color: #E19B16;
+					}
+					.iconfont{
+						font-size: 34rpx;
+						margin-right: 5rpx;
 					}
 				}
 			}
@@ -347,6 +387,18 @@
 						color:#166CE1;
 					}
 				}
+				&.current1{
+					color: #FF0000;
+					.iconfont{
+						color:#FF0000;
+					}
+				}
+				&.current2{
+					color: #16E15C;
+					.iconfont{
+						color:#16E15C;
+					}
+				}
 				.iconfont{
 					width:48rpx;
 					height: 48rpx;

+ 10 - 3
market/pages/home/home.vue

@@ -1,9 +1,10 @@
 <template>
-	<view class="container home clearfix" :style="{paddingBottom:isIphoneX?'140rpx':'98rpx'}">	
+	<view class="container home clearfix" :style="{paddingBottom:isIphoneX?'140rpx':'98rpx',paddingTop:CustomBar+'px'}">	
+		<cu-custom :navbar-data='nvabarData'  @navigateBack="hanldNavigateBack"></cu-custom>
 		<!-- 头部轮播 -->
 		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="9"></tui-skeleton>
 		<view :class="'container-home-'+ inputActive" class="tui-skeleton">
-			<view :class="'search-input-' + inputActive">
+			<view :class="'search-input-' + inputActive" :style="{paddingTop:inputActive == 'fixed'?(CustomBar+2)+'px':''} ">
 				<bt-search :clickPath="clickPath" :toestText='hotSearchText'></bt-search>
 			</view>
 			<view class="banner-section">
@@ -147,6 +148,11 @@
 		},
 		data() {
 			return {
+				nvabarData: {		//顶部自定义导航
+					showCapsule: 0, // 是否显示左上角图标  1表示显示  0表示不显示,
+					showSearch: 0,
+					title: '首页',  // 导航栏 中间的标题
+				},
 				userID:'',
 				inputActive:'float',
 				hotSearchText:'你想要的这里都有',
@@ -159,6 +165,7 @@
 				hotGoodsList:[],
 				skeletonShow: true,
 				isIphoneX:this.$store.state.isIphoneX,
+				CustomBar:this.CustomBar,// 顶部导航栏高度
 				organizeProducts:[],//常用商品
 				firstModulesName:'https://img.caimei365.com/group1/M00/03/8C/Cmis215XHXSAAZU0AACaPrfbB8I435.png', //优惠模块1
 				secondModulesName:'', //优惠模块2
@@ -258,7 +265,7 @@
 			},
 			navToDetailPage(id) {//跳转商品详情页
 				this.modallayer = true;
-				this.$api.navigateTo(`/pages/goods/product?id=${id}`)
+				this.$api.navigateTo(`/market/pages/goods/product?id=${id}`)
 			},
 			handleContact(e){
 				console.log(e.detail.path)

+ 1 - 8
market/pages/login/apply.vue

@@ -1,6 +1,5 @@
 <template>
-	<view class="container register" :style="{paddingTop:CustomBar+'px'}">
-		<cu-custom :navbar-data='nvabarData'  @navigateBack="hanldNavigateBack"></cu-custom>
+	<view class="container register">
 		<view class="register-error clearfix">
 			<view class="error-top animation" @click="showOpenError" :class="{'error-top--none': isOpenError}" >
 				<view class="name">审核未通过原因</view>
@@ -264,12 +263,6 @@ import { mapMutations } from 'vuex';
 		},
 		data() {
 			return{
-				nvabarData: {		//顶部自定义导航
-					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
-					showSearch: 0,
-					title: '修改申请资料', // 导航栏 中间的标题
-				},
-				CustomBar:this.CustomBar,// 顶部导航栏高度
 				isOpenError:false,
 				errorList:[],
 				isShowCheckPhone:false,		//是否显示修改手机

+ 1 - 8
market/pages/login/information.vue

@@ -1,6 +1,5 @@
 <template>
-	<view class="container register" :style="{paddingTop:CustomBar+'px'}">
-		<cu-custom :navbar-data='nvabarData'  @navigateBack="hanldNavigateBack"></cu-custom>
+	<view class="container register">
 		<view class="register-main first clearfix">
 			<view class="register-row">
 				<view class="register-title">账户信息</view>
@@ -283,12 +282,6 @@
 		},
 		data() {
 			return{
-				nvabarData: {		//顶部自定义导航
-					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
-					showSearch: 0,
-					title: '修改资料', // 导航栏 中间的标题
-				},
-				CustomBar:this.CustomBar,// 顶部导航栏高度
 				isShowCheckPhone:false,		//是否显示修改手机
 				tabCurrentIndex:3,	
 				isPreviewImage:false,   	//预览图片开关

+ 3 - 13
market/pages/login/login.vue

@@ -1,7 +1,7 @@
 <template>
 	<view class="container login">
 		<view class="login-main">
-			<image class="logo" src="../../static/login-logo@3x.png" mode=""></image>
+			<image class="logo" src="../../../static/login-logo@3x.png" mode=""></image>
 			<text class="logo-text">生美/医美采购服务平台</text>
 		</view>
 		<view class="login-form">
@@ -19,12 +19,10 @@
 				<view class="iconfont" :class="isShowEye ? iconEyen : iconEyes"  @click="passwordClick"></view>
 			</view>
 			<view class="login-input link">
-				<view class="login-reg" @click.stop="this.$api.navigateTo('/pages/login/register')">免费注册</view>
-				<view class="login-pwd" @click.stop="this.$api.navigateTo('/pages/login/password')">忘记密码?</view>
+				<view class="login-pwd" @click.stop="this.$api.navigateTo('/market/pages/login/password')">忘记密码?</view>
 			</view>
 		</view>
 		<view class="login-btn"  @click="confirmLogin">登录</view>
-		<view class="login-btn-last" @click.stop="this.$api.navigateTo(`/pages/login/login?data=${getOption}`)">邀请码登录</view>
 		<view class="login-tel">客服热线:0755-22907771</view>
 	</view>
 </template>
@@ -192,18 +190,10 @@
 			text-align: center;
 			background: $btn-confirm;
 		}
-		.login-btn-last{
-			width: 702rpx;
-			font-size: $font-size-28;
-			line-height: 160rpx;
-			margin: 0 auto;
-			color: $text-color;
-			text-align: center;
-		}
 		.login-tel{
 			width: 702rpx;
 			font-size: $font-size-28;
-			line-height: 80rpx;
+			line-height: 240rpx;
 			margin: 0 auto;
 			color: $text-color;
 			text-align: center;

+ 426 - 0
market/pages/login/password.vue

@@ -0,0 +1,426 @@
+<template>
+	<view class="container login">
+		<!-- 手机修改 -->
+		<view class="content">
+			<view class="login-form clearfix">
+				<view class="login-input">
+					<input type="number" v-model="mobile"  maxlength="11" class="input"  placeholder="请输入手机号"/>
+				</view>
+			</view>
+			<view class="login-form clearfix">
+				<view class="login-input code">
+					<input type="text" v-model="imageCode"  maxlength="4" class="input" placeholder="请输入右侧图形验证码" />
+				</view>
+				<view class="login-input img-btn">
+					<view class="vscodeimg">
+						<image :src="imageCodeUrl" mode=""></image>
+					</view>
+					<view class="vscod-refresh" @click.stop="getVerificationCode">
+						<text class="iconfont icon-shuaxin"></text>
+						<text class="ref-text">刷新</text>
+					</view>
+				</view>
+			</view>
+			<view class="login-form clearfix">
+				<view class="login-input code">
+					<input type="number" v-model="mobileCode"  maxlength="6" class="input" placeholder="请输入短信验证码"/>
+				</view>
+				<view class="login-input btn" :class="[isMobileDisabled  ? 'disabled' : '']" >
+					<button type="button"
+							@click.stop="getMobileCodeFn"
+							:disabled="isMobileDisabled" 
+							class="input" >
+							{{ mobileCodeText }}
+					</button>
+				</view>
+			</view>
+			<view class="login-form clearfix">
+				<view class="login-input pwd">
+					<input v-show="isShowEye" type="text" v-model="password"  maxlength="16" class="input" placeholder="请输入新密码,必须为8-16位字母数字的组合" autocomplete="new-password"/>
+					<input v-show="!isShowEye" type="password" v-model="password"  :password="true" maxlength="16" class="input" placeholder="请输入新密码,必须为8-16位字母数字的组合" autocomplete="new-password"/>
+					<view class="iconfont" :class="isShowEye ? iconEyen : iconEyes"  @click="passwordEye"></view>
+				</view>
+			</view>
+			<view class="login-form clearfix">
+				<view class="login-input pwd">
+					<input v-show="isShowEyes" type="text" v-model="passwordCheck"  maxlength="16" class="input" placeholder="请确认密码" autocomplete="new-password"/>
+					<input v-show="!isShowEyes" type="password" v-model="passwordCheck"  :password="true" maxlength="16" class="input" placeholder="请确认密码" autocomplete="new-password"/>
+					<view class="iconfont" :class="isShowEyes ? iconEyen : iconEyes"  @click="passwordEyes"></view>
+				</view>
+			</view>
+			<view class="login-form clearfix">
+				<view class="login-btn"  @click="confirmMobilePassword">修改密码</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import authorize from '@/common/config/authorize.js' 
+	import { mobilePassword , emailPassword } from "@/api/use.js"
+	import { getImageCode, getEmailCode, getMobileCode } from "@/api/utils.js"
+	
+	export default{
+		data() {
+			return{
+				tabCurrentIndex: 1,
+				mobile:'',  		//用户手机号
+				email:'',			//邮箱地址
+				emailCode:'',		//油箱验证码
+				mobileCode:'',  	//手机验证码
+				password:'',		//新密码
+				passwordCheck:'',   //二次校验新密码
+				isShowEye:false,	//控显
+				isShowEyes:false,	//控显
+				iconEyes:'icon-yanjing_yincang_o',
+				iconEyen:'icon-yanjing_xianshi_o',
+				isEmialDisabled:false,//获取邮箱验证码按钮
+				isMobileDisabled:false,//获取手机短信按钮
+				imageCode:'',			//图形验证码
+				imageCodeUrl:'',		//图形验证码地址
+				imageCodetoken:'',		//图形校验token
+				count: '',				//倒计时
+				emailCodeText: '获取验证码',
+				mobileCodeText: '获取验证码',
+				codeTime: null,
+			}
+		},
+		onLoad(option) {
+			console.log(option)
+			this.getVerificationCode()
+		},
+		methods:{
+			confirmMobilePassword(){//手机号修改
+				let params = {
+						mobileOrEmail : this.mobile,
+						activateCode : this.mobileCode,
+						passWord : this.password,
+						confirmPwd : this.passwordCheck,
+						status:1
+					}
+				mobilePassword(params).then(res =>{
+					this.$util.msg(res.msg,2000);
+					uni.navigateBack({
+						delta: 1
+					});
+				}).catch( res =>{
+					this.$util.msg(res.msg,2000);
+				})
+			},
+			confirmEmailPassword(){//邮箱修改密码
+				 let params = {
+						mobileOrEmail : this.email,
+						activateCode : this.emailCode,
+						passWord : this.password,
+						confirmPwd : this.passwordCheck,
+						status:2
+					}
+				emailPassword(params).then(res =>{
+					this.$util.msg(res.msg,2000);
+					uni.navigateBack({
+						delta: 1
+					});
+				}).catch( res =>{
+					this.$util.msg(res.msg,2000);
+				})
+			},
+			getVerificationCode(){//图形验证
+				getImageCode().then(res => {
+					this.imageCodeUrl = res.data.baseImage
+					this.imageCodetoken = res.data.token
+				})
+			},
+			getEmailCodeFn(){//获取邮箱验证码
+				if( this.email == ''){
+					this.$util.msg('请输入邮箱地址',2000);
+					return
+				}
+				if(!this.$reg.isEmail(this.email)){
+					this.$util.msg('请输入正确的邮箱地址',2000);
+					return
+				}
+				this.isEmialDisabled = true;
+				getEmailCode({email:this.email,status:3}).then(res =>{
+					this.$util.msg('邮箱验证码已发送',2000);
+					const TIME_COUNT = 60;
+			     	if (!this.codeTime) {
+			       		this.count = TIME_COUNT;
+			       		this.isEmialDisabled = true;
+			       		this.codeTime = setInterval(() => {
+			       			if (this.count > 1 && this.count <= TIME_COUNT) {
+			         			this.count--
+			         			this.emailCodeText = this.count +'s重新发送'
+			        		} else {
+				         		this.isEmialDisabled = false;
+				         		clearInterval(this.codeTime)
+				         		this.codeTime = null
+								this.emailCodeText = '获取验证码'
+			        		}
+			       		},1000)
+			      	}
+				}).catch( res =>{
+					this.$util.msg(res.msg,2000);
+					this.isEmialDisabled = false;
+				})
+			},
+			getMobileCodeFn(){//获取手机验证码
+				if( this.mobile == ''){
+					this.$util.msg('请输入手机号',2000);
+					return
+				}
+				if(!this.$reg.isMobile(this.mobile)){
+					this.$util.msg('请输入正确的手机号',2000);
+					return
+				}
+				if( this.imageCode == ''){
+					this.$util.msg('请输入图形验证码',2000);
+					return
+				}
+				let params = {
+						mobile:this.mobile,
+						activateCodeType:1,
+						platformType:2,
+						imgCode:this.imageCode,
+						token:this.imageCodetoken,
+					}
+				this.isMobileDisabled = true;
+				getMobileCode(params).then(res =>{
+					this.$util.msg('验证短信已发送',2000);
+					const TIME_COUNT = 60;
+			     	if (!this.codeTime) {
+			       		this.count = TIME_COUNT;
+			       		this.isMobileDisabled = true;
+			       		this.codeTime = setInterval(() => {
+			       			if (this.count > 1 && this.count <= TIME_COUNT) {
+			         			this.count--
+			         			this.mobileCodeText = this.count +'s重新发送'
+			        		} else {
+				         		this.isMobileDisabled = false;
+				         		clearInterval(this.codeTime)
+				         		this.codeTime = null
+								this.mobileCodeText = '获取验证码'
+			        		}
+			       		},1000)
+			      	}
+				}).catch( res =>{
+					this.$util.msg(res.msg,2000);
+					this.isMobileDisabled = false;
+				})
+			},
+			tabClick(index) {//tab切换
+				this.tabCurrentIndex = index;
+				this.password = ''
+				this.passwordCheck = ''
+				if(this.tabCurrentIndex == 1){
+					this.getVerificationCode()
+				}
+			},
+			passwordEye() {//密码显隐操作
+				this.isShowEye = !this.isShowEye;
+			},
+			passwordEyes() {//密码显隐操作
+				this.isShowEyes = !this.isShowEyes;
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.content{
+		padding-top: 50rpx;
+	}
+	.login{
+		width: 100%;
+		height: auto;
+		.login-main{
+			width: 100%;
+			display: flex;
+			height: 80rpx;
+			border-top: 1px solid #F7F7F7;
+			margin-bottom: 112rpx;
+			position: relative;
+			.line{
+				position: absolute;
+				top: 0;
+				left: 50%;
+				margin-left: -80rpx;
+				width: 0;
+				height: 0;
+				border-left: 80rpx solid transparent;
+				border-right: 80rpx solid transparent;
+				border-bottom: 160rpx solid #FFFFFF;
+			}
+			.nav-item{
+				display: flex;
+				flex: 1;
+				flex-direction: column;
+				align-items: center;
+				line-height: 80rpx;
+				color: $text-color;
+				font-size: $font-size-28;
+				background: #F7F7F7;
+				&.current{
+					color:$color-system;
+					background: #FFFFFF;
+					
+				}
+			}
+		}
+		.login-form{
+			width: 702rpx;
+			height: auto;
+			padding: 0 24rpx;
+			.login-input{
+				width: 654rpx;
+				height: 40rpx;
+				padding: 24rpx;
+				margin-bottom: 20rpx;
+				background: #F7F7F7;
+				border-radius: 14rpx;
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				position: relative;
+				&.pwd{
+					.iconfont{
+						position: absolute;
+						right: 0;
+						top: 0;
+						font-size: 44rpx;
+						color: #999999;
+						font-weight: bold;
+						z-index: 99;
+						width: 96rpx;
+						height: 96rpx;
+						line-height: 96rpx;
+						text-align: center;
+					}
+				}
+				&.code{
+					width: 370rpx;
+					float: left;
+					margin-right: 20rpx;
+				}
+				&.btn{
+					width: 263rpx;
+					height: 88rpx;
+					float: left;
+					background: $btn-confirm;
+					padding: 0;
+					.input{
+						width: 263rpx;
+						height: 88rpx;
+						line-height: 88rpx;
+						padding: 0;
+						color: #FFFFFF;
+						background: $btn-confirm;
+						text-align: center;
+						border-radius: 14rpx;
+						&.none{
+							background: #F7F7F7;
+						}
+					}
+					&.disabled{
+						background: #F7F7F7;
+						.input{
+							background: #F7F7F7;
+							color: #999999;
+						}
+					}
+				}
+				&.img-btn{
+					width: 250rpx;
+					height: 88rpx;
+					padding: 0;
+					float: left;
+					background: #FFFFFF;
+					display: block;
+					.vscodeimg{
+						width: 180rpx;
+						height: 88rpx;
+						float: left;
+						display: flex;
+						flex-direction: column;
+						align-items: center;
+						border-radius: 14rpx;
+						image{
+							width: 180rpx;
+							height: 88rpx;
+							border-radius: 14rpx;
+						}
+					}
+					.vscod-refresh{
+						width: 70rpx;
+						float: right;
+						display: flex;
+						flex-direction: column;
+						align-items: center;
+						.icon-shuaxin{
+							font-size: 48rpx;
+							color: #333333;
+						}
+						.ref-text{
+							font-size: 24rpx;
+							color: #333333;
+						}
+					}
+				}
+				.input{
+					width: 100%;
+					height: 100%;
+					background: #F7F7F7;
+					font-size: $font-size-28;
+					line-height: 40rpx;
+					color: #333333;
+					border-radius: 14rpx;
+				}
+			}
+		}
+		.login-btn{
+			width: 702rpx;
+			height: 88rpx;
+			border-radius: 14rpx;
+			font-size: $font-size-28;
+			line-height: 88rpx;
+			color: #FFFFFF;
+			margin: 0 auto;
+			text-align: center;
+			background: $btn-confirm;
+			margin-top: 100rpx;
+		}
+		.model-authorization{
+			width: 100%;
+			height: 100%;
+			position: fixed;
+			top: 0;
+			left: 0;
+			z-index: 999;
+			.authorization{
+				width: 518rpx;
+				height: 320rpx;
+				position: absolute;
+				background: rgba(255,255,255,.7);
+				left: 0;
+				right: 0;
+				bottom: 0;
+				top: 0;
+				margin: auto;
+				.to-btn{
+					position: absolute;
+					top: 0;
+					left: 0;
+					right: 0;
+					bottom: 0;
+					margin: auto;
+					width: 70%;
+					height: 88rpx;
+					font-size: $font-size-28;
+					line-height: 88rpx;
+					color: #FFFFFF;
+					text-align: center;
+					border-radius: 44rpx;
+				}
+			}
+		}
+	}
+</style>

+ 22 - 149
market/pages/login/register.vue

@@ -1,60 +1,17 @@
 <template>
 	<view class="container register">
-		<view class="register-tab">
-			<view class="nav-item" :class="{ current: tabCurrentIndex === 1 }" >
-				  账户信息<view class="line"></view>
-			</view>					
-			<view class="nav-item" :class="{ current: tabCurrentIndex === 2 }" >
-				  基本信息<view class="line"></view>
-			</view>
-			<view class="nav-item" :class="{ current: tabCurrentIndex === 3 }" >
-				  详细信息
-			</view>
-		</view>
-		<view class="register-main clearfix" v-if="tabCurrentIndex === 1">
-			<view class="register-row clearfix">
-				<view class="register-from">
-					<view class="label">邮箱:</view>
-					<input class="row-input" type="text" name="input" v-model="registerEmail" placeholder="请输入您的常用邮箱" maxlength="30"/>
-				</view>
-			</view>
+		<view class="register-main clearfix">
 			<view class="register-row clearfix">
 				<view class="register-from code">
-					<view class="label">邮箱验证码:</view>
-					<input class="row-input" type="text"  name="input" v-model="regEmailCode" placeholder="请输入邮箱验证码" maxlength="4"/>
-				</view>
-				<view class="register-from btn" :class="[isEmialDisabled ? 'disabled' : '']">
-					<button class="row-input"  
-							type="button"  
-							@click.stop="getEmailCodeFn"  
-							:disabled="isEmialDisabled">
-							{{ emailCodeText }}
-					</button>
-				</view>
-			</view>
-			<view class="register-row clearfix">
-				<view class="register-from">
-					<view class="label">登录密码:</view>
-					<input class="row-input" type="password" name="input" v-model="password" placeholder="密码必须为8-16位字母数字组合" maxlength="16"/>
-				</view>
-			</view>
-			<view class="register-row clearfix">
-				<view class="register-from">
-					<view class="label">确认密码:</view>
-					<input class="row-input" type="password" name="input" v-model="passwordCheck" placeholder="请确认密码" maxlength="16"/>
+					<view class="label">邮箱:</view>
+					<input class="row-input" type="text"  name="input" v-model="registerEmail" placeholder="请输入机构邮箱地址" maxlength="30"/>
 				</view>
-			</view>
-			<view class="register-row clearfix">
-				<view class="register-btn"  @click="registerStepsfirst">下一步</view>
-			</view>
-			<view class="register-row">
-				<view class="register-text">
-					<text class="txt">注:</text>
-					<text>邮件可能存在1-2分钟的延迟,同时请留意垃圾箱邮件!</text>
+				<view class="register-from btn">
+					<button class="row-input" type="button" @click.stop="checkEmailFn">检测</button>
 				</view>
 			</view>
 		</view>
-		<view class="register-main clearfix" v-if="tabCurrentIndex === 2">
+		<view class="register-main clearfix">
 			<view class="register-row clearfix">
 				<view class="register-from">
 					<view class="label">机构名称:</view>
@@ -67,50 +24,17 @@
 					<input class="row-input" type="text" name="input" v-model="clubContact" placeholder="请输入联系姓名" maxlength="6"/>
 				</view>
 			</view>
-			<view class="register-row clearfix">
-				<view class="register-from">
-					<view class="label">手机号:</view>
-					<input class="row-input" type="number" name="input" v-model="registerMobile" placeholder="请输入手机号" maxlength="11"/>
-				</view>
-			</view>
-			<view class="register-row clearfix">
-				<view class="register-from imgcode">
-					<view class="label">图形验证码:</view>
-					<input class="row-input" type="text" name="input" v-model="imageCode" placeholder="请输入图形验证码" maxlength="4"/>
-				</view>
-				<view class="register-from img-btn">
-					<view class="vscodeimg">
-						<image :src="imageCodeUrl" mode=""></image>
-					</view>
-					<view class="vscod-refresh" @click.stop="getVerificationCode">
-						<text class="iconfont icon-shuaxin"></text>
-						<text class="ref-text">刷新</text>
-					</view>
-				</view>
-			</view>
 			<view class="register-row clearfix">
 				<view class="register-from code">
-					<view class="label">短信验证码:</view>
-					<input class="row-input" type="text" v-model="mobileCode" placeholder="请输入短信验证码" maxlength="6"/>
+					<view class="label">手机号:</view>
+					<input class="row-input phone" type="text" v-model="mobileCode" placeholder="请输入联系人手机号" maxlength="11"/>
 				</view>
 				<view class="register-from btn" :class="[isMobileDisabled  ? 'disabled' : '']" >
-					<button class="row-input"  
-							type="button" 
-							@click.stop="getMobileCodeFn" 
-							:disabled="isMobileDisabled">
-							{{ mobileCodeText }}
-					</button>
+					<button class="row-input" type="button" @click.stop="checkMobileFn">检测</button>
 				</view>
 			</view>
-			<view class="register-row clearfix">
-				<view class="register-btn"  @click="registerStepsTwo">下一步</view>
-			</view>
-			<view class="register-row clearfix">
-				<view class="register-btn none"  @click="steps(1)">上一步</view>
-			</view>
 		</view>
-		<view class="register-main detailed clearfix" v-if="tabCurrentIndex === 3">
-			<view class="register-tips"><text class="iconfont icon-gantanhao-yuankuang">详细信息请尽量填写,有利于快速审核通过</text></view>
+		<view class="register-main detailed clearfix">
 			<view class="register-row clearfix">
 				<view class="register-from">
 					<view class="label">机构简称:</view>
@@ -284,9 +208,6 @@
 				<view class="register-row ">
 					<view class="register-btn sub" @click.stop="registerStepsSub">提交审核</view>
 				</view>
-				<view class="register-row clearfix">
-					<view class="register-btn none"  @click="steps(2)">上一步</view>
-				</view>
 			</view>
 			<mpvue-city-picker :themeColor="themeColor"
 								ref="mpvueCityPicker" 
@@ -317,7 +238,6 @@
 					title: '注册', // 导航栏 中间的标题
 				},
 				CustomBar:this.CustomBar,// 顶部导航栏高度
-				tabCurrentIndex:1,			//显示step
 				isPreviewImage:false,   	//预览图片开关
 				isEmialDisabled: false,		//验证码按钮控制
 				isMobileDisabled: false,	//手机验证码按钮控制
@@ -398,7 +318,6 @@
 				}
 				organizationVerifyRegisterFirst(params).then(res =>{
 					console.log(res)
-					this.tabCurrentIndex = 2
 					this.getVerificationCode()
 				}).catch(res =>{
 					this.$util.msg(res.msg,2000);
@@ -414,7 +333,6 @@
 				}
 				organizationVerifyRegisterTwo(params).then(res =>{
 					console.log(res)
-					this.tabCurrentIndex = 3
 				}).catch(res =>{
 					this.$util.msg(res.msg,2000);
 				})
@@ -687,10 +605,6 @@
 					this.medicaCampList.push(item)
 				}
 			},
-			steps(index) {//$attrstab切换
-				console.log(index)
-				this.tabCurrentIndex = index;
-			}
 		},
 		onShow() {
 			if(this.isPreviewImage){
@@ -705,6 +619,7 @@
 	.register{
 		width: 100%;
 		height: auto;
+		padding-top: 50rpx;
 		.model-warp.none{
 			display: none;			
 		}
@@ -811,69 +726,25 @@
 							width: 550rpx;
 						}
 					}
-					&.img-btn{
-						width: 220rpx;
-						height: 88rpx;
-						padding: 0;
-						float: left;
-						background: #FFFFFF;
-						display: block;
-						.vscodeimg{
-							width: 150rpx;
-							height: 88rpx;
-							float: left;
-							display: flex;
-							flex-direction: column;
-							align-items: center;
-							border-radius: 14rpx;
-							image{
-								width: 150rpx;
-								height: 88rpx;
-								border-radius: 14rpx;
-							}
-						}
-						.vscod-refresh{
-							width: 70rpx;
-							float: right;
-							text-align: right;
-							display: flex;
-							flex-direction: column;
-							align-items: center;
-							line-height: 44rpx;
-							.icon-shuaxin{
-								font-size: 48rpx;
-								color: #333333;
-							}
-							.ref-text{
-								font-size: 24rpx;
-								color: #333333;
-							}
-						}
-					}
-					&.imgcode{
-						width: 410rpx;
-						float: left;
-						margin-right: 20rpx;
-						.row-input{
-							width: 230rpx;
-						}
-					}
 					&.code{
-						width: 410rpx;
+						width: 454rpx;
 						float: left;
 						margin-right: 20rpx;
 						.row-input{
-							width: 230rpx;
+							width: 380rpx;
+							&.phone{
+								width: 340rpx;
+							}
 						}
 					}
 					&.btn{
-						width: 224rpx;
+						width: 180rpx;
 						height: 88rpx;
 						float: left;
 						background: $btn-confirm;
 						padding: 0;
 						.row-input{
-							width: 224rpx;
+							width: 180rpx;
 							height: 88rpx;
 							line-height: 88rpx;
 							padding: 0;
@@ -882,7 +753,7 @@
 							text-align: center;
 							border-radius: 14rpx;
 							&.other{
-								width: 224rpx;
+								width: 180rpx;
 								background: #F7F7F7;
 								margin-right: 20rpx;
 							}
@@ -939,6 +810,9 @@
 						height: auto;
 						background: #FFFFFF;
 						margin-top: 30rpx;
+						.label{
+							line-height: 76rpx;
+						}
 						.row-input{
 							width: 100%;
 							height: 88rpx;
@@ -958,7 +832,6 @@
 						margin-top: 0;
 					}
 					.content-class {
-						width: 520rpx;
 						margin: 20rpx auto;
 						display: flex;
 						flex-flow: row wrap;

+ 265 - 0
market/pages/order/order-history.vue

@@ -0,0 +1,265 @@
+<template>
+	<view class="container history clearfix">
+		<view class="history-main">
+			<view v-if="isEmpty" class="empty-container">
+				<view class="txt">暂无数据</view>
+			</view>
+			<view v-else class="history-list">
+				<scroll-view scroll-y="true" >
+					<view class="list" v-for="(item, index) in historyList" :key="index">
+						<view class="list-left">
+							<view class="list-p">订单号:<text class="txt">{{item.number}}</text><text v-if="item.flag == 1" class="tag">协销</text></view>
+							<view class="list-p">总金额:<text class="txt">¥{{item.money}}</text></view>
+							<view class="list-p">数量(赠):<text class="txt">{{item.num}}</text></view>
+						</view>
+						<view class="list-opea">
+							<view class="opea-p">{{orderStateExp(item.status)}}</view>
+							<view class="opea-type-dell" @click.stop="orderDetiles(item.historyID)">
+								<text>查看详情</text>
+							</view>
+						</view>
+					</view>
+					<!--加载loadding-->
+					<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+					<tui-nomore :visible="!pullUpOn" bgcolor="#F7F7F7" :text='nomoreText'></tui-nomore>
+					<!--加载loadding-->
+				</scroll-view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import authorize from '@/common/config/authorize.js'	
+	import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
+	import tuiNomore from "@/components/tui-components/nomore/nomore"
+	import { queryhistoryList, deletehistory , updateCode } from "@/api/operator.js"
+	export default {
+		components:{
+			tuiLoadmore,
+			tuiNomore,
+		},
+		data() {
+			return {
+				historyID:'',
+				historyName:'',
+				historyImage:'',
+				linkman:'',
+				historyMobile:'',
+				isEmpty:false,
+				nomoreText: '上拉显示更多',
+				userID:'',
+				pageNum:1,
+				pageSize:10,
+				hasNextPage:false,
+				loadding: false,
+				pullUpOn: true,
+				pullFlag: true,
+				allowDataStatus:true,
+				wrapperHeight:'100%',
+				scrollHeight:'',
+				deleteAddressId:'',
+				currPage:'',//当前页面
+				prevPage:'',//上一个页面
+				tabCurrentIndex:0,
+				historyList:[
+					{
+						number:'CM65656566556566',
+						money:'23000.00',
+						num:'1',
+						status:4,
+						historyID:1,
+						flag:0
+					},
+					{
+						number:'CM65656566556566',
+						money:'23000.00',
+						num:'1',
+						status:5,
+						historyID:1,
+						flag:0
+					},
+					{
+						number:'CM65656566556566',
+						money:'23000.00',
+						num:'1',
+						status:6,
+						historyID:1,
+						flag:1
+					},
+				],
+			}
+		},
+		onLoad(option){	
+			console.log(option)
+		},
+		methods: {
+			inithistoryList(){	
+				let params = {historyID:this.historyID,pageNum:1,pageSize:this.pageSize,linkName:this.linkman,mobile:this.historyMobile}
+				queryhistoryList(params).then(response =>{
+					let responseData = response.data
+					if(responseData.results&&responseData.results.length > 0){
+						this.isEmpty = false
+						this.hasNextPage = response.data.hasNextPage
+						this.historyList =responseData.results
+						this.pullFlag = false;
+						setTimeout(()=>{this.pullFlag = true;},500)
+						if(this.hasNextPage){
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						}else{
+							this.pullUpOn = true
+							this.loadding = false
+							this.nomoreText = '已至底部'
+						}
+					}else{
+						this.isEmpty = true
+					}
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000)
+				})
+			},	
+			getOnReachBottomData(){
+				this.pageNum+=1
+				let params = {pageNum:this.pageNum,pageSize:this.pageSize,linkName:this.linkman,mobile:this.historyMobile}
+				queryhistoryList(params).then(response =>{
+					let responseData = response.data
+					if(responseData.results&&responseData.results.length > 0){
+						this.hasNextPage = response.data.hasNextPage
+						this.historyList = this.historyList.concat(responseData.results) 
+						this.pullFlag = false;// 防上拉暴滑
+						setTimeout(()=>{this.pullFlag = true;},500)
+						if(this.hasNextPage){
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						}else{
+							this.pullUpOn = false
+							this.loadding = false
+							this.nomoreText = '已至底部'
+						}
+					}
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000)
+				})
+			},
+			//订单状态文字和颜色
+			orderStateExp (state){
+				let stateText = '',
+					stateTextObject={
+						0:'待确认',
+						4:'交易完成',
+						5:'订单完成',
+						6:'已关闭',
+						7:'交易全退',
+						77:'交易全退',
+						11:'待付款待发货',
+						12:'待付款部分发货',
+						13:'待付款已发货',
+						21:'部分付款待发货',
+						22:'部分付款部分发货',
+						23:'部分付款已发货',
+						31:'已付款待发货',
+						32:'已付款部分发货',
+						33:'已付款已发货',
+						111:'待付款待发货',
+					}
+				Object.keys(stateTextObject).forEach(key => {
+					if(key == state){
+						stateText = stateTextObject[key]
+					}
+				})
+				return stateText;
+			},
+			orderDetiles(id){
+				this.$api.navigateTo(`/market/pages/order/order-details?id=${id}`)
+			}
+		},
+		onReachBottom() {
+			if(this.hasNextPage){
+				this.loadding = true
+				this.pullUpOn = true
+				this.getOnReachBottomData()
+			}	
+		},
+		onShow() {
+			this.$api.getCommonStorage('historyInfo').then(response =>{
+				console.log(response)
+				this.historyID = response.historyID
+				this.historyName = response.name
+				this.historyImage = response.image
+				this.pageNum = 1;
+				// this.inithistoryList();
+			})
+		}
+	}
+</script>
+
+<style lang='scss'>
+	page {
+		height: auto;
+	}
+	page,.container{
+		/* padding-bottom: 120upx; */
+		background: #F7F7F7;
+		border-top: 1px solid #EBEBEB;
+	}
+	.container{
+		position: relative;
+	}
+	.history-main{
+		.list{
+			display: flex;
+			align-items: center;
+			width: 702rpx;
+			height: auto;
+			padding: 24rpx;
+			background: #FFFFFF;
+			position: relative;
+			border-bottom: 1px solid #EBEBEB;
+			.list-left{
+				flex: 8;
+				.list-p{
+					line-height: 58rpx;
+					font-size: $font-size-26;
+					color: $text-color;
+					text-align: left;
+					.txt{
+						margin-left: 20rpx;
+					}
+					.tag{
+						display: inline-block;
+						width: 60rpx;
+						height: 28rpx;
+						line-height: 28rpx;
+						font-size: $font-size-20;
+						color: #FFFFFF;
+						background: $btn-confirm;
+						text-align: center;
+					}
+				}
+			}
+			.list-opea{
+				flex: 2;
+				color: #166CE1;
+				.opea-p{
+					line-height: 70rpx;
+					font-size: $font-size-24;
+					color: #E11616;
+					text-align: right;
+				}
+				.opea-type-dell{
+					width: 160rpx;
+					height: 68rpx;
+					line-height: 68rpx;
+					font-size: $font-size-24;
+					text-align: center;
+					color: #FFFFFF;
+					border-radius: 14rpx;
+					background: #166CE1;
+					margin-top: 24rpx;
+				}
+			}
+		}
+	}
+</style>
+

+ 385 - 0
market/pages/order/order-immediately.vue

@@ -0,0 +1,385 @@
+<template>
+	<view class="container all-type-list-wrapper">
+		<buyagain-list ref="productList" @operationConfim="hanldOperationConfim"></buyagain-list>
+		<!--底部选择模态层弹窗组件 -->
+		<view class="popup spec" :class="specClass"  @touchmove.stop.prevent="discard" @tap="hideSpec">
+			<!-- 遮罩层 -->
+			<view class="mask"></view>
+			<view class="layer" @tap.stop="discard">
+				<view class="content">
+					<view class="layer-smimg">
+						<image :src="handleData.mainImage" mode=""></image>
+					</view>
+					<view class="layer-nunbox">
+						<view class="layer-nunbox-t">
+							<view class="layer-nunbox-text">数量:</view>
+							<view class="number-box">
+								<view  class="iconfont icon-jianhao" :class="[isQuantity==true?'disabled':'']" @click="changeCountSub()"></view>
+								<input class="btn-input" type="number" v-model="number" maxlength='4'  @blur="changeNumber($event)">
+								<view  class="iconfont icon-jiahao"  :class="[isStock==true?'disabled':'']" @click="changeCountAdd()"></view>
+							</view>
+						</view>
+						<view class="layer-nunbox-b">
+							<view class="text">单价:
+								<text class="p sm">¥</text>
+								<text class="p bg">{{buyRetailPrice.toFixed(2)}}</text>
+							</view>
+						</view>
+					</view>
+				</view>
+				<view class="btn">
+					<view class="button buy" @click="toConfirmation">立即购买</view>
+					<view class="button add" @click="getAddProductCart">加入购物车</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import buyagainList from '@/components/module/listTemplate/buyagainList'
+	import { shoppingAddCart } from "@/api/cart.js" 
+	export default{
+		components:{
+			buyagainList
+		},
+		data(){
+			return{
+				userID: '',
+				serverUrl: '',
+				emptyText: '',
+				lastPageType: '',
+				lastPageVal: '',
+				specClass: '',//规格弹窗css类,控制开关动画
+				handleData:{},
+				isQuantity:false,
+				isStock:false,
+				minBuyNumber:0,
+				number:0,
+				buyRetailPrice:0
+			}
+		},
+		onLoad() {
+
+		},
+		methods:{
+			hanldOperationConfim(data){//显示选择数量确认弹窗
+				console.log(data)
+				this.specClass = 'show';
+				this.handleData = data
+				this.number = data.minBuyNumber
+				this.minBuyNumber = data.minBuyNumber
+				this.buyRetailPrice = data.retailPrice;
+			},
+			hideSpec() {//关闭选择数量确认弹窗
+				this.specClass = 'hide';
+				setTimeout(() => {
+					this.specClass = 'none';
+				}, 200);
+			},
+			changeCountAdd(){//popup弹窗数量增加按钮
+				this.number++
+				if(this.handleData.ladderPriceFlag == '1'){
+					this.handleData.productLadderPrices.forEach((item,index)=>{
+						if(this.number>=item.buyNum){
+							this.buyRetailPrice = item.buyPrice
+						}
+					})
+				}
+			},
+			changeCountSub(){//popup弹窗数量减按钮
+				if(this.number<=this.minBuyNumber){
+					this.number= this.minBuyNumber
+					this.isQuantity =true
+					this.$util.msg(`该商品最小起订量为${this.minBuyNumber}`,2000);
+					return
+				}else{
+					this.number--
+					if(this.handleData.ladderPriceFlag == '1'){
+						this.handleData.productLadderPrices.forEach((item,index)=>{
+							if(this.number>=item.buyNum){
+								this.buyRetailPrice = item.buyPrice
+							}
+						})
+					}
+					this.isQuantity =false
+				}
+			 },
+			changeNumber(e){
+				let _value = e.detail.value;
+				if(!this.$api.isNumber(_value)){
+					this.number = this.minBuyNumber
+				}else if(_value < this.minBuyNumber){	
+					this.$util.msg(`该商品最小起订量为${this.minBuyNumber}`,2000);
+					this.number = this.minBuyNumber
+				}else{
+					this.number = e.detail.value
+				}
+			},
+			toConfirmation(){//跳转确认订单页面
+				this.specClass = 'hide';
+				let productStp ={
+						allPrice:this.number*this.buyRetailPrice,
+						allCount:this.number,
+						id:this.handleData.productID,
+						productCount:this.number
+				}	
+				this.$api.navigateTo(`/pages/user/order/create-order?type=prodcut&data=${JSON.stringify({data:productStp})}`)
+				setTimeout(() => {
+					this.specClass = 'none';
+				}, 200);
+			},
+			getAddProductCart(){//增加购物车成功和toast弹窗提示成功
+				console.log(this.number)
+				shoppingAddCart({productID:this.handleData.productID,userID:this.userID,productCount:this.number}).then(response => {
+					this.specClass = 'hide';
+					this.$util.msg(response.msg,1500,true,'success')
+					setTimeout(() => {this.specClass = 'none'}, 200)
+					this.$refs.productList.cartQuantity = response.data
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000);
+				})
+			},
+			discard(){
+				//丢弃
+			}
+		},
+		onShow() {
+			let pages = getCurrentPages(),thisPage = pages[pages.length - 1];
+			this.$api.getStorage().then((resolve) =>{
+				this.userID = resolve.userID
+			})
+		},
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background: $sub-bg-color;
+		.all-type-list-wrapper {
+			display: flex;
+			flex-direction: column;
+		}
+	}
+	/* 加入购物模态层*/
+	@keyframes showPopup {
+		0% {
+			opacity: 0;
+		}
+		100% {
+			opacity: 1;
+		}
+	}
+	@keyframes hidePopup {
+		0% {
+			opacity: 1;
+		}
+		100% {
+			opacity: 0;
+		}
+	}
+	@keyframes showLayer {
+		0% {
+			transform: translateY(0);
+		}
+		100% {
+			transform: translateY(-100%);
+		}
+	}
+	@keyframes hideLayer {
+		0% {
+			transform: translateY(-100%);
+		}
+		100% {
+			transform: translateY(0);
+		}
+	}
+	@keyframes showAmnation {
+		0% {
+			top: -12rpx;
+			opacity: 0;
+		}
+		50% {
+			top: -60rpx;
+			opacity: 1;
+		}
+		100% {
+			top: -100rpx;
+			opacity: 0;
+		}
+	}
+	@keyframes hideAmnation {
+		0% {
+			top: -100rpx;
+			opacity: 0;
+		}
+		100% {
+			top: -12rpx;
+			opacity: 0;
+		}
+	}
+	.popup {
+		position: fixed;
+		top: 0;
+		width: 100%;
+		height: 100%;
+		z-index: 999;
+		display: none;
+		.mask{
+			position: fixed;
+			top: 0;
+			width: 100%;
+			height: 100%;
+			z-index: 21;
+			background-color: rgba(0, 0, 0, 0.6);
+		}
+		.layer {
+			position: fixed;
+			z-index: 22;
+			bottom: -294rpx;
+			width: 702rpx;
+			padding: 24rpx 24rpx 36rpx 24rpx;
+			height: 236rpx;
+			border-radius: 30rpx 30rpx 0 0;
+			background-color: #fff;
+			display: flex;
+			flex-wrap: wrap;
+			align-content: space-between;
+			.content {
+				width: 100%;
+			}
+			.btn {
+				width: 100%;
+				height: 88rpx;
+				display: flex;
+				.button {
+					width: 340rpx;
+					height: 88rpx;
+					color: #fff;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					font-size: $font-size-28;
+					border-radius: 14rpx;
+					&.buy{
+						background: $btn-confirm;
+					}
+					&.add{
+						background: rgba(239, 175, 0, 1);
+						margin-left: 20rpx;
+					}
+				}
+			}
+		}
+		
+		&.show {
+			display: block;
+			.mask{
+				animation: showPopup 0.2s linear both;
+			}
+			.layer {
+				animation: showLayer 0.2s linear both;
+			}
+		}
+		&.hide {
+			display: block;
+			.mask{
+				animation: hidePopup 0.2s linear both;
+			}
+			
+			.layer {
+				animation: hideLayer 0.2s linear both;
+			}
+		}
+		&.none {
+			display: none;
+		}
+		&.service {
+			.row {
+				margin: 30upx 0;
+				.title {
+					font-size: 30upx;
+					margin: 10upx 0;
+				}
+				.description {
+					font-size: 28upx;
+					color: #999;
+				}
+			}
+		}
+		.layer-smimg{
+			width: 114rpx;
+			height: 114rpx;
+			float: left;
+			border-radius: 10rpx;
+			margin-right: 24rpx;
+			image{
+				width: 114rpx;
+				height: 114rpx;	
+				border-radius: 10rpx;
+			}
+		}
+		.layer-nunbox{
+			justify-content: space-between;
+			align-items: center;
+			width: 536rpx;
+			height: 88rpx;
+			padding: 13rpx 0 0 0;
+			float: left;
+			.layer-nunbox-t{
+				width: 100%;
+				height:44rpx;
+				position:relative;
+				display: flex;
+				.layer-nunbox-text{
+					line-height: 44rpx;
+					font-size: $font-size-28;
+				}
+				.number-box{
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					.iconfont{
+						font-size: $font-size-32;
+						padding:0 20rpx;
+						font-size: $text-color;
+					}
+					.btn-input{
+						width: 62rpx;
+						height: 48rpx;
+						line-height: 48rpx;
+						background: #F8F8F8;
+						border-radius: 4rpx;
+						text-align: center;
+						font-size: $font-size-28;
+					}
+				}
+				.product-step{
+					position: absolute;
+					left: 45rpx;
+					bottom: 0;
+					height: 44rpx;
+					background: #FFFFFF;
+				}
+			}
+			.layer-nunbox-b{
+				width: 100%;
+				height:44rpx;
+				margin-top: 13rpx;
+			}
+			.text{
+				line-height: 44rpx;
+				font-size: $font-size-28;
+				.p{
+					color: #FF2A2A;
+				}
+				.p:first-child{
+					margin-left: 30rpx;
+				}
+				.p.sm{
+					font-size: $font-size-24;
+				}
+			}
+		}
+	}	
+</style>

+ 7 - 7
market/pages/order/order-list.vue

@@ -112,8 +112,8 @@
 		data() {
 			return {
 				orderTabBar: [{state: 0,text: '全部订单',orderList: []},
-							  {state: 1,text: '待付款',orderList: []},
-							  {state: 2,text: '待确认',orderList: []},
+							  {state: 1,text: '待确认',orderList: []},
+							  {state: 2,text: '待付款',orderList: []},
 							  {state: 3,text: '待发货',orderList: []},
 							  {state: 4,text: '已发货',orderList: []},
 							  {state: 5,text: '退货/款',orderList: []},
@@ -123,7 +123,7 @@
 				nvabarData: {							 //顶部自定义导航
 					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
 					showSearch: 1,
-					title: '我的订单', // 导航栏 中间的标题
+					title: '我的订单 ', // 导航栏中间的标题
 				},
 				winHeight: "", //窗口高度
 				currentTab: 0, //预设当前项的值
@@ -285,7 +285,7 @@
 			detail(id) {//订单详情跳转
 				console.log(id)
 				this.isModalLayer = true;	
-				this.$api.navigateTo(`/pages/user/order/order-details?state=${this.currentTab}&orderID=${id}`)
+				this.$api.navigateTo(`/market/pages/order/order-details?state=${this.currentTab}&orderID=${id}`)
 			},
 			handButtonConfirm(data) {//获取点击
 				console.log('点击按钮的类型是',data);
@@ -302,7 +302,7 @@
 						break
 					case 'query':
 						this.isModalLayer = true;
-						this.$api.navigateTo('/pages/user/order/order-logistics?orderID='+data.orderId)
+						this.$api.navigateTo('/market/pages/order/order-logistics?orderID='+data.orderId)
 						break
 					case 'confirm':
 						this.handOrderConfirm(data.orderId);
@@ -346,7 +346,7 @@
 				})
 			},
 			handlSearchPath(){
-				this.$api.navigateTo('/pages/search/search-order')
+				this.$api.navigateTo('/market/pages/search/search-order')
 			},
 			onShareAppMessage (res){//分享转发
 				this.isShareModal = false
@@ -355,7 +355,7 @@
 			    }
 				return {
 					title: '您有新的分享订单,快来查看吧~',
-					path: `/pages/user/order/orderShareLogin?orderID=${this.btnoRderID}&userID=${this.userID}`,
+					path: `/market/pages/order/orderShareLogin?orderID=${this.btnoRderID}&userID=${this.userID}`,
 					imageUrl:'https://admin-b.caimei365.com/userfiles/1/images/photo/2020/03/%E8%AE%A2%E5%8D%95%E5%88%86%E4%BA%AB%E5%9B%BE%403x.png'
 				}
 			},

+ 788 - 0
market/pages/search/search-order.vue

@@ -0,0 +1,788 @@
+<template>
+	<view class="search-container">
+		<!-- <or-search :theme="themeClass" @getSearchText="getSearchText"></or-search> -->
+		<view class="search-main">
+			<view class="search">
+				<view class="search-input">
+					<text class="iconfont icon-iconfonticonfontsousuo1"></text>
+					<input maxlength="20" focus type="text" value="" confirm-type="search" @focus="onFocus" @input="onShowClose" @confirm="subMitSearch()" placeholder="请输入订单编号" v-model.trim="searchInputVal"/>
+					<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText()"></text>
+				</view>
+				<view class="search-btn" @click="subMitSearch()">搜索</view>
+			</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="list">
+					<view v-for="(item,index) in serachRecordList" :key="index" @click="keywordsClick(item.searchWord)">{{item.searchWord}}</view>
+				</view>
+			</view>
+		</view>
+		<view class=" order-container" v-if="isShowWrapper" :style="{'overflow' : 'auto','height': (showSkeleton? windowHeight + 'px' : 'auto')}">
+			<scroll-view  class="tui-skeleton" :style="{'height':scrollHeight+'px'}"  @scrolltolower="scrolltolower" scroll-y >
+				<view  :class="{'tui-order-list':scrollTop >= 0}" class="tui-skeleton clearfix">
+					<!-- 空白页 -->
+					<empty v-if="isShowEmpty" :navbarHeight="navbarHeight"></empty>
+					<!-- 列表 -->
+					<view v-else class="tui-order-content">
+						<view  class="tui-order-item" v-for="(order,orderIndex) in orderList" :key="orderIndex" @click.stop="detail(order.orderID)">
+							<view class="order-title">
+								<view class="order-title-t">
+									<view class="order-title-num tui-skeleton-fillet">订单号:{{order.orderNo}}</view>
+									<view class="order-title-tip tui-skeleton-fillet">{{orderStateExp(order.status)}}</view>
+								</view>
+								<view class="order-title-b">下单时间:{{order.orderTime}}</view>
+							</view>
+							<block v-for="(shop,index) in order.shopOrderList" :key="index">
+								<view class="goods-title">
+									<view class="title-logo tui-skeleton-fillet"><image :src="shop.shopLogo" mode=""></image></view>
+									<view class="title-text tui-skeleton-fillet">{{shop.shopName}}</view>
+								</view>
+								<view class="goods-item" v-for="(pros,prosIndex) in shop.orderProductList" :key="prosIndex">
+									<view class="goods-pros-t">
+										<view class="pros-img tui-skeleton-fillet"><image :src="pros.productImage" alt="" /></view>
+										<view class="pros-product">
+											<view class="producttitle tui-skeleton-fillet">{{pros.name}}</view>
+											<view class="productspec tui-skeleton-fillet">规格:{{pros.productUnit}}</view>
+											<view class="productprice">
+												<view class="price tui-skeleton-fillet">
+													<text>¥{{pros.price.toFixed(2)}}</text>
+												</view>
+												<view class="count tui-skeleton-fillet">
+													<text class="small">x</text>{{pros.num}}
+												</view>
+											</view>
+										</view>	
+									</view>
+								</view>	
+							</block>
+							<view class="order-footer">
+								<view class="order-footer-top" v-if="order.discountFee!=0">经理折扣:¥{{orderPriceToFixed(order.discountFee)}}</view>
+								<view class="order-footer-bot">
+									<view class="count tui-skeleton-fillet">共{{order.productCount}}件商品</view>
+									<view class="money tui-skeleton-fillet">合计:¥{{orderPriceToFixed(order.payableAmount)}}</view>
+								</view>
+							</view>
+							<!-- 底部button -->
+							<order-button ref="orderButton" 
+										  :status="order.status" 
+										  :orderID="order.orderID" 
+										  @buttonConfirm="handButtonConfirm">
+							</order-button>
+						</view>
+						<!--加载loadding-->
+						<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+						<tui-nomore :visible="!pullUpOn" bgcolor="#F7F7F7" :text='nomoreText'></tui-nomore>
+						<!--加载loadding-->
+					</view>
+				</view>
+			</scroll-view>
+		</view>
+		<!-- 分享弹窗 -->
+		<share-alert   v-if="isShareModal"
+					   :orderID="btnoRderID" 
+					   @shareConfirm ='onShareAppMessage'>
+		</share-alert>
+		<!-- 透明模态层 -->
+		<modal-layer v-if='isModalLayer'></modal-layer>
+	</view>
+</template>
+
+<script>
+	import orSearch from '@/components/uni-search/or-search.vue'
+	import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
+	import tuiNomore from "@/components/tui-components/nomore/nomore"
+	import orderButton from '@/components/module/orderDetails/orderListButton'		 //按钮
+	import modalLayer from "@/components/modal-layer"
+	import empty from "@/components/empty";
+	import shareAlert from '@/components/module/modelAlert/shareAlert'			 //分享弹窗
+	import authorize from '@/common/config/authorize.js'
+	import { 
+		searchOrderInfo, 
+		searchOrderHistory,
+		clearOrderHistory,
+		queryOrderList,
+		cancelOrder,
+		deleteOrder,
+		confirmReceipt
+	} from "@/api/order.js"
+	export default {
+		components: {
+			orSearch,
+			tuiLoadmore,
+			tuiNomore,
+			orderButton,
+			empty,
+			shareAlert,
+		},
+		data() {
+			return {
+				themeClass: 'block',
+				searchInputVal:'',
+				isShowClose:false,							//是否显示清空输入框图标
+				isSearchHistory:false,						//是都显示搜索历史
+				serachRecordList:[],
+				isShowWrapper:false,
+				isModallayer:false,
+				isShowEmpty:false,
+				windowHeight: '',
+				showSkeleton: true,
+				userID:0,
+				orderList: [],
+				btnoRderID: 0, //点击按钮传入的的订单ID
+				pageNum: 1,	  //页数
+				pageSize: 10,  //条数
+				scrollTop: 0,
+				deteleType:'',
+				skeletonShow: true,
+				isShareModal: false,//控制分享弹窗
+				isCenceModal: false,//控制取消订单弹窗
+				isShowDelModal: false,//控制删除订单弹窗
+				isModalLayer: false,
+				loadding: false,
+				pullUpOn: true,
+				hasNextPage: false,
+				pullFlag: true,
+				navbarHeight:'',
+				nomoreText: '上拉显示更多',
+				scrollHeight:''
+			}
+		},
+		onLoad() {
+		  this.initGetSerachRecord()
+		},
+		methods:{
+			subMitSearch() {
+				if (this.searchInputVal == '') {
+					this.$util.msg('请输入订单编号',2000);
+				}else{
+					this.commodityList =[]
+					this.getOrderDatainit()
+				}
+			},
+			initGetSerachRecord(){
+				this.$api.getStorage().then((resolve) =>{
+					this.userID = resolve.userID
+					searchOrderHistory({userId:this.userID}).then(response =>{
+						this.serachRecordList = response.data
+						if(this.serachRecordList.length>0){
+							this.isSearchHistory = true
+						}else{
+							this.isSearchHistory = false
+						}
+					}).catch(response =>{
+						this.$util.msg(response.msg,2000)
+					})
+				})	
+			},
+			onShowClose () { //输入框失去焦点时触发
+				this.inputEmpty(this.searchInputVal)
+			},
+			onFocus () { //输入框获取焦点时触发
+				this.inputEmpty(this.searchInputVal)
+				this.initGetSerachRecord()
+			},
+			delInputText () { //清除输入框内容
+				this.searchInputVal = ''
+				this.isShowClose = false
+				this.isShowWrapper = false
+				this.inputEmpty(this.searchInputVal)
+				this.initGetSerachRecord()
+			},
+			keywordsClick (item) {	//关键词搜索与历史搜索
+				this.searchInputVal = item;
+				this.isShowClose = true;
+				this.subMitSearch();
+			},
+			confirmDetele () {//清空历史记录
+				this.$util.modal('提示','确定删除历史记录?','确定','取消',true,() =>{
+					clearOrderHistory({userId:this.userID}).then(response =>{
+						this.$util.msg('删除记录成功',2000,true,'success')
+						this.serachRecordList=[]
+					}).catch(response =>{
+						this.$util.msg(response.msg,2000)
+					})
+				})
+			},
+			inputEmpty(val){
+				this.isShowWrapper = false
+				if(val != ''){
+					this.isShowClose = true
+				}else{					
+					this.isShowClose = false
+				}
+			},
+			getOrderDatainit(index,source){
+				/**
+				 * @订单初始化加载  仅加载第一页码
+				 * @param:searchWord(搜索关键词)
+				 * @param:userId(用户ID)
+				 * @param:pageNum(页码数)
+				 * @param:pageSize(每页条数)
+				 * @param:organizeID(全局变量组织ID)
+				 */ 
+				let params = {searchWord:this.searchInputVal,userId:this.userID,pageNum:1,pageSize:this.pageSize};
+				searchOrderInfo(params).then(response =>{
+					this.isShowWrapper = true
+					this.showSkeleton = true
+					const _responseData = response.data.results;
+					if(_responseData && _responseData.length > 0){
+						let filrerData = _responseData.filter(item=>{
+							//添加不同状态下订单的表现形式
+							item = Object.assign(item, this.orderStateExp(item.state));
+							return item;
+						});
+						this.orderList =[];
+						filrerData.forEach(item=>{
+							this.orderList.push(item);
+						})
+						this.hasNextPage = response.data.hasNextPage;
+						if(this.hasNextPage){
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						}else{
+							if(this.orderList.length < 2){
+								this.pullUpOn = true
+							}else{
+								this.pullUpOn = false
+								this.nomoreText = '已至底部'
+							}
+						}
+						this.isShowEmpty = false
+					}else{
+						this.isShowEmpty = true
+					}
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000)
+				})
+			}, 
+			getOnReachBottomData(index){//上拉加载
+				this.pageNum+=1
+				let params = {searchWord:this.searchInputVal,userId:this.userID,pageNum:this.pageNum,pageSize:this.pageSize}
+				searchOrderInfo(params).then(response =>{
+					let resData = response.data.results
+					this.hasNextPage = response.data.hasNextPage;
+					this.orderList = this.orderList.concat(resData)
+					this.pullFlag = false;// 防上拉暴滑
+					setTimeout(()=>{this.pullFlag = true;},500)
+					if(this.hasNextPage){
+						this.pullUpOn = false
+						this.nomoreText = '上拉显示更多'
+					}else{
+						this.loadding = false
+						this.pullUpOn = false
+						this.nomoreText = '已至底部'
+					}
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000)
+				})
+			},
+			scrolltolower() {
+				if(this.hasNextPage){
+					this.loadding = true
+					this.pullUpOn = true
+					this.showSkeleton = false
+					this.getOnReachBottomData();
+				}	
+			},
+			detail(id) {//订单详情跳转
+				// console.log(id)
+				this.isModalLayer = true;	
+				this.$api.navigateTo(`/pages/user/order/order-details?state=${this.currentTab}&orderID=${id}`)
+			},
+			handButtonConfirm(data) {//获取点击
+				// console.log('点击按钮的类型是',data);
+				this.handShowAlert(data)
+				this.btnoRderID = data.orderId
+			},
+			handShowAlert(data) {//执行
+				switch(data.type){
+					case 'delete':
+						this.handOrderDetele();
+						break
+					case 'cancel':
+						this.handCenceConfirm()
+						break
+					case 'query':
+						this.isModalLayer = true;
+						this.$api.navigateTo('/pages/user/order/order-logistics?orderID='+data.orderId)
+						break
+					case 'confirm':
+						this.handOrderConfirm(data.orderId);
+						break
+				}
+			},
+			handOrderConfirm (id){//确认收货
+				this.$util.modal('提示','是否确认收货','确定','取消',true,() =>{
+					confirmReceipt({orderID:id}).then(response =>{
+						this.$util.msg(response.msg,2000,true,'success');
+						this.initOrderDetaileData()
+					}).catch(response =>{
+						this.$util.msg(response.msg,2000)
+					})
+				})
+			},
+			handOrderDetele(){//删除订单
+				this.$util.modal('提示','确认删除该订单吗?','确定','取消',true,() =>{
+					deleteOrder({orderID:this.orderID}).then(response =>{
+						this.$util.msg(response.msg,2000,true,'success');
+						setTimeout(() => {
+							if(this.shareType ==='share'){
+								this.$api.switchTabTo('/pages/tabBar/user/user')
+							}else{
+								this.$api.redirectTo(`/pages/user/order/order-list?type=detele&state=${this.state}`)
+							}
+						},500)
+					}).catch(response =>{
+						this.$util.msg(response.msg,2000)
+					})
+				})
+			},
+			handCenceConfirm(){//取消订单
+				this.$util.modal('提示','确认取消该订单吗?','确定','取消',true,() =>{
+					cancelOrder({orderID:this.orderID}).then(response =>{
+						this.$util.msg(response.msg,2000,true,'success');
+						this.initOrderDetaileData()
+					}).catch(response =>{
+						this.$util.msg(response.msg,2000)
+					})
+				})
+			},
+			handlSearchPath(){
+				this.$api.navigateTo('/pages/search/search-order')
+			},
+			onShareAppMessage (res){//分享转发
+				this.isShareModal = false
+				if (res.from === 'button') {// 来自页面内转发按钮
+					// console.log(res.target)
+			    }
+				return {
+					title: '您有新的分享订单,快来查看吧~',
+					path: `/pages/user/order/orderShareLogin?orderID=${this.btnoRderID}&userID=${this.userID}`,
+					imageUrl:'https://img.caimei365.com/group1/M00/03/8C/Cmis215XHXSAWWkhAAXDP4-6m_c397.png'
+				}
+			},
+			//订单状态文字和颜色
+			orderStateExp (state){
+				let stateText = '',
+					stateTextObject={
+						4:'交易完成',
+						5:'订单完成',
+						6:'已关闭',
+						7:'交易全退',
+						77:'交易全退',
+						11:'待付款待发货',
+						12:'待付款部分发货',
+						13:'待付款已发货',
+						21:'部分付款待发货',
+						22:'部分付款部分发货',
+						23:'部分付款已发货',
+						31:'已付款待发货',
+						32:'已付款部分发货',
+						33:'已付款已发货',
+						111:'待付款待发货',
+					}
+				Object.keys(stateTextObject).forEach(key => {
+					if(key == state){
+						stateText = stateTextObject[key]
+					}
+				})
+				return stateText;
+			},
+			orderPriceToFixed (n){
+				let price ='';
+				price = n.toFixed(2);
+				return price
+			},
+			setScrollHeight() {
+				const {windowHeight, pixelRatio} = wx.getSystemInfoSync();
+				this.windowHeight = windowHeight - 1;
+				this.scrollHeight = windowHeight - 1;
+			}
+		},
+		onPageScroll(e) {
+			this.scrollTop = e.scrollTop;
+			
+		},
+		onShow() {
+			this.setScrollHeight();
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import "@/uni.scss";
+	page{
+		background-color: #F7F7F7 !important;
+	}
+	.search{
+		width: 702rpx;
+		height: 80rpx;
+		padding: 12rpx 24rpx;
+		border-bottom: 1px solid #F0F0F0;
+		position: fixed;
+		top: 0;
+		left: 0;
+		background: #FFFFFF;
+		z-index: 1001;
+		.search-input{
+			width: 448rpx;
+			height: 80rpx;
+			padding: 0 68rpx;
+			line-height: 80rpx;
+			border-radius: 40rpx;
+			position: relative;
+			background: #F0F0F0;
+			float: left;
+			.icon-iconfonticonfontsousuo1{
+				font-size: 36rpx;
+				color: #8A8A8A;
+				position: absolute;
+				left: 24rpx;
+				z-index: 10;
+			}
+			.icon-shanchu1{
+				font-size: 36rpx;
+				color: #8A8A8A;
+				position: absolute;
+				right: 24rpx;
+				top: 0;
+				padding: 0 10rpx;
+				z-index: 10;
+			}
+			input{
+				width: 448rpx;
+				height: 80rpx;
+				background-color: #F0F0F0;
+				font-size: 26rpx;
+			}
+		}
+		.search-btn{
+			width: 118rpx;
+			height: 80rpx;
+			line-height: 80rpx;
+			color: $color-system;
+			font-size: 30rpx;
+			text-align: center;
+			float: left;
+		}
+		.voice-icon{
+			width: 36rpx;
+			height: 36rpx;
+			padding: 16rpx 20rpx 16rpx 0;
+			position: absolute;
+			left: 16rpx;
+			top: 4rpx;
+			z-index: 10;
+		}
+		
+	}
+	.search-container{
+		padding-top: 106rpx;
+	}
+	.s-block{
+		background: #FFFFFF;
+		.header{
+			font-size: 32rpx;
+			padding:40rpx 24rpx 22rpx 24rpx;
+			line-height: 42rpx;
+			font-size: 30rpx;
+			font-weight: bold;
+			position: relative;
+			.icon-shanchu{
+				font-size: 36rpx;
+				color: #333333;
+				float: right;
+				padding: 0 10rpx;
+				z-index: 10;
+				font-weight: normal;
+			}
+		}
+		.list{
+			display: flex;
+			flex-wrap: wrap;
+			padding-bottom: 40rpx;
+			view{
+				color: #8A8A8A;
+				font-size: 24rpx;
+				box-sizing: border-box;
+				text-align: center;
+				height: 48rpx;
+				line-height: 48rpx;
+				border-radius: 24rpx;
+				margin:12rpx;
+				padding:.0 30rpx;
+				overflow: hidden;
+				white-space: nowrap;
+				text-overflow: ellipsis;
+				background-color: #F3F3F3;
+			}
+		}
+	}
+	.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;
+				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;
+				white-space: nowrap;
+				text-overflow: ellipsis;
+			}
+		}
+	}
+	.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;
+			}
+		}
+	}
+	.order-container {
+		scroll-view {
+			height: 100%;
+			overflow: scroll;
+		}	
+	}	
+	.container {
+		padding-bottom: env(safe-area-inset-bottom);
+		height: auto;
+		position: relative;
+	}
+	.tui-order-content{
+		width: 100%;
+		height: auto;
+	}
+	.tui-order-list {
+		width: 100%;
+		position: relative;
+	}
+	.tui-order-item {
+		display: flex;
+		flex-direction: column;
+		width: 702rpx;
+		padding:20rpx 24rpx 0 24rpx;
+		background: #fff;
+		border-bottom: 20rpx solid #F7F7F7;
+	}
+	.order-title{
+		width: 100%;
+		height: auto;
+		.order-title-t{
+			width: 100%;
+			height: 40rpx;
+			float: left;
+			font-size: $font-size-28;
+			line-height: 40rpx;
+			font-weight: bold;
+			.order-title-num{
+				float: left;
+				text-align: left;
+				color: $color-system;
+			}
+			.order-title-tip{
+				float: right;
+				text-align: right;
+				color: #FF2A2A;
+			}
+		}
+		.order-title-b{
+			width: 100%;
+			height: 40rpx;
+			float: left;
+			margin-top: 8rpx;
+			font-size: $font-size-28;
+			line-height: 40rpx;
+			color: #999999;
+			text-align: left;
+		}
+	}
+	.goods-title{
+		width: 100%;
+		height: 48rpx;
+		float: left;
+		margin-top: 24rpx;
+		.title-logo{
+			width: 48rpx;
+			height: 48rpx;
+			float: left;
+			image{
+				width: 48rpx;
+				height: 48rpx;
+			}
+		}
+		.title-text{
+			float: left;
+			margin-left: 16rpx;
+			font-size: $font-size-28;
+			color: $text-color;
+			text-align: left;
+			line-height: 48rpx;
+			font-weight: bold;
+		}
+	}
+	.goods-item{
+		width: 100%;
+		height: auto;
+	}	
+	.goods-pros-t{
+		display: flex;
+		align-items: center;
+		width: 100%;
+		height: 217rpx;
+		padding:24rpx 0;
+		.pros-img{
+			width: 210rpx;
+			height: 100%;
+			border-radius: 10rpx;
+			margin:0 26rpx 0 0;
+			border:1px solid #f3f3f3;
+			image{
+				width: 100%;
+				height: 100%;
+				border-radius: 10rpx;
+			}
+		}
+	}
+	.pros-product{
+		width: 468rpx;
+		height: 100%;
+		line-height: 36rpx;
+		font-size: $font-size-26;	
+		position: relative;
+		.producttitle{
+			width: 100%;
+			display: inline-block;
+			height: auto;							
+			text-overflow:ellipsis;
+			display: -webkit-box;
+			word-break: break-all;
+			-webkit-box-orient: vertical;
+			-webkit-line-clamp: 2;
+			overflow: hidden;
+			margin-bottom: 8rpx;
+		}
+		.productspec{
+			height: 36rpx;
+			color: #999999;
+		}
+		.productprice{
+			height: 48rpx;
+			position: absolute;
+			width: 100%;
+			bottom: 0;
+			.price{
+				line-height: 48rpx;
+				font-size: $font-size-28;
+				width: 48%;
+				color: #FF2A2A;
+				float: left;
+				font-weight: bold;
+			}
+			.count{
+				height: 100%;
+				float: right;
+				position: relative;
+				.small{
+					color: #666666;
+				}
+			}
+		}
+	}
+	.order-footer{
+		width: 100%;
+		height: 78rpx;
+		float: left;
+		.order-footer-top{
+			width: 100%;
+			height: 34rpx;
+			line-height: 34rpx;
+			font-size: $font-size-24;
+			color: #999999;
+			text-align: right;
+		}
+		.order-footer-bot{
+			width: 100%;
+			float: left;
+			height: 48rpx;
+			line-height: 48rpx;
+			font-size: $font-size-28;
+			font-weight: bold;
+			color: $text-color;
+			.count{
+				width: 50%;
+				float: left;
+				text-align: left;
+			}
+			.money{
+				width: 50%;
+				float: right;
+				text-align: right;
+			}
+		}
+	}
+</style>

+ 530 - 0
market/pages/search/search.vue

@@ -0,0 +1,530 @@
+<template>
+	<view class="search-container">
+		<view class="search-main">
+			<view class="search-input">
+				<text class="iconfont icon-iconfonticonfontsousuo1"></text>
+				<input maxlength="20" focus type="text" value="" confirm-type="search" @focus="onFocus" @input="onShowClose" @confirm="subMitSearch()" placeholder="请输入商品关键词" v-model.trim="searchInputVal"/>
+				<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="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="list">
+					<view v-for="(item,index) in serachRecordList" :key="index" @click="keywordsClick(item.searchWord)">{{item.searchWord}}</view>
+				</view>
+			</view>
+		</view>
+		<!-- <go-search :theme="themeClass" @subMitSearch="subMitSearch"></go-search> -->
+		<view v-else class="commodity-list-wrapper"  :style="{'overflow':'auto','height':(commodityList.length>4? windowHeight + 'px' : 'auto')}">
+			<scroll-view :style="{'height':(commodityList.length>4? scrollHeight+'px' : 'auto')}" @scrolltolower="scrolltolower" scroll-y v-if="!showEmpty">
+				<view v-for="(item,index) in commodityList" :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>
+						<text class="list-details-miniQuantity" v-if="fromRegularPurchasePage">起订量:{{item.minBuyNumber}}</text>
+						<view class="list-details-price">
+							<view v-if="!hasLogin" 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 class="list-price" v-else>
+								<view class="price-larger" v-if="item.price1TextFlag == '1'">
+									<text class="txt">该商品尚未公开价格</text>
+									<text class="txt">购买请致电:0755-22907771</text>
+								</view>
+								<text v-else>¥<text class="price-larger">{{item.retailPrice.toFixed(2)}}</text></text>
+							</view>
+						</view>
+					</view>
+				</view>
+				<view v-if="showLoading && commodityList.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/8D/Cmis215XHXWAHCoqAAELHadZ9Xg365.png"></image>
+				<text class="error-text">抱歉,没有相关商品!</text>
+			</view>
+		</view>
+		<!-- 透明模态层 -->
+		<modal-layer v-if='isModallayer'></modal-layer>
+	
+	</view>
+</template>
+
+<script>
+	import { mapState,mapMutations } from 'vuex'
+	import goSearch from '@/components/uni-search/go-search.vue'
+	import modalLayer from "@/components/modal-layer"
+	import uniStars from '@/components/uni-stars/uni-stars.vue'
+	import authorize from '@/common/config/authorize.js'
+	import { querySearchProduct , querySearchHistory,clearSearchHistory } from "@/api/product.js" 
+	
+	export default {
+		components: {
+			// goSearch,
+			modalLayer,
+			uniStars
+		},
+		data() {
+			return {
+				userID:'',
+				themeClass: 'block',
+				searchInputVal:'',							//搜索关键词
+				isShowClose:false,							//是否显示清空输入框图标
+				isSearchHistory:false,						//是都显示搜索历史
+				serachRecordList:[],						//历史搜索记录
+				isShowWrapper:false,
+				isModallayer:false,
+				windowHeight: '',
+				showEmpty: false,
+				scrollHeight: '',
+				commodityList: [],
+				showLoading: false,
+				loadingNow: true,
+				loadingText: '上拉加载更多',
+				pageSize: 10,
+				pageNum: 1,
+				hasNextPage: false,
+				totalPage: 1,
+				pullFlag: true,
+			}
+		},
+		onLoad() {
+			this.initGetSerachRecord()			
+		},
+		computed: {
+			...mapState(['hasLogin','userInfo'])
+		},
+		methods:{
+			initGetSerachRecord(){
+				this.$api.getStorage().then((resolve) =>{
+					this.userID = resolve.userID ? resolve.userID : '';
+				    querySearchHistory({userId:this.userID}).then(response =>{
+						if(response.code == 0){
+							this.serachRecordList = response.data
+						}
+				    })
+				})	
+			},
+			subMitSearch() {
+				if (this.searchInputVal == '') {
+					this.$util.msg('请输入商品关键词',2000);
+				}else{
+					this.commodityList =[]
+					this.getListFromServer(false)
+				}
+			},
+			scrolltolower() {
+				if(this.hasNextPage && this.pullFlag) {
+					this.getListFromServer(true);
+				}
+			},
+			getListFromServer(loadMore) {
+				this.showLoading = true;
+				this.loadingNow = true;
+				this.loadingText = '加载中';
+				this.showEmpty = false;				
+				if(loadMore) {
+					this.pageNum += 1;
+				}
+				let params = {userId:this.userID,searchWord:this.searchInputVal,pageNum:this.pageNum,pageSize:this.pageSize}
+				querySearchProduct(params).then(response =>{
+					this.isShowWrapper = true
+					const resData = response.data;
+					const resList = resData.results;
+					if(resList && resList.length > 0){
+						this.hasNextPage = resData.hasNextPage;
+						this.totalPage = resData.totalPage;
+						this.showEmpty = false;
+						if(loadMore) {
+							this.commodityList = [...this.commodityList,...resList];
+						} else {
+							this.commodityList = [...resList];
+						}
+						// 防上拉暴滑
+						this.pullFlag = false;
+						setTimeout(()=>{
+							this.pullFlag = true;
+						},500)
+						// 底部提示文案
+						if(this.hasNextPage) {
+							this.loadingText = '上拉加载更多';
+						} else {
+							this.showLoading = true;
+							this.loadingNow = false;
+						}
+					} else {
+						if(!loadMore) {
+							this.showEmpty = true;
+						}
+					}
+				}).catch(response =>{
+					this.$util.msg(response.msg,3000);
+				})
+			},
+			onShowClose () {//输入框失去焦点时触发
+				this.inputEmpty(this.searchInputVal)
+			},
+			onFocus () { //输入框获取焦点时触发
+				this.inputEmpty(this.searchInputVal)
+				this.initGetSerachRecord()
+			},
+			delInputText () { //清除输入框内容
+				this.searchInputVal = ''
+				this.isShowClose = false
+				this.isShowWrapper = false
+				this.inputEmpty(this.searchInputVal)
+				this.initGetSerachRecord()
+			},
+			keywordsClick (item) {//关键词搜索与历史搜索
+				this.searchInputVal = item;
+				this.isShowClose = true;
+				this.subMitSearch();
+			},
+			confirmDetele() {//清空历史记录
+				this.$util.modal('提示','确定删除历史记录?','确定','取消',true,() =>{
+					clearSearchHistory({userId:this.userID}).then(response =>{
+						this.$util.msg('删除成功',2000,true,'success')
+						this.serachRecordList=[];
+					}).catch(response =>{
+						this.$util.msg(response.msg,2000)
+					})
+				})
+			},
+			inputEmpty(val){
+				this.isShowWrapper = false
+				if(val != ''){
+					this.isShowClose = true
+				}else{					
+					this.isShowClose = false
+				}
+			},
+			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-accont?type=${searchLoginType}`
+				})
+			}
+		},
+		onShow() {
+			this.setScrollHeight();
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import "@/uni.scss";
+	page{
+		background-color: #F7F7F7 !important;
+	}
+	.search-main{
+		width: 702rpx;
+		height: 80rpx;
+		padding: 12rpx 24rpx;
+		border-bottom: 1px solid #F0F0F0;
+		position: fixed;
+		top: 0;
+		left: 0;
+		background: #FFFFFF;
+		z-index: 1001;
+		.search-input{
+			width: 448rpx;
+			height: 80rpx;
+			padding: 0 68rpx;
+			line-height: 80rpx;
+			border-radius: 40rpx;
+			position: relative;
+			background: #F0F0F0;
+			float: left;
+			.icon-iconfonticonfontsousuo1{
+				font-size: 36rpx;
+				color: #8A8A8A;
+				position: absolute;
+				left: 24rpx;
+				z-index: 10;
+			}
+			.icon-shanchu1{
+				font-size: 36rpx;
+				color: #8A8A8A;
+				position: absolute;
+				right: 24rpx;
+				top: 0;
+				padding: 0 10rpx;
+				z-index: 10;
+			}
+			input{
+				width: 448rpx;
+				height: 80rpx;
+				background-color: #F0F0F0;
+				font-size: 26rpx;
+			}
+		}
+		.search-btn{
+			width: 118rpx;
+			height: 80rpx;
+			line-height: 80rpx;
+			color: $color-system;
+			font-size: 30rpx;
+			text-align: center;
+			float: left;
+		}
+		.voice-icon{
+			width: 36rpx;
+			height: 36rpx;
+			padding: 16rpx 20rpx 16rpx 0;
+			position: absolute;
+			left: 16rpx;
+			top: 4rpx;
+			z-index: 10;
+		}
+		
+	}
+	.search-container{
+		padding-top: 106rpx;
+	}
+	.s-block{
+		background: #FFFFFF;
+		.header{
+			font-size: 32rpx;
+			padding:40rpx 24rpx 22rpx 24rpx;
+			line-height: 42rpx;
+			font-size: 30rpx;
+			font-weight: bold;
+			position: relative;
+			.icon-shanchu{
+				font-size: 36rpx;
+				color: #333333;
+				float: right;
+				padding: 0 10rpx;
+				z-index: 10;
+				font-weight: normal;
+			}
+		}
+		.list{
+			display: flex;
+			flex-wrap: wrap;
+			padding-bottom: 40rpx;
+			view{
+				color: #8A8A8A;
+				font-size: 24rpx;
+				box-sizing: border-box;
+				text-align: center;
+				height: 48rpx;
+				line-height: 48rpx;
+				border-radius: 24rpx;
+				margin:12rpx;
+				padding:.0 30rpx;
+				overflow: hidden;
+				white-space: nowrap;
+				text-overflow: ellipsis;
+				background-color: #F3F3F3;
+			}
+		}
+	}
+	.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;
+				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;
+				white-space: nowrap;
+				text-overflow: ellipsis;
+			}
+		}
+	}
+	.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;
+			}
+		}
+	}
+	.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 {
+			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: #999999;
+		}
+		.list-details-miniQuantity {
+			margin-top: 7rpx;
+		}
+	}
+	.list-details-price {
+		width: 100%;
+		display: flex;
+		flex-direction: row;
+		justify-content: space-between;
+		position: absolute;
+		bottom: 0;
+		right: 0;
+		.price-icon {
+			width: 22rpx;
+			height: 28rpx;
+			vertical-align: middle;
+			margin-right: 10rpx;
+		}
+		.price-icon + text {
+			font-size: 25rpx;
+			vertical-align: middle;
+		}
+		.list-login-now {
+			width: 375rpx;
+			color: #F8C499;
+			position: absolute;
+			bottom: 0;
+			.p-no{
+				float: left;
+				font-size: $font-size-24;
+				color: $color-system;
+				margin-right: 10rpx;
+			}
+		}
+		.login-now {
+			padding: 10rpx 10rpx 10rpx 0;
+		}
+		.list-price {
+			color: #FF2A2A;
+			.price-larger {
+				font-size: 32rpx;
+				.txt{
+					font-size: $font-size-24;
+					display: inline-block;
+					line-height: 30rpx;
+					text-align: left;
+				}
+			}
+		}
+	}
+</style>

+ 4 - 4
market/pages/user/user.vue

@@ -32,7 +32,7 @@
 									{{paymentCount == 99? '99+' : paymentCount}}
 							</text>
 						</view>
-						<text class="order-t">待付款</text>
+						<text class="order-t">待确认</text>
 					</view>
 					<view class="order-item" @click="navigator('/market/pages/order/order-list?state=2')"  hover-class="common-hover" :hover-stay-time="50">
 						<view class="order-icon">
@@ -43,7 +43,7 @@
 								   {{waitShipmentsCount == 99? '99+' : waitShipmentsCount}}
 							</text>
 						</view>
-						<text class="order-t">待发货</text>
+						<text class="order-t">待付款</text>
 					</view>
 					<view class="order-item" @click="navigator('/market/pages/order/order-list?state=3')" hover-class="common-hover"  :hover-stay-time="50">
 						<view class="order-icon">
@@ -54,7 +54,7 @@
 									{{shipmentsCount == 99? '99+' : shipmentsCount}}
 							</text>
 						</view>
-						<text class="order-t">待确认</text>
+						<text class="order-t">待发货</text>
 					</view>
 					<view class="order-item" @click="navigator('/market/pages/order/order-list?state=5')" hover-class="common-hover"  :hover-stay-time="50">
 						<view class="order-icon">
@@ -184,7 +184,7 @@
 			onShow(){
 				if(!this.hasLogin){
 					this.isShowNoLogin = true;
-					this.$api.redirectTo('/pages/login/login-accont?type=4')
+					this.$api.navigateTo('/market/pages/login/login')
 					this.$store.commit('updateAllNum',0)
 				}else{
 					this.$api.getStorage().then((resolve) =>{

+ 57 - 2
pages.json

@@ -249,7 +249,8 @@
 				{
 					"path": "pages/home/home",
 					"style": {
-						"navigationBarTitleText": "首页"
+						"navigationBarTitleText": "首页",
+						"navigationStyle":"custom"
 					}
 				},
 				{
@@ -264,6 +265,30 @@
 						"navigationBarTitleText": "账户中心"
 					}
 				},
+				{
+					"path": "pages/login/password",
+					"style": {
+						"navigationBarTitleText": "修改密码"
+					}
+				},
+				{
+					"path": "pages/cart/cart",
+					"style": {
+						"navigationBarTitleText": "购物车"
+					}
+				},
+				{
+					"path": "pages/cart/buyagain",
+					"style": {
+						"navigationBarTitleText": "再次购买"
+					}
+				},
+				{
+					"path": "pages/order/order-immediately",
+					"style": {
+						"navigationBarTitleText": "立即下单"
+					}
+				},
 				{
 					"path": "pages/order/create-order",
 					"style": {
@@ -306,7 +331,7 @@
 				{
 					"path": "pages/club/club-list",
 					"style": {
-						"navigationBarTitleText": "帮下单机构列表"
+						"navigationBarTitleText": "我的机构"
 					}
 				},
 				{
@@ -326,6 +351,36 @@
 					"style": {
 						"navigationBarTitleText": "修改申请信息"
 					}
+				},
+				{
+					"path": "pages/order/order-history",
+					"style": {
+						"navigationBarTitleText": "订单列表"
+					}
+				},
+				{
+					"path": "pages/search/search",
+					"style": {
+						"navigationBarTitleText": "商品搜索"
+					}
+				},
+				{
+					"path": "pages/search/search-order",
+					"style": {
+						"navigationBarTitleText": "订单搜索"
+					}
+				},
+				{
+					"path": "pages/address/address",
+					"style": {
+						"navigationBarTitleText": "选择地址"
+					}
+				},
+				{
+					"path": "pages/address/addressManage",
+					"style": {
+						"navigationBarTitleText": "添加地址"
+					}
 				}
 			]
 		}

+ 3 - 1
pages/login/apply.vue

@@ -969,6 +969,9 @@ import { mapMutations } from 'vuex';
 						height: auto;
 						background: #FFFFFF;
 						margin-top: 30rpx;
+						.label{
+							line-height: 76rpx;
+						}
 						.row-input{
 							width: 100%;
 							height: 88rpx;
@@ -988,7 +991,6 @@ import { mapMutations } from 'vuex';
 						margin-top: 0;
 					}
 					.content-class {
-						width: 520rpx;
 						margin: 20rpx auto;
 						display: flex;
 						flex-flow: row wrap;

+ 3 - 1
pages/login/information.vue

@@ -899,6 +899,9 @@
 						height: auto;
 						background: #FFFFFF;
 						margin-top: 30rpx;
+						.label{
+							line-height: 76rpx;
+						}
 						.row-input{
 							width: 100%;
 							height: 88rpx;
@@ -918,7 +921,6 @@
 						margin-top: 0;
 					}
 					.content-class {
-						width: 520rpx;
 						margin: 20rpx auto;
 						display: flex;
 						flex-flow: row wrap;

+ 3 - 1
pages/login/register.vue

@@ -940,6 +940,9 @@
 						height: auto;
 						background: #FFFFFF;
 						margin-top: 30rpx;
+						.label{
+							line-height: 76rpx;
+						}
 						.row-input{
 							width: 100%;
 							height: 88rpx;
@@ -959,7 +962,6 @@
 						margin-top: 0;
 					}
 					.content-class {
-						width: 520rpx;
 						margin: 20rpx auto;
 						display: flex;
 						flex-flow: row wrap;