xiebaomin 1 gadu atpakaļ
vecāks
revīzija
55960a67d1
40 mainītis faili ar 1718 papildinājumiem un 1116 dzēšanām
  1. 2 0
      common/config/caimeiApi.js
  2. 3 3
      components/cm-module/cart-components/cm-unit-popup.vue
  3. 17 7
      components/cm-module/cart-components/index.vue
  4. 12 12
      components/cm-module/cm-ross/cm-ross-popup.vue
  5. 23 15
      components/cm-module/homeIndex/banner.vue
  6. 284 110
      components/cm-module/homeIndex/customer.vue
  7. 81 128
      components/cm-module/homeIndex/navbars.vue
  8. 29 11
      components/cm-module/productDetails/cm-unit-popup.vue
  9. 0 35
      components/cm-module/scrollTop/scrollTop.vue
  10. 8 1
      pages.json
  11. 100 0
      pages/goods/channel.vue
  12. 50 93
      pages/goods/components/cm-product-doc.vue
  13. 17 7
      pages/goods/components/cm-unit-popup.vue
  14. 1 1
      pages/goods/product.vue
  15. 4 0
      pages/h5/article/path.vue
  16. 1 1
      pages/login/register.vue
  17. 3 3
      pages/search/search-supplier.vue
  18. 2 2
      pages/search/search.vue
  19. 18 9
      pages/seller/cart/cart.vue
  20. 31 13
      pages/seller/cart/components/cm-unit-popup.vue
  21. 2 3
      pages/seller/cart/immediately.vue
  22. 48 47
      pages/seller/club/components/cm-club-drawer.vue
  23. 5 9
      pages/seller/club/list.vue
  24. 11 30
      pages/seller/components/home.vue
  25. 7 0
      pages/seller/index/index.vue
  26. 2 2
      pages/seller/login/information.vue
  27. 1 1
      pages/seller/login/register.vue
  28. 44 37
      pages/seller/notice/components/notice-cell.vue
  29. 71 0
      pages/seller/notice/components/notice-server-tab.vue
  30. 6 2
      pages/seller/notice/mixins/notice.mixins.js
  31. 2 1
      pages/seller/notice/service/Institutional_visits.vue
  32. 21 11
      pages/seller/notice/service/service.vue
  33. 26 16
      pages/seller/notice/service/visits_details.vue
  34. 100 84
      pages/supplier/components/banner.vue
  35. 11 14
      pages/supplier/components/home.vue
  36. 652 381
      pages/supplier/user/my-shop.vue
  37. 5 16
      pages/tabBar/home/index.vue
  38. 8 0
      services/shop.service.js
  39. 10 11
      utils/cmSrsMixins.js
  40. 0 0
      utils/crypto-js/crypto.js

+ 2 - 0
common/config/caimeiApi.js

