Ver código fonte

commit 供应商注册

zhengjinyi 4 anos atrás
pai
commit
b5b0785c8b

+ 0 - 14
api/utils.js

@@ -68,20 +68,6 @@ export function getEmailCode(params) {
 		})
 	});
 }
-/**
- *获取手机验证码
- */
-export function getMobileCode(params) {
-	return new Promise(function(resolve,reject) {
-		request.get("/user/activateCodeByReg",params, res => {
-			if(res.code == 0){
-				resolve(res);
-			}else{
-				reject(res)
-			}
-		})
-	});
-}
 /**
  *注册专用获取验证码
  */

+ 2 - 2
common/config/config.js

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

+ 4 - 4
components/cm-custom/custom-p.vue

@@ -2,13 +2,13 @@
 	<!-- 自定义导航栏 -->
 	<view class='navbar-wrap' :class="[headerColor? 'bg-color' : 'no-color']" :style="{height:navbarHeight+'px',paddingTop:statusBarHeight+'px'}"> 
 	  	<view class="navbar-icon" v-if="navbarData.showCapsule ? navbarData.showCapsule : true" 
-			  :style="{top:navbarBtn.top + statusBarHeight+'px;',lineHeight:navbarBtn.height+'px;',left:(navbarBtn.right+5)+'px;',width:navbarBtn.height+'px;',height:navbarBtn.height+'px;'}">
+			  :style="{top:navbarBtn.top + statusBarHeight+'px;',lineHeight:navbarBtn.height+'px;',left:navbarBtn.right+'px;',width:navbarBtn.height+'px;',height:navbarBtn.height+'px;'}">
 			  <text v-if='haveBack' @click="_goBack" class="iconfont icon-fanhui"></text>
 			  <text v-else  @click="_goHome" class="iconfont icon-shouye"></text>
 	  	</view>
 		<view class="navbar-text" :style="{top:navbarBtn.top + statusBarHeight+'px;',height:navbarBtn.height+'px;',fontSize:fontSizeSetting+'px;'}">
-	    	<view class="gosearch-btn" :style="{paddingLeft:navbarBtn.height+'px;',left:(navbarBtn.height+30)+'px;',borderRadius:navbarBtn.height/2+'px;',width:(375-navbarBtn.width-(navbarBtn.width/2)-15)+'px;',lineHeight:navbarBtn.height+'px;'}">
-				<text class="iconfont icon-sousuo":style="{width:navbarBtn.height+'px;',height:navbarBtn.height+'px;',lineHeight:navbarBtn.height+'px;'}"></text>
+	    	<view class="gosearch-btn" :style="{paddingLeft:navbarBtn.height+'px;',right:(navbarBtn.width+20)+'px;',borderRadius:(navbarBtn.height/2)+'px;',width:(375-navbarBtn.width*2)+'px;',lineHeight:navbarBtn.height+'px;'}">
+				<text class="iconfont icon-sousuo" :style="{width:navbarBtn.height+'px;',height:navbarBtn.height+'px;',lineHeight:navbarBtn.height+'px;'}"></text>
 				<view class="input" @click="this.$api.navigateTo(clickPath)">搜索项目仪器</view>
 			</view>
 	  	</view>
