wzx hace 1 año
padre
commit
60721f732e

+ 9 - 0
card/App.vue

@@ -38,4 +38,13 @@
 		flex-direction: column;
 		align-items: center;
 	}
+	
+	.uni-jcc {
+		justify-content: center;
+	}
+	
+	.hidden {
+		visibility: hidden;
+	}
+	
 </style>

+ 12 - 2
card/common/api.js

@@ -4,9 +4,13 @@ export const ossUrl = 'http://oss-card.colormaprun.com/card/';
 // export const token = '';
 
 export const apiServer = 'https://t-mapi.colormaprun.com/api/card/';	// 测试版
-export const token = '6052389aca5d8d5ecdc4b6f8b0fdfdd5';
+// export const token = '5c654da466ad325c6a1121e6d9e18f21';
 // export const token = '3ea08be20abc5f8dfee4a11b32606bc3';
-// export const token = '---';
+// export const token = 'fc7b8e76ee5d3dad29b424b2030c877e';
+// export const token = '31418466b0d1dc84a0954d407551f07d';
+// export const token = '31418466b0d1dc84a0954d407551f07d';
+// export const token = 'd4cd468ed0662b216e246f1cc37dce22';
+export const token = '';
 
 // 卡片基本信息查询
 export const apiCardBaseQuery = apiServer + 'CardBaseQuery';
@@ -17,6 +21,9 @@ export const apiCardDetailQuery = apiServer + 'CardDetailQuery';
 // 排名查询
 export const apiCardRankDetailQuery = apiServer + 'CardRankDetailQuery';
 
+// 卡片用户当前排名查询
+export const apiUserCurrentRankNumQuery = apiServer + 'UserCurrentRankNumQuery';
+
 // 用户是否已经报名卡片对应赛事查询
 export const apiUserJoinCardQuery = apiServer + 'UserJoinCardQuery';
 
@@ -26,6 +33,9 @@ export const apiOnlineMcSignUpDetail = apiServer + 'OnlineMcSignUpDetail';
 // 线上赛报名(重新分组)
 export const apiOnlineMcSignUp = apiServer + 'OnlineMcSignUp';
 
+// 是否允许重新分组(报名)
+export const apiIsAllowMcSignUp = apiServer + 'IsAllowMcSignUp';
+
 // 玩家当前月挑战记录查询
 export const apiCurrentMonthlyChallengeQuery = apiServer + 'CurrentMonthlyChallengeQuery';
 

+ 129 - 9
card/components/my-ranklist/my-ranklist.vue

@@ -1,12 +1,13 @@
 <template>
-	<uni-list class="list" :border="false">
-		<uni-list-item v-for="(item,index) in rankRs" :key="index" :border="false"
-			class="list-item uni-row" :class="item.isSelf ? 'list-item-isself' : ''">
+	<uni-list ref="list" class="list" :border="false" @click="test">
+		<uni-list-item v-for="(item,index) in rankRs" :key="index" :border="false" class="list-item uni-row"
+			:class="getListItemClass(item,index)">
 			<template v-slot:body>
 				<text class="item-rankNum"
 					:class="getMedalClass(item.rankNum)">{{item.rankNum > 0 ? item.rankNum : '--'}}</text>
 				<view class="item-detail uni-row">
-					<text class="item-userName">{{ teamType >= 0 ? getTeamName(teamType, item.userName) : item.userName}}</text>
+					<text
+						class="item-userName">{{ teamType >= 0 ? getTeamName(teamType, item.userName) : item.userName}}</text>
 					<text class="item-totalTime">{{fmtTime(item.totalTime)}}</text>
 				</view>
 			</template>
@@ -16,23 +17,58 @@
 
 <script>
 	import tools from '/common/tools';
-	import { teamName } from '/common/define';
-	
+	import {
+		teamName
+	} from '/common/define';
+
 	export default {
-		name:"my-ranklist",
+		name: "my-ranklist",
 		props: {
 			rankRs: {},
 			teamType: {
 				type: Number,
 				default: -1
+			},
+			myOldRankNum: { // 我的旧排名
+				type: Number,
+				default: null
+			},
+			myNewRankNum: { // 我的新排名
+				type: Number,
+				default: null
 			}
 		},
 		data() {
 			return {
+				curMoveIndex: null, // 当前正在移动的列表Index (等于 rankNum-1) 用于排名变动的动画效果
+				refList: null,
+				refListItems: null,
 				// item: {}
 			};
 		},
+		mounted() {
+			this.refList = this.$refs.list;
+			this.refListItems = this.refList.$el.children;
+			// console.log("refListItems", this.refListItems);
+		},
 		methods: {
+			getListItemClass(item, index) {
+				// console.log("item", item);
+				if (item == undefined) {
+					return "";
+				}
+
+				let classStr = "";
+				// if (item.rankNum >= 0 && this.curMoveIndex == item.rankNum-1) {
+				if (this.curMoveIndex == index) {
+					classStr += " list-item-move"
+					// console.log("list-item-move curMoveIndex", this.curMoveIndex);
+				}
+				if (item.isSelf) {
+					classStr += " list-item-isself"
+				}
+				return classStr;
+			},
 			getTeamName(teamType, teamIndex) {
 				return teamName[teamType][teamIndex];
 			},
@@ -52,6 +88,85 @@
 				else
 					return '--';
 			},
+			// 排名上升
+			moveRankUp(i, animation = false) {
+				// console.log("moveRankUp:", i, animation, this.rankRs[i]);
+				const temp = this.rankRs[i];
+				this.rankRs[i] = this.rankRs[i-1];
+				this.rankRs[i-1] = temp;
+				this.rankRs[i-1].rankNum--;
+				if (animation) {
+					this.curMoveIndex = i-1;
+					this.refListItems[i-1].scrollIntoView(true);
+				}
+				// console.log("rankRs:", i, rankRs);
+			},
+			// 排名下降
+			moveRankDown(i, animation = false) {
+				// console.log("moveRankDown:", i, animation, this.rankRs[i]);
+				const temp = this.rankRs[i];
+				this.rankRs[i] = this.rankRs[i+1];
+				this.rankRs[i+1] = temp;
+				this.rankRs[i+1].rankNum++;
+
+				if (animation) {
+					this.curMoveIndex = i+1;
+					this.refListItems[i+1].scrollIntoView(false);
+				}
+				// console.log("rankRs:", i, rankRs);
+			},
+			// 更新排名
+			moveRank(myOldRankNum, myNewRankNum, animation = false) {
+				if (!(myOldRankNum > 0)) {
+					console.log("[moveRank] 我的旧排名为空,终止执行", myOldRankNum);
+					return;
+				}
+				if (!(myNewRankNum > 0)) {
+					console.log("[moveRank] 我的新排名为空,终止执行", myNewRankNum);
+					return;
+				}
+				
+				const difNum = myOldRankNum - myNewRankNum;
+				if (difNum > 0) { // 排名上升
+					// console.log("排名上升");
+					let t = 1;
+					for (var i = myOldRankNum - 1; i > myNewRankNum - 1; i--) {
+						if (animation) {
+							setTimeout(this.moveRankUp, 200 * t, i, animation);
+						} else {
+							this.moveRankUp(i, animation);
+						}
+						t++;
+					}
+				} else if (difNum < 0) { // 排名下降
+					// console.log("排名下降");
+					let t = 1;
+					for (var i = myOldRankNum - 1; i < myNewRankNum - 1; i++) {
+						if (animation) {
+							setTimeout(this.moveRankDown, 200 * t, i, animation);
+						} else {
+							this.moveRankDown(i, animation);
+						}
+						t++;
+					}
+				}
+			},
+			test() {
+				return;
+				
+				// const oldRankNum = 1;
+				// const newRankNum = 20;
+				
+				const oldRankNum = 20;
+				const newRankNum = 10;
+				
+				// 先将我的排名恢复到旧排名
+				this.moveRank(newRankNum, oldRankNum);
+				
+				// 再将我的旧排名已动画的形式更新到新排名
+				setTimeout(this.moveRank, 3000, oldRankNum, newRankNum, true);
+				// this.moveRank(oldRankNum, newRankNum, true);
+			}
 			// onItemClick(item) {
 			// 	this.data.item = item
 			// 	this.$emit('my-combo-list-click', this.data);
@@ -61,7 +176,6 @@
 </script>
 
 <style lang="scss" scoped>
-
 	.list {
 		width: 90%;
 		height: 53vh;
@@ -74,6 +188,13 @@
 		width: 100%;
 		height: 70rpx;
 		justify-content: flex-start;
+
+		// transition: all 1s ease;
+		// -webkit-transition: all 1s ease;
+	}
+
+	.list-item-move {
+		background-color: #bd640a !important;
 	}
 
 	.list-item-isself {
@@ -138,5 +259,4 @@
 		font-size: 26rpx;
 		font-weight: 550;
 	}
-	
 </style>

+ 2 - 2
card/manifest.json

@@ -2,8 +2,8 @@
     "name" : "card",
     "appid" : "__UNI__A61F96B",
     "description" : "",
-    "versionName" : "1.1.1",
-    "versionCode" : 110,
+    "versionName" : "1.2.1",
+    "versionCode" : 121,
     "transformPx" : false,
     /* 5+App特有相关 */
     "app-plus" : {

+ 7 - 6
card/pages/achievement/index.vue

@@ -9,11 +9,11 @@ https://oss-mbh5.colormaprun.com/card/#/pages/achievement/index
 			<view class="topbar uni-row">
 				<view></view>
 				<text>成就</text>
-				<text style="color: rgba(46, 133, 236, 1);" @click="test">导航</text>
+				<text style="color: rgba(46, 133, 236, 1);"></text>
 			</view>
 			<view class="tab uni-row">
 				<text :class="tabCurrent == 0 ? 'tab-active' : 'tab-unactive'" @click="tabCurrent=0">挑战</text>
-				<text :class="tabCurrent == 1 ? 'tab-active' : 'tab-unactive'" @click="tabCurrent=1">活动</text>
+				<text :class="tabCurrent == 1 ? 'tab-active' : 'tab-unactive'" @click="tabCurrent=1">奖牌</text>
 			</view>
 			<view class="main">
 
@@ -58,7 +58,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/achievement/index
 		</view>
 
 		<my-popup ref="mypopup" :dataList="popupDataList" @popup-close="onPopupClose"></my-popup>
-		<my-popup-map ref="mypopupmap" :point="point"></my-popup-map>
+		<!-- <my-popup-map ref="mypopupmap" :point="point"></my-popup-map> -->
 
 	</view>
 </template>
@@ -181,7 +181,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/achievement/index
 					method: "POST",
 					data: {},
 					success: (res) => {
-						console.log("getAchievementQuery", res);
+						// console.log("getAchievementQuery", res);
 
 						if (checkResCode(res)) {
 							if (res.statusCode == 401) { // 未登录
@@ -269,11 +269,12 @@ https://oss-mbh5.colormaprun.com/card/#/pages/achievement/index
 				});
 			},
 			onPopupClose() {
-				console.log("onPopupClose");
+				// console.log("onPopupClose");
 				this.readMessage();
 			},
 			test() {
-				this.$refs.mypopupmap.popupOpen();
+				// this.$refs.mypopupmap.popupOpen();
+				window.location.href = `action://to_map_app?title=${this.point.name}&latitude=${this.point.latitude}&longitude=${this.point.longitude}`;
 			}
 		}
 	}

+ 85 - 9
card/pages/bm/style1/index.vue

@@ -15,7 +15,10 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/index
 			<view class="main uni-column">
 				<!-- <image mode="aspectFit" :class="cssLogo" :src="logoSrc"></image> -->
 				<view :class="cssLogo"></view>
-				<text class="type">{{type}}</text>
+				<view class="uni-row" style="position: relative;">
+					<image v-if="notice" mode="aspectFit" src="/static/common/notice.png" class="notice"></image>
+					<text class="type">{{type}}</text>
+				</view>
 				<text class="name">{{ecName}}</text>
 				<button class="button button-txtcolor">{{btnText}}</button>
 			</view>
@@ -30,13 +33,15 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/index
 		ossUrl,
 		apiCardBaseQuery,
 		apiUserJoinCardQuery,
-		apiCardConfigQuery
+		apiCardConfigQuery,
+		apiUserCurrentRankNumQuery
 	} from '../../../common/api';
 	
 	export default {
 		data() {
 			return {
 				pageName: "index",
+				rankKey: "rank-bm-style1",
 				queryString: "",
 				token: "",
 				
@@ -60,6 +65,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/index
 				// logoSrc: "",
 				type: "",
 				btnText: "",
+				notice: false,	// 是否显示(小红点)通知图标
 			}
 		},
 		computed: {},
@@ -75,16 +81,53 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/index
 			this.type = event["type"] ?? "锦标赛";
 			this.btnText = event["btnText"] ?? "开始比赛";
 			
+			this.rankKey += "-" + this.ecId;
+			console.log("rankKey:", this.rankKey);
+			
 			tools.removeCssCode();
 			
 			this.getCardBaseQuery();
 			this.getCardConfigQuery();
 			this.getUserJoinCardQuery();
+			this.getUserCurrentRankNumQuery();
 		},
 		onUnload() {
 			this.clear();
 		},
 		methods: {
+			dealNotice(rank) {
+				// console.log('[dealFirstEnter]');
+				let that = this;
+				uni.getStorage({
+					key: that.rankKey,
+					success: (res) => {
+						console.log('[getStorage]', that.rankKey, res.data);
+						const oldRank = res.data;
+						if (oldRank != rank) {
+							that.notice = true;
+							// that.setRankValue(rank);
+						}
+					},
+					fail: (e) => {
+						console.log('[getStorage] fail', that.rankKey, e);
+						that.notice = true;
+						// that.setRankValue(rank);
+					},
+				})
+			},
+			setRankValue(data) {
+				let that = this;
+				uni.setStorage({
+					key: that.rankKey,
+					data: data,
+					success: () => {
+						console.log('[setStorage] success', that.rankKey, data);
+					},
+					fail: (e) => {
+						console.log('[setStorage] fail', that.rankKey, e);
+					},
+				})
+			},
 			clear() {
 				if (this.interval != null) {
 					clearInterval(this.interval);
@@ -217,14 +260,14 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/index
 						ecId: this.ecId
 					},
 					success: (res) => {
-						console.log("getUserJoinCardQuery", res)
+						// console.log("getUserJoinCardQuery", res)
 						const code = res.data.code;
 						const data = res.data.data;
 						if (code == 0) {
 							this.isJoin = data.isJoin;
-							if (this.isJoin) {
+							/*if (this.isJoin) {
 								this.btnText = "已报名";
-							} /* else {
+							} else {
 								this.btnText = "未报名";
 							} */
 						}
@@ -234,18 +277,43 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/index
 					},
 				});
 			},
+			// 卡片用户当前排名查询
+			getUserCurrentRankNumQuery() {
+				uni.request({
+					url: apiUserCurrentRankNumQuery,
+					header: {
+						"Content-Type": "application/x-www-form-urlencoded",
+						"token": this.token,
+					},
+					method: "POST",
+					data: {
+						ecId: this.ecId
+					},
+					success: (res) => {
+						// console.log("getUserCurrentRankNumQuery", res)
+						if (res.data.code == 0) {
+							const data = res.data.data;
+							const rankNum = data.rankNum;
+							this.dealNotice(rankNum);
+						}
+					},
+					fail: (err) => {
+						console.log("getUserCurrentRankNumQuery err", err)
+					},
+				});
+			},
 			btnClick() {
 				if (this.isJoin) {	// 已报名
 					// uni.reLaunch({
-					// 	url: '/pages/bm/sqsj/rankList?' + this.queryString
+					// 	url: '/pages/bm/style1/rankList?full=true&' + this.queryString
 					// });
-					window.location.href = `${ossUrl}#/pages/bm/style1/rankList?${this.queryString}`;
+					window.location.href = `${ossUrl}#/pages/bm/style1/rankList?${this.queryString}&full=true`;
 				}
 				else {	// 未报名
 					// uni.reLaunch({
-					// 	url: '/pages/bm/sqsj/signup?' + this.queryString
+					// 	url: '/pages/bm/style1/signup?full=true&' + this.queryString
 					// });
-					window.location.href = `${ossUrl}#/pages/bm/style1/signup?${this.queryString}`;
+					window.location.href = `${ossUrl}#/pages/bm/style1/signup?${this.queryString}&full=true`;
 				}
 				
 			}
@@ -313,6 +381,14 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/index
 		background-size: contain;
 	}
 
+	.notice {
+		width: 30rpx;
+		height: 30rpx;
+		/* margin-right: 30rpx; */
+		position: absolute;
+		left: -60rpx;
+	}
+	
 	.type {
 		opacity: 60%;
 		/* line-height: 25px; */

+ 103 - 8
card/pages/bm/style1/rankList.vue

@@ -26,9 +26,9 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/rankList
 
 				<view class="topbtm uni-column">
 					<view class="topbtm-content uni-row">
-						<text class="topbtm-sspm" v-if="mcState==1"></text>
+						<text class="topbtm-sspm" v-if="mcState==1 && allowMcSignUp"></text>
 						<text class="topbtm-sspm">实时排名</text>
-						<view class="btnReGroup" v-if="mcState==1" @click="btnReGroup">重新分组</view>
+						<view class="btnReGroup" v-if="mcState==1 && allowMcSignUp" @click="btnReGroup">重新分组</view>
 					</view>
 				</view>
 				<!-- <text class="mcName">{{ecId}} - {{mcId}} - {{token}}</text> -->
@@ -72,6 +72,8 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/rankList
 		apiCardDetailQuery,
 		apiCardRankDetailQuery,
 		apiCardConfigQuery,
+		apiUserCurrentRankNumQuery,
+		apiIsAllowMcSignUp,
 		checkResCode
 	} from '/common/api';
 	
