ソースを参照

fix: allow grading pdf to hide question stems

yemeishu 3 週間 前
コミット
71fd5994a9
3 ファイル変更55 行追加26 行削除
  1. 4 0
      .env.example
  2. 11 0
      config/exam.php
  3. 40 26
      resources/views/components/exam/paper-body.blade.php

+ 4 - 0
.env.example

@@ -81,3 +81,7 @@ VITE_APP_NAME="${APP_NAME}"
 MATHRECSYS_BASE_URL=http://localhost:5010
 MATHRECSYS_API_KEY=
 MATHRECSYS_TIMEOUT=30
+
+# PDF 配置
+EXAM_PDF_SHOW_QUESTION_ID=false
+EXAM_PDF_GRADING_SHOW_STEM=true

+ 11 - 0
config/exam.php

@@ -11,4 +11,15 @@ return [
     |
     */
     'show_question_id_in_pdf' => env('EXAM_PDF_SHOW_QUESTION_ID', false),
+
+    /*
+    |--------------------------------------------------------------------------
+    | 判卷PDF是否显示题目
+    |--------------------------------------------------------------------------
+    |
+    | 控制判卷PDF中是否保留题干与选项。关闭后仅保留题号、正确答案和解题思路,
+    | 适合学案较长时直接生成答案版。
+    |
+    */
+    'pdf_grading_show_stem' => env('EXAM_PDF_GRADING_SHOW_STEM', true),
 ];

+ 40 - 26
resources/views/components/exam/paper-body.blade.php

@@ -6,6 +6,8 @@
 
     // 是否在题干后显示题目ID (Q000123)
     $showQuestionId = config('exam.show_question_id_in_pdf', false);
