From-wh 2 лет назад
Родитель
Сommit
85ff894003
25 измененных файлов с 2448 добавлено и 2579 удалено
  1. 4 18
      template/uni-app/components/guide/index.vue
  2. 2 2
      template/uni-app/components/recommend/index.vue
  3. 366 383
      template/uni-app/pages/activity/goods_combination/index.vue
  4. 495 463
      template/uni-app/pages/activity/presell/index.vue
  5. 178 193
      template/uni-app/pages/columnGoods/HotNewGoods/index.vue
  6. 11 0
      template/uni-app/pages/goods_cate/goods_cate1.vue
  7. 1 10
      template/uni-app/pages/index/diy/components/activeParty.vue
  8. 240 252
      template/uni-app/pages/index/diy/components/menus.vue
  9. 133 137
      template/uni-app/pages/index/diy/components/news.vue
  10. 310 330
      template/uni-app/pages/index/diy/components/pictureCube.vue
  11. 1 21
      template/uni-app/pages/index/diy/components/swiperBg.vue
  12. 74 66
      template/uni-app/pages/index/diy/components/titles.vue
  13. 1 1
      template/uni-app/pages/index/index.vue
  14. 1 18
      template/uni-app/pages/index/visualization/components/activity.vue
  15. 1 19
      template/uni-app/pages/index/visualization/components/mBanner.vue
  16. 1 20
      template/uni-app/pages/index/visualization/components/menus.vue
  17. 1 3
      template/uni-app/pages/index/visualization/components/newGoods.vue
  18. 174 190
      template/uni-app/pages/index/visualization/components/news.vue
  19. 4 6
      template/uni-app/pages/index/visualization/components/popular.vue
  20. 1 3
      template/uni-app/pages/index/visualization/components/promotion.vue
  21. 1 27
      template/uni-app/pages/index/visualization/components/swiperBg.vue
  22. 395 410
      template/uni-app/pages/points_mall/index.vue
  23. 1 1
      template/uni-app/pages/users/wechat_login/index.vue
  24. 1 1
      template/uni-app/static/css/style.scss
  25. 51 5
      template/uni-app/utils/util.js

+ 4 - 18
template/uni-app/components/guide/index.vue

@@ -44,9 +44,9 @@
 		},
 		mounted() {
 			this.timer()
-		},
-		onHide() {
-			clearInterval(this.timecount)
+		},
+		onHide() {
+			clearInterval(this.timecount)
 		},
 		methods: {
 			timer() {
@@ -70,22 +70,8 @@
 			jump(url) {
 				if (url) {
 					clearInterval(this.timecount)
-					if (url.indexOf("http") != -1) {
-						uni.navigateTo({
-							url: `/pages/annex/web_view/index?url=${url}`
-						});
-					} else {
-						uni.reLaunch({
-							url: url,
-							fail: () => {
-								uni.switchTab({
-									url
-								})
-							}
-						})
-					}
+					this.$util.JumpPath(url);
 				}
-
 			},
 		}
 	}

+ 2 - 2
template/uni-app/components/recommend/index.vue

@@ -19,14 +19,14 @@
 				</view>
 				<view class='name line2'>{{item.store_name}}</view>
 				<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">
+				<!-- <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> -->
 			</view>
 		</view>
 	</view>

+ 366 - 383
template/uni-app/pages/activity/goods_combination/index.vue

