Browse Source

.index/ins

yuxingxing 2 years ago
parent
commit
1162cf8888
30 changed files with 6 additions and 6945 deletions
  1. 1 3
      pages/goods_cate/goods_cate.vue
  2. 2 5
      pages/goods_cate/goods_cate1.vue
  3. 1 4
      pages/index/index.vue
  4. 0 176
      pages/index/visualization/components/activity.vue
  5. 0 94
      pages/index/visualization/components/adsRecommend.vue
  6. 0 642
      pages/index/visualization/components/alive.vue
  7. 0 238
      pages/index/visualization/components/bargain.vue
  8. 0 258
      pages/index/visualization/components/combination.vue
  9. 0 344
      pages/index/visualization/components/coupon.vue
  10. 0 114
      pages/index/visualization/components/customerService.vue
  11. 0 285
      pages/index/visualization/components/goodList.vue
  12. 0 251
      pages/index/visualization/components/headerSerch.vue
  13. 0 190
      pages/index/visualization/components/mBanner.vue
  14. 0 153
      pages/index/visualization/components/menus.vue
  15. 0 321
      pages/index/visualization/components/newGoods.vue
  16. 0 191
      pages/index/visualization/components/news.vue
  17. 0 73
      pages/index/visualization/components/picTxt.vue
  18. 0 379
      pages/index/visualization/components/popular.vue
  19. 0 189
      pages/index/visualization/components/promotion.vue
  20. 0 373
      pages/index/visualization/components/recommend.vue
  21. 0 235
      pages/index/visualization/components/scrollBox.vue
  22. 0 296
      pages/index/visualization/components/seckill.vue
  23. 0 391
      pages/index/visualization/components/skeleton.vue
  24. 0 295
      pages/index/visualization/components/swiperBg.vue
  25. 0 165
      pages/index/visualization/components/tabBar.vue
  26. 0 245
      pages/index/visualization/components/tabNav.vue
  27. 0 105
      pages/index/visualization/components/titles.vue
  28. 0 922
      pages/index/visualization/index.vue
  29. 1 4
      pages/order_addcart/order_addcart.vue
  30. 1 4
      pages/user/index.vue

+ 1 - 3
pages/goods_cate/goods_cate.vue

@@ -17,14 +17,12 @@
 	import {
 		mapGetters
 	} from 'vuex';
