소스 검색

拼团Demo

m 1 년 전
부모
커밋
88867c68a2

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1 - 19584
package-lock.json


+ 2 - 2
src/components/custom-tab-bar/custom-tab-bar.vue

@@ -40,7 +40,7 @@
 					})
 				} else if (e == 'activity') {
 					uni.switchTab({
-						url: '/pages/activity/index'
+						url: '/pages/lottery/index'
 					})
 				} else if (e == 'user') {
 					uni.switchTab({
@@ -65,7 +65,7 @@
 						name: "activity",
 						iconPath: "../../static/tabbar/activity.png",
 						selectedIconPath: "../../static/tabbar/activity_select.png",
-						text: "免费抽奖"
+						text: "抽奖活动"
 					},
 					{
 						name: "user",

+ 1102 - 0
src/packageOperate/lottery/details.vue

@@ -0,0 +1,1102 @@
+<template>
+	<view style="background-color: #3b05bb; width: 100%; height: 100%;">
+
+		<!-- #ifdef MP-ALIPAY -->
+		<u-navbar title="拼团抽奖" :border="true" :placeholder="true" :autoBack="true" bgColor="#fff" leftIconSize="0" />
+		<!-- #endif -->
+		<!-- #ifndef MP-ALIPAY -->
+		<view v-if="pagesNum > 1">
+			<u-navbar title="拼团抽奖" :border="true" :placeholder="true" :autoBack="true" bgColor="#fff" />
+		</view>
+		<view v-else>
+			<u-navbar leftIconSize="0" :placeholder="true" bgColor="#fff" title="拼团抽奖">
+				<view class="nav-left flex" slot="left" @click="toActivity">
+					<u-icon name="arrow-left" size="20" color="#333"></u-icon>
+				</view>
+			</u-navbar>
+		</view>
+		<!-- #endif -->
+
+		<view class="wrap">
+			<!-- 参与人 -->
+			<!-- <view class="wrap-fakeNum">
+				<view class="fakeNum">{{info.fakeNum}}人已参与</view>
+			</view> -->
+
+			<!-- 距离开奖时间 -->
+			<view class="wrap-date">
+				<view class="wrap-date-on">
+					<view class="wrap-date-on-line" style="right: 30rpx;"></view>距离开奖
+					<view class="wrap-date-on-line" style="left: 30rpx;"></view>
+				</view>
+				<u-count-down :time="activityTime" format="DD:HH:mm:ss" autoStart millisecond @change="onChange">
+					<view class="wrap-date-date">
+						<text>3天12小时56分</text>
+						<!-- <text>{{timeData.days}}天</text>
+						<text>{{ timeData.hours>=10?timeData.hours:'0'+timeData.hours }}:</text>
+						<text>{{ timeData.minutes>=10?timeData.minutes:'0'+timeData.minutes }}:</text>
+						<text>{{ timeData.seconds>=10?timeData.seconds:'0'+timeData.seconds }}</text> -->
+					</view>
+				</u-count-down>
+			</view>
+			<!-- <view v-if="info.status && JSON.parse(info.status).value == 3" class="wrap-date">
+				<view class="wrap-date-on">
+					<view class="wrap-date-on-line" style="right: 30rpx;"></view>距离开奖
+					<view class="wrap-date-on-line" style="left: 30rpx;"></view>
+				</view>
+				<u-count-down :time="activityTime" format="DD:HH:mm:ss" autoStart millisecond @change="onChange">
+					<view class="wrap-date-date">
+						<text>{{timeData.days}}天</text>
+						<text>{{ timeData.hours>=10?timeData.hours:'0'+timeData.hours }}:</text>
+						<text>{{ timeData.minutes>=10?timeData.minutes:'0'+timeData.minutes }}:</text>
+						<text>{{ timeData.seconds>=10?timeData.seconds:'0'+timeData.seconds }}</text>
+					</view>
+				</u-count-down>
+			</view> -->
+
+			<!-- 距离开始时间 -->
+			<view v-if="info.status && JSON.parse(info.status).value == 2" class="wrap-date">
+				<view class="wrap-date-on">
+					<view class="wrap-date-on-line" style="right: 30rpx;"></view>距离开始
+					<view class="wrap-date-on-line" style="left: 30rpx;"></view>
+				</view>
+				<u-count-down :time="activityTimeTwo" format="DD:HH:mm:ss" autoStart millisecond @change="onChange">
+					<view class="wrap-date-date">
+						<text>{{timeData.days}}天</text>
+						<text>{{ timeData.hours>=10?timeData.hours:'0'+timeData.hours }}:</text>
+						<text>{{ timeData.minutes>=10?timeData.minutes:'0'+timeData.minutes }}:</text>
+						<text>{{ timeData.seconds>=10?timeData.seconds:'0'+timeData.seconds }}</text>
+					</view>
+				</u-count-down>
+			</view>
+			<!-- 拼团的一些内容 -->
+			<view class="group-person-warp group-msg-warp wrap-description">
+				 <view class="group-person-title">轩妈蛋黄酥40g*4枚2袋装随心装</view>
+				 <view class="group-msg">
+				 	<view class="lottery-price"><text>¥</text>0.01</view>
+					<view class="lottery-person">已拼430人</view>
+				 </view> 
+			</view>
+            <!-- 参与拼团人员列表 -->
+			<view class="group-person-warp wrap-description"><!-- <text>查看更多</text> -->
+				<view class="group-person-title">这些人已拼,参与可立即拼成</view>
+				<view class="group-person-list">
+					<view class="group-person-item">
+						<view class="group-person-item-inner">
+							<view class="left">
+								<image class="group-person-img" src="https://mp-public-test-1309783959.cos.ap-shanghai.myqcloud.com/474/EU6X9G2QN0YQWF2Q0OM9?imageView2/2/w/170" mode=""></image>
+								<view class="group-person-name">水晶球</view>
+							</view>
+							<view class="right">
+								<view class="group-person-text">
+									还差3人拼成
+								</view>
+								<button>去加入</button>
+							</view> 
+						</view>
+					</view>
+					<view class="group-person-item">
+						<view class="group-person-item-inner">
+							<view class="left">
+								<image class="group-person-img" src="https://mp-public-test-1309783959.cos.ap-shanghai.myqcloud.com/474/EU6X9G2QN0YQWF2Q0OM9?imageView2/2/w/170" mode=""></image>
+								<view class="group-person-name">水晶球</view>
+							</view>
+							<view class="right">
+								<view class="group-person-text">
+									还差3人拼成
+								</view>
+								<button>去加入</button>
+							</view> 
+						</view>
+					</view>
+					<view class="group-person-item">
+						<view class="group-person-item-inner">
+							<view class="left">
+								<image class="group-person-img" src="https://mp-public-test-1309783959.cos.ap-shanghai.myqcloud.com/474/EU6X9G2QN0YQWF2Q0OM9?imageView2/2/w/170" mode=""></image>
+								<view class="group-person-name">水晶球</view>
+							</view>
+							<view class="right">
+								<view class="group-person-text">
+									还差3人拼成
+								</view>
+								<button>去加入</button>
+							</view> 
+						</view>
+					</view>
+					<view class="group-person-item">
+						<view class="group-person-item-inner">
+							<view class="left">
+								<image class="group-person-img" src="https://mp-public-test-1309783959.cos.ap-shanghai.myqcloud.com/474/EU6X9G2QN0YQWF2Q0OM9?imageView2/2/w/170" mode=""></image>
+								<view class="group-person-name">水晶球</view>
+							</view>
+							<view class="right">
+								<view class="group-person-text">
+									还差3人拼成
+								</view>
+								<button>去加入</button>
+							</view> 
+						</view>
+					</view>
+					<view class="group-person-item">
+						<view class="group-person-item-inner">
+							<view class="left">
+								<image class="group-person-img" src="https://mp-public-test-1309783959.cos.ap-shanghai.myqcloud.com/474/EU6X9G2QN0YQWF2Q0OM9?imageView2/2/w/170" mode=""></image>
+								<view class="group-person-name">水晶球</view>
+							</view>
+							<view class="right">
+								<view class="group-person-text">
+									还差3人拼成
+								</view>
+								<button>去加入</button>
+							</view> 
+						</view>
+					</view>
+				</view>
+			</view>
+			<!-- 一等奖 -->
+			<view v-for="(item,index) in awardsList" :key="item.id">
+				<view class="wrap-fixed" v-for="(itemTwo,index1) in item.prizeList" :key="index1"
+					v-if="item.name == '一等奖'">
+					<view class="wrap-fixed-effectstwo">
+						<view class="effectsthree">
+							<navigator @click="couponStorage(itemTwo)"
+								:url="itemTwo.prizeType && JSON.parse(itemTwo.prizeType).value == 'goods' ? `/packagePrize/goods/detail?id=${ itemTwo.refId }`:JSON.parse(itemTwo.prizeType).value == 'coin' ?`/packagePrize/goods/detail?id=424`:`/packagePrize/goods/detail?id=425`"
+								hover-class="none">
+								<view class="effectsthree-width">
+									<image src="../static/activity/effectsthree.png" mode="scaleToFill"></image>
+									<view class="effectsthree-width-name">
+										{{item.name}}
+									</view>
+								</view>
+								<view class="effectsthree-position">{{item.quantity}}个名额 </view>
+								<view class="effectsthree-positionTwo">
+									<view>
+										<image :src="itemTwo.picUrl" mode="aspectFit"></image>
+									</view>
+									<view class="effectstwo1"></view>
+									<view class="textone ells-one"
+										v-if="itemTwo.prizeType && JSON.parse(itemTwo.prizeType).value == 'coin'">
+										{{itemTwo.title}}x{{itemTwo.value}}
+									</view>
+									<view class="textone ells-one" v-else> {{itemTwo.title}} </view>
+									<view class="texttwo ells-one"
+										v-if="itemTwo.prizeType && JSON.parse(itemTwo.prizeType).value != 'coin'">
+										¥{{$numberFormat(itemTwo.value)}} </view>
+								</view>
+							</navigator>
+						</view>
+						
+					</view>
+				</view>
+			</view>
+
+			<!-- 非一等奖 -->
+			<view v-for="(item,index) in awardsList" :key="index">
+				<view v-if="item.name != '一等奖'">
+					<view class="wrap-award">
+						<view class="effectsthree">
+							<view class="effectsthree-width">
+								<image src="../static/activity/effectsthree.png" mode="scaleToFill"></image>
+								<view class="effectsthree-width-name">
+									{{item.name}}
+								</view>
+							</view>
+							<view class="effectsthree-position">{{item.quantity}}个名额 </view>
+							<view style="padding-top: 120rpx;"></view>
+							<view class="effectsthree-positionTwo" v-for="(itemTwo,index1) in item.prizeList"
+								:key="index1">
+								<navigator @click="couponStorage(itemTwo)"
+									:url="JSON.parse(itemTwo.prizeType).value == 'goods' ? `/packagePrize/goods/detail?id=${ itemTwo.refId }`:JSON.parse(itemTwo.prizeType).value == 'coin' ?`/packagePrize/goods/detail?id=424`:`/packagePrize/goods/detail?id=425`"
+									hover-class="none">
+									<view class="flex justify">
+										<view>
+											<image :src="itemTwo.picUrl" mode="aspectFit" class="imatwo"></image>
+										</view>
+										<view>
+											<view class="textone ells-one"
+												v-if="itemTwo.prizeType && JSON.parse(itemTwo.prizeType).value == 'coin'">
+												{{itemTwo.title}}x{{itemTwo.value}}
+											</view>
+											<view class="textone ells-one" v-else> {{itemTwo.title}}</view>
+											<view class="texttwo ells-one"
+												v-if="itemTwo.prizeType && JSON.parse(itemTwo.prizeType).value != 'coin'">
+												¥{{$numberFormat(itemTwo.value)}} </view>
+										</view>
+									</view>
+								</navigator>
+							</view>
+						</view>
+						<view v-if="item.prizeList && item.prizeList.length > 1 " class="wrap-award-explain">以上奖品随机获得一件</view>
+					</view>
+				</view>
+			</view>
+
+			<!-- 我的抽奖码 -->
+
+			<!-- 抽奖码 -->
+			<view class="wrap-description">
+				<view class="wrap-description-code"> 我的抽奖码</view>
+				<view v-if="info.codeList && info.codeList.length > 0" class="wrap-description-codetwo">
+					<view class="codeList" v-for="(item,index) in info.codeList" :key="index">
+						<view class="codeList-bottom">{{item}}</view>
+					</view>
+				</view>
+				<view v-else class="wrap-description-codethree">
+					<view class="codethree">
+						<image src="../static/activity/off.png" mode="scaleToFill" class="codeimg"></image>
+					</view>
+					<text class="codesix">还没有抽奖码</text>
+				</view>
+				<view class="wrap-description-codesix" v-if="info.codeList && info.codeList.length > 0">再获取1个抽奖码可超过当前
+					<view class="view">{{ (info.codeList.length + 4)*5 > 80 ? 80 : (info.codeList.length + 4)*5}}%
+					</view>的人
+				</view>
+				<view class="wrap-description-codesixtwo">每邀请一位好友助力成功,即可获得1个抽奖码</view>
+				<view class="wrap-description-codesixtwo">抽奖码越多中奖概率越大</view>
+			</view>
+
+			<!-- 关注公众号 -->
+			<!-- #ifdef MP-WEIXIN -->
+			<view class="wrap-account" @click="toWeixin">
+				<view class="wrap-account-view">
+					<image src="https://mp-public-1310078123.cos.ap-shanghai.myqcloud.com/static/logo.png" mode=""></image>
+					<text>关注码上快购公众号,获取中奖提醒</text>
+					<view>去关注</view>
+				</view>
+			</view>
+			<!-- #endif -->
+
+			<!-- 图文介绍 -->
+			<view v-if="description" class="wrap-descriptiontwo">
+				<view style="padding: 36rpx 24rpx 36rpx;">图文介绍</view>
+				<u-parse :content="description" :selectable="true"></u-parse>
+			</view>
+
+		</view>
+
+		<!-- #ifdef MP-WEIXIN -->
+		<view class="footer-fixed">
+			<view class="flex btn">
+				<!-- <button  type="default" @click="exChange" style="background-color: #673AB7;"
+					open-type="share">分享给好友,参与拼团</button> -->
+				<button  type="default"
+					@click="exChangeCode"><text>¥0.01</text>发起拼团</button>
+				<!-- <button type="default" @click="exChange" open-type="share">分享给好友,提升中奖概率</button> -->
+				<!--<u-count-down v-else :time="activityTimeTwo" format="DD:HH:mm:ss" autoStart millisecond
+					@change="onChange">
+					<button class="buttoncol" type="default">
+						开始倒计时:{{timeData.days}}&nbsp;天{{ timeData.hours>=10?timeData.hours:'0'+timeData.hours}}&nbsp;:{{timeData.minutes>=10?timeData.minutes:'0'+timeData.minutes}}&nbsp;:{{timeData.seconds>=10?timeData.seconds:'0'+timeData.seconds}}
+					</button>
+				</u-count-down> -->
+			</view>
+		</view>
+		<!-- #endif -->
+		<!-- #ifdef H5 -->
+		<view class="footer-fixed">
+			<view class="flex btn">
+				<button type="default" 
+					@click="exChangeCodeH5"><text>¥0.01</text> 发起拼团</button>
+				<button type="default" @click="toWeChatProgram" class="buttoncol" v-else>请在微信“码上快购”小程序分享助力</button>
+			</view>
+		</view>
+		<!-- #endif -->
+
+		<!-- <u-popup :show="popupShow" mode="bottom" @close="close" closeable>
+			<view class="popupcode">获取抽奖码</view>
+			<view class="popupcodetwo">
+				<view class="popupcodetwo-view">邀请好友助力,获取抽奖码</view>
+				<text class="popupcodetwo-text">每邀请一位好友助力成功,即可获得1个抽奖码,没有上限</text>
+			</view>
+			<view class="popupcodethree" style="">
+				<button type="default" class="popupcodethree-default" open-type="share">立即邀请好友助力</button>
+			</view>
+		</u-popup> -->
+
+		<!-- <u-popup v-if="info.status && JSON.parse(info.status).value == 4"   mode="bottom" @close="close" closeable> -->
+
+		<!-- 助力邀请弹框组件 -->
+		<activity-help :activity-show="activityShow" :inviteCode="inviteCodeTa" :marketingId="marketingId"
+			@close="close" @exChange='exChange' @success="toActivity"
+			v-if="activityShow && info.status && JSON.parse(info.status).value == 3" />
+		<!-- 活动结束弹框 -->
+		<u-popup v-if="info.status && JSON.parse(info.status).value == 4 || info.isOn == -1" show="true" mode="center"  bgColor='transparent'
+			@close="close" round="11">
+			<view style="text-align: center;width: 600rpx; height: 500rpx;background-color: #fff;">
+				<view style="color: #666;margin-top: 110rpx;font-size: 40rpx;">来晚了,活动已结束</view>
+				<view style="color: #666;margin-top: 50rpx;font-size: 36rpx;">点击前往查看新的免费抽奖活动</view>
+				<button @click="toActivity" type="default"
+					style="background-color: #A26BFF;color: #fff; width: 300rpx;margin-top: 70rpx;">确定</button>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	import env from '../../config/env.js'
+	import $http from '@/utils/request.js'
+	import log from '@/common/log.js'
+	import appId from '@/config/appId.js'
+	import ActivityHelp from '../components/activity-help/activity-help.vue'
+	import {
+		formatRichText
+	} from '@/utils/util.js'
+	export default {
+		components: {
+			ActivityHelp
+		},
+		data() {
+			return {
+				popupShow: false,
+				id: '',
+				description: '', //富文本
+				info: {}, //列表
+				timeData: {}, //时间
+				awardsList: [], //奖品
+				inviteCode: '', //邀请码
+				activityTime: 0,
+				activityTimeTwo: 0,
+				activityShow: false, //助力邀请弹框
+				inviteCodeTa: '', //邀请码
+				marketingId: '', //活动id
+				userInfo: '', //uid
+				pagesNum: '',
+			}
+		},
+		onLoad(opthios) {
+			if (opthios.id) {
+				this.id = opthios.id
+			}
+			if (opthios.userId) {
+				uni.setStorageSync('shareUid', opthios.userId != 'undefined' ? opthios.userId : null)
+				if (opthios.userId === undefined || opthios.userId === 'undefined') {
+					uni.getSystemInfo({
+						success(res) {
+							log.error(
+								`基础库:${ res.SDKVersion },设备:${ res.model }-${ res.system },页面:/packageOperate/activity/index.vue.`
+							)
+						}
+					})
+				}
+			}
+			if (opthios.type) {
+				uni.setStorageSync('shareType', opthios.type)
+			}
+			/**
+			 * 免费活动邀请助力分享跳转接收参数
+			 * inviteCodeTa: 邀请码
+			 * marketingId: 活动id
+			 * */
+			if (opthios.inviteCode && opthios.marketingId) {
+				this.inviteCodeTa = opthios.inviteCode
+				this.marketingId = opthios.marketingId
+				this.id = opthios.marketingId
+				this.activityShow = true
+			}
+			// this.getDetail()
+		},
+		onShow() {
+			this.pagesNum = getCurrentPages().length
+			this.getBaseInfo()
+		},
+		methods: {
+			toActivity() {
+				uni.reLaunch({
+					url: `/pages/activity/index`
+				})
+			},
+			getDetail() {
+				uni.showLoading({
+					title: '加载中'
+				});
+				$http.post(`/api/v1/mp/user/marketing/detail/${this.id}`, {}).then(res => {
+					uni.hideLoading();
+					if (res.code == 0) {
+						this.info = res.data
+						let awardsList = res.data.awardsList
+						awardsList.forEach(item => {
+							item.prizeList.forEach(itemTwo => {
+								itemTwo.picUrl = (env.filePublic + itemTwo.picUrl.split(',')[0] +
+									'?imageView2/2/w/750')
+							})
+						})
+						this.awardsList = awardsList
+						// 处理富文本
+						// #ifndef MP-ALIPAY
+						const description = res.data.description.replaceAll(".jpg\"", ".jpg?imageView2/2/w/750\"")
+							.replaceAll(".jpeg\"", ".jpeg?imageView2/2/w/750\"").replaceAll(".png\"",
+								".png?imageView2/2/w/750\"");
+						this.description = formatRichText(description);
+						// #endif
+
+						// #ifdef MP-ALIPAY
+						res.data.description.split(".jpg\"").join(".jpg?imageView2/2/w/750\"")
+						res.data.description.split(".jpeg\"").join(".jpeg?imageView2/2/w/750\"")
+						res.data.description.split(".png\"").join(".png?imageView2/2/w/750\"")
+						this.description = formatRichText(res.data.description);
+						// #endif
+
+						let timestamp = parseInt(new Date().getTime())
+						this.activityTime = this.info.endTime - timestamp
+						this.activityTimeTwo = this.info.startTime - timestamp
+					}
+				}).catch(() => {
+					uni.hideLoading();
+				})
+				$http.post('/api/v1/mp/user/marketing/inviteCode', {}).then(res => {
+					if (res.code == 0) {
+						this.inviteCode = res.data
+					}
+				})
+			},
+			onChange(e) {
+				this.timeData = e
+			},
+			exChange() {
+				//弹出层打开
+				// this.popupShow = true
+				if (appId == 1) {
+					//微信盲票小程序
+					uni.requestSubscribeMessage({
+						tmplIds: ['92xxL8XTRPLROyNUtmN04OT0kyq4iwSCH3sz-j6zbZs',
+							'FGcPOV1j9ApESr3VUlWjFr6E1vF4X_h0LLN82T2CLL0',
+							'3y_My-yRmqmGd3-f-vAwNaK4LQeehzXBSNDi_5wcnFI',
+						],
+						success(res) {}
+					})
+				}else if (appId == 2) {
+					//微信码上快购小程序
+					uni.requestSubscribeMessage({
+						tmplIds: ['b2mMyGHeNQ03D3CZl3iUkDxY0F94ytRAUWgoCKq2Nik',
+							'bEdEYrjbE6r0647j8o9bgWqSrIqcRJLmaiqqxYkg1-Y',
+						],
+						success(res) {}
+					})
+				}
+
+			},
+			//立即参与抽奖
+			exChangeCode() {
+				$http.post(`/api/v1/mp/user/marketing/generateCode/${this.id}`, {}).then(res => {
+					if (res.code == 0) {
+						this.getDetail()
+						setTimeout(() => {
+							uni.$u.toast('参与成功,您已获得1个抽奖码');
+						}, 500)
+					}
+				})
+				this.exChange()
+			},
+			exChangeCodeH5() {
+				$http.post(`/api/v1/mp/user/marketing/generateCode/${this.id}`, {}).then(res => {
+					if (res.code == 0) {
+						this.getDetail()
+						setTimeout(() => {
+							uni.$u.toast('参与成功,您已获得1个抽奖码');
+						}, 500)
+					}
+				})
+			},
+			close() {
+				//弹出层收起
+				// this.popupShow = false
+				// 关闭支付弹框
+				this.activityShow = false
+				this.getDetail()
+			},
+
+			//公众号
+			toWeixin() {
+				uni.navigateTo({
+					url: `/packageOperate/activity/wxofficial`
+				})
+			},
+			
+			//跳转微信小程序
+			toWeChatProgram() {
+				// location.href = 'weixin://dl/business/?t=xxxxxx'
+			},
+			couponStorage(item) {
+				if (item.prizeType && JSON.parse(item.prizeType).value === 'coupon' || JSON.parse(item.prizeType).value === 'coupon_pkg') {
+					if (item.couponDetail) {
+						uni.setStorageSync('couponDetail', item.couponDetail);
+					}
+				}
+			},
+
+			getBaseInfo() {
+				$http.post('/api/v1/mp/user/getLoginUserinfo', {
+					appSource: appId
+				}).then(res => {
+					uni.hideLoading();
+					if (res.code == 0) {
+						this.userInfo = res.data
+					}
+				})
+			}
+		},
+		onShareAppMessage(res) {
+			return {
+				title: '超值宝贝免费抽,参与活动仅需3秒',
+				path: `/packageOperate/activity/index?marketingId=${ this.info.id }&inviteCode=${ this.inviteCode }&userId=${ this.userInfo.userId?this.userInfo.userId:null }&type=1`,
+				imageUrl: 'https://mp-public-1310078123.cos.ap-shanghai.myqcloud.com/v2/free_draw_bkg.jpeg',
+			}
+		},
+		//分享朋友圈
+		onShareTimeline() {
+			return {
+				title: '超值宝贝免费抽,参与活动仅需3秒',
+				imageUrl: 'https://mp-public-1310078123.cos.ap-shanghai.myqcloud.com/v2/free_draw_bkg.jpeg',
+				query: `marketingId=${ this.info.id }&inviteCode=${ this.inviteCode }&userId=${ this.userInfo.userId?this.userInfo.userId:null }&type=1`
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.popupcode {
+		height: 98rpx;
+		width: 100%;
+		background-color: #F8832C;
+		text-align: center;
+		line-height: 98rpx;
+		color: #fff;
+		font-size: 32rpx;
+	}
+
+	.popupcodetwo {
+		padding: 30rpx 20rpx;
+
+		&-view {
+			color: #101010;
+			line-height: 50rpx;
+			font-size: 30rpx;
+		}
+
+		&-text {
+			color: #8c8c8c;
+			font-size: 26rpx;
+		}
+	}
+
+	.popupcodethree {
+		padding: 0rpx 20rpx 50rpx;
+
+		&-default {
+			background-color: #FCE9DB;
+			color: #fff;
+			border: 2rpx solid #F8832C;
+			color: #F9832C;
+			border-radius: 22rpx;
+		}
+	}
+
+	.wrap {
+		// 设置ios刘海屏底部横线安全区域
+		// padding-bottom: constant(safe-area-inset-bottom);
+		// padding-bottom: env(safe-area-inset-bottom);
+		padding-bottom: 250rpx;
+		background: url(https://mp-public-1310078123.cos.ap-shanghai.myqcloud.com/static/activityBackGround.png) no-repeat 100% 0%;
+		background-size: 100%;
+
+		&-fakeNum {
+			padding: 88rpx 0 20rpx 0;
+			text-align: center;
+			.fakeNum {
+				display: inline-block;
+				line-height: 58rpx;
+				text-align: center;
+				width: 208rpx;
+				height: 58rpx;
+				background: linear-gradient(180deg, #FBB8B8 0%, #8E51F7 100%);
+				border-radius: 2rpx;
+				color: #fff;
+				font-size: 26rpx;
+			}
+		}
+
+		&-date {
+			text-align: center;
+			width: 100%;
+			font-family: YouSheBiaoTiHei;
+			color: #FFFFFF;
+			margin-bottom: 70rpx;
+            padding-top: 50rpx;
+			&-on {
+				display: inline-block;
+				font-size: 76rpx;
+
+				&-line {
+					display: inline-block;
+					width: 68rpx;
+					height: 2rpx;
+					overflow: hidden;
+					background-color: #fff;
+					position: relative;
+					bottom: 25rpx;
+				}
+			}
+
+			&-date {
+				font-size: 52rpx;
+			}
+		}
+
+		&-fixed {
+			height: 630rpx;
+			margin: 46rpx 30rpx;
+
+			&-effectstwo {
+				width: 100%;
+				height: 100%;
+				background-color: #fff;
+
+				.effectsthree {
+					position: relative;
+					height: 400rpx;
+					width: 100%;
+					z-index: 10;
+
+					&-width {
+						position: absolute;
+						width: 175rpx;
+						height: 175rpx;
+						margin: 0;
+
+						image {
+							width: 100%;
+							height: 100%;
+						}
+
+						&-name {
+							position: relative;
+							left: 2rpx;
+							top: -162rpx;
+							transform: rotateZ(-45deg);
+							font-family: YouSheBiaoTiHei-Regular, YouSheBiaoTiHei;
+							color: #fff;
+							font-size: 36rpx;
+						}
+					}
+
+					&-position {
+						position: absolute;
+						width: 148rpx;
+						height: 48rpx;
+						// background-image: linear-gradient(to right, #FAE08A, #FFC45A);
+						border-radius: 2rpx;
+						border: 2rpx solid $uni-text-color;
+						background-color: #fff;
+						line-height: 48rpx;
+						text-align: center;
+						color: $uni-text-color;
+						font-size: 24rpx;
+						top: 42rpx;
+						right: 42rpx;
+					}
+
+					&-positionTwo {
+						width: 100%;
+						height: 100%;
+						text-align: center;
+						
+						.effectstwo1 {
+							margin-top: 292rpx;
+							display: inline-block;
+							width: 420rpx;
+							height: 182rpx;
+							background: url(https://mp-public-1310078123.cos.ap-shanghai.myqcloud.com/static/activityPrizeplatform.png) no-repeat 100% center;
+							background-size: 100%;
+						}
+						
+						image {
+							position: absolute;
+							left: 28%;
+							top: 116rpx;
+							width: 310rpx;
+							height: 246rpx;
+						}
+
+						.textone {
+							width: 70%;
+							margin: 0 auto;
+							color: #333333;
+							font-size: 28rpx;
+							font-weight: 500;
+							line-height: 32rpx;
+						}
+
+						.texttwo {
+							color: $uni-text-color;
+							margin-top: 20rpx;
+							font-size: 38rpx;
+							font-weight: 500;
+							line-height: 42rpx;
+						}
+					}
+				}
+				
+				
+			}
+		}
+
+		&-award {
+			padding-bottom: 50rpx;
+			// height: 2230rpx;
+			margin: 46rpx 30rpx;
+			background-color: #fff;
+
+			.effectsthree {
+				position: relative;
+				// height: 400rpx;
+				// width: 100%;
+				// z-index: 10;
+
+				&-width {
+					position: absolute;
+					width: 175rpx;
+					height: 175rpx;
+					margin: 0;
+
+					image {
+						width: 100%;
+						height: 100%;
+					}
+
+					&-name {
+						position: relative;
+						left: 2rpx;
+						top: -162rpx;
+						transform: rotateZ(-45deg);
+						font-family: YouSheBiaoTiHei-Regular, YouSheBiaoTiHei;
+						color: #fff;
+						font-size: 36rpx;
+					}
+				}
+
+				&-position {
+					position: absolute;
+					width: 148rpx;
+					height: 48rpx;
+					// background-image: linear-gradient(to right, #FAE08A, #FFC45A);
+					border-radius: 2rpx;
+					border: 2rpx solid $uni-text-color;
+					background-color: #fff;
+					line-height: 48rpx;
+					text-align: center;
+					color: $uni-text-color;
+					font-size: 24rpx;
+					top: 42rpx;
+					right: 42rpx;
+				}
+
+				&-positionTwo {
+					padding: 34rpx 0;
+					margin: 0 62rpx;
+					justify-content: flex-start;
+					border-bottom: 2rpx solid rgba(51,51,51,0.12);
+					
+					.justify {
+						justify-content: left;
+					}
+
+					.imatwo {
+						width: 150rpx;
+						height: 150rpx;
+
+					}
+
+					.textone {
+						color: #333333;
+						font-size: 30rpx;
+						font-weight: 500;
+						margin-left: 20rpx;
+						line-height: 75rpx;
+					}
+
+					.texttwo {
+						margin-left: 20rpx;
+						color: $uni-text-color;
+						font-weight: 500;
+						font-size: 28rpx;
+						line-height: 75rpx;
+					}
+
+					.imgone {
+						width: 449rpx;
+						height: 280rpx;
+						position: relative;
+						bottom: 80rpx;
+						margin-left: 0%;
+						z-index: 0;
+
+						// width: 45%;
+						// height: 45%;
+					}
+				}
+				&-positionTwo:last-child {
+					border: none;
+				}
+			}
+
+			&-explain {
+				margin-top: 30rpx;
+				text-align: center;
+				color: #999999;
+				font-size: 30rpx;
+			}
+		}
+
+		&-description {
+			min-height: 200rpx;
+			background-color: #fff;
+			margin: 46rpx 30rpx;
+			border-radius: 2rpx;
+			padding-bottom: 40rpx;
+
+			&-code {
+				font-size: 30rpx;
+				color: #333;
+				font-weight: 500;
+				padding: 36rpx 24rpx;
+			}
+
+			&-codetwo {
+				text-align: center;
+				margin-top: 20rpx;
+				margin-bottom: 40rpx;
+
+				.codeList {
+					text-align: center;
+					margin-bottom: 40rpx;
+
+					&-bottom {
+						margin: 0 auto;
+						width: 460rpx;
+						height: 68rpx;
+						background-color: $uni-text-color;
+						color: #fff;
+						border-radius: 4rpx;
+						font-size: 28rpx;
+						font-weight: 500;
+						line-height: 68rpx;
+
+					}
+				}
+			}
+
+			&-codethree {
+				text-align: center;
+
+				.codethree {
+					margin-left: 80rpx;
+
+					.codeimg {
+						width: 200rpx;
+						height: 200rpx;
+					}
+				}
+
+				.codesix {
+					line-height: 1rpx;
+					color: $uni-text-color;
+					font-size: 30rpx;
+					display: inline-block;
+					margin-bottom: 80rpx;
+				}
+			}
+
+			&-codesix {
+				padding: 10rpx 0;
+				text-align: center;
+				line-height: 60rpx;
+				font-size: 28rpx;
+				font-weight: bold;
+				color: #666666;
+				margin-bottom: 20rpx;
+
+				.view {
+					font-size: 28rpx;
+					color: $uni-text-color;
+					display: inline-block;
+				}
+			}
+
+			&-codesixtwo {
+				margin: 0 auto;
+				width: 600rpx;
+				font-size: 26rpx;
+				color: #333;
+				line-height: 40rpx;
+				// padding-bottom: 40rpx;
+				text-align: center;
+			}
+		}
+
+		&-descriptiontwo {
+			margin: 30rpx;
+			border-radius: 2rpx;
+			overflow: hidden;
+			background-color: #fff;
+		}
+
+		&-account {
+			height: 100rpx;
+			border-radius: 2rpx;
+			background-color: #fff;
+			margin: 30rpx 30rpx 0 30rpx;
+			text-align: center;
+
+			&-view {
+				padding: 0 10rpx;
+
+				image {
+					width: 60rpx;
+					height: 60rpx;
+					vertical-align: -48%;
+				}
+
+				text {
+					line-height: 100rpx;
+					margin: 20rpx 15rpx;
+					font-size: 26rpx;
+					color: #666;
+				}
+
+				view {
+					text-align: center;
+					border-radius: 4rpx;
+					display: inline-block;
+					height: 46rpx;
+					line-height: 40rpx;
+					font-size: 24rpx;
+					width: 110rpx;
+					color: $uni-text-color;
+					background-color: #fff;
+					border: 2rpx solid $uni-btn-color;
+				}
+
+			}
+
+
+		}
+	}
+
+	.data-btn {
+		float: left;
+
+		text {
+			display: inline-block;
+			width: 60rpx;
+		}
+	}
+
+	.footer-fixed {
+		position: fixed;
+		bottom: var(--window-bottom);
+		left: 0;
+		right: 0;
+		z-index: 11;
+		box-shadow: 0 -4rpx 40rpx 0 rgba(151, 151, 151, 0.24);
+		background: #fff;
+		// 设置ios刘海屏底部横线安全区域
+		padding-bottom: constant(safe-area-inset-bottom);
+		padding-bottom: env(safe-area-inset-bottom);
+
+		.btn {
+			padding: 20rpx 0;
+            padding-top: 5rpx;
+			::v-deep button {
+				width: 640rpx;
+				height: 78rpx;
+				line-height: 78rpx;
+				font-size: 30rpx;
+				color: #fff;
+				// background-color: $uni-btn-color;
+				background-color:#e91e63;
+				border: none;
+				border-radius: 4rpx;
+			}
+		}
+
+		.buttoncol {
+			background-color: #555;
+		}
+	}
+	.group-person-warp{
+		background: #fff;
+		padding: 20rpx;
+		.group-person-title{
+			font-size: 30rpx;
+			    color: #333;
+			    font-weight: 500;
+			    /* padding: 36rpx 24rpx; */
+			    padding-bottom: 15rpx;
+			    margin-bottom: 15rpx;
+			    border-bottom: 1rpx solid #f7f7f7;
+				text{
+					font-size: 27rpx;
+					    color: #9c9999;
+					    float: right;
+				}
+		}
+		.group-person-list{
+			max-height: 300rpx;
+			    overflow: auto;
+		}
+		.group-person-item{
+			margin-bottom: 20rpx;
+		}
+		.group-person-item-inner{
+			display: flex;
+			align-items: center;
+			justify-content: space-between; 
+			.group-person-img{
+				width: 100rpx;
+				height: 100rpx;
+				border-radius: 100%;
+				margin-right: 10rpx;
+			}
+			.left{
+				display: flex;
+				align-items: center;
+			}
+			.right{
+				display: flex;
+				align-items: center;
+			}
+			.group-person-text{
+				margin-right: 10px;
+			}
+			button{
+				    width: 152rpx;
+				    height: 58rpx;
+				    line-height: 58rpx;
+				    background-color: #8E51F7;
+				    color: #fff; 
+				    font-size: 28rpx;
+				    border-radius: 8rpx;
+				    display: block;
+				    text-align: center; 
+			}
+		}
+	}
+	.group-msg{
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		.lottery-price{
+			color: red;
+			    font-size: 40rpx;
+			    font-weight: bold;
+		}
+	}
+	.group-msg-warp{
+		padding-bottom: 0;
+		    margin-bottom: 0;
+			min-height: 170rpx;
+	}
+	// view class="group-person-item-inner">
+	// 	<image class="group-person-img" src="https://mp-public-test-1309783959.cos.ap-shanghai.myqcloud.com/474/EU6X9G2QN0YQWF2Q0OM9?imageView2/2/w/170" mode=""></image>
+	//     <view class="group-person-name">水晶球</view>
+	// 	<view class="group-person-text">
+</style>

+ 321 - 0
src/packageOperate/lottery/index.vue

@@ -0,0 +1,321 @@
+<template>
+	<view class="activity">
+		<!-- #ifdef MP-ALIPAY -->
+		<u-navbar title="拼团抽奖" :border="true" :placeholder="true" :autoBack="true" bgColor="#fff" leftIconSize="0" />
+		<!-- #endif -->
+		<!-- #ifdef MP-WEIXIN -->
+		<u-navbar title="拼团抽奖" :border="true" :placeholder="true" :autoBack="true" bgColor="#fff" />
+		<!-- #endif -->
+		<!-- #ifndef MP-WEIXIN || MP-ALIPAY -->
+		<view v-if="pagesNum > 1">
+			<u-navbar :placeholder="true" bgColor="#fff" :autoBack="true" :border="true" title="拼团抽奖" />
+		</view>
+		<view v-else>
+			<u-navbar leftIconSize="0" :placeholder="true" bgColor="#fff" :border="true" title="拼团抽奖">
+				<view class="nav-left flex" slot="left" @click="$toIndex()">
+					<u-icon name="arrow-left" size="20" color="#333"></u-icon>
+				</view>
+			</u-navbar>
+		</view>
+		<!-- #endif -->
+		<view class="status">
+			<u-tabs @change="changeTab" :scrollable="false" :list="statusArr" lineWidth="34" lineHeight="3"
+				lineColor="#8E51F7" :activeStyle="{
+									color: '#8E51F7',
+									transform: 'scale(1)',
+									width: '150rpx',
+									
+								}" :inactiveStyle="{
+									color: '#666',
+									transform: 'scale(1)',
+									width: '150rpx'
+								}" itemStyle="padding-left: 11px; padding-right: 11px; height: 44px;text-align: center;  ">
+			</u-tabs>
+		</view>
+		<view class="list">
+			<view v-for="(item,index) in list1" :key="index" class="list-view">
+				<view class="lottery-inner" @click='toGroup()'>
+					<view class="lottery-img">
+						<image src="../../static/public/111.jpg" mode=""></image>   
+					</view>
+					<view class="lottery-msg">
+						<view class="lottery-title">轩妈蛋黄酥40g*4枚2袋装随心装</view>
+						<view class="lottery-time">2023-12-31 12:00:00 截止</view>
+						<view class="lottery-person">已拼4人</view>
+						<view class="lottery-price"><text>¥</text>0.01</view>
+						<buttont class="toGroup" >去拼团</button>
+					</view>
+				</view>
+			</view>
+			<view class="flex empty" v-if="!list.length && !loading && triggerStatus == 0">
+				<view class="center">
+					<image class="center-img"
+						src="https://mp-public-1310078123.cos.ap-shanghai.myqcloud.com/static/lucky_empty_list.png" mode="scaleToFill"></image>
+					<view class="center-font">新的活动正在准备中...</view>
+				</view>
+			</view>
+			<view class="flex empty" v-if="!list.length && !loading && triggerStatus != 0">
+				<view class="center">
+					<image class="center-img"
+						src="https://mp-public-1310078123.cos.ap-shanghai.myqcloud.com/static/lucky_empty_list.png" mode="scaleToFill"></image>
+					<view class="center-font">还没有已开奖活动</view>
+				</view>
+			</view>
+		</view>
+		<u-loadmore :line="true" v-if="list.length>5" :status="status" :loading-text="'努力加载中'" :nomore-text="'已经到底了'" />
+		<!-- <custom-tab-bar :activeValue="'activity'" /> -->
+	</view>
+</template>
+
+<script>
+	import env from '../../config/env.js'
+	import $http from '@/utils/request.js'
+	import appId from '@/config/appId.js'
+	import CustomTabBar from '../../components/custom-tab-bar/custom-tab-bar.vue'
+	export default {
+		components: {
+			CustomTabBar,
+		},
+		data() {
+			return {
+				status: 'nomore',//上拉刷新状态
+				list: [],
+				list1: [1,2,3,4],
+				statusArr: [{
+					name: '进行中'
+				}, {
+					name: '预热中',
+				}, {
+					disabled: true
+				}, {
+					disabled: true
+				}, {
+					disabled: true
+				}],
+				triggerStatus: 0,
+				userInfo: '',
+				pageNum: 1,
+				total: 0,
+			}
+		},
+		onLoad(opthios) {
+			if (opthios.triggerStatus) {
+				this.triggerStatus = opthios.triggerStatus
+			}
+			if (opthios.userId) {
+				uni.setStorageSync('shareUid', opthios.userId != 'undefined'?opthios.userId:null)
+				if (opthios.userId === undefined || opthios.userId === 'undefined') {
+					uni.getSystemInfo({
+						success(res) {
+							log.error(
+								`基础库:${ res.SDKVersion },设备:${ res.model }-${ res.system },页面:/pages/activity/index.vue.`
+							)
+						}
+					})
+				}
+			}
+			if (opthios.type) {
+				uni.setStorageSync('shareType', opthios.type)
+			}
+		},
+		onShow() {
+			if(uni.getStorageSync('token')) {
+				this.getBaseInfo()
+			}
+			this.pageList()
+		},
+		methods: {
+			toRecord(item) {
+				if (!uni.getStorageSync('token')) {
+					uni.navigateTo({
+						url: '/pages/login/index'
+					})
+					return
+				}
+				uni.navigateTo({
+					url: item.status.value == 4 ? `/packageOperate/lottery/record?id=${ item.id }` :
+						`/packageOperate/lottery/details?id=${ item.id }`
+				})
+			},
+			toGroup(){
+			    console.log(111)
+				uni.navigateTo({
+				  url: "/packageOperate/lottery/details"
+				})
+			},
+			changeTab(e) {
+				if (e.index == 0) {
+					this.triggerStatus = 0
+					this.status = 'nomore'
+				} else if (e.index == 1) {
+					this.triggerStatus = 1
+					this.status = 'nomore'
+				}
+				this.pageList()
+			},
+			pageList() {
+				this.pageNum = 1
+				this.total = 0
+				this.list = []
+				this.getList()
+			},
+			getList() {
+				this.loading = true
+				$http.post(`/api/v1/mp/user/marketing/list?pageNum=${this.pageNum}&pageSize=5`, {
+					triggerStatus: this.triggerStatus,
+				}).then(res => {
+					this.loading = false
+					if (res.code == 0) {
+						res.rows.forEach(item => {
+							let picUrlArr = item.picUrl.split(',')
+							item.picUrl = env.filePublic + picUrlArr[0] + '?imageView2/2/w/750'
+							item.status = JSON.parse(item.status)
+						})
+						this.total = res.total
+						this.list = this.list.concat(res.rows)
+					}
+				}).catch(() => {
+					this.loading = false
+				})
+			},
+			getBaseInfo() {
+				$http.post('/api/v1/mp/user/getLoginUserinfo', { appSource: appId }).then(res => {
+					uni.hideLoading();
+					if (res.code == 0) {
+						this.userInfo = res.data
+					}
+				})
+			},
+
+		},
+		//分享好友
+		onShareAppMessage(res) {
+			return {
+				title: '盲票,玩的就是有趣',
+				path: '/pages/index/index'
+			}
+		},
+		//分享朋友圈
+		onShareTimeline() {
+			return {
+				title: '盲票,玩的就是有趣',
+				query: `userId=${ this.userInfo.userId?this.userInfo.userId:null }&type=1`
+			}
+		},
+		onReachBottom() {
+			if(this.total < this.pageNum * 5) return ;
+			this.status = 'loading';
+			++this.pageNum
+			if(this.total < this.pageNum * 5) this.status = 'nomore';
+				else this.status = 'loading';
+			this.getList()
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.activity {
+		width: 100%;
+		height: 100%;
+		// 设置ios刘海屏底部横线安全区域
+		padding-bottom: constant(safe-area-inset-bottom);
+		padding-bottom: env(safe-area-inset-bottom);
+	}
+    .lottery-inner{
+		    width: 700rpx;
+			margin: auto;		   
+			background: #fff;
+		    overflow: hidden;
+		    margin-bottom: 20rpx;
+		    border-radius: 10rpx;
+		.lottery-img{
+			width: 200rpx;
+			    float: left;
+			    padding: 5rpx;
+			image{
+				width: 100%;
+				height: 220rpx;
+			}
+		}
+		.lottery-msg{
+		   margin-left: 220rpx;
+		   padding: 15rpx 0rpx;
+		   position: relative;
+		   .lottery-title{
+			   font-size: 30rpx;
+			       color: #000000;
+			       font-weight: 500;
+				   margin-bottom: 10rpx;
+		   }
+		   .lottery-time{
+			   font-size: 28rpx;
+			       color: #666666;
+			   margin-bottom: 5rpx;
+		   } 
+		   .lottery-person{
+			   font-size: 28rpx;
+			   color: #666666;
+			   margin-bottom: 20rpx;
+		   }
+		   .lottery-price{
+			   color: red;
+			   font-size: 34rpx;
+			   text{
+				  font-size: 24rpx;
+				  margin-right: 5rpx;
+			   }
+		   }
+		   .toGroup{
+			   width: 142rpx;
+			       height: 58rpx;
+			       line-height: 58rpx;
+			       background-color: #8E51F7;
+			       color: #fff;
+			       margin-top: 34rpx;
+			       font-size: 28rpx;
+			       border-radius: 8rpx;
+			       display: block;
+			       text-align: center;
+				   position: absolute;
+				       right: 20rpx;
+				       bottom: 20rpx;
+		   }
+		} 
+	}
+	.status {
+		width: 100%;
+		position: fixed;
+		z-index: 100;
+		background-color: #FFFFFF;
+		box-shadow: 0 5rpx 5rpx #ececec;
+	}
+
+	.list {
+		padding: 120rpx 20rpx 0; 
+	}
+
+	.empty {
+		height: 60vh;
+
+		.center {
+			text-align: center;
+
+			&-img {
+				width: 228rpx;
+				height: 320rpx;
+			}
+
+			&-font {
+				font-size: 30rpx;
+				font-weight: 400;
+				color: #999999;
+				margin-bottom: 250rpx;
+			}
+		}
+	}
+	.price{
+		float: right;
+		    color: red;
+		    font-size: 40rpx;
+	}
+</style>

+ 353 - 0
src/packageOperate/lottery/my.vue

@@ -0,0 +1,353 @@
+<template>
+	<view class="activity">
+		<!-- #ifdef MP-ALIPAY -->
+		<u-navbar title="我的拼团" :border="true" :placeholder="true" :autoBack="true" bgColor="#fff" leftIconSize="0" />
+		<!-- #endif -->
+		<!-- #ifdef MP-WEIXIN -->
+		<u-navbar title="我的拼团" :border="true" :placeholder="true" :autoBack="true" bgColor="#fff" />
+		<!-- #endif -->
+		<!-- #ifndef MP-WEIXIN || MP-ALIPAY -->
+		<view v-if="pagesNum > 1">
+			<u-navbar :placeholder="true" bgColor="#fff" :autoBack="true" :border="true" title="我的拼团" />
+		</view>
+		<view v-else>
+			<u-navbar leftIconSize="0" :placeholder="true" bgColor="#fff" :border="true" title="我的拼团">
+				<view class="nav-left flex" slot="left" @click="$toIndex()">
+					<u-icon name="arrow-left" size="20" color="#333"></u-icon>
+				</view>
+			</u-navbar>
+		</view>
+		<!-- #endif -->
+		<view class="status">
+			<u-tabs @change="changeTab" :scrollable="false" :list="statusArr" lineWidth="34" lineHeight="3"
+				lineColor="#8E51F7" :activeStyle="{
+									color: '#8E51F7',
+									transform: 'scale(1)',
+									width: '150rpx',
+									
+								}" :inactiveStyle="{
+									color: '#666',
+									transform: 'scale(1)',
+									width: '150rpx'
+								}" itemStyle="padding-left: 11px; padding-right: 11px; height: 44px;text-align: center;  ">
+			</u-tabs>
+		</view>
+		<view class="list">
+			<view   class="list-view lotteryResult" v-if="triggerStatus==1">
+				<view class="lottery-inner" @click='toRecord()'>
+					<view class="lottery-img">
+						<image src="../../static/public/111.jpg" mode=""></image>   
+					</view>
+					<view class="lottery-msg">
+						<view class="lottery-title">轩妈蛋黄酥40g*4枚2袋装随心装</view> 
+						<view class="lottery-price"><text>¥</text>0.01</view>
+						<buttont class="toGroup1 active" >已中奖</button>
+					</view>
+				</view>
+			</view>
+			<view   class="list-view lotteryResult" v-if="triggerStatus==1">
+				<view class="lottery-inner" @click='toRecord()'>
+					<view class="lottery-img">
+						<image src="../../static/public/111.jpg" mode=""></image>   
+					</view>
+					<view class="lottery-msg">
+						<view class="lottery-title">轩妈蛋黄酥40g*4枚2袋装随心装</view> 
+						<view class="lottery-price"><text>¥</text>0.01</view>
+						<buttont class="toGroup1 notactive" >未中奖</button>
+					</view>
+				</view>
+			</view>
+			<view v-for="(item,index) in list1" :key="index" class="list-view" v-if="triggerStatus==0">
+				<view class="lottery-inner" @click='toGroup()'>
+					<view class="lottery-img">
+						<image src="../../static/public/111.jpg" mode=""></image>   
+					</view>
+					<view class="lottery-msg">
+						<view class="lottery-title">轩妈蛋黄酥40g*4枚2袋装随心装</view>
+						<view class="lottery-time">2023-12-31 12:00:00 截止</view>
+						<view class="lottery-person">拼团进度:4/10人</view>
+						<view class="lottery-price"><text>¥</text>0.01</view>
+						<buttont class="toGroup" >拼团详情</button>
+					</view>
+				</view>
+			</view>
+			<view class="flex empty" v-if="!list.length && !loading && triggerStatus == 0">
+				<view class="center">
+					<image class="center-img"
+						src="https://mp-public-1310078123.cos.ap-shanghai.myqcloud.com/static/lucky_empty_list.png" mode="scaleToFill"></image>
+					<view class="center-font">新的活动正在准备中...</view>
+				</view>
+			</view>
+			<view class="flex empty" v-if="!list.length && !loading && triggerStatus != 0">
+				<view class="center">
+					<image class="center-img"
+						src="https://mp-public-1310078123.cos.ap-shanghai.myqcloud.com/static/lucky_empty_list.png" mode="scaleToFill"></image>
+					<view class="center-font">还没有已开奖活动</view>
+				</view>
+			</view>
+		</view>
+		<u-loadmore :line="true" v-if="list.length>5" :status="status" :loading-text="'努力加载中'" :nomore-text="'已经到底了'" />
+		<!-- <custom-tab-bar :activeValue="'activity'" /> -->
+	</view>
+</template>
+
+<script>
+	import env from '../../config/env.js'
+	import $http from '@/utils/request.js'
+	import appId from '@/config/appId.js'
+	import CustomTabBar from '../../components/custom-tab-bar/custom-tab-bar.vue'
+	export default {
+		components: {
+			CustomTabBar,
+		},
+		data() {
+			return {
+				status: 'nomore',//上拉刷新状态
+				list: [],
+				list1: [1,2,3,4],
+				statusArr: [{
+					name: '进行中'
+				}, {
+					name: '已开奖',
+				}, {
+					disabled: true
+				}, {
+					disabled: true
+				}, {
+					disabled: true
+				}],
+				triggerStatus: 0,
+				userInfo: '',
+				pageNum: 1,
+				total: 0,
+			}
+		},
+		onLoad(opthios) {
+			if (opthios.triggerStatus) {
+				this.triggerStatus = opthios.triggerStatus
+			}
+			if (opthios.userId) {
+				uni.setStorageSync('shareUid', opthios.userId != 'undefined'?opthios.userId:null)
+				if (opthios.userId === undefined || opthios.userId === 'undefined') {
+					uni.getSystemInfo({
+						success(res) {
+							log.error(
+								`基础库:${ res.SDKVersion },设备:${ res.model }-${ res.system },页面:/pages/activity/index.vue.`
+							)
+						}
+					})
+				}
+			}
+			if (opthios.type) {
+				uni.setStorageSync('shareType', opthios.type)
+			}
+		},
+		onShow() {
+			if(uni.getStorageSync('token')) {
+				this.getBaseInfo()
+			}
+			this.pageList()
+		},
+		methods: {
+			toRecord() {
+				uni.navigateTo({
+					url: '/packageOperate/lottery/record'
+				})
+			},
+			toGroup(){
+			    console.log(111)
+				uni.navigateTo({
+				  url: "/packageOperate/lottery/details"
+				})
+			},
+			changeTab(e) {
+				if (e.index == 0) {
+					this.triggerStatus = 0
+					this.status = 'nomore'
+				} else if (e.index == 1) {
+					this.triggerStatus = 1
+					this.status = 'nomore'
+				}
+				this.pageList()
+			},
+			pageList() {
+				this.pageNum = 1
+				this.total = 0
+				this.list = []
+				this.getList()
+			},
+			getList() {
+				this.loading = true
+				$http.post(`/api/v1/mp/user/marketing/list?pageNum=${this.pageNum}&pageSize=5`, {
+					triggerStatus: this.triggerStatus,
+				}).then(res => {
+					this.loading = false
+					if (res.code == 0) {
+						res.rows.forEach(item => {
+							let picUrlArr = item.picUrl.split(',')
+							item.picUrl = env.filePublic + picUrlArr[0] + '?imageView2/2/w/750'
+							item.status = JSON.parse(item.status)
+						})
+						this.total = res.total
+						this.list = this.list.concat(res.rows)
+					}
+				}).catch(() => {
+					this.loading = false
+				})
+			},
+			getBaseInfo() {
+				$http.post('/api/v1/mp/user/getLoginUserinfo', { appSource: appId }).then(res => {
+					uni.hideLoading();
+					if (res.code == 0) {
+						this.userInfo = res.data
+					}
+				})
+			},
+
+		},
+		//分享好友
+		onShareAppMessage(res) {
+			return {
+				title: '盲票,玩的就是有趣',
+				path: '/pages/index/index'
+			}
+		},
+		//分享朋友圈
+		onShareTimeline() {
+			return {
+				title: '盲票,玩的就是有趣',
+				query: `userId=${ this.userInfo.userId?this.userInfo.userId:null }&type=1`
+			}
+		},
+		onReachBottom() {
+			if(this.total < this.pageNum * 5) return ;
+			this.status = 'loading';
+			++this.pageNum
+			if(this.total < this.pageNum * 5) this.status = 'nomore';
+				else this.status = 'loading';
+			this.getList()
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.activity {
+		width: 100%;
+		height: 100%;
+		// 设置ios刘海屏底部横线安全区域
+		padding-bottom: constant(safe-area-inset-bottom);
+		padding-bottom: env(safe-area-inset-bottom);
+	}
+    .lottery-inner{
+		    width: 700rpx;
+			margin: auto;
+		    background: #fff;
+		    overflow: hidden;
+		    margin-bottom: 20rpx;
+		    border-radius: 10rpx;
+		.lottery-img{
+			width: 200rpx;
+			    float: left;
+			    padding: 5rpx;
+			image{
+				width: 100%;
+				height: 220rpx;
+			}
+		}
+		.lottery-msg{
+		   margin-left: 220rpx;
+		   padding: 15rpx 0rpx;
+		   position: relative;
+		   .lottery-title{
+			   font-size: 30rpx;
+			       color: #000000;
+			       font-weight: 500;
+				   margin-bottom: 10rpx;
+		   }
+		   .lottery-time{
+			   font-size: 28rpx;
+			       color: #666666;
+			   margin-bottom: 5rpx;
+		   } 
+		   .lottery-person{
+			   font-size: 28rpx;
+			   color: #666666;
+			   margin-bottom: 20rpx;
+		   }
+		   .lottery-price{
+			   color: red;
+			   font-size: 34rpx;
+			   text{
+				  font-size: 24rpx;
+				  margin-right: 5rpx;
+			   }
+		   }
+		   .toGroup{
+			   width: 142rpx;
+			       height: 58rpx;
+			       line-height: 58rpx;
+			       background-color: #8E51F7;
+			       color: #fff;
+			       margin-top: 34rpx;
+			       font-size: 28rpx;
+			       border-radius: 8rpx;
+			       display: block;
+			       text-align: center;
+				   position: absolute;
+				       right: 20rpx;
+				       bottom: 20rpx;
+		   }
+		   .toGroup1{
+			   width: 142rpx;
+			       height: 58rpx;
+			       line-height: 58rpx;
+			       background-color: #8E51F7;
+			       color: #fff;
+			       margin-top: 34rpx;
+			       font-size: 28rpx;
+			       border-radius: 8rpx;
+			       display: block;
+			       text-align: center;
+		   }
+		   .toGroup1.notactive{
+			   background-color: #9E9E9E;
+		   }
+		} 
+	}
+	.status {
+		width: 100%;
+		position: fixed;
+		z-index: 100;
+		background-color: #FFFFFF;
+		box-shadow: 0 5rpx 5rpx #ececec;
+	}
+
+	.list {
+		padding: 120rpx 20rpx 0; 
+	}
+
+	.empty {
+		height: 60vh;
+
+		.center {
+			text-align: center;
+
+			&-img {
+				width: 228rpx;
+				height: 320rpx;
+			}
+
+			&-font {
+				font-size: 30rpx;
+				font-weight: 400;
+				color: #999999;
+				margin-bottom: 250rpx;
+			}
+		}
+	}
+	.price{
+		float: right;
+		    color: red;
+		    font-size: 40rpx;
+	}
+</style>

+ 442 - 0
src/packageOperate/lottery/record.vue

@@ -0,0 +1,442 @@
+<template>
+	<view>
+		<!-- #ifdef MP-ALIPAY -->
+		<u-navbar title="获奖名单" :border="true" :placeholder="true" :autoBack="true" bgColor="#fff"  leftIconSize="0"/>
+		<!-- #endif -->
+		<!-- #ifndef MP-ALIPAY -->
+		<view v-if="pagesNum > 1">
+			<u-navbar title="获奖名单" :border="true" :placeholder="true" :autoBack="true" bgColor="#fff" />
+		</view>
+		<view v-else>
+			<u-navbar leftIconSize="0" :placeholder="true" bgColor="#fff" title="获奖名单">
+				<view class="nav-left flex" slot="left" @click="toActivity">
+					<u-icon name="arrow-left" size="20" color="#333"></u-icon>
+				</view>
+			</u-navbar>
+		</view>
+		<!-- #endif -->
+		
+		<view class="list">
+			<view v-for="(item,index) in list" :key="index" class="list-view">
+				<view class="award flex">
+					<view class="award-avatar">
+						<image :src="item.avatar" mode="scaleToFill"></image>
+					</view>
+
+					<view class="award-nickNames">
+						<view class="nickName"><text>{{item.nickName}}</text>
+							<view v-if="item.awardName == '一等奖'" class="awardName">
+								<image src="../static/activity/one.png" mode="scaleToFill">
+								</image>
+								<text style="color: #FFD225;">{{item.awardName}}</text>
+							</view>
+							<view v-else-if="item.awardName == '二等奖'" class="awardName">
+								<image src="../static/activity/two.png" mode="scaleToFill">
+								</image>
+								<text style="color: #94CBEC;">{{item.awardName}}</text>
+							</view>
+							<view v-else-if="item.awardName == '三等奖'" class="awardName">
+								<image src="../static/activity/three.png" mode="scaleToFill"></image>
+								<text style="color: #F2B47A;">{{item.awardName}}</text>
+							</view>
+							<view v-else-if="item.awardName == '四等奖'" class="awardName">
+								<image src="../static/activity/five.jpg" mode="scaleToFill"></image>
+								<text style="color: #f07695;">{{item.awardName}}</text>
+							</view>
+							<view v-else-if="item.awardName == '五等奖'" class="awardName">
+								<image src="../static/activity/four.jpg" mode="scaleToFill"></image>
+								<text style="color: #c595e7;">{{item.awardName}}</text>
+							</view>
+						</view>
+						<view class="prize">中奖码:{{item.code}}</view>
+						<view v-if="item.prizeType =='COIN'"  class="ells-one prize">盲豆 x{{item.value}}</view>
+						<view v-else class="ells-one prize">{{item.prizeTitle}}</view>
+					</view>
+				</view>
+			</view>
+			<u-loadmore :line="true" v-if="list.length>19" :status="status" :loading-text="'努力加载中'" :nomore-text="'已经到底了'" />
+		</view>
+
+		<!-- 中奖 -->
+		<u-popup :show="activityShow" bgColor='transparent' mode="center" round="11" @close="close" overlayOpacity="0.5"
+			@touchmove.prevent.stop>
+			<view class="activityShow-wrap">
+				<view class="img">
+					<image src="https://mp-public-1310078123.cos.ap-shanghai.myqcloud.com/static/activityPrizeBackGround.png" mode="aspectFit"></image>
+				</view>
+				<view class="activityShow-wrap-award">
+					<view class="award">恭喜你!获得{{listData.awardName}}</view>
+					<view v-if="listData.prizeType && listData.prizeType !='COIN'" class="award-name">
+						奖品已放入我的仓库</view>
+					<view v-else class="award-name">奖品已放入“我的盲豆”</view>
+				</view>
+				<view class="activityShow-wrap-rela">
+					<image :src="listData.prizePicUrl" mode="aspectFit" class="relaimg"></image>
+				</view>
+				<view v-if="listData.prizeType && listData.prizeType =='COIN'"  class="activityShow-wrap-library ells-one">盲豆 x{{listData.value}}</view>
+				<view v-else class="activityShow-wrap-library ells-one">{{listData.prizeTitle}}</view>
+				
+				<view class="flex activityShow-wrap-btn">
+					<button @click="toPrize()" v-if="listData.prizeType && listData.prizeType !='COIN'" class="btnone"
+						style="">前往查看</button>
+					<button @click="toCore()" v-else class="btnone">去兑换商品</button>
+					<button @click="close()" class="btntwo" style="">关闭</button>
+				</view>
+			</view>
+		</u-popup>
+
+		<!-- 未中奖 -->
+		<u-popup :show="closeShow" mode="center" bgColor='transparent' round="11" @close="close" overlayOpacity="0.5"
+			@touchmove.prevent.stop>
+			<view class="choiceShow-wrap">
+				<view class="img">
+					<image src="https://mp-public-1310078123.cos.ap-shanghai.myqcloud.com/static/activityPrizeBackGround.png" mode="aspectFit"></image>
+				</view>
+				<view class="choiceShow-wrap-award">
+					<view class="award">很遗憾, 您未中奖</view>
+					<view class="award-name">别气馁,下次再试试~</view>
+				</view>
+				<view class="choiceShow-wrap-rela">
+					<image src="https://mp-public-1310078123.cos.ap-shanghai.myqcloud.com/static/activityPrizeBox.png" mode="aspectFit" class="relaimg"></image>
+				</view>
+				<button @click="close()" class="btntwo">知道了</button>
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	import env from '../../config/env.js'
+	import $http from '@/utils/request.js'
+	export default {
+		data() {
+			return {
+				status: 'nomore',//上拉刷新状态
+				list: [],
+				marketingId: '',
+				closeShow: false,
+				activityShow: false,
+				listData: {},
+				total: 0,
+				pagesNum: '',
+			}
+		},
+		onShow() {
+			this.pagesNum = getCurrentPages().length
+			this.pageList()
+		},
+		onLoad(opthios) {
+			this.marketingId = opthios.id
+			// this.pageList()
+		},
+		methods: {
+			toActivity() {
+				uni.reLaunch({
+					url: `/pages/activity/index`
+				})
+			},
+			toCore() {
+				uni.reLaunch({
+					url: '/pages/core/index'
+				})
+			},
+
+			pageList() {
+				this.pageNum = 1
+				this.total = 0
+				this.list = []
+				this.getList()
+			},
+			getList() {
+				uni.showLoading({
+					title: '加载中'
+				});
+				this.loading = true
+				$http.post(`/api/v1/mp/user/marketing/hit/prize/list?pageNum=${this.pageNum}&pageSize=20`, {
+					marketingId: this.marketingId,
+				}).then(res => {
+					uni.hideLoading();
+					this.loading = false
+					if (res.code == 0) {
+						res.rows.forEach(item => {
+							let prizePicUrlArr = item.prizePicUrl.split(',')
+							item.prizePicUrl = env.filePublic + prizePicUrlArr[0] + '?imageView2/2/w/170'
+							item.avatar = env.filePublic + item.avatar + '?imageView2/2/w/170'
+						})
+						this.total = res.total
+						this.list = this.list.concat(res.rows)
+						
+						try {
+							const value = uni.getStorageSync(this.marketingId);
+							if (value) {
+						
+							} else {
+								this.successFail()
+								uni.setStorageSync(this.marketingId, this.marketingId);
+							}
+						} catch (e) {
+							// error
+						}
+					}
+				}).catch(() => {
+					uni.hideLoading();
+					this.loading = false
+				});
+
+				
+
+			},
+			close() {
+				this.closeShow = false
+				this.activityShow = false
+			},
+
+			toPrize() {
+				if (this.listData.prizeType != 'GOODS') {
+					uni.navigateTo({
+						url: '/packagePrize/prize/index?coupon=1'
+					})
+				}else{
+					uni.navigateTo({
+						url: '/packagePrize/prize/index?coupon=0'
+					})
+				}
+
+			},
+			successFail() {
+				this.listData = {}
+				$http.post(`/api/v1/mp/user/marketing/hit/prize/isHit/${this.marketingId}`, {}).then(
+					res => {
+						if (res.code == 0 && res.data && res.data.isHit == 1) {//中奖了
+							let prizePicUrlArr = res.data.prizePicUrl.split(',')
+							res.data.prizePicUrl = env.filePublic + prizePicUrlArr[0] + '?imageView2/2/w/170'
+							this.listData = res.data
+							this.activityShow = true
+						}
+						if (res.code == 0 && res.data && res.data.isHit == 0) {//没中奖
+							this.closeShow = true
+						}
+					})
+			}
+		},
+		onReachBottom() {
+			if(this.total < this.pageNum * 20) return ;
+			this.status = 'loading';
+			++this.pageNum
+			if(this.total < this.pageNum * 20) this.status = 'nomore';
+				else this.status = 'loading';
+			this.getList()
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.list {
+
+		&-view {
+			padding: 10rpx 20rpx;
+
+			.award {
+				justify-content: flex-start;
+				border-radius: 22rpx;
+				width: 100%;
+				height: 108px;
+				background-color: #fff;
+				overflow: hidden;
+
+				&-avatar {
+					padding: 50rpx 32rpx;
+
+					image {
+						height: 100rpx;
+						width: 100rpx;
+						border-radius: 100rpx;
+					}
+				}
+
+				&-nickNames {
+					flex: 1;
+					padding: 30rpx 0;
+
+					.prize {
+						line-height: 46rpx;
+						color: #666666;
+					}
+
+					.nickName {
+						line-height: 60rpx;
+						font-size: 30rpx;
+
+						.awardName {
+							display: inline-block;
+							
+							// &-view {
+							// 	// width: 40rpx;
+							// 	display: inline-block;
+							// 	margin-left: 30rpx;
+							// }
+
+							image {
+								width: 40rpx;
+								height: 36rpx;
+								margin-left: 30rpx;
+								vertical-align: -10%;
+							}
+
+							text {
+								display: inline-block;
+								font-size: 26rpx;
+								line-height: 26rpx;
+							}
+						}
+
+					}
+				}
+			}
+		}
+
+		// 设置ios刘海屏底部横线安全区域
+		padding-bottom: constant(safe-area-inset-bottom);
+		padding-bottom: env(safe-area-inset-bottom);
+	}
+
+	.activityShow-wrap {
+		background: linear-gradient(130deg, #FFF9F5 0%, #F8DFEF 44%, #C1BDFF 100%);
+		border-radius: 10rpx;
+		overflow: hidden;
+		width: 510rpx;
+		> .img {
+			position: absolute;
+			width: 100%;
+			height: 150rpx;
+			text-align: center;
+			top: -86rpx;
+			image {
+				width: 372rpx;
+				height: 150rpx;
+			}
+		}
+		
+		&-rela {
+			margin-top: 42rpx;
+			width: 100%;
+			.relaimg {
+				width: 100%;
+				height: 184rpx;
+			}
+		}
+
+		&-award {
+			width: 100%;
+			text-align: center;
+
+			.award {
+				font-size: 30rpx;
+				color: #000;
+				font-weight: 500;
+				line-height: 34rpx;
+				padding-top: 94rpx;
+
+				&-name {
+					font-size: 24rpx;
+					color: #666;
+					font-weight: 400;
+					line-height: 50rpx;
+					padding: 8rpx 34rpx;
+				}
+			}
+		}
+
+		&-library {
+			text-align: center;
+			margin-top: 18rpx;
+			font-size: 24rpx;
+			color: #333;
+			line-height: 50rpx;
+		}
+
+		&-btn {
+			padding: 30rpx 50rpx 74rpx;
+			justify-content: space-between;
+			.btnone {
+				width: 176rpx;
+				height: 58rpx;
+				font-size: 26rpx;
+				line-height: 56rpx;
+				background-color: transparent;
+				color: $uni-text-color;
+				border: 2rpx solid $uni-text-color;
+			}
+
+			.btntwo {
+				width: 176rpx;
+				height: 58rpx;
+				font-size: 26rpx;
+				line-height: 56rpx;
+				background-color: $uni-text-color;
+				color: #fff;
+				border: 2rpx solid $uni-text-color;
+			}
+		}
+	}
+
+	.choiceShow-wrap {
+		background: linear-gradient(130deg, #FFF9F5 0%, #F8DFEF 44%, #C1BDFF 100%);
+		border-radius: 4rpx;
+		overflow: hidden;
+		width: 510rpx;
+		
+		> .img {
+			position: absolute;
+			width: 100%;
+			height: 150rpx;
+			text-align: center;
+			top: -86rpx;
+			image {
+				width: 372rpx;
+				height: 150rpx;
+			}
+		}
+		
+		&-rela {
+			margin-top: 42rpx;
+			width: 100%;
+			.relaimg {
+				width: 100%;
+				height: 184rpx;
+			}
+		}
+		
+		&-award {
+			width: 100%;
+			text-align: center;
+		
+			.award {
+				font-size: 30rpx;
+				color: #000;
+				font-weight: 500;
+				line-height: 34rpx;
+				padding-top: 94rpx;
+		
+				&-name {
+					font-size: 24rpx;
+					color: #666;
+					font-weight: 400;
+					line-height: 50rpx;
+					padding: 8rpx 34rpx;
+				}
+			}
+		}
+		
+		.btntwo {
+			margin: 30rpx auto 74rpx;
+			width: 244rpx;
+			height: 58rpx;
+			font-size: 26rpx;
+			line-height: 58rpx;
+			background-color: $uni-text-color;
+			color: #fff;
+		}
+
+	}
+</style>

+ 22 - 0
src/packageOperate/lottery/wxofficial.vue

@@ -0,0 +1,22 @@
+<template>
+	<view class="">
+		<web-view :src="Url" bindmessage="getMessage"></web-view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				Url:`https://mp.weixin.qq.com/s?__biz=Mzk0ODM0NDc1Mg==&mid=2247483763&idx=1&sn=fbbcdb036bf79bb09cb8ab42c605c27f&chksm=c36843acf41fcaba57bfdd6defd0ff07202a7629f184702dcf3d8673da2f0f111b34b327a3bd#rd`
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style>
+
+</style>

+ 23 - 5
src/pages.json

@@ -2,12 +2,17 @@
 	"easycom": {
 		"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
 	},
-	"pages": [{
+	"pages": [ 
+		
+		{
 			"path": "pages/index/index",
 			"style": {
 				"navigationBarTextStyle": "white"
 			}
 		},
+		{
+			"path": "pages/lottery/index"
+		},
 		{
 			"path": "pages/index/wxofficial"
 		},
@@ -44,7 +49,7 @@
 		},
 		{
 			"path": "pages/activity/index"
-		}
+		} 
 	],
 	"subPackages": [{
 			"root": "packageGoods",
@@ -142,7 +147,8 @@
 		},
 		{
 			"root": "packageOperate",
-			"pages": [{
+			"pages": [
+				{
 					"path": "address/index"
 				},
 				{
@@ -166,6 +172,18 @@
 				{
 					"path": "activity/wxofficial"
 				},
+				{
+					"path": "lottery/index"
+				},
+				{
+					"path": "lottery/record"
+				},
+				{
+					"path": "lottery/my"
+				},
+				{
+					"path": "lottery/details"
+				},
 				{
 					"path": "creator/index"
 				},
@@ -226,8 +244,8 @@
 			"pagePath": "pages/core/index",
 			"text": "商城"
 		}, {
-			"pagePath": "pages/activity/index",
-			"text": "免费抽奖"
+			"pagePath": "pages/lottery/index",
+			"text": "抽奖活动"
 		}, {
 			"pagePath": "pages/user/index",
 			"text": "我的"

+ 19 - 4
src/pages/activity/index.vue

@@ -1,8 +1,23 @@
 <template>
 	<view class="activity">
-		<u-navbar leftIconSize="0" :placeholder="true" bgColor="#ffffff">
-			<view slot="left" style="font-size: 32rpx;">免费抽奖</view>
-		</u-navbar>
+		<!-- #ifdef MP-ALIPAY -->
+		<u-navbar title="免费抽奖" :border="true" :placeholder="true" :autoBack="true" bgColor="#fff" leftIconSize="0" />
+		<!-- #endif -->
+		<!-- #ifdef MP-WEIXIN -->
+		<u-navbar title="免费抽奖" :border="true" :placeholder="true" :autoBack="true" bgColor="#fff" />
+		<!-- #endif -->
+		<!-- #ifndef MP-WEIXIN || MP-ALIPAY -->
+		<view v-if="pagesNum > 1">
+			<u-navbar :placeholder="true" bgColor="#fff" :autoBack="true" :border="true" title="免费抽奖" />
+		</view>
+		<view v-else>
+			<u-navbar leftIconSize="0" :placeholder="true" bgColor="#fff" :border="true" title="免费抽奖">
+				<view class="nav-left flex" slot="left" @click="$toIndex()">
+					<u-icon name="arrow-left" size="20" color="#333"></u-icon>
+				</view>
+			</u-navbar>
+		</view>
+		<!-- #endif -->
 		<view class="status">
 			<u-tabs @change="changeTab" :scrollable="false" :list="statusArr" lineWidth="34" lineHeight="3"
 				lineColor="#8E51F7" :activeStyle="{
@@ -55,7 +70,7 @@
 			</view>
 		</view>
 		<u-loadmore :line="true" v-if="list.length>5" :status="status" :loading-text="'努力加载中'" :nomore-text="'已经到底了'" />
-		<custom-tab-bar :activeValue="'activity'" />
+		<!-- <custom-tab-bar :activeValue="'activity'" /> -->
 	</view>
 </template>
 

+ 200 - 0
src/pages/lottery/index.vue

@@ -0,0 +1,200 @@
+<template>
+	<view class="activity">
+		<u-navbar leftIconSize="0" :placeholder="true" bgColor="#ffffff">
+			<view slot="left" style="font-size: 32rpx;">抽奖活动</view>
+		</u-navbar>
+		<view class="activity-item" @click="toActivity()">
+			免费抽奖
+		</view>
+		<view class="activity-item" @click="toGroupActivity">
+			拼团抽奖
+		</view>
+		<custom-tab-bar :activeValue="'activity'" />
+	</view>
+</template>
+
+<script>
+	import env from '../../config/env.js'
+	import $http from '@/utils/request.js'
+	import appId from '@/config/appId.js'
+	import CustomTabBar from '../../components/custom-tab-bar/custom-tab-bar.vue'
+	export default {
+		components: {
+			CustomTabBar,
+		},
+		data() {
+			return {
+				status: 'nomore',//上拉刷新状态
+				list: [],
+				statusArr: [{
+					name: '参与抽奖'
+				}, {
+					name: '已开奖',
+				}, {
+					disabled: true
+				}, {
+					disabled: true
+				}, {
+					disabled: true
+				}],
+				triggerStatus: 0,
+				userInfo: '',
+				pageNum: 1,
+				total: 0,
+			}
+		},
+		onLoad(opthios) {
+			if (opthios.triggerStatus) {
+				this.triggerStatus = opthios.triggerStatus
+			}
+			if (opthios.userId) {
+				uni.setStorageSync('shareUid', opthios.userId != 'undefined'?opthios.userId:null)
+				if (opthios.userId === undefined || opthios.userId === 'undefined') {
+					uni.getSystemInfo({
+						success(res) {
+							log.error(
+								`基础库:${ res.SDKVersion },设备:${ res.model }-${ res.system },页面:/pages/activity/index.vue.`
+							)
+						}
+					})
+				}
+			}
+			if (opthios.type) {
+				uni.setStorageSync('shareType', opthios.type)
+			}
+		},
+		
+		onShow() {
+			if(uni.getStorageSync('token')) {
+				this.getBaseInfo()
+			}
+			this.pageList()
+		},
+		methods: {
+			toActivity(){
+				uni.navigateTo({
+				  url: "/pages/activity/index"
+				})
+			},
+			toGroupActivity(){
+				uni.navigateTo({
+				  url: "/packageOperate/lottery/index"
+				})
+			},
+			toRecord(item) {
+				if (!uni.getStorageSync('token')) {
+					uni.navigateTo({
+						url: '/pages/login/index'
+					})
+					return
+				}
+				uni.navigateTo({
+					url: item.status.value == 4 ? `/packageOperate/activity/record?id=${ item.id }` :
+						`/packageOperate/activity/index?id=${ item.id }`
+				})
+			},
+			changeTab(e) {
+				if (e.index == 0) {
+					this.triggerStatus = 0
+					this.status = 'nomore'
+				} else if (e.index == 1) {
+					this.triggerStatus = 1
+					this.status = 'nomore'
+				}
+				this.pageList()
+			},
+			pageList() {
+				this.pageNum = 1
+				this.total = 0
+				this.list = []
+				this.getList()
+			},
+			getList() {
+				this.loading = true
+				$http.post(`/api/v1/mp/user/marketing/list?pageNum=${this.pageNum}&pageSize=5`, {
+					triggerStatus: this.triggerStatus,
+				}).then(res => {
+					this.loading = false
+					if (res.code == 0) {
+						res.rows.forEach(item => {
+							let picUrlArr = item.picUrl.split(',')
+							item.picUrl = env.filePublic + picUrlArr[0] + '?imageView2/2/w/750'
+							item.status = JSON.parse(item.status)
+						})
+						this.total = res.total
+						this.list = this.list.concat(res.rows)
+					}
+				}).catch(() => {
+					this.loading = false
+				})
+			},
+			getBaseInfo() {
+				$http.post('/api/v1/mp/user/getLoginUserinfo', { appSource: appId }).then(res => {
+					uni.hideLoading();
+					if (res.code == 0) {
+						this.userInfo = res.data
+					}
+				})
+			},
+
+		},
+		//分享好友
+		onShareAppMessage(res) {
+			return {
+				title: '盲票,玩的就是有趣',
+				path: '/pages/index/index'
+			}
+		},
+		//分享朋友圈
+		onShareTimeline() {
+			return {
+				title: '盲票,玩的就是有趣',
+				query: `userId=${ this.userInfo.userId?this.userInfo.userId:null }&type=1`
+			}
+		},
+		onReachBottom() {
+			if(this.total < this.pageNum * 5) return ;
+			this.status = 'loading';
+			++this.pageNum
+			if(this.total < this.pageNum * 5) this.status = 'nomore';
+				else this.status = 'loading';
+			this.getList()
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	page{
+		background: #fff !important;
+	}
+	.activity {
+		width: 100%;
+		height: 100%;
+		// 设置ios刘海屏底部横线安全区域
+		padding-bottom: constant(safe-area-inset-bottom);
+		padding-bottom: env(safe-area-inset-bottom);
+		.activity-item{
+			width: 700rpx;
+			    height: 300rpx;
+			    display: flex;
+			    align-items: center;
+			    justify-content: center;
+			    border: 1rpx solid #ddd;
+			    border-radius: 10rpx;
+			    margin: auto;
+			    margin-bottom: 30rpx;
+			    font-size: 40rpx; 
+			    margin-top: 30rpx;
+				background: url(https://mp-public-1310078123.cos.ap-shanghai.myqcloud.com/static/activityBackGround.png) no-repeat 100% 0%;
+				    background-size: 100%;
+				  font-size: 64rpx;
+				      font-family: YouSheBiaoTiHei;
+				      font-weight: 400;
+				      color: #FFFFFF;
+				      line-height: 74rpx;
+				      -webkit-animation: shadowBtn-data-v-57280228 1.5s linear infinite;
+				      animation: shadowBtn-data-v-57280228 1.5s linear infinite;
+		}
+	}
+    
+</style>

+ 11 - 1
src/pages/user/index.vue

@@ -72,6 +72,10 @@
         <view></view>
       </view>
       <view class="action">
+		  <view class="action-item flex" @click="toMyLottery">
+		    <image class="image1" src="../../static/user/user_exchange.png" mode="scaleToFill"></image>
+		    <view class="title">我的拼团</view>
+		  </view>
         <view class="action-item flex" @click="toExchange">
           <image class="image1" src="../../static/user/user_exchange.png" mode="scaleToFill"></image>
           <view class="title">兑换码</view>
@@ -80,6 +84,7 @@
           <image class="image1" src="../../static/user/user_addr.png" mode="scaleToFill"></image>
           <view class="title">我的地址</view>
         </view>
+		
         <view class="action-item flex" @click="toCreator">
           <image class="image1" src="../../static/user/user_slice.png" mode="scaleToFill"></image>
           <view class="title">申请创客</view>
@@ -163,7 +168,12 @@ export default {
 
       })
     },
-
+	//我的拼团
+    toMyLottery(){
+		uni.navigateTo({
+		  url: "/packageOperate/lottery/my"
+		})
+	},
     // 跳转编辑头像与昵称页面
     toSetAvatar() {
       uni.navigateTo({

BIN
src/static/public/111.jpg


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.