@@ -135,6 +135,7 @@
 		 }
 	}
 	.navbar-text {
+		 width: 100%;
 		 color: #000000;
 		 font-weight: 500;
 		 position: fixed;
@@ -161,7 +162,6 @@
 			z-index: 10;
 		}
 		.input{
-			width: 400rpx;
 			height: 100%;
 			float: left;
 			font-size: $font-size-24;

+ 4 - 4
components/cm-module/headerNavbar/header-poduct.vue

@@ -2,13 +2,13 @@
 	<!-- 自定义导航栏 -->
 	<view class='navbar-wrap' :class="[headerColor? 'bg-color' : 'no-color']" :style="{height:navbarHeight+'px',paddingTop:statusBarHeight+'px'}"> 
 	  	<view class="navbar-icon" v-if="navbarData.showCapsule ? navbarData.showCapsule : true" 
-			  :style="{top:navbarBtn.top + statusBarHeight+'px;',lineHeight:navbarBtn.height+'px;',left:(navbarBtn.right+5)+'px;',width:navbarBtn.height+'px;',height:navbarBtn.height+'px;'}">
+			  :style="{top:navbarBtn.top + statusBarHeight+'px;',lineHeight:navbarBtn.height+'px;',left:navbarBtn.right+'px;',width:navbarBtn.height+'px;',height:navbarBtn.height+'px;'}">
 			  <text v-if='haveBack' @click="_goBack" class="iconfont icon-fanhui"></text>
 			  <text v-else  @click="_goHome" class="iconfont icon-shouye"></text>
 	  	</view>
 		<view class="navbar-text" :style="{top:navbarBtn.top + statusBarHeight+'px;',height:navbarBtn.height+'px;',fontSize:fontSizeSetting+'px;'}">
-	    	<view class="gosearch-btn" :style="{paddingLeft:navbarBtn.height+'px;',left:(navbarBtn.height+30)+'px;',borderRadius:navbarBtn.height/2+'px;',width:(375-navbarBtn.width-(navbarBtn.width/2)-15)+'px;',lineHeight:navbarBtn.height+'px;'}">
-				<text class="iconfont icon-sousuo":style="{width:navbarBtn.height+'px;',height:navbarBtn.height+'px;',lineHeight:navbarBtn.height+'px;'}"></text>
+	    	<view class="gosearch-btn" :style="{paddingLeft:navbarBtn.height+'px;',right:(navbarBtn.width+30)+'px;',borderRadius:(navbarBtn.height/2)+'px;',width:(375-navbarBtn.width*2)+'px;',lineHeight:navbarBtn.height+'px;'}">
+				<text class="iconfont icon-sousuo" :style="{width:navbarBtn.height+'px;',height:navbarBtn.height+'px;',lineHeight:navbarBtn.height+'px;'}"></text>
 				<view class="input" @click="this.$api.navigateTo(clickPath)">搜索采美商品</view>
 			</view>
 	  	</view>
@@ -135,6 +135,7 @@
 		 }
 	}
 	.navbar-text {
+		 width: 100%;
 		 color: #000000;
 		 font-weight: 500;
 		 position: fixed;
@@ -161,7 +162,6 @@
 			z-index: 10;
 		}
 		.input{
-			width: 400rpx;
 			height: 100%;
 			float: left;
 			font-size: $font-size-24;

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

@@ -1,7 +1,7 @@
 <template name="alert">
 	<view class="alert spec" :class="specClass">
 		<!-- 运费弹窗说明 -->
-		<view class="freight-alert"  @click.stop="unBindUpgrade">
+		<view class="freight-alert">
 			<view class="content clearfix">
 				<view class="text">采美采购商城(隶属于采美365网)是美容行业一站式B2B采购交易服务平台,供应商入驻需平台审核。注册说明如下,请您仔细阅读:</view>
 				<view class="text">1、本商城商品需绝对保证正品,谢绝非自营/自有品牌(以登记备案为准),代理商应出具授权书等说明文件,杜绝山寨、假冒伪劣等侵权、侵害他人利益的行为。</view>

+ 61 - 28
pages/goods/instrument-details.vue

@@ -29,26 +29,37 @@
 						<text class="iconfont icon-xiayibu"></text>
 					</view>
 				</view>
-				<view class="product-wrap clearfix">
-					
+				<view class="product-message clearfix">
+					<view class="msg-pin clearfix"  v-for="(label, idx) in firstFloorList" :key="idx">
+						<view class="label">{{ label.name }}:</view>
+						<view class="label-li">
+							<text>{{ label.content ? label.content : '暂无' }}</text>
+						</view>
+					</view>
 				</view>			
 			</view>
 			<view class="product-details">
-				<!-- 商品详情 -->
-				<view class="title">
-					<view class="title-tab">商品详情</view>
-				</view>
+				<view  class="navbar">
+					<view class="nav-item tui-skeleton-fillet" v-for="(tab, index) in crmDetailList" :key="index"  :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">
+						<text>{{ tab.name }}</text>
+						<text class="line"></text>
+					</view>
+				</view>	
+	
+			</view>	
+			<view class="product-details service" v-show="tabCurrentIndex == 0">
 				<view class="content tui-banner product-rich-text tui-skeleton-rect">
-					<parser :html="html" :img-mode="widthFix"></parser>
+					<parser :html="crmDetailList[tabCurrentIndex].content" :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 class="product-details service" v-show="tabCurrentIndex == 1">
+				<view class="content service">
+					{{ crmDetailList[tabCurrentIndex].content }}
 				</view>
+			</view>	
+			<view class="product-details service" v-show="tabCurrentIndex == 2">
 				<view class="content service">
-					<cm-service :product="product.productDetail" v-if="isRequest"></cm-service>
+					{{ crmDetailList[tabCurrentIndex].content }}
 				</view>
 			</view>	
 			<view class="product-details recommend">
@@ -69,7 +80,7 @@
 					<view class="content">
 						<view class="content-tr"  v-for="(item, index) in secondFloorList" :key="index">
 							<view class="content-td">{{ item.name }}:</view>
-							<view class="content-th">{{ item.content }}</view>
+							<view class="content-th">{{ item.content ? item.content : '暂无' }}</view>
 						</view>
 					</view>
 					<view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom :isIphoneX ? '68rpx' : '0rpx' }">
@@ -125,7 +136,6 @@
 				current:0,
 				isShareType:'',
 				isHeaderPoduct:false,
-				navbarFiexd:'none',
 				isRecommend:false,
 				isRarameter:true,
 				isService:false,
@@ -268,10 +278,8 @@
 				}
 			}
 			if(e.scrollTop>700){
-				this.navbarFiexd = 'fixed'
 				this.isScrollTop = true
 			}else{
-				this.navbarFiexd = 'none'
 				this.isScrollTop = false
 			}
 		},
@@ -347,13 +355,31 @@
 		bottom: 30rpx;
 		right: 0;
 	}
