Selaa lähdekoodia

Merge remote-tracking branch 'remotes/origin/developer' into developerC

# Conflicts:
#	pages/goods/product.vue
#	services/config.env.js
#	supplier/pages/user/my-shop.vue
zhengjinyi 4 vuotta sitten
vanhempi
commit
c0ca7dd140
56 muutettua tiedostoa jossa 6102 lisäystä ja 448 poistoa
  1. 3 3
      .gitignore
  2. 22 13
      App.vue
  3. 82 75
      common/config/caimeiApi.js
  4. 0 1
      common/config/wxLogin.js
  5. 4 4
      components/cm-module/activity/activity_01.vue
  6. 218 0
      components/cm-module/activity/pageFloor.vue
  7. 112 0
      components/cm-module/articleTemplate/templateA.vue
  8. 111 0
      components/cm-module/articleTemplate/templateB.vue
  9. 113 0
      components/cm-module/articleTemplate/templateC.vue
  10. 119 0
      components/cm-module/articleTemplate/templateD.vue
  11. 3 1
      components/cm-module/homeIndex/navbars.vue
  12. 102 96
      components/cm-module/homeIndex/pageFloor.vue
  13. 333 0
      components/cm-module/pageFloorTemplate/templateG.vue
  14. 489 0
      components/cm-module/pageFloorTemplate/templateI.vue
  15. 505 0
      components/cm-module/pageFloorTemplate/templateJ.vue
  16. 558 0
      components/cm-module/pageFloorTemplate/templateK.vue
  17. 490 0
      components/cm-module/pageTemplate/templateI.vue
  18. 506 0
      components/cm-module/pageTemplate/templateJ.vue
  19. 559 0
      components/cm-module/pageTemplate/templateK.vue
  20. 164 0
      components/cm-module/pcitureTemplate/templateA.vue
  21. 166 0
      components/cm-module/pcitureTemplate/templateB.vue
  22. 68 0
      components/cm-module/pcitureTemplate/templateC.vue
  23. 84 0
      components/cm-module/pcitureTemplate/templateD.vue
  24. 162 0
      components/cm-module/pcitureTemplate/templateE.vue
  25. 83 0
      components/cm-module/pcitureTemplate/templateF.vue
  26. 35 0
      h5/pages/activity/activity-detail.vue
  27. 230 0
      h5/pages/activity/activity-floorMore.vue
  28. 181 0
      h5/pages/activity/activity-topic.vue
  29. 15 6
      h5/pages/activity/activity_mid.vue
  30. 14 13
      main.js
  31. 21 0
      pages.json
  32. 16 7
      pages/goods/cart.vue
  33. 13 5
      pages/goods/good-floor.vue
  34. 14 6
      pages/goods/goods-classify.vue
  35. 14 6
      pages/goods/instrument-details.vue
  36. 79 37
      pages/goods/product.vue
  37. 32 13
      pages/login/bindOperator.vue
  38. 15 6
      pages/login/binding.vue
  39. 30 12
      pages/login/login.vue
  40. 9 3
      pages/login/logincode.vue
  41. 15 6
      pages/login/register-supplier.vue
  42. 15 6
      pages/login/register.vue
  43. 15 6
      pages/tabBar/cart/cart.vue
  44. 37 13
      pages/tabBar/home/index.vue
  45. 42 18
      pages/tabBar/user/user.vue
  46. 14 7
      pages/user/coupon/coupon.vue
  47. 16 6
      search/pages/search/search-instrument.vue
  48. 16 6
      search/pages/search/search-supplier.vue
  49. 16 10
      search/pages/search/search.vue
  50. 4 4
      second/pages/form/form.vue
  51. 34 14
      second/pages/product/product-details.vue
  52. 13 5
      second/pages/product/product-list.vue
  53. 30 12
      seller/pages/login/login.vue
  54. 4 1
      services/common.service.js
  55. 36 15
      supplier/pages/login/share-info.vue
  56. 21 12
      supplier/pages/user/my-shop.vue

+ 3 - 3
.gitignore

@@ -1,6 +1,6 @@
 unpackage/
 .gitignore
-common/config/config.js
-services/ajax.env.js
 .idea/
-.hbuilderx/launch.json
+.hbuilderx/launch.json
+/services/config.env.js
+/services/ajax.env.js

+ 22 - 13
App.vue

@@ -79,13 +79,13 @@
 				}
 			})
 			this.refresh()
-			// if(uni.getStorageSync('isActivityStatus')){
-			// 	const  lockTime = uni.getStorageSync('lockTime')
-			// 	const  eTime = this.diffTime(lockTime)
-			// 	this.$store.dispatch('setActivityFn',eTime)
-			// }else{
-			// 	this.$store.dispatch('setActivityFn',true)
-			// }
+			if(uni.getStorageSync('isActivityStatus')){
+				const  lockTime = uni.getStorageSync('lockTime')
+				const  eTime = this.diffTime(lockTime)
+				this.$store.dispatch('setActivityFn',eTime)
+			}else{
+				this.$store.dispatch('setActivityFn',true)
+			}
 		},
 		methods:{
 			...mapMutations(['login','logout','isWxAuthorize']),
@@ -112,12 +112,21 @@
 			refresh(){
 				let TIME = (20*60)*1000;
 				setInterval(()=>{
-					if(uni.getStorageSync('_WX_State')){
-						this.getWxAuthorize()
-					}else{
-						console.log(new Date +'用户未授权微信信息')
-						this.$api.navigateTo('/pages/authorization/authorization')
-					}	
+					authorize.getSetting().then(res =>{
+						console.log('用户是否授权过',res)
+						if(res == 1){
+							this.getWxAuthorize()
+						}else{
+							console.log(new Date +'用户未授权微信信息')
+							this.$api.navigateTo('/pages/authorization/authorization')
+						}
+					})
+					// if(uni.getStorageSync('_WX_State')){
+					// 	this.getWxAuthorize()
+					// }else{
+					// 	console.log(new Date +'用户未授权微信信息')
+					// 	this.$api.navigateTo('/pages/authorization/authorization')
+					// }	
 				},TIME)
 			},
 			diffTime(t){

+ 82 - 75
common/config/caimeiApi.js

@@ -24,9 +24,9 @@ const caimeiApi = {
 			success: (response) => {
 				if(response.statusCode !== 200){
 					uni.showToast({icon: 'none',title:'服务器连接错误',duration: 2000})
-					callback(response.statusCode);
+					callback(response.statusCode)
 				}else{
-					callback(response.data);
+					callback(response.data)
 				}
 			},
 			fail: (error) => {
@@ -34,7 +34,7 @@ const caimeiApi = {
 					uni.showToast({icon: 'none',title: '网络错误,请稍后重试',duration: 2000})
 				}
 			}
-		 });
+		 })
 	},
 	/**
 	 * @封装公共get数据请求方法有加载动画
@@ -42,7 +42,7 @@ const caimeiApi = {
 	 * @自定义请求头信息
 	 */
 	lodingGet:function(url,data,callback){
-		 uni.showLoading({mask: true,title:'加载中~',});
+		 uni.showLoading({mask: true,title:'加载中~',})
 		 uni.request({
 			url: requestUrl + url,
 			data:data,
@@ -56,9 +56,9 @@ const caimeiApi = {
 			success: (response) => {
 				if(response.statusCode !== 200){
 					uni.showToast({icon: 'none',title: '服务器连接错误',duration: 2000})
-					callback(response.statusCode);
+					callback(response.statusCode)
 				}else{
-					callback(response.data);
+					callback(response.data)
 				}
 			},
 			fail: (error) => {
@@ -68,10 +68,10 @@ const caimeiApi = {
 			},
 			complete: () => {
 				setTimeout(function () {
-					uni.hideLoading();
-				}, 250);
+					uni.hideLoading()
+				}, 250)
 			}
-		 });
+		 })
 	},
 	/**
 	 * @封装公共post数据请求方法
@@ -107,13 +107,13 @@ const caimeiApi = {
 			uni.getStorage({
 				key: key,
 				success: function (res){
-					resolve(res.data);
+					resolve(res.data)
 				},
 				fail: function(res){
 					reject(false)
 				}
 			})
-		});
+		})
 	},
 	setStorage:function(key,data){// 存储本地Storage
 		return new Promise(function(resolve,reject) {
@@ -123,30 +123,30 @@ const caimeiApi = {
 				success: function (res){
 				}
 			})
-		});
+		})
 	},
 	getStorage:function(){// 获取本地userInfo
 		return new Promise(function(resolve,reject) {
 			uni.getStorage({
 				key: 'userInfo',
 				success: function (res){
-					resolve(res.data);
+					resolve(res.data)
 				},
 				fail: function(res){
 					reject(false)
 				}
 			})
-		});
+		})
 	},
 	getStorageAddressKey:function(){// 获取本地地址信息
 		return new Promise(function(resolve,reject) {
 			uni.getStorage({
 				key: 'address_key',
 				success: function (res){
-					resolve(res.data);
+					resolve(res.data)
 				}
 			})
-		});
+		})
 	},
 	loginStatus:function(){
 	// 获取用户是否登陆 1:已登陆,否则未登陆
@@ -155,20 +155,20 @@ const caimeiApi = {
 				key: 'userInfo',
 				success: function (res){
 					if(res.data.code == '1'){
-						resolve(true);
+						resolve(true)
 					} else {
-						resolve(false);
+						resolve(false)
 					}
 				}
 			})
-		});
+		})
 	},
 	navToListPage:function({type,value,id,lType} = {}){	
 	// 跳转到列表页
 		if(lType=='4'){
-			const pages = getCurrentPages();
-			const prevPage = pages[pages.length-2];
-			prevPage.refresh = true;
+			const pages = getCurrentPages()
+			const prevPage = pages[pages.length-2]
+			prevPage.refresh = true
 			prevPage.listData = {
 				type: type,
 				from: value,
@@ -186,9 +186,9 @@ const caimeiApi = {
 	navigateToGoods:function({type,value,id,lType} = {}){
 	// 跳转到列表页
 		if(lType=='4'){
-			const pages = getCurrentPages();
-			const prevPage = pages[pages.length-2];
-			prevPage.refresh = true;
+			const pages = getCurrentPages()
+			const prevPage = pages[pages.length-2]
+			prevPage.refresh = true
 			prevPage.listData = {
 				type: type,
 				from: value,
@@ -226,24 +226,27 @@ const caimeiApi = {
 				const typeMap = {
 				 	1:`/pages/goods/goods-instrument?linkId=${pros.linkParam.id}`,
 				 	2:`/pages/goods/instrument-details?id=${pros.linkParam.id}`,
+				 	3:`/h5/pages/article/page-image?image=${pros.adsImage}&title=专题直播`,
 					4:`/h5/pages/activity/activity?title=${pros.crmTitle}&link=${pros.crmLink}`,
 				 	5:`/pages/goods/product?id=${pros.linkParam.id}`,
 				 	// 7:`/supplier/pages/user/my-shop?shopId=${pros.linkParam.id}`,
-				 	8:`/h5/pages/activity/activity-list`,
-				 	9:`/second/pages/form/introduce`,
-				 	10:`/second/pages/product/product-list`,
-				 	11:`/second/pages/form/form`,
+				 	8:'/h5/pages/activity/activity-list',
+				 	9:'/second/pages/form/introduce',
+				 	10:'/second/pages/product/product-list',
+				 	11:'/second/pages/form/form',
 				 	12:`/search/pages/search/search?keyWord=${pros.linkParam.keyword}`,
 				 	13:`/h5/pages/article/path?link=${pros.link}`,
 				 	14:`/h5/pages/article/path?link=${pros.link}`,
 				 	15:`/h5/pages/article/path?link=${pros.link}`,
-				 	17:`/pages/login/register-select`,
+					// '-1':`/h5/pages/article/path?link=${pros.link}`,
+				 	17:'/pages/login/register-select',
 				 	18:`/h5/pages/article/path?link=${pros.link}`,
 				 	19:`/search/pages/search/search-supplier?keyWord=${pros.linkParam.keyword}`,
-					21:`/h5/pages/activity/meobohui`
-					
+					21:'/h5/pages/activity/meobohui',
+					24:'/pages/user/coupon/coupon',
+					23:`/h5/pages/activity/activity-topic?linkId=${pros.linkParam.id}`
 				}
-				const url = typeMap[pros.linkType];
+				const url = typeMap[pros.linkType]
 				uni.navigateTo({
 				  	url:url
 				})
@@ -255,23 +258,27 @@ const caimeiApi = {
 			const typeMap = {
 				1:`/pages/goods/goods-instrument?linkId=${linkId}`,
 				2:`/pages/goods/instrument-details?id=${linkId}`,
+				3:`/h5/pages/article/page-image?image=${pros.adsImage}&title=专题直播`,
 				4:`/h5/pages/activity/activity?id=${linkId}`,
-				5:`/pages/goods/product?id=${linkId}`,
+				5:`/pages/goods/product?id=${linkId}`, 
 				// 7:`/supplier/pages/user/my-shop?shopId=${linkId}`,
-				8:`/h5/pages/activity/activity-list`,
-				9:`/second/pages/form/introduce`,
-				10:`/second/pages/product/product-list`,
-				11:`/second/pages/form/form`,
+				8:'/h5/pages/activity/activity-list',
+				9:'/second/pages/form/introduce',
+				10:'/second/pages/product/product-list',
+				11:'/second/pages/form/form',
 				12:`/search/pages/search/search?keyWord=${keyword}`,
 				13:`/h5/pages/article/path?link=${linkHref}`,
 				14:`/h5/pages/article/path?link=${linkHref}`,
 				15:`/h5/pages/article/path?link=${linkHref}`,
-				17:`/pages/login/register-select`,
+				17:'/pages/login/register-select',
 				18:`/h5/pages/article/path?link=${linkHref}`,
 				19:`/search/pages/search/search-supplier?keyWord=${keyword}`,
-				21:`/h5/pages/activity/meobohui`
+				21:'/h5/pages/activity/meobohui',
+				// '-1':`/h5/pages/article/path?link=${pros.link}`
+				23:`/h5/pages/activity/activity-topic?linkId=${pros.linkParam.id}`,
+				24:'/pages/user/coupon/coupon'
 			}
-			const url = typeMap[linkType];
+			const url = typeMap[linkType]
 			uni.navigateTo({
 			 	url:url
 			})
@@ -296,8 +303,8 @@ const caimeiApi = {
 		})
 	},
 	isNumber:function(value){//验证是否为数字
-	    var patrn = /^(-)?\d+(\.\d+)?$/;
-	    if (patrn.exec(value) == null || value == "") {
+	    var patrn = /^(-)?\d+(\.\d+)?$/
+	    if (patrn.exec(value) == null || value == '') {
 	         return false
 	    } else {
 	         return true  
@@ -305,8 +312,8 @@ const caimeiApi = {
 	},
 	getWindowHeight:function(){
 		// 获取窗口高度
-		const {windowHeight, pixelRatio} = wx.getSystemInfoSync();
-		return windowHeight;
+		const {windowHeight, pixelRatio} = wx.getSystemInfoSync()
+		return windowHeight
 	},
 	adaptRichTextImg:function(res){
 		/**
@@ -315,34 +322,34 @@ const caimeiApi = {
 		 */ 
 		const html = res.replace(/<img[^>]*>/gi,function(match,capture){			
 			let match1 = match.replace(/<img*/gi, '<img style="width:100% !important;height:auto !important;float:left !important;"'),
-				results = match1.replace(/style=/gi, 'style="width:100%;height:auto;float:left;"');
-			return results;
+				results = match1.replace(/style=/gi, 'style="width:100%;height:auto;float:left;"')
+			return results
 		})
-		return html;	
+		return html	
 	},
 	FormatMoney:function(num){
 		// 金额千分位
 		return num.toString().replace(/\d+/, function (n) { // 先提取整数部分
 			return n.replace(/(\d)(?=(\d{3})+$)/g, function ($1) { // 对整数部分添加分隔符
-				return $1 + ",";
-			});
-		});
+				return $1 + ','
+			})
+		})
 	},
 	formatDate:function(){
 		//获取当前时间
-		let date = new Date();
-		let y = date.getFullYear();
-		let MM = date.getMonth() + 1;
-		MM = MM < 10 ? ('0' + MM) : MM;
-		let d = date.getDate();
-		d = d < 10 ? ('0' + d) : d;
-		let h = date.getHours();
-		h = h < 10 ? ('0' + h) : h;
-		let m = date.getMinutes();
-		m = m < 10 ? ('0' + m) : m;
-		let s = date.getSeconds();
-		s = s < 10 ? ('0' + s) : s;
-	    return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s;
+		let date = new Date()
+		let y = date.getFullYear()
+		let MM = date.getMonth() + 1
+		MM = MM < 10 ? ('0' + MM) : MM
+		let d = date.getDate()
+		d = d < 10 ? ('0' + d) : d
+		let h = date.getHours()
+		h = h < 10 ? ('0' + h) : h
+		let m = date.getMinutes()
+		m = m < 10 ? ('0' + m) : m
+		let s = date.getSeconds()
+		s = s < 10 ? ('0' + s) : s
+	    return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s
 	},
 	regexSets:function() {
 		let sets = {
@@ -350,19 +357,19 @@ const caimeiApi = {
 			'phoneAndTelephone': /^([1]\d{10}|([\((]?0[0-9]{2,3}[)\)]?[-]?)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?)$/,
 			'bankNum': /^([1-9]{1})(\d{18})$/,
 			'invalidChar': /^[\s\u4e00-\u9fa5a-z0-9_-]{0,}$/
-		};
-		return sets;
+		}
+		return sets
 	},
 	timestampToTime:function(timestamp) {
 		// 时间戳转日期
-	   let date = new Date(timestamp * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
-	   let Y = date.getFullYear() + '-';
-	   let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
-	   let D = (date.getDate() < 10 ? '0'+date.getDate() : date.getDate()) + ' ';
-	   let h = (date.getHours() < 10 ? '0'+date.getHours() : date.getHours()) + ':';
-	   let m = (date.getMinutes() < 10 ? '0'+date.getMinutes() : date.getMinutes()) + ':';
-	   let s = (date.getSeconds() < 10 ? '0'+date.getSeconds() : date.getSeconds());
-	   return `${Y}${M}${D}${h}${m}${s}`;
+	   let date = new Date(timestamp * 1000)//时间戳为10位需*1000,时间戳为13位的话不需乘1000
+	   let Y = date.getFullYear() + '-'
+	   let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-'
+	   let D = (date.getDate() < 10 ? '0'+date.getDate() : date.getDate()) + ' '
+	   let h = (date.getHours() < 10 ? '0'+date.getHours() : date.getHours()) + ':'
+	   let m = (date.getMinutes() < 10 ? '0'+date.getMinutes() : date.getMinutes()) + ':'
+	   let s = (date.getSeconds() < 10 ? '0'+date.getSeconds() : date.getSeconds())
+	   return `${Y}${M}${D}${h}${m}${s}`
 	}
 }
 
@@ -392,4 +399,4 @@ module.exports = {
 	timestampToTime: caimeiApi.timestampToTime,
 	BannerNavigateTo:caimeiApi.BannerNavigateTo,
 	FlooryNavigateTo:caimeiApi.FlooryNavigateTo 
-};
+}

+ 0 - 1
common/config/wxLogin.js