@@ -260,6 +260,7 @@ const caimeiApi = {
                     28:`/pages/h5/article/path?link=${pros.link}`, // 采美认证通
                     29:'/pages/user/coupon/coupon-collection',//领券中心
                     30:`/pages/h5/activity/quick-operation?linkId=${pros.linkParam.id}`, // 快捷运营入口
+                    31:'/pages/login/supplier_login'
                 }
                 const url = typeMap[pros.linkType]
                 uni.navigateTo({
@@ -294,6 +295,7 @@ const caimeiApi = {
                 28:`/pages/h5/article/path?link=${linkHref}`, // 采美认证通
                 29:'/pages/user/coupon/coupon-collection',//领券中心
                 30:`/pages/h5/activity/quick-operation?linkId=${linkId}`, // 快捷运营入口
+                31:'/pages/login/supplier_login'
             }
             const url = typeMap[linkType]
             uni.navigateTo({

+ 3 - 3
components/cm-module/cart-components/cm-unit-popup.vue

@@ -65,8 +65,8 @@
 					</view>
 				</view>
 				<view class="sku-unit-nunbox">
-					<view class="sku-unit-nunbox" v-if="skuProduct.step === 2">
-						<view class="text">*该商品只能以起订量的整数倍购买</view>
+					<view class="sku-unit-nunbox-t" v-if="skuProduct.step === 2">
+						<view class="text">该商品只能以起订量的整数倍购买</view>
 					</view>
 					<view class="sku-unit-nunbox-t">
 						<view class="sku-unit-nunbox-text">购买数量:</view>
@@ -365,7 +365,7 @@ export default {
 			.text {
 				font-size: $font-size-24;
 				line-height: 48rpx;
-				color: #999999;
+				color: #FF5B00;
 			}
 			.sku-unit-nunbox-text {
 				line-height: 44rpx;

+ 17 - 7
components/cm-module/cart-components/index.vue

@@ -124,6 +124,7 @@
 																v-model="pros.number"
 																@blur="changeNnmber($event, item, pros)"
 																@focus="changeInput(pros)"
+																cursor-spacing="80"
 															/>
 															<view
 																class="iconfont icon-jiahao"
@@ -724,6 +725,7 @@ export default {
 						this.goodsList.forEach((supplier, index) => {
 							supplier.cartList.forEach(pros => {
 								pros.shopId = supplier.shopId
+								pros.productCount = pros.number
 								pros.isStep = false
 								if(pros.stock === 0 || pros.number > pros.stock ){
 								    supplier.isDisable = true
@@ -1233,20 +1235,28 @@ export default {
 			//输入商品数量更新
 			let _value = Number(e.detail.value)
 			if (!this.$api.isNumber(_value)) {
-				pros.number = pros.min
+				pros.number = pros.productCount
 			} else if (_value < pros.min) {
 				this.$util.msg(`该商品最小起订量为${pros.min}`, 2000)
 				pros.number = pros.min
-			} else if (_value % pros.min != 0) {
-				pros.isStep = true
-				pros.number = pros.min
 			} else {
-				pros.isStep = false
-				pros.number = e.detail.value
-				this.processActivityPrice(pros)
+				if (pros.step === 2) {
+					if (_value % pros.min != 0) {
+						pros.isStep = true
+						pros.number = pros.productCount
+					}
+				}else{
+					pros.isStep = false
+					pros.number = _value
+					this.processActivityPrice(pros)
+				}
 			}
 			this.updateShoppogNum(pros)
 			this.totalShopPeice()
+			setTimeout(()=>{
+				pros.isStep = false
+				this.$forceUpdate()
+			},2000)
 		},
 		processActivityPrice(pros) {
 			//单独处理活动价格和阶梯价格

+ 12 - 12
components/cm-module/cm-ross/cm-ross-popup.vue

@@ -74,7 +74,7 @@ export default {
 			type: Boolean,
 			default: true
 		},
-		advertisement:{
+		advertisInfo:{
 			type: Object,
 			default: {}
 		}
@@ -84,7 +84,7 @@ export default {
 			userId: 0, // 用户Id
 			consultParams: {
 				ip:'',
-				shopId:'',
+				shopProductId:'',
 				createTime:'',
 				consultMobile: '',
 				consultName: '',
@@ -95,7 +95,7 @@ export default {
 		}
 	},
 	created() {
-		this.initData(this.advertisement)
+		this.initData(this.advertisInfo)
 	},
 	computed: {
 		...mapState(['hasLogin'])
@@ -105,7 +105,7 @@ export default {
 			const userInfo = await this.$api.getStorage()
 			this.userId = userInfo.userId ? userInfo.userId : 0
 			this.advertData = data
-			this.consultParams.shopId = data.shopId
+			this.consultParams.shopProductId = data.shopProductId
 		},
 		handleInputName(e) {
 			this.consultParams.name = e.detail.value
@@ -134,15 +134,15 @@ export default {
 			}
 			this.userInformationInsertRoos(this.consultParams)
 		},
-		userInformationInsertRoos(params){
+		async userInformationInsertRoos(params){
 			// 游客关闭广告弹窗
-			this.UserService.userInformationInsertRoos(params)
-				.then(response => {
-					this.$parent.showRossHtml = false
-				})
-				.catch(error => {
-					console.log('游客关闭广告弹窗失败~')
-				})
+			try{
+				await this.UserService.userInformationInsertRoos(params)
+				this.$parent.showRossHtml = false
+			}catch(e){
+				//TODO handle the exception
+				console.log('游客关闭广告弹窗失败~')
+			}
 		},
 		hidePopup() {
 			this.userInformationInsertRoos(this.consultParams)

+ 23 - 15
components/cm-module/homeIndex/banner.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="banner">
-		<view class="swiper-banner-msg">
+<!-- 		<view class="swiper-banner-msg">
 			<view class="content">
 				<view class="item le">
 					<view class="item-icon">
@@ -27,8 +27,8 @@
 					</view>
 				</view>
 			</view>
-		</view>
-		<view class="tui-rolling-view">
+		</view -->
+		<!-- <view class="tui-rolling-view">
 			<view class="tui-rolling-content">
 				<view class="tui-rolling-news">
 					<text class="tui-roll-label">公告:</text>
@@ -44,7 +44,7 @@
 					</view>
 				</view>
 			</view>
-		</view>
+		</view> -->
 		<view class="swiper-banner-content">
 			<view class="swiper-banner-box">
 				<swiper
@@ -82,9 +82,6 @@ export default {
 	props: {
 		list: {
 			type: Array
-		},
-		newsList: {
-			type: Array
 		}
 	},
 	data() {
@@ -93,7 +90,9 @@ export default {
 			StatusBar: this.StatusBar
 		}
 	},
-	created() {},
+	created() {
+		
+	},
 	computed: {},
 	methods: {
 		detail(item){// 跳转公告详情
@@ -118,7 +117,7 @@ export default {
 
 <style lang="scss" scoped>
 .banner {
-	margin-top: 50px;
+	margin-top: 170rpx;
 	background: #f7f7f7;
 }
 .swiper-banner-content {
@@ -129,7 +128,7 @@ export default {
 }
 .swiper-banner-box {
 	width: 100%;
-	height: 360rpx;
+	height: auto;
 	position: relative;
 	background-size: cover;
 	display: flex;
@@ -137,9 +136,9 @@ export default {
 	background: linear-gradient(180deg, #FFFFFF 0%, rgba(255,255,255,0) 100%);
 }
 .tui-banner-swiper {
-	width: 700rpx;
-	margin: 0 auto;
-	height: 340rpx;
+	width: 702rpx;
+	margin: 10rpx auto;
+	height: 280rpx;
 	border-radius: 16rpx;
 	overflow: hidden;
 	transform: translateY(0);
@@ -149,7 +148,7 @@ export default {
 	}
 	.tui-slide-image {
 		width: 100%;
-		height: 340rpx;
+		height: 280rpx;
 		display: block;
 	}
 }
@@ -184,7 +183,7 @@ export default {
 	width: 100%;
 	height: 48rpx;
 	box-sizing: border-box;
-	background-color: #ff5b00;
+	background-color: #FFFFFF;
 	padding: 0 24rpx;
 	.content {
 		width: 100%;
@@ -301,4 +300,13 @@ export default {
 		margin-top: 10rpx;
 	}
 }
+.tui-drop-item {
+	color: #333;
+	height: 80rpx;
+	font-size: 28rpx;
+	padding: 20rpx 40rpx 20rpx 40rpx;
+	box-sizing: border-box;
+	display: inline-block;
+	width: 50%;
+}
 </style>

+ 284 - 110
components/cm-module/homeIndex/customer.vue

@@ -1,39 +1,77 @@
 <template name="headerNavbar">
-    <!-- 自定义导航栏 -->
-    <view
-        class="navbar-wrap"
-        :class="isScroll ? opacityNav : ''"
-        :style="{
-            height: CustomBar + 55 + 'px',
-            paddingTop: StatusBar + 'px',
-        }"
-    >
-        <view
-            class="navbar-text"
-            :style="{
-                color: navbarData.textColor ? navbarData.textColor : '',
-                lineHeight: CustomBar - StatusBar + 'px;',
-                fontSize: fontSizeSetting + 'px;',
-                paddingLeft: navbarData.textLeft ? '' : 12 + 'px'
-            }"
-            :class="platformClass"
-        >
-            {{ navbarData.title ? navbarData.title : ' ' }}
-        </view>
-        <view class="search-input">
-            <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 class="gosearch-kf">
-				<!-- #ifdef MP-WEIXIN -->
-				<button class="contact-btn" open-type="contact" @bindcontact="handleContact">
-				    <text class="iconfont icon-zixunrexian"></text>
-				</button>
-				<!-- #endif -->
+	<!-- 自定义导航栏 -->
+	<view>
+		<view
+			class="navbar-wrap"
+			:class="isScroll ? opacityNav : ''"
+			:style="{
+				height: CustomBar + 88 + 'px',
+				paddingTop: StatusBar + 'px'
+			}"
+		>
+			<view
+				class="navbar-text"
+				:style="{
+					color: navbarData.textColor ? navbarData.textColor : '',
+					lineHeight: CustomBar - StatusBar + 'px;',
+					fontSize: fontSizeSetting + 'px;',
+					paddingLeft: navbarData.textLeft ? '' : 12 + 'px'
+				}"
+				:class="platformClass"
+			>
+				{{ navbarData.title ? navbarData.title : ' ' }}
 			</view>
-        </view>
-    </view>
+			<view class="search-input">
+				<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 class="search-btn">搜索</view>
+				</view>
+				<view class="gosearch-kf">
+					<!-- #ifdef MP-WEIXIN -->
+					<button class="contact-btn" open-type="contact" @bindcontact="handleContact">
+						<text class="iconfont icon-zixunrexian"></text>
+					</button>
+					<!-- #endif -->
+				</view>
+			</view>
+			<view class="swiper-banner-nav">
+				<scroll-view class="scroll-view_H" scroll-x="true">
+					<view class="tui-goods__item active">首页</view>
+					<view class="tui-goods__item" v-for="(navs, index) in navBarsList" @click="NavToDetailPage(navs,index)">
+						{{ navs.name }}
+					</view>
+				</scroll-view>
+				<view class="swiper-nav-icon" @click="showDropScreenShow">
+					<text class="iconfont" :class="dropScreenShow ? 'icon-xiangshangjiantou':'icon-xiangxiajiantou'"></text>
+				</view>
+			</view>
+		</view>
+		<!--顶部下拉筛选弹层 属性-->
+		<tui-top-dropdown
+			backgroundColor="#FFFFFF"
+			:show="dropScreenShow"
+			:height="310"
+			:paddingbtm="10"
+			:translatey="dropScreenH"
+			@close="btnCloseDrop"
+		>
+			<scroll-view class="tui-scroll-box" scroll-y :scroll-top="scrollTop">
+				<view class="tui-seizeaseat-24">
+					<view class="tui-drop-item tui-icon-middle">全部分类</view>
+					<view class="tui-drop-item tui-icon-middle active">首页</view>
+					<view
+						class="tui-drop-item tui-icon-middle"
+						v-for="(item, index) in navBarsList"
+						:key="index"
+						@tap.stop="NavToDetailPage(item,index)"
+						:data-index="index"
+					>
+						{{ item.name }}
+					</view>
+				</view>
+			</scroll-view>
+		</tui-top-dropdown>
+	</view>
 </template>
 
 <script>
@@ -49,6 +87,9 @@ export default {
             // 由父页面传递的数据
             type: Object
         },
+		navBarsList: {
+			type: Array
+		},
         isScroll: {
             type: Boolean,
             default: () => false
@@ -65,6 +106,12 @@ export default {
             capsule: this.capsule,
             platformClass: this.platformClass,
             opacityNav: 'opacityNav', // 渐变颜色
+			height: 64, //header高度
+			scrollTop: 0,
+			dropScreenH: this.CustomBar+78, //下拉筛选框距顶部距离
+			dropScreenShow:false,
+			animationData: {}  
+
         }
     },
     created() {
@@ -74,7 +121,18 @@ export default {
         } else {
             this.navbarData.haveBack = true
         }
-        console.log(this.isScroll)
+		let obj = {};
+		// #ifdef MP-WEIXIN
+		obj = wx.getMenuButtonBoundingClientRect();
+		// #endif
+		uni.getSystemInfo({
+			success: res => {
+				this.height = obj.top ? obj.top + obj.height + 8 : res.statusBarHeight + 44;
+				//略小,避免误差带来的影响
+				this.dropScreenH = (this.height * 750) / res.windowWidth + 148;
+			}
+		});
+		console.log('dropScreenH',this.dropScreenH)
     },
     onLoad() {},
     onPageScroll(e) {
@@ -92,6 +150,30 @@ export default {
                 url: '/pages/tabBar/home/index'
             })
         },
+		NavToDetailPage(item,index) {//跳转
+			if(index === 3){
+				let linkPath = 'https://static.caimei365.com/app/caimei-activity-h5/html/2023/activity_02.html'
+				this.$api.navigateTo(`/pages/h5/activity/activity?link=${linkPath}&linkId=382`)
+			}else{
+				/**
+				 * 页面跳转
+				 **/
+				this.$api.FlooryNavigateTo(item)
+			}
+		},
+		showDropScreenShow(){
+			this.dropScreenShow = !this.dropScreenShow
+			if(this.dropScreenShow){
+				// 禁止页面滚动  
+				uni.setScrollEnabled(false)
+			}else{
+				// 禁止页面滚动
+				uni.setScrollEnabled(true)
+			}
+		},
+		btnCloseDrop(){
+			this.dropScreenShow = false
+		},
 		handleContact(e) {
 		    console.log(e.detail.path)
 		    console.log(e.detail.query)
@@ -103,94 +185,106 @@ export default {
 
 <style lang="scss" scoped>
 .navbar-wrap {
-    position: fixed;
-    width: 100%;
-    top: 0;
-    z-index: 100000;
-    box-sizing: border-box;
-    background: #FF5B00;
-    background-position-y: -50rpx;
-    border-bottom: none;
+	position: fixed;
+	width: 100%;
+	top: 0;
+	z-index: 9999;
+	box-sizing: border-box;
+	background:#ffffff url(https://static.caimei365.com/app/img/bg/home_cumres_bg@2x.png);
+	background-size: cover;
+	border-bottom: none;
 }
 .opacityNav {
-    background: #FF5B00;
+	
 }
 .navbar-text {
-    font-size: 30rpx;
-    color: #000000;
-    font-weight: 500;
+	font-size: 30rpx;
+	color: #000000;
+	font-weight: 500;
 }
 .navbar-text.center {
-    text-align: center;
+	text-align: center;
 }
 .navbar-text.left {
-    text-align: left;
-    padding-left: 45px;
+	text-align: left;
+	padding-left: 45px;
 }
 .navbar-icon {
-    position: fixed;
-    display: flex;
-    box-sizing: border-box;
+	position: fixed;
+	display: flex;
+	box-sizing: border-box;
 }
 .navbar-icon .iconfont {
-    display: inline-block;
-    overflow: hidden;
-    font-size: 44rpx;
-    padding-right: 40rpx;
-    margin-top: 1px;
+	display: inline-block;
+	overflow: hidden;
+	font-size: 44rpx;
+	padding-right: 40rpx;
+	margin-top: 1px;
 }
 .navbar-icon .icon-iconfonticonfontsousuo1 {
-    color: #000000;
+	color: #000000;
 }
 .navbar-icon view {
-    height: 18px;
-    border-left: 0.5px solid rgba(0, 0, 0, 0.3);
-    margin-top: 6px;
+	height: 18px;
+	border-left: 0.5px solid rgba(0, 0, 0, 0.3);
+	margin-top: 6px;
 }
 .navbar-loading {
-    background: #fff;
-    text-align: center;
+	background: #fff;
+	text-align: center;
 }
 .search-input {
-    width: 100%;
-    height: 100rpx;
-    padding: 20rpx 24rpx 10rpx 24rpx;
-    box-sizing: border-box;
-    .gosearch-btn {
-        width: 632rpx;
-        height: 100%;
-        border-radius: 40rpx;
-        background: #f0f0f0;
-        font-size: 28rpx;
-        line-height: 70rpx;
-        color: #8a8a8a;
-        background: #ffffff;
-        position: relative;
-        box-sizing: border-box;
-        padding-left: 80rpx;
+	width: 100%;
+	height: 90rpx;
+	padding: 20rpx 24rpx 0rpx 24rpx;
+	box-sizing: border-box;
+	.gosearch-btn {
+		width: 632rpx;
+		height: 100%;
+		padding: 5rpx;
+		border-radius: 40rpx;
+		background: #f0f0f0;
+		color: #8a8a8a;
+		background: #ffffff;
+		position: relative;
+		box-sizing: border-box;
+		padding-left: 80rpx;
+		border: 1px solid #ff5b00;
 		float: left;
-        .search-icon {
-            width: 80rpx;
-            height: 70rpx;
-            position: absolute;
-            left: 0;
-            top: 2rpx;
-            text-align: center;
-            line-height: 70rpx;
-            .icon-iconfonticonfontsousuo1 {
-                margin: 0 6rpx;
-                font-size: $font-size-34;
-                color: #8a8a8a;
-                z-index: 10;
-            }
-        }
-        .search-text {
-            font-size: $font-size-24;
-            line-height: 70rpx;
-            color: #8a8a8a;
-        }
-    }
-	.gosearch-kf{
+		.search-icon {
+			width: 80rpx;
+			height: 56rpx;
+			position: absolute;
+			left: 0;
+			top: 9rpx;
+			text-align: center;
+			line-height: 56rpx;
+			.icon-iconfonticonfontsousuo1 {
+				margin: 0 6rpx;
+				font-size: $font-size-40;
+				color: #8a8a8a;
+				z-index: 10;
+			}
+		}
+		.search-text {
+			font-size: $font-size-24;
+			line-height: 56rpx;
+			color: #8a8a8a;
+			float: left;
+		}
+		.search-btn {
+			width: 120rpx;
+			height: 58rpx;
+			border-radius: 30rpx;
+			background-color: #ff5b00;
+			line-height: 58rpx;
+			text-align: center;
+			font-size: $font-size-28;
+			color: #ffffff;
+			float: right;
+		}
+	}
+	.gosearch-kf {
 		width: 70rpx;
 		height: 70rpx;
 		border-radius: 50%;
@@ -198,15 +292,95 @@ export default {
 		line-height: 70rpx;
 		text-align: center;
 		.contact-btn {
-		    width: 70rpx;
-		    height: 70rpx;
-		    background-color: rgba(0, 0, 0, 0);
-		    line-height: 70rpx;
+			width: 70rpx;
+			height: 70rpx;
+			background-color: rgba(0, 0, 0, 0);
+			line-height: 70rpx;
+			text-align: center;
+			.iconfont {
+				font-size: $font-size-48;
+				color: #ff5b00;
+			}
+		}
+	}
+}
+.swiper-banner-nav {
+	width: 100%;
+	height: 80rpx;
+	box-sizing: border-box;
+	padding: 15rpx 76rpx 15rpx 24rpx;
+	overflow: hidden;
+	display: flex;
+	align-items: center;
+	position: relative;
+	.swiper-nav-icon {
+		width: 76rpx;
+		height: 80rpx;
+		line-height: 80rpx;
+		text-align: center;
+		position: absolute;
+		right: 0;
+		top: 0;
+		.iconfont {
+			font-size: $font-size-28;
+			color: #666666;
+		}
+	}
+	.scroll-view_H {
+		white-space: nowrap;
+		width: 100%;
+		.tui-goods__item {
+			display: inline-block;
+			margin: 0 20rpx;
+			height: 50rpx;
+			line-height: 50rpx;
+			font-size: $font-size-26;
+			color: #333333;
 			text-align: center;
-		    .iconfont {
-		        font-size: $font-size-48;
-		        color: #ffffff;
-		    }
+			&.active {
+				color: #ff5b00;
+				font-weight: bold;
+				position: relative;
+				&::before {
+					content: '';
+					width: 20rpx;
+					height: 4rpx;
+					border-radius: 2rpx;
+					background: #ff5b00;
+					position: absolute;
+					bottom: 0;
+					left: 50%;
+					margin-left: -10rpx;
+				}
+			}
+		}
+	}
+}
+.tui-scroll-box{
+	height: 280rpx;
+	overflow: hidden;
+}
+.tui-seizeaseat-24 {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	padding: 24rpx;
+	.tui-drop-item {
+		padding: 0 20rpx;
+		height: 56rpx; 
+		float: left;
+		line-height: 56rpx;
+		background: #f5f5f5;
+		font-size: 24rpx;
+		margin: 12rpx 8rpx;
+		text-align: center;
+		border: 1px solid #f5f5f5;
+		color: #666666;
+		border-radius: 28rpx;
+		&.active {
+			background: #ffffff;
+			border-color: #ff5b00;
+			color: #ff5b00;
 		}
 	}
 }

+ 81 - 128
components/cm-module/homeIndex/navbars.vue

@@ -1,154 +1,107 @@
 <template name="navbars">
 	<view class="navbar">
 		<view class="navbars-content clearfix">
-			<view class="nav-item" v-for="(item,index) in navList" :key="index" @click="NavToDetailPage(item,index)">
+			<view class="nav-item" v-for="(item, index) in navList" :key="index" @click="NavToDetailPage(item, index)">
+				<view class="icon"> <image class="icon-image" :src="item.icon" mode="widthFix"></image> </view>
+				<view class="name">{{ item.name }}</view>
+			</view>
+			<view class="nav-item" @click="handleMore" v-if="list.length === 9 || list.length > 9">
 				<view class="icon">
-					<image class="icon-image" :src="item.icon" mode="widthFix"></image>
+					<image
+						class="icon-image"
+						src="https://static.caimei365.com/app/img/icon/icon-navs-more@2x.png"
+						mode="widthFix"
+					></image>
 				</view>
-				<view class="name">{{ item.name }}</view>
+				<view class="name">更多</view>
 			</view>
 		</view>
 	</view>
 </template>
 
 <script>
-	export default{
-		name:'navbars',
-		props:{
-			list:{
-				type:Array
-			}
-		},
-		data() {
-			return{
-				current:100,
-				navList:[]
-			}
-		},
-		created(){
-			this.initData(this.list)
+import cmsMixins from '@/mixins/cmsMixins.js'
+export default {
+	mixins: [cmsMixins],
+	name: 'navbars',
+	props: {
+		list: {
+			type: Array
+		}
+	},
+	data() {
+		return {
+			current: 100,
+			navList: []
+		}
+	},
+	created() {
+		this.initData(this.list)
+	},
+	computed: {},
+	methods: {
+		initData(list) {
+			this.navList = list.slice(0, 9)
 		},
-		computed: {
-	
+		handleMore() {
+			this.$api.navigateTo(`/pages/goods/channel`)
 		},
-		methods:{
-			initData(list){
-				this.navList = list
-			},
-			NavToDetailPage(pros,index) {//跳转
-				if(index === 3){
-					let linkPath = 'https://static.caimei365.com/app/caimei-activity-h5/html/2023/activity_02.html'
-					this.$api.navigateTo(`/pages/h5/activity/activity?link=${linkPath}&linkId=382`)
-				}else{
-					/**
-					 * 页面跳转
-					 **/
-					this.$api.FlooryNavigateTo(pros)
-				}
-			}
+		NavToDetailPage(pros, index) {
+			// 采美快捷运营点击量统计
+			this.cmsMoudleHits(4, pros.id)
+			this.$api.FlooryNavigateTo(pros)
 		}
 	}
+}
 </script>
 
 <style lang="scss" scoped>
-    .navbar {
-        background: #f7f7f7;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-    }
-	.navbars-content{
-		width: 94%;
+.navbar {
+	background: #f7f7f7;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+}
+.navbars-content {
+	width: 94%;
+	height: auto;
+	box-sizing: border-box;
+	padding: 20rpx 0 0 0;
+	background-color: #fff;
+	border-radius: 16rpx;
+	margin-top: 14rpx;
+	.nav-item {
+		width: 20%;
 		height: auto;
-		box-sizing: border-box;
-        padding: 20rpx 0 0 0;
-        background-color: #fff;
-        border-radius: 16rpx;
-		.nav-item{
-			width: 164rpx;
-			height: auto;
-			float: left;
-			margin-bottom: 30rpx;
-			margin-right: 15.3rpx;
-			&:nth-child(4){
-				margin-right: 0;
-			}
-			&:nth-child(8){
-				margin-right: 0;
+		float: left;
+		margin-bottom: 30rpx;
+		.icon {
+			width: 100rpx;
+			height: 100rpx;
+			margin: 0 auto;
+			position: relative;
+			.icon-image {
+				width: 100rpx;
+				height: 100rpx;
+				display: block;
 			}
-			.icon{
-				width: 110rpx;
-				height: 110rpx;
-				margin: 0 auto;
-				position: relative;
-				.icon-image{
-					width: 110rpx;
-					height: 110rpx;
-					display: block;
-				}
-				.icon-new{
-					width: 44rpx;
-					height: 22rpx;
-					display: block;
-					position: absolute;
-					right: 0;
-					top: 20rpx;
-				}
-			}
-			.name{
-				width: 100%;
-				height: 40rpx;
-				line-height: 40rpx;
-				text-align: center;
-				font-size: $font-size-26;
-				color: #666666;
-			}
-			.nav-cell-main{
-				width: 100%;
-				height: auto;
+			.icon-new {
+				width: 44rpx;
+				height: 22rpx;
+				display: block;
 				position: absolute;
 				right: 0;
-				.nav-cell{
-					width: 164rpx;
-					height: auto;
-					float: left;
-					margin-bottom: 30rpx;
-					margin-right: 15.3rpx;
-					&:nth-child(4){
-						margin-right: 0;
-					}
-					&:nth-child(8){
-						margin-right: 0;
-					}
-					.icon{
-						width: 130rpx;
-						height: 130rpx;
-						margin: 0 auto;
-						position: relative;
-						.icon-image{
-							width: 130rpx;
-							height: 130rpx;
-							display: block;
-						}
-						.icon-new{
-							width: 44rpx;
-							height: 22rpx;
-							display: block;
-							position: absolute;
-							right: 0;
-							top: 20rpx;
-						}
-					}
-					.name{
-						width: 100%;
-						height: 40rpx;
-						line-height: 40rpx;
-						text-align: center;
-						font-size: $font-size-28;
-						color: #666666;
-					}
-				}
+				top: 20rpx;
 			}
 		}
+		.name {
+			width: 100%;
+			height: 40rpx;
+			line-height: 40rpx;
+			text-align: center;
+			font-size: $font-size-26;
+			color: #666666;
+		}
 	}
+}
 </style>

+ 29 - 11
components/cm-module/productDetails/cm-unit-popup.vue

@@ -70,8 +70,8 @@
 					</view>
 				</view>
 				<view class="sku-unit-nunbox">
-					<view class="sku-unit-nunbox" v-if="skuProduct.step === 2">
-						<view class="text">*该商品只能以起订量的整数倍购买</view>
+					<view class="sku-unit-nunbox-t" v-if="skuProduct.step === 2">
+						<view class="text">该商品只能以起订量的整数倍购买</view>
 					</view>
 					<view class="sku-unit-nunbox-t">
 						<view class="sku-unit-nunbox-text">购买数量:</view>
@@ -266,13 +266,23 @@ export default {
 			} else if (_value < this.handleMinNumber) {
 				this.$util.msg(`该商品最小起订量为${this.handleMinNumber}`, 2000)
 				this.productCount = this.handleMinNumber
-			} else if (_value % this.handleMinNumber != 0) {
-				this.$util.msg('购买量必须为起订量的整数倍', 2000)
-				this.productCount = this.handleMinNumber
-			} else if (_value > this.handleStock) {
-				this.productCount = this.handleStock
 			} else {
-				this.productCount = e.detail.value
+				if (this.skuProduct.step == 2) {
+					if (_value % this.handleMinNumber != 0) {
+						this.$util.msg('购买量必须为起订量的整数倍', 2000)
+						this.productCount = this.handleMinNumber
+					} else if (_value > this.handleStock) {
+						this.productCount = this.handleStock
+					} else {
+						this.productCount = _value
+					}
+				}else{
+					if (_value > this.handleStock) {
+						this.productCount = this.handleStock
+					} else {
+						this.productCount = _value
+					}
+				}
 			}
 		},
 		handleBuyConfirm(type) {
@@ -284,8 +294,16 @@ export default {
 					productCount: this.productCount
 				})
 			} else {
-				this.addParams.productCount = this.productCount
-				this.handleAddClubCart(this.addParams)
+				if (this.skuProduct.step == 2) {
+					if (this.productCount % this.handleMinNumber != 0) {
+						this.$util.msg('购买量必须为起订量的整数倍', 2000)
+						this.productCount = this.handleMinNumber
+						return
+					}
+				}else{
+					this.addParams.productCount = this.productCount
+					this.handleAddClubCart(this.addParams)
+				}
 			}
 		},
 		handleToConfirm(data) {
@@ -442,7 +460,7 @@ export default {
 			.text {
 				font-size: $font-size-24;
 				line-height: 48rpx;
-				color: #999999;
+				color: #FF5B00;
 			}
 			.sku-unit-nunbox-text {
 				line-height: 44rpx;

+ 0 - 35
components/cm-module/scrollTop/scrollTop.vue

@@ -1,20 +1,6 @@
 <template name="scrollTop">
     <!-- 商品详情价格判断 -->
     <view>
-        <view
-            class="supplierLogo"
-            v-if="isShowSupplier && isShowIcon"
-            @click="$api.navigateTo('/pages/login/supplier_login')"
-            :style="{ bottom: bottom + 120 + 'rpx' }"
-        >
-            <image class="logo" src="https://static.caimei365.com/app/img/icon/supplier_logo.png" mode=""></image>
-            <image
-                class="close"
-                @click.stop="isShowIcon = false"
-                src="https://static.caimei365.com/app/img/supplier-login/close_icon.png"
-                mode=""
-            ></image>
-        </view>
         <view class="scrollTop" :style="{ bottom: bottom + 'rpx' }">
             <view class="icon msg" v-if="isShowKefu">
                 <!-- #ifdef MP-WEIXIN -->
@@ -77,27 +63,6 @@ export default {
 </script>
 
 <style lang="scss">
-.supplierLogo {
-    position: fixed;
-    right: 20rpx;
-    z-index: 100;
-    width: 120rpx;
-    height: 130rpx;
-    display: flex;
-    align-items: flex-end;
-    justify-content: flex-end;
-    .logo {
-        width: 120rpx;
-        height: 120rpx;
-    }
-    .close {
-        position: absolute;
-        top: 0;
-        right: 0;
-        width: 30rpx;
-        height: 30rpx;
-    }
-}
 .scrollTop {
     width: 80rpx;
     height: 120rpx;

+ 8 - 1
pages.json

@@ -5,7 +5,7 @@
 			"style": {
 				"navigationBarTitleText": "采美采购商城",
 				"enablePullDownRefresh": true,
-				"backgroundColor": "#ff5b00",
+				"backgroundColor": "#FFFFFF",
 				"backgroundTextStyle": "light",
 				"navigationStyle": "custom"
 			}
@@ -189,6 +189,13 @@
                 		"navigationBarTitleText": "文件预览",
                 		"enablePullDownRefresh": false
                 	}
+                },
+                {
+                	"path": "channel",
+                	"style": {
+                		"navigationBarTitleText": "全部频道",
+                		"enablePullDownRefresh": false
+                	}
                 }
 			]
 		},

+ 100 - 0
pages/goods/channel.vue

@@ -0,0 +1,100 @@
+<template>
+	<view class="container clearfix" >
+		<tui-skeleton
+			v-if="skeletonShow"
+			backgroundColor="#fafafa"
+			borderRadius="10rpx"
+			:isLoading="true"
+			:loadingType="5"
+		/>
+		<template v-else>
+			<view class="navbars-content clearfix">
+				<view class="nav-item" v-for="(item,index) in list" :key="index" @click="NavToDetailPage(item,index)">
+					<view class="icon">
+						<image class="icon-image" :src="item.icon" mode="widthFix"></image>
+					</view>
+					<view class="name">{{ item.name }}</view>
+				</view>
+			</view>
+		</template> 	
+	</view>
+</template> 
+
+<script>
+	import cmsMixins from '@/mixins/cmsMixins.js'
+	import { mapState,mapMutations} from 'vuex';
+	export default{
+		mixins: [cmsMixins],
+		data(){
+			return{ 
+				skeletonShow: true,
+				list:[]
+			} 
+		},
+		onLoad(option) {
+			
+		},
+		methods:{
+			async getHomeInformation() {
+				//初始化首页数据
+				try{
+					const res = await this.CommonService.GetHomeModulesDataInfo({ source: 2 })
+					const data = res.data
+					this.list = data.shortcutList || [] // 快捷运营
+					setTimeout(() => {
+						this.skeletonShow = false
+					}, 1000)
+				}catch(e){
+					//TODO handle the exception
+					this.$util.msg(error.msg, 2000)
+				}
+			},
+			// 链接跳转
+			NavToDetailPage(pros) {
+			    // 采美快捷运营点击量统计
+			    this.cmsMoudleHits(4, pros.id)
+				this.$api.FlooryNavigateTo(pros)
+			},
+		},
+		onShow() {
+			this.getHomeInformation()
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{
+		background-color: #FFFFFF;
+	}
+	.navbars-content{
+		width: 100%;
+		height: auto;
+		box-sizing: border-box;
+	    padding: 40rpx 0rpx;
+		.nav-item{
+			width: 25%;
+			height: auto;
+			float: left;
+			margin-bottom: 40rpx;
+			.icon{
+				width: 100rpx;
+				height: 100rpx;
+				margin: 0 auto;
+				position: relative;
+				.icon-image{
+					width: 100rpx;
+					height: 100rpx;
+					display: block;
+				}
+			}
+			.name{
+				width: 100%;
+				height: 40rpx;
+				line-height: 40rpx;
+				text-align: center;
+				font-size: $font-size-26;
+				color: #666666;
+			}
+		}
+	}
+</style>

+ 50 - 93
pages/goods/components/cm-product-doc.vue

@@ -50,8 +50,9 @@
                                 class="cm-video"
                                 ref="myVideo"
                                 :id="'myVideo' + index"
-                                :src="item.fileUrl"
+                                :src="myDecrypt([item.fileUrl])[0]"
                                 :style="videoStyle['myVideo' + index]"
+                                referrer-policy='origin'
                                 controls
                                 show-fullscreen-btn
                                 show-mute-btn
@@ -119,6 +120,7 @@
 
 <script>
 import { mapState } from 'vuex'
+import CryptoJS from '@/utils/crypto-js/crypto.js'
 export default {
     props: {
         product: {
@@ -179,7 +181,7 @@ export default {
                 false, // 正常访问
                 { text: '请登录后查看!', btn: '去登录', redirect: '/pages/login/login' },
                 { text: '请升级成为会员机构后方可查看!', btn: '去升级', redirect: '/pages/login/apply' },
-                { text: '请升级成为医美会员机构后方可查看!', btn: '去升级', redirect: '/pages/login/apply' },
+                { text: '医美资质机构可查看完整内容!', btn: '升级医美资质', redirect: '/pages/login/apply' },
                 { text: '需抵扣100采美豆方可查看!', btn: '去查看', redirect: 10 },
                 { text: '无权限查看!', btn: '确认' }
             ]
@@ -202,8 +204,7 @@ export default {
         this.userId = uni.getStorageSync('userInfo').userId || -1
         this.getDetail()
         this.userInfo = uni.getStorageSync('userInfo')
-        console.log(uni.getStorageSync('userInfo'))
-        console.log(this.TipStatus, this.tipStatus)
+        console.log(uni.getStorageSync('userInfo'))
     },
     methods: {
         // 获取商品资料详情
@@ -270,7 +271,7 @@ export default {
                 rh = (rw * h) / w
             }
             // 使用set向videoStyle添加样式信息
-            this.$set(this.videoStyle, e.currentTarget.id, `width:${rw}rpx;height:${rh}rpx;`)
+            this.$set(this.videoStyle, e.currentTarget.id, `width:${rw}rpx;height:${400}rpx;`)
         },
         // 视频播放
         handlePlayer(id, info) {
@@ -292,19 +293,7 @@ export default {
         },
         // 监听video时长
         onPlayVideo(e) {
-            // console.log(e)
-            // const allTime = parseInt((e.detail.duration % 3600) / 60) // 获取分钟
-            // const inPlay = parseInt((e.detail.duration % 3600) / 60)
-            // if (this.permission === 2 || this.permission === 4 || this.permission === 1) {
-            //     if (allTime >= 10 && 3 < inPlay) {
-            //         this.handleStop(e.target.id)
-            //         this.checkPermission()
-            //     }
-            //     if (allTime < 10) {
-            //         this.handleStop(e.target.id)
-            //         this.checkPermission()
-            //     }
-            // }
+            this.checkPermission()
         },
         // 开始播放
         handelPlay(id) {
@@ -344,47 +333,16 @@ export default {
             if (info) {
                 this.GetStatisticsAddPv(1, info.archiveContentId)
             }
-            // if (this.permission === 2 || this.permission === 4 || this.permission === 1) {
-            //     if (previewImageList.length >= 5) {
-            //         if (index < 2) {
-            //             uni.previewImage({
-            //                 current: index,
-            //                 indicator: 'number',
-            //                 urls: previewImageList,
-            //                 loop: true,
-            //                 success() {
-            //                     that.$emit('previewImage', true)
-            //                 }
-            //             })
-            //         } else {
-            //             if (this.checkPermission()) return
-            //         }
-            //     } else {
-            //         if (this.checkPermission()) return
-            //     }
-            // } else {
-            //     if (this.checkPermission()) return
-            //     const that = this
-            //     uni.previewImage({
-            //         current: index,
-            //         indicator: 'number',
-            //         urls: previewImageList,
-            //         loop: true,
-            //         success() {
-            //             that.$emit('previewImage', true)
-            //         }
-            //     })
-            // }
-            if (this.checkPermission()) return
-            const that = this
-            uni.previewImage({
-                current: index,
-                indicator: 'number',
-                urls: previewImageList,
-                loop: true,
-                success() {
-                    that.$emit('previewImage', true)
-                }
+            if (this.checkPermission()) return
+            const that = this
+            uni.previewImage({
+                current: index,
+                indicator: 'number',
+                urls: previewImageList,
+                loop: true,
+                success() {
+                    that.$emit('previewImage', true)
+                }
             })
         },
         //用户权限校验拦截
@@ -397,6 +355,27 @@ export default {
             this.showModal = true
             return -1
         },
+        myDecrypt(
+            word,
+            iv = CryptoJS.enc.Utf8.parse('caimei--20240103'),
+            key = CryptoJS.enc.Utf8.parse('caimei--20240103')
+        ) {
+            if (word) {
+                return word.map(e => {
+                    if (e) {
+                        const encryptedHexStr = CryptoJS.enc.Base64.parse(e)
+                        const srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr)
+                        const decrypt = CryptoJS.AES.decrypt(srcs, key, {
+                            iv,
+                            mode: CryptoJS.mode.CBC,
+                            padding: CryptoJS.pad.NoPadding
+                        })
+                        const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
+                        return decryptedStr.toString()
+                    } else return ''
+                })
+            } else return []
+        },
         // modal 按钮点击
         handleModalClick(e) {
             // 点击确认按钮
@@ -457,36 +436,15 @@ export default {
         },
         // 文件预览
         previewFile(file) {
-            // if (this.checkPermission()) return
-            // // 获取文件后缀
-            // const index = file.fileName.lastIndexOf('.')
-            // const suffix = file.fileName.substring(index)
             if (this.checkPermission()) return
-            if (uni.getStorageSync('fileInfo')) {
-                uni.removeStorageSync('fileInfo')
-            }
-            if (file) {
-                this.GetStatisticsAddPv(1, file.archiveContentId)
-            }
-            uni.setStorageSync('fileInfo', file.content || '文章预览')
-            this.openDocument(file)
-            // if (suffix === '.doc' || suffix === '.ppt' || suffix === '.pptx' || suffix === '.docx') {
-            //     //先将链接缓存
-            //     uni.setStorageSync('openLink', file.htmlUrl)
-            //     this.openDocument(file.fileUrl)
-            //     // this.$api.navigateTo('/pages/h5/article/path?key=openLink&type=1')
-            // } else if (suffix === '.pdf') {
-            //     //先将链接缓存
-            //     uni.setStorageSync('openLink', file.fileUrl)
-            //     this.$api.navigateTo('/pages/h5/article/path?key=openLink&type=2')
-            // } else {
-            //     // 不支持的文件
-            //     return uni.showModal({
-            //         content: `${suffix}类型文件暂不支持预览`,
-            //         cancelColor: '#666',
-            //         confirmColor: '#FF5B00'
-            //     })
-            // }
+            const link = this.myDecrypt([file.fileUrl])[0].split('?')[0] || ''
+            const domainUrl = process.env.NODE_ENV === 'development' ? 'https://material-b.caimei365.com' : 'https://material.caimei365.com'
+            const url = `${domainUrl}/preview?t=3&url=${link}&isSp=1`
+            uni.setStorageSync('databaseurl', url)
+            console.log(link, url)
+            uni.navigateTo({
+              	url: `/pages/h5/article/path?databaseurl=1`
+            })
         },
         // 打开文档
         openDocument(file) {
@@ -692,13 +650,12 @@ export default {
             color: #b2b2b2;
         }
         .cm-img-list {
-            display: flex;
-            justify-content: flex-start;
-            flex-wrap: wrap;
+            display: grid;
+            grid-template-columns: repeat(3, 1fr);
             &.cm-list {
                 image {
-                    width: 162rpx;
-                    height: 162rpx;
+                    width: 210rpx;
+                    height: 210rpx;
                     margin: 18rpx 18rpx 0 0;
                     box-sizing: border-box;
                     border-radius: 6rpx;

+ 17 - 7
pages/goods/components/cm-unit-popup.vue

@@ -43,7 +43,7 @@
 										v-model="productCount"
 										maxlength="4"
 										@blur="changeNumber($event)"
-										cursor-spacing="40"
+										cursor-spacing="120"
 									/>
 									<view
 										class="iconfont icon-jiahao"
@@ -207,13 +207,23 @@ export default {
 			} else if (_value < this.handleMinNumber) {
 				this.$util.msg(`该商品最小起订量为${this.handleMinNumber}`, 2000)
 				this.productCount = this.handleMinNumber
-			} else if (_value % this.handleMinNumber != 0) {
-				this.$util.msg('购买量必须为起订量的整数倍', 2000)
-				this.productCount = this.handleMinNumber
-			} else if (_value > this.handleStock) {
-				this.productCount = this.handleStock
 			} else {
-				this.productCount = e.detail.value
+				if (this.skuProduct.step == 2) {
+					if (_value % this.handleMinNumber != 0) {
+						this.$util.msg('购买量必须为起订量的整数倍', 2000)
+						this.productCount = this.handleMinNumber
+					} else if (_value > this.handleStock) {
+						this.productCount = this.handleStock
+					} else {
+						this.productCount = _value
+					}
+				}else{
+					if (_value > this.handleStock) {
+						this.productCount = this.handleStock
+					} else {
+						this.productCount = _value
+					}
+				}
 			}
 			this.totalLadderPrice()
 		},

+ 1 - 1
pages/goods/product.vue

@@ -597,7 +597,7 @@
 			:firstClubType="firstClubType"
 		/>
 		<!-- 供应商收集用户信息弹窗 -->
-		<cmRossPopup v-if="showRossHtml" :popupShow="showRossHtml" :advertisement="advertisement" />
+		<cmRossPopup v-if="showRossHtml" :popupShow="showRossHtml" :advertisInfo="advertisement" />
 
 		<!-- 分享弹窗 -->
 		<cm-share-popup ref="sharePopup" :data="posterData" type="product" />

+ 4 - 0
pages/h5/article/path.vue

@@ -23,6 +23,10 @@
             if(option.link) {
                 this.activityPath = option.link
                 return
+            }
+            if (option.databaseurl) {
+                this.activityPath = uni.getStorageSync('databaseurl')
+                console.log(this.activityPath)
             }
             this.initPath(option)
 		},

+ 1 - 1
pages/login/register.vue

@@ -96,7 +96,7 @@
             </view>
             <view class="register-main clearfix">
                 <view class="register-agree">
-                    <view class="agree-text" @tap.stop="agreeCheck()">
+                    <view class="agree-text" @tap.stop="agreeCheck">
                         <button
                             class="checkbox iconfont"
                             :class="[isCheck ? 'icon-gouxuan' : 'icon-weigouxuan']"

+ 3 - 3
pages/search/search-supplier.vue

@@ -63,13 +63,13 @@
 						</view>
 					</view>
 					<!--加载loadding-->
-					<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
-					<tui-nomore :visible="!pullUpOn" :backgroundColor="'#ffffff'" :text='nomoreText'></tui-nomore>
+					<tui-loadmore :visible="loadding" :index="3" type="black" />
+					<tui-nomore :visible="!pullUpOn" :backgroundColor="'#ffffff'" :text='nomoreText' />
 					<!--加载loadding-->
 			</view>
 		</view>
         <!-- 供应商收集用户信息弹窗 -->
-        <cmRossPopup v-if="showRossHtml" :popupShow="showRossHtml" :advertisement="advertisement" />
+        <cmRossPopup v-if="showRossHtml" :popupShow="showRossHtml" :advertisInfo="advertisement" />
 	</view>  
 </template>
 

+ 2 - 2
pages/search/search.vue

@@ -481,9 +481,9 @@
 			</view>
 		</tui-drawer>
 		<!-- 供应商收集用户信息弹窗 -->
-		<cmRossPopup v-if="showRossHtml" :popupShow="showRossHtml" :advertisement="advertisement" />
+		<cmRossPopup v-if="showRossHtml" :popupShow="showRossHtml" :advertisInfo="advertisement" />
 		<!-- 透明模态层 -->
-		<modal-layer v-if="isModallayer"></modal-layer>
+		<modal-layer v-if="isModallayer" />
 	</view>
 </template>
 

+ 18 - 9
pages/seller/cart/cart.vue

@@ -103,6 +103,7 @@
 																maxlength="6"
 																v-model="pros.number"
 																@blur="changeNnmber($event, item, pros)"
+																cursor-spacing="80"
 															/>
 															<view
 																class="iconfont icon-jiahao"
@@ -453,7 +454,7 @@ export default {
 							let cartListLength = supplier.cartList.length,
 								invalidLength = 0
 							supplier.cartList.forEach(pros => {
-								pros.shopId = supplier.shopId
+								pros.productCount = pros.number
 								pros.isStep = false
 								if (pros.stock === 0 || pros.number > pros.stock) {
 									supplier.isDisable = true
@@ -522,7 +523,7 @@ export default {
 						let productsListLength = supplier.cartList.length,
 							invalidLength = 0
 						supplier.cartList.forEach(pros => {
-							pros.shopId = supplier.shopId
+							pros.productCount = pros.number
 							pros.isStep = false
 							if (pros.stock === 0 || pros.number > pros.stock) {
 								supplier.isDisable = true
@@ -936,20 +937,28 @@ export default {
 			//输入商品数量更新
 			let _value = e.detail.value
 			if (!this.$api.isNumber(_value)) {
-				pros.number = pros.min
+				pros.number = pros.productCount
 			} else if (_value < pros.min) {
 				this.$util.msg(`该商品最小起订量为${pros.min}`, 2000)
 				pros.number = pros.min
-			} else if (_value % pros.min != 0) {
-				pros.isStep = true
-				pros.number = pros.min
 			} else {
-				pros.isStep = false
-				pros.number = e.detail.value
-				this.processActivityPrice(pros)
+				if (pros.step === 2) {
+					if (_value % pros.min != 0) {
+						pros.isStep = true
+						pros.number = pros.productCount
+					}
+				}else{
+					pros.isStep = false
+					pros.number = _value
+					this.processActivityPrice(pros)
+				}
 			}
 			this.updateShoppogNum(pros)
 			this.totalShopPeice()
+			setTimeout(()=>{
+				pros.isStep = false
+				this.$forceUpdate()
+			},2000)
 		},
 		processActivityPrice(pros) {
 			//单独处理活动价格和阶梯价格

+ 31 - 13
pages/seller/cart/components/cm-unit-popup.vue

@@ -68,8 +68,8 @@
 					</view>
 				</view>
 				<view class="sku-unit-nunbox">
-					<view class="sku-unit-nunbox" v-if="skuProduct.step === 2">
-						<view class="text">*该商品只能以起订量的整数倍购买</view>
+					<view class="sku-unit-nunbox-t" v-if="skuProduct.step === 2">
+						<view class="text">该商品只能以起订量的整数倍购买</view>
 					</view>
 					<view class="sku-unit-nunbox-t">
 						<view class="sku-unit-nunbox-text">购买数量:</view>
@@ -86,6 +86,7 @@
 									v-model="productCount"
 									maxlength="4"
 									@blur="changeNumber($event)"
+									cursor-spacing="120"
 								/>
 								<view
 									class="iconfont icon-jiahao"
@@ -230,13 +231,23 @@ export default {
 			} else if (_value < this.handleMinNumber) {
 				this.$util.msg(`该商品最小起订量为${this.handleMinNumber}`, 2000)
 				this.productCount = this.handleMinNumber
-			} else if (_value % this.handleMinNumber != 0) {
-				this.$util.msg('购买量必须为起订量的整数倍', 2000)
-				this.productCount = this.handleMinNumber
-			} else if (_value > this.handleStock) {
-				this.productCount = this.handleStock
-			} else {
-				this.productCount = e.detail.value
+			} else{
+				if (this.skuProduct.step == 2) {
+					if (_value % this.handleMinNumber != 0) {
+						this.$util.msg('购买量必须为起订量的整数倍', 2000)
+						this.productCount = this.handleMinNumber
+					} else if (_value > this.handleStock) {
+						this.productCount = this.handleStock
+					} else {
+						this.productCount = _value
+					}
+				}else{
+					if (_value > this.handleStock) {
+						this.productCount = this.handleStock
+					} else {
+						this.productCount = _value
+					}
+				}
 			}
 			this.totalLadderPrice()
 		},
@@ -249,11 +260,18 @@ export default {
 					}
 				})
 			}
-			console.log('22222222',this.skuProduct.price)
 		},
 		handleBuyConfirm() {
-			this.addParams.productCount = this.productCount
-			this.handleAddClubCart(this.addParams)
+			if (this.skuProduct.step == 2) {
+				if (this.productCount % this.handleMinNumber != 0) {
+					this.$util.msg('购买量必须为起订量的整数倍', 2000)
+					this.productCount = this.handleMinNumber
+					return
+				}
+			}else{
+				this.addParams.productCount = this.productCount
+				this.handleAddClubCart(this.addParams)
+			}
 		},
 		handleAddClubCart(params) {
 			//增加购物车成功和toast弹窗提示成功
@@ -410,7 +428,7 @@ export default {
 			.text {
 				font-size: $font-size-24;
 				line-height: 48rpx;
-				color: #999999;
+				color: #FF5B00;
 			}
 			.sku-unit-nunbox-text {
 				line-height: 44rpx;

+ 2 - 3
pages/seller/cart/immediately.vue

@@ -9,15 +9,14 @@
 			:tabBars="tabBars"
 			:tabIndex="tabIndex"
 			@changetab="hanldChangeTab"
-		>
-		</immediately-list>
+		/>
 		<!-- 单品规格弹窗 -->
 		<cm-unit-popup
 			v-if="popupShow"
 			:popupShow="popupShow"
 			:skuProduct="handleData"
 			@skuClick="handleSkuClick"
-		></cm-unit-popup>
+		/>
 		<!-- 组合加入购物车 -->
 		<view class="popup spec zuhe" :class="specClasszuhe" @touchmove.stop.prevent="discard" @tap="hideSpecs">
 			<!-- 遮罩层 -->

+ 48 - 47
pages/seller/club/components/cm-club-drawer.vue

@@ -13,7 +13,7 @@
 				<scroll-view class="tui-drawer-scroll" scroll-y :style="{ height: drawerH + 'px' }">
 					<view class="drawer-title">更多筛选</view>
 					<view class="drawer-main">
-						<template v-if="isManage">
+						<template v-if="isManage && current > 0">
 							<view class="drawer-main-name">组员:</view>
 							<view class="drawer-main-radiov">
 								<view class="drawer-main-radio">
@@ -36,62 +36,60 @@
 								</view>
 							</view>
 						</template>
-						<template v-else>
-							<view class="drawer-main-name">客户分配日期</view>
-							<view class="drawer-main-time">
-								<view class="drawer-main-time-input">
-									<picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindStartDateChange">
-										<text class="input-text">{{ queryData.startTime }}</text>
-									</picker>
-									<text class="iconfont icon-riqi"></text>
-								</view>
-								<view class="line">-</view>
-								<view class="drawer-main-time-input">
-									<picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindEndDateChange">
-										<text class="input-text">{{ queryData.endTime }}</text>
-									</picker>
-									<text class="iconfont icon-riqi"></text>
-								</view>
+						<view class="drawer-main-name">客户分配日期</view>
+						<view class="drawer-main-time">
+							<view class="drawer-main-time-input">
+								<picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindStartDateChange">
+									<text class="input-text">{{ queryData.startTime }}</text>
+								</picker>
+								<text class="iconfont icon-riqi"></text>
 							</view>
-							<view class="drawer-main-name">机构类型:</view>
-							<view class="drawer-main-radiov">
-								<view class="drawer-main-radio">
-									<picker @change="bindPickerChange(2,$event)" :value="index" :range="clubTypeActions" range-key="name">
-										<input class="input" type="text" disabled="false" v-model="clubTypeText" value="" placeholder="请选择"/>
-										<text class="iconfont icon-xiangyou"></text>
-									</picker>
-								</view>
+							<view class="line">-</view>
+							<view class="drawer-main-time-input">
+								<picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindEndDateChange">
+									<text class="input-text">{{ queryData.endTime }}</text>
+								</picker>
+								<text class="iconfont icon-riqi"></text>
 							</view>
-							<template v-if="queryData.userIdentity === 4">
-								<view class="drawer-main-name">升级状态<text class="small">(个人机构升级为资质机构)</text>:</view>
-								<view class="drawer-main-radiov">
-									<view class="drawer-main-radio">
-										<picker @change="bindPickerChange(3,$event)" :value="index" :range="clubStatusActions" range-key="name">
-											<input class="input" type="text" disabled="false" v-model="clubStatusText" value="" placeholder="请选择"/>
-											<text class="iconfont icon-xiangyou"></text>
-										</picker>
-									</view>
-								</view>
-							</template>
-							<view class="drawer-main-name">活跃状态:</view>
-							<view class="drawer-main-radiov">
-								<view class="drawer-main-radio">
-									<picker @change="bindPickerChange(4,$event)" :value="index" :range="clubActiveActions" range-key="name">
-										<input class="input" type="text" disabled="false" v-model="clubActiveText" value="" placeholder="请选择"/>
-										<text class="iconfont icon-xiangyou"></text>
-									</picker>
-								</view>
+						</view>
+						<view class="drawer-main-name">机构类型:</view>
+						<view class="drawer-main-radiov">
+							<view class="drawer-main-radio">
+								<picker @change="bindPickerChange(2,$event)" :value="index" :range="clubTypeActions" range-key="name">
+									<input class="input" type="text" disabled="false" v-model="clubTypeText" value="" placeholder="请选择"/>
+									<text class="iconfont icon-xiangyou"></text>
+								</picker>
 							</view>
-							<view class="drawer-main-name">客户价值:</view>
+						</view>
+						<template v-if="queryData.userIdentity === 4">
+							<view class="drawer-main-name">升级状态<text class="small">(个人机构升级为资质机构)</text>:</view>
 							<view class="drawer-main-radiov">
 								<view class="drawer-main-radio">
-									<picker @change="bindPickerChange(5,$event)" :value="index" :range="customerValueActions" range-key="name">
-										<input class="input" type="text" disabled="false" v-model="customerValueText" value="" placeholder="请选择"/>
+									<picker @change="bindPickerChange(3,$event)" :value="index" :range="clubStatusActions" range-key="name">
+										<input class="input" type="text" disabled="false" v-model="clubStatusText" value="" placeholder="请选择"/>
 										<text class="iconfont icon-xiangyou"></text>
 									</picker>
 								</view>
 							</view>
 						</template>
+						<view class="drawer-main-name">活跃状态:</view>
+						<view class="drawer-main-radiov">
+							<view class="drawer-main-radio">
+								<picker @change="bindPickerChange(4,$event)" :value="index" :range="clubActiveActions" range-key="name">
+									<input class="input" type="text" disabled="false" v-model="clubActiveText" value="" placeholder="请选择"/>
+									<text class="iconfont icon-xiangyou"></text>
+								</picker>
+							</view>
+						</view>
+						<view class="drawer-main-name">客户价值:</view>
+						<view class="drawer-main-radiov">
+							<view class="drawer-main-radio">
+								<picker @change="bindPickerChange(5,$event)" :value="index" :range="customerValueActions" range-key="name">
+									<input class="input" type="text" disabled="false" v-model="customerValueText" value="" placeholder="请选择"/>
+									<text class="iconfont icon-xiangyou"></text>
+								</picker>
+							</view>
+						</view>
 					</view>
 				</scroll-view>
 				<view class="drawer-input btn" :style="{ paddingBottom: isIphoneX ? '68rpx' : '34rpx' }">
@@ -111,6 +109,9 @@ export default {
 		rightDrawer: {
 			type: Boolean,
 			default: false
+		},
+		current:{
+			type:Number
 		}
 	},
 	data() {

+ 5 - 9
pages/seller/club/list.vue

@@ -212,7 +212,8 @@
 		<!-- 筛选抽屉 -->
 		<cm-clubDrawer
 			ref="screendrawer"
-			v-if="rightDrawer"
+			v-if="rightDrawer"
+			:current="tabSmallCurrentIndex"
 			:rightDrawer="rightDrawer"
 			@handSearchConfirm="handSearchConfirmData"
 		/>
@@ -311,7 +312,8 @@ export default {
 			this.getList()
 		},
 		async getList() {
-			try{
+			try{
+				this.listQuery.pageNum = 1
 				const res = await this.SellerService.GetSellerClubList(this.listQuery)
 				const data = res.data
 				if (data.list && data.list.length > 0) {
@@ -343,7 +345,7 @@ export default {
 		},
 		async getOnReachBottomData() {
 			try{
-				this.listQuery.pageNum ++
+				this.listQuery.pageNum++
 				const res = await this.SellerService.GetSellerClubList(this.listQuery)
 				const data = res.data
 				if (data.list && data.list.length > 0) {
@@ -403,12 +405,10 @@ export default {
 				case 0:
 					this.tabCurrentIndex = 0
 					this.listQuery.status = 90
-					this.listQuery.pageNum = 1
 					this.listQuery.userIdentity = 4
 					this.getList()
 					break
 				case 1:
-					this.listQuery.pageNum = 1
 					this.listQuery.status = 90
 					this.listQuery.userIdentity = 2
 					this.getList()
@@ -422,19 +422,16 @@ export default {
 				case 0:
 					this.tabCurrentIndex = 0
 					this.listQuery.type = 1
-					this.listQuery.pageNum = 1
 					this.listQuery.groupServiceId = 0
 					this.getList()
 					break
 				case 1:
 					this.listQuery.type = this.isManage ? 2 : 6
-					this.listQuery.pageNum = 1
 					this.listQuery.groupServiceId = 0
 					this.getList()
 					break
 				case 2:
 					this.listQuery.type = 6
-					this.listQuery.pageNum = 1
 					this.listQuery.groupServiceId = 0
 					this.getList()
 					break
@@ -444,7 +441,6 @@ export default {
 			console.log('确定筛选', data)
 			//确定筛选
 			this.listQuery = { ...this.listQuery, ...data }
-			this.listQuery.pageNum = 1
 			this.getList()
 		},
 		handleChoiceaSellerData(data) {

+ 11 - 30
pages/seller/components/home.vue

@@ -1,15 +1,13 @@
 <template>
 	<view class="container home clearfix" :style="{paddingTop:CustomBar+'px'}">
-		<customer ref="customer" :isScroll="isScroll" :navbar-data='nvabarData'></customer>
-		<!-- 主页内容 -->
 		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5" />
+		<customer ref="customer" :isScroll="isScroll" :navbar-data="nvabarData" :navBarsList="navBarsList" v-if="isNavRequest" />
+		<!-- 主页内容 -->
 		<view class="container-home tui-skeleton">
 			<!-- 轮播 -->
 			<banner :list="bannerImageList" v-if="isNavRequest" />
 			<!-- 金刚区菜单 -->
-			<navbars :list="navBarsList" v-if="isNavRequest" />
-            <!-- 快捷运营 -->
-            <quick-opera :list="shortcutList" v-if="isNavRequest && shortcutList.length > 0"/>
+			<navbars :list="shortcutList" v-if="isNavRequest" />
 			<!-- 直播 -->
 			<page-special :templateData="templateData" v-if="isLiveRequest" />
 			<!-- 新品橱窗 -->
@@ -39,7 +37,6 @@
 	import Certificate from '@/components/cm-module/homeIndex/certificate.vue'
 	import pageSpecial from '@/components/cm-module/homeIndex/pageSpecial.vue'
 	import supplierList from '@/components/cm-module/homeIndex/supplierList.vue'
-    import quickOpera from '@/components/cm-module/homeIndex/quickOperation.vue'
 	import { mapState,mapMutations} from 'vuex'
 	export default {
 		components:{
@@ -50,18 +47,18 @@
 			pageFloor,
 			Certificate,
 			pageSpecial,
-			supplierList,
-            quickOpera
+			supplierList
 		},
 		data() {
 			return {
-				nvabarData: {//顶部自定义导航
+				nvabarData: {
+					// 顶部自定义导航
 					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
 					showSearch: 0,
 					title: '采美采购商城', // 导航栏 中间的标题
-					haveBack:false,
-					textLeft:this.$store.state.isIphone,
-					textColor:'#FFFFFF'
+					haveBack: false,
+					textLeft: this.$store.state.isIphone,
+					textColor: '#333333'
 				},
 				CustomBar:this.CustomBar,// 顶部导航栏高度
 				userID:0,
@@ -149,23 +146,7 @@
 				this.$store.commit('setActivity',data)
 			}
 		},
-		onPageScroll(e){//实时获取到滚动的值
-            if (e.scrollTop > 0) {
-                this.isScroll = true
-            } else {
-                this.isScroll = false
-            }
-			if(e.scrollTop>50){
-				this.inputActive = 'fixed'
-			}else{
-				this.inputActive = 'float'
-			}	
-			if(e.scrollTop>400){
-				this.isScrollTop = true
-			}else{
-				this.isScrollTop = false
-			}	
-		},
+
 		onPullDownRefresh() {//下拉刷新
 			this.getHomeInformation()
 			uni.stopPullDownRefresh()
@@ -185,7 +166,7 @@
 
 <style lang="scss">
 	.home{
-		background-color: #ff5b00;
+		background-color: #FFFFFF;
 	}
 	.container-section{
 		width: 100%;

+ 7 - 0
pages/seller/index/index.vue

@@ -137,6 +137,13 @@ export default {
 			uni.stopPullDownRefresh()
 		}
 	},
+	onPageScroll(e){//实时获取到滚动的值
+		if(e.scrollTop>400){
+			this.$refs.home.isScrollTop = true
+		}else{
+			this.$refs.home.isScrollTop = false
+		}	
+	},
 	onShareAppMessage(res) {
 		//分享转发
 		if (res.from === 'button') {

+ 2 - 2
pages/seller/login/information.vue

@@ -47,7 +47,7 @@
 			</view>
 			<view class="register-fiexd clearfix">
 				<view class="register-agree">
-					<view class="agree-text"  @tap.stop="agreeCheck()">
+					<view class="agree-text"  @tap.stop="agreeCheck">
 						<button class="checkbox iconfont" :class="[isCheck ?'icon-gouxuan':'icon-weigouxuan']"></button> 
 						我已阅读并同意
 						<text @click.stop="this.$api.navigateTo('/pages/service/service?id=1036&title=机构协议')">《机构协议》</text>
@@ -310,7 +310,7 @@
 				isDisabled:true,
 				isShowInput:true,
 				textareaFocus:false,
-				isCheck:true,			//是否勾选协议
+				isCheck:false,			//是否勾选协议
 				businessLicense:'',	//营业执照图片
 				shopPhoto:'',  	//门头照图片
 				medicalPracticeLicense:'', 	//资质照图片

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

@@ -34,7 +34,7 @@
 					<text>收起<text class="iconfont icon-xiangshangjiantou"></text></text>
 				</view>
 				<view class="register-agree">
-					<view class="agree-text"  @tap.stop="agreeCheck()">
+					<view class="agree-text"  @tap.stop="agreeCheck">
 						<button class="checkbox iconfont" :class="[isCheck?'icon-gouxuan':'icon-weigouxuan']"></button> 
 						我已阅读并同意
 						<text @click.stop="this.$api.navigateTo('/pages/service/service?id=1036&title=机构协议')">《机构协议》</text>

+ 44 - 37
pages/seller/notice/components/notice-cell.vue

@@ -1,61 +1,68 @@
 <template name="notice-cell">
-	<!-- 通知消息 -->
-	<view>
-		<!-- 服务通知 -->
-		<template v-if="cellType === 1">
-			<view class="tui-notice-cell clearfix">
-				<view class="tui-cell-top">
-					<view class="cell-title"> {{ cell.shopTieredType | noticeUsersFilters }} </view>
-					<view class="cell-time"> {{ cell.time }} </view>
-				</view>
+    <!-- 通知消息 -->
+    <view>
+        <!-- 服务通知 -->
+        <template v-if="cellType === 1">
+            <view class="tui-notice-cell clearfix">
+                <view class="tui-cell-top">
+                    <view class="cell-title">{{ cell.shopTieredType | noticeUsersFilters }}</view>
+                    <view class="cell-time">{{ cell.time }}</view>
+                </view>
                 <view class="cell-info" v-if="cell.shopTieredType !== 7 && cell.shopTieredType !== 1">
                     <view class="club-cell">
-                        机构名称:<text>{{cell.name}}</text>
+                        机构名称:
+                        <text>{{ cell.name }}</text>
                     </view>
                     <view class="club-cell">
-                        联系人:<text>{{cell.userName}}</text>
+                        联系人:
+                        <text>{{ cell.userName }}</text>
                     </view>
                     <view class="club-cell">
-                        手机号:<text>{{cell.mobile}}</text>
+                        手机号:
+                        <text>{{ cell.mobile }}</text>
                     </view>
                     <view class="club-cell" v-if="cell.shopTieredType === 2">
-                        上一任销售:<text>{{cell.superUserName}}</text>
+                        上一任销售:
+                        <text>{{ cell.superUserName }}</text>
                     </view>
                     <view class="club-cell" v-if="cell.shopTieredType === 3">
-                        下一任销售:<text>{{cell.superUserName}}</text>
+                        下一任销售:
+                        <text>{{ cell.superUserName }}</text>
                     </view>
                 </view>
-               <view class="cell-info" v-if="cell.shopTieredType === 7">
-                    {{ noticeSellerUserText(cell) }}
-                </view>
-				<view class="tui-cell-content" v-if="cell.shopTieredType === 7"> 
-					关注点:{{cell.content}}
-				</view> 
-                <view class="tui-cell-content" v-if="cell.shopTieredType !== 7">
-                	{{ noticeSellerUserText(cell) }}
-                </view>
-                <view class="tui-cell-button" v-if="cell.shopTieredType === 2 || cell.shopTieredType === 4 || cell.shopTieredType === 7">
+                <view class="cell-info" v-if="cell.shopTieredType === 7 || cell.shopTieredType === 10">{{ noticeSellerUserText(cell) }}</view>
+                <view class="tui-cell-content" v-if="cell.shopTieredType === 7 || cell.shopTieredType === 10">关注点:{{ cell.content }}</view>
+                <view class="tui-cell-content" v-if="cell.shopTieredType !== 7">{{ noticeSellerUserText(cell) }}</view>
+                <view
+                    class="tui-cell-button"
+                    v-if="
+                        cell.shopTieredType === 2 ||
+                            cell.shopTieredType === 4 ||
+                            cell.shopTieredType === 7 ||
+                            cell.shopTieredType === 10
+                    "
+                >
                     <button @click="$emit('trampInfo', cell)">立即查看</button>
                 </view>
-			</view>
-		</template>
-	</view>
+            </view>
+        </template>
+    </view>
 </template>
 
 <script>
 import { mapState, mapMutations } from 'vuex'
 import noticeMixins from '../mixins/notice.mixins.js'
 export default {
-	mixins: [noticeMixins],
-	name: 'notice-cell',
-	props: {
-		cellType:{
-			type:Number
-		},
-		cell: {
-			type: Object
-		}
-	},
+    mixins: [noticeMixins],
+    name: 'notice-cell',
+    props: {
+        cellType: {
+            type: Number
+        },
+        cell: {
+            type: Object
+        }
+    }
 }
 </script>
 

+ 71 - 0
pages/seller/notice/components/notice-server-tab.vue

@@ -0,0 +1,71 @@
+<template>
+    <view class="tabList">
+        <view
+            v-for="item in tabList"
+            :key="item.type"
+            class="tab"
+            @click="changeAct(item)"
+            :class="activeLink === item.type ? 'active' : ''"
+        >
+            {{ item.value }}
+        </view>
+    </view>
+</template>
+
+<script>
+export default {
+    props: {
+        value: {
+            type: String,
+            default: () => ''
+        }
+    },
+    data() {
+        return {
+            tabList: [
+                {
+                    type: '',
+                    value: '机构访问通知'
+                },
+                {
+                    type: '1',
+                    value: '内容库访问通知'
+                }
+            ],
+            activeLink: ''
+        }
+    },
+    methods: {
+        changeAct(item) {
+            this.activeLink = item.type
+            this.$emit('input', this.activeLink)
+        }
+    }
+}
+</script>
+
+<style scoped lang="scss">
+.tabList {
+    display: flex;
+    position: sticky;
+    top: 0;
+    left: 24rpx;
+    align-items: center;
+    z-index: 999;
+    .tab {
+        background-color: #fff;
+        white-space: nowrap;
+        text-align: center;
+        flex: 1;
+        padding: 10rpx;
+        margin-bottom: 24rpx;
+        font-size: 28rpx;
+        font-weight: bold;
+        box-sizing: border-box;
+        &.active {
+            color: #ff5800;
+            border-color: 1px solid #ff5800;
+        }
+    }
+}
+</style>

+ 6 - 2
pages/seller/notice/mixins/notice.mixins.js

@@ -8,7 +8,9 @@ const noticeMixins = {
                3: '机构转移通知',
                4: '机构分配通知',
                7: '机构访问通知',
-               8: '机构回收通知'
+               8: '机构回收通知',
+               9: '客户注册通知',
+               10: '客户访问通知'
            }
            return map[value]
        },
@@ -21,7 +23,9 @@ const noticeMixins = {
                 3: '系统已将你的机构转移给其他销售人员,你已无权管理该客户。',
                 4: '系统已为你分配机构客户,请及时跟进。',
                 7: `昨日【${cell.name}...】等${cell.sum}家机构客户访问了采美商城`,
-                8: '系统已将你的机构客户进行回收,你已无权管理该客户。'
+                8: '系统已将你的机构客户进行回收,你已无权管理该客户。',
+                9: `昨日【${cell.name}...】通过您的内容库资料分享注册成为了机构客户`,
+                10: `昨日【${cell.name}...】等${cell.sum}家机构客户访问了您的内容库资料分享`
             }
             return map[cell.shopTieredType]
         },

+ 2 - 1
pages/seller/notice/service/Institutional_visits.vue

@@ -29,7 +29,8 @@ export default {
         this.spId = options.spId
         const { data } = await this.SellerService.getVisitesClubList({
             spId: options.spId,
-            accDateTime: options.accDateTime
+            accDateTime: options.accDateTime,
+            type: options.type
         })
         this.visitsList = data
         this.accDateTime = data[0].accessDate

+ 21 - 11
pages/seller/notice/service/service.vue

@@ -7,7 +7,8 @@
             :isLoading="true"
             :loadingType="5"
         ></tui-skeleton>
-        <view class="container">
+        <view class="container">
+            <tab-list v-model="params.type" />
             <view v-for="(cell, index) in messageList" class="info-card" :key="index">
                 <view class="tui-notice clearfix">
                     <tui-swipe-action :operateWidth="80" :backgroundColor="'#F7F7F7'">
@@ -29,11 +30,13 @@
 </template>
 
 <script>
-import { mapState, mapMutations } from 'vuex'
+import { mapState, mapMutations } from 'vuex'
+import tabList from '../components/notice-server-tab.vue'
 import noticeCell from '../components/notice-cell.vue'
 export default {
     components: {
-        noticeCell
+        noticeCell,
+        tabList
     },
     data() {
         return {
@@ -43,15 +46,23 @@ export default {
                 pageNum: 1,
                 pageSize: 10,
                 source: 2,
-                commonId: ''
+                commonId: '',
+                type: ''
             },
             messageList: [], // 信息列表
             userInfo: {},
             isLastPage: false, //  是否是最后一页
         }
-    },
-    mounted() {
-        this.getMessageList({isRefresh: false})
+    },
+    watch: {
+        'params.type': {
+            handler(val) {
+                this.getMessageList({ isRefresh: true })
+            }
+        }
+    },
+    mounted() {
+        this.getMessageList({ isRefresh: false })
     },
     methods: {
         // 请求信息列表
@@ -87,16 +98,16 @@ export default {
         // 详情
         async trampInfo($event) {
             const time = $event.time.replace(/[年月日]/g, '-')
-            if ($event.shopTieredType === 7) {
+            if ($event.shopTieredType === 7 && $event.shopTieredType === 10) {
                 this.$api.navigateTo(
                     '/pages/seller/notice/service/Institutional_visits?spId=' +
                         this.userInfo.serviceProviderId +
                         '&accDateTime=' +
-                        time.substr(0, 10)
+                        $event.time + '&type=' + this.params.type
                 )
             } else {
                 const {data} = await this.SellerService.getFindUserId({id: $event.clubId, userType: 1})
-                this.$api.navigateTo('/pages/seller/club/club-portrait?userId=' + data.data)
+                this.$api.navigateTo('/pages/seller/club/club-portrait?userId=' + data)
             }
         }
     },
@@ -117,7 +128,6 @@ export default {
 
 <style scopde lang="scss">
 .container {
-    padding: 24rpx;
     box-sizing: border-box;
 }
 .info-card {

+ 26 - 16
pages/seller/notice/service/visits_details.vue

@@ -4,9 +4,7 @@
         <template>
             <view class="details-title"><visits-cell @handlerVisits="handlerVisits" :visits-info="visitsInfo" /></view>
         </template>
-        <view class="trajectory">
-            <Trajectory :trajectory-list="detailList"/>
-        </view>
+        <view class="trajectory"><Trajectory :trajectory-list="detailList" /></view>
     </view>
 </template>
 
@@ -23,24 +21,31 @@ export default {
             visitsInfo: {},
             accessTime: '', // 访问日期
             spId: '', // 协销id
-            clubId: '' ,// 机构id
-            detailList: []
+            clubId: '', // 机构id
+            detailList: [],
+            type: '',
         }
     },
     async onLoad(options) {
         this.accessTime = options.accessTime
         this.spId = options.spId
-        this.clubId = options.clubId
-		const { data } = await this.SellerService.getVisitesClubInfo({accessTime: options.accessTime, spId: options.spId, clubId: options.clubId})
-		this.detailList = data
-		this.visitsInfo = {
-		    image: data[0].image,
-		    linkMan: data[0].linkMan,
-		    contractMobile: data[0].contractMobile,
-		    pageLabel: data[0].pageLabel,
+        this.clubId = options.clubId
+        this.type = options.type
+        const { data } = await this.SellerService.getVisitesClubInfo({
+            accessTime: options.accessTime,
+            spId: options.spId,
+            clubId: options.clubId,
+            type: options.type
+        })
+        this.detailList = data
+        this.visitsInfo = {
+            image: data[0].image,
+            linkMan: data[0].linkMan,
+            contractMobile: data[0].contractMobile,
+            pageLabel: data[0].pageLabel,
             name: data[0].name
-		}
-		console.log('options', options, 'visitsInfo', data, '详情', this.visitsInfo)
+        }
+        console.log('options', options, 'visitsInfo', data, '详情', this.visitsInfo)
     },
     mounted() {
         this.getVisitesClubDetail()
@@ -48,7 +53,12 @@ export default {
     methods: {
         handlerVisits($event) {},
         async getVisitesClubDetail() {
-            const {data} = await this.SellerService.getVisitesClubInfo({accessTime: this.accessTime, spId: this.spId, clubId: this.clubId})
+            const { data } = await this.SellerService.getVisitesClubInfo({
+                accessTime: this.accessTime,
+                spId: this.spId,
+                clubId: this.clubId,
+                type: this.type
+            })
             this.detailList = data
             this.visitsInfo = {
                 image: data[0].image,

+ 100 - 84
pages/supplier/components/banner.vue

@@ -1,106 +1,122 @@
 <template>
 	<view>
-		<view class="swiper-banner-box" >
-			<swiper v-if="list.length>0"  class="tui-banner-swiper tui-banner tui-skeleton-fillet" :autoplay="true" :interval="5000" :duration="500"  @change="swiperChange" :circular="true">
-				<swiper-item v-for="(item,index) in list" :key="index">
-					<image  :src="item.image" class="tui-slide-image" mode="scaleToFill"/>
+		<view class="swiper-banner-box">
+			<swiper
+				v-if="list.length > 0"
+				class="tui-banner-swiper tui-banner tui-skeleton-fillet"
+				:autoplay="true"
+				:interval="5000"
+				:duration="500"
+				@change="swiperChange"
+				:circular="true"
+			>
+				<swiper-item v-for="(item, index) in list" :key="index">
+					<image :src="item.image" class="tui-slide-image" mode="scaleToFill" />
 				</swiper-item>
 			</swiper>
-			<swiper v-else  class="tui-banner-swiper tui-banner tui-skeleton-fillet" :autoplay="true" :interval="5000" :duration="500"  @change="swiperChange" :circular="true">
-				<swiper-item >
-					<image :src="defaultbanner" class="tui-slide-image" mode="scaleToFill"/>
-				</swiper-item>
+			<swiper
+				v-else
+				class="tui-banner-swiper tui-banner tui-skeleton-fillet"
+				:autoplay="true"
+				:interval="5000"
+				:duration="500"
+				@change="swiperChange"
+				:circular="true"
+			>
+				<swiper-item> <image :src="defaultbanner" class="tui-slide-image" mode="scaleToFill" /> </swiper-item>
 			</swiper>
 			<view class="swiper__dots-box" v-if="list.length > 1">
-				<view v-for="(item,idx) in list" 
-					  :key="idx" 
-					  :class="[idx===current?'swiper__dots-long':'none']" 
-					  :data-index="current" class="swiper__dots-item">
-				</view>	  
+				<view
+					v-for="(item, idx) in list"
+					:key="idx"
+					:class="[idx === current ? 'swiper__dots-long' : 'none']"
+					:data-index="current"
+					class="swiper__dots-item"
+				>
+				</view>
 			</view>
 		</view>
 	</view>
 </template>
 
 <script>
-	export default{
-		name:'address',
-		props:{
-			list:{
-				type:Array
-			}
-		},
-		data() {
-			return{
-				current:0,
-				defaultbanner:'https://static.caimei365.com/app/img/bg/icon-defaultbanner.png'
-			}
-		},
-		created(){
-			console.log(this.list)
-		},
-		computed: {
-	
-		},
-		methods:{
-			swiperChange(e) {//轮播图切换
-				const index = e.detail.current
-				this.current = index
-			},
+export default {
+	name: 'address',
+	props: {
+		list: {
+			type: Array
+		}
+	},
+	data() {
+		return {
+			current: 0,
+			defaultbanner: 'https://static.caimei365.com/app/img/bg/icon-defaultbanner.png'
+		}
+	},
+	created() {
+		console.log(this.list)
+	},
+	computed: {},
+	methods: {
+		swiperChange(e) {
+			//轮播图切换
+			const index = e.detail.current
+			this.current = index
 		}
 	}
+}
 </script>
 
 <style lang="scss">
-	.swiper-banner-box{
+.swiper-banner-box {
+	width: 100%;
+	height: 240rpx;
+	background: #ffffff;
+	position: relative;
+	background-size: cover;
+}
+.tui-banner-swiper {
+	width: 700rpx;
+	margin: 0 auto;
+	height: 240rpx;
+	border-radius: 16rpx;
+	overflow: hidden;
+	transform: translateY(0);
+	margin-top: 16rpx;
+	.banner-item {
+		border-radius: 16rpx;
+	}
+	.tui-slide-image {
 		width: 100%;
 		height: 240rpx;
-		background:#FFFFFF;
-		position: relative;
-		background-size: cover;
-	}	
-	.tui-banner-swiper {
-		width: 700rpx;
-		margin: 0 auto;
-		height: 240rpx;
-		border-radius: 16rpx;
-		overflow: hidden;
-		transform: translateY(0);
-		margin-top: 16rpx;
-		.banner-item{
-			border-radius: 16rpx;
-		}
-		.tui-slide-image {
-			width: 100%;
-			height: 240rpx;
-			display: block;
-		}
+		display: block;
 	}
-	.swiper__dots-box{
-		position: absolute;
-		bottom: 30rpx;
-		left: 0;
-		right: 0;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		.swiper__dots-item{
-			width: 8rpx;
-			height: 8rpx;
-			border-radius: 100%;
-			margin-left: 6px;
-			background-color:rgba(255,255,255,.7);
-		}
-		.swiper__dots-long{
-			width: 35rpx;
-			height: 8rpx;
-			border-radius: 4rpx;
-			background-color: #ffff;
-			transition: all 0.4s;
-		}
+}
+.swiper__dots-box {
+	position: absolute;
+	bottom: 30rpx;
+	left: 0;
+	right: 0;
+	/* #ifndef APP-NVUE */
+	display: flex;
+	/* #endif */
+	flex: 1;
+	flex-direction: row;
+	justify-content: center;
+	align-items: center;
+	.swiper__dots-item {
+		width: 8rpx;
+		height: 8rpx;
+		border-radius: 100%;
+		margin-left: 6px;
+		background-color: rgba(255, 255, 255, 0.7);
+	}
+	.swiper__dots-long {
+		width: 35rpx;
+		height: 8rpx;
+		border-radius: 4rpx;
+		background-color: #ffff;
+		transition: all 0.4s;
 	}
+}
 </style>

+ 11 - 14
pages/supplier/components/home.vue

@@ -1,15 +1,13 @@
 <template>
 	<view class="container home clearfix" :style="{paddingTop:CustomBar+'px'}">
-		<customer ref="customer" :isScroll="isScroll" :navbar-data='nvabarData'></customer>
-		<!-- 主页内容 -->
 		<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="true" :loadingType="5" />
+		<customer ref="customer" :isScroll="isScroll" :navbar-data="nvabarData" :navBarsList="navBarsList" v-if="isNavRequest" />
+		<!-- 主页内容 -->
 		<view class="container-home tui-skeleton">
 			<!-- 轮播 -->
 			<banner :list="bannerImageList" v-if="isNavRequest" />
 			<!-- 金刚区菜单 -->
-			<navbars :list="navBarsList" v-if="isNavRequest" />
-            <!-- 快捷运营 -->
-            <quick-opera :list="shortcutList" v-if="isNavRequest && shortcutList.length > 0"/>
+			<navbars :list="shortcutList" v-if="isNavRequest" />
 			<!-- 直播 -->
 			<page-special :templateData="templateData" v-if="isLiveRequest" />
 			<!-- 新品橱窗 -->
@@ -39,7 +37,6 @@
 	import Certificate from '@/components/cm-module/homeIndex/certificate.vue'
 	import pageSpecial from '@/components/cm-module/homeIndex/pageSpecial.vue'
 	import supplierList from '@/components/cm-module/homeIndex/supplierList.vue'
-    import quickOpera from '@/components/cm-module/homeIndex/quickOperation.vue'
 	import { mapState,mapMutations} from 'vuex'
 	export default {
 		components:{
@@ -50,18 +47,18 @@
 			pageFloor,
 			Certificate,
 			pageSpecial,
-			supplierList,
-            quickOpera
+			supplierList
 		},
 		data() {
 			return {
-				nvabarData: {//顶部自定义导航
+				nvabarData: {
+					// 顶部自定义导航
 					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
 					showSearch: 0,
 					title: '采美采购商城', // 导航栏 中间的标题
-					haveBack:false,
-					textLeft:this.$store.state.isIphone,
-					textColor:'#FFFFFF'
+					haveBack: false,
+					textLeft: this.$store.state.isIphone,
+					textColor: '#333333'
 				},
 				CustomBar:this.CustomBar,// 顶部导航栏高度
 				userID:0,
@@ -184,8 +181,8 @@
 </script>
 
 <style lang="scss">
-	page{
-		background-color: #ff5b00;
+	.home{
+		background-color: #FFFFFF;
 	}
 	.container-section{
 		width: 100%;

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 652 - 381
pages/supplier/user/my-shop.vue


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

@@ -1,7 +1,5 @@
 <template>
 	<view class="container home clearfix" :style="{ paddingTop: CustomBar + 'px' }">
-		<customer ref="customer" :isScroll="isScroll" :navbar-data="nvabarData"></customer>
-		<!-- 主页内容 -->
 		<tui-skeleton
 			v-if="skeletonShow"
 			backgroundColor="#fafafa"
@@ -9,13 +7,12 @@
 			:isLoading="true"
 			:loadingType="5"
 		/>
+		<customer ref="customer" :isScroll="isScroll" :navbar-data="nvabarData" :navBarsList="navBarsList" v-if="isNavRequest" />		<!-- 主页内容 -->
 		<view class="container-home tui-skeleton">
 			<!-- 轮播 -->
-			<banner :list="bannerImageList" :newsList="newsList"  v-if="isNavRequest" />
+			<banner :list="bannerImageList" v-if="isNavRequest" />
 			<!-- 金刚区菜单 -->
-			<navbars :list="navBarsList" v-if="isNavRequest" />
-            <!-- 快捷运营 -->
-            <quick-opera :list="shortcutList" v-if="isNavRequest && shortcutList.length > 0"/>
+			<navbars :list="shortcutList" v-if="isNavRequest" />
 			<!-- 优惠券入口 -->
 			<coupon v-if="isNavRequest && couponEntry == 1" />
 			<!-- 直播 -->
@@ -63,7 +60,6 @@ import pageSpecial from '@/components/cm-module/homeIndex/pageSpecial.vue'
 import supplierList from '@/components/cm-module/homeIndex/supplierList.vue'
 import activityAlert from '@/components/cm-module/activity/activity.vue'
 import activityBean from '@/components/cm-module/activity/activityBean.vue'
-import quickOpera from '@/components/cm-module/homeIndex/quickOperation.vue'
 import cmSellerModal from '@/components/cm-share-popup/cm-seller-modal.vue'
 import homeMiXins from './index.js'
 export default {
@@ -80,7 +76,6 @@ export default {
 		supplierList,
 		activityAlert,
 		activityBean,
-        quickOpera,
         cmSellerModal
 	},
 	data() {
@@ -92,7 +87,7 @@ export default {
 				title: '采美采购商城', // 导航栏 中间的标题
 				haveBack: false,
 				textLeft: this.$store.state.isIphone,
-				textColor: '#FFFFFF'
+				textColor: '#333333'
 			},
 			CustomBar: this.CustomBar, // 顶部导航栏高度
 			isScrollTop: false,
@@ -110,12 +105,6 @@ export default {
         } else {
             this.isScroll = false
         }
-		//实时获取到滚动的值
-		if (e.scrollTop > 50) {
-			this.inputActive = 'fixed'
-		} else {
-			this.inputActive = 'float'
-		}
 		if (e.scrollTop > 400) {
 			this.isScrollTop = true
 		} else {
@@ -166,7 +155,7 @@ export default {
 
 <style lang="scss">
 page {
-	background-color: #ff5b00;
+	background-color: #ffffff;
 }
 .container-section {
 	width: 100%;

+ 8 - 0
services/shop.service.js

@@ -63,6 +63,14 @@ export default class ShopService {
             isLoading: true ,
         })
     }
+    /* 小程序供应商我的店铺分类商品列表 */
+    getCategoryProducts (data = {}) {
+        return this.AjaxService.get({ 
+            url:'/commodity/Shop/getCategoryProducts', 
+            data, 
+            isLoading: true ,
+        })
+    }
     /* 小程序供应商我的店铺banner */
     GetSupplierHomeBanner (data = {}) {
         return this.AjaxService.get({ 

+ 10 - 11
utils/cmSrsMixins.js

@@ -76,17 +76,16 @@ const cmSrsMixins = {
             this.userRecordStatistics(sysParams)
             console.log('---用户行为轨迹记录成功---')
         },
-        userRecordStatistics(params) {
+        async userRecordStatistics(params) {
             // 上送
-            this.UserService.userRecordStatistics(params)
-                .then(response => {
-                    console.log('---用户行为轨迹记录成功---')
-                    uni.removeStorageSync('pageLabel')
-                    uni.removeStorageSync('behaviorType')
-                })
-                .catch(error => {
-                    console.log('---用户行为轨迹记录失败---')
-                })
+            try{
+                await  this.UserService.userRecordStatistics(params)
+                console.log('---用户行为轨迹记录成功---')
+                uni.removeStorageSync('pageLabel')
+                uni.removeStorageSync('behaviorType')
+            }catch(e){
+				 console.log('---用户行为轨迹记录失败---')
+            }
         },
         async userInformationIsClick() {
             // 查看用户是否有过弹框游客当天是否有过弹框
@@ -108,7 +107,7 @@ const cmSrsMixins = {
 		        const res = await this.UserService.getUserPopUpInfo(this.popUpParams)
                 const data = res.data
 		        this.advertisement = data
-                this.consultParams.shopId = data.shopId
+                this.consultParams.shopProductId = data.shopProductId
 		    } catch (error) {
 		        console.log('获取失败~')
 		    }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
utils/crypto-js/crypto.js


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels