From 89efee9a2e20fc04b4537d859917b47cf68a814c Mon Sep 17 00:00:00 2001 From: peng <peng.com> Date: 星期五, 26 九月 2025 18:28:40 +0800 Subject: [PATCH] 用户行为分享基础埋点 --- pages/tabbar/user/my.vue | 198 ++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 176 insertions(+), 22 deletions(-) diff --git a/pages/tabbar/user/my.vue b/pages/tabbar/user/my.vue index 7d94e60..d67d898 100644 --- a/pages/tabbar/user/my.vue +++ b/pages/tabbar/user/my.vue @@ -6,7 +6,8 @@ </view> <view class="header" @click="userDetail"> <view class="head-1"> - <image :src="userInfo.face || userImage"></image> + <image v-if="userInfo.face" :src="endpoint + '/' + userInfo.face"></image> + <image v-else :src="userImage"></image> </view> <view class="head-2" v-if="userInfo.id"> <view class="user-name">{{ userInfo.nickName }}</view> @@ -16,6 +17,24 @@ </view> <u-icon style="display: flex;align-items: flex-start;" name="arrow-right"></u-icon> </view> + <!-- <button type="default" @click="goTOSuccess">绔嬪嵆鏌ョ湅</button> --> + <view class="member-gradient-bg"> + <view class="member-content"> + <view class="vip-icon"> + <image src="/static/tabbar/vip.png" mode="widthFix"></image> + </view> + <view class="vip-info"> + <p class="vip-level">缁挎弧绛愪細鍛�</p> + <p class="vip-validity">闀挎湡鏈夋晥</p> + </view> + + <!-- 浼氬憳鏍囪瘑瑁呴グ --> + <view class="vip-badge"> + <text class="badge-text">灏婁韩鐗规潈</text> + </view> + </view> + + </view> <!-- 绉垎锛屼紭鎯犲埜锛屽叧娉紝 --> <div class="pointBox box"> <u-row text-align="center" gutter="16" class="point"> @@ -78,23 +97,29 @@ </view> <view>瑙嗛涓婚〉</view> </view> - <view class="order-item" @click="navigateTo('/pages/mine/myCollect')"> + <view class="order-item" @click="navigateTo('/pages/mine/myAttention')"> <view> <text class="iconfont"></text> </view> <view>鍏虫敞鍒楄〃</view> </view> - <view class="order-item" @click="navigateTo('/pages/mine/myCollect/myCollect')"> +<!-- <view class="order-item" @click="navigateTo('/pages/mine/myCollect/myCollect')"> <view> <text class="iconfont"></text> </view> <view>鏀惰棌鍒楄〃</view> - </view> + </view --> <view class="order-item" @click="navigateTo('/pages/mine/activity/myActivity')"> <view> <text class="iconfont"></text> </view> <view>鎴戠殑娲诲姩</view> + </view> + <view class="order-item" @click="navigateTo('/pages/mine/myTracks')"> + <view> + <text class="iconfont"></text> + </view> + <view>娴忚璁板綍</view> </view> </view> </div> @@ -103,24 +128,30 @@ <view class="pointBox box" style="margin-top: 20rpx;"> <tool /> </view> - - + <!-- 鎾戣捣涓嬫柟 --> + <view style="height:64px;"> + + </view> <custom-tabbar bgColor="#ffffff" selected="my"></custom-tabbar> + </view> </template> <script> -import '@/components/uview-components/uview-ui'; +import '@/pages/subComponents/uview-components/uview-ui'; import tool from "@/pages/tabbar/user/utils/tool.vue"; +import { getSTSToken } from "@/api/common.js"; import { getCouponsNum, getFootprintNum } from "@/api/members.js"; import { getUserWallet } from "@/api/members"; import configs from '@/config/config' import storage from '@/utils/storage.js' +import { getSessionId, userAction } from "@/api/userAction.js"; export default { components: { tool }, data() { return { + endpoint: '', configs, userImage:configs.defaultUserPhoto, coverTransform: "translateY(0px)", @@ -130,10 +161,44 @@ couponNum: "", footNum: "", walletNum: "", + pageSessionNo:"", + actionParam:{ + sessionId:'', + actionType:"PAGE", + joinType:"SELF", + pageCode:"TBA_BAR_MY", + pageParams:"{}", + pageStatus:"JOIN", + pageType:"DETAIL" + } }; }, - onLoad() { }, + onUnload() { + let param = this.actionParam; + if (this.sendOnShow)return + param.pageStatus = "LEAVE" + userAction(param) + }, + onHide() { + this.startHidenTime = Date.now() + let param = this.actionParam; + this.sendOnShow = true; + param.pageStatus = "LEAVE" + userAction(param) + }, + onLoad(options) { + this.actionParam.pageParams = JSON.stringify(options) + this.initCOS() + }, onShow() { + getSessionId().then(res=>{ + this.pageSessionNo = res.data.data + if(this.pageSessionNo){ + let param = this.actionParam; + param.sessionId = this.pageSessionNo + userAction(param) + } + }) this.userInfo = this.$options.filters.isLogin() || {}; if (this.$options.filters.isLogin("auth")) { this.getUserOrderNum(); @@ -158,6 +223,21 @@ mounted() { }, methods: { + // goTOSuccess(){ + // uni.redirectTo({ + // url:"/pages/cart/payment/success?paymentMethod=WECHAT" + + // "&payPrice=" + + // 10, + // }); + // }, + // 鍒濆鍖栬吘璁簯cos瀹㈡埛绔� + initCOS() { + // 璋冪敤鍚庣鑾峰彇sts涓存椂璁块棶鍑瘉 + getSTSToken().then(res => { + this.endpoint = res.data.data.endpoint + }) + }, + // 璺宠浆瑙嗛涓婚〉 jumpToVideoHome() { uni.navigateTo({ url: '/pages/video/home-page?authorId=' + storage.getUserInfo().id @@ -195,19 +275,91 @@ </script> <style lang="scss" scoped> + @import url("/pages/subComponents/static/bgStyle.css"); html, body { overflow: auto; } + +.member-gradient-bg { + width: 98%; + height: 250rpx; + margin: 1% 1%; + background: linear-gradient(135deg, #FF7A45 0%, #FF5252 100%); + border-radius: 24rpx; + box-shadow: 0 8rpx 30rpx rgba(255, 82, 82, 0.3); + transition: all 0.3s ease; + + &:active { + transform: scale(0.98); + } +} +/* 鍐呭鍖哄煙 */ +.member-content { + width: 100%; + height: 100%; + display: flex; + align-items: center; + padding: 0 40rpx; + box-sizing: border-box; +} +/* 浼氬憳淇℃伅 */ +.vip-info { + flex: 1; + .vip-level { + font-size: 40rpx; + font-weight: bold; + color: #FFFFFF; + margin: 0; + line-height: 1; + text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1); + } + + .vip-validity { + font-size: 26rpx; + color: rgba(255, 255, 255, 0.9); + margin: 10rpx 0 0 0; + } +} + +/* 浼氬憳鍥炬爣 */ +.vip-icon { + width: 100rpx; + height: 100rpx; + margin-right: 30rpx; + display: flex; + align-items: center; + justify-content: center; + background-color: rgba(255, 255, 255, 0.2); + border-radius: 50%; +} + +.vip-icon image { + width: 60rpx; + height: 60rpx; +} +/* 鐗规潈鏍囪瘑 */ +.vip-badge { + padding: 8rpx 20rpx; + background-color: rgba(255, 215, 0, 0.9); + border-radius: 30rpx; + box-shadow: 0 3rpx 6rpx rgba(0, 0, 0, 0.1); +} + +.badge-text { + font-size: 24rpx; + color: #E63946; + font-weight: 600; +} .money { overflow: hidden; - text-overflow: ellipsis; white-space: nowrap; } .user { + background: #e7e7e7; .header { max-width: 100%; padding: calc(50rpx + var(--status-bar-height)) 30rpx 0 6%; @@ -215,7 +367,7 @@ background-size: cover; border-bottom-left-radius: 30rpx; border-bottom-right-radius: 30rpx; - background-image: url("/static/img/main-bg.png"); + background-image: var(--main-bg); background-position: bottom; background-repeat: no-repeat; color: #ffffff; @@ -266,14 +418,6 @@ } } - .pointBox { - width: 94%; - margin: 0 3%; - background: #fff; - border-radius: 20rpx; - box-shadow: 0 4rpx 24rpx 0 rgba($color: #f6f6f6, $alpha: 1); - } - .point { text-align: center; height: 160rpx; @@ -305,8 +449,12 @@ justify-content: space-around; align-items: center; padding: 0 3%; - color: #999; - + color: #666; + background: #fff; + border-radius: 20rpx; + box-shadow: 0 4rpx 24rpx 0 #f6f6f6; + margin: 0 20rpx; + .order-item { position: relative; line-height: 2em; @@ -314,14 +462,20 @@ :first-child { font-size: 48rpx; - margin-bottom: 10rpx; + margin-bottom: 12rpx; + color: #333; } } } + } .box { - transform: translateY(-30rpx); + width: 95%; + margin: auto; + background: #fff; + border-radius: 20rpx; + box-shadow: 0 4rpx 24rpx 0 #f6f6f6; } .user-name { -- Gitblit v1.8.0