|
@@ -1,228 +1,222 @@
|
|
|
-<template>
|
|
|
|
|
|
|
+<template>
|
|
|
<view class="container">
|
|
<view class="container">
|
|
|
<view v-if="!isLoggedIn">
|
|
<view v-if="!isLoggedIn">
|
|
|
- <PageBanner theme="action" tagline="干预 · 记录 · 成长" quote="知行合一,每天进步一点点" />
|
|
|
|
|
- <!-- 品牌定位语 -->
|
|
|
|
|
- <view class="brand-strap"><text class="brand-strap-text">看见改变正在发生</text></view>
|
|
|
|
|
- <!-- 理念卡 -->
|
|
|
|
|
|
|
+ <PageBanner theme="action" tagline="骞查 路 璁板綍 路 鎴愰暱" quote="鐭ヨ鍚堜竴锛屾瘡澶╄繘姝ヤ竴鐐圭偣" />
|
|
|
|
|
+ <!-- 鍝佺墝瀹氫綅璇?-->
|
|
|
|
|
+ <view class="brand-strap"><text class="brand-strap-text">鐪嬭鏀瑰彉姝e湪鍙戠敓</text></view>
|
|
|
|
|
+ <!-- 鐞嗗康鍗?-->
|
|
|
<view class="concept-card">
|
|
<view class="concept-card">
|
|
|
- <text class="concept-quote">记录不是目的,看见改变才是。</text>
|
|
|
|
|
- <text class="concept-desc">每一份饮食、运动、心情的记录,都在为成长提供依据。</text>
|
|
|
|
|
|
|
+ <text class="concept-quote">璁板綍涓嶆槸鐩殑锛岀湅瑙佹敼鍙樻墠鏄€?/text>
|
|
|
|
|
+ <text class="concept-desc">姣忎竴浠介ギ椋熴€佽繍鍔ㄣ€佸績鎯呯殑璁板綍锛岄兘鍦ㄤ负鎴愰暱鎻愪緵渚濇嵁銆?/text>
|
|
|
</view>
|
|
</view>
|
|
|
- <!-- 示例案例 -->
|
|
|
|
|
|
|
+ <!-- 绀轰緥妗堜緥 -->
|
|
|
<view class="case-card">
|
|
<view class="case-card">
|
|
|
<view class="case-header">
|
|
<view class="case-header">
|
|
|
- <text class="case-label">📖 真实案例(脱敏)</text>
|
|
|
|
|
|
|
+ <text class="case-label">馃摉 鐪熷疄妗堜緥锛堣劚鏁忥級</text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="case-body">
|
|
<view class="case-body">
|
|
|
- <text class="case-name">小明(10岁,体校生)</text>
|
|
|
|
|
- <text class="case-change">3个月干预前后:</text>
|
|
|
|
|
|
|
+ <text class="case-name">灏忔槑锛?0宀侊紝浣撴牎鐢燂級</text>
|
|
|
|
|
+ <text class="case-change">3涓湀骞查鍓嶅悗锛?/text>
|
|
|
<view class="case-metrics">
|
|
<view class="case-metrics">
|
|
|
<view class="metric-item">
|
|
<view class="metric-item">
|
|
|
- <text class="metric-up">↑ 5分</text>
|
|
|
|
|
- <text class="metric-label">身维度</text>
|
|
|
|
|
|
|
+ <text class="metric-up">鈫?5鍒?/text>
|
|
|
|
|
+ <text class="metric-label">韬淮搴?/text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="metric-item">
|
|
<view class="metric-item">
|
|
|
- <text class="metric-up">↑ 3分</text>
|
|
|
|
|
- <text class="metric-label">智维度</text>
|
|
|
|
|
|
|
+ <text class="metric-up">鈫?3鍒?/text>
|
|
|
|
|
+ <text class="metric-label">鏅虹淮搴?/text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="metric-item">
|
|
<view class="metric-item">
|
|
|
- <text class="metric-up">↑ 8天</text>
|
|
|
|
|
- <text class="metric-label">连续打卡</text>
|
|
|
|
|
|
|
+ <text class="metric-up">鈫?8澶?/text>
|
|
|
|
|
+ <text class="metric-label">杩炵画鎵撳崱</text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
- <text class="case-note">通过饮食记录 + 睡眠打卡,免疫力显著提升</text>
|
|
|
|
|
|
|
+ <text class="case-note">閫氳繃楗璁板綍 + 鐫$湢鎵撳崱锛屽厤鐤姏鏄捐憲鎻愬崌</text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
- <!-- 功能预览 -->
|
|
|
|
|
|
|
+ <!-- 鍔熻兘棰勮 -->
|
|
|
<view class="guest-features">
|
|
<view class="guest-features">
|
|
|
<view class="feat-card" @click="handleGuestFeatureTap">
|
|
<view class="feat-card" @click="handleGuestFeatureTap">
|
|
|
- <text class="feat-icon">✅</text>
|
|
|
|
|
- <text class="feat-title">每日打卡</text>
|
|
|
|
|
- <text class="feat-desc">饮食·运动·睡眠·心情</text>
|
|
|
|
|
|
|
+ <text class="feat-icon">鉁?/text>
|
|
|
|
|
+ <text class="feat-title">姣忔棩鎵撳崱</text>
|
|
|
|
|
+ <text class="feat-desc">楗路杩愬姩路鐫$湢路蹇冩儏</text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="feat-card" @click="handleGuestFeatureTap">
|
|
<view class="feat-card" @click="handleGuestFeatureTap">
|
|
|
- <text class="feat-icon">📋</text>
|
|
|
|
|
- <text class="feat-title">成长记录</text>
|
|
|
|
|
- <text class="feat-desc">每周家庭健康问卷</text>
|
|
|
|
|
|
|
+ <text class="feat-icon">馃搵</text>
|
|
|
|
|
+ <text class="feat-title">鎴愰暱璁板綍</text>
|
|
|
|
|
+ <text class="feat-desc">姣忓懆瀹跺涵鍋ュ悍闂嵎</text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="feat-card" @click="handleGuestFeatureTap">
|
|
<view class="feat-card" @click="handleGuestFeatureTap">
|
|
|
- <text class="feat-icon">🏆</text>
|
|
|
|
|
- <text class="feat-title">里程碑</text>
|
|
|
|
|
- <text class="feat-desc">连续打卡·挑战完成</text>
|
|
|
|
|
|
|
+ <text class="feat-icon">馃弳</text>
|
|
|
|
|
+ <text class="feat-title">閲岀▼纰?/text>
|
|
|
|
|
+ <text class="feat-desc">杩炵画鎵撳崱路鎸戞垬瀹屾垚</text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="feat-card" @click="handleGuestFeatureTap">
|
|
<view class="feat-card" @click="handleGuestFeatureTap">
|
|
|
- <text class="feat-icon">🎯</text>
|
|
|
|
|
- <text class="feat-title">家庭挑战</text>
|
|
|
|
|
- <text class="feat-desc">全家参与的互动任务</text>
|
|
|
|
|
|
|
+ <text class="feat-icon">馃幆</text>
|
|
|
|
|
+ <text class="feat-title">瀹跺涵鎸戞垬</text>
|
|
|
|
|
+ <text class="feat-desc">鍏ㄥ鍙備笌鐨勪簰鍔ㄤ换鍔?/text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
- <!-- 五维健康体系 -->
|
|
|
|
|
|
|
+ <!-- 浜旂淮鍋ュ悍浣撶郴 -->
|
|
|
<view class="wuxing-section">
|
|
<view class="wuxing-section">
|
|
|
- <view class="wuxing-title">身·心·智·行·富 · 可执行的成长闭环</view>
|
|
|
|
|
- <view class="wuxing-desc">五行相生相克,动起来、坚持做,让成长真正发生</view>
|
|
|
|
|
|
|
+ <view class="wuxing-title">韬峰績路鏅郝疯路瀵?路 鍙墽琛岀殑鎴愰暱闂幆</view>
|
|
|
|
|
+ <view class="wuxing-desc">浜旇鐩哥敓鐩稿厠锛屽姩璧锋潵銆佸潥鎸佸仛锛岃鎴愰暱鐪熸鍙戠敓</view>
|
|
|
<view class="wuxing-relations">
|
|
<view class="wuxing-relations">
|
|
|
<view class="rel-group">
|
|
<view class="rel-group">
|
|
|
- <text class="rel-title">相生 → 系统前进</text>
|
|
|
|
|
|
|
+ <text class="rel-title">鐩哥敓 鈫?绯荤粺鍓嶈繘</text>
|
|
|
<view class="rel-chain">
|
|
<view class="rel-chain">
|
|
|
- <text class="rel-item">🌏 身</text><text class="rel-arrow">→</text>
|
|
|
|
|
- <text class="rel-item">⚡ 智</text><text class="rel-arrow">→</text>
|
|
|
|
|
- <text class="rel-item">💧 富</text><text class="rel-arrow">→</text>
|
|
|
|
|
- <text class="rel-item">🌿 行</text><text class="rel-arrow">→</text>
|
|
|
|
|
- <text class="rel-item">🔥 心</text><text class="rel-arrow">→</text>
|
|
|
|
|
- <text class="rel-item">🌏 身</text>
|
|
|
|
|
|
|
+ <text class="rel-item">馃審 韬?/text><text class="rel-arrow">鈫?/text>
|
|
|
|
|
+ <text class="rel-item">鈿?鏅?/text><text class="rel-arrow">鈫?/text>
|
|
|
|
|
+ <text class="rel-item">馃挧 瀵?/text><text class="rel-arrow">鈫?/text>
|
|
|
|
|
+ <text class="rel-item">馃尶 琛?/text><text class="rel-arrow">鈫?/text>
|
|
|
|
|
+ <text class="rel-item">馃敟 蹇?/text><text class="rel-arrow">鈫?/text>
|
|
|
|
|
+ <text class="rel-item">馃審 韬?/text>
|
|
|
</view>
|
|
</view>
|
|
|
- <text class="rel-hint">身勤则强,智勤则开,富勤则聚,行勤则和,心勤则安</text>
|
|
|
|
|
|
|
+ <text class="rel-hint">韬嫟鍒欏己锛屾櫤鍕ゅ垯寮€锛屽瘜鍕ゅ垯鑱氾紝琛屽嫟鍒欏拰锛屽績鍕ゅ垯瀹?/text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="rel-group">
|
|
<view class="rel-group">
|
|
|
- <text class="rel-title">相克 → 系统平衡</text>
|
|
|
|
|
|
|
+ <text class="rel-title">鐩稿厠 鈫?绯荤粺骞宠 </text>
|
|
|
<view class="rel-chain">
|
|
<view class="rel-chain">
|
|
|
- <text class="rel-item">🌏 身</text><text class="rel-op">克</text><text class="rel-item">💧 富</text><text class="rel-dot">·</text>
|
|
|
|
|
- <text class="rel-item">⚡ 智</text><text class="rel-op">克</text><text class="rel-item">🌿 行</text><text class="rel-dot">·</text>
|
|
|
|
|
- <text class="rel-item">💧 富</text><text class="rel-op">克</text><text class="rel-item">🔥 心</text><text class="rel-dot">·</text>
|
|
|
|
|
- <text class="rel-item">🌿 行</text><text class="rel-op">克</text><text class="rel-item">🌏 身</text><text class="rel-dot">·</text>
|
|
|
|
|
- <text class="rel-item">🔥 心</text><text class="rel-op">克</text><text class="rel-item">⚡ 智</text>
|
|
|
|
|
|
|
+ <text class="rel-item">馃審 韬?/text><text class="rel-op">鍏?/text><text class="rel-item">馃挧 瀵?/text><text class="rel-dot">路</text>
|
|
|
|
|
+ <text class="rel-item">鈿?鏅?/text><text class="rel-op">鍏?/text><text class="rel-item">馃尶 琛?/text><text class="rel-dot">路</text>
|
|
|
|
|
+ <text class="rel-item">馃挧 瀵?/text><text class="rel-op">鍏?/text><text class="rel-item">馃敟 蹇?/text><text class="rel-dot">路</text>
|
|
|
|
|
+ <text class="rel-item">馃尶 琛?/text><text class="rel-op">鍏?/text><text class="rel-item">馃審 韬?/text><text class="rel-dot">路</text>
|
|
|
|
|
+ <text class="rel-item">馃敟 蹇?/text><text class="rel-op">鍏?/text><text class="rel-item">鈿?鏅?/text>
|
|
|
</view>
|
|
</view>
|
|
|
- <text class="rel-hint">不拿身体换快钱,不算计关系得失,财富服务家庭,关爱有度、不溺爱越界</text>
|
|
|
|
|
|
|
+ <text class="rel-hint">涓嶆嬁韬綋鎹㈠揩閽憋紝涓嶇畻璁″叧绯诲緱澶憋紝璐㈠瘜鏈嶅姟瀹跺涵锛屽叧鐖辨湁搴︺€佷笉婧虹埍瓒婄晫</text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="wuxing-cards">
|
|
<view class="wuxing-cards">
|
|
|
<view class="wc-card wc-body" @click="goPage('/pages/body-detail/index')">
|
|
<view class="wc-card wc-body" @click="goPage('/pages/body-detail/index')">
|
|
|
- <text class="wc-icon">🌏</text>
|
|
|
|
|
|
|
+ <text class="wc-icon">馃審</text>
|
|
|
<view class="wc-info">
|
|
<view class="wc-info">
|
|
|
- <text class="wc-name">身 · 主动健康</text>
|
|
|
|
|
- <text class="wc-text">每天动一动、睡得香,身体状态看得见地变好</text>
|
|
|
|
|
|
|
+ <text class="wc-name">韬?路 涓诲姩鍋ュ悍</text>
|
|
|
|
|
+ <text class="wc-text">姣忓ぉ鍔ㄤ竴鍔ㄣ€佺潯寰楅锛岃韩浣撶姸鎬佺湅寰楄鍦板彉濂?/text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="wc-card wc-wisdom" @click="goPage('/pages/wisdom-detail/index')">
|
|
<view class="wc-card wc-wisdom" @click="goPage('/pages/wisdom-detail/index')">
|
|
|
- <text class="wc-icon">⚡</text>
|
|
|
|
|
|
|
+ <text class="wc-icon">鈿?/text>
|
|
|
<view class="wc-info">
|
|
<view class="wc-info">
|
|
|
- <text class="wc-name">智 · 赋能未来</text>
|
|
|
|
|
- <text class="wc-text">每天读几页、练一会专注,智慧是练出来的</text>
|
|
|
|
|
|
|
+ <text class="wc-name">鏅?路 璧嬭兘鏈潵</text>
|
|
|
|
|
+ <text class="wc-text">姣忓ぉ璇诲嚑椤点€佺粌涓€浼氫笓娉紝鏅烘収鏄粌鍑烘潵鐨?/text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="wc-card wc-wealth" @click="goPage('/pages/wealth/index')">
|
|
<view class="wc-card wc-wealth" @click="goPage('/pages/wealth/index')">
|
|
|
- <text class="wc-icon">💧</text>
|
|
|
|
|
|
|
+ <text class="wc-icon">馃挧</text>
|
|
|
<view class="wc-info">
|
|
<view class="wc-info">
|
|
|
- <text class="wc-name">富 · 利他创富</text>
|
|
|
|
|
- <text class="wc-text">坚持分享与积累,把第二收入曲线做出来</text>
|
|
|
|
|
|
|
+ <text class="wc-name">瀵?路 鍒╀粬鍒涘瘜</text>
|
|
|
|
|
+ <text class="wc-text">鍧氭寔鍒嗕韩涓庣Н绱紝鎶婄浜屾敹鍏ユ洸绾垮仛鍑烘潵</text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="wc-card wc-action" @click="goPage('/pages/action-detail/member-action-detail')">
|
|
<view class="wc-card wc-action" @click="goPage('/pages/action-detail/member-action-detail')">
|
|
|
- <text class="wc-icon">🌿</text>
|
|
|
|
|
|
|
+ <text class="wc-icon">馃尶</text>
|
|
|
<view class="wc-info">
|
|
<view class="wc-info">
|
|
|
- <text class="wc-name">行 · 人际和谐</text>
|
|
|
|
|
- <text class="wc-text">从一次倾听开始,让家庭关系每天升温</text>
|
|
|
|
|
|
|
+ <text class="wc-name">琛?路 浜洪檯鍜岃皭</text>
|
|
|
|
|
+ <text class="wc-text">浠庝竴娆″€惧惉寮€濮嬶紝璁╁搴叧绯绘瘡澶╁崌娓?/text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="wc-card wc-mind" @click="goPage('/pages/mind-detail/index')">
|
|
<view class="wc-card wc-mind" @click="goPage('/pages/mind-detail/index')">
|
|
|
- <text class="wc-icon">🔥</text>
|
|
|
|
|
|
|
+ <text class="wc-icon">馃敟</text>
|
|
|
<view class="wc-info">
|
|
<view class="wc-info">
|
|
|
- <text class="wc-name">心 · 大爱相随</text>
|
|
|
|
|
- <text class="wc-text">每天留 10 分钟说说话,把家人的心事接住</text>
|
|
|
|
|
|
|
+ <text class="wc-name">蹇?路 澶х埍鐩搁殢</text>
|
|
|
|
|
+ <text class="wc-text">姣忓ぉ鐣?10 鍒嗛挓璇磋璇濓紝鎶婂浜虹殑蹇冧簨鎺ヤ綇</text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
- <!-- 登录引导 -->
|
|
|
|
|
|
|
+ <!-- 鐧诲綍寮曞 -->
|
|
|
<view class="login-guide-section">
|
|
<view class="login-guide-section">
|
|
|
<LoginGuideCard
|
|
<LoginGuideCard
|
|
|
- title="解锁完整成长档案"
|
|
|
|
|
|
|
+ title="瑙i攣瀹屾暣鎴愰暱妗f"
|
|
|
:items="[
|
|
:items="[
|
|
|
- '查看干预进度与追踪记录',
|
|
|
|
|
- '完成每日打卡累积连续记录',
|
|
|
|
|
- '参与家庭挑战获得里程碑奖励'
|
|
|
|
|
|
|
+ '鏌ョ湅骞查杩涘害涓庤拷韪褰?,
|
|
|
|
|
+ '瀹屾垚姣忔棩鎵撳崱绱Н杩炵画璁板綍',
|
|
|
|
|
+ '鍙備笌瀹跺涵鎸戞垬鑾峰緱閲岀▼纰戝鍔?
|
|
|
]" />
|
|
]" />
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
<view v-else>
|
|
<view v-else>
|
|
|
- <PageBanner theme="action" tagline="干预 · 记录 · 成长" quote="知行合一,每天进步一点点" />
|
|
|
|
|
- <!-- 里程碑 -->
|
|
|
|
|
|
|
+ <PageBanner theme="action" tagline="骞查 路 璁板綍 路 鎴愰暱" quote="鐭ヨ鍚堜竴锛屾瘡澶╄繘姝ヤ竴鐐圭偣" />
|
|
|
|
|
+ <!-- 閲岀▼纰?-->
|
|
|
<view class="section">
|
|
<view class="section">
|
|
|
<view class="milestone-card">
|
|
<view class="milestone-card">
|
|
|
- <text class="section-title-row">🏆 里程碑</text>
|
|
|
|
|
|
|
+ <text class="section-title-row">馃弳 閲岀▼纰?/text>
|
|
|
<view class="milestone-grid">
|
|
<view class="milestone-grid">
|
|
|
<view class="milestone-item">
|
|
<view class="milestone-item">
|
|
|
- <text class="milestone-icon">🔥</text>
|
|
|
|
|
- <text class="milestone-value">{{ streakDays }}天</text>
|
|
|
|
|
- <text class="milestone-label">连续打卡</text>
|
|
|
|
|
|
|
+ <text class="milestone-icon">馃敟</text>
|
|
|
|
|
+ <text class="milestone-value">{{ streakDays }}澶?/text>
|
|
|
|
|
+ <text class="milestone-label">杩炵画鎵撳崱</text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="milestone-item">
|
|
<view class="milestone-item">
|
|
|
- <text class="milestone-icon">🎯</text>
|
|
|
|
|
|
|
+ <text class="milestone-icon">馃幆</text>
|
|
|
<text class="milestone-value">{{ activeChallenges }}</text>
|
|
<text class="milestone-value">{{ activeChallenges }}</text>
|
|
|
- <text class="milestone-label">进行中挑战</text>
|
|
|
|
|
|
|
+ <text class="milestone-label">杩涜涓寫鎴?/text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="milestone-item">
|
|
<view class="milestone-item">
|
|
|
- <text class="milestone-icon">📈</text>
|
|
|
|
|
|
|
+ <text class="milestone-icon">馃搱</text>
|
|
|
<text class="milestone-value">{{ completeness }}%</text>
|
|
<text class="milestone-value">{{ completeness }}%</text>
|
|
|
- <text class="milestone-label">档案完整度</text>
|
|
|
|
|
|
|
+ <text class="milestone-label">妗f瀹屾暣搴?/text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
- <!-- 成长记录 -->
|
|
|
|
|
|
|
+ <!-- 鎴愰暱璁板綍 -->
|
|
|
<view class="section">
|
|
<view class="section">
|
|
|
<view class="survey-card">
|
|
<view class="survey-card">
|
|
|
- <text class="section-title-row">📋 成长记录</text>
|
|
|
|
|
|
|
+ <text class="section-title-row">馃搵 鎴愰暱璁板綍</text>
|
|
|
<view class="survey-pending" v-if="pendingSurvey">
|
|
<view class="survey-pending" v-if="pendingSurvey">
|
|
|
- <text class="survey-alert">⚠ 本周还未完成调研</text>
|
|
|
|
|
|
|
+ <text class="survey-alert">鈿?鏈懆杩樻湭瀹屾垚璋冪爺</text>
|
|
|
<text class="survey-title-text">{{ pendingSurvey.title }}</text>
|
|
<text class="survey-title-text">{{ pendingSurvey.title }}</text>
|
|
|
- <text class="survey-btn" @click="startSurvey">[开始填写]</text>
|
|
|
|
|
|
|
+ <text class="survey-btn" @click="startSurvey">[寮€濮嬪~鍐橾</text>
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="survey-done" v-else-if="allDone"><text class="survey-done-text">✅ 所有调研已完成</text></view>
|
|
|
|
|
|
|
+ <view class="survey-done" v-else-if="allDone"><text class="survey-done-text">鉁?鎵€鏈夎皟鐮斿凡瀹屾垚</text></view>
|
|
|
<view class="survey-history-list" v-if="surveyHistory.length > 0">
|
|
<view class="survey-history-list" v-if="surveyHistory.length > 0">
|
|
|
- <text class="history-label">历史调研:</text>
|
|
|
|
|
|
|
+ <text class="history-label">鍘嗗彶璋冪爺:</text>
|
|
|
<view class="history-item" v-for="(h, hIdx) in surveyHistory" :key="getHistoryKey(h)">
|
|
<view class="history-item" v-for="(h, hIdx) in surveyHistory" :key="getHistoryKey(h)">
|
|
|
<text class="history-date">{{ h._date }}</text>
|
|
<text class="history-date">{{ h._date }}</text>
|
|
|
<text class="history-content">{{ h._content }}</text>
|
|
<text class="history-content">{{ h._content }}</text>
|
|
|
</view>
|
|
</view>
|
|
|
- <text class="survey-more" @click="viewAllHistory">查看全部调研 ›</text>
|
|
|
|
|
|
|
+ <text class="survey-more" @click="viewAllHistory">鏌ョ湅鍏ㄩ儴璋冪爺 鈥?/text>
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="survey-empty" v-else-if="!pendingSurvey"><text class="survey-empty-text">暂无待完成调研</text></view>
|
|
|
|
|
|
|
+ <view class="survey-empty" v-else-if="!pendingSurvey"><text class="survey-empty-text">鏆傛棤寰呭畬鎴愯皟鐮?/text></view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="reminder-bar" v-if="hasIncomplete">
|
|
<view class="reminder-bar" v-if="hasIncomplete">
|
|
|
- <text class="reminder-text">⚠ 今日还有 {{ incompleteCount }} 项未记录</text>
|
|
|
|
|
- <text class="reminder-close" @click="dismissReminder">✕</text>
|
|
|
|
|
|
|
+ <text class="reminder-text">鈿?浠婃棩杩樻湁 {{ incompleteCount }} 椤规湭璁板綍</text>
|
|
|
|
|
+ <text class="reminder-close" @click="dismissReminder">鉁?/text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="section">
|
|
<view class="section">
|
|
|
<view class="progress-card">
|
|
<view class="progress-card">
|
|
|
<view class="progress-header">
|
|
<view class="progress-header">
|
|
|
-<<<<<<< HEAD
|
|
|
|
|
- <text class="progress-title">今日成长</text>
|
|
|
|
|
-=======
|
|
|
|
|
- <text class="progress-title">今日干预进度</text>
|
|
|
|
|
->>>>>>> origin/cfclub
|
|
|
|
|
- <text class="progress-date">{{ todayDate }}</text>
|
|
|
|
|
|
|
+ <text class="progress-title">浠婃棩鎴愰暱</text> <text class="progress-date">{{ todayDate }}</text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="progress-item" v-for="(item, idx) in progressItems" :key="getProgressKey(item)">
|
|
<view class="progress-item" v-for="(item, idx) in progressItems" :key="getProgressKey(item)">
|
|
|
<text class="progress-icon">{{ item.icon }}</text>
|
|
<text class="progress-icon">{{ item.icon }}</text>
|
|
|
<text class="progress-label">{{ item.label }}</text>
|
|
<text class="progress-label">{{ item.label }}</text>
|
|
|
- <text class="progress-status" :class="item.done ? 'status-done' : 'status-pending'">{{ item.done ? '✔ 已完成' : '' }}</text>
|
|
|
|
|
- <text class="progress-btn" v-if="!item.done" @click="handleProgressClick(item)">{{ item.actionText || '补录' }}</text>
|
|
|
|
|
|
|
+ <text class="progress-status" :class="item.done ? 'status-done' : 'status-pending'">{{ item.done ? '鉁?宸插畬鎴? : '' }}</text>
|
|
|
|
|
+ <text class="progress-btn" v-if="!item.done" @click="handleProgressClick(item)">{{ item.actionText || '琛ュ綍' }}</text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="progress-footer">
|
|
<view class="progress-footer">
|
|
|
- <text class="footer-text">今日完成 {{ doneCount }}/{{ totalCount }}</text>
|
|
|
|
|
- <text class="footer-streak" v-if="streakDays > 0">🔥 连续打卡 {{ streakDays }} 天</text>
|
|
|
|
|
|
|
+ <text class="footer-text">浠婃棩瀹屾垚 {{ doneCount }}/{{ totalCount }}</text>
|
|
|
|
|
+ <text class="footer-streak" v-if="streakDays > 0">馃敟 杩炵画鎵撳崱 {{ streakDays }} 澶?/text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="section" v-if="cautionCount > 0">
|
|
<view class="section" v-if="cautionCount > 0">
|
|
|
<view class="action-card" @click="goToCaution">
|
|
<view class="action-card" @click="goToCaution">
|
|
|
- <text class="action-icon">⚠️</text>
|
|
|
|
|
|
|
+ <text class="action-icon">鈿狅笍</text>
|
|
|
<view class="action-info">
|
|
<view class="action-info">
|
|
|
- <text class="action-title">食材戒备匹配</text>
|
|
|
|
|
- <text class="action-desc">{{ cautionCount }} 种食材需关注,点击查看戒备详情</text>
|
|
|
|
|
|
|
+ <text class="action-title">椋熸潗鎴掑鍖归厤</text>
|
|
|
|
|
+ <text class="action-desc">{{ cautionCount }} 绉嶉鏉愰渶鍏虫敞锛岀偣鍑绘煡鐪嬫垝澶囪鎯?/text>
|
|
|
</view>
|
|
</view>
|
|
|
- <text class="action-arrow">›</text>
|
|
|
|
|
|
|
+ <text class="action-arrow">鈥?/text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="section">
|
|
<view class="section">
|
|
|
-<<<<<<< HEAD
|
|
|
|
|
<view class="diet-card">
|
|
<view class="diet-card">
|
|
|
<view class="diet-card-header">
|
|
<view class="diet-card-header">
|
|
|
- <text class="diet-card-title">🥬 今日推荐食材</text>
|
|
|
|
|
- <text class="diet-card-link" @click="goToDiet">饮食主页 ›</text>
|
|
|
|
|
|
|
+ <text class="diet-card-title">馃ガ 浠婃棩鎺ㄨ崘椋熸潗</text>
|
|
|
|
|
+ <text class="diet-card-link" @click="goToDiet">楗涓婚〉 鈥?/text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="diet-card-content" v-if="ingredients.length > 0">
|
|
<view class="diet-card-content" v-if="ingredients.length > 0">
|
|
|
<view class="diet-item" v-for="(item, index) in ingredients" :key="getIngredientKey(item, index)">
|
|
<view class="diet-item" v-for="(item, index) in ingredients" :key="getIngredientKey(item, index)">
|
|
@@ -231,51 +225,20 @@
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="diet-empty" v-else>
|
|
<view class="diet-empty" v-else>
|
|
|
- <text class="empty-text">{{ ingredientsLoading ? '加载中...' : '暂无推荐食材' }}</text>
|
|
|
|
|
- <text class="empty-hint" v-if="!ingredientsLoading">上传菌群报告后生成个性化推荐</text>
|
|
|
|
|
|
|
+ <text class="empty-text">{{ ingredientsLoading ? '鍔犺浇涓?..' : '鏆傛棤鎺ㄨ崘椋熸潗' }}</text>
|
|
|
|
|
+ <text class="empty-hint" v-if="!ingredientsLoading">涓婁紶鑿岀兢鎶ュ憡鍚庣敓鎴愪釜鎬у寲鎺ㄨ崘</text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
- <!-- ===== 推荐商品 ===== -->
|
|
|
|
|
|
|
+ <!-- ===== 鎺ㄨ崘鍟嗗搧 ===== -->
|
|
|
<RecommendedFeed
|
|
<RecommendedFeed
|
|
|
:products="recommendedProducts"
|
|
:products="recommendedProducts"
|
|
|
:activities="[]"
|
|
:activities="[]"
|
|
|
:loading="loadingProducts"
|
|
:loading="loadingProducts"
|
|
|
@itemClick="onFeedItemClick"
|
|
@itemClick="onFeedItemClick"
|
|
|
@more="goMoreDiscover" />
|
|
@more="goMoreDiscover" />
|
|
|
-=======
|
|
|
|
|
- <view class="action-card" @click="goToFoods">
|
|
|
|
|
- <text class="action-icon">🍽️</text>
|
|
|
|
|
- <view class="action-info">
|
|
|
|
|
- <text class="action-title">饮食推荐</text>
|
|
|
|
|
- <text class="action-desc">基于菌群报告的个性化食材建议</text>
|
|
|
|
|
- </view>
|
|
|
|
|
- <text class="action-arrow">›</text>
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 推荐文章 -->
|
|
|
|
|
- <view class="section" v-if="healthArticles.length > 0 || growthArticles.length > 0">
|
|
|
|
|
- <view class="rec-section-title">📖 推荐阅读</view>
|
|
|
|
|
- <view class="rec-card" v-for="item in healthArticles" :key="getArticleKey(item)" @click="goToArticle(item.id)">
|
|
|
|
|
- <image class="rec-img" :src="item.coverImage" mode="aspectFill" v-if="item.coverImage"/>
|
|
|
|
|
- <view class="rec-info">
|
|
|
|
|
- <text class="rec-title">{{ item.title }}</text>
|
|
|
|
|
- <text class="rec-desc">{{ item.summary }}</text>
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="rec-card" v-for="item in growthArticles" :key="getArticleKey(item)" @click="goToArticle(item.id)">
|
|
|
|
|
- <image class="rec-img" :src="item.coverImage" mode="aspectFill" v-if="item.coverImage"/>
|
|
|
|
|
- <view class="rec-info">
|
|
|
|
|
- <text class="rec-title">{{ item.title }}</text>
|
|
|
|
|
- <text class="rec-desc">{{ item.summary }}</text>
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
->>>>>>> origin/cfclub
|
|
|
|
|
-
|
|
|
|
|
- <!-- ===== 推荐阅读 ===== -->
|
|
|
|
|
|
|
+ <!-- ===== 鎺ㄨ崘闃呰 ===== -->
|
|
|
<ArticleBookshelf
|
|
<ArticleBookshelf
|
|
|
:articles="indexArticles"
|
|
:articles="indexArticles"
|
|
|
:loading="articlesLoading"
|
|
:loading="articlesLoading"
|
|
@@ -292,15 +255,15 @@
|
|
|
</view>
|
|
</view>
|
|
|
<view class="tracking-content">
|
|
<view class="tracking-content">
|
|
|
<view class="tracking-empty" v-if="currentRecords.length === 0">
|
|
<view class="tracking-empty" v-if="currentRecords.length === 0">
|
|
|
- <text class="empty-icon">📊</text>
|
|
|
|
|
- <text class="empty-text">还没有记录</text>
|
|
|
|
|
- <text class="empty-hint">开始记录{{ activeTabLabel }}吧</text>
|
|
|
|
|
|
|
+ <text class="empty-icon">馃搳</text>
|
|
|
|
|
+ <text class="empty-text">杩樻病鏈夎褰?/text>
|
|
|
|
|
+ <text class="empty-hint">寮€濮嬭褰晎{ activeTabLabel }}鍚?/text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="tracking-record" v-for="(rec, rIdx) in currentRecords" :key="getRecordKey(rec)">
|
|
<view class="tracking-record" v-for="(rec, rIdx) in currentRecords" :key="getRecordKey(rec)">
|
|
|
<text class="record-date">{{ rec._date || rec._text }}</text>
|
|
<text class="record-date">{{ rec._date || rec._text }}</text>
|
|
|
<text class="record-content">{{ rec._content }}</text>
|
|
<text class="record-content">{{ rec._content }}</text>
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="tracking-more" v-if="currentRecords.length > 0" @click="viewAllRecords">查看全部 ›</view>
|
|
|
|
|
|
|
+ <view class="tracking-more" v-if="currentRecords.length > 0" @click="viewAllRecords">鏌ョ湅鍏ㄩ儴 鈥?/view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
@@ -312,17 +275,16 @@
|
|
|
import PageBanner from '../../components/PageBanner.vue'
|
|
import PageBanner from '../../components/PageBanner.vue'
|
|
|
import LoginGuideCard from '../../components/LoginGuideCard.vue'
|
|
import LoginGuideCard from '../../components/LoginGuideCard.vue'
|
|
|
import DimensionActivities from '../../components/DimensionActivities.vue'
|
|
import DimensionActivities from '../../components/DimensionActivities.vue'
|
|
|
-<<<<<<< HEAD
|
|
|
|
|
import RecommendedFeed from '../../components/RecommendedFeed.vue'
|
|
import RecommendedFeed from '../../components/RecommendedFeed.vue'
|
|
|
import ArticleBookshelf from '../../components/ArticleBookshelf.vue'
|
|
import ArticleBookshelf from '../../components/ArticleBookshelf.vue'
|
|
|
import { healthCheckinList, getDietIngredients, getSurveyStatus, getSurveyHistory, getFoodCautionList, getExerciseList, getMindCheckinList, getSleepList, getHealthMealList, productList, getFeaturedArticles } from '../../utils/api.js'
|
|
import { healthCheckinList, getDietIngredients, getSurveyStatus, getSurveyHistory, getFoodCautionList, getExerciseList, getMindCheckinList, getSleepList, getHealthMealList, productList, getFeaturedArticles } from '../../utils/api.js'
|
|
|
export default {
|
|
export default {
|
|
|
components: { PageBanner, LoginGuideCard, DimensionActivities, RecommendedFeed, ArticleBookshelf },
|
|
components: { PageBanner, LoginGuideCard, DimensionActivities, RecommendedFeed, ArticleBookshelf },
|
|
|
- data() { return { memberId: '', todayDate: '', hasIncomplete: false, incompleteCount: 0, progressItems: [], trackingTabs: [{ key: 'diet', label: '饮食', icon: '🍽️' }, { key: 'exercise', label: '运动', icon: '🏃' }, { key: 'sleep', label: '睡眠', icon: '😴' }, { key: 'emotion', label: '心情', icon: '😊' }], trackingData: { diet: [], exercise: [], sleep: [], emotion: [] }, streakDays: 0, activeChallenges: 0, completeness: 0, cautionCount: 0,
|
|
|
|
|
|
|
+ data() { return { memberId: '', todayDate: '', hasIncomplete: false, incompleteCount: 0, progressItems: [], trackingTabs: [{ key: 'diet', label: '楗', icon: '馃嵔锔? }, { key: 'exercise', label: '杩愬姩', icon: '馃弮' }, { key: 'sleep', label: '鐫$湢', icon: '馃槾' }, { key: 'emotion', label: '蹇冩儏', icon: '馃槉' }], trackingData: { diet: [], exercise: [], sleep: [], emotion: [] }, streakDays: 0, activeChallenges: 0, completeness: 0, cautionCount: 0,
|
|
|
pendingSurvey: null, allDone: false, surveyHistory: [], isLoggedIn: false,
|
|
pendingSurvey: null, allDone: false, surveyHistory: [], isLoggedIn: false,
|
|
|
ingredients: [],
|
|
ingredients: [],
|
|
|
ingredientsLoading: false,
|
|
ingredientsLoading: false,
|
|
|
- // 推荐商品 + 推荐阅读(与首页 parent-index 一致)
|
|
|
|
|
|
|
+ // 鎺ㄨ崘鍟嗗搧 + 鎺ㄨ崘闃呰锛堜笌棣栭〉 parent-index 涓€鑷达級
|
|
|
recommendedProducts: [],
|
|
recommendedProducts: [],
|
|
|
loadingProducts: false,
|
|
loadingProducts: false,
|
|
|
indexArticles: [],
|
|
indexArticles: [],
|
|
@@ -333,23 +295,10 @@ export default {
|
|
|
'linear-gradient(135deg, #5B9BD5, #8FC5E8)',
|
|
'linear-gradient(135deg, #5B9BD5, #8FC5E8)',
|
|
|
'linear-gradient(135deg, #10B981, #34D399)',
|
|
'linear-gradient(135deg, #10B981, #34D399)',
|
|
|
'linear-gradient(135deg, #F97316, #FB923C)'
|
|
'linear-gradient(135deg, #F97316, #FB923C)'
|
|
|
- ] } },
|
|
|
|
|
-=======
|
|
|
|
|
-import { healthCheckinList, getDietDailyRecords, getSurveyStatus, getSurveyHistory, getFoodCautionList, getGrowthRecommendations, getExerciseRecords, getSleepRecords, getEmotionCheckinList } from '../../utils/api.js'
|
|
|
|
|
-import { parseDate } from '../../utils/format.js'
|
|
|
|
|
-export default {
|
|
|
|
|
- components: { PageBanner, LoginGuideCard, DimensionActivities },
|
|
|
|
|
- data() { return { memberId: '', todayDate: '', hasIncomplete: false, incompleteCount: 0, progressItems: [], activeTab: 'diet', trackingTabs: [{ key: 'diet', label: '饮食' }, { key: 'exercise', label: '运动' }, { key: 'sleep', label: '睡眠' }, { key: 'emotion', label: '心情' }], trackingData: { diet: [], exercise: [], sleep: [], emotion: [] }, streakDays: 0, activeChallenges: 0, completeness: 0, cautionCount: 0,
|
|
|
|
|
- healthArticles: [],
|
|
|
|
|
- healthProducts: [],
|
|
|
|
|
- growthArticles: [],
|
|
|
|
|
- growthProducts: [],
|
|
|
|
|
- pendingSurvey: null, allDone: false, surveyHistory: [], isLoggedIn: false } },
|
|
|
|
|
->>>>>>> origin/cfclub
|
|
|
|
|
- computed: {
|
|
|
|
|
|
|
+ ] } }, computed: {
|
|
|
doneCount: function() { var c = 0; for (var i = 0; i < this.progressItems.length; i++) if (this.progressItems[i] && this.progressItems[i].done) c++; return c },
|
|
doneCount: function() { var c = 0; for (var i = 0; i < this.progressItems.length; i++) if (this.progressItems[i] && this.progressItems[i].done) c++; return c },
|
|
|
totalCount: function() { return this.progressItems.length },
|
|
totalCount: function() { return this.progressItems.length },
|
|
|
- activeTabLabel: function() { var m = { diet: '饮食', exercise: '运动', sleep: '睡眠', emotion: '心情' }; return m[this.activeTab] || '' },
|
|
|
|
|
|
|
+ activeTabLabel: function() { var m = { diet: '楗', exercise: '杩愬姩', sleep: '鐫$湢', emotion: '蹇冩儏' }; return m[this.activeTab] || '' },
|
|
|
currentRecords: function() { return this.trackingData[this.activeTab] || [] }
|
|
currentRecords: function() { return this.trackingData[this.activeTab] || [] }
|
|
|
},
|
|
},
|
|
|
onShow() {
|
|
onShow() {
|
|
@@ -382,12 +331,11 @@ export default {
|
|
|
viewAllHistory: function() { uni.navigateTo({ url: '/pages/health/survey-history?memberId=' + this.memberId }) },
|
|
viewAllHistory: function() { uni.navigateTo({ url: '/pages/health/survey-history?memberId=' + this.memberId }) },
|
|
|
goActivityDetail: function(act) { uni.navigateTo({ url: '/pages/activity/activity-detail/activity-detail?id=' + act.id }) },
|
|
goActivityDetail: function(act) { uni.navigateTo({ url: '/pages/activity/activity-detail/activity-detail?id=' + act.id }) },
|
|
|
goMoreActivities: function() { uni.navigateTo({ url: '/pages/activity/index' }) },
|
|
goMoreActivities: function() { uni.navigateTo({ url: '/pages/activity/index' }) },
|
|
|
- handleGuestFeatureTap: function() { uni.showToast({ title: '登录后即可体验该功能', icon: 'none' }) },
|
|
|
|
|
|
|
+ handleGuestFeatureTap: function() { uni.showToast({ title: '鐧诲綍鍚庡嵆鍙綋楠岃鍔熻兘', icon: 'none' }) },
|
|
|
goToCaution: function() { uni.navigateTo({ url: '/pages/growth/caution-detail' }) },
|
|
goToCaution: function() { uni.navigateTo({ url: '/pages/growth/caution-detail' }) },
|
|
|
-<<<<<<< HEAD
|
|
|
|
|
goToDiet: function() { uni.navigateTo({ url: '/pages/diet/index' }) },
|
|
goToDiet: function() { uni.navigateTo({ url: '/pages/diet/index' }) },
|
|
|
goPage: function(url) { uni.navigateTo({ url: url }) },
|
|
goPage: function(url) { uni.navigateTo({ url: url }) },
|
|
|
- // ===== 推荐商品 + 推荐阅读(与首页 parent-index 一致) =====
|
|
|
|
|
|
|
+ // ===== 鎺ㄨ崘鍟嗗搧 + 鎺ㄨ崘闃呰锛堜笌棣栭〉 parent-index 涓€鑷达級 =====
|
|
|
onFeedItemClick: function(item) {
|
|
onFeedItemClick: function(item) {
|
|
|
if (item && item.type === 'product' && item.id) {
|
|
if (item && item.type === 'product' && item.id) {
|
|
|
uni.navigateTo({ url: '/pages/discover-detail/product-detail/product-detail?id=' + item.id })
|
|
uni.navigateTo({ url: '/pages/discover-detail/product-detail/product-detail?id=' + item.id })
|
|
@@ -411,38 +359,7 @@ export default {
|
|
|
self.loadFeaturedArticles()
|
|
self.loadFeaturedArticles()
|
|
|
self.loadCautionData()
|
|
self.loadCautionData()
|
|
|
self.loadMilestones()
|
|
self.loadMilestones()
|
|
|
- self.loadDietIngredients()
|
|
|
|
|
-=======
|
|
|
|
|
- goToFoods: function() { uni.navigateTo({ url: '/pages/growth/foods-detail' }) },
|
|
|
|
|
- goToArticle: function(id) { uni.navigateTo({ url: '/pages/article-center/article-detail?id=' + id }) },
|
|
|
|
|
- goToProduct: function(id) { uni.navigateTo({ url: '/pages/shop/detail/detail?id=' + id }) },
|
|
|
|
|
- goPage: function(url) { uni.navigateTo({ url: url }) },
|
|
|
|
|
- loadTrackingData: function(key) { return this.trackingData[key] || [] },
|
|
|
|
|
- formatDateKey: function(dateVal) {
|
|
|
|
|
- if (!dateVal) return ''
|
|
|
|
|
- var d = parseDate(dateVal)
|
|
|
|
|
- if (!d) return ''
|
|
|
|
|
- return d.getFullYear() + '-' + this.pad(d.getMonth() + 1) + '-' + this.pad(d.getDate())
|
|
|
|
|
- },
|
|
|
|
|
- formatRecordDate: function(dateVal) {
|
|
|
|
|
- if (!dateVal) return ''
|
|
|
|
|
- var d = parseDate(dateVal)
|
|
|
|
|
- if (!d) return ''
|
|
|
|
|
- return this.pad(d.getMonth() + 1) + '-' + this.pad(d.getDate())
|
|
|
|
|
- },
|
|
|
|
|
- mealTypeLabel: function(type) {
|
|
|
|
|
- var m = { breakfast: '早餐', lunch: '午餐', dinner: '晚餐', snack: '加餐', extra: '零食' }
|
|
|
|
|
- return m[type] || type || '饮食'
|
|
|
|
|
- },
|
|
|
|
|
- async loadAllData() {
|
|
|
|
|
- var self = this
|
|
|
|
|
- try { await self.loadProgressItems() } catch(e) {}
|
|
|
|
|
- try { await self.loadCautionData() } catch(e) {}
|
|
|
|
|
- try { await self.loadGrowthRecommendations() } catch(e) {}
|
|
|
|
|
- try { await self.loadSurveyData() } catch(e) {}
|
|
|
|
|
- try { await self.loadMilestones() } catch(e) {}
|
|
|
|
|
->>>>>>> origin/cfclub
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ self.loadDietIngredients() },
|
|
|
loadRecommendedProducts: function() {
|
|
loadRecommendedProducts: function() {
|
|
|
var self = this
|
|
var self = this
|
|
|
self.loadingProducts = true
|
|
self.loadingProducts = true
|
|
@@ -471,7 +388,7 @@ export default {
|
|
|
self.indexArticles = list.map(function(item, index) {
|
|
self.indexArticles = list.map(function(item, index) {
|
|
|
return {
|
|
return {
|
|
|
id: item.id,
|
|
id: item.id,
|
|
|
- category: item.categoryName || item.category || '热门文章',
|
|
|
|
|
|
|
+ category: item.categoryName || item.category || '鐑棬鏂囩珷',
|
|
|
categoryColor: self.gradientColors[index % self.gradientColors.length],
|
|
categoryColor: self.gradientColors[index % self.gradientColors.length],
|
|
|
title: item.title || '',
|
|
title: item.title || '',
|
|
|
summary: item.summary || '',
|
|
summary: item.summary || '',
|
|
@@ -489,7 +406,6 @@ export default {
|
|
|
async loadProgressItems() {
|
|
async loadProgressItems() {
|
|
|
var self = this
|
|
var self = this
|
|
|
var items = []
|
|
var items = []
|
|
|
-<<<<<<< HEAD
|
|
|
|
|
var dietDone = false
|
|
var dietDone = false
|
|
|
try {
|
|
try {
|
|
|
var dRes = await getHealthMealList({ memberId: self.memberId })
|
|
var dRes = await getHealthMealList({ memberId: self.memberId })
|
|
@@ -502,36 +418,12 @@ export default {
|
|
|
else if (typeof dDate === 'string') dDate = dDate.substring(0, 10)
|
|
else if (typeof dDate === 'string') dDate = dDate.substring(0, 10)
|
|
|
else continue
|
|
else continue
|
|
|
if (dDate === self.todayDate) { dietDone = true; break }
|
|
if (dDate === self.todayDate) { dietDone = true; break }
|
|
|
- }
|
|
|
|
|
-=======
|
|
|
|
|
- var checkinDone = false
|
|
|
|
|
- try {
|
|
|
|
|
- var ciRes = await healthCheckinList({ yearMonth: self.todayDate.substring(0, 7) })
|
|
|
|
|
- if (ciRes.code === 200 && ciRes.data) {
|
|
|
|
|
- for (var ci = 0; ci < ciRes.data.length; ci++) { if (ciRes.data[ci] && self.formatDateKey(ciRes.data[ci].checkinDate) === self.todayDate) { checkinDone = true; break } }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ } }
|
|
|
} catch(e) {}
|
|
} catch(e) {}
|
|
|
- items.push({ key: 'checkin', icon: '✅', label: '今日打卡', done: checkinDone, actionText: '打卡' })
|
|
|
|
|
- // 饮食记录:daily 接口返回 {date, records, ...},records 才是数组
|
|
|
|
|
- var dietDone = false
|
|
|
|
|
- try {
|
|
|
|
|
- var dRes = await getDietDailyRecords({ date: self.todayDate })
|
|
|
|
|
- var dRecords = (dRes.code === 200 && dRes.data && dRes.data.records) ? dRes.data.records : []
|
|
|
|
|
- if (dRecords.length > 0) dietDone = true
|
|
|
|
|
- self.trackingData.diet = []
|
|
|
|
|
- for (var di = 0; di < dRecords.length; di++) {
|
|
|
|
|
- var dr = dRecords[di]
|
|
|
|
|
- if (!dr) continue
|
|
|
|
|
- var foods = dr.userConfirmedFoods || dr.aiRecognizedFoods || dr.notes || ''
|
|
|
|
|
- self.trackingData.diet.push({ _id: dr.id, _date: self.mealTypeLabel(dr.mealType), _content: foods || '已记录' })
|
|
|
|
|
->>>>>>> origin/cfclub
|
|
|
|
|
- }
|
|
|
|
|
- } catch(e) {}
|
|
|
|
|
- items.push({ key: 'diet', icon: '🍽️', label: '饮食记录', done: dietDone, actionText: '补录' })
|
|
|
|
|
- // 运动记录
|
|
|
|
|
|
|
+ items.push({ key: 'diet', icon: '馃嵔锔?, label: '楗璁板綍', done: dietDone, actionText: '琛ュ綍' })
|
|
|
|
|
+ // 杩愬姩璁板綍
|
|
|
var exerciseDone = false
|
|
var exerciseDone = false
|
|
|
try {
|
|
try {
|
|
|
-<<<<<<< HEAD
|
|
|
|
|
var exRes = await getExerciseList({ memberId: self.memberId })
|
|
var exRes = await getExerciseList({ memberId: self.memberId })
|
|
|
if (exRes.code === 200 && exRes.data && exRes.data.length > 0) {
|
|
if (exRes.code === 200 && exRes.data && exRes.data.length > 0) {
|
|
|
for (var ex = 0; ex < exRes.data.length; ex++) {
|
|
for (var ex = 0; ex < exRes.data.length; ex++) {
|
|
@@ -541,25 +433,10 @@ export default {
|
|
|
if (exDate instanceof Date) exDate = exDate.toISOString().substring(0, 10)
|
|
if (exDate instanceof Date) exDate = exDate.toISOString().substring(0, 10)
|
|
|
else if (typeof exDate === 'string') exDate = exDate.substring(0, 10)
|
|
else if (typeof exDate === 'string') exDate = exDate.substring(0, 10)
|
|
|
else continue
|
|
else continue
|
|
|
- if (exDate === self.todayDate) { exerciseDone = true; break }
|
|
|
|
|
-=======
|
|
|
|
|
- var eParams = self.memberId ? { memberId: self.memberId } : {}
|
|
|
|
|
- var eRes = await getExerciseRecords(eParams)
|
|
|
|
|
- var eList = (eRes.code === 200 && eRes.data) ? eRes.data : []
|
|
|
|
|
- self.trackingData.exercise = []
|
|
|
|
|
- for (var ei = 0; ei < eList.length; ei++) {
|
|
|
|
|
- var er = eList[ei]
|
|
|
|
|
- if (!er) continue
|
|
|
|
|
- if (self.formatDateKey(er.startTime || er.createdAt) === self.todayDate) exerciseDone = true
|
|
|
|
|
- if (ei < 5) {
|
|
|
|
|
- var eText = (er.exerciseType || '运动') + (er.durationMinutes ? ' ' + er.durationMinutes + '分钟' : '') + (er.caloriesBurned ? ' · ' + er.caloriesBurned + '千卡' : '')
|
|
|
|
|
- self.trackingData.exercise.push({ _id: er.id, _date: self.formatRecordDate(er.startTime || er.createdAt), _content: eText })
|
|
|
|
|
->>>>>>> origin/cfclub
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (exDate === self.todayDate) { exerciseDone = true; break } }
|
|
|
}
|
|
}
|
|
|
} catch(e) {}
|
|
} catch(e) {}
|
|
|
- items.push({ key: 'exercise', icon: '🏃', label: '运动记录', done: exerciseDone, actionText: '记录' })
|
|
|
|
|
-<<<<<<< HEAD
|
|
|
|
|
|
|
+ items.push({ key: 'exercise', icon: '馃弮', label: '杩愬姩璁板綍', done: exerciseDone, actionText: '璁板綍' })
|
|
|
var sleepDone = false
|
|
var sleepDone = false
|
|
|
try {
|
|
try {
|
|
|
var slRes = await getSleepList({ memberId: self.memberId })
|
|
var slRes = await getSleepList({ memberId: self.memberId })
|
|
@@ -571,28 +448,10 @@ export default {
|
|
|
if (slDate instanceof Date) slDate = slDate.toISOString().substring(0, 10)
|
|
if (slDate instanceof Date) slDate = slDate.toISOString().substring(0, 10)
|
|
|
else if (typeof slDate === 'string') slDate = slDate.substring(0, 10)
|
|
else if (typeof slDate === 'string') slDate = slDate.substring(0, 10)
|
|
|
else continue
|
|
else continue
|
|
|
- if (slDate === self.todayDate) { sleepDone = true; break }
|
|
|
|
|
-=======
|
|
|
|
|
- // 睡眠记录
|
|
|
|
|
- var sleepDone = false
|
|
|
|
|
- try {
|
|
|
|
|
- var sParams = self.memberId ? { memberId: self.memberId } : {}
|
|
|
|
|
- var sRes = await getSleepRecords(sParams)
|
|
|
|
|
- var sList = (sRes.code === 200 && sRes.data) ? sRes.data : []
|
|
|
|
|
- self.trackingData.sleep = []
|
|
|
|
|
- for (var si = 0; si < sList.length; si++) {
|
|
|
|
|
- var sr = sList[si]
|
|
|
|
|
- if (!sr) continue
|
|
|
|
|
- if (self.formatDateKey(sr.sleepTime || sr.createdAt) === self.todayDate) sleepDone = true
|
|
|
|
|
- if (si < 5) {
|
|
|
|
|
- var sText = (sr.durationMinutes ? sr.durationMinutes + '分钟' : '') + (sr.qualityScore ? ' · 质量' + sr.qualityScore + '分' : '')
|
|
|
|
|
- self.trackingData.sleep.push({ _id: sr.id, _date: self.formatRecordDate(sr.sleepTime || sr.createdAt), _content: sText || '已记录' })
|
|
|
|
|
->>>>>>> origin/cfclub
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (slDate === self.todayDate) { sleepDone = true; break } }
|
|
|
}
|
|
}
|
|
|
} catch(e) {}
|
|
} catch(e) {}
|
|
|
- items.push({ key: 'sleep', icon: '😴', label: '睡眠记录', done: sleepDone, actionText: '记录' })
|
|
|
|
|
-<<<<<<< HEAD
|
|
|
|
|
|
|
+ items.push({ key: 'sleep', icon: '馃槾', label: '鐫$湢璁板綍', done: sleepDone, actionText: '璁板綍' })
|
|
|
var emotionDone = false
|
|
var emotionDone = false
|
|
|
try {
|
|
try {
|
|
|
var emRes = await getMindCheckinList({ page: 1, size: 20, memberId: self.memberId })
|
|
var emRes = await getMindCheckinList({ page: 1, size: 20, memberId: self.memberId })
|
|
@@ -605,26 +464,9 @@ export default {
|
|
|
else if (typeof emDate === 'string') emDate = emDate.substring(0, 10)
|
|
else if (typeof emDate === 'string') emDate = emDate.substring(0, 10)
|
|
|
else continue
|
|
else continue
|
|
|
if (emDate === self.todayDate) { emotionDone = true; break }
|
|
if (emDate === self.todayDate) { emotionDone = true; break }
|
|
|
- }
|
|
|
|
|
-=======
|
|
|
|
|
- // 心情记录:mind/checkin/list 返回 List<EmotionCheckinVO>
|
|
|
|
|
- var emotionDone = false
|
|
|
|
|
- try {
|
|
|
|
|
- var mParams = { page: 1, size: 10 }
|
|
|
|
|
- if (self.memberId) mParams.memberId = self.memberId
|
|
|
|
|
- var mRes = await getEmotionCheckinList(mParams)
|
|
|
|
|
- var mList = (mRes.code === 200 && mRes.data) ? mRes.data : []
|
|
|
|
|
- self.trackingData.emotion = []
|
|
|
|
|
- for (var mi = 0; mi < mList.length; mi++) {
|
|
|
|
|
- var mr = mList[mi]
|
|
|
|
|
- if (!mr) continue
|
|
|
|
|
- if (self.formatDateKey(mr.checkinDate || mr.createdAt) === self.todayDate) emotionDone = true
|
|
|
|
|
- var mText = (mr.moodWeather || '') + (mr.moodScore ? ' · ' + mr.moodScore + '分' : '')
|
|
|
|
|
- self.trackingData.emotion.push({ _id: mr.id, _date: self.formatRecordDate(mr.checkinDate || mr.createdAt), _content: mText || (mr.note || '已记录') })
|
|
|
|
|
->>>>>>> origin/cfclub
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ } }
|
|
|
} catch(e) {}
|
|
} catch(e) {}
|
|
|
- items.push({ key: 'emotion', icon: '😊', label: '心情记录', done: emotionDone, actionText: '记录' })
|
|
|
|
|
|
|
+ items.push({ key: 'emotion', icon: '馃槉', label: '蹇冩儏璁板綍', done: emotionDone, actionText: '璁板綍' })
|
|
|
self.progressItems = items.filter(function(it) { return it && it.key })
|
|
self.progressItems = items.filter(function(it) { return it && it.key })
|
|
|
self.incompleteCount = 0
|
|
self.incompleteCount = 0
|
|
|
for (var pi = 0; pi < items.length; pi++) if (items[pi] && !items[pi].done) self.incompleteCount++
|
|
for (var pi = 0; pi < items.length; pi++) if (items[pi] && !items[pi].done) self.incompleteCount++
|
|
@@ -637,7 +479,7 @@ export default {
|
|
|
if (statusRes.code === 200 && statusRes.data) {
|
|
if (statusRes.code === 200 && statusRes.data) {
|
|
|
var list = statusRes.data
|
|
var list = statusRes.data
|
|
|
self.pendingSurvey = null; self.allDone = true; var hasAny = false
|
|
self.pendingSurvey = null; self.allDone = true; var hasAny = false
|
|
|
- for (var si = 0; si < list.length; si++) { var s = list[si]; if (!s) continue; hasAny = true; if (s.status === 'pending') { self.pendingSurvey = { templateId: s.templateId, title: s.title || '成长记录', dimension: s.dimension || '' }; self.allDone = false } }
|
|
|
|
|
|
|
+ for (var si = 0; si < list.length; si++) { var s = list[si]; if (!s) continue; hasAny = true; if (s.status === 'pending') { self.pendingSurvey = { templateId: s.templateId, title: s.title || '鎴愰暱璁板綍', dimension: s.dimension || '' }; self.allDone = false } }
|
|
|
if (!hasAny) { self.pendingSurvey = null; self.allDone = false }
|
|
if (!hasAny) { self.pendingSurvey = null; self.allDone = false }
|
|
|
}
|
|
}
|
|
|
} catch(e) {}
|
|
} catch(e) {}
|
|
@@ -645,7 +487,7 @@ export default {
|
|
|
var histRes = await getSurveyHistory({})
|
|
var histRes = await getSurveyHistory({})
|
|
|
if (histRes.code === 200 && histRes.data) {
|
|
if (histRes.code === 200 && histRes.data) {
|
|
|
var hlist = histRes.data; self.surveyHistory = []
|
|
var hlist = histRes.data; self.surveyHistory = []
|
|
|
- for (var hi = 0; hi < Math.min(hlist.length, 3); hi++) { var h = hlist[hi]; self.surveyHistory.push({ _date: h && h.submittedAt ? h.submittedAt.substring(0, 10) : '', _content: '已完成调研' }) }
|
|
|
|
|
|
|
+ for (var hi = 0; hi < Math.min(hlist.length, 3); hi++) { var h = hlist[hi]; self.surveyHistory.push({ _date: h && h.submittedAt ? h.submittedAt.substring(0, 10) : '', _content: '宸插畬鎴愯皟鐮? }) }
|
|
|
}
|
|
}
|
|
|
} catch(e) {}
|
|
} catch(e) {}
|
|
|
},
|
|
},
|
|
@@ -671,7 +513,7 @@ export default {
|
|
|
<style scoped>
|
|
<style scoped>
|
|
|
.container{background:#FFF7ED;min-height:100vh;padding-bottom:calc(160rpx + env(safe-area-inset-bottom))}
|
|
.container{background:#FFF7ED;min-height:100vh;padding-bottom:calc(160rpx + env(safe-area-inset-bottom))}
|
|
|
.section{margin:16rpx 24rpx}
|
|
.section{margin:16rpx 24rpx}
|
|
|
-/* 游客态 */
|
|
|
|
|
|
|
+/* 娓稿鎬?*/
|
|
|
.brand-strap{margin:0 24rpx 16rpx;background:linear-gradient(135deg,#F0FFF4,rgba(16,185,129,0.1));border-radius:16rpx;padding:20rpx 24rpx}
|
|
.brand-strap{margin:0 24rpx 16rpx;background:linear-gradient(135deg,#F0FFF4,rgba(16,185,129,0.1));border-radius:16rpx;padding:20rpx 24rpx}
|
|
|
.brand-strap-text{font-size:26rpx;color:#10B981;font-weight:600}
|
|
.brand-strap-text{font-size:26rpx;color:#10B981;font-weight:600}
|
|
|
.concept-card{margin:0 24rpx 16rpx;background:#fff;border-radius:20rpx;padding:28rpx;border-left:6rpx solid #10B981;box-shadow:0 2rpx 12rpx rgba(0,0,0,0.06)}
|
|
.concept-card{margin:0 24rpx 16rpx;background:#fff;border-radius:20rpx;padding:28rpx;border-left:6rpx solid #10B981;box-shadow:0 2rpx 12rpx rgba(0,0,0,0.06)}
|
|
@@ -694,7 +536,7 @@ export default {
|
|
|
.feat-title{font-size:26rpx;font-weight:600;color:#333;display:block;margin-bottom:4rpx}
|
|
.feat-title{font-size:26rpx;font-weight:600;color:#333;display:block;margin-bottom:4rpx}
|
|
|
.feat-desc{font-size:22rpx;color:#999;display:block}
|
|
.feat-desc{font-size:22rpx;color:#999;display:block}
|
|
|
.login-guide-section{margin:0 24rpx 24rpx}
|
|
.login-guide-section{margin:0 24rpx 24rpx}
|
|
|
-/* 成长行动卡片 */
|
|
|
|
|
|
|
+/* 鎴愰暱琛屽姩鍗$墖 */
|
|
|
.action-card{display:flex;align-items:center;padding:24rpx 28rpx;background:#fff;border-radius:16rpx;margin:0 24rpx 16rpx;box-shadow:0 2rpx 12rpx rgba(0,0,0,0.06)}
|
|
.action-card{display:flex;align-items:center;padding:24rpx 28rpx;background:#fff;border-radius:16rpx;margin:0 24rpx 16rpx;box-shadow:0 2rpx 12rpx rgba(0,0,0,0.06)}
|
|
|
.action-card:active{opacity:0.85}
|
|
.action-card:active{opacity:0.85}
|
|
|
.action-icon{font-size:44rpx;margin-right:20rpx}
|
|
.action-icon{font-size:44rpx;margin-right:20rpx}
|
|
@@ -702,7 +544,7 @@ export default {
|
|
|
.action-title{font-size:28rpx;font-weight:600;color:#333;display:block}
|
|
.action-title{font-size:28rpx;font-weight:600;color:#333;display:block}
|
|
|
.action-desc{font-size:22rpx;color:#888;margin-top:4rpx;display:block}
|
|
.action-desc{font-size:22rpx;color:#888;margin-top:4rpx;display:block}
|
|
|
.action-arrow{font-size:32rpx;color:#ccc}
|
|
.action-arrow{font-size:32rpx;color:#ccc}
|
|
|
-/* 登录后原有样式 */
|
|
|
|
|
|
|
+/* 鐧诲綍鍚庡師鏈夋牱寮?*/
|
|
|
.reminder-bar{margin:12rpx 24rpx;background:#FFF3E0;border:1rpx solid #FFB74D;border-radius:12rpx;padding:14rpx 20rpx;display:flex;align-items:center;justify-content:space-between}
|
|
.reminder-bar{margin:12rpx 24rpx;background:#FFF3E0;border:1rpx solid #FFB74D;border-radius:12rpx;padding:14rpx 20rpx;display:flex;align-items:center;justify-content:space-between}
|
|
|
.reminder-text{font-size:24rpx;color:#E65100}
|
|
.reminder-text{font-size:24rpx;color:#E65100}
|
|
|
.reminder-close{font-size:28rpx;color:#999}
|
|
.reminder-close{font-size:28rpx;color:#999}
|
|
@@ -710,21 +552,12 @@ export default {
|
|
|
.progress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16rpx}
|
|
.progress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16rpx}
|
|
|
.progress-title{font-size:28rpx;font-weight:bold;color:#333}
|
|
.progress-title{font-size:28rpx;font-weight:bold;color:#333}
|
|
|
.progress-date{font-size:22rpx;color:#999}
|
|
.progress-date{font-size:22rpx;color:#999}
|
|
|
-<<<<<<< HEAD
|
|
|
|
|
.progress-grid{display:flex}
|
|
.progress-grid{display:flex}
|
|
|
.progress-grid-item{flex:1;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#FFF7ED;border-radius:16rpx;padding:20rpx 8rpx;border:1rpx solid rgba(249,115,22,0.12)}
|
|
.progress-grid-item{flex:1;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#FFF7ED;border-radius:16rpx;padding:20rpx 8rpx;border:1rpx solid rgba(249,115,22,0.12)}
|
|
|
.progress-grid-item:active{opacity:0.85;background:#FFEDD5}
|
|
.progress-grid-item:active{opacity:0.85;background:#FFEDD5}
|
|
|
.progress-grid-icon{font-size:40rpx;margin-bottom:8rpx}
|
|
.progress-grid-icon{font-size:40rpx;margin-bottom:8rpx}
|
|
|
.progress-grid-label{font-size:24rpx;color:#333;margin-bottom:8rpx;text-align:center}
|
|
.progress-grid-label{font-size:24rpx;color:#333;margin-bottom:8rpx;text-align:center}
|
|
|
-.progress-grid-status{font-size:20rpx;flex-shrink:0}
|
|
|
|
|
-=======
|
|
|
|
|
-.progress-item{display:flex;align-items:center;padding:12rpx 0;border-bottom:1rpx solid #f5f5f5}
|
|
|
|
|
-.progress-item:last-of-type{border-bottom:none}
|
|
|
|
|
-.progress-icon{font-size:28rpx;margin-right:12rpx;flex-shrink:0}
|
|
|
|
|
-.progress-label{font-size:26rpx;color:#333;flex:1}
|
|
|
|
|
-.progress-status{font-size:22rpx;margin-right:8rpx;flex-shrink:0}
|
|
|
|
|
->>>>>>> origin/cfclub
|
|
|
|
|
-.status-done{color:#10B981}
|
|
|
|
|
|
|
+.progress-grid-status{font-size:20rpx;flex-shrink:0}.status-done{color:#10B981}
|
|
|
.status-pending{color:#ccc}
|
|
.status-pending{color:#ccc}
|
|
|
.progress-btn{font-size:22rpx;color:#F97316;padding:4rpx 16rpx;border:1rpx solid #F97316;border-radius:20rpx;flex-shrink:0}
|
|
.progress-btn{font-size:22rpx;color:#F97316;padding:4rpx 16rpx;border:1rpx solid #F97316;border-radius:20rpx;flex-shrink:0}
|
|
|
.progress-footer{display:flex;justify-content:space-between;align-items:center;margin-top:16rpx;padding-top:16rpx;border-top:1rpx solid #f5f5f5}
|
|
.progress-footer{display:flex;justify-content:space-between;align-items:center;margin-top:16rpx;padding-top:16rpx;border-top:1rpx solid #f5f5f5}
|
|
@@ -769,7 +602,7 @@ export default {
|
|
|
.survey-empty{padding:12rpx 0}
|
|
.survey-empty{padding:12rpx 0}
|
|
|
.survey-empty-text{font-size:24rpx;color:#999}
|
|
.survey-empty-text{font-size:24rpx;color:#999}
|
|
|
|
|
|
|
|
-/* ===== 五维闭环体系样式 ===== */
|
|
|
|
|
|
|
+/* ===== 浜旂淮闂幆浣撶郴鏍峰紡 ===== */
|
|
|
.wuxing-section { margin: 0 24rpx 16rpx; background: #fff; border-radius: 20rpx; padding: 24rpx; box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.06); }
|
|
.wuxing-section { margin: 0 24rpx 16rpx; background: #fff; border-radius: 20rpx; padding: 24rpx; box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.06); }
|
|
|
.wuxing-title { font-size: 30rpx; font-weight: bold; color: #333; text-align: center; margin-bottom: 6rpx; }
|
|
.wuxing-title { font-size: 30rpx; font-weight: bold; color: #333; text-align: center; margin-bottom: 6rpx; }
|
|
|
.wuxing-desc { font-size: 22rpx; color: #999; text-align: center; margin-bottom: 20rpx; }
|
|
.wuxing-desc { font-size: 22rpx; color: #999; text-align: center; margin-bottom: 20rpx; }
|
|
@@ -801,3 +634,4 @@ export default {
|
|
|
.wc-mind { border-color: rgba(255,107,157,0.3); background: rgba(255,107,157,0.04); border-left: 8rpx solid #FF6B9D; }
|
|
.wc-mind { border-color: rgba(255,107,157,0.3); background: rgba(255,107,157,0.04); border-left: 8rpx solid #FF6B9D; }
|
|
|
.wc-mind .wc-name { color: #FF6B9D; }
|
|
.wc-mind .wc-name { color: #FF6B9D; }
|
|
|
</style>
|
|
</style>
|
|
|
|
|
+
|