+    // 判卷模式是否显示题目题干与选项,默认显示;可通过 EXAM_PDF_GRADING_SHOW_STEM 关闭
+    $showGradingStem = config('exam.pdf_grading_show_stem', true);
 
     // 格式化题目ID为6位补0格式
     $formatQuestionId = function($id) {
@@ -191,13 +193,15 @@
                     @endif
                     <span class="question-number">{{ $gradingMode ? '题目 ' : '' }}{{ $questionNumber }}.</span>
                 </div>
-                <div class="question-main">
-                    <span class="question-stem">{!! $renderedStem !!}</span>
-                    @if($showQuestionId && !empty($q->id))
-                        <span class="question-id" style="font-size:10px;color:#999;margin-left:4px;">{!! $formatQuestionId($q->id) !!}</span>
-                    @endif
-                </div>
-                @if(!empty($options))
+                @if(!$gradingMode || $showGradingStem)
+                    <div class="question-main">
+                        <span class="question-stem">{!! $renderedStem !!}</span>
+                        @if($showQuestionId && !empty($q->id))
+                            <span class="question-id" style="font-size:10px;color:#999;margin-left:4px;">{!! $formatQuestionId($q->id) !!}</span>
+                        @endif
+                    </div>
+                @endif
+                @if((!$gradingMode || $showGradingStem) && !empty($options))
                     @php
                         // 计算选项长度并动态选择布局
                         $optCount = count($options);
@@ -265,7 +269,9 @@
                             ? '<span style="color:#999;font-style:italic;">(暂无解题思路)</span>'
                             : ($mathProcessed ? $solutionText : \App\Services\MathFormulaProcessor::processFormulas($solutionText));
                     @endphp
-                    <div class="question-lead spacer"></div>
+                    @if($showGradingStem)
+                        <div class="question-lead spacer"></div>
+                    @endif
                     <div class="answer-meta">
                         <div class="answer-line"><strong>正确答案:</strong><span class="solution-content">{!! $mathProcessed ? ($q->answer ?? '') : \App\Services\MathFormulaProcessor::processFormulas($q->answer ?? '') !!}</span></div>
                         <div class="answer-line"><strong>解题思路:</strong><span class="solution-content">{!! $solutionHtml !!}</span></div>
@@ -338,12 +344,14 @@
                     @endif
                     <span class="question-number">{{ $gradingMode ? '题目 ' : '' }}{{ $questionNumber }}.</span>
                 </div>
-                <div class="question-main">
-                    <span class="question-stem">{!! $renderedContent !!}</span>
-                    @if($showQuestionId && !empty($q->id))
-                        <span class="question-id" style="font-size:10px;color:#999;margin-left:4px;">{!! $formatQuestionId($q->id) !!}</span>
-                    @endif
-                </div>
+                @if(!$gradingMode || $showGradingStem)
+                    <div class="question-main">
+                        <span class="question-stem">{!! $renderedContent !!}</span>
+                        @if($showQuestionId && !empty($q->id))
+                            <span class="question-id" style="font-size:10px;color:#999;margin-left:4px;">{!! $formatQuestionId($q->id) !!}</span>
+                        @endif
+                    </div>
+                @endif
                 @if($gradingMode)
                     @php
                         $solutionText = trim($q->solution ?? '');
@@ -353,7 +361,9 @@
                             ? '<span style="color:#999;font-style:italic;">(暂无解题思路)</span>'
                             : ($mathProcessed ? $solutionText : \App\Services\MathFormulaProcessor::processFormulas($solutionText));
                     @endphp
-                    <div class="question-lead spacer"></div>
+                    @if($showGradingStem)
+                        <div class="question-lead spacer"></div>
+                    @endif
                     <div class="answer-meta">
                         <div class="answer-line"><strong>正确答案:</strong><span class="solution-content">{!! $mathProcessed ? ($q->answer ?? '') : \App\Services\MathFormulaProcessor::processFormulas($q->answer ?? '') !!}</span></div>
                         <div class="answer-line"><strong>解题思路:</strong><span class="solution-content">{!! $solutionHtml !!}</span></div>
@@ -391,16 +401,18 @@
                 <div class="question-lead">
                     <span class="question-number">{{ $gradingMode ? '题目 ' : '' }}{{ $questionNumber }}.</span>
                 </div>
-                <div class="question-main">
-                    @unless($gradingMode)
-                        <span class="question-score-inline">(本小题满分 {{ $q->score ?? 10 }} 分)
-                            @if($showQuestionId && !empty($q->id))
-                                <span class="question-id" style="font-size:10px;color:#999;margin-left:4px;">{!! $formatQuestionId($q->id) !!}</span>
-                            @endif
-                        </span>
-                    @endunless
-                    <span class="question-stem">{!! $mathProcessed ? $q->content : \App\Services\MathFormulaProcessor::processFormulas($q->content) !!}</span>
-                </div>
+                @if(!$gradingMode || $showGradingStem)
+                    <div class="question-main">
+                        @unless($gradingMode)
+                            <span class="question-score-inline">(本小题满分 {{ $q->score ?? 10 }} 分)
+                                @if($showQuestionId && !empty($q->id))
+                                    <span class="question-id" style="font-size:10px;color:#999;margin-left:4px;">{!! $formatQuestionId($q->id) !!}</span>
+                                @endif
+                            </span>
+                        @endunless
+                        <span class="question-stem">{!! $mathProcessed ? $q->content : \App\Services\MathFormulaProcessor::processFormulas($q->content) !!}</span>
+                    </div>
+                @endif
                 @unless($gradingMode)
                     <div class="question-lead spacer"></div>
                     <div class="answer-area boxy">
@@ -509,7 +521,9 @@
                         $solutionProcessed = preg_replace('/\n{3,}/u', "\n\n", $solutionProcessed);
                         $solutionProcessed = nl2br($solutionProcessed);
                     @endphp
-                    <div class="question-lead spacer"></div>
+                    @if($showGradingStem)
+                        <div class="question-lead spacer"></div>
+                    @endif
                     <div class="answer-meta">
                         <div class="answer-line"><strong>正确答案:</strong><span class="solution-content">{!! $mathProcessed ? ($q->answer ?? '') : \App\Services\MathFormulaProcessor::processFormulas($q->answer ?? '') !!}</span></div>
                         <div class="answer-line solution-parsed">{!! $solutionProcessed !!}</div>