export interface MarkStore { setting: Setting; groups: Array; status: { personCount: number; //个人评卷数量 markedCount: number; //总评卷数量 totalCount: number; //总数量 problemCount: number; //问题卷数量 arbitrateCount: number; //待仲裁卷数量 }; tasks: Array; // 保持数量为3 currentTask?: Task; // 用来切换task,还有回看 currentMarkResult?: MarkResult; currentQuestion?: Question; currentScore?: number; currentSpecialTag?: string; markResults: Array; historyOpen: boolean; // 是否打开回评侧边栏 MarkBoardTrackCollapse: boolean; // 是否收缩评分版 historyTasks: Array; removeScoreTracks: Array; focusTracks: Array; // 暂时无用 message: string | null; maxModalZIndex: number; minimapScrollTo: number; // 高度的百分比 allPaperModal: boolean; // 是否显示全卷 sheetViewModal: boolean; // 是否显示原卷 } export interface Setting { examType: "SCAN_IMAGE" | "MULTI_MEDIA"; // 扫描图片或者多媒体,多媒体只允许 common mode mode: ModeEnum; //模式 TRACK/COMMON forceMode: boolean; //强制模式切换 sheetView: boolean; //是否显示原图功能 sheetConfig: Array; //原图遮盖规则 enableAllZero: boolean; // 是否开启全零分 fileServer: string; //图片服务地址 userName: string; //评卷员姓名 subject: { //科目信息(试卷和答案功能) name: string; code: string; answerUrl: string; paperUrl: string; }; forceSpecialTag: boolean; //强制标记是否开启 forceTag uiSetting: UISetting; statusValue: "TRIAL" | "FORMAL" | "FINISH"; //只显示试评名称 TRIAL("试评"), FORMAL("正评"), FINISH("结束") problemTypes: Array<{ id: number; name: string }> | []; //问题卷类型 groupNumber: number; //评卷分组 groupTitle: string; //评卷分组名称 topCount: number; //限制提示数量 splitConfig: Array; //使用裁切整图时的裁切配置 [0,1]|[0,0.3,0.25,0.55], prefetchCount: number; //预加载任务数量 startTime: number; //评卷开始时间 endTime: number; //评卷结束时间 } export enum ModeEnum { TRACK = "TRACK", COMMON = "COMMON", } interface SingleSheetConfig { i: number; // index of sheets w: number; // width h: number; // height x: number; // x 左上角为 (0, 0) y: number; // y 左上角为 (0, 0) } interface Group { markerId: number; number: number; title: string; markedCount: number; //总评卷数量 totalCount: number; //总数量 } export interface Task { libraryId: number; studentId: number; secretNumber: string; studentName: string; //后端处理是否显示 studentCode: string; examNumber: string; subject: { name: string; code: string }; sliceUrls: Array; //裁切图url sliceConfig: Array; //最高显示优先级 jsonUrl: string; // sliceUrls为空,则是多媒体阅卷,显示JSON questionList: Array; currentQuestion: number; // 前端添加和使用的属性; 通过index去questionList去定位question,然后找到大题号、小题号 specialTagList: Array; sheetUrls: Array; //原图url objectiveScore: number; //客观分 复核也用到 markerScore: number; // 评卷总分 markTime: number; //评卷时间 inspectTime?: number; // 复核有用 self: boolean; // 是否自评,暂时用不着 previous: boolean; // 是否回评 rejected: boolean; // 是否是打回 message: string | null; } export interface Question { groupNumber: number; // 分组序号 mainNumber: number; // 大题号 subNumber: string; // 小题号 intervalScore: number; // 分数间隔 defaultScore: number; minScore: number; maxScore: number; title: string; // 题目名称 trackList: Array; // 轨迹列表 score: number | null; //得分;null的值时是为打回时可以被修改的;null也是从未评分过的情况,要通过rejected来判断 __origScore: number | null; // 在回评是restore score } export interface Track { mainNumber: number; // 大题号 subNumber: string; // 小题号,当前api中只有number // 特殊标记中没有 number: number; // 前端使用,暂时用不着,赋0 offsetIndex: number; // 第几张图 offsetX: number; // 左上角为原点 offsetY: number; positionX: number; // 相对slice的位置比例 positionY: number; score: number; } export interface SpecialTag { offsetIndex: number; // 第几张图 offsetX: number; // 左上角为原点 offsetY: number; positionX: number; // 相对slice的位置比例 positionY: number; tagName: string; // 特殊标记的字符串,勾叉 } export interface PictureSlice { i: number; w: number; h: number; x: number; y: number; } export interface UISetting { "score.board.collapse": boolean; "answer.paper.scale": number; // 0.2 gap "normal.mode": "keyboard" | "mouse"; "paper.modal": boolean; "answer.modal": boolean; "minimap.modal": boolean; "specialTag.modal": boolean; } export interface MarkResult { libraryId: number; studentId: number; statusValue: string; spent: number; // 毫秒单位 // 轨迹 or 键盘 markerScore: number; trackList: Array; scoreList: Array; specialTagList: Array; // 轨迹和键盘都需要 // 问题卷 problem: boolean; problemTypeId: number; __markStartTime: number; // 前端自用,用于标记阅卷开始时间和计算spent __previous: boolean; // 前端只用,用于删除回评产生的 markResult } export interface InspectStore { setting: { fileServer: string; userName: string; subject: { name: string; code: string }; uiSetting: { "answer.paper.scale": number; "score.board.collapse": boolean; }; splitConfig: Array; //使用裁切整图时的裁切配置 [0,1]|[0,0.3,0.25,0.55], }; status: { totalCount: number; //总数量 markedCount?: number; // 仅仲裁使用 }; currentTask?: Task; // 用来切换task,还有回看 historyOpen: boolean; // 是否打开回评侧边栏 MarkBoardTrackCollapse: boolean; // 是否收缩评分版 historyTasks: Array; focusTracks: Array; message: string | null; } // 前端自用,用来渲染裁切图 export interface SliceImage { url: string; // 当前是 ObjectURL , 因为 DataURL 性能太差 indexInSliceUrls: number; trackList: Array; tagList: Array; originalImage: HTMLImageElement; sliceImage: HTMLImageElement; dx: number; dy: number; accumTopHeight: number; effectiveWidth: number; }