hmp 4 yıl önce
ebeveyn
işleme
f831c8deeb

+ 2 - 0
assets/http/api.js

@@ -14,7 +14,9 @@ const activity = {
 	sortListQuery: p => http.get('/app/active/product/sortListQuery', {params:p}),
 	searchWork: p => http.get('/app/active/product/search', {params:{keyword: p}}),
 	getWorksDetail: id => http.get('/sing_active/activeproductrecord/detail', {params:{id}}),
+	list: p => http.get('/sing_active/activeproductrecord/list', {params:p}),
 	getGiftList: p => http.get('/sing_goods/helpgoods/list', {params:p}),
+	getMyTotalHeat:p => http.get('/sing_active/activeproductrecord/getMyTotalHeat', {params:p}),
 }
 
 //微信api

+ 3 - 4
assets/http/config.js

@@ -1,12 +1,12 @@
 let config = {}
 
-config.baseURL = 'http://192.168.1.168:2888'
-// config.baseURL='https://vote.guosen-fumao.cn/api'
+// config.baseURL = 'http://192.168.1.168:2888'
+config.baseURL='https://vote.guosen-fumao.cn/api'
 //是否需要获取手机号
 config.isAuthPhone=true
 
 //普通二维码跳作品详情链接
-config.PRODUCT_PATH='https://ldt.guosen-fumao.cn/wapp/product',
+config.PRODUCT_PATH='https://vote.guosen-fumao.cn/home',
 
 config.themeRed = {
 	skin: '--bgColor:#e72226;--color:#fff;--shopBg:#f24050;--shopRule:#FF797F',
@@ -17,7 +17,6 @@ config.themeRed = {
 		shopBg: '#f24050'
 	}
 }