@@ -79,8 +81,8 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/rankList
 		data() {
 			return {
 				pageName: "rankList",
-				// firstEnterKey: 'firstEnter-bm_sqsj_rankList',
-				firstEnterKey: 'firstEnter-bm_sqsj',
+				firstEnterKey: 'firstEnter-bm',
+				rankKey: "rank-bm-style1",
 				queryString: "",
 				token: "",
 
@@ -94,7 +96,8 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/rankList
 				coiName: "", // 已报名单位名称,可为空
 				teamNum: 0, // 已报名队伍编号,可为0
 
-				mcState: 0 ,// 赛事/活动状态 0: 未开始  1: 进行中  2: 已结束
+				mcState: 0 ,	// 赛事/活动状态 0: 未开始  1: 进行中  2: 已结束
+				allowMcSignUp: false,	// 是否允许重新分组
 				countdown: "", // 倒计时
 				rankList: { // 排名列表
 					totalRankRs: [],
@@ -120,19 +123,60 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/rankList
 			// console.log(queryString);
 			this.token = event["token"] ?? token;
 			this.ecId = event["id"] ?? 0;
+			
+			this.firstEnterKey += "-" + this.ecId;
+			console.log("firstEnterKey:", this.firstEnterKey);
 
+			this.rankKey += "-" + this.ecId;
+			console.log("rankKey:", this.rankKey);
+			
 			tools.removeCssCode();
 			
 			this.getCardConfigQuery();
+			this.getUserCurrentRankNumQuery();
+			this.isAllowMcSignUp();
 		},
 		// 页面初次渲染完成,此时组件已挂载完成,DOM 树($el)已可用
 		onReady() {
-			this.dealFirstEnter();
+			// this.dealFirstEnter();
 		},
 		onUnload() {
 			this.clear();
 		},
 		methods: {
+			dealNotice(rank) {
+				// console.log('[dealFirstEnter]');
+				let that = this;
+				uni.getStorage({
+					key: that.rankKey,
+					success: (res) => {
+						console.log('[getStorage]', that.rankKey, res.data);
+						const oldRank = res.data;
+						if (oldRank != rank) {
+							// that.notice = true;
+							that.setRankValue(rank);
+						}
+					},
+					fail: (e) => {
+						console.log('[getStorage] fail', that.rankKey, e);
+						// that.notice = false;
+						that.setRankValue(rank);
+					},
+				})
+			},
+			setRankValue(data) {
+				let that = this;
+				uni.setStorage({
+					key: that.rankKey,
+					data: data,
+					success: () => {
+						console.log('[setStorage] success', that.rankKey, data);
+					},
+					fail: (e) => {
+						console.log('[setStorage] fail', that.rankKey, e);
+					},
+				})
+			},
 			dealFirstEnter() {
 				// console.log('[dealFirstEnter]');
 				let that = this;
@@ -267,7 +311,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/rankList
 						pageName: this.pageName
 					},
 					success: (res) => {
-						console.log("getCardConfigQuery", res)
+						// console.log("getCardConfigQuery", res)
 						const data = res.data.data;
 						// console.log("configJson", data.configJson);
 						const config = data.configJson != "" ? JSON.parse(data.configJson) : "";
@@ -301,6 +345,8 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/rankList
 						
 						this.loadConfig(config);
 						this.getCardDetailQuery();
+						
+						setTimeout(this.dealFirstEnter, 500);
 					},
 					fail: (err) => {
 						console.log("getCardConfigQuery err", err)
@@ -359,7 +405,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/rankList
 						dispArrStr: this.dispArrStr
 					},
 					success: (res) => {
-						console.log("getCardRankDetailQuery", res)
+						// console.log("getCardRankDetailQuery", res)
 						const rankdata = res.data.data;
 						this.rankList.totalRankRs = rankdata.totalRankRs;
 						this.rankList.teamRankRs = rankdata.teamRankRs;
@@ -371,6 +417,55 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/rankList
 					},
 				});
 			},
+			// 卡片用户当前排名查询
+			getUserCurrentRankNumQuery() {
+				uni.request({
+					url: apiUserCurrentRankNumQuery,
+					header: {
+						"Content-Type": "application/x-www-form-urlencoded",
+						"token": this.token,
+					},
+					method: "POST",
+					data: {
+						ecId: this.ecId
+					},
+					success: (res) => {
+						// console.log("getUserCurrentRankNumQuery", res)
+						if (res.data.code == 0) {
+							const data = res.data.data;
+							const rankNum = data.rankNum;
+							this.dealNotice(rankNum);
+						}
+					},
+					fail: (err) => {
+						console.log("getUserCurrentRankNumQuery err", err)
+					},
+				});
+			},
+			// 是否允许重新分组(报名)
+			isAllowMcSignUp() {
+				uni.request({
+					url: apiIsAllowMcSignUp,
+					header: {
+						"Content-Type": "application/x-www-form-urlencoded",
+						"token": this.token,
+					},
+					method: "POST",
+					data: {
+						ecId: this.ecId
+					},
+					success: (res) => {
+						// console.log("isAllowMcSignUp", res)
+						if (res.data.code == 0) {
+							const data = res.data.data;
+							this.allowMcSignUp = data.allowSignUp;
+						}
+					},
+					fail: (err) => {
+						console.log("isAllowMcSignUp err", err)
+					},
+				});
+			},
 			btnBack() {
 				// window.history.back();
 				window.location.href = `action://to_home/`;

+ 79 - 9
card/pages/bm/style1/signup.vue

@@ -20,6 +20,8 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/signup
 				<!-- <text class="mcName">{{ecId}} - {{mcId}} - {{token}}</text> -->
 			</view>
 			<view class="main uni-column">
+				<!-- <text>token: {{token}}</text> -->
+				<!-- <text>queryString: {{queryString}}</text> -->
 				<uni-data-select class="select" placeholder="请选择组织名称" v-model="coiId" :localdata="orgList"
 					@change="orgChange"></uni-data-select>
 				<uni-data-select v-if="teamList.length > 0" class="select" placeholder="请选择分组" v-model="teamNum"
@@ -58,6 +60,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/signup
 		apiOnlineMcSignUpDetail,
 		apiOnlineMcSignUp,
 		apiCardConfigQuery,
+		apiUserCurrentRankNumQuery,
 		checkResCode,
 		checkToken
 	} from '../../../common/api';
