task.ts 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. import { PageResult, PageParams } from './common';
  2. export interface SemesterItem {
  3. id: string;
  4. name: string;
  5. }
  6. export interface ExamItem {
  7. id: string;
  8. name: string;
  9. }
  10. export interface CourseItem {
  11. id: string;
  12. name: string;
  13. code: string;
  14. }
  15. export interface CourseQueryParams {
  16. semesterId: string;
  17. examId: string;
  18. }
  19. export interface PaperNumberQueryParams {
  20. semesterId: string;
  21. examId: string;
  22. courseId: string;
  23. }
  24. export interface CardData {
  25. id: string;
  26. content: string;
  27. }
  28. // task --------->
  29. export interface SplitConfig {
  30. /** index of sheets */
  31. i: number;
  32. /** 覆盖区域的width */
  33. w: number;
  34. /** 覆盖区域的height */
  35. h: number;
  36. /** 从哪里开始覆盖 左上角为 (0, 0) */
  37. x: number;
  38. /** 从哪里开始覆盖 左上角为 (0, 0) */
  39. y: number;
  40. }
  41. export interface Track {
  42. /** 大题号 */
  43. mainNumber: number;
  44. /** 小题号,当前api中只有number // 特殊标记中没有 */
  45. subNumber: number;
  46. /** 前端使用,暂时用不着,赋0 */
  47. number: number;
  48. /** 评分数 */
  49. score: number;
  50. /** 第几张图 */
  51. offsetIndex: number;
  52. /** 左上角为原点 */
  53. offsetX: number;
  54. offsetY: number;
  55. /** 是否此处未作答,未作答时,score默认是-0分 */
  56. unanswered: boolean;
  57. // 是否是复核员复核轨迹 headTrackList没有这个属性
  58. headerType: 'ARBITRATED' | 'MARKED' | null;
  59. userId: string;
  60. userName: string;
  61. color?: string;
  62. isByMultMark?: boolean;
  63. }
  64. export interface SpecialTag {
  65. /** 大题号 */
  66. mainNumber: number;
  67. /** 小题号,当前api中只有number */
  68. subNumber: number;
  69. /** 第几张图 */
  70. offsetIndex: number;
  71. /** 左上角为原点(原图的原点),及相对原图的位置比例 */
  72. offsetX: number;
  73. offsetY: number;
  74. /** 特殊标记的字符串,勾叉 */
  75. tagName: string;
  76. tagType: 'TEXT' | 'CIRCLE' | 'RIGHT' | 'WRONG' | 'HALF_RIGTH' | 'LINE';
  77. // 是否是复核员复核标记
  78. headerType: 'ARBITRATED' | 'MARKED' | null;
  79. userId: string;
  80. color?: string;
  81. isByMultMark?: boolean;
  82. }
  83. export interface Question {
  84. /** 任务序号 */
  85. taskId: string;
  86. /** 试题号 */
  87. questionId: string;
  88. /** 大题号 */
  89. mainNumber: number;
  90. /** 小题号 */
  91. subNumber: number;
  92. /** 分数间隔 */
  93. intervalScore: number;
  94. /** 默认分数 */
  95. defaultScore: number;
  96. /** 题目名称 */
  97. title: string;
  98. /** 得分;null的值时是为打回时可以被评卷修改的;null也是从未评分过的情况,要通过rejected来判断 */
  99. score: number | null;
  100. /** 限制最小分数 */
  101. minScore: number;
  102. /** 限制最大分数 */
  103. maxScore: number;
  104. /** 未计分 */
  105. uncalculate: boolean;
  106. /** 是否自己评卷,false时为他人评卷,给分板置灰 */
  107. selfMark: boolean;
  108. // 任务状态: WAIT_ARBITRATE:待仲裁,PROBLEM:问题卷
  109. status: 'WAIT_ARBITRATE' | 'PROBLEM' | 'WAITING' | 'MARKED';
  110. /** 轨迹列表 */
  111. markerTrackList: Array<Track>;
  112. // 科组长轨迹
  113. headerTrackList: Array<Track>;
  114. /** 选做题分组 */
  115. selectiveIndex: number | null;
  116. /** 无轨迹情况下评卷员打分信息 */
  117. markerList: null | Array<{
  118. // 是否是科组长
  119. header: boolean;
  120. loginName: string;
  121. score: number;
  122. userId: string;
  123. userName: string;
  124. }>;
  125. // 特殊标记列表
  126. markerTagList: Array<SpecialTag> | null;
  127. // 科组长特殊标记
  128. headerTagList: Array<SpecialTag> | null;
  129. // 是否打回
  130. rejected: boolean;
  131. // 打回原因
  132. rejectReason: string | null;
  133. // 打回前给分数据
  134. rejectScoreList: number[] | null;
  135. // 问题卷
  136. problem: boolean;
  137. // 问题卷类型
  138. problemType: string;
  139. // 问题卷备注
  140. problemRemark: string;
  141. questionName?: string;
  142. }
  143. export interface Task {
  144. // 考试id
  145. examId: string;
  146. /** 学生ID */
  147. studentId: string;
  148. /** 任务编号 */
  149. secretNumber: string;
  150. /** 学生名称 */
  151. studentName: string;
  152. /** 学生编号 */
  153. studentCode: string;
  154. /** 科目名称 */
  155. courseName: string;
  156. /** 科目编号 */
  157. courseCode: string;
  158. /** 试卷编号 */
  159. paperNumber: string;
  160. /** 试卷类型 */
  161. paperType: string;
  162. /** 最高显示优先级,有sliceConfig就用sliceConfig,否则使用sheetConfig */
  163. sliceConfig: Array<SplitConfig>;
  164. jsonUrl: string;
  165. questionList: Array<Question>;
  166. /** 原图url */
  167. sheetUrls: Array<string>;
  168. /** 客观分 复核也用到 */
  169. objectiveScore: number;
  170. /** 评卷总分 */
  171. markerScore: number;
  172. /** 评卷时间 */
  173. markerTime: number;
  174. }
  175. export type StudentObjectiveInfo = {
  176. studentId: string;
  177. studentName: string;
  178. studentCode: string;
  179. campusName: string;
  180. courseCode: string;
  181. courseName: string;
  182. paperNumber: string;
  183. objectiveScore: number;
  184. subjectiveScore: number;
  185. upload: boolean;
  186. absent: boolean;
  187. paperType: string;
  188. sheetUrls: Array<{ index: number; url: string; recogData: string }>;
  189. answers: Array<{
  190. mainNumber: number;
  191. subNumber: number;
  192. answer: string;
  193. exist: boolean;
  194. questionType: string;
  195. standardAnswer: string;
  196. score: number;
  197. totalScore: number;
  198. }>;
  199. titles: { [index: number]: string };
  200. success: boolean;
  201. };
  202. export interface MarkArea {
  203. mainNumber: number;
  204. subNumber: number;
  205. // 1: 单选 2: 多选 3: 判断 4: 填空 5: 问答
  206. questionType: 1 | 2 | 3 | 4 | 5;
  207. splitConfig: SplitConfig[];
  208. }
  209. // card --------->
  210. // page --------->
  211. export interface TrackExportListFilter {
  212. semesterId: string;
  213. examId: string;
  214. courseId: string;
  215. }
  216. export type TrackExportListParams = PageParams<TrackExportListFilter>;
  217. export interface TrackExportItem {
  218. examId: string;
  219. courseCode: string;
  220. courseName: string;
  221. paperNumber: string;
  222. studentCount: number;
  223. }
  224. export type TrackExportListPageRes = PageResult<TrackExportItem>;
  225. export interface TrackExportDetailListFilter {
  226. examId: string;
  227. paperNumber: string;
  228. college?: string;
  229. majorName?: string;
  230. teachClassName?: string;
  231. className?: string;
  232. studentName?: string;
  233. studentCode?: string;
  234. startStudentCode?: string;
  235. endStudentCode?: string;
  236. startScore?: number;
  237. endScore?: number;
  238. objectiveStartScore?: number;
  239. objectiveEndScore?: number;
  240. subjectiveStartScore?: number;
  241. subjectiveEndScore?: number;
  242. orderType?: string;
  243. orderField?: string;
  244. }
  245. export type TrackExportDetailListParams =
  246. PageParams<TrackExportDetailListFilter>;
  247. export interface TrackExportDetailItem {
  248. teachClassName: string; // 教学班
  249. className: string; // 行政班
  250. college: string;
  251. courseCode: string;
  252. courseName: string;
  253. examEndTime: number;
  254. examStartTime: number;
  255. majorName: number;
  256. studentCode: string;
  257. studentId: string;
  258. studentName: string;
  259. sheetUrls: string[] | null;
  260. totalScore: number;
  261. }
  262. export type TrackExportDetailListPageRes = PageResult<TrackExportDetailItem>;
  263. export interface SubjectiveQuestion extends Question {
  264. picList: SplitConfig[];
  265. // 1-单选,2-多选,3-判断,4-填空,5-问答
  266. questionType: 1 | 2 | 3 | 4 | 5;
  267. }
  268. export interface objectiveQuestion {
  269. mainNumber: number;
  270. subNumber: number;
  271. answer: string;
  272. exist: boolean;
  273. standardAnswer: string;
  274. score: number;
  275. totalScore: number;
  276. // 1-单选,2-多选,3-判断
  277. questionType: 1 | 2 | 3;
  278. }
  279. export interface StudentTrackTask {
  280. examId: string;
  281. studentId: string;
  282. secretNumber: string;
  283. studentName: string;
  284. studentCode: string;
  285. courseCode: string;
  286. courseName: string;
  287. paperNumber: string;
  288. paperType: string;
  289. objectiveScore: number;
  290. subjectiveScore: number;
  291. sheetUrls: Array<{ index: number; url: string; recogData: string }>;
  292. subjectiveQuestions: SubjectiveQuestion[];
  293. objectiveQuestions: objectiveQuestion[];
  294. cardContent: string;
  295. }