Prechádzať zdrojové kódy

feat: 模式4的轨迹展示

zhangjie 10 mesiacov pred
rodič
commit
e7bea5fa08

+ 76 - 0
src/features/student/studentInspect/MarkBody.vue

@@ -83,6 +83,23 @@
               得分:{{ tag.score }},满分:{{ tag.totalScore }}
             </div>
           </template>
+          <!-- 模式4的summary -->
+          <template v-if="item.summarys">
+            <div class="summary-detail">
+              <table>
+                <tr>
+                  <th>主观题号</th>
+                  <th>分数</th>
+                  <th>评卷员</th>
+                </tr>
+                <tr v-for="(sinfo, sindex) in item.summarys" :key="sindex">
+                  <td>{{ sinfo.mainNumber }}-{{ sinfo.subNumber }}</td>
+                  <td>{{ sinfo.score }}</td>
+                  <td>{{ sinfo.markerName }}</td>
+                </tr>
+              </table>
+            </div>
+          </template>
 
           <!-- 总分 -->
           <div class="mark-total">
@@ -133,6 +150,7 @@ interface SliceImage {
   answerTags?: AnswerTagItem[];
   markDetail?: MarkDetailItem[];
   objectiveAnswerTags?: ObjectiveAnswerTagItem[];
+  summarys?: SummaryItem[];
 }
 
 const { origImageUrls = "sliceUrls" } = defineProps<{
@@ -240,6 +258,26 @@ async function processImage() {
     .flat();
   store.setting.doubleTrack = trackLists.some((item) => item.isByMultMark);
 
+  // 无答题卡,模式4
+  if (!store.currentTask.cardData.length) {
+    // 只有单评才展示summary
+    const summarys = store.setting.doubleTrack ? [] : parseMode4Data();
+    for (const url of urls) {
+      const indexInSliceUrls = urls.indexOf(url) + 1;
+      const image = images[indexInSliceUrls - 1];
+      sliceImagesWithTrackList.push({
+        url,
+        trackList: [],
+        tagList: [],
+        originalImageWidth: image.naturalWidth,
+        originalImageHeight: image.naturalHeight,
+        width: (image.naturalWidth / maxImageWidth) * 100 + "%",
+        summarys: indexInSliceUrls === 1 ? summarys : [],
+      });
+    }
+    return;
+  }
+
   // 解析各试题答题区域以及评分
   const markDetailList = parseMarkDetailList();
   // 解析客观题的得分情况,按大题统计
@@ -745,6 +783,24 @@ function parseObjectiveAnswerTags() {
   return objectiveAnswerTags;
 }
 
+// 模式4的解析
+interface SummaryItem {
+  mainNumber: number;
+  subNumber: string;
+  score: number;
+  markerName: string;
+}
+function parseMode4Data(): SummaryItem[] {
+  return (store.currentTask.questionList || []).map((q) => {
+    return {
+      mainNumber: q.mainNumber,
+      subNumber: q.subNumber,
+      score: q.score,
+      markerName: q.trackList[0].userName,
+    };
+  });
+}
+
 // should not render twice at the same time
 let renderLock = false;
 const renderPaperAndMark = async () => {
@@ -878,4 +934,24 @@ const answerPaperScale = $computed(() => {
   z-index: 9;
   color: #f53f3f;
 }
+.summary-detail {
+  position: absolute;
+  width: 45%;
+  left: 5%;
+  top: 11%;
+  height: 84%;
+  z-index: 9;
+  color: #f53f3f;
+  font-weight: 600;
+}
+.summary-detail table {
+  border-spacing: 0;
+  border-collapse: collapse;
+  text-align: left;
+}
+.summary-detail table td,
+.summary-detail table th {
+  padding: 0 10px;
+  line-height: 24px;
+}
 </style>