feat: 更新应用名称及图标,新增HRV数据管理,优化营养记录展示

This commit is contained in:
richarjiang
2025-08-19 19:13:02 +08:00
parent 260546ff46
commit 35cd320ea7
10 changed files with 643 additions and 564 deletions

View File

@@ -1,211 +0,0 @@
import dayjs from 'dayjs';
import { DietRecord } from './dietRecords';
// 模拟营养记录数据用于测试UI效果
export const mockDietRecords: DietRecord[] = [
// 今天的记录
{
id: 1,
mealType: 'breakfast',
foodName: '燕麦粥配蓝莓',
foodDescription: '有机燕麦片,新鲜蓝莓,低脂牛奶',
weightGrams: 300,
portionDescription: '1大碗',
estimatedCalories: 280,
proteinGrams: 12.5,
carbohydrateGrams: 45.2,
fatGrams: 6.8,
fiberGrams: 8.5,
sugarGrams: 15.3,
sodiumMg: 120,
source: 'manual',
mealTime: dayjs().hour(7).minute(30).toISOString(),
imageUrl: 'https://images.unsplash.com/photo-1511690743698-d9d85f2fbf38?w=300&h=300&fit=crop',
notes: '营养丰富的早餐,富含膳食纤维和抗氧化物质',
createdAt: dayjs().hour(7).minute(35).toISOString(),
updatedAt: dayjs().hour(7).minute(35).toISOString(),
},
{
id: 2,
mealType: 'lunch',
foodName: '鸡胸肉沙拉',
foodDescription: '烤鸡胸肉,混合蔬菜,橄榄油调味',
weightGrams: 250,
portionDescription: '1份',
estimatedCalories: 320,
proteinGrams: 35.6,
carbohydrateGrams: 8.4,
fatGrams: 15.2,
fiberGrams: 6.2,
sugarGrams: 5.8,
sodiumMg: 480,
source: 'manual',
mealTime: dayjs().hour(12).minute(15).toISOString(),
imageUrl: 'https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=300&h=300&fit=crop',
notes: '高蛋白低碳水,适合健身人群',
createdAt: dayjs().hour(12).minute(20).toISOString(),
updatedAt: dayjs().hour(12).minute(20).toISOString(),
},
{
id: 3,
mealType: 'snack',
foodName: '混合坚果',
foodDescription: '杏仁,核桃,腰果混合装',
weightGrams: 30,
portionDescription: '1小包',
estimatedCalories: 180,
proteinGrams: 6.5,
carbohydrateGrams: 6.8,
fatGrams: 15.5,
fiberGrams: 3.2,
sugarGrams: 2.1,
sodiumMg: 5,
source: 'manual',
mealTime: dayjs().hour(15).minute(30).toISOString(),
notes: '健康的下午茶零食',
createdAt: dayjs().hour(15).minute(35).toISOString(),
updatedAt: dayjs().hour(15).minute(35).toISOString(),
},
{
id: 4,
mealType: 'dinner',
foodName: '三文鱼配蒸蔬菜',
foodDescription: '挪威三文鱼,西兰花,胡萝卜',
weightGrams: 350,
portionDescription: '1份',
estimatedCalories: 420,
proteinGrams: 42.3,
carbohydrateGrams: 12.5,
fatGrams: 22.8,
fiberGrams: 5.6,
sugarGrams: 8.2,
sodiumMg: 380,
source: 'vision',
mealTime: dayjs().hour(19).minute(0).toISOString(),
imageUrl: 'https://images.unsplash.com/photo-1467003909585-2f8a72700288?w=300&h=300&fit=crop',
notes: '富含Omega-3脂肪酸有益心血管健康',
createdAt: dayjs().hour(19).minute(10).toISOString(),
updatedAt: dayjs().hour(19).minute(10).toISOString(),
},
// 昨天的记录
{
id: 5,
mealType: 'breakfast',
foodName: '希腊酸奶杯',
foodDescription: '无糖希腊酸奶,草莓,燕麦片',
weightGrams: 200,
portionDescription: '1杯',
estimatedCalories: 220,
proteinGrams: 20.4,
carbohydrateGrams: 18.6,
fatGrams: 8.2,
fiberGrams: 4.1,
sugarGrams: 12.5,
sodiumMg: 85,
source: 'manual',
mealTime: dayjs().subtract(1, 'day').hour(8).minute(0).toISOString(),
imageUrl: 'https://images.unsplash.com/photo-1488477181946-6428a0291777?w=300&h=300&fit=crop',
notes: '高蛋白早餐,饱腹感强',
createdAt: dayjs().subtract(1, 'day').hour(8).minute(5).toISOString(),
updatedAt: dayjs().subtract(1, 'day').hour(8).minute(5).toISOString(),
},
// 更多历史记录,用于测试分页
{
id: 6,
mealType: 'lunch',
foodName: '牛肉面',
foodDescription: '手拉面条,牛肉汤底,青菜',
weightGrams: 400,
portionDescription: '1碗',
estimatedCalories: 580,
proteinGrams: 28.0,
carbohydrateGrams: 65.0,
fatGrams: 18.5,
fiberGrams: 4.8,
sugarGrams: 6.2,
sodiumMg: 1200,
source: 'manual',
mealTime: dayjs().subtract(2, 'day').hour(13).minute(0).toISOString(),
notes: '传统中式午餐',
createdAt: dayjs().subtract(2, 'day').hour(13).minute(10).toISOString(),
updatedAt: dayjs().subtract(2, 'day').hour(13).minute(10).toISOString(),
},
{
id: 7,
mealType: 'breakfast',
foodName: '全麦吐司配牛油果',
foodDescription: '全麦面包,新鲜牛油果,煎蛋',
weightGrams: 180,
portionDescription: '2片吐司',
estimatedCalories: 350,
proteinGrams: 15.2,
carbohydrateGrams: 28.5,
fatGrams: 22.0,
fiberGrams: 8.0,
sugarGrams: 3.5,
sodiumMg: 220,
source: 'manual',
mealTime: dayjs().subtract(3, 'day').hour(8).minute(30).toISOString(),
imageUrl: 'https://images.unsplash.com/photo-1541519227354-08fa5d50c44d?w=300&h=300&fit=crop',
notes: '健康脂肪和蛋白质的完美组合',
createdAt: dayjs().subtract(3, 'day').hour(8).minute(35).toISOString(),
updatedAt: dayjs().subtract(3, 'day').hour(8).minute(35).toISOString(),
},
{
id: 8,
mealType: 'dinner',
foodName: '蒸蛋羹',
foodDescription: '鸡蛋,温水,少许盐',
weightGrams: 150,
portionDescription: '1小碗',
estimatedCalories: 140,
proteinGrams: 12.0,
carbohydrateGrams: 1.0,
fatGrams: 10.0,
fiberGrams: 0,
sugarGrams: 1.0,
sodiumMg: 180,
source: 'manual',
mealTime: dayjs().subtract(4, 'day').hour(18).minute(45).toISOString(),
notes: '清淡易消化的晚餐',
createdAt: dayjs().subtract(4, 'day').hour(19).minute(0).toISOString(),
updatedAt: dayjs().subtract(4, 'day').hour(19).minute(0).toISOString(),
},
];
// 模拟API响应支持分页和日期过滤
export function getMockDietRecords({
startDate,
endDate,
page = 1,
limit = 10,
}: {
startDate?: string;
endDate?: string;
page?: number;
limit?: number;
} = {}) {
let filteredRecords = mockDietRecords;
// 如果有日期范围,则过滤
if (startDate && endDate) {
filteredRecords = mockDietRecords.filter(record => {
const recordDate = dayjs(record.mealTime).format('YYYY-MM-DD');
return recordDate >= startDate && recordDate <= endDate;
});
}
// 分页
const startIndex = (page - 1) * limit;
const endIndex = startIndex + limit;
const paginatedRecords = filteredRecords.slice(startIndex, endIndex);
return {
records: paginatedRecords,
total: filteredRecords.length,
page,
limit,
};
}