您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
一刻也没有为0.x的测试版哀悼,立刻赶来战场的是1.0正式版,将课堂派的反作弊系统彻底反制!
当前为
// ==UserScript== // @name 课堂派反反作弊 // @namespace http://tampermonkey.net/ // @version 1.0 // @license MIT // @description 一刻也没有为0.x的测试版哀悼,立刻赶来战场的是1.0正式版,将课堂派的反作弊系统彻底反制! // @author You // @match https://www.ketangpai.com/ // @icon https://www.ketangpai.com/favicon.ico // @grant none // ==/UserScript== (function() { 'use strict'; (window["webpackJsonp"] = window["webpackJsonp"] || []).push([["chunk-379c430e"], { ba16: function(e, t, s) { "use strict"; s("cf01") }, c2e1: function(e, t, s) { "use strict"; s.r(t); var a = function() { var e = this , t = e.$createElement , s = e._self._c || t; return s("div", { ref: "setBoxMessage", staticClass: "preview-testpaper-view" }, ["1" == e.courserole ? s("div", { staticClass: "head-tips-box" }, [e._m(0)]) : e._e(), s("div", { staticClass: "previw-test-content" }, [s("div", { staticClass: "test-desc" }, [s("div", { staticClass: "test-desc-le" }, [s("p", [e._v(e._s(e.descObj.title))]), "0" == e.courserole ? s("span", [e._v("起止时间:" + e._s(e.descObj.newBeginTimer) + "~" + e._s(e.descObj.newEndTimer))]) : e._e()]), "0" == e.courserole ? s("div", { staticClass: "test-desc-ri" }, [s("i", { staticClass: "el-icon-time" }), null != e.descObj.timelength && 0 != e.descObj.timelength ? s("span", [e._v("倒计时:" + e._s(e.downTime))]) : s("span", [e._v(" 答题用时:" + e._s(e.nowTime))])]) : e._e()]), s("div", { staticClass: "test-list-box" }, [s("div", { staticClass: "answer-card" }, [s("div", { staticClass: "card-top" }, [s("p", [e._v("答题卡")]), e._m(1), s("div", { staticClass: "progress-box" }, [s("p", { staticClass: "ti" }, [s("span", [e._v("答题进度")]), s("span", [s("i", [e._v(e._s(e.getAnserEnd))]), e._v("/" + e._s(e.testListPreview.length))])]), s("el-progress", { attrs: { percentage: e.getAnserProgress, "show-text": !1 } }), s("p", { staticClass: "cout" }, [e._v("共" + e._s(e.testListPreviewNum.length) + "题,总分" + e._s(e.descObj.totalScore) + "分")]), s("p", [e._v("注:段落说明题不需要作答,不计入总分")])], 1), s("div", { staticClass: "all-testlist" }, [s("p", [e._v("全部试题")]), s("ul", { class: { maxHeight: 2 == e.descObj.style } }, e._l(e.testListPreviewNum, (function(t, a) { return s("li", { key: a, class: { activeLi: "1" == t.answerTypes }, on: { click: function(s) { return e.checkedTestPaper(t, a) } } }, [e._v(e._s(a + 1))]) } )), 0)])]), "1" != e.courserole ? s("div", { staticClass: "card-submit" }, [s("el-button", { attrs: { type: "primary" }, on: { click: e.SubmitTestClick } }, [e._v("提交")])], 1) : e._e()]), "1" == e.courserole || 1 == e.descObj.style && "0" == e.courserole ? s("div", { staticClass: "test-list" }, e._l(e.testListPreview, (function(t, a) { return s("div", { key: a }, ["1" == t.type ? s("div", [s("JudgeTest", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], attrs: { judgeOjb: t, degreeType: !1, answerType: !1, answering: !0, disabledDoing: !1, Testindex: a, laodingFlag: e.laodingFlag }, on: { radioChangeClick: e.radioChangeClick } })], 1) : e._e(), "2" == t.type ? s("div", { staticClass: "calss-message-box" }, [s("SingleChoice", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], attrs: { SingleChoiceOjb: t, degreeType: !1, disabledDoing: !1, answering: !0, answerType: !1, Testindex: a, laodingFlag: e.laodingFlag }, on: { radioChangeClick: e.radioChangeClickSing } })], 1) : e._e(), "3" == t.type ? s("div", { staticClass: "calss-message-box" }, [s("Multiplechoice", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], attrs: { MultiplechoiceObj: t, degreeType: !1, disabledDoing: !1, answering: !0, answerType: !1, Testindex: a, laodingFlag: e.laodingFlag }, on: { changChecked: e.changChecked } })], 1) : e._e(), "6" == t.type ? s("div", { staticClass: "calss-message-box" }, [s("IndefiniteItem", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], attrs: { IndefiniteItemobj: t, degreeType: !1, disabledDoing: !1, answering: !0, answerType: !1, Testindex: a, laodingFlag: e.laodingFlag }, on: { changChecked: e.changCheckedmore } })], 1) : e._e(), "7" == t.type ? s("div", [s("DocumentTitle", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], attrs: { degreeType: !1, answering: !0, DocumentTitleObj: t, Testindex: a, answerType: !1, inputEditorFalg: !0, courserole: e.courserole, cutscreenState: e.cutscreenState }, on: { myInputValue: e.getInputTitleValueDoc, myInputValueInput: e.getInputTitleValueDoc, upSuccessValue: e.upSuccessValue, getInputTitleValue: e.ChangeInputTitleValue, upLoadClick: e.upLoadClick } })], 1) : e._e(), "4" == t.type ? s("div", [s("ShortAnswerQuestions", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], attrs: { degreeType: !1, answering: !0, ShortAnswerQuestionsObj: t, Testindex: a, answerType: !1, inputEditorFalg: !0, isabledDoing: !1, cutscreenState: e.cutscreenState }, on: { myInputValue: e.getInputTitleValueShort, myInputValueInput: e.getInputTitleValueShort } })], 1) : e._e(), "10" == t.type ? s("div", [s("Paragraph", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], attrs: { ParagraphObj: t, Testindex: a, answerType: !1 } })], 1) : e._e(), "5" == t.type ? s("div", [s("oldBlanks", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], attrs: { degreeType: !1, answering: !0, ShortAnswerQuestionsObj: t, Testindex: a, answerType: !1, inputEditorFalg: !0, cutscreenState: e.cutscreenState }, on: { myInputValue: e.getInputTitleValueShort, myInputValueInput: e.getInputTitleValueShort } })], 1) : e._e()]) } )), 0) : e._e(), null != e.itemCard && 2 == e.descObj.style && "0" == e.courserole ? s("div", { staticClass: "test-list-card" }, [null != e.itemCard && "1" == e.itemCard.type ? s("div", { staticClass: "card-box" }, [s("JudgeTest", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], key: e.itemCard.id, attrs: { judgeOjb: e.itemCard, degreeType: !1, answerType: !1, answering: !0, disabledDoing: !1, Testindex: e.testListIndNum, laodingFlag: e.laodingFlag }, on: { radioChangeClick: e.radioChangeClick } })], 1) : e._e(), null != e.itemCard && "2" == e.itemCard.type ? s("div", { staticClass: "card-box" }, [s("SingleChoice", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], key: e.itemCard.id, attrs: { SingleChoiceOjb: e.itemCard, degreeType: !1, disabledDoing: !1, answering: !0, answerType: !1, Testindex: e.testListIndNum, laodingFlag: e.laodingFlag }, on: { radioChangeClick: e.radioChangeClickSing } })], 1) : e._e(), null != e.itemCard && "3" == e.itemCard.type ? s("div", { staticClass: "card-box" }, [s("Multiplechoice", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], key: e.itemCard.id, attrs: { MultiplechoiceObj: e.itemCard, degreeType: !1, disabledDoing: !1, answering: !0, answerType: !1, Testindex: e.testListIndNum, laodingFlag: e.laodingFlag }, on: { changChecked: e.changChecked } })], 1) : e._e(), null != e.itemCard && "6" == e.itemCard.type ? s("div", { staticClass: "card-box" }, [s("IndefiniteItem", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], key: e.itemCard.id, attrs: { IndefiniteItemobj: e.itemCard, degreeType: !1, disabledDoing: !1, answering: !0, answerType: !1, Testindex: e.testListIndNum, laodingFlag: e.laodingFlag }, on: { changChecked: e.changCheckedmore } })], 1) : e._e(), null != e.itemCard && "7" == e.itemCard.type ? s("div", { staticClass: "card-box" }, [s("DocumentTitle", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], key: e.itemCard.id, attrs: { degreeType: !1, answering: !0, DocumentTitleObj: e.itemCard, Testindex: e.testListIndNum, answerType: !1, inputEditorFalg: !0, courserole: e.courserole, noPasting: e.noPasting, cutscreenState: e.cutscreenState }, on: { myInputValue: e.getInputTitleValueDoc, myInputValueInput: e.getInputTitleValueDoc, upSuccessValue: e.upSuccessValue, getInputTitleValue: e.ChangeInputTitleValue, upLoadClick: e.upLoadClick } })], 1) : e._e(), null != e.itemCard && "4" == e.itemCard.type ? s("div", { staticClass: "card-box" }, [s("ShortAnswerQuestions", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], key: e.itemCard.id, attrs: { degreeType: !1, answering: !0, ShortAnswerQuestionsObj: e.itemCard, Testindex: e.testListIndNum, answerType: !1, noPasting: e.noPasting, inputEditorFalg: !0, isabledDoing: !1, cutscreenState: e.cutscreenState }, on: { myInputValue: e.getInputTitleValueShort, myInputValueInput: e.getInputTitleValueShort } })], 1) : e._e(), null != e.itemCard && "10" == e.itemCard.type ? s("div", { staticClass: "card-box" }, [s("Paragraph", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], key: e.itemCard.id, attrs: { ParagraphObj: e.itemCard, Testindex: e.testListIndNum, answerType: !1 } })], 1) : e._e(), null != e.itemCard && "5" == e.itemCard.type ? s("div", { staticClass: "card-box" }, [s("oldBlanks", { directives: [{ name: "watermark", rawName: "v-watermark", value: { text: e.watermark, stno: e.stno }, expression: "{ text: watermark, stno: stno }" }], key: e.itemCard.id, attrs: { degreeType: !1, answering: !0, ShortAnswerQuestionsObj: e.itemCard, Testindex: e.testListIndNum, answerType: !1, inputEditorFalg: !0, noPasting: e.noPasting, cutscreenState: e.cutscreenState }, on: { myInputValue: e.getInputTitleValueShort, myInputValueInput: e.getInputTitleValueShort } })], 1) : e._e(), s("div", { staticClass: "wrapper-bg" }, [s("p", { staticClass: "card-bot" }, [e.preBtnFlag ? s("el-button", { attrs: { type: "primary", disabled: 0 == e.testListIndNum }, on: { click: e.preCardClick } }, [e._v("上一题")]) : e._e(), s("el-button", { attrs: { type: "primary", disabled: e.testListIndNum == e.testListPreview.length - 1 }, on: { click: e.nextCardClick } }, [e._v("下一题")])], 1)])]) : e._e()])])]) } , n = [function() { var e = this , t = e.$createElement , s = e._self._c || t; return s("div", { staticClass: "head-tips" }, [s("i", { staticClass: "el-icon-warning" }), e._v("您当前在试题预览页面,可以答题,但是不能提交答题结果")]) } , function() { var e = this , t = e.$createElement , s = e._self._c || t; return s("div", { staticClass: "answer-type" }, [s("span", { staticClass: "Answered" }, [e._v("已答"), s("i")]), s("span", { staticClass: "AnsweredNo" }, [e._v("未答"), s("i")])]) } ] , i = s("1da1") , r = s("d4ec") , l = s("bee2") , o = s("262e") , u = s("2caf") , c = (s("96cf"), s("a15b"), s("159b"), s("a9e3"), s("99af"), s("9ab4")) , d = s("5f72") , m = s("93bf") , h = s.n(m) , p = s("60a3") , g = s("881a") , w = s("40d4") , v = s("1235") , f = s("7e32") , C = s("f4f8") , k = s("206e") , b = s("bcd6") , y = s("f625") , T = s("53db") , x = s("48b8") , I = s("c1df") , j = s.n(I) , S = s("8253") , L = s("8bbf") , A = s.n(L); A.a.directive("watermark", (function(e, t) { function s() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "课堂派" , t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "" , s = arguments.length > 2 ? arguments[2] : void 0 , a = arguments.length > 3 ? arguments[3] : void 0 , n = arguments.length > 4 ? arguments[4] : void 0 , i = document.createElement("canvas"); s.appendChild(i), i.width = 210, i.height = 120; var r = i.getContext("2d"); r.rotate(-25 * Math.PI / 180), r.font = a || "10px Microsoft JhengHei", r.fillStyle = n || "rgba(180, 180, 180, 0.3)", r.textAlign = "center", r.textBaseline = "Middle", r.fillText(e, i.width / 3, i.height / 1), r.fillText(t, i.width / 3, i.height / .8), s.style.backgroundImage = "url(" + i.toDataURL("image/png") + ") ", s.removeChild(i) } s(t.value.text, t.value.stno, e, t.value.font, t.value.textColor) } )); var F = s("73ec") , O = function(e) { Object(o["a"])(s, e); var t = Object(u["a"])(s); function s() { var e; return Object(r["a"])(this, s), e = t.apply(this, arguments), e.courseid = "", e.testpaperid = "", e.courserole = "", e.descObj = {}, e.nowTime = "", e.itemCard = null, e.testListPreview = [], e.nowTimers = 0, e.remainTime = 999, e.downTime = "", e.testListIndNum = 0, e.fallbackNumer = 0, e.preBtnFlag = !0, e.testListPreviewNum = [], e.fallbackFlag = !1, e.watermark = "", e.stno = "", e.isFullscreen = !1, e.cutscreenState = 0, e.testpaperAllCount = 0, e.stuentCount = 0, e.lastCount = 0, e.uploadFlag = !1, e.handupStatus = !0, e.remainTimes = 0, e.laodingFlag = !1, e.noPasting = !1, e.isCutScreenIng = !1, e.timeout = null, e } return Object(l["a"])(s, [{ key: "currentTime", value: function() { this.iner = setInterval(this.getDate, 1e3) } }, { key: "preCardClick", value: function() { if (this.itemCard = null, !(this.testListIndNum > 0)) return !1; this.testListIndNum--, this.itemCard = this.testListPreview[this.testListIndNum] } }, { key: "nextCardClick", value: function() { if (this.itemCard = null, !(this.testListIndNum < this.testListPreview.length - 1)) return !1; this.testListIndNum++, this.preBtnFlag || this.setFallbackLimitApiFn(this.testListIndNum + 1), this.itemCard = this.testListPreview[this.testListIndNum] } }, { key: "checkedTestPaper", value: function(e, t) { false ? this.$message.error("当前试卷已经设置成了不允许回退,无法进行试题选择!") : (this.itemCard = this.testListPreview[t], this.testListIndNum = t) } }, { key: "getDate", value: function() { var e = new Date , t = e - this.nowTimers , s = x["g"].addzero(Math.floor(t / 1e3) % 60) , a = x["g"].addzero(Math.floor(t / 6e4) % 60) , n = x["g"].addzero(Math.floor(t / 36e5)); this.nowTime = n + ":" + a + ":" + s } }, { key: "getDownTimer", value: function() { var e = this; this.remainIner = setInterval((function() { 0 == e.remainTime ? (e.downTime = "00:00:00", clearInterval(e.remainIner), clearInterval(e.downTimerInterval), d["Message"].success("测试结束,系统自动提交试卷..."), e.handupApi("1")) : (e.remainTime--, e.downTime = x["g"].addzero(Math.floor(e.remainTime / 3600)) + ":" + x["g"].addzero(Math.floor(e.remainTime / 60) % 60) + ":" + x["g"].addzero(e.remainTime % 60), 15 == e.remainTime && e.$alert("15秒后,系统将自动交卷!", "系统提示", { confirmButtonText: "已知晓", callback: function(e) {} })) } ), 1e3) } }, { key: "syncTimes", value: function() { var e = { testpaperid: this.testpaperid }; this.downTimerInterval = setInterval((function() { T["a"].syncTimes(e, { allData: !0, loading: !1 }) } ), 2e4) } }, { key: "radioChangeClick", value: function(e) { var t = { subjectid: e.obj.id, answer: e.answer, ids: e.ids }; this.saveAnswerApi(t, "show", "") } }, { key: "radioChangeClickSing", value: function(e) { var t = { subjectid: e.obj.id, answer: e.answer, ids: e.ids }; this.saveAnswerApi(t, "show", "") } }, { key: "changChecked", value: function(e) { var t = { subjectid: e.obj.id, answer: e.answer.length ? e.answer.join("|") : "", ids: e.ids }; this.saveAnswerApi(t, "show", "show") } }, { key: "changCheckedmore", value: function(e) { var t = { subjectid: e.obj.id, answer: e.answer.length ? e.answer.join("|") : "", ids: e.ids }; this.saveAnswerApi(t, "show", "show") } }, { key: "getInputTitleValueDoc", value: function(e) { if (null != e) { var t = { subjectid: e.obj.id, answer: e.answer, ids: e.ids }; "" != e.answer && this.saveAnswerApi(t, "", "") } } }, { key: "upSuccessValue", value: function(e) { this.saveFileAnswerApi(e.attachment, e.testid, e.ids) } }, { key: "saveFileAnswerApi", value: function() { var e = Object(i["a"])(regeneratorRuntime.mark((function e(t, s, a) { var n, i; return regeneratorRuntime.wrap((function(e) { while (1) switch (e.prev = e.next) { case 0: return n = [], t.length && t.forEach((function(e) { n.push(e.fileid) } )), i = { testpaperid: this.testpaperid, courseid: this.courseid, subjectid: s, attachment: n.join("|") }, e.next = 5, T["a"].saveFileAnswerApi(i, { allData: !0, loading: !0 }); case 5: e.sent, this.testListPreview[a].answerAttachment = t, t && t.length > 0 ? this.testListPreview[a].answerTypes = "1" : this.testListPreview[a].answerTypes = "0"; case 8: case "end": return e.stop() } } ), e, this) } ))); function t(t, s, a) { return e.apply(this, arguments) } return t }() }, { key: "ChangeInputTitleValue", value: function() {} }, { key: "upLoadClick", value: function() { this.uploadFlag = !0 } }, { key: "getInputTitleValueShort", value: function(e) { if (null == e) return null; var t = { subjectid: e.obj.id, answer: e.answer, ids: e.ids }; "" != e.answer && this.saveAnswerApi(t, "", "") } }, { key: "CompletionChangValue", value: function(e) { var t = { subjectid: e.obj.id, answer: e.answer, ids: e.ids }; "" != e.answer && this.saveAnswerApi(t, "", "") } }, { key: "getAnserEnd", get: function() { var e = 0; return this.testListPreview.forEach((function(t) { "1" == t.answerTypes && e++ } )), e } }, { key: "getAnserProgress", get: function() { var e, t = 0; return this.testListPreview.forEach((function(e) { "1" == e.answerTypes && t++ } )), e = t > 0 ? Math.ceil(t / this.testListPreview.length * 100) : 0, e } }, { key: "stopRefresh", value: function() { document.onkeydown = function(e) { var t = window.event || e , s = t.keyCode || t.which , a = e.ctrlKey , n = e.shiftKey , i = e.altKey; return (116 == s || 112 == s || a && 82 == s) && (t.preventDefault ? t.preventDefault() : (t.keyCode = 0, t.returnValue = !1)), (!a || 78 != s) && ((!n || 121 != s) && ((!i || 115 != s) && ((!i || 27 != s) && void 0))) } } }, { key: "doSubjectListApi", value: function() { var e = Object(i["a"])(regeneratorRuntime.mark((function e() { var t, s, a, n, i, r, l, o, u, c, m, h, p, g = this; return regeneratorRuntime.wrap((function(e) { while (1) switch (e.prev = e.next) { case 0: return this.itemCard = null, t = x["c"].getLocalStorage("testCode"), t || (t = ""), s = { testpaperid: this.testpaperid, courseid: this.courseid, testCode: t }, e.next = 6, T["a"].doSubjectListApi(s, { allData: !0, loading: !0 }); case 6: a = e.sent, n = a.data.testpaper, n && n.cutscreen && x["c"].setLocalStorage("testCode", n.cutscreen.testCode), this.descObj = n, this.remainTimes = a.data.remainTimes, i = Number(j()(new Date).format("X")), 1 == this.descObj.over ? this.$alert("测试已经结束了,无法进行答题", "系统提示", { confirmButtonText: "知道了", showClose: !1, callback: function(e) { g.$router.push({ path: "/main/classDetail", query: { courseid: g.courseid, courserole: g.courserole } }) } }) : (r = a.data.testpaper.cutscreen, this.lastCount = r.lastCount, this.cutscreenState = r.cutscreenState, this.testpaperAllCount = r.testpaperAllCount, this.stuentCount = r.studentCount, "1" != this.courserole && 1 == this.cutscreenState && (this.stopRefresh(), 1 == r.isFirstJoin ? this.$confirm('本场考试已开启切屏模式,切换页面<span style="color:red">'.concat(this.testpaperAllCount, "</span>次后将强制交卷,请随意答题已为您开启反反作弊模式"), "提示", { confirmButtonText: "开始答题", cancelButtonText: "暂不答题", dangerouslyUseHTMLString: !0, type: "warning" }).then((function() { g.clickFullscreen(), g.setBeginAnswer() } )).catch((function() { g.$router.go(-1) } )) : this.$alert('本场考试已开启切屏模式,切换页面<span style="color:red">'.concat(this.testpaperAllCount, "</span>次后将强制交卷,请随意答题已为您开启反反作弊模式"), "提示", { confirmButtonText: "知道了", dangerouslyUseHTMLString: !0, showClose: !1, center: !0, callback: function(e) { g.clickFullscreen() } })), l = Number(a.data.fallback_number), o = null, u = 0, a.data.lists && a.data.lists.forEach((function(e, t) { null != e.myanswer && e.myanswer || null != e.answerAttachment && e.answerAttachment.length > 0 || "10" == e.type ? e.answerTypes = "1" : (e.answerTypes = "0", null == o && (o = e, u = t)) } )), this.testListPreview = a.data.lists, this.testListPreviewNum = a.data.lists, "1" == n.fallback ? (Number(n["isrand"]) > 0 ? null == o ? (this.itemCard = this.testListPreview[this.testListPreviewNum.length - 1], this.testListIndNum = this.testListPreviewNum.length - 1) : (this.itemCard = o, this.testListIndNum = u) : (l - 1 >= 0 && (this.itemCard = this.testListPreview[l - 1]), this.testListIndNum = l - 1), this.preBtnFlag = !1, this.fallbackFlag = !0) : null != this.testListPreview[this.testListIndNum] && (this.itemCard = this.testListPreview[this.testListIndNum]), this.descObj = n, this.descObj.newBeginTimer = Number(n.begintime) <= 0 ? "无" : j.a.unix(Number(n.begintime)).format("YYYY-MM-DD HH:mm"), this.descObj.newEndTimer = Number(n.endtime) <= 0 ? "无" : j.a.unix(Number(n.endtime)).format("YYYY-MM-DD HH:mm"), "0" == n.allowcopy && (c = this.$refs.setBoxMessage, c.oncontextmenu = function() { } , c.oncopy = function() { } , c.className += ""), "0" == n.allowpaster && (m = this.$refs.setBoxMessage, m.onpaste = function(e) { } , this.noPasting = !0), Number(this.descObj.endtime) > i && null != this.descObj.timelength && 0 != this.descObj.timelength ? (this.getDownTimer(), this.syncTimes(), Number(this.remainTimes) < Number(this.descObj.timelength) ? this.limtEndTinerLength = setInterval((function() { var e = Number(g.remainTimes); e--, 0 == e && (clearInterval(g.limtEndTinerLength), g.handupApi("4")) } ), 1e3) : this.limtEndTinerLength = setInterval((function() { var e = Number(g.descObj.timelength); e--, 0 == e && (clearInterval(g.limtEndTinerLength), g.handupApi("4")) } ), 1e3), i + Number(this.descObj.timelength), h = this, this.limtEndTinerLength = setInterval((function() { i > Number(h.descObj.endtime) && (clearInterval(h.limtEndTinerLength), h.handupApi("3")) } ), 1e3)) : null != this.descObj.timelength && 0 != this.descObj.timelength && 0 == Number(this.descObj.endtime) ? (this.getDownTimer(), this.syncTimes()) : Number(this.descObj.endtime) > 0 && (null == this.descObj.timelength || 0 == this.descObj.timelength) ? (this.currentTime(), p = this, this.limtEndTiner = setInterval((function() { var e = Number(j()(new Date).format("X")); e >= Number(p.descObj.endtime) && (clearInterval(p.limtEndTiner), p.handupApi("1")) } ), 1e3)) : this.currentTime()); case 13: case "end": return e.stop() } } ), e, this) } ))); function t() { return e.apply(this, arguments) } return t }() }, { key: "setBeginAnswer", value: function() { var e = Object(i["a"])(regeneratorRuntime.mark((function e() { var t; return regeneratorRuntime.wrap((function(e) { while (1) switch (e.prev = e.next) { case 0: return t = { testpaperid: this.testpaperid }, e.next = 3, T["a"].setBeginAnswer(t, { allData: !0, loading: !1 }); case 3: e.sent; case 4: case "end": return e.stop() } } ), e, this) } ))); function t() { return e.apply(this, arguments) } return t }() }, { key: "testOnlineApi", value: function() { var e = Object(i["a"])(regeneratorRuntime.mark((function e() { var t, s, a, n = this; return regeneratorRuntime.wrap((function(e) { while (1) switch (e.prev = e.next) { case 0: return t = x["c"].getLocalStorage("userCode"), t || (t = ""), s = { testpaperid: this.testpaperid, courseid: this.courseid, userCode: t }, e.next = 5, T["a"].testOnlineApi(s, { allData: !0, loading: !1 }); case 5: a = e.sent, "" != a.data.data.onlineCode && x["c"].setLocalStorage("userCode", a.data.data.onlineCode), 2 == a.data.data.testRate && this.$alert("老师设置了只允许一台设备登录(不可用)作答,您已经登录(不可用)一台设备,不允许登录(不可用)多台设备哦!", "系统提示", { confirmButtonText: "知道了", showClose: !1, callback: function(e) { n.$router.go(-1) } }), 1 == a.data.data.cutscreenState ? this.cutscreenState = 1 : 0 == a.data.data.cutscreenState && (this.cutscreenState = 0), a.data.data.maxCutscreenCount > 0 && this.testpaperAllCount != a.data.data.maxCutscreenCount && (this.testpaperAllCount = a.data.data.maxCutscreenCount, this.lastCount = this.testpaperAllCount - a.data.data.usedScreenCount); case 10: case "end": return e.stop() } } ), e, this) } ))); function t() { return e.apply(this, arguments) } return t }() }, { key: "testOnlineInter", value: function() { this.testOnlinInner = setInterval(this.testOnlineApi, 1e4) } }, { key: "getCurrImportlistData", value: function() { var e = Object(i["a"])(regeneratorRuntime.mark((function e() { var t, s; return regeneratorRuntime.wrap((function(e) { while (1) switch (e.prev = e.next) { case 0: return t = { testpaperid: this.testpaperid, courseid: this.courseid }, this.itemCard = null, e.next = 4, T["a"].getCurrImportlistData(t, { allData: !0, loading: !0 }); case 4: s = e.sent, s && 1 === s.status && (s.data.lists.forEach((function(e, t) { null != e.myanswer && e.myanswer ? e.answerTypes = "1" : e.answerTypes = "0" } )), this.testListPreview = s.data.lists, this.testListPreviewNum = s.data.lists, this.itemCard = this.testListPreview[this.testListIndNum], this.descObj = s.data.testpaper); case 6: case "end": return e.stop() } } ), e, this) } ))); function t() { return e.apply(this, arguments) } return t }() }, { key: "debounce", value: function(e, t) { clearTimeout(this.timeout), this.timeout = setTimeout(e, t) } }, { key: "saveAnswerApi", value: function() { var e = Object(i["a"])(regeneratorRuntime.mark((function e(t, s, a) { var n, i = this; return regeneratorRuntime.wrap((function(e) { while (1) switch (e.prev = e.next) { case 0: n = { testpaperid: this.testpaperid, courseid: this.courseid, subjectid: t.subjectid, answer: t.answer }, this.testListPreview[t.ids].myanswer = t.answer, "" != t.answer ? this.testListPreview[t.ids].answerTypes = "1" : this.testListPreview[t.ids].answerTypes = "0", "0" == this.courserole && ("show" == s ? "show" == a ? this.debounce((function() { i.laodingFlag = !0, T["a"].saveAnswerApi(n, { allData: !0, loading: !1 }).then((function(e) { i.$store.dispatch("testpaper/setMessage", "点击过快,正在保存答案中..."), i.laodingFlag = !1, i.$message({ message: "作答保存成功", type: "success", duration: 1e3 }) } )).catch((function(e) { void 0 != e && "" != e && null != e || (i.$store.dispatch("testpaper/setMessage", "当前网络波动,请重新作答该题"), i.laodingFlag = !1, i.$alert("您的网络出现问题,答案保存失败!请检查当前网络是否有问题,恢复网络后请重新答题。", "系统提示", { confirmButtonText: "确定", dangerouslyUseHTMLString: !0, showClose: !1, center: !0, type: "warning" })) } )) } ), 1e3) : (this.laodingFlag = !0, T["a"].saveAnswerApi(n, { allData: !0, loading: !1 }).then((function(e) { i.$store.dispatch("testpaper/setMessage", "点击过快,正在保存答案中..."), i.laodingFlag = !1, i.$message({ message: "作答保存成功", type: "success", duration: 1e3 }) } )).catch((function(e) { void 0 != e && "" != e && null != e || (i.$store.dispatch("testpaper/setMessage", "当前网络波动,请重新作答该题"), i.laodingFlag = !1, i.$alert("您的网络出现问题,答案保存失败!请检查当前网络是否有问题,恢复网络后请重新答题。", "系统提示", { confirmButtonText: "确定", dangerouslyUseHTMLString: !0, showClose: !1, center: !0, type: "warning" })) } ))) : T["a"].saveAnswerApi(n, { allData: !0, loading: !1 }).then((function(e) { i.laodingFlag = !1, i.$message({ message: "作答保存成功", type: "success", duration: 1e3 }) } )).catch((function(e) { void 0 != e && "" != e && null != e || (i.$store.dispatch("testpaper/setMessage", "当前网络波动,请重新作答该题"), i.laodingFlag = !1, i.$alert("您的网络出现问题,答案保存失败!请检查当前网络是否有问题,恢复网络后请重新答题。", "系统提示", { confirmButtonText: "确定", dangerouslyUseHTMLString: !0, showClose: !1, center: !0, type: "warning" })) } )), this.wsBeginInteract()); case 4: case "end": return e.stop() } } ), e, this) } ))); function t(t, s, a) { return e.apply(this, arguments) } return t }() }, { key: "setFallbackLimitApiFn", value: function() { var e = Object(i["a"])(regeneratorRuntime.mark((function e(t) { var s; return regeneratorRuntime.wrap((function(e) { while (1) switch (e.prev = e.next) { case 0: return s = { testpaperid: this.testpaperid, number: t }, e.next = 3, T["a"].setFallbackLimitApi(s, { allData: !0, loading: !1 }); case 3: e.sent; case 4: case "end": return e.stop() } } ), e, this) } ))); function t(t) { return e.apply(this, arguments) } return t }() }, { key: "handupApi", value: function() { var e = Object(i["a"])(regeneratorRuntime.mark((function e(t) { var s, a, n = this; return regeneratorRuntime.wrap((function(e) { while (1) switch (e.prev = e.next) { case 0: return s = { testpaperid: this.testpaperid, courseid: this.courseid }, e.next = 3, T["a"].handupApi(s, { allData: !0, loading: !0, showErr: !1 }); case 3: a = e.sent, 0 === a.status ? this.$alert(a.message ? a.message : "测试已经结束了,无法进行答题", "系统提示", { confirmButtonText: "知道了", showClose: !1, callback: function(e) { n.$router.go(-1) } }) : "1" == t ? this.$alert("测试已经结束了,系统已经自动提交试卷", "系统提示", { confirmButtonText: "知道了", showClose: !1, callback: function(e) { n.$router.go(-1) } }) : "2" == t ? (this.$message({ type: "success", message: "试卷提交成功!" }), this.$router.go(-1)) : "3" == t ? this.$alert("测试已经结束了,无法进行答题", "系统提示", { confirmButtonText: "知道了", showClose: !1, callback: function(e) { n.$router.go(-1) } }) : "4" == t ? this.$alert("限时时间到,当前测试设置了限时,系统自动提交试卷", "系统提示", { confirmButtonText: "知道了", showClose: !1, callback: function(e) { n.$router.go(-1) } }) : "5" == t && this.$alert("当前测试切屏数次上限,系统自动提交试卷", "系统提示", { confirmButtonText: "知道了", showClose: !1, callback: function(e) { n.$router.go(-1) } }), this.wsBeginInteract(); case 6: case "end": return e.stop() } } ), e, this) } ))); function t(t) { return e.apply(this, arguments) } return t }() }, { key: "SubmitTestClick", value: function() { var e = this; this.$confirm("是否提交测试?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning" }).then((function() { e.handupStatus = !1; var t = document; t.exitFullscreen ? t.exitFullscreen() : t.mozCancelFullScreen ? t.mozCancelFullScreen() : t.msExitFullscreen ? t.msExiFullscreen() : t.webkitCancelFullScreen && t.webkitCancelFullScreen(), e.handupApi("2") } )).catch((function() {} )) } }, { key: "getSnyTImer", value: function() { var e = Object(i["a"])(regeneratorRuntime.mark((function e() { var t, s; return regeneratorRuntime.wrap((function(e) { while (1) switch (e.prev = e.next) { case 0: return t = { testpaperid: this.testpaperid }, e.next = 3, T["a"].syncTimes(t, { allData: !0, loading: !1 }); case 3: s = e.sent, s.data && s.data.remainTime && (this.remainTime = Number(s.data.remainTime)); case 5: case "end": return e.stop() } } ), e, this) } ))); function t() { return e.apply(this, arguments) } return t }() }, { key: "created", value: function() { this.nowTimers = new Date, this.courseid = this.$route.query.courseid || x["c"].getLocalStorage("courseid"), this.testpaperid = this.$route.query.testpaperid || x["c"].getLocalStorage("testpaperid"), this.courserole = this.$route.query.courserole, "1" == this.courserole ? this.getCurrImportlistData() : (this.doSubjectListApi(), this.getSnyTImer(), this.testOnlineApi(), this.testOnlineInter(), this.watermark = this.$store.getters.userInfo.username, this.stno = this.$store.getters.userInfo.stno) } }, { key: "mounted", value: function() { var e = this; window.onresize = function() {} ; var t = this; window.onblur = function() { } } }, { key: "checkFull", value: function() { } }, { key: "clickFullscreen", value: function() { var e = this; if (Object(F["U"])()) this.isFullscreen = !0; else { if (!h.a.isEnabled) return this.$message({ message: "该浏览器不支持全屏", type: "warning" }), !1; h.a.on("change", (function() { var t = h.a; e.isFullscreen = t.isFullscreen } )), h.a.toggle() } } }, { key: "studentCutscreenLog", value: function() { var e = Object(i["a"])(regeneratorRuntime.mark((function e() { var t, s; return regeneratorRuntime.wrap((function(e) { while (1) switch (e.prev = e.next) { case 0: return t = { testpaperid: this.testpaperid }, e.next = 3, T["a"].studentCutscreenLog(t, { allData: !0, loading: !1 }); case 3: s = e.sent, 1 == s.cutscreenState && (this.lastCount = s.lastCount, this.testpaperAllCount = s.testpaperAllCount); case 5: case "end": return e.stop() } } ), e, this) } ))); function t() { return e.apply(this, arguments) } return t }() }, { key: "wsBeginInteract", value: function() { var e = { courseid: this.courseid }; S["a"].studentAnswer(e) } }, { key: "destroyed", value: function() { this.iner && clearInterval(this.iner), this.testOnlinInner && clearInterval(this.testOnlinInner), clearInterval(this.remainIner), clearInterval(this.downTimerInterval), window.onresize = null, window.onblur = null } }]), s }(p["i"]); O = Object(c["a"])([Object(p["a"])({ components: { JudgeTest: g["default"], SingleChoice: w["default"], Multiplechoice: v["default"], IndefiniteItem: f["default"], DocumentTitle: C["default"], ShortAnswerQuestions: k["default"], Paragraph: b["default"], oldBlanks: y["default"] } })], O); var N = O , _ = N , D = (s("ba16"), s("2877")) , P = Object(D["a"])(_, a, n, !1, null, "57393c6f", null); t["default"] = P.exports }, cf01: function(e, t, s) {} }]); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址