feat(报告): 添加PDF报告预览功能

新增预览PDF报告功能,允许用户在生成正式PDF前查看HTML格式的预览,样式与PDF保持一致。该功能使用与PDF相同的模板渲染,方便用户确认报告内容无误后再生成正式文件。
This commit is contained in:
2026-01-21 22:25:59 +08:00
parent 32da4c9cf1
commit 5f9bd7da3e
2 changed files with 33 additions and 0 deletions

View File

@@ -560,6 +560,38 @@ def generate_pdf_report(request, date):
logger.error(f"生成PDF报告失败: {str(e)}")
return HttpResponse(f"生成PDF报告失败: {str(e)}", status=500)
# 预览PDF报告
def preview_pdf_report(request, date):
"""预览PDF报告HTML格式样式与PDF一致"""
logger.info(f"用户预览PDF报告: {date}")
try:
report_date = datetime.strptime(date, '%Y-%m-%d').date()
yesterday = report_date - timedelta(days=1)
# 获取指定日期的记录
yesterday_reading = ReadingRecord.objects.filter(date=yesterday)
yesterday_insight = InsightRecord.objects.filter(date=yesterday)
today_plan = TodayPlan.objects.filter(date=report_date)
# 获取家庭事项统计
family_task_stats = FamilyTask.objects.values('type').annotate(count=Count('id'))
context = {
'today': report_date,
'yesterday': yesterday,
'yesterday_reading': yesterday_reading,
'yesterday_insight': yesterday_insight,
'today_plan': today_plan,
'family_task_stats': family_task_stats,
}
# 渲染HTML模板与PDF使用相同的模板
return render(request, 'core/report_pdf.html', context)
except Exception as e:
logger.error(f"预览PDF报告失败: {str(e)}")
return HttpResponse(f"预览PDF报告失败: {str(e)}", status=500)
# 系统配置
def system_settings(request):
"""系统配置"""