课堂派反反作弊

一刻也没有为0.x的测试版哀悼,立刻赶来战场的是1.0正式版,将课堂派的反作弊系统彻底反制!

当前为 2023-10-19 提交的版本,查看 最新版本

// ==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或关注我们的公众号极客氢云获取最新地址