Răsfoiți Sursa

feat: 学案pdf题目后面增加题目id显示,env里可以配置是否显示的标记

过卫栋 4 săptămâni în urmă
părinte
comite
6cab4bbca3
2 a modificat fișierele cu 33 adăugiri și 1 ștergeri
  1. 14 0
      config/exam.php
  2. 19 1
      resources/views/components/exam/paper-body.blade.php

+ 14 - 0
config/exam.php

@@ -0,0 +1,14 @@
+<?php
+
+return [
+    /*
+    |--------------------------------------------------------------------------
+    | PDF 题目ID显示配置
+    |--------------------------------------------------------------------------
+    |
+    | 控制生成PDF时是否在题干末尾显示题目ID,格式为 (Q000123)
+    | 用于快速定位题目进行问题分析
+    |
+    */
+    'show_question_id_in_pdf' => env('EXAM_PDF_SHOW_QUESTION_ID', false),
+];

+ 19 - 1
resources/views/components/exam/paper-body.blade.php

@@ -4,6 +4,15 @@
     $answerQuestions = $questions['answer'] ?? [];
     $gradingMode = $grading ?? false;
 
+    // 是否在题干后显示题目ID (Q000123)
+    $showQuestionId = config('exam.show_question_id_in_pdf', false);
+
+    // 格式化题目ID为6位补0格式
+    $formatQuestionId = function($id) {
+        if (empty($id)) return '';
+        return '(Q' . str_pad($id, 6, '0', STR_PAD_LEFT) . ')';
+    };
+
     // 【新增】动态计算大题号 - 根据有题目的题型分配序号
     $sectionNumbers = [
         'choice' => null,
@@ -184,6 +193,9 @@
                 </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))
                     @php
@@ -322,11 +334,14 @@
                 </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)
                     @php
                         $solutionText = trim($q->solution ?? '');
-                        // 去掉前置的“解题思路”标签,避免出现“解题思路:【解题思路】”重复
+                        // 去掉前置的"解题思路"标签,避免出现"解题思路:【解题思路】"重复
                         $solutionText = preg_replace('/^【?\s*解题思路\s*】?\s*[::]?\s*/u', '', $solutionText);
                         $solutionHtml = $solutionText === ''
                             ? '<span style="color:#999;font-style:italic;">(暂无解题思路)</span>'
@@ -375,6 +390,9 @@
                         <span class="question-score-inline">(本小题满分 {{ $q->score ?? 10 }} 分)</span>
                     @endunless
                     <span class="question-stem">{!! $mathProcessed ? $q->content : \App\Services\MathFormulaProcessor::processFormulas($q->content) !!}</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>
                 @unless($gradingMode)
                     <div class="question-lead spacer"></div>