pages/diet/index.vue(饮食首页:今日共餐摘要 + 今日食材推荐 + 功能入口 + 本周趋势)pages/diet/meal-config.vue(共餐配置:工作日/周末切换 + 餐次×成员多选)pages/diet/recommendation.vue(食谱推荐:餐次菜单 + 菜品 + 营养汇总)解决当前饮食模块的问题:
diet/index.vue 结构是「标题 + 卡片 + 网格」的通用堆叠,没有视觉主视觉,与身/智/心详情页的视觉丰富度差距明显#FF8C42 但未抽象为令牌,页面间深浅不一(#FF8C42 vs #F97316 混用)meal-config.vue 纯白底 + 灰头像,餐次与成员选择的视觉反馈弱recommendation.vue 卡片平淡,菜品信息缺乏层级,操作按钮用裸 emojiuni.scss:扁平圆角卡片、柔和暖色系、--color-primary 体系)#FF8C42、渐变 #FF8C42 → #FFB366、米底 #FFF7ED、深橙文字 #C2410C、嫩绿点缀 #10B981?.(用 && 替代):key 表达式(用方法调用代替)_cssClass)new Date(string) 解析(统一 utils/format.js 的 parseDate())| 令牌 | 值 | 用途 |
|---|---|---|
--diet-primary |
#FF8C42 |
主操作 / 强调 |
--diet-primary-grad |
linear-gradient(135deg, #FF8C42, #FFB366) |
主按钮 / 主视觉底 |
--diet-primary-deep |
#C2410C |
深橙文字(标题强调) |
--diet-bg |
#FFF7ED |
页面底色 |
--diet-bg-soft |
#FFF1E6 |
浅卡底 / 选中态 |
--diet-fresh |
#10B981 |
嫩绿点缀(生成食谱 / 点赞) |
--diet-sun |
#FBBF24 |
正午黄(午餐) |
--diet-dusk |
#8B5CF6 |
暮色紫(晚餐 icon 底) |
--diet-text |
#333333 |
主文字 |
--diet-text-2 |
#999999 |
次要文字 |
--diet-card-shadow |
0 4rpx 20rpx rgba(255, 140, 66, 0.10) |
卡片暖影 |
说明:令牌以页面 scoped CSS 变量形式在每个
.vue的<style>顶部定义(小程序页面无全局注入 css var 的便捷手段,保持 scoped 内自足),不修改uni.scss,避免影响其他页面。
pages/diet/index.vue┌──────────────────────────────────────────────┐
│ 🍳 今日餐桌(顶部主视觉,暖橙渐变大卡) │
│ 今日共餐 · 工作日/周末 · N 人共餐 │
│ [🌅 早餐] [☀️ 午餐] [🌙 晚餐] 时间轴三格 │
│ (未配置 → 引导「去设置共餐」) │
├──────────────────────────────────────────────┤
│ 🧺 今日菜篮(食材推荐) │
│ [🔄 换一批] [+ 添加食材] [✨ 生成食谱] │
│ 食材列表:序号徽章 + 名称 + 推荐理由 │
├──────────────────────────────────────────────┤
│ 常用功能(厨房导航 5 格,暖橙系深浅渐变) │
├──────────────────────────────────────────────┤
│ 本周饮食(总摄入 kcal / 记录天数,橙大数字) │
└──────────────────────────────────────────────┘
结构:页面顶部一张暖橙渐变圆角大卡(#FF8C42 → #FFB366),白字。
┌──────────────────────────────────┐
│ 🍳 今日餐桌 │
│ 工作日 · 3 人共餐 │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ 🌅 │ │ ☀️ │ │ 🌙 │ │
│ │ 早餐 │ │ 午餐 │ │ 晚餐 │ │
│ │ 共 2 人 │ │ 共 3 人 │ │ 共 3 人 │ │
│ └────────┘ └────────┘ └────────┘ │
└──────────────────────────────────┘
视觉细节:
🍳 放入白色半透明圆底,右侧标题「今日共餐」+ 副标题「工作日 · N 人共餐」rgba(255,255,255,0.18))圆角块,内含餐次 emoji + 餐次名(白字)+ 参与人数(共 N 人,来自 parseMembers 返回的计数文案)dateType 显示:工作日 / 周末;参与人数来自 mealSummary.*(parseMembers 返回值)navTo('/pages/diet/meal-config')mealSummary.breakfast 为空)→ 该格显示 — 占位数据:沿用 mealSummary(getMealConfig 三连请求)+ isWeekend(),不新增接口。
交互:点击整卡或「去设置共餐」跳转 meal-config。
结构:
┌──────────────────────────────────┐
│ 🧺 今日菜篮 │
│ [🔄 换一批] [+ 添加食材] [✨ 生成食谱] │
│ ┌────┐ 西蓝花 │
│ │ 01 │ 富含膳食纤维,适合晚餐搭配 │
│ └────┘ │
│ ... │
└──────────────────────────────────┘
视觉细节:
🧺 放入橙渐变圆底,标题「今日菜篮」(替代原「今日食材推荐」文案)🔄 换一批:灰底灰字胶囊+ 添加食材:主橙渐变底白字胶囊✨ 生成食谱:嫩绿渐变底白字胶囊;无食材时 opacity: 0.4 禁用态#333 加粗)+ 推荐理由(浅灰小字,item.reason)🥬 大 emoji + 「暂无推荐食材」+ 引导副文案,保留现有上传报告引导弹窗逻辑不动数据/逻辑:沿用 ingredients、loadIngredients、refreshIngredients、removeIngredient、showFoodPicker、generateRecipe 全部逻辑,仅改样式与文案。
视觉细节:
#FFF1E6 → #FFE0C0#FFF7ED → #FFEEDD#FF8C42 → #FFB366#FFE8D6 → #FFD4B0#E8F8F1 → #C8F0E0#333 22rpxhover-class / :active 按压缩放反馈视觉细节:
总摄入 kcal(48rpx 橙色加粗数字 + 单位小字)+ 记录天数(48rpx 橙色 + 天)#FDE8D0trendData.days === 0)保持隐藏linear-gradient(180deg, #FFF7ED, #FFF3E6, #F5F7FA) 收敛为纯暖调 linear-gradient(180deg, #FFF7ED 0%, #FFF3E6 100%),避免页面尾部突然变冷蓝pages/diet/meal-config.vue┌──────────────────────────────────────────────┐
│ [工作日] [周末] ← 两段式胶囊 tabs │
│ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ┐ │
│ │ + 添加共餐人 › │ ← 橙虚线引导卡 │
│ └ ─ ─ ─ ─ ─ ─ ─ ─ ┘ │
│ ┌──────────────────────┐ │
│ │ 🌅 早餐 │ │
│ │ [爸爸✓] [妈妈] [爷爷] │ ← 成员 chips │
│ └──────────────────────┘ │
│ ☀️ 午餐 ... 🌙 晚餐 ... │
│ 💡 提示:选择与您在工作日共餐的家庭成员 │
│ [保存配置](主橙渐变) │
└──────────────────────────────────────────────┘
#666 灰字透明底;选中:橙渐变底白字加粗switchDateType('weekday'/'weekend') 逻辑border: 2rpx dashed #FF8C42),白底+ 橙色 + 「添加共餐人」橙字加粗 + › 右箭头family-members 逻辑🌅 → 日出橙渐变 #FFB366 → #FFD48A☀️ → 正午黄渐变 #FBBF24 → #FCD34D🌙 → 暮色紫渐变 #A78BFA → #C4B5FD#333 加粗,右侧显示「已选 N 人」(仅 N>0 时显示,N 为该餐次 participantMemberIds 长度)#F5F5F5)灰描边,首字字母圈用中性渐变2rpx)+ 浅橙底(#FFF5EB)+ 右上角橙色 ✓ 圆形角标 + 首字圈变橙渐变#C8CDD4 升级为彩色渐变字母圈(取成员昵称首字;底色按 member.gender 定:male → 暖蓝渐变 #5B9BD5 → #8FC5E8、female → 暖粉渐变 #F472B6 → #F9A8D4、未知 → 暖橙渐变 #FF8C42 → #FFB366)暂无可选的共餐人 灰字,占满一行#E3F2FD 改为暖橙浅底 #FFF1E6,文字深橙 #C2410C💡 提示:选择与您在{工作日/周末}共餐的家庭成员#FF8C42 → #FFB366)白字,大圆角,底部留白加大saving 态文案切换pages/diet/recommendation.vue结构:居中暖橙渐变圆底(120rpx)+ 🍽️ emoji + 主文案「今日菜单空着」+ 副文案 + 「生成食谱」主按钮。
视觉细节:
#FF8C42 → #FFB366 渐变 + 白字大图标(或 emoji 60rpx)#333 32rpx 加粗「今日菜单空着」#999「点击生成今日三餐食谱」padding: 28rpx 60rpx 大圆角generateRecipe() 逻辑card-accent 改为橙渐变竖条)#333 加粗;状态徽章:
待确认:浅橙底 #FFF1E6 + 深橙字 #C2410C已接受:浅暖蓝 #E8F1FB + 蓝字(保留语义色,仅微调)已完成:浅绿底 #E8F5E9 + 绿字#333 加粗 + 右侧 N 人份 灰字#FFF9F0 圆角)承载整条菜品信息,替代现有无底色分行#333 26rpx 加粗 + 右侧 NNN kcal 橙字#F5F5F5 底 + #666 字,名称 Xg)🍳 清蒸 20 分钟 灰字小行#E8F5E9 + 绿字 #4CAF50#E8F1FB + 蓝字#FFEBEE + 红字重新生成:白底橙描边圆角按钮(替代现有灰描边)标记完成:主橙渐变白字(recommendation.status !== 'completed' 时显示)regenerate() / completeRecipe() 逻辑mvn 无涉(纯前端)<style> 均 scoped,不污染全局?.、无 CSS Grid、无 :key 表达式、无中文类名、无 new Date(string)pages/meal/recommend.vue(已废弃)、pages/meal/recipe-detail.vue(已废弃)uni.scss 全局令牌(避免影响其他页面)transition: all 0.15s chips 态切换)