diff --git a/core/urls.py b/core/urls.py index 46a83a4..8068c73 100644 --- a/core/urls.py +++ b/core/urls.py @@ -40,6 +40,7 @@ urlpatterns = [ path('report/', views.generate_report, name='generate_report'), path('report//', views.view_report, name='view_report'), path('report//pdf/', views.generate_pdf_report, name='generate_pdf_report'), + path('report//preview/', views.preview_pdf_report, name='preview_pdf_report'), # 系统配置 path('settings/', views.system_settings, name='system_settings'), diff --git a/core/views.py b/core/views.py index 596271e..b87c1fe 100644 --- a/core/views.py +++ b/core/views.py @@ -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): """系统配置"""