Selaa lähdekoodia

项目日志: 12.19 分享接口

gubai 2 vuotta sitten
vanhempi
commit
405ac908f0

+ 11 - 1
api/active/active.js

xqd
@@ -42,11 +42,21 @@ export function vote(data){
 		data
 	)
 }
+
+//分享记录接口
+export function activityShare(data){
+	return request.post(
+		`v1/activity/share`,
+		data
+	)
+}
+
 export default {
   getActiveDetail,
   getActiveList,
   kudos,
   getActiveProjectList,
   getActiveProjectDetail,
-  vote
+  vote,
+  activityShare
 }

+ 8 - 4
pages/goods/goods-detail/index.scss

xqd xqd
@@ -242,6 +242,7 @@ $pageColor:#F9F9F9;
 	}
 
 	.produce {
+		width: 100%;
 		margin-top: 24rpx;
 		padding: 40rpx 30rpx 36rpx;
 		background: #FFFFFF;
@@ -255,18 +256,21 @@ $pageColor:#F9F9F9;
 		}
 
 		.produce-text {
+			width: 100%;
 			margin-top: 26rpx;
 			font-size: 30rpx;
 			color: #333333;
 			line-height: 48rpx;
 			overflow: hidden;
-			
-			img,image{
-				max-width: 100%;
-			}
+			// img,image{
+			// 	max-width: 100%;
+			// 	height: auto;
+			// }
 		}
+		
 	}
 