@@ -66,8 +69,8 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/signup
 		data() {
 			return {
 				pageName: "signup",
-				// firstEnterKey: 'firstEnter-bm_sqsj_signup',
-				firstEnterKey: 'firstEnter-bm_sqsj',
+				firstEnterKey: 'firstEnter-bm',
+				rankKey: "rank-bm-style1",
 				queryString: "",
 				from: "", // 来源页面
 				token: "",
@@ -107,19 +110,59 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/signup
 			this.token = event["token"] ?? token;
 			this.ecId = event["id"] ?? 0;
 			
+			this.firstEnterKey += "-" + this.ecId;
+			console.log("firstEnterKey:", this.firstEnterKey);
+			
+			this.rankKey += "-" + this.ecId;
+			console.log("rankKey:", this.rankKey);
+			
 			tools.removeCssCode();
 			
 			this.getCardConfigQuery();
 			this.getCardDetailQuery();
+			this.getUserCurrentRankNumQuery();
 		},
 		// 页面初次渲染完成,此时组件已挂载完成,DOM 树($el)已可用
 		onReady() {
-			this.dealFirstEnter();
+			// this.dealFirstEnter();
 		},
 		onUnload() {
 			this.clear();
 		},
 		methods: {
+			dealNotice(rank) {
+				// console.log('[dealFirstEnter]');
+				let that = this;
+				uni.getStorage({
+					key: that.rankKey,
+					success: (res) => {
+						console.log('[getStorage]', that.rankKey, res.data);
+						const oldRank = res.data;
+						if (oldRank != rank) {
+							// that.notice = true;
+							that.setRankValue(rank);
+						}
+					},
+					fail: (e) => {
+						console.log('[getStorage] fail', that.rankKey, e);
+						// that.notice = false;
+						that.setRankValue(rank);
+					},
+				})
+			},
+			setRankValue(data) {
+				let that = this;
+				uni.setStorage({
+					key: that.rankKey,
+					data: data,
+					success: () => {
+						console.log('[setStorage] success', that.rankKey, data);
+					},
+					fail: (e) => {
+						console.log('[setStorage] fail', that.rankKey, e);
+					},
+				})
+			},
 			dealFirstEnter() {
 				// console.log('[dealFirstEnter]');
 				let that = this;
@@ -257,7 +300,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/signup
 						pageName: this.pageName
 					},
 					success: (res) => {
-						console.log("getCardConfigQuery", res)
+						// console.log("getCardConfigQuery", res)
 						const data = res.data.data;
 						const config = data.configJson != "" ? JSON.parse(data.configJson) : "";
 						// console.log("configJson", data.configJson);
@@ -305,6 +348,8 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/signup
 						}; */
 						
 						this.loadConfig(config);
+						
+						setTimeout(this.dealFirstEnter, 500);
 					},
 					fail: (err) => {
 						console.log("getCardConfigQuery err", err)
@@ -324,7 +369,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/signup
 						ecId: this.ecId
 					},
 					success: (res) => {
-						console.log("getCardDetailQuery", res);
+						// console.log("getCardDetailQuery", res);
 						const data = res.data.data;
 						this.mcType = data.mcType;
 						this.mcId = data.mcId;
@@ -347,7 +392,32 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/signup
 						console.log("getCardDetailQuery err", err)
 					},
 				});
