invigilation.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455
  1. import { httpApp } from "@/plugins/axiosIndex";
  2. import { pickBy } from "lodash-es";
  3. import { object2QueryString } from "@/utils/utils";
  4. const paramFilter = (v) => v !== "" && v !== undefined && v !== null;
  5. // monitor key
  6. export function getUserMonitorKey(recordId) {
  7. return httpApp.post(
  8. "/api/admin/monitor/getMonitorKey?" + object2QueryString({ recordId }),
  9. {}
  10. );
  11. }
  12. // live url domain
  13. export function getLiveDomains() {
  14. return httpApp.post("/api/admin/sys/getPlayUrls", {});
  15. }
  16. // exam-invigilation
  17. export function examInvigilationCount() {
  18. return httpApp.post("/api/admin/report/examination_monitor/count", {});
  19. }
  20. // invi types
  21. export function examInvigilationWarnDistribution() {
  22. return httpApp.post(
  23. "/api/admin/report/examination_monitor/warn_distribution",
  24. {}
  25. );
  26. }
  27. // invi time trend
  28. export function examInvigilationWarnTrend() {
  29. return httpApp.post("/api/admin/report/examination_monitor/warn_trend", {});
  30. }
  31. // invi student
  32. export function examInvigilationVideoRandomList(datas) {
  33. const data = pickBy(datas, paramFilter);
  34. return httpApp.post(
  35. "/api/admin/invigilate/list/video/random?" + object2QueryString(data),
  36. {}
  37. );
  38. }
  39. // invi exam msg
  40. export function examInvigilationWarnMessage() {
  41. return httpApp.post("/api/admin/report/examination_monitor/warn_msg", {});
  42. }
  43. // exam-invigilation-full
  44. export function examinationMonitorMapList() {
  45. return httpApp.post("/api/admin/report/examination_monitor/map", {});
  46. }
  47. export function examinationMonitorAreaList() {
  48. return httpApp.post(
  49. "/api/admin/report/examination_monitor/warn_region_distribution",
  50. {}
  51. );
  52. }
  53. // realtime-monitoring
  54. export function invigilateList(datas) {
  55. const data = pickBy(datas, paramFilter);
  56. return httpApp.post(
  57. "/api/admin/invigilate/list?" + object2QueryString(data),
  58. {}
  59. );
  60. }
  61. export function invigilateCount(datas) {
  62. const data = pickBy(datas, paramFilter);
  63. return httpApp.post(
  64. "/api/admin/exam/list/count?" + object2QueryString(data),
  65. {}
  66. );
  67. }
  68. export function invigilateVideoList(datas, config = {}) {
  69. const data = pickBy(datas, paramFilter);
  70. return httpApp.post(
  71. "/api/admin/invigilate/list/video?" + object2QueryString(data),
  72. {},
  73. config
  74. );
  75. }
  76. export function monitorCallCount({ examId, roomCode, callStatus }) {
  77. const data = pickBy({ examId, roomCode, callStatus }, paramFilter);
  78. return httpApp.post(
  79. "/api/admin/monitor/call/count?" + object2QueryString(data),
  80. {}
  81. );
  82. }
  83. export function invigilationWarningMessage(examId) {
  84. const data = pickBy({ examId }, paramFilter);
  85. return httpApp.post(
  86. "/api/admin/invigilate/warn/message?" + object2QueryString(data),
  87. {}
  88. );
  89. }
  90. // online-patrol
  91. export function patrolList(datas) {
  92. const data = pickBy(datas, paramFilter);
  93. return httpApp.post(
  94. "/api/admin/invigilate/patrol/list?" + object2QueryString(data),
  95. {}
  96. );
  97. }
  98. export function patrolReportList(datas) {
  99. const data = pickBy(datas, paramFilter);
  100. return httpApp.post(
  101. "/api/admin/report/patrol?" + object2QueryString(data),
  102. {}
  103. );
  104. }
  105. export function exportPatrolReportList(datas) {
  106. const data = pickBy(datas, paramFilter);
  107. return httpApp.post(
  108. "/api/admin/report/patrol/export?" + object2QueryString(data),
  109. {},
  110. {
  111. responseType: "blob",
  112. }
  113. );
  114. }
  115. // 强制/手动交卷接口
  116. export function invigilateFinish(datas) {
  117. // type: MANUAL:手动,AUTO:自动,BREACH:违纪交卷,INTERRUPT:监考强制交卷
  118. const data = pickBy(datas, paramFilter);
  119. return httpApp.post("/api/admin/invigilate/finish", data);
  120. }
  121. // 结束监考接口
  122. export function invigilateExamFinish(examId, status) {
  123. const data = pickBy({ examId, status }, paramFilter);
  124. return httpApp.post(
  125. "/api/admin/invigilate/exam/finish?" + object2QueryString(data),
  126. {}
  127. );
  128. }
  129. // 监考老师::事实监控台-考试批次列表
  130. export function examMonitorBatchList(datas) {
  131. const data = pickBy(datas, paramFilter);
  132. return httpApp.post("/api/admin/exam/query?" + object2QueryString(data), {});
  133. }
  134. // 监考老师::考试批次列表
  135. export function examBatchList({
  136. userId = "",
  137. name = "",
  138. type = "monitor",
  139. warnCount = false,
  140. }) {
  141. const data = pickBy({ userId, name, type, warnCount }, (v) => v !== "");
  142. return httpApp.post(
  143. "/api/admin/sys/exam/query?" + object2QueryString(data),
  144. {}
  145. );
  146. }
  147. // 批次下考场列表
  148. export function examRoomList(batchCode) {
  149. return httpApp.post(
  150. "/api/admin/exam/examroom/query",
  151. {},
  152. { params: { code: batchCode } }
  153. );
  154. }
  155. // 监考老师::根据权限获取场次和考场接口
  156. export function examActivityRoomList(examId) {
  157. const data = pickBy({ examId }, paramFilter);
  158. return httpApp.post(
  159. "/api/admin/sys/exam/privilegeQuery?" + object2QueryString(data),
  160. {}
  161. );
  162. }
  163. // 考试属性统计接口
  164. export function examPropCount(examId, examActivityId = null) {
  165. const data = pickBy({ examId, examActivityId }, paramFilter);
  166. return httpApp.post(
  167. "/api/admin/exam/prop/count?" + object2QueryString(data),
  168. {}
  169. );
  170. }
  171. export function communicationList(datas) {
  172. const data = pickBy(datas, paramFilter);
  173. return httpApp.post(
  174. "/api/admin/monitor/call/list?" + object2QueryString(data),
  175. {},
  176. {
  177. noErrorMessage: true,
  178. }
  179. );
  180. }
  181. export function communicationCalling({ recordId, source }) {
  182. return httpApp.post(
  183. "/api/admin/monitor/call/calling",
  184. { recordId, source },
  185. {
  186. noErrorMessage: true,
  187. }
  188. );
  189. }
  190. export function communicationOver({ recordId, source }) {
  191. return httpApp.post(
  192. "/api/admin/monitor/call/cancel",
  193. { recordId, source },
  194. {
  195. noErrorMessage: true,
  196. }
  197. );
  198. }
  199. // invigilation-detail
  200. export function invigilationHistoryList(datas) {
  201. const data = pickBy(datas, paramFilter);
  202. return httpApp.post(
  203. "/api/admin/invigilate/history/list?" + object2QueryString(data),
  204. {}
  205. );
  206. }
  207. export function exportInvigilationHistory(datas) {
  208. const data = pickBy(datas, paramFilter);
  209. return httpApp.post(
  210. "/api/admin/invigilate/history/list/export?" + object2QueryString(data),
  211. {},
  212. {
  213. responseType: "blob",
  214. }
  215. );
  216. }
  217. // warning-manage
  218. export function invigilationWarningList(datas) {
  219. const data = pickBy(datas, paramFilter);
  220. return httpApp.post(
  221. "/api/admin/invigilate/warn/list?" + object2QueryString(data),
  222. {}
  223. );
  224. }
  225. export function invigilationWarningCount(datas) {
  226. const data = pickBy(datas, paramFilter);
  227. return httpApp.post(
  228. "/api/admin/invigilate/warn/notify?" + object2QueryString(data),
  229. {}
  230. );
  231. }
  232. // 清除未阅
  233. export function clearInvigilationUnreadWarningList({
  234. approveStatus,
  235. warningIds,
  236. }) {
  237. return httpApp.post("/api/admin/invigilate/warn/save/status", {
  238. approveStatus,
  239. warningIds,
  240. });
  241. }
  242. export function clearInvigilationFilterUnreadWarningList(datas) {
  243. const data = pickBy(datas, paramFilter);
  244. return httpApp.post(
  245. "/api/admin/invigilate/warn/approveStatus/list/update?" +
  246. object2QueryString(data)
  247. );
  248. }
  249. // warning-detail
  250. // 获取当前学生直播视频流
  251. export function warningStudentDetail({ examRecordId }) {
  252. const data = {
  253. recordId: examRecordId,
  254. };
  255. return httpApp.post(
  256. "/api/admin/monitor/call/query?" + object2QueryString(data),
  257. {}
  258. );
  259. }
  260. // 获取预警详情信息
  261. export function invigilateDetail(examRecordId) {
  262. return httpApp.post(
  263. "/api/admin/invigilate/list/detail?examRecordId=" + examRecordId,
  264. {}
  265. );
  266. }
  267. // 学生违纪处理
  268. export function updateBreachInfo(datas) {
  269. const data = pickBy(datas, paramFilter);
  270. return httpApp.post("/api/admin/invigilate/breach", data);
  271. }
  272. // 发送文字/音频消息
  273. export function sendWarningMsg(datas) {
  274. const data = pickBy(datas, paramFilter);
  275. return httpApp.post("/api/admin/invigilate/notice", data);
  276. }
  277. // reexam-apply
  278. export function reexamApplyList(datas) {
  279. const data = pickBy(datas, paramFilter);
  280. return httpApp.post(
  281. "/api/admin/invigilate/reexam/list?" + object2QueryString(data),
  282. {}
  283. );
  284. }
  285. export function applyReexam(datas) {
  286. const data = pickBy(datas, paramFilter);
  287. return httpApp.post("/api/admin/invigilate/reexam/apply", data);
  288. }
  289. // reexam-pending
  290. export function reexamPendingList(datas) {
  291. const data = pickBy(datas, paramFilter);
  292. return httpApp.post(
  293. "/api/admin/invigilate/reexam/list_not_done?" + object2QueryString(data),
  294. {}
  295. );
  296. }
  297. export function reexamPendingCount(datas) {
  298. const data = pickBy(datas, paramFilter);
  299. return httpApp.post(
  300. "/api/admin/invigilate/reexam/list_not_done_notify?" +
  301. object2QueryString(data),
  302. {}
  303. );
  304. }
  305. export function checkReexamApply(datas) {
  306. return httpApp.post("/api/admin/invigilate/reexam/auditing", datas);
  307. }
  308. export function reexamCheckDetail(reexamId) {
  309. return httpApp.post(
  310. "/api/admin/invigilate/reexam/detail?reexamId=" + reexamId
  311. );
  312. }
  313. // reexam-checked
  314. export function reexamCheckedList(datas) {
  315. const data = pickBy(datas, paramFilter);
  316. return httpApp.post(
  317. "/api/admin/invigilate/reexam/list_done?" + object2QueryString(data),
  318. {}
  319. );
  320. }
  321. // progress-detail
  322. export function progressDetailList(datas) {
  323. const data = pickBy(datas, paramFilter);
  324. return httpApp.post(
  325. "/api/admin/invigilate/progress/list?" + object2QueryString(data),
  326. {}
  327. );
  328. }
  329. export function downloadProgressResult(datas) {
  330. const data = pickBy(datas, paramFilter);
  331. return httpApp.post(
  332. "/api/admin/invigilate/progress/list/export?" + object2QueryString(data),
  333. {},
  334. {
  335. responseType: "blob",
  336. }
  337. );
  338. }
  339. // exam-report
  340. // report-overview
  341. // reexam-checked
  342. export function reportOverviewData(datas) {
  343. const data = pickBy(datas, paramFilter);
  344. return httpApp.post(
  345. "/api/admin/report/exam_view?" + object2QueryString(data),
  346. {}
  347. );
  348. }
  349. // report-statistics
  350. export function reportStatisticsData(datas) {
  351. const data = pickBy(datas, paramFilter);
  352. return httpApp.post(
  353. "/api/admin/report/exam_view_count?" + object2QueryString(data),
  354. {}
  355. );
  356. }
  357. // report-absent
  358. export function reportAbsentData(datas) {
  359. const data = pickBy(datas, paramFilter);
  360. return httpApp.post(
  361. "/api/admin/report/exam_deficiency_list?" + object2QueryString(data),
  362. {}
  363. );
  364. }
  365. // report-exception
  366. export function reportExceptionData(datas) {
  367. const data = pickBy(datas, paramFilter);
  368. return httpApp.post(
  369. "/api/admin/report/exam_exception_list?" + object2QueryString(data),
  370. {}
  371. );
  372. }
  373. export function reportExceptionDetail(datas) {
  374. // examStudentId
  375. const data = pickBy(datas, paramFilter);
  376. return httpApp.post(
  377. "/api/admin/report/exam_exception_list_detail?" + object2QueryString(data),
  378. {}
  379. );
  380. }
  381. // report-reexam
  382. export function reportReexamData(datas) {
  383. const data = pickBy(datas, paramFilter);
  384. return httpApp.post(
  385. "/api/admin/report/exam_reexam_list?" + object2QueryString(data),
  386. {}
  387. );
  388. }
  389. // report-breach
  390. export function reportBreachData(datas) {
  391. const data = pickBy(datas, paramFilter);
  392. return httpApp.post(
  393. "/api/admin/report/exam_breach_list?" + object2QueryString(data),
  394. {}
  395. );
  396. }
  397. export function reportBreachDetail(datas) {
  398. const data = pickBy(datas, paramFilter);
  399. return httpApp.post(
  400. "/api/admin/report/exam_breach_list_detail?" + object2QueryString(data),
  401. {}
  402. );
  403. }
  404. // report-cancel-breach
  405. export function reportCancelBreachData(datas) {
  406. const data = pickBy(datas, paramFilter);
  407. return httpApp.post(
  408. "/api/admin/report/exam_revoke_breach_list?" + object2QueryString(data),
  409. {}
  410. );
  411. }
  412. export function reportCancelBreachDetail(datas) {
  413. const data = pickBy(datas, paramFilter);
  414. return httpApp.post(
  415. "/api/admin/report/exam_revoke_breach_list_detail?" +
  416. object2QueryString(data),
  417. {}
  418. );
  419. }
  420. // student-log-manage
  421. export function studentLogList(datas) {
  422. const data = pickBy(datas, paramFilter);
  423. return httpApp.post(
  424. "/api/admin/report/exam_student_log_list?" + object2QueryString(data),
  425. {}
  426. );
  427. }
  428. export function studentLogDetail(datas) {
  429. const data = pickBy(datas, paramFilter);
  430. return httpApp.post(
  431. "/api/admin/report/exam_student_log_list_detail?" +
  432. object2QueryString(data),
  433. {}
  434. );
  435. }