+
 	.about {
 		padding: 40rpx 30rpx 40rpx;
 		width: 100%;

+ 434 - 420
pages/goods/goods-detail/index.vue

xqd xqd xqd
@@ -1,416 +1,424 @@
-<template>
-	<view class="goods-detail">
-		<navbarTransparent :title="page.title"/>
-		<!-- swiper -->
-		<view class="home-swiper">
-			<!-- <uni-swiper-dot :info="info" :current="current1" :mode="mode" :dots-styles="dotsStyles">
-				<swiper class="swiper-box" @change="change1" circular>
-					<swiper-item v-for="(item ,index) in info" :key="index">
-						<view class="swiper-item" >
-							<image style="width: 100%;height:576rpx;" :src="item.img" mode="aspectFill"></image>
-						</view>
-					</swiper-item>
-				</swiper>
-			</uni-swiper-dot> -->
-			<uni-swiper-dot :mode="mode" :info="info" :current="current1" :dots-styles="dotsStyles">
-				<swiper class="swiper-box" @change="change1" circular>
-					<swiper-item v-for="(item ,index) in info" :key="index"  v-if="resource_type == 1 ">
-						<view class="swiper-item">
-							<image style="width: 100vw;height:100vw;" :src="item.img" mode="aspectFill"></image>
-						</view>
-					</swiper-item>
-					<swiper-item  v-if="resource_type == 2 ">
-						<view class="swiper-item">
-							<video class="baner-video" id="myVideo" ref="myVideo" style="width: 100%; height: 564rpx;"
-								:src="video_url" controls :enable-progress-gesture="false">
-							</video>
-						</view>
-					</swiper-item>
-				</swiper>
-			</uni-swiper-dot>
-		</view>
-
-		<view style="background-color: #f9f9f9;">
-			<!-- 价格 -->
-			<view class="price">
-				<view class="price-top" v-if="produceType == 1">
-					<text>¥</text>
-					<text>{{productDetail.price}}</text>
-				</view>
-				<view class="price-top" v-if="produceType == 2">
-					<text>{{productDetail.price}}</text>
-					<text>积分</text>
-				</view>	
-				<text class="price-text">{{productDetail.name}}</text>
-				<view @click="goOther" class="price-banner" :style="{backgroundImage:'url('+backImageUrl+')'}">
-					<text>加入IHG优悦会会员享受更多福利</text>
-					<image style="width: 12rpx;height: 20rpx;" src="/static/icon/right02.png" mode=""></image>
-				</view>
-				<!--规格-->
-				<view class="price-specs" @click="Recipientopen()">
-					<view class="price-specs-left">
-						<text>选择</text>
-					</view>
-					<view class="price-specs-main" @click="Recipientopen()">
-						<text>{{showAttr||'请选择规格'}}</text>
-					</view>
-					<view @click="Recipientopen()">
-						<image style="width: 12rpx;height: 20rpx;" src="/static/icon/right03.png" mode=""></image>
-					</view>
-				</view>
-			</view>
-
-			<!--酒店信息  -->
-			<view class="about">
-				<text class="about-title">可购买酒店信息</text>
-				<text class="about-name">{{hotelDetail.name}}</text>
-				<view class="about-address">
-					<text style="margin-right:20rpx ;">地址:</text>
-					<text>{{hotelDetail.address?hotelDetail.address:""}}</text>
-				</view>
-				<view class="about-phone">
-					<text style="margin-right:20rpx ;">电话:</text>
-					<text>{{hotelDetail.phone?hotelDetail.phone:""}}</text>
-				</view>
-				<view class="about-all">
-					<text @click="goGoodsHotel(product_id)" style="margin-right: 16rpx;">全部酒店</text>
-					<image @click="goGoodsHotel(product_id)" style="width: 12rpx;height: 20rpx;" src="/static/icon/right04.png"
-						mode=""></image>
-				</view>
-
-			</view>
-
-			<!-- 产品介绍 -->
-			<view class="produce">
-				<view class="produce-title">
-					<text>产品简介</text>
-				</view>
-				<view class="produce-text" v-html="productDetail.details"></view>
-			</view>
-		</view>
-
-		<view class="buy-btn">
-			<view class="buy-btn-left" @click="goHome">
-				<image style="width: 40rpx;height: 42rpx;" src="/static/icon/home01.png" mode=""></image>
-				<text>首页</text>
-			</view>
-			<view class="buy-btn-right" @click="goIntegralOrder" v-if="produceType==1">
-				<text>立即购买</text>
-			</view>
-			<view v-if="produceType==2" class="buy-btn-right" @click="goProductChange(product_id,flavorIsActive)">
-				<text>立即兑换</text>
-			</view>
-		</view>
-		<view style="height: 90px;background-color: #f9f9f9;"></view>
-
-		<!-- 选择规格 -->
-		<uni-popup ref="Recipient" type="bottom" mask-background-color=" rgba(0,0,0,0.3);">
-			<view class="pop">
-				<view class="pop-price">
-					<view class="pop-price-left">
-						<image style="width: 180rpx;height: 136rpx; border-radius:12rpx ;"
-							:src="productDetail.cover_img" mode="" ></image>
-						<view class="pop-price-left-money" v-if="produceType == 1">
-							<text>¥</text>
-							<text>{{productDetail.price}}</text>
-						</view>
-						<view class="pop-price-left-money" v-if="produceType == 2">
-							<text>{{productDetail.price}}</text>
-							<text>积分</text>
-						</view>
-					</view>
-					<image style="width: 52rpx;height: 52rpx;" src="/static/icon/close01.png" mode=""  @click="Recipientclose"></image>
-				</view>				
-				<view class="pop-flavor" v-for="i in attr_groups" :key="i.attr_group_id" style="margin-top: 44rpx;">
-					<text>{{i.attr_group_name}}</text>
-					<view class="tab_flavor">
-						<view class="flavorTitle-item" 
-							:class="{'flavorTitle-item-active':flavorIsActive[i.attr_group_name] === item.attr_name}"
-							v-for="(item,index) in i.attr_list" :key="item.attr_id"
-							@click="flavorchecked(item.attr_name,i.attr_group_name)"
-						>
-							<view :class="{'active-flavor':flavorIsActive[i.attr_group_name] === item.attr_name}">
-								{{item.attr_name}}
-							</view>
-						</view>
-					</view>
-				</view>
-			</view>
-			<view class="purchase" v-if="produceType == 1" @click="goIntegralOrder">
-				<view class="purchase-btn">立即购买</view>
-			</view>
-			<view class="purchase" v-if="produceType == 2"  @click="selectSpecs(product_id,flavorIsActive)">
-				<view class="purchase-btn">立即兑换</view>
-				<!-- <view class="purchase-btn">确认</view> -->
-			</view>
-		</uni-popup>
-		<!-- 二维码购买 -->
-		<uni-popup ref="codePurchase" type="center">
-			<view class="code-purchase">
-				<view class="title"><text>识别下方二维码即可购买</text></view>
-				<view style="margin-left:30rpx;width: 580rpx;height: 2rpx;background: #F0F0F0;"></view>
-				<view class="img">
-					<image src="http://t9.9026.com/imgs/Kudosbg.png"></image>
-				</view>
-				<view class="btn">
-					<view class="cancel" @click="dialogClose"><text>取消</text></view>
-					<view class="download" @click="dialogConfirm"><text>保存图片</text></view>
-				</view>
-			</view>
-		</uni-popup>
-	</view>
-</template>
-
-<script>
-	import navbarTransparent from "@/components/extra/navbarTransparent.vue"
-	export default {
-		components:{navbarTransparent},
-		data() {
-			return {
-				jump_type: '',
-				jump_config: '',
-				resource_type: '',
-				//1:第三方产品2:积分兑换产品
-				produceType:'',
-				// 规格
-				specsText:'',
-				specs:{
-					pack:'',
-					weight:'',
-					flavor:'',
-				},
-				// 产品详情
-				productDetail:'',
-				// 酒店详情
-				hotelDetail:'',
-				// 产品id
-				product_id:'',
-				//激活指定table菜单
-				isActive: 0,
-				flavorIsActive:{},
-				weightIsActive:0,
-				packIsActive:0,
-				backImageUrl: require('../../../static/icon/add01.png'),
-				//轮播图
-				info: [{
-					img: 'http://t9.9026.com/imgs/swiper01.png',
-					name: '酒店预订'
-				}, ],
-				dotsStyles: {
-					backgroundColor: 'rgba(255, 255, 255, .3)',
-					border: '1px rgba(255, 255, 255, .3) solid',
-					color: '#fff',
-					selectedBackgroundColor: 'rgba(255, 255, 255, 1)',
-					selectedBorder: '1px rgba(255, 255, 255, 1) solid'
-				},
-				//指示点显示位置
-				current1: 0,
-				//指示点模式
-				mode: 'dot',
-				attr_groups:[],
-				page: {
-					title: '产品详情'
+<template>
+	<view class="goods-detail">
+		<navbarTransparent :title="page.title" />
+		<!-- swiper -->
+		<view class="home-swiper">
+			<!-- <uni-swiper-dot :info="info" :current="current1" :mode="mode" :dots-styles="dotsStyles">
+				<swiper class="swiper-box" @change="change1" circular>
+					<swiper-item v-for="(item ,index) in info" :key="index">
+						<view class="swiper-item" >
+							<image style="width: 100%;height:576rpx;" :src="item.img" mode="aspectFill"></image>
+						</view>
+					</swiper-item>
+				</swiper>
+			</uni-swiper-dot> -->
+			<uni-swiper-dot :mode="mode" :info="info" :current="current1" :dots-styles="dotsStyles">
+				<swiper class="swiper-box" @change="change1" circular>
+					<swiper-item v-for="(item ,index) in info" :key="index" v-if="resource_type == 1 ">
+						<view class="swiper-item">
+							<image style="width: 100vw;height:100vw;" :src="item.img" mode="aspectFill"></image>
+						</view>
+					</swiper-item>
+					<swiper-item v-if="resource_type == 2 ">
+						<view class="swiper-item">
+							<video class="baner-video" id="myVideo" ref="myVideo" style="width: 100%; height: 564rpx;"
+								:src="video_url" controls :enable-progress-gesture="false">
+							</video>
+						</view>
+					</swiper-item>
+				</swiper>
+			</uni-swiper-dot>
+		</view>
+
+		<view style="background-color: #f9f9f9;">
+			<!-- 价格 -->
+			<view class="price">
+				<view class="price-top" v-if="produceType == 1">
+					<text>¥</text>
+					<text>{{productDetail.price}}</text>
+				</view>
+				<view class="price-top" v-if="produceType == 2">
+					<text>{{productDetail.price}}</text>
+					<text>积分</text>
+				</view>
+				<text class="price-text">{{productDetail.name}}</text>
+				<view @click="goOther" class="price-banner" :style="{backgroundImage:'url('+backImageUrl+')'}">
+					<text>加入IHG优悦会会员享受更多福利</text>
+					<image style="width: 12rpx;height: 20rpx;" src="/static/icon/right02.png" mode=""></image>
+				</view>
+				<!--规格-->
+				<view class="price-specs" @click="Recipientopen()">
+					<view class="price-specs-left">
+						<text>选择</text>
+					</view>
+					<view class="price-specs-main" @click="Recipientopen()">
+						<text>{{showAttr||'请选择规格'}}</text>
+					</view>
+					<view @click="Recipientopen()">
+						<image style="width: 12rpx;height: 20rpx;" src="/static/icon/right03.png" mode=""></image>
+					</view>
+				</view>
+			</view>
+
+			<!--酒店信息  -->
+			<view class="about">
+				<text class="about-title">可购买酒店信息</text>
+				<text class="about-name">{{hotelDetail.name}}</text>
+				<view class="about-address">
+					<text style="margin-right:20rpx ;">地址:</text>
+					<text>{{hotelDetail.address?hotelDetail.address:""}}</text>
+				</view>
+				<view class="about-phone">
+					<text style="margin-right:20rpx ;">电话:</text>
+					<text>{{hotelDetail.phone?hotelDetail.phone:""}}</text>
+				</view>
+				<view class="about-all">
+					<text @click="goGoodsHotel(product_id)" style="margin-right: 16rpx;">全部酒店</text>
+					<image @click="goGoodsHotel(product_id)" style="width: 12rpx;height: 20rpx;"
+						src="/static/icon/right04.png" mode=""></image>
+				</view>
+
+			</view>
+
+			<!-- 产品介绍 -->
+			<view class="produce">
+				<view class="produce-title">
+					<text>产品简介</text>
+				</view>
+				<view class="produce-text">
+					<u-parse :content="productDetail.details"></u-parse>
+				</view>
+
+			</view>
+		</view>
+
+		<view class="buy-btn">
+			<view class="buy-btn-left" @click="goHome">
+				<image style="width: 40rpx;height: 42rpx;" src="/static/icon/home01.png" mode=""></image>
+				<text>首页</text>
+			</view>
+			<view class="buy-btn-right" @click="goIntegralOrder" v-if="produceType==1">
+				<text>立即购买</text>
+			</view>
+			<view v-if="produceType==2" class="buy-btn-right" @click="goProductChange(product_id,flavorIsActive)">
+				<text>立即兑换</text>
+			</view>
+		</view>
+		<view style="height: 90px;background-color: #f9f9f9;"></view>
+
+		<!-- 选择规格 -->
+		<uni-popup ref="Recipient" type="bottom" mask-background-color=" rgba(0,0,0,0.3);">
+			<view class="pop">
+				<view class="pop-price">
+					<view class="pop-price-left">
+						<image style="width: 180rpx;height: 136rpx; border-radius:12rpx ;"
+							:src="productDetail.cover_img" mode=""></image>
+						<view class="pop-price-left-money" v-if="produceType == 1">
+							<text>¥</text>
+							<text>{{productDetail.price}}</text>
+						</view>
+						<view class="pop-price-left-money" v-if="produceType == 2">
+							<text>{{productDetail.price}}</text>
+							<text>积分</text>
+						</view>
+					</view>
+					<image style="width: 52rpx;height: 52rpx;" src="/static/icon/close01.png" mode=""
+						@click="Recipientclose"></image>
+				</view>
+				<view class="pop-flavor" v-for="i in attr_groups" :key="i.attr_group_id" style="margin-top: 44rpx;">
+					<text>{{i.attr_group_name}}</text>
+					<view class="tab_flavor">
+						<view class="flavorTitle-item"
+							:class="{'flavorTitle-item-active':flavorIsActive[i.attr_group_name] === item.attr_name}"
+							v-for="(item,index) in i.attr_list" :key="item.attr_id"
+							@click="flavorchecked(item.attr_name,i.attr_group_name)">
+							<view :class="{'active-flavor':flavorIsActive[i.attr_group_name] === item.attr_name}">
+								{{item.attr_name}}
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="purchase" v-if="produceType == 1" @click="goIntegralOrder">
+				<view class="purchase-btn">立即购买</view>
+			</view>
+			<view class="purchase" v-if="produceType == 2" @click="selectSpecs(product_id,flavorIsActive)">
+				<view class="purchase-btn">立即兑换</view>
+				<!-- <view class="purchase-btn">确认</view> -->
+			</view>
+		</uni-popup>
+		<!-- 二维码购买 -->
+		<uni-popup ref="codePurchase" type="center">
+			<view class="code-purchase">
+				<view class="title"><text>识别下方二维码即可购买</text></view>
+				<view style="margin-left:30rpx;width: 580rpx;height: 2rpx;background: #F0F0F0;"></view>
+				<view class="img">
+					<image src="http://t9.9026.com/imgs/Kudosbg.png"></image>
+				</view>
+				<view class="btn">
+					<view class="cancel" @click="dialogClose"><text>取消</text></view>
+					<view class="download" @click="dialogConfirm"><text>保存图片</text></view>
+				</view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+	import navbarTransparent from "@/components/extra/navbarTransparent.vue"
+	export default {
+		components: {
+			navbarTransparent
+		},
+		data() {
+			return {
+				jump_type: '',
+				jump_config: '',
+				resource_type: '',
+				//1:第三方产品2:积分兑换产品
+				produceType: '',
+				// 规格
+				specsText: '',
+				specs: {
+					pack: '',
+					weight: '',
+					flavor: '',
+				},
+				// 产品详情
+				productDetail: '',
+				// 酒店详情
+				hotelDetail: '',
+				// 产品id
+				product_id: '',
+				//激活指定table菜单
+				isActive: 0,
+				flavorIsActive: {},
+				weightIsActive: 0,
+				packIsActive: 0,
+				backImageUrl: require('../../../static/icon/add01.png'),
+				//轮播图
+				info: [{
+					img: 'http://t9.9026.com/imgs/swiper01.png',
+					name: '酒店预订'
+				}, ],
+				dotsStyles: {
+					backgroundColor: 'rgba(255, 255, 255, .3)',
+					border: '1px rgba(255, 255, 255, .3) solid',
+					color: '#fff',
+					selectedBackgroundColor: 'rgba(255, 255, 255, 1)',
+					selectedBorder: '1px rgba(255, 255, 255, 1) solid'
+				},
+				//指示点显示位置
+				current1: 0,
+				//指示点模式
+				mode: 'dot',
+				attr_groups: [],
+				page: {
+					title: '产品详情'
 				},
-				sku:{
+				sku: {
 					keys: [],
-				}
-			}
-		},
+				}
+			}
+		},
 		onReady: function() {
-			this.videoContext = uni.createVideoContext('myVideo')
-		},
-		onLoad(op) {
-			const {id, type} = op;
-			this.admin = this.$store.getters.userInfo
-			this.product_id=id
-			this.produceType = type
-			this.getProductDetail(this.product_id,true)
+			this.videoContext = uni.createVideoContext('myVideo')
 		},
-		computed:{
-			showAttr:function(){
-				if(this.flavorIsActive.length <=0) return false;
+		onLoad(op) {
+			const {
+				id,
+				type
+			} = op;
+			this.admin = this.$store.getters.userInfo
+			this.product_id = id
+			this.produceType = type
+			this.getProductDetail(this.product_id, true)
+		},
+		computed: {
+			showAttr: function() {
+				if (this.flavorIsActive.length <= 0) return false;
 				let text = '';
-				for(const k in this.flavorIsActive){
+				for (const k in this.flavorIsActive) {
 					text += `${k}-${this.flavorIsActive[k]},`
 				}
-				return text.substr(0, text.length-1);
+				return text.substr(0, text.length - 1);
 			},
-			selectedHotelId:function(){
+			selectedHotelId: function() {
 				return this.$store.state.tab.selectedHotelId;
 			}
-		},
+		},
 		methods: {
 			//显示所选规格
-			
-			//获取当前页面路径
-			getPageUrl() {
-				const pages = getCurrentPages();
-				if(pages.length==1){
-					const currentPage = pages[0];
-					console.log(currentPage.options,'--------->currentPage.options')
-					let pageUrl = `/${currentPage.route}?type=${currentPage.options.type}`;
-					return pageUrl
-					console.log('当前页面url:', pageUrl);
-				}else{
-					const currentPage = pages[pages.length - 1];
-					console.log(currentPage.options,'--------->currentPage.options')
-					let pageUrl = `/${currentPage.route}?type=${currentPage.options.type}`;
-					return pageUrl
-					console.log('当前页面url:', pageUrl);
-				}
-			},
-			// 跳转其他小程序
-			goOther() {
-				let _this = this
-				wx.navigateToMiniProgram({
-					appId: 'wx255b58f0992b3c53', //appid
-					path: 'newUIMain/enrollment/enrollment', //path
-					extraData: { //参数
-						foo: 'bar'
-					},
-					// envVersion: 'develop', //开发版develop 开发版 trial   体验版 release 正式版 
-					success(res) {
-						let page = _this.getPageUrl()
-						let user_id = ''
-						 if(_this.admin != null ){
-							 user_id = _this.admin.id
-						 }else{
-							 user_id = 0
-						 }
-						console.log('成功',page)
-						_this.$api.my.userMemberAdd({
-							user_id,
-							page,
-						}).then(res=>{
-							console.log(res.data);
-						})
-						// 打开成功
-					},
-					fail(e) {
-						console.log(e, '失败')
-					}
-				})
-			},	
-			//视频自动播放
-			openVideoPlay() {
-				this.videoContext.play()
-			},
-			// 获取商品详情
-			getProductDetail(product_id, init=false){
-				this.$api.product.getProductDetail({
-					product_id:product_id
-				}).then(res=>{
-					if(res.code==0 && res.data){
-						this.productDetail=res.data
-						this.info = JSON.parse(res.data.img_urls).map(item => {
-							return {
-								img: item
-							}
-						})
-						//跳转h5和小程序
-						this.jump_type = res.data.jump_type,
-							this.jump_config = res.data.jump_config
-						//banner展示视频或者图片
-						this.resource_type = res.data.resource_type
-						this.video_url = res.data.video_url
-						//视频自动播放
-						this.openVideoPlay()
-						//规格对接
-						this.attr_groups = JSON.parse(res.data.attr_group)
-						//获取默认酒店
+
+			//获取当前页面路径
+			getPageUrl() {
+				const pages = getCurrentPages();
+				if (pages.length == 1) {
+					const currentPage = pages[0];
+					console.log(currentPage.options, '--------->currentPage.options')
+					let pageUrl = `/${currentPage.route}?type=${currentPage.options.type}`;
+					return pageUrl
+					console.log('当前页面url:', pageUrl);
+				} else {
+					const currentPage = pages[pages.length - 1];
+					console.log(currentPage.options, '--------->currentPage.options')
+					let pageUrl = `/${currentPage.route}?type=${currentPage.options.type}`;
+					return pageUrl
+					console.log('当前页面url:', pageUrl);
+				}
+			},
+			// 跳转其他小程序
+			goOther() {
+				let _this = this
+				wx.navigateToMiniProgram({
+					appId: 'wx255b58f0992b3c53', //appid
+					path: 'newUIMain/enrollment/enrollment', //path
+					extraData: { //参数
+						foo: 'bar'
+					},
+					// envVersion: 'develop', //开发版develop 开发版 trial   体验版 release 正式版 
+					success(res) {
+						let page = _this.getPageUrl()
+						let user_id = ''
+						if (_this.admin != null) {
+							user_id = _this.admin.id
+						} else {
+							user_id = 0
+						}
+						console.log('成功', page)
+						_this.$api.my.userMemberAdd({
+							user_id,
+							page,
+						}).then(res => {
+							console.log(res.data);
+						})
+						// 打开成功
+					},
+					fail(e) {
+						console.log(e, '失败')
+					}
+				})
+			},
+			//视频自动播放
+			openVideoPlay() {
+				this.videoContext.play()
+			},
+			// 获取商品详情
+			getProductDetail(product_id, init = false) {
+				this.$api.product.getProductDetail({
+					product_id: product_id
+				}).then(res => {
+					if (res.code == 0 && res.data) {
+						this.productDetail = res.data
+						this.info = JSON.parse(res.data.img_urls).map(item => {
+							return {
+								img: item
+							}
+						})
+						//跳转h5和小程序
+						this.jump_type = res.data.jump_type,
+							this.jump_config = res.data.jump_config
+						//banner展示视频或者图片
+						this.resource_type = res.data.resource_type
+						this.video_url = res.data.video_url
+						//视频自动播放
+						this.openVideoPlay()
+						//规格对接
+						this.attr_groups = JSON.parse(res.data.attr_group)
+						//获取默认酒店
 						const hotel_ids = JSON.parse(res.data.hotel_ids);
-						if((hotel_ids.constructor == Array) && (hotel_ids.length > 0)){
+						if ((hotel_ids.constructor == Array) && (hotel_ids.length > 0)) {
 							this.$store.commit("tab/SET_SELECTEDHOTELId", hotel_ids[0])
-						}
-						//
+						}
+						//
 						const sku = JSON.parse(res.data.sku);
 						this.sku.keys = Object.keys(sku.attrs);
 						this.sku.sku = sku.sku;
-						
+
 						//首次默认选中第一个规格
-						if(init){
+						if (init) {
 							this.attr_groups.forEach(item => {
-								this.flavorchecked(item.attr_list[0]?.attr_name,item.attr_group_name)
+								this.flavorchecked(item.attr_list[0]?.attr_name, item.attr_group_name)
 							})
 						}
-					}
-				})
-			},
-			// 获取酒店详情
-			getHotelDetail(id){
-				this.$api.hotel.getHotelDetail({
-					hotel_id:id
-				}).then(res=>{
-					this.hotelDetail=res.data
-				})
-			},
-			//跳转酒店列表
-			goGoodsHotel(id) {
-				uni.navigateTo({
-					url: '/pages/goods/goods-hotel/index?product_id='+id
-				})
-			},
-			//首页
-			goHome() {
-				uni.switchTab({
-					url: '/pages/index/index'
-				})
-			},
-			//二维码购买确认按钮
-			dialogConfirm() {
-				console.log('确认');
-				this.codePurchaseClose()
-			},
-			//二维码购买取消按钮
-			dialogClose() {
-				console.log('取消');
-				this.codePurchaseClose()
-			},
-			//菜单index切换
-			checked(index) {
-				this.isActive = index
-			},
-			// 口味切换
-			flavorchecked(index,name) {
-				this.$set(this.flavorIsActive, name, index)			
-				this.specs.flavor=name
-				if(Object.keys(this.flavorIsActive).length < this.sku.keys.length) return;
-				for(let index=0; index < this.sku.sku.length; index++){
+					}
+				})
+			},
+			// 获取酒店详情
+			getHotelDetail(id) {
+				this.$api.hotel.getHotelDetail({
+					hotel_id: id
+				}).then(res => {
+					this.hotelDetail = res.data
+				})
+			},
+			//跳转酒店列表
+			goGoodsHotel(id) {
+				uni.navigateTo({
+					url: '/pages/goods/goods-hotel/index?product_id=' + id
+				})
+			},
+			//首页
+			goHome() {
+				uni.switchTab({
+					url: '/pages/index/index'
+				})
+			},
+			//二维码购买确认按钮
+			dialogConfirm() {
+				console.log('确认');
+				this.codePurchaseClose()
+			},
+			//二维码购买取消按钮
+			dialogClose() {
+				console.log('取消');
+				this.codePurchaseClose()
+			},
+			//菜单index切换
+			checked(index) {
+				this.isActive = index
+			},
+			// 口味切换
+			flavorchecked(index, name) {
+				this.$set(this.flavorIsActive, name, index)
+				this.specs.flavor = name
+				if (Object.keys(this.flavorIsActive).length < this.sku.keys.length) return;
+				for (let index = 0; index < this.sku.sku.length; index++) {
 					const item = this.sku.sku[index];
 					let res = true;
-					for(const k in this.flavorIsActive){
-						if(item[k] != this.flavorIsActive[k]){
+					for (const k in this.flavorIsActive) {
+						if (item[k] != this.flavorIsActive[k]) {
 							res = false
 						}
 					}
-					if(res){
+					if (res) {
 						this.productDetail.price = item.price;
 						this.productDetail.integral = item.price
 						break;
 					}
-				}		
-						
-			},
-			// // 重量切换
-			// weightchecked(index,name) {
-			// 	this.weightIsActive = index
+				}
+
+			},
+			// // 重量切换
+			// weightchecked(index,name) {
+			// 	this.weightIsActive = index
 			// 	this.specs.weight=name
-			// 	console.log(this.specs.weight);
-			// },
-			// // 包装切换
-			// packchecked(index,name) {
-			// 	this.packIsActive = index
+			// 	console.log(this.specs.weight);
+			// },
+			// // 包装切换
+			// packchecked(index,name) {
+			// 	this.packIsActive = index
 			// 	this.specs.pack=name
-			// 	console.log(this.specs.pack);
-			// },
-			// 立即兑换
-			selectSpecs(id,flavorIsActive){
+			// 	console.log(this.specs.pack);
+			// },
+			// 立即兑换
+			selectSpecs(id, flavorIsActive) {
 				const resArr = [];
-				outer: for(const k in this.flavorIsActive){	
-					inner: for(const i in this.attr_groups){
-						if(this.attr_groups[i].attr_group_name == k){
-							laster: for(const l in this.attr_groups[i].attr_list){
-								if(this.attr_groups[i].attr_list[l].attr_name == this.flavorIsActive[k]){
+				outer: for (const k in this.flavorIsActive) {
+					inner: for (const i in this.attr_groups) {
+						if (this.attr_groups[i].attr_group_name == k) {
+							laster: for (const l in this.attr_groups[i].attr_list) {
+								if (this.attr_groups[i].attr_list[l].attr_name == this.flavorIsActive[k]) {
 									resArr.push(this.attr_groups[i].attr_list[l].attr_id);
 									break inner;
 								}
@@ -421,31 +429,31 @@
 				const selectedIds = resArr.join(':');
 				console.log(this.productDetail.integral);
 				uni.navigateTo({
-					url:`/pages/my/integral/integralOrder?product_id=${this.productDetail.id}&attr=${selectedIds}&integral=${this.productDetail.integral}`
-				})
-				this.Recipientclose()
-			},
-			Recipientopen() {
-				this.$refs.Recipient.open('bottom')
-			},
-			Recipientclose() {
-				this.$refs.Recipient.close()
-			},
-			codePurchaseClose(){
-				this.$refs.codePurchase.close()
-			},
-			// 切换轮播图指示点
-			change1(e) {
-				this.current1 = e.detail.current;
-			},
-			//积分兑换
-			goProductChange(id,flavorIsActive){
+					url: `/pages/my/integral/integralOrder?product_id=${this.productDetail.id}&attr=${selectedIds}&integral=${this.productDetail.integral}`
+				})
+				this.Recipientclose()
+			},
+			Recipientopen() {
+				this.$refs.Recipient.open('bottom')
+			},
+			Recipientclose() {
+				this.$refs.Recipient.close()
+			},
+			codePurchaseClose() {
+				this.$refs.codePurchase.close()
+			},
+			// 切换轮播图指示点
+			change1(e) {
+				this.current1 = e.detail.current;
+			},
+			//积分兑换
+			goProductChange(id, flavorIsActive) {
 				const resArr = [];
-				outer: for(const k in this.flavorIsActive){	
-					inner: for(const i in this.attr_groups){
-						if(this.attr_groups[i].attr_group_name == k){
-							laster: for(const l in this.attr_groups[i].attr_list){
-								if(this.attr_groups[i].attr_list[l].attr_name == this.flavorIsActive[k]){
+				outer: for (const k in this.flavorIsActive) {
+					inner: for (const i in this.attr_groups) {
+						if (this.attr_groups[i].attr_group_name == k) {
+							laster: for (const l in this.attr_groups[i].attr_list) {
+								if (this.attr_groups[i].attr_list[l].attr_name == this.flavorIsActive[k]) {
 									resArr.push(this.attr_groups[i].attr_list[l].attr_id);
 									break inner;
 								}
@@ -455,26 +463,32 @@
 				}
 				const selectedIds = resArr.join(':');
 				uni.navigateTo({
-					url:`/pages/my/integral/integralOrder?product_id=${this.productDetail.id}&attr=${selectedIds}&integral=${this.productDetail.integral}`
+					url: `/pages/my/integral/integralOrder?product_id=${this.productDetail.id}&attr=${selectedIds}&integral=${this.productDetail.integral}`
 				})
-
-			},
-			// 跳转积分兑换
-			goIntegralOrder(){
-				this.$utils.jump({
-					jump_type: this.hotelDetail.buy_jump_type,
-					jump_config: this.hotelDetail.buy_jump_config,
-					attr: JSON.stringify(this.flavorIsActive)
-				})
-			},
+
+			},
+			// 跳转积分兑换
+			goIntegralOrder() {
+				this.$utils.jump({
+					jump_type: this.hotelDetail.buy_jump_type,
+					jump_config: this.hotelDetail.buy_jump_config,
+					attr: JSON.stringify(this.flavorIsActive)
+				})
+			},
 		},
-		watch:{
+		watch: {
 			selectedHotelId(newValue) {
 				console.log(newValue)
 				this.getHotelDetail(newValue);
 			}
 		}
-	}
-</script>
-
-<style lang="scss" scoped src="./index.scss"></style>
+	}
+</script>
+
+<style lang="scss" scoped src="./index.scss"></style>
+<style lang="scss">
+	.produce-text img {
+		width: 100%;
+		object-fit: fill;
+	}
+</style>

+ 23 - 8
pages/goods/goods.vue

xqd xqd xqd
@@ -27,9 +27,16 @@
 						</view>
 					</view>
 				</view>
-			</view>
-			<view class="content">
-
+			</view>
+						
+			<view class="msg-null" v-if="goodsList.length == 0 ">
+				<image src="https://t9.9026.com/imgs/dataNull.png" style="width: 394rpx;height: 396rpx;" mode=""></image>
+				<view class="msg-null-text">
+					<text>暂无数据</text>
+				</view>
+			</view>
+			
+			<view class="content" v-if="goodsList.length > 0 ">
 				<view class="home-hotel-img-content">
 					<template v-for="(item,index) in goodsList">
 						<view v-if="item.status==1" @click="goGoodsDetail(item.id)" class="home-hotel-img-content-item" :key="index"
@@ -45,11 +52,9 @@
 					</template>
 				</view>
 				<!-- 触底 -->
-				<view class="home-bottom">
+				<view class="home-bottom" v-if="goodsList.length > 0 ">
 					<uni-load-more :status="status" color="#CCCCCC" :content-text="contentText" />
 				</view>
-				<!-- <text @click="goGoodsDetail">商品</text>
-			<text @click="goGoodsDetailImg">转盘</text> -->
 			</view>
 		</scroll-view>
 		<view class="return-btn" v-if="isShow" @click="handleBackTop">
@@ -222,10 +227,20 @@
 		align-items: center;
 		font-family: PingFang-SC-Heavy, PingFang-SC;
 		overflow-x: scroll;
-
+	}
+	
+	.msg-null{
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		.msg-null-text{
+			margin-top: 40rpx;
+			font-size: 28rpx;
+			color: #333;
+		}
 	}
 
-
 	.scroll-y {
 		height: 100vh;
 	}

+ 25 - 2
pages/index/active-list/index.vue

xqd xqd xqd
@@ -19,7 +19,15 @@
 				</view>
 			</view>
 		</view>
-		<view class="List">
+		
+		<view class="msg-null" v-if="List.length == 0">
+			<image src="https://t9.9026.com/imgs/dataNull.png" style="width: 394rpx;height: 396rpx;" mode=""></image>
+			<view class="msg-null-text">
+				<text>暂无数据</text>
+			</view>
+		</view>
+				
+		<view class="List" v-if="List.length > 0">
 			<template v-for="(item,index) in List" >
 				<view class="ListItem" v-if="item.show_status" :key="index"  @click="activeDetail(item.id)">
 					<image :src="item.banners?item.cover_img:'http://t9.9026.com/imgs/Kudosbg.png'" style="width: 640rpx;height:420rpx;border-radius: 12rpx;"></image>
@@ -46,7 +54,7 @@
 		</view>
 
 		<!-- 触底 -->
-		<view class="home-bottom">
+		<view class="home-bottom" v-if="List.length > 0">
 			<uni-load-more :status="status" color="#CCCCCC" :content-text="contentText"/>
 		</view>
 	</view>
@@ -193,6 +201,21 @@
 		background: #F9F9F9;
 	}
 	
+	.msg-null{
+		margin-top: 224rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		padding-top: 60rpx;
+		.msg-null-text{
+			margin-top: 40rpx;
+			font-size: 28rpx;
+			color: #333;
+		}
+	}
+	
+	
 	.home-bottom {
 		background-color: #f9f9f9;
 		padding-bottom: 84rpx;

+ 1 - 1
pages/index/vote-detail/index.vue

xqd
@@ -150,7 +150,7 @@
 			</view>
 		</uni-popup>
 		
-		<Poster ref="poster" :name="voteDetail.project_name" :title="voteDetail.activity.title"/>
+		<Poster :activity_project_id='activity_project_id'  ref="poster" :name="voteDetail.project_name" :title="voteDetail.activity.title"/>
 		
 	</view>
 </template>

+ 20 - 6
pages/index/vote-detail/poster.vue

xqd xqd xqd xqd xqd
@@ -14,11 +14,11 @@
 		<view :class="{'poster-share':true, on:poster.show}">
 			<view>分享到</view>
 			<view class="poster-share-panel">
-				<view >
+				<view @click="shareBtn(activity_project_id)">
 					 <button class="shareButton" open-type="share"><image src="/static/icon/wechat.svg" mode="aspectFit"/>
 					<text>微信分享</text></button>
 				</view>
-				<view @click="save">
+				<view @click="save(activity_project_id)">
 					<image src="/static/icon/wechat_moments.svg" mode="aspectFit"/>
 					<text>保存相册</text>
 				</view>
@@ -34,9 +34,10 @@
 	
 	export default {
 		components: {lPainter},
-		props: ["title", "name", "img", "qrcode"],
+		props: ["title", "name", "img", "qrcode",'activity_project_id'],
 		data() {
 			return {
+				activityId:'',
 				poster:{
 					show:false,
 					path: "",
@@ -132,14 +133,13 @@
 				},
 			};
 		},
+		
 		methods:{
 			show({name, title, imgUrl, qrcodeUrl}){
 				this.poster.base.views[0].text = name;
 				this.poster.base.views[2].text = title;
 				imgUrl && (this.poster.base.views[5].src = imgUrl);
 				qrcodeUrl && (this.poster.base.views[3].src = qrcodeUrl);
-				
-				
 				uni.pageScrollTo({
 					scrollTop: 0,
 					duration: 1
@@ -149,7 +149,13 @@
 			cancel(){
 				this.poster.show = false;
 			},
-			save(){
+			save(id){
+				this.$api.active.activityShare({
+					share_type:2,
+					activity_project_id:id
+				}).then(res=>{
+					console.log(res.data);
+				})
 				uni.saveImageToPhotosAlbum({
 					filePath: this.poster.path,
 					success(res) {
@@ -161,6 +167,14 @@
 					}
 				})
 			},
+			shareBtn(id){
+				this.$api.active.activityShare({
+					share_type:2,
+					activity_project_id:id
+				}).then(res=>{
+					console.log(res.data);
+				})
+			},
 			share(){
 				// wx.downloadFile({
 				// 	url: this.poster.path, // 下载url

+ 1 - 1
pages/login/login.vue

xqd
@@ -106,7 +106,7 @@
 					//获取登录页前地址
 					let pages = this.getPageUrl()
 					if(pages){
-						uni.redirectTo({
+						uni.reLaunch({
 							url:pages
 						})
 					}else{

+ 11 - 2
pages/msg/msg.vue

xqd xqd xqd xqd
@@ -25,7 +25,7 @@
 		<!-- 消息列表 -->
 		<view class="msgListBox"  v-if="messageList.length > 0">
 			<uni-swipe-action>
-				<uni-swipe-action-item :right-options="options" v-for="(item,index) in messageList" :key="index" > 
+				<uni-swipe-action-item :right-options="options" v-for="(item,index) in messageList" :key="index" @change="change()"> 
 					<template v-slot:right>
 						<view style="display: flex;align-items: center;justify-content: center;" @click="deleteImg(item.id)">
 							<image src="/static/icon/delete.png" style="width: 36rpx; height: 40rpx; margin-right: 20rpx; "></image>
@@ -36,7 +36,7 @@
 						<view class="childBox-top">{{item.title}}</view>
 						<view class="childBox-content">
 							<text>{{item.content}}</text>
-							<image style="width: 12rpx;height: 20rpx;" src="/static/icon/right.png"></image>
+							<image v-if="!isOpenMsg" style="width: 12rpx;height: 20rpx;" src="/static/icon/right.png"></image>
 						</view>
 						<view class="childBox-bom">{{item.created_at}}</view>
 					</view>
@@ -67,6 +67,8 @@
 		},
 		data() {
 			return {
+				//是否展示信息图标
+				isOpenMsg:false,
 				//自定义导航栏
 				bgColor: '#fff',
 				//搜索文字
@@ -94,6 +96,13 @@
 		},
 		methods: {
 			
+			//打开或关闭是触发
+			change(){
+				this.isOpenMsg = !this.isOpenMsg
+				
+			},
+			
+			
 			//删除消息
 			deleteImg(id){
 				this.$api.my.delMessage({

+ 28 - 5
pages/my/Kudos/Kudos.vue

xqd xqd xqd xqd
@@ -1,7 +1,15 @@
 <template>
 	<view class="kudos">
 		<!-- 点赞列表 -->
-		<view class="List">
+		
+		<view class="msg-null" v-if="List.length == 0 ">
+			<image src="https://t9.9026.com/imgs/dataNull.png" style="width: 394rpx;height: 396rpx;" mode=""></image>
+			<view class="msg-null-text">
+				<text>暂无数据</text>
+			</view>
+		</view>
+		
+		<view class="List" v-if="List.length > 0">
 			<view class="ListItem" v-for="(item,index) in List" :key="index" @click="goVoteDetail(item.id)">
 				<image :src="item.cover_img" style="width: 640rpx;height:420rpx;border-radius: 12rpx;"></image>
 				<view class="kudosicon">
@@ -12,9 +20,10 @@
 					<view class="events">
 						<text>{{item.title}}</text>
 					</view>
-					<view class="voteStatus">
-						<text v-if="false">未开始</text>
-						<text style="color:#FF6503 ;">投票中</text>
+					<view class="voteStatus" style="width: 100rpx;">
+						<text style="font-size: 30rpx;color: #999;" v-if="item.activity_status==1">未开始</text>
+						<text style="font-size: 30rpx;color: #FF6503;" v-if="item.activity_status==2">进行中</text>
+						<text style="font-size: 30rpx;color: #999;" v-if="item.activity_status==3">已结束</text>
 					</view>
 				</view>
 				<view class="foot">
@@ -24,7 +33,7 @@
 			</view>
 		</view>
 		<!-- 已经到底啦 -->
-		<uni-load-more :status="status" color="#CCCCCC" :content-text="contentText"/>
+		<uni-load-more v-if="List.length > 0" :status="status" color="#CCCCCC" :content-text="contentText"/>
 	</view>
 </template>
 
@@ -104,6 +113,20 @@
 		height: 100%;
 		background: $pageColor;
 	}
+	
+	
+	.msg-null{
+		padding-top: 60rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		.msg-null-text{
+			margin-top: 40rpx;
+			font-size: 28rpx;
+			color: #333;
+		}
+	}
 
 	.List {
 		padding: 0 30rpx;

+ 24 - 9
pages/my/integral/integral.vue

xqd xqd xqd xqd
@@ -32,14 +32,16 @@
 			<view class="listTop">
 				<text>积分兑换</text>
 			</view>
-			<view class="ListContent">
-				<!-- <view :class="item.short?'[contentItemShort,contentItem]':'[contentItemLong,contentItem]'" v-for="item in integralList" @click="goIntegralDetail(item.id)" >
-					<image :src="item.cover_img?item.cover_img:'http://t9.9026.com/imgs/loginBg.png'" ></image>
-					<view class="itemName">{{item.name}}</view>
-					<view class="itemPrice">{{item.integral}}积分</view>
-				</view> -->
+			
+			<view class="msg-null" v-if="integralList.length == 0 ">
+				<image src="https://t9.9026.com/imgs/dataNull.png" style="width: 394rpx;height: 396rpx;" mode=""></image>
+				<view class="msg-null-text">
+					<text>暂无数据</text>
+				</view>
+			</view>
+			
+			<view class="ListContent" v-if="integralList.length > 0 ">
 				<view class="home-hotel-img-content">
-				
 					<view @click="goIntegralDetail(item.id)" class="home-hotel-img-content-item" v-for="(item,index) in integralList" :key="index"
 						:style="{marginTop:item.marginTop || 0 }" >
 						<image class="home-hotel-img-content-item-img"
@@ -47,7 +49,6 @@
 							:src="item.cover_img" mode=""></image>
 						<view class="text">
 							<text class="text-top">{{item.name}}</text>
-							<!-- <text class="text-main">{{item.hotel.name}}</text> -->
 						</view>
 					</view>
 				
@@ -55,7 +56,7 @@
 			</view>
 			
 			<!-- 触底 -->
-			<view class="home-bottom">
+			<view class="home-bottom" v-if="integralList.length > 0 ">
 				<uni-load-more :status="status" color="#CCCCCC" :content-text="contentText" />
 			</view>
 			
@@ -173,6 +174,20 @@
 		height: 100%;
 		background:$bgColor ;
 	}
+	
+	.msg-null{
+		padding-top: 60rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		.msg-null-text{
+			margin-top: 40rpx;
+			font-size: 28rpx;
+			color: #333;
+		}
+	}
+	
 	.home-bottom {
 		background-color: #FFF;
 		padding-bottom: 84rpx;

+ 78 - 56
pages/my/integral/integralOrder.vue

xqd
@@ -328,66 +328,88 @@
 					return
 				}
 				if(this.is_virtual == 0){
-					if(this.Data.express_type == 1){
-						this.$api.product.integralExchange({
-							...this.Data
-						}).then(res => {
-							if (res.code == 0) {
-								uni.navigateTo({
-									url: '/pages/my/prize/exchangeDetail'
-								})
-							} else {
-								uni.showToast({
-									icon: 'none',
-									title: res.msg
-								})
+					let _this = this
+					uni.showModal({
+						title: '提示',
+						content: '确认使用积分兑换',
+						success: function (res) {
+							if (res.confirm) {
+								if(_this.Data.express_type == 1){
+									_this.$api.product.integralExchange({
+										..._this.Data
+									}).then(res => {
+										if (res.code == 0) {
+											uni.navigateTo({
+												url: '/pages/my/prize/exchangeDetail'
+											})
+										} else {
+											uni.showToast({
+												icon: 'none',
+												title: res.msg
+											})
+										}
+									})
+								}else{
+									let obj ={}
+									obj.express_type = _this.Data.express_type
+									obj.product_id = _this.Data.product_id
+									obj.receiver = _this.Data.receiver
+									obj.phone = _this.Data.phone
+									obj.hotel_id = _this.Data.hotel_id
+									obj.attr = _this.Data.attr
+									_this.$api.product.integralExchange({
+										...obj
+									}).then(res => {
+										if (res.code == 0) {
+											uni.navigateTo({
+												url: '/pages/my/prize/exchangeDetail'
+											})
+										} else {
+											uni.showToast({
+												icon: 'none',
+												title: res.msg
+											})
+										}
+									})
+								}
+							} else if (res.cancel) {
+								console.log('用户点击取消');
 							}
-						})
-					}else{
-						let obj ={}
-						obj.express_type = this.Data.express_type
-						obj.product_id = this.Data.product_id
-						obj.receiver = this.Data.receiver
-						obj.phone = this.Data.phone
-						obj.hotel_id = this.Data.hotel_id
-						obj.attr = this.Data.attr
-						this.$api.product.integralExchange({
-							...obj
-						}).then(res => {
-							if (res.code == 0) {
-								uni.navigateTo({
-									url: '/pages/my/prize/exchangeDetail'
-								})
-							} else {
-								uni.showToast({
-									icon: 'none',
-									title: res.msg
+						}
+					});
+				}else{
+					let _this = this
+					uni.showModal({
+						title: '提示',
+						content: '确认使用积分兑换',
+						success: function (res) {
+							if (res.confirm) {
+								let obj ={}
+								obj.express_type = _this.Data.express_type
+								obj.product_id = _this.Data.product_id
+								obj.receiver = _this.Data.receiver
+								obj.phone = _this.Data.phone
+								obj.hotel_id = _this.Data.hotel_id
+								obj.attr = _this.Data.attr
+								_this.$api.product.integralExchange({
+									...obj
+								}).then(res => {
+									if (res.code == 0) {
+										uni.navigateTo({
+											url: '/pages/my/prize/exchangeDetail'
+										})
+									} else {
+										uni.showToast({
+											icon: 'none',
+											title: res.msg
+										})
+									}
 								})
+							} else if (res.cancel) {
+								console.log('用户点击取消');
 							}
-						})
-					}
-				}else{
-					let obj ={}
-					obj.express_type = this.Data.express_type
-					obj.product_id = this.Data.product_id
-					obj.receiver = this.Data.receiver
-					obj.phone = this.Data.phone
-					obj.hotel_id = this.Data.hotel_id
-					obj.attr = this.Data.attr
-					this.$api.product.integralExchange({
-						...obj
-					}).then(res => {
-						if (res.code == 0) {
-							uni.navigateTo({
-								url: '/pages/my/prize/exchangeDetail'
-							})
-						} else {
-							uni.showToast({
-								icon: 'none',
-								title: res.msg
-							})
 						}
-					})
+					});
 				}
 			},
 			

+ 35 - 6
pages/my/integral/integralRecord.vue

xqd xqd xqd xqd
@@ -10,10 +10,15 @@
 					</view>
 				</view>
 		</view>
-		
+		<view class="msg-null" v-if="incomeList.length == 0 && isActive == 0 ">
+			<image src="https://t9.9026.com/imgs/dataNull.png" style="width: 394rpx;height: 396rpx;" mode=""></image>
+			<view class="msg-null-text">
+				<text>暂无数据</text>
+			</view>
+		</view>
 		<!-- 收入 -->
-		<view class="List" v-if="isActive == 0">
-			<view class="ListItem" v-for="item in incomeList">
+		<view class="List" v-if="isActive == 0 && incomeList.length > 0 ">
+			<view class="ListItem" v-for="(item,index) in incomeList" :key="index">
 				<view style="display: flex; justify-content: space-between;">
 					<view class="title"><text>{{item.change_integral}}积分</text> </view>
 					<view class='data'><text>{{item.created_at}}</text></view>
@@ -23,9 +28,15 @@
 			</view>
 		</view>
 		
+		<view class="msg-null" v-if="spendingList.length == 0 && isActive == 1 ">
+			<image src="https://t9.9026.com/imgs/dataNull.png" style="width: 394rpx;height: 396rpx;" mode=""></image>
+			<view class="msg-null-text">
+				<text>暂无数据</text>
+			</view>
+		</view>
 		<!-- 支出 -->
-		<view class="List" :style="{'--height':ListHeight+'rpx'}" v-if="isActive == 1">
-			<view class="ListItem" v-for="item in spendingList">
+		<view class="List" :style="{'--height':ListHeight+'rpx'}" v-if="isActive == 1 && spendingList.length > 0" >
+			<view class="ListItem" v-for="(item,index) in spendingList" :key="index" >
 				<view style="display: flex; justify-content: space-between;">
 					<view class="title"><text>{{item.change_integral}}积分</text> </view>
 					<view class='data'><text>{{item.created_at}}</text></view>
@@ -36,7 +47,10 @@
 		</view>
 		
 		<!-- 已经到底啦 -->
-		<view class="home-bottom" style="margin-top: 88rpx;padding-bottom: 60rpx;" >
+		<view class="home-bottom" style="margin-top: 88rpx;padding-bottom: 60rpx;"   v-if="isActive == 0 && incomeList.length > 0 ">
+			<uni-load-more :status="status" color="#CCCCCC" :content-text="contentText"/>
+		</view>
+		<view class="home-bottom" style="margin-top: 88rpx;padding-bottom: 60rpx;"   v-if="isActive == 1 && spendingList.length > 0 ">
 			<uni-load-more :status="status" color="#CCCCCC" :content-text="contentText"/>
 		</view>
 	</view>
@@ -121,6 +135,21 @@
 		height: 100%;
 		background: $pageColor;
 	}
+	
+	.msg-null{
+		padding-top: 60rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		.msg-null-text{
+			margin-top: 40rpx;
+			font-size: 28rpx;
+			color: #333;
+		}
+	}
+	
+	
 	.segmented{
 		height: 112rpx;
 		width: 750rpx;

+ 32 - 5
pages/my/myorders/orders.vue

xqd xqd xqd xqd xqd
@@ -23,7 +23,15 @@
 				</view>
 			</view>
 		</view>
-		<view style="background-color: #f9f9f9;">
+		
+		<view class="msg-null" v-if="orderList.length == 0 ">
+			<image src="https://t9.9026.com/imgs/dataNull.png" style="width: 394rpx;height: 396rpx;" mode=""></image>
+			<view class="msg-null-text">
+				<text>暂无数据</text>
+			</view>
+		</view>
+		
+		<view style="background-color: #f9f9f9;" v-if="orderList.length > 0 ">
 			<view class="card" v-for="(item,index) in orderList" :key="index" @click="goOrderDetail(item.id)">
 				<view class="toptitle">
 					<view>订单号:{{item.order_no}}</view>
@@ -63,9 +71,9 @@
 						v-if="item.status ==2 && item.is_virtual == 0&&item.express_type == 2">
 						<text>核销码</text>
 					</view>
-					<view class="btnitem" v-if="item.status == 1">
+					<!-- <view class="btnitem" v-if="item.status == 1">
 						<text>取消</text>
-					</view>
+					</view> -->
 					<view class="btnitem" v-if="item.status == 1">
 						<text>兑换</text>
 					</view>
@@ -77,7 +85,7 @@
 			</view>
 		</view>
 		<!-- 已经到底啦 -->
-		<view class="home-bottom">
+		<view class="home-bottom"  v-if="orderList.length > 0 ">
 			<uni-load-more :status="status" color="#CCCCCC" :content-text="contentText" />
 		</view>
 
@@ -134,16 +142,20 @@
 
 			//确定收货
 			takeOver(id) {
+				uni.showLoading({
+					title:'加载中'
+				})
 				this.$api.orders.confirmReceipt({
 					order_id: id
 				}).then(res => {
 					if (res.code === 0) {
+						uni.hideLoading()
 						uni.showToast({
 							icon: "none",
 							title: '收货成功'
 						})
 						//重新拉数据
-						this.getMyOrder(o.isActive)
+						this.getMyOrder(this.isActive)
 					} else {
 						uni.showToast({
 							icon: "none",
@@ -287,6 +299,21 @@
 		padding-top: 80rpx;
 		background-color: #f9f9f9;
 	}
+	
+	
+	.msg-null{
+		padding-top: 60rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		.msg-null-text{
+			margin-top: 40rpx;
+			font-size: 28rpx;
+			color: #333;
+		}
+	}
+	
 
 
 	::v-deep .segmented-control__text {

+ 10 - 0
pages/my/prize/exchangeDetail.vue

xqd
@@ -62,6 +62,16 @@
 			this.getAdvertis()
 			this.admin = this.$store.getters.userInfo
 		},
+		onBackPress(e){
+			console.log("监听返回按钮事件",e);
+			//正常返回页面
+			uni.navigateTo({
+			 	url:"/pages/my/integral/integral"
+			})
+			// 此处一定要return为true,否则页面不会返回到指定路径
+			return true;
+		},
+		
 
 		methods: {
 			//广告图

+ 43 - 9
pages/my/prize/prize.vue

xqd xqd xqd xqd xqd
@@ -10,13 +10,34 @@
 				</view>
 			</view>
 		</view>
+		
+		<view class="msg-null" v-if="isActive == 0 && PhysicalPrizes.length == 0 ">
+			<image src="https://t9.9026.com/imgs/dataNull.png" style="width: 394rpx;height: 396rpx;" mode=""></image>
+			<view class="msg-null-text">
+				<text>暂无数据</text>
+			</view>
+		</view>
+		
+		<view class="msg-null" v-if="isActive == 1 && VirtualPrizes.length == 0 ">
+			<image src="https://t9.9026.com/imgs/dataNull.png" style="width: 394rpx;height: 396rpx;" mode=""></image>
+			<view class="msg-null-text">
+				<text>暂无数据</text>
+			</view>
+		</view>
+		<view class="msg-null" v-if="isActive == 2 && VirtualPrizes.length == 0 ">
+			<image src="https://t9.9026.com/imgs/dataNull.png" style="width: 394rpx;height: 396rpx;" mode=""></image>
+			<view class="msg-null-text">
+				<text>暂无数据</text>
+			</view>
+		</view>
+		
 
-		<view style="margin-bottom: 60rpx; ">
+		<view style="margin-bottom: 60rpx;" >
 			<!-- 实物奖品 -->
-			<view class="prizeList" :style="{'--height':ListHeight+'rpx'}" v-if="isActive == 0">
+			<view class="prizeList" :style="{'--height':ListHeight+'rpx'}" v-if="isActive == 0  && PhysicalPrizes.length > 0  ">
 				<view class="ListItem" v-for="(item,index) in PhysicalPrizes" :key="index">
 					<view class="title"><text>{{item.name}}</text></view>
-					<view class='data'><text>{{item.created_at}}</text></view>
+					<view class='data'><text>{{item.exchange_start_time}}--{{item.exchange_end_time}}</text></view>
 					<view class="alreadyBtn" v-if="item.status == 2">
 						<text>已兑换</text>
 					</view>
@@ -30,10 +51,10 @@
 			</view>
 			
 			<!-- 线下奖品 -->
-			<view class="prizeList" :style="{'--height':ListHeight+'rpx'}" v-if="isActive == 1">
+			<view class="prizeList" :style="{'--height':ListHeight+'rpx'}" v-if="isActive == 1  && VirtualPrizes.length > 0 ">
 				<view class="ListItem" v-for="(item,index) in VirtualPrizes" :key="index">
 					<view class="title"><text>{{item.name}}</text></view>
-					<view class='data'><text>{{item.created_at}}</text></view>
+					<view class='data'><text>{{item.exchange_start_time}}--{{item.exchange_end_time}}</text></view>
 					<view class="instantBtn" v-if="item.status == 1" @click="goExchangeVir(item.id)">
 						<text>立即兑换</text>
 					</view>
@@ -51,7 +72,7 @@
 			</view>
 			
 			<!-- 中奖记录 -->
-			<view class="prizeList" :style="{'--height':ListHeight+'rpx'}" v-if="isActive == 2">
+			<view class="prizeList" :style="{'--height':ListHeight+'rpx'}" v-if="isActive == 2 && prizeRecord.length > 0 ">
 				<view class="ListItem" v-for="(item,index) in prizeRecord" :key="index"> 
 					<view style="display: flex; justify-content: space-between;">
 						<view class="title"><text>{{item.name}}</text> </view>
@@ -63,7 +84,9 @@
 		</view>
 		
 		<!-- 已经到底啦 -->
-		<uni-load-more :status="status" color="#CCCCCC" :content-text="contentText" />
+		<uni-load-more v-if="isActive == 0  && PhysicalPrizes.length > 0  " :status="status" color="#CCCCCC" :content-text="contentText" />
+		<uni-load-more v-if="isActive == 1  && VirtualPrizes.length > 0  " :status="status" color="#CCCCCC" :content-text="contentText" />
+		<uni-load-more v-if="isActive == 2  && prizeRecord.length > 0  " :status="status" color="#CCCCCC" :content-text="contentText" />
 
 	</view>
 </template>
@@ -161,8 +184,19 @@
 		height: 100%;
 		background: $pageColor;
 	}
-
-
+	
+	.msg-null{
+		padding-top: 60rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		.msg-null-text{
+			margin-top: 40rpx;
+			font-size: 28rpx;
+			color: #333;
+		}
+	}
 
 	.segmented {
 		width: 750rpx;

+ 23 - 6
pages/my/verification/verification.vue

xqd xqd xqd
@@ -26,7 +26,16 @@
 					</view>
 			</view>
 		</view>
-		<view>
+		
+		<view class="msg-null" v-if="orderList.length == 0 ">
+			<image src="https://t9.9026.com/imgs/dataNull.png" style="width: 394rpx;height: 396rpx;" mode=""></image>
+			<view class="msg-null-text">
+				<text>暂无数据</text>
+			</view>
+		</view>
+		
+		
+		<view  v-if="orderList.length > 0 ">
 			<view class="card" v-for="(item,index) in orderList" :key="index" @click="goOrderDetail(item.order_no)" >
 				<view class="toptitle">
 					<view>{{item.hotel.name}}</view>
@@ -51,7 +60,7 @@
 		</view>
 
 		<!-- 已经到底啦 -->
-		<view class="home-bottom">
+		<view class="home-bottom"  v-if="orderList.length > 0 ">
 			<uni-load-more :status="status" color="#CCCCCC" :content-text="contentText"/>
 		</view>
 	</view>
@@ -166,10 +175,18 @@
 		height: 100%;
 		background: $pageColor;
 	}
-	// ::v-deep .segmented-control__item{
-	// 	justify-content: center !important;
-	// 	margin: 0 30rpx;
-	// }
+	.msg-null{
+		padding-top: 60rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		.msg-null-text{
+			margin-top: 40rpx;
+			font-size: 28rpx;
+			color: #333;
+		}
+	}
 		
 	.nav {
 		height: 216rpx;