-			},			
+			},
+			// 卡片用户当前排名查询
+			getUserCurrentRankNumQuery() {
+				uni.request({
+					url: apiUserCurrentRankNumQuery,
+					header: {
+						"Content-Type": "application/x-www-form-urlencoded",
+						"token": this.token,
+					},
+					method: "POST",
+					data: {
+						ecId: this.ecId
+					},
+					success: (res) => {
+						// console.log("getUserCurrentRankNumQuery", res)
+						if (res.data.code == 0) {
+							const data = res.data.data;
+							const rankNum = data.rankNum;
+							this.dealNotice(rankNum);
+						}
+					},
+					fail: (err) => {
+						console.log("getUserCurrentRankNumQuery err", err)
+					},
+				});
+			},
 			// 线上赛报名页面信息详情
 			getOnlineMcSignUpDetail() {
 				uni.request({
@@ -361,7 +431,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/signup
 						mcId: this.mcId,
 					},
 					success: (res) => {
-						console.log("getOnlineMcSignUpDetail", res)
+						// console.log("getOnlineMcSignUpDetail", res)
 						this.coiRs = res.data.data.coiRs;
 						const rsNum = this.coiRs.length;
 						this.orgList = [];
@@ -396,7 +466,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/signup
 						selectTeam: this.teamNum
 					},
 					success: (res) => {
-						console.log("onlineMcSignUp", res)
+						// console.log("onlineMcSignUp", res)
 						
 						if (checkResCode(res)) {
 							uni.showToast({
@@ -435,7 +505,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/signup
 				this.$refs.mypopup.popupOpen();
 			},
 			orgChange(value, resetTeamNum=true) {
-				console.log("[orgChange] value:", value);
+				// console.log("[orgChange] value:", value);
 				if (resetTeamNum) {
 					this.teamNum = 0;
 				}

+ 80 - 41
card/pages/jbs/index.vue

@@ -14,7 +14,10 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/index
 			</view>
 			<view class="main uni-column">
 				<view :class="cssLogo"></view>
-				<text class="type">{{type}}</text>
+				<view class="uni-row" style="position: relative;">
+					<image v-if="notice" mode="aspectFit" src="/static/common/notice.png" class="notice"></image>
+					<text class="type">{{type}}</text>
+				</view>
 				<text class="name">{{ecName}}</text>
 				<button class="button button-txtcolor">{{btnText}}</button>
 			</view>
@@ -29,13 +32,14 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/index
 		ossUrl,
 		apiCardBaseQuery,
 		apiCardConfigQuery,
-		apiCardDetailQuery
+		apiUserCurrentRankNumQuery
 	} from '../../common/api';
 
 	export default {
 		data() {
 			return {
 				pageName: "index",
+				rankKey: "rank-jbs",
 				queryString: "",
 				token: "",
 				
@@ -44,10 +48,6 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/index
 				ecDesc: '', // 卡片简介
 				beginSecond: null, // 卡片开始时间戳,单位秒
 				endSecond: null, // 卡片结束时间戳,单位秒
-				
-				// mcId: 0, // 赛事id
-				// mcType: 0, // 赛事类型 1 普通活动 2 线下赛 3 线上赛
-				// mcName: "", // 赛事名称
 
 				countdown: "", // 倒计时
 				interval: null,
@@ -56,6 +56,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/index
 				cssLogo: "",
 				type: "",
 				btnText: "",
+				notice: false,	// 是否显示(小红点)通知图标
 			}
 		},
 		computed: {},
@@ -70,15 +71,52 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/index
 			this.type = event["type"] ?? "锦标赛";
 			this.btnText = event["btnText"] ?? "开始比赛";
 			
+			this.rankKey += "-" + this.ecId;
+			console.log("rankKey:", this.rankKey);
+			
 			tools.removeCssCode();
 
 			this.getCardBaseQuery();
 			this.getCardConfigQuery();
+			this.getUserCurrentRankNumQuery();
 		},
 		onUnload() {
 			this.clear();
 		},
 		methods: {
+			dealNotice(rank) {
+				// console.log('[dealFirstEnter]');
+				let that = this;
+				uni.getStorage({
+					key: that.rankKey,
+					success: (res) => {
+						console.log('[getStorage]', that.rankKey, res.data);
+						const oldRank = res.data;
+						if (oldRank != rank) {
+							that.notice = true;
+							// that.setRankValue(rank);
+						}
+					},
+					fail: (e) => {
+						console.log('[getStorage] fail', that.rankKey, e);
+						that.notice = true;
+						// that.setRankValue(rank);
+					},
+				})
+			},
+			setRankValue(data) {
+				let that = this;
+				uni.setStorage({
+					key: that.rankKey,
+					data: data,
+					success: () => {
+						console.log('[setStorage] success', that.rankKey, data);
+					},
+					fail: (e) => {
+						console.log('[setStorage] fail', that.rankKey, e);
+					},
+				})
+			},
 			clear() {
 				if (this.interval != null) {
 					clearInterval(this.interval);
@@ -138,7 +176,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/index
 						ecId: this.ecId
 					},
 					success: (res) => {
-						console.log("getCardBaseQuery", res)
+						// console.log("getCardBaseQuery", res)
 						const data = res.data.data;
 						
 						this.ecName = data.ecName;
@@ -197,43 +235,36 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/index
 					},
 				});
 			},
-			// 卡片信息查询
-			// getCardDetailQuery() {
-			// 	uni.request({
-			// 		url: apiCardDetailQuery,
-			// 		header: {
-			// 			"Content-Type": "application/x-www-form-urlencoded",
-			// 			"token": this.token,
-			// 		},
-			// 		method: "POST",
-			// 		data: {
-			// 			ecId: this.ecId
-			// 		},
-			// 		success: (res) => {
-			// 			console.log("getCardDetailQuery", res)
-			// 			const data = res.data.data;
-			// 			this.mcType = data.mcType;
-			// 			this.mcId = data.mcId;
-			// 			this.mcName = data.mcName;
-			// 			this.endSecond = data.endSecond;
-
-			// 			this.getCountdown();
-
-			// 			this.clear();
-			// 			this.interval = setInterval(this.getCountdown, 60000);
-			// 		},
-			// 		fail: (err) => {
-			// 			console.log("getCardDetailQuery err", err)
-			// 		},
-			// 	});
-			// },
+			// 卡片用户当前排名查询
+			getUserCurrentRankNumQuery() {
+				uni.request({
+					url: apiUserCurrentRankNumQuery,
+					header: {
+						"Content-Type": "application/x-www-form-urlencoded",
+						"token": this.token,
+					},
+					method: "POST",
+					data: {
+						ecId: this.ecId
+					},
+					success: (res) => {
+						// console.log("getUserCurrentRankNumQuery", res)
+						if (res.data.code == 0) {
+							const data = res.data.data;
+							const rankNum = data.rankNum;
+							this.dealNotice(rankNum);
+						}
+					},
+					fail: (err) => {
+						console.log("getUserCurrentRankNumQuery err", err)
+					},
+				});
+			},
 			btnClick() {
 				// uni.reLaunch({
-				// uni.navigateTo({
-				// 	url: '/pages/default/rankList?' + this.queryString
+				// 	url: '/pages/jbs/rankList?full=true&' + this.queryString
 				// });
-				// window.location.href = `https://oss-mbh5.colormaprun.com/card/#/pages/default/rankList?${this.queryString}`;
-				window.location.href = `${ossUrl}#/pages/jbs/rankList?${this.queryString}`;
+				window.location.href = `${ossUrl}#/pages/jbs/rankList?${this.queryString}&full=true`;
 			}
 		}
 	}
@@ -299,6 +330,14 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/index
 		background-size: contain;
 	}
 
+	.notice {
+		width: 30rpx;
+		height: 30rpx;
+		/* margin-right: 30rpx; */
+		position: absolute;
+		left: -60rpx;
+	}
+	
 	.type {
 		opacity: 60%;
 		/* line-height: 25px; */

+ 74 - 6
card/pages/jbs/rankList.vue

@@ -43,6 +43,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/rankList
 		token,
 		apiCardDetailQuery,
 		apiCardRankDetailQuery,
+		apiUserCurrentRankNumQuery,
 		apiCardConfigQuery,
 		apiOnlineMcSignUp,
 		checkResCode
@@ -53,6 +54,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/rankList
 			return {
 				pageName: "rankList",
 				firstEnterKey: 'firstEnter-jbs_rankList',
+				rankKey: "rank-jbs",
 				queryString: "",
 				token: "",
 
@@ -87,19 +89,59 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/rankList
 			this.token = event["token"] ?? token;
 			this.ecId = event["id"] ?? 0;
 
+			this.firstEnterKey += "-" + this.ecId;
+			console.log("firstEnterKey:", this.firstEnterKey);
+
+			this.rankKey += "-" + this.ecId;
+			console.log("rankKey:", this.rankKey);
+
 			tools.removeCssCode();
 
 			this.getCardConfigQuery();
+			this.getUserCurrentRankNumQuery();
 			// this.getCardDetailQuery();
 		},
 		// 页面初次渲染完成,此时组件已挂载完成,DOM 树($el)已可用
 		onReady() {
-			this.dealFirstEnter();
+			// this.dealFirstEnter();
 		},
 		onUnload() {
 			this.clear();
 		},
 		methods: {
+			dealNotice(rank) {
+				// console.log('[dealFirstEnter]');
+				let that = this;
+				uni.getStorage({
+					key: that.rankKey,
+					success: (res) => {
+						console.log('[getStorage]', that.rankKey, res.data);
+						const oldRank = res.data;
+						if (oldRank != rank) {
+							// that.notice = true;
+							that.setRankValue(rank);
+						}
+					},
+					fail: (e) => {
+						console.log('[getStorage] fail', that.rankKey, e);
+						// that.notice = false;
+						that.setRankValue(rank);
+					},
+				})
+			},
+			setRankValue(data) {
+				let that = this;
+				uni.setStorage({
+					key: that.rankKey,
+					data: data,
+					success: () => {
+						console.log('[setStorage] success', that.rankKey, data);
+					},
+					fail: (e) => {
+						console.log('[setStorage] fail', that.rankKey, e);
+					},
+				})
+			},
 			dealFirstEnter() {
 				let that = this;
 				uni.getStorage({
@@ -207,7 +249,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/rankList
 						pageName: this.pageName
 					},
 					success: (res) => {
-						console.log("getCardConfigQuery", res)
+						// console.log("getCardConfigQuery", res)
 						const data = res.data.data;
 						const config = data.configJson != "" ? JSON.parse(data.configJson) : "";
 						// console.log("configJson", data.configJson);
@@ -250,6 +292,8 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/rankList
 
 						this.loadConfig(config);
 						this.getCardDetailQuery();
+
+						setTimeout(this.dealFirstEnter, 500);
 					},
 					fail: (err) => {
 						console.log("getCardConfigQuery err", err)
@@ -317,6 +361,31 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/rankList
 					},
 				});
 			},
+			// 卡片用户当前排名查询
+			getUserCurrentRankNumQuery() {
+				uni.request({
+					url: apiUserCurrentRankNumQuery,
+					header: {
+						"Content-Type": "application/x-www-form-urlencoded",
+						"token": this.token,
+					},
+					method: "POST",
+					data: {
+						ecId: this.ecId
+					},
+					success: (res) => {
+						// console.log("getUserCurrentRankNumQuery", res)
+						if (res.data.code == 0) {
+							const data = res.data.data;
+							const rankNum = data.rankNum;
+							this.dealNotice(rankNum);
+						}
+					},
+					fail: (err) => {
+						console.log("getUserCurrentRankNumQuery err", err)
+					},
+				});
+			},
 			// 线上赛报名(重新分组)
 			onlineMcSignUp() {
 				uni.request({
@@ -332,7 +401,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/rankList
 						selectTeam: 0
 					},
 					success: (res) => {
-						console.log("onlineMcSignUp", res)
+						// console.log("onlineMcSignUp", res)
 
 						if (checkResCode(res)) {
 							// uni.showToast({
@@ -453,15 +522,14 @@ https://oss-mbh5.colormaprun.com/card/#/pages/jbs/rankList
 		line-height: 5vh;
 		background-color: #ffb40b;
 	}
-	
+
 	.btnStart-enable {
 		background-color: #ffb40b;
 	}
-	
+
 	.btnStart-disable {
 		background-color: #c3c3c3;
 	}
-	
 </style>
 
 <style lang="scss" scoped>

+ 70 - 3
card/pages/mytz/detail.vue

@@ -38,7 +38,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/mytz/detail
 							<text class="introduce-title">挑战赛规则</text>
 							<view>
 								<text class="introduce-sn">①</text>
-								<text class="introduce-content">选任意定向地图,完成4次挑战,你就胜利啦!</text>
+								<text class="introduce-content">选任意定向地图,完成{{targetNum}}次挑战,你就胜利啦!</text>
 							</view>
 							<view>
 								<text class="introduce-sn">②</text>
@@ -71,6 +71,8 @@ https://oss-mbh5.colormaprun.com/card/#/pages/mytz/detail
 	export default {
 		data() {
 			return {
+				pageName: "mytz",
+				rankKey: "rank-mytz",
 				queryString: "",
 				token: "",
 				tokenValid: false,
@@ -110,9 +112,72 @@ https://oss-mbh5.colormaprun.com/card/#/pages/mytz/detail
 			this.getCurrentMonthlyChallengeQuery();
 		},
 		// 页面初次渲染完成,此时组件已挂载完成,DOM 树($el)已可用
-		onReady() {},
+		onReady() {
+			this.dealFirstEnter();
+		},
 		onUnload() {},
 		methods: {
+			dealNotice(rank) {
+				// console.log('[dealFirstEnter]');
+				let that = this;
+				uni.getStorage({
+					key: that.rankKey,
+					success: (res) => {
+						console.log('[getStorage]', that.rankKey, res.data);
+						const oldRank = res.data;
+						if (oldRank != rank) {
+							// that.notice = true;
+							that.setRankValue(rank);
+						}
+					},
+					fail: (e) => {
+						console.log('[getStorage] fail', that.rankKey, e);
+						// that.notice = false;
+						that.setRankValue(rank);
+					},
+				})
+			},
+			setRankValue(data) {
+				let that = this;
+				uni.setStorage({
+					key: that.rankKey,
+					data: data,
+					success: () => {
+						console.log('[setStorage] success', that.rankKey, data);
+					},
+					fail: (e) => {
+						console.log('[setStorage] fail', that.rankKey, e);
+					},
+				})
+			},
+			dealFirstEnter() {
+				// console.log('[dealFirstEnter]');
+				let that = this;
+				uni.getStorage({
+					key: that.firstEnterKey,
+					success: (res) => {
+						console.log('[getStorage]', that.firstEnterKey, res.data);
+					},
+					fail: (e) => {
+						console.log('[getStorage] fail', that.firstEnterKey, e);
+						that.btnInfo();
+						that.setFirstEnterValue(true);
+					},
+				})
+			},
+			setFirstEnterValue(data) {
+				let that = this;
+				uni.setStorage({
+					key: that.firstEnterKey,
+					data: data,
+					success: () => {
+						console.log('[setStorage] success', that.firstEnterKey, data);
+					},
+					fail: (e) => {
+						console.log('[setStorage] fail', that.firstEnterKey, e);
+					},
+				})
+			},
 			getCupProgress() {
 				if (this.targetNum > 0 && this.realNum > 0) {
 					if (this.realNum < this.targetNum) {
@@ -193,7 +258,7 @@ https://oss-mbh5.colormaprun.com/card/#/pages/mytz/detail
 					method: "POST",
 					data: {},
 					success: (res) => {
-						console.log("getCurrentMonthlyChallengeQuery", res);
+						// console.log("getCurrentMonthlyChallengeQuery", res);
 						
 						if (checkResCode(res)) {
 							if (res.statusCode == 401) { // 未登录
@@ -208,6 +273,8 @@ https://oss-mbh5.colormaprun.com/card/#/pages/mytz/detail
 							this.realNum = data.realNum;
 							this.targetNum = data.targetNum;
 							
+							this.dealNotice(this.realNum);
+							
 							this.getCupProgress();
 							this.getText();
 						}

+ 86 - 2
card/pages/mytz/index.vue

@@ -8,7 +8,10 @@ https://oss-mbh5.colormaprun.com/card/#/pages/mytz/index
 		<view class="content uni-column" :class="contentBg" @click="btnClick">
 			<view class="main uni-column">
 				<image mode="aspectFit" class="logo" :src="logoSrc"></image>
-				<text class="type">{{ecName}}</text>
+				<view class="uni-row" style="position: relative;">
+					<image v-if="notice" mode="aspectFit" src="/static/common/notice.png" class="notice"></image>
+					<text class="type">{{ecName}}</text>
+				</view>
 				<text class="name">{{name}}</text>
 				<button class="button button-txtcolor">{{btnText}}</button>
 			</view>
@@ -22,11 +25,14 @@ https://oss-mbh5.colormaprun.com/card/#/pages/mytz/index
 		ossUrl,
 		token,
 		apiCardBaseQuery,
+		apiCurrentMonthlyChallengeQuery,
 	} from '../../common/api';
 	 
 	export default {
 		data() {
 			return {
+				pageName: "index",
+				rankKey: "rank-mytz",
 				queryString: "",
 				token: "",
 				
@@ -36,11 +42,16 @@ https://oss-mbh5.colormaprun.com/card/#/pages/mytz/index
 				beginSecond: null, // 卡片开始时间戳,单位秒
 				endSecond: null, // 卡片结束时间戳,单位秒
 				
+				month: '', // 月名称
+				realNum: 0, // 实际完赛次数
+				targetNum: 0, // 要求完赛次数
+				
 				contentBg: "",
 				logoSrc: "",
 				type: "",
 				name: "",
 				btnText: "",
+				notice: false,	// 是否显示(小红点)通知图标
 			}
 		},
 		computed: {
@@ -67,10 +78,44 @@ https://oss-mbh5.colormaprun.com/card/#/pages/mytz/index
 			this.btnText = event["btnText"] ?? "开始挑战";
 			
 			this.getCardBaseQuery();
+			this.getCurrentMonthlyChallengeQuery();
 		},
 		onUnload() {
 		},
 		methods: {
+			dealNotice(rank) {
+				// console.log('[dealFirstEnter]');
+				let that = this;
+				uni.getStorage({
+					key: that.rankKey,
+					success: (res) => {
+						console.log('[getStorage]', that.rankKey, res.data);
+						const oldRank = res.data;
+						if (oldRank != rank) {
+							that.notice = true;
+							// that.setRankValue(rank);
+						}
+					},
+					fail: (e) => {
+						console.log('[getStorage] fail', that.rankKey, e);
+						that.notice = true;
+						// that.setRankValue(rank);
+					},
+				})
+			},
+			setRankValue(data) {
+				let that = this;
+				uni.setStorage({
+					key: that.rankKey,
+					data: data,
+					success: () => {
+						console.log('[setStorage] success', that.rankKey, data);
+					},
+					fail: (e) => {
+						console.log('[setStorage] fail', that.rankKey, e);
+					},
+				})
+			},
 			// 卡片基本信息查询
 			getCardBaseQuery() {
 				uni.request({
@@ -97,8 +142,39 @@ https://oss-mbh5.colormaprun.com/card/#/pages/mytz/index
 					},
 				});
 			},
+			// 玩家当前月挑战记录查询
+			getCurrentMonthlyChallengeQuery() {
+				uni.request({
+					url: apiCurrentMonthlyChallengeQuery,
+					header: {
+						"Content-Type": "application/x-www-form-urlencoded",
+						"token": this.token,
+					},
+					method: "POST",
+					data: {},
+					success: (res) => {
+						// console.log("getCurrentMonthlyChallengeQuery", res);
+						
+						if (res.data.code == 0) {
+							const data = res.data.data;
+			
+							this.month = data.month;
+							this.realNum = data.realNum;
+							this.targetNum = data.targetNum;
+							
+							this.dealNotice(this.realNum);
+						}
+					},
+					fail: (err) => {
+						console.log("getCurrentMonthlyChallengeQuery err", err)
+					},
+				});
+			},
 			btnClick() {
-				window.location.href = `${ossUrl}#/pages/mytz/detail?${this.queryString}`;
+				// uni.reLaunch({
+				// 	url: '/pages/mytz/detail?full=true&' + this.queryString
+				// });
+				window.location.href = `${ossUrl}#/pages/mytz/detail?${this.queryString}&full=true`;
 			}
 		}
 	}
@@ -135,6 +211,14 @@ https://oss-mbh5.colormaprun.com/card/#/pages/mytz/index
 		height: 230rpx;
 	}
 	
+	.notice {
+		width: 30rpx;
+		height: 30rpx;
+		/* margin-right: 30rpx; */
+		position: absolute;
+		left: -60rpx;
+	}
+	
 	.type {
 		opacity: 60%;
 		/* line-height: 25px; */

BIN
card/static/common/notice.png


BIN
card/static/medal/newcomer.png


+ 3 - 1
card/url.md

@@ -4,9 +4,11 @@ APP内跳转链接
 [跳转登录页] (action://to_login/)
 [跳转活动详情页] (action://to_detail/)
 [跳转地图列表页] (action://to_map_list/)
+[跳转第三方地图APP] (action://to_map_app?title=地点名称&latitude=123&longitude=456)
+
 
 卡片URL
 
 [每月挑战] (https://oss-mbh5.colormaprun.com/card/#/pages/mytz/index)
 [锦标赛] (https://oss-mbh5.colormaprun.com/card/#/pages/jbs/index)
-[报名 - 山青世界] (https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/index)
+[报名 - 样式1] (https://oss-mbh5.colormaprun.com/card/#/pages/bm/style1/index)