-	.product-wrap{
+	.product-message{
 		width: 100%;
 		height: auto;
-		padding: 24rpx 0 0 0;
-		background-color: #FFFFFF;
-		border-bottom: 20rpx solid #F7F7F7;
-		
+		box-sizing: border-box;
+		padding: 0 24rpx;
+		margin-top: 24rpx;
+		.msg-pin{
+			width: 100%;
+			height: auto;
+			margin-bottom: 16rpx;
+			.label{
+				float: left;
+				line-height: 48rpx;
+				font-size: $font-size-28;
+				color: #999999;
+			}
+			.label-li{
+				width: 568rpx;
+				float: left;
+				line-height: 48rpx;
+				font-size: $font-size-28;
+				color: #333333;
+				margin-left: 10rpx;
+			}
+		}
 	}
 	.product-parameter{
 		width: 100%;
@@ -363,6 +389,7 @@
 		background-color: #FFFFFF;
 		position: relative;
 		display: flex;
+		margin-top: 24rpx;
 		.view{
 			width: 100%;
 			height: 90rpx;
@@ -391,9 +418,12 @@
 	.product-details {
 		width: 100%;
 		background: #FFFFFF;
-		border-bottom: 20rpx solid #F7F7F7;
-		&.service{
-			border-bottom: none;
+		.content{
+			&.service{
+				text-align: justify;
+				font-size: $font-size-26;
+				color: #666666;
+			}
 		}
 		&.recommend{
 			background-color: #F7F7F7;
@@ -448,14 +478,14 @@
 			background: #fff;
 			z-index: 10;
 			display: flex;
-			border-bottom: 1px solid #F8F8F8;
+			border-top: 20rpx solid #F7F7F7;
+			padding-bottom: 20rpx;
 			&.fixed{
 				position: fixed;
 				left: 0;
 			}
 			.nav-item {
 				display: flex;
-				flex: 1;
 				justify-content: center;
 				align-items: center;
 				height: 96rpx;
@@ -464,18 +494,21 @@
 				position: relative;
 				float: left;
 				position: relative;
+				padding: 0 15rpx;
+				margin-right: 20rpx;
 				.line{
-					width: 60%;
+					width: 40rpx;
 					height: 2px;
 					border-radius: 1px;
 					background: #FFFFFF;
 					position: absolute;
 					bottom: 0;
 					left: 50%;
-					margin-left: -30%;
+					margin-left: -20rpx;
 				}
 				&.current{
 					color:$color-system;
+					font-weight: bold;
 					.line{
 						background: $color-system;
 					}

+ 241 - 203
pages/goods/product.vue

@@ -14,233 +14,241 @@
 				<text class="line"></text>
 			</view>
 			<view class="nav-item tui-skeleton-fillet" 
-				  :class="{ current: tabCurrentIndex === 2 }" 
-				  @click="tabClick(2)" 
+				  :class="{ current: tabCurrentIndex === 1 }" 
+				  @click="tabClick(1)" 
 				  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)">
+			<view class="nav-item tui-skeleton-fillet" :class="{ current: tabCurrentIndex === 2 }" @click="tabClick(2)">
 				<text>推荐</text>
 				<text class="line"></text>
 			</view>	
 		</view>	
 		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5"></tui-skeleton>
-		<view v-else class="cart-content empty" v-if="isInvalid">
-			<view  class="empty-container">
-				<image class="empty-container-image" :src="productNoneImage" mode="aspectFit"></image>
-				<text class="error-text">商品已失效,去商城逛逛别的吧~</text>
-				<view class="login-btn"  @click="goIndex">去商城</view>
-			</view>
-		</view>
-		<view class="container-product tui-skeleton" v-else>
-			<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>
+		<template v-else >
+			<view class="cart-content empty" v-if="isInvalid">
+				<view  class="empty-container">
+					<image class="empty-container-image" :src="productNoneImage" mode="aspectFit"></image>
+					<text class="error-text">商品已失效,去商城逛逛别的吧~</text>
+					<view class="login-btn"  @click="goIndex">去商城</view>
 				</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"
-									  :shopID= "shopID"
-									  :promotions="product.promotions"
-									  :ladderPriceList="ladderPriceList"/>
+			</view>
+			<view class="container-product tui-skeleton" v-else>
+				<view class="container-product-main">
+					<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="p-title tui-skeleton-fillet">
-							<view class="p-title-name">
-								{{product.name == undefined ? '' : product.name}}
+						<view class="product-wrap clearfix">
+							<view class="wrap-top" :class="goodsData.isNoneDisabled ? 'none' : ''">
+								<view class="wrap-top-price">
+									<cm-price v-if="isRequest"
+											  :product="product"
+											  :userIdentity="userIdentity"
+											  :shopID= "shopID"
+											  :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="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 class="product-seve">
+									<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="productRemarks"  v-if="product.productRemarks!=''&&product.productRemarks!=null">
+									备注:{{product.productRemarks}}
+								</view>
 							</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="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 class="product-seve">
-							<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="productRemarks"  v-if="product.productRemarks!=''&&product.productRemarks!=null">
-							备注:{{product.productRemarks}}
-						</view>
+						</view>			
 					</view>
-				</view>			
-			</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="shop.logo" 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>{{ shop.normalNum }}</text>件商品
+					<view class="product-item-none" v-if="goodsData.isNoneDisabled">
+						<image class="none-image" :src="productNoneImage" mode=""></image>
+						<view class="none-text">此商品已{{goodsData.disabledText}},请浏览以下推荐商品~</view>
+					</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="shop.logo" 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>{{ shop.normalNum }}</text>件商品
+								</view>
+							</view>
 						</view>
+						<view class="right"><text class="iconfont icon-xiayibu"></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>	
-			<!-- 商品参数 -->
-			<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 class="product-details productDetails0">
+					<!-- 商品详情 -->
+					<view class="title">
+						<view class="title-tab">商品详情</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 class="content tui-banner product-rich-text tui-skeleton-rect">
+						<parser :html="html" :img-mode="widthFix"></parser>
 					</view>
 				</view>	
-			</tui-bottom-popup>	
-			<!-- 底部按钮 -->
-			<view class="menu" v-if="userIdentity!=1 && userIdentity != 3">
-				<view class="bottom-btn" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
-					<view class="bottom-le">
-						<view class="item-bt" @click="this.$api.switchTabTo('/pages/tabBar/home/index')">
-							<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 class="product-details service productDetails1" v-show="product.productDetail.orderInfo || product.productDetail.serviceInfo">
+					<!-- 服务项目 -->
+					<view class="title">
+						<view class="title-tab">服务项目</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 class="content service">
+						<cm-service :product="product.productDetail" v-if="isRequest"></cm-service>
 					</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 class="product-details recommend productDetails2">
+					<!-- 相关推荐 -->
+					<view class="title">
+						<view class="title-tab">相关推荐</view>
+					</view>
+					<view class="content hot">
+						<recommend :query-productid="product.productID" v-if="isRequest"></recommend>
+					</view>
+				</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="layer-nunbox">
-							<view class="layer-nunbox-t" v-if="product.step === 2">
-								<view class="text">*该商品只能以起订量的整数倍购买</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 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>	
+				</tui-bottom-popup>	
+				<!-- 底部按钮 -->
+				<view class="menu" v-if="userIdentity!=1 && userIdentity != 3">
+					<view class="bottom-btn" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
+						<view class="bottom-le">
+							<view class="item-bt" @click="this.$api.switchTabTo('/pages/tabBar/home/index')">
+								<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-b">
-								<view class="text">单价:
-									<text class="p sm">¥</text>
-									<text class="p bg">{{buyRetailPrice.toFixed(2)}}</text>
+							<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 class="btn"><view class="button" @click.stop="btnConfirm">确定</view></view>
 				</view>
+				<!-- 侧边 -->
+				<scroll-top v-if="isScrollTop"></scroll-top>
 			</view>
-			<!-- 侧边 -->
-			<scroll-top v-if="isScrollTop"></scroll-top>
-		</view>
+		</template>
 	</view>
 </template>
 
@@ -271,7 +279,7 @@
 		data(){
 			return{			
 				html:'<div style="text-align: center;color:#333333;">暂无内容</div>',
-				disabledTabNavList:[{name:'相关推荐'}],
+				productNoneImage:'http://static-b.caimei365.com/app/img/icon/icon-pnone.png',
 				mode:'round',
 				iconClass:'icon-aixin',
 				iconColor:'#ff9100',
@@ -282,7 +290,6 @@
 				current:0,
 				shopId:0,
 				isShareType:'',
-				productNoneImage:'http://static-b.caimei365.com/app/img/icon/icon-pnone.png',
 				isHeaderPoduct:false,
 				navbarFiexd:'none',
 				ladderPriceFlag:'',
@@ -386,12 +393,10 @@
 					if(this.product.validFlag =='3' || this.stock == 0 ){
 						this.disabled = true
 						this.isNoneDisabled = true
-						this.tabCurrentIndex = 3;// 页面显示是默认选中第一
 						this.goodsData.disabledText = '下架'
 					}else{
 						this.disabled = false
 						this.isNoneDisabled = false
-						this.tabCurrentIndex = 0;// 页面显示是默认选中第三
 						this.goodsData.disabledText = ''
 					}
 					if(this.product.price1TextFlag == "1"){
@@ -433,6 +438,18 @@
 			tabClick(index) {//商品详情&&供应商信息tab切换
 				console.log(index)
 				this.tabCurrentIndex = index;
+				let classIndex = '.productDetails'+index;
+				uni.createSelectorQuery().select('.container-product-main').boundingClientRect((data)=>{//最外层盒子节点
+				  uni.createSelectorQuery().select(classIndex).boundingClientRect((res)=>{//最外层盒子节点
+				    uni.pageScrollTo({
+				      duration:300,//过渡时间必须为0,uniapp bug,否则运行到手机会报错
+				      scrollTop:res.top - data.top - 150,//滚动到实际距离是元素距离顶部的距离减去最外层盒子的滚动距离
+				    })
+						setTimeout(()=>{
+							this.tabSelectFlag = false;
+						},500)
+				  }).exec()
+				}).exec()
 			},
 			handleContact(e){//跳转小程序客服
 
@@ -718,11 +735,12 @@
 				width: 100%;
 				height: auto;
 				float: left;
+				position: relative;
 				.p-title-name{
 					width:602rpx;
-					height: 96rpx;
+					height: auto;
 					float: left;
-					line-height: 42rpx;
+					line-height:48rpx;
 					font-size: $font-size-28;
 					color: $text-color;
 					-o-text-overflow: ellipsis;
@@ -736,7 +754,8 @@
 				.p-title-share{
 					width: 96rpx;
 					height: 96rpx;
-					float: right;
+					position: absolute;
+					right: 0;
 					text-align: center;
 					color: #999999;
 					font-size: $font-size-24;
@@ -975,6 +994,25 @@
 			margin-left: 10rpx;
 		}
 	}
+	.product-item-none{
+		min-height: 348rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		border-bottom: 20rpx solid #F7F7F7;
+		box-sizing: border-box;
+		padding: 40rpx 0;
+		.none-image{
+			width: 284rpx;
+			height: 225rpx;
+		}
+		.none-text{
+			text-align: center;
+			font-size: $font-size-28;
+			color: #999999;
+			line-height: 40rpx;
+		}
+	}
 	.product-parameter{
 		width: 702rpx;
 		height: 90rpx;

+ 2 - 2
pages/login/password.vue

@@ -109,7 +109,7 @@
 <script>
 	import authorize from '@/common/config/authorize.js' 
 	import { mobilePassword , emailPassword } from "@/api/use.js"
-	import { getEmailCode, getMobileCode } from "@/api/utils.js"
+	import { getEmailCode } from "@/api/utils.js"
 	
 	export default{
 		data() {
@@ -238,7 +238,7 @@
 						token:this.imageCodetoken,
 					}
 				this.isMobileDisabled = true;
-				getMobileCode(params).then(res =>{
+				this.PublicService.GetMobileCode(params).then(res =>{
 					this.$util.msg('验证短信已发送',2000);
 					const TIME_COUNT = 60;
 			     	if (!this.codeTime) {

+ 8 - 8
pages/login/register-select.vue

@@ -4,20 +4,20 @@
 		<view class="main">
 			<view class="title">请选择注册的账号类型</view>
 			<view class="main-item">
-				<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(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>
+						<image src="http://static-b.caimei365.com/app/img/icon/icon-club.png" mode=""></image>
 					</view>
 					<view class="text by">采购方(买家)</view>
 					<view class="text-small">医院机构/美容会所/个人买家</view>
 				</view>
+				<view class="item" @click.stop="this.$api.navigateTo('/pages/login/register-supplier')">
+					<view class="icon">
+						<image src="http://static-b.caimei365.com/app/img/icon/icon-supplier.png" mode=""></image>
+					</view>
+					<view class="text my">供应商(买家)</view>
+					<view class="text-small">仪器/产品/服务供应商</view>
+				</view>
 			</view>
 		</view>
 		<image class="bg_image" src="https://admin-b.caimei365.com/userfiles/1/images/photo/2020/11/%E8%83%8C%E6%99%AF.png" mode=""></image>

+ 160 - 46
pages/login/register-supplier.vue

@@ -18,7 +18,7 @@
 			<view class="register-row clearfix">
 				<view class="register-from">
 					<view class="label">手机号:</view>
-					<input class="row-input" type="number" name="input" v-model="bindMobile" placeholder="请输入联系人常用手机号" maxlength="11"/>
+					<input class="row-input" type="number" name="input" v-model="firstParmas.bindMobile" placeholder="请输入联系人常用手机号" maxlength="11"/>
 				</view>
 			</view>
 			<view class="register-row clearfix">
@@ -41,7 +41,7 @@
 			<view class="register-row clearfix">
 				<view class="register-from">
 					<view class="label">短信验证码:</view>
-					<input class="row-input code" type="text" v-model="mobileCode" placeholder="请输入短信验证码" maxlength="6"/>
+					<input class="row-input code" type="text" v-model="firstParmas.mobileCode" placeholder="请输入短信验证码" maxlength="6"/>
 					<view class="row-btn" :class="[isMobileDisabled  ? 'disabled' : '']">
 						<button class="row-input"
 								type="button" 
@@ -55,17 +55,17 @@
 			<view class="register-row clearfix">
 				<view class="register-from">
 					<view class="label">登录密码:</view>
-					<input class="row-input" type="password" name="input" v-model="password" placeholder="密码必须为8-16位字母数字组合" maxlength="16"/>
+					<input class="row-input" type="password" name="input" v-model="firstParmas.password" placeholder="密码必须为8-16位字母数字组合" maxlength="16"/>
 				</view>
 			</view>
 			<view class="register-row clearfix">
 				<view class="register-from">
 					<view class="label">确认密码:</view>
-					<input class="row-input" type="password" name="input" v-model="passwordCheck" placeholder="请确认密码" maxlength="16"/>
+					<input class="row-input" type="password" name="input" v-model="firstParmas.passWordConfirm" placeholder="请确认密码" maxlength="16"/>
 				</view>
 			</view>
 			<view class="register-row ">
-				<view class="register-btn" @click.stop="setStep(1)">下一步</view>
+				<view class="register-btn" @click.stop="SupplierRegisteredFirst">下一步</view>
 			</view>
 		</view>	
 		
@@ -73,26 +73,26 @@
 			<view class="register-row clearfix">
 				<view class="register-from">
 					<view class="label">公司名称:</view>
-					<input class="row-input" type="text" name="input" v-model="userName" placeholder="请输入您的公司名称" maxlength="30"/>
+					<input class="row-input" type="text" name="input" v-model="twoParmas.name" placeholder="请输入您的公司名称" maxlength="30"/>
 				</view>
 			</view>
 			<view class="register-row clearfix">
 				<view class="register-from">
 					<view class="label">联系人:</view>
-					<input class="row-input" type="text" name="input" v-model="userName" placeholder="请输入联系人姓名" maxlength="6"/>
+					<input class="row-input" type="text" name="input" v-model="twoParmas.linkMan" placeholder="请输入联系人姓名" maxlength="6"/>
 				</view>
 			</view>
 			<view class="register-row none clearfix">
 				<view class="register-from">
-					<view class="label">联系人:</view>
-					<input class="row-input" type="text" name="input" v-model="userName" placeholder="请输入邮箱地址" maxlength="30"/>
+					<view class="label">邮箱:</view>
+					<input class="row-input" type="text" name="input" v-model="twoParmas.email" placeholder="请输入邮箱地址" maxlength="30"/>
 				</view>
 			</view>
 			<view class="register-row text clearfix">
 				<text>邮箱可用作登录账号,请使用公司邮箱或法人邮箱</text>
 			</view>	
 			<view class="register-row ">
-				<view class="register-btn next" @click.stop="setStep(2)">下一步</view>
+				<view class="register-btn next" @click.stop="SupplierRegisteredTwo">下一步</view>
 				<view class="register-btn prev" @click.stop="setStep(0)">上一步</view>
 			</view>
 		</view>
@@ -100,7 +100,7 @@
 			<view class="register-row clearfix">
 				<view class="register-from">
 					<view class="label">公司简称:</view>
-					<input class="row-input" type="text" v-model="abbreviation" placeholder="请输入您的机构简称" maxlength="10"/>
+					<input class="row-input" type="text" v-model="threeParmas.sname" placeholder="请输入您的机构简称" maxlength="10"/>
 				</view>
 			</view>
 			<view class="register-row clearfix">
@@ -137,9 +137,9 @@
 				<view class="register-picture">
 					<view class="label">营业执照:</view>
 					<view class="upload-picture">
-						<view class="upload-none" v-if="uploadBusinessImage === ''"  @click="chooseBusinessImage"><text class="iconfont icon-jiahao"></text></view>
+						<view class="upload-none" v-if="threeParmas.businessLicenseImage === ''"  @click="chooseBusinessImage"><text class="iconfont icon-jiahao"></text></view>
 						<view class="upload-image" v-else>
-							<image :src="uploadBusinessImage" mode="" @click="viewBusinessImage"></image>
+							<image :src="threeParmas.businessLicenseImage" mode="" @click="viewBusinessImage"></image>
 							<view class="upload-del" @click="delBusinessImage">
 								<text class='iconfont icon-shanchu1'></text>
 							</view>
@@ -154,12 +154,12 @@
 					<text class="iconfont icon-xiayibu"></text>
 				</view>
 			</view>
-			<view class="register-row none clearfix">
+			<view class="register-row none clearfix" v-if="threeParmas.firstShopType == 1">
 				<view class="register-from radio">
 					<view class="label">医疗类型:</view>
 				</view>
 			</view>
-			<view class="register-row clearfix">
+			<view class="register-row clearfix" v-if="threeParmas.firstShopType == 1">
 				<view class="register-from radio">
 					<radio-group @change="radioChange">
 						<label class="row-input" v-for="(item, index) in supplierList" :key="item.value">
@@ -211,7 +211,7 @@
 					</view>
 				</view>
 				<view class="register-row ">
-					<view class="register-btn sub" @click.stop="registerStepsfirst">注册</view>
+					<view class="register-btn sub" @click.stop="SupplierRegisteredThree">注册</view>
 					<view class="register-btn prev" @click.stop="setStep(1)">上一步</view>
 				</view>
 			</view>
@@ -234,7 +234,7 @@
 	import supplierAlert from '@/components/cm-module/modelAlert/supplierRegisreAlert.vue'
 	import { supplierList,supplierMedicaCampNullList } from '@/common/json/data.json.js' //本地数据
 	import { organizationVerifyRegisterFirst,organizationRegister } from "@/api/use.js"
-	import { getRegisterMobileCode, uploadFileImage } from "@/api/utils.js"
+	import { uploadFileImage } from "@/api/utils.js"
 	export default{
 		components:{
 			mpvueCityPicker,
@@ -254,11 +254,6 @@
 			    mobilCount: '',				//倒计时
 			    mobileCodeText: '获取验证码',
 			    mobilTime: null,
-				password:'',			//密码
-				passwordCheck:'',		//校验密码
-				userName:'',	 		//联系人
-				bindMobile:'',		//联系人手机号
-				mobileCode:'',			//手机验证码
 				imageCode:'',			//图形验证码
 				imageCodeUrl:'',		//图形验证码图片
 				imageCodetoken:'',		//图形验证校验
@@ -266,20 +261,36 @@
 				isCheck:false,			//是否勾选协议
 				userID:'',		//机构userID
 				clubID:'',		//机构ID
-				stepIndex:0,
-				abbreviation:'',	 	//机构简称
-				socialCreditCode:'',	//统一社会信用代码
+				stepIndex:2,
+				firstParmas:{
+					bindMobile:'',
+					mobileCode:'',
+					password:'',
+					passWordConfirm:'',
+					whichStep:1
+				},
+				twoParmas:{
+					linkMan:'',
+					name:'',
+					email:"",
+					whichStep:2
+				},
+				threeParmas:{
+					sname:'',	 	//机构简称
+					socialCreditCode:'',	//统一社会信用代码
+					businessLicenseImage:'',	//营业执照图片
+					provinceID :'',
+					cityID : '',
+					townID : '',
+					address:'',
+					firstShopType:'',
+					secondShopType: '',
+					mainpro:'',
+					isAgreed:0,
+				},
 				isDisabled:true,
 				isShowInput:true,
 				textareaFocus:false,
-				uploadBusinessImage:'',	//营业执照图片
-				uploadMentuzImage:'',  	//门头照图片
-				uploadMedicalImage:'', 	//资质照图片
-				department:'',			//科室
-				isDepartment:false,     //是否显示科室
-				secondClubType:'',		//机构类型二级分类
-				mainpro:'',				//主营内容
-				firstClubType:'',		//机构类型
 				isOrganizationType:0,
 				organizationTypeText:'请选择机构类型',
 				supplierList:supplierList,//医疗类型
@@ -325,21 +336,27 @@
 				
 			},
 			getMobileCodeFn(){
-				if( this.bindMobile == ''){
+				if( this.firstParmas.bindMobile == ''){
 					this.$util.msg('请输入手机号',2000);
 					return
 				}
-				if(!this.$reg.isMobile(this.bindMobile)){
+				if(!this.$reg.isMobile(this.firstParmas.bindMobile)){
 					this.$util.msg('请输入正确的手机号',2000);
 					return
 				}
+				if( this.imageCode == ''){
+					this.$util.msg('请输入图形验证码',2000);
+					return
+				}
 				let params = {
-						mobile:this.bindMobile,
-						activateCodeType:2,
-						platformType:2
+						mobile:this.firstParmas.bindMobile,
+						imgCode:this.imageCode,
+						activateCodeType:3,
+						platformType:2,
+						token:this.imageCodetoken
 					}
 				this.isMobileDisabled = true;
-				getRegisterMobileCode(params).then(response =>{
+				this.PublicService.GetMobileCode(params).then(response =>{
 					this.$util.msg('验证短信已发送',2000);
 					const TIME_COUNT = 60;
 			     	if (!this.mobilTime) {
@@ -368,7 +385,8 @@
 					title:'标题',
 					itemList: ['医疗', '非医疗'],
 					success: (e) => {
-						self.isOrganizationType = e.tapIndex+1
+						self.threeParmas.firstShopType = e.tapIndex+1
+						console.log(self.isOrganizationType)
 						switch(e.tapIndex){
 							case 0:
 								this.organizationTypeText = '医疗'
@@ -383,9 +401,96 @@
 			setStep(index){
 				this.stepIndex = index
 			},
+			SupplierRegisteredFirst(){//供应商注册第一步
+				if( this.firstParmas.bindMobile == ''){
+					this.$util.msg('请输入手机号',2000);
+					return
+				}
+				if(!this.$reg.isMobile(this.firstParmas.bindMobile)){
+					this.$util.msg('手机格式不正确',2000);
+					return
+				}
+				if( this.firstParmas.mobileCode == ''){
+					this.$util.msg('请输入手机验证码',2000);
+					return
+				}
+				if(!this.$reg.isMobileCode(this.firstParmas.mobileCode)){
+					this.$util.msg('验证码格式不正确',2000);
+					return
+				}
+				if(!this.$reg.checkPwd(this.firstParmas.password)){
+					uni.showToast({title: '密码必须为8-16位字母数字的组合',duration: 2000,mask:true,icon:'none'})
+					return
+				}
+				if( this.firstParmas.passWordConfirm == ''){
+					uni.showToast({title: '请再次确认密码',duration: 2000,mask:true,icon:'none'})
+					return
+				}
+				if( this.firstParmas.passWordConfirm !== this.firstParmas.password){
+					uni.showToast({title: '两次输入的密码不一致',duration: 2000,mask:true,icon:'none'})
+					return
+				}
+				this.ShopService.SupplierAppletsRegistered(this.firstParmas).then(response =>{
+					this.stepIndex = 1
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000);
+				})	
+			},
+			SupplierRegisteredTwo(){//供应商注册第二步
+				if( this.twoParmas.name == ''){
+					this.$util.msg('请输入您的公司名称',2000);
+					return
+				}
+				if( this.twoParmas.linkMan == ''){
+					this.$util.msg('请输入联系人名称',2000);
+					return
+				}
+				if( this.twoParmas.email == ''){
+					this.$util.msg('请输入邮箱地址',2000);
+					return
+				}
+				if(!this.$reg.isEmail(this.twoParmas.email)){
+					this.$util.msg('请输入正确的邮箱地址',2000);
+					return
+				}
+				this.ShopService.SupplierAppletsRegistered(this.twoParmas).then(response =>{
+					this.stepIndex = 2
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000);
+				})	
+			},
+			SupplierRegisteredThree(){
+				
+			},
+			chooseBusinessImage() {//营业执照图片上传
+				uploadFileImage().then(res =>{
+					this.threeParmas.businessLicenseImage = JSON.parse(res.data).data
+				})
+			},
+			viewBusinessImage(e) {
+				this.myPreviewImageFn(this.businessLicenseImage)
+			},
+			myPreviewImageFn(url){
+				this.isPreviewImage = true
+				let mentuzArray = []
+				mentuzArray.push(url)
+				uni.previewImage({
+					urls: mentuzArray,
+					current: 0
+				});
+			},
+			delBusinessImage(){
+				this.$util.modal('','确定删除营业执照图片吗?','确定','取消',true,() =>{
+					 this.threeParmas.businessLicenseImage = ''
+				})
+			},
+			radioChange(e) {
+				this.threeParmas.secondShopType = e.target.value;
+				console.log(this.threeParmas.secondShopType)
+			},
 			chooseMaleLike(e){
 				this.isMainproCheck = true
-				this.mainpro = this.checkLikes(e,this.supplierMedicaCampList)
+				this.threeParmas.mainpro = this.checkLikes(e,this.supplierMedicaCampList)
 			},
 			checkLikes(e,list){
 				let	values = e.detail.value
@@ -409,6 +514,10 @@
 			showAustomItem() {
 				this.isShowAustomItem = !this.isShowAustomItem
 			},
+			showTextareaFocus(){//文本框获取焦点
+				this.isShowInput = false
+				this.textareaFocus = true
+			},
 			onBlurInput(e){//
 				if(e.detail.value ===''){
 					this.isDisabled = true
@@ -416,12 +525,17 @@
 					this.isDisabled = false
 				}
 			},
+			addCustomItem(){//添加主营内容
+				let item = {value:`${this.supplierMedicaCampList.length+1}`,name:this.customItemValue,checked:true}
+				this.supplierMedicaCampList.push(item)
+				console.log(this.supplierMedicaCampList)
+			},
 			agreeCheck() {
 				this.isCheck = !this.isCheck
 				if(this.isCheck){
-					this.isAgreed = 1
+					this.threeParmas.isAgreed = 1
 				}else{
-					this.isAgreed = 0
+					this.threeParmas.isAgreed = 0
 				}
 			}
 		},
@@ -958,11 +1072,11 @@
 				background: #FFFFFF;
 			}
 			.register-btn{
-				width: 100%;
-				height: 80rpx;
+				width: 600rpx;
+				height: 88rpx;
 				border-radius: 44rpx;
 				font-size: $font-size-28;
-				line-height: 80rpx;
+				line-height: 88rpx;
 				color: #FFFFFF;
 				margin: 0 auto;
 				text-align: center;

+ 2 - 2
services/ajax.env.js

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

+ 7 - 0
services/public.service.js

@@ -13,4 +13,11 @@ export default class PublicService {
 	GetImgVerifyCode (data = {platformType:2}) {
 		return this.AjaxService.get({ url:'/user/getImgVerifyCode', data, isLoading: true })
 	}
+	/**
+	 * 获取图形验证码
+	 * activateCodeType:机构 2  供应商 3 找回密码 1 
+	 */
+	GetMobileCode (data = {}) {
+		return this.AjaxService.get({ url:'/user/activateCodeByReg', data, isLoading: true })
+	}
 }

+ 4 - 0
services/shop.service.js

@@ -6,6 +6,10 @@ export default class ShopService {
 		Object.assign(this, { AjaxService })
 		this.name = 'ShopService'
 	}
+	/* 小程序-供应商注册第一步 */
+	SupplierAppletsRegistered (data = {}) {
+		return this.AjaxService.post({ url:'/supplier/appletsRegistered', data, isLoading: true })
+	}
 	/* 小程序-搜索供应商列表 */
 	GetSearchSupplierList (data = {}) {
 		return this.AjaxService.get({ url:'/search/query/supplier', data, isLoading: true })

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

@@ -249,7 +249,7 @@
 			}, 
 			GetOnReachBottomData(index){//上拉加载
 				this.listQuery.pageNum += 1
-				this.ProductService.GetProductList(this.listQuery).then(response =>{
+				this.ProductService.GetSupplierPyProduct(this.listQuery).then(response =>{
 					let data = response.data.productPage
 					this.hasNextPage = data.hasNextPage;
 					this.dataList = this.dataList.concat(data.results)
@@ -475,7 +475,7 @@
 			}	
 		},
 		onReachBottom() {
-			if(this.total > this.dataList.length){
+			if(this.hasNextPage){
 				this.loadding = true
 				this.pullUpOn = true
 				this.GetOnReachBottomData()

+ 23 - 9
supplier/pages/user/my-shop.vue

@@ -29,10 +29,10 @@
 				</view>
 				<banner :list="bannerImageList"></banner>
 			</view>	
-			<view class="container-section tui-skeleton" v-if="recommendList.length > 0">
+			<view class="container-section tui-skeleton">
 				<view class="tab-title">主推商品</view>
 				<view class="section-product clearfix">
-					<view class="floor-item" v-for="(item, index) in recommendList" :key="index" @click.stop="navToDetailPage(item.id)">
+					<view v-if="recommendList.length > 0" class="floor-item" v-for="(item, index) in recommendList" :key="index" @click.stop="navToDetailPage(item.id)">
 						<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
 						<view class="floor-item-content">
 							<view class="title tui-skeleton-rect">
@@ -124,13 +124,18 @@
 							</view>	
 						</view>
 					</view>
+					<view class="floor-item-none"  v-else>
+						<image class="none-image" :src="iconNoneData" mode=""></image>
+						<view class="none-text">暂无主推商品~</view>
+					</view>
 				</view>
 			</view>
 			<view class="container-section tui-skeleton">
 				<view class="tab-title">全部商品</view>
 				<view class="section-product clearfix">
 					<view class="floor-item-none" v-if="isEmpty">
-						<text>暂无数据~</text>
+						<image class="none-image" :src="iconNoneData1" mode=""></image>
+						<view class="none-text">暂未发布任何商品~</view>
 					</view>
 					<view v-else class="floor-item" v-for="(item, index) in productList" :key="index" @click.stop="navToDetailPage(item.p_id)">
 						<image class="item-img tui-skeleton-fillet" :src="item.p_image" mode="aspectFill"></image>
@@ -241,6 +246,8 @@
 				shopId:0,
 				iconClass:'icon-aixin',
 				iconColor:'#ff9100',
+				iconNoneData:'http://static-b.caimei365.com/app/img/icon/icon-prnone.png',
+				iconNoneData1:'http://static-b.caimei365.com/app/img/icon/icon-pbnone.png',
 				isScrollTop:false,
 				shopName:'',
 				shopLogo:'',
@@ -584,12 +591,19 @@
 			height: auto;
 			.floor-item-none{
 				min-height: 300rpx;
-				line-height: 300rpx;
-				text-align: center;
-				font-size: $font-size-28;
-				color: #999999;
-				background-color: #FFFFFF;
-				border-radius: 20rpx;
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				.none-image{
+					width: 260rpx;
+					height: 260rpx;
+				}
+				.none-text{
+					text-align: center;
+					font-size: $font-size-28;
+					color: #999999;
+					line-height: 40rpx;
+				}
 			}
 			.floor-item{
 				width: 341rpx;

+ 2 - 2
supplier/pages/user/setting/password.vue

@@ -109,7 +109,7 @@
 <script>
 	import authorize from '@/common/config/authorize.js' 
 	import { mobilePassword , emailPassword } from "@/api/use.js"
-	import { getEmailCode, getMobileCode } from "@/api/utils.js"
+	import { getEmailCode } from "@/api/utils.js"
 	
 	export default{
 		data() {
@@ -238,7 +238,7 @@
 						token:this.imageCodetoken,
 					}
 				this.isMobileDisabled = true;
-				getMobileCode(params).then(res =>{
+				this.PublicService.GetMobileCode(params).then(res =>{
 					this.$util.msg('验证短信已发送',2000);
 					const TIME_COUNT = 60;
 			     	if (!this.codeTime) {