@@ -1,384 +1,367 @@
-<template>
-	<view class="group-list" :style="colorStyle">
-		<view class="swiper" v-if="bannerList.length">
-			<swiper indicator-dots="true" :autoplay="true" :circular="circular" :interval="interval"
-				:duration="duration" indicator-color="rgba(0,0,0,0.3)">
-				<block v-for="(item,index) in bannerList" :key="index">
-					<swiper-item>
-						<view @click="goDetail(item)" class='slide-navigator acea-row row-between-wrapper'>
-							<image :src="item.img" class="slide-image"></image>
-						</view>
-					</swiper-item>
-				</block>
-			</swiper>
-		</view>
-		<view class="groupMember acea-row row-center-wrapper">
-			<view class="line">
-				<image src="../static/groupLine.png"></image>
-			</view>
-			<view class="member acea-row row-center-wrapper">
-				<view class="pictrue" v-for="(item,index) in pinkPeople" :key="index" v-if="index<6">
-					<image :src="item"></image>
-				</view>
-				<text style="margin-left: 10rpx;">{{pinkCount}}{{$t(`人参与`)}}</text>
-				<view class="pictrue" v-if="pinkPeople.length>5">
-					<image :src="pinkPeople[pinkPeople.length-1]"></image>
-					<view class="iconfont icon-gengduo1"></view>
-				</view>
-			</view>
-			<view class="line right">
-				<image src="../static/groupLine.png"></image>
-			</view>
-		</view>
-		<view class="list" v-if="combinationList.length">
-			<view class="item acea-row row-between-wrapper" v-for="(item,index) in combinationList" :key='index'
-				@tap="openSubcribe(item)">
-				<view class="pictrue">
-					<image :src="item.image"></image>
-				</view>
-				<view class="text">
-					<view class="name line2">{{item.title}}</view>
-					<view class="bottom acea-row row-between row-bottom">
-						<view class="y_money">
-							<view class="price">{{$t(`¥`)}}{{item.product_price}}</view>
-							<view class="money">{{$t(`¥`)}}<text class="num">{{item.price}}</text></view>
-						</view>
-						<view class="bnt acea-row row-center-wrapper" v-if="item.stock>0&&item.quota>0">
-							<view class="light">
-								<image src="../static/lightning.png"></image>
-							</view>
-							<view class="num">{{item.people}}{{$t(`人团`)}}</view>
-							<view class="go">{{$t(`去拼团`)}}</view>
-						</view>
-						<view class="bnt gray acea-row row-center-wrapper" v-else>{{$t(`已售罄`)}}</view>
-					</view>
-				</view>
-			</view>
-		</view>
-		<!-- #ifndef MP -->
-		<home></home>
-		<!-- #endif -->
-	</view>
-</template>
-
-<script>
-	import {
-		getCombinationList,
-		getCombinationBannerList,
-		getPink
-	} from '@/api/activity.js';
-	import {
-		openPinkSubscribe
-	} from '../../../utils/SubscribeMessage.js';
-	import home from '@/components/home/index.vue'
-	import colors from "@/mixins/color";
-	let app = getApp();
-	export default {
-		components: {
-			home
-		},
-		mixins: [colors],
-		data() {
-			return {
-				pinkPeople: [],
-				pinkCount: 0,
-				bannerList: [],
-				circular: true,
-				autoplay: true,
-				interval: 3000,
-				duration: 500,
-				combinationList: [],
-				limit: 10,
-				page: 1,
-				loading: false,
-				loadend: false
-			}
-		},
-		onLoad() {
-			uni.setNavigationBarTitle({
-				title: this.$t(`拼团列表`)
-			})
-			this.getCombinationList();
-			this.getBannerList();
-			this.getPink();
-		},
-		methods: {
-			getPink: function() {
-				getPink().then(res => {
-					this.pinkPeople = res.data.avatars;
-					this.pinkCount = res.data.pink_count;
-				})
-			},
-			getBannerList: function() {
-				getCombinationBannerList().then(res => {
-					this.bannerList = res.data;
-				})
-			},
-			goDetail(item) {
-				let url = item.link;
-				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',
-							'/pages/index/index'
-						]
-						.indexOf(url) == -1) {
-						uni.navigateTo({
-							url: url
-						})
-					} else {
-						uni.switchTab({
-							url: url
-						})
-					}
-				}
-			},
-			openSubcribe: function(item) {
-				let page = item;
-				// #ifndef MP
-				uni.navigateTo({
-					url: `/pages/activity/goods_combination_details/index?id=${item.id}`
-				});
-				// #endif
-				// #ifdef MP
-				uni.showLoading({
-					title: this.$t(`正在加载中`),
-				})
-				openPinkSubscribe().then(res => {
-					uni.hideLoading();
-					uni.navigateTo({
-						url: `/pages/activity/goods_combination_details/index?id=${item.id}`
-					});
-				}).catch(() => {
-					uni.hideLoading();
-				});
-				// #endif
-			},
-			getCombinationList: function() {
-				var that = this;
-				if (that.loadend) return;
-				if (that.loading) return;
-				var data = {
-					page: that.page,
-					limit: that.limit
-				};
-				this.loading = true
-				getCombinationList(data).then(function(res) {
-					var combinationList = that.combinationList;
-					var limit = that.limit;
-					that.page++;
-					that.loadend = limit > res.data.length;
-					that.combinationList = combinationList.concat(res.data);
-					that.page = that.data.page;
-					that.loading = false;
-				}).catch(() => {
-					that.loading = false
-				})
-			},
-		},
-		onReachBottom: function() {
-			this.getCombinationList();
-		},
-	}
-</script>
-
-<style lang="scss">
-	page {
-		// background-color: var(--view-theme) !important;
-	}
-
-	.group-list {
-		min-height: 100vh;
-		background-color: var(--view-theme) !important;
-		padding: 30rpx 0;
-
-		.swiper {
-			width: 100%;
-			position: relative;
-			box-sizing: border-box;
-			padding: 0 30rpx;
-
-			swiper {
-				width: 100%;
-				height: 300rpx;
-
-				.slide-image {
-					width: 100%;
-					height: 300rpx;
-					border-radius: 20rpx;
-				}
-
-				/deep/.uni-swiper-dot {
-					width: 8rpx !important;
-					height: 8rpx !important;
-					border-radius: 50%;
-				}
-
-				/deep/.uni-swiper-dot-active {
-					width: 18rpx !important;
-					border-radius: 4rpx;
-					background-color: var(--view-theme) !important;
-				}
-			}
-		}
-
-		.groupMember {
-			height: 100rpx;
-
-			.line {
-				width: 102rpx;
-				height: 4rpx;
-
-				&.right {
-					transform: rotate(180deg);
-				}
-
-				image {
-					width: 100%;
-					height: 100%;
-					display: block;
-				}
-			}
-
-			.member {
-				margin: 0 30rpx;
-				color: #fff;
-
-				.pictrue {
-					width: 46rpx;
-					height: 46rpx;
-					position: relative;
-
-					image {
-						border: 2rpx solid #fff;
-						width: 100%;
-						height: 100%;
-						border-radius: 50%;
-					}
-
-					&~.pictrue {
-						margin-left: -8rpx;
-					}
-
-					.iconfont {
-						position: absolute;
-						width: 43rpx;
-						height: 43rpx;
-						background: rgba(51, 51, 51, 0.6);
-						border-radius: 50%;
-						top: 2rpx;
-						left: 2rpx;
-						color: #fff;
-						font-size: 10rpx;
-						text-align: center;
-						line-height: 43rpx;
-					}
-				}
-			}
-		}
-
-		.list {
-			.item {
-				width: 690rpx;
-				height: 230rpx;
-				background-color: #fff;
-				border-radius: 14rpx;
-				padding: 0 22rpx;
-				margin: 0 auto 18rpx auto;
-
-				.pictrue {
-					width: 186rpx;
-					height: 186rpx;
-
-					image {
-						width: 100%;
-						height: 100%;
-						border-radius: 10rpx;
-					}
-				}
-
-				.text {
-					width: 440rpx;
-
-					.name {
-						color: #333;
-						font-size: 30rpx;
-						line-height: 38rpx;
-						height: 70rpx;
-					}
-
-					.bottom {
-						margin-top: 10rpx;
-
-						.y_money {
-							font-size: 24rpx;
-							color: #999;
-
-							.price {
-								text-decoration: line-through;
-							}
-
-							.money {
-								color: var(--view-priceColor);
-								font-weight: 600;
-
-								.num {
-									font-size: 34rpx;
-								}
-							}
-						}
-
-						.bnt {
-							height: 58rpx;
-							font-size: 24rpx;
-							text-align: center;
-							position: relative;
-							background-color: var(--view-theme);
-							border-radius: 28rpx;
-
-							.light {
-								position: absolute;
-								width: 28rpx;
-								height: 58rpx;
-								top: 0;
-								left: 50%;
-								margin-left: -8rpx;
-
-								image {
-									width: 100%;
-									height: 100%;
-								}
-							}
-
-							.num {
-								width: 120rpx;
-								background-color: rgba(255, 255, 255, 0.85);
-								color: var(--view-theme);
-								height: 100%;
-								line-height: 58rpx;
-								border-radius: 28rpx 0 14rpx 28rpx;
-							}
-
-							.go {
-								width: 112rpx;
-								background-color: var(--view-theme);
-								height: 100%;
-								line-height: 58rpx;
-								border-radius: 0 28rpx 28rpx 0;
-								color: #fff;
-							}
-
-							&.gray {
-								width: 148rpx;
-								background-color: #cccccc;
-								color: #fff;
-							}
-						}
-					}
-				}
-			}
-		}
-	}
+<template>
+	<view class="group-list" :style="colorStyle">
+		<view class="swiper" v-if="bannerList.length">
+			<swiper indicator-dots="true" :autoplay="true" :circular="circular" :interval="interval"
+				:duration="duration" indicator-color="rgba(0,0,0,0.3)">
+				<block v-for="(item,index) in bannerList" :key="index">
+					<swiper-item>
+						<view @click="goDetail(item)" class='slide-navigator acea-row row-between-wrapper'>
+							<image :src="item.img" class="slide-image"></image>
+						</view>
+					</swiper-item>
+				</block>
+			</swiper>
+		</view>
+		<view class="groupMember acea-row row-center-wrapper">
+			<view class="line">
+				<image src="../static/groupLine.png"></image>
+			</view>
+			<view class="member acea-row row-center-wrapper">
+				<view class="pictrue" v-for="(item,index) in pinkPeople" :key="index" v-if="index<6">
+					<image :src="item"></image>
+				</view>
+				<text style="margin-left: 10rpx;">{{pinkCount}}{{$t(`人参与`)}}</text>
+				<view class="pictrue" v-if="pinkPeople.length>5">
+					<image :src="pinkPeople[pinkPeople.length-1]"></image>
+					<view class="iconfont icon-gengduo1"></view>
+				</view>
+			</view>
+			<view class="line right">
+				<image src="../static/groupLine.png"></image>
+			</view>
+		</view>
+		<view class="list" v-if="combinationList.length">
+			<view class="item acea-row row-between-wrapper" v-for="(item,index) in combinationList" :key='index'
+				@tap="openSubcribe(item)">
+				<view class="pictrue">
+					<image :src="item.image"></image>
+				</view>
+				<view class="text">
+					<view class="name line2">{{item.title}}</view>
+					<view class="bottom acea-row row-between row-bottom">
+						<view class="y_money">
+							<view class="price">{{$t(`¥`)}}{{item.product_price}}</view>
+							<view class="money">{{$t(`¥`)}}<text class="num">{{item.price}}</text></view>
+						</view>
+						<view class="bnt acea-row row-center-wrapper" v-if="item.stock>0&&item.quota>0">
+							<view class="light">
+								<image src="../static/lightning.png"></image>
+							</view>
+							<view class="num">{{item.people}}{{$t(`人团`)}}</view>
+							<view class="go">{{$t(`去拼团`)}}</view>
+						</view>
+						<view class="bnt gray acea-row row-center-wrapper" v-else>{{$t(`已售罄`)}}</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<!-- #ifndef MP -->
+		<home></home>
+		<!-- #endif -->
+	</view>
+</template>
+
+<script>
+	import {
+		getCombinationList,
+		getCombinationBannerList,
+		getPink
+	} from '@/api/activity.js';
+	import {
+		openPinkSubscribe
+	} from '../../../utils/SubscribeMessage.js';
+	import home from '@/components/home/index.vue'
+	import colors from "@/mixins/color";
+	let app = getApp();
+	export default {
+		components: {
+			home
+		},
+		mixins: [colors],
+		data() {
+			return {
+				pinkPeople: [],
+				pinkCount: 0,
+				bannerList: [],
+				circular: true,
+				autoplay: true,
+				interval: 3000,
+				duration: 500,
+				combinationList: [],
+				limit: 10,
+				page: 1,
+				loading: false,
+				loadend: false
+			}
+		},
+		onLoad() {
+			uni.setNavigationBarTitle({
+				title: this.$t(`拼团列表`)
+			})
+			this.getCombinationList();
+			this.getBannerList();
+			this.getPink();
+		},
+		methods: {
+			getPink: function() {
+				getPink().then(res => {
+					this.pinkPeople = res.data.avatars;
+					this.pinkCount = res.data.pink_count;
+				})
+			},
+			getBannerList: function() {
+				getCombinationBannerList().then(res => {
+					this.bannerList = res.data;
+				})
+			},
+			goDetail(item) {
+				let url = item.link;
+				this.$util.JumpPath(url);
+			},
+			openSubcribe: function(item) {
+				let page = item;
+				// #ifndef MP
+				uni.navigateTo({
+					url: `/pages/activity/goods_combination_details/index?id=${item.id}`
+				});
+				// #endif
+				// #ifdef MP
+				uni.showLoading({
+					title: this.$t(`正在加载中`),
+				})
+				openPinkSubscribe().then(res => {
+					uni.hideLoading();
+					uni.navigateTo({
+						url: `/pages/activity/goods_combination_details/index?id=${item.id}`
+					});
+				}).catch(() => {
+					uni.hideLoading();
+				});
+				// #endif
+			},
+			getCombinationList: function() {
+				var that = this;
+				if (that.loadend) return;
+				if (that.loading) return;
+				var data = {
+					page: that.page,
+					limit: that.limit
+				};
+				this.loading = true
+				getCombinationList(data).then(function(res) {
+					var combinationList = that.combinationList;
+					var limit = that.limit;
+					that.page++;
+					that.loadend = limit > res.data.length;
+					that.combinationList = combinationList.concat(res.data);
+					that.page = that.data.page;
+					that.loading = false;
+				}).catch(() => {
+					that.loading = false
+				})
+			},
+		},
+		onReachBottom: function() {
+			this.getCombinationList();
+		},
+	}
+</script>
+
+<style lang="scss">
+	page {
+		// background-color: var(--view-theme) !important;
+	}
+
+	.group-list {
+		min-height: 100vh;
+		background-color: var(--view-theme) !important;
+		padding: 30rpx 0;
+
+		.swiper {
+			width: 100%;
+			position: relative;
+			box-sizing: border-box;
+			padding: 0 30rpx;
+
+			swiper {
+				width: 100%;
+				height: 300rpx;
+
+				.slide-image {
+					width: 100%;
+					height: 300rpx;
+					border-radius: 20rpx;
+				}
+
+				/deep/.uni-swiper-dot {
+					width: 8rpx !important;
+					height: 8rpx !important;
+					border-radius: 50%;
+				}
+
+				/deep/.uni-swiper-dot-active {
+					width: 18rpx !important;
+					border-radius: 4rpx;
+					background-color: var(--view-theme) !important;
+				}
+			}
+		}
+
+		.groupMember {
+			height: 100rpx;
+
+			.line {
+				width: 102rpx;
+				height: 4rpx;
+
+				&.right {
+					transform: rotate(180deg);
+				}
+
+				image {
+					width: 100%;
+					height: 100%;
+					display: block;
+				}
+			}
+
+			.member {
+				margin: 0 30rpx;
+				color: #fff;
+
+				.pictrue {
+					width: 46rpx;
+					height: 46rpx;
+					position: relative;
+
+					image {
+						border: 2rpx solid #fff;
+						width: 100%;
+						height: 100%;
+						border-radius: 50%;
+					}
+
+					&~.pictrue {
+						margin-left: -8rpx;
+					}
+
+					.iconfont {
+						position: absolute;
+						width: 43rpx;
+						height: 43rpx;
+						background: rgba(51, 51, 51, 0.6);
+						border-radius: 50%;
+						top: 2rpx;
+						left: 2rpx;
+						color: #fff;
+						font-size: 10rpx;
+						text-align: center;
+						line-height: 43rpx;
+					}
+				}
+			}
+		}
+
+		.list {
+			.item {
+				width: 690rpx;
+				height: 230rpx;
+				background-color: #fff;
+				border-radius: 14rpx;
+				padding: 0 22rpx;
+				margin: 0 auto 18rpx auto;
+
+				.pictrue {
+					width: 186rpx;
+					height: 186rpx;
+
+					image {
+						width: 100%;
+						height: 100%;
+						border-radius: 10rpx;
+					}
+				}
+
+				.text {
+					width: 440rpx;
+
+					.name {
+						color: #333;
+						font-size: 30rpx;
+						line-height: 38rpx;
+						height: 70rpx;
+					}
+
+					.bottom {
+						margin-top: 10rpx;
+
+						.y_money {
+							font-size: 24rpx;
+							color: #999;
+
+							.price {
+								text-decoration: line-through;
+							}
+
+							.money {
+								color: var(--view-priceColor);
+								font-weight: 600;
+
+								.num {
+									font-size: 34rpx;
+								}
+							}
+						}
+
+						.bnt {
+							height: 58rpx;
+							font-size: 24rpx;
+							text-align: center;
+							position: relative;
+							background-color: var(--view-theme);
+							border-radius: 28rpx;
+
+							.light {
+								position: absolute;
+								width: 28rpx;
+								height: 58rpx;
+								top: 0;
+								left: 50%;
+								margin-left: -8rpx;
+
+								image {
+									width: 100%;
+									height: 100%;
+								}
+							}
+
+							.num {
+								width: 120rpx;
+								background-color: rgba(255, 255, 255, 0.85);
+								color: var(--view-theme);
+								height: 100%;
+								line-height: 58rpx;
+								border-radius: 28rpx 0 14rpx 28rpx;
+							}
+
+							.go {
+								width: 112rpx;
+								background-color: var(--view-theme);
+								height: 100%;
+								line-height: 58rpx;
+								border-radius: 0 28rpx 28rpx 0;
+								color: #fff;
+							}
+
+							&.gray {
+								width: 148rpx;
+								background-color: #cccccc;
+								color: #fff;
+							}
+						}
+					}
+				}
+			}
+		}
+	}
 </style>

Разница между файлами не показана из-за своего большого размера
+ 495 - 463
template/uni-app/pages/activity/presell/index.vue


+ 178 - 193
template/uni-app/pages/columnGoods/HotNewGoods/index.vue

