浏览代码

commit -供应商发货 订单

zhengjinyi 4 年之前
父节点
当前提交
0d45df84eb

+ 0 - 15
api/other.js

@@ -21,21 +21,6 @@ export function queryMember(params) {
 		})
 	})
 }
-/**
- *售后无忧,购物须知
- * @param
- */
-export function queryAfterSale(params) {
-	return new Promise(function(resolve,reject) {
-		request.get('/home/afterSale',params, res => {
-			if(res.code == 0){
-				resolve(res)
-			}else{
-				reject(res)
-			}
-		})
-	})
-}
 /**
  *机构协议,用户协议,隐私权政策
  *@param helpPageID 隐私权政策id:1013,平台规则id:1023,机构协议:1036

+ 80 - 537
components/cm-module/cm-seller/home.vue

@@ -1,177 +1,59 @@
 <template>
-	<view class="container home clearfix" :style="{paddingTop:CustomBar+'px'}">	
-		<cm-custom :navbar-data='nvabarData'></cm-custom>
-		<!-- 头部轮播 -->
+	<view class="container home clearfix" :style="{paddingTop:CustomBar+'px'}">
+		<customer ref="customer" :navbar-data='nvabarData'></customer>
+		<!-- 主页内容 -->
 		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5"></tui-skeleton>
 		<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" 
-						  :class="[idx===current?'swiper__dots-long':'none']" 
-						  :data-index="current" class="swiper__dots-item">
-					</view>	  
-				</view>
-			</view>
-			<view class="cate-section clearfix">
-				<!-- 自定义分类导航栏 -->
-				<view class="tabbar clearfix">
-					<view class="cate-item" v-for="(nav,idx) in productsClassifyList" :key="idx" @click.stop="navigateToGoods(nav)">
-						<image class="tui-skeleton-circular" :src="nav.classifyImage"></image>
-						<text class="tui-skeleton-fillet">{{nav.classifyName}}</text>
-					</view>
-				</view>
-				<!-- 优选分类 -->
-				<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>
-					</view>
-					<view class="cate-item-info" @click.stop="this.$api.navToListPage({type:'2',value:secondModulesName})">
-						<image class="tui-skeleton-circular" :src="secondModulesImage"></image>
-						<text class="tui-skeleton-fillet">{{secondModulesName}}</text>
-					</view>
-					<view class="cate-item-info" @click="showTost">
-						<image class="tui-skeleton-circular" :src="navInforList[0].icon"></image>
-						<text class="tui-skeleton-fillet">{{navInforList[0].text}}</text>
-					</view>
-					<view class="cate-item-info">
-						<!-- #ifdef MP-WEIXIN -->
-						<button class="contact-btn" open-type="contact" @bindcontact="handleContact">
-							<image class="tui-skeleton-circular" :src="navInforList[1].icon"></image>
-						</button>	
-						<!-- #endif -->
-						<text class="tui-skeleton-fillet">{{navInforList[1].text}}</text>
-					</view>
-				</view>
-			</view>
-			<!-- 热销商品 -->
-			<view class="hotgoods-section">
-				<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">
-					<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="floor-item-act">
-									<template v-if="item.actStatus==1">
-										<view class="floor-tags" v-if="item.promotions.type == 1 && item.promotions.mode==1">{{item.promotions.name}}<text v-if="hasLogin">:¥{{item.price | NumFormat}}</text></view>
-										<view class="floor-tags" v-else>{{item.promotions.name}}</view>	
-									</template>
-									<template v-if="item.actStatus ==0  &&  item.ladderPriceFlag==1">
-										<view class="floor-tags">阶梯价格</view>	
-									</template>	
-								</view>
-								<view class="" v-if="hasLogin">
-									<view v-if="userIdentity == 4">
-										<view class="title-none" v-show="item.price1TextFlag == '1'">
-											<text class="p big">¥未公开价格</text>
-										</view>
-										<view class="title-none" v-show="item.price1TextFlag == '2'">
-											<text class="p big">¥价格仅会员可见</text>
-											<text class="p btn" @click.stop="this.$api.navigateTo(`/pages/login/apply?clubStatus=${clubStatus}`)">去升级</text>
-										</view>
-										<view class="price tui-skeleton-rect" v-show="item.price1TextFlag == '0'">
-											<text class="p sm">¥</text>
-											<text class="p big">{{ item.price | NumFormat}}</text>
-										</view>
-									</view>
-									<view v-else>
-										<view class="title-none" v-if="item.price1TextFlag == '1'">
-											<text class="p big">未公开价格</text>
-										</view>
-										<view class="price tui-skeleton-rect" v-else :class="item.promotions.type == 1 && item.promotions.mode==1 ? 'none' : ''">
-											<text class="p sm">¥</text>
-											<text class="p big">{{item.price | NumFormat}}</text>
-										</view>
-									</view>
-								</view>
-								<view v-else class="no-price">
-									<view class="p-stars">
-										<text class="p-no">¥</text>
-										<uni-stars :stars="parseInt(item.price1Grade)" :fontSize="36" :widthInfo="180"></uni-stars>
-									</view>
-								</view>	
-							</view>
-						</view>
-					</view>
-				</view>	
-			</view>
-			<!-- 底部 -->
-			<view class="footer-section ">
-				<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="scaleToFill"></image>
-				</view>
-				<view class="f-tab-section">
-					<!-- 优选分类 -->
-					<view class="tabbar clearfix">
-						<view class="cate-item" @click="showTost">
-							<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-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-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-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>
-						<text class="">采美365网</text>
-					</view>
-				</view>
-			</view>	
+			<!-- 轮播 -->
+			<banner :list="bannerImageList" v-if="isRequest"></banner>
+			<!-- 金刚区菜单 -->
+			<navbars :list="navBarsList" v-if="isRequest"></navbars>
+		</view>	
+		<view class="container-section tui-skeleton">
+			<!-- 推荐专区 -->
+			<hot-product :list="organizeProducts" :userIdentity="userIdentity" v-if="isRequest"></hot-product>
+			<!-- 楼层 -->
+			<pages-product v-if="isRequest"></pages-product>
+			<!-- 商品专题 -->
+			<special-product v-if="isRequest"></special-product>
+			<!-- 供应商专题 -->
+			<supplier-list v-if="isRequest"></supplier-list>
 		</view>
-		<!-- 活动弹窗 -->
-		<!-- <activityAlert :show="isActivity" @click="handleClick" @cancel="handleCancelClick"></activityAlert> -->
-		<!-- 透明模态层 -->
-		<modal-layer v-if='modallayer'></modal-layer>
+		<!-- 侧边 -->
+		<scroll-top v-if="isScrollTop"></scroll-top>
 	</view>
 </template>
 
 <script>
 	import tuiSkeleton from "@/components/tui-skeleton/tui-skeleton"
 	import authorize from '@/common/config/authorize.js'
-	import modalLayer from "@/components/modal-layer"
-	import cmCustom from '@/components/cm-module/homeIndex/customer.vue'
-	import activityAlert from '@/components/cm-module/activity/activity_on_1.vue'
-	import uniStars from '@/components/uni-stars/uni-stars.vue'
-	import { userInfoLogin, queryHomeInfo } from "@/api/use.js"
+	import customer from '@/components/cm-module/homeIndex/customer.vue'
+	import banner from '@/components/cm-module/homeIndex/banner.vue'
+	import navbars from '@/components/cm-module/homeIndex/navbars.vue'
+	import hotProduct from '@/components/cm-module/homeIndex/hotProduct.vue'
+	import pagesProduct from '@/components/cm-module/homeIndex/pagesProduct.vue'
+	import specialProduct from '@/components/cm-module/homeIndex/specialProduct.vue'
+	import supplierList from '@/components/cm-module/homeIndex/supplierList.vue'
+	import { userInfoLogin } from "@/api/use.js"
 	import { mapState,mapMutations} from 'vuex';
 	export default {
 		components:{
 			tuiSkeleton,
-			modalLayer,
-			cmCustom,
-			uniStars,
-			activityAlert
+			customer,
+			hotProduct,
+			banner,
+			navbars,
+			pagesProduct,
+			specialProduct,
+			supplierList
 		},
 		data() {
 			return {
+				webviewStyles: {
+					progress: {
+						color: '#FF3333'
+					}
+				},
 				nvabarData: {//顶部自定义导航
 					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
 					showSearch: 0,
@@ -188,8 +70,10 @@
 				modallayer:false,
 				isLogin:false,
 				bannerImageList:[],
+				navBarsList:[],
 				skeletonShow: true,
 				userIdentity:'',
+				RecommendList:[],//热门推荐
 				organizeProducts:[],//常用商品
 				productsClassifyList:[
 					{classifyImage:'https://admin-b.caimei365.com/userfiles/1/images/photo/2020/04/%E7%BB%84%201238.png',classifyName:'采美'},
@@ -212,13 +96,15 @@
 					{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:''},
-				]
+				],
+				isScrollTop:false,
+				isRequest:false
 			}
 		},
 		created() {
 			this.$api.getStorage().then((resolve) =>{
 				this.userID = resolve.userID
-				this.getSellerHomeInfo()
+				this.getHomeInformation()
 			})
 		},
 		filters: {
@@ -230,12 +116,9 @@
 			...mapState(['hasLogin','userInfo','isActivity'])
 		},
 		methods: {
-			getSellerHomeInfo(){
-				this.getHomeInformation()
-				this.getOrganizeProducts()
-			},		
-			getHomeInformation(){		
-				this.CommonService.GetHomeModulesDataInfo({}).then(res =>{
+			...mapMutations(['login','logout']),
+			getHomeInformation(){//初始化首页数据	
+				this.CommonService.GetHomeModulesDataInfo({ userId:this.userID }).then(res =>{
 					let data = res.data;
 					this.bannerImageList = data.bannerImageList
 					this.mallPageModules = data.mallPageModules
@@ -245,12 +128,18 @@
 					this.secondModulesImage= data.secondModulesImage
 					this.thirdModulesName= data.thirdModulesName
 					this.productsClassifyList = data.productsClassifyList
-					this.skeletonShow = false;
 					this.$store.commit('updateAllNum',data.shoppingCartCount)
+					this.getOrganizeProducts()				
 				}).catch(error =>{
 					this.$util.msg(error.msg,2000)
 				})
 			},
+			GetHomeRecommendInfo(){//首页热门推荐
+				this.CommonService.GetHomeRecommendInfo().then(response =>{
+					this.RecommendList=response.data
+					this.getProductPrice()
+				})
+			},
 			getOrganizeProducts(){//获取模块三商品
 				this.ProductService.queryProductPreferred({userId:this.userID,preferredFlag:100,pageNum:1,pageSize:6}).then(res =>{
 					this.organizeProducts = res.data.results
@@ -268,7 +157,9 @@
 				productIds = productIdArr.join(",");
 				this.ProductService.querySearchProductPrice({userId: this.userID,productIds:productIds}).then(response =>{
 					this.organizeProducts = this.ReturnNewProducts(this.organizeProducts,response.data);
+					console.log(this.organizeProducts)
 					this.skeletonShow = false;
+					this.isRequest = true
 				}).catch(error =>{
 					this.$util.msg(error.msg,2000)
 				})
@@ -284,6 +175,16 @@
 				});
 				return NewArray
 			},
+			PromotionsFormat(promo){//促销活动类型数据处理
+				if(promo!=null){
+					if(promo.type == 1 && promo.mode == 1){
+						return true
+					}else{
+						return false
+					}
+				}
+				return false
+			},
 			//轮播图切换修改背景色
 			swiperChange(e) {
 				const index = e.detail.current;
@@ -310,8 +211,7 @@
 			handleCancelClick(data){
 				this.$store.commit('setActivity',data)
 			},
-			//分类导航跳转
-			navToListPage(nav){
+			navToListPage(nav){//三个分类模块跳转
 				let self = this;
 				uni.setStorage({
 					key: 'commodity_id',
@@ -321,7 +221,7 @@
 					}
 				})
 			},
-			navigateToGoods(nav){
+			navigateToGoods(nav){//分类导航跳转
 				let self = this;
 				uni.setStorage({
 					key: 'commodity_id',
@@ -334,14 +234,14 @@
 			navToDetailPage(id) {//跳转商品详情页
 				this.modallayer = true;
 				this.$api.navigateTo(`/pages/goods/product?id=${id}`)
-				this.modallayer = false;
 			},
 			handleContact(e){
 				console.log(e.detail.path)
 				console.log(e.detail.query)
 			},
 			showTost(){
-				this.$util.msg("正在开发中,敬请期待~",2000)
+				this.$util.msg("功能开发中,敬请期待~",2000)
+				// this.$api.navigateTo(`/seller/pages/login/login`)
 				// uni.navigateToMiniProgram({
 				// 	appId: 'wx5a5cda32926f55ac',
 				// 	path: '/pages/tabBar/home/home',
@@ -379,10 +279,14 @@
 			}else{
 				this.inputActive = 'float'
 			}	
+			if(e.scrollTop>400){
+				this.isScrollTop = true
+			}else{
+				this.isScrollTop = false
+			}	
 		},
 		onPullDownRefresh() {//下拉刷新
 			this.getHomeInformation()
-			this.getOrganizeProducts()
 			uni.stopPullDownRefresh()
 		},
 		onShareAppMessage(res){//分享转发
@@ -399,373 +303,12 @@
 </script>
 
 <style lang="scss">
-	page,.home{
-		width: 100%;
-		height: auto;
-	}	
-	.container-home{
-		background: #FFFFFF;
+	page{
+		background-color: #FFFFFF;
 	}
-	.swiper-banner-box{
+	.container-section{
 		width: 100%;
-		height: 360rpx;
-		padding-top:100rpx;
-		background:#FFFFFF url(https://img.caimei365.com/group1/M00/03/B0/Cmis217Z9LCALu9wAAAv45Bdpsk814.png)no-repeat;
-		position: relative;
-		background-size: cover;
-	}	
-	.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);
-		margin-top: 16rpx;
-		.banner-item{
-			border-radius: 24rpx;
-		}
-		.tui-slide-image {
-			width: 100%;
-			height: 340rpx;
-			display: block;
-		}
-	}
-	.swiper__dots-box{
-		position: absolute;
-		bottom: 30rpx;
-		left: 0;
-		right: 0;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		.swiper__dots-item{
-			width: 8rpx;
-			height: 8rpx;
-			border-radius: 100%;
-			margin-left: 6px;
-			background-color:rgba(255,255,255,.7);
-		}
-		.swiper__dots-long{
-			width: 35rpx;
-			height: 8rpx;
-			border-radius: 4rpx;
-			background-color: #ffff;
-			transition: all 0.4s;
-		}
-	}
-	/* 分类 */
-	.cate-section {
-		width: 702rpx;
 		height: auto;
-		padding:34rpx 24rpx 14rpx 24rpx; 
-		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;
-			margin-right:28rpx;
-			display: flex;
-			float: left;
-			flex-direction: column;
-			align-items: center;
-			font-size: $font-size-26;
-			color: $text-color;
-			line-height: 36rpx;
-			&:last-child{
-				margin-right: 0;
-			}
-			&:nth-child(5n){
-				margin-right: 0;
-			}
-			image {
-				width: 90rpx;
-				height: 90rpx;
-				margin-bottom: 8rpx;
-				border-radius: 32rpx;
-			}	
-		}
-		.cate-item-info {
-			width: 118rpx;
-			margin-right:59.5rpx;
-			display: flex;
-			float: left;
-			flex-direction: column;
-			align-items: center;
-			font-size: $font-size-26;
-			color: $text-color;
-			line-height: 36rpx;
-			&:last-child{
-				margin-right: 0;
-			}
-			image {
-				width: 90rpx;
-				height: 90rpx;
-				margin-bottom: 16rpx;
-				border-radius: 32rpx;
-			}	
-			button.contact-btn{
-				width: 118rpx;
-				height: 90rpx;
-				margin: 0;
-				padding: 0;
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-				box-sizing: border-box;
-				text-align: center;
-				text-decoration: none;
-				border-radius: 0;
-				-webkit-tap-highlight-color: transparent;
-				overflow: hidden;
-				background-color:#FFFFFF;
-				margin-bottom: 16rpx;
-				image{
-					width: 90rpx;
-					height: 90rpx;
-					margin-bottom: 0;
-					border-radius: 32rpx;
-				}
-			}
-		}
-	}
-	.hotgoods-section{
-		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;
-				font-size: $font-size-28;
-				color: $text-color;
-				text-align: right;
-			}
-			.icon-xiayibu{
-				flex: 0.6;
-				color: $text-color;
-				text-align: left;
-				font-size: $font-size-24;
-			}
-		}
-	}	
-	.hotgoods-swiper{
-		width: 100%;
-		height: auto;				
-		overflow: hidden;
-		padding-top: 24rpx;
-		background: #FFFFFF;
-		border-radius: 20rpx;
-		margin-bottom: 20rpx;
-		// box-shadow:0px 3px 6px rgba(225,86,22,0.07);
-		.scoll-wrapper{
-			width: 702rpx;
-			height: auto;
-			padding:24rpx 24rpx 0 24rpx;
-			background: #F7F7F7;
-			border-radius: 20rpx;
-			.floor-item{
-				width: 341rpx;
-				height: 568rpx;
-				margin-right: 20rpx;
-				font-size: $font-size-24;
-				color: $text-color;
-				background: #FFFFFF;
-				line-height: 36rpx;
-				border-radius: 20rpx;
-				margin-bottom: 20rpx;
-				float: left;
-				box-sizing: border-box;
-				padding-bottom: 16rpx;
-				&:nth-child(2n){
-					margin-right: 0;
-				}
-				image{
-					width: 341rpx;
-					height: 341rpx;
-					border-radius: 20rpx 20rpx 0 0;
-					display: block;
-					margin-bottom: 20rpx;
-				}
-				.floor-item-content{
-					width: 311rpx;
-					padding: 0 15rpx;
-				}
-				.floor-item-act{
-					display: block;
-					width: 100%;
-					height: 68rpx;
-					text-align: center;
-					box-sizing: border-box;
-					padding: 16rpx 0;
-					margin-top: 8rpx;
-					.floor-tags{
-						float: left;
-						height: 36rpx;
-						border-radius: 4rpx;
-						background-color: rgba(225, 86, 22, 0.1);
-						line-height: 36rpx;
-						color: $color-system;
-						text-align: center;
-						display: inline-block;
-						padding:0 16rpx;
-						font-size: $font-size-20;
-					}
-				}
-				.title-none{
-					font-size: $font-size-26;
-					color: #FF2A2A;
-					line-height: 44rpx;
-					.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: 54rpx;
-					line-height: 54rpx;
-					display: flex;
-					box-sizing: border-box;
-					.p-no{
-						font-size: $font-size-30;
-						color: $text-color;
-						display: block;
-						float: left;
-					}
-					.p-stars{
-						width: 230rpx;
-						float: left;
-					}
-				}
-				.price{
-					color: #FF2A2A;
-					line-height: 44rpx;
-					&.none{
-						text-decoration: line-through;
-						color: #999999;
-					}
-					.sm{
-						font-size: $font-size-24;
-					}
-					.big{
-						font-size: $font-size-28;
-					}
-				}
-			}
-		}
-	}
-	.footer-section{
-		width: 702rpx;
-		padding: 0  24rpx 0 24rpx;
-		background: #FFFFFF;
-		border-radius: 20rpx;
-		.s-header{
-			display:flex;
-			align-items:center;
-			height: 80rpx;
-			line-height: 80rpx;
-			.tip{
-				flex: 1;
-				font-size: 30rpx;
-				color: $text-color;
-				font-weight: bolder;
-			}
-		}
-		.f-content{
-			width: 100%;
-			image{
-				width: 100%;
-				height: 350rpx;
-			}
-		}
-		/*底部服务导航*/
-		.f-tab-section {
-			width: 100%;
-			height: auto;
-			padding: 38rpx 0; 
-			background: #fff;
-			/*底部服务导航*/
-			.cate-item {
-				width: 99rpx;
-				margin-right: 102rpx;
-				float: left;
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-				font-size: $font-size-24;
-				color: $text-color;
-				&:last-child{
-					margin-right: 0;
-				}
-				image {
-					width: 75rpx;
-					height: 75rpx;
-					margin-bottom: 8rpx;
-					border-radius: 50%;
-				}
-			}
-		}	
-		.f-text{
-			.logo{
-				width: 80rpx;
-				height: 80rpx;
-				float: left;
-				margin: 0 6rpx;
-			}
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			font-size: $font-size-24;
-			color: $text-color;
-			line-height: 80rpx;
-			padding-top: 20rpx;
-		}
+		background-color: #F7F7F7;
 	}
 </style>

