123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- export interface MarkStore {
- setting: Setting;
- groups: Array<Group>;
- status: {
- personCount: number; //个人评卷数量
- markedCount: number; //总评卷数量
- totalCount: number; //总数量
- problemCount: number; //问题卷数量
- arbitrateCount: number; //待仲裁卷数量
- };
- tasks: Array<Task>; // 保持数量为3
- currentTask?: Task; // 用来切换task,还有回看
- currentMarkResult?: MarkResult;
- currentQuestion?: Question;
- currentScore?: number;
- currentSpecialTag?: string;
- markResults: Array<MarkResult>;
- historyOpen: boolean; // 是否打开回评侧边栏
- MarkBoardTrackCollapse: boolean; // 是否收缩评分版
- historyTasks: Array<Task>;
- removeScoreTracks: Array<Track>;
- focusTracks: Array<Track>; // 暂时无用
- 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<SingleSheetConfig>; //原图遮盖规则
- 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<number>; //使用裁切整图时的裁切配置 [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<string>; //裁切图url
- sliceConfig: Array<PictureSlice>; //最高显示优先级
- jsonUrl: string; // sliceUrls为空,则是多媒体阅卷,显示JSON
- questionList: Array<Question>;
- currentQuestion: number; // 前端添加和使用的属性; 通过index去questionList去定位question,然后找到大题号、小题号
- specialTagList: Array<SpecialTag>;
- sheetUrls: Array<string>; //原图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<Track>; // 轨迹列表
- 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<Track>;
- scoreList: Array<number | null>;
- specialTagList: Array<SpecialTag>; // 轨迹和键盘都需要
- // 问题卷
- 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<number>; //使用裁切整图时的裁切配置 [0,1]|[0,0.3,0.25,0.55],
- };
- status: {
- totalCount: number; //总数量
- markedCount?: number; // 仅仲裁使用
- };
- currentTask?: Task; // 用来切换task,还有回看
- historyOpen: boolean; // 是否打开回评侧边栏
- MarkBoardTrackCollapse: boolean; // 是否收缩评分版
- historyTasks: Array<Task>;
- focusTracks: Array<Track>;
- message: string | null;
- }
- // 前端自用,用来渲染裁切图
- export interface SliceImage {
- url: string; // 当前是 ObjectURL , 因为 DataURL 性能太差
- indexInSliceUrls: number;
- trackList: Array<Track>;
- tagList: Array<SpecialTag>;
- originalImage: HTMLImageElement;
- sliceImage: HTMLImageElement;
- dx: number;
- dy: number;
- accumTopHeight: number;
- effectiveWidth: number;
- }
|