@@ -1,194 +1,179 @@
-<template>
-	<div class="quality-recommend" :style="colorStyle">
-		<div class="slider-banner swiper">
-			<view class="swiper">
-				<swiper indicator-dots="true" :autoplay="autoplay" :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>
-							<image :src="item.img" class="slide-image" @click="goPages(item)"></image>
-						</swiper-item>
-					</block>
-				</swiper>
-			</view>
-		</div>
-		<div class="title acea-row row-center-wrapper">
-			<div class="line"></div>
-			<div class="name">
-				<span class="iconfont" :class="icon"></span>
-				{{ typeName[type]}}
-			</div>
-			<div class="line"></div>
-		</div>
-		<view class="wrapper">
-			<GoodList :bastList="goodsList" :is-sort="false"></GoodList>
-			<emptyPage v-if="goodsList.length == 0 && !isScroll" :title="$t(`暂无数据`)"></emptyPage>
-		</view>
-		<!-- #ifndef MP -->
-		<home></home>
-		<!-- #endif -->
-		<!-- <pageFooter></pageFooter> -->
-	</div>
-</template>
-<script>
-	import emptyPage from '@/components/emptyPage.vue';
-	import GoodList from '@/components/goodList';
-	import pageFooter from '@/components/pageFooter/index.vue';
-	import {
-		getGroomList
-	} from '@/api/store';
-	import {
-		goPage
-	} from '@/libs/order.js';
-	import home from '@/components/home/index.vue'
-	import colors from "@/mixins/color";
-	export default {
-		name: 'HotNewGoods',
-		components: {
-			GoodList,
-			emptyPage,
-			home,
-			pageFooter
-		},
-		props: {},
-		mixins: [colors],
-		data: function() {
-			return {
-				imgUrls: [],
-				goodsList: [],
-				name: '',
-				icon: '',
-				type: 0,
-				typeName: ['', this.$t(`精品推荐`), this.$t(`热门榜单`), this.$t(`首发新品`),
-					this.$t(`促销单品`)
-				],
-				autoplay: true,
-				circular: true,
-				interval: 3000,
-				duration: 500,
-				page: 1,
-				limit: 8,
-				isScroll: true,
-			};
-		},
-		onLoad: function(option) {
-			this.type = option.type;
-			this.titleInfo();
-			this.name = option.name;
-			// document.title = "精品推荐";
-			uni.setNavigationBarTitle({
-				title: option.name
-			});
-			this.getIndexGroomList();
-		},
-		methods: {
-			titleInfo: function() {
-				if (this.type === '1') {
-					this.icon = 'icon-jingpintuijian';
-				} else if (this.type === '2') {
-					this.icon = 'icon-remen';
-				} else if (this.type === '3') {
-					this.icon = 'icon-xinpin';
-				} else if (this.type === '4') {
-					this.icon = 'icon-xinpin';
-				}
-			},
-			goPages(item) {
-				let url = item.link || '';
-				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
-							});
-						}
-					}
-				});
-			},
-			getIndexGroomList() {
-				if (!this.isScroll) return;
-				let that = this;
-				let type = this.type;
-				getGroomList(type, {
-						page: this.page,
-						limit: this.limit
-					})
-					.then(res => {
-						that.imgUrls = res.data.banner;
-						that.goodsList = that.goodsList.concat(res.data.list);
-						that.isScroll = res.data.list.length >= that.limit;
-						that.page++;
-					})
-					.catch(function(res) {
-						that.$util.Tips({
-							title: res
-						});
-					});
-			},
-			onReachBottom() {
-				this.getIndexGroomList();
-			}
-		}
-	}
-</script>
-<style lang="scss">
-	/deep/ .empty-box {
-		background-color: #f5f5f5;
-	}
-
-	.swiper,
-	swiper,
-	swiper-item,
-	.slide-image {
-		width: 100%;
-		height: 280rpx;
-	}
-
-	.quality-recommend {
-		.wrapper {
-			background: #fff;
-		}
-
-		.title {
-			height: 120rpx;
-			font-size: 32rpx;
-			color: #282828;
-			background-color: #f5f5f5;
-
-			.name {
-				margin: 0 20rpx;
-
-				.iconfont {
-					margin-right: 10rpx;
-				}
-			}
-
-			.line {
-				width: 190rpx;
-				height: 2rpx;
-				background-color: #e9e9e9;
-			}
-		}
-	}
-
-	.txt-bar {
-		padding: 20rpx 0;
-		text-align: center;
-		font-size: 26rpx;
-		color: #666;
-		background-color: #f5f5f5;
-	}
-	.acea-row {
-		flex-wrap: nowrap !important;
-	}
+<template>
+	<div class="quality-recommend" :style="colorStyle">
+		<div class="slider-banner swiper">
+			<view class="swiper">
+				<swiper indicator-dots="true" :autoplay="autoplay" :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>
+							<image :src="item.img" class="slide-image" @click="goPages(item)"></image>
+						</swiper-item>
+					</block>
+				</swiper>
+			</view>
+		</div>
+		<div class="title acea-row row-center-wrapper">
+			<div class="line"></div>
+			<div class="name">
+				<span class="iconfont" :class="icon"></span>
+				{{ typeName[type]}}
+			</div>
+			<div class="line"></div>
+		</div>
+		<view class="wrapper">
+			<GoodList :bastList="goodsList" :is-sort="false"></GoodList>
+			<emptyPage v-if="goodsList.length == 0 && !isScroll" :title="$t(`暂无数据`)"></emptyPage>
+		</view>
+		<!-- #ifndef MP -->
+		<home></home>
+		<!-- #endif -->
+		<!-- <pageFooter></pageFooter> -->
+	</div>
+</template>
+<script>
+	import emptyPage from '@/components/emptyPage.vue';
+	import GoodList from '@/components/goodList';
+	import pageFooter from '@/components/pageFooter/index.vue';
+	import {
+		getGroomList
+	} from '@/api/store';
+	import {
+		goPage
+	} from '@/libs/order.js';
+	import home from '@/components/home/index.vue'
+	import colors from "@/mixins/color";
+	export default {
+		name: 'HotNewGoods',
+		components: {
+			GoodList,
+			emptyPage,
+			home,
+			pageFooter
+		},
+		props: {},
+		mixins: [colors],
+		data: function() {
+			return {
+				imgUrls: [],
+				goodsList: [],
+				name: '',
+				icon: '',
+				type: 0,
+				typeName: ['', this.$t(`精品推荐`), this.$t(`热门榜单`), this.$t(`首发新品`),
+					this.$t(`促销单品`)
+				],
+				autoplay: true,
+				circular: true,
+				interval: 3000,
+				duration: 500,
+				page: 1,
+				limit: 8,
+				isScroll: true,
+			};
+		},
+		onLoad: function(option) {
+			this.type = option.type;
+			this.titleInfo();
+			this.name = option.name;
+			// document.title = "精品推荐";
+			uni.setNavigationBarTitle({
+				title: option.name
+			});
+			this.getIndexGroomList();
+		},
+		methods: {
+			titleInfo: function() {
+				if (this.type === '1') {
+					this.icon = 'icon-jingpintuijian';
+				} else if (this.type === '2') {
+					this.icon = 'icon-remen';
+				} else if (this.type === '3') {
+					this.icon = 'icon-xinpin';
+				} else if (this.type === '4') {
+					this.icon = 'icon-xinpin';
+				}
+			},
+			goPages(item) {
+				let url = item.link || '';
+				goPage().then(res => {
+					this.$util.JumpPath(url);
+				});
+			},
+			getIndexGroomList() {
+				if (!this.isScroll) return;
+				let that = this;
+				let type = this.type;
+				getGroomList(type, {
+						page: this.page,
+						limit: this.limit
+					})
+					.then(res => {
+						that.imgUrls = res.data.banner;
+						that.goodsList = that.goodsList.concat(res.data.list);
+						that.isScroll = res.data.list.length >= that.limit;
+						that.page++;
+					})
+					.catch(function(res) {
+						that.$util.Tips({
+							title: res
+						});
+					});
+			},
+			onReachBottom() {
+				this.getIndexGroomList();
+			}
+		}
+	}
+</script>
+<style lang="scss">
+	/deep/ .empty-box {
+		background-color: #f5f5f5;
+	}
+
+	.swiper,
+	swiper,
+	swiper-item,
+	.slide-image {
+		width: 100%;
+		height: 280rpx;
+	}
+
+	.quality-recommend {
+		.wrapper {
+			background: #fff;
+		}
+
+		.title {
+			height: 120rpx;
+			font-size: 32rpx;
+			color: #282828;
+			background-color: #f5f5f5;
+
+			.name {
+				margin: 0 20rpx;
+
+				.iconfont {
+					margin-right: 10rpx;
+				}
+			}
+
+			.line {
+				width: 190rpx;
+				height: 2rpx;
+				background-color: #e9e9e9;
+			}
+		}
+	}
+
+	.txt-bar {
+		padding: 20rpx 0;
+		text-align: center;
+		font-size: 26rpx;
+		color: #666;
+		background-color: #f5f5f5;
+	}
+
+	.acea-row {
+		flex-wrap: nowrap !important;
+	}
 </style>

+ 11 - 0
template/uni-app/pages/goods_cate/goods_cate1.vue

@@ -35,6 +35,16 @@
 								<view class='line'></view>
 							</view>
 							<view class='list acea-row'>
+								<navigator hover-class='none'
+									:url='"/pages/goods/goods_list/index?cid="+item.id+"&title="+item.cate_name'
+									class='item acea-row row-column row-middle'>
+									<view class='picture'>
+										<easy-loadimage mode="widthFix" :image-src="item.pic || defimg">
+										</easy-loadimage>
+										<!-- <image src="/static/images/sort-img.png" v-else></image> -->
+									</view>
+									<view class='name line1'>{{$t(`全部商品`)}}</view>
+								</navigator>
 								<block v-for="(itemn,indexn) in item.children" :key="indexn">
 									<navigator hover-class='none'
 										:url='"/pages/goods/goods_list/index?sid="+itemn.id+"&title="+itemn.cate_name'