+ 1 - 1
components/cm-module/modelAlert/sellerShareAlert.vue

@@ -135,7 +135,7 @@
 					font-size: $font-size-28;
 					text-align: center;
 					color: #FFFFFF;
-					border-radius: 14rpx;
+					border-radius: 35rpx;
 					padding: 0;
 					margin: 0 15rpx;
 					&.btn-cancel{

+ 1 - 1
components/cm-module/modelAlert/shareAlert.vue

@@ -135,7 +135,7 @@
 					font-size: $font-size-28;
 					text-align: center;
 					color: #FFFFFF;
-					border-radius: 14rpx;
+					border-radius: 35rpx;
 					padding: 0;
 					margin: 0 15rpx;
 					&.btn-cancel{

+ 7 - 7
components/cm-module/modelAlert/supplierShareAlert.vue

@@ -151,22 +151,22 @@
 				height: auto;
 				margin-top: 40rpx;
 				.btn{
-					width: 100%;
-					height: 88rpx;
-					float: left;
+					width: 80%;
+					height: 70rpx;
+					margin: 0 auto;
 					background: $btn-confirm;
-					line-height: 88rpx;
+					line-height: 70rpx;
 					font-size: $font-size-28;
 					text-align: center;
 					color: #FFFFFF;
-					border-radius: 14rpx;
+					border-radius: 35rpx;
 					padding: 0;
 				}
 				.btn-none{
 					width: 100%;
-					height: 88rpx;
+					height: 70rpx;
 					float: left;
-					line-height: 88rpx;
+					line-height: 70rpx;
 					font-size: $font-size-28;
 					text-align: center;
 					color: #666666;

+ 12 - 14
components/cm-module/orderDetails/supplierDetaileButton.vue

@@ -1,11 +1,11 @@
 <template name="button">
-	<view class="button-template" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
+	<view class="button-template clearfix" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
 		<!-- 底部按钮 -->
-		<view class="btn btn-color" @click.stop="onShareCode">
+		<view class="btn btn-cancel" @click.stop="onShareCode">
 			<view class="tips" v-if="shareCode">分享码:{{shareCode}}</view>
 			分享订单
 		</view>	
-		<view class="btn btn-color" @click.stop="btnConfirm('record')">发货记录</view>
+		<view class="btn btn-cancel" @click.stop="btnConfirm('record')">发货记录</view>
 		<view class="btn btn-color" v-if="btnState.isDeliver"  @click.stop="btnConfirm('deliver')">发货</view>
 	</view>
 </template>
@@ -87,7 +87,7 @@
 
 <style lang="scss">
 	.button-template{
-		width: 702rpx;
+		width: 100%;
 		padding:0 24rpx;
 		height: auto;
 		background-color: #FFF;
@@ -95,6 +95,7 @@
 		box-shadow: 0px 3px 10px rgba(51, 51, 51, 0.5);
 		padding-bottom: 24rpx;
 		z-index: 999;
+		box-sizing: border-box;
 		.share-code{
 			width: 200rpx;
 			height:  64rpx;
@@ -115,12 +116,16 @@
 			font-size:$font-size-26;
 			color: #FFFFFF;
 			text-align: center;
-			border-radius: 10rpx;
+			border-radius: 32rpx;
 			float: right;
 		}
 		.btn-color{
-			background: $btn-confirm;
-			margin: 22rpx 0 22rpx 22rpx;
+			background: #ff7a51;
+		}
+		.btn-cancel{
+			background:#FFE6DC;
+			color: #E15616;
+			border: 1px solid #E15616;
 			.tips{
 				width: 160rpx;
 				height: 34rpx;
@@ -148,13 +153,6 @@
 				}
 			}
 		}
-		.btn-cancel{
-			background:#FFFFFF;
-			color: #999999;
-			float: left;
-			margin: 22rpx 0;
-			text-align: left;
-		}
 		.btn-delete{
 			background:linear-gradient(315deg,rgba(255,163,3,1) 0%,rgba(255,53,1,1) 100%);
 		}

+ 203 - 0
components/cm-module/orderDetails/supplierListButton.vue

@@ -0,0 +1,203 @@
+<template name="button">
+	<view class="button-template clearfix">
+		<!-- 底部按钮 -->
+		<view class="btn btn-cancel" @click.stop="onShareCode(orderInfo.shopOrderID)">
+			<view class="tips" v-if="shareCode">分享码:{{shareCode}}</view>
+			分享订单
+		</view>	
+		<view class="btn btn-cancel" @click.stop="btnConfirm('record',orderInfo)">发货记录</view>
+		<view class="btn btn-color" v-if="btnState.isDeliver"  @click.stop="btnConfirm('deliver',orderInfo)">发货</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		name:"button",
+		props:{
+			status:{
+				type:Number
+			},
+			orderInfo:{
+				type:Object
+			},
+			shareCode:{
+				type:String,
+				default: ''
+			}
+		},
+		watch:{
+			status:{
+				handler:function(val){
+					this.initData(val)
+				},
+				deep:true//对象内部的属性监听,也叫深度监听
+			}
+		},
+		data() {
+			return{
+				btnState:this.initStatus(),
+				isIphoneX:this.$store.state.isIphoneX,
+				mapStateArr:[
+					{label:'isDeliver',val:[1,2],status: true},
+				]
+			}
+		},
+		created(){
+			this.initData(this.status)
+		},
+		computed: {
+
+		},
+		methods:{
+			initData(resVal) {
+				/**
+				 * @分享按钮统一显示
+				 * @按钮根据状态显示
+				 * @(1,2)显示[发货]按钮
+				 */
+				this.btnState = this.initStatus()
+				this.mapStateArr.forEach(el => {
+					el.val.forEach(value => {
+						if(resVal === value){
+							this.btnState[el.label] = el.status
+							//console.log(this.btnState[el.label]);
+						}
+					})
+				})
+			},
+			initStatus(){
+				let btnState= {
+						isQuery: false,
+						isDelete: false,
+						isCancel: false,
+						isConfirm: false,
+					}
+				return 	btnState
+			},
+			getShareCode(code){
+				this.shareCode = code
+			},
+			onShareCode(shopOrderID){
+				console.log(shopOrderID)
+				this.$parent.isShareModal = true
+				this.$parent.btnoRderID = shopOrderID
+				this.$emit('shareConfirm')
+			},
+			btnConfirm(type,orderInfo){
+				console.log(orderInfo)
+				let data = {type:type, orderInfo:orderInfo}
+				this.$emit('buttonConfirm',data)
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.button-template{
+		width: 100%;
+		height: auto;
+		background-color: #FFF;
+		// -webkit-box-shadow: 0px 3px 10px rgba(51, 51, 51, 0.5);
+		// box-shadow: 0px 3px 10px rgba(51, 51, 51, 0.5);
+		z-index: 999;
+		box-sizing: border-box;
+		.share-code{
+			width: 200rpx;
+			height:  64rpx;
+			line-height: 64rpx;
+			color: #2A45FF;
+			text-align: left;
+			position: absolute;
+			font-size: $font-size-28;
+			font-weight: bold;
+			left: 24rpx;
+			top: 24rpx;
+		}
+		.btn{
+			width: 160rpx;
+			height:  64rpx;
+			margin:22rpx;
+			line-height: 64rpx;
+			font-size:$font-size-26;
+			color: #FFFFFF;
+			text-align: center;
+			border-radius: 32rpx;
+			float: right;
+			margin-right: 0;
+		}
+		.btn-color{
+			background: #ff7a51;
+		}
+		.btn-cancel{
+			background:#FFE6DC;
+			color: #E15616;
+			border: 1px solid #E15616;
+			.tips{
+				width: 160rpx;
+				height: 34rpx;
+				padding: 10rpx 10rpx;
+				background:linear-gradient(45deg,rgba(0,0,0,1) 0%,rgba(87,87,87,1) 100%);
+				box-shadow:0px 2px 4px 0px rgba(0,0,0,0.2);
+				border-radius: 8rpx;
+				position: absolute;
+				color: #FFFFFF;
+				line-height: 34rpx;
+				font-size: $font-size-24;
+				text-align: left;
+				right: 24rpx;
+				top: -45rpx;
+				&:before{
+					content: "";
+					width: 25rpx;
+					height: 25rpx;
+					background:linear-gradient(45deg,rgba(0,0,0,1) 0%,rgba(87,87,87,1) 100%);
+					position: absolute;
+					bottom: -8rpx;
+					right: 30rpx;
+					z-index: -1;
+					transform:rotate(45deg);
+				}
+			}
+		}
+		.btn-delete{
+			background:linear-gradient(315deg,rgba(255,163,3,1) 0%,rgba(255,53,1,1) 100%);
+		}
+		.btn-query{
+			background:linear-gradient(135deg,rgba(255,212,129,1) 0%,rgba(198,129,0,1) 100%);
+		}
+		.btn-confirm{
+			background:linear-gradient(315deg,rgba(231,0,0,1) 0%,rgba(255,104,1,1) 100%);
+		}
+		.btn-share{
+			background:linear-gradient(315deg,rgba(0,212,150,1) 0%,rgba(126,243,174,1) 100%);
+			margin-right: 0;
+			position: relative;
+			.tips{
+				width: 160rpx;
+				height: 34rpx;
+				padding: 10rpx 10rpx;
+				background:linear-gradient(45deg,rgba(0,0,0,1) 0%,rgba(87,87,87,1) 100%);
+				box-shadow:0px 2px 4px 0px rgba(0,0,0,0.2);
+				border-radius: 8rpx;
+				position: absolute;
+				color: #FFFFFF;
+				line-height: 34rpx;
+				font-size: $font-size-24;
+				text-align: left;
+				right: 0;
+				top: -65rpx;
+				&:before{
+					content: "";
+					width: 25rpx;
+					height: 25rpx;
+					background:linear-gradient(45deg,rgba(0,0,0,1) 0%,rgba(87,87,87,1) 100%);
+					position: absolute;
+					bottom: -8rpx;
+					right: 30rpx;
+					z-index: -1;
+					transform:rotate(45deg);
+				}
+			}
+		}
+	}
+</style>

+ 80 - 537
components/cm-module/supplier/home.vue

@@ -1,177 +1,59 @@
 <template>
-	<view class="container home clearfix" :style="{paddingTop:CustomBar+'px'}">	
-		<cm-custom :navbar-data='nvabarData'></cm-custom>
-		<!-- 头部轮播 -->
+	<view class="container home clearfix" :style="{paddingTop:CustomBar+'px'}">
+		<customer ref="customer" :navbar-data='nvabarData'></customer>
+		<!-- 主页内容 -->
 		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5"></tui-skeleton>
 		<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" 
-						  :class="[idx===current?'swiper__dots-long':'none']" 
-						  :data-index="current" class="swiper__dots-item">
-					</view>	  
-				</view>
-			</view>
-			<view class="cate-section clearfix">
-				<!-- 自定义分类导航栏 -->
-				<view class="tabbar clearfix">
-					<view class="cate-item" v-for="(nav,idx) in productsClassifyList" :key="idx" @click.stop="navigateToGoods(nav)">
-						<image class="tui-skeleton-circular" :src="nav.classifyImage"></image>
-						<text class="tui-skeleton-fillet">{{nav.classifyName}}</text>
-					</view>
-				</view>
-				<!-- 优选分类 -->
-				<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>
-					</view>
-					<view class="cate-item-info" @click.stop="this.$api.navToListPage({type:'2',value:secondModulesName})">
-						<image class="tui-skeleton-circular" :src="secondModulesImage"></image>
-						<text class="tui-skeleton-fillet">{{secondModulesName}}</text>
-					</view>
-					<view class="cate-item-info" @click="showTost">
-						<image class="tui-skeleton-circular" :src="navInforList[0].icon"></image>
-						<text class="tui-skeleton-fillet">{{navInforList[0].text}}</text>
-					</view>
-					<view class="cate-item-info">
-						<!-- #ifdef MP-WEIXIN -->
-						<button class="contact-btn" open-type="contact" @bindcontact="handleContact">
-							<image class="tui-skeleton-circular" :src="navInforList[1].icon"></image>
-						</button>	
-						<!-- #endif -->
-						<text class="tui-skeleton-fillet">{{navInforList[1].text}}</text>
-					</view>
-				</view>
-			</view>
-			<!-- 热销商品 -->
-			<view class="hotgoods-section">
-				<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">
-					<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="floor-item-act">
-									<template v-if="item.actStatus==1">
-										<view class="floor-tags" v-if="item.promotions.type == 1 && item.promotions.mode==1">{{item.promotions.name}}<text v-if="hasLogin">:¥{{item.price | NumFormat}}</text></view>
-										<view class="floor-tags" v-else>{{item.promotions.name}}</view>	
-									</template>
-									<template v-if="item.actStatus ==0  &&  item.ladderPriceFlag==1">
-										<view class="floor-tags">阶梯价格</view>	
-									</template>	
-								</view>
-								<view class="" v-if="hasLogin">
-									<view v-if="userIdentity == 4">
-										<view class="title-none" v-show="item.price1TextFlag == '1'">
-											<text class="p big">¥未公开价格</text>
-										</view>
-										<view class="title-none" v-show="item.price1TextFlag == '2'">
-											<text class="p big">¥价格仅会员可见</text>
-											<text class="p btn" @click.stop="this.$api.navigateTo(`/pages/login/apply?clubStatus=${clubStatus}`)">去升级</text>
-										</view>
-										<view class="price tui-skeleton-rect" v-show="item.price1TextFlag == '0'">
-											<text class="p sm">¥</text>
-											<text class="p big">{{ item.price | NumFormat}}</text>
-										</view>
-									</view>
-									<view v-else>
-										<view class="title-none" v-if="item.price1TextFlag == '1'">
-											<text class="p big">未公开价格</text>
-										</view>
-										<view class="price tui-skeleton-rect" v-else :class="item.promotions.type == 1 && item.promotions.mode==1 ? 'none' : ''">
-											<text class="p sm">¥</text>
-											<text class="p big">{{item.price | NumFormat}}</text>
-										</view>
-									</view>
-								</view>
-								<view v-else class="no-price">
-									<view class="p-stars">
-										<text class="p-no">¥</text>
-										<uni-stars :stars="parseInt(item.price1Grade)" :fontSize="36" :widthInfo="180"></uni-stars>
-									</view>
-								</view>	
-							</view>
-						</view>
-					</view>
-				</view>	
-			</view>
-			<!-- 底部 -->
-			<view class="footer-section ">
-				<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="scaleToFill"></image>
-				</view>
-				<view class="f-tab-section">
-					<!-- 优选分类 -->
-					<view class="tabbar clearfix">
-						<view class="cate-item" @click="showTost">
-							<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-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-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-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>
-						<text class="">采美365网</text>
-					</view>
-				</view>
-			</view>	
+			<!-- 轮播 -->
+			<banner :list="bannerImageList" v-if="isRequest"></banner>
+			<!-- 金刚区菜单 -->
+			<navbars :list="navBarsList" v-if="isRequest"></navbars>
+		</view>	
+		<view class="container-section tui-skeleton">
+			<!-- 推荐专区 -->
+			<hot-product :list="organizeProducts" :userIdentity="userIdentity" v-if="isRequest"></hot-product>
+			<!-- 楼层 -->
+			<pages-product v-if="isRequest"></pages-product>
+			<!-- 商品专题 -->
+			<special-product v-if="isRequest"></special-product>
+			<!-- 供应商专题 -->
+			<supplier-list v-if="isRequest"></supplier-list>
 		</view>
-		<!-- 活动弹窗 -->
-		<!-- <activityAlert :show="isActivity" @click="handleClick" @cancel="handleCancelClick"></activityAlert> -->
-		<!-- 透明模态层 -->
-		<modal-layer v-if='modallayer'></modal-layer>
+		<!-- 侧边 -->
+		<scroll-top v-if="isScrollTop"></scroll-top>
 	</view>
 </template>
 
 <script>
 	import tuiSkeleton from "@/components/tui-skeleton/tui-skeleton"
 	import authorize from '@/common/config/authorize.js'
-	import modalLayer from "@/components/modal-layer"
-	import cmCustom from '@/components/cm-module/homeIndex/customer.vue'
-	import activityAlert from '@/components/cm-module/activity/activity_on_1.vue'
-	import uniStars from '@/components/uni-stars/uni-stars.vue'
-	import { userInfoLogin, queryHomeInfo } from "@/api/use.js"
+	import customer from '@/components/cm-module/homeIndex/customer.vue'
+	import banner from '@/components/cm-module/homeIndex/banner.vue'
+	import navbars from '@/components/cm-module/homeIndex/navbars.vue'
+	import hotProduct from '@/components/cm-module/homeIndex/hotProduct.vue'
+	import pagesProduct from '@/components/cm-module/homeIndex/pagesProduct.vue'
+	import specialProduct from '@/components/cm-module/homeIndex/specialProduct.vue'
+	import supplierList from '@/components/cm-module/homeIndex/supplierList.vue'
+	import { userInfoLogin } from "@/api/use.js"
 	import { mapState,mapMutations} from 'vuex';
 	export default {
 		components:{
 			tuiSkeleton,
-			modalLayer,
-			cmCustom,
-			uniStars,
-			activityAlert
+			customer,
+			hotProduct,
+			banner,
+			navbars,
+			pagesProduct,
+			specialProduct,
+			supplierList
 		},
 		data() {
 			return {
+				webviewStyles: {
+					progress: {
+						color: '#FF3333'
+					}
+				},
 				nvabarData: {//顶部自定义导航
 					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
 					showSearch: 0,
@@ -188,8 +70,10 @@
 				modallayer:false,
 				isLogin:false,
 				bannerImageList:[],
+				navBarsList:[],
 				skeletonShow: true,
 				userIdentity:'',
+				RecommendList:[],//热门推荐
 				organizeProducts:[],//常用商品
 				productsClassifyList:[
 					{classifyImage:'https://admin-b.caimei365.com/userfiles/1/images/photo/2020/04/%E7%BB%84%201238.png',classifyName:'采美'},
@@ -212,13 +96,15 @@
 					{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:''},
-				]
+				],
+				isScrollTop:false,
+				isRequest:false
 			}
 		},
 		created() {
 			this.$api.getStorage().then((resolve) =>{
 				this.userID = resolve.userID
-				this.getSellerHomeInfo()
+				this.getHomeInformation()
 			})
 		},
 		filters: {
@@ -230,12 +116,9 @@
 			...mapState(['hasLogin','userInfo','isActivity'])
 		},
 		methods: {
-			getSellerHomeInfo(){
-				this.getHomeInformation()
-				this.getOrganizeProducts()
-			},		
-			getHomeInformation(){		
-				this.CommonService.GetHomeModulesDataInfo({}).then(res =>{
+			...mapMutations(['login','logout']),
+			getHomeInformation(){//初始化首页数据	
+				this.CommonService.GetHomeModulesDataInfo({ userId:this.userID }).then(res =>{
 					let data = res.data;
 					this.bannerImageList = data.bannerImageList
 					this.mallPageModules = data.mallPageModules
@@ -245,12 +128,18 @@
 					this.secondModulesImage= data.secondModulesImage
 					this.thirdModulesName= data.thirdModulesName
 					this.productsClassifyList = data.productsClassifyList
-					this.skeletonShow = false;
 					this.$store.commit('updateAllNum',data.shoppingCartCount)
+					this.getOrganizeProducts()				
 				}).catch(error =>{
 					this.$util.msg(error.msg,2000)
 				})
 			},
+			GetHomeRecommendInfo(){//首页热门推荐
+				this.CommonService.GetHomeRecommendInfo().then(response =>{
+					this.RecommendList=response.data
+					this.getProductPrice()
+				})
+			},
 			getOrganizeProducts(){//获取模块三商品
 				this.ProductService.queryProductPreferred({userId:this.userID,preferredFlag:100,pageNum:1,pageSize:6}).then(res =>{
 					this.organizeProducts = res.data.results
@@ -268,7 +157,9 @@
 				productIds = productIdArr.join(",");
 				this.ProductService.querySearchProductPrice({userId: this.userID,productIds:productIds}).then(response =>{
 					this.organizeProducts = this.ReturnNewProducts(this.organizeProducts,response.data);
+					console.log(this.organizeProducts)
 					this.skeletonShow = false;
+					this.isRequest = true
 				}).catch(error =>{
 					this.$util.msg(error.msg,2000)
 				})
@@ -284,6 +175,16 @@
 				});
 				return NewArray
 			},
+			PromotionsFormat(promo){//促销活动类型数据处理
+				if(promo!=null){
+					if(promo.type == 1 && promo.mode == 1){
+						return true
+					}else{
+						return false
+					}
+				}
+				return false
+			},
 			//轮播图切换修改背景色
 			swiperChange(e) {
 				const index = e.detail.current;
@@ -310,8 +211,7 @@
 			handleCancelClick(data){
 				this.$store.commit('setActivity',data)
 			},
-			//分类导航跳转
-			navToListPage(nav){
+			navToListPage(nav){//三个分类模块跳转
 				let self = this;
 				uni.setStorage({
 					key: 'commodity_id',
@@ -321,7 +221,7 @@
 					}
 				})
 			},
-			navigateToGoods(nav){
+			navigateToGoods(nav){//分类导航跳转
 				let self = this;
 				uni.setStorage({
 					key: 'commodity_id',
@@ -334,14 +234,14 @@
 			navToDetailPage(id) {//跳转商品详情页
 				this.modallayer = true;
 				this.$api.navigateTo(`/pages/goods/product?id=${id}`)
-				this.modallayer = false;
 			},
 			handleContact(e){
 				console.log(e.detail.path)
 				console.log(e.detail.query)
 			},
 			showTost(){
-				this.$util.msg("正在开发中,敬请期待~",2000)
+				this.$util.msg("功能开发中,敬请期待~",2000)
+				// this.$api.navigateTo(`/seller/pages/login/login`)
 				// uni.navigateToMiniProgram({
 				// 	appId: 'wx5a5cda32926f55ac',
 				// 	path: '/pages/tabBar/home/home',
@@ -379,10 +279,14 @@
 			}else{
 				this.inputActive = 'float'
 			}	
+			if(e.scrollTop>400){
+				this.isScrollTop = true
+			}else{
+				this.isScrollTop = false
+			}	
 		},
 		onPullDownRefresh() {//下拉刷新
 			this.getHomeInformation()
-			this.getOrganizeProducts()
 			uni.stopPullDownRefresh()
 		},
 		onShareAppMessage(res){//分享转发
@@ -399,373 +303,12 @@
 </script>
 
 <style lang="scss">
-	page,.home{
-		width: 100%;
-		height: auto;
-	}	
-	.container-home{
-		background: #FFFFFF;
+	page{
+		background-color: #FFFFFF;
 	}
-	.swiper-banner-box{
+	.container-section{
 		width: 100%;
-		height: 360rpx;
-		padding-top:100rpx;
-		background:#FFFFFF url(https://img.caimei365.com/group1/M00/03/B0/Cmis217Z9LCALu9wAAAv45Bdpsk814.png)no-repeat;
-		position: relative;
-		background-size: cover;
-	}	
-	.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);
-		margin-top: 16rpx;
-		.banner-item{
-			border-radius: 24rpx;
-		}
-		.tui-slide-image {
-			width: 100%;
-			height: 340rpx;
-			display: block;
-		}
-	}
-	.swiper__dots-box{
-		position: absolute;
-		bottom: 30rpx;
-		left: 0;
-		right: 0;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		.swiper__dots-item{
-			width: 8rpx;
-			height: 8rpx;
-			border-radius: 100%;
-			margin-left: 6px;
-			background-color:rgba(255,255,255,.7);
-		}
-		.swiper__dots-long{
-			width: 35rpx;
-			height: 8rpx;
-			border-radius: 4rpx;
-			background-color: #ffff;
-			transition: all 0.4s;
-		}
-	}
-	/* 分类 */
-	.cate-section {
-		width: 702rpx;
 		height: auto;
-		padding:34rpx 24rpx 14rpx 24rpx; 
-		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;
-			margin-right:28rpx;
-			display: flex;
-			float: left;
-			flex-direction: column;
-			align-items: center;
-			font-size: $font-size-26;
-			color: $text-color;
-			line-height: 36rpx;
-			&:last-child{
-				margin-right: 0;
-			}
-			&:nth-child(5n){
-				margin-right: 0;
-			}
-			image {
-				width: 90rpx;
-				height: 90rpx;
-				margin-bottom: 8rpx;
-				border-radius: 32rpx;
-			}	
-		}
-		.cate-item-info {
-			width: 118rpx;
-			margin-right:59.5rpx;
-			display: flex;
-			float: left;
-			flex-direction: column;
-			align-items: center;
-			font-size: $font-size-26;
-			color: $text-color;
-			line-height: 36rpx;
-			&:last-child{
-				margin-right: 0;
-			}
-			image {
-				width: 90rpx;
-				height: 90rpx;
-				margin-bottom: 16rpx;
-				border-radius: 32rpx;
-			}	
-			button.contact-btn{
-				width: 118rpx;
-				height: 90rpx;
-				margin: 0;
-				padding: 0;
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-				box-sizing: border-box;
-				text-align: center;
-				text-decoration: none;
-				border-radius: 0;
-				-webkit-tap-highlight-color: transparent;
-				overflow: hidden;
-				background-color:#FFFFFF;
-				margin-bottom: 16rpx;
-				image{
-					width: 90rpx;
-					height: 90rpx;
-					margin-bottom: 0;
-					border-radius: 32rpx;
-				}
-			}
-		}
-	}
-	.hotgoods-section{
-		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;
-				font-size: $font-size-28;
-				color: $text-color;
-				text-align: right;
-			}
-			.icon-xiayibu{
-				flex: 0.6;
-				color: $text-color;
-				text-align: left;
-				font-size: $font-size-24;
-			}
-		}
-	}	
-	.hotgoods-swiper{
-		width: 100%;
-		height: auto;				
-		overflow: hidden;
-		padding-top: 24rpx;
-		background: #FFFFFF;
-		border-radius: 20rpx;
-		margin-bottom: 20rpx;
-		// box-shadow:0px 3px 6px rgba(225,86,22,0.07);
-		.scoll-wrapper{
-			width: 702rpx;
-			height: auto;
-			padding:24rpx 24rpx 0 24rpx;
-			background: #F7F7F7;
-			border-radius: 20rpx;
-			.floor-item{
-				width: 341rpx;
-				height: 568rpx;
-				margin-right: 20rpx;
-				font-size: $font-size-24;
-				color: $text-color;
-				background: #FFFFFF;
-				line-height: 36rpx;
-				border-radius: 20rpx;
-				margin-bottom: 20rpx;
-				float: left;
-				box-sizing: border-box;
-				padding-bottom: 16rpx;
-				&:nth-child(2n){
-					margin-right: 0;
-				}
-				image{
-					width: 341rpx;
-					height: 341rpx;
-					border-radius: 20rpx 20rpx 0 0;
-					display: block;
-					margin-bottom: 20rpx;
-				}
-				.floor-item-content{
-					width: 311rpx;
-					padding: 0 15rpx;
-				}
-				.floor-item-act{
-					display: block;
-					width: 100%;
-					height: 68rpx;
-					text-align: center;
-					box-sizing: border-box;
-					padding: 16rpx 0;
-					margin-top: 8rpx;
-					.floor-tags{
-						float: left;
-						height: 36rpx;
-						border-radius: 4rpx;
-						background-color: rgba(225, 86, 22, 0.1);
-						line-height: 36rpx;
-						color: $color-system;
-						text-align: center;
-						display: inline-block;
-						padding:0 16rpx;
-						font-size: $font-size-20;
-					}
-				}
-				.title-none{
-					font-size: $font-size-26;
-					color: #FF2A2A;
-					line-height: 44rpx;
-					.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: 54rpx;
-					line-height: 54rpx;
-					display: flex;
-					box-sizing: border-box;
-					.p-no{
-						font-size: $font-size-30;
-						color: $text-color;
-						display: block;
-						float: left;
-					}
-					.p-stars{
-						width: 230rpx;
-						float: left;
-					}
-				}
-				.price{
-					color: #FF2A2A;
-					line-height: 44rpx;
-					&.none{
-						text-decoration: line-through;
-						color: #999999;
-					}
-					.sm{
-						font-size: $font-size-24;
-					}
-					.big{
-						font-size: $font-size-28;
-					}
-				}
-			}
-		}
-	}
-	.footer-section{
-		width: 702rpx;
-		padding: 0  24rpx 0 24rpx;
-		background: #FFFFFF;
-		border-radius: 20rpx;
-		.s-header{
-			display:flex;
-			align-items:center;
-			height: 80rpx;
-			line-height: 80rpx;
-			.tip{
-				flex: 1;
-				font-size: 30rpx;
-				color: $text-color;
-				font-weight: bolder;
-			}
-		}
-		.f-content{
-			width: 100%;
-			image{
-				width: 100%;
-				height: 350rpx;
-			}
-		}
-		/*底部服务导航*/
-		.f-tab-section {
-			width: 100%;
-			height: auto;
-			padding: 38rpx 0; 
-			background: #fff;
-			/*底部服务导航*/
-			.cate-item {
-				width: 99rpx;
-				margin-right: 102rpx;
-				float: left;
-				display: flex;
-				flex-direction: column;
-				align-items: center;
-				font-size: $font-size-24;
-				color: $text-color;
-				&:last-child{
-					margin-right: 0;
-				}
-				image {
-					width: 75rpx;
-					height: 75rpx;
-					margin-bottom: 8rpx;
-					border-radius: 50%;
-				}
-			}
-		}	
-		.f-text{
-			.logo{
-				width: 80rpx;
-				height: 80rpx;
-				float: left;
-				margin: 0 6rpx;
-			}
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			font-size: $font-size-24;
-			color: $text-color;
-			line-height: 80rpx;
-			padding-top: 20rpx;
-		}
+		background-color: #F7F7F7;
 	}
 </style>

+ 56 - 42
components/cm-module/supplier/user.vue

@@ -3,51 +3,53 @@
 		<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-main" v-if="hasLogin">
 					<view class="header-icon"><image :src="headpic == null? '../../../static/temp/icon-seller@3x.png' : headpic" mode=""></image></view>
 					<view class="header-text">
 						<view class="user-item">
 							<text class="u-h1">{{name}}</text>
 							<text class="u-tips">供应商</text>
 						</view>
-						<view class="user-item"><text class="u-shop">我的店铺</text><text class="iconfont icon-jinrudianpu"></text></view>
+						<view class="user-item" @click="navigator('/supplier/pages/user/my-shop')">
+							<text class="u-shop">我的店铺</text><text class="iconfont icon-jinrudianpu"></text>
+						</view>
 					</view>
 				</view>
 				<!-- 订单 -->
 				<view class="user-order">
-					<view class="tab-title" @click="navigator('/seller/pages/order/order-list?listType=0')">
+					<view class="tab-title">
 						<text class="cell-tit">我的商品</text>
 					</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-item" @click="navigator('/supplier/pages/user/my-product?listType=0')" hover-class="common-hover"  :hover-stay-time="50">
 							<view class="order-icon">
 								<text class="iconfont icon-quanbushangpin"></text>
-								<text 	v-if="beforeConfirmCount>0" 
+								<text 	v-if="allNum>0" 
 										class="uni-badge uni-badge-error uni-small uni-badge--small icon-num" 
-										:class="[beforeConfirmCount < 10 ? 'goleft':'']">
-										{{beforeConfirmCount >= 99? '99+' : beforeConfirmCount}}
+										:class="[allNum < 10 ? 'goleft':'']">
+										{{ allNum | BadgeType }}
 								</text>
 							</view>
 							<text class="order-t">全部商品</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-item" @click="navigator('/supplier/pages/user/my-product?listType=1')"  hover-class="common-hover" :hover-stay-time="50">
 							<view class="order-icon">
 								<text class="iconfont icon-yishangjia"></text>
-								<text  v-if="beforePayCount >0" 
+								<text  v-if="upNum >0" 
 									   class="uni-badge uni-badge-error uni-small uni-badge--small icon-num " 
-									   :class="[beforePayCount < 10 ? 'goleft':'']">
-									   {{beforePayCount >= 99? '99+' : beforePayCount}}
+									   :class="[upNum < 10 ? 'goleft':'']">
+									   {{ upNum | BadgeType }}
 								</text>
 							</view>
 							<text class="order-t">已上架</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-item" @click="navigator('/supplier/pages/user/my-product?listType=2')" hover-class="common-hover"  :hover-stay-time="50">
 							<view class="order-icon">
 								<text class="iconfont icon-yixiajia"></text>
-								<text   v-if="beforeShipCount >0" 
+								<text   v-if="downNum >0" 
 										class="uni-badge uni-badge-error uni-small uni-badge--small icon-num" 
-										:class="[beforeShipCount < 10 ? 'goleft':'']">
-										{{beforeShipCount >= 99? '99+' : beforeShipCount}}
+										:class="[downNum < 10 ? 'goleft':'']">
+										{{ downNum | BadgeType  }}
 								</text>
 							</view>
 							<text class="order-t">已下架</text>
@@ -58,7 +60,7 @@
 			<!-- 底部跳转 -->
 			<view class="foot-list">
 				<view class="list-cell-item">
-					<view class="list-cell" hover-class="cell-hover" :hover-stay-time="50" @click="navigator('')">
+					<view class="list-cell" hover-class="cell-hover" :hover-stay-time="50" @click="navigator('/supplier/pages/order/order-list')">
 						<text class="cell-icon"><text class="iconfont icon-wodedingdan"></text></text>
 						<text class="cell-tit">我的订单</text>
 						<text class="cell-more iconfont icon-xiayibu"></text>
@@ -69,10 +71,6 @@
 					<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-icon"><text class="iconfont" :class="item.icon"></text></text>
 						<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>
@@ -80,7 +78,7 @@
 					<view class="list-cell" hover-class="cell-hover" :hover-stay-time="50">
 						<text class="cell-icon"><text class="iconfont icon-lianxiwomen" :class="item.icon"></text></text>
 						<text class="cell-tit">联系我们</text>
-						<text class="cell-more" @click="toPhone">{{contactNumber}}</text>
+						<text class="cell-more" @click="toPhone">{{ contactNumber }}</text>
 					</view>
 					<view class="list-cell last" @click="this.$api.navigateTo('/pages/user/about/about')" hover-class="cell-hover" :hover-stay-time="50">
 						<text class="cell-icon"><text class="iconfont icon-guanyuwomen" :class="item.icon"></text></text>
@@ -121,20 +119,31 @@
 				headpic:'',
 				userId:'',
 				skeletonShow:true,
+				contactNumber:0,
 				orderNum:0,//机构自主下单订单数
-				beforeConfirmCount:10,//全部商品
-				beforePayCount:5, 	//已上架
-				beforeShipCount:120, //已下架
+				allNum:0,//全部商品
+				upNum:0, 	//已上架
+				downNum:0, //已下架
 				firstList:[
-					{name:'运营人员管理',path:'/pages/user/operator/list',icon:'icon-yunyingrenyuanguanli'},
-					{name:'我的资料',path:'/pages/login/information',icon:'icon-wodeziliao'},
-					{name:'账户设置',path:'/pages/user/setting/setting',icon:'icon-zhanghushezhi'},
+					{name:'运营人员管理',path:'/supplier/pages/user/operator/list',icon:'icon-yunyingrenyuanguanli'},
+					{name:'我的资料',path:'/supplier/pages/login/information',icon:'icon-wodeziliao'},
+					{name:'账户设置',path:'/supplier/pages/user/setting/setting',icon:'icon-zhanghushezhi'},
 				]
 			}
 		},
 		created() {
 			this.initData()
 		},
+		filters: {
+			NumFormat:function(text) {//处理金额
+				return Number(text).toFixed(2);
+			},
+			BadgeType(n){
+				let num ='';
+				if( n>100 ){ num = '99+' } else{ num = n;}
+				return num;
+			},
+		},
 		computed: {
 			...mapState(['hasLogin','userInfo'])
 		},
@@ -150,6 +159,7 @@
 							uni.removeStorageSync('sessionid')
 							uni.setStorageSync('sessionid','JSESSIONID='+response.data.sessionId)
 							this.getUserSellerHome()
+							this.getPhone()
 						}).catch(response =>{
 							this.logout()
 							uni.removeStorageSync('sessionid')
@@ -163,30 +173,34 @@
 			getUserSellerHome(){
 				this.$api.getStorage().then((resolve) =>{
 					this.userId = resolve.userID
-					getSellerHome({userId:this.userId}).then(response =>{
-						let sellerData = response.data
-						this.name = sellerData.seller.linkMan1?sellerData.seller.linkMan1:'' 	//协销名称
-						this.headpic = sellerData.seller.logo //会所头像
-						this.beforeConfirmCount = this.showBadge(sellerData.beforeConfirmCount)//待付款
-						this.beforePayCount = this.showBadge(sellerData.beforePayCount)//待付款
-						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.ShopService.GetHomePageData({userId:this.userId}).then(response =>{
+						let data = response.data
+						this.name = data.shop.name 	//协销名称
+						this.headpic = data.shop.logo //会所头像
+						this.allNum = data.allNum	//全部商品
+						this.upNum = data.upNum 	//已上架
+						this.downNum = data.downNum //已下架
 						this.skeletonShow = false;
 					}).catch(error =>{
 						this.$util.msg(error.msg,2000)
 					})
 				})	
 			},
+			getPhone(){
+				this.CommonService.QueryAfterSale().then(response =>{
+					this.contactNumber = response.data.contactNumber
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000);
+				})
+			},
+			toPhone(){
+				uni.makePhoneCall({
+				    phoneNumber:this.contactNumber //仅为示例
+				});
+			},
 			navigator(url){
 				this.$api.navigateTo(url)
 			},			
-			showBadge(n){
-				let num ='';
-				if(n>100){num = 99}else{num = n;}
-				return num;
-			},
 			onPullDownRefresh() {//下拉刷新
 				this.initData()
 				uni.stopPullDownRefresh()

+ 6 - 2
pages.json

@@ -133,6 +133,11 @@
 			"style": {
 				"navigationBarTitleText": "用户协议"
 			}
+		},{
+			"path": "pages/service/supplieragree",
+			"style": {
+				"navigationBarTitleText": "供应商协议"
+			}
 		},{
 			"path": "pages/service/privacyagree",
 			"style": {
@@ -566,8 +571,7 @@
 					"path": "pages/order/order-details",
 					"style": {
 						"navigationBarTitleText": "订单详情",
-						"enablePullDownRefresh":true,
-						"navigationStyle":"custom"
+						"enablePullDownRefresh":true
 					}
 				},{
 					"path": "pages/order/order-list",

+ 1636 - 0
pages/goods/instrument-details.vue

@@ -0,0 +1,1636 @@
+<template>
+	<view class="product" :style="{paddingBottom: userIdentity==1 ? '0rpx' :'188rpx'}">
+		<custom-p   v-if="isHeaderPoduct"
+					:systeminfo='systeminfo' 
+					:navbar-data='nvabarData' 
+					:headerBtnPosi ="headerBtnPosi" 
+					:headerColor="headerColor" 
+					:type="isShareType"
+					:page='backPage'>
+		</custom-p>
+		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5"></tui-skeleton>
+		<view class="container-product tui-skeleton">
+			<view class="product-top">
+				<view class="banner-section">
+					<uni-swiper-dot :info="productImage" :current="current" field="content" :mode="mode" >
+						<swiper class="banner tui-banner tui-skeleton-rect"  @change="swiperChange" :duration='800' :autoplay="false" :circular="true" >
+							<swiper-item v-for="(item, index) in productImage" :key="index" class="banner-item"> 
+								<image :src="item" @click="previewImg(index)" class="product-img" />
+							</swiper-item>
+						</swiper>
+						<view class="swiper__dots-box">
+							<tui-tag padding="12rpx 24rpx" type="translucent" shape="circleLeft" size="32rpx" :scaleMultiple="0.82" originRight>{{ current + 1 }}/{{ productImage.length }}</tui-tag>
+						</view>
+					</uni-swiper-dot>
+				</view>
+				<view class="product-wrap clearfix">
+					<view class="wrap-top" :class="goodsData.isNoneDisabled ? 'none' : ''">
+						<view class="wrap-top-price" v-if="!goodsData.isNoneDisabled">
+							<cm-price v-if="isRequest"
+									  :product="product"
+									  :userIdentity="userIdentity"
+									  :promotions="product.promotions"
+									  :ladderPriceList="ladderPriceList"/>
+						</view>
+						<view class="p-title tui-skeleton-fillet">
+							<view class="p-title-name">
+								{{product.name == undefined ? '' : product.name}}
+							</view>
+							<button open-type="share" class="p-title-share tui-share-position" @tap="onShare">
+								<view class=""><text class="iconfont icon-fenxiang1"></text></view>
+								<view class="">分享</view>
+							</button>
+						</view>
+						<view class="productRemarks"  v-if="product.productRemarks!=''&&product.productRemarks!=null">
+							<text class="text">{{product.productRemarks}}</text>
+						</view>
+						<view class="wrap-label" v-if="product.tagsList.length>0">
+							<view class="label-a tui-skeleton-fillet" v-for="(label,index) in  product.tagsList" :key="index">{{label}}</view>
+						</view>
+					</view>
+				</view>			
+			</view>
+			<view class="product-seve">
+				<text class="title">服务:</text>
+				<text class="iconfont icon-dui tui-skeleton-rect"><text class="text">无忧退货</text></text>
+				<text class="iconfont icon-dui tui-skeleton-rect"><text class="text">快速退款</text></text>
+				<text class="iconfont icon-dui tui-skeleton-rect"><text class="text">正品保证</text></text>
+			</view>
+			<view class="product-parameter" @click="showPopup">
+				<text class="title">参数:</text>
+				<text class="name">品牌  起订量  分类...</text>
+				<text class="iconfont icon-xiayibu"></text>
+			</view>
+			<view class="product-supplier" @click="goSupplier">
+				<view class="logo"><img src="https://img.caimei365.com/group1/M00/03/4B/Cmis210DQ_qAIoyoAAKD15t_iQc959.png" alt=""></view>
+				<view class="main">
+					<view class="name">{{shop.name}}</view>
+					<view class="massgs">
+						<view class="label">满意度:</view>
+						<view class="p-stars">
+							<uni-stars :stars="6" :iconClass="iconClass" :iconColor="iconColor" :fontSize="36" :widthInfo="176"></uni-stars>
+						</view>
+						<view class="acount">
+							<text>50</text>件商品
+						</view>
+					</view>
+				</view>
+				<view class="right"><text class="iconfont icon-xiayibu"></text></view>
+			</view>
+			<view class="product-details">
+				<!-- 商品详情 -->
+				<view class="title">
+					<view class="title-tab">商品详情</view>
+				</view>
+				<view class="content tui-banner product-rich-text tui-skeleton-rect">
+					<parser :html="html" :img-mode="widthFix"></parser>
+				</view>
+			</view>	
+			<view class="product-details service" v-show="product.productDetail.orderInfo || product.productDetail.serviceInfo">
+				<!-- 服务项目 -->
+				<view class="title">
+					<view class="title-tab">服务项目</view>
+				</view>
+				<view class="content service">
+					<cm-service :product="product.productDetail" v-if="isRequest"></cm-service>
+				</view>
+			</view>	
+			<view class="product-details recommend">
+				<!-- 相关推荐 -->
+				<view class="title">
+					<view class="title-tab">相关推荐</view>
+				</view>
+				<view class="content hot">
+					<recommend :query-productid="product.productID" v-if="isRequest"></recommend>
+				</view>
+			</view>	
+			<!--<view  class="navbar" :class="navbarFiexd" :style="{top:headerBtnPosi.bottom + (headerBtnPosi.bottom - headerBtnPosi.height - systeminfo.statusBarHeight) +'px'}">
+				<view class="nav-item tui-skeleton-fillet" :class="{ current: tabCurrentIndex === 0 }" @click="tabClick(0)">
+					<text>商品详情</text>
+					<text class="line"></text>
+				</view>
+				<view class="nav-item tui-skeleton-fillet" 
+					  :class="{ current: tabCurrentIndex === 1 }" 
+					  @click="tabClick(1)" 
+					  v-if="product.parametersList != ''">
+						<text>相关参数</text>
+						<text class="line"></text>
+				</view>	
+				<view class="nav-item tui-skeleton-fillet" 
+					  :class="{ current: tabCurrentIndex === 2 }" 
+					  @click="tabClick(2)" 
+					  v-if="product.productDetail.orderInfo || product.productDetail.serviceInfo">
+						<text>服务项目</text>
+						<text class="line"></text>
+				</view>	
+				<view class="nav-item tui-skeleton-fillet" :class="{ current: tabCurrentIndex === 3 }" @click="tabClick(3)">
+					<text>相关推荐</text>
+					<text class="line"></text>
+				</view> -->	
+			<!-- 商品参数 -->
+			<tui-bottom-popup :radius="true" :show="popupShow" @close="hidePopup()">
+				<view class="tui-popup-box clearfix">
+					<view class="title">商品参数</view>
+					<view class="content">
+						<view class="content-tr">
+							<view class="content-td">起订量</view>
+							<view class="content-th">{{product.minBuyNumber}}</view>
+						</view>
+						<view class="content-tr">
+							<view class="content-td">品牌</view>
+							<view class="content-th">{{product.brandName == null? '其他' : product.brandName}}</view>
+						</view>
+						<view class="content-tr">
+							<view class="content-td">包装规格</view> 
+							<view class="content-th">{{product.unit}}</view>
+						</view>
+						<view class="content-tr">
+							<view class="content-td">商品编码</view>
+							<view class="content-th">{{product.productCode}}</view>
+						</view>
+						<view class="content-tr">
+							<view class="content-td">库存</view>
+							<view class="content-th">{{product.stock}}</view>
+						</view>
+						<view class="content-tr" v-if="product.parametersList.length>0" v-for="(item, index) in product.parametersList" :key="index">
+							<view class="content-td">{{item.paramsName}}</view>
+							<view class="content-th">{{item.paramsContent}}</view>
+						</view>
+					</view>
+					<view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom :isIphoneX ? '68rpx' : '0rpx' }">
+						<view class="tui-flex-1">
+							<view class="tui-button" @click="hidePopup()">收起</view>
+						</view>
+					</view>
+				</view>	
+			</tui-bottom-popup>	
+			<!-- 底部按钮 -->
+			<view class="menu" v-if="userIdentity!=1">
+				<view class="bottom-btn" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
+					<view class="bottom-le">
+						<view class="item-bt" @click="this.$api.switchTabTo('/pages/tabBar/home/home')">
+							<image src="../../static/icon-home-active@3x.png"></image>
+							<text>首页</text>
+						</view>
+						<view class="item-bt">
+							<!-- #ifdef MP-WEIXIN -->
+							<button class="contact-btn" open-type="contact" @bindcontact="handleContact">
+								<image src="../../static/severs@3x.png"></image>
+								<text>客服</text>
+							</button>	
+							<!-- #endif -->
+						</view>
+						<view class="item-bt" @click="buyProductCart()">
+							<image src="../../static/icon-cart-active@3x.png"></image>
+							<text>购物车</text>
+							<text  	v-if="hasLogin && goodsData.cartCount>0"
+									class="uni-badge uni-badge-error uni-small uni-badge--small icon-num"
+									:class="[goodsData.cartCount < 10 ? 'goleft':'']">
+									{{ goodsData.cartCount >= 100 ? '99+': goodsData.cartCount}}
+							</text>
+							<view class="animation-num"  :class="isAnimation ? 'animation' : 'restion'">+1</view>
+						</view>
+					</view>
+					<view class="bottom-ri">
+						<button  
+								:disabled="goodsData.disabled" 
+								class="btn btn-cart" 
+								:class="[goodsData.disabled ? 'disabled':'']"
+								@tap.stop="btnGetConfirm('add')">加入购物车</button>
+						<button  
+								:disabled="goodsData.disabled" 
+								class="btn btn-bay" 
+								:class="[goodsData.disabled ? 'disabled':'']"
+								@tap.stop="btnGetConfirm('buy')">立即购买</button>
+					</view>
+				</view>	
+			</view>
+			<!--底部选择模态层弹窗组件 -->	
+			<view class="popup spec" :class="specClass"  @touchmove.stop.prevent="discard" @tap="hideSpec">
+				<!-- 遮罩层 -->
+				<view class="mask"></view>
+				<view class="layer" @tap.stop="discard" :style="{paddingBottom :isIphoneX ? '68rpx' : '36rpx',bottom:isIphoneX ?'-352rpx' : '-296rpx'}">
+					<view class="content">
+						<view class="layer-smimg">
+							<image :src="product.mainImage" mode=""></image>
+						</view>
+						<view class="layer-nunbox">
+							<view class="layer-nunbox-t" v-if="product.step === 2">
+								<view class="text">*该商品只能以起订量的整数倍购买</view>
+							</view>
+							<view class="layer-nunbox-t">
+								<view class="layer-nunbox-text">数量:</view>
+								<view class="number-box">
+									<view  class="iconfont icon-jianhao" :class="[isQuantity==true?'disabled':'']" @click="changeCountSub()"></view>
+									<input class="btn-input" type="number" v-model="number" maxlength='4'  @blur="changeNumber($event)">
+									<view  class="iconfont icon-jiahao"  :class="[isStock==true?'disabled':'']" @click="changeCountAdd()"></view>
+								</view>
+							</view>
+							<view class="layer-nunbox-b">
+								<view class="text">单价:
+									<text class="p sm">¥</text>
+									<text class="p bg">{{buyRetailPrice.toFixed(2)}}</text>
+								</view>
+							</view>
+						</view>
+					</view>
+					<view class="btn"><view class="button" @click.stop="btnConfirm">确定</view></view>
+				</view>
+			</view>
+			<!-- 侧边 -->
+			<scroll-top v-if="isScrollTop"></scroll-top>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { mapState,mapMutations } from 'vuex'
+	import customP from '@/components/cm-module/headerNavbar/header-poduct' 		 //自定义导航
+	import cmPrice from "@/components/cm-module/productDetails/cm-price.vue" //价格显示
+	import cmAttributes from "@/components/cm-module/productDetails/cm-attributes.vue" //规格信息
+	import authorize from '@/common/config/authorize.js'
+	import uniStars from '@/components/uni-stars/uni-stars.vue'
+	import parser from "@/components/jyf-Parser/index" //富文本处理
+	import tuiSkeleton from "@/components/tui-skeleton/tui-skeleton"
+	import recommend from "@/components/cm-module/productDetails/recommend" //相关推荐
+	import cmParameter from "@/components/cm-module/productDetails/cm-parameter" //相关参数
+	import cmService from "@/components/cm-module/productDetails/cm-service" //服务项目
+	import wxLogin from "@/common/config/wxLogin.js"
+	var isPreviewImg;
+	export default{
+		components:{
+			uniStars,
+			customP,
+			parser,
+			tuiSkeleton,
+			recommend,
+			cmPrice,
+			cmAttributes,
+			cmParameter,
+			cmService
+		},
+		data(){
+			return{			
+				html:'<div style="text-align: center;color:#333333;">暂无内容</div>',
+				disabledTabNavList:[{name:'相关推荐'}],
+				mode:'round',
+				iconClass:'icon-aixin',
+				iconColor:'#ff9100',
+				specClass: '',//规格弹窗css类,控制开关动画
+				isBtnType:'',
+				isRequest:false,
+				isScrollTop:false,
+				current:0,
+				isShareType:'',
+				isHeaderPoduct:false,
+				navbarFiexd:'none',
+				ladderPriceFlag:'',
+				ladderPriceList:'',
+				isRecommend:false,
+				isRarameter:true,
+				isService:false,
+				isEvaluate:false,
+				isAnimation:false,
+				skeletonShow:true,
+				isQuantity:false,
+				isStock:false,
+				disabled:false,
+				isNoneDisabled:false,
+				tabCurrentIndex:0,
+				userID:'',
+				productID:0,
+				userIdentity:'',//用户类型
+				goodsData:{},//自定义数据
+				shop:{},//供应商信息
+				product:{},//采美
+				productImage:[],
+				retailPrice:0,
+				buyRetailPrice:0,
+				buyRetailPriceStep:1,
+				stock:0,
+				number:0,
+				minBuyNumber:0,
+				productsList:[],
+				goodListData:[],
+				headerBtnPosi:	this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
+				systeminfo: this.setSysteminfo(),		 //获取设备信息
+				isIphoneX:this.$store.state.isIphoneX,
+				windowHeight: '',
+				headerColor:false,
+				backPage:1,
+				nvabarData: {							 //顶部自定义导航
+					showCapsule: 1, // 是否显示左上角图标   1表示显示    0表示不显示
+					title: ''		// 导航栏 中间的标题
+				},
+				linkPath:'',
+				popupShow:false//参数弹窗
+			}
+		},
+		onLoad(option) {
+			this.productID = option.id;//获取商品ID
+			this.isShareType = option.type
+			this.linkPath = option.path
+			this.isHeaderPoduct = true
+			if(option.page == 2){
+				this.backPage = option.page
+			}
+			if(this.isShareType =='share'){
+				authorize.getSetting().then(wxResponse =>{// console.log('是否已授权',res);//0:为取消授权 1:为已授权 2:为未操作
+					console.log(wxResponse)
+					if(wxResponse == 1){
+						wxLogin.wxLoginAuthorize()
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+					}
+				})	
+			}
+		},
+		computed: {
+			...mapState(['hasLogin','isWxAuthorize'])
+		},
+		methods:{
+			initData(){// 初始化商品详情查询
+				this.ProductService.queryProductDetils({userId:this.userID,productID:this.productID}).then(response =>{	
+					this.skeletonShow = false
+					this.productImage=[];
+					this.shop = response.data.shop
+					this.product = response.data
+					this.ladderPriceFlag = this.product.ladderPriceFlag;
+					this.html = this.product.productDetail == null ? this.html : this.$api.adaptRichTextImg(this.product.productDetail.detailInfo)
+					this.stock = this.product.stock
+					this.buyRetailPriceStep = this.product.step
+					this.number = this.product.minBuyNumber
+					this.minBuyNumber = this.product.minBuyNumber
+					//处理商品图片列表
+					this.product.imageList.forEach(item =>{
+						this.productImage.push(item.image);
+					})
+					//购物车数量
+					this.goodsData.cartCount = this.product.productCount
+					//处理阶梯价格
+					if(this.product.ladderPriceList!=null){
+						this.ladderPriceList = this.product.ladderPriceList;
+					}
+					//拆分金额并转千分位格式显示
+					if(this.product.retailPrice!=null){
+						this.retailPrice = this.product.retailPrice.toFixed(2);
+						this.buyRetailPrice = this.product.retailPrice;
+					}
+					//处理下架商品和售罄商品
+					if(this.product.validFlag =='3' || this.stock == 0 ){
+						this.disabled = true
+						this.isNoneDisabled = true
+						this.tabCurrentIndex = 3;// 页面显示是默认选中第一
+						this.isRecommend = true
+						this.goodsData.disabledText = '下架'
+					}else{
+						this.disabled = false
+						this.isNoneDisabled = false
+						this.tabCurrentIndex = 0;// 页面显示是默认选中第三
+						this.goodsData.disabledText = ''
+					}
+					if(this.product.price1TextFlag == "1"){
+						this.disabled = true
+					}
+					if(this.product.price1TextFlag == "2"){
+						if(this.userIdentity == 4){	
+							this.disabled = true
+						}else{
+							this.disabled = false
+						}
+					}
+					this.goodsData.disabled = this.disabled
+					this.goodsData.isNoneDisabled = this.isNoneDisabled
+					if(this.product.validFlag =='3'){
+						this.goodsData.disabledText = '下架'
+					}
+					if(this.stock == 0){
+						this.goodsData.disabledText = '售罄'
+					}
+					this.isRequest = true
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000);
+				})
+			},
+			swiperChange(e) {//顶部商品图片切换
+				const index = e.detail.current;
+				this.current = index;
+			},
+			previewImg (index) {//顶部商品图片预览
+				isPreviewImg = true
+				let previewUrls = this.productImage
+				uni.previewImage({
+					current: index, 	//图片索引
+					urls: previewUrls, //必须是http图片,本地图片无效
+					longPressActions:''
+				})
+			},
+			tabClick(index) {//商品详情&&供应商信息tab切换
+				console.log(index)
+				this.tabCurrentIndex = index;
+				switch(index){
+					case 1:
+						this.isRarameter = true
+						break;
+					case 2:
+						this.isService = true
+						break;
+					case 3:
+						this.isRecommend = true
+						break;
+				}
+			},
+			handleContact(e){//跳转小程序客服
+
+			},
+			buyProductCart(){//底部购物车按钮点击
+				authorize.getSetting().then(wxResponse =>{// console.log('是否已授权',res);//0:为取消授权 1:为已授权 2:为未操作
+					if(wxResponse == 1){
+						if(this.hasLogin){
+							this.$api.navigateTo('/pages/goods/cart')
+						}else{					
+							this.$api.navigateTo('/pages/login/login?type=1')
+						}
+					}else{
+						this.$api.navigateTo('/pages/authorization/authorization?type=1')
+					}
+				})	
+			},
+			btnGetConfirm(type){//加入购物车&&立即购买点击
+				authorize.getSetting().then(wxResponse =>{// console.log('是否已授权',res);//0:为取消授权 1:为已授权 2:为未操作
+					if(wxResponse == 1){
+						if(this.hasLogin){
+							this.showSpec(type);
+						}else{
+							this.$api.navigateTo('/pages/login/login?type=1')
+						}
+					}else{
+						this.$api.navigateTo('/pages/authorization/authorization?type=1')
+					}	
+				})
+			},	
+			changeCountAdd(){//popup弹窗数量增加按钮
+				if(this.buyRetailPriceStep == 2){
+					this.number+=this.minBuyNumber
+				}else{
+					this.number++
+				}
+				this.processActivityPrice()
+			},
+			changeCountSub(){//popup弹窗数量减按钮
+				if(this.number<=this.minBuyNumber){
+					this.number= this.minBuyNumber
+					this.isQuantity =true
+					this.$util.msg(`该商品最小起订量为${this.minBuyNumber}`,2000);
+					return
+				}else{
+					if(this.buyRetailPriceStep == 2){
+						this.number-=this.minBuyNumber
+					}else{
+						this.number--
+					}
+					this.processActivityPrice()
+					this.isQuantity =false
+				}
+			 },
+			changeNumber(e){
+				let _value = e.detail.value;
+				if(!this.$api.isNumber(_value)){
+					this.number = this.minBuyNumber
+				}else if(_value < this.minBuyNumber){	
+					this.$util.msg(`该商品最小起订量为${this.minBuyNumber}`,2000);
+					this.number = this.minBuyNumber
+				}else if( _value % this.minBuyNumber !=0 ){
+					this.$util.msg(`购买量必须为起订量的整数倍`,2000);
+					this.number = this.minBuyNumber
+				}else{
+					this.number = e.detail.value
+				}
+				this.processActivityPrice()
+			},
+			processActivityPrice(){//单独处理活动价格和阶梯价格
+				if(this.ladderPriceFlag == '0' && this.product.actStatus == 0 || this.product.actStatus == 1){
+					this.buyRetailPrice = this.product.retailPrice
+				}else{
+					this.ladderPriceList.forEach((item,index)=>{
+						if(this.number>=item.buyNum){
+							this.buyRetailPrice = item.buyPrice
+						}
+					})
+				}
+			},
+			showSpec(type) {//显示选择数量确认弹窗
+				this.isBtnType = type
+				this.specClass = 'show';
+			},
+			hideSpec() {//关闭选择数量确认弹窗
+				this.specClass = 'hide';
+				setTimeout(() => {
+					this.specClass = 'none';
+				}, 200);
+			},
+			btnConfirm() {//加入购物车&&立即购买跳转订单页并关闭弹窗
+				if(this.isBtnType == 'add'){				
+					this.getAddProductCart()				
+				}else{
+					this.toConfirmation()
+				}
+			},
+			toConfirmation(){//跳转确认订单页面
+				this.specClass = 'hide';
+				let productStp ={
+						allPrice:this.number*this.buyRetailPrice,
+						allCount:this.number,
+						productID:this.product.productID,
+						productCount:this.number
+				}	
+				this.$api.navigateTo(`/pages/user/order/create-order?type=prodcut&data=${JSON.stringify({data:productStp})}`)
+				setTimeout(() => {
+					this.specClass = 'none';
+				}, 200);
+			},
+			getAddProductCart(){//增加购物车成功和toast弹窗提示成功	
+				this.ProductService.shoppingAddCart({productID:this.productID,userID:this.userID,productCount:this.number}).then(response => {
+					this.specClass = 'hide';
+					this.$util.msg('加入购物车成功',1500,true,'success')
+					this.isAnimation = true
+					setTimeout(() => {this.specClass = 'none'}, 200)
+					setTimeout(() => {this.isAnimation = false},2000)
+					this.goodsData.cartCount = response.data;
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000);
+				})
+			},
+			navToLogin(){
+				authorize.getSetting().then(wxResponse =>{// console.log('是否已授权',res);//0:为取消授权 1:为已授权 2:为未操作
+					if(wxResponse == 1){
+						this.$store.commit('setLoginType',8)
+						this.$store.commit('setLoginProductId',this.productID)
+						this.$api.navigateTo(`/pages/login/login?id=${this.productID}`)
+					}else{
+						this.$api.navigateTo('/pages/authorization/authorization?type=1')
+					}
+				})	
+			},
+			setHeaderBtnPosi(){
+				// 获得胶囊按钮位置信息
+				let headerBtnPosi = uni.getMenuButtonBoundingClientRect();
+				return headerBtnPosi
+			},
+			setSysteminfo(){
+				let systeminfo;
+				uni.getSystemInfo({ // 获取设备信息
+					success: (res) => {
+						systeminfo = res
+					},
+				})
+				return systeminfo
+			},
+			getOptionFn(e){
+				this.isShareType = e.type
+			},
+			goSupplier(){
+				this.$api.setStorage('supplierInfo',this.shop)
+				this.$api.navigateTo('/pages/goods/supplier')
+			},
+			discard(){
+				//丢弃
+			},
+			onShare(res){//分享转发
+				if (res.from === 'button') {
+			      // 来自页面内转发按钮
+			    }
+				return {
+				  title: `${this.product.name}`,
+				  path: `pages/goods/product?type=share&id=${this.productID}`,
+				  imageUrl:`${this.productImage[0]}`
+				}
+			},
+			showPopup(){
+				this.popupShow = true
+			},
+			hidePopup(){
+				this.popupShow = false
+			}
+		},
+		onPageScroll(e){//实时获取到滚动的值
+			if(e.scrollTop>50){
+				this.headerColor = true
+				this.nvabarData={							
+					showCapsule: 1, 
+					title: '商品详情', 		
+				}
+			}else{
+				this.headerColor = false
+				this.nvabarData={
+					showCapsule: 1, 
+					title: '', 		
+				}
+			}
+			if(e.scrollTop>700){
+				this.navbarFiexd = 'fixed'
+				this.isScrollTop = true
+			}else{
+				this.navbarFiexd = 'none'
+				this.isScrollTop = false
+			}
+		},
+		onShareAppMessage(res){//分享转发
+			if (res.from === 'button') {
+		      // 来自页面内转发按钮
+		    }
+			return {
+			  title: `${this.product.name}`,
+			  path: `pages/goods/product?type=share&id=${this.productID}`,
+			  imageUrl:`${this.productImage[0]}`
+			}
+		},
+		onShow() {
+			this.$api.getStorage().then((resolve) => {
+				this.userID = resolve.userID ? resolve.userID : '';	
+				this.userIdentity = resolve.userIdentity ? resolve.userIdentity : 3
+				if (isPreviewImg) {
+					isPreviewImg = false;
+					return;
+				} else {
+					this.initData();
+				}
+			}).catch(error =>{
+				this.initData();
+			})
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{
+		background-color: #FFFFFF;
+	}
+	.productRemarks{
+		height: 36rpx;
+		margin: 8rpx 0;
+		width: 100%;
+		float: left;
+		.text{
+			display: inline-block;
+			padding: 0 18rpx;
+			line-height: 32rpx;
+			font-size: 20rpx;
+			color: #FF2A2A;
+			text-align: center;
+			border-radius: 4rpx;
+			background: #FFFFFF;
+			border: 1px solid #FF2A2A;
+			float: left;
+			opacity: 0.8;
+		}
+	}
+	.banner-section{
+		width: 100%;
+		height: 750rpx;
+		position: relative;
+	}	
+	.banner{
+		width: 100%;
+		height: 750rpx;
+		.product-img{
+			width: 750rpx;
+		}
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+	.swiper__dots-box{
+		position: absolute;
+		color: #fff;
+		bottom: 30rpx;
+		right: 0;
+	}
+	.product-wrap{
+		width: 100%;
+		height: auto;
+		padding: 24rpx 0 0 0;
+		background-color: #FFFFFF;
+		border-bottom: 20rpx solid #F7F7F7;
+		.wrap-top{
+			width: 702rpx;
+			padding: 0 24rpx;
+			height: auto;
+			float: left;
+			padding-bottom:20rpx;
+			border-bottom: 1px solid #F8F8F8;
+			&.none{
+				.p-title{
+					color:#999999
+				}
+			}
+			.p-title{
+				width: 100%;
+				height: auto;
+				float: left;
+				.p-title-name{
+					width:602rpx;
+					height: 96rpx;
+					float: left;
+					line-height: 42rpx;
+					font-size: $font-size-28;
+					color: $text-color;
+					-o-text-overflow: ellipsis;
+					text-overflow: ellipsis;
+					display: -webkit-box;
+					word-break: break-all;
+					-webkit-box-orient: vertical;
+					-webkit-line-clamp: 2;
+					overflow: hidden;
+				}
+				.p-title-share{
+					width: 96rpx;
+					height: 96rpx;
+					float: right;
+					text-align: center;
+					color: #999999;
+					font-size: $font-size-24;
+					box-sizing: border-box;
+					padding: 8rpx 0;
+					.icon-fenxiang1{
+						font-size: $font-size-34;
+					}
+				}
+			}
+			.wrap-main-text{
+				line-height: 56rpx;
+				color: #FF2A2A;
+				font-size: $font-size-26;
+				display: block;
+				float: left;
+				font-weight: normal;
+			}
+			.wrap-main-none{
+				display: block;
+				width: 256rpx;
+				height: 44rpx;
+				padding-left: 20rpx;
+				border-radius: 11rpx;
+				background: $btn-confirm;
+				float: right;
+				line-height: 44rpx;
+				color: #FFFFFF;
+				text-align: center;
+				font-size: $font-size-24;
+			}
+			
+			.p-price-none{
+				height: 44rpx;
+				line-height: 44rpx;
+				float: left;
+				font-size: $font-size-24;
+				color: #666;
+				text-decoration: line-through;
+				margin-left: 8rpx;
+			}
+			.p-minBuy{
+				height: 44rpx;
+				line-height: 44rpx;
+				float: right;
+				padding: 0 18rpx;
+				border-radius: 22rpx;
+				background-color: #f7f7f7;
+				color: #7F7F7F;
+				font-size: 24rpx;
+				text-align: center;
+				.min-text{
+					margin: 0 6rpx;
+				}
+			}
+			.p-login{
+				height: 56rpx;
+				line-height: 56rpx;
+				color: $color-system;
+				font-size: $font-size-24;
+				&.grade{
+					.price-left{
+						float: left;
+						.none{
+							display: block;
+							font-size: $font-size-20;
+							line-height: 48rpx;
+							color: #4A4B54;
+							float: left;
+							font-weight: bold;
+							margin-left: 5rpx;
+							text{
+								letter-spacing: 4rpx;
+								font-size: $font-size-32;
+							}
+						}
+					}
+				}
+				.p-no{
+					float: left;
+					margin-right: 5rpx;
+					font-size: $font-size-28;
+					color: $text-color;
+				}
+				.p-login-btn{
+					display: block;
+					height: 44rpx;
+					padding: 0 10rpx 0 20rpx;
+					border-radius: 11rpx;
+					background: $btn-confirm;
+					float: right;
+					line-height: 44rpx;
+					color: #FFFFFF;
+					text-align: center;
+					font-size: $font-size-24;
+				}
+			}
+		}
+		.wrap-label{
+			float: left;
+			width: 100%;
+			box-sizing: border-box;
+			.label-a{
+				padding: 0 18rpx;
+				line-height: 32rpx;
+				font-size: $font-size-20;
+				color:$color-system;
+				text-align: center;
+				border-radius: 6rpx;
+				background:#ffe6dc;
+				margin: 0 20rpx 15rpx 0;
+				display: inline-block;
+			}
+		}
+		.wrap-top-price{
+			float: left;
+			width: 100%;
+			box-sizing: border-box;
+			.wrap-main-item{
+				width: 100%;
+				height: 56rpx;
+				.p-price{
+					height: 56rpx;
+					line-height: 56rpx;
+					float: left;
+					color: #FF2A2A;
+					font-weight: bold;
+					&.none{
+						text-decoration: line-through;
+						color: #999999;
+						font-weight: normal;
+					}
+					.txt{
+						margin:0 2rpx;
+					}
+					.txt.sm{
+						font-size: $font-size-26;
+					}
+					.txt.big{
+						font-size: $font-size-34;
+					}
+				}
+			}
+			.floor-item-act{
+				height: 56rpx;
+				text-align: center;
+				box-sizing: border-box;
+				float: left;
+				padding:10rpx 0;
+				margin-left: 10rpx;
+				.floor-tags{
+					float: right;
+					height: 36rpx;
+					border-radius: 4rpx;
+					background-color: rgba(225, 86, 22, 0.1);
+					line-height: 36rpx;
+					color: $color-system;
+					text-align: center;
+					display: inline-block;
+					padding:0 16rpx;
+					font-size: $font-size-20;
+				}
+			}
+			.floor-item-btn{
+				float: right;
+				height: 40rpx;
+				margin-top: 8rpx;
+				.btn{
+					line-height: 40rpx;
+					padding: 0 20rpx;
+					height: 40rpx;
+					background: $btn-confirm;
+					color: #FFFFFF;
+					font-size: $font-size-20;
+					border-radius: 4rpx;
+				}
+			}
+		}
+		.wrap-info{
+			float: left;
+			width: 702rpx;
+			padding: 24rpx 24rpx 0 24rpx;
+			border-bottom: 1px solid #F8F8F8;
+			.info-viewT{
+				width: 100%;
+				min-height: 40rpx;
+				font-size: $font-size-28;
+				color: $text-color;
+				line-height: 40rpx;
+				text-align: left;
+				&.none{
+					color: #999999;
+				}
+				.info-viewL{
+					min-width: 350rpx;
+					float: left;
+					margin-bottom: 24rpx;
+				}
+				.info-viewR{
+					min-width: 352rpx;
+					float: left;
+					margin-bottom: 24rpx;
+				}
+			}
+			.info-viewB{
+				width: 100%;
+				height: auto;
+			}
+			.info-f{
+				width: 50%;
+				float: left;
+				font-size: $font-size-28;
+				color: $text-color;
+				line-height: 40rpx;
+				margin-bottom: 24rpx;
+				text-align: left;
+			}
+		}
+	}
+	.product-seve{
+		width: 702rpx;
+		height: 90rpx;
+		padding: 0 24rpx;
+		background-color: #FFFFFF;
+		position: relative;
+		display: flex;
+		line-height: 90rpx;
+		border-bottom: 20rpx solid #F7F7F7;
+		.title{
+			line-height: 90rpx;
+			display: inline-block;
+			float: left;
+			font-size: $font-size-28;
+			color: $text-color;
+		}
+		.iconfont{
+			color: #999999;
+			margin-right: 20rpx;
+			font-size: $font-size-26;
+		}
+		.text{
+			font-size: $font-size-26;
+			color: #999999;
+			margin-left: 10rpx;
+		}
+	}
+	.product-parameter{
+		width: 702rpx;
+		height: 90rpx;
+		padding: 0 24rpx;
+		background-color: #FFFFFF;
+		position: relative;
+		display: flex;
+		border-bottom: 20rpx solid #F7F7F7;
+		.title{
+			line-height: 90rpx;
+			display: inline-block;
+			float: left;
+			font-size: $font-size-28;
+			color: $text-color;
+		}
+		.name{
+			float: right;
+			line-height: 90rpx;
+			display: inline-block;
+			float: left;
+			font-size: $font-size-28;
+			color: #999999;
+			float: right;
+			padding-right: 48rpx;
+			overflow: hidden;
+			text-overflow:ellipsis;
+			white-space: nowrap;
+			text-align: right;
+		}
+		.icon-xiayibu{
+			line-height: 90rpx;
+			display: inline-block;
+			position: absolute;
+			width: 48rpx;
+			top: 0;
+			right: 0;
+			color: #b2b2b2;
+		}
+	}
+	.product-supplier{
+		width: 100%;
+		height: 174rpx;
+		padding: 30rpx 24rpx;
+		box-sizing: border-box;
+		background-color: #FFFFFF;
+		position: relative;
+		box-sizing: border-box;
+		border-bottom: 20rpx solid #F7F7F7;
+		.logo{
+			width: 128rpx;
+			height: 92rpx;
+			float: left;
+			border: 1px solid #efefef;
+			border-radius: 6rpx;
+			image{
+				width: 100%;
+				height: 100%;
+				display: block;
+				border-radius: 6rpx;
+			}
+		}
+		.main{
+			width: 470rpx;
+			height: 92rpx;
+			float: left;
+			margin-left: 20rpx;
+			.name{
+				width: 100%;
+				line-height: 46rpx;
+				float: left;
+				font-size: $font-size-28;
+				color: $text-color;
+				float: right;
+				overflow: hidden;
+				text-overflow:ellipsis;
+				white-space: nowrap;
+				text-align: left;
+			}
+			.massgs{
+				width: 100%;
+				line-height: 46rpx;
+				float: left;
+				font-size: $font-size-24;
+				color: #999999;
+				.label{
+					float: left;
+				}
+				.p-stars{
+					float: left;
+					margin-left: 20rpx;
+				}
+				.acount{
+					float: right;
+					text{
+						color: $color-system;
+					}
+				}
+			}
+		}
+		
+		.icon-xiayibu{
+			line-height: 154rpx;
+			display: inline-block;
+			position: absolute;
+			width: 48rpx;
+			top: 0;
+			right: 0;
+			color: #b2b2b2;
+		}
+	}
+	.product-details {
+		width: 100%;
+		background: #FFFFFF;
+		border-bottom: 20rpx solid #F7F7F7;
+		&.service{
+			border-bottom: none;
+		}
+		&.recommend{
+			background-color: #F7F7F7;
+			border-bottom: none;
+			.title{
+				.title-tab{
+					background-color: #F7F7F7;
+					color: $text-color;
+					
+				}
+			}
+		}
+		.title{
+			width: 100%;
+			box-sizing: border-box;
+			padding: 0 24rpx;
+			.title-tab{
+				width: 100%;
+				height: 100rpx;
+				background: #fff;
+				z-index: 10;
+				font-size: $font-size-30;
+				text-align: left;
+				color: $text-color;
+				line-height: 100rpx;
+				font-weight: 600;
+			}
+			.title-msg{
+				width: 100%;
+				height: 236rpx;
+				padding: 18rpx;
+				background-color: rgba(225,86,22, 0.1);
+				color: $color-system;
+				box-sizing: border-box;
+				margin-bottom: 30rpx;
+				.tit{
+					line-height: 46rpx;
+					font-size: $font-size-24;
+					text-align: left;
+				}
+				.txt{
+					line-height: 38rpx;
+					font-size: $font-size-20;
+					text-align: justify;
+				}
+			}
+		}
+		.navbar {
+			width: 702rpx;
+			height: 96rpx;
+			padding: 0 24rpx;
+			background: #fff;
+			z-index: 10;
+			display: flex;
+			border-bottom: 1px solid #F8F8F8;
+			&.fixed{
+				position: fixed;
+				left: 0;
+			}
+			.nav-item {
+				display: flex;
+				flex: 1;
+				justify-content: center;
+				align-items: center;
+				height: 96rpx;
+				font-size: $font-size-28;
+				color: $text-color;
+				position: relative;
+				float: left;
+				position: relative;
+				.line{
+					width: 60%;
+					height: 2px;
+					border-radius: 1px;
+					background: #FFFFFF;
+					position: absolute;
+					bottom: 0;
+					left: 50%;
+					margin-left: -30%;
+				}
+				&.current{
+					color:$color-system;
+					.line{
+						background: $color-system;
+					}
+				}
+			}
+		}
+		.content{
+			width: 100%;
+			min-height: 750rpx;
+			background-color: #FFFFFF;
+		}
+	}
+	.isLower{
+		width: 100%;
+		height: 116rpx;
+		line-height: 116rpx;
+		text-align: center;
+		color: #000000;
+		font-size: $font-size-32;
+		font-weight: bold;
+	}
+	.bottom-btn{
+		width: 100%;
+		height: 110rpx;
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		background: #FFFFFF;
+		z-index: 99;
+		.bottom-le{
+			width: 302rpx;
+			height: 86rpx;
+			padding:12rpx 24rpx;
+			float: left;
+			.item-bt{
+				width: 86rpx;
+				height: 100%;
+				margin-right:22rpx;
+				display: flex;
+				float: left;
+				flex-direction: column;
+				align-items: center;
+				font-size: $font-size-24;
+				color: $text-color;
+				line-height: 34rpx;
+				position: relative;
+				.animation-num{
+					font-size:$font-size-32 ;
+					color: #FF2A2A;
+					position: absolute;
+					top: -12rpx;
+					right: 4rpx;
+					font-weight: bold;
+				}
+				.animation{
+					animation: showAmnation 2.2s ease-in-out both;
+				}
+				.restion{
+					animation: hideAmnation 1s ease-in-out both;
+				}
+				.icon-num{
+					position: absolute;
+					right:-12rpx;
+					top: -9rpx;
+				}
+				.icon-num.goleft{
+					right: 4rpx;
+				}
+				&:last-child{
+					margin-right: 0;
+				}
+				image {
+					width: 40rpx;
+					height: 40rpx;
+					margin-bottom: 8rpx;
+				}
+				button.contact-btn{
+					width: 100%;
+					height: 100%;
+					margin: 0;
+					padding: 0;
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					box-sizing: border-box;
+					font-size: $font-size-24;
+					text-align: center;
+					text-decoration: none;
+					line-height: 34rpx;
+					border-radius: 0;
+					-webkit-tap-highlight-color: transparent;
+					overflow: hidden;
+					color: $text-color;
+					background-color:#FFFFFF;
+				}
+			}
+		}
+		.bottom-ri{
+			width: 400rpx;
+			height: 100%;
+			float: right;
+			display: flex;
+			box-sizing: border-box;
+			padding: 13rpx 20rpx 13rpx 0;
+			.btn{
+				flex: 1;
+				width: 200rpx;
+				line-height: 84rpx;
+				text-align: center;
+				font-size: $font-size-28;
+				color: #FFFFFF;
+			}
+			.btn-cart{
+				background-color: #ffe6dc;
+				color: $color-system;
+				border-radius: 42rpx 0 0 42rpx;
+			}
+			.btn-cart.disabled{
+				background-color: #E1E1E1;
+			}
+			.btn-bay{
+				background:linear-gradient(to right, #f28f31 0%, #e15616 100%);
+				border-radius: 0 42rpx 42rpx 0;
+			}
+			.btn-bay.disabled{
+				background-color: linear-gradient(135deg,rgba(242,143,49,0.5) 0%,rgba(225,86,22,0.5) 100%);;
+			}
+		}
+	}
+	.uni-badge--small {
+		-webkit-transform: scale(.8);
+		-ms-transform: scale(.8);
+		transform: scale(.8);
+		-webkit-transform-origin: center center;
+		-ms-transform-origin: center center;
+		transform-origin: center center;
+	}
+	.uni-badge {
+		font-family: 'Helvetica Neue', Helvetica, sans-serif;
+		-webkit-box-sizing: border-box;
+		box-sizing: border-box;
+		font-size: 12px;
+		line-height: 1;
+		display: inline-block;
+		padding: 3px 6px;
+		color: #333;
+		border-radius: 100px;
+		background-color: #f1f1f1;
+	}
+	.uni-badge-error {
+		color: #fff;
+		background-color: #dd524d;
+	}
+	/* 加入购物模态层*/
+	@keyframes showPopup {
+		0% {
+			opacity: 0;
+		}
+		100% {
+			opacity: 1;
+		}
+	}
+	@keyframes hidePopup {
+		0% {
+			opacity: 1;
+		}
+		100% {
+			opacity: 0;
+		}
+	}
+	@keyframes showLayer {
+		0% {
+			transform: translateY(0);
+		}
+		100% {
+			transform: translateY(-100%);
+		}
+	}
+	@keyframes hideLayer {
+		0% {
+			transform: translateY(-100%);
+		}
+		100% {
+			transform: translateY(0);
+		}
+	}
+	@keyframes showAmnation {
+		0% {
+			top: -12rpx;
+			opacity: 0;
+		}
+		50% {
+			top: -60rpx;
+			opacity: 1;
+		}
+		100% {
+			top: -100rpx;
+			opacity: 0;
+		}
+	}
+	@keyframes hideAmnation {
+		0% {
+			top: -100rpx;
+			opacity: 0;
+		}
+		100% {
+			top: -12rpx;
+			opacity: 0;
+		}
+	}
+	.popup {
+		position: fixed;
+		top: 0;
+		width: 100%;
+		height: 100%;
+		z-index: 999;
+		display: none;
+		.mask{
+			position: fixed;
+			top: 0;
+			width: 100%;
+			height: 100%;
+			z-index: 21;
+			background-color: rgba(0, 0, 0, 0.6);
+		}
+		.layer {
+			position: fixed;
+			z-index: 22;
+			bottom: -294rpx;
+			width: 702rpx;
+			padding: 24rpx 24rpx 36rpx 24rpx;
+			height: 260rpx;
+			border-radius: 20rpx 20rpx 0 0;
+			background-color: #fff;
+			display: flex;
+			flex-wrap: wrap;
+			align-content: space-between;
+			.content {
+				width: 100%;
+			}
+			.btn {
+				width: 100%;
+				height: 88rpx;
+				margin-top: 20rpx;
+				.button {
+					width: 100%;
+					height: 88rpx;
+					color: #fff;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					background: $btn-confirm;
+					font-size: $font-size-28;
+					border-radius: 14rpx;
+				}
+			}
+		}
+		
+		&.show {
+			display: block;
+			.mask{
+				animation: showPopup 0.2s linear both;
+			}
+			.layer {
+				animation: showLayer 0.2s linear both;
+			}
+		}
+		&.hide {
+			display: block;
+			.mask{
+				animation: hidePopup 0.2s linear both;
+			}
+			
+			.layer {
+				animation: hideLayer 0.2s linear both;
+			}
+		}
+		&.none {
+			display: none;
+		}
+		&.service {
+			.row {
+				margin: 30upx 0;
+				.title {
+					font-size: 30upx;
+					margin: 10upx 0;
+				}
+				.description {
+					font-size: 28upx;
+					color: #999;
+				}
+			}
+		}
+		.layer-smimg{
+			width: 114rpx;
+			height: 114rpx;
+			float: left;
+			border-radius: 10rpx;
+			margin-right: 24rpx;
+			image{
+				width: 114rpx;
+				height: 114rpx;	
+				border-radius: 10rpx;
+			}
+		}
+		.layer-nunbox{
+			justify-content: space-between;
+			align-items: center;
+			width: 536rpx;
+			height: auto;
+			float: left;
+			.layer-nunbox-t{
+				width: 100%;
+				height:44rpx;
+				position:relative;
+				display: flex;
+				margin-bottom: 10rpx;
+				.text{
+					font-size: $font-size-24;
+					line-height: 48rpx;
+					color: #999999;
+				}
+				.layer-nunbox-text{
+					line-height: 44rpx;
+					font-size: $font-size-28;
+				}
+				.number-box{
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					.iconfont{
+						font-size: $font-size-32;
+						padding:0 20rpx;
+						font-size: $text-color;
+					}
+					.btn-input{
+						width: 62rpx;
+						height: 48rpx;
+						line-height: 48rpx;
+						background: #F8F8F8;
+						border-radius: 4rpx;
+						text-align: center;
+						font-size: $font-size-28;
+					}
+				}
+				.product-step{
+					position: absolute;
+					left: 45rpx;
+					bottom: 0;
+					height: 44rpx;
+					background: #FFFFFF;
+				}
+			}
+			.layer-nunbox-b{
+				width: 100%;
+				height:44rpx;
+				margin-top: 13rpx;
+			}
+			.text{
+				line-height: 44rpx;
+				font-size: $font-size-28;
+				.p{
+					color: #FF2A2A;
+				}
+				.p:first-child{
+					margin-left: 30rpx;
+				}
+				.p.sm{
+					font-size: $font-size-24;
+				}
+			}
+		}
+	}
+	.tui-popup-box {
+		position: relative;
+		box-sizing: border-box;
+		min-height: 220rpx;
+		padding:0rpx 24rpx 0 24rpx;
+		.title{
+			font-size: $font-size-34;
+			color: $text-color;
+			line-height: 88rpx;
+			text-align: center;
+			float: left;
+			width: 100%;
+			height: 88rpx;
+		}
+		.content{
+			width: 100%;
+			height: auto;
+			float: left;
+			.content-tr{
+				width: 100%;
+				height: 58rpx;
+				line-height: 58rpx;
+				display: flex;
+				.content-td{
+					display: flex;
+					flex: 3;
+					font-size: $font-size-26;
+					color: #999999;
+					line-height: 58rpx;
+					text-align: left;
+				}
+				.content-th{
+					display: flex;
+					flex: 7;
+					font-size: $font-size-26;
+					color: #333333;
+					line-height: 58rpx;
+					text-align: left;
+				}
+			}
+		}
+	}
+	.tui-popup-btn {
+		width: 100%;
+		height: auto;
+		float: left;
+		margin-top: 24rpx;
+		.tui-button{
+			width: 100%;
+			height: 88rpx;
+			background: $btn-confirm;
+			line-height: 88rpx;
+			text-align: center;
+			color: #FFFFFF;
+			font-size: $font-size-28;
+			border-radius: 44rpx;
+		}
+	}
+	/*富文本样式*/
+	rich-text.p{
+		width: 702rpx !important;
+		padding: 0 24rpx;
+		text-align: justify;
+	}
+	rich-text.img{
+		width: 100%;
+		height: auto;
+	}
+</style>

+ 33 - 15
pages/login/register-select.vue

@@ -4,13 +4,19 @@
 		<view class="main">
 			<view class="title">请选择注册的账号类型</view>
 			<view class="main-item">
-				<view class="item" @click.stop="this.$api.navigateTo('/pages/login/register')">
-					<view class="icon"><image src="https://admin-b.caimei365.com/userfiles/1/images/photo/2020/11/%E6%9C%BA%E6%9E%84.png" mode=""></image></view>
-					<view class="text">机构</view>
-				</view>
 				<view class="item" @click.stop="this.$api.navigateTo('/pages/login/register-supplier')">
-					<view class="icon"><image src="https://admin-b.caimei365.com/userfiles/1/images/photo/2020/11/%E4%BE%9B%E5%BA%94%E5%95%86.png" mode=""></image></view>
-					<view class="text">供应商</view>
+					<view class="icon">
+						<image src="https://admin-b.caimei365.com/userfiles/1/images/photo/2020/11/%E4%BE%9B%E5%BA%94%E5%95%86(1).png" mode=""></image>
+					</view>
+					<view class="text my">采购方(卖家)</view>
+					<view class="text-small">仪器/产品/服务供应商</view>
+				</view>
+				<view class="item" @click.stop="this.$api.navigateTo('/pages/login/register')">
+					<view class="icon">
+						<image src="https://admin-b.caimei365.com/userfiles/1/images/photo/2020/11/%E6%9C%BA%E6%9E%84.png" mode=""></image>
+					</view>
+					<view class="text by">采购方(买家)</view>
+					<view class="text-small">医院机构/美容会所/个人买家</view>
 				</view>
 			</view>
 		</view>
@@ -43,33 +49,34 @@
 		height: 100%;
 		position: relative;
 		box-sizing: border-box;
-		padding-top: 300rpx;
+		padding-top: 100rpx;
 		.main{
 			width: 100%;
 			height: 370rpx;
-		
 			.title{
 				width: 100%;
 				height: 46rpx;
 				line-height: 46rpx;
 				float: left;
 				text-align: center;
-				font-size: $font-size-32;
+				font-size: $font-size-34;
 				color: $text-color;
 				font-weight: bold;
 			}
 			.main-item{
 				width: 100%;
-				height: 324rpx;
+				height: auto;
 				float: left;
 				box-sizing: border-box;
-				padding: 0 89rpx;
-				margin-top: 70rpx;
+				margin-top: 20rpx;
 				.item{
-					width: 186rpx;
+					width: 100%;
 					height: auto;
-					margin: 0 50rpx;
 					float: left;
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					margin-top: 50rpx;
 					.icon{
 						width: 186rpx;
 						height: 186rpx;
@@ -83,7 +90,18 @@
 						line-height: 54rpx;
 						font-size: $font-size-30;
 						text-align: center;
-						color: #3b77ff;
+						&.by{
+							color: #3b77ff;
+						}
+						&.my{
+							color: #ff7a51;
+						}
+					}
+					.text-small{
+						line-height: 54rpx;
+						font-size: $font-size-24;
+						text-align: center;
+						color: #999999;
 					}
 				}
 			}

+ 1 - 1
pages/login/register-supplier.vue

@@ -205,7 +205,7 @@
 					<view class="agree-text"  @tap.stop="agreeCheck()">
 						<button class="checkbox iconfont" :class="[isCheck?'icon-gouxuan':'icon-weigouxuan']"></button> 
 						我已阅读并同意
-						<text @click.stop="this.$api.navigateTo('/pages/service/organagree')">《供应商协议》</text>
+						<text @click.stop="this.$api.navigateTo('/pages/service/supplieragree')">《供应商协议》</text>
 						<text @click.stop="this.$api.navigateTo('/pages/service/useragree')">《用户协议》</text>及
 						<text @click.stop="this.$api.navigateTo('/pages/service/privacyagree')">《隐私权政策》</text>
 					</view>

+ 1 - 2
pages/service/aftersale.vue

@@ -6,7 +6,6 @@
 
 <script>
 	import richTextTemplate from '@/components/cm-module/listTemplate/richTextTemplate'
-	import { queryAfterSale } from "@/api/other.js"
 	export default{
 		components: {
 		   richTextTemplate
@@ -22,7 +21,7 @@
 		},
 		methods:{
 			initData(){
-				queryAfterSale().then(response =>{
+				this.CommonService.QueryAfterSale().then(response =>{
 					let _data =response.data,
 						type = this.type;
 					if(type) {

+ 1 - 2
pages/service/shoppingnotice.vue

@@ -6,7 +6,6 @@
 
 <script>
 	import richTextTemplate from '@/components/cm-module/listTemplate/richTextTemplate'
-	import { queryAfterSale } from "@/api/other.js"
 	export default{
 		components: {
 		   richTextTemplate
@@ -25,7 +24,7 @@
 		methods:{
 			initData(){
 				let self = this;
-				queryAfterSale().then(response =>{
+				this.CommonService.QueryAfterSale().then(response =>{
 					let _data =response.data,
 						type = self.type;
 					if(type) {

+ 40 - 0
pages/service/supplieragree.vue

@@ -0,0 +1,40 @@
+<template>
+	<view class="container clearfix rich-text-temp">
+		<rich-text-template ref="childTemplate"></rich-text-template>
+	</view>
+</template>
+
+<script>
+	import richTextTemplate from '@/components/cm-module/listTemplate/richTextTemplate'
+	import { protocolAgree } from "@/api/other.js"
+	
+	export default{
+		components: {
+		   richTextTemplate
+		},
+		data() {
+			return{
+				type: ''
+			}
+		},
+		onLoad(){
+			this.type = 'afterSale';
+			this.initData();
+		},
+		methods:{
+			initData(){
+				let self = this;
+				protocolAgree({helpPageID:1036}).then(response =>{
+					let data =response.data.content
+					self.$refs.childTemplate.html = self.$api.adaptRichTextImg(data);
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000)
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+
+</style>

+ 2 - 2
pages/tabBar/home/index.vue

@@ -130,7 +130,7 @@
 							if(response.data.userIdentity ==1){
 								this.$api.navigateTo('/seller/pages/index/index')
 							}else if(response.data.userIdentity === 3){
-								// this.$api.navigateTo('/supplier/pages/index/index')
+								this.$api.navigateTo('/supplier/pages/index/index')
 							}
 							this.getHomeInformation()
 						}).catch(error =>{
@@ -347,7 +347,7 @@
 
 <style lang="scss">
 	page{
-		background-color: #F7F7F7;
+		background-color: #FFFFFF;
 	}
 	.container-section{
 		width: 100%;

+ 1 - 2
pages/tabBar/user/user.vue

@@ -143,7 +143,6 @@
 	import authorize from '@/common/config/authorize.js'
 	import { mapState,mapMutations } from 'vuex'
 	import { cancelPrompt } from "@/api/use.js"
-	import { queryAfterSale } from "@/api/other.js"
 	
 	
 	export default{
@@ -246,7 +245,7 @@
 				})
 			},
 			getPhone(){
-				queryAfterSale().then(response =>{
+				this.CommonService.QueryAfterSale().then(response =>{
 					this.contactNumber = response.data.contactNumber
 				}).catch(error =>{
 					this.$util.msg(error.msg,2000);

+ 1 - 2
pages/user/about/about.vue

@@ -6,7 +6,6 @@
 
 <script>
 	import richTextTemplate from '@/components/cm-module/listTemplate/richTextTemplate'
-	import { queryAfterSale } from "@/api/other.js"
 	
 	var self;
 	export default{
@@ -24,7 +23,7 @@
 		},
 		methods:{
 			initData(){
-				queryAfterSale().then(response =>{
+				this.CommonService.QueryAfterSale().then(response =>{
 					let _data =response.data,
 						type = this.type;
 					if(type) {

+ 5 - 0
services/common.service.js

@@ -18,4 +18,9 @@ export default class CommonService {
 	GetHomeRecommendInfo (data = {}) {
 		return this.AjaxService.get({ url:'/home/recommend', data, isLoading: false })
 	}
+	/* 获取其他服务信息 */
+	QueryAfterSale (data = {}) {
+		return this.AjaxService.get({ url:'/home/afterSale', data, isLoading: false })
+	}
+	
 }

+ 12 - 0
services/shop.service.js

@@ -6,6 +6,18 @@ export default class ShopService {
 		Object.assign(this, { AjaxService })
 		this.name = 'ShopService'
 	}
+	/* 小程序供应商个人中心 */
+	GetHomePageData (data = {}) {
+		return this.AjaxService.get({ url:'/supplier/homePageData', data, isLoading: true })
+	}
+	/* 小程序供应商我的商品 */
+	GetSupplierPyProduct (data = {}) {
+		return this.AjaxService.get({ url:'/supplier/myProduct', data, isLoading: true })
+	}
+	/* 小程序供应商我的订单 */
+	GetSupplierMyOrderList (data = {}) {
+		return this.AjaxService.get({ url:'/supplier/myOrderList', data, isLoading: true })
+	}
 	/* 小程序发货-权限控制 */
 	MiniShipments (data = {}) {
 		return this.AjaxService.post({ url:'/supplier/miniShipments', data, isLoading: true })

+ 2 - 2
supplier/pages/deliver/add-logistics.vue

@@ -438,7 +438,7 @@
 			width: 100%;
 			height: 100%;
 			background-color: #FFF;
-			border-radius: 14rpx;
+			border-radius: 44rpx;
 			border: 1px solid $color-system;
 			line-height: 88rpx;
 			text-align: center;
@@ -471,7 +471,7 @@
 			text-align: center;
 			color: #FFF;
 			font-size: $font-size-28;
-			border-radius: 14rpx;
+			border-radius: 44rpx;
 		}
 		.logistics-remarks{
 			width: 100%;

+ 1 - 1
supplier/pages/deliver/deliver-record.vue

@@ -301,7 +301,7 @@
 				width: 400rpx;
 				height: 80rpx;
 				background: $btn-confirm;
-				border-radius: 10rpx;
+				border-radius: 40rpx;
 				line-height: 80rpx;
 				font-size: $font-size-28;
 				text-align: center;

+ 3 - 3
supplier/pages/order/order-details.vue

@@ -1,7 +1,7 @@
 <template>
-	<view class="details clearfix" :style="{paddingBottom :isIphoneX ? (130+68)+'rpx' : '130rpx'}">
-		<cu-custom :navbar-data='nvabarData'></cu-custom>
-		<view class="container-details" :style="{paddingTop:CustomBar+'px'}" v-show="isRequest">
+	<view class="details clearfix">
+		<!-- <cu-custom :navbar-data='nvabarData'></cu-custom> -->
+		<view class="container-details" v-show="isRequest">
 			<!-- 订单信息 -->
 			<view class="information-content">
 				<view class="info-item"><view class="item-view"><text class="label">供应商:{{orderInfo.shopName ? orderInfo.shopName :''}}</text></view></view>

文件差异内容过多而无法显示
+ 202 - 413
supplier/pages/order/order-list.vue


+ 82 - 82
supplier/pages/user/my-product.vue

@@ -16,10 +16,13 @@
 		<view class="product-content">
 			<view  :class="{'tui-order-list':scrollTop >= 0}" class="clearfix">
 				<!-- 空白页 -->
-				<empty v-if="isEmpty" :typeIndex="currentTabs" :navbarHeight="navbarHeight"></empty>
+				<view class="empty-container" v-if="isEmpty">
+					<image class="empty-container-image" src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AY2ZjAABpmnBICH4247.png"></image>
+					<text class="error-text">暂无数据^_^</text>
+				</view>
 				<!-- 列表 -->
 				<checkbox-group @change="buyChange" class="tui-group">
-					<view class="tui-cart-cell  tui-mtop" v-for="(item,index) in organizeProducts" :key="index">
+					<view class="tui-cart-cell  tui-mtop" v-for="(item,index) in dataList" :key="index">
 						<tui-swipe-actions :actions="actions" @click="handlerButton($event,item)" :params="item">
 							<template v-slot:content>
 								<view class="tui-goods-item">
@@ -30,15 +33,17 @@
 										<image :src="item.mainImage" class="tui-goods-img"/>
 									</view>
 									<view class="tui-goods-info"> 
-										<view class="tui-goods-title">{{item.name}}</view>
+										<view class="tui-goods-title">{{ item.name }}</view>
 										<view class="tui-price-box">
-											<view class="tui-goods-price">¥{{item.price | NumFormat}}</view>
+											<view class="tui-goods-price">¥{{item.price1 | NumFormat}}</view>
 										</view>
-										<view class="tui-goods-pip">市场价:¥{{item.price | NumFormat}}</view>
-										<view class="tui-goods-pip">分类:耗材配件-配件-探头</view>
+										<view class="tui-goods-pip">市场价:¥{{item.normalPrice | NumFormat}}</view>
+										<view class="tui-goods-pip">分类:{{ item.typeName }}</view>
 									</view>
 									<view class="tui-goods-status">
-										<view class="status-text">{{ item.verifyStatus | verifyStatusFilter }}</view>
+										<view class="status-text" :style="{ color: verifyColorFilter(item.validFlag)}">
+											{{ item.validFlag | verifyStatusFilter }}
+										</view>
 									</view>
 								</view>
 							</template>
@@ -118,24 +123,23 @@
 	import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
 	import tuiNomore from "@/components/tui-components/nomore/nomore"
 	import modalLayer from "@/components/modal-layer"
-	import empty from "@/components/empty";
 	import { mapState,mapMutations } from 'vuex'
 	const defaultListQuery = {
-			keyword: '',
-			pageNum: 1,
-			pageSize: 10,
-			publishStatus: '',
-			verifyStatus: '',
-			productSn: '',
-			productCategoryId: '',
-			brandId: '',
-			merchantId:''
+			shopID:'',
+			pageNum:1,
+			pageSize:10,
+			productCode:'',//货号
+			name:'',//商品名称
+			validFlag:'',//状态
+			featuredFlag:'',//是否主推
+			bigTypeID:0,//一级
+			smallTypeID:0,//二级
+			tinyTypeID:0//三级
 	 };
 	export default{
 		components: {
 			tuiLoadmore,
-			tuiNomore,
-			empty
+			tuiNomore
 		},
 		data() {
 			return{	
@@ -171,8 +175,8 @@
 				isModalLayer: false,
 				loadding: false,
 				pullUpOn: true,
-				total: 0,
 				pullFlag: true,
+				hasNextPage: false,
 				navbarHeight:'',
 				nomoreText: '上拉显示更多',
 				contentModalText:'',//操作文字提示语句
@@ -181,10 +185,8 @@
 				handlerProduct:{},//储存监听商品信息
 				OperationType:'',//操作类型
 				isCmcustomClass : 'left',
-				count:0,
-				offTheShelf:0,
-				onTheShelf:0,
-				organizeProducts:[]
+				featuredNum:0,
+				
 			}
 		},
 		onLoad(){
@@ -194,62 +196,40 @@
 			NumFormat:function(text) {//处理金额
 				return Number(text).toFixed(2);
 			},
-			verifyStatusFilter:function(value) {//审核状态
-			if (value === 1) {
-			  return '审核通过';
-			} else {
-			  return '未审核';
-			}
-		  }
+			verifyStatusFilter: function(state){
+				let stateText = '',
+					stateTextObject={
+						'2':'已上架',
+						'3':'已下架',
+						'1':'待审核',
+						'8':'审核未通过',
+						'9':'已冻结',
+						'10':'已隐身',
+						'0':'已删除'
+					};
+				Object.keys(stateTextObject).forEach(function(key) {
+					if(key == state){
+						stateText = stateTextObject[key]
+					}
+				});
+				return stateText;
+			},
 		},
 		computed: {
 			...mapState(['hasLogin','userInfo'])
 		},
 		methods:{
 			...mapMutations(['login','logout']),
-			getOrganizeProducts(){//获取模块三商品
-				this.ProductService.queryProductPreferred({userId:this.userID,preferredFlag:100,pageNum:1,pageSize:20}).then(res =>{
-					this.organizeProducts = res.data.results
-					//循环根据状态设置操作按钮:0,1,2,3,8,9(可编辑)、1,2(预览商品)、2(下架)、
-					this.getProductPrice()
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
-				})
-			},
-			getProductPrice(){//获取商品或者活动价格
-				let productIdArr = [];
-				let productIds ='';
-				this.organizeProducts.map(item=>{// 0公开价格 1不公开价格 2仅对会员机构公开
-					productIdArr.push(item.productID)
-				})
-				productIds = productIdArr.join(",");
-				this.ProductService.querySearchProductPrice({userId: this.userID,productIds:productIds}).then(response =>{
-					this.organizeProducts = this.ReturnNewProducts(this.organizeProducts,response.data);
-					this.skeletonShow = false;
-				}).catch(error =>{
-					this.$util.msg(error.msg,2000)
-				})
-			},
-			ReturnNewProducts(Array,list){
-				let NewArray = []
-				Array.map(item=>{
-					for (let i = 0; i < list.length; i++) {
-						if( item.productID == list[i].productId ){
-							NewArray.push(Object.assign(item,list[i])) 
-						}
-					}
-				});
-				return NewArray
-			},
 			GetProductListInfo(){
 				this.listQuery.pageNum = 1
-				this.ProductService.GetProductList(this.listQuery).then(response =>{
-					let resData = response.data.list
-					this.total = response.data.total;
-					if(resData && resData.length > 0){
+				this.ShopService.GetSupplierPyProduct(this.listQuery).then(response =>{
+					let data = response.data.productPage
+					this.hasNextPage = data.hasNextPage;
+					console.log(data.results)
+					if(data.results && data.results.length > 0){
 						this.isEmpty = false;
-						this.dataList = [...resData];
-						if(this.total > this.dataList.length){
+						this.dataList = [...data.results];
+						if(this.hasNextPage){
 							this.pullUpOn = false
 							this.nomoreText = '上拉显示更多'
 						}else{
@@ -270,12 +250,12 @@
 			GetOnReachBottomData(index){//上拉加载
 				this.listQuery.pageNum += 1
 				this.ProductService.GetProductList(this.listQuery).then(response =>{
-					let resData = response.data.list
-					this.total = response.data.total;
-					this.dataList = this.dataList.concat(resData)
+					let data = response.data.productPage
+					this.hasNextPage = data.hasNextPage;
+					this.dataList = this.dataList.concat(data.results)
 					this.pullFlag = false;// 防上拉暴滑
 					setTimeout(()=>{this.pullFlag = true;},500)
-					if(this.total > this.dataList.length){
+					if(this.hasNextPage){
 						this.pullUpOn = false
 						this.nomoreText = '上拉显示更多'
 					}else{
@@ -290,6 +270,9 @@
 				this.leftDrawer = false;
 				this.rightDrawer = false;
 			},	
+			handSearchClear(){//重置搜索条件
+					
+			},
 			handlerButton(e,item){//监听侧滑按钮点击事件
 				switch(this.currents){
 					case 0://全部商品列表
@@ -466,6 +449,23 @@
 						break;
 				}
 			},
+			verifyColorFilter: function(state){
+				let stateColor = '',
+					stateColorObject={
+						'2':'#1890f9',
+						'1':'#f9a94b',
+						'0':'#FFB12A',
+						'3':'#627386',
+						'8':'#FF2A2A',
+						'9':'#f94b4b'
+					};
+				Object.keys(stateColorObject).forEach(function(key){
+					if(key == state){
+						stateColor = stateColorObject[key]
+					}
+				});
+				return stateColor;
+			},
 		},
 		onPageScroll(e){//实时获取到滚动的值
 			if(e.scrollTop>30){
@@ -489,8 +489,8 @@
 		},
 		onShow(){
 			this.$api.getComStorage('userInfo').then((resolve) =>{
-				this.listQuery.merchantId = resolve.id
-				this.getOrganizeProducts()
+				this.listQuery.shopID = resolve.shopID
+				this.GetProductListInfo()
 			})
 		}	
 	}
@@ -819,13 +819,14 @@
 	}	
 	.tui-goods-item {
 		display: flex;
-		padding: 30rpx 4rpx;
+		padding: 30rpx 20rpx;
 		box-sizing: border-box;
 		border-bottom: 1px solid #EBEBEB;
 	}
 	.tui-goods-checkBox{
 		display: flex;
 		align-items: center;
+		margin: 0 15rpx;
 		.checkbox{
 			display: flex;
 			margin: 0;
@@ -852,7 +853,6 @@
 		width: 180rpx;
 		height: 180rpx !important;
 		border-radius: 12rpx;
-		margin-left: 20rpx;
 		.tui-goods-img {
 			width: 180rpx;
 			height: 180rpx !important;
@@ -862,7 +862,7 @@
 		}
 	}
 	.tui-goods-info {
-		width: 370rpx;
+		width: 420rpx;
 		padding-left: 20rpx;
 		display: flex;
 		flex-direction: column;
@@ -873,12 +873,12 @@
 		position: relative;
 	}
 	.tui-goods-status{
-		width: 100rpx;
+		width: 160rpx;
 		float: right;
 		.status-text{
 			font-size: $font-size-24;
 			line-height: 44rpx;
-			text-align: right;
+			text-align: center;
 			color: #666666;
 		}
 	}

+ 1 - 1
supplier/pages/user/setting/setting.vue

@@ -31,7 +31,7 @@
 		methods:{
 			initSetting(){
 				this.$api.getStorage().then((resolve) =>{
-					this.UserService.PersonalInfo({userID:resolve.userID}).then(response =>{
+					this.ShopService.GetHomePageData({userId:resolve.userID}).then(response =>{
 						this.bindMobile=response.data.user.bindMobile
 					}).catch(error =>{
 						this.$util.msg(error.msg,2000)

部分文件因为文件数量过多而无法显示