ソースを参照

commot -m 首页楼层

zhengjinyi 2 年 前
コミット
a3154d9563

+ 0 - 30
mixins/cmsMixins.js

@@ -1,30 +0,0 @@
-// 统计数据
-// 统计类型 1:首页banner;2:直播模块;3:最新活动;4:热门文章;5:新品橱窗;6:活动列表
-import Vue from 'vue'
-const cmsMixins = {
-    computed: {
-		
-    },
-    methods: {
-        cmsSysStatistics(cmsSysType,productId) {
-            this.ProductService.sYsStatisticsTypesSatisticsNumber({typeId:cmsSysType,productId:productId})
-                .then(response => {
-                    const map = {
-					    1: '首页轮播',
-					    2: '直播模块',
-					    3: '最新活动',
-					    4: '热门文章',
-					    5: '新品橱窗',
-					    6: '活动列表'
-                    }
-                    const sYsText = map[cmsSysType]
-                    console.log(`<-------${sYsText}统计数据成功------>`)
-                })
-                .catch(error => {
-                    console.log(`<-------统计${sYsText}数据异常------>`)
-                })
-        },
-    }
-}
-
-export default cmsMixins

+ 26 - 0
mixins/jumpMixins.js

@@ -0,0 +1,26 @@
+// 统计数据
+// 统计类型 1:首页banner;2:直播模块;3:最新活动;4:热门文章;5:新品橱窗;6:活动列表
+import Vue from 'vue'
+const jumpMixins = {
+    computed: {
+        jumpMap:{
+            1:'/pages/goods/product',
+            2:'/pages/goods/product'
+        }
+    },
+    methods: {
+        handleJumpLink(jump) {
+            switch(jump.jumpType){
+			   case 1://单个商品详情
+                this.$api.navigateTo(`/pages/goods/product?id=${jump.jumpProductId}`)
+                break
+			   case 2://活动列表
+                this.$api.navigateTo(`/pages/goods/product?jumpActiveId=${jump.jumpActiveId}`)
+                break
+				
+		   }
+        },
+    }
+}
+
+export default jumpMixins

+ 1 - 1
pages/goods/components/cm-header.vue

