|
@@ -374,38 +374,38 @@ export default {
|
|
|
}
|
|
}
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
-<style scoped>
|
|
|
|
|
-.page { min-height: 100vh; background: #FFF7ED; display: flex; flex-direction: column; }
|
|
|
|
|
|
|
+<stylescoped lang="scss">
|
|
|
|
|
+.page { min-height: 100vh; background: $uni-primary-pale; display: flex; flex-direction: column; }
|
|
|
|
|
|
|
|
/* 成员切换栏 */
|
|
/* 成员切换栏 */
|
|
|
.member-bar {
|
|
.member-bar {
|
|
|
- display: flex; overflow-x: auto; padding: 16rpx 30rpx 8rpx; background: #fff;
|
|
|
|
|
- border-bottom: 1rpx solid #f0f0f0; gap: 16rpx; -webkit-overflow-scrolling: touch;
|
|
|
|
|
|
|
+ display: flex; overflow-x: auto; padding: 16rpx 30rpx 8rpx; background: $app-surface;
|
|
|
|
|
+ border-bottom: 1rpx solid $facade-fill; gap: 16rpx; -webkit-overflow-scrolling: touch;
|
|
|
}
|
|
}
|
|
|
.member-tab {
|
|
.member-tab {
|
|
|
- flex-shrink: 0; padding: 8rpx 20rpx; border-radius: 20rpx; background: #f5f5f5; color: #666;
|
|
|
|
|
|
|
+ flex-shrink: 0; padding: 8rpx 20rpx; border-radius: 20rpx; background: $facade-fill-2; color: $facade-text-body;
|
|
|
font-size: 26rpx; font-weight: 500;
|
|
font-size: 26rpx; font-weight: 500;
|
|
|
}
|
|
}
|
|
|
-.member-tab.active { background: linear-gradient(135deg, #FF8C42, #FFB366); color: #fff; }
|
|
|
|
|
|
|
+.member-tab.active { background: linear-gradient(135deg, $dim-body, #FFB366); color: $app-surface; }
|
|
|
|
|
|
|
|
/* 周历条 */
|
|
/* 周历条 */
|
|
|
.week-strip {
|
|
.week-strip {
|
|
|
display: flex; align-items: center; justify-content: space-around;
|
|
display: flex; align-items: center; justify-content: space-around;
|
|
|
- background: #fff; padding: 12rpx 20rpx 16rpx; border-bottom: 1rpx solid #f0f0f0;
|
|
|
|
|
|
|
+ background: $app-surface; padding: 12rpx 20rpx 16rpx; border-bottom: 1rpx solid $facade-fill;
|
|
|
}
|
|
}
|
|
|
.week-day {
|
|
.week-day {
|
|
|
display: flex; flex-direction: column; align-items: center;
|
|
display: flex; flex-direction: column; align-items: center;
|
|
|
padding: 8rpx 12rpx; border-radius: 16rpx; min-width: 68rpx;
|
|
padding: 8rpx 12rpx; border-radius: 16rpx; min-width: 68rpx;
|
|
|
}
|
|
}
|
|
|
-.week-day-today .week-day-label { color: #FF8C42; font-weight: 700; }
|
|
|
|
|
-.week-day-active { background: linear-gradient(135deg, #FF8C42, #FFB366); }
|
|
|
|
|
|
|
+.week-day-today .week-day-label { color: $dim-body; font-weight: 700; }
|
|
|
|
|
+.week-day-active { background: linear-gradient(135deg, $dim-body, #FFB366); }
|
|
|
.week-day-active .week-day-label,
|
|
.week-day-active .week-day-label,
|
|
|
-.week-day-active .week-day-num { color: #fff; }
|
|
|
|
|
|
|
+.week-day-active .week-day-num { color: $app-surface; }
|
|
|
.week-day-has .week-dot-wrap { margin-top: 6rpx; }
|
|
.week-day-has .week-dot-wrap { margin-top: 6rpx; }
|
|
|
-.week-day-label { font-size: 20rpx; color: #999; }
|
|
|
|
|
-.week-day-num { font-size: 28rpx; font-weight: 600; color: #333; }
|
|
|
|
|
|
|
+.week-day-label { font-size: 20rpx; color: $facade-text-muted; }
|
|
|
|
|
+.week-day-num { font-size: 28rpx; font-weight: 600; color: $facade-text-strong; }
|
|
|
.week-dot-wrap { display: flex; align-items: center; gap: 6rpx; }
|
|
.week-dot-wrap { display: flex; align-items: center; gap: 6rpx; }
|
|
|
-.week-dot { width: 10rpx; height: 10rpx; border-radius: 50%; background: #FF8C42; }
|
|
|
|
|
|
|
+.week-dot { width: 10rpx; height: 10rpx; border-radius: 50%; background: $dim-body; }
|
|
|
.week-day-count { font-size: 18rpx; color: #C2410C; }
|
|
.week-day-count { font-size: 18rpx; color: #C2410C; }
|
|
|
|
|
|
|
|
/* 内容区 */
|
|
/* 内容区 */
|
|
@@ -413,35 +413,35 @@ export default {
|
|
|
|
|
|
|
|
/* 通用卡片 */
|
|
/* 通用卡片 */
|
|
|
.card {
|
|
.card {
|
|
|
- display: flex; background: #fff; border-radius: 20rpx; margin-bottom: 24rpx;
|
|
|
|
|
|
|
+ display: flex; background: $app-surface; border-radius: 20rpx; margin-bottom: 24rpx;
|
|
|
box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.05); overflow: hidden;
|
|
box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.05); overflow: hidden;
|
|
|
}
|
|
}
|
|
|
-.card-accent { width: 8rpx; background: linear-gradient(180deg, #FF8C42, #FFB366); flex-shrink: 0; }
|
|
|
|
|
|
|
+.card-accent { width: 8rpx; background: linear-gradient(180deg, $dim-body, #FFB366); flex-shrink: 0; }
|
|
|
.card-body { flex: 1; padding: 24rpx 28rpx; }
|
|
.card-body { flex: 1; padding: 24rpx 28rpx; }
|
|
|
-.card-title { font-size: calc(28rpx * var(--font-scale, 1)); font-weight: 600; color: #333; margin-bottom: 16rpx; display: block; }
|
|
|
|
|
|
|
+.card-title { font-size: calc(28rpx * var(--font-scale, 1)); font-weight: 600; color: $facade-text-strong; margin-bottom: 16rpx; display: block; }
|
|
|
|
|
|
|
|
/* 统计行 */
|
|
/* 统计行 */
|
|
|
.stat-row { display: flex; justify-content: space-around; }
|
|
.stat-row { display: flex; justify-content: space-around; }
|
|
|
.stat-item { text-align: center; }
|
|
.stat-item { text-align: center; }
|
|
|
-.stat-val { font-size: 36rpx; font-weight: 700; color: #FF8C42; display: block; }
|
|
|
|
|
-.stat-unit { font-size: 20rpx; color: #999; }
|
|
|
|
|
-.stat-label { font-size: 22rpx; color: #666; display: block; margin-top: 4rpx; }
|
|
|
|
|
|
|
+.stat-val { font-size: 36rpx; font-weight: 700; color: $dim-body; display: block; }
|
|
|
|
|
+.stat-unit { font-size: 20rpx; color: $facade-text-muted; }
|
|
|
|
|
+.stat-label { font-size: 22rpx; color: $facade-text-body; display: block; margin-top: 4rpx; }
|
|
|
|
|
|
|
|
/* 食材提示 */
|
|
/* 食材提示 */
|
|
|
.alert-card {
|
|
.alert-card {
|
|
|
- background: #fff; border-radius: 20rpx; margin-bottom: 24rpx;
|
|
|
|
|
|
|
+ background: $app-surface; border-radius: 20rpx; margin-bottom: 24rpx;
|
|
|
box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.05); overflow: hidden;
|
|
box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.05); overflow: hidden;
|
|
|
}
|
|
}
|
|
|
.alert-header { display: flex; align-items: center; gap: 12rpx; padding: 24rpx 28rpx 16rpx; border-bottom: 1rpx solid #FFF3E0; }
|
|
.alert-header { display: flex; align-items: center; gap: 12rpx; padding: 24rpx 28rpx 16rpx; border-bottom: 1rpx solid #FFF3E0; }
|
|
|
.alert-icon { font-size: 36rpx; }
|
|
.alert-icon { font-size: 36rpx; }
|
|
|
-.alert-title { font-size: 28rpx; font-weight: 600; color: #333; }
|
|
|
|
|
|
|
+.alert-title { font-size: 28rpx; font-weight: 600; color: $facade-text-strong; }
|
|
|
.alert-section { padding: 16rpx 28rpx; }
|
|
.alert-section { padding: 16rpx 28rpx; }
|
|
|
.alert-label { font-size: 24rpx; font-weight: 600; display: block; margin-bottom: 12rpx; }
|
|
.alert-label { font-size: 24rpx; font-weight: 600; display: block; margin-bottom: 12rpx; }
|
|
|
-.alert-label.over { color: #C62828; }
|
|
|
|
|
|
|
+.alert-label.over { color: $status-danger-strong-2; }
|
|
|
.alert-label.under { color: #1565C0; }
|
|
.alert-label.under { color: #1565C0; }
|
|
|
.alert-tags { display: flex; flex-wrap: wrap; gap: 12rpx; }
|
|
.alert-tags { display: flex; flex-wrap: wrap; gap: 12rpx; }
|
|
|
.alert-tag { display: flex; align-items: center; gap: 6rpx; padding: 8rpx 16rpx; border-radius: 20rpx; font-size: 24rpx; }
|
|
.alert-tag { display: flex; align-items: center; gap: 6rpx; padding: 8rpx 16rpx; border-radius: 20rpx; font-size: 24rpx; }
|
|
|
-.tag-over { background: #FFEBEE; color: #C62828; }
|
|
|
|
|
|
|
+.tag-over { background: #FFEBEE; color: $status-danger-strong-2; }
|
|
|
.tag-under { background: #E3F2FD; color: #1565C0; }
|
|
.tag-under { background: #E3F2FD; color: #1565C0; }
|
|
|
.tag-count { font-size: 20rpx; opacity: 0.8; }
|
|
.tag-count { font-size: 20rpx; opacity: 0.8; }
|
|
|
.alert-hint { font-size: 22rpx; color: #888; margin-top: 8rpx; display: block; }
|
|
.alert-hint { font-size: 22rpx; color: #888; margin-top: 8rpx; display: block; }
|
|
@@ -450,29 +450,29 @@ export default {
|
|
|
.top-foods-list { display: flex; flex-direction: column; gap: 12rpx; }
|
|
.top-foods-list { display: flex; flex-direction: column; gap: 12rpx; }
|
|
|
.top-food-item { display: flex; align-items: center; gap: 16rpx; }
|
|
.top-food-item { display: flex; align-items: center; gap: 16rpx; }
|
|
|
.top-food-rank {
|
|
.top-food-rank {
|
|
|
- width: 36rpx; height: 36rpx; border-radius: 50%; background: #FFF1E6; color: #FF8C42;
|
|
|
|
|
|
|
+ width: 36rpx; height: 36rpx; border-radius: 50%; background: #FFF1E6; color: $dim-body;
|
|
|
font-size: 22rpx; font-weight: 700; display: flex; align-items: center; justify-content: center;
|
|
font-size: 22rpx; font-weight: 700; display: flex; align-items: center; justify-content: center;
|
|
|
}
|
|
}
|
|
|
-.top-food-name { flex: 1; font-size: 26rpx; color: #333; }
|
|
|
|
|
-.top-food-count { font-size: 24rpx; color: #999; }
|
|
|
|
|
|
|
+.top-food-name { flex: 1; font-size: 26rpx; color: $facade-text-strong; }
|
|
|
|
|
+.top-food-count { font-size: 24rpx; color: $facade-text-muted; }
|
|
|
|
|
|
|
|
/* 日期切换栏 */
|
|
/* 日期切换栏 */
|
|
|
.date-bar {
|
|
.date-bar {
|
|
|
display: flex; align-items: center; justify-content: space-between;
|
|
display: flex; align-items: center; justify-content: space-between;
|
|
|
- background: #fff; border-radius: 16rpx; padding: 16rpx 24rpx; margin-bottom: 20rpx;
|
|
|
|
|
|
|
+ background: $app-surface; border-radius: 16rpx; padding: 16rpx 24rpx; margin-bottom: 20rpx;
|
|
|
box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.04);
|
|
box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.04);
|
|
|
}
|
|
}
|
|
|
-.date-prev, .date-next { font-size: 26rpx; color: #FF8C42; font-weight: 600; padding: 8rpx 16rpx; }
|
|
|
|
|
-.date-display { font-size: 28rpx; font-weight: 600; color: #333; }
|
|
|
|
|
|
|
+.date-prev, .date-next { font-size: 26rpx; color: $dim-body; font-weight: 600; padding: 8rpx 16rpx; }
|
|
|
|
|
+.date-display { font-size: 28rpx; font-weight: 600; color: $facade-text-strong; }
|
|
|
|
|
|
|
|
/* 记录卡片 */
|
|
/* 记录卡片 */
|
|
|
.records-title { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16rpx; }
|
|
.records-title { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16rpx; }
|
|
|
-.records-label { font-size: 28rpx; font-weight: 600; color: #333; }
|
|
|
|
|
-.records-count { font-size: 24rpx; color: #999; }
|
|
|
|
|
|
|
+.records-label { font-size: 28rpx; font-weight: 600; color: $facade-text-strong; }
|
|
|
|
|
+.records-count { font-size: 24rpx; color: $facade-text-muted; }
|
|
|
|
|
|
|
|
.record-card {
|
|
.record-card {
|
|
|
- background: #fff; border-radius: 16rpx; padding: 20rpx 24rpx; margin-bottom: 16rpx;
|
|
|
|
|
- box-shadow: 0 2rpx 8rpx rgba(255,140,66,0.06); border-left: 6rpx solid #FF8C42;
|
|
|
|
|
|
|
+ background: $app-surface; border-radius: 16rpx; padding: 20rpx 24rpx; margin-bottom: 16rpx;
|
|
|
|
|
+ box-shadow: 0 2rpx 8rpx rgba(255,140,66,0.06); border-left: 6rpx solid $dim-body;
|
|
|
}
|
|
}
|
|
|
.record-card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10rpx; }
|
|
.record-card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10rpx; }
|
|
|
.meal-badge { padding: 6rpx 18rpx; border-radius: 20rpx; font-size: 24rpx; font-weight: 600; }
|
|
.meal-badge { padding: 6rpx 18rpx; border-radius: 20rpx; font-size: 24rpx; font-weight: 600; }
|
|
@@ -481,30 +481,30 @@ export default {
|
|
|
.meal-dinner { background: #F3E5F5; color: #7B1FA2; }
|
|
.meal-dinner { background: #F3E5F5; color: #7B1FA2; }
|
|
|
.meal-snack { background: #E8F5E9; color: #2E7D32; }
|
|
.meal-snack { background: #E8F5E9; color: #2E7D32; }
|
|
|
.record-meta { display: flex; align-items: center; gap: 12rpx; }
|
|
.record-meta { display: flex; align-items: center; gap: 12rpx; }
|
|
|
-.record-time { font-size: 24rpx; color: #999; }
|
|
|
|
|
|
|
+.record-time { font-size: 24rpx; color: $facade-text-muted; }
|
|
|
.record-backfill { font-size: 20rpx; padding: 2rpx 10rpx; background: #FFF3E0; color: #E65100; border-radius: 8rpx; }
|
|
.record-backfill { font-size: 20rpx; padding: 2rpx 10rpx; background: #FFF3E0; color: #E65100; border-radius: 8rpx; }
|
|
|
.record-body { margin-bottom: 8rpx; }
|
|
.record-body { margin-bottom: 8rpx; }
|
|
|
-.record-foods { font-size: calc(26rpx * var(--font-scale, 1)); color: #333; line-height: 1.5; }
|
|
|
|
|
|
|
+.record-foods { font-size: calc(26rpx * var(--font-scale, 1)); color: $facade-text-strong; line-height: 1.5; }
|
|
|
.record-footer { display: flex; gap: 20rpx; margin-bottom: 6rpx; }
|
|
.record-footer { display: flex; gap: 20rpx; margin-bottom: 6rpx; }
|
|
|
-.record-cal { font-size: 22rpx; color: #FF8C42; font-weight: 600; }
|
|
|
|
|
-.record-nut { font-size: 22rpx; color: #999; }
|
|
|
|
|
|
|
+.record-cal { font-size: 22rpx; color: $dim-body; font-weight: 600; }
|
|
|
|
|
+.record-nut { font-size: 22rpx; color: $facade-text-muted; }
|
|
|
.record-remark { font-size: 24rpx; color: #888; font-style: italic; }
|
|
.record-remark { font-size: 24rpx; color: #888; font-style: italic; }
|
|
|
|
|
|
|
|
/* 空态 */
|
|
/* 空态 */
|
|
|
.empty-state { text-align: center; padding: 80rpx 40rpx; }
|
|
.empty-state { text-align: center; padding: 80rpx 40rpx; }
|
|
|
.empty-icon { font-size: 80rpx; display: block; margin-bottom: 20rpx; }
|
|
.empty-icon { font-size: 80rpx; display: block; margin-bottom: 20rpx; }
|
|
|
-.empty-text { font-size: 28rpx; color: #333; font-weight: 500; display: block; margin-bottom: 8rpx; }
|
|
|
|
|
-.empty-hint { font-size: 24rpx; color: #999; display: block; }
|
|
|
|
|
|
|
+.empty-text { font-size: 28rpx; color: $facade-text-strong; font-weight: 500; display: block; margin-bottom: 8rpx; }
|
|
|
|
|
+.empty-hint { font-size: 24rpx; color: $facade-text-muted; display: block; }
|
|
|
.loading-state { text-align: center; padding: 80rpx 0; }
|
|
.loading-state { text-align: center; padding: 80rpx 0; }
|
|
|
-.loading-text { font-size: 26rpx; color: #999; }
|
|
|
|
|
|
|
+.loading-text { font-size: 26rpx; color: $facade-text-muted; }
|
|
|
.bottom-spacer { height: 40rpx; }
|
|
.bottom-spacer { height: 40rpx; }
|
|
|
|
|
|
|
|
/* 浮动按钮 */
|
|
/* 浮动按钮 */
|
|
|
.fab {
|
|
.fab {
|
|
|
position: fixed; right: 40rpx; bottom: 60rpx; width: 100rpx; height: 100rpx;
|
|
position: fixed; right: 40rpx; bottom: 60rpx; width: 100rpx; height: 100rpx;
|
|
|
- background: linear-gradient(135deg, #FF8C42, #FFB366); border-radius: 50%;
|
|
|
|
|
|
|
+ background: linear-gradient(135deg, $dim-body, #FFB366); border-radius: 50%;
|
|
|
display: flex; align-items: center; justify-content: center;
|
|
display: flex; align-items: center; justify-content: center;
|
|
|
box-shadow: 0 4rpx 20rpx rgba(255,140,66,0.4);
|
|
box-shadow: 0 4rpx 20rpx rgba(255,140,66,0.4);
|
|
|
}
|
|
}
|
|
|
-.fab-icon { font-size: 48rpx; color: #fff; font-weight: 300; }
|
|
|
|
|
|
|
+.fab-icon { font-size: 48rpx; color: $app-surface; font-weight: 300; }
|
|
|
</style>
|
|
</style>
|