@@ -86,6 +96,7 @@
 		},
 		data() {
 			return {
+				defimg: require('@/static/images/2-002.png'),
 				navlist: [],
 				productList: [],
 				navActive: 0,

+ 1 - 10
template/uni-app/pages/index/diy/components/activeParty.vue

@@ -54,16 +54,7 @@
 		methods: {
 			goDetail(item) {
 				let urls = item.info[2].value
-				if (['/pages/goods_cate/goods_cate', '/pages/order_addcart/order_addcart', '/pages/user/index']
-					.indexOf(urls) == -1) {
-					uni.navigateTo({
-						url: urls
-					})
-				} else {
-					uni.switchTab({
-						url: urls
-					})
-				}
+				this.$util.JumpPath(urls);
 			}
 		}
 	}

+ 240 - 252
template/uni-app/pages/index/diy/components/menus.vue

@@ -1,253 +1,241 @@
-<template>
-	<view v-show="!isSortType && menus.length" :class="bgStyle?'borderRadius15':''" :style="{background:bgColor,margin:'0 '+prConfig*2+'rpx',marginTop:mbConfig*2+'rpx'}">
-		<view v-if="isMany">
-			<view class="swiper">
-				<swiper :interval="interval" :duration="duration" :style="'height:'+(navHigh*2+17)+'rpx;'" @change='bannerfun'>
-					<block>
-						<swiper-item v-for="(item,indexw) in menuList" :key="indexw">
-							<view class="nav acea-row" :id="'nav' + indexw">
-								<view :style="'color:' + titleColor" class="item" :class="number===1?'four':number===2?'five':''" v-for="(itemn,indexn) in item.list" :key="indexn" @click="menusTap(itemn.info[1].value)">
-									<view class="pictrue skeleton-radius" :class="menuStyle?'':'on'">
-										<image :src="itemn.img" mode="aspectFill"></image>
-									</view>
-									<view class="menu-txt">{{ $t(itemn.info[0].value) }}</view>
-								</view>
-							</view>
-						</swiper-item>
-					</block>
-				</swiper>
-			</view>
-			<view class="dot acea-row row-center-wrapper" v-if="docConfig<2">
-				<view class="dot-item" :class="{ 'line_dot-item': docConfig === 0,'': docConfig === 1}" :style="active==index?'background:'+ dotColor:''" v-for="(item,index) in menuList"></view>
-			</view>
-		</view>
-		<view class="nav oneNav" v-else>
-			<scroll-view scroll-x="true" style="white-space: nowrap; display: flex" show-scrollbar="false">
-				<block v-for="(item, index) in menus" :key="index">
-					<view class="item" :style="'color:' + titleColor" @click="menusTap(item.info[1].value)">
-						<view class="pictrue skeleton-radius" :class="menuStyle?'':'on'">
-							<image :src="item.img" mode="aspectFill"></image>
-						</view>
-						<view class="menu-txt">{{ $t(item.info[0].value) }}</view>
-					</view>
-				</block>
-			</scroll-view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: 'menus',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			},
-			isSortType: {
-				type: String | Number,
-				default: 0
-			}
-		},
-		data() {
-			return {
-				interval: 3000,
-				duration: 500,
-				menus: this.dataConfig.menuConfig.list || [],
-				titleColor: this.dataConfig.titleColor.color[0].item,
-				mbConfig: this.dataConfig.mbConfig.val,
-				rowsNum: this.dataConfig.rowsNum.type,
-				number: this.dataConfig.number.type,
-				isMany: this.dataConfig.tabConfig.tabVal,
-				menuStyle: this.dataConfig.menuStyle.type,
-				docConfig: this.dataConfig.pointerStyle.type,
-				dotColor: this.dataConfig.pointerColor.color[0].item,
-				bgColor: this.dataConfig.bgColor.color[0].item,
-				bgStyle: this.dataConfig.bgStyle.type,
-				prConfig: this.dataConfig.prConfig.val,
-				navHigh: 0,
-				menuList: [],
-				active: 0
-			};
-		},
-		created() {},
-		mounted() {
-			if (this.rowsNum === 0) {
-				if (this.number === 0) {
-					this.pageNum(6)
-				} else if (this.number === 1) {
-					this.pageNum(8)
-				} else {
-					this.pageNum(10)
-				}
-			} else if (this.rowsNum === 1) {
-				if (this.number === 0) {
-					this.pageNum(9)
-				} else if (this.number === 1) {
-					this.pageNum(12)
-				} else {
-					this.pageNum(15)
-				}
-			} else {
-				if (this.number === 0) {
-					this.pageNum(12)
-				} else if (this.number === 1) {
-					this.pageNum(16)
-				} else {
-					this.pageNum(20)
-				}
-			}
-			this.$nextTick(() => {
-				if (this.menuList.length&&this.isMany) {
-					let that = this
-					// #ifdef H5
-					that.menuHeight()
-					// #endif
-					// #ifndef H5
-					setTimeout(() => {
-						that.menuHeight()
-					},100)
-					// #endif
-				}
-			})
-		},
-		methods: {
-			bannerfun(e) {
-				this.active = e.detail.current;
-			},
-			menuHeight(){
-				let that = this;
-				const query = uni.createSelectorQuery().in(this);
-				query.select('#nav0').boundingClientRect(data => {
-					that.navHigh = data.height;
-				}).exec();
-			},
-			pageNum(num) {
-				let count = Math.ceil(this.menus.length / num);
-				let goodArray = new Array();
-				for (let i = 0; i < count; i++) {
-					let list = this.menus.slice(i * num, i * num + num);
-					if (list.length)
-						goodArray.push({
-							list: list
-						});
-				}
-				this.$set(this, 'menuList', goodArray);
-			},
-			menusTap(url) {
-				if (url.indexOf("http") != -1) {
-					// #ifdef H5
-					location.href = url
-					// #endif
-					// #ifdef MP || APP-PLUS
-					uni.navigateTo({
-						url: `/pages/annex/web_view/index?url=${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.reLaunch({
-							url: url
-						})
-					}
-				}
-			}
-		}
-	};
-</script>
-
-<style lang="scss">
-	.dot {
-		width: 100%;
-		padding-bottom: 20rpx;
-	
-		.instruct {
-			width: 50rpx;
-			height: 36rpx;
-			line-height: 36rpx;
-			background-color: rgba(0, 0, 0, 0.8);
-			color: #fff;
-			border-radius: 16rpx;
-			font-size: 24rpx;
-			text-align: center;
-		}
-	
-		.dot-item {
-			width: 10rpx;
-			height: 10rpx;
-			background: rgba(0, 0, 0, .4);
-			border-radius: 50%;
-			margin: 0 4px;
-	
-			&.line_dot-item {
-				width: 20rpx;
-				height: 5rpx;
-				border-radius: 3rpx;
-			}
-		}
-	}
-	.nav {
-		&.oneNav{
-			padding-bottom: 25rpx;
-		}
-		.item {
-			margin-top: 30rpx;
-			width: 160rpx;
-			text-align: center;
-			font-size: 24rpx;
-			display: inline-block;
-
-			.pictrue {
-				width: 90rpx;
-				height: 90rpx;
-				margin: 0 auto;
-
-				image {
-					width: 100%;
-					height: 100%;
-					border-radius: 50%;
-				}
-
-				&.on {
-					image {
-						border-radius: 0;
-					}
-				}
-			}
-
-			.menu-txt {
-				margin-top: 15rpx;
-			}
-		}
-	}
-
-	.swiper {
-		z-index: 20;
-		position: relative;
-		overflow: hidden;
-		.nav {
-			.item {
-				width: 33.3333%;
-
-				&.four {
-					width: 25%;
-				}
-
-				&.five {
-					width: 20%;
-				}
-			}
-		}
-
-		swiper,
-		.swiper-item {
-			width: 100%;
-			display: block;
-		}
-	}
+<template>
+	<view v-show="!isSortType && menus.length" :class="bgStyle?'borderRadius15':''"
+		:style="{background:bgColor,margin:'0 '+prConfig*2+'rpx',marginTop:mbConfig*2+'rpx'}">
+		<view v-if="isMany">
+			<view class="swiper">
+				<swiper :interval="interval" :duration="duration" :style="'height:'+(navHigh*2+17)+'rpx;'"
+					@change='bannerfun'>
+					<block>
+						<swiper-item v-for="(item,indexw) in menuList" :key="indexw">
+							<view class="nav acea-row" :id="'nav' + indexw">
+								<view :style="'color:' + titleColor" class="item"
+									:class="number===1?'four':number===2?'five':''" v-for="(itemn,indexn) in item.list"
+									:key="indexn" @click="menusTap(itemn.info[1].value)">
+									<view class="pictrue skeleton-radius" :class="menuStyle?'':'on'">
+										<image :src="itemn.img" mode="aspectFill"></image>
+									</view>
+									<view class="menu-txt">{{ $t(itemn.info[0].value) }}</view>
+								</view>
+							</view>
+						</swiper-item>
+					</block>
+				</swiper>
+			</view>
+			<view class="dot acea-row row-center-wrapper" v-if="docConfig<2">
+				<view class="dot-item" :class="{ 'line_dot-item': docConfig === 0,'': docConfig === 1}"
+					:style="active==index?'background:'+ dotColor:''" v-for="(item,index) in menuList"></view>
+			</view>
+		</view>
+		<view class="nav oneNav" v-else>
+			<scroll-view scroll-x="true" style="white-space: nowrap; display: flex" show-scrollbar="false">
+				<block v-for="(item, index) in menus" :key="index">
+					<view class="item" :style="'color:' + titleColor" @click="menusTap(item.info[1].value)">
+						<view class="pictrue skeleton-radius" :class="menuStyle?'':'on'">
+							<image :src="item.img" mode="aspectFill"></image>
+						</view>
+						<view class="menu-txt">{{ $t(item.info[0].value) }}</view>
+					</view>
+				</block>
+			</scroll-view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'menus',
+		props: {
+			dataConfig: {
+				type: Object,
+				default: () => {}
+			},
+			isSortType: {
+				type: String | Number,
+				default: 0
+			}
+		},
+		data() {
+			return {
+				interval: 3000,
+				duration: 500,
+				menus: this.dataConfig.menuConfig.list || [],
+				titleColor: this.dataConfig.titleColor.color[0].item,
+				mbConfig: this.dataConfig.mbConfig.val,
+				rowsNum: this.dataConfig.rowsNum.type,
+				number: this.dataConfig.number.type,
+				isMany: this.dataConfig.tabConfig.tabVal,
+				menuStyle: this.dataConfig.menuStyle.type,
+				docConfig: this.dataConfig.pointerStyle.type,
+				dotColor: this.dataConfig.pointerColor.color[0].item,
+				bgColor: this.dataConfig.bgColor.color[0].item,
+				bgStyle: this.dataConfig.bgStyle.type,
+				prConfig: this.dataConfig.prConfig.val,
+				navHigh: 0,
+				menuList: [],
+				active: 0
+			};
+		},
+		created() {},
+		mounted() {
+			if (this.rowsNum === 0) {
+				if (this.number === 0) {
+					this.pageNum(6)
+				} else if (this.number === 1) {
+					this.pageNum(8)
+				} else {
+					this.pageNum(10)
+				}
+			} else if (this.rowsNum === 1) {
+				if (this.number === 0) {
+					this.pageNum(9)
+				} else if (this.number === 1) {
+					this.pageNum(12)
+				} else {
+					this.pageNum(15)
+				}
+			} else {
+				if (this.number === 0) {
+					this.pageNum(12)
+				} else if (this.number === 1) {
+					this.pageNum(16)
+				} else {
+					this.pageNum(20)
+				}
+			}
+			this.$nextTick(() => {
+				if (this.menuList.length && this.isMany) {
+					let that = this
+					// #ifdef H5
+					that.menuHeight()
+					// #endif
+					// #ifndef H5
+					setTimeout(() => {
+						that.menuHeight()
+					}, 100)
+					// #endif
+				}
+			})
+		},
+		methods: {
+			bannerfun(e) {
+				this.active = e.detail.current;
+			},
+			menuHeight() {
+				let that = this;
+				const query = uni.createSelectorQuery().in(this);
+				query.select('#nav0').boundingClientRect(data => {
+					that.navHigh = data.height;
+				}).exec();
+			},
+			pageNum(num) {
+				let count = Math.ceil(this.menus.length / num);
+				let goodArray = new Array();
+				for (let i = 0; i < count; i++) {
+					let list = this.menus.slice(i * num, i * num + num);
+					if (list.length)
+						goodArray.push({
+							list: list
+						});
+				}
+				this.$set(this, 'menuList', goodArray);
+			},
+			menusTap(url) {
+				this.$util.JumpPath(url);
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.dot {
+		width: 100%;
+		padding-bottom: 20rpx;
+
+		.instruct {
+			width: 50rpx;
+			height: 36rpx;
+			line-height: 36rpx;
+			background-color: rgba(0, 0, 0, 0.8);
+			color: #fff;
+			border-radius: 16rpx;
+			font-size: 24rpx;
+			text-align: center;
+		}
+
+		.dot-item {
+			width: 10rpx;
+			height: 10rpx;
+			background: rgba(0, 0, 0, .4);
+			border-radius: 50%;
+			margin: 0 4px;
+
+			&.line_dot-item {
+				width: 20rpx;
+				height: 5rpx;
+				border-radius: 3rpx;
+			}
+		}
+	}
+
+	.nav {
+		&.oneNav {
+			padding-bottom: 25rpx;
+		}
+
+		.item {
+			margin-top: 30rpx;
+			width: 160rpx;
+			text-align: center;
+			font-size: 24rpx;
+			display: inline-block;
+
+			.pictrue {
+				width: 90rpx;
+				height: 90rpx;
+				margin: 0 auto;
+
+				image {
+					width: 100%;
+					height: 100%;
+					border-radius: 50%;
+				}
+
+				&.on {
+					image {
+						border-radius: 0;
+					}
+				}
+			}
+
+			.menu-txt {
+				margin-top: 15rpx;
+			}
+		}
+	}
+
+	.swiper {
+		z-index: 20;
+		position: relative;
+		overflow: hidden;
+
+		.nav {
+			.item {
+				width: 33.3333%;
+
+				&.four {
+					width: 25%;
+				}
+
+				&.five {
+					width: 20%;
+				}
+			}
+		}
+
+		swiper,
+		.swiper-item {
+			width: 100%;
+			display: block;
+		}
+	}
 </style>

+ 133 - 137
template/uni-app/pages/index/diy/components/news.vue

@@ -1,138 +1,134 @@
-<template>
-	<view v-show="!isSortType">
-		<view class='news acea-row row-middle' :class="{pageOn:bgStyle===1}" v-if="itemNew.length" :style="'margin:0 '+prConfig*2+'rpx;margin-top:'+mbConfig*2+'rpx;color:'+txtColor+';background-color:'+bgColor+';'">
-			<!-- ../../../static/images/news.png -->
-			<view class='pictrue skeleton-rect'>
-				<image :src='logoConfig'></image>
-			</view>
-			<view class='swiperTxt skeleton-rect'>
-				<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 @click="jump(item.chiild[1].val)" class='acea-row row-between-wrapper'>
-								<view class='text acea-row row-between-wrapper'>
-									<view class='newsTitle line1'
-										:style="'text-align:'+ (txtStyle==1?'center':txtStyle==2?'right':'left') +';color:'+txtColor+';'">
-										{{item.chiild[0].val}}</view>
-								</view>
-								<view class='iconfont icon-xiangyou'></view>
-							</view>
-						</swiper-item>
-					</block>
-				</swiper>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: 'news',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			},
-			isSortType: {
-				type: String | Number,
-				default: 0
-			}
-		},
-		data() {
-			return {
-				indicatorDots: false,
-				autoplay: true,
-				duration: 500,
-				itemNew: this.dataConfig.listConfig.list,
-				logoConfig: this.dataConfig.logoConfig.url,
-				mbConfig: this.dataConfig.mbConfig.val,
-				txtStyle: this.dataConfig.txtStyle.type,
-				txtColor: this.dataConfig.txtColor.color[0].item,
-				bgColor: this.dataConfig.bgColor.color[0].item,
-				bgStyle: this.dataConfig.bgStyle.type,
-				prConfig: this.dataConfig.prConfig.val
-			};
-		},
-		created() {},
-		mounted() {},
-		methods: {
-			jump(url){
-				uni.navigateTo({
-					url:url,
-					fail:()=>{
-						uni.switchTab({
-							url:url
-						})
-					}
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.pageOn{
-	    border-radius: 12rpx!important;
-	}
-	.news {
-		display: flex;
-		align-items: center;
-		flex-wrap: nowrap;
-		height: 77rpx;
-		border-top: 1rpx solid #f4f4f4;
-		padding: 0 20rpx;
-		box-shadow: 0 10rpx 30rpx #f5f5f5;
-	}
-
-	.news .pictrue {
-		width: 130rpx;
-		height: 36rpx;
-		border-right: 1rpx solid #ddd;
-		padding-right: 23rpx;
-		box-sizing: content-box;
-	}
-
-	.news .pictrue image {
-		width: 100%;
-		height: 100%;
-	}
-
-	.news .swiperTxt {
-		width: 523rpx;
-		height: 100%;
-		line-height: 77rpx;
-		overflow: hidden;
-		margin-left: 22rpx;
-	}
-
-	.news .swiperTxt .text {
-		width: 89%;
-	}
-
-	.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: 100%;
-		font-size: 24rpx;
-		color: #666;
-	}
-
-	.news .swiperTxt .iconfont {
-		font-size: 28rpx;
-		color: #888;
-	}
-
-	.news .swiperTxt swiper {
-		height: 100%;
-	}
+<template>
+	<view v-show="!isSortType">
+		<view class='news acea-row row-middle' :class="{pageOn:bgStyle===1}" v-if="itemNew.length"
+			:style="'margin:0 '+prConfig*2+'rpx;margin-top:'+mbConfig*2+'rpx;color:'+txtColor+';background-color:'+bgColor+';'">
+			<!-- ../../../static/images/news.png -->
+			<view class='pictrue skeleton-rect'>
+				<image :src='logoConfig'></image>
+			</view>
+			<view class='swiperTxt skeleton-rect'>
+				<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 @click="jump(item.chiild[1].val)" class='acea-row row-between-wrapper'>
+								<view class='text acea-row row-between-wrapper'>
+									<view class='newsTitle line1'
+										:style="'text-align:'+ (txtStyle==1?'center':txtStyle==2?'right':'left') +';color:'+txtColor+';'">
+										{{item.chiild[0].val}}
+									</view>
+								</view>
+								<view class='iconfont icon-xiangyou'></view>
+							</view>
+						</swiper-item>
+					</block>
+				</swiper>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'news',
+		props: {
+			dataConfig: {
+				type: Object,
+				default: () => {}
+			},
+			isSortType: {
+				type: String | Number,
+				default: 0
+			}
+		},
+		data() {
+			return {
+				indicatorDots: false,
+				autoplay: true,
+				duration: 500,
+				itemNew: this.dataConfig.listConfig.list,
+				logoConfig: this.dataConfig.logoConfig.url,
+				mbConfig: this.dataConfig.mbConfig.val,
+				txtStyle: this.dataConfig.txtStyle.type,
+				txtColor: this.dataConfig.txtColor.color[0].item,
+				bgColor: this.dataConfig.bgColor.color[0].item,
+				bgStyle: this.dataConfig.bgStyle.type,
+				prConfig: this.dataConfig.prConfig.val
+			};
+		},
+		created() {},
+		mounted() {},
+		methods: {
+			jump(url) {
+				this.$util.JumpPath(url);
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.pageOn {
+		border-radius: 12rpx !important;
+	}
+
+	.news {
+		display: flex;
+		align-items: center;
+		flex-wrap: nowrap;
+		height: 77rpx;
+		border-top: 1rpx solid #f4f4f4;
+		padding: 0 20rpx;
+		box-shadow: 0 10rpx 30rpx #f5f5f5;
+	}
+
+	.news .pictrue {
+		width: 130rpx;
+		height: 36rpx;
+		border-right: 1rpx solid #ddd;
+		padding-right: 23rpx;
+		box-sizing: content-box;
+	}
+
+	.news .pictrue image {
+		width: 100%;
+		height: 100%;
+	}
+
+	.news .swiperTxt {
+		width: 523rpx;
+		height: 100%;
+		line-height: 77rpx;
+		overflow: hidden;
+		margin-left: 22rpx;
+	}
+
+	.news .swiperTxt .text {
+		width: 89%;
+	}
+
+	.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: 100%;
+		font-size: 24rpx;
+		color: #666;
+	}
+
+	.news .swiperTxt .iconfont {
+		font-size: 28rpx;
+		color: #888;
+	}
+
+	.news .swiperTxt swiper {
+		height: 100%;
+	}
 </style>

+ 310 - 330
template/uni-app/pages/index/diy/components/pictureCube.vue

@@ -1,331 +1,311 @@
-<template>
-	<view class="pictureCube skeleton-rect" :class="{pageOn:bgStyle===1}"
-		:style="{margin:'0 '+prConfig*2+'rpx',marginTop:slider*2+'rpx',background:bgColor}" v-if="picList.length"
-		v-show="!isSortType">
-		<view class="advertItem01" v-for="(item,index) in picList" :key="index" v-if="style==0" @click="goDetail(item)">
-			<image :src="item.image" mode="widthFix"></image>
-		</view>
-		<view class="advertItem02 acea-row" v-if="style==1">
-			<view class="item" v-for="(item,index) in picList" :key="index" @click="goDetail(item)">
-				<image :src="item.image" mode="aspectFill" :style="'height:'+ imageH +'rpx;'"></image>
-			</view>
-		</view>
-		<view class="advertItem02 advertItem03 acea-row" v-if="style==2">
-			<view class="item" v-for="(item,index) in picList" :key="index" @click="goDetail(item)">
-				<image :src="item.image" mode="aspectFill" :style="'height:'+ imageH +'rpx;'"></image>
-			</view>
-		</view>
-		<view class="advertItem04 acea-row" v-if="style==3">
-			<view class="item" @click="goDetail(picList[0])">
-				<image :src="picList[0].image"></image>
-			</view>
-			<view class="item">
-				<view class="pic" @click="goDetail(picList[1])">
-					<image :src="picList[1].image"></image>
-				</view>
-				<view class="pic" @click="goDetail(picList[2])">
-					<image :src="picList[2].image"></image>
-				</view>
-			</view>
-		</view>
-		<view class="advertItem02 advertItem05 acea-row" v-if="style==4">
-			<view class="item" v-for="(item,index) in picList" :key="index" @click="goDetail(item)">
-				<image :src="item.image" mode="aspectFill" :style="'height:'+ imageH +'rpx;'"></image>
-			</view>
-		</view>
-		<view class="advertItem02 advertItem06 acea-row" v-if="style==5">
-			<view class="item" v-for="(item,index) in picList" :key="index" @click="goDetail(item)">
-				<image :src="item.image" mode="aspectFill"></image>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: 'pictureCube',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			},
-			isSortType: {
-				type: String | Number,
-				default: 0
-			}
-		},
-		data() {
-			return {
-				picList: this.dataConfig.picStyle.picList,
-				style: this.dataConfig.tabConfig.tabVal,
-				bgStyle: this.dataConfig.bgStyle.type,
-				prConfig: this.dataConfig.prConfig.val,
-				slider: this.dataConfig.mbConfig.val,
-				bgColor: this.dataConfig.bgColor.color[0].item,
-				widthC: '',
-				imageH: ''
-			};
-		},
-		mounted() {
-			if (this.picList.length) {
-				let that = this;
-				this.$nextTick((e) => {
-					if (this.style == 1) {
-						this.widthC = 375
-					} else if (this.style == 2) {
-						this.widthC = 250
-					} else if (this.style == 4) {
-						this.widthC = 188
-					}
-					uni.getImageInfo({
-						src: that.setDomain(that.picList[0].image),
-						success: (res) => {
-							if (res && res.height > 0) {
-								let height = res.height * ((that.widthC - that.prConfig * 2) / res
-									.width)
-								that.$set(that, 'imageH', height);
-							} else {
-								that.$set(that, 'imageH', (that.widthC - that.prConfig * 2) * 2);
-							}
-						},
-						fail: function(error) {
-							that.$set(that, 'imageH', (that.widthC - that.prConfig * 2) * 2);
-						}
-					})
-				})
-			}
-		},
-		created() {},
-		methods: {
-			//替换安全域名
-			setDomain: function(url) {
-				url = url ? url.toString() : '';
-				//本地调试打开,生产请注销
-				if (url.indexOf("https://") > -1) return url;
-				else return url.replace('http://', 'https://');
-			},
-			goDetail(url) {
-				let urls = url.link
-				if (urls.indexOf("http") != -1) {
-					// #ifdef H5
-					location.href = urls
-					// #endif
-					// #ifdef MP || APP-PLUS
-					uni.navigateTo({
-						url: `/pages/annex/web_view/index?url=${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
-						})
-					}
-				}
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	.pageOn {
-		border-radius: 24rpx !important;
-
-		.advertItem01 {
-			image {
-				border-radius: 20rpx;
-			}
-		}
-
-		.advertItem02 {
-			.item {
-				&:nth-child(1) {
-					image {
-						border-radius: 20rpx 0 0 20rpx
-					}
-				}
-
-				&:nth-child(2) {
-					image {
-						border-radius: 0 20rpx 20rpx 0
-					}
-				}
-			}
-		}
-
-		.advertItem03 {
-			.item {
-				&:nth-child(1) {
-					image {
-						border-radius: 20rpx 0 0 20rpx
-					}
-				}
-
-				&:nth-child(2) {
-					image {
-						border-radius: 0
-					}
-				}
-
-				&:nth-child(3) {
-					image {
-						border-radius: 0 20rpx 20rpx 0
-					}
-				}
-			}
-		}
-
-		.advertItem04 {
-			.item {
-				&:nth-child(1) {
-					image {
-						border-radius: 20rpx 0 0 20rpx
-					}
-				}
-
-				&:nth-child(2) {
-					.pic {
-						&:nth-child(1) {
-							image {
-								border-radius: 0 20rpx 0 0
-							}
-						}
-
-						&:nth-child(2) {
-							image {
-								border-radius: 0 0 20rpx 0
-							}
-						}
-					}
-				}
-			}
-		}
-
-		.advertItem05 {
-			.item {
-				&:nth-child(1) {
-					image {
-						border-radius: 20rpx 0 0 20rpx
-					}
-				}
-
-				&:nth-child(2) {
-					image {
-						border-radius: 0
-					}
-				}
-
-				&:nth-child(4) {
-					image {
-						border-radius: 0 20rpx 20rpx 0
-					}
-				}
-			}
-		}
-
-		.advertItem06 {
-			.item {
-				&:nth-child(1) {
-					image {
-						border-radius: 20rpx 0 0 0
-					}
-				}
-
-				&:nth-child(2) {
-					image {
-						border-radius: 0 20rpx 0 0
-					}
-				}
-
-				&:nth-child(3) {
-					image {
-						border-radius: 0 0 0 20rpx
-					}
-				}
-
-				&:nth-child(4) {
-					image {
-						border-radius: 0 0 20rpx 0
-					}
-				}
-			}
-		}
-	}
-
-	.pictureCube {
-		background-color: #fff;
-
-		.advertItem01 {
-			width: 100%;
-			height: auto;
-
-			image {
-				width: 100%;
-				height: 100%;
-				display: block;
-			}
-		}
-
-		.advertItem02 {
-			// /deep/uni-image>img{
-			// 	position: unset;
-			// }
-			width: 100%;
-
-			.item {
-				width: 50%;
-				height: auto;
-
-				image {
-					width: 100%;
-					height: 100%;
-					display: block;
-				}
-			}
-		}
-
-		.advertItem03 {
-			.item {
-				width: 33.3333%;
-			}
-		}
-
-		.advertItem04 {
-			width: 100%;
-
-			.item {
-				width: 50%;
-				height: 376rpx;
-
-				.pic {
-					width: 100%;
-					height: 188rpx;
-				}
-
-				image {
-					width: 100%;
-					height: 100%;
-					display: block;
-				}
-			}
-		}
-
-		.advertItem05 {
-			.item {
-				width: 25%;
-			}
-		}
-
-		.advertItem06 {
-			.item {
-				width: 50%;
-				height: 188rpx;
-			}
-		}
-	}
+<template>
+	<view class="pictureCube skeleton-rect" :class="{pageOn:bgStyle===1}"
+		:style="{margin:'0 '+prConfig*2+'rpx',marginTop:slider*2+'rpx',background:bgColor}" v-if="picList.length"
+		v-show="!isSortType">
+		<view class="advertItem01" v-for="(item,index) in picList" :key="index" v-if="style==0" @click="goDetail(item)">
+			<image :src="item.image" mode="widthFix"></image>
+		</view>
+		<view class="advertItem02 acea-row" v-if="style==1">
+			<view class="item" v-for="(item,index) in picList" :key="index" @click="goDetail(item)">
+				<image :src="item.image" mode="aspectFill" :style="'height:'+ imageH +'rpx;'"></image>
+			</view>
+		</view>
+		<view class="advertItem02 advertItem03 acea-row" v-if="style==2">
+			<view class="item" v-for="(item,index) in picList" :key="index" @click="goDetail(item)">
+				<image :src="item.image" mode="aspectFill" :style="'height:'+ imageH +'rpx;'"></image>
+			</view>
+		</view>
+		<view class="advertItem04 acea-row" v-if="style==3">
+			<view class="item" @click="goDetail(picList[0])">
+				<image :src="picList[0].image"></image>
+			</view>
+			<view class="item">
+				<view class="pic" @click="goDetail(picList[1])">
+					<image :src="picList[1].image"></image>
+				</view>
+				<view class="pic" @click="goDetail(picList[2])">
+					<image :src="picList[2].image"></image>
+				</view>
+			</view>
+		</view>
+		<view class="advertItem02 advertItem05 acea-row" v-if="style==4">
+			<view class="item" v-for="(item,index) in picList" :key="index" @click="goDetail(item)">
+				<image :src="item.image" mode="aspectFill" :style="'height:'+ imageH +'rpx;'"></image>
+			</view>
+		</view>
+		<view class="advertItem02 advertItem06 acea-row" v-if="style==5">
+			<view class="item" v-for="(item,index) in picList" :key="index" @click="goDetail(item)">
+				<image :src="item.image" mode="aspectFill"></image>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'pictureCube',
+		props: {
+			dataConfig: {
+				type: Object,
+				default: () => {}
+			},
+			isSortType: {
+				type: String | Number,
+				default: 0
+			}
+		},
+		data() {
+			return {
+				picList: this.dataConfig.picStyle.picList,
+				style: this.dataConfig.tabConfig.tabVal,
+				bgStyle: this.dataConfig.bgStyle.type,
+				prConfig: this.dataConfig.prConfig.val,
+				slider: this.dataConfig.mbConfig.val,
+				bgColor: this.dataConfig.bgColor.color[0].item,
+				widthC: '',
+				imageH: ''
+			};
+		},
+		mounted() {
+			if (this.picList.length) {
+				let that = this;
+				this.$nextTick((e) => {
+					if (this.style == 1) {
+						this.widthC = 375
+					} else if (this.style == 2) {
+						this.widthC = 250
+					} else if (this.style == 4) {
+						this.widthC = 188
+					}
+					uni.getImageInfo({
+						src: that.setDomain(that.picList[0].image),
+						success: (res) => {
+							if (res && res.height > 0) {
+								let height = res.height * ((that.widthC - that.prConfig * 2) / res
+									.width)
+								that.$set(that, 'imageH', height);
+							} else {
+								that.$set(that, 'imageH', (that.widthC - that.prConfig * 2) * 2);
+							}
+						},
+						fail: function(error) {
+							that.$set(that, 'imageH', (that.widthC - that.prConfig * 2) * 2);
+						}
+					})
+				})
+			}
+		},
+		created() {},
+		methods: {
+			//替换安全域名
+			setDomain: function(url) {
+				url = url ? url.toString() : '';
+				//本地调试打开,生产请注销
+				if (url.indexOf("https://") > -1) return url;
+				else return url.replace('http://', 'https://');
+			},
+			goDetail(url) {
+				let urls = url.link
+				this.$util.JumpPath(urls);
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.pageOn {
+		border-radius: 24rpx !important;
+
+		.advertItem01 {
+			image {
+				border-radius: 20rpx;
+			}
+		}
+
+		.advertItem02 {
+			.item {
+				&:nth-child(1) {
+					image {
+						border-radius: 20rpx 0 0 20rpx
+					}
+				}
+
+				&:nth-child(2) {
+					image {
+						border-radius: 0 20rpx 20rpx 0
+					}
+				}
+			}
+		}
+
+		.advertItem03 {
+			.item {
+				&:nth-child(1) {
+					image {
+						border-radius: 20rpx 0 0 20rpx
+					}
+				}
+
+				&:nth-child(2) {
+					image {
+						border-radius: 0
+					}
+				}
+
+				&:nth-child(3) {
+					image {
+						border-radius: 0 20rpx 20rpx 0
+					}
+				}
+			}
+		}
+
+		.advertItem04 {
+			.item {
+				&:nth-child(1) {
+					image {
+						border-radius: 20rpx 0 0 20rpx
+					}
+				}
+
+				&:nth-child(2) {
+					.pic {
+						&:nth-child(1) {
+							image {
+								border-radius: 0 20rpx 0 0
+							}
+						}
+
+						&:nth-child(2) {
+							image {
+								border-radius: 0 0 20rpx 0
+							}
+						}
+					}
+				}
+			}
+		}
+
+		.advertItem05 {
+			.item {
+				&:nth-child(1) {
+					image {
+						border-radius: 20rpx 0 0 20rpx
+					}
+				}
+
+				&:nth-child(2) {
+					image {
+						border-radius: 0
+					}
+				}
+
+				&:nth-child(4) {
+					image {
+						border-radius: 0 20rpx 20rpx 0
+					}
+				}
+			}
+		}
+
+		.advertItem06 {
+			.item {
+				&:nth-child(1) {
+					image {
+						border-radius: 20rpx 0 0 0
+					}
+				}
+
+				&:nth-child(2) {
+					image {
+						border-radius: 0 20rpx 0 0
+					}
+				}
+
+				&:nth-child(3) {
+					image {
+						border-radius: 0 0 0 20rpx
+					}
+				}
+
+				&:nth-child(4) {
+					image {
+						border-radius: 0 0 20rpx 0
+					}
+				}
+			}
+		}
+	}
+
+	.pictureCube {
+		background-color: #fff;
+
+		.advertItem01 {
+			width: 100%;
+			height: auto;
+
+			image {
+				width: 100%;
+				height: 100%;
+				display: block;
+			}
+		}
+
+		.advertItem02 {
+			// /deep/uni-image>img{
+			// 	position: unset;
+			// }
+			width: 100%;
+
+			.item {
+				width: 50%;
+				height: auto;
+
+				image {
+					width: 100%;
+					height: 100%;
+					display: block;
+				}
+			}
+		}
+
+		.advertItem03 {
+			.item {
+				width: 33.3333%;
+			}
+		}
+
+		.advertItem04 {
+			width: 100%;
+
+			.item {
+				width: 50%;
+				height: 376rpx;
+
+				.pic {
+					width: 100%;
+					height: 188rpx;
+				}
+
+				image {
+					width: 100%;
+					height: 100%;
+					display: block;
+				}
+			}
+		}
+
+		.advertItem05 {
+			.item {
+				width: 25%;
+			}
+		}
+
+		.advertItem06 {
+			.item {
+				width: 50%;
+				height: 188rpx;
+			}
+		}
+	}
 </style>

+ 1 - 21
template/uni-app/pages/index/diy/components/swiperBg.vue

@@ -117,27 +117,7 @@
 			},
 			goDetail(url) {
 				let urls = url.info[1].value
-				if (urls.indexOf("http") != -1) {
-					// #ifdef H5
-					location.href = urls
-					// #endif
-					// #ifdef MP || APP-PLUS
-					uni.navigateTo({
-						url: `/pages/annex/web_view/index?url=${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
-						})
-					}
-				}
+				this.$util.JumpPath(urls);
 			}
 		}
 	}

+ 74 - 66
template/uni-app/pages/index/diy/components/titles.vue

@@ -1,67 +1,75 @@
-<template>
-	<view v-show="!isSortType">
-		<view v-if="titleConfig" :style="'margin:0 '+prConfig*2+'rpx;'">
-			<navigator :url="linkConfig" hover-class="none" class='title' :class="[(textPosition==0?'left':textPosition==2?'right':''),(textStyle==1?'italics':textStyle==2?'blod':''), (bgStyle===0?'':'borderRadius15')]" :style="'font-size:'+fontSize+'rpx;margin-top:'+mbConfig*2+'rpx;background-color:'+titleColor+';color:'+themeColor+';'">
-				<div>{{titleConfig}}</div>
-			</navigator>
-		</view>
-	</view>
-
-</template>
-
-<script>
-	export default {
-		name: 'titles',
-		props: {
-			dataConfig: {
-				type: Object,
-				default: () => {}
-			},
-			isSortType:{
-				type: String | Number,
-				default:0
-			}
-		},
-		data() {
-			return {
-				fontSize:this.dataConfig.fontSize.val*2,
-				linkConfig:this.dataConfig.linkConfig.value,
-				mbConfig:this.dataConfig.mbConfig.val,
-				textPosition:this.dataConfig.textPosition.type,
-				textStyle:this.dataConfig.textStyle.type,
-				titleColor:this.dataConfig.titleColor.color[0].item,
-				titleConfig:this.dataConfig.titleConfig.value,
-				themeColor:this.dataConfig.themeColor.color[0].item,
-				prConfig:this.dataConfig.prConfig.val,
-				bgStyle:this.dataConfig.bgStyle.type
-			};
-		},
-		created() {},
-		methods: {}
-	}
-</script>
-
-<style lang="scss">
-	.title{
-		font-size: 40rpx;
-		color: #282828;
-		text-align: center;
-		width: 100%;
-		padding: 20rpx;
-		box-sizing: border-box;
-		
-		&.left{
-			text-align: left;
-		}
-		&.right{
-			text-align: right;
-		}
-		&.blod{
-			font-weight: bold;
-		}
-		&.italics{
-			font-style: italic;
-		}
-	}
-	
+<template>
+	<view v-show="!isSortType">
+		<view v-if="titleConfig" :style="'margin:0 '+prConfig*2+'rpx;'">
+			<view @click="goLink" class='title'
+				:class="[(textPosition==0?'left':textPosition==2?'right':''),(textStyle==1?'italics':textStyle==2?'blod':''), (bgStyle===0?'':'borderRadius15')]"
+				:style="'font-size:'+fontSize+'rpx;margin-top:'+mbConfig*2+'rpx;background-color:'+titleColor+';color:'+themeColor+';'">
+				<div>{{titleConfig}}</div>
+			</view>
+		</view>
+	</view>
+
+</template>
+
+<script>
+	export default {
+		name: 'titles',
+		props: {
+			dataConfig: {
+				type: Object,
+				default: () => {}
+			},
+			isSortType: {
+				type: String | Number,
+				default: 0
+			}
+		},
+		data() {
+			return {
+				fontSize: this.dataConfig.fontSize.val * 2,
+				linkConfig: this.dataConfig.linkConfig.value,
+				mbConfig: this.dataConfig.mbConfig.val,
+				textPosition: this.dataConfig.textPosition.type,
+				textStyle: this.dataConfig.textStyle.type,
+				titleColor: this.dataConfig.titleColor.color[0].item,
+				titleConfig: this.dataConfig.titleConfig.value,
+				themeColor: this.dataConfig.themeColor.color[0].item,
+				prConfig: this.dataConfig.prConfig.val,
+				bgStyle: this.dataConfig.bgStyle.type
+			};
+		},
+		created() {},
+		methods: {
+			goLink() {
+				this.$util.JumpPath(this.linkConfig);
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.title {
+		font-size: 40rpx;
+		color: #282828;
+		text-align: center;
+		width: 100%;
+		padding: 20rpx;
+		box-sizing: border-box;
+
+		&.left {
+			text-align: left;
+		}
+
+		&.right {
+			text-align: right;
+		}
+
+		&.blod {
+			font-weight: bold;
+		}
+
+		&.italics {
+			font-style: italic;
+		}
+	}
 </style>

+ 1 - 1
template/uni-app/pages/index/index.vue

@@ -68,7 +68,7 @@
 					this.$util.Tips({
 						title: err
 					});
-					// #endiff
+					// #endif
 				})
 			},
 			// 微信分享;

+ 1 - 18
template/uni-app/pages/index/visualization/components/activity.vue

@@ -81,24 +81,7 @@
 		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
-							})
-						}
-					}
+					this.$util.JumpPath(url);
 				})
 			}
 		}

+ 1 - 19
template/uni-app/pages/index/visualization/components/mBanner.vue

@@ -103,25 +103,7 @@
 			},
 			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
-							})
-						}
-					}
+					this.$util.JumpPath(urls);
 				})
 			}
 		}

+ 1 - 20
template/uni-app/pages/index/visualization/components/menus.vue

@@ -71,26 +71,7 @@
 		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
-							})
-						}
-					}
+					this.$util.JumpPath(url);
 				})
 			}
 		}

+ 1 - 3
template/uni-app/pages/index/visualization/components/newGoods.vue

@@ -207,9 +207,7 @@
 			},
 			gopage(url) {
 				goPage().then(res => {
-					uni.navigateTo({
-						url: url
-					})
+					this.$util.JumpPath(url);
 				})
 			},
 			goDetail(item) {

+ 174 - 190
template/uni-app/pages/index/visualization/components/news.vue

@@ -1,191 +1,175 @@
-<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%;
-	}
+<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 => {
+					this.$util.JumpPath(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>

+ 4 - 6
template/uni-app/pages/index/visualization/components/popular.vue

@@ -223,9 +223,7 @@
 			},
 			gopage(url) {
 				goPage().then(res => {
-					uni.navigateTo({
-						url: url
-					})
+					this.$util.JumpPath(url);
 				})
 			}
 		}
@@ -235,7 +233,7 @@
 <style lang="scss" scoped>
 	/deep/.uni-scroll-view-content,
 	.scroll-view_x {
-		display: flex;
+		display: flex;
 		flex-wrap: nowrap;
 	}
 
@@ -302,8 +300,8 @@
 		padding: 20rpx 20rpx;
 		box-sizing: border-box;
 		display: flex;
-		justify-content: space-between;
-		width: 100%;
+		justify-content: space-between;
+		width: 100%;
 		white-space: nowrap;
 	}
 

+ 1 - 3
template/uni-app/pages/index/visualization/components/promotion.vue

@@ -138,9 +138,7 @@
 			},
 			gopage(url) {
 				goPage().then(res => {
-					uni.navigateTo({
-						url: url
-					})
+					this.$util.JumpPath(url);
 				})
 			}
 		}

+ 1 - 27
template/uni-app/pages/index/visualization/components/swiperBg.vue

@@ -122,33 +122,7 @@
 		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.switchTab({
-									url: urls,
-									fail() {
-										uni.reLaunch({
-											url: urls
-										})
-									}
-								})
-
-							}
-						}
-					}
+					this.$util.JumpPath(url);
 				})
 			},
 			//替换安全域名

+ 395 - 410
template/uni-app/pages/points_mall/index.vue

@@ -1,411 +1,396 @@
-<template>
-	<view :style="colorStyle">
-		<view class="points-swiper">
-			<image class="bag" src="../../static/images/jf-head.png" mode=""></image>
-			<view class="swiper">
-				<swiper indicator-dots="true" :autoplay="autoplay" :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>
-							<image :src="item.img" class="slide-image" @click="goPages(item)"></image>
-						</swiper-item>
-					</block>
-				</swiper>
-			</view>
-		</view>
-		<view class="model">
-			<view class="model-list" v-for="(model,index) in modelList" :key="index" @click="jump(model.url)">
-				<image class="img" :src="model.imgUrl" mode=""></image>
-				<text>{{model.title}}</text>
-			</view>
-		</view>
-		<view class="body">
-			<view class="body-title">
-				<text class="title">{{$t(`大家都在换`)}}</text>
-				<text class="jump-trip" @click="jumpMore">{{$t(`查看更多`)}}
-					<text class="iconfont icon-xiangyou"></text></text>
-			</view>
-			<view class="product-list" v-if="goodList.length">
-				<view class="product-item" v-for="(item, index) in goodList" @click="goGoodsDetail(item)">
-					<image :src="item.image"></image>
-					<view class="info">
-						<view class="title line1">{{ item.title }}</view>
-						<view class="price-box">
-							{{ item.price }} {{$t(`积分`)}}
-						</view>
-						<view class="sales">{{item.sales}}{{$t(`人兑换`)}}</view>
-					</view>
-				</view>
-			</view>
-			<view v-else class="no-goods">
-				<image :src="imgHost + '/statics/images/no-thing.png'" mode=""></image>
-				<view class="fontimg">{{$t(`暂无商品,去看点别的吧`)}}</view>
-			</view>
-			<view class="footer">
-				<view class="body-title">
-					<text class="title">{{$t(`轻松赚积分`)}}</text>
-					<text></text>
-				</view>
-				<view class="footer-list">
-					<view class="list-left">
-						<image class="icon-sty" src="./static/go-shoping.png" mode=""></image>
-						<view class="list-left-right">
-							<view class="title">
-								{{$t(`购买商品`)}}
-							</view>
-							<view class="trip">
-								{{$t(`购买商品可获得积分奖励`)}}
-							</view>
-						</view>
-					</view>
-					<navigator url="/pages/index/index" open-type="switchTab" class="right-box">
-						<text class="go-jump">
-							{{$t(`去完成`)}}
-						</text>
-					</navigator>
-				</view>
-				<view class="footer-list">
-					<view class="list-left">
-						<image class="icon-sty" src="./static/everyday.png" mode=""></image>
-						<view class="list-left-right">
-							<view class="title">
-								{{$t(`每日签到活动`)}}
-							</view>
-							<view class="trip">
-								{{$t(`每日签到可获得积分奖励`)}}
-							</view>
-						</view>
-					</view>
-					<navigator url="/pages/users/user_sgin/index" class="right-box">
-						<text class="go-jump">
-							{{$t(`去完成`)}}
-						</text>
-					</navigator>
-				</view>
-				<view class="footer-list">
-					<view class="list-left">
-						<image class="icon-sty" src="./static/luck-draw.png" mode=""></image>
-						<view class="list-left-right">
-							<view class="title">
-								{{$t(`九宫格抽奖活动`)}}
-							</view>
-							<view class="trip">
-								{{$t(`幸运抽奖可获得积分奖励`)}}
-							</view>
-						</view>
-					</view>
-					<navigator url="/pages/goods/lottery/grids/index?type=1" class="right-box">
-						<text class="go-jump">
-							{{$t(`去完成`)}}
-						</text>
-					</navigator>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	// import swipers from './components/swiper.vue';
-	import {
-		mapGetters
-	} from 'vuex';
-	import {
-		getStoreIntegral
-	} from '@/api/points_mall.js'
-	import {
-		goShopDetail
-	} from '@/libs/order.js';
-	import colors from "@/mixins/color";
-	import {HTTP_REQUEST_URL} from '@/config/app';
-	export default {
-		components: {
-			// swipers
-		},
-		mixins: [colors],
-		data() {
-			return {
-				imgHost:HTTP_REQUEST_URL,
-				autoplay: true,
-				circular: true,
-				interval: 3000,
-				duration: 500,
-				imgUrls: [],
-				goodList: [],
-				modelList: [{
-						title: this.$t(`我的积分`),
-						imgUrl: './static/my-point.png',
-						url: "/pages/users/user_integral/index"
-					},
-					{
-						title: this.$t(`每日签到`),
-						imgUrl: './static/sign-in.png',
-						url: '/pages/users/user_sgin/index'
-					}, {
-						title: this.$t(`积分抽奖`),
-						imgUrl: './static/points-lottery.png',
-						url: '/pages/goods/lottery/grids/index?type=1'
-					}, {
-						title: this.$t(`兑换记录`),
-						imgUrl: './static/exchange.png',
-						url: "/pages/points_mall/exchange_record"
-					},
-				]
-			}
-		},
-		computed: mapGetters(['isLogin']),
-		onLoad() {
-			this.getStoreIntegral()
-		},
-		watch: {
-			isLogin: {
-				handler: function(newV, oldV) {
-					if (newV == true) {
-						this.getStoreIntegral();
-					}
-				},
-				deep: true
-			},
-		},
-		methods: {
-			getStoreIntegral() {
-				getStoreIntegral().then(res => {
-					this.imgUrls = res.data.banner
-					this.goodList = res.data.list
-				})
-			},
-			// 去商品详情
-			goGoodsDetail(item) {
-				goShopDetail(item).then(res => {
-					uni.navigateTo({
-						url: `/pages/points_mall/integral_goods_details?id=${item.id}`
-					});
-				});
-			},
-			jumpMore() {
-				uni.navigateTo({
-					url: '/pages/points_mall/integral_goods_list'
-				})
-			},
-			goPages(item) {
-				let url = item.link;
-				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',
-							'/pages/index/index'
-						]
-						.indexOf(url) == -1) {
-						uni.navigateTo({
-							url: url
-						})
-					} else {
-						uni.switchTab({
-							url: url
-						})
-					}
-				}
-			},
-			jump(url) {
-				uni.navigateTo({
-					url
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.swiper,
-	swiper,
-	swiper-item,
-	.slide-image {
-		width: 100%;
-		height: 280rpx;
-	}
-
-	/deep/ .uni-swiper-wrapper {
-		border-radius: 10rpx;
-	}
-
-	.swiper {
-		padding: 20rpx;
-	}
-
-	.points-swiper {
-		position: relative;
-		width: 100%;
-		background-color: #fff;
-
-		.bag {
-			position: absolute;
-			width: 100%;
-			height: 285rpx;
-		}
-
-		.points-swiper-sty {
-			padding: 20rpx 26rpx;
-		}
-	}
-
-	.model {
-		display: flex;
-		justify-content: space-between;
-		padding: 56rpx 42rpx;
-		background-color: #fff;
-	}
-
-	.model-list {
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-		justify-content: center;
-		font-size: 26rpx;
-		color: #333;
-		margin-top: 27rpx;
-		font-weight: 500;
-
-		.img {
-			width: 84rpx;
-			height: 84rpx;
-			margin-bottom: 19rpx;
-		}
-
-	}
-
-	.body {
-		background-color: #fff;
-		padding: 0 30rpx;
-		margin-top: 20rpx;
-
-		.body-title {
-			display: flex;
-			justify-content: space-between;
-			padding: 30rpx 0 10rpx 0;
-
-			.title {
-				font-size: 32rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-			}
-
-			.jump-trip,
-			.icon-xiangyou {
-				font-size: 24rpx;
-				color: #999999;
-			}
-		}
-
-		.product-list {
-			display: flex;
-			flex-wrap: wrap;
-			justify-content: space-between;
-			margin-top: 30rpx;
-
-			.product-item {
-				position: relative;
-				width: 334rpx;
-				background: #fff;
-				border-radius: 10rpx;
-				margin-bottom: 20rpx;
-				box-shadow: 0px 0px 7px rgba(0, 0, 0, 0.06);
-
-				image {
-					width: 100%;
-					height: 344rpx;
-					border-radius: 10rpx 10rpx 0 0;
-				}
-
-				.info {
-					padding: 14rpx 16rpx;
-
-					.title {
-						font-size: 28rpx;
-					}
-
-					.price-box {
-						font-size: 26rpx;
-						font-weight: 700;
-						margin-top: 8px;
-						color: var(--view-theme);
-					}
-
-					.sales {
-						font-size: 22rpx;
-						color: #999999;
-					}
-				}
-			}
-		}
-	}
-
-	.footer {
-		margin-top: 20rpx;
-
-		.footer-list {
-			display: flex;
-			justify-content: space-between;
-			padding: 26rpx 0;
-
-			.list-left {
-				display: flex;
-				align-items: center;
-
-				.icon-sty {
-					width: 80rpx;
-					height: 80rpx;
-					margin-right: 18rpx;
-				}
-
-				.list-left-right {
-					.title {
-						font-size: 28rpx;
-						font-weight: bold;
-						color: #333333;
-					}
-
-					.trip {
-						font-size: 22rpx;
-						color: #999999;
-					}
-				}
-			}
-
-			.right-box {
-				display: flex;
-				align-items: center;
-			}
-
-			.go-jump {
-				display: flex;
-				align-items: center;
-				background-color: #E93323;
-				border-radius: 26rpx;
-				color: #fff;
-				font-size: 28rpx;
-				height: 48rpx;
-				line-height: 48rpx;
-				padding: 6rpx 24rpx;
-			}
-		}
-	}
-
-	.no-goods {
-		display: flex;
-		flex-direction: column;
-		height: 472rpx;
-
-		image {
-			width: 100%;
-			display: block;
-			margin: 0 auto;
-		}
-
-		.fontimg {
-			text-align: center;
-			color: #bebebe;
-		}
-	}
+<template>
+	<view :style="colorStyle">
+		<view class="points-swiper">
+			<image class="bag" src="../../static/images/jf-head.png" mode=""></image>
+			<view class="swiper">
+				<swiper indicator-dots="true" :autoplay="autoplay" :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>
+							<image :src="item.img" class="slide-image" @click="goPages(item)"></image>
+						</swiper-item>
+					</block>
+				</swiper>
+			</view>
+		</view>
+		<view class="model">
+			<view class="model-list" v-for="(model,index) in modelList" :key="index" @click="jump(model.url)">
+				<image class="img" :src="model.imgUrl" mode=""></image>
+				<text>{{model.title}}</text>
+			</view>
+		</view>
+		<view class="body">
+			<view class="body-title">
+				<text class="title">{{$t(`大家都在换`)}}</text>
+				<text class="jump-trip" @click="jumpMore">{{$t(`查看更多`)}}
+					<text class="iconfont icon-xiangyou"></text></text>
+			</view>
+			<view class="product-list" v-if="goodList.length">
+				<view class="product-item" v-for="(item, index) in goodList" @click="goGoodsDetail(item)">
+					<image :src="item.image"></image>
+					<view class="info">
+						<view class="title line1">{{ item.title }}</view>
+						<view class="price-box">
+							{{ item.price }} {{$t(`积分`)}}
+						</view>
+						<view class="sales">{{item.sales}}{{$t(`人兑换`)}}</view>
+					</view>
+				</view>
+			</view>
+			<view v-else class="no-goods">
+				<image :src="imgHost + '/statics/images/no-thing.png'" mode=""></image>
+				<view class="fontimg">{{$t(`暂无商品,去看点别的吧`)}}</view>
+			</view>
+			<view class="footer">
+				<view class="body-title">
+					<text class="title">{{$t(`轻松赚积分`)}}</text>
+					<text></text>
+				</view>
+				<view class="footer-list">
+					<view class="list-left">
+						<image class="icon-sty" src="./static/go-shoping.png" mode=""></image>
+						<view class="list-left-right">
+							<view class="title">
+								{{$t(`购买商品`)}}
+							</view>
+							<view class="trip">
+								{{$t(`购买商品可获得积分奖励`)}}
+							</view>
+						</view>
+					</view>
+					<navigator url="/pages/index/index" open-type="switchTab" class="right-box">
+						<text class="go-jump">
+							{{$t(`去完成`)}}
+						</text>
+					</navigator>
+				</view>
+				<view class="footer-list">
+					<view class="list-left">
+						<image class="icon-sty" src="./static/everyday.png" mode=""></image>
+						<view class="list-left-right">
+							<view class="title">
+								{{$t(`每日签到活动`)}}
+							</view>
+							<view class="trip">
+								{{$t(`每日签到可获得积分奖励`)}}
+							</view>
+						</view>
+					</view>
+					<navigator url="/pages/users/user_sgin/index" class="right-box">
+						<text class="go-jump">
+							{{$t(`去完成`)}}
+						</text>
+					</navigator>
+				</view>
+				<view class="footer-list">
+					<view class="list-left">
+						<image class="icon-sty" src="./static/luck-draw.png" mode=""></image>
+						<view class="list-left-right">
+							<view class="title">
+								{{$t(`九宫格抽奖活动`)}}
+							</view>
+							<view class="trip">
+								{{$t(`幸运抽奖可获得积分奖励`)}}
+							</view>
+						</view>
+					</view>
+					<navigator url="/pages/goods/lottery/grids/index?type=1" class="right-box">
+						<text class="go-jump">
+							{{$t(`去完成`)}}
+						</text>
+					</navigator>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	// import swipers from './components/swiper.vue';
+	import {
+		mapGetters
+	} from 'vuex';
+	import {
+		getStoreIntegral
+	} from '@/api/points_mall.js'
+	import {
+		goShopDetail
+	} from '@/libs/order.js';
+	import colors from "@/mixins/color";
+	import {
+		HTTP_REQUEST_URL
+	} from '@/config/app';
+	export default {
+		components: {
+			// swipers
+		},
+		mixins: [colors],
+		data() {
+			return {
+				imgHost: HTTP_REQUEST_URL,
+				autoplay: true,
+				circular: true,
+				interval: 3000,
+				duration: 500,
+				imgUrls: [],
+				goodList: [],
+				modelList: [{
+						title: this.$t(`我的积分`),
+						imgUrl: './static/my-point.png',
+						url: "/pages/users/user_integral/index"
+					},
+					{
+						title: this.$t(`每日签到`),
+						imgUrl: './static/sign-in.png',
+						url: '/pages/users/user_sgin/index'
+					}, {
+						title: this.$t(`积分抽奖`),
+						imgUrl: './static/points-lottery.png',
+						url: '/pages/goods/lottery/grids/index?type=1'
+					}, {
+						title: this.$t(`兑换记录`),
+						imgUrl: './static/exchange.png',
+						url: "/pages/points_mall/exchange_record"
+					},
+				]
+			}
+		},
+		computed: mapGetters(['isLogin']),
+		onLoad() {
+			this.getStoreIntegral()
+		},
+		watch: {
+			isLogin: {
+				handler: function(newV, oldV) {
+					if (newV == true) {
+						this.getStoreIntegral();
+					}
+				},
+				deep: true
+			},
+		},
+		methods: {
+			getStoreIntegral() {
+				getStoreIntegral().then(res => {
+					this.imgUrls = res.data.banner
+					this.goodList = res.data.list
+				})
+			},
+			// 去商品详情
+			goGoodsDetail(item) {
+				goShopDetail(item).then(res => {
+					uni.navigateTo({
+						url: `/pages/points_mall/integral_goods_details?id=${item.id}`
+					});
+				});
+			},
+			jumpMore() {
+				uni.navigateTo({
+					url: '/pages/points_mall/integral_goods_list'
+				})
+			},
+			goPages(item) {
+				let url = item.link;
+				this.$util.JumpPath(url);
+			},
+			jump(url) {
+				uni.navigateTo({
+					url
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.swiper,
+	swiper,
+	swiper-item,
+	.slide-image {
+		width: 100%;
+		height: 280rpx;
+	}
+
+	/deep/ .uni-swiper-wrapper {
+		border-radius: 10rpx;
+	}
+
+	.swiper {
+		padding: 20rpx;
+	}
+
+	.points-swiper {
+		position: relative;
+		width: 100%;
+		background-color: #fff;
+
+		.bag {
+			position: absolute;
+			width: 100%;
+			height: 285rpx;
+		}
+
+		.points-swiper-sty {
+			padding: 20rpx 26rpx;
+		}
+	}
+
+	.model {
+		display: flex;
+		justify-content: space-between;
+		padding: 56rpx 42rpx;
+		background-color: #fff;
+	}
+
+	.model-list {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		font-size: 26rpx;
+		color: #333;
+		margin-top: 27rpx;
+		font-weight: 500;
+
+		.img {
+			width: 84rpx;
+			height: 84rpx;
+			margin-bottom: 19rpx;
+		}
+
+	}
+
+	.body {
+		background-color: #fff;
+		padding: 0 30rpx;
+		margin-top: 20rpx;
+
+		.body-title {
+			display: flex;
+			justify-content: space-between;
+			padding: 30rpx 0 10rpx 0;
+
+			.title {
+				font-size: 32rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+			}
+
+			.jump-trip,
+			.icon-xiangyou {
+				font-size: 24rpx;
+				color: #999999;
+			}
+		}
+
+		.product-list {
+			display: flex;
+			flex-wrap: wrap;
+			justify-content: space-between;
+			margin-top: 30rpx;
+
+			.product-item {
+				position: relative;
+				width: 334rpx;
+				background: #fff;
+				border-radius: 10rpx;
+				margin-bottom: 20rpx;
+				box-shadow: 0px 0px 7px rgba(0, 0, 0, 0.06);
+
+				image {
+					width: 100%;
+					height: 344rpx;
+					border-radius: 10rpx 10rpx 0 0;
+				}
+
+				.info {
+					padding: 14rpx 16rpx;
+
+					.title {
+						font-size: 28rpx;
+					}
+
+					.price-box {
+						font-size: 26rpx;
+						font-weight: 700;
+						margin-top: 8px;
+						color: var(--view-theme);
+					}
+
+					.sales {
+						font-size: 22rpx;
+						color: #999999;
+					}
+				}
+			}
+		}
+	}
+
+	.footer {
+		margin-top: 20rpx;
+
+		.footer-list {
+			display: flex;
+			justify-content: space-between;
+			padding: 26rpx 0;
+
+			.list-left {
+				display: flex;
+				align-items: center;
+
+				.icon-sty {
+					width: 80rpx;
+					height: 80rpx;
+					margin-right: 18rpx;
+				}
+
+				.list-left-right {
+					.title {
+						font-size: 28rpx;
+						font-weight: bold;
+						color: #333333;
+					}
+
+					.trip {
+						font-size: 22rpx;
+						color: #999999;
+					}
+				}
+			}
+
+			.right-box {
+				display: flex;
+				align-items: center;
+			}
+
+			.go-jump {
+				display: flex;
+				align-items: center;
+				background-color: #E93323;
+				border-radius: 26rpx;
+				color: #fff;
+				font-size: 28rpx;
+				height: 48rpx;
+				line-height: 48rpx;
+				padding: 6rpx 24rpx;
+			}
+		}
+	}
+
+	.no-goods {
+		display: flex;
+		flex-direction: column;
+		height: 472rpx;
+
+		image {
+			width: 100%;
+			display: block;
+			margin: 0 auto;
+		}
+
+		.fontimg {
+			text-align: center;
+			color: #bebebe;
+		}
+	}
 </style>

+ 1 - 1
template/uni-app/pages/users/wechat_login/index.vue

@@ -315,7 +315,7 @@
 					}, {
 						tab: 3
 					});
-					// #endiff
+					// #endif
 				}
 			},
 			// #ifdef MP

+ 1 - 1
template/uni-app/static/css/style.scss

@@ -340,7 +340,7 @@
 .coupon-list .item.svip .line1 .image{width:30rpx;height:30rpx;margin-right:10rpx;vertical-align:middle;z-index:0;}
 
 .noCommodity {
-	border-top: 7rpx solid #f5f5f5
+	// border-top: 7rpx solid #f5f5f5
 }
 
 .noCommodity .pictrue {

+ 51 - 5
template/uni-app/utils/util.js

@@ -746,10 +746,10 @@ export default {
 		}
 
 		return 0
-	},
-	/*
-	* 获取当前时间
-	*/
+	},
+	/*
+	 * 获取当前时间
+	 */
 	getNowTime() {
 		let today = new Date();
 		let year = today.getFullYear(); // 获取当前年份
@@ -995,6 +995,52 @@ export default {
 			}
 			return status;
 		},
-	}
+	},
+	/**
+	 * 跳转路径封装函数
+	 * @param url 跳转路径
+	 */
+	JumpPath: function(url) {
+		let arr = url.split('@APPID=');
+		if (arr.length > 1) {
+			//#ifdef MP
+			uni.navigateToMiniProgram({
+				appId: arr[arr.length - 1], // 此为生活缴费appid
+				path: arr[0], // 此为生活缴费首页路径
+				envVersion: "release",
+				success: res => {
+					console.log("打开成功", res);
+				},
+				fail: err => {
+					console.log('sgdhgf', err);
+				}
+			})
+			//#endif
+			//#ifndef MP
+			this.Tips({
+				title: 'h5与app端不支持跳转外部小程序'
+			});
+			//#endif
+		} else {
+			if (url.indexOf("http") != -1) {
+				uni.navigateTo({
+					url: `/pages/annex/web_view/index?url=${url}`
+				});
+			} else {
+				if (['/pages/goods_cate/goods_cate', '/pages/order_addcart/order_addcart', '/pages/user/index',
+						'/pages/index/index'
+					]
+					.indexOf(url) == -1) {
+					uni.navigateTo({
+						url
+					})
+				} else {
+					uni.switchTab({
+						url
+					})
+				}
+			}
+		}
+	},
 
 }