瀏覽代碼

feat: track md

zhangjie 4 月之前
父節點
當前提交
e6c5c2dff3
共有 3 個文件被更改,包括 74 次插入68 次删除
  1. 10 9
      src/features/track/TrackBody.vue
  2. 11 59
      src/features/track/composables/useTrackTag.ts
  3. 53 0
      src/types/index.ts

+ 10 - 9
src/features/track/TrackBody.vue

@@ -132,19 +132,20 @@
 <script setup lang="ts">
 <script setup lang="ts">
 import { reactive, watch } from "vue";
 import { reactive, watch } from "vue";
 import { useMarkStore } from "@/store";
 import { useMarkStore } from "@/store";
-import type { SpecialTag, Track } from "@/types";
-import { loadImage, toPrecision } from "@/utils/utils";
-import MarkDrawTrack from "@/features/mark/MarkDrawTrack.vue";
-
-import useDraggable from "@/features/mark/composables/useDraggable";
-import useTrackTag from "./composables/useTrackTag";
 import type {
 import type {
+  SpecialTag,
+  Track,
   AnswerTagItem,
   AnswerTagItem,
   MarkDetailItem,
   MarkDetailItem,
   ObjectiveAnswerTagItem,
   ObjectiveAnswerTagItem,
-  SummaryItem,
-} from "./composables/useTrackTag";
+  TrackSummaryItem,
+} from "@/types";
+import { loadImage, toPrecision } from "@/utils/utils";
+import MarkDrawTrack from "@/features/mark/MarkDrawTrack.vue";
+
+import useDraggable from "@/features/mark/composables/useDraggable";
 import useBodyScroll from "@/features/mark/composables/useBodyScroll";
 import useBodyScroll from "@/features/mark/composables/useBodyScroll";
+import useTrackTag from "./composables/useTrackTag";
 import useTrack from "./composables/useTrack";
 import useTrack from "./composables/useTrack";
 
 
 const { answerPaperScale } = useBodyScroll();
 const { answerPaperScale } = useBodyScroll();
@@ -177,7 +178,7 @@ interface SliceImage {
   answerTags?: AnswerTagItem[];
   answerTags?: AnswerTagItem[];
   markDetail?: MarkDetailItem[];
   markDetail?: MarkDetailItem[];
   objectiveAnswerTags?: ObjectiveAnswerTagItem[];
   objectiveAnswerTags?: ObjectiveAnswerTagItem[];
-  summarys?: SummaryItem[];
+  summarys?: TrackSummaryItem[];
 }
 }
 
 
 const { origImageUrls = "sliceUrls", onlyTrack = false } = defineProps<{
 const { origImageUrls = "sliceUrls", onlyTrack = false } = defineProps<{

+ 11 - 59
src/features/track/composables/useTrackTag.ts

@@ -1,63 +1,15 @@
 import { useMarkStore } from "@/store";
 import { useMarkStore } from "@/store";
-import type { PaperRecogData, Question } from "@/types";
+import type {
+  PaperRecogData,
+  Question,
+  QuestionArea,
+  UserMapType,
+  AnswerTagItem,
+  ObjectiveAnswerTagItem,
+  TrackSummaryItem,
+} from "@/types";
 import { calcSumPrecision, maxNum } from "@/utils/utils";
 import { calcSumPrecision, maxNum } from "@/utils/utils";
 
 
-export interface MarkDetailUserItem {
-  userId: string;
-  userName: string;
-  prename: string;
-  color: string;
-  scores: Array<{ subNumber: string; score: number }>;
-  score: number;
-}
-export type UserMapType = Record<string, MarkDetailUserItem>;
-export interface MarkDetailItem {
-  mainNumber: number;
-  subNumber: string;
-  isFillQuestion: boolean;
-  score: number;
-  maxScore: number;
-  users: MarkDetailUserItem[];
-  area: QuestionArea;
-  style: Record<string, string>;
-}
-
-export interface QuestionItem {
-  mainNumber: number;
-  subNumber: number | string;
-}
-export interface QuestionArea {
-  i: number;
-  x: number;
-  y: number;
-  w: number;
-  h: number;
-  qStruct: string;
-}
-
-export interface AnswerTagItem {
-  mainNumber: number;
-  subNumber: string;
-  answer: string;
-  style: Record<string, string>;
-}
-
-export interface ObjectiveAnswerTagItem {
-  id: string;
-  mainNumber: number;
-  subNumbers: string;
-  score: number;
-  totalScore: number;
-  style: Record<string, string | number>;
-}
-
-export interface SummaryItem {
-  mainNumber: number;
-  subNumber: string;
-  score: number;
-  markerName: string;
-}
-
 export default function useTrackTag() {
 export default function useTrackTag() {
   const markStore = useMarkStore();
   const markStore = useMarkStore();
 
 
@@ -144,7 +96,7 @@ export default function useTrackTag() {
   }
   }
 
 
   // 解析各试题答题区域
   // 解析各试题答题区域
-  function parseQuestionAreas(questions: QuestionItem[]) {
+  function parseQuestionAreas(questions: Question[]) {
     if (!questions.length || !markStore.currentTask.cardData?.length) return [];
     if (!questions.length || !markStore.currentTask.cardData?.length) return [];
 
 
     const pictureConfigs: QuestionArea[] = [];
     const pictureConfigs: QuestionArea[] = [];
@@ -550,7 +502,7 @@ export default function useTrackTag() {
   }
   }
 
 
   // 模式4的解析
   // 模式4的解析
-  function parseMode4Data(): SummaryItem[] {
+  function parseMode4Data(): TrackSummaryItem[] {
     // 只有单评才展示summary
     // 只有单评才展示summary
     const isDoubleMark = (markStore.currentTask.questionList || []).some(
     const isDoubleMark = (markStore.currentTask.questionList || []).some(
       (question) => {
       (question) => {

+ 53 - 0
src/types/index.ts

@@ -645,3 +645,56 @@ export interface CardData {
   id: string;
   id: string;
   content: string;
   content: string;
 }
 }
+
+// track-tag
+export interface MarkDetailUserItem {
+  userId: string;
+  userName: string;
+  prename: string;
+  color: string;
+  scores: Array<{ subNumber: string; score: number }>;
+  score: number;
+}
+export type UserMapType = Record<string, MarkDetailUserItem>;
+
+export interface QuestionArea {
+  i: number;
+  x: number;
+  y: number;
+  w: number;
+  h: number;
+  qStruct: string;
+}
+export interface MarkDetailItem {
+  mainNumber: number;
+  subNumber: string;
+  isFillQuestion: boolean;
+  score: number;
+  maxScore: number;
+  users: MarkDetailUserItem[];
+  area: QuestionArea;
+  style: Record<string, string>;
+}
+
+export interface AnswerTagItem {
+  mainNumber: number;
+  subNumber: string;
+  answer: string;
+  style: Record<string, string>;
+}
+
+export interface ObjectiveAnswerTagItem {
+  id: string;
+  mainNumber: number;
+  subNumbers: string;
+  score: number;
+  totalScore: number;
+  style: Record<string, string | number>;
+}
+
+export interface TrackSummaryItem {
+  mainNumber: number;
+  subNumber: string;
+  score: number;
+  markerName: string;
+}