-	import tabBar from "@/pages/index/visualization/components/tabBar.vue"
 	export default {
 		computed: mapGetters(['isLogin', 'uid']),
 		components: {
 			goodsCate1,
 			goodsCate2,
-			goodsCate3,
-			tabBar
+			goodsCate3
 		},
 		mixins: [colors],
 		data() {

+ 2 - 5
pages/goods_cate/goods_cate1.vue

@@ -53,8 +53,7 @@
 				</scroll-view>
 			</view>
 		</view>
-		<tabBar v-if="!is_diy" :pagePath="'/pages/goods_cate/goods_cate'"></tabBar>
-		<view class="foot" v-else-if="is_diy && newData.status && newData.status.status">
+		<view class="foot" v-if="is_diy && newData.status && newData.status.status">
 			<view class="page-footer" id="target" :style="{'background-color':newData.bgColor.color[0].item}">
 				<view class="foot-item" v-for="(item,index) in newData.menuList" :key="index" @click="goRouter(item)">
 					<block v-if="item.link == activeRouter">
@@ -87,12 +86,10 @@
 	import {
 		getNavigation
 	} from '@/api/public.js'
-	import tabBar from "@/pages/index/visualization/components/tabBar.vue";
 	const app = getApp();
 	export default {
 		components: {
-			pageFooter,
-			tabBar
+			pageFooter
 		},
 		data() {
 			return {

+ 1 - 4
pages/index/index.vue

@@ -1,11 +1,9 @@
 <template>
 	<diy ref="diy" v-if="isDiy"></diy>
-	<visualization v-else></visualization>
 </template>
 
 <script>
 	import diy from './diy'
-	import visualization from './visualization'
 	import {
 		getShare
 	} from "@/api/public.js";
@@ -17,8 +15,7 @@
 			}
 		},
 		components: {
-			diy,
-			visualization
+			diy
 		},
 		onShow() {
 			uni.$on('is_diy', (data) => {

+ 0 - 176
pages/index/visualization/components/activity.vue

@@ -1,176 +0,0 @@
-<template>
-	<view>
-		<view v-if="isShow" class="specialArea acea-row row-between-wrapper">
-			<view class="assemble skeleton-rect" hover-class="none" @click="gopage(activityOne.info[2].value)">
-				<image :src="activityOne.img" alt="img" />
-				<!-- <view class="text" v-if="activityOne.info">
-					<view class="name">{{ activityOne.info[0].value }}</view>
-					<view class="infor">{{ activityOne.info[1].value }}</view>
-				</view> -->
-			</view>
-			<view class="list acea-row row-column-between">
-				<view class="item skeleton-rect" v-for="(item, index) in activity" :key="index" @click="gopage(item.info[2].value)">
-					<image :src="item.img" alt="img" />
-					<!-- 	<view class="text">
-						<view class="name">{{ item.info[0].value }}</view>
-						<view class="infor">{{ item.info[1].value}}</view>
-					</view> -->
-				</view>
-			</view>
-		</view>
-		<view v-if="!isShow && isIframe" class="specialArea acea-row row-between-wrapper">
-			<view class="assemble" hover-class="none" @click="gopage(activityOne.info[2].value)">
-				<image :src="activityOne.img" alt="img" />
-				<!-- <view class="text" v-if="activityOne.info">
-					<view class="name">{{ activityOne.info[0].value }}</view>
-					<view class="infor">{{ activityOne.info[1].value }}</view>
-				</view> -->
-			</view>
-			<view class="list acea-row row-column-between">
-				<view class="item" v-for="(item, index) in activity" :key="index" @click="gopage(item.info[2].value)">
-					<image :src="item.img" alt="img" />
-					<!-- <view class="text">
-						<view class="name">{{ item.info[0].value }}</view>
-						<view class="infor">{{ item.info[1].value}}</view>
-					</view> -->
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp()
-	import {
-		goPage
-	} from '@/libs/order.js'
-	export default {
-		name: 'activity',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			}
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						let data = JSON.parse(JSON.stringify(nVal.imgList.list))
-						this.activityOne = nVal.imgList.list[0]
-						data.splice(0, 1)
-						this.activity = data
-						this.isShow = nVal.isShow.val
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				activity: [],
-				activityOne: {},
-				name: this.$options.name,
-				isShow: true,
-				isIframe: app.globalData.isIframe
-			}
-		},
-		created() {},
-		methods: {
-			gopage(url) {
-				goPage().then(res => {
-					if (url.indexOf("http") != -1) {
-						// #ifdef H5
-						location.href = url
-						// #endif
-					} else {
-						if (['/pages/goods_cate/goods_cate', '/pages/order_addcart/order_addcart',
-								'/pages/user/index'
-							].indexOf(url) ==
-							-1) {
-							uni.navigateTo({
-								url: url
-							})
-						} else {
-							uni.navigateTo({
-								url: url
-							})
-						}
-					}
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.specialArea {
-		background: linear-gradient(180deg, #fff 0%, #f5f5f5 100%);
-		// background-color: $uni-bg-color;
-		padding: 0 $uni-index-margin-col 0 $uni-index-margin-col;
-		border-radius: $uni-border-radius-index;
-		// box-shadow: $uni-index-box-shadow;
-	}
-
-	.specialArea .assemble {
-		width: 336rpx;
-		height: 300rpx;
-		position: relative;
-	}
-
-	.specialArea .assemble image {
-		width: 100%;
-		height: 100%;
-		border-radius: 5rpx;
-	}
-
-	.specialArea .assemble .text {
-		position: absolute;
-		top: 37rpx;
-		left: 22rpx;
-	}
-
-	.specialArea .name {
-		font-size: 30rpx;
-		color: #fff;
-	}
-
-	.specialArea .infor {
-		font-size: 22rpx;
-		color: rgba(255, 255, 255, 0.8);
-		margin-top: 5rpx;
-	}
-
-	.specialArea .list {
-		width: 344rpx;
-		height: 300rpx;
-	}
-
-	.specialArea .item {
-		width: 100%;
-		height: 146rpx;
-		position: relative;
-	}
-
-	.specialArea .item img {
-		width: 100%;
-		height: 100%;
-	}
-
-	.specialArea .item .text {
-		position: absolute;
-		top: 23rpx;
-		left: 28rpx;
-	}
-
-	.specialArea .item image {
-		width: 100%;
-		height: 100%;
-	}
-
-	.specialArea .item .text {
-		position: absolute;
-		top: 23rpx;
-		left: 28rpx;
-	}
-</style>

+ 0 - 94
pages/index/visualization/components/adsRecommend.vue

@@ -1,94 +0,0 @@
-<template>
-	<view class="recommend acea-row row-between-wrapper">
-		<view class="pictrue acea-row row-center-wrapper" v-if="isIframe && !recommendList.length">
-			<view style="text-align: center;">
-				<text class="iconfont icon-icon25201"></text>
-				<view>{{$t(`广告位`)}}</view>
-			</view>
-		</view>
-		<view class="pictrue" v-for="(item, index) in recommendList" :key="index" @click="goDetail(item)" v-if="recommendList.length && isShow && !isIframe">
-			<image :src="item.img"></image>
-		</view>
-		<view class="pictrue" v-for="(item, index) in recommendList" :key="index" @click="goDetail(item)" v-if="recommendList.length && isIframe">
-			<image :src="item.img"></image>
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp();
-	import {
-		goPage
-	} from '@/libs/order.js';
-	export default {
-		name: 'adsRecommend',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			},
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if(nVal){
-						this.recommendList = nVal.imgList.list;
-						this.isShow = nVal.isShow.val;
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				recommendList: [],
-				name:this.$options.name,//component组件固定写法获取当前name;
-				isIframe:app.globalData.isIframe,//判断是前台还是后台;
-				isShow:true//判断此模块是否显示;
-			};
-		},
-		created() {
-		},
-		mounted() {
-		},
-		methods: {
-			goDetail(item){
-				goPage(item).then(res=>{
-					uni.navigateTo({
-						url: item.info[0].value
-					})
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.recommend{
-		padding: 0 30rpx;
-		margin-top: 26rpx;
-		.pictrue{
-			width: 338rpx;
-			height: 206rpx;
-			background-color: #ccc;
-			border-radius: 8rpx;
-			margin-bottom: 15rpx;
-			
-			image{
-				width: 100%;
-				height: 100%;
-			}
-			
-			.iconfont{
-				font-size: 50rpx;
-			}
-		}
-	}
-	.recommend .pictrue:nth-last-child(1) {
-	    margin-bottom: 0;
-	}
-	.recommend .pictrue:nth-last-child(2) {
-	    margin-bottom: 0;
-	}
-</style>
-

+ 0 - 642
pages/index/visualization/components/alive.vue

@@ -1,642 +0,0 @@
-<template>
-	<view class="">
-
-		<!-- #ifdef H5 -->
-		<view class="live" v-if="isIframe">
-			<view v-if="isIframe && liveList.length>0">
-				<view class="title-box" v-if="titleInfo.length">
-					<text class="title">{{titleInfo[0].val}}</text>
-					<navigator class="more">{{$t(`查看更多`)}}<text class="iconfont icon-jiantou"></text></navigator>
-				</view>
-				<view class="live-wrapper-a">
-					<navigator class="live-item-a" v-for="(item,index) in liveList" :key="index"
-						:url="'plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=' + item.room_id+'&custom_params='+custom_params"
-						hover-class="none">
-						<view class="img-box">
-							<view class="bgblue" v-if="item.live_status == 102">
-								<view class="txt">{{$t(`预告`)}}</view>
-								<view class="msg">{{item.show_time}}</view>
-							</view>
-							<view class="label bggary" v-if="item.live_status==103">
-								<text class="iconfont icon-huifang"></text>
-								<text>{{$t(`回放`)}}</text>
-							</view>
-							<view class="label bgred" v-if="item.live_status==101">
-								<text class="iconfont icon-zhibozhong"></text>
-								<text>{{$t(`进行中`)}}</text>
-							</view>
-							<image :src="item.share_img"></image>
-						</view>
-						<view class="info">
-							<view class="title line1">{{item.name}}</view>
-							<!-- <view class="people">
-							<image :src="item.anchor_img" alt="">
-								<text>{{item.anchor_name}}</text>
-						</view> -->
-							<!-- <view class="goods-wrapper">
-							<block v-if="item.goods.length<=3">
-								<view class="goods-item" v-for="(goods,index) in item.goods" :key="index">
-									<image :src="goods.cover_img" alt="">
-										<text class="line1">¥{{goods.price}}</text>
-								</view>
-							</block>
-							<block v-if=" item.goods.length>3">
-								<view class="goods-item" v-for="(goods,index) in item.goods" :key="index"
-									v-if="index<2">
-									<image :src="goods.cover_img" alt="">
-										<text class="line1">¥{{goods.price}}</text>
-								</view>
-								<view class="goods-item">
-									<image :src="item.goods[item.goods.length-1].cover_img" alt="">
-										<view class="num">+{{item.goods.length}}</view>
-								</view>
-							</block>
-							<block v-if="item.goods.length == 0">
-								<view class="empty-goods">暂无商品</view>
-							</block>
-						</view> -->
-						</view>
-					</navigator>
-				</view>
-			</view>
-			<view v-if="isIframe && !liveList.length">
-				<view class="title-box" v-if="titleInfo.length">
-					<text class="title">{{titleInfo[0].val}}</text>
-					<navigator class="more">{{$t(`查看更多`)}}<text class="iconfont icon-jiantou"></text></navigator>
-				</view>
-				<view class="live-wrapper-a">
-					<view class="empty-img">{{$t(`暂无数据`)}}</view>
-				</view>
-			</view>
-		</view>
-		<!-- #endif -->
-		<!-- #ifdef MP -->
-		<view class="live"  v-if="isShow && liveList.length>0">
-			<view class="skeleton-rect">
-				<view class="title-box" v-if="titleInfo.length">
-					<view class='text'>
-						<view class='title line1'>
-							{{titleInfo[0].val}}
-						</view>
-						<view class='line1 txt-btn'>{{$t(`精彩内容`)}}</view>
-					</view>
-					<navigator hover-class="none" url="/pages/columnGoods/live_list/index" class="more">{{$t(`更多`)}}<text
-							class="iconfont icon-jiantou"></text></navigator>
-				</view>
-				<view class="live-wrapper-a">
-					<navigator class="live-item-a" v-for="(item,index) in liveList" :key="index"
-						:url="'plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=' + item.room_id+'&custom_params='+custom_params"
-						hover-class="none">
-						<view class="img-box">
-							<view class="bgblue" v-if="item.live_status == 102">
-								<view class="txt">{{$t(`预告`)}}</view>
-								<view class="msg">{{item.show_time}}</view>
-							</view>
-							<view class="label bggary" v-if="item.live_status==103">
-								<text class="iconfont icon-huifang"></text>
-								<text>{{$t(`回放`)}}</text>
-							</view>
-							<view class="label bgred" v-if="item.live_status==101">
-								<text class="iconfont icon-zhibozhong"></text>
-								<text>{{$t(`进行中`)}}</text>
-							</view>
-							<image :src="item.share_img"></image>
-						</view>
-						<view class="info">
-							<view class="title line1">{{item.name}}</view>
-							<!-- <view class="people">
-							<image :src="item.anchor_img" alt="">
-								<text>{{item.anchor_name}}</text>
-						</view> -->
-							<!-- <view class="goods-wrapper">
-							<block v-if="item.goods.length<=3">
-								<view class="goods-item" v-for="(goods,index) in item.goods" :key="index">
-									<image :src="goods.cover_img" alt="">
-										<text class="line1">¥{{goods.price}}</text>
-								</view>
-							</block>
-							<block v-if=" item.goods.length>3">
-								<view class="goods-item" v-for="(goods,index) in item.goods" :key="index"
-									v-if="index<2">
-									<image :src="goods.cover_img" alt="">
-										<text class="line1">¥{{goods.price}}</text>
-								</view>
-								<view class="goods-item">
-									<image :src="item.goods[item.goods.length-1].cover_img" alt="">
-										<view class="num">+{{item.goods.length}}</view>
-								</view>
-							</block>
-							<block v-if="item.goods.length == 0">
-								<view class="empty-goods">暂无商品</view>
-							</block>
-						</view> -->
-						</view>
-					</navigator>
-				</view>
-			</view>
-		</view>
-		<!-- #endif -->
-	</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp().globalData
-	import {
-		getLiveList
-	} from '@/api/api.js';
-	export default {
-		name: 'alive',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			}
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.numConfig = nVal.numConfig.val;
-						this.titleInfo = nVal.titleInfo.list;
-						this.isShow = nVal.isShow.val;
-						this.getLiveList();
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				isIframe: false,
-				liveList: [],
-				numConfig: 0,
-				limit: this.$config.LIMIT,
-				name: this.$options.name,
-				titleInfo: [],
-				isShow: true,
-				custom_params:''
-			}
-		},
-		created() {
-			this.isIframe = app.isIframe
-		},
-		mounted() {
-			this.custom_params= encodeURIComponent(JSON.stringify({spid:this.$store.state.app.uid}))
-		},
-		methods: {
-			getLiveList: function() {
-				getLiveList(1, this.numConfig <= this.limit ? this.numConfig : this.limit)
-					.then(res => {
-						this.liveList = res.data;
-					})
-					.catch(res => {});
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.live {
-		background-color: $uni-bg-color;
-		margin: $uni-index-margin-row $uni-index-margin-col 0 $uni-index-margin-col;
-		border-radius: $uni-border-radius-index;
-		padding-bottom: 15rpx;
-	}
-
-	.live-wrapper {
-		position: relative;
-		width: 100%;
-		overflow: hidden;
-		border-radius: 16rpx;
-		background-color: $uni-bg-color;
-
-		image {
-			width: 100%;
-			height: 400rpx;
-		}
-		
-
-		.live-top {
-			z-index: 20;
-			position: absolute;
-			left: 0;
-			top: 0;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			color: #fff;
-			width: 180rpx;
-			height: 54rpx;
-			border-radius: 0rpx 0px 18rpx 0px;
-
-			image {
-				width: 30rpx;
-				height: 30rpx;
-				margin-right: 10rpx;
-				/* #ifdef H5 */
-				display: block;
-				/* #endif */
-			}
-		}
-
-		.live-title {
-			position: absolute;
-			left: 0;
-			bottom: 6rpx;
-			width: 100%;
-			height: 70rpx;
-			line-height: 70rpx;
-			text-align: center;
-			font-size: 30rpx;
-			color: #fff;
-			background: rgba(0, 0, 0, 0.35);
-		}
-
-		&.mores {
-			width: 100%;
-
-			.item {
-				position: relative;
-				width: 320rpx;
-				display: inline-block;
-				border-radius: 16rpx;
-				overflow: hidden;
-				margin-right: 20rpx;
-
-				image {
-					width: 320rpx;
-					height: 180rpx;
-					border-radius: 16rpx;
-				}
-
-				.live-title {
-					height: 40rpx;
-					line-height: 40rpx;
-					text-align: center;
-					font-size: 22rpx;
-				}
-
-				.live-top {
-					width: 120rpx;
-					height: 36rpx;
-					font-size: 22rpx;
-
-					image {
-						width: 20rpx;
-						height: 20rpx;
-					}
-				}
-			}
-		}
-	}
-
-	.live-wrapper-a {
-		display: flex;
-		width: 690rpx;
-		padding: 0rpx 30rpx 0;
-		overflow-x: scroll;
-
-		.live-item-a {
-			width: 280rpx;
-			background: #fff;
-			margin-right: 20rpx;
-			border-radius: 16rpx;
-
-			&:last-child {
-				margin-right: 20rpx;
-			}
-
-			.img-box {
-				position: relative;
-				width: 280rpx;
-				height: 180rpx;
-
-				image {
-					width: 100%;
-					height: 100%;
-					border-radius: 12rpx;
-					object-fit: cover;
-				}
-			}
-
-			.info {
-				flex: 1;
-				display: flex;
-				flex-direction: column;
-				justify-content: space-between;
-				padding: 15rpx 0rpx;
-
-				.title {
-					font-size: 28rpx;
-					color: #333;
-				}
-
-				.people {
-					display: flex;
-					align-items: center;
-					color: #999;
-					font-size: 24rpx;
-					margin-top: 10rpx;
-
-					image {
-						width: 32rpx;
-						height: 32rpx;
-						border-radius: 50%;
-						margin-right: 10rpx;
-					}
-				}
-
-				.goods-wrapper {
-					display: flex;
-
-					.goods-item {
-						position: relative;
-						width: 96rpx;
-						height: 96rpx;
-						margin-right: 20rpx;
-						overflow: hidden;
-						border-radius: 16rpx;
-
-						&:last-child {
-							margin-right: 0;
-						}
-
-						image {
-							width: 100%;
-							height: 100%;
-							border-radius: 16rpx;
-						}
-
-						.bg {
-							position: absolute;
-							left: 0;
-							top: 0;
-							width: 100%;
-							height: 100%;
-							border-radius: 16rpx;
-							background: rgba(0, 0, 0, 0.3);
-						}
-
-						text {
-							position: absolute;
-							left: 0;
-							bottom: 0;
-							width: 100%;
-							height: 60rpx;
-							line-height: 70rpx;
-							color: #fff;
-							background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.75) 100%);
-						}
-
-						.num {
-							display: flex;
-							align-items: center;
-							justify-content: center;
-							position: absolute;
-							left: 0;
-							top: 0;
-							width: 100%;
-							height: 100%;
-							background: rgba(0, 0, 0, 0.3);
-							color: #fff;
-							font-size: 28rpx;
-						}
-					}
-				}
-
-				.empty-goods {
-					width: 96rpx;
-					height: 96rpx;
-					border-radius: 6rpx;
-					background-color: #B2B2B2;
-					color: #fff;
-					font-size: 20rpx;
-					text-align: center;
-					line-height: 96rpx;
-				}
-			}
-		}
-
-		&.live-wrapper-c {
-			.live-item-a {
-				display: flex;
-				flex-direction: column;
-
-				.img-box {
-					width: 100%;
-					border-radius: 8px 8px 0 0;
-				}
-
-				.info {
-					display: flex;
-					justify-content: space-between;
-					align-items: center;
-					flex-direction: initial;
-
-					.left {
-						width: 69%;
-					}
-
-					.goods-wrapper {
-						flex: 1;
-					}
-				}
-			}
-		}
-	}
-
-	.text {
-		display: flex;
-		align-items: flex-end;
-
-		.name {
-			font-size: 32rpx;
-			font-weight: bold;
-		}
-
-		.txt-btn {
-			font-size: 24rpx;
-			display: flex;
-			align-items: flex-end;
-			margin-left: 12rpx;
-			color: #999;
-			margin-bottom: 4rpx;
-		}
-
-	}
-
-	.live-wrapper-b {
-		padding: 0rpx 20rpx 0;
-		display: flex;
-		justify-content: space-between;
-		flex-wrap: wrap;
-
-		.live-item-b {
-			width: 345rpx;
-			background-color: #fff;
-			border-radius: 16rpx;
-			overflow: hidden;
-			margin-bottom: 20rpx;
-			overflow: hidden;
-
-			.img-box {
-				position: relative;
-
-				image {
-					width: 100%;
-					height: 274rpx;
-				}
-			}
-
-			.info {
-				display: flex;
-				flex-direction: column;
-				padding: 20rpx;
-
-				.title {
-					font-size: 30rpx;
-					color: #333;
-				}
-
-				.people {
-					display: flex;
-					margin-top: 10rpx;
-					color: #999;
-
-					image {
-						width: 36rpx;
-						height: 36rpx;
-						border-radius: 50%;
-						margin-right: 10rpx;
-					}
-				}
-			}
-		}
-	}
-
-	.label {
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		position: absolute;
-		left: 10rpx;
-		top: 10rpx;
-		border-radius: 22rpx 0px 22rpx 22rpx;
-		font-size: 24rpx;
-		color: #fff;
-		z-index: 1;
-
-		image {
-			margin-right: 10rpx;
-		}
-
-		text {
-			font-size: 22rpx;
-		}
-	}
-
-	.bgred {
-		width: 132rpx;
-		height: 38rpx;
-		background: linear-gradient(270deg, #F5742F 0%, #FF1717 100%)
-	}
-
-	.bggary {
-		width: 108rpx;
-		height: 38rpx;
-		background: linear-gradient(270deg, #999999 0%, #666666 100%);
-		line-height: 38rpx;
-	}
-
-	.bggary .iconfont {
-		margin-right: 8rpx;
-		font-size: 24rpx;
-		color: #FFFFFF;
-	}
-
-	.bgblue {
-		display: flex;
-		align-items: center;
-		position: absolute;
-		left: 4rpx;
-		top: 10rpx;
-		border-radius: 22rpx 0px 22rpx 22rpx;
-		font-size: 24rpx;
-		color: #fff;
-		z-index: 1;
-		width: 220rpx;
-		height: 38rpx;
-		background: rgba(0, 0, 0, 0.36);
-		overflow: hidden;
-
-		.txt {
-			position: relative;
-			left: -5rpx;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			width: 80rpx;
-			height: 100%;
-			text-align: center;
-			background: linear-gradient(270deg, #2FA1F5 0%, #0076FF 100%);
-		}
-	}
-
-	.title-box {
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
-		padding: 20rpx 20rpx;
-		font-size: 32rpx;
-
-		.title {
-			font-size: $uni-index-title-font-size;
-			font-weight: bold;
-		}
-
-
-
-		// .text {
-		// 	font-size: 24rpx;
-		// 	color: #999;
-		// 	width: 530rpx;
-		// }
-
-		// .name {
-		// 	color: #282828;
-		// 	font-size: 30rpx;
-		// 	font-weight: bold;
-		// 	margin-bottom: 5rpx;
-		// }
-
-		.more {
-			display: flex;
-			align-items: center;
-			justify-content: center;
-
-			font-size: 24rpx;
-			color: #999999;
-
-			.iconfont {
-				margin-left: 9rpx;
-				font-size: 26rpx;
-				vertical-align: 3rpx;
-			}
-		}
-	}
-
-	.empty-img {
-		width: 690rpx;
-		height: 300rpx;
-		border-radius: 14rpx;
-		margin: 26rpx auto 0 auto;
-		background-color: #ccc;
-		text-align: center;
-		line-height: 300rpx;
-
-		.iconfont {
-			font-size: 50rpx;
-		}
-	}
-</style>

+ 0 - 238
pages/index/visualization/components/bargain.vue

@@ -1,238 +0,0 @@
-<template>
-	<view>
-		<view class="default" v-if="isIframe && !bargList.length">
-			<text>{{$t(`砍价模块,暂无数据`)}}</text>
-		</view>
-		<view class="combination index-wrapper" v-if="bargList.length&&isShow&&!isIframe">
-			<view class='title acea-row row-between-wrapper index-wrapper'>
-				<view class='text'>
-					<view class='name line1'>{{$t(`砍价活动`)}}</view>
-					<view class='line1'>{{$t(`呼朋唤友来砍价`)}}</view>
-				</view>
-				<navigator class='more' url="/pages/activity/goods_combination/index" hover-class="none">{{$t(`更多`)}}<text class='iconfont icon-jiantou'></text></navigator>
-			</view>
-			<view class="conter">
-				<scroll-view scroll-x="true" style="white-space: nowrap; vertical-align: middle;" show-scrollbar="false">
-					<view class="itemCon" v-for="(item, index) in bargList" :key="index" @click="bargDetail(item)">
-						<view class="item">
-							<view class="pictrue">
-								<image :src="item.image"></image>
-							</view>
-							<view class="name line1">{{item.title}}</view>
-							<view class="money">
-								<view class="x_money">{{$t(`¥`)}}<text class="num">{{item.min_price}}</text></view>
-								<view class="y_money">{{$t(`¥`)}}{{item.ot_price}}</view>
-							</view>
-						</view>
-					</view>
-				</scroll-view>
-			</view>
-		</view>
-		<view class="combination index-wrapper" v-if="bargList.length&&isIframe">
-			<view class='title acea-row row-between-wrapper index-wrapper'>
-				<view class='text'>
-					<view class='name line1'>{{$t(`砍价活动`)}}</view>
-					<view class='line1'>{{$t(`呼朋唤友来砍价`)}}</view>
-				</view>
-				<navigator class='more'>{{$t(`更多`)}}<text class='iconfont icon-jiantou'></text></navigator>
-			</view>
-			<view class="conter">
-				<scroll-view scroll-x="true" style="white-space: nowrap; vertical-align: middle;" show-scrollbar="false">
-					<view class="itemCon" v-for="(item, index) in bargList" :key="index" @click="bargDetail(item)">
-						<view class="item">
-							<view class="pictrue">
-								<image :src="item.image"></image>
-							</view>
-							<view class="name line1">{{item.title}}</view>
-							<view class="money">
-								<view class="x_money">¥<text class="num">{{item.min_price}}</text></view>
-								<view class="y_money">¥{{item.ot_price}}</view>
-							</view>
-						</view>
-					</view>
-				</scroll-view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp();
-	import {
-		toLogin
-	} from '@/libs/login.js';
-	import { mapGetters } from 'vuex';
-	import {
-		goPage
-	} from '@/libs/order.js';
-	import { getHomeProducts } from '@/api/store.js';
-	export default {
-		name: 'bargain',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			}
-		},
-		computed: {
-			 ...mapGetters(['isLogin','uid'])
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if(nVal){
-						this.isShow = nVal.isShow.val;
-						this.selectType = nVal.tabConfig.tabVal;
-						this.$set(this, 'selectId', nVal.selectConfig.activeValue || '');
-						this.$set(this, 'type', nVal.titleInfo.type);
-						this.salesOrder = nVal.goodsSort.type == 1 ? 'desc' : '';
-						this.newsOrder = nVal.goodsSort.type == 2 ? 'news' : '';
-						this.ids = nVal.ids?nVal.ids.join(','):'';
-						this.numConfig = nVal.numConfig.val;
-						this.productslist();
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				bargList: [],
-				name:this.$options.name,//component组件固定写法获取当前name;
-				isIframe:app.globalData.isIframe,//判断是前台还是后台;
-				isShow:true,//判断此模块是否显示;
-				selectType:0,
-				selectId: '',
-				salesOrder:'',
-				newsOrder:'',
-				ids:'',
-				page: 1,
-				limit: this.$config.LIMIT,
-				type: '',
-				numConfig:0
-			};
-		},
-		created() {
-		},
-		mounted() {
-		},
-		methods: {
-			// 产品列表
-			productslist: function() {
-				let that = this;
-				let data = {};
-				if (that.selectType) {
-					data = {
-						page: that.page,
-						limit: that.limit,
-						type: that.type,
-						ids: that.ids,
-						selectType: that.selectType
-					}
-				} else {
-					data = {
-						page: that.page,
-						limit: that.numConfig<=that.limit?that.numConfig:that.limit,
-						type: that.type,
-						newsOrder: that.newsOrder,
-						salesOrder: that.salesOrder,
-						selectId: that.selectId,
-						selectType: that.selectType
-					}
-				}
-				getHomeProducts(data).then(res => {
-					that.bargList = res.data.list;
-				}).catch(err => {
-					that.$util.Tips({ title: err });
-				});
-			},
-			bargDetail(item){
-				goPage(item).then(res=>{
-					if (!this.isLogin) {
-						toLogin();
-					} else {
-						uni.navigateTo({
-							url: `/pages/activity/goods_bargain_details/index?id=${item.id}&bargain=${this.uid}`
-						});
-					}
-				}) 
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.default{
-		width: 690rpx;
-		height: 300rpx;
-		border-radius: 14rpx;
-		margin: 26rpx auto 0 auto;
-		background-color: #ccc;
-		text-align: center;
-		line-height: 300rpx;
-		.iconfont{
-			font-size: 50rpx;
-		}
-	}
-	.combination{
-		width: 100%;
-		// height: 288rpx;
-		background-color: $uni-bg-color;
-		border-radius: 14rpx;
-		.conter {
-			width: 690rpx;
-			height: 320rpx;
-			background-color: #FFFFFF;
-			border-radius: 12px;
-			margin: 26rpx auto 0 auto;
-		
-			.itemCon {
-				display: inline-block;
-				width: 174rpx;
-				margin-right: 24rpx;
-		
-				.item {
-					width: 100%;
-		
-					.pictrue {
-						width: 100%;
-						height: 174rpx;
-						border-radius: 6rpx;
-		
-						image {
-							width: 100%;
-							height: 100%;
-							border-radius: 6rpx;
-						}
-					}
-		
-					.name {
-						font-size: 24rpx;
-						color: #333333;
-						margin-top: 10rpx;
-					}
-		
-					.money {
-						
-						.y_money {
-							font-size: 20rpx;
-							color: #999999;
-							text-decoration: line-through;
-						}
-		
-						.x_money {
-							color: #FD502F;
-							font-size: 24rpx;
-							font-weight: bold;
-							margin-top: 3rpx;
-		
-							.num {
-								font-size: 28rpx;
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-</style>

+ 0 - 258
pages/index/visualization/components/combination.vue

@@ -1,258 +0,0 @@
-<template>
-	<view>
-		<view class="default" v-if="isIframe && !combinationList.length">
-			<text>{{$t(`拼团模块,暂无数据`)}}</text>
-		</view>
-		<view class="combination index-wrapper" v-if="combinationList.length&&isShow&&!isIframe">
-			<view class='title acea-row row-between-wrapper'>
-				<view class='text'>
-					<view class='name line1'>{{$t(`拼团活动`)}}</view>
-					<view class='line1'>{{$t(`享超值开团价`)}}</view>
-				</view>
-				<navigator class='more' url="/pages/activity/goods_combination/index" hover-class="none">{{$t(`更多`)}}<text class='iconfont icon-jiantou'></text></navigator>
-			</view>
-			<view class="conter">
-				<scroll-view scroll-x="true" style="white-space: nowrap; vertical-align: middle;" show-scrollbar="false">
-					<view class="itemCon" v-for="(item, index) in combinationList" :key="index" @click="goDetail(item)">
-						<view class="item">
-							<view class="pictrue">
-								<image :src="item.image"></image>
-							</view>
-							<view class="name line1">{{item.title}}</view>
-							<view class="money">
-								<view class="price acea-row row-middle">
-									<view class="label">{{$t(`拼团价`)}}</view>
-									<view class="x_money">{{$t(`¥`)}}<text class="num">{{item.price}}</text></view>
-								</view>
-								<view class="bnt">{{$t(`参与拼团`)}}</view>
-							</view>
-						</view>
-					</view>
-				</scroll-view>
-			</view>
-		</view>
-		<view class="combination index-wrapper" v-if="combinationList.length&&isIframe">
-			<view class='title acea-row row-between-wrapper'>
-				<view class='text'>
-					<view class='name line1'>{{$t(`拼团活动`)}}</view>
-					<view class='line1'>{{$t(`享超值开团价`)}}</view>
-				</view>
-				<navigator class='more'>{{$t(`更多`)}}<text class='iconfont icon-jiantou'></text></navigator>
-			</view>
-		<view class="conter">
-			<scroll-view scroll-x="true" style="white-space: nowrap; vertical-align: middle;" show-scrollbar="false">
-				<view class="itemCon" v-for="(item, index) in combinationList" :key="index" @click="goDetail(item)">
-					<view class="item">
-						<view class="pictrue">
-							<image :src="item.image"></image>
-						</view>
-						<view class="name line1">{{item.title}}</view>
-						<view class="money">
-							<view class="price acea-row row-middle">
-								<view class="label">{{$t(`拼团价`)}}</view>
-								<view class="x_money">{{$t(`¥`)}}<text class="num">{{item.price}}</text></view>
-							</view>
-							<view class="bnt">{{$t(`参与拼团`)}}</view>
-						</view>
-					</view>
-				</view>
-			</scroll-view>
-		</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp();
-	import {
-		goPage
-	} from '@/libs/order.js';
-	import { getHomeProducts } from '@/api/store.js';
-	export default {
-		name: 'combination',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			}
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if(nVal){
-						this.isShow = nVal.isShow.val;
-						this.selectType = nVal.tabConfig.tabVal;
-						this.$set(this, 'selectId', nVal.selectConfig.activeValue || '');
-						this.$set(this, 'type', nVal.titleInfo.type);
-						this.salesOrder = nVal.goodsSort.type == 1 ? 'desc' : '';
-						this.newsOrder = nVal.goodsSort.type == 2 ? 'news' : '';
-						this.ids = nVal.ids?nVal.ids.join(','):'';
-						this.numConfig = nVal.numConfig.val;
-						this.productslist();
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				combinationList: [],
-				name:this.$options.name,//component组件固定写法获取当前name;
-				isIframe:app.globalData.isIframe,//判断是前台还是后台;
-				isShow:true,//判断此模块是否显示;
-				selectType:0,
-				selectId: '',
-				salesOrder:'',
-				newsOrder:'',
-				ids:'',
-				page: 1,
-				limit: this.$config.LIMIT,
-				type: '',
-				numConfig:0
-			};
-		},
-		created() {},
-		mounted() {},
-		methods: {
-			// 产品列表
-			productslist: function() {
-				let that = this;
-				let data = {};
-				if (that.selectType) {
-					data = {
-						page: that.page,
-						limit: that.limit,
-						type: that.type,
-						ids: that.ids,
-						selectType: that.selectType
-					}
-				} else {
-					data = {
-						page: that.page,
-						limit: that.numConfig<=that.limit?that.numConfig:that.limit,
-						type: that.type,
-						newsOrder: that.newsOrder,
-						salesOrder: that.salesOrder,
-						selectId: that.selectId,
-						selectType: that.selectType
-					}
-				}
-				getHomeProducts(data).then(res => {
-					that.combinationList = res.data.list;
-				}).catch(err => {
-					that.$util.Tips({ title: err });
-				});
-			},
-			goDetail(item){
-				goPage(item).then(res=>{
-					uni.navigateTo({
-						url: `/pages/activity/goods_combination_details/index?id=${item.id}`
-					})
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.default{
-		width: 690rpx;
-		height: 300rpx;
-		border-radius: 14rpx;
-		margin: 26rpx auto 0 auto;
-		background-color: #ccc;
-		text-align: center;
-		line-height: 300rpx;
-		.iconfont{
-			font-size: 50rpx;
-		}
-	}
-	.combination{
-		width: 100%;
-		background-color: $uni-bg-color;
-		border-radius: 14rpx;
-		.conter {
-			width: 690rpx;
-			height: 400rpx;
-			background-color: #FFFFFF;
-			border-radius: 12px;
-			margin: 26rpx auto 0 auto;
-		
-			.itemCon {
-				display: inline-block;
-				width: 220rpx;
-				margin-right: 24rpx;
-		
-				.item {
-					width: 100%;
-		
-					.pictrue {
-						width: 100%;
-						height: 220rpx;
-						border-radius: 6rpx;
-		
-						image {
-							width: 100%;
-							height: 100%;
-							border-radius: 6rpx;
-						}
-					}
-		
-					.name {
-						font-size: 24rpx;
-						color: #333333;
-						margin-top: 10rpx;
-					}
-		
-					.money {
-						
-						.bnt{
-							    width: 220rpx;
-							    height: 48rpx;
-							    border-radius: 0 0 14rpx 14rpx;
-							    text-align: center;
-							    line-height: 48rpx;
-							    color: #fff;
-									background: rgb(233, 51, 35);
-									margin-top: 14rpx;
-									font-size: 26rpx;
-							}
-						
-						.price {
-							 margin-top: 10rpx;
-						}
-						
-						.label{
-							    height: 40rpx;
-							    line-height: 40rpx;
-							    padding: 0 6rpx;
-							    margin-right: 6rpx;
-							    font-size: 18rpx;
-							    font-weight: 400;
-									background: rgba(255, 68, 68, 0.1);
-									color: rgb(233, 51, 35);
-									margin-right: 10rpx;
-						}
-						
-						.y_money {
-							font-size: 20rpx;
-							color: #999999;
-							text-decoration: line-through;
-						}
-		
-						.x_money {
-							color: #FD502F;
-							font-size: 24rpx;
-							font-weight: bold;
-							margin-top: 3rpx;
-		
-							.num {
-								font-size: 28rpx;
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-</style>

+ 0 - 344
pages/index/visualization/components/coupon.vue

@@ -1,344 +0,0 @@
-<template>
-	<view :style="colorStyle">
-		<view class="default" v-if="isIframe && !couponList.length">
-			<text>{{$t(`优惠券,暂无数据`)}}</text>
-		</view>
-		<view class="index-wrapper coupon" v-if="couponList.length&&isShow&&!isIframe">
-			<view class='title acea-row row-between-wrapper skeleton-rect'>
-				<view class='text'>
-					<view class='name line1'>{{$t(`优惠券`)}}</view>
-					<view class='line1 txt-btn'>{{$t(`领取今日好券`)}}</view>
-				</view>
-				<view class='more' @click="gopage('/pages/users/user_get_coupon/index')">{{$t(`更多`)}}<text
-						class='iconfont icon-jiantou'></text>
-				</view>
-			</view>
-			<!-- <view class="title acea-row row-between-wrapper">
-				<view class="acea-row row-middle">
-					<view class="name">优惠券</view>
-				</view>
-				<navigator url="/pages/users/user_get_coupon/index" hover-class="none"
-					class="more acea-row row-center-wrapper">更多<text class="iconfont icon-xiangyou"></text></navigator>
-			</view> -->
-			<view class="conter skeleton-rect">
-				<scroll-view scroll-x="true" style="white-space: nowrap; vertical-align: middle;"
-					show-scrollbar="false">
-
-					<view class="itemCon" v-for="(item, index) in couponList" :key="index">
-						<view class="item acea-row row-between-wrapper" :class="item.is_use?'on':'no'">
-							<view class="iconfont icon-youhuiquantoumingbeijing"></view>
-							<view class="cir"></view>
-							<view class="cir2"></view>
-							<view class="text">
-								<view class="money line1">{{$t(`¥`)}}<text class="num">{{item.coupon_price}}</text></view>
-								<view class="man line1">{{$t(`满`)}}{{item.use_min_price}}{{$t(`可用`)}}</view>
-							</view>
-							<view class="bnt" v-if="item.is_use===true"><text>{{$t(`已领取`)}}</text></view>
-							<view class="bnt" v-else-if="item.is_use===false" @click="receiveCoupon(item)">
-								<text>{{$t(`领取`)}}</text>
-							</view>
-							<view class="bnt" v-else-if="item.is_use===2"><text>{{$t(`已过期`)}}</text></view>
-						</view>
-					</view>
-				</scroll-view>
-			</view>
-		</view>
-		<view class="index-wrapper coupon" v-if="couponList.length && isIframe">
-			<view class='title acea-row row-between-wrapper'>
-				<view class='text'>
-					<view class='name line1'>{{$t(`优惠券`)}}</view>
-					<view class='line1 txt-btn'>{{$t(`领取今日好券`)}}</view>
-				</view>
-				<view class='more' @click="gopage('/pages/users/user_get_coupon/index')">{{$t(`更多`)}}<text
-						class='iconfont icon-jiantou'></text>
-				</view>
-			</view>
-			<view class="conter">
-				<scroll-view scroll-x="true" style="white-space: nowrap; vertical-align: middle;"
-					show-scrollbar="false">
-
-					<view class="itemCon" v-for="(item, index) in couponList" :key="index">
-						<view class="item acea-row row-between-wrapper" :class="item.is_use?'on':'no'">
-							<view class="iconfont icon-youhuiquantoumingbeijing"></view>
-							<view class="cir"></view>
-							<view class="cir2"></view>
-							<view class="text">
-								<view class="money line1">{{$t(`¥`)}}<text class="num">{{item.coupon_price}}</text></view>
-								<view class="man line1">{{$t(`满`)}}{{item.use_min_price}}{{$t(`可用`)}}</view>
-							</view>
-							<view class="bnt" v-if="item.is_use===true"><text>{{$t(`已领取`)}}</text></view>
-							<view class="bnt" v-else-if="item.is_use===false" @click="receiveCoupon(item)">
-								<text>{{$t(`领取`)}}</text>
-							</view>
-							<view class="bnt" v-else-if="item.is_use===2"><text>{{$t(`已过期`)}}</text></view>
-						</view>
-					</view>
-				</scroll-view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp();
-	import {
-		getCouponsIndex,
-		setCouponReceive
-	} from '@/api/api.js';
-	import {
-		toLogin
-	} from '@/libs/login.js';
-	import {
-		mapGetters
-	} from 'vuex';
-	import colors from "@/mixins/color";
-	export default {
-		name: 'coupon',
-		mixins: [colors],
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			}
-		},
-		computed: {
-			...mapGetters(['isLogin'])
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.numberConfig = nVal.numConfig.val;
-						this.isShow = nVal.isShow.val;
-						this.getCoupon();
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				couponList: [],
-				numberConfig: 0,
-				name: this.$options.name, //component组件固定写法获取当前name;
-				isIframe: app.globalData.isIframe, //判断是前台还是后台;
-				isShow: true //判断此模块是否显示;
-			};
-		},
-		created() {},
-		mounted() {},
-		methods: {
-			getCoupon: function() {
-				let that = this;
-				let lists = [];
-				getCouponsIndex({
-					type: -1,
-					num: this.numberConfig
-				}).then(res => {
-					res.data.forEach(function(value, key, iterable) {
-						if (!value.used) {
-							lists.push(value);
-						}
-					});
-					that.$set(that, 'couponList', lists);
-				}).catch(err => {
-					return that.$util.Tips({
-						title: err
-					});
-				});
-			},
-			receiveCoupon: function(item) {
-				let that = this;
-				if (!that.isLogin) {
-					toLogin();
-				} else {
-					setCouponReceive(item.id)
-						.then(function() {
-							item.is_use = true;
-							that.$set(that, 'couponList', that.couponList);
-							that.$util.Tips({
-								title: that.$t(`领取成功`)
-							});
-						})
-						.catch(function(err) {
-							that.$util.Tips({
-								title: err
-							});
-						});
-				}
-			},
-			gopage(url) {
-				uni.navigateTo({
-					url: url
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.default {
-		width: 690rpx;
-		height: 300rpx;
-		border-radius: 14rpx;
-		margin: 26rpx auto 0 auto;
-		background-color: #ccc;
-		text-align: center;
-		line-height: 300rpx;
-
-		.iconfont {
-			font-size: 50rpx;
-		}
-	}
-
-	.title .text {
-		display: flex;
-		align-items: flex-end;
-
-		.txt-btn {
-			margin-bottom: 6rpx;
-			margin-left: 6px;
-		}
-	}
-
-	.coupon {
-		margin: $uni-index-margin-row $uni-index-margin-col $uni-index-margin-row  $uni-index-margin-col;
-		padding: 0rpx 0 20rpx 0;
-		background-color: #fff;
-		border-radius: $uni-border-radius-index;
-
-
-
-		.conter {
-			margin-top: 25rpx;
-			padding: 0 20rpx;
-
-			.itemCon {
-				background-size: 100% 100%;
-				width: 226rpx;
-				height: 108rpx;
-				display: inline-block;
-				margin-right: 24rpx;
-
-				.on {
-					// opacity: 0.6;
-
-					.item {
-						background-color: rgba(233, 51, 35, 0.1) !important;
-
-						.text {
-							// color: #CCCCCC;
-						}
-					}
-
-					.icon-youhuiquantoumingbeijing {
-						color: #f3f3f3 !important;
-					}
-
-
-				}
-
-				.no {
-					background: linear-gradient(135deg, var(--view-main-start) 0%, var(--view-main-over) 100%);
-
-					.icon-youhuiquantoumingbeijing {
-						color: rgba(255,255, 255, 0.8);
-					}
-
-					.man {
-						background-color: var(--view-theme);
-					}
-					.bnt {
-						color: var(--view-theme) !important;
-					}
-				}
-
-				.item {
-					width: 100%;
-					height: 100%;
-					position: relative;
-					border-radius: 10rpx;
-					background-color: #b9b9b9;
-
-					.cir {
-						position: absolute;
-						left: -6rpx;
-						top: -6rpx;
-						width: 16rpx;
-						height: 16rpx;
-						border-radius: 50%;
-						background: #fff;
-						z-index: 100;
-					}
-
-					.cir2 {
-						position: absolute;
-						left: -6rpx;
-						bottom: -6rpx;
-						width: 16rpx;
-						height: 16rpx;
-						border-radius: 50%;
-						background: #fff;
-						z-index: 100;
-					}
-
-					.beijing2 {
-						// position: absolute;
-						// right: 0;
-						// width: 60rpx;
-						// height: 100%;
-						// border-top-left-radius: 50rpx;
-						// border-bottom-left-radius: 50rpx;
-						// // background: var(--view-op-ten);
-						// background-color: rgba(233, 51, 35, 0.1);
-						// z-index: 99;
-					}
-
-					.icon-youhuiquantoumingbeijing {
-						position: absolute;
-						right: 0;
-						width: 88rpx;
-						height: 100%;
-						font-size: 124rpx;
-						line-height: 124rpx;
-						height: 124rpx;
-						// background: var(--view-op-ten);
-						z-index: 99;
-					}
-
-					.text {
-						padding-left: 20rpx;
-						color: #fff;
-						font-size: 22rpx;
-						width: 168rpx;
-						padding-bottom: 6rpx;
-						z-index: 99;
-
-						.money {
-							font-size: 30rpx;
-							font-weight: bold;
-
-							.num {
-								font-size: 44rpx;
-							}
-						}
-
-						.man {
-							width: max-content;
-							border-radius: 20rpx;
-							padding: 0 10rpx;
-						}
-					}
-
-					.bnt {
-						writing-mode: vertical-lr;
-						font-size: 22rpx;
-						margin: 0 12rpx;
-						z-index: 99;
-						color: #818181;
-					}
-				}
-			}
-		}
-	}
-</style>

+ 0 - 114
pages/index/visualization/components/customerService.vue

@@ -1,114 +0,0 @@
-<template>
-	<view style="touch-action: none;">
-		<!-- #ifdef H5 || APP-PLUS -->
-		<view class="customerService" :style="'top:'+topConfig" @touchmove.stop.prevent="setTouchMove" v-if="isShow && logoConfig && !isIframe">
-			<navigator class="pictrue" url="/pages/extension/customer_list/chat" hover-class="none">
-				<image :src="logoConfig"></image>
-			</navigator>
-		</view>
-		<view class="customerService borderService" :style="'top:'+topConfig" v-if="logoConfig && isIframe">
-			<view class="pictrue">
-				<image :src="logoConfig"></image>
-			</view>
-		</view>
-		<view class="customerService borderService" :style="'top:'+topConfig" v-if="!logoConfig && isIframe">
-			<view class="pictrue">{{$t(`客服`)}}</view>
-		</view>
-		<!-- #endif -->
-		<!-- #ifdef MP -->
-		<view class="customerService" :style="'top:'+topConfig" @touchmove.stop.prevent="setTouchMove" v-if="routineContact === '0' && logoConfig">
-			<navigator class="pictrue" url="/pages/extension/customer_list/chat" hover-class="none">
-				<image :src="logoConfig"></image>
-			</navigator>
-		</view>
-		<button class="customerService-sty" :style="'top:'+topConfig" @touchmove.stop.prevent="setTouchMove" open-type='contact' v-if="routineContact === '1' && logoConfig">
-			<image class="pictrue" :src="logoConfig"></image>
-		</button>
-		<!-- #endif -->
-	</view>
-</template>
-
-<script>
-	let app = getApp();
-	export default {
-		name: 'customerService',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			},
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if(nVal){
-						this.logoConfig = nVal.imgUrl.url;
-						this.isShow = nVal.isShow.val;
-						this.routineContact = nVal.routine_contact_type;
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				logoConfig: '',
-				topConfig: '200px',
-				name: this.$options.name,
-				isIframe: false,
-				isShow: true,
-				routineContact:'0'
-				}
-		},
-		created() {
-			this.isIframe = app.globalData.isIframe;
-		},
-		methods: {
-			setTouchMove(e) {
-				var that = this;
-				if (e.touches[0].clientY < 545 && e.touches[0].clientY > 66) {
-					that.topConfig = e.touches[0].clientY+'px'
-				}
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.borderShow{
-		position: fixed;
-	}
-	.borderShow .borderService::after{
-		content: ' ';
-		position: absolute;
-		left: 0;
-		top: 0;
-		width: 100%;
-		height: 100%;
-		border:1px dashed #007AFF;
-		box-sizing: border-box;
-	}
-	.customerService,.customerService-sty {
-		position: fixed !important;
-		right: 20rpx;
-		z-index: 40;
-		.pictrue {
-			width: 86rpx;
-			height: 86rpx;
-			text-align: center;
-			line-height: 86rpx;
-			color: #fff;
-			border-radius: 50%;
-			background-color: #ccc;
-
-			image {
-				width: 100%;
-				height: 100%;
-				border-radius: 50%;
-			}
-		}
-	}
-	.customerService-sty{
-		background-color: rgba(0,0,0,0) !important;
-	}
-</style>

+ 0 - 285
pages/index/visualization/components/goodList.vue

@@ -1,285 +0,0 @@
-<template>
-	<view>
-		<view class='goodList' v-if="isShow && bastList.length && !isIframe">
-			<block v-for="(item,index) in bastList" :key="index">
-				<view @click="goDetail(item)" class='item acea-row row-between-wrapper' hover-class="none">
-					<view class='pictrue'>
-						<image :src='item.image'></image>
-						<span class="pictrue_log pictrue_log_class"
-							v-if="item.activity && item.activity.type === '1'">{{$t(`秒杀`)}}</span>
-						<span class="pictrue_log pictrue_log_class"
-							v-if="item.activity && item.activity.type === '2'">{{$t(`砍价`)}}</span>
-						<span class="pictrue_log pictrue_log_class"
-							v-if="item.activity && item.activity.type === '3'">{{$t(`拼团`)}}</span>
-					</view>
-					<view class='underline'>
-						<view class='text'>
-							<view class='line1'>{{item.store_name}}</view>
-							<view class='money font-color'>{{$t(`¥`)}}<text class='num'>{{item.price}}</text></view>
-							<view class="vip-money acea-row row-middle"
-								v-if="item.base && item.vip_price && item.vip_price > 0">{{$t(`¥`)}}{{item.vip_price || 0}}
-								<image src='/static/images/jvip.png' class="jvip"></image><text
-									class='num'>{{$t(`已售`)}}{{item.sales}}{{item.unit_name}}</text>
-							</view>
-							<view class='vip-money acea-row row-middle'
-								v-if="item.is_vip && item.vip_price && item.vip_price > 0">{{$t(`¥`)}}{{item.vip_price || 0}}
-								<image src='/static/images/vip.png'></image><text
-									class='num'>{{$t(`已售`)}}{{item.sales}}{{item.unit_name}}</text>
-							</view>
-							<view class='vip-money acea-row row-middle' v-else><text
-									class='num'>{{$t(`已售`)}}{{item.sales}}{{item.unit_name}}</text></view>
-						</view>
-					</view>
-				</view>
-			</block>
-		</view>
-		<view class='goodList' v-if="bastList.length && isIframe">
-			<block v-for="(item,index) in bastList" :key="index">
-				<view @click="goDetail(item)" class='item acea-row row-between-wrapper' hover-class="none">
-					<view class='pictrue'>
-						<image :src='item.image'></image>
-						<span class="pictrue_log pictrue_log_class"
-							v-if="item.activity && item.activity.type === '1'">{{$t(`秒杀`)}}</span>
-						<span class="pictrue_log pictrue_log_class"
-							v-if="item.activity && item.activity.type === '2'">{{$t(`砍价`)}}</span>
-						<span class="pictrue_log pictrue_log_class"
-							v-if="item.activity && item.activity.type === '3'">{{$t(`拼团`)}}</span>
-					</view>
-					<view class='underline'>
-						<view class='text'>
-							<view class='line1'>{{item.store_name}}</view>
-							<view class='money font-color'>{{$t(`¥`)}}<text class='num'>{{item.price}}</text></view>
-							<view class="vip-money acea-row row-middle"
-								v-if="item.base && item.vip_price && item.vip_price > 0">{{$t(`¥`)}}{{item.vip_price || 0}}
-								<image src='/static/images/jvip.png' class="jvip"></image><text
-									class='num'>{{$t(`已售`)}}{{item.sales}}{{item.unit_name}}</text>
-							</view>
-							<view class='vip-money acea-row row-middle'
-								v-if="item.is_vip && item.vip_price && item.vip_price > 0">{{$t(`¥`)}}{{item.vip_price || 0}}
-								<image src='/static/images/vip.png'></image><text
-									class='num'>{{$t(`已售`)}}{{item.sales}}{{item.unit_name}}</text>
-							</view>
-							<view class='vip-money acea-row row-middle' v-else><text
-									class='num'>{{$t(`已售`)}}{{item.sales}}{{item.unit_name}}</text></view>
-						</view>
-					</view>
-				</view>
-			</block>
-		</view>
-		<view class="empty-img" v-if="!bastList.length && isIframe">{{$t(`商品列表,暂无数据`)}}</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp()
-	import {
-		mapGetters
-	} from "vuex";
-	import {
-		goShopDetail,
-		goPage
-	} from '@/libs/order.js';
-	import {
-		getHomeProducts
-	} from '@/api/store.js';
-	export default {
-		name: 'goodList',
-		computed: mapGetters(['uid']),
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			}
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.isShow = nVal.isShow.val;
-						this.selectType = nVal.tabConfig.tabVal;
-						this.$set(this, 'selectId', nVal.selectConfig.activeValue || '');
-						this.$set(this, 'type', nVal.selectSortConfig.activeValue);
-						this.salesOrder = nVal.goodsSort.type == 1 ? 'desc' : '';
-						this.newsOrder = nVal.goodsSort.type == 2 ? 'news' : '';
-						this.ids = nVal.ids ? nVal.ids.join(',') : '';
-						this.numConfig = nVal.numConfig.val;
-						this.productslist();
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				bastList: [],
-				name: this.$options.name,
-				isIframe: false,
-				isShow: true,
-				selectType: 0,
-				selectId: '',
-				salesOrder: '',
-				newsOrder: '',
-				ids: '',
-				page: 1,
-				limit: this.$config.LIMIT,
-				type: '',
-				numConfig: 0
-			};
-		},
-		created() {
-			this.isIframe = app.globalData.isIframe;
-		},
-		mounted() {},
-		methods: {
-			// 产品列表
-			productslist: function() {
-				let that = this;
-				let data = {};
-				if (that.selectType) {
-					data = {
-						page: that.page,
-						limit: that.limit,
-						type: that.type,
-						ids: that.ids,
-						selectType: that.selectType
-					}
-				} else {
-					data = {
-						page: that.page,
-						limit: that.numConfig <= that.limit ? that.numConfig : that.limit,
-						type: that.type,
-						newsOrder: that.newsOrder,
-						salesOrder: that.salesOrder,
-						selectId: that.selectId,
-						selectType: that.selectType
-					}
-				}
-				getHomeProducts(data).then(res => {
-					that.bastList = res.data.list;
-				}).catch(err => {
-					that.$util.Tips({
-						title: err
-					});
-				});
-			},
-			goDetail(item) {
-				goPage().then(res => {
-					goShopDetail(item, this.uid).then(res => {
-						uni.navigateTo({
-							url: `/pages/goods_details/index?id=${item.id}`
-						})
-					})
-				})
-
-			}
-		}
-	}
-</script>
-
-<style scoped lang='scss'>
-	.empty-img {
-		width: 690rpx;
-		height: 300rpx;
-		border-radius: 14rpx;
-		margin: 26rpx auto 0 auto;
-		background-color: #ccc;
-		text-align: center;
-		line-height: 300rpx;
-
-		.iconfont {
-			font-size: 50rpx;
-		}
-	}
-
-	.goodList .item {
-		position: relative;
-		padding-left: 30rpx;
-		box-shadow: 2px 1px 6px 1px rgba(0, 0, 0, 0.03);
-	}
-
-	.goodList .item .pictrue {
-		width: 180rpx;
-		height: 180rpx;
-		position: relative;
-	}
-
-	.goodList .item .pictrue image {
-		width: 100%;
-		height: 100%;
-		border-radius: 20rpx;
-	}
-
-	.goodList .item .pictrue .numPic {
-		position: absolute;
-		left: 7rpx;
-		top: 7rpx;
-		width: 40rpx;
-		height: 40rpx;
-		border-radius: 50%;
-	}
-
-	.goodList .item .underline {
-		padding: 30rpx 30rpx 30rpx 0;
-		border-bottom: 1px solid #f5f5f5;
-	}
-
-	.goodList .item:nth-last-child(1) .underline {
-		border-bottom: 0;
-	}
-
-	.goodList .item .text {
-		font-size: 30rpx;
-		color: #222;
-		width: 489rpx;
-	}
-
-	.goodList .item .text .money {
-		font-size: 26rpx;
-		font-weight: bold;
-		margin-top: 50rpx;
-	}
-
-	.goodList .item .text .money .num {
-		font-size: 34rpx;
-	}
-
-	.goodList .item .text .vip-money {
-		font-size: 24rpx;
-		color: #282828;
-		font-weight: bold;
-		margin-top: 15rpx;
-	}
-
-	.goodList .item .text .vip-money .jvip {
-		width: 46rpx;
-		height: 22rpx;
-	}
-
-	.goodList .item .text .vip-money image {
-		width: 66rpx;
-		height: 25rpx;
-		margin-right: 8rpx;
-		margin-left: 8rpx;
-	}
-
-	.goodList .item .text .vip-money .num {
-		font-size: 22rpx;
-		color: #aaa;
-		font-weight: normal;
-		margin-top: -2rpx;
-
-		~.num {
-			margin-left: 22rpx;
-		}
-	}
-
-	.goodList .item .iconfont {
-		position: absolute;
-		right: 30rpx;
-		width: 50rpx;
-		height: 50rpx;
-		border-radius: 50%;
-		font-size: 30rpx;
-		bottom: 38rpx;
-	}
-</style>

+ 0 - 251
pages/index/visualization/components/headerSerch.vue

@@ -1,251 +0,0 @@
-<template>
-	<!-- #ifdef H5 -->
-	<view v-if="isShow" class="header">
-		<view class="serch-wrapper row-middle">
-			<view class="logo">
-				<image class="skeleton-rect" :src="logoConfig" mode="heightFix"></image>
-				<view class="swiger">{{titleInfo.length ? titleInfo[0].val : ''}}</view>
-
-			</view>
-			<view class="input acea-row row-middle fillet skeleton-rect" hover-class="none" @click="goPage"><text
-					class="iconfont icon-sousuo"></text>
-				{{$t('搜索商品')}}</view>
-		</view>
-	</view>
-	<view v-else-if="isIframe" class="header">
-		<view class="serch-wrapper acea-row row-middle">
-			<view class="logo">
-				<image :src="logoConfig" mode="heightFix"></image>
-				<view class="swiger">{{titleInfo.length ? titleInfo[0].val : ''}}</view>
-			</view>
-			<view class="input acea-row row-middle fillet" hover-class="none" @click="goPage"><text
-					class="iconfont icon-sousuo"></text>
-				{{$t('搜索商品')}}</view>
-		</view>
-	</view>
-	<!-- #endif -->
-	<!-- #ifdef MP  || APP-PLUS -->
-	<view v-if="isShow">
-		<view class="mp-header skeleton-rect" :style="{height:headH}">
-			<view class="sys-head" :style="{height:sysHeight}"></view>
-			<view class="serch-box" style="height: 48px;">
-				<view class="serch-wrapper row-middle">
-					<view class="logo">
-						<image class="skeleton-rect" :src="logoConfig" mode="heightFix"></image>
-						<view class="swiger">{{titleInfo.length ? titleInfo[0].val : ''}}</view>
-					</view>
-					<navigator url="/pages/goods/goods_search/index" class="input acea-row row-middle fillet"
-						hover-class="none"><text class="iconfont icon-sousuo"></text>
-						{{$t('搜索商品')}}</navigator>
-				</view>
-			</view>
-		</view>
-	</view>
-	<!-- #endif -->
-</template>
-
-<script>
-	let app = getApp();
-	let statusBarHeight = uni.getSystemInfoSync().statusBarHeight * 2 + 'rpx';
-	let headHeight = uni.getSystemInfoSync().statusBarHeight * 2 + 170 + 'rpx';
-	import {
-		goPage
-	} from '@/libs/order.js'
-	export default {
-		name: 'headerSerch',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			}
-		},
-		data() {
-			return {
-				logoConfig: '',
-				hotWords: [],
-				sysHeight: statusBarHeight,
-				headH: headHeight,
-				name: this.$options.name,
-				isShow: true,
-				isIframe: app.globalData.isIframe,
-				titleInfo: []
-			};
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.logoConfig = nVal ? nVal.imgUrl.url : '';
-						this.hotWords = nVal.hotList.list || []
-						this.isShow = nVal.isShow.val
-						this.titleInfo = nVal.titleInfo && nVal.titleInfo.list.length ? nVal.titleInfo.list : [];
-						uni.setStorageSync('hotList', this.hotWords || []);
-					}
-				}
-			}
-		},
-		mounted() {
-			let that = this;
-			// #ifdef MP
-			this.$nextTick(function() {
-				// 获取小程序头部高度
-				let info = uni.createSelectorQuery().in(this).select(".mp-header");
-				info.boundingClientRect(function(data) {
-					that.marTop = data.height
-				}).exec()
-			})
-			// #endif
-		},
-		methods: {
-			goPage() {
-				goPage().then(res => {
-					uni.navigateTo({
-						url: '/pages/goods/goods_search/index'
-					})
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	/* #ifdef H5 */
-	.header {
-		width: 100%;
-		height: 210rpx;
-		background: #fff;
-		background: linear-gradient(90deg, var(--view-main-start) 0%, var(--view-main-over) 100%);
-		border-bottom-left-radius: 60rpx;
-		border-bottom-right-radius: 60rpx;
-
-		.serch-wrapper {
-			padding: 20rpx 30rpx 0 30rpx;
-
-			.logo {
-				margin-right: 30rpx;
-				display: flex;
-				align-items: flex-end;
-
-				image {
-					width: 144rpx;
-					height: 50rpx;
-				}
-
-				.swiger {
-					color: #fff;
-					font-size: 24rpx;
-					margin-left: 20rpx;
-					margin-bottom: -2rpx;
-				}
-			}
-
-			.input {
-				display: flex;
-				height: 60rpx;
-				padding: 0 0 0 30rpx;
-				background: rgba(247, 247, 247, 1);
-				border: 1px solid rgba(241, 241, 241, 1);
-				color: #999;
-				font-size: 28rpx;
-				flex: 1;
-				z-index: 99;
-				margin: 14rpx 0;
-
-				.iconfont {
-					margin-right: 20rpx;
-					color: #555555;
-				}
-
-				// 没有logo,直接搜索框
-				&.on {
-					width: 100%;
-				}
-
-				// 设置圆角
-				&.fillet {
-					border-radius: 40rpx;
-				}
-
-				// 文本框文字居中
-				&.row-center {
-					padding: 0;
-				}
-			}
-		}
-	}
-
-	/* #endif */
-	/* #ifdef MP || APP-PLUS */
-	.mp-header {
-		position: fixed;
-		left: 0;
-		top: 0;
-		width: 100%;
-		background: linear-gradient(90deg, var(--view-main-start) 0%, var(--view-main-over) 100%);
-		z-index: 999;
-
-		// height: 250rpx;
-		.serch-box {
-			padding-bottom: 10rpx;
-		}
-
-		.serch-wrapper {
-			height: 100%;
-			padding: 15rpx 30rpx 20rpx 30rpx;
-
-			.logo {
-				margin-right: 30rpx;
-				display: flex;
-				align-items: flex-end;
-
-				image {
-					width: 144rpx;
-					height: 50rpx;
-				}
-
-				.swiger {
-					color: #fff;
-					font-size: 24rpx;
-					margin-left: 20rpx;
-					margin-bottom: -2rpx;
-				}
-			}
-
-			.input {
-				height: 60rpx;
-				padding: 0 0 0 30rpx;
-				background: rgba(247, 247, 247, 1);
-				border: 1px solid rgba(241, 241, 241, 1);
-				color: #999;
-				font-size: 28rpx;
-				// margin: 14rpx 0;
-				margin-top: 20rpx;
-				margin-bottom: 20rpx;
-				flex: 1;
-
-				.iconfont {
-					margin-right: 20rpx;
-					color: #555555;
-				}
-
-				// 没有logo,直接搜索框
-				&.on {
-					width: 70%;
-				}
-
-				// 设置圆角
-				&.fillet {
-					border-radius: 40rpx;
-				}
-
-				// 文本框文字居中
-				&.row-center {
-					padding: 0;
-				}
-			}
-		}
-	}
-
-	/* #endif */
-</style>

+ 0 - 190
pages/index/visualization/components/mBanner.vue

@@ -1,190 +0,0 @@
-<template>
-	<view class="swiperBg">
-		<view class='boutique' :class="{'off': sty ==='off'}" v-if="isShow && bastBanner.length && !isIframe">
-			<swiper autoplay="true" indicator-dots="true" :circular="circular" :interval="interval" :duration="duration"
-				indicator-color="rgba(255,255,255,0.6)" indicator-active-color="#fff" :style="'height:'+ (imageH) +'rpx;'">
-				<block v-for="(item,index) in bastBanner">
-					<swiper-item :key='index'>
-						<view style='width:100%;height:100%;' hover-class='none' @click="goDetail(item)">
-							<image :src="item.img" class="slide-image" :style="'height:'+ (imageH) +'rpx;'" />
-						</view>
-					</swiper-item>
-				</block>
-			</swiper>
-		</view>
-		<view class='boutique' :style="'height:'+ (imageH) +'rpx;'" v-if="bastBanner.length && isIframe">
-			<swiper autoplay="true" indicator-dots="true" :style="'height:'+ (imageH) +'rpx;'" :circular="circular" :interval="interval" :duration="duration"
-				indicator-color="rgba(255,255,255,0.6)" indicator-active-color="#fff">
-				<block v-for="(item,index) in bastBanner">
-					<swiper-item :key='index'>
-						<view style='width:100%;height:100%;' hover-class='none' @click="goDetail(item)">
-							<image :src="item.img" class="slide-image" :style="'height:'+ (imageH) +'rpx;'"/>
-						</view>
-					</swiper-item>
-				</block>
-			</swiper>
-		</view>
-		<block v-if="isIframe && !bastBanner.length">
-			<view class="empty-img">{{$t(`暂无图片,请上传图片`)}}</view>
-		</block>
-	</view>
-</template>
-
-<script>
-	let app = getApp()
-	import {
-		goPage
-	} from '@/libs/order.js'
-	export default {
-		name: 'swiperBg',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			},
-			sty: {
-				type: String,
-				default: 'on'
-			}
-		},
-		data() {
-			return {
-				indicatorDots: false,
-				circular: true,
-				autoplay: true,
-				interval: 3000,
-				duration: 500,
-				bastBanner: [], //图片轮播数据
-				name: this.$options.name,
-				isIframe: false,
-				isShow: true,
-				imageH: 375
-			};
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.bastBanner = nVal.imgList.list;
-						this.isShow = nVal.isShow.val;
-						this.imgUrls = nVal.imgList ? nVal.imgList.list : [];
-						this.isShow = nVal.isShow ? nVal.isShow.val : true
-						uni.getImageInfo({
-							src: this.imgUrls.length ? this.imgUrls[0].img : '',
-							success: (res) => {
-								if (res && res.height > 0) {
-									this.$set(this, 'imageH',
-										res.height / res
-										.width * 690)
-								} else {
-									this.$set(this, 'imageH', 375);
-								}
-							},
-							fail: (error) => {
-								this.$set(this, 'imageH', 375);
-							}
-						})
-					}
-				}
-			}
-		},
-		created() {
-			this.isIframe = app.globalData.isIframe
-		},
-		mounted() {},
-		methods: {
-			//替换安全域名
-			setDomain: function(url) {
-				url = url ? url.toString() : '';
-				//本地调试打开,生产请注销
-				if (url.indexOf("https://") > -1) return url;
-				else return url.replace('http://', 'https://');
-			},
-			goDetail(url) {
-				goPage().then(res => {
-					let urls = url.info[1].value
-					if (urls.indexOf("http") != -1) {
-						// #ifdef H5 || APP-PLUS
-						location.href = urls
-						// #endif
-					} else {
-						if (['/pages/goods_cate/goods_cate', '/pages/order_addcart/order_addcart',
-								'/pages/user/index'
-							].indexOf(urls) ==
-							-1) {
-							uni.navigateTo({
-								url: urls
-							})
-						} else {
-							uni.navigateTo({
-								url: urls
-							})
-						}
-					}
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.swiperBg {
-		// background-color: $uni-bg-color;
-		width: 100%;
-	}
-
-	.empty-img {
-		width: 690rpx;
-		// height: 300rpx;
-		// border-radius: 14rpx;
-		margin: 26rpx auto 0 auto;
-		background-color: #ccc;
-		text-align: center;
-		line-height: 300rpx;
-
-		.iconfont {
-			font-size: 50rpx;
-		}
-	}
-
-	.boutique {
-		margin: 0 $uni-index-margin-col;
-		// width: 711rpx;
-		// height: 300rpx;
-		// margin: 0rpx auto 0 auto;
-		// padding: 28rpx 0;
-	}
-
-	.boutique swiper {
-		width: 100%;
-		position: relative;
-	}
-
-	.boutique image {
-		width: 100%;
-		border-radius: 10rpx;
-	}
-	.off{
-		padding: 0rpx 20rpx;
-		background-color: #fff;
-	}
-	.off image {
-		// border-radius: 0 0 10rpx 10rpx;
-	}
-
-	.boutique .wx-swiper-dot {
-		width: 7rpx;
-		height: 7rpx;
-		border-radius: 50%;
-	}
-
-	.boutique .wx-swiper-dot-active {
-		width: 20rpx;
-		border-radius: 5rpx;
-	}
-
-	.boutique .wx-swiper-dots.wx-swiper-dots-horizontal {
-		margin-bottom: -8rpx;
-	}
-</style>

+ 0 - 153
pages/index/visualization/components/menus.vue

@@ -1,153 +0,0 @@
-<template>
-	<view class="menu-main">
-		<view class='nav acea-row acea-row' v-if="isShow && menus.length">
-			<block v-for="(item,index) in menus" :key="index">
-				<view class='item' @click="menusTap(item.info[1].value)">
-					<view class='pictrue'>
-						<image class="skeleton-radius" :src='item.img'></image>
-					</view>
-					<view class="menu-txt">{{item.info[0].value}}</view>
-				</view>
-			</block>
-		</view>
-		<view class='nav acea-row acea-row' v-if="!isShow && isIframe && menus.length">
-			<block v-for="(item,index) in menus" :key="index">
-				<view class='item' @click="menusTap(item.info[1].value)">
-					<view class='pictrue'>
-						<image :src='item.img'></image>
-					</view>
-					<view class="menu-txt">{{item.info[0].value}}</view>
-				</view>
-			</block>
-		</view>
-		<view class="nav acea-row acea-row" v-if="isIframe && !menus.length">
-			<view class='item'>
-				<view class='pictrue default'>
-					<text class="iconfont icon-icon25201"></text>
-				</view>
-				<view class="menu-txt">{{$t(`默认`)}}</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp()
-	import {
-		goPage
-	} from '@/libs/order.js'
-	export default {
-		name: 'menus',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			}
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.menus = nVal.imgList.list;
-						this.isShow = nVal.isShow.val
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				menus: [],
-				name: this.$options.name,
-				isIframe: false,
-				isShow: true
-			};
-		},
-		created() {
-			this.isIframe = app.globalData.isIframe;
-		},
-		mounted() {},
-		methods: {
-			menusTap(url) {
-				goPage().then(res => {
-					if (url.indexOf("http") != -1) {
-						// #ifdef H5
-						location.href = url
-						// #endif
-					} else {
-						// uni.navigateTo({
-						// 	url: url
-						// })
-						if (['/pages/goods_cate/goods_cate', '/pages/order_addcart/order_addcart',
-								'/pages/user/index'
-							].indexOf(url) == -1) {
-							uni.navigateTo({
-								url: url
-							})
-						} else {
-							uni.switchTab({
-								url: url
-							})
-						}
-					}
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.menu-main {
-		background-color: #fff;
-	}
-
-	.nav {
-		margin: 0 30rpx;
-		// margin:  $uni-index-margin-row $uni-index-margin-col;
-		border-radius: $uni-border-radius-index;
-
-		// box-shadow: $uni-index-box-shadow;
-		.item {
-			margin-top: 26rpx;
-			width: 20%;
-			text-align: center;
-			font-size: 24rpx;
-
-			.pictrue {
-				width: 90rpx;
-				height: 90rpx;
-				margin: 0 auto;
-
-				&.default {
-					background-color: #ccc;
-					border-radius: 50%;
-					text-align: center;
-					line-height: 90rpx;
-
-					.iconfont {
-						font-size: 40rpx;
-					}
-				}
-
-				image {
-					width: 100%;
-					height: 100%;
-					border-radius: 50%;
-				}
-			}
-
-			.menu-txt {
-				margin-top: 15rpx;
-			}
-
-			&.four {
-				width: 25%;
-
-				.pictrue {
-					width: 90rpx;
-					height: 90rpx;
-				}
-			}
-		}
-	}
-</style>

+ 0 - 321
pages/index/visualization/components/newGoods.vue

@@ -1,321 +0,0 @@
-<template>
-	<view class="">
-
-		<view class="index-wrapper" :style="colorStyle">
-			<view class='wrapper' v-if="isShow && firstList.length">
-				<view class='title acea-row row-between-wrapper'>
-					<view class='text'>
-						<view class='name line1'>
-							<text class="iconfont icon-shoufaxinpin"></text>
-							{{titleInfo[0].val}}
-							<!-- <text class='new font-color'>NEW~</text> -->
-						</view>
-						<view class='line1 txt-btn'>{{titleInfo[1].val}}</view>
-					</view>
-					<view class='more' @click="gopage(titleInfo[2].val)">
-						{{$t(`更多`)}}
-						<text class='iconfont icon-jiantou'></text>
-					</view>
-				</view>
-				<view class='newProducts'>
-					<scroll-view class="scroll-view_x" scroll-x style="width:auto;overflow:hidden;">
-						<block v-for="(item,index) in firstList" :key='index'>
-							<view class='item' @click="goDetail(item)">
-								<view class='img-box'>
-									<image :src='item.image'></image>
-									<text class="pictrue_log_medium pictrue_log_class"
-										v-if="item.activity && item.activity.type ==='1'">
-										{{$t(`秒杀`)}}
-									</text>
-									<text class="pictrue_log_medium pictrue_log_class"
-										v-if="item.activity && item.activity.type === '2'">
-										{{$t(`砍价`)}}
-									</text>
-									<text class="pictrue_log_medium pictrue_log_class"
-										v-if="item.activity && item.activity.type === '3'">
-										{{$t(`拼团`)}}
-									</text>
-								</view>
-								<view class='pro-info line1'>{{item.store_name}}</view>
-								<view class='money font-color'><text class="rmb">{{$t(`¥`)}}</text>{{item.price}}</view>
-							</view>
-						</block>
-					</scroll-view>
-				</view>
-			</view>
-			<view class='wrapper' v-if="!isShow && isIframe && firstList.length">
-				<view class='title acea-row row-between-wrapper'>
-					<view class='text'>
-						<view class='name line1'>
-							<text class="iconfont icon-shoufaxinpin"></text>
-							{{titleInfo[0].val}}
-						</view>
-						<view class='line1 txt-btn'>{{titleInfo[1].val}}</view>
-					</view>
-					<view class='more' @click="gopage(titleInfo[2].val)">
-						{{$t(`更多`)}}
-						<text class='iconfont icon-jiantou'></text>
-					</view>
-				</view>
-				<view class='newProducts'>
-					<scroll-view class="scroll-view_x" scroll-x style="width:auto;overflow:hidden;">
-						<block v-for="(item,index) in firstList" :key='index'>
-							<view class='item' @click="goDetail(item)">
-								<view class='img-box'>
-									<image :src='item.image'></image>
-									<text class="pictrue_log_medium pictrue_log_class"
-										v-if="item.activity && item.activity.type ==='1'">
-										{{$t(`秒杀`)}}
-									</text>
-									<text class="pictrue_log_medium pictrue_log_class"
-										v-if="item.activity && item.activity.type === '2'">
-										{{$t(`砍价`)}}
-									</text>
-									<text class="pictrue_log_medium pictrue_log_class"
-										v-if="item.activity && item.activity.type === '3'">
-										{{$t(`拼团`)}}
-									</text>
-								</view>
-								<view class='pro-info line1'>{{item.store_name}}</view>
-								<view class='money font-color'>
-									<text class="rmb">{{$t(`¥`)}}</text>{{item.price}}
-								</view>
-							</view>
-						</block>
-					</scroll-view>
-				</view>
-			</view>
-			<view class='wrapper' v-if="isIframe && !firstList.length">
-				<view class='title acea-row row-between-wrapper'>
-					<view class='text'>
-						<view class='name line1'>
-							<text class="iconfont icon-shoufaxinpin"></text>
-							{{titleInfo[0].val}}
-						</view>
-						<view class='line1 txt-btn'>{{titleInfo[1].val}}</view>
-					</view>
-					<view class='more' @click="gopage(titleInfo[2].val)">
-						{{$t(`更多`)}}
-						<text class='iconfont icon-jiantou'></text>
-					</view>
-				</view>
-				<view class='newProducts'>
-					<view class="empty-img">{{$t(`首发新品,暂无数据`)}}</view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp()
-	import {
-		goPage,
-		goShopDetail
-	} from '@/libs/order.js'
-	import {
-		mapState,
-		mapGetters
-	} from 'vuex';
-	import {
-		getHomeProducts
-	} from '@/api/store.js';
-	import colors from "@/mixins/color";
-	export default {
-		name: 'goodList',
-		mixins: [colors],
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			}
-		},
-		computed: {
-			...mapGetters(['uid']),
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.isShow = nVal.isShow.val;
-						this.selectType = nVal.tabConfig.tabVal;
-						this.$set(this, 'selectId', nVal.selectConfig.activeValue || '');
-						this.$set(this, 'type', nVal.selectSortConfig.activeValue);
-						this.salesOrder = nVal.goodsSort.type == 1 ? 'desc' : '';
-						this.newsOrder = nVal.goodsSort.type == 2 ? 'news' : '';
-						this.ids = nVal.ids ? nVal.ids.join(',') : '';
-						this.numConfig = nVal.numConfig.val;
-						this.titleInfo = nVal.titleInfo.list;
-						this.productslist();
-					}
-				}
-			}
-		},
-		created() {},
-		mounted() {},
-		data() {
-			return {
-				firstList: [],
-				firstInfo: this.$t(`多个优质商品最新上架`),
-				name: this.$options.name,
-				isShow: true,
-				isIframe: app.globalData.isIframe,
-				selectType: 0,
-				selectId: '',
-				salesOrder: '',
-				newsOrder: '',
-				ids: '',
-				page: 1,
-				limit: this.$config.LIMIT,
-				type: '',
-				numConfig: 0,
-				titleInfo: []
-			}
-		},
-		methods: {
-			// 产品列表
-			productslist: function() {
-				let that = this;
-				let data = {};
-				if (that.selectType) {
-					data = {
-						page: that.page,
-						limit: that.limit,
-						type: that.type,
-						ids: that.ids,
-						selectType: that.selectType
-					}
-				} else {
-					data = {
-						page: that.page,
-						limit: that.numConfig <= that.limit ? that.numConfig : that.limit,
-						type: that.type,
-						newsOrder: that.newsOrder,
-						salesOrder: that.salesOrder,
-						selectId: that.selectId,
-						selectType: that.selectType
-					}
-				}
-				getHomeProducts(data).then(res => {
-					that.firstList = res.data.list;
-				}).catch(err => {
-					that.$util.Tips({
-						title: err
-					});
-				});
-			},
-			gopage(url) {
-				goPage().then(res => {
-					uni.navigateTo({
-						url: url
-					})
-				})
-			},
-			goDetail(item) {
-				goPage().then(res => {
-					goShopDetail(item, this.uid).then(res => {
-						uni.navigateTo({
-							url: `/pages/goods_details/index?id=${item.id}`
-						})
-					})
-				})
-			},
-		}
-	}
-</script>
-
-<style lang="scss">
-	.index-wrapper {
-		background-color: $uni-bg-color;
-		margin: $uni-index-margin-row $uni-index-margin-col;
-		border-radius: $uni-border-radius-index;
-	}
-
-	.title {
-		.text {
-			display: flex;
-
-			.name {
-				font-size: $uni-index-title-font-size;
-				font-weight: bold;
-			}
-
-			.txt-btn {
-				display: flex;
-				align-items: flex-end;
-				margin-bottom: 8rpx;
-				margin-left: 12rpx;
-			}
-
-		}
-	}
-
-
-	.wrapper .newProducts {
-		white-space: nowrap;
-		padding: 0rpx 20rpx 0rpx 20rpx;
-		margin: 20rpx 0;
-	}
-
-	.wrapper .newProducts .item {
-		display: inline-block;
-		width: 200rpx;
-		margin-right: 20rpx;
-		border-radius: 20rpx;
-	}
-
-	.wrapper .newProducts .item:nth-last-child(1) {
-		margin-right: 0;
-	}
-
-	.wrapper .newProducts .item .img-box {
-		width: 100%;
-		height: 200rpx;
-		position: relative;
-	}
-
-	.wrapper .newProducts .item .img-box image {
-		width: 100%;
-		height: 100%;
-		border-radius: 12rpx 12rpx 0 0;
-	}
-
-	.wrapper .newProducts .item .pro-info {
-		font-size: 28rpx;
-		color: #333;
-		text-align: center;
-		padding: 19rpx 10rpx 0 10rpx;
-	}
-
-	.wrapper .newProducts .item .money {
-		padding: 0 10rpx 18rpx 10rpx;
-		text-align: center;
-		font-size: 30rpx;
-		font-weight: bold;
-
-		.rmb {
-			font-weight: bold;
-			color: var(--view-priceColor);
-			font-size: 10px;
-		}
-	}
-
-	.empty-img {
-		width: 640rpx;
-		height: 300rpx;
-		border-radius: 14rpx;
-		margin: 26rpx auto 0 auto;
-		background-color: #ccc;
-		text-align: center;
-		line-height: 300rpx;
-
-		.iconfont {
-			font-size: 50rpx;
-		}
-	}
-
-	.font-color {
-		color: var(--view-priceColor);
-	}
-</style>

+ 0 - 191
pages/index/visualization/components/news.vue

@@ -1,191 +0,0 @@
-<template>
-	<view class="new" :style="colorStyle">
-		<view class="news default" v-if="isIframe && !itemNew.length">{{$t(`暂无新闻,请上传新闻`)}}</view>
-		<view class='news acea-row row-between-wrapper skeleton-rect' v-if="isShow && itemNew.length">
-			<view class='pictrue'>
-				<image :src='img'></image>
-			</view>
-			<view class='swiperTxt'>
-				<swiper :indicator-dots="indicatorDots" :autoplay="autoplay" interval="2500" :duration="duration"
-					vertical="true" circular="true" disable-touch="true">
-					<block v-for="(item,index) in itemNew" :key='index'>
-						<swiper-item catchtouchmove='catchTouchMove'>
-							<view class='acea-row row-between-wrapper' hover-class='none'
-								@click="gopage(item.chiild[1].val)">
-								<view class='text acea-row row-between-wrapper'>
-									<view class='newsTitle line1'>{{item.chiild[0].val}}</view>
-								</view>
-								<view class='iconfont icon-xiangyou'></view>
-							</view>
-						</swiper-item>
-					</block>
-				</swiper>
-			</view>
-		</view>
-		<view class='news acea-row row-between-wrapper' v-if="!isShow && isIframe && itemNew.length">
-			<view class='pictrue'>
-				<image :src='img'></image>
-			</view>
-			<view class='swiperTxt'>
-				<swiper :indicator-dots="indicatorDots" :autoplay="autoplay" interval="2500" :duration="duration"
-					vertical="true" circular="true">
-					<block v-for="(item,index) in itemNew" :key='index'>
-						<swiper-item catchtouchmove='catchTouchMove'>
-							<view class='acea-row row-between-wrapper' hover-class='none'
-								@click="gopage(item.chiild[1].val)">
-								<view class='text acea-row row-between-wrapper'>
-									<view class='newsTitle line1'>{{item.chiild[0].val}}</view>
-								</view>
-								<view class='iconfont icon-xiangyou'></view>
-							</view>
-						</swiper-item>
-					</block>
-				</swiper>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp()
-	import colors from '@/mixins/color.js';
-	import {
-		goPage
-	} from '@/libs/order.js'
-	export default {
-		name: 'news',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			},
-		},
-		mixins:[colors],
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.img = nVal.imgUrl.url;
-						this.itemNew = nVal.newList.list;
-						this.isShow = nVal.isShow.val;
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				indicatorDots: false,
-				autoplay: true,
-				duration: 500,
-				img: '',
-				itemNew: [],
-				name: this.$options.name,
-				isIframe: false,
-				isShow: true
-			};
-		},
-		created() {
-			this.isIframe = app.globalData.isIframe;
-		},
-		mounted() {},
-		methods: {
-			gopage(url) {
-				goPage().then(res => {
-					if (url.indexOf("http") != -1) {
-						// #ifdef H5
-						location.href = url
-						// #endif
-					} else {
-						if (['/pages/goods_cate/goods_cate', '/pages/order_addcart/order_addcart',
-								'/pages/user/index'
-							].indexOf(url) ==
-							-1) {
-							uni.navigateTo({
-								url: url
-							})
-						} else {
-							uni.navigateTo({
-								url: url
-							})
-						}
-					}
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.new{
-		background-color: #fff;
-		padding: 20rpx 0;
-	}
-	.news {
-		height: 60rpx;
-		padding: 0 26rpx;
-		// box-shadow: 0 10rpx 30rpx #f5f5f5;
-		background-color: var(--view-op-point-four);
-		margin: 0 $uni-index-margin-col;
-		border-radius: 60rpx;
-		// box-shadow: $uni-index-box-shadow;
-
-		&.default {
-			text-align: center;
-			line-height: 77rpx;
-		}
-	}
-
-	.news .pictrue {
-		width: 116rpx;
-		height: 28rpx;
-		line-height: 28rpx;
-		border-right: 1rpx solid #ddd;
-		padding-right: 23rpx;
-		box-sizing: content-box;
-	}
-
-	.news .pictrue image {
-		width: 100%;
-		height: 100%;
-	}
-
-	.news .swiperTxt {
-		width: 470rpx;
-		height: 100%;
-		line-height: 60rpx;
-		overflow: hidden;
-	}
-
-	.news .swiperTxt .text {
-		line-height: 28rpx;
-		margin-bottom: 4rpx;
-	}
-
-	.news .swiperTxt .text .label {
-		font-size: 20rpx;
-		color: #ff4c48;
-		width: 64rpx;
-		height: 30rpx;
-		border-radius: 40rpx;
-		text-align: center;
-		line-height: 28rpx;
-		border: 2rpx solid #ff4947;
-	}
-
-	.news .swiperTxt .text .newsTitle {
-		width: 400rpx;
-		font-size: 24rpx;
-		line-height: 28rpx;
-		color: #666;
-	}
-
-	.news .swiperTxt .iconfont {
-		font-size: 28rpx;
-		color: #888;
-	}
-
-	.news .swiperTxt swiper {
-		height: 100%;
-	}
-</style>

+ 0 - 73
pages/index/visualization/components/picTxt.vue

@@ -1,73 +0,0 @@
-<template>
-	<view class="txtPic">
-		<view class="ueditor acea-row row-center-wrapper" v-if="isIframe && !description">
-			<text class="iconfont icon-icon_im_keyboard"></text>
-		</view>
-		<jyf-parser :html="description" ref="article" :tag-style="tagStyle" v-if="description && isShow && !isIframe"></jyf-parser>
-		<jyf-parser :html="description" ref="article" :tag-style="tagStyle" v-if="description && isIframe"></jyf-parser>
-	</view>
-</template>
-
-<script>
-	let app = getApp();
-	import parser from "@/components/jyf-parser/jyf-parser";
-	import { goPage } from '@/libs/order.js';
-	export default {
-		name: 'picTxt',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			}
-		},
-		components: {
-			"jyf-parser": parser
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if(nVal){
-						this.description = nVal.richText.val;
-						this.isShow = nVal.isShow.val;
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				description: '',
-				name:this.$options.name,
-				isIframe:app.globalData.isIframe,
-				isShow:true,
-				tagStyle: {
-					img: 'width:100%;display:block;',
-					table: 'width:100%',
-					video: 'width: 100% !important;'
-				}
-			};
-		},
-		created() {
-		},
-		mounted() {},
-		methods: {
-		}
-	}
-</script>
-
-<style scoped lang="scss">
-	.txtPic{
-		.ueditor{
-			width: 690rpx;
-			height: 300rpx;
-			border-radius: 14rpx;
-			margin: 26rpx auto 0 auto;
-			background-color: $uni-bg-color;
-			text-align: center;
-			line-height: 300rpx;
-			.iconfont{
-				font-size: 50rpx;
-			}
-		}
-	}
-</style>

+ 0 - 379
pages/index/visualization/components/popular.vue

@@ -1,379 +0,0 @@
-<template>
-	<view :style="colorStyle">
-		<view class='hotList skeleton-rect index-wrapper' v-if="isShow && hotList.length">
-			<!-- <view class='hot-bg'>
-			</view> -->
-<!-- 			<view class='title acea-row row-between-wrapper'>
-				<view class='text line1'>
-					<text class='label'><text class="iconfont icon-paihangbang"></text>{{titleInfo[0].val}}</text>
-					{{titleInfo[1].val}}
-				</view>
-				<view class='more' hover-class="none" @click="gopage(titleInfo[2].val)">
-					更多
-					<text class="iconfont icon-jiantou"></text>
-				</view>
-			</view> -->
-			<view class='title acea-row row-between-wrapper'>
-				<view class='text'>
-					<view class='name line1'>
-						<text class="iconfont icon-shoufaxinpin"></text>
-						{{titleInfo[0].val}}
-						<!-- <text class='new font-color'>NEW~</text> -->
-					</view>
-					<view class='line1 txt-btn'>{{titleInfo[1].val}}</view>
-				</view>
-				<view class='more' @click="gopage(titleInfo[2].val)">
-					{{$t(`更多`)}}
-					<text class='iconfont icon-jiantou'></text>
-				</view>
-			</view>
-			<view class='list acea-row row-middle'>
-				<block v-for="(item,index) in hotList" :key='index'>
-					<view class='item' @click="gopage('/pages/goods_details/index?id='+item.id)">
-						<view class='pictrue'>
-							<image :src='item.image'></image>
-							<image v-if="index == 0" src='/static/images/one.png' class='numPic'></image>
-							<image v-else-if="index == 1" src='/static/images/two.png' class='numPic'></image>
-							<image v-else-if="index == 2" src='/static/images/three.png' class='numPic'></image>
-						</view>
-						<view class="rectangle">
-							{{$t(`热度 TOP`)}} {{index+1}}
-						</view>
-						<view class='name line1'>{{item.store_name}}</view>
-						<!-- <view class='money font-color'>
-							¥
-							<text class='num'>{{item.price}}</text>
-						</view> -->
-					</view>
-				</block>
-			</view>
-		</view>
-		<view class='hotList index-wrapper' v-if="!isShow && isIframe && hotList.length">
-	<!-- 		<view class='hot-bg'>
-				<view class='title acea-row row-between-wrapper'>
-					<view class='text line1'>
-						<text class='label'><text class="iconfont icon-paihangbang"></text>{{titleInfo[0].val}}</text>
-						{{titleInfo[1].val}}
-					</view>
-					<view class='more' hover-class="none" @click="gopage(titleInfo[2].val)">
-						更多
-						<text class="iconfont icon-jiantou"></text>
-					</view>
-				</view>
-			</view> -->
-			<view class='title acea-row row-between-wrapper'>
-				<view class='text'>
-					<view class='name line1'>
-						<text class="iconfont icon-shoufaxinpin"></text>
-						{{titleInfo[0].val}}
-						<!-- <text class='new font-color'>NEW~</text> -->
-					</view>
-					<view class='line1 txt-btn'>{{titleInfo[1].val}}</view>
-				</view>
-				<view class='more' @click="gopage(titleInfo[2].val)">
-					{{$t(`更多`)}}
-					<text class='iconfont icon-jiantou'></text>
-				</view>
-			</view>
-			<view class='list acea-row row-middle'>
-				<block v-for="(item,index) in hotList" :key='index'>
-					<view class='item' @click="gopage('/pages/goods_details/index?id='+item.id)">
-						<view class='pictrue'>
-							<image :src='item.image'></image>
-							<image v-if="index == 0" src='/static/images/one.png' class='numPic'></image>
-							<image v-else-if="index == 1" src='/static/images/two.png' class='numPic'></image>
-							<image v-else-if="index == 2" src='/static/images/three.png' class='numPic'></image>
-						</view>
-						<view class='name line1'>{{item.store_name}}</view>
-						<!-- <view class='money font-color'>
-							¥
-							<text class='num'>{{item.price}}</text>
-						</view> -->
-					</view>
-				</block>
-			</view>
-		</view>
-		<view class='hotList index-wrapper' v-if="isIframe && !hotList.length">
-			<view class='title acea-row row-between-wrapper'>
-				<view class='text'>
-					<view class='name line1'>
-						<text class="iconfont icon-shoufaxinpin"></text>
-						{{titleInfo[0].val}}
-						<!-- <text class='new font-color'>NEW~</text> -->
-					</view>
-					<view class='line1 txt-btn'>{{titleInfo[1].val}}</view>
-				</view>
-				<view class='more' @click="gopage(titleInfo[2].val)">
-					{{$t(`更多`)}}
-					<text class='iconfont icon-jiantou'></text>
-				</view>
-			</view>
-			<!-- <view class='hot-bg'>
-				<view class='title acea-row row-between-wrapper'>
-					<view class='text line1'>
-						<text class='label'><text class="iconfont icon-paihangbang"></text>{{titleInfo[0].val}}</text>
-						{{titleInfo[1].val}}
-					</view>
-					<view class='more' hover-class="none" @click="gopage(titleInfo[2].val)">
-						更多
-						<text class="iconfont icon-jiantou"></text>
-					</view>
-				</view>
-			</view> -->
-			<view class="empty-img">{{$t(`排行榜、暂无数据`)}}</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp()
-	import colors from "@/mixins/color";
-	import {
-		mapState
-	} from 'vuex';
-	import {
-		goPage
-	} from '@/libs/order.js';
-	import {
-		getHomeProducts
-	} from '@/api/store.js';
-	export default {
-		name: 'goodList',
-		mixins: [colors],
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			}
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.isShow = nVal.isShow.val;
-						this.selectType = nVal.tabConfig.tabVal;
-						this.$set(this, 'selectId', nVal.selectConfig && nVal.selectConfig.activeValue ? nVal.selectConfig
-							.activeValue : '');
-						this.$set(this, 'type', nVal.selectSortConfig && nVal.selectSortConfig.activeValue ? nVal
-							.selectSortConfig.activeValue : '');
-						this.salesOrder = nVal.goodsSort.type == 1 ? 'desc' : '';
-						this.newsOrder = nVal.goodsSort.type == 2 ? 'news' : '';
-						this.ids = nVal.ids ? nVal.ids.join(',') : '';
-						this.numConfig = nVal.numConfig.val;
-						this.titleInfo = nVal.titleInfo.list;
-						this.productslist();
-					}
-				}
-			}
-		},
-		created() {},
-		mounted() {},
-		data() {
-			return {
-				hotList: [],
-				name: this.$options.name,
-				isShow: true,
-				isIframe: app.globalData.isIframe,
-				selectType: 0,
-				selectId: '',
-				salesOrder: '',
-				newsOrder: '',
-				ids: '',
-				page: 1,
-				limit: 3,
-				type: '',
-				numConfig: 0,
-				titleInfo: []
-			}
-		},
-		methods: {
-			// 产品列表
-			productslist: function() {
-				let that = this;
-				let data = {};
-				if (that.selectType) {
-					data = {
-						page: that.page,
-						limit: that.limit,
-						type: that.type,
-						ids: that.ids,
-						selectType: that.selectType
-					}
-				} else {
-					data = {
-						page: that.page,
-						limit: that.numConfig <= that.limit ? that.numConfig : that.limit,
-						type: that.type,
-						newsOrder: that.newsOrder,
-						salesOrder: that.salesOrder,
-						selectId: that.selectId,
-						selectType: that.selectType
-					}
-				}
-				getHomeProducts(data).then(res => {
-					that.hotList = res.data.list;
-				}).catch(err => {
-					that.$util.Tips({
-						title: err
-					});
-				});
-			},
-			gopage(url) {
-				goPage().then(res => {
-					uni.navigateTo({
-						url: url
-					})
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.hotList {
-		background-color: #fff;
-		margin: $uni-index-margin-row $uni-index-margin-col;
-		border-radius: 12rpx;
-	}
-
-	.hotList .hot-bg {
-		width: 100%;
-		height: 120rpx;
-		box-sizing: border-box;
-		font-size: 24rpx;
-		color: #282828;
-		margin-top: 15rpx;
-
-	}
-
-	// .hotList .title {
-	// 	padding: 20rpx 20rpx 0 20rpx;
-
-	// 	.iconfont {
-	// 		color: var(--view-theme);
-	// 		font-size: 36rpx;
-	// 		margin-top: 4rpx;
-	// 		margin-right: 12rpx;
-	// 	}
-	// }
-
-	.hotList .title .text {
-		display: flex;
-		.txt-btn {
-			display: flex;
-			align-items: flex-end;
-			margin-bottom: 8rpx;
-			margin-left: 12rpx;
-		}
-	}
-
-	// .hotList .title .text .label {
-	// 	font-size: $uni-index-title-font-size;
-	// 	font-weight: bold;
-	// 	color: #282828;
-	// 	margin-right: 12rpx;
-	// }
-
-	// .hotList .title .more {
-	// 	font-size: 26rpx;
-	// 	color: #999999;
-	// 	;
-	// }
-
-	// .hotList .title .more .iconfont {
-	// 	font-size: 25rpx;
-	// 	margin-left: 10rpx;
-	// }
-
-	.hotList .list {
-		width: 690rpx;
-		border-radius: 20rpx;
-		background-color: #fff;
-		margin: 0rpx auto 0 auto;
-		padding: 20rpx 20rpx;
-		box-sizing: border-box;
-		display: flex;
-		justify-content: space-between;
-	}
-
-	.hotList .list .item {
-		width: 200rpx;
-		background: var(--view-op-ten);
-		border-radius: 12rpx;
-
-		.rectangle {
-			margin: 0 auto;
-			border-radius: 30rpx;
-			text-align: center;
-			margin-top: -30rpx;
-			font-size: 24rpx;
-			color: #fff;
-			z-index: 99;
-			position: relative;
-			width: 172rpx;
-			background-color: var(--view-theme);
-		}
-	}
-
-	.hotList .list .item~.item {
-		// margin-left: 25rpx;
-	}
-
-	.hotList .list .item .pictrue {
-		width: 180rpx;
-		height: 180rpx;
-		position: relative;
-		margin: 8rpx;
-		border-radius: 12rpx;
-	}
-
-	.hotList .list .item .pictrue image {
-		width: 100%;
-		height: 100%;
-		border-radius: 12rpx;
-	}
-
-	.hotList .list .item .pictrue .numPic {
-		width: 50rpx;
-		height: 50rpx;
-		border-radius: 50%;
-		position: absolute;
-		top: 7rpx;
-		left: 7rpx;
-	}
-
-	.hotList .list .item .name {
-		font-size: 26rpx;
-		color: var(--view-theme);
-		margin-top: 12rpx;
-		padding: 0 10rpx 10rpx 10rpx;
-	}
-
-	.hotList .list .item .money {
-		font-size: 20rpx;
-		font-weight: bold;
-		margin-top: 4rpx;
-		text-align: center;
-	}
-
-	.hotList .list .item .money .num {
-		font-size: 28rpx;
-	}
-
-	.empty-img {
-		width: 100%;
-		height: 340rpx;
-		line-height: 340rpx;
-		background: #ccc;
-		font-size: 40rpx;
-		color: #000;
-		border-radius: 14rpx;
-		text-align: center;
-		font-size: 30rpx;
-	}
-
-	.font-color {
-		color: var(--view-priceColor);
-	}
-</style>

+ 0 - 189
pages/index/visualization/components/promotion.vue

@@ -1,189 +0,0 @@
-<template>
-	<view class="">
-		<view class="index-wrapper">
-			<view class='wrapper' v-if="isShow && benefit.length">
-				<view class='title acea-row row-between-wrapper'>
-					<view class='text'>
-						
-						<view class='name line1'><text class="iconfont icon-cuxiaodanpin"></text>{{titleInfo[0].val}}</view>
-						<view class='line1 txt-btn'>{{titleInfo[1].val}}</view>
-					</view>
-					<view class='more' @click="gopage(titleInfo[2].val)">{{$t(`更多`)}}<text class='iconfont icon-jiantou'></text>
-					</view>
-				</view>
-				<promotionGood :benefit="benefit"></promotionGood>
-			</view>
-			<view class='wrapper' v-if="!isShow && isIframe && benefit.length">
-				<view class='title acea-row row-between-wrapper'>
-					<view class='text'>
-						<view class='name line1'><text class="iconfont icon-cuxiaodanpin"></text>{{titleInfo[0].val}}</view>
-						<view class='line1 txt-btn'>{{titleInfo[1].val}}</view>
-					</view>
-					<view class='more' @click="gopage(titleInfo[1].val)">{{$t(`更多`)}}<text class='iconfont icon-jiantou'></text>
-					</view>
-				</view>
-				<promotionGood :benefit="benefit"></promotionGood>
-			</view>
-			<view class='wrapper' v-if="isIframe && !benefit.length">
-				<view class='title acea-row row-between-wrapper'>
-					<view class='text'>
-						<view class='name line1'><text class="iconfont icon-cuxiaodanpin"></text>{{titleInfo[0].val}}</view>
-						<view class='line1 txt-btn'>{{titleInfo[1].val}}</view>
-					</view>
-					<view class='more' @click="gopage(titleInfo[1].val)">{{$t(`更多`)}}<text class='iconfont icon-jiantou'></text>
-					</view>
-				</view>
-				<view class="empty-img">{{$t(`促销单品,暂无数据`)}}</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp()
-	import {
-		mapState
-	} from 'vuex'
-	import {
-		goPage
-	} from '@/libs/order.js'
-	import {
-		getHomeProducts
-	} from '@/api/store.js';
-	import promotionGood from '@/components/promotionGood/index.vue';
-	export default {
-		name: 'goodList',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			}
-		},
-		components: {
-			promotionGood
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.isShow = nVal.isShow.val;
-						this.selectType = nVal.tabConfig.tabVal;
-						this.$set(this, 'selectId', nVal.selectConfig.activeValue || '');
-						this.$set(this, 'type', nVal.selectSortConfig.activeValue);
-						this.salesOrder = nVal.goodsSort.type == 1 ? 'desc' : '';
-						this.newsOrder = nVal.goodsSort.type == 2 ? 'news' : '';
-						this.ids = nVal.ids ? nVal.ids.join(',') : '';
-						this.numConfig = nVal.numConfig.val;
-						this.titleInfo = nVal.titleInfo.list;
-						this.productslist();
-					}
-				}
-			}
-		},
-		created() {
-			this.isIframe = app.globalData.isIframe;
-		},
-		mounted() {},
-		data() {
-			return {
-				benefit: [],
-				salesInfo: this.$t(`库存商品优惠促销活动`),
-				name: this.$options.name,
-				isShow: true,
-				isIframe: app.globalData.isIframe,
-				selectType: 0,
-				selectId: '',
-				salesOrder: '',
-				newsOrder: '',
-				ids: '',
-				page: 1,
-				limit: this.$config.LIMIT,
-				type: '',
-				numConfig: 0,
-				titleInfo: []
-			}
-		},
-		methods: {
-			// 产品列表
-			productslist: function() {
-				let that = this;
-				let data = {};
-				if (that.selectType) {
-					data = {
-						page: that.page,
-						limit: that.limit,
-						type: that.type,
-						ids: that.ids,
-						selectType: that.selectType
-					}
-				} else {
-					data = {
-						page: that.page,
-						limit: that.numConfig <= that.limit ? that.numConfig : that.limit,
-						type: that.type,
-						newsOrder: that.newsOrder,
-						salesOrder: that.salesOrder,
-						selectId: that.selectId,
-						selectType: that.selectType
-					}
-				}
-				getHomeProducts(data).then(res => {
-					that.benefit = res.data.list;
-				}).catch(err => {
-					that.$util.Tips({
-						title: err
-					});
-				});
-			},
-			gopage(url) {
-				goPage().then(res => {
-					uni.navigateTo({
-						url: url
-					})
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.index-wrapper {
-		background-color: $uni-bg-color;
-		margin: $uni-index-margin-row $uni-index-margin-col 5rpx $uni-index-margin-col;
-		border-radius: $uni-border-radius-index;
-
-		// box-shadow: $uni-index-box-shadow;
-	}
-
-	.text {
-		display: flex;
-
-		.name {
-			font-size: $uni-index-title-font-size;
-			font-weight: bold;
-		}
-
-		.txt-btn {
-			display: flex;
-			align-items: flex-end;
-			margin-bottom: 8rpx;
-			margin-left: 12rpx;
-		}
-
-	}
-
-	.empty-img {
-		width: 690rpx;
-		height: 300rpx;
-		border-radius: 14rpx;
-		margin: 26rpx auto 0 auto;
-		background-color: #ccc;
-		text-align: center;
-		line-height: 300rpx;
-
-		.iconfont {
-			font-size: 50rpx;
-		}
-	}
-</style>

+ 0 - 373
pages/index/visualization/components/recommend.vue

@@ -1,373 +0,0 @@
-<template>
-	<view>
-		<view class="productList" :style="colorStyle">
-			<view class='index-wrapper acea-row row-between-wrapper' v-if="isShow && bastList.length">
-				<view class='title acea-row row-between-wrapper'>
-					<view class='text'>
-						<view class='name line1'>
-							<text class="iconfont icon-jingpintuijian1"></text>
-							{{titleInfo[0].val}}
-						</view>
-						<view class='line1 txt-btn'>{{titleInfo[1].val}}</view>
-					</view>
-					<view class='more' @click="gopage(titleInfo[2].val)">
-						{{$t(`更多`)}}
-						<text class='iconfont icon-jiantou'></text>
-					</view>
-				</view>
-				<view class="item-box">
-					<view class='item' v-for="(item,index) in bastList" :key="index" @click="goDetail(item)">
-						<view class='pictrue'>
-							<image :src='item.image'></image>
-							<!-- 			<span class="pictrue_log_class pictrue_log_big" v-if="item.activity && item.activity.type === '1'">秒杀</span>
-						<span class="pictrue_log_class pictrue_log_big" v-if="item.activity && item.activity.type === '2'">砍价</span>
-						<span class="pictrue_log_class pictrue_log_big" v-if="item.activity && item.activity.type === '3'">拼团</span> -->
-						</view>
-						<view class='text'>
-							<view class='name line2'>{{item.store_name}}</view>
-							<view class="type">
-								<view class="type-sty" v-if="item.activity && item.activity.type == '1'">{{$t(`秒杀`)}}</view>
-								<view class="type-sty" v-if="item.activity && item.activity.type == '2'">{{$t(`砍价`)}}</view>
-								<view class="type-sty" v-if="item.activity && item.activity.type == '3'">{{$t(`砍价`)}}</view>
-							</view>
-							<view class='vip acea-row'>
-								<view class='money font-color'>{{$t(`¥`)}}<text class='num'>{{item.price}}</text></view>
-								<view class='vip-money' v-if="item.vip_price && item.vip_price > 0 && item.base">
-									{{$t(`¥`)}}{{item.vip_price}}
-									<image src='/static/images/jvip.png' class="jvip"></image>
-								</view>
-								<view class='vip-money' v-if="item.vip_price && item.vip_price > 0 && item.is_vip">
-									{{$t(`¥`)}}{{item.vip_price}}
-									<image src='/static/images/vip.png'></image>
-								</view>
-								<!-- <view>已售{{item.sales}}{{item.unit_name}}</view> -->
-							</view>
-						</view>
-					</view>
-				</view>
-
-			</view>
-			<view class='index-wrapper list acea-row row-between-wrapper' v-if="!isShow && isIframe && bastList.length">
-				<view class='title acea-row row-between-wrapper'>
-					<view class='text'>
-						<view class='name line1'>
-							<text class="iconfont icon-jingpintuijian1"></text>
-							{{titleInfo[0].val}}
-						</view>
-						<view class='line1 txt-btn'>{{titleInfo[1].val}}</view>
-					</view>
-					<view class='more' @click="gopage(titleInfo[2].val)">
-						{{$t(`更多`)}}
-						<text class='iconfont icon-jiantou'></text>
-					</view>
-				</view>
-				<view class="item-box">
-
-					<view class='item' v-for="(item,index) in bastList" :key="index" @click="goDetail(item)">
-						<view class='pictrue'>
-							<image :src='item.image'></image>
-							<!-- 			<span class="pictrue_log_class pictrue_log_big" v-if="item.activity && item.activity.type === '1'">秒杀</span>
-					<span class="pictrue_log_class pictrue_log_big" v-if="item.activity && item.activity.type === '2'">砍价</span>
-					<span class="pictrue_log_class pictrue_log_big" v-if="item.activity && item.activity.type === '3'">拼团</span> -->
-						</view>
-						<view class='text'>
-							<view class='name line2'>{{item.store_name}}</view>
-							<view class="type">
-								<view class="type-sty" v-if="item.activity && item.activity.type == '1'">{{$t(`秒杀`)}}</view>
-								<view class="type-sty" v-if="item.activity && item.activity.type == '2'">{{$t(`砍价`)}}</view>
-								<view class="type-sty" v-if="item.activity && item.activity.type == '3'">{{$t(`砍价`)}}</view>
-								<view class="type-sty" v-if="item.checkCoupon">{{$t(`ticket`)}}</view>
-							</view>
-							<view class='money font-color'>{{$t(`¥`)}}<text class='num'>{{item.price}}</text></view>
-							<view class='vip acea-row row-between-wrapper'>
-								<view class='vip-money' v-if="item.vip_price && item.vip_price > 0 && item.base">
-									{{$t(`¥`)}}{{item.vip_price}}
-									<image src='/static/images/jvip.png' class="jvip"></image>
-								</view>
-								<view class='vip-money' v-if="item.vip_price && item.vip_price > 0 && item.is_vip">
-									{{$t(`¥`)}}{{item.vip_price}}
-									<image src='/static/images/vip.png'></image>
-								</view>
-								<!-- <view>已售{{item.sales}}{{item.unit_name}}</view> -->
-							</view>
-						</view>
-					</view>
-				</view>
-			</view>
-			<block v-if="isIframe && !bastList.length">
-				<view class='index-wrapper' v-if="isIframe && !fastList.length">
-					<view class='title acea-row row-between-wrapper'>
-						<view class='text'>
-							<view class='name line1'>
-								<text class="iconfont icon-jingpintuijian1"></text>
-								{{titleInfo[0].val}}
-							</view>
-							<view class='line1 txt-btn'>{{titleInfo[1].val}}</view>
-						</view>
-						<navigator class='more' open-type="switchTab" :url="titleInfo[2].val">{{$t(`更多`)}}<text
-								class='iconfont icon-jiantou'></text></navigator>
-					</view>
-					<view class='scroll-product'>
-						<view class="empty-img">{{$t(`精品推荐,暂无数据`)}}</view>
-					</view>
-				</view>
-			</block>
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp()
-	import {
-		mapState
-	} from 'vuex'
-	import {
-		goShopDetail,
-		goPage
-	} from '@/libs/order.js'
-	import {
-		getHomeProducts
-	} from '@/api/store.js';
-	import goodLists from '@/components/goodList/index.vue'
-	import colors from "@/mixins/color";
-	export default {
-		name: 'goodList',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			}
-		},
-		mixins: [colors],
-		components: {
-			goodLists
-		},
-		created() {
-
-		},
-		mounted() {},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.isShow = nVal.isShow.val;
-						this.selectType = nVal.tabConfig.tabVal;
-						this.$set(this, 'selectId', nVal.selectConfig.activeValue || '');
-						this.$set(this, 'type', nVal.selectSortConfig.activeValue);
-						this.salesOrder = nVal.goodsSort.type == 1 ? 'desc' : '';
-						this.newsOrder = nVal.goodsSort.type == 2 ? 'news' : '';
-						this.ids = nVal.ids ? nVal.ids.join(',') : '';
-						this.numConfig = nVal.numConfig.val;
-						this.titleInfo = nVal.titleInfo.list;
-						this.productslist();
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				circular: true,
-				interval: 3000,
-				duration: 500,
-				bastList: [],
-				name: this.$options.name,
-				isShow: true,
-				isIframe: app.globalData.isIframe,
-				selectType: 0,
-				selectId: '',
-				salesOrder: '',
-				newsOrder: '',
-				ids: '',
-				page: 1,
-				limit: this.$config.LIMIT,
-				type: '',
-				numConfig: 0,
-				titleInfo: []
-			}
-		},
-		methods: {
-			// 产品列表
-			productslist: function() {
-				let that = this;
-				let data = {};
-				if (that.selectType) {
-					data = {
-						page: that.page,
-						limit: that.limit,
-						type: that.type,
-						ids: that.ids,
-						selectType: that.selectType
-					}
-				} else {
-					data = {
-						page: that.page,
-						limit: that.numConfig <= that.limit ? that.numConfig : that.limit,
-						type: that.type,
-						newsOrder: that.newsOrder,
-						salesOrder: that.salesOrder,
-						selectId: that.selectId,
-						selectType: that.selectType
-					}
-				}
-				getHomeProducts(data).then(res => {
-					that.bastList = res.data.list;
-				}).catch(err => {
-					that.$util.Tips({
-						title: err
-					});
-				});
-			},
-			gopage(url) {
-				uni.navigateTo({
-					url: url
-				})
-			},
-			goDetail(item) {
-				goPage().then(res => {
-					goShopDetail(item, this.uid).then(res => {
-						uni.navigateTo({
-							url: `/pages/goods_details/index?id=${item.id}`
-						})
-					})
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.productList {
-		background-color: #fff;
-		margin: 20rpx 30rpx;
-		border-radius: $uni-border-radius-index;
-	}
-
-	.title {
-		display: flex;
-		margin: 0;
-		width: 100%;
-		margin: 0 20rpx;
-
-		.text {
-			display: flex;
-
-			.name {
-				font-size: $uni-index-title-font-size;
-				font-weight: bold;
-			}
-
-			.txt-btn {
-				display: flex;
-				align-items: flex-end;
-				margin-bottom: 8rpx;
-				margin-left: 12rpx;
-			}
-
-		}
-	}
-
-	.productList .item {
-		width: 100%;
-		padding: 25rpx 0;
-		background-color: #fff;
-		border-radius: 10rpx;
-		display: flex;
-		// border:1rpx solid #eee;
-	}
-
-	.productList .item .pictrue {
-		position: relative;
-		width: 180rpx;
-		height: 180rpx;
-	}
-
-	.productList .item .pictrue image {
-		width: 100%;
-		height: 100%;
-		border-radius: 10rpx;
-	}
-
-	.productList .item:nth-child(even) {
-		border-top: 1rpx solid #EEEEEE;
-		border-bottom: 1rpx solid #EEEEEE;
-	}
-
-	.productList .item .text {
-		width: 460rpx;
-		padding: 0rpx 17rpx 0rpx 17rpx;
-		font-size: 30rpx;
-		color: #222;
-		display: flex;
-		flex-direction: column;
-		justify-content: space-between;
-
-		.name {
-			font-size: 28rpx;
-		}
-
-		.type {
-			display: flex;
-
-			.type-sty {
-				padding: 0 5rpx;
-				border: 1px solid var(--view-theme);
-				color: var(--view-theme);
-				font-size: 24rpx;
-				border-radius: 4rpx;
-			}
-		}
-	}
-
-	.productList .item .text .money {
-		font-size: 26rpx;
-		font-weight: bold;
-	}
-
-	.productList .item .text .money .num {
-		font-size: 34rpx;
-		color: var(--view-priceColor);
-	}
-
-	.productList .item .text .vip {
-		font-size: 22rpx;
-		color: var(--view-priceColor);
-		margin-top: 7rpx;
-		display: flex;
-		align-items: center;
-	}
-
-	.productList .item .text .vip .vip-money {
-		font-size: 24rpx;
-		color: #282828;
-		font-weight: bold;
-	}
-
-	.productList .item .text .vip .vip-money image {
-		width: 46rpx;
-		height: 21rpx;
-		margin-left: 4rpx;
-	}
-
-	.empty-img {
-		width: 690rpx;
-		height: 300rpx;
-		border-radius: 10rpx;
-		margin: 26rpx auto 0 auto;
-		background-color: #ccc;
-		text-align: center;
-		line-height: 300rpx;
-
-		.iconfont {
-			font-size: 50rpx;
-		}
-	}
-
-	.font-color {
-		color: var(--view-priceColor);
-	}
-
-	.item-box {
-		margin: 0 auto;
-	}
-</style>

+ 0 - 235
pages/index/visualization/components/scrollBox.vue

@@ -1,235 +0,0 @@
-<template>
-	<view>
-		<view class='index-wrapper skeleton-rect' v-if="isShow && fastList.length">
-			<view class='title acea-row row-between-wrapper'>
-				<view class='text'>
-					<view class='name line1'>{{titleInfo[0].val}}</view>
-					<view class='line1 txt-btn'>{{titleInfo[1].val}}</view>
-				</view>
-				<navigator class='more' open-type="switchTab" :url="titleInfo[2].val">{{$t(`更多`)}}<text
-						class='iconfont icon-jiantou'></text></navigator>
-			</view>
-			<view class='scroll-product'>
-				<scroll-view class="scroll-view_x" scroll-x style="width:auto;overflow:hidden;">
-					<block v-for="(item,index) in fastList" :key='index'>
-						<view hover-class="none" class='item'
-							@click="gopage('/pages/goods/goods_list/index?sid='+item.id+'&title='+item.cate_name)">
-							<view class='img-box'>
-								<image :src='item.pic'></image>
-							</view>
-							<view class='pro-info line1'>{{item.cate_name}}</view>
-						</view>
-					</block>
-				</scroll-view>
-			</view>
-		</view>
-		<view class='index-wrapper' v-if="!isShow && isIframe && fastList.length">
-			<view class='title acea-row row-between-wrapper'>
-				<view class='text'>
-					<view class='name line1'>{{titleInfo[0].val}}</view>
-					<view class='line1 txt-btn'>{{titleInfo[1].val}}</view>
-				</view>
-				<navigator class='more' open-type="switchTab" :url="titleInfo[2].val">{{$t(`更多`)}}<text
-						class='iconfont icon-jiantou'></text></navigator>
-			</view>
-			<view class='scroll-product'>
-				<scroll-view class="scroll-view_x" scroll-x style="width:auto;overflow:hidden;">
-					<block v-for="(item,index) in fastList" :key='index'>
-						<view hover-class="none" class='item'
-							@click="gopage('/pages/goods/goods_list/index?sid='+item.id+'&title='+item.cate_name)">
-							<view class='img-box'>
-								<image :src='item.pic'></image>
-							</view>
-							<view class='pro-info line1'>{{item.cate_name}}</view>
-						</view>
-					</block>
-				</scroll-view>
-			</view>
-		</view>
-		<view class='index-wrapper' v-if="isIframe && !fastList.length">
-			<view class='title acea-row row-between-wrapper'>
-				<view class='text'>
-					<view class='name line1'>{{titleInfo[0].val}}</view>
-					<view class='line1 txt-btn'>{{titleInfo[1].val}}</view>
-				</view>
-				<navigator class='more' open-type="switchTab" :url="titleInfo[2].val">{{$t(`更多`)}}<text
-						class='iconfont icon-jiantou'></text></navigator>
-			</view>
-			<view class='scroll-product'>
-				<view class="empty-img">{{$t(`快速选择,暂无数据`)}}</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp()
-	// import {
-	// 	mapState
-	// } from 'vuex'
-	import {
-		goPage
-	} from '@/libs/order.js'
-	import {
-		category
-	} from '@/api/api.js';
-	export default {
-		name: 'scrollBox',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			}
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.numConfig = nVal.numConfig.val;
-						this.isShow = nVal.isShow.val;
-						this.tabConfig = nVal.tabConfig ? nVal.tabConfig.tabVal : 0;
-						this.selectConfig = nVal.selectConfig.activeValue || '';
-						this.titleInfo = nVal.titleInfo.list;
-						if (this.tabConfig) {
-							this.fastList = nVal.goodsList.list
-						} else {
-							this.category();
-						}
-					}
-				}
-			}
-		},
-		created() {},
-		mounted() {},
-		data() {
-			return {
-				fastInfo: this.$t(`上百种商品分类任您选择`),
-				fastList: [],
-				name: this.$options.name,
-				isShow: true,
-				isIframe: app.globalData.isIframe,
-				numConfig: 0,
-				selectConfig: 0,
-				tabConfig: 0,
-				titleInfo: []
-			}
-		},
-		methods: {
-			gopage(url) {
-				goPage().then(res => {
-					uni.navigateTo({
-						url: url,
-					});
-
-				})
-			},
-			category() {
-				category({
-					pid: this.selectConfig,
-					limit: this.numConfig
-				}).then(res => {
-					this.fastList = res.data;
-				});
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.index-wrapper {
-		background-color: $uni-bg-color;
-		margin: $uni-index-margin-row $uni-index-margin-col;
-		border-radius: $uni-border-radius-index;
-		// box-shadow: $uni-index-box-shadow;
-	}
-
-	.text {
-		display: flex;
-
-		.name {
-			font-size: $uni-index-title-font-size;
-			font-weight: bold;
-		}
-
-		.txt-btn {
-			display: flex;
-			align-items: flex-end;
-			margin-bottom: 8rpx;
-			margin-left: 12rpx;
-		}
-
-	}
-
-	.scroll-product {
-		white-space: nowrap;
-		margin-top: 30rpx;
-		padding: 0 20rpx 20rpx 20rpx;
-	}
-
-	.scroll-product .item {
-		display: inline-block;
-		margin-right: 24rpx;
-		border-radius: 0 0 10rpx 10rpx;
-		// box-shadow: 0 40rpx 30rpx -10rpx #eee;
-		// background: linear-gradient(180deg, #fff 0%, #fff 30%, rgba(255, 96, 16, 0.2) 100%);
-		background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 207, 183, 0.65) 100%);
-		color: #FF7E00;
-	}
-
-	.scroll-product .item:nth-of-type(3n) {
-		color: #1DB0FC;
-		background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(187, 221, 255, 0.65) 100%);
-	}
-
-	.scroll-product .item:nth-of-type(3n-1) {
-		color: #FF448F;
-		background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(253, 199, 255, 0.65) 100%);
-	}
-
-	.scroll-product .item:nth-last-child(1) {
-		margin-right: 0;
-	}
-
-	.scroll-product .item .img-box {
-		width: 160rpx;
-		height: 160rpx;
-		margin: 0 10rpx;
-		border-radius: 10px;
-	}
-
-	.scroll-product .item .img-box image {
-		width: 100%;
-		height: 100%;
-		border-radius: 10rpx;
-	}
-
-	.scroll-product .item .pro-info {
-		font-size: 24rpx;
-		text-align: center;
-		height: 60rpx;
-		line-height: 60rpx;
-		border-bottom: 0;
-		border-top: 0;
-		padding: 0 10rpx;
-		font-weight: bold;
-	}
-
-	.empty-img {
-		height: 300rpx;
-		border-radius: 14rpx;
-		margin: 26rpx auto 0 auto;
-		background-color: #ccc;
-		text-align: center;
-		line-height: 300rpx;
-
-		.iconfont {
-			font-size: 50rpx;
-		}
-	}
-
-	.more {
-		color: #999;
-		font-size: 24rpx;
-	}
-</style>

+ 0 - 296
pages/index/visualization/components/seckill.vue

@@ -1,296 +0,0 @@
-<template>
-	<view>
-		<view class="default" v-if="isIframe && !spikeList.length">
-			<text>{{$t(`秒杀模块,暂无数据`)}}</text>
-		</view>
-		<view class="seckill" v-if="spikeList.length && isShow && !isIframe">
-			<view class="title acea-row row-between-wrapper">
-				<view class="acea-row row-middle">
-					<view class="name">{{$t(`限时秒杀`)}}</view>
-					<view class="point">{{point}} {{$t(`场`)}}</view>
-					<countDown :is-day="false" :tip-text="' '" :day-text="' '" :hour-text="' : '" :minute-text="' : '" :second-text="' '"
-					 :datatime="datatime"></countDown>
-				</view>
-				<navigator url="/pages/activity/goods_seckill/index" hover-class="none" class="more acea-row row-center-wrapper">{{$t(`更多`)}}<text class="iconfont icon-jiantou"></text></navigator>
-			</view>
-			<view class="conter">
-				<scroll-view scroll-x="true" style="white-space: nowrap; vertical-align: middle;" show-scrollbar="false">
-					<view class="itemCon" v-for="(item, index) in spikeList" :key="index" @click="goDetail(item)">
-						<view class="item">
-							<view class="pictrue">
-								<image :src="item.image"></image>
-							</view>
-							<view class="name line1">{{item.title}}</view>
-							<view class="money">
-								<view class="x_money">{{$t(`¥`)}}<text class="num">{{item.price}}</text></view>
-								<view class="y_money">{{$t(`¥`)}}{{item.ot_price}}</view>
-							</view>
-						</view>
-					</view>
-				</scroll-view>
-			</view>
-		</view>
-		<view class="seckill" v-if="spikeList.length && isIframe">
-			<view class="title acea-row row-between-wrapper">
-					<view class="acea-row row-middle">
-						<view class="name">{{$t(`限时秒杀`)}}</view>
-						<view class="point">{{point}} {{$t(`场`)}}</view>
-						<countDown :is-day="false" :tip-text="' '" :day-text="' '" :hour-text="' : '" :minute-text="' : '" :second-text="' '"
-						 :datatime="datatime"></countDown>
-					</view>
-					<navigator class="more acea-row row-center-wrapper">{{$t(`更多`)}}<text class="iconfont icon-jiantou"></text></navigator>
-				</view>
-				<view class="conter">
-					<scroll-view scroll-x="true" style="white-space: nowrap; vertical-align: middle;" show-scrollbar="false">
-						<view class="itemCon" v-for="(item, index) in spikeList" :key="index" @click="goDetail(item)">
-							<view class="item">
-								<view class="pictrue">
-									<image :src="item.image"></image>
-								</view>
-								<view class="name line1">{{item.title}}</view>
-								<view class="money">
-									<view class="x_money">{{$t(`¥`)}}<text class="num">{{item.price}}</text></view>
-									<view class="y_money">{{$t(`¥`)}}{{item.ot_price}}</view>
-								</view>
-							</view>
-						</view>
-					</scroll-view>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp();
-	import {
-		goPage
-	} from '@/libs/order.js';
-	import { getHomeProducts } from '@/api/store.js';
-	import countDown from '@/components/countDown';
-	export default {
-		name: 'seckill',
-		components: {
-			countDown
-		},
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			}
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if(nVal){
-						this.isShow = nVal.isShow.val;
-						this.selectType = nVal.tabConfig.tabVal;
-						this.$set(this, 'selectId', nVal.selectConfig.activeValue || '');
-						this.$set(this, 'type', nVal.titleInfo.type);
-						this.salesOrder = nVal.goodsSort.type == 1 ? 'desc' : '';
-						this.newsOrder = nVal.goodsSort.type == 2 ? 'news' : '';
-						this.ids = nVal.ids?nVal.ids.join(','):'';
-						this.numConfig = nVal.numConfig.val;
-						this.productslist();
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				datatime: 0,
-				point: "",
-				spikeList: [],
-				name:this.$options.name,//component组件固定写法获取当前name;
-				isIframe:app.globalData.isIframe,//判断是前台还是后台;
-				isShow:true,
-				selectType:0,
-				selectId: '',
-				salesOrder:'',
-				newsOrder:'',
-				ids:'',
-				page: 1,
-				limit: this.$config.LIMIT,
-				type: '',
-				numConfig:0
-			};
-		},
-		created() {
-		},
-		mounted() {
-		},
-		methods: {
-			// 产品列表
-			productslist: function() {
-				let that = this;
-				let data = {};
-				if (that.selectType) {
-					data = {
-						page: that.page,
-						limit: that.limit,
-						type: that.type,
-						ids: that.ids,
-						selectType: that.selectType
-					}
-				} else {
-					data = {
-						page: that.page,
-						limit: that.numConfig<=that.limit?that.numConfig:that.limit,
-						type: that.type,
-						newsOrder: that.newsOrder,
-						salesOrder: that.salesOrder,
-						selectId: that.selectId,
-						selectType: that.selectType
-					}
-				}
-				getHomeProducts(data).then(res => {
-					that.spikeList = res.data.list;
-					that.point = res.data.time;
-					that.datatime = res.data.stop;
-				}).catch(err => {
-					that.$util.Tips({ title: err });
-				});
-			},
-			goDetail(item){
-				goPage(item).then(res=>{
-					uni.navigateTo({
-						url: `/pages/activity/goods_seckill_details/index?id=${item.id}&time=${this.datatime}&status=1`
-					})
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.default{
-		width: 690rpx;
-		height: 300rpx;
-		border-radius: 14rpx;
-		margin: 26rpx auto 0 auto;
-		background-color: #ccc;
-		text-align: center;
-		line-height: 300rpx;
-		.iconfont{
-			font-size: 50rpx;
-		}
-	}
-	.seckill {
-		width: 690rpx;
-		height: 410rpx;
-		margin: 0 auto;
-		padding-top: 35rpx;
-		background-color: $uni-bg-color;
-		// border-top:1rpx solid #eee;
-
-		.title {
-			.name{
-				font-size: 32rpx;
-				color: #282828;
-				font-weight: bold;
-			}
-
-			// .lines {
-			// 	width: 1rpx;
-			// 	height: 24rpx;
-			// 	background-color: #1DB0FC;
-			// 	opacity: 0.6;
-			// 	margin-left: 16rpx;
-			// }
-
-			.point {
-				font-size: 30rpx;
-				font-weight: bold;
-				color: #fc4141;
-				margin-left: 16rpx;
-			}
-
-			/deep/.time {
-				font-size: 24rpx;
-
-				.styleAll {
-					width: 35rpx;
-					height: 35rpx;
-					background-color: rgba(252, 60, 62, 0.09);
-					border-radius: 6rpx;
-					color: rgb(233, 51, 35);
-					text-align: center;
-				}
-
-				.red {
-					&~.red {
-						color: #333333;
-						padding: 0 4rpx;
-					}
-				}
-			}
-
-			.more {
-				font-size: 26rpx!important;
-				color: #333;
-				.iconfont {
-					    margin-left: 8rpx;
-					    font-size: 26rpx!important;
-					    vertical-align: 2rpx;
-				}
-			}
-		}
-
-		.conter {
-			width: 100%;
-			height: 320rpx;
-			background-color: #FFFFFF;
-			border-radius: 12px;
-			margin-top: 26rpx;
-
-			.itemCon {
-				display: inline-block;
-				width: 174rpx;
-				margin-right: 24rpx;
-
-				.item {
-					width: 100%;
-
-					.pictrue {
-						width: 100%;
-						height: 174rpx;
-						border-radius: 6rpx;
-
-						image {
-							width: 100%;
-							height: 100%;
-							border-radius: 6rpx;
-						}
-					}
-
-					.name {
-						font-size: 24rpx;
-						color: #333333;
-						margin-top: 10rpx;
-					}
-
-					.money {
-						
-						.y_money {
-							font-size: 20rpx;
-							color: #999999;
-							text-decoration: line-through;
-						}
-
-						.x_money {
-							color: #FD502F;
-							font-size: 24rpx;
-							font-weight: bold;
-							margin-top: 3rpx;
-
-							.num {
-								font-size: 28rpx;
-							}
-						}
-					}
-				}
-			}
-		}
-	}
-</style>

+ 0 - 391
pages/index/visualization/components/skeleton.vue

@@ -1,391 +0,0 @@
-<template>
-  <view
-    v-if="show"
-    :style="{
-      width: systemInfo.width * 2 + 'rpx',
-      height: (systemInfo.height + 100) * 2 + 'rpx',
-      backgroundColor: bgcolor,
-      position: 'absolute',
-      left: 0,
-      top: 0,
-      zIndex: 9998,
-    }"
-  >
-    <view
-      v-for="(item, rect_idx) in skeletonRectLists"
-      :key="rect_idx + 'rect'"
-      :class="[loading == 'chiaroscuro' ? 'chiaroscuro' : '']"
-      :style="{
-        width: item.width * 2 + 'rpx',
-        height: item.height * 2 + 'rpx',
-        backgroundColor: 'rgb(194, 207, 214,.3)',
-        position: 'absolute',
-        left: item.left * 2 + 'rpx',
-        top: item.top * 2 + 'rpx',
-      }"
-    >
-    </view>
-    <view
-      v-for="(item, circle_idx) in skeletonCircleLists"
-      :key="circle_idx + 'circle'"
-      :class="loading == 'chiaroscuro' ? 'chiaroscuro' : ''"
-      :style="{
-        width: item.width * 2 + 'rpx',
-        height: item.height * 2 + 'rpx',
-        backgroundColor: 'rgb(194, 207, 214,.3)',
-        borderRadius: item.width * 2 + 'rpx',
-        position: 'absolute',
-        left: item.left * 2 + 'rpx',
-        top: item.top * 2 + 'rpx',
-        zIndex: 9998,
-      }"
-    >
-    </view>
-    <view class="spinbox" v-if="loading == 'spin'">
-      <view class="spin"></view>
-    </view>
-  </view>
-</template>
-
-<script>
-export default {
-  name: "skeleton",
-  props: {
-    bgcolor: {
-      type: String,
-      value: "#FFF",
-    },
-    selector: {
-      type: String,
-      value: "skeleton",
-    },
-    loading: {
-      type: String,
-      value: "chiaroscuro",
-    },
-    show: {
-      type: Boolean,
-      value: false,
-    },
-    isNodes: {
-      type: Number,
-      value: false,
-    }, //控制什么时候开始抓取元素节点,只要数值改变就重新抓取
-  },
-  data() {
-    return {
-      loadingAni: ["spin", "chiaroscuro"],
-      systemInfo: {},
-      skeletonRectLists: [
-        {
-          bottom: 35,
-          dataset: {},
-          height: 25,
-          id: "",
-          left: 15,
-          right: 65,
-          top: 10,
-          width: 50,
-        },
-        {
-          bottom: 72,
-          dataset: {},
-          height: 30,
-          id: "",
-          left: 15,
-          right: 360,
-          top: 42,
-          width: 345,
-        },
-        {
-          bottom: 232,
-          dataset: {},
-          height: 145,
-          id: "",
-          left: 15,
-          right: 360,
-          top: 87,
-          width: 345,
-        },
-        {
-          bottom: 436,
-          dataset: {},
-          height: 30,
-          id: "",
-          left: 15,
-          right: 360,
-          top: 406,
-          width: 345,
-        },
-        {
-          bottom: 596,
-          dataset: {},
-          height: 150,
-          id: "",
-          left: 15,
-          right: 183,
-          top: 446,
-          width: 168,
-        },
-        {
-          bottom: 519,
-          dataset: {},
-          height: 73,
-          id: "",
-          left: 188,
-          right: 360,
-          top: 446,
-          width: 172,
-        },
-        {
-          bottom: 596,
-          dataset: {},
-          height: 73,
-          id: "",
-          left: 188,
-          right: 360,
-          top: 523,
-          width: 172,
-        },
-        {
-          bottom: 793,
-          dataset: {},
-          height: 177,
-          id: "",
-          left: 15,
-          right: 360,
-          top: 616,
-          width: 345,
-        },
-        {
-          bottom: 1680,
-          dataset: {},
-          height: 206,
-          id: "",
-          left: 15,
-          right: 360,
-          top: 1474,
-          width: 345,
-        },
-      ],
-      skeletonCircleLists: [
-        {
-          id: "",
-          dataset: {},
-          left: 27,
-          right: 72,
-          top: 245,
-          bottom: 270,
-          width: 45,
-          height: 45,
-        },
-        {
-          id: "",
-          dataset: {},
-          left: 96,
-          right: 141,
-          top: 245,
-          bottom: 270,
-          width: 45,
-          height: 45,
-        },
-        {
-          id: "",
-          dataset: {},
-          left: 165,
-          right: 210,
-          top: 245,
-          bottom: 270,
-          width: 45,
-          height: 45,
-        },
-        {
-          id: "",
-          dataset: {},
-          left: 234,
-          right: 279,
-          top: 245,
-          bottom: 270,
-          width: 45,
-          height: 45,
-        },
-        {
-          id: "",
-          dataset: {},
-          left: 303,
-          right: 348,
-          top: 245,
-          bottom: 270,
-          width: 45,
-          height: 45,
-        },
-        {
-          id: "",
-          dataset: {},
-          left: 27,
-          right: 72,
-          top: 327,
-          bottom: 352,
-          width: 45,
-          height: 45,
-        },
-        {
-          id: "",
-          dataset: {},
-          left: 96,
-          right: 141,
-          top: 327,
-          bottom: 352,
-          width: 45,
-          height: 45,
-        },
-        {
-          id: "",
-          dataset: {},
-          left: 165,
-          right: 210,
-          top: 327,
-          bottom: 352,
-          width: 45,
-          height: 45,
-        },
-        {
-          id: "",
-          dataset: {},
-          left: 234,
-          right: 279,
-          top: 327,
-          bottom: 352,
-          width: 45,
-          height: 45,
-        },
-        {
-          id: "",
-          dataset: {},
-          left: 303,
-          right: 348,
-          top: 327,
-          bottom: 352,
-          width: 45,
-          height: 45,
-        },
-      ],
-    };
-  },
-  watch: {
-    isNodes(val) {
-      // this.readyAction();
-    },
-  },
-  mounted() {
-    this.attachedAction();
-  },
-  methods: {
-    attachedAction: function () {
-      //默认的首屏宽高,防止内容闪现
-      const systemInfo = uni.getSystemInfoSync();
-      this.systemInfo = {
-        width: systemInfo.windowWidth,
-        height: systemInfo.windowHeight,
-      };
-      this.loading = this.loadingAni.includes(this.loading)
-        ? this.loading
-        : "spin";
-    },
-  },
-};
-</script>
-
-<style>
-.box {
-  z-index: 1000;
-}
-.spinbox {
-  position: fixed;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  height: 100%;
-  width: 100%;
-  z-index: 10000;
-}
-
-.spin {
-  display: inline-block;
-  width: 64rpx;
-  height: 64rpx;
-}
-
-.spin:after {
-  content: " ";
-  display: block;
-  width: 46rpx;
-  height: 46rpx;
-  margin: 1rpx;
-  border-radius: 50%;
-  border: 5rpx solid #409eff;
-  border-color: #409eff transparent #409eff transparent;
-  animation: spin 1.2s linear infinite;
-}
-
-@keyframes spin {
-  0% {
-    transform: rotate(0deg);
-  }
-
-  100% {
-    transform: rotate(360deg);
-  }
-}
-
-.chiaroscuro {
-  width: 100%;
-  height: 100%;
-  background: rgb(194, 207, 214);
-  animation-duration: 2s;
-  animation-name: blink;
-  animation-iteration-count: infinite;
-}
-
-@keyframes blink {
-  0% {
-    opacity: 0.4;
-  }
-
-  50% {
-    opacity: 1;
-  }
-
-  100% {
-    opacity: 0.4;
-  }
-}
-
-@keyframes flush {
-  0% {
-    left: -100%;
-  }
-
-  50% {
-    left: 0;
-  }
-
-  100% {
-    left: 100%;
-  }
-}
-
-.shine {
-  animation: flush 2s linear infinite;
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  width: 100%;
-  background: linear-gradient(
-    to left,
-    rgba(255, 255, 255, 0) 0%,
-    rgba(255, 255, 255, 0.85) 50%,
-    rgba(255, 255, 255, 0) 100%
-  );
-}
-</style>

+ 0 - 295
pages/index/visualization/components/swiperBg.vue

@@ -1,295 +0,0 @@
-<template>
-	<view class="swiperBg" :style="{marginTop:mt +'rpx'}">
-		<view class="bag" v-if="isIframe || (imgUrls.length && isShow)">
-		</view>
-		<block v-if="isShow && imgUrls.length">
-			<view class="swiper square" v-if="imgUrls.length">
-				<swiper class="skeleton-rect" :style="'height:'+ (imageH) +'rpx;'" indicator-dots="true"
-					:autoplay="true" :circular="circular" :interval="interval" :duration="duration"
-					indicator-color="rgba(255,255,255,0.6)" indicator-active-color="#fff" :current="swiperCur"
-					@change="swiperChange">
-					<block v-for="(item,index) in imgUrls" :key="index">
-						<swiper-item class="" :class="{active:index == swiperCur}">
-							<view @click="goDetail(item)" class='slide-navigator acea-row row-between-wrapper'>
-								<image :src="item.img" class="slide-image" mode="widthFix"
-									:style="'height:'+ (imageH) +'rpx;'">
-								</image>
-							</view>
-						</swiper-item>
-					</block>
-
-				</swiper>
-			</view>
-		</block>
-		<block v-if="!isShow && isIframe && imgUrls.length && imageH">
-			<view class="swiper square" v-if="imgUrls.length && imageH" :style="'height:'+ (imageH) +'rpx;'">
-				<swiper :style="'height:'+ (imageH) +'rpx;'" indicator-dots="true" :autoplay="true" :circular="circular"
-					:interval="interval" :duration="duration" indicator-color="rgba(255,255,255,0.6)"
-					indicator-active-color="#fff">
-					<block v-for="(item,index) in imgUrls" :key="index">
-						<swiper-item>
-							<view @click="goDetail(item)" class='slide-navigator acea-row row-between-wrapper'>
-								<image :src="item.img" class="slide-image" mode="widthFix"
-									:style="'height:'+ (imageH) +'rpx;'">
-								</image>
-							</view>
-						</swiper-item>
-					</block>
-				</swiper>
-
-			</view>
-		</block>
-		<block v-if="isIframe && (!imgUrls.length || !imageH)">
-			<view class="empty-img">{{$t(`暂无图片,请上传图片`)}}</view>
-		</block>
-	</view>
-</template>
-
-<script>
-	let statusBarHeight = uni.getSystemInfoSync().statusBarHeight + 'px';
-	let app = getApp();
-	import {
-		goPage
-	} from '@/libs/order.js'
-	export default {
-		name: 'swiperBg',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			},
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.imgUrls = nVal.imgList ? nVal.imgList.list : [];
-						this.isShow = nVal.isShow ? nVal.isShow.val : true
-						uni.getImageInfo({
-							src: this.imgUrls.length ? this.imgUrls[0].img : '',
-							success: (res) => {
-								if (res && res.height > 0) {
-									this.$set(this, 'imageH',
-										res.height / res
-										.width * 690)
-								} else {
-									this.$set(this, 'imageH', 320);
-								}
-							},
-							fail: (error) => {
-								this.$set(this, 'imageH', 320);
-							}
-						})
-					}
-				}
-			},
-			imageH(nVal, oVal) {
-				let self = this
-			},
-		},
-		data() {
-			return {
-				indicatorDots: false,
-				circular: true,
-				autoplay: true,
-				interval: 4000,
-				duration: 500,
-				imgUrls: [], //图片轮播数据
-				name: this.$options.name,
-				isIframe: false,
-				mt: -55,
-				isShow: true,
-				imageH: 320,
-				swiperCur: 0,
-			};
-		},
-		created() {
-			// #ifdef MP || APP-PLUS
-			const res = uni.getSystemInfoSync()
-			const system = res.platform
-			this.statusBarHeight = res.statusBarHeight
-			if (system === 'android') {
-				this.mt = parseFloat(statusBarHeight) * 2 + 170
-			} else {
-				this.mt = parseFloat(statusBarHeight) * 2 + 168
-			}
-
-			// #endif
-			this.isIframe = app.globalData.isIframe;
-		},
-		mounted() {},
-		methods: {
-			goDetail(url) {
-				goPage().then(res => {
-					let urls = url.info[1].value
-					if (urls) {
-						if (urls.indexOf("http") != -1) {
-							// #ifdef H5
-							location.href = urls
-							// #endif
-						} else {
-							if (['/pages/goods_cate/goods_cate', '/pages/order_addcart/order_addcart',
-									'/pages/user/index'
-								].indexOf(urls) ==
-								-1) {
-								uni.navigateTo({
-									url: urls
-								})
-							} else {
-								uni.reLaunch({
-									url: urls
-								})
-							}
-						}
-					}
-				})
-			},
-			//替换安全域名
-			setDomain: function(url) {
-				url = url ? url.toString() : '';
-				//本地调试打开,生产请注销
-				if (url.indexOf("https://") > -1) return url;
-				else return url.replace('http://', 'https://');
-			},
-			swiperChange(e) {
-				// this.swiperCur = e.detail.current
-				let {
-					current,
-					source
-				} = e.detail
-				if (source === 'autoplay' || source === 'touch') {
-					//根据官方 source 来进行判断swiper的change事件是通过什么来触发的,autoplay是自动轮播。touch是用户手动滑动。其他的就是未知问题。抖动问题主要由于未知问题引起的,所以做了限制,只有在自动轮播和用户主动触发才去改变current值,达到规避了抖动bug
-					this.swiperCur = e.detail.current
-				}
-			},
-		}
-	}
-</script>
-
-<style lang="scss">
-	.swiperBg /deep/ .uni-swiper-slides {
-		overflow: hidden;
-		border-radius: 10rpx;
-	}
-
-	.swiperBg {
-		background-color: #fff;
-		position: relative;
-		margin-top: -20rpx;
-		padding-top: 4rpx;
-
-		.bag {
-			position: absolute;
-			top: 0;
-			width: 100%;
-			height: 140rpx;
-			background: linear-gradient(90deg, var(--view-main-start) 0%, var(--view-main-over) 100%);
-			border-bottom-left-radius: 40rpx;
-			border-bottom-right-radius: 40rpx;
-		}
-
-		/* #ifdef APP-PLUS */
-		/* #endif */
-		.colorBg {
-			position: absolute;
-			left: 0;
-			top: 0;
-			height: 130rpx;
-			width: 100%;
-		}
-
-		.swiper {
-			z-index: 100;
-			position: relative;
-			min-height: 200rpx;
-			padding: 0 $uni-index-margin-col;
-			/* #ifdef APP-PLUS */
-			// margin: 0rpx auto 0 auto;
-			/* #endif */
-			overflow: hidden;
-
-			/* #ifdef MP */
-			/* #endif */
-			/* 设置圆角 */
-			&.fillet {
-				border-radius: 10rpx;
-
-				image {
-					border-radius: 10rpx;
-				}
-			}
-
-			swiper,
-			.swiper-item,
-			image {
-				width: 100%;
-				overflow: hidden;
-				border-radius: 10rpx;
-			}
-
-			.slide-navigator {}
-
-			image {
-				transform: scale(1);
-				// transition: all .3s ease;
-			}
-
-			swiper-item.active {
-				image {
-					transform: scale(1);
-				}
-			}
-
-			// 圆形指示点
-			&.circular {
-				/deep/.uni-swiper-dot {
-					width: 10rpx !important;
-					height: 10rpx !important;
-					background: rgba(0, 0, 0, .4) !important
-				}
-
-				/deep/.uni-swiper-dot-active {
-					background: #fff !important
-				}
-			}
-
-			// 方形指示点
-			&.square {
-				/deep/.uni-swiper-dot {
-					width: 20rpx !important;
-					height: 5rpx !important;
-					border-radius: 3rpx;
-					background: rgba(0, 0, 0, .4) !important
-				}
-
-				/deep/.uni-swiper-dot-active {
-					background: #fff !important
-				}
-
-			}
-
-		}
-	}
-
-	.item-img image {
-		display: block;
-		width: 100%;
-		border-radius: 10rpx;
-	}
-
-	.empty-img {
-		width: 690rpx;
-		height: 300rpx;
-		border-radius: 14rpx;
-		margin: 26rpx auto 0 auto;
-		background-color: #ccc;
-		text-align: center;
-		line-height: 300rpx;
-		position: relative;
-
-		.iconfont {
-			font-size: 50rpx;
-		}
-	}
-</style>

+ 0 - 165
pages/index/visualization/components/tabBar.vue

@@ -1,165 +0,0 @@
-<template>
-	<view :style="colorStyle">
-		<view class="uni-tabbar acea-row row-around row-middle" v-if="isShow && tabbar.length && !isIframe">
-			<view class="uni-tabbar_item" v-for="(item,index) in tabbar" :key="index" @tap="changeTab(item)">
-				<view class="uni-tabbar_icon">
-					<image v-if="item.link == pagePath" mode="aspectFit" :src="item.imgList[0]"></image>
-					<image v-else mode="aspectFit" :src="item.imgList[1]"></image>
-				</view>
-				<view class="uni-tabbar_label" :class="{'active': item.link == pagePath}">
-					{{$t(item.name)}}
-				</view>
-			</view>
-		</view>
-		<view class="uni-tabbar acea-row row-around row-middle" v-if="isIframe && tabbar.length">
-			<view class="uni-tabbar_item" v-for="(item,index) in tabbar" :key="index" @tap="changeTab(item)">
-				<view class="uni-tabbar_icon">
-					<image v-if="item.link == pagePath" mode="aspectFit" :src="item.imgList[0]"></image>
-					<image v-else mode="aspectFit" :src="item.imgList[1]"></image>
-				</view>
-				<view class="uni-tabbar_label" :class="{'active': item.link == pagePath}">
-					{{$t(item.name)}}
-				</view>
-			</view>
-		</view>
-		<view v-if="isIframe && !tabbar.length" class="empty-img uni-tabbar acea-row row-around row-middle">{{$t(`暂无数据,请设置`)}}
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp();
-	import {
-		getDiy
-	} from '@/api/api.js';
-	import {
-		goPage
-	} from '@/libs/order.js'
-	import colors from '@/mixins/color.js';
-	export default {
-		name: 'tabBar',
-		props: {
-			pagePath: null,
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			},
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.isShow = nVal.isShow.val;
-					}
-				}
-			}
-		},
-		mixins: [colors],
-		data() {
-			return {
-				name: this.$options.name,
-				page: '/pages/index/index',
-				tabbar: this.$Cache.get('TAB_BAR') ? JSON.parse(this.$Cache.get('TAB_BAR')) : [],
-				isShow: true, //true前台显示
-				isIframe: app.globalData.isIframe //true后台显示
-			};
-		},
-		mounted() {
-			if (!this.tabbar.length) this.getDiyData()
-		},
-		methods: {
-			getDiyData() {
-				getDiy().then(res => {
-					const {
-						list
-					} = res.data.tabBar.default.tabBarList;
-					this.$Cache.set('TAB_BAR', list)
-					this.tabbar = list;
-				}).catch(err => {
-					uni.showToast({
-						title: err,
-						icon: 'none'
-					});
-				});
-			},
-			changeTab(item) {
-				goPage().then(res => {
-					this.page = item.link;
-					// 这里使用reLaunch关闭所有的页面,打开新的栏目页面
-					uni.switchTab({
-						url: this.page,
-						fail: () => {
-							uni.navigateTo({
-								url: this.page
-							})
-						}
-					});
-				})
-			},
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.borderShow {
-		position: fixed;
-	}
-
-	.borderShow .uni-tabbar::after {
-		content: ' ';
-		position: absolute;
-		left: 0;
-		top: 0;
-		width: 100%;
-		height: 100%;
-		border: 1px dashed #007AFF;
-		box-sizing: border-box;
-	}
-
-	.uni-tabbar {
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		z-index: 999;
-		width: 100%;
-		height: 98rpx;
-		height: calc(98rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
-		height: calc(98rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
-		padding-bottom: calc(constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
-		padding-bottom: calc(env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
-		box-sizing: border-box;
-		border-top: solid 1rpx #F3F3F3;
-		background-color: #fff;
-		box-shadow: 0px 0px 17rpx 1rpx rgba(206, 206, 206, 0.32);
-		display: flex;
-		flex-wrap: nowrap;
-
-		.uni-tabbar_item {
-			width: 100%;
-			font-size: 20rpx;
-			text-align: center;
-		}
-
-		.uni-tabbar_icon {
-			height: 50rpx;
-			width: 50rpx;
-			text-align: center;
-			margin: 0 auto;
-
-			image {
-				width: 100%;
-				height: 100%;
-			}
-		}
-
-		.uni-tabbar_label {
-			font-size: 24rpx;
-			color: rgb(40, 40, 40);
-
-			&.active {
-				color: var(--view-theme);
-			}
-		}
-	}
-</style>

+ 0 - 245
pages/index/visualization/components/tabNav.vue

@@ -1,245 +0,0 @@
-<template>
-	<view>
-		<view v-if="isShow && tabTitle.length">
-			<!-- #ifdef MP -->
-			<view style="visibility: hidden;" :style="{ height: navHeight + 'px' }" v-if="isFixed"></view>
-			<!-- #endif -->
-			<view class="navTabBox" :style="'color:'+txtColor+';'" :class="{isFixed:isFixed}">
-				<view class="longTab">
-					<scroll-view scroll-x="true" style="white-space: nowrap; display: flex;  align-items: center; height: 50rpx;" scroll-with-animation
-						:scroll-left="tabLeft" show-scrollbar="true">
-						<view :url="'/pages/goods/goods_list/index?cid='+item.id+'&title='+item.cate_name" class="longItem"
-							:style='"width:"+"max-content"' :data-index="index" :class="index===tabClick?'click':''"
-							v-for="(item,index) in tabTitle" :key="index" :id="'id'+index"
-							@click="longClick(item,index)">
-							{{$t(item.cate_name)}}
-						</view>
-						<!-- 		<view class="underlineBox" :style='"transform:translateX("+isLeft+"px);width:"+isWidth+"px"'>
-							<view class="underline"></view>
-						</view> -->
-					</scroll-view>
-				</view>
-			</view>
-		</view>
-		<view v-if="!isShow && tabTitle.length && isIframe">
-			<!-- #ifdef MP -->
-			<view style="visibility: hidden;" :style="{ height: navHeight + 'px' }" v-if="isFixed"></view>
-			<!-- #endif -->
-			<view class="navTabBox" :style="'color:'+txtColor+';top:'+isTop" :class="{isFixed:isFixed}">
-				<view class="longTab">
-					<scroll-view scroll-x="true" style="white-space: nowrap; display: flex; align-items: center;" scroll-with-animation
-						:scroll-left="tabLeft" show-scrollbar="true">
-						
-						<view :url="'/pages/goods/goods_list/index?cid='+item.id+'&title='+item.cate_name" class="longItem"
-							:style='"width:"+isWidth+"px"' :data-index="index" :class="index===tabClick?'click':''"
-							v-for="(item,index) in tabTitle" :key="index" :id="'id'+index"
-							@click="longClick(item,index)">
-							{{$t(item.cate_name)}}
-						</view>
-						<view class="underlineBox" :style='"transform:translateX("+isLeft+"px);width:"+isWidth+"px"'>
-							<view class="underline"></view>
-						</view>
-					</scroll-view>
-				</view>
-			</view>
-		</view>
-		<view class='index-wrapper' v-else-if="isIframe && !tabTitle.length">
-			<view class='scroll-product'>
-				<view class="empty-img">{{$t(`暂无数据,请先添加分类`)}}</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp()
-	import {
-		getCategoryList
-	} from '@/api/store.js';
-	export default {
-		name: 'tabNav',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			},
-			isFixed: {
-				type: Boolean | String | Number,
-				default: false
-			}
-		},
-		data() {
-			return {
-				tabTitle: [],
-				isIframe: app.globalData.isIframe,
-				tabLeft: 0,
-				isWidth: 0, //每个导航栏占位
-				tabClick: 0, //导航栏被点击
-				isLeft: 0, //导航栏下划线位置
-				bgColor: '',
-				// #ifdef H5
-				mbConfig: 0,
-				// #endif
-				// #ifdef MP
-				mbConfig: 45,
-				// #endif
-				txtColor: '#333333',
-				fixedTop: 0,
-				isTop: 0,
-				navHeight: 0,
-				isShow: true
-			};
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.isShow = nVal.isShow.val;
-					}
-				}
-			}
-		},
-		created() {
-			let that = this;
-			that.getAllCategory();
-			// 获取设备宽度
-			uni.getSystemInfo({
-				success(e) {
-					that.isWidth = 100
-				}
-			})
-		},
-		methods: {
-			// 导航栏点击
-			longClick(item, index) {
-				if (this.tabTitle.length > 4) {
-					this.tabLeft = (index - 2) * this.isWidth //设置下划线位置
-				}
-				this.tabClick = index //设置导航点击了哪一个
-				this.isLeft = index * this.isWidth //设置下划线位置
-
-				this.$emit('bindSortId', item.id)
-				// setTimeout(e => {
-				// 	uni.pageScrollTo({
-				// 		scrollTop: this.domOffsetTop - 130,
-				// 		duration: 300
-				// 	})
-				// }, 1000)
-			},
-			// 获取导航
-			getAllCategory: function() {
-				let that = this;
-				getCategoryList().then(res => {
-					// res.data.unshift({
-					// 	"id": -99,
-					// 	'cate_name': '精选'
-					// })
-					this.$emit('bindSortId', res.data[0].id)
-					that.tabTitle = res.data;
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.navTabBox {
-		// width: 100%;
-		// background: linear-gradient(90deg, $bg-star 50%, $bg-end 100%);
-		color: #E93323;
-		padding: 0 30rpx;
-		
-		
-		// &.isFixed {
-		// 	z-index: 10000;
-		// 	position: fixed;
-			
-		// 	// left: 0;
-		// 	top: 0;
-		// 	// left: 0;
-		// 	background-color: #fff;
-		// 	// // background: linear-gradient(90deg, var(--view-main-start) 0%, var(--view-main-over) 100%);
-		// 	// color: #333 !important;
-		// 	// width: 100%;
-
-		// 	// /* #ifdef H5 */
-		// 	// padding-top: 20rpx;
-		// 	// top: 0;
-		// 	// /* #endif */
-
-		// }
-
-		.longTab {
-			width: 100%;
-
-			.longItem {
-				height: 50rpx;
-				display: inline-block;
-				line-height: 50rpx;
-				text-align: center;
-				font-size: 34rpx;
-				overflow: hidden;
-				text-overflow: ellipsis;
-				white-space: nowrap;
-				margin-right: 40rpx;
-
-				&.click {
-					font-size: 36rpx;
-					font-weight: bold;
-					color: var(--view-theme);
-				}
-			}
-
-			.underlineBox {
-				height: 3px;
-				width: 20%;
-				display: flex;
-				align-content: center;
-				justify-content: center;
-				transition: .5s;
-
-				.underline {
-					width: 33rpx;
-					height: 4rpx;
-					background-color: #E93323;
-				}
-			}
-		}
-	}
-
-	.empty-img {
-		width: 690rpx;
-		height: 200rpx;
-		border-radius: 14rpx;
-		margin: 26rpx auto 0 auto;
-		background-color: #ccc;
-		text-align: center;
-		line-height: 200rpx;
-
-		.iconfont {
-			font-size: 50rpx;
-		}
-	}
-	.sticky-box {
-		/* #ifdef APP-PLUS || MP */
-		display: flex;
-		position: -webkit-sticky;
-		/* #endif */
-		position: sticky;
-		z-index: 998;
-		flex-direction: row;
-		margin: 0px;
-		background: #f5f5f5;
-		padding: 10rpx 0;
-		/* #ifdef MP || APP-PLUS*/
-		//top: 110rpx;
-		/* #endif */
-		// overflow-x: scroll;
-		/deep/ .uni-scroll-view-content{
-			display: flex;
-			align-items: center;
-			width: max-content;
-		}
-	}
-</style>

+ 0 - 105
pages/index/visualization/components/titles.vue

@@ -1,105 +0,0 @@
-<template>
-	<view class="index-wrapper" :class="{'off': sty ==='off'}">
-		<view class='titles' v-if="isIframe && !titleConfig.length">{{$t(`暂无标题`)}}</view>
-		<view class='title acea-row row-between-wrapper' v-if="isShow && titleConfig.length && !isIframe">
-			<view class='text'>
-				<view class='name line1'>{{titleConfig[0].val}}</view>
-				<view class='line1 txt-btn'>{{$t(`诚意推荐品质商品`)}}</view>
-			</view>
-			<navigator hover-class="none" :url="titleConfig[1].val" class='more'>
-				{{$t(`更多`)}}
-				<text class='iconfont icon-jiantou'></text>
-			</navigator>
-		</view>
-		<view class='title acea-row row-between-wrapper' v-if="isIframe && titleConfig.length">
-			<view class='text'>
-				<view class='name line1'>{{titleConfig[0].val}}</view>
-				<view class='line1 txt-btn'>{{$t(`诚意推荐品质商品`)}}</view>
-			</view>
-			<view class='more'>
-				{{$t(`更多`)}}
-				<text class='iconfont icon-jiantou'></text>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	let app = getApp()
-	export default {
-		name: 'titles',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			},
-			sty: {
-				type: String,
-				default: 'on'
-			}
-		},
-		watch: {
-			dataConfig: {
-				immediate: true,
-				handler(nVal, oVal) {
-					if (nVal) {
-						this.titleConfig = nVal.titleInfo.list;
-						this.isShow = nVal.isShow.val;
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				titleConfig: {},
-				name: this.$options.name,
-				isIframe: false,
-				isShow: true
-			};
-		},
-		created() {
-			this.isIframe = app.globalData.isIframe;
-		},
-		mounted() {},
-		methods: {}
-	}
-</script>
-
-<style lang="scss">
-	.titles {
-		font-size: 35rpx;
-		color: #282828;
-		text-align: center;
-		width: 100%;
-	}
-
-	.title {
-		padding: 30rpx 0;
-
-		.text {
-			display: flex;
-			.name{
-				font-size: 32rpx;
-				font-weight: bold;
-			}
-			.txt-btn {
-				display: flex;
-				align-items: flex-end;
-				margin-bottom: 6rpx;
-				margin-left: 12rpx;
-			}
-
-		}
-	}
-
-	.index-wrapper {
-		background-color: $uni-bg-color;
-		margin: $uni-index-margin-row $uni-index-margin-col;
-		border-radius: $uni-border-radius-index;
-	}
-
-	.off {
-		border-radius: $uni-border-radius-index $uni-border-radius-index 0 0 !important;
-		margin-bottom: 0 !important;
-	}
-</style>

+ 0 - 922
pages/index/visualization/index.vue

@@ -1,922 +0,0 @@
-<template>
-	<view id="pageIndex" :style="colorStyle">
-		<!-- <skeleton v-if="!isIframe" :show="showSkeleton" :isNodes="isNodes" ref="skeleton" loading="chiaroscuro"
-			selector="skeleton" bgcolor="#FFF"></skeleton> -->
-		<skeletons :show="showSkeleton" loading="chiaroscuro" bgcolor="#FFF"></skeletons>
-		<!-- #ifdef H5 -->
-		<view class="followMe" v-if="$wechat.isWeixin()">
-			<view class="follow acea-row row-between-wrapper" v-if="followHid && followUrl && !subscribe">
-				<view>{{$t(`点击“立即关注”即可关注公众号`)}}</view>
-				<view class="acea-row row-middle">
-					<view class="bnt" @click="followTap">{{$t(`立即关注`)}}</view>
-					<span class="iconfont icon-guanbi" @click="closeFollow"></span>
-				</view>
-			</view>
-			<view class="followCode" v-if="followCode">
-				<view class="pictrue"><img :src="followUrl" /></view>
-				<view class="mask" @click="closeFollowCode"></view>
-			</view>
-		</view>
-		<!-- #endif -->
-		<!-- #ifdef MP -->
-		<view class="indexTip" :style="'top:' + (navH + 50) + 'px'" :hidden="iShidden">
-			<view class="tip acea-row row-between-wrapper">
-				<view class="text">{{$t(`点击`)}}“<image src="/static/images/spot.png"></image>”{{$t(`添加到我的小程序, 微信首页下拉即可访问商城。`)}}</view>
-				<view class="iconfont icon-guanbi1" @click="closeTip"></view>
-			</view>
-		</view>
-		<!-- #endif -->
-		<!-- 顶部搜索 -->
-		<view class="skeleton" id="pageIndexs" :style="{ visibility: showSkeleton ? 'hidden' : 'visible' }">
-			<headerSerch class="mp-header skeleton" :dataConfig="headerSerch.default"
-				@click.native="bindEdit('headerSerch', 'default')"></headerSerch>
-			<!-- 轮播 -->
-			<swiperBg :dataConfig="swiperBg.default" @click.native="bindEdit('swiperBg', 'default')"></swiperBg>
-			<!-- 金刚区 -->
-			<menus :dataConfig="menus.default" @click.native="bindEdit('menus', 'default')"></menus>
-			<!-- 新闻简报 -->
-			<news :dataConfig="news.default" @click.native="bindEdit('news', 'default')"></news>
-			<!-- 活动魔方 -->
-			<activity :dataConfig="activity.default" @click.native="bindEdit('activity', 'default')"></activity>
-			<!-- 		<seckill :dataConfig="seckill.default" @click.native="bindEdit('seckill','default')"></seckill>
-			<adsRecommend :dataConfig="adsRecommend.default" @click.native="bindEdit('adsRecommend','default')"></adsRecommend>
-			<combination :dataConfig="combination.default" @click.native="bindEdit('combination','default')"></combination>
-			<bargain :dataConfig="bargain.default" @click.native="bindEdit('bargain','default')"></bargain>
-			<picTxt :dataConfig="picTxt.default" @click.native="bindEdit('picTxt','default')"></picTxt>	 -->
-			<alive :dataConfig="alive.default" @click.native="bindEdit('alive', 'default')"></alive>
-			<!-- 优惠券 -->
-			<coupon :dataConfig="coupon.default" @click.native="bindEdit('coupon', 'default')"></coupon>
-			<!-- 快速选择 -->
-			<scrollBox :dataConfig="scrollBox.default" @click.native="bindEdit('scrollBox', 'default')"></scrollBox>
-			<!-- 促销精品 -->
-			<recommend :dataConfig="goodList.aa" @click.native="bindEdit('goodList', 'aa')"></recommend>
-			<!-- 排行榜 -->
-			<popular :dataConfig="goodList.bb" @click.native="bindEdit('goodList', 'bb')"></popular>
-			<!-- 商品轮播 -->
-			<mBanner :dataConfig="swiperBg.aa" @click.native="bindEdit('swiperBg', 'aa')"></mBanner>
-			<!-- 首发新品 -->
-			<newGoods :dataConfig="goodList.cc" @click.native="bindEdit('goodList', 'cc')"></newGoods>
-			<!-- 精品推荐 -->
-			<!-- <mBanner :dataConfig="swiperBg.cc" @click.native="bindEdit('swiperBg','cc')"></mBanner> -->
-
-			<!-- <titles :dataConfig="titles.default" :sty="'off'" @click.native="bindEdit('titles','default')"></titles> -->
-			<!-- 商品轮播 -->
-
-			<!-- 		<customerService :dataConfig="customerService.default" @click.native="bindEdit('customerService','default')"></customerService> -->
-			<!-- 促销单品 -->
-			<promotion :dataConfig="goodList.dd" @click.native="bindEdit('goodList', 'dd')"></promotion>
-			<!-- 商品分类 -->
-			<tabNav class="sticky-box" :style="'top:' + isTop + 'px;'" :dataConfig="tabNav.default"
-				@click.native="bindEdit('tabNav', 'default')" @bindSortId="bindSortId" @bindHeight="bindHeighta">
-			</tabNav>
-			<!-- 商品列表 -->
-			<indexGoods v-if="!isIframe && tabNav.default && tabNav.default.isShow.val" :dataLists="goodLists"
-				@click.native="bindEdit('List')"></indexGoods>
-			<!-- <recommend :dataConfig="goodList.aa" @click.native="bindEdit('goodList','aa')"></recommend> -->
-			<Loading class="loading-sty" :loaded="loaded" :loading="loading"></Loading>
-			<view class="" v-if="
-          !isIframe &&
-          tabNav.default &&
-          tabNav.default.isShow.val &&
-          goodLists.length == 0 &&
-          !loading
-        ">
-				<view class='emptyBox'>
-					<image :src="imgHost + '/statics/images/no-thing.png'"></image>
-					<view class="tips">{{$t(`暂无商品,去看点别的吧`)}}</view>
-				</view>
-			</view>
-		</view>
-
-		<tabBar :dataConfig="tabBar.default" :pagePath="'/pages/index/index'"
-			@click.native="bindEdit('tabBar', 'default')"></tabBar>
-		<!-- #ifdef H5 -->
-		<view v-if="site_config && !isIframe" class="site-config" @click="goICP">{{site_config}}</view>
-		<!-- #endif -->
-		<view class="uni-p-b-98"></view>
-		<couponWindow style="position: relative; z-index: 10000" :window="isCouponShow" @onColse="couponClose"
-			:couponImage="couponObj.image" :couponList="couponObj.list"></couponWindow>
-		<!-- #ifdef APP-PLUS -->
-		<app-update v-if="!privacyStatus" ref="appUpdate" :force="true" :tabbar="false"></app-update>
-		<view class="privacy-wrapper" v-if="privacyStatus">
-			<view class="privacy-box">
-				<view class="title">{{$t(`服务协议与隐私政策`)}}</view>
-				<view class="content">
-					{{$t(`请务必审慎阅读、充分理解“服务协议与 隐私政策”各条款,包括但不限于:为了 向你提供即时通讯、内容分享等服务,我 们需要收集你的设备信息、操作日志等个 人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。`)}}<br>
-					{{$t(`你可以阅读`)}}<navigator url="/pages/users/privacy/index?type=3">{{$t(`《服务协议与隐私政策》`)}}</navigator>{{$t(`了解详细信息。如你同意,请点击“我同意”开始接受我们的服务。`)}}
-				</view>
-				<view class="btn-box">
-					<view class="btn-item" @click="confirmApp">{{$t(`我同意`)}}</view>
-					<view class="btn" @click="closeModel">{{$t(`残忍拒绝`)}}</view>
-				</view>
-			</view>
-		</view>
-		<!-- #endif -->
-	</view>
-</template>
-<script>
-	import couponWindow from "@/components/couponWindow/index";
-	import indexGoods from "@/components/indexGoods/index";
-	import headerSerch from "./components/headerSerch";
-	import swiperBg from "./components/swiperBg";
-	import menus from "./components/menus";
-	import news from "./components/news";
-	import activity from "./components/activity";
-	import scrollBox from "./components/scrollBox";
-	import recommend from "./components/recommend";
-	import popular from "./components/popular";
-	import mBanner from "./components/mBanner";
-	import newGoods from "./components/newGoods";
-	import promotion from "./components/promotion";
-	import alive from "./components/alive";
-	import adsRecommend from "./components/adsRecommend";
-	import coupon from "./components/coupon";
-	import seckill from "./components/seckill";
-	import combination from "./components/combination";
-	import bargain from "./components/bargain";
-	import goodList from "./components/goodList";
-	import picTxt from "./components/picTxt";
-	import titles from "./components/titles";
-	import customerService from "./components/customerService";
-	import tabBar from "./components/tabBar";
-	import tabNav from "./components/tabNav";
-	import appUpdate from "@/components/update/app-update.vue";
-	import Loading from "@/components/Loading/index.vue";
-	import {
-		getShare,
-		follow
-	} from "@/api/public.js";
-	// #ifdef MP || APP-PLUS
-	import {
-		SUBSCRIBE_MESSAGE,
-		TIPS_KEY
-	} from "@/config/cache";
-	// #endif
-	import {
-		getTempIds,
-		siteConfig
-	} from "@/api/api.js";
-	import {
-		mapGetters
-	} from "vuex";
-	import {
-		getDiy,
-		getIndexData,
-		getCouponV2,
-		getCouponNewUser,
-	} from "@/api/api.js";
-	import {
-		getGroomList,
-		getCategoryList,
-		getProductslist,
-		getProductHot,
-	} from "@/api/store.js";
-	import {
-		goShopDetail,
-		goPage
-	} from "@/libs/order.js";
-	import {
-		toLogin
-	} from "@/libs/login.js";
-	import {HTTP_REQUEST_URL} from '@/config/app';
-	import colors from "@/mixins/color";
-	import skeletons from "./components/skeleton.vue";
-	let app = getApp();
-	let statusBarHeight = uni.getSystemInfoSync().statusBarHeight;
-	export default {
-		computed: mapGetters(["isLogin", "uid"]),
-		components: {
-			couponWindow,
-			headerSerch,
-			swiperBg,
-			menus,
-			news,
-			activity,
-			scrollBox,
-			recommend,
-			popular,
-			mBanner,
-			newGoods,
-			promotion,
-			alive,
-			adsRecommend,
-			coupon,
-			seckill,
-			combination,
-			bargain,
-			goodList,
-			picTxt,
-			titles,
-			customerService,
-			tabBar,
-			tabNav,
-			Loading,
-			skeletons,
-			indexGoods,
-			appUpdate, //APP更新
-		},
-		mixins: [colors],
-		data() {
-			return {
-				imgHost:HTTP_REQUEST_URL,
-				showSkeleton: true, //骨架屏显示隐藏
-				isNodes: 0, //控制什么时候开始抓取元素节点,只要数值改变就重新抓取
-				isSortType: 0,
-				sortList: {},
-				sortAll: [],
-				goodPage: 1,
-				goodLists: [],
-				curSort: 0,
-				sortMpTop: 0,
-				loaded: false,
-				hostProduct: [],
-				hotScroll: false,
-				hotPage: 1,
-				hotLimit: 10,
-				followHid: true,
-				followUrl: "",
-				followCode: false,
-				navH: statusBarHeight,
-				subscribe: false,
-				iShidden: false,
-				goodType: 3,
-				loading: false,
-				loadend: false,
-				loadTitle: this.$t(`下拉加载更多`), //提示语
-				page: 1,
-				limit: this.$config.LIMIT,
-				numConfig: 0,
-				couponObj: {},
-				isCouponShow: false,
-				shareInfo: {},
-				site_config: "",
-				isIframe: app.globalData.isIframe,
-				headerSerch: {}, //头部搜索
-				swiperBg: {}, //轮播
-				menus: {}, //导航
-				news: {}, //消息公告
-				activity: {}, //活动魔方
-				alive: {},
-				scrollBox: {}, //快速选择分类
-				titles: {}, //标题
-				goodList: {}, //商品列表(商品列表、首发新品、热门榜单、促销单品、精品推荐)
-				tabBar: {}, //导航
-				customerService: {}, //客服
-				picTxt: {}, //图文详情
-				bargain: {}, //砍价
-				combination: {}, //拼团
-				adsRecommend: {}, //广告位
-				seckill: {}, //秒杀
-				coupon: {}, //优惠券
-				tabNav: {}, //分类tab
-				isBorader: "",
-				domOffsetTop: 50,
-				isTop: 0,
-				privacyStatus: false, // 隐私政策是否同意过
-				isFixed: false,
-			};
-		},
-		created() {
-			uni.hideTabBar();
-			// #ifdef APP-PLUS
-			uni.setStorageSync("privacyStatus", true);
-			// try {
-			// 	let val = uni.getStorageSync("privacyStatus") || false;
-			// 	if (!val) {
-			// 		this.privacyStatus = true;
-			// 	}
-			// } catch (e) {}
-			// this.$nextTick(() => {
-			// 	// this.$refs.appUpdate.update(); //调用子组件 检查更新
-			// });
-			// #endif
-			let that = this;
-			// #ifdef H5
-			if (app.globalData.isIframe) {
-				this.showSkeleton = false;
-				setTimeout(() => {
-					let active;
-					document.getElementById("pageIndexs").children.forEach((dom) => {
-						dom.addEventListener("click", (e) => {
-							e.stopPropagation();
-							e.preventDefault();
-							if (dom === active) return;
-							dom.classList.add("borderShow");
-							active && active.classList.remove("borderShow");
-							active = dom;
-						});
-					});
-				}, 1000);
-			}
-			if (app.globalData.isIframe) {
-				uni.hideTabBar();
-			}
-			this.getFollow();
-			// #endif
-			this.diyData();
-			this.getIndexData();
-			// #ifdef MP
-			if (this.$Cache.get(TIPS_KEY)) this.iShidden = true;
-			this.getTempIds();
-			// #endif
-			siteConfig()
-				.then((res) => {
-					this.site_config = res.data.record_No;
-				})
-				.catch((err) => {
-					return this.$util.Tips({
-						title: err.msg,
-					});
-				});
-			// #ifdef APP-PLUS
-			this.isTop = uni.getSystemInfoSync().statusBarHeight + 85;
-			// #endif
-			// #ifdef MP
-			const query = uni.createSelectorQuery().in(this);
-			query.select('.mp-header').boundingClientRect(data => {
-				this.isTop = data.top;
-			}).exec();
-			// #endif
-			// #ifdef H5
-			this.isTop = 0;
-			// #endif
-			if (!app.globalData.isIframe) {
-				if (this.isLogin) {
-					this.getCoupon();
-				}
-			}
-		},
-		methods: {
-			// #ifdef APP-PLUS
-			// 同意隐私协议
-			confirmApp() {
-				uni.setStorageSync("privacyStatus", true);
-				this.privacyStatus = false;
-			},
-			// 关闭Model
-			closeModel() {
-				//退出app
-				uni.getSystemInfo({
-					success: function(res) {
-						// 判断为安卓的手机
-						if (res.platform == "android") {
-							// 安卓退出app
-							plus.runtime.quit();
-						} else {
-							// 判断为ios的手机,退出App
-							plus.ios
-								.import("UIApplication")
-								.sharedApplication()
-								.performSelector("exit");
-						}
-					},
-				});
-			},
-			// #endif
-			bindEdit(name, dataName) {
-				if (app.globalData.isIframe) {
-					window.parent.postMessage({
-							name: name,
-							dataName: dataName,
-							params: {},
-						},
-						"*"
-					);
-					return;
-				}
-			},
-			getFollow() {
-				follow()
-					.then((res) => {
-						this.followUrl = res.data.path;
-					})
-					.catch((err) => {
-						return this.$util.Tips({
-							title: err.msg,
-						});
-					});
-			},
-			followTap() {
-				this.followCode = true;
-				this.followHid = false;
-			},
-			closeFollow() {
-				this.followHid = false;
-			},
-			closeFollowCode() {
-				this.followCode = false;
-				this.followHid = true;
-			},
-			closeTip: function() {
-				this.$Cache.set(TIPS_KEY, true);
-				this.iShidden = true;
-			},
-			bindHeighta(data) {
-				// #ifdef APP-PLUS
-				this.sortMpTop = data.top + data.height;
-				// #endif
-				// #ifdef H5
-				this.domOffsetTop = data.top;
-				// #endif
-				// #ifndef H5
-				this.domOffsetTop = data.top - 110;
-				// #endif
-				console.log(this.domOffsetTop);
-			},
-			// 优惠券弹窗
-			getCoupon() {
-				const tagDate = uni.getStorageSync("tagDate") || "",
-					nowDate = new Date().toLocaleDateString();
-				if (tagDate === nowDate) {
-					this.getNewCoupon();
-				} else {
-					getCouponV2().then((res) => {
-						const {
-							data
-						} = res;
-						console.log(res)
-						if (data.list.length) {
-							this.isCouponShow = true;
-							this.couponObj = data;
-							uni.setStorageSync("tagDate", new Date().toLocaleDateString());
-						} else {
-							this.getNewCoupon();
-						}
-					});
-				}
-			},
-			// 新用户优惠券
-			getNewCoupon() {
-				const oldUser = uni.getStorageSync("oldUser") || 0;
-				if (!oldUser) {
-					getCouponNewUser().then((res) => {
-						const {
-							data
-						} = res;
-						if (data.show) {
-							if (data.list.length) {
-								this.isCouponShow = true;
-								this.couponObj = data;
-								uni.setStorageSync("oldUser", 1);
-							}
-						} else {
-							uni.setStorageSync("oldUser", 1);
-						}
-					});
-				}
-			},
-			// 优惠券弹窗关闭
-			couponClose() {
-				this.isCouponShow = false;
-				if (!uni.getStorageSync("oldUser")) {
-					this.getNewCoupon();
-				}
-			},
-			// 授权关闭
-			// authColse: function(e) {
-			// 	this.isShowAuth = e;
-			// },
-			// #ifdef MP
-			getTempIds() {
-				let messageTmplIds = wx.getStorageSync(SUBSCRIBE_MESSAGE);
-				if (!messageTmplIds) {
-					getTempIds().then((res) => {
-						if (res.data)
-							wx.setStorageSync(SUBSCRIBE_MESSAGE, JSON.stringify(res.data));
-					});
-				}
-			},
-			// #endif
-			goICP() {
-				// #ifdef H5
-				window.open("http://beian.miit.gov.cn/");
-				// #endif
-				// #ifdef MP
-				uni.navigateTo({
-					url: `/pages/annex/web_view/index?url=https://beian.miit.gov.cn/`,
-				});
-				// #endif
-			},
-			onLoadFun() {},
-			diyData() {
-				let that = this;
-				getDiy().then((res) => {
-					let data = res.data;
-					that.headerSerch = data.headerSerch;
-					that.swiperBg = data.swiperBg;
-					that.menus = data.menus;
-					that.news = data.news;
-					that.activity = data.activity;
-					that.alive = data.alive;
-					that.scrollBox = data.scrollBox;
-					that.titles = data.titles;
-					that.goodList = data.goodList;
-					that.tabNav = data.tabNav;
-					that.tabBar = data.tabBar;
-					that.customerService = data.customerService;
-					that.picTxt = data.picTxt;
-					that.bargain = data.bargain;
-					that.combination = data.combination;
-					that.adsRecommend = data.adsRecommend;
-					that.seckill = data.seckill;
-					that.coupon = data.coupon;
-					this.$Cache.set("TAB_BAR", data.tabBar.default.tabBarList);
-					setTimeout(() => {
-						this.showSkeleton = false;
-					}, 300);
-				});
-			},
-			getIndexData() {
-				getIndexData().then((res) => {
-					this.subscribe = res.data.subscribe;
-					// #ifdef H5
-					localStorage.setItem("itemName", res.data.site_name);
-					// #endif
-					uni.setNavigationBarTitle({
-						title: res.data.site_name,
-					});
-				});
-			},
-			/**
-			 * 获取我的推荐
-			 */
-			get_host_product: function() {
-				let that = this;
-				if (that.hotScroll) return;
-				getProductHot(that.hotPage, that.hotLimit).then((res) => {
-					that.hotPage++;
-					that.hotScroll = res.data.length < that.hotLimit;
-					that.hostProduct = that.hostProduct.concat(res.data);
-					// that.$set(that, 'hostProduct', res.data)
-				});
-			},
-			// 获取分类id
-			bindSortId(data) {
-				this.isSortType = data == -99 ? 0 : 1;
-				// this.goodLists = [];
-				this.getProductList(data);
-			},
-			getProductList(data) {
-				let tempObj = "";
-				this.curSort = 0;
-				this.loaded = false;
-				this.goodPage = 1;
-				this.getGoodsList(data);
-			},
-			getGoodsList(data) {
-				if (this.loading || this.loaded) return;
-				this.loading = true;
-				getProductslist({
-					keyword: "",
-					priceOrder: "",
-					salesOrder: "",
-					news: 0,
-					page: this.goodPage,
-					limit: 10,
-					cid: data,
-				}).then((res) => {
-					this.goodLists = res.data;
-					this.loading = false;
-					this.loaded = res.data.length < 10;
-					this.goodPage++;
-				});
-			},
-			goGoodsDetail(item) {
-				goPage().then((res) => {
-					goShopDetail(item, this.uid).then((res) => {
-						uni.navigateTo({
-							url: `/pages/goods_details/index?id=${item.id}`,
-						});
-					});
-				});
-			},
-		},
-		onReachBottom: function() {
-			// if (this.isSortType == 0) {
-			// 	// this.getGroomList();
-			// } else {
-			// 	this.getGoodsList();
-			// }
-		},
-		onPageScroll(e) {
-			// if (this.headerSerch.default.isShow.val) {
-			//   // if (this.domOffsetTop == 50) return
-			//   if (e.scrollTop > this.isTop) {
-			//     this.isFixed = true;
-			//   }
-			//   if (e.scrollTop < this.isTop) {
-			//     this.$nextTick(() => {
-			//       this.isFixed = false;
-			//     });
-			//   }
-			// } else {
-			//   this.isFixed = false;
-			// }
-		},
-	};
-</script>
-<style lang="scss" scoped>
-	page {
-		// background: linear-gradient(180deg, #fff, #fff 20%, #f5f5f5);
-		// overflow-x: hidden;
-		// overflow-y: scroll;
-		// height: max-content;
-	}
-
-	.bac-col {
-		width: 100%;
-		height: 300rpx;
-		position: absolute;
-		background-image: linear-gradient(135deg, #f97794 10%, #623aa2 100%);
-		top: 0;
-		background: linear-gradient(90deg, #f62c2c 0%, #f96e29 100%);
-	}
-
-	.swiperCon {
-		margin: 20rpx 0 !important;
-
-		/* #ifdef MP */
-		/deep/.swiperBg {
-			margin: 20rpx 0 !important;
-		}
-
-		/* #endif */
-		/deep/.swiper {
-			swiper,
-			.swiper-item,
-			image {
-				height: 190rpx !important;
-			}
-		}
-	}
-
-	.site-config {
-		margin: 40rpx 0;
-		font-size: 24rpx;
-		text-align: center;
-		color: #666;
-
-		&.fixed {
-			position: fixed;
-			bottom: 69px;
-			left: 0;
-			width: 100%;
-		}
-	}
-
-	/* #ifdef MP */
-	.indexTip {
-		position: fixed;
-		right: 42rpx;
-		z-index: 10000;
-
-		.tip {
-			width: 400rpx;
-			border-radius: 6rpx;
-			background-color: #fff;
-			padding: 15rpx 22rpx;
-			position: relative;
-
-			&::before {
-				content: "";
-				width: 0;
-				height: 0;
-				border-left: 15rpx solid transparent;
-				border-right: 15rpx solid transparent;
-				border-bottom: 17rpx solid #fff;
-				position: absolute;
-				top: -14rpx;
-				right: 95rpx;
-			}
-		}
-
-		.text {
-			font-size: 22rpx;
-			color: #333;
-			width: 320rpx;
-
-			image {
-				width: 30rpx;
-				height: 16rpx;
-				display: inline-block;
-			}
-		}
-
-		.iconfont {
-			color: #cdcdcd;
-			font-size: 32rpx;
-		}
-	}
-
-	/* #endif */
-
-	/* #ifdef H5 */
-	.follow {
-		position: fixed;
-		top: 0;
-		left: 0;
-		width: 100%;
-		background-color: rgba(0, 0, 0, 0.36);
-		height: 80rpx;
-		font-size: 28rpx;
-		color: #fff;
-		padding: 0 30rpx;
-		z-index: 100000;
-
-		.iconfont {
-			font-size: 30rpx;
-			margin-left: 29rpx;
-		}
-
-		.bnt {
-			width: 160rpx;
-			height: 50rpx;
-			background-color: #e93323;
-			border-radius: 25rpx;
-			font-size: 24rpx;
-			text-align: center;
-			line-height: 50rpx;
-		}
-	}
-
-	.followCode {
-		.mask {
-			z-index: 10000;
-		}
-
-		.pictrue {
-			width: 500rpx;
-			height: 720rpx;
-			border-radius: 12px;
-			left: 50%;
-			top: 50%;
-			margin-left: -250rpx;
-			margin-top: -360rpx;
-			position: fixed;
-			z-index: 10001;
-
-			img {
-				width: 100%;
-				height: 100%;
-			}
-		}
-	}
-
-	/* #endif */
-	.privacy-wrapper {
-		z-index: 9999;
-		position: fixed;
-		left: 0;
-		top: 0;
-		width: 100%;
-		height: 100%;
-		background: #7f7f7f;
-
-		.privacy-box {
-			position: absolute;
-			left: 50%;
-			top: 50%;
-			transform: translate(-50%, -50%);
-			width: 560rpx;
-			padding: 50rpx 45rpx 0;
-			background: #fff;
-			border-radius: 20rpx;
-
-			.title {
-				text-align: center;
-				font-size: 32rpx;
-				text-align: center;
-				color: #333;
-				font-weight: 700;
-			}
-
-			.content {
-				margin-top: 20rpx;
-				line-height: 1.5;
-				font-size: 26rpx;
-				color: #666;
-
-				navigator {
-					display: inline-block;
-					color: #e93323;
-				}
-			}
-
-			.btn-box {
-				margin-top: 40rpx;
-				text-align: center;
-				font-size: 30rpx;
-
-				.btn-item {
-					height: 82rpx;
-					line-height: 82rpx;
-					background: linear-gradient(90deg, #f67a38 0%, #f11b09 100%);
-					color: #fff;
-					border-radius: 41rpx;
-				}
-
-				.btn {
-					padding: 30rpx 0;
-				}
-			}
-		}
-	}
-
-	.sort-product {
-		margin: 20rpx;
-	}
-	
-	.emptyBox{
-		text-align: center;
-		padding: 150rpx 0;
-		.tips{
-			color: #aaa;
-			font-size: 26rpx;
-		}
-		image {
-			width: 414rpx;
-			height: 304rpx;
-		}
-	}
-
-	.nothing {
-		// min-height: 800rpx;
-	}
-
-	.product-list {
-		display: flex;
-		flex-wrap: wrap;
-		justify-content: space-between;
-		margin-top: 0rpx;
-		padding: 0 20rpx;
-
-		.product-item {
-			position: relative;
-			width: 324rpx;
-			background: #fff;
-			border-radius: 10rpx;
-			margin-bottom: 20rpx;
-
-			image {
-				width: 100%;
-				// height: 344rpx;
-				border-radius: 10rpx 10rpx 0 0;
-			}
-
-			.info {
-				padding: 14rpx 16rpx;
-
-				.title {
-					font-size: 28rpx;
-				}
-
-				.price-box {
-					font-size: 34rpx;
-					font-weight: 700;
-					margin-top: 8px;
-					color: #fc4141;
-
-					text {
-						font-size: 26rpx;
-					}
-				}
-			}
-		}
-	}
-
-	.sticky-box {
-		// /* #ifndef APP-PLUS-NVUE */
-		// display: flex;
-		// position: -webkit-sticky;
-		// /* #endif */
-		// position: sticky;
-		// /* #ifdef H5*/
-		// top: var(--window-top);
-		// /* #endif */
-
-		// z-index: 99;
-		// flex-direction: row;
-		// margin: 0px;
-		// background: #f5f5f5;
-		// padding: 30rpx 0;
-		// /* #ifdef MP || APP-PLUS*/
-		// //top: 110rpx;
-		// /* #endif
-
-		/* #ifndef H5 */
-		display: flex;
-		position: -webkit-sticky;
-		overflow-x: scroll;
-		/* #endif */
-		position: sticky;
-		z-index: 998;
-		flex-direction: row;
-		margin: 0px;
-		background: #f5f5f5;
-		padding: 24rpx 0 24rpx 0;
-		/* #ifdef MP || APP-PLUS*/
-		//top: 110rpx;
-		/* #endif */
-		// overflow-x: scroll;
-	}
-</style>

+ 1 - 4
pages/order_addcart/order_addcart.vue

@@ -139,8 +139,7 @@
 		<!-- <view class="uni-p-b-96"></view> -->
 		<view class="uni-p-b-98"></view>
 		<!-- <pageFooter :countNum="cartCount"></pageFooter> -->
-		<tabBar v-if="!is_diy" :pagePath="'/pages/order_addcart/order_addcart'"></tabBar>
-		<view class="foot" v-else-if="is_diy && newData.status && newData.status.status">
+		<view class="foot" v-if="is_diy && newData.status && newData.status.status">
 			<view class="page-footer" id="target" :style="{'background-color':newData.bgColor.color[0].item}">
 				<view class="foot-item" v-for="(item,index) in newData.menuList" :key="index" @click="goRouter(item)">
 					<block v-if="item.link == activeRouter">
@@ -182,7 +181,6 @@
 	import {
 		toLogin
 	} from '@/libs/login.js';
-	import tabBar from "@/pages/index/visualization/components/tabBar.vue"
 	import {
 		mapGetters
 	} from "vuex";
@@ -202,7 +200,6 @@
 			pageFooter,
 			recommend,
 			productWindow,
-			tabBar,
 			// #ifdef MP
 			authorize
 			// #endif

+ 1 - 4
pages/user/index.vue

@@ -277,8 +277,7 @@
 				<view class="uni-p-b-98"></view>
 			</scroll-view>
 		</view>
-		<tabBar v-if="!is_diy" :pagePath="'/pages/user/index'"></tabBar>
-		<view class="foot" v-else-if="is_diy && newData.status && newData.status.status">
+		<view class="foot" v-if="is_diy && newData.status && newData.status.status">
 			<view class="page-footer" id="target" :style="{'background-color':newData.bgColor.color[0].item}">
 				<view class="foot-item" v-for="(item,index) in newData.menuList" :key="index" @click="goRouter(item)">
 					<block v-if="item.link == activeRouter">
@@ -324,13 +323,11 @@
 	import dayjs from '@/plugin/dayjs/dayjs.min.js';
 	import Routine from '@/libs/routine';
 	import colors from '@/mixins/color';
-	import tabBar from "@/pages/index/visualization/components/tabBar.vue";
 	import {
 		getCustomer
 	} from '@/utils/index.js'
 	export default {
 		components: {
-			tabBar,
 		},
 		// computed: mapGetters(['isLogin','cartNum']),
 		computed: {