-
 config.themeBlue = {
 	skin: '--bgColor:#6b4ff2;--color:#fff;--shopBg:#6b4ff2;--shopRule:#9984fb',
 	theme: {

+ 81 - 40
components/alert/smsAlert.vue

@@ -1,33 +1,40 @@
 <template>
-	<u-popup v-model="show" mode="center" width="80%" border-radius="15" :closeable="true">
-		<view class="sms-alert-container">
-			<view class="title">短信验证</view>
-			<view class="info-msg">验证码已发送至{{phoneInfo}}</view>
-			<view class="input-box">
-				<u-input class="input-content" type="number" maxlength="6" placeholder="请输入验证码" v-model="code"/>
-				<view class="code-button">
-					<view v-if="sending==true">
-						<u-loading mode="circle"></u-loading>
+	<view class="">
+		<u-popup v-model="show" mode="center" width="80%" border-radius="15" :closeable="true">
+			<view class="sms-alert-container">
+				<view class="title">短信验证</view>
+				<view class="info-msg">验证码已发送至{{phoneInfo}}</view>
+				<view class="input-box">
+					<u-input class="input-content" type="number" maxlength="6" placeholder="请输入验证码" v-model="code" />
+					<view class="code-button">
+						<view v-if="sending==true">
+							<u-loading mode="circle"></u-loading>
+						</view>
+						<view v-else-if="seconds > 0"><span class="text-red">{{seconds+'s '}} </span>可重发</view>
+						<view v-else>
+							<u-button @click="$u.debounce(sendMessage, 500)" plain size="mini">重新发送</u-button>
+						</view>
 					</view>
-					<view v-else-if="seconds > 0"><span class="text-red">{{seconds+'s '}} </span>可重发</view>
-					<view v-else><u-button @click="$u.debounce(sendMessage, 500)" plain size="mini">重新发送</u-button></view>
 				</view>
+				<u-button @click="$u.debounce(exchange, 500)" :custom-style="customStyle" shape="circle">确认</u-button>
 			</view>
-			<u-button @click="$u.debounce(validateCode, 500)" :custom-style="customStyle" shape="circle" >确认</u-button>
-		</view>
-	</u-popup>
+		</u-popup>
+		<loading ref="loading" type="3"/>
+		<toast ref="toast" ></toast>
+	</view>
 </template>
 
 <script>
 	export default {
-		name:"smsAlert",
+		name: "smsAlert",
 		data() {
 			return {
 				show: false,
 				sending: true,
-				phone: '13126058204',
+				phone: '',
 				code: '',
-				seconds: -1,
+				seconds: 60,
+				smsParams: {},
 				customStyle: {
 					color: 'white',
 					background: "#E72226",
@@ -35,70 +42,104 @@
 				}
 			};
 		},
-		computed:{
-			phoneInfo(){
-				return this.phone.substr(0,4)+"****"+this.phone.substr(7,this.phone.length);
+		computed: {
+			phoneInfo() {
+				return this.phone.substr(0, 4) + "****" + this.phone.substr(7, this.phone.length);
 			}
 		},
 		methods: {
-			async showSmsAndSend(phone){
-				if(this.$u.test.mobile(phone)){
+			getSeconds(){
+				let timer= setInterval(()=>{
+					this.seconds -- 
+					if (this.seconds==0) {
+						timer
+						clearInterval(timer)
+					}
+				},1000)
+				
+			},
+			async showSmsAndSend(params) {
+				this.$refs.loading.showLoading()
+				this.smsParams = params
+				let phone = params.mobile
+				if (!this.$u.test.mobile(phone)) {
 					uni.showToast({
-					    title: '手机号码格式错误',
-					    icon: 'none'
+						title: '手机号码格式错误',
+						icon: 'none'
 					});
 					return;
 				}
 				this.phone = phone;
-				await sendMessage();
+				this.$refs.loading.hide()
 				this.show = true;
+				this.sending = false;
+				this.getSeconds()
 			},
-			hideSms(){
+			hideSms() {
 				this.show = false;
 			},
-			async sendMessage(){
+			async sendMessage() {
 				this.sending = true;
-				//发送验证码
-				this.sending= false;
+				this.seconds=60
+				this.getSeconds()
+				let res = await this.$api.order.sendCmccSms(this.smsParams)
+				if (!res.data.success) {
+					this.$u.toast(res.data.msg)
+				}
+				// 发送验证码
+				this.sending = false;
 			},
-			validateCode(){
-				this.$emit("validateResult",{result: true})
+			exchange() {
+				if (this.$isEmpty(this.code)) {
+					this.$u.toast('请输入验证码')
+					return
+				}
+				let params=this.$u.deepClone(this.smsParams)
+				params.smsCode=this.code
+				params.mobile=this.phone
+				this.$emit("exchange", params)
 			},
 		}
 	}
 </script>
 
 <style lang="scss" scoped>
-	.sms-alert-container{
+	.sms-alert-container {
 		padding: 50rpx;
-		.title{
+
+		.title {
 			width: 100%;
 			text-align: center;
-			 padding:  0rpx 10rpx 50rpx 10rpx ;
+			padding: 0rpx 10rpx 50rpx 10rpx;
 			font-weight: 500;
 			color: #353535;
 			letter-spacing: 2rpx;
 			font-size: 30rpx;
 		}
-		.info-msg{
+
+		.info-msg {
 			padding: 5rpx 5rpx 20rpx 5rpx;
 			color: #353535;
 		}
-		.input-box{
+
+		.input-box {
 			display: flex;
 			align-items: center;
 			justify-content: left;
 			border: 1rpx solid #DDDDDD;
 			border-radius: 10rpx;
 			margin: 0 0 50rpx 0;
-			padding:  5rpx 5rpx 5rpx 30rpx;
+			padding: 5rpx 5rpx 5rpx 30rpx;
 		}
-		.input-content{
+
+		.input-content {
 			width: 66%;
 		}
-		.code-button{
+
+		.code-button {
 			width: 34%;
-			border-left: 1rpx solid #DDDDDD;text-align: center;
+			border-left: 1rpx solid #DDDDDD;
+			text-align: center;
 		}
 	}
 </style>

+ 4 - 4
components/alert/votePopup.vue

@@ -107,10 +107,10 @@
 					this.$u.toast('您无可用移动积分')
 					return
 				}
-				if (item.remainCount == 0) {
-					this.$u.toast('今天已无该道具兑换次数')
-					return
-				}
+				// if (item.remainCount == 0) {
+				// 	this.$u.toast('今天已无该道具兑换次数')
+				// 	return
+				// }
 				this.$emit('toVote', this.gitfs[this.selected])
 			}
 		}

+ 16 - 16
components/alert/voteSuccess.vue

@@ -7,11 +7,11 @@
 					<u-avatar size="159" :src="avatar"></u-avatar>
 				</view>
 				<view class="info-box">
-					<view class="main-info">移动为您发动了{{voteCount}}人助力</view>
-					<view class="sub-info">获取{{pointNum}}普法积分,可用于积分商城兑换</view>
-					<view class="flex justify-center align-center">
-						<u-button @click="show=false" shape="circle" :custom-style="customStyle">继续投票</u-button>
-						<u-button  shape="circle" :custom-style="customStyle">为TA拉票</u-button>
+					<view class="main-info">成功为该作品助力{{voteCount}}热力</view>
+					<view class="sub-info">你已获取{{pointNum}}普法积分,可用于积分商城兑换</view>
+					<view class="flex justify-center" style="margin-top: 90rpx;">
+						<u-button  @click="show=false" shape="circle" :custom-style="customStyle">继续投票</u-button>
+						<u-button  shape="circle" :custom-style="customStyle" @click="support">为TA拉票</u-button>
 					</view>
 				</view>
 			</view>
@@ -34,14 +34,16 @@
 				customStyle: {
 					color: 'white',
 					background: "#E72226",
-					width: '220rpx',
-					margin: '15rpx'
+					width: '200rpx',
+					margin: '10rpx',
+					height:"60rpx",
+					fontSize:"26rpx"
 				}
 			};
 		},
 
 		methods: {
-			showAuth(avatar,voteCount,pointNum){
+			showSuccess(avatar,voteCount,pointNum){
 				this.avatar = avatar;
 				this.voteCount = voteCount;
 				this.pointNum = pointNum;
@@ -50,12 +52,9 @@
 			hide(){
 				this.show = false;
 			},
-			toAuth(){
-				let params={
-					url:encodeURIComponent(this.authUrl),
-					title:'移动积分授权'
-				}
-				this.$jump('/pages/webview/webview'+this.$u.queryParams(params));
+			support(){
+				this.hide()
+				this.$emit('support')
 			}
 		}
 	}
@@ -85,7 +84,7 @@
 		position: absolute;
 		width: 100%;
 		height: auto;
-		top: 380rpx;
+		top: 360rpx;
 		left: 0;
 		.main-info{
 			margin: 10rpx;
@@ -98,7 +97,8 @@
 			margin: 15rpx auto 40rpx auto;
 			text-align: center;
 			color: #AAAAAA;
-			font-size: 22rpx;
+			font-size: 24rpx;
+			font-weight: 400;
 		}
 	}
 </style>

+ 5 - 4
components/poster/poster.vue

@@ -20,7 +20,7 @@
 		props: {
 			headerImg: {
 				type: String,
-				default: 'https://gx.vote.activity.obs.cn-south-1.myhuaweicloud.com:443/a9d4b65ba1cd4bc88ef9da08cb8fcd26-poster.jpg'
+				default: 'https://vote.guosen-fumao.cn/obsfile/a9d4b65ba1cd4bc88ef9da08cb8fcd26-poster.jpg'
 			},
 			avatar: {
 				type: String,
@@ -114,15 +114,16 @@
 				this.ctx.setFillStyle('#fff'); //设置标题文本颜色
 				this.ctx.fillText(this.subTitle, titleParams.x, subTitleParams.y)
 				//小程序码
-				let qrSize = uni.upx2px(150)
+				// let qrSize = uni.upx2px(150)
+				let qrSize = uni.upx2px(200)
 				let qrcodeImg = await this.getImageInfo(this.qrcode)
-				this.ctx.drawImage(qrcodeImg.path, hW / 2 + uni.upx2px(116), hH - uni.upx2px(344), qrSize, qrSize)
+				this.ctx.drawImage(qrcodeImg.path, hW / 2 + uni.upx2px(96), hH - uni.upx2px(396), qrSize, qrSize)
 				//绘制描述
 				let descSize = 14
 				let descParams = {
 					color: '#fff',
 					x: hW / 2 + uni.upx2px(70),
-					y: hH - uni.upx2px(308) + qrSize
+					y: hH - uni.upx2px(358) + qrSize
 				}
 				this.ctx.setFontSize(descSize); //设置标题字体大小
 				this.ctx.setFillStyle('#fff'); //设置标题文本颜色

+ 1 - 1
components/uqrcode/uqrcode.vue

@@ -15,7 +15,7 @@
 				options: {
 					canvasId: '',
 					size: 354,
-					margin: 10,
+					margin: 5,
 					text: ''
 				},
 				result: {}

+ 9 - 0
pages.json

@@ -111,6 +111,15 @@
             }
 
         }
+        ,{
+            "path" : "pages/mine/my-product/my-product",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "我的作品",
+                "enablePullDownRefresh": false
+            }
+            
+        }
     ],
 	"tabBar": {
 		"color": "#555555",

+ 46 - 15
pages/activity/activityDetail.vue

@@ -9,7 +9,7 @@
 					<span class="work-title">{{activity.title}}</span>
 					<view class="work-info-box">
 						<image class="remen-icon" src="../../static/icon/remen.png"></image>
-						<span class="vote-count">{{activity.voteCount}}</span>
+						<span class="vote-count">{{activity.heatValue}}</span>
 						<span class="work-rank">排行榜第{{activity.rank}}名</span>
 					</view>
 				</view>
@@ -47,10 +47,12 @@
 		<share-popup ref="sharePopup" @confirm="shareConfirm"></share-popup>
 		<timeline-popup ref="timelinePopup"></timeline-popup>
 		<sms-alert ref="smsAlert"  @exchange="cmccVote"></sms-alert>
+		<vote-success ref="voteSuccess" @support="showShare"></vote-success>
 	</view>
 </template>
 
 <script>
+	import voteSuccess from "@/components/alert/voteSuccess.vue"
 	import sharePopup from "@/components/alert/sharePopup.vue"
 	import timelinePopup from "@/components/alert/timelinePopup.vue"
 	import votePopup from '@/components/alert/votePopup.vue'
@@ -59,6 +61,7 @@
 	import smsAlert from "@/components/alert/smsAlert.vue"
 	export default {
 		components: {
+			voteSuccess,
 			smsAlert,
 			sharePopup,
 			timelinePopup,
@@ -67,25 +70,23 @@
 			uqrcode
 		},
 		async onLoad(props) {
+			this.isCustomBack=props.isCustomBack || true
 			this.$refs.loading.showLoading()
 			//作品id
 			this.id = props.id;
 			//获取详情
-			this.fetchData()
+			await this.fetchData()
 			//处理授权结果
 			this.handelAuthResult(props)
 			//处理创建订单结果
 			this.handelOrderResult(props)
+			//处理海报参数
+			this.handelShareParams()
 			//隐藏loading
 			setTimeout(() => {
-				this.$refs.loading.hide()
-				this.loading = false
+				this.hideLoading()
 			}, 400)
 		},
-		onReady() {
-			//处理海报参数
-			this.handelShareParams()
-		},
 		computed: {
 			content() {
 				return decodeURIComponent(this.activity.content)
@@ -93,6 +94,11 @@
 		},
 		data() {
 			return {
+				//是否自定义返回,防止授权时返回到webview页面
+				isCustomBack:true,
+				
+				defaultAvatar:'https://vote.guosen-fumao.cn/obsfile/446d9e043f3748e4a47ea4d0de81b140-3b748fea4150c469b8eb66f98cd29e2.png',
+				
 				loading: false,
 				//作品id
 				id: '',
@@ -123,12 +129,17 @@
 			}
 		},
 		methods: {
+			hideLoading(){
+				this.$refs.loading.hide()
+				this.loading = false
+			},
 			async fetchData() {
 				this.activity = (await this.$api.activity.getWorksDetail(this.id)).data.data
 			},
 			async handelShareParams() {
+				console.log(this.activity.productNo);
 				this.posetrParams = {
-					avatar: 'https://gx.vote.activity.obs.cn-south-1.myhuaweicloud.com:443/446d9e043f3748e4a47ea4d0de81b140-3b748fea4150c469b8eb66f98cd29e2.png',
+					avatar: this.defaultAvatar,
 					title: '我是普法帮帮代言人',
 					subTitle: '邀请您为'+this.activity.productNo+'号作品投票!'
 				}
@@ -138,10 +149,11 @@
 				this.$u.mpShare = {
 					title: '我是普法帮帮代言人,' + this.posetrParams.subTitle,
 					path: '/pages/index/home?path=' + encodePath,
-					imageUrl: ''
+					imageUrl: this.activity.imgUrl
 				}
 
 				let qrText = this.$config.PRODUCT_PATH + '?path=' + encodePath
+				console.log(qrText);
 				this.qrCodeImg = (await this.$refs.uqrcode.make({
 					size: 150,
 					text: qrText
@@ -154,6 +166,7 @@
 				this.authResult = JSON.parse(options.authResult)
 				if (this.authResult.resultCode == '0000') {
 					//授权成功,直接弹出礼物框
+					this.hideLoading()
 					this.showVote()
 					return
 				}
@@ -182,6 +195,7 @@
 				if (this.$cache.get('orderResult')) {
 					this.orderResult=this.$cache.get('orderResult')
 					this.orderResult.goodsId=item.id
+					this.$cache.put('orderResult',this.orderResult,1*60*60)
 				}
 				this.selectGoods=item
 				if (item.point == 0) {
@@ -239,11 +253,22 @@
 				}
 				let res = await this.$api.order.exchange(params)
 				if (res.data.success) {
-					this.$refs.toast.info('助力成功')
+					this.voteSuccess()
+					this.$refs.smsAlert.hideSms()
 				}else{
 					this.$refs.toast.error(res.data.msg)
 				}
 			},
+			voteSuccess(){
+				try{
+					let avatar=this.$cache.get('userInfo').avatar || this.defaultAvatar
+					let voteCount=this.selectGoods.votePointRate
+					let pointNum=this.vuex_active_setting.voteAndPointRate
+					this.$refs.voteSuccess.showSuccess(avatar,voteCount,pointNum)
+				}catch(e){
+					this.$refs.toast.info('助力成功')
+				}
+			},
 			async freeVote() {
 				let params = {
 					helpGoodsId: this.selectGoods.id,
@@ -255,8 +280,12 @@
 				if (res.data.success) {
 					this.$refs.votePopup.hideVote()
 					this.fetchData()
+					
+					let avatar=this.$cache.get('userInfo').avatar
+					let voteCount=this.selectGoods.votePointRate
+					let pointNum=this.vuex_active_setting.voteAndPointRate
 					setTimeout(() => {
-						this.$refs.toast.info("助力成功")
+						this.voteSuccess()
 					}, 200)
 				} else {
 					this.$refs.votePopup.hideVote()
@@ -266,9 +295,11 @@
 				}
 			},
 			customBack() {
-				uni.switchTab({
-					url: '/pages/index/home'
-				})
+				if (this.isCustomBack) {
+					uni.switchTab({
+						url: '/pages/index/home'
+					})
+				}
 			},
 			//分享
 			async showPoster() {

+ 1 - 4
pages/auth/order.vue

@@ -1,7 +1,6 @@
 <template>
 	<view>
 		<!-- 获取同盾指纹和sessionId结果页 -->
-		<loading ref="loading" type="3"/>
 	</view>
 </template>
 
@@ -14,9 +13,7 @@
 		},
 		onLoad(options) {
 			options.fingerprint=decodeURIComponent(options.fingerprint)
-			this.$refs.loading.showLoading()
 			let _this=this
-			_this.$refs.loading.showLoading()
 			var pages = getCurrentPages();
 			var page = pages[pages.length - 3];
 			let url='/'+page.route
@@ -29,7 +26,7 @@
 			uni.reLaunch({
 				url:path,
 				success() {
-					_this.$refs.loading.hide()
+					
 				}
 			})
 		},

+ 2 - 3
pages/auth/result.vue

@@ -1,6 +1,6 @@
 <template>
 	<view>
-		<loading ref="loading" type="3"/>
+		
 	</view>
 </template>
 
@@ -13,7 +13,6 @@
 		},
 		onLoad(options) {
 			let _this=this
-			_this.$refs.loading.showLoading()
 			var pages = getCurrentPages();
 			var page = pages[pages.length - 3];
 			let url='/'+page.route
@@ -23,7 +22,7 @@
 			uni.reLaunch({
 				url:path,
 				success() {
-					_this.$refs.loading.hide()
+					
 				}
 			})
 		},

+ 6 - 0
pages/mine/mine.vue

@@ -104,6 +104,12 @@
 						url: '',
 						auth: true //是否登录验证
 					},
+					{
+						name: '我的作品',
+						icon: '/static/mine/product.png',
+						url: '/pages/mine/my-product/my-product',
+						auth: true //是否登录验证
+					},
 					{
 						name: '我的助力',
 						icon: '/static/mine/zhuli.png',

+ 185 - 0
pages/mine/my-product/my-product.vue

@@ -0,0 +1,185 @@
+<template>
+	<view :style="vuex_skin">
+		<mescroll-body-diy ref="mescrollRef" @init="mescrollInit" :down="downOption" @down="downCallback"
+			@up="upCallback">
+			<image :src="cover" style="width: 100vw;" mode="widthFix"></image>
+			<view class="head">
+				<view class="cu-avatar avatar round" :style="[{backgroundImage:'url('+ userInfo.avatar +')'}]"></view>
+				<view style="margin: 0 30upx 30upx 70upx;">
+					<view class="flex align-center">
+						<view class="text-black text-bold text-xl padding-right">{{userInfo.nickName}}</view>
+					</view>
+					<view class="flex align-center margin-top-20">
+						<view>
+							<text class="text-sm">共获热力</text>
+							<text class="cuIcon-hotfill padding-lr-xs text-base"></text>
+							<text class="text-lg text-bold">{{totalHeatValue}}</text>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="margin-top bg-white">
+				<view class="padding-30 flex justify-start align-center">
+					<view class="margin-left-sm text-lg text-black text-bold">我的作品</view>
+				</view>
+			</view>
+			<view @click="$jump('/pages/activity/activityDetail?id='+item.id+'&isCustomBack=false')" v-for="(item, index) in list" :key="index">
+				<view class="flex bg-white" style="padding:10rpx 30rpx 30rpx" @click="detail(item.id)">
+					<view class="">
+						<image :src="item.imgUrl" style="width: 120upx;height: 120upx;margin-right: 20upx;" mode="aspectFill"></image>
+					</view>
+					<view style="width: 100%;">
+						<view class="flex justify-between margin-bottom-10">
+							<view class="music" style="width: 75%">
+								<view class="name text-cut-1" style="height: 34rpx;">{{item.title}}</view>
+								<view style="margin: 20rpx 20rpx 20rpx 0;">
+									<rich-text class="desc text-cut-2 "
+										style="font-size: 24rpx;font-weight: 400;color: #969696;"
+										:nodes="decodeURIComponent(item.content)"></rich-text>
+								</view>
+							</view>
+							<view class="" style="width: 20%;">
+								<view class="text-base center">
+									<text class="cuIcon-hotfill padding-right-xs"></text>
+									<text class="text-lg text-bold">{{item.heatValue}}</text>
+								</view>
+								<view class="music-rank">NO.{{item.rank}}</view>
+							</view>
+						</view>
+						<view class="">
+							<u-line color="#cacaca"></u-line>
+						</view>
+					</view>
+				</view>
+			</view>
+		</mescroll-body-diy>
+	</view>
+</template>
+
+<script>
+	import MescrollBodyDiy from "@/uni_modules/mescroll-uni/components/mescroll-diy/xinlang/mescroll-body.vue";
+	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
+	export default {
+		mixins: [MescrollMixin],
+		components: {
+			MescrollBodyDiy,
+		},
+		data() {
+			return {
+				downOption: {
+					auto: false
+				},
+				cover: 'https://gx.vote.activity.obs.cn-south-1.myhuaweicloud.com:443/a1f19f8ee28a4a39ad892a9908a85807-%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20211119175930.jpg',
+				userInfo: {},
+				totalHeatValue:0,
+				list: []
+			}
+		},
+		onLoad(options) {
+			this.fetchUserInfo()
+		},
+		methods: {
+			fetchUserInfo() {
+				if (this.$cache.get('userInfo')) {
+					this.userInfo = this.$cache.get('userInfo')
+					return
+				}
+				let params = {
+					id: this.vuex_userId
+				}
+				this.$api.loginUser.detail(params).then(res => {
+					this.userInfo = res.data.data
+				})
+			},
+			fetchMyTotalHeatValue(){
+				let params={
+					phone: "13712703133"
+				}
+				this.$api.activity.getMyTotalHeat(params).then(res=>{
+					this.totalHeatValue=res.data.data || 0
+				})
+			},
+			downCallback() {
+				setTimeout(() => {
+					this.mescroll.resetUpScroll();
+				}, 1000)
+			},
+			upCallback(mescroll) {
+				console.log(mescroll.num);
+				if (mescroll.num==1) {
+					this.fetchMyTotalHeatValue()
+				}
+				try {
+					let params = {
+						current: mescroll.num,
+						size: mescroll.size,
+						phone: "13712703133"
+					}
+					this.$api.activity.list(params).then(res => {
+						let data = res.data.data.records
+						let total = res.data.data.total
+						mescroll.endBySize(data.length, total);
+						if (mescroll.num == 1) this.list = []; //如果是第一页需手动制空列表
+						this.list = this.list.concat(data); //追加新数据
+					})
+				} catch (e) {
+					console.error(e);
+					this.mescroll.endErr()
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.head {
+		background-color: #ffffff;
+		margin-top: -10upx;
+		height: 220upx;
+		border-radius: 26upx 26upx 0 0;
+	}
+
+	.avatar {
+		width: 120upx;
+		height: 120upx;
+		margin: -50upx 0 30upx 80upx;
+	}
+
+	.rank {
+		display: flex;
+		justify-content: center;
+		background-color: #583be6;
+		width: 40%;
+		color: #ffffff;
+		border-radius: 16upx;
+		line-height: 60upx;
+	}
+
+	.music {
+		.name {
+			font-size: 28upx;
+			font-family: PingFang SC;
+			font-weight: 400;
+			color: #333;
+			padding-bottom: 20upx;
+		}
+
+		.author {
+			font-size: 28upx;
+			font-family: PingFang SC;
+			font-weight: 400;
+			color: #9A9A9A;
+		}
+	}
+
+	.music-rank {
+		display: flex;
+		margin-top: 18upx;
+		line-height: 40upx;
+		justify-content: center;
+		border: #9d9d9d 1px solid;
+		color: #9d9d9d;
+		border-radius: 50upx;
+		font-style: italic;
+	}
+</style>

+ 0 - 2
pages/webview/createOrder.vue

@@ -1,6 +1,5 @@
 <template>
 	<view class="">
-		<loading ref="loading" type="3"/>
 		<web-view :src="src"></web-view>
 	</view>
 </template>
@@ -14,7 +13,6 @@
 			};
 		},
 		onLoad(options) {
-			this.$refs.loading.showLoading()
 			this.src=options.url +'?goodsId='+options.goodsId
 		},
 		methods: {

BIN
static/mine/product.png