Forráskód Böngészése

Merge remote-tracking branch 'origin/developer' into developerB

# Conflicts:
#	pages/goods/product.vue
#	pages/tabBar/home/index.vue
zhengjinyi 2 éve
szülő
commit
0c9ef0e68b

+ 21 - 4
common/css/iconfont.scss

@@ -1,8 +1,14 @@
+// @font-face {
+//   font-family: "iconfont"; /* Project id 1519039 */
+//   src: url('/common/fonts/iconfont.woff2?t=1668502271099') format('woff2'),
+//        url('/common/fonts/iconfont.woff?t=1668502271099') format('woff'),
+//        url('/common/fonts/iconfont.ttf?t=1668502271099') format('truetype');
+// }
 @font-face {
   font-family: "iconfont"; /* Project id 1519039 */
-  src: url('/common/fonts/iconfont.woff2?t=1668502271099') format('woff2'),
-       url('/common/fonts/iconfont.woff?t=1668502271099') format('woff'),
-       url('/common/fonts/iconfont.ttf?t=1668502271099') format('truetype');
+  src: url('//at.alicdn.com/t/c/font_1519039_ow9hswsn3r.woff2?t=1671427765583') format('woff2'),
+       url('//at.alicdn.com/t/c/font_1519039_ow9hswsn3r.woff?t=1671427765583') format('woff'),
+       url('//at.alicdn.com/t/c/font_1519039_ow9hswsn3r.ttf?t=1671427765583') format('truetype');
 }
 
 .iconfont {
@@ -13,6 +19,18 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
+.icon-duanxin:before {
+  content: "\e747";
+}
+
+.icon-mima:before {
+  content: "\e748";
+}
+
+.icon-shouji:before {
+  content: "\e746";
+}
+
 .icon-biaoqian1:before {
   content: "\e742";
 }
@@ -624,4 +642,3 @@
 .icon-wodebeifenx:before {
   content: "\e611";
 }
-

+ 211 - 0
components/cm-module/cm-ross/cm-ross-popup.vue

@@ -0,0 +1,211 @@
+<template name="cm-parameter">
+	<!-- 相关规格 -->
+	<tui-bottom-popup :radius="false" :show="popupShow">
+		<view class="tui-popup-box clearfix">
+			<view class="tui-popup-close" @click.stop="hidePopup">
+				<text class="iconfont icon-iconfontguanbi"></text>
+			</view>
+			<view class="tui-popup-main" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
+				<view class="tui-popup-from">
+					<input
+						class="input"
+						type="text"
+						v-model="consultParams.consultName"
+						@input="handleInputName"
+						placeholder="请输入名字"
+						placeholder-style="color:#FFFFFF;"
+						maxlength="10"
+					/>
+				</view>
+				<view class="tui-popup-from none">
+					<input
+						class="input"
+						type="text"
+						v-model="consultParams.consultMobile"
+						@input="handleInputPhone"
+						placeholder="请输入手机号"
+						placeholder-style="color:#FFFFFF;"
+						maxlength="11"
+					/>
+				</view>
+			</view>
+			<view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
+				<view class="tui-modal-flex">
+					<button class="tui-modal-button" :class="isDisabled ? 'disabled' : ''" @click="handleSubmit">
+						提交
+					</button>
+				</view>
+				<view class="tui-modal-text">
+					<view class="tui-modal-left" @click.stop="this.$api.navigateTo('/pages/login/register-select')">立即注册</view>
+					<view class="tui-modal-right" @click.stop="this.$api.navigateTo('/pages/login/login')">登录</view>
+				</view>
+			</view>
+		</view>
+	</tui-bottom-popup>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+export default {
+	name: 'cm-ross-popup',
+	props: {
+		popupShow: {
+			type: Boolean,
+			default: true
+		}
+	},
+	data() {
+		return {
+			userId: 0, // 用户Id
+			consultParams: {
+				ip:'',
+				createTime:'',
+				consultMobile: '',
+				consultName: '',
+				isClick:1
+			},
+			isDisabled: true
+		}
+	},
+	created() {
+		this.initData()
+	},
+	computed: {
+		...mapState(['hasLogin'])
+	},
+	methods: {
+		async initData(data) {
+			const userInfo = await this.$api.getStorage()
+			this.userId = userInfo.userId ? userInfo.userId : 0
+		},
+		handleInputName(e) {
+			this.consultParams.name = e.detail.value
+			this.handldeCheckInput()
+		},
+		handleInputPhone(e) {
+			this.consultParams.phone = e.detail.value
+			this.handldeCheckInput()
+		},
+		handldeCheckInput() {
+			if (this.consultParams.name !== '' && this.consultParams.phone !== '') {
+				this.isDisabled = false
+			} else {
+				this.isDisabled = true
+			}
+		},
+		handleSubmit() {
+			// 提交联系人信息
+			if (this.isDisabled) {
+				return
+			}
+			const reg = RegExp(/^1\d{10}$/)
+			if(!reg.test(this.consultParams.consultMobile)){
+				this.$util.msg('请输入正确的手机号');
+				return
+			}
+			this.userInformationInsertRoos(this.consultParams)
+		},
+		userInformationInsertRoos(params){
+			// 游客关闭广告弹窗
+			this.UserService.userInformationInsertRoos(params)
+				.then(response => {
+					this.$parent.showRossHtml = false
+				})
+				.catch(error => {
+					console.log('游客关闭广告弹窗失败~')
+				})
+		},
+		hidePopup() {
+			this.userInformationInsertRoos(this.consultParams)
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.tui-popup-box {
+	width: 100%;
+	height: 852rpx;
+	background: url(https://static.caimei365.com/app/img/ross/ross-bg@3x.png) no-repeat;
+	background-size: cover;
+	padding: 330rpx 75rpx 0 75rpx;
+	box-sizing: border-box;
+	.tui-popup-close{
+		width: 80rpx;
+		height: 80rpx;
+		line-height: 80rpx;
+		text-align: center;
+		position: absolute;
+		top: 0;
+		right: 0;
+		.icon-iconfontguanbi{
+			color: #ffffff;
+			font-size: 40rpx;
+		}
+	}
+	.tui-popup-main{
+		width: 100%;
+		height: auto;
+		.tui-popup-from{
+			width: 100%;
+			height: 80rpx;
+			margin-bottom: 30rpx;
+			&.none{
+				margin-bottom: 0;
+			}
+			.input{
+				width: 100%;
+				height: 80rpx;
+				box-sizing: border-box;
+				line-height: 80rpx;
+				font-size: 28rpx;
+				color: #ffffff;
+				border-bottom: 1px solid #ffffff;
+			}
+		}
+	}
+}
+.tui-popup-btn {
+	width: 100%;
+	float: left;
+	.tui-modal-flex {
+		width: 100%;
+		height: 84rpx;
+		margin-top: 40rpx;
+		display: flex;
+		.tui-modal-button {
+			flex: 1;
+			line-height: 84rpx;
+			font-size: $font-size-28;
+			text-align: center;
+			border-radius: 42rpx;
+			padding: 0;
+			margin: 0 15rpx;
+			box-sizing: border-box;
+			background: #202020;
+			color: #ffffff;
+			&.disabled {
+				background: #cbcbcb;
+			}
+		}
+	}
+	.tui-modal-text{
+		width: 100%;
+		height: 68rpx;
+		box-sizing: border-box;
+		padding: 0 30rpx;
+		.tui-modal-left{
+			float: left;
+			line-height: 68rpx;
+			font-size: 28rpx;
+			color: #ffffff;
+		}
+		.tui-modal-right{
+			float: right;
+			line-height: 68rpx;
+			font-size: 28rpx;
+			color: #ffffff;
+		}
+	}
+}
+</style>

+ 339 - 275
components/cm-module/homeIndex/pageSpecial.vue

@@ -3,18 +3,34 @@
 		<view class="container-pages clearfix">
 			<scroll-view scroll-x>
 				<view class="tui-goods__list">
+					<view class="tui-goods__item ross" v-if="isRossShow">
+						<view class="tui-goods__ross" @click="this.$api.navigateTo('/pages/supplier/user/my-shop?shopId=1378')">
+							<image class="ross-image" src="https://static.caimei365.com/app/img/ross/ross-image@3x.jpg" mode=""></image>
+						</view>
+					</view>
 					<view class="tui-goods__item" v-if="tempData.liveList != ''">
 						<view class="tui-group-name" @click="LiveGoPath">
 							<view class="tui-group-title"><text>采美LIVE</text></view>
 							<view class="iconfont icon-xiayibu"></view>
 						</view>
-						<view class="tui-goods__main" :class="flIndex == 0 ? 'one' : ''" v-for="(live, flIndex) in tempData.liveList" :key="flIndex" @click="LiveGoPathPros(live)">
+						<view
+							class="tui-goods__main"
+							:class="flIndex == 0 ? 'one' : ''"
+							v-for="(live, flIndex) in tempData.liveList"
+							:key="flIndex"
+							@click="LiveGoPathPros(live)"
+						>
 							<view class="tui-goods__imgbox" v-if="flIndex === 0">
 								<image :src="live.homePageImage" mode="" class="tui-goods__img"></image>
 								<view class="tui-goods__name">{{ live.liveTitle }}</view>
 								<view class="tui-goods__statu">
 									<text class="iconfont icon-weikaishi" v-if="live.liveStatus == 1"></text>
-									<image :src="iconLive" mode="widthFix" class="icon-live" v-if="live.liveStatus == 2"></image>
+									<image
+										:src="iconLive"
+										mode="widthFix"
+										class="icon-live"
+										v-if="live.liveStatus == 2"
+									></image>
 									<text class="iconfont icon-jieshu" v-if="live.liveStatus == 3"></text>
 									<text>{{ live.liveStatus | statusType }}</text>
 								</view>
@@ -27,7 +43,13 @@
 							<view class="tui-group-title"><text>最新活动</text></view>
 							<view class="iconfont icon-xiayibu"></view>
 						</view>
-						<view class="tui-goods__main" :class="flIndex == 0 ? 'one' : ''" v-for="(cmImage, flIndex) in tempData.cmImageList" :key="flIndex" @click="NewActivityListPath(cmImage)">
+						<view
+							class="tui-goods__main"
+							:class="flIndex == 0 ? 'one' : ''"
+							v-for="(cmImage, flIndex) in tempData.cmImageList"
+							:key="flIndex"
+							@click="NewActivityListPath(cmImage)"
+						>
 							<view class="tui-goods__imgbox" v-if="flIndex === 0">
 								<image :src="cmImage.homePageImage" mode="" class="tui-goods__img"></image>
 								<view class="tui-goods__name">{{ cmImage.title }}</view>
@@ -36,11 +58,20 @@
 						</view>
 					</view>
 					<view class="tui-goods__item" v-if="tempData.infoList != ''">
-						<view class="tui-group-name" @click="NavArticlePath('https://www.caimei365.com/info/center-3-1.html')">
+						<view
+							class="tui-group-name"
+							@click="NavArticlePath('https://www.caimei365.com/info/center-3-1.html')"
+						>
 							<view class="tui-group-title"><text>热门文章</text></view>
 							<view class="iconfont icon-xiayibu"></view>
 						</view>
-						<view class="tui-goods__main" :class="flIndex == 0 ? 'one' : ''" v-for="(info, flIndex) in tempData.infoList" :key="flIndex" @click="NavArticlePath(info.link)">
+						<view
+							class="tui-goods__main"
+							:class="flIndex == 0 ? 'one' : ''"
+							v-for="(info, flIndex) in tempData.infoList"
+							:key="flIndex"
+							@click="NavArticlePath(info.link)"
+						>
 							<view class="tui-goods__imgbox" v-if="flIndex === 0">
 								<image :src="info.homePageImage" mode="" class="tui-goods__img"></image>
 								<view class="tui-goods__name">{{ info.title }}</view>
@@ -48,20 +79,29 @@
 							<view class="tui-goods__text" v-if="flIndex > 0">{{ info.title }}</view>
 						</view>
 					</view>
-                    <!-- 采美百科 -->
-                    <view class="tui-goods__item" v-if="tempData.baikeList.length > 0">
-                    	<view class="tui-group-name" @click="NavArticlePath('https://www.caimei365.com/encyclopedia/product.html')">
-                    		<view class="tui-group-title"><text>热门百科</text></view>
-                    		<view class="iconfont icon-xiayibu"></view>
-                    	</view>
-                    	<view class="tui-goods__main" :class="flIndex == 0 ? 'one' : ''" v-for="(item, flIndex) in tempData.baikeList" :key="flIndex" @click="NavArticlePath(item.link)">
-                    		<view class="tui-goods__imgbox" v-if="flIndex === 0">
-                    			<image :src="item.image" mode="" class="tui-goods__img"></image>
-                    			<view class="tui-goods__name">{{ item.name }}</view>
-                    		</view>
-                    		<view class="tui-goods__text" v-if="flIndex > 0">{{ item.name }}</view>
-                    	</view>
-                    </view>
+					<!-- 采美百科 -->
+					<view class="tui-goods__item" v-if="tempData.baikeList.length > 0">
+						<view
+							class="tui-group-name"
+							@click="NavArticlePath('https://www.caimei365.com/encyclopedia/product.html')"
+						>
+							<view class="tui-group-title"><text>热门百科</text></view>
+							<view class="iconfont icon-xiayibu"></view>
+						</view>
+						<view
+							class="tui-goods__main"
+							:class="flIndex == 0 ? 'one' : ''"
+							v-for="(item, flIndex) in tempData.baikeList"
+							:key="flIndex"
+							@click="NavArticlePath(item.link)"
+						>
+							<view class="tui-goods__imgbox" v-if="flIndex === 0">
+								<image :src="item.image" mode="" class="tui-goods__img"></image>
+								<view class="tui-goods__name">{{ item.name }}</view>
+							</view>
+							<view class="tui-goods__text" v-if="flIndex > 0">{{ item.name }}</view>
+						</view>
+					</view>
 				</view>
 			</scroll-view>
 		</view>
@@ -69,293 +109,317 @@
 </template>
 
 <script>
-	import { mapState,mapMutations} from 'vuex'
-	import cmsMixins from '@/mixins/cmsMixins.js'
-	export default{
-		mixins: [cmsMixins],
-		name:'pagesProduct',
-		props:{
-			templateData:{
-				type:Object
+import { mapState, mapMutations } from 'vuex'
+import cmsMixins from '@/mixins/cmsMixins.js'
+export default {
+	mixins: [cmsMixins],
+	name: 'pagesProduct',
+	props: {
+		templateData: {
+			type: Object
+		}
+	},
+	data() {
+		return {
+			tempData: {},
+			iconLive: 'https://static.caimei365.com/app/img/icon/icon-live.gif'
+		}
+	},
+	filters: {
+		statusType: function(value) {
+			switch (value) {
+				case 1:
+					return '未开始'
+					break
+				case 2:
+					return '直播中'
+					break
+				case 3:
+					return '看回放'
+					break
 			}
 		},
-		data() {
-			return{
-				tempData:{},
-				iconLive:'https://static.caimei365.com/app/img/icon/icon-live.gif'
+		NumFormat: function(value) {
+			//处理金额
+			return Number(value).toFixed(2)
+		}
+	},
+	created() {
+		this.initData(this.templateData)
+	},
+	computed: {
+		...mapState(['isRossShow'])
+	},
+	methods: {
+		initData(data) {
+			this.tempData = data
+		},
+		NavArticlePath(LINK) {
+			// 友盟埋点首页文章模块点击
+			if (process.env.NODE_ENV != 'development') {
+				this.$uma.trackEvent('Um_Event_HomeArticleTemplateClick', {
+					Um_Key_ArticleLink: `${LINK}`,
+					Um_Key_PageName: '首页文章模块',
+					Um_Key_SourcePage: '商城首页'
+				})
 			}
+			// 采美埋点首页文章模块数据统计
+			this.cmsSysStatistics(4)
+			this.$api.navigateTo(`/pages/h5/article/path?link=${LINK}`)
 		},
-		filters: {
-			statusType:function(value) {
-				switch (value) {
-					case 1:
-						return  '未开始'
-						break
-					case 2:
-						return  '直播中'
-						break
-					case 3:
-						return  '看回放'
-						break
+		NewActivityList() {
+			this.$api.navigateTo('/pages/h5/activity/activity-list')
+		},
+		NewActivityListPath(pros) {
+			// 友盟埋点首页活动模块点击
+			if (process.env.NODE_ENV != 'development') {
+				this.$uma.trackEvent('Um_Event_HomeActivityTemplateClick', {
+					Um_Key_ActivityName: `${pros.title}`,
+					Um_Key_PageName: '首页活动模块',
+					Um_Key_SourcePage: '商城首页'
+				})
+			}
+			// 采美埋点首页活动模块数据统计
+			this.cmsSysStatistics(3)
+			/**
+			 * 页面跳转类型
+			 * 1、二级页面,2、搜索项目仪器,3、直播页面,4、自由页面,5、商品详情,6、仪器项目详情,7、供应商主页
+			 * 8、专题活动页,9、二手市场介绍,10、二手商品列表,11、二手商品发布,12、商品搜索,13、信息详情
+			 * 14、品牌招商介绍页,15、维修保养介绍页,16、首页,17、注册页,18、信息中心,19、供应商列表
+			 **/
+			if (pros.linkType) {
+				console.log(pros.linkType)
+				const typeMap = {
+					1: `/pages/goods/goods-instrument?linkId=${pros.linkParam.id}&title=${pros.name}`,
+					2: `/pages/goods/instrument-details?id=${pros.linkParam.id}`,
+					4: `/pages/h5/activity/activity?title=${pros.title}&link=${pros.appletsLink}`,
+					5: `/pages/goods/product?id=${pros.linkParam.id}`,
+					// 7:`/pages/supplier/user/my-shop?shopId=${pros.linkParam.id}`,
+					8: '/pages/h5/activity/activity-list',
+					9: '/pages/second/form/introduce',
+					10: '/pages/second/product/product-list',
+					11: '/pages/second/form/form',
+					12: `/pages/search/search?keyWord=${pros.linkParam.keyword}`,
+					13: `/pages/h5/article/path?link=${pros.link}`,
+					14: `/pages/h5/article/path?link=${pros.link}`,
+					15: `/pages/h5/article/path?link=${pros.link}`,
+					17: '/pages/login/register-select',
+					18: `/pages/h5/article/path?link=${pros.link}`,
+					19: `/pages/search/search-supplier?keyWord=${pros.linkParam.keyword}`,
+					20: `/pages/goods/good-floor?linkId=${pros.linkParam.id}&title=${pros.name}`,
+					21: '/pages/h5/activity/meobohui',
+					22: `/pages/goods/good-floor-temp?linkId=${pros.linkParam.id}&title=${pros.name}`,
+					23: `/pages/h5/activity/activity-topic?linkId=${pros.linkParam.id}`, //活动专题页面
+					25: '/pages/goods/goods-doc-list', //美业资料
+					28: `/pages/h5/article/path?link=${pros.link}`, // 采美认证通
+					29: '/pages/user/coupon/coupon-collection' //领券中心
 				}
-			},
-			NumFormat:function(value) {//处理金额
-				return Number(value).toFixed(2)
-			},
+				const url = typeMap[pros.linkType]
+				uni.navigateTo({
+					url: url
+				})
+			}
 		},
-		created(){
-			this.initData(this.templateData)
+		LiveGoPath() {
+			//查看直播
+			this.$api.navigateTo('/pages/h5/article/path-live')
+
+			// uni.navigateToMiniProgram({
+			// 	appId: 'wx92d650b253f8f2e3',
+			// 	path: '/pages/index/index',
+			// 	extraData: {
+			// 		'data1': 'test'
+			// 	},
+			// 	envVersion: 'develop',
+			// 	success(res) {
+			// 		// 打开成功
+			// 		console.log(res)
+			// 	}
+			// })
 		},
-		methods:{
-			initData(data){
-				this.tempData = data
-			},
-			NavArticlePath(LINK){
-				// 友盟埋点首页文章模块点击
-				if(process.env.NODE_ENV != 'development'){
-					this.$uma.trackEvent('Um_Event_HomeArticleTemplateClick', {
-						Um_Key_ArticleLink: `${LINK}`,
-						Um_Key_PageName: '首页文章模块',
-						Um_Key_SourcePage: '商城首页',
-					})
-				}
-				// 采美埋点首页文章模块数据统计
-				this.cmsSysStatistics(4)
-				this.$api.navigateTo(`/pages/h5/article/path?link=${LINK}`)
-			},
-			NewActivityList(){
-				this.$api.navigateTo('/pages/h5/activity/activity-list')
-			},
-			NewActivityListPath(pros){
-				// 友盟埋点首页活动模块点击
-				if(process.env.NODE_ENV != 'development'){
-					this.$uma.trackEvent('Um_Event_HomeActivityTemplateClick', {
-						Um_Key_ActivityName: `${pros.title}`,
-						Um_Key_PageName: '首页活动模块',
-						Um_Key_SourcePage: '商城首页',
-					})
-				}
-				// 采美埋点首页活动模块数据统计
-				this.cmsSysStatistics(3)
-				/**
-				 * 页面跳转类型
-				 * 1、二级页面,2、搜索项目仪器,3、直播页面,4、自由页面,5、商品详情,6、仪器项目详情,7、供应商主页
-				 * 8、专题活动页,9、二手市场介绍,10、二手商品列表,11、二手商品发布,12、商品搜索,13、信息详情
-				 * 14、品牌招商介绍页,15、维修保养介绍页,16、首页,17、注册页,18、信息中心,19、供应商列表
-				 **/
-				if(pros.linkType){
-					console.log(pros.linkType)
-					const typeMap = {
-					 	1:`/pages/goods/goods-instrument?linkId=${pros.linkParam.id}&title=${pros.name}`,
-					 	2:`/pages/goods/instrument-details?id=${pros.linkParam.id}`,
-						4:`/pages/h5/activity/activity?title=${pros.title}&link=${pros.appletsLink}`,
-					 	5:`/pages/goods/product?id=${pros.linkParam.id}`,
-					 	// 7:`/pages/supplier/user/my-shop?shopId=${pros.linkParam.id}`,
-					 	8:'/pages/h5/activity/activity-list',
-					 	9:'/pages/second/form/introduce',
-					 	10:'/pages/second/product/product-list',
-					 	11:'/pages/second/form/form',
-					 	12:`/pages/search/search?keyWord=${pros.linkParam.keyword}`,
-					 	13:`/pages/h5/article/path?link=${pros.link}`,
-					 	14:`/pages/h5/article/path?link=${pros.link}`,
-					 	15:`/pages/h5/article/path?link=${pros.link}`,
-					 	17:'/pages/login/register-select',
-					 	18:`/pages/h5/article/path?link=${pros.link}`,
-					 	19:`/pages/search/search-supplier?keyWord=${pros.linkParam.keyword}`,
-						20:`/pages/goods/good-floor?linkId=${pros.linkParam.id}&title=${pros.name}`,
-						21:'/pages/h5/activity/meobohui',
-						22:`/pages/goods/good-floor-temp?linkId=${pros.linkParam.id}&title=${pros.name}`,
-						23:`/pages/h5/activity/activity-topic?linkId=${pros.linkParam.id}`,  //活动专题页面
-						25:'/pages/goods/goods-doc-list' ,//美业资料
-						28:`/pages/h5/article/path?link=${pros.link}`, // 采美认证通
-						29:'/pages/user/coupon/coupon-collection',//领券中心
-						
-					}
-					const url = typeMap[pros.linkType]
-					uni.navigateTo({
-					  	url:url
-					})
-				}
-			},
-			LiveGoPath(){//查看直播
-				this.$api.navigateTo('/pages/h5/article/path-live')
-				
-				// uni.navigateToMiniProgram({
-				// 	appId: 'wx92d650b253f8f2e3',
-				// 	path: '/pages/index/index',
-				// 	extraData: {
-				// 		'data1': 'test'
-				// 	},
-				// 	envVersion: 'develop',
-				// 	success(res) {
-				// 		// 打开成功
-				// 		console.log(res)
-				// 	}
-				// })
-			},
-			LiveGoPathPros(live){
-				// 友盟埋点首页直播模块点击
-				if(process.env.NODE_ENV != 'development'){
-					this.$uma.trackEvent('Um_Event_HomeLiveTemplateClick', {
-						Um_Key_LiveName: `${live.liveTitle}`,
-						Um_Key_PageName: '首页直播模块',
-						Um_Key_SourcePage: '商城首页',
-					})
-				}
-				// 采美埋点首页直播模块数据统计
-				this.cmsSysStatistics(2)
-				this.$api.navigateTo(`/pages/h5/article/page-image?title=${live.liveTitle}&image=${live.advertisingImage}`)
+		LiveGoPathPros(live) {
+			// 友盟埋点首页直播模块点击
+			if (process.env.NODE_ENV != 'development') {
+				this.$uma.trackEvent('Um_Event_HomeLiveTemplateClick', {
+					Um_Key_LiveName: `${live.liveTitle}`,
+					Um_Key_PageName: '首页直播模块',
+					Um_Key_SourcePage: '商城首页'
+				})
 			}
+			// 采美埋点首页直播模块数据统计
+			this.cmsSysStatistics(2)
+			this.$api.navigateTo(`/pages/h5/article/page-image?title=${live.liveTitle}&image=${live.advertisingImage}`)
 		}
 	}
+}
 </script>
 
 <style lang="scss">
-	.container-pages{
-		width: 100%;
-		height:508rpx;
-		padding: 24rpx;
-		float: left;
-		background-color: #F7F7F7;
-		box-sizing: border-box;
-		background-color: #F7F7F7;
-		overflow: hidden;
+.container-pages {
+	width: 100%;
+	height: 508rpx;
+	padding: 24rpx;
+	float: left;
+	background-color: #f7f7f7;
+	box-sizing: border-box;
+	background-color: #f7f7f7;
+	overflow: hidden;
+	display: flex;
+	align-items: center;
+	.tui-goods__list {
 		display: flex;
 		align-items: center;
-		.tui-goods__list {
-			display: flex;
-			align-items: center;
+	}
+	.tui-goods__item {
+		background-color: #fff;
+		width: 307rpx;
+		height: 460rpx;
+		border-radius: 16rpx;
+		box-sizing: border-box;
+		margin-right: 16rpx;
+		padding: 17rpx;
+		&.ross{
+			padding: 0;
 		}
-		.tui-goods__item {
-			background-color: #fff;
+		.tui-goods__ross{
 			width: 307rpx;
 			height: 460rpx;
-			border-radius: 16rpx;
-			box-sizing: border-box;
-			margin-right: 16rpx;
-			padding: 17rpx;
-		}
-		.tui-group-name{
-			width: 100%;
-			height: 36rpx;
+			text-align: center;
+			background-color: #F3920D;
+			line-height: 460rpx;
+			color: #fff;
+			font-size: 40rpx;
 			float: left;
-			margin-bottom: 13rpx;
-			.tui-group-title{
-				font-size: 26rpx;
-				line-height: 36rpx;
-				float: left;
-				color: #333333;
-			}
-			.icon-xiayibu{
-				font-size: 26rpx;
-				line-height: 36rpx;
-				float: right;
-				color: #909090;
+			border-radius: 16rpx;
+			.ross-image{
+				width: 100%;
+				height: 100%;
+				border-radius: 16rpx;
+				display: block;
 			}
 		}
-		.tui-goods__main{
-			width: 100%;
-			height: auto;
+	}
+	.tui-group-name {
+		width: 100%;
+		height: 36rpx;
+		float: left;
+		margin-bottom: 13rpx;
+		.tui-group-title {
+			font-size: 26rpx;
+			line-height: 36rpx;
 			float: left;
-			position: relative;
-			&.one{
-				margin-bottom: 14rpx;
-			}
+			color: #333333;
 		}
-		.tui-goods__imgbox {
-			width: 273rpx;
-			height: 273rpx;
-			box-sizing: border-box;
-			border-radius: 8rpx;
+		.icon-xiayibu {
+			font-size: 26rpx;
+			line-height: 36rpx;
+			float: right;
+			color: #909090;
 		}
-		.tui-goods__img {
-			max-width: 273rpx;
-			max-height: 273rpx;
-			border-radius: 8rpx;
-			display: block;
+	}
+	.tui-goods__main {
+		width: 100%;
+		height: auto;
+		float: left;
+		position: relative;
+		&.one {
+			margin-bottom: 14rpx;
 		}
-		.tui-goods__name{
-			width: 100%;
-			height: 48rpx;
-			float: left;
-			line-height: 48rpx;
-			box-sizing: border-box;
-			padding-left: 12rpx;
-			font-size: $font-size-24;
-			color: #FFFFFF;
-			background-color: rgba(0,0,0,0.4);
+	}
+	.tui-goods__imgbox {
+		width: 273rpx;
+		height: 273rpx;
+		box-sizing: border-box;
+		border-radius: 8rpx;
+	}
+	.tui-goods__img {
+		max-width: 273rpx;
+		max-height: 273rpx;
+		border-radius: 8rpx;
+		display: block;
+	}
+	.tui-goods__name {
+		width: 100%;
+		height: 48rpx;
+		float: left;
+		line-height: 48rpx;
+		box-sizing: border-box;
+		padding-left: 12rpx;
+		font-size: $font-size-24;
+		color: #ffffff;
+		background-color: rgba(0, 0, 0, 0.4);
+		position: absolute;
+		bottom: 0;
+		left: 0;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+		overflow: hidden;
+		border-radius: 0 0 8rpx 8rpx;
+	}
+	.tui-goods__statu {
+		padding-left: 45rpx;
+		padding-right: 10rpx;
+		height: 35rpx;
+		position: absolute;
+		top: 17rpx;
+		left: 17rpx;
+		background-color: rgba(0, 0, 0, 0.4);
+		border-radius: 18rpx;
+		line-height: 35rpx;
+		color: #ffffff;
+		text-align: right;
+		font-size: $font-size-20;
+		.icon-live {
+			width: 17rpx;
+			height: 17rpx;
+			display: block;
+			margin: 0 auto;
 			position: absolute;
-			bottom: 0;
-			left: 0;
-			white-space: nowrap;
-			text-overflow: ellipsis;
-			overflow: hidden;
-			border-radius:0 0 8rpx 8rpx;
+			left: 15rpx;
+			top: 9rpx;
 		}
-		.tui-goods__statu{
-			padding-left: 45rpx;
-			padding-right: 10rpx;
+		.iconfont {
+			width: 35rpx;
 			height: 35rpx;
-			position: absolute;
-			top: 17rpx;
-			left: 17rpx;
-			background-color: rgba(0,0,0,0.4);
-			border-radius: 18rpx;
 			line-height: 35rpx;
-			color: #FFFFFF;
-			text-align: right;
-			font-size: $font-size-20;
-			.icon-live{
-				width: 17rpx;
-				height: 17rpx;
-				display: block;
-				margin: 0 auto;
-				position: absolute;
-				left: 15rpx;
-				top: 9rpx;
-			}
-			.iconfont{
-				width: 35rpx;
-				height: 35rpx;
-				line-height: 35rpx;
-				display: block;
-				position: absolute;
-				left: 10rpx;
-				font-size: $font-size-26;
-				&.icon-weikaishi{
-					color: #E56D00;
-					left:0;
-				}
-				&.icon-jieshu{
-					color: #FFFFFF;
-					left:0;
-					font-size: 22rpx;
-				}
+			display: block;
+			position: absolute;
+			left: 10rpx;
+			font-size: $font-size-26;
+			&.icon-weikaishi {
+				color: #e56d00;
+				left: 0;
 			}
-		}
-		.tui-goods__text{
-			width: 100%;
-			height: 44rpx;
-			float: left;
-			line-height: 44rpx;
-			box-sizing: border-box;
-			padding-left: 12rpx;
-			font-size: $font-size-24;
-			color: #666666;
-			white-space: nowrap;
-			text-overflow: ellipsis;
-			overflow: hidden;
-			position: relative;
-			&::before{
-				content: '';
-				width: 8rpx;
-				height: 8rpx;
-				border-radius: 50%;
-				background-color: #cccccc;
-				position: absolute;
+			&.icon-jieshu {
+				color: #ffffff;
 				left: 0;
-				top: 18rpx;
+				font-size: 22rpx;
 			}
 		}
-	}	
+	}
+	.tui-goods__text {
+		width: 100%;
+		height: 44rpx;
+		float: left;
+		line-height: 44rpx;
+		box-sizing: border-box;
+		padding-left: 12rpx;
+		font-size: $font-size-24;
+		color: #666666;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+		overflow: hidden;
+		position: relative;
+		&::before {
+			content: '';
+			width: 8rpx;
+			height: 8rpx;
+			border-radius: 50%;
+			background-color: #cccccc;
+			position: absolute;
+			left: 0;
+			top: 18rpx;
+		}
+	}
+}
 </style>

+ 4 - 2
mixins/appMixins.js

@@ -3,10 +3,10 @@ import { mapState,mapMutations} from 'vuex'
 import authorize from '@/common/config/authorize.js'
 const appMixins = {
     computed: {
-        ...mapState(['hasLogin','updateNoticeNum'])
+        ...mapState(['hasLogin','isWxAuthorize'])
     },
     methods: {
-        ...mapMutations(['login','logout','isWxAuthorize']),
+        ...mapMutations(['login','logout','updateNoticeNum','updateRossShow']),
         async getWxAuthorize(){
             const wechatCode = await authorize.getCode('weixin')// 根据微信的code获取用户登录状态:1已登录过 -1未登录过
             const getUserInfo = await authorize.getUserInfo('weixin')
@@ -18,12 +18,14 @@ const appMixins = {
                 .then(response =>{
                     this.$store.commit('updateStatus',response.data)
                     this.login(response.data)
+                    this.updateRossShow()
                     uni.setStorageSync('token',response.data.token)
                     uni.setStorageSync('unionId',response.data.unionId)
                 })
                 .catch(error =>{
                     this.logout(error.data)
                     this.$store.commit('updateStatus',error.data)
+                    this.updateRossShow()
                     uni.setStorageSync('unionId',error.data.unionId)
                     if(!this.hasLogin){
                         if(uni.getStorageSync('isActivitySwitch')){

+ 50 - 0
mixins/cmSrsMixins.js

@@ -0,0 +1,50 @@
+// 统计Ross 用户 
+import Vue from 'vue'
+const cmSrsMixins = {
+    data() {
+        return {
+            handleProsId: 0,
+            handleShopId: 0,
+            handleProsKey: '',
+            handleShopKey: '',
+            productIds: [7247, 7248], //Ross 商品ID集合
+            shopIds: [1378], // Ross 供应商Id
+            keyWords: ['Binary Premium', '智能体疗管理系统', '448k', '肌肉重塑疗法', '西班牙ROSS', 'ROSS', '智能体疗', '西班牙Ross', 'Ross',
+                '西班牙ross', 'ross',
+            ], // Ross 搜索商品关键词 集合
+            shopKeyWords: ['深圳艾斯佰丽生物科技有限公司', '艾斯佰丽'],
+            showRossHtml: false,
+            isDisabled: true
+        }
+    },
+    methods: {
+        checkedIsRossSet() {
+            if (this.productIds.includes(this.handleProsId * 1) ||
+				this.shopIds.includes(this.handleShopId * 1) ||
+				this.keyWords.includes(this.handleProsKey) ||
+				this.shopKeyWords.includes(this.handleShopKey)
+            ) {
+                uni.setStorageSync('behaviorType', 2)
+                if (!this.hasLogin) {
+                    this.userInformationIsClick()
+                }
+            }
+        },
+        userInformationIsClick() {
+            // 查看用户是否有过弹框游客当天是否有过弹框
+            this.UserService.userInformationIsClick()
+                .then(response => {
+                    if (response.data) {
+                        setTimeout(() => {
+                            this.showRossHtml = true
+                        }, 5000)
+                    }
+                })
+                .catch(error => {
+                    console.log('查询失败~')
+                })
+        }
+    }
+}
+
+export default cmSrsMixins

+ 0 - 86
mixins/cmSysMixins.js

@@ -1,86 +0,0 @@
-// 统计数据
-import Vue from 'vue'
-const defaultParams = {
-    pagePath: '', //页面路径
-    accessDuration: 0, //浏览时长初始值为 0
-    pageType: '', //页面类型
-    pageLabel: '', //页面标签
-    userId: 0, //用户Id
-    productId: 0 //商品Id
-}
-const cmSysMixins = {
-    data() {
-        return {
-            cmSysParams:Object.assign({}, defaultParams),
-            clearTimeSet: null,
-            enterTime:null,
-            outTime:null
-        }
-    },
-    onLoad() {
-        let that = this
-        // this.cmSysVitaSetTime() // 页面加载完成后开始计时
-        // uni.addInterceptor('navigateTo', { //监听跳转
-        //     success(e) {
-        //         console.log('navigateTo============')
-        //         that.cmSysVitaMixins()
-        //     }
-        // })
-        // uni.addInterceptor('redirectTo', { //监听关闭本页面跳转
-        //     success(e) {
-        //         console.log('redirectTo============')
-        //         that.cmSysVitaMixins()
-        //     }
-        // })
-        // uni.addInterceptor('switchTab', { //监听tabBar跳转
-        //     success(e) {
-        //         console.log('switchTab============')
-        //         that.cmSysVitaMixins()
-        //     }
-        // })
-        // uni.addInterceptor('navigateBack', { //监听tabBar跳转
-        //     success(e) {
-        //         console.log('navigateBack============')
-        //         that.cmSysVitaMixins()
-        //     }
-        // })
-    },
-    methods: {
-        async cmSysVitaSetTime() {
-            //设置定时器
-            const userInfo = await this.$api.getStorage()
-            const pages = getCurrentPages()
-            const currentPage = pages[pages.length - 1]
-            this.cmSysParams.pagePath = `/${currentPage.route}`
-            this.cmSysParams.userId = userInfo ? userInfo.userId : 0
-            this.clearTimeSet = setInterval(() => {
-                this.cmSysParams.accessDuration++
-            }, 1000)
-        },
-        cmSysVitaMixins() { // 上送后台接口,将浏览时长等信息传到后台,离开当前路由后调用
-            console.log(`页面路径:${this.cmSysParams.pagePath}`, `停留:${this.cmSysParams.accessDuration}s`,
-                `标签:${this.cmSysParams.pageLabel}`)
-            console.log('上送用户参数', this.cmSysParams)
-            // this.userRecordStatistics(this.cmSysParams)
-            this.cmSysParams = Object.assign({}, defaultParams)
-            clearInterval(this.clearTimeSet) // 离开页面后清除定时器
-        },
-        userRecordStatistics(cmSysParams){// 上送用户行为记录接口
-            this.UserService.userRecordStatistics(cmSysParams)
-			    .then(response => {
-			        console.log('<-------上送用户行为记录成功------>')
-			    })
-			    .catch(error => {
-			        console.log('<-------上送用户行为记录异常------>')
-			    })
-        },
-    //     onHide(){
-			 // this.cmSysVitaMixins()
-    //     },
-    //     onUnload(){
-    //         this.cmSysVitaMixins()
-    //     }
-    }
-}
-
-export default cmSysMixins

+ 31 - 1
pages/goods/good-floor.vue

@@ -9,6 +9,12 @@
 			<!-- 金刚区菜单 -->
 			<templateNav :list="navBarsList" v-if="isRequest"></templateNav>
 		</view>	
+		<!-- ross广告图区 -->
+		<view class="container-ross" v-if="isRossShow">
+			<view class="ross-image" @click="this.$api.navigateTo('/pages/supplier/user/my-shop?shopId=1378')">
+				<image class="image" src="https://static.caimei365.com/app/img/ross/ross-image@2x.jpg" mode=""></image>
+			</view>
+		</view>
 		<!-- 楼层 -->
 		<view class="container-section tui-skeleton">
 			<page-floor :list="pageList" :userIdentity="userIdentity" :pageType="2" v-if="isRequest"></page-floor>
@@ -50,7 +56,7 @@
 			}
 		},
 		computed: {
-			...mapState(['hasLogin','userInfo','identity','isWxAuthorize'])
+			...mapState(['hasLogin','userInfo','isRossShow','isWxAuthorize'])
 		},
 		onLoad(option) {
 			if(option.type =='share'){
@@ -139,6 +145,30 @@
 		width: 100%;
 		height: auto;
 	}
+	.container-ross{
+		width: 100%;
+		height: 264rpx;
+		box-sizing: border-box;
+		padding: 24rpx 24rpx 0 24rpx;
+		float: left;
+		background-color: #F5F5F5;
+		.ross-image{
+			width: 100%;
+			height: 100%;
+			line-height: 240rpx;
+			background-color: #F3920D;
+			border-radius: 16rpx;
+			text-align: center;
+			font-size: 80rpx;
+			color: #FFFFFF;
+			.image{
+				width: 100%;
+				height: 100%;
+				border-radius: 16rpx;
+				display: block;
+			}
+		}
+	}
 	.container-section{
 		width: 100%;
 		height: auto;

+ 311 - 8
pages/goods/product.vue

@@ -545,6 +545,53 @@
 						</view>
 					</view>
 				</view>
+				<!--底部选择模态层弹窗组件 -->
+				<tui-bottom-popup :radius="true" :show="popupShow3" @close="hidePopup(3)">
+					<view class="tui-popup-box clearfix">
+						<view class="tui-shopping-main" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
+							<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="tui-right-flex tui-popup-btn"
+							:style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }"
+						>
+							<view class="tui-flex-1"> <view class="tui-button" @click="btnConfirm">确定</view> </view>
+						</view>
+					</view>
+				</tui-bottom-popup>
 				<!-- 侧边 -->
 				<scroll-top :isScrollTop="isScrollTop" :bottom="200" v-show="tabCurrentIndex !== 3"></scroll-top>
 			</view>
@@ -584,6 +631,8 @@
 			:userIdentity="userIdentity"
 			:firstClubType="firstClubType"
 		/>
+		<!-- ross弹窗 -->
+		<cmRossPopup v-if="showRossHtml" :popupShow="showRossHtml"></cmRossPopup>
 	</view>
 </template>
 
@@ -601,15 +650,17 @@ import cmProductModal from './components/cm-product-modal.vue'
 import cmPramsPopup from './components/cm-prams-popup.vue'
 import cmUnitPopup from './components/cm-unit-popup.vue'
 import couponTabs from '@/components/cm-module/coupon/tui-tabs.vue'
+import cmRossPopup from '@/components/cm-module/cm-ross/cm-ross-popup'
 import authorize from '@/common/config/authorize.js'
 import wxLogin from '@/common/config/wxLogin.js'
 import { debounce } from '@/common/config/common.js'
 import payMixins from '@/mixins/payMixins.js'
 import proMixins from './mixins/proMixins.js'
+import cmSrsMixins from '@/mixins/cmSrsMixins.js'
 import thorui from '@/components/clipboard/clipboard.thorui.js'
 var isPreviewImg
 export default {
-	mixins: [payMixins,proMixins],
+	mixins: [payMixins,proMixins,cmSrsMixins],
 	components: {
 		customP,
 		parser,
@@ -622,7 +673,8 @@ export default {
 		cmProductDoc,
 		cmPramsPopup,
 		cmUnitPopup,
-		cmProductModal
+		cmProductModal,
+		cmRossPopup
 	},
 	data() {
 		return {
@@ -769,7 +821,7 @@ export default {
 		}
 	},
 	onLoad(option) {
-		this.productId = this.couponParam.productId = this.addParams.productId = option.id //获取商品ID
+		this.productId = this.couponParam.productId = this.addParams.productId = this.handleProsId = option.id //获取商品ID
 		if (option.typeId) {
 			this.typeId = option.typeId
 		}
@@ -845,6 +897,8 @@ export default {
 						'productLabel',
 						`${productLabel}-${this.product.brandName ? this.product.brandName : ''}`
 					)
+					//校验是否为ross
+					this.checkedIsRossSet()
 					//判断是否可以跳转供应商主页
 					if (this.product.shopType === 2) {
 						this.isShowCaimeiShop = true
@@ -868,6 +922,7 @@ export default {
 					this.ladderPriceFlag = this.product.ladderPriceFlag
 					this.html = this.adaptRichTextImg(this.product)
 					this.stock = this.product.stock
+					this.buyRetailPriceStep = this.product.step
 					this.number = this.product.minBuyNumber
 					this.minBuyNumber = this.product.minBuyNumber
 
@@ -882,6 +937,7 @@ export default {
 					//拆分金额并转千分位格式显示
 					if (this.product.price != null) {
 						this.retailPrice = this.product.price.toFixed(2)
+						this.buyRetailPrice = this.product.price
 					}
 					//处理下架商品和售罄商品
 					if (this.product.validFlag == 3 || this.stock == 0) {
@@ -1243,6 +1299,158 @@ export default {
 			console.log(e.detail.path)
 			console.log(e.detail.query)
 		},
+		buyProductCart() {
+			//底部购物车按钮点击
+			if (this.hasLogin) {
+				// 友盟埋点商品详情购物车入口点击事件
+				if (process.env.NODE_ENV != 'development') {
+					this.$uma.trackEvent('Um_Event_ProductShoppingCart', {
+						Um_Key_PageName: '去购物车',
+						Um_Key_SourcePage: '商品详情购物车入口'
+					})
+				}
+				this.$api.navigateTo('/pages/goods/cart')
+			} else {
+				this.$api.navigateTo('/pages/login/login?type=1')
+			}
+		},
+		btnGetConfirm(type) {
+			//加入购物车&&立即购买点击
+			if (this.hasLogin) {
+				switch (type) {
+					case 'add':
+						// 友盟埋点商品详情加入购物车点击事件
+						if (process.env.NODE_ENV != 'development') {
+							this.$uma.trackEvent('Um_Event_ProductAddCart', {
+								Um_Key_PageName: '加入购物车',
+								Um_Key_SourcePage: '商品详情',
+								Um_Key_ProductID: `${this.product.productId}`
+							})
+						}
+						if (this.ladderPriceFlag) {
+							this.processActivityPrice()
+						}
+						break
+					case 'buy':
+						// 友盟埋点商品详情立即购买点击事件
+						if (process.env.NODE_ENV != 'development') {
+							this.$uma.trackEvent('Um_Event_ProductBuyConfirm', {
+								Um_Key_PageName: '立即购买',
+								Um_Key_SourcePage: '商品详情',
+								Um_Key_ProductID: `${this.product.productId}`
+							})
+						}
+						break
+				}
+				this.isBtnType = type
+				this.popupShow3 = true
+			} else {
+				this.$api.navigateTo('/pages/login/login?type=1')
+			}
+		},
+		//popup弹窗数量增加按钮
+		changeCountAdd() {
+			if (this.buyRetailPriceStep == 2) {
+				this.number += this.minBuyNumber
+			} else {
+				this.number++
+			}
+			this.processActivityPrice()
+		},
+		//popup弹窗数量减按钮
+		changeCountSub() {
+			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.price
+			} else {
+				this.ladderPriceList.forEach((item, index) => {
+					if (this.number >= item.buyNum) {
+						this.buyRetailPrice = item.buyPrice
+					}
+				})
+			}
+		},
+		btnConfirm() {
+			//加入购物车&&立即购买跳转订单页并关闭弹窗
+			// 友盟埋点商品详情确认购买商品点击事件
+			if (process.env.NODE_ENV != 'development') {
+				this.$uma.trackEvent('Um_Event_ProductShoppingConfirm', {
+					Um_Key_PageName: '商品购买确认',
+					Um_Key_SourcePage: '商品详情',
+					Um_Key_ProductID: `${this.product.productId}`
+				})
+			}
+			if (this.isBtnType == 'add') {
+				this.getAddProductCart()
+				this.popupShow3 = false
+			} else {
+				this.toConfirmation()
+			}
+		},
+		toConfirmation() {
+			//跳转确认订单页面
+			let productStp = {
+				productIds: this.product.productId,
+				productCount: this.number
+			}
+			this.$api.navigateTo(`/pages/user/order/create-order?type=1&data=${JSON.stringify({ data: productStp })}`)
+			this.popupShow3 = false
+		},
+		getAddProductCart() {
+			//增加购物车成功和toast弹窗提示成功
+			this.ProductService.shoppingAddCart({
+				productId: this.productId,
+				userId: this.userId,
+				productCount: this.number,
+				source: 2
+			})
+				.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.bottomCartNumber = response.data
+				})
+				.catch(error => {
+					console.log('error', error.msg)
+				})
+		},
 		setHeaderBtnPosi() {
 			// 获得胶囊按钮位置信息
 			let headerBtnPosi = uni.getMenuButtonBoundingClientRect()
@@ -1270,6 +1478,9 @@ export default {
 				this.$api.navigateTo('/pages/supplier/user/my-shop?shopId=' + this.shopId)
 			}
 		},
+		discard() {
+			//丢弃
+		},
 		onShare(res) {
 			//分享转发
 			if (res.from === 'button') {
@@ -1315,10 +1526,6 @@ export default {
 						this.$api.navigateTo('/pages/login/login')
 					}
 					break
-				case 3:
-					this.popupShow3 = true
-					this.unitPopupType = 2
-					break
 			}
 		},
 		hidePopup(index) {
@@ -1526,7 +1733,7 @@ page {
 		position: absolute;
 		right: 30rpx;
 		top: 0;
-		z-index: 99;
+		z-index: 999;
 	}
 }
 .banner {
@@ -2754,6 +2961,102 @@ page {
 			}
 		}
 	}
+	.tui-shopping-main {
+		width: 100%;
+		.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;
+					border: 2rpx solid #ffe6dc;
+					border-radius: 30rpx;
+					height: 48rpx;
+					margin-left: 20rpx;
+					.iconfont {
+						font-size: $font-size-24;
+						padding: 0 18rpx;
+						color: #999999;
+						text-align: center;
+						line-height: 48rpx;
+						font-weight: bold;
+						background: #fef6f3;
+						&.icon-jianhao {
+							border-radius: 30rpx 0 0 30rpx;
+						}
+						&.icon-jiahao {
+							border-radius: 0 30rpx 30rpx 0;
+						}
+					}
+					.btn-input {
+						width: 62rpx;
+						height: 48rpx;
+						line-height: 48rpx;
+						background: #ffffff;
+						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-btn {
 	width: 100%;

+ 355 - 198
pages/login/login.vue

@@ -3,249 +3,406 @@
 		<view class="login-main">
 			<image class="logo" src="https://static.caimei365.com/app/img/icon/logo@2x.png" mode=""></image>
 		</view>
-		<view class="login-form">
+		<view class="login-form" v-if="loginType === 0">
 			<view class="login-input">
-				<input type="text" 
-					   v-model="params.mobileOrEmail"  
-					   maxlength="30" 
-					   class="input" 
-					   placeholder="请输入邮箱/手机号"
+				<text class="iconfont icon-shouji"></text>
+				<input
+					type="number"
+					v-model="codeParams.mobile"
+					maxlength="11"
+					class="input"
+					placeholder="请输入邮箱/手机号"
+					@input="handleMobile"
 				/>
 			</view>
 			<view class="login-input">
-				<input v-show="isShowEye" type="text" v-model="params.password"  maxlength="18" class="input" placeholder="请输入密码" autocomplete="new-password"/>
-				<input v-show="!isShowEye" type="password" v-model="params.password"  :password="true" maxlength="18" class="input" placeholder="请输入密码" autocomplete="new-password"/>
-				<view class="iconfont" :class="isShowEye ? iconEyen : iconEyes"  @click="passwordClick"></view>
+				<text class="iconfont icon-duanxin"></text>
+				<input
+					type="number"
+					v-model="codeParams.code"
+					maxlength="6"
+					class="input code"
+					placeholder="请输入短信验证码"
+					@input="handleSmsCode"
+				/>
+				<view class="code-btn" @click.stop="handleMobileCode"> {{ mobileCodeText }} </view>
+			</view>
+			<view class="login-input link">
+				<view class="login-reg" @click.stop="navigatorRegirst('/pages/login/register-select')">免费注册</view>
+				<view class="login-pwd" @click.stop="handeleLogin(1)">密码登录</view>
+			</view>
+		</view>
+		<view class="login-form" v-if="loginType === 1">
+			<view class="login-input">
+				<text class="iconfont icon-shouji"></text>
+				<input
+					type="text"
+					v-model="accountParams.mobileOrEmail"
+					maxlength="30"
+					class="input"
+					placeholder="请输入邮箱/手机号"
+					@input="handleMobileOrEmail"
+				/>
+			</view>
+			<view class="login-input">
+				<text class="iconfont icon-mima"></text>
+				<input
+					type="text"
+					v-model="accountParams.password"
+					maxlength="18"
+					class="input"
+					placeholder="请输入密码"
+					autocomplete="new-password"
+					@input="handlePassword"
+				/>
 			</view>
 			<view class="login-input link">
 				<view class="login-reg" @click.stop="navigatorRegirst('/pages/login/register-select')">免费注册</view>
-				<view class="login-pwd" @click.stop="this.$api.navigateTo('/pages/login/password')">忘记密码?</view>
+				<view class="login-pwd" @click.stop="handeleLogin(0)">验证码登录</view>
 			</view>
 		</view>
-		<view class="login-btn"  @click="confirmLogin">账号登录</view>
-		<view class="login-btn-last" @click.stop="this.$api.navigateTo(`/pages/login/logincode?data=${getOption}`)">邀请码登录></view>
+		<button class="login-btn" :disabled="isDisabled" :class="isDisabled ? 'disabled' : ''" @click="handleSubLogin">
+			登录
+		</button>
+		<view class="login-text" v-if="loginType === 1" @click.stop="this.$api.navigateTo('/pages/login/password')"
+			>忘记密码?</view
+		>
+		<view class="login-btn-last" @click.stop="this.$api.navigateTo(`/pages/login/logincode?data=${getOption}`)"
+			>邀请码登录></view
+		>
 	</view>
 </template>
 
 <script>
-	import { mapState,mapMutations } from 'vuex'
-	import authorize from '@/common/config/authorize.js' 
-	import wxLogin from '@/common/config/wxLogin.js'
-	export default{
-		data() {
-			return{
-				isShowEye:false,
-				iconEyes:'icon-yanjing_yincang_o',
-				iconEyen:'icon-yanjing_xianshi_o',
-				getOption:'',	//页面传递参数
-				params:{
-					mobileOrEmail:'',//用户登录账号
-					password:'',//用户登录密码	
-					unionId:''
-				}
+import { mapState, mapMutations } from 'vuex'
+import authorize from '@/common/config/authorize.js'
+import wxLogin from '@/common/config/wxLogin.js'
+export default {
+	data() {
+		return {
+			getOption: '', //页面传递参数
+			accountParams: {
+				mobileOrEmail: '', //用户登录账号
+				password: '', //用户登录密码
+				unionId: ''
+			},
+			codeParams: {
+				mobile: '', //用户登录手机号
+				code: '',
+				unionId: ''
+			},
+			smsCodeParams: {
+				mobile: '' //用户登录手机号
+			},
+			loginType: 0,
+			isMobileDisabled: false, //手机验证码按钮控制
+			mobilCount: '', //倒计时
+			mobileCodeText: '获取验证码',
+			mobilTime: null,
+			isDisabled: true
+		}
+	},
+	onLoad(option) {
+		this.getOption = JSON.stringify(option)
+	},
+	computed: {
+		...mapState(['hasLogin', 'isWxAuthorize', 'isLoginType'])
+	},
+	methods: {
+		...mapMutations(['login']),
+		handleMobileOrEmail(e) {
+			//账号输入
+			this.accountParams.mobileOrEmail = e.detail.value
+			this.handldeCheckInput()
+		},
+		handlePassword(e) {
+			//密码输入
+			this.accountParams.password = e.detail.value
+			this.handldeCheckInput()
+		},
+		handleMobile(e) {
+			//短信验证手机号输入
+			this.codeParams.mobile = this.smsCodeParams.mobile = e.detail.value
+			this.handldeCheckInput()
+		},
+		handleSmsCode(e) {
+			//短信验证码输入
+			this.codeParams.code = e.detail.value
+			this.handldeCheckInput()
+		},
+		handldeCheckInput() {
+			// 控制按钮按钮高亮
+			if (this.loginType === 0) {
+				this.isDisabled = !(this.codeParams.mobile !== '' && this.codeParams.code !== '')
+			} else {
+				this.isDisabled = !(this.accountParams.mobileOrEmail !== '' && this.accountParams.password !== '')
 			}
 		},
-		onLoad(option) {
-			this.getOption = JSON.stringify(option)
+		handleMobileCode() {
+			// 获取短信验证码
+			if (this.smsCodeParams.mobile == '') {
+				this.$util.msg('请输入手机号', 2000)
+				return
+			}
+			if (!this.$reg.isMobile(this.smsCodeParams.mobile)) {
+				this.$util.msg('请输入正确的手机号', 2000)
+				return
+			}
+			this.isMobileDisabled = true
+			this.userLoginCode(this.smsCodeParams)
 		},
-		computed: {
-			...mapState(['hasLogin','isWxAuthorize','isLoginType'])
+		userLoginCode(params) {
+			// 获取登录短息验证码
+			this.UserService.userLoginCode(params)
+				.then(response => {
+					this.$util.msg('获取验证码成功', 2000)
+					const TIME_COUNT = 60
+					if (!this.mobilTime) {
+						this.mobilCount = TIME_COUNT
+						this.isMobileDisabled = true
+						this.mobilTime = setInterval(() => {
+							if (this.mobilCount > 1 && this.mobilCount <= TIME_COUNT) {
+								this.mobilCount--
+								this.mobileCodeText = this.mobilCount + 's'
+							} else {
+								this.isMobileDisabled = false
+								clearInterval(this.mobilTime)
+								this.mobilTime = null
+								this.mobileCodeText = '获取验证码'
+							}
+						}, 1000)
+					}
+				})
+				.catch(error => {
+					this.$util.msg(error.msg, 2000)
+					this.isMobileDisabled = false
+				})
 		},
-		methods:{
-			...mapMutations(['login']),
-			async confirmLogin(){
-				if( this.params.mobileOrEmail == ''){
-					this.$util.msg('请输入账户名',2000)
-					return
-				}
-				if( this.params.password == ''){
-					this.$util.msg('请输入密码',2000)
-					return
-				}
-				this.AorganizationLogin()
-			},
-			AorganizationLogin(){
-				this.UserService.AorganizationLogin(this.params)
-					.then(response =>{
-						if(response.code === 0){
-							this.storeUpdataeStatus(response.data)
-							this.$api.navigateTo(`/pages/login/bindwechat?data=${JSON.stringify(this.getOption)}&codeType=${response.code}`)
-						}else if(response.code === -3){
-							this.$util.modal('','您的企业账号审核未通过,请修改资料','前往修改','',false,() =>{
-								this.$store.commit('updateStatus',response.data)
-								this.$api.navigateTo('/pages/login/apply-supplier')
-							})
-						}else{
-							this.$util.msg(response.msg,2000)
-						}
-					})
-			},
-			storeUpdataeStatus(data){
-				uni.setStorageSync('token',data.token)
-				this.$store.commit('updateStatus',data)
-				this.login(data)
-			},
-			navigatorRegirst(url){
-				// 友盟埋点注册入口点击事件
-				if(process.env.NODE_ENV != 'development'){
-					this.$uma.trackEvent('Um_Event_Regiest', {
-						Um_Key_PageName: '立即注册',
-						Um_Key_SourcePage: '登录页面',
-					})
-				}
-				this.$api.navigateTo(url)
-			},
-			passwordClick() { //密码显隐操作
-				this.isShowEye = !this.isShowEye
-			},
-			async InitAuthorize(){ //是否已授权 0:为取消授权 1:为已授权 2:为未操作
-				wxLogin.wxLoginQuick()	
+		async handleSubLogin() {
+			// 点击登录
+			const _storage = await this.$api.getStorage()
+			this.accountParams.unionId = this.codeParams.unionId = _storage.unionId ? _storage.unionId : ''
+			if (this.loginType === 0) {
+				this.userCodeLogin()
+			} else {
+				this.userPasswordLogin()
 			}
 		},
-		onShow() {
-			this.$api.getStorage().then((resolve) =>{
-				this.params.unionId = resolve.unionId ?  resolve.unionId : 0
+		userCodeLogin() {
+			// 短信验证码登录
+			this.UserService.userCodeLogin(this.codeParams).then(response => {
+				this.updataeStatus(response)
+			})
+		},
+		userPasswordLogin() {
+			// 账号密码登录
+			this.UserService.AorganizationLogin(this.accountParams).then(response => {
+				this.updataeStatus(response)
 			})
-			this.InitAuthorize()
+		},
+		updataeStatus(data) {
+			// 处理返回数据
+			if (data.code === 0) {
+				uni.setStorageSync('token', data.data.token)
+				this.$store.commit('updateStatus', data.data)
+				this.login(data.data)
+				this.$api.navigateTo(
+					`/pages/login/bindwechat?data=${JSON.stringify(this.getOption)}&codeType=${data.code}`
+				)
+			} else if (data.code === -3) {
+				this.$util.modal('', '您的企业账号审核未通过,请修改资料', '前往修改', '', false, () => {
+					this.$store.commit('updateStatus', data.data)
+					this.$api.navigateTo('/pages/login/apply-supplier')
+				})
+			} else {
+				this.$util.msg(data.msg, 2000)
+			}
+		},
+		navigatorRegirst(url) {
+			// 友盟埋点注册入口点击事件
+			if (process.env.NODE_ENV != 'development') {
+				this.$uma.trackEvent('Um_Event_Regiest', {
+					Um_Key_PageName: '立即注册',
+					Um_Key_SourcePage: '登录页面'
+				})
+			}
+			this.$api.navigateTo(url)
+		},
+		handeleLogin(type) {
+			this.loginType = type
+		},
+		async checkedAuthorize() {
+			//是否已授权 0:为取消授权 1:为已授权 2:为未操作
+			wxLogin.wxLoginQuick()
 		}
+	},
+	onShow() {
+		this.checkedAuthorize()
 	}
+}
 </script>
 
 <style lang="scss">
-	.login{
+.login {
+	width: 100%;
+	height: auto;
+	.model-warp.none {
+		display: none;
+	}
+	.model-warp.show {
+		display: block;
+	}
+	.login-main {
 		width: 100%;
-		height: auto;
-		.model-warp.none{
-			display: none;			
-		}
-		.model-warp.show{
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		height: 189rpx;
+		padding: 60rpx 0 40rpx 0;
+		margin-bottom: 70rpx;
+		.logo {
+			width: 467rpx;
+			height: 189rpx;
 			display: block;
 		}
-		.login-main{
+	}
+	.login-input {
+		width: 600rpx;
+		height: 88rpx;
+		padding: 24rpx 0;
+		margin: 0 auto;
+		margin-bottom: 30rpx;
+		background: #ffffff;
+		position: relative;
+		box-sizing: border-box;
+		border-bottom: 1px solid #e1e1e1;
+		.input {
 			width: 100%;
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			height: 189rpx;
-			padding:60rpx 0 40rpx 0;
-			margin-bottom: 70rpx;
-			.logo{
-				width:467rpx;
-				height: 189rpx;
-				display: block;
-			}
-		}
-		.login-input{
-			width: 600rpx;
-			height: 88rpx;
-			padding: 24rpx 0;
-			margin: 0 auto;
-			margin-bottom: 30rpx;
-			background: #FFFFFF;
-			position: relative;
+			height: 100%;
+			background: #ffffff;
+			font-size: $font-size-28;
+			line-height: 88rpx;
+			color: #333333;
+			padding-left: 100rpx;
 			box-sizing: border-box;
-			border-bottom: 1px solid #e1e1e1;
-			.input{
-				width: 100%;
-				height: 100%;
-				background: #FFFFFF;
-				font-size: $font-size-28;
-				line-height: 88rpx;
-				color: #333333;
-			}
-			.iconfont{
-				position: absolute;
-				right: 0;
-				top: 0;
-				font-size: 44rpx;
-				color: #999999;
-				font-weight: bold;
-				z-index: 99;
-				width: 96rpx;
-				height: 96rpx;
-				line-height: 96rpx;
-				text-align: center;
-			}
-			&.link{
-				background: #FFFFFF;
-				margin-bottom: 40rpx;
-				padding: 0 0;
-				line-height: 40rpx;
-				font-size: $font-size-28;
-				border-bottom: none;
-				.login-reg{
-					float: left;
-					color: $color-system;
-				}
-				.login-pwd{
-					float: right;
-					color: $text-color;
-				}
+			&.code {
+				padding-right: 200rpx;
 			}
 		}
-		.login-btn{
-			width: 600rpx;
-			height: 88rpx;
-			border-radius: 44rpx;
-			font-size: $font-size-28;
-			line-height: 88rpx;
-			color: #FFFFFF;
-			margin: 0 auto;
+		.code-btn {
+			width: 200rpx;
+			height: 80rpx;
+			position: absolute;
+			right: 0;
+			top: 0;
+			line-height: 80rpx;
 			text-align: center;
-			background: $btn-confirm;
+			color: $color-system;
+			font-size: $font-size-26;
 		}
-		.login-btn-last{
-			width: 600rpx;
-			height: 86rpx;
-			font-size: $font-size-28;
+		.iconfont {
+			position: absolute;
+			left: 0;
+			top: 0;
+			font-size: 48rpx;
+			color: #333333;
+			width: 100rpx;
+			height: 88rpx;
 			line-height: 88rpx;
-			color: $color-system;
-			margin: 0 auto;
-			text-align: center;
-			margin-top: 100rpx;
+			text-align: left;
 		}
-		.login-tel{
-			width: 702rpx;
+		&.link {
+			background: #ffffff;
+			margin-bottom: 40rpx;
+			padding: 0 0;
+			line-height: 40rpx;
 			font-size: $font-size-28;
-			line-height: 80rpx;
-			margin: 0 auto;
-			color: $text-color;
-			text-align: center;
-			margin-top: 150rpx;
+			border-bottom: none;
+			.login-reg {
+				float: left;
+				color: $color-system;
+			}
+			.login-pwd {
+				float: right;
+				color: $text-color;
+			}
 		}
-		.model-authorization{
-			width: 100%;
-			height: 100%;
-			position: fixed;
-			top: 0;
+	}
+	.login-btn {
+		width: 600rpx;
+		height: 88rpx;
+		border-radius: 44rpx;
+		font-size: $font-size-28;
+		line-height: 88rpx;
+		color: #ffffff;
+		margin: 0 auto;
+		text-align: center;
+		background: $btn-confirm;
+		&.disabled {
+			background: #e2e2e2;
+		}
+	}
+	.login-text {
+		width: 600rpx;
+		height: 88rpx;
+		font-size: $font-size-28;
+		line-height: 88rpx;
+		color: #333333;
+		margin: 0 auto;
+		text-align: center;
+	}
+	.login-btn-last {
+		width: 600rpx;
+		height: 86rpx;
+		font-size: $font-size-28;
+		line-height: 88rpx;
+		color: $color-system;
+		margin: 0 auto;
+		text-align: center;
+		margin-top: 100rpx;
+	}
+	.login-tel {
+		width: 702rpx;
+		font-size: $font-size-28;
+		line-height: 80rpx;
+		margin: 0 auto;
+		color: $text-color;
+		text-align: center;
+		margin-top: 150rpx;
+	}
+	.model-authorization {
+		width: 100%;
+		height: 100%;
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 999;
+		.authorization {
+			width: 518rpx;
+			height: 320rpx;
+			position: absolute;
+			background: rgba(255, 255, 255, 0.7);
 			left: 0;
-			z-index: 999;
-			.authorization{
-				width: 518rpx;
-				height: 320rpx;
+			right: 0;
+			bottom: 0;
+			top: 0;
+			margin: auto;
+			.to-btn {
 				position: absolute;
-				background: rgba(255,255,255,.7);
+				top: 0;
 				left: 0;
 				right: 0;
 				bottom: 0;
-				top: 0;
 				margin: auto;
-				.to-btn{
-					position: absolute;
-					top: 0;
-					left: 0;
-					right: 0;
-					bottom: 0;
-					margin: auto;
-					width: 70%;
-					height: 88rpx;
-					font-size: $font-size-28;
-					line-height: 88rpx;
-					color: #FFFFFF;
-					text-align: center;
-					border-radius: 44rpx;
-				}
+				width: 70%;
+				height: 88rpx;
+				font-size: $font-size-28;
+				line-height: 88rpx;
+				color: #ffffff;
+				text-align: center;
+				border-radius: 44rpx;
 			}
 		}
 	}
+}
 </style>

+ 10 - 2
pages/search/search-supplier.vue

@@ -68,6 +68,8 @@
 					<!--加载loadding-->
 			</view>
 		</view>
+		<!-- ross弹窗 -->
+		<cmRossPopup v-if="showRossHtml" :popupShow="showRossHtml"></cmRossPopup>
 	</view>  
 </template>
 
@@ -77,13 +79,17 @@
 	import tuiLoadmore from '@/components/tui-components/loadmore/loadmore'
 	import tuiNomore from '@/components/tui-components/nomore/nomore'
 	import uniStars from '@/components/uni-stars/uni-stars.vue'
+	import cmRossPopup from '@/components/cm-module/cm-ross/cm-ross-popup'
 	import authorize from '@/common/config/authorize.js'	
+	import cmSrsMixins from '@/mixins/cmSrsMixins.js'
 	export default {
 		components:{
 			tuiLoadmore,
 			tuiNomore,
-			uniStars
+			uniStars,
+			cmRossPopup
 		},
+		mixins: [cmSrsMixins],
 		data() {
 			return {
 				iconClass:'icon-aixin',
@@ -128,6 +134,9 @@
 			},	
 			searchsupplierList(){//搜索
 				this.listQuery.pageNum=1
+				this.handleShopKey = this.listQuery.keyword
+				uni.setStorageSync('pageLabel',this.listQuery.keyword)
+				this.checkedIsRossSet() //判断是否弹窗ross广告
 				this.GetSearchSupplierList()
 				// 友盟埋点供应商搜索点击
 				if(process.env.NODE_ENV != 'development'){
@@ -139,7 +148,6 @@
 				}
 			},
 			GetSearchSupplierList(){//查询供应商列表	
-				uni.setStorageSync('pageLabel',this.listQuery.keyword)
 				this.ShopService.GetSearchSupplierList(this.listQuery).then(response =>{
 					let data = JSON.parse(response.data)
 					let dataList = data.items

+ 10 - 2
pages/search/search.vue

@@ -482,6 +482,8 @@
                 </view>
             </view>
         </tui-drawer>
+		<!-- ross弹窗 -->
+		<cmRossPopup v-if="showRossHtml" :popupShow="showRossHtml"></cmRossPopup>
         <!-- 透明模态层 -->
         <modal-layer v-if="isModallayer"></modal-layer>
     </view>
@@ -491,15 +493,19 @@
 import { mapState } from 'vuex'
 import modalLayer from '@/components/modal-layer'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
+import cmRossPopup from '@/components/cm-module/cm-ross/cm-ross-popup'
 import wxLogin from '@/common/config/wxLogin.js'
 import { debounce } from '@/common/config/common.js'
+import cmSrsMixins from '@/mixins/cmSrsMixins.js'
 const myDebounce = fn => debounce(fn, 500, false)
 
 export default {
     components: {
         modalLayer,
-        uniGrader
+        uniGrader,
+		cmRossPopup
     },
+	mixins: [cmSrsMixins],
     data() {
         return {
             CustomBar: this.CustomBar, // 顶部导航栏高度
@@ -698,7 +704,9 @@ export default {
                 switch (this.searchKeyType) {
                     case 1:
                         this.listData = []
-                        this.brandParam.keyword = this.listQuery.keyword
+                        this.brandParam.keyword = this.handleProsKey = this.listQuery.keyword
+						uni.setStorageSync('pageLabel',this.listQuery.keyword)
+						this.checkedIsRossSet() //判断是否弹窗ross广告
                         this.setSearchHistoryAdd()
                         this.getCommoditySearchQUeryBrand()
                         this.getListFromServer()

+ 2 - 2
pages/second/form/form-presale.vue

@@ -161,7 +161,7 @@
 							placeholder-class="placeholder">
 				</view> 
 			 </view>
-			 <view class="row">
+<!-- 			 <view class="row">
 				 <view class="label">商品类型:</view>
 				 <view class="select spacing">
 				 	<picker
@@ -181,7 +181,7 @@
 				 	</picker>
 				 </view>
 				 <text class="iconfont icon-xiayibu"></text>
-			 </view>
+			 </view> -->
 			<view class="row" >
 				 <view class="label"><text class="red">*</text>联系地址:</view>
 				 <view class="spacing"  @click="showMulLinkageThreePicker">

+ 2 - 2
pages/second/form/form-seller.vue

@@ -309,7 +309,7 @@
 							placeholder-class="placeholder">
 				</view> 
 			 </view>
-			 <view class="row">
+<!-- 			 <view class="row">
 				 <view class="label">商品类型:</view>
 				 <view class="select spacing">
 				 	<picker
@@ -329,7 +329,7 @@
 				 	</picker>
 				 </view>
 				 <text class="iconfont icon-xiayibu"></text>
-			 </view>
+			 </view> -->
 			<view class="row" >
 				 <view class="label"><text class="red">*</text>联系地址:</view>
 				 <view class="spacing"  @click="showMulLinkageThreePicker">

+ 201 - 180
pages/second/form/introduce.vue

@@ -1,314 +1,335 @@
 <template name="fleaMarket">
 	<view class="fleaMarket">
-	      <view class="second-hand-wrapper">
-	            <view class="top_title">
-	                <view ><image src="https://static.caimei365.com/app/img/icon/icon-logo2.png" mode=""></image></view>
-	                <view class="right-title">
-	                    <text class="right-one">二手市场</text>
-	                    <text class="right-two">SECOND-HANDMARKET</text>
-	                </view>
-	            </view>
-	            <view class="top_text">
-	                质量好一点,效率高一点
-	            </view>
-	            <view class="mian_text">
-	                <view class="main-title">采美二手市场介绍<view class="yellow_icon"></view></view>
-	                <span>
-	                    现实生活中,二手商品越来越经济实惠,二手商品也在多个经济生活领域出现。
-	                    面对潜力巨大的二手市场,采美365网于2019年开办美容行业二手交易版块,搭建二手交易平台,
-	                    将拥有闲置商品卖家与求购方(买家)信息集中起来,让交易双方的买卖信息传播得更广泛,交易更有保障。
-	                </span>
-	            </view>
-	            <view class="mian_content top">
-	                <text class="big-title">二手平台运营特色</text><view class="yellow_icon"></view>
-	                <view class="font_content">
-	                    <view class="content_list">
-	                        <view class="content-title">1.自运营</view>
-	                        <text class="content-text">用户自主上传二手商品信息,自主销售,平台提供商品展示位以及商品信息介绍页面,类似“闲鱼”。</text>
-	                    </view>
-	                    <view class="content_list">
-	                        <view class="content-title"> 2.代运营</view>
-	                        <text class="content-text">由平台协助销售二手商品,为用户提供贴心且必要的推广辅助,促成交易。</text>
-	                    </view>
-	                    <view class="content_list">
-	                        <view class="content-title">3.第三方服务</view>
-	                        <text class="content-text">平台提供第三方服务,如申请第三方评测、延保、维修等,一方面更客观全面展示仪器细节,另一方面,便于仪器机能维护,方便维修等。</text>
-	                    </view>
-	                    <view class="content_list">
-	                        <view class="content-title">4.套餐服务</view>
-	                        <text class="content-text">多项组合套餐式服务,满足卖家个性化推广需求。</text>
-	                    </view>
-	                    <view class="tishiyu">转让方/出售方(以下统称为“卖家”)需上传个人真实信息,平台留存备案后,卖家通过平台专属页面上传需要出售的商品信息,(按后台系统要求填写)。</view>
-	            </view>
-	           </view>
-	
-	            <view class="mian_content">
-	                <text class="big-title">合作模式</text><view class="yellow_icon y m" ></view>
-	            <view class="font_content">
-	                <view class="twobuy">成为自由卖家:二手出售方</view>
-	                  <view class="content_list">
-	                    <view class="content-title">1.自主发布</view>
-	                    <text class="content-text">平台已拥有独立上传信息页面,卖家可进入页面或者通过链接自主上传商品信息,获得在平台二手版块展示机会。平台收取展示位费用,详见第2条</text>
-	                  </view>
-	                  <view class="content_list">
-	                    <view class="content_list">2.自主发布</view>
-	                    <text class="content-text"> 卖家每上传一款商品,占据一个展示位,<text class="bluefont">有效期为<text style="font-size: 48px">3</text>个月</text>
-	                           平台提供与该商品匹配的详情信息以及文章信息,降低买家决策成本,以促进销售。特殊政策除外(如特定免费时段)。</text>
-	                  </view>
-	                   <view class="content_list">
-	                    <view class="content-title">3.平台推广服务(代运营)</view>
-	                    <text class="content-text"> 卖家如需采美平台提供个性化推广服务,以帮助达成交易 ,平台收取一定服务费或佣金。</text>
-	                  </view>
-	                  <view class="content_list">
-	                    <view class="content-title">4.第三方检测、维修、延保服务</view>
-	                    <text class="content-text"> 平台收取服务佣金。 </text>
-	                  </view>
-	                  <view class="content_list">
-	                      <view class="content-title">5.套餐服务</view>
-	                      <text class="content-text">多项组合服务。</text>
-	                  </view>
-	            </view>
-	            </view >
-	
-	            <view class="mian_content">
-	                <text class="big-title">交易流程</text><view class="yellow_icon y m" ></view>
-	                <view class="font_content">
-	                 <view class="content_list">
-	                    <view class="content-text">随着越来越多机构青睐性价比高的二手设备,采美二手市场也越来越火热,为了保障买卖双方利益和资金交易安全,
-	                    采美现将二手仪器交易的流程更加规范化,以促进二手市场的健康发展。</view>
-	                 </view>
-	                    <view class="threebuy">此流程适用于10万以下的设备,10万以上二手设备交易请联系高先生。</view>
-	                    <view class="jioayi">具体的流程如下:</view>
-						<image src="https://static.caimei365.com/app/img/icon/icon-secondimg@2x.png" mode="" class="jiaoyi_img"></image>
-	                </view>
-	            </view>
-	            <view class="second-hand-btn" >
-	                <view class="button" @click.stop="gotoform">去发布</view>
-	                <view class="button" @click.stop="gotolist">逛二手市场</view>
-	                <view class="button" @click="gotorepair">去维修</view>
-	                <view class="button" @click="this.$api.switchTabTo('/pages/tabBar/home/index')">去首页</view>
-	            <view class="foot_font">
-	                <view style="color: #ADADAD"> 业务咨询/合作请联系:<label style="color: #666666;margin-right: 10rpx"> 0755-22907771  </label></view>
+		<view class="second-hand-wrapper">
+			<view class="top_title">
+				<view><image src="https://static.caimei365.com/app/img/icon/icon-logo2.png" mode=""></image></view>
+				<view class="right-title">
+					<text class="right-one">二手市场</text> <text class="right-two">SECOND-HANDMARKET</text>
+				</view>
+			</view>
+			<view class="top_text">一手信息 直接交易</view>
+			<view class="top_text bot">效率更高 成本更低 交易更安全</view>
+			<view class="mian_text">
+				<view class="main-title">采美二手市场介绍<view class="yellow_icon"></view></view>
+				<text>
+					现实生活中,二手商品越来越经济实惠,二手商品也在多个经济生活领域出现。面对潜力巨大的二手市场,采美365网于2019年开办美容行业二手交易版块,搭建二手交易平台,
+					将拥有闲置商品卖家与求购方(买家)信息集中起来,让买卖双方直接交易,一手信息效率更高,交易成本更低,交易更有保障。
+				</text>
+			</view>
+			<view class="mian_content top">
+				<text class="big-title">二手平台运营特色</text><view class="yellow_icon"></view>
+				<view class="font_content">
+					<view class="content_list">
+						<view class="content-title">1.自运营</view>
+						<text class="content-text"
+							>用户自主上传二手商品信息,自主销售,平台提供商品展示位以及商品信息介绍页面,类似“闲鱼”。</text
+						>
+					</view>
+					<view class="content_list">
+						<view class="content-title"> 2.代运营</view>
+						<text class="content-text"
+							>由平台协助销售二手商品,为用户提供贴心且必要的推广辅助,促成交易。</text
+						>
+					</view>
+					<view class="content_list">
+						<view class="content-title">3.第三方服务</view>
+						<text class="content-text"
+							>平台提供第三方服务,如申请第三方评测、延保、维修等,一方面更客观全面展示仪器细节,另一方面,便于仪器机能维护,方便维修等。</text
+						>
+					</view>
+					<view class="content_list">
+						<view class="content-title">4.套餐服务</view>
+						<text class="content-text">多项组合套餐式服务,满足卖家个性化推广需求。</text>
+					</view>
+					<view class="tishiyu"
+						>转让方/出售方(以下统称为“卖家”)需上传个人真实信息,平台留存备案后,卖家通过平台专属页面上传需要出售的商品信息,(按后台系统要求填写)。</view
+					>
+				</view>
+			</view>
+
+			<view class="mian_content">
+				<text class="big-title">合作模式</text><view class="yellow_icon y m"></view>
+				<view class="font_content">
+					<view class="twobuy">成为自由卖家:二手出售方</view>
+					<view class="content_list">
+						<view class="content-title">1.自主发布</view>
+						<text class="content-text"
+							>平台已拥有独立上传信息页面,卖家可进入页面或者通过链接自主上传商品信息,获得在平台二手版块展示机会。平台收取展示位费用,详见第2条</text
+						>
+					</view>
+					<view class="content_list">
+						<view class="content_list">2.自主发布</view>
+						<text class="content-text">
+							卖家每上传一款商品,占据一个展示位,<text class="bluefont"
+								>有效期为<text style="font-size: 48px">3</text>个月</text
+							>
+							平台提供与该商品匹配的详情信息以及文章信息,降低买家决策成本,以促进销售。特殊政策除外(如特定免费时段)。</text
+						>
+					</view>
+					<view class="content_list">
+						<view class="content-title">3.平台推广服务(代运营)</view>
+						<text class="content-text">
+							卖家如需采美平台提供个性化推广服务,以帮助达成交易 ,平台收取一定服务费。</text
+						>
+					</view>
+					<view class="content_list">
+						<view class="content-title">4.第三方检测、维修、延保服务</view>
+						<text class="content-text"> 平台收取服务费。 </text>
+					</view>
+					<view class="content_list">
+						<view class="content-title">5.套餐服务</view> <text class="content-text">多项组合服务。</text>
+					</view>
+				</view>
+			</view>
+
+			<view class="mian_content">
+				<text class="big-title">交易流程</text><view class="yellow_icon y m"></view>
+				<view class="font_content">
+					<view class="content_list">
+						<view class="content-text"
+							>随着越来越多机构青睐性价比高的二手设备,采美二手市场也越来越火热,为了保障买卖双方利益和资金交易安全,
+							采美现将二手仪器交易的流程更加规范化,以促进二手市场的健康发展。</view
+						>
+					</view>
+					<view class="threebuy">此流程适用于10万以下的设备,10万以上二手设备交易请联系高先生。</view>
+					<view class="jioayi">具体的流程如下:</view>
+					<image
+						src="https://static.caimei365.com/app/img/icon/icon-secondimg@2x.png"
+						mode=""
+						class="jiaoyi_img"
+					></image>
+				</view>
+			</view>
+			<view class="second-hand-btn">
+				<view class="button" @click.stop="gotoform">去发布</view>
+				<view class="button" @click.stop="gotolist">逛二手市场</view>
+				<view class="button" @click="gotorepair">去维修</view>
+				<view class="button" @click="this.$api.switchTabTo('/pages/tabBar/home/index')">去首页</view>
+				<view class="foot_font">
+					<view style="color: #ADADAD">
+						业务咨询/合作请联系:<label style="color: #666666;margin-right: 10rpx">
+							0755-22907771
+						</label></view
+					>
 					<view style="color: #ADADAD;">手机:<label style="color: #666666">15817465281</label></view>
-	            </view>
-	        </view>
-	    </view>
+				</view>
+			</view>
+		</view>
 	</view>
 </template>
 
 <script>
-	export default{
-		name:'fleaMarket',
-		components:{
+export default {
+	name: 'fleaMarket',
+	components: {},
+	methods: {
+		gotoform: function() {
+			this.$api.navigateTo('/pages/second/form/form')
 		},
-		methods:{
-			gotoform:function(){
-				this.$api.navigateTo('/pages/second/form/form')
-			},
-			gotolist:function(){
-				this.$api.navigateTo('/pages/second/product/product-list')
-			},
-			gotorepair:function(){
-				this.$api.navigateTo('/pages/h5/article/page?linkType=7')
-			},
+		gotolist: function() {
+			this.$api.navigateTo('/pages/second/product/product-list')
 		},
-		
-		
+		gotorepair: function() {
+			this.$api.navigateTo('/pages/h5/article/page?linkType=7')
+		}
 	}
+}
 </script>
 
 <style lang="scss">
-page{
+page {
 	position: relative;
 	margin: 40rpx auto 0;
-}	
-.fleaMarket{
-	padding:20rpx;
-	background-image: linear-gradient(#FF7676, #E15616);
+}
+.fleaMarket {
+	padding: 20rpx;
+	background-image: linear-gradient(#ff7676, #e15616);
 }
 .second-hand-wrapper {
-	background-image: url("https://static.caimei365.com/app/img/bg/bg22.png");
+	background-image: url('https://static.caimei365.com/app/img/bg/bg22.png');
 	background-position: 50% 9%;
 	background-repeat: no-repeat;
 	background-size: 100%;
-	image{
+	image {
 		width: 100%;
 		display: block;
 		margin: 20rpx auto 0;
 		height: 800rpx;
 	}
-	.big-title{
-		color: #FFFFFF;
+	.big-title {
+		color: #ffffff;
 		letter-spacing: 4rpx;
 	}
 }
 .second-hand-btn {
-	.button{
+	.button {
 		width: 280rpx;
 		height: 90rpx;
-		background: linear-gradient(225deg,rgba(255,107,107,1) 0%,rgba(247,76,0,1) 100%);
+		background: linear-gradient(225deg, rgba(255, 107, 107, 1) 0%, rgba(247, 76, 0, 1) 100%);
 		border-radius: 30rpx;
 		color: #fff;
 		border: none;
 		font-size: 27rpx;
 		outline: none;
-		margin-bottom:20rpx;
+		margin-bottom: 20rpx;
 		margin-right: 20rpx;
 		line-height: 90rpx;
-		display: inline-block
+		display: inline-block;
 	}
-	
 }
 .second-hand-btn {
 	position: relative;
-	background: #FFFFFF;
+	background: #ffffff;
 	border-radius: 30rpx;
 	margin-top: 30rpx;
-	padding:40rpx 22.5rpx 37.5rpx 30rpx;
+	padding: 40rpx 22.5rpx 37.5rpx 30rpx;
 	margin-bottom: 15rpx;
 	border-bottom: 9rpx solid #f1ac90;
 	border-right: 9rpx solid #f1ac90;
 	text-align: center;
 }
-.top_title{
+.top_title {
 	padding: 40rpx 0 40rpx 0;
 	text-align: center;
-	.right-one{
-			letter-spacing: 12rpx;
-			font-size: 40rpx;
-			font-weight: bold;
-			color: #FFFFFF;
-			letter-spacing: 4rpx;
+	.right-one {
+		letter-spacing: 12rpx;
+		font-size: 40rpx;
+		font-weight: bold;
+		color: #ffffff;
+		letter-spacing: 4rpx;
 	}
-	.right-two{
-		color: #FFFFFF;
+	.right-two {
+		color: #ffffff;
 		font-size: 20rpx;
 		display: block;
 	}
-	image{
+	image {
 		width: 100%;
 		height: 100%;
 	}
 }
-.top_text{
-	font-size: 60rpx;
-	color: #FFFFFF;
-	font-style: oblique;
+.top_text {
+	font-size: 38rpx;
+	color: #ffffff;
+	margin-top: 40rpx;
+	text-align: left;
 	font-weight: bold;
-	margin-top:40rpx;
-	text-align: center;
+	&.bot {
+		font-size: 48rpx;
+		margin-top: 0rpx;
+	}
 }
-.mian_text{
+.mian_text {
 	margin-top: 75rpx;
-	color: #FFFFFF;
+	color: #ffffff;
 	font-size: 22rpx;
 	padding: 0 30rpx 0 30rpx;
 	line-height: 40rpx;
 	letter-spacing: 4rpx;
-	.main-title{
-		font-size:36rpx;
+	.main-title {
+		font-size: 36rpx;
 		font-weight: bold;
 		padding-bottom: 37.5rpx;
 	}
 }
-.mian_content{
+.mian_content {
 	margin-top: 80rpx;
-	.big-title{
+	.big-title {
 		font-size: 36rpx;
 		font-weight: bold;
 	}
-	&.top{
-		margin-top: 500rpx;
+	&.top {
+		margin-top: 200rpx;
 	}
 }
-.font_content{
-	background: #FFFFFF;
-	border-radius:37.5rpx;
+.font_content {
+	background: #ffffff;
+	border-radius: 37.5rpx;
 	margin-top: 30rpx;
-	padding:18.5rpx;
+	padding: 18.5rpx;
 	font-weight: 400;
 	line-height: 45rpx;
-	color: rgba(109,114,120,1);
+	color: rgba(109, 114, 120, 1);
 	opacity: 1;
 	position: relative;
-	border-bottom:9.75rpx solid #f1ac90;
+	border-bottom: 9.75rpx solid #f1ac90;
 	border-right: 9.75rpx solid #f1ac90;
 }
-.content_list{
+.content_list {
 	margin-bottom: 37.5rpx;
-	.content-title{
-		font-size:30rpx;
-		font-family:Source Han Sans CN;
+	.content-title {
+		font-size: 30rpx;
+		font-family: Source Han Sans CN;
 	}
-	.content-text{
+	.content-text {
 		font-size: 22rpx;
 	}
 }
-.tishiyu{
-	background: #FFF8F8;
-	font-size:24rpx;
+.tishiyu {
+	background: #fff8f8;
+	font-size: 24rpx;
 	font-family: Source Han Sans CN;
 	font-weight: 400;
 	line-height: 40rpx;
-	color: #FF7354;
+	color: #ff7354;
 	opacity: 1;
 	padding: 18rpx;
-	border-radius: 20rpx
+	border-radius: 20rpx;
 }
-.twobuy{
-	background: #EF5C3C;
+.twobuy {
+	background: #ef5c3c;
 	border-radius: 15rpx;
 	font-size: 26rpx;
 	font-family: AlibabaPuHuiTiB;
 	opacity: 1;
 	padding: 6rpx;
-	color: #FFFFFF;
+	color: #ffffff;
 	margin-bottom: 19.5rpx;
 	text-align: center;
 	width: 360rpx;
 }
-.threebuy{
-	background: #EF5C3C;
+.threebuy {
+	background: #ef5c3c;
 	border-radius: 9.75rpx;
 	font-size: 27.7rpx;
 	color: #fff;
 	padding: 6rpx;
 	margin-bottom: 37.5rpx;
 }
-.bluefont{
+.bluefont {
 	font-size: 24rpx !important;
-	color: #0091FF;
+	color: #0091ff;
 }
-.foot_font{
+.foot_font {
 	text-align: center;
 	font-size: 34rpx;
 	line-height: 52rpx;
 }
-.yellow_icon{
+.yellow_icon {
 	width: 315rpx;
 	height: 22.5rpx;
-	background: rgba(250,185,0,1);
+	background: rgba(250, 185, 0, 1);
 	opacity: 1;
 	margin-top: -22.5rpx;
 }
-.yellow_icon.m{
+.yellow_icon.m {
 	width: 160rpx;
 }
-.top_title view{
+.top_title view {
 	display: inline-block;
 }
-.jiaoyi{
-	font-size:24rpx;
+.jiaoyi {
+	font-size: 24rpx;
 }
-.jiaoyi_pimg{
+.jiaoyi_pimg {
 	display: none !important;
 }
-.top_title view:nth-child(1){
+.top_title view:nth-child(1) {
 	// margin-right: 20rpx;
 	width: 104rpx;
 	height: 92rpx;
 }
-.right-title{
+.right-title {
 	width: 250rpx;
 }
 </style>

+ 10 - 3
pages/supplier/user/my-shop.vue

@@ -405,6 +405,8 @@
 				</view>
 			</view>
 		</template>
+		<!-- ross弹窗 -->
+		<cmRossPopup v-if="showRossHtml" :popupShow="showRossHtml"></cmRossPopup>
 		<!-- 侧边 -->
 		<scroll-top :isScrollTop="isScrollTop" :bottom="200"></scroll-top>
 	</view>
@@ -415,15 +417,18 @@ import { mapState, mapMutations } from 'vuex'
 import custom from './components/custom.vue' //自定义导航
 import banner from '../components/banner.vue'
 import uniGrader from '@/components/uni-grade/uni-grade.vue'
+import cmRossPopup from '@/components/cm-module/cm-ross/cm-ross-popup'
 import authorize from '@/common/config/authorize.js'
 import wxLogin from '@/common/config/wxLogin.js'
-
+import cmSrsMixins from '@/mixins/cmSrsMixins.js'
 export default {
 	components: {
 		custom,
 		banner,
-		uniGrader
+		uniGrader,
+		cmRossPopup
 	},
+	mixins: [cmSrsMixins],
 	data() {
 		return {
 			CustomBar:this.CustomBar,
@@ -469,7 +474,8 @@ export default {
 		if (option.type == 'share') {
 			wxLogin.wxLoginAuthorize()
 		}
-		this.listQuery.id = this.supplierId = option.shopId
+		this.listQuery.id = this.supplierId = this.handleShopId = option.shopId
+		uni.setStorageSync('pageLabel','供应商主页')
 		this.initGetStotage()
 	},
 	filters: {
@@ -508,6 +514,7 @@ export default {
 			this.GetSupplierHomeDeatils()
 			this.GetSupplierHomeProduct()
 			this.GetSupplierHomeProductList()
+			this.checkedIsRossSet()
 			this.skeletonShow = false
 		},
 		GetSupplierHomeBanner() {

+ 5 - 3
pages/tabBar/home/index.vue

@@ -125,7 +125,7 @@ export default {
 		...mapState(['hasLogin', 'userInfo', 'identity', 'isActivity', 'isWxAuthorize'])
 	},
 	methods: {
-		...mapMutations(['login', 'logout','updateNoticeNum']),
+		...mapMutations(['login', 'logout','updateNoticeNum','updateRossShow']),
 		async GetWxAuthorize() {
 			const wechatCode = await authorize.getCode('weixin') // 根据微信的code获取用户登录状态:1已登录过 -1未登录过
 			const getUserInfo = await authorize.getUserInfo('weixin')
@@ -149,6 +149,7 @@ export default {
 					} else if (response.data.userIdentity === 3) {
 						this.$api.redirectTo('/pages/supplier/index/index')
 					}
+					this.updateRossShow()
 					this.GetInitBeansInfo()
 					this.getHomeInformation()
 				})
@@ -157,6 +158,7 @@ export default {
 					this.logout()
 					uni.setStorageSync('unionId', error.data.unionId)
 					this.$store.commit('updateStatus', error.data)
+					this.updateRossShow()
 					this.getHomeInformation()
 				})
 		},
@@ -178,7 +180,7 @@ export default {
 					let data = response.data
 					this.pageList = data.homePageFloor
 					this.hotListPageFloor = data.pageFloorList
-					this.supplierObj = data.supplierImage				
+					this.supplierObj = data.supplierImage
 					setTimeout(() => {
 						this.isRequest = true
 					}, 500)
@@ -292,10 +294,10 @@ export default {
 		this.modallayer = false
 		this.autoplay = true
 		this.GetWxAuthorize()
-		uni.setStorageSync('pageLabel','首页')
 	},
 	onHide() {
 		this.autoplay = false
+		uni.setStorageSync('pageLabel','首页')
 	}
 }
 </script>

+ 3 - 3
pages/user/address/addressManage.vue

@@ -169,15 +169,15 @@
 				}
 			},
 			onShouHuoRen(e){
-			   this.addressData.receiver = e.detail.value;
+			   this.addressData.receiver = e.detail.value
 			   this.initInput();
 			},
 			onMobile(e){
-			   this.addressData.mobile = e.detail.value;
+			   this.addressData.mobile = e.detail.value
 			   this.initInput();
 			},
 			onTextareaInput(e){
-			   this.addressData.address = e.detail.value;
+			   this.addressData.address = e.detail.value
 			   this.initInput();
 			},
 			initInput(){

+ 62 - 0
services/user.service.js

@@ -60,6 +60,34 @@ export default class UserService {
 
         })
     }
+	
+    /**
+	 * 短信验证登录
+	 * @param mobileOrEmail 邮箱或手机
+	 * @param password	密码
+	 * @param unionId	微信unionId
+	 */
+    userCodeLogin(data = {}) {
+        return this.AjaxService.post({
+            url: '/user/login/codeLogin',
+            data,
+            isLoading: true,
+            isStatus: true,
+
+        })
+    }
+    /**
+	 * 获取登录验证码
+	 * @param mobile 手机号
+	 */
+    userLoginCode(data = {}) {
+        return this.AjaxService.get({
+            url: '/user/login/code',
+            data,
+            isLoading: true
+        })
+    }
+	
     /* 查询机构资料*/
     OrganizationUpdateModifyInfo(data = {}) {
         return this.AjaxService.get({
@@ -838,5 +866,39 @@ export default class UserService {
 	        isLoading: false,
 	    }) 
     }
+    /**
+	 *@查看用户是否有过弹框游客当天是否有过弹框
+	 */
+    userInformationIsClick(data = {}) {
+	    return this.AjaxService.get({
+	        url: '/user/information/isClick',
+	        data,
+	        isLoading: false,
+	    }) 
+    }
+    /**
+	 *@插入填写咨询人基本信息
+	 *@param consultName:页面类型
+	 *@param consultMobile:页面标签
+	 *@param isClick:1
+	 
+	 */
+    userInformationInsertRoos(data = {}) {
+	    return this.AjaxService.post({
+	        url: '/user/information/insertRoos',
+	        data,
+	        isLoading: false,
+	    }) 
+    }
+    /**
+	 *@查看访问者是否浏览过roos相关页面
+	 */
+    userInformationVisitRoos(data = {}) {
+	    return this.AjaxService.get({
+	        url: '/user/information/visitRoos',
+	        data,
+	        isLoading: false,
+	    }) 
+    }
 	 
 }

+ 13 - 3
store/index.js

@@ -5,7 +5,7 @@ import authorize from '../common/config/authorize.js'
 import * as caimeiApi from '@/common/config/caimeiApi.js'
 import ajaxService from '@/services/ajax.service.js'
 import UserService from '@/services/user.service.js'
-
+const getUserService = new UserService(ajaxService)
 Vue.use(Vuex)
 const store = new Vuex.Store({
     state: {
@@ -22,6 +22,7 @@ const store = new Vuex.Store({
         isLoginType: 0,
         isLoginProductId: 0,
         isManage: false,// 是否是管理员或者小组长
+        isRossShow:false // 是否显示ross广告图
     },
     mutations: {
         login(state, provider) { //用户身份 1、协销 2、资质机构 3、供应商 4.个人机构
@@ -73,14 +74,12 @@ const store = new Vuex.Store({
                     state.identity = 0
                 }
             }
-            console.log('用户类型', state.identity)
             uni.setStorage({ //缓存用户登陆状态
                 key: 'userInfo',
                 data: provider
             })
         },
         async updateNoticeNum(state) { // 更新通知消息数量
-            const getUserService = new UserService(ajaxService)
             const userInfo = await caimeiApi.getStorage()
             const commonId = userInfo.clubId ? userInfo.clubId : 0
             getUserService.getAuthClubCount({ commonId: commonId })
@@ -108,6 +107,17 @@ const store = new Vuex.Store({
                     })
                 })
         },
+        async updateRossShow(state){
+            const USER_EVEN = await caimeiApi.getStorage()
+            if(USER_EVEN.userIdentity === 1) { return }
+            getUserService.userInformationVisitRoos({ userId: USER_EVEN.userId ? USER_EVEN.userId : 0 })
+			    .then(response => {
+                    state.isRossShow = response.data
+			    })
+			    .catch(error => {
+                    console.log(error)
+			    })
+        },
         updateAllNum(state, num) {
             if (num >= 100) {
                 uni.setTabBarBadge({

+ 44 - 23
utils/residence.js

@@ -15,14 +15,14 @@ const isIncludeType = (url) => {
 }
 
 // 参数
-const userSync = uni.getStorageSync('userInfo')
 const defaultParams = {
     pagePath: '', //页面路径
     accessDuration: 0, //浏览时长初始值为 0
     pageType: '', //页面类型
     pageLabel: '', //页面标签
-    userId: userSync.userId ? userSync.userId : 0, //用户Id
-    productId: 0 //商品Id
+    userId: 0, //用户Id
+    productId: 0, //商品Id
+    behaviorType: 1 // 统计类型
 }
 
 // 页面进入
@@ -43,35 +43,19 @@ const routting = async (current, prev) => {
 
 /* 用户停留时间 */
 async function userBehavior(current, prev) {
-    const sysParams = Object.assign({}, defaultParams)
     try {
         if (process.env.NODE_ENV !== 'production') { return }
         if (!prev) return
         if (!isInclude(prev.path)) return
-        //协销不记录
-        if (userSync.userIdentity === 1) return
         console.log('\n')
         console.log('------------------------')
-        // 停留时长参数设置
-        sysParams.accessDuration = prev.meta.leaveTime - prev.meta.enterTime
         console.log('当前页面:', current.path)
         console.log('离开页面:', prev.path)
         // 接口参数设置
-        const pageData = isIncludeType(prev.path)
-        sysParams.pagePath = prev.fullPath
-        sysParams.pageType = pageData ? pageData.pageType : ''
-        if (prev.path === '/pages/goods/product' || prev.path === '/pages/second/product/product-details') {
-            sysParams.productId = prev.query.id ? prev.query.id : 0
-            sysParams.pageLabel = uni.getStorageSync('productLabel')
-        }else{
-            sysParams.pageLabel = uni.getStorageSync('pageLabel')
-        }
-        // 调用接口
-        console.log('记录路径:', prev.path, '停留时间:', sysParams.accessDuration, 'ms', '标签:', sysParams.pageLabel)
-        await UserApi.userRecordStatistics(sysParams)
-        uni.removeStorageSync('pageLabel')
-        // 删除标记标签名
-        console.log('---用户行为轨迹记录成功---')
+        setingSysParams(prev)
+        // 清除设置缓存
+        clearsSysParams(prev)
+        console.log('\n')
         console.log('------------------------')
         console.log('\n')
     } catch (e) {
@@ -80,4 +64,41 @@ async function userBehavior(current, prev) {
     }
 }
 
+// 接口参数设置
+const setingSysParams = async (prev) => {
+    const sysParams = Object.assign({}, defaultParams)
+    const userSync = uni.getStorageSync('userInfo')
+    const pageData = isIncludeType(prev.path)
+    // 参数设置
+    sysParams.userId = userSync.userId ? userSync.userId : 0
+    sysParams.accessDuration = prev.meta.leaveTime - prev.meta.enterTime
+    sysParams.pagePath = prev.fullPath
+    sysParams.pageType = pageData ? pageData.pageType : ''
+    sysParams.behaviorType = uni.getStorageSync('behaviorType') ? uni.getStorageSync('behaviorType') : 1
+    // 根据path获取不同的参数
+    if (prev.path === '/pages/goods/product' || prev.path === '/pages/second/product/product-details') {
+	    sysParams.productId = prev.query.id ? prev.query.id : 0
+	    sysParams.pageLabel = uni.getStorageSync('productLabel')
+    } else {
+	    sysParams.pageLabel = uni.getStorageSync('pageLabel')
+    }
+    console.log('记录路径:', prev.path, '停留时间:', sysParams.accessDuration, 'ms', '标签:', sysParams.pageLabel)
+    // 协销不记录
+    if (userSync.userIdentity === 1) return
+    // 统计接口调用
+    await UserApi.userRecordStatistics(sysParams)
+    console.log('---用户行为轨迹记录成功---')
+}
+
+// 清除设置缓存
+const clearsSysParams = async (prev) => {
+    if (prev.path === '/pages/goods/product' || prev.path === '/pages/second/product/product-details') {
+	    uni.removeStorageSync('productLabel')
+    } else {
+	    uni.removeStorageSync('pageLabel')
+    }
+    uni.removeStorageSync('behaviorType')
+}
+
+
 export default { enter, leave, routting }

+ 1 - 0
utils/router.config.js

@@ -14,5 +14,6 @@ export const includeList = [
     { url:'/pages/goods/good-floor-temp', pageType:13 },
     { url:'/pages/h5/activity/activity', pageType:13 },
     { url:'/pages/h5/activity/activity-topic', pageType:13 },
+    { url:'/pages/supplier/user/my-shop', pageType:14 }
 ]