@@ -173,7 +173,7 @@ export default {
 .navbar-icon .iconfont {
 	height: 100%;
 	width: 100%;
-	font-size: 38rpx;
+	font-size: 32rpx;
 	font-weight: bold;
 	display: inline-block;
 	overflow: hidden;

+ 14 - 121
pages/goods/good-floor.vue

@@ -16,12 +16,12 @@
 					class="product-list"
 					@click="productDetail(pro.productId)"
 				>
-					<view class="product-image"> <image :src="pro.image" mode=""></image> </view>
+					<view class="product-image"> <image :src="pro.mainImage" mode=""></image> </view>
 					<view class="product-mains">
 						<view class="product-name"> {{ pro.name }} </view>
 						<view class="product-price" v-if="hasLogin">
 							<!-- 价格 -->
-							¥{{ pro.originalPrice | NumFormat }}
+							¥{{ pro.price | NumFormat }}
 						</view>
 						<view v-else class="product-price-none">
 							<uni-grader :grade="Number(pro.priceGrade)"></uni-grader>
@@ -53,16 +53,6 @@ export default {
 		return {
 			skeletonShow:true,
 			isModallayer: false,
-			banner: '',
-			listQuery: {
-				userId: 0,
-				source: 2,
-				pageNum: 1,
-				pageSize: 10
-			},
-			vipFlag: 0,
-			userIdentity: 0,
-			firstClubType:0,
 			productList: [],
 			nomoreText: '上拉显示更多',
 			hasNextPage: false,
@@ -71,8 +61,8 @@ export default {
 			pullFlag: true,
 		}
 	},
-	onLoad() {
-		this.initGetStotage()
+	onLoad(option) {
+		this.mallOrganizeProducts(option.id)
 	},
 	filters: {
 		NumFormat: function(text) {
@@ -81,91 +71,19 @@ export default {
 		}
 	},
 	computed: {
-		...mapState(['hasLogin', 'clubType'])
+		...mapState(['hasLogin'])
 	},
 	methods: {
-		async initGetStotage() {
-			const userInfo = await this.$api.getStorage()
-			this.listQuery.userId = userInfo.userId ? userInfo.userId : 0
-			this.vipFlag = userInfo.vipFlag ? userInfo.vipFlag : 0
-			this.userIdentity = userInfo.userIdentity ? userInfo.userIdentity : 0
-			this.firstClubType = this.clubType
-			this.getSvipProductPage()
-		},
-		getSvipProductPage() {
-			// 获取会员优惠商品列表
-			this.coupinList = []
-			this.listQuery.pageNum = 1
-			this.ProductService.getSvipProductPage(this.listQuery)
-				.then(response => {
-					let data = response.data.svipProductPage
-					this.banner = response.data.adsImage
-					if (data.results && data.results.length > 0) {
-						this.showEmpty = false
-						this.hasNextPage = data.hasNextPage
-						this.productList = data.results
-						this.pullFlag = false
-						setTimeout(() => {
-							this.pullFlag = true
-						}, 500)
-						if (this.hasNextPage) {
-							this.pullUpOn = false
-							this.nomoreText = '上拉显示更多'
-						} else {
-							if (this.coupinList.length < 8) {
-								this.pullUpOn = true
-							} else {
-								this.pullUpOn = false
-								this.loadding = false
-								this.nomoreText = '已至底部'
-							}
-						}
-					} else {
-						this.showEmpty = true
-					}
-					this.isRequest = true
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
-		},
-		getOnReachBottomData() {
-			// 上滑加载分页
-			this.listQuery.pageNum += 1
-			this.ProductService.getSvipProductPage(this.listQuery)
-				.then(response => {
-					let data = response.data.svipProductPage
-					if (data.results && data.results.length > 0) {
-						this.hasNextPage = data.hasNextPage
-						this.productList = this.productList.concat(data.results)
-						this.pullFlag = false // 防上拉暴滑
-						setTimeout(() => {
-							this.pullFlag = true
-						}, 500)
-						if (this.hasNextPage) {
-							this.pullUpOn = false
-							this.nomoreText = '上拉显示更多'
-						} else {
-							this.pullUpOn = false
-							this.loadding = false
-							this.nomoreText = '已至底部'
-						}
-					}
-				})
-				.catch(error => {
-					this.$util.msg(error.msg, 2000)
-				})
-		},
-		PromotionsFormat(promo) {
-			//促销活动类型数据处理
-			if (promo != null) {
-				if (promo.type == 1 && promo.mode == 1) {
-					return true
-				} else {
-					return false
-				}
+		async mallOrganizeProducts(floorId){
+			//初始化首页数据
+			try{
+			    const res = await this.CommonService.mallOrganizeProducts({ floorId: floorId })
+			    this.productList = res.data
+			    this.skeletonShow = false
+			}catch(error){
+			    //TODO handle the exception
+			    console.log('error',error)
 			}
-			return false
 		},
 		productDetail(productId) {
 			// 跳转商品详情
@@ -173,31 +91,6 @@ export default {
 			this.$api.navigateTo(`/pages/goods/product?id=${productId}`)
 			this.isModallayer = false
 		},
-		isShowVipFlag(pros) {
-			/**
-			 *显示SVIP和超级会员价格:
-			 * 	个人机构(不是超级会员,但价格所有机构可见),
-			 *	资质机构(不是超级会员,但价格所有机构可见或仅会员可见),
-			 * 	超级会员(价格所有机构可见或仅会员可见),超级会员(是医美机构,价格仅医美可见)
-			 *商品价格是否可见:priceFlag  0:所有机构可见 1:未公开价格 2:仅会员可见 3:仅医美机构可见
-			 *	普通机构
-			 * 		超级会员 && priceFlag === 0
-			 * 	资质机构
-			 * 		priceFlag !== 1 ||
-			 * 		超级会员
-			 * 			商品priceFlag === 3 && 是否是医美机构
-			*/
-			// 未登录 || 非会员
-			if(!this.hasLogin || !this.vipFlag === 1) return false
-			// 商品所有机构可见
-			if(pros.priceFlag === 0 ) return true
-			// 商品价格仅资质机构可见
-			if(pros.priceFlag === 2 && this.userIdentity === 2) return true
-			// 商品价格仅医美机构可见
-			if(pros.priceFlag === 3 && this.userIdentity === 2 &&  this.firstClubType == 1) return true
-			// 其它
-			return false
-		},
 	},
 	onPullDownRefresh() {
 		setTimeout(() => {

+ 3 - 3
pages/tabBar/home/components/banner.vue

@@ -10,7 +10,7 @@
 					@change="swiperChange"
 					:circular="true"
 				>
-					<swiper-item v-for="(item, index) in list" :key="index" @click.stop="NavToDetailPage(item)">
+					<swiper-item v-for="(item, index) in list" :key="index" @click.stop="handleJumpLink(item)">
 						<image :src="item.bannerImage" class="tui-slide-image" mode="scaleToFill" />
 					</swiper-item>
 				</swiper>
@@ -30,9 +30,9 @@
 </template>
 
 <script>
-import cmsMixins from '@/mixins/cmsMixins.js'
+import jumpMixins from '@/mixins/jumpMixins.js'
 export default {
-	mixins: [cmsMixins],
+	mixins: [jumpMixins],
 	name: 'banner',
 	props: {
 		list: {

+ 3 - 4
pages/tabBar/home/components/floors.vue

@@ -6,7 +6,7 @@
 					<view>
 						<text class="tui-sub__desc tui-color__pink">{{ floor.topic }}</text>
 					</view>
-					<view class="tui-more__box" @click="handleFloor">
+					<view class="tui-more__box" @click="handleFloor(floor)">
 						<text>更多</text>
 						<text class="iconfont icon-xiangyou"></text>
 					</view>
@@ -61,14 +61,13 @@
 			}
 		},
 		created(){
-			// this.initData(this.list)
 		},
 		computed: {
 			...mapState(['hasLogin'])
 		},
 		methods:{
-			handleFloor(){
-				this.$api.navigateTo('/pages/goods/good-floor')
+			handleFloor(floor){
+				this.$api.navigateTo(`/pages/goods/good-floor?id=${floor.id}`)
 			},
 			initData(list){
 				this.floorList = list

+ 18 - 52
pages/tabBar/home/components/hotmode.vue

@@ -1,79 +1,45 @@
 <template name="hotmode">
 	<view>
 		<view class="hotmode-content clearfix">
-			<view class="hot-image le" @click="handler">
-				<image src="https://img-b.caimei365.com/group1/M00/04/30/rB-lHGRWIi-AMo5bAABBwc_L90w000.png" mode=""></image>
+			<view class="hot-image le" @click="handleProcurement">
+				<image :src="staticUrl + 'icon_model_1@2x.png'" mode=""></image>
 			</view>
-			<view class="hot-image ri">
-				<image src="https://img-b.caimei365.com/group1/M00/04/30/rB-lHGRWIi-AJl1FAABLF6OKCBA834.png" mode=""></image>
+			<view class="hot-image ri" @click.stop="handleJumpLink(mallTheme)">
+				<image :src="mallTheme.image" mode=""></image>
 			</view>
 		</view>
 	</view>
 </template>
 
 <script>
+	import jumpMixins from '@/mixins/jumpMixins.js'
 	export default{
+		mixins: [jumpMixins],
 		name:'hotmode',
 		props:{
-			list:{
-				type:Array
+			mallTheme:{
+				type:Object
 			}
 		},
 		data() {
 			return{
-				current:100,
+				staticUrl:this.global.staticUrl,
 				navList:[]
 			}
 		},
 		created(){
-			this.initData(this.list)
 		},
 		computed: {
 	
 		},
 		methods:{
-			initData(list){
-				this.navList = list
-			},
-			handler() {
-                uni.navigateTo({
-                    url:'/pages/goods/procurement'
-                })
+		
+			handleProcurement() {
+				//跳转集采列表
+				this.$api.navigateTo(`/pages/goods/procurement`)
             },
-            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{
-					/**
-					 * 页面跳转类型
-					 * 1、二级页面,2、搜索项目仪器,3、直播页面,4、自由页面,5、商品详情,6、仪器项目详情,7、供应商主页
-					 * 8、专题活动页,9、二手市场介绍,10、二手商品列表,11、二手商品发布,12、商品搜索,13、信息详情
-					 * 14、品牌招商介绍页,15、维修保养介绍页,16、首页,17、注册页,18、信息中心,19、供应商列表
-					 * 23、新活动专题页面
-					 **/
-					 if(pros.linkType){
-					 	 const typeMap = {
-					 		1:`/pages/goods/goods-instrument?linkId=${pros.linkParam.id}&title=${pros.name}`,
-					 		3:'/pages/h5/article/path-live',
-					 		4:'/pages/h5/other/brands',
-					 		10:'/pages/second/product/product-list',
-					 		14:'/pages/h5/other/brand',
-					 		15:'/pages/h5/other/repair',
-					 		18:`/pages/h5/article/path?link=${pros.link}`,
-					 		20:`/pages/goods/good-floor?linkId=${pros.linkParam.id}&title=${pros.name}`,
-					 		21:'/pages/h5/activity/meobohui',
-					 		22:`/pages/goods/good-floor-temp?linkId=${pros.linkParam.id}&title=${pros.name}`,
-					 		23:`/pages/h5/activity/activity-topic?linkId=${pros.linkParam.id}`,  //活动专题页面
-					         25:'/pages/goods/goods-doc-list' ,//美业资料
-					         28:`/pages/h5/article/path?link=${pros.link}`, // 采美认证通
-					 		29:'/pages/user/coupon/coupon-collection',//领券中心
-					 		
-					 	 }
-					 	const url = typeMap[pros.linkType]
-					 	this.$api.navigateTo(url)
-					 }
-				}
+			handleActivi(){
+				this.$api.navigateTo(`/pages/goods/good-floor?id=${floor.id}`)
 			}
 		}
 	}
@@ -82,13 +48,13 @@
 <style lang="scss">
 	.hotmode-content{
 		width: 100%;
-		height: 248rpx;
+		height: 228rpx;
 		box-sizing: border-box;
 		padding: 24rpx;
 		background: #F7F7F7;
 		.hot-image{
 			width: 340rpx;
-			height: 200rpx;
+			height: 180rpx;
 			float: left;
 			&.le{
 				float: left;
@@ -99,7 +65,7 @@
 			}
 			image{
 				width: 340rpx;
-				height: 200rpx;
+				height: 180rpx;
 				display: block;
 			}
 		}

+ 100 - 140
pages/tabBar/home/components/navbars.vue

@@ -1,10 +1,8 @@
 <template name="navbars">
 	<view>
 		<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.image" mode="widthFix"></image>
-				</view>
+			<view class="nav-item" v-for="(item, index) in list" :key="index" @click="handleJumpLink(item, index)">
+				<view class="icon"> <image class="icon-image" :src="item.image" mode="widthFix"></image> </view>
 				<view class="name">{{ item.topic }}</view>
 			</view>
 		</view>
@@ -12,159 +10,121 @@
 </template>
 
 <script>
-	export default{
-		name:'navbars',
-		props:{
-			list:{
-				type:Array
-			}
-		},
-		data() {
-			return{
-				current:100,
-			}
-		},
-		created(){
-			// this.initData(this.list)
-		},
-		computed: {
-	
-		},
-		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{
-					/**
-					 * 页面跳转类型
-					 * 1、二级页面,2、搜索项目仪器,3、直播页面,4、自由页面,5、商品详情,6、仪器项目详情,7、供应商主页
-					 * 8、专题活动页,9、二手市场介绍,10、二手商品列表,11、二手商品发布,12、商品搜索,13、信息详情
-					 * 14、品牌招商介绍页,15、维修保养介绍页,16、首页,17、注册页,18、信息中心,19、供应商列表
-					 * 23、新活动专题页面
-					 **/
-					 if(pros.linkType){
-					 	 const typeMap = {
-					 		1:`/pages/goods/goods-instrument?linkId=${pros.linkParam.id}&title=${pros.name}`,
-					 		3:'/pages/h5/article/path-live',
-					 		4:'/pages/h5/other/brands',
-					 		10:'/pages/second/product/product-list',
-					 		14:'/pages/h5/other/brand',
-					 		15:'/pages/h5/other/repair',
-					 		18:`/pages/h5/article/path?link=${pros.link}`,
-					 		20:`/pages/goods/good-floor?linkId=${pros.linkParam.id}&title=${pros.name}`,
-					 		21:'/pages/h5/activity/meobohui',
-					 		22:`/pages/goods/good-floor-temp?linkId=${pros.linkParam.id}&title=${pros.name}`,
-					 		23:`/pages/h5/activity/activity-topic?linkId=${pros.linkParam.id}`,  //活动专题页面
-					         25:'/pages/goods/goods-doc-list' ,//美业资料
-					         28:`/pages/h5/article/path?link=${pros.link}`, // 采美认证通
-					 		29:'/pages/user/coupon/coupon-collection',//领券中心
-					 		
-					 	 }
-					 	const url = typeMap[pros.linkType]
-					 	this.$api.navigateTo(url)
-					 }
-				}
-			}
+import jumpMixins from '@/mixins/jumpMixins.js'
+export default {
+	mixins: [jumpMixins],
+	name: 'navbars',
+	props: {
+		list: {
+			type: Array
+		}
+	},
+	data() {
+		return {
+			current: 100
 		}
+	},
+	created() {
+	},
+	computed: {},
+	methods: {
+		
 	}
+}
 </script>
 
 <style lang="scss">
-	.navbars-content{
-		width: 100%;
+.navbars-content {
+	width: 100%;
+	height: auto;
+	box-sizing: border-box;
+	padding: 0 24rpx;
+	margin-top: 48rpx;
+	.nav-item {
+		width: 164rpx;
 		height: auto;
-		box-sizing: border-box;
-		padding: 0 24rpx;
-		margin-top: 48rpx;
-		.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;
-			}
-			.icon{
+		float: left;
+		margin-bottom: 30rpx;
+		margin-right: 15.3rpx;
+		&:nth-child(4) {
+			margin-right: 0;
+		}
+		&:nth-child(8) {
+			margin-right: 0;
+		}
+		.icon {
+			width: 110rpx;
+			height: 110rpx;
+			margin: 0 auto;
+			position: relative;
+			.icon-image {
 				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;
-				}
+				display: block;
 			}
-			.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{
+				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;
+			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;
-						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;
-						}
+						display: block;
 					}
-					.name{
-						width: 100%;
-						height: 40rpx;
-						line-height: 40rpx;
-						text-align: center;
-						font-size: $font-size-28;
-						color: #666666;
+					.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;
+				}
 			}
 		}
 	}
+}
 </style>

+ 2 - 0
pages/tabBar/home/index.js

@@ -25,6 +25,7 @@ const homeMiXins = {
             bannerList: [], // 轮播
             mainmenu: [], // 导航分类
             floorList: [], // 楼层
+            mallTheme:{}, //活动专题
             isScrollTop: false,
         }
     },
@@ -41,6 +42,7 @@ const homeMiXins = {
                 this.bannerList = data.bannerList
                 this.mainmenu = data.mainmenu
                 this.floorList = data.floorList
+                this.mallTheme = data.mallTheme
                 // if (this.hasLogin) {
                 // 	// this.initShoppingCartCount()
                 // }

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

@@ -14,7 +14,7 @@
 			<!-- 金刚区菜单 -->
 			<navbars :list="mainmenu" v-if="skeletonShow"></navbars>
 			<!-- 活动模块 -->
-			<hotmode :list="mainmenu" v-if="skeletonShow"></hotmode>
+			<hotmode :mallTheme="mallTheme" v-if="skeletonShow"></hotmode>
 			<!-- 楼层模块 -->
 			<floors :list="floorList" v-if="skeletonShow"></floors>
 		</view>

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

@@ -54,24 +54,6 @@
 							<text class="iconfont icon-xiangyou"></text>
 						</view>
 						<view class="order-section">
-							<view
-								class="order-item"
-								@click="navigator('/pages/user/order/order-list?state=1')"
-								hover-class="common-hover"
-								:hover-stay-time="50"
-							>
-								<view class="order-icon">
-									<image :src="staticUrl + 'icon_order_1@2x.png'" mode=""></image>
-									<text
-										v-if="confirmedCount > 0 && hasLogin"
-										class="uni-badge uni-badge-error uni-small uni-badge--small icon-num"
-										:class="[confirmedCount < 10 ? 'goleft' : '']"
-									>
-										{{ confirmedCount >= 99 ? '99+' : confirmedCount }}
-									</text>
-								</view>
-								<text class="order-t">待确认</text>
-							</view>
 							<view
 								class="order-item"
 								@click="navigator('/pages/user/order/order-list?state=2')"

+ 3 - 3
services/common.service.js

@@ -14,10 +14,10 @@ export default class CommonService {
             isLoading: false,
         })
     }
-    /* 首页初始化 */
-    GetHomeModulesDataInfo(data = {}) {
+    /* 楼层商品 floorId  楼层Id*/
+    mallOrganizeProducts(data = {}) {
         return this.AjaxService.get({
-            url: '/commodity/home/init',
+            url: '/commodity/MallOrganize/mall/organizeProducts',
             data,
             isLoading: false,
         })