@@ -29,7 +29,6 @@ const wxLoginAuthorize = async function(){
 const wxLoginQuick = async function(){// 根据微信的code获取用户登录状态:1已登录过 -1未登录过跳转
 		const wechatCode = await authorize.getCode('weixin');// 根据微信的code获取用户登录状态:1已登录过 -1未登录过
 		const getUserInfo = await authorize.getUserInfo('weixin');
-		const params = 
 		newUserService.UserLoginAuthApplets({ 
 			code:wechatCode,
 			encryptedData:getUserInfo.encryptedData,

+ 4 - 4
components/cm-module/activity/activity_01.vue

@@ -1,10 +1,10 @@
 <template>
 	<view>
 		<view class="tui-alert-class tui-alert-box" :class="[show?'tui-alert-show':'tui-alert-hide']"  @touchmove.stop.prevent="discard">
-			<image src="http://static.caimei365.com/app/meibohui/meibo_coupon_01.png" mode="" @click.stop="handleClick"></image>
+			<image src="http://static.caimei365.com/app/meibohui/app/activity-pop.png" mode="" @click.stop="handleClick"></image>
 			<text class="iconfont icon-2guanbi" @click.stop="handleClickCancel"></text>
 		</view>
-	</view>
+	</view> 
 </template>
 
 <script>
@@ -72,8 +72,8 @@
 		background: rgba(0,0,0,.2);
 		z-index: 99999;
 		image{
-			width: 606rpx;
-			height: 510rpx;
+			width: 729rpx;
+			height: 560rpx;
 			margin-top: 130rpx;
 		}
 	}

+ 218 - 0
components/cm-module/activity/pageFloor.vue

@@ -0,0 +1,218 @@
+<template>
+	<view>
+		<view class="page-content clearfix" v-for="(page, index) in pageFloorList" :key="index">
+			<view class="tui-group-name" v-if="page.floorContent">
+				<view class="tui-group-title">
+					<view class="tui-group-l">{{ page.title }}</view>
+					<view
+						class="tui-group-r"
+						v-if="isSwiperTemp.indexOf(page.floorContent.templateType) === -1"
+						@click="NavToDetailPage(page)"
+					>
+						<text>更多</text> <text class="iconfont icon-xiayibu"></text>
+					</view>
+				</view>
+				<view class="tui-sub__desc">{{ page.detail }}</view>
+			</view>
+			<!-- 图文模板 -->
+			<template v-if="page.floorContent.templateType == '3'">
+				<articleA :pageData="page" :userIdentity="userIdentity"></articleA>
+			</template>
+			<template v-if="page.floorContent.templateType == '4'">
+				<articleB :pageData="page" :userIdentity="userIdentity"></articleB>
+			</template>
+			<template v-if="page.floorContent.templateType == '5'">
+				<articleC :pageData="page" :userIdentity="userIdentity"></articleC>
+			</template>
+			<template v-if="page.floorContent.templateType == '6'">
+				<articleD :pageData="page" :userIdentity="userIdentity"></articleD>
+			</template>
+			<!-- 图片模板 -->
+			<template v-if="page.floorContent.templateType == '1'">
+				<pictureA :pageData="page" :userIdentity="userIdentity"></pictureA>
+			</template>
+			<template v-if="page.floorContent.templateType == '2'">
+				<pictureB :pageData="page" :userIdentity="userIdentity"></pictureB>
+			</template>
+			<template v-if="page.floorContent.templateType == '7'">
+				<pictureC :pageData="page" :userIdentity="userIdentity"></pictureC>
+			</template>
+			<template v-if="page.floorContent.templateType == '8'">
+				<pictureD :pageData="page" :userIdentity="userIdentity"></pictureD>
+			</template>
+			<template v-if="page.floorContent.templateType == '9'">
+				<pictureE :pageData="page" :userIdentity="userIdentity"></pictureE>
+			</template>
+			<template v-if="page.floorContent.templateType == '10'">
+				<pictureF :pageData="page" :userIdentity="userIdentity"></pictureF>
+			</template>
+			<!-- 产品模板 -->
+			<template v-if="page.floorContent.templateType == '11'">
+				<productI :pageData="page" :userIdentity="userIdentity"></productI>
+			</template>
+			<template v-if="page.floorContent.templateType == '12'">
+				<productJ :pageData="page" :userIdentity="userIdentity"></productJ>
+			</template>
+			<template v-if="page.floorContent.templateType == '13'">
+				<productK :pageData="page" :userIdentity="userIdentity"></productK>
+			</template>
+			<template v-if="page.floorContent.templateType == '14'">
+				<productG :pageData="page" :userIdentity="userIdentity"></productG>
+			</template>
+			<template v-if="page.floorContent.templateType == '15'">
+				<productD :pageData="page" :userIdentity="userIdentity"></productD>
+			</template>
+			<template v-if="page.floorContent.templateType == '16'">
+				<productC :pageData="page" :userIdentity="userIdentity"></productC>
+			</template>
+			<template v-if="page.floorContent.templateType == '17'">
+				<productB :pageData="page" :userIdentity="userIdentity"></productB>
+			</template>
+			<template v-if="page.floorContent.templateType == '18'">
+				<productA :pageData="page" :userIdentity="userIdentity"></productA>
+			</template>
+			<template v-if="page.floorContent.templateType == '19'">
+				<productE :pageData="page" :userIdentity="userIdentity"></productE>
+			</template>
+			<template v-if="page.floorContent.templateType == '20'">
+				<productF :pageData="page" :userIdentity="userIdentity"></productF>
+			</template>
+			<template v-if="page.floorContent.templateType == '21'">
+				<productH :pageData="page" :userIdentity="userIdentity"></productH>
+			</template>
+		</view>
+	</view>
+</template>
+
+<script>
+//引入产品模板	
+import productA from '@/components/cm-module/pageTemplate/templateA.vue'
+import productB from '@/components/cm-module/pageTemplate/templateB.vue'
+import productC from '@/components/cm-module/pageTemplate/templateC.vue'
+import productD from '@/components/cm-module/pageTemplate/templateD.vue'
+import productE from '@/components/cm-module/pageTemplate/templateE.vue'
+import productF from '@/components/cm-module/pageTemplate/templateF.vue'
+import productG from '@/components/cm-module/pageTemplate/templateG.vue'
+import productH from '@/components/cm-module/pageTemplate/templateH.vue'
+import productI from '@/components/cm-module/pageTemplate/templateI.vue'
+import productJ from '@/components/cm-module/pageTemplate/templateJ.vue'
+import productK from '@/components/cm-module/pageTemplate/templateK.vue'
+//引入图片模板
+import pictureA from '@/components/cm-module/pcitureTemplate/templateA.vue'
+import pictureB from '@/components/cm-module/pcitureTemplate/templateB.vue'
+import pictureC from '@/components/cm-module/pcitureTemplate/templateC.vue'
+import pictureD from '@/components/cm-module/pcitureTemplate/templateD.vue'
+import pictureE from '@/components/cm-module/pcitureTemplate/templateE.vue'
+import pictureF from '@/components/cm-module/pcitureTemplate/templateF.vue'
+//引入图文模板
+import articleA from '@/components/cm-module/articleTemplate/templateA.vue'
+import articleB from '@/components/cm-module/articleTemplate/templateB.vue'
+import articleC from '@/components/cm-module/articleTemplate/templateC.vue'
+import articleD from '@/components/cm-module/articleTemplate/templateD.vue'
+
+export default {
+	name: 'pageFloor',
+	components: {
+		productA,
+		productB,
+		productC,
+		productD,
+		productE,
+		productF,
+		productG,
+		productH,
+		productI,
+		productJ,
+		productK,
+		pictureA,
+		pictureB,
+		pictureC,
+		pictureD,
+		pictureE,
+		pictureF,
+		articleA,
+		articleB,
+		articleC,
+		articleD
+	},
+	props: {
+		list: {
+			type: Array
+		},
+		pageType: {
+			type: Number
+		},
+		userIdentity: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			pageFloorList: [],
+			isSwiperTemp:['1','2','9','21','5','7']
+		}
+	},
+	created() {
+		this.initData(this.list)
+	},
+	computed: {},
+	methods: {
+		initData(data) {
+			this.pageFloorList = data
+		},
+		NavToDetailPage(page) {
+			//跳转
+			this.$api.navigateTo(
+				`/h5/pages/activity/activity-floorMore?pageType=${this.pageType}&floorId=${page.id}&title=${
+					page.title
+				}`
+			)
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.page-content {
+	background-color: #f7f7f7;
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	padding: 0 24rpx;
+	float: left;
+}
+.tui-group-name {
+	width: 100%;
+	height: 92rpx;
+	padding: 20rpx 0;
+}
+.tui-group-title {
+	width: 100%;
+	float: left;
+	.tui-group-l {
+		float: left;
+		font-size: 34rpx;
+		font-weight: bold;
+		text-align: left;
+		line-height: 49rpx;
+		color: #333;
+	}
+	.tui-group-r {
+		float: right;
+		font-size: $font-size-26;
+		text-align: right;
+		line-height: 49rpx;
+		color: #999999;
+		.icon-xiayibu {
+			font-size: $font-size-30;
+			color: #999999;
+		}
+	}
+}
+.tui-sub__desc {
+	width: 100%;
+	float: left;
+	color: rgba(153, 153, 153, 0.9);
+	font-size: $font-size-26;
+}
+</style>

+ 112 - 0
components/cm-module/articleTemplate/templateA.vue

@@ -0,0 +1,112 @@
+<template>
+	<view class="container article-list">
+		<view
+			class="section clearfix"
+			v-for="(item, index) in productList"
+			:key="index"
+			@click="navigaitionTo(item)"
+		>
+			<image :src="item.appletsImage" mode="aspectFit" class="cover"></image>
+			<view class="article-text">
+				<view class="title">{{ item.name }}</view>
+				<view class="content" v-text="item.content"></view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import caimeiApi from '@/common/config/caimeiApi.js'
+export default {
+	data() {
+		return {
+			productList: []
+		}
+	},
+	props: {
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		},
+		flag: {
+			type: Boolean,
+			default: false
+		}
+	},
+	created() {
+		this.initData(this.pageData)
+	},
+	methods: {
+		initData(data) {
+			if (this.flag) {
+				this.productList = data.floorImageList
+			} else {
+				this.productList = data.floorImageList.slice(0, 4)
+			}
+		},
+		navigaitionTo(item) {
+			if (item.adsImage === '' && item.linkType === -1) {
+				return
+			}else if(item.linkType === -1){
+				uni.navigateTo({
+					url:`/h5/pages/activity/activity-detail?adsImage=${item.adsImage}&title=${item.name}`
+				})
+			}else{
+				caimeiApi.FlooryNavigateTo(item)
+			}
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.article-list {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	.section {
+		width: 702rpx;
+		height: 250rpx;
+		background: #ffffff;
+		margin-bottom: 24rpx;
+		box-sizing: border-box;
+		padding: 24rpx;
+		border-radius: 16rpx;
+		.cover {
+			float: left;
+			width: 202rpx;
+			height: 202rpx;
+			margin-right: 20rpx;
+		}
+		.article-text {
+			width: 432rpx;
+			float: left;
+			.title {
+				font-size: 26rpx;
+				height: 37rpx;
+				color: #3a3a3a;
+				margin-bottom: 18rpx;
+				word-break: break-all;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+			.content {
+				font-size: 24rpx;
+				line-height: 38rpx;
+				color: #8a8a8a;
+				word-break: break-all;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 4;
+				-webkit-box-orient: vertical;
+			}
+		}
+	}
+}
+</style>

+ 111 - 0
components/cm-module/articleTemplate/templateB.vue

@@ -0,0 +1,111 @@
+<template>
+	<view class="container article-list">
+		<view class="section clearfix" v-for="(item,index) in productList" :key="index" @click="navigaitionTo(item)">
+			<image :src="item.appletsImage" mode="aspectFit" class="cover"></image>
+			<view class="article-text">
+				<view class="title">{{item.name}}</view>
+				<view class="content" v-text="item.content"></view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import caimeiApi from '@/common/config/caimeiApi.js'
+export default {
+	data(){
+		return{
+			productList:[]
+		}
+	},
+	props:{
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		},
+		flag:{
+			type:Boolean,
+			default:false
+		}
+	},
+	created() {
+		this.initData(this.pageData);
+	},
+	methods:{
+		initData(data){
+			if(this.flag){
+				this.productList = data.floorImageList
+			}else{
+				this.productList = data.floorImageList.slice(0,2);
+			}
+		},
+		navigaitionTo(item){
+			if (item.adsImage === '' && item.linkType === -1) {
+				return
+			}else if(item.linkType === -1){
+				uni.navigateTo({
+					url:`/h5/pages/activity/activity-detail?adsImage=${item.adsImage}&title=${item.name}`
+				})
+			}else{
+				caimeiApi.FlooryNavigateTo(item)
+			}
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.article-list {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	.section {
+		width: 702rpx;
+		height: 546rpx;
+		background: #ffffff;
+		margin-bottom: 24rpx;
+		box-sizing: border-box;
+		border-radius: 16rpx;
+		.cover {
+			width: 702rpx;
+			height: 360rpx;
+			border-radius: 16rpx 16rpx 0 0;
+			overflow: hidden;
+			.cover-gg{
+				width: 702rpx;
+				height: 360rpx;
+			}
+		}
+		.article-text {
+			width: 702rpx;
+			box-sizing: border-box;
+			padding: 28rpx 30rpx 28rpx;
+			.title {
+				font-size: 26rpx;
+				height: 37rpx;
+				color: #3a3a3a;
+				margin-bottom: 16rpx;
+				word-break: break-all;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+			.content {
+				font-size: 24rpx;
+				line-height: 40rpx;
+				color: #8a8a8a;
+				word-break: break-all;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 2;
+				-webkit-box-orient: vertical;
+			}
+		}
+	}
+}
+</style>

+ 113 - 0
components/cm-module/articleTemplate/templateC.vue

@@ -0,0 +1,113 @@
+<template>
+	<scroll-view scroll-x="true" class="container article-list">
+		<view class="section" v-for="(item,index) in productList" :key="index" @click="navigaitionTo(item)">
+			<view class="cover">
+				<image :src="item.appletsImage" mode="widthFix" class="cover-gg"></image>
+			</view>
+			<view class="article-text">
+				<view class="title">{{item.name}}</view>
+				<view class="content" v-text="item.content"></view>
+			</view>
+		</view>
+	</scroll-view>
+</template>
+
+<script>
+import caimeiApi from '@/common/config/caimeiApi.js'
+export default {
+	data(){
+		return{
+			productList:[]
+		}
+	},
+	props:{
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		}
+	},
+	created() {
+		this.initData(this.pageData);
+	},
+	methods:{
+		initData(data){
+			this.productList = data.floorImageList;
+		},
+		navigaitionTo(item){
+			if (item.adsImage === '' && item.linkType === -1) {
+				return
+			}else if(item.linkType === -1){
+				uni.navigateTo({
+					url:`/h5/pages/activity/activity-detail?adsImage=${item.adsImage}&title=${item.name}`
+				})
+			}else{
+				caimeiApi.FlooryNavigateTo(item)
+			}
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.article-list {
+	width: 750rpx;
+	margin-left: -24rpx;
+	height: auto;
+	box-sizing: border-box;
+	white-space: nowrap;
+	.section {
+		display: inline-block;
+		width: 310rpx;
+		height: 392rpx;
+		background: #ffffff;
+		box-sizing: border-box;
+		border-radius: 16rpx;
+		margin-right: 24rpx;
+		vertical-align: middle;
+		&:first-child{
+			margin-left: 24rpx;
+		}
+		.cover {
+			width: 310rpx;
+			height: 220rpx;
+			border-radius: 16rpx 16rpx 0 0;
+			overflow: hidden;
+			.cover-gg{
+				width: 310rpx;
+				height: 220rpx;
+			}
+		}
+		.article-text {
+			width: 310rpx;
+			box-sizing: border-box;
+			padding: 24rpx;
+			.title {
+				font-size: 26rpx;
+				height: 37rpx;
+				color: #3a3a3a;
+				margin-bottom: 16rpx;
+				word-break: break-all;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+			.content {
+				white-space: normal;
+				font-size: 24rpx;
+				line-height: 40rpx;
+				color: #8a8a8a;
+				word-break: break-all;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 2;
+				-webkit-box-orient: vertical;
+			}
+		}
+	}
+}
+</style>

+ 119 - 0
components/cm-module/articleTemplate/templateD.vue

@@ -0,0 +1,119 @@
+<template>
+	<view class="container article-list clearfix">
+		<view class="section" v-for="(item,index) in productList" :key="index" @click="navigaitionTo(item)">
+			<image :src="item.appletsImage" mode="aspectFit" class="cover"></image>
+			<view class="article-text">
+				<view class="title">{{item.name}}</view>
+				<view class="content" v-text="item.content"></view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import caimeiApi from '@/common/config/caimeiApi.js'
+export default {
+	data(){
+		return{
+			productList:[]
+		}
+	},
+	props:{
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		},
+		flag:{
+			type:Boolean,
+			default:false
+		}
+	},
+	created() {
+		this.initData(this.pageData);
+	},
+	methods:{
+		initData(data){
+			if(this.flag){
+				this.productList = data.floorImageList
+			}else{
+				this.productList = data.floorImageList.slice(0,4);
+			}
+		},
+		navigaitionTo(item){
+			if (item.adsImage === '' && item.linkType === -1) {
+				return
+			}else if(item.linkType === -1){
+				uni.navigateTo({
+					url:`/h5/pages/activity/activity-detail?adsImage=${item.adsImage}&title=${item.name}`
+				})
+			}else{
+				caimeiApi.FlooryNavigateTo(item)
+			}
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.article-list {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	.section {
+		width: 339rpx;
+		height: 412rpx;
+		background: #ffffff;
+		box-sizing: border-box;
+		border-radius: 16rpx;
+		float: left;
+		margin-right: 24rpx;
+		margin-top: 24rpx;
+		&:nth-child(2n){
+			margin-right: 0;
+		}
+		&:nth-child(1),&:nth-child(2){
+			margin-top: 0;
+		}
+		.cover {
+			width: 339rpx;
+			height: 240rpx;
+			border-radius: 16rpx 16rpx 0 0;
+			overflow: hidden;
+			.cover-gg{
+				width: 339rpx;
+				height: 240rpx;
+			}
+		}
+		.article-text {
+			width: 339rpx;
+			box-sizing: border-box;
+			padding: 24rpx;
+			.title {
+				font-size: 26rpx;
+				height: 37rpx;
+				color: #3a3a3a;
+				margin-bottom: 16rpx;
+				word-break: break-all;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 1;
+				-webkit-box-orient: vertical;
+			}
+			.content {
+				font-size: 24rpx;
+				line-height: 40rpx;
+				color: #8a8a8a;
+				word-break: break-all;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 2;
+				-webkit-box-orient: vertical;
+			}
+		}
+	}
+}
+</style>

+ 3 - 1
components/cm-module/homeIndex/navbars.vue

@@ -41,6 +41,7 @@
 				 * 1、二级页面,2、搜索项目仪器,3、直播页面,4、自由页面,5、商品详情,6、仪器项目详情,7、供应商主页
 				 * 8、专题活动页,9、二手市场介绍,10、二手商品列表,11、二手商品发布,12、商品搜索,13、信息详情
 				 * 14、品牌招商介绍页,15、维修保养介绍页,16、首页,17、注册页,18、信息中心,19、供应商列表
+				 * 23、新活动专题页面
 				 **/
 				console.log(pros);
 				if(pros.linkType){
@@ -53,7 +54,8 @@
 						18:`/h5/pages/article/path?link=${pros.link}`,
 						20:`/pages/goods/good-floor?linkId=${pros.linkParam.id}&title=${pros.name}`,
 						21:`/h5/pages/activity/meobohui`,
-						22:`/pages/goods/good-floor-temp?linkId=${pros.linkParam.id}&title=${pros.name}`
+						22:`/pages/goods/good-floor-temp?linkId=${pros.linkParam.id}&title=${pros.name}`,
+						23:`/h5/pages/activity/activity-topic?linkId=${pros.linkParam.id}`  //活动专题页面
 					 }
 					const url = typeMap[pros.linkType];
 					this.$api.navigateTo(url)

+ 102 - 96
components/cm-module/homeIndex/pageFloor.vue

@@ -1,140 +1,146 @@
 <template>
 	<view>
-		<view class="page-content clearfix" v-for="(page,index) in pageFloorList" :key="index">
+		<view class="page-content clearfix" v-for="(page, index) in pageFloorList" :key="index">
 			<view class="tui-group-name" v-if="page.floorContent">
 				<view class="tui-group-title">
 					<view class="tui-group-l">{{ page.title }}</view>
-					<view class="tui-group-r"  v-if="page.floorContent.templateType != '8'" @click="NavToDetailPage(page)">
-						<text>更多</text>
-						<text class="iconfont icon-xiayibu"></text>
+					<view
+						class="tui-group-r"
+						v-if="page.floorContent.templateType != '8'"
+						@click="NavToDetailPage(page)"
+					>
+						<text>更多</text> <text class="iconfont icon-xiayibu"></text>
 					</view>
-					
 				</view>
 				<view class="tui-sub__desc">{{ page.detail }}</view>
 			</view>
+
 			<template v-if="page.floorContent.templateType == '1'">
 				<templateA :pageData="page" :userIdentity="userIdentity"></templateA>
-			</template>	 
+			</template>
 			<template v-if="page.floorContent.templateType == '2'">
 				<templateB :pageData="page" :userIdentity="userIdentity"></templateB>
-			</template>	 
+			</template>
 			<template v-if="page.floorContent.templateType == '3'">
 				<templateC :pageData="page" :userIdentity="userIdentity"></templateC>
-			</template>	 
+			</template>
 			<template v-if="page.floorContent.templateType == '4'">
 				<templateD :pageData="page" :userIdentity="userIdentity"></templateD>
-			</template>	 
+			</template>
 			<template v-if="page.floorContent.templateType == '5'">
 				<templateE :pageData="page" :userIdentity="userIdentity"></templateE>
-			</template>	 
+			</template>
 			<template v-if="page.floorContent.templateType == '6'">
 				<templateF :pageData="page" :userIdentity="userIdentity"></templateF>
-			</template>	 
+			</template>
 			<template v-if="page.floorContent.templateType == '7'">
 				<templateG :pageData="page" :userIdentity="userIdentity"></templateG>
-			</template>	 
+			</template>
 			<template v-if="page.floorContent.templateType == '8'">
 				<templateH :pageData="page" :userIdentity="userIdentity"></templateH>
-			</template>	  
+			</template>
 		</view>
 	</view>
 </template>
 
 <script>
-	import templateA from '@/components/cm-module/pageTemplate/templateA.vue'
-	import templateB from '@/components/cm-module/pageTemplate/templateB.vue'
-	import templateC from '@/components/cm-module/pageTemplate/templateC.vue'
-	import templateD from '@/components/cm-module/pageTemplate/templateD.vue'
-	import templateE from '@/components/cm-module/pageTemplate/templateE.vue'
-	import templateF from '@/components/cm-module/pageTemplate/templateF.vue'
-	import templateG from '@/components/cm-module/pageTemplate/templateG.vue'
-	import templateH from '@/components/cm-module/pageTemplate/templateH.vue'
-	export default{
-		name:"pageFloor",
-		components:{
-			templateA,
-			templateB,
-			templateC,
-			templateD,
-			templateE,
-			templateF,
-			templateG,
-			templateH,
-		},
-		props:{
-			list:{
-				type:Array
-			},
-			pageType:{
-				type:Number
-			},
-			userIdentity:{
-				type:Number
-			}
-		},
-		data() {
-			return{
-				pageFloorList:[]
-			}
+import templateA from '@/components/cm-module/pageTemplate/templateA.vue'
+import templateB from '@/components/cm-module/pageTemplate/templateB.vue'
+import templateC from '@/components/cm-module/pageTemplate/templateC.vue'
+import templateD from '@/components/cm-module/pageTemplate/templateD.vue'
+import templateE from '@/components/cm-module/pageTemplate/templateE.vue'
+import templateF from '@/components/cm-module/pageTemplate/templateF.vue'
+import templateG from '@/components/cm-module/pageTemplate/templateG.vue'
+import templateH from '@/components/cm-module/pageTemplate/templateH.vue'
+export default {
+	name: 'pageFloor',
+	components: {
+		templateA,
+		templateB,
+		templateC,
+		templateD,
+		templateE,
+		templateF,
+		templateG,
+		templateH
+	},
+	props: {
+		list: {
+			type: Array
 		},
-		created(){
-			this.initData(this.list)
+		pageType: {
+			type: Number
 		},
-		computed: {
-	
+		userIdentity: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			pageFloorList: []
+		}
+	},
+	created() {
+		this.initData(this.list)
+	},
+	computed: {},
+	methods: {
+		initData(data) {
+			this.pageFloorList = data
 		},
-		methods:{
-			initData(data){
-				this.pageFloorList = data
-			},
-			NavToDetailPage(page) {//跳转
-				this.$api.navigateTo(`/pages/goods/good-floorMore?pageType=${this.pageType}&floorId=${page.id}&title=${page.title}`)
-			}
+		NavToDetailPage(page) {
+			//跳转
+			this.$api.navigateTo(
+				`/pages/goods/good-floorMore?pageType=${this.pageType}&floorId=${page.id}&title=${
+					page.title
+				}`
+			)
 		}
 	}
+}
 </script>
 
 <style lang="scss">
-	.page-content{
-		background-color: #F7F7F7;
-		width: 100%;
-		height: auto;
-		box-sizing: border-box;
-		padding: 0 24rpx;
+.page-content {
+	background-color: #f7f7f7;
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	padding: 0 24rpx;
+	float: left;
+}
+.tui-group-name {
+	width: 100%;
+	height: 92rpx;
+	padding: 20rpx 0;
+}
+.tui-group-title {
+	width: 100%;
+	float: left;
+	.tui-group-l {
 		float: left;
+		font-size: 34rpx;
+		font-weight: bold;
+		text-align: left;
+		line-height: 49rpx;
+		color: #333;
 	}
-	.tui-group-name {
-		width: 100%;
-		height: 92rpx;
-		padding: 20rpx 0;
-	}
-	.tui-group-title{
-		width: 100%;
-		float: left;
-		.tui-group-l{
-			float: left;
-			font-size: 34rpx;
-			font-weight: bold;
-			text-align: left;
-			line-height: 49rpx;
-			color: #333;
-		}
-		.tui-group-r{
-			float: right;
-			font-size: $font-size-26;
-			text-align: right;
-			line-height: 49rpx;
+	.tui-group-r {
+		float: right;
+		font-size: $font-size-26;
+		text-align: right;
+		line-height: 49rpx;
+		color: #999999;
+		.icon-xiayibu {
+			font-size: $font-size-30;
 			color: #999999;
-			.icon-xiayibu{
-				font-size: $font-size-30;
-				color: #999999;
-			}
 		}
 	}
-	.tui-sub__desc {
-		width: 100%;
-		float: left;
-		color: rgba(153,153,153,0.9);
-		font-size: $font-size-26;
-	}
+}
+.tui-sub__desc {
+	width: 100%;
+	float: left;
+	color: rgba(153, 153, 153, 0.9);
+	font-size: $font-size-26;
+}
 </style>

+ 333 - 0
components/cm-module/pageFloorTemplate/templateG.vue

@@ -0,0 +1,333 @@
+<template>
+	<view class="section_page_main clearfix">
+		<view class="floor-item ad_04 clearfix" v-for="(item, idx) in floorData.floorImageList" :key="idx" @click.stop="navToDetailPage(item)">
+			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<view class="floor-item_tag" v-if="item.listType == 2">
+				<text>{{ item.label }}</text>
+			</view>
+			<view class="floor-item-content">
+				<view class="title tui-skeleton-rect">
+					<text class="mclap-tag" v-if="item.product.beautyActFlag == '1'">美博会</text>
+					<text class="mclap" :class="item.product.beautyActFlag == '1' ? 'indent' : ''">{{item.name}} </text>
+				</view>
+				<view class="floor-item-price" v-if="item.listType == 1">
+					<view class="floor-item-act">
+						<template v-if="userIdentity === 3">
+							<template v-if="item.product.actStatus===1">
+								<view class="floor-tags" v-if="PromotionsFormat(item.product.promotions)">
+									{{item.product.promotions.name}}
+									<text v-if="hasLogin && item.product.price1TextFlag != 1 && item.product.shopID == shopId">:¥{{item.product.retailPrice | NumFormat}}</text>
+								</view>
+								<view class="floor-tags" v-else>{{item.product.promotions.name}}</view>	
+							</template>
+							<template v-if="item.product.actStatus ===0  &&  item.product.ladderPriceFlag===1">
+								<view class="floor-tags">阶梯价格</view>	
+							</template>
+						</template>	
+						<template v-else>
+							<template v-if="item.product.actStatus===1">
+								<view class="floor-tags" v-if="PromotionsFormat(item.product.promotions)">
+									{{item.product.promotions.name}}
+									<text v-if="hasLogin && item.product.price1TextFlag != 1">:¥{{item.product.retailPrice | NumFormat}}</text>
+								</view>
+								<view class="floor-tags" v-else>{{item.product.promotions.name}}</view>	
+							</template>
+							<template v-if="item.product.actStatus ===0  &&  item.product.ladderPriceFlag===1">
+								<view class="floor-tags">阶梯价格</view>	
+							</template>
+						</template>
+					</view>	
+					<view v-if="hasLogin">
+						<template v-if="item.product.productCategory == 1">
+							<template v-if="userIdentity == 3">
+								<template v-if="item.product.shopID == shopId">
+									<view class="title-none" v-if="item.product.price1TextFlag === '1'">
+										<text class="p big">¥未公开价格</text>
+									</view>
+									<view class="price tui-skeleton-rect" v-else :class="PromotionsFormat(item.product.promotions) ? 'none' : ''">
+										<text class="p sm">¥</text>
+										<text class="p big">{{ (PromotionsFormat(item.product.promotions) ? item.product.price1 : item.product.retailPrice ) | NumFormat}}</text>
+									</view>
+								</template>	
+								<template v-else>
+									<view class="no-price">
+										<view class="p-stars">
+											<text class="p-no">¥</text>
+											<uni-grader :grade="Number(item.product.price1Grade)" :margin="14"></uni-grader>
+										</view>
+									</view>	
+								</template>
+							</template>
+							<template v-else-if="userIdentity ===4">
+								<view class="title-none" v-if="item.product.price1TextFlag === '1'">
+									<text class="p big">¥未公开价格</text>
+								</view>
+								<view class="title-none"  v-if="item.product.price1TextFlag === '2'">
+									<text class="p big">¥价格仅会员可见</text>
+								</view>
+								<view class="price tui-skeleton-rect" v-if="item.product.price1TextFlag === '0'" :class="PromotionsFormat(item.product.promotions) ? 'none' : ''">
+									<text class="p sm">¥</text>
+									<text class="p big">{{ (PromotionsFormat(item.product.promotions) ? item.product.price1 : item.product.retailPrice ) | NumFormat}}</text>
+								</view>
+							</template>
+							<template v-else>
+								<view class="title-none" v-if="item.product.price1TextFlag === '1'">
+									<text class="p big">¥未公开价格</text>
+								</view>
+								<view class="price tui-skeleton-rect" v-else :class="PromotionsFormat(item.product.promotions) ? 'none' : ''">
+									<text class="p sm">¥</text>
+									<text class="p big">{{ (PromotionsFormat(item.product.promotions) ? item.product.price1 : item.product.retailPrice ) | NumFormat}}</text>
+								</view>
+							</template>
+						</template>	
+						<template v-else>
+							<view class="price tui-skeleton-rect" v-if="item.product.detailTalkFlag == '2'">
+								<text class="p sm">¥</text>
+								<text class="p big">价格详聊</text>
+							</view>
+							<view class="price tui-skeleton-rect" v-else>
+								<text class="p sm">¥</text>
+								<text class="p big">{{ item.product.retailPrice | NumFormat }}</text>
+							</view>
+						</template>
+					</view>
+					<view v-else class="no-price">
+						<template v-if="item.product.productCategory == 1">
+							<view class="p-stars">
+								<text class="p-no">¥</text>
+								<uni-grader :grade="Number(item.product.price1Grade)" :margin="14"></uni-grader>
+							</view>
+						</template>
+						<template v-else>
+							<view class="p-stars">
+								<text class="p-no">¥登录可见</text>
+							</view>
+						</template>
+					</view>	
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { mapState,mapMutations} from 'vuex';
+	import uniGrader from '@/components/uni-grade/uni-grade.vue'
+	export default{
+		name:"templateG",
+		components:{
+			uniGrader
+		},
+		props:{
+			pageData:{
+				type:Object
+			},
+			userIdentity:{
+				type:Number
+			}
+		},
+		data() {
+			return{
+				shopId:0,
+				floorData:{}
+			}
+		},
+		filters: {
+			NumFormat:function(text) {//处理金额				
+				return Number(text).toFixed(2);			
+			},		
+		},
+		created(){
+			this.initData(this.pageData)
+		},
+		computed: {
+			...mapState(['hasLogin','userInfo','isActivity'])
+		},
+		watch: {
+			pageData: {
+				handler: function (el) {//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+					this.pageData = el
+					this.initData(this.pageData)
+				},
+				deep: true
+			}
+		},
+		methods:{
+			initData(data){
+				this.$api.getStorage().then((resolve) =>{
+					this.shopId = resolve.shopId ? resolve.shopId : 0
+				})
+				this.floorData = data
+				// console.log(this.floorData)
+			},
+			PromotionsFormat(promo){//促销活动类型数据处理
+				if(promo!=null){
+					if(promo.type == 1 && promo.mode == 1){
+						return true
+					}else{
+						return false
+					}
+				}
+				return false
+			},
+			
+			navToDetailPage(pros) {//跳转商品详情页
+				this.$api.FlooryNavigateTo(pros)
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.section_page_main{
+		width: 100%;
+		height: auto;
+		box-sizing: border-box;
+		.floor-item{
+			width: 339rpx;
+			height: 516rpx;
+			margin-right: 20rpx;
+			font-size: $font-size-24;
+			color: $text-color;
+			background: #FFFFFF;
+			line-height: 36rpx;
+			border-radius: 16rpx;
+			margin-bottom: 20rpx;
+			float: left;
+			box-sizing: border-box;
+			position: relative;
+			&:nth-child(2n){
+				margin-right: 0;
+			}
+			.item-img-gg{
+				width: 339rpx;
+				height: 516rpx;
+				display: block;
+				border-radius: 16rpx;
+			}
+			.item-img{
+				width: 339rpx;
+				height: 339rpx;
+				border-radius: 16rpx 16rpx 0 0;
+				display: block;
+				margin-bottom: 8rpx;
+			}
+			.floor-item_tag{
+				width: 100%;
+				height: 32rpx;
+				float: left;
+				margin: 20rpx 0;
+				padding: 0 20rpx;
+				box-sizing: border-box;
+				text{
+					display: inline-block;
+					padding: 0 8rpx;
+					border: 1px solid #e3ebf7;
+					border-radius: 8rpx ;
+					color: #9aa5b5;
+					font-size: $font-size-22;
+					line-height: 32rpx;
+					text-align: center;
+					float: left;
+				}
+			}
+			.floor-item-content{
+				width: 100%;
+				padding: 0 20rpx;
+				box-sizing: border-box;
+			}
+			.floor-item-act{
+				display: block;
+				width: 100%;
+				height: 32rpx;
+				text-align: center;
+				box-sizing: border-box;
+			}
+			.floor-tags{
+				height: 28rpx;
+				border-radius: 6rpx;
+				background-color: #FFFFFF;
+				line-height: 28rpx;
+				color: $color-system;
+				text-align: center;
+				display: inline-block;
+				padding:0 16rpx;
+				font-size: $font-size-20;
+				border: 1px solid #E15616;
+				float: left;
+			}
+			.title-none{
+				font-size: $font-size-26;
+				color: #FF2A2A;
+				line-height: 54rpx;
+			}
+			.title{
+				width: 100%;
+				height: 70rpx;
+				display: flex;
+				line-height: 35rpx;
+				flex-direction: column;
+				margin: 8rpx 0;
+				padding: 0;
+				position: relative;
+				.mclap{
+					width: 100%;
+					line-height:35rpx;
+					text-overflow:ellipsis;
+					display: -webkit-box;
+					word-break: break-all;
+					-webkit-box-orient: vertical;
+					-webkit-line-clamp: 2;
+					overflow: hidden;
+					font-size: 26rpx;
+					&.indent{
+						text-indent: 95rpx;
+					}
+				}
+				.mclap-tag{
+					display: block;
+					width: 84rpx;
+					height: 32rpx;
+					background-image: linear-gradient(270deg, #f9c023 0%, #f83600 100%);
+					border-radius: 4rpx 48rpx 4px 4px;
+					line-height: 32rpx;
+					font-size: $font-size-22;
+					color: #FFFFFF;
+					text-align: center;
+					position: absolute;
+					left: 0;
+					top: 0;
+				}
+			}
+			.no-price{
+				height: 54rpx;
+				line-height: 54rpx;
+				display: flex;
+				box-sizing: border-box;
+				.p-no{
+					font-size: $font-size-30;
+					color: $text-color;
+					display: block;
+					float: left;
+				}
+				.p-stars{
+					float: left;
+				}
+			}
+			.price{
+				color: #FF2A2A;
+				line-height:54rpx;
+				&.none{
+					text-decoration: line-through;
+					color: #999999;
+				}
+				.sm{
+					font-size: $font-size-24;
+				}
+				.big{
+					font-size: $font-size-28;
+				}
+			}
+		}
+	}
+</style>

+ 489 - 0
components/cm-module/pageFloorTemplate/templateI.vue

@@ -0,0 +1,489 @@
+<template>
+	<view class="section_page_main clearfix">
+		<view class="floor-item ad_01">
+			<image
+				class="item-img-gg"
+				:src="floorData.floorContent.appletsAdsImage1"
+				@click="
+					BannerNavigateTo(
+						floorData.floorContent.linkType1,
+						floorData.floorContent.linkParam1.id
+							? floorData.floorContent.linkParam1.id
+							: '',
+						floorData.floorContent.adsLink1,
+						floorData.floorContent.linkParam1.keyword
+							? floorData.floorContent.linkParam1.keyword
+							: ''
+					)
+				"
+				mode="aspectFill"
+			>
+			</image>
+		</view>
+		<view class="floor-item ad_02">
+			<image
+				class="item-img-gg"
+				:src="floorData.floorContent.appletsAdsImage2"
+				@click="
+					BannerNavigateTo(
+						floorData.floorContent.linkType2,
+						floorData.floorContent.linkParam2.id
+							? floorData.floorContent.linkParam2.id
+							: '',
+						floorData.floorContent.adsLink2,
+						floorData.floorContent.linkParam2.keyword
+							? floorData.floorContent.linkParam2.keyword
+							: ''
+					)
+				"
+				mode="aspectFill"
+			>
+			</image>
+		</view>
+		<view class="floor-item ad_03">
+			<image
+				class="item-img-gg"
+				:src="floorData.floorContent.appletsAdsImage3"
+				@click="
+					BannerNavigateTo(
+						floorData.floorContent.linkType3,
+						floorData.floorContent.linkParam3.id
+							? floorData.floorContent.linkParam3.id
+							: '',
+						floorData.floorContent.adsLink3,
+						floorData.floorContent.linkParam3.keyword
+							? floorData.floorContent.linkParam3.keyword
+							: ''
+					)
+				"
+				mode="aspectFill"
+			>
+			</image>
+		</view>
+		<view
+			class="floor-item ad_04 clearfix"
+			v-for="(item, idx) in floorData.floorImageList"
+			:key="idx"
+			@click.stop="navToDetailPage(item)"
+		>
+			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<view class="floor-item_tag" v-if="item.listType == 2">
+				<text>{{ item.label }}</text>
+			</view>
+			<view class="floor-item-content">
+				<view class="title tui-skeleton-rect">
+					<text class="mclap-tag" v-if="item.product.beautyActFlag == '1'">美博会</text>
+					<text class="mclap" :class="item.product.beautyActFlag == '1' ? 'indent' : ''"
+						>{{ item.name }}
+					</text>
+				</view>
+				<view class="floor-item-price" v-if="item.listType == 1">
+					<view class="floor-item-act">
+						<template v-if="userIdentity === 3">
+							<template v-if="item.product.actStatus === 1">
+								<view
+									class="floor-tags"
+									v-if="PromotionsFormat(item.product.promotions)"
+								>
+									{{ item.product.promotions.name }}
+									<text
+										v-if="
+											hasLogin &&
+												item.product.price1TextFlag != 1 &&
+												item.product.shopID == shopId
+										"
+										>:¥{{ item.product.retailPrice | NumFormat }}</text
+									>
+								</view>
+								<view class="floor-tags" v-else>{{
+									item.product.promotions.name
+								}}</view>
+							</template>
+							<template
+								v-if="
+									item.product.actStatus === 0 &&
+										item.product.ladderPriceFlag === 1
+								"
+							>
+								<view class="floor-tags">阶梯价格</view>
+							</template>
+						</template>
+						<template v-else>
+							<template v-if="item.product.actStatus === 1">
+								<view
+									class="floor-tags"
+									v-if="PromotionsFormat(item.product.promotions)"
+								>
+									{{ item.product.promotions.name }}
+									<text v-if="hasLogin && item.product.price1TextFlag != 1"
+										>:¥{{ item.product.retailPrice | NumFormat }}</text
+									>
+								</view>
+								<view class="floor-tags" v-else>{{
+									item.product.promotions.name
+								}}</view>
+							</template>
+							<template
+								v-if="
+									item.product.actStatus === 0 &&
+										item.product.ladderPriceFlag === 1
+								"
+							>
+								<view class="floor-tags">阶梯价格</view>
+							</template>
+						</template>
+					</view>
+					<view v-if="hasLogin">
+						<template v-if="item.product.productCategory == 1">
+							<template v-if="userIdentity == 3">
+								<template v-if="item.product.shopID == shopId">
+									<view
+										class="title-none"
+										v-if="item.product.price1TextFlag === '1'"
+									>
+										<text class="p big">¥未公开价格</text>
+									</view>
+									<view
+										class="price tui-skeleton-rect"
+										v-else
+										:class="
+											PromotionsFormat(item.product.promotions) ? 'none' : ''
+										"
+									>
+										<text class="p sm">¥</text>
+										<text class="p big">{{
+											(PromotionsFormat(item.product.promotions)
+												? item.product.price1
+												: item.product.retailPrice) | NumFormat
+										}}</text>
+									</view>
+								</template>
+								<template v-else>
+									<view class="no-price">
+										<view class="p-stars">
+											<text class="p-no">¥</text>
+											<uni-grader
+												:grade="Number(item.product.price1Grade)"
+												:margin="14"
+											></uni-grader>
+										</view>
+									</view>
+								</template>
+							</template>
+							<template v-else-if="userIdentity === 4">
+								<view class="title-none" v-if="item.product.price1TextFlag === '1'">
+									<text class="p big">¥未公开价格</text>
+								</view>
+								<view class="title-none" v-if="item.product.price1TextFlag === '2'">
+									<text class="p big">¥价格仅会员可见</text>
+								</view>
+								<view
+									class="price tui-skeleton-rect"
+									v-if="item.product.price1TextFlag === '0'"
+									:class="PromotionsFormat(item.product.promotions) ? 'none' : ''"
+								>
+									<text class="p sm">¥</text>
+									<text class="p big">{{
+										(PromotionsFormat(item.product.promotions)
+											? item.product.price1
+											: item.product.retailPrice) | NumFormat
+									}}</text>
+								</view>
+							</template>
+							<template v-else>
+								<view class="title-none" v-if="item.product.price1TextFlag === '1'">
+									<text class="p big">¥未公开价格</text>
+								</view>
+								<view
+									class="price tui-skeleton-rect"
+									v-else
+									:class="PromotionsFormat(item.product.promotions) ? 'none' : ''"
+								>
+									<text class="p sm">¥</text>
+									<text class="p big">{{
+										(PromotionsFormat(item.product.promotions)
+											? item.product.price1
+											: item.product.retailPrice) | NumFormat
+									}}</text>
+								</view>
+							</template>
+						</template>
+						<template v-else>
+							<view
+								class="price tui-skeleton-rect"
+								v-if="item.product.detailTalkFlag == '2'"
+							>
+								<text class="p sm">¥</text> <text class="p big">价格详聊</text>
+							</view>
+							<view class="price tui-skeleton-rect" v-else>
+								<text class="p sm">¥</text>
+								<text class="p big">{{
+									item.product.retailPrice | NumFormat
+								}}</text>
+							</view>
+						</template>
+					</view>
+					<view v-else class="no-price">
+						<template v-if="item.product.productCategory == 1">
+							<view class="p-stars">
+								<text class="p-no">¥</text>
+								<uni-grader
+									:grade="Number(item.product.price1Grade)"
+									:margin="14"
+								></uni-grader>
+							</view>
+						</template>
+						<template v-else>
+							<view class="p-stars"> <text class="p-no">¥登录可见</text> </view>
+						</template>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import uniGrader from '@/components/uni-grade/uni-grade.vue'
+export default {
+	name: 'templateD',
+	components: {
+		uniGrader
+	},
+	props: {
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			shopId: 0,
+			floorData: {}
+		}
+	},
+	filters: {
+		NumFormat: function(text) {
+			//处理金额
+			return Number(text).toFixed(2)
+		}
+	},
+	created() {
+		this.initData(this.pageData)
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo', 'isActivity'])
+	},
+	watch: {
+		pageData: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.pageData = el
+				this.initData(this.pageData)
+			},
+			deep: true
+		}
+	},
+	methods: {
+		initData(data) {
+			this.$api.getStorage().then(resolve => {
+				this.shopId = resolve.shopId ? resolve.shopId : 0
+			})
+			this.floorData = data
+			// console.log(this.floorData)
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
+				}
+			}
+			return false
+		},
+		navToDetailPage(pros) {
+			//跳转商品详情页
+			this.$api.FlooryNavigateTo(pros)
+		},
+		BannerNavigateTo(linkType, linkId, linkHref, keyword) {
+			//跳转商品详情页
+			this.$api.BannerNavigateTo(linkType, linkId, linkHref, keyword)
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.section_page_main {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	.floor-item {
+		width: 339rpx;
+		height: 516rpx;
+		margin-right: 20rpx;
+		font-size: $font-size-24;
+		color: $text-color;
+		background: #ffffff;
+		line-height: 36rpx;
+		border-radius: 16rpx;
+		margin-bottom: 20rpx;
+		float: left;
+		box-sizing: border-box;
+		position: relative;
+		&.ad_01 {
+			width: 100%;
+			height: 240rpx;
+			margin-right: 0;
+			.item-img-gg {
+				width: 100%;
+				height: 240rpx;
+				display: block;
+				border-radius: 16rpx;
+			}
+		}
+		&:nth-child(odd) {
+			margin-right: 0;
+		}
+
+		&.ad_02,&.ad_03{
+			width: 339rpx;
+			height: 260rpx;
+			.item-img-gg {
+				width: 339rpx;
+				height: 260rpx;
+				display: block;
+				border-radius: 16rpx;
+			}
+		}
+		.item-img {
+			width: 339rpx;
+			height: 339rpx;
+			border-radius: 16rpx 16rpx 0 0;
+			display: block;
+			margin-bottom: 8rpx;
+		}
+		.floor-item_tag {
+			width: 100%;
+			height: 32rpx;
+			float: left;
+			margin: 20rpx 0;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+			text {
+				display: inline-block;
+				padding: 0 8rpx;
+				border: 1px solid #e3ebf7;
+				border-radius: 8rpx;
+				color: #9aa5b5;
+				font-size: $font-size-22;
+				line-height: 32rpx;
+				text-align: center;
+				float: left;
+			}
+		}
+		.floor-item-content {
+			width: 100%;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+		}
+		.floor-item-act {
+			display: block;
+			width: 100%;
+			height: 32rpx;
+			text-align: center;
+			box-sizing: border-box;
+		}
+		.floor-tags {
+			height: 28rpx;
+			border-radius: 6rpx;
+			background-color: #ffffff;
+			line-height: 28rpx;
+			color: $color-system;
+			text-align: center;
+			display: inline-block;
+			padding: 0 16rpx;
+			font-size: $font-size-20;
+			border: 1px solid #e15616;
+			float: left;
+		}
+		.title-none {
+			font-size: $font-size-26;
+			color: #ff2a2a;
+			line-height: 54rpx;
+		}
+		.title {
+			width: 100%;
+			height: 70rpx;
+			display: flex;
+			line-height: 35rpx;
+			flex-direction: column;
+			margin: 8rpx 0;
+			padding: 0;
+			position: relative;
+			.mclap {
+				width: 100%;
+				line-height: 35rpx;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				word-break: break-all;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 2;
+				overflow: hidden;
+				font-size: 26rpx;
+				&.indent {
+					text-indent: 95rpx;
+				}
+			}
+			.mclap-tag {
+				display: block;
+				width: 84rpx;
+				height: 32rpx;
+				background-image: linear-gradient(270deg, #f9c023 0%, #f83600 100%);
+				border-radius: 4rpx 48rpx 4px 4px;
+				line-height: 32rpx;
+				font-size: $font-size-22;
+				color: #ffffff;
+				text-align: center;
+				position: absolute;
+				left: 0;
+				top: 0;
+			}
+		}
+		.no-price {
+			height: 54rpx;
+			line-height: 54rpx;
+			display: flex;
+			box-sizing: border-box;
+			.p-no {
+				font-size: $font-size-28;
+				color: $text-color;
+				display: block;
+				float: left;
+			}
+			.p-stars {
+				float: left;
+			}
+		}
+		.price {
+			color: #ff2a2a;
+			line-height: 54rpx;
+			&.none {
+				text-decoration: line-through;
+				color: #999999;
+			}
+			.sm {
+				font-size: $font-size-24;
+			}
+			.big {
+				font-size: $font-size-28;
+			}
+		}
+	}
+}
+</style>

+ 505 - 0
components/cm-module/pageFloorTemplate/templateJ.vue

@@ -0,0 +1,505 @@
+<template>
+	<view class="section_page_main clearfix">
+		<view class="floor-item-ad clearfix">
+			<view class="floor-item-left">
+				<image
+					class="item-img-gg"
+					:src="floorData.floorContent.appletsAdsImage1"
+					@click="
+						BannerNavigateTo(
+							floorData.floorContent.linkType1,
+							floorData.floorContent.linkParam1.id
+								? floorData.floorContent.linkParam1.id
+								: '',
+							floorData.floorContent.adsLink1,
+							floorData.floorContent.linkParam1.keyword
+								? floorData.floorContent.linkParam1.keyword
+								: ''
+						)
+					"
+					mode="aspectFill"
+				>
+				</image>
+			</view>
+			<view class="floor_item_right">
+				<image
+					class="item-img-gg"
+					:src="floorData.floorContent.appletsAdsImage2"
+					@click="
+						BannerNavigateTo(
+							floorData.floorContent.linkType2,
+							floorData.floorContent.linkParam2.id
+								? floorData.floorContent.linkParam2.id
+								: '',
+							floorData.floorContent.adsLink2,
+							floorData.floorContent.linkParam2.keyword
+								? floorData.floorContent.linkParam2.keyword
+								: ''
+						)
+					"
+					mode="aspectFill"
+				>
+				</image>
+				<image
+					class="item-img-gg"
+					:src="floorData.floorContent.appletsAdsImage3"
+					@click="
+						BannerNavigateTo(
+							floorData.floorContent.linkType3,
+							floorData.floorContent.linkParam3.id
+								? floorData.floorContent.linkParam3.id
+								: '',
+							floorData.floorContent.adsLink3,
+							floorData.floorContent.linkParam3.keyword
+								? floorData.floorContent.linkParam3.keyword
+								: ''
+						)
+					"
+					mode="aspectFill"
+				>
+				</image>
+			</view>
+		</view>
+
+		<view
+			class="floor-item ad_04 clearfix"
+			v-for="(item, idx) in floorData.floorImageList"
+			:key="idx"
+			@click.stop="navToDetailPage(item)"
+		>
+			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<view class="floor-item_tag" v-if="item.listType == 2">
+				<text>{{ item.label }}</text>
+			</view>
+			<view class="floor-item-content">
+				<view class="title tui-skeleton-rect">
+					<text class="mclap-tag" v-if="item.product.beautyActFlag == '1'">美博会</text>
+					<text class="mclap" :class="item.product.beautyActFlag == '1' ? 'indent' : ''"
+						>{{ item.name }}
+					</text>
+				</view>
+				<view class="floor-item-price" v-if="item.listType == 1">
+					<view class="floor-item-act">
+						<template v-if="userIdentity === 3">
+							<template v-if="item.product.actStatus === 1">
+								<view
+									class="floor-tags"
+									v-if="PromotionsFormat(item.product.promotions)"
+								>
+									{{ item.product.promotions.name }}
+									<text
+										v-if="
+											hasLogin &&
+												item.product.price1TextFlag != 1 &&
+												item.product.shopID == shopId
+										"
+										>:¥{{ item.product.retailPrice | NumFormat }}</text
+									>
+								</view>
+								<view class="floor-tags" v-else>{{
+									item.product.promotions.name
+								}}</view>
+							</template>
+							<template
+								v-if="
+									item.product.actStatus === 0 &&
+										item.product.ladderPriceFlag === 1
+								"
+							>
+								<view class="floor-tags">阶梯价格</view>
+							</template>
+						</template>
+						<template v-else>
+							<template v-if="item.product.actStatus === 1">
+								<view
+									class="floor-tags"
+									v-if="PromotionsFormat(item.product.promotions)"
+								>
+									{{ item.product.promotions.name }}
+									<text v-if="hasLogin && item.product.price1TextFlag != 1"
+										>:¥{{ item.product.retailPrice | NumFormat }}</text
+									>
+								</view>
+								<view class="floor-tags" v-else>{{
+									item.product.promotions.name
+								}}</view>
+							</template>
+							<template
+								v-if="
+									item.product.actStatus === 0 &&
+										item.product.ladderPriceFlag === 1
+								"
+							>
+								<view class="floor-tags">阶梯价格</view>
+							</template>
+						</template>
+					</view>
+					<view v-if="hasLogin">
+						<template v-if="item.product.productCategory == 1">
+							<template v-if="userIdentity == 3">
+								<template v-if="item.product.shopID == shopId">
+									<view
+										class="title-none"
+										v-if="item.product.price1TextFlag === '1'"
+									>
+										<text class="p big">¥未公开价格</text>
+									</view>
+									<view
+										class="price tui-skeleton-rect"
+										v-else
+										:class="
+											PromotionsFormat(item.product.promotions) ? 'none' : ''
+										"
+									>
+										<text class="p sm">¥</text>
+										<text class="p big">{{
+											(PromotionsFormat(item.product.promotions)
+												? item.product.price1
+												: item.product.retailPrice) | NumFormat
+										}}</text>
+									</view>
+								</template>
+								<template v-else>
+									<view class="no-price">
+										<view class="p-stars">
+											<text class="p-no">¥</text>
+											<uni-grader
+												:grade="Number(item.product.price1Grade)"
+												:margin="14"
+											></uni-grader>
+										</view>
+									</view>
+								</template>
+							</template>
+							<template v-else-if="userIdentity === 4">
+								<view class="title-none" v-if="item.product.price1TextFlag === '1'">
+									<text class="p big">¥未公开价格</text>
+								</view>
+								<view class="title-none" v-if="item.product.price1TextFlag === '2'">
+									<text class="p big">¥价格仅会员可见</text>
+								</view>
+								<view
+									class="price tui-skeleton-rect"
+									v-if="item.product.price1TextFlag === '0'"
+									:class="PromotionsFormat(item.product.promotions) ? 'none' : ''"
+								>
+									<text class="p sm">¥</text>
+									<text class="p big">{{
+										(PromotionsFormat(item.product.promotions)
+											? item.product.price1
+											: item.product.retailPrice) | NumFormat
+									}}</text>
+								</view>
+							</template>
+							<template v-else>
+								<view class="title-none" v-if="item.product.price1TextFlag === '1'">
+									<text class="p big">¥未公开价格</text>
+								</view>
+								<view
+									class="price tui-skeleton-rect"
+									v-else
+									:class="PromotionsFormat(item.product.promotions) ? 'none' : ''"
+								>
+									<text class="p sm">¥</text>
+									<text class="p big">{{
+										(PromotionsFormat(item.product.promotions)
+											? item.product.price1
+											: item.product.retailPrice) | NumFormat
+									}}</text>
+								</view>
+							</template>
+						</template>
+						<template v-else>
+							<view
+								class="price tui-skeleton-rect"
+								v-if="item.product.detailTalkFlag == '2'"
+							>
+								<text class="p sm">¥</text> <text class="p big">价格详聊</text>
+							</view>
+							<view class="price tui-skeleton-rect" v-else>
+								<text class="p sm">¥</text>
+								<text class="p big">{{
+									item.product.retailPrice | NumFormat
+								}}</text>
+							</view>
+						</template>
+					</view>
+					<view v-else class="no-price">
+						<template v-if="item.product.productCategory == 1">
+							<view class="p-stars">
+								<text class="p-no">¥</text>
+								<uni-grader
+									:grade="Number(item.product.price1Grade)"
+									:margin="14"
+								></uni-grader>
+							</view>
+						</template>
+						<template v-else>
+							<view class="p-stars"> <text class="p-no">¥登录可见</text> </view>
+						</template>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import uniGrader from '@/components/uni-grade/uni-grade.vue'
+export default {
+	name: 'templateD',
+	components: {
+		uniGrader
+	},
+	props: {
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			shopId: 0,
+			floorData: {}
+		}
+	},
+	filters: {
+		NumFormat: function(text) {
+			//处理金额
+			return Number(text).toFixed(2)
+		}
+	},
+	created() {
+		this.initData(this.pageData)
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo', 'isActivity'])
+	},
+	watch: {
+		pageData: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.pageData = el
+				this.initData(this.pageData)
+			},
+			deep: true
+		}
+	},
+	methods: {
+		initData(data) {
+			this.$api.getStorage().then(resolve => {
+				this.shopId = resolve.shopId ? resolve.shopId : 0
+			})
+			this.floorData = data
+			// console.log(this.floorData)
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
+				}
+			}
+			return false
+		},
+		navToDetailPage(pros) {
+			//跳转商品详情页
+			this.$api.FlooryNavigateTo(pros)
+		},
+		BannerNavigateTo(linkType, linkId, linkHref, keyword) {
+			//跳转商品详情页
+			this.$api.BannerNavigateTo(linkType, linkId, linkHref, keyword)
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.section_page_main {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	
+	.floor-item-ad{
+		width: 100%;
+		margin-bottom: 24rpx;
+		.floor-item-left,.floor_item_right{
+			width: 339rpx;
+			height: 516rpx;
+		}
+		.floor-item-left{
+			margin-right: 20rpx;
+			float: left;
+			.item-img-gg{
+				width: 339rpx;
+				height: 516rpx;
+				border-radius: 16rpx;
+			}
+		}
+		.floor_item_right{
+			float: left;
+			.item-img-gg {
+				width: 100%;
+				height: 246rpx;
+				display: block;
+				border-radius: 16rpx;
+				&:nth-child(1){
+					margin-bottom:24rpx;
+				}
+			}
+		}
+	}
+	.floor-item {
+		width: 339rpx;
+		height: 516rpx;
+		margin-right: 20rpx;
+		font-size: $font-size-24;
+		color: $text-color;
+		background: #ffffff;
+		line-height: 36rpx;
+		border-radius: 16rpx;
+		margin-bottom: 20rpx;
+		float: left;
+		box-sizing: border-box;
+		position: relative;
+		
+		&:nth-child(odd) {
+			margin-right: 0;
+		}
+		.item-img-gg {
+			width: 339rpx;
+			height: 516rpx;
+			display: block;
+			border-radius: 16rpx;
+		}
+		.item-img {
+			width: 339rpx;
+			height: 339rpx;
+			border-radius: 16rpx 16rpx 0 0;
+			display: block;
+			margin-bottom: 8rpx;
+		}
+		.floor-item_tag {
+			width: 100%;
+			height: 32rpx;
+			float: left;
+			margin: 20rpx 0;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+			text {
+				display: inline-block;
+				padding: 0 8rpx;
+				border: 1px solid #e3ebf7;
+				border-radius: 8rpx;
+				color: #9aa5b5;
+				font-size: $font-size-22;
+				line-height: 32rpx;
+				text-align: center;
+				float: left;
+			}
+		}
+		.floor-item-content {
+			width: 100%;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+		}
+		.floor-item-act {
+			display: block;
+			width: 100%;
+			height: 32rpx;
+			text-align: center;
+			box-sizing: border-box;
+		}
+		.floor-tags {
+			height: 28rpx;
+			border-radius: 6rpx;
+			background-color: #ffffff;
+			line-height: 28rpx;
+			color: $color-system;
+			text-align: center;
+			display: inline-block;
+			padding: 0 16rpx;
+			font-size: $font-size-20;
+			border: 1px solid #e15616;
+			float: left;
+		}
+		.title-none {
+			font-size: $font-size-26;
+			color: #ff2a2a;
+			line-height: 54rpx;
+		}
+		.title {
+			width: 100%;
+			height: 70rpx;
+			display: flex;
+			line-height: 35rpx;
+			flex-direction: column;
+			margin: 8rpx 0;
+			padding: 0;
+			position: relative;
+			.mclap {
+				width: 100%;
+				line-height: 35rpx;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				word-break: break-all;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 2;
+				overflow: hidden;
+				font-size: 26rpx;
+				&.indent {
+					text-indent: 95rpx;
+				}
+			}
+			.mclap-tag {
+				display: block;
+				width: 84rpx;
+				height: 32rpx;
+				background-image: linear-gradient(270deg, #f9c023 0%, #f83600 100%);
+				border-radius: 4rpx 48rpx 4px 4px;
+				line-height: 32rpx;
+				font-size: $font-size-22;
+				color: #ffffff;
+				text-align: center;
+				position: absolute;
+				left: 0;
+				top: 0;
+			}
+		}
+		.no-price {
+			height: 54rpx;
+			line-height: 54rpx;
+			display: flex;
+			box-sizing: border-box;
+			.p-no {
+				font-size: $font-size-28;
+				color: $text-color;
+				display: block;
+				float: left;
+			}
+			.p-stars {
+				float: left;
+			}
+		}
+		.price {
+			color: #ff2a2a;
+			line-height: 54rpx;
+			&.none {
+				text-decoration: line-through;
+				color: #999999;
+			}
+			.sm {
+				font-size: $font-size-24;
+			}
+			.big {
+				font-size: $font-size-28;
+			}
+		}
+	}
+}
+</style>

+ 558 - 0
components/cm-module/pageFloorTemplate/templateK.vue

@@ -0,0 +1,558 @@
+<template>
+	<view class="section_page_main clearfix">
+		<view class="floor-item-ad clearfix">
+			<view class="floor-item-left">
+				<image
+					class="item-img-gg"
+					:src="floorData.floorContent.appletsAdsImage1"
+					@click="
+						BannerNavigateTo(
+							floorData.floorContent.linkType1,
+							floorData.floorContent.linkParam1.id
+								? floorData.floorContent.linkParam1.id
+								: '',
+							floorData.floorContent.adsLink1,
+							floorData.floorContent.linkParam1.keyword
+								? floorData.floorContent.linkParam1.keyword
+								: ''
+						)
+					"
+					mode="aspectFill"
+				>
+				</image>
+			</view>
+			<view class="floor_item_right">
+				<image
+					class="item-img-gg"
+					:src="floorData.floorContent.appletsAdsImage2"
+					@click="
+						BannerNavigateTo(
+							floorData.floorContent.linkType2,
+							floorData.floorContent.linkParam2.id
+								? floorData.floorContent.linkParam2.id
+								: '',
+							floorData.floorContent.adsLink2,
+							floorData.floorContent.linkParam2.keyword
+								? floorData.floorContent.linkParam2.keyword
+								: ''
+						)
+					"
+					mode="aspectFill"
+				>
+				</image>
+				<image
+					class="item-img-gg"
+					:src="floorData.floorContent.appletsAdsImage3"
+					@click="
+						BannerNavigateTo(
+							floorData.floorContent.linkType3,
+							floorData.floorContent.linkParam3.id
+								? floorData.floorContent.linkParam3.id
+								: '',
+							floorData.floorContent.adsLink3,
+							floorData.floorContent.linkParam3.keyword
+								? floorData.floorContent.linkParam3.keyword
+								: ''
+						)
+					"
+					mode="aspectFill"
+				>
+				</image>
+			</view>
+		</view>
+		
+		<view class="floor-item-ad ad-row2 clearfix">
+			<image
+				class="item-img-gg"
+				:src="floorData.floorContent.appletsAdsImage2"
+				@click="
+					BannerNavigateTo(
+						floorData.floorContent.linkType2,
+						floorData.floorContent.linkParam2.id
+							? floorData.floorContent.linkParam2.id
+							: '',
+						floorData.floorContent.adsLink2,
+						floorData.floorContent.linkParam2.keyword
+							? floorData.floorContent.linkParam2.keyword
+							: ''
+					)
+				"
+				mode="aspectFill"
+			>
+			</image>
+			<image
+				class="item-img-gg"
+				:src="floorData.floorContent.appletsAdsImage3"
+				@click="
+					BannerNavigateTo(
+						floorData.floorContent.linkType3,
+						floorData.floorContent.linkParam3.id
+							? floorData.floorContent.linkParam3.id
+							: '',
+						floorData.floorContent.adsLink3,
+						floorData.floorContent.linkParam3.keyword
+							? floorData.floorContent.linkParam3.keyword
+							: ''
+					)
+				"
+				mode="aspectFill"
+			>
+			</image>
+		</view>
+		
+		<view
+			class="floor-item ad_04 clearfix"
+			v-for="(item, idx) in floorData.floorImageList"
+			:key="idx"
+			@click.stop="navToDetailPage(item)"
+		>
+			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<view class="floor-item_tag" v-if="item.listType == 2">
+				<text>{{ item.label }}</text>
+			</view>
+			<view class="floor-item-content">
+				<view class="title tui-skeleton-rect">
+					<text class="mclap-tag" v-if="item.product.beautyActFlag == '1'">美博会</text>
+					<text class="mclap" :class="item.product.beautyActFlag == '1' ? 'indent' : ''"
+						>{{ item.name }}
+					</text>
+				</view>
+				<view class="floor-item-price" v-if="item.listType == 1">
+					<view class="floor-item-act">
+						<template v-if="userIdentity === 3">
+							<template v-if="item.product.actStatus === 1">
+								<view
+									class="floor-tags"
+									v-if="PromotionsFormat(item.product.promotions)"
+								>
+									{{ item.product.promotions.name }}
+									<text
+										v-if="
+											hasLogin &&
+												item.product.price1TextFlag != 1 &&
+												item.product.shopID == shopId
+										"
+										>:¥{{ item.product.retailPrice | NumFormat }}</text
+									>
+								</view>
+								<view class="floor-tags" v-else>{{
+									item.product.promotions.name
+								}}</view>
+							</template>
+							<template
+								v-if="
+									item.product.actStatus === 0 &&
+										item.product.ladderPriceFlag === 1
+								"
+							>
+								<view class="floor-tags">阶梯价格</view>
+							</template>
+						</template>
+						<template v-else>
+							<template v-if="item.product.actStatus === 1">
+								<view
+									class="floor-tags"
+									v-if="PromotionsFormat(item.product.promotions)"
+								>
+									{{ item.product.promotions.name }}
+									<text v-if="hasLogin && item.product.price1TextFlag != 1"
+										>:¥{{ item.product.retailPrice | NumFormat }}</text
+									>
+								</view>
+								<view class="floor-tags" v-else>{{
+									item.product.promotions.name
+								}}</view>
+							</template>
+							<template
+								v-if="
+									item.product.actStatus === 0 &&
+										item.product.ladderPriceFlag === 1
+								"
+							>
+								<view class="floor-tags">阶梯价格</view>
+							</template>
+						</template>
+					</view>
+					<view v-if="hasLogin">
+						<template v-if="item.product.productCategory == 1">
+							<template v-if="userIdentity == 3">
+								<template v-if="item.product.shopID == shopId">
+									<view
+										class="title-none"
+										v-if="item.product.price1TextFlag === '1'"
+									>
+										<text class="p big">¥未公开价格</text>
+									</view>
+									<view
+										class="price tui-skeleton-rect"
+										v-else
+										:class="
+											PromotionsFormat(item.product.promotions) ? 'none' : ''
+										"
+									>
+										<text class="p sm">¥</text>
+										<text class="p big">{{
+											(PromotionsFormat(item.product.promotions)
+												? item.product.price1
+												: item.product.retailPrice) | NumFormat
+										}}</text>
+									</view>
+								</template>
+								<template v-else>
+									<view class="no-price">
+										<view class="p-stars">
+											<text class="p-no">¥</text>
+											<uni-grader
+												:grade="Number(item.product.price1Grade)"
+												:margin="14"
+											></uni-grader>
+										</view>
+									</view>
+								</template>
+							</template>
+							<template v-else-if="userIdentity === 4">
+								<view class="title-none" v-if="item.product.price1TextFlag === '1'">
+									<text class="p big">¥未公开价格</text>
+								</view>
+								<view class="title-none" v-if="item.product.price1TextFlag === '2'">
+									<text class="p big">¥价格仅会员可见</text>
+								</view>
+								<view
+									class="price tui-skeleton-rect"
+									v-if="item.product.price1TextFlag === '0'"
+									:class="PromotionsFormat(item.product.promotions) ? 'none' : ''"
+								>
+									<text class="p sm">¥</text>
+									<text class="p big">{{
+										(PromotionsFormat(item.product.promotions)
+											? item.product.price1
+											: item.product.retailPrice) | NumFormat
+									}}</text>
+								</view>
+							</template>
+							<template v-else>
+								<view class="title-none" v-if="item.product.price1TextFlag === '1'">
+									<text class="p big">¥未公开价格</text>
+								</view>
+								<view
+									class="price tui-skeleton-rect"
+									v-else
+									:class="PromotionsFormat(item.product.promotions) ? 'none' : ''"
+								>
+									<text class="p sm">¥</text>
+									<text class="p big">{{
+										(PromotionsFormat(item.product.promotions)
+											? item.product.price1
+											: item.product.retailPrice) | NumFormat
+									}}</text>
+								</view>
+							</template>
+						</template>
+						<template v-else>
+							<view
+								class="price tui-skeleton-rect"
+								v-if="item.product.detailTalkFlag == '2'"
+							>
+								<text class="p sm">¥</text> <text class="p big">价格详聊</text>
+							</view>
+							<view class="price tui-skeleton-rect" v-else>
+								<text class="p sm">¥</text>
+								<text class="p big">{{
+									item.product.retailPrice | NumFormat
+								}}</text>
+							</view>
+						</template>
+					</view>
+					<view v-else class="no-price">
+						<template v-if="item.product.productCategory == 1">
+							<view class="p-stars">
+								<text class="p-no">¥</text>
+								<uni-grader
+									:grade="Number(item.product.price1Grade)"
+									:margin="14"
+								></uni-grader>
+							</view>
+						</template>
+						<template v-else>
+							<view class="p-stars"> <text class="p-no">¥登录可见</text> </view>
+						</template>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import uniGrader from '@/components/uni-grade/uni-grade.vue'
+export default {
+	name: 'templateD',
+	components: {
+		uniGrader
+	},
+	props: {
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			shopId: 0,
+			floorData: {}
+		}
+	},
+	filters: {
+		NumFormat: function(text) {
+			//处理金额
+			return Number(text).toFixed(2)
+		}
+	},
+	created() {
+		this.initData(this.pageData)
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo', 'isActivity'])
+	},
+	watch: {
+		pageData: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.pageData = el
+				this.initData(this.pageData)
+			},
+			deep: true
+		}
+	},
+	methods: {
+		initData(data) {
+			this.$api.getStorage().then(resolve => {
+				this.shopId = resolve.shopId ? resolve.shopId : 0
+			})
+			this.floorData = data
+			// console.log(this.floorData)
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
+				}
+			}
+			return false
+		},
+		navToDetailPage(pros) {
+			//跳转商品详情页
+			this.$api.FlooryNavigateTo(pros)
+		},
+		BannerNavigateTo(linkType, linkId, linkHref, keyword) {
+			//跳转商品详情页
+			this.$api.BannerNavigateTo(linkType, linkId, linkHref, keyword)
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.section_page_main {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	
+	.floor-item-ad{
+		width: 100%;
+		margin-bottom: 20rpx;
+		.floor-item-left,.floor_item_right{
+			width: 339rpx;
+			height: 516rpx;
+		}
+		.floor-item-left{
+			margin-right: 20rpx;
+			float: left;
+			.item-img-gg{
+				width: 339rpx;
+				height: 516rpx;
+				border-radius: 16rpx;
+			}
+		}
+		.floor_item_right{
+			float: left;
+			.item-img-gg {
+				width: 100%;
+				height: 246rpx;
+				display: block;
+				border-radius: 16rpx;
+				&:nth-child(1){
+					margin-bottom:24rpx;
+				}
+			}
+		}
+		&.ad-row2{
+			width: 100%;
+			margin: 24rpx 0;
+			.item-img-gg {
+				width: 339rpx;
+				height: 246rpx;
+				float: left;
+				display: block;
+				border-radius: 16rpx;
+				&:nth-child(1){
+					margin-right: 20rpx;
+				}
+			}
+		}
+	}
+	.floor-item {
+		width: 339rpx;
+		height: 516rpx;
+		margin-right: 20rpx;
+		font-size: $font-size-24;
+		color: $text-color;
+		background: #ffffff;
+		line-height: 36rpx;
+		border-radius: 16rpx;
+		margin-bottom: 20rpx;
+		float: left;
+		box-sizing: border-box;
+		position: relative;
+		
+		&:nth-child(even) {
+			margin-right: 0;
+		}
+		.item-img-gg {
+			width: 339rpx;
+			height: 516rpx;
+			display: block;
+			border-radius: 16rpx;
+		}
+		.item-img {
+			width: 339rpx;
+			height: 339rpx;
+			border-radius: 16rpx 16rpx 0 0;
+			display: block;
+			margin-bottom: 8rpx;
+		}
+		.floor-item_tag {
+			width: 100%;
+			height: 32rpx;
+			float: left;
+			margin: 20rpx 0;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+			text {
+				display: inline-block;
+				padding: 0 8rpx;
+				border: 1px solid #e3ebf7;
+				border-radius: 8rpx;
+				color: #9aa5b5;
+				font-size: $font-size-22;
+				line-height: 32rpx;
+				text-align: center;
+				float: left;
+			}
+		}
+		.floor-item-content {
+			width: 100%;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+		}
+		.floor-item-act {
+			display: block;
+			width: 100%;
+			height: 32rpx;
+			text-align: center;
+			box-sizing: border-box;
+		}
+		.floor-tags {
+			height: 28rpx;
+			border-radius: 6rpx;
+			background-color: #ffffff;
+			line-height: 28rpx;
+			color: $color-system;
+			text-align: center;
+			display: inline-block;
+			padding: 0 16rpx;
+			font-size: $font-size-20;
+			border: 1px solid #e15616;
+			float: left;
+		}
+		.title-none {
+			font-size: $font-size-26;
+			color: #ff2a2a;
+			line-height: 54rpx;
+		}
+		.title {
+			width: 100%;
+			height: 70rpx;
+			display: flex;
+			line-height: 35rpx;
+			flex-direction: column;
+			margin: 8rpx 0;
+			padding: 0;
+			position: relative;
+			.mclap {
+				width: 100%;
+				line-height: 35rpx;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				word-break: break-all;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 2;
+				overflow: hidden;
+				font-size: 26rpx;
+				&.indent {
+					text-indent: 95rpx;
+				}
+			}
+			.mclap-tag {
+				display: block;
+				width: 84rpx;
+				height: 32rpx;
+				background-image: linear-gradient(270deg, #f9c023 0%, #f83600 100%);
+				border-radius: 4rpx 48rpx 4px 4px;
+				line-height: 32rpx;
+				font-size: $font-size-22;
+				color: #ffffff;
+				text-align: center;
+				position: absolute;
+				left: 0;
+				top: 0;
+			}
+		}
+		.no-price {
+			height: 54rpx;
+			line-height: 54rpx;
+			display: flex;
+			box-sizing: border-box;
+			.p-no {
+				font-size: $font-size-28;
+				color: $text-color;
+				display: block;
+				float: left;
+			}
+			.p-stars {
+				float: left;
+			}
+		}
+		.price {
+			color: #ff2a2a;
+			line-height: 54rpx;
+			&.none {
+				text-decoration: line-through;
+				color: #999999;
+			}
+			.sm {
+				font-size: $font-size-24;
+			}
+			.big {
+				font-size: $font-size-28;
+			}
+		}
+	}
+}
+</style>

+ 490 - 0
components/cm-module/pageTemplate/templateI.vue

@@ -0,0 +1,490 @@
+<template>
+	<view class="section_page_main clearfix">
+		<view class="floor-item ad_01">
+			<image
+				class="item-img-gg"
+				:src="floorData.floorContent.appletsAdsImage1"
+				@click="
+					BannerNavigateTo(
+						floorData.floorContent.linkType1,
+						floorData.floorContent.linkParam1.id
+							? floorData.floorContent.linkParam1.id
+							: '',
+						floorData.floorContent.adsLink1,
+						floorData.floorContent.linkParam1.keyword
+							? floorData.floorContent.linkParam1.keyword
+							: ''
+					)
+				"
+				mode="aspectFill"
+			>
+			</image>
+		</view>
+		<view class="floor-item ad_02">
+			<image
+				class="item-img-gg"
+				:src="floorData.floorContent.appletsAdsImage2"
+				@click="
+					BannerNavigateTo(
+						floorData.floorContent.linkType2,
+						floorData.floorContent.linkParam2.id
+							? floorData.floorContent.linkParam2.id
+							: '',
+						floorData.floorContent.adsLink2,
+						floorData.floorContent.linkParam2.keyword
+							? floorData.floorContent.linkParam2.keyword
+							: ''
+					)
+				"
+				mode="aspectFill"
+			>
+			</image>
+		</view>
+		<view class="floor-item ad_03">
+			<image
+				class="item-img-gg"
+				:src="floorData.floorContent.appletsAdsImage3"
+				@click="
+					BannerNavigateTo(
+						floorData.floorContent.linkType3,
+						floorData.floorContent.linkParam3.id
+							? floorData.floorContent.linkParam3.id
+							: '',
+						floorData.floorContent.adsLink3,
+						floorData.floorContent.linkParam3.keyword
+							? floorData.floorContent.linkParam3.keyword
+							: ''
+					)
+				"
+				mode="aspectFill"
+			>
+			</image>
+		</view>
+		<view
+			class="floor-item ad_04 clearfix"
+			v-for="(item, idx) in floorData.floorImageList"
+			v-if="idx < 2"
+			:key="idx"
+			@click.stop="navToDetailPage(item)"
+		>
+			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<view class="floor-item_tag" v-if="item.listType == 2">
+				<text>{{ item.label }}</text>
+			</view>
+			<view class="floor-item-content">
+				<view class="title tui-skeleton-rect">
+					<text class="mclap-tag" v-if="item.product.beautyActFlag == '1'">美博会</text>
+					<text class="mclap" :class="item.product.beautyActFlag == '1' ? 'indent' : ''"
+						>{{ item.name }}
+					</text>
+				</view>
+				<view class="floor-item-price" v-if="item.listType == 1">
+					<view class="floor-item-act">
+						<template v-if="userIdentity === 3">
+							<template v-if="item.product.actStatus === 1">
+								<view
+									class="floor-tags"
+									v-if="PromotionsFormat(item.product.promotions)"
+								>
+									{{ item.product.promotions.name }}
+									<text
+										v-if="
+											hasLogin &&
+												item.product.price1TextFlag != 1 &&
+												item.product.shopID == shopId
+										"
+										>:¥{{ item.product.retailPrice | NumFormat }}</text
+									>
+								</view>
+								<view class="floor-tags" v-else>{{
+									item.product.promotions.name
+								}}</view>
+							</template>
+							<template
+								v-if="
+									item.product.actStatus === 0 &&
+										item.product.ladderPriceFlag === 1
+								"
+							>
+								<view class="floor-tags">阶梯价格</view>
+							</template>
+						</template>
+						<template v-else>
+							<template v-if="item.product.actStatus === 1">
+								<view
+									class="floor-tags"
+									v-if="PromotionsFormat(item.product.promotions)"
+								>
+									{{ item.product.promotions.name }}
+									<text v-if="hasLogin && item.product.price1TextFlag != 1"
+										>:¥{{ item.product.retailPrice | NumFormat }}</text
+									>
+								</view>
+								<view class="floor-tags" v-else>{{
+									item.product.promotions.name
+								}}</view>
+							</template>
+							<template
+								v-if="
+									item.product.actStatus === 0 &&
+										item.product.ladderPriceFlag === 1
+								"
+							>
+								<view class="floor-tags">阶梯价格</view>
+							</template>
+						</template>
+					</view>
+					<view v-if="hasLogin">
+						<template v-if="item.product.productCategory == 1">
+							<template v-if="userIdentity == 3">
+								<template v-if="item.product.shopID == shopId">
+									<view
+										class="title-none"
+										v-if="item.product.price1TextFlag === '1'"
+									>
+										<text class="p big">¥未公开价格</text>
+									</view>
+									<view
+										class="price tui-skeleton-rect"
+										v-else
+										:class="
+											PromotionsFormat(item.product.promotions) ? 'none' : ''
+										"
+									>
+										<text class="p sm">¥</text>
+										<text class="p big">{{
+											(PromotionsFormat(item.product.promotions)
+												? item.product.price1
+												: item.product.retailPrice) | NumFormat
+										}}</text>
+									</view>
+								</template>
+								<template v-else>
+									<view class="no-price">
+										<view class="p-stars">
+											<text class="p-no">¥</text>
+											<uni-grader
+												:grade="Number(item.product.price1Grade)"
+												:margin="14"
+											></uni-grader>
+										</view>
+									</view>
+								</template>
+							</template>
+							<template v-else-if="userIdentity === 4">
+								<view class="title-none" v-if="item.product.price1TextFlag === '1'">
+									<text class="p big">¥未公开价格</text>
+								</view>
+								<view class="title-none" v-if="item.product.price1TextFlag === '2'">
+									<text class="p big">¥价格仅会员可见</text>
+								</view>
+								<view
+									class="price tui-skeleton-rect"
+									v-if="item.product.price1TextFlag === '0'"
+									:class="PromotionsFormat(item.product.promotions) ? 'none' : ''"
+								>
+									<text class="p sm">¥</text>
+									<text class="p big">{{
+										(PromotionsFormat(item.product.promotions)
+											? item.product.price1
+											: item.product.retailPrice) | NumFormat
+									}}</text>
+								</view>
+							</template>
+							<template v-else>
+								<view class="title-none" v-if="item.product.price1TextFlag === '1'">
+									<text class="p big">¥未公开价格</text>
+								</view>
+								<view
+									class="price tui-skeleton-rect"
+									v-else
+									:class="PromotionsFormat(item.product.promotions) ? 'none' : ''"
+								>
+									<text class="p sm">¥</text>
+									<text class="p big">{{
+										(PromotionsFormat(item.product.promotions)
+											? item.product.price1
+											: item.product.retailPrice) | NumFormat
+									}}</text>
+								</view>
+							</template>
+						</template>
+						<template v-else>
+							<view
+								class="price tui-skeleton-rect"
+								v-if="item.product.detailTalkFlag == '2'"
+							>
+								<text class="p sm">¥</text> <text class="p big">价格详聊</text>
+							</view>
+							<view class="price tui-skeleton-rect" v-else>
+								<text class="p sm">¥</text>
+								<text class="p big">{{
+									item.product.retailPrice | NumFormat
+								}}</text>
+							</view>
+						</template>
+					</view>
+					<view v-else class="no-price">
+						<template v-if="item.product.productCategory == 1">
+							<view class="p-stars">
+								<text class="p-no">¥</text>
+								<uni-grader
+									:grade="Number(item.product.price1Grade)"
+									:margin="14"
+								></uni-grader>
+							</view>
+						</template>
+						<template v-else>
+							<view class="p-stars"> <text class="p-no">¥登录可见</text> </view>
+						</template>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import uniGrader from '@/components/uni-grade/uni-grade.vue'
+export default {
+	name: 'templateD',
+	components: {
+		uniGrader
+	},
+	props: {
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			shopId: 0,
+			floorData: {}
+		}
+	},
+	filters: {
+		NumFormat: function(text) {
+			//处理金额
+			return Number(text).toFixed(2)
+		}
+	},
+	created() {
+		this.initData(this.pageData)
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo', 'isActivity'])
+	},
+	watch: {
+		pageData: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.pageData = el
+				this.initData(this.pageData)
+			},
+			deep: true
+		}
+	},
+	methods: {
+		initData(data) {
+			this.$api.getStorage().then(resolve => {
+				this.shopId = resolve.shopId ? resolve.shopId : 0
+			})
+			this.floorData = data
+			// console.log(this.floorData)
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
+				}
+			}
+			return false
+		},
+		navToDetailPage(pros) {
+			//跳转商品详情页
+			this.$api.FlooryNavigateTo(pros)
+		},
+		BannerNavigateTo(linkType, linkId, linkHref, keyword) {
+			//跳转商品详情页
+			this.$api.BannerNavigateTo(linkType, linkId, linkHref, keyword)
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.section_page_main {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	.floor-item {
+		width: 339rpx;
+		height: 516rpx;
+		margin-right: 20rpx;
+		font-size: $font-size-24;
+		color: $text-color;
+		background: #ffffff;
+		line-height: 36rpx;
+		border-radius: 16rpx;
+		margin-bottom: 20rpx;
+		float: left;
+		box-sizing: border-box;
+		position: relative;
+		&.ad_01 {
+			width: 100%;
+			height: 240rpx;
+			margin-right: 0;
+			.item-img-gg {
+				width: 100%;
+				height: 240rpx;
+				display: block;
+				border-radius: 16rpx;
+			}
+		}
+		&:nth-child(odd) {
+			margin-right: 0;
+		}
+
+		&.ad_02,&.ad_03{
+			width: 339rpx;
+			height: 260rpx;
+			.item-img-gg {
+				width: 339rpx;
+				height: 260rpx;
+				display: block;
+				border-radius: 16rpx;
+			}
+		}
+		.item-img {
+			width: 339rpx;
+			height: 339rpx;
+			border-radius: 16rpx 16rpx 0 0;
+			display: block;
+			margin-bottom: 8rpx;
+		}
+		.floor-item_tag {
+			width: 100%;
+			height: 32rpx;
+			float: left;
+			margin: 20rpx 0;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+			text {
+				display: inline-block;
+				padding: 0 8rpx;
+				border: 1px solid #e3ebf7;
+				border-radius: 8rpx;
+				color: #9aa5b5;
+				font-size: $font-size-22;
+				line-height: 32rpx;
+				text-align: center;
+				float: left;
+			}
+		}
+		.floor-item-content {
+			width: 100%;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+		}
+		.floor-item-act {
+			display: block;
+			width: 100%;
+			height: 32rpx;
+			text-align: center;
+			box-sizing: border-box;
+		}
+		.floor-tags {
+			height: 28rpx;
+			border-radius: 6rpx;
+			background-color: #ffffff;
+			line-height: 28rpx;
+			color: $color-system;
+			text-align: center;
+			display: inline-block;
+			padding: 0 16rpx;
+			font-size: $font-size-20;
+			border: 1px solid #e15616;
+			float: left;
+		}
+		.title-none {
+			font-size: $font-size-26;
+			color: #ff2a2a;
+			line-height: 54rpx;
+		}
+		.title {
+			width: 100%;
+			height: 70rpx;
+			display: flex;
+			line-height: 35rpx;
+			flex-direction: column;
+			margin: 8rpx 0;
+			padding: 0;
+			position: relative;
+			.mclap {
+				width: 100%;
+				line-height: 35rpx;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				word-break: break-all;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 2;
+				overflow: hidden;
+				font-size: 26rpx;
+				&.indent {
+					text-indent: 95rpx;
+				}
+			}
+			.mclap-tag {
+				display: block;
+				width: 84rpx;
+				height: 32rpx;
+				background-image: linear-gradient(270deg, #f9c023 0%, #f83600 100%);
+				border-radius: 4rpx 48rpx 4px 4px;
+				line-height: 32rpx;
+				font-size: $font-size-22;
+				color: #ffffff;
+				text-align: center;
+				position: absolute;
+				left: 0;
+				top: 0;
+			}
+		}
+		.no-price {
+			height: 54rpx;
+			line-height: 54rpx;
+			display: flex;
+			box-sizing: border-box;
+			.p-no {
+				font-size: $font-size-28;
+				color: $text-color;
+				display: block;
+				float: left;
+			}
+			.p-stars {
+				float: left;
+			}
+		}
+		.price {
+			color: #ff2a2a;
+			line-height: 54rpx;
+			&.none {
+				text-decoration: line-through;
+				color: #999999;
+			}
+			.sm {
+				font-size: $font-size-24;
+			}
+			.big {
+				font-size: $font-size-28;
+			}
+		}
+	}
+}
+</style>

+ 506 - 0
components/cm-module/pageTemplate/templateJ.vue

@@ -0,0 +1,506 @@
+<template>
+	<view class="section_page_main clearfix">
+		<view class="floor-item-ad clearfix">
+			<view class="floor-item-left">
+				<image
+					class="item-img-gg"
+					:src="floorData.floorContent.appletsAdsImage1"
+					@click="
+						BannerNavigateTo(
+							floorData.floorContent.linkType1,
+							floorData.floorContent.linkParam1.id
+								? floorData.floorContent.linkParam1.id
+								: '',
+							floorData.floorContent.adsLink1,
+							floorData.floorContent.linkParam1.keyword
+								? floorData.floorContent.linkParam1.keyword
+								: ''
+						)
+					"
+					mode="aspectFill"
+				>
+				</image>
+			</view>
+			<view class="floor_item_right">
+				<image
+					class="item-img-gg"
+					:src="floorData.floorContent.appletsAdsImage2"
+					@click="
+						BannerNavigateTo(
+							floorData.floorContent.linkType2,
+							floorData.floorContent.linkParam2.id
+								? floorData.floorContent.linkParam2.id
+								: '',
+							floorData.floorContent.adsLink2,
+							floorData.floorContent.linkParam2.keyword
+								? floorData.floorContent.linkParam2.keyword
+								: ''
+						)
+					"
+					mode="aspectFill"
+				>
+				</image>
+				<image
+					class="item-img-gg"
+					:src="floorData.floorContent.appletsAdsImage3"
+					@click="
+						BannerNavigateTo(
+							floorData.floorContent.linkType3,
+							floorData.floorContent.linkParam3.id
+								? floorData.floorContent.linkParam3.id
+								: '',
+							floorData.floorContent.adsLink3,
+							floorData.floorContent.linkParam3.keyword
+								? floorData.floorContent.linkParam3.keyword
+								: ''
+						)
+					"
+					mode="aspectFill"
+				>
+				</image>
+			</view>
+		</view>
+
+		<view
+			class="floor-item ad_04 clearfix"
+			v-for="(item, idx) in floorData.floorImageList"
+			v-if="idx < 2"
+			:key="idx"
+			@click.stop="navToDetailPage(item)"
+		>
+			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<view class="floor-item_tag" v-if="item.listType == 2">
+				<text>{{ item.label }}</text>
+			</view>
+			<view class="floor-item-content">
+				<view class="title tui-skeleton-rect">
+					<text class="mclap-tag" v-if="item.product.beautyActFlag == '1'">美博会</text>
+					<text class="mclap" :class="item.product.beautyActFlag == '1' ? 'indent' : ''"
+						>{{ item.name }}
+					</text>
+				</view>
+				<view class="floor-item-price" v-if="item.listType == 1">
+					<view class="floor-item-act">
+						<template v-if="userIdentity === 3">
+							<template v-if="item.product.actStatus === 1">
+								<view
+									class="floor-tags"
+									v-if="PromotionsFormat(item.product.promotions)"
+								>
+									{{ item.product.promotions.name }}
+									<text
+										v-if="
+											hasLogin &&
+												item.product.price1TextFlag != 1 &&
+												item.product.shopID == shopId
+										"
+										>:¥{{ item.product.retailPrice | NumFormat }}</text
+									>
+								</view>
+								<view class="floor-tags" v-else>{{
+									item.product.promotions.name
+								}}</view>
+							</template>
+							<template
+								v-if="
+									item.product.actStatus === 0 &&
+										item.product.ladderPriceFlag === 1
+								"
+							>
+								<view class="floor-tags">阶梯价格</view>
+							</template>
+						</template>
+						<template v-else>
+							<template v-if="item.product.actStatus === 1">
+								<view
+									class="floor-tags"
+									v-if="PromotionsFormat(item.product.promotions)"
+								>
+									{{ item.product.promotions.name }}
+									<text v-if="hasLogin && item.product.price1TextFlag != 1"
+										>:¥{{ item.product.retailPrice | NumFormat }}</text
+									>
+								</view>
+								<view class="floor-tags" v-else>{{
+									item.product.promotions.name
+								}}</view>
+							</template>
+							<template
+								v-if="
+									item.product.actStatus === 0 &&
+										item.product.ladderPriceFlag === 1
+								"
+							>
+								<view class="floor-tags">阶梯价格</view>
+							</template>
+						</template>
+					</view>
+					<view v-if="hasLogin">
+						<template v-if="item.product.productCategory == 1">
+							<template v-if="userIdentity == 3">
+								<template v-if="item.product.shopID == shopId">
+									<view
+										class="title-none"
+										v-if="item.product.price1TextFlag === '1'"
+									>
+										<text class="p big">¥未公开价格</text>
+									</view>
+									<view
+										class="price tui-skeleton-rect"
+										v-else
+										:class="
+											PromotionsFormat(item.product.promotions) ? 'none' : ''
+										"
+									>
+										<text class="p sm">¥</text>
+										<text class="p big">{{
+											(PromotionsFormat(item.product.promotions)
+												? item.product.price1
+												: item.product.retailPrice) | NumFormat
+										}}</text>
+									</view>
+								</template>
+								<template v-else>
+									<view class="no-price">
+										<view class="p-stars">
+											<text class="p-no">¥</text>
+											<uni-grader
+												:grade="Number(item.product.price1Grade)"
+												:margin="14"
+											></uni-grader>
+										</view>
+									</view>
+								</template>
+							</template>
+							<template v-else-if="userIdentity === 4">
+								<view class="title-none" v-if="item.product.price1TextFlag === '1'">
+									<text class="p big">¥未公开价格</text>
+								</view>
+								<view class="title-none" v-if="item.product.price1TextFlag === '2'">
+									<text class="p big">¥价格仅会员可见</text>
+								</view>
+								<view
+									class="price tui-skeleton-rect"
+									v-if="item.product.price1TextFlag === '0'"
+									:class="PromotionsFormat(item.product.promotions) ? 'none' : ''"
+								>
+									<text class="p sm">¥</text>
+									<text class="p big">{{
+										(PromotionsFormat(item.product.promotions)
+											? item.product.price1
+											: item.product.retailPrice) | NumFormat
+									}}</text>
+								</view>
+							</template>
+							<template v-else>
+								<view class="title-none" v-if="item.product.price1TextFlag === '1'">
+									<text class="p big">¥未公开价格</text>
+								</view>
+								<view
+									class="price tui-skeleton-rect"
+									v-else
+									:class="PromotionsFormat(item.product.promotions) ? 'none' : ''"
+								>
+									<text class="p sm">¥</text>
+									<text class="p big">{{
+										(PromotionsFormat(item.product.promotions)
+											? item.product.price1
+											: item.product.retailPrice) | NumFormat
+									}}</text>
+								</view>
+							</template>
+						</template>
+						<template v-else>
+							<view
+								class="price tui-skeleton-rect"
+								v-if="item.product.detailTalkFlag == '2'"
+							>
+								<text class="p sm">¥</text> <text class="p big">价格详聊</text>
+							</view>
+							<view class="price tui-skeleton-rect" v-else>
+								<text class="p sm">¥</text>
+								<text class="p big">{{
+									item.product.retailPrice | NumFormat
+								}}</text>
+							</view>
+						</template>
+					</view>
+					<view v-else class="no-price">
+						<template v-if="item.product.productCategory == 1">
+							<view class="p-stars">
+								<text class="p-no">¥</text>
+								<uni-grader
+									:grade="Number(item.product.price1Grade)"
+									:margin="14"
+								></uni-grader>
+							</view>
+						</template>
+						<template v-else>
+							<view class="p-stars"> <text class="p-no">¥登录可见</text> </view>
+						</template>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import uniGrader from '@/components/uni-grade/uni-grade.vue'
+export default {
+	name: 'templateD',
+	components: {
+		uniGrader
+	},
+	props: {
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			shopId: 0,
+			floorData: {}
+		}
+	},
+	filters: {
+		NumFormat: function(text) {
+			//处理金额
+			return Number(text).toFixed(2)
+		}
+	},
+	created() {
+		this.initData(this.pageData)
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo', 'isActivity'])
+	},
+	watch: {
+		pageData: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.pageData = el
+				this.initData(this.pageData)
+			},
+			deep: true
+		}
+	},
+	methods: {
+		initData(data) {
+			this.$api.getStorage().then(resolve => {
+				this.shopId = resolve.shopId ? resolve.shopId : 0
+			})
+			this.floorData = data
+			// console.log(this.floorData)
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
+				}
+			}
+			return false
+		},
+		navToDetailPage(pros) {
+			//跳转商品详情页
+			this.$api.FlooryNavigateTo(pros)
+		},
+		BannerNavigateTo(linkType, linkId, linkHref, keyword) {
+			//跳转商品详情页
+			this.$api.BannerNavigateTo(linkType, linkId, linkHref, keyword)
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.section_page_main {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	
+	.floor-item-ad{
+		width: 100%;
+		margin-bottom: 24rpx;
+		.floor-item-left,.floor_item_right{
+			width: 339rpx;
+			height: 516rpx;
+		}
+		.floor-item-left{
+			margin-right: 20rpx;
+			float: left;
+			.item-img-gg{
+				width: 339rpx;
+				height: 516rpx;
+				border-radius: 16rpx;
+			}
+		}
+		.floor_item_right{
+			float: left;
+			.item-img-gg {
+				width: 100%;
+				height: 246rpx;
+				display: block;
+				border-radius: 16rpx;
+				&:nth-child(1){
+					margin-bottom:24rpx;
+				}
+			}
+		}
+	}
+	.floor-item {
+		width: 339rpx;
+		height: 516rpx;
+		margin-right: 20rpx;
+		font-size: $font-size-24;
+		color: $text-color;
+		background: #ffffff;
+		line-height: 36rpx;
+		border-radius: 16rpx;
+		margin-bottom: 20rpx;
+		float: left;
+		box-sizing: border-box;
+		position: relative;
+		
+		&:nth-child(odd) {
+			margin-right: 0;
+		}
+		.item-img-gg {
+			width: 339rpx;
+			height: 516rpx;
+			display: block;
+			border-radius: 16rpx;
+		}
+		.item-img {
+			width: 339rpx;
+			height: 339rpx;
+			border-radius: 16rpx 16rpx 0 0;
+			display: block;
+			margin-bottom: 8rpx;
+		}
+		.floor-item_tag {
+			width: 100%;
+			height: 32rpx;
+			float: left;
+			margin: 20rpx 0;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+			text {
+				display: inline-block;
+				padding: 0 8rpx;
+				border: 1px solid #e3ebf7;
+				border-radius: 8rpx;
+				color: #9aa5b5;
+				font-size: $font-size-22;
+				line-height: 32rpx;
+				text-align: center;
+				float: left;
+			}
+		}
+		.floor-item-content {
+			width: 100%;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+		}
+		.floor-item-act {
+			display: block;
+			width: 100%;
+			height: 32rpx;
+			text-align: center;
+			box-sizing: border-box;
+		}
+		.floor-tags {
+			height: 28rpx;
+			border-radius: 6rpx;
+			background-color: #ffffff;
+			line-height: 28rpx;
+			color: $color-system;
+			text-align: center;
+			display: inline-block;
+			padding: 0 16rpx;
+			font-size: $font-size-20;
+			border: 1px solid #e15616;
+			float: left;
+		}
+		.title-none {
+			font-size: $font-size-26;
+			color: #ff2a2a;
+			line-height: 54rpx;
+		}
+		.title {
+			width: 100%;
+			height: 70rpx;
+			display: flex;
+			line-height: 35rpx;
+			flex-direction: column;
+			margin: 8rpx 0;
+			padding: 0;
+			position: relative;
+			.mclap {
+				width: 100%;
+				line-height: 35rpx;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				word-break: break-all;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 2;
+				overflow: hidden;
+				font-size: 26rpx;
+				&.indent {
+					text-indent: 95rpx;
+				}
+			}
+			.mclap-tag {
+				display: block;
+				width: 84rpx;
+				height: 32rpx;
+				background-image: linear-gradient(270deg, #f9c023 0%, #f83600 100%);
+				border-radius: 4rpx 48rpx 4px 4px;
+				line-height: 32rpx;
+				font-size: $font-size-22;
+				color: #ffffff;
+				text-align: center;
+				position: absolute;
+				left: 0;
+				top: 0;
+			}
+		}
+		.no-price {
+			height: 54rpx;
+			line-height: 54rpx;
+			display: flex;
+			box-sizing: border-box;
+			.p-no {
+				font-size: $font-size-28;
+				color: $text-color;
+				display: block;
+				float: left;
+			}
+			.p-stars {
+				float: left;
+			}
+		}
+		.price {
+			color: #ff2a2a;
+			line-height: 54rpx;
+			&.none {
+				text-decoration: line-through;
+				color: #999999;
+			}
+			.sm {
+				font-size: $font-size-24;
+			}
+			.big {
+				font-size: $font-size-28;
+			}
+		}
+	}
+}
+</style>

+ 559 - 0
components/cm-module/pageTemplate/templateK.vue

@@ -0,0 +1,559 @@
+<template>
+	<view class="section_page_main clearfix">
+		<view class="floor-item-ad clearfix">
+			<view class="floor-item-left">
+				<image
+					class="item-img-gg"
+					:src="floorData.floorContent.appletsAdsImage1"
+					@click="
+						BannerNavigateTo(
+							floorData.floorContent.linkType1,
+							floorData.floorContent.linkParam1.id
+								? floorData.floorContent.linkParam1.id
+								: '',
+							floorData.floorContent.adsLink1,
+							floorData.floorContent.linkParam1.keyword
+								? floorData.floorContent.linkParam1.keyword
+								: ''
+						)
+					"
+					mode="aspectFill"
+				>
+				</image>
+			</view>
+			<view class="floor_item_right">
+				<image
+					class="item-img-gg"
+					:src="floorData.floorContent.appletsAdsImage2"
+					@click="
+						BannerNavigateTo(
+							floorData.floorContent.linkType2,
+							floorData.floorContent.linkParam2.id
+								? floorData.floorContent.linkParam2.id
+								: '',
+							floorData.floorContent.adsLink2,
+							floorData.floorContent.linkParam2.keyword
+								? floorData.floorContent.linkParam2.keyword
+								: ''
+						)
+					"
+					mode="aspectFill"
+				>
+				</image>
+				<image
+					class="item-img-gg"
+					:src="floorData.floorContent.appletsAdsImage3"
+					@click="
+						BannerNavigateTo(
+							floorData.floorContent.linkType3,
+							floorData.floorContent.linkParam3.id
+								? floorData.floorContent.linkParam3.id
+								: '',
+							floorData.floorContent.adsLink3,
+							floorData.floorContent.linkParam3.keyword
+								? floorData.floorContent.linkParam3.keyword
+								: ''
+						)
+					"
+					mode="aspectFill"
+				>
+				</image>
+			</view>
+		</view>
+		
+		<view class="floor-item-ad ad-row2 clearfix">
+			<image
+				class="item-img-gg"
+				:src="floorData.floorContent.appletsAdsImage2"
+				@click="
+					BannerNavigateTo(
+						floorData.floorContent.linkType2,
+						floorData.floorContent.linkParam2.id
+							? floorData.floorContent.linkParam2.id
+							: '',
+						floorData.floorContent.adsLink2,
+						floorData.floorContent.linkParam2.keyword
+							? floorData.floorContent.linkParam2.keyword
+							: ''
+					)
+				"
+				mode="aspectFill"
+			>
+			</image>
+			<image
+				class="item-img-gg"
+				:src="floorData.floorContent.appletsAdsImage3"
+				@click="
+					BannerNavigateTo(
+						floorData.floorContent.linkType3,
+						floorData.floorContent.linkParam3.id
+							? floorData.floorContent.linkParam3.id
+							: '',
+						floorData.floorContent.adsLink3,
+						floorData.floorContent.linkParam3.keyword
+							? floorData.floorContent.linkParam3.keyword
+							: ''
+					)
+				"
+				mode="aspectFill"
+			>
+			</image>
+		</view>
+		
+		<view
+			class="floor-item ad_04 clearfix"
+			v-for="(item, idx) in floorData.floorImageList"
+			v-if="idx < 2"
+			:key="idx"
+			@click.stop="navToDetailPage(item)"
+		>
+			<image class="item-img tui-skeleton-fillet" :src="item.image" mode="aspectFill"></image>
+			<view class="floor-item_tag" v-if="item.listType == 2">
+				<text>{{ item.label }}</text>
+			</view>
+			<view class="floor-item-content">
+				<view class="title tui-skeleton-rect">
+					<text class="mclap-tag" v-if="item.product.beautyActFlag == '1'">美博会</text>
+					<text class="mclap" :class="item.product.beautyActFlag == '1' ? 'indent' : ''"
+						>{{ item.name }}
+					</text>
+				</view>
+				<view class="floor-item-price" v-if="item.listType == 1">
+					<view class="floor-item-act">
+						<template v-if="userIdentity === 3">
+							<template v-if="item.product.actStatus === 1">
+								<view
+									class="floor-tags"
+									v-if="PromotionsFormat(item.product.promotions)"
+								>
+									{{ item.product.promotions.name }}
+									<text
+										v-if="
+											hasLogin &&
+												item.product.price1TextFlag != 1 &&
+												item.product.shopID == shopId
+										"
+										>:¥{{ item.product.retailPrice | NumFormat }}</text
+									>
+								</view>
+								<view class="floor-tags" v-else>{{
+									item.product.promotions.name
+								}}</view>
+							</template>
+							<template
+								v-if="
+									item.product.actStatus === 0 &&
+										item.product.ladderPriceFlag === 1
+								"
+							>
+								<view class="floor-tags">阶梯价格</view>
+							</template>
+						</template>
+						<template v-else>
+							<template v-if="item.product.actStatus === 1">
+								<view
+									class="floor-tags"
+									v-if="PromotionsFormat(item.product.promotions)"
+								>
+									{{ item.product.promotions.name }}
+									<text v-if="hasLogin && item.product.price1TextFlag != 1"
+										>:¥{{ item.product.retailPrice | NumFormat }}</text
+									>
+								</view>
+								<view class="floor-tags" v-else>{{
+									item.product.promotions.name
+								}}</view>
+							</template>
+							<template
+								v-if="
+									item.product.actStatus === 0 &&
+										item.product.ladderPriceFlag === 1
+								"
+							>
+								<view class="floor-tags">阶梯价格</view>
+							</template>
+						</template>
+					</view>
+					<view v-if="hasLogin">
+						<template v-if="item.product.productCategory == 1">
+							<template v-if="userIdentity == 3">
+								<template v-if="item.product.shopID == shopId">
+									<view
+										class="title-none"
+										v-if="item.product.price1TextFlag === '1'"
+									>
+										<text class="p big">¥未公开价格</text>
+									</view>
+									<view
+										class="price tui-skeleton-rect"
+										v-else
+										:class="
+											PromotionsFormat(item.product.promotions) ? 'none' : ''
+										"
+									>
+										<text class="p sm">¥</text>
+										<text class="p big">{{
+											(PromotionsFormat(item.product.promotions)
+												? item.product.price1
+												: item.product.retailPrice) | NumFormat
+										}}</text>
+									</view>
+								</template>
+								<template v-else>
+									<view class="no-price">
+										<view class="p-stars">
+											<text class="p-no">¥</text>
+											<uni-grader
+												:grade="Number(item.product.price1Grade)"
+												:margin="14"
+											></uni-grader>
+										</view>
+									</view>
+								</template>
+							</template>
+							<template v-else-if="userIdentity === 4">
+								<view class="title-none" v-if="item.product.price1TextFlag === '1'">
+									<text class="p big">¥未公开价格</text>
+								</view>
+								<view class="title-none" v-if="item.product.price1TextFlag === '2'">
+									<text class="p big">¥价格仅会员可见</text>
+								</view>
+								<view
+									class="price tui-skeleton-rect"
+									v-if="item.product.price1TextFlag === '0'"
+									:class="PromotionsFormat(item.product.promotions) ? 'none' : ''"
+								>
+									<text class="p sm">¥</text>
+									<text class="p big">{{
+										(PromotionsFormat(item.product.promotions)
+											? item.product.price1
+											: item.product.retailPrice) | NumFormat
+									}}</text>
+								</view>
+							</template>
+							<template v-else>
+								<view class="title-none" v-if="item.product.price1TextFlag === '1'">
+									<text class="p big">¥未公开价格</text>
+								</view>
+								<view
+									class="price tui-skeleton-rect"
+									v-else
+									:class="PromotionsFormat(item.product.promotions) ? 'none' : ''"
+								>
+									<text class="p sm">¥</text>
+									<text class="p big">{{
+										(PromotionsFormat(item.product.promotions)
+											? item.product.price1
+											: item.product.retailPrice) | NumFormat
+									}}</text>
+								</view>
+							</template>
+						</template>
+						<template v-else>
+							<view
+								class="price tui-skeleton-rect"
+								v-if="item.product.detailTalkFlag == '2'"
+							>
+								<text class="p sm">¥</text> <text class="p big">价格详聊</text>
+							</view>
+							<view class="price tui-skeleton-rect" v-else>
+								<text class="p sm">¥</text>
+								<text class="p big">{{
+									item.product.retailPrice | NumFormat
+								}}</text>
+							</view>
+						</template>
+					</view>
+					<view v-else class="no-price">
+						<template v-if="item.product.productCategory == 1">
+							<view class="p-stars">
+								<text class="p-no">¥</text>
+								<uni-grader
+									:grade="Number(item.product.price1Grade)"
+									:margin="14"
+								></uni-grader>
+							</view>
+						</template>
+						<template v-else>
+							<view class="p-stars"> <text class="p-no">¥登录可见</text> </view>
+						</template>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import uniGrader from '@/components/uni-grade/uni-grade.vue'
+export default {
+	name: 'templateD',
+	components: {
+		uniGrader
+	},
+	props: {
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			shopId: 0,
+			floorData: {}
+		}
+	},
+	filters: {
+		NumFormat: function(text) {
+			//处理金额
+			return Number(text).toFixed(2)
+		}
+	},
+	created() {
+		this.initData(this.pageData)
+	},
+	computed: {
+		...mapState(['hasLogin', 'userInfo', 'isActivity'])
+	},
+	watch: {
+		pageData: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.pageData = el
+				this.initData(this.pageData)
+			},
+			deep: true
+		}
+	},
+	methods: {
+		initData(data) {
+			this.$api.getStorage().then(resolve => {
+				this.shopId = resolve.shopId ? resolve.shopId : 0
+			})
+			this.floorData = data
+			// console.log(this.floorData)
+		},
+		PromotionsFormat(promo) {
+			//促销活动类型数据处理
+			if (promo != null) {
+				if (promo.type == 1 && promo.mode == 1) {
+					return true
+				} else {
+					return false
+				}
+			}
+			return false
+		},
+		navToDetailPage(pros) {
+			//跳转商品详情页
+			this.$api.FlooryNavigateTo(pros)
+		},
+		BannerNavigateTo(linkType, linkId, linkHref, keyword) {
+			//跳转商品详情页
+			this.$api.BannerNavigateTo(linkType, linkId, linkHref, keyword)
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.section_page_main {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	
+	.floor-item-ad{
+		width: 100%;
+		margin-bottom: 20rpx;
+		.floor-item-left,.floor_item_right{
+			width: 339rpx;
+			height: 516rpx;
+		}
+		.floor-item-left{
+			margin-right: 20rpx;
+			float: left;
+			.item-img-gg{
+				width: 339rpx;
+				height: 516rpx;
+				border-radius: 16rpx;
+			}
+		}
+		.floor_item_right{
+			float: left;
+			.item-img-gg {
+				width: 100%;
+				height: 246rpx;
+				display: block;
+				border-radius: 16rpx;
+				&:nth-child(1){
+					margin-bottom:24rpx;
+				}
+			}
+		}
+		&.ad-row2{
+			width: 100%;
+			margin: 24rpx 0;
+			.item-img-gg {
+				width: 339rpx;
+				height: 246rpx;
+				float: left;
+				display: block;
+				border-radius: 16rpx;
+				&:nth-child(1){
+					margin-right: 20rpx;
+				}
+			}
+		}
+	}
+	.floor-item {
+		width: 339rpx;
+		height: 516rpx;
+		margin-right: 20rpx;
+		font-size: $font-size-24;
+		color: $text-color;
+		background: #ffffff;
+		line-height: 36rpx;
+		border-radius: 16rpx;
+		margin-bottom: 20rpx;
+		float: left;
+		box-sizing: border-box;
+		position: relative;
+		
+		&:nth-child(even) {
+			margin-right: 0;
+		}
+		.item-img-gg {
+			width: 339rpx;
+			height: 516rpx;
+			display: block;
+			border-radius: 16rpx;
+		}
+		.item-img {
+			width: 339rpx;
+			height: 339rpx;
+			border-radius: 16rpx 16rpx 0 0;
+			display: block;
+			margin-bottom: 8rpx;
+		}
+		.floor-item_tag {
+			width: 100%;
+			height: 32rpx;
+			float: left;
+			margin: 20rpx 0;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+			text {
+				display: inline-block;
+				padding: 0 8rpx;
+				border: 1px solid #e3ebf7;
+				border-radius: 8rpx;
+				color: #9aa5b5;
+				font-size: $font-size-22;
+				line-height: 32rpx;
+				text-align: center;
+				float: left;
+			}
+		}
+		.floor-item-content {
+			width: 100%;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+		}
+		.floor-item-act {
+			display: block;
+			width: 100%;
+			height: 32rpx;
+			text-align: center;
+			box-sizing: border-box;
+		}
+		.floor-tags {
+			height: 28rpx;
+			border-radius: 6rpx;
+			background-color: #ffffff;
+			line-height: 28rpx;
+			color: $color-system;
+			text-align: center;
+			display: inline-block;
+			padding: 0 16rpx;
+			font-size: $font-size-20;
+			border: 1px solid #e15616;
+			float: left;
+		}
+		.title-none {
+			font-size: $font-size-26;
+			color: #ff2a2a;
+			line-height: 54rpx;
+		}
+		.title {
+			width: 100%;
+			height: 70rpx;
+			display: flex;
+			line-height: 35rpx;
+			flex-direction: column;
+			margin: 8rpx 0;
+			padding: 0;
+			position: relative;
+			.mclap {
+				width: 100%;
+				line-height: 35rpx;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				word-break: break-all;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 2;
+				overflow: hidden;
+				font-size: 26rpx;
+				&.indent {
+					text-indent: 95rpx;
+				}
+			}
+			.mclap-tag {
+				display: block;
+				width: 84rpx;
+				height: 32rpx;
+				background-image: linear-gradient(270deg, #f9c023 0%, #f83600 100%);
+				border-radius: 4rpx 48rpx 4px 4px;
+				line-height: 32rpx;
+				font-size: $font-size-22;
+				color: #ffffff;
+				text-align: center;
+				position: absolute;
+				left: 0;
+				top: 0;
+			}
+		}
+		.no-price {
+			height: 54rpx;
+			line-height: 54rpx;
+			display: flex;
+			box-sizing: border-box;
+			.p-no {
+				font-size: $font-size-28;
+				color: $text-color;
+				display: block;
+				float: left;
+			}
+			.p-stars {
+				float: left;
+			}
+		}
+		.price {
+			color: #ff2a2a;
+			line-height: 54rpx;
+			&.none {
+				text-decoration: line-through;
+				color: #999999;
+			}
+			.sm {
+				font-size: $font-size-24;
+			}
+			.big {
+				font-size: $font-size-28;
+			}
+		}
+	}
+}
+</style>

+ 164 - 0
components/cm-module/pcitureTemplate/templateA.vue

@@ -0,0 +1,164 @@
+<template>
+	<view class="section_page_main clearfix">
+		<view class="recommend-list">
+			<swiper
+				class="tui-banner-swiper"
+				:autoplay="true"
+				:interval="5000"
+				:duration="500"
+				:circular="true"
+				@change="swiperChange"
+			>
+				<swiper-item class="clearfix" v-for="(list,index1) in productList" :key="index1">
+					<view class="img-box" v-for="(product,index2) in list" :key="index2" @click="navigaitionTo(product)">
+						<image :src="product.appletsImage" ></image>
+					</view>
+				</swiper-item>
+			</swiper>
+			<view class="swiper__recommenddots-box" v-if="productList.length > 1">
+				<view
+					v-for="(item, idx) in productList"
+					:key="idx"
+					:class="[idx === swiperCurrent ? 'swiper__dots-long' : 'none']"
+					:data-index="swiperCurrent"
+					class="swiper__dots-item"
+				>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import uniGrader from '@/components/uni-grade/uni-grade.vue'
+import caimeiApi from '@/common/config/caimeiApi.js'
+export default {
+	name: 'templateH',
+	components: {
+		uniGrader
+	},
+	props: {
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			productList: [],
+			swiperCurrent: 0,
+			pageSize: 8,
+		}
+	},
+	created() {
+		this.initData(this.pageData)
+	},
+	watch: {
+		pageData: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.pageData = el
+				this.initData(this.pageData)
+			},
+			deep: true
+		}
+	},
+	methods: {
+		initData(data) {
+			while(data.floorImageList.length > 0){
+				this.productList.push(data.floorImageList.splice(0,this.pageSize))
+			}
+		},
+		swiperChange(e) {
+			//轮播切换
+			const index = e.detail.current
+			this.swiperCurrent = index
+		},
+		navigaitionTo(item){
+			if (item.adsImage === '' && item.linkType === -1) {
+				return
+			}else if(item.linkType === -1){
+				uni.navigateTo({
+					url:`/h5/pages/activity/activity-detail?adsImage=${item.adsImage}&title=${item.name}`
+				})
+			}else{
+				caimeiApi.FlooryNavigateTo(item)
+			}
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.section_page_main {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	.recommend-list {
+		width: 100%;
+		height: 390rpx;
+		position: relative;
+		padding-bottom: 20rpx;
+		.tui-banner-swiper {
+			width: 100%;
+			margin: 0 auto;
+			background: #f7f7f7;
+			height: 350rpx;
+			overflow: hidden;
+			transform: translateY(0);
+			.img-box {
+				width: 164rpx;
+				height: 164rpx;
+				float: left;
+				margin: 15rpx 15rpx 0 0;
+				overflow: hidden;
+				border-radius: 8rpx;
+				image {
+					width: 164rpx;
+					height: 164rpx;
+				}
+				&:nth-child(4n) {
+					margin-right: 0;
+				}
+				&:nth-child(1),
+				&:nth-child(2),
+				&:nth-child(3),
+				&:nth-child(4) {
+					margin-top: 0;
+				}
+			}
+		}
+	}
+	.swiper__recommenddots-box {
+		position: absolute;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		height: 60rpx;
+		.swiper__dots-item {
+			width: 8rpx;
+			height: 8rpx;
+			border-radius: 100%;
+			margin-left: 6px;
+			background-color: rgba(225, 86, 22, 0.3);
+		}
+		.swiper__dots-long {
+			width: 32rpx;
+			height: 8rpx;
+			border-radius: 4rpx;
+			background-color: #e15616;
+			transition: all 0.4s;
+		}
+	}
+}
+</style>

+ 166 - 0
components/cm-module/pcitureTemplate/templateB.vue

@@ -0,0 +1,166 @@
+<template>
+	<view class="section_page_main clearfix">
+		<view class="recommend-list">
+			<swiper
+				class="tui-banner-swiper"
+				:autoplay="true"
+				:interval="5000"
+				:duration="500"
+				:circular="true"
+				@change="swiperChange"
+			>
+				<swiper-item class="clearfix" v-for="(list,index1) in productList" :key="index1">
+					<view class="img-box"  v-for="(product,index2) in list" :key="index2" @click="navigaitionTo(product)">
+						<image :src="product.appletsImage" ></image>
+					</view>
+				</swiper-item>
+			</swiper>
+			<view class="swiper__recommenddots-box" v-if="productList.length > 1">
+				<view
+					v-for="(item, idx) in productList"
+					:key="idx"
+					:class="[idx === swiperCurrent ? 'swiper__dots-long' : 'none']"
+					:data-index="swiperCurrent"
+					class="swiper__dots-item"
+				>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import uniGrader from '@/components/uni-grade/uni-grade.vue'
+import caimeiApi from '@/common/config/caimeiApi.js'
+export default {
+	name: 'templateH',
+	components: {
+		uniGrader
+	},
+	props: {
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			productList: [],
+			swiperCurrent: 0,
+			pageSize: 6,
+		}
+	},
+	created() {
+		this.initData(this.pageData)
+	},
+	watch: {
+		pageData: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.pageData = el
+				this.initData(this.pageData)
+			},
+			deep: true
+		}
+	},
+	methods: {
+		initData(data) {
+			this.$api.getStorage().then(resolve => {
+				this.shopId = resolve.shopId ? resolve.shopId : 0
+			})
+			while(data.floorImageList.length > 0){
+				this.productList.push(data.floorImageList.splice(0,this.pageSize))
+			}
+		},
+		swiperChange(e) {
+			//轮播切换
+			const index = e.detail.current
+			this.swiperCurrent = index
+		},
+		navigaitionTo(item){
+			if (item.adsImage === '' && item.linkType === -1) {
+				return
+			}else if(item.linkType === -1){
+				uni.navigateTo({
+					url:`/h5/pages/activity/activity-detail?adsImage=${item.adsImage}&title=${item.name}`
+				})
+			}else{
+				caimeiApi.FlooryNavigateTo(item)
+			}
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.section_page_main {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	.recommend-list {
+		width: 100%;
+		height: 380rpx;
+		position: relative;
+		padding-bottom: 20rpx;
+		.tui-banner-swiper {
+			width: 100%;
+			margin: 0 auto;
+			background: #f7f7f7;
+			height: 330rpx;
+			overflow: hidden;
+			transform: translateY(0);
+			.img-box {
+				width: 224rpx;
+				height: 156rpx;
+				float: left;
+				margin: 15rpx 15rpx 0 0;
+				overflow: hidden;
+				border-radius: 8rpx;
+				image {
+					width: 224rpx;
+					height: 156rpx;
+				}
+				&:nth-child(3n) {
+					margin-right: 0;
+				}
+				&:nth-child(1),
+				&:nth-child(2),
+				&:nth-child(3) {
+					margin-top: 0;
+				}
+			}
+		}
+	}
+	.swiper__recommenddots-box {
+		position: absolute;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		height: 60rpx;
+		.swiper__dots-item {
+			width: 8rpx;
+			height: 8rpx;
+			border-radius: 100%;
+			margin-left: 6px;
+			background-color: rgba(225, 86, 22, 0.3);
+		}
+		.swiper__dots-long {
+			width: 32rpx;
+			height: 8rpx;
+			border-radius: 4rpx;
+			background-color: #e15616;
+			transition: all 0.4s;
+		}
+	}
+}
+</style>

+ 68 - 0
components/cm-module/pcitureTemplate/templateC.vue

@@ -0,0 +1,68 @@
+<template>
+	<scroll-view scroll-x="true" class="picture">
+		<view class="section" v-for="(item , index) in productList" @click="navigaitionTo(item)">
+			<image :src="item.appletsImage" ></image>
+		</view>
+	</scroll-view>
+</template>
+
+<script>
+import caimeiApi from '@/common/config/caimeiApi.js'
+export default{
+	data(){
+		return{
+			productList:[]
+		}
+	},
+	props:{
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		}
+	},
+	created() {
+		this.initData(this.pageData);
+	},
+	methods:{
+		initData(data){
+			this.productList = data.floorImageList;
+		},
+		navigaitionTo(item){
+			if (item.adsImage === '' && item.linkType === -1) {
+				return
+			}else if(item.linkType === -1){
+				uni.navigateTo({
+					url:`/h5/pages/activity/activity-detail?adsImage=${item.adsImage}&title=${item.name}`
+				})
+			}else{
+				caimeiApi.FlooryNavigateTo(item)
+			}
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.picture{
+	width: 750rpx;
+	margin-left: -24rpx;
+	white-space: nowrap;
+	.section{
+		display: inline-block;
+		margin-right: 24rpx;
+		width: 310rpx;
+		height: 240rpx;
+		overflow: hidden;
+		border-radius: 16rpx;
+		image{
+			width: 310rpx;
+			height: 240rpx;
+		}
+		&:first-child{
+			margin-left: 24rpx;
+		}
+	}
+}
+</style>

+ 84 - 0
components/cm-module/pcitureTemplate/templateD.vue

@@ -0,0 +1,84 @@
+<template>
+	<view class="picture">
+		<view class="section" v-for="(item,index) in productList" :key="index" @click="navigaitionTo(item)">
+			<image :src="item.appletsImage" ></image>
+		</view>
+	</view>
+</template>
+
+<script>
+import caimeiApi from '@/common/config/caimeiApi.js'
+export default{
+	data(){
+		return{
+			productList:[]
+		}
+	},
+	props:{
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		},
+		flag:{
+			type:Boolean,
+			default:false
+		}
+	},
+	created() {
+		this.initData(this.pageData);
+	},
+	watch: {
+		pageData: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.pageData = el
+				this.initData(this.pageData)
+			},
+			deep: true
+		}
+	},
+	methods:{
+		initData(data){
+			if(this.flag){
+				this.productList = data.floorImageList;
+			}else{
+				this.productList = data.floorImageList.slice(0,2);
+			}
+			
+		},
+		navigaitionTo(item){
+			if (item.adsImage === '' && item.linkType === -1) {
+				return
+			}else if(item.linkType === -1){
+				uni.navigateTo({
+					url:`/h5/pages/activity/activity-detail?adsImage=${item.adsImage}&title=${item.name}`
+				})
+			}else{
+				caimeiApi.FlooryNavigateTo(item)
+			}
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.picture{
+	width: 100%;
+	.section{
+		margin-bottom: 24rpx;
+		width: 702rpx;
+		height: 360rpx;
+		overflow: hidden;
+		border-radius: 16rpx;
+		image{
+			width: 702rpx;
+			height: 360rpx;
+		}
+		&:first-child{
+			margin-top: 0;
+		}
+	}
+}
+</style>

+ 162 - 0
components/cm-module/pcitureTemplate/templateE.vue

@@ -0,0 +1,162 @@
+<template>
+	<view class="section_page_main clearfix">
+		<view class="recommend-list">
+			<swiper
+				class="tui-banner-swiper"
+				:autoplay="true"
+				:interval="5000"
+				:duration="500"
+				:circular="true"
+				@change="swiperChange"
+			>
+				<swiper-item class="clearfix"  v-for="(list,index1) in productList" :key="index1">
+					<view class="img-box"  v-for="(product,index2) in list" :key="index2" @click="navigaitionTo(product)">
+						<image :src="product.appletsImage" ></image>
+					</view>
+				</swiper-item>
+			</swiper>
+			<view class="swiper__recommenddots-box" v-if="productList.length > 1">
+				<view
+					v-for="(item, idx) in productList"
+					:key="idx"
+					:class="[idx === swiperCurrent ? 'swiper__dots-long' : 'none']"
+					:data-index="swiperCurrent"
+					class="swiper__dots-item"
+				>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapState, mapMutations } from 'vuex'
+import uniGrader from '@/components/uni-grade/uni-grade.vue'
+import caimeiApi from '@/common/config/caimeiApi.js'
+export default {
+	name: 'templateH',
+	components: {
+		uniGrader
+	},
+	props: {
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		}
+	},
+	data() {
+		return {
+			productList: [],
+			swiperCurrent: 0,
+			pageSize: 4
+		}
+	},
+	created() {
+		this.initData(this.pageData)
+	},
+	watch: {
+		pageData: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.pageData = el
+				this.initData(this.pageData)
+			},
+			deep: true
+		}
+	},
+	methods: {
+		initData(data) {
+			while(data.floorImageList.length > 0){
+				this.productList.push(data.floorImageList.splice(0,this.pageSize))
+			}
+		},
+		swiperChange(e) {
+			//轮播切换
+			const index = e.detail.current
+			this.swiperCurrent = index
+		},
+		navigaitionTo(item){
+			if (item.adsImage === '' && item.linkType === -1) {
+				return
+			}else if(item.linkType === -1){
+				uni.navigateTo({
+					url:`/h5/pages/activity/activity-detail?adsImage=${item.adsImage}&title=${item.name}`
+				})
+			}else{
+				caimeiApi.FlooryNavigateTo(item)
+			}
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.section_page_main {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	.recommend-list {
+		width: 100%;
+		height: 500rpx;
+		position: relative;
+		padding-bottom: 20rpx;
+		.tui-banner-swiper {
+			width: 100%;
+			margin: 0 auto;
+			background: #f7f7f7;
+			height: 445rpx;
+			overflow: hidden;
+			transform: translateY(0);
+			.img-box {
+				width: 339rpx;
+				height: 210rpx;
+				float: left;
+				margin: 24rpx 24rpx 0 0;
+				overflow: hidden;
+				border-radius: 16rpx;
+				image {
+					width: 339rpx;
+					height: 210rpx;
+				}
+				&:nth-child(2n) {
+					margin-right: 0;
+				}
+				&:nth-child(1),
+				&:nth-child(2) {
+					margin-top: 0;
+				}
+			}
+		}
+	}
+	.swiper__recommenddots-box {
+		position: absolute;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex: 1;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		height: 60rpx;
+		.swiper__dots-item {
+			width: 8rpx;
+			height: 8rpx;
+			border-radius: 100%;
+			margin-left: 6px;
+			background-color: rgba(225, 86, 22, 0.3);
+		}
+		.swiper__dots-long {
+			width: 32rpx;
+			height: 8rpx;
+			border-radius: 4rpx;
+			background-color: #e15616;
+			transition: all 0.4s;
+		}
+	}
+}
+</style>

+ 83 - 0
components/cm-module/pcitureTemplate/templateF.vue

@@ -0,0 +1,83 @@
+<template>
+	<view class="picture">
+		<view class="section" v-for="(item,index) in productList" :key="index" @click="navigaitionTo(item)">
+			<image :src="item.appletsImage" ></image>
+		</view>
+	</view>
+</template>
+
+<script>
+import caimeiApi from '@/common/config/caimeiApi.js'
+export default{
+	data(){
+		return{
+			productList:[]
+		}
+	},
+	props:{
+		pageData: {
+			type: Object
+		},
+		userIdentity: {
+			type: Number
+		},
+		flag:{
+			type:Boolean,
+			default:false
+		}
+	},
+	created() {
+		this.initData(this.pageData);
+	},
+	watch: {
+		pageData: {
+			handler: function(el) {
+				//监听对象的变换使用 function,箭头函数容易出现this指向不正确
+				this.pageData = el
+				this.initData(this.pageData)
+			},
+			deep: true
+		}
+	},
+	methods:{
+		initData(data){
+			if(this.flag){
+				this.productList = data.floorImageList;
+			}else{
+				this.productList = data.floorImageList.slice(0,1);
+			}
+		},
+		navigaitionTo(item){
+			console.log(item.linkType);
+			if (item.adsImage === '' && item.linkType === -1) {
+				return
+			}else if(item.linkType === -1){
+				uni.navigateTo({
+					url:`/h5/pages/activity/activity-detail?adsImage=${item.adsImage}&title=${item.name}`
+				})
+			}else{
+				caimeiApi.FlooryNavigateTo(item)
+			}
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+.picture{
+	.section{
+		width: 702rpx;
+		height: 340rpx;
+		overflow: hidden;
+		border-radius: 16rpx;
+		margin-top: 24rpx;
+		&:first-child{
+			margin-top: 0;
+		}
+		image{
+			width: 702rpx;
+			height: 340rpx;
+		}
+	}
+}
+</style>

+ 35 - 0
h5/pages/activity/activity-detail.vue

@@ -0,0 +1,35 @@
+<template>
+	<view class="detail">
+		<image :src="adsImage" mode="widthFix" show-menu-by-longpress></image>
+	</view>
+</template>
+
+<script>
+	export default{
+		data(){
+			return{
+				adsImage:'',
+				title:''
+			}
+		},
+		onLoad(option) {
+			this.adsImage = option.adsImage
+			this.title= option.title
+			console.log(this.title);
+			if(this.title && this.title!==null && this.title !== 'null'){
+				uni.setNavigationBarTitle({title:this.title});
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+.detail{
+	width: 100%;
+	height: auto;
+	image{
+		width: 100%;
+		height: auto;
+	}
+}
+</style>

+ 230 - 0
h5/pages/activity/activity-floorMore.vue

@@ -0,0 +1,230 @@
+<template>
+	<view class="container floor clearfix">
+		<view class='navbar-wrap' v-if="showSearch"> 
+			<view class="gosearch-btn" @click="this.$api.navigateTo(clickPath)">
+				<view class="search-icon">
+					<text class="iconfont icon-iconfonticonfontsousuo1"></text>
+				</view>
+				<view class="search-text">{{hotSearchText}}</view>
+			</view>
+		</view>
+		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="isRequest" :loadingType="5"></tui-skeleton>
+		<!-- 楼层 -->
+		<view class="container-section tui-skeleton">
+			<!-- 图片模板 -->
+			<template v-if="pageData && pageData.floorContent.templateType == '8'">
+				<pictureD :pageData="pageData" :userIdentity="userIdentity" :flag="true" v-if="isRequest"></pictureD>
+			</template>
+			<template v-if="pageData && pageData.floorContent.templateType == '10'">
+				<pictureF :pageData="pageData" :userIdentity="userIdentity" :flag="true" v-if="isRequest"></pictureF>
+			</template>
+			<!-- 文章列表 -->
+			<template v-if="pageData && pageData.floorContent.templateType == '3'">
+				<articleA :pageData="pageData" :userIdentity="userIdentity" :flag="true" v-if="isRequest"></articleA>
+			</template>
+			<template v-if="pageData && pageData.floorContent.templateType == '4'">
+				<articleB :pageData="pageData" :userIdentity="userIdentity" :flag="true" v-if="isRequest"></articleB>
+			</template>
+			<template v-if="pageData && pageData.floorContent.templateType == '6'">
+				<articleD :pageData="pageData" :userIdentity="userIdentity" :flag="true" v-if="isRequest"></articleD>
+			</template>
+			<!-- 产品列表 -->
+			<template v-if="pageData && pageData.floorContent.templateType == '11'">
+				<productI :pageData="pageData" :userIdentity="userIdentity" v-if="isRequest"></productI>
+			</template>
+			<template v-if="pageData && pageData.floorContent.templateType == '12'">
+				<productJ :pageData="pageData" :userIdentity="userIdentity" v-if="isRequest"></productJ>
+			</template>
+			<template v-if="pageData && pageData.floorContent.templateType == '13'">
+				<productK :pageData="pageData" :userIdentity="userIdentity" v-if="isRequest"></productK>
+			</template>
+			<template v-if="pageData && pageData.floorContent.templateType == '14'">
+				<productG :pageData="pageData" :userIdentity="userIdentity" v-if="isRequest"></productG>
+			</template>
+			<template v-if="pageData && pageData.floorContent.templateType == '15'">
+				<productD :pageData="pageData" :userIdentity="userIdentity" v-if="isRequest"></productD>
+			</template>
+			<template v-if="pageData && pageData.floorContent.templateType == '16'">
+				<productC :pageData="pageData" :userIdentity="userIdentity" v-if="isRequest"></productC>
+			</template>
+			<template v-if="pageData && pageData.floorContent.templateType == '17'">
+				<productB :pageData="pageData" :userIdentity="userIdentity" v-if="isRequest"></productB>
+			</template>
+			<template v-if="pageData && pageData.floorContent.templateType == '18'">
+				<productA :pageData="pageData" :userIdentity="userIdentity" v-if="isRequest"></productA>
+			</template>
+			<template v-if="pageData && pageData.floorContent.templateType == '19' || pageData.floorContent.templateType == '20' ">
+				<productE :pageData="pageData" :userIdentity="userIdentity" v-if="isRequest"></productE>
+			</template>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { mapState,mapMutations} from 'vuex';
+	//引入产品模板
+	import productA from '@/components/cm-module/pageFloorTemplate/templateA.vue'
+	import productB from '@/components/cm-module/pageFloorTemplate/templateB.vue'
+	import productC from '@/components/cm-module/pageFloorTemplate/templateC.vue'
+	import productD from '@/components/cm-module/pageFloorTemplate/templateD.vue'
+	import productE from '@/components/cm-module/pageFloorTemplate/templateE.vue'
+	import productG from '@/components/cm-module/pageFloorTemplate/templateG.vue'
+	import productI from '@/components/cm-module/pageFloorTemplate/templateI.vue'
+	import productJ from '@/components/cm-module/pageFloorTemplate/templateJ.vue'
+	import productK from '@/components/cm-module/pageFloorTemplate/templateK.vue'
+	//引入图片模板
+	import pictureD from '@/components/cm-module/pcitureTemplate/templateD.vue'
+	import pictureF from '@/components/cm-module/pcitureTemplate/templateF.vue'
+	//引入图文模板
+	import articleA from '@/components/cm-module/articleTemplate/templateA.vue'
+	import articleB from '@/components/cm-module/articleTemplate/templateB.vue'
+	import articleD from '@/components/cm-module/articleTemplate/templateD.vue'
+	export default{
+		components:{
+			productA,
+			productB,
+			productC,
+			productD,
+			productE,
+			productG,
+			productI,
+			productJ,
+			productK,
+			pictureD,
+			pictureF,
+			articleA,
+			articleB,
+			articleD
+		},
+		data(){
+			return{
+				clickPath:'/search/pages/search/search',
+				hotSearchText:'搜索商品/项目仪器',	
+				userIdentity:0,
+				skeletonShow:true,
+				isRequest:false,
+				navBarsList:[],
+				pageData:{},//楼层
+				floorId:null,
+				pageType:null,
+				userID:'',
+				noSearch:['3','4','6','8','10'],
+				showSearch:true
+			}
+		},
+		onLoad(option) {
+			this.pageType = option.pageType
+			this.floorId = Number(option.floorId)
+			uni.setNavigationBarTitle({title:option.title});
+			this.$api.getComStorage('userInfo').then((resolve) =>{
+				this.clubStatus = resolve.clubStatus
+				this.userID = resolve.userId ? resolve.userId : 0;
+				this.shopId = resolve.shopId ? resolve.shopId : 0;
+				this.userIdentity = resolve.userIdentity
+				this.GetHomeFloorContentDetails(this.pageType);
+			}).catch(error =>{
+				this.GetHomeFloorContentDetails(this.pageType);
+			})
+		},
+		computed: {
+			...mapState(['hasLogin','userInfo','identity'])
+		},
+		methods:{
+			checkShowSearch(templateType){
+				const result = this.noSearch.indexOf(templateType)
+				if(result !== -1){
+					this.showSearch = false
+				}else {
+					this.showSearch = true
+				}
+			},
+			GetHomeFloorContentDetails(pageType){//楼层查看更多
+				if(pageType == '1'){ //首页
+					this.CommonService.GetHomeFloorContentDetails({userId:this.userID,floorId:this.floorId,source:2}).then(response =>{
+						this.pageData = response.data
+						this.skeletonShow = false
+						this.isRequest = true
+					}).catch(error =>{
+						this.$util.msg(error.msg,2000)
+					})
+				}else{  //二级页面楼层数据
+					this.CommonService.GePageFloorContentDetails({userId:this.userID,centreId:this.floorId,source:2}).then(response =>{
+						this.pageData = response.data
+						this.skeletonShow = false
+						this.isRequest = true
+						this.checkShowSearch(this.pageData.floorContent.templateType)
+						console.log(this.pageData);
+					}).catch(error =>{
+						this.$util.msg(error.msg,2000)
+					})
+				}
+			}
+		},
+		onPullDownRefresh() {
+			setTimeout(() => {
+				this.GetHomeFloorContentDetails(this.pageType);
+				uni.stopPullDownRefresh()
+			}, 200)
+		},
+		onShow() {
+			
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{
+		background-color: #FFFFFF;
+	}
+	.container-home{
+		width: 100%;
+		height: auto;
+	}
+	.container-section{
+		width: 100%;
+		height: auto;
+		background-color: #F7F7F7;
+		box-sizing: border-box;
+		padding:24rpx;
+	}
+	.navbar-wrap {
+		 width: 100%;
+		 height: 116rpx;
+		 box-sizing: border-box;
+		 background: #FFFFFF;
+		 padding: 25rpx 24rpx;
+		 .gosearch-btn{
+		 	width: 100%;
+		 	height: 100%;
+		 	border-radius: 40rpx;
+		 	font-size: 28rpx;
+		 	line-height: 66rpx;
+		 	color: #8A8A8A;
+		 	background: #f7f7f7;
+		 	position: relative;
+		 	box-sizing: border-box;
+		 	padding-left: 66rpx;
+		 	.search-icon{
+		 		width: 66rpx;
+		 		height: 66rpx;
+		 		position:absolute ;
+		 		left: 0;
+		 		top: 2rpx;
+		 		text-align: center;
+		 		line-height: 66rpx;
+		 		.icon-iconfonticonfontsousuo1{
+		 			margin:0 6rpx;
+		 			font-size: $font-size-34;
+		 			color: #8A8A8A;
+		 			z-index: 10;
+		 		}
+		 	}
+		 	.search-text{
+		 		font-size: $font-size-24;
+		 		line-height: 66rpx;
+		 		color: #8A8A8A;
+		 	}
+		 }
+	}
+</style>
+                               

+ 181 - 0
h5/pages/activity/activity-topic.vue

@@ -0,0 +1,181 @@
+<template>
+	<view class="container floor clearfix">
+		<!-- top -->
+		<view class="container-top" @click="BannerNavigateTo(pageInfo.linkType,pageInfo.linkParam.id,pageInfo.headLink,pageInfo.keyword)" v-if="isRequest && headImage!==''"><image :src="headImage" ></image></view>
+		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5"></tui-skeleton>
+		<!-- 楼层 -->
+		<view class="container-section tui-skeleton">
+			<page-floor :list="pageList" :userIdentity="userIdentity" :pageType="2" v-if="isRequest"></page-floor>
+		</view>
+		<!-- 侧边 -->
+		<scroll-top :isScrollTop="isScrollTop" :bottom="50"></scroll-top>
+	</view>
+</template>
+
+<script>
+	import { mapState,mapMutations} from 'vuex';
+	import customFloor from '@/components/cm-custom/custom-floor' 		 //自定义导航
+	import templateNav from '@/components/cm-module/pageTemplate/templateNav.vue'
+	import pageFloor from '@/components/cm-module/activity/pageFloor.vue'
+	import authorize from '@/common/config/authorize.js'
+	import wxLogin from "@/common/config/wxLogin.js"
+	
+	export default{
+		components:{
+			customFloor,
+			templateNav,
+			pageFloor
+		},
+		data(){
+			return{
+				userID:0,
+				shopId:0,
+				userIdentity:0,
+				skeletonShow:true,
+				headerBtnPosi:	this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
+				systeminfo: this.setSysteminfo(),		 //获取设备信息
+				CustomBar:this.CustomBar,// 顶部导航栏高度
+				navBarsList:[],
+				pageList:[],//楼层
+				isRequest:false,
+				isScrollTop:false,
+				pageId:'',
+				typeSort:'',
+				headImage:'',
+				pageInfo:{}
+			}
+		},
+		onLoad(option) {
+			if(option.type =='share'){
+				authorize.checkLogin()
+				.then(res => {
+					wxLogin.wxLoginAuthorize()
+				})
+				.catch(err => {
+					console.log(new Date +'用户未授权微信信息')
+				})
+			}
+			this.pageId = option.linkId
+			this.$api.getComStorage('userInfo').then((resolve) =>{
+				this.userID = resolve.userId ? resolve.userId : 0;
+				this.shopId = resolve.shopId ? resolve.shopId : 0;
+				this.userIdentity = resolve.userIdentity
+				this.GetInstrumentPageData();
+			}).catch(error =>{
+				this.GetInstrumentPageData();
+			})
+			setTimeout(()=>{
+				this.skeletonShow = false
+			},2000)
+		},
+		computed: {
+			...mapState(['hasLogin','userInfo','identity'])
+		},
+		methods:{
+			GetInstrumentPageData(){//获取楼层数据
+				this.CommonService.GetActivityFloorData({pageId:this.pageId,userId:this.userID,source:2}).then(response =>{
+					let data = response.data
+					console.log(data);
+					uni.setNavigationBarTitle({title:data.page.title});
+					this.typeSort = data.page.typeSort
+					this.pageList = data.floorList
+					this.headImage = data.page.crmHeadImage
+					this.pageInfo = data.page
+					this.isRequest =true
+					
+					// this.GetHomeInit()
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000)
+				})
+			},
+			GetHomeInit(){//金刚区分类
+				this.CommonService.GetFirstClassly({typeSort:this.typeSort,source:'crm'}).then(response =>{
+					this.navBarsList = response.data
+					this.isRequest =true
+				}).catch(error =>{
+					this.$util.msg(error.msg,2000)
+				})
+			},
+			setHeaderBtnPosi(){
+				// 获得胶囊按钮位置信息
+				let headerBtnPosi = uni.getMenuButtonBoundingClientRect();
+				return headerBtnPosi
+			},
+			setSysteminfo(){
+				let systeminfo;
+				uni.getSystemInfo({ // 获取设备信息
+					success: (res) => {
+						systeminfo = res
+					},
+				})
+				return systeminfo
+			},
+			BannerNavigateTo(linkType,linkId,linkHref,keyword) {//跳转商品详情页
+				console.log(linkType,linkId,linkHref,keyword);
+				this.$api.BannerNavigateTo(linkType,linkId,linkHref,keyword)
+			}
+		},
+		onPageScroll(e){//实时获取到滚动的值
+			if(e.scrollTop>400){
+				this.isScrollTop = true
+			}else{
+				this.isScrollTop = false
+			}	
+		},
+		onPullDownRefresh() {
+			setTimeout(() => {
+				uni.stopPullDownRefresh()
+			}, 200)
+		},
+		onShareAppMessage(res){//分享转发
+			if (res.from === 'button') {
+		      // 来自页面内转发按钮
+		    }
+			return {
+			  title: '采美-一站式生/医美采购服务平台',
+			  path: `pages/goods/good-floor?type=share&linkId=${this.pageId}`
+			}
+		},
+		onShow() {
+			
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{
+		background-color: #FFFFFF;
+	}
+	.container-home{
+		width: 100%;
+		height: auto;
+	}
+	.container-section{
+		width: 100%;
+		height: auto;
+		background-color: #F7F7F7;
+	}
+	.container-top{
+		width: 100%;
+		height: 340rpx;
+		float: left;
+		image{
+			width: 100%;
+			height: 100%;
+			display: block;
+		}
+	}
+	.container-activ{
+		width: 100%;
+		height: 240rpx;
+		box-sizing: border-box;
+		padding: 0 24rpx;
+		margin: 24rpx 0;
+		float: left;
+		image{
+			width: 100%;
+			height: 240rpx;
+			display: block;
+		}
+	}
+</style>

+ 15 - 6
h5/pages/activity/activity_mid.vue

@@ -239,12 +239,21 @@
 				this.$api.navigateTo(`/pages/goods/product?id=${item.productID}&path=activity`)
 			},
 			navigator(){
-				if(uni.getStorageSync('_WX_State')){
-					this.$store.commit('setLoginType',9)
-					this.$api.navigateTo('/pages/login/login?type=0')
-				}else{
-					this.$api.navigateTo('/pages/authorization/authorization?type=1')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						this.$store.commit('setLoginType',9)
+						this.$api.navigateTo('/pages/login/login?type=0')
+					}else{
+						this.$api.navigateTo('/pages/authorization/authorization?type=1')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	this.$store.commit('setLoginType',9)
+				// 	this.$api.navigateTo('/pages/login/login?type=0')
+				// }else{
+				// 	this.$api.navigateTo('/pages/authorization/authorization?type=1')
+				// }	
 			},	
 			toFixedFn(text){//处理小数点后两位数
 				return Number(text).toFixed(2);

+ 14 - 13
main.js

@@ -7,7 +7,7 @@ import * as Regs from '@/common/config/common.js'
 import { umtrackWxKey } from '@/utils/config.js'
 
 // 友盟依赖包
-import uma from 'umtrack-wx';
+import uma from 'umtrack-wx'
 
 // 公共组件
 import { msg, modal,prePage } from'./utils/util'
@@ -24,17 +24,18 @@ Vue.component('scroll-top',scrollTop)
 Vue.component('city-Picker',CityPicker)
 
 Vue.prototype.$getStorage = function(key){
-	var userParam = uni.getStorageSync(key);
-	if (userParam != null && userParam != "" && userParam!= undefined) {
-		return userParam;
+	var userParam = uni.getStorageSync(key)
+	if (userParam != null && userParam != '' && userParam!= undefined) {
+		return userParam
 	}else{
-		return null;
+		return null
 	} 
 }
 
 /**
  * 友盟+小程序统计
  */
+
 if(process.env.NODE_ENV != 'development'){
 	// #ifdef MP-WEIXIN
 	uma.init({
@@ -47,21 +48,21 @@ if(process.env.NODE_ENV != 'development'){
 		autoGetOpenid: true,
 		debug: true, //是否打开调试模式
 		uploadUserInfo: false // 自动上传用户信息,设为false取消上传,默认为false
-	});
+	})
 	uma.install = function (Vue) {
-		Vue.prototype.$uma = uma;
+		Vue.prototype.$uma = uma
 	}
-	Vue.use(uma);
+	Vue.use(uma)
 	// #endif
 }
 
 // Vue实例化
 Vue.config.productionTip = false
-Vue.prototype.$fire = new Vue();
-Vue.prototype.$store = store;
-Vue.prototype.$util = {msg,prePage,modal};
-Vue.prototype.$api = Api;
-Vue.prototype.$reg = Regs;
+Vue.prototype.$fire = new Vue()
+Vue.prototype.$store = store
+Vue.prototype.$util = {msg,prePage,modal}
+Vue.prototype.$api = Api
+Vue.prototype.$reg = Regs
 
 App.mpType = 'app'
 

+ 21 - 0
pages.json

@@ -561,6 +561,27 @@
 						"enablePullDownRefresh":true
 					}
 				},
+				{
+					"path": "pages/activity/activity-topic",
+					"style": {
+						"navigationBarTitleText": "活动专题",
+						"enablePullDownRefresh":true
+					}
+				},
+				{
+					"path": "pages/activity/activity-detail",
+					"style": {
+						"navigationBarTitleText": "活动专题",
+						"enablePullDownRefresh":true
+					}
+				},
+				{
+					"path": "pages/activity/activity-floorMore",
+					"style": {
+						"navigationBarTitleText": "更多",
+						"enablePullDownRefresh":true
+					}
+				},
 				{
 					"path": "pages/activity/meobohui-booth",
 					"style": {

+ 16 - 7
pages/goods/cart.vue

@@ -2,7 +2,7 @@
 	<view class="container cart clearfix" v-if="hasLogin" :style="{paddingTop:CustomBar+'px'}"> 	
 		<headerNavbar :systeminfo='systeminfo' :navbar-data='nvabarData' :headerBtnPosi ="headerBtnPosi" :page='1'></headerNavbar>
 		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5"></tui-skeleton>
-		<view class="container-cart-main tui-skeleton" :style="{paddingTop:isshowDelbtn ? '0rpx':'80rpx'}">
+		<view class="container-cart-main tui-skeleton" :style="{paddingTop:isshowDelbtn || goodsList.length == 0 ? '0rpx':'80rpx'}">
 			<view class="foot-check-delbtn" v-if="!isshowDelbtn && goodsList.length>0" :style="{top:CustomBar+'px'}">
 				<view class="foot-text">共<text>{{kindCount}}</text>件商品</view>
 				<view class="delBtn" @tap.stop="showDelManager">删除</view>
@@ -236,12 +236,21 @@
 				})	
 			},
 			initLogin(){
-				if(uni.getStorageSync('_WX_State')){
-					this.$api.redirectTo('/pages/login/login?type=4')
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization?type=0')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						this.$api.redirectTo('/pages/login/login?type=4')
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+						this.$api.navigateTo('/pages/authorization/authorization?type=0')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	this.$api.redirectTo('/pages/login/login?type=4')
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization?type=0')
+				// }	
 			},
 			clickPopupShow(pros,type){
 				this.popupShow = true;

+ 13 - 5
pages/goods/good-floor.vue

@@ -54,11 +54,19 @@
 		},
 		onLoad(option) {
 			if(option.type =='share'){
-				if(uni.getStorageSync('_WX_State')){
-					wxLogin.wxLoginAuthorize()
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						wxLogin.wxLoginAuthorize()
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	wxLogin.wxLoginAuthorize()
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// }	
 			}
 			this.pageId = option.linkId
 			this.$api.getComStorage('userInfo').then((resolve) =>{

+ 14 - 6
pages/goods/goods-classify.vue

@@ -241,12 +241,20 @@
 		onLoad(option) {
 			console.log(option)
 			if(option.type =='share'){
-				if(uni.getStorageSync('_WX_State')){
-					wxLogin.wxLoginAuthorize()
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						wxLogin.wxLoginAuthorize()
+					}else{
+						this.$api.navigateTo('/pages/authorization/authorization')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	wxLogin.wxLoginAuthorize()
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization')
+				// }	
 			}
 			this.SetScrollHeight()
 			this.InitOption(option)

+ 14 - 6
pages/goods/instrument-details.vue

@@ -207,12 +207,20 @@
 				this.backPage = option.page
 			}
 			if(this.isShareType =='share'){
-				if(uni.getStorageSync('_WX_State')){
-					wxLogin.wxLoginAuthorize()
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						wxLogin.wxLoginAuthorize()
+					}else{
+						this.$api.navigateTo('/pages/authorization/authorization')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	wxLogin.wxLoginAuthorize()
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization')
+				// }	
 			}
 		},
 		methods:{

+ 79 - 37
pages/goods/product.vue

@@ -369,12 +369,20 @@
 				this.backPage = option.page
 			}
 			if(this.isShareType =='share'){
-				if(uni.getStorageSync('_WX_State')){
-					wxLogin.wxLoginAuthorize()
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						wxLogin.wxLoginAuthorize()
+					}else{
+						this.$api.navigateTo('/pages/authorization/authorization')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	wxLogin.wxLoginAuthorize()
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization')
+				// }
 			}
 			this.getWinHeight()
 		},
@@ -387,7 +395,7 @@
 						identity:this.identity,
 					}
 				)
-				.then(response =>{	
+				.then(response =>{
 					this.skeletonShow = false
 					this.productImage=[];
 					this.shop = response.data.shop
@@ -398,9 +406,9 @@
 						this.isInvalid = true
 					}else if(this.product.validFlag === '9'){
 						if(this.userIdentity == 1){
-							this.isInvalid = true
-						}else{
 							this.isInvalid = false
+						}else{
+							this.isInvalid = true
 						}
 					}
 					this.ladderPriceFlag = this.product.ladderPriceFlag;
@@ -428,7 +436,7 @@
 					if(this.product.validFlag =='3' || this.stock == 0){
 						this.isNoneDisabled = true
 						this.disabled = true
-					}else{			
+					}else{
 						this.disabled = false
 						this.isNoneDisabled = false
 						this.goodsData.disabledText = ''
@@ -498,28 +506,52 @@
 				console.log(e.detail.query)
 			},
 			buyProductCart(){//底部购物车按钮点击
-				if(uni.getStorageSync('_WX_State')){
-					if(this.hasLogin){
-						this.$api.navigateTo('/pages/goods/cart')
-					}else{					
-						this.$api.navigateTo('/pages/login/login?type=1')
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						if(this.hasLogin){
+							this.$api.navigateTo('/pages/goods/cart')
+						}else{
+							this.$api.navigateTo('/pages/login/login?type=1')
+						}
+					}else{
+						this.$api.navigateTo('/pages/authorization/authorization?type=1')
 					}
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization?type=1')
-				}	
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	if(this.hasLogin){
+				// 		this.$api.navigateTo('/pages/goods/cart')
+				// 	}else{
+				// 		this.$api.navigateTo('/pages/login/login?type=1')
+				// 	}
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization?type=1')
+				// }
 			},
 			btnGetConfirm(type){//加入购物车&&立即购买点击
-				if(uni.getStorageSync('_WX_State')){
-					if(this.hasLogin){
-						this.showSpec(type);
-					}else{					
-						this.$api.navigateTo('/pages/login/login?type=1')
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						if(this.hasLogin){
+							this.showSpec(type);
+						}else{
+							this.$api.navigateTo('/pages/login/login?type=1')
+						}
+					}else{
+						this.$api.navigateTo('/pages/authorization/authorization?type=1')
 					}
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization?type=1')
-				}	
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	if(this.hasLogin){
+				// 		this.showSpec(type);
+				// 	}else{
+				// 		this.$api.navigateTo('/pages/login/login?type=1')
+				// 	}
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization?type=1')
+				// }
 			},	
 			changeCountAdd(){//popup弹窗数量增加按钮
 				if(this.buyRetailPriceStep == 2){
@@ -614,14 +646,24 @@
 				})
 			},
 			navToLogin(){
-				if(uni.getStorageSync('_WX_State')){
-					this.$store.commit('setLoginType',8)
-					this.$store.commit('setLoginProductId',this.productId)
-					this.$api.navigateTo(`/pages/login/login?id=${this.productID}`)
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization?type=1')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						this.$store.commit('setLoginType',8)
+						this.$store.commit('setLoginProductId',this.productID)
+						this.$api.navigateTo(`/pages/login/login?id=${this.productID}`)
+					}else{
+						this.$api.navigateTo('/pages/authorization/authorization?type=1')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	this.$store.commit('setLoginType',8)
+				// 	this.$store.commit('setLoginProductId',this.productID)
+				// 	this.$api.navigateTo(`/pages/login/login?id=${this.productID}`)
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization?type=1')
+				// }
 			},
 			setHeaderBtnPosi(){
 				// 获得胶囊按钮位置信息
@@ -756,7 +798,7 @@
 		},
 		onShow() {
 			this.$api.getStorage().then((resolve) => {
-				this.userId = resolve.userId ? resolve.userId : '';	
+				this.userId = resolve.userId ? resolve.userId : '';
 				this.userIdentity = resolve.userIdentity ? resolve.userIdentity : 0
 				this.shopID =  resolve.shopId ? resolve.shopId : '';
 				if(this.userIdentity == 0 || this.userIdentity == 2 || this.userIdentity == 4){

+ 32 - 13
pages/login/bindOperator.vue

@@ -104,13 +104,23 @@
 			console.log(option)
 			uni.setStorageSync('bind_id', option.userID);
 			this.getVerificationCode()
-			if(uni.getStorageSync('_WX_State')){
-				this.getWxAuthorize()
-			}else{
-				console.log(new Date +'用户未授权微信信息')
-				this.$api.navigateTo('/pages/authorization/authorization?type=0')
-				this.isUserInfo = true
-			}	
+			authorize.getSetting().then(res =>{
+				console.log('用户是否授权过',res)
+				if(res == 1){
+					this.getWxAuthorize()
+				}else{
+					console.log(new Date +'用户未授权微信信息')
+					this.$api.navigateTo('/pages/authorization/authorization?type=0')
+					this.isUserInfo = true
+				}
+			})	
+			// if(uni.getStorageSync('_WX_State')){
+			// 	this.getWxAuthorize()
+			// }else{
+			// 	console.log(new Date +'用户未授权微信信息')
+			// 	this.$api.navigateTo('/pages/authorization/authorization?type=0')
+			// 	this.isUserInfo = true
+			// }	
 		},
 		methods:{
 			...mapMutations(['login','logout']),
@@ -167,12 +177,21 @@
 					this.$util.msg('验证码格式不正确',2000)
 					return
 				}
-				if(uni.getStorageSync('_WX_State')){
-					this.bindingWechatLogin()
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						this.bindingWechatLogin()
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+						this.$api.navigateTo('/pages/authorization/authorization')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	this.bindingWechatLogin()
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization')
+				// }	
 			},
 			getVerificationCode(){//图形验证
 				this.PublicService.GetImgVerifyCode().then(res => {

+ 15 - 6
pages/login/binding.vue

@@ -243,12 +243,21 @@
 			}
 		},
 		onShow() {
-			if(uni.getStorageSync('_WX_State')){
-				this.getWxAuthorize()
-			}else{
-				console.log(new Date +'用户未授权微信信息')
-				this.$api.navigateTo('/pages/authorization/authorization')
-			}	
+			authorize.getSetting().then(res =>{
+				console.log('用户是否授权过',res)
+				if(res == 1){
+					this.getWxAuthorize()
+				}else{
+					console.log(new Date +'用户未授权微信信息')
+					this.$api.navigateTo('/pages/authorization/authorization')
+				}
+			})
+			// if(uni.getStorageSync('_WX_State')){
+			// 	this.getWxAuthorize()
+			// }else{
+			// 	console.log(new Date +'用户未授权微信信息')
+			// 	this.$api.navigateTo('/pages/authorization/authorization')
+			// }	
 		}
 	}
 </script>

+ 30 - 12
pages/login/login.vue

@@ -63,12 +63,21 @@
 					this.$util.msg('请输入密码',2000)
 					return
 				}
-				if(uni.getStorageSync('_WX_State')){
-					this.AorganizationLogin()
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization?type=0')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						this.AorganizationLogin()
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+						this.$api.navigateTo('/pages/authorization/authorization?type=0')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	this.AorganizationLogin()
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization?type=0')
+				// }	
 			},
 			AorganizationLogin(){
 				this.UserService.AorganizationLogin(this.params)
@@ -95,12 +104,21 @@
 				this.isShowEye = !this.isShowEye;
 			},
 			async InitAuthorize(){ //是否已授权 0:为取消授权 1:为已授权 2:为未操作
-				if(uni.getStorageSync('_WX_State')){
-					wxLogin.wxLoginQuick()
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization?type=0')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						wxLogin.wxLoginQuick()
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+						this.$api.navigateTo('/pages/authorization/authorization?type=0')
+					}
+				})	
+				// if(uni.getStorageSync('_WX_State')){
+				// 	wxLogin.wxLoginQuick()
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization?type=0')
+				// }	
 			}
 		},
 		onShow() {

+ 9 - 3
pages/login/logincode.vue

@@ -80,9 +80,15 @@
 				})
 			},
 			InitAuthorize(){ //是否已授权 0:为取消授权 1:为已授权 2:为未操作
-				if(uni.getStorageSync('_WX_State')){
-					wxLogin.wxLoginQuick()
-				}
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						wxLogin.wxLoginQuick()
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	wxLogin.wxLoginQuick()
+				// }
 			}
 		},
 		onShow() {

+ 15 - 6
pages/login/register-supplier.vue

@@ -645,12 +645,21 @@
 			}
 		},
 		onShow() {
-			if(uni.getStorageSync('_WX_State')){
-				wxLogin.wxLoginQuick()
-			}else{
-				console.log(new Date +'用户未授权微信信息')
-				this.$api.navigateTo('/pages/authorization/authorization?type=0')
-			}	
+			authorize.getSetting().then(res =>{
+				console.log('用户是否授权过',res)
+				if(res == 1){
+					wxLogin.wxLoginQuick()
+				}else{
+					console.log(new Date +'用户未授权微信信息')
+					this.$api.navigateTo('/pages/authorization/authorization?type=0')
+				}
+			})
+			// if(uni.getStorageSync('_WX_State')){
+			// 	wxLogin.wxLoginQuick()
+			// }else{
+			// 	console.log(new Date +'用户未授权微信信息')
+			// 	this.$api.navigateTo('/pages/authorization/authorization?type=0')
+			// }	
 		}
 	}
 </script>

+ 15 - 6
pages/login/register.vue

@@ -230,12 +230,21 @@
 				}
 			},
 			async InitAuthorize(){ //是否已授权 0:为取消授权 1:为已授权 2:为未操作
-				if(uni.getStorageSync('_WX_State')){
-					wxLogin.wxLoginQuick()
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization?type=0')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						wxLogin.wxLoginQuick()
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+						this.$api.navigateTo('/pages/authorization/authorization?type=0')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	wxLogin.wxLoginQuick()
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization?type=0')
+				// }	
 			}
 		},
 		onShow() {

+ 15 - 6
pages/tabBar/cart/cart.vue

@@ -224,12 +224,21 @@
 				})	
 			},
 			initLogin(){
-				if(uni.getStorageSync('_WX_State')){
-					this.$api.redirectTo('/pages/login/login?type=4')
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization?type=0')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						this.$api.redirectTo('/pages/login/login?type=4')
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+						this.$api.navigateTo('/pages/authorization/authorization?type=0')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	this.$api.redirectTo('/pages/login/login?type=4')
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization?type=0')
+				// }	
 			},
 			clickPopupShow(pros,type){
 				this.popupShow = true;

+ 37 - 13
pages/tabBar/home/index.vue

@@ -19,7 +19,7 @@
 		<!-- 侧边 -->
 		<scroll-top :isScrollTop="isScrollTop" :bottom="50"></scroll-top>
 		<!-- 活动弹窗 -->
-		<!-- <activityAlert :show="isActivity" @click="handleClick" @cancel="handleCancelClick"></activityAlert> -->
+		<activityAlert :show="isActivity" @click="handleClick" @cancel="handleCancelClick"></activityAlert>
 	</view>
 </template>
 
@@ -120,6 +120,7 @@
 				this.CommonService.GetHomeInit({source:2}).then(response =>{
 					let data = response.data
 					this.navBarsList = data.topMenuList
+					console.log(this.navBarsList);
 					this.isNavRequest = true
 				}).catch(error =>{
 					this.$util.msg(error.msg,2000)
@@ -158,10 +159,20 @@
 				})
 			},
 			handleClick(data){
-				this.$api.navigateTo(`/h5/pages/activity/meobohui`)
+				const pageId = 306
+				this.$api.navigateTo(`/h5/pages/activity/activity-topic?linkId=${pageId}`)
 				this.$store.commit('setActivity',data)
 				uni.setStorageSync('lockTime',Date.now())	
-				uni.setStorageSync('isActivityStatus',true)	
+				uni.setStorageSync('isActivityStatus',true)
+				// debugger
+				// 友盟自定义事件
+				if(process.env.NODE_ENV != 'development'){
+					this.$uma.trackEvent('meibohui_click', {
+						Um_Key_PageName: '美博会',
+						Um_Key_PageCategory: '活动专题页面',
+						Um_Key_SourcePage: '首页',
+					})
+				}
 			},
 			handleCancelClick(data){
 				this.$store.commit('setActivity',data)
@@ -169,16 +180,29 @@
 				uni.setStorageSync('isActivityStatus',true)	
 			},
 			InitAuthorize(){ //是否已授权 
-				if(uni.getStorageSync('_WX_State')){
-					this.GetWxAuthorize()
-				}else{
-					this.$api.getComStorage('userInfo').then((resolve) =>{
-						this.userID = resolve.userId ? resolve.userId :0;
-						this.getHomeInformation()
-					}).catch(error =>{
-						this.getHomeInformation()
-					})
-				}
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						this.GetWxAuthorize()
+					}else{
+						this.$api.getComStorage('userInfo').then((resolve) =>{
+							this.userID = resolve.userId ? resolve.userId :0;
+							this.getHomeInformation()
+						}).catch(error =>{
+							this.getHomeInformation()
+						})
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	this.GetWxAuthorize()
+				// }else{
+				// 	this.$api.getComStorage('userInfo').then((resolve) =>{
+				// 		this.userID = resolve.userId ? resolve.userId :0;
+				// 		this.getHomeInformation()
+				// 	}).catch(error =>{
+				// 		this.getHomeInformation()
+				// 	})
+				// }
 			}
 		},
 		onPageScroll(e){//实时获取到滚动的值

+ 42 - 18
pages/tabBar/user/user.vue

@@ -100,9 +100,9 @@
 			</view>
 			<!-- 底部跳转 -->
 			<view class="foot-list">
-<!-- 				<view class="list-cell-avtiv" @click="navigator('/pages/user/coupon/coupon')">
-					<image src="http://static.caimei365.com/app/meibohui/meibo_coupon_03.png" mode=""></image>
-				</view> -->
+				<view class="list-cell-avtiv" @click="navigator('/pages/user/coupon/coupon')">
+					<image src="http://static.caimei365.com/app/meibohui/app/activity-in.png" mode=""></image>
+				</view>
 				<view class="list-cell-item" v-show="hasLogin">
 					<view class="list-cell" v-show="userIdentity == 4" @click="navigator(`/pages/login/apply?clubStatus=${clubStatus}`)" hover-class="cell-hover" :hover-stay-time="50">
 						<text class="cell-icon"><text class="iconfont icon-shengjihuiyuanjigou"></text></text>
@@ -277,27 +277,51 @@
 				})
 			},
 			navigator(url){
-				if(uni.getStorageSync('_WX_State')){
-					if(this.hasLogin){
-						this.$api.navigateTo(url)
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						if(this.hasLogin){
+							this.$api.navigateTo(url)
+						}else{
+							this.$api.navigateTo('/pages/login/login?type=0')
+						}
 					}else{
-						this.$api.navigateTo('/pages/login/login?type=0')
+						console.log(new Date +'用户未授权微信信息')
+						this.$api.navigateTo('/pages/authorization/authorization?type=1')
 					}
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization?type=1')
-				}	
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	if(this.hasLogin){
+				// 		this.$api.navigateTo(url)
+				// 	}else{
+				// 		this.$api.navigateTo('/pages/login/login?type=0')
+				// 	}
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization?type=1')
+				// }	
 			},	
 			navigatorNex(url,type){
 				console.log(this.isWxAuthorize)
-				if(uni.getStorageSync('_WX_State')){
-					if(!this.hasLogin){
-						this.$api.navigateTo(url)
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						if(!this.hasLogin){
+							this.$api.navigateTo(url)
+						}
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+						this.$api.navigateTo(`/pages/authorization/authorization?type=${type}`)
 					}
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo(`/pages/authorization/authorization?type=${type}`)
-				}	
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	if(!this.hasLogin){
+				// 		this.$api.navigateTo(url)
+				// 	}
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo(`/pages/authorization/authorization?type=${type}`)
+				// }	
 			},		
 			showBadge(n){
 				let num ='';

+ 14 - 7
pages/user/coupon/coupon.vue

@@ -1,8 +1,9 @@
 <template>
-	<view class="container home clearfix">
-		<view class="coupon-title" v-if="userIdentity == 4">优惠券仅限{{userName}}(机构)使用 </view>
-		<view class="coupon-title" v-if="userIdentity == 2">优惠券仅限{{userName}}使用 </view>
-		<image class="coupon-image" src="http://static.caimei365.com/app/meibohui/meibo_coupon_04.jpg" mode=""></image>
+	<view class="container home clearfix" v-if="hasLogin">
+		<!-- <view class="coupon-title" v-if="userIdentity == 4">优惠券仅限{{userName}}(机构)使用 </view> -->
+		<view class="coupon-title" v-if="userIdentity == 4 || userIdentity == 2">优惠券仅限采美机构会员使用</view>
+		<!-- <view class="coupon-title" v-if="userIdentity == 2">优惠券仅限{{userName}}使用 </view> -->
+		<image class="coupon-image" src="http://static.caimei365.com/app/meibohui/app/activity-detail.jpg" mode=""></image>
 	</view>
 </template>
 
@@ -19,7 +20,11 @@
 			}
 		},
 		onLoad() {
-
+			if(!this.hasLogin){
+				uni.redirectTo({
+					url:'../../login/login'
+				})
+			}
 		},
 		computed: {
 			...mapState(['hasLogin','userInfo','identity','isActivity'])
@@ -40,12 +45,14 @@
 
 <style lang="scss">
 	page{
-		background-color: #ff2e4c;
+		
 	}
 	.container{
 		width: 100%;
 		height: auto;
+		background-color: #ff2e4c;
 		.coupon-title{
+			position: absolute;
 			width: 100%;
 			height: 110rpx;
 			line-height: 110rpx;
@@ -62,7 +69,7 @@
 		}
 		.coupon-image{
 			width: 100%;
-			height: 2381rpx;
+			height: 1860rpx;
 			display: block;
 			
 		}

+ 16 - 6
search/pages/search/search-instrument.vue

@@ -42,6 +42,7 @@
 	import wxLogin from "@/common/config/wxLogin.js"
 	import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
 	import tuiNomore from "@/components/tui-components/nomore/nomore"
+	import { mapState } from 'vuex'
 	export default {
 		components:{
 			tuiLoadmore,
@@ -70,12 +71,21 @@
 		},
 		onLoad(option){
 			if(option.type =='share'){
-				if(uni.getStorageSync('_WX_State')){
-					wxLogin.wxLoginAuthorize()
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						wxLogin.wxLoginAuthorize()
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+						this.$api.navigateTo('/pages/authorization/authorization')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	wxLogin.wxLoginAuthorize()
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization')
+				// }	
 			}
 			if(option.keyWord){
 				this.listQuery.keyword = option.keyWord

+ 16 - 6
search/pages/search/search-supplier.vue

@@ -77,6 +77,7 @@
 	import uniStars from '@/components/uni-stars/uni-stars.vue'
 	import authorize from '@/common/config/authorize.js'	
 	import wxLogin from "@/common/config/wxLogin.js"
+	import { mapState } from 'vuex'
 	
 	export default {
 		components:{
@@ -109,12 +110,21 @@
 		},
 		onLoad(option){
 			if(option.type =='share'){
-				if(uni.getStorageSync('_WX_State')){
-					wxLogin.wxLoginAuthorize()
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						wxLogin.wxLoginAuthorize()
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+						this.$api.navigateTo('/pages/authorization/authorization')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	wxLogin.wxLoginAuthorize()
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization')
+				// }	
 			}
 			if(option.keyWord){
 				console.log(option.keyWord)

+ 16 - 10
search/pages/search/search.vue

@@ -210,17 +210,26 @@
 			}
 		},
 		computed: {
-			...mapState(['hasLogin','userInfo','isWxAuthorize'])
+			...mapState(['hasLogin','userInfo','isWxAuthorize','hasLogin','userInfo','identity'])
 		},
 		onLoad(option) {
 			console.log(option)
 			if(option.type =='share'){
-				if(uni.getStorageSync('_WX_State')){
-					wxLogin.wxLoginAuthorize()
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						wxLogin.wxLoginAuthorize()
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+						this.$api.navigateTo('/pages/authorization/authorization')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	wxLogin.wxLoginAuthorize()
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization')
+				// }	
 			}
 			this.$api.getStorage().then((resolve) =>{
 				this.userId = resolve.userId ? resolve.userId : 0;
@@ -243,9 +252,6 @@
 				return Number(text).toFixed(2);
 			},
 		},
-		computed: {
-			...mapState(['hasLogin','userInfo','identity'])
-		},
 		methods:{
 			GetHomeHotSearchTerms(){//金刚区分类
 				this.CommonService.GetHomeHotSearchTerms({}).then(response =>{

+ 4 - 4
second/pages/form/form.vue

@@ -3,7 +3,7 @@
 	     <view class="bannerimg"><image src="https://static.caimei365.com/app/img/bg/secondbg.jpg"></image></view>
 	      <view class="my-maintenance" >
 	            <view class="newsTitle">
-					<view class="nestext">欢迎您来到采美365网二手商品市场,您可以在这里发布二手设备/产品信息,每个商品需要收取您100元的展示费,展示期为6个月; 为了完整展示您的商品,请您认真填写以下内容,谢谢合作</view>
+					<view class="nestext">欢迎您来到采美365网二手商品市场,您可以在这里发布二手设备/产品信息,每个商品需要收取您100元的展示费,展示期为3个月; 为了完整展示您的商品,请您认真填写以下内容,谢谢合作</view>
 	             </view>
 				 <form>
 					 <view class="row fenlei"> 
@@ -26,7 +26,7 @@
 						  </view>
 						  <view class="linqi_text" v-show="secondParams.secondHandType==2">
 							  <view class="jiaobiao"></view>
-							  <p class="p">临期产品是指临近保质期的产品,距离到期日最好在6个月以上</p>
+							  <p class="p">临期产品是指临近保质期的产品,距离到期日最好在3个月以上</p>
 						  </view>
 					 </view>
 					 <view class="row">
@@ -224,7 +224,7 @@
 			<view class="secondBj thebj"   v-show="vShow_secondBj" :class="vShow_secondBj?'show':''">
 				<view class="bjmain theresult">
 					<span class="title">发布提示</span>
-					<p>发布二手商品,采美需要收取您每个商品100元的展示费,展示期为6个月</br>
+					<p>发布二手商品,采美需要收取您每个商品100元的展示费,展示期为3个月</br>
 						支付完成后,商品会在1-2个工作日内进行审核,审核通过后,商品会立即上线</p>
 					<view class="paybtn">
 						<view class="thegopay gozhofubao" @click.stop="quxiao">取消发布</view>
@@ -277,7 +277,7 @@
 					name:'',
 					brandId:'',//品牌ID
 					brandName:'',//其他品牌
-					fixedYears:null,//出厂
+					fixedYears:'',//出厂
 					companyName:'',//公司名称
 					maturityYears:'',//产品到期
 					price:'',//交易价

+ 34 - 14
second/pages/product/product-details.vue

@@ -223,12 +223,21 @@
 				this.backPage = option.page
 			}
 			if(this.isShareType =='share'){
-				if(uni.getStorageSync('_WX_State')){
-					wxLogin.wxLoginAuthorize()
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						wxLogin.wxLoginAuthorize()
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+						this.$api.navigateTo('/pages/authorization/authorization')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	wxLogin.wxLoginAuthorize()
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization')
+				// }	
 			}
 		},
 		methods:{
@@ -283,14 +292,25 @@
 
 			},
 			navToLogin(){
-				if(uni.getStorageSync('_WX_State')){
-					this.$store.commit('setLoginType',8)
-					this.$store.commit('setLoginProductId',this.productID)
-					this.$api.navigateTo(`/pages/login/login?id=${this.productID}`)
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization?type=1')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						this.$store.commit('setLoginType',8)
+						this.$store.commit('setLoginProductId',this.productID)
+						this.$api.navigateTo(`/pages/login/login?id=${this.productID}`)
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+						this.$api.navigateTo('/pages/authorization/authorization?type=1')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	this.$store.commit('setLoginType',8)
+				// 	this.$store.commit('setLoginProductId',this.productID)
+				// 	this.$api.navigateTo(`/pages/login/login?id=${this.productID}`)
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization?type=1')
+				// }	
 			},
 			setHeaderBtnPosi(){
 				// 获得胶囊按钮位置信息

+ 13 - 5
second/pages/product/product-list.vue

@@ -157,11 +157,19 @@
 		},
 		onLoad(option) {
 			if(option.type =='share'){
-				if(uni.getStorageSync('_WX_State')){
-					wxLogin.wxLoginAuthorize()
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-				}
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						wxLogin.wxLoginAuthorize()
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	wxLogin.wxLoginAuthorize()
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// }
 			}
 		},
 		methods:{

+ 30 - 12
seller/pages/login/login.vue

@@ -95,12 +95,21 @@
 					this.$util.msg('请输入密码',2000)
 					return
 				}
-				if(uni.getStorageSync('_WX_State')){
-					this.SellerLogin()
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization?type=1')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						this.SellerLogin()
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+						this.$api.navigateTo('/pages/authorization/authorization?type=1')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	this.SellerLogin()
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization?type=1')
+				// }	
 			},
 			SellerLogin(){
 				this.SellerService.SellerLogin(this.params)
@@ -135,12 +144,21 @@
 			},
 		},
 		onShow() {
-			if(uni.getStorageSync('_WX_State')){
-				this.getWxAuthorize()
-			}else{
-				this.$api.navigateTo('/pages/authorization/authorization')
-				this.isSeller= true
-			}	
+			authorize.getSetting().then(res =>{
+				console.log('用户是否授权过',res)
+				if(res == 1){
+					this.SellerLogin()
+				}else{
+					console.log(new Date +'用户未授权微信信息')
+					this.$api.navigateTo('/pages/authorization/authorization?type=1')
+				}
+			})
+			// if(uni.getStorageSync('_WX_State')){
+			// 	this.getWxAuthorize()
+			// }else{
+			// 	this.$api.navigateTo('/pages/authorization/authorization')
+			// 	this.isSeller= true
+			// }	
 		}
 	}
 </script>

+ 4 - 1
services/common.service.js

@@ -139,5 +139,8 @@ export default class CommonService {
 			isHost:true
 		})
 	}
-	
+	/*活动页面获取楼层*/
+	GetActivityFloorData (data = {}) {
+		return this.AjaxService.get({ url:'/home/activity/data', data, isLoading: false })
+	}
 }

+ 36 - 15
supplier/pages/login/share-info.vue

@@ -39,14 +39,25 @@
 					this.source = 3
 				}
 			}
-			if(uni.getStorageSync('_WX_State')){
-				this.infoMiniShipments();
-			}else{
-				this.$api.navigateTo('/pages/authorization/authorization?type=4')
-				setTimeout(()=>{
-					this.isRequest = true
-				},2000)
-			}	
+			authorize.getSetting().then(res =>{
+				console.log('用户是否授权过',res)
+				if(res == 1){
+					this.infoMiniShipments();
+				}else{
+					this.$api.navigateTo('/pages/authorization/authorization?type=4')
+					setTimeout(()=>{
+						this.isRequest = true
+					},2000)
+				}
+			})
+			// if(uni.getStorageSync('_WX_State')){
+			// 	this.infoMiniShipments();
+			// }else{
+			// 	this.$api.navigateTo('/pages/authorization/authorization?type=4')
+			// 	setTimeout(()=>{
+			// 		this.isRequest = true
+			// 	},2000)
+			// }	
 		},
 		methods:{
 			infoMiniShipments(){
@@ -90,13 +101,23 @@
 			}
 		},
 		onShow() {
-			if(uni.getStorageSync('_WX_State')){
-				this.isRequest = false;
-				this.infoMiniShipments();
-			}else{
-				console.log(new Date +'用户未授权微信信息')
-				this.$api.navigateTo('/pages/authorization/authorization')
-			}	
+			authorize.getSetting().then(res =>{
+				console.log('用户是否授权过',res)
+				if(res == 1){
+					this.isRequest = false;
+					this.infoMiniShipments();
+				}else{
+					console.log(new Date +'用户未授权微信信息')
+					this.$api.navigateTo('/pages/authorization/authorization')
+				}
+			})
+			// if(uni.getStorageSync('_WX_State')){
+			// 	this.isRequest = false;
+			// 	this.infoMiniShipments();
+			// }else{
+			// 	console.log(new Date +'用户未授权微信信息')
+			// 	this.$api.navigateTo('/pages/authorization/authorization')
+			// }	
 		}
 	}
 </script>

+ 21 - 12
supplier/pages/user/my-shop.vue

@@ -51,7 +51,7 @@
 											{{prop.promotions.name}}
 											<text v-if="hasLogin && prop.priceFlag != 1 && prop.shopId == shopId">:¥{{prop.price | NumFormat}}</text>
 										</view>
-										<view class="floor-tags" v-else>{{prop.promotions.name}}</view>	
+										<view class="floor-tags" v-else>{{prop.promotions.name}}</view>
 									</template>
 									<template v-if="prop.actStatus ===0  &&  prop.ladderPriceFlag===1">
 										<view class="floor-tags">阶梯价格</view>	
@@ -63,7 +63,7 @@
 											{{prop.promotions.name}}
 											<text v-if="hasLogin && prop.priceFlag != 1">:¥{{prop.price | NumFormat}}</text>
 										</view>
-										<view class="floor-tags" v-else>{{prop.promotions.name}}</view>	
+										<view class="floor-tags" v-else>{{prop.promotions.name}}</view>
 									</template>
 									<template v-if="prop.actStatus ===0  &&  prop.ladderPriceFlag===1">
 										<view class="floor-tags">阶梯价格</view>	
@@ -120,7 +120,7 @@
 										<view class="floor-tags" v-if="PromotionsFormat(prop.promotions)">
 											{{prop.promotions.name}}<text v-if="hasLogin && prop.priceFlag != 1">:¥{{prop.price | NumFormat}}</text>
 										</view>
-										<view class="floor-tags" v-else>{{prop.promotions.name}}</view>	
+										<view class="floor-tags" v-else>{{prop.promotions.name}}</view>
 									</template>
 									<template v-if="prop.actStatus ==0  &&  prop.ladderPriceFlag==1">
 										<view class="floor-tags">阶梯价格</view>	
@@ -152,7 +152,7 @@
 											{{prop.promotions.name}}
 											<text v-if="hasLogin && prop.priceFlag != 1 && prop.shopId == shopId">:¥{{prop.price | NumFormat}}</text>
 										</view>
-										<view class="floor-tags" v-else>{{prop.promotions.name}}</view>	
+										<view class="floor-tags" v-else>{{prop.promotions.name}}</view>
 									</template>
 									<template v-if="prop.actStatus ===0  &&  prop.ladderPriceFlag===1">
 										<view class="floor-tags">阶梯价格</view>	
@@ -164,7 +164,7 @@
 											{{prop.promotions.name}}
 											<text v-if="hasLogin && prop.priceFlag != 1">:¥{{prop.price | NumFormat}}</text>
 										</view>
-										<view class="floor-tags" v-else>{{prop.promotions.name}}</view>	
+										<view class="floor-tags" v-else>{{prop.promotions.name}}</view>
 									</template>
 									<template v-if="prop.actStatus ===0  &&  prop.ladderPriceFlag===1">
 										<view class="floor-tags">阶梯价格</view>	
@@ -277,12 +277,21 @@
 		},
 		onLoad(option) {
 			if(option.type =='share'){
-				if(uni.getStorageSync('_WX_State')){
-					wxLogin.wxLoginAuthorize()
-				}else{
-					console.log(new Date +'用户未授权微信信息')
-					this.$api.navigateTo('/pages/authorization/authorization')
-				}	
+				authorize.getSetting().then(res =>{
+					console.log('用户是否授权过',res)
+					if(res == 1){
+						wxLogin.wxLoginAuthorize()
+					}else{
+						console.log(new Date +'用户未授权微信信息')
+						this.$api.navigateTo('/pages/authorization/authorization')
+					}
+				})
+				// if(uni.getStorageSync('_WX_State')){
+				// 	wxLogin.wxLoginAuthorize()
+				// }else{
+				// 	console.log(new Date +'用户未授权微信信息')
+				// 	this.$api.navigateTo('/pages/authorization/authorization')
+				// }
 			}
 			this.listQuery.id = this.supplierId = option.shopId
 			this.$api.getStorage().then((resolve) =>{
@@ -298,7 +307,7 @@
 			NumFormat:function(text) {//处理金额
 				return Number(text).toFixed(2);
 			},
-		},	
+		},
 		methods: {
 			...mapMutations(['login','logout']),
 			InitShopDataInfo(){//初始化请求数据