소스 검색

注册流程优化V6.2.4

zhengjinyi 5 년 전
부모
커밋
1f68bd655a

+ 2 - 2
api/seller.js

@@ -142,7 +142,7 @@ export function getFindAllClubList(params) {
  */
 export function getSellerOrderList(params) {
 	return new Promise(function(resolve,reject) {
-		request.get('/seller/order/list',params,res => {
+		request.lodingGet('/seller/order/list',params,res => {
 			if(res.code == 0){
 				resolve(res)
 			}else{
@@ -159,7 +159,7 @@ export function getSellerOrderList(params) {
  */
 export function getSellerClubOrderList(params) {
 	return new Promise(function(resolve,reject) {
-		request.get('/seller/clubOrder',params,res => {
+		request.lodingGet('/seller/clubOrder',params,res => {
 			if(res.code == 0){
 				resolve(res)
 			}else{

+ 2 - 2
common/config/config.js

@@ -2,9 +2,9 @@ let URL_CONFIG = ""
 if(process.env.NODE_ENV === 'development'){
     // 开发环境
 	// URL_CONFIG = 'http://192.168.1.24:8008'	 //俊俊联调地址
-	URL_CONFIG = 'http://192.168.1.22:8008'	 //裴裴联调地址
+	// URL_CONFIG = 'http://192.168.1.22:8008'	 //裴裴联调地址
 	// URL_CONFIG = 'http://192.168.1.26:8008'	 //超超联调地址
-    // URL_CONFIG = 'https://spi-b.caimei365.com'	 //采美测试地址
+    URL_CONFIG = 'https://spi-b.caimei365.com'	 //采美测试地址
 	// URL_CONFIG = 'https://spi.caimei365.com'
 }else{
     // 生产环境

+ 102 - 0
components/badge/badge.vue

@@ -0,0 +1,102 @@
+<template>
+	<view class="tui-badge-class" :class="[dot?'tui-badge-dot':'tui-badge','tui-'+type, size?'tui-badge-small':'']" v-if="visible">
+		<slot></slot>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "tuiBadge",
+		props: {
+			//primary,warning,green,danger,white,black,gray
+			type: {
+				type: String,
+				default: 'primary'
+			},
+			// '', small
+			size: {
+				type: String,
+				default: ''
+			},
+			//是否是圆点
+			dot: {
+				type: Boolean,
+				default: false
+			},
+			//是否可见
+			visible: {
+				type: Boolean,
+				default: true
+			}
+		}
+	}
+</script>
+
+<style>
+	/* color start*/
+
+	.tui-primary {
+		background: #5677fc;
+		color: #fff;
+	}
+
+	.tui-danger {
+		background: #ed3f14;
+		color: #fff;
+	}
+
+	.tui-red {
+		background: #ff201f;
+		color: #fff;
+	}
+
+	.tui-warning {
+		background: #ff7900;
+		color: #fff;
+	}
+
+	.tui-green {
+		background: #19be6b;
+		color: #fff;
+	}
+
+	.tui-white {
+		background: #fff;
+		color: #333;
+	}
+
+	.tui-black {
+		background: #000;
+		color: #fff;
+	}
+
+	.tui-gray {
+		background: #ededed !important;
+		color: #999 !important;
+	}
+
+	/* color end*/
+
+	/* badge start*/
+
+	.tui-badge-dot {
+		height: 8px;
+		width: 8px;
+		border-radius: 4px;
+		line-height: 1;
+	}
+
+	.tui-badge {
+		font-size: 12px;
+		line-height: 1;
+		padding: 3px 6px;
+		border-radius: 50px;
+	}
+
+	.tui-badge-small {
+		transform: scale(0.8);
+		transform-origin: center center;
+	}
+
+	/* badge end*/
+</style>

+ 148 - 0
components/cm-custom/cm-drag.vue

@@ -0,0 +1,148 @@
+<template>
+	<view>
+		<view
+			id="_drag_button"
+			class="cart-icon"
+			:style="'left: ' + left + 'px; top:' + top + 'px;'"
+			@touchstart="touchstart"
+			@touchmove.stop.prevent="touchmove"
+			@touchend="touchend"
+			@click.stop.prevent="click"
+			:class="{transition: isDock && !isMove }"
+		>
+			<text v-if="cartNum > 0" class="uni-badge uni-badge-error uni-small uni-badge--small icon-num">
+				{{cartNum >= 100 ? '99+' : cartNum}}
+			</text>
+			<image src='../../static/icon-cart-active@3x.png' mode="widthFix"></image>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'drag-button',
+		props: {
+			cartNum:{
+				type: Number,
+				default: 0
+			},
+			isDock:{
+				type: Boolean,
+				default: false
+			},
+			existTabBar:{
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+				top:300,
+				left:150,
+				width: 0,
+				height: 0,
+				offsetWidth: 0,
+				offsetHeight: 0,
+				windowWidth: 0,
+				windowHeight: 0,
+				isMove: true,
+				edge: 10,
+			}
+		},
+		mounted() {
+			const sys = uni.getSystemInfoSync();
+			this.windowWidth = sys.windowWidth;
+			this.windowHeight = sys.windowHeight;
+			// #ifdef APP-PLUS
+				this.existTabBar && (this.windowHeight -= 50);
+			// #endif
+			if (sys.windowTop) {
+				this.windowHeight += sys.windowTop;
+			}
+			console.log(sys)
+			const query = uni.createSelectorQuery().in(this);
+			query.select('#_drag_button').boundingClientRect(data => {
+				this.width = data.width;
+				this.height = data.height;
+				this.offsetWidth = data.width / 2;
+				this.offsetHeight = data.height / 2;
+				this.left = this.windowWidth - this.width - this.edge;
+				this.top = this.windowHeight - this.height - this.edge;
+			}).exec();
+		},
+		methods: {
+			click() {
+				this.$emit('btnClick');
+			},
+			touchstart(e) {
+				this.$emit('btnTouchstart');
+			},
+			touchmove(e) {
+				// 单指触摸
+				if (e.touches.length !== 1) {
+					return false;
+				}
+				this.isMove = true;
+				this.left = e.touches[0].clientX - this.offsetWidth;
+				let clientY = e.touches[0].clientY - this.offsetHeight;
+				// #ifdef H5
+					clientY += this.height;
+				// #endif
+				let edgeBottom = this.windowHeight - this.height - this.edge;
+				// 上下触及边界
+				if (clientY < this.edge) {
+					this.top = this.edge;
+				} else if (clientY > edgeBottom) {
+					this.top = edgeBottom;
+				} else {
+					this.top = clientY
+				}
+			},
+			touchend(e) {
+				if (this.isDock) {
+					let edgeRigth = this.windowWidth - this.width - this.edge;
+					
+					if (this.left < this.windowWidth / 2 - this.offsetWidth) {
+						this.left = this.edge;
+					} else {
+						this.left = edgeRigth;
+					}
+					
+				}
+				
+				this.isMove = false;
+				this.$emit('btnTouchend');
+			},
+		}}
+</script>
+
+<style lang="scss">
+	.cart-icon {
+		width: 92rpx;
+		height: 92rpx;
+		border-radius: 50%;
+		background: rgba(255, 147, 0, 0.5);
+		position: fixed;
+		right: 24rpx;
+		bottom: 28%;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		cursor: pointer;
+		z-index: 99999;
+		image {
+			width: 58rpx;
+			height: 58rpx;
+		}
+		text {
+			font-size: 28rpx;
+			position: absolute;
+			top: -10rpx;
+			right: 0;
+		}
+		&.transition {
+			transition: left .3s ease,top .3s ease;
+		}
+	}
+	
+</style>

+ 11 - 1
components/cm-module/cm-seller/category.vue

@@ -1,5 +1,6 @@
 <template>
-	<view class="category-container clearfix">
+	<view class="category-container clearfix" :style="{paddingTop:CustomBar+'px'}">
+		<cu-custom :navbar-data='nvabarData'></cu-custom>
 		<!-- 头部轮播 -->
 		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5"></tui-skeleton>
 		<view class="category-list tui-skeleton">
@@ -46,6 +47,15 @@
 		},
 		data() {
 			return {
+				nvabarData: {		//顶部自定义导航
+					showCapsule: 0, // 是否显示左上角图标  1表示显示  0表示不显示,
+					showSearch: 0,
+					title: '商品分类',  // 导航栏 中间的标题
+					haveBack:false,
+					textLeft:this.$store.state.isIphone
+				},
+				isIphoneX:this.$store.state.isIphoneX,
+				CustomBar:this.CustomBar,// 顶部导航栏高度
 				skeletonShow: true,
 				headerShow:true,
 				hotSearchText: '你想要的这里都有',

+ 206 - 160
components/cm-module/cm-seller/home.vue

@@ -1,19 +1,18 @@
 <template>
-	<view class="container home clearfix" :style="{paddingTop:100+'rpx'}">	
+	<view class="container home clearfix" :style="{paddingTop:CustomBar+'px'}">	
+		<cm-custom :navbar-data='nvabarData'></cm-custom>
 		<!-- 头部轮播 -->
 		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5"></tui-skeleton>
-		<view :class="'container-home-'+ inputActive" class="tui-skeleton">
-			<view class="search-input-fixed" :style="{top:CustomBar+'px'} ">
-				<bt-search :clickPath="clickPath" :toestText='hotSearchText'></bt-search>
-			</view>
-			<view class="banner-section">
-				<swiper class="banner tui-banner tui-skeleton-rect" circular @change="swiperChange" :autoplay="true" :interval="5000" :duration="500" :circular="true">
-					<swiper-item v-for="(item, index) in bannerImageList" :key="index" class="banner-item"> 
-						<image :src="item" />
+		<view class="container-home tui-skeleton">
+			<view class="swiper-banner-box" >
+				<swiper class="tui-banner-swiper tui-banner tui-skeleton-fillet" :autoplay="true" :interval="5000" :duration="500"  @change="swiperChange" :circular="true">
+					<swiper-item v-for="(item,index) in bannerImageList" :key="index">
+						<image :src="item" class="tui-slide-image" mode="scaleToFill"/>
 					</swiper-item>
 				</swiper>
 				<view class="swiper__dots-box" v-if="bannerImageList.length > 1">
-					<view v-for="(item,idx) in bannerImageList" :key="idx" 
+					<view v-for="(item,idx) in bannerImageList" 
+						  :key="idx" 
 						  :class="[idx===current?'swiper__dots-long':'none']" 
 						  :data-index="current" class="swiper__dots-item">
 					</view>	  
@@ -24,11 +23,11 @@
 				<view class="tabbar clearfix">
 					<view class="cate-item" v-for="(nav,idx) in productsClassifyList" :key="idx" @click.stop="navToListPage(nav)">
 						<image class="tui-skeleton-circular" :src="nav.classifyImage"></image>
-						<text class="tui-skeleton-rect">{{nav.classifyName}}</text>
+						<text class="tui-skeleton-fillet">{{nav.classifyName}}</text>
 					</view>
 				</view>
 				<!-- 优选分类 -->
-				<view class="tabbar clearfix">
+				<view class="tabbar bot clearfix">
 					<view class="cate-item-info" @click.stop="this.$api.navToListPage({type:'1',value:firstModulesName})">
 						<image class="tui-skeleton-circular" :src="firstModulesImage"></image>
 						<text class="tui-skeleton-fillet">{{firstModulesName}}</text>
@@ -53,70 +52,68 @@
 			</view>
 			<!-- 热销商品 -->
 			<view class="hotgoods-section">
-				<view class="s-header tui-skeleton-fillet" @click="this.$api.navToListPage({type:'3',value:thirdModulesName})">
-					<text class="tip">{{thirdModulesName}}</text>
-					<text class="tit">更多</text>
+				<view class="s-header" @click="this.$api.navToListPage({type:'3',value:thirdModulesName})">
+					<text class="tip tui-skeleton-fillet">{{thirdModulesName}}</text>
+					<text class="tit tui-skeleton-fillet">更多</text>
 					<text class="iconfont icon-xiayibu"></text>
 				</view>
 				<view class="hotgoods-swiper">
-					<scroll-view class="floor-list" scroll-x v-if="organizeProducts.length>0">
-						<view class="scoll-wrapper">
-							<view 
-								v-for="(item, index) in organizeProducts" :key="index"
-								class="floor-item"
-								@click.stop="navToDetailPage(item.productID)"
-							>
-								<image class="tui-skeleton-fillet" :src="item.mainImage" mode="aspectFill"></image>
+					<view class="scoll-wrapper clearfix">
+						<view class="floor-item" v-for="(item, index) in organizeProducts" :key="index" @click.stop="navToDetailPage(item.productID)">
+							<image class="tui-skeleton-fillet" :src="item.mainImage" mode="aspectFill"></image>
+							<view class="floor-item-content">
 								<view class="title tui-skeleton-rect">
 									<text class="mclap">{{item.name}}</text>
 								</view>
 								<view class="" v-if="hasLogin">
 									<view class="price tui-skeleton-rect">
 										<text class="p sm">¥</text>
-										<text class="p big">{{item.retailPrice.toFixed(2)}}</text>
+										<text class="p big">{{item.retailPrice!=null ? item.retailPrice.toFixed(2):''}}</text>
 									</view>
 								</view>
 								<view v-else class="no-price">
 									<text class="p-no">价格:</text>
-									<uni-stars :stars="parseInt(item.price1Grade)"></uni-stars>
+									<view class="p-stars">
+										<uni-stars :stars="parseInt(item.price1Grade)"></uni-stars>
+									</view>
 								</view>	
 							</view>
 						</view>
-					</scroll-view>
+					</view>
 				</view>	
 			</view>
 			<!-- 底部 -->
 			<view class="footer-section ">
-				<view class="s-header tui-skeleton-fillet">
+				<view class="s-header member  tui-skeleton-fillet">
 					<text class="tip">医美机构正品联盟</text>
 				</view>
 				<view class="f-content tui-skeleton-fillet" @click="navto('/pages/service/member')">
-					<image class="tui-banner" src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AEwQlAAjGFdpI2LM357.png" mode=""></image>
+					<image class="tui-banner" src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AEwQlAAjGFdpI2LM357.png" mode="scaleToFill"></image>
 				</view>
 				<view class="f-tab-section">
 					<!-- 优选分类 -->
 					<view class="tabbar clearfix">
 						<view class="cate-item" @click="showTost">
-							<image class="tui-skeleton-fillet" :src="navServerList[0].icon"></image>
+							<image class="tui-skeleton-circular" :src="navServerList[0].icon"></image>
 							<text class="tui-skeleton-fillet">{{navServerList[0].text}}</text>
 						</view>
 						<view class="cate-item" @click="navto(navServerList[1].path)">
-							<image class="tui-skeleton-fillet" :src="navServerList[1].icon"></image>
+							<image class="tui-skeleton-circular" :src="navServerList[1].icon"></image>
 							<text class="tui-skeleton-fillet">{{navServerList[1].text}}</text>
 						</view>
 						<view class="cate-item" @click="navto(navServerList[2].path)">
-							<image class="tui-skeleton-fillet" :src="navServerList[2].icon"></image>
+							<image class="tui-skeleton-circular" :src="navServerList[2].icon"></image>
 							<text class="tui-skeleton-fillet">{{navServerList[2].text}}</text>
 						</view>
 						<view class="cate-item" @click="telPhoneTo">
-							<image class="tui-skeleton-fillet" :src="navServerList[3].icon"></image>
+							<image class="tui-skeleton-circular" :src="navServerList[3].icon"></image>
 							<text class="tui-skeleton-fillet">{{navServerList[3].text}}</text>
 						</view>
 					</view>
 				</view>
 				<view class="f-text tui-skeleton-fillet">
 					<view class="">
-						<image class="logo" src="../../static/logo-c@2x.png" mode=""></image>
+						<image class="logo" src="../../../static/logo-c@2x.png" mode=""></image>
 						<text class="">采美365网</text>
 					</view>
 				</view>
@@ -131,37 +128,43 @@
 	import tuiSkeleton from "@/components/tui-skeleton/tui-skeleton"
 	import authorize from '@/common/config/authorize.js'
 	import modalLayer from "@/components/modal-layer"
-	import btSearch from '@/components/uni-search/bt-search.vue'
+	import cmCustom from '@/components/cm-module/home/cm-custom.vue'
 	import uniStars from '@/components/uni-stars/uni-stars.vue'
-	import { queryHomeInfo } from "@/api/use.js"
+	import { userInfoLogin, queryHomeInfo } from "@/api/use.js"
 	import { queryPreferred } from "@/api/product.js"
-	import { mapState,mapMutations } from 'vuex'
+	import { mapState,mapMutations} from 'vuex';
 	export default {
 		components:{
 			tuiSkeleton,
 			modalLayer,
-			btSearch,
+			cmCustom,
 			uniStars,
 		},
 		data() {
 			return {
-				nvabarData: {		//顶部自定义导航
-					showCapsule: 0, // 是否显示左上角图标  1表示显示  0表示不显示,
+				webviewStyles: {
+					progress: {
+						color: '#FF3333'
+					}
+				},
+				nvabarData: {//顶部自定义导航
+					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
 					showSearch: 0,
-					title: '采美采购商城',  // 导航栏 中间的标题
+					title: '采美采购商城', // 导航栏 中间的标题
+					haveBack:false,
+					textLeft:this.$store.state.isIphone,
+					textColor:'#FFFFFF'
 				},
-				isIphoneX:this.$store.state.isIphoneX,
 				CustomBar:this.CustomBar,// 顶部导航栏高度
 				userID:'',
-				modalLayer:false,
-				inputActive:'float',
-				hotSearchText:'你想要的这里都有',
-				clickPath:'/pages/search/search',
+				clubStatus:'',
 				current:0,
 				mode:'round',
+				modallayer:false,
 				isLogin:false,
 				bannerImageList:[],
 				skeletonShow: true,
+				userIdentity:'',
 				organizeProducts:[],//常用商品
 				productsClassifyList:[
 					{classifyImage:'https://admin-b.caimei365.com/userfiles/1/images/photo/2020/04/%E7%BB%84%201238.png',classifyName:'采美'},
@@ -176,25 +179,25 @@
 				secondModulesImage:'',//优惠模块icon2
 				thirdModulesName:'', //优惠模块3
 				navInforList:[
-					{text:'会员中心',icon:'https://img.caimei365.com/group1/M00/03/9E/Cmis216iRzOAEGPnAAA4hM3shV4061.png'},
-					{text:'在线客服',icon:'https://img.caimei365.com/group1/M00/03/9E/Cmis216iRzOAFXZBAABKeY23aWA452.png'}
+					{text:'会员中心',icon:'https://admin-b.caimei365.com/userfiles/1/images/photo/2020/05/%E4%BC%9A%E5%91%98%E4%B8%AD%E5%BF%83%403x.png'},
+					{text:'在线客服',icon:'https://admin-b.caimei365.com/userfiles/1/images/photo/2020/05/%E5%9C%A8%E7%BA%BF%E5%AE%A2%E6%9C%8D%403x.png'}
 				],
 				navServerList:[
-					{text:'会员优惠',icon:'../../static/temp/server1@2x.png',path:'/pages/service/member'},
-					{text:'售后无忧',icon:'../../static/temp/server2@2x.png',path:'/pages/service/aftersale'},
-					{text:'购物须知',icon:'../../static/temp/server3@2x.png',path:'/pages/service/shoppingnotice'},
-					{text:'联系我们',icon:'../../static/temp/server4@2x.png',path:''},
+					{text:'会员优惠',icon:'../../../static/temp/server1@2x.png',path:'/pages/service/member'},
+					{text:'售后无忧',icon:'../../../static/temp/server2@2x.png',path:'/pages/service/aftersale'},
+					{text:'购物须知',icon:'../../../static/temp/server3@2x.png',path:'/pages/service/shoppingnotice'},
+					{text:'联系我们',icon:'../../../static/temp/server4@2x.png',path:''},
 				]
 			}
 		},
 		created() {
-			this.getCheekeyCode()
+			this.getSellerHomeInfo()
 		},
 		computed: {
-			...mapState(['hasLogin']),
+			...mapState(['hasLogin'])
 		},
 		methods: {
-			getCheekeyCode(){
+			getSellerHomeInfo(){
 				this.getHomeInformation()
 				this.getOrganizeProducts()
 			},		
@@ -202,26 +205,24 @@
 				queryHomeInfo({}).then(res =>{
 					let data = res.data;
 					this.bannerImageList = data.bannerImageList
-					this.productsClassifyList = data.productsClassifyList
 					this.mallPageModules = data.mallPageModules
 					this.firstModulesName= data.firstModulesName
 					this.secondModulesName= data.secondModulesName
 					this.firstModulesImage= data.firstModulesImage
 					this.secondModulesImage= data.secondModulesImage
 					this.thirdModulesName= data.thirdModulesName
+					this.productsClassifyList = data.productsClassifyList
 					this.skeletonShow = false;
+					this.$store.commit('updateAllNum',data.shoppingCartCount)
 				}).catch(error =>{
 					this.$util.msg(error.msg,2000)
 				})
 			},
 			getOrganizeProducts(){//获取模块三商品
-				this.$api.getStorage().then((resolve) =>{
-					this.userID = resolve.userID
-					queryPreferred({userId:this.userID,preferredFlag:100,pageNum:1,pageSize:5}).then(res =>{
-						this.organizeProducts = res.data.results
-					}).catch(error =>{
-						this.$util.msg(error.msg,2000)
-					})
+				queryPreferred({userId:this.userID,preferredFlag:100,pageNum:1,pageSize:6}).then(res =>{
+					this.organizeProducts = res.data.results
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000)
 				})
 			},
 			//轮播图切换修改背景色
@@ -248,6 +249,7 @@
 				})
 			},
 			navToDetailPage(id) {//跳转商品详情页
+				this.modallayer = true;
 				this.$api.navigateTo(`/pages/goods/product?id=${id}`)
 			},
 			handleContact(e){
@@ -255,7 +257,7 @@
 				console.log(e.detail.query)
 			},
 			showTost(){
-				this.$util.msg("正在开发中,敬请期待~",2000);
+				this.$util.msg("正在开发中,敬请期待~",2000)
 				// uni.navigateToMiniProgram({
 				// 	appId: 'wx5a5cda32926f55ac',
 				// 	path: '/pages/tabBar/home/home',
@@ -272,9 +274,12 @@
 			navto(url){
 				this.$api.navigateTo(url)
 			},
+			swiperNavtopage(link){
+				this.$api.navigateTo(`/h5/pages/activity/activity?productID=4204&path=${link}`)
+			},
 			telPhoneTo(){
 				let self = this;
-				this.$api.get('/home/afterSale',{}, 
+				this.$api.get('/home/afterSale',{organizeID:this.userOrganizeID}, 
 					response => {
 						console.log(response.data.contactNumber)
 						uni.makePhoneCall({
@@ -293,7 +298,18 @@
 		},
 		onPullDownRefresh() {//下拉刷新
 			this.getHomeInformation()
+			this.getOrganizeProducts()
 			uni.stopPullDownRefresh()
+		},
+		onShareAppMessage(res){//分享转发
+			if (res.from === 'button') {
+		      // 来自页面内转发按钮
+		    }
+			return {
+			  title: '采美采购商城-生美/医美采购服务平台',
+			  path: 'pages/tabBar/home/home',
+			  imageUrl:'https://img.caimei365.com/group1/M00/03/8C/Cmis215XHXSAWWkhAAXDP4-6m_c397.png'
+			}
 		}
 	}
 </script>
@@ -302,42 +318,38 @@
 	page,.home{
 		width: 100%;
 		height: auto;
-	}			
-	.container-home-float{
-		padding-top: 0;
-	}
-	.container-home-fixed{
-		padding-top: 100rpx;
-	}
-	.search-input-float{
-		width: 100%;
-		height:auto;
-	}
-	.search-input-fixed{
-		width: 100%;
-		height:auto;
-		position: fixed;
-		top: 0;
-		left: 0;
-		z-index: 1000;
+	}	
+	.container-home{
 		background: #FFFFFF;
 	}
-	.banner-section{
+	.swiper-banner-box{
 		width: 100%;
-		height: 366rpx;
+		height: 340rpx;
+		padding-top:110rpx;
+		background:#FFFFFF url(https://admin-b.caimei365.com/userfiles/1/images/photo/2020/05/%E8%83%8C%E6%99%AF2%402x.png)no-repeat;
 		position: relative;
+		background-size: cover;
 	}	
-	.banner{
-		width: 100%;
-		height: 366rpx;
-		image {
+	.tui-banner-swiper {
+		width: 700rpx;
+		margin: 0 auto;
+		height: 340rpx;
+		border-radius: 24rpx;
+		overflow: hidden;
+		transform: translateY(0);
+		box-shadow:0px 3px 6px rgba(225,86,22,0.08);
+		.banner-item{
+			border-radius: 24rpx;
+		}
+		.tui-slide-image {
 			width: 100%;
-			height: 100%;
+			height: 340rpx;
+			display: block;
 		}
 	}
 	.swiper__dots-box{
 		position: absolute;
-		bottom: 10px;
+		bottom: 24rpx;
 		left: 0;
 		right: 0;
 		/* #ifndef APP-NVUE */
@@ -370,6 +382,12 @@
 		background: #fff;
 		.tabbar{
 			margin-bottom: 26rpx;
+			&.bot{
+				padding: 16rpx 24rpx;
+				border-radius: 20rpx;
+				box-shadow:0px 3px 6px rgba(225,86,22,0.07);
+				border: 1px solid #F9F9F9;
+			}
 		}
 		.cate-item {
 			width: 118rpx;
@@ -391,12 +409,12 @@
 				width: 90rpx;
 				height: 90rpx;
 				margin-bottom: 8rpx;
-				border-radius: 50%;
+				border-radius: 32rpx;
 			}	
 		}
 		.cate-item-info {
 			width: 118rpx;
-			margin-right:76.5rpx;
+			margin-right:59.5rpx;
 			display: flex;
 			float: left;
 			flex-direction: column;
@@ -411,7 +429,7 @@
 				width: 90rpx;
 				height: 90rpx;
 				margin-bottom: 16rpx;
-				border-radius:50%;
+				border-radius: 32rpx;
 			}	
 			button.contact-btn{
 				width: 118rpx;
@@ -433,24 +451,25 @@
 					width: 90rpx;
 					height: 90rpx;
 					margin-bottom: 0;
-					border-radius:50%;
+					border-radius: 32rpx;
 				}
 			}
 		}
 	}
 	.hotgoods-section{
-		padding: 4rpx 0 24rpx 24rpx;
-		background: #fff;
+		background: #FFFFFF;
 		.s-header{
 			display:flex;
 			align-items:center;
 			height: 50rpx;
 			line-height: 50rpx;
+			border-radius: 20rpx 20rpx 0 0;
 			.tip{
 				flex: 4;
 				font-size: 30rpx;
 				color: $text-color;
 				font-weight: bolder;
+				padding-left: 24rpx;
 			}
 			.tit{
 				flex: 4.4;
@@ -470,85 +489,112 @@
 		width: 100%;
 		height: auto;				
 		overflow: hidden;
-		scroll-view{
-			padding: 26rpx 0;
-			width: 100%;
-		}
+		padding-top: 24rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
+		margin-bottom: 20rpx;
+		// box-shadow:0px 3px 6px rgba(225,86,22,0.07);
 		.scoll-wrapper{
-			display:flex;
-			align-items: flex-start;
-		}
-		.floor-item{
-			width: 210rpx;
-			padding-right: 24rpx;
-			font-size: $font-size-24;
-			color: $text-color;
-			line-height: 36rpx;
-			border-radius: 10rpx;			
-			image{
-				width: 210rpx;
-				height: 217rpx;
-				border-radius: 10rpx;
-			}
-			.title-none{
-				font-size: $font-size-26;
-				color: #FF2A2A;
-				line-height: 60rpx;
-			}
-			.title{
-				width: 210rpx;
-				height: 72rpx;
-				display: flex;
-				flex-direction: column;
-				.mclap{
-					width: 100%;
-					line-height: 36rpx;
-					text-overflow:ellipsis;
-					display: -webkit-box;
-					word-break: break-all;
-					-webkit-box-orient: vertical;
-					-webkit-line-clamp: 2;
-					overflow: hidden;
-					font-size: 26rpx;
-				}
-			}
-			.no-price{
-				height: 36rpx;
+			width: 702rpx;
+			height: auto;
+			padding:24rpx 24rpx 0 24rpx;
+			background: #F7F7F7;
+			border-radius: 20rpx;
+			.floor-item{
+				width: 341rpx;
+				margin-right: 20rpx;
+				font-size: $font-size-24;
+				color: $text-color;
+				background: #FFFFFF;
 				line-height: 36rpx;
-				display: flex;
-				margin-top: 8rpx;
-				.p-no{
-					font-size: $font-size-24;
-					color: $color-system;
-					margin-right: 5rpx;
+				border-radius: 10rpx;
+				margin-bottom: 20rpx;
+				float: left;
+				&:nth-child(2n){
+					margin-right: 0;
 				}
 				image{
-					width:30rpx;
-					height: 36rpx;
+					width: 341rpx;
+					height: 341rpx;
+					border-radius: 20rpx 20rpx 0 0;
+					display: block;
+					margin-bottom: 20rpx;
 				}
-			}
-			.price{
-				color:#FF2A2A;
-				line-height: 20rpx;
-				margin-top: 18rpx;
-				.sm{
-					font-size: $font-size-24;
+				.floor-item-content{
+					width: 311rpx;
+					padding: 0 15rpx;
+				}
+				.title-none{
+					font-size: $font-size-26;
+					color: #FF2A2A;
+					line-height: 80rpx;
+					.btn{
+						display: inline-block;
+						float: right;
+						width: 112rpx;
+						height: 44rpx;
+						background: $btn-confirm;
+						line-height: 44rpx;
+						font-size: $font-size-24;
+						color: #FFFFFF;
+						text-align: center;
+						border-radius: 22rpx;
+						margin-top: 17rpx;
+					}
+				}
+				.title{
+					width: 100%;
+					height: 72rpx;
+					display: flex;
+					flex-direction: column;
+					.mclap{
+						width: 100%;
+						line-height: 36rpx;
+						text-overflow:ellipsis;
+						display: -webkit-box;
+						word-break: break-all;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 2;
+						overflow: hidden;
+						font-size: 26rpx;
+					}
+				}
+				.no-price{
+					height: 76rpx;
+					line-height: 76rpx;
+					display: flex;
+					.p-no{
+						font-size: $font-size-24;
+						color: $color-system;
+						margin-right: 5rpx;
+					}
+					.p-stars{
+						margin-top: 3rpx;
+					}
 				}
-				.big{
-					font-size: $font-size-28;
+				.price{
+					color:#FF2A2A;
+					line-height: 80rpx;
+					.sm{
+						font-size: $font-size-24;
+					}
+					.big{
+						font-size: $font-size-28;
+					}
 				}
 			}
 		}
 	}
 	.footer-section{
 		width: 702rpx;
-		padding: 0  24rpx 30rpx 24rpx;
+		padding: 0  24rpx 0 24rpx;
+		background: #FFFFFF;
+		border-radius: 20rpx;
 		.s-header{
 			display:flex;
 			align-items:center;
-			height: 40rpx;
-			line-height: 40rpx;
-			margin-bottom: 38rpx;
+			height: 80rpx;
+			line-height: 80rpx;
 			.tip{
 				flex: 1;
 				font-size: 30rpx;

+ 246 - 149
components/cm-module/cm-seller/user.vue

@@ -1,91 +1,94 @@
 <template>
 	<view class="container user clearfix">
-		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5"></tui-skeleton>
-		<view class="user-section tui-skeleton">
-			<view class="u-header tui-skeleton-fillet">
-				<image src="https://img.caimei365.com/group1/M00/03/94/Cmis216Sk_SAPDwvAAcTspdl8h0610.png" mode=""></image>
-				<view class="u-header-main">
-					<view class="user-item">
-						<view class="logo-m">
-							<image :src="headpic ? headpic:'../../static/temp/icon-seller@3x.png'" mode=""></image>
-							<text class="txt tui-skeleton-fillet">协销员工</text>
+		<cm-custom :navbar-data='nvabarData'></cm-custom>
+		<view class="user-section">
+			<view class="header" :style="{height:(CustomBar+90)-StatusBar+'px',paddingTop:CustomBar+'px',background:'url('+ bgImgUrl +')',backgroundSize:'cover'}">
+				<view class="header-main" v-if="hasLogin">
+					<view class="header-text">
+						<view class="user-item">
+							<text class="u-h1">协销员工</text>
+						</view>
+						<view class="user-item">
+							<text class="u-tips">协销人员</text>
 						</view>
 					</view>
-					<view class="user-item tui-skeleton-fillet">
-						<text class="u-h1">{{name}}</text>
-					</view>
-				</view>
-			</view>
-			<!-- 订单 -->
-			<view class="user-order">
-				<view class="tab-title tui-skeleton-fillet" @click="navigator('/seller/pages/order/order-list?listType=0')">
-					<text class="cell-tit tui-skeleton-fillet">我的订单</text>
-					<text class="cell-more tui-skeleton-fillet">查看全部</text>
-					<text class="iconfont icon-xiayibu"></text>
+					<view class="header-icon"><image :src="headpic == null? '../../../static/temp/icon-seller@3x.png' : headpic" mode=""></image></view>
 				</view>
-				<view class="order-section">
-					<view class="order-item" @click="navigator('/seller/pages/order/order-list?listType=1')" hover-class="common-hover"  :hover-stay-time="50">
-						<view class="order-icon tui-skeleton-fillet">
-							<image src="../../static/temp/order5@3x.png" mode=""></image>
-							<text 	v-if="beforeConfirmCount >0" 
-									class="uni-badge uni-badge-error uni-small uni-badge--small icon-num" 
-									:class="[beforeConfirmCount < 10 ? 'goleft':'']">
-									{{beforeConfirmCount == 99? '99+' : beforeConfirmCount}}
-							</text>
-						</view>
-						<text class="order-t tui-skeleton-fillet">待确认</text>
+				<!-- 订单 -->
+				<view class="user-order">
+					<view class="tab-title" @click="navigator('/seller/pages/order/order-list?listType=0')">
+						<text class="cell-tit">我的订单</text>
+						<text class="cell-more">查看全部</text>
+						<text class="iconfont icon-xiayibu"></text>
 					</view>
-					<view class="order-item" @click="navigator('/seller/pages/order/order-list?listType=2')"  hover-class="common-hover" :hover-stay-time="50">
-						<view class="order-icon tui-skeleton-fillet">
-							<image src="../../static/temp/order1@3x.png" mode=""></image>
-							<text  v-if="beforePayCount >0" 
-								   class="uni-badge uni-badge-error uni-small uni-badge--small icon-num " 
-								   :class="[beforePayCount < 10 ? 'goleft':'']">
-								   {{beforePayCount == 99? '99+' : beforePayCount}}
-							</text>
+					<view class="order-section">
+						<view class="order-item" @click="navigator('/seller/pages/order/order-list?listType=1')" hover-class="common-hover"  :hover-stay-time="50">
+							<view class="order-icon">
+								<image src="../../../static/temp/order5@3x.png" mode=""></image>
+								<text 	v-if="beforeConfirmCount>0" 
+										class="uni-badge uni-badge-error uni-small uni-badge--small icon-num" 
+										:class="[beforeConfirmCount < 10 ? 'goleft':'']">
+										{{beforeConfirmCount == 99? '99+' : beforeConfirmCount}}
+								</text>
+							</view>
+							<text class="order-t">待确认</text>
 						</view>
-						<text class="order-t tui-skeleton-fillet">待付款</text>
-					</view>
-					<view class="order-item" @click="navigator('/seller/pages/order/order-list?listType=3')" hover-class="common-hover"  :hover-stay-time="50">
-						<view class="order-icon tui-skeleton-fillet">
-							<image src="../../static/temp/order2@3x.png" mode=""></image>
-							<text   v-if="beforeShipCount >0" 
-									class="uni-badge uni-badge-error uni-small uni-badge--small icon-num" 
-									:class="[beforeShipCount < 10 ? 'goleft':'']">
-									{{beforeShipCount == 99? '99+' : beforeShipCount}}
-							</text>
+						<view class="order-item" @click="navigator('/seller/pages/order/order-list?listType=2')"  hover-class="common-hover" :hover-stay-time="50">
+							<view class="order-icon">
+								<image src="../../../static/temp/order1@3x.png" mode=""></image>
+								<text  v-if="beforePayCount >0" 
+									   class="uni-badge uni-badge-error uni-small uni-badge--small icon-num " 
+									   :class="[beforePayCount < 10 ? 'goleft':'']">
+									   {{beforePayCount == 99? '99+' : beforePayCount}}
+								</text>
+							</view>
+							<text class="order-t">待付款</text>
 						</view>
-						<text class="order-t tui-skeleton-fillet">待发货</text>
-					</view>
-					<view class="order-item" @click="navigator('/seller/pages/order/order-list?listType=4')" hover-class="common-hover"  :hover-stay-time="50">
-						<view class="order-icon tui-skeleton-fillet">
-							<image src="../../static/temp/order3@3x.png" mode=""></image>
-							<text 	v-if="shippedCount >0" 
-									class="uni-badge uni-badge-error uni-small uni-badge--small icon-num" 
-									:class="[shippedCount < 10 ? 'goleft':'']">
-									{{shippedCount == 99? '99+' : shippedCount}}
-							</text>
+						<view class="order-item" @click="navigator('/seller/pages/order/order-list?listType=3')" hover-class="common-hover"  :hover-stay-time="50">
+							<view class="order-icon">
+								<image src="../../../static/temp/order2@3x.png" mode=""></image>
+								<text   v-if="beforeShipCount >0" 
+										class="uni-badge uni-badge-error uni-small uni-badge--small icon-num" 
+										:class="[beforeShipCount < 10 ? 'goleft':'']">
+										{{beforeShipCount == 99? '99+' : beforeShipCount}}
+								</text>
+							</view>
+							<text class="order-t">待发货</text>
 						</view>
-						<text class="order-t tui-skeleton-fillet">已发货</text>
-					</view>
-					<view class="order-item" @click="navigator('/seller/pages/order/order-list?listType=5')" hover-class="common-hover"  :hover-stay-time="50">
-						<view class="order-icon tui-skeleton-fillet">
-							<image src="../../static/temp/order4@3x.png" mode=""></image>
-							<text 	v-if="refundsCount >0"
-									class="uni-badge uni-badge-error uni-small uni-badge--small icon-num" 
-									:class="[refundsCount < 10 ? 'goleft':'']">
-									{{refundsCount == 99? '99+' : refundsCount}}
-							</text>
+						<view class="order-item" @click="navigator('/seller/pages/order/order-list?listType=4')" hover-class="common-hover"  :hover-stay-time="50">
+							<view class="order-icon">
+								<image src="../../../static/temp/order3@3x.png" mode=""></image>
+								<text 	v-if="shippedCount>0" 
+										class="uni-badge uni-badge-error uni-small uni-badge--small icon-num" 
+										:class="[shippedCount < 10 ? 'goleft':'']">
+										{{shippedCount == 99? '99+' : shippedCount}}
+								</text>
+							</view>
+							<text class="order-t">已发货</text>
+						</view>
+						<view class="order-item" @click="navigator('/seller/pages/order/order-list?listType=5')" hover-class="common-hover"  :hover-stay-time="50">
+							<view class="order-icon">
+								<image src="../../../static/temp/order4@3x.png" mode=""></image>
+								<text 	v-if="refundsCount >0"
+										class="uni-badge uni-badge-error uni-small uni-badge--small icon-num" 
+										:class="[refundsCount < 10 ? 'goleft':'']">
+										{{refundsCount == 99 ? '99+' : refundsCount}}
+								</text>
+							</view>
+							<text class="order-t">退货/款</text>
 						</view>
-						<text class="order-t tui-skeleton-fillet">退货/款</text>
 					</view>
 				</view>
 			</view>
 			<!-- 底部跳转 -->
 			<view class="foot-list">
 				<view class="list-cell-item">
-					<view class="list-cell tui-skeleton-fillet"  v-for="(item, index) in firstList" :key="index" @click="navigator(item.path)" hover-class="cell-hover" :hover-stay-time="50">
+					<view class="list-cell"  v-for="(item, index) in firstList" :key="index" @click="navigator(item.path)" hover-class="cell-hover" :hover-stay-time="50">
 						<text class="cell-tit">{{item.name}}</text>
+						<text 	v-if="index == 0 && orderNum >0"
+								class="uni-badge uni-badge-error uni-small uni-badge--small icon-num">
+								{{orderNum == 99 ? '99+' : orderNum}}
+						</text>
 						<text class="cell-more iconfont icon-xiayibu"></text>
 					</view>
 				</view>
@@ -94,9 +97,9 @@
 	</view>
 </template>
 <script>
+	import authorize from '@/common/config/authorize.js'
 	import uniBadge from '@/components/uni-badge/uni-badge.vue'
 	import { mapState,mapMutations } from 'vuex'
-	import authorize from '@/common/config/authorize.js'
 	import { userInfoLogin } from "@/api/use.js"
 	import { getSellerHome } from "@/api/seller.js"
 	
@@ -106,16 +109,29 @@
 		},
 		data() {
 			return{	
+				nvabarData: {//顶部自定义导航
+					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
+					showSearch: 0,
+					title: '账户中心', // 导航栏 中间的标题
+					haveBack:false,
+					textLeft:this.$store.state.isIphone,
+					textColor:'#FFFFFF',
+					bgColor:''
+				},
+				CustomBar:this.CustomBar,// 顶部导航栏高度
+				StatusBar: this.StatusBar,
+				bgImgUrl:'https://img.caimei365.com/group1/M00/03/94/Cmis216Sk_SAPDwvAAcTspdl8h0610.png',
 				name:'',
 				headpic:'',
-				userMoney:0.00,
 				userId:'',
 				skeletonShow:true,
+				orderNum:0,//机构自主下单订单数
 				beforeConfirmCount:0,//待确认角标
 				beforePayCount:0, 	//待付款角标
 				beforeShipCount:0, //待发货角标
 				shippedCount:0,   //已发货角标
 				refundsCount:'', //退货/款角标
+				institutionsCont:120,
 				firstList:[
 					{name:'机构列表',path:'/seller/pages/club/list'},
 					{name:'帮机构下单',path:'/seller/pages/club/club-list'},
@@ -127,6 +143,9 @@
 		created() {
 			this.initData()
 		},
+		computed: {
+			...mapState(['hasLogin','userInfo'])
+		},
 		methods:{
 			...mapMutations(['login','logout']),
 			initData(){
@@ -141,7 +160,6 @@
 							this.getUserSellerHome()
 						}).catch(response =>{
 							this.logout()
-							console.log('222222222')
 							uni.removeStorageSync('sessionid')
 							uni.setStorageSync('sessionid','JSESSIONID='+response.data)
 							this.$store.commit('updateStatus',response.data)
@@ -162,6 +180,7 @@
 						this.beforeShipCount = this.showBadge(sellerData.beforeShipCount)//待发货		
 						this.shippedCount = this.showBadge(sellerData.shippedCount)//已发货	
 						this.refundsCount = this.showBadge(sellerData.refundsCount)//退货/款	
+						this.orderNum = this.showBadge(sellerData.orderNum)//机构自主下单订单数
 						this.skeletonShow = false;
 					}).catch(error =>{
 						this.$util.msg(error.msg,2000)
@@ -191,94 +210,169 @@
 	}
 	.user{
 		width: 100%;
-		height: auto;
+		height: 100%;
 		position:relative;
 		background: rgba(247, 247, 247, 1);
 	}	
-	.user-section.none{
-		display: none;
-	}
-	.user-section.show{
-		display: block;
-	}
-	.u-header{
+	.header{
 		width: 100%;
-		height: 400rpx;
 		position: relative;
-		image{
-			width: 100%;
-			height: 400rpx;
-		}
+		background-size: cover;
 	}	
-	.u-header-main{
-		width: 100%;
-		height: 284rpx;
-		padding: 58rpx 0;
-		position: absolute;
-		top: 0;
-		left: 0;
-		.user-item{
-			width: 100%;
+	.header-main{
+		width: 702rpx;
+		height: 130rpx;
+		padding: 24rpx 24rpx;
+		display: flex;
+		.header-text{
+			flex: 8;
 			display: flex;
 			flex-direction: column;
-			align-items: center;
-			margin-bottom: 16rpx;
-			.u-h1{
-				width: 410rpx;
-				font-size: $font-size-28;
-				line-height: 40rpx;
-				color: #FFFFFF;
-				margin-bottom: 8rpx;
-				-o-text-overflow: ellipsis;
-				text-overflow: ellipsis;
-				display: -webkit-box;
-				word-break: break-all;
-				-webkit-box-orient: vertical;
-				-webkit-line-clamp: 1;
-				overflow: hidden;
-				align-items: center;
+			.user-item{
+				flex: 1;
+				height: 64rpx;
+				line-height: 64rpx;
+				.u-tips{
+					display: inline-block;
+					float: left;
+					width: 98rpx;
+					height: 30rpx;
+					border: 1px solid #FFFFFF;
+					background: linear-gradient(128deg,rgba(242,143,49,1) 0%,rgba(225,86,22,1) 100%);
+					border-radius: 16rpx;
+					line-height: 30rpx;
+					font-size: $font-size-20;
+					text-align: center;
+					color: #FFFFFF;
+					margin-left: 10rpx;
+				}
+				.u-viptips{
+					display: inline-block;
+					float: left;
+					width: 98rpx;
+					height: 30rpx;
+					border: 1px solid #FFE600;
+					background: linear-gradient(128deg,rgba(242,143,49,1) 0%,rgba(225,86,22,1) 100%);
+					border-radius: 16rpx;
+					line-height: 30rpx;
+					font-size: $font-size-20;
+					text-align: center;
+					color: #FFE600;
+					margin-left: 10rpx;
+					margin-top: 17rpx;
+				}
+				.u-h1{
+					float: left;
+					font-size: $font-size-36;
+					color: #FFFFFF;
+					text-align: left;
+					-o-text-overflow: ellipsis;
+					text-overflow: ellipsis;
+					display: -webkit-box;
+					word-break: break-all;
+					-webkit-box-orient: vertical;
+					-webkit-line-clamp: 1;
+					overflow: hidden;
+				}
+				.u-p{
+					font-size: $font-size-24;
+					line-height: 64rpx;
+					color: #FFFFFF;
+					text-align: left;
+				}
 			}
-			.u-p{
-				font-size: $font-size-24;
-				line-height: 40rpx;
-				color: #FFFFFF;
+		}
+		.header-icon{
+			flex: 2;
+			margin-right: 20rpx;
+			image{
+				float: right;
+				width: 128rpx;
+				height: 128rpx;
+				border-radius: 100%;
+				border: 2rpx solid #FFFFFF;
 			}
 		}
-		.logo-m{
-			width: 144rpx;
-			height: 144rpx;
-			border: 2rpx solid #FFFFFF;
-			border-radius: 100%;
-			background: $bg-color;
-			position: relative;
-			.txt{
-				width: 144rpx;
-				height: 42rpx;
-				display: inline-block;
-				background: linear-gradient(45deg,rgba(225,86,22,1) 0%,rgba(255,177,0,1) 100%);
-				border-radius: 21rpx;
-				line-height: 42rpx;
-				text-align: center;
-				color: #FFFFFF;
-				font-size: $font-size-22;
-				position: absolute;
-				bottom: -10rpx;
-				left: 0;
+	}
+	.header-main-none{
+		width: 702rpx;
+		height: 152rpx;
+		padding: 0 24rpx;
+		display: flex;
+		.header-text{
+			flex: 8;
+			display: flex;
+			flex-direction: column;
+			.user-item{
+				flex: 1;
+				height: 50rpx;
+				line-height: 50rpx;
+				.line{
+					margin: 0 10rpx;
+				}
+				.u-h1{
+					float: left;
+					font-size: $font-size-36;
+					color: #FFFFFF;
+					text-align: left;
+					-o-text-overflow: ellipsis;
+					text-overflow: ellipsis;
+					display: -webkit-box;
+					word-break: break-all;
+					-webkit-box-orient: vertical;
+					-webkit-line-clamp: 1;
+					overflow: hidden;
+				}
+				.u-p{
+					font-size: $font-size-24;
+					line-height: 50rpx;
+					color: #EFEFEF;
+					text-align: left;
+				}
+				.u-btn{
+					width: 160rpx;
+					height: 40rpx;
+					background: rgba(255,255,255,.5);
+					border-radius: 5rpx;
+					line-height: 40rpx;
+					text-align: center;
+					font-size: $font-size-24;
+					color: #FFFFFF;
+					display: block;
+					margin-top: 5rpx;
+					padding-left: 6rpx;
+					.icon-xiangyouhuabeifen{
+						font-size: $font-size-24;
+					}
+				}
 			}
+		}
+		.header-icon{
+			flex: 2;
+			display: flex;
+			margin-right: 20rpx;
+			align-items: center;
+			justify-content: center;
 			image{
-				width: 144rpx;
-				height: 144rpx;
+				float: right;
+				width: 128rpx;
+				height: 128rpx;
 				border-radius: 100%;
+				border: 2rpx solid #FFFFFF;
 			}
 		}
 	}
-
 	.user-order{
-		width: 702rpx;
+		width: 654rpx;
 		height: auto;
 		padding: 0 24rpx;
 		background-color: $bg-color;
 		margin-bottom: 24rpx;
+		position: absolute;
+		bottom: -170rpx;
+		left: 24rpx;
+		border-radius: 20rpx;
+		box-shadow:0px 3px 6px rgba(225,86,22,0.07);
 	}	
 	.tab-title{
 		font-size: $font-size-28;
@@ -302,12 +396,12 @@
 			width: 30rpx;
 			height: 80rpx;
 			line-height: 80rpx;
-			font-size: $font-size-28;
 			text-align: center;
 			position: absolute;
 			right: 0;
 			top: 0;
 			display: block;
+			font-size: $font-size-28;
 		}
 	}
 	.order-section{
@@ -319,12 +413,11 @@
 		padding: 24rpx 0;
 	}
 	.order-item{
+		flex:1;
 		display: flex;
 		flex-direction: column;
 		align-items: center;
-		width: 98rpx;
 		position: relative;
-		margin-right: 53rpx;
 		&:last-child{
 			margin-right: 0;
 		}
@@ -351,18 +444,19 @@
 			color: $text-color;
 		}
 	}
-
-
 	.foot-list{
-		width: 100%;
-		// margin-bottom: 150rpx;
+		width: 702rpx;
+		padding: 0 24rpx;
+		padding-top: 168rpx;
 	}	
 	.list-cell-item{
-		width: 702rpx;
+		width: 654rpx;
 		height: auto;
 		margin-bottom: 24rpx;
 		padding:0 24rpx;
 		background: $bg-color;
+		border-radius: 20rpx;
+		box-shadow:0px 3px 6px rgba(225,86,22,0.07);
 	}
 	.list-cell{
 		display:flex;
@@ -380,7 +474,10 @@
 			align-self: baseline;
 			font-size:$font-size-28;
 			color:$text-color;
-			margin-left:10rpx;
+			.txt{
+				color: #FB4343;
+				padding-right: 10rpx;
+			}
 		}
 		.cell-tit{
 			flex: 1;

+ 14 - 11
components/cm-module/creatOrder/sellerFreight.vue

@@ -2,10 +2,7 @@
 	<view class="freight-template">
 		 <!-- 运费信息 -->
 		<view class="invoice-freight" @tap.stop="hanldOperationConfim">
-			<view class="freight-left">
-				运费
-				<!-- <text class="iconfont icon-yunfeishuoming" @click.stop="showTip"></text> -->
-			</view>
+			<view class="freight-left">运费</view>
 			<view class="freight-right">
 				<text class="text-l">{{freightText}}</text>
 				<text class="text" v-if="freightData.freePostFlag == 1">¥{{orderPriceToFixed(freightMoney)}}</text>
@@ -29,7 +26,7 @@
 					</view>
 					<view class="freight-group" v-if="freightData.freePostFlag == 1">
 						<view class="group-from">
-							<input class="form-input" type="text" v-model="freightData.freight" @input="setFreightMoney" placeholder="请填写运费" maxlength="20">
+							<input class="form-input" type="text" v-model="hanldFreight" @input="setFreightMoney" placeholder="请填写运费" maxlength="20">
 						</view>
 					</view>	
 					<view class="freight-group" v-if="freightData.freePostFlag == 0">
@@ -66,6 +63,7 @@
 					{value:-1,name:'到付'},
 				],
 				current:0,
+				hanldFreight:0,
 				freightData:{
 					freePostFlag:1,
 					freight:0
@@ -77,14 +75,19 @@
 		},
 		methods:{
 			infoData(data){//初始化运费
-				console.log(data)
+				// console.log(data)
 				switch(data.freePostFlag){
 					case 1:
 						this.current = 0;
 						this.freightData.freePostFlag = data.freePostFlag;
+						if(data.freight == 0){
+							this.hanldFreight = ''
+						}else{
+							this.hanldFreight = data.freight
+						}
 						this.freightData.freight = data.freight;
-						this.freightMoney = data.freight;
-						this.freightText = '不包邮'
+						this.freightMoney = this.hanldFreight;
+						this.freightText = ''
 						break;
 					case 0:
 						this.current = 1;
@@ -112,12 +115,12 @@
 				}		
 			},
 			choiceaFreightFirst(index){//校验运费形式及运费价
-				console.log(index)
 				if(index == 1){
-					if(this.freightData.freight==0 || this.freightData.freight== ''){
+					if(this.hanldFreight == 0 || this.hanldFreight== ''){
 						this.$util.msg('请填写运费',2000)
 						return
 					}
+					this.freightData.freight = this.hanldFreight
 					this.$emit('handleChoiceaFreight',this.freightData)
 				}else{
 					this.freightData.freight = 0
@@ -136,7 +139,7 @@
 			},
 			hanldOperationConfim(data){//显示选择数量确认弹窗
 				this.specClass = 'show';
-				this.freightMoney = this.freightData.freight
+				this.freightMoney = this.hanldFreight
 			},
 			radioChange(e) {//运费选择切换
 				this.freightData.freePostFlag = parseInt(e.target.value);

+ 143 - 0
components/cm-module/drag-button/drag-button.vue

@@ -0,0 +1,143 @@
+<template>
+	<view>
+		<view
+			id="_drag_button"
+			class="drag"
+			:style="'left: ' + left + 'px; top:' + top + 'px;'"
+			@touchstart="touchstart"
+			@touchmove.stop.prevent="touchmove"
+			@touchend="touchend"
+			@click.stop.prevent="click"
+			:class="{transition: isDock && !isMove }"
+		>
+		
+			<text>{{ text }}</text>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'drag-button',
+		props: {
+			isDock:{
+				type: Boolean,
+				default: false
+			},
+			existTabBar:{
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+				top:0,
+				left:0,
+				width: 0,
+				height: 0,
+				offsetWidth: 0,
+				offsetHeight: 0,
+				windowWidth: 0,
+				windowHeight: 0,
+				isMove: true,
+				edge: 10,
+				text: '按钮'
+			}
+		},
+		mounted() {
+			const sys = uni.getSystemInfoSync();
+			
+			this.windowWidth = sys.windowWidth;
+			this.windowHeight = sys.windowHeight;
+			
+			// #ifdef APP-PLUS
+				this.existTabBar && (this.windowHeight -= 50);
+			// #endif
+			if (sys.windowTop) {
+				this.windowHeight += sys.windowTop;
+			}
+			console.log(sys)
+			
+			const query = uni.createSelectorQuery().in(this);
+			query.select('#_drag_button').boundingClientRect(data => {
+				this.width = data.width;
+				this.height = data.height;
+				this.offsetWidth = data.width / 2;
+				this.offsetHeight = data.height / 2;
+				this.left = this.windowWidth - this.width - this.edge;
+				this.top = this.windowHeight - this.height - this.edge;
+			}).exec();
+		},
+		methods: {
+			click() {
+				this.$emit('btnClick');
+			},
+			touchstart(e) {
+				this.$emit('btnTouchstart');
+			},
+			touchmove(e) {
+				// 单指触摸
+				if (e.touches.length !== 1) {
+					return false;
+				}
+				
+				this.isMove = true;
+				
+				this.left = e.touches[0].clientX - this.offsetWidth;
+				
+				let clientY = e.touches[0].clientY - this.offsetHeight;
+				// #ifdef H5
+					clientY += this.height;
+				// #endif
+				let edgeBottom = this.windowHeight - this.height - this.edge;
+
+				// 上下触及边界
+				if (clientY < this.edge) {
+					this.top = this.edge;
+				} else if (clientY > edgeBottom) {
+					this.top = edgeBottom;
+				} else {
+					this.top = clientY
+				}
+				
+			},
+			touchend(e) {
+				if (this.isDock) {
+					let edgeRigth = this.windowWidth - this.width - this.edge;
+					
+					if (this.left < this.windowWidth / 2 - this.offsetWidth) {
+						this.left = this.edge;
+					} else {
+						this.left = edgeRigth;
+					}
+					
+				}
+				
+				this.isMove = false;
+				
+				this.$emit('btnTouchend');
+			},
+		}}
+</script>
+
+<style lang="scss">
+	.drag {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		background-color: rgba(0, 0, 0, 0.5);
+		box-shadow: 0 0 6upx rgba(0, 0, 0, 0.4);
+		color: $uni-text-color-inverse;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		font-size: $uni-font-size-sm;
+		position: fixed;
+		z-index: 999999;
+		
+		&.transition {
+			transition: left .3s ease,top .3s ease;
+		}
+	}
+	
+</style>

+ 24 - 11
components/cm-module/listTemplate/buyagainList.vue

@@ -35,12 +35,14 @@
 			<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>
-		<view class="cart-icon" @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>
+		<!-- 可拖动悬浮按钮 -->
+		<cm-drag :cartNum="cartQuantity" 
+				 :isDock="true"
+				 :existTabBar="true" 
+				 @btnClick="btnClick" 
+				 @btnTouchstart="btnTouchstart" 
+				 @btnTouchend="btnTouchend">
+		</cm-drag>
 		<!-- 透明模态层 -->
 		<modal-layer v-if='isModallayer'></modal-layer>
 	</view>
@@ -50,6 +52,7 @@
 	import listSkeleton from '@/components/cm-module/listTemplate/listSkeleton'
 	import modalLayer from "@/components/modal-layer"
 	import uniStars from '@/components/uni-stars/uni-stars.vue'
+	import cmDrag from '@/components/cm-custom/cm-drag.vue'
 	import { queryAgaingoodslist } from "@/api/product.js"
 	import { mapState,mapMutations } from 'vuex';
 	export default{
@@ -57,7 +60,8 @@
 		components:{
 			listSkeleton,
 			modalLayer,
-			uniStars
+			uniStars,
+			cmDrag
 		},
 		data(){
 			return{
@@ -80,7 +84,9 @@
 				fromRegularPurchasePage: false,
 				cartQuantity: 0,
 				showRegularBtn: false,
-				isPrecedence:false
+				isPrecedence:false,
+				windowWidth:'',
+				windowHeight:'',
 			}
 		},
 		created() {
@@ -166,9 +172,7 @@
 				this.$api.navigateTo(`/pages/goods/product?id=${id}`);
 				this.isModallayer = false;
 			},
-			toCartPage() {
-				this.$emit('goCartPage')
-			},
+			
 			repurchModel(){
 				this.$util.modal('','此商品的价格有变化,原来的购买价已不适用','知道了','',false,() =>{})
 			},
@@ -182,6 +186,15 @@
 			delInputText(){//清除输入框内容
 				this.searchInputVal = ''
 				this.isShowClose = false
+			},
+			btnClick() {
+				this.$emit('goCartPage')
+			},
+			btnTouchstart() {
+				// console.log('btnTouchstart');
+			},
+			btnTouchend() {
+				// console.log('btnTouchend');
 			}
 		}
 	}

+ 55 - 55
components/cm-module/listTemplate/immediatelyList.vue

@@ -3,8 +3,8 @@
 		<view class="good-search clearfix" v-if="searchStatus">
 			<view class="nav-tab-bar u-f-ajc">
 				<block v-for="(tab,index) in tabBars" :key='tab.id' :class="{ current: tabIndex === index }">
-					<view class="tabstyle u-f-ajc" :class="{'addstyle':tabIndex==index}" @tap="changeTab(index)">{{tab.name}}
-					<i v-if='(tabIndex==index)' class='nav-tab-line iconfont icon-gou'></i>
+					<view class="tabstyle u-f-ajc" :class="{'addstyle':tabIndex==index}" @tap="changeTab(index)">
+						{{tab.name}}<i v-if='(tabIndex==index)' class='nav-tab-line iconfont icon-gou'></i>
 					</view>
 				</block>
 			</view>
@@ -21,9 +21,6 @@
 						   maxlength="20"/>
 				<text class="iconfont icon-shanchu1" v-if="isShowClose" @click="delInputText(tabIndex)"></text>
 			</view>
-			<view class="search-btn" :class="tabIndex">
-				<button class="search-btn" type="default" @click.stop="searchOpertor(tabIndex)" >搜索</button>
-			</view>
 		</view>
 		<list-skeleton v-if="showSkeleton"></list-skeleton>
 		<view class="empty-container" v-if="isShowEmpty" >
@@ -116,13 +113,15 @@
 					</view>
 				</scroll-view>
 			</view>
-		</view>
-		<view class="cart-icon" @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>
+		</view>
+		<!-- 可拖动悬浮按钮 -->
+		<cm-drag :cartNum="cartQuantity" 
+				 :isDock="true"
+				 :existTabBar="true" 
+				 @btnClick="btnClick" 
+				 @btnTouchstart="btnTouchstart" 
+				 @btnTouchend="btnTouchend">
+		</cm-drag>		
 		<!-- 透明模态层 -->
 		<modal-layer v-if='isModallayer'></modal-layer>
 	</view>
@@ -131,7 +130,8 @@
 <script>
 	import listSkeleton from '@/components/cm-module/listTemplate/listSkeleton'
 	import modalLayer from "@/components/modal-layer"
-	import uniStars from '@/components/uni-stars/uni-stars.vue'
+	import uniStars from '@/components/uni-stars/uni-stars.vue'
+	import cmDrag from '@/components/cm-custom/cm-drag.vue'
 	import { getSellerProduct,getcombinationProduct } from "@/api/seller.js"
 	import { mapState,mapMutations } from 'vuex';
 	export default{
@@ -139,7 +139,8 @@
 		components:{
 			listSkeleton,
 			modalLayer,
-			uniStars
+			uniStars,
+			cmDrag
 		},
 		props: {
 			searchStatus:{
@@ -424,9 +425,6 @@
 				this.$api.navigateTo(`/pages/goods/product?id=${id}`);
 				this.isModallayer = false;
 			},
-			toCartPage() {
-				this.$emit('goCartPage')
-			},
 			repurchModel(){
 				this.$util.modal('','此商品的价格有变化,原来的购买价已不适用','知道了','',false,() =>{})
 			},
@@ -449,6 +447,15 @@
 					this.isShowClose = false;
 					this.getcombinationProduct();
 				}
+			},
+			btnClick() {
+				this.$emit('goCartPage')
+			},
+			btnTouchstart() {
+				// console.log('btnTouchstart');
+			},
+			btnTouchend() {
+				// console.log('btnTouchend');
 			}
 		}
 	}
@@ -511,17 +518,6 @@
 			border-bottom: 4rpx solid #E15616;
 		}
 	}
-	.icon-gou{
-		color: #E15616;	
-		position: absolute;
-		top: 30rpx;
-		right: 0rpx;
-		font-weight: bold
-	}
-	.addstyle{
-		background: linear-gradient(-42deg, transparent 28rpx, #E15616 0) top right;
-		color: #FFFFFF;
-	}
 	.tabstyle{
 		width: 128rpx;
 		height: 76rpx;
@@ -533,8 +529,35 @@
 		border: 2rpx solid #EEEEEE;
 		position: relative;
 		margin-right: 12rpx;
-		
-		}
+		&.addstyle{
+			background: $btn-confirm;
+			color: #FFFFFF;
+			&::before{
+				content: "";
+				width: 0;
+				height: 0;
+				border-top: 20rpx solid transparent;
+				border-right: 20rpx solid #FFFFFF;
+				border-left: 20rpx solid transparent;
+				border-bottom: 20rpx solid #FFFFFF;
+				position: absolute;
+				right: 0;
+				bottom: 0;
+			}
+		}
+		.icon-gou{
+			width: 36rpx;
+			height: 36rpx;
+			line-height: 36rpx;
+			text-align: center;
+			color: #E15616;	
+			position: absolute;
+			bottom: -5rpx;
+			right: -5rpx;
+			font-weight: bold;
+			font-size: $font-size-28;
+		}
+	}
 	.commodity-list-wrapper {
 		scroll-view {
 			height: 100%;
@@ -565,14 +588,14 @@
 		left: 0;
 		z-index: 999;
 		.search-from{
-			width: 326rpx;
+			width: 420rpx;
 			height: 80rpx;
 			background: #F7F7F7;
 			border-radius: 14rpx;
 			float: left;
 			position: relative;
 			.input{
-				// width: 500rpx;
+				width: 340rpx;
 				height: 80rpx;
 				float: left;
 				line-height: 80rpx;
@@ -834,29 +857,6 @@
 	.zuhe_list_price{
 		display: block !important;
 	}
-	.cart-icon {
-		width: 92rpx;
-		height: 92rpx;
-		border-radius: 50%;
-		background: rgba(255, 147, 0, 0.5);
-		position: fixed;
-		right: 24rpx;
-		bottom: 37%;
-		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;
-		}
-	}
 	.zuhe_list_text{
 		margin-top: 10rpx;
 	}

+ 21 - 33
components/cm-module/listTemplate/productList.vue

@@ -42,12 +42,15 @@
 			<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>
+		<!-- 可拖动悬浮按钮 -->
+		<cm-drag v-if="!isShowEmpty"
+				 :cartNum="cartQuantity" 
+				 :isDock="true"
+				 :existTabBar="true" 
+				 @btnClick="btnClick" 
+				 @btnTouchstart="btnTouchstart" 
+				 @btnTouchend="btnTouchend">
+		</cm-drag>		
 		<!-- 透明模态层 -->
 		<modal-layer v-if='isModallayer'></modal-layer>
 	</view>
@@ -57,6 +60,7 @@
 	import listSkeleton from '@/components/cm-module/listTemplate/listSkeleton'
 	import modalLayer from "@/components/modal-layer"
 	import uniStars from '@/components/uni-stars/uni-stars.vue'
+	import cmDrag from '@/components/cm-custom/cm-drag.vue'
 	import { queryAgaingoodslist } from "@/api/product.js"
 	import { mapState,mapMutations } from 'vuex';
 	export default{
@@ -64,7 +68,8 @@
 		components:{
 			listSkeleton,
 			modalLayer,
-			uniStars
+			uniStars,
+			cmDrag
 		},
 		props: {
 			emptyText: {
@@ -176,9 +181,6 @@
 				this.$api.navigateTo(`/pages/goods/product?id=${id}`);
 				this.isModallayer = false;
 			},
-			toCartPage() {
-				this.$api.navigateTo('/pages/goods/cart/cart')
-			},
 			toIndexPage() {
 				uni.switchTab({
 					url: '/pages/tabBar/home/home' 
@@ -186,6 +188,15 @@
 			},
 			repurchModel(){
 				this.$util.modal('','此商品的价格有变化,原来的购买价已不适用','知道了','',false,() =>{})
+			},
+			btnClick() {
+				this.$api.switchTabTo('/pages/tabBar/cart/cart')
+			},
+			btnTouchstart() {
+				// console.log('btnTouchstart');
+			},
+			btnTouchend() {
+				// console.log('btnTouchend');
 			}
 		}
 	}
@@ -357,27 +368,4 @@
 			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>

+ 2 - 45
main.js

@@ -3,57 +3,14 @@ import store from './store'
 import App from './App'
 import * as Api from '@/common/config/caimeiApi.js'
 import * as Regs from '@/common/config/common.js'
+import { msg, modal,json,prePage } from'./utils/util'
 // import '@/common/utils/module.js'
 import Json from './json' //本地数据
 import cuCustom from './components/cm-custom/cu-custom.vue'
 import cmCustom from './components/cm-custom/cm-custom.vue'
 Vue.component('cu-custom',cuCustom)
 Vue.component('cm-custom',cmCustom)
-/**
- *  示例使用了uni.scss下的变量, 除变量外已尽量移除特有语法,可直接替换为其他预处理器使用
- */
-const msg = (title, duration=1500, mask=true, icon='none')=>{
-	//统一提示方便全局修改
-	if(Boolean(title) === false){return;}
-	uni.showToast({
-		title,
-		duration,
-		mask,
-		icon
-	});
-}
-const modal = (title,content,confirmText,cancelText,showCancel=false,callBack) =>{
-	uni.showModal({
-		title,
-		content,
-		confirmText,
-		cancelText,
-		confirmColor:'#E15616',
-		showCancel,
-		success: function (res) {
-			if (res.confirm) {
-				callBack()
-			}
-		}
-	});
-}	
-const json = type=>{
-	//模拟异步请求数据
-	return new Promise(resolve=>{
-		setTimeout(()=>{
-			// console.log(resolve+'======='+type);
-			resolve(Json[type]);
-		}, 500)
-	})
-}
-const prePage = ()=>{
-	let pages = getCurrentPages();
-	let prePage = pages[pages.length - 2];
-	// #ifdef H5
-	return prePage;
-	// #endif
-	return prePage.$vm;
-}
+
 Vue.prototype.$getStorage = function(key){
 	var userParam = uni.getStorageSync(key);
 	if (userParam != null && userParam != "" && userParam!= undefined) {

+ 6 - 0
pages.json

@@ -365,6 +365,12 @@
 						"navigationBarTitleText": "订单列表"
 					}
 				},
+				{
+					"path": "pages/order/order-historylist",
+					"style": {
+						"navigationBarTitleText": "订单列表"
+					}
+				},
 				{
 					"path": "pages/search/search",
 					"style": {

+ 1 - 0
pages/authorization/authorization.vue

@@ -71,6 +71,7 @@
 					wx.getUserInfo({
 						success: res => {
 							wxLogin.wxLoginAuthorize()
+							
 							setTimeout(()=>{
 								uni.navigateBack({delta: 1});
 							},2000)

+ 5 - 7
pages/goods/cart.vue

@@ -107,7 +107,7 @@
 					</view>
 				</view>
 			</view>
-			<view v-if="isEmpty" class="cart-content empty">
+			<view v-else 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>
@@ -224,12 +224,8 @@
 					this.skeletonShow = false
 					this.$store.commit('updateAllNum',response.data.cartQuantity)
 					const responseData = response.data
-					if(responseData.pageDate.length > 0 && responseData.failureList.length > 0){
+					if(responseData.pageDate.length > 0 ){
 						this.isEmpty =false
-					} else {
-						this.isEmpty =true
-					}
-					if( responseData.pageDate.length > 0){
 						this.goodsList = responseData.pageDate;
 						this.goodsList.forEach((item,index) => {
 							let productsListLength = item.productsList.length,
@@ -241,6 +237,7 @@
 							item.isDisabled = invalidLength === productsListLength;
 						})
 					} else {
+						this.isEmpty =true
 						this.goodsList = [];
 					}
 					if( responseData.failureList.length > 0){
@@ -654,7 +651,8 @@
 						3:'商品已下架',
 						4:'商品已售罄',
 						5:'价格仅会员可见,您不能购买',
-						6:'未公开价格'
+						6:'未公开价格',
+						7:'库存不足'
 					}
 				Object.keys(stateTextObject).forEach(key => {
 					if(key == state){

+ 7 - 8
pages/tabBar/cart/cart.vue

@@ -107,7 +107,7 @@
 					</view>
 				</view>
 			</view>
-			<view v-if="isEmpty" class="cart-content empty">
+			<view v-else 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>
@@ -211,17 +211,13 @@
 				}, 500)
 			},
 			initGetCartGoodsList(){//初始化购物车 index:1
-				let params = {userID:this.userID,pageNum:1,pageSize:this.pageSize}
+				let params = {userID:this.userID}
 				queryShoppingCartList(params).then(response =>{
 					this.skeletonShow = false
 					this.$store.commit('updateAllNum',response.data.cartQuantity)
 					const responseData = response.data
-					if(responseData.pageDate.length > 0 && responseData.failureList.length > 0){
+					if(responseData.pageDate.length > 0 ){
 						this.isEmpty =false
-					} else {
-						this.isEmpty =true
-					}
-					if( responseData.pageDate.length > 0){
 						this.goodsList = responseData.pageDate;
 						this.goodsList.forEach((item,index) => {
 							let productsListLength = item.productsList.length,
@@ -233,6 +229,8 @@
 							item.isDisabled = invalidLength === productsListLength;
 						})
 					} else {
+						console.log('2222')
+						this.isEmpty =true
 						this.goodsList = [];
 					}
 					if( responseData.failureList.length > 0){
@@ -661,7 +659,8 @@
 						3:'商品已下架',
 						4:'商品已售罄',
 						5:'价格仅会员可见,您不能购买',
-						6:'未公开价格'
+						6:'未公开价格',
+						7:'库存不足'
 					}
 				Object.keys(stateTextObject).forEach(key => {
 					if(key == state){

+ 3 - 8
pages/tabBar/home/home.vue

@@ -65,7 +65,7 @@
 								<view class="title tui-skeleton-rect">
 									<text class="mclap">{{item.name}}</text>
 								</view>
-								<view class="" v-if="isLogin">
+								<view class="" v-if="hasLogin">
 									<view v-if="userIdentity == 4">
 										<view class="title-none" v-show="item.price1TextFlag == '1'">
 											<text class="p big">未公开价格</text>
@@ -611,10 +611,9 @@
 					}
 				}
 				.no-price{
-					height: 36rpx;
-					line-height: 36rpx;
+					height: 76rpx;
+					line-height: 76rpx;
 					display: flex;
-					margin-top: 8rpx;
 					.p-no{
 						font-size: $font-size-24;
 						color: $color-system;
@@ -623,10 +622,6 @@
 					.p-stars{
 						margin-top: 3rpx;
 					}
-					image{
-						width:30rpx;
-						height: 36rpx;
-					}
 				}
 				.price{
 					color:#FF2A2A;

+ 8 - 8
pages/tabBar/user/user.vue

@@ -6,9 +6,9 @@
 				<view class="header-main" v-if="hasLogin">
 					<view class="header-text">
 						<view class="user-item"><text class="u-h1">{{name}}</text>
-						<text class="u-viptips" v-if="userIdentity == 2">{{userType}}</text>
-						<text class="u-tips" v-if="userIdentity == 4">{{userType}}</text>
-					</view>
+							<text class="u-viptips" v-if="userIdentity == 2">{{userType}}</text>
+							<text class="u-tips" v-if="userIdentity == 4">{{userType}}</text>
+						</view>
 						<view class="user-item"><text class="u-p">账户余额:{{userMoney}}元</text></view>
 					</view>
 					<view class="header-icon"><image :src="headpic == null? '../../../static/temp/icon-club@3x.png' : headpic" mode=""></image></view>
@@ -242,6 +242,11 @@
 				    phoneNumber:this.contactNumber //仅为示例
 				});
 			},
+			hanldUnBindUpgrade(){//普通用户不升级会员机构
+				cancelPrompt({ userId:this.userID}).then(response =>{
+					this.isUpgradeAlert = false
+				})
+			},
 			navigator(url){
 				authorize.getSetting().then(wxResponse =>{// console.log('是否已授权',res);//0:为取消授权 1:为已授权 2:为未操作
 					if(wxResponse == 1){
@@ -255,11 +260,6 @@
 					}
 				})	
 			},	
-			hanldUnBindUpgrade(){//普通用户不升级会员机构
-				cancelPrompt({ userId:this.userID}).then(response =>{
-					this.isUpgradeAlert = false
-				})
-			},
 			navigatorNex(url){
 				authorize.getSetting().then(wxResponse =>{// console.log('是否已授权',res);//0:为取消授权 1:为已授权 2:为未操作
 					if(wxResponse == 1){

+ 2 - 1
seller/pages/cart/cart.vue

@@ -64,7 +64,7 @@
 					<!--加载loadding-->
 				</scroll-view>
 				<!-- 脚部菜单 -->
-				<view class="footer">
+				<view class="footer" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
 					<view class="footer-le">
 						<view class="foot-check checkbox-box" @tap.stop="checkAll()">
 							<button class="checkbox iconfont" :class="[isCheckAll?'icon-gouxuan':'icon-weigouxuan']"></button> 
@@ -135,6 +135,7 @@
 				pullFlag: true,
 				pageSize: 10,
 				pageNum: 1,
+				isIphoneX:this.$store.state.isIphoneX
 			}
 		},
 		onLoad(){

+ 1 - 1
seller/pages/club/club-list.vue

@@ -175,7 +175,7 @@
 			},
 			_goHistory(item){
 				this.$api.setStorage('orderUserInfo',item)
-				this.$api.navigateTo('/seller/pages/order/order-history')
+				this.$api.navigateTo(`/seller/pages/order/order-historylist?clubID=${item.clubID}&listType=0`)
 			}
 		},
 		onReachBottom() {

+ 25 - 7
seller/pages/club/list.vue

@@ -42,20 +42,24 @@
 							</view>
 						</view>
 						<view class="list-opea">
-							<view class="opea-type-dell" @click.stop="checkData(item)">
-								<text class="iconfont icon-xieboke"></text>
-								<text>修改资料</text>
-							</view>
 							<view class="opea-type-dell or" @click.stop="orderHistory(item)">
 								<text class="iconfont icon-dingdanxuanzhong"></text>
 								<text>历史订单</text>
+								<text v-if="item.orderNum >0"
+									  class="opea-badge uni-badge uni-badge-error uni-small uni-badge--small icon-num"
+									  :class="[item.orderNum < 10 ? 'right':'']">
+									  {{showBadge(item.orderNum)}}
+								</text>
+							</view>
+							<view class="opea-type-dell" @click.stop="checkData(item)">
+								<text class="iconfont icon-xieboke"></text>
+								<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>
@@ -231,7 +235,7 @@
 			},
 			orderHistory(item){
 				this.$api.setStorage('orderUserInfo',item)
-				this.$api.navigateTo(`/seller/pages/order/order-history?clubID=${item.clubID}`)
+				this.$api.navigateTo(`/seller/pages/order/order-historylist?clubID=${item.clubID}&listType=0`)
 			},
 			onShowClose () {//输入框失去焦点时触发
 				if(this.searchInputVal != ''){
@@ -243,7 +247,12 @@
 			delInputText(){//清除输入框内容
 				this.searchInputVal = ''
 				this.isShowClose = false
-			}
+			},
+			showBadge(n){
+				let num ='';
+				if(n>100){num = 99}else{num = n;}
+				return num;
+			},
 		},
 		onReachBottom() {
 			if(this.hasNextPage){
@@ -430,6 +439,15 @@
 				.opea-type-dell{
 					line-height: 46rpx;
 					font-size: 24rpx;
+					position: relative;
+					.opea-badge{
+						position: absolute;
+						left: -45rpx;
+						top: -10rpx;
+						&.right{
+							left: -20rpx;
+						}
+					}
 					&.or{
 						color: #E19B16;
 					}

+ 4 - 18
seller/pages/index/index.vue

@@ -1,6 +1,5 @@
 <template>
-	<view class="content"  :style="{paddingBottom:isIphoneX?'140rpx':'98rpx',marginTop:CustomBar+'px'}">
-		<cu-custom :navbar-data='nvabarData'></cu-custom>
+	<view class="content"  :style="{paddingBottom:isIphoneX?'140rpx':'98rpx'}">
 		<!-- 采美采购商城 -->
 		<view :style="{'display':show_index == 0 ?'block':'none'}">
 			<seller-home  ref="home" v-if="isHomeData"></seller-home>
@@ -48,15 +47,7 @@
 					{'id':1,'name':'分类',icon:'../../../static/icon-sort@3x.png',iconAc:'../../../static/icon-sort-active@3x.png'},
 					{'id':2,'name':'我的',icon:'../../../static/icon-user@3x.png',iconAc:'../../../static/icon-user-active@3x.png'}
 				],
-				nvabarData: {		//顶部自定义导航
-					showCapsule: 0, // 是否显示左上角图标  1表示显示  0表示不显示,
-					showSearch: 0,
-					title: '账户中心',  // 导航栏 中间的标题
-					haveBack:false,
-					textLeft:this.$store.state.isIphone
-				},
-				isIphoneX:this.$store.state.isIphoneX,
-				CustomBar:this.CustomBar,// 顶部导航栏高度
+
 			}
 		},
 		onLoad() {
@@ -71,17 +62,14 @@
 			cut_index(type){
 				this.show_index = type
 				if(this.show_index == 0){
-					this.nvabarData.title = '采美采购商城'
 					this.isHomeData = true
 					this.isUserData = false
 					this.isCategory = false
 				}else if(this.show_index == 1){
-					this.nvabarData.title = '商品分类'
 					this.isHomeData = false
 					this.isUserData = false
 					this.isCategory = true
 				}else if(this.show_index == 2){
-					this.nvabarData.title = '账户中心'
 					this.isHomeData = false
 					this.isUserData = true
 					this.isCategory = false
@@ -89,7 +77,7 @@
 			},
 			onPullDownRefresh(){
 				if(this.show_index == 0){
-					this.$refs.home.getCheekeyCode()
+					this.$refs.home.getSellerHomeInfo()
 				}else if(this.show_index == 2){
 					this.$refs.user.initData()
 				}
@@ -100,9 +88,6 @@
 </script>
 
 <style lang="scss">
-	.content{
-		background: #FFFFFF;
-	}
 	.tabBar{ 
 		width:100%;
 		height: 98rpx;
@@ -115,6 +100,7 @@
 		display: flex;
 		align-items: center;
 		justify-content: center;
+		z-index: 999;
 		.tabBar_list{ 
 			width:86%;
 			display: flex;

+ 0 - 1
seller/pages/order/create-order.vue

@@ -184,7 +184,6 @@
 				this.invoiceData = data
 			},
 			handleChoiceaFreightData(data){//获取运费信息
-				console.log(data)
 				if(data.freePostFlag == '1'){
 					this.freightData = data
 					this.payAllPrice = this.allPrice+parseInt(data.freight)

+ 710 - 0
seller/pages/order/order-historylist.vue

@@ -0,0 +1,710 @@
+<template>
+	<view class="container" :style="{paddingTop:82+'px'}">
+		<view class="order-section-top">
+			<scroll-view scroll-x scroll-with-animation class="tab-view" :scroll-left="scrollLeft">
+				<view v-for="(item,index) in orderTabBar" :key="index" class="tab-bar-item" :class="[currentTab==index ? 'active' : '']"
+				 :data-current="index" @tap.stop="onClickTab">
+					<text class="tab-bar-title">{{item.text}}</text>
+				</view>
+			</scroll-view>
+			<view class="tab-screen">
+				<view v-for="(item,index) in screenTabBar" :key="index" class="tab-screen-item" :class="[screenTab == index ? 'active' : '']"
+				 :data-current="index" @tap.stop="onClickScreenTab(index)">{{item.text}}</view>
+			</view>
+		</view>
+		<swiper class="tab-content" :current="currentTab" duration="80" @animationfinish="onChange" :style="{height:winHeight+'px'}" >
+			<swiper-item v-for="(tabItem,index) in orderTabBar" :key="index">
+				<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="false" :loadingType="5"></tui-skeleton>
+				<scroll-view scroll-y class="scoll-y tui-skeleton" @scrolltolower="scrolltolower" :style="{height:winHeight+'px'}" >
+					<view  :class="{'tui-order-list':scrollTop >= 0}" class="tui-skeleton clearfix">
+						<!-- 空白页 -->
+						<empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0" :typeIndex="currentTab" :navbarHeight="navbarHeight"></empty>
+						<!-- 列表 -->
+						<view v-else class="tui-order-content">
+							<view  class="tui-order-item" v-for="(order,orderIndex) in tabItem.orderList" :key="orderIndex" @click.stop="detail(order.orderID)">
+								<view class="order-title">
+									<view class="order-title-name">这里是机构的名称</view>
+									<view class="order-title-t">
+										<text class="bage-buss tui-skeleton-fillet" v-if="order.orderSubmitType == 3">协销</text>
+										<text class="bage-auto tui-skeleton-fillet" v-if="order.orderSubmitType == 0 || order.orderSubmitType == 2">自主</text>
+										<text class="bage-text tui-skeleton-fillet">订单号:{{order.orderNo}}({{order.orderID}})</text>
+									</view>
+									<view class="order-title-b">
+										<view class="order-title-btxt tui-skeleton-fillet">下单时间:{{order.orderTime}}</view>
+										<view class="order-title-tip tui-skeleton-fillet">{{orderStateExp(order.status)}}</view>
+									</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 ? 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>
+			</swiper-item>
+		</swiper>
+		<!-- 分享弹窗 -->
+		<share-alert   v-if="isShareModal"
+					   :orderID="btnoRderID" 
+					   :clubUserID = btnClubUserID
+					   @shareConfirm ='onShareAppMessage'>
+		</share-alert>
+		<!-- 透明模态层 -->
+		<modal-layer v-if='isModalLayer'></modal-layer>
+	</view>
+</template>
+
+<script>
+	import headerBack from '@/components/cm-module/headerNavbar/header-back' 		//自定义顶部导航
+	import btSearch from '@/components/uni-search/bt-search.vue'				//搜索
+	import tuiSkeleton from "@/components/tui-skeleton/tui-skeleton"
+	import tuiListCell from "@/components/tui-components/list-cell/list-cell"
+	import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
+	import tuiNomore from "@/components/tui-components/nomore/nomore"
+	import orderButton from '@/components/cm-module/orderDetails/sellerOrderButton' //操作按钮
+	import modalLayer from "@/components/modal-layer"
+	import empty from "@/components/empty";
+	import shareAlert from '@/components/cm-module/modelAlert/shareAlert'			 //分享弹窗
+	import { cancelOrder,deleteOrder, affirmOrder } from "@/api/order.js"
+	import { getSellerClubOrderList } from "@/api/seller.js" 
+	
+	export default {
+		components: {
+			headerBack,
+			empty,
+			btSearch,
+			tuiListCell,
+			tuiLoadmore,
+			tuiNomore,
+			orderButton,
+			tuiSkeleton,
+			modalLayer,
+			shareAlert
+		},
+		data() {
+			return {
+				orderTabBar: [{listType: 0,text: '全部订单',orderList: []},
+							  {listType: 1,text: '待确认',orderList: []},
+							  {listType: 2,text: '待付款',orderList: []},
+							  {listType: 3,text: '待发货',orderList: []},
+							  {listType: 4,text: '已发货',orderList: []},
+							  {listType: 5,text: '退货/款',orderList: []},
+							 ],
+				screenTabBar:[
+								{type:0,text:'全部订单'},
+								{type:1,text:'机构自主订单'},
+								{type:2,text:'协销订单'}
+							],			 
+				winHeight: "", //窗口高度
+				clubID:'',		//机构ID
+				currentTab: 0, //预设当前项的值
+				screenTab:0,   //筛选预设当前项的值
+				scrollLeft: 0 ,//tab标题的滚动条位置
+				serviceProviderId:0,//协销用户ID
+				orderData: [],
+				btnClubUserID:0,
+				btnoRderID: 0, //点击按钮传入的的订单ID
+				pageNum: 1,	  //页数
+				pageSize: 10,  //条数
+				scrollTop: 0,
+				deteleType:'',
+				skeletonShow: true,
+				isClickChange: false,
+				isShareModal: false,//控制分享弹窗
+				isSeller:false,
+				isModalLayer: false,
+				loadding: false,
+				pullUpOn: true,
+				hasNextPage: false,
+				pullFlag: true,
+				navbarHeight:'',
+				nomoreText: '上拉显示更多',
+			}
+		},
+		onLoad(option) {
+			let self = this
+			this.clubID = option.clubID
+			this.currentTab = option.listType
+			//  高度自适应
+			uni.getSystemInfo({
+				success: function(res) {
+					let calc = res.windowHeight;
+					self.winHeight = calc-82;
+				}
+			});
+		},
+		methods: {
+			// 滚动切换标签样式
+			onChange (e) {
+				let index = e.target.current || e.detail.current;
+				if (this.isClickChange) {
+					this.currentTab = index;
+					this.isClickChange = false;
+					return;
+				}
+				this.isClickChange = false;
+				this.currentTab = index; 
+				this.checkCor();
+				this.pageNum = 1
+				this.pullUpOn = true //切换时隐藏
+				this.loadding =  false //切换时隐藏
+				this.nomoreText = ''
+				this.getOrderDatainit(this.currentTab,'tabChange')
+			},
+			// 点击标题切换当前页时改变样式
+			onClickTab (e) {
+				let tabIndex = e.target.dataset.current || e.currentTarget.dataset.current;
+				if (this.currentTab === tabIndex) {
+					return false;
+				} else {
+					this.isClickChange = true;
+					this.currentTab = tabIndex
+					this.pageNum = 1
+					this.pullUpOn = true //切换时隐藏
+					this.loadding =  false //切换时隐藏
+					this.getOrderDatainit(this.currentTab)
+				}
+			},
+			onClickScreenTab(index){
+				console.log(index)
+				this.screenTab = index
+				this.pageNum = 1
+				this.pullUpOn = true //切换时隐藏
+				this.loadding =  false //切换时隐藏
+				this.nomoreText = ''
+				this.getOrderDatainit(this.currentTab)
+			},
+			//判断当前滚动超过一屏时,设置tab标题滚动条。
+			checkCor: function() {
+				if (this.currentTab > 3) {
+					//这里距离按实际计算
+					this.scrollLeft = 300
+				} else {
+					this.scrollLeft = 0
+				}
+			},
+			getOrderDatainit(index,source){
+				setTimeout(()=>{this.skeletonShow = false},1500)
+				let orderItem = this.orderTabBar[index];
+				let listType = orderItem.listType;
+				if(source === 'tabChange' && orderItem.loaded === true){//tab切换只有第一次需要加载数据
+					return;
+				}
+				setTimeout(()=>{
+					this.$api.getComStorage('orderUserInfo').then((resolve) =>{
+						let params = {listType:index,clubID:resolve.clubID,orderSubmitType:this.screenTab,serviceProviderId:this.serviceProviderId,pageNum:1,pageSize:this.pageSize};
+						getSellerClubOrderList(params).then(response =>{
+							let orderList = response.data.results.filter(item=>{
+								//添加不同状态下订单的表现形式
+								item = Object.assign(item, this.orderStateExp(item.listType));
+								return item;
+							});
+							orderItem.orderList =[];
+							orderList.forEach(item=>{
+								orderItem.orderList.push(item);
+							})
+							//loaded新字段用于表示数据加载完毕,如果为空可以显示空白页
+							this.$set(orderItem, 'loaded', true);
+							this.hasNextPage = response.data.hasNextPage;
+							if(this.hasNextPage){
+								this.pullUpOn = false
+								this.nomoreText = '上拉显示更多'
+							}else{
+								if(orderItem.orderList.length < 2){
+									this.pullUpOn = true
+								}else{
+									this.pullUpOn = false
+									this.nomoreText = '已至底部'
+								}
+							}
+						}).catch(error =>{
+							this.$util.msg(error.msg,2000);
+						})
+					})
+				}, 600);	
+			}, 
+			getOnReachBottomData(index){//上拉加载
+				let params = {listType:index,orderSubmitType:this.screenTab,serviceProviderId:this.serviceProviderId,pageNum:this.pageNum+=1,pageSize:this.pageSize};
+				getSellerOrderList(params).then(response =>{
+					let orderItem = this.orderTabBar[index];
+					let resData = response.data.results
+					this.hasNextPage = response.data.hasNextPage;
+					orderItem.orderList = orderItem.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(error =>{
+					this.$util.msg(error.msg,2000)
+				})
+			},
+			scrolltolower() {
+				if(this.hasNextPage){
+					this.loadding = true
+					this.pullUpOn = true
+					this.getOnReachBottomData(this.currentTab);
+				}	
+			},
+			detail(id) {//订单详情跳转
+				this.isModalLayer = true;	
+				this.$api.navigateTo(`/seller/pages/order/order-details?listType=${this.currentTab}&orderID=${id}`)
+			},
+			handButtonConfirm(data) {//获取点击
+				this.handShowAlert(data)
+				this.btnoRderID = data.orderId
+			},
+			handShowAlert(data) {//执行
+				switch(data.type){
+					case 'delete':
+						this.handOrderDetele(data.orderId);
+						break
+					case 'cancel':
+						this.handCenceConfirm(data.orderId)
+						break
+					case 'confirm':
+						this.handOrderConfirm(data.orderId);
+						break
+				}
+			},
+			handOrderConfirm (id){//确认订单
+				this.$util.modal('提示','确认此订单?','确定','取消',true,() =>{
+					affirmOrder({orderID:id}).then(response =>{
+						this.$util.msg(response.msg,2000,true,'success');
+						setTimeout(() => {
+							this.getOrderDatainit(this.currentTab)
+						},2000)
+					}).catch(error =>{
+						this.$util.msg(error.msg,2000)
+					})
+				})
+			},
+			handOrderDetele(id){//删除订单
+				this.$util.modal('提示','确认删除该订单吗?','确定','取消',true,() =>{
+					deleteOrder({orderID:id}).then(response =>{
+						this.$util.msg(response.msg,2000,true,'success');
+						setTimeout(() => {
+							this.getOrderDatainit(this.currentTab)
+						},2000)
+					}).catch(error =>{
+						this.$util.msg(error.msg,2000)
+					})
+				})
+			},
+			handCenceConfirm(id){//取消订单
+				this.$util.modal('提示','确认取消该订单吗?','确定','取消',true,() =>{
+					cancelOrder({orderID:id}).then(response =>{
+						this.$util.msg(response.msg,2000,true,'success');
+						setTimeout(() => {
+							this.getOrderDatainit(this.currentTab)
+						},2000)
+					}).catch(error =>{
+						this.$util.msg(error.msg,2000)
+					})
+				})
+			},
+			handlSearchPath(){
+				this.$api.navigateTo('/seller/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.btnClubUserID}&serviceProviderId=${this.serviceProviderId}`,
+					imageUrl:'https://img.caimei365.com/group1/M00/03/95/Cmis216Sk_SABnOFABZCgCzFV_g063.png'
+				}
+			},
+			//订单状态文字和颜色
+			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;
+			},
+			orderPriceToFixed (n){
+				let price ='';
+				price = n.toFixed(2);
+				return price
+			},
+		},
+		onPageScroll(e) {
+			this.scrollTop = e.scrollTop;
+		},
+		onShow() {
+			this.isModalLayer = false;
+			this.getOrderDatainit(this.currentTab)
+		}
+	}
+</script>
+
+<style lang="scss">
+	/*tabbar start*/
+	::-webkit-scrollbar {
+		width: 0;
+		height: 0;
+		color: transparent;
+	}
+	.order-section-top{
+		width: 100%;
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 99;
+		background: #FFFFFF;
+		.tab-screen{
+			height: 60rpx;
+			width: 702rpx;
+			padding: 10rpx 24rpx;
+			border-top: 1px solid #F7F7F7;
+			border-bottom: 1px solid #F7F7F7;
+			display: flex;
+			justify-content: center;
+			justify-items: center;
+			.tab-screen-item{
+				flex: 1;
+				height: 60rpx;
+				border-radius: 10rpx;
+				background: #F7F7F7;
+				margin-right: 22rpx;
+				line-height: 66rpx;
+				font-size: $font-size-28;
+				color: #333333;
+				text-align: center;
+				&.active{
+					color: $color-system;
+				}
+				&:last-child{
+					margin-right: 0;
+				}
+			}
+		}
+	}
+	.tab-view::before {
+		content: '';
+		position: absolute;
+		border-bottom: 1rpx solid #eaeef1;
+		-webkit-transform: scaleY(0.5);
+		transform: scaleY(0.5);
+		bottom: 0;
+		right: 0;
+		left: 0;
+	}
+	.tab-view {
+		width: 100%;
+		height: 80rpx;
+		overflow: hidden;
+		box-sizing: border-box;
+		background: #fff;
+		white-space: nowrap;
+		border-top: 1px solid #F7F7F7;
+	}
+	.tab-bar-item {
+		padding: 0;
+		height: 80rpx;
+		min-width: 80rpx;
+		line-height: 80rpx;
+		margin: 0 28rpx;
+		display: inline-block;
+		text-align: center;
+		box-sizing: border-box;
+		&.active {
+			border-bottom: 6rpx solid $color-system;
+		}
+		.tab-bar-title {
+			height: 80rpx;
+			line-height: 80rpx;
+			font-size:$font-size-28;
+			color: $text-color;
+		}
+		&.active .tab-bar-title {
+			color: $color-system !important;
+		}
+	}
+	/*tabbar end*/
+	page{
+		background: #F7F7F7;
+	}
+	.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:0 24rpx;
+		background: #fff;
+		border-bottom: 20rpx solid #F7F7F7;
+	}
+	.order-title{
+		width: 100%;
+		height: auto;
+		.order-title-name{
+			width: 100%;
+			height: 72rpx;
+			border-bottom: 1px solid #F7F7F7;
+			line-height: 72rpx;
+			text-align: left;
+			font-size: $font-size-28;
+			color: #333333;
+		}
+		.order-title-t{
+			width: 100%;
+			height: 44rpx;
+			float: left;
+			padding-top: 8rpx;
+			.bage-buss{
+				display: block;
+				float: left;
+				width: 64rpx;
+				height: 30rpx;
+				background:linear-gradient(132deg,rgba(255,177,0,1) 0%,rgba(255,127,0,1) 100%);
+				border-radius: 6rpx;
+				line-height: 30rpx;
+				font-size: $font-size-24;
+				text-align: center;
+				color: #FFFFFF;
+				margin-top: 10rpx;
+			}
+			.bage-auto{
+				display: block;
+				float: left;
+				width: 64rpx;
+				height: 30rpx;
+				background:linear-gradient(135deg,rgba(0,216,255,1) 0%,rgba(22,139,225,1) 100%);
+				border-radius: 6rpx;
+				line-height: 30rpx;
+				font-size: $font-size-24;
+				text-align: center;
+				color: #FFFFFF;
+				margin-top: 10rpx;
+			}
+			.bage-text{
+				font-size: $font-size-28;
+				line-height: 44rpx;
+				text-align: left;
+				color: $color-system;
+				margin-left: 15rpx;
+			}
+		}
+		.order-title-b{
+			width: 100%;
+			height: 40rpx;
+			float: left;
+			margin-top: 8rpx;
+			.order-title-btxt{
+				float: left;
+				font-size: $font-size-28;
+				line-height: 40rpx;
+				color: #999999;
+				text-align: lef
+			}
+			.order-title-tip{
+				float: right;
+				font-size: $font-size-28;
+				line-height: 40rpx;
+				text-align: right;
+				color: #FF2A2A;
+			}
+		}
+	}
+	.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>

+ 148 - 64
seller/pages/order/order-list.vue

@@ -1,5 +1,5 @@
 <template>
-	<view class="container" :style="{paddingTop:navbarHeight+'px'}">
+	<view class="container" :style="{paddingTop:(navbarHeight+82)+'px'}">
 		<!-- 自定义返回 -->
 		<header-back :systeminfo='systeminfo' 
 					 :navbar-data='nvabarData' 
@@ -15,11 +15,15 @@
 					<text class="tab-bar-title">{{item.text}}</text>
 				</view>
 			</scroll-view>
+			<view class="tab-screen">
+				<view v-for="(item,index) in screenTabBar" :key="index" class="tab-screen-item" :class="[screenTab == index ? 'active' : '']"
+				 :data-current="index" @tap.stop="onClickScreenTab(index)">{{item.text}}</view>
+			</view>
 		</view>
 		<swiper class="tab-content" :current="currentTab" duration="80" @animationfinish="onChange" :style="{height:winHeight+'px'}" >
 			<swiper-item v-for="(tabItem,index) in orderTabBar" :key="index">
 				<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="false" :loadingType="5"></tui-skeleton>
-				<scroll-view scroll-y class="scoll-y tui-skeleton" @scrolltolower="scrolltolower">
+				<scroll-view scroll-y class="scoll-y tui-skeleton" @scrolltolower="scrolltolower" :style="{height:winHeight+'px'}" >
 					<view  :class="{'tui-order-list':scrollTop >= 0}" class="tui-skeleton clearfix">
 						<!-- 空白页 -->
 						<empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0" :typeIndex="currentTab" :navbarHeight="navbarHeight"></empty>
@@ -27,11 +31,16 @@
 						<view v-else class="tui-order-content">
 							<view  class="tui-order-item" v-for="(order,orderIndex) in tabItem.orderList" :key="orderIndex" @click.stop="detail(order.orderID)">
 								<view class="order-title">
+									<view class="order-title-name">{{order.clubName}}</view>
 									<view class="order-title-t">
-										<view class="order-title-num tui-skeleton-fillet">订单号:{{order.orderNo}}</view>
+										<text class="bage-buss tui-skeleton-fillet" v-if="order.orderSubmitType == 3">协销</text>
+										<text class="bage-auto tui-skeleton-fillet" v-if="order.orderSubmitType == 0 || order.orderSubmitType == 2">自主</text>
+										<text class="bage-text tui-skeleton-fillet">订单号:{{order.orderNo}}({{order.orderID}})</text>
+									</view>
+									<view class="order-title-b">
+										<view class="order-title-btxt tui-skeleton-fillet">下单时间:{{order.orderTime}}</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">
@@ -126,6 +135,11 @@
 							  {listType: 4,text: '已发货',orderList: []},
 							  {listType: 5,text: '退货/款',orderList: []},
 							 ],
+				screenTabBar:[
+								{type:0,text:'全部订单'},
+								{type:1,text:'机构自主订单'},
+								{type:2,text:'协销订单'}
+							],			 
 				headerBtnPosi:	this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
 				systeminfo:  this.setSysteminfo(),		 //获取设备信息
 				nvabarData: {							 //顶部自定义导航
@@ -133,8 +147,10 @@
 					showSearch: 1,
 					title: '我的订单 ', // 导航栏中间的标题
 				},
+				CustomBar:this.CustomBar,// 顶部导航栏高度
 				winHeight: "", //窗口高度
 				currentTab: 0, //预设当前项的值
+				screenTab:0,   //筛选预设当前项的值
 				scrollLeft: 0 ,//tab标题的滚动条位置
 				serviceProviderId:0,//协销用户ID
 				orderData: [],
@@ -158,30 +174,30 @@
 			}
 		},
 		onLoad(option) {
-			let that = this;
-			if(option.type ==='detele'){that.isDelete = true}
-			that.currentTab = option.listType
-			that.getHeaderTopHeight()//设置自定义导航高度
+			let self = this;
+			if(option.type ==='detele'){self.isDelete = true}
+			self.currentTab = option.listType
+			self.getHeaderTopHeight()//设置自定义导航高度
 			//  高度自适应
 			uni.getSystemInfo({
 				success: function(res) {
 					let calc = res.windowHeight;
-					that.winHeight = calc;
+					self.winHeight = calc-self.CustomBar-82;
 				}
 			});
 		},
 		methods: {
 			// 滚动切换标签样式
-			onChange: function(e) {
+			onChange (e) {
 				let index = e.target.current || e.detail.current;
 				if (this.isClickChange) {
 					this.currentTab = index;
-					this.isClickChange = false;
+					this.isClickChange = false
 					return;
 				}
-				this.isClickChange = false;
-				this.currentTab = index; 
-				this.checkCor();
+				this.isClickChange = false
+				this.currentTab = index
+				this.checkCor()
 				this.pageNum = 1
 				this.pullUpOn = true //切换时隐藏
 				this.loadding =  false //切换时隐藏
@@ -189,12 +205,12 @@
 				this.getOrderDatainit(this.currentTab,'tabChange')
 			},
 			// 点击标题切换当前页时改变样式
-			onClickTab: function(e) {
+			onClickTab (e) {
 				let tabIndex = e.target.dataset.current || e.currentTarget.dataset.current;
 				if (this.currentTab === tabIndex) {
 					return false;
 				} else {
-					this.isClickChange = true;
+					this.isClickChange = true
 					this.currentTab = tabIndex
 					this.pageNum = 1
 					this.pullUpOn = true //切换时隐藏
@@ -202,6 +218,15 @@
 					this.getOrderDatainit(this.currentTab)
 				}
 			},
+			onClickScreenTab(index){
+				console.log(index)
+				this.screenTab = index
+				this.pageNum = 1
+				this.pullUpOn = true //切换时隐藏
+				this.loadding =  false //切换时隐藏
+				this.nomoreText = ''
+				this.getOrderDatainit(this.currentTab)
+			},
 			//判断当前滚动超过一屏时,设置tab标题滚动条。
 			checkCor: function() {
 				if (this.currentTab > 3) {
@@ -221,7 +246,13 @@
 				setTimeout(()=>{
 					this.$api.getStorage().then((resolve) =>{
 						this.serviceProviderId = resolve.serviceProviderID
-						let params = {listType:index,serviceProviderId:this.serviceProviderId,pageNum:1,pageSize:this.pageSize};
+						let params = {
+								listType:index,
+								orderSubmitType:this.screenTab,
+								serviceProviderId:this.serviceProviderId,
+								pageNum:1,
+								pageSize:this.pageSize,
+							};
 						getSellerOrderList(params).then(response =>{
 							let orderList = response.data.results.filter(item=>{
 								//添加不同状态下订单的表现形式
@@ -253,8 +284,13 @@
 				}, 600);	
 			}, 
 			getOnReachBottomData(index){//上拉加载
-				this.pageNum+=1
-				let params = {listType:index,serviceProviderId:this.serviceProviderId,pageNum:1,pageSize:this.pageSize};
+				let params = {
+						listType:index,
+						orderSubmitType:this.screenTab,
+						serviceProviderId:this.serviceProviderId,
+						pageNum:this.pageNum+=1,
+						pageSize:this.pageSize,
+					};
 				getSellerOrderList(params).then(response =>{
 					let orderItem = this.orderTabBar[index];
 					let resData = response.data.results
@@ -439,6 +475,33 @@
 		left: 0;
 		z-index: 99;
 		background: #FFFFFF;
+		.tab-screen{
+			height: 60rpx;
+			width: 702rpx;
+			padding: 10rpx 24rpx;
+			border-top: 1px solid #F7F7F7;
+			border-bottom: 1px solid #F7F7F7;
+			display: flex;
+			justify-content: center;
+			justify-items: center;
+			.tab-screen-item{
+				flex: 1;
+				height: 60rpx;
+				border-radius: 10rpx;
+				background: #F7F7F7;
+				margin-right: 22rpx;
+				line-height: 66rpx;
+				font-size: $font-size-28;
+				color: #333333;
+				text-align: center;
+				&.active{
+					color: $color-system;
+				}
+				&:last-child{
+					margin-right: 0;
+				}
+			}
+		}
 	}
 	.tab-view::before {
 		content: '';
@@ -468,26 +531,20 @@
 		display: inline-block;
 		text-align: center;
 		box-sizing: border-box;
+		&.active {
+			border-bottom: 6rpx solid $color-system;
+		}
+		.tab-bar-title {
+			height: 80rpx;
+			line-height: 80rpx;
+			font-size:$font-size-28;
+			color: $text-color;
+		}
+		&.active .tab-bar-title {
+			color: $color-system !important;
+		}
 	}
-	.tab-bar-title {
-		height: 80rpx;
-		line-height: 80rpx;
-		font-size:$font-size-28;
-		color: $text-color;
-	}
-
-	.active {
-		border-bottom: 6rpx solid $color-system;
-	}
-
-	.active .tab-bar-title {
-		color: $color-system !important;
-	}
-
 	/*tabbar end*/
-	.scoll-y {
-		height: 100%;
-	}
 	page{
 		background: #F7F7F7;
 	}
@@ -501,7 +558,6 @@
 		height: auto;
 	}
 	.tui-order-list {
-		margin-top: 90rpx;
 		width: 100%;
 		position: relative;
 	}
@@ -516,34 +572,52 @@
 	.order-title{
 		width: 100%;
 		height: auto;
+		.order-title-name{
+			width: 100%;
+			height: 72rpx;
+			border-bottom: 1px solid #F7F7F7;
+			line-height: 72rpx;
+			text-align: left;
+			font-size: $font-size-28;
+			color: #333333;
+		}
 		.order-title-t{
 			width: 100%;
-			height: 40rpx;
+			height: 44rpx;
 			float: left;
-			font-size: $font-size-28;
-			line-height: 40rpx;
-			font-weight: bold;
-			.order-title-num{
+			padding-top: 8rpx;
+			.bage-buss{
+				display: block;
+				float: left;
+				width: 64rpx;
+				height: 30rpx;
+				background:linear-gradient(132deg,rgba(255,177,0,1) 0%,rgba(255,127,0,1) 100%);
+				border-radius: 6rpx;
+				line-height: 30rpx;
+				font-size: $font-size-24;
+				text-align: center;
+				color: #FFFFFF;
+				margin-top: 10rpx;
+			}
+			.bage-auto{
+				display: block;
 				float: left;
+				width: 64rpx;
+				height: 30rpx;
+				background:linear-gradient(135deg,rgba(0,216,255,1) 0%,rgba(22,139,225,1) 100%);
+				border-radius: 6rpx;
+				line-height: 30rpx;
+				font-size: $font-size-24;
+				text-align: center;
+				color: #FFFFFF;
+				margin-top: 10rpx;
+			}
+			.bage-text{
+				font-size: $font-size-28;
+				line-height: 44rpx;
 				text-align: left;
 				color: $color-system;
-				.tag{
-					display: inline-block;
-					width: 60rpx;
-					height: 36rpx;
-					line-height: 36rpx;
-					font-size: $font-size-20;
-					color: #FFFFFF;
-					background: $btn-confirm;
-					text-align: center;
-					border-radius: 18rpx;
-					margin-right: 15rpx;
-				}
-			}
-			.order-title-tip{
-				float: right;
-				text-align: right;
-				color: #FF2A2A;
+				margin-left: 15rpx;
 			}
 		}
 		.order-title-b{
@@ -551,10 +625,20 @@
 			height: 40rpx;
 			float: left;
 			margin-top: 8rpx;
-			font-size: $font-size-28;
-			line-height: 40rpx;
-			color: #999999;
-			text-align: left;
+			.order-title-btxt{
+				float: left;
+				font-size: $font-size-28;
+				line-height: 40rpx;
+				color: #999999;
+				text-align: lef
+			}
+			.order-title-tip{
+				float: right;
+				font-size: $font-size-28;
+				line-height: 40rpx;
+				text-align: right;
+				color: #FF2A2A;
+			}
 		}
 	}
 	.goods-title{

+ 62 - 18
seller/pages/search/search-order.vue

@@ -14,8 +14,7 @@
 		<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>
+					搜索历史<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>
@@ -31,11 +30,16 @@
 					<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-name">这里是机构的名称</view>
 								<view class="order-title-t">
-									<view class="order-title-num tui-skeleton-fillet">订单号:{{order.orderNo}}</view>
+									<text class="bage-buss tui-skeleton-fillet" v-if="order.orderSubmitType == 3">协销</text>
+									<text class="bage-auto tui-skeleton-fillet" v-if="order.orderSubmitType == 0 || order.orderSubmitType == 2">自主</text>
+									<text class="bage-text tui-skeleton-fillet">订单号:{{order.orderNo}}({{order.orderID}})</text>
+								</view>
+								<view class="order-title-b">
+									<view class="order-title-btxt tui-skeleton-fillet">下单时间:{{order.orderTime}}</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">
@@ -620,22 +624,52 @@
 	.order-title{
 		width: 100%;
 		height: auto;
+		.order-title-name{
+			width: 100%;
+			height: 72rpx;
+			border-bottom: 1px solid #F7F7F7;
+			line-height: 72rpx;
+			text-align: left;
+			font-size: $font-size-28;
+			color: #333333;
+		}
 		.order-title-t{
 			width: 100%;
-			height: 40rpx;
+			height: 44rpx;
 			float: left;
-			font-size: $font-size-28;
-			line-height: 40rpx;
-			font-weight: bold;
-			.order-title-num{
+			padding-top: 8rpx;
+			.bage-buss{
+				display: block;
 				float: left;
+				width: 64rpx;
+				height: 30rpx;
+				background:linear-gradient(132deg,rgba(255,177,0,1) 0%,rgba(255,127,0,1) 100%);
+				border-radius: 6rpx;
+				line-height: 30rpx;
+				font-size: $font-size-24;
+				text-align: center;
+				color: #FFFFFF;
+				margin-top: 10rpx;
+			}
+			.bage-auto{
+				display: block;
+				float: left;
+				width: 64rpx;
+				height: 30rpx;
+				background:linear-gradient(135deg,rgba(0,216,255,1) 0%,rgba(22,139,225,1) 100%);
+				border-radius: 6rpx;
+				line-height: 30rpx;
+				font-size: $font-size-24;
+				text-align: center;
+				color: #FFFFFF;
+				margin-top: 10rpx;
+			}
+			.bage-text{
+				font-size: $font-size-28;
+				line-height: 44rpx;
 				text-align: left;
 				color: $color-system;
-			}
-			.order-title-tip{
-				float: right;
-				text-align: right;
-				color: #FF2A2A;
+				margin-left: 15rpx;
 			}
 		}
 		.order-title-b{
@@ -643,10 +677,20 @@
 			height: 40rpx;
 			float: left;
 			margin-top: 8rpx;
-			font-size: $font-size-28;
-			line-height: 40rpx;
-			color: #999999;
-			text-align: left;
+			.order-title-btxt{
+				float: left;
+				font-size: $font-size-28;
+				line-height: 40rpx;
+				color: #999999;
+				text-align: lef
+			}
+			.order-title-tip{
+				float: right;
+				font-size: $font-size-28;
+				line-height: 40rpx;
+				text-align: right;
+				color: #FF2A2A;
+			}
 		}
 	}
 	.goods-title{

+ 44 - 0
utils/util.js

@@ -0,0 +1,44 @@
+/* 常用工具函数 */
+export const msg = (title, duration=1500, mask=true, icon='none')=>{
+	//统一提示方便全局修改
+	if(Boolean(title) === false){return;}
+	uni.showToast({
+		title,
+		duration,
+		mask,
+		icon
+	});
+}
+export const modal = (title,content,confirmText,cancelText,showCancel=false,callBack) =>{
+	uni.showModal({
+		title,
+		content,
+		confirmText,
+		cancelText,
+		confirmColor:'#E15616',
+		showCancel,
+		success: function (res) {
+			if (res.confirm) {
+				callBack()
+			}
+		}
+	});
+}	
+export const json = type=>{
+	//模拟异步请求数据
+	return new Promise(resolve=>{
+		setTimeout(()=>{
+			// console.log(resolve+'======='+type);
+			resolve(Json[type]);
+		}, 500)
+	})
+}
+
+export const prePage = ()=>{
+	let pages = getCurrentPages();
+	let prePage = pages[pages.length - 2];
+	// #ifdef H5
+	return prePage;
+	// #endif
+	return prePage.$vm;
+}