From d8c5c3a9190faf598ca4c7bf930402686c547acc Mon Sep 17 00:00:00 2001 From: zzc <1761997216@qq.com> Date: Tue, 10 Mar 2026 10:39:31 +0800 Subject: [PATCH] fix: user deduct point --- pages/avatar/index.vue | 59 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 4 deletions(-) diff --git a/pages/avatar/index.vue b/pages/avatar/index.vue index 093c13a..ee913ff 100644 --- a/pages/avatar/index.vue +++ b/pages/avatar/index.vue @@ -61,7 +61,16 @@ - + + 当前积分: + {{ userPoints }} + + @@ -226,6 +235,7 @@ const userStore = useUserStore(); const loginPopupRef = ref(null); const isLoggedIn = computed(() => !!userStore.userInfo.nickName); +const userPoints = computed(() => userStore.userInfo.points || 0); const systemAvatars = ref([]); const frames = ref([]); @@ -674,6 +684,7 @@ const saveAndUse = async () => { loginPopupRef.value.open(); return; } + const abilityRes = await abilityCheck("avatar_download"); if (!abilityRes.canUse) { if ( @@ -759,7 +770,6 @@ const completeCardInfo = async (id) => { }; onShareAppMessage(async (options) => { - getShareReward({ scene: "avatar_download" }); if (options.from === "button") { if (!isLoggedIn.value) { loginPopupRef.value.open(); @@ -771,6 +781,7 @@ onShareAppMessage(async (options) => { getShareToken("avatar_download", id), completeCardInfo(id), ]); + getShareReward({ scene: "avatar_download" }); uni.hideLoading(); return { title: "3 秒生成新春专属头像,真的好看😆", @@ -781,6 +792,7 @@ onShareAppMessage(async (options) => { }; } else { const shareToken = await getShareToken("avatar_download_not_login", ""); + getShareReward({ scene: "avatar_index" }); return { title: "3 秒生成新春专属头像,真的好看😆", path: `/pages/avatar/index?shareToken=${shareToken}`, @@ -1025,17 +1037,56 @@ onShareTimeline(async () => { display: flex; gap: 20rpx; margin-bottom: 30rpx; + position: relative; + + .points-display { + position: absolute; + top: -60rpx; + right: 30rpx; + background: rgba(255, 255, 255, 0.9); + padding: 8rpx 20rpx; + border-radius: 30rpx; + display: flex; + align-items: center; + box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05); + + .label { + font-size: 24rpx; + color: #666; + } + + .value { + font-size: 28rpx; + color: #ff3b30; + font-weight: bold; + margin-left: 4rpx; + } + } .btn { flex: 1; - height: 88rpx; + height: 96rpx; display: flex; align-items: center; justify-content: center; - border-radius: 44rpx; + border-radius: 48rpx; font-size: 30rpx; font-weight: bold; + .btn-content { + display: flex; + flex-direction: column; + align-items: center; + line-height: 1.2; + + .btn-sub { + font-size: 20rpx; + opacity: 0.8; + font-weight: normal; + margin-top: 2rpx; + } + } + &.primary { background: #ff3b30; color: #fff;