|
|
@@ -1,6 +1,6 @@
|
|
|
<template>
|
|
|
<view class="container">
|
|
|
- <!-- åŠ è½½çŠ¶æ€?-->
|
|
|
+ <!-- åŠ è½½çŠ¶æ€� -->
|
|
|
<BaseLoading :loading="loading" text="æ£åœ¨åŠ è½½..." />
|
|
|
|
|
|
<!-- 撒花庆� -->
|
|
|
@@ -12,25 +12,25 @@
|
|
|
:show="showOnboarding"
|
|
|
@close="showOnboarding = false" />
|
|
|
|
|
|
- <!-- 空状æ€?- æ— å©å?-->
|
|
|
+ <!-- 空状æ€� - æ— å©å� -->
|
|
|
<BaseEmpty
|
|
|
v-if="!loading && !hasChildren"
|
|
|
icon="🌈"
|
|
|
- title="欢迎�到知心益家�
|
|
|
- description="è®©çˆ¸çˆ¸å¦ˆå¦ˆå¸®ä½ æ·»åŠ ï¼Œå¼€å§‹å¿«ä¹�æˆ�长之æ—?
|
|
|
+ title="欢迎�到知心益家�"
|
|
|
+ description="è®©çˆ¸çˆ¸å¦ˆå¦ˆå¸®ä½ æ·»åŠ ï¼Œå¼€å§‹å¿«ä¹�æˆ�长之旅"
|
|
|
>
|
|
|
<template #action>
|
|
|
<PlayfulButton variant="clay" size="lg" @click="goToAddChild">
|
|
|
- âž?æ·»åŠ æˆ?
|
|
|
+ âž• æ·»åŠ æˆ‘
|
|
|
</PlayfulButton>
|
|
|
</template>
|
|
|
</BaseEmpty>
|
|
|
|
|
|
-<!-- ====== 主内容(有å©å�æ—¶ï¼?====== -->
|
|
|
+<!-- ====== 主内容(有å©å�时) ====== -->
|
|
|
<view class="main-content" v-if="!loading && hasChildren">
|
|
|
<!-- ===== A) 顶部 Banner ===== -->
|
|
|
<PageBanner theme="home"
|
|
|
- tagline="å®¶åºå�¥åº·æˆ�长俱ä¹�éƒ?
|
|
|
+ tagline="å®¶åºå�¥åº·æˆ�长俱ä¹�部"
|
|
|
quote="给全家的一站�幸��案" />
|
|
|
|
|
|
<!-- 五维能�沙盘 -->
|
|
|
@@ -63,12 +63,12 @@ hover-class="streak-pressed"
|
|
|
<text class="streak-fire">🔥</text>
|
|
|
<view class="streak-info">
|
|
|
<text class="streak-days">{{ streakDays }}</text>
|
|
|
-<text class="streak-unit">天��/text>
|
|
|
+<text class="streak-unit">天��</text>
|
|
|
</view>
|
|
|
</view>
|
|
|
|
|
|
<!-- ============================================================
|
|
|
-B) 积分å�¡ç‰‡ â€?Claymorphism æš–æ©™é»�åœŸé£Žæ ¼
|
|
|
+B) 积分å�¡ç‰‡ — Claymorphism æš–æ©™é»�åœŸé£Žæ ¼
|
|
|
============================================================ -->
|
|
|
<view
|
|
|
class="points-card animate-bounce-in"
|
|
|
@@ -92,10 +92,10 @@ B) 积分�片
|
|
|
|
|
|
<view class="points-progress">
|
|
|
<text class="progress-hint" v-if="pointsToNext > 0">
|
|
|
- 还差 <text class="progress-hint-num">{{ pointsToNext }}</text> 颗星星��{{ nextLevelName }}
|
|
|
+ 还差 <text class="progress-hint-num">{{ pointsToNext }}</text> 颗星星�到 {{ nextLevelName }}
|
|
|
</text>
|
|
|
<text class="progress-hint" v-else>
|
|
|
- 🎉 å·²ç»�是最高ç‰çº§å•¦ï¼?
|
|
|
+ 🎉 å·²ç»�是最高ç‰çº§å•¦ï¼�
|
|
|
</text>
|
|
|
<view class="progress-track">
|
|
|
<view
|
|
|
@@ -107,12 +107,12 @@ B) 积分�片
|
|
|
</view>
|
|
|
|
|
|
<!-- ============================================================
|
|
|
- C) 今日任务 ��水平滑动的�土�片
|
|
|
+ C) 今日任务 — �水平滑动的�土�片
|
|
|
============================================================ -->
|
|
|
<view class="tasks-section animate-slide-up animate-stagger-3">
|
|
|
<view class="section-header">
|
|
|
<text class="section-title">📋 今日任务</text>
|
|
|
- <text class="section-link" @click="goToTasks">查看全部 �/text>
|
|
|
+ <text class="section-link" @click="goToTasks">查看全部 →</text>
|
|
|
</view>
|
|
|
|
|
|
<scroll-view
|
|
|
@@ -134,7 +134,7 @@ B) 积分�片
|
|
|
<text class="task-card-icon">{{ getTaskIcon(task) }}</text>
|
|
|
</view>
|
|
|
<text class="task-card-name">{{ task.title }}</text>
|
|
|
- <text class="task-card-points" v-if="task.points">+{{ task.points }}â?/text>
|
|
|
+ <text class="task-card-points" v-if="task.points">+{{ task.points }}â�</text>
|
|
|
<view class="task-card-badge">
|
|
|
<BaseBadge :variant="getBadgeVariant(task)" size="xs">
|
|
|
{{ getStatusText(task) }}
|
|
|
@@ -143,16 +143,16 @@ B) 积分�片
|
|
|
</view>
|
|
|
</scroll-view>
|
|
|
|
|
|
- <!-- 今日任务空状�-->
|
|
|
+ <!-- 今日任务空状� -->
|
|
|
<view class="tasks-empty" v-else @click="goToTasks">
|
|
|
<view class="tasks-empty-icon">🎯</view>
|
|
|
- <text class="tasks-empty-title">今天没有任务�/text>
|
|
|
- <text class="tasks-empty-desc">è®©çˆ¸çˆ¸å¦ˆå¦ˆç»™ä½ å¸ƒç½®ä»»åŠ¡å�§ï½?/text>
|
|
|
+ <text class="tasks-empty-title">今天没有任务哦</text>
|
|
|
+ <text class="tasks-empty-desc">è®©çˆ¸çˆ¸å¦ˆå¦ˆç»™ä½ å¸ƒç½®ä»»åŠ¡å�§ï½ž</text>
|
|
|
</view>
|
|
|
</view>
|
|
|
|
|
|
<!-- ============================================================
|
|
|
- D) å¿«æ�·æ“�作 â€?2×2 é»�åœŸæŒ‰é’®ç½‘æ ¼
|
|
|
+ D) å¿«æ�·æ“�作 — 2×2 é»�åœŸæŒ‰é’®ç½‘æ ¼
|
|
|
============================================================ -->
|
|
|
<view class="quick-section animate-slide-up animate-stagger-4">
|
|
|
<view class="section-header">
|
|
|
@@ -176,7 +176,7 @@ B) 积分�片
|
|
|
hover-class="quick-btn-pressed"
|
|
|
>
|
|
|
<view class="quick-btn-icon quick-icon--rewards">
|
|
|
- <text class="quick-emoji">â?/text>
|
|
|
+ <text class="quick-emoji">â�</text>
|
|
|
</view>
|
|
|
<text class="quick-btn-label">心愿商城</text>
|
|
|
</view>
|
|
|
@@ -200,20 +200,20 @@ B) 积分�片
|
|
|
<view class="quick-btn-icon quick-icon--games">
|
|
|
<text class="quick-emoji">🎮</text>
|
|
|
</view>
|
|
|
- <text class="quick-btn-label">�游�/text>
|
|
|
+ <text class="quick-btn-label">�游�</text>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
|
|
|
<!-- ============================================================
|
|
|
- E) 最近æˆ�å°?â€?水平滚动徽ç«
|
|
|
+ E) 最近æˆ�å°± — 水平滚动徽ç«
|
|
|
============================================================ -->
|
|
|
<view
|
|
|
class="achievement-section animate-slide-up animate-stagger-5"
|
|
|
v-if="earnedBadges.length > 0"
|
|
|
>
|
|
|
<view class="section-header">
|
|
|
- <text class="section-title">� 最近��/text>
|
|
|
+ <text class="section-title">� 最近�就</text>
|
|
|
</view>
|
|
|
<scroll-view
|
|
|
class="achievement-scroll"
|
|
|
@@ -248,17 +248,17 @@ B) 积分�片
|
|
|
</view>
|
|
|
|
|
|
<!-- ============================================================
|
|
|
- F) 最近能���
|
|
|
+ F) 最近能��动
|
|
|
============================================================ -->
|
|
|
<view class="energy-log-section animate-slide-up animate-stagger-6" v-if="energyLogs.length > 0">
|
|
|
<view class="section-header">
|
|
|
- <text class="section-title">💧 最近能���/text>
|
|
|
- <text class="section-link" @click="goToEnergyDetail">查看详情 �/text>
|
|
|
+ <text class="section-title">💧 最近能��动</text>
|
|
|
+ <text class="section-link" @click="goToEnergyDetail">查看详情 →</text>
|
|
|
</view>
|
|
|
<view class="energy-log-list">
|
|
|
<view class="energy-log-item" v-for="log in energyLogs" :key="log.id">
|
|
|
<view class="log-icon-wrap" :class="'log-icon--' + ((log.amount || 0) >= 0 ? 'up' : 'down')">
|
|
|
- <text class="log-icon">{{ (log.amount || 0) >= 0 ? '� : '� }}</text>
|
|
|
+ <text class="log-icon">{{ (log.amount || 0) >= 0 ? '⬆' : '⬇' }}</text>
|
|
|
</view>
|
|
|
<view class="log-info">
|
|
|
<text class="log-title">{{ log.reason || log.description }}</text>
|
|
|
@@ -271,7 +271,7 @@ B) 积分�片
|
|
|
</view>
|
|
|
</view>
|
|
|
|
|
|
- <!-- ===== 推�商�+活动(混�信���===== -->
|
|
|
+ <!-- ===== 推�商�+活动(混�信��) ===== -->
|
|
|
<RecommendedFeed
|
|
|
v-if="hasChildren"
|
|
|
:products="dimensionProducts"
|
|
|
@@ -300,27 +300,27 @@ import OnboardingGuide from '../../components/OnboardingGuide.vue'
|
|
|
import ConfettiCelebration from '../../components/ConfettiCelebration.vue'
|
|
|
|
|
|
/**
|
|
|
- * ç‰çº§é…�ç½®è¡?
|
|
|
- * 星星��(0) �月亮�朋�200) �太阳�天�500) �宇宙�英�1000)
|
|
|
+ * ç‰çº§é…�置表
|
|
|
+ * 星星��(0) → 月亮�朋�(200) → 太阳�天使(500) → 宇宙�英雄(1000)
|
|
|
*/
|
|
|
var LEVELS = [
|
|
|
- { min: 0, max: 200, name: '星星å®�å®�', nextName: '月亮å°�朋å�?, emoji: 'â? },
|
|
|
- { min: 200, max: 500, name: '月亮�朋�, nextName: '太阳�天�, emoji: '🌙' },
|
|
|
- { min: 500, max: 1000, name: '太阳�天�, nextName: '宇宙�英�, emoji: '☀� },
|
|
|
- { min: 1000, max: Infinity, name: '宇宙�英�, nextName: '👑 MAX', emoji: '🦸' }
|
|
|
+ { min: 0, max: 200, name: '星星å®�å®�', nextName: '月亮å°�朋å�‹', emoji: 'â�' },
|
|
|
+ { min: 200, max: 500, name: '月亮�朋�', nextName: '太阳�天使', emoji: '🌙' },
|
|
|
+ { min: 500, max: 1000, name: '太阳�天使', nextName: '宇宙�英雄', emoji: '☀�' },
|
|
|
+ { min: 1000, max: Infinity, name: '宇宙�英雄', nextName: '👑 MAX', emoji: '🦸' }
|
|
|
]
|
|
|
|
|
|
/**
|
|
|
- * 任务分类 â†?å›¾æ ‡æ˜ å°„
|
|
|
+ * 任务分类 → å›¾æ ‡æ˜ å°„
|
|
|
*/
|
|
|
var TASK_ICONS = {
|
|
|
- 'å¦ä¹ ç±?: '📚',
|
|
|
- '阅读�: '📖',
|
|
|
- '生活ç±?: 'ðŸ� ',
|
|
|
- '�动�: '�,
|
|
|
- '家务�: '🧹',
|
|
|
- '艺术�: '🎨',
|
|
|
- 'å…¶ä»–': 'â?
|
|
|
+ 'å¦ä¹ ç±»': '📚',
|
|
|
+ '阅读类': '📖',
|
|
|
+ '生活类': 'ðŸ� ',
|
|
|
+ '�动类': '⚽',
|
|
|
+ '家务类': '🧹',
|
|
|
+ '艺术类': '🎨',
|
|
|
+ 'å…¶ä»–': 'â�'
|
|
|
}
|
|
|
|
|
|
export default {
|
|
|
@@ -350,11 +350,11 @@ export default {
|
|
|
totalTaskCount: 0,
|
|
|
todayTasks: [],
|
|
|
badges: [
|
|
|
- { id: 1, icon: '🌟', name: '早起�, unlocked: false },
|
|
|
- { id: 2, icon: '📚', name: '阅读�达�, unlocked: false },
|
|
|
+ { id: 1, icon: '🌟', name: '早起鸟', unlocked: false },
|
|
|
+ { id: 2, icon: '📚', name: '阅读�达人', unlocked: false },
|
|
|
{ id: 3, icon: '�', name: '�动�将', unlocked: false },
|
|
|
{ id: 4, icon: '🎨', name: '�艺术家', unlocked: false },
|
|
|
- { id: 5, icon: '🧹', name: '家务�能�, unlocked: false }
|
|
|
+ { id: 5, icon: '🧹', name: '家务�能手', unlocked: false }
|
|
|
],
|
|
|
_mounted: false,
|
|
|
energyDimensions: [],
|
|
|
@@ -438,11 +438,11 @@ export default {
|
|
|
const hour = new Date().getHours()
|
|
|
if (hour < 6) return '🌛 夜深了,还没�呀'
|
|
|
if (hour < 9) return '🌅 早安�新的一天开始啦'
|
|
|
- if (hour < 12) return '☀ï¸?上å�ˆå¥½ï¼�今天也è¦�åŠ æ²¹å“?
|
|
|
- if (hour < 14) return '🌤ï¸?ä¸å�ˆå¥½ï¼�å�ƒé¥±äº†æ‰�有力æ°?
|
|
|
- if (hour < 18) return '🌻 下å�ˆå¥½ï¼�ç»§ç»ä¿�æŒ�好状æ€?
|
|
|
+ if (hour < 12) return '☀ï¸� 上å�ˆå¥½ï¼�今天也è¦�åŠ æ²¹å“¦'
|
|
|
+ if (hour < 14) return '🌤ï¸� ä¸å�ˆå¥½ï¼�å�ƒé¥±äº†æ‰�有力气'
|
|
|
+ if (hour < 18) return '🌻 下å�ˆå¥½ï¼�ç»§ç»ä¿�æŒ�好状æ€�'
|
|
|
if (hour < 21) return '🌆 晚上好�今天过得开心�'
|
|
|
- return '🌛 该休æ�¯å•¦ï¼Œæ˜Žå¤©ç»§ç»åŠ æ²?
|
|
|
+ return '🌛 该休æ�¯å•¦ï¼Œæ˜Žå¤©ç»§ç»åŠ æ²¹'
|
|
|
},
|
|
|
|
|
|
// ---------- æˆ�å°±å¾½ç« ----------
|
|
|
@@ -478,7 +478,7 @@ export default {
|
|
|
uni.switchTab({ url: '/pages/home/index' })
|
|
|
return
|
|
|
}
|
|
|
- this.nickname = (userInfo && userInfo.nickname) ? userInfo.nickname : '�朋�
|
|
|
+ this.nickname = (userInfo && userInfo.nickname) ? userInfo.nickname : '�朋�'
|
|
|
|
|
|
const childrenRes = await getChildren()
|
|
|
const children = childrenRes.data || []
|
|
|
@@ -507,28 +507,28 @@ export default {
|
|
|
this.unlockBadge(2)
|
|
|
}
|
|
|
|
|
|
- // 按类别统计已完�任务次数,解�对应徽�
|
|
|
- var categoryCompletedCount = { '�动�: 0, '艺术�: 0, '家务�: 0 }
|
|
|
+ // 按类别统计已完æˆ�任务次数,解é”�对应徽ç«
|
|
|
+ var categoryCompletedCount = { '�动类': 0, '艺术类': 0, '家务类': 0 }
|
|
|
for (var i = 0; i < rawTasks.length; i++) {
|
|
|
var task = rawTasks[i]
|
|
|
if (task.status === 'completed') {
|
|
|
var cat = task.category || 'å…¶ä»–'
|
|
|
- if (cat === '�动�) {
|
|
|
- categoryCompletedCount['�动�]++
|
|
|
- } else if (cat === '艺术�) {
|
|
|
- categoryCompletedCount['艺术�]++
|
|
|
- } else if (cat === '家务�) {
|
|
|
- categoryCompletedCount['家务�]++
|
|
|
+ if (cat === '�动类') {
|
|
|
+ categoryCompletedCount['�动类']++
|
|
|
+ } else if (cat === '艺术类') {
|
|
|
+ categoryCompletedCount['艺术类']++
|
|
|
+ } else if (cat === '家务类') {
|
|
|
+ categoryCompletedCount['家务类']++
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if (categoryCompletedCount['�动�] >= 5) {
|
|
|
+ if (categoryCompletedCount['�动类'] >= 5) {
|
|
|
this.unlockBadge(3)
|
|
|
}
|
|
|
- if (categoryCompletedCount['艺术�] >= 5) {
|
|
|
+ if (categoryCompletedCount['艺术类'] >= 5) {
|
|
|
this.unlockBadge(4)
|
|
|
}
|
|
|
- if (categoryCompletedCount['家务�] >= 5) {
|
|
|
+ if (categoryCompletedCount['家务类'] >= 5) {
|
|
|
this.unlockBadge(5)
|
|
|
}
|
|
|
|
|
|
@@ -547,7 +547,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // åŠ è½½æœ€è¿‘èƒ½é‡�å�˜åŠ?
|
|
|
+ // åŠ è½½æœ€è¿‘èƒ½é‡�å�˜åЍ
|
|
|
if (energyChildId) {
|
|
|
try {
|
|
|
var logsRes = await getEnergyLogs(energyChildId, '', 1, 5)
|
|
|
@@ -636,7 +636,7 @@ export default {
|
|
|
},
|
|
|
showStreakDetail() {
|
|
|
this.$emit('navigate', { page: 'streak-detail' })
|
|
|
- uni.showToast({ title: 'è¿žç»æ‰“å�¡ ' + this.streakDays + ' 天啦ï¼�太棒了ï¼?, icon: 'none' })
|
|
|
+ uni.showToast({ title: 'è¿žç»æ‰“å�¡ ' + this.streakDays + ' 天啦ï¼�太棒了ï¼�', icon: 'none' })
|
|
|
},
|
|
|
goToEnergyDetail() {
|
|
|
if (this.childId) {
|
|
|
@@ -661,7 +661,7 @@ export default {
|
|
|
uni.showToast({ title: '�将上线', icon: 'none' })
|
|
|
},
|
|
|
goToEnergyDetail(code) {
|
|
|
- // 跳转到能�详情页(T10 创建�
|
|
|
+ // 跳转到能�详情页(T10 创建)
|
|
|
var childId = this.childId
|
|
|
if (!childId || !code) return
|
|
|
uni.navigateTo({
|
|
|
@@ -669,7 +669,7 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
|
|
|
- // ======================== 推�信��========================
|
|
|
+ // ======================== 推�信�� ========================
|
|
|
onFeedItemClick: function(item) {
|
|
|
if (item.type === 'product') {
|
|
|
uni.navigateTo({ url: '/pages/discover/product-detail/product-detail?id=' + item.id })
|
|
|
@@ -686,15 +686,15 @@ export default {
|
|
|
if (!task || !task.id) return
|
|
|
this.$emit('navigate', { page: 'task-detail', taskId: task.id })
|
|
|
|
|
|
- // 如果任务尚未完�,弹出确认完�
|
|
|
+ // 如果任务尚未完�,弹出确认完�
|
|
|
if (task.status !== 'completed' && task.status !== 'overdue') {
|
|
|
uni.showModal({
|
|
|
title: '完�任务',
|
|
|
- content: '确定完�� + task.title + '���,
|
|
|
+ content: '确定完�「' + task.title + '��?',
|
|
|
success: function(res) {
|
|
|
if (res.confirm) {
|
|
|
task.status = 'completed'
|
|
|
- // �新计算完��
|
|
|
+ // �新计算完�数
|
|
|
this.completedCount = this.todayTasks.filter(function(t) { return t.status === 'completed' }).length
|
|
|
if (task.points) {
|
|
|
uni.showToast({ title: '🎉 获得 ' + task.points + ' 颗星星�', icon: 'success' })
|
|
|
@@ -715,12 +715,12 @@ export default {
|
|
|
if (!task) return 'default'
|
|
|
var cat = task.category || 'å…¶ä»–'
|
|
|
var map = {
|
|
|
- 'å¦ä¹ ç±?: 'study',
|
|
|
- '阅读�: 'reading',
|
|
|
- '生活�: 'life',
|
|
|
- '�动�: 'sports',
|
|
|
- '家务�: 'chores',
|
|
|
- '艺术�: 'art'
|
|
|
+ 'å¦ä¹ ç±»': 'study',
|
|
|
+ '阅读类': 'reading',
|
|
|
+ '生活类': 'life',
|
|
|
+ '�动类': 'sports',
|
|
|
+ '家务类': 'chores',
|
|
|
+ '艺术类': 'art'
|
|
|
}
|
|
|
return map[cat] || 'default'
|
|
|
},
|
|
|
@@ -730,9 +730,9 @@ export default {
|
|
|
},
|
|
|
getStatusText(task) {
|
|
|
var status = this.getTaskStatus(task)
|
|
|
- if (status === 'completed') return '�已完�
|
|
|
- if (status === 'overdue') return '�已超�
|
|
|
- return '�待完�
|
|
|
+ if (status === 'completed') return '✅ 已完�'
|
|
|
+ if (status === 'overdue') return '� 已超时'
|
|
|
+ return '� 待完�'
|
|
|
},
|
|
|
getBadgeVariant(task) {
|
|
|
var status = this.getTaskStatus(task)
|
|
|
@@ -749,7 +749,7 @@ export default {
|
|
|
|
|
|
<style scoped>
|
|
|
/* ============================================================
|
|
|
- 知心益家 â€?å©å�端首é¡?Flat Rounded 设计系统
|
|
|
+ 知心益家 — å©å�端首页 Flat Rounded 设计系统
|
|
|
色彩体系:�牌�(#5B9BD5)+浅�(#8FC5E8) | ��阴影 | 4rpx边框
|
|
|
�考:uni.scss --color-primary, --bg, --shadow-clay, --radius-md
|
|
|
============================================================ */
|
|
|
@@ -771,7 +771,7 @@ export default {
|
|
|
height: 48rpx;
|
|
|
}
|
|
|
|
|
|
-/* è¿žç»æ‰“å�¡å¾½ç« â€?独立è¡?*/
|
|
|
+/* è¿žç»æ‰“å�¡å¾½ç« — 独立行 */
|
|
|
.streak-badge-wrap {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
@@ -825,7 +825,7 @@ padding-top: 4rpx;
|
|
|
}
|
|
|
|
|
|
/* ----------------------------------------------------------
|
|
|
- 积分�片 �Flat Rounded �色��
|
|
|
+ 积分�片 — Flat Rounded �色��
|
|
|
---------------------------------------------------------- */
|
|
|
.points-card {
|
|
|
position: relative;
|
|
|
@@ -847,7 +847,7 @@ padding-top: 4rpx;
|
|
|
4rpx 4rpx 16rpx rgba(91,155,213,0.18);
|
|
|
}
|
|
|
|
|
|
-/* 装饰�*/
|
|
|
+/* 装饰圆 */
|
|
|
.points-deco {
|
|
|
position: absolute;
|
|
|
border-radius: 50%;
|
|
|
@@ -921,7 +921,7 @@ padding-top: 4rpx;
|
|
|
margin-top: 4rpx;
|
|
|
}
|
|
|
|
|
|
-/* 进度�*/
|
|
|
+/* 进度� */
|
|
|
.points-progress {
|
|
|
position: relative;
|
|
|
z-index: 1;
|
|
|
@@ -956,7 +956,7 @@ padding-top: 4rpx;
|
|
|
}
|
|
|
|
|
|
/* ----------------------------------------------------------
|
|
|
- 任务区域 �水平滚动�土�片
|
|
|
+ 任务区域 — 水平滚动�土�片
|
|
|
---------------------------------------------------------- */
|
|
|
.tasks-section {
|
|
|
margin-bottom: 28rpx;
|
|
|
@@ -1075,7 +1075,7 @@ padding-top: 4rpx;
|
|
|
min-height: 36rpx;
|
|
|
}
|
|
|
|
|
|
-/* 任务空状�*/
|
|
|
+/* 任务空状� */
|
|
|
.tasks-empty {
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
@@ -1111,7 +1111,7 @@ padding-top: 4rpx;
|
|
|
}
|
|
|
|
|
|
/* ----------------------------------------------------------
|
|
|
- å¿«æ�·æ“�作 â€?2×2 é»�åœŸæŒ‰é’®ç½‘æ ¼
|
|
|
+ å¿«æ�·æ“�作 — 2×2 é»�åœŸæŒ‰é’®ç½‘æ ¼
|
|
|
---------------------------------------------------------- */
|
|
|
.quick-section {
|
|
|
margin-bottom: 28rpx;
|
|
|
@@ -1167,7 +1167,7 @@ padding-top: 4rpx;
|
|
|
line-height: 1;
|
|
|
}
|
|
|
|
|
|
-/* å�„æŒ‰é’®å›¾æ ‡è‰²å½?*/
|
|
|
+/* å�„æŒ‰é’®å›¾æ ‡è‰²å½© */
|
|
|
.quick-icon--tasks { background: rgba(14,165,233,0.15); border-color: #BAE6FD; }
|
|
|
.quick-icon--rewards { background: rgba(245,158,11,0.15); border-color: #FDE68A; }
|
|
|
.quick-icon--growth { background: rgba(91,155,213,0.15); border-color: #CBD5E1; }
|
|
|
@@ -1180,7 +1180,7 @@ padding-top: 4rpx;
|
|
|
}
|
|
|
|
|
|
/* ----------------------------------------------------------
|
|
|
- æˆ�就区域 â€?水平滚动徽ç«
|
|
|
+ æˆ�就区域 — 水平滚动徽ç«
|
|
|
---------------------------------------------------------- */
|
|
|
.achievement-section {
|
|
|
margin-bottom: 28rpx;
|
|
|
@@ -1292,12 +1292,12 @@ padding-top: 4rpx;
|
|
|
.log-amount--up { color: #10B981; }
|
|
|
.log-amount--down { color: #EF4444; }
|
|
|
|
|
|
-/* è¿žç»æ‰“å�¡å¾½ç« 的浮动动ç”?â€?使用 uni.scss 全局 float keyframe */
|
|
|
+/* è¿žç»æ‰“å�¡å¾½ç« 的浮动动画 — 使用 uni.scss 全局 float keyframe */
|
|
|
.streak-badge {
|
|
|
animation: float 3s ease-in-out infinite;
|
|
|
}
|
|
|
|
|
|
-/* ç‰çº§æ ‡ç¾çš„金色光æ™?â€?使用 uni.scss 全局 pulseGlow keyframe */
|
|
|
+/* ç‰çº§æ ‡ç¾çš„金色光晕 — 使用 uni.scss 全局 pulseGlow keyframe */
|
|
|
.points-level-tag {
|
|
|
animation: pulseGlow 2.5s ease-in-out infinite;
|
|
|
}
|